@smartbit4all/ng-client 4.2.89 → 4.2.91
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/esm2022/lib/smart-client/smart-component-api-client.mjs +6 -1
- package/esm2022/lib/smart-diagram/component/smart-diagram.component.mjs +17 -5
- package/esm2022/lib/smart-form/widgets/smartformwidget/smartformwidget.component.mjs +3 -5
- package/fesm2022/smartbit4all-ng-client.mjs +22 -7
- package/fesm2022/smartbit4all-ng-client.mjs.map +1 -1
- package/lib/smart-diagram/component/smart-diagram.component.d.ts +3 -2
- package/package.json +1 -1
- package/smartbit4all-ng-client-4.2.91.tgz +0 -0
- package/smartbit4all-ng-client-4.2.89.tgz +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, EventEmitter, Inject, Input, Optional, Output, ViewChild } from '@angular/core';
|
|
1
|
+
import { Component, EventEmitter, Inject, Input, Optional, Output, ViewChild, } from '@angular/core';
|
|
2
2
|
import { Chart } from 'chart.js';
|
|
3
3
|
import AnnotationPlugin from 'chartjs-plugin-annotation';
|
|
4
4
|
import ZoomPlugin from 'chartjs-plugin-zoom';
|
|
@@ -24,9 +24,21 @@ export class SmartDiagramComponent {
|
|
|
24
24
|
Chart.register(AnnotationPlugin);
|
|
25
25
|
Chart.register(ZoomPlugin);
|
|
26
26
|
}
|
|
27
|
+
ngOnChanges(changes) {
|
|
28
|
+
if (changes['diagramModel']) {
|
|
29
|
+
this.diagramModel = changes['diagramModel'].currentValue;
|
|
30
|
+
this.setUp();
|
|
31
|
+
}
|
|
32
|
+
if (changes['uuid'] && this.uuid !== changes['uuid'].currentValue) {
|
|
33
|
+
this.uuid = changes['uuid'].currentValue;
|
|
34
|
+
this.load();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
27
37
|
async load() {
|
|
28
|
-
|
|
29
|
-
|
|
38
|
+
if (this.uuid) {
|
|
39
|
+
this.diagramModel = await lastValueFrom(this.diagramApi.load(this.uuid, this.identifier));
|
|
40
|
+
this.setUp();
|
|
41
|
+
}
|
|
30
42
|
}
|
|
31
43
|
ngAfterViewInit() {
|
|
32
44
|
// This will run when we have an input model
|
|
@@ -306,7 +318,7 @@ export class SmartDiagramComponent {
|
|
|
306
318
|
}
|
|
307
319
|
}
|
|
308
320
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartDiagramComponent, deps: [{ token: i1.DiagramServiceService }, { token: i2.DefaultChartOptionsProvider }, { token: COMPONENT_LIBRARY, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
309
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: SmartDiagramComponent, selector: "smart-diagram", inputs: { uuid: "uuid", identifier: "identifier", parent: "parent", diagramModel: "diagramModel", options: "options", plugins: "plugins" }, outputs: { elementSelect: "elementSelect", canvasClick: "canvasClick", dataClick: "dataClick" }, viewQueries: [{ propertyName: "chart", first: true, predicate: ["chartJSRef"], descendants: true }], ngImport: i0, template: "@if(compLib === componentLibrary.PRIMENG) {\r\n<p-chart\r\n #chartJSRef\r\n [type]=\"type\"\r\n [data]=\"data\"\r\n [options]=\"options\"\r\n [plugins]=\"plugins\"\r\n (onDataSelect)=\"onDataSelect($event)\"\r\n (click)=\"handleChartClick($event)\"\r\n (click)=\"handleOnDataClicked($event)\"\r\n/>\r\n} @else {\r\n<p>Only PrimeNg component library is supported</p>\r\n}\r\n", styles: [":host ::ng-deep .default-aspect-ratio div{width:100%;aspect-ratio:1.78}:host ::ng-deep .pie-aspect-ratio div{width:100%;aspect-ratio:1}\n"], dependencies: [{ kind: "component", type: i3.UIChart, selector: "p-chart", inputs: ["type", "plugins", "width", "height", "responsive", "ariaLabel", "ariaLabelledBy", "data", "options"], outputs: ["onDataSelect"] }] }); }
|
|
321
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: SmartDiagramComponent, selector: "smart-diagram", inputs: { uuid: "uuid", identifier: "identifier", parent: "parent", diagramModel: "diagramModel", options: "options", plugins: "plugins" }, outputs: { elementSelect: "elementSelect", canvasClick: "canvasClick", dataClick: "dataClick" }, viewQueries: [{ propertyName: "chart", first: true, predicate: ["chartJSRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if(compLib === componentLibrary.PRIMENG) {\r\n<p-chart\r\n #chartJSRef\r\n [type]=\"type\"\r\n [data]=\"data\"\r\n [options]=\"options\"\r\n [plugins]=\"plugins\"\r\n (onDataSelect)=\"onDataSelect($event)\"\r\n (click)=\"handleChartClick($event)\"\r\n (click)=\"handleOnDataClicked($event)\"\r\n/>\r\n} @else {\r\n<p>Only PrimeNg component library is supported</p>\r\n}\r\n", styles: [":host ::ng-deep .default-aspect-ratio div{width:100%;aspect-ratio:1.78}:host ::ng-deep .pie-aspect-ratio div{width:100%;aspect-ratio:1}\n"], dependencies: [{ kind: "component", type: i3.UIChart, selector: "p-chart", inputs: ["type", "plugins", "width", "height", "responsive", "ariaLabel", "ariaLabelledBy", "data", "options"], outputs: ["onDataSelect"] }] }); }
|
|
310
322
|
}
|
|
311
323
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartDiagramComponent, decorators: [{
|
|
312
324
|
type: Component,
|
|
@@ -338,4 +350,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
338
350
|
}], dataClick: [{
|
|
339
351
|
type: Output
|
|
340
352
|
}] } });
|
|
341
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZGlhZ3JhbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1kaWFncmFtL2NvbXBvbmVudC9zbWFydC1kaWFncmFtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWRpYWdyYW0vY29tcG9uZW50L3NtYXJ0LWRpYWdyYW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWpDLE9BQU8sZ0JBQWdCLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxVQUFVLE1BQU0scUJBQXFCLENBQUM7QUFFN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDbEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQVFqRCxNQUFNLE9BQU8scUJBQXFCO0lBd0JoQyxZQUNVLFVBQWlDLEVBQ2pDLHFCQUFrRCxFQUNuQixPQUEwQjtRQUZ6RCxlQUFVLEdBQVYsVUFBVSxDQUF1QjtRQUNqQywwQkFBcUIsR0FBckIscUJBQXFCLENBQTZCO1FBZm5ELFlBQU8sR0FBVSxFQUFFLENBQUM7UUFFN0IsZUFBZTtRQUNMLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN4QyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7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QUFDO1lBQ2hCLEtBQUssV0FBVyxDQUFDO1lBQ2pCLEtBQUssT0FBTztnQkFDVixZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2dCQUMvQyxNQUFNO1lBQ1I7Z0JBQ0UsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBQ0gsQ0FBQzsrR0FyV1UscUJBQXFCLGtHQTJCdEIsaUJBQWlCO21HQTNCaEIscUJBQXFCLHVZQ2hCbEMsZ1lBY0E7OzRGREVhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxlQUFlOzswQkErQnRCLE1BQU07MkJBQUMsaUJBQWlCOzswQkFBRyxRQUFRO3lDQTFCYixLQUFLO3NCQUE3QixTQUFTO3VCQUFDLFlBQVk7Z0JBR2QsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUdHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFHSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPcHRpb25hbCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2hhcnQgfSBmcm9tICdjaGFydC5qcyc7XHJcbmltcG9ydCB7IFVJQ2hhcnQgfSBmcm9tICdwcmltZW5nL2NoYXJ0JztcclxuaW1wb3J0IEFubm90YXRpb25QbHVnaW4gZnJvbSAnY2hhcnRqcy1wbHVnaW4tYW5ub3RhdGlvbic7XHJcbmltcG9ydCBab29tUGx1Z2luIGZyb20gJ2NoYXJ0anMtcGx1Z2luLXpvb20nO1xyXG5pbXBvcnQgeyBEaWFncmFtTW9kZWwsIERpYWdyYW1EZXNjcmlwdG9yLCBEaWFncmFtU2hhcGUsIERpYWdyYW1TZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uL2FwaSc7XHJcbmltcG9ydCB7IENPTVBPTkVOVF9MSUJSQVJZLCBDb21wb25lbnRMaWJyYXJ5IH0gZnJvbSAnLi4vLi4vdmlldy1jb250ZXh0L3V0aWxpdHkvY29tcG9uZW50TGlicmFyeSc7XHJcbmltcG9ydCB7IGxhc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVlcE1lcmdlIH0gZnJvbSAnLi9zbWFydC1kaWFncmFtLnV0aWwnO1xyXG5pbXBvcnQgeyBEZWZhdWx0Q2hhcnRPcHRpb25zUHJvdmlkZXIgfSBmcm9tICcuL2RlZmF1bHQtc21hcnQtZGlhZ3JhbS1vcHRpb25zLnByb3ZpZGVyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc21hcnQtZGlhZ3JhbScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NtYXJ0LWRpYWdyYW0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NtYXJ0LWRpYWdyYW0uY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU21hcnREaWFncmFtQ29tcG9uZW50IHtcclxuICBAVmlld0NoaWxkKCdjaGFydEpTUmVmJykgY2hhcnQ/OiBVSUNoYXJ0O1xyXG5cclxuICAvL1dpZGdldCBpbnB1dHNcclxuICBASW5wdXQoKSB1dWlkITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGlkZW50aWZpZXIhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcGFyZW50PzogYW55O1xyXG5cclxuICAvL1N0YW5kYWxvbmUgaW5wdXRzXHJcbiAgQElucHV0KCkgZGlhZ3JhbU1vZGVsPzogRGlhZ3JhbU1vZGVsO1xyXG4gIEBJbnB1dCgpIG9wdGlvbnM/OiBhbnk7XHJcbiAgQElucHV0KCkgcGx1Z2luczogYW55W10gPSBbXTtcclxuXHJcbiAgLy9PdXRwdXQgZXZlbnRzXHJcbiAgQE91dHB1dCgpIGVsZW1lbnRTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgY2FudmFzQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgZGF0YUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIGRhdGE6IGFueTtcclxuICB0eXBlOiBhbnk7XHJcblxyXG4gIGNvbXBMaWI6IENvbXBvbmVudExpYnJhcnk7XHJcbiAgY29tcG9uZW50TGlicmFyeSA9IENvbXBvbmVudExpYnJhcnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkaWFncmFtQXBpOiBEaWFncmFtU2VydmljZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRpYWdyYW1PcHRpb25Qcm92aWRlcjogRGVmYXVsdENoYXJ0T3B0aW9uc1Byb3ZpZGVyLFxyXG4gICAgQEluamVjdChDT01QT05FTlRfTElCUkFSWSkgQE9wdGlvbmFsKCkgY29tcExpYj86IENvbXBvbmVudExpYnJhcnlcclxuICApIHtcclxuICAgIHRoaXMuY29tcExpYiA9IGNvbXBMaWIgPz8gQ29tcG9uZW50TGlicmFyeS5QUklNRU5HO1xyXG4gICAgQ2hhcnQucmVnaXN0ZXIoQW5ub3RhdGlvblBsdWdpbik7XHJcbiAgICBDaGFydC5yZWdpc3Rlcihab29tUGx1Z2luKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLmRpYWdyYW1Nb2RlbCA9IGF3YWl0IGxhc3RWYWx1ZUZyb20odGhpcy5kaWFncmFtQXBpLmxvYWQodGhpcy51dWlkLCB0aGlzLmlkZW50aWZpZXIpKTtcclxuICAgIHRoaXMuc2V0VXAoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIC8vIFRoaXMgd2lsbCBydW4gd2hlbiB3ZSBoYXZlIGFuIGlucHV0IG1vZGVsXHJcbiAgICBpZiAoIXRoaXMuZGlhZ3JhbU1vZGVsKSB7XHJcbiAgICAgIHRoaXMubG9hZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICAvLyBUaGlzIHdpbGwgcnVuIHdoZW4gd2UgaGF2ZSBhbiBpbnB1dCBtb2RlbFxyXG4gICAgdGhpcy5zZXRVcCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRVcCgpIHtcclxuICAgIGlmICghdGhpcy5kaWFncmFtTW9kZWwpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IG9wdGlvbnMgPSB1bmRlZmluZWQ7XHJcbiAgICBjb25zdCB0eXBlID0gISF0aGlzLmRpYWdyYW1Nb2RlbC5kZXNjcmlwdG9yPy50eXBlID8gdGhpcy5kaWFncmFtTW9kZWwuZGVzY3JpcHRvci50eXBlIDogJyc7XHJcblxyXG4gICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuZGlhZ3JhbU9wdGlvblByb3ZpZGVyLmdldEZhY3RvcnkodHlwZSk7XHJcbiAgICB0aGlzLnR5cGUgPSBmYWN0b3J5LmNoYXJ0SnNUeXBlO1xyXG4gICAgb3B0aW9ucyA9IGZhY3RvcnkuY3JlYXRlT3B0aW9ucyh0aGlzLmRpYWdyYW1Nb2RlbC5kaWFncmFtRGF0YSEpO1xyXG4gICAgaWYgKHRoaXMuZGlhZ3JhbU1vZGVsLmRlc2NyaXB0b3IpIHtcclxuICAgICAgb3B0aW9ucyA9IGRlZXBNZXJnZSh0aGlzLmNvbnZlcnRCYWNrZW5kT3B0aW9ucyh0aGlzLmRpYWdyYW1Nb2RlbC5kZXNjcmlwdG9yKSwgb3B0aW9ucyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vcHRpb25zKSB7XHJcbiAgICAgIG9wdGlvbnMgPSBkZWVwTWVyZ2UodGhpcy5vcHRpb25zLCBvcHRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xyXG4gICAgdGhpcy5kYXRhID0gZmFjdG9yeS50cmFuc2Zvcm1EYXRhKHRoaXMuZGlhZ3JhbU1vZGVsLmRpYWdyYW1EYXRhISk7XHJcbiAgICB0aGlzLmFwcGx5Q2hhcnRDbGFzcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb252ZXJ0QmFja2VuZE9wdGlvbnMoZGVzY3JpcHRvcjogRGlhZ3JhbURlc2NyaXB0b3IpIHtcclxuICAgIGNvbnN0IG9wdGlvbnM6IGFueSA9IHtcclxuICAgICAgcGx1Z2luczoge1xyXG4gICAgICAgIGxlZ2VuZDoge1xyXG4gICAgICAgICAgZGlzcGxheTogZGVzY3JpcHRvci5zaG93TGVnZW5kRm9yQ2hhcnQgPz8gdHJ1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLihkZXNjcmlwdG9yLnRpdGxlXHJcbiAgICAgICAgICA/IHtcclxuICAgICAgICAgICAgICB0aXRsZToge1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHRleHQ6IGRlc2NyaXB0b3IudGl0bGUuY29udGVudCA/PyAnJyxcclxuICAgICAgICAgICAgICAgIGNvbG9yOiBkZXNjcmlwdG9yLnRpdGxlLmNvbG9yXHJcbiAgICAgICAgICAgICAgICAgID8gYHJnYmEoJHtkZXNjcmlwdG9yLnRpdGxlLmNvbG9yLnJlZCA/PyAwfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAke2Rlc2NyaXB0b3IudGl0bGUuY29sb3IuZ3JlZW4gPz8gMH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgJHtkZXNjcmlwdG9yLnRpdGxlLmNvbG9yLmJsdWUgPz8gMH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgJHtkZXNjcmlwdG9yLnRpdGxlLmNvbG9yLmFscGhhID8/IDF9KWBcclxuICAgICAgICAgICAgICAgICAgOiAnIzAwMDAwMGZmJyxcclxuICAgICAgICAgICAgICAgIGZvbnQ6IHtcclxuICAgICAgICAgICAgICAgICAgc2l6ZTogZGVzY3JpcHRvci50aXRsZS5zaXplID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgICAgd2VpZ2h0OiBkZXNjcmlwdG9yLnRpdGxlLndlaWdodCA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlOiBkZXNjcmlwdG9yLnRpdGxlLnN0eWxlID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgICAgZmFtaWx5OiBkZXNjcmlwdG9yLnRpdGxlLmZhbWlseSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDoge30pLFxyXG4gICAgICB9LFxyXG4gICAgICBzY2FsZXM6IHt9IGFzIGFueSxcclxuICAgIH07XHJcblxyXG4gICAgaWYgKGRlc2NyaXB0b3IubWluWCAhPT0gdW5kZWZpbmVkICYmIGRlc2NyaXB0b3IubWF4WCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIG9wdGlvbnMuc2NhbGVzLnggPSB7XHJcbiAgICAgICAgdGlja3M6IHtcclxuICAgICAgICAgIGRpc3BsYXk6IGRlc2NyaXB0b3Iuc2hvd0xhYmVsc0ZvclhBeGlzID8/IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBtaW46IGRlc2NyaXB0b3IubWluWCxcclxuICAgICAgICBtYXg6IGRlc2NyaXB0b3IubWF4WCxcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG9wdGlvbnMuc2NhbGVzLnggPSB7XHJcbiAgICAgICAgdGlja3M6IHtcclxuICAgICAgICAgIGRpc3BsYXk6IGRlc2NyaXB0b3Iuc2hvd0xhYmVsc0ZvclhBeGlzID8/IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGlmIChkZXNjcmlwdG9yLm1pblkgIT09IHVuZGVmaW5lZCAmJiBkZXNjcmlwdG9yLm1heFkgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBvcHRpb25zLnNjYWxlcy55ID0ge1xyXG4gICAgICAgIHRpY2tzOiB7XHJcbiAgICAgICAgICBkaXNwbGF5OiBkZXNjcmlwdG9yLnNob3dMYWJlbHNGb3JZQXhpcyA/PyB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbWluOiBkZXNjcmlwdG9yLm1pblksXHJcbiAgICAgICAgbWF4OiBkZXNjcmlwdG9yLm1heFksXHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBvcHRpb25zLnNjYWxlcy55ID0ge1xyXG4gICAgICAgIHRpY2tzOiB7XHJcbiAgICAgICAgICBkaXNwbGF5OiBkZXNjcmlwdG9yLnNob3dMYWJlbHNGb3JZQXhpcyA/PyB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLy9DcmVhdGUgc2hhcGVzXHJcbiAgICBpZiAoZGVzY3JpcHRvci5zaGFwZXMpIHtcclxuICAgICAgZGVzY3JpcHRvci5zaGFwZXMuZm9yRWFjaCgoc2hhcGU6IERpYWdyYW1TaGFwZSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIG9wdGlvbnMucGx1Z2lucy5hbm5vdGF0aW9uID0gb3B0aW9ucy5wbHVnaW5zLmFubm90YXRpb24gfHwge307XHJcbiAgICAgICAgb3B0aW9ucy5wbHVnaW5zLmFubm90YXRpb24uYW5ub3RhdGlvbnMgPSBvcHRpb25zLnBsdWdpbnMuYW5ub3RhdGlvbi5hbm5vdGF0aW9ucyB8fCB7fTtcclxuXHJcbiAgICAgICAgbGV0IGJvcmRlckNvbG9yID0gYHJnYmEoXHJcbiAgICAgICAgICR7c2hhcGUuYm9yZGVyQ29sb3I/LnJlZCA/PyAwfSxcclxuICAgICAgICAgJHtzaGFwZS5ib3JkZXJDb2xvcj8uZ3JlZW4gPz8gMH0sXHJcbiAgICAgICAgICR7c2hhcGUuYm9yZGVyQ29sb3I/LmJsdWUgPz8gMH0sXHJcbiAgICAgICAgICR7c2hhcGUuYm9yZGVyQ29sb3I/LmFscGhhID8/IDF9KWA7XHJcbiAgICAgICAgbGV0IGJhY2tncm91bmRDb2xvciA9IGByZ2JhKFxyXG4gICAgICAgICAke3NoYXBlLmJhY2tncm91bmRDb2xvcj8ucmVkID8/IDB9LFxyXG4gICAgICAgICAke3NoYXBlLmJhY2tncm91bmRDb2xvcj8uZ3JlZW4gPz8gMH0sXHJcbiAgICAgICAgICR7c2hhcGUuYmFja2dyb3VuZENvbG9yPy5ibHVlID8/IDB9LFxyXG4gICAgICAgICAke3NoYXBlLmJhY2tncm91bmRDb2xvcj8uYWxwaGEgPz8gMX0pYDtcclxuXHJcbiAgICAgICAgbGV0IGZvbnRDb2xvciA9IGByZ2JhKFxyXG4gICAgICAgICAke3NoYXBlLmxhYmVsVGV4dD8uY29sb3I/LnJlZCA/PyAwfSxcclxuICAgICAgICAgJHtzaGFwZS5sYWJlbFRleHQ/LmNvbG9yPy5ncmVlbiA/PyAwfSxcclxuICAgICAgICAgJHtzaGFwZS5sYWJlbFRleHQ/LmNvbG9yPy5ibHVlID8/IDB9LFxyXG4gICAgICAgICAke3NoYXBlLmxhYmVsVGV4dD8uY29sb3I/LmFscGhhID8/IDF9KWA7XHJcblxyXG4gICAgICAgIGxldCBib3JkZXJEYXNoO1xyXG4gICAgICAgIGlmIChzaGFwZS5ib3JkZXJEYXNoTGVuZ3RoICYmIHNoYXBlLmJvcmRlckRhc2hHYXApIHtcclxuICAgICAgICAgIGJvcmRlckRhc2ggPSBbc2hhcGUuYm9yZGVyRGFzaExlbmd0aCwgc2hhcGUuYm9yZGVyRGFzaEdhcF07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGJvcmRlckRhc2ggPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBiYXNlQW5ub3RhdGlvbiA9IHtcclxuICAgICAgICAgIHR5cGU6IHNoYXBlLnNoYXBlVHlwZSA/PyAnbGluZScsXHJcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGJhY2tncm91bmRDb2xvciA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICBib3JkZXJDb2xvcjogYm9yZGVyQ29sb3IgPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgYm9yZGVyV2lkdGg6IHNoYXBlLmJvcmRlcldpZHRoID8/IDEsXHJcbiAgICAgICAgICBib3JkZXJEYXNoOiBib3JkZXJEYXNoID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgIGRyYXdUaW1lOiBzaGFwZS5kcmF3VGltZSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgc3dpdGNoIChzaGFwZS5zaGFwZVR5cGUpIHtcclxuICAgICAgICAgIGNhc2UgJ2JveCc6XHJcbiAgICAgICAgICBjYXNlICdsaW5lJzpcclxuICAgICAgICAgIGNhc2UgJ2VsbGlwc2UnOlxyXG4gICAgICAgICAgICBvcHRpb25zLnBsdWdpbnMuYW5ub3RhdGlvbi5hbm5vdGF0aW9uc1tgc2hhcGUke2luZGV4fWBdID0ge1xyXG4gICAgICAgICAgICAgIC4uLmJhc2VBbm5vdGF0aW9uLFxyXG4gICAgICAgICAgICAgIHhNaW46IHNoYXBlLnhNaW4gPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgIHhNYXg6IHNoYXBlLnhNYXggPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgIHlNaW46IHNoYXBlLnlNaW4gPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgIHlNYXg6IHNoYXBlLnlNYXggPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlICdsYWJlbCc6XHJcbiAgICAgICAgICAgIG9wdGlvbnMucGx1Z2lucy5hbm5vdGF0aW9uLmFubm90YXRpb25zW2BzaGFwZSR7aW5kZXh9YF0gPSB7XHJcbiAgICAgICAgICAgICAgLi4uYmFzZUFubm90YXRpb24sXHJcbiAgICAgICAgICAgICAgeFZhbHVlOiBzaGFwZS54TWluID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICB5VmFsdWU6IHNoYXBlLnlNaW4gPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgIGNvbnRlbnQ6IHNoYXBlLmxhYmVsVGV4dD8uY29udGVudCA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgdGV4dEFsaWduOiBzaGFwZS5sYWJlbFRleHQ/LnRleHRBbGlnbiA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgY29sb3I6IGZvbnRDb2xvciA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgZm9udDoge1xyXG4gICAgICAgICAgICAgICAgc2l6ZTogc2hhcGUubGFiZWxUZXh0Py5zaXplID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgIHdlaWdodDogc2hhcGUubGFiZWxUZXh0Py53ZWlnaHQgPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgc3R5bGU6IHNoYXBlLmxhYmVsVGV4dD8uc3R5bGUgPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxyXG4gICAgICAgICAgICAgIGJvcmRlckNvbG9yOiAndHJhbnNwYXJlbnQnLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlICdwb2ludCc6XHJcbiAgICAgICAgICBjYXNlICdwb2x5Z29uJzpcclxuICAgICAgICAgICAgb3B0aW9ucy5wbHVnaW5zLmFubm90YXRpb24uYW5ub3RhdGlvbnNbYHNoYXBlJHtpbmRleH1gXSA9IHtcclxuICAgICAgICAgICAgICAuLi5iYXNlQW5ub3RhdGlvbixcclxuICAgICAgICAgICAgICB4VmFsdWU6IHNoYXBlLnhNaW4gPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgIHlWYWx1ZTogc2hhcGUueU1pbiA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIC8vIE9wdGlvbmFsbHkgaGFuZGxlIGFueSBvdGhlciBzaGFwZSB0eXBlc1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFVua25vd24gc2hhcGUgdHlwZTogJHtzaGFwZS5zaGFwZVR5cGV9YCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRlc2NyaXB0b3IuYmFja2dyb3VuZENvbG9yKSB7XHJcbiAgICAgIGxldCBiYWNrZ3JvdW5kQ29sb3IgPSBgcmdiYShcclxuICAgICAgICAke2Rlc2NyaXB0b3IuYmFja2dyb3VuZENvbG9yPy5yZWQgPz8gMH0sXHJcbiAgICAgICAgJHtkZXNjcmlwdG9yLmJhY2tncm91bmRDb2xvcj8uZ3JlZW4gPz8gMH0sXHJcbiAgICAgICAgJHtkZXNjcmlwdG9yLmJhY2tncm91bmRDb2xvcj8uYmx1ZSA/PyAwfSxcclxuICAgICAgICAke2Rlc2NyaXB0b3IuYmFja2dyb3VuZENvbG9yPy5hbHBoYSA/PyAxfSlgO1xyXG5cclxuICAgICAgbGV0IGlkID0gJ2N1c3RvbUNhbnZhc0JhY2tncm91bmRDb2xvcic7XHJcbiAgICAgIGNvbnN0IHBsdWdpbiA9IHtcclxuICAgICAgICBpZDogaWQsXHJcbiAgICAgICAgYmVmb3JlRHJhdzogKGNoYXJ0OiBhbnksIGFyZ3M6IGFueSwgb3B0aW9uczogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB7IGN0eCwgY2hhcnRBcmVhIH0gPSBjaGFydDtcclxuXHJcbiAgICAgICAgICBjdHguc2F2ZSgpO1xyXG4gICAgICAgICAgY3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICdkZXN0aW5hdGlvbi1vdmVyJztcclxuICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSBiYWNrZ3JvdW5kQ29sb3I7XHJcbiAgICAgICAgICBjdHguZmlsbFJlY3QoXHJcbiAgICAgICAgICAgIGNoYXJ0QXJlYS5sZWZ0LFxyXG4gICAgICAgICAgICBjaGFydEFyZWEudG9wLFxyXG4gICAgICAgICAgICBjaGFydEFyZWEucmlnaHQgLSBjaGFydEFyZWEubGVmdCxcclxuICAgICAgICAgICAgY2hhcnRBcmVhLmJvdHRvbSAtIGNoYXJ0QXJlYS50b3BcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjdHgucmVzdG9yZSgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMucGx1Z2lucy5wdXNoKHBsdWdpbik7XHJcblxyXG4gICAgICBvcHRpb25zLnBsdWdpbnNbYCR7aWR9YF0gPSB7XHJcbiAgICAgICAgY29sb3I6IGJhY2tncm91bmRDb2xvcixcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBvcHRpb25zO1xyXG4gIH1cclxuXHJcbiAgb25EYXRhU2VsZWN0KGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKHsgZXZlbnQgfSk7XHJcbiAgICB0aGlzLmVsZW1lbnRTZWxlY3QuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVDaGFydENsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKHsgZXZlbnQgfSk7XHJcbiAgICB0aGlzLmNhbnZhc0NsaWNrLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlT25EYXRhQ2xpY2tlZChldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBjYW52YXMgPSBldmVudC50YXJnZXQgYXMgSFRNTENhbnZhc0VsZW1lbnQ7XHJcbiAgICBjb25zdCBjaGFydCA9IENoYXJ0LmdldENoYXJ0KGNhbnZhcyk7XHJcblxyXG4gICAgaWYgKGNoYXJ0KSB7XHJcbiAgICAgIGNvbnN0IGVsZW1lbnRzID0gY2hhcnQuZ2V0RWxlbWVudHNBdEV2ZW50Rm9yTW9kZShcclxuICAgICAgICBldmVudCxcclxuICAgICAgICAnbmVhcmVzdCcsXHJcbiAgICAgICAgeyBpbnRlcnNlY3Q6IHRydWUgfSxcclxuICAgICAgICBmYWxzZVxyXG4gICAgICApO1xyXG4gICAgICBpZiAoZWxlbWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGNsaWNrZWRJdGVtcyA9IGNoYXJ0LnRvb2x0aXA/LmRhdGFQb2ludHM/Lm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBkYXRhc2V0SW5kZXg6IGl0ZW0uZGF0YXNldEluZGV4LFxyXG4gICAgICAgICAgaXRlbUluZGV4OiBpdGVtLmRhdGFJbmRleCxcclxuICAgICAgICAgIGVsZW1lbnQ6IGl0ZW0uZWxlbWVudCxcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGNvbnNvbGUubG9nKHsgZXZlbnQsIGNsaWNrZWRJdGVtcyB9KTtcclxuICAgICAgdGhpcy5kYXRhQ2xpY2suZW1pdCh7IGV2ZW50LCBjbGlja2VkSXRlbXMgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRCYXNlNjRJbWFnZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmNoYXJ0Py5nZXRCYXNlNjRJbWFnZSgpO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaCgpIHtcclxuICAgIHJldHVybiB0aGlzLmNoYXJ0Py5yZWZyZXNoKCk7XHJcbiAgfVxyXG5cclxuICBnZXRDaGFydCgpIHtcclxuICAgIHJldHVybiB0aGlzLmNoYXJ0Py5jaGFydDtcclxuICB9XHJcbiAgZ2V0VmlzaWJsZVBvaW50cygpIHtcclxuICAgIGlmICghdGhpcy5jaGFydCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGNoYXJ0SW5zdGFuY2UgPSB0aGlzLmNoYXJ0LmNoYXJ0O1xyXG4gICAgaWYgKCFjaGFydEluc3RhbmNlKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgdmlzaWJsZVBvaW50czogYW55ID0gW107XHJcblxyXG4gICAgY2hhcnRJbnN0YW5jZS5kYXRhLmRhdGFzZXRzLmZvckVhY2goKGRhdGFzZXQ6IGFueSwgZGF0YXNldEluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgbWV0YSA9IGNoYXJ0SW5zdGFuY2UuZ2V0RGF0YXNldE1ldGEoZGF0YXNldEluZGV4KTtcclxuXHJcbiAgICAgIC8vIENoZWNrIGlmIHRoZSBkYXRhc2V0IGlzIGhpZGRlblxyXG4gICAgICBpZiAoIWNoYXJ0SW5zdGFuY2UuaXNEYXRhc2V0VmlzaWJsZShkYXRhc2V0SW5kZXgpKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCB4TWluID0gbWV0YS54U2NhbGUubWluO1xyXG4gICAgICBjb25zdCB4TWF4ID0gbWV0YS54U2NhbGUubWF4O1xyXG4gICAgICBjb25zdCB5TWluID0gbWV0YS55U2NhbGUubWluO1xyXG4gICAgICBjb25zdCB5TWF4ID0gbWV0YS55U2NhbGUubWF4O1xyXG5cclxuICAgICAgZGF0YXNldC5kYXRhLmZvckVhY2goKHBvaW50OiBhbnksIGRhdGFJbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyB4LCB5IH0gPSBwb2ludDtcclxuXHJcbiAgICAgICAgaWYgKHggPj0geE1pbiAmJiB4IDw9IHhNYXggJiYgeSA+PSB5TWluICYmIHkgPD0geU1heCkge1xyXG4gICAgICAgICAgdmlzaWJsZVBvaW50cy5wdXNoKHtcclxuICAgICAgICAgICAgZGF0YXNldEluZGV4LFxyXG4gICAgICAgICAgICBkYXRhSW5kZXgsXHJcbiAgICAgICAgICAgIHgsXHJcbiAgICAgICAgICAgIHksXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHZpc2libGVQb2ludHM7XHJcbiAgfVxyXG5cclxuICBhcHBseUNoYXJ0Q2xhc3MoKSB7XHJcbiAgICBpZiAoIXRoaXMuY2hhcnQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNoYXJ0RWxlbWVudCA9IHRoaXMuY2hhcnQuZWwubmF0aXZlRWxlbWVudDtcclxuICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XHJcbiAgICAgIGNhc2UgJ3BpZSc6XHJcbiAgICAgIGNhc2UgJ2RvdWdobnV0JzpcclxuICAgICAgY2FzZSAncG9sYXJBcmVhJzpcclxuICAgICAgY2FzZSAncmFkYXInOlxyXG4gICAgICAgIGNoYXJ0RWxlbWVudC5jbGFzc0xpc3QuYWRkKCdwaWUtYXNwZWN0LXJhdGlvJyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgY2hhcnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2RlZmF1bHQtYXNwZWN0LXJhdGlvJyk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIkBpZihjb21wTGliID09PSBjb21wb25lbnRMaWJyYXJ5LlBSSU1FTkcpIHtcclxuPHAtY2hhcnRcclxuICAjY2hhcnRKU1JlZlxyXG4gIFt0eXBlXT1cInR5cGVcIlxyXG4gIFtkYXRhXT1cImRhdGFcIlxyXG4gIFtvcHRpb25zXT1cIm9wdGlvbnNcIlxyXG4gIFtwbHVnaW5zXT1cInBsdWdpbnNcIlxyXG4gIChvbkRhdGFTZWxlY3QpPVwib25EYXRhU2VsZWN0KCRldmVudClcIlxyXG4gIChjbGljayk9XCJoYW5kbGVDaGFydENsaWNrKCRldmVudClcIlxyXG4gIChjbGljayk9XCJoYW5kbGVPbkRhdGFDbGlja2VkKCRldmVudClcIlxyXG4vPlxyXG59IEBlbHNlIHtcclxuPHA+T25seSBQcmltZU5nIGNvbXBvbmVudCBsaWJyYXJ5IGlzIHN1cHBvcnRlZDwvcD5cclxufVxyXG4iXX0=
|
|
353
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZGlhZ3JhbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1kaWFncmFtL2NvbXBvbmVudC9zbWFydC1kaWFncmFtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWRpYWdyYW0vY29tcG9uZW50L3NtYXJ0LWRpYWdyYW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWpDLE9BQU8sZ0JBQWdCLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxVQUFVLE1BQU0scUJBQXFCLENBQUM7QUFFN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDbEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQVFqRCxNQUFNLE9BQU8scUJBQXFCO0lBd0JoQyxZQUNVLFVBQWlDLEVBQ2pDLHFCQUFrRCxFQUNuQixPQUEwQjtRQUZ6RCxlQUFVLEdBQVYsVUFBVSxDQUF1QjtRQUNqQywwQkFBcUIsR0FBckIscUJBQXFCLENBQTZCO1FBZm5ELFlBQU8sR0FBVSxFQUFFLENBQUM7UUFFN0IsZUFBZTtRQUNMLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN4QyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7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QUFLO2dCQUdJLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBPcHRpb25hbCxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENoYXJ0IH0gZnJvbSAnY2hhcnQuanMnO1xyXG5pbXBvcnQgeyBVSUNoYXJ0IH0gZnJvbSAncHJpbWVuZy9jaGFydCc7XHJcbmltcG9ydCBBbm5vdGF0aW9uUGx1Z2luIGZyb20gJ2NoYXJ0anMtcGx1Z2luLWFubm90YXRpb24nO1xyXG5pbXBvcnQgWm9vbVBsdWdpbiBmcm9tICdjaGFydGpzLXBsdWdpbi16b29tJztcclxuaW1wb3J0IHsgRGlhZ3JhbU1vZGVsLCBEaWFncmFtRGVzY3JpcHRvciwgRGlhZ3JhbVNoYXBlLCBEaWFncmFtU2VydmljZVNlcnZpY2UgfSBmcm9tICcuLi9hcGknO1xyXG5pbXBvcnQgeyBDT01QT05FTlRfTElCUkFSWSwgQ29tcG9uZW50TGlicmFyeSB9IGZyb20gJy4uLy4uL3ZpZXctY29udGV4dC91dGlsaXR5L2NvbXBvbmVudExpYnJhcnknO1xyXG5pbXBvcnQgeyBsYXN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlZXBNZXJnZSB9IGZyb20gJy4vc21hcnQtZGlhZ3JhbS51dGlsJztcclxuaW1wb3J0IHsgRGVmYXVsdENoYXJ0T3B0aW9uc1Byb3ZpZGVyIH0gZnJvbSAnLi9kZWZhdWx0LXNtYXJ0LWRpYWdyYW0tb3B0aW9ucy5wcm92aWRlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NtYXJ0LWRpYWdyYW0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zbWFydC1kaWFncmFtLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zbWFydC1kaWFncmFtLmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0RGlhZ3JhbUNvbXBvbmVudCB7XHJcbiAgQFZpZXdDaGlsZCgnY2hhcnRKU1JlZicpIGNoYXJ0PzogVUlDaGFydDtcclxuXHJcbiAgLy9XaWRnZXQgaW5wdXRzXHJcbiAgQElucHV0KCkgdXVpZD86IHN0cmluZztcclxuICBASW5wdXQoKSBpZGVudGlmaWVyITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHBhcmVudD86IGFueTtcclxuXHJcbiAgLy9TdGFuZGFsb25lIGlucHV0c1xyXG4gIEBJbnB1dCgpIGRpYWdyYW1Nb2RlbD86IERpYWdyYW1Nb2RlbDtcclxuICBASW5wdXQoKSBvcHRpb25zPzogYW55O1xyXG4gIEBJbnB1dCgpIHBsdWdpbnM6IGFueVtdID0gW107XHJcblxyXG4gIC8vT3V0cHV0IGV2ZW50c1xyXG4gIEBPdXRwdXQoKSBlbGVtZW50U2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGNhbnZhc0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGRhdGFDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBkYXRhOiBhbnk7XHJcbiAgdHlwZTogYW55O1xyXG5cclxuICBjb21wTGliOiBDb21wb25lbnRMaWJyYXJ5O1xyXG4gIGNvbXBvbmVudExpYnJhcnkgPSBDb21wb25lbnRMaWJyYXJ5O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGlhZ3JhbUFwaTogRGlhZ3JhbVNlcnZpY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkaWFncmFtT3B0aW9uUHJvdmlkZXI6IERlZmF1bHRDaGFydE9wdGlvbnNQcm92aWRlcixcclxuICAgIEBJbmplY3QoQ09NUE9ORU5UX0xJQlJBUlkpIEBPcHRpb25hbCgpIGNvbXBMaWI/OiBDb21wb25lbnRMaWJyYXJ5XHJcbiAgKSB7XHJcbiAgICB0aGlzLmNvbXBMaWIgPSBjb21wTGliID8/IENvbXBvbmVudExpYnJhcnkuUFJJTUVORztcclxuICAgIENoYXJ0LnJlZ2lzdGVyKEFubm90YXRpb25QbHVnaW4pO1xyXG4gICAgQ2hhcnQucmVnaXN0ZXIoWm9vbVBsdWdpbik7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snZGlhZ3JhbU1vZGVsJ10pIHtcclxuICAgICAgdGhpcy5kaWFncmFtTW9kZWwgPSBjaGFuZ2VzWydkaWFncmFtTW9kZWwnXS5jdXJyZW50VmFsdWU7XHJcbiAgICAgIHRoaXMuc2V0VXAoKTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWyd1dWlkJ10gJiYgdGhpcy51dWlkICE9PSBjaGFuZ2VzWyd1dWlkJ10uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIHRoaXMudXVpZCA9IGNoYW5nZXNbJ3V1aWQnXS5jdXJyZW50VmFsdWU7XHJcbiAgICAgIHRoaXMubG9hZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgbG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICh0aGlzLnV1aWQpIHtcclxuICAgICAgdGhpcy5kaWFncmFtTW9kZWwgPSBhd2FpdCBsYXN0VmFsdWVGcm9tKHRoaXMuZGlhZ3JhbUFwaS5sb2FkKHRoaXMudXVpZCwgdGhpcy5pZGVudGlmaWVyKSk7XHJcbiAgICAgIHRoaXMuc2V0VXAoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIC8vIFRoaXMgd2lsbCBydW4gd2hlbiB3ZSBoYXZlIGFuIGlucHV0IG1vZGVsXHJcbiAgICBpZiAoIXRoaXMuZGlhZ3JhbU1vZGVsKSB7XHJcbiAgICAgIHRoaXMubG9hZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICAvLyBUaGlzIHdpbGwgcnVuIHdoZW4gd2UgaGF2ZSBhbiBpbnB1dCBtb2RlbFxyXG4gICAgdGhpcy5zZXRVcCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRVcCgpIHtcclxuICAgIGlmICghdGhpcy5kaWFncmFtTW9kZWwpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IG9wdGlvbnMgPSB1bmRlZmluZWQ7XHJcbiAgICBjb25zdCB0eXBlID0gISF0aGlzLmRpYWdyYW1Nb2RlbC5kZXNjcmlwdG9yPy50eXBlID8gdGhpcy5kaWFncmFtTW9kZWwuZGVzY3JpcHRvci50eXBlIDogJyc7XHJcblxyXG4gICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuZGlhZ3JhbU9wdGlvblByb3ZpZGVyLmdldEZhY3RvcnkodHlwZSk7XHJcbiAgICB0aGlzLnR5cGUgPSBmYWN0b3J5LmNoYXJ0SnNUeXBlO1xyXG4gICAgb3B0aW9ucyA9IGZhY3RvcnkuY3JlYXRlT3B0aW9ucyh0aGlzLmRpYWdyYW1Nb2RlbC5kaWFncmFtRGF0YSEpO1xyXG4gICAgaWYgKHRoaXMuZGlhZ3JhbU1vZGVsLmRlc2NyaXB0b3IpIHtcclxuICAgICAgb3B0aW9ucyA9IGRlZXBNZXJnZSh0aGlzLmNvbnZlcnRCYWNrZW5kT3B0aW9ucyh0aGlzLmRpYWdyYW1Nb2RlbC5kZXNjcmlwdG9yKSwgb3B0aW9ucyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vcHRpb25zKSB7XHJcbiAgICAgIG9wdGlvbnMgPSBkZWVwTWVyZ2UodGhpcy5vcHRpb25zLCBvcHRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xyXG4gICAgdGhpcy5kYXRhID0gZmFjdG9yeS50cmFuc2Zvcm1EYXRhKHRoaXMuZGlhZ3JhbU1vZGVsLmRpYWdyYW1EYXRhISk7XHJcbiAgICB0aGlzLmFwcGx5Q2hhcnRDbGFzcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb252ZXJ0QmFja2VuZE9wdGlvbnMoZGVzY3JpcHRvcjogRGlhZ3JhbURlc2NyaXB0b3IpIHtcclxuICAgIGNvbnN0IG9wdGlvbnM6IGFueSA9IHtcclxuICAgICAgcGx1Z2luczoge1xyXG4gICAgICAgIGxlZ2VuZDoge1xyXG4gICAgICAgICAgZGlzcGxheTogZGVzY3JpcHRvci5zaG93TGVnZW5kRm9yQ2hhcnQgPz8gdHJ1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLihkZXNjcmlwdG9yLnRpdGxlXHJcbiAgICAgICAgICA/IHtcclxuICAgICAgICAgICAgICB0aXRsZToge1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHRleHQ6IGRlc2NyaXB0b3IudGl0bGUuY29udGVudCA/PyAnJyxcclxuICAgICAgICAgICAgICAgIGNvbG9yOiBkZXNjcmlwdG9yLnRpdGxlLmNvbG9yXHJcbiAgICAgICAgICAgICAgICAgID8gYHJnYmEoJHtkZXNjcmlwdG9yLnRpdGxlLmNvbG9yLnJlZCA/PyAwfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAke2Rlc2NyaXB0b3IudGl0bGUuY29sb3IuZ3JlZW4gPz8gMH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgJHtkZXNjcmlwdG9yLnRpdGxlLmNvbG9yLmJsdWUgPz8gMH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgJHtkZXNjcmlwdG9yLnRpdGxlLmNvbG9yLmFscGhhID8/IDF9KWBcclxuICAgICAgICAgICAgICAgICAgOiAnIzAwMDAwMGZmJyxcclxuICAgICAgICAgICAgICAgIGZvbnQ6IHtcclxuICAgICAgICAgICAgICAgICAgc2l6ZTogZGVzY3JpcHRvci50aXRsZS5zaXplID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgICAgd2VpZ2h0OiBkZXNjcmlwdG9yLnRpdGxlLndlaWdodCA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlOiBkZXNjcmlwdG9yLnRpdGxlLnN0eWxlID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgICAgZmFtaWx5OiBkZXNjcmlwdG9yLnRpdGxlLmZhbWlseSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDoge30pLFxyXG4gICAgICB9LFxyXG4gICAgICBzY2FsZXM6IHt9IGFzIGFueSxcclxuICAgIH07XHJcblxyXG4gICAgaWYgKGRlc2NyaXB0b3IubWluWCAhPT0gdW5kZWZpbmVkICYmIGRlc2NyaXB0b3IubWF4WCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIG9wdGlvbnMuc2NhbGVzLnggPSB7XHJcbiAgICAgICAgdGlja3M6IHtcclxuICAgICAgICAgIGRpc3BsYXk6IGRlc2NyaXB0b3Iuc2hvd0xhYmVsc0ZvclhBeGlzID8/IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBtaW46IGRlc2NyaXB0b3IubWluWCxcclxuICAgICAgICBtYXg6IGRlc2NyaXB0b3IubWF4WCxcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG9wdGlvbnMuc2NhbGVzLnggPSB7XHJcbiAgICAgICAgdGlja3M6IHtcclxuICAgICAgICAgIGRpc3BsYXk6IGRlc2NyaXB0b3Iuc2hvd0xhYmVsc0ZvclhBeGlzID8/IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGlmIChkZXNjcmlwdG9yLm1pblkgIT09IHVuZGVmaW5lZCAmJiBkZXNjcmlwdG9yLm1heFkgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBvcHRpb25zLnNjYWxlcy55ID0ge1xyXG4gICAgICAgIHRpY2tzOiB7XHJcbiAgICAgICAgICBkaXNwbGF5OiBkZXNjcmlwdG9yLnNob3dMYWJlbHNGb3JZQXhpcyA/PyB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbWluOiBkZXNjcmlwdG9yLm1pblksXHJcbiAgICAgICAgbWF4OiBkZXNjcmlwdG9yLm1heFksXHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBvcHRpb25zLnNjYWxlcy55ID0ge1xyXG4gICAgICAgIHRpY2tzOiB7XHJcbiAgICAgICAgICBkaXNwbGF5OiBkZXNjcmlwdG9yLnNob3dMYWJlbHNGb3JZQXhpcyA/PyB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLy9DcmVhdGUgc2hhcGVzXHJcbiAgICBpZiAoZGVzY3JpcHRvci5zaGFwZXMpIHtcclxuICAgICAgZGVzY3JpcHRvci5zaGFwZXMuZm9yRWFjaCgoc2hhcGU6IERpYWdyYW1TaGFwZSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIG9wdGlvbnMucGx1Z2lucy5hbm5vdGF0aW9uID0gb3B0aW9ucy5wbHVnaW5zLmFubm90YXRpb24gfHwge307XHJcbiAgICAgICAgb3B0aW9ucy5wbHVnaW5zLmFubm90YXRpb24uYW5ub3RhdGlvbnMgPSBvcHRpb25zLnBsdWdpbnMuYW5ub3RhdGlvbi5hbm5vdGF0aW9ucyB8fCB7fTtcclxuXHJcbiAgICAgICAgbGV0IGJvcmRlckNvbG9yID0gYHJnYmEoXHJcbiAgICAgICAgICR7c2hhcGUuYm9yZGVyQ29sb3I/LnJlZCA/PyAwfSxcclxuICAgICAgICAgJHtzaGFwZS5ib3JkZXJDb2xvcj8uZ3JlZW4gPz8gMH0sXHJcbiAgICAgICAgICR7c2hhcGUuYm9yZGVyQ29sb3I/LmJsdWUgPz8gMH0sXHJcbiAgICAgICAgICR7c2hhcGUuYm9yZGVyQ29sb3I/LmFscGhhID8/IDF9KWA7XHJcbiAgICAgICAgbGV0IGJhY2tncm91bmRDb2xvciA9IGByZ2JhKFxyXG4gICAgICAgICAke3NoYXBlLmJhY2tncm91bmRDb2xvcj8ucmVkID8/IDB9LFxyXG4gICAgICAgICAke3NoYXBlLmJhY2tncm91bmRDb2xvcj8uZ3JlZW4gPz8gMH0sXHJcbiAgICAgICAgICR7c2hhcGUuYmFja2dyb3VuZENvbG9yPy5ibHVlID8/IDB9LFxyXG4gICAgICAgICAke3NoYXBlLmJhY2tncm91bmRDb2xvcj8uYWxwaGEgPz8gMX0pYDtcclxuXHJcbiAgICAgICAgbGV0IGZvbnRDb2xvciA9IGByZ2JhKFxyXG4gICAgICAgICAke3NoYXBlLmxhYmVsVGV4dD8uY29sb3I/LnJlZCA/PyAwfSxcclxuICAgICAgICAgJHtzaGFwZS5sYWJlbFRleHQ/LmNvbG9yPy5ncmVlbiA/PyAwfSxcclxuICAgICAgICAgJHtzaGFwZS5sYWJlbFRleHQ/LmNvbG9yPy5ibHVlID8/IDB9LFxyXG4gICAgICAgICAke3NoYXBlLmxhYmVsVGV4dD8uY29sb3I/LmFscGhhID8/IDF9KWA7XHJcblxyXG4gICAgICAgIGxldCBib3JkZXJEYXNoO1xyXG4gICAgICAgIGlmIChzaGFwZS5ib3JkZXJEYXNoTGVuZ3RoICYmIHNoYXBlLmJvcmRlckRhc2hHYXApIHtcclxuICAgICAgICAgIGJvcmRlckRhc2ggPSBbc2hhcGUuYm9yZGVyRGFzaExlbmd0aCwgc2hhcGUuYm9yZGVyRGFzaEdhcF07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGJvcmRlckRhc2ggPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBiYXNlQW5ub3RhdGlvbiA9IHtcclxuICAgICAgICAgIHR5cGU6IHNoYXBlLnNoYXBlVHlwZSA/PyAnbGluZScsXHJcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGJhY2tncm91bmRDb2xvciA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICBib3JkZXJDb2xvcjogYm9yZGVyQ29sb3IgPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgYm9yZGVyV2lkdGg6IHNoYXBlLmJvcmRlcldpZHRoID8/IDEsXHJcbiAgICAgICAgICBib3JkZXJEYXNoOiBib3JkZXJEYXNoID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgIGRyYXdUaW1lOiBzaGFwZS5kcmF3VGltZSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgc3dpdGNoIChzaGFwZS5zaGFwZVR5cGUpIHtcclxuICAgICAgICAgIGNhc2UgJ2JveCc6XHJcbiAgICAgICAgICBjYXNlICdsaW5lJzpcclxuICAgICAgICAgIGNhc2UgJ2VsbGlwc2UnOlxyXG4gICAgICAgICAgICBvcHRpb25zLnBsdWdpbnMuYW5ub3RhdGlvbi5hbm5vdGF0aW9uc1tgc2hhcGUke2luZGV4fWBdID0ge1xyXG4gICAgICAgICAgICAgIC4uLmJhc2VBbm5vdGF0aW9uLFxyXG4gICAgICAgICAgICAgIHhNaW46IHNoYXBlLnhNaW4gPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgIHhNYXg6IHNoYXBlLnhNYXggPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgIHlNaW46IHNoYXBlLnlNaW4gPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgIHlNYXg6IHNoYXBlLnlNYXggPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlICdsYWJlbCc6XHJcbiAgICAgICAgICAgIG9wdGlvbnMucGx1Z2lucy5hbm5vdGF0aW9uLmFubm90YXRpb25zW2BzaGFwZSR7aW5kZXh9YF0gPSB7XHJcbiAgICAgICAgICAgICAgLi4uYmFzZUFubm90YXRpb24sXHJcbiAgICAgICAgICAgICAgeFZhbHVlOiBzaGFwZS54TWluID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICB5VmFsdWU6IHNoYXBlLnlNaW4gPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgIGNvbnRlbnQ6IHNoYXBlLmxhYmVsVGV4dD8uY29udGVudCA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgdGV4dEFsaWduOiBzaGFwZS5sYWJlbFRleHQ/LnRleHRBbGlnbiA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgY29sb3I6IGZvbnRDb2xvciA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgZm9udDoge1xyXG4gICAgICAgICAgICAgICAgc2l6ZTogc2hhcGUubGFiZWxUZXh0Py5zaXplID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgIHdlaWdodDogc2hhcGUubGFiZWxUZXh0Py53ZWlnaHQgPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgc3R5bGU6IHNoYXBlLmxhYmVsVGV4dD8uc3R5bGUgPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxyXG4gICAgICAgICAgICAgIGJvcmRlckNvbG9yOiAndHJhbnNwYXJlbnQnLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlICdwb2ludCc6XHJcbiAgICAgICAgICBjYXNlICdwb2x5Z29uJzpcclxuICAgICAgICAgICAgb3B0aW9ucy5wbHVnaW5zLmFubm90YXRpb24uYW5ub3RhdGlvbnNbYHNoYXBlJHtpbmRleH1gXSA9IHtcclxuICAgICAgICAgICAgICAuLi5iYXNlQW5ub3RhdGlvbixcclxuICAgICAgICAgICAgICB4VmFsdWU6IHNoYXBlLnhNaW4gPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgIHlWYWx1ZTogc2hhcGUueU1pbiA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIC8vIE9wdGlvbmFsbHkgaGFuZGxlIGFueSBvdGhlciBzaGFwZSB0eXBlc1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFVua25vd24gc2hhcGUgdHlwZTogJHtzaGFwZS5zaGFwZVR5cGV9YCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRlc2NyaXB0b3IuYmFja2dyb3VuZENvbG9yKSB7XHJcbiAgICAgIGxldCBiYWNrZ3JvdW5kQ29sb3IgPSBgcmdiYShcclxuICAgICAgICAke2Rlc2NyaXB0b3IuYmFja2dyb3VuZENvbG9yPy5yZWQgPz8gMH0sXHJcbiAgICAgICAgJHtkZXNjcmlwdG9yLmJhY2tncm91bmRDb2xvcj8uZ3JlZW4gPz8gMH0sXHJcbiAgICAgICAgJHtkZXNjcmlwdG9yLmJhY2tncm91bmRDb2xvcj8uYmx1ZSA/PyAwfSxcclxuICAgICAgICAke2Rlc2NyaXB0b3IuYmFja2dyb3VuZENvbG9yPy5hbHBoYSA/PyAxfSlgO1xyXG5cclxuICAgICAgbGV0IGlkID0gJ2N1c3RvbUNhbnZhc0JhY2tncm91bmRDb2xvcic7XHJcbiAgICAgIGNvbnN0IHBsdWdpbiA9IHtcclxuICAgICAgICBpZDogaWQsXHJcbiAgICAgICAgYmVmb3JlRHJhdzogKGNoYXJ0OiBhbnksIGFyZ3M6IGFueSwgb3B0aW9uczogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB7IGN0eCwgY2hhcnRBcmVhIH0gPSBjaGFydDtcclxuXHJcbiAgICAgICAgICBjdHguc2F2ZSgpO1xyXG4gICAgICAgICAgY3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICdkZXN0aW5hdGlvbi1vdmVyJztcclxuICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSBiYWNrZ3JvdW5kQ29sb3I7XHJcbiAgICAgICAgICBjdHguZmlsbFJlY3QoXHJcbiAgICAgICAgICAgIGNoYXJ0QXJlYS5sZWZ0LFxyXG4gICAgICAgICAgICBjaGFydEFyZWEudG9wLFxyXG4gICAgICAgICAgICBjaGFydEFyZWEucmlnaHQgLSBjaGFydEFyZWEubGVmdCxcclxuICAgICAgICAgICAgY2hhcnRBcmVhLmJvdHRvbSAtIGNoYXJ0QXJlYS50b3BcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjdHgucmVzdG9yZSgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMucGx1Z2lucy5wdXNoKHBsdWdpbik7XHJcblxyXG4gICAgICBvcHRpb25zLnBsdWdpbnNbYCR7aWR9YF0gPSB7XHJcbiAgICAgICAgY29sb3I6IGJhY2tncm91bmRDb2xvcixcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBvcHRpb25zO1xyXG4gIH1cclxuXHJcbiAgb25EYXRhU2VsZWN0KGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKHsgZXZlbnQgfSk7XHJcbiAgICB0aGlzLmVsZW1lbnRTZWxlY3QuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVDaGFydENsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKHsgZXZlbnQgfSk7XHJcbiAgICB0aGlzLmNhbnZhc0NsaWNrLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlT25EYXRhQ2xpY2tlZChldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBjYW52YXMgPSBldmVudC50YXJnZXQgYXMgSFRNTENhbnZhc0VsZW1lbnQ7XHJcbiAgICBjb25zdCBjaGFydCA9IENoYXJ0LmdldENoYXJ0KGNhbnZhcyk7XHJcblxyXG4gICAgaWYgKGNoYXJ0KSB7XHJcbiAgICAgIGNvbnN0IGVsZW1lbnRzID0gY2hhcnQuZ2V0RWxlbWVudHNBdEV2ZW50Rm9yTW9kZShcclxuICAgICAgICBldmVudCxcclxuICAgICAgICAnbmVhcmVzdCcsXHJcbiAgICAgICAgeyBpbnRlcnNlY3Q6IHRydWUgfSxcclxuICAgICAgICBmYWxzZVxyXG4gICAgICApO1xyXG4gICAgICBpZiAoZWxlbWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGNsaWNrZWRJdGVtcyA9IGNoYXJ0LnRvb2x0aXA/LmRhdGFQb2ludHM/Lm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBkYXRhc2V0SW5kZXg6IGl0ZW0uZGF0YXNldEluZGV4LFxyXG4gICAgICAgICAgaXRlbUluZGV4OiBpdGVtLmRhdGFJbmRleCxcclxuICAgICAgICAgIGVsZW1lbnQ6IGl0ZW0uZWxlbWVudCxcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGNvbnNvbGUubG9nKHsgZXZlbnQsIGNsaWNrZWRJdGVtcyB9KTtcclxuICAgICAgdGhpcy5kYXRhQ2xpY2suZW1pdCh7IGV2ZW50LCBjbGlja2VkSXRlbXMgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRCYXNlNjRJbWFnZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmNoYXJ0Py5nZXRCYXNlNjRJbWFnZSgpO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaCgpIHtcclxuICAgIHJldHVybiB0aGlzLmNoYXJ0Py5yZWZyZXNoKCk7XHJcbiAgfVxyXG5cclxuICBnZXRDaGFydCgpIHtcclxuICAgIHJldHVybiB0aGlzLmNoYXJ0Py5jaGFydDtcclxuICB9XHJcbiAgZ2V0VmlzaWJsZVBvaW50cygpIHtcclxuICAgIGlmICghdGhpcy5jaGFydCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGNoYXJ0SW5zdGFuY2UgPSB0aGlzLmNoYXJ0LmNoYXJ0O1xyXG4gICAgaWYgKCFjaGFydEluc3RhbmNlKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgdmlzaWJsZVBvaW50czogYW55ID0gW107XHJcblxyXG4gICAgY2hhcnRJbnN0YW5jZS5kYXRhLmRhdGFzZXRzLmZvckVhY2goKGRhdGFzZXQ6IGFueSwgZGF0YXNldEluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgbWV0YSA9IGNoYXJ0SW5zdGFuY2UuZ2V0RGF0YXNldE1ldGEoZGF0YXNldEluZGV4KTtcclxuXHJcbiAgICAgIC8vIENoZWNrIGlmIHRoZSBkYXRhc2V0IGlzIGhpZGRlblxyXG4gICAgICBpZiAoIWNoYXJ0SW5zdGFuY2UuaXNEYXRhc2V0VmlzaWJsZShkYXRhc2V0SW5kZXgpKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCB4TWluID0gbWV0YS54U2NhbGUubWluO1xyXG4gICAgICBjb25zdCB4TWF4ID0gbWV0YS54U2NhbGUubWF4O1xyXG4gICAgICBjb25zdCB5TWluID0gbWV0YS55U2NhbGUubWluO1xyXG4gICAgICBjb25zdCB5TWF4ID0gbWV0YS55U2NhbGUubWF4O1xyXG5cclxuICAgICAgZGF0YXNldC5kYXRhLmZvckVhY2goKHBvaW50OiBhbnksIGRhdGFJbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyB4LCB5IH0gPSBwb2ludDtcclxuXHJcbiAgICAgICAgaWYgKHggPj0geE1pbiAmJiB4IDw9IHhNYXggJiYgeSA+PSB5TWluICYmIHkgPD0geU1heCkge1xyXG4gICAgICAgICAgdmlzaWJsZVBvaW50cy5wdXNoKHtcclxuICAgICAgICAgICAgZGF0YXNldEluZGV4LFxyXG4gICAgICAgICAgICBkYXRhSW5kZXgsXHJcbiAgICAgICAgICAgIHgsXHJcbiAgICAgICAgICAgIHksXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHZpc2libGVQb2ludHM7XHJcbiAgfVxyXG5cclxuICBhcHBseUNoYXJ0Q2xhc3MoKSB7XHJcbiAgICBpZiAoIXRoaXMuY2hhcnQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNoYXJ0RWxlbWVudCA9IHRoaXMuY2hhcnQuZWwubmF0aXZlRWxlbWVudDtcclxuICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XHJcbiAgICAgIGNhc2UgJ3BpZSc6XHJcbiAgICAgIGNhc2UgJ2RvdWdobnV0JzpcclxuICAgICAgY2FzZSAncG9sYXJBcmVhJzpcclxuICAgICAgY2FzZSAncmFkYXInOlxyXG4gICAgICAgIGNoYXJ0RWxlbWVudC5jbGFzc0xpc3QuYWRkKCdwaWUtYXNwZWN0LXJhdGlvJyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgY2hhcnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2RlZmF1bHQtYXNwZWN0LXJhdGlvJyk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIkBpZihjb21wTGliID09PSBjb21wb25lbnRMaWJyYXJ5LlBSSU1FTkcpIHtcclxuPHAtY2hhcnRcclxuICAjY2hhcnRKU1JlZlxyXG4gIFt0eXBlXT1cInR5cGVcIlxyXG4gIFtkYXRhXT1cImRhdGFcIlxyXG4gIFtvcHRpb25zXT1cIm9wdGlvbnNcIlxyXG4gIFtwbHVnaW5zXT1cInBsdWdpbnNcIlxyXG4gIChvbkRhdGFTZWxlY3QpPVwib25EYXRhU2VsZWN0KCRldmVudClcIlxyXG4gIChjbGljayk9XCJoYW5kbGVDaGFydENsaWNrKCRldmVudClcIlxyXG4gIChjbGljayk9XCJoYW5kbGVPbkRhdGFDbGlja2VkKCRldmVudClcIlxyXG4vPlxyXG59IEBlbHNlIHtcclxuPHA+T25seSBQcmltZU5nIGNvbXBvbmVudCBsaWJyYXJ5IGlzIHN1cHBvcnRlZDwvcD5cclxufVxyXG4iXX0=
|