@koobiq/components 18.39.0 → 18.39.2
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/app-switcher/app-switcher.d.ts +11 -4
- package/checkbox/checkbox.scss +5 -21
- package/code-block/code-block.scss +2 -2
- package/core/option/option.d.ts +1 -0
- package/dropdown/dropdown.scss +3 -0
- package/esm2022/app-switcher/app-switcher-dropdown-app.mjs +21 -7
- package/esm2022/app-switcher/app-switcher.mjs +21 -17
- package/esm2022/app-switcher/kbq-app-switcher-list-item.mjs +24 -11
- package/esm2022/checkbox/checkbox.mjs +2 -2
- package/esm2022/code-block/code-block.mjs +3 -3
- package/esm2022/core/option/option.mjs +3 -1
- package/esm2022/core/version.mjs +2 -2
- package/esm2022/dropdown/dropdown-trigger.directive.mjs +2 -4
- package/esm2022/dropdown/dropdown.component.mjs +3 -3
- package/esm2022/filter-bar/filter-bar.mjs +3 -17
- package/esm2022/filter-bar/pipes/pipe-date.mjs +4 -1
- package/esm2022/filter-bar/pipes/pipe-datetime.mjs +5 -2
- package/esm2022/filter-bar/pipes/pipe-multi-select.mjs +35 -14
- package/esm2022/filter-bar/pipes/pipe-multi-tree-select.mjs +40 -11
- package/esm2022/input/input-number.mjs +3 -1
- package/esm2022/loader-overlay/loader-overlay.component.mjs +2 -2
- package/esm2022/navbar/navbar-brand.component.mjs +2 -2
- package/esm2022/navbar/navbar.component.mjs +2 -2
- package/esm2022/navbar/vertical-navbar.component.mjs +2 -2
- package/esm2022/popover/popover-confirm.component.mjs +3 -3
- package/esm2022/popover/popover.component.mjs +3 -3
- package/esm2022/select/select.component.mjs +4 -2
- package/esm2022/time-range/time-range-editor.mjs +2 -2
- package/esm2022/timepicker/timepicker.directive.mjs +59 -9
- package/esm2022/tooltip/tooltip.component.mjs +3 -3
- package/fesm2022/koobiq-components-app-switcher.mjs +63 -35
- package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
- package/fesm2022/koobiq-components-checkbox.mjs +2 -2
- package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +2 -2
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +3 -1
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +3 -5
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +82 -39
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-input.mjs +2 -0
- package/fesm2022/koobiq-components-input.mjs.map +1 -1
- package/fesm2022/koobiq-components-loader-overlay.mjs +2 -2
- package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +6 -6
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +4 -4
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +4 -2
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-time-range.mjs +1 -1
- package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
- package/fesm2022/koobiq-components-timepicker.mjs +58 -8
- package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +2 -2
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/filter-bar/pipes/pipe-multi-select.d.ts +4 -1
- package/filter-bar/pipes/pipe-multi-tree-select.d.ts +5 -0
- package/loader-overlay/loader-overlay.scss +22 -31
- package/navbar/_navbar-item_vertical.scss +8 -0
- package/navbar/navbar-brand.scss +2 -2
- package/package.json +4 -4
- package/popover/_popover-theme.scss +2 -2
- package/schematics/ng-add/index.js +2 -2
- package/timepicker/timepicker.directive.d.ts +16 -6
- package/tooltip/_tooltip-theme.scss +5 -6
|
@@ -192,7 +192,7 @@ export class KbqTimeRangeEditor {
|
|
|
192
192
|
provide: NG_VALIDATORS,
|
|
193
193
|
useExisting: KbqTimeRangeEditor
|
|
194
194
|
}
|
|
195
|
-
], viewQueries: [{ propertyName: "timepickerList", predicate: KbqTimepicker, descendants: true, isSignal: true }], ngImport: i0, template: "<form [formGroup]=\"form\">\n <kbq-radio-group class=\"kbq-time-range-editor__container\" [formControl]=\"form.controls.type\">\n @let types = timeRangeTypesWithoutRange();\n\n @if (types.length) {\n <div class=\"kbq-time-range-editor__predefined\">\n @for (type of types; track type) {\n <kbq-radio-button class=\"kbq-time-range-editor__predefined-option\" [value]=\"type.type\">\n <ng-container\n *ngTemplateOutlet=\"optionTemplate() || defaultOptionTemplate; context: { $implicit: type }\"\n />\n </kbq-radio-button>\n }\n </div>\n }\n\n @if (isRangeVisible()) {\n @let localeConfig = localeConfiguration();\n\n <div class=\"kbq-time-range-editor__range\" role=\"group\">\n @if (types.length) {\n <kbq-radio-button [value]=\"'range'\">{{ localeConfig.editor.rangeLabel }}</kbq-radio-button>\n }\n\n <div class=\"kbq-time-range-editor__date-time\">\n <span class=\"kbq-time-range-editor__date-time-prefix\" [attr.aria-label]=\"localeConfig.editor.from\">\n {{ localeConfig.editor.from }}\n </span>\n <kbq-fieldset>\n <kbq-form-field kbqFieldsetItem>\n <i kbq-icon=\"kbq-clock_16\" kbqPrefix [autoColor]=\"true\"></i>\n <input kbqTimepicker [format]=\"timepickerFormat\" [formControl]=\"form.controls.fromTime\" />\n </kbq-form-field>\n\n <kbq-form-field>\n <input\n [min]=\"minDate()\"\n [max]=\"maxDate()\"\n [kbqDatepicker]=\"datepickerFrom\"\n [formControl]=\"form.controls.fromDate\"\n [errorStateMatcher]=\"rangeStateMatcher\"\n />\n <kbq-datepicker-toggle-icon kbqSuffix [for]=\"datepickerFrom\" />\n <kbq-datepicker #datepickerFrom [minDate]=\"minDate()\" [maxDate]=\"maxDate()\" />\n </kbq-form-field>\n </kbq-fieldset>\n </div>\n\n <div class=\"kbq-time-range-editor__date-time\">\n <span class=\"kbq-time-range-editor__date-time-prefix\" [attr.aria-label]=\"localeConfig.editor.to\">\n {{ localeConfig.editor.to }}\n </span>\n <kbq-fieldset>\n <kbq-form-field kbqFieldsetItem>\n <i kbq-icon=\"kbq-clock_16\" kbqPrefix [autoColor]=\"true\"></i>\n <input kbqTimepicker [format]=\"timepickerFormat\" [formControl]=\"form.controls.toTime\" />\n </kbq-form-field>\n\n <kbq-form-field>\n <input\n [min]=\"minDate()\"\n [max]=\"maxDate()\"\n [kbqDatepicker]=\"datepickerTo\"\n [formControl]=\"form.controls.toDate\"\n [errorStateMatcher]=\"rangeStateMatcher\"\n />\n <kbq-datepicker-toggle-icon kbqSuffix [for]=\"datepickerTo\" />\n <kbq-datepicker #datepickerTo [minDate]=\"minDate()\" [maxDate]=\"maxDate()\" />\n </kbq-form-field>\n </kbq-fieldset>\n </div>\n </div>\n }\n </kbq-radio-group>\n</form>\n\n<ng-template #defaultOptionTemplate let-context>\n @let localeConfig = localeConfiguration();\n @switch (context.translationType) {\n @case ('other') {\n @switch (context.type) {\n @case ('allTime') {\n {{ localeConfig.editor.allTime }}\n }\n @case ('currentQuarter') {\n {{ localeConfig.editor.currentQuarter }}\n }\n @case ('currentYear') {\n {{ localeConfig.editor.currentYear }}\n }\n }\n }\n @default {\n {{ context.formattedValue }}\n }\n }\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: KbqFieldset, selector: "kbq-fieldset" }, { kind: "directive", type: KbqFieldsetItem, selector: "[kbqFieldsetItem]" }, { kind: "ngmodule", type: KbqDatepickerModule }, { kind: "component", type: i2.KbqDatepicker, selector: "kbq-datepicker", inputs: ["hasBackdrop", "startAt", "disabled", "opened", "minDate", "maxDate", "panelClass", "dateClass", "backdropClass"], outputs: ["yearSelected", "monthSelected", "opened", "closed"], exportAs: ["kbqDatepicker"] }, { kind: "directive", type: i2.KbqDatepickerInput, selector: "input[kbqDatepicker], input[kbqCalendar]", inputs: ["errorStateMatcher", "placeholder", "required", "kbqDatepicker", "kbqCalendar", "kbqDatepickerFilter", "value", "min", "max", "disabled", "id", "kbqValidationTooltip"], outputs: ["incorrectInput", "dateChange", "dateInput"], exportAs: ["kbqDatepickerInput"] }, { kind: "component", type: i2.KbqDatepickerToggleIconComponent, selector: "kbq-datepicker-toggle-icon", inputs: ["disabled", "for"] }, { kind: "component", type: i3.KbqFormField, selector: "kbq-form-field", inputs: ["noBorders"], exportAs: ["kbqFormField"] }, { kind: "directive", type: i3.KbqPrefix, selector: "[kbqPrefix]", exportAs: ["kbqPrefix"] }, { kind: "directive", type: i3.KbqSuffix, selector: "[kbqSuffix]" }, { kind: "directive", type: i3.KbqValidateDirective, selector: " input[kbqInput], input[kbqNumberInput], input[kbqInputPassword], input[kbqTimepicker], input[kbqDatepicker], textarea[kbqTextarea], kbq-select, kbq-tree-select, kbq-tag-list ", exportAs: ["KbqValidate"] }, { kind: "ngmodule", type: KbqFormFieldModule }, { kind: "ngmodule", type: KbqTimepickerModule }, { kind: "directive", type: i4.KbqTimepicker, selector: "input[kbqTimepicker]", inputs: ["placeholder", "disabled", "id", "required", "format", "min", "max", "value", "kbqValidationTooltip"], outputs: ["incorrectInput"], exportAs: ["kbqTimepicker"] }, { kind: "ngmodule", type: KbqRadioModule }, { kind: "directive", type: i5.KbqRadioGroup, selector: "kbq-radio-group", inputs: ["big", "name", "labelPosition", "value", "selected", "disabled", "required"], outputs: ["change"], exportAs: ["kbqRadioGroup"] }, { kind: "component", type: i5.KbqRadioButton, selector: "kbq-radio-button", inputs: ["checked", "value", "disabled", "tabIndex", "required", "labelPosition", "name", "isFocused", "id"], outputs: ["change"], exportAs: ["kbqRadioButton"] }, { kind: "component", type: KbqIcon, selector: "[kbq-icon]", inputs: ["small", "autoColor", "kbq-icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
195
|
+
], viewQueries: [{ propertyName: "timepickerList", predicate: KbqTimepicker, descendants: true, isSignal: true }], ngImport: i0, template: "<form [formGroup]=\"form\">\n <kbq-radio-group class=\"kbq-time-range-editor__container\" [formControl]=\"form.controls.type\">\n @let types = timeRangeTypesWithoutRange();\n\n @if (types.length) {\n <div class=\"kbq-time-range-editor__predefined\">\n @for (type of types; track type) {\n <kbq-radio-button class=\"kbq-time-range-editor__predefined-option\" [value]=\"type.type\">\n <ng-container\n *ngTemplateOutlet=\"optionTemplate() || defaultOptionTemplate; context: { $implicit: type }\"\n />\n </kbq-radio-button>\n }\n </div>\n }\n\n @if (isRangeVisible()) {\n @let localeConfig = localeConfiguration();\n\n <div class=\"kbq-time-range-editor__range\" role=\"group\">\n @if (types.length) {\n <kbq-radio-button [value]=\"'range'\">{{ localeConfig.editor.rangeLabel }}</kbq-radio-button>\n }\n\n <div class=\"kbq-time-range-editor__date-time\">\n <span class=\"kbq-time-range-editor__date-time-prefix\" [attr.aria-label]=\"localeConfig.editor.from\">\n {{ localeConfig.editor.from }}\n </span>\n <kbq-fieldset>\n <kbq-form-field kbqFieldsetItem>\n <i kbq-icon=\"kbq-clock_16\" kbqPrefix [autoColor]=\"true\"></i>\n <input kbqTimepicker [format]=\"timepickerFormat\" [formControl]=\"form.controls.fromTime\" />\n </kbq-form-field>\n\n <kbq-form-field>\n <input\n [min]=\"minDate()\"\n [max]=\"maxDate()\"\n [kbqDatepicker]=\"datepickerFrom\"\n [formControl]=\"form.controls.fromDate\"\n [errorStateMatcher]=\"rangeStateMatcher\"\n />\n <kbq-datepicker-toggle-icon kbqSuffix [for]=\"datepickerFrom\" />\n <kbq-datepicker #datepickerFrom [minDate]=\"minDate()\" [maxDate]=\"maxDate()\" />\n </kbq-form-field>\n </kbq-fieldset>\n </div>\n\n <div class=\"kbq-time-range-editor__date-time\">\n <span class=\"kbq-time-range-editor__date-time-prefix\" [attr.aria-label]=\"localeConfig.editor.to\">\n {{ localeConfig.editor.to }}\n </span>\n <kbq-fieldset>\n <kbq-form-field kbqFieldsetItem>\n <i kbq-icon=\"kbq-clock_16\" kbqPrefix [autoColor]=\"true\"></i>\n <input kbqTimepicker [format]=\"timepickerFormat\" [formControl]=\"form.controls.toTime\" />\n </kbq-form-field>\n\n <kbq-form-field>\n <input\n [min]=\"minDate()\"\n [max]=\"maxDate()\"\n [kbqDatepicker]=\"datepickerTo\"\n [formControl]=\"form.controls.toDate\"\n [errorStateMatcher]=\"rangeStateMatcher\"\n />\n <kbq-datepicker-toggle-icon kbqSuffix [for]=\"datepickerTo\" />\n <kbq-datepicker #datepickerTo [minDate]=\"minDate()\" [maxDate]=\"maxDate()\" />\n </kbq-form-field>\n </kbq-fieldset>\n </div>\n </div>\n }\n </kbq-radio-group>\n</form>\n\n<ng-template #defaultOptionTemplate let-context>\n @let localeConfig = localeConfiguration();\n @switch (context.translationType) {\n @case ('other') {\n @switch (context.type) {\n @case ('allTime') {\n {{ localeConfig.editor.allTime }}\n }\n @case ('currentQuarter') {\n {{ localeConfig.editor.currentQuarter }}\n }\n @case ('currentYear') {\n {{ localeConfig.editor.currentYear }}\n }\n }\n }\n @default {\n {{ context.formattedValue }}\n }\n }\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: KbqFieldset, selector: "kbq-fieldset" }, { kind: "directive", type: KbqFieldsetItem, selector: "[kbqFieldsetItem]" }, { kind: "ngmodule", type: KbqDatepickerModule }, { kind: "component", type: i2.KbqDatepicker, selector: "kbq-datepicker", inputs: ["hasBackdrop", "startAt", "disabled", "opened", "minDate", "maxDate", "panelClass", "dateClass", "backdropClass"], outputs: ["yearSelected", "monthSelected", "opened", "closed"], exportAs: ["kbqDatepicker"] }, { kind: "directive", type: i2.KbqDatepickerInput, selector: "input[kbqDatepicker], input[kbqCalendar]", inputs: ["errorStateMatcher", "placeholder", "required", "kbqDatepicker", "kbqCalendar", "kbqDatepickerFilter", "value", "min", "max", "disabled", "id", "kbqValidationTooltip"], outputs: ["incorrectInput", "dateChange", "dateInput"], exportAs: ["kbqDatepickerInput"] }, { kind: "component", type: i2.KbqDatepickerToggleIconComponent, selector: "kbq-datepicker-toggle-icon", inputs: ["disabled", "for"] }, { kind: "component", type: i3.KbqFormField, selector: "kbq-form-field", inputs: ["noBorders"], exportAs: ["kbqFormField"] }, { kind: "directive", type: i3.KbqPrefix, selector: "[kbqPrefix]", exportAs: ["kbqPrefix"] }, { kind: "directive", type: i3.KbqSuffix, selector: "[kbqSuffix]" }, { kind: "directive", type: i3.KbqValidateDirective, selector: " input[kbqInput], input[kbqNumberInput], input[kbqInputPassword], input[kbqTimepicker], input[kbqDatepicker], textarea[kbqTextarea], kbq-select, kbq-tree-select, kbq-tag-list ", exportAs: ["KbqValidate"] }, { kind: "ngmodule", type: KbqFormFieldModule }, { kind: "ngmodule", type: KbqTimepickerModule }, { kind: "directive", type: i4.KbqTimepicker, selector: "input[kbqTimepicker]", inputs: ["errorStateMatcher", "placeholder", "disabled", "id", "required", "format", "min", "max", "value", "kbqValidationTooltip"], outputs: ["incorrectInput"], exportAs: ["kbqTimepicker"] }, { kind: "ngmodule", type: KbqRadioModule }, { kind: "directive", type: i5.KbqRadioGroup, selector: "kbq-radio-group", inputs: ["big", "name", "labelPosition", "value", "selected", "disabled", "required"], outputs: ["change"], exportAs: ["kbqRadioGroup"] }, { kind: "component", type: i5.KbqRadioButton, selector: "kbq-radio-button", inputs: ["checked", "value", "disabled", "tabIndex", "required", "labelPosition", "name", "isFocused", "id"], outputs: ["change"], exportAs: ["kbqRadioButton"] }, { kind: "component", type: KbqIcon, selector: "[kbq-icon]", inputs: ["small", "autoColor", "kbq-icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
196
196
|
}
|
|
197
197
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqTimeRangeEditor, decorators: [{
|
|
198
198
|
type: Component,
|
|
@@ -221,4 +221,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
221
221
|
}
|
|
222
222
|
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<form [formGroup]=\"form\">\n <kbq-radio-group class=\"kbq-time-range-editor__container\" [formControl]=\"form.controls.type\">\n @let types = timeRangeTypesWithoutRange();\n\n @if (types.length) {\n <div class=\"kbq-time-range-editor__predefined\">\n @for (type of types; track type) {\n <kbq-radio-button class=\"kbq-time-range-editor__predefined-option\" [value]=\"type.type\">\n <ng-container\n *ngTemplateOutlet=\"optionTemplate() || defaultOptionTemplate; context: { $implicit: type }\"\n />\n </kbq-radio-button>\n }\n </div>\n }\n\n @if (isRangeVisible()) {\n @let localeConfig = localeConfiguration();\n\n <div class=\"kbq-time-range-editor__range\" role=\"group\">\n @if (types.length) {\n <kbq-radio-button [value]=\"'range'\">{{ localeConfig.editor.rangeLabel }}</kbq-radio-button>\n }\n\n <div class=\"kbq-time-range-editor__date-time\">\n <span class=\"kbq-time-range-editor__date-time-prefix\" [attr.aria-label]=\"localeConfig.editor.from\">\n {{ localeConfig.editor.from }}\n </span>\n <kbq-fieldset>\n <kbq-form-field kbqFieldsetItem>\n <i kbq-icon=\"kbq-clock_16\" kbqPrefix [autoColor]=\"true\"></i>\n <input kbqTimepicker [format]=\"timepickerFormat\" [formControl]=\"form.controls.fromTime\" />\n </kbq-form-field>\n\n <kbq-form-field>\n <input\n [min]=\"minDate()\"\n [max]=\"maxDate()\"\n [kbqDatepicker]=\"datepickerFrom\"\n [formControl]=\"form.controls.fromDate\"\n [errorStateMatcher]=\"rangeStateMatcher\"\n />\n <kbq-datepicker-toggle-icon kbqSuffix [for]=\"datepickerFrom\" />\n <kbq-datepicker #datepickerFrom [minDate]=\"minDate()\" [maxDate]=\"maxDate()\" />\n </kbq-form-field>\n </kbq-fieldset>\n </div>\n\n <div class=\"kbq-time-range-editor__date-time\">\n <span class=\"kbq-time-range-editor__date-time-prefix\" [attr.aria-label]=\"localeConfig.editor.to\">\n {{ localeConfig.editor.to }}\n </span>\n <kbq-fieldset>\n <kbq-form-field kbqFieldsetItem>\n <i kbq-icon=\"kbq-clock_16\" kbqPrefix [autoColor]=\"true\"></i>\n <input kbqTimepicker [format]=\"timepickerFormat\" [formControl]=\"form.controls.toTime\" />\n </kbq-form-field>\n\n <kbq-form-field>\n <input\n [min]=\"minDate()\"\n [max]=\"maxDate()\"\n [kbqDatepicker]=\"datepickerTo\"\n [formControl]=\"form.controls.toDate\"\n [errorStateMatcher]=\"rangeStateMatcher\"\n />\n <kbq-datepicker-toggle-icon kbqSuffix [for]=\"datepickerTo\" />\n <kbq-datepicker #datepickerTo [minDate]=\"minDate()\" [maxDate]=\"maxDate()\" />\n </kbq-form-field>\n </kbq-fieldset>\n </div>\n </div>\n }\n </kbq-radio-group>\n</form>\n\n<ng-template #defaultOptionTemplate let-context>\n @let localeConfig = localeConfiguration();\n @switch (context.translationType) {\n @case ('other') {\n @switch (context.type) {\n @case ('allTime') {\n {{ localeConfig.editor.allTime }}\n }\n @case ('currentQuarter') {\n {{ localeConfig.editor.currentQuarter }}\n }\n @case ('currentYear') {\n {{ localeConfig.editor.currentYear }}\n }\n }\n }\n @default {\n {{ context.formattedValue }}\n }\n }\n</ng-template>\n" }]
|
|
223
223
|
}], ctorParameters: () => [] });
|
|
224
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1yYW5nZS1lZGl0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL3RpbWUtcmFuZ2UvdGltZS1yYW5nZS1lZGl0b3IudHMiLCIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL3RpbWUtcmFuZ2UvdGltZS1yYW5nZS1lZGl0b3IuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLEtBQUssRUFHTCxZQUFZLEVBQ1osaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFHSCxXQUFXLEVBQ1gsU0FBUyxFQUVULGFBQWEsRUFDYixpQkFBaUIsRUFFakIsbUJBQW1CLEVBR3RCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEcsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFN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LEVBQUUsa0JBQWtCO2FBQ2xDO1lBQ0Q7Z0JBQ0ksS0FBSyxFQUFFLElBQUk7Z0JBQ1gsT0FBTyxFQUFFLGFBQWE7Z0JBQ3RCLFdBQVcsRUFBRSxrQkFBa0I7YUFDbEM7U0FDSiw2REF3Q2tFLGFBQWEsZ0VDaElwRiw2OElBaUdBLDRDRGxDUSxnQkFBZ0IsbUpBQ2hCLG1CQUFtQixnK0JBQ25CLFdBQVcseURBQ1gsZUFBZSw2REFDZixtQkFBbUIsNjZDQUNuQixrQkFBa0IsOEJBQ2xCLG1CQUFtQix5UkFDbkIsY0FBYyxtZUFDZCxPQUFPOzs0RkFxQkYsa0JBQWtCO2tCQWpDOUIsU0FBUzsrQkFDSSx1QkFBdUIsY0FDckIsSUFBSSxXQUNQO3dCQUNMLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3dCQUNuQixXQUFXO3dCQUNYLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCxPQUFPO3FCQUNWLFFBRUs7d0JBQ0YsS0FBSyxFQUFFLHdCQUF3QjtxQkFDbEMsYUFDVTt3QkFDUDs0QkFDSSxLQUFLLEVBQUUsSUFBSTs0QkFDWCxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLG9CQUFvQjt5QkFDbEM7d0JBQ0Q7NEJBQ0ksS0FBSyxFQUFFLElBQUk7NEJBQ1gsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsb0JBQW9CO3lCQUNsQztxQkFDSixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgY29tcHV0ZWQsXG4gICAgaW5qZWN0LFxuICAgIGlucHV0LFxuICAgIE9uSW5pdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICB2aWV3Q2hpbGRyZW4sXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0Q29udHJvbCxcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBGb3JtQ29udHJvbCxcbiAgICBGb3JtR3JvdXAsXG4gICAgRm9ybUdyb3VwRGlyZWN0aXZlLFxuICAgIE5HX1ZBTElEQVRPUlMsXG4gICAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgTmdGb3JtLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgVmFsaWRhdGlvbkVycm9ycyxcbiAgICBWYWxpZGF0b3Jcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRXJyb3JTdGF0ZU1hdGNoZXIsIEticVRpbWVSYW5nZUxvY2FsZUNvbmZpZyB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9jb3JlJztcbmltcG9ydCB7IEticURhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBLYnFGaWVsZHNldCwgS2JxRmllbGRzZXRJdGVtLCBLYnFGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBLYnFJY29uIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2ljb24nO1xuaW1wb3J0IHsgS2JxUmFkaW9Nb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvcmFkaW8nO1xuaW1wb3J0IHsgS2JxVGltZXBpY2tlciwgS2JxVGltZXBpY2tlck1vZHVsZSwgVGltZUZvcm1hdHMgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvdGltZXBpY2tlcic7XG5pbXBvcnQgeyBtZXJnZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHJhbmdlVmFsaWRhdG9yIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgS2JxVGltZVJhbmdlU2VydmljZSB9IGZyb20gJy4vdGltZS1yYW5nZS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gICAgS2JxUmFuZ2VWYWx1ZSxcbiAgICBLYnFUaW1lUmFuZ2VPcHRpb25Db250ZXh0LFxuICAgIEticVRpbWVSYW5nZVJhbmdlLFxuICAgIEticVRpbWVSYW5nZVR5cGUsXG4gICAgS2JxVGltZVJhbmdlVHlwZUNvbnRleHRcbn0gZnJvbSAnLi90eXBlcyc7XG5cbmludGVyZmFjZSBGb3JtVmFsdWU8VD4ge1xuICAgIHR5cGU6IEZvcm1Db250cm9sPEticVRpbWVSYW5nZVR5cGU+O1xuICAgIGZyb21UaW1lOiBGb3JtQ29udHJvbDxUPjtcbiAgICBmcm9tRGF0ZTogRm9ybUNvbnRyb2w8VD47XG4gICAgdG9UaW1lOiBGb3JtQ29udHJvbDxUPjtcbiAgICB0b0RhdGU6IEZvcm1Db250cm9sPFQ+O1xufVxuXG5jbGFzcyBSYW5nZUVycm9yU3RhdGVNYXRjaGVyIGltcGxlbWVudHMgRXJyb3JTdGF0ZU1hdGNoZXIge1xuICAgIGlzRXJyb3JTdGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsLCBmb3JtOiBGb3JtR3JvdXBEaXJlY3RpdmUgfCBOZ0Zvcm0gfCBudWxsKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIWZvcm0/LmludmFsaWQgfHwgISFjb250cm9sPy5pbnZhbGlkO1xuICAgIH1cbn1cblxuLyoqIEBkb2NzLXByaXZhdGUgKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAna2JxLXRpbWUtcmFuZ2UtZWRpdG9yJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgS2JxRmllbGRzZXQsXG4gICAgICAgIEticUZpZWxkc2V0SXRlbSxcbiAgICAgICAgS2JxRGF0ZXBpY2tlck1vZHVsZSxcbiAgICAgICAgS2JxRm9ybUZpZWxkTW9kdWxlLFxuICAgICAgICBLYnFUaW1lcGlja2VyTW9kdWxlLFxuICAgICAgICBLYnFSYWRpb01vZHVsZSxcbiAgICAgICAgS2JxSWNvblxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RpbWUtcmFuZ2UtZWRpdG9yLmh0bWwnLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdrYnEtdGltZS1yYW5nZV9fZWRpdG9yJ1xuICAgIH0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogS2JxVGltZVJhbmdlRWRpdG9yXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBLYnFUaW1lUmFuZ2VFZGl0b3JcbiAgICAgICAgfVxuICAgIF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBLYnFUaW1lUmFuZ2VFZGl0b3I8VD4gaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yLCBPbkluaXQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdGltZVJhbmdlU2VydmljZSA9IGluamVjdChLYnFUaW1lUmFuZ2VTZXJ2aWNlKTtcblxuICAgIC8qKiBUaGUgbWF4aW11bSBzZWxlY3RhYmxlIGRhdGUuICovXG4gICAgcmVhZG9ubHkgbWF4RGF0ZSA9IGlucHV0PFQgfCBudWxsPihudWxsKTtcbiAgICAvKiogVGhlIG1pbmltdW0gc2VsZWN0YWJsZSBkYXRlLiAqL1xuICAgIHJlYWRvbmx5IG1pbkRhdGUgPSBpbnB1dDxUIHwgbnVsbD4obnVsbCk7XG4gICAgLyoqIFByZXNldCBvZiBzZWxlY3RhYmxlIHJhbmdlcyAqL1xuICAgIHJlYWRvbmx5IGF2YWlsYWJsZVRpbWVSYW5nZVR5cGVzID0gaW5wdXQ8S2JxVGltZVJhbmdlVHlwZVtdPih0aGlzLnRpbWVSYW5nZVNlcnZpY2UucHJvdmlkZWREZWZhdWx0VGltZVJhbmdlVHlwZXMpO1xuICAgIC8qKiBQcm92aWRlZCB2YWx1ZSBvZiBzZWxlY3RlZCByYW5nZSAqL1xuICAgIHJlYWRvbmx5IHJhbmdlVmFsdWUgPSBpbnB1dDxSZXF1aXJlZDxLYnFSYW5nZVZhbHVlPFQ+Pj4odGhpcy50aW1lUmFuZ2VTZXJ2aWNlLmdldERlZmF1bHRSYW5nZVZhbHVlKCkpO1xuICAgIHJlYWRvbmx5IHNob3dSYW5nZUFzRGVmYXVsdCA9IGlucHV0LnJlcXVpcmVkPGJvb2xlYW4+KCk7XG4gICAgcmVhZG9ubHkgbG9jYWxlQ29uZmlndXJhdGlvbiA9IGlucHV0LnJlcXVpcmVkPEticVRpbWVSYW5nZUxvY2FsZUNvbmZpZz4oKTtcbiAgICAvKiogQ3VzdG9taXphYmxlIG9wdGlvbiBvdXRwdXQgKi9cbiAgICByZWFkb25seSBvcHRpb25UZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPEticVRpbWVSYW5nZU9wdGlvbkNvbnRleHQ+PigpO1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNSYW5nZVZpc2libGUgPSBjb21wdXRlZChcbiAgICAgICAgKCkgPT4gdGhpcy5zaG93UmFuZ2VBc0RlZmF1bHQoKSB8fCB0aGlzLmF2YWlsYWJsZVRpbWVSYW5nZVR5cGVzKCkuaW5jbHVkZXMoJ3JhbmdlJylcbiAgICApO1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGltZVJhbmdlVHlwZXNXaXRob3V0UmFuZ2UgPSBjb21wdXRlZDxLYnFUaW1lUmFuZ2VPcHRpb25Db250ZXh0W10+KCgpID0+IHtcbiAgICAgICAgY29uc3QgbG9jYWxlQ29uZmlnID0gdGhpcy5sb2NhbGVDb25maWd1cmF0aW9uKCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXZhaWxhYmxlVGltZVJhbmdlVHlwZXMoKVxuICAgICAgICAgICAgLmZpbHRlcigodHlwZSkgPT4gdHlwZSAhPT0gJ3JhbmdlJylcbiAgICAgICAgICAgIC5tYXAoKHR5cGUpID0+ICh7XG4gICAgICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGlvblR5cGU6IHRoaXMudGltZVJhbmdlU2VydmljZS5nZXRUaW1lUmFuZ2VVbml0QnlUeXBlKHR5cGUpLFxuICAgICAgICAgICAgICAgIHVuaXRzOiB0aGlzLnRpbWVSYW5nZVNlcnZpY2UuZ2V0VGltZVJhbmdlVHlwZVVuaXRzKHR5cGUpLFxuICAgICAgICAgICAgICAgIGZvcm1hdHRlZFZhbHVlOiB0aGlzLmdldEZvcm1hdHRlZE9wdGlvbih0eXBlLCBsb2NhbGVDb25maWcpXG4gICAgICAgICAgICB9KSk7XG4gICAgfSk7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSB0aW1lcGlja2VyTGlzdCA9IHZpZXdDaGlsZHJlbjxLYnFUaW1lcGlja2VyPFQ+PihLYnFUaW1lcGlja2VyKTtcblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGZvcm06IEZvcm1Hcm91cDxGb3JtVmFsdWU8VD4+O1xuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRpbWVwaWNrZXJGb3JtYXQgPSBUaW1lRm9ybWF0cy5ISG1tc3M7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmFuZ2VTdGF0ZU1hdGNoZXIgPSBuZXcgUmFuZ2VFcnJvclN0YXRlTWF0Y2hlcigpO1xuXG4gICAgcHJpdmF0ZSBsYXN0VmFsaWRhdGlvbkVycm9yT25FbWl0OiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgY29uc3QgZGVmYXVsdFJhbmdlVmFsdWUgPSB0aGlzLnJhbmdlVmFsdWUoKTtcblxuICAgICAgICB0aGlzLmZvcm0gPSBuZXcgRm9ybUdyb3VwKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6IG5ldyBGb3JtQ29udHJvbDxLYnFUaW1lUmFuZ2VUeXBlPih0aGlzLnRpbWVSYW5nZVNlcnZpY2UuREVGQVVMVF9SQU5HRV9UWVBFLCB7XG4gICAgICAgICAgICAgICAgICAgIG5vbk51bGxhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZnJvbVRpbWU6IG5ldyBGb3JtQ29udHJvbDxUPihkZWZhdWx0UmFuZ2VWYWx1ZS5mcm9tVGltZSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KSxcbiAgICAgICAgICAgICAgICBmcm9tRGF0ZTogbmV3IEZvcm1Db250cm9sPFQ+KGRlZmF1bHRSYW5nZVZhbHVlLmZyb21EYXRlLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pLFxuICAgICAgICAgICAgICAgIHRvVGltZTogbmV3IEZvcm1Db250cm9sPFQ+KGRlZmF1bHRSYW5nZVZhbHVlLnRvVGltZSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KSxcbiAgICAgICAgICAgICAgICB0b0RhdGU6IG5ldyBGb3JtQ29udHJvbDxUPihkZWZhdWx0UmFuZ2VWYWx1ZS50b0RhdGUsIHsgbm9uTnVsbGFibGU6IHRydWUgfSlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IHZhbGlkYXRvcnM6IHJhbmdlVmFsaWRhdG9yKHRoaXMudGltZVJhbmdlU2VydmljZSkgfVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IHJhbmdlQ29udHJvbHMgPSBbXG4gICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMuZnJvbVRpbWUsXG4gICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMuZnJvbURhdGUsXG4gICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMudG9UaW1lLFxuICAgICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnRvRGF0ZVxuICAgICAgICBdO1xuXG4gICAgICAgIG1lcmdlKC4uLnJhbmdlQ29udHJvbHMubWFwKChjb250cm9sKSA9PiBjb250cm9sLnN0YXR1c0NoYW5nZXMpKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+ICh0aGlzLmxhc3RWYWxpZGF0aW9uRXJyb3JPbkVtaXQgPSB0aGlzLmNvbmNhdENvbnRyb2xWYWxpZGF0aW9uRXJyb3JzKCkpKTtcblxuICAgICAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKGZvcm1WYWx1ZSkgPT4gZm9ybVZhbHVlLnR5cGUpLFxuICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHR5cGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0Rpc2FibGVkID0gdHlwZSAhPT0gJ3JhbmdlJztcblxuICAgICAgICAgICAgICAgIHJhbmdlQ29udHJvbHMuZm9yRWFjaCgoY29udHJvbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKGZvcm1WYWx1ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSB0aGlzLm1hcFRpbWVSYW5nZShmb3JtVmFsdWUpO1xuXG4gICAgICAgICAgICBpZiAocmFuZ2UpIHRoaXMub25DaGFuZ2UocmFuZ2UpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmZvcm0uc3RhdHVzQ2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKHN0YXR1cykgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGltZXBpY2tlckxpc3QgPSB0aGlzLnRpbWVwaWNrZXJMaXN0KCk7XG5cbiAgICAgICAgICAgIGlmICh0aW1lcGlja2VyTGlzdC5hdCgwKSkge1xuICAgICAgICAgICAgICAgIHRpbWVwaWNrZXJMaXN0LmF0KDApIS5lcnJvclN0YXRlID0gc3RhdHVzID09PSAnSU5WQUxJRCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBkZWZhdWx0UmFuZ2VWYWx1ZSA9IHRoaXMucmFuZ2VWYWx1ZSgpO1xuICAgICAgICBjb25zdCBhdmFpbGFibGVUaW1lUmFuZ2VUeXBlcyA9IHRoaXMuYXZhaWxhYmxlVGltZVJhbmdlVHlwZXMoKTtcblxuICAgICAgICB0aGlzLmZvcm0uc2V0VmFsdWUoe1xuICAgICAgICAgICAgdHlwZTogKGF2YWlsYWJsZVRpbWVSYW5nZVR5cGVzLmxlbmd0aCAmJiBhdmFpbGFibGVUaW1lUmFuZ2VUeXBlc1swXSkgfHwgJ3JhbmdlJyxcbiAgICAgICAgICAgIGZyb21UaW1lOiBkZWZhdWx0UmFuZ2VWYWx1ZS5mcm9tVGltZSxcbiAgICAgICAgICAgIGZyb21EYXRlOiBkZWZhdWx0UmFuZ2VWYWx1ZS5mcm9tRGF0ZSxcbiAgICAgICAgICAgIHRvVGltZTogZGVmYXVsdFJhbmdlVmFsdWUudG9UaW1lLFxuICAgICAgICAgICAgdG9EYXRlOiBkZWZhdWx0UmFuZ2VWYWx1ZS50b0RhdGVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICB2YWxpZGF0ZSgpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uZXJyb3JzIHx8IHRoaXMubGFzdFZhbGlkYXRpb25FcnJvck9uRW1pdDtcbiAgICB9XG5cbiAgICAvKiogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3NvciAqL1xuICAgIHdyaXRlVmFsdWUodmFsdWU/OiBLYnFUaW1lUmFuZ2VSYW5nZSk6IHZvaWQge1xuICAgICAgICBpZiAoIXZhbHVlKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgY29ycmVjdGVkID0gdGhpcy50aW1lUmFuZ2VTZXJ2aWNlLmNoZWNrQW5kQ29ycmVjdFRpbWVSYW5nZVZhbHVlKFxuICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICB0aGlzLmF2YWlsYWJsZVRpbWVSYW5nZVR5cGVzKCksXG4gICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMudHlwZS5zZXRWYWx1ZShjb3JyZWN0ZWQudHlwZSk7XG5cbiAgICAgICAgaWYgKGNvcnJlY3RlZC50eXBlID09PSAncmFuZ2UnICYmIGNvcnJlY3RlZC5zdGFydERhdGVUaW1lICYmIGNvcnJlY3RlZC5lbmREYXRlVGltZSkge1xuICAgICAgICAgICAgY29uc3QgZnJvbTogVCA9IHRoaXMudGltZVJhbmdlU2VydmljZS5kYXRlQWRhcHRlci5kZXNlcmlhbGl6ZShjb3JyZWN0ZWQuc3RhcnREYXRlVGltZSk7XG4gICAgICAgICAgICBjb25zdCB0bzogVCA9IHRoaXMudGltZVJhbmdlU2VydmljZS5kYXRlQWRhcHRlci5kZXNlcmlhbGl6ZShjb3JyZWN0ZWQuZW5kRGF0ZVRpbWUpO1xuXG4gICAgICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgICAgICAgZnJvbVRpbWU6IGZyb20sXG4gICAgICAgICAgICAgICAgZnJvbURhdGU6IGZyb20sXG4gICAgICAgICAgICAgICAgdG9UaW1lOiB0byxcbiAgICAgICAgICAgICAgICB0b0RhdGU6IHRvXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgb25DaGFuZ2UgPSAoX3ZhbHVlOiBLYnFUaW1lUmFuZ2VSYW5nZSkgPT4ge307XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBvblRvdWNoID0gKCkgPT4ge307XG4gICAgLyoqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IgKi9cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IEticVRpbWVSYW5nZVJhbmdlKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG4gICAgLyoqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IgKi9cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1hcFRpbWVSYW5nZSh7IHR5cGUgfTogUGFydGlhbDxLYnFUaW1lUmFuZ2VUeXBlQ29udGV4dD4gJiBLYnFSYW5nZVZhbHVlPFQ+KTogS2JxVGltZVJhbmdlUmFuZ2UgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIXR5cGUpIHJldHVybjtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIC4uLnRoaXMudGltZVJhbmdlU2VydmljZS5jYWxjdWxhdGVUaW1lUmFuZ2UodHlwZSwge1xuICAgICAgICAgICAgICAgIC8vIHVzZSBjb250cm9sLnZhbHVlLCBzaW5jZSB2aWEgZm9ybS52YWx1ZSBjb250cm9sIHZhbHVlcyBjYW4gYmUgdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgZnJvbVRpbWU6IHRoaXMuZm9ybS5jb250cm9scy5mcm9tVGltZS52YWx1ZSxcbiAgICAgICAgICAgICAgICBmcm9tRGF0ZTogdGhpcy5mb3JtLmNvbnRyb2xzLmZyb21EYXRlLnZhbHVlLFxuICAgICAgICAgICAgICAgIHRvRGF0ZTogdGhpcy5mb3JtLmNvbnRyb2xzLnRvVGltZS52YWx1ZSxcbiAgICAgICAgICAgICAgICB0b1RpbWU6IHRoaXMuZm9ybS5jb250cm9scy50b1RpbWUudmFsdWVcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGb3JtYXR0ZWRPcHRpb24odHlwZTogS2JxVGltZVJhbmdlVHlwZSwgbG9jYWxlQ29uZmlnOiBLYnFUaW1lUmFuZ2VMb2NhbGVDb25maWcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB0cmFuc2xhdGlvblR5cGUgPSB0aGlzLnRpbWVSYW5nZVNlcnZpY2UuZ2V0VGltZVJhbmdlVW5pdEJ5VHlwZSh0eXBlKTtcblxuICAgICAgICBpZiAodHJhbnNsYXRpb25UeXBlID09PSAnb3RoZXInKSByZXR1cm4gJyc7XG5cbiAgICAgICAgY29uc3QgcmFuZ2UgPSB0aGlzLnRpbWVSYW5nZVNlcnZpY2UuY2FsY3VsYXRlVGltZVJhbmdlKHR5cGUpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnRpbWVSYW5nZVNlcnZpY2UuZGF0ZUZvcm1hdHRlci5kdXJhdGlvbihcbiAgICAgICAgICAgIHRoaXMudGltZVJhbmdlU2VydmljZS5kYXRlQWRhcHRlci5kZXNlcmlhbGl6ZShyYW5nZS5zdGFydERhdGVUaW1lISksXG4gICAgICAgICAgICB0aGlzLnRpbWVSYW5nZVNlcnZpY2UuZGF0ZUFkYXB0ZXIudG9kYXkoKSxcbiAgICAgICAgICAgIFt0cmFuc2xhdGlvblR5cGVdLFxuICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICBsb2NhbGVDb25maWcuZHVyYXRpb25UZW1wbGF0ZS5vcHRpb25cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbmNhdENvbnRyb2xWYWxpZGF0aW9uRXJyb3JzKCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICAgICAgbGV0IHJlc3VsdDogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPSB0aGlzLmZvcm0uZXJyb3JzO1xuXG4gICAgICAgIE9iamVjdC52YWx1ZXModGhpcy5mb3JtLmNvbnRyb2xzKS5mb3JFYWNoKChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcbiAgICAgICAgICAgIGlmIChjb250cm9sLmVycm9ycykge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICAgICAgICAgICAgICAuLi5jb250cm9sLmVycm9yc1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxufVxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gICAgPGticS1yYWRpby1ncm91cCBjbGFzcz1cImticS10aW1lLXJhbmdlLWVkaXRvcl9fY29udGFpbmVyXCIgW2Zvcm1Db250cm9sXT1cImZvcm0uY29udHJvbHMudHlwZVwiPlxuICAgICAgICBAbGV0IHR5cGVzID0gdGltZVJhbmdlVHlwZXNXaXRob3V0UmFuZ2UoKTtcblxuICAgICAgICBAaWYgKHR5cGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImticS10aW1lLXJhbmdlLWVkaXRvcl9fcHJlZGVmaW5lZFwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKHR5cGUgb2YgdHlwZXM7IHRyYWNrIHR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGticS1yYWRpby1idXR0b24gY2xhc3M9XCJrYnEtdGltZS1yYW5nZS1lZGl0b3JfX3ByZWRlZmluZWQtb3B0aW9uXCIgW3ZhbHVlXT1cInR5cGUudHlwZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwib3B0aW9uVGVtcGxhdGUoKSB8fCBkZWZhdWx0T3B0aW9uVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiB0eXBlIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9rYnEtcmFkaW8tYnV0dG9uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmIChpc1JhbmdlVmlzaWJsZSgpKSB7XG4gICAgICAgICAgICBAbGV0IGxvY2FsZUNvbmZpZyA9IGxvY2FsZUNvbmZpZ3VyYXRpb24oKTtcblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImticS10aW1lLXJhbmdlLWVkaXRvcl9fcmFuZ2VcIiByb2xlPVwiZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICBAaWYgKHR5cGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICA8a2JxLXJhZGlvLWJ1dHRvbiBbdmFsdWVdPVwiJ3JhbmdlJ1wiPnt7IGxvY2FsZUNvbmZpZy5lZGl0b3IucmFuZ2VMYWJlbCB9fTwva2JxLXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwia2JxLXRpbWUtcmFuZ2UtZWRpdG9yX19kYXRlLXRpbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJrYnEtdGltZS1yYW5nZS1lZGl0b3JfX2RhdGUtdGltZS1wcmVmaXhcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImxvY2FsZUNvbmZpZy5lZGl0b3IuZnJvbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbG9jYWxlQ29uZmlnLmVkaXRvci5mcm9tIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGticS1maWVsZHNldD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxrYnEtZm9ybS1maWVsZCBrYnFGaWVsZHNldEl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkga2JxLWljb249XCJrYnEtY2xvY2tfMTZcIiBrYnFQcmVmaXggW2F1dG9Db2xvcl09XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBrYnFUaW1lcGlja2VyIFtmb3JtYXRdPVwidGltZXBpY2tlckZvcm1hdFwiIFtmb3JtQ29udHJvbF09XCJmb3JtLmNvbnRyb2xzLmZyb21UaW1lXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwva2JxLWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxrYnEtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbl09XCJtaW5EYXRlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4XT1cIm1heERhdGUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtrYnFEYXRlcGlja2VyXT1cImRhdGVwaWNrZXJGcm9tXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm0uY29udHJvbHMuZnJvbURhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JTdGF0ZU1hdGNoZXJdPVwicmFuZ2VTdGF0ZU1hdGNoZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGticS1kYXRlcGlja2VyLXRvZ2dsZS1pY29uIGticVN1ZmZpeCBbZm9yXT1cImRhdGVwaWNrZXJGcm9tXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8a2JxLWRhdGVwaWNrZXIgI2RhdGVwaWNrZXJGcm9tIFttaW5EYXRlXT1cIm1pbkRhdGUoKVwiIFttYXhEYXRlXT1cIm1heERhdGUoKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2ticS1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICA8L2ticS1maWVsZHNldD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtdGltZS1yYW5nZS1lZGl0b3JfX2RhdGUtdGltZVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImticS10aW1lLXJhbmdlLWVkaXRvcl9fZGF0ZS10aW1lLXByZWZpeFwiIFthdHRyLmFyaWEtbGFiZWxdPVwibG9jYWxlQ29uZmlnLmVkaXRvci50b1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbG9jYWxlQ29uZmlnLmVkaXRvci50byB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxrYnEtZmllbGRzZXQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8a2JxLWZvcm0tZmllbGQga2JxRmllbGRzZXRJdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGticS1pY29uPVwia2JxLWNsb2NrXzE2XCIga2JxUHJlZml4IFthdXRvQ29sb3JdPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQga2JxVGltZXBpY2tlciBbZm9ybWF0XT1cInRpbWVwaWNrZXJGb3JtYXRcIiBbZm9ybUNvbnRyb2xdPVwiZm9ybS5jb250cm9scy50b1RpbWVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9rYnEtZm9ybS1maWVsZD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGticS1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWluXT1cIm1pbkRhdGUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhdPVwibWF4RGF0ZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ticURhdGVwaWNrZXJdPVwiZGF0ZXBpY2tlclRvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm0uY29udHJvbHMudG9EYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9yU3RhdGVNYXRjaGVyXT1cInJhbmdlU3RhdGVNYXRjaGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrYnEtZGF0ZXBpY2tlci10b2dnbGUtaWNvbiBrYnFTdWZmaXggW2Zvcl09XCJkYXRlcGlja2VyVG9cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrYnEtZGF0ZXBpY2tlciAjZGF0ZXBpY2tlclRvIFttaW5EYXRlXT1cIm1pbkRhdGUoKVwiIFttYXhEYXRlXT1cIm1heERhdGUoKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2ticS1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICA8L2ticS1maWVsZHNldD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgPC9rYnEtcmFkaW8tZ3JvdXA+XG48L2Zvcm0+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdE9wdGlvblRlbXBsYXRlIGxldC1jb250ZXh0PlxuICAgIEBsZXQgbG9jYWxlQ29uZmlnID0gbG9jYWxlQ29uZmlndXJhdGlvbigpO1xuICAgIEBzd2l0Y2ggKGNvbnRleHQudHJhbnNsYXRpb25UeXBlKSB7XG4gICAgICAgIEBjYXNlICgnb3RoZXInKSB7XG4gICAgICAgICAgICBAc3dpdGNoIChjb250ZXh0LnR5cGUpIHtcbiAgICAgICAgICAgICAgICBAY2FzZSAoJ2FsbFRpbWUnKSB7XG4gICAgICAgICAgICAgICAgICAgIHt7IGxvY2FsZUNvbmZpZy5lZGl0b3IuYWxsVGltZSB9fVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAY2FzZSAoJ2N1cnJlbnRRdWFydGVyJykge1xuICAgICAgICAgICAgICAgICAgICB7eyBsb2NhbGVDb25maWcuZWRpdG9yLmN1cnJlbnRRdWFydGVyIH19XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBjYXNlICgnY3VycmVudFllYXInKSB7XG4gICAgICAgICAgICAgICAgICAgIHt7IGxvY2FsZUNvbmZpZy5lZGl0b3IuY3VycmVudFllYXIgfX1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAge3sgY29udGV4dC5mb3JtYXR0ZWRWYWx1ZSB9fVxuICAgICAgICB9XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
224
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1yYW5nZS1lZGl0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL3RpbWUtcmFuZ2UvdGltZS1yYW5nZS1lZGl0b3IudHMiLCIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL3RpbWUtcmFuZ2UvdGltZS1yYW5nZS1lZGl0b3IuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLEtBQUssRUFHTCxZQUFZLEVBQ1osaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFHSCxXQUFXLEVBQ1gsU0FBUyxFQUVULGFBQWEsRUFDYixpQkFBaUIsRUFFakIsbUJBQW1CLEVBR3RCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEcsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFN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LEVBQUUsa0JBQWtCO2FBQ2xDO1lBQ0Q7Z0JBQ0ksS0FBSyxFQUFFLElBQUk7Z0JBQ1gsT0FBTyxFQUFFLGFBQWE7Z0JBQ3RCLFdBQVcsRUFBRSxrQkFBa0I7YUFDbEM7U0FDSiw2REF3Q2tFLGFBQWEsZ0VDaElwRiw2OElBaUdBLDRDRGxDUSxnQkFBZ0IsbUpBQ2hCLG1CQUFtQixnK0JBQ25CLFdBQVcseURBQ1gsZUFBZSw2REFDZixtQkFBbUIsNjZDQUNuQixrQkFBa0IsOEJBQ2xCLG1CQUFtQiw4U0FDbkIsY0FBYyxtZUFDZCxPQUFPOzs0RkFxQkYsa0JBQWtCO2tCQWpDOUIsU0FBUzsrQkFDSSx1QkFBdUIsY0FDckIsSUFBSSxXQUNQO3dCQUNMLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3dCQUNuQixXQUFXO3dCQUNYLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCxPQUFPO3FCQUNWLFFBRUs7d0JBQ0YsS0FBSyxFQUFFLHdCQUF3QjtxQkFDbEMsYUFDVTt3QkFDUDs0QkFDSSxLQUFLLEVBQUUsSUFBSTs0QkFDWCxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLG9CQUFvQjt5QkFDbEM7d0JBQ0Q7NEJBQ0ksS0FBSyxFQUFFLElBQUk7NEJBQ1gsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsb0JBQW9CO3lCQUNsQztxQkFDSixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgY29tcHV0ZWQsXG4gICAgaW5qZWN0LFxuICAgIGlucHV0LFxuICAgIE9uSW5pdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICB2aWV3Q2hpbGRyZW4sXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0Q29udHJvbCxcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBGb3JtQ29udHJvbCxcbiAgICBGb3JtR3JvdXAsXG4gICAgRm9ybUdyb3VwRGlyZWN0aXZlLFxuICAgIE5HX1ZBTElEQVRPUlMsXG4gICAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgTmdGb3JtLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgVmFsaWRhdGlvbkVycm9ycyxcbiAgICBWYWxpZGF0b3Jcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRXJyb3JTdGF0ZU1hdGNoZXIsIEticVRpbWVSYW5nZUxvY2FsZUNvbmZpZyB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9jb3JlJztcbmltcG9ydCB7IEticURhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBLYnFGaWVsZHNldCwgS2JxRmllbGRzZXRJdGVtLCBLYnFGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBLYnFJY29uIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2ljb24nO1xuaW1wb3J0IHsgS2JxUmFkaW9Nb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvcmFkaW8nO1xuaW1wb3J0IHsgS2JxVGltZXBpY2tlciwgS2JxVGltZXBpY2tlck1vZHVsZSwgVGltZUZvcm1hdHMgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvdGltZXBpY2tlcic7XG5pbXBvcnQgeyBtZXJnZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHJhbmdlVmFsaWRhdG9yIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgS2JxVGltZVJhbmdlU2VydmljZSB9IGZyb20gJy4vdGltZS1yYW5nZS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gICAgS2JxUmFuZ2VWYWx1ZSxcbiAgICBLYnFUaW1lUmFuZ2VPcHRpb25Db250ZXh0LFxuICAgIEticVRpbWVSYW5nZVJhbmdlLFxuICAgIEticVRpbWVSYW5nZVR5cGUsXG4gICAgS2JxVGltZVJhbmdlVHlwZUNvbnRleHRcbn0gZnJvbSAnLi90eXBlcyc7XG5cbmludGVyZmFjZSBGb3JtVmFsdWU8VD4ge1xuICAgIHR5cGU6IEZvcm1Db250cm9sPEticVRpbWVSYW5nZVR5cGU+O1xuICAgIGZyb21UaW1lOiBGb3JtQ29udHJvbDxUPjtcbiAgICBmcm9tRGF0ZTogRm9ybUNvbnRyb2w8VD47XG4gICAgdG9UaW1lOiBGb3JtQ29udHJvbDxUPjtcbiAgICB0b0RhdGU6IEZvcm1Db250cm9sPFQ+O1xufVxuXG5jbGFzcyBSYW5nZUVycm9yU3RhdGVNYXRjaGVyIGltcGxlbWVudHMgRXJyb3JTdGF0ZU1hdGNoZXIge1xuICAgIGlzRXJyb3JTdGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsLCBmb3JtOiBGb3JtR3JvdXBEaXJlY3RpdmUgfCBOZ0Zvcm0gfCBudWxsKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIWZvcm0/LmludmFsaWQgfHwgISFjb250cm9sPy5pbnZhbGlkO1xuICAgIH1cbn1cblxuLyoqIEBkb2NzLXByaXZhdGUgKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAna2JxLXRpbWUtcmFuZ2UtZWRpdG9yJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgS2JxRmllbGRzZXQsXG4gICAgICAgIEticUZpZWxkc2V0SXRlbSxcbiAgICAgICAgS2JxRGF0ZXBpY2tlck1vZHVsZSxcbiAgICAgICAgS2JxRm9ybUZpZWxkTW9kdWxlLFxuICAgICAgICBLYnFUaW1lcGlja2VyTW9kdWxlLFxuICAgICAgICBLYnFSYWRpb01vZHVsZSxcbiAgICAgICAgS2JxSWNvblxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RpbWUtcmFuZ2UtZWRpdG9yLmh0bWwnLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdrYnEtdGltZS1yYW5nZV9fZWRpdG9yJ1xuICAgIH0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogS2JxVGltZVJhbmdlRWRpdG9yXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBLYnFUaW1lUmFuZ2VFZGl0b3JcbiAgICAgICAgfVxuICAgIF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBLYnFUaW1lUmFuZ2VFZGl0b3I8VD4gaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yLCBPbkluaXQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdGltZVJhbmdlU2VydmljZSA9IGluamVjdChLYnFUaW1lUmFuZ2VTZXJ2aWNlKTtcblxuICAgIC8qKiBUaGUgbWF4aW11bSBzZWxlY3RhYmxlIGRhdGUuICovXG4gICAgcmVhZG9ubHkgbWF4RGF0ZSA9IGlucHV0PFQgfCBudWxsPihudWxsKTtcbiAgICAvKiogVGhlIG1pbmltdW0gc2VsZWN0YWJsZSBkYXRlLiAqL1xuICAgIHJlYWRvbmx5IG1pbkRhdGUgPSBpbnB1dDxUIHwgbnVsbD4obnVsbCk7XG4gICAgLyoqIFByZXNldCBvZiBzZWxlY3RhYmxlIHJhbmdlcyAqL1xuICAgIHJlYWRvbmx5IGF2YWlsYWJsZVRpbWVSYW5nZVR5cGVzID0gaW5wdXQ8S2JxVGltZVJhbmdlVHlwZVtdPih0aGlzLnRpbWVSYW5nZVNlcnZpY2UucHJvdmlkZWREZWZhdWx0VGltZVJhbmdlVHlwZXMpO1xuICAgIC8qKiBQcm92aWRlZCB2YWx1ZSBvZiBzZWxlY3RlZCByYW5nZSAqL1xuICAgIHJlYWRvbmx5IHJhbmdlVmFsdWUgPSBpbnB1dDxSZXF1aXJlZDxLYnFSYW5nZVZhbHVlPFQ+Pj4odGhpcy50aW1lUmFuZ2VTZXJ2aWNlLmdldERlZmF1bHRSYW5nZVZhbHVlKCkpO1xuICAgIHJlYWRvbmx5IHNob3dSYW5nZUFzRGVmYXVsdCA9IGlucHV0LnJlcXVpcmVkPGJvb2xlYW4+KCk7XG4gICAgcmVhZG9ubHkgbG9jYWxlQ29uZmlndXJhdGlvbiA9IGlucHV0LnJlcXVpcmVkPEticVRpbWVSYW5nZUxvY2FsZUNvbmZpZz4oKTtcbiAgICAvKiogQ3VzdG9taXphYmxlIG9wdGlvbiBvdXRwdXQgKi9cbiAgICByZWFkb25seSBvcHRpb25UZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPEticVRpbWVSYW5nZU9wdGlvbkNvbnRleHQ+PigpO1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNSYW5nZVZpc2libGUgPSBjb21wdXRlZChcbiAgICAgICAgKCkgPT4gdGhpcy5zaG93UmFuZ2VBc0RlZmF1bHQoKSB8fCB0aGlzLmF2YWlsYWJsZVRpbWVSYW5nZVR5cGVzKCkuaW5jbHVkZXMoJ3JhbmdlJylcbiAgICApO1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGltZVJhbmdlVHlwZXNXaXRob3V0UmFuZ2UgPSBjb21wdXRlZDxLYnFUaW1lUmFuZ2VPcHRpb25Db250ZXh0W10+KCgpID0+IHtcbiAgICAgICAgY29uc3QgbG9jYWxlQ29uZmlnID0gdGhpcy5sb2NhbGVDb25maWd1cmF0aW9uKCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXZhaWxhYmxlVGltZVJhbmdlVHlwZXMoKVxuICAgICAgICAgICAgLmZpbHRlcigodHlwZSkgPT4gdHlwZSAhPT0gJ3JhbmdlJylcbiAgICAgICAgICAgIC5tYXAoKHR5cGUpID0+ICh7XG4gICAgICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGlvblR5cGU6IHRoaXMudGltZVJhbmdlU2VydmljZS5nZXRUaW1lUmFuZ2VVbml0QnlUeXBlKHR5cGUpLFxuICAgICAgICAgICAgICAgIHVuaXRzOiB0aGlzLnRpbWVSYW5nZVNlcnZpY2UuZ2V0VGltZVJhbmdlVHlwZVVuaXRzKHR5cGUpLFxuICAgICAgICAgICAgICAgIGZvcm1hdHRlZFZhbHVlOiB0aGlzLmdldEZvcm1hdHRlZE9wdGlvbih0eXBlLCBsb2NhbGVDb25maWcpXG4gICAgICAgICAgICB9KSk7XG4gICAgfSk7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSB0aW1lcGlja2VyTGlzdCA9IHZpZXdDaGlsZHJlbjxLYnFUaW1lcGlja2VyPFQ+PihLYnFUaW1lcGlja2VyKTtcblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGZvcm06IEZvcm1Hcm91cDxGb3JtVmFsdWU8VD4+O1xuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRpbWVwaWNrZXJGb3JtYXQgPSBUaW1lRm9ybWF0cy5ISG1tc3M7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmFuZ2VTdGF0ZU1hdGNoZXIgPSBuZXcgUmFuZ2VFcnJvclN0YXRlTWF0Y2hlcigpO1xuXG4gICAgcHJpdmF0ZSBsYXN0VmFsaWRhdGlvbkVycm9yT25FbWl0OiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgY29uc3QgZGVmYXVsdFJhbmdlVmFsdWUgPSB0aGlzLnJhbmdlVmFsdWUoKTtcblxuICAgICAgICB0aGlzLmZvcm0gPSBuZXcgRm9ybUdyb3VwKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6IG5ldyBGb3JtQ29udHJvbDxLYnFUaW1lUmFuZ2VUeXBlPih0aGlzLnRpbWVSYW5nZVNlcnZpY2UuREVGQVVMVF9SQU5HRV9UWVBFLCB7XG4gICAgICAgICAgICAgICAgICAgIG5vbk51bGxhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZnJvbVRpbWU6IG5ldyBGb3JtQ29udHJvbDxUPihkZWZhdWx0UmFuZ2VWYWx1ZS5mcm9tVGltZSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KSxcbiAgICAgICAgICAgICAgICBmcm9tRGF0ZTogbmV3IEZvcm1Db250cm9sPFQ+KGRlZmF1bHRSYW5nZVZhbHVlLmZyb21EYXRlLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pLFxuICAgICAgICAgICAgICAgIHRvVGltZTogbmV3IEZvcm1Db250cm9sPFQ+KGRlZmF1bHRSYW5nZVZhbHVlLnRvVGltZSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KSxcbiAgICAgICAgICAgICAgICB0b0RhdGU6IG5ldyBGb3JtQ29udHJvbDxUPihkZWZhdWx0UmFuZ2VWYWx1ZS50b0RhdGUsIHsgbm9uTnVsbGFibGU6IHRydWUgfSlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IHZhbGlkYXRvcnM6IHJhbmdlVmFsaWRhdG9yKHRoaXMudGltZVJhbmdlU2VydmljZSkgfVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IHJhbmdlQ29udHJvbHMgPSBbXG4gICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMuZnJvbVRpbWUsXG4gICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMuZnJvbURhdGUsXG4gICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMudG9UaW1lLFxuICAgICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnRvRGF0ZVxuICAgICAgICBdO1xuXG4gICAgICAgIG1lcmdlKC4uLnJhbmdlQ29udHJvbHMubWFwKChjb250cm9sKSA9PiBjb250cm9sLnN0YXR1c0NoYW5nZXMpKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+ICh0aGlzLmxhc3RWYWxpZGF0aW9uRXJyb3JPbkVtaXQgPSB0aGlzLmNvbmNhdENvbnRyb2xWYWxpZGF0aW9uRXJyb3JzKCkpKTtcblxuICAgICAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKGZvcm1WYWx1ZSkgPT4gZm9ybVZhbHVlLnR5cGUpLFxuICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHR5cGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0Rpc2FibGVkID0gdHlwZSAhPT0gJ3JhbmdlJztcblxuICAgICAgICAgICAgICAgIHJhbmdlQ29udHJvbHMuZm9yRWFjaCgoY29udHJvbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKGZvcm1WYWx1ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSB0aGlzLm1hcFRpbWVSYW5nZShmb3JtVmFsdWUpO1xuXG4gICAgICAgICAgICBpZiAocmFuZ2UpIHRoaXMub25DaGFuZ2UocmFuZ2UpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmZvcm0uc3RhdHVzQ2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKHN0YXR1cykgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGltZXBpY2tlckxpc3QgPSB0aGlzLnRpbWVwaWNrZXJMaXN0KCk7XG5cbiAgICAgICAgICAgIGlmICh0aW1lcGlja2VyTGlzdC5hdCgwKSkge1xuICAgICAgICAgICAgICAgIHRpbWVwaWNrZXJMaXN0LmF0KDApIS5lcnJvclN0YXRlID0gc3RhdHVzID09PSAnSU5WQUxJRCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBkZWZhdWx0UmFuZ2VWYWx1ZSA9IHRoaXMucmFuZ2VWYWx1ZSgpO1xuICAgICAgICBjb25zdCBhdmFpbGFibGVUaW1lUmFuZ2VUeXBlcyA9IHRoaXMuYXZhaWxhYmxlVGltZVJhbmdlVHlwZXMoKTtcblxuICAgICAgICB0aGlzLmZvcm0uc2V0VmFsdWUoe1xuICAgICAgICAgICAgdHlwZTogKGF2YWlsYWJsZVRpbWVSYW5nZVR5cGVzLmxlbmd0aCAmJiBhdmFpbGFibGVUaW1lUmFuZ2VUeXBlc1swXSkgfHwgJ3JhbmdlJyxcbiAgICAgICAgICAgIGZyb21UaW1lOiBkZWZhdWx0UmFuZ2VWYWx1ZS5mcm9tVGltZSxcbiAgICAgICAgICAgIGZyb21EYXRlOiBkZWZhdWx0UmFuZ2VWYWx1ZS5mcm9tRGF0ZSxcbiAgICAgICAgICAgIHRvVGltZTogZGVmYXVsdFJhbmdlVmFsdWUudG9UaW1lLFxuICAgICAgICAgICAgdG9EYXRlOiBkZWZhdWx0UmFuZ2VWYWx1ZS50b0RhdGVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICB2YWxpZGF0ZSgpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uZXJyb3JzIHx8IHRoaXMubGFzdFZhbGlkYXRpb25FcnJvck9uRW1pdDtcbiAgICB9XG5cbiAgICAvKiogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3NvciAqL1xuICAgIHdyaXRlVmFsdWUodmFsdWU/OiBLYnFUaW1lUmFuZ2VSYW5nZSk6IHZvaWQge1xuICAgICAgICBpZiAoIXZhbHVlKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgY29ycmVjdGVkID0gdGhpcy50aW1lUmFuZ2VTZXJ2aWNlLmNoZWNrQW5kQ29ycmVjdFRpbWVSYW5nZVZhbHVlKFxuICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICB0aGlzLmF2YWlsYWJsZVRpbWVSYW5nZVR5cGVzKCksXG4gICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMudHlwZS5zZXRWYWx1ZShjb3JyZWN0ZWQudHlwZSk7XG5cbiAgICAgICAgaWYgKGNvcnJlY3RlZC50eXBlID09PSAncmFuZ2UnICYmIGNvcnJlY3RlZC5zdGFydERhdGVUaW1lICYmIGNvcnJlY3RlZC5lbmREYXRlVGltZSkge1xuICAgICAgICAgICAgY29uc3QgZnJvbTogVCA9IHRoaXMudGltZVJhbmdlU2VydmljZS5kYXRlQWRhcHRlci5kZXNlcmlhbGl6ZShjb3JyZWN0ZWQuc3RhcnREYXRlVGltZSk7XG4gICAgICAgICAgICBjb25zdCB0bzogVCA9IHRoaXMudGltZVJhbmdlU2VydmljZS5kYXRlQWRhcHRlci5kZXNlcmlhbGl6ZShjb3JyZWN0ZWQuZW5kRGF0ZVRpbWUpO1xuXG4gICAgICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgICAgICAgZnJvbVRpbWU6IGZyb20sXG4gICAgICAgICAgICAgICAgZnJvbURhdGU6IGZyb20sXG4gICAgICAgICAgICAgICAgdG9UaW1lOiB0byxcbiAgICAgICAgICAgICAgICB0b0RhdGU6IHRvXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgb25DaGFuZ2UgPSAoX3ZhbHVlOiBLYnFUaW1lUmFuZ2VSYW5nZSkgPT4ge307XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBvblRvdWNoID0gKCkgPT4ge307XG4gICAgLyoqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IgKi9cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IEticVRpbWVSYW5nZVJhbmdlKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG4gICAgLyoqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IgKi9cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1hcFRpbWVSYW5nZSh7IHR5cGUgfTogUGFydGlhbDxLYnFUaW1lUmFuZ2VUeXBlQ29udGV4dD4gJiBLYnFSYW5nZVZhbHVlPFQ+KTogS2JxVGltZVJhbmdlUmFuZ2UgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIXR5cGUpIHJldHVybjtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIC4uLnRoaXMudGltZVJhbmdlU2VydmljZS5jYWxjdWxhdGVUaW1lUmFuZ2UodHlwZSwge1xuICAgICAgICAgICAgICAgIC8vIHVzZSBjb250cm9sLnZhbHVlLCBzaW5jZSB2aWEgZm9ybS52YWx1ZSBjb250cm9sIHZhbHVlcyBjYW4gYmUgdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgZnJvbVRpbWU6IHRoaXMuZm9ybS5jb250cm9scy5mcm9tVGltZS52YWx1ZSxcbiAgICAgICAgICAgICAgICBmcm9tRGF0ZTogdGhpcy5mb3JtLmNvbnRyb2xzLmZyb21EYXRlLnZhbHVlLFxuICAgICAgICAgICAgICAgIHRvRGF0ZTogdGhpcy5mb3JtLmNvbnRyb2xzLnRvVGltZS52YWx1ZSxcbiAgICAgICAgICAgICAgICB0b1RpbWU6IHRoaXMuZm9ybS5jb250cm9scy50b1RpbWUudmFsdWVcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGb3JtYXR0ZWRPcHRpb24odHlwZTogS2JxVGltZVJhbmdlVHlwZSwgbG9jYWxlQ29uZmlnOiBLYnFUaW1lUmFuZ2VMb2NhbGVDb25maWcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB0cmFuc2xhdGlvblR5cGUgPSB0aGlzLnRpbWVSYW5nZVNlcnZpY2UuZ2V0VGltZVJhbmdlVW5pdEJ5VHlwZSh0eXBlKTtcblxuICAgICAgICBpZiAodHJhbnNsYXRpb25UeXBlID09PSAnb3RoZXInKSByZXR1cm4gJyc7XG5cbiAgICAgICAgY29uc3QgcmFuZ2UgPSB0aGlzLnRpbWVSYW5nZVNlcnZpY2UuY2FsY3VsYXRlVGltZVJhbmdlKHR5cGUpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnRpbWVSYW5nZVNlcnZpY2UuZGF0ZUZvcm1hdHRlci5kdXJhdGlvbihcbiAgICAgICAgICAgIHRoaXMudGltZVJhbmdlU2VydmljZS5kYXRlQWRhcHRlci5kZXNlcmlhbGl6ZShyYW5nZS5zdGFydERhdGVUaW1lISksXG4gICAgICAgICAgICB0aGlzLnRpbWVSYW5nZVNlcnZpY2UuZGF0ZUFkYXB0ZXIudG9kYXkoKSxcbiAgICAgICAgICAgIFt0cmFuc2xhdGlvblR5cGVdLFxuICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICBsb2NhbGVDb25maWcuZHVyYXRpb25UZW1wbGF0ZS5vcHRpb25cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbmNhdENvbnRyb2xWYWxpZGF0aW9uRXJyb3JzKCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICAgICAgbGV0IHJlc3VsdDogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPSB0aGlzLmZvcm0uZXJyb3JzO1xuXG4gICAgICAgIE9iamVjdC52YWx1ZXModGhpcy5mb3JtLmNvbnRyb2xzKS5mb3JFYWNoKChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcbiAgICAgICAgICAgIGlmIChjb250cm9sLmVycm9ycykge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICAgICAgICAgICAgICAuLi5jb250cm9sLmVycm9yc1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxufVxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gICAgPGticS1yYWRpby1ncm91cCBjbGFzcz1cImticS10aW1lLXJhbmdlLWVkaXRvcl9fY29udGFpbmVyXCIgW2Zvcm1Db250cm9sXT1cImZvcm0uY29udHJvbHMudHlwZVwiPlxuICAgICAgICBAbGV0IHR5cGVzID0gdGltZVJhbmdlVHlwZXNXaXRob3V0UmFuZ2UoKTtcblxuICAgICAgICBAaWYgKHR5cGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImticS10aW1lLXJhbmdlLWVkaXRvcl9fcHJlZGVmaW5lZFwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKHR5cGUgb2YgdHlwZXM7IHRyYWNrIHR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGticS1yYWRpby1idXR0b24gY2xhc3M9XCJrYnEtdGltZS1yYW5nZS1lZGl0b3JfX3ByZWRlZmluZWQtb3B0aW9uXCIgW3ZhbHVlXT1cInR5cGUudHlwZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwib3B0aW9uVGVtcGxhdGUoKSB8fCBkZWZhdWx0T3B0aW9uVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiB0eXBlIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9rYnEtcmFkaW8tYnV0dG9uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmIChpc1JhbmdlVmlzaWJsZSgpKSB7XG4gICAgICAgICAgICBAbGV0IGxvY2FsZUNvbmZpZyA9IGxvY2FsZUNvbmZpZ3VyYXRpb24oKTtcblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImticS10aW1lLXJhbmdlLWVkaXRvcl9fcmFuZ2VcIiByb2xlPVwiZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICBAaWYgKHR5cGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICA8a2JxLXJhZGlvLWJ1dHRvbiBbdmFsdWVdPVwiJ3JhbmdlJ1wiPnt7IGxvY2FsZUNvbmZpZy5lZGl0b3IucmFuZ2VMYWJlbCB9fTwva2JxLXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwia2JxLXRpbWUtcmFuZ2UtZWRpdG9yX19kYXRlLXRpbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJrYnEtdGltZS1yYW5nZS1lZGl0b3JfX2RhdGUtdGltZS1wcmVmaXhcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImxvY2FsZUNvbmZpZy5lZGl0b3IuZnJvbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbG9jYWxlQ29uZmlnLmVkaXRvci5mcm9tIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGticS1maWVsZHNldD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxrYnEtZm9ybS1maWVsZCBrYnFGaWVsZHNldEl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkga2JxLWljb249XCJrYnEtY2xvY2tfMTZcIiBrYnFQcmVmaXggW2F1dG9Db2xvcl09XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBrYnFUaW1lcGlja2VyIFtmb3JtYXRdPVwidGltZXBpY2tlckZvcm1hdFwiIFtmb3JtQ29udHJvbF09XCJmb3JtLmNvbnRyb2xzLmZyb21UaW1lXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwva2JxLWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxrYnEtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbl09XCJtaW5EYXRlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4XT1cIm1heERhdGUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtrYnFEYXRlcGlja2VyXT1cImRhdGVwaWNrZXJGcm9tXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm0uY29udHJvbHMuZnJvbURhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JTdGF0ZU1hdGNoZXJdPVwicmFuZ2VTdGF0ZU1hdGNoZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGticS1kYXRlcGlja2VyLXRvZ2dsZS1pY29uIGticVN1ZmZpeCBbZm9yXT1cImRhdGVwaWNrZXJGcm9tXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8a2JxLWRhdGVwaWNrZXIgI2RhdGVwaWNrZXJGcm9tIFttaW5EYXRlXT1cIm1pbkRhdGUoKVwiIFttYXhEYXRlXT1cIm1heERhdGUoKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2ticS1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICA8L2ticS1maWVsZHNldD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtdGltZS1yYW5nZS1lZGl0b3JfX2RhdGUtdGltZVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImticS10aW1lLXJhbmdlLWVkaXRvcl9fZGF0ZS10aW1lLXByZWZpeFwiIFthdHRyLmFyaWEtbGFiZWxdPVwibG9jYWxlQ29uZmlnLmVkaXRvci50b1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbG9jYWxlQ29uZmlnLmVkaXRvci50byB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxrYnEtZmllbGRzZXQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8a2JxLWZvcm0tZmllbGQga2JxRmllbGRzZXRJdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGticS1pY29uPVwia2JxLWNsb2NrXzE2XCIga2JxUHJlZml4IFthdXRvQ29sb3JdPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQga2JxVGltZXBpY2tlciBbZm9ybWF0XT1cInRpbWVwaWNrZXJGb3JtYXRcIiBbZm9ybUNvbnRyb2xdPVwiZm9ybS5jb250cm9scy50b1RpbWVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9rYnEtZm9ybS1maWVsZD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGticS1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWluXT1cIm1pbkRhdGUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhdPVwibWF4RGF0ZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ticURhdGVwaWNrZXJdPVwiZGF0ZXBpY2tlclRvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm0uY29udHJvbHMudG9EYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9yU3RhdGVNYXRjaGVyXT1cInJhbmdlU3RhdGVNYXRjaGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrYnEtZGF0ZXBpY2tlci10b2dnbGUtaWNvbiBrYnFTdWZmaXggW2Zvcl09XCJkYXRlcGlja2VyVG9cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrYnEtZGF0ZXBpY2tlciAjZGF0ZXBpY2tlclRvIFttaW5EYXRlXT1cIm1pbkRhdGUoKVwiIFttYXhEYXRlXT1cIm1heERhdGUoKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2ticS1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICA8L2ticS1maWVsZHNldD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgPC9rYnEtcmFkaW8tZ3JvdXA+XG48L2Zvcm0+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdE9wdGlvblRlbXBsYXRlIGxldC1jb250ZXh0PlxuICAgIEBsZXQgbG9jYWxlQ29uZmlnID0gbG9jYWxlQ29uZmlndXJhdGlvbigpO1xuICAgIEBzd2l0Y2ggKGNvbnRleHQudHJhbnNsYXRpb25UeXBlKSB7XG4gICAgICAgIEBjYXNlICgnb3RoZXInKSB7XG4gICAgICAgICAgICBAc3dpdGNoIChjb250ZXh0LnR5cGUpIHtcbiAgICAgICAgICAgICAgICBAY2FzZSAoJ2FsbFRpbWUnKSB7XG4gICAgICAgICAgICAgICAgICAgIHt7IGxvY2FsZUNvbmZpZy5lZGl0b3IuYWxsVGltZSB9fVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAY2FzZSAoJ2N1cnJlbnRRdWFydGVyJykge1xuICAgICAgICAgICAgICAgICAgICB7eyBsb2NhbGVDb25maWcuZWRpdG9yLmN1cnJlbnRRdWFydGVyIH19XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBjYXNlICgnY3VycmVudFllYXInKSB7XG4gICAgICAgICAgICAgICAgICAgIHt7IGxvY2FsZUNvbmZpZy5lZGl0b3IuY3VycmVudFllYXIgfX1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAge3sgY29udGV4dC5mb3JtYXR0ZWRWYWx1ZSB9fVxuICAgICAgICB9XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|