coer-elements 0.0.48 → 0.0.50

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,6 @@
1
1
  import { Component, inject, viewChild, viewChildren } from '@angular/core';
2
2
  import { CoerTreeAccordion } from './coer-tree-accordion/coer-tree-accordion.component';
3
- import { breakpointSIGNAL, isModalOpenSIGNAL, isMenuOpenSIGNAL, navigationSIGNAL } from 'coer-elements/signals';
3
+ import { breakpointSIGNAL, isModalOpenSIGNAL, isMenuOpenSIGNAL, navigationSIGNAL, isLoadingSIGNAL } from 'coer-elements/signals';
4
4
  import { Tools, Breadcrumbs, Menu, Screen } from 'coer-elements/tools';
5
5
  import { Router } from '@angular/router';
6
6
  import * as i0 from "@angular/core";
@@ -28,6 +28,7 @@ export class CoerSidenav {
28
28
  this.isOpen = isMenuOpenSIGNAL;
29
29
  this._isModalOpen = isModalOpenSIGNAL;
30
30
  this._navigation = navigationSIGNAL;
31
+ this._isLoading = isLoadingSIGNAL;
31
32
  //Elements
32
33
  this.sidenav = viewChild.required('matSidenav');
33
34
  this.menuList = viewChildren(CoerTreeAccordion);
@@ -184,10 +185,10 @@ export class CoerSidenav {
184
185
  });
185
186
  }
186
187
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CoerSidenav, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
187
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "17.3.12", type: CoerSidenav, selector: "coer-sidenav", viewQueries: [{ propertyName: "sidenav", first: true, predicate: ["matSidenav"], descendants: true, isSignal: true }, { propertyName: "menuList", predicate: CoerTreeAccordion, descendants: true, isSignal: true }], ngImport: i0, template: "<mat-drawer-container [hasBackdrop]=\"backdrop\">\r\n <mat-drawer\r\n #matSidenav\r\n [opened]=\"isOpen()\"\r\n (opened)=\"isOpen.set(true)\"\r\n (closed)=\"isOpen.set(false)\"\r\n [mode]=\"mode\">\r\n <div *ngFor=\"let item of _navigation()\">\r\n <!-- Menu -->\r\n <div *ngIf=\"IsMenu(item); else OptionMenu\">\r\n <coer-tree-accordion\r\n [item]=\"item\"\r\n (clickMenuOption)=\"NavigateTo($event)\"\r\n (clickMenu)=\"MenuSelected($event)\"\r\n ></coer-tree-accordion>\r\n </div>\r\n\r\n <!-- Option Menu -->\r\n <ng-template #OptionMenu>\r\n <coer-menu-option\r\n [label]=\"item.label\"\r\n [icon]=\"item?.icon\"\r\n [path]=\"item?.path\"\r\n (clickMenuOption)=\"NavigateTo($event)\"\r\n ></coer-menu-option>\r\n </ng-template>\r\n\r\n <div class=\"separator\"></div>\r\n </div>\r\n\r\n <div [ngClass]=\"{ 'backdrop': _isModalOpen() }\"></div>\r\n </mat-drawer>\r\n\r\n <!-- Main Screen -->\r\n <mat-drawer-content [ngClass]=\"{ 'margin-left-40px': (!isOpen() && showAsideMenu) }\">\r\n <aside [ngClass]=\"{ 'side-nav': true, 'd-none': !showAsideMenu }\" (click)=\"Open($event)\">\r\n <div *ngFor=\"let item of _navigation()\" (click)=\"Open($event, item)\">\r\n <span [class]=\"'icon-container ' + SetIdentityClass(item.label)\">\r\n <i [class]=\"GetIcon(item)\"></i>\r\n </span>\r\n </div>\r\n\r\n <div [ngClass]=\"{ 'backdrop': _isModalOpen() }\"></div>\r\n </aside>\r\n\r\n <ng-content></ng-content>\r\n </mat-drawer-content>\r\n</mat-drawer-container>", styles: ["mat-drawer-container{height:calc(100vh - 45px)!important}mat-drawer-container .margin-left-40px{margin-left:40px!important}mat-drawer-container mat-drawer{width:auto;min-width:200px;background-color:var(--black)!important;z-index:1!important}mat-drawer-container mat-drawer div.mat-drawer-inner-container::-webkit-scrollbar{width:1px!important}mat-drawer-container mat-drawer div.mat-drawer-inner-container::-webkit-scrollbar-thumb{background-color:var(--gray)!important;border-radius:5px!important}mat-drawer-container mat-drawer div.mat-drawer-inner-container::-webkit-scrollbar-thumb:hover{background-color:var(--gray)!important}mat-drawer-container mat-drawer div.mat-drawer-inner-container::-webkit-scrollbar-thumb:active{background-color:var(--white)!important}mat-drawer-container mat-drawer i{font-size:16px!important}mat-drawer-container mat-drawer div.separator{border:.5px solid rgba(245,245,245,.041)!important}mat-drawer-container mat-drawer-content{margin-right:0!important}mat-drawer-container mat-drawer-content aside.side-nav{background-color:var(--black)!important;width:40px!important;position:fixed!important;left:0!important;top:45px!important;bottom:0!important;cursor:pointer!important}mat-drawer-container mat-drawer-content aside.side-nav span.icon-container{width:100%!important;height:49.6px!important;display:flex!important;align-items:center!important;justify-content:center!important;font-size:16px!important;border-bottom:1px solid rgba(245,245,245,.041)!important;color:var(--white)}mat-drawer-container mat-drawer-content aside.side-nav span.icon-container:hover{background-color:#2f2f2f!important}mat-drawer-container mat-drawer-content aside.side-nav span.icon-container.active-link{color:var(--orange)!important}mat-drawer-container div.backdrop{position:absolute!important;inset:0!important;background-color:#0000005b!important;z-index:1500!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "component", type: i2.MatDrawerContent, selector: "mat-drawer-content" }, { kind: "component", type: i2.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i3.CoerMenuOption, selector: "coer-menu-option", inputs: ["level", "label", "icon", "path", "tree"], outputs: ["clickMenuOption"] }, { kind: "component", type: i4.CoerTreeAccordion, selector: "coer-tree-accordion", inputs: ["level", "item", "tree"], outputs: ["clickMenuOption", "clickMenu"] }] }); }
188
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: CoerSidenav, selector: "coer-sidenav", viewQueries: [{ propertyName: "sidenav", first: true, predicate: ["matSidenav"], descendants: true, isSignal: true }, { propertyName: "menuList", predicate: CoerTreeAccordion, descendants: true, isSignal: true }], ngImport: i0, template: "<mat-drawer-container [hasBackdrop]=\"backdrop\">\r\n <mat-drawer\r\n #matSidenav\r\n [opened]=\"isOpen()\"\r\n (opened)=\"isOpen.set(true)\"\r\n (closed)=\"isOpen.set(false)\"\r\n [mode]=\"mode\">\r\n\r\n @if(!_isLoading()) {\r\n @if(_navigation().length > 0) {\r\n <div *ngFor=\"let item of _navigation()\">\r\n <!-- Menu -->\r\n <div *ngIf=\"IsMenu(item); else OptionMenu\">\r\n <coer-tree-accordion\r\n [item]=\"item\"\r\n (clickMenuOption)=\"NavigateTo($event)\"\r\n (clickMenu)=\"MenuSelected($event)\"\r\n ></coer-tree-accordion>\r\n </div>\r\n \r\n <!-- Option Menu -->\r\n <ng-template #OptionMenu>\r\n <coer-menu-option\r\n [label]=\"item.label\"\r\n [icon]=\"item?.icon\"\r\n [path]=\"item?.path\"\r\n (clickMenuOption)=\"NavigateTo($event)\"\r\n ></coer-menu-option>\r\n </ng-template>\r\n \r\n <div class=\"separator\"></div>\r\n </div>\r\n }\r\n\r\n @else {\r\n <coer-menu-option\r\n label=\"Empty\"\r\n icon=\"fa-solid fa-face-meh\"\r\n ></coer-menu-option>\r\n }\r\n }\r\n\r\n @else {\r\n <coer-menu-option\r\n label=\"LOADING\"\r\n icon=\"fa-solid fa-sync fa-spin\"\r\n ></coer-menu-option>\r\n }\r\n\r\n <div [ngClass]=\"{ 'backdrop': _isModalOpen() }\"></div>\r\n </mat-drawer>\r\n\r\n <!-- Main Screen -->\r\n <mat-drawer-content [ngClass]=\"{ 'margin-left-40px': (!isOpen() && showAsideMenu) }\">\r\n <aside [ngClass]=\"{ 'side-nav': true, 'd-none': !showAsideMenu }\" (click)=\"Open($event)\">\r\n <div *ngFor=\"let item of _navigation()\" (click)=\"Open($event, item)\">\r\n <span [class]=\"'icon-container ' + SetIdentityClass(item.label)\">\r\n <i [class]=\"GetIcon(item)\"></i>\r\n </span>\r\n </div>\r\n\r\n <div [ngClass]=\"{ 'backdrop': _isModalOpen() }\"></div>\r\n </aside>\r\n\r\n <ng-content></ng-content>\r\n </mat-drawer-content>\r\n</mat-drawer-container>", styles: ["mat-drawer-container{height:calc(100vh - 45px)!important}mat-drawer-container .margin-left-40px{margin-left:40px!important}mat-drawer-container mat-drawer{width:auto;min-width:200px;background-color:var(--black)!important;z-index:1!important}mat-drawer-container mat-drawer div.mat-drawer-inner-container::-webkit-scrollbar{width:1px!important}mat-drawer-container mat-drawer div.mat-drawer-inner-container::-webkit-scrollbar-thumb{background-color:var(--gray)!important;border-radius:5px!important}mat-drawer-container mat-drawer div.mat-drawer-inner-container::-webkit-scrollbar-thumb:hover{background-color:var(--gray)!important}mat-drawer-container mat-drawer div.mat-drawer-inner-container::-webkit-scrollbar-thumb:active{background-color:var(--white)!important}mat-drawer-container mat-drawer i{font-size:16px!important}mat-drawer-container mat-drawer div.separator{border:.5px solid rgba(245,245,245,.041)!important}mat-drawer-container mat-drawer-content{margin-right:0!important}mat-drawer-container mat-drawer-content aside.side-nav{background-color:var(--black)!important;width:40px!important;position:fixed!important;left:0!important;top:45px!important;bottom:0!important;cursor:pointer!important}mat-drawer-container mat-drawer-content aside.side-nav span.icon-container{width:100%!important;height:49.6px!important;display:flex!important;align-items:center!important;justify-content:center!important;font-size:16px!important;border-bottom:1px solid rgba(245,245,245,.041)!important;color:var(--white)}mat-drawer-container mat-drawer-content aside.side-nav span.icon-container:hover{background-color:#2f2f2f!important}mat-drawer-container mat-drawer-content aside.side-nav span.icon-container.active-link{color:var(--orange)!important}mat-drawer-container div.backdrop{position:absolute!important;inset:0!important;background-color:#0000005b!important;z-index:1500!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "component", type: i2.MatDrawerContent, selector: "mat-drawer-content" }, { kind: "component", type: i2.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i3.CoerMenuOption, selector: "coer-menu-option", inputs: ["level", "label", "icon", "path", "tree"], outputs: ["clickMenuOption"] }, { kind: "component", type: i4.CoerTreeAccordion, selector: "coer-tree-accordion", inputs: ["level", "item", "tree"], outputs: ["clickMenuOption", "clickMenu"] }] }); }
188
189
  }
189
190
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CoerSidenav, decorators: [{
190
191
  type: Component,
191
- args: [{ selector: 'coer-sidenav', template: "<mat-drawer-container [hasBackdrop]=\"backdrop\">\r\n <mat-drawer\r\n #matSidenav\r\n [opened]=\"isOpen()\"\r\n (opened)=\"isOpen.set(true)\"\r\n (closed)=\"isOpen.set(false)\"\r\n [mode]=\"mode\">\r\n <div *ngFor=\"let item of _navigation()\">\r\n <!-- Menu -->\r\n <div *ngIf=\"IsMenu(item); else OptionMenu\">\r\n <coer-tree-accordion\r\n [item]=\"item\"\r\n (clickMenuOption)=\"NavigateTo($event)\"\r\n (clickMenu)=\"MenuSelected($event)\"\r\n ></coer-tree-accordion>\r\n </div>\r\n\r\n <!-- Option Menu -->\r\n <ng-template #OptionMenu>\r\n <coer-menu-option\r\n [label]=\"item.label\"\r\n [icon]=\"item?.icon\"\r\n [path]=\"item?.path\"\r\n (clickMenuOption)=\"NavigateTo($event)\"\r\n ></coer-menu-option>\r\n </ng-template>\r\n\r\n <div class=\"separator\"></div>\r\n </div>\r\n\r\n <div [ngClass]=\"{ 'backdrop': _isModalOpen() }\"></div>\r\n </mat-drawer>\r\n\r\n <!-- Main Screen -->\r\n <mat-drawer-content [ngClass]=\"{ 'margin-left-40px': (!isOpen() && showAsideMenu) }\">\r\n <aside [ngClass]=\"{ 'side-nav': true, 'd-none': !showAsideMenu }\" (click)=\"Open($event)\">\r\n <div *ngFor=\"let item of _navigation()\" (click)=\"Open($event, item)\">\r\n <span [class]=\"'icon-container ' + SetIdentityClass(item.label)\">\r\n <i [class]=\"GetIcon(item)\"></i>\r\n </span>\r\n </div>\r\n\r\n <div [ngClass]=\"{ 'backdrop': _isModalOpen() }\"></div>\r\n </aside>\r\n\r\n <ng-content></ng-content>\r\n </mat-drawer-content>\r\n</mat-drawer-container>", styles: ["mat-drawer-container{height:calc(100vh - 45px)!important}mat-drawer-container .margin-left-40px{margin-left:40px!important}mat-drawer-container mat-drawer{width:auto;min-width:200px;background-color:var(--black)!important;z-index:1!important}mat-drawer-container mat-drawer div.mat-drawer-inner-container::-webkit-scrollbar{width:1px!important}mat-drawer-container mat-drawer div.mat-drawer-inner-container::-webkit-scrollbar-thumb{background-color:var(--gray)!important;border-radius:5px!important}mat-drawer-container mat-drawer div.mat-drawer-inner-container::-webkit-scrollbar-thumb:hover{background-color:var(--gray)!important}mat-drawer-container mat-drawer div.mat-drawer-inner-container::-webkit-scrollbar-thumb:active{background-color:var(--white)!important}mat-drawer-container mat-drawer i{font-size:16px!important}mat-drawer-container mat-drawer div.separator{border:.5px solid rgba(245,245,245,.041)!important}mat-drawer-container mat-drawer-content{margin-right:0!important}mat-drawer-container mat-drawer-content aside.side-nav{background-color:var(--black)!important;width:40px!important;position:fixed!important;left:0!important;top:45px!important;bottom:0!important;cursor:pointer!important}mat-drawer-container mat-drawer-content aside.side-nav span.icon-container{width:100%!important;height:49.6px!important;display:flex!important;align-items:center!important;justify-content:center!important;font-size:16px!important;border-bottom:1px solid rgba(245,245,245,.041)!important;color:var(--white)}mat-drawer-container mat-drawer-content aside.side-nav span.icon-container:hover{background-color:#2f2f2f!important}mat-drawer-container mat-drawer-content aside.side-nav span.icon-container.active-link{color:var(--orange)!important}mat-drawer-container div.backdrop{position:absolute!important;inset:0!important;background-color:#0000005b!important;z-index:1500!important}\n"] }]
192
+ args: [{ selector: 'coer-sidenav', template: "<mat-drawer-container [hasBackdrop]=\"backdrop\">\r\n <mat-drawer\r\n #matSidenav\r\n [opened]=\"isOpen()\"\r\n (opened)=\"isOpen.set(true)\"\r\n (closed)=\"isOpen.set(false)\"\r\n [mode]=\"mode\">\r\n\r\n @if(!_isLoading()) {\r\n @if(_navigation().length > 0) {\r\n <div *ngFor=\"let item of _navigation()\">\r\n <!-- Menu -->\r\n <div *ngIf=\"IsMenu(item); else OptionMenu\">\r\n <coer-tree-accordion\r\n [item]=\"item\"\r\n (clickMenuOption)=\"NavigateTo($event)\"\r\n (clickMenu)=\"MenuSelected($event)\"\r\n ></coer-tree-accordion>\r\n </div>\r\n \r\n <!-- Option Menu -->\r\n <ng-template #OptionMenu>\r\n <coer-menu-option\r\n [label]=\"item.label\"\r\n [icon]=\"item?.icon\"\r\n [path]=\"item?.path\"\r\n (clickMenuOption)=\"NavigateTo($event)\"\r\n ></coer-menu-option>\r\n </ng-template>\r\n \r\n <div class=\"separator\"></div>\r\n </div>\r\n }\r\n\r\n @else {\r\n <coer-menu-option\r\n label=\"Empty\"\r\n icon=\"fa-solid fa-face-meh\"\r\n ></coer-menu-option>\r\n }\r\n }\r\n\r\n @else {\r\n <coer-menu-option\r\n label=\"LOADING\"\r\n icon=\"fa-solid fa-sync fa-spin\"\r\n ></coer-menu-option>\r\n }\r\n\r\n <div [ngClass]=\"{ 'backdrop': _isModalOpen() }\"></div>\r\n </mat-drawer>\r\n\r\n <!-- Main Screen -->\r\n <mat-drawer-content [ngClass]=\"{ 'margin-left-40px': (!isOpen() && showAsideMenu) }\">\r\n <aside [ngClass]=\"{ 'side-nav': true, 'd-none': !showAsideMenu }\" (click)=\"Open($event)\">\r\n <div *ngFor=\"let item of _navigation()\" (click)=\"Open($event, item)\">\r\n <span [class]=\"'icon-container ' + SetIdentityClass(item.label)\">\r\n <i [class]=\"GetIcon(item)\"></i>\r\n </span>\r\n </div>\r\n\r\n <div [ngClass]=\"{ 'backdrop': _isModalOpen() }\"></div>\r\n </aside>\r\n\r\n <ng-content></ng-content>\r\n </mat-drawer-content>\r\n</mat-drawer-container>", styles: ["mat-drawer-container{height:calc(100vh - 45px)!important}mat-drawer-container .margin-left-40px{margin-left:40px!important}mat-drawer-container mat-drawer{width:auto;min-width:200px;background-color:var(--black)!important;z-index:1!important}mat-drawer-container mat-drawer div.mat-drawer-inner-container::-webkit-scrollbar{width:1px!important}mat-drawer-container mat-drawer div.mat-drawer-inner-container::-webkit-scrollbar-thumb{background-color:var(--gray)!important;border-radius:5px!important}mat-drawer-container mat-drawer div.mat-drawer-inner-container::-webkit-scrollbar-thumb:hover{background-color:var(--gray)!important}mat-drawer-container mat-drawer div.mat-drawer-inner-container::-webkit-scrollbar-thumb:active{background-color:var(--white)!important}mat-drawer-container mat-drawer i{font-size:16px!important}mat-drawer-container mat-drawer div.separator{border:.5px solid rgba(245,245,245,.041)!important}mat-drawer-container mat-drawer-content{margin-right:0!important}mat-drawer-container mat-drawer-content aside.side-nav{background-color:var(--black)!important;width:40px!important;position:fixed!important;left:0!important;top:45px!important;bottom:0!important;cursor:pointer!important}mat-drawer-container mat-drawer-content aside.side-nav span.icon-container{width:100%!important;height:49.6px!important;display:flex!important;align-items:center!important;justify-content:center!important;font-size:16px!important;border-bottom:1px solid rgba(245,245,245,.041)!important;color:var(--white)}mat-drawer-container mat-drawer-content aside.side-nav span.icon-container:hover{background-color:#2f2f2f!important}mat-drawer-container mat-drawer-content aside.side-nav span.icon-container.active-link{color:var(--orange)!important}mat-drawer-container div.backdrop{position:absolute!important;inset:0!important;background-color:#0000005b!important;z-index:1500!important}\n"] }]
192
193
  }], ctorParameters: () => [] });
193
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lci1zaWRlbmF2LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZXItZWxlbWVudHMvY29tcG9uZW50cy9saWIvY29lci1zaWRlbmF2L2NvZXItc2lkZW5hdi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2VyLWVsZW1lbnRzL2NvbXBvbmVudHMvbGliL2NvZXItc2lkZW5hdi9jb2VyLXNpZGVuYXYuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQTBCLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hILE9BQU8sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7OztBQU96QyxNQUFNLE9BQU8sV0FBVztJQWNwQixRQUFRO0lBQ1IsSUFBYyxRQUFRO1FBQ2xCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELFFBQVE7SUFDUixJQUFjLElBQUk7UUFDZCxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FB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LGNBQWMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7b0JBQ25GLE9BQU87Z0JBQ1gsQ0FBQztZQUNMLENBQUM7WUFFRCxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzsrR0FyTlEsV0FBVzttR0FBWCxXQUFXLHlMQVljLGlCQUFpQixnRUN6QnZELGszREErQ3VCOzs0RkRsQ1YsV0FBVztrQkFMdkIsU0FBUzsrQkFDSSxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBXcml0YWJsZVNpZ25hbCwgZWZmZWN0LCBpbmplY3QsIHZpZXdDaGlsZCwgdmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElNZW51LCBJTWVudVNlbGVjdGVkLCBJTWVudU9wdGlvblNlbGVjdGVkLCBJU2NyZWVuU2l6ZSB9IGZyb20gJ2NvZXItZWxlbWVudHMvaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IENvZXJUcmVlQWNjb3JkaW9uIH0gZnJvbSAnLi9jb2VyLXRyZWUtYWNjb3JkaW9uL2NvZXItdHJlZS1hY2NvcmRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgYnJlYWtwb2ludFNJR05BTCwgaXNNb2RhbE9wZW5TSUdOQUwsIGlzTWVudU9wZW5TSUdOQUwsIG5hdmlnYXRpb25TSUdOQUwgfSBmcm9tICdjb2VyLWVsZW1lbnRzL3NpZ25hbHMnO1xyXG5pbXBvcnQgeyBUb29scywgQnJlYWRjcnVtYnMsIE1lbnUsIFNjcmVlbiB9IGZyb20gJ2NvZXItZWxlbWVudHMvdG9vbHMnO1xyXG5pbXBvcnQgeyBNYXREcmF3ZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdjb2VyLXNpZGVuYXYnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvZXItc2lkZW5hdi5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybDogJy4vY29lci1zaWRlbmF2LmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29lclNpZGVuYXYge1xyXG5cclxuICAgIC8vSW5qZWN0aW9uc1xyXG4gICAgcHJpdmF0ZSBfcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcblxyXG4gICAgLy9zaWduYWxzXHJcbiAgICBwcm90ZWN0ZWQgaXNPcGVuOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IGlzTWVudU9wZW5TSUdOQUw7XHJcbiAgICBwcm90ZWN0ZWQgX2lzTW9kYWxPcGVuOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IGlzTW9kYWxPcGVuU0lHTkFMO1xyXG4gICAgcHJvdGVjdGVkIF9uYXZpZ2F0aW9uOiBXcml0YWJsZVNpZ25hbDxJTWVudVtdPiA9IG5hdmlnYXRpb25TSUdOQUw7XHJcblxyXG4gICAgLy9FbGVtZW50c1xyXG4gICAgcHJvdGVjdGVkIHNpZGVuYXYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8TWF0RHJhd2VyPignbWF0U2lkZW5hdicpO1xyXG4gICAgcHJvdGVjdGVkIG1lbnVMaXN0ID0gdmlld0NoaWxkcmVuKENvZXJUcmVlQWNjb3JkaW9uKTtcclxuXHJcbiAgICAvL2dldHRlclxyXG4gICAgcHJvdGVjdGVkIGdldCBiYWNrZHJvcCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gWyd4cycsICdzbScsICdtZCddLmluY2x1ZGVzKGJyZWFrcG9pbnRTSUdOQUwoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy9nZXR0ZXJcclxuICAgIHByb3RlY3RlZCBnZXQgbW9kZSgpOiAnb3ZlcicgfCAncHVzaCcge1xyXG4gICAgICAgIHJldHVybiBbJ3hzJywgJ3NtJywgJ21kJ10uaW5jbHVkZXMoYnJlYWtwb2ludFNJR05BTCgpKSA/ICdvdmVyJyA6ICdwdXNoJztcclxuICAgIH1cclxuXHJcbiAgICAvL2dldHRlclxyXG4gICAgcHJvdGVjdGVkIGdldCBzaG93QXNpZGVNZW51KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBbJ3hsJywgJ3h4bCddLmluY2x1ZGVzKGJyZWFrcG9pbnRTSUdOQUwoKSkgJiYgIXRoaXMuaXNPcGVuKClcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICB0aGlzLkJhY2tCdXR0b25Ccm93c2VyKCk7XHJcblxyXG4gICAgICAgIHRoaXMuaXNPcGVuLnNldChbJ3h4bCddLmluY2x1ZGVzKFNjcmVlbi5CUkVBS1BPSU5UKSk7XHJcblxyXG4gICAgICAgIFNjcmVlbi5SZXNpemUuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgbmV4dDogKHsgYnJlYWtwb2luIH06IElTY3JlZW5TaXplKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBicmVha3BvaW50U0lHTkFMLnNldChicmVha3BvaW4pO1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5iYWNrZHJvcCkgdGhpcy5DbG9zZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7IFxyXG4gICAgfSBcclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcm90ZWN0ZWQgTmF2aWdhdGVUbyhzZWxlY3RlZE9wdGlvbjogSU1lbnVPcHRpb25TZWxlY3RlZCkge1xyXG4gICAgICAgIGxldCB1cmwgPSBgJHtzZWxlY3RlZE9wdGlvbi5wYXRofWA7XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkT3B0aW9uLnF1ZXJ5UGFyYW1zLmxlbmd0aCA+IDApIHVybCArPSBgPyR7c2VsZWN0ZWRPcHRpb24ucXVlcnlQYXJhbXN9YDtcclxuICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmwpO1xyXG5cclxuICAgICAgICAvL1NldCBhY3RpdmUgbGlua1xyXG4gICAgICAgIHRoaXMuU2V0QWN0aXZlTGluayhzZWxlY3RlZE9wdGlvbik7XHJcblxyXG4gICAgICAgIC8vQ2xvc2UgTWVudVxyXG4gICAgICAgIGlmKHNlbGVjdGVkT3B0aW9uLmxldmVsID09IDEpIHtcclxuICAgICAgICAgICAgZm9yKGNvbnN0IG1lbnVMdjEgb2YgdGhpcy5tZW51TGlzdCgpKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IoY29uc3QgbWVudUx2MiBvZiBtZW51THYxLm1lbnVMaXN0LnRvQXJyYXkoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG1lbnVMdjIuQ2xvc2UoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIG1lbnVMdjEuQ2xvc2UoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwdWJsaWMgU2V0QWN0aXZlTGluayhzZWxlY3RlZE9wdGlvbjogSU1lbnVPcHRpb25TZWxlY3RlZCB8IG51bGwpOiB2b2lkIHtcclxuICAgICAgICBpZiAoc2VsZWN0ZWRPcHRpb24pIHtcclxuICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb24gPSBUb29scy5CcmVha1JlZmVyZW5jZShzZWxlY3RlZE9wdGlvbik7XHJcbiAgICAgICAgICAgIE1lbnUuU2V0U2VsZWN0ZWRPcHRpb24oc2VsZWN0ZWRPcHRpb24pO1xyXG5cclxuICAgICAgICAgICAgbGV0IGNvbGxlY3Rpb246IEVsZW1lbnRbXSA9IFtdO1xyXG4gICAgICAgICAgICBjb2xsZWN0aW9uID0gY29sbGVjdGlvbi5jb25jYXQoQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdtYXQtZHJhd2VyLWNvbnRhaW5lciBzcGFuLmljb24tY29udGFpbmVyJykpKTtcclxuICAgICAgICAgICAgY29sbGVjdGlvbiA9IGNvbGxlY3Rpb24uY29uY2F0KEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnbWF0LWRyYXdlci1jb250YWluZXIgc3Bhbi5sYWJlbC1jb250YWluZXInKSkpO1xyXG5cclxuICAgICAgICAgICAgLy9SZW1vdmUgYWN0aXZlLWxpbmtcclxuICAgICAgICAgICAgZm9yKGNvbnN0IGVsZW1lbnQgb2YgY29sbGVjdGlvbikge1xyXG4gICAgICAgICAgICAgICAgaWYoZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2FjdGl2ZS1saW5rJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZS1saW5rJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vQWRkIGFjdGl2ZS1saW5rXHJcbiAgICAgICAgICAgIGNvbnN0IGxldmVscyA9IHNlbGVjdGVkT3B0aW9uLnRyZWUubGVuZ3RoO1xyXG4gICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgbGV2ZWxzOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGZvcihjb25zdCBlbGVtZW50IG9mIGNvbGxlY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpZGVudGl0eUNsYXNzID0gdGhpcy5HZXRJZGVudGl0eUNsYXNzKHNlbGVjdGVkT3B0aW9uLnRyZWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhpZGVudGl0eUNsYXNzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZS1saW5rJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkT3B0aW9uLnRyZWUucG9wKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHVibGljIE9wZW4oZXZlbnQ6IE1vdXNlRXZlbnQsIGl0ZW06IElNZW51IHwgbnVsbCA9IG51bGwpOiB2b2lkIHtcclxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmlzT3BlbigpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuLnNldCh0cnVlKTtcclxuICAgICAgICAgICAgdGhpcy5zaWRlbmF2KCkub3BlbigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwdWJsaWMgQ2xvc2UoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5pc09wZW4uc2V0KGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5zaWRlbmF2KCkuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHVibGljIFRvZ2dsZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNpZGVuYXYoKS50b2dnbGUoKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcm90ZWN0ZWQgTWVudVNlbGVjdGVkKHNlbGVjdGVkTWVudTogSU1lbnVTZWxlY3RlZCkge1xyXG4gICAgICAgIGlmIChzZWxlY3RlZE1lbnUubGV2ZWwgPT0gMSkge1xyXG4gICAgICAgICAgICBmb3IoY29uc3QgbWVudUx2MSBvZiB0aGlzLm1lbnVMaXN0KCkpIHtcclxuICAgICAgICAgICAgICAgIGlmKG1lbnVMdjEuaXRlbS5sYWJlbCAhPSBzZWxlY3RlZE1lbnUubGFiZWwpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yKGNvbnN0IG1lbnVMdjIgb2YgbWVudUx2MS5tZW51TGlzdC50b0FycmF5KCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVudUx2Mi5DbG9zZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbWVudUx2MS5DbG9zZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByb3RlY3RlZCBJc01lbnUgPSAoaXRlbTogSU1lbnUpOiBib29sZWFuID0+IGl0ZW0uaGFzT3duUHJvcGVydHkoJ2l0ZW1zJykgJiYgVG9vbHMuSXNOb3RPbmx5V2hpdGVTcGFjZShpdGVtLml0ZW1zKTtcclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcm90ZWN0ZWQgR2V0SWNvbiA9IChpdGVtOiBJTWVudSk6IHN0cmluZyA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0gJiYgaXRlbS5oYXNPd25Qcm9wZXJ0eSgnaWNvbicpICYmIGl0ZW0uaWNvbiEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gaXRlbS5pY29uIVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuSXNNZW51KGl0ZW0pXHJcbiAgICAgICAgICAgID8gJ2ZhLXNvbGlkIGZhLWJhcnMnXHJcbiAgICAgICAgICAgIDogJ2JpIGJpLXJlY29yZC1maWxsJztcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcm90ZWN0ZWQgU2V0SWRlbnRpdHlDbGFzcyA9IChsYWJlbDogU3RyaW5nKTogc3RyaW5nID0+IHtcclxuICAgICAgICBsZXQgaWRlbnRpdHkgPSBgbHYxJHtsYWJlbH1gO1xyXG4gICAgICAgIGlmKGlkZW50aXR5LmluY2x1ZGVzKCcgJykpIGlkZW50aXR5ID0gaWRlbnRpdHkucmVwbGFjZUFsbCgnICcsICcnKTtcclxuICAgICAgICByZXR1cm4gaWRlbnRpdHkudG9Mb3dlckNhc2UoKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcml2YXRlIEdldElkZW50aXR5Q2xhc3ModHJlZTogSU1lbnVbXSk6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IGlkZW50aXR5OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IHRyZWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWRlbnRpdHkgKz0gYGx2JHtpICsgMX0ke3RyZWVbaV0ubGFiZWx9LWA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZihpZGVudGl0eS5lbmRzV2l0aCgnLScpKSBpZGVudGl0eSA9IGlkZW50aXR5LnNsaWNlKDAsIC0xKTtcclxuICAgICAgICBpZihpZGVudGl0eS5pbmNsdWRlcygnICcpKSBpZGVudGl0eSA9IGlkZW50aXR5LnJlcGxhY2VBbGwoJyAnLCAnJyk7XHJcbiAgICAgICAgcmV0dXJuIGlkZW50aXR5LnRvTG93ZXJDYXNlKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJpdmF0ZSBCYWNrQnV0dG9uQnJvd3NlcigpIHtcclxuICAgICAgICBjb25zdCBRVUVSWV9TRUxFQ1RPUiA9ICdjb2VyLW1lbnUtb3B0aW9uW25nLXJlZmxlY3QtcGF0aD1cIltwYXRoXVwiXSBtYXQtbmF2LWxpc3QuY29lci1tZW51LW9wdGlvbic7XHJcblxyXG4gICAgICAgIFNjcmVlbi5CYWNrQnV0dG9uQnJvd3Nlci5zdWJzY3JpYmUodG9QYXRoID0+IHtcclxuICAgICAgICAgICAgaWYgKHRvUGF0aC5pbmNsdWRlcygnLyMvJykpIHRvUGF0aCA9IHRvUGF0aC5zcGxpdCgnLyMnKVsxXTtcclxuICAgICAgICAgICAgaWYgKHRvUGF0aC5pbmNsdWRlcygnPycpKSB0b1BhdGggPSB0b1BhdGguc3BsaXQoJz8nKVswXTtcclxuXHJcbiAgICAgICAgICAgIC8vVmFsaWRhdGUgcGF0aFxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IG1vZHVsZSBvZiBuYXZpZ2F0aW9uU0lHTkFMKCkpIHtcclxuICAgICAgICAgICAgICAgIGlmIChtb2R1bGUuaXRlbXMpIGZvciAoY29uc3Qgc3ViTW9kdWxlIG9mIG1vZHVsZS5pdGVtcykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vTGV2ZWwgVGhyZWVcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc3ViTW9kdWxlLml0ZW1zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcihjb25zdCBpdGVtIG9mIHN1Yk1vZHVsZS5pdGVtcykgaWYgKGl0ZW0ucGF0aCA9PT0gdG9QYXRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihRVUVSWV9TRUxFQ1RPUi5yZXBsYWNlKCdbcGF0aF0nLCB0b1BhdGgpKSBhcyBhbnkpPy5jbGljaygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAvL0xldmVsIFR3b1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN1Yk1vZHVsZS5wYXRoID09PSB0b1BhdGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoUVVFUllfU0VMRUNUT1IucmVwbGFjZSgnW3BhdGhdJywgdG9QYXRoKSkgYXMgYW55KT8uY2xpY2soKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvL0xldmVsIE9uZVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobW9kdWxlLnBhdGggPT09IHRvUGF0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFFVRVJZX1NFTEVDVE9SLnJlcGxhY2UoJ1twYXRoXScsIHRvUGF0aCkpIGFzIGFueSk/LmNsaWNrKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBCcmVhZGNydW1icy5SZW1vdmUodG9QYXRoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufSIsIjxtYXQtZHJhd2VyLWNvbnRhaW5lciBbaGFzQmFja2Ryb3BdPVwiYmFja2Ryb3BcIj5cclxuICAgIDxtYXQtZHJhd2VyXHJcbiAgICAgICAgI21hdFNpZGVuYXZcclxuICAgICAgICBbb3BlbmVkXT1cImlzT3BlbigpXCJcclxuICAgICAgICAob3BlbmVkKT1cImlzT3Blbi5zZXQodHJ1ZSlcIlxyXG4gICAgICAgIChjbG9zZWQpPVwiaXNPcGVuLnNldChmYWxzZSlcIlxyXG4gICAgICAgIFttb2RlXT1cIm1vZGVcIj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIF9uYXZpZ2F0aW9uKClcIj5cclxuICAgICAgICAgICAgPCEtLSBNZW51IC0tPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiSXNNZW51KGl0ZW0pOyBlbHNlIE9wdGlvbk1lbnVcIj5cclxuICAgICAgICAgICAgICAgIDxjb2VyLXRyZWUtYWNjb3JkaW9uXHJcbiAgICAgICAgICAgICAgICAgICAgW2l0ZW1dPVwiaXRlbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrTWVudU9wdGlvbik9XCJOYXZpZ2F0ZVRvKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGlja01lbnUpPVwiTWVudVNlbGVjdGVkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgPjwvY29lci10cmVlLWFjY29yZGlvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIE9wdGlvbiBNZW51IC0tPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI09wdGlvbk1lbnU+XHJcbiAgICAgICAgICAgICAgICA8Y29lci1tZW51LW9wdGlvblxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJpdGVtLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCJpdGVtPy5pY29uXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGF0aF09XCJpdGVtPy5wYXRoXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2tNZW51T3B0aW9uKT1cIk5hdmlnYXRlVG8oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICA+PC9jb2VyLW1lbnUtb3B0aW9uPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlcGFyYXRvclwiPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgJ2JhY2tkcm9wJzogX2lzTW9kYWxPcGVuKCkgfVwiPjwvZGl2PlxyXG4gICAgPC9tYXQtZHJhd2VyPlxyXG5cclxuICAgIDwhLS0gTWFpbiBTY3JlZW4gLS0+XHJcbiAgICA8bWF0LWRyYXdlci1jb250ZW50IFtuZ0NsYXNzXT1cInsgJ21hcmdpbi1sZWZ0LTQwcHgnOiAoIWlzT3BlbigpICYmIHNob3dBc2lkZU1lbnUpIH1cIj5cclxuICAgICAgICA8YXNpZGUgW25nQ2xhc3NdPVwieyAnc2lkZS1uYXYnOiB0cnVlLCAnZC1ub25lJzogIXNob3dBc2lkZU1lbnUgfVwiIChjbGljayk9XCJPcGVuKCRldmVudClcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBfbmF2aWdhdGlvbigpXCIgKGNsaWNrKT1cIk9wZW4oJGV2ZW50LCBpdGVtKVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzXT1cIidpY29uLWNvbnRhaW5lciAnICsgU2V0SWRlbnRpdHlDbGFzcyhpdGVtLmxhYmVsKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJHZXRJY29uKGl0ZW0pXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyAnYmFja2Ryb3AnOiBfaXNNb2RhbE9wZW4oKSB9XCI+PC9kaXY+XHJcbiAgICAgICAgPC9hc2lkZT5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgPC9tYXQtZHJhd2VyLWNvbnRlbnQ+XHJcbjwvbWF0LWRyYXdlci1jb250YWluZXI+Il19
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lci1zaWRlbmF2LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZXItZWxlbWVudHMvY29tcG9uZW50cy9saWIvY29lci1zaWRlbmF2L2NvZXItc2lkZW5hdi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2VyLWVsZW1lbnRzL2NvbXBvbmVudHMvbGliL2NvZXItc2lkZW5hdi9jb2VyLXNpZGVuYXYuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBa0IsTUFBTSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDeEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pJLE9BQU8sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7OztBQU96QyxNQUFNLE9BQU8sV0FBVztJQWVwQixRQUFRO0lBQ1IsSUFBYyxRQUFRO1FBQ2xCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELFFBQVE7SUFDUixJQUFjLElBQUk7UUFDZCxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFD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RUFBRSxDQUFDO29CQUM3QixRQUFRLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7b0JBQ25GLE9BQU87Z0JBQ1gsQ0FBQztZQUNMLENBQUM7WUFFRCxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzsrR0F0TlEsV0FBVzttR0FBWCxXQUFXLHlMQWFjLGlCQUFpQixnRUMxQnZELDJpRkFrRXVCOzs0RkRyRFYsV0FBVztrQkFMdkIsU0FBUzsrQkFDSSxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBXcml0YWJsZVNpZ25hbCwgaW5qZWN0LCB2aWV3Q2hpbGQsIHZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJTWVudSwgSU1lbnVTZWxlY3RlZCwgSU1lbnVPcHRpb25TZWxlY3RlZCwgSVNjcmVlblNpemUgfSBmcm9tICdjb2VyLWVsZW1lbnRzL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBDb2VyVHJlZUFjY29yZGlvbiB9IGZyb20gJy4vY29lci10cmVlLWFjY29yZGlvbi9jb2VyLXRyZWUtYWNjb3JkaW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IGJyZWFrcG9pbnRTSUdOQUwsIGlzTW9kYWxPcGVuU0lHTkFMLCBpc01lbnVPcGVuU0lHTkFMLCBuYXZpZ2F0aW9uU0lHTkFMLCBpc0xvYWRpbmdTSUdOQUwgfSBmcm9tICdjb2VyLWVsZW1lbnRzL3NpZ25hbHMnO1xyXG5pbXBvcnQgeyBUb29scywgQnJlYWRjcnVtYnMsIE1lbnUsIFNjcmVlbiB9IGZyb20gJ2NvZXItZWxlbWVudHMvdG9vbHMnO1xyXG5pbXBvcnQgeyBNYXREcmF3ZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdjb2VyLXNpZGVuYXYnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvZXItc2lkZW5hdi5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybDogJy4vY29lci1zaWRlbmF2LmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29lclNpZGVuYXYge1xyXG5cclxuICAgIC8vSW5qZWN0aW9uc1xyXG4gICAgcHJpdmF0ZSBfcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcblxyXG4gICAgLy9zaWduYWxzXHJcbiAgICBwcm90ZWN0ZWQgaXNPcGVuOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IGlzTWVudU9wZW5TSUdOQUw7XHJcbiAgICBwcm90ZWN0ZWQgX2lzTW9kYWxPcGVuOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IGlzTW9kYWxPcGVuU0lHTkFMO1xyXG4gICAgcHJvdGVjdGVkIF9uYXZpZ2F0aW9uOiBXcml0YWJsZVNpZ25hbDxJTWVudVtdPiA9IG5hdmlnYXRpb25TSUdOQUw7XHJcbiAgICBwcm90ZWN0ZWQgX2lzTG9hZGluZzogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj4gPSBpc0xvYWRpbmdTSUdOQUw7XHJcblxyXG4gICAgLy9FbGVtZW50c1xyXG4gICAgcHJvdGVjdGVkIHNpZGVuYXYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8TWF0RHJhd2VyPignbWF0U2lkZW5hdicpO1xyXG4gICAgcHJvdGVjdGVkIG1lbnVMaXN0ID0gdmlld0NoaWxkcmVuKENvZXJUcmVlQWNjb3JkaW9uKTtcclxuXHJcbiAgICAvL2dldHRlclxyXG4gICAgcHJvdGVjdGVkIGdldCBiYWNrZHJvcCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gWyd4cycsICdzbScsICdtZCddLmluY2x1ZGVzKGJyZWFrcG9pbnRTSUdOQUwoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy9nZXR0ZXJcclxuICAgIHByb3RlY3RlZCBnZXQgbW9kZSgpOiAnb3ZlcicgfCAncHVzaCcge1xyXG4gICAgICAgIHJldHVybiBbJ3hzJywgJ3NtJywgJ21kJ10uaW5jbHVkZXMoYnJlYWtwb2ludFNJR05BTCgpKSA/ICdvdmVyJyA6ICdwdXNoJztcclxuICAgIH1cclxuXHJcbiAgICAvL2dldHRlclxyXG4gICAgcHJvdGVjdGVkIGdldCBzaG93QXNpZGVNZW51KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBbJ3hsJywgJ3h4bCddLmluY2x1ZGVzKGJyZWFrcG9pbnRTSUdOQUwoKSkgJiYgIXRoaXMuaXNPcGVuKClcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICB0aGlzLkJhY2tCdXR0b25Ccm93c2VyKCk7XHJcblxyXG4gICAgICAgIHRoaXMuaXNPcGVuLnNldChbJ3h4bCddLmluY2x1ZGVzKFNjcmVlbi5CUkVBS1BPSU5UKSk7XHJcblxyXG4gICAgICAgIFNjcmVlbi5SZXNpemUuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgbmV4dDogKHsgYnJlYWtwb2luIH06IElTY3JlZW5TaXplKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBicmVha3BvaW50U0lHTkFMLnNldChicmVha3BvaW4pO1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5iYWNrZHJvcCkgdGhpcy5DbG9zZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7IFxyXG4gICAgfSBcclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcm90ZWN0ZWQgTmF2aWdhdGVUbyhzZWxlY3RlZE9wdGlvbjogSU1lbnVPcHRpb25TZWxlY3RlZCkge1xyXG4gICAgICAgIGxldCB1cmwgPSBgJHtzZWxlY3RlZE9wdGlvbi5wYXRofWA7XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkT3B0aW9uLnF1ZXJ5UGFyYW1zLmxlbmd0aCA+IDApIHVybCArPSBgPyR7c2VsZWN0ZWRPcHRpb24ucXVlcnlQYXJhbXN9YDtcclxuICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmwpO1xyXG5cclxuICAgICAgICAvL1NldCBhY3RpdmUgbGlua1xyXG4gICAgICAgIHRoaXMuU2V0QWN0aXZlTGluayhzZWxlY3RlZE9wdGlvbik7XHJcblxyXG4gICAgICAgIC8vQ2xvc2UgTWVudVxyXG4gICAgICAgIGlmKHNlbGVjdGVkT3B0aW9uLmxldmVsID09IDEpIHtcclxuICAgICAgICAgICAgZm9yKGNvbnN0IG1lbnVMdjEgb2YgdGhpcy5tZW51TGlzdCgpKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IoY29uc3QgbWVudUx2MiBvZiBtZW51THYxLm1lbnVMaXN0LnRvQXJyYXkoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG1lbnVMdjIuQ2xvc2UoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIG1lbnVMdjEuQ2xvc2UoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwdWJsaWMgU2V0QWN0aXZlTGluayhzZWxlY3RlZE9wdGlvbjogSU1lbnVPcHRpb25TZWxlY3RlZCB8IG51bGwpOiB2b2lkIHtcclxuICAgICAgICBpZiAoc2VsZWN0ZWRPcHRpb24pIHtcclxuICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb24gPSBUb29scy5CcmVha1JlZmVyZW5jZShzZWxlY3RlZE9wdGlvbik7XHJcbiAgICAgICAgICAgIE1lbnUuU2V0U2VsZWN0ZWRPcHRpb24oc2VsZWN0ZWRPcHRpb24pO1xyXG5cclxuICAgICAgICAgICAgbGV0IGNvbGxlY3Rpb246IEVsZW1lbnRbXSA9IFtdO1xyXG4gICAgICAgICAgICBjb2xsZWN0aW9uID0gY29sbGVjdGlvbi5jb25jYXQoQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdtYXQtZHJhd2VyLWNvbnRhaW5lciBzcGFuLmljb24tY29udGFpbmVyJykpKTtcclxuICAgICAgICAgICAgY29sbGVjdGlvbiA9IGNvbGxlY3Rpb24uY29uY2F0KEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnbWF0LWRyYXdlci1jb250YWluZXIgc3Bhbi5sYWJlbC1jb250YWluZXInKSkpO1xyXG5cclxuICAgICAgICAgICAgLy9SZW1vdmUgYWN0aXZlLWxpbmtcclxuICAgICAgICAgICAgZm9yKGNvbnN0IGVsZW1lbnQgb2YgY29sbGVjdGlvbikge1xyXG4gICAgICAgICAgICAgICAgaWYoZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2FjdGl2ZS1saW5rJykpIHtcclxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZS1saW5rJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vQWRkIGFjdGl2ZS1saW5rXHJcbiAgICAgICAgICAgIGNvbnN0IGxldmVscyA9IHNlbGVjdGVkT3B0aW9uLnRyZWUubGVuZ3RoO1xyXG4gICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgbGV2ZWxzOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGZvcihjb25zdCBlbGVtZW50IG9mIGNvbGxlY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpZGVudGl0eUNsYXNzID0gdGhpcy5HZXRJZGVudGl0eUNsYXNzKHNlbGVjdGVkT3B0aW9uLnRyZWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhpZGVudGl0eUNsYXNzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZS1saW5rJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkT3B0aW9uLnRyZWUucG9wKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHVibGljIE9wZW4oZXZlbnQ6IE1vdXNlRXZlbnQsIGl0ZW06IElNZW51IHwgbnVsbCA9IG51bGwpOiB2b2lkIHtcclxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmlzT3BlbigpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuLnNldCh0cnVlKTtcclxuICAgICAgICAgICAgdGhpcy5zaWRlbmF2KCkub3BlbigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwdWJsaWMgQ2xvc2UoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5pc09wZW4uc2V0KGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5zaWRlbmF2KCkuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHVibGljIFRvZ2dsZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNpZGVuYXYoKS50b2dnbGUoKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcm90ZWN0ZWQgTWVudVNlbGVjdGVkKHNlbGVjdGVkTWVudTogSU1lbnVTZWxlY3RlZCkge1xyXG4gICAgICAgIGlmIChzZWxlY3RlZE1lbnUubGV2ZWwgPT0gMSkge1xyXG4gICAgICAgICAgICBmb3IoY29uc3QgbWVudUx2MSBvZiB0aGlzLm1lbnVMaXN0KCkpIHtcclxuICAgICAgICAgICAgICAgIGlmKG1lbnVMdjEuaXRlbS5sYWJlbCAhPSBzZWxlY3RlZE1lbnUubGFiZWwpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yKGNvbnN0IG1lbnVMdjIgb2YgbWVudUx2MS5tZW51TGlzdC50b0FycmF5KCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVudUx2Mi5DbG9zZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbWVudUx2MS5DbG9zZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByb3RlY3RlZCBJc01lbnUgPSAoaXRlbTogSU1lbnUpOiBib29sZWFuID0+IGl0ZW0uaGFzT3duUHJvcGVydHkoJ2l0ZW1zJykgJiYgVG9vbHMuSXNOb3RPbmx5V2hpdGVTcGFjZShpdGVtLml0ZW1zKTtcclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcm90ZWN0ZWQgR2V0SWNvbiA9IChpdGVtOiBJTWVudSk6IHN0cmluZyA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0gJiYgaXRlbS5oYXNPd25Qcm9wZXJ0eSgnaWNvbicpICYmIGl0ZW0uaWNvbiEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gaXRlbS5pY29uIVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuSXNNZW51KGl0ZW0pXHJcbiAgICAgICAgICAgID8gJ2ZhLXNvbGlkIGZhLWJhcnMnXHJcbiAgICAgICAgICAgIDogJ2JpIGJpLXJlY29yZC1maWxsJztcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcm90ZWN0ZWQgU2V0SWRlbnRpdHlDbGFzcyA9IChsYWJlbDogU3RyaW5nKTogc3RyaW5nID0+IHtcclxuICAgICAgICBsZXQgaWRlbnRpdHkgPSBgbHYxJHtsYWJlbH1gO1xyXG4gICAgICAgIGlmKGlkZW50aXR5LmluY2x1ZGVzKCcgJykpIGlkZW50aXR5ID0gaWRlbnRpdHkucmVwbGFjZUFsbCgnICcsICcnKTtcclxuICAgICAgICByZXR1cm4gaWRlbnRpdHkudG9Mb3dlckNhc2UoKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcml2YXRlIEdldElkZW50aXR5Q2xhc3ModHJlZTogSU1lbnVbXSk6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IGlkZW50aXR5OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IHRyZWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWRlbnRpdHkgKz0gYGx2JHtpICsgMX0ke3RyZWVbaV0ubGFiZWx9LWA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZihpZGVudGl0eS5lbmRzV2l0aCgnLScpKSBpZGVudGl0eSA9IGlkZW50aXR5LnNsaWNlKDAsIC0xKTtcclxuICAgICAgICBpZihpZGVudGl0eS5pbmNsdWRlcygnICcpKSBpZGVudGl0eSA9IGlkZW50aXR5LnJlcGxhY2VBbGwoJyAnLCAnJyk7XHJcbiAgICAgICAgcmV0dXJuIGlkZW50aXR5LnRvTG93ZXJDYXNlKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJpdmF0ZSBCYWNrQnV0dG9uQnJvd3NlcigpIHtcclxuICAgICAgICBjb25zdCBRVUVSWV9TRUxFQ1RPUiA9ICdjb2VyLW1lbnUtb3B0aW9uW25nLXJlZmxlY3QtcGF0aD1cIltwYXRoXVwiXSBtYXQtbmF2LWxpc3QuY29lci1tZW51LW9wdGlvbic7XHJcblxyXG4gICAgICAgIFNjcmVlbi5CYWNrQnV0dG9uQnJvd3Nlci5zdWJzY3JpYmUodG9QYXRoID0+IHtcclxuICAgICAgICAgICAgaWYgKHRvUGF0aC5pbmNsdWRlcygnLyMvJykpIHRvUGF0aCA9IHRvUGF0aC5zcGxpdCgnLyMnKVsxXTtcclxuICAgICAgICAgICAgaWYgKHRvUGF0aC5pbmNsdWRlcygnPycpKSB0b1BhdGggPSB0b1BhdGguc3BsaXQoJz8nKVswXTtcclxuXHJcbiAgICAgICAgICAgIC8vVmFsaWRhdGUgcGF0aFxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IG1vZHVsZSBvZiBuYXZpZ2F0aW9uU0lHTkFMKCkpIHtcclxuICAgICAgICAgICAgICAgIGlmIChtb2R1bGUuaXRlbXMpIGZvciAoY29uc3Qgc3ViTW9kdWxlIG9mIG1vZHVsZS5pdGVtcykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vTGV2ZWwgVGhyZWVcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc3ViTW9kdWxlLml0ZW1zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcihjb25zdCBpdGVtIG9mIHN1Yk1vZHVsZS5pdGVtcykgaWYgKGl0ZW0ucGF0aCA9PT0gdG9QYXRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihRVUVSWV9TRUxFQ1RPUi5yZXBsYWNlKCdbcGF0aF0nLCB0b1BhdGgpKSBhcyBhbnkpPy5jbGljaygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAvL0xldmVsIFR3b1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN1Yk1vZHVsZS5wYXRoID09PSB0b1BhdGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoUVVFUllfU0VMRUNUT1IucmVwbGFjZSgnW3BhdGhdJywgdG9QYXRoKSkgYXMgYW55KT8uY2xpY2soKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvL0xldmVsIE9uZVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobW9kdWxlLnBhdGggPT09IHRvUGF0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFFVRVJZX1NFTEVDVE9SLnJlcGxhY2UoJ1twYXRoXScsIHRvUGF0aCkpIGFzIGFueSk/LmNsaWNrKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBCcmVhZGNydW1icy5SZW1vdmUodG9QYXRoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufSIsIjxtYXQtZHJhd2VyLWNvbnRhaW5lciBbaGFzQmFja2Ryb3BdPVwiYmFja2Ryb3BcIj5cclxuICAgIDxtYXQtZHJhd2VyXHJcbiAgICAgICAgI21hdFNpZGVuYXZcclxuICAgICAgICBbb3BlbmVkXT1cImlzT3BlbigpXCJcclxuICAgICAgICAob3BlbmVkKT1cImlzT3Blbi5zZXQodHJ1ZSlcIlxyXG4gICAgICAgIChjbG9zZWQpPVwiaXNPcGVuLnNldChmYWxzZSlcIlxyXG4gICAgICAgIFttb2RlXT1cIm1vZGVcIj5cclxuXHJcbiAgICAgICAgQGlmKCFfaXNMb2FkaW5nKCkpIHtcclxuICAgICAgICAgICAgQGlmKF9uYXZpZ2F0aW9uKCkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBfbmF2aWdhdGlvbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBNZW51IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJJc01lbnUoaXRlbSk7IGVsc2UgT3B0aW9uTWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y29lci10cmVlLWFjY29yZGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1dPVwiaXRlbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2tNZW51T3B0aW9uKT1cIk5hdmlnYXRlVG8oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2tNZW51KT1cIk1lbnVTZWxlY3RlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvY29lci10cmVlLWFjY29yZGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8IS0tIE9wdGlvbiBNZW51IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjT3B0aW9uTWVudT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNvZXItbWVudS1vcHRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJpdGVtLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uXT1cIml0ZW0/Lmljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhdGhdPVwiaXRlbT8ucGF0aFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2tNZW51T3B0aW9uKT1cIk5hdmlnYXRlVG8oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2NvZXItbWVudS1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VwYXJhdG9yXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgPGNvZXItbWVudS1vcHRpb25cclxuICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIkVtcHR5XCJcclxuICAgICAgICAgICAgICAgICAgICBpY29uPVwiZmEtc29saWQgZmEtZmFjZS1tZWhcIlxyXG4gICAgICAgICAgICAgICAgPjwvY29lci1tZW51LW9wdGlvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgQGVsc2Uge1xyXG4gICAgICAgICAgICA8Y29lci1tZW51LW9wdGlvblxyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJMT0FESU5HXCJcclxuICAgICAgICAgICAgICAgIGljb249XCJmYS1zb2xpZCBmYS1zeW5jIGZhLXNwaW5cIlxyXG4gICAgICAgICAgICA+PC9jb2VyLW1lbnUtb3B0aW9uPlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7ICdiYWNrZHJvcCc6IF9pc01vZGFsT3BlbigpIH1cIj48L2Rpdj5cclxuICAgIDwvbWF0LWRyYXdlcj5cclxuXHJcbiAgICA8IS0tIE1haW4gU2NyZWVuIC0tPlxyXG4gICAgPG1hdC1kcmF3ZXItY29udGVudCBbbmdDbGFzc109XCJ7ICdtYXJnaW4tbGVmdC00MHB4JzogKCFpc09wZW4oKSAmJiBzaG93QXNpZGVNZW51KSB9XCI+XHJcbiAgICAgICAgPGFzaWRlIFtuZ0NsYXNzXT1cInsgJ3NpZGUtbmF2JzogdHJ1ZSwgJ2Qtbm9uZSc6ICFzaG93QXNpZGVNZW51IH1cIiAoY2xpY2spPVwiT3BlbigkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgX25hdmlnYXRpb24oKVwiIChjbGljayk9XCJPcGVuKCRldmVudCwgaXRlbSlcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIFtjbGFzc109XCInaWNvbi1jb250YWluZXIgJyArIFNldElkZW50aXR5Q2xhc3MoaXRlbS5sYWJlbClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiR2V0SWNvbihpdGVtKVwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgJ2JhY2tkcm9wJzogX2lzTW9kYWxPcGVuKCkgfVwiPjwvZGl2PlxyXG4gICAgICAgIDwvYXNpZGU+XHJcblxyXG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgIDwvbWF0LWRyYXdlci1jb250ZW50PlxyXG48L21hdC1kcmF3ZXItY29udGFpbmVyPiJdfQ==
@@ -4,6 +4,7 @@ import * as i0 from "@angular/core";
4
4
  import * as i1 from "@angular/common";
5
5
  import * as i2 from "@angular/material/form-field";
6
6
  import * as i3 from "@angular/material/input";
7
+ import * as i4 from "../coer-button/coer-button.component";
7
8
  export class CoerTextBox extends ControlValue {
8
9
  constructor() {
9
10
  super(...arguments);
@@ -15,6 +16,7 @@ export class CoerTextBox extends ControlValue {
15
16
  this._id = Tools.GetGuid('coer-textBox');
16
17
  this._isLoadingEvent = signal(false);
17
18
  this.id = '';
19
+ this.button = { show: false };
18
20
  this.label = input('');
19
21
  this.placeholder = input('');
20
22
  this.minLength = input(0);
@@ -39,6 +41,7 @@ export class CoerTextBox extends ControlValue {
39
41
  this.onKeyupEnter = output();
40
42
  this.onInput = output();
41
43
  this.onClickClear = output();
44
+ this.onClickButton = output();
42
45
  //computed
43
46
  this._isEnable = computed(() => {
44
47
  return !this.isDisabled() && !this.isLoading() && !this.isReadonly();
@@ -78,6 +81,27 @@ export class CoerTextBox extends ControlValue {
78
81
  && String(this._value).length > 0;
79
82
  }
80
83
  //getter
84
+ get _showButtonLeft() {
85
+ return this.button.show
86
+ && Tools.IsNotNull(this.button?.position)
87
+ && this.button?.position === 'left';
88
+ }
89
+ //getter
90
+ get _showButtonRight() {
91
+ return this.button.show
92
+ && ((Tools.IsNull(this.button?.position) || this.button?.position === 'right'));
93
+ }
94
+ //getter
95
+ get _buttonIcon() {
96
+ return (Tools.IsNotOnlyWhiteSpace(this.button?.icon))
97
+ ? this.button.icon : 'pointer';
98
+ }
99
+ //getter
100
+ get _buttonIsDisabled() {
101
+ return (Tools.IsNotNull(this.button?.isDisabled))
102
+ ? this.button.isDisabled : false;
103
+ }
104
+ //getter
81
105
  get value() {
82
106
  return this._value;
83
107
  }
@@ -182,14 +206,16 @@ export class CoerTextBox extends ControlValue {
182
206
  });
183
207
  }
184
208
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CoerTextBox, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
185
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: CoerTextBox, selector: "coer-textbox", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: false, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, minLength: { classPropertyName: "minLength", publicName: "minLength", isSignal: true, isRequired: false, transformFunction: null }, maxLength: { classPropertyName: "maxLength", publicName: "maxLength", isSignal: true, isRequired: false, transformFunction: null }, showSearchIcon: { classPropertyName: "showSearchIcon", publicName: "showSearchIcon", isSignal: true, isRequired: false, transformFunction: null }, showClearIcon: { classPropertyName: "showClearIcon", publicName: "showClearIcon", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, minWidth: { classPropertyName: "minWidth", publicName: "minWidth", isSignal: true, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: true, isRequired: false, transformFunction: null }, marginTop: { classPropertyName: "marginTop", publicName: "marginTop", isSignal: true, isRequired: false, transformFunction: null }, marginRight: { classPropertyName: "marginRight", publicName: "marginRight", isSignal: true, isRequired: false, transformFunction: null }, marginBottom: { classPropertyName: "marginBottom", publicName: "marginBottom", isSignal: true, isRequired: false, transformFunction: null }, marginLeft: { classPropertyName: "marginLeft", publicName: "marginLeft", isSignal: true, isRequired: false, transformFunction: null }, isInvalid: { classPropertyName: "isInvalid", publicName: "isInvalid", isSignal: true, isRequired: false, transformFunction: null }, isValid: { classPropertyName: "isValid", publicName: "isValid", isSignal: true, isRequired: false, transformFunction: null }, isDisabled: { classPropertyName: "isDisabled", publicName: "isDisabled", isSignal: true, isRequired: false, transformFunction: null }, isReadonly: { classPropertyName: "isReadonly", publicName: "isReadonly", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, selectOnFocus: { classPropertyName: "selectOnFocus", publicName: "selectOnFocus", isSignal: true, isRequired: false, transformFunction: null }, textPosition: { classPropertyName: "textPosition", publicName: "textPosition", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onKeyupEnter: "onKeyupEnter", onInput: "onInput", onClickClear: "onClickClear" }, providers: [CONTROL_VALUE(CoerTextBox)], viewQueries: [{ propertyName: "matFormField", first: true, predicate: ["matFormField"], descendants: true, isSignal: true }, { propertyName: "coerTextBox", first: true, predicate: ["coerTextBox"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"coer-text-box\">\r\n <mat-form-field\r\n [id]=\"_id + '-container'\"\r\n [floatLabel]=\"floatLabel()\"\r\n [ngClass]=\"{\r\n 'readonly': isReadonly() && !isLoading()\r\n }\"\r\n [style]=\"{\r\n 'width': width(),\r\n 'min-width': minWidth(),\r\n 'max-width': maxWidth(),\r\n 'margin-top': marginTop(),\r\n 'margin-right': marginRight(),\r\n 'margin-bottom': marginBottom(),\r\n 'margin-left': marginLeft()\r\n }\">\r\n <mat-label>{{ label() }}</mat-label>\r\n\r\n <input #coerTextBox matInput\r\n [id]=\"_id\"\r\n type=\"text\"\r\n [placeholder]=\"placeholder()\"\r\n [minLength]=\"minLength()\"\r\n [maxLength]=\"maxLength()\"\r\n [disabled]=\"!_isEnable()\"\r\n [value]=\"_value\"\r\n (input)=\"SetValue(coerTextBox.value)\"\r\n (blur)=\"SetTouched(true)\"\r\n [style]=\"{\r\n 'cursor': isLoading() ? 'wait' : null,\r\n 'margin-top': (floatLabel() == 'auto') ? '15px' : '9px',\r\n 'padding-right': paddingRight(),\r\n 'text-align': textPosition()\r\n }\">\r\n\r\n @if(isLoading()) {\r\n <div class=\"placeholder-glow\">\r\n <span class=\"placeholder\"></span>\r\n </div>\r\n }\r\n\r\n <span ngClass=\"icon-container\">\r\n @if(_showSearchIcon) {\r\n <i class=\"fa-solid fa-magnifying-glass cursor-pointer\" (click)=\"ClickSearch()\"></i>\r\n }\r\n\r\n @else if(_showClearIcon) {\r\n <i class=\"fa-solid fa-xmark cursor-pointer\" (click)=\"Clear(); this.onClickClear.emit();\"></i>\r\n }\r\n\r\n @else if(isInvalid() && !isDisabled() && !isLoading()) {\r\n <i class=\"fa-solid fa-circle-exclamation\"></i>\r\n }\r\n\r\n @else if(isValid() && !isDisabled() && !isLoading()) {\r\n <i class=\"fa-solid fa-circle-check text-green\"></i>\r\n }\r\n </span>\r\n </mat-form-field> \r\n</div>", styles: ["div.coer-text-box *{--blue: #0d6efd;--gray: #6c757d;--green: #198754;--yellow: #ffc107;--red: #dc3545;--white: #f5f5f5;--black: #252525;--orange: #fd6031;--purple: #a615bc}div.coer-text-box .text-blue{color:#0d6efd!important}div.coer-text-box .text-blue-bold{color:#0d6efd!important;font-weight:700!important}div.coer-text-box .background-blue{background-color:#0d6efd!important}div.coer-text-box .background-border-blue{background-color:#0d6efd!important;border-color:#0d6efd!important}div.coer-text-box .border-blue{border-color:#0d6efd!important}div.coer-text-box .text-gray{color:#6c757d!important}div.coer-text-box .text-gray-bold{color:#6c757d!important;font-weight:700!important}div.coer-text-box .background-gray{background-color:#6c757d!important}div.coer-text-box .background-border-gray{background-color:#6c757d!important;border-color:#6c757d!important}div.coer-text-box .border-gray{border-color:#6c757d!important}div.coer-text-box .text-green{color:#198754!important}div.coer-text-box .text-green-bold{color:#198754!important;font-weight:700!important}div.coer-text-box .background-green{background-color:#198754!important}div.coer-text-box .background-border-green{background-color:#198754!important;border-color:#198754!important}div.coer-text-box .border-green{border-color:#198754!important}div.coer-text-box .text-yellow{color:#ffc107!important}div.coer-text-box .text-yellow-bold{color:#ffc107!important;font-weight:700!important}div.coer-text-box .background-yellow{background-color:#ffc107!important}div.coer-text-box .background-border-yellow{background-color:#ffc107!important;border-color:#ffc107!important}div.coer-text-box .border-yellow{border-color:#ffc107!important}div.coer-text-box .text-red{color:#dc3545!important}div.coer-text-box .text-red-bold{color:#dc3545!important;font-weight:700!important}div.coer-text-box .background-red{background-color:#dc3545!important}div.coer-text-box .background-border-red{background-color:#dc3545!important;border-color:#dc3545!important}div.coer-text-box .border-red{border-color:#dc3545!important}div.coer-text-box .text-white{color:#f5f5f5!important}div.coer-text-box .text-white-bold{color:#f5f5f5!important;font-weight:700!important}div.coer-text-box .background-white{background-color:#f5f5f5!important}div.coer-text-box .background-border-white{background-color:#f5f5f5!important;border-color:#f5f5f5!important}div.coer-text-box .border-white{border-color:#f5f5f5!important}div.coer-text-box .text-black{color:#252525!important}div.coer-text-box .text-black-bold{color:#252525!important;font-weight:700!important}div.coer-text-box .background-black{background-color:#252525!important}div.coer-text-box .background-border-black{background-color:#252525!important;border-color:#252525!important}div.coer-text-box .border-black{border-color:#252525!important}div.coer-text-box .text-orange{color:#fd6031!important}div.coer-text-box .text-orange-bold{color:#fd6031!important;font-weight:700!important}div.coer-text-box .background-orange{background-color:#fd6031!important}div.coer-text-box .background-border-orange{background-color:#fd6031!important;border-color:#fd6031!important}div.coer-text-box .border-orange{border-color:#fd6031!important}div.coer-text-box .text-transparent{color:transparent!important}div.coer-text-box .background-transparent{background-color:transparent!important}div.coer-text-box .border-transparent{border-color:transparent!important}div.coer-text-box mat-form-field{position:relative!important}div.coer-text-box mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mat-mdc-form-field-flex{height:40px!important}div.coer-text-box mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mat-mdc-form-field-flex div.mat-mdc-form-field-infix{width:100%!important;height:40px!important;padding:0!important}div.coer-text-box mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mat-mdc-form-field-flex div.mat-mdc-form-field-infix label{overflow:visible!important;position:absolute!important;top:20px!important}div.coer-text-box mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mat-mdc-form-field-flex div.mat-mdc-form-field-infix label.mdc-floating-label--float-above mat-label{color:#fd6031;font-weight:700;position:relative;left:-10px;top:2px}div.coer-text-box mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mat-mdc-form-field-flex div.mat-mdc-form-field-infix input{font-weight:400!important;font-size:17px!important;color:#252525!important}div.coer-text-box mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mdc-line-ripple.mdc-line-ripple--active,div.coer-text-box mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mdc-line-ripple.mdc-line-ripple--active:before,div.coer-text-box mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mdc-line-ripple.mdc-line-ripple--active:after{border-bottom-color:#fd6031!important}div.coer-text-box mat-form-field div.mat-mdc-form-field-subscript-wrapper.mat-mdc-form-field-bottom-align{height:0px!important}div.coer-text-box mat-form-field span.icon-container{position:absolute!important;top:1px!important;right:-14px!important;z-index:5!important;width:30px;height:40px;display:flex;align-items:center;justify-content:center}div.coer-text-box mat-form-field span.icon-container i{font-size:20px!important}div.coer-text-box mat-form-field span.icon-container i.fa-solid.fa-xmark,div.coer-text-box mat-form-field span.icon-container i.fa-solid.fa-magnifying-glass{color:#caced1!important;cursor:pointer!important}div.coer-text-box mat-form-field span.icon-container i.fa-solid.fa-xmark:hover,div.coer-text-box mat-form-field span.icon-container i.fa-solid.fa-magnifying-glass:hover{color:#6c757d!important}div.coer-text-box mat-form-field span.icon-container i.fa-solid.fa-circle-check{color:#198754!important}div.coer-text-box mat-form-field span.icon-container i.fa-solid.fa-circle-exclamation{color:#dc3545!important}div.coer-text-box mat-form-field span.placeholder{width:calc(100% + 32px)!important;height:40px!important;position:absolute!important;z-index:1!important;top:0!important;left:-16px!important;cursor:wait!important}div.coer-text-box mat-form-field .placeholder,div.coer-text-box mat-form-field .placeholder *,div.coer-text-box mat-form-field .placeholder-glow,div.coer-text-box mat-form-field .placeholder-glow *{cursor:wait!important}div.coer-text-box mat-form-field.readonly div.mat-mdc-text-field-wrapper.mdc-text-field{background-color:#bbbbbb83!important}coer-grid table tbody tr td.coer-textbox mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field{background-color:transparent!important;padding-left:9px!important;padding-right:9px!important}coer-grid table tbody tr td.coer-textbox mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mdc-line-ripple,coer-grid table tbody tr td.coer-textbox mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mdc-line-ripple:before,coer-grid table tbody tr td.coer-textbox mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mdc-line-ripple:after{border-bottom-color:transparent!important}coer-grid table tbody tr td.coer-textbox mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mat-mdc-form-field-flex{height:28px!important}coer-grid table tbody tr td.coer-textbox mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mat-mdc-form-field-flex div.mat-mdc-form-field-infix{height:28px!important}coer-grid table tbody tr td.coer-textbox mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mat-mdc-form-field-flex div.mat-mdc-form-field-infix input{margin-top:3px!important;font-size:14px!important}coer-grid table tbody tr td.coer-textbox mat-form-field span.icon-container{transform:translate(-5px,-6px)!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }] }); }
209
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: CoerTextBox, selector: "coer-textbox", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: false, isRequired: false, transformFunction: null }, button: { classPropertyName: "button", publicName: "button", isSignal: false, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, minLength: { classPropertyName: "minLength", publicName: "minLength", isSignal: true, isRequired: false, transformFunction: null }, maxLength: { classPropertyName: "maxLength", publicName: "maxLength", isSignal: true, isRequired: false, transformFunction: null }, showSearchIcon: { classPropertyName: "showSearchIcon", publicName: "showSearchIcon", isSignal: true, isRequired: false, transformFunction: null }, showClearIcon: { classPropertyName: "showClearIcon", publicName: "showClearIcon", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, minWidth: { classPropertyName: "minWidth", publicName: "minWidth", isSignal: true, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: true, isRequired: false, transformFunction: null }, marginTop: { classPropertyName: "marginTop", publicName: "marginTop", isSignal: true, isRequired: false, transformFunction: null }, marginRight: { classPropertyName: "marginRight", publicName: "marginRight", isSignal: true, isRequired: false, transformFunction: null }, marginBottom: { classPropertyName: "marginBottom", publicName: "marginBottom", isSignal: true, isRequired: false, transformFunction: null }, marginLeft: { classPropertyName: "marginLeft", publicName: "marginLeft", isSignal: true, isRequired: false, transformFunction: null }, isInvalid: { classPropertyName: "isInvalid", publicName: "isInvalid", isSignal: true, isRequired: false, transformFunction: null }, isValid: { classPropertyName: "isValid", publicName: "isValid", isSignal: true, isRequired: false, transformFunction: null }, isDisabled: { classPropertyName: "isDisabled", publicName: "isDisabled", isSignal: true, isRequired: false, transformFunction: null }, isReadonly: { classPropertyName: "isReadonly", publicName: "isReadonly", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, selectOnFocus: { classPropertyName: "selectOnFocus", publicName: "selectOnFocus", isSignal: true, isRequired: false, transformFunction: null }, textPosition: { classPropertyName: "textPosition", publicName: "textPosition", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onKeyupEnter: "onKeyupEnter", onInput: "onInput", onClickClear: "onClickClear", onClickButton: "onClickButton" }, providers: [CONTROL_VALUE(CoerTextBox)], viewQueries: [{ propertyName: "matFormField", first: true, predicate: ["matFormField"], descendants: true, isSignal: true }, { propertyName: "coerTextBox", first: true, predicate: ["coerTextBox"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"coer-text-box\">\r\n @if(_showButtonLeft) {\r\n <div class=\"button-container\">\r\n <coer-button\r\n type=\"icon-no-border\"\r\n color=\"dark\"\r\n [icon]=\"_buttonIcon\" \r\n [isDisabled]=\"_buttonIsDisabled\" \r\n (onClick)=\"onClickButton.emit()\"\r\n ></coer-button>\r\n </div>\r\n }\r\n\r\n <mat-form-field\r\n [id]=\"_id + '-container'\"\r\n [floatLabel]=\"floatLabel()\"\r\n [ngClass]=\"{\r\n 'readonly': isReadonly() && !isLoading()\r\n }\"\r\n [style]=\"{\r\n 'width': width(),\r\n 'min-width': minWidth(),\r\n 'max-width': maxWidth(),\r\n 'margin-top': marginTop(),\r\n 'margin-right': marginRight(),\r\n 'margin-bottom': marginBottom(),\r\n 'margin-left': marginLeft()\r\n }\">\r\n <mat-label>{{ label() }}</mat-label>\r\n\r\n <input #coerTextBox matInput\r\n [id]=\"_id\"\r\n type=\"text\"\r\n [placeholder]=\"placeholder()\"\r\n [minLength]=\"minLength()\"\r\n [maxLength]=\"maxLength()\"\r\n [disabled]=\"!_isEnable()\"\r\n [value]=\"_value\"\r\n (input)=\"SetValue(coerTextBox.value)\"\r\n (blur)=\"SetTouched(true)\"\r\n [style]=\"{\r\n 'cursor': isLoading() ? 'wait' : null,\r\n 'margin-top': (floatLabel() == 'auto') ? '15px' : '9px',\r\n 'padding-right': paddingRight(),\r\n 'text-align': textPosition()\r\n }\">\r\n\r\n @if(isLoading()) {\r\n <div class=\"placeholder-glow\">\r\n <span class=\"placeholder\"></span>\r\n </div>\r\n }\r\n\r\n <span ngClass=\"icon-container\">\r\n @if(_showSearchIcon) {\r\n <i class=\"fa-solid fa-magnifying-glass cursor-pointer\" (click)=\"ClickSearch()\"></i>\r\n }\r\n\r\n @else if(_showClearIcon) {\r\n <i class=\"fa-solid fa-xmark cursor-pointer\" (click)=\"Clear(); this.onClickClear.emit();\"></i>\r\n }\r\n\r\n @else if(isInvalid() && !isDisabled() && !isLoading()) {\r\n <i class=\"fa-solid fa-circle-exclamation\"></i>\r\n }\r\n\r\n @else if(isValid() && !isDisabled() && !isLoading()) {\r\n <i class=\"fa-solid fa-circle-check text-green\"></i>\r\n }\r\n </span>\r\n </mat-form-field> \r\n\r\n @if(_showButtonRight) {\r\n <div class=\"button-container\">\r\n <coer-button\r\n type=\"icon-no-border\"\r\n color=\"dark\"\r\n [icon]=\"_buttonIcon\" \r\n [isDisabled]=\"_buttonIsDisabled\" \r\n (onClick)=\"onClickButton.emit()\"\r\n ></coer-button>\r\n </div>\r\n }\r\n</div>", styles: ["div.coer-text-box{display:flex;align-items:center}div.coer-text-box *{--blue: #0d6efd;--gray: #6c757d;--green: #198754;--yellow: #ffc107;--red: #dc3545;--white: #f5f5f5;--black: #252525;--orange: #fd6031;--purple: #a615bc}div.coer-text-box .text-blue{color:#0d6efd!important}div.coer-text-box .text-blue-bold{color:#0d6efd!important;font-weight:700!important}div.coer-text-box .background-blue{background-color:#0d6efd!important}div.coer-text-box .background-border-blue{background-color:#0d6efd!important;border-color:#0d6efd!important}div.coer-text-box .border-blue{border-color:#0d6efd!important}div.coer-text-box .text-gray{color:#6c757d!important}div.coer-text-box .text-gray-bold{color:#6c757d!important;font-weight:700!important}div.coer-text-box .background-gray{background-color:#6c757d!important}div.coer-text-box .background-border-gray{background-color:#6c757d!important;border-color:#6c757d!important}div.coer-text-box .border-gray{border-color:#6c757d!important}div.coer-text-box .text-green{color:#198754!important}div.coer-text-box .text-green-bold{color:#198754!important;font-weight:700!important}div.coer-text-box .background-green{background-color:#198754!important}div.coer-text-box .background-border-green{background-color:#198754!important;border-color:#198754!important}div.coer-text-box .border-green{border-color:#198754!important}div.coer-text-box .text-yellow{color:#ffc107!important}div.coer-text-box .text-yellow-bold{color:#ffc107!important;font-weight:700!important}div.coer-text-box .background-yellow{background-color:#ffc107!important}div.coer-text-box .background-border-yellow{background-color:#ffc107!important;border-color:#ffc107!important}div.coer-text-box .border-yellow{border-color:#ffc107!important}div.coer-text-box .text-red{color:#dc3545!important}div.coer-text-box .text-red-bold{color:#dc3545!important;font-weight:700!important}div.coer-text-box .background-red{background-color:#dc3545!important}div.coer-text-box .background-border-red{background-color:#dc3545!important;border-color:#dc3545!important}div.coer-text-box .border-red{border-color:#dc3545!important}div.coer-text-box .text-white{color:#f5f5f5!important}div.coer-text-box .text-white-bold{color:#f5f5f5!important;font-weight:700!important}div.coer-text-box .background-white{background-color:#f5f5f5!important}div.coer-text-box .background-border-white{background-color:#f5f5f5!important;border-color:#f5f5f5!important}div.coer-text-box .border-white{border-color:#f5f5f5!important}div.coer-text-box .text-black{color:#252525!important}div.coer-text-box .text-black-bold{color:#252525!important;font-weight:700!important}div.coer-text-box .background-black{background-color:#252525!important}div.coer-text-box .background-border-black{background-color:#252525!important;border-color:#252525!important}div.coer-text-box .border-black{border-color:#252525!important}div.coer-text-box .text-orange{color:#fd6031!important}div.coer-text-box .text-orange-bold{color:#fd6031!important;font-weight:700!important}div.coer-text-box .background-orange{background-color:#fd6031!important}div.coer-text-box .background-border-orange{background-color:#fd6031!important;border-color:#fd6031!important}div.coer-text-box .border-orange{border-color:#fd6031!important}div.coer-text-box .text-transparent{color:transparent!important}div.coer-text-box .background-transparent{background-color:transparent!important}div.coer-text-box .border-transparent{border-color:transparent!important}div.coer-text-box mat-form-field{position:relative!important}div.coer-text-box mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mat-mdc-form-field-flex{height:40px!important}div.coer-text-box mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mat-mdc-form-field-flex div.mat-mdc-form-field-infix{width:100%!important;height:40px!important;padding:0!important}div.coer-text-box mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mat-mdc-form-field-flex div.mat-mdc-form-field-infix label{overflow:visible!important;position:absolute!important;top:20px!important}div.coer-text-box mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mat-mdc-form-field-flex div.mat-mdc-form-field-infix label.mdc-floating-label--float-above mat-label{color:#fd6031;font-weight:700;position:relative;left:-10px;top:2px}div.coer-text-box mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mat-mdc-form-field-flex div.mat-mdc-form-field-infix input{font-weight:400!important;font-size:17px!important;color:#252525!important}div.coer-text-box mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mdc-line-ripple.mdc-line-ripple--active,div.coer-text-box mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mdc-line-ripple.mdc-line-ripple--active:before,div.coer-text-box mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mdc-line-ripple.mdc-line-ripple--active:after{border-bottom-color:#fd6031!important}div.coer-text-box mat-form-field div.mat-mdc-form-field-subscript-wrapper.mat-mdc-form-field-bottom-align{height:0px!important}div.coer-text-box mat-form-field span.icon-container{position:absolute!important;top:1px!important;right:-14px!important;z-index:5!important;width:30px;height:40px;display:flex;align-items:center;justify-content:center}div.coer-text-box mat-form-field span.icon-container i{font-size:20px!important}div.coer-text-box mat-form-field span.icon-container i.fa-solid.fa-xmark,div.coer-text-box mat-form-field span.icon-container i.fa-solid.fa-magnifying-glass{color:#caced1!important;cursor:pointer!important}div.coer-text-box mat-form-field span.icon-container i.fa-solid.fa-xmark:hover,div.coer-text-box mat-form-field span.icon-container i.fa-solid.fa-magnifying-glass:hover{color:#6c757d!important}div.coer-text-box mat-form-field span.icon-container i.fa-solid.fa-circle-check{color:#198754!important}div.coer-text-box mat-form-field span.icon-container i.fa-solid.fa-circle-exclamation{color:#dc3545!important}div.coer-text-box mat-form-field span.placeholder{width:calc(100% + 32px)!important;height:40px!important;position:absolute!important;z-index:1!important;top:0!important;left:-16px!important;cursor:wait!important}div.coer-text-box mat-form-field .placeholder,div.coer-text-box mat-form-field .placeholder *,div.coer-text-box mat-form-field .placeholder-glow,div.coer-text-box mat-form-field .placeholder-glow *{cursor:wait!important}div.coer-text-box mat-form-field.readonly div.mat-mdc-text-field-wrapper.mdc-text-field{background-color:#bbbbbb83!important}div.coer-text-box div.button-container{width:40px!important;height:40px!important;display:flex!important;align-items:center!important;justify-content:center!important;background-color:#e6e7e9!important}coer-grid table tbody tr td.coer-textbox mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field{background-color:transparent!important;padding-left:9px!important;padding-right:9px!important}coer-grid table tbody tr td.coer-textbox mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mdc-line-ripple,coer-grid table tbody tr td.coer-textbox mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mdc-line-ripple:before,coer-grid table tbody tr td.coer-textbox mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mdc-line-ripple:after{border-bottom-color:transparent!important}coer-grid table tbody tr td.coer-textbox mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mat-mdc-form-field-flex{height:28px!important}coer-grid table tbody tr td.coer-textbox mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mat-mdc-form-field-flex div.mat-mdc-form-field-infix{height:28px!important}coer-grid table tbody tr td.coer-textbox mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mat-mdc-form-field-flex div.mat-mdc-form-field-infix input{margin-top:3px!important;font-size:14px!important}coer-grid table tbody tr td.coer-textbox mat-form-field span.icon-container{transform:translate(-5px,-6px)!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.CoerButton, selector: "coer-button", inputs: ["id", "color", "type", "icon", "iconPosition", "animation", "isLoading", "isDisabled", "isInvisible", "width", "minWidth", "height", "minHeight", "marginTop", "marginRight", "marginBottom", "marginLeft", "path", "tooltipPosition", "tooltip"], outputs: ["onClick"] }] }); }
186
210
  }
187
211
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CoerTextBox, decorators: [{
188
212
  type: Component,
189
- args: [{ selector: 'coer-textbox', providers: [CONTROL_VALUE(CoerTextBox)], template: "<div class=\"coer-text-box\">\r\n <mat-form-field\r\n [id]=\"_id + '-container'\"\r\n [floatLabel]=\"floatLabel()\"\r\n [ngClass]=\"{\r\n 'readonly': isReadonly() && !isLoading()\r\n }\"\r\n [style]=\"{\r\n 'width': width(),\r\n 'min-width': minWidth(),\r\n 'max-width': maxWidth(),\r\n 'margin-top': marginTop(),\r\n 'margin-right': marginRight(),\r\n 'margin-bottom': marginBottom(),\r\n 'margin-left': marginLeft()\r\n }\">\r\n <mat-label>{{ label() }}</mat-label>\r\n\r\n <input #coerTextBox matInput\r\n [id]=\"_id\"\r\n type=\"text\"\r\n [placeholder]=\"placeholder()\"\r\n [minLength]=\"minLength()\"\r\n [maxLength]=\"maxLength()\"\r\n [disabled]=\"!_isEnable()\"\r\n [value]=\"_value\"\r\n (input)=\"SetValue(coerTextBox.value)\"\r\n (blur)=\"SetTouched(true)\"\r\n [style]=\"{\r\n 'cursor': isLoading() ? 'wait' : null,\r\n 'margin-top': (floatLabel() == 'auto') ? '15px' : '9px',\r\n 'padding-right': paddingRight(),\r\n 'text-align': textPosition()\r\n }\">\r\n\r\n @if(isLoading()) {\r\n <div class=\"placeholder-glow\">\r\n <span class=\"placeholder\"></span>\r\n </div>\r\n }\r\n\r\n <span ngClass=\"icon-container\">\r\n @if(_showSearchIcon) {\r\n <i class=\"fa-solid fa-magnifying-glass cursor-pointer\" (click)=\"ClickSearch()\"></i>\r\n }\r\n\r\n @else if(_showClearIcon) {\r\n <i class=\"fa-solid fa-xmark cursor-pointer\" (click)=\"Clear(); this.onClickClear.emit();\"></i>\r\n }\r\n\r\n @else if(isInvalid() && !isDisabled() && !isLoading()) {\r\n <i class=\"fa-solid fa-circle-exclamation\"></i>\r\n }\r\n\r\n @else if(isValid() && !isDisabled() && !isLoading()) {\r\n <i class=\"fa-solid fa-circle-check text-green\"></i>\r\n }\r\n </span>\r\n </mat-form-field> \r\n</div>", styles: ["div.coer-text-box *{--blue: #0d6efd;--gray: #6c757d;--green: #198754;--yellow: #ffc107;--red: #dc3545;--white: #f5f5f5;--black: #252525;--orange: #fd6031;--purple: #a615bc}div.coer-text-box .text-blue{color:#0d6efd!important}div.coer-text-box .text-blue-bold{color:#0d6efd!important;font-weight:700!important}div.coer-text-box .background-blue{background-color:#0d6efd!important}div.coer-text-box .background-border-blue{background-color:#0d6efd!important;border-color:#0d6efd!important}div.coer-text-box .border-blue{border-color:#0d6efd!important}div.coer-text-box .text-gray{color:#6c757d!important}div.coer-text-box .text-gray-bold{color:#6c757d!important;font-weight:700!important}div.coer-text-box .background-gray{background-color:#6c757d!important}div.coer-text-box .background-border-gray{background-color:#6c757d!important;border-color:#6c757d!important}div.coer-text-box .border-gray{border-color:#6c757d!important}div.coer-text-box .text-green{color:#198754!important}div.coer-text-box .text-green-bold{color:#198754!important;font-weight:700!important}div.coer-text-box .background-green{background-color:#198754!important}div.coer-text-box .background-border-green{background-color:#198754!important;border-color:#198754!important}div.coer-text-box .border-green{border-color:#198754!important}div.coer-text-box .text-yellow{color:#ffc107!important}div.coer-text-box .text-yellow-bold{color:#ffc107!important;font-weight:700!important}div.coer-text-box .background-yellow{background-color:#ffc107!important}div.coer-text-box .background-border-yellow{background-color:#ffc107!important;border-color:#ffc107!important}div.coer-text-box .border-yellow{border-color:#ffc107!important}div.coer-text-box .text-red{color:#dc3545!important}div.coer-text-box .text-red-bold{color:#dc3545!important;font-weight:700!important}div.coer-text-box .background-red{background-color:#dc3545!important}div.coer-text-box .background-border-red{background-color:#dc3545!important;border-color:#dc3545!important}div.coer-text-box .border-red{border-color:#dc3545!important}div.coer-text-box .text-white{color:#f5f5f5!important}div.coer-text-box .text-white-bold{color:#f5f5f5!important;font-weight:700!important}div.coer-text-box .background-white{background-color:#f5f5f5!important}div.coer-text-box .background-border-white{background-color:#f5f5f5!important;border-color:#f5f5f5!important}div.coer-text-box .border-white{border-color:#f5f5f5!important}div.coer-text-box .text-black{color:#252525!important}div.coer-text-box .text-black-bold{color:#252525!important;font-weight:700!important}div.coer-text-box .background-black{background-color:#252525!important}div.coer-text-box .background-border-black{background-color:#252525!important;border-color:#252525!important}div.coer-text-box .border-black{border-color:#252525!important}div.coer-text-box .text-orange{color:#fd6031!important}div.coer-text-box .text-orange-bold{color:#fd6031!important;font-weight:700!important}div.coer-text-box .background-orange{background-color:#fd6031!important}div.coer-text-box .background-border-orange{background-color:#fd6031!important;border-color:#fd6031!important}div.coer-text-box .border-orange{border-color:#fd6031!important}div.coer-text-box .text-transparent{color:transparent!important}div.coer-text-box .background-transparent{background-color:transparent!important}div.coer-text-box .border-transparent{border-color:transparent!important}div.coer-text-box mat-form-field{position:relative!important}div.coer-text-box mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mat-mdc-form-field-flex{height:40px!important}div.coer-text-box mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mat-mdc-form-field-flex div.mat-mdc-form-field-infix{width:100%!important;height:40px!important;padding:0!important}div.coer-text-box mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mat-mdc-form-field-flex div.mat-mdc-form-field-infix label{overflow:visible!important;position:absolute!important;top:20px!important}div.coer-text-box mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mat-mdc-form-field-flex div.mat-mdc-form-field-infix label.mdc-floating-label--float-above mat-label{color:#fd6031;font-weight:700;position:relative;left:-10px;top:2px}div.coer-text-box mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mat-mdc-form-field-flex div.mat-mdc-form-field-infix input{font-weight:400!important;font-size:17px!important;color:#252525!important}div.coer-text-box mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mdc-line-ripple.mdc-line-ripple--active,div.coer-text-box mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mdc-line-ripple.mdc-line-ripple--active:before,div.coer-text-box mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mdc-line-ripple.mdc-line-ripple--active:after{border-bottom-color:#fd6031!important}div.coer-text-box mat-form-field div.mat-mdc-form-field-subscript-wrapper.mat-mdc-form-field-bottom-align{height:0px!important}div.coer-text-box mat-form-field span.icon-container{position:absolute!important;top:1px!important;right:-14px!important;z-index:5!important;width:30px;height:40px;display:flex;align-items:center;justify-content:center}div.coer-text-box mat-form-field span.icon-container i{font-size:20px!important}div.coer-text-box mat-form-field span.icon-container i.fa-solid.fa-xmark,div.coer-text-box mat-form-field span.icon-container i.fa-solid.fa-magnifying-glass{color:#caced1!important;cursor:pointer!important}div.coer-text-box mat-form-field span.icon-container i.fa-solid.fa-xmark:hover,div.coer-text-box mat-form-field span.icon-container i.fa-solid.fa-magnifying-glass:hover{color:#6c757d!important}div.coer-text-box mat-form-field span.icon-container i.fa-solid.fa-circle-check{color:#198754!important}div.coer-text-box mat-form-field span.icon-container i.fa-solid.fa-circle-exclamation{color:#dc3545!important}div.coer-text-box mat-form-field span.placeholder{width:calc(100% + 32px)!important;height:40px!important;position:absolute!important;z-index:1!important;top:0!important;left:-16px!important;cursor:wait!important}div.coer-text-box mat-form-field .placeholder,div.coer-text-box mat-form-field .placeholder *,div.coer-text-box mat-form-field .placeholder-glow,div.coer-text-box mat-form-field .placeholder-glow *{cursor:wait!important}div.coer-text-box mat-form-field.readonly div.mat-mdc-text-field-wrapper.mdc-text-field{background-color:#bbbbbb83!important}coer-grid table tbody tr td.coer-textbox mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field{background-color:transparent!important;padding-left:9px!important;padding-right:9px!important}coer-grid table tbody tr td.coer-textbox mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mdc-line-ripple,coer-grid table tbody tr td.coer-textbox mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mdc-line-ripple:before,coer-grid table tbody tr td.coer-textbox mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mdc-line-ripple:after{border-bottom-color:transparent!important}coer-grid table tbody tr td.coer-textbox mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mat-mdc-form-field-flex{height:28px!important}coer-grid table tbody tr td.coer-textbox mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mat-mdc-form-field-flex div.mat-mdc-form-field-infix{height:28px!important}coer-grid table tbody tr td.coer-textbox mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mat-mdc-form-field-flex div.mat-mdc-form-field-infix input{margin-top:3px!important;font-size:14px!important}coer-grid table tbody tr td.coer-textbox mat-form-field span.icon-container{transform:translate(-5px,-6px)!important}\n"] }]
213
+ args: [{ selector: 'coer-textbox', providers: [CONTROL_VALUE(CoerTextBox)], template: "<div class=\"coer-text-box\">\r\n @if(_showButtonLeft) {\r\n <div class=\"button-container\">\r\n <coer-button\r\n type=\"icon-no-border\"\r\n color=\"dark\"\r\n [icon]=\"_buttonIcon\" \r\n [isDisabled]=\"_buttonIsDisabled\" \r\n (onClick)=\"onClickButton.emit()\"\r\n ></coer-button>\r\n </div>\r\n }\r\n\r\n <mat-form-field\r\n [id]=\"_id + '-container'\"\r\n [floatLabel]=\"floatLabel()\"\r\n [ngClass]=\"{\r\n 'readonly': isReadonly() && !isLoading()\r\n }\"\r\n [style]=\"{\r\n 'width': width(),\r\n 'min-width': minWidth(),\r\n 'max-width': maxWidth(),\r\n 'margin-top': marginTop(),\r\n 'margin-right': marginRight(),\r\n 'margin-bottom': marginBottom(),\r\n 'margin-left': marginLeft()\r\n }\">\r\n <mat-label>{{ label() }}</mat-label>\r\n\r\n <input #coerTextBox matInput\r\n [id]=\"_id\"\r\n type=\"text\"\r\n [placeholder]=\"placeholder()\"\r\n [minLength]=\"minLength()\"\r\n [maxLength]=\"maxLength()\"\r\n [disabled]=\"!_isEnable()\"\r\n [value]=\"_value\"\r\n (input)=\"SetValue(coerTextBox.value)\"\r\n (blur)=\"SetTouched(true)\"\r\n [style]=\"{\r\n 'cursor': isLoading() ? 'wait' : null,\r\n 'margin-top': (floatLabel() == 'auto') ? '15px' : '9px',\r\n 'padding-right': paddingRight(),\r\n 'text-align': textPosition()\r\n }\">\r\n\r\n @if(isLoading()) {\r\n <div class=\"placeholder-glow\">\r\n <span class=\"placeholder\"></span>\r\n </div>\r\n }\r\n\r\n <span ngClass=\"icon-container\">\r\n @if(_showSearchIcon) {\r\n <i class=\"fa-solid fa-magnifying-glass cursor-pointer\" (click)=\"ClickSearch()\"></i>\r\n }\r\n\r\n @else if(_showClearIcon) {\r\n <i class=\"fa-solid fa-xmark cursor-pointer\" (click)=\"Clear(); this.onClickClear.emit();\"></i>\r\n }\r\n\r\n @else if(isInvalid() && !isDisabled() && !isLoading()) {\r\n <i class=\"fa-solid fa-circle-exclamation\"></i>\r\n }\r\n\r\n @else if(isValid() && !isDisabled() && !isLoading()) {\r\n <i class=\"fa-solid fa-circle-check text-green\"></i>\r\n }\r\n </span>\r\n </mat-form-field> \r\n\r\n @if(_showButtonRight) {\r\n <div class=\"button-container\">\r\n <coer-button\r\n type=\"icon-no-border\"\r\n color=\"dark\"\r\n [icon]=\"_buttonIcon\" \r\n [isDisabled]=\"_buttonIsDisabled\" \r\n (onClick)=\"onClickButton.emit()\"\r\n ></coer-button>\r\n </div>\r\n }\r\n</div>", styles: ["div.coer-text-box{display:flex;align-items:center}div.coer-text-box *{--blue: #0d6efd;--gray: #6c757d;--green: #198754;--yellow: #ffc107;--red: #dc3545;--white: #f5f5f5;--black: #252525;--orange: #fd6031;--purple: #a615bc}div.coer-text-box .text-blue{color:#0d6efd!important}div.coer-text-box .text-blue-bold{color:#0d6efd!important;font-weight:700!important}div.coer-text-box .background-blue{background-color:#0d6efd!important}div.coer-text-box .background-border-blue{background-color:#0d6efd!important;border-color:#0d6efd!important}div.coer-text-box .border-blue{border-color:#0d6efd!important}div.coer-text-box .text-gray{color:#6c757d!important}div.coer-text-box .text-gray-bold{color:#6c757d!important;font-weight:700!important}div.coer-text-box .background-gray{background-color:#6c757d!important}div.coer-text-box .background-border-gray{background-color:#6c757d!important;border-color:#6c757d!important}div.coer-text-box .border-gray{border-color:#6c757d!important}div.coer-text-box .text-green{color:#198754!important}div.coer-text-box .text-green-bold{color:#198754!important;font-weight:700!important}div.coer-text-box .background-green{background-color:#198754!important}div.coer-text-box .background-border-green{background-color:#198754!important;border-color:#198754!important}div.coer-text-box .border-green{border-color:#198754!important}div.coer-text-box .text-yellow{color:#ffc107!important}div.coer-text-box .text-yellow-bold{color:#ffc107!important;font-weight:700!important}div.coer-text-box .background-yellow{background-color:#ffc107!important}div.coer-text-box .background-border-yellow{background-color:#ffc107!important;border-color:#ffc107!important}div.coer-text-box .border-yellow{border-color:#ffc107!important}div.coer-text-box .text-red{color:#dc3545!important}div.coer-text-box .text-red-bold{color:#dc3545!important;font-weight:700!important}div.coer-text-box .background-red{background-color:#dc3545!important}div.coer-text-box .background-border-red{background-color:#dc3545!important;border-color:#dc3545!important}div.coer-text-box .border-red{border-color:#dc3545!important}div.coer-text-box .text-white{color:#f5f5f5!important}div.coer-text-box .text-white-bold{color:#f5f5f5!important;font-weight:700!important}div.coer-text-box .background-white{background-color:#f5f5f5!important}div.coer-text-box .background-border-white{background-color:#f5f5f5!important;border-color:#f5f5f5!important}div.coer-text-box .border-white{border-color:#f5f5f5!important}div.coer-text-box .text-black{color:#252525!important}div.coer-text-box .text-black-bold{color:#252525!important;font-weight:700!important}div.coer-text-box .background-black{background-color:#252525!important}div.coer-text-box .background-border-black{background-color:#252525!important;border-color:#252525!important}div.coer-text-box .border-black{border-color:#252525!important}div.coer-text-box .text-orange{color:#fd6031!important}div.coer-text-box .text-orange-bold{color:#fd6031!important;font-weight:700!important}div.coer-text-box .background-orange{background-color:#fd6031!important}div.coer-text-box .background-border-orange{background-color:#fd6031!important;border-color:#fd6031!important}div.coer-text-box .border-orange{border-color:#fd6031!important}div.coer-text-box .text-transparent{color:transparent!important}div.coer-text-box .background-transparent{background-color:transparent!important}div.coer-text-box .border-transparent{border-color:transparent!important}div.coer-text-box mat-form-field{position:relative!important}div.coer-text-box mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mat-mdc-form-field-flex{height:40px!important}div.coer-text-box mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mat-mdc-form-field-flex div.mat-mdc-form-field-infix{width:100%!important;height:40px!important;padding:0!important}div.coer-text-box mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mat-mdc-form-field-flex div.mat-mdc-form-field-infix label{overflow:visible!important;position:absolute!important;top:20px!important}div.coer-text-box mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mat-mdc-form-field-flex div.mat-mdc-form-field-infix label.mdc-floating-label--float-above mat-label{color:#fd6031;font-weight:700;position:relative;left:-10px;top:2px}div.coer-text-box mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mat-mdc-form-field-flex div.mat-mdc-form-field-infix input{font-weight:400!important;font-size:17px!important;color:#252525!important}div.coer-text-box mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mdc-line-ripple.mdc-line-ripple--active,div.coer-text-box mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mdc-line-ripple.mdc-line-ripple--active:before,div.coer-text-box mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mdc-line-ripple.mdc-line-ripple--active:after{border-bottom-color:#fd6031!important}div.coer-text-box mat-form-field div.mat-mdc-form-field-subscript-wrapper.mat-mdc-form-field-bottom-align{height:0px!important}div.coer-text-box mat-form-field span.icon-container{position:absolute!important;top:1px!important;right:-14px!important;z-index:5!important;width:30px;height:40px;display:flex;align-items:center;justify-content:center}div.coer-text-box mat-form-field span.icon-container i{font-size:20px!important}div.coer-text-box mat-form-field span.icon-container i.fa-solid.fa-xmark,div.coer-text-box mat-form-field span.icon-container i.fa-solid.fa-magnifying-glass{color:#caced1!important;cursor:pointer!important}div.coer-text-box mat-form-field span.icon-container i.fa-solid.fa-xmark:hover,div.coer-text-box mat-form-field span.icon-container i.fa-solid.fa-magnifying-glass:hover{color:#6c757d!important}div.coer-text-box mat-form-field span.icon-container i.fa-solid.fa-circle-check{color:#198754!important}div.coer-text-box mat-form-field span.icon-container i.fa-solid.fa-circle-exclamation{color:#dc3545!important}div.coer-text-box mat-form-field span.placeholder{width:calc(100% + 32px)!important;height:40px!important;position:absolute!important;z-index:1!important;top:0!important;left:-16px!important;cursor:wait!important}div.coer-text-box mat-form-field .placeholder,div.coer-text-box mat-form-field .placeholder *,div.coer-text-box mat-form-field .placeholder-glow,div.coer-text-box mat-form-field .placeholder-glow *{cursor:wait!important}div.coer-text-box mat-form-field.readonly div.mat-mdc-text-field-wrapper.mdc-text-field{background-color:#bbbbbb83!important}div.coer-text-box div.button-container{width:40px!important;height:40px!important;display:flex!important;align-items:center!important;justify-content:center!important;background-color:#e6e7e9!important}coer-grid table tbody tr td.coer-textbox mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field{background-color:transparent!important;padding-left:9px!important;padding-right:9px!important}coer-grid table tbody tr td.coer-textbox mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mdc-line-ripple,coer-grid table tbody tr td.coer-textbox mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mdc-line-ripple:before,coer-grid table tbody tr td.coer-textbox mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mdc-line-ripple:after{border-bottom-color:transparent!important}coer-grid table tbody tr td.coer-textbox mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mat-mdc-form-field-flex{height:28px!important}coer-grid table tbody tr td.coer-textbox mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mat-mdc-form-field-flex div.mat-mdc-form-field-infix{height:28px!important}coer-grid table tbody tr td.coer-textbox mat-form-field div.mat-mdc-text-field-wrapper.mdc-text-field div.mat-mdc-form-field-flex div.mat-mdc-form-field-infix input{margin-top:3px!important;font-size:14px!important}coer-grid table tbody tr td.coer-textbox mat-form-field span.icon-container{transform:translate(-5px,-6px)!important}\n"] }]
190
214
  }], propDecorators: { value: [{
191
215
  type: Input
192
216
  }], id: [{
193
217
  type: Input
218
+ }], button: [{
219
+ type: Input
194
220
  }] } });
195
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lci10ZXh0Ym94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZXItZWxlbWVudHMvY29tcG9uZW50cy9saWIvY29lci10ZXh0Ym94L2NvZXItdGV4dGJveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2VyLWVsZW1lbnRzL2NvbXBvbmVudHMvbGliL2NvZXItdGV4dGJveC9jb2VyLXRleHRib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQWMsS0FBSyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7QUFRekUsTUFBTSxPQUFPLFdBQVksU0FBUSxZQUFZO0lBTjdDOztRQVFJLGlCQUFpQjtRQUNFLFdBQU0sR0FBb0IsRUFBRSxDQUFDO1FBQ3RDLGlCQUFZLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBYSxjQUFjLENBQUMsQ0FBQztRQUM5RCxnQkFBVyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQWEsYUFBYSxDQUFDLENBQUM7UUFFdEUsV0FBVztRQUNELFFBQUcsR0FBVyxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzVDLG9CQUFlLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBUzFDLE9BQUUsR0FBVyxFQUFFLENBQUM7UUFDbEIsVUFBSyxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUMxQixnQkFBVyxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUNoQyxjQUFTLEdBQUcsS0FBSyxDQUFrQixDQUFDLENBQUMsQ0FBQztRQUN0QyxjQUFTLEdBQUcsS0FBSyxDQUFrQixFQUFFLENBQUMsQ0FBQztRQUN2QyxtQkFBYyxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUN2QyxrQkFBYSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUN0QyxVQUFLLEdBQUcsS0FBSyxDQUFTLE1BQU0sQ0FBQyxDQUFDO1FBQzlCLGFBQVEsR0FBRyxLQUFLLENBQVMsT0FBTyxDQUFDLENBQUM7UUFDbEMsYUFBUSxHQUFHLEtBQUssQ0FBUyxNQUFNLENBQUMsQ0FBQztRQUNqQyxjQUFTLEdBQUcsS0FBSyxDQUFTLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLGdCQUFXLEdBQUcsS0FBSyxDQUFTLEtBQUssQ0FBQyxDQUFDO1FBQ25DLGlCQUFZLEdBQUcsS0FBSyxDQUFTLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLGVBQVUsR0FBRyxLQUFLLENBQVMsS0FBSyxDQUFDLENBQUM7UUFDbEMsY0FBUyxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNsQyxZQUFPLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLGVBQVUsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDbkMsZUFBVSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNuQyxjQUFTLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLGtCQUFhLEdBQUcsS0FBSyxDQUFVLElBQUksQ0FBQyxDQUFDO1FBQ3JDLGlCQUFZLEdBQUcsS0FBSyxDQUE4QixNQUFNLENBQUMsQ0FBQztRQUVqRSxTQUFTO1FBQ0YsaUJBQVksR0FBRyxNQUFNLEVBQW1CLENBQUM7UUFDekMsWUFBTyxHQUFHLE1BQU0sRUFBbUIsQ0FBQztRQUNwQyxpQkFBWSxHQUFHLE1BQU0sRUFBUSxDQUFDO1FBK0JyQyxVQUFVO1FBQ0EsY0FBUyxHQUFHLFFBQVEsQ0FBVSxHQUFHLEVBQUU7WUFDekMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN6RSxDQUFDLENBQUMsQ0FBQztRQUlILFVBQVU7UUFDQSxlQUFVLEdBQUcsUUFBUSxDQUFvQixHQUFHLEVBQUU7WUFDcEQsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQTtRQUNqRCxDQUFDLENBQUMsQ0FBQztRQUdILFVBQVU7UUFDQSxpQkFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDbkMsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDckMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO0tBcUhOO0lBcE1HLFFBQVE7SUFDUixJQUFhLEtBQUssQ0FBQyxLQUF5QztRQUN4RCxJQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1lBQUUsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUE2QkQsUUFBUTtRQUNKLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBR0QsUUFBUTtJQUNSLElBQWMsZUFBZTtRQUN6QixPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUU7ZUFDckIsQ0FBQyxJQUFJLENBQUMsY0FBYztlQUNwQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7ZUFDbEIsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUE7SUFDNUIsQ0FBQztJQUdELFFBQVE7SUFDUixJQUFjLGNBQWM7UUFDeEIsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFO2VBQ3BCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtlQUNsQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7ZUFDakIsSUFBSSxDQUFDLE1BQU0sSUFBSSxTQUFTO2VBQ3hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQTtJQUN6QyxDQUFDO0lBRUQsUUFBUTtJQUNSLElBQVcsS0FBSztRQUNaLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBdUJELE1BQU07SUFDRSxTQUFTO1FBQ2IsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQXNCLENBQUM7WUFFdEUsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO29CQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTt3QkFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7eUJBQzlCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTt3QkFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2pELENBQUMsQ0FBQyxDQUFDO2dCQUVILElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBb0IsRUFBRSxFQUFFO29CQUM1RCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO3dCQUNuQixNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDO3dCQUV0QixJQUFJLEdBQUcsS0FBSyxPQUFPLEVBQUUsQ0FBQzs0QkFDbEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7NEJBQ3JELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUM5QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7d0JBQ2hCLENBQUM7b0JBQ0wsQ0FBQztnQkFDTCxDQUFDLENBQUMsQ0FBQztnQkFFSCxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFFekQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO29CQUN4QyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTt3QkFDcEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7d0JBQ3JELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTs0QkFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDbkQsQ0FBQyxDQUFDLENBQUM7Z0JBQ1AsQ0FBQyxDQUFDLENBQUM7Z0JBR0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO29CQUN4QyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTt3QkFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7b0JBQ2pELENBQUMsQ0FBQyxDQUFDO2dCQUNQLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUdELE1BQU07SUFDQyxLQUFLLENBQUMsVUFBa0IsQ0FBQztRQUM1QixJQUFHLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFBRSxPQUFPOztZQUM3QixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVwQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDM0IsSUFBRyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN6QixDQUFDO1lBRUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBR0QsTUFBTTtJQUNDLE1BQU0sQ0FBQyxVQUFrQixDQUFDO1FBQzdCLElBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUFFLE9BQU87O1lBQzdCLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXBDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUMzQixJQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzFCLENBQUM7WUFFRCxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFHRCxNQUFNO0lBQ0MsSUFBSTtRQUNQLElBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUFFLE9BQU87O1lBQzdCLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXBDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ3BCLElBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNkLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBRXBCLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUNwQixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcscUNBQXFDLENBQUMsQ0FBQztvQkFDMUYsSUFBSSxPQUFPO3dCQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7Z0JBQ3JFLENBQUMsQ0FBQyxDQUFBO1lBQ04sQ0FBQztZQUVELElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUdELE1BQU07SUFDQyxLQUFLO1FBQ1IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUdELE1BQU07SUFDSSxXQUFXO1FBQ2pCLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ3BCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7Z0JBQ25CLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtvQkFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7cUJBRWxDLENBQUM7b0JBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUNwQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2hCLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDOytHQS9NUSxXQUFXO21HQUFYLFdBQVcsbS9GQUZULENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLDRSQ1AzQyxrc0VBMkRNOzs0RkRsRE8sV0FBVztrQkFOdkIsU0FBUzsrQkFDSSxjQUFjLGFBR2IsQ0FBQyxhQUFhLGFBQWEsQ0FBQzs4QkFlMUIsS0FBSztzQkFBakIsS0FBSztnQkFLRyxFQUFFO3NCQUFWLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBFbGVtZW50UmVmLCBpbnB1dCwgSW5wdXQsIE9uSW5pdCwgb3V0cHV0LCBzaWduYWwsIHZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDT05UUk9MX1ZBTFVFLCBDb250cm9sVmFsdWUsIFRvb2xzIH0gZnJvbSAnY29lci1lbGVtZW50cy90b29scyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnY29lci10ZXh0Ym94JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb2VyLXRleHRib3guY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmw6ICcuL2NvZXItdGV4dGJveC5jb21wb25lbnQuc2NzcycsXHJcbiAgICBwcm92aWRlcnM6IFtDT05UUk9MX1ZBTFVFKENvZXJUZXh0Qm94KV1cclxufSlcclxuZXhwb3J0IGNsYXNzIENvZXJUZXh0Qm94IGV4dGVuZHMgQ29udHJvbFZhbHVlIGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgICAvL0NvbXBvbmVudCBWYWx1ZVxyXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIF92YWx1ZTogc3RyaW5nIHwgbnVtYmVyID0gJyc7XHJcbiAgICBwcm90ZWN0ZWQgbWF0Rm9ybUZpZWxkID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY+KCdtYXRGb3JtRmllbGQnKTtcclxuICAgIHByb3RlY3RlZCBjb2VyVGV4dEJveCA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPignY29lclRleHRCb3gnKTtcclxuXHJcbiAgICAvL1ZhcmlhYmxlc1xyXG4gICAgcHJvdGVjdGVkIF9pZDogc3RyaW5nID0gVG9vbHMuR2V0R3VpZCgnY29lci10ZXh0Qm94Jyk7XHJcbiAgICBwcm90ZWN0ZWQgX2lzTG9hZGluZ0V2ZW50ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHByaXZhdGUgZWxlbWVudCE6IEhUTUxJbnB1dEVsZW1lbnQ7XHJcblxyXG4gICAgLy9JbnB1dHNcclxuICAgIEBJbnB1dCgpIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGlmKFRvb2xzLklzTnVsbCh2YWx1ZSkpIHZhbHVlID0gJyc7XHJcbiAgICAgICAgdGhpcy5TZXRWYWx1ZSh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KCkgaWQ6IHN0cmluZyA9ICcnO1xyXG4gICAgcHVibGljIGxhYmVsID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcbiAgICBwdWJsaWMgcGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuICAgIHB1YmxpYyBtaW5MZW5ndGggPSBpbnB1dDxudW1iZXIgfCBzdHJpbmc+KDApO1xyXG4gICAgcHVibGljIG1heExlbmd0aCA9IGlucHV0PG51bWJlciB8IHN0cmluZz4oNTApO1xyXG4gICAgcHVibGljIHNob3dTZWFyY2hJY29uID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgcHVibGljIHNob3dDbGVhckljb24gPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBwdWJsaWMgd2lkdGggPSBpbnB1dDxzdHJpbmc+KCcxMDAlJyk7XHJcbiAgICBwdWJsaWMgbWluV2lkdGggPSBpbnB1dDxzdHJpbmc+KCcxOTBweCcpO1xyXG4gICAgcHVibGljIG1heFdpZHRoID0gaW5wdXQ8c3RyaW5nPignMTAwJScpO1xyXG4gICAgcHVibGljIG1hcmdpblRvcCA9IGlucHV0PHN0cmluZz4oJzBweCcpO1xyXG4gICAgcHVibGljIG1hcmdpblJpZ2h0ID0gaW5wdXQ8c3RyaW5nPignMHB4Jyk7XHJcbiAgICBwdWJsaWMgbWFyZ2luQm90dG9tID0gaW5wdXQ8c3RyaW5nPignMHB4Jyk7XHJcbiAgICBwdWJsaWMgbWFyZ2luTGVmdCA9IGlucHV0PHN0cmluZz4oJzBweCcpO1xyXG4gICAgcHVibGljIGlzSW52YWxpZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHB1YmxpYyBpc1ZhbGlkID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgcHVibGljIGlzRGlzYWJsZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBwdWJsaWMgaXNSZWFkb25seSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHB1YmxpYyBpc0xvYWRpbmcgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBwdWJsaWMgc2VsZWN0T25Gb2N1cyA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG4gICAgcHVibGljIHRleHRQb3NpdGlvbiA9IGlucHV0PCdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0Jz4oJ2xlZnQnKTtcclxuXHJcbiAgICAvL091dHB1dHNcclxuICAgIHB1YmxpYyBvbktleXVwRW50ZXIgPSBvdXRwdXQ8c3RyaW5nIHwgbnVtYmVyPigpO1xyXG4gICAgcHVibGljIG9uSW5wdXQgPSBvdXRwdXQ8c3RyaW5nIHwgbnVtYmVyPigpO1xyXG4gICAgcHVibGljIG9uQ2xpY2tDbGVhciA9IG91dHB1dDx2b2lkPigpO1xyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuU2V0RXZlbnRzKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vZ2V0dGVyXHJcbiAgICBwcm90ZWN0ZWQgZ2V0IF9zaG93U2VhcmNoSWNvbigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zaG93U2VhcmNoSWNvbigpXHJcbiAgICAgICAgICAgICYmICF0aGlzLl9zaG93Q2xlYXJJY29uXHJcbiAgICAgICAgICAgICYmICF0aGlzLmlzRGlzYWJsZWQoKVxyXG4gICAgICAgICAgICAmJiAhdGhpcy5pc0xvYWRpbmcoKVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvL2dldHRlclxyXG4gICAgcHJvdGVjdGVkIGdldCBfc2hvd0NsZWFySWNvbigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zaG93Q2xlYXJJY29uKClcclxuICAgICAgICAgICAgJiYgIXRoaXMuaXNEaXNhYmxlZCgpXHJcbiAgICAgICAgICAgICYmICF0aGlzLmlzTG9hZGluZygpXHJcbiAgICAgICAgICAgICYmIHRoaXMuX3ZhbHVlICE9IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICAmJiBTdHJpbmcodGhpcy5fdmFsdWUpLmxlbmd0aCA+IDBcclxuICAgIH1cclxuXHJcbiAgICAvL2dldHRlclxyXG4gICAgcHVibGljIGdldCB2YWx1ZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vY29tcHV0ZWRcclxuICAgIHByb3RlY3RlZCBfaXNFbmFibGUgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuICF0aGlzLmlzRGlzYWJsZWQoKSAmJiAhdGhpcy5pc0xvYWRpbmcoKSAmJiAhdGhpcy5pc1JlYWRvbmx5KCk7XHJcbiAgICB9KTtcclxuXHJcblxyXG5cclxuICAgIC8vY29tcHV0ZWRcclxuICAgIHByb3RlY3RlZCBmbG9hdExhYmVsID0gY29tcHV0ZWQ8J2F1dG8nIHwgJ2Fsd2F5cyc+KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5sYWJlbCgpID09ICcnID8gJ2Fsd2F5cycgOiAnYXV0bydcclxuICAgIH0pO1xyXG5cclxuXHJcbiAgICAvL2NvbXB1dGVkXHJcbiAgICBwcm90ZWN0ZWQgcGFkZGluZ1JpZ2h0ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmlzSW52YWxpZCgpIHx8IHRoaXMuaXNWYWxpZCgpXHJcbiAgICAgICAgICAgID8gJzE4cHgnIDogJzBweCc7XHJcbiAgICB9KTtcclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcml2YXRlIFNldEV2ZW50cygpOiB2b2lkIHtcclxuICAgICAgICBUb29scy5TbGVlcCgpLnRoZW4oKCk9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuX2lkKSEgYXMgSFRNTElucHV0RWxlbWVudDtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2lzRW5hYmxlKCkpIHRoaXMuQmx1cigpO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuc2VsZWN0T25Gb2N1cygpKSB0aGlzLlNlbGVjdCgpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2lzRW5hYmxlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBrZXkgfSA9IGV2ZW50O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSA9PT0gJ0VudGVyJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmNvZXJUZXh0Qm94KCkubmF0aXZlRWxlbWVudC52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25LZXl1cEVudGVyLmVtaXQodmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5CbHVyKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsICgpID0+IHRoaXMuQmx1cigpKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgVG9vbHMuU2xlZXAoKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmNvZXJUZXh0Qm94KCkubmF0aXZlRWxlbWVudC52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2lzRW5hYmxlKCkpIHRoaXMub25JbnB1dC5lbWl0KHZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncGFzdGUnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgVG9vbHMuU2xlZXAoKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5TZXRWYWx1ZSh0aGlzLl92YWx1ZS50b1N0cmluZygpLnRyaW0oKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHB1YmxpYyBGb2N1cyh0aW1lb3V0OiBudW1iZXIgPSAwKTogdm9pZCB7XHJcbiAgICAgICAgaWYodGhpcy5faXNMb2FkaW5nRXZlbnQoKSkgcmV0dXJuO1xyXG4gICAgICAgIGVsc2UgdGhpcy5faXNMb2FkaW5nRXZlbnQuc2V0KHRydWUpO1xyXG5cclxuICAgICAgICBUb29scy5TbGVlcCh0aW1lb3V0KS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgaWYodGhpcy5faXNFbmFibGUoKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2lzTG9hZGluZ0V2ZW50LnNldChmYWxzZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHVibGljIFNlbGVjdCh0aW1lb3V0OiBudW1iZXIgPSAwKTogdm9pZCB7XHJcbiAgICAgICAgaWYodGhpcy5faXNMb2FkaW5nRXZlbnQoKSkgcmV0dXJuO1xyXG4gICAgICAgIGVsc2UgdGhpcy5faXNMb2FkaW5nRXZlbnQuc2V0KHRydWUpO1xyXG5cclxuICAgICAgICBUb29scy5TbGVlcCh0aW1lb3V0KS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgaWYodGhpcy5faXNFbmFibGUoKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuc2VsZWN0KCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2lzTG9hZGluZ0V2ZW50LnNldChmYWxzZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHVibGljIEJsdXIoKTogdm9pZCB7XHJcbiAgICAgICAgaWYodGhpcy5faXNMb2FkaW5nRXZlbnQoKSkgcmV0dXJuO1xyXG4gICAgICAgIGVsc2UgdGhpcy5faXNMb2FkaW5nRXZlbnQuc2V0KHRydWUpO1xyXG5cclxuICAgICAgICBUb29scy5TbGVlcCgpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICBpZih0aGlzLmVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5ibHVyKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgVG9vbHMuU2xlZXAoKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7dGhpcy5faWR9LWNvbnRhaW5lciAubWRjLWxpbmUtcmlwcGxlLS1hY3RpdmVgKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCkgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdtZGMtbGluZS1yaXBwbGUtLWFjdGl2ZScpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5faXNMb2FkaW5nRXZlbnQuc2V0KGZhbHNlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwdWJsaWMgQ2xlYXIoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5TZXRWYWx1ZSgnJyk7XHJcbiAgICAgICAgdGhpcy5Gb2N1cygpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByb3RlY3RlZCBDbGlja1NlYXJjaCgpOiB2b2lkIHtcclxuICAgICAgICBUb29scy5TbGVlcCgpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5faXNFbmFibGUoKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2hvd0NsZWFySWNvbigpKSB0aGlzLkZvY3VzKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbktleXVwRW50ZXIuZW1pdCh0aGlzLl92YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5CbHVyKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgfVxyXG59IiwiPGRpdiBjbGFzcz1cImNvZXItdGV4dC1ib3hcIj5cclxuICAgIDxtYXQtZm9ybS1maWVsZFxyXG4gICAgICAgIFtpZF09XCJfaWQgKyAnLWNvbnRhaW5lcidcIlxyXG4gICAgICAgIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWwoKVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAncmVhZG9ubHknOiBpc1JlYWRvbmx5KCkgJiYgIWlzTG9hZGluZygpXHJcbiAgICAgICAgfVwiXHJcbiAgICAgICAgW3N0eWxlXT1cIntcclxuICAgICAgICAgICAgJ3dpZHRoJzogd2lkdGgoKSxcclxuICAgICAgICAgICAgJ21pbi13aWR0aCc6IG1pbldpZHRoKCksXHJcbiAgICAgICAgICAgICdtYXgtd2lkdGgnOiBtYXhXaWR0aCgpLFxyXG4gICAgICAgICAgICAnbWFyZ2luLXRvcCc6IG1hcmdpblRvcCgpLFxyXG4gICAgICAgICAgICAnbWFyZ2luLXJpZ2h0JzogbWFyZ2luUmlnaHQoKSxcclxuICAgICAgICAgICAgJ21hcmdpbi1ib3R0b20nOiBtYXJnaW5Cb3R0b20oKSxcclxuICAgICAgICAgICAgJ21hcmdpbi1sZWZ0JzogbWFyZ2luTGVmdCgpXHJcbiAgICAgICAgfVwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+e3sgbGFiZWwoKSB9fTwvbWF0LWxhYmVsPlxyXG5cclxuICAgICAgICA8aW5wdXQgI2NvZXJUZXh0Qm94IG1hdElucHV0XHJcbiAgICAgICAgICAgIFtpZF09XCJfaWRcIlxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcigpXCJcclxuICAgICAgICAgICAgW21pbkxlbmd0aF09XCJtaW5MZW5ndGgoKVwiXHJcbiAgICAgICAgICAgIFttYXhMZW5ndGhdPVwibWF4TGVuZ3RoKClcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIV9pc0VuYWJsZSgpXCJcclxuICAgICAgICAgICAgW3ZhbHVlXT1cIl92YWx1ZVwiXHJcbiAgICAgICAgICAgIChpbnB1dCk9XCJTZXRWYWx1ZShjb2VyVGV4dEJveC52YWx1ZSlcIlxyXG4gICAgICAgICAgICAoYmx1cik9XCJTZXRUb3VjaGVkKHRydWUpXCJcclxuICAgICAgICAgICAgW3N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICdjdXJzb3InOiBpc0xvYWRpbmcoKSA/ICd3YWl0JyA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAnbWFyZ2luLXRvcCc6IChmbG9hdExhYmVsKCkgPT0gJ2F1dG8nKSA/ICcxNXB4JyA6ICc5cHgnLFxyXG4gICAgICAgICAgICAgICAgJ3BhZGRpbmctcmlnaHQnOiBwYWRkaW5nUmlnaHQoKSxcclxuICAgICAgICAgICAgICAgICd0ZXh0LWFsaWduJzogdGV4dFBvc2l0aW9uKClcclxuICAgICAgICAgICAgfVwiPlxyXG5cclxuICAgICAgICBAaWYoaXNMb2FkaW5nKCkpIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsYWNlaG9sZGVyLWdsb3dcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGxhY2Vob2xkZXJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgPHNwYW4gbmdDbGFzcz1cImljb24tY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIEBpZihfc2hvd1NlYXJjaEljb24pIHtcclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtbWFnbmlmeWluZy1nbGFzcyBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJDbGlja1NlYXJjaCgpXCI+PC9pPlxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBAZWxzZSBpZihfc2hvd0NsZWFySWNvbikge1xyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS14bWFyayBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJDbGVhcigpOyB0aGlzLm9uQ2xpY2tDbGVhci5lbWl0KCk7XCI+PC9pPlxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBAZWxzZSBpZihpc0ludmFsaWQoKSAmJiAhaXNEaXNhYmxlZCgpICYmICFpc0xvYWRpbmcoKSkge1xyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1jaXJjbGUtZXhjbGFtYXRpb25cIj48L2k+XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIEBlbHNlIGlmKGlzVmFsaWQoKSAmJiAhaXNEaXNhYmxlZCgpICYmICFpc0xvYWRpbmcoKSkge1xyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1jaXJjbGUtY2hlY2sgdGV4dC1ncmVlblwiPjwvaT5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+IFxyXG48L2Rpdj4iXX0=
221
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lci10ZXh0Ym94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZXItZWxlbWVudHMvY29tcG9uZW50cy9saWIvY29lci10ZXh0Ym94L2NvZXItdGV4dGJveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2VyLWVsZW1lbnRzL2NvbXBvbmVudHMvbGliL2NvZXItdGV4dGJveC9jb2VyLXRleHRib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQWMsS0FBSyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqSCxPQUFPLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7O0FBUXpFLE1BQU0sT0FBTyxXQUFZLFNBQVEsWUFBWTtJQU43Qzs7UUFRSSxpQkFBaUI7UUFDRSxXQUFNLEdBQW9CLEVBQUUsQ0FBQztRQUN0QyxpQkFBWSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQWEsY0FBYyxDQUFDLENBQUM7UUFDOUQsZ0JBQVcsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFhLGFBQWEsQ0FBQyxDQUFDO1FBRXRFLFdBQVc7UUFDRCxRQUFHLEdBQVcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM1QyxvQkFBZSxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztRQVMxQyxPQUFFLEdBQVcsRUFBRSxDQUFDO1FBQ2hCLFdBQU0sR0FBZSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUN2QyxVQUFLLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzFCLGdCQUFXLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFD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LHlCQUF5QixDQUFDLENBQUM7Z0JBQ3JFLENBQUMsQ0FBQyxDQUFBO1lBQ04sQ0FBQztZQUVELElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUdELE1BQU07SUFDQyxLQUFLO1FBQ1IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUdELE1BQU07SUFDSSxXQUFXO1FBQ2pCLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ3BCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7Z0JBQ25CLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtvQkFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7cUJBRWxDLENBQUM7b0JBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUNwQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2hCLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDOytHQWhQUSxXQUFXO21HQUFYLFdBQVcsK29HQUZULENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLDRSQ1IzQyx1OUZBbUZNOzs0RkR6RU8sV0FBVztrQkFOdkIsU0FBUzsrQkFDSSxjQUFjLGFBR2IsQ0FBQyxhQUFhLGFBQWEsQ0FBQzs4QkFlMUIsS0FBSztzQkFBakIsS0FBSztnQkFLRyxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgRWxlbWVudFJlZiwgaW5wdXQsIElucHV0LCBPbkluaXQsIG91dHB1dCwgc2lnbmFsLCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSUJveEJ1dHRvbiB9IGZyb20gJ2NvZXItZWxlbWVudHMvaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IENPTlRST0xfVkFMVUUsIENvbnRyb2xWYWx1ZSwgVG9vbHMgfSBmcm9tICdjb2VyLWVsZW1lbnRzL3Rvb2xzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdjb2VyLXRleHRib3gnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvZXItdGV4dGJveC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybDogJy4vY29lci10ZXh0Ym94LmNvbXBvbmVudC5zY3NzJyxcclxuICAgIHByb3ZpZGVyczogW0NPTlRST0xfVkFMVUUoQ29lclRleHRCb3gpXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29lclRleHRCb3ggZXh0ZW5kcyBDb250cm9sVmFsdWUgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAgIC8vQ29tcG9uZW50IFZhbHVlXHJcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgX3ZhbHVlOiBzdHJpbmcgfCBudW1iZXIgPSAnJztcclxuICAgIHByb3RlY3RlZCBtYXRGb3JtRmllbGQgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZj4oJ21hdEZvcm1GaWVsZCcpO1xyXG4gICAgcHJvdGVjdGVkIGNvZXJUZXh0Qm94ID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY+KCdjb2VyVGV4dEJveCcpO1xyXG5cclxuICAgIC8vVmFyaWFibGVzXHJcbiAgICBwcm90ZWN0ZWQgX2lkOiBzdHJpbmcgPSBUb29scy5HZXRHdWlkKCdjb2VyLXRleHRCb3gnKTtcclxuICAgIHByb3RlY3RlZCBfaXNMb2FkaW5nRXZlbnQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgcHJpdmF0ZSBlbGVtZW50ITogSFRNTElucHV0RWxlbWVudDtcclxuXHJcbiAgICAvL0lucHV0c1xyXG4gICAgQElucHV0KCkgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgaWYoVG9vbHMuSXNOdWxsKHZhbHVlKSkgdmFsdWUgPSAnJztcclxuICAgICAgICB0aGlzLlNldFZhbHVlKHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKSBpZDogc3RyaW5nID0gJyc7XHJcbiAgICBASW5wdXQoKSBidXR0b246IElCb3hCdXR0b24gPSB7IHNob3c6IGZhbHNlIH07XHJcbiAgICBwdWJsaWMgbGFiZWwgPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuICAgIHB1YmxpYyBwbGFjZWhvbGRlciA9IGlucHV0PHN0cmluZz4oJycpO1xyXG4gICAgcHVibGljIG1pbkxlbmd0aCA9IGlucHV0PG51bWJlciB8IHN0cmluZz4oMCk7XHJcbiAgICBwdWJsaWMgbWF4TGVuZ3RoID0gaW5wdXQ8bnVtYmVyIHwgc3RyaW5nPig1MCk7XHJcbiAgICBwdWJsaWMgc2hvd1NlYXJjaEljb24gPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBwdWJsaWMgc2hvd0NsZWFySWNvbiA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHB1YmxpYyB3aWR0aCA9IGlucHV0PHN0cmluZz4oJzEwMCUnKTtcclxuICAgIHB1YmxpYyBtaW5XaWR0aCA9IGlucHV0PHN0cmluZz4oJzE5MHB4Jyk7XHJcbiAgICBwdWJsaWMgbWF4V2lkdGggPSBpbnB1dDxzdHJpbmc+KCcxMDAlJyk7XHJcbiAgICBwdWJsaWMgbWFyZ2luVG9wID0gaW5wdXQ8c3RyaW5nPignMHB4Jyk7XHJcbiAgICBwdWJsaWMgbWFyZ2luUmlnaHQgPSBpbnB1dDxzdHJpbmc+KCcwcHgnKTtcclxuICAgIHB1YmxpYyBtYXJnaW5Cb3R0b20gPSBpbnB1dDxzdHJpbmc+KCcwcHgnKTtcclxuICAgIHB1YmxpYyBtYXJnaW5MZWZ0ID0gaW5wdXQ8c3RyaW5nPignMHB4Jyk7XHJcbiAgICBwdWJsaWMgaXNJbnZhbGlkID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgcHVibGljIGlzVmFsaWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBwdWJsaWMgaXNEaXNhYmxlZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHB1YmxpYyBpc1JlYWRvbmx5ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgcHVibGljIGlzTG9hZGluZyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHB1YmxpYyBzZWxlY3RPbkZvY3VzID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcbiAgICBwdWJsaWMgdGV4dFBvc2l0aW9uID0gaW5wdXQ8J2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnPignbGVmdCcpOyBcclxuXHJcbiAgICAvL091dHB1dHNcclxuICAgIHB1YmxpYyBvbktleXVwRW50ZXIgPSBvdXRwdXQ8c3RyaW5nIHwgbnVtYmVyPigpO1xyXG4gICAgcHVibGljIG9uSW5wdXQgPSBvdXRwdXQ8c3RyaW5nIHwgbnVtYmVyPigpO1xyXG4gICAgcHVibGljIG9uQ2xpY2tDbGVhciA9IG91dHB1dDx2b2lkPigpO1xyXG4gICAgcHVibGljIG9uQ2xpY2tCdXR0b24gPSBvdXRwdXQ8dm9pZD4oKTtcclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLlNldEV2ZW50cygpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvL2dldHRlclxyXG4gICAgcHJvdGVjdGVkIGdldCBfc2hvd1NlYXJjaEljb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hvd1NlYXJjaEljb24oKVxyXG4gICAgICAgICAgICAmJiAhdGhpcy5fc2hvd0NsZWFySWNvblxyXG4gICAgICAgICAgICAmJiAhdGhpcy5pc0Rpc2FibGVkKClcclxuICAgICAgICAgICAgJiYgIXRoaXMuaXNMb2FkaW5nKClcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy9nZXR0ZXJcclxuICAgIHByb3RlY3RlZCBnZXQgX3Nob3dDbGVhckljb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hvd0NsZWFySWNvbigpXHJcbiAgICAgICAgICAgICYmICF0aGlzLmlzRGlzYWJsZWQoKVxyXG4gICAgICAgICAgICAmJiAhdGhpcy5pc0xvYWRpbmcoKVxyXG4gICAgICAgICAgICAmJiB0aGlzLl92YWx1ZSAhPSB1bmRlZmluZWRcclxuICAgICAgICAgICAgJiYgU3RyaW5nKHRoaXMuX3ZhbHVlKS5sZW5ndGggPiAwXHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vZ2V0dGVyXHJcbiAgICBwcm90ZWN0ZWQgZ2V0IF9zaG93QnV0dG9uTGVmdCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5idXR0b24uc2hvd1xyXG4gICAgICAgICAgICAmJiBUb29scy5Jc05vdE51bGwodGhpcy5idXR0b24/LnBvc2l0aW9uKSAgICAgXHJcbiAgICAgICAgICAgICYmIHRoaXMuYnV0dG9uPy5wb3NpdGlvbiA9PT0gJ2xlZnQnOyAgIFxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvL2dldHRlclxyXG4gICAgcHJvdGVjdGVkIGdldCBfc2hvd0J1dHRvblJpZ2h0KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAgdGhpcy5idXR0b24uc2hvd1xyXG4gICAgICAgICAgICAmJiAoKFRvb2xzLklzTnVsbCh0aGlzLmJ1dHRvbj8ucG9zaXRpb24pIHx8IHRoaXMuYnV0dG9uPy5wb3NpdGlvbiA9PT0gJ3JpZ2h0JykpXHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvL2dldHRlclxyXG4gICAgcHJvdGVjdGVkIGdldCBfYnV0dG9uSWNvbigpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiAoVG9vbHMuSXNOb3RPbmx5V2hpdGVTcGFjZSh0aGlzLmJ1dHRvbj8uaWNvbikpXHJcbiAgICAgICAgICAgID8gdGhpcy5idXR0b24uaWNvbiEgOiAncG9pbnRlcic7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vZ2V0dGVyXHJcbiAgICBwcm90ZWN0ZWQgZ2V0IF9idXR0b25Jc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAoVG9vbHMuSXNOb3ROdWxsKHRoaXMuYnV0dG9uPy5pc0Rpc2FibGVkKSlcclxuICAgICAgICAgICAgPyB0aGlzLmJ1dHRvbi5pc0Rpc2FibGVkISA6IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvL2dldHRlclxyXG4gICAgcHVibGljIGdldCB2YWx1ZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vY29tcHV0ZWRcclxuICAgIHByb3RlY3RlZCBfaXNFbmFibGUgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuICF0aGlzLmlzRGlzYWJsZWQoKSAmJiAhdGhpcy5pc0xvYWRpbmcoKSAmJiAhdGhpcy5pc1JlYWRvbmx5KCk7XHJcbiAgICB9KTtcclxuXHJcblxyXG5cclxuICAgIC8vY29tcHV0ZWRcclxuICAgIHByb3RlY3RlZCBmbG9hdExhYmVsID0gY29tcHV0ZWQ8J2F1dG8nIHwgJ2Fsd2F5cyc+KCgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5sYWJlbCgpID09ICcnID8gJ2Fsd2F5cycgOiAnYXV0bydcclxuICAgIH0pO1xyXG5cclxuXHJcbiAgICAvL2NvbXB1dGVkXHJcbiAgICBwcm90ZWN0ZWQgcGFkZGluZ1JpZ2h0ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmlzSW52YWxpZCgpIHx8IHRoaXMuaXNWYWxpZCgpXHJcbiAgICAgICAgICAgID8gJzE4cHgnIDogJzBweCc7XHJcbiAgICB9KTtcclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcml2YXRlIFNldEV2ZW50cygpOiB2b2lkIHtcclxuICAgICAgICBUb29scy5TbGVlcCgpLnRoZW4oKCk9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuX2lkKSEgYXMgSFRNTElucHV0RWxlbWVudDtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2lzRW5hYmxlKCkpIHRoaXMuQmx1cigpO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuc2VsZWN0T25Gb2N1cygpKSB0aGlzLlNlbGVjdCgpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2lzRW5hYmxlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBrZXkgfSA9IGV2ZW50O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSA9PT0gJ0VudGVyJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmNvZXJUZXh0Qm94KCkubmF0aXZlRWxlbWVudC52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25LZXl1cEVudGVyLmVtaXQodmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5CbHVyKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsICgpID0+IHRoaXMuQmx1cigpKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgVG9vbHMuU2xlZXAoKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmNvZXJUZXh0Qm94KCkubmF0aXZlRWxlbWVudC52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2lzRW5hYmxlKCkpIHRoaXMub25JbnB1dC5lbWl0KHZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncGFzdGUnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgVG9vbHMuU2xlZXAoKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5TZXRWYWx1ZSh0aGlzLl92YWx1ZS50b1N0cmluZygpLnRyaW0oKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHB1YmxpYyBGb2N1cyh0aW1lb3V0OiBudW1iZXIgPSAwKTogdm9pZCB7XHJcbiAgICAgICAgaWYodGhpcy5faXNMb2FkaW5nRXZlbnQoKSkgcmV0dXJuO1xyXG4gICAgICAgIGVsc2UgdGhpcy5faXNMb2FkaW5nRXZlbnQuc2V0KHRydWUpO1xyXG5cclxuICAgICAgICBUb29scy5TbGVlcCh0aW1lb3V0KS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgaWYodGhpcy5faXNFbmFibGUoKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2lzTG9hZGluZ0V2ZW50LnNldChmYWxzZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHVibGljIFNlbGVjdCh0aW1lb3V0OiBudW1iZXIgPSAwKTogdm9pZCB7XHJcbiAgICAgICAgaWYodGhpcy5faXNMb2FkaW5nRXZlbnQoKSkgcmV0dXJuO1xyXG4gICAgICAgIGVsc2UgdGhpcy5faXNMb2FkaW5nRXZlbnQuc2V0KHRydWUpO1xyXG5cclxuICAgICAgICBUb29scy5TbGVlcCh0aW1lb3V0KS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgaWYodGhpcy5faXNFbmFibGUoKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuc2VsZWN0KCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2lzTG9hZGluZ0V2ZW50LnNldChmYWxzZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHVibGljIEJsdXIoKTogdm9pZCB7XHJcbiAgICAgICAgaWYodGhpcy5faXNMb2FkaW5nRXZlbnQoKSkgcmV0dXJuO1xyXG4gICAgICAgIGVsc2UgdGhpcy5faXNMb2FkaW5nRXZlbnQuc2V0KHRydWUpO1xyXG5cclxuICAgICAgICBUb29scy5TbGVlcCgpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICBpZih0aGlzLmVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5ibHVyKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgVG9vbHMuU2xlZXAoKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7dGhpcy5faWR9LWNvbnRhaW5lciAubWRjLWxpbmUtcmlwcGxlLS1hY3RpdmVgKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCkgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdtZGMtbGluZS1yaXBwbGUtLWFjdGl2ZScpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5faXNMb2FkaW5nRXZlbnQuc2V0KGZhbHNlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwdWJsaWMgQ2xlYXIoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5TZXRWYWx1ZSgnJyk7XHJcbiAgICAgICAgdGhpcy5Gb2N1cygpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByb3RlY3RlZCBDbGlja1NlYXJjaCgpOiB2b2lkIHtcclxuICAgICAgICBUb29scy5TbGVlcCgpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5faXNFbmFibGUoKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2hvd0NsZWFySWNvbigpKSB0aGlzLkZvY3VzKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbktleXVwRW50ZXIuZW1pdCh0aGlzLl92YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5CbHVyKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgfVxyXG59IiwiPGRpdiBjbGFzcz1cImNvZXItdGV4dC1ib3hcIj5cclxuICAgIEBpZihfc2hvd0J1dHRvbkxlZnQpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8Y29lci1idXR0b25cclxuICAgICAgICAgICAgICAgIHR5cGU9XCJpY29uLW5vLWJvcmRlclwiXHJcbiAgICAgICAgICAgICAgICBjb2xvcj1cImRhcmtcIlxyXG4gICAgICAgICAgICAgICAgW2ljb25dPVwiX2J1dHRvbkljb25cIiAgXHJcbiAgICAgICAgICAgICAgICBbaXNEaXNhYmxlZF09XCJfYnV0dG9uSXNEaXNhYmxlZFwiIFxyXG4gICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwib25DbGlja0J1dHRvbi5lbWl0KClcIlxyXG4gICAgICAgICAgICA+PC9jb2VyLWJ1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIH1cclxuXHJcbiAgICA8bWF0LWZvcm0tZmllbGRcclxuICAgICAgICBbaWRdPVwiX2lkICsgJy1jb250YWluZXInXCJcclxuICAgICAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsKClcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgJ3JlYWRvbmx5JzogaXNSZWFkb25seSgpICYmICFpc0xvYWRpbmcoKVxyXG4gICAgICAgIH1cIlxyXG4gICAgICAgIFtzdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICd3aWR0aCc6IHdpZHRoKCksXHJcbiAgICAgICAgICAgICdtaW4td2lkdGgnOiBtaW5XaWR0aCgpLFxyXG4gICAgICAgICAgICAnbWF4LXdpZHRoJzogbWF4V2lkdGgoKSxcclxuICAgICAgICAgICAgJ21hcmdpbi10b3AnOiBtYXJnaW5Ub3AoKSxcclxuICAgICAgICAgICAgJ21hcmdpbi1yaWdodCc6IG1hcmdpblJpZ2h0KCksXHJcbiAgICAgICAgICAgICdtYXJnaW4tYm90dG9tJzogbWFyZ2luQm90dG9tKCksXHJcbiAgICAgICAgICAgICdtYXJnaW4tbGVmdCc6IG1hcmdpbkxlZnQoKVxyXG4gICAgICAgIH1cIj5cclxuICAgICAgICA8bWF0LWxhYmVsPnt7IGxhYmVsKCkgfX08L21hdC1sYWJlbD5cclxuXHJcbiAgICAgICAgPGlucHV0ICNjb2VyVGV4dEJveCBtYXRJbnB1dFxyXG4gICAgICAgICAgICBbaWRdPVwiX2lkXCJcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKVwiXHJcbiAgICAgICAgICAgIFttaW5MZW5ndGhdPVwibWluTGVuZ3RoKClcIlxyXG4gICAgICAgICAgICBbbWF4TGVuZ3RoXT1cIm1heExlbmd0aCgpXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFfaXNFbmFibGUoKVwiXHJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJfdmFsdWVcIlxyXG4gICAgICAgICAgICAoaW5wdXQpPVwiU2V0VmFsdWUoY29lclRleHRCb3gudmFsdWUpXCJcclxuICAgICAgICAgICAgKGJsdXIpPVwiU2V0VG91Y2hlZCh0cnVlKVwiXHJcbiAgICAgICAgICAgIFtzdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAnY3Vyc29yJzogaXNMb2FkaW5nKCkgPyAnd2FpdCcgOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgJ21hcmdpbi10b3AnOiAoZmxvYXRMYWJlbCgpID09ICdhdXRvJykgPyAnMTVweCcgOiAnOXB4JyxcclxuICAgICAgICAgICAgICAgICdwYWRkaW5nLXJpZ2h0JzogcGFkZGluZ1JpZ2h0KCksXHJcbiAgICAgICAgICAgICAgICAndGV4dC1hbGlnbic6IHRleHRQb3NpdGlvbigpXHJcbiAgICAgICAgICAgIH1cIj5cclxuXHJcbiAgICAgICAgQGlmKGlzTG9hZGluZygpKSB7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwbGFjZWhvbGRlci1nbG93XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBsYWNlaG9sZGVyXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIDxzcGFuIG5nQ2xhc3M9XCJpY29uLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICBAaWYoX3Nob3dTZWFyY2hJY29uKSB7XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLW1hZ25pZnlpbmctZ2xhc3MgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiQ2xpY2tTZWFyY2goKVwiPjwvaT5cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgQGVsc2UgaWYoX3Nob3dDbGVhckljb24pIHtcclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEteG1hcmsgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiQ2xlYXIoKTsgdGhpcy5vbkNsaWNrQ2xlYXIuZW1pdCgpO1wiPjwvaT5cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgQGVsc2UgaWYoaXNJbnZhbGlkKCkgJiYgIWlzRGlzYWJsZWQoKSAmJiAhaXNMb2FkaW5nKCkpIHtcclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtY2lyY2xlLWV4Y2xhbWF0aW9uXCI+PC9pPlxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBAZWxzZSBpZihpc1ZhbGlkKCkgJiYgIWlzRGlzYWJsZWQoKSAmJiAhaXNMb2FkaW5nKCkpIHtcclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtY2lyY2xlLWNoZWNrIHRleHQtZ3JlZW5cIj48L2k+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPiBcclxuXHJcbiAgICBAaWYoX3Nob3dCdXR0b25SaWdodCkge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxjb2VyLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImljb24tbm8tYm9yZGVyXCJcclxuICAgICAgICAgICAgICAgIGNvbG9yPVwiZGFya1wiXHJcbiAgICAgICAgICAgICAgICBbaWNvbl09XCJfYnV0dG9uSWNvblwiICBcclxuICAgICAgICAgICAgICAgIFtpc0Rpc2FibGVkXT1cIl9idXR0b25Jc0Rpc2FibGVkXCIgXHJcbiAgICAgICAgICAgICAgICAob25DbGljayk9XCJvbkNsaWNrQnV0dG9uLmVtaXQoKVwiXHJcbiAgICAgICAgICAgID48L2NvZXItYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG48L2Rpdj4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm94LWJ1dHRvbi5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2VyLWVsZW1lbnRzL2ludGVyZmFjZXMvbGliL2JveC1idXR0b24uaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIElCb3hCdXR0b24ge1xyXG4gICAgc2hvdzogYm9vbGVhbjtcclxuICAgIHBvc2l0aW9uPzogJ2xlZnQnIHwgJ3JpZ2h0JzsgXHJcbiAgICBpc0Rpc2FibGVkPzogYm9vbGVhbjsgXHJcbiAgICBpY29uPzogc3RyaW5nOyBcclxufSJdfQ==
@@ -34,6 +34,7 @@ export * from './lib/service/http-request.interface';
34
34
  export * from './lib/service/http-response.interface';
35
35
  export * from './lib/service/patch.interface';
36
36
  export * from './lib/app-source.interface';
37
+ export * from './lib/box-button.interface';
37
38
  export * from './lib/coer-ref.interface';
38
39
  export * from './lib/screen-size.interface';
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZXItZWxlbWVudHMvaW50ZXJmYWNlcy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWM7QUFDZCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsbUNBQW1DLENBQUM7QUFFbEQsV0FBVztBQUNYLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxxQ0FBcUMsQ0FBQztBQUVwRCxXQUFXO0FBQ1gsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsZ0NBQWdDLENBQUM7QUFFL0MsWUFBWTtBQUNaLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxvQ0FBb0MsQ0FBQztBQUVuRCxTQUFTO0FBQ1QsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsK0JBQStCLENBQUM7QUFFOUMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsNkJBQTZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvL2NvZXItZmlsZWJveFxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2VyLWZpbGVib3gvZmlsZS1pbWFnZS5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2VyLWZpbGVib3gvZmlsZS5pbnRlcmZhY2UnO1xyXG5cclxuLy9jb2VyLWdyaWRcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29lci1ncmlkL2dyaWQtYnV0dG9uLWJ5LXJvdy5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2VyLWdyaWQvZ3JpZC1jaGVja2JveC5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2VyLWdyaWQvZ3JpZC1jb2VyLW51bWJlcmJveC5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2VyLWdyaWQvZ3JpZC1jb2VyLXNlbGVjdGJveC5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2VyLWdyaWQvZ3JpZC1jb2VyLXN3aXRjaC5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2VyLWdyaWQvZ3JpZC1jb2VyLXRleHRib3guaW50ZXJmYWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29lci1ncmlkL2dyaWQtY29sdW1uLmludGVyZmFjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvZXItZ3JpZC9ncmlkLWRhdGEtc291cmNlLmludGVyZmFjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvZXItZ3JpZC9ncmlkLWhlYWRlci1idXR0b24uaW50ZXJmYWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29lci1ncmlkL2dyaWQtaGVhZGVyLWV4cG9ydC1idXR0b24uaW50ZXJmYWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29lci1ncmlkL2dyaWQtaGVhZGVyLmludGVyZmFjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvZXItZ3JpZC9ncmlkLWltcG9ydC5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2VyLWdyaWQvZ3JpZC1pbnB1dC1jaGVja2JveC5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2VyLWdyaWQvZ3JpZC1pbnB1dC1zd2l0Y2gtY2hhbmdlLmludGVyZmFjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvZXItZ3JpZC9ncmlkLWlucHV0LXRleHRib3guaW50ZXJmYWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29lci1ncmlkL2dyaWQtaXRlbS5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2VyLWdyaWQvZ3JpZC1rZXl1cC1lbnRlci5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2VyLWdyaWQvZ3JpZC1sZW5ndGguaW50ZXJmYWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29lci1ncmlkL2dyaWQtc2VhcmNoLmludGVyZmFjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvZXItZ3JpZC9ncmlkLXNvcnQuaW50ZXJmYWNlJztcclxuXHJcbi8vY29lci1tZW51XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvZXItbWVudS9tZW51LW9wdGlvbi1zZWxlY3RlZC5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2VyLW1lbnUvbWVudS1zZWxlY3RlZC5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2VyLW1lbnUvbWVudS5pbnRlcmZhY2UnO1xyXG5cclxuLy9wYWdlLXRpdGxlXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BhZ2UtdGl0bGUvYnJlYWRjcnVtYi5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wYWdlLXRpdGxlL2dvLWJhY2suaW50ZXJmYWNlJztcclxuXHJcbi8vc2VydmljZVxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL2h0dHAtcmVxdWVzdC5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL2h0dHAtcmVzcG9uc2UuaW50ZXJmYWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZS9wYXRjaC5pbnRlcmZhY2UnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwLXNvdXJjZS5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2VyLXJlZi5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zY3JlZW4tc2l6ZS5pbnRlcmZhY2UnOyJdfQ==
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZXItZWxlbWVudHMvaW50ZXJmYWNlcy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWM7QUFDZCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsbUNBQW1DLENBQUM7QUFFbEQsV0FBVztBQUNYLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxxQ0FBcUMsQ0FBQztBQUVwRCxXQUFXO0FBQ1gsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsZ0NBQWdDLENBQUM7QUFFL0MsWUFBWTtBQUNaLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxvQ0FBb0MsQ0FBQztBQUVuRCxTQUFTO0FBQ1QsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsK0JBQStCLENBQUM7QUFFOUMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyw2QkFBNkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vY29lci1maWxlYm94XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvZXItZmlsZWJveC9maWxlLWltYWdlLmludGVyZmFjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvZXItZmlsZWJveC9maWxlLmludGVyZmFjZSc7XHJcblxyXG4vL2NvZXItZ3JpZFxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2VyLWdyaWQvZ3JpZC1idXR0b24tYnktcm93LmludGVyZmFjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvZXItZ3JpZC9ncmlkLWNoZWNrYm94LmludGVyZmFjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvZXItZ3JpZC9ncmlkLWNvZXItbnVtYmVyYm94LmludGVyZmFjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvZXItZ3JpZC9ncmlkLWNvZXItc2VsZWN0Ym94LmludGVyZmFjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvZXItZ3JpZC9ncmlkLWNvZXItc3dpdGNoLmludGVyZmFjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvZXItZ3JpZC9ncmlkLWNvZXItdGV4dGJveC5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2VyLWdyaWQvZ3JpZC1jb2x1bW4uaW50ZXJmYWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29lci1ncmlkL2dyaWQtZGF0YS1zb3VyY2UuaW50ZXJmYWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29lci1ncmlkL2dyaWQtaGVhZGVyLWJ1dHRvbi5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2VyLWdyaWQvZ3JpZC1oZWFkZXItZXhwb3J0LWJ1dHRvbi5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2VyLWdyaWQvZ3JpZC1oZWFkZXIuaW50ZXJmYWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29lci1ncmlkL2dyaWQtaW1wb3J0LmludGVyZmFjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvZXItZ3JpZC9ncmlkLWlucHV0LWNoZWNrYm94LmludGVyZmFjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvZXItZ3JpZC9ncmlkLWlucHV0LXN3aXRjaC1jaGFuZ2UuaW50ZXJmYWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29lci1ncmlkL2dyaWQtaW5wdXQtdGV4dGJveC5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2VyLWdyaWQvZ3JpZC1pdGVtLmludGVyZmFjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvZXItZ3JpZC9ncmlkLWtleXVwLWVudGVyLmludGVyZmFjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvZXItZ3JpZC9ncmlkLWxlbmd0aC5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2VyLWdyaWQvZ3JpZC1zZWFyY2guaW50ZXJmYWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29lci1ncmlkL2dyaWQtc29ydC5pbnRlcmZhY2UnO1xyXG5cclxuLy9jb2VyLW1lbnVcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29lci1tZW51L21lbnUtb3B0aW9uLXNlbGVjdGVkLmludGVyZmFjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvZXItbWVudS9tZW51LXNlbGVjdGVkLmludGVyZmFjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvZXItbWVudS9tZW51LmludGVyZmFjZSc7XHJcblxyXG4vL3BhZ2UtdGl0bGVcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGFnZS10aXRsZS9icmVhZGNydW1iLmludGVyZmFjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BhZ2UtdGl0bGUvZ28tYmFjay5pbnRlcmZhY2UnO1xyXG5cclxuLy9zZXJ2aWNlXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UvaHR0cC1yZXF1ZXN0LmludGVyZmFjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UvaHR0cC1yZXNwb25zZS5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL3BhdGNoLmludGVyZmFjZSc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHAtc291cmNlLmludGVyZmFjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JveC1idXR0b24uaW50ZXJmYWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29lci1yZWYuaW50ZXJmYWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2NyZWVuLXNpemUuaW50ZXJmYWNlJzsiXX0=