mcard-js 2.1.1 → 2.1.2

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 (45) hide show
  1. package/README.md +82 -2
  2. package/dist/index.d.ts +2 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +3 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/ptr/lambda/AlphaConversion.d.ts +42 -0
  7. package/dist/ptr/lambda/AlphaConversion.d.ts.map +1 -0
  8. package/dist/ptr/lambda/AlphaConversion.js +244 -0
  9. package/dist/ptr/lambda/AlphaConversion.js.map +1 -0
  10. package/dist/ptr/lambda/BetaReduction.d.ts +73 -0
  11. package/dist/ptr/lambda/BetaReduction.d.ts.map +1 -0
  12. package/dist/ptr/lambda/BetaReduction.js +322 -0
  13. package/dist/ptr/lambda/BetaReduction.js.map +1 -0
  14. package/dist/ptr/lambda/EtaConversion.d.ts +65 -0
  15. package/dist/ptr/lambda/EtaConversion.d.ts.map +1 -0
  16. package/dist/ptr/lambda/EtaConversion.js +228 -0
  17. package/dist/ptr/lambda/EtaConversion.js.map +1 -0
  18. package/dist/ptr/lambda/FreeVariables.d.ts +44 -0
  19. package/dist/ptr/lambda/FreeVariables.d.ts.map +1 -0
  20. package/dist/ptr/lambda/FreeVariables.js +207 -0
  21. package/dist/ptr/lambda/FreeVariables.js.map +1 -0
  22. package/dist/ptr/lambda/LambdaRuntime.d.ts +80 -0
  23. package/dist/ptr/lambda/LambdaRuntime.d.ts.map +1 -0
  24. package/dist/ptr/lambda/LambdaRuntime.js +417 -0
  25. package/dist/ptr/lambda/LambdaRuntime.js.map +1 -0
  26. package/dist/ptr/lambda/LambdaTerm.d.ts +95 -0
  27. package/dist/ptr/lambda/LambdaTerm.d.ts.map +1 -0
  28. package/dist/ptr/lambda/LambdaTerm.js +159 -0
  29. package/dist/ptr/lambda/LambdaTerm.js.map +1 -0
  30. package/dist/ptr/lambda/index.d.ts +24 -0
  31. package/dist/ptr/lambda/index.d.ts.map +1 -0
  32. package/dist/ptr/lambda/index.js +34 -0
  33. package/dist/ptr/lambda/index.js.map +1 -0
  34. package/dist/ptr/node/CLMRunner.d.ts +30 -0
  35. package/dist/ptr/node/CLMRunner.d.ts.map +1 -1
  36. package/dist/ptr/node/CLMRunner.js +167 -0
  37. package/dist/ptr/node/CLMRunner.js.map +1 -1
  38. package/dist/ptr/node/Runtimes.d.ts +8 -1
  39. package/dist/ptr/node/Runtimes.d.ts.map +1 -1
  40. package/dist/ptr/node/Runtimes.js +8 -1
  41. package/dist/ptr/node/Runtimes.js.map +1 -1
  42. package/dist/storage/schema.d.ts.map +1 -1
  43. package/dist/storage/schema.js +5 -1
  44. package/dist/storage/schema.js.map +1 -1
  45. package/package.json +6 -2
@@ -0,0 +1,417 @@
1
+ /**
2
+ * Lambda Runtime - PTR Runtime for Lambda Calculus
3
+ *
4
+ * Implements α-β-η conversions as a PTR runtime, treating MCard hashes
5
+ * as Lambda terms and performing computations that produce new MCards.
6
+ *
7
+ * This runtime can be used via CLM specifications to define and verify
8
+ * Lambda Calculus reductions.
9
+ *
10
+ * @module mcard-js/ptr/lambda/LambdaRuntime
11
+ */
12
+ // Import conversions
13
+ import { alphaRename, alphaEquivalent, alphaNormalize } from './AlphaConversion';
14
+ import { betaReduce, normalize, reduceStep, isNormalForm } from './BetaReduction';
15
+ import { etaReduce, etaExpand, etaNormalize, etaEquivalent } from './EtaConversion';
16
+ import { freeVariables, isClosed } from './FreeVariables';
17
+ import { storeTerm, mkVar, mkAbs, mkApp, prettyPrintDeep } from './LambdaTerm';
18
+ // ─────────────────────────────────────────────────────────────────────────────
19
+ // Lambda Runtime Class
20
+ // ─────────────────────────────────────────────────────────────────────────────
21
+ /**
22
+ * Lambda Calculus Runtime for PTR
23
+ *
24
+ * Executes Lambda Calculus operations on MCard-stored terms.
25
+ */
26
+ export class LambdaRuntime {
27
+ collection;
28
+ constructor(collection) {
29
+ this.collection = collection;
30
+ }
31
+ /**
32
+ * Execute a Lambda operation
33
+ *
34
+ * @param codeOrPath - For Lambda runtime, this is the term hash to operate on
35
+ * @param context - Additional context (varies by operation)
36
+ * @param config - Lambda configuration with operation type
37
+ * @param chapterDir - Chapter directory (used for relative paths if needed)
38
+ */
39
+ async execute(codeOrPath, context, config, chapterDir) {
40
+ const termHash = codeOrPath;
41
+ const lambdaConfig = config;
42
+ const ctx = (context && typeof context === 'object')
43
+ ? context
44
+ : {};
45
+ try {
46
+ switch (lambdaConfig.operation) {
47
+ case 'alpha':
48
+ return this.doAlphaRename(termHash, lambdaConfig, ctx);
49
+ case 'beta':
50
+ return this.doBetaReduce(termHash);
51
+ case 'eta-reduce':
52
+ return this.doEtaReduce(termHash);
53
+ case 'eta-expand':
54
+ return this.doEtaExpand(termHash, lambdaConfig, ctx);
55
+ case 'normalize':
56
+ return this.doNormalize(termHash, lambdaConfig);
57
+ case 'step':
58
+ return this.doStep(termHash, lambdaConfig);
59
+ case 'alpha-equiv':
60
+ return this.doAlphaEquiv(termHash, lambdaConfig, ctx);
61
+ case 'eta-equiv':
62
+ return this.doEtaEquiv(termHash, lambdaConfig, ctx);
63
+ case 'alpha-norm':
64
+ return this.doAlphaNormalize(termHash);
65
+ case 'eta-norm':
66
+ return this.doEtaNormalize(termHash);
67
+ case 'free-vars':
68
+ return this.doFreeVars(termHash);
69
+ case 'is-closed':
70
+ return this.doIsClosed(termHash);
71
+ case 'is-normal':
72
+ return this.doIsNormal(termHash);
73
+ case 'parse':
74
+ return this.doParse(ctx);
75
+ case 'pretty':
76
+ return this.doPretty(termHash);
77
+ case 'build':
78
+ return this.doBuild(ctx);
79
+ default:
80
+ return {
81
+ success: false,
82
+ error: `Unknown Lambda operation: ${lambdaConfig.operation}`
83
+ };
84
+ }
85
+ }
86
+ catch (err) {
87
+ return {
88
+ success: false,
89
+ error: err instanceof Error ? err.message : String(err)
90
+ };
91
+ }
92
+ }
93
+ // ─────────────────────────────────────────────────────────────────────────
94
+ // Operation Implementations
95
+ // ─────────────────────────────────────────────────────────────────────────
96
+ async doAlphaRename(termHash, config, ctx) {
97
+ const newName = config.newName || ctx.newName;
98
+ if (!newName) {
99
+ return { success: false, error: 'Alpha rename requires newName parameter' };
100
+ }
101
+ const result = await alphaRename(this.collection, termHash, newName).run();
102
+ if (result.isLeft) {
103
+ return { success: false, error: result.left };
104
+ }
105
+ const pretty = await prettyPrintDeep(this.collection, result.right);
106
+ return {
107
+ success: true,
108
+ result: result.right,
109
+ termHash: result.right,
110
+ prettyPrint: pretty
111
+ };
112
+ }
113
+ async doBetaReduce(termHash) {
114
+ const result = await betaReduce(this.collection, termHash).run();
115
+ if (result.isLeft) {
116
+ return { success: false, error: result.left };
117
+ }
118
+ const pretty = await prettyPrintDeep(this.collection, result.right);
119
+ return {
120
+ success: true,
121
+ result: result.right,
122
+ termHash: result.right,
123
+ prettyPrint: pretty
124
+ };
125
+ }
126
+ async doEtaReduce(termHash) {
127
+ const result = await etaReduce(this.collection, termHash).run();
128
+ if (result.isNothing) {
129
+ return { success: false, error: 'Not an η-redex' };
130
+ }
131
+ const pretty = await prettyPrintDeep(this.collection, result.value);
132
+ return {
133
+ success: true,
134
+ result: result.value,
135
+ termHash: result.value,
136
+ prettyPrint: pretty
137
+ };
138
+ }
139
+ async doEtaExpand(termHash, config, ctx) {
140
+ const freshVar = config.freshVar || ctx.freshVar || 'x';
141
+ const result = await etaExpand(this.collection, termHash, freshVar).run();
142
+ const pretty = await prettyPrintDeep(this.collection, result);
143
+ return {
144
+ success: true,
145
+ result: result,
146
+ termHash: result,
147
+ prettyPrint: pretty
148
+ };
149
+ }
150
+ async doNormalize(termHash, config) {
151
+ const strategy = config.strategy || 'normal';
152
+ const maxSteps = config.maxSteps || 1000;
153
+ const result = await normalize(this.collection, termHash, strategy, maxSteps).run();
154
+ if (result.isLeft) {
155
+ return { success: false, error: result.left };
156
+ }
157
+ const normResult = result.right;
158
+ const pretty = await prettyPrintDeep(this.collection, normResult.normalForm);
159
+ return {
160
+ success: true,
161
+ result: {
162
+ normalForm: normResult.normalForm,
163
+ steps: normResult.steps,
164
+ reductionPath: normResult.reductionPath
165
+ },
166
+ termHash: normResult.normalForm,
167
+ prettyPrint: pretty
168
+ };
169
+ }
170
+ async doStep(termHash, config) {
171
+ const strategy = config.strategy || 'normal';
172
+ const result = await reduceStep(this.collection, termHash, strategy).run();
173
+ if (result.isNothing) {
174
+ return {
175
+ success: true,
176
+ result: { alreadyNormal: true },
177
+ termHash: termHash,
178
+ prettyPrint: await prettyPrintDeep(this.collection, termHash)
179
+ };
180
+ }
181
+ const pretty = await prettyPrintDeep(this.collection, result.value);
182
+ return {
183
+ success: true,
184
+ result: result.value,
185
+ termHash: result.value,
186
+ prettyPrint: pretty
187
+ };
188
+ }
189
+ async doAlphaEquiv(termHash, config, ctx) {
190
+ const compareWith = config.compareWith || ctx.compareWith;
191
+ if (!compareWith) {
192
+ return { success: false, error: 'Alpha equivalence check requires compareWith parameter' };
193
+ }
194
+ const result = await alphaEquivalent(this.collection, termHash, compareWith).run();
195
+ if (result.isLeft) {
196
+ return { success: false, error: result.left };
197
+ }
198
+ return {
199
+ success: true,
200
+ result: { equivalent: result.right }
201
+ };
202
+ }
203
+ async doEtaEquiv(termHash, config, ctx) {
204
+ const compareWith = config.compareWith || ctx.compareWith;
205
+ if (!compareWith) {
206
+ return { success: false, error: 'Eta equivalence check requires compareWith parameter' };
207
+ }
208
+ const result = await etaEquivalent(this.collection, termHash, compareWith).run();
209
+ return {
210
+ success: true,
211
+ result: { equivalent: result }
212
+ };
213
+ }
214
+ async doAlphaNormalize(termHash) {
215
+ const result = await alphaNormalize(this.collection, termHash).run();
216
+ if (result.isLeft) {
217
+ return { success: false, error: result.left };
218
+ }
219
+ const pretty = await prettyPrintDeep(this.collection, result.right);
220
+ return {
221
+ success: true,
222
+ result: result.right,
223
+ termHash: result.right,
224
+ prettyPrint: pretty
225
+ };
226
+ }
227
+ async doEtaNormalize(termHash) {
228
+ const result = await etaNormalize(this.collection, termHash).run();
229
+ const pretty = await prettyPrintDeep(this.collection, result);
230
+ return {
231
+ success: true,
232
+ result: result,
233
+ termHash: result,
234
+ prettyPrint: pretty
235
+ };
236
+ }
237
+ async doFreeVars(termHash) {
238
+ const result = await freeVariables(this.collection, termHash).run();
239
+ if (result.isNothing) {
240
+ return { success: false, error: `Term not found: ${termHash}` };
241
+ }
242
+ return {
243
+ success: true,
244
+ result: { freeVariables: Array.from(result.value) }
245
+ };
246
+ }
247
+ async doIsClosed(termHash) {
248
+ const result = await isClosed(this.collection, termHash).run();
249
+ return {
250
+ success: true,
251
+ result: { closed: result }
252
+ };
253
+ }
254
+ async doIsNormal(termHash) {
255
+ const result = await isNormalForm(this.collection, termHash).run();
256
+ return {
257
+ success: true,
258
+ result: { normalForm: result }
259
+ };
260
+ }
261
+ async doParse(ctx) {
262
+ const expression = ctx.expression;
263
+ if (!expression) {
264
+ return { success: false, error: 'Parse requires expression parameter' };
265
+ }
266
+ try {
267
+ const hash = await parseLambdaExpression(this.collection, expression);
268
+ const pretty = await prettyPrintDeep(this.collection, hash);
269
+ return {
270
+ success: true,
271
+ result: hash,
272
+ termHash: hash,
273
+ prettyPrint: pretty
274
+ };
275
+ }
276
+ catch (err) {
277
+ return {
278
+ success: false,
279
+ error: `Parse error: ${err instanceof Error ? err.message : String(err)}`
280
+ };
281
+ }
282
+ }
283
+ async doPretty(termHash) {
284
+ const pretty = await prettyPrintDeep(this.collection, termHash);
285
+ return {
286
+ success: true,
287
+ result: pretty,
288
+ prettyPrint: pretty
289
+ };
290
+ }
291
+ async doBuild(ctx) {
292
+ const spec = ctx.term;
293
+ if (!spec) {
294
+ return { success: false, error: 'Build requires term specification' };
295
+ }
296
+ const hash = await storeTerm(this.collection, spec);
297
+ const pretty = await prettyPrintDeep(this.collection, hash);
298
+ return {
299
+ success: true,
300
+ result: hash,
301
+ termHash: hash,
302
+ prettyPrint: pretty
303
+ };
304
+ }
305
+ }
306
+ // ─────────────────────────────────────────────────────────────────────────────
307
+ // Simple Parser for Lambda Expressions
308
+ // ─────────────────────────────────────────────────────────────────────────────
309
+ /**
310
+ * Parse a simple Lambda expression string into MCards
311
+ *
312
+ * Syntax:
313
+ * x, y, z - Variables
314
+ * \x.M or λx.M - Abstraction
315
+ * (M N) - Application
316
+ * M N - Application (left-associative)
317
+ *
318
+ * Examples:
319
+ * \x.x - Identity function
320
+ * \f.\x.f x - Application combinator
321
+ * (\x.x) y - Identity applied to y
322
+ */
323
+ export async function parseLambdaExpression(collection, expression) {
324
+ const tokens = tokenize(expression);
325
+ let pos = 0;
326
+ function peek() {
327
+ return pos < tokens.length ? tokens[pos] : null;
328
+ }
329
+ function consume() {
330
+ if (pos >= tokens.length)
331
+ throw new Error('Unexpected end of expression');
332
+ return tokens[pos++];
333
+ }
334
+ function expect(token) {
335
+ const actual = consume();
336
+ if (actual !== token) {
337
+ throw new Error(`Expected '${token}', got '${actual}'`);
338
+ }
339
+ }
340
+ async function parseExpr() {
341
+ const terms = [];
342
+ while (peek() && peek() !== ')') {
343
+ terms.push(await parseTerm());
344
+ }
345
+ if (terms.length === 0) {
346
+ throw new Error('Empty expression');
347
+ }
348
+ // Left-associate applications: a b c = ((a b) c)
349
+ let result = terms[0];
350
+ for (let i = 1; i < terms.length; i++) {
351
+ const app = mkApp(result, terms[i]);
352
+ result = await storeTerm(collection, app);
353
+ }
354
+ return result;
355
+ }
356
+ async function parseTerm() {
357
+ const token = peek();
358
+ if (token === '\\' || token === 'λ') {
359
+ return parseAbstraction();
360
+ }
361
+ if (token === '(') {
362
+ consume(); // (
363
+ const expr = await parseExpr();
364
+ expect(')');
365
+ return expr;
366
+ }
367
+ // Variable
368
+ const name = consume();
369
+ if (!name.match(/^[a-zA-Z_][a-zA-Z0-9_']*$/)) {
370
+ throw new Error(`Invalid variable name: ${name}`);
371
+ }
372
+ const varTerm = mkVar(name);
373
+ return storeTerm(collection, varTerm);
374
+ }
375
+ async function parseAbstraction() {
376
+ consume(); // \ or λ
377
+ const param = consume();
378
+ if (!param.match(/^[a-zA-Z_][a-zA-Z0-9_']*$/)) {
379
+ throw new Error(`Invalid parameter name: ${param}`);
380
+ }
381
+ expect('.');
382
+ const body = await parseExpr();
383
+ const abs = mkAbs(param, body);
384
+ return storeTerm(collection, abs);
385
+ }
386
+ return parseExpr();
387
+ }
388
+ function tokenize(expression) {
389
+ const tokens = [];
390
+ let i = 0;
391
+ while (i < expression.length) {
392
+ const ch = expression[i];
393
+ // Skip whitespace
394
+ if (/\s/.test(ch)) {
395
+ i++;
396
+ continue;
397
+ }
398
+ // Single-character tokens
399
+ if ('()\\λ.'.includes(ch)) {
400
+ tokens.push(ch);
401
+ i++;
402
+ continue;
403
+ }
404
+ // Identifiers
405
+ if (/[a-zA-Z_]/.test(ch)) {
406
+ let name = '';
407
+ while (i < expression.length && /[a-zA-Z0-9_']/.test(expression[i])) {
408
+ name += expression[i++];
409
+ }
410
+ tokens.push(name);
411
+ continue;
412
+ }
413
+ throw new Error(`Unexpected character: ${ch}`);
414
+ }
415
+ return tokens;
416
+ }
417
+ //# sourceMappingURL=LambdaRuntime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LambdaRuntime.js","sourceRoot":"","sources":["../../../src/ptr/lambda/LambdaRuntime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Lambda Term - Algebraic Data Type for Lambda Calculus
3
+ *
4
+ * Represents Lambda Calculus terms as content-addressable MCards.
5
+ * Each term variant is stored as JSON in MCard content, with sub-terms
6
+ * referenced by their SHA-256 hashes for structural sharing.
7
+ *
8
+ * The three term constructors mirror the BNF grammar:
9
+ * M, N ::= x | λx.M | M N
10
+ *
11
+ * @module mcard-js/ptr/lambda/LambdaTerm
12
+ */
13
+ import { MCard } from '../../model/MCard';
14
+ import { CardCollection } from '../../model/CardCollection';
15
+ /**
16
+ * Variable term: x
17
+ */
18
+ export interface VarTerm {
19
+ readonly tag: 'Var';
20
+ readonly name: string;
21
+ }
22
+ /**
23
+ * Abstraction term: λx.M
24
+ * Body is stored as MCard hash for structural sharing
25
+ */
26
+ export interface AbsTerm {
27
+ readonly tag: 'Abs';
28
+ readonly param: string;
29
+ readonly body: string;
30
+ }
31
+ /**
32
+ * Application term: M N
33
+ * Both function and argument are MCard hashes
34
+ */
35
+ export interface AppTerm {
36
+ readonly tag: 'App';
37
+ readonly func: string;
38
+ readonly arg: string;
39
+ }
40
+ /**
41
+ * Union type for all Lambda terms
42
+ */
43
+ export type LambdaTerm = VarTerm | AbsTerm | AppTerm;
44
+ /**
45
+ * Create a variable term
46
+ */
47
+ export declare function mkVar(name: string): VarTerm;
48
+ /**
49
+ * Create an abstraction term
50
+ */
51
+ export declare function mkAbs(param: string, bodyHash: string): AbsTerm;
52
+ /**
53
+ * Create an application term
54
+ */
55
+ export declare function mkApp(funcHash: string, argHash: string): AppTerm;
56
+ /**
57
+ * Serialize a Lambda term to MCard content (JSON string)
58
+ */
59
+ export declare function serializeTerm(term: LambdaTerm): string;
60
+ /**
61
+ * Deserialize MCard content to Lambda term
62
+ */
63
+ export declare function deserializeTerm(content: string): LambdaTerm;
64
+ /**
65
+ * Create an MCard from a Lambda term
66
+ */
67
+ export declare function termToMCard(term: LambdaTerm): Promise<MCard>;
68
+ /**
69
+ * Extract Lambda term from MCard
70
+ */
71
+ export declare function mcardToTerm(mcard: MCard): LambdaTerm;
72
+ /**
73
+ * Store a Lambda term in the collection and return its hash
74
+ */
75
+ export declare function storeTerm(collection: CardCollection, term: LambdaTerm): Promise<string>;
76
+ /**
77
+ * Retrieve a Lambda term from the collection by hash
78
+ */
79
+ export declare function loadTerm(collection: CardCollection, hash: string): Promise<LambdaTerm | null>;
80
+ /**
81
+ * Check if a term exists in the collection
82
+ */
83
+ export declare function termExists(collection: CardCollection, hash: string): Promise<boolean>;
84
+ /**
85
+ * Pretty-print a Lambda term (shallow - shows hashes for subterms)
86
+ */
87
+ export declare function prettyPrintShallow(term: LambdaTerm): string;
88
+ /**
89
+ * Pretty-print a Lambda term (deep - resolves all subterms from collection)
90
+ */
91
+ export declare function prettyPrintDeep(collection: CardCollection, hash: string): Promise<string>;
92
+ export declare function isVar(term: LambdaTerm): term is VarTerm;
93
+ export declare function isAbs(term: LambdaTerm): term is AbsTerm;
94
+ export declare function isApp(term: LambdaTerm): term is AppTerm;
95
+ //# sourceMappingURL=LambdaTerm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LambdaTerm.d.ts","sourceRoot":"","sources":["../../../src/ptr/lambda/LambdaTerm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAM5D;;GAEG;AACH,MAAM,WAAW,OAAO;IACpB,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,OAAO;IACpB,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,OAAO;IACpB,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAMrD;;GAEG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE3C;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAEhE;AAMD;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAEtD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CA8B3D;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAElE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU,CAEpD;AAMD;;GAEG;AACH,wBAAsB,SAAS,CAC3B,UAAU,EAAE,cAAc,EAC1B,IAAI,EAAE,UAAU,GACjB,OAAO,CAAC,MAAM,CAAC,CAIjB;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAC1B,UAAU,EAAE,cAAc,EAC1B,IAAI,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAI5B;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC5B,UAAU,EAAE,cAAc,EAC1B,IAAI,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CAGlB;AAMD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAS3D;AAED;;GAEG;AACH,wBAAsB,eAAe,CACjC,UAAU,EAAE,cAAc,EAC1B,IAAI,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CAiBjB;AAMD,wBAAgB,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,IAAI,OAAO,CAEvD;AAED,wBAAgB,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,IAAI,OAAO,CAEvD;AAED,wBAAgB,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,IAAI,OAAO,CAEvD"}