typescript-language-server 1.1.2 → 1.2.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 (80) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/LICENSE +39 -0
  3. package/README.md +15 -0
  4. package/lib/completion.d.ts +1 -1
  5. package/lib/completion.d.ts.map +1 -1
  6. package/lib/completion.js +10 -3
  7. package/lib/completion.js.map +1 -1
  8. package/lib/configuration-manager.d.ts +3 -10
  9. package/lib/configuration-manager.d.ts.map +1 -1
  10. package/lib/configuration-manager.js +23 -3
  11. package/lib/configuration-manager.js.map +1 -1
  12. package/lib/features/inlay-hints.js +2 -2
  13. package/lib/features/inlay-hints.js.map +1 -1
  14. package/lib/lsp-server.d.ts +2 -4
  15. package/lib/lsp-server.d.ts.map +1 -1
  16. package/lib/lsp-server.js +46 -85
  17. package/lib/lsp-server.js.map +1 -1
  18. package/lib/lsp-server.spec.js +84 -6
  19. package/lib/lsp-server.spec.js.map +1 -1
  20. package/lib/refactor.d.ts +2 -1
  21. package/lib/refactor.d.ts.map +1 -1
  22. package/lib/refactor.js +17 -7
  23. package/lib/refactor.js.map +1 -1
  24. package/lib/test-utils.d.ts +16 -0
  25. package/lib/test-utils.d.ts.map +1 -1
  26. package/lib/test-utils.js +5 -4
  27. package/lib/test-utils.js.map +1 -1
  28. package/lib/ts-protocol.d.ts +3 -1
  29. package/lib/ts-protocol.d.ts.map +1 -1
  30. package/lib/tsServer/callbackMap.d.ts +17 -0
  31. package/lib/tsServer/callbackMap.d.ts.map +1 -0
  32. package/lib/tsServer/callbackMap.js +47 -0
  33. package/lib/tsServer/callbackMap.js.map +1 -0
  34. package/lib/tsServer/cancellation.d.ts +19 -0
  35. package/lib/tsServer/cancellation.d.ts.map +1 -0
  36. package/lib/tsServer/cancellation.js +52 -0
  37. package/lib/tsServer/cancellation.js.map +1 -0
  38. package/lib/tsServer/requestQueue.d.ts +34 -0
  39. package/lib/tsServer/requestQueue.d.ts.map +1 -0
  40. package/lib/tsServer/requestQueue.js +74 -0
  41. package/lib/tsServer/requestQueue.js.map +1 -0
  42. package/lib/tsServer/requests.d.ts +68 -0
  43. package/lib/tsServer/requests.d.ts.map +1 -0
  44. package/lib/tsServer/requests.js +28 -0
  45. package/lib/tsServer/requests.js.map +1 -0
  46. package/lib/tsServer/server.d.ts +93 -0
  47. package/lib/tsServer/server.d.ts.map +1 -0
  48. package/lib/tsServer/server.js +208 -0
  49. package/lib/tsServer/server.js.map +1 -0
  50. package/lib/tsServer/serverError.d.ts +18 -0
  51. package/lib/tsServer/serverError.d.ts.map +1 -0
  52. package/lib/tsServer/serverError.js +53 -0
  53. package/lib/tsServer/serverError.js.map +1 -0
  54. package/lib/tsServer/serverProcess.d.ts +7 -0
  55. package/lib/tsServer/serverProcess.d.ts.map +1 -0
  56. package/lib/tsServer/serverProcess.js +238 -0
  57. package/lib/tsServer/serverProcess.js.map +1 -0
  58. package/lib/tsServer/spawner.d.ts +14 -0
  59. package/lib/tsServer/spawner.d.ts.map +1 -0
  60. package/lib/tsServer/spawner.js +122 -0
  61. package/lib/tsServer/spawner.js.map +1 -0
  62. package/lib/{utils → tsServer}/versionProvider.d.ts +2 -2
  63. package/lib/tsServer/versionProvider.d.ts.map +1 -0
  64. package/lib/{utils → tsServer}/versionProvider.js +2 -2
  65. package/lib/tsServer/versionProvider.js.map +1 -0
  66. package/lib/tsp-client.d.ts +17 -52
  67. package/lib/tsp-client.d.ts.map +1 -1
  68. package/lib/tsp-client.js +186 -139
  69. package/lib/tsp-client.js.map +1 -1
  70. package/lib/tsp-client.spec.js +11 -6
  71. package/lib/tsp-client.spec.js.map +1 -1
  72. package/lib/utils/api.d.ts +1 -0
  73. package/lib/utils/api.d.ts.map +1 -1
  74. package/lib/utils/api.js +1 -0
  75. package/lib/utils/api.js.map +1 -1
  76. package/lib/utils/modules-resolver.spec.js +1 -1
  77. package/lib/utils/modules-resolver.spec.js.map +1 -1
  78. package/package.json +7 -7
  79. package/lib/utils/versionProvider.d.ts.map +0 -1
  80. package/lib/utils/versionProvider.js.map +0 -1
package/lib/lsp-server.js CHANGED
@@ -25,49 +25,17 @@ import { provideRefactors } from './refactor.js';
25
25
  import { provideOrganizeImports } from './organize-imports.js';
26
26
  import { collectDocumentSymbols, collectSymbolInformation } from './document-symbol.js';
27
27
  import { computeCallers, computeCallees } from './calls.js';
28
- import { TypeScriptVersionProvider } from './utils/versionProvider.js';
29
28
  import { TypeScriptAutoFixProvider } from './features/fix-all.js';
30
29
  import { TypeScriptInlayHintsProvider } from './features/inlay-hints.js';
31
30
  import { SourceDefinitionCommand } from './features/source-definition.js';
31
+ import { TypeScriptVersionProvider } from './tsServer/versionProvider.js';
32
32
  import { Position, Range } from './utils/typeConverters.js';
33
33
  import { CodeActionKind } from './utils/types.js';
34
34
  import { ConfigurationManager } from './configuration-manager.js';
35
- class ServerInitializingIndicator {
36
- constructor(lspClient) {
37
- this.lspClient = lspClient;
38
- }
39
- reset() {
40
- if (this._loadingProjectName) {
41
- this._loadingProjectName = undefined;
42
- if (this._progressReporter) {
43
- this._progressReporter.done();
44
- this._progressReporter = undefined;
45
- }
46
- }
47
- }
48
- async startedLoadingProject(projectName) {
49
- // TS projects are loaded sequentially. Cancel existing task because it should always be resolved before
50
- // the incoming project loading task is.
51
- this.reset();
52
- this._loadingProjectName = projectName;
53
- this._progressReporter = await this.lspClient.createProgressReporter();
54
- this._progressReporter.begin('Initializing JS/TS language features…');
55
- }
56
- finishedLoadingProject(projectName) {
57
- if (this._loadingProjectName === projectName) {
58
- this._loadingProjectName = undefined;
59
- if (this._progressReporter) {
60
- this._progressReporter.done();
61
- this._progressReporter = undefined;
62
- }
63
- }
64
- }
65
- }
66
35
  export class LspServer {
67
36
  constructor(options) {
68
37
  this.options = options;
69
38
  this._tspClient = null;
70
- this._loadingIndicator = null;
71
39
  this.initializeParams = null;
72
40
  this.typeScriptAutoFixProvider = null;
73
41
  this.features = {};
@@ -89,10 +57,6 @@ export class LspServer {
89
57
  this._tspClient.shutdown();
90
58
  this._tspClient = null;
91
59
  }
92
- if (this._loadingIndicator) {
93
- this._loadingIndicator.reset();
94
- this._loadingIndicator = null;
95
- }
96
60
  }
97
61
  get tspClient() {
98
62
  if (!this._tspClient) {
@@ -100,12 +64,6 @@ export class LspServer {
100
64
  }
101
65
  return this._tspClient;
102
66
  }
103
- get loadingIndicator() {
104
- if (!this._loadingIndicator) {
105
- throw new Error('Loading indicator not created. Did you forget to send the "initialize" request?');
106
- }
107
- return this._loadingIndicator;
108
- }
109
67
  findTypescriptVersion() {
110
68
  const typescriptVersionProvider = new TypeScriptVersionProvider(this.options, this.logger);
111
69
  // User-provided tsserver path.
@@ -137,7 +95,6 @@ export class LspServer {
137
95
  }
138
96
  this.initializeParams = params;
139
97
  const clientCapabilities = this.initializeParams.capabilities;
140
- this._loadingIndicator = new ServerInitializingIndicator(this.options.lspClient);
141
98
  this.workspaceRoot = this.initializeParams.rootUri ? uriToPath(this.initializeParams.rootUri) : this.initializeParams.rootPath || undefined;
142
99
  const userInitializationOptions = this.initializeParams.initializationOptions || {};
143
100
  const { disableAutomaticTypingAcquisition, hostInfo, maxTsServerMemory, npmLocation, locale } = userInitializationOptions;
@@ -162,19 +119,23 @@ export class LspServer {
162
119
  this.configurationManager.mergeTsPreferences(userInitializationOptions.preferences || {});
163
120
  // Setup supported features.
164
121
  const { textDocument } = clientCapabilities;
165
- this.features.definitionLinkSupport = textDocument?.definition?.linkSupport && typescriptVersion.version?.gte(API.v270);
166
- const completionCapabilities = textDocument?.completion;
167
- if (completionCapabilities?.completionItem) {
168
- if (this.configurationManager.tsPreferences.useLabelDetailsInCompletionEntries
169
- && completionCapabilities.completionItem.labelDetailsSupport
170
- && typescriptVersion.version?.gte(API.v470)) {
171
- this.features.completionLabelDetails = true;
172
- }
173
- if (completionCapabilities.completionItem.snippetSupport) {
174
- this.features.completionSnippets = true;
175
- }
176
- if (textDocument?.publishDiagnostics?.tagSupport) {
177
- this.features.diagnosticsTagSupport = true;
122
+ if (textDocument) {
123
+ const completionCapabilities = textDocument.completion;
124
+ this.features.codeActionDisabledSupport = textDocument.codeAction?.disabledSupport;
125
+ this.features.definitionLinkSupport = textDocument.definition?.linkSupport && typescriptVersion.version?.gte(API.v270);
126
+ this.features.completionInsertReplaceSupport = completionCapabilities?.completionItem?.insertReplaceSupport;
127
+ if (completionCapabilities?.completionItem) {
128
+ if (this.configurationManager.tsPreferences.useLabelDetailsInCompletionEntries
129
+ && completionCapabilities.completionItem.labelDetailsSupport
130
+ && typescriptVersion.version?.gte(API.v470)) {
131
+ this.features.completionLabelDetails = true;
132
+ }
133
+ if (completionCapabilities.completionItem.snippetSupport) {
134
+ this.features.completionSnippets = true;
135
+ }
136
+ if (textDocument.publishDiagnostics?.tagSupport) {
137
+ this.features.diagnosticsTagSupport = true;
138
+ }
178
139
  }
179
140
  }
180
141
  this.configurationManager.mergeTsPreferences({
@@ -182,8 +143,8 @@ export class LspServer {
182
143
  });
183
144
  this.diagnosticQueue = new DiagnosticEventQueue(diagnostics => this.options.lspClient.publishDiagnostics(diagnostics), this.documents, this.features, this.logger);
184
145
  this._tspClient = new TspClient({
185
- apiVersion: typescriptVersion.version || API.defaultVersion,
186
- tsserverPath: typescriptVersion.tsServerPath,
146
+ lspClient: this.options.lspClient,
147
+ typescriptVersion,
187
148
  logFile,
188
149
  logVerbosity,
189
150
  disableAutomaticTypingAcquisition,
@@ -213,7 +174,7 @@ export class LspServer {
213
174
  });
214
175
  this.typeScriptAutoFixProvider = new TypeScriptAutoFixProvider(this.tspClient);
215
176
  await Promise.all([
216
- this.configurationManager.setAndConfigureTspClient(this._tspClient, hostInfo),
177
+ this.configurationManager.setAndConfigureTspClient(this.workspaceRoot, this._tspClient, hostInfo),
217
178
  this.tspClient.request("compilerOptionsForInferredProjects" /* CommandTypes.CompilerOptionsForInferredProjects */, {
218
179
  options: {
219
180
  module: "CommonJS" /* tsp.ModuleKind.CommonJS */,
@@ -352,7 +313,7 @@ export class LspServer {
352
313
  this.diagnosticsTokenSource = geterrTokenSource;
353
314
  const { files } = this.documents;
354
315
  try {
355
- return await this.tspClient.request("geterr" /* CommandTypes.Geterr */, { delay: 0, files }, this.diagnosticsTokenSource.token);
316
+ return await this.tspClient.requestGeterr({ delay: 0, files }, this.diagnosticsTokenSource.token);
356
317
  }
357
318
  finally {
358
319
  if (this.diagnosticsTokenSource === geterrTokenSource) {
@@ -586,18 +547,22 @@ export class LspServer {
586
547
  triggerKind: params.context?.triggerKind,
587
548
  }));
588
549
  const { body } = result;
550
+ if (!body) {
551
+ return lsp.CompletionList.create();
552
+ }
553
+ const { entries, isIncomplete, optionalReplacementSpan } = body;
589
554
  const completions = [];
590
- for (const entry of body?.entries ?? []) {
555
+ for (const entry of entries || []) {
591
556
  if (entry.kind === 'warning') {
592
557
  continue;
593
558
  }
594
- const completion = asCompletionItem(entry, file, params.position, document, this.features);
559
+ const completion = asCompletionItem(entry, optionalReplacementSpan, file, params.position, document, this.features);
595
560
  if (!completion) {
596
561
  continue;
597
562
  }
598
563
  completions.push(completion);
599
564
  }
600
- return lsp.CompletionList.create(completions, body?.isIncomplete);
565
+ return lsp.CompletionList.create(completions, isIncomplete);
601
566
  }
602
567
  catch (error) {
603
568
  if (error.message === 'No content available.') {
@@ -780,15 +745,14 @@ export class LspServer {
780
745
  if (!file) {
781
746
  return [];
782
747
  }
783
- const args = Range.toFileRangeRequestArgs(file, params.range);
748
+ const fileRangeArgs = Range.toFileRangeRequestArgs(file, params.range);
784
749
  const actions = [];
785
750
  const kinds = params.context.only?.map(kind => new CodeActionKind(kind));
786
751
  if (!kinds || kinds.some(kind => kind.contains(CodeActionKind.QuickFix))) {
787
- const errorCodes = params.context.diagnostics.map(diagnostic => Number(diagnostic.code));
788
- actions.push(...provideQuickFix(await this.getCodeFixes({ ...args, errorCodes }), this.documents));
752
+ actions.push(...provideQuickFix(await this.getCodeFixes(fileRangeArgs, params.context), this.documents));
789
753
  }
790
754
  if (!kinds || kinds.some(kind => kind.contains(CodeActionKind.Refactor))) {
791
- actions.push(...provideRefactors(await this.getRefactors(args), args));
755
+ actions.push(...provideRefactors(await this.getRefactors(fileRangeArgs, params.context), fileRangeArgs, this.features));
792
756
  }
793
757
  // organize import is provided by tsserver for any line, so we only get it if explicitly requested
794
758
  if (kinds?.some(kind => kind.contains(CodeActionKind.SourceOrganizeImportsTs))) {
@@ -798,7 +762,7 @@ export class LspServer {
798
762
  // assume no severity is an error
799
763
  d => (d.severity ?? 0) <= 2);
800
764
  const response = await this.getOrganizeImports({
801
- scope: { type: 'file', args },
765
+ scope: { type: 'file', args: fileRangeArgs },
802
766
  skipDestructiveCodeActions,
803
767
  });
804
768
  actions.push(...provideOrganizeImports(response, this.documents));
@@ -816,7 +780,12 @@ export class LspServer {
816
780
  }
817
781
  return actions;
818
782
  }
819
- async getCodeFixes(args) {
783
+ async getCodeFixes(fileRangeArgs, context) {
784
+ const errorCodes = context.diagnostics.map(diagnostic => Number(diagnostic.code));
785
+ const args = {
786
+ ...fileRangeArgs,
787
+ errorCodes,
788
+ };
820
789
  try {
821
790
  return await this.tspClient.request("getCodeFixes" /* CommandTypes.GetCodeFixes */, args);
822
791
  }
@@ -824,7 +793,12 @@ export class LspServer {
824
793
  return undefined;
825
794
  }
826
795
  }
827
- async getRefactors(args) {
796
+ async getRefactors(fileRangeArgs, context) {
797
+ const args = {
798
+ ...fileRangeArgs,
799
+ triggerReason: context.triggerKind === lsp.CodeActionTriggerKind.Invoked ? 'invoked' : undefined,
800
+ kind: context.only?.length === 1 ? context.only[0] : undefined,
801
+ };
828
802
  try {
829
803
  return await this.tspClient.request("getApplicableRefactors" /* CommandTypes.GetApplicableRefactors */, args);
830
804
  }
@@ -1065,22 +1039,9 @@ export class LspServer {
1065
1039
  }
1066
1040
  }
1067
1041
  async onTsEvent(event) {
1068
- if (event.event === "semanticDiag" /* EventTypes.SementicDiag */ ||
1069
- event.event === "syntaxDiag" /* EventTypes.SyntaxDiag */ ||
1070
- event.event === "suggestionDiag" /* EventTypes.SuggestionDiag */) {
1042
+ if (event.event === "semanticDiag" /* EventTypes.SementicDiag */ || event.event === "syntaxDiag" /* EventTypes.SyntaxDiag */ || event.event === "suggestionDiag" /* EventTypes.SuggestionDiag */) {
1071
1043
  this.diagnosticQueue?.updateDiagnostics(event.event, event);
1072
1044
  }
1073
- else if (event.event === "projectLoadingStart" /* EventTypes.ProjectLoadingStart */) {
1074
- await this.loadingIndicator.startedLoadingProject(event.body.projectName);
1075
- }
1076
- else if (event.event === "projectLoadingFinish" /* EventTypes.ProjectLoadingFinish */) {
1077
- this.loadingIndicator.finishedLoadingProject(event.body.projectName);
1078
- }
1079
- else {
1080
- this.logger.log('Ignored event', {
1081
- event: event.event,
1082
- });
1083
- }
1084
1045
  }
1085
1046
  async calls(params) {
1086
1047
  let callsResult = { calls: [] };
@@ -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,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,KAAK,GAAG,MAAM,uBAAuB,CAAC;AAC7C,OAAO,KAAK,QAAQ,MAAM,kCAAkC,CAAC;AAE7D,OAAO,KAAK,iBAAiB,MAAM,sBAAsB,CAAC;AAE1D,OAAO,GAAG,MAAM,gBAAgB,CAAC;AAEjC,OAAO,EAAU,eAAe,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC7K,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;AAE/D,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5D,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,EAAqB,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC7F,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,MAAM,OAAO,SAAS;IAYlB,YAAoB,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;QAXnC,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;QA6RhD,4GAA4G;QAC5G,uBAAuB;QACvB,4BAAuB,GAAG,KAAK,CAAC;QAKvB,kCAA6B,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,GAAG,CAAC,CAAC;QAjStF,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;IAEO,qBAAqB;QACzB,MAAM,yBAAyB,GAAG,IAAI,yBAAyB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3F,+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,IAAI,CAAC,6EAA6E,kBAAkB,CAAC,IAAI,GAAG,CAAC,CAAC;SAC7H;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,IAAI,cAAc,CAAC,OAAO,EAAE;YAC1C,OAAO,cAAc,CAAC;SACzB;QACD,OAAO,IAAI,CAAC;IAChB,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,GAAG,yBAAyB,CAAC;QAC1H,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,GAAoC;YAC/D,YAAY,EAAE,yBAAyB,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB;YACzF,OAAO,EAAE,yBAAyB,CAAC,OAAO,IAAI,EAAE;SACnD,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAC9C,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,EAAE,CAAC;QACvD,IAAI,iBAAiB,EAAE;YACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,iBAAiB,CAAC,MAAM,KAAK,iBAAiB,CAAC,aAAa,eAAe,iBAAiB,CAAC,YAAY,GAAG,CAAC,CAAC;SAC/J;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,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAC;YAC5B,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;YACjC,iBAAiB;YACjB,OAAO;YACP,YAAY;YACZ,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,QAAQ,EAAE;oBACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,QAAQ,aAAa,MAAM,yBAAyB,CAAC,CAAC;iBACtH;gBACD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpB,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,MAAM,OAAO,CAAC,GAAG,CAAC;YACd,IAAI,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC;YACjG,IAAI,CAAC,SAAS,CAAC,OAAO,6FAAkD;gBACpE,OAAO,EAAE;oBACL,MAAM,0CAAyB;oBAC/B,MAAM,wCAAyB;oBAC/B,GAAG,uCAAsB;oBACzB,OAAO,EAAE,IAAI;oBACb,4BAA4B,EAAE,IAAI;oBAClC,oBAAoB,EAAE,IAAI;iBAC7B;aACJ,CAAC;SACL,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC5D,MAAM,gBAAgB,GAA+B;YACjD,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,iBAAiB;wBAC1B,QAAQ,CAAC,iBAAiB;qBAC7B;iBACJ;gBACD,aAAa,EAAE,IAAI;gBACnB,iBAAiB,EAAE,IAAI;gBACvB,cAAc,EAAE,IAAI;gBACpB,kBAAkB,EAAE,IAAI;gBACxB,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;YACD,UAAU;SACb,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;IACS,UAAU,CAAC,YAAgC;QACjD,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,KAAK,EAAE;YACtD,OAAO,SAAS,CAAC;SACpB;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACpC,IAAI,OAAO,EAAE;YACT,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAC3B,OAAO,OAAO,CAAC;SAClB;QACD,OAAO,aAAa,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;IACnD,CAAC;IACS,YAAY;QAClB,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE;YAC/B,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;SACxC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;YAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;SACvC;QACD,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;SAC7D;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,sBAAsB,CAAC,MAAwC;QAC3D,IAAI,CAAC,oBAAoB,CAAC,yBAAyB,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QAC3E,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,iCAAoB;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,mCAAqB,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,yCAAyC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YAChF,MAAM,IAAI,KAAK,CAAC,yCAAyC,GAAG,YAAY,CAAC,GAAG,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,qCAAsB;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,oEAAqC,CAAC,2CAAwB;YACzG,MAAM;SACT,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,MAAsC;QACvD,OAAO,IAAI,CAAC,kBAAkB,CAAC;YAC3B,IAAI,oDAA6B;YACjC,MAAM;SACT,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,MAAsC;QACvD,OAAO,IAAI,CAAC,kBAAkB,CAAC;YAC3B,IAAI,oDAA6B;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,uEAAwC,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,4CAAyB,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,uCAAuB;YAChE,IAAI;SACP,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAC3B,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,IAAI,YAAY,CAAC,cAAc,CAAC;QACnE,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,sDAAsD,GAAG,IAAI,CAAC,CAAC;SAClF;QAED,IAAI;YACA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,qDAA8B;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,QAAQ,CAAC,CAAC;gBACpH,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,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,gEAAiC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACzH,MAAM,OAAO,GAAG,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,EAAE;YACV,OAAO,IAAI,CAAC;SACf;QACD,OAAO,wBAAwB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,WAAW,IAAI,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtJ,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,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YACzB,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;SAC3B;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAuB,EAAE,CAAC;QACxC,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE;YAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;SAC/E;QACD,MAAM,IAAI,GAAG,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC7D,QAAQ,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3D,OAAO;YACH,QAAQ;YACR,KAAK;SACR,CAAC;IACN,CAAC;IACS,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,QAAsB;QAC7D,IAAI;YACA,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,2CAAyB;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,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,SAAS,CAAC;SACpB;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,qCAAsB;YAC7D,IAAI;YACJ,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC;YAC9B,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC;SACxC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YAC9E,OAAO,SAAS,CAAC;SACpB;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,6CAA0B;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,qCAAsB;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,qCAAsB;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,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,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;YAC7B,OAAO,SAAS,CAAC;SACpB;QACD,OAAO,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1D,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,mDAA6B;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,iDAA4B,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,qEAAsC,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,uDAA+B,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,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE;gBACnD,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,QAAQ,EAAE;oBACvC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,qEAAsC,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,+DAAmC,IAAI,CAAC,CAAC;YACtF,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;gBAC7B,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,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,uDAA+B;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,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE;oBACnD,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,QAAQ,EAAE;wBACvC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,qEAAsC,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,mEAAqC;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,6DAAkC;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,mCAAqB;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,0DAA0D,GAAG,IAAI,CAAC,CAAC;SACtF;QACD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,2DAAiC,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,KAAqB;QAC3C,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,2DAEvC;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,8FAEvC;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"}
@@ -144,7 +144,8 @@ describe('completion', () => {
144
144
  });
145
145
  const pos = position(doc, 'foo');
146
146
  const proposals = await server.completion({ textDocument: doc, position: pos });
147
- assert.isNull(proposals);
147
+ assert.isNotNull(proposals);
148
+ assert.strictEqual(proposals?.items.length, 0);
148
149
  server.didCloseTextDocument({ textDocument: doc });
149
150
  });
150
151
  it('includes completions from global modules', async () => {
@@ -184,6 +185,67 @@ describe('completion', () => {
184
185
  assert.equal(completion.textEdit.newText, '["invalid-identifier-name"]');
185
186
  server.didCloseTextDocument({ textDocument: doc });
186
187
  });
188
+ it('completions for clients that support insertReplaceSupport', async () => {
189
+ const doc = {
190
+ uri: uri('bar.ts'),
191
+ languageId: 'typescript',
192
+ version: 1,
193
+ text: `
194
+ class Foo {
195
+ getById() {};
196
+ }
197
+
198
+ const foo = new Foo()
199
+ foo.getById()
200
+ `,
201
+ };
202
+ server.didOpenTextDocument({ textDocument: doc });
203
+ const proposals = await server.completion({ textDocument: doc, position: positionAfter(doc, '.get') });
204
+ assert.isNotNull(proposals);
205
+ const completion = proposals.items.find(completion => completion.label === 'getById');
206
+ assert.isDefined(completion);
207
+ assert.isDefined(completion.textEdit);
208
+ assert.containsAllKeys(completion.textEdit, ['newText', 'insert', 'replace']);
209
+ server.didCloseTextDocument({ textDocument: doc });
210
+ });
211
+ it('completions for clients that do not support insertReplaceSupport', async () => {
212
+ const clientCapabilitiesOverride = {
213
+ textDocument: {
214
+ completion: {
215
+ completionItem: {
216
+ insertReplaceSupport: false,
217
+ },
218
+ },
219
+ },
220
+ };
221
+ const localServer = await createServer({
222
+ rootUri: null,
223
+ publishDiagnostics: () => { },
224
+ clientCapabilitiesOverride,
225
+ });
226
+ const doc = {
227
+ uri: uri('bar.ts'),
228
+ languageId: 'typescript',
229
+ version: 1,
230
+ text: `
231
+ class Foo {
232
+ getById() {};
233
+ }
234
+
235
+ const foo = new Foo()
236
+ foo.getById()
237
+ `,
238
+ };
239
+ localServer.didOpenTextDocument({ textDocument: doc });
240
+ const proposals = await localServer.completion({ textDocument: doc, position: positionAfter(doc, '.get') });
241
+ assert.isNotNull(proposals);
242
+ const completion = proposals.items.find(completion => completion.label === 'getById');
243
+ assert.isDefined(completion);
244
+ assert.isUndefined(completion.textEdit);
245
+ localServer.didCloseTextDocument({ textDocument: doc });
246
+ localServer.closeAll();
247
+ localServer.shutdown();
248
+ });
187
249
  it('includes detail field with package name for auto-imports', async () => {
188
250
  const doc = {
189
251
  uri: uri('bar.ts'),
@@ -315,7 +377,7 @@ describe('completion', () => {
315
377
  return true;
316
378
  }
317
379
 
318
- test("fs/")
380
+ test("fs/r")
319
381
  `,
320
382
  };
321
383
  server.didOpenTextDocument({ textDocument: doc });
@@ -331,11 +393,27 @@ describe('completion', () => {
331
393
  const completion = proposals.items.find(completion => completion.label === 'fs/read');
332
394
  assert.strictEqual(completion.label, 'fs/read');
333
395
  assert.deepStrictEqual(completion.textEdit, {
334
- range: {
335
- start: { line: 5, character: 20 },
336
- end: { line: 5, character: 23 },
337
- },
338
396
  newText: 'fs/read',
397
+ insert: {
398
+ start: {
399
+ line: 5,
400
+ character: 20,
401
+ },
402
+ end: {
403
+ line: 5,
404
+ character: 23,
405
+ },
406
+ },
407
+ replace: {
408
+ start: {
409
+ line: 5,
410
+ character: 20,
411
+ },
412
+ end: {
413
+ line: 5,
414
+ character: 24,
415
+ },
416
+ },
339
417
  });
340
418
  });
341
419
  it('includes labelDetails with useLabelDetailsInCompletionEntries enabled', async () => {