brighterscript 0.71.0 → 0.72.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bsconfig.schema.json +13 -0
- package/dist/BsConfig.d.ts +35 -5
- package/dist/CodeActionUtil.d.ts +17 -0
- package/dist/CodeActionUtil.js.map +1 -1
- package/dist/DiagnosticMessages.d.ts +6 -1
- package/dist/DiagnosticMessages.js +5 -0
- package/dist/DiagnosticMessages.js.map +1 -1
- package/dist/LanguageServer.d.ts +15 -2
- package/dist/LanguageServer.js +100 -7
- package/dist/LanguageServer.js.map +1 -1
- package/dist/Program.d.ts +76 -1
- package/dist/Program.js +215 -2
- package/dist/Program.js.map +1 -1
- package/dist/Scope.d.ts +53 -7
- package/dist/Scope.js +28 -66
- package/dist/Scope.js.map +1 -1
- package/dist/ScopeNamespaceLookup.d.ts +73 -0
- package/dist/ScopeNamespaceLookup.js +240 -0
- package/dist/ScopeNamespaceLookup.js.map +1 -0
- package/dist/SymbolTable.d.ts +9 -2
- package/dist/SymbolTable.js +10 -5
- package/dist/SymbolTable.js.map +1 -1
- package/dist/bscPlugin/BscPlugin.d.ts +3 -1
- package/dist/bscPlugin/BscPlugin.js +8 -0
- package/dist/bscPlugin/BscPlugin.js.map +1 -1
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +2 -4
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
- package/dist/bscPlugin/codeActions/FixAllCodeActionsProcessor.d.ts +17 -0
- package/dist/bscPlugin/codeActions/FixAllCodeActionsProcessor.js +66 -0
- package/dist/bscPlugin/codeActions/FixAllCodeActionsProcessor.js.map +1 -0
- package/dist/bscPlugin/codeActions/codeActionHelpers.d.ts +18 -0
- package/dist/bscPlugin/codeActions/codeActionHelpers.js +29 -0
- package/dist/bscPlugin/codeActions/codeActionHelpers.js.map +1 -0
- package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.d.ts +7 -0
- package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.js +74 -0
- package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.js.map +1 -0
- package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.spec.d.ts +1 -0
- package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.spec.js +298 -0
- package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.spec.js.map +1 -0
- package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.d.ts +2 -0
- package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js +49 -4
- package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js.map +1 -1
- package/dist/bscPlugin/validation/BrsFileValidator.d.ts +13 -0
- package/dist/bscPlugin/validation/BrsFileValidator.js +42 -0
- package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
- package/dist/bscPlugin/validation/BrsFileValidator.spec.js +101 -0
- package/dist/bscPlugin/validation/BrsFileValidator.spec.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.d.ts +11 -0
- package/dist/bscPlugin/validation/ScopeValidator.js +69 -0
- package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
- package/dist/files/BrsFile.d.ts +15 -0
- package/dist/files/BrsFile.js +88 -5
- package/dist/files/BrsFile.js.map +1 -1
- package/dist/files/BrsFile.spec.js +156 -3
- package/dist/files/BrsFile.spec.js.map +1 -1
- package/dist/interfaces.d.ts +51 -1
- package/dist/lsp/DocumentManager.spec.js +1 -1
- package/dist/lsp/DocumentManager.spec.js.map +1 -1
- package/dist/lsp/LspProject.d.ts +30 -1
- package/dist/lsp/Project.d.ts +19 -1
- package/dist/lsp/Project.js +98 -2
- package/dist/lsp/Project.js.map +1 -1
- package/dist/lsp/Project.spec.js +146 -9
- package/dist/lsp/Project.spec.js.map +1 -1
- package/dist/lsp/ProjectManager.d.ts +38 -2
- package/dist/lsp/ProjectManager.js +116 -4
- package/dist/lsp/ProjectManager.js.map +1 -1
- package/dist/lsp/ProjectManager.spec.js +236 -1
- package/dist/lsp/ProjectManager.spec.js.map +1 -1
- package/dist/lsp/worker/WorkerThreadProject.d.ts +13 -2
- package/dist/lsp/worker/WorkerThreadProject.js +9 -0
- package/dist/lsp/worker/WorkerThreadProject.js.map +1 -1
- package/dist/lsp/worker/WorkerThreadProject.spec.js +2 -1
- package/dist/lsp/worker/WorkerThreadProject.spec.js.map +1 -1
- package/dist/parser/Parser.d.ts +10 -0
- package/dist/parser/Parser.js +18 -3
- package/dist/parser/Parser.js.map +1 -1
- package/dist/parser/Parser.spec.js +111 -0
- package/dist/parser/Parser.spec.js.map +1 -1
- package/dist/parser/TranspileState.d.ts +4 -2
- package/dist/parser/TranspileState.js +3 -3
- package/dist/parser/TranspileState.js.map +1 -1
- package/dist/parser/tests/expression/Call.spec.js +4 -5
- package/dist/parser/tests/expression/Call.spec.js.map +1 -1
- package/dist/parser/tests/expression/Function.spec.js +2 -2
- package/dist/parser/tests/expression/Function.spec.js.map +1 -1
- package/dist/parser/tests/statement/ConstStatement.spec.js +218 -1
- package/dist/parser/tests/statement/ConstStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/Enum.spec.js +2 -0
- package/dist/parser/tests/statement/Enum.spec.js.map +1 -1
- package/dist/util.d.ts +26 -0
- package/dist/util.js +68 -0
- package/dist/util.js.map +1 -1
- package/package.json +4 -2
|
@@ -43,6 +43,11 @@ class ProjectManager {
|
|
|
43
43
|
* All of these are also present in the `projects` collection.
|
|
44
44
|
*/
|
|
45
45
|
this.standaloneProjects = new Map();
|
|
46
|
+
/**
|
|
47
|
+
* Maximum number of projects to activate or validate concurrently during syncProjects.
|
|
48
|
+
* Limits CPU spikes when many projects are discovered (e.g. in large monorepos).
|
|
49
|
+
*/
|
|
50
|
+
this.projectActivationConcurrencyLimit = 3;
|
|
46
51
|
this.busyStatusTracker = new BusyStatusTracker_1.BusyStatusTracker();
|
|
47
52
|
/**
|
|
48
53
|
* Cache for PathCollection instances per project. Avoids recreating PathCollection
|
|
@@ -50,6 +55,12 @@ class ProjectManager {
|
|
|
50
55
|
*/
|
|
51
56
|
this.projectFiltererCache = new WeakMap();
|
|
52
57
|
this.firstSync = new deferred_1.Deferred();
|
|
58
|
+
/**
|
|
59
|
+
* Monotonically increasing counter used to detect stale sync cycles.
|
|
60
|
+
* When a new `syncProjects` call arrives, any in-progress activation or validation
|
|
61
|
+
* from a previous cycle will see a mismatched generation and bail out.
|
|
62
|
+
*/
|
|
63
|
+
this.syncGeneration = 0;
|
|
53
64
|
this.fileChangesQueue = new ActionQueue_1.ActionQueue({
|
|
54
65
|
maxActionDuration: 45000
|
|
55
66
|
});
|
|
@@ -193,6 +204,7 @@ class ProjectManager {
|
|
|
193
204
|
project.isStandaloneProject = true;
|
|
194
205
|
this.standaloneProjects.set(srcPath, project);
|
|
195
206
|
await this.activateProject(project, projectConfig);
|
|
207
|
+
void project.validate();
|
|
196
208
|
}
|
|
197
209
|
removeStandaloneProject(srcPath) {
|
|
198
210
|
srcPath = util_1.util.standardizePath(srcPath);
|
|
@@ -252,6 +264,7 @@ class ProjectManager {
|
|
|
252
264
|
}
|
|
253
265
|
}
|
|
254
266
|
this.logger.log('syncProjects', workspaceConfigs.map(x => x.workspaceFolder));
|
|
267
|
+
const generation = ++this.syncGeneration;
|
|
255
268
|
this.syncPromise = (async () => {
|
|
256
269
|
//build a list of unique projects across all workspace folders
|
|
257
270
|
let projectConfigs = (await Promise.all(workspaceConfigs.map(async (workspaceConfig) => {
|
|
@@ -287,16 +300,50 @@ class ProjectManager {
|
|
|
287
300
|
projectConfigs = [
|
|
288
301
|
...projectConfigs.reduce((acc, x) => acc.set(x.projectKey, x), new Map()).values()
|
|
289
302
|
];
|
|
290
|
-
//
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
303
|
+
// Phase 1: activate projects with concurrency limit (awaited — gates LSP readiness)
|
|
304
|
+
const activatedProjects = [];
|
|
305
|
+
await this.runWithConcurrencyLimit(projectConfigs, this.projectActivationConcurrencyLimit, async (config) => {
|
|
306
|
+
if (this.syncGeneration !== generation) {
|
|
307
|
+
return;
|
|
308
|
+
}
|
|
309
|
+
const project = await this.createAndActivateProject(config);
|
|
310
|
+
activatedProjects.push(project);
|
|
311
|
+
});
|
|
294
312
|
//mark that we've completed our first sync
|
|
295
313
|
this.firstSync.tryResolve();
|
|
314
|
+
// Phase 2: validate activated projects with concurrency limit (NOT awaited — doesn't block LSP requests)
|
|
315
|
+
if (this.syncGeneration === generation) {
|
|
316
|
+
void this.runWithConcurrencyLimit(activatedProjects, this.projectActivationConcurrencyLimit, async (project) => {
|
|
317
|
+
if (this.syncGeneration !== generation) {
|
|
318
|
+
return;
|
|
319
|
+
}
|
|
320
|
+
await project.validate();
|
|
321
|
+
}).catch(e => this.logger.error('Validation phase error', e));
|
|
322
|
+
}
|
|
296
323
|
})();
|
|
297
324
|
//return the sync promise
|
|
298
325
|
return this.syncPromise;
|
|
299
326
|
}
|
|
327
|
+
/**
|
|
328
|
+
* Run async actions over a list of items with a concurrency limit.
|
|
329
|
+
* Uses a worker-pool pattern: `concurrencyLimit` workers pull items from a shared queue.
|
|
330
|
+
*/
|
|
331
|
+
async runWithConcurrencyLimit(items, concurrencyLimit, action) {
|
|
332
|
+
const queue = [...items];
|
|
333
|
+
if (queue.length === 0) {
|
|
334
|
+
return;
|
|
335
|
+
}
|
|
336
|
+
const workerCount = Math.max(1, Math.min(concurrencyLimit, queue.length));
|
|
337
|
+
const workers = Array.from({ length: workerCount }, async () => {
|
|
338
|
+
while (queue.length > 0) {
|
|
339
|
+
const item = queue.shift();
|
|
340
|
+
if (item) {
|
|
341
|
+
await action(item);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
});
|
|
345
|
+
await Promise.all(workers);
|
|
346
|
+
}
|
|
300
347
|
handleFileChanges(changes) {
|
|
301
348
|
this.logger.debug('handleFileChanges', changes.map(x => `${FileChangeTypeLookup[x.type]}: ${x.srcPath}`));
|
|
302
349
|
//this function should NOT be marked as async, because typescript wraps the body in an async call sometimes. These need to be registered synchronously
|
|
@@ -397,6 +444,7 @@ class ProjectManager {
|
|
|
397
444
|
this.logger.log('Reloading project', { projectPath: project.projectKey });
|
|
398
445
|
this.removeProject(project);
|
|
399
446
|
project = await this.createAndActivateProject(project.activateOptions);
|
|
447
|
+
void project.validate();
|
|
400
448
|
}
|
|
401
449
|
/**
|
|
402
450
|
* Get all the semantic tokens for the given file
|
|
@@ -527,6 +575,46 @@ class ProjectManager {
|
|
|
527
575
|
(result) => !!result);
|
|
528
576
|
return result !== null && result !== void 0 ? result : [];
|
|
529
577
|
}
|
|
578
|
+
/**
|
|
579
|
+
* Collect file-rename text edits from every project and reconcile them.
|
|
580
|
+
* If two projects produce different replacement text for the same (uri, range), drop that edit
|
|
581
|
+
* to avoid mangling source. Otherwise emit the agreed-upon edit once.
|
|
582
|
+
*/
|
|
583
|
+
async getFileRenameEdits(options) {
|
|
584
|
+
await this.onIdle();
|
|
585
|
+
const perProjectEdits = await Promise.all(this.projects.map(async (project) => {
|
|
586
|
+
try {
|
|
587
|
+
return await project.getFileRenameEdits(options);
|
|
588
|
+
}
|
|
589
|
+
catch (error) {
|
|
590
|
+
this.logger.debug(`[${util_1.util.getProjectLogName(project)}] getFileRenameEdits failed`, error);
|
|
591
|
+
return [];
|
|
592
|
+
}
|
|
593
|
+
}));
|
|
594
|
+
const editsByKey = new Map();
|
|
595
|
+
for (const projectEdits of perProjectEdits) {
|
|
596
|
+
for (const edit of projectEdits !== null && projectEdits !== void 0 ? projectEdits : []) {
|
|
597
|
+
const key = `${edit.uri.toLowerCase()}|${edit.range.start.line}:${edit.range.start.character}-${edit.range.end.line}:${edit.range.end.character}`;
|
|
598
|
+
const existing = editsByKey.get(key);
|
|
599
|
+
if (!existing) {
|
|
600
|
+
editsByKey.set(key, { edit: edit, agreedNewText: edit.newText });
|
|
601
|
+
}
|
|
602
|
+
else if (existing.agreedNewText !== null && existing.agreedNewText !== edit.newText) {
|
|
603
|
+
//projects disagree on the replacement — drop the edit rather than risk corrupting source
|
|
604
|
+
existing.agreedNewText = null;
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
const result = [];
|
|
609
|
+
for (const { edit, agreedNewText } of editsByKey.values()) {
|
|
610
|
+
if (agreedNewText === null) {
|
|
611
|
+
this.logger.debug('Dropping file-rename edit due to cross-project disagreement', edit);
|
|
612
|
+
continue;
|
|
613
|
+
}
|
|
614
|
+
result.push({ uri: edit.uri, range: edit.range, newText: agreedNewText });
|
|
615
|
+
}
|
|
616
|
+
return result;
|
|
617
|
+
}
|
|
530
618
|
async getCodeActions(options) {
|
|
531
619
|
//wait for all pending syncs to finish
|
|
532
620
|
await this.onIdle();
|
|
@@ -536,6 +624,21 @@ class ProjectManager {
|
|
|
536
624
|
(result) => !!result);
|
|
537
625
|
return result;
|
|
538
626
|
}
|
|
627
|
+
async getFixAllCodeActions(options) {
|
|
628
|
+
//wait for all pending syncs to finish
|
|
629
|
+
await this.onIdle();
|
|
630
|
+
let result = await util_1.util.promiseRaceMatch(this.projects.map(x => x.getSourceFixAllCodeActions(options)), (result) => !!result);
|
|
631
|
+
return result;
|
|
632
|
+
}
|
|
633
|
+
async getSelectionRanges(options) {
|
|
634
|
+
//wait for all pending syncs to finish
|
|
635
|
+
await this.onIdle();
|
|
636
|
+
//Ask every project for selection ranges, keep whichever one responds first with a non-empty result
|
|
637
|
+
let result = await util_1.util.promiseRaceMatch(this.projects.map(x => x.getSelectionRanges(options)),
|
|
638
|
+
//keep the first non-empty result
|
|
639
|
+
(result) => (result === null || result === void 0 ? void 0 : result.length) > 0);
|
|
640
|
+
return result !== null && result !== void 0 ? result : [];
|
|
641
|
+
}
|
|
539
642
|
/**
|
|
540
643
|
* Scan a given workspace for all `bsconfig.json` files. If at least one is found, then only folders who have bsconfig.json are returned.
|
|
541
644
|
* If none are found, then the workspaceFolder itself is treated as a project
|
|
@@ -797,9 +900,18 @@ __decorate([
|
|
|
797
900
|
__decorate([
|
|
798
901
|
TrackBusyStatus
|
|
799
902
|
], ProjectManager.prototype, "getReferences", null);
|
|
903
|
+
__decorate([
|
|
904
|
+
TrackBusyStatus
|
|
905
|
+
], ProjectManager.prototype, "getFileRenameEdits", null);
|
|
800
906
|
__decorate([
|
|
801
907
|
TrackBusyStatus
|
|
802
908
|
], ProjectManager.prototype, "getCodeActions", null);
|
|
909
|
+
__decorate([
|
|
910
|
+
TrackBusyStatus
|
|
911
|
+
], ProjectManager.prototype, "getFixAllCodeActions", null);
|
|
912
|
+
__decorate([
|
|
913
|
+
TrackBusyStatus
|
|
914
|
+
], ProjectManager.prototype, "getSelectionRanges", null);
|
|
803
915
|
__decorate([
|
|
804
916
|
TrackBusyStatus
|
|
805
917
|
], ProjectManager.prototype, "createAndActivateProject", null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectManager.js","sourceRoot":"","sources":["../../src/lsp/ProjectManager.ts"],"names":[],"mappings":";;;;;;;;;AAAA,kCAAqD;AACrD,6CAAyC;AACzC,6BAA6B;AAC7B,8CAA8C;AAE9C,uCAAoC;AACpC,sEAAmE;AACnE,mFAAgE;AAEhE,0CAAuC;AAEvC,uDAAoD;AAEpD,4DAAyD;AACzD,sCAAsC;AACtC,iDAA8D;AAE9D,wCAA0C;AAC1C,oCAAiC;AACjC,+CAA4C;AAC5C,oCAAoC;AAGpC,MAAM,oBAAoB,GAAG,MAAM,CAAC,OAAO,CAAC,+CAAc,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;IACrF,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;IACjB,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACjB,OAAO,GAAG,CAAC;AACf,CAAC,EAAE,EAAE,CAAC,CAAC;AAEP;;GAEG;AACH,MAAa,cAAc;IACvB,YAAY,OAGX;;QAsBD;;WAEG;QACI,aAAQ,GAAiB,EAAE,CAAC;QAEnC;;;WAGG;QACK,uBAAkB,GAAG,IAAI,GAAG,EAA6B,CAAC;QAK3D,sBAAiB,GAAG,IAAI,qCAAiB,EAAc,CAAC;QAE/D;;;WAGG;QACK,yBAAoB,GAAG,IAAI,OAAO,EAA8B,CAAC;QAuKjE,cAAS,GAAG,IAAI,mBAAQ,EAAE,CAAC;QAgH3B,qBAAgB,GAAG,IAAI,yBAAW,CAAC;YACvC,iBAAiB,EAAE,KAAM;SAC5B,CAAC,CAAC;QA8jBK,YAAO,GAAG,IAAI,YAAY,EAAE,CAAC;QAh4BjC,IAAI,CAAC,MAAM,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,mCAAI,IAAA,sBAAY,GAAE,CAAC;QAChD,IAAI,CAAC,YAAY,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,mCAAI,IAAI,2BAAY,CAAC,EAAE,MAAM,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,EAAE,CAAC,CAAC;QAC3F,IAAI,CAAC,eAAe,GAAG,IAAI,iCAAe,CAAC;YACvC,KAAK,EAAE,cAAc,CAAC,oBAAoB;YAC1C,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE;gBACpB,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACzE,CAAC;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,EAAE;YAChC,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE;YAC9B,KAAK,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QAChF,CAAC,CAAC,CAAC;IACP,CAAC;IA4BD;;;OAGG;IACK,kBAAkB,CAAC,OAAmB;QAC1C,IAAI,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,CAAC,QAAQ,EAAE;YACX,QAAQ,GAAG,IAAI,6BAAc,CAAC;gBAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,KAAK,EAAE,OAAO,CAAC,YAAY;aAC9B,CAAC,CAAC;YACH,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;SACpD;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;;OAGG;IAEK,KAAK,CAAC,oBAAoB,CAAC,KAAiB;;QAEhD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,0CAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC/D,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,sBAAsB,EAAE,CAAC,CAAC,sBAAsB;SACnD,CAAC,CAAC,CAAC,CAAC;QAEL,uDAAuD;QACvD,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAE3B,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAA+B,CAAC;QAEjE,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,0FAA0F;QAC1F,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC1B,MAAM,CAAC,EAAE,GAAG,UAAU,EAAE,CAAC;SAC5B;QAED,+DAA+D;QAC/D,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YACpE,4CAA4C;YAC5C,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC;YAE9B,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAClD,4HAA4H;YAC5H,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;gBAC3C,OAAO;gBACH,0EAA0E;gBAC1E,MAAM,CAAC,IAAI,KAAK,QAAQ;oBACxB,qFAAqF;oBACrF,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CACnC,CAAC;YACN,CAAC,CAAC,CAAC;YACH,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC3B,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;gBACvE,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC7B,OAAO,EAAE,OAAO;oBAChB,MAAM,EAAE,CAAC;iBACZ,CAAC,CAAC,CAAC;aACP;QACL,CAAC,CAAC,CAAC,CAAC;QAEJ,qEAAqE;QACrE,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;QACvC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC1B,4DAA4D;YAC5D,IAAI,CAAC,MAAM,CAAC,sBAAsB,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE;gBACzD,SAAS;aACZ;YAED,8CAA8C;YAC9C,MAAM,gBAAgB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,eAAC,OAAA,CAAA,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,MAAM,0CAAE,EAAE,MAAK,MAAM,CAAC,EAAE,IAAI,CAAA,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,MAAM,0CAAE,MAAM,MAAK,UAAU,CAAA,EAAA,CAAC,CAAC;YAEpH,8FAA8F;YAC9F,MAAM,iCAAiC,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;YACvG,IAAI,iCAAiC,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC9C,0DAA0D;gBAC1D,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;oBAClD,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,8GAA8G,MAAM,CAAC,OAAO,cAAc,EAC1I,iCAAiC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAChF,CAAC;oBACF,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;iBAChD;gBAED,kFAAkF;gBAClF,iFAAiF;aACpF;iBAAM;gBACH,kHAAkH;gBAClH,MAAM,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;aACtD;SACJ;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAChE,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,sBAAsB,EAAE,CAAC,CAAC,sBAAsB;SACnD,CAAC,CAAC,CAAC,CAAC;IACT,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAC,OAAe,EAAE,eAAe,GAAG,IAAI;QAChE,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAC9B,eAAe,CAAC,CAAC,CAAC,WAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAC5D,CAAC;IACN,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,uBAAuB,CAAC,OAAe;QACjD,OAAO,GAAG,WAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAExC,8FAA8F;QAC9F,IAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;YAC3C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAC;YAC9F,OAAO;SACV;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oCAAoC,OAAO,GAAG,CAAC,CAAC;QAEhE,MAAM,aAAa,GAAG,cAAc,CAAC,qBAAqB,EAAE,CAAC;QAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAsB,aAAa,EAAE,CAAC,CAAC;QAC5E,MAAM,aAAa,GAAkB;YACjC,oDAAoD;YACpD,eAAe,EAAE,OAAO;YACxB,UAAU,EAAE,OAAO;YACnB,wFAAwF;YACxF,UAAU,EAAE,OAAO;YACnB,YAAY,EAAE,SAAS;YACvB,eAAe,EAAE,KAAK;YACtB,aAAa,EAAE,aAAa;YAC5B,KAAK,EAAE,CAAC;oBACJ,GAAG,EAAE,OAAO;oBACZ,IAAI,EAAE,uBAAuB;iBAChC,CAAC;SACL,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAsB,CAAC;QAC1E,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;QAC1B,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAEnC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9C,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACvD,CAAC;IAEO,uBAAuB,CAAC,OAAe;QAC3C,OAAO,GAAG,WAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC1D,IAAI,OAAO,EAAE;YACT,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,EAAE;gBAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,OAAO,GAAG,CAAC,CAAC;gBACvE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAC5B,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;aAC3C;SACJ;IACL,CAAC;IAQD;;OAEG;IACI,aAAa;QAChB,OAAO,OAAO,CAAC,UAAU,CAAC;YACtB,mCAAmC;YACnC,IAAI,CAAC,SAAS,CAAC,OAAO;YACtB,6CAA6C;YAC7C,IAAI,CAAC,WAAW;YAChB,sCAAsC;YACtC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;SAC/C,CAAC,CAAC;IACP,CAAC;IACD;;OAEG;IACI,KAAK,CAAC,MAAM;QACf,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAE3B,4GAA4G;QAC5G,wEAAwE;QACxE,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;YAClE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,mBAAmB,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,oBAAoB,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;YAEtI,MAAM,OAAO,CAAC,UAAU,CAAC;gBACrB,sDAAsD;gBACtD,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;gBAC7B,4CAA4C;gBAC5C,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;aACjC,CAAC,CAAC;SACN;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,mBAAmB,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,oBAAoB,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/I,CAAC;IAED;;;;;;OAMG;IAEI,KAAK,CAAC,YAAY,CAAC,gBAAmC,EAAE,WAAW,GAAG,KAAK;QAC9E,gEAAgE;QAChE,IAAI,WAAW,EAAE;YACb,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;YACvF,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;aAC/B;SACJ;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;QAE9E,IAAI,CAAC,WAAW,GAAG,CAAC,KAAK,IAAI,EAAE;YAC3B,8DAA8D;YAC9D,IAAI,cAAc,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CACnC,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAC,eAAe,EAAC,EAAE;gBACzC,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,4BAA4B,CAAC,eAAe,CAAC,CAAC;gBACpF,OAAO,kBAAkB,CAAC,GAAG,CAAgB,iBAAiB,CAAC,EAAE;;oBAAC,OAAA,CAAC;wBAC/D,IAAI,EAAE,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,IAAI;wBAC7B,UAAU,EAAE,IAAA,sBAAC,EAAA,GAAG,MAAA,iBAAiB,CAAC,YAAY,mCAAI,iBAAiB,CAAC,GAAG,EAAE;wBACzE,UAAU,EAAE,IAAA,sBAAC,EAAA,GAAG,iBAAiB,CAAC,GAAG,EAAE;wBACvC,YAAY,EAAE,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,YAAY;wBAC7C,eAAe,EAAE,IAAA,sBAAC,EAAA,GAAG,eAAe,CAAC,eAAe,EAAE;wBACtD,eAAe,EAAE,eAAe,CAAC,eAAe;wBAChD,eAAe,EAAE,eAAe,CAAC,cAAc,CAAC,eAAe;qBAClE,CAAC,CAAA;iBAAA,CAAC,CAAC;YACR,CAAC,CAAC,CACL,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEX,sHAAsH;YACtH,sFAAsF;YACtF,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YAE7E,6CAA6C;YAC7C,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjC,kEAAkE;gBAClE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU,CAAC,EAAE;oBAChE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;iBAC/B;aACJ;YAED,kFAAkF;YAClF,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;gBACvC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;YAEH,sBAAsB;YACtB,cAAc,GAAG;gBACb,GAAG,cAAc,CAAC,MAAM,CACpB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,EACpC,IAAI,GAAG,EAAoC,CAC9C,CAAC,MAAM,EAAE;aACb,CAAC;YAEF,yBAAyB;YACzB,MAAM,OAAO,CAAC,GAAG,CACb,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;gBAChC,MAAM,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;YAChD,CAAC,CAAC,CACL,CAAC;YAEF,0CAA0C;YAC1C,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;QAChC,CAAC,CAAC,EAAE,CAAC;QAEL,yBAAyB;QACzB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAMM,iBAAiB,CAAC,OAAqB;QAC1C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAE1G,sJAAsJ;QACtJ,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YAC/C,sCAAsC;YACtC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAE3B,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC5C,CAAC,EAAE,OAAO,CAAC,CAAC;IAChB,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,kBAAkB,CAAC,OAAqB;QAClD,mCAAmC;QACnC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC1B,MAAM,CAAC,OAAO,GAAG,WAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SACzD;QAED,8DAA8D;QAC9D,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAE5D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAEtH,sCAAsC;QACtC,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAC3C,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC,CAAC;IACR,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAAC,MAAkB;QAC7C,IAAI,MAAM,CAAC,IAAI,KAAK,+CAAc,CAAC,OAAO,EAAE;YACxC,4CAA4C;YAC5C,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAE5C,uBAAuB;SAC1B;aAAM;YACH,+FAA+F;YAC/F,IAAI,WAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBACtC,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE;oBACjC,GAAG,EAAE,MAAM,CAAC,OAAO;oBACnB,SAAS,EAAE,IAAI;oBACf,QAAQ,EAAE,IAAI;iBACjB,CAAC,CAAC;gBACH,qHAAqH;gBACrH,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;oBACpC,OAAO,IAAI,CAAC,gBAAgB,CAAC;wBACzB,OAAO,EAAE,WAAI,CAAC,eAAe,CAAC,OAAO,CAAC;wBACtC,IAAI,EAAE,+CAAc,CAAC,OAAO;wBAC5B,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;qBACxD,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC,CAAC;gBAEJ,2CAA2C;aAC9C;iBAAM;gBACH,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;oBACrB,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,YAAY,EAAE,MAAM,CAAC,YAAY;oBACjC,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;iBACxD,CAAC,CAAC;aACN;SACJ;QAED,qDAAqD;QACrD,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;;YACpD,wCAAwC;YACxC,IAAI,CAAA,MAAA,OAAO,CAAC,YAAY,0CAAE,WAAW,EAAE,MAAK,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE;gBACtE,mDAAmD;gBACnD,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;oBACtB,IAAI;wBACA,MAAM,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;qBAC/E;4BAAS,GAAG;iBAChB;gBACD,kFAAkF;gBAClF,IAAI,OAAO,CAAC,oBAAoB,KAAK,MAAM,CAAC,YAAY,EAAE;oBACtD,OAAO,IAAI,CAAC;iBACf;aACJ;YACD,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,MAAM,OAAO,CAAC,GAAG,CACb,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CACnD,CAAC;SACL;IACL,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,eAAe,CAAC,KAA0B;QACnD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5C,wHAAwH;QACxH,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa,CAAC,OAAmB;QAC3C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAE1E,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAC3E,CAAC;IAED;;;OAGG;IAEI,KAAK,CAAC,iBAAiB,CAAC,OAA4B;QACvD,sCAAsC;QACtC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAEpB,IAAI,MAAM,GAAG,MAAM,WAAI,CAAC,gBAAgB,CACpC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACpD,kCAAkC;QAClC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,IAAG,CAAC,CACjC,CAAC;QACF,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;OAGG;IAEI,KAAK,CAAC,aAAa,CAAC,OAA4B;QACnD,sCAAsC;QACtC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAEpB,IAAI,MAAM,GAAG,MAAM,WAAI,CAAC,gBAAgB,CACpC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAChD,kCAAkC;QAClC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CACvB,CAAC;QACF,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;OAEG;IAEI,KAAK,CAAC,cAAc,CAAC,OAAuF;;QAC/G,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAEpB,oHAAoH;QACpH,IAAI,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,iBAAiB,0CAAE,uBAAuB,EAAE;YACrD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,EAAE,OAAO,CAAC,CAAC;YACtE,OAAO;SACV;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,OAAO,CAAC,CAAC;QAC5D,4FAA4F;QAC5F,IAAI,MAAM,GAAG,MAAM,WAAI,CAAC,gBAAgB,CACpC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACjD,kCAAkC;QAClC,CAAC,MAAM,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,MAAM,IAAG,CAAC,CAAA,EAAA,CACxC,CAAC;QACF,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;OAIG;IAEI,KAAK,CAAC,QAAQ,CAAC,OAAgD;QAClE,sCAAsC;QACtC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAEpB,+FAA+F;QAC/F,IAAI,KAAK,GAAG,MAAM,WAAI,CAAC,gBAAgB,CACnC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC3C,yCAAyC;QACzC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,IAAG,CAAC,CACjC,CAAC;QACF,OAAO,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,CAAC,CAAC,CAAC;IACtB,CAAC;IAED;;;OAGG;IAEI,KAAK,CAAC,aAAa,CAAC,OAAgD;QACvE,sCAAsC;QACtC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAEpB,kHAAkH;QAElH,oGAAoG;QACpG,IAAI,MAAM,GAAG,MAAM,WAAI,CAAC,gBAAgB,CACpC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAChD,kCAAkC;QAClC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CACvB,CAAC;QACF,OAAO,MAAM,CAAC;IAClB,CAAC;IAGM,KAAK,CAAC,gBAAgB,CAAC,OAAgD;;QAC1E,sCAAsC;QACtC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAEpB,oGAAoG;QACpG,IAAI,UAAU,GAAG,MAAM,WAAI,CAAC,gBAAgB,CACxC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACnD,kCAAkC;QAClC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CACvB,CAAC;QAEF,IAAI,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,IAAG,CAAC,EAAE;YACxB,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAE9D,MAAM,eAAe,GAAG,eAAe,IAAI,CAAC,CAAC,CAAC,CAAC,MAAA,UAAU,CAAC,eAAe,CAAC,0CAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;YAE9F,IAAI,MAAM,GAAkB;gBACxB,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC9C,eAAe,EAAE,eAAe;gBAChC,eAAe,EAAE,eAAe;aACnC,CAAC;YACF,OAAO,MAAM,CAAC;SACjB;IACL,CAAC;IAGM,KAAK,CAAC,iBAAiB,CAAC,OAA4B;QACvD,sCAAsC;QACtC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAEpB,oGAAoG;QACpG,IAAI,MAAM,GAAG,MAAM,WAAI,CAAC,gBAAgB,CACpC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACpD,kCAAkC;QAClC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CACvB,CAAC;QACF,OAAO,MAAM,CAAC;IAClB,CAAC;IAGM,KAAK,CAAC,kBAAkB;QAC3B,sCAAsC;QACtC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAEpB,oGAAoG;QACpG,IAAI,SAAS,GAAG,MAAM,OAAO,CAAC,UAAU,CACpC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CACjD,CAAC;QACF,IAAI,OAAO,GAAG,SAAS;YACnB,yBAAyB;aACxB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACP,OAAO,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,CAAC,CAAC;YACF,mBAAmB;aAClB,IAAI,EAAE;YACP,iBAAiB;aAChB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEtB,oBAAoB;QACpB,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAC5B,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;YAC3B,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC;YAC9C,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;YAClB,OAAO,GAAG,CAAC;QACf,CAAC,EAAE,EAAE,CAAC,CACT,CAAC;QAEF,OAAO,UAAiC,CAAC;IAC7C,CAAC;IAGM,KAAK,CAAC,aAAa,CAAC,OAAgD;QACvE,sCAAsC;QACtC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAEpB,oGAAoG;QACpG,IAAI,MAAM,GAAG,MAAM,WAAI,CAAC,gBAAgB,CACpC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAChD,kCAAkC;QAClC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CACvB,CAAC;QACF,OAAO,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAC;IACxB,CAAC;IAGM,KAAK,CAAC,cAAc,CAAC,OAA0C;QAClE,sCAAsC;QACtC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAEpB,oGAAoG;QACpG,IAAI,MAAM,GAAG,MAAM,WAAI,CAAC,gBAAgB,CACpC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACjD,kCAAkC;QAClC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CACvB,CAAC;QACF,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,4BAA4B,CAAC,eAAgC;;QACvE,+FAA+F;QAC/F,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YAChF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;YACzF,MAAM,cAAc,GAAG,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAsB,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;gBACzF,4DAA4D;gBAC5D,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;oBACnC,OAAO,GAAG,CAAC;iBACd;gBACD,qCAAqC;gBACrC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBAChC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;iBAC9E;gBAED,4CAA4C;gBAC5C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACnC,OAAO,GAAG,CAAC;iBACd;gBAED,+BAA+B;gBAC/B,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE;oBAC9C,GAAG,CAAC,IAAI,CAAC;wBACL,IAAI,EAAE,OAAO,CAAC,IAAI;wBAClB,YAAY,EAAE,SAAS;wBACvB,GAAG,EAAE,OAAO,CAAC,IAAI;qBACpB,CAAC,CAAC;oBACH,iDAAiD;iBACpD;qBAAM;oBACH,GAAG,CAAC,IAAI,CAAC;wBACL,IAAI,EAAE,OAAO,CAAC,IAAI;wBAClB,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;wBAC/B,YAAY,EAAE,OAAO,CAAC,IAAI;qBAC7B,CAAC,CAAC;iBACN;gBACD,OAAO,GAAG,CAAC;YACf,CAAC,EAAE,EAAE,CAAC,CAAC;YAEP,0JAA0J;YAC1J,wCAAwC;YACxC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kDAAkD,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;aAC3H;YACD,OAAO,cAAc,CAAC;SACzB;QAED,+BAA+B;QAC/B,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,sBAAsB,EAAE;YACxD,OAAO,CAAC;oBACJ,GAAG,EAAE,eAAe,CAAC,eAAe;iBACvC,CAAC,CAAC;SACN;QAED,uJAAuJ;QACvJ,MAAM,eAAe,GAAG,CAAC,MAAA,eAAe,CAAC,eAAe,mCAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,sBAAC,EAAA,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;QAE3G,IAAI,KAAK,GAAG,MAAM,QAAQ,CAAC,CAAC,kBAAkB,EAAE,GAAG,eAAe,CAAC,EAAE;YACjE,GAAG,EAAE,eAAe,CAAC,eAAe;YACpC,mBAAmB,EAAE,KAAK;YAC1B,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,MAAA,eAAe,CAAC,cAAc,CAAC,wBAAwB,mCAAI,EAAE;SACtE,CAAC,CAAC;QAEH,8EAA8E;QAC9E,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAExC,sFAAsF;QACtF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAClB,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACtB,GAAG,EAAE,IAAA,sBAAC,EAAA,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC7B,YAAY,EAAE,IAAA,sBAAC,EAAA,GAAG,IAAI,EAAE;aAC3B,CAAC,CAAC,CAAC;SACP;QAED,+BAA+B;QAC/B,IAAI,YAAY,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG;QACjC,+CAA+C;QAC/C,CAAC,MAAM,QAAQ,CAAC,CAAC,aAAa,EAAE,GAAG,eAAe,CAAC,EAAE;YACjD,GAAG,EAAE,eAAe,CAAC,eAAe;YACpC,mBAAmB,EAAE,KAAK;YAC1B,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,MAAA,eAAe,CAAC,cAAc,CAAC,wBAAwB,mCAAI,EAAE;SACtE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAC,aAAa,EAAC,EAAE;YAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAChD,gDAAgD;YAChD,MAAM,KAAK,GAAG,MAAM,wBAAU,CAAC,YAAY,CAAC;gBACxC,sBAAsB;gBACtB,GAAG,eAAe;aACrB,EAAE,WAAW,CAAC,CAAC;YAChB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBAClB,OAAO,IAAA,sBAAC,EAAA,GAAG,WAAW,EAAE,CAAC;aAC5B;QACL,CAAC,CAAC;QACF,iBAAiB;SACpB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpB,qEAAqE;QACrE,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QAE1E,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;YACzB,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC7B,GAAG,EAAE,IAAI;aACZ,CAAC,CAAC,CAAC;SACP;QAED,6DAA6D;QAC7D,OAAO,CAAC;gBACJ,GAAG,EAAE,eAAe,CAAC,eAAe;aACvC,CAAC,CAAC;IACP,CAAC;IAED;;;OAGG;IACK,UAAU,CAAC,MAA8B;QAC7C,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACK,UAAU,CAAC,KAAsC;;QACrD,MAAM,UAAU,GAAG,WAAI,CAAC,eAAe,CACnC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,mCAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,YAAY,mCAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,CAAC,CACxG,CAAC;QACF,IAAI,CAAC,UAAU,EAAE;YACb,OAAO;SACV;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,OAAmB;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,MAAK,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,CAAA,CAAC,CAAC;QAC/E,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE;YACV,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;YAC9G,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;SAChC;QACD,yFAAyF;QACzF,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;QAChE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,EAAE,CAAC;QACnB,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACvD,CAAC;IASD;;;;OAIG;IACK,gBAAgB,CAAC,MAAqB;QAC1C,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,EAAE;YACpC,OAAO,MAAM,CAAC,aAAa,CAAC;SAC/B;QACD,MAAM,GAAG,GAAG,IAAA,sBAAC,EAAA,GAAG,MAAM,CAAC,UAAU,EAAE,GAAG,GAAG,GAAG,IAAA,sBAAC,EAAA,GAAG,MAAM,CAAC,eAAe,EAAE,GAAG,GAAG,GAAG,IAAA,sBAAC,EAAA,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;QAC3G,OAAO,cAAc,CAAC,kBAAkB,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE;YACxD,OAAO,cAAc,CAAC,qBAAqB,EAAE,CAAC;QAClD,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;OAGG;IACK,gBAAgB,CAAC,MAAqB;QAC1C,yCAAyC;QACzC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YACzB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;SAClC;QAED,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAErD,IAAI,OAAO,GAAe,MAAM,CAAC,eAAe;YAC5C,CAAC,CAAC,IAAI,yCAAmB,CAAC;gBACtB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;aACrC,CAAC;YACF,CAAC,CAAC,IAAI,iBAAO,CAAC;gBACV,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;aACrC,CAAC,CAAC;QAEP,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,aAAa,UAAU,MAAM,CAAC,UAAU,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC;QAEtJ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE5B,yFAAyF;QACzF,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE;YAClC,IAAI,CAAC,IAAI,CAAC,SAAgB,EAAE,gCACrB,IAAI,KACP,OAAO,EAAE,OAAO,GACZ,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;IACnB,CAAC;IAED;;;OAGG;IAEK,KAAK,CAAC,wBAAwB,CAAC,MAAqB;QACxD,yCAAyC;QACzC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YACzB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SAC7C;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5C,OAAO,OAAO,CAAC;IACnB,CAAC;IAGO,KAAK,CAAC,eAAe,CAAC,OAAmB,EAAE,MAAqB;QACpE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,WAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE;YACrE,WAAW,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,UAAU;YAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;SACpC,CAAC,CAAC;QACH,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAE/B,gEAAgE;QAChE,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAEpD,8DAA8D;QAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QAChG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IACtD,CAAC;IAOM,EAAE,CAAC,SAAiB,EAAE,OAA6C;QACtE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,OAAc,CAAC,CAAC;QAC3C,OAAO,GAAG,EAAE;YACR,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,OAAc,CAAC,CAAC;QAC3D,CAAC,CAAC;IACN,CAAC;IAOO,KAAK,CAAC,IAAI,CAAC,SAAiB,EAAE,IAAK;QACvC,uGAAuG;QACvG,MAAM,WAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAGM,OAAO;;QACV,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAClC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,uDAAI,CAAC;SACxB;IACL,CAAC;;AAt2Ba,mCAAoB,GAAG,GAAG,CAAC;AAkvBzC;;GAEG;AACY,oCAAqB,GAAG,CAAC,CAAC;AAE1B,iCAAkB,GAAG,IAAI,aAAK,EAAkB,CAAC;AAxtBhE;IADC,eAAe;0DA+Ef;AA+GD;IADC,eAAe;kDAkEf;AA6HD;IADC,eAAe;uDAWf;AAOD;IADC,eAAe;mDAWf;AAMD;IADC,eAAe;oDAkBf;AAQD;IADC,eAAe;8CAYf;AAOD;IADC,eAAe;mDAcf;AAGD;IADC,eAAe;sDAwBf;AAGD;IADC,eAAe;uDAYf;AAGD;IADC,eAAe;wDA6Bf;AAGD;IADC,eAAe;mDAYf;AAGD;IADC,eAAe;oDAYf;AAyND;IADC,eAAe;8DASf;AAGD;IADC,eAAe;qDAcf;AA72BL,wCA64BC;AAiDD;;GAEG;AACH,SAAS,eAAe,CAAC,MAAW,EAAE,WAAmB,EAAE,UAA8B;IACrF,IAAI,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC;IAEtC,8BAA8B;IAC9B,UAAU,CAAC,KAAK,GAAG,SAAS,KAAK,CAAuB,GAAG,IAAW;QAClE,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE;YACnC,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC;AACN,CAAC"}
|
|
1
|
+
{"version":3,"file":"ProjectManager.js","sourceRoot":"","sources":["../../src/lsp/ProjectManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -252,6 +252,164 @@ describe('ProjectManager', () => {
|
|
|
252
252
|
(0, util_1.standardizePath) `${testHelpers_spec_1.rootDir}/project1/bsconfig.json`
|
|
253
253
|
]);
|
|
254
254
|
});
|
|
255
|
+
describe('concurrency limiting', () => {
|
|
256
|
+
it('limits the number of projects activating concurrently', async () => {
|
|
257
|
+
//create multiple bsconfig.json files
|
|
258
|
+
for (let i = 0; i < 6; i++) {
|
|
259
|
+
fsExtra.outputFileSync(`${testHelpers_spec_1.rootDir}/project${i}/bsconfig.json`, '');
|
|
260
|
+
}
|
|
261
|
+
//track concurrent activation count by stubbing the private activateProject method
|
|
262
|
+
let maxConcurrent = 0;
|
|
263
|
+
let currentConcurrent = 0;
|
|
264
|
+
const activateStub = sinon.stub(manager, 'activateProject').callsFake(async () => {
|
|
265
|
+
currentConcurrent++;
|
|
266
|
+
maxConcurrent = Math.max(maxConcurrent, currentConcurrent);
|
|
267
|
+
//simulate async activation work
|
|
268
|
+
await util_1.default.sleep(10);
|
|
269
|
+
currentConcurrent--;
|
|
270
|
+
});
|
|
271
|
+
//set a low concurrency limit for testing
|
|
272
|
+
manager.projectActivationConcurrencyLimit = 2;
|
|
273
|
+
await manager.syncProjects([testHelpers_spec_1.workspaceSettings]);
|
|
274
|
+
//should have activated all 6 projects
|
|
275
|
+
(0, chai_1.expect)(activateStub.callCount).to.eql(6);
|
|
276
|
+
//but never more than 2 at a time
|
|
277
|
+
(0, chai_1.expect)(maxConcurrent).to.be.at.most(2);
|
|
278
|
+
});
|
|
279
|
+
it('activates all projects even with concurrency limit', async () => {
|
|
280
|
+
//create 5 bsconfig.json files
|
|
281
|
+
for (let i = 0; i < 5; i++) {
|
|
282
|
+
fsExtra.outputFileSync(`${testHelpers_spec_1.rootDir}/project${i}/bsconfig.json`, '');
|
|
283
|
+
}
|
|
284
|
+
manager.projectActivationConcurrencyLimit = 2;
|
|
285
|
+
await manager.syncProjects([testHelpers_spec_1.workspaceSettings]);
|
|
286
|
+
//all projects should be created
|
|
287
|
+
(0, chai_1.expect)(manager.projects.length).to.eql(5);
|
|
288
|
+
});
|
|
289
|
+
it('limits the number of projects validating concurrently', async () => {
|
|
290
|
+
for (let i = 0; i < 6; i++) {
|
|
291
|
+
fsExtra.outputFileSync(`${testHelpers_spec_1.rootDir}/project${i}/bsconfig.json`, '');
|
|
292
|
+
}
|
|
293
|
+
let maxConcurrent = 0;
|
|
294
|
+
let currentConcurrent = 0;
|
|
295
|
+
let validateCallCount = 0;
|
|
296
|
+
//stub activateProject to be a no-op so projects activate quickly
|
|
297
|
+
sinon.stub(manager, 'activateProject').callsFake(async () => { });
|
|
298
|
+
//stub Project.prototype.validate BEFORE syncProjects so the fire-and-forget phase uses it
|
|
299
|
+
sinon.stub(Project_1.Project.prototype, 'validate').callsFake(async () => {
|
|
300
|
+
currentConcurrent++;
|
|
301
|
+
validateCallCount++;
|
|
302
|
+
maxConcurrent = Math.max(maxConcurrent, currentConcurrent);
|
|
303
|
+
await util_1.default.sleep(10);
|
|
304
|
+
currentConcurrent--;
|
|
305
|
+
});
|
|
306
|
+
manager.projectActivationConcurrencyLimit = 2;
|
|
307
|
+
await manager.syncProjects([testHelpers_spec_1.workspaceSettings]);
|
|
308
|
+
//wait for the fire-and-forget validation phase to complete
|
|
309
|
+
await util_1.default.sleep(200);
|
|
310
|
+
(0, chai_1.expect)(validateCallCount).to.eql(6);
|
|
311
|
+
(0, chai_1.expect)(maxConcurrent).to.be.at.most(2);
|
|
312
|
+
});
|
|
313
|
+
it('validates all projects after activation completes', async () => {
|
|
314
|
+
for (let i = 0; i < 3; i++) {
|
|
315
|
+
fsExtra.outputFileSync(`${testHelpers_spec_1.rootDir}/project${i}/bsconfig.json`, '');
|
|
316
|
+
}
|
|
317
|
+
let allActivated = false;
|
|
318
|
+
let validationStartedBeforeActivation = false;
|
|
319
|
+
let validateCallCount = 0;
|
|
320
|
+
sinon.stub(manager, 'activateProject').callsFake(async () => { });
|
|
321
|
+
sinon.stub(Project_1.Project.prototype, 'validate').callsFake(() => {
|
|
322
|
+
if (!allActivated) {
|
|
323
|
+
validationStartedBeforeActivation = true;
|
|
324
|
+
}
|
|
325
|
+
validateCallCount++;
|
|
326
|
+
return Promise.resolve();
|
|
327
|
+
});
|
|
328
|
+
manager.projectActivationConcurrencyLimit = 1;
|
|
329
|
+
//hook into the end of the activation phase by spying on firstSync
|
|
330
|
+
const origTryResolve = manager['firstSync'].tryResolve.bind(manager['firstSync']);
|
|
331
|
+
sinon.stub(manager['firstSync'], 'tryResolve').callsFake(() => {
|
|
332
|
+
allActivated = true;
|
|
333
|
+
return origTryResolve();
|
|
334
|
+
});
|
|
335
|
+
await manager.syncProjects([testHelpers_spec_1.workspaceSettings]);
|
|
336
|
+
//wait for fire-and-forget validation phase
|
|
337
|
+
await util_1.default.sleep(100);
|
|
338
|
+
(0, chai_1.expect)(validateCallCount).to.eql(3);
|
|
339
|
+
(0, chai_1.expect)(validationStartedBeforeActivation).to.be.false;
|
|
340
|
+
});
|
|
341
|
+
it('stops activating projects when a new sync starts', async () => {
|
|
342
|
+
for (let i = 0; i < 4; i++) {
|
|
343
|
+
fsExtra.outputFileSync(`${testHelpers_spec_1.rootDir}/project${i}/bsconfig.json`, '');
|
|
344
|
+
}
|
|
345
|
+
let activateCount = 0;
|
|
346
|
+
const activateDeferred = new deferred_1.Deferred();
|
|
347
|
+
sinon.stub(manager, 'activateProject').callsFake(async () => {
|
|
348
|
+
activateCount++;
|
|
349
|
+
//block the first activation so we can trigger a re-sync
|
|
350
|
+
if (activateCount === 1) {
|
|
351
|
+
await activateDeferred.promise;
|
|
352
|
+
}
|
|
353
|
+
});
|
|
354
|
+
manager.projectActivationConcurrencyLimit = 1;
|
|
355
|
+
//start first sync (will block on first activation)
|
|
356
|
+
const firstSync = manager.syncProjects([testHelpers_spec_1.workspaceSettings]);
|
|
357
|
+
//wait for the first activation to start
|
|
358
|
+
await util_1.default.sleep(50);
|
|
359
|
+
//start a second sync which bumps the generation counter
|
|
360
|
+
const secondSync = manager.syncProjects([testHelpers_spec_1.workspaceSettings], true);
|
|
361
|
+
//unblock the first activation
|
|
362
|
+
activateDeferred.resolve();
|
|
363
|
+
await firstSync;
|
|
364
|
+
await secondSync;
|
|
365
|
+
//the first sync should have stopped activating after generation changed.
|
|
366
|
+
//the exact count depends on timing, but we should NOT see all 4 from the first sync
|
|
367
|
+
//plus all 4 from the second sync (8 total). The first sync's remaining items should be skipped.
|
|
368
|
+
(0, chai_1.expect)(activateCount).to.be.lessThan(8);
|
|
369
|
+
});
|
|
370
|
+
it('skips validation when a new sync starts before validation phase', async () => {
|
|
371
|
+
for (let i = 0; i < 3; i++) {
|
|
372
|
+
fsExtra.outputFileSync(`${testHelpers_spec_1.rootDir}/project${i}/bsconfig.json`, '');
|
|
373
|
+
}
|
|
374
|
+
let validateCallCount = 0;
|
|
375
|
+
const activateDeferred = new deferred_1.Deferred();
|
|
376
|
+
sinon.stub(manager, 'activateProject').callsFake(async () => {
|
|
377
|
+
//block on the deferred only when it's pending (we'll make it pending for the second sync)
|
|
378
|
+
if (!activateDeferred.isCompleted) {
|
|
379
|
+
await activateDeferred.promise;
|
|
380
|
+
}
|
|
381
|
+
});
|
|
382
|
+
sinon.stub(Project_1.Project.prototype, 'validate').callsFake(() => {
|
|
383
|
+
validateCallCount++;
|
|
384
|
+
return Promise.resolve();
|
|
385
|
+
});
|
|
386
|
+
manager.projectActivationConcurrencyLimit = 1;
|
|
387
|
+
//first sync — activates and validates normally (deferred starts resolved)
|
|
388
|
+
activateDeferred.resolve();
|
|
389
|
+
await manager.syncProjects([testHelpers_spec_1.workspaceSettings]);
|
|
390
|
+
await util_1.default.sleep(50);
|
|
391
|
+
const firstSyncValidateCount = validateCallCount;
|
|
392
|
+
//reset for the next syncs: create a new deferred that blocks
|
|
393
|
+
const blockDeferred = new deferred_1.Deferred();
|
|
394
|
+
manager.activateProject.callsFake(async () => {
|
|
395
|
+
await blockDeferred.promise;
|
|
396
|
+
});
|
|
397
|
+
//start second sync (blocks on activation)
|
|
398
|
+
const secondSync = manager.syncProjects([testHelpers_spec_1.workspaceSettings], true);
|
|
399
|
+
await util_1.default.sleep(10);
|
|
400
|
+
//immediately start a third sync which bumps the generation
|
|
401
|
+
const thirdSync = manager.syncProjects([testHelpers_spec_1.workspaceSettings], true);
|
|
402
|
+
//unblock activation
|
|
403
|
+
blockDeferred.resolve();
|
|
404
|
+
await secondSync;
|
|
405
|
+
await thirdSync;
|
|
406
|
+
//wait for any fire-and-forget validation
|
|
407
|
+
await util_1.default.sleep(100);
|
|
408
|
+
//the second sync's validation should have been skipped because the third sync bumped the generation.
|
|
409
|
+
//we should see at most the first sync's validations + the third sync's validations
|
|
410
|
+
(0, chai_1.expect)(validateCallCount - firstSyncValidateCount).to.be.at.most(3);
|
|
411
|
+
});
|
|
412
|
+
});
|
|
255
413
|
});
|
|
256
414
|
describe('maxDepth configuration', () => {
|
|
257
415
|
function writeTestFiles(files) {
|
|
@@ -430,6 +588,83 @@ describe('ProjectManager', () => {
|
|
|
430
588
|
}]);
|
|
431
589
|
});
|
|
432
590
|
});
|
|
591
|
+
describe('getFileRenameEdits', () => {
|
|
592
|
+
const mainUri = util_1.default.pathToUri((0, util_1.standardizePath) `${testHelpers_spec_1.rootDir}/source/main.bs`);
|
|
593
|
+
function fakeProject(getFileRenameEdits) {
|
|
594
|
+
return {
|
|
595
|
+
projectNumber: 0,
|
|
596
|
+
whenActivated: () => Promise.resolve(),
|
|
597
|
+
getFileRenameEdits: getFileRenameEdits
|
|
598
|
+
};
|
|
599
|
+
}
|
|
600
|
+
function fileRenameEdit(uri, newText, range = util_1.default.createRange(0, 8, 0, 14)) {
|
|
601
|
+
return { uri: uri, range: range, newText: newText };
|
|
602
|
+
}
|
|
603
|
+
beforeEach(() => {
|
|
604
|
+
//these tests exercise the cross-project consensus logic; bypass the project-sync wait so we don't need a real project setup
|
|
605
|
+
sinon.stub(manager, 'onIdle').callsFake(() => Promise.resolve());
|
|
606
|
+
});
|
|
607
|
+
it('passes through edits from a single project', async () => {
|
|
608
|
+
manager.projects = [
|
|
609
|
+
fakeProject(() => [fileRenameEdit(mainUri, 'lib2.bs')])
|
|
610
|
+
];
|
|
611
|
+
const result = await manager.getFileRenameEdits({
|
|
612
|
+
oldSrcPath: (0, util_1.standardizePath) `${testHelpers_spec_1.rootDir}/source/lib.bs`,
|
|
613
|
+
newSrcPath: (0, util_1.standardizePath) `${testHelpers_spec_1.rootDir}/source/lib2.bs`
|
|
614
|
+
});
|
|
615
|
+
(0, chai_1.expect)(result).to.have.lengthOf(1);
|
|
616
|
+
(0, chai_1.expect)(result[0].uri).to.eql(mainUri);
|
|
617
|
+
(0, chai_1.expect)(result[0].newText).to.eql('lib2.bs');
|
|
618
|
+
});
|
|
619
|
+
it('keeps edits when every project that produced an edit at the same range agrees', async () => {
|
|
620
|
+
manager.projects = [
|
|
621
|
+
fakeProject(() => [fileRenameEdit(mainUri, 'lib2.bs')]),
|
|
622
|
+
fakeProject(() => [fileRenameEdit(mainUri, 'lib2.bs')])
|
|
623
|
+
];
|
|
624
|
+
const result = await manager.getFileRenameEdits({
|
|
625
|
+
oldSrcPath: (0, util_1.standardizePath) `${testHelpers_spec_1.rootDir}/source/lib.bs`,
|
|
626
|
+
newSrcPath: (0, util_1.standardizePath) `${testHelpers_spec_1.rootDir}/source/lib2.bs`
|
|
627
|
+
});
|
|
628
|
+
(0, chai_1.expect)(result).to.have.lengthOf(1);
|
|
629
|
+
(0, chai_1.expect)(result[0].newText).to.eql('lib2.bs');
|
|
630
|
+
});
|
|
631
|
+
it('drops edits when projects disagree on the replacement text for the same range', async () => {
|
|
632
|
+
manager.projects = [
|
|
633
|
+
fakeProject(() => [fileRenameEdit(mainUri, 'lib2.bs')]),
|
|
634
|
+
fakeProject(() => [fileRenameEdit(mainUri, 'pkg:/source/lib2.bs')])
|
|
635
|
+
];
|
|
636
|
+
const result = await manager.getFileRenameEdits({
|
|
637
|
+
oldSrcPath: (0, util_1.standardizePath) `${testHelpers_spec_1.rootDir}/source/lib.bs`,
|
|
638
|
+
newSrcPath: (0, util_1.standardizePath) `${testHelpers_spec_1.rootDir}/source/lib2.bs`
|
|
639
|
+
});
|
|
640
|
+
(0, chai_1.expect)(result).to.be.empty;
|
|
641
|
+
});
|
|
642
|
+
it('keeps edits unique to one project when others have nothing to say at that range', async () => {
|
|
643
|
+
manager.projects = [
|
|
644
|
+
fakeProject(() => [fileRenameEdit(mainUri, 'lib2.bs')]),
|
|
645
|
+
fakeProject(() => [])
|
|
646
|
+
];
|
|
647
|
+
const result = await manager.getFileRenameEdits({
|
|
648
|
+
oldSrcPath: (0, util_1.standardizePath) `${testHelpers_spec_1.rootDir}/source/lib.bs`,
|
|
649
|
+
newSrcPath: (0, util_1.standardizePath) `${testHelpers_spec_1.rootDir}/source/lib2.bs`
|
|
650
|
+
});
|
|
651
|
+
(0, chai_1.expect)(result).to.have.lengthOf(1);
|
|
652
|
+
});
|
|
653
|
+
it('still emits edits from healthy projects when one project throws', async () => {
|
|
654
|
+
manager.projects = [
|
|
655
|
+
fakeProject(() => {
|
|
656
|
+
throw new Error('boom');
|
|
657
|
+
}),
|
|
658
|
+
fakeProject(() => [fileRenameEdit(mainUri, 'lib2.bs')])
|
|
659
|
+
];
|
|
660
|
+
const result = await manager.getFileRenameEdits({
|
|
661
|
+
oldSrcPath: (0, util_1.standardizePath) `${testHelpers_spec_1.rootDir}/source/lib.bs`,
|
|
662
|
+
newSrcPath: (0, util_1.standardizePath) `${testHelpers_spec_1.rootDir}/source/lib2.bs`
|
|
663
|
+
});
|
|
664
|
+
(0, chai_1.expect)(result).to.have.lengthOf(1);
|
|
665
|
+
(0, chai_1.expect)(result[0].newText).to.eql('lib2.bs');
|
|
666
|
+
});
|
|
667
|
+
});
|
|
433
668
|
describe('flushDocumentChanges', () => {
|
|
434
669
|
it('reuses cached PathCollection across multiple flushes', async () => {
|
|
435
670
|
fsExtra.outputFileSync(`${testHelpers_spec_1.rootDir}/source/main.brs`, ``);
|
|
@@ -697,7 +932,7 @@ describe('ProjectManager', () => {
|
|
|
697
932
|
});
|
|
698
933
|
describe('threading', () => {
|
|
699
934
|
before(async function workerThreadWarmup() {
|
|
700
|
-
this.timeout(
|
|
935
|
+
this.timeout(60000);
|
|
701
936
|
await (0, WorkerThreadProject_spec_1.getWakeWorkerThreadPromise)();
|
|
702
937
|
});
|
|
703
938
|
it('spawns a worker thread when threading is enabled', async () => {
|