dsh-diagnostic-tutor 0.1.0 → 0.2.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 (126) hide show
  1. package/README.md +316 -79
  2. package/lib/api.js +364 -78
  3. package/lib/api.js.map +1 -1
  4. package/lib/block-types.js +25 -0
  5. package/lib/block-types.js.map +1 -0
  6. package/lib/client.js +9952 -821
  7. package/lib/client.js.map +1 -1
  8. package/lib/diagnostics.js +170 -0
  9. package/lib/diagnostics.js.map +1 -0
  10. package/lib/execution-key.js +91 -0
  11. package/lib/execution-key.js.map +1 -0
  12. package/lib/handoff.js +44 -1
  13. package/lib/handoff.js.map +1 -1
  14. package/lib/index.js +87 -51
  15. package/lib/index.js.map +1 -1
  16. package/lib/insights.js +82 -0
  17. package/lib/insights.js.map +1 -0
  18. package/lib/interactions.js +70 -0
  19. package/lib/interactions.js.map +1 -0
  20. package/lib/journal.js +122 -0
  21. package/lib/journal.js.map +1 -0
  22. package/lib/lesson-markdown.js +72 -0
  23. package/lib/lesson-markdown.js.map +1 -0
  24. package/lib/lesson.js +152 -3
  25. package/lib/lesson.js.map +1 -1
  26. package/lib/math.js +126 -0
  27. package/lib/math.js.map +1 -0
  28. package/lib/path-api.js +140 -0
  29. package/lib/path-api.js.map +1 -0
  30. package/lib/path-runtime.js +361 -0
  31. package/lib/path-runtime.js.map +1 -0
  32. package/lib/path-tools.js +107 -0
  33. package/lib/path-tools.js.map +1 -0
  34. package/lib/path.js +179 -0
  35. package/lib/path.js.map +1 -0
  36. package/lib/plan-tools.js +89 -0
  37. package/lib/plan-tools.js.map +1 -0
  38. package/lib/plan.js +82 -0
  39. package/lib/plan.js.map +1 -0
  40. package/lib/project-session.js +48 -0
  41. package/lib/project-session.js.map +1 -0
  42. package/lib/prompt.js +4 -19
  43. package/lib/prompt.js.map +1 -1
  44. package/lib/review-sync.js +51 -0
  45. package/lib/review-sync.js.map +1 -0
  46. package/lib/review-tools.js +115 -0
  47. package/lib/review-tools.js.map +1 -0
  48. package/lib/review.js +103 -0
  49. package/lib/review.js.map +1 -0
  50. package/lib/source-schema.js +24 -0
  51. package/lib/source-schema.js.map +1 -0
  52. package/lib/source-tools.js +61 -0
  53. package/lib/source-tools.js.map +1 -0
  54. package/lib/sources.js +78 -0
  55. package/lib/sources.js.map +1 -0
  56. package/lib/state.js +353 -47
  57. package/lib/state.js.map +1 -1
  58. package/lib/tools.js +620 -123
  59. package/lib/tools.js.map +1 -1
  60. package/lib/types/api.d.ts +10 -3
  61. package/lib/types/api.d.ts.map +1 -1
  62. package/lib/types/block-types.d.ts +12 -0
  63. package/lib/types/block-types.d.ts.map +1 -0
  64. package/lib/types/contract.d.ts +81 -7
  65. package/lib/types/contract.d.ts.map +1 -1
  66. package/lib/types/diagnostics.d.ts +95 -0
  67. package/lib/types/diagnostics.d.ts.map +1 -0
  68. package/lib/types/execution-key.d.ts +59 -0
  69. package/lib/types/execution-key.d.ts.map +1 -0
  70. package/lib/types/handoff.d.ts +2 -2
  71. package/lib/types/handoff.d.ts.map +1 -1
  72. package/lib/types/index.d.ts +19 -14
  73. package/lib/types/index.d.ts.map +1 -1
  74. package/lib/types/insights.d.ts +57 -0
  75. package/lib/types/insights.d.ts.map +1 -0
  76. package/lib/types/interactions.d.ts +23 -0
  77. package/lib/types/interactions.d.ts.map +1 -0
  78. package/lib/types/journal.d.ts +57 -0
  79. package/lib/types/journal.d.ts.map +1 -0
  80. package/lib/types/lesson-markdown.d.ts +11 -0
  81. package/lib/types/lesson-markdown.d.ts.map +1 -0
  82. package/lib/types/lesson.d.ts +697 -5
  83. package/lib/types/lesson.d.ts.map +1 -1
  84. package/lib/types/math.d.ts +50 -0
  85. package/lib/types/math.d.ts.map +1 -0
  86. package/lib/types/path-api.d.ts +5 -0
  87. package/lib/types/path-api.d.ts.map +1 -0
  88. package/lib/types/path-runtime.d.ts +1558 -0
  89. package/lib/types/path-runtime.d.ts.map +1 -0
  90. package/lib/types/path-tools.d.ts +4 -0
  91. package/lib/types/path-tools.d.ts.map +1 -0
  92. package/lib/types/path.d.ts +744 -0
  93. package/lib/types/path.d.ts.map +1 -0
  94. package/lib/types/plan-tools.d.ts +4 -0
  95. package/lib/types/plan-tools.d.ts.map +1 -0
  96. package/lib/types/plan.d.ts +53 -0
  97. package/lib/types/plan.d.ts.map +1 -0
  98. package/lib/types/project-session.d.ts +33 -0
  99. package/lib/types/project-session.d.ts.map +1 -0
  100. package/lib/types/prompt.d.ts.map +1 -1
  101. package/lib/types/review-sync.d.ts +17 -0
  102. package/lib/types/review-sync.d.ts.map +1 -0
  103. package/lib/types/review-tools.d.ts +4 -0
  104. package/lib/types/review-tools.d.ts.map +1 -0
  105. package/lib/types/review.d.ts +65 -0
  106. package/lib/types/review.d.ts.map +1 -0
  107. package/lib/types/source-schema.d.ts +31 -0
  108. package/lib/types/source-schema.d.ts.map +1 -0
  109. package/lib/types/source-tools.d.ts +4 -0
  110. package/lib/types/source-tools.d.ts.map +1 -0
  111. package/lib/types/sources.d.ts +33 -0
  112. package/lib/types/sources.d.ts.map +1 -0
  113. package/lib/types/state.d.ts +607 -23
  114. package/lib/types/state.d.ts.map +1 -1
  115. package/lib/types/tools.d.ts +3 -1
  116. package/lib/types/tools.d.ts.map +1 -1
  117. package/lib/types/udt.d.ts +20 -24
  118. package/lib/types/udt.d.ts.map +1 -1
  119. package/lib/types/version.d.ts +11 -0
  120. package/lib/types/version.d.ts.map +1 -0
  121. package/lib/types/vocabulary.d.ts +2 -2
  122. package/lib/udt.js +72 -19
  123. package/lib/udt.js.map +1 -1
  124. package/lib/version.js +26 -0
  125. package/lib/version.js.map +1 -0
  126. package/package.json +27 -22
package/lib/state.js CHANGED
@@ -38,7 +38,12 @@ import { z } from 'zod';
38
38
  import { endsFocus } from './vocabulary.js';
39
39
  import { EvidenceKindSchema, INITIAL_NODE_STATE, NodeRelationSchema, NodeStateSchema, ReadinessSchema, TeachingModeSchema, } from './vocabulary.js';
40
40
  import { LessonSchema } from './lesson.js';
41
+ import { SOURCES_TABLE, SourceRecordSchema } from './source-schema.js';
42
+ import { TASKS_TABLE, TaskSchema } from './plan.js';
43
+ import { REVIEW_CARDS_TABLE, REVIEW_LOG_TABLE, ReviewCardSchema, ReviewLogSchema } from './review.js';
41
44
  import { HandoffSchema } from './handoff.js';
45
+ import { focusKey, handoffKey, isLegacyExecutionKey, nextStepKey } from './execution-key.js';
46
+ import { CourseRunSchema, LearningPathSchema, emptyPath, emptyRun } from './path.js';
42
47
  /* -------------------------------------------------------------------------- */
43
48
  /* Records */
44
49
  /* -------------------------------------------------------------------------- */
@@ -90,6 +95,9 @@ export const EvidenceSchema = z.object({
90
95
  at: z.string(),
91
96
  note: z.string().min(1).optional(),
92
97
  readiness: ReadinessSchema.optional(),
98
+ /** Runtime-stamped provenance for observations made during a planned attempt. */
99
+ sessionId: z.string().min(1).optional(),
100
+ attemptId: z.string().min(1).optional(),
93
101
  });
94
102
  /**
95
103
  * One node of the diagnosis map.
@@ -131,9 +139,43 @@ export const FocusSchema = z.object({
131
139
  updatedAt: z.string(),
132
140
  /** Set when the status becomes `ended`; absent while the focus is active. */
133
141
  endedAt: z.string().optional(),
142
+ /**
143
+ * The conversation this focus belongs to.
144
+ *
145
+ * Learning state is per-conversation, not per-course. A learner can be
146
+ * working on one node in one conversation and a different node in another,
147
+ * and a focus that does not say which one it is cannot be shown to either
148
+ * without risking showing the wrong one — which is exactly what happened:
149
+ * starting a node in conversation B silently replaced A's, and returning to A
150
+ * showed B's lesson under A's chat.
151
+ *
152
+ * Optional because records written before this field existed have no
153
+ * conversation to claim. Such a focus belongs to nobody and is shown to
154
+ * nobody; the evidence and lessons it produced are untouched.
155
+ */
156
+ sessionId: z.string().optional(),
134
157
  /** The recommendation produced when this focus ended. */
135
158
  nextStepId: z.string().optional(),
136
159
  });
160
+ /**
161
+ * The Learning Project one conversation has selected.
162
+ *
163
+ * `courseId` is the project: a course record IS a learning project, and the UI
164
+ * calls it that. There is deliberately no separate project entity — a second
165
+ * one would have to be kept in step with the first, and the first already
166
+ * carries the map, the evidence and the lessons.
167
+ */
168
+ export const ProjectSchema = z.object({
169
+ /** The conversation that made the choice. */
170
+ sessionId: z.string().min(1),
171
+ /** The course it chose, or absent for "start something new". */
172
+ courseId: z.string().min(1).optional(),
173
+ /** When it chose. */
174
+ selectedAt: z.string(),
175
+ });
176
+ /** The conversation-local project state shared by the API and model tools. */
177
+ export const PROJECT_SELECTIONS = ['none', 'new', 'project'];
178
+ export const PROJECT_BINDINGS = ['adopted', 'already-selected', 'not-selected', 'missing-session-id'];
137
179
  /**
138
180
  * The tutor's decision about where the learner should go after this node.
139
181
  *
@@ -189,12 +231,44 @@ export const UDT_DOMAIN_NAME = 'udt';
189
231
  * ship a migration in the same release.
190
232
  */
191
233
  export const UDT_DOMAIN_VERSION = 1;
234
+ /**
235
+ * Legacy keys seen during reads, so a support dump can explain the orphans.
236
+ *
237
+ * Records written before execution state was session-scoped are left on disk
238
+ * untouched. They are never read, because a record that cannot say which
239
+ * conversation it belongs to cannot be shown to one without risking showing it
240
+ * to the wrong one. Logged once per table: a poll every two seconds would
241
+ * otherwise fill the log with the same line.
242
+ */
243
+ const legacySeen = new Set();
244
+ function logIgnoredLegacy(table, key) {
245
+ if (legacySeen.has(table))
246
+ return;
247
+ legacySeen.add(table);
248
+ console.debug(`[diagnostic-tutor] ignoring pre-session-scoped record in "${table}" (key "${key}"): ` +
249
+ 'it predates per-conversation state and is not attributed to any conversation');
250
+ }
192
251
  export const COURSES_TABLE = 'courses';
193
252
  export const NODES_TABLE = 'nodes';
194
253
  export const LESSONS_TABLE = 'lessons';
195
254
  export const FOCUS_TABLE = 'focus';
196
255
  export const NEXT_STEPS_TABLE = 'next_steps';
197
256
  export const HANDOFFS_TABLE = 'handoffs';
257
+ /**
258
+ * Which Learning Project each conversation is looking at.
259
+ *
260
+ * The projects themselves are learner-level: the course, its map, its evidence
261
+ * and its lessons are shared by every conversation, and this table adds nothing
262
+ * to them. What it records is a *choice* — which of those projects this
263
+ * conversation has open — and a choice belongs to the conversation that made
264
+ * it. Without this the runtime had to guess, and the guess was "the most
265
+ * recently updated course", which is how a brand-new chat opened onto the
266
+ * learner's old machine-learning project.
267
+ *
268
+ * Keyed by session id. A conversation with no row here has selected nothing,
269
+ * and that is a real state rather than a missing one.
270
+ */
271
+ export const PROJECTS_TABLE = 'session_projects';
198
272
  /** Sentinel meaning "the global slot has never been written". */
199
273
  export const UNINITIALIZED = '';
200
274
  export const udtDomain = defineDomain({
@@ -227,6 +301,14 @@ export const udtDomain = defineDomain({
227
301
  // Keyed by target node, which is what makes "press Continue twice" one
228
302
  // handoff rather than two.
229
303
  [HANDOFFS_TABLE]: domainTable(HandoffSchema),
304
+ [PROJECTS_TABLE]: domainTable(ProjectSchema),
305
+ // Additive v1 tables: older v1 documents open with empty planning maps.
306
+ learning_paths: domainTable(LearningPathSchema),
307
+ course_runs: domainTable(CourseRunSchema),
308
+ [SOURCES_TABLE]: domainTable(SourceRecordSchema),
309
+ [TASKS_TABLE]: domainTable(TaskSchema),
310
+ [REVIEW_CARDS_TABLE]: domainTable(ReviewCardSchema),
311
+ [REVIEW_LOG_TABLE]: domainTable(ReviewLogSchema),
230
312
  },
231
313
  });
232
314
  /**
@@ -270,8 +352,74 @@ export async function openUdState(facility) {
270
352
  const focus = domain.table(FOCUS_TABLE);
271
353
  const nextSteps = domain.table(NEXT_STEPS_TABLE);
272
354
  const handoffs = domain.table(HANDOFFS_TABLE);
355
+ const projects = domain.table(PROJECTS_TABLE);
356
+ const paths = domain.table('learning_paths');
357
+ const runs = domain.table('course_runs');
358
+ const sources = domain.table(SOURCES_TABLE);
359
+ const tasks = domain.table(TASKS_TABLE);
360
+ const reviewCards = domain.table(REVIEW_CARDS_TABLE);
361
+ const reviewLog = domain.table(REVIEW_LOG_TABLE);
362
+ let planningGeneration = 0;
363
+ const runKey = (courseId, sessionId) => JSON.stringify([sessionId, courseId]);
273
364
  const learner = domain.global;
274
365
  const listNodesFor = (courseId) => [...nodes.entries()].map(([, record]) => record).filter((record) => record.courseId === courseId);
366
+ const projectRevisions = new Map();
367
+ let projectWrites = Promise.resolve();
368
+ const withProjectWrite = (write) => {
369
+ const result = projectWrites.then(write);
370
+ projectWrites = result.catch(() => undefined);
371
+ return result;
372
+ };
373
+ const resolveProjectFor = (sessionId) => {
374
+ const revision = sessionId === undefined ? 0 : projectRevisions.get(sessionId) ?? 0;
375
+ if (sessionId === undefined || sessionId.length === 0) {
376
+ return { selection: 'none', sessionAvailable: false, reason: 'missing-session-id', revision };
377
+ }
378
+ const chosen = projects.get(sessionId);
379
+ if (chosen !== undefined) {
380
+ if (chosen.courseId === undefined)
381
+ return { selection: 'new', sessionAvailable: true, revision };
382
+ const course = courses.get(chosen.courseId);
383
+ return course === undefined
384
+ ? { selection: 'none', sessionAvailable: true, reason: 'stale-project', revision }
385
+ : { selection: 'project', sessionAvailable: true, course, revision };
386
+ }
387
+ // Ended focuses still name the project a legacy conversation was working
388
+ // in. Multiple projects are ambiguous; a learner-global pointer is no help.
389
+ const candidates = [...courses.entries()]
390
+ .map(([, course]) => course)
391
+ .filter((course) => focus.get(focusKey(sessionId, course.id)) !== undefined);
392
+ if (candidates.length === 1)
393
+ return { selection: 'project', sessionAvailable: true, course: candidates[0], revision };
394
+ if (candidates.length > 1) {
395
+ return { selection: 'none', sessionAvailable: true, reason: 'ambiguous-session-project', revision };
396
+ }
397
+ return { selection: 'none', sessionAvailable: true, revision };
398
+ };
399
+ const activeFocusFor = (sessionId) => {
400
+ const course = resolveProjectFor(sessionId).course;
401
+ if (course === undefined)
402
+ return undefined;
403
+ const record = focus.get(focusKey(sessionId, course.id));
404
+ if (record === undefined || record.status !== 'active')
405
+ return undefined;
406
+ const node = nodes.get(record.nodeId);
407
+ return node === undefined || node.courseId !== course.id ? undefined : { focus: record, course, node };
408
+ };
409
+ const selectProjectFor = async (sessionId, courseId, now) => {
410
+ if (sessionId.length === 0)
411
+ throw new Error('a project choice must name a conversation');
412
+ if (courseId !== undefined && courses.get(courseId) === undefined)
413
+ throw new Error(`no course "${courseId}"`);
414
+ const record = {
415
+ sessionId,
416
+ selectedAt: now,
417
+ ...(courseId === undefined ? {} : { courseId }),
418
+ };
419
+ await projects.put(sessionId, record);
420
+ projectRevisions.set(sessionId, (projectRevisions.get(sessionId) ?? 0) + 1);
421
+ return record;
422
+ };
275
423
  return {
276
424
  name: domain.name,
277
425
  version: UDT_DOMAIN_VERSION,
@@ -325,6 +473,22 @@ export async function openUdState(facility) {
325
473
  await nodes.put(record.id, record);
326
474
  return record;
327
475
  },
476
+ mutateNode(courseId, nodeId, change) {
477
+ const generation = planningGeneration;
478
+ return withProjectWrite(async () => {
479
+ if (generation !== planningGeneration || !courses.get(courseId))
480
+ throw new Error('project-unavailable: refresh the selected project');
481
+ const current = nodes.get(nodeId);
482
+ if (!current || current.courseId !== courseId)
483
+ throw new Error('node-unavailable: use an existing node in this project');
484
+ const proposed = change(structuredClone(current));
485
+ if (proposed.id !== nodeId || proposed.courseId !== courseId)
486
+ throw new Error('node identity cannot change');
487
+ const next = NodeSchema.parse(proposed);
488
+ await nodes.put(nodeId, next);
489
+ return structuredClone(next);
490
+ });
491
+ },
328
492
  nodeCount: () => nodes.size,
329
493
  readMap(courseId) {
330
494
  const course = courses.get(courseId);
@@ -332,8 +496,22 @@ export async function openUdState(facility) {
332
496
  return undefined;
333
497
  return { course, nodes: listNodesFor(courseId) };
334
498
  },
335
- readFocus: (courseId) => focus.get(courseId),
336
- async startFocus(courseId, nodeId, now) {
499
+ readFocus: (sessionId, courseId) => {
500
+ const record = focus.get(focusKey(sessionId, courseId));
501
+ if (record !== undefined)
502
+ return record;
503
+ // A record under the bare course key predates session scoping. It cannot
504
+ // say whose it is, so it is not returned to anyone — see
505
+ // execution-key.ts. Left where it is; never migrated on a guess.
506
+ if (focus.get(courseId) !== undefined) {
507
+ logIgnoredLegacy('focus', courseId);
508
+ }
509
+ return undefined;
510
+ },
511
+ async startFocus(courseId, nodeId, now, sessionId) {
512
+ if (sessionId === undefined || sessionId.length === 0) {
513
+ throw new Error('a focus must name the conversation it belongs to');
514
+ }
337
515
  const course = courses.get(courseId);
338
516
  if (!course)
339
517
  throw new Error(`no course "${courseId}"`);
@@ -343,17 +521,21 @@ export async function openUdState(facility) {
343
521
  if (node.courseId !== courseId) {
344
522
  throw new Error(`node "${nodeId}" belongs to course "${node.courseId}", not "${courseId}"`);
345
523
  }
346
- const record = { courseId, nodeId, startedAt: now, status: 'active', updatedAt: now };
347
- await focus.put(courseId, record);
524
+ const record = { courseId, nodeId, startedAt: now, status: 'active', updatedAt: now, sessionId };
525
+ await focus.put(focusKey(sessionId, courseId), record);
348
526
  return record;
349
527
  },
350
- async endFocus(courseId, now) {
351
- const current = focus.get(courseId);
528
+ async endFocus(sessionId, courseId, now) {
529
+ const key = focusKey(sessionId, courseId);
530
+ const current = focus.get(key);
352
531
  if (!current || current.status === 'ended')
353
532
  return;
354
- await focus.put(courseId, { ...current, status: 'ended', endedAt: now, updatedAt: now });
533
+ await focus.put(key, { ...current, status: 'ended', endedAt: now, updatedAt: now });
355
534
  },
356
535
  async decideNext(input) {
536
+ if (input.sessionId === undefined || input.sessionId.length === 0) {
537
+ throw new Error('a decision must name the conversation it was reached in');
538
+ }
357
539
  const course = courses.get(input.courseId);
358
540
  if (!course)
359
541
  throw new Error(`no course "${input.courseId}"`);
@@ -382,16 +564,17 @@ export async function openUdState(facility) {
382
564
  createdAt: input.now,
383
565
  ...(input.targetNodeId === undefined ? {} : { targetNodeId: input.targetNodeId }),
384
566
  };
385
- await nextSteps.put(input.fromNodeId, nextStep);
567
+ await nextSteps.put(nextStepKey(input.sessionId, input.fromNodeId), nextStep);
386
568
  // A move ends the focus; staying keeps it, because the learner has not
387
569
  // moved and the panel must not say they have.
388
570
  const moves = endsFocus(input.action, input.targetNodeId !== undefined);
389
- const current = focus.get(input.courseId) ?? {
571
+ const current = focus.get(focusKey(input.sessionId, input.courseId)) ?? {
390
572
  courseId: input.courseId,
391
573
  nodeId: input.fromNodeId,
392
574
  startedAt: input.now,
393
575
  status: 'active',
394
576
  updatedAt: input.now,
577
+ sessionId: input.sessionId,
395
578
  };
396
579
  const nextFocus = moves
397
580
  ? {
@@ -402,16 +585,34 @@ export async function openUdState(facility) {
402
585
  updatedAt: input.now,
403
586
  }
404
587
  : { ...current, status: 'active', nextStepId: input.fromNodeId, updatedAt: input.now };
405
- await focus.put(input.courseId, nextFocus);
588
+ await focus.put(focusKey(input.sessionId, input.courseId), nextFocus);
406
589
  return { nextStep, focus: nextFocus };
407
590
  },
408
- latestNextStep(courseId) {
409
- return [...nextSteps.entries()]
410
- .map(([, record]) => record)
411
- .filter((record) => record.courseId === courseId)
412
- .sort((left, right) => right.createdAt.localeCompare(left.createdAt))[0];
591
+ readProject: (sessionId) => projects.get(sessionId),
592
+ resolveProject: resolveProjectFor,
593
+ selectProject: (sessionId, courseId, now) => withProjectWrite(() => selectProjectFor(sessionId, courseId, now)),
594
+ adoptProject: (sessionId, courseId, now, expected, allowNew = false) => withProjectWrite(async () => {
595
+ const current = resolveProjectFor(sessionId);
596
+ if (!current.sessionAvailable)
597
+ return { projectAdopted: false, projectBinding: 'missing-session-id' };
598
+ if (current.course?.id === courseId)
599
+ return { projectAdopted: false, projectBinding: 'already-selected' };
600
+ if (current.revision !== expected.revision || current.selection !== expected.selection ||
601
+ current.reason !== undefined || current.selection === 'project' ||
602
+ (current.selection === 'new' && !allowNew))
603
+ return { projectAdopted: false, projectBinding: 'not-selected' };
604
+ await selectProjectFor(sessionId, courseId, now);
605
+ return { projectAdopted: true, projectBinding: 'adopted' };
606
+ }),
607
+ listProjects: () => [...projects.entries()].map(([, record]) => record),
608
+ readNextStep: (sessionId, fromNodeId) => {
609
+ const record = nextSteps.get(nextStepKey(sessionId, fromNodeId));
610
+ if (record !== undefined)
611
+ return record;
612
+ if (nextSteps.get(fromNodeId) !== undefined)
613
+ logIgnoredLegacy('next_steps', fromNodeId);
614
+ return undefined;
413
615
  },
414
- readNextStep: (id) => nextSteps.get(id),
415
616
  listNextSteps: () => [...nextSteps.entries()].map(([, record]) => record),
416
617
  listLessons: () => [...lessons.entries()].map(([, record]) => record),
417
618
  listFocus: () => [...focus.entries()].map(([, record]) => record),
@@ -427,56 +628,161 @@ export async function openUdState(facility) {
427
628
  lessons: [...lessons.entries()].map(([, record]) => record),
428
629
  nextSteps: [...nextSteps.entries()].map(([, record]) => record),
429
630
  focus: [...focus.entries()].map(([, record]) => record),
631
+ // Which project each conversation had open. Part of what the learner
632
+ // owns: it is a choice they made, and an export that dropped it would
633
+ // restore them to a library with nothing selected.
634
+ projects: [...projects.entries()].map(([, record]) => record),
635
+ learningPaths: [...paths.entries()].map(([, record]) => structuredClone(record)),
636
+ courseRuns: [...runs.entries()].map(([, record]) => structuredClone(record)),
637
+ sources: [...sources.entries()].map(([, record]) => structuredClone(record)),
638
+ tasks: [...tasks.entries()].map(([, record]) => structuredClone(record)),
639
+ reviewCards: [...reviewCards.entries()].map(([, record]) => structuredClone(record)),
640
+ reviewLog: [...reviewLog.entries()].map(([, record]) => structuredClone(record)),
430
641
  };
431
642
  },
432
643
  async resetState(now) {
433
- // Table by table, on the domain's own write chain, so a reset cannot
434
- // interleave with a write that is already queued.
435
- for (const table of [courses, nodes, lessons, focus, nextSteps, handoffs]) {
436
- for (const key of [...table.keys()])
437
- await table.delete(key);
438
- }
439
- await learner.set({ initializedAt: UNINITIALIZED, updatedAt: now });
644
+ // Invalidate planning work captured before reset; serialize with planning
645
+ // and project selections so late writes cannot resurrect deleted plans.
646
+ ++planningGeneration;
647
+ await withProjectWrite(async () => {
648
+ for (const table of [courses, nodes, lessons, focus, nextSteps, handoffs, projects, paths, runs, sources, tasks, reviewCards, reviewLog]) {
649
+ for (const key of [...table.keys()])
650
+ await table.delete(key);
651
+ }
652
+ await learner.set({ initializedAt: UNINITIALIZED, updatedAt: now });
653
+ });
654
+ },
655
+ readHandoff: (sessionId, targetNodeId) => {
656
+ const record = handoffs.get(handoffKey(sessionId, targetNodeId));
657
+ if (record !== undefined)
658
+ return record;
659
+ if (handoffs.get(targetNodeId) !== undefined)
660
+ logIgnoredLegacy('handoffs', targetNodeId);
661
+ return undefined;
440
662
  },
441
- readHandoff: (targetNodeId) => handoffs.get(targetNodeId),
442
663
  async writeHandoff(record) {
443
- await handoffs.put(record.targetNodeId, record);
664
+ if (record.sessionId === undefined || record.sessionId.length === 0) {
665
+ throw new Error('a handoff must name the conversation it was requested in');
666
+ }
667
+ await handoffs.put(handoffKey(record.sessionId, record.targetNodeId), record);
444
668
  return record;
445
669
  },
446
- async updateHandoff(targetNodeId, transform) {
447
- const current = handoffs.get(targetNodeId);
670
+ async updateHandoff(sessionId, targetNodeId, transform) {
671
+ const key = handoffKey(sessionId, targetNodeId);
672
+ const current = handoffs.get(key);
448
673
  if (current === undefined)
449
- throw new Error(`no handoff for "${targetNodeId}"`);
450
- return handoffs.update(targetNodeId, (record) => transform(record));
674
+ throw new Error(`no handoff for "${targetNodeId}" in this conversation`);
675
+ return handoffs.update(key, (record) => transform(record));
451
676
  },
452
677
  listHandoffs: () => [...handoffs.entries()].map(([, record]) => record),
453
- activeHandoff() {
454
- const courseId = learner.get().activeCourseId;
455
- const record = courseId === undefined ? undefined : focus.get(courseId);
456
- if (record === undefined)
457
- return undefined;
458
- return handoffs.get(record.nodeId);
459
- },
460
- activeFocus() {
461
- const courseId = learner.get().activeCourseId;
462
- if (courseId === undefined)
463
- return undefined;
464
- const record = focus.get(courseId);
465
- if (record === undefined || record.status !== 'active')
466
- return undefined;
467
- const course = courses.get(courseId);
468
- const node = nodes.get(record.nodeId);
469
- if (!course || !node)
678
+ activeHandoff(sessionId) {
679
+ const active = activeFocusFor(sessionId);
680
+ if (active === undefined)
470
681
  return undefined;
471
- return { focus: record, course, node };
682
+ return handoffs.get(handoffKey(sessionId, active.focus.nodeId));
472
683
  },
684
+ activeFocus: activeFocusFor,
473
685
  readLesson: (id) => lessons.get(id),
474
686
  lessonForNode: (nodeId) => [...lessons.entries()].map(([, record]) => record).find((record) => record.nodeId === nodeId),
475
687
  async writeLesson(record) {
476
688
  await lessons.put(record.id, record);
477
689
  return record;
478
690
  },
691
+ mutateLesson(courseId, nodeId, change) {
692
+ const generation = planningGeneration;
693
+ return withProjectWrite(async () => {
694
+ if (generation !== planningGeneration || !courses.get(courseId))
695
+ throw new Error('project-unavailable: refresh the selected project');
696
+ if (nodes.get(nodeId)?.courseId !== courseId)
697
+ throw new Error('node-unavailable: use an existing node in this project');
698
+ const current = [...lessons.entries()].map(([, record]) => record).find((record) => record.nodeId === nodeId);
699
+ const proposed = change(current === undefined ? undefined : structuredClone(current));
700
+ if (proposed.courseId !== courseId || proposed.nodeId !== nodeId || (current && proposed.id !== current.id))
701
+ throw new Error('lesson identity cannot change');
702
+ const next = LessonSchema.parse(proposed);
703
+ await lessons.put(next.id, next);
704
+ return structuredClone(next);
705
+ });
706
+ },
479
707
  lessonCount: () => lessons.size,
708
+ listSources: () => [...sources.entries()].map(([, record]) => structuredClone(record)),
709
+ readSource: (id) => {
710
+ const record = sources.get(id);
711
+ return record === undefined ? undefined : structuredClone(record);
712
+ },
713
+ async writeSource(record) {
714
+ await sources.put(record.id, record);
715
+ return record;
716
+ },
717
+ listTasks: () => [...tasks.entries()].map(([, record]) => structuredClone(record)),
718
+ readTask: (id) => {
719
+ const record = tasks.get(id);
720
+ return record === undefined ? undefined : structuredClone(record);
721
+ },
722
+ async writeTask(record) {
723
+ await tasks.put(record.id, record);
724
+ return record;
725
+ },
726
+ async deleteTask(id) {
727
+ await tasks.delete(id);
728
+ },
729
+ listReviewCards: () => [...reviewCards.entries()].map(([, record]) => structuredClone(record)),
730
+ readReviewCard: (id) => {
731
+ const record = reviewCards.get(id);
732
+ return record === undefined ? undefined : structuredClone(record);
733
+ },
734
+ async writeReviewCard(record) {
735
+ await reviewCards.put(record.id, record);
736
+ return record;
737
+ },
738
+ listReviewLog: () => [...reviewLog.entries()].map(([, record]) => structuredClone(record)),
739
+ async writeReviewLog(record) {
740
+ await reviewLog.put(record.id, record);
741
+ return record;
742
+ },
743
+ async deleteReviewLog(id) {
744
+ await reviewLog.delete(id);
745
+ },
746
+ readPath: (courseId) => {
747
+ const record = paths.get(courseId);
748
+ return record === undefined ? undefined : structuredClone(record);
749
+ },
750
+ mutatePath(courseId, expectedRevision, change) {
751
+ const generation = planningGeneration;
752
+ return withProjectWrite(async () => {
753
+ if (generation !== planningGeneration || !courses.get(courseId))
754
+ throw new Error('project-unavailable: refresh the selected project');
755
+ const current = structuredClone(paths.get(courseId) ?? emptyPath(courseId, new Date().toISOString()));
756
+ if (current.revision !== expectedRevision)
757
+ throw new Error('revision-conflict: learning plan changed; refresh before writing');
758
+ const proposed = change(current);
759
+ if (proposed.courseId !== courseId)
760
+ throw new Error('planning project identity cannot change');
761
+ const next = LearningPathSchema.parse({ ...proposed, revision: current.revision + 1 });
762
+ await paths.put(courseId, next);
763
+ return structuredClone(next);
764
+ });
765
+ },
766
+ readCourseRun: (courseId, sessionId) => {
767
+ const record = runs.get(runKey(courseId, sessionId));
768
+ return record === undefined ? undefined : structuredClone(record);
769
+ },
770
+ listCourseRuns: () => [...runs.entries()].map(([, record]) => structuredClone(record)),
771
+ mutateCourseRun(courseId, sessionId, change) {
772
+ const generation = planningGeneration;
773
+ return withProjectWrite(async () => {
774
+ if (!sessionId || generation !== planningGeneration || !courses.get(courseId))
775
+ throw new Error('project-unavailable: refresh the selected project');
776
+ const key = runKey(courseId, sessionId);
777
+ const current = structuredClone(runs.get(key) ?? emptyRun(courseId, sessionId, new Date().toISOString()));
778
+ const proposed = change(current);
779
+ if (proposed.courseId !== courseId || proposed.sessionId !== sessionId)
780
+ throw new Error('course run identity cannot change');
781
+ const next = CourseRunSchema.parse({ ...proposed, revision: current.revision + 1 });
782
+ await runs.put(key, next);
783
+ return structuredClone(next);
784
+ });
785
+ },
480
786
  snapshot() {
481
787
  const profile = learner.get();
482
788
  return {
package/lib/state.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAO3E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,kBAAkB,GACnB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAEtE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAEnD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAErG,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAE5C,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAC5F,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAGpF,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAEhF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC/C,IAAI,EAAE,kBAAkB,CAAC,QAAQ,EAAE;IACnC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC5C,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAA;AAGF,0DAA0D;AAC1D,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAU,CAAA;AACxE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;AAGzD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,MAAM,EAAE,kBAAkB;IAC1B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAA;AAGF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,IAAI,EAAE,kBAAkB;IACxB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAClC,SAAS,EAAE,eAAe,CAAC,QAAQ,EAAE;IACrC,iFAAiF;IACjF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACvC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACxC,CAAC,CAAA;AAGF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,uDAAuD;IACvD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACtC,QAAQ,EAAE,kBAAkB;IAC5B,KAAK,EAAE,eAAe;IACtB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC;IACjC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAA;AAGF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAU,CAAA;AAC1D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;AAGvD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,MAAM,EAAE,iBAAiB;IACzB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,6EAA6E;IAC7E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B;;;;;;;;;;;;;OAaG;IACH,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,yDAAyD;IACzD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAA;AAIF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,6CAA6C;IAC7C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,gEAAgE;IAChE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACtC,qBAAqB;IACrB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;CACvB,CAAC,CAAA;AAIF,8EAA8E;AAC9E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAU,CAAA;AAYrE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,kBAAkB,EAAE,cAAc,EAAE,oBAAoB,CAAU,CAAA;AAO9G;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,4EAA4E;IAC5E,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,MAAM,EAAE,eAAe;IACvB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC1C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAA;AAIF;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,4BAA4B,CAAA;AACzD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAA;AAwC/B,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAEhF,sFAAsF;AACtF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAA;AACpC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAA;AAEnC;;;;;;;;GAQG;AACH,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAA;AAEpC,SAAS,gBAAgB,CAAC,KAAa,EAAE,GAAW;IAClD,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,OAAM;IACjC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACrB,OAAO,CAAC,KAAK,CACX,6DAA6D,KAAK,WAAW,GAAG,MAAM;QACtF,8EAA8E,CAC/E,CAAA;AACH,CAAC;AACD,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAA;AACtC,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAA;AAClC,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAA;AACtC,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAA;AAClC,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAAA;AAC5C,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAAA;AACxC;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,kBAAkB,CAAA;AAEhD,iEAAiE;AACjE,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAA;AAE/B,MAAM,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC;IACpC,IAAI,EAAE,eAAe;IACrB,OAAO,EAAE,kBAAkB;IAC3B,6EAA6E;IAC7E,2EAA2E;IAC3E,6BAA6B;IAC7B,EAAE;IACF,yEAAyE;IACzE,6EAA6E;IAC7E,yEAAyE;IACzE,6EAA6E;IAC7E,0EAA0E;IAC1E,sEAAsE;IACtE,4EAA4E;IAC5E,8DAA8D;IAC9D,MAAM,EAAE;QACN,MAAM,EAAE,oBAAoB;QAC5B,OAAO,EAAE,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE;KACpE;IACD,MAAM,EAAE;QACN,CAAC,aAAa,CAAC,EAAE,WAAW,CAA0B,YAAY,CAAC;QACnE,CAAC,WAAW,CAAC,EAAE,WAAW,CAAsB,UAAU,CAAC;QAC3D,CAAC,aAAa,CAAC,EAAE,WAAW,CAA0B,YAAY,CAAC;QACnE,wEAAwE;QACxE,gDAAgD;QAChD,CAAC,WAAW,CAAC,EAAE,WAAW,CAAwB,WAAW,CAAC;QAC9D,CAAC,gBAAgB,CAAC,EAAE,WAAW,CAA8B,cAAc,CAAC;QAC5E,uEAAuE;QACvE,2BAA2B;QAC3B,CAAC,cAAc,CAAC,EAAE,WAAW,CAA4B,aAAa,CAAC;QACvE,CAAC,cAAc,CAAC,EAAE,WAAW,CAA4B,aAAa,CAAC;QACvE,wEAAwE;QACxE,cAAc,EAAE,WAAW,CAAuB,kBAAkB,CAAC;QACrE,WAAW,EAAE,WAAW,CAAoB,eAAe,CAAC;QAC5D,CAAC,aAAa,CAAC,EAAE,WAAW,CAA0B,kBAAkB,CAAC;QACzE,CAAC,WAAW,CAAC,EAAE,WAAW,CAAsB,UAAU,CAAC;QAC3D,CAAC,kBAAkB,CAAC,EAAE,WAAW,CAA4B,gBAAgB,CAAC;QAC9E,CAAC,gBAAgB,CAAC,EAAE,WAAW,CAA0B,eAAe,CAAC;KAC1E;CACF,CAAC,CAAA;AA+PF;;;;;;;;GAQG;AACH,MAAM,UAAU,OAAO,CAAC,KASvB;IACC,MAAM,MAAM,GAAe;QACzB,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,kBAAkB;QACxC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;QAC9B,SAAS,EAAE,KAAK,CAAC,GAAG;QACpB,SAAS,EAAE,KAAK,CAAC,GAAG;KACrB,CAAA;IACD,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;QAAE,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;IAClE,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,QAAwB;IACxD,MAAM,MAAM,GAAsB,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAChE,MAAM,OAAO,GAAqC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;IAC7E,MAAM,KAAK,GAAiC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IACrE,MAAM,OAAO,GAAqC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;IAC7E,MAAM,KAAK,GAAmC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IACvE,MAAM,SAAS,GAAyC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;IACtF,MAAM,QAAQ,GAAuC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;IACjF,MAAM,QAAQ,GAAuC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;IACjF,MAAM,KAAK,GAAkC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;IAC3E,MAAM,IAAI,GAA+B,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;IACpE,MAAM,OAAO,GAAqC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;IAC7E,MAAM,KAAK,GAAiC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IACrE,MAAM,WAAW,GAAuC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;IACxF,MAAM,SAAS,GAAqC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;IAClF,IAAI,kBAAkB,GAAG,CAAC,CAAA;IAC1B,MAAM,MAAM,GAAG,CAAC,QAAgB,EAAE,SAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAA;IAC7F,MAAM,OAAO,GAAiC,MAAM,CAAC,MAAM,CAAA;IAE3D,MAAM,YAAY,GAAG,CAAC,QAAmB,EAAgB,EAAE,CACzD,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAA;IAEnG,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAA;IAClD,IAAI,aAAa,GAAqB,OAAO,CAAC,OAAO,EAAE,CAAA;IACvD,MAAM,gBAAgB,GAAG,CAAI,KAAuB,EAAc,EAAE;QAClE,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACxC,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QAC7C,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;IAED,MAAM,iBAAiB,GAAG,CAAC,SAAkB,EAA4B,EAAE;QACzE,MAAM,QAAQ,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QACnF,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtD,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,QAAQ,EAAE,CAAA;QAC/F,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QACtC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;gBAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;YAChG,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YAC3C,OAAO,MAAM,KAAK,SAAS;gBACzB,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE;gBAClF,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;QACxE,CAAC;QAED,yEAAyE;QACzE,4EAA4E;QAC5E,MAAM,UAAU,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;aACtC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC;aAC3B,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAA;QAC9E,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAE,EAAE,QAAQ,EAAE,CAAA;QACtH,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,2BAA2B,EAAE,QAAQ,EAAE,CAAA;QACrG,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;IAChE,CAAC,CAAA;IAED,MAAM,cAAc,GAAG,CAAC,SAAiB,EAAE,EAAE;QAC3C,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC,MAAM,CAAA;QAClD,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,SAAS,CAAA;QAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;QACxD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAA;QACxE,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACrC,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;IACxG,CAAC,CAAA;IAED,MAAM,gBAAgB,GAAG,KAAK,EAAE,SAAiB,EAAE,QAA4B,EAAE,GAAW,EAAE,EAAE;QAC9F,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;QACxF,IAAI,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,cAAc,QAAQ,GAAG,CAAC,CAAA;QAC7G,MAAM,MAAM,GAAkB;YAC5B,SAAS;YACT,UAAU,EAAE,GAAG;YACf,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;SAChD,CAAA;QACD,MAAM,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QACrC,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QAC3E,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;IAED,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,OAAO,EAAE,kBAAkB;QAE3B,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;QAEhC,aAAa,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,aAAa,KAAK,aAAa;QAElE,KAAK,CAAC,aAAa,CAAC,GAAG;YACrB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;YAC7B,IAAI,OAAO,CAAC,aAAa,KAAK,aAAa;gBAAE,OAAO,OAAO,CAAA;YAC3D,MAAM,WAAW,GAAmB,EAAE,aAAa,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,CAAA;YAC1E,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;YAC9B,OAAO,WAAW,CAAA;QACpB,CAAC;QAED,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG;YAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;YAC7B,6EAA6E;YAC7E,MAAM,IAAI,GAAmB;gBAC3B,GAAG,OAAO;gBACV,GAAG,KAAK;gBACR,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,GAAG;gBAC3C,SAAS,EAAE,GAAG;aACf,CAAA;YACD,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YACvB,OAAO,IAAI,CAAA;QACb,CAAC;QAED,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC;QAErE,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAEnC,KAAK,CAAC,WAAW,CAAC,MAAM;YACtB,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;YACpC,OAAO,MAAM,CAAA;QACf,CAAC;QAED,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,GAAG;YAChC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YACpC,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,cAAc,QAAQ,GAAG,CAAC,CAAA;YAEvD,yEAAyE;YACzE,sEAAsE;YACtE,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBACnD,IAAI,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ;oBAAE,SAAQ;gBAC5D,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAA;YACzE,CAAC;YACD,MAAM,SAAS,GAAiB,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,CAAA;YAC/E,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;YACtC,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAA;YACjF,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,SAAS,EAAE,YAAY;QAEvB,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAE/B,KAAK,CAAC,SAAS,CAAC,MAAM;YACpB,MAAM,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;YAClC,OAAO,MAAM,CAAA;QACf,CAAC;QAED,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM;YACjC,MAAM,UAAU,GAAG,kBAAkB,CAAA;YACrC,OAAO,gBAAgB,CAAC,KAAK,IAAI,EAAE;gBACjC,IAAI,UAAU,KAAK,kBAAkB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;gBACrI,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;gBACjC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;oBAAE,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAA;gBACxH,MAAM,QAAQ,GAAG,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAA;gBACjD,IAAI,QAAQ,CAAC,EAAE,KAAK,MAAM,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ;oBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;gBAC5G,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;gBACvC,MAAM,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;gBAC7B,OAAO,eAAe,CAAC,IAAI,CAAC,CAAA;YAC9B,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI;QAE3B,OAAO,CAAC,QAAQ;YACd,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YACpC,IAAI,CAAC,MAAM;gBAAE,OAAO,SAAS,CAAA;YAC7B,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAA;QAClD,CAAC;QAED,SAAS,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE;YACjC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAA;YACvD,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,MAAM,CAAA;YACvC,yEAAyE;YACzE,yDAAyD;YACzD,iEAAiE;YACjE,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE,CAAC;gBACtC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;YACrC,CAAC;YACD,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS;YAC/C,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA;YACrE,CAAC;YACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YACpC,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,cAAc,QAAQ,GAAG,CAAC,CAAA;YACvD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YAC9B,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,YAAY,MAAM,GAAG,CAAC,CAAA;YACjD,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CAAC,SAAS,MAAM,wBAAwB,IAAI,CAAC,QAAQ,WAAW,QAAQ,GAAG,CAAC,CAAA;YAC7F,CAAC;YACD,MAAM,MAAM,GAAgB,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,CAAA;YAC7G,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAA;YACtD,OAAO,MAAM,CAAA;QACf,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG;YACrC,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;YACzC,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAC9B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO;gBAAE,OAAM;YAClD,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAA;QACrF,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,KAAK;YACpB,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClE,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;YAC5E,CAAC;YACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;YAC1C,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,cAAc,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAA;YAC7D,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;YACxC,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,YAAY,KAAK,CAAC,UAAU,GAAG,CAAC,CAAA;YAC3D,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,CAAC,UAAU,wBAAwB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;YACpF,CAAC;YACD,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;gBACrC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;gBAC5C,IAAI,CAAC,MAAM;oBAAE,MAAM,IAAI,KAAK,CAAC,YAAY,KAAK,CAAC,YAAY,GAAG,CAAC,CAAA;gBAC/D,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC;oBACvC,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,CAAC,YAAY,wBAAwB,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAA;gBACxF,CAAC;gBACD,IAAI,KAAK,CAAC,YAAY,KAAK,KAAK,CAAC,UAAU,EAAE,CAAC;oBAC5C,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAA;gBACxF,CAAC;YACH,CAAC;YAED,MAAM,QAAQ,GAAmB;gBAC/B,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,SAAS,EAAE,KAAK,CAAC,GAAG;gBACpB,GAAG,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC;aAClF,CAAA;YACD,MAAM,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAA;YAE7E,uEAAuE;YACvE,8CAA8C;YAC9C,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAA;YACvE,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI;gBACtE,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,MAAM,EAAE,KAAK,CAAC,UAAU;gBACxB,SAAS,EAAE,KAAK,CAAC,GAAG;gBACpB,MAAM,EAAE,QAAiB;gBACzB,SAAS,EAAE,KAAK,CAAC,GAAG;gBACpB,SAAS,EAAE,KAAK,CAAC,SAAS;aAC3B,CAAA;YACD,MAAM,SAAS,GAAgB,KAAK;gBAClC,CAAC,CAAC;oBACE,GAAG,OAAO;oBACV,MAAM,EAAE,OAAO;oBACf,OAAO,EAAE,KAAK,CAAC,GAAG;oBAClB,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,SAAS,EAAE,KAAK,CAAC,GAAG;iBACrB;gBACH,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,GAAG,EAAE,CAAA;YACxF,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAA;YAErE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;QACvC,CAAC;QAED,WAAW,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;QAEnD,cAAc,EAAE,iBAAiB;QAEjC,aAAa,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;QAE/G,YAAY,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,GAAG,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE;YAClG,MAAM,OAAO,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAA;YAC5C,IAAI,CAAC,OAAO,CAAC,gBAAgB;gBAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,CAAA;YACrG,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,KAAK,QAAQ;gBAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAA;YACzG,IACE,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ,IAAI,OAAO,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS;gBAClF,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS;gBAC/D,CAAC,OAAO,CAAC,SAAS,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC;gBAC1C,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,CAAA;YAClE,MAAM,gBAAgB,CAAC,SAAU,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAA;YACjD,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,CAAA;QAC5D,CAAC,CAAC;QAEF,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC;QAEvE,YAAY,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,EAAE;YACtC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAA;YAChE,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,MAAM,CAAA;YACvC,IAAI,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,SAAS;gBAAE,gBAAgB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;YACvF,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC;QACzE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC;QACrE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC;QAEjE,WAAW,CAAC,GAAG;YACb,OAAO;gBACL,MAAM,EAAE,aAAa;gBACrB,OAAO,EAAE,cAAc;gBACvB,UAAU,EAAE,GAAG;gBACf,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE;gBACtD,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE;gBACtB,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC;gBAC3D,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC;gBACvD,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC;gBAC3D,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC;gBAC/D,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC;gBACvD,qEAAqE;gBACrE,sEAAsE;gBACtE,mDAAmD;gBACnD,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC;gBAC7D,aAAa,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBAChF,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBAC5E,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBAC5E,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBACxE,WAAW,EAAE,CAAC,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBACpF,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;aACjF,CAAA;QACH,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,GAAG;YAClB,0EAA0E;YAC1E,wEAAwE;YACxE,EAAE,kBAAkB,CAAA;YACpB,MAAM,gBAAgB,CAAC,KAAK,IAAI,EAAE;gBAChC,KAAK,MAAM,KAAK,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,CAAC;oBACzI,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;wBAAE,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBAC9D,CAAC;gBACD,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAA;YACrE,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,WAAW,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE;YACvC,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAA;YAChE,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,MAAM,CAAA;YACvC,IAAI,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,SAAS;gBAAE,gBAAgB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;YACxF,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,KAAK,CAAC,YAAY,CAAC,MAAM;YACvB,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACpE,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAA;YAC7E,CAAC;YACD,MAAM,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,CAAA;YAC7E,OAAO,MAAM,CAAA;QACf,CAAC;QAED,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS;YACpD,MAAM,GAAG,GAAG,UAAU,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;YAC/C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACjC,IAAI,OAAO,KAAK,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,YAAY,wBAAwB,CAAC,CAAA;YACnG,OAAO,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;QAC5D,CAAC;QAED,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC;QAEvE,aAAa,CAAC,SAAS;YACrB,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,CAAA;YACxC,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAA;YAC1C,OAAO,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;QACjE,CAAC;QAED,WAAW,EAAE,cAAc;QAE3B,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAEnC,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CACxB,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC;QAE/F,KAAK,CAAC,WAAW,CAAC,MAAM;YACtB,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;YACpC,OAAO,MAAM,CAAA;QACf,CAAC;QAED,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM;YACnC,MAAM,UAAU,GAAG,kBAAkB,CAAA;YACrC,OAAO,gBAAgB,CAAC,KAAK,IAAI,EAAE;gBACjC,IAAI,UAAU,KAAK,kBAAkB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;gBACrI,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,QAAQ,KAAK,QAAQ;oBAAE,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAA;gBACvH,MAAM,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,CAAA;gBAC7G,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAA;gBACrF,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;gBAC7J,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;gBACzC,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;gBAChC,OAAO,eAAe,CAAC,IAAI,CAAC,CAAA;YAC9B,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI;QAE/B,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAEtF,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE;YACjB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAC9B,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;QACnE,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,MAAM;YACtB,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;YACpC,OAAO,MAAM,CAAA;QACf,CAAC;QAED,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAElF,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE;YACf,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAC5B,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;QACnE,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,MAAM;YACpB,MAAM,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;YAClC,OAAO,MAAM,CAAA;QACf,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,EAAE;YACjB,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACxB,CAAC;QAED,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAE9F,cAAc,EAAE,CAAC,EAAE,EAAE,EAAE;YACrB,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAClC,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;QACnE,CAAC;QAED,KAAK,CAAC,eAAe,CAAC,MAAM;YAC1B,MAAM,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;YACxC,OAAO,MAAM,CAAA;QACf,CAAC;QAED,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAE1F,KAAK,CAAC,cAAc,CAAC,MAAM;YACzB,MAAM,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;YACtC,OAAO,MAAM,CAAA;QACf,CAAC;QAED,KAAK,CAAC,eAAe,CAAC,EAAE;YACtB,MAAM,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAC5B,CAAC;QAED,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE;YACrB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YAClC,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;QACnE,CAAC;QAED,UAAU,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM;YAC3C,MAAM,UAAU,GAAG,kBAAkB,CAAA;YACrC,OAAO,gBAAgB,CAAC,KAAK,IAAI,EAAE;gBACjC,IAAI,UAAU,KAAK,kBAAkB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;gBACrI,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;gBACrG,IAAI,OAAO,CAAC,QAAQ,KAAK,gBAAgB;oBAAE,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAA;gBAC9H,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;gBAChC,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ;oBAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;gBAC9F,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,EAAE,GAAG,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAA;gBACtF,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;gBAC/B,OAAO,eAAe,CAAC,IAAI,CAAC,CAAA;YAC9B,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,aAAa,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAA;YACpD,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;QACnE,CAAC;QAED,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAEtF,eAAe,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM;YACzC,MAAM,UAAU,GAAG,kBAAkB,CAAA;YACrC,OAAO,gBAAgB,CAAC,KAAK,IAAI,EAAE;gBACjC,IAAI,CAAC,SAAS,IAAI,UAAU,KAAK,kBAAkB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;gBACnJ,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;gBACvC,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;gBACzG,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;gBAChC,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS;oBAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;gBAC5H,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,EAAE,GAAG,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAA;gBACnF,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;gBACzB,OAAO,eAAe,CAAC,IAAI,CAAC,CAAA;YAC9B,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,QAAQ;YACN,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;YAC7B,OAAO;gBACL,MAAM,EAAE,MAAM,CAAC,IAAI;gBACnB,OAAO,EAAE,kBAAkB;gBAC3B,WAAW,EAAE,OAAO,CAAC,aAAa,KAAK,aAAa;gBACpD,OAAO,EAAE,OAAO;gBAChB,WAAW,EAAE,OAAO,CAAC,IAAI;gBACzB,SAAS,EAAE,KAAK,CAAC,IAAI;gBACrB,WAAW,EAAE,OAAO,CAAC,IAAI;gBACzB,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;oBACrD,EAAE;oBACF,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;iBACtB,CAAC,CAAC;aACJ,CAAA;QACH,CAAC;QAED,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE;KAC5B,CAAA;AACH,CAAC"}