@sapphire-ion/framework 1.0.40 → 1.0.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { Component, ContentChild, ElementRef, EventEmitter, Input, Output, TemplateRef } from '@angular/core';
1
+ import { Component, ContentChild, ElementRef, EventEmitter, Input, output, Output, TemplateRef } from '@angular/core';
2
2
  import { ActivatedRoute } from '@angular/router';
3
3
  import { firstValueFrom } from 'rxjs';
4
4
  import { HttpServiceAtivo } from '../../../services/web/http.ativo.service';
@@ -43,6 +43,7 @@ export class DefaultListComponent extends List {
43
43
  this.noBreadcrumbs = false;
44
44
  /** Caminho de redirecionamento do item */
45
45
  this.itemPath = "view/:id";
46
+ this.itemClick = output();
46
47
  }
47
48
  async Ativar(id) {
48
49
  if (!(this.service instanceof HttpServiceAtivo)) {
@@ -61,11 +62,11 @@ export class DefaultListComponent extends List {
61
62
  await super.ngOnInit();
62
63
  }
63
64
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultListComponent, deps: [{ token: i0.ElementRef }, { token: i1.ActivatedRoute }, { token: i2.GenericService }], target: i0.ɵɵFactoryTarget.Component }); }
64
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DefaultListComponent, selector: "default-list", inputs: { noNew: "noNew", noPage: "noPage", noSearch: "noSearch", columnClass: "columnClass", columnStyle: "columnStyle", overrideNew: "overrideNew", noPagination: "noPagination", noBreadcrumbs: "noBreadcrumbs", itemPath: "itemPath" }, outputs: { onNewEmitter: "onNew" }, queries: [{ propertyName: "acoesTemplate", first: true, predicate: ["tmpAcoes"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ion-content class=\"bg-transparent\">\r\n <div class=\"wrapper\" [ngClass]=\"{'!p-0 translucid-primary-background': nested}\">\r\n @if (!noBreadcrumbs) {\r\n <ion-breadcrumbs>\r\n <ion-breadcrumb [routerLink]=\"[service ? service.route : '']\" [replaceUrl]=\"true\">{{service.title}}</ion-breadcrumb>\r\n </ion-breadcrumbs>\r\n }\r\n <ion-card>\r\n <ion-card-header [ngClass]=\"{'!px-0 !pb-0': noNew && noPage && noSearch}\">\r\n <header-list \r\n [(limit)]=\"frm.limit\"\r\n [(search)]=\"frm.search\" \r\n [(page)]=\"frm.page\" \r\n [loading]=\"loading\" \r\n (refresh)=\"Refresh()\"\r\n [noNew]=\"noNew\"\r\n [noPage]=\"noPage\"\r\n [noSearch]=\"noSearch\"\r\n [overrideNew]=\"overrideNew\"\r\n (onNew)=\"onNewEmitter.emit()\"\r\n > \r\n <ng-content slot=\"start\" select=\"[slot=header-start]\"></ng-content>\r\n <ng-content slot=\"end\" select=\"[slot=header-end]\"></ng-content>\r\n </header-list>\r\n </ion-card-header>\r\n <ion-card-content>\r\n <ion-refresher slot=\"fixed\" class=\"z-20\" (ionRefresh)=\"Refresh($event)\">\r\n <ion-refresher-content></ion-refresher-content>\r\n </ion-refresher>\r\n <div class=\"size-full ion-content-scroll-host\">\r\n @if(frm){\r\n <default-table \r\n class=\"block size-full relative\" \r\n [ngClass]=\"{ 'translate-y-0' : !loading }\"\r\n [loading]=\"loading\"\r\n [items]=\"lstDados\" \r\n [total]=\"total\"\r\n [(limit)]=\"frm.limit\"\r\n [(page)]=\"frm.page\"\r\n [(ascending)]=\"frm.ascending\"\r\n [(orderByProperty)]=\"frm.orderByProperty\"\r\n [(filter)]=\"frm.filter\"\r\n [itemPath]=\"itemPath\"\r\n [columnClass]=\"columnClass\"\r\n [columnStyle]=\"columnStyle\"\r\n [service]=\"service\"\r\n [acoesTemplate]=\"acoesTemplate\"\r\n (refresh)=\"Refresh();\"\r\n (ativar)=\"Ativar($event)\"\r\n [lstTableFields]=\"lstTableFields\"\r\n [noPagination]=\"noPagination\"\r\n >\r\n </default-table>\r\n }\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n </div>\r\n</ion-content>", styles: [""], dependencies: [{ kind: "component", type: i3.IonBreadcrumb, selector: "ion-breadcrumb", inputs: ["active", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "separator", "target"] }, { kind: "component", type: i3.IonBreadcrumbs, selector: "ion-breadcrumbs", inputs: ["color", "itemsAfterCollapse", "itemsBeforeCollapse", "maxItems", "mode"] }, { kind: "component", type: i3.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i3.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i3.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: i3.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i3.IonRefresher, selector: "ion-refresher", inputs: ["closeDuration", "disabled", "mode", "pullFactor", "pullMax", "pullMin", "snapbackDuration"] }, { kind: "component", type: i3.IonRefresherContent, selector: "ion-refresher-content", inputs: ["pullingIcon", "pullingText", "refreshingSpinner", "refreshingText"] }, { kind: "directive", type: i3.RouterLinkDelegate, selector: ":not(a):not(area)[routerLink]" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i5.HeaderListComponent, selector: "header-list", inputs: ["limit", "page", "search", "loading", "link", "noNew", "noPage", "noSearch", "overrideNew"], outputs: ["limitChange", "pageChange", "searchChange", "refresh", "onNew"] }, { kind: "component", type: i6.DefaultTableComponent, selector: "default-table", inputs: ["acoesTemplate", "service", "total", "limit", "page", "orderByProperty", "ascending", "filter", "loading", "items", "lstTableFields", "noFilters", "columnClass", "columnStyle", "noPagination", "itemPath"], outputs: ["totalChange", "limitChange", "pageChange", "orderByPropertyChange", "ascendingChange", "filterChange", "ativar", "refresh", "loadingChange", "itemsChange", "lstTableFieldsChange", "itemClick"] }] }); }
65
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DefaultListComponent, selector: "default-list", inputs: { noNew: "noNew", noPage: "noPage", noSearch: "noSearch", columnClass: "columnClass", columnStyle: "columnStyle", overrideNew: "overrideNew", noPagination: "noPagination", noBreadcrumbs: "noBreadcrumbs", itemPath: "itemPath" }, outputs: { onNewEmitter: "onNew", itemClick: "itemClick" }, queries: [{ propertyName: "acoesTemplate", first: true, predicate: ["tmpAcoes"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ion-content class=\"bg-transparent\">\r\n <div class=\"wrapper\" [ngClass]=\"{'!p-0 translucid-primary-background': nested}\">\r\n @if (!noBreadcrumbs) {\r\n <ion-breadcrumbs>\r\n <ion-breadcrumb [routerLink]=\"[service ? service.route : '']\" [replaceUrl]=\"true\">{{service.title}}</ion-breadcrumb>\r\n </ion-breadcrumbs>\r\n }\r\n <ion-card>\r\n <ion-card-header [ngClass]=\"{'!px-0 !pb-0': noNew && noPage && noSearch}\">\r\n <header-list \r\n [(limit)]=\"frm.limit\"\r\n [(search)]=\"frm.search\" \r\n [(page)]=\"frm.page\" \r\n [loading]=\"loading\" \r\n (refresh)=\"Refresh()\"\r\n [noNew]=\"noNew\"\r\n [noPage]=\"noPage\"\r\n [noSearch]=\"noSearch\"\r\n [overrideNew]=\"overrideNew\"\r\n (onNew)=\"onNewEmitter.emit()\"\r\n > \r\n <ng-content slot=\"start\" select=\"[slot=header-start]\"></ng-content>\r\n <ng-content slot=\"end\" select=\"[slot=header-end]\"></ng-content>\r\n </header-list>\r\n </ion-card-header>\r\n <ion-card-content>\r\n <ion-refresher slot=\"fixed\" class=\"z-20\" (ionRefresh)=\"Refresh($event)\">\r\n <ion-refresher-content></ion-refresher-content>\r\n </ion-refresher>\r\n <div class=\"size-full ion-content-scroll-host\">\r\n @if(frm){\r\n <default-table \r\n class=\"block size-full relative\" \r\n [ngClass]=\"{ 'translate-y-0' : !loading }\"\r\n [loading]=\"loading\"\r\n [items]=\"lstDados\" \r\n [total]=\"total\"\r\n [(limit)]=\"frm.limit\"\r\n [(page)]=\"frm.page\"\r\n [(ascending)]=\"frm.ascending\"\r\n [(orderByProperty)]=\"frm.orderByProperty\"\r\n [(filter)]=\"frm.filter\"\r\n (itemClick)=\"itemClick.emit($event)\"\r\n [itemPath]=\"itemPath\"\r\n [columnClass]=\"columnClass\"\r\n [columnStyle]=\"columnStyle\"\r\n [service]=\"service\"\r\n [acoesTemplate]=\"acoesTemplate\"\r\n (refresh)=\"Refresh();\"\r\n (ativar)=\"Ativar($event)\"\r\n [lstTableFields]=\"lstTableFields\"\r\n [noPagination]=\"noPagination\"\r\n >\r\n </default-table>\r\n }\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n </div>\r\n</ion-content>", styles: [""], dependencies: [{ kind: "component", type: i3.IonBreadcrumb, selector: "ion-breadcrumb", inputs: ["active", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "separator", "target"] }, { kind: "component", type: i3.IonBreadcrumbs, selector: "ion-breadcrumbs", inputs: ["color", "itemsAfterCollapse", "itemsBeforeCollapse", "maxItems", "mode"] }, { kind: "component", type: i3.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i3.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i3.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: i3.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i3.IonRefresher, selector: "ion-refresher", inputs: ["closeDuration", "disabled", "mode", "pullFactor", "pullMax", "pullMin", "snapbackDuration"] }, { kind: "component", type: i3.IonRefresherContent, selector: "ion-refresher-content", inputs: ["pullingIcon", "pullingText", "refreshingSpinner", "refreshingText"] }, { kind: "directive", type: i3.RouterLinkDelegate, selector: ":not(a):not(area)[routerLink]" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i5.HeaderListComponent, selector: "header-list", inputs: ["limit", "page", "search", "loading", "link", "noNew", "noPage", "noSearch", "overrideNew"], outputs: ["limitChange", "pageChange", "searchChange", "refresh", "onNew"] }, { kind: "component", type: i6.DefaultTableComponent, selector: "default-table", inputs: ["acoesTemplate", "service", "total", "limit", "page", "orderByProperty", "ascending", "filter", "loading", "items", "lstTableFields", "noFilters", "columnClass", "columnStyle", "noPagination", "itemPath"], outputs: ["totalChange", "limitChange", "pageChange", "orderByPropertyChange", "ascendingChange", "filterChange", "ativar", "refresh", "loadingChange", "itemsChange", "lstTableFieldsChange", "itemClick"] }] }); }
65
66
  }
66
67
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultListComponent, decorators: [{
67
68
  type: Component,
68
- args: [{ selector: 'default-list', template: "<ion-content class=\"bg-transparent\">\r\n <div class=\"wrapper\" [ngClass]=\"{'!p-0 translucid-primary-background': nested}\">\r\n @if (!noBreadcrumbs) {\r\n <ion-breadcrumbs>\r\n <ion-breadcrumb [routerLink]=\"[service ? service.route : '']\" [replaceUrl]=\"true\">{{service.title}}</ion-breadcrumb>\r\n </ion-breadcrumbs>\r\n }\r\n <ion-card>\r\n <ion-card-header [ngClass]=\"{'!px-0 !pb-0': noNew && noPage && noSearch}\">\r\n <header-list \r\n [(limit)]=\"frm.limit\"\r\n [(search)]=\"frm.search\" \r\n [(page)]=\"frm.page\" \r\n [loading]=\"loading\" \r\n (refresh)=\"Refresh()\"\r\n [noNew]=\"noNew\"\r\n [noPage]=\"noPage\"\r\n [noSearch]=\"noSearch\"\r\n [overrideNew]=\"overrideNew\"\r\n (onNew)=\"onNewEmitter.emit()\"\r\n > \r\n <ng-content slot=\"start\" select=\"[slot=header-start]\"></ng-content>\r\n <ng-content slot=\"end\" select=\"[slot=header-end]\"></ng-content>\r\n </header-list>\r\n </ion-card-header>\r\n <ion-card-content>\r\n <ion-refresher slot=\"fixed\" class=\"z-20\" (ionRefresh)=\"Refresh($event)\">\r\n <ion-refresher-content></ion-refresher-content>\r\n </ion-refresher>\r\n <div class=\"size-full ion-content-scroll-host\">\r\n @if(frm){\r\n <default-table \r\n class=\"block size-full relative\" \r\n [ngClass]=\"{ 'translate-y-0' : !loading }\"\r\n [loading]=\"loading\"\r\n [items]=\"lstDados\" \r\n [total]=\"total\"\r\n [(limit)]=\"frm.limit\"\r\n [(page)]=\"frm.page\"\r\n [(ascending)]=\"frm.ascending\"\r\n [(orderByProperty)]=\"frm.orderByProperty\"\r\n [(filter)]=\"frm.filter\"\r\n [itemPath]=\"itemPath\"\r\n [columnClass]=\"columnClass\"\r\n [columnStyle]=\"columnStyle\"\r\n [service]=\"service\"\r\n [acoesTemplate]=\"acoesTemplate\"\r\n (refresh)=\"Refresh();\"\r\n (ativar)=\"Ativar($event)\"\r\n [lstTableFields]=\"lstTableFields\"\r\n [noPagination]=\"noPagination\"\r\n >\r\n </default-table>\r\n }\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n </div>\r\n</ion-content>" }]
69
+ args: [{ selector: 'default-list', template: "<ion-content class=\"bg-transparent\">\r\n <div class=\"wrapper\" [ngClass]=\"{'!p-0 translucid-primary-background': nested}\">\r\n @if (!noBreadcrumbs) {\r\n <ion-breadcrumbs>\r\n <ion-breadcrumb [routerLink]=\"[service ? service.route : '']\" [replaceUrl]=\"true\">{{service.title}}</ion-breadcrumb>\r\n </ion-breadcrumbs>\r\n }\r\n <ion-card>\r\n <ion-card-header [ngClass]=\"{'!px-0 !pb-0': noNew && noPage && noSearch}\">\r\n <header-list \r\n [(limit)]=\"frm.limit\"\r\n [(search)]=\"frm.search\" \r\n [(page)]=\"frm.page\" \r\n [loading]=\"loading\" \r\n (refresh)=\"Refresh()\"\r\n [noNew]=\"noNew\"\r\n [noPage]=\"noPage\"\r\n [noSearch]=\"noSearch\"\r\n [overrideNew]=\"overrideNew\"\r\n (onNew)=\"onNewEmitter.emit()\"\r\n > \r\n <ng-content slot=\"start\" select=\"[slot=header-start]\"></ng-content>\r\n <ng-content slot=\"end\" select=\"[slot=header-end]\"></ng-content>\r\n </header-list>\r\n </ion-card-header>\r\n <ion-card-content>\r\n <ion-refresher slot=\"fixed\" class=\"z-20\" (ionRefresh)=\"Refresh($event)\">\r\n <ion-refresher-content></ion-refresher-content>\r\n </ion-refresher>\r\n <div class=\"size-full ion-content-scroll-host\">\r\n @if(frm){\r\n <default-table \r\n class=\"block size-full relative\" \r\n [ngClass]=\"{ 'translate-y-0' : !loading }\"\r\n [loading]=\"loading\"\r\n [items]=\"lstDados\" \r\n [total]=\"total\"\r\n [(limit)]=\"frm.limit\"\r\n [(page)]=\"frm.page\"\r\n [(ascending)]=\"frm.ascending\"\r\n [(orderByProperty)]=\"frm.orderByProperty\"\r\n [(filter)]=\"frm.filter\"\r\n (itemClick)=\"itemClick.emit($event)\"\r\n [itemPath]=\"itemPath\"\r\n [columnClass]=\"columnClass\"\r\n [columnStyle]=\"columnStyle\"\r\n [service]=\"service\"\r\n [acoesTemplate]=\"acoesTemplate\"\r\n (refresh)=\"Refresh();\"\r\n (ativar)=\"Ativar($event)\"\r\n [lstTableFields]=\"lstTableFields\"\r\n [noPagination]=\"noPagination\"\r\n >\r\n </default-table>\r\n }\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n </div>\r\n</ion-content>" }]
69
70
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.ActivatedRoute }, { type: i2.GenericService }], propDecorators: { noNew: [{
70
71
  type: Input
71
72
  }], noPage: [{
@@ -91,4 +92,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
91
92
  }], itemPath: [{
92
93
  type: Input
93
94
  }] } });
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kZWZhdWx0L2RlZmF1bHQtbGlzdC9kZWZhdWx0LWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2RlZmF1bHQvZGVmYXVsdC1saXN0L2RlZmF1bHQtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVuRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDOzs7Ozs7OztBQUU5Qjs7O0dBR0c7QUFNSCxNQUFNLE9BQU8sb0JBQTRDLFNBQVEsSUFBTztJQThCdEUsWUFDa0IsVUFBMEIsRUFDMUIsY0FBOEIsRUFDOUIsY0FBOEI7UUFDNUMsS0FBSyxFQUFFLENBQUM7UUFITSxlQUFVLEdBQVYsVUFBVSxDQUFnQjtRQUMxQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBL0JoRCxrQkFBa0I7UUFDbEIsc0NBQXNDO1FBQzdCLFVBQUssR0FBWSxLQUFLLENBQUM7UUFDaEMscUNBQXFDO1FBQzVCLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFDakMsZ0RBQWdEO1FBQ3ZDLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFbkMsZ0dBQWdHO1FBQ3ZGLGdCQUFXLEdBQW1ELElBQUksQ0FBQztRQUM1RSw4RkFBOEY7UUFDckYsZ0JBQVcsR0FBbUQsSUFBSSxDQUFDO1FBRTVFLHNGQUFzRjtRQUM3RSxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUN0QywyQ0FBMkM7UUFDMUIsaUJBQVksR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUc3RSxxQkFBcUI7UUFFckIscUNBQXFDO1FBQzVCLGlCQUFZLEdBQWEsS0FBSyxDQUFDO1FBQ3hDLHdDQUF3QztRQUMvQixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUN4QywwQ0FBMEM7UUFDakMsYUFBUSxHQUFrQixVQUFVLENBQUE7SUFNaEMsQ0FBQztJQUVQLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBVTtRQUM1QixJQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxZQUFZLGdCQUFnQixDQUFDLEVBQUMsQ0FBQztZQUFDLE9BQU87UUFBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUcsQ0FBQztZQUNGLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pCLENBQUM7UUFBQSxNQUFLLENBQUM7WUFDTCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUN2QixDQUFDO0lBQ0gsQ0FBQztJQUVRLEtBQUssQ0FBQyxRQUFRO1FBQ3JCLE1BQU0sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7K0dBakRVLG9CQUFvQjttR0FBcEIsb0JBQW9CLGtjQ2xCakMsazZFQTBEYzs7NEZEeENELG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxjQUFjO3lJQVFmLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0csV0FBVztzQkFBbkIsS0FBSztnQkFFVyxZQUFZO3NCQUE1QixNQUFNO3VCQUFDLE9BQU87Z0JBRThCLGFBQWE7c0JBQXpELFlBQVk7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFJbEMsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlQXRpdm8gfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy93ZWIvaHR0cC5hdGl2by5zZXJ2aWNlJztcclxuaW1wb3J0IHsgR2VuZXJpY1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9nZW5lcmljLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3dlYi9odHRwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMaXN0IH0gZnJvbSAnLi9saXN0JztcclxuXHJcbi8qKiBDb21wb25lbnRlIGRlIGxpc3RhZ2VtIHBhZHLDo29cclxuICogVGlwbyBHZW5lcmljIGRldmUgc2VyIHVtIHNlcnZpY2UgSHR0cFNlcnZpY2UgXHJcbiAqIEBsaW5rIGh0dHBzOi8vc2FwcGhpcmUtaW9uLWZyYW1ld29yay5naXRib29rLmlvL2ZyYW1ld29yay9jb21wb25lbnRlcy1kZWZhdWx0L2RlZmF1bHQtbGlzdFxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkZWZhdWx0LWxpc3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kZWZhdWx0LWxpc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RlZmF1bHQtbGlzdC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGVmYXVsdExpc3RDb21wb25lbnQ8VCBleHRlbmRzIEh0dHBTZXJ2aWNlPiBleHRlbmRzIExpc3Q8VD4gaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAvLyNyZWdpb24gW0BUYWJsZV1cclxuICAvKiogUmVtb3ZlIG8gYm90w6NvIE5PVk8gZGEgbGlzdGFnZW0gKi9cclxuICBASW5wdXQoKSBub05ldzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8qKiBSZW1vdmUgYSBwYWdpbmHDp8OjbyBkYSBsaXN0YWdlbSAqL1xyXG4gIEBJbnB1dCgpIG5vUGFnZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8qKiBSZW1vdmUgbyBlbGVtZW50byBkZSBwZXNxdWlzYSBkYSBsaXN0YWdlbSAqL1xyXG4gIEBJbnB1dCgpIG5vU2VhcmNoOiBib29sZWFuID0gZmFsc2U7XHJcbiAgXHJcbiAgLyoqIEFwbGljYSBjbGFzc2VzIGRlIENTUyBuYSBjb2x1bmEgZGUgYWNpcmRvIGNvbSBvIHJldG9ybm8gZGEgZnVuw6fDo28gcGFzc2FkYSBjb21vIHBhcmFtZXRybyAgKi9cclxuICBASW5wdXQoKSBjb2x1bW5DbGFzczogKChpbmRleDpzdHJpbmcsIG9iamVjdDogYW55KSA9PiBzdHJpbmcpIHwgbnVsbCA9IG51bGw7XHJcbiAgLyoqIEFwbGljYSBzdHlsZSBkZSBDU1MgbmEgY29sdW5hIGRlIGFjaXJkbyBjb20gbyByZXRvcm5vIGRhIGZ1bsOnw6NvIHBhc3NhZGEgY29tbyBwYXJhbWV0cm8gICovXHJcbiAgQElucHV0KCkgY29sdW1uU3R5bGU6ICgoaW5kZXg6c3RyaW5nLCBvYmplY3Q6IGFueSkgPT4gc3RyaW5nKSB8IG51bGwgPSBudWxsO1xyXG4gIFxyXG4gIC8qKiBEZXNhYmlsaXRhIG8gcmVkaXJlY3QgZGUgbm92byBlbSB1bSBib3TDo28gcGFyYSBzZXIgdXRpbGl6YWRvIGNvbSBbb25OZXdFbWl0dGVyXSAqL1xyXG4gIEBJbnB1dCgpIG92ZXJyaWRlTmV3OiBib29sZWFuID0gZmFsc2U7XHJcbiAgLyoqIEV2ZW50byBxdWFuZG8gbyBib3TDo28gTk9WTyDDqSBjbGljYWRvICovXHJcbiAgQE91dHB1dCgnb25OZXcnKSBvbk5ld0VtaXR0ZXI6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICAvKiogVGVtcGxhdGUgZGUgYcOnw7Vlcywgw6kgZW52aWFkbyBjb20gI3RtcEFjb2VzLCBkZXZlIHNlciB1bSBlbGVtZW50byBgYGA8bmctdGVtcGxhdGU+YGBgICovXHJcbiAgQENvbnRlbnRDaGlsZCgndG1wQWNvZXMnLCB7IHN0YXRpYzogZmFsc2UgfSkgYWNvZXNUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgLy8jZW5kcmVnaW9uIFtAVGFibGVdXHJcblxyXG4gIC8qKiBSZW1vdmUgYSBwYWdpbmHDp8OjbyBkYSBsaXN0YWdlbSAqL1xyXG4gIEBJbnB1dCgpIG5vUGFnaW5hdGlvbiA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvKiogUmVtb3ZlIG9zIGJyZWFkY3J1bWJzIGRhIGxpc3RhZ2VtICovXHJcbiAgQElucHV0KCkgbm9CcmVhZGNydW1iczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8qKiBDYW1pbmhvIGRlIHJlZGlyZWNpb25hbWVudG8gZG8gaXRlbSAqL1xyXG4gIEBJbnB1dCgpIGl0ZW1QYXRoOiBzdHJpbmcgfCBudWxsID0gXCJ2aWV3LzppZFwiXHJcbiAgXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgZWxlbWVudFJlZiAgICA6IEVsZW1lbnRSZWYsXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHVibGljIG92ZXJyaWRlIGdlbmVyaWNTZXJ2aWNlOiBHZW5lcmljU2VydmljZVxyXG4gICkgeyBzdXBlcigpOyB9XHJcbiAgXHJcbiAgcHVibGljIGFzeW5jIEF0aXZhcihpZDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPntcclxuICAgIGlmKCEodGhpcy5zZXJ2aWNlIGluc3RhbmNlb2YgSHR0cFNlcnZpY2VBdGl2bykpeyByZXR1cm47IH1cclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0cnl7XHJcbiAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc2VydmljZS5BdGl2YXIoaWQpKTtcclxuICAgICAgdGhpcy5SZWZyZXNoKCk7XHJcbiAgICB9Y2F0Y2h7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICBhd2FpdCBzdXBlci5uZ09uSW5pdCgpOyAgICBcclxuICB9XHJcbn0iLCI8aW9uLWNvbnRlbnQgY2xhc3M9XCJiZy10cmFuc3BhcmVudFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCIgW25nQ2xhc3NdPVwieychcC0wIHRyYW5zbHVjaWQtcHJpbWFyeS1iYWNrZ3JvdW5kJzogbmVzdGVkfVwiPlxyXG4gICAgQGlmICghbm9CcmVhZGNydW1icykge1xyXG4gICAgICA8aW9uLWJyZWFkY3J1bWJzPlxyXG4gICAgICAgIDxpb24tYnJlYWRjcnVtYiBbcm91dGVyTGlua109XCJbc2VydmljZSA/IHNlcnZpY2Uucm91dGUgOiAnJ11cIiBbcmVwbGFjZVVybF09XCJ0cnVlXCI+e3tzZXJ2aWNlLnRpdGxlfX08L2lvbi1icmVhZGNydW1iPlxyXG4gICAgICA8L2lvbi1icmVhZGNydW1icz5cclxuICAgIH1cclxuICAgIDxpb24tY2FyZD5cclxuICAgICAgPGlvbi1jYXJkLWhlYWRlciBbbmdDbGFzc109XCJ7JyFweC0wICFwYi0wJzogbm9OZXcgJiYgbm9QYWdlICYmIG5vU2VhcmNofVwiPlxyXG4gICAgICAgIDxoZWFkZXItbGlzdCBcclxuICAgICAgICAgIFsobGltaXQpXT1cImZybS5saW1pdFwiXHJcbiAgICAgICAgICBbKHNlYXJjaCldPVwiZnJtLnNlYXJjaFwiICAgICAgICBcclxuICAgICAgICAgIFsocGFnZSldPVwiZnJtLnBhZ2VcIiAgICAgICAgXHJcbiAgICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nXCIgIFxyXG4gICAgICAgICAgKHJlZnJlc2gpPVwiUmVmcmVzaCgpXCJcclxuICAgICAgICAgIFtub05ld109XCJub05ld1wiXHJcbiAgICAgICAgICBbbm9QYWdlXT1cIm5vUGFnZVwiXHJcbiAgICAgICAgICBbbm9TZWFyY2hdPVwibm9TZWFyY2hcIlxyXG4gICAgICAgICAgW292ZXJyaWRlTmV3XT1cIm92ZXJyaWRlTmV3XCJcclxuICAgICAgICAgIChvbk5ldyk9XCJvbk5ld0VtaXR0ZXIuZW1pdCgpXCJcclxuICAgICAgICA+IFxyXG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2xvdD1cInN0YXJ0XCIgc2VsZWN0PVwiW3Nsb3Q9aGVhZGVyLXN0YXJ0XVwiPjwvbmctY29udGVudD5cclxuICAgICAgICAgIDxuZy1jb250ZW50IHNsb3Q9XCJlbmRcIiBzZWxlY3Q9XCJbc2xvdD1oZWFkZXItZW5kXVwiPjwvbmctY29udGVudD5cclxuICAgICAgICA8L2hlYWRlci1saXN0PlxyXG4gICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cclxuICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgPGlvbi1yZWZyZXNoZXIgc2xvdD1cImZpeGVkXCIgY2xhc3M9XCJ6LTIwXCIgKGlvblJlZnJlc2gpPVwiUmVmcmVzaCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICA8aW9uLXJlZnJlc2hlci1jb250ZW50PjwvaW9uLXJlZnJlc2hlci1jb250ZW50PlxyXG4gICAgICAgIDwvaW9uLXJlZnJlc2hlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2l6ZS1mdWxsIGlvbi1jb250ZW50LXNjcm9sbC1ob3N0XCI+XHJcbiAgICAgICAgICBAaWYoZnJtKXtcclxuICAgICAgICAgICAgPGRlZmF1bHQtdGFibGUgXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJibG9jayBzaXplLWZ1bGwgcmVsYXRpdmVcIiBcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICd0cmFuc2xhdGUteS0wJyA6ICFsb2FkaW5nIH1cIlxyXG4gICAgICAgICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxyXG4gICAgICAgICAgICAgIFtpdGVtc109XCJsc3REYWRvc1wiIFxyXG4gICAgICAgICAgICAgIFt0b3RhbF09XCJ0b3RhbFwiXHJcbiAgICAgICAgICAgICAgWyhsaW1pdCldPVwiZnJtLmxpbWl0XCJcclxuICAgICAgICAgICAgICBbKHBhZ2UpXT1cImZybS5wYWdlXCJcclxuICAgICAgICAgICAgICBbKGFzY2VuZGluZyldPVwiZnJtLmFzY2VuZGluZ1wiXHJcbiAgICAgICAgICAgICAgWyhvcmRlckJ5UHJvcGVydHkpXT1cImZybS5vcmRlckJ5UHJvcGVydHlcIlxyXG4gICAgICAgICAgICAgIFsoZmlsdGVyKV09XCJmcm0uZmlsdGVyXCJcclxuICAgICAgICAgICAgICBbaXRlbVBhdGhdPVwiaXRlbVBhdGhcIlxyXG4gICAgICAgICAgICAgIFtjb2x1bW5DbGFzc109XCJjb2x1bW5DbGFzc1wiXHJcbiAgICAgICAgICAgICAgW2NvbHVtblN0eWxlXT1cImNvbHVtblN0eWxlXCJcclxuICAgICAgICAgICAgICBbc2VydmljZV09XCJzZXJ2aWNlXCJcclxuICAgICAgICAgICAgICBbYWNvZXNUZW1wbGF0ZV09XCJhY29lc1RlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAocmVmcmVzaCk9XCJSZWZyZXNoKCk7XCJcclxuICAgICAgICAgICAgICAoYXRpdmFyKT1cIkF0aXZhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICBbbHN0VGFibGVGaWVsZHNdPVwibHN0VGFibGVGaWVsZHNcIlxyXG4gICAgICAgICAgICAgIFtub1BhZ2luYXRpb25dPVwibm9QYWdpbmF0aW9uXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L2RlZmF1bHQtdGFibGU+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cclxuICAgIDwvaW9uLWNhcmQ+XHJcbiAgPC9kaXY+XHJcbjwvaW9uLWNvbnRlbnQ+Il19
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kZWZhdWx0L2RlZmF1bHQtbGlzdC9kZWZhdWx0LWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2RlZmF1bHQvZGVmYXVsdC1saXN0L2RlZmF1bHQtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUErQixXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0osT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRW5FLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7Ozs7Ozs7O0FBRTlCOzs7R0FHRztBQU1ILE1BQU0sT0FBTyxvQkFBNEMsU0FBUSxJQUFPO0lBZ0N0RSxZQUNrQixVQUEwQixFQUMxQixjQUE4QixFQUM5QixjQUE4QjtRQUM1QyxLQUFLLEVBQUUsQ0FBQztRQUhNLGVBQVUsR0FBVixVQUFVLENBQWdCO1FBQzFCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFqQ2hELGtCQUFrQjtRQUNsQixzQ0FBc0M7UUFDN0IsVUFBSyxHQUFZLEtBQUssQ0FBQztRQUNoQyxxQ0FBcUM7UUFDNUIsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUNqQyxnREFBZ0Q7UUFDdkMsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUVuQyxnR0FBZ0c7UUFDdkYsZ0JBQVcsR0FBbUQsSUFBSSxDQUFDO1FBQzVFLDhGQUE4RjtRQUNyRixnQkFBVyxHQUFtRCxJQUFJLENBQUM7UUFFNUUsc0ZBQXNGO1FBQzdFLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQ3RDLDJDQUEyQztRQUMxQixpQkFBWSxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRzdFLHFCQUFxQjtRQUVyQixxQ0FBcUM7UUFDNUIsaUJBQVksR0FBYSxLQUFLLENBQUM7UUFDeEMsd0NBQXdDO1FBQy9CLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBQ3hDLDBDQUEwQztRQUNqQyxhQUFRLEdBQWtCLFVBQVUsQ0FBQTtRQUU3QyxjQUFTLEdBQXdCLE1BQU0sRUFBSyxDQUFDO0lBTWhDLENBQUM7SUFFUCxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQVU7UUFDNUIsSUFBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sWUFBWSxnQkFBZ0IsQ0FBQyxFQUFDLENBQUM7WUFBQyxPQUFPO1FBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFHLENBQUM7WUFDRixNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQixDQUFDO1FBQUEsTUFBSyxDQUFDO1lBQ0wsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFFUSxLQUFLLENBQUMsUUFBUTtRQUNyQixNQUFNLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN6QixDQUFDOytHQW5EVSxvQkFBb0I7bUdBQXBCLG9CQUFvQiwwZENsQmpDLDA5RUEyRGM7OzRGRHpDRCxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsY0FBYzt5SUFRZixLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0csV0FBVztzQkFBbkIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRVcsWUFBWTtzQkFBNUIsTUFBTTt1QkFBQyxPQUFPO2dCQUU4QixhQUFhO3NCQUF6RCxZQUFZO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBSWxDLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgb3V0cHV0LCBPdXRwdXQsIE91dHB1dEVtaXR0ZXJSZWYsIE91dHB1dFJlZiwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgSHR0cFNlcnZpY2VBdGl2byB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3dlYi9odHRwLmF0aXZvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHZW5lcmljU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2dlbmVyaWMuc2VydmljZSc7XHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvd2ViL2h0dHAuc2VydmljZSc7XHJcbmltcG9ydCB7IExpc3QgfSBmcm9tICcuL2xpc3QnO1xyXG5cclxuLyoqIENvbXBvbmVudGUgZGUgbGlzdGFnZW0gcGFkcsOjb1xyXG4gKiBUaXBvIEdlbmVyaWMgZGV2ZSBzZXIgdW0gc2VydmljZSBIdHRwU2VydmljZSBcclxuICogQGxpbmsgaHR0cHM6Ly9zYXBwaGlyZS1pb24tZnJhbWV3b3JrLmdpdGJvb2suaW8vZnJhbWV3b3JrL2NvbXBvbmVudGVzLWRlZmF1bHQvZGVmYXVsdC1saXN0XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2RlZmF1bHQtbGlzdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RlZmF1bHQtbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGVmYXVsdC1saXN0LmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZWZhdWx0TGlzdENvbXBvbmVudDxUIGV4dGVuZHMgSHR0cFNlcnZpY2U+IGV4dGVuZHMgTGlzdDxUPiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIC8vI3JlZ2lvbiBbQFRhYmxlXVxyXG4gIC8qKiBSZW1vdmUgbyBib3TDo28gTk9WTyBkYSBsaXN0YWdlbSAqL1xyXG4gIEBJbnB1dCgpIG5vTmV3OiBib29sZWFuID0gZmFsc2U7XHJcbiAgLyoqIFJlbW92ZSBhIHBhZ2luYcOnw6NvIGRhIGxpc3RhZ2VtICovXHJcbiAgQElucHV0KCkgbm9QYWdlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgLyoqIFJlbW92ZSBvIGVsZW1lbnRvIGRlIHBlc3F1aXNhIGRhIGxpc3RhZ2VtICovXHJcbiAgQElucHV0KCkgbm9TZWFyY2g6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBcclxuICAvKiogQXBsaWNhIGNsYXNzZXMgZGUgQ1NTIG5hIGNvbHVuYSBkZSBhY2lyZG8gY29tIG8gcmV0b3JubyBkYSBmdW7Dp8OjbyBwYXNzYWRhIGNvbW8gcGFyYW1ldHJvICAqL1xyXG4gIEBJbnB1dCgpIGNvbHVtbkNsYXNzOiAoKGluZGV4OnN0cmluZywgb2JqZWN0OiBhbnkpID0+IHN0cmluZykgfCBudWxsID0gbnVsbDtcclxuICAvKiogQXBsaWNhIHN0eWxlIGRlIENTUyBuYSBjb2x1bmEgZGUgYWNpcmRvIGNvbSBvIHJldG9ybm8gZGEgZnVuw6fDo28gcGFzc2FkYSBjb21vIHBhcmFtZXRybyAgKi9cclxuICBASW5wdXQoKSBjb2x1bW5TdHlsZTogKChpbmRleDpzdHJpbmcsIG9iamVjdDogYW55KSA9PiBzdHJpbmcpIHwgbnVsbCA9IG51bGw7XHJcbiAgXHJcbiAgLyoqIERlc2FiaWxpdGEgbyByZWRpcmVjdCBkZSBub3ZvIGVtIHVtIGJvdMOjbyBwYXJhIHNlciB1dGlsaXphZG8gY29tIFtvbk5ld0VtaXR0ZXJdICovXHJcbiAgQElucHV0KCkgb3ZlcnJpZGVOZXc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvKiogRXZlbnRvIHF1YW5kbyBvIGJvdMOjbyBOT1ZPIMOpIGNsaWNhZG8gKi9cclxuICBAT3V0cHV0KCdvbk5ldycpIG9uTmV3RW1pdHRlcjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIC8qKiBUZW1wbGF0ZSBkZSBhw6fDtWVzLCDDqSBlbnZpYWRvIGNvbSAjdG1wQWNvZXMsIGRldmUgc2VyIHVtIGVsZW1lbnRvIGBgYDxuZy10ZW1wbGF0ZT5gYGAgKi9cclxuICBAQ29udGVudENoaWxkKCd0bXBBY29lcycsIHsgc3RhdGljOiBmYWxzZSB9KSBhY29lc1RlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcclxuICAvLyNlbmRyZWdpb24gW0BUYWJsZV1cclxuXHJcbiAgLyoqIFJlbW92ZSBhIHBhZ2luYcOnw6NvIGRhIGxpc3RhZ2VtICovXHJcbiAgQElucHV0KCkgbm9QYWdpbmF0aW9uIDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8qKiBSZW1vdmUgb3MgYnJlYWRjcnVtYnMgZGEgbGlzdGFnZW0gKi9cclxuICBASW5wdXQoKSBub0JyZWFkY3J1bWJzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgLyoqIENhbWluaG8gZGUgcmVkaXJlY2lvbmFtZW50byBkbyBpdGVtICovXHJcbiAgQElucHV0KCkgaXRlbVBhdGg6IHN0cmluZyB8IG51bGwgPSBcInZpZXcvOmlkXCJcclxuICBcclxuICBpdGVtQ2xpY2s6IE91dHB1dEVtaXR0ZXJSZWY8VD4gPSBvdXRwdXQ8VD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgZWxlbWVudFJlZiAgICA6IEVsZW1lbnRSZWYsXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHVibGljIG92ZXJyaWRlIGdlbmVyaWNTZXJ2aWNlOiBHZW5lcmljU2VydmljZVxyXG4gICkgeyBzdXBlcigpOyB9XHJcbiAgXHJcbiAgcHVibGljIGFzeW5jIEF0aXZhcihpZDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPntcclxuICAgIGlmKCEodGhpcy5zZXJ2aWNlIGluc3RhbmNlb2YgSHR0cFNlcnZpY2VBdGl2bykpeyByZXR1cm47IH1cclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0cnl7XHJcbiAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc2VydmljZS5BdGl2YXIoaWQpKTtcclxuICAgICAgdGhpcy5SZWZyZXNoKCk7XHJcbiAgICB9Y2F0Y2h7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICBhd2FpdCBzdXBlci5uZ09uSW5pdCgpOyAgICBcclxuICB9XHJcbn0iLCI8aW9uLWNvbnRlbnQgY2xhc3M9XCJiZy10cmFuc3BhcmVudFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCIgW25nQ2xhc3NdPVwieychcC0wIHRyYW5zbHVjaWQtcHJpbWFyeS1iYWNrZ3JvdW5kJzogbmVzdGVkfVwiPlxyXG4gICAgQGlmICghbm9CcmVhZGNydW1icykge1xyXG4gICAgICA8aW9uLWJyZWFkY3J1bWJzPlxyXG4gICAgICAgIDxpb24tYnJlYWRjcnVtYiBbcm91dGVyTGlua109XCJbc2VydmljZSA/IHNlcnZpY2Uucm91dGUgOiAnJ11cIiBbcmVwbGFjZVVybF09XCJ0cnVlXCI+e3tzZXJ2aWNlLnRpdGxlfX08L2lvbi1icmVhZGNydW1iPlxyXG4gICAgICA8L2lvbi1icmVhZGNydW1icz5cclxuICAgIH1cclxuICAgIDxpb24tY2FyZD5cclxuICAgICAgPGlvbi1jYXJkLWhlYWRlciBbbmdDbGFzc109XCJ7JyFweC0wICFwYi0wJzogbm9OZXcgJiYgbm9QYWdlICYmIG5vU2VhcmNofVwiPlxyXG4gICAgICAgIDxoZWFkZXItbGlzdCBcclxuICAgICAgICAgIFsobGltaXQpXT1cImZybS5saW1pdFwiXHJcbiAgICAgICAgICBbKHNlYXJjaCldPVwiZnJtLnNlYXJjaFwiICAgICAgICBcclxuICAgICAgICAgIFsocGFnZSldPVwiZnJtLnBhZ2VcIiAgICAgICAgXHJcbiAgICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nXCIgIFxyXG4gICAgICAgICAgKHJlZnJlc2gpPVwiUmVmcmVzaCgpXCJcclxuICAgICAgICAgIFtub05ld109XCJub05ld1wiXHJcbiAgICAgICAgICBbbm9QYWdlXT1cIm5vUGFnZVwiXHJcbiAgICAgICAgICBbbm9TZWFyY2hdPVwibm9TZWFyY2hcIlxyXG4gICAgICAgICAgW292ZXJyaWRlTmV3XT1cIm92ZXJyaWRlTmV3XCJcclxuICAgICAgICAgIChvbk5ldyk9XCJvbk5ld0VtaXR0ZXIuZW1pdCgpXCJcclxuICAgICAgICA+IFxyXG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2xvdD1cInN0YXJ0XCIgc2VsZWN0PVwiW3Nsb3Q9aGVhZGVyLXN0YXJ0XVwiPjwvbmctY29udGVudD5cclxuICAgICAgICAgIDxuZy1jb250ZW50IHNsb3Q9XCJlbmRcIiBzZWxlY3Q9XCJbc2xvdD1oZWFkZXItZW5kXVwiPjwvbmctY29udGVudD5cclxuICAgICAgICA8L2hlYWRlci1saXN0PlxyXG4gICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cclxuICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgPGlvbi1yZWZyZXNoZXIgc2xvdD1cImZpeGVkXCIgY2xhc3M9XCJ6LTIwXCIgKGlvblJlZnJlc2gpPVwiUmVmcmVzaCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICA8aW9uLXJlZnJlc2hlci1jb250ZW50PjwvaW9uLXJlZnJlc2hlci1jb250ZW50PlxyXG4gICAgICAgIDwvaW9uLXJlZnJlc2hlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2l6ZS1mdWxsIGlvbi1jb250ZW50LXNjcm9sbC1ob3N0XCI+XHJcbiAgICAgICAgICBAaWYoZnJtKXtcclxuICAgICAgICAgICAgPGRlZmF1bHQtdGFibGUgXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJibG9jayBzaXplLWZ1bGwgcmVsYXRpdmVcIiBcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICd0cmFuc2xhdGUteS0wJyA6ICFsb2FkaW5nIH1cIlxyXG4gICAgICAgICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxyXG4gICAgICAgICAgICAgIFtpdGVtc109XCJsc3REYWRvc1wiIFxyXG4gICAgICAgICAgICAgIFt0b3RhbF09XCJ0b3RhbFwiXHJcbiAgICAgICAgICAgICAgWyhsaW1pdCldPVwiZnJtLmxpbWl0XCJcclxuICAgICAgICAgICAgICBbKHBhZ2UpXT1cImZybS5wYWdlXCJcclxuICAgICAgICAgICAgICBbKGFzY2VuZGluZyldPVwiZnJtLmFzY2VuZGluZ1wiXHJcbiAgICAgICAgICAgICAgWyhvcmRlckJ5UHJvcGVydHkpXT1cImZybS5vcmRlckJ5UHJvcGVydHlcIlxyXG4gICAgICAgICAgICAgIFsoZmlsdGVyKV09XCJmcm0uZmlsdGVyXCJcclxuICAgICAgICAgICAgICAoaXRlbUNsaWNrKT1cIml0ZW1DbGljay5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgIFtpdGVtUGF0aF09XCJpdGVtUGF0aFwiXHJcbiAgICAgICAgICAgICAgW2NvbHVtbkNsYXNzXT1cImNvbHVtbkNsYXNzXCJcclxuICAgICAgICAgICAgICBbY29sdW1uU3R5bGVdPVwiY29sdW1uU3R5bGVcIlxyXG4gICAgICAgICAgICAgIFtzZXJ2aWNlXT1cInNlcnZpY2VcIlxyXG4gICAgICAgICAgICAgIFthY29lc1RlbXBsYXRlXT1cImFjb2VzVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgIChyZWZyZXNoKT1cIlJlZnJlc2goKTtcIlxyXG4gICAgICAgICAgICAgIChhdGl2YXIpPVwiQXRpdmFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgIFtsc3RUYWJsZUZpZWxkc109XCJsc3RUYWJsZUZpZWxkc1wiXHJcbiAgICAgICAgICAgICAgW25vUGFnaW5hdGlvbl09XCJub1BhZ2luYXRpb25cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvZGVmYXVsdC10YWJsZT5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxyXG4gICAgPC9pb24tY2FyZD5cclxuICA8L2Rpdj5cclxuPC9pb24tY29udGVudD4iXX0=
@@ -66,7 +66,7 @@ export class InputSelectConfiguration {
66
66
  placement: "bottom"
67
67
  };
68
68
  this.vFiltros = null;
69
- this.useInfiniteScroll = false;
69
+ this.useInfiniteScroll = undefined;
70
70
  /** Interface do select */
71
71
  this.interface = SelectInterfaces.Dynamic;
72
72
  this.clearable = clearable;
@@ -134,6 +134,7 @@ export class InputSelectDataLoader {
134
134
  for (const component of this.lstComponents) {
135
135
  if (!component.destroyed)
136
136
  component.items.set([...this.items]);
137
+ this.CheckForInfiniteScroll();
137
138
  }
138
139
  }
139
140
  try {
@@ -150,11 +151,17 @@ export class InputSelectDataLoader {
150
151
  }
151
152
  }
152
153
  }
154
+ CheckForInfiniteScroll() {
155
+ if (this.items.length > 100 && this.configuration.useInfiniteScroll == undefined) {
156
+ this.configuration.useInfiniteScroll = true;
157
+ }
158
+ }
153
159
  async Load() {
154
160
  if (this.isLoaded) {
155
161
  for (const component of this.lstComponents) {
156
162
  if (!component.destroyed)
157
163
  component.items.set([...this.items]);
164
+ this.CheckForInfiniteScroll();
158
165
  }
159
166
  return;
160
167
  }
@@ -164,6 +171,7 @@ export class InputSelectDataLoader {
164
171
  for (const component of this.lstComponents) {
165
172
  if (!component.destroyed)
166
173
  component.items.set([...this.items]);
174
+ this.CheckForInfiniteScroll();
167
175
  }
168
176
  return;
169
177
  }
@@ -181,6 +189,7 @@ export class InputSelectDataLoader {
181
189
  for (const component of this.lstComponents) {
182
190
  if (!component.destroyed)
183
191
  component.items.set([...this.items]);
192
+ this.CheckForInfiniteScroll();
184
193
  }
185
194
  ;
186
195
  this.error = false;
@@ -217,4 +226,4 @@ export function BindLabelFactory(configuration) {
217
226
  }
218
227
  return bindLabel;
219
228
  }
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuc2VsZWN0LmNvbmZpZ3VyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LXNlbGVjdC9pbnB1dC5zZWxlY3QuY29uZmlndXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWxELE9BQU8sRUFBRSxXQUFXLEVBQWUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDcEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBTzFELE1BQU0sQ0FBTixJQUFZLGdCQVFYO0FBUkQsV0FBWSxnQkFBZ0I7SUFDMUI7O09BRUc7SUFDSCw2REFBZSxDQUFBO0lBQ2YsNkRBQWUsQ0FBQTtJQUNmLHlEQUFlLENBQUE7SUFDZixxRUFBZSxDQUFBO0FBQ2pCLENBQUMsRUFSVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBUTNCO0FBRUQsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9Ba0JiO1FBRUMsTUFBTSxNQUFNLEdBQUcsSUFBSSx3QkFBd0IsQ0FDekMsT0FBTyxDQUFDLFNBQVMsRUFDakIsT0FBTyxDQUFDLFNBQVMsRUFDakIsT0FBTyxDQUFDLFNBQVMsRUFDakIsT0FBTyxDQUFDLFdBQVcsRUFDbkIsT0FBTyxDQUFDLFFBQVEsRUFDaEIsT0FBTyxDQUFDLFFBQVEsRUFDaEIsT0FBTyxDQUFDLFFBQVEsSUFBSSxJQUFJLEVBQ3hCLE9BQU8sQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQ25DLENBQUM7UUFDRixJQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUMsQ0FBQztZQUN0QixNQUFN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QyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7U0FBSSxDQUFDO1FBQ0osSUFBSSxHQUFHLEdBQXlCLFVBQVUsQ0FBQztRQUMzQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBTyxFQUFFLEdBQUcsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxhQUF1QztJQUN0RSxNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDO0lBQzNDLElBQUksU0FBUyxHQUE0QixJQUFJLENBQUM7SUFDOUMsSUFBRyxPQUFNLENBQUMsVUFBVSxDQUFDLElBQUksUUFBUSxFQUFDLENBQUM7UUFDakMsSUFBSSxHQUFHLEdBQXlCLFVBQVUsQ0FBQztRQUMzQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBVSxFQUFFLEdBQUcsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztTQUFJLENBQUM7UUFDSixJQUFJLEdBQUcsR0FBeUIsVUFBVSxDQUFDO1FBQzNDLFNBQVMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFVLEVBQUUsR0FBRyxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIGZpcnN0VmFsdWVGcm9tIH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlLCBWaWV3UmV0b3JubyB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy93ZWIvaHR0cC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlQXRpdm8gfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvd2ViL2h0dHAuYXRpdm8uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBWaWV3RmlsdHJvcyB9IGZyb20gXCIuLi8uLi8uLi9jbGFzc2VzL2ZpbHRlcnMvdmlldy1maWx0cm9zXCI7XHJcbmltcG9ydCB7IElOVF9NQVggfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvdXRpbHMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBDb21wYXJpc29uIH0gZnJvbSBcIi4uLy4uLy4uL2NsYXNzZXMvY29tcGFyaXNvbi9jb21wYXJpc29uXCI7XHJcbmltcG9ydCB7IElucHV0U2VsZWN0Q29tcG9uZW50IH0gZnJvbSBcIi4vaW5wdXQtc2VsZWN0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBQbGFjZW1lbnQgfSBmcm9tIFwiQGZsb2F0aW5nLXVpL2RvbVwiO1xyXG5cclxuZXhwb3J0IHR5cGUgRGVmYXVsdE1vZGVsT3B0aW9ucyA9IHsgdmFsdWU6IHN0cmluZywgbGFiZWw6IHN0cmluZyB9O1xyXG5cclxuZXhwb3J0IGVudW0gU2VsZWN0SW50ZXJmYWNlcyAgICB7XHJcbiAgLyoqIEludGVyZmFjZSBwYWRyw6NvIGRvIHNlbGVjdCBcclxuICAgKiBQb3BvdmVyIHF1YW5kbyB3ZWIsIE1vZGFsIHF1YW5kbyBtb2JpbGVcclxuICAgKi9cclxuICBEeW5hbWljICAgICA9IDAsXHJcbiAgUG9wb3ZlciAgICAgPSAwLFxyXG4gIE1vZGFsICAgICAgID0gMSxcclxuICBBY3Rpb25TaGVldCA9IDIsXHJcbn0gXHJcblxyXG5leHBvcnQgY2xhc3MgSW5wdXRTZWxlY3RDb25maWd1cmF0aW9ue1xyXG4gIHN0YXRpYyBDcmVhdGUob3B0aW9uczoge1xyXG4gICAgYmluZExhYmVsOiBzdHJpbmcgfCAoKG9iajogYW55KSA9PiBzdHJpbmcpLFxyXG4gICAgYmluZFZhbHVlOiBzdHJpbmcgfCAoKG9iajogYW55KSA9PiBhbnkpLFxyXG4gICAgY2xlYXJhYmxlPzogYm9vbGVhbixcclxuICAgIHNlYXJjaGVhYmxlPzogYm9vbGVhbixcclxuICAgIGxvYWRGcm9tPzogSHR0cFNlcnZpY2UgfCBPYnNlcnZhYmxlPFZpZXdSZXRvcm5vPiB8IGFueVtdLFxyXG4gICAgbXVsdGlwbGU/OiBib29sZWFuLFxyXG4gICAgdkZpbHRyb3M/OiBQYXJ0aWFsPHsgXHJcbiAgICAgIHNlYXJjaDogc3RyaW5nLFxyXG4gICAgICBvcmRlckJ5UHJvcGVydHk6IHN0cmluZyxcclxuICAgICAgYXNjZW5kaW5nOiBib29sZWFuLFxyXG4gICAgICBmaWx0ZXI6IENvbXBhcmlzb25bXVxyXG4gICAgfT4sXHJcbiAgICBkaXNhYmxlQ29uZGl0aW9uYWw/OiAoKG9iajogYW55KSA9PiBib29sZWFuKVxyXG4gICAgdXNlSW5maW5pdGVTY3JvbGw/OiBib29sZWFuLFxyXG4gICAgcGxhY2Vob2xkZXI/OiBzdHJpbmcsXHJcbiAgICBub0l0ZW5zRm91bmRUZXh0Pzogc3RyaW5nLFxyXG4gICAgaW50ZXJmYWNlPzogU2VsZWN0SW50ZXJmYWNlcyxcclxuICB9XHJcbiAgKXtcclxuICAgIGNvbnN0IGNvbmZpZyA9IG5ldyBJbnB1dFNlbGVjdENvbmZpZ3VyYXRpb24oXHJcbiAgICAgIG9wdGlvbnMuYmluZFZhbHVlLFxyXG4gICAgICBvcHRpb25zLmJpbmRMYWJlbCxcclxuICAgICAgb3B0aW9ucy5jbGVhcmFibGUsXHJcbiAgICAgIG9wdGlvbnMuc2VhcmNoZWFibGUsXHJcbiAgICAgIG9wdGlvbnMubG9hZEZyb20sXHJcbiAgICAgIG9wdGlvbnMubXVsdGlwbGUsXHJcbiAgICAgIG9wdGlvbnMudkZpbHRyb3MgfHwgbnVsbCxcclxuICAgICAgb3B0aW9ucy5kaXNhYmxlQ29uZGl0aW9uYWwgfHwgbnVsbFxyXG4gICAgKTtcclxuICAgIGlmKG9wdGlvbnMucGxhY2Vob2xkZXIpe1xyXG4gICAgICBjb25maWcucGxhY2Vob2xkZXIgPSBvcHRpb25zLnBsYWNlaG9sZGVyO1xyXG4gICAgfVxyXG4gICAgaWYob3B0aW9ucy5ub0l0ZW5zRm91bmRUZXh0KXtcclxuICAgICAgY29uZmlnLm5vSXRlbnNGb3VuZFRleHQgPSBvcHRpb25zLm5vSXRlbnNGb3VuZFRleHQ7XHJcbiAgICB9XHJcbiAgICBpZihvcHRpb25zLnVzZUluZmluaXRlU2Nyb2xsICE9IHVuZGVmaW5lZCl7XHJcbiAgICAgIGNvbmZpZy51c2VJbmZpbml0ZVNjcm9sbCA9IG9wdGlvbnMudXNlSW5maW5pdGVTY3JvbGw7XHJcbiAgICB9XHJcbiAgICBpZihvcHRpb25zLmludGVyZmFjZSl7XHJcbiAgICAgIGNvbmZpZy5pbnRlcmZhY2UgPSBvcHRpb25zLmludGVyZmFjZTtcclxuICAgIH1cclxuICAgIHJldHVybiBjb25maWc7XHJcbiAgfTtcclxuXHJcblxyXG4gIHBsYWNlaG9sZGVyICAgICA6IHN0cmluZyA9IFwiU2VsZWNpb25lIHVtIGl0ZW0uLi5cIlxyXG4gIG5vSXRlbnNGb3VuZFRleHQ6IHN0cmluZyA9IFwiU2VtIGl0ZW1zIGVuY29udHJhZG9zLi4uXCJcclxuXHJcbiAgbG9hZGVyOiBJbnB1dFNlbGVjdERhdGFMb2FkZXI7XHJcbiAgbG9hZEZyb21BcnJheSAgIDogYW55W107XHJcbiAgbG9hZEZyb21TZXJ2aWNlIDogSHR0cFNlcnZpY2UgfCBIdHRwU2VydmljZUF0aXZvXHJcbiAgbG9hZEZyb21GdW5jdGlvbjogT2JzZXJ2YWJsZTxhbnk+XHJcblxyXG4gIHBvcG92ZXJDb25maWd1cmF0aW9uOiB7XHJcbiAgICBmbGlwOiBib29sZWFuLFxyXG4gICAgcGxhY2VtZW50OiBQbGFjZW1lbnQsXHJcbiAgfSA9IHtcclxuICAgIGZsaXA6IHRydWUsXHJcbiAgICBwbGFjZW1lbnQ6IFwiYm90dG9tXCJcclxuICB9XHJcblxyXG4gIHB1YmxpYyB2RmlsdHJvczogVmlld0ZpbHRyb3MgfCBudWxsID0gbnVsbDtcclxuICBwdWJsaWMgdXNlSW5maW5pdGVTY3JvbGw6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIEludGVyZmFjZSBkbyBzZWxlY3QgKi9cclxuICBwdWJsaWMgaW50ZXJmYWNlOiBTZWxlY3RJbnRlcmZhY2VzID0gU2VsZWN0SW50ZXJmYWNlcy5EeW5hbWljO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIC8qKiBWYWxvciBxdWUgc2Vyw6Egc2V0YWRvIG5vIGZvcm1Db250cm9sICovXHJcbiAgICBwdWJsaWMgYmluZFZhbHVlOiBzdHJpbmcgfCAoKG9iajogYW55KSA9PiBhbnkpICAgICA9IFwiaWRcIiAgLFxyXG4gICAgLyoqIFZhbG9yIHF1ZSBzZXLDoSBleGliaWRvICovXHJcbiAgICBwdWJsaWMgYmluZExhYmVsOiBzdHJpbmcgfCAoKG9iajogYW55KSA9PiBzdHJpbmcpICA9IFwibm9tZVwiLCBcclxuICAgIFxyXG4gICAgLyoqIEluZGljYSBzZSBvIHNlbGVjdCBwb2RlIHNlciBudWxvIGUgbGltcGF2ZWwgKi9cclxuICAgIHB1YmxpYyBjbGVhcmFibGUgIDogYm9vbGVhbiA9IHRydWUsIFxyXG4gICAgLyoqIEluZGljYSBzZSBvIHNlbGVjdCBwb2RlIHNlciBwZXNxdWlzYWRvICovXHJcbiAgICBwdWJsaWMgc2VhcmNoZWFibGU6IGJvb2xlYW4gPSB0cnVlLCBcclxuICAgIFxyXG4gICAgLyoqIFxyXG4gICAgICogU2UgTG9hZEZyb20gaW5zdGFuY2VvZiBIdHRwU2VydmljZSAgICAgIC0+IE9zIGRhZG9zIHNlcsOjbyBjYXJyZWdhZG9zIGRvIExpc3QoKVxyXG4gICAgICogU2UgTG9hZEZyb20gaW5zdGFuY2VvZiBPYnNlcnZhYmxlICAgICAgIC0+IE9zIGRhZG9zIHNlcsOjbyBjYXJyZWdhZG9zIGRhIGZ1bsOnw6NvIGluZGljYWRhXHJcbiAgICAgKiBTZSBMb2FkRnJvbSBpbnN0YW5jZW9mIEFycmF5ICAgICAgICAgICAgLT4gT3MgZGFkb3Mgc2Vyw6NvIG8gYXJyYXlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGxvYWRGcm9tPzogIEh0dHBTZXJ2aWNlIHwgT2JzZXJ2YWJsZTxWaWV3UmV0b3Jubz4gfCBhbnlbXSwgXHJcbiAgICAvKiogU2UgPSB0cnVlIE9zIHZhbG9yZXMgbm8gZm9ybSBjb250cm9sIHNlcsOhbyB1bSBhcnJheSBkb3MgaXRlbXMgc2VsZWNpb25hZG9zICovXHJcbiAgICBwdWJsaWMgbXVsdGlwbGUgOiBib29sZWFuID0gZmFsc2UsXHJcbiAgICAvKiogQXBsaWNhIG9zIGZpbHRyb3MgbmEgcGVzcXVpc2EgKi9cclxuICAgIHZGaWx0cm9zIDogUGFydGlhbDx7IFxyXG4gICAgICAvKiogQXBsaWNhIHVtYSBwZXNxdWlzYSBlbSB0ZXh0byAgKi9cclxuICAgICAgc2VhcmNoOiBzdHJpbmdcclxuICAgICAgLyoqIFByb3ByaWVkYWRlIGRlIG9yZGVuYcOnw6NvICovXHJcbiAgICAgIG9yZGVyQnlQcm9wZXJ0eTogc3RyaW5nXHJcbiAgICAgIC8qKiBPcmllbnRhw6fDo28gZGUgb3JkZW5hw6fDo28gKi9cclxuICAgICAgYXNjZW5kaW5nOiBib29sZWFuLFxyXG4gICAgICAvKiogRmlsdHJvICAqL1xyXG4gICAgICBmaWx0ZXI6IENvbXBhcmlzb25bXVxyXG4gICAgfT4gfCBudWxsID0gbnVsbCxcclxuICAgIC8qKiBEZXNhdGl2YSBvcyBpdGVtcyBxdWUgZXN0w6NvIGRlIGFjb3JkbyBjb20gYSBmdW7Dp8OjbyAqL1xyXG4gICAgcHVibGljIGRpc2FibGVDb25kaXRpb25hbDogKChvYmo6IGFueSkgPT4gYm9vbGVhbikgfCBudWxsID0gbnVsbFxyXG4gICl7XHJcbiAgICB0aGlzLmNsZWFyYWJsZSAgID0gY2xlYXJhYmxlO1xyXG4gICAgdGhpcy5zZWFyY2hlYWJsZSA9IHNlYXJjaGVhYmxlO1xyXG4gICAgdGhpcy5tdWx0aXBsZSAgICA9IG11bHRpcGxlO1xyXG5cclxuICAgIGlmKHZGaWx0cm9zICE9IG51bGwpe1xyXG4gICAgICBjb25zdCB2ID0gdkZpbHRyb3M7XHJcbiAgICAgIGlmKHYuYXNjZW5kaW5nID09IG51bGwgfHwgdi5hc2NlbmRpbmcgPT0gdW5kZWZpbmVkKXsgXHJcbiAgICAgICAgdi5hc2NlbmRpbmcgPSB0cnVlOyBcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnZGaWx0cm9zID0gbmV3IFZpZXdGaWx0cm9zKElOVF9NQVgsIHYuc2VhcmNoLCAxLCB2Lm9yZGVyQnlQcm9wZXJ0eSwgdi5hc2NlbmRpbmcpO1xyXG4gICAgICB0aGlzLnZGaWx0cm9zLmZpbHRlciA9IHYuZmlsdGVyO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKGxvYWRGcm9tKXtcclxuICAgICAgaWYoQXJyYXkuaXNBcnJheShsb2FkRnJvbSkpeyBcclxuICAgICAgICB0aGlzLmxvYWRGcm9tQXJyYXkgICAgPSBsb2FkRnJvbTsgXHJcbiAgICAgIH0gZWxzZVxyXG4gICAgICBpZihsb2FkRnJvbSBpbnN0YW5jZW9mIEh0dHBTZXJ2aWNlIHx8IGxvYWRGcm9tIGluc3RhbmNlb2YgSHR0cFNlcnZpY2VBdGl2byl7IFxyXG4gICAgICAgIHRoaXMubG9hZEZyb21TZXJ2aWNlICA9IGxvYWRGcm9tO1xyXG4gICAgICB9IGVsc2UgeyAgXHJcbiAgICAgICAgdGhpcy5sb2FkRnJvbUZ1bmN0aW9uID0gbG9hZEZyb207XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxvYWRlciA9IG5ldyBJbnB1dFNlbGVjdERhdGFMb2FkZXIodGhpcyk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgSW5wdXRTZWxlY3REYXRhTG9hZGVye1xyXG4gIHByaXZhdGUgbHN0Q29tcG9uZW50czogSW5wdXRTZWxlY3RDb21wb25lbnRbXSA9IFtdO1xyXG4gIHByaXZhdGUgY29uZmlndXJhdGlvbjogSW5wdXRTZWxlY3RDb25maWd1cmF0aW9uO1xyXG5cclxuICAvKiogVmFsb3IgcXVlIHNlcsOhIHNldGFkbyBubyBmb3JtQ29udHJvbCAqL1xyXG4gIHB1YmxpYyBiaW5kVmFsdWU6ICgob2JqOiBhbnkpID0+IGFueSkgICB8IG51bGwgPSBudWxsO1xyXG4gIC8qKiBWYWxvciBxdWUgc2Vyw6EgZXhpYmlkbyAqL1xyXG4gIHB1YmxpYyBiaW5kTGFiZWw6ICgob2JqOiBhbnkpID0+IHN0cmluZyl8IG51bGwgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihjb25maWd1cmF0aW9uOiBJbnB1dFNlbGVjdENvbmZpZ3VyYXRpb24pICB7IFxyXG4gICAgdGhpcy5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbjsgXHJcbiAgICB0aGlzLmJpbmRWYWx1ZSA9IEJpbmRWYWx1ZUZhY3RvcnkoY29uZmlndXJhdGlvbilcclxuICAgIHRoaXMuYmluZExhYmVsID0gQmluZExhYmVsRmFjdG9yeShjb25maWd1cmF0aW9uKVxyXG4gIH1cclxuXHJcbiAgcHVibGljIEFkZENvbXBvbmVudChjb21wb25lbnQ6IElucHV0U2VsZWN0Q29tcG9uZW50KTogdm9pZCB7IFxyXG4gICAgdGhpcy5sc3RDb21wb25lbnRzLnB1c2goY29tcG9uZW50KTtcclxuICB9XHJcblxyXG4gIC8vVE9ETyBSZW1vdmUgZnVuY3Rpb25cclxuICAgcHVibGljIEdldExhYmVsKHZhbHVlOiBhbnkpe1xyXG4gICAgaWYoIXRoaXMuaXRlbXMgfHwgIXRoaXMuYmluZFZhbHVlIHx8ICF0aGlzLmJpbmRMYWJlbCl7IHJldHVybiBcIlwiOyB9XHJcbiAgICBjb25zdCBpdGVtID0gdGhpcy5pdGVtcy5maW5kKHAgPT4gdGhpcy5iaW5kVmFsdWUocCkgPT0gdmFsdWUpO1xyXG4gICAgaWYoIWl0ZW0peyByZXR1cm4gXCJcIiA7fVxyXG4gICAgcmV0dXJuIHRoaXMuYmluZExhYmVsKGl0ZW0pO1xyXG4gIH1cclxuXHJcbiAgaXNMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBlcnJvciAgIDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBhc3luYyBSZWZyZXNoKGl0ZW1zPzogYW55W10pOiBQcm9taXNlPHZvaWQ+e1xyXG4gICAgZm9yIChjb25zdCBjb21wb25lbnQgb2YgdGhpcy5sc3RDb21wb25lbnRzKSB7XHJcbiAgICAgIGNvbXBvbmVudC5sb2FkaW5nRnJvbUxvYWRlciA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGlmKCF0aGlzLmNvbmZpZ3VyYXRpb24ubG9hZEZyb21TZXJ2aWNlICAmJiBcclxuICAgICAgICF0aGlzLmNvbmZpZ3VyYXRpb24ubG9hZEZyb21GdW5jdGlvbiAmJiBcclxuICAgICAgICghdGhpcy5jb25maWd1cmF0aW9uLmxvYWRGcm9tQXJyYXkgfHwgIXRoaXMuY29uZmlndXJhdGlvbi5sb2FkRnJvbUFycmF5Lmxlbmd0aClcclxuICAgICAgKXtcclxuICAgICAgdGhpcy5pdGVtcyA9IFsuLi5pdGVtcyB8fCBbXV07XHJcbiAgICAgIHRoaXMuaXNMb2FkZWQgPSB0cnVlO1xyXG4gICAgICBmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiB0aGlzLmxzdENvbXBvbmVudHMpIHtcclxuICAgICAgICBpZighY29tcG9uZW50LmRlc3Ryb3llZClcclxuICAgICAgICBjb21wb25lbnQuaXRlbXMuc2V0KFsuLi50aGlzLml0ZW1zXSk7IFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRyeXtcclxuICAgICAgYXdhaXQgdGhpcy5Mb2FkKCk7XHJcbiAgICAgIHRoaXMuaXNMb2FkZWQgPSB0cnVlO1xyXG4gICAgICBmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiB0aGlzLmxzdENvbXBvbmVudHMpIHtcclxuICAgICAgICBpZighY29tcG9uZW50LmRlc3Ryb3llZClcclxuICAgICAgICBjb21wb25lbnQuaXRlbXMuc2V0KFsuLi50aGlzLml0ZW1zXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGZpbmFsbHl7XHJcbiAgICAgIGZvciAoY29uc3QgY29tcG9uZW50IG9mIHRoaXMubHN0Q29tcG9uZW50cykge1xyXG4gICAgICAgIGNvbXBvbmVudC5sb2FkaW5nRnJvbUxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpdGVtczogYW55W10gPSBbXTtcclxuICBhc3luYyBMb2FkKCk6IFByb21pc2U8dm9pZD57XHJcbiAgICBpZih0aGlzLmlzTG9hZGVkKXtcclxuICAgICAgZm9yIChjb25zdCBjb21wb25lbnQgb2YgdGhpcy5sc3RDb21wb25lbnRzKSB7XHJcbiAgICAgICBpZighY29tcG9uZW50LmRlc3Ryb3llZClcclxuICAgICAgICBjb21wb25lbnQuaXRlbXMuc2V0KFsuLi50aGlzLml0ZW1zXSk7IFxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvL1sgTG9hZCBmcm9tIEFycmF5IF1cclxuICAgIGlmKHRoaXMuY29uZmlndXJhdGlvbi5sb2FkRnJvbUFycmF5ICE9IHVuZGVmaW5lZCAmJiB0aGlzLmNvbmZpZ3VyYXRpb24ubG9hZEZyb21BcnJheS5sZW5ndGgpe1xyXG4gICAgICB0aGlzLml0ZW1zID0gWy4uLnRoaXMuY29uZmlndXJhdGlvbi5sb2FkRnJvbUFycmF5XTtcclxuICAgICAgZm9yIChjb25zdCBjb21wb25lbnQgb2YgdGhpcy5sc3RDb21wb25lbnRzKSB7XHJcbiAgICAgICBpZighY29tcG9uZW50LmRlc3Ryb3llZClcclxuICAgICAgICBjb21wb25lbnQuaXRlbXMuc2V0KFsuLi50aGlzLml0ZW1zXSk7IFxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvL1sgTG9hZCBmcm9tIGFwaSBdXHJcbiAgICBsZXQgdkZpbHRyb3M6IFZpZXdGaWx0cm9zIHwgbnVsbCA9IHRoaXMuY29uZmlndXJhdGlvbi52RmlsdHJvcztcclxuICAgIHRyeXtcclxuICAgICAgbGV0IGxzdERhZG9zOiBhbnlbXSA9IFtdO1xyXG4gICAgICBcclxuICAgICAgaWYodGhpcy5jb25maWd1cmF0aW9uLmxvYWRGcm9tU2VydmljZSl7XHJcbiAgICAgICAgbHN0RGFkb3MgPSAoYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5jb25maWd1cmF0aW9uLmxvYWRGcm9tU2VydmljZS5MaXN0KHZGaWx0cm9zKSkpLmxzdERhZG9zXHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIGxzdERhZG9zID0gKGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuY29uZmlndXJhdGlvbi5sb2FkRnJvbUZ1bmN0aW9uKSkubHN0RGFkb3M7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuaXRlbXMgPSBsc3REYWRvcztcclxuICAgICAgZm9yIChjb25zdCBjb21wb25lbnQgb2YgdGhpcy5sc3RDb21wb25lbnRzKSB7XHJcbiAgICAgICAgaWYoIWNvbXBvbmVudC5kZXN0cm95ZWQpXHJcbiAgICAgICAgY29tcG9uZW50Lml0ZW1zLnNldChbLi4udGhpcy5pdGVtc10pOyBcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5lcnJvciA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGUpeyB0aGlzLmVycm9yID0gdHJ1ZTsgdGhyb3cgZTsgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIEJpbmRWYWx1ZUZhY3RvcnkoY29uZmlndXJhdGlvbjogSW5wdXRTZWxlY3RDb25maWd1cmF0aW9uKTogKChvYmo6IGFueSkgPT4gYW55KSB7XHJcbiAgY29uc3QgY0JpbmRWYWx1ZSA9IGNvbmZpZ3VyYXRpb24uYmluZFZhbHVlO1xyXG4gIGxldCBiaW5kVmFsdWU6ICgoYXJnczogYW55KSA9PiBhbnkpID0gbnVsbDtcclxuICBpZih0eXBlb2YoY0JpbmRWYWx1ZSkgPT0gJ3N0cmluZycpe1xyXG4gICAgbGV0IGJ2Uzogc3RyaW5nICAgICAgICAgICAgICAgPSBjQmluZFZhbHVlO1xyXG4gICAgYmluZFZhbHVlID0gKChvYmo6IGFueSk6IGFueSA9PiB7IHJldHVybiBvYmpbYnZTXTsgfSk7XHJcbiAgfWVsc2V7XHJcbiAgICBsZXQgYnZGOiAoKGFyZ3M6IGFueSkgPT4gYW55KSA9IGNCaW5kVmFsdWU7XHJcbiAgICBiaW5kVmFsdWUgPSAoKG9iajogYW55KTogYW55ID0+IHsgcmV0dXJuIGJ2RihvYmopOyB9KTtcclxuICB9XHJcbiAgcmV0dXJuIGJpbmRWYWx1ZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIEJpbmRMYWJlbEZhY3RvcnkoY29uZmlndXJhdGlvbjogSW5wdXRTZWxlY3RDb25maWd1cmF0aW9uKTogKChvYmo6IGFueSkgPT4gc3RyaW5nKSB7XHJcbiAgY29uc3QgY0JpbmRMYWJlbCA9IGNvbmZpZ3VyYXRpb24uYmluZExhYmVsO1xyXG4gIGxldCBiaW5kTGFiZWw6ICgoYXJnczogYW55KSA9PiBzdHJpbmcpID0gbnVsbDtcclxuICBpZih0eXBlb2YoY0JpbmRMYWJlbCkgPT0gJ3N0cmluZycpe1xyXG4gICAgbGV0IGJsUzogc3RyaW5nICAgICAgICAgICAgICAgPSBjQmluZExhYmVsO1xyXG4gICAgYmluZExhYmVsID0gKChvYmo6IGFueSk6IHN0cmluZyA9PiB7IHJldHVybiBvYmpbYmxTXSArICcnOyB9KTtcclxuICB9ZWxzZXtcclxuICAgIGxldCBibEY6ICgoYXJnczogYW55KSA9PiBhbnkpID0gY0JpbmRMYWJlbDtcclxuICAgIGJpbmRMYWJlbCA9ICgob2JqOiBhbnkpOiBzdHJpbmcgPT4geyByZXR1cm4gYmxGKG9iaikgKyAnJzsgfSk7XHJcbiAgfVxyXG4gIHJldHVybiBiaW5kTGFiZWw7XHJcbn0iXX0=
229
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuc2VsZWN0LmNvbmZpZ3VyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL2lucHV0LXNlbGVjdC9pbnB1dC5zZWxlY3QuY29uZmlndXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWxELE9BQU8sRUFBRSxXQUFXLEVBQWUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDcEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBTzFELE1BQU0sQ0FBTixJQUFZLGdCQVFYO0FBUkQsV0FBWSxnQkFBZ0I7SUFDMUI7O09BRUc7SUFDSCw2REFBZSxDQUFBO0lBQ2YsNkRBQWUsQ0FBQTtJQUNmLHlEQUFlLENBQUE7SUFDZixxRUFBZSxDQUFBO0FBQ2pCLENBQUMsRUFSVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBUTNCO0FBRUQsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9Ba0JiO1FBRUMsTUFBTSxNQUFNLEdBQUcsSUFBSSx3QkFBd0IsQ0FDekMsT0FBTyxDQUFDLFNBQVMsRUFDakIsT0FBTyxDQUFDLFNBQVMsRUFDakIsT0FBTyxDQUFDLFNBQVMsRUFDakIsT0FBTyxDQUFDLFdBQVcsRUFDbkIsT0FBTyxDQUFDLFFBQVEsRUFDaEIsT0FBTyxDQUFDLFFBQVEsRUFDaEIsT0FBTyxDQUFDLFFBQVEsSUFBSSxJQUFJLEVBQ3hCLE9BQU8sQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQ25DLENBQUM7UUFDRixJQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUMsQ0FBQztZQUN0QixNQUFN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LEdBQVEsRUFBVSxFQUFFLEdBQUcsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBmaXJzdFZhbHVlRnJvbSB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG5pbXBvcnQgeyBIdHRwU2VydmljZSwgVmlld1JldG9ybm8gfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvd2ViL2h0dHAuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZUF0aXZvIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3dlYi9odHRwLmF0aXZvLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVmlld0ZpbHRyb3MgfSBmcm9tIFwiLi4vLi4vLi4vY2xhc3Nlcy9maWx0ZXJzL3ZpZXctZmlsdHJvc1wiO1xyXG5pbXBvcnQgeyBJTlRfTUFYIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3V0aWxzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQ29tcGFyaXNvbiB9IGZyb20gXCIuLi8uLi8uLi9jbGFzc2VzL2NvbXBhcmlzb24vY29tcGFyaXNvblwiO1xyXG5pbXBvcnQgeyBJbnB1dFNlbGVjdENvbXBvbmVudCB9IGZyb20gXCIuL2lucHV0LXNlbGVjdC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgUGxhY2VtZW50IH0gZnJvbSBcIkBmbG9hdGluZy11aS9kb21cIjtcclxuXHJcbmV4cG9ydCB0eXBlIERlZmF1bHRNb2RlbE9wdGlvbnMgPSB7IHZhbHVlOiBzdHJpbmcsIGxhYmVsOiBzdHJpbmcgfTtcclxuXHJcbmV4cG9ydCBlbnVtIFNlbGVjdEludGVyZmFjZXMgICAge1xyXG4gIC8qKiBJbnRlcmZhY2UgcGFkcsOjbyBkbyBzZWxlY3QgXHJcbiAgICogUG9wb3ZlciBxdWFuZG8gd2ViLCBNb2RhbCBxdWFuZG8gbW9iaWxlXHJcbiAgICovXHJcbiAgRHluYW1pYyAgICAgPSAwLFxyXG4gIFBvcG92ZXIgICAgID0gMCxcclxuICBNb2RhbCAgICAgICA9IDEsXHJcbiAgQWN0aW9uU2hlZXQgPSAyLFxyXG59IFxyXG5cclxuZXhwb3J0IGNsYXNzIElucHV0U2VsZWN0Q29uZmlndXJhdGlvbntcclxuICBzdGF0aWMgQ3JlYXRlKG9wdGlvbnM6IHtcclxuICAgIGJpbmRMYWJlbDogc3RyaW5nIHwgKChvYmo6IGFueSkgPT4gc3RyaW5nKSxcclxuICAgIGJpbmRWYWx1ZTogc3RyaW5nIHwgKChvYmo6IGFueSkgPT4gYW55KSxcclxuICAgIGNsZWFyYWJsZT86IGJvb2xlYW4sXHJcbiAgICBzZWFyY2hlYWJsZT86IGJvb2xlYW4sXHJcbiAgICBsb2FkRnJvbT86IEh0dHBTZXJ2aWNlIHwgT2JzZXJ2YWJsZTxWaWV3UmV0b3Jubz4gfCBhbnlbXSxcclxuICAgIG11bHRpcGxlPzogYm9vbGVhbixcclxuICAgIHZGaWx0cm9zPzogUGFydGlhbDx7IFxyXG4gICAgICBzZWFyY2g6IHN0cmluZyxcclxuICAgICAgb3JkZXJCeVByb3BlcnR5OiBzdHJpbmcsXHJcbiAgICAgIGFzY2VuZGluZzogYm9vbGVhbixcclxuICAgICAgZmlsdGVyOiBDb21wYXJpc29uW11cclxuICAgIH0+LFxyXG4gICAgZGlzYWJsZUNvbmRpdGlvbmFsPzogKChvYmo6IGFueSkgPT4gYm9vbGVhbilcclxuICAgIHVzZUluZmluaXRlU2Nyb2xsPzogYm9vbGVhbiB8IHVuZGVmaW5lZCxcclxuICAgIHBsYWNlaG9sZGVyPzogc3RyaW5nLFxyXG4gICAgbm9JdGVuc0ZvdW5kVGV4dD86IHN0cmluZyxcclxuICAgIGludGVyZmFjZT86IFNlbGVjdEludGVyZmFjZXMsXHJcbiAgfVxyXG4gICl7XHJcbiAgICBjb25zdCBjb25maWcgPSBuZXcgSW5wdXRTZWxlY3RDb25maWd1cmF0aW9uKFxyXG4gICAgICBvcHRpb25zLmJpbmRWYWx1ZSxcclxuICAgICAgb3B0aW9ucy5iaW5kTGFiZWwsXHJcbiAgICAgIG9wdGlvbnMuY2xlYXJhYmxlLFxyXG4gICAgICBvcHRpb25zLnNlYXJjaGVhYmxlLFxyXG4gICAgICBvcHRpb25zLmxvYWRGcm9tLFxyXG4gICAgICBvcHRpb25zLm11bHRpcGxlLFxyXG4gICAgICBvcHRpb25zLnZGaWx0cm9zIHx8IG51bGwsXHJcbiAgICAgIG9wdGlvbnMuZGlzYWJsZUNvbmRpdGlvbmFsIHx8IG51bGxcclxuICAgICk7XHJcbiAgICBpZihvcHRpb25zLnBsYWNlaG9sZGVyKXtcclxuICAgICAgY29uZmlnLnBsYWNlaG9sZGVyID0gb3B0aW9ucy5wbGFjZWhvbGRlcjtcclxuICAgIH1cclxuICAgIGlmKG9wdGlvbnMubm9JdGVuc0ZvdW5kVGV4dCl7XHJcbiAgICAgIGNvbmZpZy5ub0l0ZW5zRm91bmRUZXh0ID0gb3B0aW9ucy5ub0l0ZW5zRm91bmRUZXh0O1xyXG4gICAgfVxyXG4gICAgaWYob3B0aW9ucy51c2VJbmZpbml0ZVNjcm9sbCAhPSB1bmRlZmluZWQpe1xyXG4gICAgICBjb25maWcudXNlSW5maW5pdGVTY3JvbGwgPSBvcHRpb25zLnVzZUluZmluaXRlU2Nyb2xsO1xyXG4gICAgfVxyXG4gICAgaWYob3B0aW9ucy5pbnRlcmZhY2Upe1xyXG4gICAgICBjb25maWcuaW50ZXJmYWNlID0gb3B0aW9ucy5pbnRlcmZhY2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29uZmlnO1xyXG4gIH07XHJcblxyXG5cclxuICBwbGFjZWhvbGRlciAgICAgOiBzdHJpbmcgPSBcIlNlbGVjaW9uZSB1bSBpdGVtLi4uXCJcclxuICBub0l0ZW5zRm91bmRUZXh0OiBzdHJpbmcgPSBcIlNlbSBpdGVtcyBlbmNvbnRyYWRvcy4uLlwiXHJcblxyXG4gIGxvYWRlcjogSW5wdXRTZWxlY3REYXRhTG9hZGVyO1xyXG4gIGxvYWRGcm9tQXJyYXkgICA6IGFueVtdO1xyXG4gIGxvYWRGcm9tU2VydmljZSA6IEh0dHBTZXJ2aWNlIHwgSHR0cFNlcnZpY2VBdGl2b1xyXG4gIGxvYWRGcm9tRnVuY3Rpb246IE9ic2VydmFibGU8YW55PlxyXG5cclxuICBwb3BvdmVyQ29uZmlndXJhdGlvbjoge1xyXG4gICAgZmxpcDogYm9vbGVhbixcclxuICAgIHBsYWNlbWVudDogUGxhY2VtZW50LFxyXG4gIH0gPSB7XHJcbiAgICBmbGlwOiB0cnVlLFxyXG4gICAgcGxhY2VtZW50OiBcImJvdHRvbVwiXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdkZpbHRyb3M6IFZpZXdGaWx0cm9zIHwgbnVsbCA9IG51bGw7XHJcbiAgcHVibGljIHVzZUluZmluaXRlU2Nyb2xsPzogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuXHJcbiAgLyoqIEludGVyZmFjZSBkbyBzZWxlY3QgKi9cclxuICBwdWJsaWMgaW50ZXJmYWNlOiBTZWxlY3RJbnRlcmZhY2VzID0gU2VsZWN0SW50ZXJmYWNlcy5EeW5hbWljO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIC8qKiBWYWxvciBxdWUgc2Vyw6Egc2V0YWRvIG5vIGZvcm1Db250cm9sICovXHJcbiAgICBwdWJsaWMgYmluZFZhbHVlOiBzdHJpbmcgfCAoKG9iajogYW55KSA9PiBhbnkpICAgICA9IFwiaWRcIiAgLFxyXG4gICAgLyoqIFZhbG9yIHF1ZSBzZXLDoSBleGliaWRvICovXHJcbiAgICBwdWJsaWMgYmluZExhYmVsOiBzdHJpbmcgfCAoKG9iajogYW55KSA9PiBzdHJpbmcpICA9IFwibm9tZVwiLCBcclxuICAgIFxyXG4gICAgLyoqIEluZGljYSBzZSBvIHNlbGVjdCBwb2RlIHNlciBudWxvIGUgbGltcGF2ZWwgKi9cclxuICAgIHB1YmxpYyBjbGVhcmFibGUgIDogYm9vbGVhbiA9IHRydWUsIFxyXG4gICAgLyoqIEluZGljYSBzZSBvIHNlbGVjdCBwb2RlIHNlciBwZXNxdWlzYWRvICovXHJcbiAgICBwdWJsaWMgc2VhcmNoZWFibGU6IGJvb2xlYW4gPSB0cnVlLCBcclxuICAgIFxyXG4gICAgLyoqIFxyXG4gICAgICogU2UgTG9hZEZyb20gaW5zdGFuY2VvZiBIdHRwU2VydmljZSAgICAgIC0+IE9zIGRhZG9zIHNlcsOjbyBjYXJyZWdhZG9zIGRvIExpc3QoKVxyXG4gICAgICogU2UgTG9hZEZyb20gaW5zdGFuY2VvZiBPYnNlcnZhYmxlICAgICAgIC0+IE9zIGRhZG9zIHNlcsOjbyBjYXJyZWdhZG9zIGRhIGZ1bsOnw6NvIGluZGljYWRhXHJcbiAgICAgKiBTZSBMb2FkRnJvbSBpbnN0YW5jZW9mIEFycmF5ICAgICAgICAgICAgLT4gT3MgZGFkb3Mgc2Vyw6NvIG8gYXJyYXlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGxvYWRGcm9tPzogIEh0dHBTZXJ2aWNlIHwgT2JzZXJ2YWJsZTxWaWV3UmV0b3Jubz4gfCBhbnlbXSwgXHJcbiAgICAvKiogU2UgPSB0cnVlIE9zIHZhbG9yZXMgbm8gZm9ybSBjb250cm9sIHNlcsOhbyB1bSBhcnJheSBkb3MgaXRlbXMgc2VsZWNpb25hZG9zICovXHJcbiAgICBwdWJsaWMgbXVsdGlwbGUgOiBib29sZWFuID0gZmFsc2UsXHJcbiAgICAvKiogQXBsaWNhIG9zIGZpbHRyb3MgbmEgcGVzcXVpc2EgKi9cclxuICAgIHZGaWx0cm9zIDogUGFydGlhbDx7IFxyXG4gICAgICAvKiogQXBsaWNhIHVtYSBwZXNxdWlzYSBlbSB0ZXh0byAgKi9cclxuICAgICAgc2VhcmNoOiBzdHJpbmdcclxuICAgICAgLyoqIFByb3ByaWVkYWRlIGRlIG9yZGVuYcOnw6NvICovXHJcbiAgICAgIG9yZGVyQnlQcm9wZXJ0eTogc3RyaW5nXHJcbiAgICAgIC8qKiBPcmllbnRhw6fDo28gZGUgb3JkZW5hw6fDo28gKi9cclxuICAgICAgYXNjZW5kaW5nOiBib29sZWFuLFxyXG4gICAgICAvKiogRmlsdHJvICAqL1xyXG4gICAgICBmaWx0ZXI6IENvbXBhcmlzb25bXVxyXG4gICAgfT4gfCBudWxsID0gbnVsbCxcclxuICAgIC8qKiBEZXNhdGl2YSBvcyBpdGVtcyBxdWUgZXN0w6NvIGRlIGFjb3JkbyBjb20gYSBmdW7Dp8OjbyAqL1xyXG4gICAgcHVibGljIGRpc2FibGVDb25kaXRpb25hbDogKChvYmo6IGFueSkgPT4gYm9vbGVhbikgfCBudWxsID0gbnVsbFxyXG4gICl7XHJcbiAgICB0aGlzLmNsZWFyYWJsZSAgID0gY2xlYXJhYmxlO1xyXG4gICAgdGhpcy5zZWFyY2hlYWJsZSA9IHNlYXJjaGVhYmxlO1xyXG4gICAgdGhpcy5tdWx0aXBsZSAgICA9IG11bHRpcGxlO1xyXG5cclxuICAgIGlmKHZGaWx0cm9zICE9IG51bGwpe1xyXG4gICAgICBjb25zdCB2ID0gdkZpbHRyb3M7XHJcbiAgICAgIGlmKHYuYXNjZW5kaW5nID09IG51bGwgfHwgdi5hc2NlbmRpbmcgPT0gdW5kZWZpbmVkKXsgXHJcbiAgICAgICAgdi5hc2NlbmRpbmcgPSB0cnVlOyBcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnZGaWx0cm9zID0gbmV3IFZpZXdGaWx0cm9zKElOVF9NQVgsIHYuc2VhcmNoLCAxLCB2Lm9yZGVyQnlQcm9wZXJ0eSwgdi5hc2NlbmRpbmcpO1xyXG4gICAgICB0aGlzLnZGaWx0cm9zLmZpbHRlciA9IHYuZmlsdGVyO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKGxvYWRGcm9tKXtcclxuICAgICAgaWYoQXJyYXkuaXNBcnJheShsb2FkRnJvbSkpeyBcclxuICAgICAgICB0aGlzLmxvYWRGcm9tQXJyYXkgICAgPSBsb2FkRnJvbTsgXHJcbiAgICAgIH0gZWxzZVxyXG4gICAgICBpZihsb2FkRnJvbSBpbnN0YW5jZW9mIEh0dHBTZXJ2aWNlIHx8IGxvYWRGcm9tIGluc3RhbmNlb2YgSHR0cFNlcnZpY2VBdGl2byl7IFxyXG4gICAgICAgIHRoaXMubG9hZEZyb21TZXJ2aWNlICA9IGxvYWRGcm9tO1xyXG4gICAgICB9IGVsc2UgeyAgXHJcbiAgICAgICAgdGhpcy5sb2FkRnJvbUZ1bmN0aW9uID0gbG9hZEZyb207XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxvYWRlciA9IG5ldyBJbnB1dFNlbGVjdERhdGFMb2FkZXIodGhpcyk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgSW5wdXRTZWxlY3REYXRhTG9hZGVye1xyXG4gIHByaXZhdGUgbHN0Q29tcG9uZW50czogSW5wdXRTZWxlY3RDb21wb25lbnRbXSA9IFtdO1xyXG4gIHByaXZhdGUgY29uZmlndXJhdGlvbjogSW5wdXRTZWxlY3RDb25maWd1cmF0aW9uO1xyXG5cclxuICAvKiogVmFsb3IgcXVlIHNlcsOhIHNldGFkbyBubyBmb3JtQ29udHJvbCAqL1xyXG4gIHB1YmxpYyBiaW5kVmFsdWU6ICgob2JqOiBhbnkpID0+IGFueSkgICB8IG51bGwgPSBudWxsO1xyXG4gIC8qKiBWYWxvciBxdWUgc2Vyw6EgZXhpYmlkbyAqL1xyXG4gIHB1YmxpYyBiaW5kTGFiZWw6ICgob2JqOiBhbnkpID0+IHN0cmluZyl8IG51bGwgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihjb25maWd1cmF0aW9uOiBJbnB1dFNlbGVjdENvbmZpZ3VyYXRpb24pICB7IFxyXG4gICAgdGhpcy5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbjsgXHJcbiAgICB0aGlzLmJpbmRWYWx1ZSA9IEJpbmRWYWx1ZUZhY3RvcnkoY29uZmlndXJhdGlvbilcclxuICAgIHRoaXMuYmluZExhYmVsID0gQmluZExhYmVsRmFjdG9yeShjb25maWd1cmF0aW9uKVxyXG4gIH1cclxuXHJcbiAgcHVibGljIEFkZENvbXBvbmVudChjb21wb25lbnQ6IElucHV0U2VsZWN0Q29tcG9uZW50KTogdm9pZCB7IFxyXG4gICAgdGhpcy5sc3RDb21wb25lbnRzLnB1c2goY29tcG9uZW50KTtcclxuICB9XHJcblxyXG4gIC8vVE9ETyBSZW1vdmUgZnVuY3Rpb25cclxuICAgcHVibGljIEdldExhYmVsKHZhbHVlOiBhbnkpe1xyXG4gICAgaWYoIXRoaXMuaXRlbXMgfHwgIXRoaXMuYmluZFZhbHVlIHx8ICF0aGlzLmJpbmRMYWJlbCl7IHJldHVybiBcIlwiOyB9XHJcbiAgICBjb25zdCBpdGVtID0gdGhpcy5pdGVtcy5maW5kKHAgPT4gdGhpcy5iaW5kVmFsdWUocCkgPT0gdmFsdWUpO1xyXG4gICAgaWYoIWl0ZW0peyByZXR1cm4gXCJcIiA7fVxyXG4gICAgcmV0dXJuIHRoaXMuYmluZExhYmVsKGl0ZW0pO1xyXG4gIH1cclxuXHJcbiAgaXNMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBlcnJvciAgIDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBhc3luYyBSZWZyZXNoKGl0ZW1zPzogYW55W10pOiBQcm9taXNlPHZvaWQ+e1xyXG4gICAgZm9yIChjb25zdCBjb21wb25lbnQgb2YgdGhpcy5sc3RDb21wb25lbnRzKSB7XHJcbiAgICAgIGNvbXBvbmVudC5sb2FkaW5nRnJvbUxvYWRlciA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGlmKCF0aGlzLmNvbmZpZ3VyYXRpb24ubG9hZEZyb21TZXJ2aWNlICAmJiBcclxuICAgICAgICF0aGlzLmNvbmZpZ3VyYXRpb24ubG9hZEZyb21GdW5jdGlvbiAmJiBcclxuICAgICAgICghdGhpcy5jb25maWd1cmF0aW9uLmxvYWRGcm9tQXJyYXkgfHwgIXRoaXMuY29uZmlndXJhdGlvbi5sb2FkRnJvbUFycmF5Lmxlbmd0aClcclxuICAgICAgKXtcclxuICAgICAgdGhpcy5pdGVtcyA9IFsuLi5pdGVtcyB8fCBbXV07XHJcbiAgICAgIHRoaXMuaXNMb2FkZWQgPSB0cnVlO1xyXG4gICAgICBmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiB0aGlzLmxzdENvbXBvbmVudHMpIHtcclxuICAgICAgICBpZighY29tcG9uZW50LmRlc3Ryb3llZClcclxuICAgICAgICBjb21wb25lbnQuaXRlbXMuc2V0KFsuLi50aGlzLml0ZW1zXSk7IFxyXG4gICAgICAgICAgdGhpcy5DaGVja0ZvckluZmluaXRlU2Nyb2xsKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIFxyXG4gICAgdHJ5e1xyXG4gICAgICBhd2FpdCB0aGlzLkxvYWQoKTtcclxuICAgICAgdGhpcy5pc0xvYWRlZCA9IHRydWU7XHJcbiAgICAgIGZvciAoY29uc3QgY29tcG9uZW50IG9mIHRoaXMubHN0Q29tcG9uZW50cykge1xyXG4gICAgICAgIGlmKCFjb21wb25lbnQuZGVzdHJveWVkKVxyXG4gICAgICAgIGNvbXBvbmVudC5pdGVtcy5zZXQoWy4uLnRoaXMuaXRlbXNdKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZmluYWxseXtcclxuICAgICAgZm9yIChjb25zdCBjb21wb25lbnQgb2YgdGhpcy5sc3RDb21wb25lbnRzKSB7XHJcbiAgICAgICAgY29tcG9uZW50LmxvYWRpbmdGcm9tTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIENoZWNrRm9ySW5maW5pdGVTY3JvbGwoKTogdm9pZCB7XHJcbiAgICBpZih0aGlzLml0ZW1zLmxlbmd0aCA+IDEwMCAmJiB0aGlzLmNvbmZpZ3VyYXRpb24udXNlSW5maW5pdGVTY3JvbGwgPT0gdW5kZWZpbmVkKXtcclxuICAgICAgdGhpcy5jb25maWd1cmF0aW9uLnVzZUluZmluaXRlU2Nyb2xsID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGl0ZW1zOiBhbnlbXSA9IFtdO1xyXG4gIGFzeW5jIExvYWQoKTogUHJvbWlzZTx2b2lkPntcclxuICAgIGlmKHRoaXMuaXNMb2FkZWQpe1xyXG4gICAgICBmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiB0aGlzLmxzdENvbXBvbmVudHMpIHtcclxuICAgICAgIGlmKCFjb21wb25lbnQuZGVzdHJveWVkKVxyXG4gICAgICAgIGNvbXBvbmVudC5pdGVtcy5zZXQoWy4uLnRoaXMuaXRlbXNdKTsgXHJcbiAgICAgICAgdGhpcy5DaGVja0ZvckluZmluaXRlU2Nyb2xsKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvL1sgTG9hZCBmcm9tIEFycmF5IF1cclxuICAgIGlmKHRoaXMuY29uZmlndXJhdGlvbi5sb2FkRnJvbUFycmF5ICE9IHVuZGVmaW5lZCAmJiB0aGlzLmNvbmZpZ3VyYXRpb24ubG9hZEZyb21BcnJheS5sZW5ndGgpe1xyXG4gICAgICB0aGlzLml0ZW1zID0gWy4uLnRoaXMuY29uZmlndXJhdGlvbi5sb2FkRnJvbUFycmF5XTtcclxuICAgICAgZm9yIChjb25zdCBjb21wb25lbnQgb2YgdGhpcy5sc3RDb21wb25lbnRzKSB7XHJcbiAgICAgICBpZighY29tcG9uZW50LmRlc3Ryb3llZClcclxuICAgICAgICBjb21wb25lbnQuaXRlbXMuc2V0KFsuLi50aGlzLml0ZW1zXSk7IFxyXG4gICAgICAgIHRoaXMuQ2hlY2tGb3JJbmZpbml0ZVNjcm9sbCgpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvL1sgTG9hZCBmcm9tIGFwaSBdXHJcbiAgICBsZXQgdkZpbHRyb3M6IFZpZXdGaWx0cm9zIHwgbnVsbCA9IHRoaXMuY29uZmlndXJhdGlvbi52RmlsdHJvcztcclxuICAgIHRyeXtcclxuICAgICAgbGV0IGxzdERhZG9zOiBhbnlbXSA9IFtdO1xyXG4gICAgICBcclxuICAgICAgaWYodGhpcy5jb25maWd1cmF0aW9uLmxvYWRGcm9tU2VydmljZSl7XHJcbiAgICAgICAgbHN0RGFkb3MgPSAoYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5jb25maWd1cmF0aW9uLmxvYWRGcm9tU2VydmljZS5MaXN0KHZGaWx0cm9zKSkpLmxzdERhZG9zXHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIGxzdERhZG9zID0gKGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuY29uZmlndXJhdGlvbi5sb2FkRnJvbUZ1bmN0aW9uKSkubHN0RGFkb3M7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuaXRlbXMgPSBsc3REYWRvcztcclxuICAgICAgZm9yIChjb25zdCBjb21wb25lbnQgb2YgdGhpcy5sc3RDb21wb25lbnRzKSB7XHJcbiAgICAgICAgaWYoIWNvbXBvbmVudC5kZXN0cm95ZWQpXHJcbiAgICAgICAgY29tcG9uZW50Lml0ZW1zLnNldChbLi4udGhpcy5pdGVtc10pOyBcclxuICAgICAgICAgIHRoaXMuQ2hlY2tGb3JJbmZpbml0ZVNjcm9sbCgpO31cclxuICAgICAgO1xyXG4gICAgICB0aGlzLmVycm9yID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZSl7IHRoaXMuZXJyb3IgPSB0cnVlOyB0aHJvdyBlOyB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gQmluZFZhbHVlRmFjdG9yeShjb25maWd1cmF0aW9uOiBJbnB1dFNlbGVjdENvbmZpZ3VyYXRpb24pOiAoKG9iajogYW55KSA9PiBhbnkpIHtcclxuICBjb25zdCBjQmluZFZhbHVlID0gY29uZmlndXJhdGlvbi5iaW5kVmFsdWU7XHJcbiAgbGV0IGJpbmRWYWx1ZTogKChhcmdzOiBhbnkpID0+IGFueSkgPSBudWxsO1xyXG4gIGlmKHR5cGVvZihjQmluZFZhbHVlKSA9PSAnc3RyaW5nJyl7XHJcbiAgICBsZXQgYnZTOiBzdHJpbmcgICAgICAgICAgICAgICA9IGNCaW5kVmFsdWU7XHJcbiAgICBiaW5kVmFsdWUgPSAoKG9iajogYW55KTogYW55ID0+IHsgcmV0dXJuIG9ialtidlNdOyB9KTtcclxuICB9ZWxzZXtcclxuICAgIGxldCBidkY6ICgoYXJnczogYW55KSA9PiBhbnkpID0gY0JpbmRWYWx1ZTtcclxuICAgIGJpbmRWYWx1ZSA9ICgob2JqOiBhbnkpOiBhbnkgPT4geyByZXR1cm4gYnZGKG9iaik7IH0pO1xyXG4gIH1cclxuICByZXR1cm4gYmluZFZhbHVlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gQmluZExhYmVsRmFjdG9yeShjb25maWd1cmF0aW9uOiBJbnB1dFNlbGVjdENvbmZpZ3VyYXRpb24pOiAoKG9iajogYW55KSA9PiBzdHJpbmcpIHtcclxuICBjb25zdCBjQmluZExhYmVsID0gY29uZmlndXJhdGlvbi5iaW5kTGFiZWw7XHJcbiAgbGV0IGJpbmRMYWJlbDogKChhcmdzOiBhbnkpID0+IHN0cmluZykgPSBudWxsO1xyXG4gIGlmKHR5cGVvZihjQmluZExhYmVsKSA9PSAnc3RyaW5nJyl7XHJcbiAgICBsZXQgYmxTOiBzdHJpbmcgICAgICAgICAgICAgICA9IGNCaW5kTGFiZWw7XHJcbiAgICBiaW5kTGFiZWwgPSAoKG9iajogYW55KTogc3RyaW5nID0+IHsgcmV0dXJuIG9ialtibFNdICsgJyc7IH0pO1xyXG4gIH1lbHNle1xyXG4gICAgbGV0IGJsRjogKChhcmdzOiBhbnkpID0+IGFueSkgPSBjQmluZExhYmVsO1xyXG4gICAgYmluZExhYmVsID0gKChvYmo6IGFueSk6IHN0cmluZyA9PiB7IHJldHVybiBibEYob2JqKSArICcnOyB9KTtcclxuICB9XHJcbiAgcmV0dXJuIGJpbmRMYWJlbDtcclxufSJdfQ==
@@ -1095,7 +1095,7 @@ class InputSelectConfiguration {
1095
1095
  placement: "bottom"
1096
1096
  };
1097
1097
  this.vFiltros = null;
1098
- this.useInfiniteScroll = false;
1098
+ this.useInfiniteScroll = undefined;
1099
1099
  /** Interface do select */
1100
1100
  this.interface = SelectInterfaces.Dynamic;
1101
1101
  this.clearable = clearable;
@@ -1163,6 +1163,7 @@ class InputSelectDataLoader {
1163
1163
  for (const component of this.lstComponents) {
1164
1164
  if (!component.destroyed)
1165
1165
  component.items.set([...this.items]);
1166
+ this.CheckForInfiniteScroll();
1166
1167
  }
1167
1168
  }
1168
1169
  try {
@@ -1179,11 +1180,17 @@ class InputSelectDataLoader {
1179
1180
  }
1180
1181
  }
1181
1182
  }
1183
+ CheckForInfiniteScroll() {
1184
+ if (this.items.length > 100 && this.configuration.useInfiniteScroll == undefined) {
1185
+ this.configuration.useInfiniteScroll = true;
1186
+ }
1187
+ }
1182
1188
  async Load() {
1183
1189
  if (this.isLoaded) {
1184
1190
  for (const component of this.lstComponents) {
1185
1191
  if (!component.destroyed)
1186
1192
  component.items.set([...this.items]);
1193
+ this.CheckForInfiniteScroll();
1187
1194
  }
1188
1195
  return;
1189
1196
  }
@@ -1193,6 +1200,7 @@ class InputSelectDataLoader {
1193
1200
  for (const component of this.lstComponents) {
1194
1201
  if (!component.destroyed)
1195
1202
  component.items.set([...this.items]);
1203
+ this.CheckForInfiniteScroll();
1196
1204
  }
1197
1205
  return;
1198
1206
  }
@@ -1210,6 +1218,7 @@ class InputSelectDataLoader {
1210
1218
  for (const component of this.lstComponents) {
1211
1219
  if (!component.destroyed)
1212
1220
  component.items.set([...this.items]);
1221
+ this.CheckForInfiniteScroll();
1213
1222
  }
1214
1223
  ;
1215
1224
  this.error = false;
@@ -4099,6 +4108,7 @@ class DefaultListComponent extends List {
4099
4108
  this.noBreadcrumbs = false;
4100
4109
  /** Caminho de redirecionamento do item */
4101
4110
  this.itemPath = "view/:id";
4111
+ this.itemClick = output();
4102
4112
  }
4103
4113
  async Ativar(id) {
4104
4114
  if (!(this.service instanceof HttpServiceAtivo)) {
@@ -4117,11 +4127,11 @@ class DefaultListComponent extends List {
4117
4127
  await super.ngOnInit();
4118
4128
  }
4119
4129
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultListComponent, deps: [{ token: i0.ElementRef }, { token: i2$2.ActivatedRoute }, { token: GenericService }], target: i0.ɵɵFactoryTarget.Component }); }
4120
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DefaultListComponent, selector: "default-list", inputs: { noNew: "noNew", noPage: "noPage", noSearch: "noSearch", columnClass: "columnClass", columnStyle: "columnStyle", overrideNew: "overrideNew", noPagination: "noPagination", noBreadcrumbs: "noBreadcrumbs", itemPath: "itemPath" }, outputs: { onNewEmitter: "onNew" }, queries: [{ propertyName: "acoesTemplate", first: true, predicate: ["tmpAcoes"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ion-content class=\"bg-transparent\">\r\n <div class=\"wrapper\" [ngClass]=\"{'!p-0 translucid-primary-background': nested}\">\r\n @if (!noBreadcrumbs) {\r\n <ion-breadcrumbs>\r\n <ion-breadcrumb [routerLink]=\"[service ? service.route : '']\" [replaceUrl]=\"true\">{{service.title}}</ion-breadcrumb>\r\n </ion-breadcrumbs>\r\n }\r\n <ion-card>\r\n <ion-card-header [ngClass]=\"{'!px-0 !pb-0': noNew && noPage && noSearch}\">\r\n <header-list \r\n [(limit)]=\"frm.limit\"\r\n [(search)]=\"frm.search\" \r\n [(page)]=\"frm.page\" \r\n [loading]=\"loading\" \r\n (refresh)=\"Refresh()\"\r\n [noNew]=\"noNew\"\r\n [noPage]=\"noPage\"\r\n [noSearch]=\"noSearch\"\r\n [overrideNew]=\"overrideNew\"\r\n (onNew)=\"onNewEmitter.emit()\"\r\n > \r\n <ng-content slot=\"start\" select=\"[slot=header-start]\"></ng-content>\r\n <ng-content slot=\"end\" select=\"[slot=header-end]\"></ng-content>\r\n </header-list>\r\n </ion-card-header>\r\n <ion-card-content>\r\n <ion-refresher slot=\"fixed\" class=\"z-20\" (ionRefresh)=\"Refresh($event)\">\r\n <ion-refresher-content></ion-refresher-content>\r\n </ion-refresher>\r\n <div class=\"size-full ion-content-scroll-host\">\r\n @if(frm){\r\n <default-table \r\n class=\"block size-full relative\" \r\n [ngClass]=\"{ 'translate-y-0' : !loading }\"\r\n [loading]=\"loading\"\r\n [items]=\"lstDados\" \r\n [total]=\"total\"\r\n [(limit)]=\"frm.limit\"\r\n [(page)]=\"frm.page\"\r\n [(ascending)]=\"frm.ascending\"\r\n [(orderByProperty)]=\"frm.orderByProperty\"\r\n [(filter)]=\"frm.filter\"\r\n [itemPath]=\"itemPath\"\r\n [columnClass]=\"columnClass\"\r\n [columnStyle]=\"columnStyle\"\r\n [service]=\"service\"\r\n [acoesTemplate]=\"acoesTemplate\"\r\n (refresh)=\"Refresh();\"\r\n (ativar)=\"Ativar($event)\"\r\n [lstTableFields]=\"lstTableFields\"\r\n [noPagination]=\"noPagination\"\r\n >\r\n </default-table>\r\n }\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n </div>\r\n</ion-content>", styles: [""], dependencies: [{ kind: "component", type: i1.IonBreadcrumb, selector: "ion-breadcrumb", inputs: ["active", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "separator", "target"] }, { kind: "component", type: i1.IonBreadcrumbs, selector: "ion-breadcrumbs", inputs: ["color", "itemsAfterCollapse", "itemsBeforeCollapse", "maxItems", "mode"] }, { kind: "component", type: i1.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i1.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i1.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonRefresher, selector: "ion-refresher", inputs: ["closeDuration", "disabled", "mode", "pullFactor", "pullMax", "pullMin", "snapbackDuration"] }, { kind: "component", type: i1.IonRefresherContent, selector: "ion-refresher-content", inputs: ["pullingIcon", "pullingText", "refreshingSpinner", "refreshingText"] }, { kind: "directive", type: i1.RouterLinkDelegate, selector: ":not(a):not(area)[routerLink]" }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: HeaderListComponent, selector: "header-list", inputs: ["limit", "page", "search", "loading", "link", "noNew", "noPage", "noSearch", "overrideNew"], outputs: ["limitChange", "pageChange", "searchChange", "refresh", "onNew"] }, { kind: "component", type: DefaultTableComponent, selector: "default-table", inputs: ["acoesTemplate", "service", "total", "limit", "page", "orderByProperty", "ascending", "filter", "loading", "items", "lstTableFields", "noFilters", "columnClass", "columnStyle", "noPagination", "itemPath"], outputs: ["totalChange", "limitChange", "pageChange", "orderByPropertyChange", "ascendingChange", "filterChange", "ativar", "refresh", "loadingChange", "itemsChange", "lstTableFieldsChange", "itemClick"] }] }); }
4130
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DefaultListComponent, selector: "default-list", inputs: { noNew: "noNew", noPage: "noPage", noSearch: "noSearch", columnClass: "columnClass", columnStyle: "columnStyle", overrideNew: "overrideNew", noPagination: "noPagination", noBreadcrumbs: "noBreadcrumbs", itemPath: "itemPath" }, outputs: { onNewEmitter: "onNew", itemClick: "itemClick" }, queries: [{ propertyName: "acoesTemplate", first: true, predicate: ["tmpAcoes"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ion-content class=\"bg-transparent\">\r\n <div class=\"wrapper\" [ngClass]=\"{'!p-0 translucid-primary-background': nested}\">\r\n @if (!noBreadcrumbs) {\r\n <ion-breadcrumbs>\r\n <ion-breadcrumb [routerLink]=\"[service ? service.route : '']\" [replaceUrl]=\"true\">{{service.title}}</ion-breadcrumb>\r\n </ion-breadcrumbs>\r\n }\r\n <ion-card>\r\n <ion-card-header [ngClass]=\"{'!px-0 !pb-0': noNew && noPage && noSearch}\">\r\n <header-list \r\n [(limit)]=\"frm.limit\"\r\n [(search)]=\"frm.search\" \r\n [(page)]=\"frm.page\" \r\n [loading]=\"loading\" \r\n (refresh)=\"Refresh()\"\r\n [noNew]=\"noNew\"\r\n [noPage]=\"noPage\"\r\n [noSearch]=\"noSearch\"\r\n [overrideNew]=\"overrideNew\"\r\n (onNew)=\"onNewEmitter.emit()\"\r\n > \r\n <ng-content slot=\"start\" select=\"[slot=header-start]\"></ng-content>\r\n <ng-content slot=\"end\" select=\"[slot=header-end]\"></ng-content>\r\n </header-list>\r\n </ion-card-header>\r\n <ion-card-content>\r\n <ion-refresher slot=\"fixed\" class=\"z-20\" (ionRefresh)=\"Refresh($event)\">\r\n <ion-refresher-content></ion-refresher-content>\r\n </ion-refresher>\r\n <div class=\"size-full ion-content-scroll-host\">\r\n @if(frm){\r\n <default-table \r\n class=\"block size-full relative\" \r\n [ngClass]=\"{ 'translate-y-0' : !loading }\"\r\n [loading]=\"loading\"\r\n [items]=\"lstDados\" \r\n [total]=\"total\"\r\n [(limit)]=\"frm.limit\"\r\n [(page)]=\"frm.page\"\r\n [(ascending)]=\"frm.ascending\"\r\n [(orderByProperty)]=\"frm.orderByProperty\"\r\n [(filter)]=\"frm.filter\"\r\n (itemClick)=\"itemClick.emit($event)\"\r\n [itemPath]=\"itemPath\"\r\n [columnClass]=\"columnClass\"\r\n [columnStyle]=\"columnStyle\"\r\n [service]=\"service\"\r\n [acoesTemplate]=\"acoesTemplate\"\r\n (refresh)=\"Refresh();\"\r\n (ativar)=\"Ativar($event)\"\r\n [lstTableFields]=\"lstTableFields\"\r\n [noPagination]=\"noPagination\"\r\n >\r\n </default-table>\r\n }\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n </div>\r\n</ion-content>", styles: [""], dependencies: [{ kind: "component", type: i1.IonBreadcrumb, selector: "ion-breadcrumb", inputs: ["active", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "separator", "target"] }, { kind: "component", type: i1.IonBreadcrumbs, selector: "ion-breadcrumbs", inputs: ["color", "itemsAfterCollapse", "itemsBeforeCollapse", "maxItems", "mode"] }, { kind: "component", type: i1.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i1.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i1.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonRefresher, selector: "ion-refresher", inputs: ["closeDuration", "disabled", "mode", "pullFactor", "pullMax", "pullMin", "snapbackDuration"] }, { kind: "component", type: i1.IonRefresherContent, selector: "ion-refresher-content", inputs: ["pullingIcon", "pullingText", "refreshingSpinner", "refreshingText"] }, { kind: "directive", type: i1.RouterLinkDelegate, selector: ":not(a):not(area)[routerLink]" }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: HeaderListComponent, selector: "header-list", inputs: ["limit", "page", "search", "loading", "link", "noNew", "noPage", "noSearch", "overrideNew"], outputs: ["limitChange", "pageChange", "searchChange", "refresh", "onNew"] }, { kind: "component", type: DefaultTableComponent, selector: "default-table", inputs: ["acoesTemplate", "service", "total", "limit", "page", "orderByProperty", "ascending", "filter", "loading", "items", "lstTableFields", "noFilters", "columnClass", "columnStyle", "noPagination", "itemPath"], outputs: ["totalChange", "limitChange", "pageChange", "orderByPropertyChange", "ascendingChange", "filterChange", "ativar", "refresh", "loadingChange", "itemsChange", "lstTableFieldsChange", "itemClick"] }] }); }
4121
4131
  }
4122
4132
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultListComponent, decorators: [{
4123
4133
  type: Component,
4124
- args: [{ selector: 'default-list', template: "<ion-content class=\"bg-transparent\">\r\n <div class=\"wrapper\" [ngClass]=\"{'!p-0 translucid-primary-background': nested}\">\r\n @if (!noBreadcrumbs) {\r\n <ion-breadcrumbs>\r\n <ion-breadcrumb [routerLink]=\"[service ? service.route : '']\" [replaceUrl]=\"true\">{{service.title}}</ion-breadcrumb>\r\n </ion-breadcrumbs>\r\n }\r\n <ion-card>\r\n <ion-card-header [ngClass]=\"{'!px-0 !pb-0': noNew && noPage && noSearch}\">\r\n <header-list \r\n [(limit)]=\"frm.limit\"\r\n [(search)]=\"frm.search\" \r\n [(page)]=\"frm.page\" \r\n [loading]=\"loading\" \r\n (refresh)=\"Refresh()\"\r\n [noNew]=\"noNew\"\r\n [noPage]=\"noPage\"\r\n [noSearch]=\"noSearch\"\r\n [overrideNew]=\"overrideNew\"\r\n (onNew)=\"onNewEmitter.emit()\"\r\n > \r\n <ng-content slot=\"start\" select=\"[slot=header-start]\"></ng-content>\r\n <ng-content slot=\"end\" select=\"[slot=header-end]\"></ng-content>\r\n </header-list>\r\n </ion-card-header>\r\n <ion-card-content>\r\n <ion-refresher slot=\"fixed\" class=\"z-20\" (ionRefresh)=\"Refresh($event)\">\r\n <ion-refresher-content></ion-refresher-content>\r\n </ion-refresher>\r\n <div class=\"size-full ion-content-scroll-host\">\r\n @if(frm){\r\n <default-table \r\n class=\"block size-full relative\" \r\n [ngClass]=\"{ 'translate-y-0' : !loading }\"\r\n [loading]=\"loading\"\r\n [items]=\"lstDados\" \r\n [total]=\"total\"\r\n [(limit)]=\"frm.limit\"\r\n [(page)]=\"frm.page\"\r\n [(ascending)]=\"frm.ascending\"\r\n [(orderByProperty)]=\"frm.orderByProperty\"\r\n [(filter)]=\"frm.filter\"\r\n [itemPath]=\"itemPath\"\r\n [columnClass]=\"columnClass\"\r\n [columnStyle]=\"columnStyle\"\r\n [service]=\"service\"\r\n [acoesTemplate]=\"acoesTemplate\"\r\n (refresh)=\"Refresh();\"\r\n (ativar)=\"Ativar($event)\"\r\n [lstTableFields]=\"lstTableFields\"\r\n [noPagination]=\"noPagination\"\r\n >\r\n </default-table>\r\n }\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n </div>\r\n</ion-content>" }]
4134
+ args: [{ selector: 'default-list', template: "<ion-content class=\"bg-transparent\">\r\n <div class=\"wrapper\" [ngClass]=\"{'!p-0 translucid-primary-background': nested}\">\r\n @if (!noBreadcrumbs) {\r\n <ion-breadcrumbs>\r\n <ion-breadcrumb [routerLink]=\"[service ? service.route : '']\" [replaceUrl]=\"true\">{{service.title}}</ion-breadcrumb>\r\n </ion-breadcrumbs>\r\n }\r\n <ion-card>\r\n <ion-card-header [ngClass]=\"{'!px-0 !pb-0': noNew && noPage && noSearch}\">\r\n <header-list \r\n [(limit)]=\"frm.limit\"\r\n [(search)]=\"frm.search\" \r\n [(page)]=\"frm.page\" \r\n [loading]=\"loading\" \r\n (refresh)=\"Refresh()\"\r\n [noNew]=\"noNew\"\r\n [noPage]=\"noPage\"\r\n [noSearch]=\"noSearch\"\r\n [overrideNew]=\"overrideNew\"\r\n (onNew)=\"onNewEmitter.emit()\"\r\n > \r\n <ng-content slot=\"start\" select=\"[slot=header-start]\"></ng-content>\r\n <ng-content slot=\"end\" select=\"[slot=header-end]\"></ng-content>\r\n </header-list>\r\n </ion-card-header>\r\n <ion-card-content>\r\n <ion-refresher slot=\"fixed\" class=\"z-20\" (ionRefresh)=\"Refresh($event)\">\r\n <ion-refresher-content></ion-refresher-content>\r\n </ion-refresher>\r\n <div class=\"size-full ion-content-scroll-host\">\r\n @if(frm){\r\n <default-table \r\n class=\"block size-full relative\" \r\n [ngClass]=\"{ 'translate-y-0' : !loading }\"\r\n [loading]=\"loading\"\r\n [items]=\"lstDados\" \r\n [total]=\"total\"\r\n [(limit)]=\"frm.limit\"\r\n [(page)]=\"frm.page\"\r\n [(ascending)]=\"frm.ascending\"\r\n [(orderByProperty)]=\"frm.orderByProperty\"\r\n [(filter)]=\"frm.filter\"\r\n (itemClick)=\"itemClick.emit($event)\"\r\n [itemPath]=\"itemPath\"\r\n [columnClass]=\"columnClass\"\r\n [columnStyle]=\"columnStyle\"\r\n [service]=\"service\"\r\n [acoesTemplate]=\"acoesTemplate\"\r\n (refresh)=\"Refresh();\"\r\n (ativar)=\"Ativar($event)\"\r\n [lstTableFields]=\"lstTableFields\"\r\n [noPagination]=\"noPagination\"\r\n >\r\n </default-table>\r\n }\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n </div>\r\n</ion-content>" }]
4125
4135
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i2$2.ActivatedRoute }, { type: GenericService }], propDecorators: { noNew: [{
4126
4136
  type: Input
4127
4137
  }], noPage: [{