@libs-ui/components-datetime-picker 0.2.356-9 → 0.2.357-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +524 -134
- package/custom-ranges/calendar/calendar.component.d.ts +21 -18
- package/custom-ranges/custom-ranges.component.d.ts +5 -5
- package/esm2022/custom-ranges/calendar/calendar.component.mjs +12 -13
- package/esm2022/custom-ranges/custom-ranges.component.mjs +4 -5
- package/esm2022/interfaces/calendar-emit.interface.mjs +1 -1
- package/esm2022/interfaces/time-variables.interface.mjs +1 -1
- package/esm2022/picker.component.mjs +4 -9
- package/fesm2022/libs-ui-components-datetime-picker.mjs +18 -25
- package/fesm2022/libs-ui-components-datetime-picker.mjs.map +1 -1
- package/interfaces/calendar-emit.interface.d.ts +5 -3
- package/interfaces/time-variables.interface.d.ts +2 -2
- package/package.json +10 -10
- package/picker.component.d.ts +1 -1
|
@@ -37,7 +37,7 @@ export class LibsUiComponentsDatetimePickerCustomRangesComponent {
|
|
|
37
37
|
keepCalendarOpeningWithRange = input(undefined);
|
|
38
38
|
singleDateSelected = input(undefined, {
|
|
39
39
|
transform: (value) => {
|
|
40
|
-
if (!value
|
|
40
|
+
if (!value?.date) {
|
|
41
41
|
return;
|
|
42
42
|
}
|
|
43
43
|
let date = value.date;
|
|
@@ -229,7 +229,6 @@ export class LibsUiComponentsDatetimePickerCustomRangesComponent {
|
|
|
229
229
|
}
|
|
230
230
|
if (!this.keepCalendarOpeningWithRange() || !this.alwaysShowCalendars()) {
|
|
231
231
|
this.outSelectDateRange.emit({ quickRangeId: range.id, displayLabel: range.label, startDate: range.values?.[0], endDate: range.values?.[1] });
|
|
232
|
-
return;
|
|
233
232
|
}
|
|
234
233
|
}
|
|
235
234
|
handlerClickCancel(event) {
|
|
@@ -246,10 +245,10 @@ export class LibsUiComponentsDatetimePickerCustomRangesComponent {
|
|
|
246
245
|
this.timeouts().forEach((item) => clearTimeout(item));
|
|
247
246
|
}
|
|
248
247
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsDatetimePickerCustomRangesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
249
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsDatetimePickerCustomRangesComponent, isStandalone: true, selector: "libs_ui-components-datetime-picker-custom_ranges", inputs: { zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, classInclude: { classPropertyName: "classInclude", publicName: "classInclude", isSignal: true, isRequired: false, transformFunction: null }, extendRanges: { classPropertyName: "extendRanges", publicName: "extendRanges", isSignal: true, isRequired: false, transformFunction: null }, widthByParent: { classPropertyName: "widthByParent", publicName: "widthByParent", isSignal: true, isRequired: false, transformFunction: null }, autoApply: { classPropertyName: "autoApply", publicName: "autoApply", isSignal: true, isRequired: false, transformFunction: null }, minDate: { classPropertyName: "minDate", publicName: "minDate", isSignal: true, isRequired: false, transformFunction: null }, maxDate: { classPropertyName: "maxDate", publicName: "maxDate", isSignal: true, isRequired: false, transformFunction: null }, listYearHiddenInputSearch: { classPropertyName: "listYearHiddenInputSearch", publicName: "listYearHiddenInputSearch", isSignal: true, isRequired: false, transformFunction: null }, positionQuickRanges: { classPropertyName: "positionQuickRanges", publicName: "positionQuickRanges", isSignal: true, isRequired: false, transformFunction: null }, isSingle: { classPropertyName: "isSingle", publicName: "isSingle", isSignal: true, isRequired: false, transformFunction: null }, hasTimePicker: { classPropertyName: "hasTimePicker", publicName: "hasTimePicker", isSignal: true, isRequired: false, transformFunction: null }, flagMouse: { classPropertyName: "flagMouse", publicName: "flagMouse", isSignal: true, isRequired: false, transformFunction: null }, dateOptions: { classPropertyName: "dateOptions", publicName: "dateOptions", isSignal: true, isRequired: false, transformFunction: null }, alwaysShowCalendars: { classPropertyName: "alwaysShowCalendars", publicName: "alwaysShowCalendars", isSignal: true, isRequired: false, transformFunction: null }, startDate: { classPropertyName: "startDate", publicName: "startDate", isSignal: true, isRequired: false, transformFunction: null }, endDate: { classPropertyName: "endDate", publicName: "endDate", isSignal: true, isRequired: false, transformFunction: null }, showCustomRangeLabel: { classPropertyName: "showCustomRangeLabel", publicName: "showCustomRangeLabel", isSignal: true, isRequired: false, transformFunction: null }, keepCalendarOpeningWithRange: { classPropertyName: "keepCalendarOpeningWithRange", publicName: "keepCalendarOpeningWithRange", isSignal: true, isRequired: false, transformFunction: null }, singleDateSelected: { classPropertyName: "singleDateSelected", publicName: "singleDateSelected", isSignal: true, isRequired: false, transformFunction: null }, dateRangeSelected: { classPropertyName: "dateRangeSelected", publicName: "dateRangeSelected", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { startDate: "startDateChange", endDate: "endDateChange", outChangStageFlagMouse: "outChangStageFlagMouse", outUpdateWidth: "outUpdateWidth", outCancel: "outCancel", outSelectSingleDate: "outSelectSingleDate", outSelectDateRange: "outSelectDateRange", outClickMenuRangeCustom: "outClickMenuRangeCustom" }, ngImport: i0, template: "<div\n #pickerContainer\n class=\"libs-ui-component-custom_ranges flex rounded-[4px] bg-[#ffffff] z-[1000] overflow-hidden\"\n [class.flex-row-reverse]=\"positionQuickRanges() === 'right'\">\n @if (!isSingle()) {\n <div\n class=\"libs-ui-component-custom_ranges-ranges {{ classInclude() || '' }}\"\n [class.border-l-[#e6e8ed]]=\"positionQuickRanges() === 'right' && showCalTableInRanges()\"\n [class.border-l]=\"positionQuickRanges() === 'right' && showCalTableInRanges()\"\n [class.border-r-[#e6e8ed]]=\"positionQuickRanges() === 'left' && showCalTableInRanges()\"\n [class.border-r]=\"positionQuickRanges() === 'left' && showCalTableInRanges()\"\n [class.!min-h-[260px]]=\"showCalTableInRanges() && !isSingle()\"\n [class.!min-h-[300px]]=\"hasTimePicker() && !isSingle()\"\n [class.!w-[160px]]=\"!widthByParent()\"\n [class.!w-full]=\"widthByParent()\">\n @for (range of quickRangesArray(); track range.id) {\n <div\n class=\"flex items-center hover:bg-[var(--libs-ui-color-light-3)] cursor-pointer px-[16px] py-[8px]\"\n [class.libs-ui-selected-range]=\"range.id === chosenQuickRange() && showCustomRangeLabel()\"\n [class.bg-[var(--libs-ui-color-light-3)]]=\"range.id === chosenQuickRange() || range.id === selectedQuickRange()\"\n (click)=\"handlerClickRange($event, range)\">\n <div class=\"libs-ui-font-h5r flex text-[#333333] min-w-0 w-full\">\n <div\n LibsUiComponentsPopoverDirective\n [ignoreStopPropagationEvent]=\"true\"\n type=\"text\"\n [config]=\"{ maxWidth: 160, direction: 'top', zIndex: (zIndex() || 1000) + 1 }\"\n [innerHTML]=\"range.label\"></div>\n </div>\n <i\n class=\"text-[12px] ml-[16px]\"\n [class.libs-ui-icon-check]=\"range.id === selectedQuickRange()\"\n [class.text-[var(--libs-ui-color-default)]]=\"range.id === selectedQuickRange()\"></i>\n </div>\n }\n </div>\n }\n @if (showCalTableInRanges()) {\n <div class=\"m-[16px] w-full\">\n <libs_ui-components-datetime-picker-custom_ranges-calendar\n [isSingle]=\"isSingle()\"\n [autoApply]=\"autoApply()\"\n [zIndex]=\"zIndex()\"\n [flagMouse]=\"flagMouse()\"\n [dateOptions]=\"dateOptions()\"\n [hasTimePicker]=\"hasTimePicker()\"\n [quickRangesArray]=\"quickRangesArray()\"\n [startDate]=\"startDate()\"\n [endDate]=\"endDate()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [listYearHiddenInputSearch]=\"listYearHiddenInputSearch()\"\n [classInclude]=\"'w-full'\"\n (outCancel)=\"handlerCancel()\"\n (outPickerDate)=\"handlerPickerDate($event)\"\n (outFunctionsControl)=\"handlerFunctionsControl($event)\"\n (outChangStageFlagMouse)=\"handlerChangeFlagMouse($event)\" />\n </div>\n }\n</div>\n", styles: [".libs-ui-component-custom_ranges{position:relative;box-shadow:0 2px 4px #00000029,0 2px 8px #0000001f}.libs-ui-component-custom_ranges .libs-ui-component-custom_ranges-ranges{width:159px;flex-shrink:0}.libs-ui-component-custom_ranges .libs-ui-component-custom_ranges-ranges .libs-ui-selected-range{position:relative}.libs-ui-component-custom_ranges .libs-ui-component-custom_ranges-ranges .libs-ui-selected-range:after{content:\"\";position:absolute;right:0;top:0;bottom:0;width:2px;background-color:var(--libs-ui-color-default)!important}@media (min-width: 564px){.libs-ui-component-custom_ranges{width:auto}}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "component", type: LibsUiComponentsDatetimePickerCustomRangesCalendarComponent, selector: "libs_ui-components-datetime-picker-custom_ranges-calendar", inputs: ["quickRangesArray", "zIndex", "classInclude", "isSingle", "showDropdownsSelect", "hasTimePicker", "flagMouse", "dateOptions", "autoApply", "hasSecondPicker", "showRangeLabelOnInput", "startDate", "endDate", "minDate", "maxDate", "listYearHiddenInputSearch"], outputs: ["startDateChange", "endDateChange", "outChangStageFlagMouse", "outPickerDate", "outCancel", "outUpdateWidth", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "initEventInElementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
248
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsDatetimePickerCustomRangesComponent, isStandalone: true, selector: "libs_ui-components-datetime-picker-custom_ranges", inputs: { zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, classInclude: { classPropertyName: "classInclude", publicName: "classInclude", isSignal: true, isRequired: false, transformFunction: null }, extendRanges: { classPropertyName: "extendRanges", publicName: "extendRanges", isSignal: true, isRequired: false, transformFunction: null }, widthByParent: { classPropertyName: "widthByParent", publicName: "widthByParent", isSignal: true, isRequired: false, transformFunction: null }, autoApply: { classPropertyName: "autoApply", publicName: "autoApply", isSignal: true, isRequired: false, transformFunction: null }, minDate: { classPropertyName: "minDate", publicName: "minDate", isSignal: true, isRequired: false, transformFunction: null }, maxDate: { classPropertyName: "maxDate", publicName: "maxDate", isSignal: true, isRequired: false, transformFunction: null }, listYearHiddenInputSearch: { classPropertyName: "listYearHiddenInputSearch", publicName: "listYearHiddenInputSearch", isSignal: true, isRequired: false, transformFunction: null }, positionQuickRanges: { classPropertyName: "positionQuickRanges", publicName: "positionQuickRanges", isSignal: true, isRequired: false, transformFunction: null }, isSingle: { classPropertyName: "isSingle", publicName: "isSingle", isSignal: true, isRequired: false, transformFunction: null }, hasTimePicker: { classPropertyName: "hasTimePicker", publicName: "hasTimePicker", isSignal: true, isRequired: false, transformFunction: null }, flagMouse: { classPropertyName: "flagMouse", publicName: "flagMouse", isSignal: true, isRequired: false, transformFunction: null }, dateOptions: { classPropertyName: "dateOptions", publicName: "dateOptions", isSignal: true, isRequired: false, transformFunction: null }, alwaysShowCalendars: { classPropertyName: "alwaysShowCalendars", publicName: "alwaysShowCalendars", isSignal: true, isRequired: false, transformFunction: null }, startDate: { classPropertyName: "startDate", publicName: "startDate", isSignal: true, isRequired: false, transformFunction: null }, endDate: { classPropertyName: "endDate", publicName: "endDate", isSignal: true, isRequired: false, transformFunction: null }, showCustomRangeLabel: { classPropertyName: "showCustomRangeLabel", publicName: "showCustomRangeLabel", isSignal: true, isRequired: false, transformFunction: null }, keepCalendarOpeningWithRange: { classPropertyName: "keepCalendarOpeningWithRange", publicName: "keepCalendarOpeningWithRange", isSignal: true, isRequired: false, transformFunction: null }, singleDateSelected: { classPropertyName: "singleDateSelected", publicName: "singleDateSelected", isSignal: true, isRequired: false, transformFunction: null }, dateRangeSelected: { classPropertyName: "dateRangeSelected", publicName: "dateRangeSelected", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { startDate: "startDateChange", endDate: "endDateChange", outChangStageFlagMouse: "outChangStageFlagMouse", outUpdateWidth: "outUpdateWidth", outCancel: "outCancel", outSelectSingleDate: "outSelectSingleDate", outSelectDateRange: "outSelectDateRange", outClickMenuRangeCustom: "outClickMenuRangeCustom" }, ngImport: i0, template: "<div\n #pickerContainer\n class=\"libs-ui-component-custom_ranges flex rounded-[4px] bg-[#ffffff] z-[1000] overflow-hidden\"\n [class.flex-row-reverse]=\"positionQuickRanges() === 'right'\">\n @if (!isSingle()) {\n <div\n class=\"libs-ui-component-custom_ranges-ranges {{ classInclude() || '' }}\"\n [class.border-l-[#e6e8ed]]=\"positionQuickRanges() === 'right' && showCalTableInRanges()\"\n [class.border-l]=\"positionQuickRanges() === 'right' && showCalTableInRanges()\"\n [class.border-r-[#e6e8ed]]=\"positionQuickRanges() === 'left' && showCalTableInRanges()\"\n [class.border-r]=\"positionQuickRanges() === 'left' && showCalTableInRanges()\"\n [class.!min-h-[260px]]=\"showCalTableInRanges() && !isSingle()\"\n [class.!min-h-[300px]]=\"hasTimePicker() && !isSingle()\"\n [class.!w-[160px]]=\"!widthByParent()\"\n [class.!w-full]=\"widthByParent()\">\n @for (range of quickRangesArray(); track range.id) {\n <div\n class=\"flex items-center hover:bg-[var(--libs-ui-color-light-3)] cursor-pointer px-[16px] py-[8px]\"\n [class.libs-ui-selected-range]=\"range.id === chosenQuickRange() && showCustomRangeLabel()\"\n [class.bg-[var(--libs-ui-color-light-3)]]=\"range.id === chosenQuickRange() || range.id === selectedQuickRange()\"\n (click)=\"handlerClickRange($event, range)\"\n (keydown.enter)=\"handlerClickRange($event, range)\">\n <div class=\"libs-ui-font-h5r flex text-[#333333] min-w-0 w-full\">\n <div\n LibsUiComponentsPopoverDirective\n [ignoreStopPropagationEvent]=\"true\"\n type=\"text\"\n [config]=\"{ maxWidth: 160, direction: 'top', zIndex: (zIndex() || 1000) + 1 }\"\n [innerHTML]=\"range.label\"></div>\n </div>\n <i\n class=\"text-[12px] ml-[16px]\"\n [class.libs-ui-icon-check]=\"range.id === selectedQuickRange()\"\n [class.text-[var(--libs-ui-color-default)]]=\"range.id === selectedQuickRange()\"></i>\n </div>\n }\n </div>\n }\n @if (showCalTableInRanges()) {\n <div class=\"m-[16px] w-full\">\n <libs_ui-components-datetime-picker-custom_ranges-calendar\n [isSingle]=\"isSingle()\"\n [autoApply]=\"autoApply()\"\n [zIndex]=\"zIndex()\"\n [flagMouse]=\"flagMouse()\"\n [dateOptions]=\"dateOptions()\"\n [hasTimePicker]=\"hasTimePicker()\"\n [quickRangesArray]=\"quickRangesArray()\"\n [startDate]=\"startDate()\"\n [endDate]=\"endDate()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [listYearHiddenInputSearch]=\"listYearHiddenInputSearch()\"\n [classInclude]=\"'w-full'\"\n (outCancel)=\"handlerCancel()\"\n (outPickerDate)=\"handlerPickerDate($event)\"\n (outFunctionsControl)=\"handlerFunctionsControl($event)\"\n (outChangStageFlagMouse)=\"handlerChangeFlagMouse($event)\" />\n </div>\n }\n</div>\n", styles: [".libs-ui-component-custom_ranges{position:relative;box-shadow:0 2px 4px #00000029,0 2px 8px #0000001f}.libs-ui-component-custom_ranges .libs-ui-component-custom_ranges-ranges{width:159px;flex-shrink:0}.libs-ui-component-custom_ranges .libs-ui-component-custom_ranges-ranges .libs-ui-selected-range{position:relative}.libs-ui-component-custom_ranges .libs-ui-component-custom_ranges-ranges .libs-ui-selected-range:after{content:\"\";position:absolute;right:0;top:0;bottom:0;width:2px;background-color:var(--libs-ui-color-default)!important}@media (min-width: 564px){.libs-ui-component-custom_ranges{width:auto}}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "component", type: LibsUiComponentsDatetimePickerCustomRangesCalendarComponent, selector: "libs_ui-components-datetime-picker-custom_ranges-calendar", inputs: ["quickRangesArray", "zIndex", "classInclude", "isSingle", "showDropdownsSelect", "hasTimePicker", "flagMouse", "dateOptions", "autoApply", "hasSecondPicker", "showRangeLabelOnInput", "startDate", "endDate", "minDate", "maxDate", "listYearHiddenInputSearch"], outputs: ["startDateChange", "endDateChange", "outChangStageFlagMouse", "outPickerDate", "outCancel", "outUpdateWidth", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "initEventInElementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
250
249
|
}
|
|
251
250
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsDatetimePickerCustomRangesComponent, decorators: [{
|
|
252
251
|
type: Component,
|
|
253
|
-
args: [{ selector: 'libs_ui-components-datetime-picker-custom_ranges', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [TranslateModule, LibsUiComponentsDatetimePickerCustomRangesCalendarComponent, LibsUiComponentsPopoverComponent], template: "<div\n #pickerContainer\n class=\"libs-ui-component-custom_ranges flex rounded-[4px] bg-[#ffffff] z-[1000] overflow-hidden\"\n [class.flex-row-reverse]=\"positionQuickRanges() === 'right'\">\n @if (!isSingle()) {\n <div\n class=\"libs-ui-component-custom_ranges-ranges {{ classInclude() || '' }}\"\n [class.border-l-[#e6e8ed]]=\"positionQuickRanges() === 'right' && showCalTableInRanges()\"\n [class.border-l]=\"positionQuickRanges() === 'right' && showCalTableInRanges()\"\n [class.border-r-[#e6e8ed]]=\"positionQuickRanges() === 'left' && showCalTableInRanges()\"\n [class.border-r]=\"positionQuickRanges() === 'left' && showCalTableInRanges()\"\n [class.!min-h-[260px]]=\"showCalTableInRanges() && !isSingle()\"\n [class.!min-h-[300px]]=\"hasTimePicker() && !isSingle()\"\n [class.!w-[160px]]=\"!widthByParent()\"\n [class.!w-full]=\"widthByParent()\">\n @for (range of quickRangesArray(); track range.id) {\n <div\n class=\"flex items-center hover:bg-[var(--libs-ui-color-light-3)] cursor-pointer px-[16px] py-[8px]\"\n [class.libs-ui-selected-range]=\"range.id === chosenQuickRange() && showCustomRangeLabel()\"\n [class.bg-[var(--libs-ui-color-light-3)]]=\"range.id === chosenQuickRange() || range.id === selectedQuickRange()\"\n (click)=\"handlerClickRange($event, range)\">\n <div class=\"libs-ui-font-h5r flex text-[#333333] min-w-0 w-full\">\n <div\n LibsUiComponentsPopoverDirective\n [ignoreStopPropagationEvent]=\"true\"\n type=\"text\"\n [config]=\"{ maxWidth: 160, direction: 'top', zIndex: (zIndex() || 1000) + 1 }\"\n [innerHTML]=\"range.label\"></div>\n </div>\n <i\n class=\"text-[12px] ml-[16px]\"\n [class.libs-ui-icon-check]=\"range.id === selectedQuickRange()\"\n [class.text-[var(--libs-ui-color-default)]]=\"range.id === selectedQuickRange()\"></i>\n </div>\n }\n </div>\n }\n @if (showCalTableInRanges()) {\n <div class=\"m-[16px] w-full\">\n <libs_ui-components-datetime-picker-custom_ranges-calendar\n [isSingle]=\"isSingle()\"\n [autoApply]=\"autoApply()\"\n [zIndex]=\"zIndex()\"\n [flagMouse]=\"flagMouse()\"\n [dateOptions]=\"dateOptions()\"\n [hasTimePicker]=\"hasTimePicker()\"\n [quickRangesArray]=\"quickRangesArray()\"\n [startDate]=\"startDate()\"\n [endDate]=\"endDate()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [listYearHiddenInputSearch]=\"listYearHiddenInputSearch()\"\n [classInclude]=\"'w-full'\"\n (outCancel)=\"handlerCancel()\"\n (outPickerDate)=\"handlerPickerDate($event)\"\n (outFunctionsControl)=\"handlerFunctionsControl($event)\"\n (outChangStageFlagMouse)=\"handlerChangeFlagMouse($event)\" />\n </div>\n }\n</div>\n", styles: [".libs-ui-component-custom_ranges{position:relative;box-shadow:0 2px 4px #00000029,0 2px 8px #0000001f}.libs-ui-component-custom_ranges .libs-ui-component-custom_ranges-ranges{width:159px;flex-shrink:0}.libs-ui-component-custom_ranges .libs-ui-component-custom_ranges-ranges .libs-ui-selected-range{position:relative}.libs-ui-component-custom_ranges .libs-ui-component-custom_ranges-ranges .libs-ui-selected-range:after{content:\"\";position:absolute;right:0;top:0;bottom:0;width:2px;background-color:var(--libs-ui-color-default)!important}@media (min-width: 564px){.libs-ui-component-custom_ranges{width:auto}}\n"] }]
|
|
252
|
+
args: [{ selector: 'libs_ui-components-datetime-picker-custom_ranges', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [TranslateModule, LibsUiComponentsDatetimePickerCustomRangesCalendarComponent, LibsUiComponentsPopoverComponent], template: "<div\n #pickerContainer\n class=\"libs-ui-component-custom_ranges flex rounded-[4px] bg-[#ffffff] z-[1000] overflow-hidden\"\n [class.flex-row-reverse]=\"positionQuickRanges() === 'right'\">\n @if (!isSingle()) {\n <div\n class=\"libs-ui-component-custom_ranges-ranges {{ classInclude() || '' }}\"\n [class.border-l-[#e6e8ed]]=\"positionQuickRanges() === 'right' && showCalTableInRanges()\"\n [class.border-l]=\"positionQuickRanges() === 'right' && showCalTableInRanges()\"\n [class.border-r-[#e6e8ed]]=\"positionQuickRanges() === 'left' && showCalTableInRanges()\"\n [class.border-r]=\"positionQuickRanges() === 'left' && showCalTableInRanges()\"\n [class.!min-h-[260px]]=\"showCalTableInRanges() && !isSingle()\"\n [class.!min-h-[300px]]=\"hasTimePicker() && !isSingle()\"\n [class.!w-[160px]]=\"!widthByParent()\"\n [class.!w-full]=\"widthByParent()\">\n @for (range of quickRangesArray(); track range.id) {\n <div\n class=\"flex items-center hover:bg-[var(--libs-ui-color-light-3)] cursor-pointer px-[16px] py-[8px]\"\n [class.libs-ui-selected-range]=\"range.id === chosenQuickRange() && showCustomRangeLabel()\"\n [class.bg-[var(--libs-ui-color-light-3)]]=\"range.id === chosenQuickRange() || range.id === selectedQuickRange()\"\n (click)=\"handlerClickRange($event, range)\"\n (keydown.enter)=\"handlerClickRange($event, range)\">\n <div class=\"libs-ui-font-h5r flex text-[#333333] min-w-0 w-full\">\n <div\n LibsUiComponentsPopoverDirective\n [ignoreStopPropagationEvent]=\"true\"\n type=\"text\"\n [config]=\"{ maxWidth: 160, direction: 'top', zIndex: (zIndex() || 1000) + 1 }\"\n [innerHTML]=\"range.label\"></div>\n </div>\n <i\n class=\"text-[12px] ml-[16px]\"\n [class.libs-ui-icon-check]=\"range.id === selectedQuickRange()\"\n [class.text-[var(--libs-ui-color-default)]]=\"range.id === selectedQuickRange()\"></i>\n </div>\n }\n </div>\n }\n @if (showCalTableInRanges()) {\n <div class=\"m-[16px] w-full\">\n <libs_ui-components-datetime-picker-custom_ranges-calendar\n [isSingle]=\"isSingle()\"\n [autoApply]=\"autoApply()\"\n [zIndex]=\"zIndex()\"\n [flagMouse]=\"flagMouse()\"\n [dateOptions]=\"dateOptions()\"\n [hasTimePicker]=\"hasTimePicker()\"\n [quickRangesArray]=\"quickRangesArray()\"\n [startDate]=\"startDate()\"\n [endDate]=\"endDate()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [listYearHiddenInputSearch]=\"listYearHiddenInputSearch()\"\n [classInclude]=\"'w-full'\"\n (outCancel)=\"handlerCancel()\"\n (outPickerDate)=\"handlerPickerDate($event)\"\n (outFunctionsControl)=\"handlerFunctionsControl($event)\"\n (outChangStageFlagMouse)=\"handlerChangeFlagMouse($event)\" />\n </div>\n }\n</div>\n", styles: [".libs-ui-component-custom_ranges{position:relative;box-shadow:0 2px 4px #00000029,0 2px 8px #0000001f}.libs-ui-component-custom_ranges .libs-ui-component-custom_ranges-ranges{width:159px;flex-shrink:0}.libs-ui-component-custom_ranges .libs-ui-component-custom_ranges-ranges .libs-ui-selected-range{position:relative}.libs-ui-component-custom_ranges .libs-ui-component-custom_ranges-ranges .libs-ui-selected-range:after{content:\"\";position:absolute;right:0;top:0;bottom:0;width:2px;background-color:var(--libs-ui-color-default)!important}@media (min-width: 564px){.libs-ui-component-custom_ranges{width:auto}}\n"] }]
|
|
254
253
|
}], ctorParameters: () => [] });
|
|
255
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXJhbmdlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZGF0ZXRpbWUvcGlja2VyL3NyYy9jdXN0b20tcmFuZ2VzL2N1c3RvbS1yYW5nZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2RhdGV0aW1lL3BpY2tlci9zcmMvY3VzdG9tLXJhbmdlcy9jdXN0b20tcmFuZ2VzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0gsT0FBTyxFQUFjLGdDQUFnQyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFM0YsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUs1RixPQUFPLEVBQUUsMkRBQTJELEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFXNUcsTUFBTSxPQUFPLG1EQUFtRDtJQUM5RCxlQUFlO0lBQ0wsb0JBQW9CLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQzlDLGdCQUFnQixHQUFHLE1BQU0sQ0FBb0IsRUFBRSxDQUFDLENBQUM7SUFDakQsa0JBQWtCLEdBQUcsTUFBTSxDQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsbUNBQW1DO0lBQzVFLGdCQUFnQixHQUFHLE1BQU0sQ0FBcUIsU0FBUyxDQUFDLENBQUMsQ0FBQyw2QkFBNkI7SUFFekYsZUFBZSxHQUFH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UyxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUU5SSxPQUFPO1FBQ1QsQ0FBQztJQUNILENBQUM7SUFFUyxrQkFBa0IsQ0FBQyxLQUFZO1FBQ3ZDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRVMsc0JBQXNCLENBQUMsU0FBcUI7UUFDcEQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRVMsdUJBQXVCLENBQUMsS0FBb0M7UUFDcEUsSUFBSSxDQUFDLDRCQUE0QixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7d0dBeFJVLG1EQUFtRDs0RkFBbkQsbURBQW1ELDh3R0N0QmhFLDI1RkE0REEsNnBCRHhDWSxlQUFlLCtCQUFFLDJEQUEyRCxrZ0JBQUUsZ0NBQWdDOzs0RkFFN0csbURBQW1EO2tCQVQvRCxTQUFTOytCQUVFLGtEQUFrRCxjQUdoRCxJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyxlQUFlLEVBQUUsMkRBQTJELEVBQUUsZ0NBQWdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBlZmZlY3QsIGlucHV0LCBtb2RlbCwgT25EZXN0cm95LCBvdXRwdXQsIHNpZ25hbCwgdW50cmFja2VkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJRmxhZ01vdXNlLCBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtcG9wb3Zlcic7XG5pbXBvcnQgeyBUWVBFX09CSkVDVCB9IGZyb20gJ0BsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXMnO1xuaW1wb3J0IHsgZ2V0RGF5anMgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IERheWpzIH0gZnJvbSAnZGF5anMnO1xuaW1wb3J0IHsgZ2V0RGF0ZU9wdGlvbnNEZWZhdWx0LCBnZXREYXRlUmFuZ2VEZWZhdWx0IH0gZnJvbSAnLi4vZGVmaW5lcy9kYXRlLW9wdGlvbnMuZGVmaW5lJztcbmltcG9ydCB7IElFbWl0RGF0ZUNhbGVuZGFyLCBJRW1pdERhdGVSYW5nZSwgSUVtaXRTaW5nbGVEYXRlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jYWxlbmRhci1lbWl0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBJRGF0ZVJhbmdlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jYWxlbmRhci12YXJpYWJsZXMuaW50ZXJmYWNlJztcbmltcG9ydCB7IElDYWxlbmRhckZ1bmN0aW9uQ29udHJvbEV2ZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9mdW5jdGlvbi1jb250cm9sLmludGVyZmFjZSc7XG5pbXBvcnQgeyBMb2NhbGl6YXRpb25Db25maWcgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BpY2tlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0RhdGV0aW1lUGlja2VyQ3VzdG9tUmFuZ2VzQ2FsZW5kYXJDb21wb25lbnQgfSBmcm9tICcuL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2xpYnNfdWktY29tcG9uZW50cy1kYXRldGltZS1waWNrZXItY3VzdG9tX3JhbmdlcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jdXN0b20tcmFuZ2VzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3VzdG9tLXJhbmdlcy5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1RyYW5zbGF0ZU1vZHVsZSwgTGlic1VpQ29tcG9uZW50c0RhdGV0aW1lUGlja2VyQ3VzdG9tUmFuZ2VzQ2FsZW5kYXJDb21wb25lbnQsIExpYnNVaUNvbXBvbmVudHNQb3BvdmVyQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29tcG9uZW50c0RhdGV0aW1lUGlja2VyQ3VzdG9tUmFuZ2VzQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLyoqIFBST1BFUlRZICovXG4gIHByb3RlY3RlZCBzaG93Q2FsVGFibGVJblJhbmdlcyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByb3RlY3RlZCBxdWlja1Jhbmdlc0FycmF5ID0gc2lnbmFsPEFycmF5PElEYXRlUmFuZ2U+PihbXSk7XG4gIHByb3RlY3RlZCBzZWxlY3RlZFF1aWNrUmFuZ2UgPSBzaWduYWw8c3RyaW5nPignJyk7IC8vIHF1aWNrIHJhbmdlIMSRw6MgxJHGsOG7o2MgbMawdSB0csaw4bubYyDEkcOzXG4gIHByb3RlY3RlZCBjaG9zZW5RdWlja1JhbmdlID0gc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTsgLy8gcXVpY2sgcmFuZ2UgxJFhbmcgxJHGsOG7o2MgY2jhu41uXG5cbiAgcHJpdmF0ZSBjYWxlbmRhclNob3dpbmcgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHRpbWVvdXRzID0gc2lnbmFsPEFycmF5PG51bWJlcj4+KFtdKTtcbiAgcHJpdmF0ZSBjYWxlbmRhckZ1bmN0aW9uQ29udHJvbEV2ZW50ID0gc2lnbmFsPElDYWxlbmRhckZ1bmN0aW9uQ29udHJvbEV2ZW50IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIGNob3NlblNpbmdsZURhdGUgPSBzaWduYWw8SUVtaXRTaW5nbGVEYXRlIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIGNob3NlbkRhdGVSYW5nZSA9IHNpZ25hbDxJRW1pdERhdGVSYW5nZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAvKiogSU5QVVQgKi9cbiAgcmVhZG9ubHkgekluZGV4ID0gaW5wdXQ8bnVtYmVyLCBudW1iZXI+KDEyMDAsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/IDEyMDAgfSk7XG4gIHJlYWRvbmx5IGNsYXNzSW5jbHVkZSA9IGlucHV0PHN0cmluZz4oJycpO1xuICByZWFkb25seSBleHRlbmRSYW5nZXMgPSBpbnB1dDxBcnJheTxJRGF0ZVJhbmdlPj4oW10pO1xuICByZWFkb25seSB3aWR0aEJ5UGFyZW50ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBhdXRvQXBwbHkgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IG1pbkRhdGUgPSBpbnB1dDxEYXlqcyB8IHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgbWF4RGF0ZSA9IGlucHV0PERheWpzIHwgc3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSBsaXN0WWVhckhpZGRlbklucHV0U2VhcmNoID0gaW5wdXQ8Ym9vbGVhbiwgYm9vbGVhbiB8IHVuZGVmaW5lZD4odHJ1ZSwgeyB0cmFuc2Zvcm06ICh2YWx1ZSkgPT4gdmFsdWUgPz8gdHJ1ZSB9KTtcblxuICByZWFkb25seSBwb3NpdGlvblF1aWNrUmFuZ2VzID0gaW5wdXQ8J2xlZnQnIHwgJ3JpZ2h0JywgJ2xlZnQnIHwgJ3JpZ2h0Jz4oJ2xlZnQnLCB7IHRyYW5zZm9ybTogKHZhbHVlKSA9PiB2YWx1ZSA/PyAnbGVmdCcgfSk7XG4gIHJlYWRvbmx5IGlzU2luZ2xlID0gaW5wdXQ8Ym9vbGVhbiwgYm9vbGVhbj4oZmFsc2UsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/IGZhbHNlIH0pO1xuICByZWFkb25seSBoYXNUaW1lUGlja2VyID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIHJlYWRvbmx5IGZsYWdNb3VzZSA9IGlucHV0PElGbGFnTW91c2U+KHsgaXNNb3VzZUVudGVyOiBmYWxzZSwgaXNNb3VzZUVudGVyQ29udGVudDogZmFsc2UgfSk7XG4gIHJlYWRvbmx5IGRhdGVPcHRpb25zID0gaW5wdXQ8TG9jYWxpemF0aW9uQ29uZmlnPihnZXREYXRlT3B0aW9uc0RlZmF1bHQoKSk7XG4gIHJlYWRvbmx5IGFsd2F5c1Nob3dDYWxlbmRhcnMgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHN0YXJ0RGF0ZSA9IG1vZGVsPERheWpzIHwgdW5kZWZpbmVkPihnZXREYXlqcygpLnN0YXJ0T2YoJ2RheScpKTtcbiAgcmVhZG9ubHkgZW5kRGF0ZSA9IG1vZGVsPERheWpzIHwgdW5kZWZpbmVkPihnZXREYXlqcygpLmVuZE9mKCdkYXknKSk7XG4gIHJlYWRvbmx5IHNob3dDdXN0b21SYW5nZUxhYmVsID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkga2VlcENhbGVuZGFyT3BlbmluZ1dpdGhSYW5nZSA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgcmVhZG9ubHkgc2luZ2xlRGF0ZVNlbGVjdGVkID0gaW5wdXQ8SUVtaXRTaW5nbGVEYXRlIHwgdW5kZWZpbmVkLCBJRW1pdFNpbmdsZURhdGUgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCwge1xuICAgIHRyYW5zZm9ybTogKHZhbHVlKSA9PiB7XG4gICAgICBpZiAoIXZhbHVlIHx8ICF2YWx1ZS5kYXRlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGxldCBkYXRlID0gdmFsdWUuZGF0ZTtcblxuICAgICAgaWYgKHR5cGVvZiBkYXRlID09PSAnc3RyaW5nJykge1xuICAgICAgICBkYXRlID0gZ2V0RGF5anMoeyBkYXRlLCByZXR1cm5EYXlqc0lmQ29uZmlnRGF0ZU5vdEV4aXN0OiB0cnVlIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi52YWx1ZSxcbiAgICAgICAgZGF0ZSxcbiAgICAgIH07XG4gICAgfSxcbiAgfSk7XG4gIHJlYWRvbmx5IGRhdGVSYW5nZVNlbGVjdGVkID0gaW5wdXQ8SUVtaXREYXRlUmFuZ2UgfCB1bmRlZmluZWQsIElFbWl0RGF0ZVJhbmdlIHwgdW5kZWZpbmVkPih1bmRlZmluZWQsIHtcbiAgICB0cmFuc2Zvcm06ICh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsZXQgc3RhcnREYXRlID0gdmFsdWUuc3RhcnREYXRlO1xuICAgICAgbGV0IGVuZERhdGUgPSB2YWx1ZS5lbmREYXRlO1xuXG4gICAgICBpZiAodHlwZW9mIHN0YXJ0RGF0ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgc3RhcnREYXRlID0gZ2V0RGF5anMoeyBkYXRlOiBzdGFydERhdGUsIHJldHVybkRheWpzSWZDb25maWdEYXRlTm90RXhpc3Q6IHRydWUgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgZW5kRGF0ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgZW5kRGF0ZSA9IGdldERheWpzKHsgZGF0ZTogZW5kRGF0ZSwgcmV0dXJuRGF5anNJZkNvbmZpZ0RhdGVOb3RFeGlzdDogdHJ1ZSB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4udmFsdWUsXG4gICAgICAgIHN0YXJ0RGF0ZSxcbiAgICAgICAgZW5kRGF0ZSxcbiAgICAgIH07XG4gICAgfSxcbiAgfSk7XG5cbiAgLyoqIE9VVFBVVCAqL1xuICByZWFkb25seSBvdXRDaGFuZ1N0YWdlRmxhZ01vdXNlID0gb3V0cHV0PElGbGFnTW91c2U+KCk7XG4gIHJlYWRvbmx5IG91dFVwZGF0ZVdpZHRoID0gb3V0cHV0PG51bWJlcj4oKTtcbiAgcmVhZG9ubHkgb3V0Q2FuY2VsID0gb3V0cHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgb3V0U2VsZWN0U2luZ2xlRGF0ZSA9IG91dHB1dDxJRW1pdFNpbmdsZURhdGU+KCk7XG4gIHJlYWRvbmx5IG91dFNlbGVjdERhdGVSYW5nZSA9IG91dHB1dDxJRW1pdERhdGVSYW5nZT4oKTtcbiAgcmVhZG9ubHkgb3V0Q2xpY2tNZW51UmFuZ2VDdXN0b20gPSBvdXRwdXQ8VFlQRV9PQkpFQ1Q+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHVudHJhY2tlZCh0aGlzLm9uQWZ0ZXJWaWV3SW5pdC5iaW5kKHRoaXMpKSk7XG4gIH1cblxuICBwcml2YXRlIG9uQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuc3RhcnREYXRlKCkpIHtcbiAgICAgIHRoaXMuc3RhcnREYXRlLnNldChnZXREYXlqcygpLnN0YXJ0T2YoJ2RheScpKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmVuZERhdGUoKSkge1xuICAgICAgdGhpcy5lbmREYXRlLnNldChnZXREYXlqcygpLmVuZE9mKCdkYXknKSk7XG4gICAgfVxuICAgIGNvbnN0IGRhdGVSYW5nZVNlbGVjdGVkID0gdGhpcy5kYXRlUmFuZ2VTZWxlY3RlZCgpO1xuICAgIGNvbnN0IHNpbmdsZURhdGVTZWxlY3RlZCA9IHRoaXMuc2luZ2xlRGF0ZVNlbGVjdGVkKCk7XG4gICAgY29uc3QgY3VzdG9tUmFuZ2UgPSB7XG4gICAgICBpZDogdGhpcy5kYXRlT3B0aW9ucygpPy5jdXN0b21SYW5nZUxhYmVsIHx8ICcnLFxuICAgICAgbGFiZWw6IHRoaXMuZGF0ZU9wdGlvbnMoKT8uY3VzdG9tUmFuZ2VMYWJlbCB8fCAnJyxcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuaXNTaW5nbGUoKSkge1xuICAgICAgaWYgKHRoaXMuaGFzVGltZVBpY2tlcigpKSB7XG4gICAgICAgIGNvbnN0IG5vdyA9IGdldERheWpzKCk7XG4gICAgICAgIHRoaXMuc3RhcnREYXRlLnVwZGF0ZSgoY3VycmVudCkgPT4ge1xuICAgICAgICAgIHJldHVybiBjdXJyZW50Py5zZXQoJ2hvdXInLCBub3cuaG91cigpKS5zZXQoJ21pbnV0ZScsIG5vdy5taW51dGUoKSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmVuZERhdGUudXBkYXRlKChjdXJyZW50KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnQ/LnNldCgnaG91cicsIG5vdy5ob3VyKCkpLnNldCgnbWludXRlJywgbm93Lm1pbnV0ZSgpKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoc2luZ2xlRGF0ZVNlbGVjdGVkPy5kYXRlKSB7XG4gICAgICAgIHRoaXMuc3RhcnREYXRlLnNldChnZXREYXlqcyh7IGRhdGU6IHNpbmdsZURhdGVTZWxlY3RlZC5kYXRlIH0pKTtcbiAgICAgICAgdGhpcy5lbmREYXRlLnNldChnZXREYXlqcyh7IGRhdGU6IHNpbmdsZURhdGVTZWxlY3RlZC5kYXRlIH0pKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucmVuZGVyUmFuZ2VzKCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZGF0ZVJhbmdlU2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRRdWlja1JhbmdlLnNldChkYXRlUmFuZ2VTZWxlY3RlZC5xdWlja1JhbmdlSWQgPyBkYXRlUmFuZ2VTZWxlY3RlZC5xdWlja1JhbmdlSWQgOiBjdXN0b21SYW5nZS5pZCk7XG4gICAgICB0aGlzLmNob3NlblF1aWNrUmFuZ2Uuc2V0KGRhdGVSYW5nZVNlbGVjdGVkLnF1aWNrUmFuZ2VJZCA/PyBjdXN0b21SYW5nZS5pZCk7XG5cbiAgICAgIHRoaXMuc3RhcnREYXRlLnNldChnZXREYXlqcyh7IGRhdGU6IGRhdGVSYW5nZVNlbGVjdGVkLnN0YXJ0RGF0ZSB9KSk7XG4gICAgICB0aGlzLmVuZERhdGUuc2V0KGdldERheWpzKHsgZGF0ZTogZGF0ZVJhbmdlU2VsZWN0ZWQuZW5kRGF0ZSB9KSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmhhc1RpbWVQaWNrZXIoKSkge1xuICAgICAgdGhpcy5zZWxlY3RlZFF1aWNrUmFuZ2Uuc2V0KGN1c3RvbVJhbmdlLmlkKTtcbiAgICAgIHRoaXMuY2hvc2VuUXVpY2tSYW5nZS5zZXQoY3VzdG9tUmFuZ2UuaWQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zZWxlY3RlZFF1aWNrUmFuZ2UoKSA9PT0gdGhpcy5kYXRlT3B0aW9ucygpPy5jdXN0b21SYW5nZUxhYmVsKSB7XG4gICAgICB0aGlzLnNob3dDYWxUYWJsZUluUmFuZ2VzLnNldCh0cnVlKTtcbiAgICB9XG4gICAgdGhpcy5yZW5kZXJSYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlV2lkdGgoKSB7XG4gICAgY29uc3QgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm91dFVwZGF0ZVdpZHRoLmVtaXQoMSk7XG4gICAgfSkgYXMgdW5rbm93biBhcyBudW1iZXI7XG5cbiAgICB0aGlzLnRpbWVvdXRzLnVwZGF0ZSgoaWRzKSA9PiBbLi4uaWRzLCB0aW1lb3V0SWRdKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyUmFuZ2VzKCkge1xuICAgIGlmICh0aGlzLmlzU2luZ2xlKCkpIHtcbiAgICAgIHRoaXMuc2hvd0NhbFRhYmxlSW5SYW5nZXMuc2V0KHRydWUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHJhbmdlc0RlZmF1bHQgPSBnZXREYXRlUmFuZ2VEZWZhdWx0KCk7XG4gICAgY29uc3QgcmFuZ2VzID0gdGhpcy5kYXRlT3B0aW9ucygpPy5yYW5nZXM7XG5cbiAgICB0aGlzLnF1aWNrUmFuZ2VzQXJyYXkuc2V0KFtdKTtcblxuICAgIGZvciAoY29uc3Qga2V5IGluIHJhbmdlcykge1xuICAgICAgY29uc3QgcmFuZ2VWYWx1ZSA9IHJhbmdlc0RlZmF1bHRba2V5XTtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gZ2V0RGF5anMoeyBkYXRlOiByYW5nZVZhbHVlWzBdLCByZXR1cm5EYXlqc0lmQ29uZmlnRGF0ZU5vdEV4aXN0OiB0cnVlIH0pO1xuICAgICAgY29uc3QgZW5kID0gZ2V0RGF5anMoeyBkYXRlOiByYW5nZVZhbHVlWzFdLCByZXR1cm5EYXlqc0lmQ29uZmlnRGF0ZU5vdEV4aXN0OiB0cnVlIH0pO1xuXG4gICAgICB0aGlzLnF1aWNrUmFuZ2VzQXJyYXkudXBkYXRlKChjdXJyZW50KSA9PiB7XG4gICAgICAgIGN1cnJlbnQucHVzaCh7XG4gICAgICAgICAgaWQ6IGtleSxcbiAgICAgICAgICBsYWJlbDogcmFuZ2VzW2tleV0sXG4gICAgICAgICAgdmFsdWVzOiBbc3RhcnQsIGVuZF0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnNob3dDdXN0b21SYW5nZUxhYmVsKCkgJiYgdGhpcy5kYXRlT3B0aW9ucygpPy5jdXN0b21SYW5nZUxhYmVsKSB7XG4gICAgICB0aGlzLnF1aWNrUmFuZ2VzQXJyYXkudXBkYXRlKChjdXJyZW50KSA9PiB7XG4gICAgICAgIGN1cnJlbnQucHVzaCh7XG4gICAgICAgICAgaWQ6IHRoaXMuZGF0ZU9wdGlvbnMoKT8uY3VzdG9tUmFuZ2VMYWJlbCB8fCAnJyxcbiAgICAgICAgICBsYWJlbDogdGhpcy5kYXRlT3B0aW9ucygpPy5jdXN0b21SYW5nZUxhYmVsIHx8ICcnLFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gY3VycmVudDtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5leHRlbmRSYW5nZXMoKSkge1xuICAgICAgdGhpcy5xdWlja1Jhbmdlc0FycmF5LnVwZGF0ZSgoY3VycmVudCkgPT4ge1xuICAgICAgICBjdXJyZW50LnVuc2hpZnQoLi4udGhpcy5leHRlbmRSYW5nZXMoKSk7XG5cbiAgICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnF1aWNrUmFuZ2VzQXJyYXkoKS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc2hvd0NhbFRhYmxlSW5SYW5nZXMuc2V0KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ2FuY2VsKCkge1xuICAgIHRoaXMub3V0Q2FuY2VsLmVtaXQoJycpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJQaWNrZXJEYXRlKGV2ZW50OiBJRW1pdERhdGVDYWxlbmRhcikge1xuICAgIHRoaXMuY2hvc2VuU2luZ2xlRGF0ZS5zZXQoe1xuICAgICAgZGlzcGxheUxhYmVsOiBldmVudC5kaXNwbGF5TGFiZWwsXG4gICAgICBkYXRlOiBldmVudC5zdGFydERhdGUsXG4gICAgICB2YWx1ZXM6IGV2ZW50LmRldGFpbERhdGVQaWNrZXIuc3RhcnQoKSxcbiAgICB9KTtcbiAgICBpZiAoIXRoaXMuaXNTaW5nbGUoKSAmJiBldmVudC5zdGFydERhdGUgJiYgIWV2ZW50LmVuZERhdGUpIHtcbiAgICAgIGNvbnN0IGVuZFRpbWUgPSBldmVudC5kZXRhaWxEYXRlUGlja2VyLmVuZCgpO1xuICAgICAgZXZlbnQuZW5kRGF0ZSA9IGV2ZW50LnN0YXJ0RGF0ZVxuICAgICAgICAuY2xvbmUoKVxuICAgICAgICAuaG91cihlbmRUaW1lLmhvdXIgYXMgbnVtYmVyKVxuICAgICAgICAubWludXRlKGVuZFRpbWUubWludXRlIGFzIG51bWJlcilcbiAgICAgICAgLnNlY29uZCg1OSk7XG4gICAgfVxuICAgIHRoaXMuY2hvc2VuRGF0ZVJhbmdlLnNldCh7XG4gICAgICBxdWlja1JhbmdlSWQ6IHRoaXMuY2hvc2VuUXVpY2tSYW5nZSgpLFxuICAgICAgLi4uZXZlbnQsXG4gICAgfSk7XG4gICAgY29uc3QgY2hvc2VuU2luZ2xlRGF0ZSA9IHRoaXMuY2hvc2VuU2luZ2xlRGF0ZSgpO1xuICAgIGNvbnN0IGNob3NlbkRhdGVSYW5nZSA9IHRoaXMuY2hvc2VuRGF0ZVJhbmdlKCk7XG4gICAgaWYgKHRoaXMuaXNTaW5nbGUoKSAmJiBjaG9zZW5TaW5nbGVEYXRlKSB7XG4gICAgICB0aGlzLm91dFNlbGVjdFNpbmdsZURhdGUuZW1pdChjaG9zZW5TaW5nbGVEYXRlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIWNob3NlbkRhdGVSYW5nZSB8fCAoIWNob3NlbkRhdGVSYW5nZS5zdGFydERhdGUgJiYgIWNob3NlbkRhdGVSYW5nZS5lbmREYXRlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm91dFNlbGVjdERhdGVSYW5nZS5lbWl0KGNob3NlbkRhdGVSYW5nZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckNsaWNrUmFuZ2UoZTogRXZlbnQsIHJhbmdlOiBJRGF0ZVJhbmdlKSB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIHRoaXMuY2hvc2VuUXVpY2tSYW5nZS5zZXQocmFuZ2UuaWQpO1xuXG4gICAgaWYgKHJhbmdlLmlkID09PSB0aGlzLmRhdGVPcHRpb25zKCk/LmN1c3RvbVJhbmdlTGFiZWwpIHtcbiAgICAgIGlmICghdGhpcy5jYWxlbmRhclNob3dpbmcoKSAmJiAhdGhpcy5zaG93Q2FsVGFibGVJblJhbmdlcygpKSB7XG4gICAgICAgIHRoaXMuY2FsZW5kYXJTaG93aW5nLnNldCh0cnVlKTtcbiAgICAgICAgdGhpcy5zaG93Q2FsVGFibGVJblJhbmdlcy5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMub3V0Q2xpY2tNZW51UmFuZ2VDdXN0b20uZW1pdChyYW5nZSk7XG4gICAgICAgIHRoaXMudXBkYXRlV2lkdGgoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy51cGRhdGVXaWR0aCgpO1xuICAgIGlmICh0aGlzLmV4dGVuZFJhbmdlcygpKSB7XG4gICAgICBjb25zdCBmaW5kRXh0ZXJuYWxSYW5nZSA9IHRoaXMuZXh0ZW5kUmFuZ2VzKCkuZmluZCgoaXRlbSkgPT4gaXRlbS5sYWJlbCA9PT0gcmFuZ2UuaWQpO1xuXG4gICAgICBpZiAoZmluZEV4dGVybmFsUmFuZ2UgJiYgcmFuZ2UuaWQgPT09IGZpbmRFeHRlcm5hbFJhbmdlLmxhYmVsKSB7XG4gICAgICAgIGlmIChmaW5kRXh0ZXJuYWxSYW5nZS52YWx1ZXMpIHtcbiAgICAgICAgICB0aGlzLm91dFNlbGVjdERhdGVSYW5nZS5lbWl0KHsgcXVpY2tSYW5nZUlkOiBmaW5kRXh0ZXJuYWxSYW5nZS5pZCwgZGlzcGxheUxhYmVsOiBmaW5kRXh0ZXJuYWxSYW5nZS5sYWJlbCwgc3RhcnREYXRlOiBmaW5kRXh0ZXJuYWxSYW5nZS52YWx1ZXNbMF0sIGVuZERhdGU6IGZpbmRFeHRlcm5hbFJhbmdlLnZhbHVlc1sxXSB9KTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm91dFNlbGVjdERhdGVSYW5nZS5lbWl0KHsgcXVpY2tSYW5nZUlkOiBmaW5kRXh0ZXJuYWxSYW5nZS5pZCwgZGlzcGxheUxhYmVsOiBmaW5kRXh0ZXJuYWxSYW5nZS5sYWJlbCwgc3RhcnREYXRlOiB1bmRlZmluZWQsIGVuZERhdGU6IHVuZGVmaW5lZCB9KTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmtlZXBDYWxlbmRhck9wZW5pbmdXaXRoUmFuZ2UoKSB8fCAhdGhpcy5hbHdheXNTaG93Q2FsZW5kYXJzKCkpIHtcbiAgICAgIHRoaXMub3V0U2VsZWN0RGF0ZVJhbmdlLmVtaXQoeyBxdWlja1JhbmdlSWQ6IHJhbmdlLmlkLCBkaXNwbGF5TGFiZWw6IHJhbmdlLmxhYmVsLCBzdGFydERhdGU6IHJhbmdlLnZhbHVlcz8uWzBdLCBlbmREYXRlOiByYW5nZS52YWx1ZXM/LlsxXSB9KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ2xpY2tDYW5jZWwoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5vdXRDYW5jZWwuZW1pdCgnJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckNoYW5nZUZsYWdNb3VzZShmbGFnTW91c2U6IElGbGFnTW91c2UpIHtcbiAgICB0aGlzLm91dENoYW5nU3RhZ2VGbGFnTW91c2UuZW1pdChmbGFnTW91c2UpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJGdW5jdGlvbnNDb250cm9sKGV2ZW50OiBJQ2FsZW5kYXJGdW5jdGlvbkNvbnRyb2xFdmVudCkge1xuICAgIHRoaXMuY2FsZW5kYXJGdW5jdGlvbkNvbnRyb2xFdmVudC5zZXQoZXZlbnQpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy50aW1lb3V0cygpLmZvckVhY2goKGl0ZW0pID0+IGNsZWFyVGltZW91dChpdGVtKSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgI3BpY2tlckNvbnRhaW5lclxuICBjbGFzcz1cImxpYnMtdWktY29tcG9uZW50LWN1c3RvbV9yYW5nZXMgZmxleCByb3VuZGVkLVs0cHhdIGJnLVsjZmZmZmZmXSB6LVsxMDAwXSBvdmVyZmxvdy1oaWRkZW5cIlxuICBbY2xhc3MuZmxleC1yb3ctcmV2ZXJzZV09XCJwb3NpdGlvblF1aWNrUmFuZ2VzKCkgPT09ICdyaWdodCdcIj5cbiAgQGlmICghaXNTaW5nbGUoKSkge1xuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwibGlicy11aS1jb21wb25lbnQtY3VzdG9tX3Jhbmdlcy1yYW5nZXMge3sgY2xhc3NJbmNsdWRlKCkgfHwgJycgfX1cIlxuICAgICAgW2NsYXNzLmJvcmRlci1sLVsjZTZlOGVkXV09XCJwb3NpdGlvblF1aWNrUmFuZ2VzKCkgPT09ICdyaWdodCcgJiYgc2hvd0NhbFRhYmxlSW5SYW5nZXMoKVwiXG4gICAgICBbY2xhc3MuYm9yZGVyLWxdPVwicG9zaXRpb25RdWlja1JhbmdlcygpID09PSAncmlnaHQnICYmIHNob3dDYWxUYWJsZUluUmFuZ2VzKClcIlxuICAgICAgW2NsYXNzLmJvcmRlci1yLVsjZTZlOGVkXV09XCJwb3NpdGlvblF1aWNrUmFuZ2VzKCkgPT09ICdsZWZ0JyAmJiBzaG93Q2FsVGFibGVJblJhbmdlcygpXCJcbiAgICAgIFtjbGFzcy5ib3JkZXItcl09XCJwb3NpdGlvblF1aWNrUmFuZ2VzKCkgPT09ICdsZWZ0JyAmJiBzaG93Q2FsVGFibGVJblJhbmdlcygpXCJcbiAgICAgIFtjbGFzcy4hbWluLWgtWzI2MHB4XV09XCJzaG93Q2FsVGFibGVJblJhbmdlcygpICYmICFpc1NpbmdsZSgpXCJcbiAgICAgIFtjbGFzcy4hbWluLWgtWzMwMHB4XV09XCJoYXNUaW1lUGlja2VyKCkgJiYgIWlzU2luZ2xlKClcIlxuICAgICAgW2NsYXNzLiF3LVsxNjBweF1dPVwiIXdpZHRoQnlQYXJlbnQoKVwiXG4gICAgICBbY2xhc3MuIXctZnVsbF09XCJ3aWR0aEJ5UGFyZW50KClcIj5cbiAgICAgIEBmb3IgKHJhbmdlIG9mIHF1aWNrUmFuZ2VzQXJyYXkoKTsgdHJhY2sgcmFuZ2UuaWQpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgaG92ZXI6YmctW3ZhcigtLWxpYnMtdWktY29sb3ItbGlnaHQtMyldIGN1cnNvci1wb2ludGVyIHB4LVsxNnB4XSBweS1bOHB4XVwiXG4gICAgICAgICAgW2NsYXNzLmxpYnMtdWktc2VsZWN0ZWQtcmFuZ2VdPVwicmFuZ2UuaWQgPT09IGNob3NlblF1aWNrUmFuZ2UoKSAmJiBzaG93Q3VzdG9tUmFuZ2VMYWJlbCgpXCJcbiAgICAgICAgICBbY2xhc3MuYmctW3ZhcigtLWxpYnMtdWktY29sb3ItbGlnaHQtMyldXT1cInJhbmdlLmlkID09PSBjaG9zZW5RdWlja1JhbmdlKCkgfHwgcmFuZ2UuaWQgPT09IHNlbGVjdGVkUXVpY2tSYW5nZSgpXCJcbiAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlckNsaWNrUmFuZ2UoJGV2ZW50LCByYW5nZSlcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlicy11aS1mb250LWg1ciBmbGV4IHRleHQtWyMzMzMzMzNdIG1pbi13LTAgdy1mdWxsXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIExpYnNVaUNvbXBvbmVudHNQb3BvdmVyRGlyZWN0aXZlXG4gICAgICAgICAgICAgIFtpZ25vcmVTdG9wUHJvcGFnYXRpb25FdmVudF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBbY29uZmlnXT1cInsgbWF4V2lkdGg6IDE2MCwgZGlyZWN0aW9uOiAndG9wJywgekluZGV4OiAoekluZGV4KCkgfHwgMTAwMCkgKyAxIH1cIlxuICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cInJhbmdlLmxhYmVsXCI+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGlcbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC1bMTJweF0gbWwtWzE2cHhdXCJcbiAgICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWljb24tY2hlY2tdPVwicmFuZ2UuaWQgPT09IHNlbGVjdGVkUXVpY2tSYW5nZSgpXCJcbiAgICAgICAgICAgIFtjbGFzcy50ZXh0LVt2YXIoLS1saWJzLXVpLWNvbG9yLWRlZmF1bHQpXV09XCJyYW5nZS5pZCA9PT0gc2VsZWN0ZWRRdWlja1JhbmdlKClcIj48L2k+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG4gIEBpZiAoc2hvd0NhbFRhYmxlSW5SYW5nZXMoKSkge1xuICAgIDxkaXYgY2xhc3M9XCJtLVsxNnB4XSB3LWZ1bGxcIj5cbiAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtZGF0ZXRpbWUtcGlja2VyLWN1c3RvbV9yYW5nZXMtY2FsZW5kYXJcbiAgICAgICAgW2lzU2luZ2xlXT1cImlzU2luZ2xlKClcIlxuICAgICAgICBbYXV0b0FwcGx5XT1cImF1dG9BcHBseSgpXCJcbiAgICAgICAgW3pJbmRleF09XCJ6SW5kZXgoKVwiXG4gICAgICAgIFtmbGFnTW91c2VdPVwiZmxhZ01vdXNlKClcIlxuICAgICAgICBbZGF0ZU9wdGlvbnNdPVwiZGF0ZU9wdGlvbnMoKVwiXG4gICAgICAgIFtoYXNUaW1lUGlja2VyXT1cImhhc1RpbWVQaWNrZXIoKVwiXG4gICAgICAgIFtxdWlja1Jhbmdlc0FycmF5XT1cInF1aWNrUmFuZ2VzQXJyYXkoKVwiXG4gICAgICAgIFtzdGFydERhdGVdPVwic3RhcnREYXRlKClcIlxuICAgICAgICBbZW5kRGF0ZV09XCJlbmREYXRlKClcIlxuICAgICAgICBbbWluRGF0ZV09XCJtaW5EYXRlKClcIlxuICAgICAgICBbbWF4RGF0ZV09XCJtYXhEYXRlKClcIlxuICAgICAgICBbbGlzdFllYXJIaWRkZW5JbnB1dFNlYXJjaF09XCJsaXN0WWVhckhpZGRlbklucHV0U2VhcmNoKClcIlxuICAgICAgICBbY2xhc3NJbmNsdWRlXT1cIid3LWZ1bGwnXCJcbiAgICAgICAgKG91dENhbmNlbCk9XCJoYW5kbGVyQ2FuY2VsKClcIlxuICAgICAgICAob3V0UGlja2VyRGF0ZSk9XCJoYW5kbGVyUGlja2VyRGF0ZSgkZXZlbnQpXCJcbiAgICAgICAgKG91dEZ1bmN0aW9uc0NvbnRyb2wpPVwiaGFuZGxlckZ1bmN0aW9uc0NvbnRyb2woJGV2ZW50KVwiXG4gICAgICAgIChvdXRDaGFuZ1N0YWdlRmxhZ01vdXNlKT1cImhhbmRsZXJDaGFuZ2VGbGFnTW91c2UoJGV2ZW50KVwiIC8+XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuIl19
|
|
254
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXJhbmdlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZGF0ZXRpbWUvcGlja2VyL3NyYy9jdXN0b20tcmFuZ2VzL2N1c3RvbS1yYW5nZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2RhdGV0aW1lL3BpY2tlci9zcmMvY3VzdG9tLXJhbmdlcy9jdXN0b20tcmFuZ2VzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0gsT0FBTyxFQUFjLGdDQUFnQyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFM0YsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUs1RixPQUFPLEVBQUUsMkRBQTJELEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFXNUcsTUFBTSxPQUFPLG1EQUFtRDtJQUM5RCxlQUFlO0lBQ0wsb0JBQW9CLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQzlDLGdCQUFnQixHQUFHLE1BQU0sQ0FBb0IsRUFBRSxDQUFDLENBQUM7SUFDakQsa0JBQWtCLEdBQUcsTUFBTSxDQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsbUNBQW1DO0lBQzVFLGdCQUFnQixHQUFHLE1BQU0sQ0FBcUIsU0FBUyxDQUFDLENBQUMsQ0FBQyw2QkFBNkI7SUFFaEYsZUFBZSxHQUFH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QyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoSixDQUFDO0lBQ0gsQ0FBQztJQUVTLGtCQUFrQixDQUFDLEtBQVk7UUFDdkMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFUyxzQkFBc0IsQ0FBQyxTQUFxQjtRQUNwRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFUyx1QkFBdUIsQ0FBQyxLQUFvQztRQUNwRSxJQUFJLENBQUMsNEJBQTRCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQzt3R0F0UlUsbURBQW1EOzRGQUFuRCxtREFBbUQsOHdHQ3RCaEUsMjlGQTZEQSw2cEJEekNZLGVBQWUsK0JBQUUsMkRBQTJELGtnQkFBRSxnQ0FBZ0M7OzRGQUU3RyxtREFBbUQ7a0JBVC9ELFNBQVM7K0JBRUUsa0RBQWtELGNBR2hELElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLGVBQWUsRUFBRSwyREFBMkQsRUFBRSxnQ0FBZ0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGVmZmVjdCwgaW5wdXQsIG1vZGVsLCBPbkRlc3Ryb3ksIG91dHB1dCwgc2lnbmFsLCB1bnRyYWNrZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElGbGFnTW91c2UsIExpYnNVaUNvbXBvbmVudHNQb3BvdmVyQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1wb3BvdmVyJztcbmltcG9ydCB7IFRZUEVfT0JKRUNUIH0gZnJvbSAnQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlcyc7XG5pbXBvcnQgeyBnZXREYXlqcyB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgRGF5anMgfSBmcm9tICdkYXlqcyc7XG5pbXBvcnQgeyBnZXREYXRlT3B0aW9uc0RlZmF1bHQsIGdldERhdGVSYW5nZURlZmF1bHQgfSBmcm9tICcuLi9kZWZpbmVzL2RhdGUtb3B0aW9ucy5kZWZpbmUnO1xuaW1wb3J0IHsgSUVtaXREYXRlQ2FsZW5kYXIsIElFbWl0RGF0ZVJhbmdlLCBJRW1pdFNpbmdsZURhdGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NhbGVuZGFyLWVtaXQuaW50ZXJmYWNlJztcbmltcG9ydCB7IElEYXRlUmFuZ2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NhbGVuZGFyLXZhcmlhYmxlcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUNhbGVuZGFyRnVuY3Rpb25Db250cm9sRXZlbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2Z1bmN0aW9uLWNvbnRyb2wuaW50ZXJmYWNlJztcbmltcG9ydCB7IExvY2FsaXphdGlvbkNvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMvcGlja2VyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzRGF0ZXRpbWVQaWNrZXJDdXN0b21SYW5nZXNDYWxlbmRhckNvbXBvbmVudCB9IGZyb20gJy4vY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnbGlic191aS1jb21wb25lbnRzLWRhdGV0aW1lLXBpY2tlci1jdXN0b21fcmFuZ2VzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2N1c3RvbS1yYW5nZXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jdXN0b20tcmFuZ2VzLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbVHJhbnNsYXRlTW9kdWxlLCBMaWJzVWlDb21wb25lbnRzRGF0ZXRpbWVQaWNrZXJDdXN0b21SYW5nZXNDYWxlbmRhckNvbXBvbmVudCwgTGlic1VpQ29tcG9uZW50c1BvcG92ZXJDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlDb21wb25lbnRzRGF0ZXRpbWVQaWNrZXJDdXN0b21SYW5nZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAvKiogUFJPUEVSVFkgKi9cbiAgcHJvdGVjdGVkIHNob3dDYWxUYWJsZUluUmFuZ2VzID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJvdGVjdGVkIHF1aWNrUmFuZ2VzQXJyYXkgPSBzaWduYWw8QXJyYXk8SURhdGVSYW5nZT4+KFtdKTtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkUXVpY2tSYW5nZSA9IHNpZ25hbDxzdHJpbmc+KCcnKTsgLy8gcXVpY2sgcmFuZ2UgxJHDoyDEkcaw4bujYyBsxrB1IHRyxrDhu5tjIMSRw7NcbiAgcHJvdGVjdGVkIGNob3NlblF1aWNrUmFuZ2UgPSBzaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpOyAvLyBxdWljayByYW5nZSDEkWFuZyDEkcaw4bujYyBjaOG7jW5cblxuICBwcml2YXRlIHJlYWRvbmx5IGNhbGVuZGFyU2hvd2luZyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGltZW91dHMgPSBzaWduYWw8QXJyYXk8bnVtYmVyPj4oW10pO1xuICBwcml2YXRlIHJlYWRvbmx5IGNhbGVuZGFyRnVuY3Rpb25Db250cm9sRXZlbnQgPSBzaWduYWw8SUNhbGVuZGFyRnVuY3Rpb25Db250cm9sRXZlbnQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2hvc2VuU2luZ2xlRGF0ZSA9IHNpZ25hbDxJRW1pdFNpbmdsZURhdGUgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2hvc2VuRGF0ZVJhbmdlID0gc2lnbmFsPElFbWl0RGF0ZVJhbmdlIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIC8qKiBJTlBVVCAqL1xuICByZWFkb25seSB6SW5kZXggPSBpbnB1dDxudW1iZXIsIG51bWJlcj4oMTIwMCwgeyB0cmFuc2Zvcm06ICh2YWx1ZSkgPT4gdmFsdWUgPz8gMTIwMCB9KTtcbiAgcmVhZG9ubHkgY2xhc3NJbmNsdWRlID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHJlYWRvbmx5IGV4dGVuZFJhbmdlcyA9IGlucHV0PEFycmF5PElEYXRlUmFuZ2U+PihbXSk7XG4gIHJlYWRvbmx5IHdpZHRoQnlQYXJlbnQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGF1dG9BcHBseSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgbWluRGF0ZSA9IGlucHV0PERheWpzIHwgc3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSBtYXhEYXRlID0gaW5wdXQ8RGF5anMgfCBzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IGxpc3RZZWFySGlkZGVuSW5wdXRTZWFyY2ggPSBpbnB1dDxib29sZWFuLCBib29sZWFuIHwgdW5kZWZpbmVkPih0cnVlLCB7IHRyYW5zZm9ybTogKHZhbHVlKSA9PiB2YWx1ZSA/PyB0cnVlIH0pO1xuXG4gIHJlYWRvbmx5IHBvc2l0aW9uUXVpY2tSYW5nZXMgPSBpbnB1dDwnbGVmdCcgfCAncmlnaHQnLCAnbGVmdCcgfCAncmlnaHQnPignbGVmdCcsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/ICdsZWZ0JyB9KTtcbiAgcmVhZG9ubHkgaXNTaW5nbGUgPSBpbnB1dDxib29sZWFuLCBib29sZWFuPihmYWxzZSwgeyB0cmFuc2Zvcm06ICh2YWx1ZSkgPT4gdmFsdWUgPz8gZmFsc2UgfSk7XG4gIHJlYWRvbmx5IGhhc1RpbWVQaWNrZXIgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgcmVhZG9ubHkgZmxhZ01vdXNlID0gaW5wdXQ8SUZsYWdNb3VzZT4oeyBpc01vdXNlRW50ZXI6IGZhbHNlLCBpc01vdXNlRW50ZXJDb250ZW50OiBmYWxzZSB9KTtcbiAgcmVhZG9ubHkgZGF0ZU9wdGlvbnMgPSBpbnB1dDxMb2NhbGl6YXRpb25Db25maWc+KGdldERhdGVPcHRpb25zRGVmYXVsdCgpKTtcbiAgcmVhZG9ubHkgYWx3YXlzU2hvd0NhbGVuZGFycyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgc3RhcnREYXRlID0gbW9kZWw8RGF5anMgfCB1bmRlZmluZWQ+KGdldERheWpzKCkuc3RhcnRPZignZGF5JykpO1xuICByZWFkb25seSBlbmREYXRlID0gbW9kZWw8RGF5anMgfCB1bmRlZmluZWQ+KGdldERheWpzKCkuZW5kT2YoJ2RheScpKTtcbiAgcmVhZG9ubHkgc2hvd0N1c3RvbVJhbmdlTGFiZWwgPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBrZWVwQ2FsZW5kYXJPcGVuaW5nV2l0aFJhbmdlID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICByZWFkb25seSBzaW5nbGVEYXRlU2VsZWN0ZWQgPSBpbnB1dDxJRW1pdFNpbmdsZURhdGUgfCB1bmRlZmluZWQsIElFbWl0U2luZ2xlRGF0ZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkLCB7XG4gICAgdHJhbnNmb3JtOiAodmFsdWUpID0+IHtcbiAgICAgIGlmICghdmFsdWU/LmRhdGUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbGV0IGRhdGUgPSB2YWx1ZS5kYXRlO1xuXG4gICAgICBpZiAodHlwZW9mIGRhdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGRhdGUgPSBnZXREYXlqcyh7IGRhdGUsIHJldHVybkRheWpzSWZDb25maWdEYXRlTm90RXhpc3Q6IHRydWUgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnZhbHVlLFxuICAgICAgICBkYXRlLFxuICAgICAgfTtcbiAgICB9LFxuICB9KTtcbiAgcmVhZG9ubHkgZGF0ZVJhbmdlU2VsZWN0ZWQgPSBpbnB1dDxJRW1pdERhdGVSYW5nZSB8IHVuZGVmaW5lZCwgSUVtaXREYXRlUmFuZ2UgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCwge1xuICAgIHRyYW5zZm9ybTogKHZhbHVlKSA9PiB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGxldCBzdGFydERhdGUgPSB2YWx1ZS5zdGFydERhdGU7XG4gICAgICBsZXQgZW5kRGF0ZSA9IHZhbHVlLmVuZERhdGU7XG5cbiAgICAgIGlmICh0eXBlb2Ygc3RhcnREYXRlID09PSAnc3RyaW5nJykge1xuICAgICAgICBzdGFydERhdGUgPSBnZXREYXlqcyh7IGRhdGU6IHN0YXJ0RGF0ZSwgcmV0dXJuRGF5anNJZkNvbmZpZ0RhdGVOb3RFeGlzdDogdHJ1ZSB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBlbmREYXRlID09PSAnc3RyaW5nJykge1xuICAgICAgICBlbmREYXRlID0gZ2V0RGF5anMoeyBkYXRlOiBlbmREYXRlLCByZXR1cm5EYXlqc0lmQ29uZmlnRGF0ZU5vdEV4aXN0OiB0cnVlIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi52YWx1ZSxcbiAgICAgICAgc3RhcnREYXRlLFxuICAgICAgICBlbmREYXRlLFxuICAgICAgfTtcbiAgICB9LFxuICB9KTtcblxuICAvKiogT1VUUFVUICovXG4gIHJlYWRvbmx5IG91dENoYW5nU3RhZ2VGbGFnTW91c2UgPSBvdXRwdXQ8SUZsYWdNb3VzZT4oKTtcbiAgcmVhZG9ubHkgb3V0VXBkYXRlV2lkdGggPSBvdXRwdXQ8bnVtYmVyPigpO1xuICByZWFkb25seSBvdXRDYW5jZWwgPSBvdXRwdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBvdXRTZWxlY3RTaW5nbGVEYXRlID0gb3V0cHV0PElFbWl0U2luZ2xlRGF0ZT4oKTtcbiAgcmVhZG9ubHkgb3V0U2VsZWN0RGF0ZVJhbmdlID0gb3V0cHV0PElFbWl0RGF0ZVJhbmdlPigpO1xuICByZWFkb25seSBvdXRDbGlja01lbnVSYW5nZUN1c3RvbSA9IG91dHB1dDxUWVBFX09CSkVDVD4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoKCkgPT4gdW50cmFja2VkKHRoaXMub25BZnRlclZpZXdJbml0LmJpbmQodGhpcykpKTtcbiAgfVxuXG4gIHByaXZhdGUgb25BZnRlclZpZXdJbml0KCkge1xuICAgIGlmICghdGhpcy5zdGFydERhdGUoKSkge1xuICAgICAgdGhpcy5zdGFydERhdGUuc2V0KGdldERheWpzKCkuc3RhcnRPZignZGF5JykpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuZW5kRGF0ZSgpKSB7XG4gICAgICB0aGlzLmVuZERhdGUuc2V0KGdldERheWpzKCkuZW5kT2YoJ2RheScpKTtcbiAgICB9XG4gICAgY29uc3QgZGF0ZVJhbmdlU2VsZWN0ZWQgPSB0aGlzLmRhdGVSYW5nZVNlbGVjdGVkKCk7XG4gICAgY29uc3Qgc2luZ2xlRGF0ZVNlbGVjdGVkID0gdGhpcy5zaW5nbGVEYXRlU2VsZWN0ZWQoKTtcbiAgICBjb25zdCBjdXN0b21SYW5nZSA9IHtcbiAgICAgIGlkOiB0aGlzLmRhdGVPcHRpb25zKCk/LmN1c3RvbVJhbmdlTGFiZWwgfHwgJycsXG4gICAgICBsYWJlbDogdGhpcy5kYXRlT3B0aW9ucygpPy5jdXN0b21SYW5nZUxhYmVsIHx8ICcnLFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5pc1NpbmdsZSgpKSB7XG4gICAgICBpZiAodGhpcy5oYXNUaW1lUGlja2VyKCkpIHtcbiAgICAgICAgY29uc3Qgbm93ID0gZ2V0RGF5anMoKTtcbiAgICAgICAgdGhpcy5zdGFydERhdGUudXBkYXRlKChjdXJyZW50KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnQ/LnNldCgnaG91cicsIG5vdy5ob3VyKCkpLnNldCgnbWludXRlJywgbm93Lm1pbnV0ZSgpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZW5kRGF0ZS51cGRhdGUoKGN1cnJlbnQpID0+IHtcbiAgICAgICAgICByZXR1cm4gY3VycmVudD8uc2V0KCdob3VyJywgbm93LmhvdXIoKSkuc2V0KCdtaW51dGUnLCBub3cubWludXRlKCkpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChzaW5nbGVEYXRlU2VsZWN0ZWQ/LmRhdGUpIHtcbiAgICAgICAgdGhpcy5zdGFydERhdGUuc2V0KGdldERheWpzKHsgZGF0ZTogc2luZ2xlRGF0ZVNlbGVjdGVkLmRhdGUgfSkpO1xuICAgICAgICB0aGlzLmVuZERhdGUuc2V0KGdldERheWpzKHsgZGF0ZTogc2luZ2xlRGF0ZVNlbGVjdGVkLmRhdGUgfSkpO1xuICAgICAgfVxuICAgICAgdGhpcy5yZW5kZXJSYW5nZXMoKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChkYXRlUmFuZ2VTZWxlY3RlZCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFF1aWNrUmFuZ2Uuc2V0KGRhdGVSYW5nZVNlbGVjdGVkLnF1aWNrUmFuZ2VJZCA/IGRhdGVSYW5nZVNlbGVjdGVkLnF1aWNrUmFuZ2VJZCA6IGN1c3RvbVJhbmdlLmlkKTtcbiAgICAgIHRoaXMuY2hvc2VuUXVpY2tSYW5nZS5zZXQoZGF0ZVJhbmdlU2VsZWN0ZWQucXVpY2tSYW5nZUlkID8/IGN1c3RvbVJhbmdlLmlkKTtcblxuICAgICAgdGhpcy5zdGFydERhdGUuc2V0KGdldERheWpzKHsgZGF0ZTogZGF0ZVJhbmdlU2VsZWN0ZWQuc3RhcnREYXRlIH0pKTtcbiAgICAgIHRoaXMuZW5kRGF0ZS5zZXQoZ2V0RGF5anMoeyBkYXRlOiBkYXRlUmFuZ2VTZWxlY3RlZC5lbmREYXRlIH0pKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaGFzVGltZVBpY2tlcigpKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUXVpY2tSYW5nZS5zZXQoY3VzdG9tUmFuZ2UuaWQpO1xuICAgICAgdGhpcy5jaG9zZW5RdWlja1JhbmdlLnNldChjdXN0b21SYW5nZS5pZCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnNlbGVjdGVkUXVpY2tSYW5nZSgpID09PSB0aGlzLmRhdGVPcHRpb25zKCk/LmN1c3RvbVJhbmdlTGFiZWwpIHtcbiAgICAgIHRoaXMuc2hvd0NhbFRhYmxlSW5SYW5nZXMuc2V0KHRydWUpO1xuICAgIH1cbiAgICB0aGlzLnJlbmRlclJhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVXaWR0aCgpIHtcbiAgICBjb25zdCB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMub3V0VXBkYXRlV2lkdGguZW1pdCgxKTtcbiAgICB9KSBhcyB1bmtub3duIGFzIG51bWJlcjtcblxuICAgIHRoaXMudGltZW91dHMudXBkYXRlKChpZHMpID0+IFsuLi5pZHMsIHRpbWVvdXRJZF0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJSYW5nZXMoKSB7XG4gICAgaWYgKHRoaXMuaXNTaW5nbGUoKSkge1xuICAgICAgdGhpcy5zaG93Q2FsVGFibGVJblJhbmdlcy5zZXQodHJ1ZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcmFuZ2VzRGVmYXVsdCA9IGdldERhdGVSYW5nZURlZmF1bHQoKTtcbiAgICBjb25zdCByYW5nZXMgPSB0aGlzLmRhdGVPcHRpb25zKCk/LnJhbmdlcztcblxuICAgIHRoaXMucXVpY2tSYW5nZXNBcnJheS5zZXQoW10pO1xuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gcmFuZ2VzKSB7XG4gICAgICBjb25zdCByYW5nZVZhbHVlID0gcmFuZ2VzRGVmYXVsdFtrZXldO1xuICAgICAgY29uc3Qgc3RhcnQgPSBnZXREYXlqcyh7IGRhdGU6IHJhbmdlVmFsdWVbMF0sIHJldHVybkRheWpzSWZDb25maWdEYXRlTm90RXhpc3Q6IHRydWUgfSk7XG4gICAgICBjb25zdCBlbmQgPSBnZXREYXlqcyh7IGRhdGU6IHJhbmdlVmFsdWVbMV0sIHJldHVybkRheWpzSWZDb25maWdEYXRlTm90RXhpc3Q6IHRydWUgfSk7XG5cbiAgICAgIHRoaXMucXVpY2tSYW5nZXNBcnJheS51cGRhdGUoKGN1cnJlbnQpID0+IHtcbiAgICAgICAgY3VycmVudC5wdXNoKHtcbiAgICAgICAgICBpZDoga2V5LFxuICAgICAgICAgIGxhYmVsOiByYW5nZXNba2V5XSxcbiAgICAgICAgICB2YWx1ZXM6IFtzdGFydCwgZW5kXSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2hvd0N1c3RvbVJhbmdlTGFiZWwoKSAmJiB0aGlzLmRhdGVPcHRpb25zKCk/LmN1c3RvbVJhbmdlTGFiZWwpIHtcbiAgICAgIHRoaXMucXVpY2tSYW5nZXNBcnJheS51cGRhdGUoKGN1cnJlbnQpID0+IHtcbiAgICAgICAgY3VycmVudC5wdXNoKHtcbiAgICAgICAgICBpZDogdGhpcy5kYXRlT3B0aW9ucygpPy5jdXN0b21SYW5nZUxhYmVsIHx8ICcnLFxuICAgICAgICAgIGxhYmVsOiB0aGlzLmRhdGVPcHRpb25zKCk/LmN1c3RvbVJhbmdlTGFiZWwgfHwgJycsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmV4dGVuZFJhbmdlcygpKSB7XG4gICAgICB0aGlzLnF1aWNrUmFuZ2VzQXJyYXkudXBkYXRlKChjdXJyZW50KSA9PiB7XG4gICAgICAgIGN1cnJlbnQudW5zaGlmdCguLi50aGlzLmV4dGVuZFJhbmdlcygpKTtcblxuICAgICAgICByZXR1cm4gY3VycmVudDtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoIXRoaXMucXVpY2tSYW5nZXNBcnJheSgpLmxlbmd0aCkge1xuICAgICAgdGhpcy5zaG93Q2FsVGFibGVJblJhbmdlcy5zZXQodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJDYW5jZWwoKSB7XG4gICAgdGhpcy5vdXRDYW5jZWwuZW1pdCgnJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlclBpY2tlckRhdGUoZXZlbnQ6IElFbWl0RGF0ZUNhbGVuZGFyKSB7XG4gICAgdGhpcy5jaG9zZW5TaW5nbGVEYXRlLnNldCh7XG4gICAgICBkaXNwbGF5TGFiZWw6IGV2ZW50LmRpc3BsYXlMYWJlbCxcbiAgICAgIGRhdGU6IGV2ZW50LnN0YXJ0RGF0ZSxcbiAgICAgIHZhbHVlczogZXZlbnQuZGV0YWlsRGF0ZVBpY2tlci5zdGFydCgpLFxuICAgIH0pO1xuICAgIGlmICghdGhpcy5pc1NpbmdsZSgpICYmIGV2ZW50LnN0YXJ0RGF0ZSAmJiAhZXZlbnQuZW5kRGF0ZSkge1xuICAgICAgY29uc3QgZW5kVGltZSA9IGV2ZW50LmRldGFpbERhdGVQaWNrZXIuZW5kKCk7XG4gICAgICBldmVudC5lbmREYXRlID0gZXZlbnQuc3RhcnREYXRlXG4gICAgICAgIC5jbG9uZSgpXG4gICAgICAgIC5ob3VyKGVuZFRpbWUuaG91ciBhcyBudW1iZXIpXG4gICAgICAgIC5taW51dGUoZW5kVGltZS5taW51dGUgYXMgbnVtYmVyKVxuICAgICAgICAuc2Vjb25kKDU5KTtcbiAgICB9XG4gICAgdGhpcy5jaG9zZW5EYXRlUmFuZ2Uuc2V0KHtcbiAgICAgIHF1aWNrUmFuZ2VJZDogdGhpcy5jaG9zZW5RdWlja1JhbmdlKCksXG4gICAgICAuLi5ldmVudCxcbiAgICB9KTtcbiAgICBjb25zdCBjaG9zZW5TaW5nbGVEYXRlID0gdGhpcy5jaG9zZW5TaW5nbGVEYXRlKCk7XG4gICAgY29uc3QgY2hvc2VuRGF0ZVJhbmdlID0gdGhpcy5jaG9zZW5EYXRlUmFuZ2UoKTtcbiAgICBpZiAodGhpcy5pc1NpbmdsZSgpICYmIGNob3NlblNpbmdsZURhdGUpIHtcbiAgICAgIHRoaXMub3V0U2VsZWN0U2luZ2xlRGF0ZS5lbWl0KGNob3NlblNpbmdsZURhdGUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghY2hvc2VuRGF0ZVJhbmdlIHx8ICghY2hvc2VuRGF0ZVJhbmdlLnN0YXJ0RGF0ZSAmJiAhY2hvc2VuRGF0ZVJhbmdlLmVuZERhdGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMub3V0U2VsZWN0RGF0ZVJhbmdlLmVtaXQoY2hvc2VuRGF0ZVJhbmdlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ2xpY2tSYW5nZShlOiBFdmVudCwgcmFuZ2U6IElEYXRlUmFuZ2UpIHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgdGhpcy5jaG9zZW5RdWlja1JhbmdlLnNldChyYW5nZS5pZCk7XG5cbiAgICBpZiAocmFuZ2UuaWQgPT09IHRoaXMuZGF0ZU9wdGlvbnMoKT8uY3VzdG9tUmFuZ2VMYWJlbCkge1xuICAgICAgaWYgKCF0aGlzLmNhbGVuZGFyU2hvd2luZygpICYmICF0aGlzLnNob3dDYWxUYWJsZUluUmFuZ2VzKCkpIHtcbiAgICAgICAgdGhpcy5jYWxlbmRhclNob3dpbmcuc2V0KHRydWUpO1xuICAgICAgICB0aGlzLnNob3dDYWxUYWJsZUluUmFuZ2VzLnNldCh0cnVlKTtcbiAgICAgICAgdGhpcy5vdXRDbGlja01lbnVSYW5nZUN1c3RvbS5lbWl0KHJhbmdlKTtcbiAgICAgICAgdGhpcy51cGRhdGVXaWR0aCgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZVdpZHRoKCk7XG4gICAgaWYgKHRoaXMuZXh0ZW5kUmFuZ2VzKCkpIHtcbiAgICAgIGNvbnN0IGZpbmRFeHRlcm5hbFJhbmdlID0gdGhpcy5leHRlbmRSYW5nZXMoKS5maW5kKChpdGVtKSA9PiBpdGVtLmxhYmVsID09PSByYW5nZS5pZCk7XG5cbiAgICAgIGlmIChmaW5kRXh0ZXJuYWxSYW5nZSAmJiByYW5nZS5pZCA9PT0gZmluZEV4dGVybmFsUmFuZ2UubGFiZWwpIHtcbiAgICAgICAgaWYgKGZpbmRFeHRlcm5hbFJhbmdlLnZhbHVlcykge1xuICAgICAgICAgIHRoaXMub3V0U2VsZWN0RGF0ZVJhbmdlLmVtaXQoeyBxdWlja1JhbmdlSWQ6IGZpbmRFeHRlcm5hbFJhbmdlLmlkLCBkaXNwbGF5TGFiZWw6IGZpbmRFeHRlcm5hbFJhbmdlLmxhYmVsLCBzdGFydERhdGU6IGZpbmRFeHRlcm5hbFJhbmdlLnZhbHVlc1swXSwgZW5kRGF0ZTogZmluZEV4dGVybmFsUmFuZ2UudmFsdWVzWzFdIH0pO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3V0U2VsZWN0RGF0ZVJhbmdlLmVtaXQoeyBxdWlja1JhbmdlSWQ6IGZpbmRFeHRlcm5hbFJhbmdlLmlkLCBkaXNwbGF5TGFiZWw6IGZpbmRFeHRlcm5hbFJhbmdlLmxhYmVsLCBzdGFydERhdGU6IHVuZGVmaW5lZCwgZW5kRGF0ZTogdW5kZWZpbmVkIH0pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMua2VlcENhbGVuZGFyT3BlbmluZ1dpdGhSYW5nZSgpIHx8ICF0aGlzLmFsd2F5c1Nob3dDYWxlbmRhcnMoKSkge1xuICAgICAgdGhpcy5vdXRTZWxlY3REYXRlUmFuZ2UuZW1pdCh7IHF1aWNrUmFuZ2VJZDogcmFuZ2UuaWQsIGRpc3BsYXlMYWJlbDogcmFuZ2UubGFiZWwsIHN0YXJ0RGF0ZTogcmFuZ2UudmFsdWVzPy5bMF0sIGVuZERhdGU6IHJhbmdlLnZhbHVlcz8uWzFdIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ2xpY2tDYW5jZWwoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5vdXRDYW5jZWwuZW1pdCgnJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckNoYW5nZUZsYWdNb3VzZShmbGFnTW91c2U6IElGbGFnTW91c2UpIHtcbiAgICB0aGlzLm91dENoYW5nU3RhZ2VGbGFnTW91c2UuZW1pdChmbGFnTW91c2UpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJGdW5jdGlvbnNDb250cm9sKGV2ZW50OiBJQ2FsZW5kYXJGdW5jdGlvbkNvbnRyb2xFdmVudCkge1xuICAgIHRoaXMuY2FsZW5kYXJGdW5jdGlvbkNvbnRyb2xFdmVudC5zZXQoZXZlbnQpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy50aW1lb3V0cygpLmZvckVhY2goKGl0ZW0pID0+IGNsZWFyVGltZW91dChpdGVtKSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgI3BpY2tlckNvbnRhaW5lclxuICBjbGFzcz1cImxpYnMtdWktY29tcG9uZW50LWN1c3RvbV9yYW5nZXMgZmxleCByb3VuZGVkLVs0cHhdIGJnLVsjZmZmZmZmXSB6LVsxMDAwXSBvdmVyZmxvdy1oaWRkZW5cIlxuICBbY2xhc3MuZmxleC1yb3ctcmV2ZXJzZV09XCJwb3NpdGlvblF1aWNrUmFuZ2VzKCkgPT09ICdyaWdodCdcIj5cbiAgQGlmICghaXNTaW5nbGUoKSkge1xuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwibGlicy11aS1jb21wb25lbnQtY3VzdG9tX3Jhbmdlcy1yYW5nZXMge3sgY2xhc3NJbmNsdWRlKCkgfHwgJycgfX1cIlxuICAgICAgW2NsYXNzLmJvcmRlci1sLVsjZTZlOGVkXV09XCJwb3NpdGlvblF1aWNrUmFuZ2VzKCkgPT09ICdyaWdodCcgJiYgc2hvd0NhbFRhYmxlSW5SYW5nZXMoKVwiXG4gICAgICBbY2xhc3MuYm9yZGVyLWxdPVwicG9zaXRpb25RdWlja1JhbmdlcygpID09PSAncmlnaHQnICYmIHNob3dDYWxUYWJsZUluUmFuZ2VzKClcIlxuICAgICAgW2NsYXNzLmJvcmRlci1yLVsjZTZlOGVkXV09XCJwb3NpdGlvblF1aWNrUmFuZ2VzKCkgPT09ICdsZWZ0JyAmJiBzaG93Q2FsVGFibGVJblJhbmdlcygpXCJcbiAgICAgIFtjbGFzcy5ib3JkZXItcl09XCJwb3NpdGlvblF1aWNrUmFuZ2VzKCkgPT09ICdsZWZ0JyAmJiBzaG93Q2FsVGFibGVJblJhbmdlcygpXCJcbiAgICAgIFtjbGFzcy4hbWluLWgtWzI2MHB4XV09XCJzaG93Q2FsVGFibGVJblJhbmdlcygpICYmICFpc1NpbmdsZSgpXCJcbiAgICAgIFtjbGFzcy4hbWluLWgtWzMwMHB4XV09XCJoYXNUaW1lUGlja2VyKCkgJiYgIWlzU2luZ2xlKClcIlxuICAgICAgW2NsYXNzLiF3LVsxNjBweF1dPVwiIXdpZHRoQnlQYXJlbnQoKVwiXG4gICAgICBbY2xhc3MuIXctZnVsbF09XCJ3aWR0aEJ5UGFyZW50KClcIj5cbiAgICAgIEBmb3IgKHJhbmdlIG9mIHF1aWNrUmFuZ2VzQXJyYXkoKTsgdHJhY2sgcmFuZ2UuaWQpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgaG92ZXI6YmctW3ZhcigtLWxpYnMtdWktY29sb3ItbGlnaHQtMyldIGN1cnNvci1wb2ludGVyIHB4LVsxNnB4XSBweS1bOHB4XVwiXG4gICAgICAgICAgW2NsYXNzLmxpYnMtdWktc2VsZWN0ZWQtcmFuZ2VdPVwicmFuZ2UuaWQgPT09IGNob3NlblF1aWNrUmFuZ2UoKSAmJiBzaG93Q3VzdG9tUmFuZ2VMYWJlbCgpXCJcbiAgICAgICAgICBbY2xhc3MuYmctW3ZhcigtLWxpYnMtdWktY29sb3ItbGlnaHQtMyldXT1cInJhbmdlLmlkID09PSBjaG9zZW5RdWlja1JhbmdlKCkgfHwgcmFuZ2UuaWQgPT09IHNlbGVjdGVkUXVpY2tSYW5nZSgpXCJcbiAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlckNsaWNrUmFuZ2UoJGV2ZW50LCByYW5nZSlcIlxuICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImhhbmRsZXJDbGlja1JhbmdlKCRldmVudCwgcmFuZ2UpXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxpYnMtdWktZm9udC1oNXIgZmxleCB0ZXh0LVsjMzMzMzMzXSBtaW4tdy0wIHctZnVsbFwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckRpcmVjdGl2ZVxuICAgICAgICAgICAgICBbaWdub3JlU3RvcFByb3BhZ2F0aW9uRXZlbnRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgW2NvbmZpZ109XCJ7IG1heFdpZHRoOiAxNjAsIGRpcmVjdGlvbjogJ3RvcCcsIHpJbmRleDogKHpJbmRleCgpIHx8IDEwMDApICsgMSB9XCJcbiAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJyYW5nZS5sYWJlbFwiPjwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxpXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtWzEycHhdIG1sLVsxNnB4XVwiXG4gICAgICAgICAgICBbY2xhc3MubGlicy11aS1pY29uLWNoZWNrXT1cInJhbmdlLmlkID09PSBzZWxlY3RlZFF1aWNrUmFuZ2UoKVwiXG4gICAgICAgICAgICBbY2xhc3MudGV4dC1bdmFyKC0tbGlicy11aS1jb2xvci1kZWZhdWx0KV1dPVwicmFuZ2UuaWQgPT09IHNlbGVjdGVkUXVpY2tSYW5nZSgpXCI+PC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgfVxuICBAaWYgKHNob3dDYWxUYWJsZUluUmFuZ2VzKCkpIHtcbiAgICA8ZGl2IGNsYXNzPVwibS1bMTZweF0gdy1mdWxsXCI+XG4gICAgICA8bGlic191aS1jb21wb25lbnRzLWRhdGV0aW1lLXBpY2tlci1jdXN0b21fcmFuZ2VzLWNhbGVuZGFyXG4gICAgICAgIFtpc1NpbmdsZV09XCJpc1NpbmdsZSgpXCJcbiAgICAgICAgW2F1dG9BcHBseV09XCJhdXRvQXBwbHkoKVwiXG4gICAgICAgIFt6SW5kZXhdPVwiekluZGV4KClcIlxuICAgICAgICBbZmxhZ01vdXNlXT1cImZsYWdNb3VzZSgpXCJcbiAgICAgICAgW2RhdGVPcHRpb25zXT1cImRhdGVPcHRpb25zKClcIlxuICAgICAgICBbaGFzVGltZVBpY2tlcl09XCJoYXNUaW1lUGlja2VyKClcIlxuICAgICAgICBbcXVpY2tSYW5nZXNBcnJheV09XCJxdWlja1Jhbmdlc0FycmF5KClcIlxuICAgICAgICBbc3RhcnREYXRlXT1cInN0YXJ0RGF0ZSgpXCJcbiAgICAgICAgW2VuZERhdGVdPVwiZW5kRGF0ZSgpXCJcbiAgICAgICAgW21pbkRhdGVdPVwibWluRGF0ZSgpXCJcbiAgICAgICAgW21heERhdGVdPVwibWF4RGF0ZSgpXCJcbiAgICAgICAgW2xpc3RZZWFySGlkZGVuSW5wdXRTZWFyY2hdPVwibGlzdFllYXJIaWRkZW5JbnB1dFNlYXJjaCgpXCJcbiAgICAgICAgW2NsYXNzSW5jbHVkZV09XCIndy1mdWxsJ1wiXG4gICAgICAgIChvdXRDYW5jZWwpPVwiaGFuZGxlckNhbmNlbCgpXCJcbiAgICAgICAgKG91dFBpY2tlckRhdGUpPVwiaGFuZGxlclBpY2tlckRhdGUoJGV2ZW50KVwiXG4gICAgICAgIChvdXRGdW5jdGlvbnNDb250cm9sKT1cImhhbmRsZXJGdW5jdGlvbnNDb250cm9sKCRldmVudClcIlxuICAgICAgICAob3V0Q2hhbmdTdGFnZUZsYWdNb3VzZSk9XCJoYW5kbGVyQ2hhbmdlRmxhZ01vdXNlKCRldmVudClcIiAvPlxuICAgIDwvZGl2PlxuICB9XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItZW1pdC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZGF0ZXRpbWUvcGlja2VyL3NyYy9pbnRlcmZhY2VzL2NhbGVuZGFyLWVtaXQuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBkYXlqcyBmcm9tICdkYXlqcyc7XG5pbXBvcnQgeyBJU3BsaXRQaWNrZXJEYXRlIH0gZnJvbSAnLi9jYWxlbmRhci12YXJpYWJsZXMuaW50ZXJmYWNlJztcblxudHlwZSBUX2NhbGVuZGFyRGF0ZSA9IHN0cmluZyB8IGRheWpzLkRheWpzIHwgdW5kZWZpbmVkO1xuXG5leHBvcnQgaW50ZXJmYWNlIElFbWl0RGF0ZUNhbGVuZGFyIHtcbiAgZGlzcGxheUxhYmVsPzogc3RyaW5nO1xuICBzdGFydERhdGU6IGRheWpzLkRheWpzIHwgdW5kZWZpbmVkO1xuICBlbmREYXRlOiBkYXlqcy5EYXlqcyB8IHVuZGVmaW5lZDtcbiAgZGV0YWlsRGF0ZVBpY2tlcjogSVNwbGl0UGlja2VyRGF0ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRW1pdFNpbmdsZURhdGUge1xuICBkaXNwbGF5TGFiZWw/OiBzdHJpbmc7IC8vIGxhYmVsIGhp4buDbiB0aOG7iyBuZ2/DoGkgZGF0ZSBwaWNrZXIgZm9ybVxuICBkYXRlOiBUX2NhbGVuZGFyRGF0ZTtcbiAgdmFsdWVzPzoge1xuICAgIG1vbnRoOiBzdHJpbmcgfCBudW1iZXI7XG4gICAgeWVhcjogc3RyaW5nIHwgbnVtYmVyO1xuICAgIGRheTogc3RyaW5nIHwgbnVtYmVyO1xuICAgIGhvdXI/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgbWludXRlPzogc3RyaW5nIHwgbnVtYmVyO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElFbWl0RGF0ZVJhbmdlIHtcbiAgcXVpY2tSYW5nZUlkPzogc3RyaW5nOyAvLyBpZCBxdWljayByYW5nZVxuICBkaXNwbGF5TGFiZWw/OiBzdHJpbmc7IC8vIGxhYmVsIGhp4buDbiB0aOG7iyBuZ2/DoGkgZGF0ZSBwaWNrZXIgZm9ybVxuICBzdGFydERhdGU6IFRfY2FsZW5kYXJEYXRlO1xuICBlbmREYXRlOiBUX2NhbGVuZGFyRGF0ZTtcbn1cbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS12YXJpYWJsZXMuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2RhdGV0aW1lL3BpY2tlci9zcmMvaW50ZXJmYWNlcy90aW1lLXZhcmlhYmxlcy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBkYXlqcyBmcm9tICdkYXlqcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRpbWVwaWNrZXJWYXJpYWJsZXMge1xuICBsZWZ0OiBXcml0YWJsZVNpZ25hbDxJVGltZXBpY2tlclZhcmlhYmxlc1NpZGU+O1xuICByaWdodDogV3JpdGFibGVTaWduYWw8SVRpbWVwaWNrZXJWYXJpYWJsZXNTaWRlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVGltZXBpY2tlclZhcmlhYmxlc1NpZGUge1xuICBzZWxlY3RlZEhvdXI6IG51bWJlcjtcbiAgc2VsZWN0ZWRNaW51dGU6IG51bWJlcjtcbiAgaG91cnM/OiBBcnJheTxudW1iZXI+O1xuICBtaW51dGVzPzogQXJyYXk8bnVtYmVyPjtcbiAgbWludXRlc0xhYmVsPzogQXJyYXk8c3RyaW5nPjtcbiAgc2Vjb25kcz86IEFycmF5PG51bWJlcj47XG4gIHNlY29uZHNMYWJlbD86IEFycmF5PG51bWJlcj47XG4gIGRpc2FibGVkSG91cnM/OiBBcnJheTxudW1iZXI+O1xuICBkaXNhYmxlZE1pbnV0ZXM/OiBBcnJheTxudW1iZXI+O1xuICBkaXNhYmxlZFNlY29uZHM/OiBBcnJheTxudW1iZXI+O1xuICBzZWxlY3RlZFNlY29uZD86IG51bWJlcjtcbiAgc2VsZWN0ZWQ/OiBkYXlqcy5EYXlqcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVGltZXBpY2tlckl0ZW1WYWx1ZSB7XG4gIGxlZnRob3VyOiBXcml0YWJsZVNpZ25hbDxudW1iZXI+O1xuICBsZWZ0bWludXRlOiBXcml0YWJsZVNpZ25hbDxudW1iZXI+O1xuICByaWdodGhvdXI6IFdyaXRhYmxlU2lnbmFsPG51bWJlcj47XG4gIHJpZ2h0bWludXRlOiBXcml0YWJsZVNpZ25hbDxudW1iZXI+
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS12YXJpYWJsZXMuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2RhdGV0aW1lL3BpY2tlci9zcmMvaW50ZXJmYWNlcy90aW1lLXZhcmlhYmxlcy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBkYXlqcyBmcm9tICdkYXlqcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRpbWVwaWNrZXJWYXJpYWJsZXMge1xuICBsZWZ0OiBXcml0YWJsZVNpZ25hbDxJVGltZXBpY2tlclZhcmlhYmxlc1NpZGU+O1xuICByaWdodDogV3JpdGFibGVTaWduYWw8SVRpbWVwaWNrZXJWYXJpYWJsZXNTaWRlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVGltZXBpY2tlclZhcmlhYmxlc1NpZGUge1xuICBzZWxlY3RlZEhvdXI6IG51bWJlcjtcbiAgc2VsZWN0ZWRNaW51dGU6IG51bWJlcjtcbiAgaG91cnM/OiBBcnJheTxudW1iZXI+O1xuICBtaW51dGVzPzogQXJyYXk8bnVtYmVyPjtcbiAgbWludXRlc0xhYmVsPzogQXJyYXk8c3RyaW5nPjtcbiAgc2Vjb25kcz86IEFycmF5PG51bWJlcj47XG4gIHNlY29uZHNMYWJlbD86IEFycmF5PG51bWJlcj47XG4gIGRpc2FibGVkSG91cnM/OiBBcnJheTxudW1iZXI+O1xuICBkaXNhYmxlZE1pbnV0ZXM/OiBBcnJheTxudW1iZXI+O1xuICBkaXNhYmxlZFNlY29uZHM/OiBBcnJheTxudW1iZXI+O1xuICBzZWxlY3RlZFNlY29uZD86IG51bWJlcjtcbiAgc2VsZWN0ZWQ/OiBkYXlqcy5EYXlqcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVGltZXBpY2tlckl0ZW1WYWx1ZSB7XG4gIGxlZnRob3VyOiBXcml0YWJsZVNpZ25hbDxudW1iZXI+O1xuICBsZWZ0bWludXRlOiBXcml0YWJsZVNpZ25hbDxudW1iZXI+O1xuICByaWdodGhvdXI6IFdyaXRhYmxlU2lnbmFsPG51bWJlcj47XG4gIHJpZ2h0bWludXRlOiBXcml0YWJsZVNpZ25hbDxudW1iZXI+O1xufVxuZXhwb3J0IGludGVyZmFjZSBJQ2hlY2tUaW1lcGlja2VyU2VsZWN0ZWQge1xuICBsZWZ0bW9udGg6IGJvb2xlYW47XG4gIGxlZnR5ZWFyOiBib29sZWFuO1xuICByaWdodG1vbnRoOiBib29sZWFuO1xuICByaWdodHllYXI6IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIElTZWxlY3RlZE9sZCB7XG4gIHN0YXJ0PzogZGF5anMuRGF5anM7XG4gIGVuZD86IGRheWpzLkRheWpzO1xufVxuIl19
|