@litigiovirtual/ius-design-components 1.0.223 → 1.0.225

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.
@@ -24,7 +24,7 @@ export class ButtonAccountsComponent {
24
24
  this.openOptions = !this.openOptions;
25
25
  }
26
26
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ButtonAccountsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
27
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ButtonAccountsComponent, isStandalone: true, selector: "ius-button-accounts", inputs: { account: "account" }, outputs: { accountSelected: "accountSelected", onPressedPredeterminado: "onPressedPredeterminado", onPressedDesvincular: "onPressedDesvincular", onPressedEditar: "onPressedEditar" }, ngImport: i0, template: "<div class=\"general\">\r\n <div class=\"ius-btn\" [ngClass]=\"{ isOpen: isOpen }\">\r\n <div class=\"content\" (click)=\"onClickAccount(account)\">\r\n @if(account.logo) {\r\n <img class=\"logo\" [src]=\"account.logo\" alt=\"lem logo\" />\r\n } @else {\r\n <ius-icon-md [iconName]=\"'icon-account-circle'\" class=\"logo\"></ius-icon-md>\r\n }\r\n\r\n <span class=\"name\">{{account.name}}</span>\r\n </div>\r\n\r\n <ius-button-circle-tertiary (click)=\"showOptions($event)\" [iconName]=\"'icon-more-vert'\">\r\n </ius-button-circle-tertiary>\r\n\r\n </div>\r\n\r\n @if(openOptions) {\r\n <div class=\"more-box active\">\r\n <ius-button-standard-tertiary [iconName]=\"'icon-check-circle'\"\r\n (buttonClicked)=\"onPressedPredeterminado.emit(account)\">Marcar como\r\n predeterminada</ius-button-standard-tertiary>\r\n <ius-button-standard-tertiary [iconName]=\"'icon-edit'\"\r\n (buttonClicked)=\"onPressedEditar.emit(account)\">Editar</ius-button-standard-tertiary>\r\n <ius-button-standard-tertiary [iconName]=\"'icon-delete'\"\r\n (buttonClicked)=\"onPressedDesvincular.emit(account)\">Desvincular</ius-button-standard-tertiary>\r\n </div>\r\n }\r\n</div>", styles: [".h1{font-family:Roboto,sans-serif;font-size:2.375rem;font-weight:500;line-height:46px}.h2{font-family:Roboto,sans-serif;font-size:1.875rem;font-weight:700;line-height:38px}.h3{font-family:Roboto,sans-serif;font-size:1.5rem;font-weight:500;line-height:32px}.h4{font-family:Roboto,sans-serif;font-size:1.25rem;font-weight:700;line-height:26px}.h5{font-family:Roboto,sans-serif;font-size:1.125rem;font-weight:500;line-height:24px;letter-spacing:.18px}.label-large{font-family:Roboto,sans-serif;font-size:1rem;font-weight:500;line-height:22px}.body-large{font-family:Rubik,sans-serif;font-size:1rem;font-weight:400;line-height:22px}.label-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;line-height:20px;letter-spacing:.28px}.body-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;font-style:italic;letter-spacing:.28px}.body-base-1,.body-base-1-1{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;letter-spacing:.28px}.body-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;letter-spacing:.28px}.body-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;font-style:italic;letter-spacing:.28px}.caption-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;letter-spacing:.28px}.caption-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;font-style:italic;letter-spacing:.28px}.ius-btn{display:inline-flex;padding:8px 12px;align-items:center;gap:8px;border-radius:8px;background-color:#fff;color:#333;border:1px solid #eaeaea;cursor:pointer;font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;font-style:normal;line-height:20px;letter-spacing:.28px;width:100%;justify-content:space-between}.ius-btn:hover:not(:disabled){border:1px solid #bfbfbf;box-shadow:0 1px 3px #0000001f,0 1px 2px #00000014}.ius-btn:active:not(:disabled){border:1px solid #8c8c8c;background-color:#eaeaea}.ius-btn.isOpen{border:1px solid #eaeaea;box-shadow:0 1px 3px #0000001f,0 1px 2px #00000014;background-color:#fff}.content{display:flex;align-items:center;gap:12px;width:100%}.general{position:relative}.logo{width:32px;height:32px;border-radius:100px;align-items:center;aspect-ratio:1/1;border:.5px solid #f5f5f5}.more-box{position:absolute;left:10%;padding:12px;gap:8px;display:flex;flex-direction:column;z-index:100;opacity:0;pointer-events:none;transform:translateY(-6px);transition:opacity .25s ease,transform .25s ease;border-radius:8px;background:#fff;box-shadow:0 2px 6px #00000024,0 1px 10px #0000001a}.more-box.active{opacity:1;transform:translateY(0);pointer-events:all}\n"], dependencies: [{ kind: "component", type: IconMdComponent, selector: "ius-icon-md", inputs: ["iconName", "color"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ButtonCircleTertiaryComponent, selector: "ius-button-circle-tertiary", inputs: ["disabled", "iconName"], outputs: ["buttonClicked"] }, { kind: "component", type: ButtonStandardTertiaryComponent, selector: "ius-button-standard-tertiary", inputs: ["disabled", "iconName"], outputs: ["buttonClicked"] }] }); }
27
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ButtonAccountsComponent, isStandalone: true, selector: "ius-button-accounts", inputs: { account: "account" }, outputs: { accountSelected: "accountSelected", onPressedPredeterminado: "onPressedPredeterminado", onPressedDesvincular: "onPressedDesvincular", onPressedEditar: "onPressedEditar" }, ngImport: i0, template: "<div class=\"general\">\r\n <div class=\"ius-btn\" [ngClass]=\"{ isOpen: isOpen }\">\r\n <div class=\"content\" (click)=\"onClickAccount(account)\">\r\n @if(account.logo) {\r\n <img class=\"logo\" [src]=\"account.logo\" alt=\"lem logo\" />\r\n } @else {\r\n <ius-icon-md [iconName]=\"'icon-account-circle'\" class=\"logo\"></ius-icon-md>\r\n }\r\n\r\n <span class=\"name\">{{account.name}}</span>\r\n </div>\r\n\r\n <ius-button-circle-tertiary (click)=\"showOptions($event)\" [iconName]=\"'icon-more-vert'\">\r\n </ius-button-circle-tertiary>\r\n\r\n </div>\r\n\r\n @if(openOptions) {\r\n <div class=\"more-box active\">\r\n <ius-button-standard-tertiary [iconName]=\"'icon-check-circle'\"\r\n (buttonClicked)=\"onPressedPredeterminado.emit(account)\">Marcar como\r\n predeterminada</ius-button-standard-tertiary>\r\n <ius-button-standard-tertiary [iconName]=\"'icon-edit'\"\r\n (buttonClicked)=\"onPressedEditar.emit(account)\">Editar</ius-button-standard-tertiary>\r\n <!-- <ius-button-standard-tertiary [iconName]=\"'icon-delete'\"\r\n (buttonClicked)=\"onPressedDesvincular.emit(account)\">Desvincular</ius-button-standard-tertiary> -->\r\n </div>\r\n }\r\n</div>", styles: [".h1{font-family:Roboto,sans-serif;font-size:2.375rem;font-weight:500;line-height:46px}.h2{font-family:Roboto,sans-serif;font-size:1.875rem;font-weight:700;line-height:38px}.h3{font-family:Roboto,sans-serif;font-size:1.5rem;font-weight:500;line-height:32px}.h4{font-family:Roboto,sans-serif;font-size:1.25rem;font-weight:700;line-height:26px}.h5{font-family:Roboto,sans-serif;font-size:1.125rem;font-weight:500;line-height:24px;letter-spacing:.18px}.label-large{font-family:Roboto,sans-serif;font-size:1rem;font-weight:500;line-height:22px}.body-large{font-family:Rubik,sans-serif;font-size:1rem;font-weight:400;line-height:22px}.label-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;line-height:20px;letter-spacing:.28px}.body-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;font-style:italic;letter-spacing:.28px}.body-base-1,.body-base-1-1{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;letter-spacing:.28px}.body-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;letter-spacing:.28px}.body-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;font-style:italic;letter-spacing:.28px}.caption-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;letter-spacing:.28px}.caption-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;font-style:italic;letter-spacing:.28px}.ius-btn{display:inline-flex;padding:8px 12px;align-items:center;gap:8px;border-radius:8px;background-color:#fff;color:#333;border:1px solid #eaeaea;cursor:pointer;font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;font-style:normal;line-height:20px;letter-spacing:.28px;width:100%;justify-content:space-between}.ius-btn:hover:not(:disabled){border:1px solid #bfbfbf;box-shadow:0 1px 3px #0000001f,0 1px 2px #00000014}.ius-btn:active:not(:disabled){border:1px solid #8c8c8c;background-color:#eaeaea}.ius-btn.isOpen{border:1px solid #eaeaea;box-shadow:0 1px 3px #0000001f,0 1px 2px #00000014;background-color:#fff}.content{display:flex;align-items:center;gap:12px;width:100%}.general{position:relative}.logo{width:32px;height:32px;border-radius:100px;align-items:center;aspect-ratio:1/1;border:.5px solid #f5f5f5}.more-box{position:absolute;left:10%;padding:12px;gap:8px;display:flex;flex-direction:column;z-index:100;opacity:0;pointer-events:none;transform:translateY(-6px);transition:opacity .25s ease,transform .25s ease;border-radius:8px;background:#fff;box-shadow:0 2px 6px #00000024,0 1px 10px #0000001a}.more-box.active{opacity:1;transform:translateY(0);pointer-events:all}\n"], dependencies: [{ kind: "component", type: IconMdComponent, selector: "ius-icon-md", inputs: ["iconName", "color"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ButtonCircleTertiaryComponent, selector: "ius-button-circle-tertiary", inputs: ["disabled", "iconName"], outputs: ["buttonClicked"] }, { kind: "component", type: ButtonStandardTertiaryComponent, selector: "ius-button-standard-tertiary", inputs: ["disabled", "iconName"], outputs: ["buttonClicked"] }] }); }
28
28
  }
29
29
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ButtonAccountsComponent, decorators: [{
30
30
  type: Component,
@@ -33,7 +33,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
33
33
  CommonModule,
34
34
  ButtonCircleTertiaryComponent,
35
35
  ButtonStandardTertiaryComponent
36
- ], template: "<div class=\"general\">\r\n <div class=\"ius-btn\" [ngClass]=\"{ isOpen: isOpen }\">\r\n <div class=\"content\" (click)=\"onClickAccount(account)\">\r\n @if(account.logo) {\r\n <img class=\"logo\" [src]=\"account.logo\" alt=\"lem logo\" />\r\n } @else {\r\n <ius-icon-md [iconName]=\"'icon-account-circle'\" class=\"logo\"></ius-icon-md>\r\n }\r\n\r\n <span class=\"name\">{{account.name}}</span>\r\n </div>\r\n\r\n <ius-button-circle-tertiary (click)=\"showOptions($event)\" [iconName]=\"'icon-more-vert'\">\r\n </ius-button-circle-tertiary>\r\n\r\n </div>\r\n\r\n @if(openOptions) {\r\n <div class=\"more-box active\">\r\n <ius-button-standard-tertiary [iconName]=\"'icon-check-circle'\"\r\n (buttonClicked)=\"onPressedPredeterminado.emit(account)\">Marcar como\r\n predeterminada</ius-button-standard-tertiary>\r\n <ius-button-standard-tertiary [iconName]=\"'icon-edit'\"\r\n (buttonClicked)=\"onPressedEditar.emit(account)\">Editar</ius-button-standard-tertiary>\r\n <ius-button-standard-tertiary [iconName]=\"'icon-delete'\"\r\n (buttonClicked)=\"onPressedDesvincular.emit(account)\">Desvincular</ius-button-standard-tertiary>\r\n </div>\r\n }\r\n</div>", styles: [".h1{font-family:Roboto,sans-serif;font-size:2.375rem;font-weight:500;line-height:46px}.h2{font-family:Roboto,sans-serif;font-size:1.875rem;font-weight:700;line-height:38px}.h3{font-family:Roboto,sans-serif;font-size:1.5rem;font-weight:500;line-height:32px}.h4{font-family:Roboto,sans-serif;font-size:1.25rem;font-weight:700;line-height:26px}.h5{font-family:Roboto,sans-serif;font-size:1.125rem;font-weight:500;line-height:24px;letter-spacing:.18px}.label-large{font-family:Roboto,sans-serif;font-size:1rem;font-weight:500;line-height:22px}.body-large{font-family:Rubik,sans-serif;font-size:1rem;font-weight:400;line-height:22px}.label-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;line-height:20px;letter-spacing:.28px}.body-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;font-style:italic;letter-spacing:.28px}.body-base-1,.body-base-1-1{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;letter-spacing:.28px}.body-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;letter-spacing:.28px}.body-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;font-style:italic;letter-spacing:.28px}.caption-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;letter-spacing:.28px}.caption-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;font-style:italic;letter-spacing:.28px}.ius-btn{display:inline-flex;padding:8px 12px;align-items:center;gap:8px;border-radius:8px;background-color:#fff;color:#333;border:1px solid #eaeaea;cursor:pointer;font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;font-style:normal;line-height:20px;letter-spacing:.28px;width:100%;justify-content:space-between}.ius-btn:hover:not(:disabled){border:1px solid #bfbfbf;box-shadow:0 1px 3px #0000001f,0 1px 2px #00000014}.ius-btn:active:not(:disabled){border:1px solid #8c8c8c;background-color:#eaeaea}.ius-btn.isOpen{border:1px solid #eaeaea;box-shadow:0 1px 3px #0000001f,0 1px 2px #00000014;background-color:#fff}.content{display:flex;align-items:center;gap:12px;width:100%}.general{position:relative}.logo{width:32px;height:32px;border-radius:100px;align-items:center;aspect-ratio:1/1;border:.5px solid #f5f5f5}.more-box{position:absolute;left:10%;padding:12px;gap:8px;display:flex;flex-direction:column;z-index:100;opacity:0;pointer-events:none;transform:translateY(-6px);transition:opacity .25s ease,transform .25s ease;border-radius:8px;background:#fff;box-shadow:0 2px 6px #00000024,0 1px 10px #0000001a}.more-box.active{opacity:1;transform:translateY(0);pointer-events:all}\n"] }]
36
+ ], template: "<div class=\"general\">\r\n <div class=\"ius-btn\" [ngClass]=\"{ isOpen: isOpen }\">\r\n <div class=\"content\" (click)=\"onClickAccount(account)\">\r\n @if(account.logo) {\r\n <img class=\"logo\" [src]=\"account.logo\" alt=\"lem logo\" />\r\n } @else {\r\n <ius-icon-md [iconName]=\"'icon-account-circle'\" class=\"logo\"></ius-icon-md>\r\n }\r\n\r\n <span class=\"name\">{{account.name}}</span>\r\n </div>\r\n\r\n <ius-button-circle-tertiary (click)=\"showOptions($event)\" [iconName]=\"'icon-more-vert'\">\r\n </ius-button-circle-tertiary>\r\n\r\n </div>\r\n\r\n @if(openOptions) {\r\n <div class=\"more-box active\">\r\n <ius-button-standard-tertiary [iconName]=\"'icon-check-circle'\"\r\n (buttonClicked)=\"onPressedPredeterminado.emit(account)\">Marcar como\r\n predeterminada</ius-button-standard-tertiary>\r\n <ius-button-standard-tertiary [iconName]=\"'icon-edit'\"\r\n (buttonClicked)=\"onPressedEditar.emit(account)\">Editar</ius-button-standard-tertiary>\r\n <!-- <ius-button-standard-tertiary [iconName]=\"'icon-delete'\"\r\n (buttonClicked)=\"onPressedDesvincular.emit(account)\">Desvincular</ius-button-standard-tertiary> -->\r\n </div>\r\n }\r\n</div>", styles: [".h1{font-family:Roboto,sans-serif;font-size:2.375rem;font-weight:500;line-height:46px}.h2{font-family:Roboto,sans-serif;font-size:1.875rem;font-weight:700;line-height:38px}.h3{font-family:Roboto,sans-serif;font-size:1.5rem;font-weight:500;line-height:32px}.h4{font-family:Roboto,sans-serif;font-size:1.25rem;font-weight:700;line-height:26px}.h5{font-family:Roboto,sans-serif;font-size:1.125rem;font-weight:500;line-height:24px;letter-spacing:.18px}.label-large{font-family:Roboto,sans-serif;font-size:1rem;font-weight:500;line-height:22px}.body-large{font-family:Rubik,sans-serif;font-size:1rem;font-weight:400;line-height:22px}.label-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;line-height:20px;letter-spacing:.28px}.body-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;font-style:italic;letter-spacing:.28px}.body-base-1,.body-base-1-1{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;letter-spacing:.28px}.body-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;letter-spacing:.28px}.body-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;font-style:italic;letter-spacing:.28px}.caption-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;letter-spacing:.28px}.caption-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;font-style:italic;letter-spacing:.28px}.ius-btn{display:inline-flex;padding:8px 12px;align-items:center;gap:8px;border-radius:8px;background-color:#fff;color:#333;border:1px solid #eaeaea;cursor:pointer;font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;font-style:normal;line-height:20px;letter-spacing:.28px;width:100%;justify-content:space-between}.ius-btn:hover:not(:disabled){border:1px solid #bfbfbf;box-shadow:0 1px 3px #0000001f,0 1px 2px #00000014}.ius-btn:active:not(:disabled){border:1px solid #8c8c8c;background-color:#eaeaea}.ius-btn.isOpen{border:1px solid #eaeaea;box-shadow:0 1px 3px #0000001f,0 1px 2px #00000014;background-color:#fff}.content{display:flex;align-items:center;gap:12px;width:100%}.general{position:relative}.logo{width:32px;height:32px;border-radius:100px;align-items:center;aspect-ratio:1/1;border:.5px solid #f5f5f5}.more-box{position:absolute;left:10%;padding:12px;gap:8px;display:flex;flex-direction:column;z-index:100;opacity:0;pointer-events:none;transform:translateY(-6px);transition:opacity .25s ease,transform .25s ease;border-radius:8px;background:#fff;box-shadow:0 2px 6px #00000024,0 1px 10px #0000001a}.more-box.active{opacity:1;transform:translateY(0);pointer-events:all}\n"] }]
37
37
  }], propDecorators: { account: [{
38
38
  type: Input
39
39
  }], accountSelected: [{
@@ -45,4 +45,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
45
45
  }], onPressedEditar: [{
46
46
  type: Output
47
47
  }] } });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLWFjY291bnRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2l1cy1kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL2J1dHRvbi1hY2NvdW50cy9idXR0b24tYWNjb3VudHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXVzLWRlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvYnV0dG9uLWFjY291bnRzL2J1dHRvbi1hY2NvdW50cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzdDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7QUFvQjlFLE1BQU0sT0FBTyx1QkFBdUI7SUFacEM7UUFhRSxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2YsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFHVixvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDMUMsNEJBQXVCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNsRCx5QkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQy9DLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztLQWVyRDtJQVhDLGNBQWMsQ0FBQyxPQUFnQjtRQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWlCO1FBQzNCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDdkMsQ0FBQzsrR0FyQlUsdUJBQXVCO21HQUF2Qix1QkFBdUIsc1NDeEJwQyx5ekNBNEJNLHVyRkRaRixlQUFlLHNGQUNmLFlBQVksNkhBQ1osNkJBQTZCLHFJQUM3QiwrQkFBK0I7OzRGQUt0Qix1QkFBdUI7a0JBWm5DLFNBQVM7K0JBQ0UscUJBQXFCLGNBQ25CLElBQUksV0FDUDt3QkFDUCxlQUFlO3dCQUNmLFlBQVk7d0JBQ1osNkJBQTZCO3dCQUM3QiwrQkFBK0I7cUJBQ2hDOzhCQVFRLE9BQU87c0JBQWYsS0FBSztnQkFDSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLHVCQUF1QjtzQkFBaEMsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEljb25NZENvbXBvbmVudCB9IGZyb20gXCIuLi9pY29uLW1kXCI7XHJcbmltcG9ydCB7IEJ1dHRvbkNpcmNsZVRlcnRpYXJ5Q29tcG9uZW50IH0gZnJvbSBcIi4uL2J1dHRvbi1jaXJjbGUtdGVydGlhcnlcIjtcclxuaW1wb3J0IHsgQnV0dG9uU3RhbmRhcmRUZXJ0aWFyeUNvbXBvbmVudCB9IGZyb20gXCIuLi9idXR0b24tc3RhbmRhcmQtdGVydGlhcnlcIjtcclxuXHJcbmludGVyZmFjZSBBY2NvdW50IHtcclxuICBhY2NvdW50SUQ6IG51bWJlcjtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgbG9nbz86IHN0cmluZztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpdXMtYnV0dG9uLWFjY291bnRzJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEljb25NZENvbXBvbmVudCxcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEJ1dHRvbkNpcmNsZVRlcnRpYXJ5Q29tcG9uZW50LFxyXG4gICAgQnV0dG9uU3RhbmRhcmRUZXJ0aWFyeUNvbXBvbmVudFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2J1dHRvbi1hY2NvdW50cy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2J1dHRvbi1hY2NvdW50cy5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEJ1dHRvbkFjY291bnRzQ29tcG9uZW50IHtcclxuICBpc09wZW4gPSBmYWxzZTtcclxuICBvcGVuT3B0aW9ucyA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBhY2NvdW50ITogQWNjb3VudDtcclxuICBAT3V0cHV0KCkgYWNjb3VudFNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIG9uUHJlc3NlZFByZWRldGVybWluYWRvID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIG9uUHJlc3NlZERlc3ZpbmN1bGFyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIG9uUHJlc3NlZEVkaXRhciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHJcblxyXG4gIG9uQ2xpY2tBY2NvdW50KGFjY291bnQ6IEFjY291bnQpIHtcclxuICAgIHRoaXMuaXNPcGVuID0gIXRoaXMuaXNPcGVuO1xyXG4gICAgdGhpcy5hY2NvdW50U2VsZWN0ZWQuZW1pdChhY2NvdW50KTtcclxuICB9XHJcblxyXG4gIHNob3dPcHRpb25zKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLm9wZW5PcHRpb25zID0gIXRoaXMub3Blbk9wdGlvbnM7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZ2VuZXJhbFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIml1cy1idG5cIiBbbmdDbGFzc109XCJ7IGlzT3BlbjogaXNPcGVuIH1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiIChjbGljayk9XCJvbkNsaWNrQWNjb3VudChhY2NvdW50KVwiPlxyXG4gICAgICAgICAgICBAaWYoYWNjb3VudC5sb2dvKSB7XHJcbiAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJsb2dvXCIgW3NyY109XCJhY2NvdW50LmxvZ29cIiBhbHQ9XCJsZW0gbG9nb1wiIC8+XHJcbiAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICA8aXVzLWljb24tbWQgW2ljb25OYW1lXT1cIidpY29uLWFjY291bnQtY2lyY2xlJ1wiIGNsYXNzPVwibG9nb1wiPjwvaXVzLWljb24tbWQ+XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmFtZVwiPnt7YWNjb3VudC5uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxpdXMtYnV0dG9uLWNpcmNsZS10ZXJ0aWFyeSAoY2xpY2spPVwic2hvd09wdGlvbnMoJGV2ZW50KVwiIFtpY29uTmFtZV09XCInaWNvbi1tb3JlLXZlcnQnXCI+XHJcbiAgICAgICAgPC9pdXMtYnV0dG9uLWNpcmNsZS10ZXJ0aWFyeT5cclxuXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICBAaWYob3Blbk9wdGlvbnMpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJtb3JlLWJveCBhY3RpdmVcIj5cclxuICAgICAgICA8aXVzLWJ1dHRvbi1zdGFuZGFyZC10ZXJ0aWFyeSBbaWNvbk5hbWVdPVwiJ2ljb24tY2hlY2stY2lyY2xlJ1wiXHJcbiAgICAgICAgICAgIChidXR0b25DbGlja2VkKT1cIm9uUHJlc3NlZFByZWRldGVybWluYWRvLmVtaXQoYWNjb3VudClcIj5NYXJjYXIgY29tb1xyXG4gICAgICAgICAgICBwcmVkZXRlcm1pbmFkYTwvaXVzLWJ1dHRvbi1zdGFuZGFyZC10ZXJ0aWFyeT5cclxuICAgICAgICA8aXVzLWJ1dHRvbi1zdGFuZGFyZC10ZXJ0aWFyeSBbaWNvbk5hbWVdPVwiJ2ljb24tZWRpdCdcIlxyXG4gICAgICAgICAgICAoYnV0dG9uQ2xpY2tlZCk9XCJvblByZXNzZWRFZGl0YXIuZW1pdChhY2NvdW50KVwiPkVkaXRhcjwvaXVzLWJ1dHRvbi1zdGFuZGFyZC10ZXJ0aWFyeT5cclxuICAgICAgICA8aXVzLWJ1dHRvbi1zdGFuZGFyZC10ZXJ0aWFyeSBbaWNvbk5hbWVdPVwiJ2ljb24tZGVsZXRlJ1wiXHJcbiAgICAgICAgICAgIChidXR0b25DbGlja2VkKT1cIm9uUHJlc3NlZERlc3ZpbmN1bGFyLmVtaXQoYWNjb3VudClcIj5EZXN2aW5jdWxhcjwvaXVzLWJ1dHRvbi1zdGFuZGFyZC10ZXJ0aWFyeT5cclxuICAgIDwvZGl2PlxyXG4gICAgfVxyXG48L2Rpdj4iXX0=
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLWFjY291bnRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2l1cy1kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL2J1dHRvbi1hY2NvdW50cy9idXR0b24tYWNjb3VudHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXVzLWRlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvYnV0dG9uLWFjY291bnRzL2J1dHRvbi1hY2NvdW50cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzdDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7QUFvQjlFLE1BQU0sT0FBTyx1QkFBdUI7SUFacEM7UUFhRSxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2YsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFHVixvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDMUMsNEJBQXVCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNsRCx5QkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQy9DLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztLQWVyRDtJQVhDLGNBQWMsQ0FBQyxPQUFnQjtRQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWlCO1FBQzNCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDdkMsQ0FBQzsrR0FyQlUsdUJBQXVCO21HQUF2Qix1QkFBdUIsc1NDeEJwQyxrMENBNEJNLHVyRkRaRixlQUFlLHNGQUNmLFlBQVksNkhBQ1osNkJBQTZCLHFJQUM3QiwrQkFBK0I7OzRGQUt0Qix1QkFBdUI7a0JBWm5DLFNBQVM7K0JBQ0UscUJBQXFCLGNBQ25CLElBQUksV0FDUDt3QkFDUCxlQUFlO3dCQUNmLFlBQVk7d0JBQ1osNkJBQTZCO3dCQUM3QiwrQkFBK0I7cUJBQ2hDOzhCQVFRLE9BQU87c0JBQWYsS0FBSztnQkFDSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLHVCQUF1QjtzQkFBaEMsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEljb25NZENvbXBvbmVudCB9IGZyb20gXCIuLi9pY29uLW1kXCI7XHJcbmltcG9ydCB7IEJ1dHRvbkNpcmNsZVRlcnRpYXJ5Q29tcG9uZW50IH0gZnJvbSBcIi4uL2J1dHRvbi1jaXJjbGUtdGVydGlhcnlcIjtcclxuaW1wb3J0IHsgQnV0dG9uU3RhbmRhcmRUZXJ0aWFyeUNvbXBvbmVudCB9IGZyb20gXCIuLi9idXR0b24tc3RhbmRhcmQtdGVydGlhcnlcIjtcclxuXHJcbmludGVyZmFjZSBBY2NvdW50IHtcclxuICBhY2NvdW50SUQ6IG51bWJlcjtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgbG9nbz86IHN0cmluZztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpdXMtYnV0dG9uLWFjY291bnRzJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEljb25NZENvbXBvbmVudCxcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEJ1dHRvbkNpcmNsZVRlcnRpYXJ5Q29tcG9uZW50LFxyXG4gICAgQnV0dG9uU3RhbmRhcmRUZXJ0aWFyeUNvbXBvbmVudFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2J1dHRvbi1hY2NvdW50cy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2J1dHRvbi1hY2NvdW50cy5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEJ1dHRvbkFjY291bnRzQ29tcG9uZW50IHtcclxuICBpc09wZW4gPSBmYWxzZTtcclxuICBvcGVuT3B0aW9ucyA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBhY2NvdW50ITogQWNjb3VudDtcclxuICBAT3V0cHV0KCkgYWNjb3VudFNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIG9uUHJlc3NlZFByZWRldGVybWluYWRvID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIG9uUHJlc3NlZERlc3ZpbmN1bGFyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIG9uUHJlc3NlZEVkaXRhciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHJcblxyXG4gIG9uQ2xpY2tBY2NvdW50KGFjY291bnQ6IEFjY291bnQpIHtcclxuICAgIHRoaXMuaXNPcGVuID0gIXRoaXMuaXNPcGVuO1xyXG4gICAgdGhpcy5hY2NvdW50U2VsZWN0ZWQuZW1pdChhY2NvdW50KTtcclxuICB9XHJcblxyXG4gIHNob3dPcHRpb25zKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLm9wZW5PcHRpb25zID0gIXRoaXMub3Blbk9wdGlvbnM7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZ2VuZXJhbFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIml1cy1idG5cIiBbbmdDbGFzc109XCJ7IGlzT3BlbjogaXNPcGVuIH1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiIChjbGljayk9XCJvbkNsaWNrQWNjb3VudChhY2NvdW50KVwiPlxyXG4gICAgICAgICAgICBAaWYoYWNjb3VudC5sb2dvKSB7XHJcbiAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJsb2dvXCIgW3NyY109XCJhY2NvdW50LmxvZ29cIiBhbHQ9XCJsZW0gbG9nb1wiIC8+XHJcbiAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICA8aXVzLWljb24tbWQgW2ljb25OYW1lXT1cIidpY29uLWFjY291bnQtY2lyY2xlJ1wiIGNsYXNzPVwibG9nb1wiPjwvaXVzLWljb24tbWQ+XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmFtZVwiPnt7YWNjb3VudC5uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxpdXMtYnV0dG9uLWNpcmNsZS10ZXJ0aWFyeSAoY2xpY2spPVwic2hvd09wdGlvbnMoJGV2ZW50KVwiIFtpY29uTmFtZV09XCInaWNvbi1tb3JlLXZlcnQnXCI+XHJcbiAgICAgICAgPC9pdXMtYnV0dG9uLWNpcmNsZS10ZXJ0aWFyeT5cclxuXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICBAaWYob3Blbk9wdGlvbnMpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJtb3JlLWJveCBhY3RpdmVcIj5cclxuICAgICAgICA8aXVzLWJ1dHRvbi1zdGFuZGFyZC10ZXJ0aWFyeSBbaWNvbk5hbWVdPVwiJ2ljb24tY2hlY2stY2lyY2xlJ1wiXHJcbiAgICAgICAgICAgIChidXR0b25DbGlja2VkKT1cIm9uUHJlc3NlZFByZWRldGVybWluYWRvLmVtaXQoYWNjb3VudClcIj5NYXJjYXIgY29tb1xyXG4gICAgICAgICAgICBwcmVkZXRlcm1pbmFkYTwvaXVzLWJ1dHRvbi1zdGFuZGFyZC10ZXJ0aWFyeT5cclxuICAgICAgICA8aXVzLWJ1dHRvbi1zdGFuZGFyZC10ZXJ0aWFyeSBbaWNvbk5hbWVdPVwiJ2ljb24tZWRpdCdcIlxyXG4gICAgICAgICAgICAoYnV0dG9uQ2xpY2tlZCk9XCJvblByZXNzZWRFZGl0YXIuZW1pdChhY2NvdW50KVwiPkVkaXRhcjwvaXVzLWJ1dHRvbi1zdGFuZGFyZC10ZXJ0aWFyeT5cclxuICAgICAgICA8IS0tIDxpdXMtYnV0dG9uLXN0YW5kYXJkLXRlcnRpYXJ5IFtpY29uTmFtZV09XCInaWNvbi1kZWxldGUnXCJcclxuICAgICAgICAgICAgKGJ1dHRvbkNsaWNrZWQpPVwib25QcmVzc2VkRGVzdmluY3VsYXIuZW1pdChhY2NvdW50KVwiPkRlc3ZpbmN1bGFyPC9pdXMtYnV0dG9uLXN0YW5kYXJkLXRlcnRpYXJ5PiAtLT5cclxuICAgIDwvZGl2PlxyXG4gICAgfVxyXG48L2Rpdj4iXX0=
@@ -22,6 +22,7 @@ export class DateHourPickerComponent {
22
22
  this.isRequired = true;
23
23
  this.mode = 'date-time';
24
24
  this.dateSelected = new EventEmitter();
25
+ this.onBlurEvent = new EventEmitter();
25
26
  this.dayLabels = ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa'];
26
27
  this.months = ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'];
27
28
  this.yearsArray = Array.from({ length: 12 }, (_, i) => i);
@@ -31,6 +32,7 @@ export class DateHourPickerComponent {
31
32
  this.selectedHour = 1;
32
33
  this.selectedMinute = 0;
33
34
  this.selectedPeriod = 'PM';
35
+ this.isAlertText = false;
34
36
  this.viewDate = new Date();
35
37
  this.calendarOpen = false;
36
38
  this.focused = false;
@@ -69,7 +71,7 @@ export class DateHourPickerComponent {
69
71
  return;
70
72
  if (!this.calendarOpen) {
71
73
  this.calendarView = 'day';
72
- this.error = false;
74
+ this.isAlertText = false;
73
75
  this.focused = true;
74
76
  this.calendarOpen = true;
75
77
  return;
@@ -153,7 +155,7 @@ export class DateHourPickerComponent {
153
155
  const selected = new Date(date.getFullYear(), date.getMonth(), date.getDate(), hour, this.selectedMinute);
154
156
  this.selectedDate = selected;
155
157
  this.focused = false;
156
- this.error = false;
158
+ this.isAlertText = false;
157
159
  this.emitSelection(!open);
158
160
  if (open) {
159
161
  this.calendarOpen = true;
@@ -196,9 +198,10 @@ export class DateHourPickerComponent {
196
198
  }
197
199
  closeCalendar() {
198
200
  this.calendarOpen = false;
199
- if (!this.selectedDate) {
200
- this.error = true;
201
+ if (!this.selectedDate && this.isRequired) {
202
+ this.isAlertText = true;
201
203
  }
204
+ this.onBlurEvent.emit();
202
205
  }
203
206
  handleOutsideClick(event) {
204
207
  const clickedInside = this.elRef.nativeElement.contains(event.target);
@@ -240,7 +243,7 @@ export class DateHourPickerComponent {
240
243
  }
241
244
  }
242
245
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DateHourPickerComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
243
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: DateHourPickerComponent, isStandalone: true, selector: "ius-date-hour-picker", inputs: { label: "label", placeholder: "placeholder", error: "error", helpText: "helpText", helpTextError: "helpTextError", disabled: "disabled", iconHelp: "iconHelp", isRequired: "isRequired", mode: "mode" }, outputs: { dateSelected: "dateSelected" }, host: { listeners: { "document:click": "handleOutsideClick($event)" } }, ngImport: i0, template: "<div class=\"date-picker\" [class.disabled]=\"disabled\">\r\n <div class=\"text\">\r\n @if (isRequired) {\r\n <div class=\"required\"></div>\r\n }\r\n\r\n <label class=\"label\">{{ label }}</label>\r\n\r\n @if (iconHelp) {\r\n <div class=\"help-icon\">\r\n <ius-icon-md iconName=\"icon-help\"></ius-icon-md>\r\n </div>\r\n }\r\n\r\n <label class=\"label\">:</label>\r\n </div>\r\n\r\n <div class=\"input-wrapper\">\r\n <!-- Origen del overlay -->\r\n <div\r\n class=\"container-textfield\"\r\n [ngClass]=\"{\r\n disabled: disabled,\r\n focused: calendarOpen || focused,\r\n alert: !calendarOpen && error && !disabled,\r\n selected: selectedDate\r\n }\"\r\n (click)=\"toggleCalendar()\"\r\n cdkOverlayOrigin #origin=\"cdkOverlayOrigin\"\r\n >\r\n <div class=\"input\">\r\n <input\r\n [placeholder]=\"placeholder\"\r\n [value]=\"selectedDate ? getDisplayValue() : ''\"\r\n readonly\r\n [disabled]=\"disabled\"\r\n />\r\n <div class=\"cnt-icon-right\">\r\n <ius-icon-md iconName=\"icon-calendar-today\"></ius-icon-md>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- ======== OVERLAY (CDK) ======== -->\r\n <ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayOpen]=\"calendarOpen\"\r\n [cdkConnectedOverlayOrigin]=\"origin\"\r\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\r\n [cdkConnectedOverlayHasBackdrop]=\"false\"\r\n [cdkConnectedOverlayPush]=\"true\"\r\n [cdkConnectedOverlayFlexibleDimensions]=\"false\"\r\n [cdkConnectedOverlayPanelClass]=\"'calendar-overlay-panel'\"\r\n >\r\n <div\r\n class=\"calendar-overlay\"\r\n [class.time-only]=\"mode === 'time-only'\"\r\n [class.date-only]=\"mode === 'date-only'\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n <div class=\"calendar-content\">\r\n @if (mode !== 'time-only') {\r\n <div class=\"calendar-side\">\r\n <div class=\"calendar-header\">\r\n <ius-button-standard-tertiary\r\n iconName=\"icon-keyboard-arrow-left\"\r\n (buttonClicked)=\"prev()\"\r\n ></ius-button-standard-tertiary>\r\n\r\n <span (click)=\"calendarView = nextView(calendarView)\">\r\n @switch (calendarView) { @case ('day') {\r\n {{ getMonthName(viewDate.getMonth()) }}\r\n {{ viewDate.getFullYear() }}\r\n } @case ('month') {\r\n {{ viewDate.getFullYear() }}\r\n } @case ('year') {\r\n {{ getDecadeStart() }}-{{ getDecadeStart() + 9 }}\r\n } }\r\n </span>\r\n\r\n <ius-button-standard-tertiary\r\n iconName=\"icon-keyboard-arrow-right\"\r\n (buttonClicked)=\"next()\"\r\n ></ius-button-standard-tertiary>\r\n </div>\r\n\r\n <div class=\"calendar-body\">\r\n @switch (calendarView) { @case ('day') {\r\n <div class=\"grid days\">\r\n @for (day of dayLabels; track day) {\r\n <div class=\"header\">{{ day }}</div>\r\n } @for (date of calendarDays; track date) {\r\n <div\r\n class=\"cell\"\r\n [class.selected]=\"\r\n selectedDate && isSameDate(date, selectedDate)\r\n \"\r\n [class.out-of-range]=\"date.getMonth() !== viewDate.getMonth()\"\r\n (click)=\"selectDate(date, true)\"\r\n >\r\n {{ date.getDate() }}\r\n </div>\r\n }\r\n </div>\r\n } @case ('month') {\r\n <div class=\"grid months\">\r\n @for (m of months; track m; let i = $index) {\r\n <div class=\"cell\" (click)=\"setMonth(i)\">{{ m }}</div>\r\n }\r\n </div>\r\n } @case ('year') {\r\n <div class=\"grid years\">\r\n @for (i of yearsArray; track i) {\r\n <div\r\n class=\"cell\"\r\n [class.out-of-range]=\"i === 0 || i === 11\"\r\n (click)=\"setYear(getDecadeStart() - 1 + i)\"\r\n >\r\n {{ getDecadeStart() - 1 + i }}\r\n </div>\r\n }\r\n </div>\r\n } }\r\n </div>\r\n </div>\r\n } @if (mode !== 'date-only') {\r\n <div class=\"time-selector\">\r\n <button class=\"time-title\">\r\n <span>\r\n {{ selectedHour | number : \"2.0\" }}:{{\r\n selectedMinute === 0 ? \"00\" : (selectedMinute | number : \"2.0\")\r\n }}\r\n {{ selectedPeriod }}\r\n </span>\r\n </button>\r\n <ius-simple-divider></ius-simple-divider>\r\n <div class=\"time-columns\">\r\n <div class=\"column scrollable\">\r\n @for (h of hours; track h) {\r\n <div\r\n [class.selected]=\"h === selectedHour\"\r\n (click)=\"\r\n selectedHour = h;\r\n mode === 'time-only'\r\n ? selectTime()\r\n : selectDate(viewDate, true)\r\n \"\r\n >\r\n {{ h | number : \"2.0\" }}\r\n </div>\r\n }\r\n </div>\r\n <div class=\"divider\"></div>\r\n <div class=\"column scrollable\">\r\n @for (m of minutes; track m) {\r\n <div\r\n [class.selected]=\"m === selectedMinute\"\r\n (click)=\"\r\n selectedMinute = m;\r\n mode === 'time-only'\r\n ? selectTime()\r\n : selectDate(viewDate, true)\r\n \"\r\n >\r\n {{ m | number : \"2.0\" }}\r\n </div>\r\n }\r\n </div>\r\n <div class=\"divider\"></div>\r\n <div class=\"column\">\r\n <div\r\n [class.selected]=\"'AM' === selectedPeriod\"\r\n (click)=\"\r\n selectedPeriod = 'AM';\r\n mode === 'time-only'\r\n ? selectTime()\r\n : selectDate(viewDate, false)\r\n \"\r\n >\r\n AM\r\n </div>\r\n <div\r\n [class.selected]=\"'PM' === selectedPeriod\"\r\n (click)=\"\r\n selectedPeriod = 'PM';\r\n mode === 'time-only'\r\n ? selectTime()\r\n : selectDate(viewDate, false)\r\n \"\r\n >\r\n PM\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n <ius-simple-divider></ius-simple-divider>\r\n <button class=\"today\" (click)=\"goToToday()\">\r\n @if (mode === 'date-only') { Fecha actual } @else if (mode ===\r\n 'time-only') { Hora actual } @else { Fecha y hora actual }\r\n </button>\r\n </div>\r\n </ng-template>\r\n <!-- ======== /OVERLAY (CDK) ======== -->\r\n </div>\r\n @if (helpText && focused && !error) {\r\n <div class=\"help-text\">\r\n {{ helpText }}\r\n </div>\r\n } @if (helpTextError && error) {\r\n <div class=\"help-text-error\">\r\n {{ helpTextError }}\r\n </div>\r\n }\r\n</div>\r\n", styles: [".h1{font-family:Roboto,sans-serif;font-size:2.375rem;font-weight:500;line-height:46px}.h2{font-family:Roboto,sans-serif;font-size:1.875rem;font-weight:700;line-height:38px}.h3{font-family:Roboto,sans-serif;font-size:1.5rem;font-weight:500;line-height:32px}.h4{font-family:Roboto,sans-serif;font-size:1.25rem;font-weight:700;line-height:26px}.h5{font-family:Roboto,sans-serif;font-size:1.125rem;font-weight:500;line-height:24px;letter-spacing:.18px}.label-large{font-family:Roboto,sans-serif;font-size:1rem;font-weight:500;line-height:22px}.body-large{font-family:Rubik,sans-serif;font-size:1rem;font-weight:400;line-height:22px}.label-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;line-height:20px;letter-spacing:.28px}.body-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;font-style:italic;letter-spacing:.28px}.body-base-1,.body-base-1-1{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;letter-spacing:.28px}.body-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;letter-spacing:.28px}.body-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;font-style:italic;letter-spacing:.28px}.caption-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;letter-spacing:.28px}.caption-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;font-style:italic;letter-spacing:.28px}.required{width:4px;height:4px;margin-right:4px;aspect-ratio:1/1;border-radius:50%;background-color:#ff4e3a}.text{display:flex;align-items:center}.cdk-overlay-pane.calendar-overlay-panel{z-index:9000;position:absolute!important}.input-wrapper{position:relative;display:inline-block;width:100%}.date-picker{width:100%;position:relative;display:flex;flex-direction:column}.date-picker.disabled{opacity:.6;pointer-events:none}.date-picker .label{margin:0 4px;color:#333;font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;font-style:normal;line-height:20px;letter-spacing:.28px}.date-picker .help-icon{color:#595959}.container-textfield{display:flex;position:relative;align-items:flex-start;gap:4px}.container-textfield .input{width:100%;display:flex;align-items:flex-start;justify-content:center;gap:4px;padding:12px;border-radius:8px;background:#f5f5f5;cursor:pointer;border:none}.container-textfield .input input{flex:1;outline:none;border:none;background:#f5f5f5;color:#8c8c8c;font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;font-style:normal;line-height:20px;letter-spacing:.28px;cursor:pointer}.container-textfield .cnt-icon-right{display:flex;align-items:center;justify-content:center;color:#333}.container-textfield:hover .input,.container-textfield:hover .input input{background-color:#edf6ff}.container-textfield:hover .input .cnt-icon-right{color:#061b7a}.container-textfield.focused .input{border:1px solid #0581BC;background:#edf6ff}.container-textfield.focused .input input{background-color:#edf6ff;border:none}.container-textfield.focused .input .cnt-icon-right{color:#061b7a}.container-textfield.alert .input{border-radius:8px;border:1px solid #DB2E2A;background:#fff4f0}.container-textfield.alert .input input{background:#fff4f0}.container-textfield.alert .input .cnt-icon-right{color:#db2e2a}.container-textfield.selected .input{background:#f5f5f5}.container-textfield.selected .input input{background:#f5f5f5;border:none;color:#333;font-family:Rubik,sans-serif;font-size:.875rem;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.28px}.container-textfield.selected .input .help-icon{color:#595959}.container-textfield.disabled{background:#f5f5f5}.container-textfield.disabled input::placeholder{color:#bfbfbf;opacity:1}.container-textfield.disabled .cnt-icon-right{color:#bfbfbf}.calendar-overlay{display:inline-block;border-radius:8px;border:1px solid #f5f5f5;background:#fff;box-shadow:0 2px 6px #00000024,0 1px 10px #0000001a}.calendar-overlay.time-only{min-width:200px;width:auto}.calendar-overlay.time-only .calendar-content{flex-direction:column;align-items:center;padding:12px}.calendar-overlay.time-only .time-selector{border-left:none;border-top:1px solid #f0f0f0;padding:12px;min-width:180px;width:100%}.calendar-overlay.time-only .time-selector .time-columns{justify-content:center;gap:8px}.calendar-overlay.time-only .time-selector .column{height:150px}.calendar-overlay.date-only{min-width:280px;width:auto}.calendar-overlay.date-only .calendar-content{flex-direction:column;align-items:center}.calendar-overlay.date-only .calendar-side{min-width:260px;width:100%}.calendar-content{display:flex;flex-direction:row;width:auto;max-width:none;max-height:60vh;overflow:hidden}.calendar-side{padding:12px;flex:1;min-width:260px}.calendar-header{display:flex;align-items:center;align-self:stretch}.calendar-header span{flex:1;display:flex;justify-content:center;align-items:center;color:#333;cursor:pointer;font-family:Roboto;font-size:1rem;font-weight:500;font-style:normal;line-height:22px}.calendar-body{display:flex;flex-direction:column;gap:8px;margin:0 10px}.grid{display:grid;gap:8px}.grid.days{grid-template-columns:repeat(7,1fr)}.grid.months,.grid.years{margin-left:27px;grid-template-columns:repeat(3,1fr)}.grid .header{display:flex;align-items:center;height:30px;padding:2px 4px;gap:16px;color:#333;font-family:Rubik;font-size:.75rem;font-weight:500;font-style:normal;line-height:16px;letter-spacing:.24px}.grid .cell{display:flex;width:24px;height:24px;min-width:24px;min-height:24px;flex-direction:column;justify-content:center;align-items:center;aspect-ratio:1/1;background:#fff;font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;font-style:normal;line-height:20px;letter-spacing:.28px;cursor:pointer}.grid .cell:hover{background:#edf6ff}.grid .cell.out-of-range{color:#bfbfbf}.grid .cell.selected{border-radius:100px;border:1px solid #184FDB;background:#2167ff;color:#fff}.today{margin-top:8px;width:100%;padding:8px;border:none;background:transparent;display:flex;justify-content:center;align-items:center;gap:4px;color:#333;cursor:pointer;font-family:Roboto;font-size:1rem;font-weight:500;font-style:normal;line-height:22px}.today:hover{background-color:#edf6ff;border-radius:4px}.calendar-overlay .calendar-content{overflow-x:hidden}.time-selector{border-left:1px solid #f0f0f0;padding:12px 8px;display:flex;flex-direction:column;gap:8px;min-width:150px}.time-selector .time-columns{display:flex;gap:4px;justify-content:center}.time-selector .time-title{display:flex;padding:8px;justify-content:center;align-items:center;gap:4px;align-self:stretch;border-radius:4px;border:none;background-color:#fff}.time-selector .time-title span{color:#333;font-family:Roboto,sans-serif;font-size:1rem;font-style:normal;font-weight:500;line-height:22px}.time-selector .divider{background-color:#b6b4b430;height:100%;width:1px}.time-selector .column{overflow-y:auto;display:flex;height:218px;flex-direction:column;align-items:flex-start;margin:0 2px}.time-selector .column .list{display:flex;padding:4px 8px;justify-content:flex-end;align-items:flex-start;gap:8px;align-self:stretch}.time-selector .column::-webkit-scrollbar{width:4px}.time-selector .column::-webkit-scrollbar-thumb{background-color:#fff;border-radius:4px}.time-selector .column div{display:flex;height:28px;padding:4px 8px;justify-content:flex-end;align-items:flex-start;gap:8px;flex-shrink:0;align-self:stretch;background:#fff;color:#595959;font-family:Rubik,sans-serif;font-size:.875rem;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.28px}.time-selector .column div:hover{cursor:pointer}.time-selector .column div.selected{display:flex;padding:4px 8px;justify-content:flex-end;align-items:center;gap:8px;align-self:stretch;border-radius:8px;background:#2167ff;color:#fff}.time-selector .today{margin-top:8px;padding:8px;text-align:center;font-weight:500;color:#333}.help-text{display:flex;align-items:center;gap:10px;color:#595959;font-family:Rubik,sans-serif;font-size:.75rem;font-style:italic;font-weight:500;line-height:16px;letter-spacing:.24px}.help-text-error{display:flex;align-items:center;gap:10px;color:#931224;font-family:Rubik,sans-serif;font-size:.75rem;font-style:italic;font-weight:500;line-height:16px;letter-spacing:.24px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i2.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i2.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: // ✅ CDK Overlay
246
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: DateHourPickerComponent, isStandalone: true, selector: "ius-date-hour-picker", inputs: { label: "label", placeholder: "placeholder", error: "error", helpText: "helpText", helpTextError: "helpTextError", errorText: "errorText", disabled: "disabled", iconHelp: "iconHelp", isRequired: "isRequired", mode: "mode" }, outputs: { dateSelected: "dateSelected", onBlurEvent: "onBlurEvent" }, host: { listeners: { "document:click": "handleOutsideClick($event)" } }, ngImport: i0, template: "<div class=\"date-picker\" [class.disabled]=\"disabled\">\r\n <div class=\"text\">\r\n @if (isRequired) {\r\n <div class=\"required\"></div>\r\n }\r\n\r\n <label class=\"label\">{{ label }}</label>\r\n\r\n @if (iconHelp) {\r\n <div class=\"help-icon\">\r\n <ius-icon-md iconName=\"icon-help\"></ius-icon-md>\r\n </div>\r\n }\r\n\r\n <label class=\"label\">:</label>\r\n </div>\r\n\r\n <div class=\"input-wrapper\">\r\n <!-- Origen del overlay -->\r\n <div\r\n class=\"container-textfield\"\r\n [ngClass]=\"{\r\n disabled: disabled,\r\n focused: calendarOpen || focused,\r\n alert: !calendarOpen && (error || isAlertText) && !disabled,\r\n selected: selectedDate\r\n }\"\r\n (click)=\"toggleCalendar()\"\r\n cdkOverlayOrigin #origin=\"cdkOverlayOrigin\"\r\n >\r\n <div class=\"input\">\r\n <input\r\n [placeholder]=\"placeholder\"\r\n [value]=\"selectedDate ? getDisplayValue() : ''\"\r\n readonly\r\n [disabled]=\"disabled\"\r\n />\r\n <div class=\"cnt-icon-right\">\r\n <ius-icon-md iconName=\"icon-calendar-today\"></ius-icon-md>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- ======== OVERLAY (CDK) ======== -->\r\n <ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayOpen]=\"calendarOpen\"\r\n [cdkConnectedOverlayOrigin]=\"origin\"\r\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\r\n [cdkConnectedOverlayHasBackdrop]=\"false\"\r\n [cdkConnectedOverlayPush]=\"true\"\r\n [cdkConnectedOverlayFlexibleDimensions]=\"false\"\r\n [cdkConnectedOverlayPanelClass]=\"'calendar-overlay-panel'\"\r\n >\r\n <div\r\n class=\"calendar-overlay\"\r\n [class.time-only]=\"mode === 'time-only'\"\r\n [class.date-only]=\"mode === 'date-only'\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n <div class=\"calendar-content\">\r\n @if (mode !== 'time-only') {\r\n <div class=\"calendar-side\">\r\n <div class=\"calendar-header\">\r\n <ius-button-standard-tertiary\r\n iconName=\"icon-keyboard-arrow-left\"\r\n (buttonClicked)=\"prev()\"\r\n ></ius-button-standard-tertiary>\r\n\r\n <span (click)=\"calendarView = nextView(calendarView)\">\r\n @switch (calendarView) { @case ('day') {\r\n {{ getMonthName(viewDate.getMonth()) }}\r\n {{ viewDate.getFullYear() }}\r\n } @case ('month') {\r\n {{ viewDate.getFullYear() }}\r\n } @case ('year') {\r\n {{ getDecadeStart() }}-{{ getDecadeStart() + 9 }}\r\n } }\r\n </span>\r\n\r\n <ius-button-standard-tertiary\r\n iconName=\"icon-keyboard-arrow-right\"\r\n (buttonClicked)=\"next()\"\r\n ></ius-button-standard-tertiary>\r\n </div>\r\n\r\n <div class=\"calendar-body\">\r\n @switch (calendarView) { @case ('day') {\r\n <div class=\"grid days\">\r\n @for (day of dayLabels; track day) {\r\n <div class=\"header\">{{ day }}</div>\r\n } @for (date of calendarDays; track date) {\r\n <div\r\n class=\"cell\"\r\n [class.selected]=\"\r\n selectedDate && isSameDate(date, selectedDate)\r\n \"\r\n [class.out-of-range]=\"date.getMonth() !== viewDate.getMonth()\"\r\n (click)=\"selectDate(date, true)\"\r\n >\r\n {{ date.getDate() }}\r\n </div>\r\n }\r\n </div>\r\n } @case ('month') {\r\n <div class=\"grid months\">\r\n @for (m of months; track m; let i = $index) {\r\n <div class=\"cell\" (click)=\"setMonth(i)\">{{ m }}</div>\r\n }\r\n </div>\r\n } @case ('year') {\r\n <div class=\"grid years\">\r\n @for (i of yearsArray; track i) {\r\n <div\r\n class=\"cell\"\r\n [class.out-of-range]=\"i === 0 || i === 11\"\r\n (click)=\"setYear(getDecadeStart() - 1 + i)\"\r\n >\r\n {{ getDecadeStart() - 1 + i }}\r\n </div>\r\n }\r\n </div>\r\n } }\r\n </div>\r\n </div>\r\n } @if (mode !== 'date-only') {\r\n <div class=\"time-selector\">\r\n <button class=\"time-title\">\r\n <span>\r\n {{ selectedHour | number : \"2.0\" }}:{{\r\n selectedMinute === 0 ? \"00\" : (selectedMinute | number : \"2.0\")\r\n }}\r\n {{ selectedPeriod }}\r\n </span>\r\n </button>\r\n <ius-simple-divider></ius-simple-divider>\r\n <div class=\"time-columns\">\r\n <div class=\"column scrollable\">\r\n @for (h of hours; track h) {\r\n <div\r\n [class.selected]=\"h === selectedHour\"\r\n (click)=\"\r\n selectedHour = h;\r\n mode === 'time-only'\r\n ? selectTime()\r\n : selectDate(viewDate, true)\r\n \"\r\n >\r\n {{ h | number : \"2.0\" }}\r\n </div>\r\n }\r\n </div>\r\n <div class=\"divider\"></div>\r\n <div class=\"column scrollable\">\r\n @for (m of minutes; track m) {\r\n <div\r\n [class.selected]=\"m === selectedMinute\"\r\n (click)=\"\r\n selectedMinute = m;\r\n mode === 'time-only'\r\n ? selectTime()\r\n : selectDate(viewDate, true)\r\n \"\r\n >\r\n {{ m | number : \"2.0\" }}\r\n </div>\r\n }\r\n </div>\r\n <div class=\"divider\"></div>\r\n <div class=\"column\">\r\n <div\r\n [class.selected]=\"'AM' === selectedPeriod\"\r\n (click)=\"\r\n selectedPeriod = 'AM';\r\n mode === 'time-only'\r\n ? selectTime()\r\n : selectDate(viewDate, false)\r\n \"\r\n >\r\n AM\r\n </div>\r\n <div\r\n [class.selected]=\"'PM' === selectedPeriod\"\r\n (click)=\"\r\n selectedPeriod = 'PM';\r\n mode === 'time-only'\r\n ? selectTime()\r\n : selectDate(viewDate, false)\r\n \"\r\n >\r\n PM\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n <ius-simple-divider></ius-simple-divider>\r\n <button class=\"today\" (click)=\"goToToday()\">\r\n @if (mode === 'date-only') { Fecha actual } @else if (mode ===\r\n 'time-only') { Hora actual } @else { Fecha y hora actual }\r\n </button>\r\n </div>\r\n </ng-template>\r\n <!-- ======== /OVERLAY (CDK) ======== -->\r\n </div>\r\n @if (helpText && focused && !error && !isAlertText) {\r\n <div class=\"help-text\">\r\n {{ helpText }}\r\n </div>\r\n } @if ((errorText || helpTextError) && (error || isAlertText)) {\r\n <div class=\"help-text-error\">\r\n {{ errorText ?? helpTextError }}\r\n </div>\r\n }\r\n</div>\r\n", styles: [".h1{font-family:Roboto,sans-serif;font-size:2.375rem;font-weight:500;line-height:46px}.h2{font-family:Roboto,sans-serif;font-size:1.875rem;font-weight:700;line-height:38px}.h3{font-family:Roboto,sans-serif;font-size:1.5rem;font-weight:500;line-height:32px}.h4{font-family:Roboto,sans-serif;font-size:1.25rem;font-weight:700;line-height:26px}.h5{font-family:Roboto,sans-serif;font-size:1.125rem;font-weight:500;line-height:24px;letter-spacing:.18px}.label-large{font-family:Roboto,sans-serif;font-size:1rem;font-weight:500;line-height:22px}.body-large{font-family:Rubik,sans-serif;font-size:1rem;font-weight:400;line-height:22px}.label-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;line-height:20px;letter-spacing:.28px}.body-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;font-style:italic;letter-spacing:.28px}.body-base-1,.body-base-1-1{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;letter-spacing:.28px}.body-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;letter-spacing:.28px}.body-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;font-style:italic;letter-spacing:.28px}.caption-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;letter-spacing:.28px}.caption-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;font-style:italic;letter-spacing:.28px}.required{width:4px;height:4px;margin-right:4px;aspect-ratio:1/1;border-radius:50%;background-color:#ff4e3a}.text{display:flex;align-items:center}.cdk-overlay-pane.calendar-overlay-panel{z-index:9000;position:absolute!important}.input-wrapper{position:relative;display:inline-block;width:100%}.date-picker{width:100%;position:relative;display:flex;flex-direction:column}.date-picker.disabled{opacity:.6;pointer-events:none}.date-picker .label{margin:0 4px;color:#333;font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;font-style:normal;line-height:20px;letter-spacing:.28px}.date-picker .help-icon{color:#595959}.container-textfield{display:flex;position:relative;align-items:flex-start;gap:4px}.container-textfield .input{width:100%;display:flex;align-items:flex-start;justify-content:center;gap:4px;padding:12px;border-radius:8px;background:#f5f5f5;cursor:pointer;border:none}.container-textfield .input input{flex:1;outline:none;border:none;background:#f5f5f5;color:#8c8c8c;font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;font-style:normal;line-height:20px;letter-spacing:.28px;cursor:pointer}.container-textfield .cnt-icon-right{display:flex;align-items:center;justify-content:center;color:#333}.container-textfield:hover .input,.container-textfield:hover .input input{background-color:#edf6ff}.container-textfield:hover .input .cnt-icon-right{color:#061b7a}.container-textfield.focused .input{border:1px solid #0581BC;background:#edf6ff}.container-textfield.focused .input input{background-color:#edf6ff;border:none}.container-textfield.focused .input .cnt-icon-right{color:#061b7a}.container-textfield.alert .input{border-radius:8px;border:1px solid #DB2E2A;background:#fff4f0}.container-textfield.alert .input input{background:#fff4f0}.container-textfield.alert .input .cnt-icon-right{color:#db2e2a}.container-textfield.selected .input{background:#f5f5f5}.container-textfield.selected .input input{background:#f5f5f5;border:none;color:#333;font-family:Rubik,sans-serif;font-size:.875rem;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.28px}.container-textfield.selected .input .help-icon{color:#595959}.container-textfield.disabled{background:#f5f5f5}.container-textfield.disabled input::placeholder{color:#bfbfbf;opacity:1}.container-textfield.disabled .cnt-icon-right{color:#bfbfbf}.calendar-overlay{display:inline-block;border-radius:8px;border:1px solid #f5f5f5;background:#fff;box-shadow:0 2px 6px #00000024,0 1px 10px #0000001a}.calendar-overlay.time-only{min-width:200px;width:auto}.calendar-overlay.time-only .calendar-content{flex-direction:column;align-items:center;padding:12px}.calendar-overlay.time-only .time-selector{border-left:none;border-top:1px solid #f0f0f0;padding:12px;min-width:180px;width:100%}.calendar-overlay.time-only .time-selector .time-columns{justify-content:center;gap:8px}.calendar-overlay.time-only .time-selector .column{height:150px}.calendar-overlay.date-only{min-width:280px;width:auto}.calendar-overlay.date-only .calendar-content{flex-direction:column;align-items:center}.calendar-overlay.date-only .calendar-side{min-width:260px;width:100%}.calendar-content{display:flex;flex-direction:row;width:auto;max-width:none;max-height:60vh;overflow:hidden}.calendar-side{padding:12px;flex:1;min-width:260px}.calendar-header{display:flex;align-items:center;align-self:stretch}.calendar-header span{flex:1;display:flex;justify-content:center;align-items:center;color:#333;cursor:pointer;font-family:Roboto;font-size:1rem;font-weight:500;font-style:normal;line-height:22px}.calendar-body{display:flex;flex-direction:column;gap:8px;margin:0 10px}.grid{display:grid;gap:8px}.grid.days{grid-template-columns:repeat(7,1fr)}.grid.months,.grid.years{margin-left:27px;grid-template-columns:repeat(3,1fr)}.grid .header{display:flex;align-items:center;height:30px;padding:2px 4px;gap:16px;color:#333;font-family:Rubik;font-size:.75rem;font-weight:500;font-style:normal;line-height:16px;letter-spacing:.24px}.grid .cell{display:flex;width:24px;height:24px;min-width:24px;min-height:24px;flex-direction:column;justify-content:center;align-items:center;aspect-ratio:1/1;background:#fff;font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;font-style:normal;line-height:20px;letter-spacing:.28px;cursor:pointer}.grid .cell:hover{background:#edf6ff}.grid .cell.out-of-range{color:#bfbfbf}.grid .cell.selected{border-radius:100px;border:1px solid #184FDB;background:#2167ff;color:#fff}.today{margin-top:8px;width:100%;padding:8px;border:none;background:transparent;display:flex;justify-content:center;align-items:center;gap:4px;color:#333;cursor:pointer;font-family:Roboto;font-size:1rem;font-weight:500;font-style:normal;line-height:22px}.today:hover{background-color:#edf6ff;border-radius:4px}.calendar-overlay .calendar-content{overflow-x:hidden}.time-selector{border-left:1px solid #f0f0f0;padding:12px 8px;display:flex;flex-direction:column;gap:8px;min-width:150px}.time-selector .time-columns{display:flex;gap:4px;justify-content:center}.time-selector .time-title{display:flex;padding:8px;justify-content:center;align-items:center;gap:4px;align-self:stretch;border-radius:4px;border:none;background-color:#fff}.time-selector .time-title span{color:#333;font-family:Roboto,sans-serif;font-size:1rem;font-style:normal;font-weight:500;line-height:22px}.time-selector .divider{background-color:#b6b4b430;height:100%;width:1px}.time-selector .column{overflow-y:auto;display:flex;height:218px;flex-direction:column;align-items:flex-start;margin:0 2px}.time-selector .column .list{display:flex;padding:4px 8px;justify-content:flex-end;align-items:flex-start;gap:8px;align-self:stretch}.time-selector .column::-webkit-scrollbar{width:4px}.time-selector .column::-webkit-scrollbar-thumb{background-color:#fff;border-radius:4px}.time-selector .column div{display:flex;height:28px;padding:4px 8px;justify-content:flex-end;align-items:flex-start;gap:8px;flex-shrink:0;align-self:stretch;background:#fff;color:#595959;font-family:Rubik,sans-serif;font-size:.875rem;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.28px}.time-selector .column div:hover{cursor:pointer}.time-selector .column div.selected{display:flex;padding:4px 8px;justify-content:flex-end;align-items:center;gap:8px;align-self:stretch;border-radius:8px;background:#2167ff;color:#fff}.time-selector .today{margin-top:8px;padding:8px;text-align:center;font-weight:500;color:#333}.help-text{display:flex;align-items:center;gap:10px;color:#595959;font-family:Rubik,sans-serif;font-size:.75rem;font-style:italic;font-weight:500;line-height:16px;letter-spacing:.24px}.help-text-error{display:flex;align-items:center;gap:10px;color:#931224;font-family:Rubik,sans-serif;font-size:.75rem;font-style:italic;font-weight:500;line-height:16px;letter-spacing:.24px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i2.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i2.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: // ✅ CDK Overlay
244
247
  IconMdComponent, selector: "ius-icon-md", inputs: ["iconName", "color"] }, { kind: "component", type: SimpleDividerComponent, selector: "ius-simple-divider" }, { kind: "component", type: ButtonStandardTertiaryComponent, selector: "ius-button-standard-tertiary", inputs: ["disabled", "iconName"], outputs: ["buttonClicked"] }] }); }
245
248
  }
246
249
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DateHourPickerComponent, decorators: [{
@@ -251,7 +254,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
251
254
  IconMdComponent,
252
255
  SimpleDividerComponent,
253
256
  ButtonStandardTertiaryComponent,
254
- ], template: "<div class=\"date-picker\" [class.disabled]=\"disabled\">\r\n <div class=\"text\">\r\n @if (isRequired) {\r\n <div class=\"required\"></div>\r\n }\r\n\r\n <label class=\"label\">{{ label }}</label>\r\n\r\n @if (iconHelp) {\r\n <div class=\"help-icon\">\r\n <ius-icon-md iconName=\"icon-help\"></ius-icon-md>\r\n </div>\r\n }\r\n\r\n <label class=\"label\">:</label>\r\n </div>\r\n\r\n <div class=\"input-wrapper\">\r\n <!-- Origen del overlay -->\r\n <div\r\n class=\"container-textfield\"\r\n [ngClass]=\"{\r\n disabled: disabled,\r\n focused: calendarOpen || focused,\r\n alert: !calendarOpen && error && !disabled,\r\n selected: selectedDate\r\n }\"\r\n (click)=\"toggleCalendar()\"\r\n cdkOverlayOrigin #origin=\"cdkOverlayOrigin\"\r\n >\r\n <div class=\"input\">\r\n <input\r\n [placeholder]=\"placeholder\"\r\n [value]=\"selectedDate ? getDisplayValue() : ''\"\r\n readonly\r\n [disabled]=\"disabled\"\r\n />\r\n <div class=\"cnt-icon-right\">\r\n <ius-icon-md iconName=\"icon-calendar-today\"></ius-icon-md>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- ======== OVERLAY (CDK) ======== -->\r\n <ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayOpen]=\"calendarOpen\"\r\n [cdkConnectedOverlayOrigin]=\"origin\"\r\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\r\n [cdkConnectedOverlayHasBackdrop]=\"false\"\r\n [cdkConnectedOverlayPush]=\"true\"\r\n [cdkConnectedOverlayFlexibleDimensions]=\"false\"\r\n [cdkConnectedOverlayPanelClass]=\"'calendar-overlay-panel'\"\r\n >\r\n <div\r\n class=\"calendar-overlay\"\r\n [class.time-only]=\"mode === 'time-only'\"\r\n [class.date-only]=\"mode === 'date-only'\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n <div class=\"calendar-content\">\r\n @if (mode !== 'time-only') {\r\n <div class=\"calendar-side\">\r\n <div class=\"calendar-header\">\r\n <ius-button-standard-tertiary\r\n iconName=\"icon-keyboard-arrow-left\"\r\n (buttonClicked)=\"prev()\"\r\n ></ius-button-standard-tertiary>\r\n\r\n <span (click)=\"calendarView = nextView(calendarView)\">\r\n @switch (calendarView) { @case ('day') {\r\n {{ getMonthName(viewDate.getMonth()) }}\r\n {{ viewDate.getFullYear() }}\r\n } @case ('month') {\r\n {{ viewDate.getFullYear() }}\r\n } @case ('year') {\r\n {{ getDecadeStart() }}-{{ getDecadeStart() + 9 }}\r\n } }\r\n </span>\r\n\r\n <ius-button-standard-tertiary\r\n iconName=\"icon-keyboard-arrow-right\"\r\n (buttonClicked)=\"next()\"\r\n ></ius-button-standard-tertiary>\r\n </div>\r\n\r\n <div class=\"calendar-body\">\r\n @switch (calendarView) { @case ('day') {\r\n <div class=\"grid days\">\r\n @for (day of dayLabels; track day) {\r\n <div class=\"header\">{{ day }}</div>\r\n } @for (date of calendarDays; track date) {\r\n <div\r\n class=\"cell\"\r\n [class.selected]=\"\r\n selectedDate && isSameDate(date, selectedDate)\r\n \"\r\n [class.out-of-range]=\"date.getMonth() !== viewDate.getMonth()\"\r\n (click)=\"selectDate(date, true)\"\r\n >\r\n {{ date.getDate() }}\r\n </div>\r\n }\r\n </div>\r\n } @case ('month') {\r\n <div class=\"grid months\">\r\n @for (m of months; track m; let i = $index) {\r\n <div class=\"cell\" (click)=\"setMonth(i)\">{{ m }}</div>\r\n }\r\n </div>\r\n } @case ('year') {\r\n <div class=\"grid years\">\r\n @for (i of yearsArray; track i) {\r\n <div\r\n class=\"cell\"\r\n [class.out-of-range]=\"i === 0 || i === 11\"\r\n (click)=\"setYear(getDecadeStart() - 1 + i)\"\r\n >\r\n {{ getDecadeStart() - 1 + i }}\r\n </div>\r\n }\r\n </div>\r\n } }\r\n </div>\r\n </div>\r\n } @if (mode !== 'date-only') {\r\n <div class=\"time-selector\">\r\n <button class=\"time-title\">\r\n <span>\r\n {{ selectedHour | number : \"2.0\" }}:{{\r\n selectedMinute === 0 ? \"00\" : (selectedMinute | number : \"2.0\")\r\n }}\r\n {{ selectedPeriod }}\r\n </span>\r\n </button>\r\n <ius-simple-divider></ius-simple-divider>\r\n <div class=\"time-columns\">\r\n <div class=\"column scrollable\">\r\n @for (h of hours; track h) {\r\n <div\r\n [class.selected]=\"h === selectedHour\"\r\n (click)=\"\r\n selectedHour = h;\r\n mode === 'time-only'\r\n ? selectTime()\r\n : selectDate(viewDate, true)\r\n \"\r\n >\r\n {{ h | number : \"2.0\" }}\r\n </div>\r\n }\r\n </div>\r\n <div class=\"divider\"></div>\r\n <div class=\"column scrollable\">\r\n @for (m of minutes; track m) {\r\n <div\r\n [class.selected]=\"m === selectedMinute\"\r\n (click)=\"\r\n selectedMinute = m;\r\n mode === 'time-only'\r\n ? selectTime()\r\n : selectDate(viewDate, true)\r\n \"\r\n >\r\n {{ m | number : \"2.0\" }}\r\n </div>\r\n }\r\n </div>\r\n <div class=\"divider\"></div>\r\n <div class=\"column\">\r\n <div\r\n [class.selected]=\"'AM' === selectedPeriod\"\r\n (click)=\"\r\n selectedPeriod = 'AM';\r\n mode === 'time-only'\r\n ? selectTime()\r\n : selectDate(viewDate, false)\r\n \"\r\n >\r\n AM\r\n </div>\r\n <div\r\n [class.selected]=\"'PM' === selectedPeriod\"\r\n (click)=\"\r\n selectedPeriod = 'PM';\r\n mode === 'time-only'\r\n ? selectTime()\r\n : selectDate(viewDate, false)\r\n \"\r\n >\r\n PM\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n <ius-simple-divider></ius-simple-divider>\r\n <button class=\"today\" (click)=\"goToToday()\">\r\n @if (mode === 'date-only') { Fecha actual } @else if (mode ===\r\n 'time-only') { Hora actual } @else { Fecha y hora actual }\r\n </button>\r\n </div>\r\n </ng-template>\r\n <!-- ======== /OVERLAY (CDK) ======== -->\r\n </div>\r\n @if (helpText && focused && !error) {\r\n <div class=\"help-text\">\r\n {{ helpText }}\r\n </div>\r\n } @if (helpTextError && error) {\r\n <div class=\"help-text-error\">\r\n {{ helpTextError }}\r\n </div>\r\n }\r\n</div>\r\n", styles: [".h1{font-family:Roboto,sans-serif;font-size:2.375rem;font-weight:500;line-height:46px}.h2{font-family:Roboto,sans-serif;font-size:1.875rem;font-weight:700;line-height:38px}.h3{font-family:Roboto,sans-serif;font-size:1.5rem;font-weight:500;line-height:32px}.h4{font-family:Roboto,sans-serif;font-size:1.25rem;font-weight:700;line-height:26px}.h5{font-family:Roboto,sans-serif;font-size:1.125rem;font-weight:500;line-height:24px;letter-spacing:.18px}.label-large{font-family:Roboto,sans-serif;font-size:1rem;font-weight:500;line-height:22px}.body-large{font-family:Rubik,sans-serif;font-size:1rem;font-weight:400;line-height:22px}.label-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;line-height:20px;letter-spacing:.28px}.body-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;font-style:italic;letter-spacing:.28px}.body-base-1,.body-base-1-1{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;letter-spacing:.28px}.body-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;letter-spacing:.28px}.body-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;font-style:italic;letter-spacing:.28px}.caption-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;letter-spacing:.28px}.caption-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;font-style:italic;letter-spacing:.28px}.required{width:4px;height:4px;margin-right:4px;aspect-ratio:1/1;border-radius:50%;background-color:#ff4e3a}.text{display:flex;align-items:center}.cdk-overlay-pane.calendar-overlay-panel{z-index:9000;position:absolute!important}.input-wrapper{position:relative;display:inline-block;width:100%}.date-picker{width:100%;position:relative;display:flex;flex-direction:column}.date-picker.disabled{opacity:.6;pointer-events:none}.date-picker .label{margin:0 4px;color:#333;font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;font-style:normal;line-height:20px;letter-spacing:.28px}.date-picker .help-icon{color:#595959}.container-textfield{display:flex;position:relative;align-items:flex-start;gap:4px}.container-textfield .input{width:100%;display:flex;align-items:flex-start;justify-content:center;gap:4px;padding:12px;border-radius:8px;background:#f5f5f5;cursor:pointer;border:none}.container-textfield .input input{flex:1;outline:none;border:none;background:#f5f5f5;color:#8c8c8c;font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;font-style:normal;line-height:20px;letter-spacing:.28px;cursor:pointer}.container-textfield .cnt-icon-right{display:flex;align-items:center;justify-content:center;color:#333}.container-textfield:hover .input,.container-textfield:hover .input input{background-color:#edf6ff}.container-textfield:hover .input .cnt-icon-right{color:#061b7a}.container-textfield.focused .input{border:1px solid #0581BC;background:#edf6ff}.container-textfield.focused .input input{background-color:#edf6ff;border:none}.container-textfield.focused .input .cnt-icon-right{color:#061b7a}.container-textfield.alert .input{border-radius:8px;border:1px solid #DB2E2A;background:#fff4f0}.container-textfield.alert .input input{background:#fff4f0}.container-textfield.alert .input .cnt-icon-right{color:#db2e2a}.container-textfield.selected .input{background:#f5f5f5}.container-textfield.selected .input input{background:#f5f5f5;border:none;color:#333;font-family:Rubik,sans-serif;font-size:.875rem;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.28px}.container-textfield.selected .input .help-icon{color:#595959}.container-textfield.disabled{background:#f5f5f5}.container-textfield.disabled input::placeholder{color:#bfbfbf;opacity:1}.container-textfield.disabled .cnt-icon-right{color:#bfbfbf}.calendar-overlay{display:inline-block;border-radius:8px;border:1px solid #f5f5f5;background:#fff;box-shadow:0 2px 6px #00000024,0 1px 10px #0000001a}.calendar-overlay.time-only{min-width:200px;width:auto}.calendar-overlay.time-only .calendar-content{flex-direction:column;align-items:center;padding:12px}.calendar-overlay.time-only .time-selector{border-left:none;border-top:1px solid #f0f0f0;padding:12px;min-width:180px;width:100%}.calendar-overlay.time-only .time-selector .time-columns{justify-content:center;gap:8px}.calendar-overlay.time-only .time-selector .column{height:150px}.calendar-overlay.date-only{min-width:280px;width:auto}.calendar-overlay.date-only .calendar-content{flex-direction:column;align-items:center}.calendar-overlay.date-only .calendar-side{min-width:260px;width:100%}.calendar-content{display:flex;flex-direction:row;width:auto;max-width:none;max-height:60vh;overflow:hidden}.calendar-side{padding:12px;flex:1;min-width:260px}.calendar-header{display:flex;align-items:center;align-self:stretch}.calendar-header span{flex:1;display:flex;justify-content:center;align-items:center;color:#333;cursor:pointer;font-family:Roboto;font-size:1rem;font-weight:500;font-style:normal;line-height:22px}.calendar-body{display:flex;flex-direction:column;gap:8px;margin:0 10px}.grid{display:grid;gap:8px}.grid.days{grid-template-columns:repeat(7,1fr)}.grid.months,.grid.years{margin-left:27px;grid-template-columns:repeat(3,1fr)}.grid .header{display:flex;align-items:center;height:30px;padding:2px 4px;gap:16px;color:#333;font-family:Rubik;font-size:.75rem;font-weight:500;font-style:normal;line-height:16px;letter-spacing:.24px}.grid .cell{display:flex;width:24px;height:24px;min-width:24px;min-height:24px;flex-direction:column;justify-content:center;align-items:center;aspect-ratio:1/1;background:#fff;font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;font-style:normal;line-height:20px;letter-spacing:.28px;cursor:pointer}.grid .cell:hover{background:#edf6ff}.grid .cell.out-of-range{color:#bfbfbf}.grid .cell.selected{border-radius:100px;border:1px solid #184FDB;background:#2167ff;color:#fff}.today{margin-top:8px;width:100%;padding:8px;border:none;background:transparent;display:flex;justify-content:center;align-items:center;gap:4px;color:#333;cursor:pointer;font-family:Roboto;font-size:1rem;font-weight:500;font-style:normal;line-height:22px}.today:hover{background-color:#edf6ff;border-radius:4px}.calendar-overlay .calendar-content{overflow-x:hidden}.time-selector{border-left:1px solid #f0f0f0;padding:12px 8px;display:flex;flex-direction:column;gap:8px;min-width:150px}.time-selector .time-columns{display:flex;gap:4px;justify-content:center}.time-selector .time-title{display:flex;padding:8px;justify-content:center;align-items:center;gap:4px;align-self:stretch;border-radius:4px;border:none;background-color:#fff}.time-selector .time-title span{color:#333;font-family:Roboto,sans-serif;font-size:1rem;font-style:normal;font-weight:500;line-height:22px}.time-selector .divider{background-color:#b6b4b430;height:100%;width:1px}.time-selector .column{overflow-y:auto;display:flex;height:218px;flex-direction:column;align-items:flex-start;margin:0 2px}.time-selector .column .list{display:flex;padding:4px 8px;justify-content:flex-end;align-items:flex-start;gap:8px;align-self:stretch}.time-selector .column::-webkit-scrollbar{width:4px}.time-selector .column::-webkit-scrollbar-thumb{background-color:#fff;border-radius:4px}.time-selector .column div{display:flex;height:28px;padding:4px 8px;justify-content:flex-end;align-items:flex-start;gap:8px;flex-shrink:0;align-self:stretch;background:#fff;color:#595959;font-family:Rubik,sans-serif;font-size:.875rem;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.28px}.time-selector .column div:hover{cursor:pointer}.time-selector .column div.selected{display:flex;padding:4px 8px;justify-content:flex-end;align-items:center;gap:8px;align-self:stretch;border-radius:8px;background:#2167ff;color:#fff}.time-selector .today{margin-top:8px;padding:8px;text-align:center;font-weight:500;color:#333}.help-text{display:flex;align-items:center;gap:10px;color:#595959;font-family:Rubik,sans-serif;font-size:.75rem;font-style:italic;font-weight:500;line-height:16px;letter-spacing:.24px}.help-text-error{display:flex;align-items:center;gap:10px;color:#931224;font-family:Rubik,sans-serif;font-size:.75rem;font-style:italic;font-weight:500;line-height:16px;letter-spacing:.24px}\n"] }]
257
+ ], template: "<div class=\"date-picker\" [class.disabled]=\"disabled\">\r\n <div class=\"text\">\r\n @if (isRequired) {\r\n <div class=\"required\"></div>\r\n }\r\n\r\n <label class=\"label\">{{ label }}</label>\r\n\r\n @if (iconHelp) {\r\n <div class=\"help-icon\">\r\n <ius-icon-md iconName=\"icon-help\"></ius-icon-md>\r\n </div>\r\n }\r\n\r\n <label class=\"label\">:</label>\r\n </div>\r\n\r\n <div class=\"input-wrapper\">\r\n <!-- Origen del overlay -->\r\n <div\r\n class=\"container-textfield\"\r\n [ngClass]=\"{\r\n disabled: disabled,\r\n focused: calendarOpen || focused,\r\n alert: !calendarOpen && (error || isAlertText) && !disabled,\r\n selected: selectedDate\r\n }\"\r\n (click)=\"toggleCalendar()\"\r\n cdkOverlayOrigin #origin=\"cdkOverlayOrigin\"\r\n >\r\n <div class=\"input\">\r\n <input\r\n [placeholder]=\"placeholder\"\r\n [value]=\"selectedDate ? getDisplayValue() : ''\"\r\n readonly\r\n [disabled]=\"disabled\"\r\n />\r\n <div class=\"cnt-icon-right\">\r\n <ius-icon-md iconName=\"icon-calendar-today\"></ius-icon-md>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- ======== OVERLAY (CDK) ======== -->\r\n <ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayOpen]=\"calendarOpen\"\r\n [cdkConnectedOverlayOrigin]=\"origin\"\r\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\r\n [cdkConnectedOverlayHasBackdrop]=\"false\"\r\n [cdkConnectedOverlayPush]=\"true\"\r\n [cdkConnectedOverlayFlexibleDimensions]=\"false\"\r\n [cdkConnectedOverlayPanelClass]=\"'calendar-overlay-panel'\"\r\n >\r\n <div\r\n class=\"calendar-overlay\"\r\n [class.time-only]=\"mode === 'time-only'\"\r\n [class.date-only]=\"mode === 'date-only'\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n <div class=\"calendar-content\">\r\n @if (mode !== 'time-only') {\r\n <div class=\"calendar-side\">\r\n <div class=\"calendar-header\">\r\n <ius-button-standard-tertiary\r\n iconName=\"icon-keyboard-arrow-left\"\r\n (buttonClicked)=\"prev()\"\r\n ></ius-button-standard-tertiary>\r\n\r\n <span (click)=\"calendarView = nextView(calendarView)\">\r\n @switch (calendarView) { @case ('day') {\r\n {{ getMonthName(viewDate.getMonth()) }}\r\n {{ viewDate.getFullYear() }}\r\n } @case ('month') {\r\n {{ viewDate.getFullYear() }}\r\n } @case ('year') {\r\n {{ getDecadeStart() }}-{{ getDecadeStart() + 9 }}\r\n } }\r\n </span>\r\n\r\n <ius-button-standard-tertiary\r\n iconName=\"icon-keyboard-arrow-right\"\r\n (buttonClicked)=\"next()\"\r\n ></ius-button-standard-tertiary>\r\n </div>\r\n\r\n <div class=\"calendar-body\">\r\n @switch (calendarView) { @case ('day') {\r\n <div class=\"grid days\">\r\n @for (day of dayLabels; track day) {\r\n <div class=\"header\">{{ day }}</div>\r\n } @for (date of calendarDays; track date) {\r\n <div\r\n class=\"cell\"\r\n [class.selected]=\"\r\n selectedDate && isSameDate(date, selectedDate)\r\n \"\r\n [class.out-of-range]=\"date.getMonth() !== viewDate.getMonth()\"\r\n (click)=\"selectDate(date, true)\"\r\n >\r\n {{ date.getDate() }}\r\n </div>\r\n }\r\n </div>\r\n } @case ('month') {\r\n <div class=\"grid months\">\r\n @for (m of months; track m; let i = $index) {\r\n <div class=\"cell\" (click)=\"setMonth(i)\">{{ m }}</div>\r\n }\r\n </div>\r\n } @case ('year') {\r\n <div class=\"grid years\">\r\n @for (i of yearsArray; track i) {\r\n <div\r\n class=\"cell\"\r\n [class.out-of-range]=\"i === 0 || i === 11\"\r\n (click)=\"setYear(getDecadeStart() - 1 + i)\"\r\n >\r\n {{ getDecadeStart() - 1 + i }}\r\n </div>\r\n }\r\n </div>\r\n } }\r\n </div>\r\n </div>\r\n } @if (mode !== 'date-only') {\r\n <div class=\"time-selector\">\r\n <button class=\"time-title\">\r\n <span>\r\n {{ selectedHour | number : \"2.0\" }}:{{\r\n selectedMinute === 0 ? \"00\" : (selectedMinute | number : \"2.0\")\r\n }}\r\n {{ selectedPeriod }}\r\n </span>\r\n </button>\r\n <ius-simple-divider></ius-simple-divider>\r\n <div class=\"time-columns\">\r\n <div class=\"column scrollable\">\r\n @for (h of hours; track h) {\r\n <div\r\n [class.selected]=\"h === selectedHour\"\r\n (click)=\"\r\n selectedHour = h;\r\n mode === 'time-only'\r\n ? selectTime()\r\n : selectDate(viewDate, true)\r\n \"\r\n >\r\n {{ h | number : \"2.0\" }}\r\n </div>\r\n }\r\n </div>\r\n <div class=\"divider\"></div>\r\n <div class=\"column scrollable\">\r\n @for (m of minutes; track m) {\r\n <div\r\n [class.selected]=\"m === selectedMinute\"\r\n (click)=\"\r\n selectedMinute = m;\r\n mode === 'time-only'\r\n ? selectTime()\r\n : selectDate(viewDate, true)\r\n \"\r\n >\r\n {{ m | number : \"2.0\" }}\r\n </div>\r\n }\r\n </div>\r\n <div class=\"divider\"></div>\r\n <div class=\"column\">\r\n <div\r\n [class.selected]=\"'AM' === selectedPeriod\"\r\n (click)=\"\r\n selectedPeriod = 'AM';\r\n mode === 'time-only'\r\n ? selectTime()\r\n : selectDate(viewDate, false)\r\n \"\r\n >\r\n AM\r\n </div>\r\n <div\r\n [class.selected]=\"'PM' === selectedPeriod\"\r\n (click)=\"\r\n selectedPeriod = 'PM';\r\n mode === 'time-only'\r\n ? selectTime()\r\n : selectDate(viewDate, false)\r\n \"\r\n >\r\n PM\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n <ius-simple-divider></ius-simple-divider>\r\n <button class=\"today\" (click)=\"goToToday()\">\r\n @if (mode === 'date-only') { Fecha actual } @else if (mode ===\r\n 'time-only') { Hora actual } @else { Fecha y hora actual }\r\n </button>\r\n </div>\r\n </ng-template>\r\n <!-- ======== /OVERLAY (CDK) ======== -->\r\n </div>\r\n @if (helpText && focused && !error && !isAlertText) {\r\n <div class=\"help-text\">\r\n {{ helpText }}\r\n </div>\r\n } @if ((errorText || helpTextError) && (error || isAlertText)) {\r\n <div class=\"help-text-error\">\r\n {{ errorText ?? helpTextError }}\r\n </div>\r\n }\r\n</div>\r\n", styles: [".h1{font-family:Roboto,sans-serif;font-size:2.375rem;font-weight:500;line-height:46px}.h2{font-family:Roboto,sans-serif;font-size:1.875rem;font-weight:700;line-height:38px}.h3{font-family:Roboto,sans-serif;font-size:1.5rem;font-weight:500;line-height:32px}.h4{font-family:Roboto,sans-serif;font-size:1.25rem;font-weight:700;line-height:26px}.h5{font-family:Roboto,sans-serif;font-size:1.125rem;font-weight:500;line-height:24px;letter-spacing:.18px}.label-large{font-family:Roboto,sans-serif;font-size:1rem;font-weight:500;line-height:22px}.body-large{font-family:Rubik,sans-serif;font-size:1rem;font-weight:400;line-height:22px}.label-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;line-height:20px;letter-spacing:.28px}.body-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;font-style:italic;letter-spacing:.28px}.body-base-1,.body-base-1-1{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;letter-spacing:.28px}.body-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;letter-spacing:.28px}.body-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;font-style:italic;letter-spacing:.28px}.caption-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;letter-spacing:.28px}.caption-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;font-style:italic;letter-spacing:.28px}.required{width:4px;height:4px;margin-right:4px;aspect-ratio:1/1;border-radius:50%;background-color:#ff4e3a}.text{display:flex;align-items:center}.cdk-overlay-pane.calendar-overlay-panel{z-index:9000;position:absolute!important}.input-wrapper{position:relative;display:inline-block;width:100%}.date-picker{width:100%;position:relative;display:flex;flex-direction:column}.date-picker.disabled{opacity:.6;pointer-events:none}.date-picker .label{margin:0 4px;color:#333;font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;font-style:normal;line-height:20px;letter-spacing:.28px}.date-picker .help-icon{color:#595959}.container-textfield{display:flex;position:relative;align-items:flex-start;gap:4px}.container-textfield .input{width:100%;display:flex;align-items:flex-start;justify-content:center;gap:4px;padding:12px;border-radius:8px;background:#f5f5f5;cursor:pointer;border:none}.container-textfield .input input{flex:1;outline:none;border:none;background:#f5f5f5;color:#8c8c8c;font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;font-style:normal;line-height:20px;letter-spacing:.28px;cursor:pointer}.container-textfield .cnt-icon-right{display:flex;align-items:center;justify-content:center;color:#333}.container-textfield:hover .input,.container-textfield:hover .input input{background-color:#edf6ff}.container-textfield:hover .input .cnt-icon-right{color:#061b7a}.container-textfield.focused .input{border:1px solid #0581BC;background:#edf6ff}.container-textfield.focused .input input{background-color:#edf6ff;border:none}.container-textfield.focused .input .cnt-icon-right{color:#061b7a}.container-textfield.alert .input{border-radius:8px;border:1px solid #DB2E2A;background:#fff4f0}.container-textfield.alert .input input{background:#fff4f0}.container-textfield.alert .input .cnt-icon-right{color:#db2e2a}.container-textfield.selected .input{background:#f5f5f5}.container-textfield.selected .input input{background:#f5f5f5;border:none;color:#333;font-family:Rubik,sans-serif;font-size:.875rem;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.28px}.container-textfield.selected .input .help-icon{color:#595959}.container-textfield.disabled{background:#f5f5f5}.container-textfield.disabled input::placeholder{color:#bfbfbf;opacity:1}.container-textfield.disabled .cnt-icon-right{color:#bfbfbf}.calendar-overlay{display:inline-block;border-radius:8px;border:1px solid #f5f5f5;background:#fff;box-shadow:0 2px 6px #00000024,0 1px 10px #0000001a}.calendar-overlay.time-only{min-width:200px;width:auto}.calendar-overlay.time-only .calendar-content{flex-direction:column;align-items:center;padding:12px}.calendar-overlay.time-only .time-selector{border-left:none;border-top:1px solid #f0f0f0;padding:12px;min-width:180px;width:100%}.calendar-overlay.time-only .time-selector .time-columns{justify-content:center;gap:8px}.calendar-overlay.time-only .time-selector .column{height:150px}.calendar-overlay.date-only{min-width:280px;width:auto}.calendar-overlay.date-only .calendar-content{flex-direction:column;align-items:center}.calendar-overlay.date-only .calendar-side{min-width:260px;width:100%}.calendar-content{display:flex;flex-direction:row;width:auto;max-width:none;max-height:60vh;overflow:hidden}.calendar-side{padding:12px;flex:1;min-width:260px}.calendar-header{display:flex;align-items:center;align-self:stretch}.calendar-header span{flex:1;display:flex;justify-content:center;align-items:center;color:#333;cursor:pointer;font-family:Roboto;font-size:1rem;font-weight:500;font-style:normal;line-height:22px}.calendar-body{display:flex;flex-direction:column;gap:8px;margin:0 10px}.grid{display:grid;gap:8px}.grid.days{grid-template-columns:repeat(7,1fr)}.grid.months,.grid.years{margin-left:27px;grid-template-columns:repeat(3,1fr)}.grid .header{display:flex;align-items:center;height:30px;padding:2px 4px;gap:16px;color:#333;font-family:Rubik;font-size:.75rem;font-weight:500;font-style:normal;line-height:16px;letter-spacing:.24px}.grid .cell{display:flex;width:24px;height:24px;min-width:24px;min-height:24px;flex-direction:column;justify-content:center;align-items:center;aspect-ratio:1/1;background:#fff;font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;font-style:normal;line-height:20px;letter-spacing:.28px;cursor:pointer}.grid .cell:hover{background:#edf6ff}.grid .cell.out-of-range{color:#bfbfbf}.grid .cell.selected{border-radius:100px;border:1px solid #184FDB;background:#2167ff;color:#fff}.today{margin-top:8px;width:100%;padding:8px;border:none;background:transparent;display:flex;justify-content:center;align-items:center;gap:4px;color:#333;cursor:pointer;font-family:Roboto;font-size:1rem;font-weight:500;font-style:normal;line-height:22px}.today:hover{background-color:#edf6ff;border-radius:4px}.calendar-overlay .calendar-content{overflow-x:hidden}.time-selector{border-left:1px solid #f0f0f0;padding:12px 8px;display:flex;flex-direction:column;gap:8px;min-width:150px}.time-selector .time-columns{display:flex;gap:4px;justify-content:center}.time-selector .time-title{display:flex;padding:8px;justify-content:center;align-items:center;gap:4px;align-self:stretch;border-radius:4px;border:none;background-color:#fff}.time-selector .time-title span{color:#333;font-family:Roboto,sans-serif;font-size:1rem;font-style:normal;font-weight:500;line-height:22px}.time-selector .divider{background-color:#b6b4b430;height:100%;width:1px}.time-selector .column{overflow-y:auto;display:flex;height:218px;flex-direction:column;align-items:flex-start;margin:0 2px}.time-selector .column .list{display:flex;padding:4px 8px;justify-content:flex-end;align-items:flex-start;gap:8px;align-self:stretch}.time-selector .column::-webkit-scrollbar{width:4px}.time-selector .column::-webkit-scrollbar-thumb{background-color:#fff;border-radius:4px}.time-selector .column div{display:flex;height:28px;padding:4px 8px;justify-content:flex-end;align-items:flex-start;gap:8px;flex-shrink:0;align-self:stretch;background:#fff;color:#595959;font-family:Rubik,sans-serif;font-size:.875rem;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.28px}.time-selector .column div:hover{cursor:pointer}.time-selector .column div.selected{display:flex;padding:4px 8px;justify-content:flex-end;align-items:center;gap:8px;align-self:stretch;border-radius:8px;background:#2167ff;color:#fff}.time-selector .today{margin-top:8px;padding:8px;text-align:center;font-weight:500;color:#333}.help-text{display:flex;align-items:center;gap:10px;color:#595959;font-family:Rubik,sans-serif;font-size:.75rem;font-style:italic;font-weight:500;line-height:16px;letter-spacing:.24px}.help-text-error{display:flex;align-items:center;gap:10px;color:#931224;font-family:Rubik,sans-serif;font-size:.75rem;font-style:italic;font-weight:500;line-height:16px;letter-spacing:.24px}\n"] }]
255
258
  }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { label: [{
256
259
  type: Input
257
260
  }], placeholder: [{
@@ -262,6 +265,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
262
265
  type: Input
263
266
  }], helpTextError: [{
264
267
  type: Input
268
+ }], errorText: [{
269
+ type: Input
265
270
  }], disabled: [{
266
271
  type: Input
267
272
  }], iconHelp: [{
@@ -272,8 +277,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
272
277
  type: Input
273
278
  }], dateSelected: [{
274
279
  type: Output
280
+ }], onBlurEvent: [{
281
+ type: Output
275
282
  }], handleOutsideClick: [{
276
283
  type: HostListener,
277
284
  args: ['document:click', ['$event']]
278
285
  }] } });
279
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1ob3VyLXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pdXMtZGVzaWduLWNvbXBvbmVudHMvc3JjL2xpYi9kYXRlLWhvdXItcGlja2VyL2RhdGUtaG91ci1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXVzLWRlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvZGF0ZS1ob3VyLXBpY2tlci9kYXRlLWhvdXItcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsYUFBYSxFQUE4QyxNQUFNLHNCQUFzQixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNwRixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQzs7OztBQWVqSCxNQUFNLE9BQU8sdUJBQXVCO0lBeUNsQyxZQUNVLEtBQWlCO0lBQ3pCLDJCQUEyQjs7UUFEbkIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQXpDbEIsVUFBSyxHQUFHLGNBQWMsQ0FBQztRQUN2QixnQkFBVyxHQUFHLDZCQUE2QixDQUFDO1FBQzVDLFVBQUssR0FBRyxLQUFLLENBQUM7UUFDZCxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2Qsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFDbkIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGVBQVUsR0FBRyxJQUFJ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LENBQUMsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzFKLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDckMsTUFBTSxVQUFVLEdBQUcsR0FBRyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDO1lBQ2hJLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxVQUFVLEdBQUcsR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDO1lBQ3JRLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7UUFFRCxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDOytHQXRSVSx1QkFBdUI7bUdBQXZCLHVCQUF1QixzWkNwQnBDLHl6UEF5TkEsd3FRRDlNSSxZQUFZLG9MQUNaLGFBQWEsMnJDQUFFLGdCQUFnQjtnQkFDL0IsZUFBZSx1RkFDZixzQkFBc0IsK0RBQ3RCLCtCQUErQjs7NEZBS3RCLHVCQUF1QjtrQkFibkMsU0FBUzsrQkFDRSxzQkFBc0IsY0FDcEIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osYUFBYSxFQUFFLGdCQUFnQjt3QkFDL0IsZUFBZTt3QkFDZixzQkFBc0I7d0JBQ3RCLCtCQUErQjtxQkFDaEM7K0VBS1EsS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUksWUFBWTtzQkFBckIsTUFBTTtnQkFpT1Asa0JBQWtCO3NCQURqQixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPdmVybGF5TW9kdWxlLCBDb25uZWN0ZWRQb3NpdGlvbiwgU2Nyb2xsU3RyYXRlZ3ksIE92ZXJsYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XHJcbmltcG9ydCB7IEljb25NZENvbXBvbmVudCB9IGZyb20gJy4uL2ljb24tbWQvaWNvbi1tZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTaW1wbGVEaXZpZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vc2ltcGxlLWRpdmlkZXIvc2ltcGxlLWRpdmlkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQnV0dG9uU3RhbmRhcmRUZXJ0aWFyeUNvbXBvbmVudCB9IGZyb20gJy4uL2J1dHRvbi1zdGFuZGFyZC10ZXJ0aWFyeS9idXR0b24tc3RhbmRhcmQtdGVydGlhcnkuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaXVzLWRhdGUtaG91ci1waWNrZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgT3ZlcmxheU1vZHVsZSwgLy8g4pyFIENESyBPdmVybGF5XHJcbiAgICBJY29uTWRDb21wb25lbnQsXHJcbiAgICBTaW1wbGVEaXZpZGVyQ29tcG9uZW50LFxyXG4gICAgQnV0dG9uU3RhbmRhcmRUZXJ0aWFyeUNvbXBvbmVudCxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLWhvdXItcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vZGF0ZS1ob3VyLXBpY2tlci5jb21wb25lbnQuc2NzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYXRlSG91clBpY2tlckNvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgbGFiZWwgPSAnRmVjaGEgeSBob3JhJztcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICdTZWxlY2Npb25lIHVuYSBmZWNoYSB5IGhvcmEnO1xyXG4gIEBJbnB1dCgpIGVycm9yID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaGVscFRleHQgPSAnJztcclxuICBASW5wdXQoKSBoZWxwVGV4dEVycm9yID0gJyc7XHJcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBpY29uSGVscCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIG1vZGU6ICdkYXRlLW9ubHknIHwgJ3RpbWUtb25seScgfCAnZGF0ZS10aW1lJyA9ICdkYXRlLXRpbWUnO1xyXG5cclxuICBAT3V0cHV0KCkgZGF0ZVNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIHJlYWRvbmx5IGRheUxhYmVscyA9IFsnRG8nLCAnTHUnLCAnTWEnLCAnTWknLCAnSnUnLCAnVmknLCAnU2EnXTtcclxuICByZWFkb25seSBtb250aHMgPSBbJ0VuZScsICdGZWInLCAnTWFyJywgJ0FicicsICdNYXknLCAnSnVuJywgJ0p1bCcsICdBZ28nLCAnU2VwJywgJ09jdCcsICdOb3YnLCAnRGljJ107XHJcbiAgcmVhZG9ubHkgeWVhcnNBcnJheSA9IEFycmF5LmZyb20oeyBsZW5ndGg6IDEyIH0sIChfLCBpKSA9PiBpKTtcclxuXHJcbiAgcmVhZG9ubHkgaG91cnMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiAxMiB9LCAoXywgaSkgPT4gaSArIDEpOyAvLyAwMSBhIDEyXHJcbiAgcmVhZG9ubHkgbWludXRlcyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IDYwIH0sIChfLCBpKSA9PiBpKTsgICAvLyAwMCBhIDU5XHJcblxyXG4gIHNlbGVjdGVkRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xyXG4gIHNlbGVjdGVkSG91ciA9IDE7XHJcbiAgc2VsZWN0ZWRNaW51dGUgPSAwO1xyXG4gIHNlbGVjdGVkUGVyaW9kOiAnQU0nIHwgJ1BNJyA9ICdQTSc7XHJcblxyXG4gIHZpZXdEYXRlID0gbmV3IERhdGUoKTtcclxuICBjYWxlbmRhck9wZW4gPSBmYWxzZTtcclxuICBmb2N1c2VkID0gZmFsc2U7XHJcbiAgY2FsZW5kYXJWaWV3OiAnZGF5JyB8ICdtb250aCcgfCAneWVhcicgPSAnZGF5JztcclxuICBjYWxlbmRhckRheXM6IERhdGVbXSA9IFtdO1xyXG5cclxuICAvLyBQb3NpY2lvbmVzIHByZWZlcmlkYXMgZGVsIG92ZXJsYXk6IGl6cXVpZXJkYSBhYmFqbywgZGVyZWNoYSBhYmFqbywgaXpxdWllcmRhIGFycmliYSwgZGVyZWNoYSBhcnJpYmFcclxuICBvdmVybGF5UG9zaXRpb25zOiBDb25uZWN0ZWRQb3NpdGlvbltdID0gW1xyXG4gICAgeyBvcmlnaW5YOiAnc3RhcnQnLCBvcmlnaW5ZOiAnYm90dG9tJywgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAndG9wJywgb2Zmc2V0WTogNCB9LFxyXG4gICAgeyBvcmlnaW5YOiAnZW5kJywgb3JpZ2luWTogJ2JvdHRvbScsIG92ZXJsYXlYOiAnZW5kJywgb3ZlcmxheVk6ICd0b3AnLCBvZmZzZXRZOiA0IH0sXHJcbiAgICB7IG9yaWdpblg6ICdzdGFydCcsIG9yaWdpblk6ICd0b3AnLCBvdmVybGF5WDogJ3N0YXJ0Jywgb3ZlcmxheVk6ICdib3R0b20nLCBvZmZzZXRZOiAtNCB9LFxyXG4gICAgeyBvcmlnaW5YOiAnZW5kJywgb3JpZ2luWTogJ3RvcCcsIG92ZXJsYXlYOiAnZW5kJywgb3ZlcmxheVk6ICdib3R0b20nLCBvZmZzZXRZOiAtNCB9LFxyXG4gIF07XHJcblxyXG4gIHNjcm9sbFN0cmF0ZWd5ITogU2Nyb2xsU3RyYXRlZ3k7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZlxyXG4gICAgLy8gcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5XHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAvLyB0aGlzLnNjcm9sbFN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpO1xyXG5cclxuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhckRheXMoKTtcclxuICAgIHRoaXMudXBkYXRlTGFiZWxBbmRQbGFjZWhvbGRlcigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVMYWJlbEFuZFBsYWNlaG9sZGVyKCk6IHZvaWQge1xyXG4gICAgc3dpdGNoICh0aGlzLm1vZGUpIHtcclxuICAgICAgY2FzZSAnZGF0ZS1vbmx5JzpcclxuICAgICAgICB0aGlzLmxhYmVsID0gdGhpcy5sYWJlbC5yZXBsYWNlKCdGZWNoYSB5IGhvcmEnLCAnRmVjaGEnKTtcclxuICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5wbGFjZWhvbGRlci5yZXBsYWNlKCdmZWNoYSB5IGhvcmEnLCAnZmVjaGEnKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAndGltZS1vbmx5JzpcclxuICAgICAgICB0aGlzLmxhYmVsID0gdGhpcy5sYWJlbC5yZXBsYWNlKCdGZWNoYSB5IGhvcmEnLCAnSG9yYScpO1xyXG4gICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLnBsYWNlaG9sZGVyLnJlcGxhY2UoJ2ZlY2hhIHkgaG9yYScsICdob3JhJyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2RhdGUtdGltZSc6XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0b2dnbGVDYWxlbmRhcigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47XHJcbiAgICBpZiAoIXRoaXMuY2FsZW5kYXJPcGVuKSB7XHJcbiAgICAgIHRoaXMuY2FsZW5kYXJWaWV3ID0gJ2RheSc7XHJcbiAgICAgIHRoaXMuZXJyb3IgPSBmYWxzZTtcclxuICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jYWxlbmRhck9wZW4gPSB0cnVlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmVtaXRTZWxlY3Rpb24odHJ1ZSk7XHJcbiAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGdvVG9Ub2RheSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkSG91ciA9IG5vdy5nZXRIb3VycygpICUgMTIgfHwgMTI7XHJcbiAgICB0aGlzLnNlbGVjdGVkTWludXRlID0gbm93LmdldE1pbnV0ZXMoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRQZXJpb2QgPSBub3cuZ2V0SG91cnMoKSA8IDEyID8gJ0FNJyA6ICdQTSc7XHJcblxyXG4gICAgdGhpcy52aWV3RGF0ZSA9IG5vdztcclxuXHJcbiAgICB0aGlzLmVtaXRTZWxlY3Rpb24odGhpcy5tb2RlICE9PSAndGltZS1vbmx5JyA/IGZhbHNlIDogdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RUaW1lKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ3RpbWUtb25seScpIHtcclxuICAgICAgdGhpcy5lbWl0U2VsZWN0aW9uKHRydWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lbWl0U2VsZWN0aW9uKGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldERpc3BsYXlWYWx1ZSgpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkRGF0ZSkgcmV0dXJuICcnO1xyXG5cclxuICAgIHN3aXRjaCAodGhpcy5tb2RlKSB7XHJcbiAgICAgIGNhc2UgJ2RhdGUtb25seSc6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWREYXRlLnRvTG9jYWxlRGF0ZVN0cmluZygnZXMtRVMnLCB7XHJcbiAgICAgICAgICBkYXk6ICcyLWRpZ2l0JyxcclxuICAgICAgICAgIG1vbnRoOiAnMi1kaWdpdCcsXHJcbiAgICAgICAgICB5ZWFyOiAnbnVtZXJpYydcclxuICAgICAgICB9KTtcclxuICAgICAgY2FzZSAndGltZS1vbmx5JzpcclxuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZERhdGUudG9Mb2NhbGVUaW1lU3RyaW5nKCdlcy1FUycsIHtcclxuICAgICAgICAgIGhvdXI6ICcyLWRpZ2l0JyxcclxuICAgICAgICAgIG1pbnV0ZTogJzItZGlnaXQnLFxyXG4gICAgICAgICAgaG91cjEyOiB0cnVlXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIGNhc2UgJ2RhdGUtdGltZSc6XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWREYXRlLnRvTG9jYWxlU3RyaW5nKCdlcy1FUycsIHtcclxuICAgICAgICAgIGRheTogJzItZGlnaXQnLFxyXG4gICAgICAgICAgbW9udGg6ICcyLWRpZ2l0JyxcclxuICAgICAgICAgIHllYXI6ICdudW1lcmljJyxcclxuICAgICAgICAgIGhvdXI6ICcyLWRpZ2l0JyxcclxuICAgICAgICAgIG1pbnV0ZTogJzItZGlnaXQnLFxyXG4gICAgICAgICAgaG91cjEyOiB0cnVlXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZXh0Vmlldyh2aWV3OiAnZGF5JyB8ICdtb250aCcgfCAneWVhcicpOiAnZGF5JyB8ICdtb250aCcgfCAneWVhcicge1xyXG4gICAgcmV0dXJuIHZpZXcgPT09ICdkYXknID8gJ21vbnRoJyA6IHZpZXcgPT09ICdtb250aCcgPyAneWVhcicgOiAnZGF5JztcclxuICB9XHJcblxyXG4gIHByZXYoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNoaWZ0Vmlld0RhdGUoLTEpO1xyXG4gICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyRGF5cygpO1xyXG4gIH1cclxuXHJcbiAgbmV4dCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hpZnRWaWV3RGF0ZSgxKTtcclxuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhckRheXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2hpZnRWaWV3RGF0ZShzdGVwOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGNvbnN0IHllYXIgPSB0aGlzLnZpZXdEYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgICBjb25zdCBtb250aCA9IHRoaXMudmlld0RhdGUuZ2V0TW9udGgoKTtcclxuXHJcbiAgICBpZiAodGhpcy5jYWxlbmRhclZpZXcgPT09ICdkYXknKSB7XHJcbiAgICAgIHRoaXMudmlld0RhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCArIHN0ZXAsIDEpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmNhbGVuZGFyVmlldyA9PT0gJ21vbnRoJykge1xyXG4gICAgICB0aGlzLnZpZXdEYXRlID0gbmV3IERhdGUoeWVhciArIHN0ZXAsIG1vbnRoLCAxKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudmlld0RhdGUgPSBuZXcgRGF0ZSh5ZWFyICsgc3RlcCAqIDEwLCBtb250aCwgMSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWxlY3REYXRlKGRhdGU6IERhdGUsIG9wZW46IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMudmlld0RhdGUgPSBuZXcgRGF0ZShkYXRlKTtcclxuICAgIGNvbnN0IGhvdXIgPSB0aGlzLnNlbGVjdGVkUGVyaW9kID09PSAnQU0nXHJcbiAgICAgID8gdGhpcy5zZWxlY3RlZEhvdXIgJSAxMlxyXG4gICAgICA6ICh0aGlzLnNlbGVjdGVkSG91ciAlIDEyKSArIDEyO1xyXG5cclxuICAgIGNvbnN0IHNlbGVjdGVkID0gbmV3IERhdGUoXHJcbiAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKSxcclxuICAgICAgZGF0ZS5nZXRNb250aCgpLFxyXG4gICAgICBkYXRlLmdldERhdGUoKSxcclxuICAgICAgaG91cixcclxuICAgICAgdGhpcy5zZWxlY3RlZE1pbnV0ZVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IHNlbGVjdGVkO1xyXG4gICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XHJcbiAgICB0aGlzLmVycm9yID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5lbWl0U2VsZWN0aW9uKCFvcGVuKTtcclxuXHJcbiAgICBpZiAob3Blbikge1xyXG4gICAgICB0aGlzLmNhbGVuZGFyT3BlbiA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgc2V0TW9udGgobW9udGg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy52aWV3RGF0ZS5zZXRNb250aChtb250aCk7XHJcbiAgICB0aGlzLmNhbGVuZGFyVmlldyA9ICdkYXknO1xyXG4gICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyRGF5cygpO1xyXG4gIH1cclxuXHJcbiAgc2V0WWVhcih5ZWFyOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMudmlld0RhdGUuc2V0RnVsbFllYXIoeWVhcik7XHJcbiAgICB0aGlzLmNhbGVuZGFyVmlldyA9ICdtb250aCc7XHJcbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXJEYXlzKCk7XHJcbiAgfVxyXG5cclxuICBnZXRNb250aE5hbWUoaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5tb250aHNbaW5kZXhdO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGVjYWRlU3RhcnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBNYXRoLmZsb29yKHRoaXMudmlld0RhdGUuZ2V0RnVsbFllYXIoKSAvIDEwKSAqIDEwO1xyXG4gIH1cclxuXHJcbiAgaXNTYW1lRGF0ZShkMTogRGF0ZSwgZDI6IERhdGUpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBkMS5nZXREYXRlKCkgPT09IGQyLmdldERhdGUoKSAmJlxyXG4gICAgICBkMS5nZXRNb250aCgpID09PSBkMi5nZXRNb250aCgpICYmXHJcbiAgICAgIGQxLmdldEZ1bGxZZWFyKCkgPT09IGQyLmdldEZ1bGxZZWFyKCk7XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZUNhbGVuZGFyRGF5cygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRheXM6IERhdGVbXSA9IFtdO1xyXG4gICAgY29uc3QgeWVhciA9IHRoaXMudmlld0RhdGUuZ2V0RnVsbFllYXIoKTtcclxuICAgIGNvbnN0IG1vbnRoID0gdGhpcy52aWV3RGF0ZS5nZXRNb250aCgpO1xyXG5cclxuICAgIGNvbnN0IGZpcnN0RGF5ID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpO1xyXG4gICAgY29uc3Qgb2Zmc2V0ID0gZmlyc3REYXkuZ2V0RGF5KCk7XHJcbiAgICBjb25zdCBzdGFydERhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSAtIG9mZnNldCk7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0MjsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShzdGFydERhdGUpO1xyXG4gICAgICBkYXRlLnNldERhdGUoc3RhcnREYXRlLmdldERhdGUoKSArIGkpO1xyXG4gICAgICBkYXlzLnB1c2goZGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jYWxlbmRhckRheXMgPSBkYXlzO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VDYWxlbmRhcigpOiB2b2lkIHtcclxuICAgIHRoaXMuY2FsZW5kYXJPcGVuID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkRGF0ZSkge1xyXG4gICAgICB0aGlzLmVycm9yID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICBoYW5kbGVPdXRzaWRlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNsaWNrZWRJbnNpZGUgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcclxuICAgIGlmICghY2xpY2tlZEluc2lkZSAmJiB0aGlzLmNhbGVuZGFyT3Blbikge1xyXG4gICAgICB0aGlzLmNsb3NlQ2FsZW5kYXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIGJ1aWxkU2VsZWN0ZWREYXRlRnJvbVN0YXRlKCk6IERhdGUge1xyXG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ2RhdGUtb25seScpIHtcclxuICAgICAgY29uc3QgYmFzZSA9IHRoaXMuc2VsZWN0ZWREYXRlID8/IHRoaXMudmlld0RhdGU7XHJcbiAgICAgIHJldHVybiBuZXcgRGF0ZShiYXNlLmdldEZ1bGxZZWFyKCksIGJhc2UuZ2V0TW9udGgoKSwgYmFzZS5nZXREYXRlKCksIDAsIDApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm1vZGUgPT09ICd0aW1lLW9ubHknKSB7XHJcbiAgICAgIGNvbnN0IGhvdXIgPSB0aGlzLnNlbGVjdGVkUGVyaW9kID09PSAnQU0nID8gdGhpcy5zZWxlY3RlZEhvdXIgJSAxMiA6ICh0aGlzLnNlbGVjdGVkSG91ciAlIDEyKSArIDEyO1xyXG4gICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICByZXR1cm4gbmV3IERhdGUobm93LmdldEZ1bGxZZWFyKCksIG5vdy5nZXRNb250aCgpLCBub3cuZ2V0RGF0ZSgpLCBob3VyLCB0aGlzLnNlbGVjdGVkTWludXRlKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGhvdXIgPSB0aGlzLnNlbGVjdGVkUGVyaW9kID09PSAnQU0nID8gdGhpcy5zZWxlY3RlZEhvdXIgJSAxMiA6ICh0aGlzLnNlbGVjdGVkSG91ciAlIDEyKSArIDEyO1xyXG4gICAgY29uc3QgYmFzZSA9IHRoaXMudmlld0RhdGUgPz8gbmV3IERhdGUoKTtcclxuICAgIHJldHVybiBuZXcgRGF0ZShiYXNlLmdldEZ1bGxZZWFyKCksIGJhc2UuZ2V0TW9udGgoKSwgYmFzZS5nZXREYXRlKCksIGhvdXIsIHRoaXMuc2VsZWN0ZWRNaW51dGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0U2VsZWN0aW9uKGNsb3NlQ2FsZW5kYXI6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5idWlsZFNlbGVjdGVkRGF0ZUZyb21TdGF0ZSgpO1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSBzZWxlY3RlZDtcclxuXHJcbiAgICBpZiAodGhpcy5tb2RlID09PSAnZGF0ZS1vbmx5Jykge1xyXG4gICAgICBjb25zdCBkYXRlU3RyaW5nID0gYCR7c2VsZWN0ZWQuZ2V0RnVsbFllYXIoKX0tJHsoc2VsZWN0ZWQuZ2V0TW9udGgoKSArIDEpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKX0tJHtzZWxlY3RlZC5nZXREYXRlKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfWA7XHJcbiAgICAgIHRoaXMuZGF0ZVNlbGVjdGVkLmVtaXQoZGF0ZVN0cmluZyk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMubW9kZSA9PT0gJ3RpbWUtb25seScpIHtcclxuICAgICAgY29uc3QgdGltZVN0cmluZyA9IGAke3NlbGVjdGVkLmdldEhvdXJzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfToke3NlbGVjdGVkLmdldE1pbnV0ZXMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9OjAwYDtcclxuICAgICAgdGhpcy5kYXRlU2VsZWN0ZWQuZW1pdCh0aW1lU3RyaW5nKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGRhdGVTdHJpbmcgPSBgJHtzZWxlY3RlZC5nZXRGdWxsWWVhcigpfS0keyhzZWxlY3RlZC5nZXRNb250aCgpICsgMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfS0ke3NlbGVjdGVkLmdldERhdGUoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9VCR7c2VsZWN0ZWQuZ2V0SG91cnMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9OiR7c2VsZWN0ZWQuZ2V0TWludXRlcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKX06MDBgO1xyXG4gICAgICB0aGlzLmRhdGVTZWxlY3RlZC5lbWl0KGRhdGVTdHJpbmcpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjbG9zZUNhbGVuZGFyKSB7XHJcbiAgICAgIHRoaXMuY2FsZW5kYXJPcGVuID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJkYXRlLXBpY2tlclwiIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ0ZXh0XCI+XHJcbiAgICBAaWYgKGlzUmVxdWlyZWQpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJyZXF1aXJlZFwiPjwvZGl2PlxyXG4gICAgfVxyXG5cclxuICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsXCI+e3sgbGFiZWwgfX08L2xhYmVsPlxyXG5cclxuICAgIEBpZiAoaWNvbkhlbHApIHtcclxuICAgICAgPGRpdiBjbGFzcz1cImhlbHAtaWNvblwiPlxyXG4gICAgICAgIDxpdXMtaWNvbi1tZCBpY29uTmFtZT1cImljb24taGVscFwiPjwvaXVzLWljb24tbWQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG5cclxuICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsXCI+OjwvbGFiZWw+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJpbnB1dC13cmFwcGVyXCI+XHJcbiAgICA8IS0tIE9yaWdlbiBkZWwgb3ZlcmxheSAtLT5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJjb250YWluZXItdGV4dGZpZWxkXCJcclxuICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcclxuICAgICAgICBmb2N1c2VkOiBjYWxlbmRhck9wZW4gfHwgZm9jdXNlZCxcclxuICAgICAgICBhbGVydDogIWNhbGVuZGFyT3BlbiAmJiBlcnJvciAmJiAhZGlzYWJsZWQsXHJcbiAgICAgICAgc2VsZWN0ZWQ6IHNlbGVjdGVkRGF0ZVxyXG4gICAgICB9XCJcclxuICAgICAgKGNsaWNrKT1cInRvZ2dsZUNhbGVuZGFyKClcIlxyXG4gICAgICBjZGtPdmVybGF5T3JpZ2luICNvcmlnaW49XCJjZGtPdmVybGF5T3JpZ2luXCJcclxuICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0XCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgW3ZhbHVlXT1cInNlbGVjdGVkRGF0ZSA/IGdldERpc3BsYXlWYWx1ZSgpIDogJydcIlxyXG4gICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY250LWljb24tcmlnaHRcIj5cclxuICAgICAgICAgIDxpdXMtaWNvbi1tZCBpY29uTmFtZT1cImljb24tY2FsZW5kYXItdG9kYXlcIj48L2l1cy1pY29uLW1kPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gPT09PT09PT0gT1ZFUkxBWSAoQ0RLKSA9PT09PT09PSAtLT5cclxuICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICBjZGtDb25uZWN0ZWRPdmVybGF5XHJcbiAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJjYWxlbmRhck9wZW5cIlxyXG4gICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbl09XCJvcmlnaW5cIlxyXG4gICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uc109XCJvdmVybGF5UG9zaXRpb25zXCJcclxuICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlIYXNCYWNrZHJvcF09XCJmYWxzZVwiXHJcbiAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5UHVzaF09XCJ0cnVlXCJcclxuICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlGbGV4aWJsZURpbWVuc2lvbnNdPVwiZmFsc2VcIlxyXG4gICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheVBhbmVsQ2xhc3NdPVwiJ2NhbGVuZGFyLW92ZXJsYXktcGFuZWwnXCJcclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiY2FsZW5kYXItb3ZlcmxheVwiXHJcbiAgICAgICAgW2NsYXNzLnRpbWUtb25seV09XCJtb2RlID09PSAndGltZS1vbmx5J1wiXHJcbiAgICAgICAgW2NsYXNzLmRhdGUtb25seV09XCJtb2RlID09PSAnZGF0ZS1vbmx5J1wiXHJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItY29udGVudFwiPlxyXG4gICAgICAgICAgQGlmIChtb2RlICE9PSAndGltZS1vbmx5Jykge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLXNpZGVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgIDxpdXMtYnV0dG9uLXN0YW5kYXJkLXRlcnRpYXJ5XHJcbiAgICAgICAgICAgICAgICBpY29uTmFtZT1cImljb24ta2V5Ym9hcmQtYXJyb3ctbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAoYnV0dG9uQ2xpY2tlZCk9XCJwcmV2KClcIlxyXG4gICAgICAgICAgICAgID48L2l1cy1idXR0b24tc3RhbmRhcmQtdGVydGlhcnk+XHJcblxyXG4gICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJjYWxlbmRhclZpZXcgPSBuZXh0VmlldyhjYWxlbmRhclZpZXcpXCI+XHJcbiAgICAgICAgICAgICAgQHN3aXRjaCAoY2FsZW5kYXJWaWV3KSB7IEBjYXNlICgnZGF5Jykge1xyXG4gICAgICAgICAgICAgIHt7IGdldE1vbnRoTmFtZSh2aWV3RGF0ZS5nZXRNb250aCgpKSB9fVxyXG4gICAgICAgICAgICAgIHt7IHZpZXdEYXRlLmdldEZ1bGxZZWFyKCkgfX1cclxuICAgICAgICAgICAgICB9IEBjYXNlICgnbW9udGgnKSB7XHJcbiAgICAgICAgICAgICAge3sgdmlld0RhdGUuZ2V0RnVsbFllYXIoKSB9fVxyXG4gICAgICAgICAgICAgIH0gQGNhc2UgKCd5ZWFyJykge1xyXG4gICAgICAgICAgICAgIHt7IGdldERlY2FkZVN0YXJ0KCkgfX0te3sgZ2V0RGVjYWRlU3RhcnQoKSArIDkgfX1cclxuICAgICAgICAgICAgICB9IH1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgIDxpdXMtYnV0dG9uLXN0YW5kYXJkLXRlcnRpYXJ5XHJcbiAgICAgICAgICAgICAgICBpY29uTmFtZT1cImljb24ta2V5Ym9hcmQtYXJyb3ctcmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgKGJ1dHRvbkNsaWNrZWQpPVwibmV4dCgpXCJcclxuICAgICAgICAgICAgICA+PC9pdXMtYnV0dG9uLXN0YW5kYXJkLXRlcnRpYXJ5PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1ib2R5XCI+XHJcbiAgICAgICAgICAgIEBzd2l0Y2ggKGNhbGVuZGFyVmlldykgeyBAY2FzZSAoJ2RheScpIHtcclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZGF5c1wiPlxyXG4gICAgICAgICAgICAgIEBmb3IgKGRheSBvZiBkYXlMYWJlbHM7IHRyYWNrIGRheSkge1xyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj57eyBkYXkgfX08L2Rpdj5cclxuICAgICAgICAgICAgICB9IEBmb3IgKGRhdGUgb2YgY2FsZW5kYXJEYXlzOyB0cmFjayBkYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2VsbFwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiXHJcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0ZSAmJiBpc1NhbWVEYXRlKGRhdGUsIHNlbGVjdGVkRGF0ZSlcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5vdXQtb2YtcmFuZ2VdPVwiZGF0ZS5nZXRNb250aCgpICE9PSB2aWV3RGF0ZS5nZXRNb250aCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdERhdGUoZGF0ZSwgdHJ1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRlLmdldERhdGUoKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfSBAY2FzZSAoJ21vbnRoJykge1xyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBtb250aHNcIj5cclxuICAgICAgICAgICAgICAgICAgICBAZm9yIChtIG9mIG1vbnRoczsgdHJhY2sgbTsgbGV0IGkgPSAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZWxsXCIgKGNsaWNrKT1cInNldE1vbnRoKGkpXCI+e3sgbSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH0gQGNhc2UgKCd5ZWFyJykge1xyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCB5ZWFyc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGkgb2YgeWVhcnNBcnJheTsgdHJhY2sgaSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNlbGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Mub3V0LW9mLXJhbmdlXT1cImkgPT09IDAgfHwgaSA9PT0gMTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0WWVhcihnZXREZWNhZGVTdGFydCgpIC0gMSArIGkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0RGVjYWRlU3RhcnQoKSAtIDEgKyBpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9IH1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9IEBpZiAobW9kZSAhPT0gJ2RhdGUtb25seScpIHtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLXNlbGVjdG9yXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0aW1lLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZEhvdXIgfCBudW1iZXIgOiBcIjIuMFwiIH19Ont7XHJcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkTWludXRlID09PSAwID8gXCIwMFwiIDogKHNlbGVjdGVkTWludXRlIHwgbnVtYmVyIDogXCIyLjBcIilcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZFBlcmlvZCB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxpdXMtc2ltcGxlLWRpdmlkZXI+PC9pdXMtc2ltcGxlLWRpdmlkZXI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWNvbHVtbnNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIHNjcm9sbGFibGVcIj5cclxuICAgICAgICAgICAgICAgIEBmb3IgKGggb2YgaG91cnM7IHRyYWNrIGgpIHtcclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cImggPT09IHNlbGVjdGVkSG91clwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSG91ciA9IGg7XHJcbiAgICAgICAgICAgICAgICAgIG1vZGUgPT09ICd0aW1lLW9ubHknXHJcbiAgICAgICAgICAgICAgICAgICAgPyBzZWxlY3RUaW1lKClcclxuICAgICAgICAgICAgICAgICAgICA6IHNlbGVjdERhdGUodmlld0RhdGUsIHRydWUpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7eyBoIHwgbnVtYmVyIDogXCIyLjBcIiB9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIHNjcm9sbGFibGVcIj5cclxuICAgICAgICAgICAgICAgIEBmb3IgKG0gb2YgbWludXRlczsgdHJhY2sgbSkge1xyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwibSA9PT0gc2VsZWN0ZWRNaW51dGVcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZE1pbnV0ZSA9IG07XHJcbiAgICAgICAgICAgICAgICAgIG1vZGUgPT09ICd0aW1lLW9ubHknXHJcbiAgICAgICAgICAgICAgICAgICAgPyBzZWxlY3RUaW1lKClcclxuICAgICAgICAgICAgICAgICAgICA6IHNlbGVjdERhdGUodmlld0RhdGUsIHRydWUpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7eyBtIHwgbnVtYmVyIDogXCIyLjBcIiB9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCInQU0nID09PSBzZWxlY3RlZFBlcmlvZFwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkUGVyaW9kID0gJ0FNJztcclxuICAgICAgICAgICAgICAgICAgbW9kZSA9PT0gJ3RpbWUtb25seSdcclxuICAgICAgICAgICAgICAgICAgICA/IHNlbGVjdFRpbWUoKVxyXG4gICAgICAgICAgICAgICAgICAgIDogc2VsZWN0RGF0ZSh2aWV3RGF0ZSwgZmFsc2UpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICBBTVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCInUE0nID09PSBzZWxlY3RlZFBlcmlvZFwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkUGVyaW9kID0gJ1BNJztcclxuICAgICAgICAgICAgICAgICAgbW9kZSA9PT0gJ3RpbWUtb25seSdcclxuICAgICAgICAgICAgICAgICAgICA/IHNlbGVjdFRpbWUoKVxyXG4gICAgICAgICAgICAgICAgICAgIDogc2VsZWN0RGF0ZSh2aWV3RGF0ZSwgZmFsc2UpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICBQTVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxpdXMtc2ltcGxlLWRpdmlkZXI+PC9pdXMtc2ltcGxlLWRpdmlkZXI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRvZGF5XCIgKGNsaWNrKT1cImdvVG9Ub2RheSgpXCI+XHJcbiAgICAgICAgQGlmIChtb2RlID09PSAnZGF0ZS1vbmx5JykgeyBGZWNoYSBhY3R1YWwgfSBAZWxzZSBpZiAobW9kZSA9PT1cclxuICAgICAgICAndGltZS1vbmx5JykgeyBIb3JhIGFjdHVhbCB9IEBlbHNlIHsgRmVjaGEgeSBob3JhIGFjdHVhbCB9XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwhLS0gPT09PT09PT0gL09WRVJMQVkgKENESykgPT09PT09PT0gLS0+XHJcbiAgPC9kaXY+XHJcbiAgQGlmIChoZWxwVGV4dCAmJiBmb2N1c2VkICYmICFlcnJvcikge1xyXG4gIDxkaXYgY2xhc3M9XCJoZWxwLXRleHRcIj5cclxuICAgIHt7IGhlbHBUZXh0IH19XHJcbiAgPC9kaXY+XHJcbiAgfSBAaWYgKGhlbHBUZXh0RXJyb3IgJiYgZXJyb3IpIHtcclxuICA8ZGl2IGNsYXNzPVwiaGVscC10ZXh0LWVycm9yXCI+XHJcbiAgICB7eyBoZWxwVGV4dEVycm9yIH19XHJcbiAgPC9kaXY+XHJcbiAgfVxyXG48L2Rpdj5cclxuIl19
286
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1ob3VyLXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pdXMtZGVzaWduLWNvbXBvbmVudHMvc3JjL2xpYi9kYXRlLWhvdXItcGlja2VyL2RhdGUtaG91ci1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXVzLWRlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvZGF0ZS1ob3VyLXBpY2tlci9kYXRlLWhvdXItcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsYUFBYSxFQUE4QyxNQUFNLHNCQUFzQixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNwRixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQzs7OztBQWVqSCxNQUFNLE9BQU8sdUJBQXVCO0lBNENsQyxZQUNVLEtBQWlCO0lBQ3pCLDJCQUEyQjs7UUFEbkIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQTVDbEIsVUFBSyxHQUFHLGNBQWMsQ0FBQztRQUN2QixnQkFBVyxHQUFHLDZCQUE2QixDQUFDO1FBQzVDLFVBQUssR0FBRyxLQUFLLENBQUM7UUFDZCxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2Qsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFFbkIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGVBQVUsR0FBRyxJQUFJ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LFVBQVUsR0FBRyxHQUFHLFFBQVEsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUosSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckMsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUNyQyxNQUFNLFVBQVUsR0FBRyxHQUFHLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUM7WUFDaEksSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckMsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLFVBQVUsR0FBRyxHQUFHLFFBQVEsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUM7WUFDclEsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckMsQ0FBQztRQUVELElBQUksYUFBYSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7K0dBelJVLHVCQUF1QjttR0FBdkIsdUJBQXVCLDBjQ3BCcEMsdTRQQXlOQSx3cVFEOU1JLFlBQVksb0xBQ1osYUFBYSwyckNBQUUsZ0JBQWdCO2dCQUMvQixlQUFlLHVGQUNmLHNCQUFzQiwrREFDdEIsK0JBQStCOzs0RkFLdEIsdUJBQXVCO2tCQWJuQyxTQUFTOytCQUNFLHNCQUFzQixjQUNwQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixhQUFhLEVBQUUsZ0JBQWdCO3dCQUMvQixlQUFlO3dCQUNmLHNCQUFzQjt3QkFDdEIsK0JBQStCO3FCQUNoQzsrRUFLUSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUVJLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFrT1Asa0JBQWtCO3NCQURqQixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPdmVybGF5TW9kdWxlLCBDb25uZWN0ZWRQb3NpdGlvbiwgU2Nyb2xsU3RyYXRlZ3ksIE92ZXJsYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XHJcbmltcG9ydCB7IEljb25NZENvbXBvbmVudCB9IGZyb20gJy4uL2ljb24tbWQvaWNvbi1tZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTaW1wbGVEaXZpZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vc2ltcGxlLWRpdmlkZXIvc2ltcGxlLWRpdmlkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQnV0dG9uU3RhbmRhcmRUZXJ0aWFyeUNvbXBvbmVudCB9IGZyb20gJy4uL2J1dHRvbi1zdGFuZGFyZC10ZXJ0aWFyeS9idXR0b24tc3RhbmRhcmQtdGVydGlhcnkuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaXVzLWRhdGUtaG91ci1waWNrZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgT3ZlcmxheU1vZHVsZSwgLy8g4pyFIENESyBPdmVybGF5XHJcbiAgICBJY29uTWRDb21wb25lbnQsXHJcbiAgICBTaW1wbGVEaXZpZGVyQ29tcG9uZW50LFxyXG4gICAgQnV0dG9uU3RhbmRhcmRUZXJ0aWFyeUNvbXBvbmVudCxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLWhvdXItcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vZGF0ZS1ob3VyLXBpY2tlci5jb21wb25lbnQuc2NzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYXRlSG91clBpY2tlckNvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgbGFiZWwgPSAnRmVjaGEgeSBob3JhJztcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICdTZWxlY2Npb25lIHVuYSBmZWNoYSB5IGhvcmEnO1xyXG4gIEBJbnB1dCgpIGVycm9yID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaGVscFRleHQgPSAnJztcclxuICBASW5wdXQoKSBoZWxwVGV4dEVycm9yID0gJyc7XHJcbiAgQElucHV0KCkgZXJyb3JUZXh0Pzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaWNvbkhlbHAgPSBmYWxzZTtcclxuICBASW5wdXQoKSBpc1JlcXVpcmVkID0gdHJ1ZTtcclxuICBASW5wdXQoKSBtb2RlOiAnZGF0ZS1vbmx5JyB8ICd0aW1lLW9ubHknIHwgJ2RhdGUtdGltZScgPSAnZGF0ZS10aW1lJztcclxuXHJcbiAgQE91dHB1dCgpIGRhdGVTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBvbkJsdXJFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgcmVhZG9ubHkgZGF5TGFiZWxzID0gWydEbycsICdMdScsICdNYScsICdNaScsICdKdScsICdWaScsICdTYSddO1xyXG4gIHJlYWRvbmx5IG1vbnRocyA9IFsnRW5lJywgJ0ZlYicsICdNYXInLCAnQWJyJywgJ01heScsICdKdW4nLCAnSnVsJywgJ0FnbycsICdTZXAnLCAnT2N0JywgJ05vdicsICdEaWMnXTtcclxuICByZWFkb25seSB5ZWFyc0FycmF5ID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogMTIgfSwgKF8sIGkpID0+IGkpO1xyXG5cclxuICByZWFkb25seSBob3VycyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IDEyIH0sIChfLCBpKSA9PiBpICsgMSk7IC8vIDAxIGEgMTJcclxuICByZWFkb25seSBtaW51dGVzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogNjAgfSwgKF8sIGkpID0+IGkpOyAgIC8vIDAwIGEgNTlcclxuXHJcbiAgc2VsZWN0ZWREYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XHJcbiAgc2VsZWN0ZWRIb3VyID0gMTtcclxuICBzZWxlY3RlZE1pbnV0ZSA9IDA7XHJcbiAgc2VsZWN0ZWRQZXJpb2Q6ICdBTScgfCAnUE0nID0gJ1BNJztcclxuICBpc0FsZXJ0VGV4dCA9IGZhbHNlO1xyXG5cclxuICB2aWV3RGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgY2FsZW5kYXJPcGVuID0gZmFsc2U7XHJcbiAgZm9jdXNlZCA9IGZhbHNlO1xyXG4gIGNhbGVuZGFyVmlldzogJ2RheScgfCAnbW9udGgnIHwgJ3llYXInID0gJ2RheSc7XHJcbiAgY2FsZW5kYXJEYXlzOiBEYXRlW10gPSBbXTtcclxuXHJcbiAgLy8gUG9zaWNpb25lcyBwcmVmZXJpZGFzIGRlbCBvdmVybGF5OiBpenF1aWVyZGEgYWJham8sIGRlcmVjaGEgYWJham8sIGl6cXVpZXJkYSBhcnJpYmEsIGRlcmVjaGEgYXJyaWJhXHJcbiAgb3ZlcmxheVBvc2l0aW9uczogQ29ubmVjdGVkUG9zaXRpb25bXSA9IFtcclxuICAgIHsgb3JpZ2luWDogJ3N0YXJ0Jywgb3JpZ2luWTogJ2JvdHRvbScsIG92ZXJsYXlYOiAnc3RhcnQnLCBvdmVybGF5WTogJ3RvcCcsIG9mZnNldFk6IDQgfSxcclxuICAgIHsgb3JpZ2luWDogJ2VuZCcsIG9yaWdpblk6ICdib3R0b20nLCBvdmVybGF5WDogJ2VuZCcsIG92ZXJsYXlZOiAndG9wJywgb2Zmc2V0WTogNCB9LFxyXG4gICAgeyBvcmlnaW5YOiAnc3RhcnQnLCBvcmlnaW5ZOiAndG9wJywgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAnYm90dG9tJywgb2Zmc2V0WTogLTQgfSxcclxuICAgIHsgb3JpZ2luWDogJ2VuZCcsIG9yaWdpblk6ICd0b3AnLCBvdmVybGF5WDogJ2VuZCcsIG92ZXJsYXlZOiAnYm90dG9tJywgb2Zmc2V0WTogLTQgfSxcclxuICBdO1xyXG5cclxuICBzY3JvbGxTdHJhdGVneSE6IFNjcm9sbFN0cmF0ZWd5O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWZcclxuICAgIC8vIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheVxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgLy8gdGhpcy5zY3JvbGxTdHJhdGVneSA9IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKTtcclxuXHJcbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXJEYXlzKCk7XHJcbiAgICB0aGlzLnVwZGF0ZUxhYmVsQW5kUGxhY2Vob2xkZXIoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlTGFiZWxBbmRQbGFjZWhvbGRlcigpOiB2b2lkIHtcclxuICAgIHN3aXRjaCAodGhpcy5tb2RlKSB7XHJcbiAgICAgIGNhc2UgJ2RhdGUtb25seSc6XHJcbiAgICAgICAgdGhpcy5sYWJlbCA9IHRoaXMubGFiZWwucmVwbGFjZSgnRmVjaGEgeSBob3JhJywgJ0ZlY2hhJyk7XHJcbiAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IHRoaXMucGxhY2Vob2xkZXIucmVwbGFjZSgnZmVjaGEgeSBob3JhJywgJ2ZlY2hhJyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3RpbWUtb25seSc6XHJcbiAgICAgICAgdGhpcy5sYWJlbCA9IHRoaXMubGFiZWwucmVwbGFjZSgnRmVjaGEgeSBob3JhJywgJ0hvcmEnKTtcclxuICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5wbGFjZWhvbGRlci5yZXBsYWNlKCdmZWNoYSB5IGhvcmEnLCAnaG9yYScpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdkYXRlLXRpbWUnOlxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQ2FsZW5kYXIoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xyXG4gICAgaWYgKCF0aGlzLmNhbGVuZGFyT3Blbikge1xyXG4gICAgICB0aGlzLmNhbGVuZGFyVmlldyA9ICdkYXknO1xyXG4gICAgICB0aGlzLmlzQWxlcnRUZXh0ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZm9jdXNlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuY2FsZW5kYXJPcGVuID0gdHJ1ZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5lbWl0U2VsZWN0aW9uKHRydWUpO1xyXG4gICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnb1RvVG9kYXkoKTogdm9pZCB7XHJcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xyXG4gICAgdGhpcy5zZWxlY3RlZEhvdXIgPSBub3cuZ2V0SG91cnMoKSAlIDEyIHx8IDEyO1xyXG4gICAgdGhpcy5zZWxlY3RlZE1pbnV0ZSA9IG5vdy5nZXRNaW51dGVzKCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkUGVyaW9kID0gbm93LmdldEhvdXJzKCkgPCAxMiA/ICdBTScgOiAnUE0nO1xyXG5cclxuICAgIHRoaXMudmlld0RhdGUgPSBub3c7XHJcblxyXG4gICAgdGhpcy5lbWl0U2VsZWN0aW9uKHRoaXMubW9kZSAhPT0gJ3RpbWUtb25seScgPyBmYWxzZSA6IHRydWUpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0VGltZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm1vZGUgPT09ICd0aW1lLW9ubHknKSB7XHJcbiAgICAgIHRoaXMuZW1pdFNlbGVjdGlvbih0cnVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZW1pdFNlbGVjdGlvbihmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXREaXNwbGF5VmFsdWUoKTogc3RyaW5nIHtcclxuICAgIGlmICghdGhpcy5zZWxlY3RlZERhdGUpIHJldHVybiAnJztcclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMubW9kZSkge1xyXG4gICAgICBjYXNlICdkYXRlLW9ubHknOlxyXG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRGF0ZS50b0xvY2FsZURhdGVTdHJpbmcoJ2VzLUVTJywge1xyXG4gICAgICAgICAgZGF5OiAnMi1kaWdpdCcsXHJcbiAgICAgICAgICBtb250aDogJzItZGlnaXQnLFxyXG4gICAgICAgICAgeWVhcjogJ251bWVyaWMnXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIGNhc2UgJ3RpbWUtb25seSc6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWREYXRlLnRvTG9jYWxlVGltZVN0cmluZygnZXMtRVMnLCB7XHJcbiAgICAgICAgICBob3VyOiAnMi1kaWdpdCcsXHJcbiAgICAgICAgICBtaW51dGU6ICcyLWRpZ2l0JyxcclxuICAgICAgICAgIGhvdXIxMjogdHJ1ZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICBjYXNlICdkYXRlLXRpbWUnOlxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRGF0ZS50b0xvY2FsZVN0cmluZygnZXMtRVMnLCB7XHJcbiAgICAgICAgICBkYXk6ICcyLWRpZ2l0JyxcclxuICAgICAgICAgIG1vbnRoOiAnMi1kaWdpdCcsXHJcbiAgICAgICAgICB5ZWFyOiAnbnVtZXJpYycsXHJcbiAgICAgICAgICBob3VyOiAnMi1kaWdpdCcsXHJcbiAgICAgICAgICBtaW51dGU6ICcyLWRpZ2l0JyxcclxuICAgICAgICAgIGhvdXIxMjogdHJ1ZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmV4dFZpZXcodmlldzogJ2RheScgfCAnbW9udGgnIHwgJ3llYXInKTogJ2RheScgfCAnbW9udGgnIHwgJ3llYXInIHtcclxuICAgIHJldHVybiB2aWV3ID09PSAnZGF5JyA/ICdtb250aCcgOiB2aWV3ID09PSAnbW9udGgnID8gJ3llYXInIDogJ2RheSc7XHJcbiAgfVxyXG5cclxuICBwcmV2KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaGlmdFZpZXdEYXRlKC0xKTtcclxuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhckRheXMoKTtcclxuICB9XHJcblxyXG4gIG5leHQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNoaWZ0Vmlld0RhdGUoMSk7XHJcbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXJEYXlzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNoaWZ0Vmlld0RhdGUoc3RlcDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBjb25zdCB5ZWFyID0gdGhpcy52aWV3RGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgY29uc3QgbW9udGggPSB0aGlzLnZpZXdEYXRlLmdldE1vbnRoKCk7XHJcblxyXG4gICAgaWYgKHRoaXMuY2FsZW5kYXJWaWV3ID09PSAnZGF5Jykge1xyXG4gICAgICB0aGlzLnZpZXdEYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGggKyBzdGVwLCAxKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jYWxlbmRhclZpZXcgPT09ICdtb250aCcpIHtcclxuICAgICAgdGhpcy52aWV3RGF0ZSA9IG5ldyBEYXRlKHllYXIgKyBzdGVwLCBtb250aCwgMSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnZpZXdEYXRlID0gbmV3IERhdGUoeWVhciArIHN0ZXAgKiAxMCwgbW9udGgsIDEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0RGF0ZShkYXRlOiBEYXRlLCBvcGVuOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLnZpZXdEYXRlID0gbmV3IERhdGUoZGF0ZSk7XHJcbiAgICBjb25zdCBob3VyID0gdGhpcy5zZWxlY3RlZFBlcmlvZCA9PT0gJ0FNJ1xyXG4gICAgICA/IHRoaXMuc2VsZWN0ZWRIb3VyICUgMTJcclxuICAgICAgOiAodGhpcy5zZWxlY3RlZEhvdXIgJSAxMikgKyAxMjtcclxuXHJcbiAgICBjb25zdCBzZWxlY3RlZCA9IG5ldyBEYXRlKFxyXG4gICAgICBkYXRlLmdldEZ1bGxZZWFyKCksXHJcbiAgICAgIGRhdGUuZ2V0TW9udGgoKSxcclxuICAgICAgZGF0ZS5nZXREYXRlKCksXHJcbiAgICAgIGhvdXIsXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRNaW51dGVcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSBzZWxlY3RlZDtcclxuICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0FsZXJ0VGV4dCA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuZW1pdFNlbGVjdGlvbighb3Blbik7XHJcblxyXG4gICAgaWYgKG9wZW4pIHtcclxuICAgICAgdGhpcy5jYWxlbmRhck9wZW4gPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHNldE1vbnRoKG1vbnRoOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMudmlld0RhdGUuc2V0TW9udGgobW9udGgpO1xyXG4gICAgdGhpcy5jYWxlbmRhclZpZXcgPSAnZGF5JztcclxuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhckRheXMoKTtcclxuICB9XHJcblxyXG4gIHNldFllYXIoeWVhcjogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnZpZXdEYXRlLnNldEZ1bGxZZWFyKHllYXIpO1xyXG4gICAgdGhpcy5jYWxlbmRhclZpZXcgPSAnbW9udGgnO1xyXG4gICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyRGF5cygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TW9udGhOYW1lKGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMubW9udGhzW2luZGV4XTtcclxuICB9XHJcblxyXG4gIGdldERlY2FkZVN0YXJ0KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gTWF0aC5mbG9vcih0aGlzLnZpZXdEYXRlLmdldEZ1bGxZZWFyKCkgLyAxMCkgKiAxMDtcclxuICB9XHJcblxyXG4gIGlzU2FtZURhdGUoZDE6IERhdGUsIGQyOiBEYXRlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gZDEuZ2V0RGF0ZSgpID09PSBkMi5nZXREYXRlKCkgJiZcclxuICAgICAgZDEuZ2V0TW9udGgoKSA9PT0gZDIuZ2V0TW9udGgoKSAmJlxyXG4gICAgICBkMS5nZXRGdWxsWWVhcigpID09PSBkMi5nZXRGdWxsWWVhcigpO1xyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVDYWxlbmRhckRheXMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBkYXlzOiBEYXRlW10gPSBbXTtcclxuICAgIGNvbnN0IHllYXIgPSB0aGlzLnZpZXdEYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgICBjb25zdCBtb250aCA9IHRoaXMudmlld0RhdGUuZ2V0TW9udGgoKTtcclxuXHJcbiAgICBjb25zdCBmaXJzdERheSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCAxKTtcclxuICAgIGNvbnN0IG9mZnNldCA9IGZpcnN0RGF5LmdldERheSgpO1xyXG4gICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEgLSBvZmZzZXQpO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDI7IGkrKykge1xyXG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoc3RhcnREYXRlKTtcclxuICAgICAgZGF0ZS5zZXREYXRlKHN0YXJ0RGF0ZS5nZXREYXRlKCkgKyBpKTtcclxuICAgICAgZGF5cy5wdXNoKGRhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2FsZW5kYXJEYXlzID0gZGF5cztcclxuICB9XHJcblxyXG4gIGNsb3NlQ2FsZW5kYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhbGVuZGFyT3BlbiA9IGZhbHNlO1xyXG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkRGF0ZSAmJiB0aGlzLmlzUmVxdWlyZWQpIHtcclxuICAgICAgdGhpcy5pc0FsZXJ0VGV4dCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLm9uQmx1ckV2ZW50LmVtaXQoKTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICBoYW5kbGVPdXRzaWRlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNsaWNrZWRJbnNpZGUgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcclxuICAgIGlmICghY2xpY2tlZEluc2lkZSAmJiB0aGlzLmNhbGVuZGFyT3Blbikge1xyXG4gICAgICB0aGlzLmNsb3NlQ2FsZW5kYXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIGJ1aWxkU2VsZWN0ZWREYXRlRnJvbVN0YXRlKCk6IERhdGUge1xyXG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ2RhdGUtb25seScpIHtcclxuICAgICAgY29uc3QgYmFzZSA9IHRoaXMuc2VsZWN0ZWREYXRlID8/IHRoaXMudmlld0RhdGU7XHJcbiAgICAgIHJldHVybiBuZXcgRGF0ZShiYXNlLmdldEZ1bGxZZWFyKCksIGJhc2UuZ2V0TW9udGgoKSwgYmFzZS5nZXREYXRlKCksIDAsIDApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm1vZGUgPT09ICd0aW1lLW9ubHknKSB7XHJcbiAgICAgIGNvbnN0IGhvdXIgPSB0aGlzLnNlbGVjdGVkUGVyaW9kID09PSAnQU0nID8gdGhpcy5zZWxlY3RlZEhvdXIgJSAxMiA6ICh0aGlzLnNlbGVjdGVkSG91ciAlIDEyKSArIDEyO1xyXG4gICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICByZXR1cm4gbmV3IERhdGUobm93LmdldEZ1bGxZZWFyKCksIG5vdy5nZXRNb250aCgpLCBub3cuZ2V0RGF0ZSgpLCBob3VyLCB0aGlzLnNlbGVjdGVkTWludXRlKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGhvdXIgPSB0aGlzLnNlbGVjdGVkUGVyaW9kID09PSAnQU0nID8gdGhpcy5zZWxlY3RlZEhvdXIgJSAxMiA6ICh0aGlzLnNlbGVjdGVkSG91ciAlIDEyKSArIDEyO1xyXG4gICAgY29uc3QgYmFzZSA9IHRoaXMudmlld0RhdGUgPz8gbmV3IERhdGUoKTtcclxuICAgIHJldHVybiBuZXcgRGF0ZShiYXNlLmdldEZ1bGxZZWFyKCksIGJhc2UuZ2V0TW9udGgoKSwgYmFzZS5nZXREYXRlKCksIGhvdXIsIHRoaXMuc2VsZWN0ZWRNaW51dGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0U2VsZWN0aW9uKGNsb3NlQ2FsZW5kYXI6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5idWlsZFNlbGVjdGVkRGF0ZUZyb21TdGF0ZSgpO1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSBzZWxlY3RlZDtcclxuXHJcbiAgICBpZiAodGhpcy5tb2RlID09PSAnZGF0ZS1vbmx5Jykge1xyXG4gICAgICBjb25zdCBkYXRlU3RyaW5nID0gYCR7c2VsZWN0ZWQuZ2V0RnVsbFllYXIoKX0tJHsoc2VsZWN0ZWQuZ2V0TW9udGgoKSArIDEpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKX0tJHtzZWxlY3RlZC5nZXREYXRlKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfWA7XHJcbiAgICAgIHRoaXMuZGF0ZVNlbGVjdGVkLmVtaXQoZGF0ZVN0cmluZyk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMubW9kZSA9PT0gJ3RpbWUtb25seScpIHtcclxuICAgICAgY29uc3QgdGltZVN0cmluZyA9IGAke3NlbGVjdGVkLmdldEhvdXJzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfToke3NlbGVjdGVkLmdldE1pbnV0ZXMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9OjAwYDtcclxuICAgICAgdGhpcy5kYXRlU2VsZWN0ZWQuZW1pdCh0aW1lU3RyaW5nKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGRhdGVTdHJpbmcgPSBgJHtzZWxlY3RlZC5nZXRGdWxsWWVhcigpfS0keyhzZWxlY3RlZC5nZXRNb250aCgpICsgMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfS0ke3NlbGVjdGVkLmdldERhdGUoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9VCR7c2VsZWN0ZWQuZ2V0SG91cnMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9OiR7c2VsZWN0ZWQuZ2V0TWludXRlcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKX06MDBgO1xyXG4gICAgICB0aGlzLmRhdGVTZWxlY3RlZC5lbWl0KGRhdGVTdHJpbmcpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjbG9zZUNhbGVuZGFyKSB7XHJcbiAgICAgIHRoaXMuY2FsZW5kYXJPcGVuID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJkYXRlLXBpY2tlclwiIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ0ZXh0XCI+XHJcbiAgICBAaWYgKGlzUmVxdWlyZWQpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJyZXF1aXJlZFwiPjwvZGl2PlxyXG4gICAgfVxyXG5cclxuICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsXCI+e3sgbGFiZWwgfX08L2xhYmVsPlxyXG5cclxuICAgIEBpZiAoaWNvbkhlbHApIHtcclxuICAgICAgPGRpdiBjbGFzcz1cImhlbHAtaWNvblwiPlxyXG4gICAgICAgIDxpdXMtaWNvbi1tZCBpY29uTmFtZT1cImljb24taGVscFwiPjwvaXVzLWljb24tbWQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG5cclxuICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsXCI+OjwvbGFiZWw+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJpbnB1dC13cmFwcGVyXCI+XHJcbiAgICA8IS0tIE9yaWdlbiBkZWwgb3ZlcmxheSAtLT5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJjb250YWluZXItdGV4dGZpZWxkXCJcclxuICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcclxuICAgICAgICBmb2N1c2VkOiBjYWxlbmRhck9wZW4gfHwgZm9jdXNlZCxcclxuICAgICAgICBhbGVydDogIWNhbGVuZGFyT3BlbiAmJiAoZXJyb3IgfHwgaXNBbGVydFRleHQpICYmICFkaXNhYmxlZCxcclxuICAgICAgICBzZWxlY3RlZDogc2VsZWN0ZWREYXRlXHJcbiAgICAgIH1cIlxyXG4gICAgICAoY2xpY2spPVwidG9nZ2xlQ2FsZW5kYXIoKVwiXHJcbiAgICAgIGNka092ZXJsYXlPcmlnaW4gI29yaWdpbj1cImNka092ZXJsYXlPcmlnaW5cIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXRcIj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICBbdmFsdWVdPVwic2VsZWN0ZWREYXRlID8gZ2V0RGlzcGxheVZhbHVlKCkgOiAnJ1wiXHJcbiAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjbnQtaWNvbi1yaWdodFwiPlxyXG4gICAgICAgICAgPGl1cy1pY29uLW1kIGljb25OYW1lPVwiaWNvbi1jYWxlbmRhci10b2RheVwiPjwvaXVzLWljb24tbWQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSA9PT09PT09PSBPVkVSTEFZIChDREspID09PT09PT09IC0tPlxyXG4gICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgIGNka0Nvbm5lY3RlZE92ZXJsYXlcclxuICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcGVuXT1cImNhbGVuZGFyT3BlblwiXHJcbiAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luXT1cIm9yaWdpblwiXHJcbiAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25zXT1cIm92ZXJsYXlQb3NpdGlvbnNcIlxyXG4gICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheUhhc0JhY2tkcm9wXT1cImZhbHNlXCJcclxuICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlQdXNoXT1cInRydWVcIlxyXG4gICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheUZsZXhpYmxlRGltZW5zaW9uc109XCJmYWxzZVwiXHJcbiAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5UGFuZWxDbGFzc109XCInY2FsZW5kYXItb3ZlcmxheS1wYW5lbCdcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJjYWxlbmRhci1vdmVybGF5XCJcclxuICAgICAgICBbY2xhc3MudGltZS1vbmx5XT1cIm1vZGUgPT09ICd0aW1lLW9ubHknXCJcclxuICAgICAgICBbY2xhc3MuZGF0ZS1vbmx5XT1cIm1vZGUgPT09ICdkYXRlLW9ubHknXCJcclxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1jb250ZW50XCI+XHJcbiAgICAgICAgICBAaWYgKG1vZGUgIT09ICd0aW1lLW9ubHknKSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItc2lkZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgPGl1cy1idXR0b24tc3RhbmRhcmQtdGVydGlhcnlcclxuICAgICAgICAgICAgICAgIGljb25OYW1lPVwiaWNvbi1rZXlib2FyZC1hcnJvdy1sZWZ0XCJcclxuICAgICAgICAgICAgICAgIChidXR0b25DbGlja2VkKT1cInByZXYoKVwiXHJcbiAgICAgICAgICAgICAgPjwvaXVzLWJ1dHRvbi1zdGFuZGFyZC10ZXJ0aWFyeT5cclxuXHJcbiAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cImNhbGVuZGFyVmlldyA9IG5leHRWaWV3KGNhbGVuZGFyVmlldylcIj5cclxuICAgICAgICAgICAgICBAc3dpdGNoIChjYWxlbmRhclZpZXcpIHsgQGNhc2UgKCdkYXknKSB7XHJcbiAgICAgICAgICAgICAge3sgZ2V0TW9udGhOYW1lKHZpZXdEYXRlLmdldE1vbnRoKCkpIH19XHJcbiAgICAgICAgICAgICAge3sgdmlld0RhdGUuZ2V0RnVsbFllYXIoKSB9fVxyXG4gICAgICAgICAgICAgIH0gQGNhc2UgKCdtb250aCcpIHtcclxuICAgICAgICAgICAgICB7eyB2aWV3RGF0ZS5nZXRGdWxsWWVhcigpIH19XHJcbiAgICAgICAgICAgICAgfSBAY2FzZSAoJ3llYXInKSB7XHJcbiAgICAgICAgICAgICAge3sgZ2V0RGVjYWRlU3RhcnQoKSB9fS17eyBnZXREZWNhZGVTdGFydCgpICsgOSB9fVxyXG4gICAgICAgICAgICAgIH0gfVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgPGl1cy1idXR0b24tc3RhbmRhcmQtdGVydGlhcnlcclxuICAgICAgICAgICAgICAgIGljb25OYW1lPVwiaWNvbi1rZXlib2FyZC1hcnJvdy1yaWdodFwiXHJcbiAgICAgICAgICAgICAgICAoYnV0dG9uQ2xpY2tlZCk9XCJuZXh0KClcIlxyXG4gICAgICAgICAgICAgID48L2l1cy1idXR0b24tc3RhbmRhcmQtdGVydGlhcnk+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWJvZHlcIj5cclxuICAgICAgICAgICAgQHN3aXRjaCAoY2FsZW5kYXJWaWV3KSB7IEBjYXNlICgnZGF5Jykge1xyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBkYXlzXCI+XHJcbiAgICAgICAgICAgICAgQGZvciAoZGF5IG9mIGRheUxhYmVsczsgdHJhY2sgZGF5KSB7XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPnt7IGRheSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIH0gQGZvciAoZGF0ZSBvZiBjYWxlbmRhckRheXM7IHRyYWNrIGRhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjZWxsXCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJcclxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRlICYmIGlzU2FtZURhdGUoZGF0ZSwgc2VsZWN0ZWREYXRlKVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLm91dC1vZi1yYW5nZV09XCJkYXRlLmdldE1vbnRoKCkgIT09IHZpZXdEYXRlLmdldE1vbnRoKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RGF0ZShkYXRlLCB0cnVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRhdGUuZ2V0RGF0ZSgpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9IEBjYXNlICgnbW9udGgnKSB7XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIG1vbnRoc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKG0gb2YgbW9udGhzOyB0cmFjayBtOyBsZXQgaSA9ICRpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNlbGxcIiAoY2xpY2spPVwic2V0TW9udGgoaSlcIj57eyBtIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfSBAY2FzZSAoJ3llYXInKSB7XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIHllYXJzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgQGZvciAoaSBvZiB5ZWFyc0FycmF5OyB0cmFjayBpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2VsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5vdXQtb2YtcmFuZ2VdPVwiaSA9PT0gMCB8fCBpID09PSAxMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRZZWFyKGdldERlY2FkZVN0YXJ0KCkgLSAxICsgaSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXREZWNhZGVTdGFydCgpIC0gMSArIGkgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH0gfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH0gQGlmIChtb2RlICE9PSAnZGF0ZS1vbmx5Jykge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtc2VsZWN0b3JcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRpbWUtdGl0bGVcIj5cclxuICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgIHt7IHNlbGVjdGVkSG91ciB8IG51bWJlciA6IFwiMi4wXCIgfX06e3tcclxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRNaW51dGUgPT09IDAgPyBcIjAwXCIgOiAoc2VsZWN0ZWRNaW51dGUgfCBudW1iZXIgOiBcIjIuMFwiKVxyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgIHt7IHNlbGVjdGVkUGVyaW9kIH19XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGl1cy1zaW1wbGUtZGl2aWRlcj48L2l1cy1zaW1wbGUtZGl2aWRlcj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtY29sdW1uc1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gc2Nyb2xsYWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgQGZvciAoaCBvZiBob3VyczsgdHJhY2sgaCkge1xyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiaCA9PT0gc2VsZWN0ZWRIb3VyXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRIb3VyID0gaDtcclxuICAgICAgICAgICAgICAgICAgbW9kZSA9PT0gJ3RpbWUtb25seSdcclxuICAgICAgICAgICAgICAgICAgICA/IHNlbGVjdFRpbWUoKVxyXG4gICAgICAgICAgICAgICAgICAgIDogc2VsZWN0RGF0ZSh2aWV3RGF0ZSwgdHJ1ZSlcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIHt7IGggfCBudW1iZXIgOiBcIjIuMFwiIH19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gc2Nyb2xsYWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgQGZvciAobSBvZiBtaW51dGVzOyB0cmFjayBtKSB7XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJtID09PSBzZWxlY3RlZE1pbnV0ZVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkTWludXRlID0gbTtcclxuICAgICAgICAgICAgICAgICAgbW9kZSA9PT0gJ3RpbWUtb25seSdcclxuICAgICAgICAgICAgICAgICAgICA/IHNlbGVjdFRpbWUoKVxyXG4gICAgICAgICAgICAgICAgICAgIDogc2VsZWN0RGF0ZSh2aWV3RGF0ZSwgdHJ1ZSlcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIHt7IG0gfCBudW1iZXIgOiBcIjIuMFwiIH19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cIidBTScgPT09IHNlbGVjdGVkUGVyaW9kXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRQZXJpb2QgPSAnQU0nO1xyXG4gICAgICAgICAgICAgICAgICBtb2RlID09PSAndGltZS1vbmx5J1xyXG4gICAgICAgICAgICAgICAgICAgID8gc2VsZWN0VGltZSgpXHJcbiAgICAgICAgICAgICAgICAgICAgOiBzZWxlY3REYXRlKHZpZXdEYXRlLCBmYWxzZSlcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIEFNXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cIidQTScgPT09IHNlbGVjdGVkUGVyaW9kXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRQZXJpb2QgPSAnUE0nO1xyXG4gICAgICAgICAgICAgICAgICBtb2RlID09PSAndGltZS1vbmx5J1xyXG4gICAgICAgICAgICAgICAgICAgID8gc2VsZWN0VGltZSgpXHJcbiAgICAgICAgICAgICAgICAgICAgOiBzZWxlY3REYXRlKHZpZXdEYXRlLCBmYWxzZSlcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIFBNXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGl1cy1zaW1wbGUtZGl2aWRlcj48L2l1cy1zaW1wbGUtZGl2aWRlcj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwidG9kYXlcIiAoY2xpY2spPVwiZ29Ub1RvZGF5KClcIj5cclxuICAgICAgICBAaWYgKG1vZGUgPT09ICdkYXRlLW9ubHknKSB7IEZlY2hhIGFjdHVhbCB9IEBlbHNlIGlmIChtb2RlID09PVxyXG4gICAgICAgICd0aW1lLW9ubHknKSB7IEhvcmEgYWN0dWFsIH0gQGVsc2UgeyBGZWNoYSB5IGhvcmEgYWN0dWFsIH1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPCEtLSA9PT09PT09PSAvT1ZFUkxBWSAoQ0RLKSA9PT09PT09PSAtLT5cclxuICA8L2Rpdj5cclxuICBAaWYgKGhlbHBUZXh0ICYmIGZvY3VzZWQgJiYgIWVycm9yICYmICFpc0FsZXJ0VGV4dCkge1xyXG4gIDxkaXYgY2xhc3M9XCJoZWxwLXRleHRcIj5cclxuICAgIHt7IGhlbHBUZXh0IH19XHJcbiAgPC9kaXY+XHJcbiAgfSBAaWYgKChlcnJvclRleHQgfHwgaGVscFRleHRFcnJvcikgJiYgKGVycm9yIHx8IGlzQWxlcnRUZXh0KSkge1xyXG4gIDxkaXYgY2xhc3M9XCJoZWxwLXRleHQtZXJyb3JcIj5cclxuICAgIHt7IGVycm9yVGV4dCA/PyBoZWxwVGV4dEVycm9yIH19XHJcbiAgPC9kaXY+XHJcbiAgfVxyXG48L2Rpdj5cclxuIl19