@libs-ui/components-datetime-picker 0.2.320-0 → 0.2.321-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.
|
@@ -238,10 +238,10 @@ export class LibsUiComponentsDatetimePickerComponent {
|
|
|
238
238
|
return;
|
|
239
239
|
}
|
|
240
240
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsDatetimePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
241
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsDatetimePickerComponent, isStandalone: true, selector: "libs_ui-components-datetime-picker", inputs: { dateOptions: { classPropertyName: "dateOptions", publicName: "dateOptions", isSignal: true, isRequired: false, transformFunction: null }, showCustomRangeLabel: { classPropertyName: "showCustomRangeLabel", publicName: "showCustomRangeLabel", isSignal: true, isRequired: false, transformFunction: null }, labelConfig: { classPropertyName: "labelConfig", publicName: "labelConfig", isSignal: true, isRequired: false, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, classInclude: { classPropertyName: "classInclude", publicName: "classInclude", isSignal: true, isRequired: false, transformFunction: null }, classPickerInclude: { classPropertyName: "classPickerInclude", publicName: "classPickerInclude", isSignal: true, isRequired: false, transformFunction: null }, classPickerContentInclude: { classPropertyName: "classPickerContentInclude", publicName: "classPickerContentInclude", isSignal: true, isRequired: false, transformFunction: null }, ignoreBorderQuickRange: { classPropertyName: "ignoreBorderQuickRange", publicName: "ignoreBorderQuickRange", isSignal: true, isRequired: false, transformFunction: null }, useColorModeExist: { classPropertyName: "useColorModeExist", publicName: "useColorModeExist", isSignal: true, isRequired: false, transformFunction: null }, hasTimePicker: { classPropertyName: "hasTimePicker", publicName: "hasTimePicker", isSignal: true, isRequired: false, transformFunction: null }, allowReset: { classPropertyName: "allowReset", publicName: "allowReset", isSignal: true, isRequired: false, transformFunction: null }, widthByLabel: { classPropertyName: "widthByLabel", publicName: "widthByLabel", isSignal: true, isRequired: false, transformFunction: null }, directionPopover: { classPropertyName: "directionPopover", publicName: "directionPopover", isSignal: true, isRequired: false, transformFunction: null }, defaultWidth: { classPropertyName: "defaultWidth", publicName: "defaultWidth", isSignal: true, isRequired: false, transformFunction: null }, isSingle: { classPropertyName: "isSingle", publicName: "isSingle", isSignal: true, isRequired: false, transformFunction: null }, extendRanges: { classPropertyName: "extendRanges", publicName: "extendRanges", isSignal: true, isRequired: false, transformFunction: null }, isBorderError: { classPropertyName: "isBorderError", publicName: "isBorderError", 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 }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, listYearHiddenInputSearch: { classPropertyName: "listYearHiddenInputSearch", publicName: "listYearHiddenInputSearch", isSignal: true, isRequired: false, transformFunction: null }, validRequired: { classPropertyName: "validRequired", publicName: "validRequired", isSignal: true, isRequired: false, transformFunction: null }, ignoreStopPropagationEvent: { classPropertyName: "ignoreStopPropagationEvent", publicName: "ignoreStopPropagationEvent", isSignal: true, isRequired: false, transformFunction: null }, flagMouse: { classPropertyName: "flagMouse", publicName: "flagMouse", isSignal: true, isRequired: false, transformFunction: null }, widthByParent: { classPropertyName: "widthByParent", publicName: "widthByParent", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, rangesPopoverPosition: { classPropertyName: "rangesPopoverPosition", publicName: "rangesPopoverPosition", isSignal: true, isRequired: false, transformFunction: null }, rangesPopoverPositionDistance: { classPropertyName: "rangesPopoverPositionDistance", publicName: "rangesPopoverPositionDistance", isSignal: true, isRequired: false, transformFunction: null }, isNgContent: { classPropertyName: "isNgContent", publicName: "isNgContent", isSignal: true, isRequired: false, transformFunction: null }, classIncludeCustomRanges: { classPropertyName: "classIncludeCustomRanges", publicName: "classIncludeCustomRanges", isSignal: true, isRequired: false, transformFunction: null }, autoApply: { classPropertyName: "autoApply", publicName: "autoApply", isSignal: true, isRequired: false, transformFunction: null }, positionQuickRanges: { classPropertyName: "positionQuickRanges", publicName: "positionQuickRanges", isSignal: true, isRequired: false, transformFunction: null }, trackDateRageUpdateLabel: { classPropertyName: "trackDateRageUpdateLabel", publicName: "trackDateRageUpdateLabel", 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: { flagMouse: "flagMouseChange", singleDateSelected: "singleDateSelectedChange", dateRangeSelected: "dateRangeSelectedChange", outChangStageFlagMouse: "outChangStageFlagMouse", outReset: "outReset", outSelectSingleDate: "outSelectSingleDate", outSelectDateRange: "outSelectDateRange", outFunctionsControl: "outFunctionsControl" }, ngImport: i0, template: "<div class=\"libs-ui-date-picker {{ classInclude() }}\">\n @if (labelConfig(); as labelConfig) {\n <libs_ui-components-label\n [classInclude]=\"labelConfig.classInclude\"\n [labelLeft]=\"labelConfig.labelLeft\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [required]=\"labelConfig.required\"\n [description]=\"labelConfig.description\"\n [descriptionClass]=\"labelConfig.descriptionClass\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [buttonsRight]=\"labelConfig.buttonsRight\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft || disable()\"\n [disableButtonsRight]=\"labelConfig.disableButtonsRight || disable()\"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleDisable]=\"labelConfig.toggleDisable || disable()\"\n [popover]=\"labelConfig.popover\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [limitLength]=\"labelConfig.limitLength\"\n [buttonsDescription]=\"labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"labelConfig.disableButtonsDescription || disable()\"\n [buttonsDescriptionContainerClass]=\"labelConfig.buttonsDescriptionContainerClass\"\n [count]=\"labelConfig.count\" />\n }\n <div class=\"flex w-full\">\n <libs_ui-components-popover\n [class]=\"classPickerInclude()\"\n [ignoreShowPopover]=\"disable() || readonly()\"\n [mode]=\"'click'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [ignoreStopPropagationEvent]=\"ignoreStopPropagationEvent()\"\n [flagMouse]=\"flagMouse()\"\n [config]=\"{\n animationConfig: {},\n maxWidth: 770,\n maxHeight: 425,\n directionDistance: 2,\n template: customRangesRef,\n widthByParent: widthByParent(),\n whiteTheme: true,\n ignoreArrow: true,\n zIndex: zIndex(),\n classInclude: 'rounded-[4px] ',\n direction: directionPopover(),\n position: { mode: rangesPopoverPosition(), distance: rangesPopoverPositionDistance() },\n }\"\n (outChangStageFlagMouse)=\"handlerChangStagePopoverFlagMouse($event)\"\n (outFunctionsControl)=\"handlerFunctionControl($event)\"\n (outEvent)=\"handlerPopoverEvent($event)\">\n @if (!isNgContent()) {\n <div\n #containerRef\n class=\"flex items-center px-[12px] h-[32px] rounded-[4px] bg-[#ffffff] cursor-pointer libs-ui-font-h5r {{ classPickerContentInclude() }}\"\n [class.libs-ui-disable]=\"disable()\"\n [class.libs-ui-disable-background]=\"disable()\"\n [class.!border-none]=\"ignoreBorderQuickRange()\"\n [class.libs-ui-border-general]=\"!singleError().message && !ignoreBorderQuickRange()\"\n [class.libs-ui-border-error-general]=\"(singleError().message || isBorderError()) && !ignoreBorderQuickRange()\"\n [class.min-w-[284px]]=\"!chosenDateFromRanges().selectedLabel && !isSingle() && hasTimePicker()\"\n [class.!border]=\"showRangesPopup() && !ignoreBorderQuickRange() && !readonly()\"\n [class.!border-[#4e8cf7]]=\"showRangesPopup() && !ignoreBorderQuickRange() && !readonly()\"\n [class.libs-ui-readonly]=\"readonly()\"\n [class.libs-ui-readonly-background]=\"readonly()\"\n [style.width.px]=\"width()\"\n (click)=\"handlerSelectRanges($event)\">\n <div class=\"libs-ui-icon-calendar text-[#9ca2ad] text-[16px]\"></div>\n <div\n class=\"ml-[8px] libs-ui-date-picker-label\"\n [class.!text-[#071631]]=\"!disable()\"\n [class.!text-[#9ca2ad]]=\"disable()\">\n @if (!chosenDateFromRanges().selectedLabel) {\n @if (!isSingle()) {\n @if (!placeholder()) {\n <span class=\"text-[#9ca2ad]\">\n dd/mm/yyyy\n @if (hasTimePicker()) {\n <span> hh:mm</span>\n }\n - dd/mm/yyyy\n @if (hasTimePicker()) {\n <span> hh:mm</span>\n }\n </span>\n } @else {\n <span class=\"text-[#9ca2ad]\">{{ placeholder() || ' ' | translate }}</span>\n }\n }\n @if (isSingle()) {\n @if (!placeholder()) {\n <span class=\"text-[#9ca2ad]\">\n dd/mm/yyyy\n @if (hasTimePicker()) {\n <span> hh:mm</span>\n }\n </span>\n } @else {\n <span class=\"text-[#9ca2ad]\">{{ placeholder() || ' ' | translate }}</span>\n }\n }\n }\n @if (chosenDateFromRanges().selectedLabel && !isSingle()) {\n {{ displayRangeTitle() }}\n }\n @if (chosenDateFromRanges().selectedLabel && isSingle()) {\n <span [class.text-[#29c7cc]]=\"useColorModeExist() || false\">\n {{ chosenDateFromRanges().selectedLabel }}\n </span>\n }\n </div>\n @if (chosenDateFromRanges().selectedLabel && allowReset() && !disable() && !readonly()) {\n <div class=\"pl-[12px] ml-auto h-full flex items-center\">\n <i\n class=\"libs-ui-icon-close-circle-solid text-[16px] text-[#cdd0d6]\"\n (click)=\"handlerReset($event)\"></i>\n </div>\n }\n </div>\n }\n @if (isNgContent()) {\n <div (click)=\"handlerSelectRanges($event)\">\n <ng-content></ng-content>\n </div>\n }\n </libs_ui-components-popover>\n </div>\n @if (singleError().message && !validRequired()?.ignoreMessage) {\n <div\n class=\"mt-[8px] text-[#ee2d41] libs-ui-font-h7r libs-ui-text-error\"\n [innerHTML]=\"singleError().message || ERROR_MESSAGE_EMPTY_VALID | translate: validRequired()?.interpolateParams\"></div>\n }\n</div>\n\n<ng-template #customRangesRef>\n <libs_ui-components-datetime-picker-custom_ranges\n [zIndex]=\"zIndex()\"\n [classInclude]=\"classIncludeCustomRanges()\"\n [widthByParent]=\"widthByParent()\"\n [dateOptions]=\"dateOptions()\"\n [positionQuickRanges]=\"positionQuickRanges()\"\n [showCustomRangeLabel]=\"showCustomRangeLabel()\"\n [autoApply]=\"autoApply()\"\n [isSingle]=\"isSingle()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [listYearHiddenInputSearch]=\"listYearHiddenInputSearch()\"\n [singleDateSelected]=\"singleDateSelected()\"\n [dateRangeSelected]=\"dateRangeSelected()\"\n [extendRanges]=\"extendRanges()\"\n [hasTimePicker]=\"hasTimePicker()\"\n (outUpdateWidth)=\"handlerUpdateWidth()\"\n (outCancel)=\"handlerCancel()\"\n (outSelectSingleDate)=\"handlerPickerSingleDate($event)\"\n (outSelectDateRange)=\"handlerPickerDateRange($event)\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"\n (outClickMenuRangeCustom)=\"handlerUpdateWidth()\" />\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: LibsUiComponentsLabelComponent, selector: "libs_ui-components-label", inputs: ["iconPopoverClass", "classInclude", "labelLeft", "labelLeftClass", "labelLeftBehindToggleButton", "popover", "required", "buttonsLeft", "disableButtonsLeft", "buttonsRight", "disableButtonsRight", "labelRight", "labelRightClass", "labelRightRequired", "hasToggle", "toggleSize", "toggleActive", "toggleDisable", "description", "descriptionClass", "buttonsDescription", "disableButtonsDescription", "buttonsDescriptionContainerClass", "onlyShowCount", "zIndexPopover", "timerDestroyPopover", "count", "limitLength"], outputs: ["outClickButton", "outSwitchEvent", "outLabelRightClick", "outLabelLeftClick"] }, { 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"] }, { kind: "component", type: LibsUiComponentsDatetimePickerCustomRangesComponent, selector: "libs_ui-components-datetime-picker-custom_ranges", inputs: ["zIndex", "classInclude", "extendRanges", "widthByParent", "autoApply", "minDate", "maxDate", "listYearHiddenInputSearch", "positionQuickRanges", "isSingle", "hasTimePicker", "flagMouse", "dateOptions", "alwaysShowCalendars", "startDate", "endDate", "showCustomRangeLabel", "keepCalendarOpeningWithRange", "singleDateSelected", "dateRangeSelected"], outputs: ["startDateChange", "endDateChange", "outChangStageFlagMouse", "outUpdateWidth", "outCancel", "outSelectSingleDate", "outSelectDateRange", "outClickMenuRangeCustom"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
241
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsDatetimePickerComponent, isStandalone: true, selector: "libs_ui-components-datetime-picker", inputs: { dateOptions: { classPropertyName: "dateOptions", publicName: "dateOptions", isSignal: true, isRequired: false, transformFunction: null }, showCustomRangeLabel: { classPropertyName: "showCustomRangeLabel", publicName: "showCustomRangeLabel", isSignal: true, isRequired: false, transformFunction: null }, labelConfig: { classPropertyName: "labelConfig", publicName: "labelConfig", isSignal: true, isRequired: false, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, classInclude: { classPropertyName: "classInclude", publicName: "classInclude", isSignal: true, isRequired: false, transformFunction: null }, classPickerInclude: { classPropertyName: "classPickerInclude", publicName: "classPickerInclude", isSignal: true, isRequired: false, transformFunction: null }, classPickerContentInclude: { classPropertyName: "classPickerContentInclude", publicName: "classPickerContentInclude", isSignal: true, isRequired: false, transformFunction: null }, ignoreBorderQuickRange: { classPropertyName: "ignoreBorderQuickRange", publicName: "ignoreBorderQuickRange", isSignal: true, isRequired: false, transformFunction: null }, useColorModeExist: { classPropertyName: "useColorModeExist", publicName: "useColorModeExist", isSignal: true, isRequired: false, transformFunction: null }, hasTimePicker: { classPropertyName: "hasTimePicker", publicName: "hasTimePicker", isSignal: true, isRequired: false, transformFunction: null }, allowReset: { classPropertyName: "allowReset", publicName: "allowReset", isSignal: true, isRequired: false, transformFunction: null }, widthByLabel: { classPropertyName: "widthByLabel", publicName: "widthByLabel", isSignal: true, isRequired: false, transformFunction: null }, directionPopover: { classPropertyName: "directionPopover", publicName: "directionPopover", isSignal: true, isRequired: false, transformFunction: null }, defaultWidth: { classPropertyName: "defaultWidth", publicName: "defaultWidth", isSignal: true, isRequired: false, transformFunction: null }, isSingle: { classPropertyName: "isSingle", publicName: "isSingle", isSignal: true, isRequired: false, transformFunction: null }, extendRanges: { classPropertyName: "extendRanges", publicName: "extendRanges", isSignal: true, isRequired: false, transformFunction: null }, isBorderError: { classPropertyName: "isBorderError", publicName: "isBorderError", 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 }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, listYearHiddenInputSearch: { classPropertyName: "listYearHiddenInputSearch", publicName: "listYearHiddenInputSearch", isSignal: true, isRequired: false, transformFunction: null }, validRequired: { classPropertyName: "validRequired", publicName: "validRequired", isSignal: true, isRequired: false, transformFunction: null }, ignoreStopPropagationEvent: { classPropertyName: "ignoreStopPropagationEvent", publicName: "ignoreStopPropagationEvent", isSignal: true, isRequired: false, transformFunction: null }, flagMouse: { classPropertyName: "flagMouse", publicName: "flagMouse", isSignal: true, isRequired: false, transformFunction: null }, widthByParent: { classPropertyName: "widthByParent", publicName: "widthByParent", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, rangesPopoverPosition: { classPropertyName: "rangesPopoverPosition", publicName: "rangesPopoverPosition", isSignal: true, isRequired: false, transformFunction: null }, rangesPopoverPositionDistance: { classPropertyName: "rangesPopoverPositionDistance", publicName: "rangesPopoverPositionDistance", isSignal: true, isRequired: false, transformFunction: null }, isNgContent: { classPropertyName: "isNgContent", publicName: "isNgContent", isSignal: true, isRequired: false, transformFunction: null }, classIncludeCustomRanges: { classPropertyName: "classIncludeCustomRanges", publicName: "classIncludeCustomRanges", isSignal: true, isRequired: false, transformFunction: null }, autoApply: { classPropertyName: "autoApply", publicName: "autoApply", isSignal: true, isRequired: false, transformFunction: null }, positionQuickRanges: { classPropertyName: "positionQuickRanges", publicName: "positionQuickRanges", isSignal: true, isRequired: false, transformFunction: null }, trackDateRageUpdateLabel: { classPropertyName: "trackDateRageUpdateLabel", publicName: "trackDateRageUpdateLabel", 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: { flagMouse: "flagMouseChange", singleDateSelected: "singleDateSelectedChange", dateRangeSelected: "dateRangeSelectedChange", outChangStageFlagMouse: "outChangStageFlagMouse", outReset: "outReset", outSelectSingleDate: "outSelectSingleDate", outSelectDateRange: "outSelectDateRange", outFunctionsControl: "outFunctionsControl" }, ngImport: i0, template: "<div class=\"libs-ui-date-picker {{ classInclude() }}\">\n @if (labelConfig(); as labelConfig) {\n <libs_ui-components-label\n [classInclude]=\"labelConfig.classInclude\"\n [labelLeft]=\"labelConfig.labelLeft\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [required]=\"labelConfig.required\"\n [description]=\"labelConfig.description\"\n [descriptionClass]=\"labelConfig.descriptionClass\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [buttonsRight]=\"labelConfig.buttonsRight\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft || disable()\"\n [disableButtonsRight]=\"labelConfig.disableButtonsRight || disable()\"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleDisable]=\"labelConfig.toggleDisable || disable()\"\n [popover]=\"labelConfig.popover\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [limitLength]=\"labelConfig.limitLength\"\n [buttonsDescription]=\"labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"labelConfig.disableButtonsDescription || disable()\"\n [buttonsDescriptionContainerClass]=\"labelConfig.buttonsDescriptionContainerClass\"\n [count]=\"labelConfig.count\" />\n }\n <div class=\"flex w-full\">\n <libs_ui-components-popover\n [class]=\"classPickerInclude()\"\n [ignoreShowPopover]=\"disable() || readonly()\"\n [mode]=\"'click'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [ignoreStopPropagationEvent]=\"ignoreStopPropagationEvent()\"\n [flagMouse]=\"flagMouse()\"\n [config]=\"{\n animationConfig: {},\n maxWidth: 770,\n maxHeight: 425,\n directionDistance: 2,\n template: customRangesRef,\n widthByParent: widthByParent(),\n whiteTheme: true,\n ignoreArrow: true,\n zIndex: zIndex(),\n classInclude: 'rounded-[4px] ',\n direction: directionPopover(),\n position: { mode: rangesPopoverPosition(), distance: rangesPopoverPositionDistance() },\n }\"\n (outChangStageFlagMouse)=\"handlerChangStagePopoverFlagMouse($event)\"\n (outFunctionsControl)=\"handlerFunctionControl($event)\"\n (outEvent)=\"handlerPopoverEvent($event)\">\n @if (!isNgContent()) {\n <div\n #containerRef\n class=\"flex items-center px-[12px] h-[32px] rounded-[4px] bg-[#ffffff] cursor-pointer libs-ui-font-h5r {{ classPickerContentInclude() }}\"\n [class.libs-ui-disable]=\"disable()\"\n [class.libs-ui-disable-background]=\"disable()\"\n [class.!border-none]=\"ignoreBorderQuickRange()\"\n [class.libs-ui-border-general]=\"!singleError().message && !ignoreBorderQuickRange()\"\n [class.libs-ui-border-error-general]=\"(singleError().message || isBorderError()) && !ignoreBorderQuickRange()\"\n [class.min-w-[284px]]=\"!chosenDateFromRanges().selectedLabel && !isSingle() && hasTimePicker()\"\n [class.!border]=\"showRangesPopup() && !ignoreBorderQuickRange() && !readonly()\"\n [class.!border-[#4e8cf7]]=\"showRangesPopup() && !ignoreBorderQuickRange() && !readonly()\"\n [class.libs-ui-readonly]=\"readonly()\"\n [class.libs-ui-readonly-background]=\"readonly()\"\n [style.width.px]=\"width()\"\n (click)=\"handlerSelectRanges($event)\">\n <div class=\"libs-ui-icon-calendar text-[#9ca2ad] text-[16px]\"></div>\n <div\n class=\"ml-[8px] libs-ui-date-picker-label\"\n [class.!text-[#071631]]=\"!disable()\"\n [class.!text-[#9ca2ad]]=\"disable()\">\n @if (!chosenDateFromRanges().selectedLabel) {\n @if (!isSingle()) {\n @if (!placeholder()) {\n <span class=\"text-[#9ca2ad]\">\n dd/mm/yyyy\n @if (hasTimePicker()) {\n <span> hh:mm</span>\n }\n - dd/mm/yyyy\n @if (hasTimePicker()) {\n <span> hh:mm</span>\n }\n </span>\n } @else {\n <span class=\"text-[#9ca2ad]\">\n @let constHtmlPlaceholder = placeholder() || ' ';\n {{ constHtmlPlaceholder | translate }}\n </span>\n }\n }\n @if (isSingle()) {\n @if (!placeholder()) {\n <span class=\"text-[#9ca2ad]\">\n dd/mm/yyyy\n @if (hasTimePicker()) {\n <span> hh:mm</span>\n }\n </span>\n } @else {\n <span class=\"text-[#9ca2ad]\">\n @let constHtmlPlaceholder = placeholder() || ' ';\n {{ constHtmlPlaceholder | translate }}\n </span>\n }\n }\n }\n @if (chosenDateFromRanges().selectedLabel && !isSingle()) {\n {{ displayRangeTitle() }}\n }\n @if (chosenDateFromRanges().selectedLabel && isSingle()) {\n <span [class.text-[#29c7cc]]=\"useColorModeExist() || false\">\n {{ chosenDateFromRanges().selectedLabel }}\n </span>\n }\n </div>\n @if (chosenDateFromRanges().selectedLabel && allowReset() && !disable() && !readonly()) {\n <div class=\"pl-[12px] ml-auto h-full flex items-center\">\n <i\n class=\"libs-ui-icon-close-circle-solid text-[16px] text-[#cdd0d6]\"\n (click)=\"handlerReset($event)\"></i>\n </div>\n }\n </div>\n }\n @if (isNgContent()) {\n <div (click)=\"handlerSelectRanges($event)\">\n <ng-content></ng-content>\n </div>\n }\n </libs_ui-components-popover>\n </div>\n @if (singleError().message && !validRequired()?.ignoreMessage) {\n @let constHtmlMessage = singleError().message || ERROR_MESSAGE_EMPTY_VALID;\n <div\n class=\"mt-[8px] text-[#ee2d41] libs-ui-font-h7r libs-ui-text-error\"\n [innerHTML]=\"constHtmlMessage | translate: validRequired()?.interpolateParams\"></div>\n }\n</div>\n\n<ng-template #customRangesRef>\n <libs_ui-components-datetime-picker-custom_ranges\n [zIndex]=\"zIndex()\"\n [classInclude]=\"classIncludeCustomRanges()\"\n [widthByParent]=\"widthByParent()\"\n [dateOptions]=\"dateOptions()\"\n [positionQuickRanges]=\"positionQuickRanges()\"\n [showCustomRangeLabel]=\"showCustomRangeLabel()\"\n [autoApply]=\"autoApply()\"\n [isSingle]=\"isSingle()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [listYearHiddenInputSearch]=\"listYearHiddenInputSearch()\"\n [singleDateSelected]=\"singleDateSelected()\"\n [dateRangeSelected]=\"dateRangeSelected()\"\n [extendRanges]=\"extendRanges()\"\n [hasTimePicker]=\"hasTimePicker()\"\n (outUpdateWidth)=\"handlerUpdateWidth()\"\n (outCancel)=\"handlerCancel()\"\n (outSelectSingleDate)=\"handlerPickerSingleDate($event)\"\n (outSelectDateRange)=\"handlerPickerDateRange($event)\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"\n (outClickMenuRangeCustom)=\"handlerUpdateWidth()\" />\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: LibsUiComponentsLabelComponent, selector: "libs_ui-components-label", inputs: ["iconPopoverClass", "classInclude", "labelLeft", "labelLeftClass", "labelLeftBehindToggleButton", "popover", "required", "buttonsLeft", "disableButtonsLeft", "buttonsRight", "disableButtonsRight", "labelRight", "labelRightClass", "labelRightRequired", "hasToggle", "toggleSize", "toggleActive", "toggleDisable", "description", "descriptionClass", "buttonsDescription", "disableButtonsDescription", "buttonsDescriptionContainerClass", "onlyShowCount", "zIndexPopover", "timerDestroyPopover", "count", "limitLength"], outputs: ["outClickButton", "outSwitchEvent", "outLabelRightClick", "outLabelLeftClick"] }, { 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"] }, { kind: "component", type: LibsUiComponentsDatetimePickerCustomRangesComponent, selector: "libs_ui-components-datetime-picker-custom_ranges", inputs: ["zIndex", "classInclude", "extendRanges", "widthByParent", "autoApply", "minDate", "maxDate", "listYearHiddenInputSearch", "positionQuickRanges", "isSingle", "hasTimePicker", "flagMouse", "dateOptions", "alwaysShowCalendars", "startDate", "endDate", "showCustomRangeLabel", "keepCalendarOpeningWithRange", "singleDateSelected", "dateRangeSelected"], outputs: ["startDateChange", "endDateChange", "outChangStageFlagMouse", "outUpdateWidth", "outCancel", "outSelectSingleDate", "outSelectDateRange", "outClickMenuRangeCustom"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
242
242
|
}
|
|
243
243
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsDatetimePickerComponent, decorators: [{
|
|
244
244
|
type: Component,
|
|
245
|
-
args: [{ selector: 'libs_ui-components-datetime-picker', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [TranslateModule, LibsUiComponentsLabelComponent, LibsUiComponentsPopoverComponent, LibsUiComponentsDatetimePickerCustomRangesComponent], template: "<div class=\"libs-ui-date-picker {{ classInclude() }}\">\n @if (labelConfig(); as labelConfig) {\n <libs_ui-components-label\n [classInclude]=\"labelConfig.classInclude\"\n [labelLeft]=\"labelConfig.labelLeft\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [required]=\"labelConfig.required\"\n [description]=\"labelConfig.description\"\n [descriptionClass]=\"labelConfig.descriptionClass\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [buttonsRight]=\"labelConfig.buttonsRight\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft || disable()\"\n [disableButtonsRight]=\"labelConfig.disableButtonsRight || disable()\"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleDisable]=\"labelConfig.toggleDisable || disable()\"\n [popover]=\"labelConfig.popover\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [limitLength]=\"labelConfig.limitLength\"\n [buttonsDescription]=\"labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"labelConfig.disableButtonsDescription || disable()\"\n [buttonsDescriptionContainerClass]=\"labelConfig.buttonsDescriptionContainerClass\"\n [count]=\"labelConfig.count\" />\n }\n <div class=\"flex w-full\">\n <libs_ui-components-popover\n [class]=\"classPickerInclude()\"\n [ignoreShowPopover]=\"disable() || readonly()\"\n [mode]=\"'click'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [ignoreStopPropagationEvent]=\"ignoreStopPropagationEvent()\"\n [flagMouse]=\"flagMouse()\"\n [config]=\"{\n animationConfig: {},\n maxWidth: 770,\n maxHeight: 425,\n directionDistance: 2,\n template: customRangesRef,\n widthByParent: widthByParent(),\n whiteTheme: true,\n ignoreArrow: true,\n zIndex: zIndex(),\n classInclude: 'rounded-[4px] ',\n direction: directionPopover(),\n position: { mode: rangesPopoverPosition(), distance: rangesPopoverPositionDistance() },\n }\"\n (outChangStageFlagMouse)=\"handlerChangStagePopoverFlagMouse($event)\"\n (outFunctionsControl)=\"handlerFunctionControl($event)\"\n (outEvent)=\"handlerPopoverEvent($event)\">\n @if (!isNgContent()) {\n <div\n #containerRef\n class=\"flex items-center px-[12px] h-[32px] rounded-[4px] bg-[#ffffff] cursor-pointer libs-ui-font-h5r {{ classPickerContentInclude() }}\"\n [class.libs-ui-disable]=\"disable()\"\n [class.libs-ui-disable-background]=\"disable()\"\n [class.!border-none]=\"ignoreBorderQuickRange()\"\n [class.libs-ui-border-general]=\"!singleError().message && !ignoreBorderQuickRange()\"\n [class.libs-ui-border-error-general]=\"(singleError().message || isBorderError()) && !ignoreBorderQuickRange()\"\n [class.min-w-[284px]]=\"!chosenDateFromRanges().selectedLabel && !isSingle() && hasTimePicker()\"\n [class.!border]=\"showRangesPopup() && !ignoreBorderQuickRange() && !readonly()\"\n [class.!border-[#4e8cf7]]=\"showRangesPopup() && !ignoreBorderQuickRange() && !readonly()\"\n [class.libs-ui-readonly]=\"readonly()\"\n [class.libs-ui-readonly-background]=\"readonly()\"\n [style.width.px]=\"width()\"\n (click)=\"handlerSelectRanges($event)\">\n <div class=\"libs-ui-icon-calendar text-[#9ca2ad] text-[16px]\"></div>\n <div\n class=\"ml-[8px] libs-ui-date-picker-label\"\n [class.!text-[#071631]]=\"!disable()\"\n [class.!text-[#9ca2ad]]=\"disable()\">\n @if (!chosenDateFromRanges().selectedLabel) {\n @if (!isSingle()) {\n @if (!placeholder()) {\n <span class=\"text-[#9ca2ad]\">\n dd/mm/yyyy\n @if (hasTimePicker()) {\n <span> hh:mm</span>\n }\n - dd/mm/yyyy\n @if (hasTimePicker()) {\n <span> hh:mm</span>\n }\n </span>\n } @else {\n <span class=\"text-[#9ca2ad]\"
|
|
245
|
+
args: [{ selector: 'libs_ui-components-datetime-picker', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [TranslateModule, LibsUiComponentsLabelComponent, LibsUiComponentsPopoverComponent, LibsUiComponentsDatetimePickerCustomRangesComponent], template: "<div class=\"libs-ui-date-picker {{ classInclude() }}\">\n @if (labelConfig(); as labelConfig) {\n <libs_ui-components-label\n [classInclude]=\"labelConfig.classInclude\"\n [labelLeft]=\"labelConfig.labelLeft\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [required]=\"labelConfig.required\"\n [description]=\"labelConfig.description\"\n [descriptionClass]=\"labelConfig.descriptionClass\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [buttonsRight]=\"labelConfig.buttonsRight\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft || disable()\"\n [disableButtonsRight]=\"labelConfig.disableButtonsRight || disable()\"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleDisable]=\"labelConfig.toggleDisable || disable()\"\n [popover]=\"labelConfig.popover\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [limitLength]=\"labelConfig.limitLength\"\n [buttonsDescription]=\"labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"labelConfig.disableButtonsDescription || disable()\"\n [buttonsDescriptionContainerClass]=\"labelConfig.buttonsDescriptionContainerClass\"\n [count]=\"labelConfig.count\" />\n }\n <div class=\"flex w-full\">\n <libs_ui-components-popover\n [class]=\"classPickerInclude()\"\n [ignoreShowPopover]=\"disable() || readonly()\"\n [mode]=\"'click'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [ignoreStopPropagationEvent]=\"ignoreStopPropagationEvent()\"\n [flagMouse]=\"flagMouse()\"\n [config]=\"{\n animationConfig: {},\n maxWidth: 770,\n maxHeight: 425,\n directionDistance: 2,\n template: customRangesRef,\n widthByParent: widthByParent(),\n whiteTheme: true,\n ignoreArrow: true,\n zIndex: zIndex(),\n classInclude: 'rounded-[4px] ',\n direction: directionPopover(),\n position: { mode: rangesPopoverPosition(), distance: rangesPopoverPositionDistance() },\n }\"\n (outChangStageFlagMouse)=\"handlerChangStagePopoverFlagMouse($event)\"\n (outFunctionsControl)=\"handlerFunctionControl($event)\"\n (outEvent)=\"handlerPopoverEvent($event)\">\n @if (!isNgContent()) {\n <div\n #containerRef\n class=\"flex items-center px-[12px] h-[32px] rounded-[4px] bg-[#ffffff] cursor-pointer libs-ui-font-h5r {{ classPickerContentInclude() }}\"\n [class.libs-ui-disable]=\"disable()\"\n [class.libs-ui-disable-background]=\"disable()\"\n [class.!border-none]=\"ignoreBorderQuickRange()\"\n [class.libs-ui-border-general]=\"!singleError().message && !ignoreBorderQuickRange()\"\n [class.libs-ui-border-error-general]=\"(singleError().message || isBorderError()) && !ignoreBorderQuickRange()\"\n [class.min-w-[284px]]=\"!chosenDateFromRanges().selectedLabel && !isSingle() && hasTimePicker()\"\n [class.!border]=\"showRangesPopup() && !ignoreBorderQuickRange() && !readonly()\"\n [class.!border-[#4e8cf7]]=\"showRangesPopup() && !ignoreBorderQuickRange() && !readonly()\"\n [class.libs-ui-readonly]=\"readonly()\"\n [class.libs-ui-readonly-background]=\"readonly()\"\n [style.width.px]=\"width()\"\n (click)=\"handlerSelectRanges($event)\">\n <div class=\"libs-ui-icon-calendar text-[#9ca2ad] text-[16px]\"></div>\n <div\n class=\"ml-[8px] libs-ui-date-picker-label\"\n [class.!text-[#071631]]=\"!disable()\"\n [class.!text-[#9ca2ad]]=\"disable()\">\n @if (!chosenDateFromRanges().selectedLabel) {\n @if (!isSingle()) {\n @if (!placeholder()) {\n <span class=\"text-[#9ca2ad]\">\n dd/mm/yyyy\n @if (hasTimePicker()) {\n <span> hh:mm</span>\n }\n - dd/mm/yyyy\n @if (hasTimePicker()) {\n <span> hh:mm</span>\n }\n </span>\n } @else {\n <span class=\"text-[#9ca2ad]\">\n @let constHtmlPlaceholder = placeholder() || ' ';\n {{ constHtmlPlaceholder | translate }}\n </span>\n }\n }\n @if (isSingle()) {\n @if (!placeholder()) {\n <span class=\"text-[#9ca2ad]\">\n dd/mm/yyyy\n @if (hasTimePicker()) {\n <span> hh:mm</span>\n }\n </span>\n } @else {\n <span class=\"text-[#9ca2ad]\">\n @let constHtmlPlaceholder = placeholder() || ' ';\n {{ constHtmlPlaceholder | translate }}\n </span>\n }\n }\n }\n @if (chosenDateFromRanges().selectedLabel && !isSingle()) {\n {{ displayRangeTitle() }}\n }\n @if (chosenDateFromRanges().selectedLabel && isSingle()) {\n <span [class.text-[#29c7cc]]=\"useColorModeExist() || false\">\n {{ chosenDateFromRanges().selectedLabel }}\n </span>\n }\n </div>\n @if (chosenDateFromRanges().selectedLabel && allowReset() && !disable() && !readonly()) {\n <div class=\"pl-[12px] ml-auto h-full flex items-center\">\n <i\n class=\"libs-ui-icon-close-circle-solid text-[16px] text-[#cdd0d6]\"\n (click)=\"handlerReset($event)\"></i>\n </div>\n }\n </div>\n }\n @if (isNgContent()) {\n <div (click)=\"handlerSelectRanges($event)\">\n <ng-content></ng-content>\n </div>\n }\n </libs_ui-components-popover>\n </div>\n @if (singleError().message && !validRequired()?.ignoreMessage) {\n @let constHtmlMessage = singleError().message || ERROR_MESSAGE_EMPTY_VALID;\n <div\n class=\"mt-[8px] text-[#ee2d41] libs-ui-font-h7r libs-ui-text-error\"\n [innerHTML]=\"constHtmlMessage | translate: validRequired()?.interpolateParams\"></div>\n }\n</div>\n\n<ng-template #customRangesRef>\n <libs_ui-components-datetime-picker-custom_ranges\n [zIndex]=\"zIndex()\"\n [classInclude]=\"classIncludeCustomRanges()\"\n [widthByParent]=\"widthByParent()\"\n [dateOptions]=\"dateOptions()\"\n [positionQuickRanges]=\"positionQuickRanges()\"\n [showCustomRangeLabel]=\"showCustomRangeLabel()\"\n [autoApply]=\"autoApply()\"\n [isSingle]=\"isSingle()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [listYearHiddenInputSearch]=\"listYearHiddenInputSearch()\"\n [singleDateSelected]=\"singleDateSelected()\"\n [dateRangeSelected]=\"dateRangeSelected()\"\n [extendRanges]=\"extendRanges()\"\n [hasTimePicker]=\"hasTimePicker()\"\n (outUpdateWidth)=\"handlerUpdateWidth()\"\n (outCancel)=\"handlerCancel()\"\n (outSelectSingleDate)=\"handlerPickerSingleDate($event)\"\n (outSelectDateRange)=\"handlerPickerDateRange($event)\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"\n (outClickMenuRangeCustom)=\"handlerUpdateWidth()\" />\n</ng-template>\n" }]
|
|
246
246
|
}], ctorParameters: () => [] });
|
|
247
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9kYXRldGltZS9waWNrZXIvc3JjL3BpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZGF0ZXRpbWUvcGlja2VyL3NyYy9waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pKLE9BQU8sRUFBVSw4QkFBOEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ25GLE9BQU8sRUFBNEMsZ0NBQWdDLEVBQThDLE1BQU0sNkJBQTZCLENBQUM7QUFFckssT0FBTyxFQUFFLHlCQUF5QixFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsbURBQW1ELEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM5RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7O0FBZ0J0RSxNQUFNLE9BQU8sdUNBQXVDO0lBQ2xELGVBQWU7SUFDSSx5QkFBeUIsR0FBRyx5QkFBeUIsQ0FBQztJQUMvRCxlQUFlLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLEtBQUssR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNoRCxXQUFXLEdBQUcsTUFBTSxDQUFpQixFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFD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QUFDO1lBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ3RDLENBQUM7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUN0QyxDQUFDO0lBRUQsV0FBVztRQUNULE9BQU87SUFDVCxDQUFDO3dHQTlRVSx1Q0FBdUM7NEZBQXZDLHVDQUF1Qyx5c0xDeEJwRCx5dE9BZ0tBLHlERDFJWSxlQUFlLDRGQUFFLDhCQUE4Qiw0cUJBQUUsZ0NBQWdDLG9nQkFBRSxtREFBbUQ7OzRGQUVySSx1Q0FBdUM7a0JBVG5ELFNBQVM7K0JBRUUsb0NBQW9DLGNBR2xDLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLGVBQWUsRUFBRSw4QkFBOEIsRUFBRSxnQ0FBZ0MsRUFBRSxtREFBbUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIGlucHV0LCBtb2RlbCwgT25EZXN0cm95LCBPbkluaXQsIG91dHB1dCwgc2lnbmFsLCB1bnRyYWNrZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElMYWJlbCwgTGlic1VpQ29tcG9uZW50c0xhYmVsQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1sYWJlbCc7XG5pbXBvcnQgeyBJRmxhZ01vdXNlLCBJUG9wb3ZlckZ1bmN0aW9uQ29udHJvbEV2ZW50LCBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudCwgVFlQRV9QT1BPVkVSX0RJUkVDVElPTiwgVFlQRV9QT1BPVkVSX0VWRU5UIH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1wb3BvdmVyJztcbmltcG9ydCB7IFRZUEVfT0JKRUNUIH0gZnJvbSAnQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlcyc7XG5pbXBvcnQgeyBFUlJPUl9NRVNTQUdFX0VNUFRZX1ZBTElELCBnZXREYXlqcyB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgRGF5anMgfSBmcm9tICdkYXlqcyc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzRGF0ZXRpbWVQaWNrZXJDdXN0b21SYW5nZXNDb21wb25lbnQgfSBmcm9tICcuL2N1c3RvbS1yYW5nZXMvY3VzdG9tLXJhbmdlcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgZ2V0RGF0ZU9wdGlvbnNEZWZhdWx0IH0gZnJvbSAnLi9kZWZpbmVzL2RhdGUtb3B0aW9ucy5kZWZpbmUnO1xuaW1wb3J0IHsgSUVtaXREYXRlUmFuZ2UsIElFbWl0U2luZ2xlRGF0ZSB9IGZyb20gJy4vaW50ZXJmYWNlcy9jYWxlbmRhci1lbWl0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBJRGF0ZVJhbmdlIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2NhbGVuZGFyLXZhcmlhYmxlcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSURhdGVUaW1lUGlja2VyRnVuY3Rpb25Db250cm9sRXZlbnQgfSBmcm9tICcuL2ludGVyZmFjZXMvZnVuY3Rpb24tY29udHJvbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUNob3NlbkRhdGUsIExvY2FsaXphdGlvbkNvbmZpZywgVFlQRV9SQU5HRV9LRVkgfSBmcm9tICcuL2ludGVyZmFjZXMvcGlja2VyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJRGF0ZVRpbWVWYWxpZCB9IGZyb20gJy4vaW50ZXJmYWNlcy92YWxpZC5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaWJzX3VpLWNvbXBvbmVudHMtZGF0ZXRpbWUtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1RyYW5zbGF0ZU1vZHVsZSwgTGlic1VpQ29tcG9uZW50c0xhYmVsQ29tcG9uZW50LCBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudCwgTGlic1VpQ29tcG9uZW50c0RhdGV0aW1lUGlja2VyQ3VzdG9tUmFuZ2VzQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29tcG9uZW50c0RhdGV0aW1lUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKiogUFJPUEVSVFkgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEVSUk9SX01FU1NBR0VfRU1QVFlfVkFMSUQgPSBFUlJPUl9NRVNTQUdFX0VNUFRZX1ZBTElEO1xuICBwcm90ZWN0ZWQgc2hvd1Jhbmdlc1BvcHVwID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJvdGVjdGVkIHdpZHRoID0gY29tcHV0ZWQodGhpcy5jb21wdXRlZFdpZHRoLmJpbmQodGhpcykpO1xuICBwcm90ZWN0ZWQgc2luZ2xlRXJyb3IgPSBzaWduYWw8SURhdGVUaW1lVmFsaWQ+KHsgbWVzc2FnZTogdW5kZWZpbmVkIH0pO1xuICBwcm90ZWN0ZWQgY2hvc2VuRGF0ZUZyb21SYW5nZXMgPSBzaWduYWw8SUNob3NlbkRhdGU+KHt9KTtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkRGF0ZUZyb21DYWxlbmRhciE6IHsgc3RhcnQ/OiBEYXlqczsgZW5kPzogRGF5anMgfTtcbiAgcHJvdGVjdGVkIGRpc3BsYXlSYW5nZVRpdGxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkTGFiZWwgPSB0aGlzLmNob3NlbkRhdGVGcm9tUmFuZ2VzKCkuc2VsZWN0ZWRMYWJlbCBhcyBUWVBFX1JBTkdFX0tFWTtcblxuICAgIGlmICh0aGlzLmlzU2luZ2xlKCkgfHwgIXNlbGVjdGVkTGFiZWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gc2VsZWN0ZWRMYWJlbDtcbiAgfSk7XG5cbiAgcHJpdmF0ZSBwb3BvdmVyRnVuY3Rpb25Db250cm9sRXZlbnQgPSBzaWduYWw8SVBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAvKiogSU5QVVQgKi9cbiAgcmVhZG9ubHkgZGF0ZU9wdGlvbnMgPSBpbnB1dDxMb2NhbGl6YXRpb25Db25maWcsIExvY2FsaXphdGlvbkNvbmZpZyB8IHVuZGVmaW5lZD4oZ2V0RGF0ZU9wdGlvbnNEZWZhdWx0KCksIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/IGdldERhdGVPcHRpb25zRGVmYXVsdCgpIH0pO1xuICByZWFkb25seSBzaG93Q3VzdG9tUmFuZ2VMYWJlbCA9IGlucHV0PGJvb2xlYW4sIGJvb2xlYW4+KHRydWUsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/IHRydWUgfSk7XG4gIHJlYWRvbmx5IGxhYmVsQ29uZmlnID0gaW5wdXQ8SUxhYmVsPigpO1xuICByZWFkb25seSBkaXNhYmxlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSByZWFkb25seSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgY2xhc3NJbmNsdWRlID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHJlYWRvbmx5IGNsYXNzUGlja2VySW5jbHVkZSA9IGlucHV0PHN0cmluZz4oJycpO1xuICByZWFkb25seSBjbGFzc1BpY2tlckNvbnRlbnRJbmNsdWRlID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHJlYWRvbmx5IGlnbm9yZUJvcmRlclF1aWNrUmFuZ2UgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHVzZUNvbG9yTW9kZUV4aXN0ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBoYXNUaW1lUGlja2VyID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIHJlYWRvbmx5IGFsbG93UmVzZXQgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgcmVhZG9ubHkgd2lkdGhCeUxhYmVsID0gaW5wdXQ8Ym9vbGVhbiwgYm9vbGVhbj4odHJ1ZSwgeyB0cmFuc2Zvcm06ICh2YWx1ZSkgPT4gdmFsdWUgPz8gdHJ1ZSB9KTtcbiAgcmVhZG9ubHkgZGlyZWN0aW9uUG9wb3ZlciA9IGlucHV0PFRZUEVfUE9QT1ZFUl9ESVJFQ1RJT04sIFRZUEVfUE9QT1ZFUl9ESVJFQ1RJT04gfCB1bmRlZmluZWQ+KCdib3R0b20nLCB7IHRyYW5zZm9ybTogKHZhbHVlKSA9PiB2YWx1ZSA/PyAnYm90dG9tJyB9KTtcbiAgcmVhZG9ubHkgZGVmYXVsdFdpZHRoID0gaW5wdXQ8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBpc1NpbmdsZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgZXh0ZW5kUmFuZ2VzID0gaW5wdXQ8QXJyYXk8SURhdGVSYW5nZT4+KFtdKTtcbiAgcmVhZG9ubHkgaXNCb3JkZXJFcnJvciA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgbWluRGF0ZSA9IGlucHV0PERheWpzIHwgc3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSBtYXhEYXRlID0gaW5wdXQ8RGF5anMgfCBzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IHBsYWNlaG9sZGVyID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBsaXN0WWVhckhpZGRlbklucHV0U2VhcmNoID0gaW5wdXQ8Ym9vbGVhbiwgYm9vbGVhbiB8IHVuZGVmaW5lZD4oZmFsc2UsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/IGZhbHNlIH0pO1xuXG4gIHJlYWRvbmx5IHZhbGlkUmVxdWlyZWQgPSBpbnB1dDxJRGF0ZVRpbWVWYWxpZCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgaWdub3JlU3RvcFByb3BhZ2F0aW9uRXZlbnQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGZsYWdNb3VzZSA9IG1vZGVsPElGbGFnTW91c2U+KHsgaXNNb3VzZUVudGVyOiBmYWxzZSwgaXNNb3VzZUVudGVyQ29udGVudDogZmFsc2UgfSk7XG4gIHJlYWRvbmx5IHdpZHRoQnlQYXJlbnQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHpJbmRleCA9IGlucHV0PG51bWJlciwgbnVtYmVyPigxMjAwLCB7IHRyYW5zZm9ybTogKHZhbHVlKSA9PiB2YWx1ZSA/PyAxMjAwIH0pO1xuICByZWFkb25seSByYW5nZXNQb3BvdmVyUG9zaXRpb24gPSBpbnB1dDwnc3RhcnQnIHwgJ2NlbnRlcicgfCAnZW5kJywgJ3N0YXJ0JyB8ICdjZW50ZXInIHwgJ2VuZCc+KCdzdGFydCcsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/ICdzdGFydCcgfSk7XG4gIHJlYWRvbmx5IHJhbmdlc1BvcG92ZXJQb3NpdGlvbkRpc3RhbmNlID0gaW5wdXQ8bnVtYmVyLCBudW1iZXI+KDAsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/IDAgfSk7XG4gIHJlYWRvbmx5IGlzTmdDb250ZW50ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBjbGFzc0luY2x1ZGVDdXN0b21SYW5nZXMgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgcmVhZG9ubHkgYXV0b0FwcGx5ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBwb3NpdGlvblF1aWNrUmFuZ2VzID0gaW5wdXQ8J2xlZnQnIHwgJ3JpZ2h0Jz4oJ2xlZnQnKTsgLy8gduG7iyB0csOtIGxpc3QgY2jhu41uIG5oYW5oIGtob+G6o25nIHRo4budaSBnaWFuXG4gIHJlYWRvbmx5IHRyYWNrRGF0ZVJhZ2VVcGRhdGVMYWJlbCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICByZWFkb25seSBzaW5nbGVEYXRlU2VsZWN0ZWQgPSBtb2RlbDxJRW1pdFNpbmdsZURhdGU+KCk7XG4gIHJlYWRvbmx5IGRhdGVSYW5nZVNlbGVjdGVkID0gbW9kZWw8SUVtaXREYXRlUmFuZ2U+KCk7XG5cbiAgLyoqIE9VVFBVVCAqL1xuICByZWFkb25seSBvdXRDaGFuZ1N0YWdlRmxhZ01vdXNlID0gb3V0cHV0PElGbGFnTW91c2U+KCk7XG4gIHJlYWRvbmx5IG91dFJlc2V0ID0gb3V0cHV0PElFbWl0RGF0ZVJhbmdlIHwgSUVtaXRTaW5nbGVEYXRlIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSBvdXRTZWxlY3RTaW5nbGVEYXRlID0gb3V0cHV0PElFbWl0U2luZ2xlRGF0ZT4oKTtcbiAgcmVhZG9ubHkgb3V0U2VsZWN0RGF0ZVJhbmdlID0gb3V0cHV0PElFbWl0RGF0ZVJhbmdlPigpO1xuICByZWFkb25seSBvdXRGdW5jdGlvbnNDb250cm9sID0gb3V0cHV0PElEYXRlVGltZVBpY2tlckZ1bmN0aW9uQ29udHJvbEV2ZW50PigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBkYXRlID0gdGhpcy5zaW5nbGVEYXRlU2VsZWN0ZWQoKT8uZGF0ZTtcblxuICAgICAgaWYgKGRhdGUpIHtcbiAgICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBmb3JtYXREYXRlID0gdGhpcy5oYXNUaW1lUGlja2VyKCkgPyAnREQvTU0vWVlZWSBISDptbScgOiAnREQvTU0vWVlZWSc7XG4gICAgICAgICAgY29uc3Qgc3RhcnRUaW1lID0gZ2V0RGF5anMoeyBkYXRlIH0pLmZvcm1hdChmb3JtYXREYXRlKTtcbiAgICAgICAgICB0aGlzLmNob3NlbkRhdGVGcm9tUmFuZ2VzLnNldCh7IHNlbGVjdGVkTGFiZWw6IHN0YXJ0VGltZSB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnRyYWNrRGF0ZVJhZ2VVcGRhdGVMYWJlbCgpKSB7XG4gICAgICAgIHRoaXMudXBkYXRlQ2hvc2VuRGF0ZUZyb21SYW5nZXNGcm9tRGF0ZVJhbmdlU2VsZWN0ZWQodGhpcy5kYXRlUmFuZ2VTZWxlY3RlZCgpIGFzIElFbWl0RGF0ZVJhbmdlKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB1bnRyYWNrZWQoKCkgPT4gdGhpcy51cGRhdGVDaG9zZW5EYXRlRnJvbVJhbmdlc0Zyb21EYXRlUmFuZ2VTZWxlY3RlZCh0aGlzLmRhdGVSYW5nZVNlbGVjdGVkKCkgYXMgSUVtaXREYXRlUmFuZ2UpKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMub3V0RnVuY3Rpb25zQ29udHJvbC5lbWl0KHRoaXMuRnVuY3Rpb25zQ29udHJvbCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IEZ1bmN0aW9uc0NvbnRyb2woKTogSURhdGVUaW1lUGlja2VyRnVuY3Rpb25Db250cm9sRXZlbnQge1xuICAgIHJldHVybiB7XG4gICAgICBjaGVja0lzVmFsaWQ6IHRoaXMuY2hlY2tJc1ZhbGlkLmJpbmQodGhpcyksXG4gICAgICByZXNldEVycm9yOiB0aGlzLnJlc2V0RXJyb3IuYmluZCh0aGlzKSxcbiAgICAgIHJlc2V0OiB0aGlzLnJlc2V0LmJpbmQodGhpcyksXG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyU2VsZWN0UmFuZ2VzKGV2ZW50OiBFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJDaGFuZ1N0YWdlRmxhZ01vdXNlKGZsYWdNb3VzZTogSUZsYWdNb3VzZSkge1xuICAgIHRoaXMuZmxhZ01vdXNlLnNldChmbGFnTW91c2UpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJDaGFuZ1N0YWdlUG9wb3ZlckZsYWdNb3VzZShmbGFnTW91c2U6IElGbGFnTW91c2UpIHtcbiAgICBpZiAodGhpcy5mbGFnTW91c2UoKT8uaXNNb3VzZUVudGVyQ29udGVudCkge1xuICAgICAgZmxhZ01vdXNlLmlzTW91c2VFbnRlckNvbnRlbnQgPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLm91dENoYW5nU3RhZ2VGbGFnTW91c2UuZW1pdChmbGFnTW91c2UpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJGdW5jdGlvbkNvbnRyb2woZXZlbnQ6IElQb3BvdmVyRnVuY3Rpb25Db250cm9sRXZlbnQpIHtcbiAgICB0aGlzLnBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudC5zZXQoZXZlbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJQb3BvdmVyRXZlbnQoZXZlbnQ6IFRZUEVfUE9QT1ZFUl9FVkVOVCkge1xuICAgIGlmIChldmVudCA9PT0gJ3JlbW92ZScpIHtcbiAgICAgIHRoaXMuc2hvd1Jhbmdlc1BvcHVwLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZXJQaWNrZXJTaW5nbGVEYXRlKGRhdGE6IElFbWl0U2luZ2xlRGF0ZSkge1xuICAgIHRoaXMub3V0U2VsZWN0U2luZ2xlRGF0ZS5lbWl0KGRhdGEpO1xuICAgIHRoaXMuY2hvc2VuRGF0ZUZyb21SYW5nZXMuc2V0KHsgc2VsZWN0ZWRMYWJlbDogZGF0YS5kaXNwbGF5TGFiZWwgfSk7XG4gICAgaWYgKHRoaXMuaGFzVGltZVBpY2tlcigpKSB7XG4gICAgICBjb25zdCBzdGFydFRpbWUgPSBnZXREYXlqcyh7IGRhdGU6IGRhdGEuZGF0ZSwgcmV0dXJuRGF5anNJZkNvbmZpZ0RhdGVOb3RFeGlzdDogdHJ1ZSB9KS5mb3JtYXQoJ0REL01NL1lZWVkgSEg6bW0nKTtcblxuICAgICAgdGhpcy5jaG9zZW5EYXRlRnJvbVJhbmdlcy51cGRhdGUoKGN1cnJlbnQpID0+IHtcbiAgICAgICAgY3VycmVudC5zZWxlY3RlZExhYmVsID0gYCR7c3RhcnRUaW1lfWA7XG4gICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuc2luZ2xlRGF0ZVNlbGVjdGVkLnNldChkYXRhKTtcbiAgICB0aGlzLnBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudCgpPy5yZW1vdmVQb3BvdmVyT3ZlcmxheSgpO1xuICAgIGF3YWl0IHRoaXMuY2hlY2tJc1ZhbGlkKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlclBpY2tlckRhdGVSYW5nZShkYXRhOiBJRW1pdERhdGVSYW5nZSkge1xuICAgIGlmICgoZGF0YS5kaXNwbGF5TGFiZWw/LmluZGV4T2YoJ0ludmFsaWQgRGF0ZScpID8/IC0xKSA+IC0xKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIHRoaXMuc2VsZWN0ZWRLZXkgPSBkYXRhLnNlbGVjdGVkTGFiZWw7XG4gICAgdGhpcy5jaG9zZW5EYXRlRnJvbVJhbmdlcy5zZXQoeyBzZWxlY3RlZExhYmVsOiBkYXRhLmRpc3BsYXlMYWJlbCB9KTtcblxuICAgIC8vIHRoaXMuc2VsZWN0ZWQuc3RhcnQgPSBnZXREYXlqczxEYXlqcz4oe2RhdGU6ZGF0YS5zdGFydERhdGV9KTtcbiAgICAvLyB0aGlzLnNlbGVjdGVkLmVuZCA9IGdldERheWpzPERheWpzPih7ZGF0ZTpkYXRhLmVuZERhdGV9KTtcbiAgICBpZiAodGhpcy5oYXNUaW1lUGlja2VyKCkpIHtcbiAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IGdldERheWpzKHsgZGF0ZTogZGF0YS5zdGFydERhdGUsIHJldHVybkRheWpzSWZDb25maWdEYXRlTm90RXhpc3Q6IHRydWUgfSkuZm9ybWF0KCdERC9NTS9ZWVlZIEhIOm1tJyk7XG4gICAgICBjb25zdCBlbmRUaW1lID0gZ2V0RGF5anMoeyBkYXRlOiBkYXRhLmVuZERhdGUsIHJldHVybkRheWpzSWZDb25maWdEYXRlTm90RXhpc3Q6IHRydWUgfSkuZm9ybWF0KCdERC9NTS9ZWVlZIEhIOm1tJyk7XG5cbiAgICAgIHRoaXMuY2hvc2VuRGF0ZUZyb21SYW5nZXMudXBkYXRlKChjdXJyZW50KSA9PiB7XG4gICAgICAgIGN1cnJlbnQuc2VsZWN0ZWRMYWJlbCA9IGAke3N0YXJ0VGltZX0gLSAke2VuZFRpbWV9YDtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgICB9KTtcbiAgICB9XG4gICAgLy8gdGhpcy5tb0RhdGVQaWNrZXIuZW1pdCh0aGlzLnNpbmdsZURhdGVQaWNrZXIgPyB7IGNob3NlbkxhYmVsOiB0aGlzLmRhdGVWYWx1ZS5jaG9zZW5MYWJlbCwgc2luZ2xlRGF0ZTogdGhpcy5kYXRlVmFsdWUuc3RhcnREYXRlPy51dGMoKSwgc3RhcnREYXRlOiB0aGlzLmRhdGVWYWx1ZS5zdGFydERhdGU/LnV0YygpLCBlbmREYXRlOiB0aGlzLmRhdGVWYWx1ZS5lbmREYXRlPy51dGMoKSB9IDogeyBjaG9zZW5MYWJlbDogdGhpcy5kYXRlVmFsdWUuY2hvc2VuTGFiZWwsIHN0YXJ0RGF0ZTogdGhpcy5kYXRlVmFsdWUuc3RhcnREYXRlPy51dGMoKSwgZW5kRGF0ZTogdGhpcy5kYXRlVmFsdWUuZW5kRGF0ZT8udXRjKCkgfSk7XG4gICAgY29uc3Qgc2hvd1ZpZXdFeHRlcm5hbFJhbmdlTGFiZWwgPSB0aGlzLmV4dGVuZFJhbmdlcygpPy5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSB0aGlzLmNob3NlbkRhdGVGcm9tUmFuZ2VzKCkuc2VsZWN0ZWRMYWJlbCk7XG5cbiAgICBpZiAodGhpcy5leHRlbmRSYW5nZXMoKSAmJiBzaG93Vmlld0V4dGVybmFsUmFuZ2VMYWJlbCkge1xuICAgICAgdGhpcy5jaG9zZW5EYXRlRnJvbVJhbmdlcy51cGRhdGUoKGN1cnJlbnQpID0+IHtcbiAgICAgICAgY3VycmVudC5zZWxlY3RlZExhYmVsID0gc2hvd1ZpZXdFeHRlcm5hbFJhbmdlTGFiZWwgJiYgc2hvd1ZpZXdFeHRlcm5hbFJhbmdlTGFiZWwubGFiZWw7XG4gICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5kYXRlUmFuZ2VTZWxlY3RlZC5zZXQoeyBxdWlja1JhbmdlSWQ6IGRhdGEucXVpY2tSYW5nZUlkLCBkaXNwbGF5TGFiZWw6IGRhdGEuZGlzcGxheUxhYmVsLCBzdGFydERhdGU6IGRhdGEuc3RhcnREYXRlLCBlbmREYXRlOiBkYXRhLmVuZERhdGUgfSk7XG4gICAgdGhpcy5vdXRTZWxlY3REYXRlUmFuZ2UuZW1pdCh7IHF1aWNrUmFuZ2VJZDogZGF0YS5xdWlja1JhbmdlSWQsIGRpc3BsYXlMYWJlbDogZGF0YS5kaXNwbGF5TGFiZWwsIHN0YXJ0RGF0ZTogZGF0YS5zdGFydERhdGUsIGVuZERhdGU6IGRhdGEuZW5kRGF0ZSB9KTtcbiAgICB0aGlzLnBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudCgpPy5yZW1vdmVQb3BvdmVyT3ZlcmxheSgpO1xuICAgIGF3YWl0IHRoaXMuY2hlY2tJc1ZhbGlkKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNob3NlbkRhdGVGcm9tUmFuZ2VzRnJvbURhdGVSYW5nZVNlbGVjdGVkKGRhdGVSYW5nZVNlbGVjdGVkPzogSUVtaXREYXRlUmFuZ2UpIHtcbiAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgaWYgKGRhdGVSYW5nZVNlbGVjdGVkPy5xdWlja1JhbmdlSWQpIHtcbiAgICAgICAgY29uc3QgZmluZEtleVJhbmdlID0gT2JqZWN0LmtleXModGhpcy5kYXRlT3B0aW9ucygpLnJhbmdlcykuZmluZCgoa2V5KSA9PiBrZXkgPT09IGRhdGVSYW5nZVNlbGVjdGVkPy5xdWlja1JhbmdlSWQpO1xuICAgICAgICBpZiAoZmluZEtleVJhbmdlKSB7XG4gICAgICAgICAgdGhpcy5jaG9zZW5EYXRlRnJvbVJhbmdlcy5zZXQoeyBzZWxlY3RlZExhYmVsOiB0aGlzLmRhdGVPcHRpb25zKCkucmFuZ2VzW2ZpbmRLZXlSYW5nZV0gfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZGF0ZVJhbmdlU2VsZWN0ZWQ/LnN0YXJ0RGF0ZSAmJiBkYXRlUmFuZ2VTZWxlY3RlZD8uZW5kRGF0ZSkge1xuICAgICAgICBjb25zdCBmb3JtYXREYXRlID0gdGhpcy5oYXNUaW1lUGlja2VyKCkgPyAnREQvTU0vWVlZWSBISDptbScgOiAnREQvTU0vWVlZWSc7XG4gICAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IGdldERheWpzKHsgZGF0ZTogZGF0ZVJhbmdlU2VsZWN0ZWQ/LnN0YXJ0RGF0ZSB9KT8uZm9ybWF0KGZvcm1hdERhdGUpO1xuICAgICAgICBjb25zdCBlbmRUaW1lID0gZ2V0RGF5anMoeyBkYXRlOiBkYXRlUmFuZ2VTZWxlY3RlZD8uZW5kRGF0ZSB9KT8uZm9ybWF0KGZvcm1hdERhdGUpO1xuXG4gICAgICAgIHRoaXMuY2hvc2VuRGF0ZUZyb21SYW5nZXMuc2V0KHsgc2VsZWN0ZWRMYWJlbDogYCR7c3RhcnRUaW1lfSAtICR7ZW5kVGltZX1gIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZXJSZXNldChldmVudD86IEV2ZW50KSB7XG4gICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGF3YWl0IHRoaXMucmVzZXQodHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlc2V0KGNoZWNrSXNWYWxpZD86IGJvb2xlYW4sIGRhdGVSYW5nZVJlc2V0PzogSUVtaXREYXRlUmFuZ2UsIHNpbmdsZURhdGVSZXNldD86IElFbWl0U2luZ2xlRGF0ZSkge1xuICAgIHRoaXMuY2hvc2VuRGF0ZUZyb21SYW5nZXMuc2V0KHt9KTtcbiAgICB0aGlzLmRhdGVSYW5nZVNlbGVjdGVkLnNldChkYXRlUmFuZ2VSZXNldCk7XG4gICAgaWYgKGRhdGVSYW5nZVJlc2V0KSB7XG4gICAgICB0aGlzLnVwZGF0ZUNob3NlbkRhdGVGcm9tUmFuZ2VzRnJvbURhdGVSYW5nZVNlbGVjdGVkKGRhdGVSYW5nZVJlc2V0KTtcbiAgICB9XG4gICAgaWYgKHNpbmdsZURhdGVSZXNldCkge1xuICAgICAgdGhpcy5zaW5nbGVEYXRlU2VsZWN0ZWQuc2V0KHNpbmdsZURhdGVSZXNldCk7XG4gICAgfVxuICAgIHRoaXMub3V0UmVzZXQuZW1pdChkYXRlUmFuZ2VSZXNldCB8fCBzaW5nbGVEYXRlUmVzZXQpO1xuICAgIGlmIChjaGVja0lzVmFsaWQgJiYgdGhpcy52YWxpZFJlcXVpcmVkKCkpIHtcbiAgICAgIGF3YWl0IHRoaXMuY2hlY2tJc1ZhbGlkKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJVcGRhdGVXaWR0aCgpIHtcbiAgICB0aGlzLnBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudCgpPy51cGRhdGVQb3BvdmVyT3ZlcmxheVBvc2l0aW9uKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckNhbmNlbCgpIHtcbiAgICB0aGlzLnBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudCgpPy5yZW1vdmVQb3BvdmVyT3ZlcmxheSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjaGVja0lzVmFsaWQoKSB7XG4gICAgaWYgKHRoaXMucmVhZG9ubHkoKSB8fCB0aGlzLmRpc2FibGUoKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMudmFsaWRhdGUoKTtcblxuICAgIHJldHVybiB0aGlzLnNpbmdsZUVycm9yKCkubWVzc2FnZSA/IGZhbHNlIDogdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdmFsaWRhdGUoKSB7XG4gICAgdGhpcy5zaW5nbGVFcnJvci5zZXQoeyBtZXNzYWdlOiB1bmRlZmluZWQgfSk7XG5cbiAgICBpZiAoIXRoaXMudmFsaWRSZXF1aXJlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudmFsaWRSZXF1aXJlZCgpICYmICF0aGlzLmNob3NlbkRhdGVGcm9tUmFuZ2VzKCkuc2VsZWN0ZWRMYWJlbCkge1xuICAgICAgdGhpcy5zaW5nbGVFcnJvci5zZXQoe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnZhbGlkUmVxdWlyZWQoKT8ubWVzc2FnZSB8fCBFUlJPUl9NRVNTQUdFX0VNUFRZX1ZBTElELFxuICAgICAgICBpbnRlcnBvbGF0ZVBhcmFtczogdGhpcy52YWxpZFJlcXVpcmVkKCk/LmludGVycG9sYXRlUGFyYW1zIHx8IHt9LFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlc2V0RXJyb3IobWVzc2FnZT86IHN0cmluZywgaW50ZXJwb2xhdGVQYXJhbXM/OiBUWVBFX09CSkVDVCkge1xuICAgIHRoaXMuc2luZ2xlRXJyb3Iuc2V0KHsgbWVzc2FnZSwgaW50ZXJwb2xhdGVQYXJhbXMgfSk7XG4gIH1cblxuICBwcml2YXRlIGNvbXB1dGVkV2lkdGgoKSB7XG4gICAgaWYgKHRoaXMud2lkdGhCeUxhYmVsKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kZWZhdWx0V2lkdGgoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFdpZHRoKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaGFzVGltZVBpY2tlcigpKSB7XG4gICAgICByZXR1cm4gIXRoaXMuaXNTaW5nbGUoKSA/IDMyMiA6IDE5MDtcbiAgICB9XG4gICAgcmV0dXJuICF0aGlzLmlzU2luZ2xlKCkgPyAyMzIgOiAxNTI7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICByZXR1cm47XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJsaWJzLXVpLWRhdGUtcGlja2VyIHt7IGNsYXNzSW5jbHVkZSgpIH19XCI+XG4gIEBpZiAobGFiZWxDb25maWcoKTsgYXMgbGFiZWxDb25maWcpIHtcbiAgICA8bGlic191aS1jb21wb25lbnRzLWxhYmVsXG4gICAgICBbY2xhc3NJbmNsdWRlXT1cImxhYmVsQ29uZmlnLmNsYXNzSW5jbHVkZVwiXG4gICAgICBbbGFiZWxMZWZ0XT1cImxhYmVsQ29uZmlnLmxhYmVsTGVmdFwiXG4gICAgICBbbGFiZWxMZWZ0Q2xhc3NdPVwibGFiZWxDb25maWcubGFiZWxMZWZ0Q2xhc3NcIlxuICAgICAgW3JlcXVpcmVkXT1cImxhYmVsQ29uZmlnLnJlcXVpcmVkXCJcbiAgICAgIFtkZXNjcmlwdGlvbl09XCJsYWJlbENvbmZpZy5kZXNjcmlwdGlvblwiXG4gICAgICBbZGVzY3JpcHRpb25DbGFzc109XCJsYWJlbENvbmZpZy5kZXNjcmlwdGlvbkNsYXNzXCJcbiAgICAgIFtsYWJlbFJpZ2h0XT1cImxhYmVsQ29uZmlnLmxhYmVsUmlnaHRcIlxuICAgICAgW2xhYmVsUmlnaHRDbGFzc109XCJsYWJlbENvbmZpZy5sYWJlbFJpZ2h0Q2xhc3NcIlxuICAgICAgW29ubHlTaG93Q291bnRdPVwibGFiZWxDb25maWcub25seVNob3dDb3VudFwiXG4gICAgICBbYnV0dG9uc0xlZnRdPVwibGFiZWxDb25maWcuYnV0dG9uc0xlZnRcIlxuICAgICAgW2J1dHRvbnNSaWdodF09XCJsYWJlbENvbmZpZy5idXR0b25zUmlnaHRcIlxuICAgICAgW2Rpc2FibGVCdXR0b25zTGVmdF09XCJsYWJlbENvbmZpZy5kaXNhYmxlQnV0dG9uc0xlZnQgfHwgZGlzYWJsZSgpXCJcbiAgICAgIFtkaXNhYmxlQnV0dG9uc1JpZ2h0XT1cImxhYmVsQ29uZmlnLmRpc2FibGVCdXR0b25zUmlnaHQgfHwgZGlzYWJsZSgpXCJcbiAgICAgIFtoYXNUb2dnbGVdPVwibGFiZWxDb25maWcuaGFzVG9nZ2xlXCJcbiAgICAgIFt0b2dnbGVBY3RpdmVdPVwibGFiZWxDb25maWcudG9nZ2xlQWN0aXZlXCJcbiAgICAgIFt0b2dnbGVEaXNhYmxlXT1cImxhYmVsQ29uZmlnLnRvZ2dsZURpc2FibGUgfHwgZGlzYWJsZSgpXCJcbiAgICAgIFtwb3BvdmVyXT1cImxhYmVsQ29uZmlnLnBvcG92ZXJcIlxuICAgICAgW2ljb25Qb3BvdmVyQ2xhc3NdPVwibGFiZWxDb25maWcuaWNvblBvcG92ZXJDbGFzc1wiXG4gICAgICBbb25seVNob3dDb3VudF09XCJsYWJlbENvbmZpZy5vbmx5U2hvd0NvdW50XCJcbiAgICAgIFtsaW1pdExlbmd0aF09XCJsYWJlbENvbmZpZy5saW1pdExlbmd0aFwiXG4gICAgICBbYnV0dG9uc0Rlc2NyaXB0aW9uXT1cImxhYmVsQ29uZmlnLmJ1dHRvbnNEZXNjcmlwdGlvblwiXG4gICAgICBbZGlzYWJsZUJ1dHRvbnNEZXNjcmlwdGlvbl09XCJsYWJlbENvbmZpZy5kaXNhYmxlQnV0dG9uc0Rlc2NyaXB0aW9uIHx8IGRpc2FibGUoKVwiXG4gICAgICBbYnV0dG9uc0Rlc2NyaXB0aW9uQ29udGFpbmVyQ2xhc3NdPVwibGFiZWxDb25maWcuYnV0dG9uc0Rlc2NyaXB0aW9uQ29udGFpbmVyQ2xhc3NcIlxuICAgICAgW2NvdW50XT1cImxhYmVsQ29uZmlnLmNvdW50XCIgLz5cbiAgfVxuICA8ZGl2IGNsYXNzPVwiZmxleCB3LWZ1bGxcIj5cbiAgICA8bGlic191aS1jb21wb25lbnRzLXBvcG92ZXJcbiAgICAgIFtjbGFzc109XCJjbGFzc1BpY2tlckluY2x1ZGUoKVwiXG4gICAgICBbaWdub3JlU2hvd1BvcG92ZXJdPVwiZGlzYWJsZSgpIHx8IHJlYWRvbmx5KClcIlxuICAgICAgW21vZGVdPVwiJ2NsaWNrJ1wiXG4gICAgICBbaWdub3JlSGlkZGVuUG9wb3ZlckNvbnRlbnRXaGVuTW91c2VMZWF2ZV09XCJ0cnVlXCJcbiAgICAgIFtpZ25vcmVTdG9wUHJvcGFnYXRpb25FdmVudF09XCJpZ25vcmVTdG9wUHJvcGFnYXRpb25FdmVudCgpXCJcbiAgICAgIFtmbGFnTW91c2VdPVwiZmxhZ01vdXNlKClcIlxuICAgICAgW2NvbmZpZ109XCJ7XG4gICAgICAgIGFuaW1hdGlvbkNvbmZpZzoge30sXG4gICAgICAgIG1heFdpZHRoOiA3NzAsXG4gICAgICAgIG1heEhlaWdodDogNDI1LFxuICAgICAgICBkaXJlY3Rpb25EaXN0YW5jZTogMixcbiAgICAgICAgdGVtcGxhdGU6IGN1c3RvbVJhbmdlc1JlZixcbiAgICAgICAgd2lkdGhCeVBhcmVudDogd2lkdGhCeVBhcmVudCgpLFxuICAgICAgICB3aGl0ZVRoZW1lOiB0cnVlLFxuICAgICAgICBpZ25vcmVBcnJvdzogdHJ1ZSxcbiAgICAgICAgekluZGV4OiB6SW5kZXgoKSxcbiAgICAgICAgY2xhc3NJbmNsdWRlOiAncm91bmRlZC1bNHB4XSAnLFxuICAgICAgICBkaXJlY3Rpb246IGRpcmVjdGlvblBvcG92ZXIoKSxcbiAgICAgICAgcG9zaXRpb246IHsgbW9kZTogcmFuZ2VzUG9wb3ZlclBvc2l0aW9uKCksIGRpc3RhbmNlOiByYW5nZXNQb3BvdmVyUG9zaXRpb25EaXN0YW5jZSgpIH0sXG4gICAgICB9XCJcbiAgICAgIChvdXRDaGFuZ1N0YWdlRmxhZ01vdXNlKT1cImhhbmRsZXJDaGFuZ1N0YWdlUG9wb3ZlckZsYWdNb3VzZSgkZXZlbnQpXCJcbiAgICAgIChvdXRGdW5jdGlvbnNDb250cm9sKT1cImhhbmRsZXJGdW5jdGlvbkNvbnRyb2woJGV2ZW50KVwiXG4gICAgICAob3V0RXZlbnQpPVwiaGFuZGxlclBvcG92ZXJFdmVudCgkZXZlbnQpXCI+XG4gICAgICBAaWYgKCFpc05nQ29udGVudCgpKSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAjY29udGFpbmVyUmVmXG4gICAgICAgICAgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBweC1bMTJweF0gaC1bMzJweF0gcm91bmRlZC1bNHB4XSBiZy1bI2ZmZmZmZl0gY3Vyc29yLXBvaW50ZXIgbGlicy11aS1mb250LWg1ciB7eyBjbGFzc1BpY2tlckNvbnRlbnRJbmNsdWRlKCkgfX1cIlxuICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwiZGlzYWJsZSgpXCJcbiAgICAgICAgICBbY2xhc3MubGlicy11aS1kaXNhYmxlLWJhY2tncm91bmRdPVwiZGlzYWJsZSgpXCJcbiAgICAgICAgICBbY2xhc3MuIWJvcmRlci1ub25lXT1cImlnbm9yZUJvcmRlclF1aWNrUmFuZ2UoKVwiXG4gICAgICAgICAgW2NsYXNzLmxpYnMtdWktYm9yZGVyLWdlbmVyYWxdPVwiIXNpbmdsZUVycm9yKCkubWVzc2FnZSAmJiAhaWdub3JlQm9yZGVyUXVpY2tSYW5nZSgpXCJcbiAgICAgICAgICBbY2xhc3MubGlicy11aS1ib3JkZXItZXJyb3ItZ2VuZXJhbF09XCIoc2luZ2xlRXJyb3IoKS5tZXNzYWdlIHx8IGlzQm9yZGVyRXJyb3IoKSkgJiYgIWlnbm9yZUJvcmRlclF1aWNrUmFuZ2UoKVwiXG4gICAgICAgICAgW2NsYXNzLm1pbi13LVsyODRweF1dPVwiIWNob3NlbkRhdGVGcm9tUmFuZ2VzKCkuc2VsZWN0ZWRMYWJlbCAmJiAhaXNTaW5nbGUoKSAmJiBoYXNUaW1lUGlja2VyKClcIlxuICAgICAgICAgIFtjbGFzcy4hYm9yZGVyXT1cInNob3dSYW5nZXNQb3B1cCgpICYmICFpZ25vcmVCb3JkZXJRdWlja1JhbmdlKCkgJiYgIXJlYWRvbmx5KClcIlxuICAgICAgICAgIFtjbGFzcy4hYm9yZGVyLVsjNGU4Y2Y3XV09XCJzaG93UmFuZ2VzUG9wdXAoKSAmJiAhaWdub3JlQm9yZGVyUXVpY2tSYW5nZSgpICYmICFyZWFkb25seSgpXCJcbiAgICAgICAgICBbY2xhc3MubGlicy11aS1yZWFkb25seV09XCJyZWFkb25seSgpXCJcbiAgICAgICAgICBbY2xhc3MubGlicy11aS1yZWFkb25seS1iYWNrZ3JvdW5kXT1cInJlYWRvbmx5KClcIlxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJ3aWR0aCgpXCJcbiAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlclNlbGVjdFJhbmdlcygkZXZlbnQpXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxpYnMtdWktaWNvbi1jYWxlbmRhciB0ZXh0LVsjOWNhMmFkXSB0ZXh0LVsxNnB4XVwiPjwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwibWwtWzhweF0gbGlicy11aS1kYXRlLXBpY2tlci1sYWJlbFwiXG4gICAgICAgICAgICBbY2xhc3MuIXRleHQtWyMwNzE2MzFdXT1cIiFkaXNhYmxlKClcIlxuICAgICAgICAgICAgW2NsYXNzLiF0ZXh0LVsjOWNhMmFkXV09XCJkaXNhYmxlKClcIj5cbiAgICAgICAgICAgIEBpZiAoIWNob3NlbkRhdGVGcm9tUmFuZ2VzKCkuc2VsZWN0ZWRMYWJlbCkge1xuICAgICAgICAgICAgICBAaWYgKCFpc1NpbmdsZSgpKSB7XG4gICAgICAgICAgICAgICAgQGlmICghcGxhY2Vob2xkZXIoKSkge1xuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LVsjOWNhMmFkXVwiPlxuICAgICAgICAgICAgICAgICAgICBkZC9tbS95eXl5XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoaGFzVGltZVBpY2tlcigpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+Jm5ic3A7aGg6bW08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLSBkZC9tbS95eXl5XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoaGFzVGltZVBpY2tlcigpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+Jm5ic3A7aGg6bW08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1bIzljYTJhZF1cIj57eyBwbGFjZWhvbGRlcigpIHx8ICcgJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChpc1NpbmdsZSgpKSB7XG4gICAgICAgICAgICAgICAgQGlmICghcGxhY2Vob2xkZXIoKSkge1xuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LVsjOWNhMmFkXVwiPlxuICAgICAgICAgICAgICAgICAgICBkZC9tbS95eXl5XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoaGFzVGltZVBpY2tlcigpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+Jm5ic3A7aGg6bW08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1bIzljYTJhZF1cIj57eyBwbGFjZWhvbGRlcigpIHx8ICcgJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoY2hvc2VuRGF0ZUZyb21SYW5nZXMoKS5zZWxlY3RlZExhYmVsICYmICFpc1NpbmdsZSgpKSB7XG4gICAgICAgICAgICAgIHt7IGRpc3BsYXlSYW5nZVRpdGxlKCkgfX1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoY2hvc2VuRGF0ZUZyb21SYW5nZXMoKS5zZWxlY3RlZExhYmVsICYmIGlzU2luZ2xlKCkpIHtcbiAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzLnRleHQtWyMyOWM3Y2NdXT1cInVzZUNvbG9yTW9kZUV4aXN0KCkgfHwgZmFsc2VcIj5cbiAgICAgICAgICAgICAgICB7eyBjaG9zZW5EYXRlRnJvbVJhbmdlcygpLnNlbGVjdGVkTGFiZWwgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIEBpZiAoY2hvc2VuRGF0ZUZyb21SYW5nZXMoKS5zZWxlY3RlZExhYmVsICYmIGFsbG93UmVzZXQoKSAmJiAhZGlzYWJsZSgpICYmICFyZWFkb25seSgpKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGwtWzEycHhdIG1sLWF1dG8gaC1mdWxsIGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJsaWJzLXVpLWljb24tY2xvc2UtY2lyY2xlLXNvbGlkIHRleHQtWzE2cHhdIHRleHQtWyNjZGQwZDZdXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlclJlc2V0KCRldmVudClcIj48L2k+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgQGlmIChpc05nQ29udGVudCgpKSB7XG4gICAgICAgIDxkaXYgKGNsaWNrKT1cImhhbmRsZXJTZWxlY3RSYW5nZXMoJGV2ZW50KVwiPlxuICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9saWJzX3VpLWNvbXBvbmVudHMtcG9wb3Zlcj5cbiAgPC9kaXY+XG4gIEBpZiAoc2luZ2xlRXJyb3IoKS5tZXNzYWdlICYmICF2YWxpZFJlcXVpcmVkKCk/Lmlnbm9yZU1lc3NhZ2UpIHtcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cIm10LVs4cHhdIHRleHQtWyNlZTJkNDFdIGxpYnMtdWktZm9udC1oN3IgbGlicy11aS10ZXh0LWVycm9yXCJcbiAgICAgIFtpbm5lckhUTUxdPVwic2luZ2xlRXJyb3IoKS5tZXNzYWdlIHx8IEVSUk9SX01FU1NBR0VfRU1QVFlfVkFMSUQgfCB0cmFuc2xhdGU6IHZhbGlkUmVxdWlyZWQoKT8uaW50ZXJwb2xhdGVQYXJhbXNcIj48L2Rpdj5cbiAgfVxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjY3VzdG9tUmFuZ2VzUmVmPlxuICA8bGlic191aS1jb21wb25lbnRzLWRhdGV0aW1lLXBpY2tlci1jdXN0b21fcmFuZ2VzXG4gICAgW3pJbmRleF09XCJ6SW5kZXgoKVwiXG4gICAgW2NsYXNzSW5jbHVkZV09XCJjbGFzc0luY2x1ZGVDdXN0b21SYW5nZXMoKVwiXG4gICAgW3dpZHRoQnlQYXJlbnRdPVwid2lkdGhCeVBhcmVudCgpXCJcbiAgICBbZGF0ZU9wdGlvbnNdPVwiZGF0ZU9wdGlvbnMoKVwiXG4gICAgW3Bvc2l0aW9uUXVpY2tSYW5nZXNdPVwicG9zaXRpb25RdWlja1JhbmdlcygpXCJcbiAgICBbc2hvd0N1c3RvbVJhbmdlTGFiZWxdPVwic2hvd0N1c3RvbVJhbmdlTGFiZWwoKVwiXG4gICAgW2F1dG9BcHBseV09XCJhdXRvQXBwbHkoKVwiXG4gICAgW2lzU2luZ2xlXT1cImlzU2luZ2xlKClcIlxuICAgIFttaW5EYXRlXT1cIm1pbkRhdGUoKVwiXG4gICAgW21heERhdGVdPVwibWF4RGF0ZSgpXCJcbiAgICBbbGlzdFllYXJIaWRkZW5JbnB1dFNlYXJjaF09XCJsaXN0WWVhckhpZGRlbklucHV0U2VhcmNoKClcIlxuICAgIFtzaW5nbGVEYXRlU2VsZWN0ZWRdPVwic2luZ2xlRGF0ZVNlbGVjdGVkKClcIlxuICAgIFtkYXRlUmFuZ2VTZWxlY3RlZF09XCJkYXRlUmFuZ2VTZWxlY3RlZCgpXCJcbiAgICBbZXh0ZW5kUmFuZ2VzXT1cImV4dGVuZFJhbmdlcygpXCJcbiAgICBbaGFzVGltZVBpY2tlcl09XCJoYXNUaW1lUGlja2VyKClcIlxuICAgIChvdXRVcGRhdGVXaWR0aCk9XCJoYW5kbGVyVXBkYXRlV2lkdGgoKVwiXG4gICAgKG91dENhbmNlbCk9XCJoYW5kbGVyQ2FuY2VsKClcIlxuICAgIChvdXRTZWxlY3RTaW5nbGVEYXRlKT1cImhhbmRsZXJQaWNrZXJTaW5nbGVEYXRlKCRldmVudClcIlxuICAgIChvdXRTZWxlY3REYXRlUmFuZ2UpPVwiaGFuZGxlclBpY2tlckRhdGVSYW5nZSgkZXZlbnQpXCJcbiAgICAob3V0Q2hhbmdTdGFnZUZsYWdNb3VzZSk9XCJoYW5kbGVyQ2hhbmdTdGFnZUZsYWdNb3VzZSgkZXZlbnQpXCJcbiAgICAob3V0Q2xpY2tNZW51UmFuZ2VDdXN0b20pPVwiaGFuZGxlclVwZGF0ZVdpZHRoKClcIiAvPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
247
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9kYXRldGltZS9waWNrZXIvc3JjL3BpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZGF0ZXRpbWUvcGlja2VyL3NyYy9waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pKLE9BQU8sRUFBVSw4QkFBOEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ25GLE9BQU8sRUFBNEMsZ0NBQWdDLEVBQThDLE1BQU0sNkJBQTZCLENBQUM7QUFFckssT0FBTyxFQUFFLHlCQUF5QixFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsbURBQW1ELEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM5RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7O0FBZ0J0RSxNQUFNLE9BQU8sdUNBQXVDO0lBQ2xELGVBQWU7SUFDSSx5QkFBeUIsR0FBRyx5QkFBeUIsQ0FBQztJQUMvRCxlQUFlLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLEtBQUssR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNoRCxXQUFXLEdBQUcsTUFBTSxDQUFpQixFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzdELG9CQUFvQixHQUFHLE1BQU0sQ0FBYyxFQUFFLENBQUMsQ0FBQztJQUMvQyx3QkFBd0IsQ0FBa0M7SUFDMUQsaUJBQWlCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUMxQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxhQUErQixDQUFDO1FBRWxGLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdEMsT0FBTztRQUNULENBQUM7UUFFRCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDLENBQUMsQ0FBQztJQUVLLDJCQUEyQixHQUFHLE1BQU0sQ0FBMkMsU0FBUyxDQUFDLENBQUM7SUFFbEcsWUFBWTtJQUNILFdBQVcsR0FBRyxLQUFLLENBQXFELHFCQUFxQixFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssSUFBSSxxQkFBcUIsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3SixvQkFBb0IsR0FBRyxLQUFLLENBQW1CLElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7SUFDOUYsV0FBVyxHQUFHLEtBQUssRUFBVSxDQUFDO0lBQzlCLE9BQU8sR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUNqQyxZQUFZLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLGtCQUFrQixHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztJQUN2Qyx5QkFBeUIsR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUM7SUFDOUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQy9DLGlCQUFpQixHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUMxQyxhQUFhLEdBQUcsS0FBSyxDQUFVLElBQUksQ0FBQyxDQUFDO0lBQ3JDLFVBQVUsR0FBRyxLQUFLLENBQVUsSUFBSSxDQUFDLENBQUM7SUFDbEMsWUFBWSxHQUFHLEtBQUssQ0FBbUIsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN0RixnQkFBZ0IsR0FBRyxLQUFLLENBQTZELFFBQVEsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxJQUFJLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDNUksWUFBWSxHQUFHLEtBQUssQ0FBcUIsU0FBUyxDQUFDLENBQUM7SUFDcEQsUUFBUSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUNqQyxZQUFZLEdBQUcsS0FBSyxDQUFvQixFQUFFLENBQUMsQ0FBQztJQUM1QyxhQUFhLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLE9BQU8sR0FBRyxLQUFLLEVBQThCLENBQUM7SUFDOUMsT0FBTyxHQUFHLEtBQUssRUFBOEIsQ0FBQztJQUM5QyxXQUFXLEdBQUcsS0FBSyxFQUFVLENBQUM7SUFDOUIseUJBQXlCLEdBQUcsS0FBSyxDQUErQixLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBRWpILGFBQWEsR0FBRyxLQUFLLENBQTZCLFNBQVMsQ0FBQyxDQUFDO0lBQzdELDBCQUEwQixHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUNuRCxTQUFTLEdBQUcsS0FBSyxDQUFhLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ25GLGFBQWEsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDdEMsTUFBTSxHQUFHLEtBQUssQ0FBaUIsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM5RSxxQkFBcUIsR0FBRyxLQUFLLENBQXlELE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDM0ksNkJBQTZCLEdBQUcsS0FBSyxDQUFpQixDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9GLFdBQVcsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDcEMsd0JBQXdCLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLFNBQVMsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDbEMsbUJBQW1CLEdBQUcsS0FBSyxDQUFtQixNQUFNLENBQUMsQ0FBQyxDQUFDLDBDQUEwQztJQUNqRyx3QkFBd0IsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7SUFFakQsa0JBQWtCLEdBQUcsS0FBSyxFQUFtQixDQUFDO0lBQzlDLGlCQUFpQixHQUFHLEtBQUssRUFBa0IsQ0FBQztJQUVyRCxhQUFhO0lBQ0osc0JBQXNCLEdBQUcsTUFBTSxFQUFjLENBQUM7SUFDOUMsUUFBUSxHQUFHLE1BQU0sRUFBZ0QsQ0FBQztJQUNsRSxtQkFBbUIsR0FBRyxNQUFNLEVBQW1CLENBQUM7SUFDaEQsa0JBQWtCLEdBQUcsTUFBTSxFQUFrQixDQUFDO0lBQzlDLG1CQUFtQixHQUFHLE1BQU0sRUFBdUMsQ0FBQztJQUU3RTtRQUNFLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLENBQUM7WUFFN0MsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDVCxTQUFTLENBQUMsR0FBRyxFQUFFO29CQUNiLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztvQkFDNUUsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQ3hELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztnQkFDOUQsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxDQUFDO2dCQUNwQyxJQUFJLENBQUMsK0NBQStDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFvQixDQUFDLENBQUM7Z0JBRWpHLE9BQU87WUFDVCxDQUFDO1lBQ0QsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQywrQ0FBK0MsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQW9CLENBQUMsQ0FBQyxDQUFDO1FBQ3BILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxJQUFXLGdCQUFnQjtRQUN6QixPQUFPO1lBQ0wsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUMxQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3RDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDN0IsQ0FBQztJQUNKLENBQUM7SUFFUyxtQkFBbUIsQ0FBQyxLQUFZO1FBQ3hDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRVMsMEJBQTBCLENBQUMsU0FBcUI7UUFDeEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVTLGlDQUFpQyxDQUFDLFNBQXFCO1FBQy9ELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLG1CQUFtQixFQUFFLENBQUM7WUFDMUMsU0FBUyxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztRQUN2QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRVMsc0JBQXNCLENBQUMsS0FBbUM7UUFDbEUsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRVMsbUJBQW1CLENBQUMsS0FBeUI7UUFDckQsSUFBSSxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsQ0FBQztJQUNILENBQUM7SUFFUyxLQUFLLENBQUMsdUJBQXVCLENBQUMsSUFBcUI7UUFDM0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUM7WUFDekIsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsK0JBQStCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUVsSCxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQzNDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsR0FBRyxTQUFTLEVBQUUsQ0FBQztnQkFDdkMsT0FBTyxPQUFPLENBQUM7WUFDakIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsRUFBRSxvQkFBb0IsRUFBRSxDQUFDO1FBQzNELE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFUyxLQUFLLENBQUMsc0JBQXNCLENBQUMsSUFBb0I7UUFDekQsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM1RCxPQUFPO1FBQ1QsQ0FBQztRQUNELHlDQUF5QztRQUN6QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBRXBFLGdFQUFnRTtRQUNoRSw0REFBNEQ7UUFDNUQsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQztZQUN6QixNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSwrQkFBK0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3ZILE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLCtCQUErQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFFbkgsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUMzQyxPQUFPLENBQUMsYUFBYSxHQUFHLEdBQUcsU0FBUyxNQUFNLE9BQU8sRUFBRSxDQUFDO2dCQUNwRCxPQUFPLE9BQU8sQ0FBQztZQUNqQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxrV0FBa1c7UUFDbFcsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRTlILElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLDBCQUEwQixFQUFFLENBQUM7WUFDdEQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUMzQyxPQUFPLENBQUMsYUFBYSxHQUFHLDBCQUEwQixJQUFJLDBCQUEwQixDQUFDLEtBQUssQ0FBQztnQkFDdkYsT0FBTyxPQUFPLENBQUM7WUFDakIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNuSixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3JKLElBQUksQ0FBQywyQkFBMkIsRUFBRSxFQUFFLG9CQUFvQixFQUFFLENBQUM7UUFDM0QsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVPLCtDQUErQyxDQUFDLGlCQUFrQztRQUN4RixTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2IsSUFBSSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsQ0FBQztnQkFDcEMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssaUJBQWlCLEVBQUUsWUFBWSxDQUFDLENBQUM7Z0JBQ25ILElBQUksWUFBWSxFQUFFLENBQUM7b0JBQ2pCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQzFGLE9BQU87Z0JBQ1QsQ0FBQztZQUNILENBQUM7WUFDRCxJQUFJLGlCQUFpQixFQUFFLFNBQVMsSUFBSSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsQ0FBQztnQkFDL0QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO2dCQUM1RSxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3ZGLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFFbkYsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxFQUFFLGFBQWEsRUFBRSxHQUFHLFNBQVMsTUFBTSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDaEYsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVTLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBYTtRQUN4QyxLQUFLLEVBQUUsZUFBZSxFQUFFLENBQUM7UUFDekIsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFTyxLQUFLLENBQUMsS0FBSyxDQUFDLFlBQXNCLEVBQUUsY0FBK0IsRUFBRSxlQUFpQztRQUM1RyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDM0MsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsK0NBQStDLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdkUsQ0FBQztRQUNELElBQUksZUFBZSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLGVBQWUsQ0FBQyxDQUFDO1FBQ3RELElBQUksWUFBWSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRVMsa0JBQWtCO1FBQzFCLElBQUksQ0FBQywyQkFBMkIsRUFBRSxFQUFFLDRCQUE0QixFQUFFLENBQUM7SUFDckUsQ0FBQztJQUVTLGFBQWE7UUFDckIsSUFBSSxDQUFDLDJCQUEyQixFQUFFLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQztJQUM3RCxDQUFDO0lBRU8sS0FBSyxDQUFDLFlBQVk7UUFDeEIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDdEMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsTUFBTSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFdEIsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNuRCxDQUFDO0lBRU8sS0FBSyxDQUFDLFFBQVE7UUFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUU3QyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUM7WUFDMUIsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZFLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDO2dCQUNuQixPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLE9BQU8sSUFBSSx5QkFBeUI7Z0JBQ25FLGlCQUFpQixFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxpQkFBaUIsSUFBSSxFQUFFO2FBQ2pFLENBQUMsQ0FBQztZQUVILE9BQU87UUFDVCxDQUFDO0lBQ0gsQ0FBQztJQUVPLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBZ0IsRUFBRSxpQkFBK0I7UUFDeEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7WUFDeEIsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzdCLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ3RDLENBQUM7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUN0QyxDQUFDO0lBRUQsV0FBVztRQUNULE9BQU87SUFDVCxDQUFDO3dHQTlRVSx1Q0FBdUM7NEZBQXZDLHVDQUF1Qyx5c0xDeEJwRCwwK09BdUtBLHlERGpKWSxlQUFlLDRGQUFFLDhCQUE4Qiw0cUJBQUUsZ0NBQWdDLG9nQkFBRSxtREFBbUQ7OzRGQUVySSx1Q0FBdUM7a0JBVG5ELFNBQVM7K0JBRUUsb0NBQW9DLGNBR2xDLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLGVBQWUsRUFBRSw4QkFBOEIsRUFBRSxnQ0FBZ0MsRUFBRSxtREFBbUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIGlucHV0LCBtb2RlbCwgT25EZXN0cm95LCBPbkluaXQsIG91dHB1dCwgc2lnbmFsLCB1bnRyYWNrZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElMYWJlbCwgTGlic1VpQ29tcG9uZW50c0xhYmVsQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1sYWJlbCc7XG5pbXBvcnQgeyBJRmxhZ01vdXNlLCBJUG9wb3ZlckZ1bmN0aW9uQ29udHJvbEV2ZW50LCBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudCwgVFlQRV9QT1BPVkVSX0RJUkVDVElPTiwgVFlQRV9QT1BPVkVSX0VWRU5UIH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1wb3BvdmVyJztcbmltcG9ydCB7IFRZUEVfT0JKRUNUIH0gZnJvbSAnQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlcyc7XG5pbXBvcnQgeyBFUlJPUl9NRVNTQUdFX0VNUFRZX1ZBTElELCBnZXREYXlqcyB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgRGF5anMgfSBmcm9tICdkYXlqcyc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzRGF0ZXRpbWVQaWNrZXJDdXN0b21SYW5nZXNDb21wb25lbnQgfSBmcm9tICcuL2N1c3RvbS1yYW5nZXMvY3VzdG9tLXJhbmdlcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgZ2V0RGF0ZU9wdGlvbnNEZWZhdWx0IH0gZnJvbSAnLi9kZWZpbmVzL2RhdGUtb3B0aW9ucy5kZWZpbmUnO1xuaW1wb3J0IHsgSUVtaXREYXRlUmFuZ2UsIElFbWl0U2luZ2xlRGF0ZSB9IGZyb20gJy4vaW50ZXJmYWNlcy9jYWxlbmRhci1lbWl0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBJRGF0ZVJhbmdlIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2NhbGVuZGFyLXZhcmlhYmxlcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSURhdGVUaW1lUGlja2VyRnVuY3Rpb25Db250cm9sRXZlbnQgfSBmcm9tICcuL2ludGVyZmFjZXMvZnVuY3Rpb24tY29udHJvbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUNob3NlbkRhdGUsIExvY2FsaXphdGlvbkNvbmZpZywgVFlQRV9SQU5HRV9LRVkgfSBmcm9tICcuL2ludGVyZmFjZXMvcGlja2VyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJRGF0ZVRpbWVWYWxpZCB9IGZyb20gJy4vaW50ZXJmYWNlcy92YWxpZC5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaWJzX3VpLWNvbXBvbmVudHMtZGF0ZXRpbWUtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1RyYW5zbGF0ZU1vZHVsZSwgTGlic1VpQ29tcG9uZW50c0xhYmVsQ29tcG9uZW50LCBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudCwgTGlic1VpQ29tcG9uZW50c0RhdGV0aW1lUGlja2VyQ3VzdG9tUmFuZ2VzQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29tcG9uZW50c0RhdGV0aW1lUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKiogUFJPUEVSVFkgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEVSUk9SX01FU1NBR0VfRU1QVFlfVkFMSUQgPSBFUlJPUl9NRVNTQUdFX0VNUFRZX1ZBTElEO1xuICBwcm90ZWN0ZWQgc2hvd1Jhbmdlc1BvcHVwID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJvdGVjdGVkIHdpZHRoID0gY29tcHV0ZWQodGhpcy5jb21wdXRlZFdpZHRoLmJpbmQodGhpcykpO1xuICBwcm90ZWN0ZWQgc2luZ2xlRXJyb3IgPSBzaWduYWw8SURhdGVUaW1lVmFsaWQ+KHsgbWVzc2FnZTogdW5kZWZpbmVkIH0pO1xuICBwcm90ZWN0ZWQgY2hvc2VuRGF0ZUZyb21SYW5nZXMgPSBzaWduYWw8SUNob3NlbkRhdGU+KHt9KTtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkRGF0ZUZyb21DYWxlbmRhciE6IHsgc3RhcnQ/OiBEYXlqczsgZW5kPzogRGF5anMgfTtcbiAgcHJvdGVjdGVkIGRpc3BsYXlSYW5nZVRpdGxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkTGFiZWwgPSB0aGlzLmNob3NlbkRhdGVGcm9tUmFuZ2VzKCkuc2VsZWN0ZWRMYWJlbCBhcyBUWVBFX1JBTkdFX0tFWTtcblxuICAgIGlmICh0aGlzLmlzU2luZ2xlKCkgfHwgIXNlbGVjdGVkTGFiZWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gc2VsZWN0ZWRMYWJlbDtcbiAgfSk7XG5cbiAgcHJpdmF0ZSBwb3BvdmVyRnVuY3Rpb25Db250cm9sRXZlbnQgPSBzaWduYWw8SVBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAvKiogSU5QVVQgKi9cbiAgcmVhZG9ubHkgZGF0ZU9wdGlvbnMgPSBpbnB1dDxMb2NhbGl6YXRpb25Db25maWcsIExvY2FsaXphdGlvbkNvbmZpZyB8IHVuZGVmaW5lZD4oZ2V0RGF0ZU9wdGlvbnNEZWZhdWx0KCksIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/IGdldERhdGVPcHRpb25zRGVmYXVsdCgpIH0pO1xuICByZWFkb25seSBzaG93Q3VzdG9tUmFuZ2VMYWJlbCA9IGlucHV0PGJvb2xlYW4sIGJvb2xlYW4+KHRydWUsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/IHRydWUgfSk7XG4gIHJlYWRvbmx5IGxhYmVsQ29uZmlnID0gaW5wdXQ8SUxhYmVsPigpO1xuICByZWFkb25seSBkaXNhYmxlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSByZWFkb25seSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgY2xhc3NJbmNsdWRlID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHJlYWRvbmx5IGNsYXNzUGlja2VySW5jbHVkZSA9IGlucHV0PHN0cmluZz4oJycpO1xuICByZWFkb25seSBjbGFzc1BpY2tlckNvbnRlbnRJbmNsdWRlID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHJlYWRvbmx5IGlnbm9yZUJvcmRlclF1aWNrUmFuZ2UgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHVzZUNvbG9yTW9kZUV4aXN0ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBoYXNUaW1lUGlja2VyID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIHJlYWRvbmx5IGFsbG93UmVzZXQgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgcmVhZG9ubHkgd2lkdGhCeUxhYmVsID0gaW5wdXQ8Ym9vbGVhbiwgYm9vbGVhbj4odHJ1ZSwgeyB0cmFuc2Zvcm06ICh2YWx1ZSkgPT4gdmFsdWUgPz8gdHJ1ZSB9KTtcbiAgcmVhZG9ubHkgZGlyZWN0aW9uUG9wb3ZlciA9IGlucHV0PFRZUEVfUE9QT1ZFUl9ESVJFQ1RJT04sIFRZUEVfUE9QT1ZFUl9ESVJFQ1RJT04gfCB1bmRlZmluZWQ+KCdib3R0b20nLCB7IHRyYW5zZm9ybTogKHZhbHVlKSA9PiB2YWx1ZSA/PyAnYm90dG9tJyB9KTtcbiAgcmVhZG9ubHkgZGVmYXVsdFdpZHRoID0gaW5wdXQ8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBpc1NpbmdsZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgZXh0ZW5kUmFuZ2VzID0gaW5wdXQ8QXJyYXk8SURhdGVSYW5nZT4+KFtdKTtcbiAgcmVhZG9ubHkgaXNCb3JkZXJFcnJvciA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgbWluRGF0ZSA9IGlucHV0PERheWpzIHwgc3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSBtYXhEYXRlID0gaW5wdXQ8RGF5anMgfCBzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IHBsYWNlaG9sZGVyID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBsaXN0WWVhckhpZGRlbklucHV0U2VhcmNoID0gaW5wdXQ8Ym9vbGVhbiwgYm9vbGVhbiB8IHVuZGVmaW5lZD4oZmFsc2UsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/IGZhbHNlIH0pO1xuXG4gIHJlYWRvbmx5IHZhbGlkUmVxdWlyZWQgPSBpbnB1dDxJRGF0ZVRpbWVWYWxpZCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgaWdub3JlU3RvcFByb3BhZ2F0aW9uRXZlbnQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGZsYWdNb3VzZSA9IG1vZGVsPElGbGFnTW91c2U+KHsgaXNNb3VzZUVudGVyOiBmYWxzZSwgaXNNb3VzZUVudGVyQ29udGVudDogZmFsc2UgfSk7XG4gIHJlYWRvbmx5IHdpZHRoQnlQYXJlbnQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHpJbmRleCA9IGlucHV0PG51bWJlciwgbnVtYmVyPigxMjAwLCB7IHRyYW5zZm9ybTogKHZhbHVlKSA9PiB2YWx1ZSA/PyAxMjAwIH0pO1xuICByZWFkb25seSByYW5nZXNQb3BvdmVyUG9zaXRpb24gPSBpbnB1dDwnc3RhcnQnIHwgJ2NlbnRlcicgfCAnZW5kJywgJ3N0YXJ0JyB8ICdjZW50ZXInIHwgJ2VuZCc+KCdzdGFydCcsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/ICdzdGFydCcgfSk7XG4gIHJlYWRvbmx5IHJhbmdlc1BvcG92ZXJQb3NpdGlvbkRpc3RhbmNlID0gaW5wdXQ8bnVtYmVyLCBudW1iZXI+KDAsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/IDAgfSk7XG4gIHJlYWRvbmx5IGlzTmdDb250ZW50ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBjbGFzc0luY2x1ZGVDdXN0b21SYW5nZXMgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgcmVhZG9ubHkgYXV0b0FwcGx5ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBwb3NpdGlvblF1aWNrUmFuZ2VzID0gaW5wdXQ8J2xlZnQnIHwgJ3JpZ2h0Jz4oJ2xlZnQnKTsgLy8gduG7iyB0csOtIGxpc3QgY2jhu41uIG5oYW5oIGtob+G6o25nIHRo4budaSBnaWFuXG4gIHJlYWRvbmx5IHRyYWNrRGF0ZVJhZ2VVcGRhdGVMYWJlbCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICByZWFkb25seSBzaW5nbGVEYXRlU2VsZWN0ZWQgPSBtb2RlbDxJRW1pdFNpbmdsZURhdGU+KCk7XG4gIHJlYWRvbmx5IGRhdGVSYW5nZVNlbGVjdGVkID0gbW9kZWw8SUVtaXREYXRlUmFuZ2U+KCk7XG5cbiAgLyoqIE9VVFBVVCAqL1xuICByZWFkb25seSBvdXRDaGFuZ1N0YWdlRmxhZ01vdXNlID0gb3V0cHV0PElGbGFnTW91c2U+KCk7XG4gIHJlYWRvbmx5IG91dFJlc2V0ID0gb3V0cHV0PElFbWl0RGF0ZVJhbmdlIHwgSUVtaXRTaW5nbGVEYXRlIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSBvdXRTZWxlY3RTaW5nbGVEYXRlID0gb3V0cHV0PElFbWl0U2luZ2xlRGF0ZT4oKTtcbiAgcmVhZG9ubHkgb3V0U2VsZWN0RGF0ZVJhbmdlID0gb3V0cHV0PElFbWl0RGF0ZVJhbmdlPigpO1xuICByZWFkb25seSBvdXRGdW5jdGlvbnNDb250cm9sID0gb3V0cHV0PElEYXRlVGltZVBpY2tlckZ1bmN0aW9uQ29udHJvbEV2ZW50PigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBkYXRlID0gdGhpcy5zaW5nbGVEYXRlU2VsZWN0ZWQoKT8uZGF0ZTtcblxuICAgICAgaWYgKGRhdGUpIHtcbiAgICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBmb3JtYXREYXRlID0gdGhpcy5oYXNUaW1lUGlja2VyKCkgPyAnREQvTU0vWVlZWSBISDptbScgOiAnREQvTU0vWVlZWSc7XG4gICAgICAgICAgY29uc3Qgc3RhcnRUaW1lID0gZ2V0RGF5anMoeyBkYXRlIH0pLmZvcm1hdChmb3JtYXREYXRlKTtcbiAgICAgICAgICB0aGlzLmNob3NlbkRhdGVGcm9tUmFuZ2VzLnNldCh7IHNlbGVjdGVkTGFiZWw6IHN0YXJ0VGltZSB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnRyYWNrRGF0ZVJhZ2VVcGRhdGVMYWJlbCgpKSB7XG4gICAgICAgIHRoaXMudXBkYXRlQ2hvc2VuRGF0ZUZyb21SYW5nZXNGcm9tRGF0ZVJhbmdlU2VsZWN0ZWQodGhpcy5kYXRlUmFuZ2VTZWxlY3RlZCgpIGFzIElFbWl0RGF0ZVJhbmdlKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB1bnRyYWNrZWQoKCkgPT4gdGhpcy51cGRhdGVDaG9zZW5EYXRlRnJvbVJhbmdlc0Zyb21EYXRlUmFuZ2VTZWxlY3RlZCh0aGlzLmRhdGVSYW5nZVNlbGVjdGVkKCkgYXMgSUVtaXREYXRlUmFuZ2UpKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMub3V0RnVuY3Rpb25zQ29udHJvbC5lbWl0KHRoaXMuRnVuY3Rpb25zQ29udHJvbCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IEZ1bmN0aW9uc0NvbnRyb2woKTogSURhdGVUaW1lUGlja2VyRnVuY3Rpb25Db250cm9sRXZlbnQge1xuICAgIHJldHVybiB7XG4gICAgICBjaGVja0lzVmFsaWQ6IHRoaXMuY2hlY2tJc1ZhbGlkLmJpbmQodGhpcyksXG4gICAgICByZXNldEVycm9yOiB0aGlzLnJlc2V0RXJyb3IuYmluZCh0aGlzKSxcbiAgICAgIHJlc2V0OiB0aGlzLnJlc2V0LmJpbmQodGhpcyksXG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyU2VsZWN0UmFuZ2VzKGV2ZW50OiBFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJDaGFuZ1N0YWdlRmxhZ01vdXNlKGZsYWdNb3VzZTogSUZsYWdNb3VzZSkge1xuICAgIHRoaXMuZmxhZ01vdXNlLnNldChmbGFnTW91c2UpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJDaGFuZ1N0YWdlUG9wb3ZlckZsYWdNb3VzZShmbGFnTW91c2U6IElGbGFnTW91c2UpIHtcbiAgICBpZiAodGhpcy5mbGFnTW91c2UoKT8uaXNNb3VzZUVudGVyQ29udGVudCkge1xuICAgICAgZmxhZ01vdXNlLmlzTW91c2VFbnRlckNvbnRlbnQgPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLm91dENoYW5nU3RhZ2VGbGFnTW91c2UuZW1pdChmbGFnTW91c2UpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJGdW5jdGlvbkNvbnRyb2woZXZlbnQ6IElQb3BvdmVyRnVuY3Rpb25Db250cm9sRXZlbnQpIHtcbiAgICB0aGlzLnBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudC5zZXQoZXZlbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJQb3BvdmVyRXZlbnQoZXZlbnQ6IFRZUEVfUE9QT1ZFUl9FVkVOVCkge1xuICAgIGlmIChldmVudCA9PT0gJ3JlbW92ZScpIHtcbiAgICAgIHRoaXMuc2hvd1Jhbmdlc1BvcHVwLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZXJQaWNrZXJTaW5nbGVEYXRlKGRhdGE6IElFbWl0U2luZ2xlRGF0ZSkge1xuICAgIHRoaXMub3V0U2VsZWN0U2luZ2xlRGF0ZS5lbWl0KGRhdGEpO1xuICAgIHRoaXMuY2hvc2VuRGF0ZUZyb21SYW5nZXMuc2V0KHsgc2VsZWN0ZWRMYWJlbDogZGF0YS5kaXNwbGF5TGFiZWwgfSk7XG4gICAgaWYgKHRoaXMuaGFzVGltZVBpY2tlcigpKSB7XG4gICAgICBjb25zdCBzdGFydFRpbWUgPSBnZXREYXlqcyh7IGRhdGU6IGRhdGEuZGF0ZSwgcmV0dXJuRGF5anNJZkNvbmZpZ0RhdGVOb3RFeGlzdDogdHJ1ZSB9KS5mb3JtYXQoJ0REL01NL1lZWVkgSEg6bW0nKTtcblxuICAgICAgdGhpcy5jaG9zZW5EYXRlRnJvbVJhbmdlcy51cGRhdGUoKGN1cnJlbnQpID0+IHtcbiAgICAgICAgY3VycmVudC5zZWxlY3RlZExhYmVsID0gYCR7c3RhcnRUaW1lfWA7XG4gICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuc2luZ2xlRGF0ZVNlbGVjdGVkLnNldChkYXRhKTtcbiAgICB0aGlzLnBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudCgpPy5yZW1vdmVQb3BvdmVyT3ZlcmxheSgpO1xuICAgIGF3YWl0IHRoaXMuY2hlY2tJc1ZhbGlkKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlclBpY2tlckRhdGVSYW5nZShkYXRhOiBJRW1pdERhdGVSYW5nZSkge1xuICAgIGlmICgoZGF0YS5kaXNwbGF5TGFiZWw/LmluZGV4T2YoJ0ludmFsaWQgRGF0ZScpID8/IC0xKSA+IC0xKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIHRoaXMuc2VsZWN0ZWRLZXkgPSBkYXRhLnNlbGVjdGVkTGFiZWw7XG4gICAgdGhpcy5jaG9zZW5EYXRlRnJvbVJhbmdlcy5zZXQoeyBzZWxlY3RlZExhYmVsOiBkYXRhLmRpc3BsYXlMYWJlbCB9KTtcblxuICAgIC8vIHRoaXMuc2VsZWN0ZWQuc3RhcnQgPSBnZXREYXlqczxEYXlqcz4oe2RhdGU6ZGF0YS5zdGFydERhdGV9KTtcbiAgICAvLyB0aGlzLnNlbGVjdGVkLmVuZCA9IGdldERheWpzPERheWpzPih7ZGF0ZTpkYXRhLmVuZERhdGV9KTtcbiAgICBpZiAodGhpcy5oYXNUaW1lUGlja2VyKCkpIHtcbiAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IGdldERheWpzKHsgZGF0ZTogZGF0YS5zdGFydERhdGUsIHJldHVybkRheWpzSWZDb25maWdEYXRlTm90RXhpc3Q6IHRydWUgfSkuZm9ybWF0KCdERC9NTS9ZWVlZIEhIOm1tJyk7XG4gICAgICBjb25zdCBlbmRUaW1lID0gZ2V0RGF5anMoeyBkYXRlOiBkYXRhLmVuZERhdGUsIHJldHVybkRheWpzSWZDb25maWdEYXRlTm90RXhpc3Q6IHRydWUgfSkuZm9ybWF0KCdERC9NTS9ZWVlZIEhIOm1tJyk7XG5cbiAgICAgIHRoaXMuY2hvc2VuRGF0ZUZyb21SYW5nZXMudXBkYXRlKChjdXJyZW50KSA9PiB7XG4gICAgICAgIGN1cnJlbnQuc2VsZWN0ZWRMYWJlbCA9IGAke3N0YXJ0VGltZX0gLSAke2VuZFRpbWV9YDtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgICB9KTtcbiAgICB9XG4gICAgLy8gdGhpcy5tb0RhdGVQaWNrZXIuZW1pdCh0aGlzLnNpbmdsZURhdGVQaWNrZXIgPyB7IGNob3NlbkxhYmVsOiB0aGlzLmRhdGVWYWx1ZS5jaG9zZW5MYWJlbCwgc2luZ2xlRGF0ZTogdGhpcy5kYXRlVmFsdWUuc3RhcnREYXRlPy51dGMoKSwgc3RhcnREYXRlOiB0aGlzLmRhdGVWYWx1ZS5zdGFydERhdGU/LnV0YygpLCBlbmREYXRlOiB0aGlzLmRhdGVWYWx1ZS5lbmREYXRlPy51dGMoKSB9IDogeyBjaG9zZW5MYWJlbDogdGhpcy5kYXRlVmFsdWUuY2hvc2VuTGFiZWwsIHN0YXJ0RGF0ZTogdGhpcy5kYXRlVmFsdWUuc3RhcnREYXRlPy51dGMoKSwgZW5kRGF0ZTogdGhpcy5kYXRlVmFsdWUuZW5kRGF0ZT8udXRjKCkgfSk7XG4gICAgY29uc3Qgc2hvd1ZpZXdFeHRlcm5hbFJhbmdlTGFiZWwgPSB0aGlzLmV4dGVuZFJhbmdlcygpPy5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSB0aGlzLmNob3NlbkRhdGVGcm9tUmFuZ2VzKCkuc2VsZWN0ZWRMYWJlbCk7XG5cbiAgICBpZiAodGhpcy5leHRlbmRSYW5nZXMoKSAmJiBzaG93Vmlld0V4dGVybmFsUmFuZ2VMYWJlbCkge1xuICAgICAgdGhpcy5jaG9zZW5EYXRlRnJvbVJhbmdlcy51cGRhdGUoKGN1cnJlbnQpID0+IHtcbiAgICAgICAgY3VycmVudC5zZWxlY3RlZExhYmVsID0gc2hvd1ZpZXdFeHRlcm5hbFJhbmdlTGFiZWwgJiYgc2hvd1ZpZXdFeHRlcm5hbFJhbmdlTGFiZWwubGFiZWw7XG4gICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5kYXRlUmFuZ2VTZWxlY3RlZC5zZXQoeyBxdWlja1JhbmdlSWQ6IGRhdGEucXVpY2tSYW5nZUlkLCBkaXNwbGF5TGFiZWw6IGRhdGEuZGlzcGxheUxhYmVsLCBzdGFydERhdGU6IGRhdGEuc3RhcnREYXRlLCBlbmREYXRlOiBkYXRhLmVuZERhdGUgfSk7XG4gICAgdGhpcy5vdXRTZWxlY3REYXRlUmFuZ2UuZW1pdCh7IHF1aWNrUmFuZ2VJZDogZGF0YS5xdWlja1JhbmdlSWQsIGRpc3BsYXlMYWJlbDogZGF0YS5kaXNwbGF5TGFiZWwsIHN0YXJ0RGF0ZTogZGF0YS5zdGFydERhdGUsIGVuZERhdGU6IGRhdGEuZW5kRGF0ZSB9KTtcbiAgICB0aGlzLnBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudCgpPy5yZW1vdmVQb3BvdmVyT3ZlcmxheSgpO1xuICAgIGF3YWl0IHRoaXMuY2hlY2tJc1ZhbGlkKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNob3NlbkRhdGVGcm9tUmFuZ2VzRnJvbURhdGVSYW5nZVNlbGVjdGVkKGRhdGVSYW5nZVNlbGVjdGVkPzogSUVtaXREYXRlUmFuZ2UpIHtcbiAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgaWYgKGRhdGVSYW5nZVNlbGVjdGVkPy5xdWlja1JhbmdlSWQpIHtcbiAgICAgICAgY29uc3QgZmluZEtleVJhbmdlID0gT2JqZWN0LmtleXModGhpcy5kYXRlT3B0aW9ucygpLnJhbmdlcykuZmluZCgoa2V5KSA9PiBrZXkgPT09IGRhdGVSYW5nZVNlbGVjdGVkPy5xdWlja1JhbmdlSWQpO1xuICAgICAgICBpZiAoZmluZEtleVJhbmdlKSB7XG4gICAgICAgICAgdGhpcy5jaG9zZW5EYXRlRnJvbVJhbmdlcy5zZXQoeyBzZWxlY3RlZExhYmVsOiB0aGlzLmRhdGVPcHRpb25zKCkucmFuZ2VzW2ZpbmRLZXlSYW5nZV0gfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZGF0ZVJhbmdlU2VsZWN0ZWQ/LnN0YXJ0RGF0ZSAmJiBkYXRlUmFuZ2VTZWxlY3RlZD8uZW5kRGF0ZSkge1xuICAgICAgICBjb25zdCBmb3JtYXREYXRlID0gdGhpcy5oYXNUaW1lUGlja2VyKCkgPyAnREQvTU0vWVlZWSBISDptbScgOiAnREQvTU0vWVlZWSc7XG4gICAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IGdldERheWpzKHsgZGF0ZTogZGF0ZVJhbmdlU2VsZWN0ZWQ/LnN0YXJ0RGF0ZSB9KT8uZm9ybWF0KGZvcm1hdERhdGUpO1xuICAgICAgICBjb25zdCBlbmRUaW1lID0gZ2V0RGF5anMoeyBkYXRlOiBkYXRlUmFuZ2VTZWxlY3RlZD8uZW5kRGF0ZSB9KT8uZm9ybWF0KGZvcm1hdERhdGUpO1xuXG4gICAgICAgIHRoaXMuY2hvc2VuRGF0ZUZyb21SYW5nZXMuc2V0KHsgc2VsZWN0ZWRMYWJlbDogYCR7c3RhcnRUaW1lfSAtICR7ZW5kVGltZX1gIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZXJSZXNldChldmVudD86IEV2ZW50KSB7XG4gICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGF3YWl0IHRoaXMucmVzZXQodHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlc2V0KGNoZWNrSXNWYWxpZD86IGJvb2xlYW4sIGRhdGVSYW5nZVJlc2V0PzogSUVtaXREYXRlUmFuZ2UsIHNpbmdsZURhdGVSZXNldD86IElFbWl0U2luZ2xlRGF0ZSkge1xuICAgIHRoaXMuY2hvc2VuRGF0ZUZyb21SYW5nZXMuc2V0KHt9KTtcbiAgICB0aGlzLmRhdGVSYW5nZVNlbGVjdGVkLnNldChkYXRlUmFuZ2VSZXNldCk7XG4gICAgaWYgKGRhdGVSYW5nZVJlc2V0KSB7XG4gICAgICB0aGlzLnVwZGF0ZUNob3NlbkRhdGVGcm9tUmFuZ2VzRnJvbURhdGVSYW5nZVNlbGVjdGVkKGRhdGVSYW5nZVJlc2V0KTtcbiAgICB9XG4gICAgaWYgKHNpbmdsZURhdGVSZXNldCkge1xuICAgICAgdGhpcy5zaW5nbGVEYXRlU2VsZWN0ZWQuc2V0KHNpbmdsZURhdGVSZXNldCk7XG4gICAgfVxuICAgIHRoaXMub3V0UmVzZXQuZW1pdChkYXRlUmFuZ2VSZXNldCB8fCBzaW5nbGVEYXRlUmVzZXQpO1xuICAgIGlmIChjaGVja0lzVmFsaWQgJiYgdGhpcy52YWxpZFJlcXVpcmVkKCkpIHtcbiAgICAgIGF3YWl0IHRoaXMuY2hlY2tJc1ZhbGlkKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJVcGRhdGVXaWR0aCgpIHtcbiAgICB0aGlzLnBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudCgpPy51cGRhdGVQb3BvdmVyT3ZlcmxheVBvc2l0aW9uKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckNhbmNlbCgpIHtcbiAgICB0aGlzLnBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudCgpPy5yZW1vdmVQb3BvdmVyT3ZlcmxheSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjaGVja0lzVmFsaWQoKSB7XG4gICAgaWYgKHRoaXMucmVhZG9ubHkoKSB8fCB0aGlzLmRpc2FibGUoKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMudmFsaWRhdGUoKTtcblxuICAgIHJldHVybiB0aGlzLnNpbmdsZUVycm9yKCkubWVzc2FnZSA/IGZhbHNlIDogdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdmFsaWRhdGUoKSB7XG4gICAgdGhpcy5zaW5nbGVFcnJvci5zZXQoeyBtZXNzYWdlOiB1bmRlZmluZWQgfSk7XG5cbiAgICBpZiAoIXRoaXMudmFsaWRSZXF1aXJlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudmFsaWRSZXF1aXJlZCgpICYmICF0aGlzLmNob3NlbkRhdGVGcm9tUmFuZ2VzKCkuc2VsZWN0ZWRMYWJlbCkge1xuICAgICAgdGhpcy5zaW5nbGVFcnJvci5zZXQoe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnZhbGlkUmVxdWlyZWQoKT8ubWVzc2FnZSB8fCBFUlJPUl9NRVNTQUdFX0VNUFRZX1ZBTElELFxuICAgICAgICBpbnRlcnBvbGF0ZVBhcmFtczogdGhpcy52YWxpZFJlcXVpcmVkKCk/LmludGVycG9sYXRlUGFyYW1zIHx8IHt9LFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlc2V0RXJyb3IobWVzc2FnZT86IHN0cmluZywgaW50ZXJwb2xhdGVQYXJhbXM/OiBUWVBFX09CSkVDVCkge1xuICAgIHRoaXMuc2luZ2xlRXJyb3Iuc2V0KHsgbWVzc2FnZSwgaW50ZXJwb2xhdGVQYXJhbXMgfSk7XG4gIH1cblxuICBwcml2YXRlIGNvbXB1dGVkV2lkdGgoKSB7XG4gICAgaWYgKHRoaXMud2lkdGhCeUxhYmVsKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kZWZhdWx0V2lkdGgoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFdpZHRoKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaGFzVGltZVBpY2tlcigpKSB7XG4gICAgICByZXR1cm4gIXRoaXMuaXNTaW5nbGUoKSA/IDMyMiA6IDE5MDtcbiAgICB9XG4gICAgcmV0dXJuICF0aGlzLmlzU2luZ2xlKCkgPyAyMzIgOiAxNTI7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICByZXR1cm47XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJsaWJzLXVpLWRhdGUtcGlja2VyIHt7IGNsYXNzSW5jbHVkZSgpIH19XCI+XG4gIEBpZiAobGFiZWxDb25maWcoKTsgYXMgbGFiZWxDb25maWcpIHtcbiAgICA8bGlic191aS1jb21wb25lbnRzLWxhYmVsXG4gICAgICBbY2xhc3NJbmNsdWRlXT1cImxhYmVsQ29uZmlnLmNsYXNzSW5jbHVkZVwiXG4gICAgICBbbGFiZWxMZWZ0XT1cImxhYmVsQ29uZmlnLmxhYmVsTGVmdFwiXG4gICAgICBbbGFiZWxMZWZ0Q2xhc3NdPVwibGFiZWxDb25maWcubGFiZWxMZWZ0Q2xhc3NcIlxuICAgICAgW3JlcXVpcmVkXT1cImxhYmVsQ29uZmlnLnJlcXVpcmVkXCJcbiAgICAgIFtkZXNjcmlwdGlvbl09XCJsYWJlbENvbmZpZy5kZXNjcmlwdGlvblwiXG4gICAgICBbZGVzY3JpcHRpb25DbGFzc109XCJsYWJlbENvbmZpZy5kZXNjcmlwdGlvbkNsYXNzXCJcbiAgICAgIFtsYWJlbFJpZ2h0XT1cImxhYmVsQ29uZmlnLmxhYmVsUmlnaHRcIlxuICAgICAgW2xhYmVsUmlnaHRDbGFzc109XCJsYWJlbENvbmZpZy5sYWJlbFJpZ2h0Q2xhc3NcIlxuICAgICAgW29ubHlTaG93Q291bnRdPVwibGFiZWxDb25maWcub25seVNob3dDb3VudFwiXG4gICAgICBbYnV0dG9uc0xlZnRdPVwibGFiZWxDb25maWcuYnV0dG9uc0xlZnRcIlxuICAgICAgW2J1dHRvbnNSaWdodF09XCJsYWJlbENvbmZpZy5idXR0b25zUmlnaHRcIlxuICAgICAgW2Rpc2FibGVCdXR0b25zTGVmdF09XCJsYWJlbENvbmZpZy5kaXNhYmxlQnV0dG9uc0xlZnQgfHwgZGlzYWJsZSgpXCJcbiAgICAgIFtkaXNhYmxlQnV0dG9uc1JpZ2h0XT1cImxhYmVsQ29uZmlnLmRpc2FibGVCdXR0b25zUmlnaHQgfHwgZGlzYWJsZSgpXCJcbiAgICAgIFtoYXNUb2dnbGVdPVwibGFiZWxDb25maWcuaGFzVG9nZ2xlXCJcbiAgICAgIFt0b2dnbGVBY3RpdmVdPVwibGFiZWxDb25maWcudG9nZ2xlQWN0aXZlXCJcbiAgICAgIFt0b2dnbGVEaXNhYmxlXT1cImxhYmVsQ29uZmlnLnRvZ2dsZURpc2FibGUgfHwgZGlzYWJsZSgpXCJcbiAgICAgIFtwb3BvdmVyXT1cImxhYmVsQ29uZmlnLnBvcG92ZXJcIlxuICAgICAgW2ljb25Qb3BvdmVyQ2xhc3NdPVwibGFiZWxDb25maWcuaWNvblBvcG92ZXJDbGFzc1wiXG4gICAgICBbb25seVNob3dDb3VudF09XCJsYWJlbENvbmZpZy5vbmx5U2hvd0NvdW50XCJcbiAgICAgIFtsaW1pdExlbmd0aF09XCJsYWJlbENvbmZpZy5saW1pdExlbmd0aFwiXG4gICAgICBbYnV0dG9uc0Rlc2NyaXB0aW9uXT1cImxhYmVsQ29uZmlnLmJ1dHRvbnNEZXNjcmlwdGlvblwiXG4gICAgICBbZGlzYWJsZUJ1dHRvbnNEZXNjcmlwdGlvbl09XCJsYWJlbENvbmZpZy5kaXNhYmxlQnV0dG9uc0Rlc2NyaXB0aW9uIHx8IGRpc2FibGUoKVwiXG4gICAgICBbYnV0dG9uc0Rlc2NyaXB0aW9uQ29udGFpbmVyQ2xhc3NdPVwibGFiZWxDb25maWcuYnV0dG9uc0Rlc2NyaXB0aW9uQ29udGFpbmVyQ2xhc3NcIlxuICAgICAgW2NvdW50XT1cImxhYmVsQ29uZmlnLmNvdW50XCIgLz5cbiAgfVxuICA8ZGl2IGNsYXNzPVwiZmxleCB3LWZ1bGxcIj5cbiAgICA8bGlic191aS1jb21wb25lbnRzLXBvcG92ZXJcbiAgICAgIFtjbGFzc109XCJjbGFzc1BpY2tlckluY2x1ZGUoKVwiXG4gICAgICBbaWdub3JlU2hvd1BvcG92ZXJdPVwiZGlzYWJsZSgpIHx8IHJlYWRvbmx5KClcIlxuICAgICAgW21vZGVdPVwiJ2NsaWNrJ1wiXG4gICAgICBbaWdub3JlSGlkZGVuUG9wb3ZlckNvbnRlbnRXaGVuTW91c2VMZWF2ZV09XCJ0cnVlXCJcbiAgICAgIFtpZ25vcmVTdG9wUHJvcGFnYXRpb25FdmVudF09XCJpZ25vcmVTdG9wUHJvcGFnYXRpb25FdmVudCgpXCJcbiAgICAgIFtmbGFnTW91c2VdPVwiZmxhZ01vdXNlKClcIlxuICAgICAgW2NvbmZpZ109XCJ7XG4gICAgICAgIGFuaW1hdGlvbkNvbmZpZzoge30sXG4gICAgICAgIG1heFdpZHRoOiA3NzAsXG4gICAgICAgIG1heEhlaWdodDogNDI1LFxuICAgICAgICBkaXJlY3Rpb25EaXN0YW5jZTogMixcbiAgICAgICAgdGVtcGxhdGU6IGN1c3RvbVJhbmdlc1JlZixcbiAgICAgICAgd2lkdGhCeVBhcmVudDogd2lkdGhCeVBhcmVudCgpLFxuICAgICAgICB3aGl0ZVRoZW1lOiB0cnVlLFxuICAgICAgICBpZ25vcmVBcnJvdzogdHJ1ZSxcbiAgICAgICAgekluZGV4OiB6SW5kZXgoKSxcbiAgICAgICAgY2xhc3NJbmNsdWRlOiAncm91bmRlZC1bNHB4XSAnLFxuICAgICAgICBkaXJlY3Rpb246IGRpcmVjdGlvblBvcG92ZXIoKSxcbiAgICAgICAgcG9zaXRpb246IHsgbW9kZTogcmFuZ2VzUG9wb3ZlclBvc2l0aW9uKCksIGRpc3RhbmNlOiByYW5nZXNQb3BvdmVyUG9zaXRpb25EaXN0YW5jZSgpIH0sXG4gICAgICB9XCJcbiAgICAgIChvdXRDaGFuZ1N0YWdlRmxhZ01vdXNlKT1cImhhbmRsZXJDaGFuZ1N0YWdlUG9wb3ZlckZsYWdNb3VzZSgkZXZlbnQpXCJcbiAgICAgIChvdXRGdW5jdGlvbnNDb250cm9sKT1cImhhbmRsZXJGdW5jdGlvbkNvbnRyb2woJGV2ZW50KVwiXG4gICAgICAob3V0RXZlbnQpPVwiaGFuZGxlclBvcG92ZXJFdmVudCgkZXZlbnQpXCI+XG4gICAgICBAaWYgKCFpc05nQ29udGVudCgpKSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAjY29udGFpbmVyUmVmXG4gICAgICAgICAgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBweC1bMTJweF0gaC1bMzJweF0gcm91bmRlZC1bNHB4XSBiZy1bI2ZmZmZmZl0gY3Vyc29yLXBvaW50ZXIgbGlicy11aS1mb250LWg1ciB7eyBjbGFzc1BpY2tlckNvbnRlbnRJbmNsdWRlKCkgfX1cIlxuICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwiZGlzYWJsZSgpXCJcbiAgICAgICAgICBbY2xhc3MubGlicy11aS1kaXNhYmxlLWJhY2tncm91bmRdPVwiZGlzYWJsZSgpXCJcbiAgICAgICAgICBbY2xhc3MuIWJvcmRlci1ub25lXT1cImlnbm9yZUJvcmRlclF1aWNrUmFuZ2UoKVwiXG4gICAgICAgICAgW2NsYXNzLmxpYnMtdWktYm9yZGVyLWdlbmVyYWxdPVwiIXNpbmdsZUVycm9yKCkubWVzc2FnZSAmJiAhaWdub3JlQm9yZGVyUXVpY2tSYW5nZSgpXCJcbiAgICAgICAgICBbY2xhc3MubGlicy11aS1ib3JkZXItZXJyb3ItZ2VuZXJhbF09XCIoc2luZ2xlRXJyb3IoKS5tZXNzYWdlIHx8IGlzQm9yZGVyRXJyb3IoKSkgJiYgIWlnbm9yZUJvcmRlclF1aWNrUmFuZ2UoKVwiXG4gICAgICAgICAgW2NsYXNzLm1pbi13LVsyODRweF1dPVwiIWNob3NlbkRhdGVGcm9tUmFuZ2VzKCkuc2VsZWN0ZWRMYWJlbCAmJiAhaXNTaW5nbGUoKSAmJiBoYXNUaW1lUGlja2VyKClcIlxuICAgICAgICAgIFtjbGFzcy4hYm9yZGVyXT1cInNob3dSYW5nZXNQb3B1cCgpICYmICFpZ25vcmVCb3JkZXJRdWlja1JhbmdlKCkgJiYgIXJlYWRvbmx5KClcIlxuICAgICAgICAgIFtjbGFzcy4hYm9yZGVyLVsjNGU4Y2Y3XV09XCJzaG93UmFuZ2VzUG9wdXAoKSAmJiAhaWdub3JlQm9yZGVyUXVpY2tSYW5nZSgpICYmICFyZWFkb25seSgpXCJcbiAgICAgICAgICBbY2xhc3MubGlicy11aS1yZWFkb25seV09XCJyZWFkb25seSgpXCJcbiAgICAgICAgICBbY2xhc3MubGlicy11aS1yZWFkb25seS1iYWNrZ3JvdW5kXT1cInJlYWRvbmx5KClcIlxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJ3aWR0aCgpXCJcbiAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlclNlbGVjdFJhbmdlcygkZXZlbnQpXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxpYnMtdWktaWNvbi1jYWxlbmRhciB0ZXh0LVsjOWNhMmFkXSB0ZXh0LVsxNnB4XVwiPjwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwibWwtWzhweF0gbGlicy11aS1kYXRlLXBpY2tlci1sYWJlbFwiXG4gICAgICAgICAgICBbY2xhc3MuIXRleHQtWyMwNzE2MzFdXT1cIiFkaXNhYmxlKClcIlxuICAgICAgICAgICAgW2NsYXNzLiF0ZXh0LVsjOWNhMmFkXV09XCJkaXNhYmxlKClcIj5cbiAgICAgICAgICAgIEBpZiAoIWNob3NlbkRhdGVGcm9tUmFuZ2VzKCkuc2VsZWN0ZWRMYWJlbCkge1xuICAgICAgICAgICAgICBAaWYgKCFpc1NpbmdsZSgpKSB7XG4gICAgICAgICAgICAgICAgQGlmICghcGxhY2Vob2xkZXIoKSkge1xuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LVsjOWNhMmFkXVwiPlxuICAgICAgICAgICAgICAgICAgICBkZC9tbS95eXl5XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoaGFzVGltZVBpY2tlcigpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+Jm5ic3A7aGg6bW08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLSBkZC9tbS95eXl5XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoaGFzVGltZVBpY2tlcigpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+Jm5ic3A7aGg6bW08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1bIzljYTJhZF1cIj5cbiAgICAgICAgICAgICAgICAgICAgQGxldCBjb25zdEh0bWxQbGFjZWhvbGRlciA9IHBsYWNlaG9sZGVyKCkgfHwgJyAnO1xuICAgICAgICAgICAgICAgICAgICB7eyBjb25zdEh0bWxQbGFjZWhvbGRlciB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKGlzU2luZ2xlKCkpIHtcbiAgICAgICAgICAgICAgICBAaWYgKCFwbGFjZWhvbGRlcigpKSB7XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtWyM5Y2EyYWRdXCI+XG4gICAgICAgICAgICAgICAgICAgIGRkL21tL3l5eXlcbiAgICAgICAgICAgICAgICAgICAgQGlmIChoYXNUaW1lUGlja2VyKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4mbmJzcDtoaDptbTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LVsjOWNhMmFkXVwiPlxuICAgICAgICAgICAgICAgICAgICBAbGV0IGNvbnN0SHRtbFBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXIoKSB8fCAnICc7XG4gICAgICAgICAgICAgICAgICAgIHt7IGNvbnN0SHRtbFBsYWNlaG9sZGVyIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGNob3NlbkRhdGVGcm9tUmFuZ2VzKCkuc2VsZWN0ZWRMYWJlbCAmJiAhaXNTaW5nbGUoKSkge1xuICAgICAgICAgICAgICB7eyBkaXNwbGF5UmFuZ2VUaXRsZSgpIH19XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGNob3NlbkRhdGVGcm9tUmFuZ2VzKCkuc2VsZWN0ZWRMYWJlbCAmJiBpc1NpbmdsZSgpKSB7XG4gICAgICAgICAgICAgIDxzcGFuIFtjbGFzcy50ZXh0LVsjMjljN2NjXV09XCJ1c2VDb2xvck1vZGVFeGlzdCgpIHx8IGZhbHNlXCI+XG4gICAgICAgICAgICAgICAge3sgY2hvc2VuRGF0ZUZyb21SYW5nZXMoKS5zZWxlY3RlZExhYmVsIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICBAaWYgKGNob3NlbkRhdGVGcm9tUmFuZ2VzKCkuc2VsZWN0ZWRMYWJlbCAmJiBhbGxvd1Jlc2V0KCkgJiYgIWRpc2FibGUoKSAmJiAhcmVhZG9ubHkoKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsLVsxMnB4XSBtbC1hdXRvIGgtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwibGlicy11aS1pY29uLWNsb3NlLWNpcmNsZS1zb2xpZCB0ZXh0LVsxNnB4XSB0ZXh0LVsjY2RkMGQ2XVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZXJSZXNldCgkZXZlbnQpXCI+PC9pPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIEBpZiAoaXNOZ0NvbnRlbnQoKSkge1xuICAgICAgICA8ZGl2IChjbGljayk9XCJoYW5kbGVyU2VsZWN0UmFuZ2VzKCRldmVudClcIj5cbiAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvbGlic191aS1jb21wb25lbnRzLXBvcG92ZXI+XG4gIDwvZGl2PlxuICBAaWYgKHNpbmdsZUVycm9yKCkubWVzc2FnZSAmJiAhdmFsaWRSZXF1aXJlZCgpPy5pZ25vcmVNZXNzYWdlKSB7XG4gICAgQGxldCBjb25zdEh0bWxNZXNzYWdlID0gc2luZ2xlRXJyb3IoKS5tZXNzYWdlIHx8IEVSUk9SX01FU1NBR0VfRU1QVFlfVkFMSUQ7XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJtdC1bOHB4XSB0ZXh0LVsjZWUyZDQxXSBsaWJzLXVpLWZvbnQtaDdyIGxpYnMtdWktdGV4dC1lcnJvclwiXG4gICAgICBbaW5uZXJIVE1MXT1cImNvbnN0SHRtbE1lc3NhZ2UgfCB0cmFuc2xhdGU6IHZhbGlkUmVxdWlyZWQoKT8uaW50ZXJwb2xhdGVQYXJhbXNcIj48L2Rpdj5cbiAgfVxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjY3VzdG9tUmFuZ2VzUmVmPlxuICA8bGlic191aS1jb21wb25lbnRzLWRhdGV0aW1lLXBpY2tlci1jdXN0b21fcmFuZ2VzXG4gICAgW3pJbmRleF09XCJ6SW5kZXgoKVwiXG4gICAgW2NsYXNzSW5jbHVkZV09XCJjbGFzc0luY2x1ZGVDdXN0b21SYW5nZXMoKVwiXG4gICAgW3dpZHRoQnlQYXJlbnRdPVwid2lkdGhCeVBhcmVudCgpXCJcbiAgICBbZGF0ZU9wdGlvbnNdPVwiZGF0ZU9wdGlvbnMoKVwiXG4gICAgW3Bvc2l0aW9uUXVpY2tSYW5nZXNdPVwicG9zaXRpb25RdWlja1JhbmdlcygpXCJcbiAgICBbc2hvd0N1c3RvbVJhbmdlTGFiZWxdPVwic2hvd0N1c3RvbVJhbmdlTGFiZWwoKVwiXG4gICAgW2F1dG9BcHBseV09XCJhdXRvQXBwbHkoKVwiXG4gICAgW2lzU2luZ2xlXT1cImlzU2luZ2xlKClcIlxuICAgIFttaW5EYXRlXT1cIm1pbkRhdGUoKVwiXG4gICAgW21heERhdGVdPVwibWF4RGF0ZSgpXCJcbiAgICBbbGlzdFllYXJIaWRkZW5JbnB1dFNlYXJjaF09XCJsaXN0WWVhckhpZGRlbklucHV0U2VhcmNoKClcIlxuICAgIFtzaW5nbGVEYXRlU2VsZWN0ZWRdPVwic2luZ2xlRGF0ZVNlbGVjdGVkKClcIlxuICAgIFtkYXRlUmFuZ2VTZWxlY3RlZF09XCJkYXRlUmFuZ2VTZWxlY3RlZCgpXCJcbiAgICBbZXh0ZW5kUmFuZ2VzXT1cImV4dGVuZFJhbmdlcygpXCJcbiAgICBbaGFzVGltZVBpY2tlcl09XCJoYXNUaW1lUGlja2VyKClcIlxuICAgIChvdXRVcGRhdGVXaWR0aCk9XCJoYW5kbGVyVXBkYXRlV2lkdGgoKVwiXG4gICAgKG91dENhbmNlbCk9XCJoYW5kbGVyQ2FuY2VsKClcIlxuICAgIChvdXRTZWxlY3RTaW5nbGVEYXRlKT1cImhhbmRsZXJQaWNrZXJTaW5nbGVEYXRlKCRldmVudClcIlxuICAgIChvdXRTZWxlY3REYXRlUmFuZ2UpPVwiaGFuZGxlclBpY2tlckRhdGVSYW5nZSgkZXZlbnQpXCJcbiAgICAob3V0Q2hhbmdTdGFnZUZsYWdNb3VzZSk9XCJoYW5kbGVyQ2hhbmdTdGFnZUZsYWdNb3VzZSgkZXZlbnQpXCJcbiAgICAob3V0Q2xpY2tNZW51UmFuZ2VDdXN0b20pPVwiaGFuZGxlclVwZGF0ZVdpZHRoKClcIiAvPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -2009,11 +2009,11 @@ class LibsUiComponentsDatetimePickerComponent {
|
|
|
2009
2009
|
return;
|
|
2010
2010
|
}
|
|
2011
2011
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsDatetimePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2012
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsDatetimePickerComponent, isStandalone: true, selector: "libs_ui-components-datetime-picker", inputs: { dateOptions: { classPropertyName: "dateOptions", publicName: "dateOptions", isSignal: true, isRequired: false, transformFunction: null }, showCustomRangeLabel: { classPropertyName: "showCustomRangeLabel", publicName: "showCustomRangeLabel", isSignal: true, isRequired: false, transformFunction: null }, labelConfig: { classPropertyName: "labelConfig", publicName: "labelConfig", isSignal: true, isRequired: false, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, classInclude: { classPropertyName: "classInclude", publicName: "classInclude", isSignal: true, isRequired: false, transformFunction: null }, classPickerInclude: { classPropertyName: "classPickerInclude", publicName: "classPickerInclude", isSignal: true, isRequired: false, transformFunction: null }, classPickerContentInclude: { classPropertyName: "classPickerContentInclude", publicName: "classPickerContentInclude", isSignal: true, isRequired: false, transformFunction: null }, ignoreBorderQuickRange: { classPropertyName: "ignoreBorderQuickRange", publicName: "ignoreBorderQuickRange", isSignal: true, isRequired: false, transformFunction: null }, useColorModeExist: { classPropertyName: "useColorModeExist", publicName: "useColorModeExist", isSignal: true, isRequired: false, transformFunction: null }, hasTimePicker: { classPropertyName: "hasTimePicker", publicName: "hasTimePicker", isSignal: true, isRequired: false, transformFunction: null }, allowReset: { classPropertyName: "allowReset", publicName: "allowReset", isSignal: true, isRequired: false, transformFunction: null }, widthByLabel: { classPropertyName: "widthByLabel", publicName: "widthByLabel", isSignal: true, isRequired: false, transformFunction: null }, directionPopover: { classPropertyName: "directionPopover", publicName: "directionPopover", isSignal: true, isRequired: false, transformFunction: null }, defaultWidth: { classPropertyName: "defaultWidth", publicName: "defaultWidth", isSignal: true, isRequired: false, transformFunction: null }, isSingle: { classPropertyName: "isSingle", publicName: "isSingle", isSignal: true, isRequired: false, transformFunction: null }, extendRanges: { classPropertyName: "extendRanges", publicName: "extendRanges", isSignal: true, isRequired: false, transformFunction: null }, isBorderError: { classPropertyName: "isBorderError", publicName: "isBorderError", 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 }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, listYearHiddenInputSearch: { classPropertyName: "listYearHiddenInputSearch", publicName: "listYearHiddenInputSearch", isSignal: true, isRequired: false, transformFunction: null }, validRequired: { classPropertyName: "validRequired", publicName: "validRequired", isSignal: true, isRequired: false, transformFunction: null }, ignoreStopPropagationEvent: { classPropertyName: "ignoreStopPropagationEvent", publicName: "ignoreStopPropagationEvent", isSignal: true, isRequired: false, transformFunction: null }, flagMouse: { classPropertyName: "flagMouse", publicName: "flagMouse", isSignal: true, isRequired: false, transformFunction: null }, widthByParent: { classPropertyName: "widthByParent", publicName: "widthByParent", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, rangesPopoverPosition: { classPropertyName: "rangesPopoverPosition", publicName: "rangesPopoverPosition", isSignal: true, isRequired: false, transformFunction: null }, rangesPopoverPositionDistance: { classPropertyName: "rangesPopoverPositionDistance", publicName: "rangesPopoverPositionDistance", isSignal: true, isRequired: false, transformFunction: null }, isNgContent: { classPropertyName: "isNgContent", publicName: "isNgContent", isSignal: true, isRequired: false, transformFunction: null }, classIncludeCustomRanges: { classPropertyName: "classIncludeCustomRanges", publicName: "classIncludeCustomRanges", isSignal: true, isRequired: false, transformFunction: null }, autoApply: { classPropertyName: "autoApply", publicName: "autoApply", isSignal: true, isRequired: false, transformFunction: null }, positionQuickRanges: { classPropertyName: "positionQuickRanges", publicName: "positionQuickRanges", isSignal: true, isRequired: false, transformFunction: null }, trackDateRageUpdateLabel: { classPropertyName: "trackDateRageUpdateLabel", publicName: "trackDateRageUpdateLabel", 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: { flagMouse: "flagMouseChange", singleDateSelected: "singleDateSelectedChange", dateRangeSelected: "dateRangeSelectedChange", outChangStageFlagMouse: "outChangStageFlagMouse", outReset: "outReset", outSelectSingleDate: "outSelectSingleDate", outSelectDateRange: "outSelectDateRange", outFunctionsControl: "outFunctionsControl" }, ngImport: i0, template: "<div class=\"libs-ui-date-picker {{ classInclude() }}\">\n @if (labelConfig(); as labelConfig) {\n <libs_ui-components-label\n [classInclude]=\"labelConfig.classInclude\"\n [labelLeft]=\"labelConfig.labelLeft\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [required]=\"labelConfig.required\"\n [description]=\"labelConfig.description\"\n [descriptionClass]=\"labelConfig.descriptionClass\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [buttonsRight]=\"labelConfig.buttonsRight\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft || disable()\"\n [disableButtonsRight]=\"labelConfig.disableButtonsRight || disable()\"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleDisable]=\"labelConfig.toggleDisable || disable()\"\n [popover]=\"labelConfig.popover\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [limitLength]=\"labelConfig.limitLength\"\n [buttonsDescription]=\"labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"labelConfig.disableButtonsDescription || disable()\"\n [buttonsDescriptionContainerClass]=\"labelConfig.buttonsDescriptionContainerClass\"\n [count]=\"labelConfig.count\" />\n }\n <div class=\"flex w-full\">\n <libs_ui-components-popover\n [class]=\"classPickerInclude()\"\n [ignoreShowPopover]=\"disable() || readonly()\"\n [mode]=\"'click'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [ignoreStopPropagationEvent]=\"ignoreStopPropagationEvent()\"\n [flagMouse]=\"flagMouse()\"\n [config]=\"{\n animationConfig: {},\n maxWidth: 770,\n maxHeight: 425,\n directionDistance: 2,\n template: customRangesRef,\n widthByParent: widthByParent(),\n whiteTheme: true,\n ignoreArrow: true,\n zIndex: zIndex(),\n classInclude: 'rounded-[4px] ',\n direction: directionPopover(),\n position: { mode: rangesPopoverPosition(), distance: rangesPopoverPositionDistance() },\n }\"\n (outChangStageFlagMouse)=\"handlerChangStagePopoverFlagMouse($event)\"\n (outFunctionsControl)=\"handlerFunctionControl($event)\"\n (outEvent)=\"handlerPopoverEvent($event)\">\n @if (!isNgContent()) {\n <div\n #containerRef\n class=\"flex items-center px-[12px] h-[32px] rounded-[4px] bg-[#ffffff] cursor-pointer libs-ui-font-h5r {{ classPickerContentInclude() }}\"\n [class.libs-ui-disable]=\"disable()\"\n [class.libs-ui-disable-background]=\"disable()\"\n [class.!border-none]=\"ignoreBorderQuickRange()\"\n [class.libs-ui-border-general]=\"!singleError().message && !ignoreBorderQuickRange()\"\n [class.libs-ui-border-error-general]=\"(singleError().message || isBorderError()) && !ignoreBorderQuickRange()\"\n [class.min-w-[284px]]=\"!chosenDateFromRanges().selectedLabel && !isSingle() && hasTimePicker()\"\n [class.!border]=\"showRangesPopup() && !ignoreBorderQuickRange() && !readonly()\"\n [class.!border-[#4e8cf7]]=\"showRangesPopup() && !ignoreBorderQuickRange() && !readonly()\"\n [class.libs-ui-readonly]=\"readonly()\"\n [class.libs-ui-readonly-background]=\"readonly()\"\n [style.width.px]=\"width()\"\n (click)=\"handlerSelectRanges($event)\">\n <div class=\"libs-ui-icon-calendar text-[#9ca2ad] text-[16px]\"></div>\n <div\n class=\"ml-[8px] libs-ui-date-picker-label\"\n [class.!text-[#071631]]=\"!disable()\"\n [class.!text-[#9ca2ad]]=\"disable()\">\n @if (!chosenDateFromRanges().selectedLabel) {\n @if (!isSingle()) {\n @if (!placeholder()) {\n <span class=\"text-[#9ca2ad]\">\n dd/mm/yyyy\n @if (hasTimePicker()) {\n <span> hh:mm</span>\n }\n - dd/mm/yyyy\n @if (hasTimePicker()) {\n <span> hh:mm</span>\n }\n </span>\n } @else {\n <span class=\"text-[#9ca2ad]\">{{ placeholder() || ' ' | translate }}</span>\n }\n }\n @if (isSingle()) {\n @if (!placeholder()) {\n <span class=\"text-[#9ca2ad]\">\n dd/mm/yyyy\n @if (hasTimePicker()) {\n <span> hh:mm</span>\n }\n </span>\n } @else {\n <span class=\"text-[#9ca2ad]\">{{ placeholder() || ' ' | translate }}</span>\n }\n }\n }\n @if (chosenDateFromRanges().selectedLabel && !isSingle()) {\n {{ displayRangeTitle() }}\n }\n @if (chosenDateFromRanges().selectedLabel && isSingle()) {\n <span [class.text-[#29c7cc]]=\"useColorModeExist() || false\">\n {{ chosenDateFromRanges().selectedLabel }}\n </span>\n }\n </div>\n @if (chosenDateFromRanges().selectedLabel && allowReset() && !disable() && !readonly()) {\n <div class=\"pl-[12px] ml-auto h-full flex items-center\">\n <i\n class=\"libs-ui-icon-close-circle-solid text-[16px] text-[#cdd0d6]\"\n (click)=\"handlerReset($event)\"></i>\n </div>\n }\n </div>\n }\n @if (isNgContent()) {\n <div (click)=\"handlerSelectRanges($event)\">\n <ng-content></ng-content>\n </div>\n }\n </libs_ui-components-popover>\n </div>\n @if (singleError().message && !validRequired()?.ignoreMessage) {\n <div\n class=\"mt-[8px] text-[#ee2d41] libs-ui-font-h7r libs-ui-text-error\"\n [innerHTML]=\"singleError().message || ERROR_MESSAGE_EMPTY_VALID | translate: validRequired()?.interpolateParams\"></div>\n }\n</div>\n\n<ng-template #customRangesRef>\n <libs_ui-components-datetime-picker-custom_ranges\n [zIndex]=\"zIndex()\"\n [classInclude]=\"classIncludeCustomRanges()\"\n [widthByParent]=\"widthByParent()\"\n [dateOptions]=\"dateOptions()\"\n [positionQuickRanges]=\"positionQuickRanges()\"\n [showCustomRangeLabel]=\"showCustomRangeLabel()\"\n [autoApply]=\"autoApply()\"\n [isSingle]=\"isSingle()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [listYearHiddenInputSearch]=\"listYearHiddenInputSearch()\"\n [singleDateSelected]=\"singleDateSelected()\"\n [dateRangeSelected]=\"dateRangeSelected()\"\n [extendRanges]=\"extendRanges()\"\n [hasTimePicker]=\"hasTimePicker()\"\n (outUpdateWidth)=\"handlerUpdateWidth()\"\n (outCancel)=\"handlerCancel()\"\n (outSelectSingleDate)=\"handlerPickerSingleDate($event)\"\n (outSelectDateRange)=\"handlerPickerDateRange($event)\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"\n (outClickMenuRangeCustom)=\"handlerUpdateWidth()\" />\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: LibsUiComponentsLabelComponent, selector: "libs_ui-components-label", inputs: ["iconPopoverClass", "classInclude", "labelLeft", "labelLeftClass", "labelLeftBehindToggleButton", "popover", "required", "buttonsLeft", "disableButtonsLeft", "buttonsRight", "disableButtonsRight", "labelRight", "labelRightClass", "labelRightRequired", "hasToggle", "toggleSize", "toggleActive", "toggleDisable", "description", "descriptionClass", "buttonsDescription", "disableButtonsDescription", "buttonsDescriptionContainerClass", "onlyShowCount", "zIndexPopover", "timerDestroyPopover", "count", "limitLength"], outputs: ["outClickButton", "outSwitchEvent", "outLabelRightClick", "outLabelLeftClick"] }, { 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"] }, { kind: "component", type: LibsUiComponentsDatetimePickerCustomRangesComponent, selector: "libs_ui-components-datetime-picker-custom_ranges", inputs: ["zIndex", "classInclude", "extendRanges", "widthByParent", "autoApply", "minDate", "maxDate", "listYearHiddenInputSearch", "positionQuickRanges", "isSingle", "hasTimePicker", "flagMouse", "dateOptions", "alwaysShowCalendars", "startDate", "endDate", "showCustomRangeLabel", "keepCalendarOpeningWithRange", "singleDateSelected", "dateRangeSelected"], outputs: ["startDateChange", "endDateChange", "outChangStageFlagMouse", "outUpdateWidth", "outCancel", "outSelectSingleDate", "outSelectDateRange", "outClickMenuRangeCustom"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2012
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsDatetimePickerComponent, isStandalone: true, selector: "libs_ui-components-datetime-picker", inputs: { dateOptions: { classPropertyName: "dateOptions", publicName: "dateOptions", isSignal: true, isRequired: false, transformFunction: null }, showCustomRangeLabel: { classPropertyName: "showCustomRangeLabel", publicName: "showCustomRangeLabel", isSignal: true, isRequired: false, transformFunction: null }, labelConfig: { classPropertyName: "labelConfig", publicName: "labelConfig", isSignal: true, isRequired: false, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, classInclude: { classPropertyName: "classInclude", publicName: "classInclude", isSignal: true, isRequired: false, transformFunction: null }, classPickerInclude: { classPropertyName: "classPickerInclude", publicName: "classPickerInclude", isSignal: true, isRequired: false, transformFunction: null }, classPickerContentInclude: { classPropertyName: "classPickerContentInclude", publicName: "classPickerContentInclude", isSignal: true, isRequired: false, transformFunction: null }, ignoreBorderQuickRange: { classPropertyName: "ignoreBorderQuickRange", publicName: "ignoreBorderQuickRange", isSignal: true, isRequired: false, transformFunction: null }, useColorModeExist: { classPropertyName: "useColorModeExist", publicName: "useColorModeExist", isSignal: true, isRequired: false, transformFunction: null }, hasTimePicker: { classPropertyName: "hasTimePicker", publicName: "hasTimePicker", isSignal: true, isRequired: false, transformFunction: null }, allowReset: { classPropertyName: "allowReset", publicName: "allowReset", isSignal: true, isRequired: false, transformFunction: null }, widthByLabel: { classPropertyName: "widthByLabel", publicName: "widthByLabel", isSignal: true, isRequired: false, transformFunction: null }, directionPopover: { classPropertyName: "directionPopover", publicName: "directionPopover", isSignal: true, isRequired: false, transformFunction: null }, defaultWidth: { classPropertyName: "defaultWidth", publicName: "defaultWidth", isSignal: true, isRequired: false, transformFunction: null }, isSingle: { classPropertyName: "isSingle", publicName: "isSingle", isSignal: true, isRequired: false, transformFunction: null }, extendRanges: { classPropertyName: "extendRanges", publicName: "extendRanges", isSignal: true, isRequired: false, transformFunction: null }, isBorderError: { classPropertyName: "isBorderError", publicName: "isBorderError", 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 }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, listYearHiddenInputSearch: { classPropertyName: "listYearHiddenInputSearch", publicName: "listYearHiddenInputSearch", isSignal: true, isRequired: false, transformFunction: null }, validRequired: { classPropertyName: "validRequired", publicName: "validRequired", isSignal: true, isRequired: false, transformFunction: null }, ignoreStopPropagationEvent: { classPropertyName: "ignoreStopPropagationEvent", publicName: "ignoreStopPropagationEvent", isSignal: true, isRequired: false, transformFunction: null }, flagMouse: { classPropertyName: "flagMouse", publicName: "flagMouse", isSignal: true, isRequired: false, transformFunction: null }, widthByParent: { classPropertyName: "widthByParent", publicName: "widthByParent", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, rangesPopoverPosition: { classPropertyName: "rangesPopoverPosition", publicName: "rangesPopoverPosition", isSignal: true, isRequired: false, transformFunction: null }, rangesPopoverPositionDistance: { classPropertyName: "rangesPopoverPositionDistance", publicName: "rangesPopoverPositionDistance", isSignal: true, isRequired: false, transformFunction: null }, isNgContent: { classPropertyName: "isNgContent", publicName: "isNgContent", isSignal: true, isRequired: false, transformFunction: null }, classIncludeCustomRanges: { classPropertyName: "classIncludeCustomRanges", publicName: "classIncludeCustomRanges", isSignal: true, isRequired: false, transformFunction: null }, autoApply: { classPropertyName: "autoApply", publicName: "autoApply", isSignal: true, isRequired: false, transformFunction: null }, positionQuickRanges: { classPropertyName: "positionQuickRanges", publicName: "positionQuickRanges", isSignal: true, isRequired: false, transformFunction: null }, trackDateRageUpdateLabel: { classPropertyName: "trackDateRageUpdateLabel", publicName: "trackDateRageUpdateLabel", 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: { flagMouse: "flagMouseChange", singleDateSelected: "singleDateSelectedChange", dateRangeSelected: "dateRangeSelectedChange", outChangStageFlagMouse: "outChangStageFlagMouse", outReset: "outReset", outSelectSingleDate: "outSelectSingleDate", outSelectDateRange: "outSelectDateRange", outFunctionsControl: "outFunctionsControl" }, ngImport: i0, template: "<div class=\"libs-ui-date-picker {{ classInclude() }}\">\n @if (labelConfig(); as labelConfig) {\n <libs_ui-components-label\n [classInclude]=\"labelConfig.classInclude\"\n [labelLeft]=\"labelConfig.labelLeft\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [required]=\"labelConfig.required\"\n [description]=\"labelConfig.description\"\n [descriptionClass]=\"labelConfig.descriptionClass\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [buttonsRight]=\"labelConfig.buttonsRight\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft || disable()\"\n [disableButtonsRight]=\"labelConfig.disableButtonsRight || disable()\"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleDisable]=\"labelConfig.toggleDisable || disable()\"\n [popover]=\"labelConfig.popover\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [limitLength]=\"labelConfig.limitLength\"\n [buttonsDescription]=\"labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"labelConfig.disableButtonsDescription || disable()\"\n [buttonsDescriptionContainerClass]=\"labelConfig.buttonsDescriptionContainerClass\"\n [count]=\"labelConfig.count\" />\n }\n <div class=\"flex w-full\">\n <libs_ui-components-popover\n [class]=\"classPickerInclude()\"\n [ignoreShowPopover]=\"disable() || readonly()\"\n [mode]=\"'click'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [ignoreStopPropagationEvent]=\"ignoreStopPropagationEvent()\"\n [flagMouse]=\"flagMouse()\"\n [config]=\"{\n animationConfig: {},\n maxWidth: 770,\n maxHeight: 425,\n directionDistance: 2,\n template: customRangesRef,\n widthByParent: widthByParent(),\n whiteTheme: true,\n ignoreArrow: true,\n zIndex: zIndex(),\n classInclude: 'rounded-[4px] ',\n direction: directionPopover(),\n position: { mode: rangesPopoverPosition(), distance: rangesPopoverPositionDistance() },\n }\"\n (outChangStageFlagMouse)=\"handlerChangStagePopoverFlagMouse($event)\"\n (outFunctionsControl)=\"handlerFunctionControl($event)\"\n (outEvent)=\"handlerPopoverEvent($event)\">\n @if (!isNgContent()) {\n <div\n #containerRef\n class=\"flex items-center px-[12px] h-[32px] rounded-[4px] bg-[#ffffff] cursor-pointer libs-ui-font-h5r {{ classPickerContentInclude() }}\"\n [class.libs-ui-disable]=\"disable()\"\n [class.libs-ui-disable-background]=\"disable()\"\n [class.!border-none]=\"ignoreBorderQuickRange()\"\n [class.libs-ui-border-general]=\"!singleError().message && !ignoreBorderQuickRange()\"\n [class.libs-ui-border-error-general]=\"(singleError().message || isBorderError()) && !ignoreBorderQuickRange()\"\n [class.min-w-[284px]]=\"!chosenDateFromRanges().selectedLabel && !isSingle() && hasTimePicker()\"\n [class.!border]=\"showRangesPopup() && !ignoreBorderQuickRange() && !readonly()\"\n [class.!border-[#4e8cf7]]=\"showRangesPopup() && !ignoreBorderQuickRange() && !readonly()\"\n [class.libs-ui-readonly]=\"readonly()\"\n [class.libs-ui-readonly-background]=\"readonly()\"\n [style.width.px]=\"width()\"\n (click)=\"handlerSelectRanges($event)\">\n <div class=\"libs-ui-icon-calendar text-[#9ca2ad] text-[16px]\"></div>\n <div\n class=\"ml-[8px] libs-ui-date-picker-label\"\n [class.!text-[#071631]]=\"!disable()\"\n [class.!text-[#9ca2ad]]=\"disable()\">\n @if (!chosenDateFromRanges().selectedLabel) {\n @if (!isSingle()) {\n @if (!placeholder()) {\n <span class=\"text-[#9ca2ad]\">\n dd/mm/yyyy\n @if (hasTimePicker()) {\n <span> hh:mm</span>\n }\n - dd/mm/yyyy\n @if (hasTimePicker()) {\n <span> hh:mm</span>\n }\n </span>\n } @else {\n <span class=\"text-[#9ca2ad]\">\n @let constHtmlPlaceholder = placeholder() || ' ';\n {{ constHtmlPlaceholder | translate }}\n </span>\n }\n }\n @if (isSingle()) {\n @if (!placeholder()) {\n <span class=\"text-[#9ca2ad]\">\n dd/mm/yyyy\n @if (hasTimePicker()) {\n <span> hh:mm</span>\n }\n </span>\n } @else {\n <span class=\"text-[#9ca2ad]\">\n @let constHtmlPlaceholder = placeholder() || ' ';\n {{ constHtmlPlaceholder | translate }}\n </span>\n }\n }\n }\n @if (chosenDateFromRanges().selectedLabel && !isSingle()) {\n {{ displayRangeTitle() }}\n }\n @if (chosenDateFromRanges().selectedLabel && isSingle()) {\n <span [class.text-[#29c7cc]]=\"useColorModeExist() || false\">\n {{ chosenDateFromRanges().selectedLabel }}\n </span>\n }\n </div>\n @if (chosenDateFromRanges().selectedLabel && allowReset() && !disable() && !readonly()) {\n <div class=\"pl-[12px] ml-auto h-full flex items-center\">\n <i\n class=\"libs-ui-icon-close-circle-solid text-[16px] text-[#cdd0d6]\"\n (click)=\"handlerReset($event)\"></i>\n </div>\n }\n </div>\n }\n @if (isNgContent()) {\n <div (click)=\"handlerSelectRanges($event)\">\n <ng-content></ng-content>\n </div>\n }\n </libs_ui-components-popover>\n </div>\n @if (singleError().message && !validRequired()?.ignoreMessage) {\n @let constHtmlMessage = singleError().message || ERROR_MESSAGE_EMPTY_VALID;\n <div\n class=\"mt-[8px] text-[#ee2d41] libs-ui-font-h7r libs-ui-text-error\"\n [innerHTML]=\"constHtmlMessage | translate: validRequired()?.interpolateParams\"></div>\n }\n</div>\n\n<ng-template #customRangesRef>\n <libs_ui-components-datetime-picker-custom_ranges\n [zIndex]=\"zIndex()\"\n [classInclude]=\"classIncludeCustomRanges()\"\n [widthByParent]=\"widthByParent()\"\n [dateOptions]=\"dateOptions()\"\n [positionQuickRanges]=\"positionQuickRanges()\"\n [showCustomRangeLabel]=\"showCustomRangeLabel()\"\n [autoApply]=\"autoApply()\"\n [isSingle]=\"isSingle()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [listYearHiddenInputSearch]=\"listYearHiddenInputSearch()\"\n [singleDateSelected]=\"singleDateSelected()\"\n [dateRangeSelected]=\"dateRangeSelected()\"\n [extendRanges]=\"extendRanges()\"\n [hasTimePicker]=\"hasTimePicker()\"\n (outUpdateWidth)=\"handlerUpdateWidth()\"\n (outCancel)=\"handlerCancel()\"\n (outSelectSingleDate)=\"handlerPickerSingleDate($event)\"\n (outSelectDateRange)=\"handlerPickerDateRange($event)\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"\n (outClickMenuRangeCustom)=\"handlerUpdateWidth()\" />\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: LibsUiComponentsLabelComponent, selector: "libs_ui-components-label", inputs: ["iconPopoverClass", "classInclude", "labelLeft", "labelLeftClass", "labelLeftBehindToggleButton", "popover", "required", "buttonsLeft", "disableButtonsLeft", "buttonsRight", "disableButtonsRight", "labelRight", "labelRightClass", "labelRightRequired", "hasToggle", "toggleSize", "toggleActive", "toggleDisable", "description", "descriptionClass", "buttonsDescription", "disableButtonsDescription", "buttonsDescriptionContainerClass", "onlyShowCount", "zIndexPopover", "timerDestroyPopover", "count", "limitLength"], outputs: ["outClickButton", "outSwitchEvent", "outLabelRightClick", "outLabelLeftClick"] }, { 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"] }, { kind: "component", type: LibsUiComponentsDatetimePickerCustomRangesComponent, selector: "libs_ui-components-datetime-picker-custom_ranges", inputs: ["zIndex", "classInclude", "extendRanges", "widthByParent", "autoApply", "minDate", "maxDate", "listYearHiddenInputSearch", "positionQuickRanges", "isSingle", "hasTimePicker", "flagMouse", "dateOptions", "alwaysShowCalendars", "startDate", "endDate", "showCustomRangeLabel", "keepCalendarOpeningWithRange", "singleDateSelected", "dateRangeSelected"], outputs: ["startDateChange", "endDateChange", "outChangStageFlagMouse", "outUpdateWidth", "outCancel", "outSelectSingleDate", "outSelectDateRange", "outClickMenuRangeCustom"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2013
2013
|
}
|
|
2014
2014
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsDatetimePickerComponent, decorators: [{
|
|
2015
2015
|
type: Component,
|
|
2016
|
-
args: [{ selector: 'libs_ui-components-datetime-picker', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [TranslateModule, LibsUiComponentsLabelComponent, LibsUiComponentsPopoverComponent, LibsUiComponentsDatetimePickerCustomRangesComponent], template: "<div class=\"libs-ui-date-picker {{ classInclude() }}\">\n @if (labelConfig(); as labelConfig) {\n <libs_ui-components-label\n [classInclude]=\"labelConfig.classInclude\"\n [labelLeft]=\"labelConfig.labelLeft\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [required]=\"labelConfig.required\"\n [description]=\"labelConfig.description\"\n [descriptionClass]=\"labelConfig.descriptionClass\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [buttonsRight]=\"labelConfig.buttonsRight\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft || disable()\"\n [disableButtonsRight]=\"labelConfig.disableButtonsRight || disable()\"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleDisable]=\"labelConfig.toggleDisable || disable()\"\n [popover]=\"labelConfig.popover\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [limitLength]=\"labelConfig.limitLength\"\n [buttonsDescription]=\"labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"labelConfig.disableButtonsDescription || disable()\"\n [buttonsDescriptionContainerClass]=\"labelConfig.buttonsDescriptionContainerClass\"\n [count]=\"labelConfig.count\" />\n }\n <div class=\"flex w-full\">\n <libs_ui-components-popover\n [class]=\"classPickerInclude()\"\n [ignoreShowPopover]=\"disable() || readonly()\"\n [mode]=\"'click'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [ignoreStopPropagationEvent]=\"ignoreStopPropagationEvent()\"\n [flagMouse]=\"flagMouse()\"\n [config]=\"{\n animationConfig: {},\n maxWidth: 770,\n maxHeight: 425,\n directionDistance: 2,\n template: customRangesRef,\n widthByParent: widthByParent(),\n whiteTheme: true,\n ignoreArrow: true,\n zIndex: zIndex(),\n classInclude: 'rounded-[4px] ',\n direction: directionPopover(),\n position: { mode: rangesPopoverPosition(), distance: rangesPopoverPositionDistance() },\n }\"\n (outChangStageFlagMouse)=\"handlerChangStagePopoverFlagMouse($event)\"\n (outFunctionsControl)=\"handlerFunctionControl($event)\"\n (outEvent)=\"handlerPopoverEvent($event)\">\n @if (!isNgContent()) {\n <div\n #containerRef\n class=\"flex items-center px-[12px] h-[32px] rounded-[4px] bg-[#ffffff] cursor-pointer libs-ui-font-h5r {{ classPickerContentInclude() }}\"\n [class.libs-ui-disable]=\"disable()\"\n [class.libs-ui-disable-background]=\"disable()\"\n [class.!border-none]=\"ignoreBorderQuickRange()\"\n [class.libs-ui-border-general]=\"!singleError().message && !ignoreBorderQuickRange()\"\n [class.libs-ui-border-error-general]=\"(singleError().message || isBorderError()) && !ignoreBorderQuickRange()\"\n [class.min-w-[284px]]=\"!chosenDateFromRanges().selectedLabel && !isSingle() && hasTimePicker()\"\n [class.!border]=\"showRangesPopup() && !ignoreBorderQuickRange() && !readonly()\"\n [class.!border-[#4e8cf7]]=\"showRangesPopup() && !ignoreBorderQuickRange() && !readonly()\"\n [class.libs-ui-readonly]=\"readonly()\"\n [class.libs-ui-readonly-background]=\"readonly()\"\n [style.width.px]=\"width()\"\n (click)=\"handlerSelectRanges($event)\">\n <div class=\"libs-ui-icon-calendar text-[#9ca2ad] text-[16px]\"></div>\n <div\n class=\"ml-[8px] libs-ui-date-picker-label\"\n [class.!text-[#071631]]=\"!disable()\"\n [class.!text-[#9ca2ad]]=\"disable()\">\n @if (!chosenDateFromRanges().selectedLabel) {\n @if (!isSingle()) {\n @if (!placeholder()) {\n <span class=\"text-[#9ca2ad]\">\n dd/mm/yyyy\n @if (hasTimePicker()) {\n <span> hh:mm</span>\n }\n - dd/mm/yyyy\n @if (hasTimePicker()) {\n <span> hh:mm</span>\n }\n </span>\n } @else {\n <span class=\"text-[#9ca2ad]\"
|
|
2016
|
+
args: [{ selector: 'libs_ui-components-datetime-picker', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [TranslateModule, LibsUiComponentsLabelComponent, LibsUiComponentsPopoverComponent, LibsUiComponentsDatetimePickerCustomRangesComponent], template: "<div class=\"libs-ui-date-picker {{ classInclude() }}\">\n @if (labelConfig(); as labelConfig) {\n <libs_ui-components-label\n [classInclude]=\"labelConfig.classInclude\"\n [labelLeft]=\"labelConfig.labelLeft\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [required]=\"labelConfig.required\"\n [description]=\"labelConfig.description\"\n [descriptionClass]=\"labelConfig.descriptionClass\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [buttonsRight]=\"labelConfig.buttonsRight\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft || disable()\"\n [disableButtonsRight]=\"labelConfig.disableButtonsRight || disable()\"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleDisable]=\"labelConfig.toggleDisable || disable()\"\n [popover]=\"labelConfig.popover\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [limitLength]=\"labelConfig.limitLength\"\n [buttonsDescription]=\"labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"labelConfig.disableButtonsDescription || disable()\"\n [buttonsDescriptionContainerClass]=\"labelConfig.buttonsDescriptionContainerClass\"\n [count]=\"labelConfig.count\" />\n }\n <div class=\"flex w-full\">\n <libs_ui-components-popover\n [class]=\"classPickerInclude()\"\n [ignoreShowPopover]=\"disable() || readonly()\"\n [mode]=\"'click'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [ignoreStopPropagationEvent]=\"ignoreStopPropagationEvent()\"\n [flagMouse]=\"flagMouse()\"\n [config]=\"{\n animationConfig: {},\n maxWidth: 770,\n maxHeight: 425,\n directionDistance: 2,\n template: customRangesRef,\n widthByParent: widthByParent(),\n whiteTheme: true,\n ignoreArrow: true,\n zIndex: zIndex(),\n classInclude: 'rounded-[4px] ',\n direction: directionPopover(),\n position: { mode: rangesPopoverPosition(), distance: rangesPopoverPositionDistance() },\n }\"\n (outChangStageFlagMouse)=\"handlerChangStagePopoverFlagMouse($event)\"\n (outFunctionsControl)=\"handlerFunctionControl($event)\"\n (outEvent)=\"handlerPopoverEvent($event)\">\n @if (!isNgContent()) {\n <div\n #containerRef\n class=\"flex items-center px-[12px] h-[32px] rounded-[4px] bg-[#ffffff] cursor-pointer libs-ui-font-h5r {{ classPickerContentInclude() }}\"\n [class.libs-ui-disable]=\"disable()\"\n [class.libs-ui-disable-background]=\"disable()\"\n [class.!border-none]=\"ignoreBorderQuickRange()\"\n [class.libs-ui-border-general]=\"!singleError().message && !ignoreBorderQuickRange()\"\n [class.libs-ui-border-error-general]=\"(singleError().message || isBorderError()) && !ignoreBorderQuickRange()\"\n [class.min-w-[284px]]=\"!chosenDateFromRanges().selectedLabel && !isSingle() && hasTimePicker()\"\n [class.!border]=\"showRangesPopup() && !ignoreBorderQuickRange() && !readonly()\"\n [class.!border-[#4e8cf7]]=\"showRangesPopup() && !ignoreBorderQuickRange() && !readonly()\"\n [class.libs-ui-readonly]=\"readonly()\"\n [class.libs-ui-readonly-background]=\"readonly()\"\n [style.width.px]=\"width()\"\n (click)=\"handlerSelectRanges($event)\">\n <div class=\"libs-ui-icon-calendar text-[#9ca2ad] text-[16px]\"></div>\n <div\n class=\"ml-[8px] libs-ui-date-picker-label\"\n [class.!text-[#071631]]=\"!disable()\"\n [class.!text-[#9ca2ad]]=\"disable()\">\n @if (!chosenDateFromRanges().selectedLabel) {\n @if (!isSingle()) {\n @if (!placeholder()) {\n <span class=\"text-[#9ca2ad]\">\n dd/mm/yyyy\n @if (hasTimePicker()) {\n <span> hh:mm</span>\n }\n - dd/mm/yyyy\n @if (hasTimePicker()) {\n <span> hh:mm</span>\n }\n </span>\n } @else {\n <span class=\"text-[#9ca2ad]\">\n @let constHtmlPlaceholder = placeholder() || ' ';\n {{ constHtmlPlaceholder | translate }}\n </span>\n }\n }\n @if (isSingle()) {\n @if (!placeholder()) {\n <span class=\"text-[#9ca2ad]\">\n dd/mm/yyyy\n @if (hasTimePicker()) {\n <span> hh:mm</span>\n }\n </span>\n } @else {\n <span class=\"text-[#9ca2ad]\">\n @let constHtmlPlaceholder = placeholder() || ' ';\n {{ constHtmlPlaceholder | translate }}\n </span>\n }\n }\n }\n @if (chosenDateFromRanges().selectedLabel && !isSingle()) {\n {{ displayRangeTitle() }}\n }\n @if (chosenDateFromRanges().selectedLabel && isSingle()) {\n <span [class.text-[#29c7cc]]=\"useColorModeExist() || false\">\n {{ chosenDateFromRanges().selectedLabel }}\n </span>\n }\n </div>\n @if (chosenDateFromRanges().selectedLabel && allowReset() && !disable() && !readonly()) {\n <div class=\"pl-[12px] ml-auto h-full flex items-center\">\n <i\n class=\"libs-ui-icon-close-circle-solid text-[16px] text-[#cdd0d6]\"\n (click)=\"handlerReset($event)\"></i>\n </div>\n }\n </div>\n }\n @if (isNgContent()) {\n <div (click)=\"handlerSelectRanges($event)\">\n <ng-content></ng-content>\n </div>\n }\n </libs_ui-components-popover>\n </div>\n @if (singleError().message && !validRequired()?.ignoreMessage) {\n @let constHtmlMessage = singleError().message || ERROR_MESSAGE_EMPTY_VALID;\n <div\n class=\"mt-[8px] text-[#ee2d41] libs-ui-font-h7r libs-ui-text-error\"\n [innerHTML]=\"constHtmlMessage | translate: validRequired()?.interpolateParams\"></div>\n }\n</div>\n\n<ng-template #customRangesRef>\n <libs_ui-components-datetime-picker-custom_ranges\n [zIndex]=\"zIndex()\"\n [classInclude]=\"classIncludeCustomRanges()\"\n [widthByParent]=\"widthByParent()\"\n [dateOptions]=\"dateOptions()\"\n [positionQuickRanges]=\"positionQuickRanges()\"\n [showCustomRangeLabel]=\"showCustomRangeLabel()\"\n [autoApply]=\"autoApply()\"\n [isSingle]=\"isSingle()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [listYearHiddenInputSearch]=\"listYearHiddenInputSearch()\"\n [singleDateSelected]=\"singleDateSelected()\"\n [dateRangeSelected]=\"dateRangeSelected()\"\n [extendRanges]=\"extendRanges()\"\n [hasTimePicker]=\"hasTimePicker()\"\n (outUpdateWidth)=\"handlerUpdateWidth()\"\n (outCancel)=\"handlerCancel()\"\n (outSelectSingleDate)=\"handlerPickerSingleDate($event)\"\n (outSelectDateRange)=\"handlerPickerDateRange($event)\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\"\n (outClickMenuRangeCustom)=\"handlerUpdateWidth()\" />\n</ng-template>\n" }]
|
|
2017
2017
|
}], ctorParameters: () => [] });
|
|
2018
2018
|
|
|
2019
2019
|
/**
|