@c8y/ngx-components 1021.55.1 → 1021.55.3
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/common/interval-based-reload.abstract.d.ts +13 -3
- package/core/common/interval-based-reload.abstract.d.ts.map +1 -1
- package/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.d.ts +3 -4
- package/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.d.ts.map +1 -1
- package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.d.ts +1 -0
- package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.d.ts.map +1 -1
- package/core/dashboard/widgets-dashboard-event.service.d.ts +7 -0
- package/core/dashboard/widgets-dashboard-event.service.d.ts.map +1 -1
- package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts +6 -2
- package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts.map +1 -1
- package/datapoint-explorer/view/configuration/workspace-configuration.component.d.ts.map +1 -1
- 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.component.d.ts +3 -1
- package/datapoints-export-selector/datapoints-export-selector.component.d.ts.map +1 -1
- package/echart/charts.component.d.ts.map +1 -1
- package/esm2022/core/aggregation/aggregation.model.mjs +2 -2
- package/esm2022/core/common/interval-based-reload.abstract.mjs +13 -13
- package/esm2022/core/dashboard/dashboard-child.component.mjs +3 -3
- package/esm2022/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.mjs +6 -8
- package/esm2022/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.mjs +9 -1
- package/esm2022/core/dashboard/widgets-dashboard-event.service.mjs +19 -2
- package/esm2022/core/dashboard/widgets-dashboard.component.mjs +3 -3
- package/esm2022/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.mjs +3 -3
- package/esm2022/core/dashboard/wiget-time-context/widget-time-context.component.mjs +48 -23
- package/esm2022/datapoint-explorer/view/configuration/workspace-configuration.component.mjs +13 -8
- package/esm2022/datapoint-explorer/view/datapoint-explorer.component.mjs +2 -2
- package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.mjs +1 -3
- package/esm2022/datapoints-export-selector/datapoints-export-selector.component.mjs +9 -5
- package/esm2022/echart/charts.component.mjs +22 -84
- package/esm2022/widgets/definitions/datapoints-table/index.mjs +3 -2
- package/esm2022/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.mjs +3 -3
- package/esm2022/widgets/implementations/alarms/alarm-widget-alarms-reload.component.mjs +17 -100
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.mjs +47 -34
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.mjs +35 -13
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.mjs +3 -3
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.mjs +75 -35
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-widget.model.mjs +3 -5
- package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +13 -8
- package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +7 -6
- package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-echart.mjs +21 -83
- package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +18 -101
- package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +147 -76
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +209 -162
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/locales/locales.pot +3 -7
- package/package.json +1 -1
- package/widgets/definitions/datapoints-table/index.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts +18 -63
- package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts.map +1 -1
- package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.d.ts +4 -2
- 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-reload/datapoints-reload.component.d.ts +16 -8
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts.map +1 -1
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts +21 -4
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts.map +1 -1
- package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts +4 -1
- package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts.map +1 -1
|
@@ -253,7 +253,7 @@ export class DatapointExplorerComponent {
|
|
|
253
253
|
});
|
|
254
254
|
}
|
|
255
255
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DatapointExplorerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
256
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DatapointExplorerComponent, isStandalone: true, selector: "c8y-datapoint-explorer", providers: [ChartEventsService, ChartAlarmsService], viewQueries: [{ propertyName: "chart", first: true, predicate: ["chart"], descendants: true }], ngImport: i0, template: "<c8y-title>{{ 'Data explorer' | translate }}</c8y-title>\n\n<c8y-time-context\n (contextChange)=\"onTimeContextChange($event)\"\n [changedDateContext]=\"timeProps\"\n></c8y-time-context>\n\n<c8y-action-bar-item [placement]=\"'left'\">\n <c8y-workspace-config\n [updatedConfig]=\"config\"\n (onConfigurationChange)=\"onConfigurationChange($event)\"\n ></c8y-workspace-config>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item placement=\"right\">\n <c8y-datapoints-export-selector [exportConfig]=\"exportConfig\"></c8y-datapoints-export-selector>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'more'\"\n [priority]=\"-2000\"\n>\n <button\n title=\"{{ 'Send as widget to report' | translate }}\"\n type=\"button\"\n data-cy=\"widgets-dashboard--copy-dashboard\"\n (click)=\"sendAsWidgetToReport()\"\n [disabled]=\"config?.datapoints?.length === 0 || !canAddReport\"\n >\n <i c8yIcon=\"c8y-reports\"></i>\n <span>{{ 'Send as widget to report' | translate }}</span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'more'\"\n [priority]=\"-2000\"\n>\n <button\n title=\"{{ 'Create a new report with widget' | translate }}\"\n type=\"button\"\n data-cy=\"widgets-dashboard--copy-dashboard\"\n (click)=\"createNewReportWithWidget()\"\n [disabled]=\"config?.datapoints?.length === 0 || !canAddReport\"\n >\n <i c8yIcon=\"c8y-reports\"></i>\n <span>{{ 'Create a new report with widget' | translate }}</span>\n </button>\n</c8y-action-bar-item>\n\n<div class=\"content-fullpage d-grid grid_col--auto-360 gap-24\">\n <div class=\"d-col gap-16\">\n <c8y-charts\n class=\"flex-grow data-point-explorer\"\n #chart\n [config]=\"config\"\n [alerts]=\"alerts\"\n (updateAlarmsAndEvents)=\"updateAlarmsAndEvents($event)\"\n (configChangeOnZoomOut)=\"onSliderZoom($event)\"\n (datapointOutOfSync)=\"handleDatapointOutOfSync($event)\"\n (timeRangeChangeOnRealtime)=\"updateTimeRangeOnRealtime($event)\"\n (isMarkedAreaEnabled)=\"isMarkedAreaEnabled = $event\"\n ></c8y-charts>\n <form\n class=\"m-l-48 m-r-48\"\n [formGroup]=\"formGroup\"\n >\n <div class=\"d-grid-md grid__col--4-4-4 gap-16\">\n <fieldset class=\"c8y-fieldset form-group-sm m-t-md-0 p-b-8\">\n <legend>{{ 'Axis' | translate }}</legend>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Y axis helper lines' | translate\"\n >\n <input\n name=\"yAxisSplitLines\"\n type=\"checkbox\"\n formControlName=\"yAxisSplitLines\"\n />\n <span></span>\n <span translate>Y-axis helper lines</span>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'X axis helper lines' | translate\"\n >\n <input\n name=\"xAxisSplitLines\"\n type=\"checkbox\"\n formControlName=\"xAxisSplitLines\"\n />\n <span></span>\n <span translate>X-axis helper lines</span>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Merge matching data points into single axis' | translate\"\n >\n <input\n name=\"mergeMatchingDatapoints\"\n type=\"checkbox\"\n formControlName=\"mergeMatchingDatapoints\"\n />\n <span></span>\n <span translate>Merge matching data points into single axis</span>\n </label>\n </fieldset>\n <fieldset class=\"c8y-fieldset form-group-sm m-t-md-0 p-b-8\">\n <legend>{{ 'Alarms & events' | translate }}</legend>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Show vertical line when alarm occurs' | translate\"\n >\n <input\n name=\"displayMarkedLine\"\n type=\"checkbox\"\n formControlName=\"displayMarkedLine\"\n />\n <span></span>\n <span translate>Show vertical line on every occurrence</span>\n </label>\n\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Show icon when alarm or event occurs' | translate\"\n >\n <input\n name=\"displayMarkedPoint\"\n type=\"checkbox\"\n formControlName=\"displayMarkedPoint\"\n />\n <span></span>\n <span>\n {{\n 'Show icon when triggered`When alarms and events occur the icon will be shown`'\n | translate\n }}\n </span>\n <button\n class=\"btn-dot m-l-8\"\n [attr.aria-label]=\"\n 'Some alarms or events have no matching data points. No icons will be shown for them.'\n | translate\n \"\n [tooltip]=\"\n 'Some alarms or events have no matching data points. No icons will be shown for them.'\n | translate\n \"\n container=\"body\"\n type=\"button\"\n *ngIf=\"alarmsOrEventsHaveNoMatchingDps\"\n (click)=\"$event.stopPropagation()\"\n [adaptivePosition]=\"false\"\n >\n <i\n class=\"text-info\"\n c8yIcon=\"info\"\n ></i>\n </button>\n </label>\n </fieldset>\n <fieldset class=\"c8y-fieldset form-group-sm m-t-md-0 p-b-8\">\n <legend>{{ 'Chart' | translate }}</legend>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Show labels and units' | translate\"\n >\n <input\n name=\"showLabelAndUnit\"\n type=\"checkbox\"\n formControlName=\"showLabelAndUnit\"\n />\n <span></span>\n <span translate>Display labels and units on Y-axis</span>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Show slider' | translate\"\n >\n <input\n name=\"showSlider\"\n type=\"checkbox\"\n formControlName=\"showSlider\"\n />\n <span></span>\n <span translate>Show slider</span>\n </label>\n </fieldset>\n </div>\n </form>\n </div>\n <div class=\"card inner-scroll bg-level-1\">\n <form\n class=\"bg-inherit\"\n [formGroup]=\"formGroup\"\n >\n <c8y-datapoint-selection-list\n class=\"bg-inherit separator-top d-block\"\n name=\"datapoints\"\n [minActiveCount]=\"0\"\n [defaultFormOptions]=\"datapointSelectDefaultFormOptions\"\n [config]=\"{ contextAsset: contextAsset }\"\n formControlName=\"datapoints\"\n [allowDragAndDrop]=\"true\"\n ></c8y-datapoint-selection-list>\n\n <c8y-alarm-event-selection-list\n class=\"bg-inherit\"\n name=\"alarms\"\n formControlName=\"alarms\"\n [timelineType]=\"'ALARM'\"\n [datapoints]=\"config.datapoints\"\n ></c8y-alarm-event-selection-list>\n\n <c8y-alarm-event-selection-list\n class=\"bg-inherit\"\n name=\"events\"\n formControlName=\"events\"\n [timelineType]=\"'EVENT'\"\n [datapoints]=\"config.datapoints\"\n ></c8y-alarm-event-selection-list>\n </form>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "component", type: i1.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: DatapointSelectorModule }, { kind: "component", type: i4.DatapointSelectionListComponent, selector: "c8y-datapoint-selection-list", inputs: ["actions", "allowDragAndDrop", "config", "defaultFormOptions", "maxActiveCount", "minActiveCount", "resolveContext", "listTitle"], outputs: ["isValid", "change"] }, { kind: "ngmodule", type: AlarmEventSelectorModule }, { kind: "component", type: i5.AlarmEventSelectionListComponent, selector: "c8y-alarm-event-selection-list", inputs: ["timelineType", "canRemove", "canEdit", "canDragAndDrop", "title", "addButtonLabel", "hideSource", "inline", "activeToggleAsSwitch", "omitProperties", "datapoints", "config"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i6.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"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "component", type: TimeContextComponent, selector: "c8y-time-context", inputs: ["changedDateContext", "controlsAvailable", "context"], outputs: ["contextChange"] }, { kind: "component", type: ChartsComponent, selector: "c8y-charts", inputs: ["config", "alerts"], outputs: ["configChangeOnZoomOut", "timeRangeChangeOnRealtime", "datapointOutOfSync", "updateAlarmsAndEvents", "isMarkedAreaEnabled"] }, { kind: "ngmodule", type: BsDropdownModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: A11yModule }, { kind: "component", type: DatapointsExportSelectorComponent, selector: "c8y-datapoints-export-selector", inputs: ["exportConfig"], outputs: ["isOpen"] }, { kind: "component", type: WorkspaceConfigComponent, selector: "c8y-workspace-config", inputs: ["updatedConfig"], outputs: ["onConfigurationChange"] }] }); }
|
|
256
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DatapointExplorerComponent, isStandalone: true, selector: "c8y-datapoint-explorer", providers: [ChartEventsService, ChartAlarmsService], viewQueries: [{ propertyName: "chart", first: true, predicate: ["chart"], descendants: true }], ngImport: i0, template: "<c8y-title>{{ 'Data explorer' | translate }}</c8y-title>\n\n<c8y-time-context\n (contextChange)=\"onTimeContextChange($event)\"\n [changedDateContext]=\"timeProps\"\n></c8y-time-context>\n\n<c8y-action-bar-item [placement]=\"'left'\">\n <c8y-workspace-config\n [updatedConfig]=\"config\"\n (onConfigurationChange)=\"onConfigurationChange($event)\"\n ></c8y-workspace-config>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item placement=\"right\">\n <c8y-datapoints-export-selector [exportConfig]=\"exportConfig\"></c8y-datapoints-export-selector>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'more'\"\n [priority]=\"-2000\"\n>\n <button\n title=\"{{ 'Send as widget to report' | translate }}\"\n type=\"button\"\n data-cy=\"widgets-dashboard--copy-dashboard\"\n (click)=\"sendAsWidgetToReport()\"\n [disabled]=\"config?.datapoints?.length === 0 || !canAddReport\"\n >\n <i c8yIcon=\"c8y-reports\"></i>\n <span>{{ 'Send as widget to report' | translate }}</span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'more'\"\n [priority]=\"-2000\"\n>\n <button\n title=\"{{ 'Create a new report with widget' | translate }}\"\n type=\"button\"\n data-cy=\"widgets-dashboard--copy-dashboard\"\n (click)=\"createNewReportWithWidget()\"\n [disabled]=\"config?.datapoints?.length === 0 || !canAddReport\"\n >\n <i c8yIcon=\"c8y-reports\"></i>\n <span>{{ 'Create a new report with widget' | translate }}</span>\n </button>\n</c8y-action-bar-item>\n\n<div class=\"content-fullpage d-grid grid_col--auto-360 gap-24\">\n <div class=\"d-col gap-16\">\n <c8y-charts\n class=\"flex-grow data-point-explorer\"\n #chart\n [config]=\"config\"\n [alerts]=\"alerts\"\n (updateAlarmsAndEvents)=\"updateAlarmsAndEvents($event)\"\n (configChangeOnZoomOut)=\"onSliderZoom($event)\"\n (datapointOutOfSync)=\"handleDatapointOutOfSync($event)\"\n (timeRangeChangeOnRealtime)=\"updateTimeRangeOnRealtime($event)\"\n (isMarkedAreaEnabled)=\"isMarkedAreaEnabled = $event\"\n ></c8y-charts>\n <form\n class=\"m-l-48 m-r-48\"\n [formGroup]=\"formGroup\"\n >\n <div class=\"d-grid-md grid__col--4-4-4 gap-16\">\n <fieldset class=\"c8y-fieldset form-group-sm m-t-md-0 p-b-8\">\n <legend>{{ 'Axis' | translate }}</legend>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Y axis helper lines' | translate\"\n >\n <input\n name=\"yAxisSplitLines\"\n type=\"checkbox\"\n formControlName=\"yAxisSplitLines\"\n />\n <span></span>\n <span translate>Y-axis helper lines</span>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'X axis helper lines' | translate\"\n >\n <input\n name=\"xAxisSplitLines\"\n type=\"checkbox\"\n formControlName=\"xAxisSplitLines\"\n />\n <span></span>\n <span translate>X-axis helper lines</span>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Merge matching data points into single axis' | translate\"\n >\n <input\n name=\"mergeMatchingDatapoints\"\n type=\"checkbox\"\n formControlName=\"mergeMatchingDatapoints\"\n />\n <span></span>\n <span translate>Merge matching data points into single axis</span>\n </label>\n </fieldset>\n <fieldset class=\"c8y-fieldset form-group-sm m-t-md-0 p-b-8\">\n <legend>{{ 'Alarms & events' | translate }}</legend>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Show vertical line when alarm occurs' | translate\"\n >\n <input\n name=\"displayMarkedLine\"\n type=\"checkbox\"\n formControlName=\"displayMarkedLine\"\n />\n <span></span>\n <span translate>Show vertical line on every occurrence</span>\n </label>\n\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Show icon when alarm or event occurs' | translate\"\n >\n <input\n name=\"displayMarkedPoint\"\n type=\"checkbox\"\n formControlName=\"displayMarkedPoint\"\n />\n <span></span>\n <span>\n {{\n 'Show icon when triggered`When alarms and events occur the icon will be shown`'\n | translate\n }}\n </span>\n <button\n class=\"btn-dot m-l-8\"\n [attr.aria-label]=\"\n 'Some alarms or events have no matching data points. No icons will be shown for them.'\n | translate\n \"\n [tooltip]=\"\n 'Some alarms or events have no matching data points. No icons will be shown for them.'\n | translate\n \"\n container=\"body\"\n type=\"button\"\n *ngIf=\"alarmsOrEventsHaveNoMatchingDps\"\n (click)=\"$event.stopPropagation()\"\n [adaptivePosition]=\"false\"\n >\n <i\n class=\"text-info\"\n c8yIcon=\"info\"\n ></i>\n </button>\n </label>\n </fieldset>\n <fieldset class=\"c8y-fieldset form-group-sm m-t-md-0 p-b-8\">\n <legend>{{ 'Chart' | translate }}</legend>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Show labels and units' | translate\"\n >\n <input\n name=\"showLabelAndUnit\"\n type=\"checkbox\"\n formControlName=\"showLabelAndUnit\"\n />\n <span></span>\n <span translate>Display labels and units on Y-axis</span>\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"'Show slider' | translate\"\n >\n <input\n name=\"showSlider\"\n type=\"checkbox\"\n formControlName=\"showSlider\"\n />\n <span></span>\n <span translate>Show slider</span>\n </label>\n </fieldset>\n </div>\n </form>\n </div>\n <div class=\"card inner-scroll bg-level-1\">\n <form\n class=\"bg-inherit\"\n [formGroup]=\"formGroup\"\n >\n <c8y-datapoint-selection-list\n class=\"bg-inherit separator-top d-block\"\n name=\"datapoints\"\n [minActiveCount]=\"0\"\n [defaultFormOptions]=\"datapointSelectDefaultFormOptions\"\n [config]=\"{ contextAsset: contextAsset }\"\n formControlName=\"datapoints\"\n [allowDragAndDrop]=\"true\"\n ></c8y-datapoint-selection-list>\n\n <c8y-alarm-event-selection-list\n class=\"bg-inherit\"\n name=\"alarms\"\n formControlName=\"alarms\"\n [timelineType]=\"'ALARM'\"\n [datapoints]=\"config.datapoints\"\n ></c8y-alarm-event-selection-list>\n\n <c8y-alarm-event-selection-list\n class=\"bg-inherit\"\n name=\"events\"\n formControlName=\"events\"\n [timelineType]=\"'EVENT'\"\n [datapoints]=\"config.datapoints\"\n ></c8y-alarm-event-selection-list>\n </form>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "component", type: i1.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: DatapointSelectorModule }, { kind: "component", type: i4.DatapointSelectionListComponent, selector: "c8y-datapoint-selection-list", inputs: ["actions", "allowDragAndDrop", "config", "defaultFormOptions", "maxActiveCount", "minActiveCount", "resolveContext", "listTitle"], outputs: ["isValid", "change"] }, { kind: "ngmodule", type: AlarmEventSelectorModule }, { kind: "component", type: i5.AlarmEventSelectionListComponent, selector: "c8y-alarm-event-selection-list", inputs: ["timelineType", "canRemove", "canEdit", "canDragAndDrop", "title", "addButtonLabel", "hideSource", "inline", "activeToggleAsSwitch", "omitProperties", "datapoints", "config"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i6.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"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "component", type: TimeContextComponent, selector: "c8y-time-context", inputs: ["changedDateContext", "controlsAvailable", "context"], outputs: ["contextChange"] }, { kind: "component", type: ChartsComponent, selector: "c8y-charts", inputs: ["config", "alerts"], outputs: ["configChangeOnZoomOut", "timeRangeChangeOnRealtime", "datapointOutOfSync", "updateAlarmsAndEvents", "isMarkedAreaEnabled"] }, { kind: "ngmodule", type: BsDropdownModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: A11yModule }, { kind: "component", type: DatapointsExportSelectorComponent, selector: "c8y-datapoints-export-selector", inputs: ["containerClass", "exportConfig"], outputs: ["isOpen"] }, { kind: "component", type: WorkspaceConfigComponent, selector: "c8y-workspace-config", inputs: ["updatedConfig"], outputs: ["onConfigurationChange"] }] }); }
|
|
257
257
|
}
|
|
258
258
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DatapointExplorerComponent, decorators: [{
|
|
259
259
|
type: Component,
|
|
@@ -276,4 +276,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
276
276
|
type: ViewChild,
|
|
277
277
|
args: ['chart']
|
|
278
278
|
}] } });
|
|
279
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50LWV4cGxvcmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2RhdGFwb2ludC1leHBsb3Jlci92aWV3L2RhdGFwb2ludC1leHBsb3Jlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9kYXRhcG9pbnQtZXhwbG9yZXIvdmlldy9kYXRhcG9pbnQtZXhwbG9yZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUNMLFlBQVksRUFDWixZQUFZLEVBQ1osbUJBQW1CLEVBQ25CLFVBQVUsRUFFVixXQUFXLEVBQ1gsT0FBTyxFQUNQLFdBQVcsRUFDWCxXQUFXLEVBQ1osTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNwRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN4RSxPQUFPLEVBRUwsdUJBQXVCLEVBRXhCLE1BQU0sd0NBQXdDLENBQUM7QUFTaEQsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsZUFBZSxFQUNoQixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXRELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJB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QUUsQ0FBQyxLQUFLLENBQUM7U0FDekIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0F2UVUsMEJBQTBCO21HQUExQiwwQkFBMEIscUVBRjFCLENBQUMsa0JBQWtCLEVBQUUsa0JBQWtCLENBQUMsMEhDdkVyRCxxNk9BZ09BLDJDRHZLSSxVQUFVLDJsREFDVixZQUFZLDhCQUNaLHVCQUF1QixxVEFDdkIsd0JBQXdCLHFVQUN4QixhQUFhLGlrQkFDYixhQUFhLCtCQUNiLG9CQUFvQix5SkFDcEIsZUFBZSwyTkFDZixnQkFBZ0IsOEJBQ2hCLFdBQVcsOEJBQ1gsVUFBVSwrQkFDVixpQ0FBaUMsMEhBQ2pDLHdCQUF3Qjs7NEZBSWYsMEJBQTBCO2tCQXJCdEMsU0FBUzsrQkFDRSx3QkFBd0IsY0FFdEIsSUFBSSxXQUNQO3dCQUNQLFVBQVU7d0JBQ1YsWUFBWTt3QkFDWix1QkFBdUI7d0JBQ3ZCLHdCQUF3Qjt3QkFDeEIsYUFBYTt3QkFDYixhQUFhO3dCQUNiLG9CQUFvQjt3QkFDcEIsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLFdBQVc7d0JBQ1gsVUFBVTt3QkFDVixpQ0FBaUM7d0JBQ2pDLHdCQUF3QjtxQkFDekIsYUFDVSxDQUFDLGtCQUFrQixFQUFFLGtCQUFrQixDQUFDO3dEQUcvQixLQUFLO3NCQUF4QixTQUFTO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIERlc3Ryb3lSZWYsIEVsZW1lbnRSZWYsIGluamVjdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBbGVydFNlcnZpY2UsXG4gIENvbW1vbk1vZHVsZSxcbiAgQ29udGV4dFJvdXRlU2VydmljZSxcbiAgQ29yZU1vZHVsZSxcbiAgRHluYW1pY0NvbXBvbmVudEFsZXJ0QWdncmVnYXRvcixcbiAgRm9ybXNNb2R1bGUsXG4gIGdldHRleHQsXG4gIFBlcm1pc3Npb25zLFxuICBWaWV3Q29udGV4dFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEFsYXJtRXZlbnRTZWxlY3Rvck1vZHVsZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvYWxhcm0tZXZlbnQtc2VsZWN0b3InO1xuaW1wb3J0IHsgVGltZUNvbnRleHRDb21wb25lbnQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL3RpbWUtY29udGV4dCc7XG5pbXBvcnQge1xuICBEYXRhcG9pbnRBdHRyaWJ1dGVzRm9ybUNvbmZpZyxcbiAgRGF0YXBvaW50U2VsZWN0b3JNb2R1bGUsXG4gIEtQSURldGFpbHNcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9kYXRhcG9pbnQtc2VsZWN0b3InO1xuaW1wb3J0IHtcbiAgQWxhcm1EZXRhaWxzRXh0ZW5kZWQsXG4gIEFsYXJtT3JFdmVudEV4dGVuZGVkLFxuICBEYXRhcG9pbnRzR3JhcGhLUElEZXRhaWxzLFxuICBEYXRhcG9pbnRzR3JhcGhXaWRnZXRDb25maWcsXG4gIEV2ZW50RGV0YWlsc0V4dGVuZGVkLFxuICBUaW1lQ29udGV4dFByb3BzXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZWNoYXJ0L21vZGVscyc7XG5pbXBvcnQge1xuICBDaGFydEFsYXJtc1NlcnZpY2UsXG4gIENoYXJ0RXZlbnRzU2VydmljZSxcbiAgQ2hhcnRzQ29tcG9uZW50XG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZWNoYXJ0JztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCc0Ryb3Bkb3duTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9kcm9wZG93bic7XG5pbXBvcnQgeyBhZ2dyZWdhdGlvblR5cGUsIElJZGVudGlmaWVkIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvdG9vbHRpcCc7XG5pbXBvcnQgeyBQb3BvdmVyTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9wb3BvdmVyJztcbmltcG9ydCB7IEludGVydmFsIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pbnRlcnZhbC1waWNrZXInO1xuaW1wb3J0IHsgQnNNb2RhbFNlcnZpY2UgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IEExMXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBTZW5kQXNXaWRnZXRUb1JlcG9ydE1vZGFsIH0gZnJvbSAnLi9zZW5kLWFzLXdpZGdldC10by1yZXBvcnQtbW9kYWwvc2VuZC1hcy13aWRnZXQtdG8tcmVwb3J0LW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb250ZXh0RGFzaGJvYXJkU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvY29udGV4dC1kYXNoYm9hcmQnO1xuaW1wb3J0IHtcbiAgRGF0YXBvaW50c0V4cG9ydFNlbGVjdG9yQ29tcG9uZW50LFxuICBFeHBvcnRDb25maWdcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvcic7XG5pbXBvcnQgeyBDcmVhdGVOZXdSZXBvcnRNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vY3JlYXRlLW5ldy1yZXBvcnQtbW9kYWwvY3JlYXRlLW5ldy1yZXBvcnQtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGFFeHBsb3JlclNlcnZpY2UgfSBmcm9tICcuL2RhdGFwb2ludC1leHBsb3Jlci5zZXJ2aWNlJztcbmltcG9ydCB7IFdvcmtzcGFjZUNvbmZpZ0NvbXBvbmVudCB9IGZyb20gJy4vY29uZmlndXJhdGlvbi93b3Jrc3BhY2UtY29uZmlndXJhdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZGF0YXBvaW50LWV4cGxvcmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGFwb2ludC1leHBsb3Jlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb3JlTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBEYXRhcG9pbnRTZWxlY3Rvck1vZHVsZSxcbiAgICBBbGFybUV2ZW50U2VsZWN0b3JNb2R1bGUsXG4gICAgVG9vbHRpcE1vZHVsZSxcbiAgICBQb3BvdmVyTW9kdWxlLFxuICAgIFRpbWVDb250ZXh0Q29tcG9uZW50LFxuICAgIENoYXJ0c0NvbXBvbmVudCxcbiAgICBCc0Ryb3Bkb3duTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEExMXlNb2R1bGUsXG4gICAgRGF0YXBvaW50c0V4cG9ydFNlbGVjdG9yQ29tcG9uZW50LFxuICAgIFdvcmtzcGFjZUNvbmZpZ0NvbXBvbmVudFxuICBdLFxuICBwcm92aWRlcnM6IFtDaGFydEV2ZW50c1NlcnZpY2UsIENoYXJ0QWxhcm1zU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgRGF0YXBvaW50RXhwbG9yZXJDb21wb25lbnQge1xuICBAVmlld0NoaWxkKCdjaGFydCcpIGNoYXJ0OiBFbGVtZW50UmVmO1xuICBjb25maWc6IERhdGFwb2ludHNHcmFwaFdpZGdldENvbmZpZyA9IHsgZGF0YXBvaW50czogW10sIGFsYXJtc0V2ZW50c0NvbmZpZ3M6IFtdIH07XG4gIGV4cG9ydENvbmZpZzogRXhwb3J0Q29uZmlnO1xuICBhbGVydHM6IER5bmFtaWNDb21wb25lbnRBbGVydEFnZ3JlZ2F0b3IgfCB1bmRlZmluZWQ7XG4gIGFsYXJtczogQWxhcm1EZXRhaWxzRXh0ZW5kZWRbXSA9IFtdO1xuICBldmVudHM6IEV2ZW50RGV0YWlsc0V4dGVuZGVkW10gPSBbXTtcbiAgZGF0YXBvaW50c091dE9mU3luYyA9IG5ldyBNYXA8RGF0YXBvaW50c0dyYXBoS1BJRGV0YWlscywgYm9vbGVhbj4oKTtcbiAgY29udGV4dEFzc2V0OiBJSWRlbnRpZmllZDtcbiAgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gIGhhc0F0TGVhc3RPbmVEYXRhcG9pbnRBY3RpdmUgPSB0cnVlO1xuICBoYXNBdExlYXN0T25lQWxhcm1BY3RpdmUgPSB0cnVlO1xuICBpc01hcmtlZEFyZWFFbmFibGVkID0gZmFsc2U7XG4gIGFsYXJtc09yRXZlbnRzSGF2ZU5vTWF0Y2hpbmdEcHMgPSBmYWxzZTtcbiAgY2FuQWRkUmVwb3J0ID0gZmFsc2U7XG4gIHRpbWVQcm9wczoge1xuICAgIGRhdGVGcm9tOiBEYXRlO1xuICAgIGRhdGVUbzogRGF0ZTtcbiAgICBpbnRlcnZhbD86IEludGVydmFsWydpZCddO1xuICAgIHJlYWx0aW1lPzogYm9vbGVhbjtcbiAgICBhZ2dyZWdhdGlvbj86IGFnZ3JlZ2F0aW9uVHlwZSB8IG51bGw7XG4gIH07XG4gIGRhdGFwb2ludFNlbGVjdERlZmF1bHRGb3JtT3B0aW9uczogUGFydGlhbDxEYXRhcG9pbnRBdHRyaWJ1dGVzRm9ybUNvbmZpZz4gPSB7XG4gICAgc2hvd1JhbmdlOiB0cnVlLFxuICAgIHNob3dDaGFydDogdHJ1ZVxuICB9O1xuXG4gICNkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGF0YUV4cGxvcmVyU2VydmljZSA9IGluamVjdChEYXRhRXhwbG9yZXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBmb3JtQnVpbGRlciA9IGluamVjdChGb3JtQnVpbGRlcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWxlcnRTZXJ2aWNlID0gaW5qZWN0KEFsZXJ0U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYnNNb2RhbFNlcnZpY2UgPSBpbmplY3QoQnNNb2RhbFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHBlcm1pc3Npb25zID0gaW5qZWN0KFBlcm1pc3Npb25zKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb250ZXh0RGFzaGJvYXJkU2VydmljZSA9IGluamVjdChDb250ZXh0RGFzaGJvYXJkU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZhdGVkUm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbnRleHRSb3V0ZVNlcnZpY2UgPSBpbmplY3QoQ29udGV4dFJvdXRlU2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLmluaXRGb3JtKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRleHRBc3NldCA9IHRoaXMuaW5pdGlhbGl6ZUNvbnRleHRTb3VyY2VJZCgpO1xuICAgIHRoaXMuY2hlY2tGb3JNYXRjaGluZ0RhdGFwb2ludHMoKTtcbiAgICB0aGlzLmNhbkFkZFJlcG9ydCA9IHRoaXMucGVybWlzc2lvbnMuaGFzQW55Um9sZShbXG4gICAgICBQZXJtaXNzaW9ucy5ST0xFX0lOVkVOVE9SWV9DUkVBVEUsXG4gICAgICBQZXJtaXNzaW9ucy5ST0xFX0lOVkVOVE9SWV9BRE1JTixcbiAgICAgIFBlcm1pc3Npb25zLlJPTEVfTUFOQUdFRF9PQkpFQ1RfQURNSU4sXG4gICAgICBQZXJtaXNzaW9ucy5ST0xFX01BTkFHRURfT0JKRUNUX0NSRUFURVxuICAgIF0pO1xuICAgIHRoaXMuZm9ybUdyb3VwLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuI2Rlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZShjb25maWdDaGFuZ2UgPT4ge1xuICAgICAgICBjb25zdCB7IGFsYXJtcywgZXZlbnRzLCAuLi5jb25maWdWYWx1ZXMgfSA9IGNvbmZpZ0NoYW5nZTtcbiAgICAgICAgdGhpcy5jb25maWcgPSB7XG4gICAgICAgICAgLi4uY29uZmlnVmFsdWVzLFxuICAgICAgICAgIGFsYXJtc0V2ZW50c0NvbmZpZ3M6IFsuLi4oYWxhcm1zIHx8IFtdKSwgLi4uKGV2ZW50cyB8fCBbXSldXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMudXBkYXRlRXhwb3J0Q29uZmlnKCk7XG4gICAgICAgIHRoaXMuY2hlY2tGb3JNYXRjaGluZ0RhdGFwb2ludHMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgb25UaW1lQ29udGV4dENoYW5nZSh0aW1lUHJvcHM6IFRpbWVDb250ZXh0UHJvcHMpOiB2b2lkIHtcbiAgICBjb25zdCByZWFsdGltZSA9IHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLnJlYWx0aW1lLnZhbHVlO1xuICAgIGlmICh0aW1lUHJvcHMucmVhbHRpbWUgIT09IHJlYWx0aW1lKSB7XG4gICAgICB0aGlzLmZvcm1Hcm91cC5wYXRjaFZhbHVlKHsgcmVhbHRpbWU6IHRpbWVQcm9wcy5yZWFsdGltZSB9KTtcbiAgICB9XG4gICAgaWYgKHRpbWVQcm9wcy5yZWFsdGltZSkge1xuICAgICAgaWYgKHRpbWVQcm9wcy5jdXJyZW50RGF0ZUNvbnRleHRJbnRlcnZhbCAhPT0gdGhpcy5mb3JtR3JvdXAudmFsdWUuaW50ZXJ2YWwpIHtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZSh7IGludGVydmFsOiB0aW1lUHJvcHMuY3VycmVudERhdGVDb250ZXh0SW50ZXJ2YWwgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUoe1xuICAgICAgZGF0ZUZyb206IHRpbWVQcm9wcy5jdXJyZW50RGF0ZUNvbnRleHRGcm9tRGF0ZSxcbiAgICAgIGRhdGVUbzogdGltZVByb3BzLmN1cnJlbnREYXRlQ29udGV4dFRvRGF0ZSxcbiAgICAgIGludGVydmFsOiB0aW1lUHJvcHMuY3VycmVudERhdGVDb250ZXh0SW50ZXJ2YWwsXG4gICAgICBhZ2dyZWdhdGlvbjogdGltZVByb3BzLmFnZ3JlZ2F0aW9uIHx8IG51bGxcbiAgICB9KTtcbiAgfVxuXG4gIG9uQ29uZmlndXJhdGlvbkNoYW5nZShjb25maWc6IERhdGFwb2ludHNHcmFwaFdpZGdldENvbmZpZyk6IHZvaWQge1xuICAgIGlmIChjb25maWcuZGF0ZUZyb20gJiYgY29uZmlnLmRhdGVUbykge1xuICAgICAgdGhpcy50aW1lUHJvcHMgPSB7XG4gICAgICAgIGRhdGVGcm9tOiBuZXcgRGF0ZShjb25maWc/LmRhdGVGcm9tKSxcbiAgICAgICAgZGF0ZVRvOiBuZXcgRGF0ZShjb25maWc/LmRhdGVUbyksXG4gICAgICAgIGludGVydmFsOiBjb25maWc/LmludGVydmFsLFxuICAgICAgICByZWFsdGltZTogY29uZmlnPy5yZWFsdGltZSxcbiAgICAgICAgYWdncmVnYXRpb246IGNvbmZpZz8ucmVhbHRpbWUgPyBudWxsIDogY29uZmlnPy5hZ2dyZWdhdGlvblxuICAgICAgfTtcbiAgICB9XG4gICAgdGhpcy5hbGFybXMgPSBjb25maWcuYWxhcm1zRXZlbnRzQ29uZmlncy5maWx0ZXIoYWUgPT4gYWUudGltZWxpbmVUeXBlID09PSAnQUxBUk0nKTtcbiAgICB0aGlzLmV2ZW50cyA9IGNvbmZpZy5hbGFybXNFdmVudHNDb25maWdzLmZpbHRlcihhZSA9PiBhZS50aW1lbGluZVR5cGUgPT09ICdFVkVOVCcpO1xuICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUoeyBhbGFybXM6IHRoaXMuYWxhcm1zLCBldmVudHM6IHRoaXMuZXZlbnRzLCAuLi5jb25maWcgfSk7XG4gIH1cblxuICBvblNsaWRlclpvb20odGltZVByb3BzOiB7IGRhdGVGcm9tOiBEYXRlOyBkYXRlVG86IERhdGU7IGludGVydmFsPzogSW50ZXJ2YWxbJ2lkJ10gfSkge1xuICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUodGltZVByb3BzKTtcbiAgICB0aGlzLnRpbWVQcm9wcyA9IHsgLi4udGltZVByb3BzLCByZWFsdGltZTogZmFsc2UgfTtcbiAgfVxuXG4gIHVwZGF0ZVRpbWVSYW5nZU9uUmVhbHRpbWUoXG4gICAgdGltZVJhbmdlOiBQaWNrPERhdGFwb2ludHNHcmFwaFdpZGdldENvbmZpZywgJ2RhdGVGcm9tJyB8ICdkYXRlVG8nPlxuICApOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1Hcm91cC5wYXRjaFZhbHVlKHRpbWVSYW5nZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICB9XG5cbiAgY3JlYXRlTmV3UmVwb3J0V2l0aFdpZGdldCgpOiB2b2lkIHtcbiAgICBjb25zdCBtb2RhbCA9IHRoaXMuYnNNb2RhbFNlcnZpY2Uuc2hvdyhDcmVhdGVOZXdSZXBvcnRNb2RhbENvbXBvbmVudCwge1xuICAgICAgaWdub3JlQmFja2Ryb3BDbGljazogdHJ1ZSxcbiAgICAgIGtleWJvYXJkOiBmYWxzZSxcbiAgICAgIGNsYXNzOiAnbW9kYWwtc20nXG4gICAgfSk7XG4gICAgY29uc3QgY29udGVudCA9IG1vZGFsLmNvbnRlbnQgYXMgQ3JlYXRlTmV3UmVwb3J0TW9kYWxDb21wb25lbnQ7XG4gICAgY29udGVudC5yZXN1bHRcbiAgICAgIC50aGVuKGFzeW5jIHJlcG9ydCA9PiB7XG4gICAgICAgIGNvbnN0IHJlcG9ydERhc2hib2FyZCA9IGF3YWl0IHRoaXMuZGF0YUV4cGxvcmVyU2VydmljZS5mZXRjaFJlcG9ydERhc2hib2FyZChyZXBvcnQuaWQpO1xuICAgICAgICBjb25zdCB3aWRnZXQgPSB0aGlzLmNyZWF0ZVdpZGdldENvbmZpZygpO1xuICAgICAgICByZXBvcnREYXNoYm9hcmQuYzh5X0Rhc2hib2FyZC5jaGlsZHJlbiA9IHsgW3dpZGdldC5pZF06IHdpZGdldCB9O1xuICAgICAgICBhd2FpdCB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLnVwZGF0ZShyZXBvcnREYXNoYm9hcmQpO1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKGdldHRleHQoJ1JlcG9ydCBhbmQgd2lkZ2V0IGNyZWF0ZWQuJykpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgaWYgKGUpIHtcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5kYW5nZXIoZ2V0dGV4dCgnRmFpbGVkIHRvIGNyZWF0ZSByZXBvcnQgYW5kIHdpZGdldC4nKSk7XG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBlbHNlOiBtb2RhbCB3YXMgY2xvc2VkXG4gICAgICB9KTtcbiAgfVxuXG4gIHNlbmRBc1dpZGdldFRvUmVwb3J0KCk6IHZvaWQge1xuICAgIGNvbnN0IG1vZGFsID0gdGhpcy5ic01vZGFsU2VydmljZS5zaG93KFNlbmRBc1dpZGdldFRvUmVwb3J0TW9kYWwsIHtcbiAgICAgIGlnbm9yZUJhY2tkcm9wQ2xpY2s6IHRydWUsXG4gICAgICBrZXlib2FyZDogZmFsc2UsXG4gICAgICBjbGFzczogJ21vZGFsLXNtJ1xuICAgIH0pO1xuICAgIGNvbnN0IGNvbnRlbnQgPSBtb2RhbC5jb250ZW50IGFzIFNlbmRBc1dpZGdldFRvUmVwb3J0TW9kYWw7XG4gICAgY29udGVudC5yZXN1bHRcbiAgICAgIC50aGVuKGFzeW5jIHJlcG9ydHMgPT4ge1xuICAgICAgICBjb25zdCBzZWxlY3RlZFJlcG9ydHMgPSBPYmplY3QuZW50cmllcyhyZXBvcnRzKS5maWx0ZXIoKFssIHZhbHVlXSkgPT4gdmFsdWUpO1xuICAgICAgICBjb25zdCByZXBvcnRQcm9taXNlcyA9IHNlbGVjdGVkUmVwb3J0cy5tYXAoYXN5bmMgKFtyZXBvcnRJZF0pID0+IHtcbiAgICAgICAgICBjb25zdCByZXBvcnREYXNoYm9hcmQgPSBhd2FpdCB0aGlzLmRhdGFFeHBsb3JlclNlcnZpY2UuZmV0Y2hSZXBvcnREYXNoYm9hcmQocmVwb3J0SWQpO1xuICAgICAgICAgIGNvbnN0IHdpZGdldCA9IHRoaXMuY3JlYXRlV2lkZ2V0Q29uZmlnKCk7XG4gICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSByZXBvcnREYXNoYm9hcmQuYzh5X0Rhc2hib2FyZC5jaGlsZHJlbiB8fCB7fTtcbiAgICAgICAgICByZXBvcnREYXNoYm9hcmQuYzh5X0Rhc2hib2FyZC5jaGlsZHJlbiA9IHsgLi4uY2hpbGRyZW4sIFt3aWRnZXQuaWRdOiB3aWRnZXQgfTtcbiAgICAgICAgICBhd2FpdCB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLnVwZGF0ZShyZXBvcnREYXNoYm9hcmQpO1xuICAgICAgICB9KTtcblxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChyZXBvcnRQcm9taXNlcyk7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3MoZ2V0dGV4dCgnV2lkZ2V0IGNyZWF0ZWQuJykpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgaWYgKGUpIHtcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5kYW5nZXIoZ2V0dGV4dCgnRmFpbGVkIHRvIGNyZWF0ZSB3aWRnZXQuJykpO1xuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZWxzZTogbW9kYWwgd2FzIGNsb3NlZFxuICAgICAgfSk7XG4gIH1cblxuICB1cGRhdGVBbGFybXNBbmRFdmVudHMoYWxhcm1zRXZlbnRzQ29uZmlnczogQWxhcm1PckV2ZW50RXh0ZW5kZWRbXSk6IHZvaWQge1xuICAgIHRoaXMuYWxhcm1zID0gYWxhcm1zRXZlbnRzQ29uZmlncy5maWx0ZXIodGhpcy5pc0FsYXJtKTtcbiAgICB0aGlzLmV2ZW50cyA9IGFsYXJtc0V2ZW50c0NvbmZpZ3MuZmlsdGVyKHRoaXMuaXNFdmVudCk7XG4gICAgdGhpcy5oYXNBdExlYXN0T25lQWxhcm1BY3RpdmUgPSB0aGlzLmhhc0FjdGl2ZUFsYXJtcyh0aGlzLmFsYXJtcyk7XG4gIH1cblxuICBoYW5kbGVEYXRhcG9pbnRPdXRPZlN5bmMoZHBPdXRPZlN5bmM6IERhdGFwb2ludHNHcmFwaEtQSURldGFpbHMpOiB2b2lkIHtcbiAgICBjb25zdCBrZXkgPSAoZHA6IEtQSURldGFpbHMpID0+IGRwLl9fdGFyZ2V0Py5pZCArIGRwLmZyYWdtZW50ICsgZHAuc2VyaWVzO1xuICAgIGNvbnN0IGRwTWF0Y2ggPSB0aGlzLmNvbmZpZy5kYXRhcG9pbnRzPy5maW5kKGRwID0+IGtleShkcCkgPT09IGtleShkcE91dE9mU3luYykpO1xuICAgIGlmICghZHBNYXRjaCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRhdGFwb2ludHNPdXRPZlN5bmMuc2V0KGRwTWF0Y2gsIHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0FsYXJtKGl0ZW06IEFsYXJtT3JFdmVudEV4dGVuZGVkKTogaXRlbSBpcyBBbGFybURldGFpbHNFeHRlbmRlZCB7XG4gICAgcmV0dXJuIGl0ZW0udGltZWxpbmVUeXBlID09PSAnQUxBUk0nO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0V2ZW50KGl0ZW06IEFsYXJtT3JFdmVudEV4dGVuZGVkKTogaXRlbSBpcyBFdmVudERldGFpbHNFeHRlbmRlZCB7XG4gICAgcmV0dXJuIGl0ZW0udGltZWxpbmVUeXBlID09PSAnRVZFTlQnO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNBY3RpdmVBbGFybXMoYWxhcm1zOiBBbGFybURldGFpbHNFeHRlbmRlZFtdKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGFsYXJtcy5sZW5ndGggPiAwICYmIGFsYXJtcy5zb21lKGFsYXJtID0+IGFsYXJtLl9fYWN0aXZlKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tGb3JNYXRjaGluZ0RhdGFwb2ludHMoKTogdm9pZCB7XG4gICAgY29uc3QgYWxsTWF0Y2ggPSB0aGlzLmNvbmZpZz8uYWxhcm1zRXZlbnRzQ29uZmlncz8uZXZlcnkoYWUgPT5cbiAgICAgIHRoaXMuZm9ybUdyb3VwLnZhbHVlLmRhdGFwb2ludHM/LnNvbWUoZHAgPT4gZHAuX190YXJnZXQ/LmlkID09PSBhZS5fX3RhcmdldD8uaWQpXG4gICAgKTtcblxuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgIHRoaXMuYWxhcm1zT3JFdmVudHNIYXZlTm9NYXRjaGluZ0RwcyA9ICFhbGxNYXRjaDtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRXhwb3J0Q29uZmlnKCk6IHZvaWQge1xuICAgIGNvbnN0IGRhdGFwb2ludERldGFpbHMgPSB0aGlzLmNvbmZpZy5kYXRhcG9pbnRzXG4gICAgICAuZmlsdGVyKCh7IF9fYWN0aXZlIH0pID0+IF9fYWN0aXZlKVxuICAgICAgLm1hcCgoeyBfX3RhcmdldCwgZnJhZ21lbnQsIHNlcmllcyB9KSA9PiAoe1xuICAgICAgICBkZXZpY2VOYW1lOiBfX3RhcmdldC5uYW1lLFxuICAgICAgICBzb3VyY2U6IF9fdGFyZ2V0LmlkLFxuICAgICAgICB2YWx1ZUZyYWdtZW50U2VyaWVzOiBzZXJpZXMsXG4gICAgICAgIHZhbHVlRnJhZ21lbnRUeXBlOiBmcmFnbWVudFxuICAgICAgfSkpO1xuXG4gICAgaWYgKGRhdGFwb2ludERldGFpbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmV4cG9ydENvbmZpZyA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZXhwb3J0Q29uZmlnID0ge1xuICAgICAgICBhZ2dyZWdhdGlvbjogdGhpcy5jb25maWcuYWdncmVnYXRpb24sXG4gICAgICAgIGRhdGVGcm9tOiBuZXcgRGF0ZSh0aGlzLmNvbmZpZy5kYXRlRnJvbSkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgZGF0ZVRvOiBuZXcgRGF0ZSh0aGlzLmNvbmZpZy5kYXRlVG8pLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIGRhdGFwb2ludERldGFpbHM6IGRhdGFwb2ludERldGFpbHNcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplQ29udGV4dFNvdXJjZUlkKCk6IElJZGVudGlmaWVkIHtcbiAgICBjb25zdCByb3V0ZUNvbnRleHQgPSB0aGlzLmNvbnRleHRSb3V0ZVNlcnZpY2UuZ2V0Q29udGV4dERhdGEodGhpcy5hY3RpdmF0ZWRSb3V0ZSk7XG4gICAgaWYgKCFyb3V0ZUNvbnRleHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgeyBjb250ZXh0LCBjb250ZXh0RGF0YSB9ID0gcm91dGVDb250ZXh0O1xuICAgIGlmIChbVmlld0NvbnRleHQuRGV2aWNlLCBWaWV3Q29udGV4dC5Hcm91cF0uaW5jbHVkZXMoY29udGV4dCkpIHtcbiAgICAgIHJldHVybiBjb250ZXh0RGF0YTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVdpZGdldENvbmZpZygpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiAnRGF0YSBwb2ludHMgZ3JhcGggMicsXG4gICAgICB0aXRsZTogZ2V0dGV4dCgnRGF0YSBwb2ludHMgZ3JhcGggMicpLFxuICAgICAgaWQ6IFN0cmluZyhNYXRoLnJhbmRvbSgpKS5zdWJzdHIoMiksXG4gICAgICBfd2lkdGg6IDI0LFxuICAgICAgX2hlaWdodDogNSxcbiAgICAgIGNvbmZpZzogdGhpcy5jb25maWdcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0Rm9ybSgpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBkYXRhcG9pbnRzOiBbdGhpcy5jb25maWcuZGF0YXBvaW50cyB8fCBbXV0sXG4gICAgICBhbGFybXM6IFt0aGlzLmFsYXJtcyB8fCBbXV0sXG4gICAgICBldmVudHM6IFt0aGlzLmV2ZW50cyB8fCBbXV0sXG4gICAgICBkYXRlRnJvbTogW3RoaXMuY29uZmlnLmRhdGVGcm9tIHx8IChudWxsIGFzIERhdGUpXSxcbiAgICAgIGRhdGVUbzogW3RoaXMuY29uZmlnLmRhdGVGcm9tIHx8IChudWxsIGFzIERhdGUpXSxcbiAgICAgIGludGVydmFsOiBbdGhpcy5jb25maWcuaW50ZXJ2YWwgfHwgJ2hvdXJzJ10sXG4gICAgICBhZ2dyZWdhdGlvbjogW3RoaXMuY29uZmlnLmFnZ3JlZ2F0aW9uIHx8IChudWxsIGFzIGFnZ3JlZ2F0aW9uVHlwZSB8IG51bGwpXSxcbiAgICAgIHJlYWx0aW1lOiBbdGhpcy5jb25maWcucmVhbHRpbWUgfHwgZmFsc2VdLFxuICAgICAgZGlzcGxheU1hcmtlZExpbmU6IFt0cnVlLCBbXV0sXG4gICAgICBkaXNwbGF5TWFya2VkUG9pbnQ6IFt0cnVlLCBbXV0sXG4gICAgICBtZXJnZU1hdGNoaW5nRGF0YXBvaW50czogW3RydWUsIFtdXSxcbiAgICAgIHNob3dMYWJlbEFuZFVuaXQ6IFt0cnVlLCBbXV0sXG4gICAgICBzaG93U2xpZGVyOiBbdHJ1ZSwgW11dLFxuICAgICAgZGlzcGxheURhdGVTZWxlY3Rpb246IFtmYWxzZSwgW11dLFxuICAgICAgeUF4aXNTcGxpdExpbmVzOiBbZmFsc2VdLFxuICAgICAgeEF4aXNTcGxpdExpbmVzOiBbZmFsc2VdXG4gICAgfSk7XG4gIH1cbn1cbiIsIjxjOHktdGl0bGU+e3sgJ0RhdGEgZXhwbG9yZXInIHwgdHJhbnNsYXRlIH19PC9jOHktdGl0bGU+XG5cbjxjOHktdGltZS1jb250ZXh0XG4gIChjb250ZXh0Q2hhbmdlKT1cIm9uVGltZUNvbnRleHRDaGFuZ2UoJGV2ZW50KVwiXG4gIFtjaGFuZ2VkRGF0ZUNvbnRleHRdPVwidGltZVByb3BzXCJcbj48L2M4eS10aW1lLWNvbnRleHQ+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtIFtwbGFjZW1lbnRdPVwiJ2xlZnQnXCI+XG4gIDxjOHktd29ya3NwYWNlLWNvbmZpZ1xuICAgIFt1cGRhdGVkQ29uZmlnXT1cImNvbmZpZ1wiXG4gICAgKG9uQ29uZmlndXJhdGlvbkNoYW5nZSk9XCJvbkNvbmZpZ3VyYXRpb25DaGFuZ2UoJGV2ZW50KVwiXG4gID48L2M4eS13b3Jrc3BhY2UtY29uZmlnPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbSBwbGFjZW1lbnQ9XCJyaWdodFwiPlxuICA8Yzh5LWRhdGFwb2ludHMtZXhwb3J0LXNlbGVjdG9yIFtleHBvcnRDb25maWddPVwiZXhwb3J0Q29uZmlnXCI+PC9jOHktZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3I+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtXG4gIFtwbGFjZW1lbnRdPVwiJ21vcmUnXCJcbiAgW3ByaW9yaXR5XT1cIi0yMDAwXCJcbj5cbiAgPGJ1dHRvblxuICAgIHRpdGxlPVwie3sgJ1NlbmQgYXMgd2lkZ2V0IHRvIHJlcG9ydCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIGRhdGEtY3k9XCJ3aWRnZXRzLWRhc2hib2FyZC0tY29weS1kYXNoYm9hcmRcIlxuICAgIChjbGljayk9XCJzZW5kQXNXaWRnZXRUb1JlcG9ydCgpXCJcbiAgICBbZGlzYWJsZWRdPVwiY29uZmlnPy5kYXRhcG9pbnRzPy5sZW5ndGggPT09IDAgfHwgIWNhbkFkZFJlcG9ydFwiXG4gID5cbiAgICA8aSBjOHlJY29uPVwiYzh5LXJlcG9ydHNcIj48L2k+XG4gICAgPHNwYW4+e3sgJ1NlbmQgYXMgd2lkZ2V0IHRvIHJlcG9ydCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gIDwvYnV0dG9uPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbVxuICBbcGxhY2VtZW50XT1cIidtb3JlJ1wiXG4gIFtwcmlvcml0eV09XCItMjAwMFwiXG4+XG4gIDxidXR0b25cbiAgICB0aXRsZT1cInt7ICdDcmVhdGUgYSBuZXcgcmVwb3J0IHdpdGggd2lkZ2V0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgZGF0YS1jeT1cIndpZGdldHMtZGFzaGJvYXJkLS1jb3B5LWRhc2hib2FyZFwiXG4gICAgKGNsaWNrKT1cImNyZWF0ZU5ld1JlcG9ydFdpdGhXaWRnZXQoKVwiXG4gICAgW2Rpc2FibGVkXT1cImNvbmZpZz8uZGF0YXBvaW50cz8ubGVuZ3RoID09PSAwIHx8ICFjYW5BZGRSZXBvcnRcIlxuICA+XG4gICAgPGkgYzh5SWNvbj1cImM4eS1yZXBvcnRzXCI+PC9pPlxuICAgIDxzcGFuPnt7ICdDcmVhdGUgYSBuZXcgcmVwb3J0IHdpdGggd2lkZ2V0JyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgPC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxkaXYgY2xhc3M9XCJjb250ZW50LWZ1bGxwYWdlIGQtZ3JpZCBncmlkX2NvbC0tYXV0by0zNjAgZ2FwLTI0XCI+XG4gIDxkaXYgY2xhc3M9XCJkLWNvbCBnYXAtMTZcIj5cbiAgICA8Yzh5LWNoYXJ0c1xuICAgICAgY2xhc3M9XCJmbGV4LWdyb3cgZGF0YS1wb2ludC1leHBsb3JlclwiXG4gICAgICAjY2hhcnRcbiAgICAgIFtjb25maWddPVwiY29uZmlnXCJcbiAgICAgIFthbGVydHNdPVwiYWxlcnRzXCJcbiAgICAgICh1cGRhdGVBbGFybXNBbmRFdmVudHMpPVwidXBkYXRlQWxhcm1zQW5kRXZlbnRzKCRldmVudClcIlxuICAgICAgKGNvbmZpZ0NoYW5nZU9uWm9vbU91dCk9XCJvblNsaWRlclpvb20oJGV2ZW50KVwiXG4gICAgICAoZGF0YXBvaW50T3V0T2ZTeW5jKT1cImhhbmRsZURhdGFwb2ludE91dE9mU3luYygkZXZlbnQpXCJcbiAgICAgICh0aW1lUmFuZ2VDaGFuZ2VPblJlYWx0aW1lKT1cInVwZGF0ZVRpbWVSYW5nZU9uUmVhbHRpbWUoJGV2ZW50KVwiXG4gICAgICAoaXNNYXJrZWRBcmVhRW5hYmxlZCk9XCJpc01hcmtlZEFyZWFFbmFibGVkID0gJGV2ZW50XCJcbiAgICA+PC9jOHktY2hhcnRzPlxuICAgIDxmb3JtXG4gICAgICBjbGFzcz1cIm0tbC00OCBtLXItNDhcIlxuICAgICAgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJkLWdyaWQtbWQgZ3JpZF9fY29sLS00LTQtNCBnYXAtMTZcIj5cbiAgICAgICAgPGZpZWxkc2V0IGNsYXNzPVwiYzh5LWZpZWxkc2V0IGZvcm0tZ3JvdXAtc20gbS10LW1kLTAgcC1iLThcIj5cbiAgICAgICAgICA8bGVnZW5kPnt7ICdBeGlzJyB8IHRyYW5zbGF0ZSB9fTwvbGVnZW5kPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgY2xhc3M9XCJjOHktY2hlY2tib3hcIlxuICAgICAgICAgICAgW3RpdGxlXT1cIidZIGF4aXMgaGVscGVyIGxpbmVzJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIG5hbWU9XCJ5QXhpc1NwbGl0TGluZXNcIlxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ5QXhpc1NwbGl0TGluZXNcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5ZLWF4aXMgaGVscGVyIGxpbmVzPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBjbGFzcz1cImM4eS1jaGVja2JveFwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ1ggYXhpcyBoZWxwZXIgbGluZXMnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgbmFtZT1cInhBeGlzU3BsaXRMaW5lc1wiXG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInhBeGlzU3BsaXRMaW5lc1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPlgtYXhpcyBoZWxwZXIgbGluZXM8L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGNsYXNzPVwiYzh5LWNoZWNrYm94XCJcbiAgICAgICAgICAgIFt0aXRsZV09XCInTWVyZ2UgbWF0Y2hpbmcgZGF0YSBwb2ludHMgaW50byBzaW5nbGUgYXhpcycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBuYW1lPVwibWVyZ2VNYXRjaGluZ0RhdGFwb2ludHNcIlxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtZXJnZU1hdGNoaW5nRGF0YXBvaW50c1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPk1lcmdlIG1hdGNoaW5nIGRhdGEgcG9pbnRzIGludG8gc2luZ2xlIGF4aXM8L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9maWVsZHNldD5cbiAgICAgICAgPGZpZWxkc2V0IGNsYXNzPVwiYzh5LWZpZWxkc2V0IGZvcm0tZ3JvdXAtc20gbS10LW1kLTAgcC1iLThcIj5cbiAgICAgICAgICA8bGVnZW5kPnt7ICdBbGFybXMgJiBldmVudHMnIHwgdHJhbnNsYXRlIH19PC9sZWdlbmQ+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBjbGFzcz1cImM4eS1jaGVja2JveFwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ1Nob3cgdmVydGljYWwgbGluZSB3aGVuIGFsYXJtIG9jY3VycycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBuYW1lPVwiZGlzcGxheU1hcmtlZExpbmVcIlxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkaXNwbGF5TWFya2VkTGluZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPlNob3cgdmVydGljYWwgbGluZSBvbiBldmVyeSBvY2N1cnJlbmNlPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGNsYXNzPVwiYzh5LWNoZWNrYm94XCJcbiAgICAgICAgICAgIFt0aXRsZV09XCInU2hvdyBpY29uIHdoZW4gYWxhcm0gb3IgZXZlbnQgb2NjdXJzJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIG5hbWU9XCJkaXNwbGF5TWFya2VkUG9pbnRcIlxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkaXNwbGF5TWFya2VkUG9pbnRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICdTaG93IGljb24gd2hlbiB0cmlnZ2VyZWRgV2hlbiBhbGFybXMgYW5kIGV2ZW50cyBvY2N1ciB0aGUgaWNvbiB3aWxsIGJlIHNob3duYCdcbiAgICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWRvdCBtLWwtOFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgJ1NvbWUgYWxhcm1zIG9yIGV2ZW50cyBoYXZlIG5vIG1hdGNoaW5nIGRhdGEgcG9pbnRzLiBObyBpY29ucyB3aWxsIGJlIHNob3duIGZvciB0aGVtLidcbiAgICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFt0b29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICdTb21lIGFsYXJtcyBvciBldmVudHMgaGF2ZSBubyBtYXRjaGluZyBkYXRhIHBvaW50cy4gTm8gaWNvbnMgd2lsbCBiZSBzaG93biBmb3IgdGhlbS4nXG4gICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiYWxhcm1zT3JFdmVudHNIYXZlTm9NYXRjaGluZ0Rwc1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICBbYWRhcHRpdmVQb3NpdGlvbl09XCJmYWxzZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWluZm9cIlxuICAgICAgICAgICAgICAgIGM4eUljb249XCJpbmZvXCJcbiAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZmllbGRzZXQ+XG4gICAgICAgIDxmaWVsZHNldCBjbGFzcz1cImM4eS1maWVsZHNldCBmb3JtLWdyb3VwLXNtIG0tdC1tZC0wIHAtYi04XCI+XG4gICAgICAgICAgPGxlZ2VuZD57eyAnQ2hhcnQnIHwgdHJhbnNsYXRlIH19PC9sZWdlbmQ+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBjbGFzcz1cImM4eS1jaGVja2JveFwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ1Nob3cgbGFiZWxzIGFuZCB1bml0cycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBuYW1lPVwic2hvd0xhYmVsQW5kVW5pdFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInNob3dMYWJlbEFuZFVuaXRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5EaXNwbGF5IGxhYmVscyBhbmQgdW5pdHMgb24gWS1heGlzPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBjbGFzcz1cImM4eS1jaGVja2JveFwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ1Nob3cgc2xpZGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIG5hbWU9XCJzaG93U2xpZGVyXCJcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2hvd1NsaWRlclwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPlNob3cgc2xpZGVyPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZmllbGRzZXQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY2FyZCBpbm5lci1zY3JvbGwgYmctbGV2ZWwtMVwiPlxuICAgIDxmb3JtXG4gICAgICBjbGFzcz1cImJnLWluaGVyaXRcIlxuICAgICAgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIlxuICAgID5cbiAgICAgIDxjOHktZGF0YXBvaW50LXNlbGVjdGlvbi1saXN0XG4gICAgICAgIGNsYXNzPVwiYmctaW5oZXJpdCBzZXBhcmF0b3ItdG9wIGQtYmxvY2tcIlxuICAgICAgICBuYW1lPVwiZGF0YXBvaW50c1wiXG4gICAgICAgIFttaW5BY3RpdmVDb3VudF09XCIwXCJcbiAgICAgICAgW2RlZmF1bHRGb3JtT3B0aW9uc109XCJkYXRhcG9pbnRTZWxlY3REZWZhdWx0Rm9ybU9wdGlvbnNcIlxuICAgICAgICBbY29uZmlnXT1cInsgY29udGV4dEFzc2V0OiBjb250ZXh0QXNzZXQgfVwiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRhdGFwb2ludHNcIlxuICAgICAgICBbYWxsb3dEcmFnQW5kRHJvcF09XCJ0cnVlXCJcbiAgICAgID48L2M4eS1kYXRhcG9pbnQtc2VsZWN0aW9uLWxpc3Q+XG5cbiAgICAgIDxjOHktYWxhcm0tZXZlbnQtc2VsZWN0aW9uLWxpc3RcbiAgICAgICAgY2xhc3M9XCJiZy1pbmhlcml0XCJcbiAgICAgICAgbmFtZT1cImFsYXJtc1wiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFsYXJtc1wiXG4gICAgICAgIFt0aW1lbGluZVR5cGVdPVwiJ0FMQVJNJ1wiXG4gICAgICAgIFtkYXRhcG9pbnRzXT1cImNvbmZpZy5kYXRhcG9pbnRzXCJcbiAgICAgID48L2M4eS1hbGFybS1ldmVudC1zZWxlY3Rpb24tbGlzdD5cblxuICAgICAgPGM4eS1hbGFybS1ldmVudC1zZWxlY3Rpb24tbGlzdFxuICAgICAgICBjbGFzcz1cImJnLWluaGVyaXRcIlxuICAgICAgICBuYW1lPVwiZXZlbnRzXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZXZlbnRzXCJcbiAgICAgICAgW3RpbWVsaW5lVHlwZV09XCInRVZFTlQnXCJcbiAgICAgICAgW2RhdGFwb2ludHNdPVwiY29uZmlnLmRhdGFwb2ludHNcIlxuICAgICAgPjwvYzh5LWFsYXJtLWV2ZW50LXNlbGVjdGlvbi1saXN0PlxuICAgIDwvZm9ybT5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
279
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50LWV4cGxvcmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2RhdGFwb2ludC1leHBsb3Jlci92aWV3L2RhdGFwb2ludC1leHBsb3Jlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9kYXRhcG9pbnQtZXhwbG9yZXIvdmlldy9kYXRhcG9pbnQtZXhwbG9yZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUNMLFlBQVksRUFDWixZQUFZLEVBQ1osbUJBQW1CLEVBQ25CLFVBQVUsRUFFVixXQUFXLEVBQ1gsT0FBTyxFQUNQLFdBQVcsRUFDWCxXQUFXLEVBQ1osTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNwRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN4RSxPQUFPLEVBRUwsdUJBQXVCLEVBRXhCLE1BQU0sd0NBQXdDLENBQUM7QUFTaEQsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsZUFBZSxFQUNoQixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXRELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJB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QUUsQ0FBQyxLQUFLLENBQUM7U0FDekIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0F2UVUsMEJBQTBCO21HQUExQiwwQkFBMEIscUVBRjFCLENBQUMsa0JBQWtCLEVBQUUsa0JBQWtCLENBQUMsMEhDdkVyRCxxNk9BZ09BLDJDRHZLSSxVQUFVLDJsREFDVixZQUFZLDhCQUNaLHVCQUF1QixxVEFDdkIsd0JBQXdCLHFVQUN4QixhQUFhLGlrQkFDYixhQUFhLCtCQUNiLG9CQUFvQix5SkFDcEIsZUFBZSwyTkFDZixnQkFBZ0IsOEJBQ2hCLFdBQVcsOEJBQ1gsVUFBVSwrQkFDVixpQ0FBaUMsNElBQ2pDLHdCQUF3Qjs7NEZBSWYsMEJBQTBCO2tCQXJCdEMsU0FBUzsrQkFDRSx3QkFBd0IsY0FFdEIsSUFBSSxXQUNQO3dCQUNQLFVBQVU7d0JBQ1YsWUFBWTt3QkFDWix1QkFBdUI7d0JBQ3ZCLHdCQUF3Qjt3QkFDeEIsYUFBYTt3QkFDYixhQUFhO3dCQUNiLG9CQUFvQjt3QkFDcEIsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLFdBQVc7d0JBQ1gsVUFBVTt3QkFDVixpQ0FBaUM7d0JBQ2pDLHdCQUF3QjtxQkFDekIsYUFDVSxDQUFDLGtCQUFrQixFQUFFLGtCQUFrQixDQUFDO3dEQUcvQixLQUFLO3NCQUF4QixTQUFTO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIERlc3Ryb3lSZWYsIEVsZW1lbnRSZWYsIGluamVjdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBbGVydFNlcnZpY2UsXG4gIENvbW1vbk1vZHVsZSxcbiAgQ29udGV4dFJvdXRlU2VydmljZSxcbiAgQ29yZU1vZHVsZSxcbiAgRHluYW1pY0NvbXBvbmVudEFsZXJ0QWdncmVnYXRvcixcbiAgRm9ybXNNb2R1bGUsXG4gIGdldHRleHQsXG4gIFBlcm1pc3Npb25zLFxuICBWaWV3Q29udGV4dFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEFsYXJtRXZlbnRTZWxlY3Rvck1vZHVsZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvYWxhcm0tZXZlbnQtc2VsZWN0b3InO1xuaW1wb3J0IHsgVGltZUNvbnRleHRDb21wb25lbnQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL3RpbWUtY29udGV4dCc7XG5pbXBvcnQge1xuICBEYXRhcG9pbnRBdHRyaWJ1dGVzRm9ybUNvbmZpZyxcbiAgRGF0YXBvaW50U2VsZWN0b3JNb2R1bGUsXG4gIEtQSURldGFpbHNcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9kYXRhcG9pbnQtc2VsZWN0b3InO1xuaW1wb3J0IHtcbiAgQWxhcm1EZXRhaWxzRXh0ZW5kZWQsXG4gIEFsYXJtT3JFdmVudEV4dGVuZGVkLFxuICBEYXRhcG9pbnRzR3JhcGhLUElEZXRhaWxzLFxuICBEYXRhcG9pbnRzR3JhcGhXaWRnZXRDb25maWcsXG4gIEV2ZW50RGV0YWlsc0V4dGVuZGVkLFxuICBUaW1lQ29udGV4dFByb3BzXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZWNoYXJ0L21vZGVscyc7XG5pbXBvcnQge1xuICBDaGFydEFsYXJtc1NlcnZpY2UsXG4gIENoYXJ0RXZlbnRzU2VydmljZSxcbiAgQ2hhcnRzQ29tcG9uZW50XG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZWNoYXJ0JztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCc0Ryb3Bkb3duTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9kcm9wZG93bic7XG5pbXBvcnQgeyBhZ2dyZWdhdGlvblR5cGUsIElJZGVudGlmaWVkIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvdG9vbHRpcCc7XG5pbXBvcnQgeyBQb3BvdmVyTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9wb3BvdmVyJztcbmltcG9ydCB7IEludGVydmFsIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pbnRlcnZhbC1waWNrZXInO1xuaW1wb3J0IHsgQnNNb2RhbFNlcnZpY2UgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IEExMXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBTZW5kQXNXaWRnZXRUb1JlcG9ydE1vZGFsIH0gZnJvbSAnLi9zZW5kLWFzLXdpZGdldC10by1yZXBvcnQtbW9kYWwvc2VuZC1hcy13aWRnZXQtdG8tcmVwb3J0LW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb250ZXh0RGFzaGJvYXJkU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvY29udGV4dC1kYXNoYm9hcmQnO1xuaW1wb3J0IHtcbiAgRGF0YXBvaW50c0V4cG9ydFNlbGVjdG9yQ29tcG9uZW50LFxuICBFeHBvcnRDb25maWdcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvcic7XG5pbXBvcnQgeyBDcmVhdGVOZXdSZXBvcnRNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vY3JlYXRlLW5ldy1yZXBvcnQtbW9kYWwvY3JlYXRlLW5ldy1yZXBvcnQtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGFFeHBsb3JlclNlcnZpY2UgfSBmcm9tICcuL2RhdGFwb2ludC1leHBsb3Jlci5zZXJ2aWNlJztcbmltcG9ydCB7IFdvcmtzcGFjZUNvbmZpZ0NvbXBvbmVudCB9IGZyb20gJy4vY29uZmlndXJhdGlvbi93b3Jrc3BhY2UtY29uZmlndXJhdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZGF0YXBvaW50LWV4cGxvcmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGFwb2ludC1leHBsb3Jlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb3JlTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBEYXRhcG9pbnRTZWxlY3Rvck1vZHVsZSxcbiAgICBBbGFybUV2ZW50U2VsZWN0b3JNb2R1bGUsXG4gICAgVG9vbHRpcE1vZHVsZSxcbiAgICBQb3BvdmVyTW9kdWxlLFxuICAgIFRpbWVDb250ZXh0Q29tcG9uZW50LFxuICAgIENoYXJ0c0NvbXBvbmVudCxcbiAgICBCc0Ryb3Bkb3duTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEExMXlNb2R1bGUsXG4gICAgRGF0YXBvaW50c0V4cG9ydFNlbGVjdG9yQ29tcG9uZW50LFxuICAgIFdvcmtzcGFjZUNvbmZpZ0NvbXBvbmVudFxuICBdLFxuICBwcm92aWRlcnM6IFtDaGFydEV2ZW50c1NlcnZpY2UsIENoYXJ0QWxhcm1zU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgRGF0YXBvaW50RXhwbG9yZXJDb21wb25lbnQge1xuICBAVmlld0NoaWxkKCdjaGFydCcpIGNoYXJ0OiBFbGVtZW50UmVmO1xuICBjb25maWc6IERhdGFwb2ludHNHcmFwaFdpZGdldENvbmZpZyA9IHsgZGF0YXBvaW50czogW10sIGFsYXJtc0V2ZW50c0NvbmZpZ3M6IFtdIH07XG4gIGV4cG9ydENvbmZpZzogRXhwb3J0Q29uZmlnO1xuICBhbGVydHM6IER5bmFtaWNDb21wb25lbnRBbGVydEFnZ3JlZ2F0b3IgfCB1bmRlZmluZWQ7XG4gIGFsYXJtczogQWxhcm1EZXRhaWxzRXh0ZW5kZWRbXSA9IFtdO1xuICBldmVudHM6IEV2ZW50RGV0YWlsc0V4dGVuZGVkW10gPSBbXTtcbiAgZGF0YXBvaW50c091dE9mU3luYyA9IG5ldyBNYXA8RGF0YXBvaW50c0dyYXBoS1BJRGV0YWlscywgYm9vbGVhbj4oKTtcbiAgY29udGV4dEFzc2V0OiBJSWRlbnRpZmllZDtcbiAgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gIGhhc0F0TGVhc3RPbmVEYXRhcG9pbnRBY3RpdmUgPSB0cnVlO1xuICBoYXNBdExlYXN0T25lQWxhcm1BY3RpdmUgPSB0cnVlO1xuICBpc01hcmtlZEFyZWFFbmFibGVkID0gZmFsc2U7XG4gIGFsYXJtc09yRXZlbnRzSGF2ZU5vTWF0Y2hpbmdEcHMgPSBmYWxzZTtcbiAgY2FuQWRkUmVwb3J0ID0gZmFsc2U7XG4gIHRpbWVQcm9wczoge1xuICAgIGRhdGVGcm9tOiBEYXRlO1xuICAgIGRhdGVUbzogRGF0ZTtcbiAgICBpbnRlcnZhbD86IEludGVydmFsWydpZCddO1xuICAgIHJlYWx0aW1lPzogYm9vbGVhbjtcbiAgICBhZ2dyZWdhdGlvbj86IGFnZ3JlZ2F0aW9uVHlwZSB8IG51bGw7XG4gIH07XG4gIGRhdGFwb2ludFNlbGVjdERlZmF1bHRGb3JtT3B0aW9uczogUGFydGlhbDxEYXRhcG9pbnRBdHRyaWJ1dGVzRm9ybUNvbmZpZz4gPSB7XG4gICAgc2hvd1JhbmdlOiB0cnVlLFxuICAgIHNob3dDaGFydDogdHJ1ZVxuICB9O1xuXG4gICNkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGF0YUV4cGxvcmVyU2VydmljZSA9IGluamVjdChEYXRhRXhwbG9yZXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBmb3JtQnVpbGRlciA9IGluamVjdChGb3JtQnVpbGRlcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWxlcnRTZXJ2aWNlID0gaW5qZWN0KEFsZXJ0U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYnNNb2RhbFNlcnZpY2UgPSBpbmplY3QoQnNNb2RhbFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHBlcm1pc3Npb25zID0gaW5qZWN0KFBlcm1pc3Npb25zKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb250ZXh0RGFzaGJvYXJkU2VydmljZSA9IGluamVjdChDb250ZXh0RGFzaGJvYXJkU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZhdGVkUm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbnRleHRSb3V0ZVNlcnZpY2UgPSBpbmplY3QoQ29udGV4dFJvdXRlU2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLmluaXRGb3JtKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRleHRBc3NldCA9IHRoaXMuaW5pdGlhbGl6ZUNvbnRleHRTb3VyY2VJZCgpO1xuICAgIHRoaXMuY2hlY2tGb3JNYXRjaGluZ0RhdGFwb2ludHMoKTtcbiAgICB0aGlzLmNhbkFkZFJlcG9ydCA9IHRoaXMucGVybWlzc2lvbnMuaGFzQW55Um9sZShbXG4gICAgICBQZXJtaXNzaW9ucy5ST0xFX0lOVkVOVE9SWV9DUkVBVEUsXG4gICAgICBQZXJtaXNzaW9ucy5ST0xFX0lOVkVOVE9SWV9BRE1JTixcbiAgICAgIFBlcm1pc3Npb25zLlJPTEVfTUFOQUdFRF9PQkpFQ1RfQURNSU4sXG4gICAgICBQZXJtaXNzaW9ucy5ST0xFX01BTkFHRURfT0JKRUNUX0NSRUFURVxuICAgIF0pO1xuICAgIHRoaXMuZm9ybUdyb3VwLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuI2Rlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZShjb25maWdDaGFuZ2UgPT4ge1xuICAgICAgICBjb25zdCB7IGFsYXJtcywgZXZlbnRzLCAuLi5jb25maWdWYWx1ZXMgfSA9IGNvbmZpZ0NoYW5nZTtcbiAgICAgICAgdGhpcy5jb25maWcgPSB7XG4gICAgICAgICAgLi4uY29uZmlnVmFsdWVzLFxuICAgICAgICAgIGFsYXJtc0V2ZW50c0NvbmZpZ3M6IFsuLi4oYWxhcm1zIHx8IFtdKSwgLi4uKGV2ZW50cyB8fCBbXSldXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMudXBkYXRlRXhwb3J0Q29uZmlnKCk7XG4gICAgICAgIHRoaXMuY2hlY2tGb3JNYXRjaGluZ0RhdGFwb2ludHMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgb25UaW1lQ29udGV4dENoYW5nZSh0aW1lUHJvcHM6IFRpbWVDb250ZXh0UHJvcHMpOiB2b2lkIHtcbiAgICBjb25zdCByZWFsdGltZSA9IHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLnJlYWx0aW1lLnZhbHVlO1xuICAgIGlmICh0aW1lUHJvcHMucmVhbHRpbWUgIT09IHJlYWx0aW1lKSB7XG4gICAgICB0aGlzLmZvcm1Hcm91cC5wYXRjaFZhbHVlKHsgcmVhbHRpbWU6IHRpbWVQcm9wcy5yZWFsdGltZSB9KTtcbiAgICB9XG4gICAgaWYgKHRpbWVQcm9wcy5yZWFsdGltZSkge1xuICAgICAgaWYgKHRpbWVQcm9wcy5jdXJyZW50RGF0ZUNvbnRleHRJbnRlcnZhbCAhPT0gdGhpcy5mb3JtR3JvdXAudmFsdWUuaW50ZXJ2YWwpIHtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZSh7IGludGVydmFsOiB0aW1lUHJvcHMuY3VycmVudERhdGVDb250ZXh0SW50ZXJ2YWwgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUoe1xuICAgICAgZGF0ZUZyb206IHRpbWVQcm9wcy5jdXJyZW50RGF0ZUNvbnRleHRGcm9tRGF0ZSxcbiAgICAgIGRhdGVUbzogdGltZVByb3BzLmN1cnJlbnREYXRlQ29udGV4dFRvRGF0ZSxcbiAgICAgIGludGVydmFsOiB0aW1lUHJvcHMuY3VycmVudERhdGVDb250ZXh0SW50ZXJ2YWwsXG4gICAgICBhZ2dyZWdhdGlvbjogdGltZVByb3BzLmFnZ3JlZ2F0aW9uIHx8IG51bGxcbiAgICB9KTtcbiAgfVxuXG4gIG9uQ29uZmlndXJhdGlvbkNoYW5nZShjb25maWc6IERhdGFwb2ludHNHcmFwaFdpZGdldENvbmZpZyk6IHZvaWQge1xuICAgIGlmIChjb25maWcuZGF0ZUZyb20gJiYgY29uZmlnLmRhdGVUbykge1xuICAgICAgdGhpcy50aW1lUHJvcHMgPSB7XG4gICAgICAgIGRhdGVGcm9tOiBuZXcgRGF0ZShjb25maWc/LmRhdGVGcm9tKSxcbiAgICAgICAgZGF0ZVRvOiBuZXcgRGF0ZShjb25maWc/LmRhdGVUbyksXG4gICAgICAgIGludGVydmFsOiBjb25maWc/LmludGVydmFsLFxuICAgICAgICByZWFsdGltZTogY29uZmlnPy5yZWFsdGltZSxcbiAgICAgICAgYWdncmVnYXRpb246IGNvbmZpZz8ucmVhbHRpbWUgPyBudWxsIDogY29uZmlnPy5hZ2dyZWdhdGlvblxuICAgICAgfTtcbiAgICB9XG4gICAgdGhpcy5hbGFybXMgPSBjb25maWcuYWxhcm1zRXZlbnRzQ29uZmlncy5maWx0ZXIoYWUgPT4gYWUudGltZWxpbmVUeXBlID09PSAnQUxBUk0nKTtcbiAgICB0aGlzLmV2ZW50cyA9IGNvbmZpZy5hbGFybXNFdmVudHNDb25maWdzLmZpbHRlcihhZSA9PiBhZS50aW1lbGluZVR5cGUgPT09ICdFVkVOVCcpO1xuICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUoeyBhbGFybXM6IHRoaXMuYWxhcm1zLCBldmVudHM6IHRoaXMuZXZlbnRzLCAuLi5jb25maWcgfSk7XG4gIH1cblxuICBvblNsaWRlclpvb20odGltZVByb3BzOiB7IGRhdGVGcm9tOiBEYXRlOyBkYXRlVG86IERhdGU7IGludGVydmFsPzogSW50ZXJ2YWxbJ2lkJ10gfSkge1xuICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUodGltZVByb3BzKTtcbiAgICB0aGlzLnRpbWVQcm9wcyA9IHsgLi4udGltZVByb3BzLCByZWFsdGltZTogZmFsc2UgfTtcbiAgfVxuXG4gIHVwZGF0ZVRpbWVSYW5nZU9uUmVhbHRpbWUoXG4gICAgdGltZVJhbmdlOiBQaWNrPERhdGFwb2ludHNHcmFwaFdpZGdldENvbmZpZywgJ2RhdGVGcm9tJyB8ICdkYXRlVG8nPlxuICApOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1Hcm91cC5wYXRjaFZhbHVlKHRpbWVSYW5nZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICB9XG5cbiAgY3JlYXRlTmV3UmVwb3J0V2l0aFdpZGdldCgpOiB2b2lkIHtcbiAgICBjb25zdCBtb2RhbCA9IHRoaXMuYnNNb2RhbFNlcnZpY2Uuc2hvdyhDcmVhdGVOZXdSZXBvcnRNb2RhbENvbXBvbmVudCwge1xuICAgICAgaWdub3JlQmFja2Ryb3BDbGljazogdHJ1ZSxcbiAgICAgIGtleWJvYXJkOiBmYWxzZSxcbiAgICAgIGNsYXNzOiAnbW9kYWwtc20nXG4gICAgfSk7XG4gICAgY29uc3QgY29udGVudCA9IG1vZGFsLmNvbnRlbnQgYXMgQ3JlYXRlTmV3UmVwb3J0TW9kYWxDb21wb25lbnQ7XG4gICAgY29udGVudC5yZXN1bHRcbiAgICAgIC50aGVuKGFzeW5jIHJlcG9ydCA9PiB7XG4gICAgICAgIGNvbnN0IHJlcG9ydERhc2hib2FyZCA9IGF3YWl0IHRoaXMuZGF0YUV4cGxvcmVyU2VydmljZS5mZXRjaFJlcG9ydERhc2hib2FyZChyZXBvcnQuaWQpO1xuICAgICAgICBjb25zdCB3aWRnZXQgPSB0aGlzLmNyZWF0ZVdpZGdldENvbmZpZygpO1xuICAgICAgICByZXBvcnREYXNoYm9hcmQuYzh5X0Rhc2hib2FyZC5jaGlsZHJlbiA9IHsgW3dpZGdldC5pZF06IHdpZGdldCB9O1xuICAgICAgICBhd2FpdCB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLnVwZGF0ZShyZXBvcnREYXNoYm9hcmQpO1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKGdldHRleHQoJ1JlcG9ydCBhbmQgd2lkZ2V0IGNyZWF0ZWQuJykpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgaWYgKGUpIHtcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5kYW5nZXIoZ2V0dGV4dCgnRmFpbGVkIHRvIGNyZWF0ZSByZXBvcnQgYW5kIHdpZGdldC4nKSk7XG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBlbHNlOiBtb2RhbCB3YXMgY2xvc2VkXG4gICAgICB9KTtcbiAgfVxuXG4gIHNlbmRBc1dpZGdldFRvUmVwb3J0KCk6IHZvaWQge1xuICAgIGNvbnN0IG1vZGFsID0gdGhpcy5ic01vZGFsU2VydmljZS5zaG93KFNlbmRBc1dpZGdldFRvUmVwb3J0TW9kYWwsIHtcbiAgICAgIGlnbm9yZUJhY2tkcm9wQ2xpY2s6IHRydWUsXG4gICAgICBrZXlib2FyZDogZmFsc2UsXG4gICAgICBjbGFzczogJ21vZGFsLXNtJ1xuICAgIH0pO1xuICAgIGNvbnN0IGNvbnRlbnQgPSBtb2RhbC5jb250ZW50IGFzIFNlbmRBc1dpZGdldFRvUmVwb3J0TW9kYWw7XG4gICAgY29udGVudC5yZXN1bHRcbiAgICAgIC50aGVuKGFzeW5jIHJlcG9ydHMgPT4ge1xuICAgICAgICBjb25zdCBzZWxlY3RlZFJlcG9ydHMgPSBPYmplY3QuZW50cmllcyhyZXBvcnRzKS5maWx0ZXIoKFssIHZhbHVlXSkgPT4gdmFsdWUpO1xuICAgICAgICBjb25zdCByZXBvcnRQcm9taXNlcyA9IHNlbGVjdGVkUmVwb3J0cy5tYXAoYXN5bmMgKFtyZXBvcnRJZF0pID0+IHtcbiAgICAgICAgICBjb25zdCByZXBvcnREYXNoYm9hcmQgPSBhd2FpdCB0aGlzLmRhdGFFeHBsb3JlclNlcnZpY2UuZmV0Y2hSZXBvcnREYXNoYm9hcmQocmVwb3J0SWQpO1xuICAgICAgICAgIGNvbnN0IHdpZGdldCA9IHRoaXMuY3JlYXRlV2lkZ2V0Q29uZmlnKCk7XG4gICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSByZXBvcnREYXNoYm9hcmQuYzh5X0Rhc2hib2FyZC5jaGlsZHJlbiB8fCB7fTtcbiAgICAgICAgICByZXBvcnREYXNoYm9hcmQuYzh5X0Rhc2hib2FyZC5jaGlsZHJlbiA9IHsgLi4uY2hpbGRyZW4sIFt3aWRnZXQuaWRdOiB3aWRnZXQgfTtcbiAgICAgICAgICBhd2FpdCB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLnVwZGF0ZShyZXBvcnREYXNoYm9hcmQpO1xuICAgICAgICB9KTtcblxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChyZXBvcnRQcm9taXNlcyk7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3MoZ2V0dGV4dCgnV2lkZ2V0IGNyZWF0ZWQuJykpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgaWYgKGUpIHtcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5kYW5nZXIoZ2V0dGV4dCgnRmFpbGVkIHRvIGNyZWF0ZSB3aWRnZXQuJykpO1xuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZWxzZTogbW9kYWwgd2FzIGNsb3NlZFxuICAgICAgfSk7XG4gIH1cblxuICB1cGRhdGVBbGFybXNBbmRFdmVudHMoYWxhcm1zRXZlbnRzQ29uZmlnczogQWxhcm1PckV2ZW50RXh0ZW5kZWRbXSk6IHZvaWQge1xuICAgIHRoaXMuYWxhcm1zID0gYWxhcm1zRXZlbnRzQ29uZmlncy5maWx0ZXIodGhpcy5pc0FsYXJtKTtcbiAgICB0aGlzLmV2ZW50cyA9IGFsYXJtc0V2ZW50c0NvbmZpZ3MuZmlsdGVyKHRoaXMuaXNFdmVudCk7XG4gICAgdGhpcy5oYXNBdExlYXN0T25lQWxhcm1BY3RpdmUgPSB0aGlzLmhhc0FjdGl2ZUFsYXJtcyh0aGlzLmFsYXJtcyk7XG4gIH1cblxuICBoYW5kbGVEYXRhcG9pbnRPdXRPZlN5bmMoZHBPdXRPZlN5bmM6IERhdGFwb2ludHNHcmFwaEtQSURldGFpbHMpOiB2b2lkIHtcbiAgICBjb25zdCBrZXkgPSAoZHA6IEtQSURldGFpbHMpID0+IGRwLl9fdGFyZ2V0Py5pZCArIGRwLmZyYWdtZW50ICsgZHAuc2VyaWVzO1xuICAgIGNvbnN0IGRwTWF0Y2ggPSB0aGlzLmNvbmZpZy5kYXRhcG9pbnRzPy5maW5kKGRwID0+IGtleShkcCkgPT09IGtleShkcE91dE9mU3luYykpO1xuICAgIGlmICghZHBNYXRjaCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRhdGFwb2ludHNPdXRPZlN5bmMuc2V0KGRwTWF0Y2gsIHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0FsYXJtKGl0ZW06IEFsYXJtT3JFdmVudEV4dGVuZGVkKTogaXRlbSBpcyBBbGFybURldGFpbHNFeHRlbmRlZCB7XG4gICAgcmV0dXJuIGl0ZW0udGltZWxpbmVUeXBlID09PSAnQUxBUk0nO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0V2ZW50KGl0ZW06IEFsYXJtT3JFdmVudEV4dGVuZGVkKTogaXRlbSBpcyBFdmVudERldGFpbHNFeHRlbmRlZCB7XG4gICAgcmV0dXJuIGl0ZW0udGltZWxpbmVUeXBlID09PSAnRVZFTlQnO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNBY3RpdmVBbGFybXMoYWxhcm1zOiBBbGFybURldGFpbHNFeHRlbmRlZFtdKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGFsYXJtcy5sZW5ndGggPiAwICYmIGFsYXJtcy5zb21lKGFsYXJtID0+IGFsYXJtLl9fYWN0aXZlKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tGb3JNYXRjaGluZ0RhdGFwb2ludHMoKTogdm9pZCB7XG4gICAgY29uc3QgYWxsTWF0Y2ggPSB0aGlzLmNvbmZpZz8uYWxhcm1zRXZlbnRzQ29uZmlncz8uZXZlcnkoYWUgPT5cbiAgICAgIHRoaXMuZm9ybUdyb3VwLnZhbHVlLmRhdGFwb2ludHM/LnNvbWUoZHAgPT4gZHAuX190YXJnZXQ/LmlkID09PSBhZS5fX3RhcmdldD8uaWQpXG4gICAgKTtcblxuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgIHRoaXMuYWxhcm1zT3JFdmVudHNIYXZlTm9NYXRjaGluZ0RwcyA9ICFhbGxNYXRjaDtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRXhwb3J0Q29uZmlnKCk6IHZvaWQge1xuICAgIGNvbnN0IGRhdGFwb2ludERldGFpbHMgPSB0aGlzLmNvbmZpZy5kYXRhcG9pbnRzXG4gICAgICAuZmlsdGVyKCh7IF9fYWN0aXZlIH0pID0+IF9fYWN0aXZlKVxuICAgICAgLm1hcCgoeyBfX3RhcmdldCwgZnJhZ21lbnQsIHNlcmllcyB9KSA9PiAoe1xuICAgICAgICBkZXZpY2VOYW1lOiBfX3RhcmdldC5uYW1lLFxuICAgICAgICBzb3VyY2U6IF9fdGFyZ2V0LmlkLFxuICAgICAgICB2YWx1ZUZyYWdtZW50U2VyaWVzOiBzZXJpZXMsXG4gICAgICAgIHZhbHVlRnJhZ21lbnRUeXBlOiBmcmFnbWVudFxuICAgICAgfSkpO1xuXG4gICAgaWYgKGRhdGFwb2ludERldGFpbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmV4cG9ydENvbmZpZyA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZXhwb3J0Q29uZmlnID0ge1xuICAgICAgICBhZ2dyZWdhdGlvbjogdGhpcy5jb25maWcuYWdncmVnYXRpb24sXG4gICAgICAgIGRhdGVGcm9tOiBuZXcgRGF0ZSh0aGlzLmNvbmZpZy5kYXRlRnJvbSkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgZGF0ZVRvOiBuZXcgRGF0ZSh0aGlzLmNvbmZpZy5kYXRlVG8pLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIGRhdGFwb2ludERldGFpbHM6IGRhdGFwb2ludERldGFpbHNcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplQ29udGV4dFNvdXJjZUlkKCk6IElJZGVudGlmaWVkIHtcbiAgICBjb25zdCByb3V0ZUNvbnRleHQgPSB0aGlzLmNvbnRleHRSb3V0ZVNlcnZpY2UuZ2V0Q29udGV4dERhdGEodGhpcy5hY3RpdmF0ZWRSb3V0ZSk7XG4gICAgaWYgKCFyb3V0ZUNvbnRleHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgeyBjb250ZXh0LCBjb250ZXh0RGF0YSB9ID0gcm91dGVDb250ZXh0O1xuICAgIGlmIChbVmlld0NvbnRleHQuRGV2aWNlLCBWaWV3Q29udGV4dC5Hcm91cF0uaW5jbHVkZXMoY29udGV4dCkpIHtcbiAgICAgIHJldHVybiBjb250ZXh0RGF0YTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVdpZGdldENvbmZpZygpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiAnRGF0YSBwb2ludHMgZ3JhcGggMicsXG4gICAgICB0aXRsZTogZ2V0dGV4dCgnRGF0YSBwb2ludHMgZ3JhcGggMicpLFxuICAgICAgaWQ6IFN0cmluZyhNYXRoLnJhbmRvbSgpKS5zdWJzdHIoMiksXG4gICAgICBfd2lkdGg6IDI0LFxuICAgICAgX2hlaWdodDogNSxcbiAgICAgIGNvbmZpZzogdGhpcy5jb25maWdcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0Rm9ybSgpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBkYXRhcG9pbnRzOiBbdGhpcy5jb25maWcuZGF0YXBvaW50cyB8fCBbXV0sXG4gICAgICBhbGFybXM6IFt0aGlzLmFsYXJtcyB8fCBbXV0sXG4gICAgICBldmVudHM6IFt0aGlzLmV2ZW50cyB8fCBbXV0sXG4gICAgICBkYXRlRnJvbTogW3RoaXMuY29uZmlnLmRhdGVGcm9tIHx8IChudWxsIGFzIERhdGUpXSxcbiAgICAgIGRhdGVUbzogW3RoaXMuY29uZmlnLmRhdGVGcm9tIHx8IChudWxsIGFzIERhdGUpXSxcbiAgICAgIGludGVydmFsOiBbdGhpcy5jb25maWcuaW50ZXJ2YWwgfHwgJ2hvdXJzJ10sXG4gICAgICBhZ2dyZWdhdGlvbjogW3RoaXMuY29uZmlnLmFnZ3JlZ2F0aW9uIHx8IChudWxsIGFzIGFnZ3JlZ2F0aW9uVHlwZSB8IG51bGwpXSxcbiAgICAgIHJlYWx0aW1lOiBbdGhpcy5jb25maWcucmVhbHRpbWUgfHwgZmFsc2VdLFxuICAgICAgZGlzcGxheU1hcmtlZExpbmU6IFt0cnVlLCBbXV0sXG4gICAgICBkaXNwbGF5TWFya2VkUG9pbnQ6IFt0cnVlLCBbXV0sXG4gICAgICBtZXJnZU1hdGNoaW5nRGF0YXBvaW50czogW3RydWUsIFtdXSxcbiAgICAgIHNob3dMYWJlbEFuZFVuaXQ6IFt0cnVlLCBbXV0sXG4gICAgICBzaG93U2xpZGVyOiBbdHJ1ZSwgW11dLFxuICAgICAgZGlzcGxheURhdGVTZWxlY3Rpb246IFtmYWxzZSwgW11dLFxuICAgICAgeUF4aXNTcGxpdExpbmVzOiBbZmFsc2VdLFxuICAgICAgeEF4aXNTcGxpdExpbmVzOiBbZmFsc2VdXG4gICAgfSk7XG4gIH1cbn1cbiIsIjxjOHktdGl0bGU+e3sgJ0RhdGEgZXhwbG9yZXInIHwgdHJhbnNsYXRlIH19PC9jOHktdGl0bGU+XG5cbjxjOHktdGltZS1jb250ZXh0XG4gIChjb250ZXh0Q2hhbmdlKT1cIm9uVGltZUNvbnRleHRDaGFuZ2UoJGV2ZW50KVwiXG4gIFtjaGFuZ2VkRGF0ZUNvbnRleHRdPVwidGltZVByb3BzXCJcbj48L2M4eS10aW1lLWNvbnRleHQ+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtIFtwbGFjZW1lbnRdPVwiJ2xlZnQnXCI+XG4gIDxjOHktd29ya3NwYWNlLWNvbmZpZ1xuICAgIFt1cGRhdGVkQ29uZmlnXT1cImNvbmZpZ1wiXG4gICAgKG9uQ29uZmlndXJhdGlvbkNoYW5nZSk9XCJvbkNvbmZpZ3VyYXRpb25DaGFuZ2UoJGV2ZW50KVwiXG4gID48L2M4eS13b3Jrc3BhY2UtY29uZmlnPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbSBwbGFjZW1lbnQ9XCJyaWdodFwiPlxuICA8Yzh5LWRhdGFwb2ludHMtZXhwb3J0LXNlbGVjdG9yIFtleHBvcnRDb25maWddPVwiZXhwb3J0Q29uZmlnXCI+PC9jOHktZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3I+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtXG4gIFtwbGFjZW1lbnRdPVwiJ21vcmUnXCJcbiAgW3ByaW9yaXR5XT1cIi0yMDAwXCJcbj5cbiAgPGJ1dHRvblxuICAgIHRpdGxlPVwie3sgJ1NlbmQgYXMgd2lkZ2V0IHRvIHJlcG9ydCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIGRhdGEtY3k9XCJ3aWRnZXRzLWRhc2hib2FyZC0tY29weS1kYXNoYm9hcmRcIlxuICAgIChjbGljayk9XCJzZW5kQXNXaWRnZXRUb1JlcG9ydCgpXCJcbiAgICBbZGlzYWJsZWRdPVwiY29uZmlnPy5kYXRhcG9pbnRzPy5sZW5ndGggPT09IDAgfHwgIWNhbkFkZFJlcG9ydFwiXG4gID5cbiAgICA8aSBjOHlJY29uPVwiYzh5LXJlcG9ydHNcIj48L2k+XG4gICAgPHNwYW4+e3sgJ1NlbmQgYXMgd2lkZ2V0IHRvIHJlcG9ydCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gIDwvYnV0dG9uPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbVxuICBbcGxhY2VtZW50XT1cIidtb3JlJ1wiXG4gIFtwcmlvcml0eV09XCItMjAwMFwiXG4+XG4gIDxidXR0b25cbiAgICB0aXRsZT1cInt7ICdDcmVhdGUgYSBuZXcgcmVwb3J0IHdpdGggd2lkZ2V0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgZGF0YS1jeT1cIndpZGdldHMtZGFzaGJvYXJkLS1jb3B5LWRhc2hib2FyZFwiXG4gICAgKGNsaWNrKT1cImNyZWF0ZU5ld1JlcG9ydFdpdGhXaWRnZXQoKVwiXG4gICAgW2Rpc2FibGVkXT1cImNvbmZpZz8uZGF0YXBvaW50cz8ubGVuZ3RoID09PSAwIHx8ICFjYW5BZGRSZXBvcnRcIlxuICA+XG4gICAgPGkgYzh5SWNvbj1cImM4eS1yZXBvcnRzXCI+PC9pPlxuICAgIDxzcGFuPnt7ICdDcmVhdGUgYSBuZXcgcmVwb3J0IHdpdGggd2lkZ2V0JyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgPC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxkaXYgY2xhc3M9XCJjb250ZW50LWZ1bGxwYWdlIGQtZ3JpZCBncmlkX2NvbC0tYXV0by0zNjAgZ2FwLTI0XCI+XG4gIDxkaXYgY2xhc3M9XCJkLWNvbCBnYXAtMTZcIj5cbiAgICA8Yzh5LWNoYXJ0c1xuICAgICAgY2xhc3M9XCJmbGV4LWdyb3cgZGF0YS1wb2ludC1leHBsb3JlclwiXG4gICAgICAjY2hhcnRcbiAgICAgIFtjb25maWddPVwiY29uZmlnXCJcbiAgICAgIFthbGVydHNdPVwiYWxlcnRzXCJcbiAgICAgICh1cGRhdGVBbGFybXNBbmRFdmVudHMpPVwidXBkYXRlQWxhcm1zQW5kRXZlbnRzKCRldmVudClcIlxuICAgICAgKGNvbmZpZ0NoYW5nZU9uWm9vbU91dCk9XCJvblNsaWRlclpvb20oJGV2ZW50KVwiXG4gICAgICAoZGF0YXBvaW50T3V0T2ZTeW5jKT1cImhhbmRsZURhdGFwb2ludE91dE9mU3luYygkZXZlbnQpXCJcbiAgICAgICh0aW1lUmFuZ2VDaGFuZ2VPblJlYWx0aW1lKT1cInVwZGF0ZVRpbWVSYW5nZU9uUmVhbHRpbWUoJGV2ZW50KVwiXG4gICAgICAoaXNNYXJrZWRBcmVhRW5hYmxlZCk9XCJpc01hcmtlZEFyZWFFbmFibGVkID0gJGV2ZW50XCJcbiAgICA+PC9jOHktY2hhcnRzPlxuICAgIDxmb3JtXG4gICAgICBjbGFzcz1cIm0tbC00OCBtLXItNDhcIlxuICAgICAgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJkLWdyaWQtbWQgZ3JpZF9fY29sLS00LTQtNCBnYXAtMTZcIj5cbiAgICAgICAgPGZpZWxkc2V0IGNsYXNzPVwiYzh5LWZpZWxkc2V0IGZvcm0tZ3JvdXAtc20gbS10LW1kLTAgcC1iLThcIj5cbiAgICAgICAgICA8bGVnZW5kPnt7ICdBeGlzJyB8IHRyYW5zbGF0ZSB9fTwvbGVnZW5kPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgY2xhc3M9XCJjOHktY2hlY2tib3hcIlxuICAgICAgICAgICAgW3RpdGxlXT1cIidZIGF4aXMgaGVscGVyIGxpbmVzJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIG5hbWU9XCJ5QXhpc1NwbGl0TGluZXNcIlxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ5QXhpc1NwbGl0TGluZXNcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5ZLWF4aXMgaGVscGVyIGxpbmVzPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBjbGFzcz1cImM4eS1jaGVja2JveFwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ1ggYXhpcyBoZWxwZXIgbGluZXMnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgbmFtZT1cInhBeGlzU3BsaXRMaW5lc1wiXG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInhBeGlzU3BsaXRMaW5lc1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPlgtYXhpcyBoZWxwZXIgbGluZXM8L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGNsYXNzPVwiYzh5LWNoZWNrYm94XCJcbiAgICAgICAgICAgIFt0aXRsZV09XCInTWVyZ2UgbWF0Y2hpbmcgZGF0YSBwb2ludHMgaW50byBzaW5nbGUgYXhpcycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBuYW1lPVwibWVyZ2VNYXRjaGluZ0RhdGFwb2ludHNcIlxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtZXJnZU1hdGNoaW5nRGF0YXBvaW50c1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPk1lcmdlIG1hdGNoaW5nIGRhdGEgcG9pbnRzIGludG8gc2luZ2xlIGF4aXM8L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9maWVsZHNldD5cbiAgICAgICAgPGZpZWxkc2V0IGNsYXNzPVwiYzh5LWZpZWxkc2V0IGZvcm0tZ3JvdXAtc20gbS10LW1kLTAgcC1iLThcIj5cbiAgICAgICAgICA8bGVnZW5kPnt7ICdBbGFybXMgJiBldmVudHMnIHwgdHJhbnNsYXRlIH19PC9sZWdlbmQ+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBjbGFzcz1cImM4eS1jaGVja2JveFwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ1Nob3cgdmVydGljYWwgbGluZSB3aGVuIGFsYXJtIG9jY3VycycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBuYW1lPVwiZGlzcGxheU1hcmtlZExpbmVcIlxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkaXNwbGF5TWFya2VkTGluZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPlNob3cgdmVydGljYWwgbGluZSBvbiBldmVyeSBvY2N1cnJlbmNlPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGNsYXNzPVwiYzh5LWNoZWNrYm94XCJcbiAgICAgICAgICAgIFt0aXRsZV09XCInU2hvdyBpY29uIHdoZW4gYWxhcm0gb3IgZXZlbnQgb2NjdXJzJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIG5hbWU9XCJkaXNwbGF5TWFya2VkUG9pbnRcIlxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkaXNwbGF5TWFya2VkUG9pbnRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICdTaG93IGljb24gd2hlbiB0cmlnZ2VyZWRgV2hlbiBhbGFybXMgYW5kIGV2ZW50cyBvY2N1ciB0aGUgaWNvbiB3aWxsIGJlIHNob3duYCdcbiAgICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWRvdCBtLWwtOFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgJ1NvbWUgYWxhcm1zIG9yIGV2ZW50cyBoYXZlIG5vIG1hdGNoaW5nIGRhdGEgcG9pbnRzLiBObyBpY29ucyB3aWxsIGJlIHNob3duIGZvciB0aGVtLidcbiAgICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFt0b29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICdTb21lIGFsYXJtcyBvciBldmVudHMgaGF2ZSBubyBtYXRjaGluZyBkYXRhIHBvaW50cy4gTm8gaWNvbnMgd2lsbCBiZSBzaG93biBmb3IgdGhlbS4nXG4gICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiYWxhcm1zT3JFdmVudHNIYXZlTm9NYXRjaGluZ0Rwc1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICBbYWRhcHRpdmVQb3NpdGlvbl09XCJmYWxzZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWluZm9cIlxuICAgICAgICAgICAgICAgIGM4eUljb249XCJpbmZvXCJcbiAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZmllbGRzZXQ+XG4gICAgICAgIDxmaWVsZHNldCBjbGFzcz1cImM4eS1maWVsZHNldCBmb3JtLWdyb3VwLXNtIG0tdC1tZC0wIHAtYi04XCI+XG4gICAgICAgICAgPGxlZ2VuZD57eyAnQ2hhcnQnIHwgdHJhbnNsYXRlIH19PC9sZWdlbmQ+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBjbGFzcz1cImM4eS1jaGVja2JveFwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ1Nob3cgbGFiZWxzIGFuZCB1bml0cycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBuYW1lPVwic2hvd0xhYmVsQW5kVW5pdFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInNob3dMYWJlbEFuZFVuaXRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5EaXNwbGF5IGxhYmVscyBhbmQgdW5pdHMgb24gWS1heGlzPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBjbGFzcz1cImM4eS1jaGVja2JveFwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ1Nob3cgc2xpZGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIG5hbWU9XCJzaG93U2xpZGVyXCJcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2hvd1NsaWRlclwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPlNob3cgc2xpZGVyPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZmllbGRzZXQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY2FyZCBpbm5lci1zY3JvbGwgYmctbGV2ZWwtMVwiPlxuICAgIDxmb3JtXG4gICAgICBjbGFzcz1cImJnLWluaGVyaXRcIlxuICAgICAgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIlxuICAgID5cbiAgICAgIDxjOHktZGF0YXBvaW50LXNlbGVjdGlvbi1saXN0XG4gICAgICAgIGNsYXNzPVwiYmctaW5oZXJpdCBzZXBhcmF0b3ItdG9wIGQtYmxvY2tcIlxuICAgICAgICBuYW1lPVwiZGF0YXBvaW50c1wiXG4gICAgICAgIFttaW5BY3RpdmVDb3VudF09XCIwXCJcbiAgICAgICAgW2RlZmF1bHRGb3JtT3B0aW9uc109XCJkYXRhcG9pbnRTZWxlY3REZWZhdWx0Rm9ybU9wdGlvbnNcIlxuICAgICAgICBbY29uZmlnXT1cInsgY29udGV4dEFzc2V0OiBjb250ZXh0QXNzZXQgfVwiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRhdGFwb2ludHNcIlxuICAgICAgICBbYWxsb3dEcmFnQW5kRHJvcF09XCJ0cnVlXCJcbiAgICAgID48L2M4eS1kYXRhcG9pbnQtc2VsZWN0aW9uLWxpc3Q+XG5cbiAgICAgIDxjOHktYWxhcm0tZXZlbnQtc2VsZWN0aW9uLWxpc3RcbiAgICAgICAgY2xhc3M9XCJiZy1pbmhlcml0XCJcbiAgICAgICAgbmFtZT1cImFsYXJtc1wiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFsYXJtc1wiXG4gICAgICAgIFt0aW1lbGluZVR5cGVdPVwiJ0FMQVJNJ1wiXG4gICAgICAgIFtkYXRhcG9pbnRzXT1cImNvbmZpZy5kYXRhcG9pbnRzXCJcbiAgICAgID48L2M4eS1hbGFybS1ldmVudC1zZWxlY3Rpb24tbGlzdD5cblxuICAgICAgPGM4eS1hbGFybS1ldmVudC1zZWxlY3Rpb24tbGlzdFxuICAgICAgICBjbGFzcz1cImJnLWluaGVyaXRcIlxuICAgICAgICBuYW1lPVwiZXZlbnRzXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZXZlbnRzXCJcbiAgICAgICAgW3RpbWVsaW5lVHlwZV09XCInRVZFTlQnXCJcbiAgICAgICAgW2RhdGFwb2ludHNdPVwiY29uZmlnLmRhdGFwb2ludHNcIlxuICAgICAgPjwvYzh5LWFsYXJtLWV2ZW50LXNlbGVjdGlvbi1saXN0PlxuICAgIDwvZm9ybT5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -346,8 +346,6 @@ export class DataFetchingService {
|
|
|
346
346
|
let measurements;
|
|
347
347
|
const filter = this.prepareMeasurementsFilter(details, exportConfig, roundSeconds, MEASUREMENTS_PREVIEW_ITEMS_LIMIT);
|
|
348
348
|
try {
|
|
349
|
-
// TODO: consider adding a cache mechanism -> MTM-60289
|
|
350
|
-
// When user switches between report types, and rest of the settings are the same, then the data should not be fetched again?
|
|
351
349
|
measurements = await this.measurementService.list(filter);
|
|
352
350
|
}
|
|
353
351
|
catch (error) {
|
|
@@ -406,4 +404,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
406
404
|
providedIn: 'root'
|
|
407
405
|
}]
|
|
408
406
|
}], ctorParameters: () => [{ type: i1.AlertService }, { type: i2.MeasurementService }, { type: i3.TranslateService }, { type: i4.UtilsService }] });
|
|
409
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1mZXRjaGluZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3IvZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3ItbW9kYWwvZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3ItZmlsZS1leHBvcnRlci9kYXRhLWZldGNoaW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBU0wsa0JBQWtCLEVBQ25CLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQVFMLGdDQUFnQyxFQUVqQyxNQUFNLHdDQUF3QyxDQUFDO0FBQ2hELE9BQU8sRUFBYyxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7O0FBSzNELE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsWUFDVSxZQUEwQixFQUMxQixrQkFBc0MsRUFDdEMsZ0JBQWtDLEVBQ2xDLFlBQTBCO1FBSDFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztJQUNqQyxDQUFDO0lBRUo7Ozs7Ozs7O09BUUc7SUFDSCxLQUFLLENBQUMsMkJBQTJCLENBQy9CLFlBQTBCO1FBRTFCLE1BQU0sc0JBQXNCLEdBQUcsTUFBTSxDQUFDO1FBRXRDLE1BQU0sUUFBUSxHQUF3QyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUNyRixLQUFLLEVBQUMsT0FBTyxFQUFDLEVBQUU7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VSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgYWdncmVnYXRpb25UeXBlLFxuICBJRmV0Y2hSZXNwb25zZSxcbiAgSU1lYXN1cmVtZW50LFxuICBJTWVhc3VyZW1lbnRGaWx0ZXIsXG4gIElSZXN1bHQsXG4gIElSZXN1bHRMaXN0LFxuICBJU2VyaWVzLFxuICBJU2VyaWVzRmlsdGVyLFxuICBNZWFzdXJlbWVudFNlcnZpY2Vcbn0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQUdHUkVHQVRJT05fVkFMVUVTLCBBbGVydFNlcnZpY2UsIGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7XG4gIERhdGFwb2ludERldGFpbHMsXG4gIERhdGFwb2ludHNFeGNlZWRpbmdMaW1pdCxcbiAgRGF0YXBvaW50c1ZhbHVlc0RhdGFNYXAsXG4gIERhdGFUb0V4cG9ydCxcbiAgRGF0YVRvRXhwb3J0V2l0aEJhY2tlbmRDcmVhdGVkRmlsZSxcbiAgRXhwb3J0Q29uZmlnLFxuICBNZWFzdXJlbWVudEZpbGVDb25maWcsXG4gIE1FQVNVUkVNRU5UU19QUkVWSUVXX0lURU1TX0xJTUlULFxuICBUaW1lU2VyaWVzRGF0YVxufSBmcm9tICcuLi8uLi9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci5tb2RlbCc7XG5pbXBvcnQgeyBTb3VyY2VJdGVtLCBVdGlsc1NlcnZpY2UgfSBmcm9tICcuL3V0aWxzLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEYXRhRmV0Y2hpbmdTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIG1lYXN1cmVtZW50U2VydmljZTogTWVhc3VyZW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHV0aWxzU2VydmljZTogVXRpbHNTZXJ2aWNlXG4gICkge31cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGFueSBvZiBtZWFzdXJlbWVudHMgcmVxdWVzdHMgbWF5IGV4Y2VlZGVkIHRoZSBsaW1pdCxcbiAgICogYWZ0ZXIgd2hpY2ggdGhlIGV4cG9ydCBkYXRhIGlzIHByb2Nlc3NlZCBieSB0aGUgYmFja2VuZCBhbmQgdGhlIGdlbmVyYXRlZCBDU1YvRXhjZWwgZmlsZSBpcyBzZW50IGJ5IGVtYWlsLlxuICAgKlxuICAgKiBUaGUgdGhyZXNob2xkIGlzIHNldCB0byA1MF8wMDAgcmVjb3JkcyBpbiBhcHBsaWNhdGlvbidzIGNvcmUgcHJvcGVydGllcyAoZXhwb3J0LmRhdGEuc3luY2hyb25vdXMubGltaXQpLlxuICAgKlxuICAgKiBAcGFyYW0gZXhwb3J0Q29uZmlnIC0gVGhlIGV4cG9ydCBjb25maWd1cmF0aW9uLlxuICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXR1cm5zIGFuIGFycmF5IG9mIG9iamVjdHMgcmVwcmVzZW50aW5nIGRhdGFwb2ludHMgZmlsZXMgdGhhdCB3aWxsIGJlIHNlbnQgYnkgZW1haWwuXG4gICAqL1xuICBhc3luYyBnZXREYXRhcG9pbnRzRXhjZWVkaW5nTGltaXQoXG4gICAgZXhwb3J0Q29uZmlnOiBFeHBvcnRDb25maWdcbiAgKTogUHJvbWlzZTxEYXRhcG9pbnRzRXhjZWVkaW5nTGltaXRbXT4ge1xuICAgIGNvbnN0IGJhY2tlbmRQcm9jZXNzaW5nTGltaXQgPSA1MF8wMDA7XG5cbiAgICBjb25zdCBwcm9taXNlczogUHJvbWlzZTxEYXRhcG9pbnRzRXhjZWVkaW5nTGltaXQ+W10gPSBleHBvcnRDb25maWcuZGF0YXBvaW50RGV0YWlscy5tYXAoXG4gICAgICBhc3luYyBkZXRhaWxzID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBmaWx0ZXI6IElNZWFzdXJlbWVudEZpbHRlciA9IHtcbiAgICAgICAgICAgIGRhdGVGcm9tOiBleHBvcnRDb25maWcuZGF0ZUZyb20sXG4gICAgICAgICAgICBkYXRlVG86IGV4cG9ydENvbmZpZy5kYXRlVG8sXG4gICAgICAgICAgICBwYWdlU2l6ZTogMSxcbiAgICAgICAgICAgIHNvdXJjZTogZGV0YWlscy5zb3VyY2UsXG4gICAgICAgICAgICB2YWx1ZUZyYWdtZW50U2VyaWVzOiBkZXRhaWxzLnZhbHVlRnJhZ21lbnRTZXJpZXMsXG4gICAgICAgICAgICB2YWx1ZUZyYWdtZW50VHlwZTogZGV0YWlscy52YWx1ZUZyYWdtZW50VHlwZSxcbiAgICAgICAgICAgIHdpdGhUb3RhbEVsZW1lbnRzOiB0cnVlXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5tZWFzdXJlbWVudFNlcnZpY2UubGlzdChmaWx0ZXIpO1xuXG4gICAgICAgICAgaWYgKHJlc3BvbnNlPy5wYWdpbmc/LnRvdGFsRWxlbWVudHMgPiBiYWNrZW5kUHJvY2Vzc2luZ0xpbWl0KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBkYXRhcG9pbnREZXRhaWw6IHtcbiAgICAgICAgICAgICAgICBzb3VyY2U6IGRldGFpbHMuc291cmNlLFxuICAgICAgICAgICAgICAgIHZhbHVlRnJhZ21lbnRTZXJpZXM6IGRldGFpbHMudmFsdWVGcmFnbWVudFNlcmllcyxcbiAgICAgICAgICAgICAgICB2YWx1ZUZyYWdtZW50VHlwZTogZGV0YWlscy52YWx1ZUZyYWdtZW50VHlwZVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB0b3RhbEVsZW1lbnRzOiByZXNwb25zZS5wYWdpbmcudG90YWxFbGVtZW50c1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZXJyb3IpO1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcblxuICAgIGNvbnN0IHJlc3VsdHM6IERhdGFwb2ludHNFeGNlZWRpbmdMaW1pdFtdID0gYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuXG4gICAgY29uc3QgZGF0YXBvaW50c0V4Y2VlZGluZ0xpbWl0ID0gcmVzdWx0cy5maWx0ZXIocmVzdWx0ID0+IHJlc3VsdCAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gZGF0YXBvaW50c0V4Y2VlZGluZ0xpbWl0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgbWVzc2FnZSB0byBiZSBkaXNwbGF5ZWQgd2hlbiB0aGUgbGltaXQgb2YgZGF0YXBvaW50cyBpcyBleGNlZWRlZCBkdXJpbmcgZmlsZSBleHBvcnQuXG4gICAqXG4gICAqIEBwYXJhbSBoYXNOb0V4cG9ydGFibGVEYXRhIC0gSW5kaWNhdGVzIGlmIHRoZXJlIGlzIG5vIGV4cG9ydGFibGUgZGF0YSBiZWNhdXNlIHRoZSBkYXRlIHJhbmdlIG9mIGFsbCBzZWxlY3RlZCBkYXRhcG9pbnRzIGV4Y2VlZHMgMSwwMDAsMDAwIHJlY29yZHMuXG4gICAqIEBwYXJhbSBlbWFpbERlbGl2ZXJhYmxlQ291bnQgLSBUaGUgbnVtYmVyIG9mIGRhdGFwb2ludCBleHBvcnRzIHRoYXQgZXhjZWVkIHRoZSBsaW1pdCwgd2lsbCBiZSBwcm9jZWVkZWQgYnkgdGhlIGJhY2tlbmQgYW5kIHNlbnQgYnkgZW1haWwuXG4gICAqIEBwYXJhbSBicm93c2VyRG93bmxvYWRhYmxlQ291bnQgLSBUaGUgbnVtYmVyIG9mIGRhdGFwb2ludCBleHBvcnRzIHRoYXQgY2FuIGJlIGRvd25sb2FkZWQgZGlyZWN0bHkuXG4gICAqIEBwYXJhbSBza2lwcGVkRGF0YXBvaW50Q291bnQgLSBUaGUgbnVtYmVyIG9mIGRhdGFwb2ludCBleHBvcnRzIHNraXBwZWQgZHVlIHRvIGV4Y2VlZGluZyB0aGUgbWVhc3VyZW1lbnRzIEFQSSBsaW1pdCBvZiAxLDAwMCwwMDAgcmVjb3Jkcy5cbiAgICogQHBhcmFtIHRvdGFsRGF0YXBvaW50c1NlbGVjdGVkRm9yRXhwb3J0Q291bnQgLSBUb3RhbCBudW1iZXIgb2YgZGF0YXBvaW50IHNlbGVjdGVkIGZvciBleHBvcnRzLlxuICAgKiBAcmV0dXJucyBUaGUgbWVzc2FnZSB0aGF0IGNhbiBiZSBpbmplY3RlZC5cbiAgICovXG4gIGdldExpbWl0RXhjZWVkZWRNZXNzYWdlKFxuICAgIGhhc05vRXhwb3J0YWJsZURhdGE6IGJvb2xlYW4sXG4gICAgZW1haWxEZWxpdmVyYWJsZUNvdW50PzogbnVtYmVyLFxuICAgIGJyb3dzZXJEb3dubG9hZGFibGVDb3VudD86IG51bWJlcixcbiAgICBub25SZXRyaWV2YWJsZUNvdW50PzogbnVtYmVyLFxuICAgIHRvdGFsRGF0YXBvaW50c1NlbGVjdGVkRm9yRXhwb3J0Q291bnQ/OiBudW1iZXJcbiAgKTogc3RyaW5nIHtcbiAgICBpZiAoaGFzTm9FeHBvcnRhYmxlRGF0YSkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICBnZXR0ZXh0KFxuICAgICAgICAgIGBUaGUgZGF0YSBmb3Igc2VsZWN0ZWQgZGF0YXBvaW50KHMpIGV4Y2VlZCAxLDAwMCwwMDAgcmVjb3Jkcywgd2hpY2ggaXMgdGhlIGxpbWl0IGZvciBiYWNrZW5kIHByb2Nlc3NpbmcuIFRvIGV4cG9ydCB0aGlzIGRhdGEsIHBsZWFzZSByZWR1Y2UgdGhlIGRhdGUgcmFuZ2UuYFxuICAgICAgICApXG4gICAgICApO1xuICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgfVxuXG4gICAgY29uc3QgbWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgZ2V0dGV4dChcbiAgICAgICAgYEFmdGVyIGNsaWNraW5nIFwiRG93bmxvYWRcIjo8YnI+XG4gICAgICAgIDx1bD5cbiAgICAgICAgICA8bGk+PHN0cm9uZz57eyRicm93c2VyRG93bmxvYWRhYmxlQ291bnR9fTwvc3Ryb25nPiBkYXRhcG9pbnQocykgZXhwb3J0cyB3aWxsIGJlIGRvd25sb2FkZWQgZGlyZWN0bHkgd2l0aGluIG9uZSBmaWxlOiA8ZW0+ZXhwb3J0ZWRfW2Nzdi9leGNlbF0uemlwPC9lbT48L2xpPlxuICAgICAgICAgIDxsaT48c3Ryb25nPnt7JGVtYWlsRGVsaXZlcmFibGVDb3VudH19PC9zdHJvbmc+IGRhdGFwb2ludChzKSBleHBvcnRzIHJlcXVpcmUgZnVydGhlciBwcm9jZXNzaW5nLiBUaGUgZmlsZXMgd2lsbCBiZSBzZW50IHRvIHlvdSB2aWEgc2VwYXJhdGUgZW1haWxzIG9uY2UgY29tcGxldGVkLCB3aGljaCBtYXkgdGFrZSBzb21lIHRpbWUuPC9saT5cbiAgICAgICAgICA8bGk+PHN0cm9uZz57eyRub25SZXRyaWV2YWJsZUNvdW50fX08L3N0cm9uZz4gZGF0YXBvaW50KHMpIGV4cG9ydHMgZXhjZWVkZWQgMSwwMDAsMDAwIHJlY29yZHMsIHdoaWNoIGlzIHRoZSBsaW1pdCBmb3IgYmFja2VuZCBwcm9jZXNzaW5nLiBUbyBleHBvcnQgdGhlc2UgZGF0YSwgcGxlYXNlIHJlZHVjZSB0aGUgZGF0ZSByYW5nZS4gT3RoZXJ3aXNlLCB0aGUgZGF0YSB3aWxsIG5laXRoZXIgYmUgZG93bmxvYWRlZCBub3Igc2VudCB2aWEgZW1haWwuPC9saT5cbiAgICAgICAgPC91bD5cbiAgICAgICAgPHA+VGhlIHRvdGFsIG51bWJlciBvZiBkYXRhIHBvaW50cyB0aGF0IGNhbiBiZSBleHBvcnRlZCBpczogPHN0cm9uZz57eyR0b3RhbEV4cG9ydGFibGVEYXRhcG9pbnRzQ291bnR9fSBvdXQgb2Yge3skdG90YWxEYXRhcG9pbnRzU2VsZWN0ZWRGb3JFeHBvcnRDb3VudH19PC9zdHJvbmc+LjwvcD5cbiAgICAgICAgPHA+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBUaGUgZmlsZSBuYW1lIGNvbnZlbnRpb24gb2YgZmlsZXMgd2l0aGluIHppcCBmaWxlIGlzOiA8Y29kZT5bc291cmNlXV9bZnJhZ21lbnRfc2VyaWVzXS5bY3N2L3hsc108L2NvZGU+PC9wPmBcbiAgICAgICksXG4gICAgICB7XG4gICAgICAgICRicm93c2VyRG93bmxvYWRhYmxlQ291bnQ6IGJyb3dzZXJEb3dubG9hZGFibGVDb3VudCxcbiAgICAgICAgJGVtYWlsRGVsaXZlcmFibGVDb3VudDogZW1haWxEZWxpdmVyYWJsZUNvdW50LFxuICAgICAgICAkbm9uUmV0cmlldmFibGVDb3VudDogbm9uUmV0cmlldmFibGVDb3VudCxcbiAgICAgICAgJHRvdGFsRGF0YXBvaW50c1NlbGVjdGVkRm9yRXhwb3J0Q291bnQ6IHRvdGFsRGF0YXBvaW50c1NlbGVjdGVkRm9yRXhwb3J0Q291bnQsXG4gICAgICAgICR0b3RhbEV4cG9ydGFibGVEYXRhcG9pbnRzQ291bnQ6IGJyb3dzZXJEb3dubG9hZGFibGVDb3VudCArIGVtYWlsRGVsaXZlcmFibGVDb3VudFxuICAgICAgfVxuICAgICk7XG5cbiAgICBjb25zdCB0cmltbWVkTWVzc2FnZSA9IHRoaXMucmVtb3ZlWmVyb0NvdW50TGlzdEl0ZW1zKG1lc3NhZ2UsIFtcbiAgICAgIGJyb3dzZXJEb3dubG9hZGFibGVDb3VudCxcbiAgICAgIGVtYWlsRGVsaXZlcmFibGVDb3VudCxcbiAgICAgIG5vblJldHJpZXZhYmxlQ291bnRcbiAgICBdKTtcblxuICAgIHJldHVybiB0cmltbWVkTWVzc2FnZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmltcyB0aGUgZ2l2ZW4gSFRNTCBtZXNzYWdlIGJ5IHJlbW92aW5nIGxpc3QgaXRlbXMgdGhhdCBjb3JyZXNwb25kIHRvIHplcm8gY291bnRzLlxuICAgKlxuICAgKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBIVE1MIHN0cmluZyBjb250YWluaW5nIHRoZSBtZXNzYWdlIHdpdGggbGlzdCBpdGVtcy5cbiAgICogQHBhcmFtIGNvdW50cyAtIEFuIGFycmF5IG9mIG51bWJlciB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBlYWNoIGxpc3QgaXRlbS5cbiAgICogQHBhcmFtIGNvdW50VG9UcmltIC0gQSBjb3VudCB0aGF0IHdpbGwgYmUgdHJpbW1lZCB3aXRoIGNvcnJlc3BvbmRpbmcgbGlzdCBpdGVtLlxuICAgKiBAcmV0dXJucyBBIHRyaW1tZWQgSFRNTCBzdHJpbmcgd2l0aCBsaXN0IGl0ZW1zIHJlbW92ZWQgd2hlcmUgdGhlIGNvcnJlc3BvbmRpbmcgY291bnQgaXMgemVyby5cbiAgICpcbiAgICogRXhhbXBsZTpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBtZXNzYWdlID0gJzx1bD48bGk+SXRlbSAxPC9saT48bGk+SXRlbSAyPC9saT48bGk+SXRlbSAzPC9saT48L3VsPic7XG4gICAqIGNvbnN0IGNvdW50cyA9IFsxLCAwLCAyXTtcbiAgICogY29uc3QgdHJpbW1lZE1lc3NhZ2UgPSB0aGlzLnJlbW92ZVplcm9Db3VudExpc3RJdGVtcyhtZXNzYWdlLCBjb3VudHMpO1xuICAgKiAvLyBSZXN1bHQ6ICc8dWw+PGxpPkl0ZW0gMTwvbGk+PGxpPkl0ZW0gMzwvbGk+PC91bD4nXG4gICAqIGBgYFxuICAgKi9cbiAgcmVtb3ZlWmVyb0NvdW50TGlzdEl0ZW1zKG1lc3NhZ2U6IHN0cmluZywgY291bnRzOiBudW1iZXJbXSwgY291bnRUb1RyaW0gPSAwKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYXJzZXIgPSBuZXcgRE9NUGFyc2VyKCk7XG4gICAgY29uc3QgZG9jID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZyhtZXNzYWdlLCAndGV4dC9odG1sJyk7XG4gICAgY29uc3QgbGlzdEl0ZW1zID0gZG9jLnF1ZXJ5U2VsZWN0b3JBbGwoJ3VsIGxpJyk7XG5cbiAgICBsaXN0SXRlbXMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChjb3VudHNbaW5kZXhdID09PSBjb3VudFRvVHJpbSkge1xuICAgICAgICBpdGVtLnJlbW92ZSgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRvYy5ib2R5LmlubmVySFRNTDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwbGF5cyBhbiBpbmZvcm1hdGlvbiBhbGVydCBhYm91dCBzZW5kaW5nIGRhdGEgdmlhIGVtYWlsLlxuICAgKlxuICAgKiBPbmx5IG1lYXN1cmVtZW50cyBBUEkgY2FuIHNlbmQgZmlsZXMgdmlhIGVtYWlsLlxuICAgKlxuICAgKiBAcGFyYW0gZmlsZVR5cGUgLSBUaGUgdHlwZSBvZiBmaWxlIHRvIGJlIHNlbnQuXG4gICAqIEBwYXJhbSBkYXRhcG9pbnRzRXhjZWVkaW5nTGltaXQgLSBUaGUgYXJyYXkgb2YgZGF0YXBvaW50cyBleGNlZWRpbmcgdGhlIGxpbWl0LlxuICAgKi9cbiAgc2hvd1NlbmRWaWFFbWFpbEluZm9BbGVydChcbiAgICBmaWxlVHlwZTogc3RyaW5nLFxuICAgIGRhdGFwb2ludHNFeGNlZWRpbmdMaW1pdDogRGF0YXBvaW50c0V4Y2VlZGluZ0xpbWl0W11cbiAgKTogdm9pZCB7XG4gICAgY29uc3QgbWVzc2FnZVRlbXBsYXRlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICBnZXR0ZXh0KGBZb3Ugd2lsbCBnZXQge3skZmlsZVR5cGVUZXh0fX0gZmlsZShzKSBmb3Ige3skY291bnR9fSBzZXJpZXMgdmlhIGVtYWlsLmApLFxuICAgICAgeyAkY291bnQ6IGRhdGFwb2ludHNFeGNlZWRpbmdMaW1pdC5sZW5ndGgsICRmaWxlVHlwZVRleHQ6IGZpbGVUeXBlIH1cbiAgICApO1xuICAgIGNvbnN0IGZvcm1hdHRlZExpc3QgPSBkYXRhcG9pbnRzRXhjZWVkaW5nTGltaXRcbiAgICAgIC5tYXAoXG4gICAgICAgIGRhdGFwb2ludCA9PlxuICAgICAgICAgIGDigKIgJHtkYXRhcG9pbnQuZGF0YXBvaW50RGV0YWlsLnNvdXJjZX1fJHtkYXRhcG9pbnQuZGF0YXBvaW50RGV0YWlsLnZhbHVlRnJhZ21lbnRUeXBlfV8ke2RhdGFwb2ludC5kYXRhcG9pbnREZXRhaWwudmFsdWVGcmFnbWVudFNlcmllc31gXG4gICAgICApXG4gICAgICAuam9pbignXFxuJyk7XG5cbiAgICB0aGlzLmFsZXJ0U2VydmljZS5pbmZvKG1lc3NhZ2VUZW1wbGF0ZSwgZm9ybWF0dGVkTGlzdCk7XG4gIH1cblxuICBhc3luYyBmZXRjaE1lYXN1cmVtZW50RGF0YUZpbGVzQW5kUGFpcldpdGhTb3VyY2VEZXRhaWxzKFxuICAgIGFjY2VwdEZpbGVUeXBlOiBzdHJpbmcsXG4gICAgZXhwb3J0Q29uZmlnOiBFeHBvcnRDb25maWdcbiAgKTogUHJvbWlzZTxEYXRhVG9FeHBvcnRXaXRoQmFja2VuZENyZWF0ZWRGaWxlW10+IHtcbiAgICBjb25zdCBtZWFzdXJlbWVudEZpbGVDb25maWc6IE1lYXN1cmVtZW50RmlsZUNvbmZpZyA9IHtcbiAgICAgIGV4cG9ydENvbmZpZyxcbiAgICAgIGFjY2VwdEZpbGVUeXBlXG4gICAgfTtcbiAgICBjb25zdCBmaWxlUHJvbWlzZXMgPSBleHBvcnRDb25maWcuZGF0YXBvaW50RGV0YWlscy5tYXAoZGV0YWlscyA9PlxuICAgICAgdGhpcy5mZXRjaEFuZFByb2Nlc3NNZWFzdXJlbWVudEZpbGUoZGV0YWlscywgbWVhc3VyZW1lbnRGaWxlQ29uZmlnKVxuICAgICk7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKGZpbGVQcm9taXNlcyk7XG4gIH1cblxuICBhc3luYyBmZXRjaEFuZFByb2Nlc3NNZWFzdXJlbWVudEZpbGUoXG4gICAgZGV0YWlsczogRGF0YXBvaW50RGV0YWlscyxcbiAgICBtZWFzdXJlbWVudEZpbGVDb25maWc6IE1lYXN1cmVtZW50RmlsZUNvbmZpZyxcbiAgICByb3VuZFNlY29uZHMgPSBmYWxzZVxuICApOiBQcm9taXNlPERhdGFUb0V4cG9ydFdpdGhCYWNrZW5kQ3JlYXRlZEZpbGUgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBmaWx0ZXI6IElNZWFzdXJlbWVudEZpbHRlciA9IHRoaXMucHJlcGFyZU1lYXN1cmVtZW50c0ZpbHRlcihcbiAgICAgIGRldGFpbHMsXG4gICAgICBtZWFzdXJlbWVudEZpbGVDb25maWcuZXhwb3J0Q29uZmlnLFxuICAgICAgcm91bmRTZWNvbmRzXG4gICAgKTtcbiAgICBjb25zdCBoZWFkZXIgPSB7IGFjY2VwdDogbWVhc3VyZW1lbnRGaWxlQ29uZmlnLmFjY2VwdEZpbGVUeXBlIH07XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgbWVhc3VyZW1lbnRGaWxlUmVzcG9uc2U6IElGZXRjaFJlc3BvbnNlID1cbiAgICAgICAgYXdhaXQgdGhpcy5tZWFzdXJlbWVudFNlcnZpY2UuZ2V0TWVhc3VyZW1lbnRzRmlsZShmaWx0ZXIsIGhlYWRlcik7XG5cbiAgICAgIC8vIElmIHRoZSBzdGF0dXMgaXMgMjAwLCB0aGVuIHRoZSBmaWxlIGlzIGluIHRoZSByZXNwb25zZS5cbiAgICAgIC8vIElmIHRoZSBzdGF0dXMgaXMgMjAyLCB0aGVuIHRoZSBmaWxlIGlzIGJlaW5nIHByb2Nlc3NlZCBieSB0aGUgYmFja2VuZCBhbmQgd2lsbCBiZSBzZW50IGJ5IGVtYWlsLlxuICAgICAgaWYgKG1lYXN1cmVtZW50RmlsZVJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1lcmdlTWVhc3VyZW1lbnRzV2l0aEl0c1NvdXJjZURldGFpbHMoZGV0YWlscywgbWVhc3VyZW1lbnRGaWxlUmVzcG9uc2UpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBtZXJnZU1lYXN1cmVtZW50c1dpdGhJdHNTb3VyY2VEZXRhaWxzKFxuICAgIGRldGFpbHM6IERhdGFwb2ludERldGFpbHMsXG4gICAgbWVhc3VyZW1lbnRGaWxlOiBJRmV0Y2hSZXNwb25zZVxuICApOiBQcm9taXNlPERhdGFUb0V4cG9ydFdpdGhCYWNrZW5kQ3JlYXRlZEZpbGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgc291cmNlOiBkZXRhaWxzLnNvdXJjZSxcbiAgICAgIHZhbHVlRnJhZ21lbnRTZXJpZXM6IGRldGFpbHMudmFsdWVGcmFnbWVudFNlcmllcyxcbiAgICAgIHZhbHVlRnJhZ21lbnRUeXBlOiBkZXRhaWxzLnZhbHVlRnJhZ21lbnRUeXBlLFxuICAgICAgZmV0Y2hlZE1lYXN1cmVtZW50c0Jsb2JGaWxlOiBhd2FpdCBtZWFzdXJlbWVudEZpbGUuYmxvYigpXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoQW5kUHJlcGFyZURhdGFUb0V4cG9ydChcbiAgICBleHBvcnRDb25maWc6IEV4cG9ydENvbmZpZyxcbiAgICBpc01lYXN1cmVtZW50OiBib29sZWFuXG4gICk6IFByb21pc2U8RGF0YVRvRXhwb3J0W10+IHtcbiAgICByZXR1cm4gaXNNZWFzdXJlbWVudFxuICAgICAgPyBhd2FpdCB0aGlzLmZldGNoQW5kUHJlcGFyZU1lYXN1cmVtZW50RGF0YVRvRXhwb3J0Rm9yUHJldmlldyhleHBvcnRDb25maWcpXG4gICAgICA6IGF3YWl0IHRoaXMuZmV0Y2hBbmRQcmVwYXJlU2VyaWVzRGF0YVRvRXhwb3J0KGV4cG9ydENvbmZpZyk7XG4gIH1cblxuICBwcmVwYXJlTWVhc3VyZW1lbnRzRmlsdGVyKFxuICAgIGRldGFpbHM6IERhdGFwb2ludERldGFpbHMsXG4gICAgZXhwb3J0Q29uZmlnOiBFeHBvcnRDb25maWcsXG4gICAgcm91bmRTZWNvbmRzOiBib29sZWFuLFxuICAgIHBhZ2VTaXplPzogbnVtYmVyXG4gICk6IElNZWFzdXJlbWVudEZpbHRlciB7XG4gICAgY29uc3QgZmlsdGVyOiBJTWVhc3VyZW1lbnRGaWx0ZXIgPSB7XG4gICAgICBkYXRlRnJvbTogdGhpcy5hZGp1c3REYXRlKGV4cG9ydENvbmZpZy5kYXRlRnJvbSwgMCwgcm91bmRTZWNvbmRzKSxcbiAgICAgIGRhdGVUbzogdGhpcy5hZGp1c3REYXRlKGV4cG9ydENvbmZpZy5kYXRlVG8sIDAsIHJvdW5kU2Vjb25kcyksXG4gICAgICBzb3VyY2U6IGRldGFpbHMuc291cmNlLFxuICAgICAgdmFsdWVGcmFnbWVudFNlcmllczogZGV0YWlscy52YWx1ZUZyYWdtZW50U2VyaWVzLFxuICAgICAgdmFsdWVGcmFnbWVudFR5cGU6IGRldGFpbHMudmFsdWVGcmFnbWVudFR5cGVcbiAgICB9O1xuXG4gICAgaWYgKHBhZ2VTaXplKSB7XG4gICAgICBmaWx0ZXIucGFnZVNpemUgPSBwYWdlU2l6ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmlsdGVyO1xuICB9XG5cbiAgcHJvY2Vzc01lYXN1cmVtZW50RGF0YUZvclByZXZpZXcoZGV0YWlsczogRGF0YXBvaW50RGV0YWlscywgZGF0YTogSU1lYXN1cmVtZW50W10pOiBEYXRhVG9FeHBvcnQge1xuICAgIGNvbnN0IHVuaXQgPSBkYXRhWzBdW2RldGFpbHMudmFsdWVGcmFnbWVudFR5cGVdW2RldGFpbHMudmFsdWVGcmFnbWVudFNlcmllc10/LnVuaXQgfHwgJyc7XG5cbiAgICBjb25zdCB2YWx1ZXM6IHsgW3RpbWVzdGFtcDogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcbiAgICBkYXRhLmZvckVhY2gobWVhc3VyZW1lbnQgPT4ge1xuICAgICAgdmFsdWVzW21lYXN1cmVtZW50LnRpbWVdID1cbiAgICAgICAgbWVhc3VyZW1lbnRbZGV0YWlscy52YWx1ZUZyYWdtZW50VHlwZV1bZGV0YWlscy52YWx1ZUZyYWdtZW50U2VyaWVzXS52YWx1ZTtcbiAgICB9KTtcblxuICAgIHJldHVybiB7IC4uLmRldGFpbHMsIHVuaXQsIHRpbWVWYWx1ZU1hcDogdmFsdWVzIH07XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIG1hcCBvZiBhY3RpdmUgZGF0YSBwb2ludHMgZGV2aWNlIElEcyB3aXRoIHRoZWlyIGNvcnJlc3BvbmRpbmcgc2VyaWVzLlxuICAgKlxuICAgKiBFeGFtcGxlIG91dHB1dDpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBuZXcgTWFwKFtcbiAgICogICBbJzg0NDY1NzIwMicsIFsnYzh5X1RlbXBlcmF0dXJlLlQnXV0sXG4gICAqICAgWyczMjY2NjQyNycsIFsnYzh5X0JhdHRlcnkuQmF0dGVyeSddXVxuICAgKiBdKTtcbiAgICogYGBgXG4gICAqIEBwYXJhbSBkYXRhcG9pbnREZXRhaWxzIC0gQW4gYXJyYXkgb2YgZGF0YSBwb2ludHMgZGV0YWlscy5cbiAgICogQHJldHVybnMgQSBtYXAgd2hlcmUgdGhlIGtleSBpcyB0aGUgZGF0YSBwb2ludCBJRCBhbmQgdGhlIHZhbHVlIGlzIGFuIGFycmF5IG9mIGRhdGEgcG9pbnQgc2VyaWVzLlxuICAgKi9cbiAgZ3JvdXBTZXJpZXNCeURldmljZUlkKGRhdGFwb2ludERldGFpbHM6IERhdGFwb2ludERldGFpbHNbXSk6IERhdGFwb2ludHNWYWx1ZXNEYXRhTWFwIHtcbiAgICByZXR1cm4gZGF0YXBvaW50RGV0YWlscy5yZWR1Y2UoXG4gICAgICAoXG4gICAgICAgIG1hcDogRGF0YXBvaW50c1ZhbHVlc0RhdGFNYXAsXG4gICAgICAgIHsgdmFsdWVGcmFnbWVudFR5cGUsIHZhbHVlRnJhZ21lbnRTZXJpZXMsIHNvdXJjZSB9OiBEYXRhcG9pbnREZXRhaWxzXG4gICAgICApID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBgJHt2YWx1ZUZyYWdtZW50VHlwZX0uJHt2YWx1ZUZyYWdtZW50U2VyaWVzfWA7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nVmFsdWUgPSBtYXAuZ2V0KHNvdXJjZSkgPz8gW107XG4gICAgICAgIG1hcC5zZXQoc291cmNlLCBbLi4uZXhpc3RpbmdWYWx1ZSwgdmFsdWVdKTtcbiAgICAgICAgcmV0dXJuIG1hcDtcbiAgICAgIH0sXG4gICAgICBuZXcgTWFwPHN0cmluZywgc3RyaW5nW10+KClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3NlcyB0aGUgZmV0Y2hlZCBzZXJpZXMgZGF0YSBhbmQgcHJlcGFyZXMgaXQgZm9yIGV4cG9ydC5cbiAgICpcbiAgICogQHBhcmFtIGRhdGFwb2ludERldGFpbHMgLSBBbiBhcnJheSBvZiBkYXRhIHBvaW50IGRldGFpbHMuXG4gICAqIEBwYXJhbSBmZXRjaGVkRGF0YU1hcCAtIEEgbWFwIG9mIGZldGNoZWQgc2VyaWVzIGRhdGEgZ3JvdXBlZCBieSBzb3VyY2UuXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIERhdGFUb0V4cG9ydCBvYmplY3RzLlxuICAgKi9cbiAgcHJvY2Vzc1Nlcmllc0RhdGEoXG4gICAgZGF0YXBvaW50RGV0YWlsczogRGF0YXBvaW50RGV0YWlsc1tdLFxuICAgIGZldGNoZWREYXRhTWFwOiBTb3VyY2VJdGVtW11cbiAgKTogRGF0YVRvRXhwb3J0W10ge1xuICAgIGNvbnN0IHZhbHVlc0dyb3VwZWRCeVNvdXJjZSA9IHRoaXMudXRpbHNTZXJ2aWNlLnRyYW5zZm9ybURhdGFTdHJ1Y3R1cmUoZmV0Y2hlZERhdGFNYXApO1xuXG4gICAgcmV0dXJuIGRhdGFwb2ludERldGFpbHMubWFwKChkZXRhaWxzOiBEYXRhcG9pbnREZXRhaWxzKSA9PiB7XG4gICAgICBsZXQgdW5pdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgbGV0IGRhdGE6IFRpbWVTZXJpZXNEYXRhO1xuXG4gICAgICAvKipcbiAgICAgICAqIFVuaXF1ZSBrZXkgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBkaWZmZXJlbnQgc2VyaWVzIGZyb20gc2FtZSBzb3VyY2UsXG4gICAgICAgKiBlLmcuOiBjOHlfQWNjZWxlcmF0aW9uLmFjY2VsZXJhdGlvblgsIGM4eV9BY2NlbGVyYXRpb24uYWNjZWxlcmF0aW9uWSwgYzh5X0FjY2VsZXJhdGlvbi5hY2NlbGVyYXRpb25aXG4gICAgICAgKi9cbiAgICAgIGNvbnN0IHNlcmllc0tleSA9IGAke2RldGFpbHMudmFsdWVGcmFnbWVudFR5cGV9LiR7ZGV0YWlscy52YWx1ZUZyYWdtZW50U2VyaWVzfWA7XG5cbiAgICAgIGlmICh2YWx1ZXNHcm91cGVkQnlTb3VyY2VbZGV0YWlscy5zb3VyY2VdW3Nlcmllc0tleV0pIHtcbiAgICAgICAgdW5pdCA9IHZhbHVlc0dyb3VwZWRCeVNvdXJjZVtkZXRhaWxzLnNvdXJjZV1bc2VyaWVzS2V5XS5zZXJpZXNEZXRhaWxzLnVuaXQ7XG4gICAgICAgIGRhdGEgPSB2YWx1ZXNHcm91cGVkQnlTb3VyY2VbZGV0YWlscy5zb3VyY2VdW3Nlcmllc0tleV0udmFsdWVzO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5kZXRhaWxzLFxuICAgICAgICB1bml0LFxuICAgICAgICB0aW1lVmFsdWVNYXA6IGRhdGFcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBnZXRTb3VyY2VzV2l0aFBlcm1pc3Npb25zVG9SZWFkKGRhdGFwb2ludERldGFpbHM6IERhdGFwb2ludERldGFpbHNbXSk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBjb25zdCBkYXRlRnJvbSA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgZGF0ZVRvID0gbmV3IERhdGUoZGF0ZUZyb20pO1xuXG4gICAgY29uc3QgZmV0Y2hlZERhdGFQcm9taXNlcyA9IGRhdGFwb2ludERldGFpbHMubWFwKGFzeW5jIGRhdGFwb2ludCA9PiB7XG4gICAgICBjb25zdCByYXdGaWx0ZXI6IElTZXJpZXNGaWx0ZXIgPSB7XG4gICAgICAgIGRhdGVGcm9tLFxuICAgICAgICBkYXRlVG8sXG4gICAgICAgIHNvdXJjZTogZGF0YXBvaW50LnNvdXJjZVxuICAgICAgfTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyByZXMgfTogSVJlc3VsdDxJU2VyaWVzPiA9IGF3YWl0IHRoaXMuZmV0Y2hTZXJpZXNEYXRhKHJhd0ZpbHRlcik7XG4gICAgICAgIGlmIChyZXM/LnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgcmV0dXJuIGRhdGFwb2ludC5zb3VyY2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBJZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIGZldGNoLCByZXR1cm4gbnVsbCB0byBwcmV2ZW50IHByb21pc2UgcmVqZWN0aW9uXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgZmV0Y2hlZFNvdXJjZXMgPSBhd2FpdCBQcm9taXNlLmFsbChmZXRjaGVkRGF0YVByb21pc2VzKTtcbiAgICByZXR1cm4gZmV0Y2hlZFNvdXJjZXMuZmlsdGVyKChzb3VyY2UpOiBzb3VyY2UgaXMgc3RyaW5nID0+IHNvdXJjZSAhPT0gbnVsbCk7XG4gIH1cblxuICAvKipcbiAgICogQWRqdXN0cyB0aGUgZ2l2ZW4gZGF0ZSBieSBhZGRpbmcgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbWludXRlcyBhbmQgc2V0dGluZyBzZWNvbmRzIHRvIDAuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgYWRqdXN0ZWQgaW4gc3RyaW5nIGZvcm1hdC5cbiAgICogQHBhcmFtIG1pbnV0ZXMgLSBUaGUgbnVtYmVyIG9mIG1pbnV0ZXMgdG8gYWRkIHRvIHRoZSBkYXRlLlxuICAgKiBAcGFyYW0gcm91bmRTZWNvbmRzIC0gV2hldGhlciB0byByb3VuZCB0aGUgc2Vjb25kcyBvciBub3QuXG4gICAqICAgICAgICAgICAgICAgICAgICAgICBJZiB0cnVlLCB0aGUgc2Vjb25kcyB3aWxsIGJlIHJvdW5kZWQgdG8gMC5cbiAgICogICAgICAgICAgICAgICAgICAgICAgIElmIGZhbHNlLCB0aGUgc2Vjb25kcyB3aWxsIGJlIGRpc3BsYXllZCBhcyB0aGV5IGFyZS5cbiAgICogQHJldHVybnMgVGhlIGFkanVzdGVkIGRhdGUgaW4gSVNPIHN0cmluZyBmb3JtYXQuXG4gICAqL1xuICBhZGp1c3REYXRlKGRhdGU6IHN0cmluZyB8IERhdGUsIG1pbnV0ZXM6IG51bWJlciwgcm91bmRTZWNvbmRzID0gdHJ1ZSk6IHN0cmluZyB7XG4gICAgY29uc3QgZGF0ZVRpbWUgPSBuZXcgRGF0ZShkYXRlKTtcbiAgICBpZiAoaXNOYU4oZGF0ZVRpbWUuZ2V0VGltZSgpKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGRhdGUnKTtcbiAgICB9XG5cbiAgICBkYXRlVGltZS5zZXRVVENNaW51dGVzKGRhdGVUaW1lLmdldFVUQ01pbnV0ZXMoKSArIG1pbnV0ZXMpO1xuICAgIGlmIChyb3VuZFNlY29uZHMpIHtcbiAgICAgIGRhdGVUaW1lLnNldFVUQ1NlY29uZHMoMCwgMCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGVUaW1lLnRvSVNPU3RyaW5nKCk7XG4gIH1cblxuICAvKipcbiAgICogQXN5bmNocm9ub3VzbHkgbG9hZHMgc2VyaWVzIGRhdGEgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhcmFtZXRlcnMuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGNvbnN0cnVjdHMgYSBmaWx0ZXIgZm9yIHJldHJpZXZpbmcgc2VyaWVzIGRhdGEgd2l0aGluIGEgc3BlY2lmaWVkIGRhdGUgcmFuZ2UsXG4gICAqIGZyb20gYSBzcGVjaWZpYyBzb3VyY2UsIGFuZCBvcHRpb25hbGx5IGFwcGx5aW5nIGFuIGFnZ3JlZ2F0aW9uIHR5cGUuXG4gICAqXG4gICAqIEBwYXJhbSByYXdGaWx0ZXIgLSBUaGUgcGFyYW1ldGVycyBmb3IgbG9hZGluZyBzZXJpZXMgZGF0YSwgaW5jbHVkaW5nIGRhdGUgcmFuZ2UsIHNvdXJjZSwgc2VyaWVzIG5hbWVzLCBhbmQgYWdncmVnYXRpb24gdHlwZS5cbiAgICogQHBhcmFtIHJvdW5kU2Vjb25kcyAtIEluZGljYXRlcyB3aGV0aGVyIHRvIHJvdW5kIHRoZSBzZWNvbmRzIGluIHRoZSBkYXRlIHJhbmdlIHRvIHRoZSBuZWFyZXN0IHdob2xlIG51bWJlci5cbiAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gc2VyaWVzIGRhdGEgd3JhcHBlZCBpbiByZXN1bHQgb2JqZWN0LlxuICAgKi9cbiAgYXN5bmMgZmV0Y2hTZXJpZXNEYXRhKFxuICAgIHJhd0ZpbHRlcjogSVNlcmllc0ZpbHRlcixcbiAgICByb3VuZFNlY29uZHMgPSBmYWxzZVxuICApOiBQcm9taXNlPElSZXN1bHQ8SVNlcmllcz4+IHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgc2VyaWVzRGF0YTogSVJlc3VsdDxJU2VyaWVzPiB8IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGZpbHRlcjogSVNlcmllc0ZpbHRlciA9IHRoaXMucHJlcGFyZVNlcmllc0ZpbHRlcihcbiAgICAgIHtcbiAgICAgICAgZGF0ZUZyb206IHJhd0ZpbHRlci5kYXRlRnJvbSxcbiAgICAgICAgZGF0ZVRvOiByYXdGaWx0ZXIuZGF0ZVRvLFxuICAgICAgICBzb3VyY2U6IHJhd0ZpbHRlci5zb3VyY2UsXG4gICAgICAgIHNlcmllczogcmF3RmlsdGVyLnNlcmllcyxcbiAgICAgICAgYWdncmVnYXRpb25UeXBlOiByYXdGaWx0ZXIuYWdncmVnYXRpb25UeXBlXG4gICAgICB9LFxuICAgICAgcm91bmRTZWNvbmRzXG4gICAgKTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBUT0RPOiBjb25zaWRlciBhZGRpbmcgYSBjYWNoZSBtZWNoYW5pc20gLT4gTVRNLTYwMjg5LCBNVE0tNTkyMzNcbiAgICAgIC8vIFdoZW4gdXNlciBzd2l0Y2hlcyBiZXR3ZWVuIHJlcG9ydCB0eXBlcywgYW5kIHJlc3Qgb2YgdGhlIHNldHRpbmdzIGFyZSB0aGUgc2FtZSwgdGhlbiB0aGUgZGF0YSBzaG91bGQgbm90IGJlIGZldGNoZWQgYWdhaW4/XG4gICAgICBzZXJpZXNEYXRhID0gYXdhaXQgdGhpcy5tZWFzdXJlbWVudFNlcnZpY2UubGlzdFNlcmllcyhmaWx0ZXIpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGVycm9yKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2VyaWVzRGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIGFuZCBwcmVwYXJlcyBtZWFzdXJlbWVudCBkYXRhIGZvciBwcmV2aWV3LlxuICAgKlxuICAgKiBFbXB0eSBEYXRhVG9FeHBvcnQgb2JqZWN0IGNhbiBiZSByZXR1cm5lZCwgYmVjYXVzZSB1bmxpa2Ugc2VyaWVzIGRhdGEsXG4gICAqIG1lYXN1cmVtZW50IGRhdGEgaXMgbm90IGZ1cnRoZXIgcHJvY2Vzc2VkIGJlc2lkZXMgc2hvd2luZyBvbmx5IGluIHRoZSBwcmV2aWV3LlxuICAgKiBDU1YvRXhjZWwgZmlsZXMgYXJlIGdlbmVyYXRlZCBieSB0aGUgYmFja2VuZCBmb3IgbWVhc3VyZW1lbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gZXhwb3J0Q29uZmlnIC0gVGhlIGV4cG9ydCBjb25maWd1cmF0aW9uLlxuICAgKiBAcGFyYW0gcm91bmRTZWNvbmRzIC0gSW5kaWNhdGVzIHdoZXRoZXIgdG8gcm91bmQgdGhlIHNlY29uZHMgaW4gdGhlIGRhdGUgcmFuZ2UgdG8gdGhlIG5lYXJlc3Qgd2hvbGUgbnVtYmVyLlxuICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhbiBhcnJheSBvZiBEYXRhVG9FeHBvcnQgb2JqZWN0cyBvciBudWxsIHdoZW4gbm8gZGF0YSBpcyBmZXRjaGVkLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaEFuZFByZXBhcmVNZWFzdXJlbWVudERhdGFUb0V4cG9ydEZvclByZXZpZXcoXG4gICAgZXhwb3J0Q29uZmlnOiBFeHBvcnRDb25maWcsXG4gICAgcm91bmRTZWNvbmRzID0gZmFsc2VcbiAgKTogUHJvbWlzZTxEYXRhVG9FeHBvcnRbXT4gfCBudWxsIHtcbiAgICBjb25zdCBkYXRhVG9FeHBvcnRQcm9taXNlczogUHJvbWlzZTxEYXRhVG9FeHBvcnQ+W10gPSBleHBvcnRDb25maWcuZGF0YXBvaW50RGV0YWlscy5tYXAoXG4gICAgICBhc3luYyBkZXRhaWxzID0+IHtcbiAgICAgICAgY29uc3QgZmV0Y2hlZE1lYXN1cmVtZW50RGF0YTogSVJlc3VsdExpc3Q8SU1lYXN1cmVtZW50PiA9XG4gICAgICAgICAgYXdhaXQgdGhpcy5mZXRjaE1lYXN1cmVtZW50RGF0YUZvclByZXZpZXcoZGV0YWlscywgZXhwb3J0Q29uZmlnLCByb3VuZFNlY29uZHMpO1xuXG4gICAgICAgIGlmIChmZXRjaGVkTWVhc3VyZW1lbnREYXRhPy5kYXRhPy5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzTWVhc3VyZW1lbnREYXRhRm9yUHJldmlldyhkZXRhaWxzLCBmZXRjaGVkTWVhc3VyZW1lbnREYXRhLmRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICk7XG5cbiAgICByZXR1cm4gYXdhaXQgUHJvbWlzZS5hbGwoZGF0YVRvRXhwb3J0UHJvbWlzZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaE1lYXN1cmVtZW50RGF0YUZvclByZXZpZXcoXG4gICAgZGV0YWlsczogRGF0YXBvaW50RGV0YWlscyxcbiAgICBleHBvcnRDb25maWc6IEV4cG9ydENvbmZpZyxcbiAgICByb3VuZFNlY29uZHM6IGJvb2xlYW5cbiAgKTogUHJvbWlzZTxJUmVzdWx0TGlzdDxJTWVhc3VyZW1lbnQ+PiB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IG1lYXN1cmVtZW50czogSVJlc3VsdExpc3Q8SU1lYXN1cmVtZW50PiB8IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGZpbHRlcjogSU1lYXN1cmVtZW50RmlsdGVyID0gdGhpcy5wcmVwYXJlTWVhc3VyZW1lbnRzRmlsdGVyKFxuICAgICAgZGV0YWlscyxcbiAgICAgIGV4cG9ydENvbmZpZyxcbiAgICAgIHJvdW5kU2Vjb25kcyxcbiAgICAgIE1FQVNVUkVNRU5UU19QUkVWSUVXX0lURU1TX0xJTUlUXG4gICAgKTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBUT0RPOiBjb25zaWRlciBhZGRpbmcgYSBjYWNoZSBtZWNoYW5pc20gLT4gTVRNLTYwMjg5XG4gICAgICAvLyBXaGVuIHVzZXIgc3dpdGNoZXMgYmV0d2VlbiByZXBvcnQgdHlwZXMsIGFuZCByZXN0IG9mIHRoZSBzZXR0aW5ncyBhcmUgdGhlIHNhbWUsIHRoZW4gdGhlIGRhdGEgc2hvdWxkIG5vdCBiZSBmZXRjaGVkIGFnYWluP1xuICAgICAgbWVhc3VyZW1lbnRzID0gYXdhaXQgdGhpcy5tZWFzdXJlbWVudFNlcnZpY2UubGlzdChmaWx0ZXIpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGVycm9yKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVhc3VyZW1lbnRzO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaEFuZFByZXBhcmVTZXJpZXNEYXRhVG9FeHBvcnQoZXhwb3J0Q29uZmlnOiBFeHBvcnRDb25maWcpIHtcbiAgICBjb25zdCBkYXRhcG9pbnRzVmFsdWVzRGF0YU1hcDogRGF0YXBvaW50c1ZhbHVlc0RhdGFNYXAgPSB0aGlzLmdyb3VwU2VyaWVzQnlEZXZpY2VJZChcbiAgICAgIGV4cG9ydENvbmZpZy5kYXRhcG9pbnREZXRhaWxzXG4gICAgKTtcblxuICAgIGNvbnN0IGZldGNoZWREYXRhUHJvbWlzZXMgPSBBcnJheS5mcm9tKGRhdGFwb2ludHNWYWx1ZXNEYXRhTWFwKS5tYXAoXG4gICAgICBhc3luYyAoW3NvdXJjZSwgc2VyaWVzXSkgPT4ge1xuICAgICAgICBjb25zdCB7IGRhdGVGcm9tLCBkYXRlVG8sIGFnZ3JlZ2F0aW9uIH0gPSBleHBvcnRDb25maWc7XG5cbiAgICAgICAgY29uc3QgcmF3RmlsdGVyOiBJU2VyaWVzRmlsdGVyID0ge1xuICAgICAgICAgIGRhdGVGcm9tLFxuICAgICAgICAgIGRhdGVUbyxcbiAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgc2VyaWVzLFxuICAgICAgICAgIGFnZ3JlZ2F0aW9uVHlwZTogYWdncmVnYXRpb24gYXMgYWdncmVnYXRpb25UeXBlXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgeyBkYXRhIH06IElSZXN1bHQ8SVNlcmllcz4gPSBhd2FpdCB0aGlzLmZldGNoU2VyaWVzRGF0YShyYXdGaWx0ZXIpO1xuXG4gICAgICAgIHJldHVybiB7IHNvdXJjZSwgZGF0YSB9O1xuICAgICAgfVxuICAgICk7XG5cbiAgICBjb25zdCBmZXRjaGVkRGF0YUdyb3VwZWRCeVNvdXJjZTogU291cmNlSXRlbVtdID0gYXdhaXQgUHJvbWlzZS5hbGwoZmV0Y2hlZERhdGFQcm9taXNlcyk7XG5cbiAgICByZXR1cm4gdGhpcy5wcm9jZXNzU2VyaWVzRGF0YShleHBvcnRDb25maWcuZGF0YXBvaW50RGV0YWlscywgZmV0Y2hlZERhdGFHcm91cGVkQnlTb3VyY2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBwcmVwYXJlU2VyaWVzRmlsdGVyKGZpbHRlcnM6IElTZXJpZXNGaWx0ZXIsIHJvdW5kU2Vjb25kczogYm9vbGVhbik6IElTZXJpZXNGaWx0ZXIge1xuICAgIGNvbnN0IHsgZGF0ZUZyb20sIGRhdGVUbywgc291cmNlLCBzZXJpZXMsIGFnZ3JlZ2F0aW9uVHlwZSB9ID0gZmlsdGVycztcbiAgICBjb25zdCBmcm9tID0gdGhpcy5hZGp1c3REYXRlKGRhdGVGcm9tLCAwLCByb3VuZFNlY29uZHMpO1xuICAgIGNvbnN0IHRvID0gdGhpcy5hZGp1c3REYXRlKGRhdGVUbywgMCwgcm91bmRTZWNvbmRzKTtcblxuICAgIGNvbnN0IGZpbHRlcjogSVNlcmllc0ZpbHRlciA9IHtcbiAgICAgIGRhdGVGcm9tOiBmcm9tLFxuICAgICAgZGF0ZVRvOiB0byxcbiAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgcmV2ZXJ0OiB0cnVlXG4gICAgfTtcblxuICAgIC8vIFRoZSAnTk9ORScgYWdncmVnYXRpb24gdHlwZSBpcyBub3QgaGFuZGxlZCBieSBhIGJhY2tlbmQsIHNvIGV2ZW4gd2hlbiBpcyBzZWxlY3RlZCwgaXQgaXMgbm90IHBhc3NlZCBhcyBhIGZpbHRlciBwYXJhbWV0ZXIuXG4gICAgaWYgKGFnZ3JlZ2F0aW9uVHlwZSAmJiBhZ2dyZWdhdGlvblR5cGUgIT09IChBR0dSRUdBVElPTl9WQUxVRVMubm9uZSBhcyBhZ2dyZWdhdGlvblR5cGUpKSB7XG4gICAgICBmaWx0ZXIuYWdncmVnYXRpb25UeXBlID0gYWdncmVnYXRpb25UeXBlO1xuICAgIH1cblxuICAgIC8vIFRPRE86IGl0IGlzIGEgdGVtcG9yYWwgd29ya2Fyb3VuZCBmb3IgYSBidWcgaW4gdGhlIGJhY2tlbmQsXG4gICAgLy8gd2hlcmUgdGhlIHNlcmllcyB3aXRoIG1vcmUgdGhhbiBvbmUgZG90IGFyZSBpbXBvc3NpYmxlIHRvIHJldHJpZXZlOlxuICAgIC8vIGh0dHBzOi8vY3VtdWxvY2l0eS5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9NVE0tNTkyNzdcbiAgICBpZiAoc2VyaWVzKSB7XG4gICAgICBjb25zdCBoYXNNb3JlVGhhbk9uZURvdCA9IChzZXJpZXMgYXMgc3RyaW5nW10pLnNvbWUocyA9PiBzLnNwbGl0KCcuJykubGVuZ3RoID4gMik7XG4gICAgICBpZiAoIWhhc01vcmVUaGFuT25lRG90KSB7XG4gICAgICAgIGZpbHRlci5zZXJpZXMgPSBzZXJpZXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbHRlcjtcbiAgfVxufVxuIl19
|
|
407
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1mZXRjaGluZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3IvZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3ItbW9kYWwvZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3ItZmlsZS1leHBvcnRlci9kYXRhLWZldGNoaW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBU0wsa0JBQWtCLEVBQ25CLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQVFMLGdDQUFnQyxFQUVqQyxNQUFNLHdDQUF3QyxDQUFDO0FBQ2hELE9BQU8sRUFBYyxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7O0FBSzNELE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsWUFDVSxZQUEwQixFQUMxQixrQkFBc0MsRUFDdEMsZ0JBQWtDLEVBQ2xDLFlBQTBCO1FBSDFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztJQUNqQyxDQUFDO0lBRUo7Ozs7Ozs7O09BUUc7SUFDSCxLQUFLLENBQUMsMkJBQTJCLENBQy9CLFlBQTBCO1FBRTFCLE1BQU0sc0JBQXNCLEdBQUcsTUFBTSxDQUFDO1FBRXRDLE1BQU0sUUFBUSxHQUF3QyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUNyRixLQUFLLEVBQUMsT0FBTyxFQUFDLEVBQUU7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ZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIGFnZ3JlZ2F0aW9uVHlwZSxcbiAgSUZldGNoUmVzcG9uc2UsXG4gIElNZWFzdXJlbWVudCxcbiAgSU1lYXN1cmVtZW50RmlsdGVyLFxuICBJUmVzdWx0LFxuICBJUmVzdWx0TGlzdCxcbiAgSVNlcmllcyxcbiAgSVNlcmllc0ZpbHRlcixcbiAgTWVhc3VyZW1lbnRTZXJ2aWNlXG59IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEFHR1JFR0FUSU9OX1ZBTFVFUywgQWxlcnRTZXJ2aWNlLCBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1xuICBEYXRhcG9pbnREZXRhaWxzLFxuICBEYXRhcG9pbnRzRXhjZWVkaW5nTGltaXQsXG4gIERhdGFwb2ludHNWYWx1ZXNEYXRhTWFwLFxuICBEYXRhVG9FeHBvcnQsXG4gIERhdGFUb0V4cG9ydFdpdGhCYWNrZW5kQ3JlYXRlZEZpbGUsXG4gIEV4cG9ydENvbmZpZyxcbiAgTWVhc3VyZW1lbnRGaWxlQ29uZmlnLFxuICBNRUFTVVJFTUVOVFNfUFJFVklFV19JVEVNU19MSU1JVCxcbiAgVGltZVNlcmllc0RhdGFcbn0gZnJvbSAnLi4vLi4vZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3IubW9kZWwnO1xuaW1wb3J0IHsgU291cmNlSXRlbSwgVXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi91dGlscy5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRGF0YUZldGNoaW5nU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZWFzdXJlbWVudFNlcnZpY2U6IE1lYXN1cmVtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1dGlsc1NlcnZpY2U6IFV0aWxzU2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhbnkgb2YgbWVhc3VyZW1lbnRzIHJlcXVlc3RzIG1heSBleGNlZWRlZCB0aGUgbGltaXQsXG4gICAqIGFmdGVyIHdoaWNoIHRoZSBleHBvcnQgZGF0YSBpcyBwcm9jZXNzZWQgYnkgdGhlIGJhY2tlbmQgYW5kIHRoZSBnZW5lcmF0ZWQgQ1NWL0V4Y2VsIGZpbGUgaXMgc2VudCBieSBlbWFpbC5cbiAgICpcbiAgICogVGhlIHRocmVzaG9sZCBpcyBzZXQgdG8gNTBfMDAwIHJlY29yZHMgaW4gYXBwbGljYXRpb24ncyBjb3JlIHByb3BlcnRpZXMgKGV4cG9ydC5kYXRhLnN5bmNocm9ub3VzLmxpbWl0KS5cbiAgICpcbiAgICogQHBhcmFtIGV4cG9ydENvbmZpZyAtIFRoZSBleHBvcnQgY29uZmlndXJhdGlvbi5cbiAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmV0dXJucyBhbiBhcnJheSBvZiBvYmplY3RzIHJlcHJlc2VudGluZyBkYXRhcG9pbnRzIGZpbGVzIHRoYXQgd2lsbCBiZSBzZW50IGJ5IGVtYWlsLlxuICAgKi9cbiAgYXN5bmMgZ2V0RGF0YXBvaW50c0V4Y2VlZGluZ0xpbWl0KFxuICAgIGV4cG9ydENvbmZpZzogRXhwb3J0Q29uZmlnXG4gICk6IFByb21pc2U8RGF0YXBvaW50c0V4Y2VlZGluZ0xpbWl0W10+IHtcbiAgICBjb25zdCBiYWNrZW5kUHJvY2Vzc2luZ0xpbWl0ID0gNTBfMDAwO1xuXG4gICAgY29uc3QgcHJvbWlzZXM6IFByb21pc2U8RGF0YXBvaW50c0V4Y2VlZGluZ0xpbWl0PltdID0gZXhwb3J0Q29uZmlnLmRhdGFwb2ludERldGFpbHMubWFwKFxuICAgICAgYXN5bmMgZGV0YWlscyA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgZmlsdGVyOiBJTWVhc3VyZW1lbnRGaWx0ZXIgPSB7XG4gICAgICAgICAgICBkYXRlRnJvbTogZXhwb3J0Q29uZmlnLmRhdGVGcm9tLFxuICAgICAgICAgICAgZGF0ZVRvOiBleHBvcnRDb25maWcuZGF0ZVRvLFxuICAgICAgICAgICAgcGFnZVNpemU6IDEsXG4gICAgICAgICAgICBzb3VyY2U6IGRldGFpbHMuc291cmNlLFxuICAgICAgICAgICAgdmFsdWVGcmFnbWVudFNlcmllczogZGV0YWlscy52YWx1ZUZyYWdtZW50U2VyaWVzLFxuICAgICAgICAgICAgdmFsdWVGcmFnbWVudFR5cGU6IGRldGFpbHMudmFsdWVGcmFnbWVudFR5cGUsXG4gICAgICAgICAgICB3aXRoVG90YWxFbGVtZW50czogdHJ1ZVxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMubWVhc3VyZW1lbnRTZXJ2aWNlLmxpc3QoZmlsdGVyKTtcblxuICAgICAgICAgIGlmIChyZXNwb25zZT8ucGFnaW5nPy50b3RhbEVsZW1lbnRzID4gYmFja2VuZFByb2Nlc3NpbmdMaW1pdCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZGF0YXBvaW50RGV0YWlsOiB7XG4gICAgICAgICAgICAgICAgc291cmNlOiBkZXRhaWxzLnNvdXJjZSxcbiAgICAgICAgICAgICAgICB2YWx1ZUZyYWdtZW50U2VyaWVzOiBkZXRhaWxzLnZhbHVlRnJhZ21lbnRTZXJpZXMsXG4gICAgICAgICAgICAgICAgdmFsdWVGcmFnbWVudFR5cGU6IGRldGFpbHMudmFsdWVGcmFnbWVudFR5cGVcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgdG90YWxFbGVtZW50czogcmVzcG9uc2UucGFnaW5nLnRvdGFsRWxlbWVudHNcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGVycm9yKTtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG5cbiAgICBjb25zdCByZXN1bHRzOiBEYXRhcG9pbnRzRXhjZWVkaW5nTGltaXRbXSA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcblxuICAgIGNvbnN0IGRhdGFwb2ludHNFeGNlZWRpbmdMaW1pdCA9IHJlc3VsdHMuZmlsdGVyKHJlc3VsdCA9PiByZXN1bHQgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIGRhdGFwb2ludHNFeGNlZWRpbmdMaW1pdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIG1lc3NhZ2UgdG8gYmUgZGlzcGxheWVkIHdoZW4gdGhlIGxpbWl0IG9mIGRhdGFwb2ludHMgaXMgZXhjZWVkZWQgZHVyaW5nIGZpbGUgZXhwb3J0LlxuICAgKlxuICAgKiBAcGFyYW0gaGFzTm9FeHBvcnRhYmxlRGF0YSAtIEluZGljYXRlcyBpZiB0aGVyZSBpcyBubyBleHBvcnRhYmxlIGRhdGEgYmVjYXVzZSB0aGUgZGF0ZSByYW5nZSBvZiBhbGwgc2VsZWN0ZWQgZGF0YXBvaW50cyBleGNlZWRzIDEsMDAwLDAwMCByZWNvcmRzLlxuICAgKiBAcGFyYW0gZW1haWxEZWxpdmVyYWJsZUNvdW50IC0gVGhlIG51bWJlciBvZiBkYXRhcG9pbnQgZXhwb3J0cyB0aGF0IGV4Y2VlZCB0aGUgbGltaXQsIHdpbGwgYmUgcHJvY2VlZGVkIGJ5IHRoZSBiYWNrZW5kIGFuZCBzZW50IGJ5IGVtYWlsLlxuICAgKiBAcGFyYW0gYnJvd3NlckRvd25sb2FkYWJsZUNvdW50IC0gVGhlIG51bWJlciBvZiBkYXRhcG9pbnQgZXhwb3J0cyB0aGF0IGNhbiBiZSBkb3dubG9hZGVkIGRpcmVjdGx5LlxuICAgKiBAcGFyYW0gc2tpcHBlZERhdGFwb2ludENvdW50IC0gVGhlIG51bWJlciBvZiBkYXRhcG9pbnQgZXhwb3J0cyBza2lwcGVkIGR1ZSB0byBleGNlZWRpbmcgdGhlIG1lYXN1cmVtZW50cyBBUEkgbGltaXQgb2YgMSwwMDAsMDAwIHJlY29yZHMuXG4gICAqIEBwYXJhbSB0b3RhbERhdGFwb2ludHNTZWxlY3RlZEZvckV4cG9ydENvdW50IC0gVG90YWwgbnVtYmVyIG9mIGRhdGFwb2ludCBzZWxlY3RlZCBmb3IgZXhwb3J0cy5cbiAgICogQHJldHVybnMgVGhlIG1lc3NhZ2UgdGhhdCBjYW4gYmUgaW5qZWN0ZWQuXG4gICAqL1xuICBnZXRMaW1pdEV4Y2VlZGVkTWVzc2FnZShcbiAgICBoYXNOb0V4cG9ydGFibGVEYXRhOiBib29sZWFuLFxuICAgIGVtYWlsRGVsaXZlcmFibGVDb3VudD86IG51bWJlcixcbiAgICBicm93c2VyRG93bmxvYWRhYmxlQ291bnQ/OiBudW1iZXIsXG4gICAgbm9uUmV0cmlldmFibGVDb3VudD86IG51bWJlcixcbiAgICB0b3RhbERhdGFwb2ludHNTZWxlY3RlZEZvckV4cG9ydENvdW50PzogbnVtYmVyXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKGhhc05vRXhwb3J0YWJsZURhdGEpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgZ2V0dGV4dChcbiAgICAgICAgICBgVGhlIGRhdGEgZm9yIHNlbGVjdGVkIGRhdGFwb2ludChzKSBleGNlZWQgMSwwMDAsMDAwIHJlY29yZHMsIHdoaWNoIGlzIHRoZSBsaW1pdCBmb3IgYmFja2VuZCBwcm9jZXNzaW5nLiBUbyBleHBvcnQgdGhpcyBkYXRhLCBwbGVhc2UgcmVkdWNlIHRoZSBkYXRlIHJhbmdlLmBcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgIH1cblxuICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgIGdldHRleHQoXG4gICAgICAgIGBBZnRlciBjbGlja2luZyBcIkRvd25sb2FkXCI6PGJyPlxuICAgICAgICA8dWw+XG4gICAgICAgICAgPGxpPjxzdHJvbmc+e3skYnJvd3NlckRvd25sb2FkYWJsZUNvdW50fX08L3N0cm9uZz4gZGF0YXBvaW50KHMpIGV4cG9ydHMgd2lsbCBiZSBkb3dubG9hZGVkIGRpcmVjdGx5IHdpdGhpbiBvbmUgZmlsZTogPGVtPmV4cG9ydGVkX1tjc3YvZXhjZWxdLnppcDwvZW0+PC9saT5cbiAgICAgICAgICA8bGk+PHN0cm9uZz57eyRlbWFpbERlbGl2ZXJhYmxlQ291bnR9fTwvc3Ryb25nPiBkYXRhcG9pbnQocykgZXhwb3J0cyByZXF1aXJlIGZ1cnRoZXIgcHJvY2Vzc2luZy4gVGhlIGZpbGVzIHdpbGwgYmUgc2VudCB0byB5b3UgdmlhIHNlcGFyYXRlIGVtYWlscyBvbmNlIGNvbXBsZXRlZCwgd2hpY2ggbWF5IHRha2Ugc29tZSB0aW1lLjwvbGk+XG4gICAgICAgICAgPGxpPjxzdHJvbmc+e3skbm9uUmV0cmlldmFibGVDb3VudH19PC9zdHJvbmc+IGRhdGFwb2ludChzKSBleHBvcnRzIGV4Y2VlZGVkIDEsMDAwLDAwMCByZWNvcmRzLCB3aGljaCBpcyB0aGUgbGltaXQgZm9yIGJhY2tlbmQgcHJvY2Vzc2luZy4gVG8gZXhwb3J0IHRoZXNlIGRhdGEsIHBsZWFzZSByZWR1Y2UgdGhlIGRhdGUgcmFuZ2UuIE90aGVyd2lzZSwgdGhlIGRhdGEgd2lsbCBuZWl0aGVyIGJlIGRvd25sb2FkZWQgbm9yIHNlbnQgdmlhIGVtYWlsLjwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgICAgIDxwPlRoZSB0b3RhbCBudW1iZXIgb2YgZGF0YSBwb2ludHMgdGhhdCBjYW4gYmUgZXhwb3J0ZWQgaXM6IDxzdHJvbmc+e3skdG90YWxFeHBvcnRhYmxlRGF0YXBvaW50c0NvdW50fX0gb3V0IG9mIHt7JHRvdGFsRGF0YXBvaW50c1NlbGVjdGVkRm9yRXhwb3J0Q291bnR9fTwvc3Ryb25nPi48L3A+XG4gICAgICAgIDxwPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gVGhlIGZpbGUgbmFtZSBjb252ZW50aW9uIG9mIGZpbGVzIHdpdGhpbiB6aXAgZmlsZSBpczogPGNvZGU+W3NvdXJjZV1fW2ZyYWdtZW50X3Nlcmllc10uW2Nzdi94bHNdPC9jb2RlPjwvcD5gXG4gICAgICApLFxuICAgICAge1xuICAgICAgICAkYnJvd3NlckRvd25sb2FkYWJsZUNvdW50OiBicm93c2VyRG93bmxvYWRhYmxlQ291bnQsXG4gICAgICAgICRlbWFpbERlbGl2ZXJhYmxlQ291bnQ6IGVtYWlsRGVsaXZlcmFibGVDb3VudCxcbiAgICAgICAgJG5vblJldHJpZXZhYmxlQ291bnQ6IG5vblJldHJpZXZhYmxlQ291bnQsXG4gICAgICAgICR0b3RhbERhdGFwb2ludHNTZWxlY3RlZEZvckV4cG9ydENvdW50OiB0b3RhbERhdGFwb2ludHNTZWxlY3RlZEZvckV4cG9ydENvdW50LFxuICAgICAgICAkdG90YWxFeHBvcnRhYmxlRGF0YXBvaW50c0NvdW50OiBicm93c2VyRG93bmxvYWRhYmxlQ291bnQgKyBlbWFpbERlbGl2ZXJhYmxlQ291bnRcbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3QgdHJpbW1lZE1lc3NhZ2UgPSB0aGlzLnJlbW92ZVplcm9Db3VudExpc3RJdGVtcyhtZXNzYWdlLCBbXG4gICAgICBicm93c2VyRG93bmxvYWRhYmxlQ291bnQsXG4gICAgICBlbWFpbERlbGl2ZXJhYmxlQ291bnQsXG4gICAgICBub25SZXRyaWV2YWJsZUNvdW50XG4gICAgXSk7XG5cbiAgICByZXR1cm4gdHJpbW1lZE1lc3NhZ2U7XG4gIH1cblxuICAvKipcbiAgICogVHJpbXMgdGhlIGdpdmVuIEhUTUwgbWVzc2FnZSBieSByZW1vdmluZyBsaXN0IGl0ZW1zIHRoYXQgY29ycmVzcG9uZCB0byB6ZXJvIGNvdW50cy5cbiAgICpcbiAgICogQHBhcmFtIG1lc3NhZ2UgLSBUaGUgSFRNTCBzdHJpbmcgY29udGFpbmluZyB0aGUgbWVzc2FnZSB3aXRoIGxpc3QgaXRlbXMuXG4gICAqIEBwYXJhbSBjb3VudHMgLSBBbiBhcnJheSBvZiBudW1iZXIgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBsaXN0IGl0ZW0uXG4gICAqIEBwYXJhbSBjb3VudFRvVHJpbSAtIEEgY291bnQgdGhhdCB3aWxsIGJlIHRyaW1tZWQgd2l0aCBjb3JyZXNwb25kaW5nIGxpc3QgaXRlbS5cbiAgICogQHJldHVybnMgQSB0cmltbWVkIEhUTUwgc3RyaW5nIHdpdGggbGlzdCBpdGVtcyByZW1vdmVkIHdoZXJlIHRoZSBjb3JyZXNwb25kaW5nIGNvdW50IGlzIHplcm8uXG4gICAqXG4gICAqIEV4YW1wbGU6XG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgbWVzc2FnZSA9ICc8dWw+PGxpPkl0ZW0gMTwvbGk+PGxpPkl0ZW0gMjwvbGk+PGxpPkl0ZW0gMzwvbGk+PC91bD4nO1xuICAgKiBjb25zdCBjb3VudHMgPSBbMSwgMCwgMl07XG4gICAqIGNvbnN0IHRyaW1tZWRNZXNzYWdlID0gdGhpcy5yZW1vdmVaZXJvQ291bnRMaXN0SXRlbXMobWVzc2FnZSwgY291bnRzKTtcbiAgICogLy8gUmVzdWx0OiAnPHVsPjxsaT5JdGVtIDE8L2xpPjxsaT5JdGVtIDM8L2xpPjwvdWw+J1xuICAgKiBgYGBcbiAgICovXG4gIHJlbW92ZVplcm9Db3VudExpc3RJdGVtcyhtZXNzYWdlOiBzdHJpbmcsIGNvdW50czogbnVtYmVyW10sIGNvdW50VG9UcmltID0gMCk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpO1xuICAgIGNvbnN0IGRvYyA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcobWVzc2FnZSwgJ3RleHQvaHRtbCcpO1xuICAgIGNvbnN0IGxpc3RJdGVtcyA9IGRvYy5xdWVyeVNlbGVjdG9yQWxsKCd1bCBsaScpO1xuXG4gICAgbGlzdEl0ZW1zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICBpZiAoY291bnRzW2luZGV4XSA9PT0gY291bnRUb1RyaW0pIHtcbiAgICAgICAgaXRlbS5yZW1vdmUoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBkb2MuYm9keS5pbm5lckhUTUw7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGxheXMgYW4gaW5mb3JtYXRpb24gYWxlcnQgYWJvdXQgc2VuZGluZyBkYXRhIHZpYSBlbWFpbC5cbiAgICpcbiAgICogT25seSBtZWFzdXJlbWVudHMgQVBJIGNhbiBzZW5kIGZpbGVzIHZpYSBlbWFpbC5cbiAgICpcbiAgICogQHBhcmFtIGZpbGVUeXBlIC0gVGhlIHR5cGUgb2YgZmlsZSB0byBiZSBzZW50LlxuICAgKiBAcGFyYW0gZGF0YXBvaW50c0V4Y2VlZGluZ0xpbWl0IC0gVGhlIGFycmF5IG9mIGRhdGFwb2ludHMgZXhjZWVkaW5nIHRoZSBsaW1pdC5cbiAgICovXG4gIHNob3dTZW5kVmlhRW1haWxJbmZvQWxlcnQoXG4gICAgZmlsZVR5cGU6IHN0cmluZyxcbiAgICBkYXRhcG9pbnRzRXhjZWVkaW5nTGltaXQ6IERhdGFwb2ludHNFeGNlZWRpbmdMaW1pdFtdXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IG1lc3NhZ2VUZW1wbGF0ZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgZ2V0dGV4dChgWW91IHdpbGwgZ2V0IHt7JGZpbGVUeXBlVGV4dH19IGZpbGUocykgZm9yIHt7JGNvdW50fX0gc2VyaWVzIHZpYSBlbWFpbC5gKSxcbiAgICAgIHsgJGNvdW50OiBkYXRhcG9pbnRzRXhjZWVkaW5nTGltaXQubGVuZ3RoLCAkZmlsZVR5cGVUZXh0OiBmaWxlVHlwZSB9XG4gICAgKTtcbiAgICBjb25zdCBmb3JtYXR0ZWRMaXN0ID0gZGF0YXBvaW50c0V4Y2VlZGluZ0xpbWl0XG4gICAgICAubWFwKFxuICAgICAgICBkYXRhcG9pbnQgPT5cbiAgICAgICAgICBg4oCiICR7ZGF0YXBvaW50LmRhdGFwb2ludERldGFpbC5zb3VyY2V9XyR7ZGF0YXBvaW50LmRhdGFwb2ludERldGFpbC52YWx1ZUZyYWdtZW50VHlwZX1fJHtkYXRhcG9pbnQuZGF0YXBvaW50RGV0YWlsLnZhbHVlRnJhZ21lbnRTZXJpZXN9YFxuICAgICAgKVxuICAgICAgLmpvaW4oJ1xcbicpO1xuXG4gICAgdGhpcy5hbGVydFNlcnZpY2UuaW5mbyhtZXNzYWdlVGVtcGxhdGUsIGZvcm1hdHRlZExpc3QpO1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hNZWFzdXJlbWVudERhdGFGaWxlc0FuZFBhaXJXaXRoU291cmNlRGV0YWlscyhcbiAgICBhY2NlcHRGaWxlVHlwZTogc3RyaW5nLFxuICAgIGV4cG9ydENvbmZpZzogRXhwb3J0Q29uZmlnXG4gICk6IFByb21pc2U8RGF0YVRvRXhwb3J0V2l0aEJhY2tlbmRDcmVhdGVkRmlsZVtdPiB7XG4gICAgY29uc3QgbWVhc3VyZW1lbnRGaWxlQ29uZmlnOiBNZWFzdXJlbWVudEZpbGVDb25maWcgPSB7XG4gICAgICBleHBvcnRDb25maWcsXG4gICAgICBhY2NlcHRGaWxlVHlwZVxuICAgIH07XG4gICAgY29uc3QgZmlsZVByb21pc2VzID0gZXhwb3J0Q29uZmlnLmRhdGFwb2ludERldGFpbHMubWFwKGRldGFpbHMgPT5cbiAgICAgIHRoaXMuZmV0Y2hBbmRQcm9jZXNzTWVhc3VyZW1lbnRGaWxlKGRldGFpbHMsIG1lYXN1cmVtZW50RmlsZUNvbmZpZylcbiAgICApO1xuICAgIHJldHVybiBQcm9taXNlLmFsbChmaWxlUHJvbWlzZXMpO1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hBbmRQcm9jZXNzTWVhc3VyZW1lbnRGaWxlKFxuICAgIGRldGFpbHM6IERhdGFwb2ludERldGFpbHMsXG4gICAgbWVhc3VyZW1lbnRGaWxlQ29uZmlnOiBNZWFzdXJlbWVudEZpbGVDb25maWcsXG4gICAgcm91bmRTZWNvbmRzID0gZmFsc2VcbiAgKTogUHJvbWlzZTxEYXRhVG9FeHBvcnRXaXRoQmFja2VuZENyZWF0ZWRGaWxlIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgZmlsdGVyOiBJTWVhc3VyZW1lbnRGaWx0ZXIgPSB0aGlzLnByZXBhcmVNZWFzdXJlbWVudHNGaWx0ZXIoXG4gICAgICBkZXRhaWxzLFxuICAgICAgbWVhc3VyZW1lbnRGaWxlQ29uZmlnLmV4cG9ydENvbmZpZyxcbiAgICAgIHJvdW5kU2Vjb25kc1xuICAgICk7XG4gICAgY29uc3QgaGVhZGVyID0geyBhY2NlcHQ6IG1lYXN1cmVtZW50RmlsZUNvbmZpZy5hY2NlcHRGaWxlVHlwZSB9O1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG1lYXN1cmVtZW50RmlsZVJlc3BvbnNlOiBJRmV0Y2hSZXNwb25zZSA9XG4gICAgICAgIGF3YWl0IHRoaXMubWVhc3VyZW1lbnRTZXJ2aWNlLmdldE1lYXN1cmVtZW50c0ZpbGUoZmlsdGVyLCBoZWFkZXIpO1xuXG4gICAgICAvLyBJZiB0aGUgc3RhdHVzIGlzIDIwMCwgdGhlbiB0aGUgZmlsZSBpcyBpbiB0aGUgcmVzcG9uc2UuXG4gICAgICAvLyBJZiB0aGUgc3RhdHVzIGlzIDIwMiwgdGhlbiB0aGUgZmlsZSBpcyBiZWluZyBwcm9jZXNzZWQgYnkgdGhlIGJhY2tlbmQgYW5kIHdpbGwgYmUgc2VudCBieSBlbWFpbC5cbiAgICAgIGlmIChtZWFzdXJlbWVudEZpbGVSZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tZXJnZU1lYXN1cmVtZW50c1dpdGhJdHNTb3VyY2VEZXRhaWxzKGRldGFpbHMsIG1lYXN1cmVtZW50RmlsZVJlc3BvbnNlKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbWVyZ2VNZWFzdXJlbWVudHNXaXRoSXRzU291cmNlRGV0YWlscyhcbiAgICBkZXRhaWxzOiBEYXRhcG9pbnREZXRhaWxzLFxuICAgIG1lYXN1cmVtZW50RmlsZTogSUZldGNoUmVzcG9uc2VcbiAgKTogUHJvbWlzZTxEYXRhVG9FeHBvcnRXaXRoQmFja2VuZENyZWF0ZWRGaWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNvdXJjZTogZGV0YWlscy5zb3VyY2UsXG4gICAgICB2YWx1ZUZyYWdtZW50U2VyaWVzOiBkZXRhaWxzLnZhbHVlRnJhZ21lbnRTZXJpZXMsXG4gICAgICB2YWx1ZUZyYWdtZW50VHlwZTogZGV0YWlscy52YWx1ZUZyYWdtZW50VHlwZSxcbiAgICAgIGZldGNoZWRNZWFzdXJlbWVudHNCbG9iRmlsZTogYXdhaXQgbWVhc3VyZW1lbnRGaWxlLmJsb2IoKVxuICAgIH07XG4gIH1cblxuICBhc3luYyBmZXRjaEFuZFByZXBhcmVEYXRhVG9FeHBvcnQoXG4gICAgZXhwb3J0Q29uZmlnOiBFeHBvcnRDb25maWcsXG4gICAgaXNNZWFzdXJlbWVudDogYm9vbGVhblxuICApOiBQcm9taXNlPERhdGFUb0V4cG9ydFtdPiB7XG4gICAgcmV0dXJuIGlzTWVhc3VyZW1lbnRcbiAgICAgID8gYXdhaXQgdGhpcy5mZXRjaEFuZFByZXBhcmVNZWFzdXJlbWVudERhdGFUb0V4cG9ydEZvclByZXZpZXcoZXhwb3J0Q29uZmlnKVxuICAgICAgOiBhd2FpdCB0aGlzLmZldGNoQW5kUHJlcGFyZVNlcmllc0RhdGFUb0V4cG9ydChleHBvcnRDb25maWcpO1xuICB9XG5cbiAgcHJlcGFyZU1lYXN1cmVtZW50c0ZpbHRlcihcbiAgICBkZXRhaWxzOiBEYXRhcG9pbnREZXRhaWxzLFxuICAgIGV4cG9ydENvbmZpZzogRXhwb3J0Q29uZmlnLFxuICAgIHJvdW5kU2Vjb25kczogYm9vbGVhbixcbiAgICBwYWdlU2l6ZT86IG51bWJlclxuICApOiBJTWVhc3VyZW1lbnRGaWx0ZXIge1xuICAgIGNvbnN0IGZpbHRlcjogSU1lYXN1cmVtZW50RmlsdGVyID0ge1xuICAgICAgZGF0ZUZyb206IHRoaXMuYWRqdXN0RGF0ZShleHBvcnRDb25maWcuZGF0ZUZyb20sIDAsIHJvdW5kU2Vjb25kcyksXG4gICAgICBkYXRlVG86IHRoaXMuYWRqdXN0RGF0ZShleHBvcnRDb25maWcuZGF0ZVRvLCAwLCByb3VuZFNlY29uZHMpLFxuICAgICAgc291cmNlOiBkZXRhaWxzLnNvdXJjZSxcbiAgICAgIHZhbHVlRnJhZ21lbnRTZXJpZXM6IGRldGFpbHMudmFsdWVGcmFnbWVudFNlcmllcyxcbiAgICAgIHZhbHVlRnJhZ21lbnRUeXBlOiBkZXRhaWxzLnZhbHVlRnJhZ21lbnRUeXBlXG4gICAgfTtcblxuICAgIGlmIChwYWdlU2l6ZSkge1xuICAgICAgZmlsdGVyLnBhZ2VTaXplID0gcGFnZVNpemU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbHRlcjtcbiAgfVxuXG4gIHByb2Nlc3NNZWFzdXJlbWVudERhdGFGb3JQcmV2aWV3KGRldGFpbHM6IERhdGFwb2ludERldGFpbHMsIGRhdGE6IElNZWFzdXJlbWVudFtdKTogRGF0YVRvRXhwb3J0IHtcbiAgICBjb25zdCB1bml0ID0gZGF0YVswXVtkZXRhaWxzLnZhbHVlRnJhZ21lbnRUeXBlXVtkZXRhaWxzLnZhbHVlRnJhZ21lbnRTZXJpZXNdPy51bml0IHx8ICcnO1xuXG4gICAgY29uc3QgdmFsdWVzOiB7IFt0aW1lc3RhbXA6IHN0cmluZ106IG51bWJlciB9ID0ge307XG4gICAgZGF0YS5mb3JFYWNoKG1lYXN1cmVtZW50ID0+IHtcbiAgICAgIHZhbHVlc1ttZWFzdXJlbWVudC50aW1lXSA9XG4gICAgICAgIG1lYXN1cmVtZW50W2RldGFpbHMudmFsdWVGcmFnbWVudFR5cGVdW2RldGFpbHMudmFsdWVGcmFnbWVudFNlcmllc10udmFsdWU7XG4gICAgfSk7XG5cbiAgICByZXR1cm4geyAuLi5kZXRhaWxzLCB1bml0LCB0aW1lVmFsdWVNYXA6IHZhbHVlcyB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBtYXAgb2YgYWN0aXZlIGRhdGEgcG9pbnRzIGRldmljZSBJRHMgd2l0aCB0aGVpciBjb3JyZXNwb25kaW5nIHNlcmllcy5cbiAgICpcbiAgICogRXhhbXBsZSBvdXRwdXQ6XG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogbmV3IE1hcChbXG4gICAqICAgWyc4NDQ2NTcyMDInLCBbJ2M4eV9UZW1wZXJhdHVyZS5UJ11dLFxuICAgKiAgIFsnMzI2NjY0MjcnLCBbJ2M4eV9CYXR0ZXJ5LkJhdHRlcnknXV1cbiAgICogXSk7XG4gICAqIGBgYFxuICAgKiBAcGFyYW0gZGF0YXBvaW50RGV0YWlscyAtIEFuIGFycmF5IG9mIGRhdGEgcG9pbnRzIGRldGFpbHMuXG4gICAqIEByZXR1cm5zIEEgbWFwIHdoZXJlIHRoZSBrZXkgaXMgdGhlIGRhdGEgcG9pbnQgSUQgYW5kIHRoZSB2YWx1ZSBpcyBhbiBhcnJheSBvZiBkYXRhIHBvaW50IHNlcmllcy5cbiAgICovXG4gIGdyb3VwU2VyaWVzQnlEZXZpY2VJZChkYXRhcG9pbnREZXRhaWxzOiBEYXRhcG9pbnREZXRhaWxzW10pOiBEYXRhcG9pbnRzVmFsdWVzRGF0YU1hcCB7XG4gICAgcmV0dXJuIGRhdGFwb2ludERldGFpbHMucmVkdWNlKFxuICAgICAgKFxuICAgICAgICBtYXA6IERhdGFwb2ludHNWYWx1ZXNEYXRhTWFwLFxuICAgICAgICB7IHZhbHVlRnJhZ21lbnRUeXBlLCB2YWx1ZUZyYWdtZW50U2VyaWVzLCBzb3VyY2UgfTogRGF0YXBvaW50RGV0YWlsc1xuICAgICAgKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gYCR7dmFsdWVGcmFnbWVudFR5cGV9LiR7dmFsdWVGcmFnbWVudFNlcmllc31gO1xuICAgICAgICBjb25zdCBleGlzdGluZ1ZhbHVlID0gbWFwLmdldChzb3VyY2UpID8/IFtdO1xuICAgICAgICBtYXAuc2V0KHNvdXJjZSwgWy4uLmV4aXN0aW5nVmFsdWUsIHZhbHVlXSk7XG4gICAgICAgIHJldHVybiBtYXA7XG4gICAgICB9LFxuICAgICAgbmV3IE1hcDxzdHJpbmcsIHN0cmluZ1tdPigpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzZXMgdGhlIGZldGNoZWQgc2VyaWVzIGRhdGEgYW5kIHByZXBhcmVzIGl0IGZvciBleHBvcnQuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhcG9pbnREZXRhaWxzIC0gQW4gYXJyYXkgb2YgZGF0YSBwb2ludCBkZXRhaWxzLlxuICAgKiBAcGFyYW0gZmV0Y2hlZERhdGFNYXAgLSBBIG1hcCBvZiBmZXRjaGVkIHNlcmllcyBkYXRhIGdyb3VwZWQgYnkgc291cmNlLlxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBEYXRhVG9FeHBvcnQgb2JqZWN0cy5cbiAgICovXG4gIHByb2Nlc3NTZXJpZXNEYXRhKFxuICAgIGRhdGFwb2ludERldGFpbHM6IERhdGFwb2ludERldGFpbHNbXSxcbiAgICBmZXRjaGVkRGF0YU1hcDogU291cmNlSXRlbVtdXG4gICk6IERhdGFUb0V4cG9ydFtdIHtcbiAgICBjb25zdCB2YWx1ZXNHcm91cGVkQnlTb3VyY2UgPSB0aGlzLnV0aWxzU2VydmljZS50cmFuc2Zvcm1EYXRhU3RydWN0dXJlKGZldGNoZWREYXRhTWFwKTtcblxuICAgIHJldHVybiBkYXRhcG9pbnREZXRhaWxzLm1hcCgoZGV0YWlsczogRGF0YXBvaW50RGV0YWlscykgPT4ge1xuICAgICAgbGV0IHVuaXQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgIGxldCBkYXRhOiBUaW1lU2VyaWVzRGF0YTtcblxuICAgICAgLyoqXG4gICAgICAgKiBVbmlxdWUga2V5IHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gZGlmZmVyZW50IHNlcmllcyBmcm9tIHNhbWUgc291cmNlLFxuICAgICAgICogZS5nLjogYzh5X0FjY2VsZXJhdGlvbi5hY2NlbGVyYXRpb25YLCBjOHlfQWNjZWxlcmF0aW9uLmFjY2VsZXJhdGlvblksIGM4eV9BY2NlbGVyYXRpb24uYWNjZWxlcmF0aW9uWlxuICAgICAgICovXG4gICAgICBjb25zdCBzZXJpZXNLZXkgPSBgJHtkZXRhaWxzLnZhbHVlRnJhZ21lbnRUeXBlfS4ke2RldGFpbHMudmFsdWVGcmFnbWVudFNlcmllc31gO1xuXG4gICAgICBpZiAodmFsdWVzR3JvdXBlZEJ5U291cmNlW2RldGFpbHMuc291cmNlXVtzZXJpZXNLZXldKSB7XG4gICAgICAgIHVuaXQgPSB2YWx1ZXNHcm91cGVkQnlTb3VyY2VbZGV0YWlscy5zb3VyY2VdW3Nlcmllc0tleV0uc2VyaWVzRGV0YWlscy51bml0O1xuICAgICAgICBkYXRhID0gdmFsdWVzR3JvdXBlZEJ5U291cmNlW2RldGFpbHMuc291cmNlXVtzZXJpZXNLZXldLnZhbHVlcztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZGV0YWlscyxcbiAgICAgICAgdW5pdCxcbiAgICAgICAgdGltZVZhbHVlTWFwOiBkYXRhXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZ2V0U291cmNlc1dpdGhQZXJtaXNzaW9uc1RvUmVhZChkYXRhcG9pbnREZXRhaWxzOiBEYXRhcG9pbnREZXRhaWxzW10pOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgY29uc3QgZGF0ZUZyb20gPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IGRhdGVUbyA9IG5ldyBEYXRlKGRhdGVGcm9tKTtcblxuICAgIGNvbnN0IGZldGNoZWREYXRhUHJvbWlzZXMgPSBkYXRhcG9pbnREZXRhaWxzLm1hcChhc3luYyBkYXRhcG9pbnQgPT4ge1xuICAgICAgY29uc3QgcmF3RmlsdGVyOiBJU2VyaWVzRmlsdGVyID0ge1xuICAgICAgICBkYXRlRnJvbSxcbiAgICAgICAgZGF0ZVRvLFxuICAgICAgICBzb3VyY2U6IGRhdGFwb2ludC5zb3VyY2VcbiAgICAgIH07XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgcmVzIH06IElSZXN1bHQ8SVNlcmllcz4gPSBhd2FpdCB0aGlzLmZldGNoU2VyaWVzRGF0YShyYXdGaWx0ZXIpO1xuICAgICAgICBpZiAocmVzPy5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICAgIHJldHVybiBkYXRhcG9pbnQuc291cmNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy8gSWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyBmZXRjaCwgcmV0dXJuIG51bGwgdG8gcHJldmVudCBwcm9taXNlIHJlamVjdGlvblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IGZldGNoZWRTb3VyY2VzID0gYXdhaXQgUHJvbWlzZS5hbGwoZmV0Y2hlZERhdGFQcm9taXNlcyk7XG4gICAgcmV0dXJuIGZldGNoZWRTb3VyY2VzLmZpbHRlcigoc291cmNlKTogc291cmNlIGlzIHN0cmluZyA9PiBzb3VyY2UgIT09IG51bGwpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkanVzdHMgdGhlIGdpdmVuIGRhdGUgYnkgYWRkaW5nIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1pbnV0ZXMgYW5kIHNldHRpbmcgc2Vjb25kcyB0byAwLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIGJlIGFkanVzdGVkIGluIHN0cmluZyBmb3JtYXQuXG4gICAqIEBwYXJhbSBtaW51dGVzIC0gVGhlIG51bWJlciBvZiBtaW51dGVzIHRvIGFkZCB0byB0aGUgZGF0ZS5cbiAgICogQHBhcmFtIHJvdW5kU2Vjb25kcyAtIFdoZXRoZXIgdG8gcm91bmQgdGhlIHNlY29uZHMgb3Igbm90LlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgSWYgdHJ1ZSwgdGhlIHNlY29uZHMgd2lsbCBiZSByb3VuZGVkIHRvIDAuXG4gICAqICAgICAgICAgICAgICAgICAgICAgICBJZiBmYWxzZSwgdGhlIHNlY29uZHMgd2lsbCBiZSBkaXNwbGF5ZWQgYXMgdGhleSBhcmUuXG4gICAqIEByZXR1cm5zIFRoZSBhZGp1c3RlZCBkYXRlIGluIElTTyBzdHJpbmcgZm9ybWF0LlxuICAgKi9cbiAgYWRqdXN0RGF0ZShkYXRlOiBzdHJpbmcgfCBEYXRlLCBtaW51dGVzOiBudW1iZXIsIHJvdW5kU2Vjb25kcyA9IHRydWUpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRhdGVUaW1lID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgaWYgKGlzTmFOKGRhdGVUaW1lLmdldFRpbWUoKSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBkYXRlJyk7XG4gICAgfVxuXG4gICAgZGF0ZVRpbWUuc2V0VVRDTWludXRlcyhkYXRlVGltZS5nZXRVVENNaW51dGVzKCkgKyBtaW51dGVzKTtcbiAgICBpZiAocm91bmRTZWNvbmRzKSB7XG4gICAgICBkYXRlVGltZS5zZXRVVENTZWNvbmRzKDAsIDApO1xuICAgIH1cblxuICAgIHJldHVybiBkYXRlVGltZS50b0lTT1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFzeW5jaHJvbm91c2x5IGxvYWRzIHNlcmllcyBkYXRhIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBjb25zdHJ1Y3RzIGEgZmlsdGVyIGZvciByZXRyaWV2aW5nIHNlcmllcyBkYXRhIHdpdGhpbiBhIHNwZWNpZmllZCBkYXRlIHJhbmdlLFxuICAgKiBmcm9tIGEgc3BlY2lmaWMgc291cmNlLCBhbmQgb3B0aW9uYWxseSBhcHBseWluZyBhbiBhZ2dyZWdhdGlvbiB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0gcmF3RmlsdGVyIC0gVGhlIHBhcmFtZXRlcnMgZm9yIGxvYWRpbmcgc2VyaWVzIGRhdGEsIGluY2x1ZGluZyBkYXRlIHJhbmdlLCBzb3VyY2UsIHNlcmllcyBuYW1lcywgYW5kIGFnZ3JlZ2F0aW9uIHR5cGUuXG4gICAqIEBwYXJhbSByb3VuZFNlY29uZHMgLSBJbmRpY2F0ZXMgd2hldGhlciB0byByb3VuZCB0aGUgc2Vjb25kcyBpbiB0aGUgZGF0ZSByYW5nZSB0byB0aGUgbmVhcmVzdCB3aG9sZSBudW1iZXIuXG4gICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHNlcmllcyBkYXRhIHdyYXBwZWQgaW4gcmVzdWx0IG9iamVjdC5cbiAgICovXG4gIGFzeW5jIGZldGNoU2VyaWVzRGF0YShcbiAgICByYXdGaWx0ZXI6IElTZXJpZXNGaWx0ZXIsXG4gICAgcm91bmRTZWNvbmRzID0gZmFsc2VcbiAgKTogUHJvbWlzZTxJUmVzdWx0PElTZXJpZXM+PiB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IHNlcmllc0RhdGE6IElSZXN1bHQ8SVNlcmllcz4gfCB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBmaWx0ZXI6IElTZXJpZXNGaWx0ZXIgPSB0aGlzLnByZXBhcmVTZXJpZXNGaWx0ZXIoXG4gICAgICB7XG4gICAgICAgIGRhdGVGcm9tOiByYXdGaWx0ZXIuZGF0ZUZyb20sXG4gICAgICAgIGRhdGVUbzogcmF3RmlsdGVyLmRhdGVUbyxcbiAgICAgICAgc291cmNlOiByYXdGaWx0ZXIuc291cmNlLFxuICAgICAgICBzZXJpZXM6IHJhd0ZpbHRlci5zZXJpZXMsXG4gICAgICAgIGFnZ3JlZ2F0aW9uVHlwZTogcmF3RmlsdGVyLmFnZ3JlZ2F0aW9uVHlwZVxuICAgICAgfSxcbiAgICAgIHJvdW5kU2Vjb25kc1xuICAgICk7XG5cbiAgICB0cnkge1xuICAgICAgLy8gVE9ETzogY29uc2lkZXIgYWRkaW5nIGEgY2FjaGUgbWVjaGFuaXNtIC0+IE1UTS02MDI4OSwgTVRNLTU5MjMzXG4gICAgICAvLyBXaGVuIHVzZXIgc3dpdGNoZXMgYmV0d2VlbiByZXBvcnQgdHlwZXMsIGFuZCByZXN0IG9mIHRoZSBzZXR0aW5ncyBhcmUgdGhlIHNhbWUsIHRoZW4gdGhlIGRhdGEgc2hvdWxkIG5vdCBiZSBmZXRjaGVkIGFnYWluP1xuICAgICAgc2VyaWVzRGF0YSA9IGF3YWl0IHRoaXMubWVhc3VyZW1lbnRTZXJ2aWNlLmxpc3RTZXJpZXMoZmlsdGVyKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlcnJvcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlcmllc0RhdGE7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyBhbmQgcHJlcGFyZXMgbWVhc3VyZW1lbnQgZGF0YSBmb3IgcHJldmlldy5cbiAgICpcbiAgICogRW1wdHkgRGF0YVRvRXhwb3J0IG9iamVjdCBjYW4gYmUgcmV0dXJuZWQsIGJlY2F1c2UgdW5saWtlIHNlcmllcyBkYXRhLFxuICAgKiBtZWFzdXJlbWVudCBkYXRhIGlzIG5vdCBmdXJ0aGVyIHByb2Nlc3NlZCBiZXNpZGVzIHNob3dpbmcgb25seSBpbiB0aGUgcHJldmlldy5cbiAgICogQ1NWL0V4Y2VsIGZpbGVzIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIGJhY2tlbmQgZm9yIG1lYXN1cmVtZW50cy5cbiAgICpcbiAgICogQHBhcmFtIGV4cG9ydENvbmZpZyAtIFRoZSBleHBvcnQgY29uZmlndXJhdGlvbi5cbiAgICogQHBhcmFtIHJvdW5kU2Vjb25kcyAtIEluZGljYXRlcyB3aGV0aGVyIHRvIHJvdW5kIHRoZSBzZWNvbmRzIGluIHRoZSBkYXRlIHJhbmdlIHRvIHRoZSBuZWFyZXN0IHdob2xlIG51bWJlci5cbiAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYW4gYXJyYXkgb2YgRGF0YVRvRXhwb3J0IG9iamVjdHMgb3IgbnVsbCB3aGVuIG5vIGRhdGEgaXMgZmV0Y2hlZC5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hBbmRQcmVwYXJlTWVhc3VyZW1lbnREYXRhVG9FeHBvcnRGb3JQcmV2aWV3KFxuICAgIGV4cG9ydENvbmZpZzogRXhwb3J0Q29uZmlnLFxuICAgIHJvdW5kU2Vjb25kcyA9IGZhbHNlXG4gICk6IFByb21pc2U8RGF0YVRvRXhwb3J0W10+IHwgbnVsbCB7XG4gICAgY29uc3QgZGF0YVRvRXhwb3J0UHJvbWlzZXM6IFByb21pc2U8RGF0YVRvRXhwb3J0PltdID0gZXhwb3J0Q29uZmlnLmRhdGFwb2ludERldGFpbHMubWFwKFxuICAgICAgYXN5bmMgZGV0YWlscyA9PiB7XG4gICAgICAgIGNvbnN0IGZldGNoZWRNZWFzdXJlbWVudERhdGE6IElSZXN1bHRMaXN0PElNZWFzdXJlbWVudD4gPVxuICAgICAgICAgIGF3YWl0IHRoaXMuZmV0Y2hNZWFzdXJlbWVudERhdGFGb3JQcmV2aWV3KGRldGFpbHMsIGV4cG9ydENvbmZpZywgcm91bmRTZWNvbmRzKTtcblxuICAgICAgICBpZiAoZmV0Y2hlZE1lYXN1cmVtZW50RGF0YT8uZGF0YT8ubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc01lYXN1cmVtZW50RGF0YUZvclByZXZpZXcoZGV0YWlscywgZmV0Y2hlZE1lYXN1cmVtZW50RGF0YS5kYXRhKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgcmV0dXJuIGF3YWl0IFByb21pc2UuYWxsKGRhdGFUb0V4cG9ydFByb21pc2VzKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hNZWFzdXJlbWVudERhdGFGb3JQcmV2aWV3KFxuICAgIGRldGFpbHM6IERhdGFwb2ludERldGFpbHMsXG4gICAgZXhwb3J0Q29uZmlnOiBFeHBvcnRDb25maWcsXG4gICAgcm91bmRTZWNvbmRzOiBib29sZWFuXG4gICk6IFByb21pc2U8SVJlc3VsdExpc3Q8SU1lYXN1cmVtZW50Pj4gfCB1bmRlZmluZWQge1xuICAgIGxldCBtZWFzdXJlbWVudHM6IElSZXN1bHRMaXN0PElNZWFzdXJlbWVudD4gfCB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBmaWx0ZXI6IElNZWFzdXJlbWVudEZpbHRlciA9IHRoaXMucHJlcGFyZU1lYXN1cmVtZW50c0ZpbHRlcihcbiAgICAgIGRldGFpbHMsXG4gICAgICBleHBvcnRDb25maWcsXG4gICAgICByb3VuZFNlY29uZHMsXG4gICAgICBNRUFTVVJFTUVOVFNfUFJFVklFV19JVEVNU19MSU1JVFxuICAgICk7XG5cbiAgICB0cnkge1xuICAgICAgbWVhc3VyZW1lbnRzID0gYXdhaXQgdGhpcy5tZWFzdXJlbWVudFNlcnZpY2UubGlzdChmaWx0ZXIpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGVycm9yKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVhc3VyZW1lbnRzO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaEFuZFByZXBhcmVTZXJpZXNEYXRhVG9FeHBvcnQoZXhwb3J0Q29uZmlnOiBFeHBvcnRDb25maWcpIHtcbiAgICBjb25zdCBkYXRhcG9pbnRzVmFsdWVzRGF0YU1hcDogRGF0YXBvaW50c1ZhbHVlc0RhdGFNYXAgPSB0aGlzLmdyb3VwU2VyaWVzQnlEZXZpY2VJZChcbiAgICAgIGV4cG9ydENvbmZpZy5kYXRhcG9pbnREZXRhaWxzXG4gICAgKTtcblxuICAgIGNvbnN0IGZldGNoZWREYXRhUHJvbWlzZXMgPSBBcnJheS5mcm9tKGRhdGFwb2ludHNWYWx1ZXNEYXRhTWFwKS5tYXAoXG4gICAgICBhc3luYyAoW3NvdXJjZSwgc2VyaWVzXSkgPT4ge1xuICAgICAgICBjb25zdCB7IGRhdGVGcm9tLCBkYXRlVG8sIGFnZ3JlZ2F0aW9uIH0gPSBleHBvcnRDb25maWc7XG5cbiAgICAgICAgY29uc3QgcmF3RmlsdGVyOiBJU2VyaWVzRmlsdGVyID0ge1xuICAgICAgICAgIGRhdGVGcm9tLFxuICAgICAgICAgIGRhdGVUbyxcbiAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgc2VyaWVzLFxuICAgICAgICAgIGFnZ3JlZ2F0aW9uVHlwZTogYWdncmVnYXRpb24gYXMgYWdncmVnYXRpb25UeXBlXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgeyBkYXRhIH06IElSZXN1bHQ8SVNlcmllcz4gPSBhd2FpdCB0aGlzLmZldGNoU2VyaWVzRGF0YShyYXdGaWx0ZXIpO1xuXG4gICAgICAgIHJldHVybiB7IHNvdXJjZSwgZGF0YSB9O1xuICAgICAgfVxuICAgICk7XG5cbiAgICBjb25zdCBmZXRjaGVkRGF0YUdyb3VwZWRCeVNvdXJjZTogU291cmNlSXRlbVtdID0gYXdhaXQgUHJvbWlzZS5hbGwoZmV0Y2hlZERhdGFQcm9taXNlcyk7XG5cbiAgICByZXR1cm4gdGhpcy5wcm9jZXNzU2VyaWVzRGF0YShleHBvcnRDb25maWcuZGF0YXBvaW50RGV0YWlscywgZmV0Y2hlZERhdGFHcm91cGVkQnlTb3VyY2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBwcmVwYXJlU2VyaWVzRmlsdGVyKGZpbHRlcnM6IElTZXJpZXNGaWx0ZXIsIHJvdW5kU2Vjb25kczogYm9vbGVhbik6IElTZXJpZXNGaWx0ZXIge1xuICAgIGNvbnN0IHsgZGF0ZUZyb20sIGRhdGVUbywgc291cmNlLCBzZXJpZXMsIGFnZ3JlZ2F0aW9uVHlwZSB9ID0gZmlsdGVycztcbiAgICBjb25zdCBmcm9tID0gdGhpcy5hZGp1c3REYXRlKGRhdGVGcm9tLCAwLCByb3VuZFNlY29uZHMpO1xuICAgIGNvbnN0IHRvID0gdGhpcy5hZGp1c3REYXRlKGRhdGVUbywgMCwgcm91bmRTZWNvbmRzKTtcblxuICAgIGNvbnN0IGZpbHRlcjogSVNlcmllc0ZpbHRlciA9IHtcbiAgICAgIGRhdGVGcm9tOiBmcm9tLFxuICAgICAgZGF0ZVRvOiB0byxcbiAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgcmV2ZXJ0OiB0cnVlXG4gICAgfTtcblxuICAgIC8vIFRoZSAnTk9ORScgYWdncmVnYXRpb24gdHlwZSBpcyBub3QgaGFuZGxlZCBieSBhIGJhY2tlbmQsIHNvIGV2ZW4gd2hlbiBpcyBzZWxlY3RlZCwgaXQgaXMgbm90IHBhc3NlZCBhcyBhIGZpbHRlciBwYXJhbWV0ZXIuXG4gICAgaWYgKGFnZ3JlZ2F0aW9uVHlwZSAmJiBhZ2dyZWdhdGlvblR5cGUgIT09IChBR0dSRUdBVElPTl9WQUxVRVMubm9uZSBhcyBhZ2dyZWdhdGlvblR5cGUpKSB7XG4gICAgICBmaWx0ZXIuYWdncmVnYXRpb25UeXBlID0gYWdncmVnYXRpb25UeXBlO1xuICAgIH1cblxuICAgIC8vIFRPRE86IGl0IGlzIGEgdGVtcG9yYWwgd29ya2Fyb3VuZCBmb3IgYSBidWcgaW4gdGhlIGJhY2tlbmQsXG4gICAgLy8gd2hlcmUgdGhlIHNlcmllcyB3aXRoIG1vcmUgdGhhbiBvbmUgZG90IGFyZSBpbXBvc3NpYmxlIHRvIHJldHJpZXZlOlxuICAgIC8vIGh0dHBzOi8vY3VtdWxvY2l0eS5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9NVE0tNTkyNzdcbiAgICBpZiAoc2VyaWVzKSB7XG4gICAgICBjb25zdCBoYXNNb3JlVGhhbk9uZURvdCA9IChzZXJpZXMgYXMgc3RyaW5nW10pLnNvbWUocyA9PiBzLnNwbGl0KCcuJykubGVuZ3RoID4gMik7XG4gICAgICBpZiAoIWhhc01vcmVUaGFuT25lRG90KSB7XG4gICAgICAgIGZpbHRlci5zZXJpZXMgPSBzZXJpZXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbHRlcjtcbiAgfVxufVxuIl19
|
|
@@ -7,12 +7,14 @@ import { PRODUCT_EXPERIENCE_DATAPOINTS_EXPORT_SELECTOR } from './datapoints-expo
|
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
import * as i1 from "ngx-bootstrap/modal";
|
|
9
9
|
import * as i2 from "@c8y/ngx-components";
|
|
10
|
-
import * as i3 from "
|
|
10
|
+
import * as i3 from "@angular/common";
|
|
11
|
+
import * as i4 from "ngx-bootstrap/tooltip";
|
|
11
12
|
export class DatapointsExportSelectorComponent {
|
|
12
13
|
constructor(bsModalService, gainsightService) {
|
|
13
14
|
this.bsModalService = bsModalService;
|
|
14
15
|
this.gainsightService = gainsightService;
|
|
15
16
|
this.isOpen = new EventEmitter();
|
|
17
|
+
this.DEFAULT_CSS_STYLE = 'd-flex p-t-4 p-b-4';
|
|
16
18
|
}
|
|
17
19
|
async openExportModal() {
|
|
18
20
|
this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE_DATAPOINTS_EXPORT_SELECTOR.EVENTS.EXPORT_SELECTOR, {
|
|
@@ -35,14 +37,16 @@ export class DatapointsExportSelectorComponent {
|
|
|
35
37
|
this.isOpen.emit(await modalRef.result);
|
|
36
38
|
}
|
|
37
39
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DatapointsExportSelectorComponent, deps: [{ token: i1.BsModalService }, { token: i2.GainsightService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
38
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DatapointsExportSelectorComponent, isStandalone: true, selector: "c8y-datapoints-export-selector", inputs: { exportConfig: "exportConfig" }, outputs: { isOpen: "isOpen" }, ngImport: i0, template: "<
|
|
40
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DatapointsExportSelectorComponent, isStandalone: true, selector: "c8y-datapoints-export-selector", inputs: { containerClass: "containerClass", exportConfig: "exportConfig" }, outputs: { isOpen: "isOpen" }, ngImport: i0, template: "<ng-container *ngIf=\"containerClass !== 'd-contents'; else actionBarBtn\">\n <div\n class=\"input-group-btn\"\n [ngClass]=\"containerClass || DEFAULT_CSS_STYLE\"\n >\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Generate export' | translate\"\n tooltip=\"{{ 'Generate export' | translate }}\"\n container=\"body\"\n type=\"button\"\n data-cy=\"datapoints-export-selector--open-export-button\"\n (click)=\"openExportModal()\"\n [adaptivePosition]=\"false\"\n [disabled]=\"!exportConfig\"\n [delay]=\"500\"\n >\n <i\n class=\"icon-14\"\n c8yIcon=\"data-export\"\n ></i>\n </button>\n </div>\n</ng-container>\n\n<ng-template #actionBarBtn>\n <button\n class=\"btn btn-link\"\n type=\"button\"\n (click)=\"openExportModal()\"\n [disabled]=\"!exportConfig\"\n >\n <i c8yIcon=\"data-export\"></i>\n {{ 'Generate export' | translate }}\n </button>\n</ng-template>\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: 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"] }] }); }
|
|
39
41
|
}
|
|
40
42
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DatapointsExportSelectorComponent, decorators: [{
|
|
41
43
|
type: Component,
|
|
42
|
-
args: [{ selector: 'c8y-datapoints-export-selector', standalone: true, imports: [CommonModule, TooltipModule], template: "<
|
|
43
|
-
}], ctorParameters: () => [{ type: i1.BsModalService }, { type: i2.GainsightService }], propDecorators: {
|
|
44
|
+
args: [{ selector: 'c8y-datapoints-export-selector', standalone: true, imports: [CommonModule, TooltipModule], template: "<ng-container *ngIf=\"containerClass !== 'd-contents'; else actionBarBtn\">\n <div\n class=\"input-group-btn\"\n [ngClass]=\"containerClass || DEFAULT_CSS_STYLE\"\n >\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Generate export' | translate\"\n tooltip=\"{{ 'Generate export' | translate }}\"\n container=\"body\"\n type=\"button\"\n data-cy=\"datapoints-export-selector--open-export-button\"\n (click)=\"openExportModal()\"\n [adaptivePosition]=\"false\"\n [disabled]=\"!exportConfig\"\n [delay]=\"500\"\n >\n <i\n class=\"icon-14\"\n c8yIcon=\"data-export\"\n ></i>\n </button>\n </div>\n</ng-container>\n\n<ng-template #actionBarBtn>\n <button\n class=\"btn btn-link\"\n type=\"button\"\n (click)=\"openExportModal()\"\n [disabled]=\"!exportConfig\"\n >\n <i c8yIcon=\"data-export\"></i>\n {{ 'Generate export' | translate }}\n </button>\n</ng-template>\n" }]
|
|
45
|
+
}], ctorParameters: () => [{ type: i1.BsModalService }, { type: i2.GainsightService }], propDecorators: { containerClass: [{
|
|
46
|
+
type: Input
|
|
47
|
+
}], exportConfig: [{
|
|
44
48
|
type: Input
|
|
45
49
|
}], isOpen: [{
|
|
46
50
|
type: Output
|
|
47
51
|
}] } });
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3IvZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3IvZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSwrRUFBK0UsQ0FBQztBQUN2SSxPQUFPLEVBRUwsNkNBQTZDLEVBQzlDLE1BQU0sb0NBQW9DLENBQUM7Ozs7OztBQVE1QyxNQUFNLE9BQU8saUNBQWlDO0lBTzVDLFlBQ1UsY0FBOEIsRUFDOUIsZ0JBQWtDO1FBRGxDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBTmxDLFdBQU0sR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUU3RCxzQkFBaUIsR0FBRyxvQkFBb0IsQ0FBQztJQUsvQyxDQUFDO0lBRUosS0FBSyxDQUFDLGVBQWU7UUFDbkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FDaEMsNkNBQTZDLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFDcEU7WUFDRSxNQUFNLEVBQUUsNkNBQTZDLENBQUMsT0FBTyxDQUFDLFVBQVU7WUFDeEUsU0FBUyxFQUNQLDZDQUE2QyxDQUFDLFVBQVUsQ0FBQywwQkFBMEI7U0FDdEYsQ0FDRixDQUFDO1FBRUYsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN2QyxNQUFNLFlBQVksR0FBaUU7WUFDakYsWUFBWTtTQUNiLENBQUM7UUFFRixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxzQ0FBc0MsRUFBRTtZQUNoRixLQUFLLEVBQUUsVUFBVTtZQUNqQixlQUFlLEVBQUUsWUFBWTtZQUM3QixjQUFjLEVBQUUsYUFBYTtZQUM3QixZQUFZO1lBQ1osbUJBQW1CLEVBQUUsSUFBSTtTQUMxQixDQUFDLENBQUMsT0FBaUQsQ0FBQztRQUNyRCxtREFBbUQ7UUFDbkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUMsQ0FBQzsrR0FyQ1UsaUNBQWlDO21HQUFqQyxpQ0FBaUMscU1DaEI5Qyw2OUJBb0NBLDJDRHRCWSxZQUFZLDJYQUFFLGFBQWE7OzRGQUUxQixpQ0FBaUM7a0JBTjdDLFNBQVM7K0JBQ0UsZ0NBQWdDLGNBRTlCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxhQUFhLENBQUM7a0hBRzdCLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDSSxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBHYWluc2lnaHRTZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBCc01vZGFsU2VydmljZSB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvdG9vbHRpcCc7XG5pbXBvcnQgeyBEYXRhcG9pbnRzRXhwb3J0U2VsZWN0b3JNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3ItbW9kYWwvZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3ItbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIEV4cG9ydENvbmZpZyxcbiAgUFJPRFVDVF9FWFBFUklFTkNFX0RBVEFQT0lOVFNfRVhQT1JUX1NFTEVDVE9SXG59IGZyb20gJy4vZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3IubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUb29sdGlwTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRhcG9pbnRzRXhwb3J0U2VsZWN0b3JDb21wb25lbnQge1xuICBASW5wdXQoKSBjb250YWluZXJDbGFzczogc3RyaW5nO1xuICBASW5wdXQoKSBleHBvcnRDb25maWc6IEV4cG9ydENvbmZpZztcbiAgQE91dHB1dCgpIGlzT3BlbjogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHJlYWRvbmx5IERFRkFVTFRfQ1NTX1NUWUxFID0gJ2QtZmxleCBwLXQtNCBwLWItNCc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBic01vZGFsU2VydmljZTogQnNNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBnYWluc2lnaHRTZXJ2aWNlOiBHYWluc2lnaHRTZXJ2aWNlXG4gICkge31cblxuICBhc3luYyBvcGVuRXhwb3J0TW9kYWwoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChcbiAgICAgIFBST0RVQ1RfRVhQRVJJRU5DRV9EQVRBUE9JTlRTX0VYUE9SVF9TRUxFQ1RPUi5FVkVOVFMuRVhQT1JUX1NFTEVDVE9SLFxuICAgICAge1xuICAgICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRV9EQVRBUE9JTlRTX0VYUE9SVF9TRUxFQ1RPUi5BQ1RJT05TLk9QRU5fTU9EQUwsXG4gICAgICAgIGNvbXBvbmVudDpcbiAgICAgICAgICBQUk9EVUNUX0VYUEVSSUVOQ0VfREFUQVBPSU5UU19FWFBPUlRfU0VMRUNUT1IuQ09NUE9ORU5UUy5EQVRBUE9JTlRTX0VYUE9SVF9TRUxFQ1RPUlxuICAgICAgfVxuICAgICk7XG5cbiAgICBjb25zdCBleHBvcnRDb25maWcgPSB0aGlzLmV4cG9ydENvbmZpZztcbiAgICBjb25zdCBpbml0aWFsU3RhdGU6IFBpY2s8RGF0YXBvaW50c0V4cG9ydFNlbGVjdG9yTW9kYWxDb21wb25lbnQsICdleHBvcnRDb25maWcnPiA9IHtcbiAgICAgIGV4cG9ydENvbmZpZ1xuICAgIH07XG5cbiAgICB0aGlzLmlzT3Blbi5lbWl0KHRydWUpO1xuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5ic01vZGFsU2VydmljZS5zaG93KERhdGFwb2ludHNFeHBvcnRTZWxlY3Rvck1vZGFsQ29tcG9uZW50LCB7XG4gICAgICBjbGFzczogJ21vZGFsLWxnJyxcbiAgICAgIGFyaWFEZXNjcmliZWRieTogJ21vZGFsLWJvZHknLFxuICAgICAgYXJpYUxhYmVsbGVkQnk6ICdtb2RhbC10aXRsZScsXG4gICAgICBpbml0aWFsU3RhdGUsXG4gICAgICBpZ25vcmVCYWNrZHJvcENsaWNrOiB0cnVlXG4gICAgfSkuY29udGVudCBhcyBEYXRhcG9pbnRzRXhwb3J0U2VsZWN0b3JNb2RhbENvbXBvbmVudDtcbiAgICAvLyBSZXN1bHQgd2lsbCBiZSAnZmFsc2UnIG9uIG1vZGFsIGNsb3NlIG9yIGRpc21pc3NcbiAgICB0aGlzLmlzT3Blbi5lbWl0KGF3YWl0IG1vZGFsUmVmLnJlc3VsdCk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJjb250YWluZXJDbGFzcyAhPT0gJ2QtY29udGVudHMnOyBlbHNlIGFjdGlvbkJhckJ0blwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJpbnB1dC1ncm91cC1idG5cIlxuICAgIFtuZ0NsYXNzXT1cImNvbnRhaW5lckNsYXNzIHx8IERFRkFVTFRfQ1NTX1NUWUxFXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0dlbmVyYXRlIGV4cG9ydCcgfCB0cmFuc2xhdGVcIlxuICAgICAgdG9vbHRpcD1cInt7ICdHZW5lcmF0ZSBleHBvcnQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBkYXRhLWN5PVwiZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3ItLW9wZW4tZXhwb3J0LWJ1dHRvblwiXG4gICAgICAoY2xpY2spPVwib3BlbkV4cG9ydE1vZGFsKClcIlxuICAgICAgW2FkYXB0aXZlUG9zaXRpb25dPVwiZmFsc2VcIlxuICAgICAgW2Rpc2FibGVkXT1cIiFleHBvcnRDb25maWdcIlxuICAgICAgW2RlbGF5XT1cIjUwMFwiXG4gICAgPlxuICAgICAgPGlcbiAgICAgICAgY2xhc3M9XCJpY29uLTE0XCJcbiAgICAgICAgYzh5SWNvbj1cImRhdGEtZXhwb3J0XCJcbiAgICAgID48L2k+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjYWN0aW9uQmFyQnRuPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4gYnRuLWxpbmtcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIChjbGljayk9XCJvcGVuRXhwb3J0TW9kYWwoKVwiXG4gICAgW2Rpc2FibGVkXT1cIiFleHBvcnRDb25maWdcIlxuICA+XG4gICAgPGkgYzh5SWNvbj1cImRhdGEtZXhwb3J0XCI+PC9pPlxuICAgIHt7ICdHZW5lcmF0ZSBleHBvcnQnIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|