ngx-sumax-erp-components 1.0.42 → 1.0.44

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.
@@ -288,7 +288,7 @@ export class DatePickerComponent {
288
288
  I18n,
289
289
  { provide: NgbDatepickerI18n, useClass: CustomDatepickerI18n },
290
290
  { provide: NgbDateParserFormatter, useClass: CustomDatepickerFormat },
291
- ], viewQueries: [{ propertyName: "ngbDatepicker", first: true, predicate: ["fecha"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<label *ngIf=\"label != null && label != '' && showLabel\" class=\"d-flex sumax-label mb-0 p-0\"\r\n ><span [title]=\"label\" style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis\">{{ label }}</span>\r\n <span *ngIf=\"required\" class=\"ms-1\" [class.text-danger]=\"controls?.errors != null\"> *</span>\r\n <span *ngIf=\"labelInfo\">\r\n <i class=\"fa fa-exclamation-circle text-info ms-2\" [matTooltip]=\"textLabelInfo\" matTooltipClass=\"bg-info\"></i>\r\n </span>\r\n</label>\r\n<div\r\n [class.input-icon]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\r\n [class.right]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\">\r\n <!-- tooltip-message es el icono de error -->\r\n\r\n <div class=\"d-flex p-0 group-input-button position-relative\">\r\n <tooltip-message\r\n [label]=\"label\"\r\n [controls]=\"controls\"\r\n [validatorMessage]=\"validatorMessage\"\r\n [submitted]=\"submitted\"\r\n [tooltipMessage]=\"tooltipMessage\"></tooltip-message>\r\n <input\r\n type=\"text\"\r\n [autocomplete]=\"autocomplete\"\r\n [class.is-invalid]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\r\n [disabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n (keyup.enter)=\"onKeyUpEnter()\"\r\n (keyup.ArrowUp)=\"arrowUpKeyUp()\"\r\n (keypress)=\"onlyNumbers($event)\"\r\n (input)=\"onInput($any($event.target).value)\"\r\n (dateSelect)=\"onInput($event)\"\r\n (focus)=\"onFocus($any($event.target).value)\"\r\n (focusout)=\"focusOut($any($event.target).value)\"\r\n (blur)=\"onBlur()\"\r\n class=\"form-control form-control-sm rounded-left use-input\"\r\n container=\"body\"\r\n placeholder=\"dd/mm/yyyy\"\r\n [minDate]=\"minDate\"\r\n [maxDate]=\"maxDate\"\r\n name=\"fecha\"\r\n ngbDatepicker\r\n #fecha=\"ngbDatepicker\"\r\n [(ngModel)]=\"value\" />\r\n <button type=\"button\" [disabled]=\"disabled || readonly\" class=\"btn btn-info p-0 rounded-0 use-button\" (click)=\"fecha.toggle()\">\r\n <!-- <mat-icon class=\"text-white pt-1\" style=\"font-size: 18px;\" [matTooltip]=\"'Calendario'\" matTooltipClass=\"bg-info\">calendar_today</mat-icon> -->\r\n <i class=\"fa fa-calendar text-white px-1\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n</div>\r\n<!-- error-message es el mansaje que aparece abajo del componente -->\r\n<error-message\r\n [label]=\"label\"\r\n [controls]=\"controls\"\r\n [validatorMessage]=\"validatorMessage\"\r\n [submitted]=\"submitted\"\r\n [tooltipMessage]=\"tooltipMessage\"></error-message>\r\n", styles: ["button[disabled]{pointer-events:none}.sumax-label{color:#646c9a!important}.input-icon tooltip-message{color:#ccc;position:absolute;z-index:3;width:16px;font-size:16px;text-align:center;left:auto;right:35px;top:50%;transform:translateY(-50%)}.input-icon.right>.form-control{padding-right:33px;padding-left:12px}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#dc3545;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}.was-validated .form-control:invalid,.form-control.is-invalid{background-image:none;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}.form-control:focus,.form-control:active{border-color:#007eff;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #007eff1a!important}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.errorMessageComponent, selector: "error-message", inputs: ["tooltipMessage", "validatorMessage", "controls", "label", "submitted"] }, { kind: "component", type: i6.tooltipMessageComponent, selector: "tooltip-message", inputs: ["tooltipMessage", "validatorMessage", "controls", "label", "submitted"] }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i8.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "contentTemplate", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "popperOptions", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }] }); }
291
+ ], viewQueries: [{ propertyName: "ngbDatepicker", first: true, predicate: ["fecha"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<label *ngIf=\"label != null && label != '' && showLabel\" class=\"d-flex sumax-label mb-0 p-0\"\r\n ><span [title]=\"label\" style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis\">{{ label }}</span>\r\n <span *ngIf=\"required\" class=\"ms-1\" [class.text-danger]=\"controls?.errors != null\"> *</span>\r\n <span *ngIf=\"labelInfo\">\r\n <i class=\"fa fa-exclamation-circle text-info ms-2\" [matTooltip]=\"textLabelInfo\" matTooltipClass=\"bg-info\"></i>\r\n </span>\r\n</label>\r\n<div\r\n [class.input-icon]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\r\n [class.right]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\">\r\n <!-- tooltip-message es el icono de error -->\r\n\r\n <div class=\"d-flex p-0 group-input-button position-relative\">\r\n <tooltip-message\r\n [label]=\"label\"\r\n [controls]=\"controls\"\r\n [validatorMessage]=\"validatorMessage\"\r\n [submitted]=\"submitted\"\r\n [tooltipMessage]=\"tooltipMessage\"></tooltip-message>\r\n <input\r\n type=\"text\"\r\n [attr.autocomplete]=\"autocomplete\"\r\n [class.is-invalid]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\r\n [disabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n (keyup.enter)=\"onKeyUpEnter()\"\r\n (keyup.ArrowUp)=\"arrowUpKeyUp()\"\r\n (keypress)=\"onlyNumbers($event)\"\r\n (input)=\"onInput($any($event.target).value)\"\r\n (dateSelect)=\"onInput($event)\"\r\n (focus)=\"onFocus($any($event.target).value)\"\r\n (focusout)=\"focusOut($any($event.target).value)\"\r\n (blur)=\"onBlur()\"\r\n class=\"form-control form-control-sm rounded-left use-input\"\r\n container=\"body\"\r\n placeholder=\"dd/mm/yyyy\"\r\n [minDate]=\"minDate\"\r\n [maxDate]=\"maxDate\"\r\n name=\"fecha\"\r\n ngbDatepicker\r\n #fecha=\"ngbDatepicker\"\r\n [(ngModel)]=\"value\" />\r\n <button type=\"button\" [disabled]=\"disabled || readonly\" class=\"btn btn-info p-0 rounded-0 use-button\" (click)=\"fecha.toggle()\">\r\n <!-- <mat-icon class=\"text-white pt-1\" style=\"font-size: 18px;\" [matTooltip]=\"'Calendario'\" matTooltipClass=\"bg-info\">calendar_today</mat-icon> -->\r\n <i class=\"fa fa-calendar text-white px-1\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n</div>\r\n<!-- error-message es el mansaje que aparece abajo del componente -->\r\n<error-message\r\n [label]=\"label\"\r\n [controls]=\"controls\"\r\n [validatorMessage]=\"validatorMessage\"\r\n [submitted]=\"submitted\"\r\n [tooltipMessage]=\"tooltipMessage\"></error-message>\r\n", styles: ["button[disabled]{pointer-events:none}.sumax-label{color:#646c9a!important}.input-icon tooltip-message{color:#ccc;position:absolute;z-index:3;width:16px;font-size:16px;text-align:center;left:auto;right:35px;top:50%;transform:translateY(-50%)}.input-icon.right>.form-control{padding-right:33px;padding-left:12px}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#dc3545;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}.was-validated .form-control:invalid,.form-control.is-invalid{background-image:none;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}.form-control:focus,.form-control:active{border-color:#007eff;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #007eff1a!important}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.errorMessageComponent, selector: "error-message", inputs: ["tooltipMessage", "validatorMessage", "controls", "label", "submitted"] }, { kind: "component", type: i6.tooltipMessageComponent, selector: "tooltip-message", inputs: ["tooltipMessage", "validatorMessage", "controls", "label", "submitted"] }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i8.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "contentTemplate", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "popperOptions", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }] }); }
292
292
  }
293
293
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: DatePickerComponent, decorators: [{
294
294
  type: Component,
@@ -306,7 +306,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
306
306
  I18n,
307
307
  { provide: NgbDatepickerI18n, useClass: CustomDatepickerI18n },
308
308
  { provide: NgbDateParserFormatter, useClass: CustomDatepickerFormat },
309
- ], template: "<label *ngIf=\"label != null && label != '' && showLabel\" class=\"d-flex sumax-label mb-0 p-0\"\r\n ><span [title]=\"label\" style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis\">{{ label }}</span>\r\n <span *ngIf=\"required\" class=\"ms-1\" [class.text-danger]=\"controls?.errors != null\"> *</span>\r\n <span *ngIf=\"labelInfo\">\r\n <i class=\"fa fa-exclamation-circle text-info ms-2\" [matTooltip]=\"textLabelInfo\" matTooltipClass=\"bg-info\"></i>\r\n </span>\r\n</label>\r\n<div\r\n [class.input-icon]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\r\n [class.right]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\">\r\n <!-- tooltip-message es el icono de error -->\r\n\r\n <div class=\"d-flex p-0 group-input-button position-relative\">\r\n <tooltip-message\r\n [label]=\"label\"\r\n [controls]=\"controls\"\r\n [validatorMessage]=\"validatorMessage\"\r\n [submitted]=\"submitted\"\r\n [tooltipMessage]=\"tooltipMessage\"></tooltip-message>\r\n <input\r\n type=\"text\"\r\n [autocomplete]=\"autocomplete\"\r\n [class.is-invalid]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\r\n [disabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n (keyup.enter)=\"onKeyUpEnter()\"\r\n (keyup.ArrowUp)=\"arrowUpKeyUp()\"\r\n (keypress)=\"onlyNumbers($event)\"\r\n (input)=\"onInput($any($event.target).value)\"\r\n (dateSelect)=\"onInput($event)\"\r\n (focus)=\"onFocus($any($event.target).value)\"\r\n (focusout)=\"focusOut($any($event.target).value)\"\r\n (blur)=\"onBlur()\"\r\n class=\"form-control form-control-sm rounded-left use-input\"\r\n container=\"body\"\r\n placeholder=\"dd/mm/yyyy\"\r\n [minDate]=\"minDate\"\r\n [maxDate]=\"maxDate\"\r\n name=\"fecha\"\r\n ngbDatepicker\r\n #fecha=\"ngbDatepicker\"\r\n [(ngModel)]=\"value\" />\r\n <button type=\"button\" [disabled]=\"disabled || readonly\" class=\"btn btn-info p-0 rounded-0 use-button\" (click)=\"fecha.toggle()\">\r\n <!-- <mat-icon class=\"text-white pt-1\" style=\"font-size: 18px;\" [matTooltip]=\"'Calendario'\" matTooltipClass=\"bg-info\">calendar_today</mat-icon> -->\r\n <i class=\"fa fa-calendar text-white px-1\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n</div>\r\n<!-- error-message es el mansaje que aparece abajo del componente -->\r\n<error-message\r\n [label]=\"label\"\r\n [controls]=\"controls\"\r\n [validatorMessage]=\"validatorMessage\"\r\n [submitted]=\"submitted\"\r\n [tooltipMessage]=\"tooltipMessage\"></error-message>\r\n", styles: ["button[disabled]{pointer-events:none}.sumax-label{color:#646c9a!important}.input-icon tooltip-message{color:#ccc;position:absolute;z-index:3;width:16px;font-size:16px;text-align:center;left:auto;right:35px;top:50%;transform:translateY(-50%)}.input-icon.right>.form-control{padding-right:33px;padding-left:12px}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#dc3545;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}.was-validated .form-control:invalid,.form-control.is-invalid{background-image:none;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}.form-control:focus,.form-control:active{border-color:#007eff;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #007eff1a!important}\n"] }]
309
+ ], template: "<label *ngIf=\"label != null && label != '' && showLabel\" class=\"d-flex sumax-label mb-0 p-0\"\r\n ><span [title]=\"label\" style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis\">{{ label }}</span>\r\n <span *ngIf=\"required\" class=\"ms-1\" [class.text-danger]=\"controls?.errors != null\"> *</span>\r\n <span *ngIf=\"labelInfo\">\r\n <i class=\"fa fa-exclamation-circle text-info ms-2\" [matTooltip]=\"textLabelInfo\" matTooltipClass=\"bg-info\"></i>\r\n </span>\r\n</label>\r\n<div\r\n [class.input-icon]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\r\n [class.right]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\">\r\n <!-- tooltip-message es el icono de error -->\r\n\r\n <div class=\"d-flex p-0 group-input-button position-relative\">\r\n <tooltip-message\r\n [label]=\"label\"\r\n [controls]=\"controls\"\r\n [validatorMessage]=\"validatorMessage\"\r\n [submitted]=\"submitted\"\r\n [tooltipMessage]=\"tooltipMessage\"></tooltip-message>\r\n <input\r\n type=\"text\"\r\n [attr.autocomplete]=\"autocomplete\"\r\n [class.is-invalid]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\r\n [disabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n (keyup.enter)=\"onKeyUpEnter()\"\r\n (keyup.ArrowUp)=\"arrowUpKeyUp()\"\r\n (keypress)=\"onlyNumbers($event)\"\r\n (input)=\"onInput($any($event.target).value)\"\r\n (dateSelect)=\"onInput($event)\"\r\n (focus)=\"onFocus($any($event.target).value)\"\r\n (focusout)=\"focusOut($any($event.target).value)\"\r\n (blur)=\"onBlur()\"\r\n class=\"form-control form-control-sm rounded-left use-input\"\r\n container=\"body\"\r\n placeholder=\"dd/mm/yyyy\"\r\n [minDate]=\"minDate\"\r\n [maxDate]=\"maxDate\"\r\n name=\"fecha\"\r\n ngbDatepicker\r\n #fecha=\"ngbDatepicker\"\r\n [(ngModel)]=\"value\" />\r\n <button type=\"button\" [disabled]=\"disabled || readonly\" class=\"btn btn-info p-0 rounded-0 use-button\" (click)=\"fecha.toggle()\">\r\n <!-- <mat-icon class=\"text-white pt-1\" style=\"font-size: 18px;\" [matTooltip]=\"'Calendario'\" matTooltipClass=\"bg-info\">calendar_today</mat-icon> -->\r\n <i class=\"fa fa-calendar text-white px-1\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n</div>\r\n<!-- error-message es el mansaje que aparece abajo del componente -->\r\n<error-message\r\n [label]=\"label\"\r\n [controls]=\"controls\"\r\n [validatorMessage]=\"validatorMessage\"\r\n [submitted]=\"submitted\"\r\n [tooltipMessage]=\"tooltipMessage\"></error-message>\r\n", styles: ["button[disabled]{pointer-events:none}.sumax-label{color:#646c9a!important}.input-icon tooltip-message{color:#ccc;position:absolute;z-index:3;width:16px;font-size:16px;text-align:center;left:auto;right:35px;top:50%;transform:translateY(-50%)}.input-icon.right>.form-control{padding-right:33px;padding-left:12px}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#dc3545;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}.was-validated .form-control:invalid,.form-control.is-invalid{background-image:none;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}.form-control:focus,.form-control:active{border-color:#007eff;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #007eff1a!important}\n"] }]
310
310
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.MessageUtilService }, { type: i2.DatePickerService }, { type: i0.Renderer2 }], propDecorators: { showLabel: [{
311
311
  type: Input
312
312
  }], label: [{
@@ -363,4 +363,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
363
363
  type: ViewChild,
364
364
  args: ['fecha']
365
365
  }] } });
366
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN1bWF4LWVycC1jb21wb25lbnQvc3JjL2xpYi9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3VtYXgtZXJwLWNvbXBvbmVudC9zcmMvbGliL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBR04sU0FBUyxFQUNULFVBQVUsR0FDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsYUFBYSxFQUNiLGlCQUFpQixHQUVsQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFDTCxPQUFPLEVBQ1Asc0JBQXNCLEVBR3RCLGlCQUFpQixHQUNsQixNQUFNLDRCQUE0QixDQUFDO0FBR3BDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7Ozs7QUF1QjdDLDJKQUEySjtBQUMzSixNQUFNLE9BQU8sbUJBQW1CO0lBNkU5QixZQUNVLEVBQWMsRUFDZCxrQkFBc0MsRUFDdEMsaUJBQW9DLEVBQ3BDLE9BQWtCO1FBSGxCLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsWUFBTyxHQUFQLE9B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SztnQkFNRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csS0FBSztzQkFBZCxNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csSUFBSTtzQkFBYixNQUFNO2dCQU9hLGFBQWE7c0JBQWhDLFNBQVM7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFJlbmRlcmVyMixcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxuICBmb3J3YXJkUmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEFic3RyYWN0Q29udHJvbCxcclxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcclxuICBOR19WQUxJREFUT1JTLFxyXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gIFZhbGlkYXRpb25FcnJvcnMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge1xyXG4gIE5nYkRhdGUsXHJcbiAgTmdiRGF0ZVBhcnNlckZvcm1hdHRlcixcclxuICBOZ2JEYXRlU3RydWN0LFxyXG4gIE5nYkRhdGVwaWNrZXIsXHJcbiAgTmdiRGF0ZXBpY2tlckkxOG4sXHJcbn0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBEYXRlUGlja2VyU2VydmljZSB9IGZyb20gJy4vZGF0ZS1waWNrZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IE1lc3NhZ2VVdGlsU2VydmljZSB9IGZyb20gJy4uL3V0aWxzL21lc3NhZ2UtdXRpbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ3VzdG9tRGF0ZXBpY2tlckkxOG4sIEkxOG4gfSBmcm9tICcuL0N1c3RvbURhdGVQaWNrZXJJMThuJztcclxuaW1wb3J0IHsgQ3VzdG9tRGF0ZXBpY2tlckZvcm1hdCB9IGZyb20gJy4vQ3VzdG9tRGF0ZVBpY2tlckZvcm1hdCc7XHJcbmltcG9ydCB7IFNoYXJlZENvbXBvbmVudHNVdGlsIH0gZnJvbSAnLi4vdXRpbHMvU2hhcmVkQ29tcG9uZW50c1V0aWwnO1xyXG5pbXBvcnQgeyBEYXRlVXRpbCB9IGZyb20gJy4uL3V0aWxzL0RhdGVVdGlsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZGF0ZS1waWNrZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVQaWNrZXJDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVQaWNrZXJDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgICBJMThuLFxyXG4gICAgeyBwcm92aWRlOiBOZ2JEYXRlcGlja2VySTE4biwgdXNlQ2xhc3M6IEN1c3RvbURhdGVwaWNrZXJJMThuIH0sXHJcbiAgICB7IHByb3ZpZGU6IE5nYkRhdGVQYXJzZXJGb3JtYXR0ZXIsIHVzZUNsYXNzOiBDdXN0b21EYXRlcGlja2VyRm9ybWF0IH0sXHJcbiAgXSxcclxufSlcclxuXHJcbi8vIHByb3ZpZGVyczogW0kxOG4sIHsgcHJvdmlkZTogTmdiRGF0ZXBpY2tlckkxOG4sIHVzZUNsYXNzOiBDdXN0b21EYXRlcGlja2VySTE4biB9LCB7IHByb3ZpZGU6IE5nYkRhdGVQYXJzZXJGb3JtYXR0ZXIsIHVzZUNsYXNzOiBDdXN0b21EYXRlcGlja2VyRm9ybWF0IH1dXHJcbmV4cG9ydCBjbGFzcyBEYXRlUGlja2VyQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQ29udHJvbFZhbHVlQWNjZXNzb3Jcclxue1xyXG4gIC8qKlxyXG4gICogQGRlc2NyaXB0aW9uIFBhcmFtZXRybyBkZSBsYSB2aXN1YWxpemFjacOzbiBkZWwgdGV4dG8gc3VwZXJpb3JcclxuICAqIEBkZWZhdWx0IHRydWVcclxuICAqIEB0eXBlIGJvb2xlYW5cclxuICAqL1xyXG4gIEBJbnB1dCgpIHNob3dMYWJlbDogYm9vbGVhbiA9IHRydWU7XHJcbiAgLyoqXHJcbiAgKiBAZGVzY3JpcHRpb24gVGV4dG8gc3VwZXJpb25cclxuICAqIEBkZWZhdWx0IG51bGxcclxuICAqIEB0eXBlIGFueVxyXG4gICovXHJcbiAgQElucHV0KCkgbGFiZWw6IGFueSA9IG51bGw7XHJcbiAgLyoqXHJcbiAgKiBAZGVzY3JpcHRpb24gUGFyYW1ldHJvIGRlIGF1dG9jb21wbGV0YWRvXHJcbiAgKiBAZGVmYXVsdCAnb2ZmJ1xyXG4gICogQHR5cGUgc3RyaW5nXHJcbiAgKi9cclxuICBASW5wdXQoKSBhdXRvY29tcGxldGU6IHN0cmluZyA9ICdvZmYnO1xyXG4gIC8qKlxyXG4gICogQGRlc2NyaXB0aW9uIFByw7N4aW1vIGNvbnRyb2wgYSBoYWNlciBmb2N1c1xyXG4gICovXHJcbiAgQElucHV0KCkgbmV4dDogYW55O1xyXG4gIC8qKlxyXG4gICogQGRlc2NyaXB0aW9uIFByw7N4aW1vIGNvbnRyb2wgYSBoYWNlciBmb2N1cyBlbiBjYXNvIGVsIE5FWFQgZXN0w6kgZGVzaGFiaWxpdGFkb1xyXG4gICovXHJcbiAgQElucHV0KCkgbmV4dElzRGlzYWJsZTogYW55O1xyXG4gIC8qKlxyXG4gICogQGRlc2NyaXB0aW9uIEFudGVyaW9yIGNvbnRyb2wgYSBoYWNlciBmb2N1c1xyXG4gICovXHJcbiAgQElucHV0KCkgYmFjazogYW55O1xyXG4gIC8qKlxyXG4gICogQGRlc2NyaXB0aW9uIEFudGVyaW9yIGNvbnRyb2wgYSBoYWNlciBmb2N1cyBlbiBjYXNvIGVsIEJBQ0sgZXN0w6kgZGVzaGFiaWxpdGFkb1xyXG4gICovXHJcbiAgQElucHV0KCkgYmFja0lzRGlzYWJsZTogYW55O1xyXG4gIC8qKlxyXG4gICogQGRlc2NyaXB0aW9uIFBhcmFtZXRybyBkZSBjb250cm9sIHJlcXVlcmlkb1xyXG4gICogQGRlZmF1bHQgZmFsc2VcclxuICAqIEB0eXBlIGJvb2xlYW5cclxuICAqL1xyXG4gIEBJbnB1dCgpIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbm9BdXRvQ29tcGxldGVOdWxsOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHZhbGlkYXRvck1lc3NhZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSB0b29sdGlwTWVzc2FnZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgdmFsaWRhdG9yQWxlcnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzdWJtaXR0ZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGxhYmVsSW5mbzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHRleHRMYWJlbEluZm86IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIG1pbkRhdGUhOiBOZ2JEYXRlU3RydWN0O1xyXG4gIEBJbnB1dCgpIG1heERhdGUhOiBOZ2JEYXRlU3RydWN0O1xyXG4gIEBJbnB1dCgpIGludmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBmb2N1c0luaXRpYWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvKipcclxuICAqIEBkZXNjcmlwdGlvbiBQYXJhbWV0cm8gZGVzaGFiaWxpdGFyIGNvbnRyb2xcclxuICAqIEBkZWZhdWx0IGZhbHNlXHJcbiAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAqL1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpIG9uTmV4dDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQmFjazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGlucHV0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25jaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBibHVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAvLyB4bWluRGF0ZSA9IG51bGw7XHJcbiAgLy8geG1heERhdGUgPSBudWxsO1xyXG4gIHZhbHVlOiBhbnk7XHJcbiAgY29udHJvbHM6IGFueTtcclxuICBlbWl0VmFsdWU6IE5nYkRhdGUgfCBzdHJpbmcgPSAnJztcclxuICBzaGFyZWRDb21wb25lbnRzVXRpbCA9IG5ldyBTaGFyZWRDb21wb25lbnRzVXRpbCgpO1xyXG4gIEBWaWV3Q2hpbGQoJ2ZlY2hhJykgbmdiRGF0ZXBpY2tlcjogTmdiRGF0ZXBpY2tlciB8IGFueTtcclxuXHJcbiAgX3RlbXBWYWx1ZSA9ICcnO1xyXG4gIF9pbml0VmFsdWUgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSBtZXNzYWdlVXRpbFNlcnZpY2U6IE1lc3NhZ2VVdGlsU2VydmljZSxcclxuICAgIHByaXZhdGUgZGF0ZVBpY2tlclNlcnZpY2U6IERhdGVQaWNrZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcmVuZGVyOiBSZW5kZXJlcjJcclxuICApIHtcclxuICAgIHRoaXMuc2hvd0xhYmVsID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5nZXRTaG93TGFiZWwoKTtcclxuICAgIHRoaXMuYXV0b2NvbXBsZXRlID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5nZXRBdXRvY29tcGxldGUoKTtcclxuICAgIHRoaXMubm9BdXRvQ29tcGxldGVOdWxsID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5nZXROb0F1dG9Db21wbGV0ZU51bGwoKTtcclxuICAgIHRoaXMuZm9jdXNJbml0aWFsID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5nZXRGb2N1c0luaXRpYWwoKTtcclxuICAgIHRoaXMudmFsaWRhdG9yTWVzc2FnZSA9IHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuZ2V0VmFsaWRhdG9yTWVzc2FnZSgpO1xyXG4gICAgdGhpcy50b29sdGlwTWVzc2FnZSA9IHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuZ2V0VG9vbHRpcE1lc3NhZ2UoKTtcclxuICAgIHRoaXMuc3VibWl0dGVkID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5nZXRTdWJtaXR0ZWQoKTtcclxuICAgIHRoaXMudmFsaWRhdG9yQWxlcnQgPSB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmdldFZhbGlkYXRvckFsZXJ0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snc3VibWl0dGVkJ10pIHtcclxuICAgICAgaWYgKHRoaXMuY29udHJvbHMgIT09IHVuZGVmaW5lZCAmJiBjaGFuZ2VzWydzdWJtaXR0ZWQnXS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2xzLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgdGhpcy5jb250cm9scy5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMubWluRGF0ZSkge1xyXG4gICAgICB0aGlzLm1pbkRhdGUgPSB0aGlzLnN0ckRhdGVUb05nYkRhdGUodGhpcy5taW5EYXRlKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmZvY3VzSW5pdGlhbCA9PSB0cnVlICYmIHRoaXMuZGlzYWJsZWQgPT0gZmFsc2UpIHtcclxuICAgICAgY29uc3QgaW52YWxpZENvbnRyb2wgPVxyXG4gICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdbdHlwZT1cInRleHRcIl0nKTtcclxuICAgICAgaW52YWxpZENvbnRyb2wuZm9jdXMoKTtcclxuICAgICAgaW52YWxpZENvbnRyb2wuc2VsZWN0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZSA9IChfOiBhbnkpID0+IHt9O1xyXG4gIG9uVmFsaWRhdGlvbkNoYW5nZSA9ICgpID0+IHt9O1xyXG4gIG9uVG91Y2ggPSAoKSA9PiB7fTtcclxuXHJcbiAgZm9jdXMgPSAoKSA9PiB7XHJcbiAgICBjb25zdCBpbnZhbGlkQ29udHJvbCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdbdHlwZT1cInRleHRcIl0nKTtcclxuICAgIGludmFsaWRDb250cm9sLmZvY3VzKCk7XHJcbiAgICBpbnZhbGlkQ29udHJvbC5zZWxlY3QoKTtcclxuICB9O1xyXG5cclxuICBvbkZvY3VzKGV2dDogYW55KSB7XHJcbiAgICBpZiAoZXZ0KSB7XHJcbiAgICAgIGNvbnN0IGludmFsaWRDb250cm9sID1cclxuICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignW3R5cGU9XCJ0ZXh0XCJdJyk7XHJcbiAgICAgIGludmFsaWRDb250cm9sLnNlbGVjdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuc3RyRGF0ZVRvTmdiRGF0ZSh2YWx1ZSkgfHwgJyc7XHJcbiAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcclxuICAgICAgICB0aGlzLl90ZW1wVmFsdWUgPSBEYXRlVXRpbC5kYXRlQXV0b0NvbXBsZXRlKHZhbHVlKTtcclxuICAgICAgICBpZiAodGhpcy5jb250cm9scykge1xyXG4gICAgICAgICAgdGhpcy5fcmVuZGVyLnNldFByb3BlcnR5KHRoaXMuY29udHJvbHMsICd2YWx1ZScsIHRoaXMuX3RlbXBWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB0aGlzLl90ZW1wVmFsdWUgPSB2YWx1ZS50cmltKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnZhbHVlID0gJyc7XHJcbiAgICAgIHRoaXMuX3RlbXBWYWx1ZSA9ICcnO1xyXG4gICAgfVxyXG4gIH1cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoID0gZm47XHJcbiAgfVxyXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgYW55IHtcclxuICAgIHRoaXMuY29udHJvbHMgPSBjb250cm9sO1xyXG4gICAgaWYgKCF0aGlzLl9pbml0VmFsdWUpIHtcclxuICAgICAgaWYgKHRoaXMuX3RlbXBWYWx1ZSkge1xyXG4gICAgICAgIHRoaXMuX3JlbmRlci5zZXRQcm9wZXJ0eShjb250cm9sLCAndmFsdWUnLCB0aGlzLl90ZW1wVmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX2luaXRWYWx1ZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2U/KGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVmFsaWRhdGlvbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgb25CbHVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoKCk7XHJcbiAgfVxyXG5cclxuICBvbklucHV0KHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuZW1pdFZhbHVlID0gdmFsdWU7XHJcblxyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgaWYgKHRoaXMudmFsdWUgaW5zdGFuY2VvZiBOZ2JEYXRlKSB7XHJcbiAgICAgIHRoaXMuZW1pdFZhbHVlID0gdGhpcy5uZ2JEYXRldG9TdHJpbmcodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub25DaGFuZ2UodGhpcy5lbWl0VmFsdWUpO1xyXG4gICAgdGhpcy5vbmNoYW5nZS5lbWl0KHRoaXMuZW1pdFZhbHVlKTtcclxuICAgIHRoaXMuaW5wdXQuZW1pdCh0aGlzLmVtaXRWYWx1ZSk7XHJcblxyXG4gICAgdGhpcy5fdGVtcFZhbHVlID0gJyc7XHJcbiAgfVxyXG5cclxuICBvbktleVVwRW50ZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVudGVyS2V5VXAoKTtcclxuICB9XHJcblxyXG4gIG9ubHlOdW1iZXJzKGU6IGFueSkge1xyXG4gICAgaWYgKCEoZS5rZXlDb2RlID49IDQ4ICYmIGUua2V5Q29kZSA8PSA1NykgJiYgZS5rZXlDb2RlICE9IDQ3KSB7XHJcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0ckRhdGVUb05nYkRhdGUodmFsdWU6IGFueSkge1xyXG4gICAgY29uc3QgZGF0ZTogRGF0ZSA9IERhdGVVdGlsLnBhcnNlKHZhbHVlLCAnREFURScpO1xyXG4gICAgY29uc3QgbmdiRGF0ZTogTmdiRGF0ZVN0cnVjdCA9IHtcclxuICAgICAgZGF5OiBOdW1iZXIoRGF0ZVV0aWwuZ2V0RGF5KGRhdGUpKSxcclxuICAgICAgbW9udGg6IE51bWJlcihEYXRlVXRpbC5nZXRNb250aChkYXRlKSksXHJcbiAgICAgIHllYXI6IE51bWJlcihEYXRlVXRpbC5nZXRZZWFyKGRhdGUpKSxcclxuICAgIH07XHJcbiAgICAvLyByZXR1cm4gbmdiRGF0ZTtcclxuICAgIHJldHVybiBuZXcgTmdiRGF0ZShuZ2JEYXRlLnllYXIsIG5nYkRhdGUubW9udGgsIG5nYkRhdGUuZGF5KTtcclxuICB9XHJcblxyXG4gIG5nYkRhdGV0b1N0cmluZyh2YWx1ZTogTmdiRGF0ZVN0cnVjdCk6IE5nYkRhdGUgfCBzdHJpbmcge1xyXG4gICAgY29uc3QgY29uY2F0TmdiRGF0ZSA9XHJcbiAgICAgIGAwJHt2YWx1ZS5kYXl9YC5zbGljZSgtMikgKyBgMCR7dmFsdWUubW9udGh9YC5zbGljZSgtMikgKyB2YWx1ZS55ZWFyO1xyXG4gICAgcmV0dXJuIERhdGVVdGlsLmRhdGVBdXRvQ29tcGxldGUoY29uY2F0TmdiRGF0ZSk7XHJcbiAgfVxyXG5cclxuICBlbnRlcktleVVwKCkge1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIGxldCB2YWxpZGF0b3IgPSB0aGlzLnNoYXJlZENvbXBvbmVudHNVdGlsLnN0b3BCeVZhbGlkYXRvcihcclxuICAgICAgICB0aGlzLmNvbnRyb2xzLFxyXG4gICAgICAgIHRoaXMudmFsaWRhdG9yQWxlcnQsXHJcbiAgICAgICAgdGhpcy5sYWJlbFxyXG4gICAgICApO1xyXG4gICAgICBpZiAodmFsaWRhdG9yLmVycm9yKSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlVXRpbFNlcnZpY2UuZ2V0TWVzc2FnZUVycm9yKFxyXG4gICAgICAgICAgJzAwMDA0NicsXHJcbiAgICAgICAgICAnRXJyb3InLFxyXG4gICAgICAgICAgdmFsaWRhdG9yLm1lc3NhZ2VcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubmV4dCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgaWYgKHRoaXMubmV4dC5kaXNhYmxlZCB8fCB0aGlzLm5leHQucmVhZG9ubHkpIHtcclxuICAgICAgICBpZiAodGhpcy5uZXh0SXNEaXNhYmxlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgdGhpcy5uZXh0SXNEaXNhYmxlLmZvY3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubmV4dC5mb2N1cygpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5uZXh0SXNEaXNhYmxlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMubmV4dElzRGlzYWJsZS5mb2N1cygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMub25OZXh0LmVtaXQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXJyb3dVcEtleVVwKCkge1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIGxldCB2YWxpZGF0b3IgPSB0aGlzLnNoYXJlZENvbXBvbmVudHNVdGlsLnN0b3BCeVZhbGlkYXRvcihcclxuICAgICAgICB0aGlzLmNvbnRyb2xzLFxyXG4gICAgICAgIHRoaXMudmFsaWRhdG9yQWxlcnQsXHJcbiAgICAgICAgdGhpcy5sYWJlbFxyXG4gICAgICApO1xyXG4gICAgICBpZiAodmFsaWRhdG9yLmVycm9yKSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlVXRpbFNlcnZpY2UuZ2V0TWVzc2FnZUVycm9yKFxyXG4gICAgICAgICAgJzAwMDA0NicsXHJcbiAgICAgICAgICAnRXJyb3InLFxyXG4gICAgICAgICAgdmFsaWRhdG9yLm1lc3NhZ2VcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuYmFjayAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgaWYgKHRoaXMuYmFjay5kaXNhYmxlZCB8fCB0aGlzLmJhY2sucmVhZG9ubHkpIHtcclxuICAgICAgICBpZiAodGhpcy5iYWNrSXNEaXNhYmxlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgdGhpcy5iYWNrSXNEaXNhYmxlLmZvY3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYmFjay5mb2N1cygpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5iYWNrSXNEaXNhYmxlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMuYmFja0lzRGlzYWJsZS5mb2N1cygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMub25CYWNrLmVtaXQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9jdXNPdXQodmFsdWU6IGFueSkge1xyXG4gICAgaWYgKHZhbHVlICYmIHZhbHVlLnRyaW0oKSAhPT0gJycpIHtcclxuICAgICAgaWYgKHRoaXMuX3RlbXBWYWx1ZSA9PT0gdmFsdWUpIHJldHVybjtcclxuXHJcbiAgICAgIHRoaXMubmdiRGF0ZXBpY2tlci5jbG9zZSgpO1xyXG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBOZ2JEYXRlKSB7XHJcbiAgICAgICAgaWYgKHZhbHVlICE9PSB0aGlzLm5nYkRhdGV0b1N0cmluZyh2YWx1ZSkpIHtcclxuICAgICAgICAgIHRoaXMuZW1pdFZhbHVlID0gdGhpcy5uZ2JEYXRldG9TdHJpbmcodmFsdWUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmVtaXRWYWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2VBbGwoJy8nLCAnJyk7XHJcbiAgICAgICAgaWYgKHRoaXMubm9BdXRvQ29tcGxldGVOdWxsKSB7XHJcbiAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5zdHJEYXRlVG9OZ2JEYXRlKFxyXG4gICAgICAgICAgICBEYXRlVXRpbC5kYXRlQXV0b0NvbXBsZXRlKHZhbHVlKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMuZW1pdFZhbHVlID0gRGF0ZVV0aWwuZGF0ZUF1dG9Db21wbGV0ZSh2YWx1ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmICh2YWx1ZSAhPSAnJyAmJiB2YWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnN0ckRhdGVUb05nYkRhdGUoXHJcbiAgICAgICAgICAgICAgRGF0ZVV0aWwuZGF0ZUF1dG9Db21wbGV0ZSh2YWx1ZSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5lbWl0VmFsdWUgPSBEYXRlVXRpbC5kYXRlQXV0b0NvbXBsZXRlKHZhbHVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuZW1pdFZhbHVlKTtcclxuXHJcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5lbWl0VmFsdWUgPT09ICdzdHJpbmcnKSB0aGlzLl90ZW1wVmFsdWUgPSB0aGlzLmVtaXRWYWx1ZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGxhYmVsICpuZ0lmPVwibGFiZWwgIT0gbnVsbCAmJiBsYWJlbCAhPSAnJyAmJiBzaG93TGFiZWxcIiBjbGFzcz1cImQtZmxleCBzdW1heC1sYWJlbCBtYi0wIHAtMFwiXHJcbiAgPjxzcGFuIFt0aXRsZV09XCJsYWJlbFwiIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vd3JhcDsgb3ZlcmZsb3c6IGhpZGRlbjsgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXNcIj57eyBsYWJlbCB9fTwvc3Bhbj5cclxuICA8c3BhbiAqbmdJZj1cInJlcXVpcmVkXCIgY2xhc3M9XCJtcy0xXCIgW2NsYXNzLnRleHQtZGFuZ2VyXT1cImNvbnRyb2xzPy5lcnJvcnMgIT0gbnVsbFwiPiAqPC9zcGFuPlxyXG4gIDxzcGFuICpuZ0lmPVwibGFiZWxJbmZvXCI+XHJcbiAgICA8aSBjbGFzcz1cImZhIGZhLWV4Y2xhbWF0aW9uLWNpcmNsZSB0ZXh0LWluZm8gbXMtMlwiIFttYXRUb29sdGlwXT1cInRleHRMYWJlbEluZm9cIiBtYXRUb29sdGlwQ2xhc3M9XCJiZy1pbmZvXCI+PC9pPlxyXG4gIDwvc3Bhbj5cclxuPC9sYWJlbD5cclxuPGRpdlxyXG4gIFtjbGFzcy5pbnB1dC1pY29uXT1cImNvbnRyb2xzPy5lcnJvcnMgIT0gbnVsbCAmJiAoY29udHJvbHM/LmRpcnR5IHx8IGNvbnRyb2xzPy50b3VjaGVkKSAmJiBzdWJtaXR0ZWRcIlxyXG4gIFtjbGFzcy5yaWdodF09XCJjb250cm9scz8uZXJyb3JzICE9IG51bGwgJiYgKGNvbnRyb2xzPy5kaXJ0eSB8fCBjb250cm9scz8udG91Y2hlZCkgJiYgc3VibWl0dGVkXCI+XHJcbiAgPCEtLSB0b29sdGlwLW1lc3NhZ2UgZXMgZWwgaWNvbm8gZGUgZXJyb3IgLS0+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggcC0wIGdyb3VwLWlucHV0LWJ1dHRvbiBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgPHRvb2x0aXAtbWVzc2FnZVxyXG4gICAgW2xhYmVsXT1cImxhYmVsXCJcclxuICAgIFtjb250cm9sc109XCJjb250cm9sc1wiXHJcbiAgICBbdmFsaWRhdG9yTWVzc2FnZV09XCJ2YWxpZGF0b3JNZXNzYWdlXCJcclxuICAgIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCJcclxuICAgIFt0b29sdGlwTWVzc2FnZV09XCJ0b29sdGlwTWVzc2FnZVwiPjwvdG9vbHRpcC1tZXNzYWdlPlxyXG4gICAgPGlucHV0XHJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgW2F1dG9jb21wbGV0ZV09XCJhdXRvY29tcGxldGVcIlxyXG4gICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJjb250cm9scz8uZXJyb3JzICE9IG51bGwgJiYgKGNvbnRyb2xzPy5kaXJ0eSB8fCBjb250cm9scz8udG91Y2hlZCkgJiYgc3VibWl0dGVkXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgKGtleXVwLmVudGVyKT1cIm9uS2V5VXBFbnRlcigpXCJcclxuICAgICAgKGtleXVwLkFycm93VXApPVwiYXJyb3dVcEtleVVwKClcIlxyXG4gICAgICAoa2V5cHJlc3MpPVwib25seU51bWJlcnMoJGV2ZW50KVwiXHJcbiAgICAgIChpbnB1dCk9XCJvbklucHV0KCRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUpXCJcclxuICAgICAgKGRhdGVTZWxlY3QpPVwib25JbnB1dCgkZXZlbnQpXCJcclxuICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSlcIlxyXG4gICAgICAoZm9jdXNvdXQpPVwiZm9jdXNPdXQoJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSlcIlxyXG4gICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXHJcbiAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSByb3VuZGVkLWxlZnQgdXNlLWlucHV0XCJcclxuICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgIHBsYWNlaG9sZGVyPVwiZGQvbW0veXl5eVwiXHJcbiAgICAgIFttaW5EYXRlXT1cIm1pbkRhdGVcIlxyXG4gICAgICBbbWF4RGF0ZV09XCJtYXhEYXRlXCJcclxuICAgICAgbmFtZT1cImZlY2hhXCJcclxuICAgICAgbmdiRGF0ZXBpY2tlclxyXG4gICAgICAjZmVjaGE9XCJuZ2JEYXRlcGlja2VyXCJcclxuICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiIC8+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHlcIiBjbGFzcz1cImJ0biBidG4taW5mbyBwLTAgcm91bmRlZC0wIHVzZS1idXR0b25cIiAoY2xpY2spPVwiZmVjaGEudG9nZ2xlKClcIj5cclxuICAgICAgPCEtLSA8bWF0LWljb24gY2xhc3M9XCJ0ZXh0LXdoaXRlIHB0LTFcIiBzdHlsZT1cImZvbnQtc2l6ZTogMThweDtcIiBbbWF0VG9vbHRpcF09XCInQ2FsZW5kYXJpbydcIiBtYXRUb29sdGlwQ2xhc3M9XCJiZy1pbmZvXCI+Y2FsZW5kYXJfdG9kYXk8L21hdC1pY29uPiAtLT5cclxuICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jYWxlbmRhciB0ZXh0LXdoaXRlIHB4LTFcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjwhLS0gZXJyb3ItbWVzc2FnZSBlcyBlbCBtYW5zYWplIHF1ZSBhcGFyZWNlIGFiYWpvIGRlbCBjb21wb25lbnRlIC0tPlxyXG48ZXJyb3ItbWVzc2FnZVxyXG4gIFtsYWJlbF09XCJsYWJlbFwiXHJcbiAgW2NvbnRyb2xzXT1cImNvbnRyb2xzXCJcclxuICBbdmFsaWRhdG9yTWVzc2FnZV09XCJ2YWxpZGF0b3JNZXNzYWdlXCJcclxuICBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiXHJcbiAgW3Rvb2x0aXBNZXNzYWdlXT1cInRvb2x0aXBNZXNzYWdlXCI+PC9lcnJvci1tZXNzYWdlPlxyXG4iXX0=
366
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN1bWF4LWVycC1jb21wb25lbnQvc3JjL2xpYi9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3VtYXgtZXJwLWNvbXBvbmVudC9zcmMvbGliL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBR04sU0FBUyxFQUNULFVBQVUsR0FDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsYUFBYSxFQUNiLGlCQUFpQixHQUVsQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFDTCxPQUFPLEVBQ1Asc0JBQXNCLEVBR3RCLGlCQUFpQixHQUNsQixNQUFNLDRCQUE0QixDQUFDO0FBR3BDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7Ozs7QUF1QjdDLDJKQUEySjtBQUMzSixNQUFNLE9BQU8sbUJBQW1CO0lBNkU5QixZQUNVLEVBQWMsRUFDZCxrQkFBc0MsRUFDdEMsaUJBQW9DLEVBQ3BDLE9BQWtCO1FBSGxCLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsWUFBTyxHQUFQLE9B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SztnQkFNRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csS0FBSztzQkFBZCxNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csSUFBSTtzQkFBYixNQUFNO2dCQU9hLGFBQWE7c0JBQWhDLFNBQVM7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFJlbmRlcmVyMixcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxuICBmb3J3YXJkUmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEFic3RyYWN0Q29udHJvbCxcclxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcclxuICBOR19WQUxJREFUT1JTLFxyXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gIFZhbGlkYXRpb25FcnJvcnMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge1xyXG4gIE5nYkRhdGUsXHJcbiAgTmdiRGF0ZVBhcnNlckZvcm1hdHRlcixcclxuICBOZ2JEYXRlU3RydWN0LFxyXG4gIE5nYkRhdGVwaWNrZXIsXHJcbiAgTmdiRGF0ZXBpY2tlckkxOG4sXHJcbn0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBEYXRlUGlja2VyU2VydmljZSB9IGZyb20gJy4vZGF0ZS1waWNrZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IE1lc3NhZ2VVdGlsU2VydmljZSB9IGZyb20gJy4uL3V0aWxzL21lc3NhZ2UtdXRpbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ3VzdG9tRGF0ZXBpY2tlckkxOG4sIEkxOG4gfSBmcm9tICcuL0N1c3RvbURhdGVQaWNrZXJJMThuJztcclxuaW1wb3J0IHsgQ3VzdG9tRGF0ZXBpY2tlckZvcm1hdCB9IGZyb20gJy4vQ3VzdG9tRGF0ZVBpY2tlckZvcm1hdCc7XHJcbmltcG9ydCB7IFNoYXJlZENvbXBvbmVudHNVdGlsIH0gZnJvbSAnLi4vdXRpbHMvU2hhcmVkQ29tcG9uZW50c1V0aWwnO1xyXG5pbXBvcnQgeyBEYXRlVXRpbCB9IGZyb20gJy4uL3V0aWxzL0RhdGVVdGlsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZGF0ZS1waWNrZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVQaWNrZXJDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVQaWNrZXJDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgICBJMThuLFxyXG4gICAgeyBwcm92aWRlOiBOZ2JEYXRlcGlja2VySTE4biwgdXNlQ2xhc3M6IEN1c3RvbURhdGVwaWNrZXJJMThuIH0sXHJcbiAgICB7IHByb3ZpZGU6IE5nYkRhdGVQYXJzZXJGb3JtYXR0ZXIsIHVzZUNsYXNzOiBDdXN0b21EYXRlcGlja2VyRm9ybWF0IH0sXHJcbiAgXSxcclxufSlcclxuXHJcbi8vIHByb3ZpZGVyczogW0kxOG4sIHsgcHJvdmlkZTogTmdiRGF0ZXBpY2tlckkxOG4sIHVzZUNsYXNzOiBDdXN0b21EYXRlcGlja2VySTE4biB9LCB7IHByb3ZpZGU6IE5nYkRhdGVQYXJzZXJGb3JtYXR0ZXIsIHVzZUNsYXNzOiBDdXN0b21EYXRlcGlja2VyRm9ybWF0IH1dXHJcbmV4cG9ydCBjbGFzcyBEYXRlUGlja2VyQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQ29udHJvbFZhbHVlQWNjZXNzb3Jcclxue1xyXG4gIC8qKlxyXG4gICogQGRlc2NyaXB0aW9uIFBhcmFtZXRybyBkZSBsYSB2aXN1YWxpemFjacOzbiBkZWwgdGV4dG8gc3VwZXJpb3JcclxuICAqIEBkZWZhdWx0IHRydWVcclxuICAqIEB0eXBlIGJvb2xlYW5cclxuICAqL1xyXG4gIEBJbnB1dCgpIHNob3dMYWJlbDogYm9vbGVhbiA9IHRydWU7XHJcbiAgLyoqXHJcbiAgKiBAZGVzY3JpcHRpb24gVGV4dG8gc3VwZXJpb25cclxuICAqIEBkZWZhdWx0IG51bGxcclxuICAqIEB0eXBlIGFueVxyXG4gICovXHJcbiAgQElucHV0KCkgbGFiZWw6IGFueSA9IG51bGw7XHJcbiAgLyoqXHJcbiAgKiBAZGVzY3JpcHRpb24gUGFyYW1ldHJvIGRlIGF1dG9jb21wbGV0YWRvXHJcbiAgKiBAZGVmYXVsdCAnb2ZmJ1xyXG4gICogQHR5cGUgc3RyaW5nXHJcbiAgKi9cclxuICBASW5wdXQoKSBhdXRvY29tcGxldGU6IHN0cmluZyA9ICdvZmYnO1xyXG4gIC8qKlxyXG4gICogQGRlc2NyaXB0aW9uIFByw7N4aW1vIGNvbnRyb2wgYSBoYWNlciBmb2N1c1xyXG4gICovXHJcbiAgQElucHV0KCkgbmV4dDogYW55O1xyXG4gIC8qKlxyXG4gICogQGRlc2NyaXB0aW9uIFByw7N4aW1vIGNvbnRyb2wgYSBoYWNlciBmb2N1cyBlbiBjYXNvIGVsIE5FWFQgZXN0w6kgZGVzaGFiaWxpdGFkb1xyXG4gICovXHJcbiAgQElucHV0KCkgbmV4dElzRGlzYWJsZTogYW55O1xyXG4gIC8qKlxyXG4gICogQGRlc2NyaXB0aW9uIEFudGVyaW9yIGNvbnRyb2wgYSBoYWNlciBmb2N1c1xyXG4gICovXHJcbiAgQElucHV0KCkgYmFjazogYW55O1xyXG4gIC8qKlxyXG4gICogQGRlc2NyaXB0aW9uIEFudGVyaW9yIGNvbnRyb2wgYSBoYWNlciBmb2N1cyBlbiBjYXNvIGVsIEJBQ0sgZXN0w6kgZGVzaGFiaWxpdGFkb1xyXG4gICovXHJcbiAgQElucHV0KCkgYmFja0lzRGlzYWJsZTogYW55O1xyXG4gIC8qKlxyXG4gICogQGRlc2NyaXB0aW9uIFBhcmFtZXRybyBkZSBjb250cm9sIHJlcXVlcmlkb1xyXG4gICogQGRlZmF1bHQgZmFsc2VcclxuICAqIEB0eXBlIGJvb2xlYW5cclxuICAqL1xyXG4gIEBJbnB1dCgpIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbm9BdXRvQ29tcGxldGVOdWxsOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHZhbGlkYXRvck1lc3NhZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSB0b29sdGlwTWVzc2FnZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgdmFsaWRhdG9yQWxlcnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzdWJtaXR0ZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGxhYmVsSW5mbzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHRleHRMYWJlbEluZm86IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIG1pbkRhdGUhOiBOZ2JEYXRlU3RydWN0O1xyXG4gIEBJbnB1dCgpIG1heERhdGUhOiBOZ2JEYXRlU3RydWN0O1xyXG4gIEBJbnB1dCgpIGludmFsaWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBmb2N1c0luaXRpYWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvKipcclxuICAqIEBkZXNjcmlwdGlvbiBQYXJhbWV0cm8gZGVzaGFiaWxpdGFyIGNvbnRyb2xcclxuICAqIEBkZWZhdWx0IGZhbHNlXHJcbiAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAqL1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpIG9uTmV4dDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQmFjazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGlucHV0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25jaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBibHVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAvLyB4bWluRGF0ZSA9IG51bGw7XHJcbiAgLy8geG1heERhdGUgPSBudWxsO1xyXG4gIHZhbHVlOiBhbnk7XHJcbiAgY29udHJvbHM6IGFueTtcclxuICBlbWl0VmFsdWU6IE5nYkRhdGUgfCBzdHJpbmcgPSAnJztcclxuICBzaGFyZWRDb21wb25lbnRzVXRpbCA9IG5ldyBTaGFyZWRDb21wb25lbnRzVXRpbCgpO1xyXG4gIEBWaWV3Q2hpbGQoJ2ZlY2hhJykgbmdiRGF0ZXBpY2tlcjogTmdiRGF0ZXBpY2tlciB8IGFueTtcclxuXHJcbiAgX3RlbXBWYWx1ZSA9ICcnO1xyXG4gIF9pbml0VmFsdWUgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSBtZXNzYWdlVXRpbFNlcnZpY2U6IE1lc3NhZ2VVdGlsU2VydmljZSxcclxuICAgIHByaXZhdGUgZGF0ZVBpY2tlclNlcnZpY2U6IERhdGVQaWNrZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcmVuZGVyOiBSZW5kZXJlcjJcclxuICApIHtcclxuICAgIHRoaXMuc2hvd0xhYmVsID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5nZXRTaG93TGFiZWwoKTtcclxuICAgIHRoaXMuYXV0b2NvbXBsZXRlID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5nZXRBdXRvY29tcGxldGUoKTtcclxuICAgIHRoaXMubm9BdXRvQ29tcGxldGVOdWxsID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5nZXROb0F1dG9Db21wbGV0ZU51bGwoKTtcclxuICAgIHRoaXMuZm9jdXNJbml0aWFsID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5nZXRGb2N1c0luaXRpYWwoKTtcclxuICAgIHRoaXMudmFsaWRhdG9yTWVzc2FnZSA9IHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuZ2V0VmFsaWRhdG9yTWVzc2FnZSgpO1xyXG4gICAgdGhpcy50b29sdGlwTWVzc2FnZSA9IHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuZ2V0VG9vbHRpcE1lc3NhZ2UoKTtcclxuICAgIHRoaXMuc3VibWl0dGVkID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5nZXRTdWJtaXR0ZWQoKTtcclxuICAgIHRoaXMudmFsaWRhdG9yQWxlcnQgPSB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmdldFZhbGlkYXRvckFsZXJ0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snc3VibWl0dGVkJ10pIHtcclxuICAgICAgaWYgKHRoaXMuY29udHJvbHMgIT09IHVuZGVmaW5lZCAmJiBjaGFuZ2VzWydzdWJtaXR0ZWQnXS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2xzLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgdGhpcy5jb250cm9scy5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMubWluRGF0ZSkge1xyXG4gICAgICB0aGlzLm1pbkRhdGUgPSB0aGlzLnN0ckRhdGVUb05nYkRhdGUodGhpcy5taW5EYXRlKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmZvY3VzSW5pdGlhbCA9PSB0cnVlICYmIHRoaXMuZGlzYWJsZWQgPT0gZmFsc2UpIHtcclxuICAgICAgY29uc3QgaW52YWxpZENvbnRyb2wgPVxyXG4gICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdbdHlwZT1cInRleHRcIl0nKTtcclxuICAgICAgaW52YWxpZENvbnRyb2wuZm9jdXMoKTtcclxuICAgICAgaW52YWxpZENvbnRyb2wuc2VsZWN0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZSA9IChfOiBhbnkpID0+IHt9O1xyXG4gIG9uVmFsaWRhdGlvbkNoYW5nZSA9ICgpID0+IHt9O1xyXG4gIG9uVG91Y2ggPSAoKSA9PiB7fTtcclxuXHJcbiAgZm9jdXMgPSAoKSA9PiB7XHJcbiAgICBjb25zdCBpbnZhbGlkQ29udHJvbCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdbdHlwZT1cInRleHRcIl0nKTtcclxuICAgIGludmFsaWRDb250cm9sLmZvY3VzKCk7XHJcbiAgICBpbnZhbGlkQ29udHJvbC5zZWxlY3QoKTtcclxuICB9O1xyXG5cclxuICBvbkZvY3VzKGV2dDogYW55KSB7XHJcbiAgICBpZiAoZXZ0KSB7XHJcbiAgICAgIGNvbnN0IGludmFsaWRDb250cm9sID1cclxuICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignW3R5cGU9XCJ0ZXh0XCJdJyk7XHJcbiAgICAgIGludmFsaWRDb250cm9sLnNlbGVjdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuc3RyRGF0ZVRvTmdiRGF0ZSh2YWx1ZSkgfHwgJyc7XHJcbiAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcclxuICAgICAgICB0aGlzLl90ZW1wVmFsdWUgPSBEYXRlVXRpbC5kYXRlQXV0b0NvbXBsZXRlKHZhbHVlKTtcclxuICAgICAgICBpZiAodGhpcy5jb250cm9scykge1xyXG4gICAgICAgICAgdGhpcy5fcmVuZGVyLnNldFByb3BlcnR5KHRoaXMuY29udHJvbHMsICd2YWx1ZScsIHRoaXMuX3RlbXBWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB0aGlzLl90ZW1wVmFsdWUgPSB2YWx1ZS50cmltKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnZhbHVlID0gJyc7XHJcbiAgICAgIHRoaXMuX3RlbXBWYWx1ZSA9ICcnO1xyXG4gICAgfVxyXG4gIH1cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoID0gZm47XHJcbiAgfVxyXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgYW55IHtcclxuICAgIHRoaXMuY29udHJvbHMgPSBjb250cm9sO1xyXG4gICAgaWYgKCF0aGlzLl9pbml0VmFsdWUpIHtcclxuICAgICAgaWYgKHRoaXMuX3RlbXBWYWx1ZSkge1xyXG4gICAgICAgIHRoaXMuX3JlbmRlci5zZXRQcm9wZXJ0eShjb250cm9sLCAndmFsdWUnLCB0aGlzLl90ZW1wVmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX2luaXRWYWx1ZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2U/KGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVmFsaWRhdGlvbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgb25CbHVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoKCk7XHJcbiAgfVxyXG5cclxuICBvbklucHV0KHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuZW1pdFZhbHVlID0gdmFsdWU7XHJcblxyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgaWYgKHRoaXMudmFsdWUgaW5zdGFuY2VvZiBOZ2JEYXRlKSB7XHJcbiAgICAgIHRoaXMuZW1pdFZhbHVlID0gdGhpcy5uZ2JEYXRldG9TdHJpbmcodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub25DaGFuZ2UodGhpcy5lbWl0VmFsdWUpO1xyXG4gICAgdGhpcy5vbmNoYW5nZS5lbWl0KHRoaXMuZW1pdFZhbHVlKTtcclxuICAgIHRoaXMuaW5wdXQuZW1pdCh0aGlzLmVtaXRWYWx1ZSk7XHJcblxyXG4gICAgdGhpcy5fdGVtcFZhbHVlID0gJyc7XHJcbiAgfVxyXG5cclxuICBvbktleVVwRW50ZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVudGVyS2V5VXAoKTtcclxuICB9XHJcblxyXG4gIG9ubHlOdW1iZXJzKGU6IGFueSkge1xyXG4gICAgaWYgKCEoZS5rZXlDb2RlID49IDQ4ICYmIGUua2V5Q29kZSA8PSA1NykgJiYgZS5rZXlDb2RlICE9IDQ3KSB7XHJcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0ckRhdGVUb05nYkRhdGUodmFsdWU6IGFueSkge1xyXG4gICAgY29uc3QgZGF0ZTogRGF0ZSA9IERhdGVVdGlsLnBhcnNlKHZhbHVlLCAnREFURScpO1xyXG4gICAgY29uc3QgbmdiRGF0ZTogTmdiRGF0ZVN0cnVjdCA9IHtcclxuICAgICAgZGF5OiBOdW1iZXIoRGF0ZVV0aWwuZ2V0RGF5KGRhdGUpKSxcclxuICAgICAgbW9udGg6IE51bWJlcihEYXRlVXRpbC5nZXRNb250aChkYXRlKSksXHJcbiAgICAgIHllYXI6IE51bWJlcihEYXRlVXRpbC5nZXRZZWFyKGRhdGUpKSxcclxuICAgIH07XHJcbiAgICAvLyByZXR1cm4gbmdiRGF0ZTtcclxuICAgIHJldHVybiBuZXcgTmdiRGF0ZShuZ2JEYXRlLnllYXIsIG5nYkRhdGUubW9udGgsIG5nYkRhdGUuZGF5KTtcclxuICB9XHJcblxyXG4gIG5nYkRhdGV0b1N0cmluZyh2YWx1ZTogTmdiRGF0ZVN0cnVjdCk6IE5nYkRhdGUgfCBzdHJpbmcge1xyXG4gICAgY29uc3QgY29uY2F0TmdiRGF0ZSA9XHJcbiAgICAgIGAwJHt2YWx1ZS5kYXl9YC5zbGljZSgtMikgKyBgMCR7dmFsdWUubW9udGh9YC5zbGljZSgtMikgKyB2YWx1ZS55ZWFyO1xyXG4gICAgcmV0dXJuIERhdGVVdGlsLmRhdGVBdXRvQ29tcGxldGUoY29uY2F0TmdiRGF0ZSk7XHJcbiAgfVxyXG5cclxuICBlbnRlcktleVVwKCkge1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIGxldCB2YWxpZGF0b3IgPSB0aGlzLnNoYXJlZENvbXBvbmVudHNVdGlsLnN0b3BCeVZhbGlkYXRvcihcclxuICAgICAgICB0aGlzLmNvbnRyb2xzLFxyXG4gICAgICAgIHRoaXMudmFsaWRhdG9yQWxlcnQsXHJcbiAgICAgICAgdGhpcy5sYWJlbFxyXG4gICAgICApO1xyXG4gICAgICBpZiAodmFsaWRhdG9yLmVycm9yKSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlVXRpbFNlcnZpY2UuZ2V0TWVzc2FnZUVycm9yKFxyXG4gICAgICAgICAgJzAwMDA0NicsXHJcbiAgICAgICAgICAnRXJyb3InLFxyXG4gICAgICAgICAgdmFsaWRhdG9yLm1lc3NhZ2VcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubmV4dCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgaWYgKHRoaXMubmV4dC5kaXNhYmxlZCB8fCB0aGlzLm5leHQucmVhZG9ubHkpIHtcclxuICAgICAgICBpZiAodGhpcy5uZXh0SXNEaXNhYmxlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgdGhpcy5uZXh0SXNEaXNhYmxlLmZvY3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubmV4dC5mb2N1cygpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5uZXh0SXNEaXNhYmxlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMubmV4dElzRGlzYWJsZS5mb2N1cygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMub25OZXh0LmVtaXQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXJyb3dVcEtleVVwKCkge1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIGxldCB2YWxpZGF0b3IgPSB0aGlzLnNoYXJlZENvbXBvbmVudHNVdGlsLnN0b3BCeVZhbGlkYXRvcihcclxuICAgICAgICB0aGlzLmNvbnRyb2xzLFxyXG4gICAgICAgIHRoaXMudmFsaWRhdG9yQWxlcnQsXHJcbiAgICAgICAgdGhpcy5sYWJlbFxyXG4gICAgICApO1xyXG4gICAgICBpZiAodmFsaWRhdG9yLmVycm9yKSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlVXRpbFNlcnZpY2UuZ2V0TWVzc2FnZUVycm9yKFxyXG4gICAgICAgICAgJzAwMDA0NicsXHJcbiAgICAgICAgICAnRXJyb3InLFxyXG4gICAgICAgICAgdmFsaWRhdG9yLm1lc3NhZ2VcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuYmFjayAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgaWYgKHRoaXMuYmFjay5kaXNhYmxlZCB8fCB0aGlzLmJhY2sucmVhZG9ubHkpIHtcclxuICAgICAgICBpZiAodGhpcy5iYWNrSXNEaXNhYmxlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgdGhpcy5iYWNrSXNEaXNhYmxlLmZvY3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYmFjay5mb2N1cygpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5iYWNrSXNEaXNhYmxlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMuYmFja0lzRGlzYWJsZS5mb2N1cygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMub25CYWNrLmVtaXQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9jdXNPdXQodmFsdWU6IGFueSkge1xyXG4gICAgaWYgKHZhbHVlICYmIHZhbHVlLnRyaW0oKSAhPT0gJycpIHtcclxuICAgICAgaWYgKHRoaXMuX3RlbXBWYWx1ZSA9PT0gdmFsdWUpIHJldHVybjtcclxuXHJcbiAgICAgIHRoaXMubmdiRGF0ZXBpY2tlci5jbG9zZSgpO1xyXG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBOZ2JEYXRlKSB7XHJcbiAgICAgICAgaWYgKHZhbHVlICE9PSB0aGlzLm5nYkRhdGV0b1N0cmluZyh2YWx1ZSkpIHtcclxuICAgICAgICAgIHRoaXMuZW1pdFZhbHVlID0gdGhpcy5uZ2JEYXRldG9TdHJpbmcodmFsdWUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmVtaXRWYWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2VBbGwoJy8nLCAnJyk7XHJcbiAgICAgICAgaWYgKHRoaXMubm9BdXRvQ29tcGxldGVOdWxsKSB7XHJcbiAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5zdHJEYXRlVG9OZ2JEYXRlKFxyXG4gICAgICAgICAgICBEYXRlVXRpbC5kYXRlQXV0b0NvbXBsZXRlKHZhbHVlKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMuZW1pdFZhbHVlID0gRGF0ZVV0aWwuZGF0ZUF1dG9Db21wbGV0ZSh2YWx1ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmICh2YWx1ZSAhPSAnJyAmJiB2YWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnN0ckRhdGVUb05nYkRhdGUoXHJcbiAgICAgICAgICAgICAgRGF0ZVV0aWwuZGF0ZUF1dG9Db21wbGV0ZSh2YWx1ZSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5lbWl0VmFsdWUgPSBEYXRlVXRpbC5kYXRlQXV0b0NvbXBsZXRlKHZhbHVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuZW1pdFZhbHVlKTtcclxuXHJcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5lbWl0VmFsdWUgPT09ICdzdHJpbmcnKSB0aGlzLl90ZW1wVmFsdWUgPSB0aGlzLmVtaXRWYWx1ZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGxhYmVsICpuZ0lmPVwibGFiZWwgIT0gbnVsbCAmJiBsYWJlbCAhPSAnJyAmJiBzaG93TGFiZWxcIiBjbGFzcz1cImQtZmxleCBzdW1heC1sYWJlbCBtYi0wIHAtMFwiXHJcbiAgPjxzcGFuIFt0aXRsZV09XCJsYWJlbFwiIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vd3JhcDsgb3ZlcmZsb3c6IGhpZGRlbjsgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXNcIj57eyBsYWJlbCB9fTwvc3Bhbj5cclxuICA8c3BhbiAqbmdJZj1cInJlcXVpcmVkXCIgY2xhc3M9XCJtcy0xXCIgW2NsYXNzLnRleHQtZGFuZ2VyXT1cImNvbnRyb2xzPy5lcnJvcnMgIT0gbnVsbFwiPiAqPC9zcGFuPlxyXG4gIDxzcGFuICpuZ0lmPVwibGFiZWxJbmZvXCI+XHJcbiAgICA8aSBjbGFzcz1cImZhIGZhLWV4Y2xhbWF0aW9uLWNpcmNsZSB0ZXh0LWluZm8gbXMtMlwiIFttYXRUb29sdGlwXT1cInRleHRMYWJlbEluZm9cIiBtYXRUb29sdGlwQ2xhc3M9XCJiZy1pbmZvXCI+PC9pPlxyXG4gIDwvc3Bhbj5cclxuPC9sYWJlbD5cclxuPGRpdlxyXG4gIFtjbGFzcy5pbnB1dC1pY29uXT1cImNvbnRyb2xzPy5lcnJvcnMgIT0gbnVsbCAmJiAoY29udHJvbHM/LmRpcnR5IHx8IGNvbnRyb2xzPy50b3VjaGVkKSAmJiBzdWJtaXR0ZWRcIlxyXG4gIFtjbGFzcy5yaWdodF09XCJjb250cm9scz8uZXJyb3JzICE9IG51bGwgJiYgKGNvbnRyb2xzPy5kaXJ0eSB8fCBjb250cm9scz8udG91Y2hlZCkgJiYgc3VibWl0dGVkXCI+XHJcbiAgPCEtLSB0b29sdGlwLW1lc3NhZ2UgZXMgZWwgaWNvbm8gZGUgZXJyb3IgLS0+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggcC0wIGdyb3VwLWlucHV0LWJ1dHRvbiBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgPHRvb2x0aXAtbWVzc2FnZVxyXG4gICAgW2xhYmVsXT1cImxhYmVsXCJcclxuICAgIFtjb250cm9sc109XCJjb250cm9sc1wiXHJcbiAgICBbdmFsaWRhdG9yTWVzc2FnZV09XCJ2YWxpZGF0b3JNZXNzYWdlXCJcclxuICAgIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCJcclxuICAgIFt0b29sdGlwTWVzc2FnZV09XCJ0b29sdGlwTWVzc2FnZVwiPjwvdG9vbHRpcC1tZXNzYWdlPlxyXG4gICAgPGlucHV0XHJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgW2F0dHIuYXV0b2NvbXBsZXRlXT1cImF1dG9jb21wbGV0ZVwiXHJcbiAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cImNvbnRyb2xzPy5lcnJvcnMgIT0gbnVsbCAmJiAoY29udHJvbHM/LmRpcnR5IHx8IGNvbnRyb2xzPy50b3VjaGVkKSAmJiBzdWJtaXR0ZWRcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAoa2V5dXAuZW50ZXIpPVwib25LZXlVcEVudGVyKClcIlxyXG4gICAgICAoa2V5dXAuQXJyb3dVcCk9XCJhcnJvd1VwS2V5VXAoKVwiXHJcbiAgICAgIChrZXlwcmVzcyk9XCJvbmx5TnVtYmVycygkZXZlbnQpXCJcclxuICAgICAgKGlucHV0KT1cIm9uSW5wdXQoJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSlcIlxyXG4gICAgICAoZGF0ZVNlbGVjdCk9XCJvbklucHV0KCRldmVudClcIlxyXG4gICAgICAoZm9jdXMpPVwib25Gb2N1cygkYW55KCRldmVudC50YXJnZXQpLnZhbHVlKVwiXHJcbiAgICAgIChmb2N1c291dCk9XCJmb2N1c091dCgkYW55KCRldmVudC50YXJnZXQpLnZhbHVlKVwiXHJcbiAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIHJvdW5kZWQtbGVmdCB1c2UtaW5wdXRcIlxyXG4gICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgcGxhY2Vob2xkZXI9XCJkZC9tbS95eXl5XCJcclxuICAgICAgW21pbkRhdGVdPVwibWluRGF0ZVwiXHJcbiAgICAgIFttYXhEYXRlXT1cIm1heERhdGVcIlxyXG4gICAgICBuYW1lPVwiZmVjaGFcIlxyXG4gICAgICBuZ2JEYXRlcGlja2VyXHJcbiAgICAgICNmZWNoYT1cIm5nYkRhdGVwaWNrZXJcIlxyXG4gICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCIgLz5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCByZWFkb25seVwiIGNsYXNzPVwiYnRuIGJ0bi1pbmZvIHAtMCByb3VuZGVkLTAgdXNlLWJ1dHRvblwiIChjbGljayk9XCJmZWNoYS50b2dnbGUoKVwiPlxyXG4gICAgICA8IS0tIDxtYXQtaWNvbiBjbGFzcz1cInRleHQtd2hpdGUgcHQtMVwiIHN0eWxlPVwiZm9udC1zaXplOiAxOHB4O1wiIFttYXRUb29sdGlwXT1cIidDYWxlbmRhcmlvJ1wiIG1hdFRvb2x0aXBDbGFzcz1cImJnLWluZm9cIj5jYWxlbmRhcl90b2RheTwvbWF0LWljb24+IC0tPlxyXG4gICAgICA8aSBjbGFzcz1cImZhIGZhLWNhbGVuZGFyIHRleHQtd2hpdGUgcHgtMVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuPCEtLSBlcnJvci1tZXNzYWdlIGVzIGVsIG1hbnNhamUgcXVlIGFwYXJlY2UgYWJham8gZGVsIGNvbXBvbmVudGUgLS0+XHJcbjxlcnJvci1tZXNzYWdlXHJcbiAgW2xhYmVsXT1cImxhYmVsXCJcclxuICBbY29udHJvbHNdPVwiY29udHJvbHNcIlxyXG4gIFt2YWxpZGF0b3JNZXNzYWdlXT1cInZhbGlkYXRvck1lc3NhZ2VcIlxyXG4gIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCJcclxuICBbdG9vbHRpcE1lc3NhZ2VdPVwidG9vbHRpcE1lc3NhZ2VcIj48L2Vycm9yLW1lc3NhZ2U+XHJcbiJdfQ==
@@ -18,7 +18,7 @@ export class InputNumberComponent {
18
18
  this.showLabel = true;
19
19
  this.label = null;
20
20
  this.btnEnable = false;
21
- this.autocomplete = 'off';
21
+ this.autocomplete = 'no-autocomplete-input-number';
22
22
  this.bold = false;
23
23
  this.decimals = -1;
24
24
  this.formatCero = false;
@@ -266,7 +266,7 @@ export class InputNumberComponent {
266
266
  useExisting: forwardRef(() => InputNumberComponent),
267
267
  multi: true
268
268
  }
269
- ], viewQueries: [{ propertyName: "inputText", first: true, predicate: ["inputText"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<label *ngIf=\"label != null && label != '' && showLabel\" class=\"d-flex sumax-label mb-0 p-0\"\r\n\t><span [title]=\"label\" style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis\">{{ label }}</span>\r\n\t<span *ngIf=\"required\" class=\"ms-1\" [class.text-danger]=\"controls?.errors != null\"> *</span>\r\n\t<span *ngIf=\"labelInfo\">\r\n\t\t<i class=\"fa fa-exclamation-circle text-info ms-2\" [matTooltip]=\"textLabelInfo\" matTooltipClass=\"bg-info\"></i>\r\n\t</span>\r\n</label>\r\n<div\r\n\t[class.input-icon]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\r\n\t[class.right]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\r\n>\r\n\t<div class=\"d-flex\">\r\n\t\t<div class=\"w-100 position-relative\">\r\n\t\t\t<tooltip-message\r\n\t\t\t\t[label]=\"label\"\r\n\t\t\t\t[controls]=\"controls\"\r\n\t\t\t\t[validatorMessage]=\"validatorMessage\"\r\n\t\t\t\t[tooltipMessage]=\"tooltipMessage\"\r\n\t\t\t\t[submitted]=\"submitted\"\r\n\t\t\t></tooltip-message>\r\n\t\t\t<input\r\n\t\t\t\t#inputText\r\n\t\t\t\ttype=\"text\"\r\n\t\t\t\tclass=\"form-control form-control-sm text-end\"\r\n\t\t\t\t[class.is-invalid]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\r\n\t\t\t\t[(ngModel)]=\"value\"\r\n\t\t\t\t[disabled]=\"disabled\"\r\n\t\t\t\t[readonly]=\"readonly\"\r\n\t\t\t\t[mask]=\"format\"\r\n\t\t\t\tthousandSeparator=\",\"\r\n\t\t\t\t(blur)=\"onBlur($any($event.target).value)\"\r\n\t\t\t\t(input)=\"onInput($any($event.target).value)\"\r\n\t\t\t\t(focusout)=\"onFocusOut($any($event.target).value)\"\r\n\t\t\t\t[autocomplete]=\"autocomplete\"\r\n\t\t\t\t[placeholder]=\"placeholder\"\r\n\t\t\t\t(focus)=\"onFocus($any($event.target).value)\"\r\n\t\t\t\t[attr.maxLength]=\"maxLength\"\r\n\t\t\t\t(keyup.enter)=\"enterKeyUp()\"\r\n\t\t\t\t(keyup.ArrowUp)=\"arrowUpKeyUp()\"\r\n\t\t\t\t[ngClass]=\"setNgClass\"\r\n\t\t\t\t[class.bold]=\"bold\"\r\n\t\t\t\t[allowNegativeNumbers]=\"allowNegativeNumbers\"\r\n\t\t\t\t[leadZero]=\"!allowNegativeNumbers\"\r\n\t\t\t/>\r\n\t\t</div>\r\n\t\t<div class=\"bd-highlight\" *ngIf=\"btnEnable\">\r\n\t\t\t<button type=\"button\" class=\"btn btn-info p-0 rounded-0 h-100\" (click)=\"clickEnable()\">\r\n\t\t\t\t<i class=\"fa fa-check text-white px-1\" [matTooltip]=\"'Habilitar'\" matTooltipClass=\"bg-info\"></i>\r\n\t\t\t</button>\r\n\t\t</div>\r\n\t\t<ng-content select=\"[more-buttons]\"></ng-content>\r\n\t</div>\r\n</div>\r\n<error-message\r\n\t[label]=\"label\"\r\n\t[controls]=\"controls\"\r\n\t[validatorMessage]=\"validatorMessage\"\r\n\t[tooltipMessage]=\"tooltipMessage\"\r\n\t[submitted]=\"submitted\"\r\n></error-message>\r\n", styles: [".sumax-label{color:#646c9a!important}.input-icon tooltip-message{color:#ccc;position:absolute;z-index:3;width:16px;font-size:16px;text-align:center;right:10px;top:50%;transform:translateY(-50%)}.input-icon.right>.form-control{padding-right:33px;padding-left:12px}.bold{color:#000;font-weight:700}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#dc3545;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}.was-validated .form-control:invalid,.form-control.is-invalid{background-image:none;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}.form-control:focus,.form-control:active{border-color:#007eff;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #007eff1a!important}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.errorMessageComponent, selector: "error-message", inputs: ["tooltipMessage", "validatorMessage", "controls", "label", "submitted"] }, { kind: "component", type: i6.tooltipMessageComponent, selector: "tooltip-message", inputs: ["tooltipMessage", "validatorMessage", "controls", "label", "submitted"] }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i8.NgxMaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "showTemplate", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "leadZero", "triggerOnMaskChange", "apm", "inputTransformFn", "outputTransformFn", "keepCharacterPositions"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }] }); }
269
+ ], viewQueries: [{ propertyName: "inputText", first: true, predicate: ["inputText"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<label *ngIf=\"label != null && label != '' && showLabel\" class=\"d-flex sumax-label mb-0 p-0\"\r\n\t><span [title]=\"label\" style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis\">{{ label }}</span>\r\n\t<span *ngIf=\"required\" class=\"ms-1\" [class.text-danger]=\"controls?.errors != null\"> *</span>\r\n\t<span *ngIf=\"labelInfo\">\r\n\t\t<i class=\"fa fa-exclamation-circle text-info ms-2\" [matTooltip]=\"textLabelInfo\" matTooltipClass=\"bg-info\"></i>\r\n\t</span>\r\n</label>\r\n<div\r\n\t[class.input-icon]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\r\n\t[class.right]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\r\n>\r\n\t<div class=\"d-flex\">\r\n\t\t<div class=\"w-100 position-relative\">\r\n\t\t\t<tooltip-message\r\n\t\t\t\t[label]=\"label\"\r\n\t\t\t\t[controls]=\"controls\"\r\n\t\t\t\t[validatorMessage]=\"validatorMessage\"\r\n\t\t\t\t[tooltipMessage]=\"tooltipMessage\"\r\n\t\t\t\t[submitted]=\"submitted\"\r\n\t\t\t></tooltip-message>\r\n\t\t\t<input\r\n\t\t\t\t#inputText\r\n\t\t\t\ttype=\"text\"\r\n\t\t\t\tclass=\"form-control form-control-sm text-end\"\r\n\t\t\t\t[class.is-invalid]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\r\n\t\t\t\t[(ngModel)]=\"value\"\r\n\t\t\t\t[disabled]=\"disabled\"\r\n\t\t\t\t[readonly]=\"readonly\"\r\n\t\t\t\t[mask]=\"format\"\r\n\t\t\t\tthousandSeparator=\",\"\r\n\t\t\t\t(blur)=\"onBlur($any($event.target).value)\"\r\n\t\t\t\t(input)=\"onInput($any($event.target).value)\"\r\n\t\t\t\t(focusout)=\"onFocusOut($any($event.target).value)\"\r\n\t\t\t\t[attr.autocomplete]=\"autocomplete\"\r\n\t\t\t\t[placeholder]=\"placeholder\"\r\n\t\t\t\t(focus)=\"onFocus($any($event.target).value)\"\r\n\t\t\t\t[attr.maxLength]=\"maxLength\"\r\n\t\t\t\t(keyup.enter)=\"enterKeyUp()\"\r\n\t\t\t\t(keyup.ArrowUp)=\"arrowUpKeyUp()\"\r\n\t\t\t\t[ngClass]=\"setNgClass\"\r\n\t\t\t\t[class.bold]=\"bold\"\r\n\t\t\t\t[allowNegativeNumbers]=\"allowNegativeNumbers\"\r\n\t\t\t\t[leadZero]=\"!allowNegativeNumbers\"\r\n\t\t\t/>\r\n\t\t</div>\r\n\t\t<div class=\"bd-highlight\" *ngIf=\"btnEnable\">\r\n\t\t\t<button type=\"button\" class=\"btn btn-info p-0 rounded-0 h-100\" (click)=\"clickEnable()\">\r\n\t\t\t\t<i class=\"fa fa-check text-white px-1\" [matTooltip]=\"'Habilitar'\" matTooltipClass=\"bg-info\"></i>\r\n\t\t\t</button>\r\n\t\t</div>\r\n\t\t<ng-content select=\"[more-buttons]\"></ng-content>\r\n\t</div>\r\n</div>\r\n<error-message\r\n\t[label]=\"label\"\r\n\t[controls]=\"controls\"\r\n\t[validatorMessage]=\"validatorMessage\"\r\n\t[tooltipMessage]=\"tooltipMessage\"\r\n\t[submitted]=\"submitted\"\r\n></error-message>\r\n", styles: [".sumax-label{color:#646c9a!important}.input-icon tooltip-message{color:#ccc;position:absolute;z-index:3;width:16px;font-size:16px;text-align:center;right:10px;top:50%;transform:translateY(-50%)}.input-icon.right>.form-control{padding-right:33px;padding-left:12px}.bold{color:#000;font-weight:700}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#dc3545;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}.was-validated .form-control:invalid,.form-control.is-invalid{background-image:none;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}.form-control:focus,.form-control:active{border-color:#007eff;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #007eff1a!important}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.errorMessageComponent, selector: "error-message", inputs: ["tooltipMessage", "validatorMessage", "controls", "label", "submitted"] }, { kind: "component", type: i6.tooltipMessageComponent, selector: "tooltip-message", inputs: ["tooltipMessage", "validatorMessage", "controls", "label", "submitted"] }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i8.NgxMaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "showTemplate", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "leadZero", "triggerOnMaskChange", "apm", "inputTransformFn", "outputTransformFn", "keepCharacterPositions"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }] }); }
270
270
  }
271
271
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: InputNumberComponent, decorators: [{
272
272
  type: Component,
@@ -281,7 +281,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
281
281
  useExisting: forwardRef(() => InputNumberComponent),
282
282
  multi: true
283
283
  }
284
- ], template: "<label *ngIf=\"label != null && label != '' && showLabel\" class=\"d-flex sumax-label mb-0 p-0\"\r\n\t><span [title]=\"label\" style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis\">{{ label }}</span>\r\n\t<span *ngIf=\"required\" class=\"ms-1\" [class.text-danger]=\"controls?.errors != null\"> *</span>\r\n\t<span *ngIf=\"labelInfo\">\r\n\t\t<i class=\"fa fa-exclamation-circle text-info ms-2\" [matTooltip]=\"textLabelInfo\" matTooltipClass=\"bg-info\"></i>\r\n\t</span>\r\n</label>\r\n<div\r\n\t[class.input-icon]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\r\n\t[class.right]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\r\n>\r\n\t<div class=\"d-flex\">\r\n\t\t<div class=\"w-100 position-relative\">\r\n\t\t\t<tooltip-message\r\n\t\t\t\t[label]=\"label\"\r\n\t\t\t\t[controls]=\"controls\"\r\n\t\t\t\t[validatorMessage]=\"validatorMessage\"\r\n\t\t\t\t[tooltipMessage]=\"tooltipMessage\"\r\n\t\t\t\t[submitted]=\"submitted\"\r\n\t\t\t></tooltip-message>\r\n\t\t\t<input\r\n\t\t\t\t#inputText\r\n\t\t\t\ttype=\"text\"\r\n\t\t\t\tclass=\"form-control form-control-sm text-end\"\r\n\t\t\t\t[class.is-invalid]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\r\n\t\t\t\t[(ngModel)]=\"value\"\r\n\t\t\t\t[disabled]=\"disabled\"\r\n\t\t\t\t[readonly]=\"readonly\"\r\n\t\t\t\t[mask]=\"format\"\r\n\t\t\t\tthousandSeparator=\",\"\r\n\t\t\t\t(blur)=\"onBlur($any($event.target).value)\"\r\n\t\t\t\t(input)=\"onInput($any($event.target).value)\"\r\n\t\t\t\t(focusout)=\"onFocusOut($any($event.target).value)\"\r\n\t\t\t\t[autocomplete]=\"autocomplete\"\r\n\t\t\t\t[placeholder]=\"placeholder\"\r\n\t\t\t\t(focus)=\"onFocus($any($event.target).value)\"\r\n\t\t\t\t[attr.maxLength]=\"maxLength\"\r\n\t\t\t\t(keyup.enter)=\"enterKeyUp()\"\r\n\t\t\t\t(keyup.ArrowUp)=\"arrowUpKeyUp()\"\r\n\t\t\t\t[ngClass]=\"setNgClass\"\r\n\t\t\t\t[class.bold]=\"bold\"\r\n\t\t\t\t[allowNegativeNumbers]=\"allowNegativeNumbers\"\r\n\t\t\t\t[leadZero]=\"!allowNegativeNumbers\"\r\n\t\t\t/>\r\n\t\t</div>\r\n\t\t<div class=\"bd-highlight\" *ngIf=\"btnEnable\">\r\n\t\t\t<button type=\"button\" class=\"btn btn-info p-0 rounded-0 h-100\" (click)=\"clickEnable()\">\r\n\t\t\t\t<i class=\"fa fa-check text-white px-1\" [matTooltip]=\"'Habilitar'\" matTooltipClass=\"bg-info\"></i>\r\n\t\t\t</button>\r\n\t\t</div>\r\n\t\t<ng-content select=\"[more-buttons]\"></ng-content>\r\n\t</div>\r\n</div>\r\n<error-message\r\n\t[label]=\"label\"\r\n\t[controls]=\"controls\"\r\n\t[validatorMessage]=\"validatorMessage\"\r\n\t[tooltipMessage]=\"tooltipMessage\"\r\n\t[submitted]=\"submitted\"\r\n></error-message>\r\n", styles: [".sumax-label{color:#646c9a!important}.input-icon tooltip-message{color:#ccc;position:absolute;z-index:3;width:16px;font-size:16px;text-align:center;right:10px;top:50%;transform:translateY(-50%)}.input-icon.right>.form-control{padding-right:33px;padding-left:12px}.bold{color:#000;font-weight:700}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#dc3545;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}.was-validated .form-control:invalid,.form-control.is-invalid{background-image:none;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}.form-control:focus,.form-control:active{border-color:#007eff;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #007eff1a!important}\n"] }]
284
+ ], template: "<label *ngIf=\"label != null && label != '' && showLabel\" class=\"d-flex sumax-label mb-0 p-0\"\r\n\t><span [title]=\"label\" style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis\">{{ label }}</span>\r\n\t<span *ngIf=\"required\" class=\"ms-1\" [class.text-danger]=\"controls?.errors != null\"> *</span>\r\n\t<span *ngIf=\"labelInfo\">\r\n\t\t<i class=\"fa fa-exclamation-circle text-info ms-2\" [matTooltip]=\"textLabelInfo\" matTooltipClass=\"bg-info\"></i>\r\n\t</span>\r\n</label>\r\n<div\r\n\t[class.input-icon]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\r\n\t[class.right]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\r\n>\r\n\t<div class=\"d-flex\">\r\n\t\t<div class=\"w-100 position-relative\">\r\n\t\t\t<tooltip-message\r\n\t\t\t\t[label]=\"label\"\r\n\t\t\t\t[controls]=\"controls\"\r\n\t\t\t\t[validatorMessage]=\"validatorMessage\"\r\n\t\t\t\t[tooltipMessage]=\"tooltipMessage\"\r\n\t\t\t\t[submitted]=\"submitted\"\r\n\t\t\t></tooltip-message>\r\n\t\t\t<input\r\n\t\t\t\t#inputText\r\n\t\t\t\ttype=\"text\"\r\n\t\t\t\tclass=\"form-control form-control-sm text-end\"\r\n\t\t\t\t[class.is-invalid]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\r\n\t\t\t\t[(ngModel)]=\"value\"\r\n\t\t\t\t[disabled]=\"disabled\"\r\n\t\t\t\t[readonly]=\"readonly\"\r\n\t\t\t\t[mask]=\"format\"\r\n\t\t\t\tthousandSeparator=\",\"\r\n\t\t\t\t(blur)=\"onBlur($any($event.target).value)\"\r\n\t\t\t\t(input)=\"onInput($any($event.target).value)\"\r\n\t\t\t\t(focusout)=\"onFocusOut($any($event.target).value)\"\r\n\t\t\t\t[attr.autocomplete]=\"autocomplete\"\r\n\t\t\t\t[placeholder]=\"placeholder\"\r\n\t\t\t\t(focus)=\"onFocus($any($event.target).value)\"\r\n\t\t\t\t[attr.maxLength]=\"maxLength\"\r\n\t\t\t\t(keyup.enter)=\"enterKeyUp()\"\r\n\t\t\t\t(keyup.ArrowUp)=\"arrowUpKeyUp()\"\r\n\t\t\t\t[ngClass]=\"setNgClass\"\r\n\t\t\t\t[class.bold]=\"bold\"\r\n\t\t\t\t[allowNegativeNumbers]=\"allowNegativeNumbers\"\r\n\t\t\t\t[leadZero]=\"!allowNegativeNumbers\"\r\n\t\t\t/>\r\n\t\t</div>\r\n\t\t<div class=\"bd-highlight\" *ngIf=\"btnEnable\">\r\n\t\t\t<button type=\"button\" class=\"btn btn-info p-0 rounded-0 h-100\" (click)=\"clickEnable()\">\r\n\t\t\t\t<i class=\"fa fa-check text-white px-1\" [matTooltip]=\"'Habilitar'\" matTooltipClass=\"bg-info\"></i>\r\n\t\t\t</button>\r\n\t\t</div>\r\n\t\t<ng-content select=\"[more-buttons]\"></ng-content>\r\n\t</div>\r\n</div>\r\n<error-message\r\n\t[label]=\"label\"\r\n\t[controls]=\"controls\"\r\n\t[validatorMessage]=\"validatorMessage\"\r\n\t[tooltipMessage]=\"tooltipMessage\"\r\n\t[submitted]=\"submitted\"\r\n></error-message>\r\n", styles: [".sumax-label{color:#646c9a!important}.input-icon tooltip-message{color:#ccc;position:absolute;z-index:3;width:16px;font-size:16px;text-align:center;right:10px;top:50%;transform:translateY(-50%)}.input-icon.right>.form-control{padding-right:33px;padding-left:12px}.bold{color:#000;font-weight:700}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#dc3545;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}.was-validated .form-control:invalid,.form-control.is-invalid{background-image:none;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}.form-control:focus,.form-control:active{border-color:#007eff;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #007eff1a!important}\n"] }]
285
285
  }], ctorParameters: () => [{ type: i1.MessageUtilService }, { type: i2.InputNumberService }, { type: i0.Renderer2 }], propDecorators: { showLabel: [{
286
286
  type: Input
287
287
  }], label: [{
@@ -348,4 +348,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
348
348
  type: ViewChild,
349
349
  args: ['inputText']
350
350
  }] } });
351
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zdW1heC1lcnAtY29tcG9uZW50L3NyYy9saWIvaW5wdXQtbnVtYmVyL2lucHV0LW51bWJlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3VtYXgtZXJwLWNvbXBvbmVudC9zcmMvbGliL2lucHV0LW51bWJlci9pbnB1dC1udW1iZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVOLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFHTCxNQUFNLEVBR04sU0FBUyxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFHTixhQUFhLEVBQ2IsaUJBQWlCLEVBRWpCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7QUFvQnJFLE1BQU0sT0FBTyxvQkFBb0I7SUEyQ2hDLFlBQ1Msa0JBQXNDLEVBQ3RDLGtCQUFzQyxFQUN0QyxPQUFrQjtRQUZsQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsWUFBTyxHQUFQLE9BQU8sQ0FBVztRQTdDbEIsY0FBUyxHQUFZLElBQUksQ0FBQztRQUMxQixVQUFLLEdBQVEsSUFBSSxDQUFDO1FBQ2xCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0IsaUJBQVksR0FBVyxLQUFLLENBQUM7UUFDN0IsU0FBSSxHQUFZLEtBQUssQ0FBQztRQUN0QixhQUFRLEdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDdEIsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUM1QixjQUFTLEdBQVEsSUFBSSxDQUFDO1FBS3RCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIs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QkFBakIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0ksTUFBTTtzQkFBZixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxJQUFJO3NCQUFiLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNpQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG5cdEFmdGVyVmlld0luaXQsXHJcblx0Q29tcG9uZW50LFxyXG5cdEVsZW1lbnRSZWYsXHJcblx0RXZlbnRFbWl0dGVyLFxyXG5cdGZvcndhcmRSZWYsXHJcblx0SW5wdXQsXHJcblx0T25DaGFuZ2VzLFxyXG5cdE9uSW5pdCxcclxuXHRPdXRwdXQsXHJcblx0UmVuZGVyZXIyLFxyXG5cdFNpbXBsZUNoYW5nZXMsXHJcblx0Vmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcblx0QWJzdHJhY3RDb250cm9sLFxyXG5cdENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxyXG5cdE5HX1ZBTElEQVRPUlMsXHJcblx0TkdfVkFMVUVfQUNDRVNTT1IsXHJcblx0VmFsaWRhdGlvbkVycm9yc1xyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgSW5wdXROdW1iZXJTZXJ2aWNlIH0gZnJvbSAnLi9pbnB1dC1udW1iZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFNoYXJlZENvbXBvbmVudHNVdGlsIH0gZnJvbSAnLi4vdXRpbHMvU2hhcmVkQ29tcG9uZW50c1V0aWwnO1xyXG5pbXBvcnQgeyBNZXNzYWdlVXRpbFNlcnZpY2UgfSBmcm9tICcuLi91dGlscy9tZXNzYWdlLXV0aWwuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2lucHV0LW51bWJlcicsXHJcblx0dGVtcGxhdGVVcmw6ICcuL2lucHV0LW51bWJlci5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5zY3NzJ10sXHJcblx0cHJvdmlkZXJzOiBbXHJcblx0XHR7XHJcblx0XHRcdHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG5cdFx0XHR1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbnB1dE51bWJlckNvbXBvbmVudCksXHJcblx0XHRcdG11bHRpOiB0cnVlXHJcblx0XHR9LFxyXG5cdFx0e1xyXG5cdFx0XHRwcm92aWRlOiBOR19WQUxJREFUT1JTLFxyXG5cdFx0XHR1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbnB1dE51bWJlckNvbXBvbmVudCksXHJcblx0XHRcdG11bHRpOiB0cnVlXHJcblx0XHR9XHJcblx0XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5wdXROdW1iZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cdEBJbnB1dCgpIHNob3dMYWJlbDogYm9vbGVhbiA9IHRydWU7XHJcblx0QElucHV0KCkgbGFiZWw6IGFueSA9IG51bGw7XHJcblx0QElucHV0KCkgYnRuRW5hYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblx0QElucHV0KCkgYXV0b2NvbXBsZXRlOiBzdHJpbmcgPSAnb2ZmJztcclxuXHRASW5wdXQoKSBib2xkOiBib29sZWFuID0gZmFsc2U7XHJcblx0QElucHV0KCkgZGVjaW1hbHM6IG51bWJlciA9IC0xO1xyXG5cdEBJbnB1dCgpIGZvcm1hdENlcm86IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRASW5wdXQoKSBtYXhMZW5ndGg6IGFueSA9IG51bGw7XHJcblx0QElucHV0KCkgbmV4dDogYW55O1xyXG5cdEBJbnB1dCgpIG5leHRJc0Rpc2FibGU6IGFueTtcclxuXHRASW5wdXQoKSBiYWNrOiBhbnk7XHJcblx0QElucHV0KCkgYmFja0lzRGlzYWJsZTogYW55O1xyXG5cdEBJbnB1dCgpIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcblx0QElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRASW5wdXQoKSByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdEBJbnB1dCgpIHZhbGlkYXRvck1lc3NhZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRASW5wdXQoKSB0b29sdGlwTWVzc2FnZTogYm9vbGVhbiA9IHRydWU7XHJcblx0QElucHV0KCkgc3VibWl0dGVkOiBib29sZWFuID0gdHJ1ZTtcclxuXHRASW5wdXQoKSBsYWJlbEluZm86IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRASW5wdXQoKSB0ZXh0TGFiZWxJbmZvOiBzdHJpbmcgPSAnJztcclxuXHRASW5wdXQoKSB2YWxpZGF0b3JBbGVydDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdEBJbnB1dCgpIHNldE5nQ2xhc3M6IHN0cmluZyA9ICcnO1xyXG5cdEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcclxuXHRASW5wdXQoKSBhbGxvd05lZ2F0aXZlTnVtYmVyczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdEBPdXRwdXQoKSBvbk5leHQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdEBPdXRwdXQoKSBvbkJhY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdEBPdXRwdXQoKSBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdEBPdXRwdXQoKSBvbmNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblx0QE91dHB1dCgpIGJsdXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdEBPdXRwdXQoKSBvbmZvY3VzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHRAT3V0cHV0KCkgb25mb2N1c291dDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblx0QFZpZXdDaGlsZCgnaW5wdXRUZXh0JykgaW5wdXRUZXh0ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuXHJcblx0c2hhcmVkQ29tcG9uZW50c1V0aWwgPSBuZXcgU2hhcmVkQ29tcG9uZW50c1V0aWwoKTtcclxuXHJcblx0Zm9ybWF0ID0gJ3NlcGFyYXRvcic7XHJcblxyXG5cdGNvbnRyb2xzOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsID0gbnVsbDtcclxuXHR2YWx1ZTogYW55O1xyXG5cdHZhbHVlRW1pdDogYW55O1xyXG5cdF9pbml0VmFsdWUgPSBmYWxzZTtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIG1lc3NhZ2VVdGlsU2VydmljZTogTWVzc2FnZVV0aWxTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBpbnB1dE51bWJlclNlcnZpY2U6IElucHV0TnVtYmVyU2VydmljZSxcclxuXHRcdHByaXZhdGUgX3JlbmRlcjogUmVuZGVyZXIyXHJcblx0KSB7XHJcblx0XHR0aGlzLmRlY2ltYWxzID0gdGhpcy5pbnB1dE51bWJlclNlcnZpY2UuZ2V0RGVjaW1hbHMoKTtcclxuXHRcdHRoaXMuZm9ybWF0Q2VybyA9IHRoaXMuaW5wdXROdW1iZXJTZXJ2aWNlLmdldEZvcm1hdENlcm8oKTtcclxuXHRcdHRoaXMuYnRuRW5hYmxlID0gdGhpcy5pbnB1dE51bWJlclNlcnZpY2UuZ2V0QnRuRW5hYmxlKCk7XHJcblx0XHR0aGlzLmJvbGQgPSB0aGlzLmlucHV0TnVtYmVyU2VydmljZS5nZXRCb2xkKCk7XHJcblx0XHR0aGlzLnZhbGlkYXRvck1lc3NhZ2UgPSB0aGlzLmlucHV0TnVtYmVyU2VydmljZS5nZXRWYWxpZGF0b3JNZXNzYWdlKCk7XHJcblx0XHR0aGlzLnRvb2x0aXBNZXNzYWdlID0gdGhpcy5pbnB1dE51bWJlclNlcnZpY2UuZ2V0VG9vbHRpcE1lc3NhZ2UoKTtcclxuXHRcdHRoaXMuc3VibWl0dGVkID0gdGhpcy5pbnB1dE51bWJlclNlcnZpY2UuZ2V0U3VibWl0dGVkKCk7XHJcblx0XHR0aGlzLnZhbGlkYXRvckFsZXJ0ID0gdGhpcy5pbnB1dE51bWJlclNlcnZpY2UuZ2V0VmFsaWRhdG9yQWxlcnQoKTtcclxuXHR9XHJcblxyXG5cdG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuXHRcdGlmIChjaGFuZ2VzWydzdWJtaXR0ZWQnXSkge1xyXG5cdFx0XHRpZiAodGhpcy5jb250cm9scyAhPSBudWxsICYmIGNoYW5nZXNbJ3N1Ym1pdHRlZCddLmN1cnJlbnRWYWx1ZSkge1xyXG5cdFx0XHRcdHRoaXMuY29udHJvbHMubWFya0FzRGlydHkoKTtcclxuXHRcdFx0XHR0aGlzLmNvbnRyb2xzLm1hcmtBc1RvdWNoZWQoKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0bmdPbkluaXQoKSB7XHJcblx0XHRpZiAodGhpcy5kZWNpbWFscyAhPSAtMSkge1xyXG5cdFx0XHR0aGlzLmZvcm1hdCA9ICdzZXBhcmF0b3InICsgJy4nICsgdGhpcy5kZWNpbWFscy50b1N0cmluZygpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5mb3JtYXQgPSAnc2VwYXJhdG9yJztcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHt9XHJcblxyXG5cdG9uQ2hhbmdlID0gKF86IGFueSkgPT4ge307XHJcblx0b25WYWxpZGF0aW9uQ2hhbmdlID0gKCkgPT4ge307XHJcblx0b25Ub3VjaCA9ICgpID0+IHt9O1xyXG5cdGZvY3VzID0gKCkgPT4ge1xyXG5cdFx0dGhpcy5pbnB1dFRleHQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG5cdFx0dGhpcy5pbnB1dFRleHQubmF0aXZlRWxlbWVudC5zZWxlY3QoKTtcclxuXHR9O1xyXG5cclxuXHRvbkJsdXIodmFsdWU6IGFueSkge1xyXG5cdFx0dGhpcy5vblRvdWNoKCk7XHJcblx0XHRpZiAoKHZhbHVlID09ICcnIHx8IHZhbHVlID09IG51bGwpICYmIHRoaXMuZm9ybWF0Q2Vybykge1xyXG5cdFx0XHR2YWx1ZSA9IDA7XHJcblx0XHR9XHJcblx0XHRjb25zdCBuZXdWYWx1ZSA9IHRoaXMuZm9ybWF0TnVtYmVyKHZhbHVlKTtcclxuXHJcblx0XHRpZiAodGhpcy52YWx1ZSAhPT0gbmV3VmFsdWUpIHtcclxuXHRcdFx0dGhpcy52YWx1ZSA9IG5ld1ZhbHVlO1xyXG5cdFx0XHR0aGlzLm9uQ2hhbmdlKHRoaXMuZW1pdFZhbHVlKG5ld1ZhbHVlKSk7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gaWYgKG5ld1ZhbHVlKSB7XHJcblx0XHR0aGlzLm9uVmFsaWRhdGlvbkNoYW5nZSgpO1xyXG5cdFx0dGhpcy5ibHVyLmVtaXQodGhpcy5lbWl0VmFsdWUobmV3VmFsdWUpKTtcclxuXHRcdC8vIH1cclxuXHR9XHJcblxyXG5cdG9uRm9jdXMoZXZ0OiBhbnkpIHtcclxuXHRcdHRoaXMuaW5wdXRUZXh0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0KCk7XHJcblx0XHR0aGlzLm9uZm9jdXMuZW1pdChldnQpO1xyXG5cdH1cclxuXHJcblx0b25JbnB1dChldnQ6IGFueSkge1xyXG5cdFx0dGhpcy5vblRvdWNoKCk7XHJcblx0XHR0aGlzLm9uQ2hhbmdlKHRoaXMuZW1pdFZhbHVlKGV2dCkpO1xyXG5cdFx0dGhpcy5vblZhbGlkYXRpb25DaGFuZ2UoKTtcclxuXHRcdHRoaXMuY2hhbmdlLmVtaXQodGhpcy5lbWl0VmFsdWUoZXZ0KSk7XHJcblx0XHR0aGlzLm9uY2hhbmdlLmVtaXQodGhpcy5lbWl0VmFsdWUoZXZ0KSk7XHJcblx0fVxyXG5cclxuXHR3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuXHRcdGlmICh2YWx1ZSAhPSBudWxsKSB7XHJcblx0XHRcdHRoaXMudmFsdWUgPSB0aGlzLmZvcm1hdE51bWJlcih2YWx1ZSk7XHJcblxyXG5cdFx0XHRpZiAodGhpcy52YWx1ZSA9PT0gJ05hTicpIHtcclxuXHRcdFx0XHRpZiAodGhpcy5jb250cm9scykge1xyXG5cdFx0XHRcdFx0dGhpcy5fcmVuZGVyLnNldFByb3BlcnR5KHRoaXMuY29udHJvbHMsICd2YWx1ZScsIG51bGwpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ05vdCBhIG51bWJlcicpO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAodGhpcy5jb250cm9scykge1xyXG5cdFx0XHRcdHRoaXMuX3JlbmRlci5zZXRQcm9wZXJ0eSh0aGlzLmNvbnRyb2xzLCAndmFsdWUnLCBOdW1iZXIodGhpcy52YWx1ZSkpO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLnZhbHVlID0gbnVsbDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG5cdFx0dGhpcy5vbkNoYW5nZSA9IGZuO1xyXG5cdH1cclxuXHJcblx0cmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG5cdFx0dGhpcy5vblRvdWNoID0gZm47XHJcblx0fVxyXG5cclxuXHRzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuXHRcdHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG5cdH1cclxuXHJcblx0dmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IGFueSB7XHJcblx0XHR0aGlzLmNvbnRyb2xzID0gY29udHJvbDtcclxuXHJcblx0XHRpZiAoIXRoaXMuX2luaXRWYWx1ZSkge1xyXG5cdFx0XHRpZiAodGhpcy52YWx1ZSA9PT0gJ05hTicpIHtcclxuXHRcdFx0XHR0aGlzLl9yZW5kZXIuc2V0UHJvcGVydHkodGhpcy5jb250cm9scywgJ3ZhbHVlJywgbnVsbCk7XHJcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdOb3QgYSBudW1iZXInKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKHRoaXMudmFsdWUgIT09IG51bGwpIHtcclxuXHRcdFx0XHR0aGlzLl9yZW5kZXIuc2V0UHJvcGVydHkodGhpcy5jb250cm9scywgJ3ZhbHVlJywgTnVtYmVyKHRoaXMudmFsdWUpKTtcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLl9pbml0VmFsdWUgPSB0cnVlO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBudWxsO1xyXG5cdH1cclxuXHJcblx0cmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZT8oZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuXHRcdHRoaXMub25WYWxpZGF0aW9uQ2hhbmdlID0gZm47XHJcblx0fVxyXG5cclxuXHRmb3JtYXROdW1iZXIodmFsdWU6IGFueSkge1xyXG5cdFx0aWYgKHZhbHVlICE9IG51bGwpIHtcclxuXHRcdFx0dmFsdWUgPSB2YWx1ZS50b1N0cmluZygpO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHRoaXMuZGVjaW1hbHMgIT0gbnVsbCAmJiB2YWx1ZSAhPSBudWxsICYmIHZhbHVlICE9ICcnKSB7XHJcblx0XHRcdGlmICh0aGlzLmRlY2ltYWxzID4gMCkge1xyXG5cdFx0XHRcdHJldHVybiBOdW1iZXIodmFsdWUucmVwbGFjZUFsbCgnLCcsICcnKSkudG9GaXhlZCh0aGlzLmRlY2ltYWxzKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRyZXR1cm4gTnVtYmVyKHZhbHVlLnJlcGxhY2VBbGwoJywnLCAnJykpLnRvRml4ZWQoKTtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0aWYgKHZhbHVlICE9IG51bGwgJiYgdmFsdWUgIT0gJycpIHtcclxuXHRcdFx0XHRyZXR1cm4gTnVtYmVyKHZhbHVlLnJlcGxhY2VBbGwoJywnLCAnJykpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHJldHVybiBudWxsO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRlbWl0VmFsdWUodmFsdWU6IGFueSkge1xyXG5cdFx0aWYgKHZhbHVlICE9IG51bGwgJiYgdmFsdWUgIT0gJycpIHtcclxuXHRcdFx0aWYgKHRoaXMuZGVjaW1hbHMgIT0gbnVsbCkge1xyXG5cdFx0XHRcdGlmICh0aGlzLmRlY2ltYWxzID4gMCkge1xyXG5cdFx0XHRcdFx0cmV0dXJuIE51bWJlcihOdW1iZXIodmFsdWUucmVwbGFjZUFsbCgnLCcsICcnKSkudG9GaXhlZCh0aGlzLmRlY2ltYWxzKSk7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHJldHVybiBOdW1iZXIoTnVtYmVyKHZhbHVlLnJlcGxhY2VBbGwoJywnLCAnJykpLnRvRml4ZWQoKSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHJldHVybiBOdW1iZXIodmFsdWUucmVwbGFjZUFsbCgnLCcsICcnKSk7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHJldHVybiBudWxsO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0ZW50ZXJLZXlVcCgpIHtcclxuXHRcdGlmICghdGhpcy5kaXNhYmxlZCkge1xyXG5cdFx0XHRsZXQgdmFsaWRhdG9yID0gdGhpcy5zaGFyZWRDb21wb25lbnRzVXRpbC5zdG9wQnlWYWxpZGF0b3IodGhpcy5jb250cm9scywgdGhpcy52YWxpZGF0b3JBbGVydCwgdGhpcy5sYWJlbCk7XHJcblx0XHRcdGlmICh2YWxpZGF0b3IuZXJyb3IpIHtcclxuXHRcdFx0XHR0aGlzLm1lc3NhZ2VVdGlsU2VydmljZS5nZXRNZXNzYWdlRXJyb3IoJzAwMDA0NicsICdFcnJvcicsIHZhbGlkYXRvci5tZXNzYWdlKTtcclxuXHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGlmICh0aGlzLm5leHQgIT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdGlmICh0aGlzLm5leHQuZGlzYWJsZWQgfHwgdGhpcy5uZXh0LnJlYWRvbmx5KSB7XHJcblx0XHRcdFx0aWYgKHRoaXMubmV4dElzRGlzYWJsZSAhPSB1bmRlZmluZWQpIHtcclxuXHRcdFx0XHRcdHRoaXMubmV4dElzRGlzYWJsZS5mb2N1cygpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR0aGlzLm5leHQuZm9jdXMoKTtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0aWYgKHRoaXMubmV4dElzRGlzYWJsZSAhPSB1bmRlZmluZWQpIHtcclxuXHRcdFx0XHR0aGlzLm5leHRJc0Rpc2FibGUuZm9jdXMoKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR0aGlzLm9uTmV4dC5lbWl0KCk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGFycm93VXBLZXlVcCgpIHtcclxuXHRcdGlmICghdGhpcy5kaXNhYmxlZCkge1xyXG5cdFx0XHRsZXQgdmFsaWRhdG9yID0gdGhpcy5zaGFyZWRDb21wb25lbnRzVXRpbC5zdG9wQnlWYWxpZGF0b3IodGhpcy5jb250cm9scywgdGhpcy52YWxpZGF0b3JBbGVydCwgdGhpcy5sYWJlbCk7XHJcblx0XHRcdGlmICh2YWxpZGF0b3IuZXJyb3IpIHtcclxuXHRcdFx0XHR0aGlzLm1lc3NhZ2VVdGlsU2VydmljZS5nZXRNZXNzYWdlRXJyb3IoJzAwMDA0NicsICdFcnJvcicsIHZhbGlkYXRvci5tZXNzYWdlKTtcclxuXHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGlmICh0aGlzLmJhY2sgIT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdGlmICh0aGlzLmJhY2suZGlzYWJsZWQgfHwgdGhpcy5iYWNrLnJlYWRvbmx5KSB7XHJcblx0XHRcdFx0aWYgKHRoaXMuYmFja0lzRGlzYWJsZSAhPSB1bmRlZmluZWQpIHtcclxuXHRcdFx0XHRcdHRoaXMuYmFja0lzRGlzYWJsZS5mb2N1cygpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR0aGlzLmJhY2suZm9jdXMoKTtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0aWYgKHRoaXMuYmFja0lzRGlzYWJsZSAhPSB1bmRlZmluZWQpIHtcclxuXHRcdFx0XHR0aGlzLmJhY2tJc0Rpc2FibGUuZm9jdXMoKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR0aGlzLm9uQmFjay5lbWl0KCk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG9uRm9jdXNPdXQoZXZ0OiBhbnkpIHtcclxuXHRcdHRoaXMub25mb2N1c291dC5lbWl0KGV2dCk7XHJcblx0XHRpZiAodGhpcy5idG5FbmFibGUpIHtcclxuXHRcdFx0dGhpcy5kaXNhYmxlZCA9IHRydWU7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRjbGlja0VuYWJsZSgpIHtcclxuXHRcdHRoaXMuZGlzYWJsZWQgPSBmYWxzZTtcclxuXHRcdHRoaXMucmVhZG9ubHkgPSBmYWxzZTtcclxuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cdFx0XHR0aGlzLmZvY3VzKCk7XHJcblx0XHR9LCAxNTApO1xyXG5cdH1cclxufVxyXG4iLCI8bGFiZWwgKm5nSWY9XCJsYWJlbCAhPSBudWxsICYmIGxhYmVsICE9ICcnICYmIHNob3dMYWJlbFwiIGNsYXNzPVwiZC1mbGV4IHN1bWF4LWxhYmVsIG1iLTAgcC0wXCJcclxuXHQ+PHNwYW4gW3RpdGxlXT1cImxhYmVsXCIgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogbm93cmFwOyBvdmVyZmxvdzogaGlkZGVuOyB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpc1wiPnt7IGxhYmVsIH19PC9zcGFuPlxyXG5cdDxzcGFuICpuZ0lmPVwicmVxdWlyZWRcIiBjbGFzcz1cIm1zLTFcIiBbY2xhc3MudGV4dC1kYW5nZXJdPVwiY29udHJvbHM/LmVycm9ycyAhPSBudWxsXCI+ICo8L3NwYW4+XHJcblx0PHNwYW4gKm5nSWY9XCJsYWJlbEluZm9cIj5cclxuXHRcdDxpIGNsYXNzPVwiZmEgZmEtZXhjbGFtYXRpb24tY2lyY2xlIHRleHQtaW5mbyBtcy0yXCIgW21hdFRvb2x0aXBdPVwidGV4dExhYmVsSW5mb1wiIG1hdFRvb2x0aXBDbGFzcz1cImJnLWluZm9cIj48L2k+XHJcblx0PC9zcGFuPlxyXG48L2xhYmVsPlxyXG48ZGl2XHJcblx0W2NsYXNzLmlucHV0LWljb25dPVwiY29udHJvbHM/LmVycm9ycyAhPSBudWxsICYmIChjb250cm9scz8uZGlydHkgfHwgY29udHJvbHM/LnRvdWNoZWQpICYmIHN1Ym1pdHRlZFwiXHJcblx0W2NsYXNzLnJpZ2h0XT1cImNvbnRyb2xzPy5lcnJvcnMgIT0gbnVsbCAmJiAoY29udHJvbHM/LmRpcnR5IHx8IGNvbnRyb2xzPy50b3VjaGVkKSAmJiBzdWJtaXR0ZWRcIlxyXG4+XHJcblx0PGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG5cdFx0PGRpdiBjbGFzcz1cInctMTAwIHBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcblx0XHRcdDx0b29sdGlwLW1lc3NhZ2VcclxuXHRcdFx0XHRbbGFiZWxdPVwibGFiZWxcIlxyXG5cdFx0XHRcdFtjb250cm9sc109XCJjb250cm9sc1wiXHJcblx0XHRcdFx0W3ZhbGlkYXRvck1lc3NhZ2VdPVwidmFsaWRhdG9yTWVzc2FnZVwiXHJcblx0XHRcdFx0W3Rvb2x0aXBNZXNzYWdlXT1cInRvb2x0aXBNZXNzYWdlXCJcclxuXHRcdFx0XHRbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiXHJcblx0XHRcdD48L3Rvb2x0aXAtbWVzc2FnZT5cclxuXHRcdFx0PGlucHV0XHJcblx0XHRcdFx0I2lucHV0VGV4dFxyXG5cdFx0XHRcdHR5cGU9XCJ0ZXh0XCJcclxuXHRcdFx0XHRjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gdGV4dC1lbmRcIlxyXG5cdFx0XHRcdFtjbGFzcy5pcy1pbnZhbGlkXT1cImNvbnRyb2xzPy5lcnJvcnMgIT0gbnVsbCAmJiAoY29udHJvbHM/LmRpcnR5IHx8IGNvbnRyb2xzPy50b3VjaGVkKSAmJiBzdWJtaXR0ZWRcIlxyXG5cdFx0XHRcdFsobmdNb2RlbCldPVwidmFsdWVcIlxyXG5cdFx0XHRcdFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcblx0XHRcdFx0W3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuXHRcdFx0XHRbbWFza109XCJmb3JtYXRcIlxyXG5cdFx0XHRcdHRob3VzYW5kU2VwYXJhdG9yPVwiLFwiXHJcblx0XHRcdFx0KGJsdXIpPVwib25CbHVyKCRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUpXCJcclxuXHRcdFx0XHQoaW5wdXQpPVwib25JbnB1dCgkYW55KCRldmVudC50YXJnZXQpLnZhbHVlKVwiXHJcblx0XHRcdFx0KGZvY3Vzb3V0KT1cIm9uRm9jdXNPdXQoJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSlcIlxyXG5cdFx0XHRcdFthdXRvY29tcGxldGVdPVwiYXV0b2NvbXBsZXRlXCJcclxuXHRcdFx0XHRbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG5cdFx0XHRcdChmb2N1cyk9XCJvbkZvY3VzKCRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUpXCJcclxuXHRcdFx0XHRbYXR0ci5tYXhMZW5ndGhdPVwibWF4TGVuZ3RoXCJcclxuXHRcdFx0XHQoa2V5dXAuZW50ZXIpPVwiZW50ZXJLZXlVcCgpXCJcclxuXHRcdFx0XHQoa2V5dXAuQXJyb3dVcCk9XCJhcnJvd1VwS2V5VXAoKVwiXHJcblx0XHRcdFx0W25nQ2xhc3NdPVwic2V0TmdDbGFzc1wiXHJcblx0XHRcdFx0W2NsYXNzLmJvbGRdPVwiYm9sZFwiXHJcblx0XHRcdFx0W2FsbG93TmVnYXRpdmVOdW1iZXJzXT1cImFsbG93TmVnYXRpdmVOdW1iZXJzXCJcclxuXHRcdFx0XHRbbGVhZFplcm9dPVwiIWFsbG93TmVnYXRpdmVOdW1iZXJzXCJcclxuXHRcdFx0Lz5cclxuXHRcdDwvZGl2PlxyXG5cdFx0PGRpdiBjbGFzcz1cImJkLWhpZ2hsaWdodFwiICpuZ0lmPVwiYnRuRW5hYmxlXCI+XHJcblx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1pbmZvIHAtMCByb3VuZGVkLTAgaC0xMDBcIiAoY2xpY2spPVwiY2xpY2tFbmFibGUoKVwiPlxyXG5cdFx0XHRcdDxpIGNsYXNzPVwiZmEgZmEtY2hlY2sgdGV4dC13aGl0ZSBweC0xXCIgW21hdFRvb2x0aXBdPVwiJ0hhYmlsaXRhcidcIiBtYXRUb29sdGlwQ2xhc3M9XCJiZy1pbmZvXCI+PC9pPlxyXG5cdFx0XHQ8L2J1dHRvbj5cclxuXHRcdDwvZGl2PlxyXG5cdFx0PG5nLWNvbnRlbnQgc2VsZWN0PVwiW21vcmUtYnV0dG9uc11cIj48L25nLWNvbnRlbnQ+XHJcblx0PC9kaXY+XHJcbjwvZGl2PlxyXG48ZXJyb3ItbWVzc2FnZVxyXG5cdFtsYWJlbF09XCJsYWJlbFwiXHJcblx0W2NvbnRyb2xzXT1cImNvbnRyb2xzXCJcclxuXHRbdmFsaWRhdG9yTWVzc2FnZV09XCJ2YWxpZGF0b3JNZXNzYWdlXCJcclxuXHRbdG9vbHRpcE1lc3NhZ2VdPVwidG9vbHRpcE1lc3NhZ2VcIlxyXG5cdFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCJcclxuPjwvZXJyb3ItbWVzc2FnZT5cclxuIl19
351
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zdW1heC1lcnAtY29tcG9uZW50L3NyYy9saWIvaW5wdXQtbnVtYmVyL2lucHV0LW51bWJlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3VtYXgtZXJwLWNvbXBvbmVudC9zcmMvbGliL2lucHV0LW51bWJlci9pbnB1dC1udW1iZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVOLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFHTCxNQUFNLEVBR04sU0FBUyxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFHTixhQUFhLEVBQ2IsaUJBQWlCLEVBRWpCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7QUFvQnJFLE1BQU0sT0FBTyxvQkFBb0I7SUEyQ2hDLFlBQ1Msa0JBQXNDLEVBQ3RDLGtCQUFzQyxFQUN0QyxPQUFrQjtRQUZsQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsWUFBTyxHQUFQLE9BQU8sQ0FBVztRQTdDbEIsY0FBUyxHQUFZLElBQUksQ0FBQztRQUMxQixVQUFLLEdBQVEsSUFBSSxDQUFDO1FBQ2xCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0IsaUJBQVksR0FBVyw4QkFBOEIsQ0FBQztRQUN0RCxTQUFJLEdBQVksS0FBSyxDQUFDO1FBQ3RCLGFBQVEsR0FBVyxDQUFDLENBQUMsQ0FBQztRQUN0QixlQUFVLEdBQVksS0FBSyxDQUFDO1FBQzVCLGNBQVMsR0FBUSxJQUFJLENBQUM7UUFLdEIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMx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O3NCQUFqQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDSSxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ2lCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcblx0QWZ0ZXJWaWV3SW5pdCxcclxuXHRDb21wb25lbnQsXHJcblx0RWxlbWVudFJlZixcclxuXHRFdmVudEVtaXR0ZXIsXHJcblx0Zm9yd2FyZFJlZixcclxuXHRJbnB1dCxcclxuXHRPbkNoYW5nZXMsXHJcblx0T25Jbml0LFxyXG5cdE91dHB1dCxcclxuXHRSZW5kZXJlcjIsXHJcblx0U2ltcGxlQ2hhbmdlcyxcclxuXHRWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuXHRBYnN0cmFjdENvbnRyb2wsXHJcblx0Q29udHJvbFZhbHVlQWNjZXNzb3IsXHJcblx0TkdfVkFMSURBVE9SUyxcclxuXHROR19WQUxVRV9BQ0NFU1NPUixcclxuXHRWYWxpZGF0aW9uRXJyb3JzXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBJbnB1dE51bWJlclNlcnZpY2UgfSBmcm9tICcuL2lucHV0LW51bWJlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2hhcmVkQ29tcG9uZW50c1V0aWwgfSBmcm9tICcuLi91dGlscy9TaGFyZWRDb21wb25lbnRzVXRpbCc7XHJcbmltcG9ydCB7IE1lc3NhZ2VVdGlsU2VydmljZSB9IGZyb20gJy4uL3V0aWxzL21lc3NhZ2UtdXRpbC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnaW5wdXQtbnVtYmVyJyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9pbnB1dC1udW1iZXIuY29tcG9uZW50LnNjc3MnXSxcclxuXHRwcm92aWRlcnM6IFtcclxuXHRcdHtcclxuXHRcdFx0cHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcblx0XHRcdHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0TnVtYmVyQ29tcG9uZW50KSxcclxuXHRcdFx0bXVsdGk6IHRydWVcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXHJcblx0XHRcdHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0TnVtYmVyQ29tcG9uZW50KSxcclxuXHRcdFx0bXVsdGk6IHRydWVcclxuXHRcdH1cclxuXHRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dE51bWJlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcblx0QElucHV0KCkgc2hvd0xhYmVsOiBib29sZWFuID0gdHJ1ZTtcclxuXHRASW5wdXQoKSBsYWJlbDogYW55ID0gbnVsbDtcclxuXHRASW5wdXQoKSBidG5FbmFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRASW5wdXQoKSBhdXRvY29tcGxldGU6IHN0cmluZyA9ICduby1hdXRvY29tcGxldGUtaW5wdXQtbnVtYmVyJztcclxuXHRASW5wdXQoKSBib2xkOiBib29sZWFuID0gZmFsc2U7XHJcblx0QElucHV0KCkgZGVjaW1hbHM6IG51bWJlciA9IC0xO1xyXG5cdEBJbnB1dCgpIGZvcm1hdENlcm86IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRASW5wdXQoKSBtYXhMZW5ndGg6IGFueSA9IG51bGw7XHJcblx0QElucHV0KCkgbmV4dDogYW55O1xyXG5cdEBJbnB1dCgpIG5leHRJc0Rpc2FibGU6IGFueTtcclxuXHRASW5wdXQoKSBiYWNrOiBhbnk7XHJcblx0QElucHV0KCkgYmFja0lzRGlzYWJsZTogYW55O1xyXG5cdEBJbnB1dCgpIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcblx0QElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRASW5wdXQoKSByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdEBJbnB1dCgpIHZhbGlkYXRvck1lc3NhZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRASW5wdXQoKSB0b29sdGlwTWVzc2FnZTogYm9vbGVhbiA9IHRydWU7XHJcblx0QElucHV0KCkgc3VibWl0dGVkOiBib29sZWFuID0gdHJ1ZTtcclxuXHRASW5wdXQoKSBsYWJlbEluZm86IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRASW5wdXQoKSB0ZXh0TGFiZWxJbmZvOiBzdHJpbmcgPSAnJztcclxuXHRASW5wdXQoKSB2YWxpZGF0b3JBbGVydDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdEBJbnB1dCgpIHNldE5nQ2xhc3M6IHN0cmluZyA9ICcnO1xyXG5cdEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcclxuXHRASW5wdXQoKSBhbGxvd05lZ2F0aXZlTnVtYmVyczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdEBPdXRwdXQoKSBvbk5leHQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdEBPdXRwdXQoKSBvbkJhY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdEBPdXRwdXQoKSBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdEBPdXRwdXQoKSBvbmNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblx0QE91dHB1dCgpIGJsdXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdEBPdXRwdXQoKSBvbmZvY3VzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHRAT3V0cHV0KCkgb25mb2N1c291dDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblx0QFZpZXdDaGlsZCgnaW5wdXRUZXh0JykgaW5wdXRUZXh0ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuXHJcblx0c2hhcmVkQ29tcG9uZW50c1V0aWwgPSBuZXcgU2hhcmVkQ29tcG9uZW50c1V0aWwoKTtcclxuXHJcblx0Zm9ybWF0ID0gJ3NlcGFyYXRvcic7XHJcblxyXG5cdGNvbnRyb2xzOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsID0gbnVsbDtcclxuXHR2YWx1ZTogYW55O1xyXG5cdHZhbHVlRW1pdDogYW55O1xyXG5cdF9pbml0VmFsdWUgPSBmYWxzZTtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIG1lc3NhZ2VVdGlsU2VydmljZTogTWVzc2FnZVV0aWxTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBpbnB1dE51bWJlclNlcnZpY2U6IElucHV0TnVtYmVyU2VydmljZSxcclxuXHRcdHByaXZhdGUgX3JlbmRlcjogUmVuZGVyZXIyXHJcblx0KSB7XHJcblx0XHR0aGlzLmRlY2ltYWxzID0gdGhpcy5pbnB1dE51bWJlclNlcnZpY2UuZ2V0RGVjaW1hbHMoKTtcclxuXHRcdHRoaXMuZm9ybWF0Q2VybyA9IHRoaXMuaW5wdXROdW1iZXJTZXJ2aWNlLmdldEZvcm1hdENlcm8oKTtcclxuXHRcdHRoaXMuYnRuRW5hYmxlID0gdGhpcy5pbnB1dE51bWJlclNlcnZpY2UuZ2V0QnRuRW5hYmxlKCk7XHJcblx0XHR0aGlzLmJvbGQgPSB0aGlzLmlucHV0TnVtYmVyU2VydmljZS5nZXRCb2xkKCk7XHJcblx0XHR0aGlzLnZhbGlkYXRvck1lc3NhZ2UgPSB0aGlzLmlucHV0TnVtYmVyU2VydmljZS5nZXRWYWxpZGF0b3JNZXNzYWdlKCk7XHJcblx0XHR0aGlzLnRvb2x0aXBNZXNzYWdlID0gdGhpcy5pbnB1dE51bWJlclNlcnZpY2UuZ2V0VG9vbHRpcE1lc3NhZ2UoKTtcclxuXHRcdHRoaXMuc3VibWl0dGVkID0gdGhpcy5pbnB1dE51bWJlclNlcnZpY2UuZ2V0U3VibWl0dGVkKCk7XHJcblx0XHR0aGlzLnZhbGlkYXRvckFsZXJ0ID0gdGhpcy5pbnB1dE51bWJlclNlcnZpY2UuZ2V0VmFsaWRhdG9yQWxlcnQoKTtcclxuXHR9XHJcblxyXG5cdG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuXHRcdGlmIChjaGFuZ2VzWydzdWJtaXR0ZWQnXSkge1xyXG5cdFx0XHRpZiAodGhpcy5jb250cm9scyAhPSBudWxsICYmIGNoYW5nZXNbJ3N1Ym1pdHRlZCddLmN1cnJlbnRWYWx1ZSkge1xyXG5cdFx0XHRcdHRoaXMuY29udHJvbHMubWFya0FzRGlydHkoKTtcclxuXHRcdFx0XHR0aGlzLmNvbnRyb2xzLm1hcmtBc1RvdWNoZWQoKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0bmdPbkluaXQoKSB7XHJcblx0XHRpZiAodGhpcy5kZWNpbWFscyAhPSAtMSkge1xyXG5cdFx0XHR0aGlzLmZvcm1hdCA9ICdzZXBhcmF0b3InICsgJy4nICsgdGhpcy5kZWNpbWFscy50b1N0cmluZygpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5mb3JtYXQgPSAnc2VwYXJhdG9yJztcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHt9XHJcblxyXG5cdG9uQ2hhbmdlID0gKF86IGFueSkgPT4ge307XHJcblx0b25WYWxpZGF0aW9uQ2hhbmdlID0gKCkgPT4ge307XHJcblx0b25Ub3VjaCA9ICgpID0+IHt9O1xyXG5cdGZvY3VzID0gKCkgPT4ge1xyXG5cdFx0dGhpcy5pbnB1dFRleHQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG5cdFx0dGhpcy5pbnB1dFRleHQubmF0aXZlRWxlbWVudC5zZWxlY3QoKTtcclxuXHR9O1xyXG5cclxuXHRvbkJsdXIodmFsdWU6IGFueSkge1xyXG5cdFx0dGhpcy5vblRvdWNoKCk7XHJcblx0XHRpZiAoKHZhbHVlID09ICcnIHx8IHZhbHVlID09IG51bGwpICYmIHRoaXMuZm9ybWF0Q2Vybykge1xyXG5cdFx0XHR2YWx1ZSA9IDA7XHJcblx0XHR9XHJcblx0XHRjb25zdCBuZXdWYWx1ZSA9IHRoaXMuZm9ybWF0TnVtYmVyKHZhbHVlKTtcclxuXHJcblx0XHRpZiAodGhpcy52YWx1ZSAhPT0gbmV3VmFsdWUpIHtcclxuXHRcdFx0dGhpcy52YWx1ZSA9IG5ld1ZhbHVlO1xyXG5cdFx0XHR0aGlzLm9uQ2hhbmdlKHRoaXMuZW1pdFZhbHVlKG5ld1ZhbHVlKSk7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gaWYgKG5ld1ZhbHVlKSB7XHJcblx0XHR0aGlzLm9uVmFsaWRhdGlvbkNoYW5nZSgpO1xyXG5cdFx0dGhpcy5ibHVyLmVtaXQodGhpcy5lbWl0VmFsdWUobmV3VmFsdWUpKTtcclxuXHRcdC8vIH1cclxuXHR9XHJcblxyXG5cdG9uRm9jdXMoZXZ0OiBhbnkpIHtcclxuXHRcdHRoaXMuaW5wdXRUZXh0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0KCk7XHJcblx0XHR0aGlzLm9uZm9jdXMuZW1pdChldnQpO1xyXG5cdH1cclxuXHJcblx0b25JbnB1dChldnQ6IGFueSkge1xyXG5cdFx0dGhpcy5vblRvdWNoKCk7XHJcblx0XHR0aGlzLm9uQ2hhbmdlKHRoaXMuZW1pdFZhbHVlKGV2dCkpO1xyXG5cdFx0dGhpcy5vblZhbGlkYXRpb25DaGFuZ2UoKTtcclxuXHRcdHRoaXMuY2hhbmdlLmVtaXQodGhpcy5lbWl0VmFsdWUoZXZ0KSk7XHJcblx0XHR0aGlzLm9uY2hhbmdlLmVtaXQodGhpcy5lbWl0VmFsdWUoZXZ0KSk7XHJcblx0fVxyXG5cclxuXHR3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuXHRcdGlmICh2YWx1ZSAhPSBudWxsKSB7XHJcblx0XHRcdHRoaXMudmFsdWUgPSB0aGlzLmZvcm1hdE51bWJlcih2YWx1ZSk7XHJcblxyXG5cdFx0XHRpZiAodGhpcy52YWx1ZSA9PT0gJ05hTicpIHtcclxuXHRcdFx0XHRpZiAodGhpcy5jb250cm9scykge1xyXG5cdFx0XHRcdFx0dGhpcy5fcmVuZGVyLnNldFByb3BlcnR5KHRoaXMuY29udHJvbHMsICd2YWx1ZScsIG51bGwpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ05vdCBhIG51bWJlcicpO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAodGhpcy5jb250cm9scykge1xyXG5cdFx0XHRcdHRoaXMuX3JlbmRlci5zZXRQcm9wZXJ0eSh0aGlzLmNvbnRyb2xzLCAndmFsdWUnLCBOdW1iZXIodGhpcy52YWx1ZSkpO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLnZhbHVlID0gbnVsbDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG5cdFx0dGhpcy5vbkNoYW5nZSA9IGZuO1xyXG5cdH1cclxuXHJcblx0cmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG5cdFx0dGhpcy5vblRvdWNoID0gZm47XHJcblx0fVxyXG5cclxuXHRzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuXHRcdHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG5cdH1cclxuXHJcblx0dmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IGFueSB7XHJcblx0XHR0aGlzLmNvbnRyb2xzID0gY29udHJvbDtcclxuXHJcblx0XHRpZiAoIXRoaXMuX2luaXRWYWx1ZSkge1xyXG5cdFx0XHRpZiAodGhpcy52YWx1ZSA9PT0gJ05hTicpIHtcclxuXHRcdFx0XHR0aGlzLl9yZW5kZXIuc2V0UHJvcGVydHkodGhpcy5jb250cm9scywgJ3ZhbHVlJywgbnVsbCk7XHJcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdOb3QgYSBudW1iZXInKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKHRoaXMudmFsdWUgIT09IG51bGwpIHtcclxuXHRcdFx0XHR0aGlzLl9yZW5kZXIuc2V0UHJvcGVydHkodGhpcy5jb250cm9scywgJ3ZhbHVlJywgTnVtYmVyKHRoaXMudmFsdWUpKTtcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLl9pbml0VmFsdWUgPSB0cnVlO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBudWxsO1xyXG5cdH1cclxuXHJcblx0cmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZT8oZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuXHRcdHRoaXMub25WYWxpZGF0aW9uQ2hhbmdlID0gZm47XHJcblx0fVxyXG5cclxuXHRmb3JtYXROdW1iZXIodmFsdWU6IGFueSkge1xyXG5cdFx0aWYgKHZhbHVlICE9IG51bGwpIHtcclxuXHRcdFx0dmFsdWUgPSB2YWx1ZS50b1N0cmluZygpO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHRoaXMuZGVjaW1hbHMgIT0gbnVsbCAmJiB2YWx1ZSAhPSBudWxsICYmIHZhbHVlICE9ICcnKSB7XHJcblx0XHRcdGlmICh0aGlzLmRlY2ltYWxzID4gMCkge1xyXG5cdFx0XHRcdHJldHVybiBOdW1iZXIodmFsdWUucmVwbGFjZUFsbCgnLCcsICcnKSkudG9GaXhlZCh0aGlzLmRlY2ltYWxzKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRyZXR1cm4gTnVtYmVyKHZhbHVlLnJlcGxhY2VBbGwoJywnLCAnJykpLnRvRml4ZWQoKTtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0aWYgKHZhbHVlICE9IG51bGwgJiYgdmFsdWUgIT0gJycpIHtcclxuXHRcdFx0XHRyZXR1cm4gTnVtYmVyKHZhbHVlLnJlcGxhY2VBbGwoJywnLCAnJykpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHJldHVybiBudWxsO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRlbWl0VmFsdWUodmFsdWU6IGFueSkge1xyXG5cdFx0aWYgKHZhbHVlICE9IG51bGwgJiYgdmFsdWUgIT0gJycpIHtcclxuXHRcdFx0aWYgKHRoaXMuZGVjaW1hbHMgIT0gbnVsbCkge1xyXG5cdFx0XHRcdGlmICh0aGlzLmRlY2ltYWxzID4gMCkge1xyXG5cdFx0XHRcdFx0cmV0dXJuIE51bWJlcihOdW1iZXIodmFsdWUucmVwbGFjZUFsbCgnLCcsICcnKSkudG9GaXhlZCh0aGlzLmRlY2ltYWxzKSk7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHJldHVybiBOdW1iZXIoTnVtYmVyKHZhbHVlLnJlcGxhY2VBbGwoJywnLCAnJykpLnRvRml4ZWQoKSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHJldHVybiBOdW1iZXIodmFsdWUucmVwbGFjZUFsbCgnLCcsICcnKSk7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHJldHVybiBudWxsO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0ZW50ZXJLZXlVcCgpIHtcclxuXHRcdGlmICghdGhpcy5kaXNhYmxlZCkge1xyXG5cdFx0XHRsZXQgdmFsaWRhdG9yID0gdGhpcy5zaGFyZWRDb21wb25lbnRzVXRpbC5zdG9wQnlWYWxpZGF0b3IodGhpcy5jb250cm9scywgdGhpcy52YWxpZGF0b3JBbGVydCwgdGhpcy5sYWJlbCk7XHJcblx0XHRcdGlmICh2YWxpZGF0b3IuZXJyb3IpIHtcclxuXHRcdFx0XHR0aGlzLm1lc3NhZ2VVdGlsU2VydmljZS5nZXRNZXNzYWdlRXJyb3IoJzAwMDA0NicsICdFcnJvcicsIHZhbGlkYXRvci5tZXNzYWdlKTtcclxuXHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGlmICh0aGlzLm5leHQgIT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdGlmICh0aGlzLm5leHQuZGlzYWJsZWQgfHwgdGhpcy5uZXh0LnJlYWRvbmx5KSB7XHJcblx0XHRcdFx0aWYgKHRoaXMubmV4dElzRGlzYWJsZSAhPSB1bmRlZmluZWQpIHtcclxuXHRcdFx0XHRcdHRoaXMubmV4dElzRGlzYWJsZS5mb2N1cygpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR0aGlzLm5leHQuZm9jdXMoKTtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0aWYgKHRoaXMubmV4dElzRGlzYWJsZSAhPSB1bmRlZmluZWQpIHtcclxuXHRcdFx0XHR0aGlzLm5leHRJc0Rpc2FibGUuZm9jdXMoKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR0aGlzLm9uTmV4dC5lbWl0KCk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGFycm93VXBLZXlVcCgpIHtcclxuXHRcdGlmICghdGhpcy5kaXNhYmxlZCkge1xyXG5cdFx0XHRsZXQgdmFsaWRhdG9yID0gdGhpcy5zaGFyZWRDb21wb25lbnRzVXRpbC5zdG9wQnlWYWxpZGF0b3IodGhpcy5jb250cm9scywgdGhpcy52YWxpZGF0b3JBbGVydCwgdGhpcy5sYWJlbCk7XHJcblx0XHRcdGlmICh2YWxpZGF0b3IuZXJyb3IpIHtcclxuXHRcdFx0XHR0aGlzLm1lc3NhZ2VVdGlsU2VydmljZS5nZXRNZXNzYWdlRXJyb3IoJzAwMDA0NicsICdFcnJvcicsIHZhbGlkYXRvci5tZXNzYWdlKTtcclxuXHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGlmICh0aGlzLmJhY2sgIT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdGlmICh0aGlzLmJhY2suZGlzYWJsZWQgfHwgdGhpcy5iYWNrLnJlYWRvbmx5KSB7XHJcblx0XHRcdFx0aWYgKHRoaXMuYmFja0lzRGlzYWJsZSAhPSB1bmRlZmluZWQpIHtcclxuXHRcdFx0XHRcdHRoaXMuYmFja0lzRGlzYWJsZS5mb2N1cygpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR0aGlzLmJhY2suZm9jdXMoKTtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0aWYgKHRoaXMuYmFja0lzRGlzYWJsZSAhPSB1bmRlZmluZWQpIHtcclxuXHRcdFx0XHR0aGlzLmJhY2tJc0Rpc2FibGUuZm9jdXMoKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR0aGlzLm9uQmFjay5lbWl0KCk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG9uRm9jdXNPdXQoZXZ0OiBhbnkpIHtcclxuXHRcdHRoaXMub25mb2N1c291dC5lbWl0KGV2dCk7XHJcblx0XHRpZiAodGhpcy5idG5FbmFibGUpIHtcclxuXHRcdFx0dGhpcy5kaXNhYmxlZCA9IHRydWU7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRjbGlja0VuYWJsZSgpIHtcclxuXHRcdHRoaXMuZGlzYWJsZWQgPSBmYWxzZTtcclxuXHRcdHRoaXMucmVhZG9ubHkgPSBmYWxzZTtcclxuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cdFx0XHR0aGlzLmZvY3VzKCk7XHJcblx0XHR9LCAxNTApO1xyXG5cdH1cclxufVxyXG4iLCI8bGFiZWwgKm5nSWY9XCJsYWJlbCAhPSBudWxsICYmIGxhYmVsICE9ICcnICYmIHNob3dMYWJlbFwiIGNsYXNzPVwiZC1mbGV4IHN1bWF4LWxhYmVsIG1iLTAgcC0wXCJcclxuXHQ+PHNwYW4gW3RpdGxlXT1cImxhYmVsXCIgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogbm93cmFwOyBvdmVyZmxvdzogaGlkZGVuOyB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpc1wiPnt7IGxhYmVsIH19PC9zcGFuPlxyXG5cdDxzcGFuICpuZ0lmPVwicmVxdWlyZWRcIiBjbGFzcz1cIm1zLTFcIiBbY2xhc3MudGV4dC1kYW5nZXJdPVwiY29udHJvbHM/LmVycm9ycyAhPSBudWxsXCI+ICo8L3NwYW4+XHJcblx0PHNwYW4gKm5nSWY9XCJsYWJlbEluZm9cIj5cclxuXHRcdDxpIGNsYXNzPVwiZmEgZmEtZXhjbGFtYXRpb24tY2lyY2xlIHRleHQtaW5mbyBtcy0yXCIgW21hdFRvb2x0aXBdPVwidGV4dExhYmVsSW5mb1wiIG1hdFRvb2x0aXBDbGFzcz1cImJnLWluZm9cIj48L2k+XHJcblx0PC9zcGFuPlxyXG48L2xhYmVsPlxyXG48ZGl2XHJcblx0W2NsYXNzLmlucHV0LWljb25dPVwiY29udHJvbHM/LmVycm9ycyAhPSBudWxsICYmIChjb250cm9scz8uZGlydHkgfHwgY29udHJvbHM/LnRvdWNoZWQpICYmIHN1Ym1pdHRlZFwiXHJcblx0W2NsYXNzLnJpZ2h0XT1cImNvbnRyb2xzPy5lcnJvcnMgIT0gbnVsbCAmJiAoY29udHJvbHM/LmRpcnR5IHx8IGNvbnRyb2xzPy50b3VjaGVkKSAmJiBzdWJtaXR0ZWRcIlxyXG4+XHJcblx0PGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG5cdFx0PGRpdiBjbGFzcz1cInctMTAwIHBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcblx0XHRcdDx0b29sdGlwLW1lc3NhZ2VcclxuXHRcdFx0XHRbbGFiZWxdPVwibGFiZWxcIlxyXG5cdFx0XHRcdFtjb250cm9sc109XCJjb250cm9sc1wiXHJcblx0XHRcdFx0W3ZhbGlkYXRvck1lc3NhZ2VdPVwidmFsaWRhdG9yTWVzc2FnZVwiXHJcblx0XHRcdFx0W3Rvb2x0aXBNZXNzYWdlXT1cInRvb2x0aXBNZXNzYWdlXCJcclxuXHRcdFx0XHRbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiXHJcblx0XHRcdD48L3Rvb2x0aXAtbWVzc2FnZT5cclxuXHRcdFx0PGlucHV0XHJcblx0XHRcdFx0I2lucHV0VGV4dFxyXG5cdFx0XHRcdHR5cGU9XCJ0ZXh0XCJcclxuXHRcdFx0XHRjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gdGV4dC1lbmRcIlxyXG5cdFx0XHRcdFtjbGFzcy5pcy1pbnZhbGlkXT1cImNvbnRyb2xzPy5lcnJvcnMgIT0gbnVsbCAmJiAoY29udHJvbHM/LmRpcnR5IHx8IGNvbnRyb2xzPy50b3VjaGVkKSAmJiBzdWJtaXR0ZWRcIlxyXG5cdFx0XHRcdFsobmdNb2RlbCldPVwidmFsdWVcIlxyXG5cdFx0XHRcdFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcblx0XHRcdFx0W3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuXHRcdFx0XHRbbWFza109XCJmb3JtYXRcIlxyXG5cdFx0XHRcdHRob3VzYW5kU2VwYXJhdG9yPVwiLFwiXHJcblx0XHRcdFx0KGJsdXIpPVwib25CbHVyKCRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUpXCJcclxuXHRcdFx0XHQoaW5wdXQpPVwib25JbnB1dCgkYW55KCRldmVudC50YXJnZXQpLnZhbHVlKVwiXHJcblx0XHRcdFx0KGZvY3Vzb3V0KT1cIm9uRm9jdXNPdXQoJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSlcIlxyXG5cdFx0XHRcdFthdHRyLmF1dG9jb21wbGV0ZV09XCJhdXRvY29tcGxldGVcIlxyXG5cdFx0XHRcdFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcblx0XHRcdFx0KGZvY3VzKT1cIm9uRm9jdXMoJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSlcIlxyXG5cdFx0XHRcdFthdHRyLm1heExlbmd0aF09XCJtYXhMZW5ndGhcIlxyXG5cdFx0XHRcdChrZXl1cC5lbnRlcik9XCJlbnRlcktleVVwKClcIlxyXG5cdFx0XHRcdChrZXl1cC5BcnJvd1VwKT1cImFycm93VXBLZXlVcCgpXCJcclxuXHRcdFx0XHRbbmdDbGFzc109XCJzZXROZ0NsYXNzXCJcclxuXHRcdFx0XHRbY2xhc3MuYm9sZF09XCJib2xkXCJcclxuXHRcdFx0XHRbYWxsb3dOZWdhdGl2ZU51bWJlcnNdPVwiYWxsb3dOZWdhdGl2ZU51bWJlcnNcIlxyXG5cdFx0XHRcdFtsZWFkWmVyb109XCIhYWxsb3dOZWdhdGl2ZU51bWJlcnNcIlxyXG5cdFx0XHQvPlxyXG5cdFx0PC9kaXY+XHJcblx0XHQ8ZGl2IGNsYXNzPVwiYmQtaGlnaGxpZ2h0XCIgKm5nSWY9XCJidG5FbmFibGVcIj5cclxuXHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWluZm8gcC0wIHJvdW5kZWQtMCBoLTEwMFwiIChjbGljayk9XCJjbGlja0VuYWJsZSgpXCI+XHJcblx0XHRcdFx0PGkgY2xhc3M9XCJmYSBmYS1jaGVjayB0ZXh0LXdoaXRlIHB4LTFcIiBbbWF0VG9vbHRpcF09XCInSGFiaWxpdGFyJ1wiIG1hdFRvb2x0aXBDbGFzcz1cImJnLWluZm9cIj48L2k+XHJcblx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0PC9kaXY+XHJcblx0XHQ8bmctY29udGVudCBzZWxlY3Q9XCJbbW9yZS1idXR0b25zXVwiPjwvbmctY29udGVudD5cclxuXHQ8L2Rpdj5cclxuPC9kaXY+XHJcbjxlcnJvci1tZXNzYWdlXHJcblx0W2xhYmVsXT1cImxhYmVsXCJcclxuXHRbY29udHJvbHNdPVwiY29udHJvbHNcIlxyXG5cdFt2YWxpZGF0b3JNZXNzYWdlXT1cInZhbGlkYXRvck1lc3NhZ2VcIlxyXG5cdFt0b29sdGlwTWVzc2FnZV09XCJ0b29sdGlwTWVzc2FnZVwiXHJcblx0W3N1Ym1pdHRlZF09XCJzdWJtaXR0ZWRcIlxyXG4+PC9lcnJvci1tZXNzYWdlPlxyXG4iXX0=