bit2 0.0.1 → 0.0.3

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 (113) hide show
  1. package/package.json +4 -2
  2. package/dist/src/bx/biEval.js +0 -59
  3. package/dist/src/bx/biEval.js.map +0 -1
  4. package/dist/src/common/Exp.js +0 -44
  5. package/dist/src/common/Exp.js.map +0 -1
  6. package/dist/src/common/PrettyPrint.js +0 -32
  7. package/dist/src/common/PrettyPrint.js.map +0 -1
  8. package/dist/src/common/Print.js +0 -73
  9. package/dist/src/common/Print.js.map +0 -1
  10. package/dist/src/core/AST.js +0 -47
  11. package/dist/src/core/AST.js.map +0 -1
  12. package/dist/src/core/PrettyPrint.js +0 -64
  13. package/dist/src/core/PrettyPrint.js.map +0 -1
  14. package/dist/src/core/Print.js +0 -77
  15. package/dist/src/core/Print.js.map +0 -1
  16. package/dist/src/fuse/Fuse.js +0 -1436
  17. package/dist/src/fuse/Fuse.js.map +0 -1
  18. package/dist/src/fuse/Print.js +0 -22
  19. package/dist/src/fuse/Print.js.map +0 -1
  20. package/dist/src/fuse/Update.js +0 -3
  21. package/dist/src/fuse/Update.js.map +0 -1
  22. package/dist/src/lambda/AST.js +0 -3
  23. package/dist/src/lambda/AST.js.map +0 -1
  24. package/dist/src/lambda/Evaluation.js +0 -98
  25. package/dist/src/lambda/Evaluation.js.map +0 -1
  26. package/dist/src/lambda/Print.js +0 -31
  27. package/dist/src/lambda/Print.js.map +0 -1
  28. package/dist/src/lambdalize/lambdalize.js +0 -94
  29. package/dist/src/lambdalize/lambdalize.js.map +0 -1
  30. package/dist/src/lambdalize/unLambdalize.js +0 -59
  31. package/dist/src/lambdalize/unLambdalize.js.map +0 -1
  32. package/dist/src/partial/AST.js +0 -3
  33. package/dist/src/partial/AST.js.map +0 -1
  34. package/dist/src/partial/Print.js +0 -93
  35. package/dist/src/partial/Print.js.map +0 -1
  36. package/dist/src/partialEval/peval.js +0 -322
  37. package/dist/src/partialEval/peval.js.map +0 -1
  38. package/dist/src/partialEval/unpeval.js +0 -360
  39. package/dist/src/partialEval/unpeval.js.map +0 -1
  40. package/dist/src/surface/AST.js +0 -3
  41. package/dist/src/surface/AST.js.map +0 -1
  42. package/dist/src/surface/Parser.js +0 -314
  43. package/dist/src/surface/Parser.js.map +0 -1
  44. package/dist/src/translate/Translate.js +0 -91
  45. package/dist/src/translate/Translate.js.map +0 -1
  46. package/dist/src/utils/Utils.js +0 -7
  47. package/dist/src/utils/Utils.js.map +0 -1
  48. package/dist/test/bx/biEval.test.d.ts +0 -1
  49. package/dist/test/bx/biEval.test.js +0 -41
  50. package/dist/test/bx/biEval.test.js.map +0 -1
  51. package/dist/test/bx/test.d.ts +0 -1
  52. package/dist/test/bx/test.js +0 -29
  53. package/dist/test/bx/test.js.map +0 -1
  54. package/dist/test/core/0.simple.test.d.ts +0 -4
  55. package/dist/test/core/0.simple.test.js +0 -68
  56. package/dist/test/core/0.simple.test.js.map +0 -1
  57. package/dist/test/core/1.core.test.d.ts +0 -2
  58. package/dist/test/core/1.core.test.js +0 -30
  59. package/dist/test/core/1.core.test.js.map +0 -1
  60. package/dist/test/core/core.test.d.ts +0 -1
  61. package/dist/test/core/core.test.js +0 -28
  62. package/dist/test/core/core.test.js.map +0 -1
  63. package/dist/test/fuse/branchnop.test.d.ts +0 -1
  64. package/dist/test/fuse/branchnop.test.js +0 -47
  65. package/dist/test/fuse/branchnop.test.js.map +0 -1
  66. package/dist/test/fuse/bulk.test.d.ts +0 -1
  67. package/dist/test/fuse/bulk.test.js +0 -111
  68. package/dist/test/fuse/bulk.test.js.map +0 -1
  69. package/dist/test/fuse/const.test.d.ts +0 -1
  70. package/dist/test/fuse/const.test.js +0 -118
  71. package/dist/test/fuse/const.test.js.map +0 -1
  72. package/dist/test/fuse/exp.test.d.ts +0 -1
  73. package/dist/test/fuse/exp.test.js +0 -225
  74. package/dist/test/fuse/exp.test.js.map +0 -1
  75. package/dist/test/fuse/lambda.test.d.ts +0 -1
  76. package/dist/test/fuse/lambda.test.js +0 -139
  77. package/dist/test/fuse/lambda.test.js.map +0 -1
  78. package/dist/test/fuse/loop.test.d.ts +0 -1
  79. package/dist/test/fuse/loop.test.js +0 -39
  80. package/dist/test/fuse/loop.test.js.map +0 -1
  81. package/dist/test/fuse/seq.test.d.ts +0 -1
  82. package/dist/test/fuse/seq.test.js +0 -64
  83. package/dist/test/fuse/seq.test.js.map +0 -1
  84. package/dist/test/fuse/space.test.d.ts +0 -1
  85. package/dist/test/fuse/space.test.js +0 -136
  86. package/dist/test/fuse/space.test.js.map +0 -1
  87. package/dist/test/lambda/evaluation.test.d.ts +0 -1
  88. package/dist/test/lambda/evaluation.test.js +0 -24
  89. package/dist/test/lambda/evaluation.test.js.map +0 -1
  90. package/dist/test/lambda/lambda.test.d.ts +0 -1
  91. package/dist/test/lambda/lambda.test.js +0 -45
  92. package/dist/test/lambda/lambda.test.js.map +0 -1
  93. package/dist/test/lambdalize/lambdalize.test.d.ts +0 -1
  94. package/dist/test/lambdalize/lambdalize.test.js +0 -23
  95. package/dist/test/lambdalize/lambdalize.test.js.map +0 -1
  96. package/dist/test/lambdalize/unLambdalize.test.d.ts +0 -1
  97. package/dist/test/lambdalize/unLambdalize.test.js +0 -35
  98. package/dist/test/lambdalize/unLambdalize.test.js.map +0 -1
  99. package/dist/test/partial/partial.test.d.ts +0 -1
  100. package/dist/test/partial/partial.test.js +0 -35
  101. package/dist/test/partial/partial.test.js.map +0 -1
  102. package/dist/test/partialEval/peval.test.d.ts +0 -1
  103. package/dist/test/partialEval/peval.test.js +0 -29
  104. package/dist/test/partialEval/peval.test.js.map +0 -1
  105. package/dist/test/partialEval/unPeval.test.d.ts +0 -1
  106. package/dist/test/partialEval/unPeval.test.js +0 -40
  107. package/dist/test/partialEval/unPeval.test.js.map +0 -1
  108. package/dist/test/surface/AST.test.d.ts +0 -1
  109. package/dist/test/surface/AST.test.js +0 -41
  110. package/dist/test/surface/AST.test.js.map +0 -1
  111. package/dist/test/translate/translate.test.d.ts +0 -1
  112. package/dist/test/translate/translate.test.js +0 -45
  113. package/dist/test/translate/translate.test.js.map +0 -1
@@ -1,322 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- // Function to partially evaluate a CoreAST.TermNode
4
- function partialEval(environment, termNode) {
5
- switch (termNode.type) {
6
- case 'const':
7
- // For constants, return the same term node in PartialAST
8
- return [environment, { type: 'const', value: termNode.value }];
9
- case 'space':
10
- // For space nodes, return the same term node in PartialAST
11
- return [environment, { type: 'space', width: termNode.width }];
12
- case 'declare':
13
- // Partially evaluate the value expression
14
- const [updatedEnvDeclare, evaluatedValueDeclare] = evaluateExpr(environment, termNode.value);
15
- // Update environment with the evaluated value
16
- updatedEnvDeclare.set(termNode.name.name, evaluatedValueDeclare);
17
- // Return updated environment and PartialAST declare node
18
- return [updatedEnvDeclare, { type: 'declare', name: termNode.name, value: [termNode.value, evaluatedValueDeclare] }];
19
- case 'assign':
20
- // Partially evaluate the value expression
21
- const [updatedEnvAssign, evaluatedValueAssign] = evaluateExpr(environment, termNode.value);
22
- // Update environment with the evaluated value
23
- updatedEnvAssign.set(termNode.name.name, evaluatedValueAssign);
24
- // Return updated environment and PartialAST assign node
25
- return [updatedEnvAssign, { type: 'assign', name: termNode.name, value: [termNode.value, evaluatedValueAssign] }];
26
- case 'exp':
27
- // Partially evaluate the expression
28
- const [updatedEnvExp, evaluatedExp] = evaluateExpr(environment, termNode.expression);
29
- // Return updated environment and PartialAST exp node
30
- return [updatedEnvExp, { type: 'exp', binding: [termNode.expression, evaluatedExp] }];
31
- case 'seq':
32
- // Partially evaluate each node in sequence
33
- let updatedEnvSeq = environment;
34
- const evaluatedNodesSeq = [];
35
- for (const node of termNode.nodes) {
36
- const [updatedEnvNode2, evaluatedNode] = partialEval(updatedEnvSeq, node);
37
- evaluatedNodesSeq.push(evaluatedNode);
38
- updatedEnvSeq = updatedEnvNode2;
39
- }
40
- // Return updated environment and PartialAST seq node
41
- return [updatedEnvSeq, { type: 'seq', nodes: evaluatedNodesSeq }];
42
- case 'ite':
43
- // Partially evaluate the condition expression
44
- const [updatedEnvIte, evaluatedCondition] = evaluateExpr(environment, termNode.condition);
45
- if (evaluatedCondition === true) {
46
- const [updatedEnvTrue, evaluatedTrueBranch] = partialEval(updatedEnvIte, termNode.trueBranch);
47
- return [updatedEnvTrue, {
48
- type: 'seq',
49
- nodes: [
50
- {
51
- type: 'branchstart',
52
- condition: [termNode.condition, evaluatedCondition],
53
- trueBranch: termNode.trueBranch,
54
- falseBranch: termNode.falseBranch
55
- },
56
- evaluatedTrueBranch,
57
- { type: 'branchend' }
58
- ]
59
- }];
60
- }
61
- else if (evaluatedCondition === false) {
62
- const [updatedEnvFalse, evaluatedFalseBranch] = partialEval(updatedEnvIte, termNode.falseBranch);
63
- return [updatedEnvFalse, {
64
- type: 'seq',
65
- nodes: [
66
- {
67
- type: 'branchstart',
68
- condition: [termNode.condition, evaluatedCondition],
69
- trueBranch: termNode.trueBranch,
70
- falseBranch: termNode.falseBranch
71
- },
72
- evaluatedFalseBranch,
73
- { type: 'branchend' }
74
- ]
75
- }];
76
- }
77
- else {
78
- throw new Error(`Condition does not evaluate to boolean: ${evaluatedCondition}`);
79
- }
80
- case 'loop':
81
- const { lst, separator, front, rear, body } = termNode;
82
- // Evaluate e_arr to get its value
83
- const [updatedEnv, e_arr_value] = evaluateExpr(environment, lst);
84
- // Case 1: e_arr 是一个空数组
85
- if (Array.isArray(e_arr_value) && e_arr_value.length === 0) {
86
- return [updatedEnv, {
87
- type: 'seq',
88
- nodes: [
89
- {
90
- type: 'loopfront',
91
- lst: lst,
92
- value: front.value,
93
- body: body,
94
- separator: separator
95
- },
96
- {
97
- type: 'looprear',
98
- lst: lst,
99
- value: rear.value
100
- }
101
- ]
102
- }];
103
- }
104
- // Case 2: e_arr 有一个元素
105
- else if (Array.isArray(e_arr_value) && e_arr_value.length === 1) {
106
- const element = e_arr_value[0];
107
- const variableName = body.variable.name; // Assuming lambda has a variable with a name
108
- const updatedEnvironment = new Map(environment);
109
- updatedEnvironment.set(variableName, element);
110
- const [updatedEnv2, evaluatedBody] = partialEval(updatedEnvironment, body.body); // Evaluate t1 to t1'
111
- return [updatedEnv2, {
112
- type: 'seq',
113
- nodes: [
114
- {
115
- type: 'loopfront',
116
- lst: lst,
117
- value: front.value,
118
- body: body,
119
- separator: separator
120
- },
121
- evaluatedBody,
122
- {
123
- type: 'looprear',
124
- lst: lst,
125
- value: rear.value
126
- }
127
- ]
128
- }];
129
- }
130
- // Case 3: e_arr 有多个元素
131
- else if (Array.isArray(e_arr_value) && e_arr_value.length > 1) {
132
- let updatedEnv = new Map(environment);
133
- let currentNodes = [];
134
- for (let i = 0; i < e_arr_value.length; i++) {
135
- const element = e_arr_value[i];
136
- const variableName = body.variable.name; // Assuming lambda has a variable with a name
137
- updatedEnv.set(variableName, element);
138
- const [updatedEnv2, evaluatedBody] = partialEval(updatedEnv, body.body); // Evaluate t1 to t1'
139
- updatedEnv = updatedEnv2;
140
- currentNodes.push({
141
- type: 'lambda',
142
- variable: body.variable,
143
- body: evaluatedBody,
144
- binding: [{ type: 'constant', value: element }, element],
145
- marker: {
146
- type: 'loopitem',
147
- lst: lst
148
- }
149
- });
150
- if (i < e_arr_value.length - 1) {
151
- currentNodes.push(termNode.separator);
152
- }
153
- }
154
- return [updatedEnv, {
155
- type: 'seq',
156
- nodes: [
157
- {
158
- type: 'loopfront',
159
- lst: lst,
160
- value: front.value,
161
- body: body,
162
- separator: separator
163
- },
164
- ...currentNodes,
165
- {
166
- type: 'looprear',
167
- lst: lst,
168
- value: rear.value
169
- }
170
- ]
171
- }];
172
- }
173
- throw new Error(`Unsupported type or value for e_arr: ${typeof e_arr_value}`);
174
- // case 'call':
175
- // // Partially evaluate the function and arguments
176
- // const [updatedEnvCall, evaluatedFunc] = partialEval(environment, termNode.func);
177
- // const evaluatedArgs: { [key: string]: CoreAST.Expr } = {};
178
- // for (const key in termNode.args) {
179
- // if (termNode.args.hasOwnProperty(key)) {
180
- // const [updatedEnvArg, evaluatedArg] = evaluateExpr(updatedEnvCall, termNode.args[key]);
181
- // evaluatedArgs[key] = evaluatedArg;
182
- // updatedEnvCall = updatedEnvArg;
183
- // }
184
- // }
185
- // // Return updated environment and PartialAST call node
186
- // return [updatedEnvCall, { type: 'call', func: evaluatedFunc, args: evaluatedArgs }];
187
- case 'nop':
188
- // For nop node, return the same term node in PartialAST
189
- return [environment, { type: 'nop' }];
190
- case 'bot':
191
- // For bot node, return the same term node in PartialAST
192
- return [environment, { type: 'bot' }];
193
- case 'end':
194
- // For end node, return the same term node in PartialAST
195
- return [environment, { type: 'end' }];
196
- default:
197
- throw new Error(`Unhandled term node type: ${termNode.type}`);
198
- }
199
- }
200
- exports.partialEval = partialEval;
201
- // Function to evaluate expressions (Expr) and return updated environment and value
202
- function evaluateExpr(environment, expr) {
203
- switch (expr.type) {
204
- case 'constant':
205
- // Return the unchanged environment and the constant value
206
- return [environment, expr.value];
207
- case 'variable':
208
- // Lookup the variable value in the environment
209
- const varValue = environment.get(expr.name);
210
- if (varValue === undefined) {
211
- throw new Error(`Variable '${expr.name}' not found in environment`);
212
- }
213
- // Return the unchanged environment and the variable value
214
- return [environment, varValue];
215
- case 'binary':
216
- // Evaluate left and right operands
217
- let [envLeft, left] = evaluateExpr(environment, expr.left);
218
- let [envRight, right] = evaluateExpr(envLeft, expr.right);
219
- // Perform binary operation based on the operator
220
- switch (expr.operator) {
221
- case '+':
222
- return [envRight, left + right];
223
- case '-':
224
- return [envRight, left - right];
225
- case '*':
226
- return [envRight, left * right];
227
- case '/':
228
- return [envRight, left / right];
229
- case '&&':
230
- return [envRight, left && right];
231
- case '||':
232
- return [envRight, left || right];
233
- case '>':
234
- return [envRight, left > right];
235
- case '<':
236
- return [envRight, left < right];
237
- case '>=':
238
- return [envRight, left >= right];
239
- case '<=':
240
- return [envRight, left <= right];
241
- default:
242
- throw new Error(`Unsupported binary operator`);
243
- }
244
- case 'unary':
245
- // Evaluate operand
246
- let [envOperand, operand] = evaluateExpr(environment, expr.operand);
247
- // Perform unary operation based on the operator
248
- switch (expr.operator) {
249
- case 'not':
250
- return [envOperand, !operand];
251
- default:
252
- throw new Error(`Unsupported unary operator`);
253
- }
254
- case 'field':
255
- // Evaluate the object
256
- let [envObject, objectValue] = evaluateExpr(environment, expr.object);
257
- // Access the field in the object
258
- if (typeof objectValue !== 'string' && (typeof objectValue !== 'object' || objectValue === null)) {
259
- throw new Error(`Cannot access field '${expr.field}' from non-object`);
260
- }
261
- const fieldValue = objectValue[expr.field];
262
- if (fieldValue === undefined) {
263
- throw new Error(`Field '${expr.field}' not found in object`);
264
- }
265
- // Return the unchanged environment and the field value
266
- return [envObject, fieldValue];
267
- case 'array':
268
- // Evaluate elements of the array
269
- let evaluatedElements = [];
270
- let currentEnv = environment;
271
- for (const element of expr.elements) {
272
- let [updatedEnv, evaluatedElement] = evaluateExpr(currentEnv, element);
273
- evaluatedElements.push(evaluatedElement);
274
- currentEnv = updatedEnv;
275
- }
276
- // Return the updated environment and the evaluated array
277
- return [currentEnv, evaluatedElements];
278
- case 'object':
279
- // Evaluate fields of the object
280
- let evaluatedFields = {};
281
- let objEnv = environment;
282
- for (const key in expr.fields) {
283
- if (expr.fields.hasOwnProperty(key)) {
284
- let [updatedEnv, evaluatedValue] = evaluateExpr(objEnv, expr.fields[key]);
285
- evaluatedFields[key] = evaluatedValue;
286
- objEnv = updatedEnv;
287
- }
288
- }
289
- // Return the updated environment and the evaluated object
290
- return [objEnv, evaluatedFields];
291
- case 'freeze':
292
- // Evaluate the expression and return it without modification
293
- return evaluateExpr(environment, expr.expression);
294
- default:
295
- throw new Error(`Unhandled expression type`);
296
- }
297
- }
298
- exports.evaluateExpr = evaluateExpr;
299
- // 定义 flatten 函数 for PartialAST
300
- function flatten(termNode) {
301
- if (termNode.type === 'seq') {
302
- // 如果 termNode 是 seq 类型,则递归处理每个元素,并返回新的 seq 节点
303
- const flattenedElements = termNode.nodes.map(element => flatten(element));
304
- return { type: 'seq', nodes: flattenedElements.flatMap(seqNode => {
305
- if (seqNode.type === 'seq') {
306
- return seqNode.nodes;
307
- }
308
- else {
309
- return [seqNode];
310
- }
311
- }) };
312
- }
313
- else if (termNode.type === 'lambda') {
314
- return Object.assign(Object.assign({}, termNode), { body: flatten(termNode.body) });
315
- }
316
- else {
317
- // 其他情况下,直接返回
318
- return termNode;
319
- }
320
- }
321
- exports.flatten = flatten;
322
- //# sourceMappingURL=peval.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"peval.js","sourceRoot":"","sources":["../../../src/partialEval/peval.ts"],"names":[],"mappings":";;AAIA,oDAAoD;AACpD,SAAgB,WAAW,CAAC,WAA6B,EAAE,QAA0B;IACjF,QAAQ,QAAQ,CAAC,IAAI,EAAE;QACnB,KAAK,OAAO;YACR,yDAAyD;YACzD,OAAO,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QAEnE,KAAK,OAAO;YACR,2DAA2D;YAC3D,OAAO,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QAEnE,KAAK,SAAS;YACV,0CAA0C;YAC1C,MAAM,CAAC,iBAAiB,EAAE,qBAAqB,CAAC,GAAG,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC7F,8CAA8C;YAC9C,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;YACjE,yDAAyD;YACzD,OAAO,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC,EAAE,CAAC,CAAC;QAEzH,KAAK,QAAQ;YACT,0CAA0C;YAC1C,MAAM,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,GAAG,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC3F,8CAA8C;YAC9C,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;YAC/D,wDAAwD;YACxD,OAAO,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC,EAAE,CAAC,CAAC;QAEtH,KAAK,KAAK;YACN,oCAAoC;YACpC,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,GAAG,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;YACrF,qDAAqD;YACrD,OAAO,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;QAE1F,KAAK,KAAK;YACN,2CAA2C;YAC3C,IAAI,aAAa,GAAG,WAAW,CAAC;YAChC,MAAM,iBAAiB,GAA0B,EAAE,CAAC;YACpD,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE;gBAC/B,MAAM,CAAC,eAAe,EAAE,aAAa,CAAC,GAAG,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;gBAC1E,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACtC,aAAa,GAAG,eAAe,CAAC;aACnC;YACD,qDAAqD;YACrD,OAAO,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAEtE,KAAK,KAAK;YACN,8CAA8C;YAC9C,MAAM,CAAC,aAAa,EAAE,kBAAkB,CAAC,GAAG,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC1F,IAAI,kBAAkB,KAAK,IAAI,EAAC;gBAC9B,MAAM,CAAC,cAAc,EAAE,mBAAmB,CAAC,GAAG,WAAW,CAAC,aAAa,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;gBAC9F,OAAO,CAAC,cAAc,EAAE;wBACtB,IAAI,EAAE,KAAK;wBACX,KAAK,EAAE;4BACH;gCACE,IAAI,EAAC,aAAa;gCAClB,SAAS,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;gCACnD,UAAU,EAAE,QAAQ,CAAC,UAAU;gCAC/B,WAAW,EAAE,QAAQ,CAAC,WAAW;6BAClC;4BACD,mBAAmB;4BACnB,EAAC,IAAI,EAAC,WAAW,EAAC;yBACrB;qBACF,CAAC,CAAA;aACH;iBAAM,IAAI,kBAAkB,KAAK,KAAK,EAAC;gBACtC,MAAM,CAAC,eAAe,EAAE,oBAAoB,CAAC,GAAG,WAAW,CAAC,aAAa,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;gBACjG,OAAO,CAAC,eAAe,EAAE;wBACvB,IAAI,EAAE,KAAK;wBACX,KAAK,EAAE;4BACH;gCACE,IAAI,EAAC,aAAa;gCAClB,SAAS,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;gCACnD,UAAU,EAAE,QAAQ,CAAC,UAAU;gCAC/B,WAAW,EAAE,QAAQ,CAAC,WAAW;6BAClC;4BACD,oBAAoB;4BACpB,EAAC,IAAI,EAAC,WAAW,EAAC;yBACrB;qBACF,CAAC,CAAA;aACH;iBAAM;gBACL,MAAM,IAAI,KAAK,CAAC,2CAA2C,kBAAkB,EAAE,CAAC,CAAC;aAClF;QAGL,KAAK,MAAM;YACT,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC;YAEvD,kCAAkC;YAClC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,YAAY,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YAEjE,uBAAuB;YACvB,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;gBACxD,OAAO,CAAC,UAAU,EAAE;wBAChB,IAAI,EAAE,KAAK;wBACX,KAAK,EAAE;4BACH;gCACI,IAAI,EAAE,WAAW;gCACjB,GAAG,EAAE,GAAG;gCACR,KAAK,EAAE,KAAK,CAAC,KAAK;gCAClB,IAAI,EAAC,IAAI;gCACT,SAAS,EAAC,SAAS;6BACtB;4BACD;gCACI,IAAI,EAAE,UAAU;gCAChB,GAAG,EAAE,GAAG;gCACR,KAAK,EAAE,IAAI,CAAC,KAAK;6BACpB;yBACJ;qBACJ,CAAC,CAAC;aACN;YAED,sBAAsB;iBACjB,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC7D,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;gBAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,6CAA6C;gBACtF,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;gBAChD,kBAAkB,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;gBAE9C,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,GAAG,WAAW,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB;gBAEtG,OAAO,CAAC,WAAW,EAAE;wBACjB,IAAI,EAAE,KAAK;wBACX,KAAK,EAAE;4BACH;gCACI,IAAI,EAAE,WAAW;gCACjB,GAAG,EAAE,GAAG;gCACR,KAAK,EAAE,KAAK,CAAC,KAAK;gCAClB,IAAI,EAAC,IAAI;gCACT,SAAS,EAAC,SAAS;6BACtB;4BACD,aAAa;4BACb;gCACI,IAAI,EAAE,UAAU;gCAChB,GAAG,EAAE,GAAG;gCACR,KAAK,EAAE,IAAI,CAAC,KAAK;6BACpB;yBACJ;qBACJ,CAAC,CAAC;aACN;YAED,sBAAsB;iBACjB,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC3D,IAAI,UAAU,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;gBACtC,IAAI,YAAY,GAA0B,EAAE,CAAC;gBAE7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACzC,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;oBAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,6CAA6C;oBACtF,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;oBAEtC,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,GAAG,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB;oBAC9F,UAAU,GAAG,WAAW,CAAC;oBAEzB,YAAY,CAAC,IAAI,CAAC;wBACd,IAAI,EAAE,QAAQ;wBACd,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,IAAI,EAAE,aAAa;wBACnB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAC,OAAO,EAAE,EAAE,OAAO,CAAC;wBACvD,MAAM,EAAE;4BACJ,IAAI,EAAE,UAAU;4BAChB,GAAG,EAAE,GAAG;yBACX;qBACJ,CAAC,CAAC;oBACH,IAAG,CAAC,GAAG,WAAW,CAAC,MAAM,GAAC,CAAC,EAAC;wBAC1B,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;qBACvC;iBACJ;gBAED,OAAO,CAAC,UAAU,EAAE;wBAChB,IAAI,EAAE,KAAK;wBACX,KAAK,EAAE;4BACH;gCACI,IAAI,EAAE,WAAW;gCACjB,GAAG,EAAE,GAAG;gCACR,KAAK,EAAE,KAAK,CAAC,KAAK;gCAClB,IAAI,EAAC,IAAI;gCACT,SAAS,EAAC,SAAS;6BACtB;4BACD,GAAG,YAAY;4BACf;gCACI,IAAI,EAAE,UAAU;gCAChB,GAAG,EAAE,GAAG;gCACR,KAAK,EAAE,IAAI,CAAC,KAAK;6BACpB;yBACJ;qBACJ,CAAC,CAAC;aACN;YAED,MAAM,IAAI,KAAK,CAAC,wCAAwC,OAAO,WAAW,EAAE,CAAC,CAAC;QAEhF,eAAe;QACf,uDAAuD;QACvD,uFAAuF;QACvF,iEAAiE;QACjE,yCAAyC;QACzC,mDAAmD;QACnD,sGAAsG;QACtG,iDAAiD;QACjD,8CAA8C;QAC9C,YAAY;QACZ,QAAQ;QACR,6DAA6D;QAC7D,2FAA2F;QAE3F,KAAK,KAAK;YACN,wDAAwD;YACxD,OAAO,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAE1C,KAAK,KAAK;YACN,wDAAwD;YACxD,OAAO,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAE1C,KAAK,KAAK;YACN,wDAAwD;YACxD,OAAO,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAE1C;YACI,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;KACrE;AACL,CAAC;AAzND,kCAyNC;AAED,mFAAmF;AACnF,SAAgB,YAAY,CAAC,WAA6B,EAAE,IAAe;IACvE,QAAQ,IAAI,CAAC,IAAI,EAAE;QACf,KAAK,UAAU;YACX,0DAA0D;YAC1D,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAErC,KAAK,UAAU;YACX,+CAA+C;YAC/C,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,QAAQ,KAAK,SAAS,EAAE;gBACxB,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,IAAI,4BAA4B,CAAC,CAAC;aACvE;YACD,0DAA0D;YAC1D,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAEnC,KAAK,QAAQ;YACT,mCAAmC;YACnC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3D,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAE1D,iDAAiD;YACjD,QAAQ,IAAI,CAAC,QAAQ,EAAE;gBACnB,KAAK,GAAG;oBACJ,OAAO,CAAC,QAAQ,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC;gBACpC,KAAK,GAAG;oBACJ,OAAO,CAAC,QAAQ,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC;gBACpC,KAAK,GAAG;oBACJ,OAAO,CAAC,QAAQ,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC;gBACpC,KAAK,GAAG;oBACJ,OAAO,CAAC,QAAQ,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC;gBACpC,KAAK,IAAI;oBACL,OAAO,CAAC,QAAQ,EAAE,IAAI,IAAI,KAAK,CAAC,CAAC;gBACrC,KAAK,IAAI;oBACL,OAAO,CAAC,QAAQ,EAAE,IAAI,IAAI,KAAK,CAAC,CAAC;gBACrC,KAAK,GAAG;oBACJ,OAAO,CAAC,QAAQ,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC;gBACpC,KAAK,GAAG;oBACJ,OAAO,CAAC,QAAQ,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC;gBACpC,KAAK,IAAI;oBACL,OAAO,CAAC,QAAQ,EAAE,IAAI,IAAI,KAAK,CAAC,CAAC;gBACrC,KAAK,IAAI;oBACL,OAAO,CAAC,QAAQ,EAAE,IAAI,IAAI,KAAK,CAAC,CAAC;gBACrC;oBACI,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;aACtD;QAEL,KAAK,OAAO;YACR,mBAAmB;YACnB,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAEpE,gDAAgD;YAChD,QAAQ,IAAI,CAAC,QAAQ,EAAE;gBACnB,KAAK,KAAK;oBACN,OAAO,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC;gBAClC;oBACI,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;aACrD;QAEL,KAAK,OAAO;YACR,sBAAsB;YACtB,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAEtE,iCAAiC;YACjC,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,CAAC,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,KAAK,IAAI,CAAC,EAAE;gBAC9F,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,CAAC,KAAK,mBAAmB,CAAC,CAAC;aAC1E;YACD,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3C,IAAI,UAAU,KAAK,SAAS,EAAE;gBAC1B,MAAM,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,uBAAuB,CAAC,CAAC;aAChE;YACD,uDAAuD;YACvD,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAEnC,KAAK,OAAO;YACR,iCAAiC;YACjC,IAAI,iBAAiB,GAAU,EAAE,CAAC;YAClC,IAAI,UAAU,GAAG,WAAW,CAAC;YAE7B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjC,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBACvE,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBACzC,UAAU,GAAG,UAAU,CAAC;aAC3B;YAED,yDAAyD;YACzD,OAAO,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;QAE3C,KAAK,QAAQ;YACT,gCAAgC;YAChC,IAAI,eAAe,GAA2B,EAAE,CAAC;YACjD,IAAI,MAAM,GAAG,WAAW,CAAC;YAEzB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE;gBAC3B,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;oBACjC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC1E,eAAe,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC;oBACtC,MAAM,GAAG,UAAU,CAAC;iBACvB;aACJ;YAED,0DAA0D;YAC1D,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAErC,KAAK,QAAQ;YACT,6DAA6D;YAC7D,OAAO,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAEtD;YACI,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;KACpD;AACL,CAAC;AA9GD,oCA8GC;AAOD,+BAA+B;AAC/B,SAAgB,OAAO,CAAC,QAA6B;IACnD,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK,EAAE;QACzB,8CAA8C;QAC9C,MAAM,iBAAiB,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1E,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC/D,IAAG,OAAO,CAAC,IAAI,KAAK,KAAK,EAAC;oBACxB,OAAO,OAAO,CAAC,KAAK,CAAC;iBACtB;qBAAM;oBACL,OAAO,CAAC,OAAO,CAAC,CAAA;iBACjB;YACH,CAAC,CAAC,EAAE,CAAC;KACN;SAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAC;QACpC,uCAAW,QAAQ,KAAE,IAAI,EAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAE;KACnD;SAAM;QACL,aAAa;QACb,OAAO,QAAQ,CAAC;KACjB;AACL,CAAC;AAjBD,0BAiBC"}