@herb-tools/printer 0.6.0 → 0.7.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.
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { Visitor, isToken, isParseResult } from '@herb-tools/core';
1
+ import { Visitor, isToken, isParseResult, getNodesBeforePosition, getNodesAfterPosition, filterNodes, ERBContentNode, isERBOutputNode } from '@herb-tools/core';
2
2
 
3
3
  class PrintContext {
4
4
  output = "";
@@ -121,9 +121,16 @@ class Printer extends Visitor {
121
121
  * @throws {Error} When node has parse errors and ignoreErrors is false
122
122
  */
123
123
  print(input, options = DEFAULT_PRINT_OPTIONS) {
124
+ if (!input)
125
+ return "";
124
126
  if (isToken(input)) {
125
127
  return input.value;
126
128
  }
129
+ if (Array.isArray(input)) {
130
+ this.context.reset();
131
+ input.forEach(node => this.visit(node));
132
+ return this.context.getOutput();
133
+ }
127
134
  const node = isParseResult(input) ? input.value : input;
128
135
  if (options.ignoreErrors === false && node.recursiveErrors().length > 0) {
129
136
  throw new Error(`Cannot print the node (${node.type}) since it or any of its children has parse errors. Either pass in a valid Node or call \`print()\` using \`print(node, { ignoreErrors: true })\``);
@@ -132,11 +139,23 @@ class Printer extends Visitor {
132
139
  this.visit(node);
133
140
  return this.context.getOutput();
134
141
  }
135
- visitDocumentNode(node) {
136
- this.visitChildNodes(node);
142
+ write(content) {
143
+ this.context.write(content);
137
144
  }
145
+ }
146
+
147
+ /**
148
+ * IdentityPrinter - Provides lossless reconstruction of the original source
149
+ *
150
+ * This printer aims to reconstruct the original input as faithfully as possible,
151
+ * preserving all whitespace, formatting, and structure. It's useful for:
152
+ * - Testing parser accuracy (input should equal output)
153
+ * - Baseline printing before applying transformations
154
+ * - Verifying AST round-trip fidelity
155
+ */
156
+ class IdentityPrinter extends Printer {
138
157
  visitLiteralNode(node) {
139
- this.context.write(node.content);
158
+ this.write(node.content);
140
159
  }
141
160
  visitHTMLTextNode(node) {
142
161
  this.write(node.content);
@@ -148,25 +167,32 @@ class Printer extends Visitor {
148
167
  }
149
168
  visitHTMLOpenTagNode(node) {
150
169
  if (node.tag_opening) {
151
- this.context.write(node.tag_opening.value);
170
+ this.write(node.tag_opening.value);
152
171
  }
153
172
  if (node.tag_name) {
154
- this.context.write(node.tag_name.value);
173
+ this.write(node.tag_name.value);
155
174
  }
156
175
  this.visitChildNodes(node);
157
176
  if (node.tag_closing) {
158
- this.context.write(node.tag_closing.value);
177
+ this.write(node.tag_closing.value);
159
178
  }
160
179
  }
161
180
  visitHTMLCloseTagNode(node) {
162
181
  if (node.tag_opening) {
163
- this.context.write(node.tag_opening.value);
182
+ this.write(node.tag_opening.value);
164
183
  }
165
184
  if (node.tag_name) {
166
- this.context.write(node.tag_name.value);
185
+ const before = getNodesBeforePosition(node.children, node.tag_name.location.start, true);
186
+ const after = getNodesAfterPosition(node.children, node.tag_name.location.end);
187
+ this.visitAll(before);
188
+ this.write(node.tag_name.value);
189
+ this.visitAll(after);
190
+ }
191
+ else {
192
+ this.visitAll(node.children);
167
193
  }
168
194
  if (node.tag_closing) {
169
- this.context.write(node.tag_closing.value);
195
+ this.write(node.tag_closing.value);
170
196
  }
171
197
  }
172
198
  visitHTMLElementNode(node) {
@@ -192,7 +218,7 @@ class Printer extends Visitor {
192
218
  this.visit(node.name);
193
219
  }
194
220
  if (node.equals) {
195
- this.context.write(node.equals.value);
221
+ this.write(node.equals.value);
196
222
  }
197
223
  if (node.equals && node.value) {
198
224
  this.visit(node.value);
@@ -203,47 +229,47 @@ class Printer extends Visitor {
203
229
  }
204
230
  visitHTMLAttributeValueNode(node) {
205
231
  if (node.quoted && node.open_quote) {
206
- this.context.write(node.open_quote.value);
232
+ this.write(node.open_quote.value);
207
233
  }
208
234
  this.visitChildNodes(node);
209
235
  if (node.quoted && node.close_quote) {
210
- this.context.write(node.close_quote.value);
236
+ this.write(node.close_quote.value);
211
237
  }
212
238
  }
213
239
  visitHTMLCommentNode(node) {
214
240
  if (node.comment_start) {
215
- this.context.write(node.comment_start.value);
241
+ this.write(node.comment_start.value);
216
242
  }
217
243
  this.visitChildNodes(node);
218
244
  if (node.comment_end) {
219
- this.context.write(node.comment_end.value);
245
+ this.write(node.comment_end.value);
220
246
  }
221
247
  }
222
248
  visitHTMLDoctypeNode(node) {
223
249
  if (node.tag_opening) {
224
- this.context.write(node.tag_opening.value);
250
+ this.write(node.tag_opening.value);
225
251
  }
226
252
  this.visitChildNodes(node);
227
253
  if (node.tag_closing) {
228
- this.context.write(node.tag_closing.value);
254
+ this.write(node.tag_closing.value);
229
255
  }
230
256
  }
231
257
  visitXMLDeclarationNode(node) {
232
258
  if (node.tag_opening) {
233
- this.context.write(node.tag_opening.value);
259
+ this.write(node.tag_opening.value);
234
260
  }
235
261
  this.visitChildNodes(node);
236
262
  if (node.tag_closing) {
237
- this.context.write(node.tag_closing.value);
263
+ this.write(node.tag_closing.value);
238
264
  }
239
265
  }
240
266
  visitCDATANode(node) {
241
267
  if (node.tag_opening) {
242
- this.context.write(node.tag_opening.value);
268
+ this.write(node.tag_opening.value);
243
269
  }
244
270
  this.visitChildNodes(node);
245
271
  if (node.tag_closing) {
246
- this.context.write(node.tag_closing.value);
272
+ this.write(node.tag_closing.value);
247
273
  }
248
274
  }
249
275
  visitERBContentNode(node) {
@@ -401,31 +427,242 @@ class Printer extends Visitor {
401
427
  */
402
428
  printERBNode(node) {
403
429
  if (node.tag_opening) {
404
- this.context.write(node.tag_opening.value);
430
+ this.write(node.tag_opening.value);
405
431
  }
406
432
  if (node.content) {
407
- this.context.write(node.content.value);
433
+ this.write(node.content.value);
408
434
  }
409
435
  if (node.tag_closing) {
410
- this.context.write(node.tag_closing.value);
436
+ this.write(node.tag_closing.value);
411
437
  }
412
438
  }
413
- write(content) {
414
- this.context.write(content);
415
- }
416
439
  }
417
440
 
441
+ const DEFAULT_ERB_TO_RUBY_STRING_OPTIONS = {
442
+ ...DEFAULT_PRINT_OPTIONS,
443
+ forceQuotes: false
444
+ };
418
445
  /**
419
- * IdentityPrinter - Provides lossless reconstruction of the original source
446
+ * ERBToRubyStringPrinter - Converts ERB snippets to Ruby strings with interpolation
420
447
  *
421
- * This printer aims to reconstruct the original input as faithfully as possible,
422
- * preserving all whitespace, formatting, and structure. It's useful for:
423
- * - Testing parser accuracy (input should equal output)
424
- * - Baseline printing before applying transformations
425
- * - Verifying AST round-trip fidelity
448
+ * This printer transforms ERB templates into Ruby strings by:
449
+ * - Converting literal text to string content
450
+ * - Converting <%= %> tags to #{} interpolation
451
+ * - Converting simple if/else blocks to ternary operators
452
+ * - Ignoring <% %> tags (they don't produce output)
453
+ *
454
+ * Examples:
455
+ * - `hello world <%= hello %>` => `"hello world #{hello}"`
456
+ * - `hello world <% hello %>` => `"hello world "`
457
+ * - `Welcome <%= user.name %>!` => `"Welcome #{user.name}!"`
458
+ * - `<% if logged_in? %>Welcome<% else %>Login<% end %>` => `"logged_in? ? "Welcome" : "Login"`
459
+ * - `<% if logged_in? %>Welcome<% else %>Login<% end %>!` => `"#{logged_in? ? "Welcome" : "Login"}!"`
426
460
  */
427
- class IdentityPrinter extends Printer {
461
+ class ERBToRubyStringPrinter extends IdentityPrinter {
462
+ // TODO: cleanup `.type === "AST_*" checks`
463
+ static print(node, options = DEFAULT_ERB_TO_RUBY_STRING_OPTIONS) {
464
+ const erbNodes = filterNodes([node], ERBContentNode);
465
+ if (erbNodes.length === 1 && isERBOutputNode(erbNodes[0]) && !options.forceQuotes) {
466
+ return (erbNodes[0].content?.value || "").trim();
467
+ }
468
+ if ('children' in node && Array.isArray(node.children)) {
469
+ const childErbNodes = filterNodes(node.children, ERBContentNode);
470
+ const hasOnlyERBContent = node.children.length > 0 && node.children.length === childErbNodes.length;
471
+ if (hasOnlyERBContent && childErbNodes.length === 1 && isERBOutputNode(childErbNodes[0]) && !options.forceQuotes) {
472
+ return (childErbNodes[0].content?.value || "").trim();
473
+ }
474
+ if (node.children.length === 1 && node.children[0].type === "AST_ERB_IF_NODE" && !options.forceQuotes) {
475
+ const ifNode = node.children[0];
476
+ const printer = new ERBToRubyStringPrinter();
477
+ if (printer.canConvertToTernary(ifNode)) {
478
+ printer.convertToTernaryWithoutWrapper(ifNode);
479
+ return printer.context.getOutput();
480
+ }
481
+ }
482
+ if (node.children.length === 1 && node.children[0].type === "AST_ERB_UNLESS_NODE" && !options.forceQuotes) {
483
+ const unlessNode = node.children[0];
484
+ const printer = new ERBToRubyStringPrinter();
485
+ if (printer.canConvertUnlessToTernary(unlessNode)) {
486
+ printer.convertUnlessToTernaryWithoutWrapper(unlessNode);
487
+ return printer.context.getOutput();
488
+ }
489
+ }
490
+ }
491
+ const printer = new ERBToRubyStringPrinter();
492
+ printer.context.write('"');
493
+ printer.visit(node);
494
+ printer.context.write('"');
495
+ return printer.context.getOutput();
496
+ }
497
+ visitHTMLTextNode(node) {
498
+ if (node.content) {
499
+ const escapedContent = node.content.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
500
+ this.context.write(escapedContent);
501
+ }
502
+ }
503
+ visitERBContentNode(node) {
504
+ if (isERBOutputNode(node)) {
505
+ this.context.write("#{");
506
+ if (node.content?.value) {
507
+ this.context.write(node.content.value.trim());
508
+ }
509
+ this.context.write("}");
510
+ }
511
+ }
512
+ visitERBIfNode(node) {
513
+ if (this.canConvertToTernary(node)) {
514
+ this.convertToTernary(node);
515
+ }
516
+ }
517
+ visitERBUnlessNode(node) {
518
+ if (this.canConvertUnlessToTernary(node)) {
519
+ this.convertUnlessToTernary(node);
520
+ }
521
+ }
522
+ visitHTMLAttributeValueNode(node) {
523
+ this.visitChildNodes(node);
524
+ }
525
+ canConvertToTernary(node) {
526
+ if (node.subsequent && node.subsequent.type !== "AST_ERB_ELSE_NODE") {
527
+ return false;
528
+ }
529
+ const ifOnlyText = node.statements ? node.statements.every(statement => statement.type === "AST_HTML_TEXT_NODE") : true;
530
+ if (!ifOnlyText)
531
+ return false;
532
+ if (node.subsequent && node.subsequent.type === "AST_ERB_ELSE_NODE") {
533
+ return node.subsequent.statements
534
+ ? node.subsequent.statements.every(statement => statement.type === "AST_HTML_TEXT_NODE")
535
+ : true;
536
+ }
537
+ return true;
538
+ }
539
+ convertToTernary(node) {
540
+ this.context.write("#{");
541
+ if (node.content?.value) {
542
+ const condition = node.content.value.trim();
543
+ const cleanCondition = condition.replace(/^if\s+/, '');
544
+ const needsParentheses = cleanCondition.includes(' ');
545
+ if (needsParentheses) {
546
+ this.context.write("(");
547
+ }
548
+ this.context.write(cleanCondition);
549
+ if (needsParentheses) {
550
+ this.context.write(")");
551
+ }
552
+ }
553
+ this.context.write(" ? ");
554
+ this.context.write('"');
555
+ if (node.statements) {
556
+ node.statements.forEach(statement => this.visit(statement));
557
+ }
558
+ this.context.write('"');
559
+ this.context.write(" : ");
560
+ this.context.write('"');
561
+ if (node.subsequent && node.subsequent.type === "AST_ERB_ELSE_NODE" && node.subsequent.statements) {
562
+ node.subsequent.statements.forEach(statement => this.visit(statement));
563
+ }
564
+ this.context.write('"');
565
+ this.context.write("}");
566
+ }
567
+ convertToTernaryWithoutWrapper(node) {
568
+ if (node.subsequent && node.subsequent.type !== "AST_ERB_ELSE_NODE") {
569
+ return false;
570
+ }
571
+ if (node.content?.value) {
572
+ const condition = node.content.value.trim();
573
+ const cleanCondition = condition.replace(/^if\s+/, '');
574
+ const needsParentheses = cleanCondition.includes(' ');
575
+ if (needsParentheses) {
576
+ this.context.write("(");
577
+ }
578
+ this.context.write(cleanCondition);
579
+ if (needsParentheses) {
580
+ this.context.write(")");
581
+ }
582
+ }
583
+ this.context.write(" ? ");
584
+ this.context.write('"');
585
+ if (node.statements) {
586
+ node.statements.forEach(statement => this.visit(statement));
587
+ }
588
+ this.context.write('"');
589
+ this.context.write(" : ");
590
+ this.context.write('"');
591
+ if (node.subsequent && node.subsequent.type === "AST_ERB_ELSE_NODE" && node.subsequent.statements) {
592
+ node.subsequent.statements.forEach(statement => this.visit(statement));
593
+ }
594
+ this.context.write('"');
595
+ }
596
+ canConvertUnlessToTernary(node) {
597
+ const unlessOnlyText = node.statements ? node.statements.every(statement => statement.type === "AST_HTML_TEXT_NODE") : true;
598
+ if (!unlessOnlyText)
599
+ return false;
600
+ if (node.else_clause && node.else_clause.type === "AST_ERB_ELSE_NODE") {
601
+ return node.else_clause.statements
602
+ ? node.else_clause.statements.every(statement => statement.type === "AST_HTML_TEXT_NODE")
603
+ : true;
604
+ }
605
+ return true;
606
+ }
607
+ convertUnlessToTernary(node) {
608
+ this.context.write("#{");
609
+ if (node.content?.value) {
610
+ const condition = node.content.value.trim();
611
+ const cleanCondition = condition.replace(/^unless\s+/, '');
612
+ const needsParentheses = cleanCondition.includes(' ');
613
+ this.context.write("!(");
614
+ if (needsParentheses) {
615
+ this.context.write("(");
616
+ }
617
+ this.context.write(cleanCondition);
618
+ if (needsParentheses) {
619
+ this.context.write(")");
620
+ }
621
+ this.context.write(")");
622
+ }
623
+ this.context.write(" ? ");
624
+ this.context.write('"');
625
+ if (node.statements) {
626
+ node.statements.forEach(statement => this.visit(statement));
627
+ }
628
+ this.context.write('"');
629
+ this.context.write(" : ");
630
+ this.context.write('"');
631
+ if (node.else_clause && node.else_clause.type === "AST_ERB_ELSE_NODE") {
632
+ node.else_clause.statements.forEach(statement => this.visit(statement));
633
+ }
634
+ this.context.write('"');
635
+ this.context.write("}");
636
+ }
637
+ convertUnlessToTernaryWithoutWrapper(node) {
638
+ if (node.content?.value) {
639
+ const condition = node.content.value.trim();
640
+ const cleanCondition = condition.replace(/^unless\s+/, '');
641
+ const needsParentheses = cleanCondition.includes(' ');
642
+ this.context.write("!(");
643
+ if (needsParentheses) {
644
+ this.context.write("(");
645
+ }
646
+ this.context.write(cleanCondition);
647
+ if (needsParentheses) {
648
+ this.context.write(")");
649
+ }
650
+ this.context.write(")");
651
+ }
652
+ this.context.write(" ? ");
653
+ this.context.write('"');
654
+ if (node.statements) {
655
+ node.statements.forEach(statement => this.visit(statement));
656
+ }
657
+ this.context.write('"');
658
+ this.context.write(" : ");
659
+ this.context.write('"');
660
+ if (node.else_clause && node.else_clause.type === "AST_ERB_ELSE_NODE") {
661
+ node.else_clause.statements.forEach(statement => this.visit(statement));
662
+ }
663
+ this.context.write('"');
664
+ }
428
665
  }
429
666
 
430
- export { DEFAULT_PRINT_OPTIONS, IdentityPrinter, PrintContext, Printer };
667
+ export { DEFAULT_PRINT_OPTIONS, ERBToRubyStringPrinter, IdentityPrinter, PrintContext, Printer };
431
668
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/print-context.ts","../src/printer.ts","../src/identity-printer.ts"],"sourcesContent":[null,null,null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/print-context.ts","../src/printer.ts","../src/identity-printer.ts","../src/erb-to-ruby-string-printer.ts"],"sourcesContent":[null,null,null,null],"names":[],"mappings":";;MAAa,YAAY,CAAA;IACf,MAAM,GAAW,EAAE;IACnB,WAAW,GAAW,CAAC;IACvB,aAAa,GAAW,CAAC;IACzB,aAAa,GAAa,EAAE;AAEpC;;AAEG;AACH,IAAA,KAAK,CAAC,IAAY,EAAA;AAChB,QAAA,IAAI,CAAC,MAAM,IAAI,IAAI;AACnB,QAAA,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM;IACnC;AAEA;;AAEG;AACH,IAAA,uBAAuB,CAAC,IAAY,EAAA;AAClC,QAAA,IAAI,CAAC,MAAM,IAAI,IAAI;QAEnB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAE9B,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM;QACrD;aAAO;AACL,YAAA,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM;QACnC;IACF;AAEA;;AAEG;IACH,MAAM,GAAA;QACJ,IAAI,CAAC,WAAW,EAAE;IACpB;AAEA;;AAEG;IACH,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE;YACxB,IAAI,CAAC,WAAW,EAAE;QACpB;IACF;AAEA;;AAEG;AACH,IAAA,QAAQ,CAAC,OAAe,EAAA;QACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IAChD;AAEA;;AAEG;IACH,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;IAC1B;AAEA;;AAEG;IACH,eAAe,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,aAAa,KAAK,CAAC;IACjC;AAEA;;AAEG;IACH,qBAAqB,GAAA;QACnB,OAAO,IAAI,CAAC,WAAW;IACzB;AAEA;;AAEG;IACH,gBAAgB,GAAA;QACd,OAAO,IAAI,CAAC,aAAa;IAC3B;AAEA;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,OAAO,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;IAChC;AAEA;;AAEG;IACH,SAAS,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;IACpB;AAEA;;AAEG;IACH,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE;AAChB,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC;AACpB,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC;AACtB,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;IACzB;AACD;;ACxFD;;AAEG;AACI,MAAM,qBAAqB,GAAiB;AACjD,IAAA,YAAY,EAAE;;AAGV,MAAgB,OAAQ,SAAQ,OAAO,CAAA;AACjC,IAAA,OAAO,GAAiB,IAAI,YAAY,EAAE;AAEpD;;;;;;;AAOG;AACH,IAAA,OAAO,KAAK,CAAC,KAA6D,EAAE,UAAwB,qBAAqB,EAAA;AACvH,QAAA,MAAM,OAAO,GAAG,IAAK,IAAY,EAAE;QAEnC,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC;IACtC;AAEA;;;;;;;AAOG;AACH,IAAA,KAAK,CAAC,KAA6D,EAAE,OAAA,GAAwB,qBAAqB,EAAA;AAChH,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,EAAE;AAErB,QAAA,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;YAClB,OAAO,KAAK,CAAC,KAAK;QACpB;AAEA,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACpB,YAAA,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACvC,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;QACjC;AAEA,QAAA,MAAM,IAAI,GAAS,aAAa,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK;AAE7D,QAAA,IAAI,OAAO,CAAC,YAAY,KAAK,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;YACvE,MAAM,IAAI,KAAK,CAAC,CAAA,uBAAA,EAA0B,IAAI,CAAC,IAAI,CAAA,iJAAA,CAAmJ,CAAC;QACzM;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AAEpB,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAEhB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;IACjC;AAEU,IAAA,KAAK,CAAC,OAAe,EAAA;AAC7B,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;IAC7B;AACD;;ACvED;;;;;;;;AAQG;AACG,MAAO,eAAgB,SAAQ,OAAO,CAAA;AAC1C,IAAA,gBAAgB,CAAC,IAAuB,EAAA;AACtC,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;IAC1B;AAEA,IAAA,iBAAiB,CAAC,IAAwB,EAAA;AACxC,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;IAC1B;AAEA,IAAA,mBAAmB,CAAC,IAA0B,EAAA;AAC5C,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC9B;IACF;AAEA,IAAA,oBAAoB,CAAC,IAA2B,EAAA;AAC9C,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QACpC;AAEA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACjC;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AAE1B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QACpC;IACF;AAEA,IAAA,qBAAqB,CAAC,IAA4B,EAAA;AAChD,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QACpC;AAEA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;AACxF,YAAA,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;AAE9E,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YACrB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC/B,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACtB;aAAO;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC9B;AAEA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QACpC;IACF;AAEA,IAAA,oBAAoB,CAAC,IAA2B,EAAA;AAC9C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK;QAEpC,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;QAChC;AAEA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC3B;AAEA,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/C;AAEA,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;QAC5B;QAEA,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;QACxB;IACF;AAEA,IAAA,sBAAsB,CAAC,IAA6B,EAAA;AAClD,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QACvB;AAEA,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QAC/B;QAEA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE;AAC7B,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QACxB;IACF;AAEA,IAAA,0BAA0B,CAAC,IAAiC,EAAA;AAC1D,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;IAC5B;AAEA,IAAA,2BAA2B,CAAC,IAAkC,EAAA;QAC5D,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE;YAClC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QACnC;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;QAE1B,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE;YACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QACpC;IACF;AAEA,IAAA,oBAAoB,CAAC,IAA2B,EAAA;AAC9C,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QACtC;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AAE1B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QACpC;IACF;AAEA,IAAA,oBAAoB,CAAC,IAA2B,EAAA;AAC9C,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QACpC;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AAE1B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QACpC;IACF;AAEA,IAAA,uBAAuB,CAAC,IAA8B,EAAA;AACpD,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QACpC;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AAE1B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QACpC;IACF;AAEA,IAAA,cAAc,CAAC,IAAqB,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QACpC;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AAE1B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QACpC;IACF;AAEA,IAAA,mBAAmB,CAAC,IAA0B,EAAA;AAC5C,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;IACzB;AAEA,IAAA,cAAc,CAAC,IAAqB,EAAA;AAClC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAEvB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7D;AAEA,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;QAC7B;AAEA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC3B;IACF;AAEA,IAAA,gBAAgB,CAAC,IAAuB,EAAA;AACtC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAEvB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7D;IACF;AAEA,IAAA,eAAe,CAAC,IAAsB,EAAA;AACpC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;IACzB;AAEA,IAAA,iBAAiB,CAAC,IAAwB,EAAA;AACxC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAEvB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/C;AAEA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC3B;IACF;AAEA,IAAA,gBAAgB,CAAC,IAAuB,EAAA;AACtC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAEvB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACnD;AAEA,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7D;AAEA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;QAC9B;AAEA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC3B;IACF;AAEA,IAAA,gBAAgB,CAAC,IAAuB,EAAA;AACtC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAEvB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7D;IACF;AAEA,IAAA,iBAAiB,CAAC,IAAwB,EAAA;AACxC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAEvB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7D;AAEA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC3B;IACF;AAEA,IAAA,iBAAiB,CAAC,IAAwB,EAAA;AACxC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAEvB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7D;AAEA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC3B;IACF;AAEA,IAAA,eAAe,CAAC,IAAsB,EAAA;AACpC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAEvB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7D;AAEA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC3B;IACF;AAEA,IAAA,iBAAiB,CAAC,IAAwB,EAAA;AACxC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAEvB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7D;AAEA,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC;QAChC;AAEA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;QAC9B;AAEA,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC;QAChC;AAEA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC3B;IACF;AAEA,IAAA,kBAAkB,CAAC,IAAyB,EAAA;AAC1C,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAEvB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7D;AAEA,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;QAC7B;IACF;AAEA,IAAA,kBAAkB,CAAC,IAAyB,EAAA;AAC1C,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAEvB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7D;IACF;AAEA,IAAA,kBAAkB,CAAC,IAAyB,EAAA;AAC1C,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAEvB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7D;AAEA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;QAC9B;AAEA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC3B;IACF;AAEA,IAAA,iBAAiB,CAAC,IAAwB,EAAA;AACxC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;IACzB;AAEA,IAAA,cAAc,CAAC,IAAqB,EAAA;AAClC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAEvB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7D;IACF;AAEA,IAAA,qBAAqB,CAAC,IAA4B,EAAA;AAChD,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAEvB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACnD;AAEA,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7D;AAEA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;QAC9B;AAEA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC3B;IACF;AAEA;;AAEG;AACO,IAAA,YAAY,CAAC,IAAmB,EAAA;AACxC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QACpC;AAEA,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAChC;AAEA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QACpC;IACD;AACF;;AClXM,MAAM,kCAAkC,GAA2B;AACxE,IAAA,GAAG,qBAAqB;AACxB,IAAA,WAAW,EAAE;CACd;AAED;;;;;;;;;;;;;;;AAeG;AACG,MAAO,sBAAuB,SAAQ,eAAe,CAAA;;AAGzD,IAAA,OAAO,KAAK,CAAC,IAAU,EAAE,UAA2C,kCAAkC,EAAA;QACpG,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC;AAEpD,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;AACjF,YAAA,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE;QAClD;AAEA,QAAA,IAAI,UAAU,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YACtD,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAChE,YAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM;YAEnG,IAAI,iBAAiB,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;AAChH,gBAAA,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE;YACvD;YAEA,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;gBACrG,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAc;AAC5C,gBAAA,MAAM,OAAO,GAAG,IAAI,sBAAsB,EAAE;AAE5C,gBAAA,IAAI,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE;AACvC,oBAAA,OAAO,CAAC,8BAA8B,CAAC,MAAM,CAAC;AAC9C,oBAAA,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE;gBACpC;YACF;YAEA,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,qBAAqB,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;gBACzG,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAkB;AACpD,gBAAA,MAAM,OAAO,GAAG,IAAI,sBAAsB,EAAE;AAE5C,gBAAA,IAAI,OAAO,CAAC,yBAAyB,CAAC,UAAU,CAAC,EAAE;AACjD,oBAAA,OAAO,CAAC,oCAAoC,CAAC,UAAU,CAAC;AACxD,oBAAA,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE;gBACpC;YACF;QACF;AAEA,QAAA,MAAM,OAAO,GAAG,IAAI,sBAAsB,EAAE;AAE5C,QAAA,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AAE1B,QAAA,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;AAEnB,QAAA,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AAE1B,QAAA,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE;IACpC;AAEA,IAAA,iBAAiB,CAAC,IAAkB,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;AAC/E,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC;QACpC;IACF;AAEA,IAAA,mBAAmB,CAAC,IAAoB,EAAA;AACtC,QAAA,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE;AACzB,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;AAExB,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE;AACvB,gBAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAC/C;AAEA,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;QACzB;IACF;AAEA,IAAA,cAAc,CAAC,IAAe,EAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE;AAClC,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAC7B;IACF;AAEA,IAAA,kBAAkB,CAAC,IAAmB,EAAA;AACpC,QAAA,IAAI,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE;AACxC,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;QACnC;IACF;AAEA,IAAA,2BAA2B,CAAC,IAA4B,EAAA;AACtD,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;IAC5B;AAEQ,IAAA,mBAAmB,CAAC,IAAe,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,mBAAmB,EAAE;AACnE,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,oBAAoB,CAAC,GAAG,IAAI;AACvH,QAAA,IAAI,CAAC,UAAU;AAAE,YAAA,OAAO,KAAK;AAE7B,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,mBAAmB,EAAE;AACnE,YAAA,OAAQ,IAAI,CAAC,UAA0B,CAAC;AACtC,kBAAG,IAAI,CAAC,UAA0B,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,oBAAoB;kBACtG,IAAI;QACV;AAEA,QAAA,OAAO,IAAI;IACb;AAEQ,IAAA,gBAAgB,CAAC,IAAe,EAAA;AACtC,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;AAExB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE;YACvB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE;YAC3C,MAAM,cAAc,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;YACtD,MAAM,gBAAgB,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC;YAErD,IAAI,gBAAgB,EAAE;AACpB,gBAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;YACzB;AAEA,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC;YAElC,IAAI,gBAAgB,EAAE;AACpB,gBAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;YACzB;QACF;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AAEvB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7D;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AAEvB,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,mBAAmB,IAAK,IAAI,CAAC,UAA0B,CAAC,UAAU,EAAE;AACjH,YAAA,IAAI,CAAC,UAA0B,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACzF;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;IACzB;AAEQ,IAAA,8BAA8B,CAAC,IAAe,EAAA;AACpD,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,mBAAmB,EAAE;AACnE,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE;YACvB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE;YAC3C,MAAM,cAAc,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;YACtD,MAAM,gBAAgB,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC;YAErD,IAAI,gBAAgB,EAAE;AACpB,gBAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;YACzB;AAEA,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC;YAElC,IAAI,gBAAgB,EAAE;AACpB,gBAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;YACzB;QACF;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AAEvB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7D;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AAEvB,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,mBAAmB,IAAK,IAAI,CAAC,UAA0B,CAAC,UAAU,EAAE;AACjH,YAAA,IAAI,CAAC,UAA0B,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACzF;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;IACzB;AAEQ,IAAA,yBAAyB,CAAC,IAAmB,EAAA;AACnD,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,oBAAoB,CAAC,GAAG,IAAI;AAE3H,QAAA,IAAI,CAAC,cAAc;AAAE,YAAA,OAAO,KAAK;AAEjC,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,mBAAmB,EAAE;AACrE,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC;AACtB,kBAAE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,oBAAoB;kBACtF,IAAI;QACV;AAEA,QAAA,OAAO,IAAI;IACb;AAEQ,IAAA,sBAAsB,CAAC,IAAmB,EAAA;AAChD,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;AAExB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE;YACvB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE;YAC3C,MAAM,cAAc,GAAG,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;YAC1D,MAAM,gBAAgB,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC;AAErD,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;YAExB,IAAI,gBAAgB,EAAE;AACpB,gBAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;YACzB;AAEA,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC;YAElC,IAAI,gBAAgB,EAAE;AACpB,gBAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;YACzB;AAEA,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;QACzB;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AAEvB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7D;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AAEvB,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,mBAAmB,EAAE;AACrE,YAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACzE;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;IACzB;AAEQ,IAAA,oCAAoC,CAAC,IAAmB,EAAA;AAC9D,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE;YACvB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE;YAC3C,MAAM,cAAc,GAAG,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;YAC1D,MAAM,gBAAgB,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC;AAErD,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;YAExB,IAAI,gBAAgB,EAAE;AACpB,gBAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;YACzB;AAEA,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC;YAElC,IAAI,gBAAgB,EAAE;AACpB,gBAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;YACzB;AAEA,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;QACzB;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AAEvB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7D;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AAEvB,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,mBAAmB,EAAE;AACrE,YAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACzE;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;IACzB;AACD;;;;"}