@c8y/ngx-components 1021.50.0 → 1021.51.1
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/core/aggregation/aggregation.model.d.ts.map +1 -0
- package/core/aggregation/aggregation.service.d.ts +44 -0
- package/core/aggregation/aggregation.service.d.ts.map +1 -0
- package/core/aggregation/index.d.ts +3 -0
- package/core/aggregation/index.d.ts.map +1 -0
- package/core/common/index.d.ts +0 -2
- package/core/common/index.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.d.ts +2 -2
- package/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.d.ts +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts.map +1 -1
- package/core/index.d.ts +1 -0
- package/core/index.d.ts.map +1 -1
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts +54 -42
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts.map +1 -1
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.d.ts +28 -8
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.d.ts.map +1 -1
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.d.ts +3 -52
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.d.ts.map +1 -1
- package/datapoints-export-selector/datapoints-export-selector.model.d.ts +5 -14
- package/datapoints-export-selector/datapoints-export-selector.model.d.ts.map +1 -1
- package/device-grid/device-grid.component.d.ts.map +1 -1
- package/device-grid/device-grid.service.d.ts +2 -0
- package/device-grid/device-grid.service.d.ts.map +1 -1
- package/esm2022/core/aggregation/aggregation.model.mjs +46 -0
- package/esm2022/core/aggregation/aggregation.service.mjs +76 -0
- package/esm2022/core/aggregation/index.mjs +3 -0
- package/esm2022/core/common/index.mjs +1 -3
- package/esm2022/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.mjs +2 -2
- package/esm2022/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.mjs +2 -2
- package/esm2022/core/dashboard/wiget-time-context/widget-time-context.component.mjs +4 -4
- package/esm2022/core/index.mjs +2 -1
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.mjs +165 -163
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.mjs +82 -48
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.mjs +5 -95
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-data-scope/datapoints-exports-selector-data-scope.component.mjs +3 -3
- package/esm2022/datapoints-export-selector/datapoints-export-selector.component.mjs +3 -3
- package/esm2022/datapoints-export-selector/datapoints-export-selector.model.mjs +1 -9
- package/esm2022/device-grid/device-grid.component.mjs +3 -3
- package/esm2022/device-grid/device-grid.service.mjs +16 -1
- package/esm2022/interval-picker/interval-picker.model.mjs +5 -1
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.mjs +25 -41
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.mjs +3 -3
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.mjs +55 -49
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.service.mjs +25 -73
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-widget.model.mjs +20 -20
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table.service.mjs +19 -19
- package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +247 -307
- package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-grid.mjs +17 -2
- package/fesm2022/c8y-ngx-components-device-grid.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-interval-picker.mjs +5 -1
- package/fesm2022/c8y-ngx-components-interval-picker.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +1075 -1253
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +118 -76
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/interval-picker/interval-picker.model.d.ts +6 -0
- package/interval-picker/interval-picker.model.d.ts.map +1 -1
- package/locales/de.po +40 -27
- package/locales/es.po +40 -27
- package/locales/fr.po +40 -27
- package/locales/ja_JP.po +40 -26
- package/locales/ko.po +38 -24
- package/locales/locales.pot +23 -25
- package/locales/nl.po +40 -27
- package/locales/pl.po +40 -26
- package/locales/pt_BR.po +40 -27
- package/locales/zh_CN.po +38 -24
- package/locales/zh_TW.po +38 -24
- package/package.json +1 -1
- package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.d.ts +3 -5
- package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.d.ts.map +1 -1
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts +7 -2
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts.map +1 -1
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.service.d.ts +7 -27
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.service.d.ts.map +1 -1
- package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts +4 -3
- package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts.map +1 -1
- package/widgets/implementations/datapoints-table/datapoints-table.service.d.ts +5 -5
- package/widgets/implementations/datapoints-table/datapoints-table.service.d.ts.map +1 -1
- package/core/common/aggregation/aggregation.model.d.ts.map +0 -1
- package/core/common/aggregation/aggregation.service.d.ts +0 -17
- package/core/common/aggregation/aggregation.service.d.ts.map +0 -1
- package/esm2022/core/common/aggregation/aggregation.model.mjs +0 -46
- package/esm2022/core/common/aggregation/aggregation.service.mjs +0 -34
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.service.mjs +0 -124
- package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.service.d.ts +0 -56
- package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.service.d.ts.map +0 -1
- /package/core/{common/aggregation → aggregation}/aggregation.model.d.ts +0 -0
|
@@ -90,11 +90,11 @@ export class DatapointsReloadComponent extends IntervalBasedReload {
|
|
|
90
90
|
!this.hideCountdown);
|
|
91
91
|
}
|
|
92
92
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DatapointsReloadComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
93
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: DatapointsReloadComponent, isStandalone: true, selector: "c8y-datapoints-reload", inputs: { isAutoRefreshEnabled: "isAutoRefreshEnabled", isDisabled: "isDisabled", isLoading: "isLoading", isScrolling: "isScrolling", isExportModalOpen: "isExportModalOpen", refreshInterval: "refreshInterval" }, outputs: { onCountdownEnded: "onCountdownEnded" }, viewQueries: [{ propertyName: "countdownIntervalComponent", first: true, predicate: CountdownIntervalComponent, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"
|
|
93
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: DatapointsReloadComponent, isStandalone: true, selector: "c8y-datapoints-reload", inputs: { isAutoRefreshEnabled: "isAutoRefreshEnabled", isDisabled: "isDisabled", isLoading: "isLoading", isScrolling: "isScrolling", isExportModalOpen: "isExportModalOpen", refreshInterval: "refreshInterval" }, outputs: { onCountdownEnded: "onCountdownEnded" }, viewQueries: [{ propertyName: "countdownIntervalComponent", first: true, predicate: CountdownIntervalComponent, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"a-i-center input-group p-t-4 p-b-4 max-width-fit m-l-auto\">\n <label\n class=\"m-b-0 m-r-8 text-label-small text-truncate flex-no-shrink\"\n title=\" {{ 'Auto refresh' | translate }}\"\n *ngIf=\"refreshInterval && isAutoRefreshEnabled\"\n >\n {{ 'Auto refresh' | translate }}\n </label>\n <div class=\"input-group\">\n <label\n class=\"toggle-countdown\"\n [class.toggle-countdown-disabled]=\"isDisabled\"\n [attr.aria-label]=\"toggleCountdownButtonTooltipText\"\n [tooltip]=\"toggleCountdownButtonTooltipText\"\n placement=\"bottom\"\n *ngIf=\"refreshInterval && isAutoRefreshEnabled\"\n [adaptivePosition]=\"false\"\n [container]=\"'body'\"\n [delay]=\"500\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"isIntervalRefreshToggleOn\"\n [disabled]=\"isDisabled\"\n data-cy=\"c8y-data-points-table-widget--interval-toggle-button\"\n (click)=\"onToggleCountdownButtonState($event)\"\n />\n\n <c8y-countdown-interval\n *ngIf=\"isIntervalRefreshToggleOn\"\n [countdownInterval]=\"refreshInterval\"\n (countdownEnded)=\"countdownEnded()\"\n ></c8y-countdown-interval>\n <i\n c8yIcon=\"pause\"\n *ngIf=\"!isIntervalRefreshToggleOn\"\n ></i>\n </label>\n\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Refresh' | translate\"\n [tooltip]=\"'Refresh' | translate\"\n placement=\"bottom\"\n type=\"button\"\n [adaptivePosition]=\"false\"\n [container]=\"'body'\"\n [delay]=\"500\"\n [disabled]=\"isLoading()\"\n (click)=\"reload()\"\n data-cy=\"c8y-data-points-table-widget--reload-button\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': isLoading() }\"\n ></i>\n </button>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: CountdownIntervalModule }, { kind: "component", type: i2.CountdownIntervalComponent, selector: "c8y-countdown-interval", inputs: ["countdownInterval"], outputs: ["countdownEnded"] }, { kind: "ngmodule", type: ListGroupModule }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i4.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }] }); }
|
|
94
94
|
}
|
|
95
95
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DatapointsReloadComponent, decorators: [{
|
|
96
96
|
type: Component,
|
|
97
|
-
args: [{ selector: 'c8y-datapoints-reload', standalone: true, imports: [CommonModule, CountdownIntervalModule, ListGroupModule, TooltipModule], template: "<div class=\"
|
|
97
|
+
args: [{ selector: 'c8y-datapoints-reload', standalone: true, imports: [CommonModule, CountdownIntervalModule, ListGroupModule, TooltipModule], template: "<div class=\"a-i-center input-group p-t-4 p-b-4 max-width-fit m-l-auto\">\n <label\n class=\"m-b-0 m-r-8 text-label-small text-truncate flex-no-shrink\"\n title=\" {{ 'Auto refresh' | translate }}\"\n *ngIf=\"refreshInterval && isAutoRefreshEnabled\"\n >\n {{ 'Auto refresh' | translate }}\n </label>\n <div class=\"input-group\">\n <label\n class=\"toggle-countdown\"\n [class.toggle-countdown-disabled]=\"isDisabled\"\n [attr.aria-label]=\"toggleCountdownButtonTooltipText\"\n [tooltip]=\"toggleCountdownButtonTooltipText\"\n placement=\"bottom\"\n *ngIf=\"refreshInterval && isAutoRefreshEnabled\"\n [adaptivePosition]=\"false\"\n [container]=\"'body'\"\n [delay]=\"500\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"isIntervalRefreshToggleOn\"\n [disabled]=\"isDisabled\"\n data-cy=\"c8y-data-points-table-widget--interval-toggle-button\"\n (click)=\"onToggleCountdownButtonState($event)\"\n />\n\n <c8y-countdown-interval\n *ngIf=\"isIntervalRefreshToggleOn\"\n [countdownInterval]=\"refreshInterval\"\n (countdownEnded)=\"countdownEnded()\"\n ></c8y-countdown-interval>\n <i\n c8yIcon=\"pause\"\n *ngIf=\"!isIntervalRefreshToggleOn\"\n ></i>\n </label>\n\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Refresh' | translate\"\n [tooltip]=\"'Refresh' | translate\"\n placement=\"bottom\"\n type=\"button\"\n [adaptivePosition]=\"false\"\n [container]=\"'body'\"\n [delay]=\"500\"\n [disabled]=\"isLoading()\"\n (click)=\"reload()\"\n data-cy=\"c8y-data-points-table-widget--reload-button\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': isLoading() }\"\n ></i>\n </button>\n </div>\n </div>\n</div>\n" }]
|
|
98
98
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: i1.TranslateService }], propDecorators: { countdownIntervalComponent: [{
|
|
99
99
|
type: ViewChild,
|
|
100
100
|
args: [CountdownIntervalComponent, { static: false }]
|
|
@@ -113,4 +113,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
113
113
|
}], onCountdownEnded: [{
|
|
114
114
|
type: Output
|
|
115
115
|
}] } });
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50cy1yZWxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vd2lkZ2V0cy9pbXBsZW1lbnRhdGlvbnMvZGF0YXBvaW50cy10YWJsZS9kYXRhcG9pbnRzLXRhYmxlLXZpZXcvZGF0YXBvaW50cy1yZWxvYWQvZGF0YXBvaW50cy1yZWxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vd2lkZ2V0cy9pbXBsZW1lbnRhdGlvbnMvZGF0YXBvaW50cy10YWJsZS9kYXRhcG9pbnRzLXRhYmxlLXZpZXcvZGF0YXBvaW50cy1yZWxvYWQvZGF0YXBvaW50cy1yZWxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFFBQVEsRUFDUixLQUFLLEVBRUwsTUFBTSxFQUdOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsWUFBWSxFQUNaLDBCQUEwQixFQUMxQix1QkFBdUIsRUFDdkIsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixPQUFPLEVBQ1IsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7OztBQVF0RCxNQUFNLE9BQU8seUJBQTBCLFNBQVEsbUJBQW1CO0lBd0NoRSxZQUNVLEtBQXdCLEVBQ3hCLFFBQWtCLEVBQ2xCLGdCQUFrQztRQUUxQyxLQUFLLEVBQUUsQ0FBQztRQUpBLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ3hCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQXRCNUM7O1dBRUc7UUFDTyxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFB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RSx1QkFBdUIsY0FFckIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLHVCQUF1QixFQUFFLGVBQWUsRUFBRSxhQUFhLENBQUM7NElBSWhGLDBCQUEwQjtzQkFEekIsU0FBUzt1QkFBQywwQkFBMEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBSy9DLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUlHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBSUcsZUFBZTtzQkFBdkIsS0FBSztnQkFJSSxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIFNpZ25hbCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29tbW9uTW9kdWxlLFxuICBDb3VudGRvd25JbnRlcnZhbENvbXBvbmVudCxcbiAgQ291bnRkb3duSW50ZXJ2YWxNb2R1bGUsXG4gIEludGVydmFsQmFzZWRSZWxvYWQsXG4gIExpc3RHcm91cE1vZHVsZSxcbiAgZ2V0dGV4dFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL3Rvb2x0aXAnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZGF0YXBvaW50cy1yZWxvYWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YXBvaW50cy1yZWxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBDb3VudGRvd25JbnRlcnZhbE1vZHVsZSwgTGlzdEdyb3VwTW9kdWxlLCBUb29sdGlwTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRhcG9pbnRzUmVsb2FkQ29tcG9uZW50IGV4dGVuZHMgSW50ZXJ2YWxCYXNlZFJlbG9hZCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBWaWV3Q2hpbGQoQ291bnRkb3duSW50ZXJ2YWxDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBjb3VudGRvd25JbnRlcnZhbENvbXBvbmVudDogQ291bnRkb3duSW50ZXJ2YWxDb21wb25lbnQ7XG4gIC8qKlxuICAgKiBAaW5oZXJpdGRvY1xuICAgKi9cbiAgQElucHV0KCkgaXNBdXRvUmVmcmVzaEVuYWJsZWQ6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgaXNEaXNhYmxlZDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEBpbmhlcml0ZG9jXG4gICAqL1xuICBASW5wdXQoKSBpc0xvYWRpbmc6IFNpZ25hbDxib29sZWFuPjtcblxuICBASW5wdXQoKSBpc1Njcm9sbGluZzogYm9vbGVhbjtcblxuICBASW5wdXQoKSBpc0V4cG9ydE1vZGFsT3BlbjogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEBpbmhlcml0ZG9jXG4gICAqL1xuICBASW5wdXQoKSByZWZyZXNoSW50ZXJ2YWw6IG51bWJlcjtcbiAgLyoqXG4gICAqIEBpbmhlcml0ZG9jXG4gICAqL1xuICBAT3V0cHV0KCkgb25Db3VudGRvd25FbmRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgLyoqXG4gICAqIEBpbmhlcml0ZG9jXG4gICAqL1xuICBpc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uOiBib29sZWFuO1xuXG4gIHRvZ2dsZUNvdW50ZG93bkJ1dHRvblRvb2x0aXBUZXh0OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBAaW5oZXJpdGRvY1xuICAgKi9cbiAgcHJvdGVjdGVkIG1hbnVhbGx5RGlzYWJsZWRDb3VudGRvd24gPSBmYWxzZTtcbiAgLyoqXG4gICAqIEBpbmhlcml0ZG9jXG4gICAqL1xuICBwcm90ZWN0ZWQgaGlkZUNvdW50ZG93bjogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkICYmIHRoaXMuaXNBdXRvUmVmcmVzaEVuYWJsZWQpIHtcbiAgICAgIHRoaXMuaXNJbnRlcnZhbFJlZnJlc2hUb2dnbGVPbiA9IGZhbHNlO1xuICAgICAgdGhpcy5kaXNhYmxlQ291bnRkb3duKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNFeHBvcnRNb2RhbE9wZW4gJiYgdGhpcy5jYW5EaXNhYmxlQ291bnRkb3duV2hlbk1vZGFsSXNPcGVuKCkpIHtcbiAgICAgIHRoaXMuaXNJbnRlcnZhbFJlZnJlc2hUb2dnbGVPbiA9ICF0aGlzLmlzSW50ZXJ2YWxSZWZyZXNoVG9nZ2xlT247XG4gICAgICB0aGlzLmRpc2FibGVDb3VudGRvd24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuY2FuU3RhcnRDb3VudGRvd24oY2hhbmdlcykpIHtcbiAgICAgICAgdGhpcy5pc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zdGFydENvdW50ZG93bih0aGlzLmluamVjdG9yKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuY2FuSGFuZGxlU2Nyb2xsaW5nKCkpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVTY3JvbGxpbmcoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXRkb2NcbiAgICovXG4gIGNvdW50ZG93bkVuZGVkKCk6IHZvaWQge1xuICAgIC8qKlxuICAgICAqIEBpbmhlcml0ZG9jXG4gICAgICovXG4gICAgdGhpcy5hdXRvUmVmcmVzaExpc3QoKTtcbiAgfVxuXG4gIHJlbG9hZCgpOiB2b2lkIHtcbiAgICAvKipcbiAgICAgKiBAaW5oZXJpdGRvY1xuICAgICAqL1xuICAgIHRoaXMuYXV0b1JlZnJlc2hMaXN0KCk7XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXRkb2NcbiAgICovXG4gIGVuYWJsZUNvdW50ZG93bigpOiB2b2lkIHtcbiAgICB0aGlzLmhpZGVDb3VudGRvd24gPSBmYWxzZTtcbiAgICAvLyBQcmV2ZW50cyB0aGUgY291bnRkb3duIGZyb20gZ2V0dGluZyBzdHVjayBvbiBhbiBpbml0aWFsIHZhbHVlLlxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuc3RhcnRDb3VudGRvd24odGhpcy5pbmplY3Rvcik7XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXRkb2NcbiAgICovXG4gIHByb3RlY3RlZCB1cGRhdGVDb3VudGRvd25CdXR0b25Ub29sdGlwVGV4dCgpOiB2b2lkIHtcbiAgICB0aGlzLnRvZ2dsZUNvdW50ZG93bkJ1dHRvblRvb2x0aXBUZXh0ID0gdGhpcy5pc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uXG4gICAgICA/IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ0Rpc2FibGUgYXV0byByZWZyZXNoJykpXG4gICAgICA6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ0VuYWJsZSBhdXRvIHJlZnJlc2gnKSk7XG4gIH1cblxuICBwcml2YXRlIGNhblN0YXJ0Q291bnRkb3duKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiBib29sZWFuIHtcbiAgICBjb25zdCB7IGlzQXV0b1JlZnJlc2hFbmFibGVkLCByZWZyZXNoSW50ZXJ2YWwgfSA9IGNoYW5nZXM7XG4gICAgcmV0dXJuIChcbiAgICAgIChpc0F1dG9SZWZyZXNoRW5hYmxlZCB8fCByZWZyZXNoSW50ZXJ2YWwpICYmXG4gICAgICAodGhpcy5pc0F1dG9SZWZyZXNoRW5hYmxlZCB8fCAhIXRoaXMucmVmcmVzaEludGVydmFsKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNhbkhhbmRsZVNjcm9sbGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMubWFudWFsbHlEaXNhYmxlZENvdW50ZG93biAmJiB0aGlzLmlzQXV0b1JlZnJlc2hFbmFibGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBjYW5EaXNhYmxlQ291bnRkb3duV2hlbk1vZGFsSXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmlzQXV0b1JlZnJlc2hFbmFibGVkICYmXG4gICAgICAhIXRoaXMucmVmcmVzaEludGVydmFsICYmXG4gICAgICAhdGhpcy5tYW51YWxseURpc2FibGVkQ291bnRkb3duICYmXG4gICAgICAhdGhpcy5pc1Njcm9sbGluZyAmJlxuICAgICAgIXRoaXMuaGlkZUNvdW50ZG93blxuICAgICk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkLWZsZXggYS1pLWNlbnRlciBwLXQtNCBwLWItNFwiPlxuICA8bGFiZWxcbiAgICBjbGFzcz1cIm0tYi0wIG0tci04IHRleHQtbGFiZWwtc21hbGwgdGV4dC10cnVuY2F0ZSBmbGV4LW5vLXNocmlua1wiXG4gICAgdGl0bGU9XCIge3sgJ0F1dG8gcmVmcmVzaCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICpuZ0lmPVwicmVmcmVzaEludGVydmFsICYmIGlzQXV0b1JlZnJlc2hFbmFibGVkXCJcbiAgPlxuICAgIHt7ICdBdXRvIHJlZnJlc2gnIHwgdHJhbnNsYXRlIH19XG4gIDwvbGFiZWw+XG4gIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxuICAgIDxsYWJlbFxuICAgICAgY2xhc3M9XCJ0b2dnbGUtY291bnRkb3duXCJcbiAgICAgIFtjbGFzcy50b2dnbGUtY291bnRkb3duLWRpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0b2dnbGVDb3VudGRvd25CdXR0b25Ub29sdGlwVGV4dFwiXG4gICAgICBbdG9vbHRpcF09XCJ0b2dnbGVDb3VudGRvd25CdXR0b25Ub29sdGlwVGV4dFwiXG4gICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgKm5nSWY9XCJyZWZyZXNoSW50ZXJ2YWwgJiYgaXNBdXRvUmVmcmVzaEVuYWJsZWRcIlxuICAgICAgW2FkYXB0aXZlUG9zaXRpb25dPVwiZmFsc2VcIlxuICAgICAgW2NvbnRhaW5lcl09XCInYm9keSdcIlxuICAgICAgW2RlbGF5XT1cIjUwMFwiXG4gICAgPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgIFtjaGVja2VkXT1cImlzSW50ZXJ2YWxSZWZyZXNoVG9nZ2xlT25cIlxuICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXG4gICAgICAgIGRhdGEtY3k9XCJjOHktZGF0YS1wb2ludHMtdGFibGUtd2lkZ2V0LS1pbnRlcnZhbC10b2dnbGUtYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uVG9nZ2xlQ291bnRkb3duQnV0dG9uU3RhdGUoJGV2ZW50KVwiXG4gICAgICAvPlxuXG4gICAgICA8Yzh5LWNvdW50ZG93bi1pbnRlcnZhbFxuICAgICAgICAqbmdJZj1cImlzSW50ZXJ2YWxSZWZyZXNoVG9nZ2xlT25cIlxuICAgICAgICBbY291bnRkb3duSW50ZXJ2YWxdPVwicmVmcmVzaEludGVydmFsXCJcbiAgICAgICAgKGNvdW50ZG93bkVuZGVkKT1cImNvdW50ZG93bkVuZGVkKClcIlxuICAgICAgPjwvYzh5LWNvdW50ZG93bi1pbnRlcnZhbD5cbiAgICAgIDxpXG4gICAgICAgIGM4eUljb249XCJwYXVzZVwiXG4gICAgICAgICpuZ0lmPVwiIWlzSW50ZXJ2YWxSZWZyZXNoVG9nZ2xlT25cIlxuICAgICAgPjwvaT5cbiAgICA8L2xhYmVsPlxuXG4gICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWJ0blwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1JlZnJlc2gnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW3Rvb2x0aXBdPVwiJ1JlZnJlc2gnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFthZGFwdGl2ZVBvc2l0aW9uXT1cImZhbHNlXCJcbiAgICAgICAgW2NvbnRhaW5lcl09XCInYm9keSdcIlxuICAgICAgICBbZGVsYXldPVwiNTAwXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzTG9hZGluZygpXCJcbiAgICAgICAgKGNsaWNrKT1cInJlbG9hZCgpXCJcbiAgICAgICAgZGF0YS1jeT1cImM4eS1kYXRhLXBvaW50cy10YWJsZS13aWRnZXQtLXJlbG9hZC1idXR0b25cIlxuICAgICAgPlxuICAgICAgICA8aVxuICAgICAgICAgIGM4eUljb249XCJyZWZyZXNoXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpY29uLXNwaW4nOiBpc0xvYWRpbmcoKSB9XCJcbiAgICAgICAgPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50cy1yZWxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vd2lkZ2V0cy9pbXBsZW1lbnRhdGlvbnMvZGF0YXBvaW50cy10YWJsZS9kYXRhcG9pbnRzLXRhYmxlLXZpZXcvZGF0YXBvaW50cy1yZWxvYWQvZGF0YXBvaW50cy1yZWxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vd2lkZ2V0cy9pbXBsZW1lbnRhdGlvbnMvZGF0YXBvaW50cy10YWJsZS9kYXRhcG9pbnRzLXRhYmxlLXZpZXcvZGF0YXBvaW50cy1yZWxvYWQvZGF0YXBvaW50cy1yZWxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFFBQVEsRUFDUixLQUFLLEVBRUwsTUFBTSxFQUdOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsWUFBWSxFQUNaLDBCQUEwQixFQUMxQix1QkFBdUIsRUFDdkIsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixPQUFPLEVBQ1IsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7OztBQVF0RCxNQUFNLE9BQU8seUJBQTBCLFNBQVEsbUJBQW1CO0lBd0NoRSxZQUNVLEtBQXdCLEVBQ3hCLFFBQWtCLEVBQ2xCLGdCQUFrQztRQUUxQyxLQUFLLEVBQUUsQ0FBQztRQUpBLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ3hCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQXRCNUM7O1dBRUc7UUFDTyxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFB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RSx1QkFBdUIsY0FFckIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLHVCQUF1QixFQUFFLGVBQWUsRUFBRSxhQUFhLENBQUM7NElBSWhGLDBCQUEwQjtzQkFEekIsU0FBUzt1QkFBQywwQkFBMEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBSy9DLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUlHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBSUcsZUFBZTtzQkFBdkIsS0FBSztnQkFJSSxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIFNpZ25hbCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29tbW9uTW9kdWxlLFxuICBDb3VudGRvd25JbnRlcnZhbENvbXBvbmVudCxcbiAgQ291bnRkb3duSW50ZXJ2YWxNb2R1bGUsXG4gIEludGVydmFsQmFzZWRSZWxvYWQsXG4gIExpc3RHcm91cE1vZHVsZSxcbiAgZ2V0dGV4dFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL3Rvb2x0aXAnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZGF0YXBvaW50cy1yZWxvYWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YXBvaW50cy1yZWxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBDb3VudGRvd25JbnRlcnZhbE1vZHVsZSwgTGlzdEdyb3VwTW9kdWxlLCBUb29sdGlwTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRhcG9pbnRzUmVsb2FkQ29tcG9uZW50IGV4dGVuZHMgSW50ZXJ2YWxCYXNlZFJlbG9hZCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBWaWV3Q2hpbGQoQ291bnRkb3duSW50ZXJ2YWxDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBjb3VudGRvd25JbnRlcnZhbENvbXBvbmVudDogQ291bnRkb3duSW50ZXJ2YWxDb21wb25lbnQ7XG4gIC8qKlxuICAgKiBAaW5oZXJpdGRvY1xuICAgKi9cbiAgQElucHV0KCkgaXNBdXRvUmVmcmVzaEVuYWJsZWQ6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgaXNEaXNhYmxlZDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEBpbmhlcml0ZG9jXG4gICAqL1xuICBASW5wdXQoKSBpc0xvYWRpbmc6IFNpZ25hbDxib29sZWFuPjtcblxuICBASW5wdXQoKSBpc1Njcm9sbGluZzogYm9vbGVhbjtcblxuICBASW5wdXQoKSBpc0V4cG9ydE1vZGFsT3BlbjogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEBpbmhlcml0ZG9jXG4gICAqL1xuICBASW5wdXQoKSByZWZyZXNoSW50ZXJ2YWw6IG51bWJlcjtcbiAgLyoqXG4gICAqIEBpbmhlcml0ZG9jXG4gICAqL1xuICBAT3V0cHV0KCkgb25Db3VudGRvd25FbmRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgLyoqXG4gICAqIEBpbmhlcml0ZG9jXG4gICAqL1xuICBpc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uOiBib29sZWFuO1xuXG4gIHRvZ2dsZUNvdW50ZG93bkJ1dHRvblRvb2x0aXBUZXh0OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBAaW5oZXJpdGRvY1xuICAgKi9cbiAgcHJvdGVjdGVkIG1hbnVhbGx5RGlzYWJsZWRDb3VudGRvd24gPSBmYWxzZTtcbiAgLyoqXG4gICAqIEBpbmhlcml0ZG9jXG4gICAqL1xuICBwcm90ZWN0ZWQgaGlkZUNvdW50ZG93bjogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkICYmIHRoaXMuaXNBdXRvUmVmcmVzaEVuYWJsZWQpIHtcbiAgICAgIHRoaXMuaXNJbnRlcnZhbFJlZnJlc2hUb2dnbGVPbiA9IGZhbHNlO1xuICAgICAgdGhpcy5kaXNhYmxlQ291bnRkb3duKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNFeHBvcnRNb2RhbE9wZW4gJiYgdGhpcy5jYW5EaXNhYmxlQ291bnRkb3duV2hlbk1vZGFsSXNPcGVuKCkpIHtcbiAgICAgIHRoaXMuaXNJbnRlcnZhbFJlZnJlc2hUb2dnbGVPbiA9ICF0aGlzLmlzSW50ZXJ2YWxSZWZyZXNoVG9nZ2xlT247XG4gICAgICB0aGlzLmRpc2FibGVDb3VudGRvd24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuY2FuU3RhcnRDb3VudGRvd24oY2hhbmdlcykpIHtcbiAgICAgICAgdGhpcy5pc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zdGFydENvdW50ZG93bih0aGlzLmluamVjdG9yKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuY2FuSGFuZGxlU2Nyb2xsaW5nKCkpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVTY3JvbGxpbmcoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXRkb2NcbiAgICovXG4gIGNvdW50ZG93bkVuZGVkKCk6IHZvaWQge1xuICAgIC8qKlxuICAgICAqIEBpbmhlcml0ZG9jXG4gICAgICovXG4gICAgdGhpcy5hdXRvUmVmcmVzaExpc3QoKTtcbiAgfVxuXG4gIHJlbG9hZCgpOiB2b2lkIHtcbiAgICAvKipcbiAgICAgKiBAaW5oZXJpdGRvY1xuICAgICAqL1xuICAgIHRoaXMuYXV0b1JlZnJlc2hMaXN0KCk7XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXRkb2NcbiAgICovXG4gIGVuYWJsZUNvdW50ZG93bigpOiB2b2lkIHtcbiAgICB0aGlzLmhpZGVDb3VudGRvd24gPSBmYWxzZTtcbiAgICAvLyBQcmV2ZW50cyB0aGUgY291bnRkb3duIGZyb20gZ2V0dGluZyBzdHVjayBvbiBhbiBpbml0aWFsIHZhbHVlLlxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuc3RhcnRDb3VudGRvd24odGhpcy5pbmplY3Rvcik7XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXRkb2NcbiAgICovXG4gIHByb3RlY3RlZCB1cGRhdGVDb3VudGRvd25CdXR0b25Ub29sdGlwVGV4dCgpOiB2b2lkIHtcbiAgICB0aGlzLnRvZ2dsZUNvdW50ZG93bkJ1dHRvblRvb2x0aXBUZXh0ID0gdGhpcy5pc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uXG4gICAgICA/IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ0Rpc2FibGUgYXV0byByZWZyZXNoJykpXG4gICAgICA6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ0VuYWJsZSBhdXRvIHJlZnJlc2gnKSk7XG4gIH1cblxuICBwcml2YXRlIGNhblN0YXJ0Q291bnRkb3duKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiBib29sZWFuIHtcbiAgICBjb25zdCB7IGlzQXV0b1JlZnJlc2hFbmFibGVkLCByZWZyZXNoSW50ZXJ2YWwgfSA9IGNoYW5nZXM7XG4gICAgcmV0dXJuIChcbiAgICAgIChpc0F1dG9SZWZyZXNoRW5hYmxlZCB8fCByZWZyZXNoSW50ZXJ2YWwpICYmXG4gICAgICAodGhpcy5pc0F1dG9SZWZyZXNoRW5hYmxlZCB8fCAhIXRoaXMucmVmcmVzaEludGVydmFsKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNhbkhhbmRsZVNjcm9sbGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMubWFudWFsbHlEaXNhYmxlZENvdW50ZG93biAmJiB0aGlzLmlzQXV0b1JlZnJlc2hFbmFibGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBjYW5EaXNhYmxlQ291bnRkb3duV2hlbk1vZGFsSXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmlzQXV0b1JlZnJlc2hFbmFibGVkICYmXG4gICAgICAhIXRoaXMucmVmcmVzaEludGVydmFsICYmXG4gICAgICAhdGhpcy5tYW51YWxseURpc2FibGVkQ291bnRkb3duICYmXG4gICAgICAhdGhpcy5pc1Njcm9sbGluZyAmJlxuICAgICAgIXRoaXMuaGlkZUNvdW50ZG93blxuICAgICk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhLWktY2VudGVyIGlucHV0LWdyb3VwIHAtdC00IHAtYi00IG1heC13aWR0aC1maXQgbS1sLWF1dG9cIj5cbiAgPGxhYmVsXG4gICAgY2xhc3M9XCJtLWItMCBtLXItOCB0ZXh0LWxhYmVsLXNtYWxsIHRleHQtdHJ1bmNhdGUgZmxleC1uby1zaHJpbmtcIlxuICAgIHRpdGxlPVwiIHt7ICdBdXRvIHJlZnJlc2gnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAqbmdJZj1cInJlZnJlc2hJbnRlcnZhbCAmJiBpc0F1dG9SZWZyZXNoRW5hYmxlZFwiXG4gID5cbiAgICB7eyAnQXV0byByZWZyZXNoJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2xhYmVsPlxuICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICA8bGFiZWxcbiAgICAgIGNsYXNzPVwidG9nZ2xlLWNvdW50ZG93blwiXG4gICAgICBbY2xhc3MudG9nZ2xlLWNvdW50ZG93bi1kaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidG9nZ2xlQ291bnRkb3duQnV0dG9uVG9vbHRpcFRleHRcIlxuICAgICAgW3Rvb2x0aXBdPVwidG9nZ2xlQ291bnRkb3duQnV0dG9uVG9vbHRpcFRleHRcIlxuICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICpuZ0lmPVwicmVmcmVzaEludGVydmFsICYmIGlzQXV0b1JlZnJlc2hFbmFibGVkXCJcbiAgICAgIFthZGFwdGl2ZVBvc2l0aW9uXT1cImZhbHNlXCJcbiAgICAgIFtjb250YWluZXJdPVwiJ2JvZHknXCJcbiAgICAgIFtkZWxheV09XCI1MDBcIlxuICAgID5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICBbY2hlY2tlZF09XCJpc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxuICAgICAgICBkYXRhLWN5PVwiYzh5LWRhdGEtcG9pbnRzLXRhYmxlLXdpZGdldC0taW50ZXJ2YWwtdG9nZ2xlLWJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJvblRvZ2dsZUNvdW50ZG93bkJ1dHRvblN0YXRlKCRldmVudClcIlxuICAgICAgLz5cblxuICAgICAgPGM4eS1jb3VudGRvd24taW50ZXJ2YWxcbiAgICAgICAgKm5nSWY9XCJpc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uXCJcbiAgICAgICAgW2NvdW50ZG93bkludGVydmFsXT1cInJlZnJlc2hJbnRlcnZhbFwiXG4gICAgICAgIChjb3VudGRvd25FbmRlZCk9XCJjb3VudGRvd25FbmRlZCgpXCJcbiAgICAgID48L2M4eS1jb3VudGRvd24taW50ZXJ2YWw+XG4gICAgICA8aVxuICAgICAgICBjOHlJY29uPVwicGF1c2VcIlxuICAgICAgICAqbmdJZj1cIiFpc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uXCJcbiAgICAgID48L2k+XG4gICAgPC9sYWJlbD5cblxuICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1idG5cIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidSZWZyZXNoJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFt0b29sdGlwXT1cIidSZWZyZXNoJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbYWRhcHRpdmVQb3NpdGlvbl09XCJmYWxzZVwiXG4gICAgICAgIFtjb250YWluZXJdPVwiJ2JvZHknXCJcbiAgICAgICAgW2RlbGF5XT1cIjUwMFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc0xvYWRpbmcoKVwiXG4gICAgICAgIChjbGljayk9XCJyZWxvYWQoKVwiXG4gICAgICAgIGRhdGEtY3k9XCJjOHktZGF0YS1wb2ludHMtdGFibGUtd2lkZ2V0LS1yZWxvYWQtYnV0dG9uXCJcbiAgICAgID5cbiAgICAgICAgPGlcbiAgICAgICAgICBjOHlJY29uPVwicmVmcmVzaFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAnaWNvbi1zcGluJzogaXNMb2FkaW5nKCkgfVwiXG4gICAgICAgID48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,23 +1,26 @@
|
|
|
1
1
|
import { Component, Input, signal } from '@angular/core';
|
|
2
2
|
import { FormBuilder, FormControl, ReactiveFormsModule } from '@angular/forms';
|
|
3
3
|
import { CommonModule, DismissAlertStrategy, DynamicComponentAlert, gettext } from '@c8y/ngx-components';
|
|
4
|
+
import { DataFetchingService, DatapointsExportSelectorComponent, dateRangeValidator } from '@c8y/ngx-components/datapoints-export-selector';
|
|
5
|
+
import { INTERVAL_VALUES } from '@c8y/ngx-components/interval-picker';
|
|
4
6
|
import { TranslateService } from '@ngx-translate/core';
|
|
5
|
-
import { TIME_RANGE_INTERVAL_UNITS_VALUES, dateRangeValidator } from '@c8y/ngx-components/datapoints-export-selector';
|
|
6
7
|
import { Subject, debounceTime } from 'rxjs';
|
|
7
|
-
import {
|
|
8
|
+
import { DATE_SELECTION_VALUES, DEFAULT_DPT_REFRESH_INTERVAL_VALUE } from '../datapoints-table-widget.model';
|
|
8
9
|
import { DatapointsTableService } from '../datapoints-table.service';
|
|
9
10
|
import { DateRangePickerComponent } from '../date-range-picker.component';
|
|
10
11
|
import { DatapointsReloadComponent } from './datapoints-reload/datapoints-reload.component';
|
|
11
12
|
import { DatapointsTableViewService } from './datapoints-table-view.service';
|
|
12
13
|
import { DatapointsTableComponent } from './datapoints-table/datapoints-table.component';
|
|
13
14
|
import * as i0 from "@angular/core";
|
|
14
|
-
import * as i1 from "
|
|
15
|
-
import * as i2 from "
|
|
16
|
-
import * as i3 from "
|
|
17
|
-
import * as i4 from "@
|
|
18
|
-
import * as i5 from "@
|
|
15
|
+
import * as i1 from "@c8y/ngx-components/datapoints-export-selector";
|
|
16
|
+
import * as i2 from "../datapoints-table.service";
|
|
17
|
+
import * as i3 from "./datapoints-table-view.service";
|
|
18
|
+
import * as i4 from "@angular/forms";
|
|
19
|
+
import * as i5 from "@ngx-translate/core";
|
|
20
|
+
import * as i6 from "@angular/common";
|
|
19
21
|
export class DatapointsTableViewWidgetComponent {
|
|
20
|
-
constructor(datapointsTableConfigService, datapointsTableViewService, formBuilder, translateService) {
|
|
22
|
+
constructor(dataFetchingService, datapointsTableConfigService, datapointsTableViewService, formBuilder, translateService) {
|
|
23
|
+
this.dataFetchingService = dataFetchingService;
|
|
21
24
|
this.datapointsTableConfigService = datapointsTableConfigService;
|
|
22
25
|
this.datapointsTableViewService = datapointsTableViewService;
|
|
23
26
|
this.formBuilder = formBuilder;
|
|
@@ -56,9 +59,15 @@ export class DatapointsTableViewWidgetComponent {
|
|
|
56
59
|
// this.handleGlobalTimeContextSettings();
|
|
57
60
|
// }
|
|
58
61
|
// Condition will be removed in MTM-61920
|
|
62
|
+
// Dashboard context is temporary not supported in the new implementation
|
|
59
63
|
if (this.config.widgetInstanceGlobalTimeContext) {
|
|
60
64
|
this.config.widgetInstanceGlobalTimeContext = false;
|
|
61
65
|
}
|
|
66
|
+
// Condition will be removed in MTM-61920
|
|
67
|
+
// Dashboard context is temporary not supported in the new implementation
|
|
68
|
+
if (this.config['globalDateSelector'] === 'dashboard_context') {
|
|
69
|
+
this.config['globalDateSelector'] = DATE_SELECTION_VALUES.config;
|
|
70
|
+
}
|
|
62
71
|
this.setScrollingSubscription();
|
|
63
72
|
const isLegacyWidgetRealtimeActive = this.config.realtime &&
|
|
64
73
|
!this.config.decimalPlaces &&
|
|
@@ -67,35 +76,24 @@ export class DatapointsTableViewWidgetComponent {
|
|
|
67
76
|
if (isLegacyWidgetRealtimeActive) {
|
|
68
77
|
this.setDefaultRefreshRelatedProperties();
|
|
69
78
|
}
|
|
70
|
-
if (
|
|
71
|
-
/**
|
|
72
|
-
* Fix for legacy widget bug.
|
|
73
|
-
* When new legacy widget is created and saved
|
|
74
|
-
* then interval value in a config would stay null until interval is manually changed
|
|
75
|
-
* and saved again.
|
|
76
|
-
* Bug was introduced post 1018.0.164 version of UI.
|
|
77
|
-
*/
|
|
78
|
-
this.config.interval = 'hours';
|
|
79
|
-
}
|
|
80
|
-
if (this.config.interval !== TIME_RANGE_INTERVAL_UNITS_VALUES.custom) {
|
|
79
|
+
if (this.config.interval !== INTERVAL_VALUES.custom) {
|
|
81
80
|
this.recalculateIntervalToMatchFromNowDate();
|
|
82
81
|
}
|
|
83
82
|
if (this.config.displayDateSelection) {
|
|
84
83
|
this.prepareDateRangeForm();
|
|
85
84
|
}
|
|
86
85
|
await this.prepareTableData();
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
// };
|
|
86
|
+
this.exportConfig = {
|
|
87
|
+
aggregation: this.config.aggregation,
|
|
88
|
+
dateFrom: this.config.dateFrom,
|
|
89
|
+
dateTo: this.config.dateTo,
|
|
90
|
+
datapointDetails: this.activeDatapoints.map(({ __target, fragment, series }) => ({
|
|
91
|
+
deviceName: __target.name,
|
|
92
|
+
source: __target.id,
|
|
93
|
+
valueFragmentSeries: series,
|
|
94
|
+
valueFragmentType: fragment
|
|
95
|
+
}))
|
|
96
|
+
};
|
|
99
97
|
}
|
|
100
98
|
ngOnDestroy() {
|
|
101
99
|
if (this.subscription) {
|
|
@@ -113,11 +111,7 @@ export class DatapointsTableViewWidgetComponent {
|
|
|
113
111
|
this.config.dateTo = data.dateTo;
|
|
114
112
|
}
|
|
115
113
|
this.prepareTableData();
|
|
116
|
-
|
|
117
|
-
// TODO-2: each manual/auto list reload should update exports config date range to sync current state of view with
|
|
118
|
-
// inital export config
|
|
119
|
-
// this.exportConfig.dateFrom = this.config.dateFrom;
|
|
120
|
-
// this.exportConfig.dateTo = this.config.dateTo;
|
|
114
|
+
this.updateExportConfigDateRange();
|
|
121
115
|
}
|
|
122
116
|
onExportModalOpen(isOpened) {
|
|
123
117
|
this.isExportModalOpen = isOpened;
|
|
@@ -129,12 +123,13 @@ export class DatapointsTableViewWidgetComponent {
|
|
|
129
123
|
const dateRange = this.datapointsTableViewService.prepareTimeRange(this.config.interval, this.config.dateFrom, this.config.dateTo);
|
|
130
124
|
this.config.dateFrom = dateRange.dateFrom;
|
|
131
125
|
this.config.dateTo = dateRange.dateTo;
|
|
126
|
+
this.updateExportConfigDateRange();
|
|
132
127
|
await this.prepareTableData(false);
|
|
133
128
|
this.onScrolling(false);
|
|
134
129
|
}
|
|
135
130
|
handleGlobalTimeContextSettings() {
|
|
136
|
-
this.config.dateFrom = this.
|
|
137
|
-
this.config.dateTo = this.
|
|
131
|
+
this.config.dateFrom = this.dataFetchingService.adjustDate(this.config.date[0], 0, false);
|
|
132
|
+
this.config.dateTo = this.dataFetchingService.adjustDate(this.config.date[1], 0, false);
|
|
138
133
|
if (this.config.realtime) {
|
|
139
134
|
this.setDefaultRefreshRelatedProperties();
|
|
140
135
|
}
|
|
@@ -154,7 +149,7 @@ export class DatapointsTableViewWidgetComponent {
|
|
|
154
149
|
}
|
|
155
150
|
setDefaultRefreshRelatedProperties() {
|
|
156
151
|
this.config.isAutoRefreshEnabled = true;
|
|
157
|
-
this.config.refreshInterval =
|
|
152
|
+
this.config.refreshInterval = DEFAULT_DPT_REFRESH_INTERVAL_VALUE;
|
|
158
153
|
}
|
|
159
154
|
recalculateIntervalToMatchFromNowDate() {
|
|
160
155
|
if (this.config.widgetInstanceGlobalTimeContext) {
|
|
@@ -259,24 +254,35 @@ export class DatapointsTableViewWidgetComponent {
|
|
|
259
254
|
</div>
|
|
260
255
|
`;
|
|
261
256
|
}
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
257
|
+
updateExportConfigDateRange() {
|
|
258
|
+
this.config.dateTo = this.adjustTargetDateBasedOnConditionTime(this.config.dateFrom, this.config.dateTo);
|
|
259
|
+
this.config.dateFrom = this.adjustTargetDateBasedOnConditionTime(this.config.dateTo, this.config.dateFrom);
|
|
260
|
+
this.syncExportConfigDates();
|
|
261
|
+
}
|
|
262
|
+
adjustTargetDateBasedOnConditionTime(conditionDate, targetDate) {
|
|
263
|
+
if (this.datapointsTableViewService.hasSecondsAndMillisecondsEqualZero(conditionDate)) {
|
|
264
|
+
return this.dataFetchingService.adjustDate(targetDate, 0, true);
|
|
265
|
+
}
|
|
266
|
+
return targetDate;
|
|
267
|
+
}
|
|
268
|
+
syncExportConfigDates() {
|
|
269
|
+
this.exportConfig.dateFrom = this.config.dateFrom;
|
|
270
|
+
this.exportConfig.dateTo = this.config.dateTo;
|
|
271
|
+
}
|
|
272
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DatapointsTableViewWidgetComponent, deps: [{ token: i1.DataFetchingService }, { token: i2.DatapointsTableService }, { token: i3.DatapointsTableViewService }, { token: i4.FormBuilder }, { token: i5.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
273
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: DatapointsTableViewWidgetComponent, isStandalone: true, selector: "c8y-datapoints-table-view", inputs: { config: "config" }, host: { classAttribute: "d-col fit-h" }, ngImport: i0, template: "<div class=\"d-flex gap-16 p-l-16 p-r-16 flex-wrap\">\n <ng-container *ngIf=\"config.displayDateSelection\">\n <form [formGroup]=\"formGroup\">\n <c8y-date-range-picker\n class=\"d-contents\"\n [isEmittingDateChange]=\"true\"\n [showLabel]=\"true\"\n (updatedDate)=\"onDateChange($event)\"\n ></c8y-date-range-picker>\n </form>\n </ng-container>\n <ng-container *ngIf=\"config.datapoints.length > 0\">\n <c8y-datapoints-reload\n class=\"d-contents\"\n [isAutoRefreshEnabled]=\"config.isAutoRefreshEnabled\"\n [refreshInterval]=\"config.refreshInterval\"\n [isDisabled]=\"isDisabled\"\n [isLoading]=\"isLoading\"\n [isScrolling]=\"isScrolling()\"\n [isExportModalOpen]=\"isExportModalOpen\"\n (onCountdownEnded)=\"onCountdownEnded()\"\n ></c8y-datapoints-reload>\n </ng-container>\n <c8y-datapoints-export-selector\n class=\"d-contents\"\n [exportConfig]=\"exportConfig\"\n (isOpen)=\"onExportModalOpen($event)\"\n ></c8y-datapoints-export-selector>\n</div>\n<ng-container *ngIf=\"devicesColumnHeaders\">\n <c8y-datapoints-table\n [aggregationType]=\"config.aggregation\"\n [datapointsTableItems]=\"datapointsTableItems\"\n [decimalPlaces]=\"config.decimalPlaces\"\n [devicesColumnHeaders]=\"devicesColumnHeaders\"\n [hasMultipleDatapoints]=\"hasMultipleDatapoints\"\n [isLoading]=\"isLoading()\"\n [seriesWithoutPermissionToReadCount]=\"seriesWithoutPermissionToRead?.length\"\n (isScrolling)=\"onScrolling($event)\"\n ></c8y-datapoints-table>\n</ng-container>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DatapointsExportSelectorComponent, selector: "c8y-datapoints-export-selector", inputs: ["exportConfig"], outputs: ["isOpen"] }, { kind: "component", type: DatapointsReloadComponent, selector: "c8y-datapoints-reload", inputs: ["isAutoRefreshEnabled", "isDisabled", "isLoading", "isScrolling", "isExportModalOpen", "refreshInterval"], outputs: ["onCountdownEnded"] }, { kind: "component", type: DatapointsTableComponent, selector: "c8y-datapoints-table", inputs: ["aggregationType", "datapointsTableItems", "devicesColumnHeaders", "decimalPlaces", "hasMultipleDatapoints", "isLoading", "seriesWithoutPermissionToReadCount"], outputs: ["isScrolling"] }, { kind: "component", type: DateRangePickerComponent, selector: "c8y-date-range-picker", inputs: ["isEmittingDateChange", "showLabel"], outputs: ["updatedDate"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] }); }
|
|
267
274
|
}
|
|
268
275
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DatapointsTableViewWidgetComponent, decorators: [{
|
|
269
276
|
type: Component,
|
|
270
277
|
args: [{ selector: 'c8y-datapoints-table-view', host: { class: 'd-col fit-h' }, standalone: true, imports: [
|
|
271
278
|
CommonModule,
|
|
272
|
-
|
|
273
|
-
// DatapointsExportSelectorComponent,
|
|
279
|
+
DatapointsExportSelectorComponent,
|
|
274
280
|
DatapointsReloadComponent,
|
|
275
281
|
DatapointsTableComponent,
|
|
276
282
|
DateRangePickerComponent,
|
|
277
283
|
ReactiveFormsModule
|
|
278
|
-
], template: "<div class=\"d-flex gap-16 p-l-16 p-r-16 flex-wrap\">\n <ng-container *ngIf=\"config.displayDateSelection\">\n <form [formGroup]=\"formGroup\">\n <c8y-date-range-picker\n class=\"d-contents\"\n [isEmittingDateChange]=\"true\"\n [showLabel]=\"true\"\n (updatedDate)=\"onDateChange($event)\"\n ></c8y-date-range-picker>\n </form>\n </ng-container>\n
|
|
279
|
-
}], ctorParameters: () => [{ type: i1.
|
|
284
|
+
], template: "<div class=\"d-flex gap-16 p-l-16 p-r-16 flex-wrap\">\n <ng-container *ngIf=\"config.displayDateSelection\">\n <form [formGroup]=\"formGroup\">\n <c8y-date-range-picker\n class=\"d-contents\"\n [isEmittingDateChange]=\"true\"\n [showLabel]=\"true\"\n (updatedDate)=\"onDateChange($event)\"\n ></c8y-date-range-picker>\n </form>\n </ng-container>\n <ng-container *ngIf=\"config.datapoints.length > 0\">\n <c8y-datapoints-reload\n class=\"d-contents\"\n [isAutoRefreshEnabled]=\"config.isAutoRefreshEnabled\"\n [refreshInterval]=\"config.refreshInterval\"\n [isDisabled]=\"isDisabled\"\n [isLoading]=\"isLoading\"\n [isScrolling]=\"isScrolling()\"\n [isExportModalOpen]=\"isExportModalOpen\"\n (onCountdownEnded)=\"onCountdownEnded()\"\n ></c8y-datapoints-reload>\n </ng-container>\n <c8y-datapoints-export-selector\n class=\"d-contents\"\n [exportConfig]=\"exportConfig\"\n (isOpen)=\"onExportModalOpen($event)\"\n ></c8y-datapoints-export-selector>\n</div>\n<ng-container *ngIf=\"devicesColumnHeaders\">\n <c8y-datapoints-table\n [aggregationType]=\"config.aggregation\"\n [datapointsTableItems]=\"datapointsTableItems\"\n [decimalPlaces]=\"config.decimalPlaces\"\n [devicesColumnHeaders]=\"devicesColumnHeaders\"\n [hasMultipleDatapoints]=\"hasMultipleDatapoints\"\n [isLoading]=\"isLoading()\"\n [seriesWithoutPermissionToReadCount]=\"seriesWithoutPermissionToRead?.length\"\n (isScrolling)=\"onScrolling($event)\"\n ></c8y-datapoints-table>\n</ng-container>\n" }]
|
|
285
|
+
}], ctorParameters: () => [{ type: i1.DataFetchingService }, { type: i2.DatapointsTableService }, { type: i3.DatapointsTableViewService }, { type: i4.FormBuilder }, { type: i5.TranslateService }], propDecorators: { config: [{
|
|
280
286
|
type: Input
|
|
281
287
|
}] } });
|
|
282
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50cy10YWJsZS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3dpZGdldHMvaW1wbGVtZW50YXRpb25zL2RhdGFwb2ludHMtdGFibGUvZGF0YXBvaW50cy10YWJsZS12aWV3L2RhdGFwb2ludHMtdGFibGUtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi93aWRnZXRzL2ltcGxlbWVudGF0aW9ucy9kYXRhcG9pbnRzLXRhYmxlL2RhdGFwb2ludHMtdGFibGUtdmlldy9kYXRhcG9pbnRzLXRhYmxlLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFDTCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUVyQixPQUFPLEVBQ1IsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQU92RCxPQUFPLEVBR0wsZ0NBQWdDLEVBQ2hDLGtCQUFrQixFQUNuQixNQUFNLGdEQUFnRCxDQUFDO0FBQ3hELE9BQU8sRUFBRSxPQUFPLEVBQWdCLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRCxPQUFPLEVBQ0wsdUJBQXVCLEVBTXhCLE1BQU0sa0NBQWtDLENBQUM7QUFDMUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDMUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDNUYsT0FBTyxF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O2FBQzFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVaLE9BQU87O2FBRUUsV0FBVzs7WUFFWixhQUFhOzs7O0tBSXBCLENBQUM7SUFDSixDQUFDOzhHQXpYVSxrQ0FBa0M7a0dBQWxDLGtDQUFrQyw0SkNyRC9DLGsxREE0Q0EsMkNEQUksWUFBWTtnQkFDWixnRkFBZ0Y7Z0JBQ2hGLHFDQUFxQztnQkFDckMseUJBQXlCLHFOQUN6Qix3QkFBd0IscVFBQ3hCLHdCQUF3QiwwSUFDeEIsbUJBQW1COzsyRkFHVixrQ0FBa0M7a0JBZjlDLFNBQVM7K0JBQ0UsMkJBQTJCLFFBRS9CLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxjQUNsQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixnRkFBZ0Y7d0JBQ2hGLHFDQUFxQzt3QkFDckMseUJBQXlCO3dCQUN6Qix3QkFBd0I7d0JBQ3hCLHdCQUF3Qjt3QkFDeEIsbUJBQW1CO3FCQUNwQjs2TEFNUSxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBDb21tb25Nb2R1bGUsXG4gIERpc21pc3NBbGVydFN0cmF0ZWd5LFxuICBEeW5hbWljQ29tcG9uZW50QWxlcnQsXG4gIER5bmFtaWNDb21wb25lbnRBbGVydEFnZ3JlZ2F0b3IsXG4gIGdldHRleHRcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBLUElEZXRhaWxzIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9kYXRhcG9pbnQtc2VsZWN0b3InO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuLy8gVE9ETzogdGVtcG9yYXJpbHkgY29tbWVudGVkIG91dCwgd2lsbCBiZSBlbmFibGVkIHdoZW4gTVRNLTU5Njg5IGlzIGludGVncmF0ZWRcbi8vIGltcG9ydCB7XG4vLyAgIERhdGFwb2ludHNFeHBvcnRTZWxlY3RvckNvbXBvbmVudCxcbi8vICAgRXhwb3J0Q29uZmlnXG4vLyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3InO1xuaW1wb3J0IHsgSVNlcmllcyB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIERhdGFwb2ludHNWYWx1ZXNEYXRhTWFwLFxuICBTb3VyY2VJZCxcbiAgVElNRV9SQU5HRV9JTlRFUlZBTF9VTklUU19WQUxVRVMsXG4gIGRhdGVSYW5nZVZhbGlkYXRvclxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2RhdGFwb2ludHMtZXhwb3J0LXNlbGVjdG9yJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBERUZBVUxUX0NPVU5URE9XTl9WQUxVRSxcbiAgRGF0YXBvaW50VGFibGVJdGVtLFxuICBEYXRhcG9pbnRXaXRoVmFsdWVzLFxuICBEYXRhcG9pbnRzVGFibGVDb25maWcsXG4gIEdyb3VwZWREYXRhcG9pbnRUYWJsZUl0ZW0sXG4gIFRhYmxlQ29sdW1uSGVhZGVyXG59IGZyb20gJy4uL2RhdGFwb2ludHMtdGFibGUtd2lkZ2V0Lm1vZGVsJztcbmltcG9ydCB7IERhdGFwb2ludHNUYWJsZVNlcnZpY2UgfSBmcm9tICcuLi9kYXRhcG9pbnRzLXRhYmxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGFwb2ludHNSZWxvYWRDb21wb25lbnQgfSBmcm9tICcuL2RhdGFwb2ludHMtcmVsb2FkL2RhdGFwb2ludHMtcmVsb2FkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRhcG9pbnRzVGFibGVWaWV3U2VydmljZSB9IGZyb20gJy4vZGF0YXBvaW50cy10YWJsZS12aWV3LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YXBvaW50c1RhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRhcG9pbnRzLXRhYmxlL2RhdGFwb2ludHMtdGFibGUuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRhdGFwb2ludHMtdGFibGUtdmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhcG9pbnRzLXRhYmxlLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBob3N0OiB7IGNsYXNzOiAnZC1jb2wgZml0LWgnIH0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgLy8gVE9ETzogdGVtcG9yYXJpbHkgY29tbWVudGVkIG91dCwgd2lsbCBiZSBlbmFibGVkIHdoZW4gTVRNLTU5Njg5IGlzIGludGVncmF0ZWRcbiAgICAvLyBEYXRhcG9pbnRzRXhwb3J0U2VsZWN0b3JDb21wb25lbnQsXG4gICAgRGF0YXBvaW50c1JlbG9hZENvbXBvbmVudCxcbiAgICBEYXRhcG9pbnRzVGFibGVDb21wb25lbnQsXG4gICAgRGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50LFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRhcG9pbnRzVGFibGVWaWV3V2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogIERhdGEgcG9pbnRzIHRhYmxlIHdpZGdldCBjb25maWcuXG4gICAqL1xuICBASW5wdXQoKSBjb25maWc6IERhdGFwb2ludHNUYWJsZUNvbmZpZztcbiAgLy8gY29uZmlnOiBEYXRhcG9pbnRzVGFibGVDb25maWc7XG5cbiAgYWxlcnRzOiBEeW5hbWljQ29tcG9uZW50QWxlcnRBZ2dyZWdhdG9yO1xuXG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIHRoZSBkYXRhIHBvaW50cyB3aGVyZSBfX2FjdGl2ZSBwcm9wZXJ0eSBpcyBzZXQgdG8gdHJ1ZS5cbiAgICovXG4gIGFjdGl2ZURhdGFwb2ludHM6IEtQSURldGFpbHNbXSA9IFtdO1xuICAvKipcbiAgICogQW4gYXJyYXkgb2Ygb2JqZWN0cyByZXByZXNlbnRpbmcgZGF0YXBvaW50cyB3aXRoIHRoZWlyIGNvcnJlc3BvbmRpbmcgdmFsdWVzLlxuICAgKiBVc2VkIHRvIHBvcHVsYXRlIHRoZSBDU1YvRXhjZWwgZmlsZSB3aXRoIGRhdGEuXG4gICAqL1xuICBkYXRhcG9pbnRzV2l0aFZhbHVlczogRGF0YXBvaW50V2l0aFZhbHVlc1tdO1xuICAvKipcbiAgICogQW4gYXJyYXkgb2YgYEdyb3VwZWREYXRhcG9pbnRUYWJsZUl0ZW1gIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZSBkYXRhcG9pbnRzIHRhYmxlIGl0ZW1zLlxuICAgKiBVc2VkIHRvIHBvcHVsYXRlIHRoZSB0YWJsZSB3aXRoIGRhdGEuXG4gICAqL1xuICBkYXRhcG9pbnRzVGFibGVJdGVtczogR3JvdXBlZERhdGFwb2ludFRhYmxlSXRlbVtdID0gW107XG5cbiAgZGV2aWNlc0NvbHVtbkhlYWRlcnM6IFRhYmxlQ29sdW1uSGVhZGVyW107XG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIGEgY29uZmlndXJhdGlvbiBvcHRpb25zIHVzZWQgYnkgYSBjOHktZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3IuXG4gICAqL1xuICAvLyBUT0RPOiB0ZW1wb3JhcmlseSBjb21tZW50ZWQgb3V0LCB3aWxsIGJlIGVuYWJsZWQgd2hlbiBNVE0tNTk2ODkgaXMgaW50ZWdyYXRlZFxuICAvLyBleHBvcnRDb25maWc6IEV4cG9ydENvbmZpZztcblxuICBmb3JtR3JvdXA6IFJldHVyblR5cGU8RGF0YXBvaW50c1RhYmxlVmlld1dpZGdldENvbXBvbmVudFsnY3JlYXRlRm9ybSddPjtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgZGF0YSBwb2ludC5cbiAgICogSWYgaXMgdHJ1ZSwgdGhlbiBhIGNvbHVtbiAnRGV2aWNlJyB3aWxsIGJlIGRpc3BsYXllZCBpbiB0aGUgdGFibGUuXG4gICAqL1xuICBoYXNNdWx0aXBsZURhdGFwb2ludHM6IGJvb2xlYW47XG5cbiAgaXNEaXNhYmxlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgY29tcG9uZW50IGlzIGluIHRoZSBpbml0aWFsIHJlcXVlc3Qgc3RhdGVcbiAgICogd2hlcmUgZGF0YSBmb3IgYSB0YWJsZSBzdHJ1Y3R1cmUgaXMgYmVpbmcgcHJlcGFyZWQuXG4gICAqL1xuICBpc0luaXRpYWxSZXF1ZXN0ID0gdHJ1ZTtcbiAgLyoqXG4gICAqIEN1cnJlbnQgaXNMb2FkaW5nIHN0YXRlLiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgZGF0YSBpcyBiZWluZyBsb2FkZWQuXG4gICAqL1xuICBpc0xvYWRpbmcgPSBzaWduYWwodHJ1ZSk7XG5cbiAgaXNFeHBvcnRNb2RhbE9wZW4gPSBmYWxzZTtcblxuICBpc1Njcm9sbGluZyA9IHNpZ25hbChmYWxzZSk7XG5cbiAgc2VyaWVzV2l0aG91dFBlcm1pc3Npb25Ub1JlYWQ6IHsga2V5OiBTb3VyY2VJZDsgdmFsdWU6IHN0cmluZ1tdIH1bXTtcblxuICBwcml2YXRlIHNjcm9sbGluZ1N1YmplY3QkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgYWxlcnQgaGFzIGFscmVhZHkgYmVlbiBkaXNwbGF5ZWQgYW5kIGNhbiBiZSBkaXNtaXNzZWQuXG4gICAqIFRoZSBtZXNzYWdlIGlzIG9ubHkgZGlzcGxheWVkIHdoZW4gYSBjb21wb25lbnQgaXMgaW5pdGlhbGl6ZWQuXG4gICAqL1xuICBwcml2YXRlIGlzTWlzc2luZ0FueVBlcm1pc3Npb25BbGVydFNob3duID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkYXRhcG9pbnRzVGFibGVDb25maWdTZXJ2aWNlOiBEYXRhcG9pbnRzVGFibGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGF0YXBvaW50c1RhYmxlVmlld1NlcnZpY2U6IERhdGFwb2ludHNUYWJsZVZpZXdTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gV2lsbCBiZSB1bmNvbW1lbnRlZCBpbiBNVE0tNjE5MjBcbiAgICAvLyBpZiAodGhpcy5jb25maWcud2lkZ2V0SW5zdGFuY2VHbG9iYWxUaW1lQ29udGV4dCkge1xuICAgIC8vICAgdGhpcy5oYW5kbGVHbG9iYWxUaW1lQ29udGV4dFNldHRpbmdzKCk7XG4gICAgLy8gfVxuXG4gICAgLy8gQ29uZGl0aW9uIHdpbGwgYmUgcmVtb3ZlZCBpbiBNVE0tNjE5MjBcbiAgICBpZiAodGhpcy5jb25maWcud2lkZ2V0SW5zdGFuY2VHbG9iYWxUaW1lQ29udGV4dCkge1xuICAgICAgdGhpcy5jb25maWcud2lkZ2V0SW5zdGFuY2VHbG9iYWxUaW1lQ29udGV4dCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMuc2V0U2Nyb2xsaW5nU3Vic2NyaXB0aW9uKCk7XG5cbiAgICBjb25zdCBpc0xlZ2FjeVdpZGdldFJlYWx0aW1lQWN0aXZlID1cbiAgICAgIHRoaXMuY29uZmlnLnJlYWx0aW1lICYmXG4gICAgICAhdGhpcy5jb25maWcuZGVjaW1hbFBsYWNlcyAmJlxuICAgICAgIXRoaXMuY29uZmlnLnJlZnJlc2hJbnRlcnZhbCAmJlxuICAgICAgIXRoaXMuY29uZmlnLmlzQXV0b1JlZnJlc2hFbmFibGVkO1xuXG4gICAgaWYgKGlzTGVnYWN5V2lkZ2V0UmVhbHRpbWVBY3RpdmUpIHtcbiAgICAgIHRoaXMuc2V0RGVmYXVsdFJlZnJlc2hSZWxhdGVkUHJvcGVydGllcygpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5jb25maWcuaW50ZXJ2YWwpIHtcbiAgICAgIC8qKlxuICAgICAgICogRml4IGZvciBsZWdhY3kgd2lkZ2V0IGJ1Zy5cbiAgICAgICAqIFdoZW4gbmV3IGxlZ2FjeSB3aWRnZXQgaXMgY3JlYXRlZCBhbmQgc2F2ZWRcbiAgICAgICAqIHRoZW4gaW50ZXJ2YWwgdmFsdWUgaW4gYSBjb25maWcgd291bGQgc3RheSBudWxsIHVudGlsIGludGVydmFsIGlzIG1hbnVhbGx5IGNoYW5nZWRcbiAgICAgICAqIGFuZCBzYXZlZCBhZ2Fpbi5cbiAgICAgICAqIEJ1ZyB3YXMgaW50cm9kdWNlZCBwb3N0IDEwMTguMC4xNjQgdmVyc2lvbiBvZiBVSS5cbiAgICAgICAqL1xuICAgICAgdGhpcy5jb25maWcuaW50ZXJ2YWwgPSAnaG91cnMnO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZy5pbnRlcnZhbCAhPT0gVElNRV9SQU5HRV9JTlRFUlZBTF9VTklUU19WQUxVRVMuY3VzdG9tKSB7XG4gICAgICB0aGlzLnJlY2FsY3VsYXRlSW50ZXJ2YWxUb01hdGNoRnJvbU5vd0RhdGUoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWcuZGlzcGxheURhdGVTZWxlY3Rpb24pIHtcbiAgICAgIHRoaXMucHJlcGFyZURhdGVSYW5nZUZvcm0oKTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLnByZXBhcmVUYWJsZURhdGEoKTtcblxuICAgIC8vIFRPRE86IHRlbXBvcmFyaWx5IGNvbW1lbnRlZCBvdXQsIHdpbGwgYmUgZW5hYmxlZCB3aGVuIE1UTS01OTY4OSBpcyBpbnRlZ3JhdGVkXG4gICAgLy8gdGhpcy5leHBvcnRDb25maWcgPSB7XG4gICAgLy8gICBhZ2dyZWdhdGlvbjogdGhpcy5jb25maWcuYWdncmVnYXRpb24sXG4gICAgLy8gICBkYXRlRnJvbTogdGhpcy5jb25maWcuZGF0ZUZyb20sXG4gICAgLy8gICBkYXRlVG86IHRoaXMuY29uZmlnLmRhdGVUbyxcbiAgICAvLyAgIGRhdGFwb2ludERldGFpbHM6IHRoaXMuYWN0aXZlRGF0YXBvaW50cy5tYXAoKHsgX190YXJnZXQsIGZyYWdtZW50LCBzZXJpZXMgfSkgPT4gKHtcbiAgICAvLyAgICAgZGV2aWNlTmFtZTogX190YXJnZXQubmFtZSxcbiAgICAvLyAgICAgc291cmNlOiBfX3RhcmdldC5pZCxcbiAgICAvLyAgICAgdmFsdWVGcmFnbWVudFNlcmllczogc2VyaWVzLFxuICAgIC8vICAgICB2YWx1ZUZyYWdtZW50VHlwZTogZnJhZ21lbnRcbiAgICAvLyAgIH0pKVxuICAgIC8vIH07XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgb25EYXRlQ2hhbmdlKGRhdGE6IHsgZGF0ZUZyb20/OiBzdHJpbmcgfCBudWxsOyBkYXRlVG8/OiBzdHJpbmcgfCBudWxsIH0pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb3JtR3JvdXAuaW52YWxpZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChkYXRhLmRhdGVGcm9tKSB7XG4gICAgICB0aGlzLmNvbmZpZy5kYXRlRnJvbSA9IGRhdGEuZGF0ZUZyb207XG4gICAgfVxuICAgIGlmIChkYXRhLmRhdGVUbykge1xuICAgICAgdGhpcy5jb25maWcuZGF0ZVRvID0gZGF0YS5kYXRlVG87XG4gICAgfVxuICAgIHRoaXMucHJlcGFyZVRhYmxlRGF0YSgpO1xuXG4gICAgLy8gVE9ETzogdGVtcG9yYXJpbHkgY29tbWVudGVkIG91dCwgd2lsbCBiZSBlbmFibGVkIHdoZW4gTVRNLTU5Njg5IGlzIGludGVncmF0ZWRcbiAgICAvLyBUT0RPLTI6IGVhY2ggbWFudWFsL2F1dG8gbGlzdCByZWxvYWQgc2hvdWxkIHVwZGF0ZSBleHBvcnRzIGNvbmZpZyBkYXRlIHJhbmdlIHRvIHN5bmMgY3VycmVudCBzdGF0ZSBvZiB2aWV3IHdpdGhcbiAgICAvLyBpbml0YWwgZXhwb3J0IGNvbmZpZ1xuICAgIC8vIHRoaXMuZXhwb3J0Q29uZmlnLmRhdGVGcm9tID0gdGhpcy5jb25maWcuZGF0ZUZyb207XG4gICAgLy8gdGhpcy5leHBvcnRDb25maWcuZGF0ZVRvID0gdGhpcy5jb25maWcuZGF0ZVRvO1xuICB9XG5cbiAgb25FeHBvcnRNb2RhbE9wZW4oaXNPcGVuZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmlzRXhwb3J0TW9kYWxPcGVuID0gaXNPcGVuZWQ7XG4gIH1cblxuICBvblNjcm9sbGluZyh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc2Nyb2xsaW5nU3ViamVjdCQubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBhc3luYyBvbkNvdW50ZG93bkVuZGVkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGRhdGVSYW5nZSA9IHRoaXMuZGF0YXBvaW50c1RhYmxlVmlld1NlcnZpY2UucHJlcGFyZVRpbWVSYW5nZShcbiAgICAgIHRoaXMuY29uZmlnLmludGVydmFsLFxuICAgICAgdGhpcy5jb25maWcuZGF0ZUZyb20sXG4gICAgICB0aGlzLmNvbmZpZy5kYXRlVG9cbiAgICApO1xuXG4gICAgdGhpcy5jb25maWcuZGF0ZUZyb20gPSBkYXRlUmFuZ2UuZGF0ZUZyb207XG4gICAgdGhpcy5jb25maWcuZGF0ZVRvID0gZGF0ZVJhbmdlLmRhdGVUbztcblxuICAgIGF3YWl0IHRoaXMucHJlcGFyZVRhYmxlRGF0YShmYWxzZSk7XG5cbiAgICB0aGlzLm9uU2Nyb2xsaW5nKGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlR2xvYmFsVGltZUNvbnRleHRTZXR0aW5ncygpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZy5kYXRlRnJvbSA9IHRoaXMuZGF0YXBvaW50c1RhYmxlVmlld1NlcnZpY2UuYWRqdXN0RGF0ZShcbiAgICAgIHRoaXMuY29uZmlnLmRhdGVbMF0sXG4gICAgICAwLFxuICAgICAgZmFsc2VcbiAgICApO1xuICAgIHRoaXMuY29uZmlnLmRhdGVUbyA9IHRoaXMuZGF0YXBvaW50c1RhYmxlVmlld1NlcnZpY2UuYWRqdXN0RGF0ZSh0aGlzLmNvbmZpZy5kYXRlWzFdLCAwLCBmYWxzZSk7XG4gICAgaWYgKHRoaXMuY29uZmlnLnJlYWx0aW1lKSB7XG4gICAgICB0aGlzLnNldERlZmF1bHRSZWZyZXNoUmVsYXRlZFByb3BlcnRpZXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb25maWcuaXNBdXRvUmVmcmVzaEVuYWJsZWQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB1cCB0aGUgc2Nyb2xsaW5nIHN1YnNjcmlwdGlvbi5cbiAgICpcbiAgICogRW5zdXJlcyBzaW1pbGFyIFVYIGFzIGluIHRoZSBhbGFybXMgY291bnRkb3duLXBhdXNlIGxvZ2ljLlxuICAgKi9cbiAgcHJpdmF0ZSBzZXRTY3JvbGxpbmdTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnNjcm9sbGluZ1N1YmplY3QkXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMzAwKSlcbiAgICAgIC5zdWJzY3JpYmUodmFsdWUgPT4gdGhpcy5pc1Njcm9sbGluZy5zZXQodmFsdWUpKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RGVmYXVsdFJlZnJlc2hSZWxhdGVkUHJvcGVydGllcygpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZy5pc0F1dG9SZWZyZXNoRW5hYmxlZCA9IHRydWU7XG4gICAgdGhpcy5jb25maWcucmVmcmVzaEludGVydmFsID0gREVGQVVMVF9DT1VOVERPV05fVkFMVUU7XG4gIH1cblxuICBwcml2YXRlIHJlY2FsY3VsYXRlSW50ZXJ2YWxUb01hdGNoRnJvbU5vd0RhdGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29uZmlnLndpZGdldEluc3RhbmNlR2xvYmFsVGltZUNvbnRleHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7IGRhdGVGcm9tLCBkYXRlVG8gfSA9IHRoaXMuZGF0YXBvaW50c1RhYmxlQ29uZmlnU2VydmljZS5jYWxjdWxhdGVEYXRlUmFuZ2UoXG4gICAgICB0aGlzLmNvbmZpZy5pbnRlcnZhbFxuICAgICk7XG4gICAgdGhpcy5jb25maWcuZGF0ZUZyb20gPSBkYXRlRnJvbTtcbiAgICB0aGlzLmNvbmZpZy5kYXRlVG8gPSBkYXRlVG87XG4gIH1cblxuICBwcml2YXRlIHByZXBhcmVEYXRlUmFuZ2VGb3JtKCkge1xuICAgIHRoaXMuZm9ybUdyb3VwID0gdGhpcy5jcmVhdGVGb3JtKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUZvcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoXG4gICAgICB7XG4gICAgICAgIGRhdGVGcm9tOiBuZXcgRm9ybUNvbnRyb2wodGhpcy5jb25maWcuZGF0ZUZyb20pLFxuICAgICAgICBkYXRlVG86IG5ldyBGb3JtQ29udHJvbCh0aGlzLmNvbmZpZy5kYXRlVG8pXG4gICAgICB9LFxuICAgICAgeyB2YWxpZGF0b3JzOiBkYXRlUmFuZ2VWYWxpZGF0b3IgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUHJlcGFyZXMgdGhlIHRhYmxlIGRhdGEgYnk6XG4gICAqIC0gZmlsdGVyaW5nIG91dCBpbmFjdGl2ZSBkYXRhIHBvaW50cyxcbiAgICogLSBjaGVja2luZyBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgZGV2aWNlcyBhcyBhIHNvdXJjZSBvZiBkYXRhIHBvaW50cyxcbiAgICogLSBnZXR0aW5nIHRoZSBjb2x1bW4gaGVhZGVycyBmb3IgZGV2aWNlcyxcbiAgICogLSBnZXR0aW5nIHRoZSBzZXJpZXMgZGF0YSBmb3IgYWN0aXZlIGRhdGEgcG9pbnRzIChBUEkgY2FsbCksXG4gICAqIC0gcHJlcGFyaW5nIGRhdGEgcG9pbnRzIHdpdGggdmFsdWVzIGxpc3QsXG4gICAqIC0gbWFwcGluZyBkYXRhIHBvaW50cyB3aXRoIHZhbHVlcyB0byBsaXN0IGl0ZW1zLFxuICAgKiAtIGdyb3VwaW5nIGRhdGEgcG9pbnRzIGJ5IGRhdGUgYW5kIGRldmljZSxcbiAgICogLSBzb3J0aW5nIGRhdGEgYnkgZGF0ZSBkZXNjZW5kaW5nLlxuICAgKlxuICAgKiBAcGFyYW0gcm91bmRTZWNvbmRzIC0gV2hldGhlciB0byByb3VuZCB0aGUgc2Vjb25kcyBvciBub3QuXG4gICAqICAgICAgICAgICAgICAgICAgICAgICBJZiB0cnVlLCB0aGUgc2Vjb25kcyB3aWxsIGJlIHJvdW5kZWQgdG8gMC5cbiAgICogICAgICAgICAgICAgICAgICAgICAgIElmIGZhbHNlLCB0aGUgc2Vjb25kcyB3aWxsIGJlIGRpc3BsYXllZCBhcyB0aGV5IGFyZS5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZVRhYmxlRGF0YShyb3VuZFNlY29uZHMgPSB0cnVlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xuXG4gICAgaWYgKHRoaXMuaXNJbml0aWFsUmVxdWVzdCkge1xuICAgICAgdGhpcy5hY3RpdmVEYXRhcG9pbnRzID0gdGhpcy5kYXRhcG9pbnRzVGFibGVWaWV3U2VydmljZS5maWx0ZXJPdXRJbmFjdGl2ZURhdGFwb2ludHMoXG4gICAgICAgIHRoaXMuY29uZmlnLmRhdGFwb2ludHNcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuaGFzTXVsdGlwbGVEYXRhcG9pbnRzID0gdGhpcy5kYXRhcG9pbnRzVGFibGVWaWV3U2VydmljZS5oYXNNdWx0aXBsZURhdGFwb2ludHMoXG4gICAgICAgIHRoaXMuYWN0aXZlRGF0YXBvaW50c1xuICAgICAgKTtcblxuICAgICAgdGhpcy5kZXZpY2VzQ29sdW1uSGVhZGVycyA9IHRoaXMuZGF0YXBvaW50c1RhYmxlVmlld1NlcnZpY2UuZ2V0Q29sdW1uSGVhZGVycyhcbiAgICAgICAgdGhpcy5hY3RpdmVEYXRhcG9pbnRzXG4gICAgICApO1xuXG4gICAgICB0aGlzLmlzSW5pdGlhbFJlcXVlc3QgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBhY3RpdmVEYXRhcG9pbnRzSWRzV2l0aFNlcmllczogRGF0YXBvaW50c1ZhbHVlc0RhdGFNYXAgPVxuICAgICAgdGhpcy5kYXRhcG9pbnRzVGFibGVWaWV3U2VydmljZS5ncm91cFNlcmllc0J5RGV2aWNlSWQodGhpcy5hY3RpdmVEYXRhcG9pbnRzKTtcblxuICAgIGNvbnN0IGFjdGl2ZURhdGFwb2ludHNTZXJpZXNEYXRhOiBNYXA8c3RyaW5nIHwgbnVtYmVyLCBJU2VyaWVzPiA9XG4gICAgICBhd2FpdCB0aGlzLmdldEFjdGl2ZURhdGFwb2ludHNTZXJpZXNEYXRhTWFwKFxuICAgICAgICBhY3RpdmVEYXRhcG9pbnRzSWRzV2l0aFNlcmllcyxcbiAgICAgICAgdGhpcy5jb25maWcsXG4gICAgICAgIHJvdW5kU2Vjb25kc1xuICAgICAgKTtcblxuICAgIHRoaXMuc2VyaWVzV2l0aG91dFBlcm1pc3Npb25Ub1JlYWQgPVxuICAgICAgdGhpcy5kYXRhcG9pbnRzVGFibGVWaWV3U2VydmljZS5nZXRTZXJpZXNXaXRob3V0UGVybWlzc2lvblRvUmVhZChcbiAgICAgICAgYWN0aXZlRGF0YXBvaW50c1Nlcmllc0RhdGEsXG4gICAgICAgIGFjdGl2ZURhdGFwb2ludHNJZHNXaXRoU2VyaWVzXG4gICAgICApO1xuXG4gICAgaWYgKFxuICAgICAgIXRoaXMuaXNNaXNzaW5nQW55UGVybWlzc2lvbkFsZXJ0U2hvd24gJiZcbiAgICAgIHRoaXMuc2VyaWVzV2l0aG91dFBlcm1pc3Npb25Ub1JlYWQ/Lmxlbmd0aCA+IDAgJiZcbiAgICAgIGFjdGl2ZURhdGFwb2ludHNTZXJpZXNEYXRhPy5zaXplXG4gICAgKSB7XG4gICAgICB0aGlzLmhhbmRsZU1pc3NpbmdBbnlQZXJtaXNzaW9uRXJyb3JNZXNzYWdlKCk7XG4gICAgICB0aGlzLmlzTWlzc2luZ0FueVBlcm1pc3Npb25BbGVydFNob3duID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIWFjdGl2ZURhdGFwb2ludHNTZXJpZXNEYXRhKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5kYXRhcG9pbnRzV2l0aFZhbHVlcyA9IHRoaXMuZGF0YXBvaW50c1RhYmxlVmlld1NlcnZpY2UuZ2V0RGF0YXBvaW50c1dpdGhWYWx1ZXMoXG4gICAgICB0aGlzLmFjdGl2ZURhdGFwb2ludHMsXG4gICAgICBhY3RpdmVEYXRhcG9pbnRzU2VyaWVzRGF0YVxuICAgICk7XG5cbiAgICBjb25zdCBkYXRhcG9pbnRzTGlzdEl0ZW1zOiBEYXRhcG9pbnRUYWJsZUl0ZW1bXSA9XG4gICAgICB0aGlzLmRhdGFwb2ludHNUYWJsZVZpZXdTZXJ2aWNlLm1hcERhdGFwb2ludHNXaXRoVmFsdWVzVG9MaXN0KHRoaXMuZGF0YXBvaW50c1dpdGhWYWx1ZXMpO1xuXG4gICAgY29uc3QgZ3JvdXBlZERhdGFwb2ludHNMaXN0SXRlbXM6IEdyb3VwZWREYXRhcG9pbnRUYWJsZUl0ZW1bXSA9XG4gICAgICB0aGlzLmRhdGFwb2ludHNUYWJsZVZpZXdTZXJ2aWNlLmdyb3VwQnlEYXRlQW5kRGV2aWNlKFxuICAgICAgICBkYXRhcG9pbnRzTGlzdEl0ZW1zLFxuICAgICAgICB0aGlzLmRldmljZXNDb2x1bW5IZWFkZXJzXG4gICAgICApO1xuXG4gICAgdGhpcy5kYXRhcG9pbnRzVGFibGVJdGVtcyA9IHRoaXMuZGF0YXBvaW50c1RhYmxlVmlld1NlcnZpY2Uuc29ydERhdGFCeURhdGVEZXNjZW5kaW5nKFxuICAgICAgZ3JvdXBlZERhdGFwb2ludHNMaXN0SXRlbXNcbiAgICApO1xuXG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGFjdGl2ZSBkYXRhIHBvaW50cyBzZXJpZXMgZGF0YSBhbmQgcmV0dXJucyBpdCBhcyBhIG1hcC5cbiAgICpcbiAgICogSXQncyBhIHdyYXBwZXIgbWV0aG9kIHdpdGggdHJ5LWNhdGNoIGJsb2NrLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YXBvaW50c0lkc1dpdGhTZXJpZXMgLSBBIG1hcCBvZiBkYXRhIHBvaW50IElEcyB3aXRoIHRoZWlyIGFzc29jaWF0ZWQgc2VyaWVzLlxuICAgKiBAcGFyYW0gY29uZmlnIC0gVGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGRhdGEgcG9pbnRzIHRhYmxlLlxuICAgKiBAcGFyYW0gcm91bmRTZWNvbmRzIC0gV2hldGhlciB0byByb3VuZCB0aGUgc2Vjb25kcyBvciBub3QuXG4gICAqICAgICAgICAgICAgICAgICAgICAgICBJZiB0cnVlLCB0aGUgc2Vjb25kcyB3aWxsIGJlIHJvdW5kZWQgdG8gMC5cbiAgICogICAgICAgICAgICAgICAgICAgICAgIElmIGZhbHNlLCB0aGUgc2Vjb25kcyB3aWxsIGJlIGRpc3BsYXllZCBhcyB0aGV5IGFyZS5cbiAgICogQHJldHVybnMgQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBNYXAgb2JqZWN0IHdpdGggZGF0YSBwb2ludCBJRHMgYXMga2V5cyBhbmQgRGF0YU9iamVjdCBhcyB2YWx1ZXMuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGdldEFjdGl2ZURhdGFwb2ludHNTZXJpZXNEYXRhTWFwKFxuICAgIGRhdGFwb2ludHNJZHNXaXRoU2VyaWVzOiBEYXRhcG9pbnRzVmFsdWVzRGF0YU1hcCxcbiAgICBjb25maWc6IERhdGFwb2ludHNUYWJsZUNvbmZpZyxcbiAgICByb3VuZFNlY29uZHM6IGJvb2xlYW5cbiAgKTogUHJvbWlzZTxNYXA8c3RyaW5nIHwgbnVtYmVyLCBJU2VyaWVzPj4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5kYXRhcG9pbnRzVGFibGVWaWV3U2VydmljZS5nZXRBbGxBY3RpdmVTZXJpZXNEYXRhTWFwKFxuICAgICAgICBkYXRhcG9pbnRzSWRzV2l0aFNlcmllcyxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICByb3VuZFNlY29uZHNcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTWlzc2luZ0FueVBlcm1pc3Npb25FcnJvck1lc3NhZ2UoKSB7XG4gICAgdGhpcy5hbGVydHMuc2V0QWxlcnRHcm91cERpc21pc3NTdHJhdGVneSgnc3lzdGVtJywgRGlzbWlzc0FsZXJ0U3RyYXRlZ3kuVEVNUE9SQVJZKTtcblxuICAgIHRoaXMuYWxlcnRzLmFkZEFsZXJ0cyhcbiAgICAgIG5ldyBEeW5hbWljQ29tcG9uZW50QWxlcnQoe1xuICAgICAgICBhbGxvd0h0bWw6IHRydWUsXG4gICAgICAgIHRleHQ6IHRoaXMuZ2V0TWlzc2luZ1Blcm1pc3Npb25zTWVzc2FnZSgpLFxuICAgICAgICB0eXBlOiAnc3lzdGVtJ1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNaXNzaW5nUGVybWlzc2lvbnNNZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgYmFzZU1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgIGdldHRleHQoYFlvdSBkb24ndCBoYXZlIHBlcm1pc3Npb25zIHRvIHJlYWQgdGhlIGZvbGxvd2luZyBzZXJpZXM6YClcbiAgICApO1xuXG4gICAgY29uc3QgZm9ybWF0dGVkTGlzdCA9IHRoaXMuc2VyaWVzV2l0aG91dFBlcm1pc3Npb25Ub1JlYWRcbiAgICAgIC5tYXAoZGF0YXBvaW50ID0+IGA8bGk+JHtkYXRhcG9pbnQua2V5LnZhbHVlT2YoKX1fJHtkYXRhcG9pbnQudmFsdWV9PC9saT5gKVxuICAgICAgLmpvaW4oJycpO1xuXG4gICAgcmV0dXJuIGBcbiAgICAgIDxkaXY+XG4gICAgICAgIDxwPiR7YmFzZU1lc3NhZ2V9PC9wPlxuICAgICAgICA8dWw+XG4gICAgICAgICAgJHtmb3JtYXR0ZWRMaXN0fVxuICAgICAgICA8L3VsPlxuICAgICAgICA8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IFRoZSBuYW1lIGNvbnZlbnRpb24gZm9yIGVhY2ggbGlzdCBpdGVtIGlzOiA8Y29kZT5bc291cmNlXV9bZnJhZ21lbnQuc2VyaWVzXTwvY29kZT48L3A+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0xNiBwLWwtMTYgcC1yLTE2IGZsZXgtd3JhcFwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLmRpc3BsYXlEYXRlU2VsZWN0aW9uXCI+XG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgICAgIDxjOHktZGF0ZS1yYW5nZS1waWNrZXJcbiAgICAgICAgY2xhc3M9XCJkLWNvbnRlbnRzXCJcbiAgICAgICAgW2lzRW1pdHRpbmdEYXRlQ2hhbmdlXT1cInRydWVcIlxuICAgICAgICBbc2hvd0xhYmVsXT1cInRydWVcIlxuICAgICAgICAodXBkYXRlZERhdGUpPVwib25EYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgPjwvYzh5LWRhdGUtcmFuZ2UtcGlja2VyPlxuICAgIDwvZm9ybT5cbiAgPC9uZy1jb250YWluZXI+XG4gIDwhLS0gVE9ETzogdGVtcG9yYXJpbHkgY29tbWVudGVkIG91dCwgd2lsbCBiZSBlbmFibGVkIHdoZW4gTVRNLTU5Njg5IGlzIGludGVncmF0ZWQgLS0+XG4gIDwhLS0gPGM4eS1kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3RvclxuICAgIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gICAgW2V4cG9ydENvbmZpZ109XCJleHBvcnRDb25maWdcIlxuICAgIChpc0V4cG9ydE1vZGFsT3Blbik9XCJvbkV4cG9ydE1vZGFsT3BlbigkZXZlbnQpXCJcbiAgPjwvYzh5LWRhdGFwb2ludHMtZXhwb3J0LXNlbGVjdG9yPiAtLT5cbiAgPCEtLSBUT0RPOiBiZWxvdyBkaXYgaXMganVzdCBhIHRlbXAgZml4LCBpdCB3aWxsIGJlIHJlbW92ZWQgd2hlbiBNVE0tNTk2ODkgaXMgaW50ZWdyYXRlZCAgLS0+XG4gIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBwLXQtNCBwLWItNCBtYXgtd2lkdGgtZml0IG0tbC1hdXRvXCI+PC9kaXY+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcuZGF0YXBvaW50cy5sZW5ndGggPiAwXCI+XG4gICAgPGM4eS1kYXRhcG9pbnRzLXJlbG9hZFxuICAgICAgY2xhc3M9XCJkLWNvbnRlbnRzXCJcbiAgICAgIFtpc0F1dG9SZWZyZXNoRW5hYmxlZF09XCJjb25maWcuaXNBdXRvUmVmcmVzaEVuYWJsZWRcIlxuICAgICAgW3JlZnJlc2hJbnRlcnZhbF09XCJjb25maWcucmVmcmVzaEludGVydmFsXCJcbiAgICAgIFtpc0Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxuICAgICAgW2lzTG9hZGluZ109XCJpc0xvYWRpbmdcIlxuICAgICAgW2lzU2Nyb2xsaW5nXT1cImlzU2Nyb2xsaW5nKClcIlxuICAgICAgW2lzRXhwb3J0TW9kYWxPcGVuXT1cImlzRXhwb3J0TW9kYWxPcGVuXCJcbiAgICAgIChvbkNvdW50ZG93bkVuZGVkKT1cIm9uQ291bnRkb3duRW5kZWQoKVwiXG4gICAgPjwvYzh5LWRhdGFwb2ludHMtcmVsb2FkPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImRldmljZXNDb2x1bW5IZWFkZXJzXCI+XG4gIDxjOHktZGF0YXBvaW50cy10YWJsZVxuICAgIFthZ2dyZWdhdGlvblR5cGVdPVwiY29uZmlnLmFnZ3JlZ2F0aW9uXCJcbiAgICBbZGF0YXBvaW50c1RhYmxlSXRlbXNdPVwiZGF0YXBvaW50c1RhYmxlSXRlbXNcIlxuICAgIFtkZWNpbWFsUGxhY2VzXT1cImNvbmZpZy5kZWNpbWFsUGxhY2VzXCJcbiAgICBbZGV2aWNlc0NvbHVtbkhlYWRlcnNdPVwiZGV2aWNlc0NvbHVtbkhlYWRlcnNcIlxuICAgIFtoYXNNdWx0aXBsZURhdGFwb2ludHNdPVwiaGFzTXVsdGlwbGVEYXRhcG9pbnRzXCJcbiAgICBbaXNMb2FkaW5nXT1cImlzTG9hZGluZygpXCJcbiAgICBbc2VyaWVzV2l0aG91dFBlcm1pc3Npb25Ub1JlYWRDb3VudF09XCJzZXJpZXNXaXRob3V0UGVybWlzc2lvblRvUmVhZD8ubGVuZ3RoXCJcbiAgICAoaXNTY3JvbGxpbmcpPVwib25TY3JvbGxpbmcoJGV2ZW50KVwiXG4gID48L2M4eS1kYXRhcG9pbnRzLXRhYmxlPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
288
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50cy10YWJsZS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3dpZGdldHMvaW1wbGVtZW50YXRpb25zL2RhdGFwb2ludHMtdGFibGUvZGF0YXBvaW50cy10YWJsZS12aWV3L2RhdGFwb2ludHMtdGFibGUtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi93aWRnZXRzL2ltcGxlbWVudGF0aW9ucy9kYXRhcG9pbnRzLXRhYmxlL2RhdGFwb2ludHMtdGFibGUtdmlldy9kYXRhcG9pbnRzLXRhYmxlLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRS9FLE9BQU8sRUFDTCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUVyQixPQUFPLEVBQ1IsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLGlDQUFpQyxFQUlqQyxrQkFBa0IsRUFDbkIsTUFBTSxnREFBZ0QsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNELE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsa0NBQWtDLEVBTW5DLE1BQU0sa0NBQWtDLENBQUM7QUFDMUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0s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QUUsQ0FBQztZQUN0RixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNsRSxDQUFDO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVPLHFCQUFxQjtRQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNsRCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUNoRCxDQUFDOzhHQXRZVSxrQ0FBa0M7a0dBQWxDLGtDQUFrQyw0SkNuRC9DLDJqREF5Q0EsMkNERUksWUFBWSxtSUFDWixpQ0FBaUMsMEhBQ2pDLHlCQUF5QixxTkFDekIsd0JBQXdCLHFRQUN4Qix3QkFBd0IsMElBQ3hCLG1CQUFtQjs7MkZBR1Ysa0NBQWtDO2tCQWQ5QyxTQUFTOytCQUNFLDJCQUEyQixRQUUvQixFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsY0FDbEIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osaUNBQWlDO3dCQUNqQyx5QkFBeUI7d0JBQ3pCLHdCQUF3Qjt3QkFDeEIsd0JBQXdCO3dCQUN4QixtQkFBbUI7cUJBQ3BCOytOQU1RLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElTZXJpZXMgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBDb21tb25Nb2R1bGUsXG4gIERpc21pc3NBbGVydFN0cmF0ZWd5LFxuICBEeW5hbWljQ29tcG9uZW50QWxlcnQsXG4gIER5bmFtaWNDb21wb25lbnRBbGVydEFnZ3JlZ2F0b3IsXG4gIGdldHRleHRcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBLUElEZXRhaWxzIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9kYXRhcG9pbnQtc2VsZWN0b3InO1xuaW1wb3J0IHtcbiAgRGF0YUZldGNoaW5nU2VydmljZSxcbiAgRGF0YXBvaW50c0V4cG9ydFNlbGVjdG9yQ29tcG9uZW50LFxuICBEYXRhcG9pbnRzVmFsdWVzRGF0YU1hcCxcbiAgRXhwb3J0Q29uZmlnLFxuICBTb3VyY2VJZCxcbiAgZGF0ZVJhbmdlVmFsaWRhdG9yXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3InO1xuaW1wb3J0IHsgSU5URVJWQUxfVkFMVUVTIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pbnRlcnZhbC1waWNrZXInO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIERBVEVfU0VMRUNUSU9OX1ZBTFVFUyxcbiAgREVGQVVMVF9EUFRfUkVGUkVTSF9JTlRFUlZBTF9WQUxVRSxcbiAgRGF0YXBvaW50VGFibGVJdGVtLFxuICBEYXRhcG9pbnRXaXRoVmFsdWVzLFxuICBEYXRhcG9pbnRzVGFibGVDb25maWcsXG4gIEdyb3VwZWREYXRhcG9pbnRUYWJsZUl0ZW0sXG4gIFRhYmxlQ29sdW1uSGVhZGVyXG59IGZyb20gJy4uL2RhdGFwb2ludHMtdGFibGUtd2lkZ2V0Lm1vZGVsJztcbmltcG9ydCB7IERhdGFwb2ludHNUYWJsZVNlcnZpY2UgfSBmcm9tICcuLi9kYXRhcG9pbnRzLXRhYmxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGFwb2ludHNSZWxvYWRDb21wb25lbnQgfSBmcm9tICcuL2RhdGFwb2ludHMtcmVsb2FkL2RhdGFwb2ludHMtcmVsb2FkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRhcG9pbnRzVGFibGVWaWV3U2VydmljZSB9IGZyb20gJy4vZGF0YXBvaW50cy10YWJsZS12aWV3LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YXBvaW50c1RhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRhcG9pbnRzLXRhYmxlL2RhdGFwb2ludHMtdGFibGUuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRhdGFwb2ludHMtdGFibGUtdmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhcG9pbnRzLXRhYmxlLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBob3N0OiB7IGNsYXNzOiAnZC1jb2wgZml0LWgnIH0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRGF0YXBvaW50c0V4cG9ydFNlbGVjdG9yQ29tcG9uZW50LFxuICAgIERhdGFwb2ludHNSZWxvYWRDb21wb25lbnQsXG4gICAgRGF0YXBvaW50c1RhYmxlQ29tcG9uZW50LFxuICAgIERhdGVSYW5nZVBpY2tlckNvbXBvbmVudCxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGF0YXBvaW50c1RhYmxlVmlld1dpZGdldENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqICBEYXRhIHBvaW50cyB0YWJsZSB3aWRnZXQgY29uZmlnLlxuICAgKi9cbiAgQElucHV0KCkgY29uZmlnOiBEYXRhcG9pbnRzVGFibGVDb25maWc7XG5cbiAgYWxlcnRzOiBEeW5hbWljQ29tcG9uZW50QWxlcnRBZ2dyZWdhdG9yO1xuXG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIHRoZSBkYXRhIHBvaW50cyB3aGVyZSBfX2FjdGl2ZSBwcm9wZXJ0eSBpcyBzZXQgdG8gdHJ1ZS5cbiAgICovXG4gIGFjdGl2ZURhdGFwb2ludHM6IEtQSURldGFpbHNbXSA9IFtdO1xuICAvKipcbiAgICogQW4gYXJyYXkgb2Ygb2JqZWN0cyByZXByZXNlbnRpbmcgZGF0YXBvaW50cyB3aXRoIHRoZWlyIGNvcnJlc3BvbmRpbmcgdmFsdWVzLlxuICAgKiBVc2VkIHRvIHBvcHVsYXRlIHRoZSBDU1YvRXhjZWwgZmlsZSB3aXRoIGRhdGEuXG4gICAqL1xuICBkYXRhcG9pbnRzV2l0aFZhbHVlczogRGF0YXBvaW50V2l0aFZhbHVlc1tdO1xuICAvKipcbiAgICogQW4gYXJyYXkgb2YgYEdyb3VwZWREYXRhcG9pbnRUYWJsZUl0ZW1gIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZSBkYXRhcG9pbnRzIHRhYmxlIGl0ZW1zLlxuICAgKiBVc2VkIHRvIHBvcHVsYXRlIHRoZSB0YWJsZSB3aXRoIGRhdGEuXG4gICAqL1xuICBkYXRhcG9pbnRzVGFibGVJdGVtczogR3JvdXBlZERhdGFwb2ludFRhYmxlSXRlbVtdID0gW107XG5cbiAgZGV2aWNlc0NvbHVtbkhlYWRlcnM6IFRhYmxlQ29sdW1uSGVhZGVyW107XG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIGEgY29uZmlndXJhdGlvbiBvcHRpb25zIHVzZWQgYnkgYSBjOHktZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3IuXG4gICAqL1xuICBleHBvcnRDb25maWc6IEV4cG9ydENvbmZpZztcblxuICBmb3JtR3JvdXA6IFJldHVyblR5cGU8RGF0YXBvaW50c1RhYmxlVmlld1dpZGdldENvbXBvbmVudFsnY3JlYXRlRm9ybSddPjtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgZGF0YSBwb2ludC5cbiAgICogSWYgaXMgdHJ1ZSwgdGhlbiBhIGNvbHVtbiAnRGV2aWNlJyB3aWxsIGJlIGRpc3BsYXllZCBpbiB0aGUgdGFibGUuXG4gICAqL1xuICBoYXNNdWx0aXBsZURhdGFwb2ludHM6IGJvb2xlYW47XG5cbiAgaXNEaXNhYmxlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgY29tcG9uZW50IGlzIGluIHRoZSBpbml0aWFsIHJlcXVlc3Qgc3RhdGVcbiAgICogd2hlcmUgZGF0YSBmb3IgYSB0YWJsZSBzdHJ1Y3R1cmUgaXMgYmVpbmcgcHJlcGFyZWQuXG4gICAqL1xuICBpc0luaXRpYWxSZXF1ZXN0ID0gdHJ1ZTtcbiAgLyoqXG4gICAqIEN1cnJlbnQgaXNMb2FkaW5nIHN0YXRlLiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgZGF0YSBpcyBiZWluZyBsb2FkZWQuXG4gICAqL1xuICBpc0xvYWRpbmcgPSBzaWduYWwodHJ1ZSk7XG5cbiAgaXNFeHBvcnRNb2RhbE9wZW4gPSBmYWxzZTtcblxuICBpc1Njcm9sbGluZyA9IHNpZ25hbChmYWxzZSk7XG5cbiAgc2VyaWVzV2l0aG91dFBlcm1pc3Npb25Ub1JlYWQ6IHsga2V5OiBTb3VyY2VJZDsgdmFsdWU6IHN0cmluZ1tdIH1bXTtcblxuICBwcml2YXRlIHNjcm9sbGluZ1N1YmplY3QkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgYWxlcnQgaGFzIGFscmVhZHkgYmVlbiBkaXNwbGF5ZWQgYW5kIGNhbiBiZSBkaXNtaXNzZWQuXG4gICAqIFRoZSBtZXNzYWdlIGlzIG9ubHkgZGlzcGxheWVkIHdoZW4gYSBjb21wb25lbnQgaXMgaW5pdGlhbGl6ZWQuXG4gICAqL1xuICBwcml2YXRlIGlzTWlzc2luZ0FueVBlcm1pc3Npb25BbGVydFNob3duID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkYXRhRmV0Y2hpbmdTZXJ2aWNlOiBEYXRhRmV0Y2hpbmdTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGF0YXBvaW50c1RhYmxlQ29uZmlnU2VydmljZTogRGF0YXBvaW50c1RhYmxlU2VydmljZSxcbiAgICBwcml2YXRlIGRhdGFwb2ludHNUYWJsZVZpZXdTZXJ2aWNlOiBEYXRhcG9pbnRzVGFibGVWaWV3U2VydmljZSxcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIFdpbGwgYmUgdW5jb21tZW50ZWQgaW4gTVRNLTYxOTIwXG4gICAgLy8gaWYgKHRoaXMuY29uZmlnLndpZGdldEluc3RhbmNlR2xvYmFsVGltZUNvbnRleHQpIHtcbiAgICAvLyAgIHRoaXMuaGFuZGxlR2xvYmFsVGltZUNvbnRleHRTZXR0aW5ncygpO1xuICAgIC8vIH1cblxuICAgIC8vIENvbmRpdGlvbiB3aWxsIGJlIHJlbW92ZWQgaW4gTVRNLTYxOTIwXG4gICAgLy8gRGFzaGJvYXJkIGNvbnRleHQgaXMgdGVtcG9yYXJ5IG5vdCBzdXBwb3J0ZWQgaW4gdGhlIG5ldyBpbXBsZW1lbnRhdGlvblxuICAgIGlmICh0aGlzLmNvbmZpZy53aWRnZXRJbnN0YW5jZUdsb2JhbFRpbWVDb250ZXh0KSB7XG4gICAgICB0aGlzLmNvbmZpZy53aWRnZXRJbnN0YW5jZUdsb2JhbFRpbWVDb250ZXh0ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gQ29uZGl0aW9uIHdpbGwgYmUgcmVtb3ZlZCBpbiBNVE0tNjE5MjBcbiAgICAvLyBEYXNoYm9hcmQgY29udGV4dCBpcyB0ZW1wb3Jhcnkgbm90IHN1cHBvcnRlZCBpbiB0aGUgbmV3IGltcGxlbWVudGF0aW9uXG4gICAgaWYgKHRoaXMuY29uZmlnWydnbG9iYWxEYXRlU2VsZWN0b3InXSA9PT0gJ2Rhc2hib2FyZF9jb250ZXh0Jykge1xuICAgICAgdGhpcy5jb25maWdbJ2dsb2JhbERhdGVTZWxlY3RvciddID0gREFURV9TRUxFQ1RJT05fVkFMVUVTLmNvbmZpZztcbiAgICB9XG5cbiAgICB0aGlzLnNldFNjcm9sbGluZ1N1YnNjcmlwdGlvbigpO1xuXG4gICAgY29uc3QgaXNMZWdhY3lXaWRnZXRSZWFsdGltZUFjdGl2ZSA9XG4gICAgICB0aGlzLmNvbmZpZy5yZWFsdGltZSAmJlxuICAgICAgIXRoaXMuY29uZmlnLmRlY2ltYWxQbGFjZXMgJiZcbiAgICAgICF0aGlzLmNvbmZpZy5yZWZyZXNoSW50ZXJ2YWwgJiZcbiAgICAgICF0aGlzLmNvbmZpZy5pc0F1dG9SZWZyZXNoRW5hYmxlZDtcblxuICAgIGlmIChpc0xlZ2FjeVdpZGdldFJlYWx0aW1lQWN0aXZlKSB7XG4gICAgICB0aGlzLnNldERlZmF1bHRSZWZyZXNoUmVsYXRlZFByb3BlcnRpZXMoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWcuaW50ZXJ2YWwgIT09IElOVEVSVkFMX1ZBTFVFUy5jdXN0b20pIHtcbiAgICAgIHRoaXMucmVjYWxjdWxhdGVJbnRlcnZhbFRvTWF0Y2hGcm9tTm93RGF0ZSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZy5kaXNwbGF5RGF0ZVNlbGVjdGlvbikge1xuICAgICAgdGhpcy5wcmVwYXJlRGF0ZVJhbmdlRm9ybSgpO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMucHJlcGFyZVRhYmxlRGF0YSgpO1xuXG4gICAgdGhpcy5leHBvcnRDb25maWcgPSB7XG4gICAgICBhZ2dyZWdhdGlvbjogdGhpcy5jb25maWcuYWdncmVnYXRpb24sXG4gICAgICBkYXRlRnJvbTogdGhpcy5jb25maWcuZGF0ZUZyb20sXG4gICAgICBkYXRlVG86IHRoaXMuY29uZmlnLmRhdGVUbyxcbiAgICAgIGRhdGFwb2ludERldGFpbHM6IHRoaXMuYWN0aXZlRGF0YXBvaW50cy5tYXAoKHsgX190YXJnZXQsIGZyYWdtZW50LCBzZXJpZXMgfSkgPT4gKHtcbiAgICAgICAgZGV2aWNlTmFtZTogX190YXJnZXQubmFtZSxcbiAgICAgICAgc291cmNlOiBfX3RhcmdldC5pZCxcbiAgICAgICAgdmFsdWVGcmFnbWVudFNlcmllczogc2VyaWVzLFxuICAgICAgICB2YWx1ZUZyYWdtZW50VHlwZTogZnJhZ21lbnRcbiAgICAgIH0pKVxuICAgIH07XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgb25EYXRlQ2hhbmdlKGRhdGE6IHsgZGF0ZUZyb20/OiBzdHJpbmcgfCBudWxsOyBkYXRlVG8/OiBzdHJpbmcgfCBudWxsIH0pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb3JtR3JvdXAuaW52YWxpZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChkYXRhLmRhdGVGcm9tKSB7XG4gICAgICB0aGlzLmNvbmZpZy5kYXRlRnJvbSA9IGRhdGEuZGF0ZUZyb207XG4gICAgfVxuICAgIGlmIChkYXRhLmRhdGVUbykge1xuICAgICAgdGhpcy5jb25maWcuZGF0ZVRvID0gZGF0YS5kYXRlVG87XG4gICAgfVxuICAgIHRoaXMucHJlcGFyZVRhYmxlRGF0YSgpO1xuXG4gICAgdGhpcy51cGRhdGVFeHBvcnRDb25maWdEYXRlUmFuZ2UoKTtcbiAgfVxuXG4gIG9uRXhwb3J0TW9kYWxPcGVuKGlzT3BlbmVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5pc0V4cG9ydE1vZGFsT3BlbiA9IGlzT3BlbmVkO1xuICB9XG5cbiAgb25TY3JvbGxpbmcodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnNjcm9sbGluZ1N1YmplY3QkLm5leHQodmFsdWUpO1xuICB9XG5cbiAgYXN5bmMgb25Db3VudGRvd25FbmRlZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBkYXRlUmFuZ2UgPSB0aGlzLmRhdGFwb2ludHNUYWJsZVZpZXdTZXJ2aWNlLnByZXBhcmVUaW1lUmFuZ2UoXG4gICAgICB0aGlzLmNvbmZpZy5pbnRlcnZhbCxcbiAgICAgIHRoaXMuY29uZmlnLmRhdGVGcm9tLFxuICAgICAgdGhpcy5jb25maWcuZGF0ZVRvXG4gICAgKTtcblxuICAgIHRoaXMuY29uZmlnLmRhdGVGcm9tID0gZGF0ZVJhbmdlLmRhdGVGcm9tO1xuICAgIHRoaXMuY29uZmlnLmRhdGVUbyA9IGRhdGVSYW5nZS5kYXRlVG87XG5cbiAgICB0aGlzLnVwZGF0ZUV4cG9ydENvbmZpZ0RhdGVSYW5nZSgpO1xuICAgIGF3YWl0IHRoaXMucHJlcGFyZVRhYmxlRGF0YShmYWxzZSk7XG5cbiAgICB0aGlzLm9uU2Nyb2xsaW5nKGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlR2xvYmFsVGltZUNvbnRleHRTZXR0aW5ncygpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZy5kYXRlRnJvbSA9IHRoaXMuZGF0YUZldGNoaW5nU2VydmljZS5hZGp1c3REYXRlKHRoaXMuY29uZmlnLmRhdGVbMF0sIDAsIGZhbHNlKTtcbiAgICB0aGlzLmNvbmZpZy5kYXRlVG8gPSB0aGlzLmRhdGFGZXRjaGluZ1NlcnZpY2UuYWRqdXN0RGF0ZSh0aGlzLmNvbmZpZy5kYXRlWzFdLCAwLCBmYWxzZSk7XG4gICAgaWYgKHRoaXMuY29uZmlnLnJlYWx0aW1lKSB7XG4gICAgICB0aGlzLnNldERlZmF1bHRSZWZyZXNoUmVsYXRlZFByb3BlcnRpZXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb25maWcuaXNBdXRvUmVmcmVzaEVuYWJsZWQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB1cCB0aGUgc2Nyb2xsaW5nIHN1YnNjcmlwdGlvbi5cbiAgICpcbiAgICogRW5zdXJlcyBzaW1pbGFyIFVYIGFzIGluIHRoZSBhbGFybXMgY291bnRkb3duLXBhdXNlIGxvZ2ljLlxuICAgKi9cbiAgcHJpdmF0ZSBzZXRTY3JvbGxpbmdTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnNjcm9sbGluZ1N1YmplY3QkXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMzAwKSlcbiAgICAgIC5zdWJzY3JpYmUodmFsdWUgPT4gdGhpcy5pc1Njcm9sbGluZy5zZXQodmFsdWUpKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RGVmYXVsdFJlZnJlc2hSZWxhdGVkUHJvcGVydGllcygpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZy5pc0F1dG9SZWZyZXNoRW5hYmxlZCA9IHRydWU7XG4gICAgdGhpcy5jb25maWcucmVmcmVzaEludGVydmFsID0gREVGQVVMVF9EUFRfUkVGUkVTSF9JTlRFUlZBTF9WQUxVRTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjYWxjdWxhdGVJbnRlcnZhbFRvTWF0Y2hGcm9tTm93RGF0ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb25maWcud2lkZ2V0SW5zdGFuY2VHbG9iYWxUaW1lQ29udGV4dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgZGF0ZUZyb20sIGRhdGVUbyB9ID0gdGhpcy5kYXRhcG9pbnRzVGFibGVDb25maWdTZXJ2aWNlLmNhbGN1bGF0ZURhdGVSYW5nZShcbiAgICAgIHRoaXMuY29uZmlnLmludGVydmFsXG4gICAgKTtcbiAgICB0aGlzLmNvbmZpZy5kYXRlRnJvbSA9IGRhdGVGcm9tO1xuICAgIHRoaXMuY29uZmlnLmRhdGVUbyA9IGRhdGVUbztcbiAgfVxuXG4gIHByaXZhdGUgcHJlcGFyZURhdGVSYW5nZUZvcm0oKSB7XG4gICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLmNyZWF0ZUZvcm0oKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRm9ybSgpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtQnVpbGRlci5ncm91cChcbiAgICAgIHtcbiAgICAgICAgZGF0ZUZyb206IG5ldyBGb3JtQ29udHJvbCh0aGlzLmNvbmZpZy5kYXRlRnJvbSksXG4gICAgICAgIGRhdGVUbzogbmV3IEZvcm1Db250cm9sKHRoaXMuY29uZmlnLmRhdGVUbylcbiAgICAgIH0sXG4gICAgICB7IHZhbGlkYXRvcnM6IGRhdGVSYW5nZVZhbGlkYXRvciB9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcmVwYXJlcyB0aGUgdGFibGUgZGF0YSBieTpcbiAgICogLSBmaWx0ZXJpbmcgb3V0IGluYWN0aXZlIGRhdGEgcG9pbnRzLFxuICAgKiAtIGNoZWNraW5nIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBkZXZpY2VzIGFzIGEgc291cmNlIG9mIGRhdGEgcG9pbnRzLFxuICAgKiAtIGdldHRpbmcgdGhlIGNvbHVtbiBoZWFkZXJzIGZvciBkZXZpY2VzLFxuICAgKiAtIGdldHRpbmcgdGhlIHNlcmllcyBkYXRhIGZvciBhY3RpdmUgZGF0YSBwb2ludHMgKEFQSSBjYWxsKSxcbiAgICogLSBwcmVwYXJpbmcgZGF0YSBwb2ludHMgd2l0aCB2YWx1ZXMgbGlzdCxcbiAgICogLSBtYXBwaW5nIGRhdGEgcG9pbnRzIHdpdGggdmFsdWVzIHRvIGxpc3QgaXRlbXMsXG4gICAqIC0gZ3JvdXBpbmcgZGF0YSBwb2ludHMgYnkgZGF0ZSBhbmQgZGV2aWNlLFxuICAgKiAtIHNvcnRpbmcgZGF0YSBieSBkYXRlIGRlc2NlbmRpbmcuXG4gICAqXG4gICAqIEBwYXJhbSByb3VuZFNlY29uZHMgLSBXaGV0aGVyIHRvIHJvdW5kIHRoZSBzZWNvbmRzIG9yIG5vdC5cbiAgICogICAgICAgICAgICAgICAgICAgICAgIElmIHRydWUsIHRoZSBzZWNvbmRzIHdpbGwgYmUgcm91bmRlZCB0byAwLlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgSWYgZmFsc2UsIHRoZSBzZWNvbmRzIHdpbGwgYmUgZGlzcGxheWVkIGFzIHRoZXkgYXJlLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlVGFibGVEYXRhKHJvdW5kU2Vjb25kcyA9IHRydWUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XG5cbiAgICBpZiAodGhpcy5pc0luaXRpYWxSZXF1ZXN0KSB7XG4gICAgICB0aGlzLmFjdGl2ZURhdGFwb2ludHMgPSB0aGlzLmRhdGFwb2ludHNUYWJsZVZpZXdTZXJ2aWNlLmZpbHRlck91dEluYWN0aXZlRGF0YXBvaW50cyhcbiAgICAgICAgdGhpcy5jb25maWcuZGF0YXBvaW50c1xuICAgICAgKTtcblxuICAgICAgdGhpcy5oYXNNdWx0aXBsZURhdGFwb2ludHMgPSB0aGlzLmRhdGFwb2ludHNUYWJsZVZpZXdTZXJ2aWNlLmhhc011bHRpcGxlRGF0YXBvaW50cyhcbiAgICAgICAgdGhpcy5hY3RpdmVEYXRhcG9pbnRzXG4gICAgICApO1xuXG4gICAgICB0aGlzLmRldmljZXNDb2x1bW5IZWFkZXJzID0gdGhpcy5kYXRhcG9pbnRzVGFibGVWaWV3U2VydmljZS5nZXRDb2x1bW5IZWFkZXJzKFxuICAgICAgICB0aGlzLmFjdGl2ZURhdGFwb2ludHNcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuaXNJbml0aWFsUmVxdWVzdCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdGl2ZURhdGFwb2ludHNJZHNXaXRoU2VyaWVzOiBEYXRhcG9pbnRzVmFsdWVzRGF0YU1hcCA9XG4gICAgICB0aGlzLmRhdGFwb2ludHNUYWJsZVZpZXdTZXJ2aWNlLmdyb3VwU2VyaWVzQnlEZXZpY2VJZCh0aGlzLmFjdGl2ZURhdGFwb2ludHMpO1xuXG4gICAgY29uc3QgYWN0aXZlRGF0YXBvaW50c1Nlcmllc0RhdGE6IE1hcDxzdHJpbmcgfCBudW1iZXIsIElTZXJpZXM+ID1cbiAgICAgIGF3YWl0IHRoaXMuZ2V0QWN0aXZlRGF0YXBvaW50c1Nlcmllc0RhdGFNYXAoXG4gICAgICAgIGFjdGl2ZURhdGFwb2ludHNJZHNXaXRoU2VyaWVzLFxuICAgICAgICB0aGlzLmNvbmZpZyxcbiAgICAgICAgcm91bmRTZWNvbmRzXG4gICAgICApO1xuXG4gICAgdGhpcy5zZXJpZXNXaXRob3V0UGVybWlzc2lvblRvUmVhZCA9XG4gICAgICB0aGlzLmRhdGFwb2ludHNUYWJsZVZpZXdTZXJ2aWNlLmdldFNlcmllc1dpdGhvdXRQZXJtaXNzaW9uVG9SZWFkKFxuICAgICAgICBhY3RpdmVEYXRhcG9pbnRzU2VyaWVzRGF0YSxcbiAgICAgICAgYWN0aXZlRGF0YXBvaW50c0lkc1dpdGhTZXJpZXNcbiAgICAgICk7XG5cbiAgICBpZiAoXG4gICAgICAhdGhpcy5pc01pc3NpbmdBbnlQZXJtaXNzaW9uQWxlcnRTaG93biAmJlxuICAgICAgdGhpcy5zZXJpZXNXaXRob3V0UGVybWlzc2lvblRvUmVhZD8ubGVuZ3RoID4gMCAmJlxuICAgICAgYWN0aXZlRGF0YXBvaW50c1Nlcmllc0RhdGE/LnNpemVcbiAgICApIHtcbiAgICAgIHRoaXMuaGFuZGxlTWlzc2luZ0FueVBlcm1pc3Npb25FcnJvck1lc3NhZ2UoKTtcbiAgICAgIHRoaXMuaXNNaXNzaW5nQW55UGVybWlzc2lvbkFsZXJ0U2hvd24gPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICghYWN0aXZlRGF0YXBvaW50c1Nlcmllc0RhdGEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmRhdGFwb2ludHNXaXRoVmFsdWVzID0gdGhpcy5kYXRhcG9pbnRzVGFibGVWaWV3U2VydmljZS5nZXREYXRhcG9pbnRzV2l0aFZhbHVlcyhcbiAgICAgIHRoaXMuYWN0aXZlRGF0YXBvaW50cyxcbiAgICAgIGFjdGl2ZURhdGFwb2ludHNTZXJpZXNEYXRhXG4gICAgKTtcblxuICAgIGNvbnN0IGRhdGFwb2ludHNMaXN0SXRlbXM6IERhdGFwb2ludFRhYmxlSXRlbVtdID1cbiAgICAgIHRoaXMuZGF0YXBvaW50c1RhYmxlVmlld1NlcnZpY2UubWFwRGF0YXBvaW50c1dpdGhWYWx1ZXNUb0xpc3QodGhpcy5kYXRhcG9pbnRzV2l0aFZhbHVlcyk7XG5cbiAgICBjb25zdCBncm91cGVkRGF0YXBvaW50c0xpc3RJdGVtczogR3JvdXBlZERhdGFwb2ludFRhYmxlSXRlbVtdID1cbiAgICAgIHRoaXMuZGF0YXBvaW50c1RhYmxlVmlld1NlcnZpY2UuZ3JvdXBCeURhdGVBbmREZXZpY2UoXG4gICAgICAgIGRhdGFwb2ludHNMaXN0SXRlbXMsXG4gICAgICAgIHRoaXMuZGV2aWNlc0NvbHVtbkhlYWRlcnNcbiAgICAgICk7XG5cbiAgICB0aGlzLmRhdGFwb2ludHNUYWJsZUl0ZW1zID0gdGhpcy5kYXRhcG9pbnRzVGFibGVWaWV3U2VydmljZS5zb3J0RGF0YUJ5RGF0ZURlc2NlbmRpbmcoXG4gICAgICBncm91cGVkRGF0YXBvaW50c0xpc3RJdGVtc1xuICAgICk7XG5cbiAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgYWN0aXZlIGRhdGEgcG9pbnRzIHNlcmllcyBkYXRhIGFuZCByZXR1cm5zIGl0IGFzIGEgbWFwLlxuICAgKlxuICAgKiBJdCdzIGEgd3JhcHBlciBtZXRob2Qgd2l0aCB0cnktY2F0Y2ggYmxvY2suXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhcG9pbnRzSWRzV2l0aFNlcmllcyAtIEEgbWFwIG9mIGRhdGEgcG9pbnQgSURzIHdpdGggdGhlaXIgYXNzb2NpYXRlZCBzZXJpZXMuXG4gICAqIEBwYXJhbSBjb25maWcgLSBUaGUgY29uZmlndXJhdGlvbiBvZiB0aGUgZGF0YSBwb2ludHMgdGFibGUuXG4gICAqIEBwYXJhbSByb3VuZFNlY29uZHMgLSBXaGV0aGVyIHRvIHJvdW5kIHRoZSBzZWNvbmRzIG9yIG5vdC5cbiAgICogICAgICAgICAgICAgICAgICAgICAgIElmIHRydWUsIHRoZSBzZWNvbmRzIHdpbGwgYmUgcm91bmRlZCB0byAwLlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgSWYgZmFsc2UsIHRoZSBzZWNvbmRzIHdpbGwgYmUgZGlzcGxheWVkIGFzIHRoZXkgYXJlLlxuICAgKiBAcmV0dXJucyBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIE1hcCBvYmplY3Qgd2l0aCBkYXRhIHBvaW50IElEcyBhcyBrZXlzIGFuZCBEYXRhT2JqZWN0IGFzIHZhbHVlcy5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZ2V0QWN0aXZlRGF0YXBvaW50c1Nlcmllc0RhdGFNYXAoXG4gICAgZGF0YXBvaW50c0lkc1dpdGhTZXJpZXM6IERhdGFwb2ludHNWYWx1ZXNEYXRhTWFwLFxuICAgIGNvbmZpZzogRGF0YXBvaW50c1RhYmxlQ29uZmlnLFxuICAgIHJvdW5kU2Vjb25kczogYm9vbGVhblxuICApOiBQcm9taXNlPE1hcDxzdHJpbmcgfCBudW1iZXIsIElTZXJpZXM+PiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmRhdGFwb2ludHNUYWJsZVZpZXdTZXJ2aWNlLmdldEFsbEFjdGl2ZVNlcmllc0RhdGFNYXAoXG4gICAgICAgIGRhdGFwb2ludHNJZHNXaXRoU2VyaWVzLFxuICAgICAgICBjb25maWcsXG4gICAgICAgIHJvdW5kU2Vjb25kc1xuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5pc0Rpc2FibGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVNaXNzaW5nQW55UGVybWlzc2lvbkVycm9yTWVzc2FnZSgpIHtcbiAgICB0aGlzLmFsZXJ0cy5zZXRBbGVydEdyb3VwRGlzbWlzc1N0cmF0ZWd5KCdzeXN0ZW0nLCBEaXNtaXNzQWxlcnRTdHJhdGVneS5URU1QT1JBUlkpO1xuXG4gICAgdGhpcy5hbGVydHMuYWRkQWxlcnRzKFxuICAgICAgbmV3IER5bmFtaWNDb21wb25lbnRBbGVydCh7XG4gICAgICAgIGFsbG93SHRtbDogdHJ1ZSxcbiAgICAgICAgdGV4dDogdGhpcy5nZXRNaXNzaW5nUGVybWlzc2lvbnNNZXNzYWdlKCksXG4gICAgICAgIHR5cGU6ICdzeXN0ZW0nXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldE1pc3NpbmdQZXJtaXNzaW9uc01lc3NhZ2UoKTogc3RyaW5nIHtcbiAgICBjb25zdCBiYXNlTWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgZ2V0dGV4dChgWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbnMgdG8gcmVhZCB0aGUgZm9sbG93aW5nIHNlcmllczpgKVxuICAgICk7XG5cbiAgICBjb25zdCBmb3JtYXR0ZWRMaXN0ID0gdGhpcy5zZXJpZXNXaXRob3V0UGVybWlzc2lvblRvUmVhZFxuICAgICAgLm1hcChkYXRhcG9pbnQgPT4gYDxsaT4ke2RhdGFwb2ludC5rZXkudmFsdWVPZigpfV8ke2RhdGFwb2ludC52YWx1ZX08L2xpPmApXG4gICAgICAuam9pbignJyk7XG5cbiAgICByZXR1cm4gYFxuICAgICAgPGRpdj5cbiAgICAgICAgPHA+JHtiYXNlTWVzc2FnZX08L3A+XG4gICAgICAgIDx1bD5cbiAgICAgICAgICAke2Zvcm1hdHRlZExpc3R9XG4gICAgICAgIDwvdWw+XG4gICAgICAgIDxwPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gVGhlIG5hbWUgY29udmVudGlvbiBmb3IgZWFjaCBsaXN0IGl0ZW0gaXM6IDxjb2RlPltzb3VyY2VdX1tmcmFnbWVudC5zZXJpZXNdPC9jb2RlPjwvcD5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUV4cG9ydENvbmZpZ0RhdGVSYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZy5kYXRlVG8gPSB0aGlzLmFkanVzdFRhcmdldERhdGVCYXNlZE9uQ29uZGl0aW9uVGltZShcbiAgICAgIHRoaXMuY29uZmlnLmRhdGVGcm9tLFxuICAgICAgdGhpcy5jb25maWcuZGF0ZVRvXG4gICAgKTtcblxuICAgIHRoaXMuY29uZmlnLmRhdGVGcm9tID0gdGhpcy5hZGp1c3RUYXJnZXREYXRlQmFzZWRPbkNvbmRpdGlvblRpbWUoXG4gICAgICB0aGlzLmNvbmZpZy5kYXRlVG8sXG4gICAgICB0aGlzLmNvbmZpZy5kYXRlRnJvbVxuICAgICk7XG5cbiAgICB0aGlzLnN5bmNFeHBvcnRDb25maWdEYXRlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGp1c3RUYXJnZXREYXRlQmFzZWRPbkNvbmRpdGlvblRpbWUoY29uZGl0aW9uRGF0ZTogc3RyaW5nLCB0YXJnZXREYXRlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmRhdGFwb2ludHNUYWJsZVZpZXdTZXJ2aWNlLmhhc1NlY29uZHNBbmRNaWxsaXNlY29uZHNFcXVhbFplcm8oY29uZGl0aW9uRGF0ZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGFGZXRjaGluZ1NlcnZpY2UuYWRqdXN0RGF0ZSh0YXJnZXREYXRlLCAwLCB0cnVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldERhdGU7XG4gIH1cblxuICBwcml2YXRlIHN5bmNFeHBvcnRDb25maWdEYXRlcygpOiB2b2lkIHtcbiAgICB0aGlzLmV4cG9ydENvbmZpZy5kYXRlRnJvbSA9IHRoaXMuY29uZmlnLmRhdGVGcm9tO1xuICAgIHRoaXMuZXhwb3J0Q29uZmlnLmRhdGVUbyA9IHRoaXMuY29uZmlnLmRhdGVUbztcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMTYgcC1sLTE2IHAtci0xNiBmbGV4LXdyYXBcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZy5kaXNwbGF5RGF0ZVNlbGVjdGlvblwiPlxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XG4gICAgICA8Yzh5LWRhdGUtcmFuZ2UtcGlja2VyXG4gICAgICAgIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gICAgICAgIFtpc0VtaXR0aW5nRGF0ZUNoYW5nZV09XCJ0cnVlXCJcbiAgICAgICAgW3Nob3dMYWJlbF09XCJ0cnVlXCJcbiAgICAgICAgKHVwZGF0ZWREYXRlKT1cIm9uRGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgID48L2M4eS1kYXRlLXJhbmdlLXBpY2tlcj5cbiAgICA8L2Zvcm0+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLmRhdGFwb2ludHMubGVuZ3RoID4gMFwiPlxuICAgIDxjOHktZGF0YXBvaW50cy1yZWxvYWRcbiAgICAgIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gICAgICBbaXNBdXRvUmVmcmVzaEVuYWJsZWRdPVwiY29uZmlnLmlzQXV0b1JlZnJlc2hFbmFibGVkXCJcbiAgICAgIFtyZWZyZXNoSW50ZXJ2YWxdPVwiY29uZmlnLnJlZnJlc2hJbnRlcnZhbFwiXG4gICAgICBbaXNEaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcbiAgICAgIFtpc0xvYWRpbmddPVwiaXNMb2FkaW5nXCJcbiAgICAgIFtpc1Njcm9sbGluZ109XCJpc1Njcm9sbGluZygpXCJcbiAgICAgIFtpc0V4cG9ydE1vZGFsT3Blbl09XCJpc0V4cG9ydE1vZGFsT3BlblwiXG4gICAgICAob25Db3VudGRvd25FbmRlZCk9XCJvbkNvdW50ZG93bkVuZGVkKClcIlxuICAgID48L2M4eS1kYXRhcG9pbnRzLXJlbG9hZD5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxjOHktZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3JcbiAgICBjbGFzcz1cImQtY29udGVudHNcIlxuICAgIFtleHBvcnRDb25maWddPVwiZXhwb3J0Q29uZmlnXCJcbiAgICAoaXNPcGVuKT1cIm9uRXhwb3J0TW9kYWxPcGVuKCRldmVudClcIlxuICA+PC9jOHktZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3I+XG48L2Rpdj5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJkZXZpY2VzQ29sdW1uSGVhZGVyc1wiPlxuICA8Yzh5LWRhdGFwb2ludHMtdGFibGVcbiAgICBbYWdncmVnYXRpb25UeXBlXT1cImNvbmZpZy5hZ2dyZWdhdGlvblwiXG4gICAgW2RhdGFwb2ludHNUYWJsZUl0ZW1zXT1cImRhdGFwb2ludHNUYWJsZUl0ZW1zXCJcbiAgICBbZGVjaW1hbFBsYWNlc109XCJjb25maWcuZGVjaW1hbFBsYWNlc1wiXG4gICAgW2RldmljZXNDb2x1bW5IZWFkZXJzXT1cImRldmljZXNDb2x1bW5IZWFkZXJzXCJcbiAgICBbaGFzTXVsdGlwbGVEYXRhcG9pbnRzXT1cImhhc011bHRpcGxlRGF0YXBvaW50c1wiXG4gICAgW2lzTG9hZGluZ109XCJpc0xvYWRpbmcoKVwiXG4gICAgW3Nlcmllc1dpdGhvdXRQZXJtaXNzaW9uVG9SZWFkQ291bnRdPVwic2VyaWVzV2l0aG91dFBlcm1pc3Npb25Ub1JlYWQ/Lmxlbmd0aFwiXG4gICAgKGlzU2Nyb2xsaW5nKT1cIm9uU2Nyb2xsaW5nKCRldmVudClcIlxuICA+PC9jOHktZGF0YXBvaW50cy10YWJsZT5cbjwvbmctY29udGFpbmVyPlxuIl19
|