typescript-language-server 2.1.0 → 2.3.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 (118) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +2 -0
  3. package/lib/calls.d.ts +1 -1
  4. package/lib/calls.d.ts.map +1 -1
  5. package/lib/calls.js +5 -4
  6. package/lib/calls.js.map +1 -1
  7. package/lib/completion.d.ts +2 -3
  8. package/lib/completion.d.ts.map +1 -1
  9. package/lib/completion.js +29 -31
  10. package/lib/completion.js.map +1 -1
  11. package/lib/configuration-manager.d.ts +2 -3
  12. package/lib/configuration-manager.d.ts.map +1 -1
  13. package/lib/configuration-manager.js +8 -6
  14. package/lib/configuration-manager.js.map +1 -1
  15. package/lib/diagnostic-queue.d.ts +1 -2
  16. package/lib/diagnostic-queue.d.ts.map +1 -1
  17. package/lib/diagnostic-queue.js.map +1 -1
  18. package/lib/document-symbol.d.ts +1 -1
  19. package/lib/document-symbol.d.ts.map +1 -1
  20. package/lib/document-symbol.js +2 -2
  21. package/lib/document-symbol.js.map +1 -1
  22. package/lib/features/fix-all.d.ts.map +1 -1
  23. package/lib/features/fix-all.js +8 -6
  24. package/lib/features/fix-all.js.map +1 -1
  25. package/lib/features/inlay-hints.d.ts.map +1 -1
  26. package/lib/features/inlay-hints.js +2 -1
  27. package/lib/features/inlay-hints.js.map +1 -1
  28. package/lib/features/source-definition.js +2 -1
  29. package/lib/features/source-definition.js.map +1 -1
  30. package/lib/hover.d.ts +1 -1
  31. package/lib/hover.d.ts.map +1 -1
  32. package/lib/lsp-connection.d.ts.map +1 -1
  33. package/lib/lsp-connection.js +2 -0
  34. package/lib/lsp-connection.js.map +1 -1
  35. package/lib/lsp-protocol.inlayHints.proposed.d.ts +5 -5
  36. package/lib/lsp-protocol.inlayHints.proposed.d.ts.map +1 -1
  37. package/lib/lsp-server.d.ts +8 -4
  38. package/lib/lsp-server.d.ts.map +1 -1
  39. package/lib/lsp-server.js +87 -57
  40. package/lib/lsp-server.js.map +1 -1
  41. package/lib/lsp-server.spec.js +6 -6
  42. package/lib/lsp-server.spec.js.map +1 -1
  43. package/lib/organize-imports.d.ts +1 -1
  44. package/lib/organize-imports.d.ts.map +1 -1
  45. package/lib/organize-imports.js.map +1 -1
  46. package/lib/organize-imports.spec.js.map +1 -1
  47. package/lib/protocol-translation.d.ts +2 -2
  48. package/lib/protocol-translation.d.ts.map +1 -1
  49. package/lib/protocol-translation.js +10 -14
  50. package/lib/protocol-translation.js.map +1 -1
  51. package/lib/quickfix.d.ts +1 -1
  52. package/lib/quickfix.d.ts.map +1 -1
  53. package/lib/quickfix.js +1 -1
  54. package/lib/quickfix.js.map +1 -1
  55. package/lib/refactor.d.ts +1 -2
  56. package/lib/refactor.d.ts.map +1 -1
  57. package/lib/refactor.js +4 -4
  58. package/lib/refactor.js.map +1 -1
  59. package/lib/ts-protocol.d.ts +29 -14
  60. package/lib/ts-protocol.d.ts.map +1 -1
  61. package/lib/ts-protocol.js +50 -13
  62. package/lib/ts-protocol.js.map +1 -1
  63. package/lib/tsServer/callbackMap.d.ts +1 -1
  64. package/lib/tsServer/callbackMap.d.ts.map +1 -1
  65. package/lib/tsServer/callbackMap.js.map +1 -1
  66. package/lib/tsServer/requestQueue.d.ts +1 -1
  67. package/lib/tsServer/requestQueue.d.ts.map +1 -1
  68. package/lib/tsServer/requests.d.ts +4 -3
  69. package/lib/tsServer/requests.d.ts.map +1 -1
  70. package/lib/tsServer/requests.js +2 -0
  71. package/lib/tsServer/requests.js.map +1 -1
  72. package/lib/tsServer/server.d.ts +9 -4
  73. package/lib/tsServer/server.d.ts.map +1 -1
  74. package/lib/tsServer/server.js +7 -0
  75. package/lib/tsServer/server.js.map +1 -1
  76. package/lib/tsServer/serverError.d.ts +1 -1
  77. package/lib/tsServer/serverError.d.ts.map +1 -1
  78. package/lib/tsServer/serverError.js +4 -4
  79. package/lib/tsServer/serverError.js.map +1 -1
  80. package/lib/tsServer/serverProcess.d.ts.map +1 -1
  81. package/lib/tsServer/serverProcess.js +9 -2
  82. package/lib/tsServer/serverProcess.js.map +1 -1
  83. package/lib/tsServer/spawner.js +3 -3
  84. package/lib/tsServer/spawner.js.map +1 -1
  85. package/lib/tsServer/tracer.d.ts +2 -2
  86. package/lib/tsServer/tracer.d.ts.map +1 -1
  87. package/lib/tsServer/versionProvider.js +1 -1
  88. package/lib/tsServer/versionProvider.js.map +1 -1
  89. package/lib/tsp-client.d.ts +2 -2
  90. package/lib/tsp-client.d.ts.map +1 -1
  91. package/lib/tsp-client.js +10 -2
  92. package/lib/tsp-client.js.map +1 -1
  93. package/lib/tsp-client.spec.js +11 -9
  94. package/lib/tsp-client.spec.js.map +1 -1
  95. package/lib/utils/SnippetString.js +4 -4
  96. package/lib/utils/SnippetString.js.map +1 -1
  97. package/lib/utils/api.d.ts +2 -0
  98. package/lib/utils/api.d.ts.map +1 -1
  99. package/lib/utils/api.js +17 -15
  100. package/lib/utils/api.js.map +1 -1
  101. package/lib/utils/logger.d.ts +1 -1
  102. package/lib/utils/logger.d.ts.map +1 -1
  103. package/lib/utils/logger.js +1 -3
  104. package/lib/utils/logger.js.map +1 -1
  105. package/lib/utils/previewer.d.ts +1 -1
  106. package/lib/utils/previewer.d.ts.map +1 -1
  107. package/lib/utils/previewer.js.map +1 -1
  108. package/lib/utils/tsconfig.d.ts +1 -1
  109. package/lib/utils/tsconfig.d.ts.map +1 -1
  110. package/lib/utils/tsconfig.js +5 -4
  111. package/lib/utils/tsconfig.js.map +1 -1
  112. package/lib/utils/typeConverters.d.ts +1 -1
  113. package/lib/utils/typeConverters.d.ts.map +1 -1
  114. package/package.json +16 -16
  115. package/lib/tsp-command-types.d.ts +0 -188
  116. package/lib/tsp-command-types.d.ts.map +0 -1
  117. package/lib/tsp-command-types.js +0 -99
  118. package/lib/tsp-command-types.js.map +0 -1
package/lib/lsp-server.js CHANGED
@@ -14,7 +14,7 @@ import API from './utils/api.js';
14
14
  import { LogLevel, PrefixingLogger } from './utils/logger.js';
15
15
  import { TspClient } from './tsp-client.js';
16
16
  import { DiagnosticEventQueue } from './diagnostic-queue.js';
17
- import { toDocumentHighlight, uriToPath, toSymbolKind, toLocation, pathToUri, toTextEdit, normalizePath } from './protocol-translation.js';
17
+ import { toDocumentHighlight, uriToPath, toSymbolKind, toLocation, toSelectionRange, pathToUri, toTextEdit, normalizePath } from './protocol-translation.js';
18
18
  import { LspDocuments } from './document.js';
19
19
  import { asCompletionItem, asResolvedCompletionItem, getCompletionTriggerCharacter } from './completion.js';
20
20
  import { asSignatureHelp, toTsTriggerReason } from './hover.js';
@@ -22,6 +22,7 @@ import { Commands } from './commands.js';
22
22
  import { provideQuickFix } from './quickfix.js';
23
23
  import { provideRefactors } from './refactor.js';
24
24
  import { provideOrganizeImports } from './organize-imports.js';
25
+ import { tsp } from './ts-protocol.js';
25
26
  import { collectDocumentSymbols, collectSymbolInformation } from './document-symbol.js';
26
27
  import { computeCallers, computeCallees } from './calls.js';
27
28
  import { TsServerLogLevel } from './utils/configuration.js';
@@ -37,6 +38,7 @@ import { getInferredProjectCompilerOptions } from './utils/tsconfig.js';
37
38
  import { Position, Range } from './utils/typeConverters.js';
38
39
  import { CodeActionKind } from './utils/types.js';
39
40
  import { ConfigurationManager } from './configuration-manager.js';
41
+ var CommandTypes = tsp.CommandTypes;
40
42
  export class LspServer {
41
43
  constructor(options) {
42
44
  this.options = options;
@@ -137,10 +139,10 @@ export class LspServer {
137
139
  logger: this.options.logger,
138
140
  onEvent: this.onTsEvent.bind(this),
139
141
  onExit: (exitCode, signal) => {
142
+ this.shutdown();
140
143
  if (exitCode) {
141
- this.logger.error(`tsserver process has exited (exit code: ${exitCode}, signal: ${signal}). Stopping the server.`);
144
+ throw new Error(`tsserver process has exited (exit code: ${exitCode}, signal: ${signal}). Stopping the server.`);
142
145
  }
143
- this.shutdown();
144
146
  },
145
147
  });
146
148
  const started = this.tspClient.start();
@@ -156,6 +158,7 @@ export class LspServer {
156
158
  this.typeScriptAutoFixProvider = new TypeScriptAutoFixProvider(this.tspClient);
157
159
  this.configurationManager.setAndConfigureTspClient(this.workspaceRoot, this._tspClient, hostInfo);
158
160
  this.setCompilerOptionsForInferredProjects();
161
+ const prepareSupport = textDocument?.rename?.prepareSupport && this.tspClient.apiVersion.gte(API.v310);
159
162
  const initializeResult = {
160
163
  capabilities: {
161
164
  textDocumentSync: lsp.TextDocumentSyncKind.Incremental,
@@ -188,8 +191,9 @@ export class LspServer {
188
191
  },
189
192
  hoverProvider: true,
190
193
  inlayHintProvider: true,
191
- renameProvider: true,
194
+ renameProvider: prepareSupport ? { prepareProvider: true } : true,
192
195
  referencesProvider: true,
196
+ selectionRangeProvider: true,
193
197
  signatureHelpProvider: {
194
198
  triggerCharacters: ['(', ',', '<'],
195
199
  retriggerCharacters: [')'],
@@ -254,7 +258,7 @@ export class LspServer {
254
258
  }
255
259
  // Bundled version
256
260
  const bundledVersion = typescriptVersionProvider.bundledVersion();
257
- if (bundledVersion && bundledVersion.isValid) {
261
+ if (bundledVersion?.isValid) {
258
262
  return bundledVersion;
259
263
  }
260
264
  return null;
@@ -278,7 +282,7 @@ export class LspServer {
278
282
  resolveJsonModule: true,
279
283
  },
280
284
  };
281
- this.tspClient.executeWithoutWaitingForResponse("compilerOptionsForInferredProjects" /* CommandTypes.CompilerOptionsForInferredProjects */, args);
285
+ this.tspClient.executeWithoutWaitingForResponse(CommandTypes.CompilerOptionsForInferredProjects, args);
282
286
  }
283
287
  didChangeConfiguration(params) {
284
288
  this.configurationManager.setWorkspaceConfiguration(params.settings || {});
@@ -326,7 +330,7 @@ export class LspServer {
326
330
  return;
327
331
  }
328
332
  if (this.documents.open(file, params.textDocument)) {
329
- this.tspClient.notify("open" /* CommandTypes.Open */, {
333
+ this.tspClient.notify(CommandTypes.Open, {
330
334
  file,
331
335
  fileContent: params.textDocument.text,
332
336
  scriptKindName: this.getScriptKindName(params.textDocument.languageId),
@@ -368,7 +372,7 @@ export class LspServer {
368
372
  if (!document) {
369
373
  return;
370
374
  }
371
- this.tspClient.notify("close" /* CommandTypes.Close */, { file });
375
+ this.tspClient.notify(CommandTypes.Close, { file });
372
376
  // We won't be updating diagnostics anymore for that file, so clear them
373
377
  // so we don't leave stale ones.
374
378
  this.options.lspClient.publishDiagnostics({
@@ -385,8 +389,8 @@ export class LspServer {
385
389
  }
386
390
  const document = this.documents.get(file);
387
391
  if (!document) {
388
- this.logger.error('Received change on non-opened document ' + textDocument.uri);
389
- throw new Error('Received change on non-opened document ' + textDocument.uri);
392
+ this.logger.error(`Received change on non-opened document ${textDocument.uri}`);
393
+ throw new Error(`Received change on non-opened document ${textDocument.uri}`);
390
394
  }
391
395
  if (textDocument.version === null) {
392
396
  throw new Error(`Received document change event for ${textDocument.uri} without valid version identifier`);
@@ -409,7 +413,7 @@ export class LspServer {
409
413
  endLine = endPos.line + 1;
410
414
  endOffset = endPos.character + 1;
411
415
  }
412
- this.tspClient.notify("change" /* CommandTypes.Change */, {
416
+ this.tspClient.notify(CommandTypes.Change, {
413
417
  file,
414
418
  line,
415
419
  offset,
@@ -426,19 +430,19 @@ export class LspServer {
426
430
  }
427
431
  async definition(params) {
428
432
  return this.getDefinition({
429
- type: this.features.definitionLinkSupport ? "definitionAndBoundSpan" /* CommandTypes.DefinitionAndBoundSpan */ : "definition" /* CommandTypes.Definition */,
433
+ type: this.features.definitionLinkSupport ? CommandTypes.DefinitionAndBoundSpan : CommandTypes.Definition,
430
434
  params,
431
435
  });
432
436
  }
433
437
  async implementation(params) {
434
438
  return this.getSymbolLocations({
435
- type: "implementation" /* CommandTypes.Implementation */,
439
+ type: CommandTypes.Implementation,
436
440
  params,
437
441
  });
438
442
  }
439
443
  async typeDefinition(params) {
440
444
  return this.getSymbolLocations({
441
- type: "typeDefinition" /* CommandTypes.TypeDefinition */,
445
+ type: CommandTypes.TypeDefinition,
442
446
  params,
443
447
  });
444
448
  }
@@ -448,7 +452,7 @@ export class LspServer {
448
452
  if (!file) {
449
453
  return undefined;
450
454
  }
451
- if (type === "definitionAndBoundSpan" /* CommandTypes.DefinitionAndBoundSpan */) {
455
+ if (type === CommandTypes.DefinitionAndBoundSpan) {
452
456
  const args = Position.toFileLocationRequestArgs(file, params.position);
453
457
  const response = await this.tspClient.request(type, args);
454
458
  if (response.type !== 'response' || !response.body) {
@@ -470,7 +474,7 @@ export class LspServer {
470
474
  };
471
475
  });
472
476
  }
473
- return this.getSymbolLocations({ type: "definition" /* CommandTypes.Definition */, params });
477
+ return this.getSymbolLocations({ type: CommandTypes.Definition, params });
474
478
  }
475
479
  async getSymbolLocations({ type, params }) {
476
480
  const file = uriToPath(params.textDocument.uri);
@@ -491,11 +495,11 @@ export class LspServer {
491
495
  if (!file) {
492
496
  return [];
493
497
  }
494
- const response = await this.tspClient.request("navtree" /* CommandTypes.NavTree */, {
498
+ const response = await this.tspClient.request(CommandTypes.NavTree, {
495
499
  file,
496
500
  });
497
501
  const tree = response.body;
498
- if (!tree || !tree.childItems) {
502
+ if (!tree?.childItems) {
499
503
  return [];
500
504
  }
501
505
  if (this.supportHierarchicalDocumentSymbol) {
@@ -513,7 +517,7 @@ export class LspServer {
513
517
  }
514
518
  get supportHierarchicalDocumentSymbol() {
515
519
  const textDocument = this.initializeParams?.capabilities.textDocument;
516
- const documentSymbol = textDocument && textDocument.documentSymbol;
520
+ const documentSymbol = textDocument?.documentSymbol;
517
521
  return !!documentSymbol && !!documentSymbol.hierarchicalDocumentSymbolSupport;
518
522
  }
519
523
  /*
@@ -528,11 +532,11 @@ export class LspServer {
528
532
  }
529
533
  const document = this.documents.get(file);
530
534
  if (!document) {
531
- throw new Error('The document should be opened for completion, file: ' + file);
535
+ throw new Error(`The document should be opened for completion, file: ${file}`);
532
536
  }
533
537
  const completionOptions = this.configurationManager.workspaceConfiguration.completions || {};
534
538
  try {
535
- const result = await this.interuptDiagnostics(() => this.tspClient.request("completionInfo" /* CommandTypes.CompletionInfo */, {
539
+ const result = await this.interuptDiagnostics(() => this.tspClient.request(CommandTypes.CompletionInfo, {
536
540
  file,
537
541
  line: params.position.line + 1,
538
542
  offset: params.position.character + 1,
@@ -569,13 +573,14 @@ export class LspServer {
569
573
  }
570
574
  async completionResolve(item) {
571
575
  this.logger.log('completion/resolve', item);
576
+ const document = item.data?.file ? this.documents.get(item.data.file) : undefined;
572
577
  await this.configurationManager.configureGloballyFromDocument(item.data.file);
573
- const { body } = await this.interuptDiagnostics(() => this.tspClient.request("completionEntryDetails" /* CommandTypes.CompletionDetails */, item.data));
574
- const details = body && body.length && body[0];
578
+ const { body } = await this.interuptDiagnostics(() => this.tspClient.request(CommandTypes.CompletionDetails, item.data));
579
+ const details = body?.length && body[0];
575
580
  if (!details) {
576
581
  return item;
577
582
  }
578
- return asResolvedCompletionItem(item, details, this.tspClient, this.documents, this.configurationManager.workspaceConfiguration.completions || {}, this.features);
583
+ return asResolvedCompletionItem(item, details, document, this.tspClient, this.documents, this.configurationManager.workspaceConfiguration.completions || {}, this.features);
579
584
  }
580
585
  async hover(params) {
581
586
  const file = uriToPath(params.textDocument.uri);
@@ -584,7 +589,7 @@ export class LspServer {
584
589
  return { contents: [] };
585
590
  }
586
591
  const result = await this.interuptDiagnostics(() => this.getQuickInfo(file, params.position));
587
- if (!result || !result.body) {
592
+ if (!result?.body) {
588
593
  return { contents: [] };
589
594
  }
590
595
  const contents = new MarkdownString();
@@ -600,7 +605,7 @@ export class LspServer {
600
605
  }
601
606
  async getQuickInfo(file, position) {
602
607
  try {
603
- return await this.tspClient.request("quickinfo" /* CommandTypes.Quickinfo */, {
608
+ return await this.tspClient.request(CommandTypes.Quickinfo, {
604
609
  file,
605
610
  line: position.line + 1,
606
611
  offset: position.character + 1,
@@ -610,19 +615,30 @@ export class LspServer {
610
615
  return undefined;
611
616
  }
612
617
  }
618
+ async prepareRename(params) {
619
+ const file = uriToPath(params.textDocument.uri);
620
+ if (!file) {
621
+ return null;
622
+ }
623
+ const result = await this.tspClient.request(CommandTypes.Rename, Position.toFileLocationRequestArgs(file, params.position));
624
+ const renameInfo = result.body?.info;
625
+ if (!renameInfo) {
626
+ return null;
627
+ }
628
+ if (!renameInfo.canRename) {
629
+ throw new Error(renameInfo.localizedErrorMessage);
630
+ }
631
+ return Range.fromTextSpan(renameInfo.triggerSpan);
632
+ }
613
633
  async rename(params) {
614
634
  const file = uriToPath(params.textDocument.uri);
615
635
  this.logger.log('onRename', params, file);
616
636
  if (!file) {
617
- return undefined;
637
+ return null;
618
638
  }
619
- const result = await this.tspClient.request("rename" /* CommandTypes.Rename */, {
620
- file,
621
- line: params.position.line + 1,
622
- offset: params.position.character + 1,
623
- });
624
- if (!result.body || !result.body.info.canRename || result.body.locs.length === 0) {
625
- return undefined;
639
+ const result = await this.tspClient.request(CommandTypes.Rename, Position.toFileLocationRequestArgs(file, params.position));
640
+ if (!result.body?.info.canRename || result.body.locs.length === 0) {
641
+ return null;
626
642
  }
627
643
  const workspaceEdit = {};
628
644
  result.body.locs
@@ -650,7 +666,7 @@ export class LspServer {
650
666
  if (!file) {
651
667
  return [];
652
668
  }
653
- const result = await this.tspClient.request("references" /* CommandTypes.References */, {
669
+ const result = await this.tspClient.request(CommandTypes.References, {
654
670
  file,
655
671
  line: params.position.line + 1,
656
672
  offset: params.position.character + 1,
@@ -670,7 +686,7 @@ export class LspServer {
670
686
  }
671
687
  const formatOptions = params.options;
672
688
  await this.configurationManager.configureGloballyFromDocument(file, formatOptions);
673
- const response = await this.tspClient.request("format" /* CommandTypes.Format */, {
689
+ const response = await this.tspClient.request(CommandTypes.Format, {
674
690
  file,
675
691
  line: 1,
676
692
  offset: 1,
@@ -691,7 +707,7 @@ export class LspServer {
691
707
  }
692
708
  const formatOptions = params.options;
693
709
  await this.configurationManager.configureGloballyFromDocument(file, formatOptions);
694
- const response = await this.tspClient.request("format" /* CommandTypes.Format */, {
710
+ const response = await this.tspClient.request(CommandTypes.Format, {
695
711
  file,
696
712
  line: params.range.start.line + 1,
697
713
  offset: params.range.start.character + 1,
@@ -704,6 +720,20 @@ export class LspServer {
704
720
  }
705
721
  return [];
706
722
  }
723
+ async selectionRanges(params) {
724
+ const file = uriToPath(params.textDocument.uri);
725
+ if (!file) {
726
+ return null;
727
+ }
728
+ const response = await this.tspClient.request(CommandTypes.SelectionRange, {
729
+ file,
730
+ locations: params.positions.map(Position.toLocation),
731
+ });
732
+ if (response.type !== 'response' || !response.body) {
733
+ return null;
734
+ }
735
+ return response.body.map(toSelectionRange);
736
+ }
707
737
  async signatureHelp(params) {
708
738
  const file = uriToPath(params.textDocument.uri);
709
739
  this.logger.log('signatureHelp', params, file);
@@ -711,7 +741,7 @@ export class LspServer {
711
741
  return undefined;
712
742
  }
713
743
  const response = await this.interuptDiagnostics(() => this.getSignatureHelp(file, params));
714
- if (!response || !response.body) {
744
+ if (!response?.body) {
715
745
  return undefined;
716
746
  }
717
747
  return asSignatureHelp(response.body, params.context, this.documents);
@@ -719,7 +749,7 @@ export class LspServer {
719
749
  async getSignatureHelp(file, params) {
720
750
  try {
721
751
  const { position, context } = params;
722
- return await this.tspClient.request("signatureHelp" /* CommandTypes.SignatureHelp */, {
752
+ return await this.tspClient.request(CommandTypes.SignatureHelp, {
723
753
  file,
724
754
  line: position.line + 1,
725
755
  offset: position.character + 1,
@@ -778,7 +808,7 @@ export class LspServer {
778
808
  errorCodes,
779
809
  };
780
810
  try {
781
- return await this.tspClient.request("getCodeFixes" /* CommandTypes.GetCodeFixes */, args);
811
+ return await this.tspClient.request(CommandTypes.GetCodeFixes, args);
782
812
  }
783
813
  catch (err) {
784
814
  return undefined;
@@ -791,7 +821,7 @@ export class LspServer {
791
821
  kind: context.only?.length === 1 ? context.only[0] : undefined,
792
822
  };
793
823
  try {
794
- return await this.tspClient.request("getApplicableRefactors" /* CommandTypes.GetApplicableRefactors */, args);
824
+ return await this.tspClient.request(CommandTypes.GetApplicableRefactors, args);
795
825
  }
796
826
  catch (err) {
797
827
  return undefined;
@@ -800,7 +830,7 @@ export class LspServer {
800
830
  async getOrganizeImports(args) {
801
831
  try {
802
832
  await this.configurationManager.configureGloballyFromDocument(args.scope.args.file);
803
- return await this.tspClient.request("organizeImports" /* CommandTypes.OrganizeImports */, args);
833
+ return await this.tspClient.request(CommandTypes.OrganizeImports, args);
804
834
  }
805
835
  catch (err) {
806
836
  return undefined;
@@ -817,16 +847,16 @@ export class LspServer {
817
847
  if (!await this.applyFileCodeEdits(codeAction.changes)) {
818
848
  return;
819
849
  }
820
- if (codeAction.commands && codeAction.commands.length) {
850
+ if (codeAction.commands?.length) {
821
851
  for (const command of codeAction.commands) {
822
- await this.tspClient.request("applyCodeActionCommand" /* CommandTypes.ApplyCodeActionCommand */, { command });
852
+ await this.tspClient.request(CommandTypes.ApplyCodeActionCommand, { command });
823
853
  }
824
854
  }
825
855
  }
826
856
  else if (arg.command === Commands.APPLY_REFACTORING && arg.arguments) {
827
857
  const args = arg.arguments[0];
828
- const { body } = await this.tspClient.request("getEditsForRefactor" /* CommandTypes.GetEditsForRefactor */, args);
829
- if (!body || !body.edits.length) {
858
+ const { body } = await this.tspClient.request(CommandTypes.GetEditsForRefactor, args);
859
+ if (!body?.edits.length) {
830
860
  return;
831
861
  }
832
862
  for (const edit of body.edits) {
@@ -848,7 +878,7 @@ export class LspServer {
848
878
  else if (arg.command === Commands.CONFIGURE_PLUGIN && arg.arguments) {
849
879
  const [pluginName, configuration] = arg.arguments;
850
880
  if (this.tspClient?.apiVersion.gte(API.v314)) {
851
- this.tspClient.executeWithoutWaitingForResponse("configurePlugin" /* CommandTypes.ConfigurePlugin */, {
881
+ this.tspClient.executeWithoutWaitingForResponse(CommandTypes.ConfigurePlugin, {
852
882
  configuration,
853
883
  pluginName,
854
884
  });
@@ -858,7 +888,7 @@ export class LspServer {
858
888
  const file = arg.arguments[0];
859
889
  const additionalArguments = arg.arguments[1] || {};
860
890
  await this.configurationManager.configureGloballyFromDocument(file);
861
- const { body } = await this.tspClient.request("organizeImports" /* CommandTypes.OrganizeImports */, {
891
+ const { body } = await this.tspClient.request(CommandTypes.OrganizeImports, {
862
892
  scope: {
863
893
  type: 'file',
864
894
  args: { file },
@@ -875,9 +905,9 @@ export class LspServer {
875
905
  const [_, codeActions] = arg.arguments;
876
906
  for (const codeAction of codeActions) {
877
907
  await this.applyFileCodeEdits(codeAction.changes);
878
- if (codeAction.commands && codeAction.commands.length) {
908
+ if (codeAction.commands?.length) {
879
909
  for (const command of codeAction.commands) {
880
- await this.tspClient.request("applyCodeActionCommand" /* CommandTypes.ApplyCodeActionCommand */, { command });
910
+ await this.tspClient.request(CommandTypes.ApplyCodeActionCommand, { command });
881
911
  }
882
912
  }
883
913
  // Execute only the first code action.
@@ -917,7 +947,7 @@ export class LspServer {
917
947
  return [];
918
948
  }
919
949
  try {
920
- const { body } = await this.tspClient.request("getEditsForFileRename" /* CommandTypes.GetEditsForFileRename */, {
950
+ const { body } = await this.tspClient.request(CommandTypes.GetEditsForFileRename, {
921
951
  oldFilePath,
922
952
  newFilePath,
923
953
  });
@@ -935,7 +965,7 @@ export class LspServer {
935
965
  }
936
966
  let response;
937
967
  try {
938
- response = await this.tspClient.request("documentHighlights" /* CommandTypes.DocumentHighlights */, {
968
+ response = await this.tspClient.request(CommandTypes.DocumentHighlights, {
939
969
  file,
940
970
  line: arg.position.line + 1,
941
971
  offset: arg.position.character + 1,
@@ -963,7 +993,7 @@ export class LspServer {
963
993
  return this.documents.files[0] || this.workspaceRoot;
964
994
  }
965
995
  async workspaceSymbol(params) {
966
- const result = await this.tspClient.request("navto" /* CommandTypes.Navto */, {
996
+ const result = await this.tspClient.request(CommandTypes.Navto, {
967
997
  file: this.lastFileOrDummy(),
968
998
  searchValue: params.query,
969
999
  });
@@ -995,9 +1025,9 @@ export class LspServer {
995
1025
  }
996
1026
  const document = this.documents.get(file);
997
1027
  if (!document) {
998
- throw new Error("The document should be opened for foldingRanges', file: " + file);
1028
+ throw new Error(`The document should be opened for foldingRanges', file: ${file}`);
999
1029
  }
1000
- const { body } = await this.tspClient.request("getOutliningSpans" /* CommandTypes.GetOutliningSpans */, { file });
1030
+ const { body } = await this.tspClient.request(CommandTypes.GetOutliningSpans, { file });
1001
1031
  if (!body) {
1002
1032
  return undefined;
1003
1033
  }
@@ -1086,7 +1116,7 @@ export class LspServer {
1086
1116
  character: 0,
1087
1117
  });
1088
1118
  try {
1089
- const result = await this.tspClient.request("provideInlayHints" /* CommandTypes.ProvideInlayHints */, {
1119
+ const result = await this.tspClient.request(CommandTypes.ProvideInlayHints, {
1090
1120
  file,
1091
1121
  start: start,
1092
1122
  length: end - start,
@@ -1143,7 +1173,7 @@ export class LspServer {
1143
1173
  }
1144
1174
  async getSemanticTokens(doc, file, startOffset, endOffset) {
1145
1175
  try {
1146
- const result = await this.tspClient.request("encodedSemanticClassifications-full" /* CommandTypes.EncodedSemanticClassificationsFull */, {
1176
+ const result = await this.tspClient.request(CommandTypes.EncodedSemanticClassificationsFull, {
1147
1177
  file,
1148
1178
  start: startOffset,
1149
1179
  length: endOffset - startOffset,
@@ -1 +1 @@
1
- {"version":3,"file":"lsp-server.js","sourceRoot":"","sources":["../src/lsp-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lsp-server.js","sourceRoot":"","sources":["../src/lsp-server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,KAAK,GAAG,MAAM,uBAAuB,CAAC;AAC7C,OAAO,KAAK,QAAQ,MAAM,kCAAkC,CAAC;AAE7D,OAAO,KAAK,iBAAiB,MAAM,sBAAsB,CAAC;AAC1D,OAAO,GAAG,MAAM,gBAAgB,CAAC;AACjC,OAAO,EAAU,QAAQ,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC7J,OAAO,EAAE,YAAY,EAAe,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,MAAM,iBAAiB,CAAC;AAC5G,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,GAAG,EAA8F,MAAM,kBAAkB,CAAC;AACnI,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAkC,MAAM,0BAA0B,CAAC;AAC5F,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAqB,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC7F,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,iCAAiC,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,IAAO,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;AAEvC,MAAM,OAAO,SAAS;IAYlB,YAAoB,OAAuC;QAAvC,YAAO,GAAP,OAAO,CAAgC;QAXnD,eAAU,GAAqB,IAAI,CAAC;QACpC,qBAAgB,GAAsC,IAAI,CAAC;QAK3D,8BAAyB,GAAqC,IAAI,CAAC;QACnE,aAAQ,GAAsB,EAAE,CAAC;QAExB,cAAS,GAAG,IAAI,YAAY,EAAE,CAAC;QAoRhD,4GAA4G;QAC5G,uBAAuB;QACvB,4BAAuB,GAAG,KAAK,CAAC;QAKvB,kCAA6B,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,GAAG,CAAC,CAAC;QAxRtF,IAAI,CAAC,oBAAoB,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrE,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACrE,CAAC;IAED,QAAQ;QACJ,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAC1C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;SAC5B;IACL,CAAC;IAED,QAAQ;QACJ,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SAC1B;IACL,CAAC;IAED,IAAY,SAAS;QACjB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;SAC9F;QACD,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAkC;QAC/C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACtC,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;SAC1E;QACD,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;QAC/B,MAAM,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC;QAC9D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,IAAI,SAAS,CAAC;QAE5I,MAAM,yBAAyB,GAAoC,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,IAAI,EAAE,CAAC;QACrH,MAAM,EAAE,iCAAiC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,yBAAyB,CAAC;QACpI,MAAM,EAAE,OAAO,EAAE,GAAoC;YACjD,OAAO,EAAE,yBAAyB,CAAC,OAAO,IAAI,EAAE;SACnD,CAAC;QAEF,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,MAAM,oBAAoB,GAAa,EAAE,CAAC;QAC1C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC1B,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAChC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;SAC9C;QAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACrE,IAAI,iBAAiB,EAAE;YACnB,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,EAAE,6BAA6B,iBAAiB,CAAC,MAAM,KAAK,iBAAiB,CAAC,aAAa,eAAe,iBAAiB,CAAC,YAAY,GAAG,CAAC,CAAC;SAC9L;aAAM;YACH,MAAM,KAAK,CAAC,qLAAqL,CAAC,CAAC;SACtM;QAED,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,yBAAyB,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;QAE1F,4BAA4B;QAC5B,MAAM,EAAE,YAAY,EAAE,GAAG,kBAAkB,CAAC;QAC5C,IAAI,YAAY,EAAE;YACd,MAAM,sBAAsB,GAAG,YAAY,CAAC,UAAU,CAAC;YACvD,IAAI,CAAC,QAAQ,CAAC,yBAAyB,GAAG,YAAY,CAAC,UAAU,EAAE,eAAe,CAAC;YACnF,IAAI,CAAC,QAAQ,CAAC,qBAAqB,GAAG,YAAY,CAAC,UAAU,EAAE,WAAW,IAAI,iBAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvH,IAAI,CAAC,QAAQ,CAAC,8BAA8B,GAAG,sBAAsB,EAAE,cAAc,EAAE,oBAAoB,CAAC;YAC5G,IAAI,sBAAsB,EAAE,cAAc,EAAE;gBACxC,IAAI,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,kCAAkC;uBAC3E,sBAAsB,CAAC,cAAc,CAAC,mBAAmB;uBACzD,iBAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;oBACzC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,GAAG,IAAI,CAAC;iBAC/C;gBACD,IAAI,sBAAsB,CAAC,cAAc,CAAC,cAAc,EAAE;oBACtD,IAAI,CAAC,QAAQ,CAAC,kBAAkB,GAAG,IAAI,CAAC;iBAC3C;gBACD,IAAI,YAAY,CAAC,kBAAkB,EAAE,UAAU,EAAE;oBAC7C,IAAI,CAAC,QAAQ,CAAC,qBAAqB,GAAG,IAAI,CAAC;iBAC9C;aACJ;SACJ;QAED,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC;YACzC,kCAAkC,EAAE,IAAI,CAAC,QAAQ,CAAC,sBAAsB;SAC3E,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,GAAG,IAAI,oBAAoB,CAC3C,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC,WAAW,CAAC,EACrE,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,MAAM,CACd,CAAC;QACF,MAAM,oBAAoB,GAAG,QAAQ,EAAE,YAAY,IAAI,gBAAgB,CAAC,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAC3G,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAC;YAC5B,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;YACjC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,IAAI,KAAK,CAAC;YACjD,iBAAiB;YACjB,oBAAoB,EAAE,IAAI,oBAAoB,CAAC,IAAI,CAAC,mBAAmB,CAAC,yBAAyB,CAAC,CAAC;YACnG,YAAY,EAAE,oBAAoB,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB;YACvE,iCAAiC;YACjC,iBAAiB;YACjB,WAAW;YACX,MAAM;YACN,aAAa;YACb,oBAAoB;YACpB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;YAC3B,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YAClC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE;gBACzB,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,IAAI,QAAQ,EAAE;oBACV,MAAM,IAAI,KAAK,CAAC,2CAA2C,QAAQ,aAAa,MAAM,yBAAyB,CAAC,CAAC;iBACpH;YACL,CAAC;SACJ,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvC,IAAI,CAAC,OAAO,EAAE;YACV,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;SAC5D;QACD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;YACpB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpB,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACtB,OAAO,CAAC,IAAI,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,yBAAyB,GAAG,IAAI,yBAAyB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE/E,IAAI,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAClG,IAAI,CAAC,qCAAqC,EAAE,CAAC;QAE7C,MAAM,cAAc,GAAG,YAAY,EAAE,MAAM,EAAE,cAAc,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvG,MAAM,gBAAgB,GAAyB;YAC3C,YAAY,EAAE;gBACV,gBAAgB,EAAE,GAAG,CAAC,oBAAoB,CAAC,WAAW;gBACtD,kBAAkB,EAAE;oBAChB,iBAAiB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;oBAClD,eAAe,EAAE,IAAI;iBACxB;gBACD,kBAAkB,EAAE,kBAAkB,CAAC,YAAY,EAAE,UAAU,EAAE,wBAAwB;oBACrF,CAAC,CAAC,EAAE,eAAe,EAAE;4BACjB,GAAG,yBAAyB,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;4BAC1D,cAAc,CAAC,uBAAuB,CAAC,KAAK;4BAC5C,cAAc,CAAC,QAAQ,CAAC,KAAK;4BAC7B,cAAc,CAAC,QAAQ,CAAC,KAAK;yBAChC,EAAE,CAAC,CAAC,CAAC,IAAI;gBACd,kBAAkB,EAAE,IAAI;gBACxB,0BAA0B,EAAE,IAAI;gBAChC,+BAA+B,EAAE,IAAI;gBACrC,yBAAyB,EAAE,IAAI;gBAC/B,sBAAsB,EAAE,IAAI;gBAC5B,sBAAsB,EAAE;oBACpB,QAAQ,EAAE;wBACN,QAAQ,CAAC,oBAAoB;wBAC7B,QAAQ,CAAC,iBAAiB;wBAC1B,QAAQ,CAAC,iBAAiB;wBAC1B,QAAQ,CAAC,gBAAgB;wBACzB,QAAQ,CAAC,gBAAgB;wBACzB,QAAQ,CAAC,iBAAiB;wBAC1B,QAAQ,CAAC,iBAAiB;qBAC7B;iBACJ;gBACD,aAAa,EAAE,IAAI;gBACnB,iBAAiB,EAAE,IAAI;gBACvB,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;gBACjE,kBAAkB,EAAE,IAAI;gBACxB,sBAAsB,EAAE,IAAI;gBAC5B,qBAAqB,EAAE;oBACnB,iBAAiB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;oBAClC,mBAAmB,EAAE,CAAC,GAAG,CAAC;iBAC7B;gBACD,uBAAuB,EAAE,IAAI;gBAC7B,sBAAsB,EAAE,IAAI;gBAC5B,sBAAsB,EAAE,IAAI;gBAC5B,oBAAoB,EAAE,IAAI;gBAC1B,sBAAsB,EAAE;oBACpB,gBAAgB,EAAE,IAAI;oBACtB,MAAM,EAAE;wBACJ,wGAAwG;wBACxG,UAAU,EAAE;4BACR,OAAO;4BACP,MAAM;4BACN,WAAW;4BACX,WAAW;4BACX,eAAe;4BACf,MAAM;4BACN,WAAW;4BACX,UAAU;4BACV,YAAY;4BACZ,UAAU;4BACV,UAAU;4BACV,QAAQ;yBACX;wBACD,mGAAmG;wBACnG,cAAc,EAAE;4BACZ,aAAa;4BACb,QAAQ;4BACR,OAAO;4BACP,UAAU;4BACV,gBAAgB;4BAChB,OAAO;yBACV;qBACJ;oBACD,IAAI,EAAE,IAAI;oBACV,KAAK,EAAE,IAAI;iBACd;aACJ;SACJ,CAAC;QACD,gBAAgB,CAAC,YAAiD,CAAC,aAAa,GAAG,IAAI,CAAC;QACzF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAAC;QACzD,OAAO,gBAAgB,CAAC;IAC5B,CAAC;IAEO,qBAAqB,CAAC,gBAAoC;QAC9D,MAAM,yBAAyB,GAAG,IAAI,yBAAyB,CAAC,gBAAgB,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5H,+BAA+B;QAC/B,MAAM,kBAAkB,GAAG,yBAAyB,CAAC,qBAAqB,EAAE,CAAC;QAC7E,IAAI,kBAAkB,EAAE;YACpB,IAAI,kBAAkB,CAAC,OAAO,EAAE;gBAC5B,OAAO,kBAAkB,CAAC;aAC7B;YACD,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,OAAO,EAAE,0EAA0E,kBAAkB,CAAC,IAAI,GAAG,CAAC,CAAC;SAC5J;QACD,qBAAqB;QACrB,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YAC7F,IAAI,gBAAgB,EAAE;gBAClB,OAAO,gBAAgB,CAAC;aAC3B;SACJ;QACD,kBAAkB;QAClB,MAAM,cAAc,GAAG,yBAAyB,CAAC,cAAc,EAAE,CAAC;QAClE,IAAI,cAAc,EAAE,OAAO,EAAE;YACzB,OAAO,cAAc,CAAC;SACzB;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,mBAAmB,CAAC,qBAAsD;QAC9E,IAAI,qBAAqB,CAAC,QAAQ,EAAE,YAAY,EAAE;YAC9C,OAAO,qBAAqB,CAAC,QAAQ,CAAC,YAAY,CAAC;SACtD;QACD,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;SAChD;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAEO,qCAAqC;QACzC,MAAM,IAAI,GAAkD;YACxD,OAAO,EAAE;gBACL,GAAG,iCAAiC,CAAC,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,4BAA6B,CAAC;gBACpH,OAAO,EAAE,IAAI;gBACb,oBAAoB,EAAE,IAAI;gBAC1B,4BAA4B,EAAE,IAAI;gBAClC,iBAAiB,EAAE,IAAI;aAC1B;SACJ,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,gCAAgC,CAAC,YAAY,CAAC,kCAAkC,EAAE,IAAI,CAAC,CAAC;IAC3G,CAAC;IAED,sBAAsB,CAAC,MAAwC;QAC3D,IAAI,CAAC,oBAAoB,CAAC,yBAAyB,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QAC3E,IAAI,CAAC,qCAAqC,EAAE,CAAC;QAC7C,MAAM,sBAAsB,GAAG,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,WAAW,EAAE,YAAY,IAAI,EAAE,CAAC;QAChH,IAAI,CAAC,eAAe,EAAE,4BAA4B,CAAC,sBAAsB,CAAC,CAAC;IAC/E,CAAC;IAGS,mBAAmB,CAAI,CAAU;QACvC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAC9B,OAAO,CAAC,EAAE,CAAC;SACd;QACD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,CAAC,EAAE,CAAC;QACnB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC;IAClB,CAAC;IAID,KAAK,CAAC,kBAAkB;QACpB,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;QACpC,MAAM,IAAI,CAAC,6BAA6B,EAAE,CAAC;IAC/C,CAAC;IAES,KAAK,CAAC,oBAAoB;QAChC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,uBAAuB,EAAE,CAAC;QAC5D,IAAI,CAAC,sBAAsB,GAAG,iBAAiB,CAAC;QAEhD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,IAAI;YACA,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;SACrG;gBAAS;YACN,IAAI,IAAI,CAAC,sBAAsB,KAAK,iBAAiB,EAAE;gBACnD,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC;gBACxC,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;aACxC;SACJ;IACL,CAAC;IACS,iBAAiB;QACvB,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC7B,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC;SAC3C;IACL,CAAC;IAED,mBAAmB,CAAC,MAAqC;QACrD,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,uBAAuB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,EAAE;YACP,OAAO;SACV;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,EAAE;YAChD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE;gBACrC,IAAI;gBACJ,WAAW,EAAE,MAAM,CAAC,YAAY,CAAC,IAAI;gBACrC,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC;gBACtE,eAAe,EAAE,IAAI,CAAC,aAAa;aACtC,CAAC,CAAC;YACH,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC7B;aAAM;YACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mCAAmC,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,CAAC;YAChF,IAAI,CAAC,qBAAqB,CAAC;gBACvB,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,cAAc,EAAE;oBACZ;wBACI,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,IAAI;qBACjC;iBACJ;aACJ,CAAC,CAAC;SACN;IACL,CAAC;IAES,iBAAiB,CAAC,UAAkB;QAC1C,QAAQ,UAAU,EAAE;YAChB,KAAK,YAAY,CAAC,CAAC,OAAO,IAAI,CAAC;YAC/B,KAAK,iBAAiB,CAAC,CAAC,OAAO,KAAK,CAAC;YACrC,KAAK,YAAY,CAAC,CAAC,OAAO,IAAI,CAAC;YAC/B,KAAK,iBAAiB,CAAC,CAAC,OAAO,KAAK,CAAC;SACxC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,oBAAoB,CAAC,MAAsC;QACvD,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,wBAAwB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,EAAE;YACP,OAAO;SACV;QACD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACS,aAAa,CAAC,IAAY;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO;SACV;QACD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAEpD,wEAAwE;QACxE,gCAAgC;QAChC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC;YACtC,GAAG,EAAE,QAAQ,CAAC,GAAG;YACjB,WAAW,EAAE,EAAE;SAClB,CAAC,CAAC;IACP,CAAC;IAED,qBAAqB,CAAC,MAAuC;QACzD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;QAChC,MAAM,IAAI,GAAG,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,yBAAyB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,EAAE;YACP,OAAO;SACV;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,EAAE;YACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC;YAChF,MAAM,IAAI,KAAK,CAAC,0CAA0C,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC;SACjF;QACD,IAAI,YAAY,CAAC,OAAO,KAAK,IAAI,EAAE;YAC/B,MAAM,IAAI,KAAK,CAAC,sCAAsC,YAAY,CAAC,GAAG,mCAAmC,CAAC,CAAC;SAC9G;QAED,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,cAAc,EAAE;YACxC,IAAI,IAAI,GAAG,CAAC,CAAC;YACb,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,IAAI,GAAG,CAAC,8BAA8B,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;gBAC1D,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;gBACnC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;gBAC1C,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;gBACpC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;aAC9C;iBAAM;gBACH,IAAI,GAAG,CAAC,CAAC;gBACT,MAAM,GAAG,CAAC,CAAC;gBACX,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;gBAC9D,OAAO,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;gBAC1B,SAAS,GAAG,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;aACpC;YACD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE;gBACvC,IAAI;gBACJ,IAAI;gBACJ,MAAM;gBACN,OAAO;gBACP,SAAS;gBACT,YAAY,EAAE,MAAM,CAAC,IAAI;aAC5B,CAAC,CAAC;YACH,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;SACpD;QACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC9B,CAAC;IAED,mBAAmB,CAAC,OAAsC;QACtD,aAAa;IACjB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAA4B;QACzC,OAAO,IAAI,CAAC,aAAa,CAAC;YACtB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU;YACzG,MAAM;SACT,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,MAAsC;QACvD,OAAO,IAAI,CAAC,kBAAkB,CAAC;YAC3B,IAAI,EAAE,YAAY,CAAC,cAAc;YACjC,MAAM;SACT,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,MAAsC;QACvD,OAAO,IAAI,CAAC,kBAAkB,CAAC;YAC3B,IAAI,EAAE,YAAY,CAAC,cAAc;YACjC,MAAM;SACT,CAAC,CAAC;IACP,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,MAAM,EAGzC;QACG,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,EAAE;YACP,OAAO,SAAS,CAAC;SACpB;QAED,IAAI,IAAI,KAAK,YAAY,CAAC,sBAAsB,EAAE;YAC9C,MAAM,IAAI,GAAG,QAAQ,CAAC,yBAAyB,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YACvE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC1D,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;gBAChD,OAAO,SAAS,CAAC;aACpB;YACD,2FAA2F;YAC3F,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC7F,OAAO,QAAQ,CAAC,IAAI,CAAC,WAAW;iBAC3B,GAAG,CAAC,CAAC,QAAQ,EAAsB,EAAE;gBAClC,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;gBACpD,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,UAAU;oBAC5D,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,UAAU,CAAC;oBACjE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBACnB,OAAO;oBACH,oBAAoB,EAAE,IAAI;oBAC1B,WAAW;oBACX,SAAS,EAAE,MAAM,CAAC,GAAG;oBACrB,oBAAoB,EAAE,MAAM,CAAC,KAAK;iBACrC,CAAC;YACN,CAAC,CAAC,CAAC;SACV;QAED,OAAO,IAAI,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9E,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,MAAM,EAG9C;QACG,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,EAAE;YACP,OAAO,EAAE,CAAC;SACb;QAED,MAAM,IAAI,GAAG,QAAQ,CAAC,yBAAyB,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1D,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;YAChD,OAAO,SAAS,CAAC;SACpB;QACD,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,MAAgC;QACjD,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,EAAE;YACP,OAAO,EAAE,CAAC;SACb;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE;YAChE,IAAI;SACP,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE;YACnB,OAAO,EAAE,CAAC;SACb;QACD,IAAI,IAAI,CAAC,iCAAiC,EAAE;YACxC,MAAM,OAAO,GAAyB,EAAE,CAAC;YACzC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;gBAChC,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;aACzC;YACD,OAAO,OAAO,CAAC;SAClB;QACD,MAAM,OAAO,GAA4B,EAAE,CAAC;QAC5C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;YAChC,wBAAwB,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;SACpE;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,IAAc,iCAAiC;QAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE,YAAY,CAAC,YAAY,CAAC;QACtE,MAAM,cAAc,GAAG,YAAY,EAAE,cAAc,CAAC;QACpD,OAAO,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,cAAc,CAAC,iCAAiC,CAAC;IAClF,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU,CAAC,MAA4B;QACzC,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,EAAE;YACP,OAAO,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;SACxC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,uDAAuD,IAAI,EAAE,CAAC,CAAC;SAClF;QAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,WAAW,IAAI,EAAE,CAAC;QAE7F,IAAI;YACA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,cAAc,EAAE;gBACpG,IAAI;gBACJ,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC;gBAC9B,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC;gBACrC,gBAAgB,EAAE,6BAA6B,CAAC,MAAM,CAAC,OAAO,EAAE,gBAAgB,CAAC;gBACjF,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,WAAW;aAC3C,CAAC,CAAC,CAAC;YACJ,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;YACxB,IAAI,CAAC,IAAI,EAAE;gBACP,OAAO,GAAG,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;aACtC;YACD,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,GAAG,IAAI,CAAC;YAChE,MAAM,WAAW,GAAyB,EAAE,CAAC;YAC7C,KAAK,MAAM,KAAK,IAAI,OAAO,IAAI,EAAE,EAAE;gBAC/B,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;oBAC1B,SAAS;iBACZ;gBACD,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,EAAE,uBAAuB,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,iBAAiB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACvJ,IAAI,CAAC,UAAU,EAAE;oBACb,SAAS;iBACZ;gBACD,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAChC;YACD,OAAO,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;SAC/D;QAAC,OAAO,KAAK,EAAE;YACZ,IAAK,KAAe,CAAC,OAAO,KAAK,uBAAuB,EAAE;gBACtD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;gBACpE,OAAO,IAAI,CAAC;aACf;iBAAM;gBACH,MAAM,KAAK,CAAC;aACf;SACJ;IACL,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,IAAwB;QAC5C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAClF,MAAM,IAAI,CAAC,oBAAoB,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9E,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACzH,MAAM,OAAO,GAAG,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,EAAE;YACV,OAAO,IAAI,CAAC;SACf;QACD,OAAO,wBAAwB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,WAAW,IAAI,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChL,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAsC;QAC9C,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,EAAE;YACP,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;SAC3B;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC9F,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE;YACf,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;SAC3B;QACD,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAC;QACtC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;QAC3D,IAAI,aAAa,EAAE;YACf,QAAQ,CAAC,eAAe,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;SACzD;QACD,SAAS,CAAC,wBAAwB,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAClF,OAAO;YACH,QAAQ,EAAE,QAAQ,CAAC,eAAe,EAAE;YACpC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC;SACzC,CAAC;IACN,CAAC;IACS,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,QAAsB;QAC7D,IAAI;YACA,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE;gBACxD,IAAI;gBACJ,IAAI,EAAE,QAAQ,CAAC,IAAI,GAAG,CAAC;gBACvB,MAAM,EAAE,QAAQ,CAAC,SAAS,GAAG,CAAC;aACjC,CAAC,CAAC;SACN;QAAC,OAAO,GAAG,EAAE;YACV,OAAO,SAAS,CAAC;SACpB;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAA+B;QAC/C,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,EAAE;YACP,OAAO,IAAI,CAAC;SACf;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,yBAAyB,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC5H,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC;QACrC,IAAI,CAAC,UAAU,EAAE;YACb,OAAO,IAAI,CAAC;SACf;QACD,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;SACrD;QACD,OAAO,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAwB;QACjC,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,EAAE;YACP,OAAO,IAAI,CAAC;SACf;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,yBAAyB,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC5H,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YAC/D,OAAO,IAAI,CAAC;SACf;QACD,MAAM,aAAa,GAAsB,EAAE,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,IAAI;aACX,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;YACnB,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACtD,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;gBACxB,aAAa,CAAC,OAAO,GAAG,EAAE,CAAC;aAC9B;YACD,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;YAElF,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAChC,SAAS,CAAC,IAAI,CAAC;oBACX,OAAO,EAAE,GAAG,QAAQ,CAAC,UAAU,IAAI,EAAE,GAAG,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAC,UAAU,IAAI,EAAE,EAAE;oBACpF,KAAK,EAAE;wBACH,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;wBAC5C,GAAG,EAAE,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC;qBAC3C;iBACJ,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEP,OAAO,aAAa,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAA2B;QACxC,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,EAAE;YACP,OAAO,EAAE,CAAC;SACb;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE;YACjE,IAAI;YACJ,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC;YAC9B,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC;SACxC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YACd,OAAO,EAAE,CAAC;SACb;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI;aAClB,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;aAC/E,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,MAAoC;QACzD,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,EAAE;YACP,OAAO,EAAE,CAAC;SACb;QAED,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC;QACrC,MAAM,IAAI,CAAC,oBAAoB,CAAC,6BAA6B,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAEnF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE;YAC/D,IAAI;YACJ,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,CAAC;YACT,OAAO,EAAE,MAAM,CAAC,gBAAgB;YAChC,SAAS,EAAE,MAAM,CAAC,gBAAgB;YAClC,OAAO,EAAE,aAAa;SACzB,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,IAAI,EAAE;YACf,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;SAChD;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,MAAyC;QACnE,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,yBAAyB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,EAAE;YACP,OAAO,EAAE,CAAC;SACb;QAED,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC;QACrC,MAAM,IAAI,CAAC,oBAAoB,CAAC,6BAA6B,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAEnF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE;YAC/D,IAAI;YACJ,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC;YACjC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC;YACxC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;YAClC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC;YACzC,OAAO,EAAE,aAAa;SACzB,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,IAAI,EAAE;YACf,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;SAChD;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAAgC;QAClD,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,EAAE;YACP,OAAO,IAAI,CAAC;SACf;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,cAAc,EAAE;YACvE,IAAI;YACJ,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;SACvD,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;YAChD,OAAO,IAAI,CAAC;SACf;QACD,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAA+B;QAC/C,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,EAAE;YACP,OAAO,SAAS,CAAC;SACpB;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAC3F,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE;YACjB,OAAO,SAAS,CAAC;SACpB;QACD,OAAO,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1E,CAAC;IACS,KAAK,CAAC,gBAAgB,CAAC,IAAY,EAAE,MAA+B;QAC1E,IAAI;YACA,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;YACrC,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE;gBAC5D,IAAI;gBACJ,IAAI,EAAE,QAAQ,CAAC,IAAI,GAAG,CAAC;gBACvB,MAAM,EAAE,QAAQ,CAAC,SAAS,GAAG,CAAC;gBAC9B,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;aAClE,CAAC,CAAC;SACN;QAAC,OAAO,GAAG,EAAE;YACV,OAAO,SAAS,CAAC;SACpB;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAA4B;QACzC,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,EAAE;YACP,OAAO,EAAE,CAAC;SACb;QACD,MAAM,aAAa,GAAG,KAAK,CAAC,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,OAAO,GAAqB,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,EAAE;YACtE,OAAO,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;SAC5G;QACD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,EAAE;YACtE,OAAO,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;SAC3H;QAED,kGAAkG;QAClG,IAAI,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC,EAAE;YAC5E,kEAAkE;YAClE,uDAAuD;YACvD,MAAM,0BAA0B,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI;YAC9D,iCAAiC;YACjC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAC9B,CAAC;YACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC;gBAC3C,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE;gBAC5C,0BAA0B;aAC7B,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,GAAG,sBAAsB,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;SACrE;QAED,8GAA8G;QAC9G,0GAA0G;QAC1G,8DAA8D;QAC9D,+FAA+F;QAC/F,iEAAiE;QACjE,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;YACxC,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5E,IAAI,WAAW,CAAC,MAAM,EAAE;gBACpB,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,yBAA0B,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;aACvH;SACJ;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IACS,KAAK,CAAC,YAAY,CAAC,aAAuC,EAAE,OAA8B;QAChG,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAClF,MAAM,IAAI,GAA2B;YACjC,GAAG,aAAa;YAChB,UAAU;SACb,CAAC;QACF,IAAI;YACA,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;SACxE;QAAC,OAAO,GAAG,EAAE;YACV,OAAO,SAAS,CAAC;SACpB;IACL,CAAC;IACS,KAAK,CAAC,YAAY,CAAC,aAAuC,EAAE,OAA8B;QAChG,MAAM,IAAI,GAA0C;YAChD,GAAG,aAAa;YAChB,aAAa,EAAE,OAAO,CAAC,WAAW,KAAK,GAAG,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;YAChG,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;SACjE,CAAC;QACF,IAAI;YACA,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;SAClF;QAAC,OAAO,GAAG,EAAE;YACV,OAAO,SAAS,CAAC;SACpB;IACL,CAAC;IACS,KAAK,CAAC,kBAAkB,CAAC,IAAoC;QACnE,IAAI;YACA,MAAM,IAAI,CAAC,oBAAoB,CAAC,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpF,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;SAC3E;QAAC,OAAO,GAAG,EAAE;YACV,OAAO,SAAS,CAAC;SACpB;IACL,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,GAA6B,EAAE,KAA6B,EAAE,gBAA+C;QAC9H,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QACvC,IAAI,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,oBAAoB,IAAI,GAAG,CAAC,SAAS,EAAE;YAChE,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAsB,CAAC;YACnD,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;SAC7D;aAAM,IAAI,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,iBAAiB,IAAI,GAAG,CAAC,SAAS,EAAE;YACpE,MAAM,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAmB,CAAC;YACtD,IAAI,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;gBACpD,OAAO;aACV;YACD,IAAI,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE;gBAC7B,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,QAAQ,EAAE;oBACvC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,sBAAsB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;iBAClF;aACJ;SACJ;aAAM,IAAI,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,iBAAiB,IAAI,GAAG,CAAC,SAAS,EAAE;YACpE,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAuC,CAAC;YACpE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;YACtF,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE;gBACrB,OAAO;aACV;YACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;gBAC3B,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACtC;YACD,IAAI,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBAC5C,OAAO;aACV;YACD,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;YAC3C,IAAI,cAAc,EAAE;gBAChB,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;oBAChC,YAAY,EAAE;wBACV,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;qBAC5C;oBACD,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,cAAc,CAAC;iBAClD,CAAC,CAAC;aACN;SACJ;aAAM,IAAI,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,gBAAgB,IAAI,GAAG,CAAC,SAAS,EAAE;YACnE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,GAAG,CAAC,SAA8B,CAAC;YAEvE,IAAI,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC1C,IAAI,CAAC,SAAS,CAAC,gCAAgC,CAAC,YAAY,CAAC,eAAe,EAAE;oBAC1E,aAAa;oBACb,UAAU;iBACb,CAAC,CAAC;aACN;SACJ;aAAM,IAAI,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,gBAAgB,IAAI,GAAG,CAAC,SAAS,EAAE;YACnE,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAW,CAAC;YACxC,MAAM,mBAAmB,GAA8C,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9F,MAAM,IAAI,CAAC,oBAAoB,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC;YACpE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,EAAE;gBACxE,KAAK,EAAE;oBACH,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,EAAE,IAAI,EAAE;iBACjB;gBACD,0BAA0B,EAAE,mBAAmB,CAAC,0BAA0B;aAC7E,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;SACvC;aAAM,IAAI,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,iBAAiB,IAAI,GAAG,CAAC,SAAS,EAAE;YACpE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAG/C,CAAC;YACF,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;SAC9C;aAAM,IAAI,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,4BAA4B,IAAI,GAAG,CAAC,SAAS,EAAE;YAC/E,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,GAAG,CAAC,SAAuC,CAAC;YACrE,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;gBAClC,MAAM,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBAClD,IAAI,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE;oBAC7B,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,QAAQ,EAAE;wBACvC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,sBAAsB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;qBAClF;iBACJ;gBACD,sCAAsC;gBACtC,MAAM;aACT;SACJ;aAAM,IAAI,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,iBAAiB,EAAE;YACnD,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAsC,CAAC;YACnF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,sBAAsB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;YAC9F,OAAO,uBAAuB,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;SAC3H;aAAM;YACH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;SACxD;IACL,CAAC;IAES,KAAK,CAAC,kBAAkB,CAAC,KAAuC;QACtE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACf,OAAO,KAAK,CAAC;SAChB;QACD,MAAM,OAAO,GAAuC,EAAE,CAAC;QACvD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACtB,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;SACxF;QACD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC;YAChE,IAAI,EAAE,EAAE,OAAO,EAAE;SACpB,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;IACnB,CAAC;IAES,KAAK,CAAC,eAAe,CAAC,SAAiB,EAAE,SAAiB;QAChE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACrE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IACS,KAAK,CAAC,qBAAqB,CAAC,SAAiB,EAAE,SAAiB;QACtE,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,EAAE;YAC9B,OAAO,EAAE,CAAC;SACb;QACD,IAAI;YACA,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,qBAAqB,EAAE;gBAC9E,WAAW;gBACX,WAAW;aACd,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;SACf;QAAC,OAAO,GAAG,EAAE;YACV,OAAO,EAAE,CAAC;SACb;IACL,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,GAAmC;QACvD,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,EAAE;YACP,OAAO,EAAE,CAAC;SACb;QACD,IAAI,QAAwC,CAAC;QAC7C,IAAI;YACA,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,kBAAkB,EAAE;gBACrE,IAAI;gBACJ,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC;gBAC3B,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC;gBAClC,aAAa,EAAE,CAAC,IAAI,CAAC;aACxB,CAAC,CAAC;SACN;QAAC,OAAO,GAAG,EAAE;YACV,OAAO,EAAE,CAAC;SACb;QACD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;YAChB,OAAO,EAAE,CAAC;SACb;QACD,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE;YAC9B,uFAAuF;YACvF,8DAA8D;YAC9D,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;gBACnC,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;gBAC7C,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;aAC9B;SACJ;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,eAAe;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAAiC;QACnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE;YAC5D,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE;YAC5B,WAAW,EAAE,MAAM,CAAC,KAAK;SAC5B,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YACd,OAAO,EAAE,CAAC;SACb;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC1B,OAA8B;gBAC1B,QAAQ,EAAE;oBACN,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACzC,KAAK,EAAE;wBACH,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;wBACxC,GAAG,EAAE,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;qBACvC;iBACJ;gBACD,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;aAClB,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,MAA8B;QAC9C,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,EAAE;YACP,OAAO,SAAS,CAAC;SACpB;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,2DAA2D,IAAI,EAAE,CAAC,CAAC;SACtF;QACD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACxF,IAAI,CAAC,IAAI,EAAE;YACP,OAAO,SAAS,CAAC;SACpB;QACD,MAAM,aAAa,GAAuB,EAAE,CAAC;QAC7C,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;YACrB,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACzD,IAAI,YAAY,EAAE;gBACd,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;aACpC;SACJ;QACD,OAAO,aAAa,CAAC;IACzB,CAAC;IACS,cAAc,CAAC,IAAuB,EAAE,QAAqB;QACnE,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAE3C,kEAAkE;QAClE,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;YACzB,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChD,IAAI,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAE;gBACnC,OAAO,SAAS,CAAC;aACpB;SACJ;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;QAEnC,kEAAkE;QAClE,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CACxE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,EAC5D,KAAK,CAAC,GAAG,CACZ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;QAE7E,OAAO;YACH,SAAS;YACT,OAAO;YACP,IAAI;SACP,CAAC;IACN,CAAC;IACS,kBAAkB,CAAC,IAAuB;QAChD,QAAQ,IAAI,CAAC,IAAI,EAAE;YACf,KAAK,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC;YACpD,KAAK,QAAQ,CAAC,CAAC,OAAO,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC;YAClD,KAAK,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC;YACpD,KAAK,MAAM,CAAC;YACZ,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC;SAC7B;IACL,CAAC;IAES,KAAK,CAAC,SAAS,CAAC,KAAgB;QACtC,IAAI,KAAK,CAAC,KAAK,iDAA4B,IAAI,KAAK,CAAC,KAAK,6CAA0B,IAAI,KAAK,CAAC,KAAK,qDAA8B,EAAE;YAC/H,IAAI,CAAC,eAAe,EAAE,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,KAA4B,CAAC,CAAC;SACtF;IACL,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAA4B;QACpC,IAAI,WAAW,GAAyB,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QACtD,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,EAAE;YACP,OAAO,WAAW,CAAC;SACtB;QACD,IAAI,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,aAAa,CAAC,QAAQ,EAAE;YACtD,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpE,WAAW,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;SAChF;aAAM;YACH,WAAW,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;SAC9D;QACD,OAAO,WAAW,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAA2B;QACxC,OAAO,MAAM,4BAA4B,CAAC,iBAAiB,CACvD,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAClI,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,MAAsC;QACzD,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC;YAC9B,OAAO,EAAE,8HAA8H;YACvI,IAAI,EAAE,GAAG,CAAC,WAAW,CAAC,OAAO;SAChC,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,EAAE;YACP,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;SAC7B;QAED,MAAM,IAAI,CAAC,oBAAoB,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC;QAEpE,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG,EAAE;YACN,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;SAC7B;QAED,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,IAAI;YAC9C,IAAI,EAAE,CAAC;YACP,SAAS,EAAE,CAAC;SACf,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI;YAC1C,IAAI,EAAE,GAAG,CAAC,SAAS,GAAG,CAAC;YACvB,SAAS,EAAE,CAAC;SACf,CAAC,CAAC;QAEH,IAAI;YACA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CACvC,YAAY,CAAC,iBAAiB,EAC9B;gBACI,IAAI;gBACJ,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,GAAG,GAAG,KAAK;aACtB,CACJ,CAAC;YAEF,OAAO;gBACH,UAAU,EACN,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBACxB,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAC9C,eAAe,EAAE,IAAI,CAAC,eAAe;oBACrC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;oBACvC,IAAI,EAAE,IAAI,CAAC,IAAI;iBAClB,CAAC,CAAC,IAAI,EAAE;aAChB,CAAC;SACL;QAAC,MAAM;YACJ,OAAO;gBACH,UAAU,EAAE,EAAE;aACjB,CAAC;SACL;IACL,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,MAAgC;QACrD,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,EAAE;YACP,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;SACvB;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG,EAAE;YACN,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;SACvB;QAED,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC;YACvB,IAAI,EAAE,CAAC;YACP,SAAS,EAAE,CAAC;SACf,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC;YACrB,IAAI,EAAE,GAAG,CAAC,SAAS;YACnB,SAAS,EAAE,CAAC;SACf,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,MAAqC;QAC3D,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,qBAAqB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,EAAE;YACP,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;SACvB;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG,EAAE;YACN,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;SACvB;QAED,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE3C,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,GAAgB,EAAE,IAAY,EAAE,WAAmB,EAAE,SAAiB;QAC1F,IAAI;YACA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CACvC,YAAY,CAAC,kCAAkC,EAC/C;gBACI,IAAI;gBACJ,KAAK,EAAE,WAAW;gBAClB,MAAM,EAAE,SAAS,GAAG,WAAW;gBAC/B,MAAM,EAAE,MAAM;aACjB,CACJ,CAAC;YAEF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YACvC,OAAO,EAAE,IAAI,EAAE,iBAAiB,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;SACjE;QAAC,MAAM;YACJ,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;SACvB;IACL,CAAC;CACJ"}