atcoder-gui 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/README.md +7 -0
  2. package/dist/analyzer/analyzer.d.ts +16 -0
  3. package/dist/analyzer/analyzer.d.ts.map +1 -0
  4. package/dist/analyzer/analyzer.js +379 -0
  5. package/dist/analyzer/analyzer.js.map +1 -0
  6. package/dist/analyzer/html-parser.d.ts +24 -0
  7. package/dist/analyzer/html-parser.d.ts.map +1 -0
  8. package/dist/analyzer/html-parser.js +214 -0
  9. package/dist/analyzer/html-parser.js.map +1 -0
  10. package/dist/analyzer/index.d.ts +7 -0
  11. package/dist/analyzer/index.d.ts.map +1 -0
  12. package/dist/analyzer/index.js +7 -0
  13. package/dist/analyzer/index.js.map +1 -0
  14. package/dist/analyzer/lexer.d.ts +14 -0
  15. package/dist/analyzer/lexer.d.ts.map +1 -0
  16. package/dist/analyzer/lexer.js +133 -0
  17. package/dist/analyzer/lexer.js.map +1 -0
  18. package/dist/analyzer/match.d.ts +7 -0
  19. package/dist/analyzer/match.d.ts.map +1 -0
  20. package/dist/analyzer/match.js +133 -0
  21. package/dist/analyzer/match.js.map +1 -0
  22. package/dist/analyzer/parser.d.ts +20 -0
  23. package/dist/analyzer/parser.d.ts.map +1 -0
  24. package/dist/analyzer/parser.js +135 -0
  25. package/dist/analyzer/parser.js.map +1 -0
  26. package/dist/analyzer/types.d.ts +54 -0
  27. package/dist/analyzer/types.d.ts.map +1 -0
  28. package/dist/analyzer/types.js +10 -0
  29. package/dist/analyzer/types.js.map +1 -0
  30. package/dist/analyzer/typing.d.ts +10 -0
  31. package/dist/analyzer/typing.d.ts.map +1 -0
  32. package/dist/analyzer/typing.js +246 -0
  33. package/dist/analyzer/typing.js.map +1 -0
  34. package/dist/browser.d.ts +12 -0
  35. package/dist/browser.d.ts.map +1 -1
  36. package/dist/browser.js +26 -1
  37. package/dist/browser.js.map +1 -1
  38. package/dist/build.d.ts +7 -0
  39. package/dist/build.d.ts.map +1 -0
  40. package/dist/build.js +40 -0
  41. package/dist/build.js.map +1 -0
  42. package/dist/config.d.ts +10 -2
  43. package/dist/config.d.ts.map +1 -1
  44. package/dist/config.js +31 -18
  45. package/dist/config.js.map +1 -1
  46. package/dist/config.json5 +16 -1
  47. package/dist/gen.d.ts +6 -12
  48. package/dist/gen.d.ts.map +1 -1
  49. package/dist/gen.js +153 -66
  50. package/dist/gen.js.map +1 -1
  51. package/dist/generator/checker.d.ts +2 -0
  52. package/dist/generator/checker.d.ts.map +1 -0
  53. package/dist/generator/checker.js +64 -0
  54. package/dist/generator/checker.js.map +1 -0
  55. package/dist/generator/cplusplus.d.ts +14 -0
  56. package/dist/generator/cplusplus.d.ts.map +1 -0
  57. package/dist/generator/cplusplus.js +43 -0
  58. package/dist/generator/cplusplus.js.map +1 -0
  59. package/dist/generator/fetcher.d.ts +2 -0
  60. package/dist/generator/fetcher.d.ts.map +1 -0
  61. package/dist/generator/fetcher.js +39 -0
  62. package/dist/generator/fetcher.js.map +1 -0
  63. package/dist/generator/pipeline.d.ts +25 -0
  64. package/dist/generator/pipeline.d.ts.map +1 -0
  65. package/dist/generator/pipeline.js +85 -0
  66. package/dist/generator/pipeline.js.map +1 -0
  67. package/dist/generator/python.d.ts +14 -0
  68. package/dist/generator/python.d.ts.map +1 -0
  69. package/dist/generator/python.js +41 -0
  70. package/dist/generator/python.js.map +1 -0
  71. package/dist/generator/types.d.ts +79 -0
  72. package/dist/generator/types.d.ts.map +1 -0
  73. package/dist/generator/types.js +2 -0
  74. package/dist/generator/types.js.map +1 -0
  75. package/dist/generator/universal.d.ts +35 -0
  76. package/dist/generator/universal.d.ts.map +1 -0
  77. package/dist/generator/universal.js +524 -0
  78. package/dist/generator/universal.js.map +1 -0
  79. package/dist/generator/variable-extractor.d.ts +16 -0
  80. package/dist/generator/variable-extractor.d.ts.map +1 -0
  81. package/dist/generator/variable-extractor.js +103 -0
  82. package/dist/generator/variable-extractor.js.map +1 -0
  83. package/dist/main.d.ts +3 -1
  84. package/dist/main.d.ts.map +1 -1
  85. package/dist/main.js +99 -100
  86. package/dist/main.js.map +1 -1
  87. package/dist/submit.d.ts +1 -1
  88. package/dist/submit.d.ts.map +1 -1
  89. package/dist/submit.js +17 -17
  90. package/dist/submit.js.map +1 -1
  91. package/dist/test.d.ts +10 -0
  92. package/dist/test.d.ts.map +1 -0
  93. package/dist/test.js +127 -0
  94. package/dist/test.js.map +1 -0
  95. package/dist/tests/batch_check.d.ts +2 -0
  96. package/dist/tests/batch_check.d.ts.map +1 -0
  97. package/dist/tests/batch_check.js +46 -0
  98. package/dist/tests/batch_check.js.map +1 -0
  99. package/dist/types.d.ts +2 -0
  100. package/dist/types.d.ts.map +1 -1
  101. package/dist/utils.d.ts +12 -0
  102. package/dist/utils.d.ts.map +1 -1
  103. package/dist/utils.js +32 -0
  104. package/dist/utils.js.map +1 -1
  105. package/package.json +21 -4
package/README.md CHANGED
@@ -144,6 +144,13 @@ pnpm run lint:fix # Auto-fix issues where possible
144
144
  - **ESLint** - Code linting
145
145
  - **conf** - Configuration management library
146
146
 
147
+ ## Acknowledgments
148
+
149
+ This project is inspired by and incorporates ideas from the following excellent tools:
150
+
151
+ - [atcoder-tools](https://github.com/magurofly/atcoder-tools): A powerful CLI tool for competitive programming on AtCoder.
152
+ - [online-judge-tools/template-generator](https://github.com/online-judge-tools/template-generator): A tool for generating template code for competitive programming problems.
153
+
147
154
  ## License
148
155
 
149
156
  MIT
@@ -0,0 +1,16 @@
1
+ import { FormatNode } from "./types";
2
+ export declare class Analyzer {
3
+ analyze(root: FormatNode): FormatNode;
4
+ private normalize;
5
+ private tryExtendLoop;
6
+ private matchLoopBody;
7
+ private instantiate;
8
+ private detectLoop;
9
+ private match;
10
+ private createLoop;
11
+ private findDiffs;
12
+ private replacePaths;
13
+ private generateLoopVar;
14
+ private areNodesEqual;
15
+ }
16
+ //# sourceMappingURL=analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../../src/analyzer/analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsD,MAAM,SAAS,CAAC;AAEzF,qBAAa,QAAQ;IACZ,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU;IAW5C,OAAO,CAAC,SAAS;IAoCjB,OAAO,CAAC,aAAa;IAsBrB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,WAAW;IAkCnB,OAAO,CAAC,UAAU;IAkClB,OAAO,CAAC,KAAK;IAiCb,OAAO,CAAC,UAAU;IAmDlB,OAAO,CAAC,SAAS;IAuDjB,OAAO,CAAC,YAAY;IAkCpB,OAAO,CAAC,eAAe;IAiCvB,OAAO,CAAC,aAAa;CAyBtB"}
@@ -0,0 +1,379 @@
1
+ export class Analyzer {
2
+ analyze(root) {
3
+ const childrenWithoutBreaks = root.children.filter((n) => n.type !== "break");
4
+ let current = childrenWithoutBreaks;
5
+ while (true) {
6
+ const next = this.normalize(current);
7
+ if (JSON.stringify(next) === JSON.stringify(current))
8
+ break;
9
+ current = next;
10
+ }
11
+ return { ...root, children: current };
12
+ }
13
+ normalize(nodes) {
14
+ // Recursively normalize all children first
15
+ const normalizedNodes = nodes.map((node) => {
16
+ if (node.type === "loop") {
17
+ const loop = node;
18
+ return { ...loop, body: this.normalize(loop.body) };
19
+ }
20
+ return node;
21
+ });
22
+ const result = [];
23
+ let i = 0;
24
+ while (i < normalizedNodes.length) {
25
+ const node = normalizedNodes[i];
26
+ if (node.type === "dots") {
27
+ const loop = this.detectLoop(normalizedNodes, i, result);
28
+ if (loop) {
29
+ const { K_nodes, K_result, loopNode } = loop;
30
+ for (let k = 0; k < K_result; k++)
31
+ result.pop();
32
+ while (this.tryExtendLoop(result, loopNode)) {
33
+ // extended
34
+ }
35
+ result.push({ node: loopNode, count: K_nodes * 2 + 1 });
36
+ i += K_nodes + 1; // Skip dots and right side
37
+ continue;
38
+ }
39
+ }
40
+ result.push({ node, count: 1 });
41
+ i++;
42
+ }
43
+ return result.map((r) => r.node);
44
+ }
45
+ tryExtendLoop(result, loopNode) {
46
+ if (loopNode.start.type !== "number")
47
+ return false;
48
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
49
+ const currentStart = loopNode.start.value;
50
+ const prevIndexVal = currentStart - 1;
51
+ // Body might have been normalized, so we should check its original length
52
+ // But for extension, we check against the current result items
53
+ const K = loopNode.body.length;
54
+ if (result.length < K)
55
+ return false;
56
+ const candidate = result.slice(result.length - K).map((r) => r.node);
57
+ if (this.matchLoopBody(candidate, loopNode, prevIndexVal)) {
58
+ for (let k = 0; k < K; k++)
59
+ result.pop();
60
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
61
+ loopNode.start.value = prevIndexVal;
62
+ return true;
63
+ }
64
+ return false;
65
+ }
66
+ matchLoopBody(nodes, loopNode, indexVal) {
67
+ if (nodes.length !== loopNode.body.length)
68
+ return false;
69
+ // Instantiate template by replacing loop variable with indexVal
70
+ const instantiatedBody = loopNode.body.map((template) => this.instantiate(template, loopNode.variable, indexVal));
71
+ for (let i = 0; i < nodes.length; i++) {
72
+ if (!this.areNodesEqual(nodes[i], instantiatedBody[i]))
73
+ return false;
74
+ }
75
+ return true;
76
+ }
77
+ instantiate(node, loopVar, indexVal) {
78
+ if (node.type === "item") {
79
+ const item = node;
80
+ if (item.name === loopVar && item.indices.length === 0) {
81
+ return { type: "number", value: indexVal };
82
+ }
83
+ return {
84
+ ...item,
85
+ indices: item.indices.map((idx) => this.instantiate(idx, loopVar, indexVal)),
86
+ }; // Added explicit type assertion
87
+ }
88
+ if (node.type === "binop") {
89
+ const bin = node;
90
+ return {
91
+ ...bin,
92
+ left: this.instantiate(bin.left, loopVar, indexVal),
93
+ right: this.instantiate(bin.right, loopVar, indexVal),
94
+ }; // Added explicit type assertion
95
+ }
96
+ if (node.type === "loop") {
97
+ const loop = node;
98
+ // Note: If nested loop uses the same variable name, it shadows.
99
+ // But usually they have different names.
100
+ if (loop.variable === loopVar)
101
+ return loop;
102
+ return {
103
+ ...loop,
104
+ start: this.instantiate(loop.start, loopVar, indexVal),
105
+ end: this.instantiate(loop.end, loopVar, indexVal),
106
+ body: loop.body.map((child) => this.instantiate(child, loopVar, indexVal)),
107
+ }; // Added explicit type assertion
108
+ }
109
+ return node;
110
+ }
111
+ detectLoop(nodes, dotsIndex, result) {
112
+ for (let K_nodes = 1; K_nodes <= dotsIndex; K_nodes++) {
113
+ if (dotsIndex + K_nodes >= nodes.length)
114
+ break;
115
+ // Check how many result items correspond to K_nodes
116
+ let sum = 0;
117
+ let K_result = 0;
118
+ for (let j = result.length - 1; j >= 0; j--) {
119
+ sum += result[j].count;
120
+ K_result++;
121
+ if (sum === K_nodes)
122
+ break;
123
+ if (sum > K_nodes) {
124
+ K_result = -1;
125
+ break;
126
+ }
127
+ }
128
+ if (K_result === -1)
129
+ continue;
130
+ const left = nodes.slice(dotsIndex - K_nodes, dotsIndex);
131
+ const right = nodes.slice(dotsIndex + 1, dotsIndex + 1 + K_nodes);
132
+ if (this.match(left, right)) {
133
+ const loopNode = this.createLoop(left, right);
134
+ if (loopNode)
135
+ return { K_nodes, K_result, loopNode };
136
+ }
137
+ }
138
+ return null;
139
+ }
140
+ match(left, right) {
141
+ if (left.length !== right.length)
142
+ return false;
143
+ for (let i = 0; i < left.length; i++) {
144
+ const l = left[i];
145
+ const r = right[i];
146
+ if (l.type !== r.type)
147
+ return false;
148
+ if (l.type === "item") {
149
+ if (l.name !== r.name)
150
+ return false;
151
+ if (l.indices.length !== r.indices.length)
152
+ return false;
153
+ }
154
+ else if (l.type === "loop") {
155
+ const ll = l;
156
+ const rr = r;
157
+ // Body should match structurally regardless of loop variable name (alpha equivalence)
158
+ // For matching, we check if they have the same structure.
159
+ if (!this.match(ll.body, rr.body))
160
+ return false;
161
+ }
162
+ else if (l.type === "dots") {
163
+ continue; // Match dots
164
+ }
165
+ else if (l.type === "number") {
166
+ continue; // Allow different numbers for createLoop to pick up
167
+ }
168
+ else if (l.type === "binop") {
169
+ const bl = l;
170
+ const br = r;
171
+ if (bl.op !== br.op)
172
+ return false;
173
+ if (!this.match([bl.left], [br.left]))
174
+ return false;
175
+ if (!this.match([bl.right], [br.right]))
176
+ return false;
177
+ }
178
+ else {
179
+ // For other types, they should be identical
180
+ if (JSON.stringify(l) !== JSON.stringify(r))
181
+ return false;
182
+ }
183
+ }
184
+ return true;
185
+ }
186
+ createLoop(left, right) {
187
+ // Collect all differences between left and right
188
+ const allDiffs = [];
189
+ for (let i = 0; i < left.length; i++) {
190
+ allDiffs.push(this.findDiffs(left[i], right[i], []));
191
+ }
192
+ // Heuristic: Identify the primary loop variable by looking for consistent differences.
193
+ // If multiple nodes differ, they should all differ by the same (start, end) pair.
194
+ if (allDiffs.every((d) => d.length === 0))
195
+ return null;
196
+ let start = null;
197
+ let end = null;
198
+ for (const diffs of allDiffs) {
199
+ for (const diff of diffs) {
200
+ if (!start) {
201
+ start = diff.left;
202
+ end = diff.right;
203
+ }
204
+ else {
205
+ if (!this.areNodesEqual(start, diff.left) || (end && !this.areNodesEqual(end, diff.right))) {
206
+ // Inconsistent difference. For now, we only support one type of difference per loop.
207
+ return null;
208
+ }
209
+ }
210
+ }
211
+ }
212
+ if (!start || !end)
213
+ return null;
214
+ const loopVar = this.generateLoopVar(start, end, left, right);
215
+ const body = left.map((node, i) => {
216
+ const diffs = allDiffs[i];
217
+ const paths = diffs.map((d) => d.path);
218
+ return this.replacePaths(node, paths, {
219
+ type: "item",
220
+ name: loopVar,
221
+ indices: [],
222
+ }); // Explicitly typed as ItemNode
223
+ });
224
+ return {
225
+ type: "loop",
226
+ variable: loopVar,
227
+ start,
228
+ end,
229
+ body: this.normalize(body),
230
+ }; // Explicitly typed as LoopNode
231
+ }
232
+ findDiffs(l, r, path) {
233
+ if (l.type !== r.type)
234
+ return [{ path, left: l, right: r }];
235
+ if (l.type === "dots")
236
+ return [];
237
+ if (l.type === "number") {
238
+ if (l.value !== r.value) {
239
+ return [{ path, left: l, right: r }];
240
+ }
241
+ return [];
242
+ }
243
+ if (l.type === "item") {
244
+ const li = l;
245
+ const ri = r;
246
+ if (li.name !== ri.name)
247
+ return [{ path, left: l, right: r }];
248
+ if (li.indices.length !== ri.indices.length)
249
+ return [{ path, left: l, right: r }];
250
+ const diffs = [];
251
+ for (let i = 0; i < li.indices.length; i++) {
252
+ diffs.push(...this.findDiffs(li.indices[i], ri.indices[i], [...path, "indices", i]));
253
+ }
254
+ return diffs;
255
+ }
256
+ if (l.type === "binop") {
257
+ const bl = l;
258
+ const br = r;
259
+ if (bl.op !== br.op)
260
+ return [{ path, left: l, right: r }];
261
+ return [
262
+ ...this.findDiffs(bl.left, br.left, [...path, "left"]),
263
+ ...this.findDiffs(bl.right, br.right, [...path, "right"]),
264
+ ];
265
+ }
266
+ if (l.type === "loop") {
267
+ const ll = l;
268
+ const rr = r;
269
+ // For loops, we assume match already checked structural equality.
270
+ // Differences can be in start, end, or body.
271
+ const diffs = [];
272
+ diffs.push(...this.findDiffs(ll.start, rr.start, [...path, "start"]));
273
+ diffs.push(...this.findDiffs(ll.end, rr.end, [...path, "end"]));
274
+ for (let i = 0; i < ll.body.length; i++) {
275
+ diffs.push(...this.findDiffs(ll.body[i], rr.body[i], [...path, "body", i]));
276
+ }
277
+ return diffs;
278
+ }
279
+ return [];
280
+ }
281
+ replacePaths(node, paths, replacement) {
282
+ // If any path is empty, replace the whole node
283
+ if (paths.some((p) => p.length === 0))
284
+ return replacement;
285
+ const newNode = { ...node };
286
+ // Group paths by their first element
287
+ const groups = {};
288
+ for (const path of paths) {
289
+ const head = String(path[0]);
290
+ if (!groups[head])
291
+ groups[head] = [];
292
+ groups[head].push(path.slice(1));
293
+ }
294
+ for (const key of Object.keys(groups)) {
295
+ const val = newNode[key];
296
+ if (Array.isArray(val)) {
297
+ const nextPathsByIdx = {};
298
+ for (const p of groups[key]) {
299
+ const idx = Number(p[0]);
300
+ if (!nextPathsByIdx[idx])
301
+ nextPathsByIdx[idx] = [];
302
+ nextPathsByIdx[idx].push(p.slice(1));
303
+ }
304
+ for (const idx of Object.keys(nextPathsByIdx)) {
305
+ val[Number(idx)] = this.replacePaths(val[Number(idx)], nextPathsByIdx[Number(idx)], replacement);
306
+ }
307
+ }
308
+ else {
309
+ newNode[key] = this.replacePaths(val, groups[key], replacement);
310
+ }
311
+ }
312
+ return newNode;
313
+ }
314
+ generateLoopVar(start, end, left, right) {
315
+ const used = new Set();
316
+ const extract = (node) => {
317
+ if (!node)
318
+ return;
319
+ if (node.type === "item") {
320
+ used.add(node.name);
321
+ node.indices.forEach(extract);
322
+ }
323
+ else if (node.type === "binop") {
324
+ extract(node.left);
325
+ extract(node.right);
326
+ }
327
+ else if (node.type === "loop") {
328
+ const l = node;
329
+ used.add(l.variable);
330
+ extract(l.start);
331
+ extract(l.end);
332
+ l.body.forEach(extract);
333
+ }
334
+ else if (node.type === "format") {
335
+ node.children.forEach(extract);
336
+ }
337
+ };
338
+ extract(start);
339
+ extract(end);
340
+ left.forEach(extract);
341
+ right.forEach(extract);
342
+ const candidates = ["i", "j", "k", "l", "m"];
343
+ for (const c of candidates) {
344
+ if (!used.has(c))
345
+ return c;
346
+ }
347
+ return "i";
348
+ }
349
+ areNodesEqual(a, b) {
350
+ if (a.type !== b.type)
351
+ return false;
352
+ if (a.type === "item") {
353
+ const ia = a;
354
+ const ib = b;
355
+ if (ia.name !== ib.name)
356
+ return false;
357
+ if (ia.indices.length !== ib.indices.length)
358
+ return false;
359
+ for (let i = 0; i < ia.indices.length; i++) {
360
+ if (!this.areNodesEqual(ia.indices[i], ib.indices[i]))
361
+ return false;
362
+ }
363
+ return true;
364
+ }
365
+ if (a.type === "number") {
366
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
367
+ return a.value === b.value;
368
+ }
369
+ if (a.type === "binop") {
370
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
371
+ const ba = a;
372
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
373
+ const bb = b;
374
+ return ba.op === bb.op && this.areNodesEqual(ba.left, bb.left) && this.areNodesEqual(ba.right, bb.right);
375
+ }
376
+ return JSON.stringify(a) === JSON.stringify(b);
377
+ }
378
+ }
379
+ //# sourceMappingURL=analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../../src/analyzer/analyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ export interface Sample {
2
+ input: string;
3
+ output: string;
4
+ }
5
+ type OutputType = {
6
+ returnType: string;
7
+ yesStr?: string;
8
+ noStr?: string;
9
+ multipleColumns: boolean;
10
+ multipleRows: boolean;
11
+ variableArray: boolean;
12
+ };
13
+ type ParseResult = OutputType & {
14
+ inputFormat: string;
15
+ samples: Sample[];
16
+ multipleCases: boolean;
17
+ queryType: boolean;
18
+ judgeType: string;
19
+ errorTolerance?: number;
20
+ mod?: number;
21
+ };
22
+ export declare function parseHtml(html: string): ParseResult;
23
+ export {};
24
+ //# sourceMappingURL=html-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html-parser.d.ts","sourceRoot":"","sources":["../../src/analyzer/html-parser.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,KAAK,UAAU,GAAG;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,KAAK,WAAW,GAAG,UAAU,GAAG;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAoInD"}