@graspful/mcp 0.2.3 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -38,7 +38,6 @@ const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
38
38
  const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
39
39
  const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
40
40
  const yaml = __importStar(require("js-yaml"));
41
- const crypto = __importStar(require("crypto"));
42
41
  const posthog_node_1 = require("posthog-node");
43
42
  const shared_1 = require("@graspful/shared");
44
43
  // ─── PostHog analytics ──────────────────────────────────────────────────────
@@ -72,7 +71,7 @@ function requireApiAuth() {
72
71
  throw new Error(AUTH_REQUIRED_ERROR);
73
72
  }
74
73
  }
75
- // ─── API Client (mirrors packages/cli/src/lib/api-client.ts) ──────────────
74
+ // ─── API Client ─────────────────────────────────────────────────────────────
76
75
  function getApiCredentials() {
77
76
  const baseUrl = (process.env.GRASPFUL_API_URL || 'https://api.graspful.ai').replace(/\/$/, '');
78
77
  const apiKey = process.env.GRASPFUL_API_KEY;
@@ -81,15 +80,15 @@ function getApiCredentials() {
81
80
  }
82
81
  return { baseUrl };
83
82
  }
84
- async function apiPost(path, body) {
83
+ async function apiFetch(method, path, body) {
85
84
  const { baseUrl, authHeader } = getApiCredentials();
86
85
  const headers = { 'Content-Type': 'application/json' };
87
86
  if (authHeader)
88
87
  headers['Authorization'] = authHeader;
89
88
  const res = await fetch(`${baseUrl}${path}`, {
90
- method: 'POST',
89
+ method,
91
90
  headers,
92
- body: JSON.stringify(body),
91
+ body: body !== undefined ? JSON.stringify(body) : undefined,
93
92
  });
94
93
  if (!res.ok) {
95
94
  const text = await res.text();
@@ -97,656 +96,13 @@ async function apiPost(path, body) {
97
96
  }
98
97
  return res.json();
99
98
  }
100
- async function apiGet(path) {
101
- const { baseUrl, authHeader } = getApiCredentials();
102
- const headers = { 'Content-Type': 'application/json' };
103
- if (authHeader)
104
- headers['Authorization'] = authHeader;
105
- const res = await fetch(`${baseUrl}${path}`, {
106
- method: 'GET',
107
- headers,
108
- });
109
- if (!res.ok) {
110
- const text = await res.text();
111
- throw new Error(`API error ${res.status}: ${text}`);
112
- }
113
- return res.json();
114
- }
115
- // ─── Scaffold helpers (mirrors packages/cli/src/commands/create-course.ts) ──
116
- function scaffoldCourse(topic, options) {
117
- const slug = topic.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '');
118
- return yaml.dump({
119
- course: {
120
- id: slug,
121
- name: topic,
122
- description: `Adaptive course on ${topic}`,
123
- estimatedHours: options.hours || 10,
124
- version: '2026.1',
125
- sourceDocument: options.source || 'TODO: Add source document',
126
- },
127
- sections: [
128
- { id: 'foundations', name: 'Foundations', description: 'Core concepts' },
129
- { id: 'application', name: 'Application', description: 'Applied concepts' },
130
- ],
131
- concepts: [
132
- {
133
- id: `${slug}-intro`,
134
- name: `Introduction to ${topic}`,
135
- section: 'foundations',
136
- difficulty: 2,
137
- estimatedMinutes: 15,
138
- tags: ['foundational'],
139
- prerequisites: [],
140
- knowledgePoints: [],
141
- },
142
- ],
143
- }, { lineWidth: 120, noRefs: true });
144
- }
145
- function scaffoldBrand(niche, options) {
146
- const NICHE_PRESETS = {
147
- education: { preset: 'blue', tagline: 'Learn smarter, not harder', headline: 'Master any subject with adaptive learning' },
148
- healthcare: { preset: 'emerald', tagline: 'Training that saves lives', headline: 'Adaptive healthcare education for professionals' },
149
- finance: { preset: 'slate', tagline: 'Build financial expertise', headline: 'Master finance with adaptive learning' },
150
- tech: { preset: 'indigo', tagline: 'Level up your skills', headline: 'Adaptive tech training that meets you where you are' },
151
- legal: { preset: 'amber', tagline: 'Know the law, pass the exam', headline: 'Adaptive legal education for exam success' },
152
- default: { preset: 'blue', tagline: 'Learn adaptively', headline: 'Personalized learning that works' },
153
- };
154
- const config = NICHE_PRESETS[niche] || NICHE_PRESETS['default'];
155
- const slug = (options.name || niche).toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '');
156
- const name = options.name || `${niche.charAt(0).toUpperCase() + niche.slice(1)} Academy`;
157
- const domain = options.domain || `${slug}.graspful.ai`;
158
- return yaml.dump({
159
- brand: {
160
- id: slug,
161
- name,
162
- domain,
163
- tagline: config.tagline,
164
- orgSlug: options.orgSlug || 'TODO: your-org-slug',
165
- },
166
- theme: {
167
- preset: config.preset,
168
- radius: '0.5rem',
169
- },
170
- landing: {
171
- hero: {
172
- headline: config.headline,
173
- subheadline: `${name} uses adaptive learning to help you master concepts faster.`,
174
- ctaText: 'Start Learning',
175
- },
176
- features: {
177
- heading: 'Why choose us?',
178
- items: [
179
- { title: 'Adaptive Learning', description: 'Content adapts to your knowledge level', icon: 'brain' },
180
- { title: 'Spaced Repetition', description: 'Review at optimal intervals for lasting memory', icon: 'clock' },
181
- { title: 'Progress Tracking', description: 'See exactly where you stand', icon: 'chart' },
182
- ],
183
- },
184
- howItWorks: {
185
- heading: 'How it works',
186
- items: [
187
- { title: 'Take a diagnostic', description: 'We assess what you already know' },
188
- { title: 'Learn adaptively', description: 'Focus on gaps, skip what you know' },
189
- { title: 'Master the material', description: 'Prove mastery through progressive challenges' },
190
- ],
191
- },
192
- faq: [],
193
- },
194
- seo: {
195
- title: `${name} — Adaptive Learning`,
196
- description: config.tagline,
197
- keywords: [niche, 'learning', 'adaptive', 'education'],
198
- },
199
- }, { lineWidth: 120, noRefs: true });
200
- }
201
- function detectFileType(data) {
202
- if (typeof data !== 'object' || data === null)
203
- return null;
204
- const obj = data;
205
- if ('course' in obj)
206
- return 'course';
207
- if ('brand' in obj)
208
- return 'brand';
209
- if ('academy' in obj)
210
- return 'academy';
211
- return null;
212
- }
213
- function detectCycles(concepts) {
214
- const graph = new Map();
215
- for (const c of concepts) {
216
- graph.set(c.id, c.prerequisites);
217
- }
218
- const visited = new Set();
219
- const inStack = new Set();
220
- const cycles = [];
221
- function dfs(node, path) {
222
- if (inStack.has(node)) {
223
- const cycleStart = path.indexOf(node);
224
- const cycle = path.slice(cycleStart).concat(node);
225
- cycles.push(`Cycle: ${cycle.join(' -> ')}`);
226
- return true;
227
- }
228
- if (visited.has(node))
229
- return false;
230
- visited.add(node);
231
- inStack.add(node);
232
- path.push(node);
233
- for (const dep of graph.get(node) ?? []) {
234
- dfs(dep, path);
235
- }
236
- path.pop();
237
- inStack.delete(node);
238
- return false;
239
- }
240
- for (const id of graph.keys()) {
241
- if (!visited.has(id)) {
242
- dfs(id, []);
243
- }
244
- }
245
- return cycles;
246
- }
247
- function validateYaml(yamlStr) {
248
- let raw;
249
- try {
250
- raw = yaml.load(yamlStr);
251
- }
252
- catch (e) {
253
- const msg = e instanceof Error ? e.message : String(e);
254
- return { valid: false, errors: [`YAML parse error: ${msg}`], stats: {} };
255
- }
256
- const fileType = detectFileType(raw);
257
- if (!fileType) {
258
- return { valid: false, errors: ['Could not detect file type. Expected top-level key: course, brand, or academy'], stats: {} };
259
- }
260
- const schemaMap = {
261
- course: shared_1.CourseYamlSchema,
262
- brand: shared_1.BrandYamlSchema,
263
- academy: shared_1.AcademyManifestSchema,
264
- };
265
- const result = schemaMap[fileType].safeParse(raw);
266
- if (!result.success) {
267
- const errors = result.error.issues.map((i) => `${i.path.join('.')}: ${i.message}`);
268
- return { valid: false, fileType, errors, stats: {} };
269
- }
270
- // For courses, also check DAG
271
- const dagErrors = [];
272
- let stats = { fileType };
273
- if (fileType === 'course') {
274
- const data = result.data;
275
- const conceptIds = new Set(data.concepts.map((c) => c.id));
276
- for (const concept of data.concepts) {
277
- for (const prereq of concept.prerequisites) {
278
- if (!conceptIds.has(prereq)) {
279
- dagErrors.push(`Concept "${concept.id}" has unknown prerequisite "${prereq}"`);
280
- }
281
- }
282
- }
283
- const cycles = detectCycles(data.concepts.map((c) => ({ id: c.id, prerequisites: c.prerequisites })));
284
- dagErrors.push(...cycles);
285
- const kpCount = data.concepts.reduce((sum, c) => sum + c.knowledgePoints.length, 0);
286
- const problemCount = data.concepts.reduce((sum, c) => sum + c.knowledgePoints.reduce((s, kp) => s + kp.problems.length, 0), 0);
287
- stats = { fileType, concepts: data.concepts.length, knowledgePoints: kpCount, problems: problemCount };
288
- }
289
- if (dagErrors.length > 0) {
290
- return { valid: false, fileType, errors: dagErrors, stats };
291
- }
292
- return { valid: true, fileType, errors: [], stats };
293
- }
294
- // ─── Review helpers (mirrors packages/cli/src/commands/review.ts) ───────────
295
- function checkYamlParses(raw) {
296
- const result = shared_1.CourseYamlSchema.safeParse(raw);
297
- if (result.success) {
298
- return { check: 'yaml_parses', passed: true };
299
- }
300
- const errors = result.error.issues.map((i) => `${i.path.join('.')}: ${i.message}`);
301
- return {
302
- check: 'yaml_parses',
303
- passed: false,
304
- details: `${errors.length} schema error(s): ${errors.slice(0, 5).join('; ')}${errors.length > 5 ? ` (+${errors.length - 5} more)` : ''}`,
305
- };
306
- }
307
- function checkUniqueProblemIds(data) {
308
- const duplicates = [];
309
- const seen = new Set();
310
- for (const concept of data.concepts) {
311
- for (const kp of concept.knowledgePoints) {
312
- for (const problem of kp.problems) {
313
- if (seen.has(problem.id)) {
314
- duplicates.push(problem.id);
315
- }
316
- seen.add(problem.id);
317
- }
318
- }
319
- }
320
- if (duplicates.length === 0) {
321
- return { check: 'unique_problem_ids', passed: true };
322
- }
323
- return {
324
- check: 'unique_problem_ids',
325
- passed: false,
326
- details: `Duplicate problem IDs: ${duplicates.join(', ')}`,
327
- };
328
- }
329
- function checkPrerequisitesValid(data) {
330
- const conceptIds = new Set(data.concepts.map((c) => c.id));
331
- const invalid = [];
332
- for (const concept of data.concepts) {
333
- for (const prereq of concept.prerequisites) {
334
- if (!conceptIds.has(prereq)) {
335
- invalid.push(`${concept.id} -> ${prereq}`);
336
- }
337
- }
338
- }
339
- if (invalid.length === 0) {
340
- return { check: 'prerequisites_valid', passed: true };
341
- }
342
- return {
343
- check: 'prerequisites_valid',
344
- passed: false,
345
- details: `Unknown prerequisites: ${invalid.join(', ')}`,
346
- };
99
+ // ─── YAML helpers ───────────────────────────────────────────────────────────
100
+ const YAML_DUMP_OPTS = { lineWidth: 120, noRefs: true };
101
+ function parseYaml(yamlStr) {
102
+ return yaml.load(yamlStr);
347
103
  }
348
- function normalizeText(text) {
349
- return text.toLowerCase().replace(/[^a-z0-9\s]/g, '').replace(/\s+/g, ' ').trim();
350
- }
351
- function checkQuestionDeduplication(data) {
352
- const seen = new Map();
353
- const collisions = [];
354
- for (const concept of data.concepts) {
355
- for (const kp of concept.knowledgePoints) {
356
- for (const problem of kp.problems) {
357
- const normalized = normalizeText(problem.question);
358
- const hash = crypto.createHash('md5').update(normalized).digest('hex').substring(0, 12);
359
- const key = `${hash}-d${problem.difficulty ?? 'none'}`;
360
- const existing = seen.get(key);
361
- if (existing) {
362
- collisions.push(`"${problem.id}" collides with "${existing.problemId}" (same question text at same difficulty)`);
363
- }
364
- else {
365
- seen.set(key, { problemId: problem.id });
366
- }
367
- }
368
- }
369
- }
370
- if (collisions.length === 0) {
371
- return { check: 'question_deduplication', passed: true };
372
- }
373
- return {
374
- check: 'question_deduplication',
375
- passed: false,
376
- details: collisions.slice(0, 5).join('; ') + (collisions.length > 5 ? ` (+${collisions.length - 5} more)` : ''),
377
- };
378
- }
379
- function checkDifficultyStaircase(data) {
380
- const failures = [];
381
- for (const concept of data.concepts) {
382
- if (concept.knowledgePoints.length === 0)
383
- continue;
384
- const difficulties = new Set();
385
- for (const kp of concept.knowledgePoints) {
386
- for (const problem of kp.problems) {
387
- if (problem.difficulty != null) {
388
- difficulties.add(problem.difficulty);
389
- }
390
- }
391
- }
392
- if (difficulties.size > 0 && difficulties.size < 2) {
393
- failures.push(`"${concept.id}" has problems at only ${difficulties.size} difficulty level(s) — need 2+`);
394
- }
395
- }
396
- if (failures.length === 0) {
397
- return { check: 'difficulty_staircase', passed: true };
398
- }
399
- return {
400
- check: 'difficulty_staircase',
401
- passed: false,
402
- details: failures.slice(0, 5).join('; ') + (failures.length > 5 ? ` (+${failures.length - 5} more)` : ''),
403
- };
404
- }
405
- function extractStems(text) {
406
- return text.toLowerCase().replace(/[^a-z0-9\s]/g, '').split(/\s+/).filter((w) => w.length > 4);
407
- }
408
- function checkCrossConceptCoverage(data) {
409
- const stemConceptCount = new Map();
410
- for (const concept of data.concepts) {
411
- for (const kp of concept.knowledgePoints) {
412
- for (const problem of kp.problems) {
413
- const stems = extractStems(problem.question);
414
- for (const stem of stems) {
415
- if (!stemConceptCount.has(stem)) {
416
- stemConceptCount.set(stem, new Set());
417
- }
418
- stemConceptCount.get(stem).add(concept.id);
419
- }
420
- }
421
- }
422
- }
423
- const overused = [];
424
- for (const [stem, concepts] of stemConceptCount) {
425
- if (concepts.size > 3) {
426
- overused.push(`"${stem}" appears across ${concepts.size} concepts`);
427
- }
428
- }
429
- const commonWords = new Set([
430
- 'which', 'would', 'should', 'could', 'about', 'their', 'there', 'these', 'those',
431
- 'being', 'between', 'through', 'during', 'before', 'after', 'above', 'below',
432
- 'following', 'statement', 'answer', 'question', 'correct', 'incorrect',
433
- 'agent', 'property', 'owner', 'buyer', 'seller',
434
- ]);
435
- const meaningfulOverused = overused.filter((entry) => {
436
- const stem = entry.match(/"([^"]+)"/)?.[1] ?? '';
437
- return !commonWords.has(stem);
438
- });
439
- if (meaningfulOverused.length === 0) {
440
- return { check: 'cross_concept_coverage', passed: true };
441
- }
442
- return {
443
- check: 'cross_concept_coverage',
444
- passed: meaningfulOverused.length <= 5,
445
- details: meaningfulOverused.slice(0, 5).join('; ') + (meaningfulOverused.length > 5 ? ` (+${meaningfulOverused.length - 5} more)` : ''),
446
- };
447
- }
448
- function checkProblemVariantDepth(data) {
449
- const failures = [];
450
- for (const concept of data.concepts) {
451
- if (concept.knowledgePoints.length === 0)
452
- continue;
453
- for (const kp of concept.knowledgePoints) {
454
- if (kp.problems.length < 3) {
455
- failures.push(`"${concept.id}/${kp.id}" has ${kp.problems.length} problem(s) — need 3+`);
456
- }
457
- }
458
- }
459
- if (failures.length === 0) {
460
- return { check: 'problem_variant_depth', passed: true };
461
- }
462
- return {
463
- check: 'problem_variant_depth',
464
- passed: false,
465
- details: failures.slice(0, 5).join('; ') + (failures.length > 5 ? ` (+${failures.length - 5} more)` : ''),
466
- };
467
- }
468
- function checkInstructionFormatting(data) {
469
- const warnings = [];
470
- for (const concept of data.concepts) {
471
- for (const kp of concept.knowledgePoints) {
472
- if (!kp.instruction)
473
- continue;
474
- if (kp.instruction.match(/^[\w\-./]+\.(md|txt|html)$/))
475
- continue;
476
- const wordCount = kp.instruction.split(/\s+/).filter(Boolean).length;
477
- const hasContentBlocks = kp.instructionContent && kp.instructionContent.length > 0;
478
- if (wordCount > 100 && !hasContentBlocks) {
479
- warnings.push(`"${concept.id}/${kp.id}" instruction is ${wordCount} words with no content blocks`);
480
- }
481
- }
482
- }
483
- if (warnings.length === 0) {
484
- return { check: 'instruction_formatting', passed: true };
485
- }
486
- return {
487
- check: 'instruction_formatting',
488
- passed: false,
489
- details: warnings.slice(0, 5).join('; ') + (warnings.length > 5 ? ` (+${warnings.length - 5} more)` : ''),
490
- };
491
- }
492
- function checkWorkedExampleCoverage(data) {
493
- const authoredConcepts = data.concepts.filter((c) => c.knowledgePoints.length > 0);
494
- if (authoredConcepts.length === 0) {
495
- return { check: 'worked_example_coverage', passed: true };
496
- }
497
- const withExamples = authoredConcepts.filter((c) => c.knowledgePoints.some((kp) => kp.workedExample && kp.workedExample.trim().length > 0));
498
- const coverage = withExamples.length / authoredConcepts.length;
499
- if (coverage >= 0.5) {
500
- return { check: 'worked_example_coverage', passed: true };
501
- }
502
- return {
503
- check: 'worked_example_coverage',
504
- passed: false,
505
- details: `${withExamples.length}/${authoredConcepts.length} authored concepts have worked examples (${Math.round(coverage * 100)}%) — need 50%+`,
506
- };
507
- }
508
- function checkImportDryRun(data) {
509
- const conceptIds = new Set(data.concepts.map((c) => c.id));
510
- const errors = [];
511
- for (const concept of data.concepts) {
512
- for (const prereq of concept.prerequisites) {
513
- if (!conceptIds.has(prereq)) {
514
- errors.push(`Unknown prerequisite: ${concept.id} -> ${prereq}`);
515
- }
516
- }
517
- }
518
- const graph = new Map();
519
- for (const c of data.concepts) {
520
- graph.set(c.id, [...c.prerequisites]);
521
- }
522
- const visited = new Set();
523
- const inStack = new Set();
524
- function hasCycle(node, path) {
525
- if (inStack.has(node)) {
526
- const cycleStart = path.indexOf(node);
527
- const cycle = path.slice(cycleStart).concat(node);
528
- errors.push(`Cycle detected: ${cycle.join(' -> ')}`);
529
- return true;
530
- }
531
- if (visited.has(node))
532
- return false;
533
- visited.add(node);
534
- inStack.add(node);
535
- path.push(node);
536
- let foundCycle = false;
537
- for (const dep of graph.get(node) ?? []) {
538
- if (hasCycle(dep, path)) {
539
- foundCycle = true;
540
- }
541
- }
542
- path.pop();
543
- inStack.delete(node);
544
- return foundCycle;
545
- }
546
- for (const id of graph.keys()) {
547
- if (!visited.has(id)) {
548
- hasCycle(id, []);
549
- }
550
- }
551
- if (errors.length === 0) {
552
- return { check: 'import_dry_run', passed: true };
553
- }
554
- return {
555
- check: 'import_dry_run',
556
- passed: false,
557
- details: errors.join('; '),
558
- };
559
- }
560
- function runReview(yamlStr) {
561
- let raw;
562
- try {
563
- raw = yaml.load(yamlStr);
564
- }
565
- catch (e) {
566
- const msg = e instanceof Error ? e.message : String(e);
567
- return {
568
- passed: false,
569
- score: '0/10',
570
- failures: [{ check: 'yaml_parses', passed: false, details: `YAML parse error: ${msg}` }],
571
- warnings: [],
572
- stats: { concepts: 0, kps: 0, problems: 0, authoredConcepts: 0, stubConcepts: 0 },
573
- };
574
- }
575
- const checks = [];
576
- const parseCheck = checkYamlParses(raw);
577
- checks.push(parseCheck);
578
- if (!parseCheck.passed) {
579
- return {
580
- passed: false,
581
- score: '0/10',
582
- failures: checks.filter((c) => !c.passed),
583
- warnings: [],
584
- stats: { concepts: 0, kps: 0, problems: 0, authoredConcepts: 0, stubConcepts: 0 },
585
- };
586
- }
587
- const data = shared_1.CourseYamlSchema.parse(raw);
588
- const authoredConcepts = data.concepts.filter((c) => c.knowledgePoints.length > 0);
589
- const stubConcepts = data.concepts.filter((c) => c.knowledgePoints.length === 0);
590
- const kps = data.concepts.reduce((sum, c) => sum + c.knowledgePoints.length, 0);
591
- const problems = data.concepts.reduce((sum, c) => sum + c.knowledgePoints.reduce((s, kp) => s + kp.problems.length, 0), 0);
592
- const stats = {
593
- concepts: data.concepts.length,
594
- kps,
595
- problems,
596
- authoredConcepts: authoredConcepts.length,
597
- stubConcepts: stubConcepts.length,
598
- };
599
- checks.push(checkUniqueProblemIds(data));
600
- checks.push(checkPrerequisitesValid(data));
601
- checks.push(checkQuestionDeduplication(data));
602
- checks.push(checkDifficultyStaircase(data));
603
- checks.push(checkCrossConceptCoverage(data));
604
- checks.push(checkProblemVariantDepth(data));
605
- checks.push(checkInstructionFormatting(data));
606
- checks.push(checkWorkedExampleCoverage(data));
607
- checks.push(checkImportDryRun(data));
608
- const passedCount = checks.filter((c) => c.passed).length;
609
- const failures = checks.filter((c) => !c.passed);
610
- return {
611
- passed: failures.length === 0,
612
- score: `${passedCount}/10`,
613
- failures,
614
- warnings: [],
615
- stats,
616
- };
617
- }
618
- // ─── Describe helper (mirrors packages/cli/src/commands/describe.ts) ────────
619
- function computeGraphDepth(concepts) {
620
- const graph = new Map();
621
- for (const c of concepts) {
622
- graph.set(c.id, c.prerequisites);
623
- }
624
- const memo = new Map();
625
- function depth(id, visited) {
626
- if (memo.has(id))
627
- return memo.get(id);
628
- if (visited.has(id))
629
- return 0;
630
- visited.add(id);
631
- const prereqs = graph.get(id) ?? [];
632
- let maxPrereqDepth = 0;
633
- for (const prereq of prereqs) {
634
- if (graph.has(prereq)) {
635
- maxPrereqDepth = Math.max(maxPrereqDepth, depth(prereq, visited));
636
- }
637
- }
638
- const d = maxPrereqDepth + 1;
639
- memo.set(id, d);
640
- return d;
641
- }
642
- let maxDepth = 0;
643
- for (const c of concepts) {
644
- maxDepth = Math.max(maxDepth, depth(c.id, new Set()));
645
- }
646
- return maxDepth;
647
- }
648
- function describeCourse(yamlStr) {
649
- const raw = yaml.load(yamlStr);
650
- const result = shared_1.CourseYamlSchema.safeParse(raw);
651
- if (!result.success) {
652
- throw new Error(`Invalid course YAML: ${result.error.issues[0]?.message ?? 'unknown error'}`);
653
- }
654
- const data = result.data;
655
- const concepts = data.concepts;
656
- const sections = data.sections;
657
- const authoredConcepts = concepts.filter((c) => c.knowledgePoints.length > 0);
658
- const stubConcepts = concepts.filter((c) => c.knowledgePoints.length === 0);
659
- const kpCount = concepts.reduce((sum, c) => sum + c.knowledgePoints.length, 0);
660
- const problemCount = concepts.reduce((sum, c) => sum + c.knowledgePoints.reduce((s, kp) => s + kp.problems.length, 0), 0);
661
- const graphDepth = computeGraphDepth(concepts);
662
- const conceptsWithoutKps = stubConcepts.map((c) => c.id);
663
- const kpsWithoutProblems = [];
664
- for (const c of concepts) {
665
- for (const kp of c.knowledgePoints) {
666
- if (kp.problems.length === 0) {
667
- kpsWithoutProblems.push(`${c.id}/${kp.id}`);
668
- }
669
- }
670
- }
671
- const sectionBreakdown = [];
672
- if (sections.length > 0) {
673
- for (const section of sections) {
674
- const sectionConcepts = concepts.filter((c) => c.section === section.id);
675
- const sKps = sectionConcepts.reduce((sum, c) => sum + c.knowledgePoints.length, 0);
676
- const sProblems = sectionConcepts.reduce((sum, c) => sum + c.knowledgePoints.reduce((s, kp) => s + kp.problems.length, 0), 0);
677
- sectionBreakdown.push({ section: section.id, concepts: sectionConcepts.length, kps: sKps, problems: sProblems });
678
- }
679
- const unsectioned = concepts.filter((c) => !c.section);
680
- if (unsectioned.length > 0) {
681
- const uKps = unsectioned.reduce((sum, c) => sum + c.knowledgePoints.length, 0);
682
- const uProblems = unsectioned.reduce((sum, c) => sum + c.knowledgePoints.reduce((s, kp) => s + kp.problems.length, 0), 0);
683
- sectionBreakdown.push({ section: '(unsectioned)', concepts: unsectioned.length, kps: uKps, problems: uProblems });
684
- }
685
- }
686
- return {
687
- courseName: data.course.name,
688
- courseId: data.course.id,
689
- version: data.course.version,
690
- estimatedHours: data.course.estimatedHours,
691
- concepts: concepts.length,
692
- authoredConcepts: authoredConcepts.length,
693
- stubConcepts: stubConcepts.length,
694
- knowledgePoints: kpCount,
695
- problems: problemCount,
696
- graphDepth,
697
- conceptsWithoutKps: conceptsWithoutKps.length,
698
- conceptsWithoutKpsList: conceptsWithoutKps,
699
- kpsWithoutProblems: kpsWithoutProblems.length,
700
- kpsWithoutProblemsList: kpsWithoutProblems,
701
- sections: sectionBreakdown,
702
- };
703
- }
704
- // ─── Fill concept helper (mirrors packages/cli/src/commands/fill-concept.ts) ─
705
- function fillConcept(yamlStr, conceptId, options) {
706
- const raw = yaml.load(yamlStr);
707
- const parsed = shared_1.CourseYamlSchema.safeParse(raw);
708
- if (!parsed.success) {
709
- throw new Error(`Invalid course YAML: ${parsed.error.issues[0]?.message ?? 'unknown error'}`);
710
- }
711
- const data = parsed.data;
712
- const concept = data.concepts.find((c) => c.id === conceptId);
713
- if (!concept) {
714
- throw new Error(`Concept "${conceptId}" not found. Available: ${data.concepts.map((c) => c.id).join(', ')}`);
715
- }
716
- if (concept.knowledgePoints.length > 0) {
717
- throw new Error(`Concept "${conceptId}" already has ${concept.knowledgePoints.length} KP(s). Remove them first to regenerate.`);
718
- }
719
- const kpCount = options.kps ?? 2;
720
- const problemsPerKp = options.problemsPerKp ?? 3;
721
- const newKps = [];
722
- for (let i = 1; i <= kpCount; i++) {
723
- const problems = [];
724
- for (let j = 1; j <= problemsPerKp; j++) {
725
- problems.push({
726
- id: `${conceptId}-kp${i}-p${j}`,
727
- type: 'multiple_choice',
728
- question: `TODO: Write question ${j} for ${conceptId} KP${i}`,
729
- options: ['Option A', 'Option B', 'Option C', 'Option D'],
730
- correct: 0,
731
- explanation: 'TODO: Explain the correct answer',
732
- difficulty: Math.min(j + 1, 5),
733
- });
734
- }
735
- newKps.push({
736
- id: `${conceptId}-kp${i}`,
737
- instruction: `TODO: Write instruction for ${concept.name} — knowledge point ${i}`,
738
- workedExample: `TODO: Write a worked example for ${concept.name} — knowledge point ${i}`,
739
- problems,
740
- });
741
- }
742
- // Rebuild the raw object to preserve structure
743
- const rawObj = raw;
744
- const concepts = rawObj['concepts'];
745
- const targetConcept = concepts.find((c) => c['id'] === conceptId);
746
- if (targetConcept) {
747
- targetConcept['knowledgePoints'] = newKps;
748
- }
749
- return yaml.dump(rawObj, { lineWidth: 120, noRefs: true });
104
+ function dumpYaml(obj) {
105
+ return yaml.dump(obj, YAML_DUMP_OPTS);
750
106
  }
751
107
  const TOOLS = [
752
108
  {
@@ -964,37 +320,64 @@ async function handleToolCall(name, args) {
964
320
  switch (name) {
965
321
  case 'graspful_scaffold_course': {
966
322
  const topic = args.topic;
967
- const estimatedHours = args.estimatedHours;
968
- const sourceDocument = args.sourceDocument;
969
- const yamlContent = scaffoldCourse(topic, { hours: estimatedHours, source: sourceDocument });
970
- mcpCapture('course scaffolded', { topic, estimated_hours: estimatedHours });
971
- return textResult(yamlContent);
323
+ const obj = (0, shared_1.scaffoldCourseObject)(topic, {
324
+ hours: args.estimatedHours,
325
+ source: args.sourceDocument,
326
+ });
327
+ mcpCapture('course scaffolded', { topic, estimated_hours: args.estimatedHours });
328
+ return textResult(dumpYaml(obj));
972
329
  }
973
330
  case 'graspful_fill_concept': {
974
331
  try {
975
332
  const conceptId = args.conceptId;
976
- const updatedYaml = fillConcept(args.yaml, conceptId, { kps: args.kps, problemsPerKp: args.problemsPerKp });
333
+ const raw = parseYaml(args.yaml);
334
+ const updated = (0, shared_1.fillConceptInRaw)(raw, conceptId, {
335
+ kps: args.kps,
336
+ problemsPerKp: args.problemsPerKp,
337
+ });
977
338
  mcpCapture('concept filled', { concept_id: conceptId });
978
- return textResult(updatedYaml);
339
+ return textResult(dumpYaml(updated));
979
340
  }
980
341
  catch (e) {
981
342
  return errorResult(e instanceof Error ? e.message : String(e));
982
343
  }
983
344
  }
984
345
  case 'graspful_validate': {
985
- const result = validateYaml(args.yaml);
346
+ let raw;
347
+ try {
348
+ raw = parseYaml(args.yaml);
349
+ }
350
+ catch (e) {
351
+ const msg = e instanceof Error ? e.message : String(e);
352
+ return textResult(JSON.stringify({ valid: false, errors: [`YAML parse error: ${msg}`], stats: {} }, null, 2));
353
+ }
354
+ const result = (0, shared_1.validateParsedYaml)(raw);
986
355
  mcpCapture('course validated', { valid: result.valid, error_count: result.errors.length, file_type: result.fileType });
987
356
  return textResult(JSON.stringify(result, null, 2));
988
357
  }
989
358
  case 'graspful_review_course': {
990
- const result = runReview(args.yaml);
359
+ let raw;
360
+ try {
361
+ raw = parseYaml(args.yaml);
362
+ }
363
+ catch (e) {
364
+ const msg = e instanceof Error ? e.message : String(e);
365
+ return textResult(JSON.stringify({
366
+ passed: false,
367
+ score: '0/10',
368
+ failures: [{ check: 'yaml_parses', passed: false, details: `YAML parse error: ${msg}` }],
369
+ warnings: [],
370
+ stats: { concepts: 0, kps: 0, problems: 0, authoredConcepts: 0, stubConcepts: 0 },
371
+ }, null, 2));
372
+ }
373
+ const result = (0, shared_1.runQualityGate)(raw);
991
374
  mcpCapture('course reviewed', { score: result.score, passed: result.passed });
992
375
  return textResult(JSON.stringify(result, null, 2));
993
376
  }
994
377
  case 'graspful_import_course': {
995
378
  try {
996
379
  requireApiAuth();
997
- const result = await apiPost(`/api/v1/orgs/${args.org}/courses/import`, { yaml: args.yaml, publish: args.publish ?? false });
380
+ const result = await apiFetch('POST', `/api/v1/orgs/${args.org}/courses/import`, { yaml: args.yaml, publish: args.publish ?? false });
998
381
  mcpCapture('course imported', { course_id: result.courseId, org: args.org, published: result.published });
999
382
  return textResult(JSON.stringify(result, null, 2));
1000
383
  }
@@ -1005,7 +388,7 @@ async function handleToolCall(name, args) {
1005
388
  case 'graspful_publish_course': {
1006
389
  try {
1007
390
  requireApiAuth();
1008
- const result = await apiPost(`/api/v1/orgs/${args.org}/courses/${args.courseId}/publish`, {});
391
+ const result = await apiFetch('POST', `/api/v1/orgs/${args.org}/courses/${args.courseId}/publish`, {});
1009
392
  mcpCapture('course published', { course_id: result.courseId, org: args.org, published: result.published });
1010
393
  return textResult(JSON.stringify(result, null, 2));
1011
394
  }
@@ -1015,7 +398,9 @@ async function handleToolCall(name, args) {
1015
398
  }
1016
399
  case 'graspful_describe_course': {
1017
400
  try {
1018
- const stats = describeCourse(args.yaml);
401
+ const raw = parseYaml(args.yaml);
402
+ const parsed = shared_1.CourseYamlSchema.parse(raw);
403
+ const stats = (0, shared_1.describeCourse)(parsed);
1019
404
  mcpCapture('course described', stats);
1020
405
  return textResult(JSON.stringify(stats, null, 2));
1021
406
  }
@@ -1025,25 +410,24 @@ async function handleToolCall(name, args) {
1025
410
  }
1026
411
  case 'graspful_create_brand': {
1027
412
  const niche = args.niche;
1028
- const yamlContent = scaffoldBrand(niche, {
413
+ const obj = (0, shared_1.scaffoldBrandObject)(niche, {
1029
414
  name: args.name,
1030
415
  domain: args.domain,
1031
416
  orgSlug: args.orgSlug,
1032
417
  });
1033
418
  mcpCapture('brand scaffolded', { niche });
1034
- return textResult(yamlContent);
419
+ return textResult(dumpYaml(obj));
1035
420
  }
1036
421
  case 'graspful_import_brand': {
1037
422
  try {
1038
423
  requireApiAuth();
1039
424
  let raw;
1040
425
  try {
1041
- raw = yaml.load(args.yaml);
426
+ raw = parseYaml(args.yaml);
1042
427
  }
1043
428
  catch (e) {
1044
429
  throw new Error(`YAML parse error: ${e instanceof Error ? e.message : String(e)}`);
1045
430
  }
1046
- // Unwrap YAML structure to flat DTO (brand YAML has nested brand: key)
1047
431
  const parsed = raw;
1048
432
  const brandSection = (parsed.brand || {});
1049
433
  const dto = {
@@ -1058,7 +442,7 @@ async function handleToolCall(name, args) {
1058
442
  seo: parsed.seo || {},
1059
443
  pricing: parsed.pricing || {},
1060
444
  };
1061
- const result = await apiPost('/api/v1/brands', dto);
445
+ const result = await apiFetch('POST', '/api/v1/brands', dto);
1062
446
  mcpCapture('brand imported', { slug: result.slug, domain: result.domain });
1063
447
  return textResult(JSON.stringify(result, null, 2));
1064
448
  }
@@ -1069,7 +453,7 @@ async function handleToolCall(name, args) {
1069
453
  case 'graspful_list_courses': {
1070
454
  try {
1071
455
  requireApiAuth();
1072
- const result = await apiGet(`/api/v1/orgs/${args.org}/courses`);
456
+ const result = await apiFetch('GET', `/api/v1/orgs/${args.org}/courses`);
1073
457
  mcpCapture('courses listed', { org: args.org, count: result.length });
1074
458
  return textResult(JSON.stringify(result, null, 2));
1075
459
  }
@@ -1084,7 +468,7 @@ async function handleToolCall(name, args) {
1084
468
  // ─── MCP Server ─────────────────────────────────────────────────────────────
1085
469
  const server = new index_js_1.Server({
1086
470
  name: 'graspful',
1087
- version: '0.1.0',
471
+ version: '0.2.4',
1088
472
  }, {
1089
473
  capabilities: {
1090
474
  tools: {},
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,wEAAmE;AACnE,wEAAiF;AACjF,iEAG4C;AAC5C,8CAAgC;AAChC,+CAAiC;AACjC,+CAAuC;AACvC,6CAI0B;AAE1B,+EAA+E;AAE/E,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;AACtF,MAAM,aAAa,GAAG,UAAU;IAC9B,CAAC,CAAC,IAAI,sBAAO,CAAC,UAAU,EAAE;QACtB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,0BAA0B;QACpG,OAAO,EAAE,CAAC;QACV,aAAa,EAAE,CAAC;KACjB,CAAC;IACJ,CAAC,CAAC,IAAI,CAAC;AAET,SAAS,aAAa;IACpB,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,eAAe,CAAC;AACzF,CAAC;AAED,SAAS,UAAU,CAAC,KAAa,EAAE,aAAsC,EAAE;IACzE,aAAa,EAAE,OAAO,CAAC;QACrB,UAAU,EAAE,aAAa,EAAE;QAC3B,KAAK;QACL,UAAU,EAAE,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE;KAC7C,CAAC,CAAC;AACL,CAAC;AAGD,+EAA+E;AAE/E,MAAM,mBAAmB,GACvB,+CAA+C;IAC/C,6FAA6F;IAC7F,wFAAwF;IACxF,yEAAyE;IACzE,iFAAiF,CAAC;AAEpF,SAAS,cAAc;IACrB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;AACH,CAAC;AAED,6EAA6E;AAE7E,SAAS,iBAAiB;IACxB,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,yBAAyB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC/F,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC5C,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,MAAM,EAAE,EAAE,CAAC;IACrD,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC;AAED,KAAK,UAAU,OAAO,CAAc,IAAY,EAAE,IAAa;IAC7D,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,iBAAiB,EAAE,CAAC;IACpD,MAAM,OAAO,GAA2B,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;IAC/E,IAAI,UAAU;QAAE,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,CAAC;IAEtD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,GAAG,IAAI,EAAE,EAAE;QAC3C,MAAM,EAAE,MAAM;QACd,OAAO;QACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,aAAa,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,EAAO,CAAC;AACzB,CAAC;AAED,KAAK,UAAU,MAAM,CAAc,IAAY;IAC7C,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,iBAAiB,EAAE,CAAC;IACpD,MAAM,OAAO,GAA2B,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;IAC/E,IAAI,UAAU;QAAE,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,CAAC;IAEtD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,GAAG,IAAI,EAAE,EAAE;QAC3C,MAAM,EAAE,KAAK;QACb,OAAO;KACR,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,aAAa,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,EAAO,CAAC;AACzB,CAAC;AAED,+EAA+E;AAE/E,SAAS,cAAc,CAAC,KAAa,EAAE,OAA4C;IACjF,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACnF,OAAO,IAAI,CAAC,IAAI,CAAC;QACf,MAAM,EAAE;YACN,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,KAAK;YACX,WAAW,EAAE,sBAAsB,KAAK,EAAE;YAC1C,cAAc,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE;YACnC,OAAO,EAAE,QAAQ;YACjB,cAAc,EAAE,OAAO,CAAC,MAAM,IAAI,2BAA2B;SAC9D;QACD,QAAQ,EAAE;YACR,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,EAAE;YACxE,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,kBAAkB,EAAE;SAC5E;QACD,QAAQ,EAAE;YACR;gBACE,EAAE,EAAE,GAAG,IAAI,QAAQ;gBACnB,IAAI,EAAE,mBAAmB,KAAK,EAAE;gBAChC,OAAO,EAAE,aAAa;gBACtB,UAAU,EAAE,CAAC;gBACb,gBAAgB,EAAE,EAAE;gBACpB,IAAI,EAAE,CAAC,cAAc,CAAC;gBACtB,aAAa,EAAE,EAAE;gBACjB,eAAe,EAAE,EAAE;aACpB;SACF;KACF,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,aAAa,CAAC,KAAa,EAAE,OAA6D;IACjG,MAAM,aAAa,GAA0E;QAC3F,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,2BAA2B,EAAE,QAAQ,EAAE,2CAA2C,EAAE;QAC1H,UAAU,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,2BAA2B,EAAE,QAAQ,EAAE,iDAAiD,EAAE;QACpI,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,2BAA2B,EAAE,QAAQ,EAAE,uCAAuC,EAAE;QACrH,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,qDAAqD,EAAE;QAC5H,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,6BAA6B,EAAE,QAAQ,EAAE,2CAA2C,EAAE;QACzH,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,kCAAkC,EAAE;KACvG,CAAC;IAEF,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;IAChE,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACrG,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC;IACzF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,GAAG,IAAI,cAAc,CAAC;IAEvD,OAAO,IAAI,CAAC,IAAI,CAAC;QACf,KAAK,EAAE;YACL,EAAE,EAAE,IAAI;YACR,IAAI;YACJ,MAAM;YACN,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,qBAAqB;SAClD;QACD,KAAK,EAAE;YACL,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,QAAQ;SACjB;QACD,OAAO,EAAE;YACP,IAAI,EAAE;gBACJ,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,WAAW,EAAE,GAAG,IAAI,6DAA6D;gBACjF,OAAO,EAAE,gBAAgB;aAC1B;YACD,QAAQ,EAAE;gBACR,OAAO,EAAE,gBAAgB;gBACzB,KAAK,EAAE;oBACL,EAAE,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,wCAAwC,EAAE,IAAI,EAAE,OAAO,EAAE;oBACpG,EAAE,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,gDAAgD,EAAE,IAAI,EAAE,OAAO,EAAE;oBAC5G,EAAE,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,6BAA6B,EAAE,IAAI,EAAE,OAAO,EAAE;iBAC1F;aACF;YACD,UAAU,EAAE;gBACV,OAAO,EAAE,cAAc;gBACvB,KAAK,EAAE;oBACL,EAAE,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,iCAAiC,EAAE;oBAC9E,EAAE,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,mCAAmC,EAAE;oBAC/E,EAAE,KAAK,EAAE,qBAAqB,EAAE,WAAW,EAAE,8CAA8C,EAAE;iBAC9F;aACF;YACD,GAAG,EAAE,EAAE;SACR;QACD,GAAG,EAAE;YACH,KAAK,EAAE,GAAG,IAAI,sBAAsB;YACpC,WAAW,EAAE,MAAM,CAAC,OAAO;YAC3B,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC;SACvD;KACF,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AACvC,CAAC;AAMD,SAAS,cAAc,CAAC,IAAa;IACnC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC3D,MAAM,GAAG,GAAG,IAA+B,CAAC;IAC5C,IAAI,QAAQ,IAAI,GAAG;QAAE,OAAO,QAAQ,CAAC;IACrC,IAAI,OAAO,IAAI,GAAG;QAAE,OAAO,OAAO,CAAC;IACnC,IAAI,SAAS,IAAI,GAAG;QAAE,OAAO,SAAS,CAAC;IACvC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,YAAY,CAAC,QAAwD;IAC5E,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,SAAS,GAAG,CAAC,IAAY,EAAE,IAAc;QACvC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAEpC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEhB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACxC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACrB,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CAAC,OAAe;IACnC,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,qBAAqB,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAC3E,CAAC;IAED,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,+EAA+E,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAChI,CAAC;IAED,MAAM,SAAS,GAAG;QAChB,MAAM,EAAE,yBAAgB;QACxB,KAAK,EAAE,wBAAe;QACtB,OAAO,EAAE,8BAAqB;KAC/B,CAAC;IAEF,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAElD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CACpC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAC3C,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACvD,CAAC;IAED,8BAA8B;IAC9B,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,IAAI,KAAK,GAA4B,EAAE,QAAQ,EAAE,CAAC;IAElD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAqH,CAAC;QAC1I,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAE3D,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;gBAC3C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC5B,SAAS,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,EAAE,+BAA+B,MAAM,GAAG,CAAC,CAAC;gBACjF,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,YAAY,CACzB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CACzE,CAAC;QACF,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QAE1B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACpF,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CACvC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,EAChF,CAAC,CACF,CAAC;QAEF,KAAK,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzG,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC9D,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;AACtD,CAAC;AAED,+EAA+E;AAE/E,SAAS,eAAe,CAAC,GAAY;IACnC,MAAM,MAAM,GAAG,yBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAChD,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACnF,OAAO;QACL,KAAK,EAAE,aAAa;QACpB,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,qBAAqB,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE;KACzI,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAgB;IAC7C,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YACzC,KAAK,MAAM,OAAO,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;gBAClC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;oBACzB,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBAC9B,CAAC;gBACD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACvD,CAAC;IACD,OAAO;QACL,KAAK,EAAE,oBAAoB;QAC3B,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,0BAA0B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;KAC3D,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAgB;IAC/C,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC3C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,EAAE,OAAO,MAAM,EAAE,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,KAAK,EAAE,qBAAqB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACxD,CAAC;IACD,OAAO;QACL,KAAK,EAAE,qBAAqB;QAC5B,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,0BAA0B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;KACxD,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AACpF,CAAC;AAED,SAAS,0BAA0B,CAAC,IAAgB;IAClD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAiC,CAAC;IACtD,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YACzC,KAAK,MAAM,OAAO,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;gBAClC,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACnD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACxF,MAAM,GAAG,GAAG,GAAG,IAAI,KAAK,OAAO,CAAC,UAAU,IAAI,MAAM,EAAE,CAAC;gBAEvD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC/B,IAAI,QAAQ,EAAE,CAAC;oBACb,UAAU,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,EAAE,oBAAoB,QAAQ,CAAC,SAAS,2CAA2C,CAAC,CAAC;gBACnH,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,KAAK,EAAE,wBAAwB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC3D,CAAC;IACD,OAAO;QACL,KAAK,EAAE,wBAAwB;QAC/B,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;KAChH,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAgB;IAChD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,IAAI,OAAO,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAEnD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;QACvC,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YACzC,KAAK,MAAM,OAAO,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;gBAClC,IAAI,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;oBAC/B,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACnD,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,EAAE,0BAA0B,YAAY,CAAC,IAAI,gCAAgC,CAAC,CAAC;QAC3G,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACzD,CAAC;IACD,OAAO;QACL,KAAK,EAAE,sBAAsB;QAC7B,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1G,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACjG,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAgB;IACjD,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAuB,CAAC;IAExD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YACzC,KAAK,MAAM,OAAO,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;gBAClC,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC7C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;wBAChC,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;oBACxC,CAAC;oBACD,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,gBAAgB,EAAE,CAAC;QAChD,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,oBAAoB,QAAQ,CAAC,IAAI,WAAW,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;QAC1B,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;QAChF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;QAC5E,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW;QACtE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ;KAChD,CAAC,CAAC;IAEH,MAAM,kBAAkB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QACnD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACjD,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,EAAE,KAAK,EAAE,wBAAwB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC3D,CAAC;IACD,OAAO;QACL,KAAK,EAAE,wBAAwB;QAC/B,MAAM,EAAE,kBAAkB,CAAC,MAAM,IAAI,CAAC;QACtC,OAAO,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,kBAAkB,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;KACxI,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAgB;IAChD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,IAAI,OAAO,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAEnD,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YACzC,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,MAAM,uBAAuB,CAAC,CAAC;YAC3F,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,KAAK,EAAE,uBAAuB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC1D,CAAC;IACD,OAAO;QACL,KAAK,EAAE,uBAAuB;QAC9B,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1G,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CAAC,IAAgB;IAClD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YACzC,IAAI,CAAC,EAAE,CAAC,WAAW;gBAAE,SAAS;YAC9B,IAAI,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,4BAA4B,CAAC;gBAAE,SAAS;YAEjE,MAAM,SAAS,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;YACrE,MAAM,gBAAgB,GAAG,EAAE,CAAC,kBAAkB,IAAI,EAAE,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;YAEnF,IAAI,SAAS,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACzC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,oBAAoB,SAAS,+BAA+B,CAAC,CAAC;YACrG,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,KAAK,EAAE,wBAAwB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC3D,CAAC;IACD,OAAO;QACL,KAAK,EAAE,wBAAwB;QAC/B,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1G,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CAAC,IAAgB;IAClD,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACnF,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,KAAK,EAAE,yBAAyB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC5D,CAAC;IAED,MAAM,YAAY,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACjD,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,aAAa,IAAI,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CACvF,CAAC;IAEF,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC;IAC/D,IAAI,QAAQ,IAAI,GAAG,EAAE,CAAC;QACpB,OAAO,EAAE,KAAK,EAAE,yBAAyB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC5D,CAAC;IACD,OAAO;QACL,KAAK,EAAE,yBAAyB;QAChC,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,GAAG,YAAY,CAAC,MAAM,IAAI,gBAAgB,CAAC,MAAM,4CAA4C,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,gBAAgB;KACjJ,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAgB;IACzC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC3C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5B,MAAM,CAAC,IAAI,CAAC,yBAAyB,OAAO,CAAC,EAAE,OAAO,MAAM,EAAE,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,SAAS,QAAQ,CAAC,IAAY,EAAE,IAAc;QAC5C,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAEpC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEhB,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACxC,IAAI,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;gBACxB,UAAU,GAAG,IAAI,CAAC;YACpB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrB,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACrB,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACnD,CAAC;IACD,OAAO;QACL,KAAK,EAAE,gBAAgB;QACvB,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;KAC3B,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,OAAe;IAChC,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvD,OAAO;YACL,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,MAAM;YACb,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,qBAAqB,GAAG,EAAE,EAAE,CAAC;YACxF,QAAQ,EAAE,EAAE;YACZ,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE;SAClF,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAyB,EAAE,CAAC;IACxC,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAExB,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QACvB,OAAO;YACL,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,MAAM;YACb,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACzC,QAAQ,EAAE,EAAE;YACZ,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE;SAClF,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,yBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEzC,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACnF,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IACjF,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAChF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CACnC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,EAChF,CAAC,CACF,CAAC;IAEF,MAAM,KAAK,GAAG;QACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;QAC9B,GAAG;QACH,QAAQ;QACR,gBAAgB,EAAE,gBAAgB,CAAC,MAAM;QACzC,YAAY,EAAE,YAAY,CAAC,MAAM;KAClC,CAAC;IAEF,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5C,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5C,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;IAErC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;IAC1D,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAEjD,OAAO;QACL,MAAM,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC;QAC7B,KAAK,EAAE,GAAG,WAAW,KAAK;QAC1B,QAAQ;QACR,QAAQ,EAAE,EAAE;QACZ,KAAK;KACN,CAAC;AACJ,CAAC;AAED,+EAA+E;AAE/E,SAAS,iBAAiB,CAAC,QAAgC;IACzD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEvC,SAAS,KAAK,CAAC,EAAU,EAAE,OAAoB;QAC7C,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC;QACvC,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,OAAO,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtB,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QAED,MAAM,CAAC,GAAG,cAAc,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAChB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,cAAc,CAAC,OAAe;IACrC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,yBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,wBAAwB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,eAAe,EAAE,CAAC,CAAC;IAChG,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAE/B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC9E,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IAE5E,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC/E,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAClC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,EAChF,CAAC,CACF,CAAC;IAEF,MAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAE/C,MAAM,kBAAkB,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACzD,MAAM,kBAAkB,GAAa,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,KAAK,MAAM,EAAE,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;YACnC,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,gBAAgB,GAAgF,EAAE,CAAC;IACzG,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC;YACzE,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACnF,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CACtC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,EAChF,CAAC,CACF,CAAC;YACF,gBAAgB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;QACnH,CAAC;QAED,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC/E,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAClC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,EAChF,CAAC,CACF,CAAC;YACF,gBAAgB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;QACpH,CAAC;IACH,CAAC;IAED,OAAO;QACL,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;QAC5B,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;QACxB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;QAC5B,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc;QAC1C,QAAQ,EAAE,QAAQ,CAAC,MAAM;QACzB,gBAAgB,EAAE,gBAAgB,CAAC,MAAM;QACzC,YAAY,EAAE,YAAY,CAAC,MAAM;QACjC,eAAe,EAAE,OAAO;QACxB,QAAQ,EAAE,YAAY;QACtB,UAAU;QACV,kBAAkB,EAAE,kBAAkB,CAAC,MAAM;QAC7C,sBAAsB,EAAE,kBAAkB;QAC1C,kBAAkB,EAAE,kBAAkB,CAAC,MAAM;QAC7C,sBAAsB,EAAE,kBAAkB;QAC1C,QAAQ,EAAE,gBAAgB;KAC3B,CAAC;AACJ,CAAC;AAED,gFAAgF;AAEhF,SAAS,WAAW,CAAC,OAAe,EAAE,SAAiB,EAAE,OAAiD;IACxG,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,yBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,wBAAwB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,eAAe,EAAE,CAAC,CAAC;IAChG,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;IAC9D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,YAAY,SAAS,2BAA2B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/G,CAAC;IAED,IAAI,OAAO,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,YAAY,SAAS,iBAAiB,OAAO,CAAC,eAAe,CAAC,MAAM,0CAA0C,CAAC,CAAC;IAClI,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IACjC,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,CAAC,CAAC;IAEjD,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,QAAQ,CAAC,IAAI,CAAC;gBACZ,EAAE,EAAE,GAAG,SAAS,MAAM,CAAC,KAAK,CAAC,EAAE;gBAC/B,IAAI,EAAE,iBAAiB;gBACvB,QAAQ,EAAE,wBAAwB,CAAC,QAAQ,SAAS,MAAM,CAAC,EAAE;gBAC7D,OAAO,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC;gBACzD,OAAO,EAAE,CAAC;gBACV,WAAW,EAAE,kCAAkC;gBAC/C,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;aAC/B,CAAC,CAAC;QACL,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,GAAG,SAAS,MAAM,CAAC,EAAE;YACzB,WAAW,EAAE,+BAA+B,OAAO,CAAC,IAAI,sBAAsB,CAAC,EAAE;YACjF,aAAa,EAAE,oCAAoC,OAAO,CAAC,IAAI,sBAAsB,CAAC,EAAE;YACxF,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;IAED,+CAA+C;IAC/C,MAAM,MAAM,GAAG,GAA8B,CAAC;IAC9C,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAmC,CAAC;IACtE,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC;IAClE,IAAI,aAAa,EAAE,CAAC;QAClB,aAAa,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAAC;IAC5C,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7D,CAAC;AAcD,MAAM,KAAK,GAAc;IACvB;QACE,IAAI,EAAE,0BAA0B;QAChC,WAAW,EAAE;;;;;;;;;;2EAU0D;QACvE,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uEAAuE,EAAE;gBAC/G,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4CAA4C,EAAE;gBAC7F,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yDAAyD,EAAE;aAC3G;YACD,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB;KACF;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE;;;;;;;;;;;;;yEAawD;QACrE,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6BAA6B,EAAE;gBACpE,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mEAAmE,EAAE;gBAC/G,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE;gBAC9E,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6CAA6C,EAAE;aAC9F;YACD,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;SAChC;KACF;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE;;;;;;;;;8DAS6C;QAC1D,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kEAAkE,EAAE;aAC1G;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;KACF;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EAAE;;;;;;;;;;;;;;+FAc8E;QAC3F,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uCAAuC,EAAE;aAC/E;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;KACF;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EAAE;;;;;;uDAMsC;QACnD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uCAAuC,EAAE;gBAC9E,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2CAA2C,EAAE;gBACjF,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,iEAAiE,EAAE;aAC7G;YACD,QAAQ,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;SAC1B;KACF;IACD;QACE,IAAI,EAAE,yBAAyB;QAC/B,WAAW,EAAE;;;;iCAIgB;QAC7B,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iCAAiC,EAAE;gBAC5E,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE;aAC1D;YACD,QAAQ,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC;SAC9B;KACF;IACD;QACE,IAAI,EAAE,0BAA0B;QAChC,WAAW,EAAE;;;;;;;;;yEASwD;QACrE,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6BAA6B,EAAE;aACrE;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;KACF;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE;;;;;;;;;;wEAUuD;QACpE,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6DAA6D,EAAE;gBACrG,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yCAAyC,EAAE;gBAChF,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+CAA+C,EAAE;gBACxF,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qCAAqC,EAAE;aAChF;YACD,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB;KACF;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE;;;;8CAI6B;QAC1C,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sCAAsC,EAAE;aAC9E;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;KACF;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE;;;;gFAI+D;QAC5E,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2CAA2C,EAAE;aAClF;YACD,QAAQ,EAAE,CAAC,KAAK,CAAC;SAClB;KACF;CACF,CAAC;AASF,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAC/C,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC9D,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,IAA6B;IACvE,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,0BAA0B,CAAC,CAAC,CAAC;YAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAe,CAAC;YACnC,MAAM,cAAc,GAAG,IAAI,CAAC,cAAoC,CAAC;YACjE,MAAM,cAAc,GAAG,IAAI,CAAC,cAAoC,CAAC;YACjE,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;YAC7F,UAAU,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC,CAAC;YAC5E,OAAO,UAAU,CAAC,WAAW,CAAC,CAAC;QACjC,CAAC;QAED,KAAK,uBAAuB,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,IAAI,CAAC,SAAmB,CAAC;gBAC3C,MAAM,WAAW,GAAG,WAAW,CAC7B,IAAI,CAAC,IAAc,EACnB,SAAS,EACT,EAAE,GAAG,EAAE,IAAI,CAAC,GAAyB,EAAE,aAAa,EAAE,IAAI,CAAC,aAAmC,EAAE,CACjG,CAAC;gBACF,UAAU,CAAC,gBAAgB,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;gBACxD,OAAO,UAAU,CAAC,WAAW,CAAC,CAAC;YACjC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,WAAW,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;QAED,KAAK,mBAAmB,CAAC,CAAC,CAAC;YACzB,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,IAAc,CAAC,CAAC;YACjD,UAAU,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YACvH,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACrD,CAAC;QAED,KAAK,wBAAwB,CAAC,CAAC,CAAC;YAC9B,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,IAAc,CAAC,CAAC;YAC9C,UAAU,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAC9E,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACrD,CAAC;QAED,KAAK,wBAAwB,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC;gBACH,cAAc,EAAE,CAAC;gBACjB,MAAM,MAAM,GAAG,MAAM,OAAO,CAC1B,gBAAgB,IAAI,CAAC,GAAG,iBAAiB,EACzC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,KAAK,EAAE,CACpD,CAAC;gBACF,UAAU,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;gBAC1G,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACrD,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,WAAW,CAAC,kBAAkB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACrF,CAAC;QACH,CAAC;QAED,KAAK,yBAAyB,CAAC,CAAC,CAAC;YAC/B,IAAI,CAAC;gBACH,cAAc,EAAE,CAAC;gBACjB,MAAM,MAAM,GAAG,MAAM,OAAO,CAC1B,gBAAgB,IAAI,CAAC,GAAG,YAAY,IAAI,CAAC,QAAQ,UAAU,EAC3D,EAAE,CACH,CAAC;gBACF,UAAU,CAAC,kBAAkB,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;gBAC3G,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACrD,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,WAAW,CAAC,mBAAmB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACtF,CAAC;QACH,CAAC;QAED,KAAK,0BAA0B,CAAC,CAAC,CAAC;YAChC,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,IAAc,CAAC,CAAC;gBAClD,UAAU,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;gBACtC,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACpD,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,WAAW,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;QAED,KAAK,uBAAuB,CAAC,CAAC,CAAC;YAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAe,CAAC;YACnC,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,EAAE;gBACvC,IAAI,EAAE,IAAI,CAAC,IAA0B;gBACrC,MAAM,EAAE,IAAI,CAAC,MAA4B;gBACzC,OAAO,EAAE,IAAI,CAAC,OAA6B;aAC5C,CAAC,CAAC;YACH,UAAU,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1C,OAAO,UAAU,CAAC,WAAW,CAAC,CAAC;QACjC,CAAC;QAED,KAAK,uBAAuB,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC;gBACH,cAAc,EAAE,CAAC;gBACjB,IAAI,GAAY,CAAC;gBACjB,IAAI,CAAC;oBACH,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAc,CAAC,CAAC;gBACvC,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACrF,CAAC;gBACD,uEAAuE;gBACvE,MAAM,MAAM,GAAG,GAA8B,CAAC;gBAC9C,MAAM,YAAY,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAA4B,CAAC;gBACrE,MAAM,GAAG,GAAG;oBACV,IAAI,EAAE,YAAY,CAAC,EAAE,IAAI,YAAY,CAAC,IAAI;oBAC1C,IAAI,EAAE,YAAY,CAAC,IAAI;oBACvB,MAAM,EAAE,YAAY,CAAC,MAAM;oBAC3B,OAAO,EAAE,YAAY,CAAC,OAAO,IAAI,EAAE;oBACnC,OAAO,EAAG,YAAY,CAAC,OAAkB,IAAI,WAAW;oBACxD,OAAO,EAAE,YAAY,CAAC,OAAO;oBAC7B,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;oBACzB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;oBAC7B,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,EAAE;oBACrB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;iBAC9B,CAAC;gBACF,MAAM,MAAM,GAAG,MAAM,OAAO,CAC1B,gBAAgB,EAChB,GAAG,CACJ,CAAC;gBACF,UAAU,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC3E,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACrD,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,WAAW,CAAC,wBAAwB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC3F,CAAC;QACH,CAAC;QAED,KAAK,uBAAuB,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC;gBACH,cAAc,EAAE,CAAC;gBACjB,MAAM,MAAM,GAAG,MAAM,MAAM,CACzB,gBAAgB,IAAI,CAAC,GAAG,UAAU,CACnC,CAAC;gBACF,UAAU,CAAC,gBAAgB,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;gBACtE,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACrD,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,WAAW,CAAC,gBAAgB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACnF,CAAC;QACH,CAAC;QAED;YACE,OAAO,WAAW,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED,+EAA+E;AAE/E,MAAM,MAAM,GAAG,IAAI,iBAAM,CACvB;IACE,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,OAAO;CACjB,EACD;IACE,YAAY,EAAE;QACZ,KAAK,EAAE,EAAE;KACV;CACF,CACF,CAAC;AAEF,MAAM,CAAC,iBAAiB,CAAC,iCAAsB,EAAE,KAAK,IAAI,EAAE;IAC1D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,iBAAiB,CAAC,gCAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IACjD,OAAO,cAAc,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEH,+EAA+E;AAE/E,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,+BAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,QAAQ;IACrB,IAAI,aAAa;QAAE,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAC;IAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAChC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@graspful/mcp",
3
- "version": "0.2.3",
3
+ "version": "0.2.4",
4
4
  "description": "MCP server for Graspful — create adaptive learning courses from AI agents",
5
5
  "keywords": ["mcp", "mcp-server", "graspful", "course", "course-creation", "adaptive-learning", "ai-agent", "knowledge-graph", "spaced-repetition", "edtech", "education", "yaml", "lms", "model-context-protocol"],
6
6
  "repository": {
@@ -19,7 +19,7 @@
19
19
  "dev": "bun x tsc --watch"
20
20
  },
21
21
  "dependencies": {
22
- "@graspful/shared": "workspace:*",
22
+ "@graspful/shared": "^0.2.3",
23
23
  "@modelcontextprotocol/sdk": "^1.27.1",
24
24
  "js-yaml": "^4.1.0",
25
25
  "posthog-node": "^5.28.8",