@libs-ui/components-datetime-dropdown 0.2.127 → 0.2.128

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.
@@ -58,7 +58,7 @@ export declare class LibsUiComponentsDatetimeDropdownComponent implements OnInit
58
58
  readonly ignoreRequiredValueSecondWhenNotValidRequired: import("@angular/core").InputSignal<boolean>;
59
59
  readonly validRequired: import("@angular/core").InputSignal<IValidDateDropdown | undefined>;
60
60
  readonly outFunctionsControl: import("@angular/core").OutputEmitterRef<IDateDropdownFunctionControlEvent>;
61
- readonly outSelectedDropdown: import("@angular/core").OutputEmitterRef<IEmitMultiDateDropdown | IEmitSingleDateDropdown>;
61
+ readonly outSelectedDropdown: import("@angular/core").OutputEmitterRef<IEmitSingleDateDropdown | IEmitMultiDateDropdown>;
62
62
  readonly outChooseMultiDate: import("@angular/core").OutputEmitterRef<IEmitMultiDateDropdown>;
63
63
  readonly outChooseSingleDate: import("@angular/core").OutputEmitterRef<IEmitSingleDateDropdown>;
64
64
  readonly outChangStageFlagMouse: import("@angular/core").OutputEmitterRef<IFlagMouse>;
@@ -8,7 +8,7 @@ import { LibsUiComponentsDatetimeDropdownItemComponent } from "./item/item.compo
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "@ngx-translate/core";
10
10
  export class LibsUiComponentsDatetimeDropdownComponent {
11
- /* PROPERTY */
11
+ // #region PROPERTY
12
12
  width = signal(0);
13
13
  widthElement = signal(undefined);
14
14
  widthLabel = signal(undefined);
@@ -25,7 +25,7 @@ export class LibsUiComponentsDatetimeDropdownComponent {
25
25
  timeOut = signal(undefined);
26
26
  onDestroy = new Subject();
27
27
  functionsControl = new Map();
28
- /* INPUT */
28
+ // #region INPUT
29
29
  labelConfig = input(undefined);
30
30
  widthDropdown = input(136, { transform: (value) => value ?? 136 });
31
31
  zIndex = input(1200, { transform: (value) => value ?? 1200 });
@@ -57,7 +57,7 @@ export class LibsUiComponentsDatetimeDropdownComponent {
57
57
  isCheckErrorWhenSelectItem = input(true, { transform: (value) => value ?? true });
58
58
  ignoreRequiredValueSecondWhenNotValidRequired = input(false); // có validate giá trị thứ 2 khi validRequired không?
59
59
  validRequired = input();
60
- /* OUTPUT */
60
+ // #region OUTPUT
61
61
  outFunctionsControl = output();
62
62
  outSelectedDropdown = output(); // dùng cho trường hợp emit mỗi một lần chọn giá trị nên khi sử dụng phải check kĩ undefined
63
63
  outChooseMultiDate = output();
@@ -67,7 +67,7 @@ export class LibsUiComponentsDatetimeDropdownComponent {
67
67
  containerRef = viewChild('parent');
68
68
  labelFromRef = viewChild('labelFrom');
69
69
  labelToRef = viewChild('labelTo');
70
- /* INJECT */
70
+ // #region INJECT
71
71
  translate = inject(TranslateService);
72
72
  constructor() {
73
73
  effect(() => {
@@ -269,4 +269,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
269
269
  LibsUiComponentsDatetimeDropdownItemComponent
270
270
  ], template: "@if (labelConfig(); as labelConfig) {\n <libs_ui-components-label [classInclude]=\"labelConfig.classInclude\"\n [labelLeft]=\"labelConfig.labelLeft\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [required]=\"labelConfig.required \"\n [description]=\"labelConfig.description\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [buttonsRight]=\"labelConfig.buttonsRight\"\n [buttonsDescription]=\"labelConfig.buttonsDescription\"\n [descriptionClass]=\"labelConfig.descriptionClass\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft\"\n [disableButtonsRight]=\"labelConfig.disableButtonsRight\"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleDisable]=\"labelConfig.toggleDisable || disable()\"\n [popover]=\"labelConfig.popover\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [limitLength]=\"labelConfig.limitLength\"\n [count]=\"labelConfig.count\" />\n}\n<div #parent\n class=\"flex items-start\"\n [class.!w-full]=\"widthByElement()\"\n [class.!column]=\"isResponsive() && isMultiple()\">\n <div #childFrom\n class=\"flex items-start\"\n [class.w-[50%]]=\"widthByElement() && !isResponsive()\"\n [class.!mb-[8px]]=\"isResponsive() && isMultiple()\"\n [class.!mr-[8px]]=\"!isResponsive() && isMultiple()\"\n [class.w-full]=\"!isMultiple() && !widthByElement() || isResponsive()\"\n [style.width.px]=\"!widthByElement() && isMultiple() && !isResponsive() ?((widthDropdown() * arrayFormat().length)+(8 * arrayFormat().length) + widthLabelFrom()):undefined\">\n\n @if (isMultiple() && !ignoreFromAndToDateLabel() && fromAndToDateLabel().from) {\n <div class=\"mr-[8px] flex-shrink-0 h-[32px] flex items-center\"\n [style.width.px]=\"isResponsive() ? (widthLabel() || undefined) : undefined\">\n <span #labelFrom\n LibsUiComponentsDatetimeDropdownDirective\n [class.!opacity-[0.5]]=\"disable()\"\n class=\"libs-ui-font-h5r text-nowrap {{ fromAndToDateLabel().classLabelFrom || '' }}\"\n (outChangeWidth)=\"handlerChangeWidthLabel($event)\">\n {{ (fromAndToDateLabel().from||' ')| translate }}\n </span>\n </div>\n }\n <div class=\"flex\"\n [class.!w-full]=\"widthByElement()\">\n @if (!changeType()) {\n <libs_ui-components-datetime-dropdown-item [class.!w-full]=\"widthByElement()\"\n [disableSecond]=\"disableSecond()\"\n [typeDate]=\"typeFormat()\"\n [zIndex]=\"zIndex()\"\n [maxYear]=\"maxYear()\"\n [disable]=\"disable()\"\n [minYear]=\"minYear()\"\n [readonly]=\"readonly()\"\n [isMultiple]=\"isMultiple() ? isResponsive() ? true : false : true\"\n [reverseYear]=\"reverseYear()\"\n [selectedDate]=\"selectedDateTime()?.from() || {}\"\n [widthDropdown]=\"widthDropdown()\"\n [widthByElement]=\"widthByElement()\"\n [getItemYearDisplay]=\"getItemYearDisplay()\"\n [listMaxItemShow]=\"listMaxItemShow()\"\n [listKeysDisable]=\"listKeysDisable()?.from()\"\n [listHasButtonUnSelectOption]=\"listHasButtonUnSelectOption()\"\n [isEmitSelectedDropDown]=\"isEmitAfterChanged()\"\n [classIncludeTextDisplayWhenNoSelect]=\"'libs-ui-font-h5r ' + classIncludeTextDisplayWhenNoSelect()\"\n (outSelectedData)=\"handlerChangeSelectedKey($event, 'from')\"\n (outFunctionControl)=\"handlerFunctionControl($event,'from')\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\" />\n }\n </div>\n </div>\n @if (isMultiple()) {\n <div #childTo\n [class.!w-[50%]]=\"widthByElement()\"\n [class.!w-full]=\" !widthByElement() || isResponsive()\"\n class=\"flex items-start\">\n <div class=\"mr-[8px] h-[32px] flex-shrink-0 flex items-center\"\n [style.width.px]=\"isResponsive() ? widthLabel() : undefined\">\n @if (!ignoreFromAndToDateLabel()) {\n <span #labelTo\n LibsUiComponentsDatetimeDropdownDirective\n [class.!opacity-[0.5]]=\"disable()\"\n class=\"libs-ui-font-h5r text-nowrap {{ fromAndToDateLabel().classLabelTo || '' }}\"\n (outChangeWidth)=\"handlerChangeWidthLabel($event)\">\n {{ (fromAndToDateLabel().to||' ')| translate }}\n </span>\n }\n @if (ignoreFromAndToDateLabel()) {\n <span [class.!opacity-[0.5]]=\"disable()\"\n class=\"libs-ui-font-h5r\">-</span>\n }\n </div>\n <div class=\"flex\"\n [class.!w-full]=\"widthByElement()\">\n @if (!changeType()) {\n <libs_ui-components-datetime-dropdown-item [class.w-full]=\"widthByElement()\"\n [disableSecond]=\"disableSecond()\"\n [typeDate]=\"typeFormat()\"\n [zIndex]=\"zIndex()\"\n [maxYear]=\"maxYear()\"\n [disable]=\"disable()\"\n [minYear]=\"minYear()\"\n [readonly]=\"readonly()\"\n [isMultiple]=\"isMultiple()\"\n [reverseYear]=\"reverseYear()\"\n [selectedDate]=\"selectedDateTime()?.to() || {}\"\n [widthDropdown]=\"widthDropdown()\"\n [widthByElement]=\"widthByElement()\"\n [getItemYearDisplay]=\"getItemYearDisplay()\"\n [listMaxItemShow]=\"listMaxItemShow()\"\n [listKeysDisable]=\"listKeysDisable()?.to()\"\n [listHasButtonUnSelectOption]=\"listHasButtonUnSelectOption()\"\n [classIncludeTextDisplayWhenNoSelect]=\"'libs-ui-font-h5r ' + classIncludeTextDisplayWhenNoSelect\"\n [isEmitSelectedDropDown]=\"isEmitAfterChanged()\"\n (outSelectedData)=\"handlerChangeSelectedKey($event, 'to')\"\n (outFunctionControl)=\"handlerFunctionControl($event,'to')\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\" />\n }\n </div>\n </div>\n }\n</div>\n\n@if (isErrorCompareDate()) {\n <div class=\"flex items-center mt-[4px]\">\n <span class=\"libs-ui-message-error libs-ui-font-h7r libs-ui-text-error\">{{ validRequired()?.messageValidCompareTime || \"i18n_invalid_end_date_selected\" | translate:validRequired()?.interpolateParamsCompareTime }}</span>\n </div>\n}\n" }]
271
271
  }], ctorParameters: () => [] });
272
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2RhdGV0aW1lL2Ryb3Bkb3duL3NyYy9kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZGF0ZXRpbWUvZHJvcGRvd24vc3JjL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0ssT0FBTyxFQUFVLDhCQUE4QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFbkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sRUFBRSx5Q0FBeUMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBS2hHLE9BQU8sRUFBRSw2Q0FBNkMsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7QUFpQnRGLE1BQU0sT0FBTyx5Q0FBeUM7SUFDcEQsY0FBYztJQUNKLEtBQUssR0FBRyxNQUFNLENBQVMsQ0FBQyxDQUFDLENBQUM7SUFDMUIsWUFBWSxHQUFHLE1BQU0sQ0FBcUIsU0FBUyxDQUFDLENBQUM7SUFDckQsVUFBVSxHQUFHLE1BQU0sQ0FBcUIsU0FBUyxDQUFDLENBQUM7SUFDbkQsY0FBYyxHQUFHLE1BQU0sQ0FBUyxDQUFDLENBQUMsQ0FBQztJQUNuQyxZQUFZLEdBQUcsTUFBTSxDQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLGtCQUFrQixHQUFHLE1BQU0sQ0FBc0IsU0FBUyxDQUFDLENBQUM7SUFDNUQsVUFBVSxHQUFHLE1BQU0sQ0FBcUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlGLFlBQVksR0FBRyxNQUFNLENBQXNCLFNBQVMsQ0FBQyxDQUFDO0lBQ3RELFdBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQTRCLENBQUM7SUFDakUsQ0FBQyxDQUFDLENBQUM7SUFDTyxVQUFVLEdBQUcsTUFBTSxDQUFzQixTQUFTLENBQUMsQ0FBQztJQUV0RCxlQUFlLEdBQUcsTUFBTSxDQUFxQixTQUFTLENBQUMsQ0FBQztJQUN4RCxPQUFPLEdBQUcsTUFBTSxDQUFxQixTQUFTLENBQUMsQ0FBQztJQUNoRCxTQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUNoQyxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsRUFBaUQsQ0FBQztJQUVwRixXQUFXO0lBQ0YsV0FBVyxHQUFHLEtBQUssQ0FBcUIsU0FBUyxDQUFDLENBQUM7SUFDbkQsYUFBYSxHQUFHLEtBQUssQ0FBaUIsR0FBRyxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNuRixNQUFNLEdBQUcsS0FBSyxDQUFpQixJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzlFLE9BQU8sR0FBRyxLQUFLLENBQVMsQ0FBQyxDQUFDLENBQUM7SUFDM0IsT0FBTyxHQUFHLEtBQUssQ0FBUyxDQUFDLENBQUMsQ0FBQztJQUMzQixRQUFRLEdBQUcsS0FBSyxDQUFxQixTQUFTLENBQUMsQ0FBQztJQUNoRCxPQUFPLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDakMsVUFBVSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUNuQyxXQUFXLEdBQUcsS0FBSyxDQUFzQixTQUFTLENBQUMsQ0FBQztJQUNwRCxhQUFhLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLGNBQWMsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDdkMsY0FBYyxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUN2QyxhQUFhLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLFVBQVUsR0FBRyxLQUFLLENBQXVELFdBQVcsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxJQUFJLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDdEksa0JBQWtCLEdBQUcsS0FBSyxDQUFzQixFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUM1RiwyQkFBMkIsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDcEQsZ0JBQWdCLEdBQUcsS0FBSyxDQUFxQyxTQUFTLENBQUMsQ0FBQztJQUN4RSxrQkFBa0IsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUMsQ0FBQyxvREFBb0Q7SUFDaEcsa0JBQWtCLEdBQUcsS0FBSyxFQUE0QixDQUFDO0lBQ3ZELHdCQUF3QixHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUNqRCxtQ0FBbUMsR0FBRyxLQUFLLENBQXFCLFNBQVMsQ0FBQyxDQUFDO0lBQzNFLFVBQVUsR0FBRyxLQUFLLEVBQTJCLENBQUM7SUFDOUMsZUFBZSxHQUFHLEtBQUssQ0FBaUYsU0FBUyxDQUFDLENBQUM7SUFDbkgseUJBQXlCLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ2xELGVBQWUsR0FBRyxLQUFLLENBQXVDLFNBQVMsQ0FBQyxDQUFDO0lBRXpFLG9CQUFvQixHQUFHLEtBQUssQ0FBbUIsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM5RixzQkFBc0IsR0FBRyxLQUFLLENBQW1CLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDbEcsMEJBQTBCLEdBQUcsS0FBSyxDQUFtQixJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3BHLDZDQUE2QyxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQyxDQUFDLHFEQUFxRDtJQUM1SCxhQUFhLEdBQUcsS0FBSyxFQUFzQixDQUFDO0lBRXJELFlBQVk7SUFDSCxtQkFBbUIsR0FBRyxNQUFNLEVBQXFDLENBQUM7SUFDbEUsbUJBQW1CLEdBQUcsTUFBTSxFQUFvRCxDQUFDLENBQUEsNEZBQTRGO0lBQzdLLGtCQUFrQixHQUFHLE1BQU0sRUFBMEIsQ0FBQztJQUN0RCxtQkFBbUIsR0FBRyxNQUFNLEVBQTJCLENBQUM7SUFDeEQsc0JBQXNCLEdBQUcsTUFBTSxFQUFjLENBQUM7SUFFdkQsZ0JBQWdCO0lBQ1IsWUFBWSxHQUFHLFNBQVMsQ0FBYSxRQUFRLENBQUMsQ0FBQztJQUMvQyxZQUFZLEdBQUcsU0FBUyxDQUFhLFdBQVcsQ0FBQyxDQUFDO0lBQ2xELFVBQVUsR0FBRyxTQUFTLENBQWEsU0FBUyxDQUFDLENBQUM7SUFFdEQsWUFBWTtJQUNKLFNBQVMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUU3QztRQUNFLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFFckMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNoQixPQUFPO1lBQ1QsQ0FBQztZQUVELFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDOUIsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7b0JBQzdCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztvQkFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzdCLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1SixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUMvQyxDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDcEcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0IsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDN0IsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVTLGVBQWU7UUFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsYUFBYSxFQUFFLHFCQUFxQixFQUFFLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztRQUVsRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsYUFBYSxFQUFFLHFCQUFxQixFQUFFLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2hHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFNUYsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEcsTUFBTSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRWhILElBQUksa0JBQWtCLEdBQUcsS0FBSyxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFUyx3QkFBd0IsQ0FBQyxLQUE4QixFQUFFLElBQW1CO1FBQ3BGLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQy9CLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ1osT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzQixDQUFDO1lBRUQsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUM7WUFDOUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUVuRixJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNiLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUMsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVPLEtBQUssQ0FBQyxhQUFhO1FBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRU8sS0FBSyxDQUFDLFVBQVU7UUFDdEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFTyxZQUFZO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsYUFBYSxFQUFFLENBQUM7WUFDaEUsT0FBTztRQUNULENBQUM7UUFDRCxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM3QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVMsc0JBQXNCLENBQUMsS0FBNEMsRUFBRSxJQUFtQjtRQUNoRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRVMsS0FBSyxDQUFDLFVBQVU7UUFDeEIsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBRWpCLEtBQUssTUFBTSxPQUFPLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDckQsSUFBSSxDQUFDLENBQUMsTUFBTSxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUNwQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ2hCLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUN2QixLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyxRQUFRLENBQUMsS0FBYztRQUM3QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFTyxXQUFXO1FBQ2pCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUE0QixDQUFDO1FBQ3JFLE1BQU0sV0FBVyxHQUFnRSxFQUFFLENBQUM7UUFFcEYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNsQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0MsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXpDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNoRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRW5DLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELElBQUksV0FBVyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDMUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQixJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRWxDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbkMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8sS0FBSyxDQUFDLFFBQVE7UUFDcEIsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBRWpCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyw2Q0FBNkMsRUFBRSxFQUFFLENBQUM7Z0JBQ3pGLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQyxDQUFDO1lBRUQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU8sY0FBYyxDQUFDLFFBQWlCO1FBQ3RDLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQztRQUN0QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBNEIsQ0FBQztRQUVyRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2xCLElBQUksUUFBUSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNyRixVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLENBQUM7WUFDRCxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BGLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFDckIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVTLFNBQVM7UUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLElBQUksSUFBSSxDQUFDLDBCQUEwQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUMxRCxPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLENBQUM7UUFDckMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUVqQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ3RCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7Z0JBQ3ZCLE9BQU87WUFDVCxDQUFDO1lBQ0QsSUFBSSxZQUFZLEdBQXVDLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFFNUYsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDL0IsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUN2QyxZQUFZLEdBQUcsU0FBUyxDQUFDO2dCQUMzQixDQUFDO2dCQUNELElBQUksWUFBWSxFQUFFLENBQUM7b0JBQ2pCLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFO3dCQUNqQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzt3QkFFckMsT0FBTyxPQUFPLENBQUM7b0JBQ2pCLENBQUMsQ0FBQyxDQUFDO29CQUNILFlBQVksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFO3dCQUMvQixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzt3QkFFbkMsT0FBTyxPQUFPLENBQUM7b0JBQ2pCLENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDN0MsQ0FBQztZQUVELE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxZQUFZLEdBQXdDLEVBQUUsQ0FBQztRQUUzRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQy9CLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDckIsWUFBWSxHQUFHLFNBQVMsQ0FBQztZQUMzQixDQUFDO1lBQ0QsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDakIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtZQUM3QyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDOUMsQ0FBQztJQUNILENBQUM7SUFFUyx1QkFBdUIsQ0FBQyxLQUFhO1FBQzdDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDNUcsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUNuQixZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxFQUFFLEdBQUcsQ0FBdUIsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFUywwQkFBMEIsQ0FBQyxTQUFxQjtRQUN4RCxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7d0dBMVNVLHlDQUF5Qzs0RkFBekMseUNBQXlDLHF6S0M1QnRELHkwTUFvSUEseUREL0dJLGVBQWUsNEZBQ2YsOEJBQThCLDRxQkFDOUIseUNBQXlDLHFIQUN6Qyw2Q0FBNkM7OzRGQUlwQyx5Q0FBeUM7a0JBZnJELFNBQVM7K0JBRUUsc0NBQXNDLGNBR3BDLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxXQUN0Qzt3QkFDUCxlQUFlO3dCQUNmLDhCQUE4Qjt3QkFDOUIseUNBQXlDO3dCQUN6Qyw2Q0FBNkM7cUJBQzlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgRWxlbWVudFJlZiwgaW5qZWN0LCBpbnB1dCwgT25Jbml0LCBvdXRwdXQsIHNpZ25hbCwgdW50cmFja2VkLCB2aWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgSUxhYmVsLCBMaWJzVWlDb21wb25lbnRzTGFiZWxDb21wb25lbnQgfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1sYWJlbFwiO1xuaW1wb3J0IHsgSUZsYWdNb3VzZSB9IGZyb20gXCJAbGlicy11aS9jb21wb25lbnRzLXBvcG92ZXJcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YmplY3QsIHRha2VVbnRpbCwgdGltZXIgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgQ29tcGFyZURhdGUgfSBmcm9tIFwiLi9kZWZpbmVzL2RhdGUtZHJvcGRvd24uZGVmaW5lXCI7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzRGF0ZXRpbWVEcm9wZG93bkRpcmVjdGl2ZSB9IGZyb20gXCIuL2RpcmVjdGl2ZS9kYXRlLWRyb3Bkb3duLmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHsgSURhdGVEcm9wZG93bkRpc2FibGVLZXlzLCBJRnJvbUFuZFRvRGF0ZUxhYmVsLCBJSGlkZGVuRGF0ZSwgVFlQRV9EQVRFX0RST1BET1dOX0ZPUk1BVCwgVFlQRV9EQVRFX0ZPUk1BVCB9IGZyb20gXCIuL2ludGVyZmFjZXMvZGF0ZS1kcm9wZG93bi5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IElFbWl0TXVsdGlEYXRlRHJvcGRvd24sIElFbWl0U2luZ2xlRGF0ZURyb3Bkb3duIH0gZnJvbSBcIi4vaW50ZXJmYWNlcy9lbWl0LWRyb3Bkb3duLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgSURhdGVEcm9wZG93bkZ1bmN0aW9uQ29udHJvbEV2ZW50LCBJRGF0ZURyb3Bkb3duSXRlbUZ1bmN0aW9uQ29udHJvbEV2ZW50IH0gZnJvbSBcIi4vaW50ZXJmYWNlcy9mdW5jdGlvbnMtY29udHJvbC1ldmVudC5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IElWYWxpZERhdGVEcm9wZG93biB9IGZyb20gXCIuL2ludGVyZmFjZXMvdmFsaWQuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzRGF0ZXRpbWVEcm9wZG93bkl0ZW1Db21wb25lbnQgfSBmcm9tIFwiLi9pdGVtL2l0ZW0uY29tcG9uZW50XCI7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2xpYnNfdWktY29tcG9uZW50cy1kYXRldGltZS1kcm9wZG93bicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Ryb3Bkb3duLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIExpYnNVaUNvbXBvbmVudHNMYWJlbENvbXBvbmVudCxcbiAgICBMaWJzVWlDb21wb25lbnRzRGF0ZXRpbWVEcm9wZG93bkRpcmVjdGl2ZSxcbiAgICBMaWJzVWlDb21wb25lbnRzRGF0ZXRpbWVEcm9wZG93bkl0ZW1Db21wb25lbnRcbiAgXVxufSlcblxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNEYXRldGltZURyb3Bkb3duQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgLyogUFJPUEVSVFkgKi9cbiAgcHJvdGVjdGVkIHdpZHRoID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHByb3RlY3RlZCB3aWR0aEVsZW1lbnQgPSBzaWduYWw8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcm90ZWN0ZWQgd2lkdGhMYWJlbCA9IHNpZ25hbDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByb3RlY3RlZCB3aWR0aExhYmVsRnJvbSA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBwcm90ZWN0ZWQgd2lkdGhMYWJlbFRvID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHByb3RlY3RlZCBpc0Vycm9yQ29tcGFyZURhdGUgPSBzaWduYWw8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJvdGVjdGVkIGNob29zZURhdGUgPSBzaWduYWw8SUVtaXRNdWx0aURhdGVEcm9wZG93biB8IHVuZGVmaW5lZD4oeyBmcm9tOiBzaWduYWwoe30pLCB0bzogc2lnbmFsKHt9KSB9KTtcbiAgcHJvdGVjdGVkIGlzUmVzcG9uc2l2ZSA9IHNpZ25hbDxib29sZWFuIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcm90ZWN0ZWQgYXJyYXlGb3JtYXQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMudHlwZUZvcm1hdCgpLnNwbGl0KCctJykgYXMgQXJyYXk8VFlQRV9EQVRFX0ZPUk1BVD47XG4gIH0pO1xuICBwcm90ZWN0ZWQgY2hhbmdlVHlwZSA9IHNpZ25hbDxib29sZWFuIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIHByaXZhdGUgY2FjaGVXaWR0aExhYmVsID0gc2lnbmFsPG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSB0aW1lT3V0ID0gc2lnbmFsPG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSBvbkRlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIGZ1bmN0aW9uc0NvbnRyb2wgPSBuZXcgTWFwPHN0cmluZywgSURhdGVEcm9wZG93bkl0ZW1GdW5jdGlvbkNvbnRyb2xFdmVudD4oKTtcblxuICAvKiBJTlBVVCAqL1xuICByZWFkb25seSBsYWJlbENvbmZpZyA9IGlucHV0PElMYWJlbCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgd2lkdGhEcm9wZG93biA9IGlucHV0PG51bWJlciwgbnVtYmVyPigxMzYsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/IDEzNiB9KTtcbiAgcmVhZG9ubHkgekluZGV4ID0gaW5wdXQ8bnVtYmVyLCBudW1iZXI+KDEyMDAsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/IDEyMDAgfSk7XG4gIHJlYWRvbmx5IG1heFllYXIgPSBpbnB1dDxudW1iZXI+KDApO1xuICByZWFkb25seSBtaW5ZZWFyID0gaW5wdXQ8bnVtYmVyPigwKTtcbiAgcmVhZG9ubHkgbWluV2lkdGggPSBpbnB1dDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGRpc2FibGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHJlYWRvbmx5ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBpc011bHRpcGxlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSByZXZlcnNlWWVhciA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGlzQm9yZGVyRXJyb3IgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGlnbm9yZVdpZHRoMTAwID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSB3aWR0aEJ5RWxlbWVudCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgZGlzYWJsZVNlY29uZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgdHlwZUZvcm1hdCA9IGlucHV0PFRZUEVfREFURV9EUk9QRE9XTl9GT1JNQVQsIFRZUEVfREFURV9EUk9QRE9XTl9GT1JNQVQ+KCdtb250aC1kYXknLCB7IHRyYW5zZm9ybTogKHZhbHVlKSA9PiB2YWx1ZSA/PyAnbW9udGgtZGF5JyB9KTtcbiAgcmVhZG9ubHkgZnJvbUFuZFRvRGF0ZUxhYmVsID0gaW5wdXQ8SUZyb21BbmRUb0RhdGVMYWJlbD4oeyBmcm9tOiAnaTE4bl9sYWJlbF9mcm9tJywgdG86ICdpMThuX3RvJyB9KTtcbiAgcmVhZG9ubHkgbGlzdEhhc0J1dHRvblVuU2VsZWN0T3B0aW9uID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBzZWxlY3RlZERhdGVUaW1lID0gaW5wdXQ8SUVtaXRNdWx0aURhdGVEcm9wZG93biB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgaXNFbWl0QWZ0ZXJDaGFuZ2VkID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpOyAvLyBkw7luZyDEkeG7gyBlbWl0IG3hu5dpIGzhuqduIGNo4buNbiBnacOhIHRy4buLIHbDoCBs4bqnbiDEkeG6p3UgaW5pdFxuICByZWFkb25seSBnZXRJdGVtWWVhckRpc3BsYXkgPSBpbnB1dDwoeWVhcjogc3RyaW5nKSA9PiBzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IGlnbm9yZUZyb21BbmRUb0RhdGVMYWJlbCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgY2xhc3NJbmNsdWRlVGV4dERpc3BsYXlXaGVuTm9TZWxlY3QgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGhpZGRlbkRhdGUgPSBpbnB1dDxJSGlkZGVuRGF0ZSB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgbGlzdE1heEl0ZW1TaG93ID0gaW5wdXQ8eyB5ZWFyPzogbnVtYmVyOyBtb250aD86IG51bWJlcjsgcXVhcnRlcj86IG51bWJlcjsgZGF5PzogbnVtYmVyOyB9IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBpZ25vcmVDb252ZXJ0WWVhclNlbGVjdGVkID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBsaXN0S2V5c0Rpc2FibGUgPSBpbnB1dDxJRGF0ZURyb3Bkb3duRGlzYWJsZUtleXMgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgcmVhZG9ubHkgaWdub3JlQWxsb3dUaW1lRXF1YWwgPSBpbnB1dDxib29sZWFuLCBib29sZWFuPih0cnVlLCB7IHRyYW5zZm9ybTogKHZhbHVlKSA9PiB2YWx1ZSA/PyB0cnVlIH0pO1xuICByZWFkb25seSBpZ25vcmVWYWxpZFRpbWVDb21wYXJlID0gaW5wdXQ8Ym9vbGVhbiwgYm9vbGVhbj4oZmFsc2UsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/IGZhbHNlIH0pO1xuICByZWFkb25seSBpc0NoZWNrRXJyb3JXaGVuU2VsZWN0SXRlbSA9IGlucHV0PGJvb2xlYW4sIGJvb2xlYW4+KHRydWUsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/IHRydWUgfSk7XG4gIHJlYWRvbmx5IGlnbm9yZVJlcXVpcmVkVmFsdWVTZWNvbmRXaGVuTm90VmFsaWRSZXF1aXJlZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTsgLy8gY8OzIHZhbGlkYXRlIGdpw6EgdHLhu4sgdGjhu6kgMiBraGkgdmFsaWRSZXF1aXJlZCBraMO0bmc/XG4gIHJlYWRvbmx5IHZhbGlkUmVxdWlyZWQgPSBpbnB1dDxJVmFsaWREYXRlRHJvcGRvd24+KCk7XG5cbiAgLyogT1VUUFVUICovXG4gIHJlYWRvbmx5IG91dEZ1bmN0aW9uc0NvbnRyb2wgPSBvdXRwdXQ8SURhdGVEcm9wZG93bkZ1bmN0aW9uQ29udHJvbEV2ZW50PigpO1xuICByZWFkb25seSBvdXRTZWxlY3RlZERyb3Bkb3duID0gb3V0cHV0PElFbWl0U2luZ2xlRGF0ZURyb3Bkb3duIHwgSUVtaXRNdWx0aURhdGVEcm9wZG93bj4oKTsvLyBkw7luZyBjaG8gdHLGsOG7nW5nIGjhu6NwIGVtaXQgbeG7l2kgbeG7mXQgbOG6p24gY2jhu41uIGdpw6EgdHLhu4sgbsOqbiBraGkgc+G7rSBk4bulbmcgcGjhuqNpIGNoZWNrIGvEqSB1bmRlZmluZWRcbiAgcmVhZG9ubHkgb3V0Q2hvb3NlTXVsdGlEYXRlID0gb3V0cHV0PElFbWl0TXVsdGlEYXRlRHJvcGRvd24+KCk7XG4gIHJlYWRvbmx5IG91dENob29zZVNpbmdsZURhdGUgPSBvdXRwdXQ8SUVtaXRTaW5nbGVEYXRlRHJvcGRvd24+KCk7XG4gIHJlYWRvbmx5IG91dENoYW5nU3RhZ2VGbGFnTW91c2UgPSBvdXRwdXQ8SUZsYWdNb3VzZT4oKTtcblxuICAvKiBWSUVXIENISUxEICovXG4gIHByaXZhdGUgY29udGFpbmVyUmVmID0gdmlld0NoaWxkPEVsZW1lbnRSZWY+KCdwYXJlbnQnKTtcbiAgcHJpdmF0ZSBsYWJlbEZyb21SZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZj4oJ2xhYmVsRnJvbScpO1xuICBwcml2YXRlIGxhYmVsVG9SZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZj4oJ2xhYmVsVG8nKTtcblxuICAvKiBJTkpFQ1QgKi9cbiAgcHJpdmF0ZSB0cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGlzTXVsdGlwbGUgPSB0aGlzLmlzTXVsdGlwbGUoKTtcblxuICAgICAgaWYgKCFpc011bHRpcGxlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgdGhpcy5jaGFuZ2VUeXBlLnNldCh0cnVlKTtcbiAgICAgICAgdGhpcy5mdW5jdGlvbnNDb250cm9sLmNsZWFyKCk7XG4gICAgICAgIHRpbWVyKDApLnBpcGUoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY2hlY2tSZXNwb25zaXZlKCk7XG4gICAgICAgICAgdGhpcy5jaGFuZ2VUeXBlLnNldChmYWxzZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm91dEZ1bmN0aW9uc0NvbnRyb2wuZW1pdCh7IGNoZWNrSXNWYWxpZDogdGhpcy52YWxpZGF0ZS5iaW5kKHRoaXMpLCByZXNldEVycm9yOiB0aGlzLnJlc2V0RXJyb3IuYmluZCh0aGlzKSwgcmVzZXRUaW1lOiB0aGlzLnJlc2V0RHJvcGRvd24uYmluZCh0aGlzKSB9KTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZERhdGVUaW1lKCkpIHtcbiAgICAgIHRoaXMuY2hvb3NlRGF0ZS5zZXQodGhpcy5zZWxlY3RlZERhdGVUaW1lKCkpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJykucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpKS5zdWJzY3JpYmUodGhpcy5zZXRXaWR0aERhdGUuYmluZCh0aGlzKSk7XG4gICAgdGhpcy53aWR0aExhYmVsLnNldCh1bmRlZmluZWQpO1xuICAgIHRpbWVyKDApLnBpcGUoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5jaGVja1Jlc3BvbnNpdmUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjaGVja1Jlc3BvbnNpdmUoKSB7XG4gICAgdGhpcy5pc1Jlc3BvbnNpdmUuc2V0KGZhbHNlKTtcbiAgICBjb25zdCB3aWR0aEVsZW1lbnRQYXJlbnQgPSB0aGlzLmNvbnRhaW5lclJlZigpPy5uYXRpdmVFbGVtZW50Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCB8fCAwO1xuXG4gICAgdGhpcy53aWR0aExhYmVsRnJvbS5zZXQodGhpcy5sYWJlbEZyb21SZWYoKT8ubmF0aXZlRWxlbWVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggfHwgMCk7XG4gICAgdGhpcy53aWR0aExhYmVsVG8uc2V0KHRoaXMubGFiZWxUb1JlZigpPy5uYXRpdmVFbGVtZW50Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCB8fCAwKTtcblxuICAgIGNvbnN0IHNwYWNlQmV0d2VlbkRhdGUgPSAodGhpcy5hcnJheUZvcm1hdCgpLmxlbmd0aCAqIDIpICsgKHRoaXMuZnJvbUFuZFRvRGF0ZUxhYmVsKCkuZnJvbSA/IDEgOiAwKTtcbiAgICBjb25zdCB3aWR0aCA9ICh0aGlzLndpZHRoRHJvcGRvd24oKSAqIDQpICsgKDggKiBzcGFjZUJldHdlZW5EYXRlKSArIHRoaXMud2lkdGhMYWJlbEZyb20oKSArIHRoaXMud2lkdGhMYWJlbFRvKCk7XG5cbiAgICBpZiAod2lkdGhFbGVtZW50UGFyZW50IDwgd2lkdGgpIHtcbiAgICAgIHRoaXMuaXNSZXNwb25zaXZlLnNldCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckNoYW5nZVNlbGVjdGVkS2V5KGV2ZW50OiBJRW1pdFNpbmdsZURhdGVEcm9wZG93biwgdHlwZTogJ2Zyb20nIHwgJ3RvJykge1xuICAgIHRoaXMuY2hvb3NlRGF0ZS51cGRhdGUoY3VycmVudCA9PiB7XG4gICAgICBpZiAoY3VycmVudCkge1xuICAgICAgICBjdXJyZW50W3R5cGVdLnNldChldmVudCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjdXJyZW50O1xuICAgIH0pO1xuICAgIGlmICh0aGlzLmlzRW1pdEFmdGVyQ2hhbmdlZCgpKSB7XG4gICAgICBjb25zdCBkYXRhRW1pdCA9IHRoaXMuaXNNdWx0aXBsZSgpID8gdGhpcy5jaG9vc2VEYXRlKCkgOiB0aGlzLmNob29zZURhdGUoKT8uZnJvbSgpO1xuXG4gICAgICBpZiAoZGF0YUVtaXQpIHtcbiAgICAgICAgdGhpcy5vdXRTZWxlY3RlZERyb3Bkb3duLmVtaXQoZGF0YUVtaXQpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmFwcGx5RGF0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZXNldERyb3Bkb3duKCkge1xuICAgIHRoaXMuZnVuY3Rpb25zQ29udHJvbC5mb3JFYWNoKGNvbnRyb2wgPT4gY29udHJvbC5yZXNldERyb3Bkb3duKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZXNldEVycm9yKCkge1xuICAgIHRoaXMuZnVuY3Rpb25zQ29udHJvbC5mb3JFYWNoKGNvbnRyb2wgPT4gY29udHJvbC5yZXNldEVycm9yKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRXaWR0aERhdGUoKSB7XG4gICAgaWYgKCF0aGlzLmNvbnRhaW5lclJlZigpIHx8ICF0aGlzLmNvbnRhaW5lclJlZigpPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRpbWVyKDApLnBpcGUoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5jaGVja1Jlc3BvbnNpdmUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyRnVuY3Rpb25Db250cm9sKGV2ZW50OiBJRGF0ZURyb3Bkb3duSXRlbUZ1bmN0aW9uQ29udHJvbEV2ZW50LCB0eXBlOiAnZnJvbScgfCAndG8nKSB7XG4gICAgdGhpcy5mdW5jdGlvbnNDb250cm9sLnNldCh0eXBlLCBldmVudCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgY2hlY2tWYWxpZCgpIHtcbiAgICBsZXQgdmFsaWQgPSB0cnVlO1xuXG4gICAgZm9yIChjb25zdCBjb250cm9sIG9mIHRoaXMuZnVuY3Rpb25zQ29udHJvbC52YWx1ZXMoKSkge1xuICAgICAgaWYgKCEoYXdhaXQgY29udHJvbC5jaGVja0lzVmFsaWQoKSkpIHtcbiAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuY29tcGFyZURhdGUoKSkge1xuICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWQ7XG4gIH1cblxuICBwcml2YXRlIHNldEVycm9yKGVycm9yOiBib29sZWFuKSB7XG4gICAgdGhpcy5mdW5jdGlvbnNDb250cm9sLmZvckVhY2goY29udHJvbCA9PiBjb250cm9sLnNldEVycm9yKGVycm9yKSk7XG4gIH1cblxuICBwcml2YXRlIGNvbXBhcmVEYXRlKCkge1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLnR5cGVGb3JtYXQoKS5zcGxpdCgnLScpIGFzIEFycmF5PFRZUEVfREFURV9GT1JNQVQ+O1xuICAgIGNvbnN0IGRhdGVDb21wYXJlOiBBcnJheTx7IGZyb206IG51bWJlciB8IHVuZGVmaW5lZCwgdG86IG51bWJlciB8IHVuZGVmaW5lZCB9PiA9IFtdO1xuXG4gICAgdHlwZS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgY29uc3QgZnJvbSA9IHRoaXMuY2hvb3NlRGF0ZSgpPy5mcm9tKClbaXRlbV07XG4gICAgICBjb25zdCB0byA9IHRoaXMuY2hvb3NlRGF0ZSgpPy50bygpW2l0ZW1dO1xuXG4gICAgICBkYXRlQ29tcGFyZS5wdXNoKHsgZnJvbTogZnJvbSwgdG86IHRvIH0pO1xuICAgIH0pO1xuICAgIGlmICh0aGlzLmlnbm9yZVZhbGlkVGltZUNvbXBhcmUoKSB8fCAhdGhpcy5jaGVja0NvbmRpdGlvbih0cnVlKSkge1xuICAgICAgdGhpcy5pc0Vycm9yQ29tcGFyZURhdGUuc2V0KGZhbHNlKTtcblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoQ29tcGFyZURhdGUoZGF0ZUNvbXBhcmUsIHRoaXMuaWdub3JlQWxsb3dUaW1lRXF1YWwoKSkpIHtcbiAgICAgIHRoaXMuc2V0RXJyb3IodHJ1ZSk7XG4gICAgICB0aGlzLmlzRXJyb3JDb21wYXJlRGF0ZS5zZXQodHJ1ZSk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICB0aGlzLmlzRXJyb3JDb21wYXJlRGF0ZS5zZXQoZmFsc2UpO1xuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB2YWxpZGF0ZSgpIHtcbiAgICBsZXQgdmFsaWQgPSB0cnVlO1xuXG4gICAgaWYgKCF0aGlzLnZhbGlkUmVxdWlyZWQoKSkge1xuICAgICAgaWYgKCF0aGlzLmNoZWNrQ29uZGl0aW9uKGZhbHNlKSAmJiAhdGhpcy5pZ25vcmVSZXF1aXJlZFZhbHVlU2Vjb25kV2hlbk5vdFZhbGlkUmVxdWlyZWQoKSkge1xuICAgICAgICB2YWxpZCA9IGF3YWl0IHRoaXMuY2hlY2tWYWxpZCgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdmFsaWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY2hlY2tWYWxpZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0NvbmRpdGlvbihoYXNWYWx1ZTogYm9vbGVhbikge1xuICAgIGxldCBjaGVja1ZhbHVlID0gdHJ1ZTtcbiAgICBjb25zdCB0eXBlID0gdGhpcy50eXBlRm9ybWF0KCkuc3BsaXQoJy0nKSBhcyBBcnJheTxUWVBFX0RBVEVfRk9STUFUPjtcblxuICAgIHR5cGUuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGlmIChoYXNWYWx1ZSAmJiAoIXRoaXMuY2hvb3NlRGF0ZSgpPy5mcm9tKClbaXRlbV0gfHwgIXRoaXMuY2hvb3NlRGF0ZSgpPy50bygpW2l0ZW1dKSkge1xuICAgICAgICBjaGVja1ZhbHVlID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoIWhhc1ZhbHVlICYmICh0aGlzLmNob29zZURhdGUoKT8uZnJvbSgpW2l0ZW1dIHx8IHRoaXMuY2hvb3NlRGF0ZSgpPy50bygpW2l0ZW1dKSkge1xuICAgICAgICBjaGVja1ZhbHVlID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY2hlY2tWYWx1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhcHBseURhdGUoKSB7XG4gICAgdGhpcy5zZXRFcnJvcihmYWxzZSk7XG4gICAgdGhpcy5pc0Vycm9yQ29tcGFyZURhdGUuc2V0KGZhbHNlKTtcbiAgICBpZiAodGhpcy5pc0NoZWNrRXJyb3JXaGVuU2VsZWN0SXRlbSgpICYmICF0aGlzLnZhbGlkYXRlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZnJvbSA9IHRoaXMuY2hvb3NlRGF0ZSgpPy5mcm9tO1xuICAgIGNvbnN0IHRvID0gdGhpcy5jaG9vc2VEYXRlKCk/LnRvO1xuXG4gICAgaWYgKHRoaXMuaXNNdWx0aXBsZSgpKSB7XG4gICAgICBpZiAodGhpcy5jb21wYXJlRGF0ZSgpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGxldCBkYXRhU2VsZWN0ZWQ6IElFbWl0TXVsdGlEYXRlRHJvcGRvd24gfCB1bmRlZmluZWQgPSB7IGZyb206IHNpZ25hbCh7fSksIHRvOiBzaWduYWwoe30pIH07XG5cbiAgICAgIHRoaXMuYXJyYXlGb3JtYXQoKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGlmICghZnJvbT8uKCk/LltrZXldIHx8ICF0bz8uKCk/LltrZXldKSB7XG4gICAgICAgICAgZGF0YVNlbGVjdGVkID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRhU2VsZWN0ZWQpIHtcbiAgICAgICAgICBkYXRhU2VsZWN0ZWQuZnJvbS51cGRhdGUoY3VycmVudCA9PiB7XG4gICAgICAgICAgICBjdXJyZW50W2tleV0gPSBOdW1iZXIoZnJvbT8uKClba2V5XSk7XG5cbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGRhdGFTZWxlY3RlZC50by51cGRhdGUoY3VycmVudCA9PiB7XG4gICAgICAgICAgICBjdXJyZW50W2tleV0gPSBOdW1iZXIodG8/LigpW2tleV0pO1xuXG4gICAgICAgICAgICByZXR1cm4gY3VycmVudDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChkYXRhU2VsZWN0ZWQpIHtcbiAgICAgICAgdGhpcy5vdXRDaG9vc2VNdWx0aURhdGUuZW1pdChkYXRhU2VsZWN0ZWQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBkYXRhU2VsZWN0ZWQ6IElFbWl0U2luZ2xlRGF0ZURyb3Bkb3duIHwgdW5kZWZpbmVkID0ge307XG5cbiAgICB0aGlzLmFycmF5Rm9ybWF0KCkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKCFmcm9tPy4oKT8uW2tleV0pIHtcbiAgICAgICAgZGF0YVNlbGVjdGVkID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgaWYgKGRhdGFTZWxlY3RlZCkge1xuICAgICAgICBkYXRhU2VsZWN0ZWRba2V5XSA9IE51bWJlcihmcm9tPy4oKT8uW2tleV0pXG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKGRhdGFTZWxlY3RlZCkge1xuICAgICAgdGhpcy5vdXRDaG9vc2VTaW5nbGVEYXRlLmVtaXQoZGF0YVNlbGVjdGVkKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckNoYW5nZVdpZHRoTGFiZWwod2lkdGg6IG51bWJlcikge1xuICAgIHRoaXMuY2FjaGVXaWR0aExhYmVsLnNldCh3aWR0aCA8ICh0aGlzLmNhY2hlV2lkdGhMYWJlbCgpIHx8IDApID8gdGhpcy5jYWNoZVdpZHRoTGFiZWwoKSA6IE1hdGguY2VpbCh3aWR0aCkpO1xuICAgIGlmICh0aGlzLnRpbWVPdXQoKSkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZU91dCgpKTtcbiAgICB9XG4gICAgdGhpcy50aW1lT3V0LnNldCgoc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLndpZHRoTGFiZWwuc2V0KHRoaXMuY2FjaGVXaWR0aExhYmVsKCkpO1xuICAgIH0sIDEwMCkgYXMgdW5rbm93bikgYXMgbnVtYmVyKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ2hhbmdTdGFnZUZsYWdNb3VzZShmbGFnTW91c2U6IElGbGFnTW91c2UpIHtcbiAgICB0aGlzLm91dENoYW5nU3RhZ2VGbGFnTW91c2UuZW1pdChmbGFnTW91c2UpO1xuICB9XG59IiwiQGlmIChsYWJlbENvbmZpZygpOyBhcyBsYWJlbENvbmZpZykge1xuICA8bGlic191aS1jb21wb25lbnRzLWxhYmVsIFtjbGFzc0luY2x1ZGVdPVwibGFiZWxDb25maWcuY2xhc3NJbmNsdWRlXCJcbiAgICBbbGFiZWxMZWZ0XT1cImxhYmVsQ29uZmlnLmxhYmVsTGVmdFwiXG4gICAgW2xhYmVsTGVmdENsYXNzXT1cImxhYmVsQ29uZmlnLmxhYmVsTGVmdENsYXNzXCJcbiAgICBbcmVxdWlyZWRdPVwibGFiZWxDb25maWcucmVxdWlyZWQgXCJcbiAgICBbZGVzY3JpcHRpb25dPVwibGFiZWxDb25maWcuZGVzY3JpcHRpb25cIlxuICAgIFtsYWJlbFJpZ2h0XT1cImxhYmVsQ29uZmlnLmxhYmVsUmlnaHRcIlxuICAgIFtsYWJlbFJpZ2h0Q2xhc3NdPVwibGFiZWxDb25maWcubGFiZWxSaWdodENsYXNzXCJcbiAgICBbb25seVNob3dDb3VudF09XCJsYWJlbENvbmZpZy5vbmx5U2hvd0NvdW50XCJcbiAgICBbYnV0dG9uc0xlZnRdPVwibGFiZWxDb25maWcuYnV0dG9uc0xlZnRcIlxuICAgIFtidXR0b25zUmlnaHRdPVwibGFiZWxDb25maWcuYnV0dG9uc1JpZ2h0XCJcbiAgICBbYnV0dG9uc0Rlc2NyaXB0aW9uXT1cImxhYmVsQ29uZmlnLmJ1dHRvbnNEZXNjcmlwdGlvblwiXG4gICAgW2Rlc2NyaXB0aW9uQ2xhc3NdPVwibGFiZWxDb25maWcuZGVzY3JpcHRpb25DbGFzc1wiXG4gICAgW2Rpc2FibGVCdXR0b25zTGVmdF09XCJsYWJlbENvbmZpZy5kaXNhYmxlQnV0dG9uc0xlZnRcIlxuICAgIFtkaXNhYmxlQnV0dG9uc1JpZ2h0XT1cImxhYmVsQ29uZmlnLmRpc2FibGVCdXR0b25zUmlnaHRcIlxuICAgIFtoYXNUb2dnbGVdPVwibGFiZWxDb25maWcuaGFzVG9nZ2xlXCJcbiAgICBbdG9nZ2xlQWN0aXZlXT1cImxhYmVsQ29uZmlnLnRvZ2dsZUFjdGl2ZVwiXG4gICAgW3RvZ2dsZURpc2FibGVdPVwibGFiZWxDb25maWcudG9nZ2xlRGlzYWJsZSB8fCBkaXNhYmxlKClcIlxuICAgIFtwb3BvdmVyXT1cImxhYmVsQ29uZmlnLnBvcG92ZXJcIlxuICAgIFtpY29uUG9wb3ZlckNsYXNzXT1cImxhYmVsQ29uZmlnLmljb25Qb3BvdmVyQ2xhc3NcIlxuICAgIFtsaW1pdExlbmd0aF09XCJsYWJlbENvbmZpZy5saW1pdExlbmd0aFwiXG4gICAgW2NvdW50XT1cImxhYmVsQ29uZmlnLmNvdW50XCIgLz5cbn1cbjxkaXYgI3BhcmVudFxuICBjbGFzcz1cImZsZXggaXRlbXMtc3RhcnRcIlxuICBbY2xhc3MuIXctZnVsbF09XCJ3aWR0aEJ5RWxlbWVudCgpXCJcbiAgW2NsYXNzLiFjb2x1bW5dPVwiaXNSZXNwb25zaXZlKCkgJiYgaXNNdWx0aXBsZSgpXCI+XG4gIDxkaXYgI2NoaWxkRnJvbVxuICAgIGNsYXNzPVwiZmxleCBpdGVtcy1zdGFydFwiXG4gICAgW2NsYXNzLnctWzUwJV1dPVwid2lkdGhCeUVsZW1lbnQoKSAmJiAhaXNSZXNwb25zaXZlKClcIlxuICAgIFtjbGFzcy4hbWItWzhweF1dPVwiaXNSZXNwb25zaXZlKCkgJiYgaXNNdWx0aXBsZSgpXCJcbiAgICBbY2xhc3MuIW1yLVs4cHhdXT1cIiFpc1Jlc3BvbnNpdmUoKSAmJiBpc011bHRpcGxlKClcIlxuICAgIFtjbGFzcy53LWZ1bGxdPVwiIWlzTXVsdGlwbGUoKSAmJiAhd2lkdGhCeUVsZW1lbnQoKSB8fCBpc1Jlc3BvbnNpdmUoKVwiXG4gICAgW3N0eWxlLndpZHRoLnB4XT1cIiF3aWR0aEJ5RWxlbWVudCgpICYmIGlzTXVsdGlwbGUoKSAmJiAhaXNSZXNwb25zaXZlKCkgPygod2lkdGhEcm9wZG93bigpICogYXJyYXlGb3JtYXQoKS5sZW5ndGgpKyg4ICogYXJyYXlGb3JtYXQoKS5sZW5ndGgpICsgd2lkdGhMYWJlbEZyb20oKSk6dW5kZWZpbmVkXCI+XG5cbiAgICBAaWYgKGlzTXVsdGlwbGUoKSAmJiAhaWdub3JlRnJvbUFuZFRvRGF0ZUxhYmVsKCkgJiYgZnJvbUFuZFRvRGF0ZUxhYmVsKCkuZnJvbSkge1xuICAgICAgPGRpdiBjbGFzcz1cIm1yLVs4cHhdIGZsZXgtc2hyaW5rLTAgaC1bMzJweF0gZmxleCBpdGVtcy1jZW50ZXJcIlxuICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiaXNSZXNwb25zaXZlKCkgPyAod2lkdGhMYWJlbCgpIHx8IHVuZGVmaW5lZCkgOiB1bmRlZmluZWRcIj5cbiAgICAgICAgPHNwYW4gI2xhYmVsRnJvbVxuICAgICAgICAgIExpYnNVaUNvbXBvbmVudHNEYXRldGltZURyb3Bkb3duRGlyZWN0aXZlXG4gICAgICAgICAgW2NsYXNzLiFvcGFjaXR5LVswLjVdXT1cImRpc2FibGUoKVwiXG4gICAgICAgICAgY2xhc3M9XCJsaWJzLXVpLWZvbnQtaDVyIHRleHQtbm93cmFwIHt7IGZyb21BbmRUb0RhdGVMYWJlbCgpLmNsYXNzTGFiZWxGcm9tIHx8ICcnIH19XCJcbiAgICAgICAgICAob3V0Q2hhbmdlV2lkdGgpPVwiaGFuZGxlckNoYW5nZVdpZHRoTGFiZWwoJGV2ZW50KVwiPlxuICAgICAgICAgIHt7IChmcm9tQW5kVG9EYXRlTGFiZWwoKS5mcm9tfHwnICcpfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIDxkaXYgY2xhc3M9XCJmbGV4XCJcbiAgICAgIFtjbGFzcy4hdy1mdWxsXT1cIndpZHRoQnlFbGVtZW50KClcIj5cbiAgICAgIEBpZiAoIWNoYW5nZVR5cGUoKSkge1xuICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWRhdGV0aW1lLWRyb3Bkb3duLWl0ZW0gW2NsYXNzLiF3LWZ1bGxdPVwid2lkdGhCeUVsZW1lbnQoKVwiXG4gICAgICAgICAgW2Rpc2FibGVTZWNvbmRdPVwiZGlzYWJsZVNlY29uZCgpXCJcbiAgICAgICAgICBbdHlwZURhdGVdPVwidHlwZUZvcm1hdCgpXCJcbiAgICAgICAgICBbekluZGV4XT1cInpJbmRleCgpXCJcbiAgICAgICAgICBbbWF4WWVhcl09XCJtYXhZZWFyKClcIlxuICAgICAgICAgIFtkaXNhYmxlXT1cImRpc2FibGUoKVwiXG4gICAgICAgICAgW21pblllYXJdPVwibWluWWVhcigpXCJcbiAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHkoKVwiXG4gICAgICAgICAgW2lzTXVsdGlwbGVdPVwiaXNNdWx0aXBsZSgpID8gaXNSZXNwb25zaXZlKCkgPyB0cnVlIDogZmFsc2UgOiB0cnVlXCJcbiAgICAgICAgICBbcmV2ZXJzZVllYXJdPVwicmV2ZXJzZVllYXIoKVwiXG4gICAgICAgICAgW3NlbGVjdGVkRGF0ZV09XCJzZWxlY3RlZERhdGVUaW1lKCk/LmZyb20oKSB8fCB7fVwiXG4gICAgICAgICAgW3dpZHRoRHJvcGRvd25dPVwid2lkdGhEcm9wZG93bigpXCJcbiAgICAgICAgICBbd2lkdGhCeUVsZW1lbnRdPVwid2lkdGhCeUVsZW1lbnQoKVwiXG4gICAgICAgICAgW2dldEl0ZW1ZZWFyRGlzcGxheV09XCJnZXRJdGVtWWVhckRpc3BsYXkoKVwiXG4gICAgICAgICAgW2xpc3RNYXhJdGVtU2hvd109XCJsaXN0TWF4SXRlbVNob3coKVwiXG4gICAgICAgICAgW2xpc3RLZXlzRGlzYWJsZV09XCJsaXN0S2V5c0Rpc2FibGUoKT8uZnJvbSgpXCJcbiAgICAgICAgICBbbGlzdEhhc0J1dHRvblVuU2VsZWN0T3B0aW9uXT1cImxpc3RIYXNCdXR0b25VblNlbGVjdE9wdGlvbigpXCJcbiAgICAgICAgICBbaXNFbWl0U2VsZWN0ZWREcm9wRG93bl09XCJpc0VtaXRBZnRlckNoYW5nZWQoKVwiXG4gICAgICAgICAgW2NsYXNzSW5jbHVkZVRleHREaXNwbGF5V2hlbk5vU2VsZWN0XT1cIidsaWJzLXVpLWZvbnQtaDVyICcgKyBjbGFzc0luY2x1ZGVUZXh0RGlzcGxheVdoZW5Ob1NlbGVjdCgpXCJcbiAgICAgICAgICAob3V0U2VsZWN0ZWREYXRhKT1cImhhbmRsZXJDaGFuZ2VTZWxlY3RlZEtleSgkZXZlbnQsICdmcm9tJylcIlxuICAgICAgICAgIChvdXRGdW5jdGlvbkNvbnRyb2wpPVwiaGFuZGxlckZ1bmN0aW9uQ29udHJvbCgkZXZlbnQsJ2Zyb20nKVwiXG4gICAgICAgICAgKG91dENoYW5nU3RhZ2VGbGFnTW91c2UpPVwiaGFuZGxlckNoYW5nU3RhZ2VGbGFnTW91c2UoJGV2ZW50KVwiIC8+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICBAaWYgKGlzTXVsdGlwbGUoKSkge1xuICAgIDxkaXYgI2NoaWxkVG9cbiAgICAgIFtjbGFzcy4hdy1bNTAlXV09XCJ3aWR0aEJ5RWxlbWVudCgpXCJcbiAgICAgIFtjbGFzcy4hdy1mdWxsXT1cIiAhd2lkdGhCeUVsZW1lbnQoKSB8fCBpc1Jlc3BvbnNpdmUoKVwiXG4gICAgICBjbGFzcz1cImZsZXggaXRlbXMtc3RhcnRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtci1bOHB4XSBoLVszMnB4XSBmbGV4LXNocmluay0wIGZsZXggaXRlbXMtY2VudGVyXCJcbiAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImlzUmVzcG9uc2l2ZSgpID8gd2lkdGhMYWJlbCgpIDogdW5kZWZpbmVkXCI+XG4gICAgICAgIEBpZiAoIWlnbm9yZUZyb21BbmRUb0RhdGVMYWJlbCgpKSB7XG4gICAgICAgICAgPHNwYW4gI2xhYmVsVG9cbiAgICAgICAgICAgIExpYnNVaUNvbXBvbmVudHNEYXRldGltZURyb3Bkb3duRGlyZWN0aXZlXG4gICAgICAgICAgICBbY2xhc3MuIW9wYWNpdHktWzAuNV1dPVwiZGlzYWJsZSgpXCJcbiAgICAgICAgICAgIGNsYXNzPVwibGlicy11aS1mb250LWg1ciB0ZXh0LW5vd3JhcCB7eyBmcm9tQW5kVG9EYXRlTGFiZWwoKS5jbGFzc0xhYmVsVG8gfHwgJycgfX1cIlxuICAgICAgICAgICAgKG91dENoYW5nZVdpZHRoKT1cImhhbmRsZXJDaGFuZ2VXaWR0aExhYmVsKCRldmVudClcIj5cbiAgICAgICAgICAgIHt7IChmcm9tQW5kVG9EYXRlTGFiZWwoKS50b3x8JyAnKXwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoaWdub3JlRnJvbUFuZFRvRGF0ZUxhYmVsKCkpIHtcbiAgICAgICAgICA8c3BhbiBbY2xhc3MuIW9wYWNpdHktWzAuNV1dPVwiZGlzYWJsZSgpXCJcbiAgICAgICAgICAgIGNsYXNzPVwibGlicy11aS1mb250LWg1clwiPi08L3NwYW4+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIlxuICAgICAgICBbY2xhc3MuIXctZnVsbF09XCJ3aWR0aEJ5RWxlbWVudCgpXCI+XG4gICAgICAgIEBpZiAoIWNoYW5nZVR5cGUoKSkge1xuICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtZGF0ZXRpbWUtZHJvcGRvd24taXRlbSBbY2xhc3Mudy1mdWxsXT1cIndpZHRoQnlFbGVtZW50KClcIlxuICAgICAgICAgICAgW2Rpc2FibGVTZWNvbmRdPVwiZGlzYWJsZVNlY29uZCgpXCJcbiAgICAgICAgICAgIFt0eXBlRGF0ZV09XCJ0eXBlRm9ybWF0KClcIlxuICAgICAgICAgICAgW3pJbmRleF09XCJ6SW5kZXgoKVwiXG4gICAgICAgICAgICBbbWF4WWVhcl09XCJtYXhZZWFyKClcIlxuICAgICAgICAgICAgW2Rpc2FibGVdPVwiZGlzYWJsZSgpXCJcbiAgICAgICAgICAgIFttaW5ZZWFyXT1cIm1pblllYXIoKVwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHkoKVwiXG4gICAgICAgICAgICBbaXNNdWx0aXBsZV09XCJpc011bHRpcGxlKClcIlxuICAgICAgICAgICAgW3JldmVyc2VZZWFyXT1cInJldmVyc2VZZWFyKClcIlxuICAgICAgICAgICAgW3NlbGVjdGVkRGF0ZV09XCJzZWxlY3RlZERhdGVUaW1lKCk/LnRvKCkgfHwge31cIlxuICAgICAgICAgICAgW3dpZHRoRHJvcGRvd25dPVwid2lkdGhEcm9wZG93bigpXCJcbiAgICAgICAgICAgIFt3aWR0aEJ5RWxlbWVudF09XCJ3aWR0aEJ5RWxlbWVudCgpXCJcbiAgICAgICAgICAgIFtnZXRJdGVtWWVhckRpc3BsYXldPVwiZ2V0SXRlbVllYXJEaXNwbGF5KClcIlxuICAgICAgICAgICAgW2xpc3RNYXhJdGVtU2hvd109XCJsaXN0TWF4SXRlbVNob3coKVwiXG4gICAgICAgICAgICBbbGlzdEtleXNEaXNhYmxlXT1cImxpc3RLZXlzRGlzYWJsZSgpPy50bygpXCJcbiAgICAgICAgICAgIFtsaXN0SGFzQnV0dG9uVW5TZWxlY3RPcHRpb25dPVwibGlzdEhhc0J1dHRvblVuU2VsZWN0T3B0aW9uKClcIlxuICAgICAgICAgICAgW2NsYXNzSW5jbHVkZVRleHREaXNwbGF5V2hlbk5vU2VsZWN0XT1cIidsaWJzLXVpLWZvbnQtaDVyICcgKyBjbGFzc0luY2x1ZGVUZXh0RGlzcGxheVdoZW5Ob1NlbGVjdFwiXG4gICAgICAgICAgICBbaXNFbWl0U2VsZWN0ZWREcm9wRG93bl09XCJpc0VtaXRBZnRlckNoYW5nZWQoKVwiXG4gICAgICAgICAgICAob3V0U2VsZWN0ZWREYXRhKT1cImhhbmRsZXJDaGFuZ2VTZWxlY3RlZEtleSgkZXZlbnQsICd0bycpXCJcbiAgICAgICAgICAgIChvdXRGdW5jdGlvbkNvbnRyb2wpPVwiaGFuZGxlckZ1bmN0aW9uQ29udHJvbCgkZXZlbnQsJ3RvJylcIlxuICAgICAgICAgICAgKG91dENoYW5nU3RhZ2VGbGFnTW91c2UpPVwiaGFuZGxlckNoYW5nU3RhZ2VGbGFnTW91c2UoJGV2ZW50KVwiIC8+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICB9XG48L2Rpdj5cblxuQGlmIChpc0Vycm9yQ29tcGFyZURhdGUoKSkge1xuICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgbXQtWzRweF1cIj5cbiAgICA8c3BhbiBjbGFzcz1cImxpYnMtdWktbWVzc2FnZS1lcnJvciBsaWJzLXVpLWZvbnQtaDdyIGxpYnMtdWktdGV4dC1lcnJvclwiPnt7IHZhbGlkUmVxdWlyZWQoKT8ubWVzc2FnZVZhbGlkQ29tcGFyZVRpbWUgfHwgXCJpMThuX2ludmFsaWRfZW5kX2RhdGVfc2VsZWN0ZWRcIiB8IHRyYW5zbGF0ZTp2YWxpZFJlcXVpcmVkKCk/LmludGVycG9sYXRlUGFyYW1zQ29tcGFyZVRpbWUgfX08L3NwYW4+XG4gIDwvZGl2PlxufVxuIl19
272
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2RhdGV0aW1lL2Ryb3Bkb3duL3NyYy9kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZGF0ZXRpbWUvZHJvcGRvd24vc3JjL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0ssT0FBTyxFQUFVLDhCQUE4QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFbkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sRUFBRSx5Q0FBeUMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBS2hHLE9BQU8sRUFBRSw2Q0FBNkMsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7QUFpQnRGLE1BQU0sT0FBTyx5Q0FBeUM7SUFDcEQsbUJBQW1CO0lBQ1QsS0FBSyxHQUFHLE1BQU0sQ0FBUyxDQUFDLENBQUMsQ0FBQztJQUMxQixZQUFZLEdBQUcsTUFBTSxDQUFxQixTQUFTLENBQUMsQ0FBQztJQUNyRCxVQUFVLEdBQUcsTUFBTSxDQUFxQixTQUFTLENBQUMsQ0FBQztJQUNuRCxjQUFjLEdBQUcsTUFBTSxDQUFTLENBQUMsQ0FBQyxD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QUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ25CLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztRQUM5QyxDQUFDLEVBQUUsR0FBRyxDQUF1QixDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVTLDBCQUEwQixDQUFDLFNBQXFCO1FBQ3hELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUMsQ0FBQzt3R0ExU1UseUNBQXlDOzRGQUF6Qyx5Q0FBeUMscXpLQzVCdEQseTBNQW9JQSx5REQvR0ksZUFBZSw0RkFDZiw4QkFBOEIsNHFCQUM5Qix5Q0FBeUMscUhBQ3pDLDZDQUE2Qzs7NEZBSXBDLHlDQUF5QztrQkFmckQsU0FBUzsrQkFFRSxzQ0FBc0MsY0FHcEMsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNQLGVBQWU7d0JBQ2YsOEJBQThCO3dCQUM5Qix5Q0FBeUM7d0JBQ3pDLDZDQUE2QztxQkFDOUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBFbGVtZW50UmVmLCBpbmplY3QsIGlucHV0LCBPbkluaXQsIG91dHB1dCwgc2lnbmFsLCB1bnRyYWNrZWQsIHZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBJTGFiZWwsIExpYnNVaUNvbXBvbmVudHNMYWJlbENvbXBvbmVudCB9IGZyb20gXCJAbGlicy11aS9jb21wb25lbnRzLWxhYmVsXCI7XG5pbXBvcnQgeyBJRmxhZ01vdXNlIH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtcG9wb3ZlclwiO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7IGZyb21FdmVudCwgU3ViamVjdCwgdGFrZVVudGlsLCB0aW1lciB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBDb21wYXJlRGF0ZSB9IGZyb20gXCIuL2RlZmluZXMvZGF0ZS1kcm9wZG93bi5kZWZpbmVcIjtcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNEYXRldGltZURyb3Bkb3duRGlyZWN0aXZlIH0gZnJvbSBcIi4vZGlyZWN0aXZlL2RhdGUtZHJvcGRvd24uZGlyZWN0aXZlXCI7XG5pbXBvcnQgeyBJRGF0ZURyb3Bkb3duRGlzYWJsZUtleXMsIElGcm9tQW5kVG9EYXRlTGFiZWwsIElIaWRkZW5EYXRlLCBUWVBFX0RBVEVfRFJPUERPV05fRk9STUFULCBUWVBFX0RBVEVfRk9STUFUIH0gZnJvbSBcIi4vaW50ZXJmYWNlcy9kYXRlLWRyb3Bkb3duLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgSUVtaXRNdWx0aURhdGVEcm9wZG93biwgSUVtaXRTaW5nbGVEYXRlRHJvcGRvd24gfSBmcm9tIFwiLi9pbnRlcmZhY2VzL2VtaXQtZHJvcGRvd24uaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBJRGF0ZURyb3Bkb3duRnVuY3Rpb25Db250cm9sRXZlbnQsIElEYXRlRHJvcGRvd25JdGVtRnVuY3Rpb25Db250cm9sRXZlbnQgfSBmcm9tIFwiLi9pbnRlcmZhY2VzL2Z1bmN0aW9ucy1jb250cm9sLWV2ZW50LmludGVyZmFjZVwiO1xuaW1wb3J0IHsgSVZhbGlkRGF0ZURyb3Bkb3duIH0gZnJvbSBcIi4vaW50ZXJmYWNlcy92YWxpZC5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNEYXRldGltZURyb3Bkb3duSXRlbUNvbXBvbmVudCB9IGZyb20gXCIuL2l0ZW0vaXRlbS5jb21wb25lbnRcIjtcblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnbGlic191aS1jb21wb25lbnRzLWRhdGV0aW1lLWRyb3Bkb3duJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZHJvcGRvd24uY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgTGlic1VpQ29tcG9uZW50c0xhYmVsQ29tcG9uZW50LFxuICAgIExpYnNVaUNvbXBvbmVudHNEYXRldGltZURyb3Bkb3duRGlyZWN0aXZlLFxuICAgIExpYnNVaUNvbXBvbmVudHNEYXRldGltZURyb3Bkb3duSXRlbUNvbXBvbmVudFxuICBdXG59KVxuXG5leHBvcnQgY2xhc3MgTGlic1VpQ29tcG9uZW50c0RhdGV0aW1lRHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICAvLyAjcmVnaW9uIFBST1BFUlRZXG4gIHByb3RlY3RlZCB3aWR0aCA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBwcm90ZWN0ZWQgd2lkdGhFbGVtZW50ID0gc2lnbmFsPG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJvdGVjdGVkIHdpZHRoTGFiZWwgPSBzaWduYWw8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcm90ZWN0ZWQgd2lkdGhMYWJlbEZyb20gPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgcHJvdGVjdGVkIHdpZHRoTGFiZWxUbyA9IHNpZ25hbDxudW1iZXI+KDApO1xuICBwcm90ZWN0ZWQgaXNFcnJvckNvbXBhcmVEYXRlID0gc2lnbmFsPGJvb2xlYW4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByb3RlY3RlZCBjaG9vc2VEYXRlID0gc2lnbmFsPElFbWl0TXVsdGlEYXRlRHJvcGRvd24gfCB1bmRlZmluZWQ+KHsgZnJvbTogc2lnbmFsKHt9KSwgdG86IHNpZ25hbCh7fSkgfSk7XG4gIHByb3RlY3RlZCBpc1Jlc3BvbnNpdmUgPSBzaWduYWw8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJvdGVjdGVkIGFycmF5Rm9ybWF0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnR5cGVGb3JtYXQoKS5zcGxpdCgnLScpIGFzIEFycmF5PFRZUEVfREFURV9GT1JNQVQ+O1xuICB9KTtcbiAgcHJvdGVjdGVkIGNoYW5nZVR5cGUgPSBzaWduYWw8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBwcml2YXRlIGNhY2hlV2lkdGhMYWJlbCA9IHNpZ25hbDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgdGltZU91dCA9IHNpZ25hbDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgb25EZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBmdW5jdGlvbnNDb250cm9sID0gbmV3IE1hcDxzdHJpbmcsIElEYXRlRHJvcGRvd25JdGVtRnVuY3Rpb25Db250cm9sRXZlbnQ+KCk7XG5cbiAgLy8gI3JlZ2lvbiBJTlBVVFxuICByZWFkb25seSBsYWJlbENvbmZpZyA9IGlucHV0PElMYWJlbCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgd2lkdGhEcm9wZG93biA9IGlucHV0PG51bWJlciwgbnVtYmVyPigxMzYsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/IDEzNiB9KTtcbiAgcmVhZG9ubHkgekluZGV4ID0gaW5wdXQ8bnVtYmVyLCBudW1iZXI+KDEyMDAsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/IDEyMDAgfSk7XG4gIHJlYWRvbmx5IG1heFllYXIgPSBpbnB1dDxudW1iZXI+KDApO1xuICByZWFkb25seSBtaW5ZZWFyID0gaW5wdXQ8bnVtYmVyPigwKTtcbiAgcmVhZG9ubHkgbWluV2lkdGggPSBpbnB1dDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGRpc2FibGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHJlYWRvbmx5ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBpc011bHRpcGxlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSByZXZlcnNlWWVhciA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGlzQm9yZGVyRXJyb3IgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGlnbm9yZVdpZHRoMTAwID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSB3aWR0aEJ5RWxlbWVudCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgZGlzYWJsZVNlY29uZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgdHlwZUZvcm1hdCA9IGlucHV0PFRZUEVfREFURV9EUk9QRE9XTl9GT1JNQVQsIFRZUEVfREFURV9EUk9QRE9XTl9GT1JNQVQ+KCdtb250aC1kYXknLCB7IHRyYW5zZm9ybTogKHZhbHVlKSA9PiB2YWx1ZSA/PyAnbW9udGgtZGF5JyB9KTtcbiAgcmVhZG9ubHkgZnJvbUFuZFRvRGF0ZUxhYmVsID0gaW5wdXQ8SUZyb21BbmRUb0RhdGVMYWJlbD4oeyBmcm9tOiAnaTE4bl9sYWJlbF9mcm9tJywgdG86ICdpMThuX3RvJyB9KTtcbiAgcmVhZG9ubHkgbGlzdEhhc0J1dHRvblVuU2VsZWN0T3B0aW9uID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBzZWxlY3RlZERhdGVUaW1lID0gaW5wdXQ8SUVtaXRNdWx0aURhdGVEcm9wZG93biB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgaXNFbWl0QWZ0ZXJDaGFuZ2VkID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpOyAvLyBkw7luZyDEkeG7gyBlbWl0IG3hu5dpIGzhuqduIGNo4buNbiBnacOhIHRy4buLIHbDoCBs4bqnbiDEkeG6p3UgaW5pdFxuICByZWFkb25seSBnZXRJdGVtWWVhckRpc3BsYXkgPSBpbnB1dDwoeWVhcjogc3RyaW5nKSA9PiBzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IGlnbm9yZUZyb21BbmRUb0RhdGVMYWJlbCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgY2xhc3NJbmNsdWRlVGV4dERpc3BsYXlXaGVuTm9TZWxlY3QgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGhpZGRlbkRhdGUgPSBpbnB1dDxJSGlkZGVuRGF0ZSB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgbGlzdE1heEl0ZW1TaG93ID0gaW5wdXQ8eyB5ZWFyPzogbnVtYmVyOyBtb250aD86IG51bWJlcjsgcXVhcnRlcj86IG51bWJlcjsgZGF5PzogbnVtYmVyOyB9IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBpZ25vcmVDb252ZXJ0WWVhclNlbGVjdGVkID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBsaXN0S2V5c0Rpc2FibGUgPSBpbnB1dDxJRGF0ZURyb3Bkb3duRGlzYWJsZUtleXMgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgcmVhZG9ubHkgaWdub3JlQWxsb3dUaW1lRXF1YWwgPSBpbnB1dDxib29sZWFuLCBib29sZWFuPih0cnVlLCB7IHRyYW5zZm9ybTogKHZhbHVlKSA9PiB2YWx1ZSA/PyB0cnVlIH0pO1xuICByZWFkb25seSBpZ25vcmVWYWxpZFRpbWVDb21wYXJlID0gaW5wdXQ8Ym9vbGVhbiwgYm9vbGVhbj4oZmFsc2UsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/IGZhbHNlIH0pO1xuICByZWFkb25seSBpc0NoZWNrRXJyb3JXaGVuU2VsZWN0SXRlbSA9IGlucHV0PGJvb2xlYW4sIGJvb2xlYW4+KHRydWUsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/IHRydWUgfSk7XG4gIHJlYWRvbmx5IGlnbm9yZVJlcXVpcmVkVmFsdWVTZWNvbmRXaGVuTm90VmFsaWRSZXF1aXJlZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTsgLy8gY8OzIHZhbGlkYXRlIGdpw6EgdHLhu4sgdGjhu6kgMiBraGkgdmFsaWRSZXF1aXJlZCBraMO0bmc/XG4gIHJlYWRvbmx5IHZhbGlkUmVxdWlyZWQgPSBpbnB1dDxJVmFsaWREYXRlRHJvcGRvd24+KCk7XG5cbiAgLy8gI3JlZ2lvbiBPVVRQVVRcbiAgcmVhZG9ubHkgb3V0RnVuY3Rpb25zQ29udHJvbCA9IG91dHB1dDxJRGF0ZURyb3Bkb3duRnVuY3Rpb25Db250cm9sRXZlbnQ+KCk7XG4gIHJlYWRvbmx5IG91dFNlbGVjdGVkRHJvcGRvd24gPSBvdXRwdXQ8SUVtaXRTaW5nbGVEYXRlRHJvcGRvd24gfCBJRW1pdE11bHRpRGF0ZURyb3Bkb3duPigpOy8vIGTDuW5nIGNobyB0csaw4budbmcgaOG7o3AgZW1pdCBt4buXaSBt4buZdCBs4bqnbiBjaOG7jW4gZ2nDoSB0cuG7iyBuw6puIGtoaSBz4butIGThu6VuZyBwaOG6o2kgY2hlY2sga8SpIHVuZGVmaW5lZFxuICByZWFkb25seSBvdXRDaG9vc2VNdWx0aURhdGUgPSBvdXRwdXQ8SUVtaXRNdWx0aURhdGVEcm9wZG93bj4oKTtcbiAgcmVhZG9ubHkgb3V0Q2hvb3NlU2luZ2xlRGF0ZSA9IG91dHB1dDxJRW1pdFNpbmdsZURhdGVEcm9wZG93bj4oKTtcbiAgcmVhZG9ubHkgb3V0Q2hhbmdTdGFnZUZsYWdNb3VzZSA9IG91dHB1dDxJRmxhZ01vdXNlPigpO1xuXG4gIC8qIFZJRVcgQ0hJTEQgKi9cbiAgcHJpdmF0ZSBjb250YWluZXJSZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZj4oJ3BhcmVudCcpO1xuICBwcml2YXRlIGxhYmVsRnJvbVJlZiA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPignbGFiZWxGcm9tJyk7XG4gIHByaXZhdGUgbGFiZWxUb1JlZiA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPignbGFiZWxUbycpO1xuXG4gIC8vICNyZWdpb24gSU5KRUNUXG4gIHByaXZhdGUgdHJhbnNsYXRlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBpc011bHRpcGxlID0gdGhpcy5pc011bHRpcGxlKCk7XG5cbiAgICAgIGlmICghaXNNdWx0aXBsZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2hhbmdlVHlwZS5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMuZnVuY3Rpb25zQ29udHJvbC5jbGVhcigpO1xuICAgICAgICB0aW1lcigwKS5waXBlKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNoZWNrUmVzcG9uc2l2ZSgpO1xuICAgICAgICAgIHRoaXMuY2hhbmdlVHlwZS5zZXQoZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5vdXRGdW5jdGlvbnNDb250cm9sLmVtaXQoeyBjaGVja0lzVmFsaWQ6IHRoaXMudmFsaWRhdGUuYmluZCh0aGlzKSwgcmVzZXRFcnJvcjogdGhpcy5yZXNldEVycm9yLmJpbmQodGhpcyksIHJlc2V0VGltZTogdGhpcy5yZXNldERyb3Bkb3duLmJpbmQodGhpcykgfSk7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlVGltZSgpKSB7XG4gICAgICB0aGlzLmNob29zZURhdGUuc2V0KHRoaXMuc2VsZWN0ZWREYXRlVGltZSgpKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKHRoaXMuc2V0V2lkdGhEYXRlLmJpbmQodGhpcykpO1xuICAgIHRoaXMud2lkdGhMYWJlbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aW1lcigwKS5waXBlKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuY2hlY2tSZXNwb25zaXZlKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2hlY2tSZXNwb25zaXZlKCkge1xuICAgIHRoaXMuaXNSZXNwb25zaXZlLnNldChmYWxzZSk7XG4gICAgY29uc3Qgd2lkdGhFbGVtZW50UGFyZW50ID0gdGhpcy5jb250YWluZXJSZWYoKT8ubmF0aXZlRWxlbWVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggfHwgMDtcblxuICAgIHRoaXMud2lkdGhMYWJlbEZyb20uc2V0KHRoaXMubGFiZWxGcm9tUmVmKCk/Lm5hdGl2ZUVsZW1lbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIHx8IDApO1xuICAgIHRoaXMud2lkdGhMYWJlbFRvLnNldCh0aGlzLmxhYmVsVG9SZWYoKT8ubmF0aXZlRWxlbWVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggfHwgMCk7XG5cbiAgICBjb25zdCBzcGFjZUJldHdlZW5EYXRlID0gKHRoaXMuYXJyYXlGb3JtYXQoKS5sZW5ndGggKiAyKSArICh0aGlzLmZyb21BbmRUb0RhdGVMYWJlbCgpLmZyb20gPyAxIDogMCk7XG4gICAgY29uc3Qgd2lkdGggPSAodGhpcy53aWR0aERyb3Bkb3duKCkgKiA0KSArICg4ICogc3BhY2VCZXR3ZWVuRGF0ZSkgKyB0aGlzLndpZHRoTGFiZWxGcm9tKCkgKyB0aGlzLndpZHRoTGFiZWxUbygpO1xuXG4gICAgaWYgKHdpZHRoRWxlbWVudFBhcmVudCA8IHdpZHRoKSB7XG4gICAgICB0aGlzLmlzUmVzcG9uc2l2ZS5zZXQodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJDaGFuZ2VTZWxlY3RlZEtleShldmVudDogSUVtaXRTaW5nbGVEYXRlRHJvcGRvd24sIHR5cGU6ICdmcm9tJyB8ICd0bycpIHtcbiAgICB0aGlzLmNob29zZURhdGUudXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgICAgY3VycmVudFt0eXBlXS5zZXQoZXZlbnQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY3VycmVudDtcbiAgICB9KTtcbiAgICBpZiAodGhpcy5pc0VtaXRBZnRlckNoYW5nZWQoKSkge1xuICAgICAgY29uc3QgZGF0YUVtaXQgPSB0aGlzLmlzTXVsdGlwbGUoKSA/IHRoaXMuY2hvb3NlRGF0ZSgpIDogdGhpcy5jaG9vc2VEYXRlKCk/LmZyb20oKTtcblxuICAgICAgaWYgKGRhdGFFbWl0KSB7XG4gICAgICAgIHRoaXMub3V0U2VsZWN0ZWREcm9wZG93bi5lbWl0KGRhdGFFbWl0KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5hcHBseURhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzZXREcm9wZG93bigpIHtcbiAgICB0aGlzLmZ1bmN0aW9uc0NvbnRyb2wuZm9yRWFjaChjb250cm9sID0+IGNvbnRyb2wucmVzZXREcm9wZG93bigpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzZXRFcnJvcigpIHtcbiAgICB0aGlzLmZ1bmN0aW9uc0NvbnRyb2wuZm9yRWFjaChjb250cm9sID0+IGNvbnRyb2wucmVzZXRFcnJvcigpKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0V2lkdGhEYXRlKCkge1xuICAgIGlmICghdGhpcy5jb250YWluZXJSZWYoKSB8fCAhdGhpcy5jb250YWluZXJSZWYoKT8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aW1lcigwKS5waXBlKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuY2hlY2tSZXNwb25zaXZlKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckZ1bmN0aW9uQ29udHJvbChldmVudDogSURhdGVEcm9wZG93bkl0ZW1GdW5jdGlvbkNvbnRyb2xFdmVudCwgdHlwZTogJ2Zyb20nIHwgJ3RvJykge1xuICAgIHRoaXMuZnVuY3Rpb25zQ29udHJvbC5zZXQodHlwZSwgZXZlbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGNoZWNrVmFsaWQoKSB7XG4gICAgbGV0IHZhbGlkID0gdHJ1ZTtcblxuICAgIGZvciAoY29uc3QgY29udHJvbCBvZiB0aGlzLmZ1bmN0aW9uc0NvbnRyb2wudmFsdWVzKCkpIHtcbiAgICAgIGlmICghKGF3YWl0IGNvbnRyb2wuY2hlY2tJc1ZhbGlkKCkpKSB7XG4gICAgICAgIHZhbGlkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbXBhcmVEYXRlKCkpIHtcbiAgICAgIHZhbGlkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRFcnJvcihlcnJvcjogYm9vbGVhbikge1xuICAgIHRoaXMuZnVuY3Rpb25zQ29udHJvbC5mb3JFYWNoKGNvbnRyb2wgPT4gY29udHJvbC5zZXRFcnJvcihlcnJvcikpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb21wYXJlRGF0ZSgpIHtcbiAgICBjb25zdCB0eXBlID0gdGhpcy50eXBlRm9ybWF0KCkuc3BsaXQoJy0nKSBhcyBBcnJheTxUWVBFX0RBVEVfRk9STUFUPjtcbiAgICBjb25zdCBkYXRlQ29tcGFyZTogQXJyYXk8eyBmcm9tOiBudW1iZXIgfCB1bmRlZmluZWQsIHRvOiBudW1iZXIgfCB1bmRlZmluZWQgfT4gPSBbXTtcblxuICAgIHR5cGUuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGNvbnN0IGZyb20gPSB0aGlzLmNob29zZURhdGUoKT8uZnJvbSgpW2l0ZW1dO1xuICAgICAgY29uc3QgdG8gPSB0aGlzLmNob29zZURhdGUoKT8udG8oKVtpdGVtXTtcblxuICAgICAgZGF0ZUNvbXBhcmUucHVzaCh7IGZyb206IGZyb20sIHRvOiB0byB9KTtcbiAgICB9KTtcbiAgICBpZiAodGhpcy5pZ25vcmVWYWxpZFRpbWVDb21wYXJlKCkgfHwgIXRoaXMuY2hlY2tDb25kaXRpb24odHJ1ZSkpIHtcbiAgICAgIHRoaXMuaXNFcnJvckNvbXBhcmVEYXRlLnNldChmYWxzZSk7XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKENvbXBhcmVEYXRlKGRhdGVDb21wYXJlLCB0aGlzLmlnbm9yZUFsbG93VGltZUVxdWFsKCkpKSB7XG4gICAgICB0aGlzLnNldEVycm9yKHRydWUpO1xuICAgICAgdGhpcy5pc0Vycm9yQ29tcGFyZURhdGUuc2V0KHRydWUpO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5pc0Vycm9yQ29tcGFyZURhdGUuc2V0KGZhbHNlKTtcblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdmFsaWRhdGUoKSB7XG4gICAgbGV0IHZhbGlkID0gdHJ1ZTtcblxuICAgIGlmICghdGhpcy52YWxpZFJlcXVpcmVkKCkpIHtcbiAgICAgIGlmICghdGhpcy5jaGVja0NvbmRpdGlvbihmYWxzZSkgJiYgIXRoaXMuaWdub3JlUmVxdWlyZWRWYWx1ZVNlY29uZFdoZW5Ob3RWYWxpZFJlcXVpcmVkKCkpIHtcbiAgICAgICAgdmFsaWQgPSBhd2FpdCB0aGlzLmNoZWNrVmFsaWQoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHZhbGlkO1xuICAgIH1cblxuICAgIHJldHVybiBhd2FpdCB0aGlzLmNoZWNrVmFsaWQoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tDb25kaXRpb24oaGFzVmFsdWU6IGJvb2xlYW4pIHtcbiAgICBsZXQgY2hlY2tWYWx1ZSA9IHRydWU7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMudHlwZUZvcm1hdCgpLnNwbGl0KCctJykgYXMgQXJyYXk8VFlQRV9EQVRFX0ZPUk1BVD47XG5cbiAgICB0eXBlLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBpZiAoaGFzVmFsdWUgJiYgKCF0aGlzLmNob29zZURhdGUoKT8uZnJvbSgpW2l0ZW1dIHx8ICF0aGlzLmNob29zZURhdGUoKT8udG8oKVtpdGVtXSkpIHtcbiAgICAgICAgY2hlY2tWYWx1ZSA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKCFoYXNWYWx1ZSAmJiAodGhpcy5jaG9vc2VEYXRlKCk/LmZyb20oKVtpdGVtXSB8fCB0aGlzLmNob29zZURhdGUoKT8udG8oKVtpdGVtXSkpIHtcbiAgICAgICAgY2hlY2tWYWx1ZSA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNoZWNrVmFsdWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXBwbHlEYXRlKCkge1xuICAgIHRoaXMuc2V0RXJyb3IoZmFsc2UpO1xuICAgIHRoaXMuaXNFcnJvckNvbXBhcmVEYXRlLnNldChmYWxzZSk7XG4gICAgaWYgKHRoaXMuaXNDaGVja0Vycm9yV2hlblNlbGVjdEl0ZW0oKSAmJiAhdGhpcy52YWxpZGF0ZSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGZyb20gPSB0aGlzLmNob29zZURhdGUoKT8uZnJvbTtcbiAgICBjb25zdCB0byA9IHRoaXMuY2hvb3NlRGF0ZSgpPy50bztcblxuICAgIGlmICh0aGlzLmlzTXVsdGlwbGUoKSkge1xuICAgICAgaWYgKHRoaXMuY29tcGFyZURhdGUoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsZXQgZGF0YVNlbGVjdGVkOiBJRW1pdE11bHRpRGF0ZURyb3Bkb3duIHwgdW5kZWZpbmVkID0geyBmcm9tOiBzaWduYWwoe30pLCB0bzogc2lnbmFsKHt9KSB9O1xuXG4gICAgICB0aGlzLmFycmF5Rm9ybWF0KCkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICBpZiAoIWZyb20/LigpPy5ba2V5XSB8fCAhdG8/LigpPy5ba2V5XSkge1xuICAgICAgICAgIGRhdGFTZWxlY3RlZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YVNlbGVjdGVkKSB7XG4gICAgICAgICAgZGF0YVNlbGVjdGVkLmZyb20udXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICAgICAgY3VycmVudFtrZXldID0gTnVtYmVyKGZyb20/LigpW2tleV0pO1xuXG4gICAgICAgICAgICByZXR1cm4gY3VycmVudDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBkYXRhU2VsZWN0ZWQudG8udXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICAgICAgY3VycmVudFtrZXldID0gTnVtYmVyKHRvPy4oKVtrZXldKTtcblxuICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAoZGF0YVNlbGVjdGVkKSB7XG4gICAgICAgIHRoaXMub3V0Q2hvb3NlTXVsdGlEYXRlLmVtaXQoZGF0YVNlbGVjdGVkKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgZGF0YVNlbGVjdGVkOiBJRW1pdFNpbmdsZURhdGVEcm9wZG93biB8IHVuZGVmaW5lZCA9IHt9O1xuXG4gICAgdGhpcy5hcnJheUZvcm1hdCgpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGlmICghZnJvbT8uKCk/LltrZXldKSB7XG4gICAgICAgIGRhdGFTZWxlY3RlZCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGlmIChkYXRhU2VsZWN0ZWQpIHtcbiAgICAgICAgZGF0YVNlbGVjdGVkW2tleV0gPSBOdW1iZXIoZnJvbT8uKCk/LltrZXldKVxuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChkYXRhU2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMub3V0Q2hvb3NlU2luZ2xlRGF0ZS5lbWl0KGRhdGFTZWxlY3RlZCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJDaGFuZ2VXaWR0aExhYmVsKHdpZHRoOiBudW1iZXIpIHtcbiAgICB0aGlzLmNhY2hlV2lkdGhMYWJlbC5zZXQod2lkdGggPCAodGhpcy5jYWNoZVdpZHRoTGFiZWwoKSB8fCAwKSA/IHRoaXMuY2FjaGVXaWR0aExhYmVsKCkgOiBNYXRoLmNlaWwod2lkdGgpKTtcbiAgICBpZiAodGhpcy50aW1lT3V0KCkpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVPdXQoKSk7XG4gICAgfVxuICAgIHRoaXMudGltZU91dC5zZXQoKHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy53aWR0aExhYmVsLnNldCh0aGlzLmNhY2hlV2lkdGhMYWJlbCgpKTtcbiAgICB9LCAxMDApIGFzIHVua25vd24pIGFzIG51bWJlcik7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckNoYW5nU3RhZ2VGbGFnTW91c2UoZmxhZ01vdXNlOiBJRmxhZ01vdXNlKSB7XG4gICAgdGhpcy5vdXRDaGFuZ1N0YWdlRmxhZ01vdXNlLmVtaXQoZmxhZ01vdXNlKTtcbiAgfVxufSIsIkBpZiAobGFiZWxDb25maWcoKTsgYXMgbGFiZWxDb25maWcpIHtcbiAgPGxpYnNfdWktY29tcG9uZW50cy1sYWJlbCBbY2xhc3NJbmNsdWRlXT1cImxhYmVsQ29uZmlnLmNsYXNzSW5jbHVkZVwiXG4gICAgW2xhYmVsTGVmdF09XCJsYWJlbENvbmZpZy5sYWJlbExlZnRcIlxuICAgIFtsYWJlbExlZnRDbGFzc109XCJsYWJlbENvbmZpZy5sYWJlbExlZnRDbGFzc1wiXG4gICAgW3JlcXVpcmVkXT1cImxhYmVsQ29uZmlnLnJlcXVpcmVkIFwiXG4gICAgW2Rlc2NyaXB0aW9uXT1cImxhYmVsQ29uZmlnLmRlc2NyaXB0aW9uXCJcbiAgICBbbGFiZWxSaWdodF09XCJsYWJlbENvbmZpZy5sYWJlbFJpZ2h0XCJcbiAgICBbbGFiZWxSaWdodENsYXNzXT1cImxhYmVsQ29uZmlnLmxhYmVsUmlnaHRDbGFzc1wiXG4gICAgW29ubHlTaG93Q291bnRdPVwibGFiZWxDb25maWcub25seVNob3dDb3VudFwiXG4gICAgW2J1dHRvbnNMZWZ0XT1cImxhYmVsQ29uZmlnLmJ1dHRvbnNMZWZ0XCJcbiAgICBbYnV0dG9uc1JpZ2h0XT1cImxhYmVsQ29uZmlnLmJ1dHRvbnNSaWdodFwiXG4gICAgW2J1dHRvbnNEZXNjcmlwdGlvbl09XCJsYWJlbENvbmZpZy5idXR0b25zRGVzY3JpcHRpb25cIlxuICAgIFtkZXNjcmlwdGlvbkNsYXNzXT1cImxhYmVsQ29uZmlnLmRlc2NyaXB0aW9uQ2xhc3NcIlxuICAgIFtkaXNhYmxlQnV0dG9uc0xlZnRdPVwibGFiZWxDb25maWcuZGlzYWJsZUJ1dHRvbnNMZWZ0XCJcbiAgICBbZGlzYWJsZUJ1dHRvbnNSaWdodF09XCJsYWJlbENvbmZpZy5kaXNhYmxlQnV0dG9uc1JpZ2h0XCJcbiAgICBbaGFzVG9nZ2xlXT1cImxhYmVsQ29uZmlnLmhhc1RvZ2dsZVwiXG4gICAgW3RvZ2dsZUFjdGl2ZV09XCJsYWJlbENvbmZpZy50b2dnbGVBY3RpdmVcIlxuICAgIFt0b2dnbGVEaXNhYmxlXT1cImxhYmVsQ29uZmlnLnRvZ2dsZURpc2FibGUgfHwgZGlzYWJsZSgpXCJcbiAgICBbcG9wb3Zlcl09XCJsYWJlbENvbmZpZy5wb3BvdmVyXCJcbiAgICBbaWNvblBvcG92ZXJDbGFzc109XCJsYWJlbENvbmZpZy5pY29uUG9wb3ZlckNsYXNzXCJcbiAgICBbbGltaXRMZW5ndGhdPVwibGFiZWxDb25maWcubGltaXRMZW5ndGhcIlxuICAgIFtjb3VudF09XCJsYWJlbENvbmZpZy5jb3VudFwiIC8+XG59XG48ZGl2ICNwYXJlbnRcbiAgY2xhc3M9XCJmbGV4IGl0ZW1zLXN0YXJ0XCJcbiAgW2NsYXNzLiF3LWZ1bGxdPVwid2lkdGhCeUVsZW1lbnQoKVwiXG4gIFtjbGFzcy4hY29sdW1uXT1cImlzUmVzcG9uc2l2ZSgpICYmIGlzTXVsdGlwbGUoKVwiPlxuICA8ZGl2ICNjaGlsZEZyb21cbiAgICBjbGFzcz1cImZsZXggaXRlbXMtc3RhcnRcIlxuICAgIFtjbGFzcy53LVs1MCVdXT1cIndpZHRoQnlFbGVtZW50KCkgJiYgIWlzUmVzcG9uc2l2ZSgpXCJcbiAgICBbY2xhc3MuIW1iLVs4cHhdXT1cImlzUmVzcG9uc2l2ZSgpICYmIGlzTXVsdGlwbGUoKVwiXG4gICAgW2NsYXNzLiFtci1bOHB4XV09XCIhaXNSZXNwb25zaXZlKCkgJiYgaXNNdWx0aXBsZSgpXCJcbiAgICBbY2xhc3Mudy1mdWxsXT1cIiFpc011bHRpcGxlKCkgJiYgIXdpZHRoQnlFbGVtZW50KCkgfHwgaXNSZXNwb25zaXZlKClcIlxuICAgIFtzdHlsZS53aWR0aC5weF09XCIhd2lkdGhCeUVsZW1lbnQoKSAmJiBpc011bHRpcGxlKCkgJiYgIWlzUmVzcG9uc2l2ZSgpID8oKHdpZHRoRHJvcGRvd24oKSAqIGFycmF5Rm9ybWF0KCkubGVuZ3RoKSsoOCAqIGFycmF5Rm9ybWF0KCkubGVuZ3RoKSArIHdpZHRoTGFiZWxGcm9tKCkpOnVuZGVmaW5lZFwiPlxuXG4gICAgQGlmIChpc011bHRpcGxlKCkgJiYgIWlnbm9yZUZyb21BbmRUb0RhdGVMYWJlbCgpICYmIGZyb21BbmRUb0RhdGVMYWJlbCgpLmZyb20pIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJtci1bOHB4XSBmbGV4LXNocmluay0wIGgtWzMycHhdIGZsZXggaXRlbXMtY2VudGVyXCJcbiAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImlzUmVzcG9uc2l2ZSgpID8gKHdpZHRoTGFiZWwoKSB8fCB1bmRlZmluZWQpIDogdW5kZWZpbmVkXCI+XG4gICAgICAgIDxzcGFuICNsYWJlbEZyb21cbiAgICAgICAgICBMaWJzVWlDb21wb25lbnRzRGF0ZXRpbWVEcm9wZG93bkRpcmVjdGl2ZVxuICAgICAgICAgIFtjbGFzcy4hb3BhY2l0eS1bMC41XV09XCJkaXNhYmxlKClcIlxuICAgICAgICAgIGNsYXNzPVwibGlicy11aS1mb250LWg1ciB0ZXh0LW5vd3JhcCB7eyBmcm9tQW5kVG9EYXRlTGFiZWwoKS5jbGFzc0xhYmVsRnJvbSB8fCAnJyB9fVwiXG4gICAgICAgICAgKG91dENoYW5nZVdpZHRoKT1cImhhbmRsZXJDaGFuZ2VXaWR0aExhYmVsKCRldmVudClcIj5cbiAgICAgICAgICB7eyAoZnJvbUFuZFRvRGF0ZUxhYmVsKCkuZnJvbXx8JyAnKXwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgICA8ZGl2IGNsYXNzPVwiZmxleFwiXG4gICAgICBbY2xhc3MuIXctZnVsbF09XCJ3aWR0aEJ5RWxlbWVudCgpXCI+XG4gICAgICBAaWYgKCFjaGFuZ2VUeXBlKCkpIHtcbiAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1kYXRldGltZS1kcm9wZG93bi1pdGVtIFtjbGFzcy4hdy1mdWxsXT1cIndpZHRoQnlFbGVtZW50KClcIlxuICAgICAgICAgIFtkaXNhYmxlU2Vjb25kXT1cImRpc2FibGVTZWNvbmQoKVwiXG4gICAgICAgICAgW3R5cGVEYXRlXT1cInR5cGVGb3JtYXQoKVwiXG4gICAgICAgICAgW3pJbmRleF09XCJ6SW5kZXgoKVwiXG4gICAgICAgICAgW21heFllYXJdPVwibWF4WWVhcigpXCJcbiAgICAgICAgICBbZGlzYWJsZV09XCJkaXNhYmxlKClcIlxuICAgICAgICAgIFttaW5ZZWFyXT1cIm1pblllYXIoKVwiXG4gICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5KClcIlxuICAgICAgICAgIFtpc011bHRpcGxlXT1cImlzTXVsdGlwbGUoKSA/IGlzUmVzcG9uc2l2ZSgpID8gdHJ1ZSA6IGZhbHNlIDogdHJ1ZVwiXG4gICAgICAgICAgW3JldmVyc2VZZWFyXT1cInJldmVyc2VZZWFyKClcIlxuICAgICAgICAgIFtzZWxlY3RlZERhdGVdPVwic2VsZWN0ZWREYXRlVGltZSgpPy5mcm9tKCkgfHwge31cIlxuICAgICAgICAgIFt3aWR0aERyb3Bkb3duXT1cIndpZHRoRHJvcGRvd24oKVwiXG4gICAgICAgICAgW3dpZHRoQnlFbGVtZW50XT1cIndpZHRoQnlFbGVtZW50KClcIlxuICAgICAgICAgIFtnZXRJdGVtWWVhckRpc3BsYXldPVwiZ2V0SXRlbVllYXJEaXNwbGF5KClcIlxuICAgICAgICAgIFtsaXN0TWF4SXRlbVNob3ddPVwibGlzdE1heEl0ZW1TaG93KClcIlxuICAgICAgICAgIFtsaXN0S2V5c0Rpc2FibGVdPVwibGlzdEtleXNEaXNhYmxlKCk/LmZyb20oKVwiXG4gICAgICAgICAgW2xpc3RIYXNCdXR0b25VblNlbGVjdE9wdGlvbl09XCJsaXN0SGFzQnV0dG9uVW5TZWxlY3RPcHRpb24oKVwiXG4gICAgICAgICAgW2lzRW1pdFNlbGVjdGVkRHJvcERvd25dPVwiaXNFbWl0QWZ0ZXJDaGFuZ2VkKClcIlxuICAgICAgICAgIFtjbGFzc0luY2x1ZGVUZXh0RGlzcGxheVdoZW5Ob1NlbGVjdF09XCInbGlicy11aS1mb250LWg1ciAnICsgY2xhc3NJbmNsdWRlVGV4dERpc3BsYXlXaGVuTm9TZWxlY3QoKVwiXG4gICAgICAgICAgKG91dFNlbGVjdGVkRGF0YSk9XCJoYW5kbGVyQ2hhbmdlU2VsZWN0ZWRLZXkoJGV2ZW50LCAnZnJvbScpXCJcbiAgICAgICAgICAob3V0RnVuY3Rpb25Db250cm9sKT1cImhhbmRsZXJGdW5jdGlvbkNvbnRyb2woJGV2ZW50LCdmcm9tJylcIlxuICAgICAgICAgIChvdXRDaGFuZ1N0YWdlRmxhZ01vdXNlKT1cImhhbmRsZXJDaGFuZ1N0YWdlRmxhZ01vdXNlKCRldmVudClcIiAvPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgQGlmIChpc011bHRpcGxlKCkpIHtcbiAgICA8ZGl2ICNjaGlsZFRvXG4gICAgICBbY2xhc3MuIXctWzUwJV1dPVwid2lkdGhCeUVsZW1lbnQoKVwiXG4gICAgICBbY2xhc3MuIXctZnVsbF09XCIgIXdpZHRoQnlFbGVtZW50KCkgfHwgaXNSZXNwb25zaXZlKClcIlxuICAgICAgY2xhc3M9XCJmbGV4IGl0ZW1zLXN0YXJ0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibXItWzhweF0gaC1bMzJweF0gZmxleC1zaHJpbmstMCBmbGV4IGl0ZW1zLWNlbnRlclwiXG4gICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJpc1Jlc3BvbnNpdmUoKSA/IHdpZHRoTGFiZWwoKSA6IHVuZGVmaW5lZFwiPlxuICAgICAgICBAaWYgKCFpZ25vcmVGcm9tQW5kVG9EYXRlTGFiZWwoKSkge1xuICAgICAgICAgIDxzcGFuICNsYWJlbFRvXG4gICAgICAgICAgICBMaWJzVWlDb21wb25lbnRzRGF0ZXRpbWVEcm9wZG93bkRpcmVjdGl2ZVxuICAgICAgICAgICAgW2NsYXNzLiFvcGFjaXR5LVswLjVdXT1cImRpc2FibGUoKVwiXG4gICAgICAgICAgICBjbGFzcz1cImxpYnMtdWktZm9udC1oNXIgdGV4dC1ub3dyYXAge3sgZnJvbUFuZFRvRGF0ZUxhYmVsKCkuY2xhc3NMYWJlbFRvIHx8ICcnIH19XCJcbiAgICAgICAgICAgIChvdXRDaGFuZ2VXaWR0aCk9XCJoYW5kbGVyQ2hhbmdlV2lkdGhMYWJlbCgkZXZlbnQpXCI+XG4gICAgICAgICAgICB7eyAoZnJvbUFuZFRvRGF0ZUxhYmVsKCkudG98fCcgJyl8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKGlnbm9yZUZyb21BbmRUb0RhdGVMYWJlbCgpKSB7XG4gICAgICAgICAgPHNwYW4gW2NsYXNzLiFvcGFjaXR5LVswLjVdXT1cImRpc2FibGUoKVwiXG4gICAgICAgICAgICBjbGFzcz1cImxpYnMtdWktZm9udC1oNXJcIj4tPC9zcGFuPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4XCJcbiAgICAgICAgW2NsYXNzLiF3LWZ1bGxdPVwid2lkdGhCeUVsZW1lbnQoKVwiPlxuICAgICAgICBAaWYgKCFjaGFuZ2VUeXBlKCkpIHtcbiAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWRhdGV0aW1lLWRyb3Bkb3duLWl0ZW0gW2NsYXNzLnctZnVsbF09XCJ3aWR0aEJ5RWxlbWVudCgpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlU2Vjb25kXT1cImRpc2FibGVTZWNvbmQoKVwiXG4gICAgICAgICAgICBbdHlwZURhdGVdPVwidHlwZUZvcm1hdCgpXCJcbiAgICAgICAgICAgIFt6SW5kZXhdPVwiekluZGV4KClcIlxuICAgICAgICAgICAgW21heFllYXJdPVwibWF4WWVhcigpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlXT1cImRpc2FibGUoKVwiXG4gICAgICAgICAgICBbbWluWWVhcl09XCJtaW5ZZWFyKClcIlxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5KClcIlxuICAgICAgICAgICAgW2lzTXVsdGlwbGVdPVwiaXNNdWx0aXBsZSgpXCJcbiAgICAgICAgICAgIFtyZXZlcnNlWWVhcl09XCJyZXZlcnNlWWVhcigpXCJcbiAgICAgICAgICAgIFtzZWxlY3RlZERhdGVdPVwic2VsZWN0ZWREYXRlVGltZSgpPy50bygpIHx8IHt9XCJcbiAgICAgICAgICAgIFt3aWR0aERyb3Bkb3duXT1cIndpZHRoRHJvcGRvd24oKVwiXG4gICAgICAgICAgICBbd2lkdGhCeUVsZW1lbnRdPVwid2lkdGhCeUVsZW1lbnQoKVwiXG4gICAgICAgICAgICBbZ2V0SXRlbVllYXJEaXNwbGF5XT1cImdldEl0ZW1ZZWFyRGlzcGxheSgpXCJcbiAgICAgICAgICAgIFtsaXN0TWF4SXRlbVNob3ddPVwibGlzdE1heEl0ZW1TaG93KClcIlxuICAgICAgICAgICAgW2xpc3RLZXlzRGlzYWJsZV09XCJsaXN0S2V5c0Rpc2FibGUoKT8udG8oKVwiXG4gICAgICAgICAgICBbbGlzdEhhc0J1dHRvblVuU2VsZWN0T3B0aW9uXT1cImxpc3RIYXNCdXR0b25VblNlbGVjdE9wdGlvbigpXCJcbiAgICAgICAgICAgIFtjbGFzc0luY2x1ZGVUZXh0RGlzcGxheVdoZW5Ob1NlbGVjdF09XCInbGlicy11aS1mb250LWg1ciAnICsgY2xhc3NJbmNsdWRlVGV4dERpc3BsYXlXaGVuTm9TZWxlY3RcIlxuICAgICAgICAgICAgW2lzRW1pdFNlbGVjdGVkRHJvcERvd25dPVwiaXNFbWl0QWZ0ZXJDaGFuZ2VkKClcIlxuICAgICAgICAgICAgKG91dFNlbGVjdGVkRGF0YSk9XCJoYW5kbGVyQ2hhbmdlU2VsZWN0ZWRLZXkoJGV2ZW50LCAndG8nKVwiXG4gICAgICAgICAgICAob3V0RnVuY3Rpb25Db250cm9sKT1cImhhbmRsZXJGdW5jdGlvbkNvbnRyb2woJGV2ZW50LCd0bycpXCJcbiAgICAgICAgICAgIChvdXRDaGFuZ1N0YWdlRmxhZ01vdXNlKT1cImhhbmRsZXJDaGFuZ1N0YWdlRmxhZ01vdXNlKCRldmVudClcIiAvPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgfVxuPC9kaXY+XG5cbkBpZiAoaXNFcnJvckNvbXBhcmVEYXRlKCkpIHtcbiAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIG10LVs0cHhdXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJsaWJzLXVpLW1lc3NhZ2UtZXJyb3IgbGlicy11aS1mb250LWg3ciBsaWJzLXVpLXRleHQtZXJyb3JcIj57eyB2YWxpZFJlcXVpcmVkKCk/Lm1lc3NhZ2VWYWxpZENvbXBhcmVUaW1lIHx8IFwiaTE4bl9pbnZhbGlkX2VuZF9kYXRlX3NlbGVjdGVkXCIgfCB0cmFuc2xhdGU6dmFsaWRSZXF1aXJlZCgpPy5pbnRlcnBvbGF0ZVBhcmFtc0NvbXBhcmVUaW1lIH19PC9zcGFuPlxuICA8L2Rpdj5cbn1cbiJdfQ==
@@ -6,7 +6,7 @@ import { convertGetValue, convertItemSelectedDefine, getConfigHttpRequestDetailD
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "@ngx-translate/core";
8
8
  export class LibsUiComponentsDatetimeDropdownItemChildComponent {
9
- /* PROPERTY */
9
+ // #region PROPERTY
10
10
  httpRequestDetailItemById = signal(undefined);
11
11
  listConfig = signal({
12
12
  type: 'text',
@@ -17,7 +17,7 @@ export class LibsUiComponentsDatetimeDropdownItemChildComponent {
17
17
  });
18
18
  textNoSelectDisplay = computed(this.computedTextNoSelectDisplay.bind(this));
19
19
  usingWidth = computed(this.computedWidth.bind(this));
20
- /* INPUT */
20
+ // #region INPUT
21
21
  typeDate = input(undefined);
22
22
  getItemYearDisplay = input();
23
23
  listHasButtonUnSelectOption = input();
@@ -36,11 +36,11 @@ export class LibsUiComponentsDatetimeDropdownItemChildComponent {
36
36
  ignoreConvertYearSelected = input();
37
37
  listKeysDisable = input(undefined);
38
38
  validRequired = input();
39
- /* OUTPUT */
39
+ // #region OUTPUT
40
40
  outSelectedKey = output();
41
41
  outFunctionControl = output();
42
42
  outChangStageFlagMouse = output();
43
- /* INJECT */
43
+ // #region INJECT
44
44
  translate = inject(TranslateService);
45
45
  constructor() {
46
46
  effect(() => {
@@ -121,4 +121,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
121
121
  LibsUiComponentsDropdownComponent
122
122
  ], template: " @if (typeDate()) {\n <div [style.width]=\"usingWidth()\">\n <libs_ui-components-dropdown [listHasButtonUnSelectOption]=\"listHasButtonUnSelectOption()\"\n [readonly]=\"readonly()\"\n [textDisplayWhenNoSelect]=\"textNoSelectDisplay()\"\n [disable]=\"disable()\"\n [showBorderError]=\"showBorderError()\"\n [listMaxItemShow]=\"listMaxItemShow()\"\n [listClickExactly]=\"false\"\n [zIndex]=\"zIndex()\"\n [labelPopoverConfig]=\"{ zIndex: zIndex() +1 }\"\n [listConfig]=\"listConfig()\"\n [listKeysDisable]=\"listKeysDisable()\"\n [convertItemSelected]=\"convertItemSelected\"\n [onlyEmitDataWhenReset]=\"true\"\n [classIncludeTextDisplayWhenNoSelect]=\"classIncludeTextDisplayWhenNoSelect()\"\n [httpRequestDetailItemById]=\"httpRequestDetailItemById()\"\n [listKeySelected]=\"listKeySelected()\"\n (outSelectKey)=\"handlerChangeSelectedItem($event)\"\n (outFunctionsControl)=\"handlerFunctionControl($event)\"\n (outChangStageFlagMouse)=\"handlerChangFlagMouse($event)\" />\n </div>\n }\n @if (isError()) {\n <div class=\"flex items-center mt-[4px]\">\n <span class=\"libs-ui-text-error libs-ui-font-h7r\"\n [innerHtml]=\"(validRequired()?.message || 'i18n_valid_empty_message')| translate:validRequired()?.interpolateParams\"></span>\n </div>\n }\n" }]
123
123
  }], ctorParameters: () => [] });
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2RhdGV0aW1lL2Ryb3Bkb3duL3NyYy9pdGVtL2NoaWxkL2NoaWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9kYXRldGltZS9kcm9wZG93bi9zcmMvaXRlbS9jaGlsZC9jaGlsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEcsT0FBTyxFQUFpRCxpQ0FBaUMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBSWhJLE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLHlCQUF5QixFQUFFLDhCQUE4QixFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7OztBQWM5SixNQUFNLE9BQU8sa0RBQWtEO0lBQzdELGNBQWM7SUFDSix5QkFBeUIsR0FBRyxNQUFNLENBQWlDLFNBQVMsQ0FBQyxDQUFDO0lBQzlFLFVBQVUsR0FBRyxNQUFNLENBQWtCO1FBQzdDLElBQUksRUFBRSxNQUFNO1FBQ1osa0JBQWtCLEVBQUUsTUFBTSxDQUFDO1lBQ3pCLFFBQVEsRUFBRSxJQUFJO1lBQ2Qsd0JBQXdCLEVBQUUsSUFBSTtTQUMvQixDQUFDO0tBQ0gsQ0FBQyxDQUFDO0lBQ08sbUJBQW1CLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM1RSxV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QUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLENBQUM7UUFFN0osT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUM7SUFDTSwyQkFBMkI7UUFDakMsUUFBUSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUN4QixLQUFLLEtBQUs7Z0JBQ1IsT0FBTyxpQkFBaUIsQ0FBQztZQUUzQixLQUFLLE9BQU87Z0JBQ1YsT0FBTyxtQkFBbUIsQ0FBQztZQUU3QixLQUFLLE1BQU07Z0JBQ1QsT0FBTyxrQkFBa0IsQ0FBQztZQUU1QixLQUFLLFNBQVM7Z0JBQ1osT0FBTyxxQkFBcUIsQ0FBQztZQUUvQjtnQkFDRSxPQUFPLE9BQU8sQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQztJQUVPLGFBQWE7UUFDbkIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQztZQUMxQixPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQzdELENBQUM7UUFFRCxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUM7SUFDckMsQ0FBQzt3R0E3SFUsa0RBQWtEOzRGQUFsRCxrREFBa0QsODFGQ3JCL0QsaTRDQTZCQSwyQ0RiSSxlQUFlLDRGQUNmLGlDQUFpQzs7NEZBSXhCLGtEQUFrRDtrQkFYOUQsU0FBUzsrQkFFRSxpREFBaUQsY0FFL0MsSUFBSSxXQUNQO3dCQUNQLGVBQWU7d0JBQ2YsaUNBQWlDO3FCQUNsQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCwgb3V0cHV0LCBzaWduYWwsIHVudHJhY2tlZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBJRHJvcGRvd25GdW5jdGlvbkNvbnRyb2xFdmVudCwgSUVtaXRTZWxlY3RLZXksIExpYnNVaUNvbXBvbmVudHNEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gXCJAbGlicy11aS9jb21wb25lbnRzLWRyb3Bkb3duXCI7XG5pbXBvcnQgeyBJTGlzdENvbmZpZ0l0ZW0gfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1saXN0XCI7XG5pbXBvcnQgeyBJRmxhZ01vdXNlIH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtcG9wb3ZlclwiO1xuaW1wb3J0IHsgSUh0dHBSZXF1ZXN0Q29uZmlnIH0gZnJvbSBcIkBsaWJzLXVpL3NlcnZpY2VzLWh0dHAtcmVxdWVzdFwiO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7IGNvbnZlcnRHZXRWYWx1ZSwgY29udmVydEl0ZW1TZWxlY3RlZERlZmluZSwgZ2V0Q29uZmlnSHR0cFJlcXVlc3REZXRhaWxEYXRlLCBnZXRDb25maWdIdHRwUmVxdWVzdExpc3REYXRlIH0gZnJvbSBcIi4uLy4uL2RlZmluZXMvZGF0ZS1kcm9wZG93bi5kZWZpbmVcIjtcbmltcG9ydCB7IFRZUEVfREFURV9GT1JNQVQgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9kYXRlLWRyb3Bkb3duLmludGVyZmFjZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaWJzX3VpLWNvbXBvbmVudHMtZGF0ZXRpbWUtZHJvcGRvd24taXRlbS1jaGlsZCcsXG4gIHRlbXBsYXRlVXJsOiAnY2hpbGQuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIExpYnNVaUNvbXBvbmVudHNEcm9wZG93bkNvbXBvbmVudFxuICBdXG59KVxuXG5leHBvcnQgY2xhc3MgTGlic1VpQ29tcG9uZW50c0RhdGV0aW1lRHJvcGRvd25JdGVtQ2hpbGRDb21wb25lbnQge1xuICAvKiBQUk9QRVJUWSAqL1xuICBwcm90ZWN0ZWQgaHR0cFJlcXVlc3REZXRhaWxJdGVtQnlJZCA9IHNpZ25hbDxJSHR0cFJlcXVlc3RDb25maWcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByb3RlY3RlZCBsaXN0Q29uZmlnID0gc2lnbmFsPElMaXN0Q29uZmlnSXRlbT4oe1xuICAgIHR5cGU6ICd0ZXh0JyxcbiAgICBjb25maWdUZW1wbGF0ZVRleHQ6IHNpZ25hbCh7XG4gICAgICBmaWVsZEtleTogJ2lkJyxcbiAgICAgIGF1dG9TY3JvbGxUb0l0ZW1TZWxlY3RlZDogdHJ1ZSxcbiAgICB9KVxuICB9KTtcbiAgcHJvdGVjdGVkIHRleHROb1NlbGVjdERpc3BsYXkgPSBjb21wdXRlZCh0aGlzLmNvbXB1dGVkVGV4dE5vU2VsZWN0RGlzcGxheS5iaW5kKHRoaXMpKTtcbiAgcHJvdGVjdGVkIHVzaW5nV2lkdGggPSBjb21wdXRlZCh0aGlzLmNvbXB1dGVkV2lkdGguYmluZCh0aGlzKSk7XG5cbiAgLyogSU5QVVQgKi9cbiAgcmVhZG9ubHkgdHlwZURhdGUgPSBpbnB1dDxUWVBFX0RBVEVfRk9STUFUIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBnZXRJdGVtWWVhckRpc3BsYXkgPSBpbnB1dDwoeWVhcjogc3RyaW5nKSA9PiBzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IGxpc3RIYXNCdXR0b25VblNlbGVjdE9wdGlvbiA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IHJlYWRvbmx5ID0gaW5wdXQ8Ym9vbGVhbiwgYm9vbGVhbj4oZmFsc2UsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/IGZhbHNlIH0pO1xuICByZWFkb25seSBkaXNhYmxlID0gaW5wdXQ8Ym9vbGVhbiwgYm9vbGVhbj4oZmFsc2UsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/IGZhbHNlIH0pO1xuICByZWFkb25seSBsaXN0RGF0YSA9IGlucHV0PEFycmF5PHsgaWQ6IG51bWJlciwgbGFiZWw6IHN0cmluZyB9Pj4oW10pO1xuICByZWFkb25seSBzaG93Qm9yZGVyRXJyb3IgPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBsaXN0TWF4SXRlbVNob3cgPSBpbnB1dDxudW1iZXIsIG51bWJlcj4oNiwgeyB0cmFuc2Zvcm06ICh2YWx1ZSkgPT4gdmFsdWUgPz8gNiB9KTtcbiAgcmVhZG9ubHkgekluZGV4ID0gaW5wdXQ8bnVtYmVyLCBudW1iZXI+KDEwMDAsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/IDEwMDAgfSk7XG4gIHJlYWRvbmx5IGNsYXNzSW5jbHVkZVRleHREaXNwbGF5V2hlbk5vU2VsZWN0ID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHJlYWRvbmx5IGxpc3RLZXlTZWxlY3RlZCA9IGlucHV0PGFueT4oKTtcbiAgcmVhZG9ubHkgd2lkdGhEcm9wZG93biA9IGlucHV0PG51bWJlcj4oMTM2KTtcbiAgcmVhZG9ubHkgZmlyc3QgPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBpc0Vycm9yID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgd2lkdGhCeUVsZW1lbnQgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBpZ25vcmVDb252ZXJ0WWVhclNlbGVjdGVkID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgbGlzdEtleXNEaXNhYmxlID0gaW5wdXQ8QXJyYXk8YW55PiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgdmFsaWRSZXF1aXJlZCA9IGlucHV0PHtcbiAgICBtZXNzYWdlPzogc3RyaW5nO1xuICAgIGludGVycG9sYXRlUGFyYW1zPzogeyBhbnk6IG9iamVjdCB9O1xuICB9PigpO1xuXG4gIC8qIE9VVFBVVCAqL1xuICByZWFkb25seSBvdXRTZWxlY3RlZEtleSA9IG91dHB1dDxhbnk+KCk7XG4gIHJlYWRvbmx5IG91dEZ1bmN0aW9uQ29udHJvbCA9IG91dHB1dDxJRHJvcGRvd25GdW5jdGlvbkNvbnRyb2xFdmVudD4oKTtcbiAgcmVhZG9ubHkgb3V0Q2hhbmdTdGFnZUZsYWdNb3VzZSA9IG91dHB1dDxJRmxhZ01vdXNlPigpO1xuXG4gIC8qIElOSkVDVCAqL1xuICBwcml2YXRlIHRyYW5zbGF0ZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgbGlzdERhdGEgPSB0aGlzLmxpc3REYXRhKCk7XG5cbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIHRoaXMuaHR0cFJlcXVlc3REZXRhaWxJdGVtQnlJZC5zZXQoZ2V0Q29uZmlnSHR0cFJlcXVlc3REZXRhaWxEYXRlKGxpc3REYXRhKSk7XG4gICAgICAgIHRoaXMubGlzdENvbmZpZy51cGRhdGUoY3VycmVudCA9PiB7XG4gICAgICAgICAgaWYgKCFjdXJyZW50Lmh0dHBSZXF1ZXN0RGF0YSkge1xuICAgICAgICAgICAgY3VycmVudC5odHRwUmVxdWVzdERhdGEgPSBzaWduYWw8SUh0dHBSZXF1ZXN0Q29uZmlnPihnZXRDb25maWdIdHRwUmVxdWVzdExpc3REYXRlKGxpc3REYXRhKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGN1cnJlbnQuaHR0cFJlcXVlc3REYXRhLnNldChnZXRDb25maWdIdHRwUmVxdWVzdExpc3REYXRlKGxpc3REYXRhKSk7XG4gICAgICAgICAgaWYgKCFjdXJyZW50LmNvbmZpZ1RlbXBsYXRlVGV4dCkge1xuICAgICAgICAgICAgY3VycmVudC5jb25maWdUZW1wbGF0ZVRleHQgPSBzaWduYWwoe1xuICAgICAgICAgICAgICBmaWVsZEtleTogJ2lkJyxcbiAgICAgICAgICAgICAgYXV0b1Njcm9sbFRvSXRlbVNlbGVjdGVkOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGN1cnJlbnQuY29uZmlnVGVtcGxhdGVUZXh0LnNldCh7XG4gICAgICAgICAgICBmaWVsZEtleTogJ2lkJyxcbiAgICAgICAgICAgIGF1dG9TY3JvbGxUb0l0ZW1TZWxlY3RlZDogdHJ1ZSxcbiAgICAgICAgICAgIGdldFZhbHVlOiAoaXRlbTogeyBsYWJlbDogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRHZXRWYWx1ZSh0aGlzLnR5cGVEYXRlKCkgfHwgJ21vbnRoJywgaXRlbSwgdGhpcy50cmFuc2xhdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKiBGVU5DVElPTlMgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZXJDaGFuZ2VTZWxlY3RlZEl0ZW0oZXZlbnQ/OiBJRW1pdFNlbGVjdEtleSkge1xuICAgIGlmICghZXZlbnQgfHwgIWV2ZW50LmtleSkge1xuICAgICAgdGhpcy5vdXRTZWxlY3RlZEtleS5lbWl0KHVuZGVmaW5lZCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vdXRTZWxlY3RlZEtleS5lbWl0KGV2ZW50LmtleSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckZ1bmN0aW9uQ29udHJvbChldmVudDogSURyb3Bkb3duRnVuY3Rpb25Db250cm9sRXZlbnQpIHtcbiAgICB0aGlzLm91dEZ1bmN0aW9uQ29udHJvbC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ2hhbmdGbGFnTW91c2UoZmxhZ01vdXNlOiBJRmxhZ01vdXNlKSB7XG4gICAgdGhpcy5vdXRDaGFuZ1N0YWdlRmxhZ01vdXNlLmVtaXQoZmxhZ01vdXNlKTtcbiAgfVxuICBwcm90ZWN0ZWQgY29udmVydEl0ZW1TZWxlY3RlZCA9IChpdGVtOiBhbnkpID0+IHtcbiAgICBpZiAoIWl0ZW0gfHwgIXRoaXMudHlwZURhdGUoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpdGVtLmxhYmVsRGlzcGxheSA9IGNvbnZlcnRJdGVtU2VsZWN0ZWREZWZpbmUodGhpcy50eXBlRGF0ZSgpID8/ICdtb250aCcsIGl0ZW0sIHRoaXMudHJhbnNsYXRlLCB0aGlzLmdldEl0ZW1ZZWFyRGlzcGxheSgpLCB0aGlzLmlnbm9yZUNvbnZlcnRZZWFyU2VsZWN0ZWQoKSk7XG5cbiAgICByZXR1cm4gaXRlbTtcbiAgfTtcbiAgcHJpdmF0ZSBjb21wdXRlZFRleHROb1NlbGVjdERpc3BsYXkoKSB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGVEYXRlKCkpIHtcbiAgICAgIGNhc2UgJ2RheSc6XG4gICAgICAgIHJldHVybiAnaTE4bl9zZWxlY3RfZGF5JztcblxuICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICByZXR1cm4gJ2kxOG5fc2VsZWN0X21vbnRoJztcblxuICAgICAgY2FzZSAneWVhcic6XG4gICAgICAgIHJldHVybiAnaTE4bl9zZWxlY3RfeWVhcic7XG5cbiAgICAgIGNhc2UgJ3F1YXJ0ZXInOlxuICAgICAgICByZXR1cm4gJ2kxOG5fc2VsZWN0X3F1YXJ0ZXInO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ21vbnRoJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbXB1dGVkV2lkdGgoKSB7XG4gICAgaWYgKHRoaXMud2lkdGhCeUVsZW1lbnQoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlyc3QoKSA/IGAke3RoaXMud2lkdGhEcm9wZG93bigpfXB4YCA6ICcxMDAlJztcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7dGhpcy53aWR0aERyb3Bkb3duKCl9cHhgO1xuICB9XG59IiwiICBAaWYgKHR5cGVEYXRlKCkpIHtcbiAgICA8ZGl2IFtzdHlsZS53aWR0aF09XCJ1c2luZ1dpZHRoKClcIj5cbiAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtZHJvcGRvd24gW2xpc3RIYXNCdXR0b25VblNlbGVjdE9wdGlvbl09XCJsaXN0SGFzQnV0dG9uVW5TZWxlY3RPcHRpb24oKVwiXG4gICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seSgpXCJcbiAgICAgICAgW3RleHREaXNwbGF5V2hlbk5vU2VsZWN0XT1cInRleHROb1NlbGVjdERpc3BsYXkoKVwiXG4gICAgICAgIFtkaXNhYmxlXT1cImRpc2FibGUoKVwiXG4gICAgICAgIFtzaG93Qm9yZGVyRXJyb3JdPVwic2hvd0JvcmRlckVycm9yKClcIlxuICAgICAgICBbbGlzdE1heEl0ZW1TaG93XT1cImxpc3RNYXhJdGVtU2hvdygpXCJcbiAgICAgICAgW2xpc3RDbGlja0V4YWN0bHldPVwiZmFsc2VcIlxuICAgICAgICBbekluZGV4XT1cInpJbmRleCgpXCJcbiAgICAgICAgW2xhYmVsUG9wb3ZlckNvbmZpZ109XCJ7IHpJbmRleDogekluZGV4KCkgKzEgfVwiXG4gICAgICAgIFtsaXN0Q29uZmlnXT1cImxpc3RDb25maWcoKVwiXG4gICAgICAgIFtsaXN0S2V5c0Rpc2FibGVdPVwibGlzdEtleXNEaXNhYmxlKClcIlxuICAgICAgICBbY29udmVydEl0ZW1TZWxlY3RlZF09XCJjb252ZXJ0SXRlbVNlbGVjdGVkXCJcbiAgICAgICAgW29ubHlFbWl0RGF0YVdoZW5SZXNldF09XCJ0cnVlXCJcbiAgICAgICAgW2NsYXNzSW5jbHVkZVRleHREaXNwbGF5V2hlbk5vU2VsZWN0XT1cImNsYXNzSW5jbHVkZVRleHREaXNwbGF5V2hlbk5vU2VsZWN0KClcIlxuICAgICAgICBbaHR0cFJlcXVlc3REZXRhaWxJdGVtQnlJZF09XCJodHRwUmVxdWVzdERldGFpbEl0ZW1CeUlkKClcIlxuICAgICAgICBbbGlzdEtleVNlbGVjdGVkXT1cImxpc3RLZXlTZWxlY3RlZCgpXCJcbiAgICAgICAgKG91dFNlbGVjdEtleSk9XCJoYW5kbGVyQ2hhbmdlU2VsZWN0ZWRJdGVtKCRldmVudClcIlxuICAgICAgICAob3V0RnVuY3Rpb25zQ29udHJvbCk9XCJoYW5kbGVyRnVuY3Rpb25Db250cm9sKCRldmVudClcIlxuICAgICAgICAob3V0Q2hhbmdTdGFnZUZsYWdNb3VzZSk9XCJoYW5kbGVyQ2hhbmdGbGFnTW91c2UoJGV2ZW50KVwiIC8+XG4gICAgPC9kaXY+XG4gIH1cbiAgQGlmIChpc0Vycm9yKCkpIHtcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgbXQtWzRweF1cIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwibGlicy11aS10ZXh0LWVycm9yIGxpYnMtdWktZm9udC1oN3JcIlxuICAgICAgICBbaW5uZXJIdG1sXT1cIih2YWxpZFJlcXVpcmVkKCk/Lm1lc3NhZ2UgfHwgJ2kxOG5fdmFsaWRfZW1wdHlfbWVzc2FnZScpfCB0cmFuc2xhdGU6dmFsaWRSZXF1aXJlZCgpPy5pbnRlcnBvbGF0ZVBhcmFtc1wiPjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgfVxuIl19
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2RhdGV0aW1lL2Ryb3Bkb3duL3NyYy9pdGVtL2NoaWxkL2NoaWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9kYXRldGltZS9kcm9wZG93bi9zcmMvaXRlbS9jaGlsZC9jaGlsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEcsT0FBTyxFQUFpRCxpQ0FBaUMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBSWhJLE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLHlCQUF5QixFQUFFLDhCQUE4QixFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7OztBQWM5SixNQUFNLE9BQU8sa0RBQWtEO0lBQzdELG1CQUFtQjtJQUNULHlCQUF5QixHQUFHLE1BQU0sQ0FBaUMsU0FBUyxDQUFDLENBQUM7SUFDOUUsVUFBVSxHQUFHLE1BQU0sQ0FBa0I7UUFDN0MsSUFBSSxFQUFFLE1BQU07UUFDWixrQkFBa0IsRUFBRSxNQUFNLENBQUM7WUFDekIsUUFBUSxFQUFFLElBQUk7WUFDZCx3QkFBd0IsRUFBRSxJQUFJO1NBQy9CLENBQUM7S0FDSCxDQUFDLENBQUM7SUFDTyxtQkFBbUIsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVF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SSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUMsQ0FBQztRQUU3SixPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQztJQUNNLDJCQUEyQjtRQUNqQyxRQUFRLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ3hCLEtBQUssS0FBSztnQkFDUixPQUFPLGlCQUFpQixDQUFDO1lBRTNCLEtBQUssT0FBTztnQkFDVixPQUFPLG1CQUFtQixDQUFDO1lBRTdCLEtBQUssTUFBTTtnQkFDVCxPQUFPLGtCQUFrQixDQUFDO1lBRTVCLEtBQUssU0FBUztnQkFDWixPQUFPLHFCQUFxQixDQUFDO1lBRS9CO2dCQUNFLE9BQU8sT0FBTyxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDO0lBRU8sYUFBYTtRQUNuQixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO1lBQzFCLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDN0QsQ0FBQztRQUVELE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQztJQUNyQyxDQUFDO3dHQTdIVSxrREFBa0Q7NEZBQWxELGtEQUFrRCw4MUZDckIvRCxpNENBNkJBLDJDRGJJLGVBQWUsNEZBQ2YsaUNBQWlDOzs0RkFJeEIsa0RBQWtEO2tCQVg5RCxTQUFTOytCQUVFLGlEQUFpRCxjQUUvQyxJQUFJLFdBQ1A7d0JBQ1AsZUFBZTt3QkFDZixpQ0FBaUM7cUJBQ2xDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIGlucHV0LCBvdXRwdXQsIHNpZ25hbCwgdW50cmFja2VkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IElEcm9wZG93bkZ1bmN0aW9uQ29udHJvbEV2ZW50LCBJRW1pdFNlbGVjdEtleSwgTGlic1VpQ29tcG9uZW50c0Ryb3Bkb3duQ29tcG9uZW50IH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtZHJvcGRvd25cIjtcbmltcG9ydCB7IElMaXN0Q29uZmlnSXRlbSB9IGZyb20gXCJAbGlicy11aS9jb21wb25lbnRzLWxpc3RcIjtcbmltcG9ydCB7IElGbGFnTW91c2UgfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1wb3BvdmVyXCI7XG5pbXBvcnQgeyBJSHR0cFJlcXVlc3RDb25maWcgfSBmcm9tIFwiQGxpYnMtdWkvc2VydmljZXMtaHR0cC1yZXF1ZXN0XCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgY29udmVydEdldFZhbHVlLCBjb252ZXJ0SXRlbVNlbGVjdGVkRGVmaW5lLCBnZXRDb25maWdIdHRwUmVxdWVzdERldGFpbERhdGUsIGdldENvbmZpZ0h0dHBSZXF1ZXN0TGlzdERhdGUgfSBmcm9tIFwiLi4vLi4vZGVmaW5lcy9kYXRlLWRyb3Bkb3duLmRlZmluZVwiO1xuaW1wb3J0IHsgVFlQRV9EQVRFX0ZPUk1BVCB9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL2RhdGUtZHJvcGRvd24uaW50ZXJmYWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2xpYnNfdWktY29tcG9uZW50cy1kYXRldGltZS1kcm9wZG93bi1pdGVtLWNoaWxkJyxcbiAgdGVtcGxhdGVVcmw6ICdjaGlsZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgTGlic1VpQ29tcG9uZW50c0Ryb3Bkb3duQ29tcG9uZW50XG4gIF1cbn0pXG5cbmV4cG9ydCBjbGFzcyBMaWJzVWlDb21wb25lbnRzRGF0ZXRpbWVEcm9wZG93bkl0ZW1DaGlsZENvbXBvbmVudCB7XG4gIC8vICNyZWdpb24gUFJPUEVSVFlcbiAgcHJvdGVjdGVkIGh0dHBSZXF1ZXN0RGV0YWlsSXRlbUJ5SWQgPSBzaWduYWw8SUh0dHBSZXF1ZXN0Q29uZmlnIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcm90ZWN0ZWQgbGlzdENvbmZpZyA9IHNpZ25hbDxJTGlzdENvbmZpZ0l0ZW0+KHtcbiAgICB0eXBlOiAndGV4dCcsXG4gICAgY29uZmlnVGVtcGxhdGVUZXh0OiBzaWduYWwoe1xuICAgICAgZmllbGRLZXk6ICdpZCcsXG4gICAgICBhdXRvU2Nyb2xsVG9JdGVtU2VsZWN0ZWQ6IHRydWUsXG4gICAgfSlcbiAgfSk7XG4gIHByb3RlY3RlZCB0ZXh0Tm9TZWxlY3REaXNwbGF5ID0gY29tcHV0ZWQodGhpcy5jb21wdXRlZFRleHROb1NlbGVjdERpc3BsYXkuYmluZCh0aGlzKSk7XG4gIHByb3RlY3RlZCB1c2luZ1dpZHRoID0gY29tcHV0ZWQodGhpcy5jb21wdXRlZFdpZHRoLmJpbmQodGhpcykpO1xuXG4gIC8vICNyZWdpb24gSU5QVVRcbiAgcmVhZG9ubHkgdHlwZURhdGUgPSBpbnB1dDxUWVBFX0RBVEVfRk9STUFUIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBnZXRJdGVtWWVhckRpc3BsYXkgPSBpbnB1dDwoeWVhcjogc3RyaW5nKSA9PiBzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IGxpc3RIYXNCdXR0b25VblNlbGVjdE9wdGlvbiA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IHJlYWRvbmx5ID0gaW5wdXQ8Ym9vbGVhbiwgYm9vbGVhbj4oZmFsc2UsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/IGZhbHNlIH0pO1xuICByZWFkb25seSBkaXNhYmxlID0gaW5wdXQ8Ym9vbGVhbiwgYm9vbGVhbj4oZmFsc2UsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/IGZhbHNlIH0pO1xuICByZWFkb25seSBsaXN0RGF0YSA9IGlucHV0PEFycmF5PHsgaWQ6IG51bWJlciwgbGFiZWw6IHN0cmluZyB9Pj4oW10pO1xuICByZWFkb25seSBzaG93Qm9yZGVyRXJyb3IgPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBsaXN0TWF4SXRlbVNob3cgPSBpbnB1dDxudW1iZXIsIG51bWJlcj4oNiwgeyB0cmFuc2Zvcm06ICh2YWx1ZSkgPT4gdmFsdWUgPz8gNiB9KTtcbiAgcmVhZG9ubHkgekluZGV4ID0gaW5wdXQ8bnVtYmVyLCBudW1iZXI+KDEwMDAsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/IDEwMDAgfSk7XG4gIHJlYWRvbmx5IGNsYXNzSW5jbHVkZVRleHREaXNwbGF5V2hlbk5vU2VsZWN0ID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHJlYWRvbmx5IGxpc3RLZXlTZWxlY3RlZCA9IGlucHV0PGFueT4oKTtcbiAgcmVhZG9ubHkgd2lkdGhEcm9wZG93biA9IGlucHV0PG51bWJlcj4oMTM2KTtcbiAgcmVhZG9ubHkgZmlyc3QgPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBpc0Vycm9yID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgd2lkdGhCeUVsZW1lbnQgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBpZ25vcmVDb252ZXJ0WWVhclNlbGVjdGVkID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgbGlzdEtleXNEaXNhYmxlID0gaW5wdXQ8QXJyYXk8YW55PiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgdmFsaWRSZXF1aXJlZCA9IGlucHV0PHtcbiAgICBtZXNzYWdlPzogc3RyaW5nO1xuICAgIGludGVycG9sYXRlUGFyYW1zPzogeyBhbnk6IG9iamVjdCB9O1xuICB9PigpO1xuXG4gIC8vICNyZWdpb24gT1VUUFVUXG4gIHJlYWRvbmx5IG91dFNlbGVjdGVkS2V5ID0gb3V0cHV0PGFueT4oKTtcbiAgcmVhZG9ubHkgb3V0RnVuY3Rpb25Db250cm9sID0gb3V0cHV0PElEcm9wZG93bkZ1bmN0aW9uQ29udHJvbEV2ZW50PigpO1xuICByZWFkb25seSBvdXRDaGFuZ1N0YWdlRmxhZ01vdXNlID0gb3V0cHV0PElGbGFnTW91c2U+KCk7XG5cbiAgLy8gI3JlZ2lvbiBJTkpFQ1RcbiAgcHJpdmF0ZSB0cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGxpc3REYXRhID0gdGhpcy5saXN0RGF0YSgpO1xuXG4gICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICB0aGlzLmh0dHBSZXF1ZXN0RGV0YWlsSXRlbUJ5SWQuc2V0KGdldENvbmZpZ0h0dHBSZXF1ZXN0RGV0YWlsRGF0ZShsaXN0RGF0YSkpO1xuICAgICAgICB0aGlzLmxpc3RDb25maWcudXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICAgIGlmICghY3VycmVudC5odHRwUmVxdWVzdERhdGEpIHtcbiAgICAgICAgICAgIGN1cnJlbnQuaHR0cFJlcXVlc3REYXRhID0gc2lnbmFsPElIdHRwUmVxdWVzdENvbmZpZz4oZ2V0Q29uZmlnSHR0cFJlcXVlc3RMaXN0RGF0ZShsaXN0RGF0YSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjdXJyZW50Lmh0dHBSZXF1ZXN0RGF0YS5zZXQoZ2V0Q29uZmlnSHR0cFJlcXVlc3RMaXN0RGF0ZShsaXN0RGF0YSkpO1xuICAgICAgICAgIGlmICghY3VycmVudC5jb25maWdUZW1wbGF0ZVRleHQpIHtcbiAgICAgICAgICAgIGN1cnJlbnQuY29uZmlnVGVtcGxhdGVUZXh0ID0gc2lnbmFsKHtcbiAgICAgICAgICAgICAgZmllbGRLZXk6ICdpZCcsXG4gICAgICAgICAgICAgIGF1dG9TY3JvbGxUb0l0ZW1TZWxlY3RlZDogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjdXJyZW50LmNvbmZpZ1RlbXBsYXRlVGV4dC5zZXQoe1xuICAgICAgICAgICAgZmllbGRLZXk6ICdpZCcsXG4gICAgICAgICAgICBhdXRvU2Nyb2xsVG9JdGVtU2VsZWN0ZWQ6IHRydWUsXG4gICAgICAgICAgICBnZXRWYWx1ZTogKGl0ZW06IHsgbGFiZWw6IHN0cmluZyB9KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0R2V0VmFsdWUodGhpcy50eXBlRGF0ZSgpIHx8ICdtb250aCcsIGl0ZW0sIHRoaXMudHJhbnNsYXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyogRlVOQ1RJT05TICovXG4gIHByb3RlY3RlZCBoYW5kbGVyQ2hhbmdlU2VsZWN0ZWRJdGVtKGV2ZW50PzogSUVtaXRTZWxlY3RLZXkpIHtcbiAgICBpZiAoIWV2ZW50IHx8ICFldmVudC5rZXkpIHtcbiAgICAgIHRoaXMub3V0U2VsZWN0ZWRLZXkuZW1pdCh1bmRlZmluZWQpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMub3V0U2VsZWN0ZWRLZXkuZW1pdChldmVudC5rZXkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJGdW5jdGlvbkNvbnRyb2woZXZlbnQ6IElEcm9wZG93bkZ1bmN0aW9uQ29udHJvbEV2ZW50KSB7XG4gICAgdGhpcy5vdXRGdW5jdGlvbkNvbnRyb2wuZW1pdChldmVudCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckNoYW5nRmxhZ01vdXNlKGZsYWdNb3VzZTogSUZsYWdNb3VzZSkge1xuICAgIHRoaXMub3V0Q2hhbmdTdGFnZUZsYWdNb3VzZS5lbWl0KGZsYWdNb3VzZSk7XG4gIH1cbiAgcHJvdGVjdGVkIGNvbnZlcnRJdGVtU2VsZWN0ZWQgPSAoaXRlbTogYW55KSA9PiB7XG4gICAgaWYgKCFpdGVtIHx8ICF0aGlzLnR5cGVEYXRlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaXRlbS5sYWJlbERpc3BsYXkgPSBjb252ZXJ0SXRlbVNlbGVjdGVkRGVmaW5lKHRoaXMudHlwZURhdGUoKSA/PyAnbW9udGgnLCBpdGVtLCB0aGlzLnRyYW5zbGF0ZSwgdGhpcy5nZXRJdGVtWWVhckRpc3BsYXkoKSwgdGhpcy5pZ25vcmVDb252ZXJ0WWVhclNlbGVjdGVkKCkpO1xuXG4gICAgcmV0dXJuIGl0ZW07XG4gIH07XG4gIHByaXZhdGUgY29tcHV0ZWRUZXh0Tm9TZWxlY3REaXNwbGF5KCkge1xuICAgIHN3aXRjaCAodGhpcy50eXBlRGF0ZSgpKSB7XG4gICAgICBjYXNlICdkYXknOlxuICAgICAgICByZXR1cm4gJ2kxOG5fc2VsZWN0X2RheSc7XG5cbiAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgcmV0dXJuICdpMThuX3NlbGVjdF9tb250aCc7XG5cbiAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICByZXR1cm4gJ2kxOG5fc2VsZWN0X3llYXInO1xuXG4gICAgICBjYXNlICdxdWFydGVyJzpcbiAgICAgICAgcmV0dXJuICdpMThuX3NlbGVjdF9xdWFydGVyJztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdtb250aCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb21wdXRlZFdpZHRoKCkge1xuICAgIGlmICh0aGlzLndpZHRoQnlFbGVtZW50KCkpIHtcbiAgICAgIHJldHVybiB0aGlzLmZpcnN0KCkgPyBgJHt0aGlzLndpZHRoRHJvcGRvd24oKX1weGAgOiAnMTAwJSc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke3RoaXMud2lkdGhEcm9wZG93bigpfXB4YDtcbiAgfVxufSIsIiAgQGlmICh0eXBlRGF0ZSgpKSB7XG4gICAgPGRpdiBbc3R5bGUud2lkdGhdPVwidXNpbmdXaWR0aCgpXCI+XG4gICAgICA8bGlic191aS1jb21wb25lbnRzLWRyb3Bkb3duIFtsaXN0SGFzQnV0dG9uVW5TZWxlY3RPcHRpb25dPVwibGlzdEhhc0J1dHRvblVuU2VsZWN0T3B0aW9uKClcIlxuICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHkoKVwiXG4gICAgICAgIFt0ZXh0RGlzcGxheVdoZW5Ob1NlbGVjdF09XCJ0ZXh0Tm9TZWxlY3REaXNwbGF5KClcIlxuICAgICAgICBbZGlzYWJsZV09XCJkaXNhYmxlKClcIlxuICAgICAgICBbc2hvd0JvcmRlckVycm9yXT1cInNob3dCb3JkZXJFcnJvcigpXCJcbiAgICAgICAgW2xpc3RNYXhJdGVtU2hvd109XCJsaXN0TWF4SXRlbVNob3coKVwiXG4gICAgICAgIFtsaXN0Q2xpY2tFeGFjdGx5XT1cImZhbHNlXCJcbiAgICAgICAgW3pJbmRleF09XCJ6SW5kZXgoKVwiXG4gICAgICAgIFtsYWJlbFBvcG92ZXJDb25maWddPVwieyB6SW5kZXg6IHpJbmRleCgpICsxIH1cIlxuICAgICAgICBbbGlzdENvbmZpZ109XCJsaXN0Q29uZmlnKClcIlxuICAgICAgICBbbGlzdEtleXNEaXNhYmxlXT1cImxpc3RLZXlzRGlzYWJsZSgpXCJcbiAgICAgICAgW2NvbnZlcnRJdGVtU2VsZWN0ZWRdPVwiY29udmVydEl0ZW1TZWxlY3RlZFwiXG4gICAgICAgIFtvbmx5RW1pdERhdGFXaGVuUmVzZXRdPVwidHJ1ZVwiXG4gICAgICAgIFtjbGFzc0luY2x1ZGVUZXh0RGlzcGxheVdoZW5Ob1NlbGVjdF09XCJjbGFzc0luY2x1ZGVUZXh0RGlzcGxheVdoZW5Ob1NlbGVjdCgpXCJcbiAgICAgICAgW2h0dHBSZXF1ZXN0RGV0YWlsSXRlbUJ5SWRdPVwiaHR0cFJlcXVlc3REZXRhaWxJdGVtQnlJZCgpXCJcbiAgICAgICAgW2xpc3RLZXlTZWxlY3RlZF09XCJsaXN0S2V5U2VsZWN0ZWQoKVwiXG4gICAgICAgIChvdXRTZWxlY3RLZXkpPVwiaGFuZGxlckNoYW5nZVNlbGVjdGVkSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgKG91dEZ1bmN0aW9uc0NvbnRyb2wpPVwiaGFuZGxlckZ1bmN0aW9uQ29udHJvbCgkZXZlbnQpXCJcbiAgICAgICAgKG91dENoYW5nU3RhZ2VGbGFnTW91c2UpPVwiaGFuZGxlckNoYW5nRmxhZ01vdXNlKCRldmVudClcIiAvPlxuICAgIDwvZGl2PlxuICB9XG4gIEBpZiAoaXNFcnJvcigpKSB7XG4gICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIG10LVs0cHhdXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImxpYnMtdWktdGV4dC1lcnJvciBsaWJzLXVpLWZvbnQtaDdyXCJcbiAgICAgICAgW2lubmVySHRtbF09XCIodmFsaWRSZXF1aXJlZCgpPy5tZXNzYWdlIHx8ICdpMThuX3ZhbGlkX2VtcHR5X21lc3NhZ2UnKXwgdHJhbnNsYXRlOnZhbGlkUmVxdWlyZWQoKT8uaW50ZXJwb2xhdGVQYXJhbXNcIj48L3NwYW4+XG4gICAgPC9kaXY+XG4gIH1cbiJdfQ==
@@ -7,12 +7,12 @@ import { LibsUiComponentsDatetimeDropdownItemChildComponent } from "./child/chil
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@ngx-translate/core";
9
9
  export class LibsUiComponentsDatetimeDropdownItemComponent {
10
- /* PROPERTY */
10
+ // #region PROPERTY
11
11
  typeListDate = signal([]);
12
12
  keyMonthResetDay = signal(undefined);
13
13
  selectedSingle = signal({});
14
14
  isError = signal(undefined);
15
- /* INPUT */
15
+ // #region INPUT
16
16
  typeDate = input(undefined);
17
17
  disableSecond = input(undefined);
18
18
  selectedDate = input(undefined);
@@ -34,7 +34,7 @@ export class LibsUiComponentsDatetimeDropdownItemComponent {
34
34
  validRequired = input(undefined);
35
35
  isEmitSelectedDropDown = input(undefined);
36
36
  listMaxItemShow = input(undefined);
37
- /* OUTPUT */
37
+ // #region OUTPUT
38
38
  outSelectedData = output();
39
39
  outFunctionControl = output();
40
40
  outChangStageFlagMouse = output();
@@ -213,4 +213,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
213
213
  LibsUiComponentsDatetimeDropdownBuildListByDateTypePipe
214
214
  ], template: "<div class=\"\">\n <div class=\"flex items-start\">\n @if (typeListDate(); as typeListDate) {\n @for (item of typeListDate; track item().id; let last = $last; let i =$index; let first = $first) {\n <div [style.width]=\"widthByElement() | LibsUiComponentsDatetimeDropdownBuildWidthPipe :widthDropdown():first:isMultiple()\"\n [class.mr-[8px]]=\"!last && typeListDate.length ===2\"\n [style.minWidth.px]=\"widthDropdown()\">\n <libs_ui-components-datetime-dropdown-item-child [readonly]=\"readonly()\"\n [typeDate]=\"item().id\"\n [disable]=\"item().disable ?? disable()\"\n [listKeySelected]=\"item().keySelected\"\n [widthByElement]=\"widthByElement()\"\n [first]=\"first\"\n [widthDropdown]=\"widthDropdown()\"\n [listKeysDisable]=\"listKeysDisable()?.[item().id]?.()\"\n [listMaxItemShow]=\"listMaxItemShow()?.[item().id] ?? 6\"\n [isError]=\"item().isError\"\n [listHasButtonUnSelectOption]=\"listHasButtonUnSelectOption()\"\n [zIndex]=\"zIndex()\"\n [showBorderError]=\"item().showBorderError && !item().disable && !disable()\"\n [listData]=\"item().id | LibsUiComponentsDatetimeDropdownBuildListByDateTypePipe :{minYear:minYear(), maxYear:maxYear(), reverseYear:reverseYear()} :keyMonthResetDay()\"\n [classIncludeTextDisplayWhenNoSelect]=\"classIncludeTextDisplayWhenNoSelect() ?? ''\"\n (outSelectedKey)=\"handlerSelectedKey($event, item, i)\"\n (outFunctionControl)=\"handlerFunctionControl($event, item)\"\n (outChangStageFlagMouse)=\"handlerChangFlagMouse($event)\" />\n </div>\n }\n }\n </div>\n\n @if (isError()) {\n <div class=\"flex items-center mt-[4px]\">\n <span class=\"libs-ui-font-h7r libs-ui-text-error\"\n [innerHtml]=\"(validRequired()?.message || 'i18n_valid_empty_message')| translate:validRequired()?.interpolateParams\"></span>\n </div>\n }\n</div>\n" }]
215
215
  }], ctorParameters: () => [] });
216
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZGF0ZXRpbWUvZHJvcGRvd24vc3JjL2l0ZW0vaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZGF0ZXRpbWUvZHJvcGRvd24vc3JjL2l0ZW0vaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUc1RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFJdEQsT0FBTyxFQUFFLHVEQUF1RCxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDakgsT0FBTyxFQUFFLDhDQUE4QyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0YsT0FBTyxFQUFFLGtEQUFrRCxFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQWU3RixNQUFNLE9BQU8sNkNBQTZDO0lBQ3hELGNBQWM7SUFDSixZQUFZLEdBQUcsTUFBTSxDQUFtQyxFQUFFLENBQUMsQ0FBQztJQUM1RCxnQkFBZ0IsR0FBRyxNQUFNLENBQU0sU0FBUyxDQUFDLENBQUM7SUFDMUMsY0FBYyxHQUFHLE1BQU0sQ0FBMEIsRUFBRSxDQUFDLENBQUM7SUFDckQsT0FBTyxHQUFHLE1BQU0sQ0FBc0IsU0FBUyxDQUFDLENBQUM7SUFFM0QsV0FBVztJQUNGLFFBQVEsR0FBRyxLQUFLLENBQXdDLFNBQVMsQ0FBQyxDQUFDO0lBQ25FLGFBQWEsR0FBRyxLQUFLLENBQXNCLFNBQVMsQ0FBQyxDQUFDO0lBQ3RELFlBQVksR0FBRyxLQUFLLENBQXNDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JFLGFBQWEs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aW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBlZmZlY3QsIGlucHV0LCBPbkluaXQsIG91dHB1dCwgc2lnbmFsLCB1bnRyYWNrZWQsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IElEcm9wZG93bkZ1bmN0aW9uQ29udHJvbEV2ZW50IH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtZHJvcGRvd25cIjtcbmltcG9ydCB7IElGbGFnTW91c2UgfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1wb3BvdmVyXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgSURhdGVEcm9wZG93bkRpc2FibGUsIElUeXBlRGF0ZSwgVFlQRV9EQVRFX0RST1BET1dOX0ZPUk1BVCwgVFlQRV9EQVRFX0ZPUk1BVCB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL2RhdGUtZHJvcGRvd24uaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBJRW1pdFNpbmdsZURhdGVEcm9wZG93biB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL2VtaXQtZHJvcGRvd24uaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBJRGF0ZURyb3Bkb3duSXRlbUZ1bmN0aW9uQ29udHJvbEV2ZW50IH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvZnVuY3Rpb25zLWNvbnRyb2wtZXZlbnQuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzRGF0ZXRpbWVEcm9wZG93bkJ1aWxkTGlzdEJ5RGF0ZVR5cGVQaXBlIH0gZnJvbSBcIi4uL3BpcGVzL2J1aWxkLWxpc3QtYnktZGF0ZS10eXBlLS5waXBlXCI7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzRGF0ZXRpbWVEcm9wZG93bkJ1aWxkV2lkdGhQaXBlIH0gZnJvbSBcIi4uL3BpcGVzL2J1aWxkLXdpZHRoLnBpcGVcIjtcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNEYXRldGltZURyb3Bkb3duSXRlbUNoaWxkQ29tcG9uZW50IH0gZnJvbSBcIi4vY2hpbGQvY2hpbGQuY29tcG9uZW50XCI7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2xpYnNfdWktY29tcG9uZW50cy1kYXRldGltZS1kcm9wZG93bi1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICdpdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBMaWJzVWlDb21wb25lbnRzRGF0ZXRpbWVEcm9wZG93bkl0ZW1DaGlsZENvbXBvbmVudCxcbiAgICBMaWJzVWlDb21wb25lbnRzRGF0ZXRpbWVEcm9wZG93bkJ1aWxkV2lkdGhQaXBlLFxuICAgIExpYnNVaUNvbXBvbmVudHNEYXRldGltZURyb3Bkb3duQnVpbGRMaXN0QnlEYXRlVHlwZVBpcGVcbiAgXVxufSlcblxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNEYXRldGltZURyb3Bkb3duSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qIFBST1BFUlRZICovXG4gIHByb3RlY3RlZCB0eXBlTGlzdERhdGUgPSBzaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8SVR5cGVEYXRlPj4+KFtdKTtcbiAgcHJvdGVjdGVkIGtleU1vbnRoUmVzZXREYXkgPSBzaWduYWw8YW55Pih1bmRlZmluZWQpO1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRTaW5nbGUgPSBzaWduYWw8SUVtaXRTaW5nbGVEYXRlRHJvcGRvd24+KHt9KTtcbiAgcHJvdGVjdGVkIGlzRXJyb3IgPSBzaWduYWw8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAvKiBJTlBVVCAqL1xuICByZWFkb25seSB0eXBlRGF0ZSA9IGlucHV0PFRZUEVfREFURV9EUk9QRE9XTl9GT1JNQVQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGRpc2FibGVTZWNvbmQgPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBzZWxlY3RlZERhdGUgPSBpbnB1dDxJRW1pdFNpbmdsZURhdGVEcm9wZG93biB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgd2lkdGhEcm9wZG93biA9IGlucHV0PG51bWJlciwgbnVtYmVyPigxMzYsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/IDEzNiB9KTtcbiAgcmVhZG9ubHkgd2lkdGhCeUVsZW1lbnQgPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBnZXRJdGVtWWVhckRpc3BsYXkgPSBpbnB1dDwoKHllYXI6IHN0cmluZykgPT4gc3RyaW5nKSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgbGlzdEhhc0J1dHRvblVuU2VsZWN0T3B0aW9uID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgcmVhZG9ubHkgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGRpc2FibGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHpJbmRleCA9IGlucHV0PG51bWJlciwgbnVtYmVyPigxMjAwLCB7IHRyYW5zZm9ybTogKHZhbHVlKSA9PiB2YWx1ZSA/PyAxMjAwIH0pO1xuICByZWFkb25seSBpc011bHRpcGxlID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgY2xhc3NJbmNsdWRlVGV4dERpc3BsYXlXaGVuTm9TZWxlY3QgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGlzQ2hlY2tFcnJvcldoZW5TZWxlY3RJdGVtID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgbWF4WWVhciA9IGlucHV0PG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgbWluWWVhciA9IGlucHV0PG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgcmV2ZXJzZVllYXIgPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkLCBib29sZWFuIHwgdW5kZWZpbmVkPih0cnVlLCB7IHRyYW5zZm9ybTogKHZhbHVlKSA9PiB2YWx1ZSA/PyB0cnVlIH0pO1xuICByZWFkb25seSBsaXN0S2V5c0Rpc2FibGUgPSBpbnB1dDxJRGF0ZURyb3Bkb3duRGlzYWJsZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgaWdub3JlQ29udmVydFllYXJTZWxlY3RlZCA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHZhbGlkUmVxdWlyZWQgPSBpbnB1dDx7IG1lc3NhZ2U/OiBzdHJpbmc7IGludGVycG9sYXRlUGFyYW1zPzogeyBhbnk6IG9iamVjdCB9IH0gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGlzRW1pdFNlbGVjdGVkRHJvcERvd24gPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBsaXN0TWF4SXRlbVNob3cgPSBpbnB1dDx7IHllYXI/OiBudW1iZXI7IG1vbnRoPzogbnVtYmVyOyBxdWFydGVyPzogbnVtYmVyOyBkYXk/OiBudW1iZXIgfSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAvKiBPVVRQVVQgKi9cbiAgcmVhZG9ubHkgb3V0U2VsZWN0ZWREYXRhID0gb3V0cHV0PElFbWl0U2luZ2xlRGF0ZURyb3Bkb3duPigpO1xuICByZWFkb25seSBvdXRGdW5jdGlvbkNvbnRyb2wgPSBvdXRwdXQ8SURhdGVEcm9wZG93bkl0ZW1GdW5jdGlvbkNvbnRyb2xFdmVudD4oKTtcbiAgcmVhZG9ubHkgb3V0Q2hhbmdTdGFnZUZsYWdNb3VzZSA9IG91dHB1dDxJRmxhZ01vdXNlPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCB0eXBlRGF0ZSA9IHRoaXMudHlwZURhdGUoKTtcbiAgICAgIGlmICghdHlwZURhdGUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHR5cGVEYXRlLnNwbGl0KCctJykgYXMgQXJyYXk8VFlQRV9EQVRFX0ZPUk1BVD47XG5cbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGRhdGEubWFwKGl0ZW0gPT4geyByZXR1cm4gc2lnbmFsKHsgaWQ6IChpdGVtIHx8ICdtb250aCcpIGFzIFRZUEVfREFURV9GT1JNQVQsIGtleVNlbGVjdGVkOiB1bmRlZmluZWQgfSkgfSkgfHwgW107XG4gICAgICAgIHRoaXMudHlwZUxpc3REYXRlLnNldChyZXN1bHRzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBzZWxlY3RlZERhdGUgPSB0aGlzLnNlbGVjdGVkRGF0ZSgpO1xuXG4gICAgICBpZiAoIXNlbGVjdGVkRGF0ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTaW5nbGUuc2V0KHNlbGVjdGVkRGF0ZSk7XG4gICAgICAgIGlmICghdGhpcy50eXBlTGlzdERhdGUoKS5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudHlwZURhdGUoKSA9PT0gJ21vbnRoLWRheScgJiYgc2VsZWN0ZWREYXRlLm1vbnRoKSB7XG4gICAgICAgICAgdGhpcy5rZXlNb250aFJlc2V0RGF5LnNldChzZWxlY3RlZERhdGUubW9udGgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudHlwZUxpc3REYXRlKCkuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICBpdGVtLnVwZGF0ZShjdXJyZW50ID0+IHtcbiAgICAgICAgICAgIGN1cnJlbnQua2V5U2VsZWN0ZWQgPSBzZWxlY3RlZERhdGVbY3VycmVudC5pZF0gPz8gdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKCh0aGlzLmRpc2FibGVTZWNvbmQoKSAmJiBpbmRleCAhPT0gMCAmJiAhY3VycmVudC5rZXlTZWxlY3RlZCkgfHwgKCFzZWxlY3RlZERhdGVbJ21vbnRoJ10gJiYgdGhpcy50eXBlRGF0ZSgpID09PSAnbW9udGgtZGF5JyAmJiBpdGVtKCkuaWQgPT09ICdkYXknKSkge1xuICAgICAgICAgICAgICBjdXJyZW50LmRpc2FibGUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY3VycmVudDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMub3V0RnVuY3Rpb25Db250cm9sLmVtaXQoe1xuICAgICAgY2hlY2tJc1ZhbGlkOiB0aGlzLnZhbGlkYXRlLmJpbmQodGhpcyksXG4gICAgICByZXNldERyb3Bkb3duOiB0aGlzLnJlc2V0RHJvcGRvd24uYmluZCh0aGlzKSxcbiAgICAgIHJlc2V0RXJyb3I6IHRoaXMucmVzZXRFcnJvci5iaW5kKHRoaXMpLFxuICAgICAgc2V0RXJyb3I6IHRoaXMuc2V0RXJyb3IuYmluZCh0aGlzKVxuICAgIH0pO1xuICB9XG5cbiAgLyogRlVOQ1RJT05TICovXG4gIHByb3RlY3RlZCBoYW5kbGVyU2VsZWN0ZWRLZXkoZXZlbnQ6IGFueSwgdHlwZURhdGU6IFdyaXRhYmxlU2lnbmFsPElUeXBlRGF0ZT4sIGk6IG51bWJlcikge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkU2luZ2xlKClbdHlwZURhdGUoKS5pZF0gPT09IGV2ZW50ICYmIHRoaXMuaXNFbWl0U2VsZWN0ZWREcm9wRG93bigpKSB7XG4gICAgICB0aGlzLm91dFNlbGVjdGVkRGF0YS5lbWl0KHRoaXMuc2VsZWN0ZWRTaW5nbGUoKSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHlwZURhdGUudXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgY3VycmVudC5rZXlTZWxlY3RlZCA9IGV2ZW50O1xuXG4gICAgICByZXR1cm4gY3VycmVudDtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnNlbGVjdGVkU2luZ2xlKCkpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRTaW5nbGUudXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICBjdXJyZW50W3R5cGVEYXRlKCkuaWRdID0gZXZlbnQgPyBOdW1iZXIoZXZlbnQpIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmRpc2FibGVTZWNvbmQoKSB8fCAodGhpcy50eXBlRGF0ZSgpID09PSAnbW9udGgtZGF5JyAmJiB0eXBlRGF0ZSgpLmlkID09PSAnbW9udGgnKSkge1xuICAgICAgdGhpcy5rZXlNb250aFJlc2V0RGF5LnNldChldmVudCk7XG4gICAgICB0aGlzLnR5cGVMaXN0RGF0ZSgpLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGl0ZW0udXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICAgIGN1cnJlbnQuZGlzYWJsZSA9IGZhbHNlO1xuXG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMudHlwZUxpc3REYXRlKCkuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChpbmRleCA9PT0gMSAmJiBpdGVtKCkuZnVuY3Rpb25Db250cm9sICYmIGkgPT09IDApIHtcbiAgICAgICAgaXRlbSgpLmZ1bmN0aW9uQ29udHJvbD8ucmVzZXQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAodHlwZURhdGUoKS5rZXlTZWxlY3RlZCAmJiAhdGhpcy5pc0NoZWNrRXJyb3JXaGVuU2VsZWN0SXRlbSgpKSB7XG4gICAgICB0eXBlRGF0ZS51cGRhdGUoY3VycmVudCA9PiB7XG4gICAgICAgIGN1cnJlbnQuc2hvd0JvcmRlckVycm9yID0gZmFsc2U7XG4gICAgICAgIGN1cnJlbnQuaXNFcnJvciA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgfSk7XG4gICAgICB0aGlzLmNoZWNrRXJyb3IoKTtcbiAgICB9XG4gICAgdGhpcy5vdXRTZWxlY3RlZERhdGEuZW1pdCh0aGlzLnNlbGVjdGVkU2luZ2xlKCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNoZWNrRXJyb3IoKSB7XG4gICAgaWYgKCF0aGlzLmlzRXJyb3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IGlzRXJyb3IgPSBmYWxzZTtcblxuICAgIHRoaXMudHlwZUxpc3REYXRlKCkuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGlmIChpdGVtKCkuc2hvd0JvcmRlckVycm9yKSB7XG4gICAgICAgIGlzRXJyb3IgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKCFpc0Vycm9yKSB7XG4gICAgICB0aGlzLmlzRXJyb3Iuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckZ1bmN0aW9uQ29udHJvbChldmVudDogSURyb3Bkb3duRnVuY3Rpb25Db250cm9sRXZlbnQsIGl0ZW06IFdyaXRhYmxlU2lnbmFsPElUeXBlRGF0ZT4pIHtcbiAgICBpdGVtLnVwZGF0ZShjdXJyZW50ID0+IHtcbiAgICAgIGN1cnJlbnQuZnVuY3Rpb25Db250cm9sID0gZXZlbnQ7XG5cbiAgICAgIHJldHVybiBjdXJyZW50O1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZXNldERyb3Bkb3duKCkge1xuICAgIHRoaXMudHlwZUxpc3REYXRlKCkuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRTaW5nbGUudXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICBjdXJyZW50W2l0ZW0oKS5pZF0gPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgICB9KTtcblxuICAgICAgaXRlbS51cGRhdGUoY3VycmVudCA9PiB7XG4gICAgICAgIGN1cnJlbnQua2V5U2VsZWN0ZWQgPSB1bmRlZmluZWQ7XG4gICAgICAgIGN1cnJlbnQuZnVuY3Rpb25Db250cm9sPy5yZXNldCgpO1xuXG4gICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgdGhpcy5yZXNldEVycm9yKCk7XG4gICAgdGhpcy5vdXRTZWxlY3RlZERhdGEuZW1pdCh0aGlzLnNlbGVjdGVkU2luZ2xlKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZXNldEVycm9yKCkge1xuICAgIHRoaXMuaXNFcnJvci5zZXQoZmFsc2UpO1xuICAgIHRoaXMudHlwZUxpc3REYXRlKCkuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGl0ZW0udXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICBjdXJyZW50LmlzRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgY3VycmVudC5zaG93Qm9yZGVyRXJyb3IgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm4gY3VycmVudDtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZXRFcnJvcihlcnJvcjogYm9vbGVhbikge1xuICAgIHRoaXMudHlwZUxpc3REYXRlKCkuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGl0ZW0udXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICBjdXJyZW50LnNob3dCb3JkZXJFcnJvciA9IGVycm9yO1xuXG4gICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHZhbGlkYXRlKCkge1xuICAgIGxldCB2YWxpZCA9IHRydWU7XG5cbiAgICB0aGlzLmlzRXJyb3Iuc2V0KGZhbHNlKTtcbiAgICB0aGlzLnR5cGVMaXN0RGF0ZSgpLmZvckVhY2goKGl0ZW0sIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIGl0ZW0udXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICBjdXJyZW50LnNob3dCb3JkZXJFcnJvciA9IGZhbHNlO1xuICAgICAgICBjdXJyZW50LmlzRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRTaW5nbGUoKSAmJiAhdGhpcy5zZWxlY3RlZFNpbmdsZSgpW2N1cnJlbnQuaWRdICYmICFjdXJyZW50LmRpc2FibGUpIHtcbiAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xuICAgICAgICAgIGN1cnJlbnQuc2hvd0JvcmRlckVycm9yID0gdHJ1ZTtcbiAgICAgICAgICBpZiAoaW5kZXggPT09IDAgJiYgdGhpcy50eXBlTGlzdERhdGUoKS5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgIHRoaXMuaXNFcnJvci5zZXQodHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpbmRleCA9PT0gMSAmJiB0aGlzLnR5cGVMaXN0RGF0ZSgpLmxlbmd0aCA9PT0gMiAmJiAhdGhpcy5pc0Vycm9yKCkpIHtcbiAgICAgICAgICAgIGN1cnJlbnQuaXNFcnJvciA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiB2YWxpZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ2hhbmdGbGFnTW91c2UoZmxhZ01vdXNlOiBJRmxhZ01vdXNlKSB7XG4gICAgdGhpcy5vdXRDaGFuZ1N0YWdlRmxhZ01vdXNlLmVtaXQoZmxhZ01vdXNlKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIlwiPlxuICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1zdGFydFwiPlxuICAgIEBpZiAodHlwZUxpc3REYXRlKCk7IGFzIHR5cGVMaXN0RGF0ZSkge1xuICAgICAgQGZvciAoaXRlbSBvZiB0eXBlTGlzdERhdGU7IHRyYWNrIGl0ZW0oKS5pZDsgbGV0IGxhc3QgPSAkbGFzdDsgbGV0IGkgPSRpbmRleDsgbGV0IGZpcnN0ID0gJGZpcnN0KSB7XG4gICAgICAgIDxkaXYgW3N0eWxlLndpZHRoXT1cIndpZHRoQnlFbGVtZW50KCkgfCBMaWJzVWlDb21wb25lbnRzRGF0ZXRpbWVEcm9wZG93bkJ1aWxkV2lkdGhQaXBlIDp3aWR0aERyb3Bkb3duKCk6Zmlyc3Q6aXNNdWx0aXBsZSgpXCJcbiAgICAgICAgICBbY2xhc3MubXItWzhweF1dPVwiIWxhc3QgJiYgdHlwZUxpc3REYXRlLmxlbmd0aCA9PT0yXCJcbiAgICAgICAgICBbc3R5bGUubWluV2lkdGgucHhdPVwid2lkdGhEcm9wZG93bigpXCI+XG4gICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1kYXRldGltZS1kcm9wZG93bi1pdGVtLWNoaWxkIFtyZWFkb25seV09XCJyZWFkb25seSgpXCJcbiAgICAgICAgICAgIFt0eXBlRGF0ZV09XCJpdGVtKCkuaWRcIlxuICAgICAgICAgICAgW2Rpc2FibGVdPVwiaXRlbSgpLmRpc2FibGUgPz8gZGlzYWJsZSgpXCJcbiAgICAgICAgICAgIFtsaXN0S2V5U2VsZWN0ZWRdPVwiaXRlbSgpLmtleVNlbGVjdGVkXCJcbiAgICAgICAgICAgIFt3aWR0aEJ5RWxlbWVudF09XCJ3aWR0aEJ5RWxlbWVudCgpXCJcbiAgICAgICAgICAgIFtmaXJzdF09XCJmaXJzdFwiXG4gICAgICAgICAgICBbd2lkdGhEcm9wZG93bl09XCJ3aWR0aERyb3Bkb3duKClcIlxuICAgICAgICAgICAgW2xpc3RLZXlzRGlzYWJsZV09XCJsaXN0S2V5c0Rpc2FibGUoKT8uW2l0ZW0oKS5pZF0/LigpXCJcbiAgICAgICAgICAgIFtsaXN0TWF4SXRlbVNob3ddPVwibGlzdE1heEl0ZW1TaG93KCk/LltpdGVtKCkuaWRdID8/IDZcIlxuICAgICAgICAgICAgW2lzRXJyb3JdPVwiaXRlbSgpLmlzRXJyb3JcIlxuICAgICAgICAgICAgW2xpc3RIYXNCdXR0b25VblNlbGVjdE9wdGlvbl09XCJsaXN0SGFzQnV0dG9uVW5TZWxlY3RPcHRpb24oKVwiXG4gICAgICAgICAgICBbekluZGV4XT1cInpJbmRleCgpXCJcbiAgICAgICAgICAgIFtzaG93Qm9yZGVyRXJyb3JdPVwiaXRlbSgpLnNob3dCb3JkZXJFcnJvciAmJiAhaXRlbSgpLmRpc2FibGUgJiYgIWRpc2FibGUoKVwiXG4gICAgICAgICAgICBbbGlzdERhdGFdPVwiaXRlbSgpLmlkIHwgTGlic1VpQ29tcG9uZW50c0RhdGV0aW1lRHJvcGRvd25CdWlsZExpc3RCeURhdGVUeXBlUGlwZSA6e21pblllYXI6bWluWWVhcigpLCBtYXhZZWFyOm1heFllYXIoKSwgcmV2ZXJzZVllYXI6cmV2ZXJzZVllYXIoKX0gOmtleU1vbnRoUmVzZXREYXkoKVwiXG4gICAgICAgICAgICBbY2xhc3NJbmNsdWRlVGV4dERpc3BsYXlXaGVuTm9TZWxlY3RdPVwiY2xhc3NJbmNsdWRlVGV4dERpc3BsYXlXaGVuTm9TZWxlY3QoKSA/PyAnJ1wiXG4gICAgICAgICAgICAob3V0U2VsZWN0ZWRLZXkpPVwiaGFuZGxlclNlbGVjdGVkS2V5KCRldmVudCwgaXRlbSwgaSlcIlxuICAgICAgICAgICAgKG91dEZ1bmN0aW9uQ29udHJvbCk9XCJoYW5kbGVyRnVuY3Rpb25Db250cm9sKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgICAgKG91dENoYW5nU3RhZ2VGbGFnTW91c2UpPVwiaGFuZGxlckNoYW5nRmxhZ01vdXNlKCRldmVudClcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICB9XG4gIDwvZGl2PlxuXG4gIEBpZiAoaXNFcnJvcigpKSB7XG4gICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIG10LVs0cHhdXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImxpYnMtdWktZm9udC1oN3IgbGlicy11aS10ZXh0LWVycm9yXCJcbiAgICAgICAgW2lubmVySHRtbF09XCIodmFsaWRSZXF1aXJlZCgpPy5tZXNzYWdlIHx8ICdpMThuX3ZhbGlkX2VtcHR5X21lc3NhZ2UnKXwgdHJhbnNsYXRlOnZhbGlkUmVxdWlyZWQoKT8uaW50ZXJwb2xhdGVQYXJhbXNcIj48L3NwYW4+XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuIl19
216
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZGF0ZXRpbWUvZHJvcGRvd24vc3JjL2l0ZW0vaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZGF0ZXRpbWUvZHJvcGRvd24vc3JjL2l0ZW0vaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUc1RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFJdEQsT0FBTyxFQUFFLHVEQUF1RCxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDakgsT0FBTyxFQUFFLDhDQUE4QyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0YsT0FBTyxFQUFFLGtEQUFrRCxFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQWU3RixNQUFNLE9BQU8sNkNBQTZDO0lBQ3hELG1CQUFtQjtJQUNULFlBQVksR0FBRyxNQUFNLENBQW1DLEVBQUUsQ0FBQyxDQUFDO0lBQzVELGdCQUFnQixHQUFHLE1BQU0sQ0FBTSxTQUFTLENBQUMsQ0FBQztJQUMxQyxjQUFjLEdBQUcsTUFBTSxDQUEwQixFQUFFLENBQUMsQ0FBQztJQUNyRCxPQUFPLEdBQUcsTUFBTSxDQUFzQixTQUFTLENBQUMsQ0FBQztJQUUzRCxnQkFBZ0I7SUFDUCxRQUFRLEdBQUcsS0FBSyxDQUF3QyxTQUFTLENBQUMsQ0FBQztJQUNuRSxhQUFhLEdBQUcsS0FBSyxDQUFzQixTQUFTLENBQUMsQ0FBQztJQUN0RCxZQUFZLEdBQUcsS0FBSyxDQUFzQyxTQUFTLENBQUMsQ0FBQztJQUNyRSxh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LyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBlZmZlY3QsIGlucHV0LCBPbkluaXQsIG91dHB1dCwgc2lnbmFsLCB1bnRyYWNrZWQsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IElEcm9wZG93bkZ1bmN0aW9uQ29udHJvbEV2ZW50IH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtZHJvcGRvd25cIjtcbmltcG9ydCB7IElGbGFnTW91c2UgfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1wb3BvdmVyXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgSURhdGVEcm9wZG93bkRpc2FibGUsIElUeXBlRGF0ZSwgVFlQRV9EQVRFX0RST1BET1dOX0ZPUk1BVCwgVFlQRV9EQVRFX0ZPUk1BVCB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL2RhdGUtZHJvcGRvd24uaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBJRW1pdFNpbmdsZURhdGVEcm9wZG93biB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL2VtaXQtZHJvcGRvd24uaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBJRGF0ZURyb3Bkb3duSXRlbUZ1bmN0aW9uQ29udHJvbEV2ZW50IH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvZnVuY3Rpb25zLWNvbnRyb2wtZXZlbnQuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzRGF0ZXRpbWVEcm9wZG93bkJ1aWxkTGlzdEJ5RGF0ZVR5cGVQaXBlIH0gZnJvbSBcIi4uL3BpcGVzL2J1aWxkLWxpc3QtYnktZGF0ZS10eXBlLS5waXBlXCI7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzRGF0ZXRpbWVEcm9wZG93bkJ1aWxkV2lkdGhQaXBlIH0gZnJvbSBcIi4uL3BpcGVzL2J1aWxkLXdpZHRoLnBpcGVcIjtcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNEYXRldGltZURyb3Bkb3duSXRlbUNoaWxkQ29tcG9uZW50IH0gZnJvbSBcIi4vY2hpbGQvY2hpbGQuY29tcG9uZW50XCI7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2xpYnNfdWktY29tcG9uZW50cy1kYXRldGltZS1kcm9wZG93bi1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICdpdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBMaWJzVWlDb21wb25lbnRzRGF0ZXRpbWVEcm9wZG93bkl0ZW1DaGlsZENvbXBvbmVudCxcbiAgICBMaWJzVWlDb21wb25lbnRzRGF0ZXRpbWVEcm9wZG93bkJ1aWxkV2lkdGhQaXBlLFxuICAgIExpYnNVaUNvbXBvbmVudHNEYXRldGltZURyb3Bkb3duQnVpbGRMaXN0QnlEYXRlVHlwZVBpcGVcbiAgXVxufSlcblxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNEYXRldGltZURyb3Bkb3duSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8vICNyZWdpb24gUFJPUEVSVFlcbiAgcHJvdGVjdGVkIHR5cGVMaXN0RGF0ZSA9IHNpZ25hbDxBcnJheTxXcml0YWJsZVNpZ25hbDxJVHlwZURhdGU+Pj4oW10pO1xuICBwcm90ZWN0ZWQga2V5TW9udGhSZXNldERheSA9IHNpZ25hbDxhbnk+KHVuZGVmaW5lZCk7XG4gIHByb3RlY3RlZCBzZWxlY3RlZFNpbmdsZSA9IHNpZ25hbDxJRW1pdFNpbmdsZURhdGVEcm9wZG93bj4oe30pO1xuICBwcm90ZWN0ZWQgaXNFcnJvciA9IHNpZ25hbDxib29sZWFuIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIC8vICNyZWdpb24gSU5QVVRcbiAgcmVhZG9ubHkgdHlwZURhdGUgPSBpbnB1dDxUWVBFX0RBVEVfRFJPUERPV05fRk9STUFUIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBkaXNhYmxlU2Vjb25kID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWREYXRlID0gaW5wdXQ8SUVtaXRTaW5nbGVEYXRlRHJvcGRvd24gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHdpZHRoRHJvcGRvd24gPSBpbnB1dDxudW1iZXIsIG51bWJlcj4oMTM2LCB7IHRyYW5zZm9ybTogKHZhbHVlKSA9PiB2YWx1ZSA/PyAxMzYgfSk7XG4gIHJlYWRvbmx5IHdpZHRoQnlFbGVtZW50ID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgZ2V0SXRlbVllYXJEaXNwbGF5ID0gaW5wdXQ8KCh5ZWFyOiBzdHJpbmcpID0+IHN0cmluZykgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGxpc3RIYXNCdXR0b25VblNlbGVjdE9wdGlvbiA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHJlYWRvbmx5ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBkaXNhYmxlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSB6SW5kZXggPSBpbnB1dDxudW1iZXIsIG51bWJlcj4oMTIwMCwgeyB0cmFuc2Zvcm06ICh2YWx1ZSkgPT4gdmFsdWUgPz8gMTIwMCB9KTtcbiAgcmVhZG9ubHkgaXNNdWx0aXBsZSA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGNsYXNzSW5jbHVkZVRleHREaXNwbGF5V2hlbk5vU2VsZWN0ID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBpc0NoZWNrRXJyb3JXaGVuU2VsZWN0SXRlbSA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IG1heFllYXIgPSBpbnB1dDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IG1pblllYXIgPSBpbnB1dDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHJldmVyc2VZZWFyID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZCwgYm9vbGVhbiB8IHVuZGVmaW5lZD4odHJ1ZSwgeyB0cmFuc2Zvcm06ICh2YWx1ZSkgPT4gdmFsdWUgPz8gdHJ1ZSB9KTtcbiAgcmVhZG9ubHkgbGlzdEtleXNEaXNhYmxlID0gaW5wdXQ8SURhdGVEcm9wZG93bkRpc2FibGUgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGlnbm9yZUNvbnZlcnRZZWFyU2VsZWN0ZWQgPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSB2YWxpZFJlcXVpcmVkID0gaW5wdXQ8eyBtZXNzYWdlPzogc3RyaW5nOyBpbnRlcnBvbGF0ZVBhcmFtcz86IHsgYW55OiBvYmplY3QgfSB9IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBpc0VtaXRTZWxlY3RlZERyb3BEb3duID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgbGlzdE1heEl0ZW1TaG93ID0gaW5wdXQ8eyB5ZWFyPzogbnVtYmVyOyBtb250aD86IG51bWJlcjsgcXVhcnRlcj86IG51bWJlcjsgZGF5PzogbnVtYmVyIH0gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgLy8gI3JlZ2lvbiBPVVRQVVRcbiAgcmVhZG9ubHkgb3V0U2VsZWN0ZWREYXRhID0gb3V0cHV0PElFbWl0U2luZ2xlRGF0ZURyb3Bkb3duPigpO1xuICByZWFkb25seSBvdXRGdW5jdGlvbkNvbnRyb2wgPSBvdXRwdXQ8SURhdGVEcm9wZG93bkl0ZW1GdW5jdGlvbkNvbnRyb2xFdmVudD4oKTtcbiAgcmVhZG9ubHkgb3V0Q2hhbmdTdGFnZUZsYWdNb3VzZSA9IG91dHB1dDxJRmxhZ01vdXNlPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCB0eXBlRGF0ZSA9IHRoaXMudHlwZURhdGUoKTtcbiAgICAgIGlmICghdHlwZURhdGUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHR5cGVEYXRlLnNwbGl0KCctJykgYXMgQXJyYXk8VFlQRV9EQVRFX0ZPUk1BVD47XG5cbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGRhdGEubWFwKGl0ZW0gPT4geyByZXR1cm4gc2lnbmFsKHsgaWQ6IChpdGVtIHx8ICdtb250aCcpIGFzIFRZUEVfREFURV9GT1JNQVQsIGtleVNlbGVjdGVkOiB1bmRlZmluZWQgfSkgfSkgfHwgW107XG4gICAgICAgIHRoaXMudHlwZUxpc3REYXRlLnNldChyZXN1bHRzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBzZWxlY3RlZERhdGUgPSB0aGlzLnNlbGVjdGVkRGF0ZSgpO1xuXG4gICAgICBpZiAoIXNlbGVjdGVkRGF0ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTaW5nbGUuc2V0KHNlbGVjdGVkRGF0ZSk7XG4gICAgICAgIGlmICghdGhpcy50eXBlTGlzdERhdGUoKS5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudHlwZURhdGUoKSA9PT0gJ21vbnRoLWRheScgJiYgc2VsZWN0ZWREYXRlLm1vbnRoKSB7XG4gICAgICAgICAgdGhpcy5rZXlNb250aFJlc2V0RGF5LnNldChzZWxlY3RlZERhdGUubW9udGgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudHlwZUxpc3REYXRlKCkuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICBpdGVtLnVwZGF0ZShjdXJyZW50ID0+IHtcbiAgICAgICAgICAgIGN1cnJlbnQua2V5U2VsZWN0ZWQgPSBzZWxlY3RlZERhdGVbY3VycmVudC5pZF0gPz8gdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKCh0aGlzLmRpc2FibGVTZWNvbmQoKSAmJiBpbmRleCAhPT0gMCAmJiAhY3VycmVudC5rZXlTZWxlY3RlZCkgfHwgKCFzZWxlY3RlZERhdGVbJ21vbnRoJ10gJiYgdGhpcy50eXBlRGF0ZSgpID09PSAnbW9udGgtZGF5JyAmJiBpdGVtKCkuaWQgPT09ICdkYXknKSkge1xuICAgICAgICAgICAgICBjdXJyZW50LmRpc2FibGUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY3VycmVudDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMub3V0RnVuY3Rpb25Db250cm9sLmVtaXQoe1xuICAgICAgY2hlY2tJc1ZhbGlkOiB0aGlzLnZhbGlkYXRlLmJpbmQodGhpcyksXG4gICAgICByZXNldERyb3Bkb3duOiB0aGlzLnJlc2V0RHJvcGRvd24uYmluZCh0aGlzKSxcbiAgICAgIHJlc2V0RXJyb3I6IHRoaXMucmVzZXRFcnJvci5iaW5kKHRoaXMpLFxuICAgICAgc2V0RXJyb3I6IHRoaXMuc2V0RXJyb3IuYmluZCh0aGlzKVxuICAgIH0pO1xuICB9XG5cbiAgLyogRlVOQ1RJT05TICovXG4gIHByb3RlY3RlZCBoYW5kbGVyU2VsZWN0ZWRLZXkoZXZlbnQ6IGFueSwgdHlwZURhdGU6IFdyaXRhYmxlU2lnbmFsPElUeXBlRGF0ZT4sIGk6IG51bWJlcikge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkU2luZ2xlKClbdHlwZURhdGUoKS5pZF0gPT09IGV2ZW50ICYmIHRoaXMuaXNFbWl0U2VsZWN0ZWREcm9wRG93bigpKSB7XG4gICAgICB0aGlzLm91dFNlbGVjdGVkRGF0YS5lbWl0KHRoaXMuc2VsZWN0ZWRTaW5nbGUoKSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHlwZURhdGUudXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgY3VycmVudC5rZXlTZWxlY3RlZCA9IGV2ZW50O1xuXG4gICAgICByZXR1cm4gY3VycmVudDtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnNlbGVjdGVkU2luZ2xlKCkpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRTaW5nbGUudXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICBjdXJyZW50W3R5cGVEYXRlKCkuaWRdID0gZXZlbnQgPyBOdW1iZXIoZXZlbnQpIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmRpc2FibGVTZWNvbmQoKSB8fCAodGhpcy50eXBlRGF0ZSgpID09PSAnbW9udGgtZGF5JyAmJiB0eXBlRGF0ZSgpLmlkID09PSAnbW9udGgnKSkge1xuICAgICAgdGhpcy5rZXlNb250aFJlc2V0RGF5LnNldChldmVudCk7XG4gICAgICB0aGlzLnR5cGVMaXN0RGF0ZSgpLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGl0ZW0udXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICAgIGN1cnJlbnQuZGlzYWJsZSA9IGZhbHNlO1xuXG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMudHlwZUxpc3REYXRlKCkuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChpbmRleCA9PT0gMSAmJiBpdGVtKCkuZnVuY3Rpb25Db250cm9sICYmIGkgPT09IDApIHtcbiAgICAgICAgaXRlbSgpLmZ1bmN0aW9uQ29udHJvbD8ucmVzZXQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAodHlwZURhdGUoKS5rZXlTZWxlY3RlZCAmJiAhdGhpcy5pc0NoZWNrRXJyb3JXaGVuU2VsZWN0SXRlbSgpKSB7XG4gICAgICB0eXBlRGF0ZS51cGRhdGUoY3VycmVudCA9PiB7XG4gICAgICAgIGN1cnJlbnQuc2hvd0JvcmRlckVycm9yID0gZmFsc2U7XG4gICAgICAgIGN1cnJlbnQuaXNFcnJvciA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgfSk7XG4gICAgICB0aGlzLmNoZWNrRXJyb3IoKTtcbiAgICB9XG4gICAgdGhpcy5vdXRTZWxlY3RlZERhdGEuZW1pdCh0aGlzLnNlbGVjdGVkU2luZ2xlKCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNoZWNrRXJyb3IoKSB7XG4gICAgaWYgKCF0aGlzLmlzRXJyb3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IGlzRXJyb3IgPSBmYWxzZTtcblxuICAgIHRoaXMudHlwZUxpc3REYXRlKCkuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGlmIChpdGVtKCkuc2hvd0JvcmRlckVycm9yKSB7XG4gICAgICAgIGlzRXJyb3IgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKCFpc0Vycm9yKSB7XG4gICAgICB0aGlzLmlzRXJyb3Iuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckZ1bmN0aW9uQ29udHJvbChldmVudDogSURyb3Bkb3duRnVuY3Rpb25Db250cm9sRXZlbnQsIGl0ZW06IFdyaXRhYmxlU2lnbmFsPElUeXBlRGF0ZT4pIHtcbiAgICBpdGVtLnVwZGF0ZShjdXJyZW50ID0+IHtcbiAgICAgIGN1cnJlbnQuZnVuY3Rpb25Db250cm9sID0gZXZlbnQ7XG5cbiAgICAgIHJldHVybiBjdXJyZW50O1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZXNldERyb3Bkb3duKCkge1xuICAgIHRoaXMudHlwZUxpc3REYXRlKCkuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRTaW5nbGUudXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICBjdXJyZW50W2l0ZW0oKS5pZF0gPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgICB9KTtcblxuICAgICAgaXRlbS51cGRhdGUoY3VycmVudCA9PiB7XG4gICAgICAgIGN1cnJlbnQua2V5U2VsZWN0ZWQgPSB1bmRlZmluZWQ7XG4gICAgICAgIGN1cnJlbnQuZnVuY3Rpb25Db250cm9sPy5yZXNldCgpO1xuXG4gICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgdGhpcy5yZXNldEVycm9yKCk7XG4gICAgdGhpcy5vdXRTZWxlY3RlZERhdGEuZW1pdCh0aGlzLnNlbGVjdGVkU2luZ2xlKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZXNldEVycm9yKCkge1xuICAgIHRoaXMuaXNFcnJvci5zZXQoZmFsc2UpO1xuICAgIHRoaXMudHlwZUxpc3REYXRlKCkuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGl0ZW0udXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICBjdXJyZW50LmlzRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgY3VycmVudC5zaG93Qm9yZGVyRXJyb3IgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm4gY3VycmVudDtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZXRFcnJvcihlcnJvcjogYm9vbGVhbikge1xuICAgIHRoaXMudHlwZUxpc3REYXRlKCkuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGl0ZW0udXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICBjdXJyZW50LnNob3dCb3JkZXJFcnJvciA9IGVycm9yO1xuXG4gICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHZhbGlkYXRlKCkge1xuICAgIGxldCB2YWxpZCA9IHRydWU7XG5cbiAgICB0aGlzLmlzRXJyb3Iuc2V0KGZhbHNlKTtcbiAgICB0aGlzLnR5cGVMaXN0RGF0ZSgpLmZvckVhY2goKGl0ZW0sIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIGl0ZW0udXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICBjdXJyZW50LnNob3dCb3JkZXJFcnJvciA9IGZhbHNlO1xuICAgICAgICBjdXJyZW50LmlzRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRTaW5nbGUoKSAmJiAhdGhpcy5zZWxlY3RlZFNpbmdsZSgpW2N1cnJlbnQuaWRdICYmICFjdXJyZW50LmRpc2FibGUpIHtcbiAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xuICAgICAgICAgIGN1cnJlbnQuc2hvd0JvcmRlckVycm9yID0gdHJ1ZTtcbiAgICAgICAgICBpZiAoaW5kZXggPT09IDAgJiYgdGhpcy50eXBlTGlzdERhdGUoKS5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgIHRoaXMuaXNFcnJvci5zZXQodHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpbmRleCA9PT0gMSAmJiB0aGlzLnR5cGVMaXN0RGF0ZSgpLmxlbmd0aCA9PT0gMiAmJiAhdGhpcy5pc0Vycm9yKCkpIHtcbiAgICAgICAgICAgIGN1cnJlbnQuaXNFcnJvciA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiB2YWxpZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyQ2hhbmdGbGFnTW91c2UoZmxhZ01vdXNlOiBJRmxhZ01vdXNlKSB7XG4gICAgdGhpcy5vdXRDaGFuZ1N0YWdlRmxhZ01vdXNlLmVtaXQoZmxhZ01vdXNlKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIlwiPlxuICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1zdGFydFwiPlxuICAgIEBpZiAodHlwZUxpc3REYXRlKCk7IGFzIHR5cGVMaXN0RGF0ZSkge1xuICAgICAgQGZvciAoaXRlbSBvZiB0eXBlTGlzdERhdGU7IHRyYWNrIGl0ZW0oKS5pZDsgbGV0IGxhc3QgPSAkbGFzdDsgbGV0IGkgPSRpbmRleDsgbGV0IGZpcnN0ID0gJGZpcnN0KSB7XG4gICAgICAgIDxkaXYgW3N0eWxlLndpZHRoXT1cIndpZHRoQnlFbGVtZW50KCkgfCBMaWJzVWlDb21wb25lbnRzRGF0ZXRpbWVEcm9wZG93bkJ1aWxkV2lkdGhQaXBlIDp3aWR0aERyb3Bkb3duKCk6Zmlyc3Q6aXNNdWx0aXBsZSgpXCJcbiAgICAgICAgICBbY2xhc3MubXItWzhweF1dPVwiIWxhc3QgJiYgdHlwZUxpc3REYXRlLmxlbmd0aCA9PT0yXCJcbiAgICAgICAgICBbc3R5bGUubWluV2lkdGgucHhdPVwid2lkdGhEcm9wZG93bigpXCI+XG4gICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1kYXRldGltZS1kcm9wZG93bi1pdGVtLWNoaWxkIFtyZWFkb25seV09XCJyZWFkb25seSgpXCJcbiAgICAgICAgICAgIFt0eXBlRGF0ZV09XCJpdGVtKCkuaWRcIlxuICAgICAgICAgICAgW2Rpc2FibGVdPVwiaXRlbSgpLmRpc2FibGUgPz8gZGlzYWJsZSgpXCJcbiAgICAgICAgICAgIFtsaXN0S2V5U2VsZWN0ZWRdPVwiaXRlbSgpLmtleVNlbGVjdGVkXCJcbiAgICAgICAgICAgIFt3aWR0aEJ5RWxlbWVudF09XCJ3aWR0aEJ5RWxlbWVudCgpXCJcbiAgICAgICAgICAgIFtmaXJzdF09XCJmaXJzdFwiXG4gICAgICAgICAgICBbd2lkdGhEcm9wZG93bl09XCJ3aWR0aERyb3Bkb3duKClcIlxuICAgICAgICAgICAgW2xpc3RLZXlzRGlzYWJsZV09XCJsaXN0S2V5c0Rpc2FibGUoKT8uW2l0ZW0oKS5pZF0/LigpXCJcbiAgICAgICAgICAgIFtsaXN0TWF4SXRlbVNob3ddPVwibGlzdE1heEl0ZW1TaG93KCk/LltpdGVtKCkuaWRdID8/IDZcIlxuICAgICAgICAgICAgW2lzRXJyb3JdPVwiaXRlbSgpLmlzRXJyb3JcIlxuICAgICAgICAgICAgW2xpc3RIYXNCdXR0b25VblNlbGVjdE9wdGlvbl09XCJsaXN0SGFzQnV0dG9uVW5TZWxlY3RPcHRpb24oKVwiXG4gICAgICAgICAgICBbekluZGV4XT1cInpJbmRleCgpXCJcbiAgICAgICAgICAgIFtzaG93Qm9yZGVyRXJyb3JdPVwiaXRlbSgpLnNob3dCb3JkZXJFcnJvciAmJiAhaXRlbSgpLmRpc2FibGUgJiYgIWRpc2FibGUoKVwiXG4gICAgICAgICAgICBbbGlzdERhdGFdPVwiaXRlbSgpLmlkIHwgTGlic1VpQ29tcG9uZW50c0RhdGV0aW1lRHJvcGRvd25CdWlsZExpc3RCeURhdGVUeXBlUGlwZSA6e21pblllYXI6bWluWWVhcigpLCBtYXhZZWFyOm1heFllYXIoKSwgcmV2ZXJzZVllYXI6cmV2ZXJzZVllYXIoKX0gOmtleU1vbnRoUmVzZXREYXkoKVwiXG4gICAgICAgICAgICBbY2xhc3NJbmNsdWRlVGV4dERpc3BsYXlXaGVuTm9TZWxlY3RdPVwiY2xhc3NJbmNsdWRlVGV4dERpc3BsYXlXaGVuTm9TZWxlY3QoKSA/PyAnJ1wiXG4gICAgICAgICAgICAob3V0U2VsZWN0ZWRLZXkpPVwiaGFuZGxlclNlbGVjdGVkS2V5KCRldmVudCwgaXRlbSwgaSlcIlxuICAgICAgICAgICAgKG91dEZ1bmN0aW9uQ29udHJvbCk9XCJoYW5kbGVyRnVuY3Rpb25Db250cm9sKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgICAgKG91dENoYW5nU3RhZ2VGbGFnTW91c2UpPVwiaGFuZGxlckNoYW5nRmxhZ01vdXNlKCRldmVudClcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICB9XG4gIDwvZGl2PlxuXG4gIEBpZiAoaXNFcnJvcigpKSB7XG4gICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIG10LVs0cHhdXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImxpYnMtdWktZm9udC1oN3IgbGlicy11aS10ZXh0LWVycm9yXCJcbiAgICAgICAgW2lubmVySHRtbF09XCIodmFsaWRSZXF1aXJlZCgpPy5tZXNzYWdlIHx8ICdpMThuX3ZhbGlkX2VtcHR5X21lc3NhZ2UnKXwgdHJhbnNsYXRlOnZhbGlkUmVxdWlyZWQoKT8uaW50ZXJwb2xhdGVQYXJhbXNcIj48L3NwYW4+XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuIl19
@@ -324,7 +324,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
324
324
 
325
325
  /* eslint-disable @typescript-eslint/no-explicit-any */
326
326
  class LibsUiComponentsDatetimeDropdownItemChildComponent {
327
- /* PROPERTY */
327
+ // #region PROPERTY
328
328
  httpRequestDetailItemById = signal(undefined);
329
329
  listConfig = signal({
330
330
  type: 'text',
@@ -335,7 +335,7 @@ class LibsUiComponentsDatetimeDropdownItemChildComponent {
335
335
  });
336
336
  textNoSelectDisplay = computed(this.computedTextNoSelectDisplay.bind(this));
337
337
  usingWidth = computed(this.computedWidth.bind(this));
338
- /* INPUT */
338
+ // #region INPUT
339
339
  typeDate = input(undefined);
340
340
  getItemYearDisplay = input();
341
341
  listHasButtonUnSelectOption = input();
@@ -354,11 +354,11 @@ class LibsUiComponentsDatetimeDropdownItemChildComponent {
354
354
  ignoreConvertYearSelected = input();
355
355
  listKeysDisable = input(undefined);
356
356
  validRequired = input();
357
- /* OUTPUT */
357
+ // #region OUTPUT
358
358
  outSelectedKey = output();
359
359
  outFunctionControl = output();
360
360
  outChangStageFlagMouse = output();
361
- /* INJECT */
361
+ // #region INJECT
362
362
  translate = inject(TranslateService);
363
363
  constructor() {
364
364
  effect(() => {
@@ -442,12 +442,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
442
442
 
443
443
  /* eslint-disable @typescript-eslint/no-explicit-any */
444
444
  class LibsUiComponentsDatetimeDropdownItemComponent {
445
- /* PROPERTY */
445
+ // #region PROPERTY
446
446
  typeListDate = signal([]);
447
447
  keyMonthResetDay = signal(undefined);
448
448
  selectedSingle = signal({});
449
449
  isError = signal(undefined);
450
- /* INPUT */
450
+ // #region INPUT
451
451
  typeDate = input(undefined);
452
452
  disableSecond = input(undefined);
453
453
  selectedDate = input(undefined);
@@ -469,7 +469,7 @@ class LibsUiComponentsDatetimeDropdownItemComponent {
469
469
  validRequired = input(undefined);
470
470
  isEmitSelectedDropDown = input(undefined);
471
471
  listMaxItemShow = input(undefined);
472
- /* OUTPUT */
472
+ // #region OUTPUT
473
473
  outSelectedData = output();
474
474
  outFunctionControl = output();
475
475
  outChangStageFlagMouse = output();
@@ -650,7 +650,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
650
650
  }], ctorParameters: () => [] });
651
651
 
652
652
  class LibsUiComponentsDatetimeDropdownComponent {
653
- /* PROPERTY */
653
+ // #region PROPERTY
654
654
  width = signal(0);
655
655
  widthElement = signal(undefined);
656
656
  widthLabel = signal(undefined);
@@ -667,7 +667,7 @@ class LibsUiComponentsDatetimeDropdownComponent {
667
667
  timeOut = signal(undefined);
668
668
  onDestroy = new Subject();
669
669
  functionsControl = new Map();
670
- /* INPUT */
670
+ // #region INPUT
671
671
  labelConfig = input(undefined);
672
672
  widthDropdown = input(136, { transform: (value) => value ?? 136 });
673
673
  zIndex = input(1200, { transform: (value) => value ?? 1200 });
@@ -699,7 +699,7 @@ class LibsUiComponentsDatetimeDropdownComponent {
699
699
  isCheckErrorWhenSelectItem = input(true, { transform: (value) => value ?? true });
700
700
  ignoreRequiredValueSecondWhenNotValidRequired = input(false); // có validate giá trị thứ 2 khi validRequired không?
701
701
  validRequired = input();
702
- /* OUTPUT */
702
+ // #region OUTPUT
703
703
  outFunctionsControl = output();
704
704
  outSelectedDropdown = output(); // dùng cho trường hợp emit mỗi một lần chọn giá trị nên khi sử dụng phải check kĩ undefined
705
705
  outChooseMultiDate = output();
@@ -709,7 +709,7 @@ class LibsUiComponentsDatetimeDropdownComponent {
709
709
  containerRef = viewChild('parent');
710
710
  labelFromRef = viewChild('labelFrom');
711
711
  labelToRef = viewChild('labelTo');
712
- /* INJECT */
712
+ // #region INJECT
713
713
  translate = inject(TranslateService);
714
714
  constructor() {
715
715
  effect(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"libs-ui-components-datetime-dropdown.mjs","sources":["../../../../../../libs-ui/components/datetime/dropdown/src/defines/date-dropdown.define.ts","../../../../../../libs-ui/components/datetime/dropdown/src/directive/date-dropdown.directive.ts","../../../../../../libs-ui/components/datetime/dropdown/src/pipes/build-list-by-date-type-.pipe.ts","../../../../../../libs-ui/components/datetime/dropdown/src/pipes/build-width.pipe.ts","../../../../../../libs-ui/components/datetime/dropdown/src/item/child/child.component.ts","../../../../../../libs-ui/components/datetime/dropdown/src/item/child/child.component.html","../../../../../../libs-ui/components/datetime/dropdown/src/item/item.component.ts","../../../../../../libs-ui/components/datetime/dropdown/src/item/item.component.html","../../../../../../libs-ui/components/datetime/dropdown/src/dropdown.component.ts","../../../../../../libs-ui/components/datetime/dropdown/src/dropdown.component.html","../../../../../../libs-ui/components/datetime/dropdown/src/libs-ui-components-datetime-dropdown.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { TYPE_DATE_FORMAT, TYPE_DROPDOWN_MONTH_ID } from \"../interfaces/date-dropdown.interface\";\nimport { IHttpRequestConfig, returnDetailObject, returnListObject } from \"@libs-ui/services-http-request\";\nimport { UtilsHttpParamsRequest } from \"@libs-ui/utils\";\nimport { DEFAULT_MAX_YEAR, DEFAULT_MIN_YEAR } from \"@libs-ui/components-datetime-picker\";\n\nexport const convertGetValue = (type: TYPE_DATE_FORMAT, item: { label: string }, translate: TranslateService) => {\n switch (type) {\n case 'day':\n return translate.instant('i18n_day_param', { day: item.label });\n\n case 'month':\n return translate.instant(item.label || ' ', { year: '' });\n\n case 'year':\n return translate.instant('i18n_year_param', { year: item.label });\n\n case 'quarter':\n return translate.instant('i18n_quarter', { quarter: item.label });\n }\n};\n\nexport const convertItemSelectedDefine = (type: TYPE_DATE_FORMAT, item: { id: number, label: string, labelDisplay: string }, translate: TranslateService, getItemYearDisplay?: (label: string) => void, ignoreConvertYearSelected?: boolean) => {\n switch (type) {\n case 'day':\n return translate.instant('i18n_day_param', { day: item.label });\n\n case 'month':\n return translate.instant(item.label || ' ', { year: '' });\n\n case 'year':\n {\n let labelDisplay = ignoreConvertYearSelected ? item.label : translate.instant('i18n_year_param', { year: item.label });\n\n if (getItemYearDisplay) {\n labelDisplay = getItemYearDisplay(item.label);\n }\n\n return labelDisplay;\n }\n\n case 'quarter':\n return translate.instant('i18n_quarter', { quarter: item.label });\n }\n};\n\n\nexport const LIST_MONTHS_DEFAULT = (): Array<{ id: number, label: string }> => {\n return [\n {\n id: 1,\n label: 'i18n_january',\n },\n {\n id: 2,\n label: 'i18n_february',\n },\n {\n id: 3,\n label: 'i18n_march',\n },\n {\n id: 4,\n label: 'i18n_april',\n },\n {\n id: 5,\n label: 'i18n_may',\n },\n {\n id: 6,\n label: 'i18n_june',\n },\n {\n id: 7,\n label: 'i18n_july',\n },\n {\n id: 8,\n label: 'i18n_august',\n },\n {\n id: 9,\n label: 'i18n_september',\n },\n {\n id: 10,\n label: 'i18n_october',\n },\n {\n id: 11,\n label: 'i18n_november',\n },\n {\n id: 12,\n label: 'i18n_december',\n }\n ];\n};\n\nexport const CompareDate = (dateCompare: Array<{ from: number | undefined, to: number | undefined }>, ignoreAllowTimeSame: boolean): boolean => {\n const dateNumberOne = dateCompare[0];\n\n if (dateCompare.length === 2) {\n const dateNumberTow = dateCompare[1];\n\n if (!dateNumberOne.from || !dateNumberOne.to || !dateNumberTow.from || !dateNumberTow.to) {\n return false;\n }\n if (ignoreAllowTimeSame ? dateNumberOne.from > dateNumberOne.to : dateNumberOne.from >= dateNumberOne.to) {\n return true;\n }\n if (dateNumberOne.from === dateNumberOne.to && (ignoreAllowTimeSame ? dateNumberTow.from > dateNumberTow.to : dateNumberTow.from >= dateNumberTow.to)) {\n return true;\n }\n\n return false;\n }\n\n if (!dateNumberOne.from || !dateNumberOne.to) {\n return false;\n }\n if (ignoreAllowTimeSame ? dateNumberOne.from > dateNumberOne.to : dateNumberOne.from >= dateNumberOne.to) {\n return true;\n }\n\n return false;\n};\n\nexport const getConfigHttpRequestDetailDate = (data: Array<{ id: number, label: string }>): IHttpRequestConfig => {\n return {\n serviceOther: returnDetailObject(new UtilsHttpParamsRequest({ fromObject: { fieldKey: 'id' } }), data),\n functionName: 'detailByData',\n argumentsValue: [],\n guideAutoUpdateArgumentsValue: {\n paging: {},\n detailById: {\n subFieldUpdate: 'id',\n fieldUpdate: '[0]',\n fieldGetValue: ''\n }\n }\n };\n};\n\nexport const getConfigHttpRequestListDate = (data: Array<{ id: number, label: string }>): IHttpRequestConfig => {\n return {\n serviceOther: returnListObject(data),\n functionName: 'list',\n argumentsValue: []\n };\n};\n\nexport const buildListDataByTypeDate = (type: TYPE_DATE_FORMAT, dataYear: { minYear?: number, maxYear?: number, reverseYear?: boolean }, keyMonth: any): Array<{ id: number, label: string }> => {\n switch (type) {\n case 'day':\n return convertDay(keyMonth);\n\n case 'month':\n return LIST_MONTHS_DEFAULT();\n\n case 'year':\n return convertYear(dataYear.minYear, dataYear.maxYear, dataYear.reverseYear);\n\n case 'quarter':\n {\n const listQuarter = [];\n\n for (let i = 1; i <= 4; i++) {\n listQuarter.push({\n id: i,\n label: `${i}`\n });\n }\n\n return listQuarter;\n }\n }\n};\n\nexport const defaultMonths = (): Array<{ id: TYPE_DROPDOWN_MONTH_ID, label: string, maxDays: number }> => {\n return [\n {\n id: 1,\n label: 'i18n_january',\n maxDays: 31\n },\n {\n id: 2,\n label: 'i18n_february',\n maxDays: 29\n },\n {\n id: 3,\n label: 'i18n_march',\n maxDays: 31\n },\n {\n id: 4,\n label: 'i18n_april',\n maxDays: 30\n },\n {\n id: 5,\n label: 'i18n_may',\n maxDays: 31\n },\n {\n id: 6,\n label: 'i18n_june',\n maxDays: 30\n },\n {\n id: 7,\n label: 'i18n_july',\n maxDays: 31\n },\n {\n id: 8,\n label: 'i18n_august',\n maxDays: 31\n },\n {\n id: 9,\n label: 'i18n_september',\n maxDays: 30\n },\n {\n id: 10,\n label: 'i18n_october',\n maxDays: 31\n },\n {\n id: 11,\n label: 'i18n_november',\n maxDays: 30\n },\n {\n id: 12,\n label: 'i18n_december',\n maxDays: 31\n }\n ];\n};\n\nconst convertYear = (minYear?: number, maxYear?: number, reverseYear?: boolean) => {\n const listYear = [];\n const minYears = minYear ? minYear : DEFAULT_MIN_YEAR;\n const maxYears = maxYear ? maxYear : DEFAULT_MAX_YEAR;\n\n for (let i = minYears; i <= maxYears; i++) {\n listYear.push({\n id: i,\n label: `${i}`\n });\n }\n if (reverseYear) {\n listYear.reverse();\n }\n\n return listYear;\n}\n\nconst convertDay = (key: any) => {\n if (!key || isNaN(Number(key))) {\n return [];\n }\n const dayDefault = defaultMonths().find(item => Number(item.id) === Number(key));\n\n if (!dayDefault) {\n return [];\n }\n const listDay = [];\n\n for (let i = 1; i <= dayDefault.maxDays; i++) {\n listDay.push({\n id: i,\n label: `${i}`\n });\n }\n\n return listDay;\n}\n","import { Directive, ElementRef, EventEmitter, inject, OnDestroy, OnInit, output, signal } from '@angular/core';\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[LibsUiComponentsDatetimeDropdownDirective]',\n standalone: true\n})\nexport class LibsUiComponentsDatetimeDropdownDirective implements OnInit, OnDestroy {\n private resizeObserver = signal<ResizeObserver | undefined>(undefined);\n private elementRef = inject(ElementRef);\n\n readonly outChangeWidth = output<number>();\n\n ngOnInit() {\n this.resizeObserver.set(new ResizeObserver(entries => {\n for (const entry of entries) {\n if (entry.target === this.elementRef.nativeElement) {\n this.outChangeWidth.emit(entry.contentRect.width);\n }\n }\n }));\n this.resizeObserver()?.observe(this.elementRef.nativeElement);\n }\n\n ngOnDestroy() {\n if (this.resizeObserver()) {\n this.resizeObserver()?.disconnect();\n }\n }\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Pipe, PipeTransform } from \"@angular/core\";\nimport { TYPE_DATE_FORMAT } from \"../interfaces/date-dropdown.interface\";\nimport { buildListDataByTypeDate } from \"../defines/date-dropdown.define\";\n\n@Pipe({\n name: 'LibsUiComponentsDatetimeDropdownBuildListByDateTypePipe',\n standalone: true\n})\n\nexport class LibsUiComponentsDatetimeDropdownBuildListByDateTypePipe implements PipeTransform {\n transform(type: TYPE_DATE_FORMAT, dataYear: { minYear?: number, maxYear?: number, reverseYear?: boolean }, keyMonth: any): Array<{ id: number, label: string }> {\n return buildListDataByTypeDate(type, dataYear, keyMonth);\n }\n} ","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({\n name: 'LibsUiComponentsDatetimeDropdownBuildWidthPipe',\n standalone: true\n})\n\nexport class LibsUiComponentsDatetimeDropdownBuildWidthPipe implements PipeTransform {\n transform(widthByElement: boolean | undefined, widthDropdown: number, first: boolean, multiDate: boolean | undefined): string {\n if (widthByElement) {\n return first ? `${widthDropdown}px` : '100%';\n }\n\n if (multiDate) {\n return first ? `${widthDropdown}px` : '100%';\n }\n\n return `${widthDropdown}px`;\n }\n} ","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, computed, effect, inject, input, output, signal, untracked } from \"@angular/core\";\nimport { IDropdownFunctionControlEvent, IEmitSelectKey, LibsUiComponentsDropdownComponent } from \"@libs-ui/components-dropdown\";\nimport { IListConfigItem } from \"@libs-ui/components-list\";\nimport { IFlagMouse } from \"@libs-ui/components-popover\";\nimport { IHttpRequestConfig } from \"@libs-ui/services-http-request\";\nimport { TranslateModule, TranslateService } from \"@ngx-translate/core\";\nimport { convertGetValue, convertItemSelectedDefine, getConfigHttpRequestDetailDate, getConfigHttpRequestListDate } from \"../../defines/date-dropdown.define\";\nimport { TYPE_DATE_FORMAT } from \"../../interfaces/date-dropdown.interface\";\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-datetime-dropdown-item-child',\n templateUrl: 'child.component.html',\n standalone: true,\n imports: [\n TranslateModule,\n LibsUiComponentsDropdownComponent\n ]\n})\n\nexport class LibsUiComponentsDatetimeDropdownItemChildComponent {\n /* PROPERTY */\n protected httpRequestDetailItemById = signal<IHttpRequestConfig | undefined>(undefined);\n protected listConfig = signal<IListConfigItem>({\n type: 'text',\n configTemplateText: signal({\n fieldKey: 'id',\n autoScrollToItemSelected: true,\n })\n });\n protected textNoSelectDisplay = computed(this.computedTextNoSelectDisplay.bind(this));\n protected usingWidth = computed(this.computedWidth.bind(this));\n\n /* INPUT */\n readonly typeDate = input<TYPE_DATE_FORMAT | undefined>(undefined);\n readonly getItemYearDisplay = input<(year: string) => string>();\n readonly listHasButtonUnSelectOption = input<boolean>();\n readonly readonly = input<boolean, boolean>(false, { transform: (value) => value ?? false });\n readonly disable = input<boolean, boolean>(false, { transform: (value) => value ?? false });\n readonly listData = input<Array<{ id: number, label: string }>>([]);\n readonly showBorderError = input<boolean | undefined>(undefined);\n readonly listMaxItemShow = input<number, number>(6, { transform: (value) => value ?? 6 });\n readonly zIndex = input<number, number>(1000, { transform: (value) => value ?? 1000 });\n readonly classIncludeTextDisplayWhenNoSelect = input<string>('');\n readonly listKeySelected = input<any>();\n readonly widthDropdown = input<number>(136);\n readonly first = input<boolean | undefined>(undefined);\n readonly isError = input<boolean>();\n readonly widthByElement = input<boolean>();\n readonly ignoreConvertYearSelected = input<boolean>();\n readonly listKeysDisable = input<Array<any> | undefined>(undefined);\n readonly validRequired = input<{\n message?: string;\n interpolateParams?: { any: object };\n }>();\n\n /* OUTPUT */\n readonly outSelectedKey = output<any>();\n readonly outFunctionControl = output<IDropdownFunctionControlEvent>();\n readonly outChangStageFlagMouse = output<IFlagMouse>();\n\n /* INJECT */\n private translate = inject(TranslateService);\n\n constructor() {\n effect(() => {\n const listData = this.listData();\n\n untracked(() => {\n this.httpRequestDetailItemById.set(getConfigHttpRequestDetailDate(listData));\n this.listConfig.update(current => {\n if (!current.httpRequestData) {\n current.httpRequestData = signal<IHttpRequestConfig>(getConfigHttpRequestListDate(listData));\n }\n current.httpRequestData.set(getConfigHttpRequestListDate(listData));\n if (!current.configTemplateText) {\n current.configTemplateText = signal({\n fieldKey: 'id',\n autoScrollToItemSelected: true,\n });\n }\n current.configTemplateText.set({\n fieldKey: 'id',\n autoScrollToItemSelected: true,\n getValue: (item: { label: string }) => {\n return convertGetValue(this.typeDate() || 'month', item, this.translate);\n }\n });\n\n return current;\n });\n });\n });\n }\n\n /* FUNCTIONS */\n protected handlerChangeSelectedItem(event?: IEmitSelectKey) {\n if (!event || !event.key) {\n this.outSelectedKey.emit(undefined);\n\n return;\n }\n this.outSelectedKey.emit(event.key);\n }\n\n protected handlerFunctionControl(event: IDropdownFunctionControlEvent) {\n this.outFunctionControl.emit(event);\n }\n\n protected handlerChangFlagMouse(flagMouse: IFlagMouse) {\n this.outChangStageFlagMouse.emit(flagMouse);\n }\n protected convertItemSelected = (item: any) => {\n if (!item || !this.typeDate()) {\n return;\n }\n item.labelDisplay = convertItemSelectedDefine(this.typeDate() ?? 'month', item, this.translate, this.getItemYearDisplay(), this.ignoreConvertYearSelected());\n\n return item;\n };\n private computedTextNoSelectDisplay() {\n switch (this.typeDate()) {\n case 'day':\n return 'i18n_select_day';\n\n case 'month':\n return 'i18n_select_month';\n\n case 'year':\n return 'i18n_select_year';\n\n case 'quarter':\n return 'i18n_select_quarter';\n\n default:\n return 'month';\n }\n }\n\n private computedWidth() {\n if (this.widthByElement()) {\n return this.first() ? `${this.widthDropdown()}px` : '100%';\n }\n\n return `${this.widthDropdown()}px`;\n }\n}"," @if (typeDate()) {\n <div [style.width]=\"usingWidth()\">\n <libs_ui-components-dropdown [listHasButtonUnSelectOption]=\"listHasButtonUnSelectOption()\"\n [readonly]=\"readonly()\"\n [textDisplayWhenNoSelect]=\"textNoSelectDisplay()\"\n [disable]=\"disable()\"\n [showBorderError]=\"showBorderError()\"\n [listMaxItemShow]=\"listMaxItemShow()\"\n [listClickExactly]=\"false\"\n [zIndex]=\"zIndex()\"\n [labelPopoverConfig]=\"{ zIndex: zIndex() +1 }\"\n [listConfig]=\"listConfig()\"\n [listKeysDisable]=\"listKeysDisable()\"\n [convertItemSelected]=\"convertItemSelected\"\n [onlyEmitDataWhenReset]=\"true\"\n [classIncludeTextDisplayWhenNoSelect]=\"classIncludeTextDisplayWhenNoSelect()\"\n [httpRequestDetailItemById]=\"httpRequestDetailItemById()\"\n [listKeySelected]=\"listKeySelected()\"\n (outSelectKey)=\"handlerChangeSelectedItem($event)\"\n (outFunctionsControl)=\"handlerFunctionControl($event)\"\n (outChangStageFlagMouse)=\"handlerChangFlagMouse($event)\" />\n </div>\n }\n @if (isError()) {\n <div class=\"flex items-center mt-[4px]\">\n <span class=\"libs-ui-text-error libs-ui-font-h7r\"\n [innerHtml]=\"(validRequired()?.message || 'i18n_valid_empty_message')| translate:validRequired()?.interpolateParams\"></span>\n </div>\n }\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, effect, input, OnInit, output, signal, untracked, WritableSignal } from \"@angular/core\";\nimport { IDropdownFunctionControlEvent } from \"@libs-ui/components-dropdown\";\nimport { IFlagMouse } from \"@libs-ui/components-popover\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { IDateDropdownDisable, ITypeDate, TYPE_DATE_DROPDOWN_FORMAT, TYPE_DATE_FORMAT } from \"../interfaces/date-dropdown.interface\";\nimport { IEmitSingleDateDropdown } from \"../interfaces/emit-dropdown.interface\";\nimport { IDateDropdownItemFunctionControlEvent } from \"../interfaces/functions-control-event.interface\";\nimport { LibsUiComponentsDatetimeDropdownBuildListByDateTypePipe } from \"../pipes/build-list-by-date-type-.pipe\";\nimport { LibsUiComponentsDatetimeDropdownBuildWidthPipe } from \"../pipes/build-width.pipe\";\nimport { LibsUiComponentsDatetimeDropdownItemChildComponent } from \"./child/child.component\";\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-datetime-dropdown-item',\n templateUrl: 'item.component.html',\n standalone: true,\n imports: [\n TranslateModule,\n LibsUiComponentsDatetimeDropdownItemChildComponent,\n LibsUiComponentsDatetimeDropdownBuildWidthPipe,\n LibsUiComponentsDatetimeDropdownBuildListByDateTypePipe\n ]\n})\n\nexport class LibsUiComponentsDatetimeDropdownItemComponent implements OnInit {\n /* PROPERTY */\n protected typeListDate = signal<Array<WritableSignal<ITypeDate>>>([]);\n protected keyMonthResetDay = signal<any>(undefined);\n protected selectedSingle = signal<IEmitSingleDateDropdown>({});\n protected isError = signal<boolean | undefined>(undefined);\n\n /* INPUT */\n readonly typeDate = input<TYPE_DATE_DROPDOWN_FORMAT | undefined>(undefined);\n readonly disableSecond = input<boolean | undefined>(undefined);\n readonly selectedDate = input<IEmitSingleDateDropdown | undefined>(undefined);\n readonly widthDropdown = input<number, number>(136, { transform: (value) => value ?? 136 });\n readonly widthByElement = input<boolean | undefined>(undefined);\n readonly getItemYearDisplay = input<((year: string) => string) | undefined>(undefined);\n readonly listHasButtonUnSelectOption = input<boolean | undefined>(undefined);\n readonly readonly = input<boolean>(false);\n readonly disable = input<boolean>(false);\n readonly zIndex = input<number, number>(1200, { transform: (value) => value ?? 1200 });\n readonly isMultiple = input<boolean | undefined>(undefined);\n readonly classIncludeTextDisplayWhenNoSelect = input<string | undefined>(undefined);\n readonly isCheckErrorWhenSelectItem = input<boolean | undefined>(undefined);\n readonly maxYear = input<number | undefined>(undefined);\n readonly minYear = input<number | undefined>(undefined);\n readonly reverseYear = input<boolean | undefined, boolean | undefined>(true, { transform: (value) => value ?? true });\n readonly listKeysDisable = input<IDateDropdownDisable | undefined>(undefined);\n readonly ignoreConvertYearSelected = input<boolean | undefined>(undefined);\n readonly validRequired = input<{ message?: string; interpolateParams?: { any: object } } | undefined>(undefined);\n readonly isEmitSelectedDropDown = input<boolean | undefined>(undefined);\n readonly listMaxItemShow = input<{ year?: number; month?: number; quarter?: number; day?: number } | undefined>(undefined);\n\n /* OUTPUT */\n readonly outSelectedData = output<IEmitSingleDateDropdown>();\n readonly outFunctionControl = output<IDateDropdownItemFunctionControlEvent>();\n readonly outChangStageFlagMouse = output<IFlagMouse>();\n\n constructor() {\n effect(() => {\n const typeDate = this.typeDate();\n if (!typeDate) {\n return;\n }\n untracked(() => {\n const data = typeDate.split('-') as Array<TYPE_DATE_FORMAT>;\n\n const results = data.map(item => { return signal({ id: (item || 'month') as TYPE_DATE_FORMAT, keySelected: undefined }) }) || [];\n this.typeListDate.set(results);\n });\n });\n effect(() => {\n const selectedDate = this.selectedDate();\n\n if (!selectedDate) {\n return;\n }\n\n untracked(() => {\n this.selectedSingle.set(selectedDate);\n if (!this.typeListDate().length) {\n return;\n }\n if (this.typeDate() === 'month-day' && selectedDate.month) {\n this.keyMonthResetDay.set(selectedDate.month);\n }\n this.typeListDate().forEach((item, index) => {\n item.update(current => {\n current.keySelected = selectedDate[current.id] ?? undefined;\n if ((this.disableSecond() && index !== 0 && !current.keySelected) || (!selectedDate['month'] && this.typeDate() === 'month-day' && item().id === 'day')) {\n current.disable = true;\n }\n\n return current;\n });\n });\n });\n });\n }\n\n ngOnInit(): void {\n this.outFunctionControl.emit({\n checkIsValid: this.validate.bind(this),\n resetDropdown: this.resetDropdown.bind(this),\n resetError: this.resetError.bind(this),\n setError: this.setError.bind(this)\n });\n }\n\n /* FUNCTIONS */\n protected handlerSelectedKey(event: any, typeDate: WritableSignal<ITypeDate>, i: number) {\n if (this.selectedSingle()[typeDate().id] === event && this.isEmitSelectedDropDown()) {\n this.outSelectedData.emit(this.selectedSingle());\n\n return;\n }\n typeDate.update(current => {\n current.keySelected = event;\n\n return current;\n });\n\n if (this.selectedSingle()) {\n this.selectedSingle.update(current => {\n current[typeDate().id] = event ? Number(event) : undefined;\n\n return current;\n });\n }\n if (this.disableSecond() || (this.typeDate() === 'month-day' && typeDate().id === 'month')) {\n this.keyMonthResetDay.set(event);\n this.typeListDate().forEach(item => {\n item.update(current => {\n current.disable = false;\n\n return current;\n });\n });\n }\n this.typeListDate().forEach((item, index) => {\n if (index === 1 && item().functionControl && i === 0) {\n item().functionControl?.reset();\n }\n });\n if (typeDate().keySelected && !this.isCheckErrorWhenSelectItem()) {\n typeDate.update(current => {\n current.showBorderError = false;\n current.isError = false;\n\n return current;\n });\n this.checkError();\n }\n this.outSelectedData.emit(this.selectedSingle());\n }\n\n protected checkError() {\n if (!this.isError) {\n return;\n }\n let isError = false;\n\n this.typeListDate().forEach(item => {\n if (item().showBorderError) {\n isError = true;\n }\n });\n\n if (!isError) {\n this.isError.set(false);\n }\n }\n\n protected handlerFunctionControl(event: IDropdownFunctionControlEvent, item: WritableSignal<ITypeDate>) {\n item.update(current => {\n current.functionControl = event;\n\n return current;\n });\n }\n\n private async resetDropdown() {\n this.typeListDate().forEach(item => {\n this.selectedSingle.update(current => {\n current[item().id] = undefined;\n\n return current;\n });\n\n item.update(current => {\n current.keySelected = undefined;\n current.functionControl?.reset();\n\n return current;\n });\n });\n this.resetError();\n this.outSelectedData.emit(this.selectedSingle());\n }\n\n private async resetError() {\n this.isError.set(false);\n this.typeListDate().forEach(item => {\n item.update(current => {\n current.isError = false;\n current.showBorderError = false;\n\n return current;\n });\n });\n }\n\n private async setError(error: boolean) {\n this.typeListDate().forEach(item => {\n item.update(current => {\n current.showBorderError = error;\n\n return current;\n });\n });\n }\n\n private async validate() {\n let valid = true;\n\n this.isError.set(false);\n this.typeListDate().forEach((item, index: number) => {\n item.update(current => {\n current.showBorderError = false;\n current.isError = false;\n if (this.selectedSingle() && !this.selectedSingle()[current.id] && !current.disable) {\n valid = false;\n current.showBorderError = true;\n if (index === 0 && this.typeListDate().length === 2) {\n this.isError.set(true);\n }\n if (index === 1 && this.typeListDate().length === 2 && !this.isError()) {\n current.isError = true;\n }\n }\n\n return current;\n });\n });\n\n return valid;\n }\n\n protected handlerChangFlagMouse(flagMouse: IFlagMouse) {\n this.outChangStageFlagMouse.emit(flagMouse);\n }\n}\n","<div class=\"\">\n <div class=\"flex items-start\">\n @if (typeListDate(); as typeListDate) {\n @for (item of typeListDate; track item().id; let last = $last; let i =$index; let first = $first) {\n <div [style.width]=\"widthByElement() | LibsUiComponentsDatetimeDropdownBuildWidthPipe :widthDropdown():first:isMultiple()\"\n [class.mr-[8px]]=\"!last && typeListDate.length ===2\"\n [style.minWidth.px]=\"widthDropdown()\">\n <libs_ui-components-datetime-dropdown-item-child [readonly]=\"readonly()\"\n [typeDate]=\"item().id\"\n [disable]=\"item().disable ?? disable()\"\n [listKeySelected]=\"item().keySelected\"\n [widthByElement]=\"widthByElement()\"\n [first]=\"first\"\n [widthDropdown]=\"widthDropdown()\"\n [listKeysDisable]=\"listKeysDisable()?.[item().id]?.()\"\n [listMaxItemShow]=\"listMaxItemShow()?.[item().id] ?? 6\"\n [isError]=\"item().isError\"\n [listHasButtonUnSelectOption]=\"listHasButtonUnSelectOption()\"\n [zIndex]=\"zIndex()\"\n [showBorderError]=\"item().showBorderError && !item().disable && !disable()\"\n [listData]=\"item().id | LibsUiComponentsDatetimeDropdownBuildListByDateTypePipe :{minYear:minYear(), maxYear:maxYear(), reverseYear:reverseYear()} :keyMonthResetDay()\"\n [classIncludeTextDisplayWhenNoSelect]=\"classIncludeTextDisplayWhenNoSelect() ?? ''\"\n (outSelectedKey)=\"handlerSelectedKey($event, item, i)\"\n (outFunctionControl)=\"handlerFunctionControl($event, item)\"\n (outChangStageFlagMouse)=\"handlerChangFlagMouse($event)\" />\n </div>\n }\n }\n </div>\n\n @if (isError()) {\n <div class=\"flex items-center mt-[4px]\">\n <span class=\"libs-ui-font-h7r libs-ui-text-error\"\n [innerHtml]=\"(validRequired()?.message || 'i18n_valid_empty_message')| translate:validRequired()?.interpolateParams\"></span>\n </div>\n }\n</div>\n","import { AfterViewInit, ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, input, OnInit, output, signal, untracked, viewChild } from \"@angular/core\";\nimport { ILabel, LibsUiComponentsLabelComponent } from \"@libs-ui/components-label\";\nimport { IFlagMouse } from \"@libs-ui/components-popover\";\nimport { TranslateModule, TranslateService } from \"@ngx-translate/core\";\nimport { fromEvent, Subject, takeUntil, timer } from \"rxjs\";\nimport { CompareDate } from \"./defines/date-dropdown.define\";\nimport { LibsUiComponentsDatetimeDropdownDirective } from \"./directive/date-dropdown.directive\";\nimport { IDateDropdownDisableKeys, IFromAndToDateLabel, IHiddenDate, TYPE_DATE_DROPDOWN_FORMAT, TYPE_DATE_FORMAT } from \"./interfaces/date-dropdown.interface\";\nimport { IEmitMultiDateDropdown, IEmitSingleDateDropdown } from \"./interfaces/emit-dropdown.interface\";\nimport { IDateDropdownFunctionControlEvent, IDateDropdownItemFunctionControlEvent } from \"./interfaces/functions-control-event.interface\";\nimport { IValidDateDropdown } from \"./interfaces/valid.interface\";\nimport { LibsUiComponentsDatetimeDropdownItemComponent } from \"./item/item.component\";\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-datetime-dropdown',\n templateUrl: './dropdown.component.html',\n styleUrls: ['./dropdown.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n TranslateModule,\n LibsUiComponentsLabelComponent,\n LibsUiComponentsDatetimeDropdownDirective,\n LibsUiComponentsDatetimeDropdownItemComponent\n ]\n})\n\nexport class LibsUiComponentsDatetimeDropdownComponent implements OnInit, AfterViewInit {\n /* PROPERTY */\n protected width = signal<number>(0);\n protected widthElement = signal<number | undefined>(undefined);\n protected widthLabel = signal<number | undefined>(undefined);\n protected widthLabelFrom = signal<number>(0);\n protected widthLabelTo = signal<number>(0);\n protected isErrorCompareDate = signal<boolean | undefined>(undefined);\n protected chooseDate = signal<IEmitMultiDateDropdown | undefined>({ from: signal({}), to: signal({}) });\n protected isResponsive = signal<boolean | undefined>(undefined);\n protected arrayFormat = computed(() => {\n return this.typeFormat().split('-') as Array<TYPE_DATE_FORMAT>;\n });\n protected changeType = signal<boolean | undefined>(undefined);\n\n private cacheWidthLabel = signal<number | undefined>(undefined);\n private timeOut = signal<number | undefined>(undefined);\n private onDestroy = new Subject<void>();\n private functionsControl = new Map<string, IDateDropdownItemFunctionControlEvent>();\n\n /* INPUT */\n readonly labelConfig = input<ILabel | undefined>(undefined);\n readonly widthDropdown = input<number, number>(136, { transform: (value) => value ?? 136 });\n readonly zIndex = input<number, number>(1200, { transform: (value) => value ?? 1200 });\n readonly maxYear = input<number>(0);\n readonly minYear = input<number>(0);\n readonly minWidth = input<number | undefined>(undefined);\n readonly disable = input<boolean>(false);\n readonly readonly = input<boolean>(false);\n readonly isMultiple = input<boolean>(false);\n readonly reverseYear = input<boolean | undefined>(undefined);\n readonly isBorderError = input<boolean>(false);\n readonly ignoreWidth100 = input<boolean>(false);\n readonly widthByElement = input<boolean>(false);\n readonly disableSecond = input<boolean>(false);\n readonly typeFormat = input<TYPE_DATE_DROPDOWN_FORMAT, TYPE_DATE_DROPDOWN_FORMAT>('month-day', { transform: (value) => value ?? 'month-day' });\n readonly fromAndToDateLabel = input<IFromAndToDateLabel>({ from: 'i18n_label_from', to: 'i18n_to' });\n readonly listHasButtonUnSelectOption = input<boolean>(false);\n readonly selectedDateTime = input<IEmitMultiDateDropdown | undefined>(undefined);\n readonly isEmitAfterChanged = input<boolean>(false); // dùng để emit mỗi lần chọn giá trị và lần đầu init\n readonly getItemYearDisplay = input<(year: string) => string>();\n readonly ignoreFromAndToDateLabel = input<boolean>(false);\n readonly classIncludeTextDisplayWhenNoSelect = input<string | undefined>(undefined);\n readonly hiddenDate = input<IHiddenDate | undefined>();\n readonly listMaxItemShow = input<{ year?: number; month?: number; quarter?: number; day?: number; } | undefined>(undefined);\n readonly ignoreConvertYearSelected = input<boolean>(false);\n readonly listKeysDisable = input<IDateDropdownDisableKeys | undefined>(undefined);\n\n readonly ignoreAllowTimeEqual = input<boolean, boolean>(true, { transform: (value) => value ?? true });\n readonly ignoreValidTimeCompare = input<boolean, boolean>(false, { transform: (value) => value ?? false });\n readonly isCheckErrorWhenSelectItem = input<boolean, boolean>(true, { transform: (value) => value ?? true });\n readonly ignoreRequiredValueSecondWhenNotValidRequired = input<boolean>(false); // có validate giá trị thứ 2 khi validRequired không?\n readonly validRequired = input<IValidDateDropdown>();\n\n /* OUTPUT */\n readonly outFunctionsControl = output<IDateDropdownFunctionControlEvent>();\n readonly outSelectedDropdown = output<IEmitSingleDateDropdown | IEmitMultiDateDropdown>();// dùng cho trường hợp emit mỗi một lần chọn giá trị nên khi sử dụng phải check kĩ undefined\n readonly outChooseMultiDate = output<IEmitMultiDateDropdown>();\n readonly outChooseSingleDate = output<IEmitSingleDateDropdown>();\n readonly outChangStageFlagMouse = output<IFlagMouse>();\n\n /* VIEW CHILD */\n private containerRef = viewChild<ElementRef>('parent');\n private labelFromRef = viewChild<ElementRef>('labelFrom');\n private labelToRef = viewChild<ElementRef>('labelTo');\n\n /* INJECT */\n private translate = inject(TranslateService);\n\n constructor() {\n effect(() => {\n const isMultiple = this.isMultiple();\n\n if (!isMultiple) {\n return;\n }\n\n untracked(() => {\n this.changeType.set(true);\n this.functionsControl.clear();\n timer(0).pipe().subscribe(() => {\n this.checkResponsive();\n this.changeType.set(false);\n });\n });\n });\n }\n\n ngOnInit() {\n this.outFunctionsControl.emit({ checkIsValid: this.validate.bind(this), resetError: this.resetError.bind(this), resetTime: this.resetDropdown.bind(this) });\n if (this.selectedDateTime()) {\n this.chooseDate.set(this.selectedDateTime());\n }\n }\n\n ngAfterViewInit() {\n fromEvent(window, 'resize').pipe(takeUntil(this.onDestroy)).subscribe(this.setWidthDate.bind(this));\n this.widthLabel.set(undefined);\n timer(0).pipe().subscribe(() => {\n this.checkResponsive();\n });\n }\n\n protected checkResponsive() {\n this.isResponsive.set(false);\n const widthElementParent = this.containerRef()?.nativeElement?.getBoundingClientRect().width || 0;\n\n this.widthLabelFrom.set(this.labelFromRef()?.nativeElement?.getBoundingClientRect().width || 0);\n this.widthLabelTo.set(this.labelToRef()?.nativeElement?.getBoundingClientRect().width || 0);\n\n const spaceBetweenDate = (this.arrayFormat().length * 2) + (this.fromAndToDateLabel().from ? 1 : 0);\n const width = (this.widthDropdown() * 4) + (8 * spaceBetweenDate) + this.widthLabelFrom() + this.widthLabelTo();\n\n if (widthElementParent < width) {\n this.isResponsive.set(true);\n }\n }\n\n protected handlerChangeSelectedKey(event: IEmitSingleDateDropdown, type: 'from' | 'to') {\n this.chooseDate.update(current => {\n if (current) {\n current[type].set(event);\n }\n\n return current;\n });\n if (this.isEmitAfterChanged()) {\n const dataEmit = this.isMultiple() ? this.chooseDate() : this.chooseDate()?.from();\n\n if (dataEmit) {\n this.outSelectedDropdown.emit(dataEmit);\n }\n }\n this.applyDate();\n }\n\n private async resetDropdown() {\n this.functionsControl.forEach(control => control.resetDropdown());\n }\n\n private async resetError() {\n this.functionsControl.forEach(control => control.resetError());\n }\n\n private setWidthDate() {\n if (!this.containerRef() || !this.containerRef()?.nativeElement) {\n return;\n }\n timer(0).pipe().subscribe(() => {\n this.checkResponsive();\n });\n }\n\n protected handlerFunctionControl(event: IDateDropdownItemFunctionControlEvent, type: 'from' | 'to') {\n this.functionsControl.set(type, event);\n }\n\n protected async checkValid() {\n let valid = true;\n\n for (const control of this.functionsControl.values()) {\n if (!(await control.checkIsValid())) {\n valid = false;\n }\n }\n if (this.compareDate()) {\n valid = false;\n }\n\n return valid;\n }\n\n private setError(error: boolean) {\n this.functionsControl.forEach(control => control.setError(error));\n }\n\n private compareDate() {\n const type = this.typeFormat().split('-') as Array<TYPE_DATE_FORMAT>;\n const dateCompare: Array<{ from: number | undefined, to: number | undefined }> = [];\n\n type.forEach(item => {\n const from = this.chooseDate()?.from()[item];\n const to = this.chooseDate()?.to()[item];\n\n dateCompare.push({ from: from, to: to });\n });\n if (this.ignoreValidTimeCompare() || !this.checkCondition(true)) {\n this.isErrorCompareDate.set(false);\n\n return false;\n }\n if (CompareDate(dateCompare, this.ignoreAllowTimeEqual())) {\n this.setError(true);\n this.isErrorCompareDate.set(true);\n\n return true;\n }\n this.isErrorCompareDate.set(false);\n\n return false;\n }\n\n private async validate() {\n let valid = true;\n\n if (!this.validRequired()) {\n if (!this.checkCondition(false) && !this.ignoreRequiredValueSecondWhenNotValidRequired()) {\n valid = await this.checkValid();\n }\n\n return valid;\n }\n\n return await this.checkValid();\n }\n\n private checkCondition(hasValue: boolean) {\n let checkValue = true;\n const type = this.typeFormat().split('-') as Array<TYPE_DATE_FORMAT>;\n\n type.forEach(item => {\n if (hasValue && (!this.chooseDate()?.from()[item] || !this.chooseDate()?.to()[item])) {\n checkValue = false;\n }\n if (!hasValue && (this.chooseDate()?.from()[item] || this.chooseDate()?.to()[item])) {\n checkValue = false;\n }\n });\n\n return checkValue;\n }\n\n protected applyDate() {\n this.setError(false);\n this.isErrorCompareDate.set(false);\n if (this.isCheckErrorWhenSelectItem() && !this.validate()) {\n return;\n }\n const from = this.chooseDate()?.from;\n const to = this.chooseDate()?.to;\n\n if (this.isMultiple()) {\n if (this.compareDate()) {\n return;\n }\n let dataSelected: IEmitMultiDateDropdown | undefined = { from: signal({}), to: signal({}) };\n\n this.arrayFormat().forEach(key => {\n if (!from?.()?.[key] || !to?.()?.[key]) {\n dataSelected = undefined;\n }\n if (dataSelected) {\n dataSelected.from.update(current => {\n current[key] = Number(from?.()[key]);\n\n return current;\n });\n dataSelected.to.update(current => {\n current[key] = Number(to?.()[key]);\n\n return current;\n });\n }\n });\n\n if (dataSelected) {\n this.outChooseMultiDate.emit(dataSelected);\n }\n\n return;\n }\n let dataSelected: IEmitSingleDateDropdown | undefined = {};\n\n this.arrayFormat().forEach(key => {\n if (!from?.()?.[key]) {\n dataSelected = undefined;\n }\n if (dataSelected) {\n dataSelected[key] = Number(from?.()?.[key])\n }\n });\n if (dataSelected) {\n this.outChooseSingleDate.emit(dataSelected);\n }\n }\n\n protected handlerChangeWidthLabel(width: number) {\n this.cacheWidthLabel.set(width < (this.cacheWidthLabel() || 0) ? this.cacheWidthLabel() : Math.ceil(width));\n if (this.timeOut()) {\n clearTimeout(this.timeOut());\n }\n this.timeOut.set((setTimeout(() => {\n this.widthLabel.set(this.cacheWidthLabel());\n }, 100) as unknown) as number);\n }\n\n protected handlerChangStageFlagMouse(flagMouse: IFlagMouse) {\n this.outChangStageFlagMouse.emit(flagMouse);\n }\n}","@if (labelConfig(); as labelConfig) {\n <libs_ui-components-label [classInclude]=\"labelConfig.classInclude\"\n [labelLeft]=\"labelConfig.labelLeft\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [required]=\"labelConfig.required \"\n [description]=\"labelConfig.description\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [buttonsRight]=\"labelConfig.buttonsRight\"\n [buttonsDescription]=\"labelConfig.buttonsDescription\"\n [descriptionClass]=\"labelConfig.descriptionClass\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft\"\n [disableButtonsRight]=\"labelConfig.disableButtonsRight\"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleDisable]=\"labelConfig.toggleDisable || disable()\"\n [popover]=\"labelConfig.popover\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [limitLength]=\"labelConfig.limitLength\"\n [count]=\"labelConfig.count\" />\n}\n<div #parent\n class=\"flex items-start\"\n [class.!w-full]=\"widthByElement()\"\n [class.!column]=\"isResponsive() && isMultiple()\">\n <div #childFrom\n class=\"flex items-start\"\n [class.w-[50%]]=\"widthByElement() && !isResponsive()\"\n [class.!mb-[8px]]=\"isResponsive() && isMultiple()\"\n [class.!mr-[8px]]=\"!isResponsive() && isMultiple()\"\n [class.w-full]=\"!isMultiple() && !widthByElement() || isResponsive()\"\n [style.width.px]=\"!widthByElement() && isMultiple() && !isResponsive() ?((widthDropdown() * arrayFormat().length)+(8 * arrayFormat().length) + widthLabelFrom()):undefined\">\n\n @if (isMultiple() && !ignoreFromAndToDateLabel() && fromAndToDateLabel().from) {\n <div class=\"mr-[8px] flex-shrink-0 h-[32px] flex items-center\"\n [style.width.px]=\"isResponsive() ? (widthLabel() || undefined) : undefined\">\n <span #labelFrom\n LibsUiComponentsDatetimeDropdownDirective\n [class.!opacity-[0.5]]=\"disable()\"\n class=\"libs-ui-font-h5r text-nowrap {{ fromAndToDateLabel().classLabelFrom || '' }}\"\n (outChangeWidth)=\"handlerChangeWidthLabel($event)\">\n {{ (fromAndToDateLabel().from||' ')| translate }}\n </span>\n </div>\n }\n <div class=\"flex\"\n [class.!w-full]=\"widthByElement()\">\n @if (!changeType()) {\n <libs_ui-components-datetime-dropdown-item [class.!w-full]=\"widthByElement()\"\n [disableSecond]=\"disableSecond()\"\n [typeDate]=\"typeFormat()\"\n [zIndex]=\"zIndex()\"\n [maxYear]=\"maxYear()\"\n [disable]=\"disable()\"\n [minYear]=\"minYear()\"\n [readonly]=\"readonly()\"\n [isMultiple]=\"isMultiple() ? isResponsive() ? true : false : true\"\n [reverseYear]=\"reverseYear()\"\n [selectedDate]=\"selectedDateTime()?.from() || {}\"\n [widthDropdown]=\"widthDropdown()\"\n [widthByElement]=\"widthByElement()\"\n [getItemYearDisplay]=\"getItemYearDisplay()\"\n [listMaxItemShow]=\"listMaxItemShow()\"\n [listKeysDisable]=\"listKeysDisable()?.from()\"\n [listHasButtonUnSelectOption]=\"listHasButtonUnSelectOption()\"\n [isEmitSelectedDropDown]=\"isEmitAfterChanged()\"\n [classIncludeTextDisplayWhenNoSelect]=\"'libs-ui-font-h5r ' + classIncludeTextDisplayWhenNoSelect()\"\n (outSelectedData)=\"handlerChangeSelectedKey($event, 'from')\"\n (outFunctionControl)=\"handlerFunctionControl($event,'from')\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\" />\n }\n </div>\n </div>\n @if (isMultiple()) {\n <div #childTo\n [class.!w-[50%]]=\"widthByElement()\"\n [class.!w-full]=\" !widthByElement() || isResponsive()\"\n class=\"flex items-start\">\n <div class=\"mr-[8px] h-[32px] flex-shrink-0 flex items-center\"\n [style.width.px]=\"isResponsive() ? widthLabel() : undefined\">\n @if (!ignoreFromAndToDateLabel()) {\n <span #labelTo\n LibsUiComponentsDatetimeDropdownDirective\n [class.!opacity-[0.5]]=\"disable()\"\n class=\"libs-ui-font-h5r text-nowrap {{ fromAndToDateLabel().classLabelTo || '' }}\"\n (outChangeWidth)=\"handlerChangeWidthLabel($event)\">\n {{ (fromAndToDateLabel().to||' ')| translate }}\n </span>\n }\n @if (ignoreFromAndToDateLabel()) {\n <span [class.!opacity-[0.5]]=\"disable()\"\n class=\"libs-ui-font-h5r\">-</span>\n }\n </div>\n <div class=\"flex\"\n [class.!w-full]=\"widthByElement()\">\n @if (!changeType()) {\n <libs_ui-components-datetime-dropdown-item [class.w-full]=\"widthByElement()\"\n [disableSecond]=\"disableSecond()\"\n [typeDate]=\"typeFormat()\"\n [zIndex]=\"zIndex()\"\n [maxYear]=\"maxYear()\"\n [disable]=\"disable()\"\n [minYear]=\"minYear()\"\n [readonly]=\"readonly()\"\n [isMultiple]=\"isMultiple()\"\n [reverseYear]=\"reverseYear()\"\n [selectedDate]=\"selectedDateTime()?.to() || {}\"\n [widthDropdown]=\"widthDropdown()\"\n [widthByElement]=\"widthByElement()\"\n [getItemYearDisplay]=\"getItemYearDisplay()\"\n [listMaxItemShow]=\"listMaxItemShow()\"\n [listKeysDisable]=\"listKeysDisable()?.to()\"\n [listHasButtonUnSelectOption]=\"listHasButtonUnSelectOption()\"\n [classIncludeTextDisplayWhenNoSelect]=\"'libs-ui-font-h5r ' + classIncludeTextDisplayWhenNoSelect\"\n [isEmitSelectedDropDown]=\"isEmitAfterChanged()\"\n (outSelectedData)=\"handlerChangeSelectedKey($event, 'to')\"\n (outFunctionControl)=\"handlerFunctionControl($event,'to')\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\" />\n }\n </div>\n </div>\n }\n</div>\n\n@if (isErrorCompareDate()) {\n <div class=\"flex items-center mt-[4px]\">\n <span class=\"libs-ui-message-error libs-ui-font-h7r libs-ui-text-error\">{{ validRequired()?.messageValidCompareTime || \"i18n_invalid_end_date_selected\" | translate:validRequired()?.interpolateParamsCompareTime }}</span>\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"libs-ui-components-datetime-dropdown.mjs","sources":["../../../../../../libs-ui/components/datetime/dropdown/src/defines/date-dropdown.define.ts","../../../../../../libs-ui/components/datetime/dropdown/src/directive/date-dropdown.directive.ts","../../../../../../libs-ui/components/datetime/dropdown/src/pipes/build-list-by-date-type-.pipe.ts","../../../../../../libs-ui/components/datetime/dropdown/src/pipes/build-width.pipe.ts","../../../../../../libs-ui/components/datetime/dropdown/src/item/child/child.component.ts","../../../../../../libs-ui/components/datetime/dropdown/src/item/child/child.component.html","../../../../../../libs-ui/components/datetime/dropdown/src/item/item.component.ts","../../../../../../libs-ui/components/datetime/dropdown/src/item/item.component.html","../../../../../../libs-ui/components/datetime/dropdown/src/dropdown.component.ts","../../../../../../libs-ui/components/datetime/dropdown/src/dropdown.component.html","../../../../../../libs-ui/components/datetime/dropdown/src/libs-ui-components-datetime-dropdown.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { TYPE_DATE_FORMAT, TYPE_DROPDOWN_MONTH_ID } from \"../interfaces/date-dropdown.interface\";\nimport { IHttpRequestConfig, returnDetailObject, returnListObject } from \"@libs-ui/services-http-request\";\nimport { UtilsHttpParamsRequest } from \"@libs-ui/utils\";\nimport { DEFAULT_MAX_YEAR, DEFAULT_MIN_YEAR } from \"@libs-ui/components-datetime-picker\";\n\nexport const convertGetValue = (type: TYPE_DATE_FORMAT, item: { label: string }, translate: TranslateService) => {\n switch (type) {\n case 'day':\n return translate.instant('i18n_day_param', { day: item.label });\n\n case 'month':\n return translate.instant(item.label || ' ', { year: '' });\n\n case 'year':\n return translate.instant('i18n_year_param', { year: item.label });\n\n case 'quarter':\n return translate.instant('i18n_quarter', { quarter: item.label });\n }\n};\n\nexport const convertItemSelectedDefine = (type: TYPE_DATE_FORMAT, item: { id: number, label: string, labelDisplay: string }, translate: TranslateService, getItemYearDisplay?: (label: string) => void, ignoreConvertYearSelected?: boolean) => {\n switch (type) {\n case 'day':\n return translate.instant('i18n_day_param', { day: item.label });\n\n case 'month':\n return translate.instant(item.label || ' ', { year: '' });\n\n case 'year':\n {\n let labelDisplay = ignoreConvertYearSelected ? item.label : translate.instant('i18n_year_param', { year: item.label });\n\n if (getItemYearDisplay) {\n labelDisplay = getItemYearDisplay(item.label);\n }\n\n return labelDisplay;\n }\n\n case 'quarter':\n return translate.instant('i18n_quarter', { quarter: item.label });\n }\n};\n\n\nexport const LIST_MONTHS_DEFAULT = (): Array<{ id: number, label: string }> => {\n return [\n {\n id: 1,\n label: 'i18n_january',\n },\n {\n id: 2,\n label: 'i18n_february',\n },\n {\n id: 3,\n label: 'i18n_march',\n },\n {\n id: 4,\n label: 'i18n_april',\n },\n {\n id: 5,\n label: 'i18n_may',\n },\n {\n id: 6,\n label: 'i18n_june',\n },\n {\n id: 7,\n label: 'i18n_july',\n },\n {\n id: 8,\n label: 'i18n_august',\n },\n {\n id: 9,\n label: 'i18n_september',\n },\n {\n id: 10,\n label: 'i18n_october',\n },\n {\n id: 11,\n label: 'i18n_november',\n },\n {\n id: 12,\n label: 'i18n_december',\n }\n ];\n};\n\nexport const CompareDate = (dateCompare: Array<{ from: number | undefined, to: number | undefined }>, ignoreAllowTimeSame: boolean): boolean => {\n const dateNumberOne = dateCompare[0];\n\n if (dateCompare.length === 2) {\n const dateNumberTow = dateCompare[1];\n\n if (!dateNumberOne.from || !dateNumberOne.to || !dateNumberTow.from || !dateNumberTow.to) {\n return false;\n }\n if (ignoreAllowTimeSame ? dateNumberOne.from > dateNumberOne.to : dateNumberOne.from >= dateNumberOne.to) {\n return true;\n }\n if (dateNumberOne.from === dateNumberOne.to && (ignoreAllowTimeSame ? dateNumberTow.from > dateNumberTow.to : dateNumberTow.from >= dateNumberTow.to)) {\n return true;\n }\n\n return false;\n }\n\n if (!dateNumberOne.from || !dateNumberOne.to) {\n return false;\n }\n if (ignoreAllowTimeSame ? dateNumberOne.from > dateNumberOne.to : dateNumberOne.from >= dateNumberOne.to) {\n return true;\n }\n\n return false;\n};\n\nexport const getConfigHttpRequestDetailDate = (data: Array<{ id: number, label: string }>): IHttpRequestConfig => {\n return {\n serviceOther: returnDetailObject(new UtilsHttpParamsRequest({ fromObject: { fieldKey: 'id' } }), data),\n functionName: 'detailByData',\n argumentsValue: [],\n guideAutoUpdateArgumentsValue: {\n paging: {},\n detailById: {\n subFieldUpdate: 'id',\n fieldUpdate: '[0]',\n fieldGetValue: ''\n }\n }\n };\n};\n\nexport const getConfigHttpRequestListDate = (data: Array<{ id: number, label: string }>): IHttpRequestConfig => {\n return {\n serviceOther: returnListObject(data),\n functionName: 'list',\n argumentsValue: []\n };\n};\n\nexport const buildListDataByTypeDate = (type: TYPE_DATE_FORMAT, dataYear: { minYear?: number, maxYear?: number, reverseYear?: boolean }, keyMonth: any): Array<{ id: number, label: string }> => {\n switch (type) {\n case 'day':\n return convertDay(keyMonth);\n\n case 'month':\n return LIST_MONTHS_DEFAULT();\n\n case 'year':\n return convertYear(dataYear.minYear, dataYear.maxYear, dataYear.reverseYear);\n\n case 'quarter':\n {\n const listQuarter = [];\n\n for (let i = 1; i <= 4; i++) {\n listQuarter.push({\n id: i,\n label: `${i}`\n });\n }\n\n return listQuarter;\n }\n }\n};\n\nexport const defaultMonths = (): Array<{ id: TYPE_DROPDOWN_MONTH_ID, label: string, maxDays: number }> => {\n return [\n {\n id: 1,\n label: 'i18n_january',\n maxDays: 31\n },\n {\n id: 2,\n label: 'i18n_february',\n maxDays: 29\n },\n {\n id: 3,\n label: 'i18n_march',\n maxDays: 31\n },\n {\n id: 4,\n label: 'i18n_april',\n maxDays: 30\n },\n {\n id: 5,\n label: 'i18n_may',\n maxDays: 31\n },\n {\n id: 6,\n label: 'i18n_june',\n maxDays: 30\n },\n {\n id: 7,\n label: 'i18n_july',\n maxDays: 31\n },\n {\n id: 8,\n label: 'i18n_august',\n maxDays: 31\n },\n {\n id: 9,\n label: 'i18n_september',\n maxDays: 30\n },\n {\n id: 10,\n label: 'i18n_october',\n maxDays: 31\n },\n {\n id: 11,\n label: 'i18n_november',\n maxDays: 30\n },\n {\n id: 12,\n label: 'i18n_december',\n maxDays: 31\n }\n ];\n};\n\nconst convertYear = (minYear?: number, maxYear?: number, reverseYear?: boolean) => {\n const listYear = [];\n const minYears = minYear ? minYear : DEFAULT_MIN_YEAR;\n const maxYears = maxYear ? maxYear : DEFAULT_MAX_YEAR;\n\n for (let i = minYears; i <= maxYears; i++) {\n listYear.push({\n id: i,\n label: `${i}`\n });\n }\n if (reverseYear) {\n listYear.reverse();\n }\n\n return listYear;\n}\n\nconst convertDay = (key: any) => {\n if (!key || isNaN(Number(key))) {\n return [];\n }\n const dayDefault = defaultMonths().find(item => Number(item.id) === Number(key));\n\n if (!dayDefault) {\n return [];\n }\n const listDay = [];\n\n for (let i = 1; i <= dayDefault.maxDays; i++) {\n listDay.push({\n id: i,\n label: `${i}`\n });\n }\n\n return listDay;\n}\n","import { Directive, ElementRef, EventEmitter, inject, OnDestroy, OnInit, output, signal } from '@angular/core';\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[LibsUiComponentsDatetimeDropdownDirective]',\n standalone: true\n})\nexport class LibsUiComponentsDatetimeDropdownDirective implements OnInit, OnDestroy {\n private resizeObserver = signal<ResizeObserver | undefined>(undefined);\n private elementRef = inject(ElementRef);\n\n readonly outChangeWidth = output<number>();\n\n ngOnInit() {\n this.resizeObserver.set(new ResizeObserver(entries => {\n for (const entry of entries) {\n if (entry.target === this.elementRef.nativeElement) {\n this.outChangeWidth.emit(entry.contentRect.width);\n }\n }\n }));\n this.resizeObserver()?.observe(this.elementRef.nativeElement);\n }\n\n ngOnDestroy() {\n if (this.resizeObserver()) {\n this.resizeObserver()?.disconnect();\n }\n }\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Pipe, PipeTransform } from \"@angular/core\";\nimport { TYPE_DATE_FORMAT } from \"../interfaces/date-dropdown.interface\";\nimport { buildListDataByTypeDate } from \"../defines/date-dropdown.define\";\n\n@Pipe({\n name: 'LibsUiComponentsDatetimeDropdownBuildListByDateTypePipe',\n standalone: true\n})\n\nexport class LibsUiComponentsDatetimeDropdownBuildListByDateTypePipe implements PipeTransform {\n transform(type: TYPE_DATE_FORMAT, dataYear: { minYear?: number, maxYear?: number, reverseYear?: boolean }, keyMonth: any): Array<{ id: number, label: string }> {\n return buildListDataByTypeDate(type, dataYear, keyMonth);\n }\n} ","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({\n name: 'LibsUiComponentsDatetimeDropdownBuildWidthPipe',\n standalone: true\n})\n\nexport class LibsUiComponentsDatetimeDropdownBuildWidthPipe implements PipeTransform {\n transform(widthByElement: boolean | undefined, widthDropdown: number, first: boolean, multiDate: boolean | undefined): string {\n if (widthByElement) {\n return first ? `${widthDropdown}px` : '100%';\n }\n\n if (multiDate) {\n return first ? `${widthDropdown}px` : '100%';\n }\n\n return `${widthDropdown}px`;\n }\n} ","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, computed, effect, inject, input, output, signal, untracked } from \"@angular/core\";\nimport { IDropdownFunctionControlEvent, IEmitSelectKey, LibsUiComponentsDropdownComponent } from \"@libs-ui/components-dropdown\";\nimport { IListConfigItem } from \"@libs-ui/components-list\";\nimport { IFlagMouse } from \"@libs-ui/components-popover\";\nimport { IHttpRequestConfig } from \"@libs-ui/services-http-request\";\nimport { TranslateModule, TranslateService } from \"@ngx-translate/core\";\nimport { convertGetValue, convertItemSelectedDefine, getConfigHttpRequestDetailDate, getConfigHttpRequestListDate } from \"../../defines/date-dropdown.define\";\nimport { TYPE_DATE_FORMAT } from \"../../interfaces/date-dropdown.interface\";\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-datetime-dropdown-item-child',\n templateUrl: 'child.component.html',\n standalone: true,\n imports: [\n TranslateModule,\n LibsUiComponentsDropdownComponent\n ]\n})\n\nexport class LibsUiComponentsDatetimeDropdownItemChildComponent {\n // #region PROPERTY\n protected httpRequestDetailItemById = signal<IHttpRequestConfig | undefined>(undefined);\n protected listConfig = signal<IListConfigItem>({\n type: 'text',\n configTemplateText: signal({\n fieldKey: 'id',\n autoScrollToItemSelected: true,\n })\n });\n protected textNoSelectDisplay = computed(this.computedTextNoSelectDisplay.bind(this));\n protected usingWidth = computed(this.computedWidth.bind(this));\n\n // #region INPUT\n readonly typeDate = input<TYPE_DATE_FORMAT | undefined>(undefined);\n readonly getItemYearDisplay = input<(year: string) => string>();\n readonly listHasButtonUnSelectOption = input<boolean>();\n readonly readonly = input<boolean, boolean>(false, { transform: (value) => value ?? false });\n readonly disable = input<boolean, boolean>(false, { transform: (value) => value ?? false });\n readonly listData = input<Array<{ id: number, label: string }>>([]);\n readonly showBorderError = input<boolean | undefined>(undefined);\n readonly listMaxItemShow = input<number, number>(6, { transform: (value) => value ?? 6 });\n readonly zIndex = input<number, number>(1000, { transform: (value) => value ?? 1000 });\n readonly classIncludeTextDisplayWhenNoSelect = input<string>('');\n readonly listKeySelected = input<any>();\n readonly widthDropdown = input<number>(136);\n readonly first = input<boolean | undefined>(undefined);\n readonly isError = input<boolean>();\n readonly widthByElement = input<boolean>();\n readonly ignoreConvertYearSelected = input<boolean>();\n readonly listKeysDisable = input<Array<any> | undefined>(undefined);\n readonly validRequired = input<{\n message?: string;\n interpolateParams?: { any: object };\n }>();\n\n // #region OUTPUT\n readonly outSelectedKey = output<any>();\n readonly outFunctionControl = output<IDropdownFunctionControlEvent>();\n readonly outChangStageFlagMouse = output<IFlagMouse>();\n\n // #region INJECT\n private translate = inject(TranslateService);\n\n constructor() {\n effect(() => {\n const listData = this.listData();\n\n untracked(() => {\n this.httpRequestDetailItemById.set(getConfigHttpRequestDetailDate(listData));\n this.listConfig.update(current => {\n if (!current.httpRequestData) {\n current.httpRequestData = signal<IHttpRequestConfig>(getConfigHttpRequestListDate(listData));\n }\n current.httpRequestData.set(getConfigHttpRequestListDate(listData));\n if (!current.configTemplateText) {\n current.configTemplateText = signal({\n fieldKey: 'id',\n autoScrollToItemSelected: true,\n });\n }\n current.configTemplateText.set({\n fieldKey: 'id',\n autoScrollToItemSelected: true,\n getValue: (item: { label: string }) => {\n return convertGetValue(this.typeDate() || 'month', item, this.translate);\n }\n });\n\n return current;\n });\n });\n });\n }\n\n /* FUNCTIONS */\n protected handlerChangeSelectedItem(event?: IEmitSelectKey) {\n if (!event || !event.key) {\n this.outSelectedKey.emit(undefined);\n\n return;\n }\n this.outSelectedKey.emit(event.key);\n }\n\n protected handlerFunctionControl(event: IDropdownFunctionControlEvent) {\n this.outFunctionControl.emit(event);\n }\n\n protected handlerChangFlagMouse(flagMouse: IFlagMouse) {\n this.outChangStageFlagMouse.emit(flagMouse);\n }\n protected convertItemSelected = (item: any) => {\n if (!item || !this.typeDate()) {\n return;\n }\n item.labelDisplay = convertItemSelectedDefine(this.typeDate() ?? 'month', item, this.translate, this.getItemYearDisplay(), this.ignoreConvertYearSelected());\n\n return item;\n };\n private computedTextNoSelectDisplay() {\n switch (this.typeDate()) {\n case 'day':\n return 'i18n_select_day';\n\n case 'month':\n return 'i18n_select_month';\n\n case 'year':\n return 'i18n_select_year';\n\n case 'quarter':\n return 'i18n_select_quarter';\n\n default:\n return 'month';\n }\n }\n\n private computedWidth() {\n if (this.widthByElement()) {\n return this.first() ? `${this.widthDropdown()}px` : '100%';\n }\n\n return `${this.widthDropdown()}px`;\n }\n}"," @if (typeDate()) {\n <div [style.width]=\"usingWidth()\">\n <libs_ui-components-dropdown [listHasButtonUnSelectOption]=\"listHasButtonUnSelectOption()\"\n [readonly]=\"readonly()\"\n [textDisplayWhenNoSelect]=\"textNoSelectDisplay()\"\n [disable]=\"disable()\"\n [showBorderError]=\"showBorderError()\"\n [listMaxItemShow]=\"listMaxItemShow()\"\n [listClickExactly]=\"false\"\n [zIndex]=\"zIndex()\"\n [labelPopoverConfig]=\"{ zIndex: zIndex() +1 }\"\n [listConfig]=\"listConfig()\"\n [listKeysDisable]=\"listKeysDisable()\"\n [convertItemSelected]=\"convertItemSelected\"\n [onlyEmitDataWhenReset]=\"true\"\n [classIncludeTextDisplayWhenNoSelect]=\"classIncludeTextDisplayWhenNoSelect()\"\n [httpRequestDetailItemById]=\"httpRequestDetailItemById()\"\n [listKeySelected]=\"listKeySelected()\"\n (outSelectKey)=\"handlerChangeSelectedItem($event)\"\n (outFunctionsControl)=\"handlerFunctionControl($event)\"\n (outChangStageFlagMouse)=\"handlerChangFlagMouse($event)\" />\n </div>\n }\n @if (isError()) {\n <div class=\"flex items-center mt-[4px]\">\n <span class=\"libs-ui-text-error libs-ui-font-h7r\"\n [innerHtml]=\"(validRequired()?.message || 'i18n_valid_empty_message')| translate:validRequired()?.interpolateParams\"></span>\n </div>\n }\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, effect, input, OnInit, output, signal, untracked, WritableSignal } from \"@angular/core\";\nimport { IDropdownFunctionControlEvent } from \"@libs-ui/components-dropdown\";\nimport { IFlagMouse } from \"@libs-ui/components-popover\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { IDateDropdownDisable, ITypeDate, TYPE_DATE_DROPDOWN_FORMAT, TYPE_DATE_FORMAT } from \"../interfaces/date-dropdown.interface\";\nimport { IEmitSingleDateDropdown } from \"../interfaces/emit-dropdown.interface\";\nimport { IDateDropdownItemFunctionControlEvent } from \"../interfaces/functions-control-event.interface\";\nimport { LibsUiComponentsDatetimeDropdownBuildListByDateTypePipe } from \"../pipes/build-list-by-date-type-.pipe\";\nimport { LibsUiComponentsDatetimeDropdownBuildWidthPipe } from \"../pipes/build-width.pipe\";\nimport { LibsUiComponentsDatetimeDropdownItemChildComponent } from \"./child/child.component\";\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-datetime-dropdown-item',\n templateUrl: 'item.component.html',\n standalone: true,\n imports: [\n TranslateModule,\n LibsUiComponentsDatetimeDropdownItemChildComponent,\n LibsUiComponentsDatetimeDropdownBuildWidthPipe,\n LibsUiComponentsDatetimeDropdownBuildListByDateTypePipe\n ]\n})\n\nexport class LibsUiComponentsDatetimeDropdownItemComponent implements OnInit {\n // #region PROPERTY\n protected typeListDate = signal<Array<WritableSignal<ITypeDate>>>([]);\n protected keyMonthResetDay = signal<any>(undefined);\n protected selectedSingle = signal<IEmitSingleDateDropdown>({});\n protected isError = signal<boolean | undefined>(undefined);\n\n // #region INPUT\n readonly typeDate = input<TYPE_DATE_DROPDOWN_FORMAT | undefined>(undefined);\n readonly disableSecond = input<boolean | undefined>(undefined);\n readonly selectedDate = input<IEmitSingleDateDropdown | undefined>(undefined);\n readonly widthDropdown = input<number, number>(136, { transform: (value) => value ?? 136 });\n readonly widthByElement = input<boolean | undefined>(undefined);\n readonly getItemYearDisplay = input<((year: string) => string) | undefined>(undefined);\n readonly listHasButtonUnSelectOption = input<boolean | undefined>(undefined);\n readonly readonly = input<boolean>(false);\n readonly disable = input<boolean>(false);\n readonly zIndex = input<number, number>(1200, { transform: (value) => value ?? 1200 });\n readonly isMultiple = input<boolean | undefined>(undefined);\n readonly classIncludeTextDisplayWhenNoSelect = input<string | undefined>(undefined);\n readonly isCheckErrorWhenSelectItem = input<boolean | undefined>(undefined);\n readonly maxYear = input<number | undefined>(undefined);\n readonly minYear = input<number | undefined>(undefined);\n readonly reverseYear = input<boolean | undefined, boolean | undefined>(true, { transform: (value) => value ?? true });\n readonly listKeysDisable = input<IDateDropdownDisable | undefined>(undefined);\n readonly ignoreConvertYearSelected = input<boolean | undefined>(undefined);\n readonly validRequired = input<{ message?: string; interpolateParams?: { any: object } } | undefined>(undefined);\n readonly isEmitSelectedDropDown = input<boolean | undefined>(undefined);\n readonly listMaxItemShow = input<{ year?: number; month?: number; quarter?: number; day?: number } | undefined>(undefined);\n\n // #region OUTPUT\n readonly outSelectedData = output<IEmitSingleDateDropdown>();\n readonly outFunctionControl = output<IDateDropdownItemFunctionControlEvent>();\n readonly outChangStageFlagMouse = output<IFlagMouse>();\n\n constructor() {\n effect(() => {\n const typeDate = this.typeDate();\n if (!typeDate) {\n return;\n }\n untracked(() => {\n const data = typeDate.split('-') as Array<TYPE_DATE_FORMAT>;\n\n const results = data.map(item => { return signal({ id: (item || 'month') as TYPE_DATE_FORMAT, keySelected: undefined }) }) || [];\n this.typeListDate.set(results);\n });\n });\n effect(() => {\n const selectedDate = this.selectedDate();\n\n if (!selectedDate) {\n return;\n }\n\n untracked(() => {\n this.selectedSingle.set(selectedDate);\n if (!this.typeListDate().length) {\n return;\n }\n if (this.typeDate() === 'month-day' && selectedDate.month) {\n this.keyMonthResetDay.set(selectedDate.month);\n }\n this.typeListDate().forEach((item, index) => {\n item.update(current => {\n current.keySelected = selectedDate[current.id] ?? undefined;\n if ((this.disableSecond() && index !== 0 && !current.keySelected) || (!selectedDate['month'] && this.typeDate() === 'month-day' && item().id === 'day')) {\n current.disable = true;\n }\n\n return current;\n });\n });\n });\n });\n }\n\n ngOnInit(): void {\n this.outFunctionControl.emit({\n checkIsValid: this.validate.bind(this),\n resetDropdown: this.resetDropdown.bind(this),\n resetError: this.resetError.bind(this),\n setError: this.setError.bind(this)\n });\n }\n\n /* FUNCTIONS */\n protected handlerSelectedKey(event: any, typeDate: WritableSignal<ITypeDate>, i: number) {\n if (this.selectedSingle()[typeDate().id] === event && this.isEmitSelectedDropDown()) {\n this.outSelectedData.emit(this.selectedSingle());\n\n return;\n }\n typeDate.update(current => {\n current.keySelected = event;\n\n return current;\n });\n\n if (this.selectedSingle()) {\n this.selectedSingle.update(current => {\n current[typeDate().id] = event ? Number(event) : undefined;\n\n return current;\n });\n }\n if (this.disableSecond() || (this.typeDate() === 'month-day' && typeDate().id === 'month')) {\n this.keyMonthResetDay.set(event);\n this.typeListDate().forEach(item => {\n item.update(current => {\n current.disable = false;\n\n return current;\n });\n });\n }\n this.typeListDate().forEach((item, index) => {\n if (index === 1 && item().functionControl && i === 0) {\n item().functionControl?.reset();\n }\n });\n if (typeDate().keySelected && !this.isCheckErrorWhenSelectItem()) {\n typeDate.update(current => {\n current.showBorderError = false;\n current.isError = false;\n\n return current;\n });\n this.checkError();\n }\n this.outSelectedData.emit(this.selectedSingle());\n }\n\n protected checkError() {\n if (!this.isError) {\n return;\n }\n let isError = false;\n\n this.typeListDate().forEach(item => {\n if (item().showBorderError) {\n isError = true;\n }\n });\n\n if (!isError) {\n this.isError.set(false);\n }\n }\n\n protected handlerFunctionControl(event: IDropdownFunctionControlEvent, item: WritableSignal<ITypeDate>) {\n item.update(current => {\n current.functionControl = event;\n\n return current;\n });\n }\n\n private async resetDropdown() {\n this.typeListDate().forEach(item => {\n this.selectedSingle.update(current => {\n current[item().id] = undefined;\n\n return current;\n });\n\n item.update(current => {\n current.keySelected = undefined;\n current.functionControl?.reset();\n\n return current;\n });\n });\n this.resetError();\n this.outSelectedData.emit(this.selectedSingle());\n }\n\n private async resetError() {\n this.isError.set(false);\n this.typeListDate().forEach(item => {\n item.update(current => {\n current.isError = false;\n current.showBorderError = false;\n\n return current;\n });\n });\n }\n\n private async setError(error: boolean) {\n this.typeListDate().forEach(item => {\n item.update(current => {\n current.showBorderError = error;\n\n return current;\n });\n });\n }\n\n private async validate() {\n let valid = true;\n\n this.isError.set(false);\n this.typeListDate().forEach((item, index: number) => {\n item.update(current => {\n current.showBorderError = false;\n current.isError = false;\n if (this.selectedSingle() && !this.selectedSingle()[current.id] && !current.disable) {\n valid = false;\n current.showBorderError = true;\n if (index === 0 && this.typeListDate().length === 2) {\n this.isError.set(true);\n }\n if (index === 1 && this.typeListDate().length === 2 && !this.isError()) {\n current.isError = true;\n }\n }\n\n return current;\n });\n });\n\n return valid;\n }\n\n protected handlerChangFlagMouse(flagMouse: IFlagMouse) {\n this.outChangStageFlagMouse.emit(flagMouse);\n }\n}\n","<div class=\"\">\n <div class=\"flex items-start\">\n @if (typeListDate(); as typeListDate) {\n @for (item of typeListDate; track item().id; let last = $last; let i =$index; let first = $first) {\n <div [style.width]=\"widthByElement() | LibsUiComponentsDatetimeDropdownBuildWidthPipe :widthDropdown():first:isMultiple()\"\n [class.mr-[8px]]=\"!last && typeListDate.length ===2\"\n [style.minWidth.px]=\"widthDropdown()\">\n <libs_ui-components-datetime-dropdown-item-child [readonly]=\"readonly()\"\n [typeDate]=\"item().id\"\n [disable]=\"item().disable ?? disable()\"\n [listKeySelected]=\"item().keySelected\"\n [widthByElement]=\"widthByElement()\"\n [first]=\"first\"\n [widthDropdown]=\"widthDropdown()\"\n [listKeysDisable]=\"listKeysDisable()?.[item().id]?.()\"\n [listMaxItemShow]=\"listMaxItemShow()?.[item().id] ?? 6\"\n [isError]=\"item().isError\"\n [listHasButtonUnSelectOption]=\"listHasButtonUnSelectOption()\"\n [zIndex]=\"zIndex()\"\n [showBorderError]=\"item().showBorderError && !item().disable && !disable()\"\n [listData]=\"item().id | LibsUiComponentsDatetimeDropdownBuildListByDateTypePipe :{minYear:minYear(), maxYear:maxYear(), reverseYear:reverseYear()} :keyMonthResetDay()\"\n [classIncludeTextDisplayWhenNoSelect]=\"classIncludeTextDisplayWhenNoSelect() ?? ''\"\n (outSelectedKey)=\"handlerSelectedKey($event, item, i)\"\n (outFunctionControl)=\"handlerFunctionControl($event, item)\"\n (outChangStageFlagMouse)=\"handlerChangFlagMouse($event)\" />\n </div>\n }\n }\n </div>\n\n @if (isError()) {\n <div class=\"flex items-center mt-[4px]\">\n <span class=\"libs-ui-font-h7r libs-ui-text-error\"\n [innerHtml]=\"(validRequired()?.message || 'i18n_valid_empty_message')| translate:validRequired()?.interpolateParams\"></span>\n </div>\n }\n</div>\n","import { AfterViewInit, ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, input, OnInit, output, signal, untracked, viewChild } from \"@angular/core\";\nimport { ILabel, LibsUiComponentsLabelComponent } from \"@libs-ui/components-label\";\nimport { IFlagMouse } from \"@libs-ui/components-popover\";\nimport { TranslateModule, TranslateService } from \"@ngx-translate/core\";\nimport { fromEvent, Subject, takeUntil, timer } from \"rxjs\";\nimport { CompareDate } from \"./defines/date-dropdown.define\";\nimport { LibsUiComponentsDatetimeDropdownDirective } from \"./directive/date-dropdown.directive\";\nimport { IDateDropdownDisableKeys, IFromAndToDateLabel, IHiddenDate, TYPE_DATE_DROPDOWN_FORMAT, TYPE_DATE_FORMAT } from \"./interfaces/date-dropdown.interface\";\nimport { IEmitMultiDateDropdown, IEmitSingleDateDropdown } from \"./interfaces/emit-dropdown.interface\";\nimport { IDateDropdownFunctionControlEvent, IDateDropdownItemFunctionControlEvent } from \"./interfaces/functions-control-event.interface\";\nimport { IValidDateDropdown } from \"./interfaces/valid.interface\";\nimport { LibsUiComponentsDatetimeDropdownItemComponent } from \"./item/item.component\";\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-datetime-dropdown',\n templateUrl: './dropdown.component.html',\n styleUrls: ['./dropdown.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n TranslateModule,\n LibsUiComponentsLabelComponent,\n LibsUiComponentsDatetimeDropdownDirective,\n LibsUiComponentsDatetimeDropdownItemComponent\n ]\n})\n\nexport class LibsUiComponentsDatetimeDropdownComponent implements OnInit, AfterViewInit {\n // #region PROPERTY\n protected width = signal<number>(0);\n protected widthElement = signal<number | undefined>(undefined);\n protected widthLabel = signal<number | undefined>(undefined);\n protected widthLabelFrom = signal<number>(0);\n protected widthLabelTo = signal<number>(0);\n protected isErrorCompareDate = signal<boolean | undefined>(undefined);\n protected chooseDate = signal<IEmitMultiDateDropdown | undefined>({ from: signal({}), to: signal({}) });\n protected isResponsive = signal<boolean | undefined>(undefined);\n protected arrayFormat = computed(() => {\n return this.typeFormat().split('-') as Array<TYPE_DATE_FORMAT>;\n });\n protected changeType = signal<boolean | undefined>(undefined);\n\n private cacheWidthLabel = signal<number | undefined>(undefined);\n private timeOut = signal<number | undefined>(undefined);\n private onDestroy = new Subject<void>();\n private functionsControl = new Map<string, IDateDropdownItemFunctionControlEvent>();\n\n // #region INPUT\n readonly labelConfig = input<ILabel | undefined>(undefined);\n readonly widthDropdown = input<number, number>(136, { transform: (value) => value ?? 136 });\n readonly zIndex = input<number, number>(1200, { transform: (value) => value ?? 1200 });\n readonly maxYear = input<number>(0);\n readonly minYear = input<number>(0);\n readonly minWidth = input<number | undefined>(undefined);\n readonly disable = input<boolean>(false);\n readonly readonly = input<boolean>(false);\n readonly isMultiple = input<boolean>(false);\n readonly reverseYear = input<boolean | undefined>(undefined);\n readonly isBorderError = input<boolean>(false);\n readonly ignoreWidth100 = input<boolean>(false);\n readonly widthByElement = input<boolean>(false);\n readonly disableSecond = input<boolean>(false);\n readonly typeFormat = input<TYPE_DATE_DROPDOWN_FORMAT, TYPE_DATE_DROPDOWN_FORMAT>('month-day', { transform: (value) => value ?? 'month-day' });\n readonly fromAndToDateLabel = input<IFromAndToDateLabel>({ from: 'i18n_label_from', to: 'i18n_to' });\n readonly listHasButtonUnSelectOption = input<boolean>(false);\n readonly selectedDateTime = input<IEmitMultiDateDropdown | undefined>(undefined);\n readonly isEmitAfterChanged = input<boolean>(false); // dùng để emit mỗi lần chọn giá trị và lần đầu init\n readonly getItemYearDisplay = input<(year: string) => string>();\n readonly ignoreFromAndToDateLabel = input<boolean>(false);\n readonly classIncludeTextDisplayWhenNoSelect = input<string | undefined>(undefined);\n readonly hiddenDate = input<IHiddenDate | undefined>();\n readonly listMaxItemShow = input<{ year?: number; month?: number; quarter?: number; day?: number; } | undefined>(undefined);\n readonly ignoreConvertYearSelected = input<boolean>(false);\n readonly listKeysDisable = input<IDateDropdownDisableKeys | undefined>(undefined);\n\n readonly ignoreAllowTimeEqual = input<boolean, boolean>(true, { transform: (value) => value ?? true });\n readonly ignoreValidTimeCompare = input<boolean, boolean>(false, { transform: (value) => value ?? false });\n readonly isCheckErrorWhenSelectItem = input<boolean, boolean>(true, { transform: (value) => value ?? true });\n readonly ignoreRequiredValueSecondWhenNotValidRequired = input<boolean>(false); // có validate giá trị thứ 2 khi validRequired không?\n readonly validRequired = input<IValidDateDropdown>();\n\n // #region OUTPUT\n readonly outFunctionsControl = output<IDateDropdownFunctionControlEvent>();\n readonly outSelectedDropdown = output<IEmitSingleDateDropdown | IEmitMultiDateDropdown>();// dùng cho trường hợp emit mỗi một lần chọn giá trị nên khi sử dụng phải check kĩ undefined\n readonly outChooseMultiDate = output<IEmitMultiDateDropdown>();\n readonly outChooseSingleDate = output<IEmitSingleDateDropdown>();\n readonly outChangStageFlagMouse = output<IFlagMouse>();\n\n /* VIEW CHILD */\n private containerRef = viewChild<ElementRef>('parent');\n private labelFromRef = viewChild<ElementRef>('labelFrom');\n private labelToRef = viewChild<ElementRef>('labelTo');\n\n // #region INJECT\n private translate = inject(TranslateService);\n\n constructor() {\n effect(() => {\n const isMultiple = this.isMultiple();\n\n if (!isMultiple) {\n return;\n }\n\n untracked(() => {\n this.changeType.set(true);\n this.functionsControl.clear();\n timer(0).pipe().subscribe(() => {\n this.checkResponsive();\n this.changeType.set(false);\n });\n });\n });\n }\n\n ngOnInit() {\n this.outFunctionsControl.emit({ checkIsValid: this.validate.bind(this), resetError: this.resetError.bind(this), resetTime: this.resetDropdown.bind(this) });\n if (this.selectedDateTime()) {\n this.chooseDate.set(this.selectedDateTime());\n }\n }\n\n ngAfterViewInit() {\n fromEvent(window, 'resize').pipe(takeUntil(this.onDestroy)).subscribe(this.setWidthDate.bind(this));\n this.widthLabel.set(undefined);\n timer(0).pipe().subscribe(() => {\n this.checkResponsive();\n });\n }\n\n protected checkResponsive() {\n this.isResponsive.set(false);\n const widthElementParent = this.containerRef()?.nativeElement?.getBoundingClientRect().width || 0;\n\n this.widthLabelFrom.set(this.labelFromRef()?.nativeElement?.getBoundingClientRect().width || 0);\n this.widthLabelTo.set(this.labelToRef()?.nativeElement?.getBoundingClientRect().width || 0);\n\n const spaceBetweenDate = (this.arrayFormat().length * 2) + (this.fromAndToDateLabel().from ? 1 : 0);\n const width = (this.widthDropdown() * 4) + (8 * spaceBetweenDate) + this.widthLabelFrom() + this.widthLabelTo();\n\n if (widthElementParent < width) {\n this.isResponsive.set(true);\n }\n }\n\n protected handlerChangeSelectedKey(event: IEmitSingleDateDropdown, type: 'from' | 'to') {\n this.chooseDate.update(current => {\n if (current) {\n current[type].set(event);\n }\n\n return current;\n });\n if (this.isEmitAfterChanged()) {\n const dataEmit = this.isMultiple() ? this.chooseDate() : this.chooseDate()?.from();\n\n if (dataEmit) {\n this.outSelectedDropdown.emit(dataEmit);\n }\n }\n this.applyDate();\n }\n\n private async resetDropdown() {\n this.functionsControl.forEach(control => control.resetDropdown());\n }\n\n private async resetError() {\n this.functionsControl.forEach(control => control.resetError());\n }\n\n private setWidthDate() {\n if (!this.containerRef() || !this.containerRef()?.nativeElement) {\n return;\n }\n timer(0).pipe().subscribe(() => {\n this.checkResponsive();\n });\n }\n\n protected handlerFunctionControl(event: IDateDropdownItemFunctionControlEvent, type: 'from' | 'to') {\n this.functionsControl.set(type, event);\n }\n\n protected async checkValid() {\n let valid = true;\n\n for (const control of this.functionsControl.values()) {\n if (!(await control.checkIsValid())) {\n valid = false;\n }\n }\n if (this.compareDate()) {\n valid = false;\n }\n\n return valid;\n }\n\n private setError(error: boolean) {\n this.functionsControl.forEach(control => control.setError(error));\n }\n\n private compareDate() {\n const type = this.typeFormat().split('-') as Array<TYPE_DATE_FORMAT>;\n const dateCompare: Array<{ from: number | undefined, to: number | undefined }> = [];\n\n type.forEach(item => {\n const from = this.chooseDate()?.from()[item];\n const to = this.chooseDate()?.to()[item];\n\n dateCompare.push({ from: from, to: to });\n });\n if (this.ignoreValidTimeCompare() || !this.checkCondition(true)) {\n this.isErrorCompareDate.set(false);\n\n return false;\n }\n if (CompareDate(dateCompare, this.ignoreAllowTimeEqual())) {\n this.setError(true);\n this.isErrorCompareDate.set(true);\n\n return true;\n }\n this.isErrorCompareDate.set(false);\n\n return false;\n }\n\n private async validate() {\n let valid = true;\n\n if (!this.validRequired()) {\n if (!this.checkCondition(false) && !this.ignoreRequiredValueSecondWhenNotValidRequired()) {\n valid = await this.checkValid();\n }\n\n return valid;\n }\n\n return await this.checkValid();\n }\n\n private checkCondition(hasValue: boolean) {\n let checkValue = true;\n const type = this.typeFormat().split('-') as Array<TYPE_DATE_FORMAT>;\n\n type.forEach(item => {\n if (hasValue && (!this.chooseDate()?.from()[item] || !this.chooseDate()?.to()[item])) {\n checkValue = false;\n }\n if (!hasValue && (this.chooseDate()?.from()[item] || this.chooseDate()?.to()[item])) {\n checkValue = false;\n }\n });\n\n return checkValue;\n }\n\n protected applyDate() {\n this.setError(false);\n this.isErrorCompareDate.set(false);\n if (this.isCheckErrorWhenSelectItem() && !this.validate()) {\n return;\n }\n const from = this.chooseDate()?.from;\n const to = this.chooseDate()?.to;\n\n if (this.isMultiple()) {\n if (this.compareDate()) {\n return;\n }\n let dataSelected: IEmitMultiDateDropdown | undefined = { from: signal({}), to: signal({}) };\n\n this.arrayFormat().forEach(key => {\n if (!from?.()?.[key] || !to?.()?.[key]) {\n dataSelected = undefined;\n }\n if (dataSelected) {\n dataSelected.from.update(current => {\n current[key] = Number(from?.()[key]);\n\n return current;\n });\n dataSelected.to.update(current => {\n current[key] = Number(to?.()[key]);\n\n return current;\n });\n }\n });\n\n if (dataSelected) {\n this.outChooseMultiDate.emit(dataSelected);\n }\n\n return;\n }\n let dataSelected: IEmitSingleDateDropdown | undefined = {};\n\n this.arrayFormat().forEach(key => {\n if (!from?.()?.[key]) {\n dataSelected = undefined;\n }\n if (dataSelected) {\n dataSelected[key] = Number(from?.()?.[key])\n }\n });\n if (dataSelected) {\n this.outChooseSingleDate.emit(dataSelected);\n }\n }\n\n protected handlerChangeWidthLabel(width: number) {\n this.cacheWidthLabel.set(width < (this.cacheWidthLabel() || 0) ? this.cacheWidthLabel() : Math.ceil(width));\n if (this.timeOut()) {\n clearTimeout(this.timeOut());\n }\n this.timeOut.set((setTimeout(() => {\n this.widthLabel.set(this.cacheWidthLabel());\n }, 100) as unknown) as number);\n }\n\n protected handlerChangStageFlagMouse(flagMouse: IFlagMouse) {\n this.outChangStageFlagMouse.emit(flagMouse);\n }\n}","@if (labelConfig(); as labelConfig) {\n <libs_ui-components-label [classInclude]=\"labelConfig.classInclude\"\n [labelLeft]=\"labelConfig.labelLeft\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [required]=\"labelConfig.required \"\n [description]=\"labelConfig.description\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [buttonsRight]=\"labelConfig.buttonsRight\"\n [buttonsDescription]=\"labelConfig.buttonsDescription\"\n [descriptionClass]=\"labelConfig.descriptionClass\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft\"\n [disableButtonsRight]=\"labelConfig.disableButtonsRight\"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleDisable]=\"labelConfig.toggleDisable || disable()\"\n [popover]=\"labelConfig.popover\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [limitLength]=\"labelConfig.limitLength\"\n [count]=\"labelConfig.count\" />\n}\n<div #parent\n class=\"flex items-start\"\n [class.!w-full]=\"widthByElement()\"\n [class.!column]=\"isResponsive() && isMultiple()\">\n <div #childFrom\n class=\"flex items-start\"\n [class.w-[50%]]=\"widthByElement() && !isResponsive()\"\n [class.!mb-[8px]]=\"isResponsive() && isMultiple()\"\n [class.!mr-[8px]]=\"!isResponsive() && isMultiple()\"\n [class.w-full]=\"!isMultiple() && !widthByElement() || isResponsive()\"\n [style.width.px]=\"!widthByElement() && isMultiple() && !isResponsive() ?((widthDropdown() * arrayFormat().length)+(8 * arrayFormat().length) + widthLabelFrom()):undefined\">\n\n @if (isMultiple() && !ignoreFromAndToDateLabel() && fromAndToDateLabel().from) {\n <div class=\"mr-[8px] flex-shrink-0 h-[32px] flex items-center\"\n [style.width.px]=\"isResponsive() ? (widthLabel() || undefined) : undefined\">\n <span #labelFrom\n LibsUiComponentsDatetimeDropdownDirective\n [class.!opacity-[0.5]]=\"disable()\"\n class=\"libs-ui-font-h5r text-nowrap {{ fromAndToDateLabel().classLabelFrom || '' }}\"\n (outChangeWidth)=\"handlerChangeWidthLabel($event)\">\n {{ (fromAndToDateLabel().from||' ')| translate }}\n </span>\n </div>\n }\n <div class=\"flex\"\n [class.!w-full]=\"widthByElement()\">\n @if (!changeType()) {\n <libs_ui-components-datetime-dropdown-item [class.!w-full]=\"widthByElement()\"\n [disableSecond]=\"disableSecond()\"\n [typeDate]=\"typeFormat()\"\n [zIndex]=\"zIndex()\"\n [maxYear]=\"maxYear()\"\n [disable]=\"disable()\"\n [minYear]=\"minYear()\"\n [readonly]=\"readonly()\"\n [isMultiple]=\"isMultiple() ? isResponsive() ? true : false : true\"\n [reverseYear]=\"reverseYear()\"\n [selectedDate]=\"selectedDateTime()?.from() || {}\"\n [widthDropdown]=\"widthDropdown()\"\n [widthByElement]=\"widthByElement()\"\n [getItemYearDisplay]=\"getItemYearDisplay()\"\n [listMaxItemShow]=\"listMaxItemShow()\"\n [listKeysDisable]=\"listKeysDisable()?.from()\"\n [listHasButtonUnSelectOption]=\"listHasButtonUnSelectOption()\"\n [isEmitSelectedDropDown]=\"isEmitAfterChanged()\"\n [classIncludeTextDisplayWhenNoSelect]=\"'libs-ui-font-h5r ' + classIncludeTextDisplayWhenNoSelect()\"\n (outSelectedData)=\"handlerChangeSelectedKey($event, 'from')\"\n (outFunctionControl)=\"handlerFunctionControl($event,'from')\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\" />\n }\n </div>\n </div>\n @if (isMultiple()) {\n <div #childTo\n [class.!w-[50%]]=\"widthByElement()\"\n [class.!w-full]=\" !widthByElement() || isResponsive()\"\n class=\"flex items-start\">\n <div class=\"mr-[8px] h-[32px] flex-shrink-0 flex items-center\"\n [style.width.px]=\"isResponsive() ? widthLabel() : undefined\">\n @if (!ignoreFromAndToDateLabel()) {\n <span #labelTo\n LibsUiComponentsDatetimeDropdownDirective\n [class.!opacity-[0.5]]=\"disable()\"\n class=\"libs-ui-font-h5r text-nowrap {{ fromAndToDateLabel().classLabelTo || '' }}\"\n (outChangeWidth)=\"handlerChangeWidthLabel($event)\">\n {{ (fromAndToDateLabel().to||' ')| translate }}\n </span>\n }\n @if (ignoreFromAndToDateLabel()) {\n <span [class.!opacity-[0.5]]=\"disable()\"\n class=\"libs-ui-font-h5r\">-</span>\n }\n </div>\n <div class=\"flex\"\n [class.!w-full]=\"widthByElement()\">\n @if (!changeType()) {\n <libs_ui-components-datetime-dropdown-item [class.w-full]=\"widthByElement()\"\n [disableSecond]=\"disableSecond()\"\n [typeDate]=\"typeFormat()\"\n [zIndex]=\"zIndex()\"\n [maxYear]=\"maxYear()\"\n [disable]=\"disable()\"\n [minYear]=\"minYear()\"\n [readonly]=\"readonly()\"\n [isMultiple]=\"isMultiple()\"\n [reverseYear]=\"reverseYear()\"\n [selectedDate]=\"selectedDateTime()?.to() || {}\"\n [widthDropdown]=\"widthDropdown()\"\n [widthByElement]=\"widthByElement()\"\n [getItemYearDisplay]=\"getItemYearDisplay()\"\n [listMaxItemShow]=\"listMaxItemShow()\"\n [listKeysDisable]=\"listKeysDisable()?.to()\"\n [listHasButtonUnSelectOption]=\"listHasButtonUnSelectOption()\"\n [classIncludeTextDisplayWhenNoSelect]=\"'libs-ui-font-h5r ' + classIncludeTextDisplayWhenNoSelect\"\n [isEmitSelectedDropDown]=\"isEmitAfterChanged()\"\n (outSelectedData)=\"handlerChangeSelectedKey($event, 'to')\"\n (outFunctionControl)=\"handlerFunctionControl($event,'to')\"\n (outChangStageFlagMouse)=\"handlerChangStageFlagMouse($event)\" />\n }\n </div>\n </div>\n }\n</div>\n\n@if (isErrorCompareDate()) {\n <div class=\"flex items-center mt-[4px]\">\n <span class=\"libs-ui-message-error libs-ui-font-h7r libs-ui-text-error\">{{ validRequired()?.messageValidCompareTime || \"i18n_invalid_end_date_selected\" | translate:validRequired()?.interpolateParamsCompareTime }}</span>\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ import * as i0 from "@angular/core";
7
7
  export declare class LibsUiComponentsDatetimeDropdownItemChildComponent {
8
8
  protected httpRequestDetailItemById: import("@angular/core").WritableSignal<IHttpRequestConfig | undefined>;
9
9
  protected listConfig: import("@angular/core").WritableSignal<IListConfigItem>;
10
- protected textNoSelectDisplay: import("@angular/core").Signal<"month" | "i18n_select_day" | "i18n_select_month" | "i18n_select_year" | "i18n_select_quarter">;
10
+ protected textNoSelectDisplay: import("@angular/core").Signal<"i18n_select_day" | "i18n_select_month" | "i18n_select_year" | "i18n_select_quarter" | "month">;
11
11
  protected usingWidth: import("@angular/core").Signal<string>;
12
12
  readonly typeDate: import("@angular/core").InputSignal<TYPE_DATE_FORMAT | undefined>;
13
13
  readonly getItemYearDisplay: import("@angular/core").InputSignal<((year: string) => string) | undefined>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libs-ui/components-datetime-dropdown",
3
- "version": "0.2.127",
3
+ "version": "0.2.128",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^18.2.0",
6
6
  "@angular/core": "^18.2.0"