@elxjs/ui 0.0.183 → 0.0.185

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.
@@ -438,11 +438,11 @@ export class EluxCarouselFixedComponent {
438
438
  this.updateTransform();
439
439
  }
440
440
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EluxCarouselFixedComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
441
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: EluxCarouselFixedComponent, isStandalone: true, selector: "lib-elux-carousel-fixed", inputs: { itemWidth: "itemWidth", gap: "gap", showArrows: "showArrows", showDots: "showDots" }, outputs: { previousClickEventEmitter: "previousClickEventEmitter", nextClickEventEmitter: "nextClickEventEmitter" }, queries: [{ propertyName: "items", predicate: ["carouselItem"], read: ElementRef }], viewQueries: [{ propertyName: "slidesContainer", first: true, predicate: ["slidesContainer"], descendants: true }, { propertyName: "rightBleedContainer", first: true, predicate: ["rightBleedContainer"], descendants: true }], ngImport: i0, template: "<div class=\"c-carousel-fixed-container\" #rightBleedContainer>\n <div \n class=\"c-carousel-fixed-slides\" \n #slidesContainer\n [style.transform]=\"'translateX(' + translateX + 'px)'\" \n (mousedown)=\"onMouseDown($event)\"\n (mousemove)=\"onMouseMove($event)\"\n (mouseup)=\"onMouseUp($event)\"\n (mouseleave)=\"onMouseLeave($event)\"\n (touchstart)=\"onTouchStart($event)\" \n (touchmove)=\"onTouchMove($event)\" \n (touchend)=\"onTouchEnd($event)\">\n <ng-content></ng-content>\n </div>\n</div>\n<div class=\"c-carousel-fixed-footer\" *ngIf=\"showArrows || showDots\">\n <button *ngIf=\"showArrows\"\n class=\"c-carousel-fixed-nav prev\" \n [disabled]=\"!canGoPrevious()\"\n title=\"Item anterior\" \n aria-label=\"Item anterior\" \n (click)=\"prevItem()\">\n <lib-elux-icon [icon]=\"'Chevron_Left.svg'\" [size]=\"'16'\" [sizeType]=\"'px'\" [color]=\"'#020F2E'\"></lib-elux-icon>\n </button>\n\n <div class=\"c-carousel-fixed-dots\" *ngIf=\"showDots\">\n <ng-container *ngFor=\"let dot of getDotsArray(); let idx = index\">\n <span \n class=\"c-carousel-fixed-dot\" \n [class.active]=\"idx === getCurrentDotIndex()\" \n (click)=\"goToDot(idx)\">\n </span>\n </ng-container>\n </div>\n\n <button *ngIf=\"showArrows\"\n class=\"c-carousel-fixed-nav next\" \n [disabled]=\"!canGoNext()\"\n title=\"Pr\u00F3ximo item\" \n aria-label=\"Pr\u00F3ximo item\" \n (click)=\"nextItem()\">\n <lib-elux-icon [icon]=\"'Chevron_Right.svg'\" [size]=\"'16'\" [sizeType]=\"'px'\" [color]=\"'#020F2E'\"></lib-elux-icon>\n </button>\n</div>\n", styles: [".c-carousel-fixed-container{overflow-x:hidden;width:calc(100vw - var(--left-offset, 0px) - var(--scrollbar-width, 0px))}.c-carousel-fixed-slides{display:flex;transition:transform .5s ease-out;touch-action:pan-y;cursor:grab;will-change:transform}.c-carousel-fixed-slides:active{cursor:grabbing}.c-carousel-fixed-footer{display:flex;justify-content:space-between;padding:16px}.c-carousel-fixed-footer .c-carousel-fixed-nav{background:none;border:none;cursor:pointer;padding:8px;border-radius:50px;background-color:#dfe7ea;transition:all ease-in-out .2s;z-index:2}.c-carousel-fixed-footer .c-carousel-fixed-nav:hover:not(:disabled){transform:scale(1.2)}.c-carousel-fixed-footer .c-carousel-fixed-nav:disabled{opacity:.3;cursor:not-allowed}.c-carousel-fixed-footer .c-carousel-fixed-nav:disabled:hover{transform:none}.c-carousel-fixed-footer .c-carousel-fixed-nav ::ng-deep span{display:block}.c-carousel-fixed-footer .c-carousel-fixed-dots{display:flex;align-items:center;gap:8px;margin:0 16px}.c-carousel-fixed-footer .c-carousel-fixed-dots .c-carousel-fixed-dot{width:10px;height:10px;border-radius:50%;background:#dfe7ea;transition:background .3s;cursor:pointer;display:inline-block}.c-carousel-fixed-footer .c-carousel-fixed-dots .c-carousel-fixed-dot.active{background:#011e41}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { 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: EluxIcon, selector: "lib-elux-icon", inputs: ["color", "useSubscription", "icon", "description", "size", "height", "width", "sizeType"] }] }); }
441
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: EluxCarouselFixedComponent, isStandalone: true, selector: "lib-elux-carousel-fixed", inputs: { itemWidth: "itemWidth", gap: "gap", showArrows: "showArrows", showDots: "showDots" }, outputs: { previousClickEventEmitter: "previousClickEventEmitter", nextClickEventEmitter: "nextClickEventEmitter" }, queries: [{ propertyName: "items", predicate: ["carouselItem"], read: ElementRef }], viewQueries: [{ propertyName: "slidesContainer", first: true, predicate: ["slidesContainer"], descendants: true }, { propertyName: "rightBleedContainer", first: true, predicate: ["rightBleedContainer"], descendants: true }], ngImport: i0, template: "<div class=\"c-carousel-fixed-container\" #rightBleedContainer>\n <div \n class=\"c-carousel-fixed-slides\" \n #slidesContainer\n [style.transform]=\"'translateX(' + translateX + 'px)'\" \n (mousedown)=\"onMouseDown($event)\"\n (mousemove)=\"onMouseMove($event)\"\n (mouseup)=\"onMouseUp($event)\"\n (mouseleave)=\"onMouseLeave($event)\"\n (touchstart)=\"onTouchStart($event)\" \n (touchmove)=\"onTouchMove($event)\" \n (touchend)=\"onTouchEnd($event)\">\n <ng-content></ng-content>\n </div>\n</div>\n<div class=\"c-carousel-fixed-footer\" *ngIf=\"showArrows || showDots\">\n <button *ngIf=\"showArrows && getDotsArray().length > 1\"\n class=\"c-carousel-fixed-nav prev\" \n [disabled]=\"!canGoPrevious()\"\n title=\"Item anterior\" \n aria-label=\"Item anterior\" \n (click)=\"prevItem()\">\n <lib-elux-icon [icon]=\"'Chevron_Left.svg'\" [size]=\"'16'\" [sizeType]=\"'px'\" [color]=\"'#020F2E'\"></lib-elux-icon>\n </button>\n\n <div class=\"c-carousel-fixed-dots\" *ngIf=\"showDots && getDotsArray().length > 1\">\n <ng-container *ngFor=\"let dot of getDotsArray(); let idx = index\">\n <span \n class=\"c-carousel-fixed-dot\" \n [class.active]=\"idx === getCurrentDotIndex()\" \n (click)=\"goToDot(idx)\">\n </span>\n </ng-container>\n </div>\n\n <button *ngIf=\"showArrows && getDotsArray().length > 1\"\n class=\"c-carousel-fixed-nav next\" \n [disabled]=\"!canGoNext()\"\n title=\"Pr\u00F3ximo item\" \n aria-label=\"Pr\u00F3ximo item\" \n (click)=\"nextItem()\">\n <lib-elux-icon [icon]=\"'Chevron_Right.svg'\" [size]=\"'16'\" [sizeType]=\"'px'\" [color]=\"'#020F2E'\"></lib-elux-icon>\n </button>\n</div>\n", styles: [".c-carousel-fixed-container{overflow-x:hidden;width:calc(100vw - var(--left-offset, 0px) - var(--scrollbar-width, 0px))}.c-carousel-fixed-slides{display:flex;transition:transform .5s ease-out;touch-action:pan-y;cursor:grab;will-change:transform}.c-carousel-fixed-slides:active{cursor:grabbing}.c-carousel-fixed-footer{display:flex;justify-content:space-between;padding:16px}.c-carousel-fixed-footer .c-carousel-fixed-nav{background:none;border:none;cursor:pointer;padding:8px;border-radius:50px;background-color:#dfe7ea;transition:all ease-in-out .2s;z-index:2}.c-carousel-fixed-footer .c-carousel-fixed-nav:hover:not(:disabled){transform:scale(1.2)}.c-carousel-fixed-footer .c-carousel-fixed-nav:disabled{opacity:.3;cursor:not-allowed}.c-carousel-fixed-footer .c-carousel-fixed-nav:disabled:hover{transform:none}.c-carousel-fixed-footer .c-carousel-fixed-nav ::ng-deep span{display:block}.c-carousel-fixed-footer .c-carousel-fixed-dots{display:flex;align-items:center;gap:8px;margin:0 16px}.c-carousel-fixed-footer .c-carousel-fixed-dots .c-carousel-fixed-dot{width:10px;height:10px;border-radius:50%;background:#dfe7ea;transition:background .3s;cursor:pointer;display:inline-block}.c-carousel-fixed-footer .c-carousel-fixed-dots .c-carousel-fixed-dot.active{background:#011e41}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { 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: EluxIcon, selector: "lib-elux-icon", inputs: ["color", "useSubscription", "icon", "description", "size", "height", "width", "sizeType"] }] }); }
442
442
  }
443
443
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EluxCarouselFixedComponent, decorators: [{
444
444
  type: Component,
445
- args: [{ standalone: true, selector: 'lib-elux-carousel-fixed', imports: [CommonModule, EluxIcon], template: "<div class=\"c-carousel-fixed-container\" #rightBleedContainer>\n <div \n class=\"c-carousel-fixed-slides\" \n #slidesContainer\n [style.transform]=\"'translateX(' + translateX + 'px)'\" \n (mousedown)=\"onMouseDown($event)\"\n (mousemove)=\"onMouseMove($event)\"\n (mouseup)=\"onMouseUp($event)\"\n (mouseleave)=\"onMouseLeave($event)\"\n (touchstart)=\"onTouchStart($event)\" \n (touchmove)=\"onTouchMove($event)\" \n (touchend)=\"onTouchEnd($event)\">\n <ng-content></ng-content>\n </div>\n</div>\n<div class=\"c-carousel-fixed-footer\" *ngIf=\"showArrows || showDots\">\n <button *ngIf=\"showArrows\"\n class=\"c-carousel-fixed-nav prev\" \n [disabled]=\"!canGoPrevious()\"\n title=\"Item anterior\" \n aria-label=\"Item anterior\" \n (click)=\"prevItem()\">\n <lib-elux-icon [icon]=\"'Chevron_Left.svg'\" [size]=\"'16'\" [sizeType]=\"'px'\" [color]=\"'#020F2E'\"></lib-elux-icon>\n </button>\n\n <div class=\"c-carousel-fixed-dots\" *ngIf=\"showDots\">\n <ng-container *ngFor=\"let dot of getDotsArray(); let idx = index\">\n <span \n class=\"c-carousel-fixed-dot\" \n [class.active]=\"idx === getCurrentDotIndex()\" \n (click)=\"goToDot(idx)\">\n </span>\n </ng-container>\n </div>\n\n <button *ngIf=\"showArrows\"\n class=\"c-carousel-fixed-nav next\" \n [disabled]=\"!canGoNext()\"\n title=\"Pr\u00F3ximo item\" \n aria-label=\"Pr\u00F3ximo item\" \n (click)=\"nextItem()\">\n <lib-elux-icon [icon]=\"'Chevron_Right.svg'\" [size]=\"'16'\" [sizeType]=\"'px'\" [color]=\"'#020F2E'\"></lib-elux-icon>\n </button>\n</div>\n", styles: [".c-carousel-fixed-container{overflow-x:hidden;width:calc(100vw - var(--left-offset, 0px) - var(--scrollbar-width, 0px))}.c-carousel-fixed-slides{display:flex;transition:transform .5s ease-out;touch-action:pan-y;cursor:grab;will-change:transform}.c-carousel-fixed-slides:active{cursor:grabbing}.c-carousel-fixed-footer{display:flex;justify-content:space-between;padding:16px}.c-carousel-fixed-footer .c-carousel-fixed-nav{background:none;border:none;cursor:pointer;padding:8px;border-radius:50px;background-color:#dfe7ea;transition:all ease-in-out .2s;z-index:2}.c-carousel-fixed-footer .c-carousel-fixed-nav:hover:not(:disabled){transform:scale(1.2)}.c-carousel-fixed-footer .c-carousel-fixed-nav:disabled{opacity:.3;cursor:not-allowed}.c-carousel-fixed-footer .c-carousel-fixed-nav:disabled:hover{transform:none}.c-carousel-fixed-footer .c-carousel-fixed-nav ::ng-deep span{display:block}.c-carousel-fixed-footer .c-carousel-fixed-dots{display:flex;align-items:center;gap:8px;margin:0 16px}.c-carousel-fixed-footer .c-carousel-fixed-dots .c-carousel-fixed-dot{width:10px;height:10px;border-radius:50%;background:#dfe7ea;transition:background .3s;cursor:pointer;display:inline-block}.c-carousel-fixed-footer .c-carousel-fixed-dots .c-carousel-fixed-dot.active{background:#011e41}\n"] }]
445
+ args: [{ standalone: true, selector: 'lib-elux-carousel-fixed', imports: [CommonModule, EluxIcon], template: "<div class=\"c-carousel-fixed-container\" #rightBleedContainer>\n <div \n class=\"c-carousel-fixed-slides\" \n #slidesContainer\n [style.transform]=\"'translateX(' + translateX + 'px)'\" \n (mousedown)=\"onMouseDown($event)\"\n (mousemove)=\"onMouseMove($event)\"\n (mouseup)=\"onMouseUp($event)\"\n (mouseleave)=\"onMouseLeave($event)\"\n (touchstart)=\"onTouchStart($event)\" \n (touchmove)=\"onTouchMove($event)\" \n (touchend)=\"onTouchEnd($event)\">\n <ng-content></ng-content>\n </div>\n</div>\n<div class=\"c-carousel-fixed-footer\" *ngIf=\"showArrows || showDots\">\n <button *ngIf=\"showArrows && getDotsArray().length > 1\"\n class=\"c-carousel-fixed-nav prev\" \n [disabled]=\"!canGoPrevious()\"\n title=\"Item anterior\" \n aria-label=\"Item anterior\" \n (click)=\"prevItem()\">\n <lib-elux-icon [icon]=\"'Chevron_Left.svg'\" [size]=\"'16'\" [sizeType]=\"'px'\" [color]=\"'#020F2E'\"></lib-elux-icon>\n </button>\n\n <div class=\"c-carousel-fixed-dots\" *ngIf=\"showDots && getDotsArray().length > 1\">\n <ng-container *ngFor=\"let dot of getDotsArray(); let idx = index\">\n <span \n class=\"c-carousel-fixed-dot\" \n [class.active]=\"idx === getCurrentDotIndex()\" \n (click)=\"goToDot(idx)\">\n </span>\n </ng-container>\n </div>\n\n <button *ngIf=\"showArrows && getDotsArray().length > 1\"\n class=\"c-carousel-fixed-nav next\" \n [disabled]=\"!canGoNext()\"\n title=\"Pr\u00F3ximo item\" \n aria-label=\"Pr\u00F3ximo item\" \n (click)=\"nextItem()\">\n <lib-elux-icon [icon]=\"'Chevron_Right.svg'\" [size]=\"'16'\" [sizeType]=\"'px'\" [color]=\"'#020F2E'\"></lib-elux-icon>\n </button>\n</div>\n", styles: [".c-carousel-fixed-container{overflow-x:hidden;width:calc(100vw - var(--left-offset, 0px) - var(--scrollbar-width, 0px))}.c-carousel-fixed-slides{display:flex;transition:transform .5s ease-out;touch-action:pan-y;cursor:grab;will-change:transform}.c-carousel-fixed-slides:active{cursor:grabbing}.c-carousel-fixed-footer{display:flex;justify-content:space-between;padding:16px}.c-carousel-fixed-footer .c-carousel-fixed-nav{background:none;border:none;cursor:pointer;padding:8px;border-radius:50px;background-color:#dfe7ea;transition:all ease-in-out .2s;z-index:2}.c-carousel-fixed-footer .c-carousel-fixed-nav:hover:not(:disabled){transform:scale(1.2)}.c-carousel-fixed-footer .c-carousel-fixed-nav:disabled{opacity:.3;cursor:not-allowed}.c-carousel-fixed-footer .c-carousel-fixed-nav:disabled:hover{transform:none}.c-carousel-fixed-footer .c-carousel-fixed-nav ::ng-deep span{display:block}.c-carousel-fixed-footer .c-carousel-fixed-dots{display:flex;align-items:center;gap:8px;margin:0 16px}.c-carousel-fixed-footer .c-carousel-fixed-dots .c-carousel-fixed-dot{width:10px;height:10px;border-radius:50%;background:#dfe7ea;transition:background .3s;cursor:pointer;display:inline-block}.c-carousel-fixed-footer .c-carousel-fixed-dots .c-carousel-fixed-dot.active{background:#011e41}\n"] }]
446
446
  }], ctorParameters: () => [{ type: i0.Renderer2 }], propDecorators: { items: [{
447
447
  type: ContentChildren,
448
448
  args: ['carouselItem', { read: ElementRef }]
@@ -465,4 +465,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
465
465
  }], nextClickEventEmitter: [{
466
466
  type: Output
467
467
  }] } });
468
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwtZml4ZWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vdWkvbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvY2Fyb3VzZWwtZml4ZWQvY2Fyb3VzZWwtZml4ZWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vdWkvbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvY2Fyb3VzZWwtZml4ZWQvY2Fyb3VzZWwtZml4ZWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBb0IsU0FBUyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQXdCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sU0FBUyxDQUFDOzs7QUFTbkMsTUFBTSxPQUFPLDBCQUEwQjtJQXVDckMsWUFBb0IsUUFBbUI7UUFBbkIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQWpDOUIsY0FBUyxHQUFXLEdBQUcsQ0FBQztRQUN4QixRQUFHLEdBQVcsRUFBRSxDQUFDO1FBQ2pCLGVBQVUsR0FBWSxJQUFJLENBQUM7UUFDM0IsYUFBUSxHQUFZLElBQUksQ0FBQztRQUV4Qiw4QkFBeUIsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO1FBQ3RELDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7UUFFNUQsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFDakIsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUVQLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsV0FBTSxHQUFHLENBQUMsQ0FBQztRQUNYLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFDYixzQkFBaUIs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ekIsQ0FBQzsrR0E1ZlUsMEJBQTBCO21HQUExQiwwQkFBMEIsc1ZBQ0ksVUFBVSw4UENackQsdW9EQTRDQSwwekNEbkNZLFlBQVksZ1FBQUUsUUFBUTs7NEZBRXJCLDBCQUEwQjtrQkFQdEMsU0FBUztpQ0FDSSxJQUFJLFlBQ04seUJBQXlCLFdBRzFCLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQzs4RUFHc0IsS0FBSztzQkFBM0QsZUFBZTt1QkFBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUN2QixlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQjtnQkFDeUIsbUJBQW1CO3NCQUF2RSxTQUFTO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFHMUMsU0FBUztzQkFBakIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVJLHlCQUF5QjtzQkFBbEMsTUFBTTtnQkFDRyxxQkFBcUI7c0JBQTlCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0LCBRdWVyeUxpc3QsIFJlbmRlcmVyMiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFbHV4SWNvbiB9IGZyb20gJy4uL2ljb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdsaWItZWx1eC1jYXJvdXNlbC1maXhlZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXJvdXNlbC1maXhlZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nhcm91c2VsLWZpeGVkLmNvbXBvbmVudC5zY3NzJ10sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEVsdXhJY29uXSxcbn0pXG5leHBvcnQgY2xhc3MgRWx1eENhcm91c2VsRml4ZWRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICBAQ29udGVudENoaWxkcmVuKCdjYXJvdXNlbEl0ZW0nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgaXRlbXMhOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG4gIEBWaWV3Q2hpbGQoJ3NsaWRlc0NvbnRhaW5lcicpIHNsaWRlc0NvbnRhaW5lciE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3JpZ2h0QmxlZWRDb250YWluZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgcmlnaHRCbGVlZENvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG5cbiAgQElucHV0KCkgaXRlbVdpZHRoOiBudW1iZXIgPSAyMDA7XG4gIEBJbnB1dCgpIGdhcDogbnVtYmVyID0gMTY7XG4gIEBJbnB1dCgpIHNob3dBcnJvd3M6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBzaG93RG90czogYm9vbGVhbiA9IHRydWU7XG5cbiAgQE91dHB1dCgpIHByZXZpb3VzQ2xpY2tFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuICBAT3V0cHV0KCkgbmV4dENsaWNrRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICBjdXJyZW50SW5kZXggPSAwO1xuICB0cmFuc2xhdGVYID0gMDtcblxuICBwcml2YXRlIGlzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgcHJpdmF0ZSBpc01vdXNlRG93biA9IGZhbHNlO1xuICBwcml2YXRlIHN0YXJ0WCA9IDA7XG4gIHByaXZhdGUgY3VycmVudFggPSAwO1xuICBwcml2YXRlIGluaXRpYWxUcmFuc2xhdGVYID0gMDtcbiAgcHJpdmF0ZSBkcmFnT2Zmc2V0ID0gMDtcbiAgcHJpdmF0ZSBjb250YWluZXJXaWR0aCA9IDA7XG4gIHByaXZhdGUgbWF4VHJhbnNsYXRlWCA9IDA7XG4gIHByaXZhdGUgbWluVHJhbnNsYXRlWCA9IDA7XG4gIHByaXZhdGUgdmVsb2NpdHkgPSAwO1xuICBwcml2YXRlIGxhc3RNb3ZlVGltZSA9IDA7XG4gIHByaXZhdGUgbGFzdE1vdmVYID0gMDtcbiAgcHJpdmF0ZSB0b3VjaFN0YXJ0VGltZSA9IDA7XG4gIHByaXZhdGUgdG91Y2hTdGFydFggPSAwO1xuICBwcml2YXRlIHRvdWNoU3RhcnRZID0gMDtcbiAgcHJpdmF0ZSBpc1ZlcnRpY2FsU2Nyb2xsID0gZmFsc2U7XG4gIHByaXZhdGUgd2FzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgcHJpdmF0ZSBjbGlja3NEaXNhYmxlZCA9IGZhbHNlO1xuICBwcml2YXRlIGNsaWNrTGlzdGVuZXJzOiAoKCkgPT4gdm9pZClbXSA9IFtdO1xuICBwcml2YXRlIGRyYWdTdGFydGVkID0gZmFsc2U7XG4gIHByaXZhdGUgbW91c2VEb3duVGltZSA9IDA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7fVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlUmlnaHRCbGVlZENvbnRhaW5lciA9ICgpID0+IHtcbiAgICBpZiAodGhpcy5yaWdodEJsZWVkQ29udGFpbmVyKSB7XG4gICAgICBjb25zdCBlbCA9IHRoaXMucmlnaHRCbGVlZENvbnRhaW5lci5uYXRpdmVFbGVtZW50O1xuICAgICAgY29uc3QgbGVmdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XG5cbiAgICAgIGxldCBzY3JvbGxiYXJXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoIC0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgICAgc2Nyb2xsYmFyV2lkdGggPSBzY3JvbGxiYXJXaWR0aCA9PSAwIHx8IHNjcm9sbGJhcldpZHRoID4gMzAgPyAwIDogc2Nyb2xsYmFyV2lkdGg7ICAgICBcbiAgICAgIFxuICAgICAgZWwuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2Nyb2xsYmFyLXdpZHRoJywgYCR7c2Nyb2xsYmFyV2lkdGh9cHhgKTtcbiAgICAgIGVsLnN0eWxlLnNldFByb3BlcnR5KCctLWxlZnQtb2Zmc2V0JywgYCR7bGVmdH1weGApO1xuICAgIH1cbiAgfTtcblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNhbGN1bGF0ZURpbWVuc2lvbnMoKTtcbiAgICAgIHRoaXMuc2V0SXRlbVdpZHRocygpO1xuICAgICAgdGhpcy51cGRhdGVMaW1pdHMoKTtcbiAgICAgIHRoaXMuc2V0dXBDbGlja1ByZXZlbnRpb24oKTtcblxuICAgICAgdGhpcy5pdGVtcy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlRGltZW5zaW9ucygpO1xuICAgICAgICB0aGlzLnNldEl0ZW1XaWR0aHMoKTtcbiAgICAgICAgdGhpcy51cGRhdGVMaW1pdHMoKTtcbiAgICAgICAgdGhpcy5nb1RvRmlyc3RJdGVtKCk7XG4gICAgICAgIHRoaXMuc2V0dXBDbGlja1ByZXZlbnRpb24oKTtcbiAgICAgICAgLy8gRm9yw6dhIGF0dWFsaXphw6fDo28gdmlzdWFsIGRvcyBkb3RzXG4gICAgICAgIGlmICgodGhpcyBhcyBhbnkpLmNkICYmIHR5cGVvZiAodGhpcyBhcyBhbnkpLmNkLmRldGVjdENoYW5nZXMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAodGhpcyBhcyBhbnkpLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSwgMTApO1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsICgpID0+IHRoaXMub25SZXNpemUoKSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICAvLyBDbGVhbiB1cCBjbGljayBsaXN0ZW5lcnNcbiAgICB0aGlzLmNsaWNrTGlzdGVuZXJzLmZvckVhY2godW5saXN0ZW4gPT4gdW5saXN0ZW4oKSk7XG4gICAgdGhpcy5jbGlja0xpc3RlbmVycyA9IFtdO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCAoKSA9PiB0aGlzLm9uUmVzaXplKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVEaW1lbnNpb25zKCkge1xuICAgIGlmICh0aGlzLnNsaWRlc0NvbnRhaW5lcikge1xuICAgICAgdGhpcy5jb250YWluZXJXaWR0aCA9IHRoaXMuc2xpZGVzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVMaW1pdHMoKSB7XG4gICAgY29uc3QgdG90YWxXaWR0aCA9IHRoaXMuaXRlbXMubGVuZ3RoICogKHRoaXMuaXRlbVdpZHRoICsgdGhpcy5nYXApO1xuICAgIHRoaXMubWF4VHJhbnNsYXRlWCA9IDA7XG4gICAgXG4gICAgaWYgKHRvdGFsV2lkdGggPiB0aGlzLmNvbnRhaW5lcldpZHRoKSB7XG4gICAgICB0aGlzLm1pblRyYW5zbGF0ZVggPSB0aGlzLmNvbnRhaW5lcldpZHRoIC0gdG90YWxXaWR0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5taW5UcmFuc2xhdGVYID0gMDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9uUmVzaXplKCkge1xuICAgIHRoaXMuY2FsY3VsYXRlUmlnaHRCbGVlZENvbnRhaW5lcigpO1xuICAgIHRoaXMuY2FsY3VsYXRlRGltZW5zaW9ucygpO1xuICAgIHRoaXMudXBkYXRlTGltaXRzKCk7XG5cbiAgICAvLyBHYXJhbnRlIHF1ZSBvIGN1cnJlbnRJbmRleCBuw6NvIHVsdHJhcGFzc2UgbyBub3ZvIG3DoXhpbW9cbiAgICBjb25zdCBtYXhJbmRleCA9IHRoaXMuZ2V0TWF4SW5kZXgoKTtcbiAgICBpZiAodGhpcy5jdXJyZW50SW5kZXggPiBtYXhJbmRleCkge1xuICAgICAgdGhpcy5jdXJyZW50SW5kZXggPSBtYXhJbmRleDtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVRyYW5zZm9ybSgpO1xuICAgIFxuICAgIC8vIEZvcsOnYSBkZXRlY8Onw6NvIGRlIG11ZGFuw6dhcyBwYXJhIGF0dWFsaXphciBkb3RzXG4gICAgaWYgKCh3aW5kb3cgYXMgYW55KS5uZyAmJiAod2luZG93IGFzIGFueSkubmcuZ2V0SW5qZWN0b3IpIHtcbiAgICAgIC8vIEFuZ3VsYXIgRGV2VG9vbHMgcHJlc2VudGUsIG7Do28gZmF6IG5hZGFcbiAgICB9IGVsc2UgaWYgKCh0aGlzIGFzIGFueSkuY2QgJiYgdHlwZW9mICh0aGlzIGFzIGFueSkuY2QuZGV0ZWN0Q2hhbmdlcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgKHRoaXMgYXMgYW55KS5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIC8vIEdhcmFudGUgY8OhbGN1bG8gY29ycmV0byBhcMOzcyB2aWV3IGNhcnJlZ2FkYVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jYWxjdWxhdGVSaWdodEJsZWVkQ29udGFpbmVyKCk7XG4gICAgICB0aGlzLmNhbGN1bGF0ZURpbWVuc2lvbnMoKTtcbiAgICAgIHRoaXMudXBkYXRlTGltaXRzKCk7XG4gICAgICB0aGlzLnVwZGF0ZVRyYW5zZm9ybSgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRJdGVtV2lkdGhzKCkge1xuICAgIHRoaXMuaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShpdGVtLm5hdGl2ZUVsZW1lbnQsICd3aWR0aCcsIGAke3RoaXMuaXRlbVdpZHRofXB4YCk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGl0ZW0ubmF0aXZlRWxlbWVudCwgJ2ZsZXgtc2hyaW5rJywgJzAnKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaXRlbS5uYXRpdmVFbGVtZW50LCAnbWFyZ2luLXJpZ2h0JywgYCR7dGhpcy5nYXB9cHhgKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIE1vdXNlIGV2ZW50c1xuICBvbk1vdXNlRG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5tb3VzZURvd25UaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLmRyYWdTdGFydGVkID0gZmFsc2U7XG4gICAgdGhpcy5pc01vdXNlRG93biA9IHRydWU7XG4gICAgdGhpcy53YXNEcmFnZ2luZyA9IGZhbHNlO1xuICAgIHRoaXMuY2xpY2tzRGlzYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLnN0YXJ0WCA9IGV2ZW50LmNsaWVudFg7XG4gICAgdGhpcy5jdXJyZW50WCA9IGV2ZW50LmNsaWVudFg7XG4gICAgdGhpcy5pbml0aWFsVHJhbnNsYXRlWCA9IHRoaXMudHJhbnNsYXRlWDtcbiAgICB0aGlzLmRyYWdPZmZzZXQgPSAwO1xuICAgIHRoaXMudmVsb2NpdHkgPSAwO1xuICAgIHRoaXMubGFzdE1vdmVUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLmxhc3RNb3ZlWCA9IGV2ZW50LmNsaWVudFg7XG4gICAgXG4gICAgdGhpcy5jYWxjdWxhdGVEaW1lbnNpb25zKCk7XG4gICAgXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnNsaWRlc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCAndHJhbnNpdGlvbicsICdub25lJyk7XG4gIH1cblxuICBvbk1vdXNlTW92ZShldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICghdGhpcy5pc01vdXNlRG93bikgcmV0dXJuO1xuICAgIFxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgXG4gICAgY29uc3QgZHJhZ0Rpc3RhbmNlID0gTWF0aC5hYnMoZXZlbnQuY2xpZW50WCAtIHRoaXMuc3RhcnRYKTtcbiAgICBcbiAgICAvLyBPbmx5IHN0YXJ0IGRyYWdnaW5nIGlmIG1vdmVkIG1vcmUgdGhhbiA1cHhcbiAgICBpZiAoZHJhZ0Rpc3RhbmNlID4gNSAmJiAhdGhpcy5pc0RyYWdnaW5nKSB7XG4gICAgICB0aGlzLmlzRHJhZ2dpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5kcmFnU3RhcnRlZCA9IHRydWU7XG4gICAgICB0aGlzLndhc0RyYWdnaW5nID0gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgaWYgKHRoaXMuaXNEcmFnZ2luZykge1xuICAgICAgdGhpcy51cGRhdGVEcmFnKGV2ZW50LmNsaWVudFgpO1xuICAgIH1cbiAgfVxuXG4gIG9uTW91c2VVcChldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICghdGhpcy5pc01vdXNlRG93bikgcmV0dXJuO1xuICAgIFxuICAgIHRoaXMuaXNNb3VzZURvd24gPSBmYWxzZTtcbiAgICBcbiAgICBpZiAodGhpcy5pc0RyYWdnaW5nKSB7XG4gICAgICBjb25zdCBtb3VzZVVwVGltZSA9IERhdGUubm93KCk7XG4gICAgICBjb25zdCBob2xkRHVyYXRpb24gPSBtb3VzZVVwVGltZSAtIHRoaXMubW91c2VEb3duVGltZTtcbiAgICAgIGNvbnN0IG1vdXNlRGlzdGFuY2UgPSBNYXRoLmFicyh0aGlzLmN1cnJlbnRYIC0gdGhpcy5zdGFydFgpO1xuICAgICAgXG4gICAgICBpZiAobW91c2VEaXN0YW5jZSA+IDUgfHwgKGhvbGREdXJhdGlvbiA+IDIwMCAmJiBtb3VzZURpc3RhbmNlID4gMCkpIHtcbiAgICAgICAgdGhpcy53YXNEcmFnZ2luZyA9IHRydWU7XG4gICAgICB9XG4gICAgICBcbiAgICAgIHRoaXMuZW5kRHJhZygpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZXNldCB0cmFuc2l0aW9uIGlmIGl0IHdhcyBqdXN0IGEgY2xpY2tcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5zbGlkZXNDb250YWluZXIubmF0aXZlRWxlbWVudCwgJ3RyYW5zaXRpb24nLCAndHJhbnNmb3JtIDAuM3MgZWFzZS1vdXQnKTtcbiAgICB9XG4gIH1cblxuICBvbk1vdXNlTGVhdmUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAodGhpcy5pc0RyYWdnaW5nKSB7XG4gICAgICB0aGlzLndhc0RyYWdnaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuZW5kRHJhZygpO1xuICAgIH1cbiAgICB0aGlzLmlzTW91c2VEb3duID0gZmFsc2U7XG4gIH1cblxuICAvLyBUb3VjaCBldmVudHNcbiAgb25Ub3VjaFN0YXJ0KGV2ZW50OiBUb3VjaEV2ZW50KSB7XG4gICAgdGhpcy50b3VjaFN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgdGhpcy50b3VjaFN0YXJ0WCA9IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WDtcbiAgICB0aGlzLnRvdWNoU3RhcnRZID0gZXZlbnQudG91Y2hlc1swXS5jbGllbnRZO1xuICAgIHRoaXMuaXNWZXJ0aWNhbFNjcm9sbCA9IGZhbHNlO1xuICAgIHRoaXMuaXNNb3VzZURvd24gPSB0cnVlO1xuICAgIHRoaXMud2FzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmRyYWdTdGFydGVkID0gZmFsc2U7XG4gICAgdGhpcy5jbGlja3NEaXNhYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuc3RhcnRYID0gZXZlbnQudG91Y2hlc1swXS5jbGllbnRYO1xuICAgIHRoaXMuY3VycmVudFggPSBldmVudC50b3VjaGVzWzBdLmNsaWVudFg7XG4gICAgdGhpcy5pbml0aWFsVHJhbnNsYXRlWCA9IHRoaXMudHJhbnNsYXRlWDtcbiAgICB0aGlzLmRyYWdPZmZzZXQgPSAwO1xuICAgIHRoaXMudmVsb2NpdHkgPSAwO1xuICAgIHRoaXMubGFzdE1vdmVUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLmxhc3RNb3ZlWCA9IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WDtcbiAgICBcbiAgICB0aGlzLmNhbGN1bGF0ZURpbWVuc2lvbnMoKTtcbiAgICBcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc2xpZGVzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsICd0cmFuc2l0aW9uJywgJ25vbmUnKTtcbiAgfVxuXG4gIG9uVG91Y2hNb3ZlKGV2ZW50OiBUb3VjaEV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmlzTW91c2VEb3duKSByZXR1cm47XG4gICAgXG4gICAgY29uc3QgY3VycmVudFggPSBldmVudC50b3VjaGVzWzBdLmNsaWVudFg7XG4gICAgY29uc3QgY3VycmVudFkgPSBldmVudC50b3VjaGVzWzBdLmNsaWVudFk7XG4gICAgY29uc3QgZGVsdGFYID0gTWF0aC5hYnMoY3VycmVudFggLSB0aGlzLnRvdWNoU3RhcnRYKTtcbiAgICBjb25zdCBkZWx0YVkgPSBNYXRoLmFicyhjdXJyZW50WSAtIHRoaXMudG91Y2hTdGFydFkpO1xuICAgIFxuICAgIC8vIENoZWNrIGlmIHRoaXMgaXMgYSB2ZXJ0aWNhbCBzY3JvbGxcbiAgICBpZiAoZGVsdGFZID4gZGVsdGFYICYmIGRlbHRhWSA+IDEwKSB7XG4gICAgICB0aGlzLmlzVmVydGljYWxTY3JvbGwgPSB0cnVlO1xuICAgICAgdGhpcy5pc0RyYWdnaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLmlzTW91c2VEb3duID0gZmFsc2U7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc2xpZGVzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsICd0cmFuc2l0aW9uJywgJ3RyYW5zZm9ybSAwLjNzIGVhc2Utb3V0Jyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIC8vIFN0YXJ0IGRyYWdnaW5nIGlmIGhvcml6b250YWwgbW92ZW1lbnQgPiAxMHB4XG4gICAgaWYgKGRlbHRhWCA+IDEwICYmICF0aGlzLmlzRHJhZ2dpbmcpIHtcbiAgICAgIHRoaXMuaXNEcmFnZ2luZyA9IHRydWU7XG4gICAgICB0aGlzLmRyYWdTdGFydGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMud2FzRHJhZ2dpbmcgPSB0cnVlO1xuICAgIH1cbiAgICBcbiAgICBpZiAodGhpcy5pc0RyYWdnaW5nICYmIGRlbHRhWCA+IDEwKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy51cGRhdGVEcmFnKGN1cnJlbnRYKTtcbiAgICB9XG4gIH1cblxuICBvblRvdWNoRW5kKGV2ZW50OiBUb3VjaEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuaXNWZXJ0aWNhbFNjcm9sbCkge1xuICAgICAgdGhpcy5pc1ZlcnRpY2FsU2Nyb2xsID0gZmFsc2U7XG4gICAgICB0aGlzLmlzTW91c2VEb3duID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIHRoaXMuaXNNb3VzZURvd24gPSBmYWxzZTtcbiAgICBcbiAgICBjb25zdCB0b3VjaER1cmF0aW9uID0gRGF0ZS5ub3coKSAtIHRoaXMudG91Y2hTdGFydFRpbWU7XG4gICAgY29uc3QgdG91Y2hEaXN0YW5jZSA9IE1hdGguYWJzKHRoaXMuY3VycmVudFggLSB0aGlzLnN0YXJ0WCk7XG4gICAgXG4gICAgLy8gTWFyayBhcyBkcmFnZ2luZyBpZiBzaWduaWZpY2FudCBtb3ZlbWVudCBvY2N1cnJlZFxuICAgIGlmICh0b3VjaERpc3RhbmNlID4gMTAgfHwgdG91Y2hEdXJhdGlvbiA+IDMwMCkge1xuICAgICAgdGhpcy53YXNEcmFnZ2luZyA9IHRydWU7XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLmlzRHJhZ2dpbmcpIHtcbiAgICAgIHRoaXMuZW5kRHJhZygpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZXNldCB0cmFuc2l0aW9uIGlmIGl0IHdhcyBqdXN0IGEgdGFwXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc2xpZGVzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsICd0cmFuc2l0aW9uJywgJ3RyYW5zZm9ybSAwLjNzIGVhc2Utb3V0Jyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cENsaWNrUHJldmVudGlvbigpIHtcbiAgICAvLyBDbGVhbiB1cCBleGlzdGluZyBsaXN0ZW5lcnNcbiAgICB0aGlzLmNsaWNrTGlzdGVuZXJzLmZvckVhY2godW5saXN0ZW4gPT4gdW5saXN0ZW4oKSk7XG4gICAgdGhpcy5jbGlja0xpc3RlbmVycyA9IFtdO1xuXG4gICAgdGhpcy5pdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAvLyBPbmx5IHByZXZlbnQgY2xpY2sgZXZlbnRzLCBub3QgbW91c2V1cCB3aGljaCBpcyBuZWVkZWQgZm9yIGRyYWcgZnVuY3Rpb25hbGl0eVxuICAgICAgY29uc3QgZXZlbnRIYW5kbGVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NsaWNrJyAmJiAodGhpcy53YXNEcmFnZ2luZyB8fCB0aGlzLmNsaWNrc0Rpc2FibGVkIHx8IHRoaXMuZHJhZ1N0YXJ0ZWQpKSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9O1xuXG4gICAgICAvLyBPbmx5IGxpc3RlbiB0byBjbGljayBldmVudHMgdG8gYXZvaWQgaW50ZXJmZXJpbmcgd2l0aCBkcmFnIGZ1bmN0aW9uYWxpdHlcbiAgICAgIGl0ZW0ubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGV2ZW50SGFuZGxlciwgdHJ1ZSk7XG4gICAgICBcbiAgICAgIHRoaXMuY2xpY2tMaXN0ZW5lcnMucHVzaCgoKSA9PiB7XG4gICAgICAgIGl0ZW0ubmF0aXZlRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGV2ZW50SGFuZGxlciwgdHJ1ZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRHJhZyhjbGllbnRYOiBudW1iZXIpIHtcbiAgICBpZiAoIXRoaXMuaXNEcmFnZ2luZykgcmV0dXJuO1xuXG4gICAgdGhpcy5jdXJyZW50WCA9IGNsaWVudFg7XG4gICAgY29uc3QgdG90YWxEZWx0YVggPSB0aGlzLmN1cnJlbnRYIC0gdGhpcy5zdGFydFg7XG4gICAgXG4gICAgLy8gTWFyayBhcyBkcmFnZ2luZyBpZiBtb3ZlbWVudCBpcyBzaWduaWZpY2FudFxuICAgIGlmIChNYXRoLmFicyh0b3RhbERlbHRhWCkgPiA1KSB7XG4gICAgICB0aGlzLndhc0RyYWdnaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuZHJhZ1N0YXJ0ZWQgPSB0cnVlO1xuICAgIH1cbiAgICBcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHRpbWVEZWx0YSA9IG5vdyAtIHRoaXMubGFzdE1vdmVUaW1lO1xuICAgIGlmICh0aW1lRGVsdGEgPiAwKSB7XG4gICAgICB0aGlzLnZlbG9jaXR5ID0gKGNsaWVudFggLSB0aGlzLmxhc3RNb3ZlWCkgLyB0aW1lRGVsdGE7XG4gICAgfVxuICAgIHRoaXMubGFzdE1vdmVUaW1lID0gbm93O1xuICAgIHRoaXMubGFzdE1vdmVYID0gY2xpZW50WDtcblxuICAgIGxldCByZXNpc3RlZERlbHRhWCA9IHRvdGFsRGVsdGFYO1xuICAgIGNvbnN0IHBvdGVudGlhbFRyYW5zbGF0ZVggPSB0aGlzLmluaXRpYWxUcmFuc2xhdGVYICsgdG90YWxEZWx0YVg7XG4gICAgXG4gICAgLy8gQXBwbHkgc29mdGVyIHJlc2lzdGFuY2UgYXQgYm91bmRhcmllc1xuICAgIGlmIChwb3RlbnRpYWxUcmFuc2xhdGVYID4gdGhpcy5tYXhUcmFuc2xhdGVYKSB7XG4gICAgICBjb25zdCBvdmVyRHJhZyA9IHBvdGVudGlhbFRyYW5zbGF0ZVggLSB0aGlzLm1heFRyYW5zbGF0ZVg7XG4gICAgICByZXNpc3RlZERlbHRhWCA9IHRvdGFsRGVsdGFYIC0gKG92ZXJEcmFnICogMC41KTtcbiAgICB9IGVsc2UgaWYgKHBvdGVudGlhbFRyYW5zbGF0ZVggPCB0aGlzLm1pblRyYW5zbGF0ZVgpIHtcbiAgICAgIGNvbnN0IG92ZXJEcmFnID0gdGhpcy5taW5UcmFuc2xhdGVYIC0gcG90ZW50aWFsVHJhbnNsYXRlWDtcbiAgICAgIHJlc2lzdGVkRGVsdGFYID0gdG90YWxEZWx0YVggKyAob3ZlckRyYWcgKiAwLjUpO1xuICAgIH1cblxuICAgIHRoaXMuZHJhZ09mZnNldCA9IHJlc2lzdGVkRGVsdGFYO1xuICAgIHRoaXMudXBkYXRlRHJhZ1Bvc2l0aW9uKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZURyYWdQb3NpdGlvbigpIHtcbiAgICBjb25zdCBuZXdUcmFuc2xhdGVYID0gdGhpcy5pbml0aWFsVHJhbnNsYXRlWCArIHRoaXMuZHJhZ09mZnNldDtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgdGhpcy5zbGlkZXNDb250YWluZXIubmF0aXZlRWxlbWVudCwgXG4gICAgICAndHJhbnNmb3JtJywgXG4gICAgICBgdHJhbnNsYXRlWCgke25ld1RyYW5zbGF0ZVh9cHgpYFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGVuZERyYWcoKSB7XG4gICAgaWYgKCF0aGlzLmlzRHJhZ2dpbmcpIHJldHVybjtcblxuICAgIHRoaXMuaXNEcmFnZ2luZyA9IGZhbHNlO1xuICAgIFxuICAgIC8vIERpc2FibGUgY2xpY2tzIHRlbXBvcmFyaWx5IGFmdGVyIGFueSBkcmFnXG4gICAgaWYgKHRoaXMud2FzRHJhZ2dpbmcgfHwgdGhpcy5kcmFnU3RhcnRlZCkge1xuICAgICAgdGhpcy5jbGlja3NEaXNhYmxlZCA9IHRydWU7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5jbGlja3NEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgfSwgMjAwKTtcbiAgICB9XG4gICAgXG4gICAgLy8gQ2xlYXIgdGhlIHdhc0RyYWdnaW5nIGFuZCBkcmFnU3RhcnRlZCBmbGFncyBhZnRlciBhIHNob3J0ZXIgZGVsYXlcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMud2FzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuZHJhZ1N0YXJ0ZWQgPSBmYWxzZTtcbiAgICB9LCAyNTApO1xuICAgIFxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5zbGlkZXNDb250YWluZXIubmF0aXZlRWxlbWVudCwgJ3RyYW5zaXRpb24nLCAndHJhbnNmb3JtIDAuM3MgZWFzZS1vdXQnKTtcblxuICAgIC8vIFNuYXAgc2VtcHJlIHBhcmEgbyBpbsOtY2lvIGRhIHDDoWdpbmEgbWFpcyBwcsOzeGltYVxuICAgIHRoaXMuc25hcFRvTmVhcmVzdEl0ZW0oKTtcblxuICAgIHRoaXMuZHJhZ09mZnNldCA9IDA7XG4gICAgdGhpcy52ZWxvY2l0eSA9IDA7XG4gIH1cblxuICBwcml2YXRlIGdldE1heEluZGV4KCk6IG51bWJlciB7XG4gICAgLy8gUGVybWl0ZSBhdmFuw6dhciBhdMOpIHF1ZSBvIMO6bHRpbW8gaXRlbSBlc3RlamEgdmlzw612ZWwgKG7Do28gbmVjZXNzYXJpYW1lbnRlIGFsaW5oYWRvIMOgIGVzcXVlcmRhKVxuICAgIGlmICghdGhpcy5pdGVtcyB8fCB0aGlzLml0ZW1zLmxlbmd0aCA9PT0gMCkgcmV0dXJuIDA7XG4gICAgY29uc3QgdmlzaWJsZUNvdW50ID0gTWF0aC5tYXgoMSwgTWF0aC5mbG9vcih0aGlzLmNvbnRhaW5lcldpZHRoIC8gKHRoaXMuaXRlbVdpZHRoICsgdGhpcy5nYXApKSk7XG4gICAgaWYgKHRoaXMuaXRlbXMubGVuZ3RoIDw9IHZpc2libGVDb3VudCkgcmV0dXJuIDA7XG4gICAgLy8gw5psdGltYSBwb3Npw6fDo28gb25kZSBvIMO6bHRpbW8gaXRlbSBhcGFyZWNlIHZpc8OtdmVsXG4gICAgcmV0dXJuIHRoaXMuaXRlbXMubGVuZ3RoIC0gdmlzaWJsZUNvdW50O1xuICB9XG5cbiAgY2FuR29OZXh0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRJbmRleCA8IHRoaXMuZ2V0TWF4SW5kZXgoKTtcbiAgfVxuXG4gIG5leHRJdGVtKCkge1xuICAgIGNvbnN0IG1heEluZGV4ID0gdGhpcy5nZXRNYXhJbmRleCgpO1xuICAgIGlmICh0aGlzLmNhbkdvTmV4dCgpKSB7XG4gICAgICBsZXQgbmV3SW5kZXggPSB0aGlzLmN1cnJlbnRJbmRleCArIDE7XG4gICAgICBpZiAobmV3SW5kZXggPiBtYXhJbmRleCkgbmV3SW5kZXggPSBtYXhJbmRleDtcbiAgICAgIHRoaXMuY3VycmVudEluZGV4ID0gbmV3SW5kZXg7XG4gICAgICB0aGlzLnVwZGF0ZVRyYW5zZm9ybSgpO1xuICAgICAgdGhpcy5uZXh0Q2xpY2tFdmVudEVtaXR0ZXIuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIGNhbkdvUHJldmlvdXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudEluZGV4ID4gMDtcbiAgfVxuXG4gIHByZXZJdGVtKCkge1xuICAgIGlmICh0aGlzLmNhbkdvUHJldmlvdXMoKSkge1xuICAgICAgbGV0IG5ld0luZGV4ID0gdGhpcy5jdXJyZW50SW5kZXggLSAxO1xuICAgICAgaWYgKG5ld0luZGV4IDwgMCkgbmV3SW5kZXggPSAwO1xuICAgICAgdGhpcy5jdXJyZW50SW5kZXggPSBuZXdJbmRleDtcbiAgICAgIHRoaXMudXBkYXRlVHJhbnNmb3JtKCk7XG4gICAgICB0aGlzLnByZXZpb3VzQ2xpY2tFdmVudEVtaXR0ZXIuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIGdvVG9Eb3QoZG90SW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IG1heEluZGV4ID0gdGhpcy5nZXRNYXhJbmRleCgpO1xuICAgIGxldCBuZXdJbmRleCA9IGRvdEluZGV4O1xuICAgIGlmIChuZXdJbmRleCA+IG1heEluZGV4KSBuZXdJbmRleCA9IG1heEluZGV4O1xuICAgIHRoaXMuY3VycmVudEluZGV4ID0gbmV3SW5kZXg7XG4gICAgdGhpcy51cGRhdGVUcmFuc2Zvcm0oKTtcbiAgfVxuXG4gIHByaXZhdGUgc25hcFRvTmVhcmVzdEl0ZW0oKSB7XG4gICAgY29uc3QgaXRlbVN0ZXAgPSB0aGlzLml0ZW1XaWR0aCArIHRoaXMuZ2FwO1xuICAgIGNvbnN0IHBvc2l0aW9uID0gLSh0aGlzLmluaXRpYWxUcmFuc2xhdGVYICsgdGhpcy5kcmFnT2Zmc2V0KSAvIGl0ZW1TdGVwO1xuICAgIFxuICAgIC8vIFRocmVzaG9sZDogMC4zID0gMzAlLCAwLjUgPSA1MCUgKHBhZHLDo28pXG4gICAgY29uc3QgdGhyZXNob2xkID0gMC4zO1xuICAgIFxuICAgIGxldCB0YXJnZXRJbmRleDogbnVtYmVyO1xuICAgIFxuICAgIC8vIENhbGN1bGEgcXVhbnRvcyBpdGVucyBjb21wbGV0b3MgZm9yYW0gYXJyYXN0YWRvc1xuICAgIGNvbnN0IGl0ZW1zTW92ZWQgPSBNYXRoLmZsb29yKE1hdGguYWJzKHBvc2l0aW9uIC0gdGhpcy5jdXJyZW50SW5kZXgpKTtcbiAgICBjb25zdCBkZWNpbWFsID0gTWF0aC5hYnMocG9zaXRpb24gLSB0aGlzLmN1cnJlbnRJbmRleCkgLSBpdGVtc01vdmVkO1xuICAgIFxuICAgIGlmIChwb3NpdGlvbiA+IHRoaXMuY3VycmVudEluZGV4KSB7XG4gICAgICAvLyBBcnJhc3RhbmRvIHBhcmEgZnJlbnRlXG4gICAgICBpZiAoZGVjaW1hbCA+PSB0aHJlc2hvbGQpIHtcbiAgICAgICAgdGFyZ2V0SW5kZXggPSB0aGlzLmN1cnJlbnRJbmRleCArIGl0ZW1zTW92ZWQgKyAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGFyZ2V0SW5kZXggPSB0aGlzLmN1cnJlbnRJbmRleCArIGl0ZW1zTW92ZWQ7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChwb3NpdGlvbiA8IHRoaXMuY3VycmVudEluZGV4KSB7XG4gICAgICAvLyBBcnJhc3RhbmRvIHBhcmEgdHLDoXNcbiAgICAgIGlmIChkZWNpbWFsID49IHRocmVzaG9sZCkge1xuICAgICAgICB0YXJnZXRJbmRleCA9IHRoaXMuY3VycmVudEluZGV4IC0gaXRlbXNNb3ZlZCAtIDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YXJnZXRJbmRleCA9IHRoaXMuY3VycmVudEluZGV4IC0gaXRlbXNNb3ZlZDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTsOjbyBzZSBtb3ZldVxuICAgICAgdGFyZ2V0SW5kZXggPSB0aGlzLmN1cnJlbnRJbmRleDtcbiAgICB9XG4gICAgXG4gICAgY29uc3QgbWF4SW5kZXggPSB0aGlzLmdldE1heEluZGV4KCk7XG4gICAgdGFyZ2V0SW5kZXggPSBNYXRoLm1heCgwLCBNYXRoLm1pbih0YXJnZXRJbmRleCwgbWF4SW5kZXgpKTtcbiAgICB0aGlzLmN1cnJlbnRJbmRleCA9IHRhcmdldEluZGV4O1xuICAgIHRoaXMudXBkYXRlVHJhbnNmb3JtKCk7XG4gIH1cblxuICBnZXREb3RzQXJyYXkoKTogYW55W10ge1xuICAgIC8vIFPDsyBtb3N0cmEgZG90cyBwYXJhIGNhZGEgcG9zacOnw6NvIHBvc3PDrXZlbCAoY2FkYSBcInDDoWdpbmFcIiBwb3Nzw612ZWwpXG4gICAgY29uc3QgbWF4SW5kZXggPSB0aGlzLmdldE1heEluZGV4KCk7XG4gICAgcmV0dXJuIEFycmF5KG1heEluZGV4ICsgMSk7XG4gIH1cblxuICBnZXRDdXJyZW50RG90SW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50SW5kZXg7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVRyYW5zZm9ybSgpIHtcbiAgICBjb25zdCBpdGVtU3RlcCA9IHRoaXMuaXRlbVdpZHRoICsgdGhpcy5nYXA7XG4gICAgdGhpcy50cmFuc2xhdGVYID0gLXRoaXMuY3VycmVudEluZGV4ICogaXRlbVN0ZXA7XG5cbiAgICAvLyBDbGFtcCBwYXJhIG7Do28gbW9zdHJhciBlc3Bhw6dvIHZhemlvIMOgIGRpcmVpdGFcbiAgICBjb25zdCB2aXNpYmxlQ291bnQgPSBNYXRoLm1heCgxLCBNYXRoLmZsb29yKHRoaXMuY29udGFpbmVyV2lkdGggLyBpdGVtU3RlcCkpO1xuICAgIC8vIEluY2x1aSBvIGdhcCBhcMOzcyBvIMO6bHRpbW8gaXRlbVxuICAgIGNvbnN0IHRvdGFsV2lkdGggPSB0aGlzLml0ZW1zLmxlbmd0aCAqIGl0ZW1TdGVwO1xuICAgIGlmICh0aGlzLml0ZW1zLmxlbmd0aCA+IHZpc2libGVDb3VudCkge1xuICAgICAgY29uc3QgbWluVHJhbnNsYXRlWCA9IHRoaXMuY29udGFpbmVyV2lkdGggLSB0b3RhbFdpZHRoO1xuICAgICAgdGhpcy50cmFuc2xhdGVYID0gTWF0aC5tYXgodGhpcy50cmFuc2xhdGVYLCBtaW5UcmFuc2xhdGVYKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50cmFuc2xhdGVYID0gMDtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaXNEcmFnZ2luZyAmJiB0aGlzLnNsaWRlc0NvbnRhaW5lcikge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5zbGlkZXNDb250YWluZXIubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ3RyYW5zZm9ybScsXG4gICAgICAgIGB0cmFuc2xhdGVYKCR7dGhpcy50cmFuc2xhdGVYfXB4KWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLy8gQWRpY2lvbmUgZXN0ZSBtw6l0b2RvIHBhcmEgZXZpdGFyIGVycm8gZGUgcHJvcHJpZWRhZGUgYXVzZW50ZVxuICBnb1RvRmlyc3RJdGVtKCkge1xuICAgIHRoaXMuY3VycmVudEluZGV4ID0gMDtcbiAgICB0aGlzLnVwZGF0ZVRyYW5zZm9ybSgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYy1jYXJvdXNlbC1maXhlZC1jb250YWluZXJcIiAjcmlnaHRCbGVlZENvbnRhaW5lcj5cbiAgPGRpdiBcbiAgY2xhc3M9XCJjLWNhcm91c2VsLWZpeGVkLXNsaWRlc1wiIFxuICAjc2xpZGVzQ29udGFpbmVyXG4gIFtzdHlsZS50cmFuc2Zvcm1dPVwiJ3RyYW5zbGF0ZVgoJyArIHRyYW5zbGF0ZVggKyAncHgpJ1wiIFxuICAobW91c2Vkb3duKT1cIm9uTW91c2VEb3duKCRldmVudClcIlxuICAobW91c2Vtb3ZlKT1cIm9uTW91c2VNb3ZlKCRldmVudClcIlxuICAobW91c2V1cCk9XCJvbk1vdXNlVXAoJGV2ZW50KVwiXG4gIChtb3VzZWxlYXZlKT1cIm9uTW91c2VMZWF2ZSgkZXZlbnQpXCJcbiAgKHRvdWNoc3RhcnQpPVwib25Ub3VjaFN0YXJ0KCRldmVudClcIiBcbiAgKHRvdWNobW92ZSk9XCJvblRvdWNoTW92ZSgkZXZlbnQpXCIgXG4gICh0b3VjaGVuZCk9XCJvblRvdWNoRW5kKCRldmVudClcIj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImMtY2Fyb3VzZWwtZml4ZWQtZm9vdGVyXCIgKm5nSWY9XCJzaG93QXJyb3dzIHx8IHNob3dEb3RzXCI+XG4gICAgPGJ1dHRvbiAqbmdJZj1cInNob3dBcnJvd3NcIlxuICAgICAgY2xhc3M9XCJjLWNhcm91c2VsLWZpeGVkLW5hdiBwcmV2XCIgXG4gICAgICBbZGlzYWJsZWRdPVwiIWNhbkdvUHJldmlvdXMoKVwiXG4gICAgICB0aXRsZT1cIkl0ZW0gYW50ZXJpb3JcIiBcbiAgICAgIGFyaWEtbGFiZWw9XCJJdGVtIGFudGVyaW9yXCIgXG4gICAgICAoY2xpY2spPVwicHJldkl0ZW0oKVwiPlxuICAgICAgPGxpYi1lbHV4LWljb24gW2ljb25dPVwiJ0NoZXZyb25fTGVmdC5zdmcnXCIgW3NpemVdPVwiJzE2J1wiIFtzaXplVHlwZV09XCIncHgnXCIgW2NvbG9yXT1cIicjMDIwRjJFJ1wiPjwvbGliLWVsdXgtaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxkaXYgY2xhc3M9XCJjLWNhcm91c2VsLWZpeGVkLWRvdHNcIiAqbmdJZj1cInNob3dEb3RzXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkb3Qgb2YgZ2V0RG90c0FycmF5KCk7IGxldCBpZHggPSBpbmRleFwiPlxuICAgICAgICA8c3BhbiBcbiAgICAgICAgICBjbGFzcz1cImMtY2Fyb3VzZWwtZml4ZWQtZG90XCIgXG4gICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJpZHggPT09IGdldEN1cnJlbnREb3RJbmRleCgpXCIgXG4gICAgICAgICAgKGNsaWNrKT1cImdvVG9Eb3QoaWR4KVwiPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDxidXR0b24gKm5nSWY9XCJzaG93QXJyb3dzXCJcbiAgICAgIGNsYXNzPVwiYy1jYXJvdXNlbC1maXhlZC1uYXYgbmV4dFwiIFxuICAgICAgW2Rpc2FibGVkXT1cIiFjYW5Hb05leHQoKVwiXG4gICAgICB0aXRsZT1cIlByw7N4aW1vIGl0ZW1cIiBcbiAgICAgIGFyaWEtbGFiZWw9XCJQcsOzeGltbyBpdGVtXCIgXG4gICAgICAoY2xpY2spPVwibmV4dEl0ZW0oKVwiPlxuICAgICAgPGxpYi1lbHV4LWljb24gW2ljb25dPVwiJ0NoZXZyb25fUmlnaHQuc3ZnJ1wiIFtzaXplXT1cIicxNidcIiBbc2l6ZVR5cGVdPVwiJ3B4J1wiIFtjb2xvcl09XCInIzAyMEYyRSdcIj48L2xpYi1lbHV4LWljb24+XG4gICAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
468
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwtZml4ZWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vdWkvbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvY2Fyb3VzZWwtZml4ZWQvY2Fyb3VzZWwtZml4ZWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vdWkvbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvY2Fyb3VzZWwtZml4ZWQvY2Fyb3VzZWwtZml4ZWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBb0IsU0FBUyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQXdCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sU0FBUyxDQUFDOzs7QUFTbkMsTUFBTSxPQUFPLDBCQUEwQjtJQXVDckMsWUFBb0IsUUFBbUI7UUFBbkIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQWpDOUIsY0FBUyxHQUFXLEdBQUcsQ0FBQztRQUN4QixRQUFHLEdBQVcsRUFBRSxDQUFDO1FBQ2pCLGVBQVUsR0FBWSxJQUFJLENBQUM7UUFDM0IsYUFBUSxHQUFZLElBQUksQ0FBQztRQUV4Qiw4QkFBeUIsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO1FBQ3RELDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7UUFFNUQsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFDakIsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUVQLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsV0FBTSxHQUFHLENBQUMsQ0FBQztRQUNYLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFDYixzQkFBaUIs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ekIsQ0FBQzsrR0E1ZlUsMEJBQTBCO21HQUExQiwwQkFBMEIsc1ZBQ0ksVUFBVSw4UENackQsOHREQTRDQSwwekNEbkNZLFlBQVksZ1FBQUUsUUFBUTs7NEZBRXJCLDBCQUEwQjtrQkFQdEMsU0FBUztpQ0FDSSxJQUFJLFlBQ04seUJBQXlCLFdBRzFCLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQzs4RUFHc0IsS0FBSztzQkFBM0QsZUFBZTt1QkFBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUN2QixlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQjtnQkFDeUIsbUJBQW1CO3NCQUF2RSxTQUFTO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFHMUMsU0FBUztzQkFBakIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVJLHlCQUF5QjtzQkFBbEMsTUFBTTtnQkFDRyxxQkFBcUI7c0JBQTlCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0LCBRdWVyeUxpc3QsIFJlbmRlcmVyMiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFbHV4SWNvbiB9IGZyb20gJy4uL2ljb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdsaWItZWx1eC1jYXJvdXNlbC1maXhlZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXJvdXNlbC1maXhlZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nhcm91c2VsLWZpeGVkLmNvbXBvbmVudC5zY3NzJ10sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEVsdXhJY29uXSxcbn0pXG5leHBvcnQgY2xhc3MgRWx1eENhcm91c2VsRml4ZWRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICBAQ29udGVudENoaWxkcmVuKCdjYXJvdXNlbEl0ZW0nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgaXRlbXMhOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG4gIEBWaWV3Q2hpbGQoJ3NsaWRlc0NvbnRhaW5lcicpIHNsaWRlc0NvbnRhaW5lciE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3JpZ2h0QmxlZWRDb250YWluZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgcmlnaHRCbGVlZENvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG5cbiAgQElucHV0KCkgaXRlbVdpZHRoOiBudW1iZXIgPSAyMDA7XG4gIEBJbnB1dCgpIGdhcDogbnVtYmVyID0gMTY7XG4gIEBJbnB1dCgpIHNob3dBcnJvd3M6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBzaG93RG90czogYm9vbGVhbiA9IHRydWU7XG5cbiAgQE91dHB1dCgpIHByZXZpb3VzQ2xpY2tFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuICBAT3V0cHV0KCkgbmV4dENsaWNrRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICBjdXJyZW50SW5kZXggPSAwO1xuICB0cmFuc2xhdGVYID0gMDtcblxuICBwcml2YXRlIGlzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgcHJpdmF0ZSBpc01vdXNlRG93biA9IGZhbHNlO1xuICBwcml2YXRlIHN0YXJ0WCA9IDA7XG4gIHByaXZhdGUgY3VycmVudFggPSAwO1xuICBwcml2YXRlIGluaXRpYWxUcmFuc2xhdGVYID0gMDtcbiAgcHJpdmF0ZSBkcmFnT2Zmc2V0ID0gMDtcbiAgcHJpdmF0ZSBjb250YWluZXJXaWR0aCA9IDA7XG4gIHByaXZhdGUgbWF4VHJhbnNsYXRlWCA9IDA7XG4gIHByaXZhdGUgbWluVHJhbnNsYXRlWCA9IDA7XG4gIHByaXZhdGUgdmVsb2NpdHkgPSAwO1xuICBwcml2YXRlIGxhc3RNb3ZlVGltZSA9IDA7XG4gIHByaXZhdGUgbGFzdE1vdmVYID0gMDtcbiAgcHJpdmF0ZSB0b3VjaFN0YXJ0VGltZSA9IDA7XG4gIHByaXZhdGUgdG91Y2hTdGFydFggPSAwO1xuICBwcml2YXRlIHRvdWNoU3RhcnRZID0gMDtcbiAgcHJpdmF0ZSBpc1ZlcnRpY2FsU2Nyb2xsID0gZmFsc2U7XG4gIHByaXZhdGUgd2FzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgcHJpdmF0ZSBjbGlja3NEaXNhYmxlZCA9IGZhbHNlO1xuICBwcml2YXRlIGNsaWNrTGlzdGVuZXJzOiAoKCkgPT4gdm9pZClbXSA9IFtdO1xuICBwcml2YXRlIGRyYWdTdGFydGVkID0gZmFsc2U7XG4gIHByaXZhdGUgbW91c2VEb3duVGltZSA9IDA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7fVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlUmlnaHRCbGVlZENvbnRhaW5lciA9ICgpID0+IHtcbiAgICBpZiAodGhpcy5yaWdodEJsZWVkQ29udGFpbmVyKSB7XG4gICAgICBjb25zdCBlbCA9IHRoaXMucmlnaHRCbGVlZENvbnRhaW5lci5uYXRpdmVFbGVtZW50O1xuICAgICAgY29uc3QgbGVmdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XG5cbiAgICAgIGxldCBzY3JvbGxiYXJXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoIC0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgICAgc2Nyb2xsYmFyV2lkdGggPSBzY3JvbGxiYXJXaWR0aCA9PSAwIHx8IHNjcm9sbGJhcldpZHRoID4gMzAgPyAwIDogc2Nyb2xsYmFyV2lkdGg7ICAgICBcbiAgICAgIFxuICAgICAgZWwuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2Nyb2xsYmFyLXdpZHRoJywgYCR7c2Nyb2xsYmFyV2lkdGh9cHhgKTtcbiAgICAgIGVsLnN0eWxlLnNldFByb3BlcnR5KCctLWxlZnQtb2Zmc2V0JywgYCR7bGVmdH1weGApO1xuICAgIH1cbiAgfTtcblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNhbGN1bGF0ZURpbWVuc2lvbnMoKTtcbiAgICAgIHRoaXMuc2V0SXRlbVdpZHRocygpO1xuICAgICAgdGhpcy51cGRhdGVMaW1pdHMoKTtcbiAgICAgIHRoaXMuc2V0dXBDbGlja1ByZXZlbnRpb24oKTtcblxuICAgICAgdGhpcy5pdGVtcy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlRGltZW5zaW9ucygpO1xuICAgICAgICB0aGlzLnNldEl0ZW1XaWR0aHMoKTtcbiAgICAgICAgdGhpcy51cGRhdGVMaW1pdHMoKTtcbiAgICAgICAgdGhpcy5nb1RvRmlyc3RJdGVtKCk7XG4gICAgICAgIHRoaXMuc2V0dXBDbGlja1ByZXZlbnRpb24oKTtcbiAgICAgICAgLy8gRm9yw6dhIGF0dWFsaXphw6fDo28gdmlzdWFsIGRvcyBkb3RzXG4gICAgICAgIGlmICgodGhpcyBhcyBhbnkpLmNkICYmIHR5cGVvZiAodGhpcyBhcyBhbnkpLmNkLmRldGVjdENoYW5nZXMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAodGhpcyBhcyBhbnkpLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSwgMTApO1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsICgpID0+IHRoaXMub25SZXNpemUoKSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICAvLyBDbGVhbiB1cCBjbGljayBsaXN0ZW5lcnNcbiAgICB0aGlzLmNsaWNrTGlzdGVuZXJzLmZvckVhY2godW5saXN0ZW4gPT4gdW5saXN0ZW4oKSk7XG4gICAgdGhpcy5jbGlja0xpc3RlbmVycyA9IFtdO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCAoKSA9PiB0aGlzLm9uUmVzaXplKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVEaW1lbnNpb25zKCkge1xuICAgIGlmICh0aGlzLnNsaWRlc0NvbnRhaW5lcikge1xuICAgICAgdGhpcy5jb250YWluZXJXaWR0aCA9IHRoaXMuc2xpZGVzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVMaW1pdHMoKSB7XG4gICAgY29uc3QgdG90YWxXaWR0aCA9IHRoaXMuaXRlbXMubGVuZ3RoICogKHRoaXMuaXRlbVdpZHRoICsgdGhpcy5nYXApO1xuICAgIHRoaXMubWF4VHJhbnNsYXRlWCA9IDA7XG4gICAgXG4gICAgaWYgKHRvdGFsV2lkdGggPiB0aGlzLmNvbnRhaW5lcldpZHRoKSB7XG4gICAgICB0aGlzLm1pblRyYW5zbGF0ZVggPSB0aGlzLmNvbnRhaW5lcldpZHRoIC0gdG90YWxXaWR0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5taW5UcmFuc2xhdGVYID0gMDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9uUmVzaXplKCkge1xuICAgIHRoaXMuY2FsY3VsYXRlUmlnaHRCbGVlZENvbnRhaW5lcigpO1xuICAgIHRoaXMuY2FsY3VsYXRlRGltZW5zaW9ucygpO1xuICAgIHRoaXMudXBkYXRlTGltaXRzKCk7XG5cbiAgICAvLyBHYXJhbnRlIHF1ZSBvIGN1cnJlbnRJbmRleCBuw6NvIHVsdHJhcGFzc2UgbyBub3ZvIG3DoXhpbW9cbiAgICBjb25zdCBtYXhJbmRleCA9IHRoaXMuZ2V0TWF4SW5kZXgoKTtcbiAgICBpZiAodGhpcy5jdXJyZW50SW5kZXggPiBtYXhJbmRleCkge1xuICAgICAgdGhpcy5jdXJyZW50SW5kZXggPSBtYXhJbmRleDtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVRyYW5zZm9ybSgpO1xuICAgIFxuICAgIC8vIEZvcsOnYSBkZXRlY8Onw6NvIGRlIG11ZGFuw6dhcyBwYXJhIGF0dWFsaXphciBkb3RzXG4gICAgaWYgKCh3aW5kb3cgYXMgYW55KS5uZyAmJiAod2luZG93IGFzIGFueSkubmcuZ2V0SW5qZWN0b3IpIHtcbiAgICAgIC8vIEFuZ3VsYXIgRGV2VG9vbHMgcHJlc2VudGUsIG7Do28gZmF6IG5hZGFcbiAgICB9IGVsc2UgaWYgKCh0aGlzIGFzIGFueSkuY2QgJiYgdHlwZW9mICh0aGlzIGFzIGFueSkuY2QuZGV0ZWN0Q2hhbmdlcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgKHRoaXMgYXMgYW55KS5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIC8vIEdhcmFudGUgY8OhbGN1bG8gY29ycmV0byBhcMOzcyB2aWV3IGNhcnJlZ2FkYVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jYWxjdWxhdGVSaWdodEJsZWVkQ29udGFpbmVyKCk7XG4gICAgICB0aGlzLmNhbGN1bGF0ZURpbWVuc2lvbnMoKTtcbiAgICAgIHRoaXMudXBkYXRlTGltaXRzKCk7XG4gICAgICB0aGlzLnVwZGF0ZVRyYW5zZm9ybSgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRJdGVtV2lkdGhzKCkge1xuICAgIHRoaXMuaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShpdGVtLm5hdGl2ZUVsZW1lbnQsICd3aWR0aCcsIGAke3RoaXMuaXRlbVdpZHRofXB4YCk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGl0ZW0ubmF0aXZlRWxlbWVudCwgJ2ZsZXgtc2hyaW5rJywgJzAnKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaXRlbS5uYXRpdmVFbGVtZW50LCAnbWFyZ2luLXJpZ2h0JywgYCR7dGhpcy5nYXB9cHhgKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIE1vdXNlIGV2ZW50c1xuICBvbk1vdXNlRG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5tb3VzZURvd25UaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLmRyYWdTdGFydGVkID0gZmFsc2U7XG4gICAgdGhpcy5pc01vdXNlRG93biA9IHRydWU7XG4gICAgdGhpcy53YXNEcmFnZ2luZyA9IGZhbHNlO1xuICAgIHRoaXMuY2xpY2tzRGlzYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLnN0YXJ0WCA9IGV2ZW50LmNsaWVudFg7XG4gICAgdGhpcy5jdXJyZW50WCA9IGV2ZW50LmNsaWVudFg7XG4gICAgdGhpcy5pbml0aWFsVHJhbnNsYXRlWCA9IHRoaXMudHJhbnNsYXRlWDtcbiAgICB0aGlzLmRyYWdPZmZzZXQgPSAwO1xuICAgIHRoaXMudmVsb2NpdHkgPSAwO1xuICAgIHRoaXMubGFzdE1vdmVUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLmxhc3RNb3ZlWCA9IGV2ZW50LmNsaWVudFg7XG4gICAgXG4gICAgdGhpcy5jYWxjdWxhdGVEaW1lbnNpb25zKCk7XG4gICAgXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnNsaWRlc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCAndHJhbnNpdGlvbicsICdub25lJyk7XG4gIH1cblxuICBvbk1vdXNlTW92ZShldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICghdGhpcy5pc01vdXNlRG93bikgcmV0dXJuO1xuICAgIFxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgXG4gICAgY29uc3QgZHJhZ0Rpc3RhbmNlID0gTWF0aC5hYnMoZXZlbnQuY2xpZW50WCAtIHRoaXMuc3RhcnRYKTtcbiAgICBcbiAgICAvLyBPbmx5IHN0YXJ0IGRyYWdnaW5nIGlmIG1vdmVkIG1vcmUgdGhhbiA1cHhcbiAgICBpZiAoZHJhZ0Rpc3RhbmNlID4gNSAmJiAhdGhpcy5pc0RyYWdnaW5nKSB7XG4gICAgICB0aGlzLmlzRHJhZ2dpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5kcmFnU3RhcnRlZCA9IHRydWU7XG4gICAgICB0aGlzLndhc0RyYWdnaW5nID0gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgaWYgKHRoaXMuaXNEcmFnZ2luZykge1xuICAgICAgdGhpcy51cGRhdGVEcmFnKGV2ZW50LmNsaWVudFgpO1xuICAgIH1cbiAgfVxuXG4gIG9uTW91c2VVcChldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICghdGhpcy5pc01vdXNlRG93bikgcmV0dXJuO1xuICAgIFxuICAgIHRoaXMuaXNNb3VzZURvd24gPSBmYWxzZTtcbiAgICBcbiAgICBpZiAodGhpcy5pc0RyYWdnaW5nKSB7XG4gICAgICBjb25zdCBtb3VzZVVwVGltZSA9IERhdGUubm93KCk7XG4gICAgICBjb25zdCBob2xkRHVyYXRpb24gPSBtb3VzZVVwVGltZSAtIHRoaXMubW91c2VEb3duVGltZTtcbiAgICAgIGNvbnN0IG1vdXNlRGlzdGFuY2UgPSBNYXRoLmFicyh0aGlzLmN1cnJlbnRYIC0gdGhpcy5zdGFydFgpO1xuICAgICAgXG4gICAgICBpZiAobW91c2VEaXN0YW5jZSA+IDUgfHwgKGhvbGREdXJhdGlvbiA+IDIwMCAmJiBtb3VzZURpc3RhbmNlID4gMCkpIHtcbiAgICAgICAgdGhpcy53YXNEcmFnZ2luZyA9IHRydWU7XG4gICAgICB9XG4gICAgICBcbiAgICAgIHRoaXMuZW5kRHJhZygpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZXNldCB0cmFuc2l0aW9uIGlmIGl0IHdhcyBqdXN0IGEgY2xpY2tcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5zbGlkZXNDb250YWluZXIubmF0aXZlRWxlbWVudCwgJ3RyYW5zaXRpb24nLCAndHJhbnNmb3JtIDAuM3MgZWFzZS1vdXQnKTtcbiAgICB9XG4gIH1cblxuICBvbk1vdXNlTGVhdmUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAodGhpcy5pc0RyYWdnaW5nKSB7XG4gICAgICB0aGlzLndhc0RyYWdnaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuZW5kRHJhZygpO1xuICAgIH1cbiAgICB0aGlzLmlzTW91c2VEb3duID0gZmFsc2U7XG4gIH1cblxuICAvLyBUb3VjaCBldmVudHNcbiAgb25Ub3VjaFN0YXJ0KGV2ZW50OiBUb3VjaEV2ZW50KSB7XG4gICAgdGhpcy50b3VjaFN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgdGhpcy50b3VjaFN0YXJ0WCA9IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WDtcbiAgICB0aGlzLnRvdWNoU3RhcnRZID0gZXZlbnQudG91Y2hlc1swXS5jbGllbnRZO1xuICAgIHRoaXMuaXNWZXJ0aWNhbFNjcm9sbCA9IGZhbHNlO1xuICAgIHRoaXMuaXNNb3VzZURvd24gPSB0cnVlO1xuICAgIHRoaXMud2FzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmRyYWdTdGFydGVkID0gZmFsc2U7XG4gICAgdGhpcy5jbGlja3NEaXNhYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuc3RhcnRYID0gZXZlbnQudG91Y2hlc1swXS5jbGllbnRYO1xuICAgIHRoaXMuY3VycmVudFggPSBldmVudC50b3VjaGVzWzBdLmNsaWVudFg7XG4gICAgdGhpcy5pbml0aWFsVHJhbnNsYXRlWCA9IHRoaXMudHJhbnNsYXRlWDtcbiAgICB0aGlzLmRyYWdPZmZzZXQgPSAwO1xuICAgIHRoaXMudmVsb2NpdHkgPSAwO1xuICAgIHRoaXMubGFzdE1vdmVUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLmxhc3RNb3ZlWCA9IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WDtcbiAgICBcbiAgICB0aGlzLmNhbGN1bGF0ZURpbWVuc2lvbnMoKTtcbiAgICBcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc2xpZGVzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsICd0cmFuc2l0aW9uJywgJ25vbmUnKTtcbiAgfVxuXG4gIG9uVG91Y2hNb3ZlKGV2ZW50OiBUb3VjaEV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmlzTW91c2VEb3duKSByZXR1cm47XG4gICAgXG4gICAgY29uc3QgY3VycmVudFggPSBldmVudC50b3VjaGVzWzBdLmNsaWVudFg7XG4gICAgY29uc3QgY3VycmVudFkgPSBldmVudC50b3VjaGVzWzBdLmNsaWVudFk7XG4gICAgY29uc3QgZGVsdGFYID0gTWF0aC5hYnMoY3VycmVudFggLSB0aGlzLnRvdWNoU3RhcnRYKTtcbiAgICBjb25zdCBkZWx0YVkgPSBNYXRoLmFicyhjdXJyZW50WSAtIHRoaXMudG91Y2hTdGFydFkpO1xuICAgIFxuICAgIC8vIENoZWNrIGlmIHRoaXMgaXMgYSB2ZXJ0aWNhbCBzY3JvbGxcbiAgICBpZiAoZGVsdGFZID4gZGVsdGFYICYmIGRlbHRhWSA+IDEwKSB7XG4gICAgICB0aGlzLmlzVmVydGljYWxTY3JvbGwgPSB0cnVlO1xuICAgICAgdGhpcy5pc0RyYWdnaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLmlzTW91c2VEb3duID0gZmFsc2U7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc2xpZGVzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsICd0cmFuc2l0aW9uJywgJ3RyYW5zZm9ybSAwLjNzIGVhc2Utb3V0Jyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIC8vIFN0YXJ0IGRyYWdnaW5nIGlmIGhvcml6b250YWwgbW92ZW1lbnQgPiAxMHB4XG4gICAgaWYgKGRlbHRhWCA+IDEwICYmICF0aGlzLmlzRHJhZ2dpbmcpIHtcbiAgICAgIHRoaXMuaXNEcmFnZ2luZyA9IHRydWU7XG4gICAgICB0aGlzLmRyYWdTdGFydGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMud2FzRHJhZ2dpbmcgPSB0cnVlO1xuICAgIH1cbiAgICBcbiAgICBpZiAodGhpcy5pc0RyYWdnaW5nICYmIGRlbHRhWCA+IDEwKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy51cGRhdGVEcmFnKGN1cnJlbnRYKTtcbiAgICB9XG4gIH1cblxuICBvblRvdWNoRW5kKGV2ZW50OiBUb3VjaEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuaXNWZXJ0aWNhbFNjcm9sbCkge1xuICAgICAgdGhpcy5pc1ZlcnRpY2FsU2Nyb2xsID0gZmFsc2U7XG4gICAgICB0aGlzLmlzTW91c2VEb3duID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIHRoaXMuaXNNb3VzZURvd24gPSBmYWxzZTtcbiAgICBcbiAgICBjb25zdCB0b3VjaER1cmF0aW9uID0gRGF0ZS5ub3coKSAtIHRoaXMudG91Y2hTdGFydFRpbWU7XG4gICAgY29uc3QgdG91Y2hEaXN0YW5jZSA9IE1hdGguYWJzKHRoaXMuY3VycmVudFggLSB0aGlzLnN0YXJ0WCk7XG4gICAgXG4gICAgLy8gTWFyayBhcyBkcmFnZ2luZyBpZiBzaWduaWZpY2FudCBtb3ZlbWVudCBvY2N1cnJlZFxuICAgIGlmICh0b3VjaERpc3RhbmNlID4gMTAgfHwgdG91Y2hEdXJhdGlvbiA+IDMwMCkge1xuICAgICAgdGhpcy53YXNEcmFnZ2luZyA9IHRydWU7XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLmlzRHJhZ2dpbmcpIHtcbiAgICAgIHRoaXMuZW5kRHJhZygpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZXNldCB0cmFuc2l0aW9uIGlmIGl0IHdhcyBqdXN0IGEgdGFwXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc2xpZGVzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsICd0cmFuc2l0aW9uJywgJ3RyYW5zZm9ybSAwLjNzIGVhc2Utb3V0Jyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cENsaWNrUHJldmVudGlvbigpIHtcbiAgICAvLyBDbGVhbiB1cCBleGlzdGluZyBsaXN0ZW5lcnNcbiAgICB0aGlzLmNsaWNrTGlzdGVuZXJzLmZvckVhY2godW5saXN0ZW4gPT4gdW5saXN0ZW4oKSk7XG4gICAgdGhpcy5jbGlja0xpc3RlbmVycyA9IFtdO1xuXG4gICAgdGhpcy5pdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAvLyBPbmx5IHByZXZlbnQgY2xpY2sgZXZlbnRzLCBub3QgbW91c2V1cCB3aGljaCBpcyBuZWVkZWQgZm9yIGRyYWcgZnVuY3Rpb25hbGl0eVxuICAgICAgY29uc3QgZXZlbnRIYW5kbGVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NsaWNrJyAmJiAodGhpcy53YXNEcmFnZ2luZyB8fCB0aGlzLmNsaWNrc0Rpc2FibGVkIHx8IHRoaXMuZHJhZ1N0YXJ0ZWQpKSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9O1xuXG4gICAgICAvLyBPbmx5IGxpc3RlbiB0byBjbGljayBldmVudHMgdG8gYXZvaWQgaW50ZXJmZXJpbmcgd2l0aCBkcmFnIGZ1bmN0aW9uYWxpdHlcbiAgICAgIGl0ZW0ubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGV2ZW50SGFuZGxlciwgdHJ1ZSk7XG4gICAgICBcbiAgICAgIHRoaXMuY2xpY2tMaXN0ZW5lcnMucHVzaCgoKSA9PiB7XG4gICAgICAgIGl0ZW0ubmF0aXZlRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGV2ZW50SGFuZGxlciwgdHJ1ZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRHJhZyhjbGllbnRYOiBudW1iZXIpIHtcbiAgICBpZiAoIXRoaXMuaXNEcmFnZ2luZykgcmV0dXJuO1xuXG4gICAgdGhpcy5jdXJyZW50WCA9IGNsaWVudFg7XG4gICAgY29uc3QgdG90YWxEZWx0YVggPSB0aGlzLmN1cnJlbnRYIC0gdGhpcy5zdGFydFg7XG4gICAgXG4gICAgLy8gTWFyayBhcyBkcmFnZ2luZyBpZiBtb3ZlbWVudCBpcyBzaWduaWZpY2FudFxuICAgIGlmIChNYXRoLmFicyh0b3RhbERlbHRhWCkgPiA1KSB7XG4gICAgICB0aGlzLndhc0RyYWdnaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuZHJhZ1N0YXJ0ZWQgPSB0cnVlO1xuICAgIH1cbiAgICBcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHRpbWVEZWx0YSA9IG5vdyAtIHRoaXMubGFzdE1vdmVUaW1lO1xuICAgIGlmICh0aW1lRGVsdGEgPiAwKSB7XG4gICAgICB0aGlzLnZlbG9jaXR5ID0gKGNsaWVudFggLSB0aGlzLmxhc3RNb3ZlWCkgLyB0aW1lRGVsdGE7XG4gICAgfVxuICAgIHRoaXMubGFzdE1vdmVUaW1lID0gbm93O1xuICAgIHRoaXMubGFzdE1vdmVYID0gY2xpZW50WDtcblxuICAgIGxldCByZXNpc3RlZERlbHRhWCA9IHRvdGFsRGVsdGFYO1xuICAgIGNvbnN0IHBvdGVudGlhbFRyYW5zbGF0ZVggPSB0aGlzLmluaXRpYWxUcmFuc2xhdGVYICsgdG90YWxEZWx0YVg7XG4gICAgXG4gICAgLy8gQXBwbHkgc29mdGVyIHJlc2lzdGFuY2UgYXQgYm91bmRhcmllc1xuICAgIGlmIChwb3RlbnRpYWxUcmFuc2xhdGVYID4gdGhpcy5tYXhUcmFuc2xhdGVYKSB7XG4gICAgICBjb25zdCBvdmVyRHJhZyA9IHBvdGVudGlhbFRyYW5zbGF0ZVggLSB0aGlzLm1heFRyYW5zbGF0ZVg7XG4gICAgICByZXNpc3RlZERlbHRhWCA9IHRvdGFsRGVsdGFYIC0gKG92ZXJEcmFnICogMC41KTtcbiAgICB9IGVsc2UgaWYgKHBvdGVudGlhbFRyYW5zbGF0ZVggPCB0aGlzLm1pblRyYW5zbGF0ZVgpIHtcbiAgICAgIGNvbnN0IG92ZXJEcmFnID0gdGhpcy5taW5UcmFuc2xhdGVYIC0gcG90ZW50aWFsVHJhbnNsYXRlWDtcbiAgICAgIHJlc2lzdGVkRGVsdGFYID0gdG90YWxEZWx0YVggKyAob3ZlckRyYWcgKiAwLjUpO1xuICAgIH1cblxuICAgIHRoaXMuZHJhZ09mZnNldCA9IHJlc2lzdGVkRGVsdGFYO1xuICAgIHRoaXMudXBkYXRlRHJhZ1Bvc2l0aW9uKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZURyYWdQb3NpdGlvbigpIHtcbiAgICBjb25zdCBuZXdUcmFuc2xhdGVYID0gdGhpcy5pbml0aWFsVHJhbnNsYXRlWCArIHRoaXMuZHJhZ09mZnNldDtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgdGhpcy5zbGlkZXNDb250YWluZXIubmF0aXZlRWxlbWVudCwgXG4gICAgICAndHJhbnNmb3JtJywgXG4gICAgICBgdHJhbnNsYXRlWCgke25ld1RyYW5zbGF0ZVh9cHgpYFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGVuZERyYWcoKSB7XG4gICAgaWYgKCF0aGlzLmlzRHJhZ2dpbmcpIHJldHVybjtcblxuICAgIHRoaXMuaXNEcmFnZ2luZyA9IGZhbHNlO1xuICAgIFxuICAgIC8vIERpc2FibGUgY2xpY2tzIHRlbXBvcmFyaWx5IGFmdGVyIGFueSBkcmFnXG4gICAgaWYgKHRoaXMud2FzRHJhZ2dpbmcgfHwgdGhpcy5kcmFnU3RhcnRlZCkge1xuICAgICAgdGhpcy5jbGlja3NEaXNhYmxlZCA9IHRydWU7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5jbGlja3NEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgfSwgMjAwKTtcbiAgICB9XG4gICAgXG4gICAgLy8gQ2xlYXIgdGhlIHdhc0RyYWdnaW5nIGFuZCBkcmFnU3RhcnRlZCBmbGFncyBhZnRlciBhIHNob3J0ZXIgZGVsYXlcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMud2FzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuZHJhZ1N0YXJ0ZWQgPSBmYWxzZTtcbiAgICB9LCAyNTApO1xuICAgIFxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5zbGlkZXNDb250YWluZXIubmF0aXZlRWxlbWVudCwgJ3RyYW5zaXRpb24nLCAndHJhbnNmb3JtIDAuM3MgZWFzZS1vdXQnKTtcblxuICAgIC8vIFNuYXAgc2VtcHJlIHBhcmEgbyBpbsOtY2lvIGRhIHDDoWdpbmEgbWFpcyBwcsOzeGltYVxuICAgIHRoaXMuc25hcFRvTmVhcmVzdEl0ZW0oKTtcblxuICAgIHRoaXMuZHJhZ09mZnNldCA9IDA7XG4gICAgdGhpcy52ZWxvY2l0eSA9IDA7XG4gIH1cblxuICBwcml2YXRlIGdldE1heEluZGV4KCk6IG51bWJlciB7XG4gICAgLy8gUGVybWl0ZSBhdmFuw6dhciBhdMOpIHF1ZSBvIMO6bHRpbW8gaXRlbSBlc3RlamEgdmlzw612ZWwgKG7Do28gbmVjZXNzYXJpYW1lbnRlIGFsaW5oYWRvIMOgIGVzcXVlcmRhKVxuICAgIGlmICghdGhpcy5pdGVtcyB8fCB0aGlzLml0ZW1zLmxlbmd0aCA9PT0gMCkgcmV0dXJuIDA7XG4gICAgY29uc3QgdmlzaWJsZUNvdW50ID0gTWF0aC5tYXgoMSwgTWF0aC5mbG9vcih0aGlzLmNvbnRhaW5lcldpZHRoIC8gKHRoaXMuaXRlbVdpZHRoICsgdGhpcy5nYXApKSk7XG4gICAgaWYgKHRoaXMuaXRlbXMubGVuZ3RoIDw9IHZpc2libGVDb3VudCkgcmV0dXJuIDA7XG4gICAgLy8gw5psdGltYSBwb3Npw6fDo28gb25kZSBvIMO6bHRpbW8gaXRlbSBhcGFyZWNlIHZpc8OtdmVsXG4gICAgcmV0dXJuIHRoaXMuaXRlbXMubGVuZ3RoIC0gdmlzaWJsZUNvdW50O1xuICB9XG5cbiAgY2FuR29OZXh0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRJbmRleCA8IHRoaXMuZ2V0TWF4SW5kZXgoKTtcbiAgfVxuXG4gIG5leHRJdGVtKCkge1xuICAgIGNvbnN0IG1heEluZGV4ID0gdGhpcy5nZXRNYXhJbmRleCgpO1xuICAgIGlmICh0aGlzLmNhbkdvTmV4dCgpKSB7XG4gICAgICBsZXQgbmV3SW5kZXggPSB0aGlzLmN1cnJlbnRJbmRleCArIDE7XG4gICAgICBpZiAobmV3SW5kZXggPiBtYXhJbmRleCkgbmV3SW5kZXggPSBtYXhJbmRleDtcbiAgICAgIHRoaXMuY3VycmVudEluZGV4ID0gbmV3SW5kZXg7XG4gICAgICB0aGlzLnVwZGF0ZVRyYW5zZm9ybSgpO1xuICAgICAgdGhpcy5uZXh0Q2xpY2tFdmVudEVtaXR0ZXIuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIGNhbkdvUHJldmlvdXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudEluZGV4ID4gMDtcbiAgfVxuXG4gIHByZXZJdGVtKCkge1xuICAgIGlmICh0aGlzLmNhbkdvUHJldmlvdXMoKSkge1xuICAgICAgbGV0IG5ld0luZGV4ID0gdGhpcy5jdXJyZW50SW5kZXggLSAxO1xuICAgICAgaWYgKG5ld0luZGV4IDwgMCkgbmV3SW5kZXggPSAwO1xuICAgICAgdGhpcy5jdXJyZW50SW5kZXggPSBuZXdJbmRleDtcbiAgICAgIHRoaXMudXBkYXRlVHJhbnNmb3JtKCk7XG4gICAgICB0aGlzLnByZXZpb3VzQ2xpY2tFdmVudEVtaXR0ZXIuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIGdvVG9Eb3QoZG90SW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IG1heEluZGV4ID0gdGhpcy5nZXRNYXhJbmRleCgpO1xuICAgIGxldCBuZXdJbmRleCA9IGRvdEluZGV4O1xuICAgIGlmIChuZXdJbmRleCA+IG1heEluZGV4KSBuZXdJbmRleCA9IG1heEluZGV4O1xuICAgIHRoaXMuY3VycmVudEluZGV4ID0gbmV3SW5kZXg7XG4gICAgdGhpcy51cGRhdGVUcmFuc2Zvcm0oKTtcbiAgfVxuXG4gIHByaXZhdGUgc25hcFRvTmVhcmVzdEl0ZW0oKSB7XG4gICAgY29uc3QgaXRlbVN0ZXAgPSB0aGlzLml0ZW1XaWR0aCArIHRoaXMuZ2FwO1xuICAgIGNvbnN0IHBvc2l0aW9uID0gLSh0aGlzLmluaXRpYWxUcmFuc2xhdGVYICsgdGhpcy5kcmFnT2Zmc2V0KSAvIGl0ZW1TdGVwO1xuICAgIFxuICAgIC8vIFRocmVzaG9sZDogMC4zID0gMzAlLCAwLjUgPSA1MCUgKHBhZHLDo28pXG4gICAgY29uc3QgdGhyZXNob2xkID0gMC4zO1xuICAgIFxuICAgIGxldCB0YXJnZXRJbmRleDogbnVtYmVyO1xuICAgIFxuICAgIC8vIENhbGN1bGEgcXVhbnRvcyBpdGVucyBjb21wbGV0b3MgZm9yYW0gYXJyYXN0YWRvc1xuICAgIGNvbnN0IGl0ZW1zTW92ZWQgPSBNYXRoLmZsb29yKE1hdGguYWJzKHBvc2l0aW9uIC0gdGhpcy5jdXJyZW50SW5kZXgpKTtcbiAgICBjb25zdCBkZWNpbWFsID0gTWF0aC5hYnMocG9zaXRpb24gLSB0aGlzLmN1cnJlbnRJbmRleCkgLSBpdGVtc01vdmVkO1xuICAgIFxuICAgIGlmIChwb3NpdGlvbiA+IHRoaXMuY3VycmVudEluZGV4KSB7XG4gICAgICAvLyBBcnJhc3RhbmRvIHBhcmEgZnJlbnRlXG4gICAgICBpZiAoZGVjaW1hbCA+PSB0aHJlc2hvbGQpIHtcbiAgICAgICAgdGFyZ2V0SW5kZXggPSB0aGlzLmN1cnJlbnRJbmRleCArIGl0ZW1zTW92ZWQgKyAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGFyZ2V0SW5kZXggPSB0aGlzLmN1cnJlbnRJbmRleCArIGl0ZW1zTW92ZWQ7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChwb3NpdGlvbiA8IHRoaXMuY3VycmVudEluZGV4KSB7XG4gICAgICAvLyBBcnJhc3RhbmRvIHBhcmEgdHLDoXNcbiAgICAgIGlmIChkZWNpbWFsID49IHRocmVzaG9sZCkge1xuICAgICAgICB0YXJnZXRJbmRleCA9IHRoaXMuY3VycmVudEluZGV4IC0gaXRlbXNNb3ZlZCAtIDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YXJnZXRJbmRleCA9IHRoaXMuY3VycmVudEluZGV4IC0gaXRlbXNNb3ZlZDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTsOjbyBzZSBtb3ZldVxuICAgICAgdGFyZ2V0SW5kZXggPSB0aGlzLmN1cnJlbnRJbmRleDtcbiAgICB9XG4gICAgXG4gICAgY29uc3QgbWF4SW5kZXggPSB0aGlzLmdldE1heEluZGV4KCk7XG4gICAgdGFyZ2V0SW5kZXggPSBNYXRoLm1heCgwLCBNYXRoLm1pbih0YXJnZXRJbmRleCwgbWF4SW5kZXgpKTtcbiAgICB0aGlzLmN1cnJlbnRJbmRleCA9IHRhcmdldEluZGV4O1xuICAgIHRoaXMudXBkYXRlVHJhbnNmb3JtKCk7XG4gIH1cblxuICBnZXREb3RzQXJyYXkoKTogYW55W10ge1xuICAgIC8vIFPDsyBtb3N0cmEgZG90cyBwYXJhIGNhZGEgcG9zacOnw6NvIHBvc3PDrXZlbCAoY2FkYSBcInDDoWdpbmFcIiBwb3Nzw612ZWwpXG4gICAgY29uc3QgbWF4SW5kZXggPSB0aGlzLmdldE1heEluZGV4KCk7XG4gICAgcmV0dXJuIEFycmF5KG1heEluZGV4ICsgMSk7XG4gIH1cblxuICBnZXRDdXJyZW50RG90SW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50SW5kZXg7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVRyYW5zZm9ybSgpIHtcbiAgICBjb25zdCBpdGVtU3RlcCA9IHRoaXMuaXRlbVdpZHRoICsgdGhpcy5nYXA7XG4gICAgdGhpcy50cmFuc2xhdGVYID0gLXRoaXMuY3VycmVudEluZGV4ICogaXRlbVN0ZXA7XG5cbiAgICAvLyBDbGFtcCBwYXJhIG7Do28gbW9zdHJhciBlc3Bhw6dvIHZhemlvIMOgIGRpcmVpdGFcbiAgICBjb25zdCB2aXNpYmxlQ291bnQgPSBNYXRoLm1heCgxLCBNYXRoLmZsb29yKHRoaXMuY29udGFpbmVyV2lkdGggLyBpdGVtU3RlcCkpO1xuICAgIC8vIEluY2x1aSBvIGdhcCBhcMOzcyBvIMO6bHRpbW8gaXRlbVxuICAgIGNvbnN0IHRvdGFsV2lkdGggPSB0aGlzLml0ZW1zLmxlbmd0aCAqIGl0ZW1TdGVwO1xuICAgIGlmICh0aGlzLml0ZW1zLmxlbmd0aCA+IHZpc2libGVDb3VudCkge1xuICAgICAgY29uc3QgbWluVHJhbnNsYXRlWCA9IHRoaXMuY29udGFpbmVyV2lkdGggLSB0b3RhbFdpZHRoO1xuICAgICAgdGhpcy50cmFuc2xhdGVYID0gTWF0aC5tYXgodGhpcy50cmFuc2xhdGVYLCBtaW5UcmFuc2xhdGVYKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50cmFuc2xhdGVYID0gMDtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaXNEcmFnZ2luZyAmJiB0aGlzLnNsaWRlc0NvbnRhaW5lcikge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5zbGlkZXNDb250YWluZXIubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ3RyYW5zZm9ybScsXG4gICAgICAgIGB0cmFuc2xhdGVYKCR7dGhpcy50cmFuc2xhdGVYfXB4KWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLy8gQWRpY2lvbmUgZXN0ZSBtw6l0b2RvIHBhcmEgZXZpdGFyIGVycm8gZGUgcHJvcHJpZWRhZGUgYXVzZW50ZVxuICBnb1RvRmlyc3RJdGVtKCkge1xuICAgIHRoaXMuY3VycmVudEluZGV4ID0gMDtcbiAgICB0aGlzLnVwZGF0ZVRyYW5zZm9ybSgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYy1jYXJvdXNlbC1maXhlZC1jb250YWluZXJcIiAjcmlnaHRCbGVlZENvbnRhaW5lcj5cbiAgPGRpdiBcbiAgY2xhc3M9XCJjLWNhcm91c2VsLWZpeGVkLXNsaWRlc1wiIFxuICAjc2xpZGVzQ29udGFpbmVyXG4gIFtzdHlsZS50cmFuc2Zvcm1dPVwiJ3RyYW5zbGF0ZVgoJyArIHRyYW5zbGF0ZVggKyAncHgpJ1wiIFxuICAobW91c2Vkb3duKT1cIm9uTW91c2VEb3duKCRldmVudClcIlxuICAobW91c2Vtb3ZlKT1cIm9uTW91c2VNb3ZlKCRldmVudClcIlxuICAobW91c2V1cCk9XCJvbk1vdXNlVXAoJGV2ZW50KVwiXG4gIChtb3VzZWxlYXZlKT1cIm9uTW91c2VMZWF2ZSgkZXZlbnQpXCJcbiAgKHRvdWNoc3RhcnQpPVwib25Ub3VjaFN0YXJ0KCRldmVudClcIiBcbiAgKHRvdWNobW92ZSk9XCJvblRvdWNoTW92ZSgkZXZlbnQpXCIgXG4gICh0b3VjaGVuZCk9XCJvblRvdWNoRW5kKCRldmVudClcIj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImMtY2Fyb3VzZWwtZml4ZWQtZm9vdGVyXCIgKm5nSWY9XCJzaG93QXJyb3dzIHx8IHNob3dEb3RzXCI+XG4gICAgPGJ1dHRvbiAqbmdJZj1cInNob3dBcnJvd3MgJiYgZ2V0RG90c0FycmF5KCkubGVuZ3RoID4gMVwiXG4gICAgICBjbGFzcz1cImMtY2Fyb3VzZWwtZml4ZWQtbmF2IHByZXZcIiBcbiAgICAgIFtkaXNhYmxlZF09XCIhY2FuR29QcmV2aW91cygpXCJcbiAgICAgIHRpdGxlPVwiSXRlbSBhbnRlcmlvclwiIFxuICAgICAgYXJpYS1sYWJlbD1cIkl0ZW0gYW50ZXJpb3JcIiBcbiAgICAgIChjbGljayk9XCJwcmV2SXRlbSgpXCI+XG4gICAgICA8bGliLWVsdXgtaWNvbiBbaWNvbl09XCInQ2hldnJvbl9MZWZ0LnN2ZydcIiBbc2l6ZV09XCInMTYnXCIgW3NpemVUeXBlXT1cIidweCdcIiBbY29sb3JdPVwiJyMwMjBGMkUnXCI+PC9saWItZWx1eC1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGRpdiBjbGFzcz1cImMtY2Fyb3VzZWwtZml4ZWQtZG90c1wiICpuZ0lmPVwic2hvd0RvdHMgJiYgZ2V0RG90c0FycmF5KCkubGVuZ3RoID4gMVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZG90IG9mIGdldERvdHNBcnJheSgpOyBsZXQgaWR4ID0gaW5kZXhcIj5cbiAgICAgICAgPHNwYW4gXG4gICAgICAgICAgY2xhc3M9XCJjLWNhcm91c2VsLWZpeGVkLWRvdFwiIFxuICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiaWR4ID09PSBnZXRDdXJyZW50RG90SW5kZXgoKVwiIFxuICAgICAgICAgIChjbGljayk9XCJnb1RvRG90KGlkeClcIj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8YnV0dG9uICpuZ0lmPVwic2hvd0Fycm93cyAmJiBnZXREb3RzQXJyYXkoKS5sZW5ndGggPiAxXCJcbiAgICAgIGNsYXNzPVwiYy1jYXJvdXNlbC1maXhlZC1uYXYgbmV4dFwiIFxuICAgICAgW2Rpc2FibGVkXT1cIiFjYW5Hb05leHQoKVwiXG4gICAgICB0aXRsZT1cIlByw7N4aW1vIGl0ZW1cIiBcbiAgICAgIGFyaWEtbGFiZWw9XCJQcsOzeGltbyBpdGVtXCIgXG4gICAgICAoY2xpY2spPVwibmV4dEl0ZW0oKVwiPlxuICAgICAgPGxpYi1lbHV4LWljb24gW2ljb25dPVwiJ0NoZXZyb25fUmlnaHQuc3ZnJ1wiIFtzaXplXT1cIicxNidcIiBbc2l6ZVR5cGVdPVwiJ3B4J1wiIFtjb2xvcl09XCInIzAyMEYyRSdcIj48L2xpYi1lbHV4LWljb24+XG4gICAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
@@ -19,10 +19,10 @@ export class EluxToast {
19
19
  this.toasterService.removeToast(toast.id);
20
20
  }
21
21
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EluxToast, deps: [{ token: i1.ToasterService }], target: i0.ɵɵFactoryTarget.Component }); }
22
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: EluxToast, isStandalone: true, selector: "lib-elux-toaster", ngImport: i0, template: "<div class=\"elux-toast-container\">\n <div class=\"d-flex\" *ngFor=\"let toast of toasterService.toasts\" [ngClass]=\"['elux-toast-element', toast.type]\" (mouseenter)=\"pauseToast(toast)\" (mouseleave)=\"resumeToast(toast)\">\n <lib-elux-icon class=\"me-2\" [color]=\"toast.iconColor\" [icon]=\"toast.iconName\" size=\"20\" sizeType=\"px\"></lib-elux-icon>\n <div>\n {{ toast.message }}\n </div>\n <lib-elux-icon (click)=\"closeToast(toast)\" class=\"ms-auto cursor-pointer\" [color]=\"toast.iconColor\" icon=\"Close.svg\" size=\"24\" sizeType=\"px\"></lib-elux-icon>\n </div>\n</div>\n", styles: [".display{font-family:Electrolux Sans;font-size:48px;font-weight:700;line-height:56px}.heading-1{font-family:Electrolux Sans;font-size:34px;font-weight:700;line-height:40px}.heading-2{font-family:Electrolux Sans;font-size:28px;font-weight:600;line-height:32px}.heading-3{font-family:Electrolux Sans;font-size:20px;font-weight:600;line-height:24px}.subtitle-1{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:20px}.body{font-family:Electrolux Sans;font-size:16px;font-weight:400;line-height:21px}.caption{font-family:Electrolux Sans;font-size:14px;font-weight:400;line-height:normal}.links{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:normal;text-decoration-line:underline}@media screen and (max-width: 768px){.display{font-family:Electrolux Sans;font-size:40px;font-weight:700;line-height:46px}.heading-1{font-family:Electrolux Sans;font-size:28px;font-weight:600;line-height:32px}.heading-2{font-family:Electrolux Sans;font-size:24px;font-weight:600;line-height:28px}.heading-3{font-family:Electrolux Sans;font-size:20px;font-weight:600;line-height:24px}.subtitle-1{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:20px}.body{font-family:Electrolux Sans;font-size:16px;font-weight:400;line-height:21px}.caption{font-family:Electrolux Sans;font-size:14px;font-weight:400;line-height:normal}.links{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:normal;text-decoration-line:underline}}:host .elux-toast-container{position:fixed;top:80px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;z-index:20}@media (max-width: 768px){:host .elux-toast-container{width:90%}}:host .elux-toast-element{margin:10px 0;padding:10px;border-radius:5px;border:none;display:flex;animation:fadein .5s forwards;box-shadow:none}:host .cursor-pointer{cursor:pointer}:host .success{color:#0c5f29;background-color:#edf8f1}:host .error{color:#9c231c;background-color:#fff3f2}:host .warning{color:#b19459;background-color:#fff1d5}:host .info{color:#557cb3;background-color:#ddebff}@keyframes fadein{0%{opacity:0}to{opacity:1}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: EluxIcon, selector: "lib-elux-icon", inputs: ["color", "useSubscription", "icon", "description", "size", "height", "width", "sizeType"] }] }); }
22
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: EluxToast, isStandalone: true, selector: "lib-elux-toaster", ngImport: i0, template: "<div class=\"elux-toast-container\">\n <div class=\"d-flex\" *ngFor=\"let toast of toasterService.toasts\" [ngClass]=\"['elux-toast-element', toast.type]\" (mouseenter)=\"pauseToast(toast)\" (mouseleave)=\"resumeToast(toast)\">\n <lib-elux-icon class=\"me-2\" [color]=\"toast.iconColor\" [icon]=\"toast.iconName\" size=\"20\" sizeType=\"px\"></lib-elux-icon>\n <div [innerHTML]=\"toast.message\"></div>\n <lib-elux-icon (click)=\"closeToast(toast)\" class=\"ms-auto cursor-pointer\" [color]=\"toast.iconColor\" icon=\"Close.svg\" size=\"24\" sizeType=\"px\"></lib-elux-icon>\n </div>\n</div>\n", styles: [".display{font-family:Electrolux Sans;font-size:48px;font-weight:700;line-height:56px}.heading-1{font-family:Electrolux Sans;font-size:34px;font-weight:700;line-height:40px}.heading-2{font-family:Electrolux Sans;font-size:28px;font-weight:600;line-height:32px}.heading-3{font-family:Electrolux Sans;font-size:20px;font-weight:600;line-height:24px}.subtitle-1{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:20px}.body{font-family:Electrolux Sans;font-size:16px;font-weight:400;line-height:21px}.caption{font-family:Electrolux Sans;font-size:14px;font-weight:400;line-height:normal}.links{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:normal;text-decoration-line:underline}@media screen and (max-width: 768px){.display{font-family:Electrolux Sans;font-size:40px;font-weight:700;line-height:46px}.heading-1{font-family:Electrolux Sans;font-size:28px;font-weight:600;line-height:32px}.heading-2{font-family:Electrolux Sans;font-size:24px;font-weight:600;line-height:28px}.heading-3{font-family:Electrolux Sans;font-size:20px;font-weight:600;line-height:24px}.subtitle-1{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:20px}.body{font-family:Electrolux Sans;font-size:16px;font-weight:400;line-height:21px}.caption{font-family:Electrolux Sans;font-size:14px;font-weight:400;line-height:normal}.links{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:normal;text-decoration-line:underline}}:host .elux-toast-container{position:fixed;top:80px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;z-index:20}@media (max-width: 768px){:host .elux-toast-container{width:90%}}:host .elux-toast-element{margin:10px 0;padding:10px;border-radius:5px;border:none;display:flex;animation:fadein .5s forwards;box-shadow:none}:host .cursor-pointer{cursor:pointer}:host .success{color:#0c5f29;background-color:#edf8f1}:host .error{color:#9c231c;background-color:#fff3f2}:host .warning{color:#b19459;background-color:#fff1d5}:host .info{color:#557cb3;background-color:#ddebff}@keyframes fadein{0%{opacity:0}to{opacity:1}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: EluxIcon, selector: "lib-elux-icon", inputs: ["color", "useSubscription", "icon", "description", "size", "height", "width", "sizeType"] }] }); }
23
23
  }
24
24
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EluxToast, decorators: [{
25
25
  type: Component,
26
- args: [{ selector: 'lib-elux-toaster', standalone: true, imports: [CommonModule, EluxIcon], template: "<div class=\"elux-toast-container\">\n <div class=\"d-flex\" *ngFor=\"let toast of toasterService.toasts\" [ngClass]=\"['elux-toast-element', toast.type]\" (mouseenter)=\"pauseToast(toast)\" (mouseleave)=\"resumeToast(toast)\">\n <lib-elux-icon class=\"me-2\" [color]=\"toast.iconColor\" [icon]=\"toast.iconName\" size=\"20\" sizeType=\"px\"></lib-elux-icon>\n <div>\n {{ toast.message }}\n </div>\n <lib-elux-icon (click)=\"closeToast(toast)\" class=\"ms-auto cursor-pointer\" [color]=\"toast.iconColor\" icon=\"Close.svg\" size=\"24\" sizeType=\"px\"></lib-elux-icon>\n </div>\n</div>\n", styles: [".display{font-family:Electrolux Sans;font-size:48px;font-weight:700;line-height:56px}.heading-1{font-family:Electrolux Sans;font-size:34px;font-weight:700;line-height:40px}.heading-2{font-family:Electrolux Sans;font-size:28px;font-weight:600;line-height:32px}.heading-3{font-family:Electrolux Sans;font-size:20px;font-weight:600;line-height:24px}.subtitle-1{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:20px}.body{font-family:Electrolux Sans;font-size:16px;font-weight:400;line-height:21px}.caption{font-family:Electrolux Sans;font-size:14px;font-weight:400;line-height:normal}.links{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:normal;text-decoration-line:underline}@media screen and (max-width: 768px){.display{font-family:Electrolux Sans;font-size:40px;font-weight:700;line-height:46px}.heading-1{font-family:Electrolux Sans;font-size:28px;font-weight:600;line-height:32px}.heading-2{font-family:Electrolux Sans;font-size:24px;font-weight:600;line-height:28px}.heading-3{font-family:Electrolux Sans;font-size:20px;font-weight:600;line-height:24px}.subtitle-1{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:20px}.body{font-family:Electrolux Sans;font-size:16px;font-weight:400;line-height:21px}.caption{font-family:Electrolux Sans;font-size:14px;font-weight:400;line-height:normal}.links{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:normal;text-decoration-line:underline}}:host .elux-toast-container{position:fixed;top:80px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;z-index:20}@media (max-width: 768px){:host .elux-toast-container{width:90%}}:host .elux-toast-element{margin:10px 0;padding:10px;border-radius:5px;border:none;display:flex;animation:fadein .5s forwards;box-shadow:none}:host .cursor-pointer{cursor:pointer}:host .success{color:#0c5f29;background-color:#edf8f1}:host .error{color:#9c231c;background-color:#fff3f2}:host .warning{color:#b19459;background-color:#fff1d5}:host .info{color:#557cb3;background-color:#ddebff}@keyframes fadein{0%{opacity:0}to{opacity:1}}\n"] }]
26
+ args: [{ selector: 'lib-elux-toaster', standalone: true, imports: [CommonModule, EluxIcon], template: "<div class=\"elux-toast-container\">\n <div class=\"d-flex\" *ngFor=\"let toast of toasterService.toasts\" [ngClass]=\"['elux-toast-element', toast.type]\" (mouseenter)=\"pauseToast(toast)\" (mouseleave)=\"resumeToast(toast)\">\n <lib-elux-icon class=\"me-2\" [color]=\"toast.iconColor\" [icon]=\"toast.iconName\" size=\"20\" sizeType=\"px\"></lib-elux-icon>\n <div [innerHTML]=\"toast.message\"></div>\n <lib-elux-icon (click)=\"closeToast(toast)\" class=\"ms-auto cursor-pointer\" [color]=\"toast.iconColor\" icon=\"Close.svg\" size=\"24\" sizeType=\"px\"></lib-elux-icon>\n </div>\n</div>\n", styles: [".display{font-family:Electrolux Sans;font-size:48px;font-weight:700;line-height:56px}.heading-1{font-family:Electrolux Sans;font-size:34px;font-weight:700;line-height:40px}.heading-2{font-family:Electrolux Sans;font-size:28px;font-weight:600;line-height:32px}.heading-3{font-family:Electrolux Sans;font-size:20px;font-weight:600;line-height:24px}.subtitle-1{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:20px}.body{font-family:Electrolux Sans;font-size:16px;font-weight:400;line-height:21px}.caption{font-family:Electrolux Sans;font-size:14px;font-weight:400;line-height:normal}.links{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:normal;text-decoration-line:underline}@media screen and (max-width: 768px){.display{font-family:Electrolux Sans;font-size:40px;font-weight:700;line-height:46px}.heading-1{font-family:Electrolux Sans;font-size:28px;font-weight:600;line-height:32px}.heading-2{font-family:Electrolux Sans;font-size:24px;font-weight:600;line-height:28px}.heading-3{font-family:Electrolux Sans;font-size:20px;font-weight:600;line-height:24px}.subtitle-1{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:20px}.body{font-family:Electrolux Sans;font-size:16px;font-weight:400;line-height:21px}.caption{font-family:Electrolux Sans;font-size:14px;font-weight:400;line-height:normal}.links{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:normal;text-decoration-line:underline}}:host .elux-toast-container{position:fixed;top:80px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;z-index:20}@media (max-width: 768px){:host .elux-toast-container{width:90%}}:host .elux-toast-element{margin:10px 0;padding:10px;border-radius:5px;border:none;display:flex;animation:fadein .5s forwards;box-shadow:none}:host .cursor-pointer{cursor:pointer}:host .success{color:#0c5f29;background-color:#edf8f1}:host .error{color:#9c231c;background-color:#fff3f2}:host .warning{color:#b19459;background-color:#fff1d5}:host .info{color:#557cb3;background-color:#ddebff}@keyframes fadein{0%{opacity:0}to{opacity:1}}\n"] }]
27
27
  }], ctorParameters: () => [{ type: i1.ToasterService }] });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vdWkvbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvdG9hc3QvdG9hc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vdWkvbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvdG9hc3QvdG9hc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7O0FBVWxELE1BQU0sT0FBTyxTQUFTO0lBQ3BCLFlBQW1CLGNBQThCO1FBQTlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtJQUFJLENBQUM7SUFFdEQsVUFBVSxDQUFDLEtBQVU7UUFDbkIsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDdEIsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFVO1FBQ3BCLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxVQUFVLENBQUMsS0FBVTtRQUNuQixJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDM0MsQ0FBQzsrR0FkVSxTQUFTO21HQUFULFNBQVMsNEVDYnRCLGltQkFTQSwyb0VERFksWUFBWSwwUEFBRSxRQUFROzs0RkFLckIsU0FBUztrQkFSckIsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRvYXN0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdG9hc3Rlci5zZXJ2aWNlJztcbmltcG9ydCB7IEVsdXhJY29uIH0gZnJvbSAnLi4vaWNvbi9pY29uLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1lbHV4LXRvYXN0ZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBFbHV4SWNvbl0sXG4gIHRlbXBsYXRlVXJsOiAnLi90b2FzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi90b2FzdC5jb21wb25lbnQuc2NzcycsXG5cbn0pXG5leHBvcnQgY2xhc3MgRWx1eFRvYXN0IHtcbiAgY29uc3RydWN0b3IocHVibGljIHRvYXN0ZXJTZXJ2aWNlOiBUb2FzdGVyU2VydmljZSkgeyB9XG5cbiAgcGF1c2VUb2FzdCh0b2FzdDogYW55KSB7XG4gICAgdG9hc3QucGF1c2VkID0gdHJ1ZTtcbiAgfVxuXG4gIHJlc3VtZVRvYXN0KHRvYXN0OiBhbnkpIHtcbiAgICB0b2FzdC5wYXVzZWQgPSBmYWxzZTtcbiAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLnJlbW92ZVRvYXN0QWZ0ZXI1U2Vjb25kcyh0b2FzdC5pZCk7XG4gIH1cblxuICBjbG9zZVRvYXN0KHRvYXN0OiBhbnkpIHtcbiAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLnJlbW92ZVRvYXN0KHRvYXN0LmlkKVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZWx1eC10b2FzdC1jb250YWluZXJcIj5cbiAgPGRpdiBjbGFzcz1cImQtZmxleFwiICpuZ0Zvcj1cImxldCB0b2FzdCBvZiB0b2FzdGVyU2VydmljZS50b2FzdHNcIiBbbmdDbGFzc109XCJbJ2VsdXgtdG9hc3QtZWxlbWVudCcsIHRvYXN0LnR5cGVdXCIgKG1vdXNlZW50ZXIpPVwicGF1c2VUb2FzdCh0b2FzdClcIiAobW91c2VsZWF2ZSk9XCJyZXN1bWVUb2FzdCh0b2FzdClcIj5cbiAgICA8bGliLWVsdXgtaWNvbiBjbGFzcz1cIm1lLTJcIiBbY29sb3JdPVwidG9hc3QuaWNvbkNvbG9yXCIgW2ljb25dPVwidG9hc3QuaWNvbk5hbWVcIiBzaXplPVwiMjBcIiBzaXplVHlwZT1cInB4XCI+PC9saWItZWx1eC1pY29uPlxuICAgIDxkaXY+XG4gICAgICB7eyB0b2FzdC5tZXNzYWdlIH19XG4gICAgPC9kaXY+XG4gICAgPGxpYi1lbHV4LWljb24gKGNsaWNrKT1cImNsb3NlVG9hc3QodG9hc3QpXCIgY2xhc3M9XCJtcy1hdXRvIGN1cnNvci1wb2ludGVyXCIgW2NvbG9yXT1cInRvYXN0Lmljb25Db2xvclwiIGljb249XCJDbG9zZS5zdmdcIiBzaXplPVwiMjRcIiBzaXplVHlwZT1cInB4XCI+PC9saWItZWx1eC1pY29uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vdWkvbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvdG9hc3QvdG9hc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vdWkvbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvdG9hc3QvdG9hc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7O0FBVWxELE1BQU0sT0FBTyxTQUFTO0lBQ3BCLFlBQW1CLGNBQThCO1FBQTlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtJQUFJLENBQUM7SUFFdEQsVUFBVSxDQUFDLEtBQVU7UUFDbkIsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDdEIsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFVO1FBQ3BCLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxVQUFVLENBQUMsS0FBVTtRQUNuQixJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDM0MsQ0FBQzsrR0FkVSxTQUFTO21HQUFULFNBQVMsNEVDYnRCLDhsQkFPQSwyb0VEQ1ksWUFBWSwwUEFBRSxRQUFROzs0RkFLckIsU0FBUztrQkFSckIsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRvYXN0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdG9hc3Rlci5zZXJ2aWNlJztcbmltcG9ydCB7IEVsdXhJY29uIH0gZnJvbSAnLi4vaWNvbi9pY29uLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1lbHV4LXRvYXN0ZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBFbHV4SWNvbl0sXG4gIHRlbXBsYXRlVXJsOiAnLi90b2FzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi90b2FzdC5jb21wb25lbnQuc2NzcycsXG5cbn0pXG5leHBvcnQgY2xhc3MgRWx1eFRvYXN0IHtcbiAgY29uc3RydWN0b3IocHVibGljIHRvYXN0ZXJTZXJ2aWNlOiBUb2FzdGVyU2VydmljZSkgeyB9XG5cbiAgcGF1c2VUb2FzdCh0b2FzdDogYW55KSB7XG4gICAgdG9hc3QucGF1c2VkID0gdHJ1ZTtcbiAgfVxuXG4gIHJlc3VtZVRvYXN0KHRvYXN0OiBhbnkpIHtcbiAgICB0b2FzdC5wYXVzZWQgPSBmYWxzZTtcbiAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLnJlbW92ZVRvYXN0QWZ0ZXI1U2Vjb25kcyh0b2FzdC5pZCk7XG4gIH1cblxuICBjbG9zZVRvYXN0KHRvYXN0OiBhbnkpIHtcbiAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLnJlbW92ZVRvYXN0KHRvYXN0LmlkKVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZWx1eC10b2FzdC1jb250YWluZXJcIj5cbiAgPGRpdiBjbGFzcz1cImQtZmxleFwiICpuZ0Zvcj1cImxldCB0b2FzdCBvZiB0b2FzdGVyU2VydmljZS50b2FzdHNcIiBbbmdDbGFzc109XCJbJ2VsdXgtdG9hc3QtZWxlbWVudCcsIHRvYXN0LnR5cGVdXCIgKG1vdXNlZW50ZXIpPVwicGF1c2VUb2FzdCh0b2FzdClcIiAobW91c2VsZWF2ZSk9XCJyZXN1bWVUb2FzdCh0b2FzdClcIj5cbiAgICA8bGliLWVsdXgtaWNvbiBjbGFzcz1cIm1lLTJcIiBbY29sb3JdPVwidG9hc3QuaWNvbkNvbG9yXCIgW2ljb25dPVwidG9hc3QuaWNvbk5hbWVcIiBzaXplPVwiMjBcIiBzaXplVHlwZT1cInB4XCI+PC9saWItZWx1eC1pY29uPlxuICAgIDxkaXYgW2lubmVySFRNTF09XCJ0b2FzdC5tZXNzYWdlXCI+PC9kaXY+XG4gICAgPGxpYi1lbHV4LWljb24gKGNsaWNrKT1cImNsb3NlVG9hc3QodG9hc3QpXCIgY2xhc3M9XCJtcy1hdXRvIGN1cnNvci1wb2ludGVyXCIgW2NvbG9yXT1cInRvYXN0Lmljb25Db2xvclwiIGljb249XCJDbG9zZS5zdmdcIiBzaXplPVwiMjRcIiBzaXplVHlwZT1cInB4XCI+PC9saWItZWx1eC1pY29uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -939,11 +939,11 @@ class EluxToast {
939
939
  this.toasterService.removeToast(toast.id);
940
940
  }
941
941
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EluxToast, deps: [{ token: ToasterService }], target: i0.ɵɵFactoryTarget.Component }); }
942
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: EluxToast, isStandalone: true, selector: "lib-elux-toaster", ngImport: i0, template: "<div class=\"elux-toast-container\">\n <div class=\"d-flex\" *ngFor=\"let toast of toasterService.toasts\" [ngClass]=\"['elux-toast-element', toast.type]\" (mouseenter)=\"pauseToast(toast)\" (mouseleave)=\"resumeToast(toast)\">\n <lib-elux-icon class=\"me-2\" [color]=\"toast.iconColor\" [icon]=\"toast.iconName\" size=\"20\" sizeType=\"px\"></lib-elux-icon>\n <div>\n {{ toast.message }}\n </div>\n <lib-elux-icon (click)=\"closeToast(toast)\" class=\"ms-auto cursor-pointer\" [color]=\"toast.iconColor\" icon=\"Close.svg\" size=\"24\" sizeType=\"px\"></lib-elux-icon>\n </div>\n</div>\n", styles: [".display{font-family:Electrolux Sans;font-size:48px;font-weight:700;line-height:56px}.heading-1{font-family:Electrolux Sans;font-size:34px;font-weight:700;line-height:40px}.heading-2{font-family:Electrolux Sans;font-size:28px;font-weight:600;line-height:32px}.heading-3{font-family:Electrolux Sans;font-size:20px;font-weight:600;line-height:24px}.subtitle-1{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:20px}.body{font-family:Electrolux Sans;font-size:16px;font-weight:400;line-height:21px}.caption{font-family:Electrolux Sans;font-size:14px;font-weight:400;line-height:normal}.links{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:normal;text-decoration-line:underline}@media screen and (max-width: 768px){.display{font-family:Electrolux Sans;font-size:40px;font-weight:700;line-height:46px}.heading-1{font-family:Electrolux Sans;font-size:28px;font-weight:600;line-height:32px}.heading-2{font-family:Electrolux Sans;font-size:24px;font-weight:600;line-height:28px}.heading-3{font-family:Electrolux Sans;font-size:20px;font-weight:600;line-height:24px}.subtitle-1{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:20px}.body{font-family:Electrolux Sans;font-size:16px;font-weight:400;line-height:21px}.caption{font-family:Electrolux Sans;font-size:14px;font-weight:400;line-height:normal}.links{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:normal;text-decoration-line:underline}}:host .elux-toast-container{position:fixed;top:80px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;z-index:20}@media (max-width: 768px){:host .elux-toast-container{width:90%}}:host .elux-toast-element{margin:10px 0;padding:10px;border-radius:5px;border:none;display:flex;animation:fadein .5s forwards;box-shadow:none}:host .cursor-pointer{cursor:pointer}:host .success{color:#0c5f29;background-color:#edf8f1}:host .error{color:#9c231c;background-color:#fff3f2}:host .warning{color:#b19459;background-color:#fff1d5}:host .info{color:#557cb3;background-color:#ddebff}@keyframes fadein{0%{opacity:0}to{opacity:1}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: EluxIcon, selector: "lib-elux-icon", inputs: ["color", "useSubscription", "icon", "description", "size", "height", "width", "sizeType"] }] }); }
942
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: EluxToast, isStandalone: true, selector: "lib-elux-toaster", ngImport: i0, template: "<div class=\"elux-toast-container\">\n <div class=\"d-flex\" *ngFor=\"let toast of toasterService.toasts\" [ngClass]=\"['elux-toast-element', toast.type]\" (mouseenter)=\"pauseToast(toast)\" (mouseleave)=\"resumeToast(toast)\">\n <lib-elux-icon class=\"me-2\" [color]=\"toast.iconColor\" [icon]=\"toast.iconName\" size=\"20\" sizeType=\"px\"></lib-elux-icon>\n <div [innerHTML]=\"toast.message\"></div>\n <lib-elux-icon (click)=\"closeToast(toast)\" class=\"ms-auto cursor-pointer\" [color]=\"toast.iconColor\" icon=\"Close.svg\" size=\"24\" sizeType=\"px\"></lib-elux-icon>\n </div>\n</div>\n", styles: [".display{font-family:Electrolux Sans;font-size:48px;font-weight:700;line-height:56px}.heading-1{font-family:Electrolux Sans;font-size:34px;font-weight:700;line-height:40px}.heading-2{font-family:Electrolux Sans;font-size:28px;font-weight:600;line-height:32px}.heading-3{font-family:Electrolux Sans;font-size:20px;font-weight:600;line-height:24px}.subtitle-1{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:20px}.body{font-family:Electrolux Sans;font-size:16px;font-weight:400;line-height:21px}.caption{font-family:Electrolux Sans;font-size:14px;font-weight:400;line-height:normal}.links{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:normal;text-decoration-line:underline}@media screen and (max-width: 768px){.display{font-family:Electrolux Sans;font-size:40px;font-weight:700;line-height:46px}.heading-1{font-family:Electrolux Sans;font-size:28px;font-weight:600;line-height:32px}.heading-2{font-family:Electrolux Sans;font-size:24px;font-weight:600;line-height:28px}.heading-3{font-family:Electrolux Sans;font-size:20px;font-weight:600;line-height:24px}.subtitle-1{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:20px}.body{font-family:Electrolux Sans;font-size:16px;font-weight:400;line-height:21px}.caption{font-family:Electrolux Sans;font-size:14px;font-weight:400;line-height:normal}.links{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:normal;text-decoration-line:underline}}:host .elux-toast-container{position:fixed;top:80px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;z-index:20}@media (max-width: 768px){:host .elux-toast-container{width:90%}}:host .elux-toast-element{margin:10px 0;padding:10px;border-radius:5px;border:none;display:flex;animation:fadein .5s forwards;box-shadow:none}:host .cursor-pointer{cursor:pointer}:host .success{color:#0c5f29;background-color:#edf8f1}:host .error{color:#9c231c;background-color:#fff3f2}:host .warning{color:#b19459;background-color:#fff1d5}:host .info{color:#557cb3;background-color:#ddebff}@keyframes fadein{0%{opacity:0}to{opacity:1}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: EluxIcon, selector: "lib-elux-icon", inputs: ["color", "useSubscription", "icon", "description", "size", "height", "width", "sizeType"] }] }); }
943
943
  }
944
944
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EluxToast, decorators: [{
945
945
  type: Component,
946
- args: [{ selector: 'lib-elux-toaster', standalone: true, imports: [CommonModule, EluxIcon], template: "<div class=\"elux-toast-container\">\n <div class=\"d-flex\" *ngFor=\"let toast of toasterService.toasts\" [ngClass]=\"['elux-toast-element', toast.type]\" (mouseenter)=\"pauseToast(toast)\" (mouseleave)=\"resumeToast(toast)\">\n <lib-elux-icon class=\"me-2\" [color]=\"toast.iconColor\" [icon]=\"toast.iconName\" size=\"20\" sizeType=\"px\"></lib-elux-icon>\n <div>\n {{ toast.message }}\n </div>\n <lib-elux-icon (click)=\"closeToast(toast)\" class=\"ms-auto cursor-pointer\" [color]=\"toast.iconColor\" icon=\"Close.svg\" size=\"24\" sizeType=\"px\"></lib-elux-icon>\n </div>\n</div>\n", styles: [".display{font-family:Electrolux Sans;font-size:48px;font-weight:700;line-height:56px}.heading-1{font-family:Electrolux Sans;font-size:34px;font-weight:700;line-height:40px}.heading-2{font-family:Electrolux Sans;font-size:28px;font-weight:600;line-height:32px}.heading-3{font-family:Electrolux Sans;font-size:20px;font-weight:600;line-height:24px}.subtitle-1{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:20px}.body{font-family:Electrolux Sans;font-size:16px;font-weight:400;line-height:21px}.caption{font-family:Electrolux Sans;font-size:14px;font-weight:400;line-height:normal}.links{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:normal;text-decoration-line:underline}@media screen and (max-width: 768px){.display{font-family:Electrolux Sans;font-size:40px;font-weight:700;line-height:46px}.heading-1{font-family:Electrolux Sans;font-size:28px;font-weight:600;line-height:32px}.heading-2{font-family:Electrolux Sans;font-size:24px;font-weight:600;line-height:28px}.heading-3{font-family:Electrolux Sans;font-size:20px;font-weight:600;line-height:24px}.subtitle-1{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:20px}.body{font-family:Electrolux Sans;font-size:16px;font-weight:400;line-height:21px}.caption{font-family:Electrolux Sans;font-size:14px;font-weight:400;line-height:normal}.links{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:normal;text-decoration-line:underline}}:host .elux-toast-container{position:fixed;top:80px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;z-index:20}@media (max-width: 768px){:host .elux-toast-container{width:90%}}:host .elux-toast-element{margin:10px 0;padding:10px;border-radius:5px;border:none;display:flex;animation:fadein .5s forwards;box-shadow:none}:host .cursor-pointer{cursor:pointer}:host .success{color:#0c5f29;background-color:#edf8f1}:host .error{color:#9c231c;background-color:#fff3f2}:host .warning{color:#b19459;background-color:#fff1d5}:host .info{color:#557cb3;background-color:#ddebff}@keyframes fadein{0%{opacity:0}to{opacity:1}}\n"] }]
946
+ args: [{ selector: 'lib-elux-toaster', standalone: true, imports: [CommonModule, EluxIcon], template: "<div class=\"elux-toast-container\">\n <div class=\"d-flex\" *ngFor=\"let toast of toasterService.toasts\" [ngClass]=\"['elux-toast-element', toast.type]\" (mouseenter)=\"pauseToast(toast)\" (mouseleave)=\"resumeToast(toast)\">\n <lib-elux-icon class=\"me-2\" [color]=\"toast.iconColor\" [icon]=\"toast.iconName\" size=\"20\" sizeType=\"px\"></lib-elux-icon>\n <div [innerHTML]=\"toast.message\"></div>\n <lib-elux-icon (click)=\"closeToast(toast)\" class=\"ms-auto cursor-pointer\" [color]=\"toast.iconColor\" icon=\"Close.svg\" size=\"24\" sizeType=\"px\"></lib-elux-icon>\n </div>\n</div>\n", styles: [".display{font-family:Electrolux Sans;font-size:48px;font-weight:700;line-height:56px}.heading-1{font-family:Electrolux Sans;font-size:34px;font-weight:700;line-height:40px}.heading-2{font-family:Electrolux Sans;font-size:28px;font-weight:600;line-height:32px}.heading-3{font-family:Electrolux Sans;font-size:20px;font-weight:600;line-height:24px}.subtitle-1{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:20px}.body{font-family:Electrolux Sans;font-size:16px;font-weight:400;line-height:21px}.caption{font-family:Electrolux Sans;font-size:14px;font-weight:400;line-height:normal}.links{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:normal;text-decoration-line:underline}@media screen and (max-width: 768px){.display{font-family:Electrolux Sans;font-size:40px;font-weight:700;line-height:46px}.heading-1{font-family:Electrolux Sans;font-size:28px;font-weight:600;line-height:32px}.heading-2{font-family:Electrolux Sans;font-size:24px;font-weight:600;line-height:28px}.heading-3{font-family:Electrolux Sans;font-size:20px;font-weight:600;line-height:24px}.subtitle-1{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:20px}.body{font-family:Electrolux Sans;font-size:16px;font-weight:400;line-height:21px}.caption{font-family:Electrolux Sans;font-size:14px;font-weight:400;line-height:normal}.links{font-family:Electrolux Sans;font-size:16px;font-weight:600;line-height:normal;text-decoration-line:underline}}:host .elux-toast-container{position:fixed;top:80px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;z-index:20}@media (max-width: 768px){:host .elux-toast-container{width:90%}}:host .elux-toast-element{margin:10px 0;padding:10px;border-radius:5px;border:none;display:flex;animation:fadein .5s forwards;box-shadow:none}:host .cursor-pointer{cursor:pointer}:host .success{color:#0c5f29;background-color:#edf8f1}:host .error{color:#9c231c;background-color:#fff3f2}:host .warning{color:#b19459;background-color:#fff1d5}:host .info{color:#557cb3;background-color:#ddebff}@keyframes fadein{0%{opacity:0}to{opacity:1}}\n"] }]
947
947
  }], ctorParameters: () => [{ type: ToasterService }] });
948
948
 
949
949
  class EluxDataTable {
@@ -2279,11 +2279,11 @@ class EluxCarouselFixedComponent {
2279
2279
  this.updateTransform();
2280
2280
  }
2281
2281
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EluxCarouselFixedComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
2282
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: EluxCarouselFixedComponent, isStandalone: true, selector: "lib-elux-carousel-fixed", inputs: { itemWidth: "itemWidth", gap: "gap", showArrows: "showArrows", showDots: "showDots" }, outputs: { previousClickEventEmitter: "previousClickEventEmitter", nextClickEventEmitter: "nextClickEventEmitter" }, queries: [{ propertyName: "items", predicate: ["carouselItem"], read: ElementRef }], viewQueries: [{ propertyName: "slidesContainer", first: true, predicate: ["slidesContainer"], descendants: true }, { propertyName: "rightBleedContainer", first: true, predicate: ["rightBleedContainer"], descendants: true }], ngImport: i0, template: "<div class=\"c-carousel-fixed-container\" #rightBleedContainer>\n <div \n class=\"c-carousel-fixed-slides\" \n #slidesContainer\n [style.transform]=\"'translateX(' + translateX + 'px)'\" \n (mousedown)=\"onMouseDown($event)\"\n (mousemove)=\"onMouseMove($event)\"\n (mouseup)=\"onMouseUp($event)\"\n (mouseleave)=\"onMouseLeave($event)\"\n (touchstart)=\"onTouchStart($event)\" \n (touchmove)=\"onTouchMove($event)\" \n (touchend)=\"onTouchEnd($event)\">\n <ng-content></ng-content>\n </div>\n</div>\n<div class=\"c-carousel-fixed-footer\" *ngIf=\"showArrows || showDots\">\n <button *ngIf=\"showArrows\"\n class=\"c-carousel-fixed-nav prev\" \n [disabled]=\"!canGoPrevious()\"\n title=\"Item anterior\" \n aria-label=\"Item anterior\" \n (click)=\"prevItem()\">\n <lib-elux-icon [icon]=\"'Chevron_Left.svg'\" [size]=\"'16'\" [sizeType]=\"'px'\" [color]=\"'#020F2E'\"></lib-elux-icon>\n </button>\n\n <div class=\"c-carousel-fixed-dots\" *ngIf=\"showDots\">\n <ng-container *ngFor=\"let dot of getDotsArray(); let idx = index\">\n <span \n class=\"c-carousel-fixed-dot\" \n [class.active]=\"idx === getCurrentDotIndex()\" \n (click)=\"goToDot(idx)\">\n </span>\n </ng-container>\n </div>\n\n <button *ngIf=\"showArrows\"\n class=\"c-carousel-fixed-nav next\" \n [disabled]=\"!canGoNext()\"\n title=\"Pr\u00F3ximo item\" \n aria-label=\"Pr\u00F3ximo item\" \n (click)=\"nextItem()\">\n <lib-elux-icon [icon]=\"'Chevron_Right.svg'\" [size]=\"'16'\" [sizeType]=\"'px'\" [color]=\"'#020F2E'\"></lib-elux-icon>\n </button>\n</div>\n", styles: [".c-carousel-fixed-container{overflow-x:hidden;width:calc(100vw - var(--left-offset, 0px) - var(--scrollbar-width, 0px))}.c-carousel-fixed-slides{display:flex;transition:transform .5s ease-out;touch-action:pan-y;cursor:grab;will-change:transform}.c-carousel-fixed-slides:active{cursor:grabbing}.c-carousel-fixed-footer{display:flex;justify-content:space-between;padding:16px}.c-carousel-fixed-footer .c-carousel-fixed-nav{background:none;border:none;cursor:pointer;padding:8px;border-radius:50px;background-color:#dfe7ea;transition:all ease-in-out .2s;z-index:2}.c-carousel-fixed-footer .c-carousel-fixed-nav:hover:not(:disabled){transform:scale(1.2)}.c-carousel-fixed-footer .c-carousel-fixed-nav:disabled{opacity:.3;cursor:not-allowed}.c-carousel-fixed-footer .c-carousel-fixed-nav:disabled:hover{transform:none}.c-carousel-fixed-footer .c-carousel-fixed-nav ::ng-deep span{display:block}.c-carousel-fixed-footer .c-carousel-fixed-dots{display:flex;align-items:center;gap:8px;margin:0 16px}.c-carousel-fixed-footer .c-carousel-fixed-dots .c-carousel-fixed-dot{width:10px;height:10px;border-radius:50%;background:#dfe7ea;transition:background .3s;cursor:pointer;display:inline-block}.c-carousel-fixed-footer .c-carousel-fixed-dots .c-carousel-fixed-dot.active{background:#011e41}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { 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: EluxIcon, selector: "lib-elux-icon", inputs: ["color", "useSubscription", "icon", "description", "size", "height", "width", "sizeType"] }] }); }
2282
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: EluxCarouselFixedComponent, isStandalone: true, selector: "lib-elux-carousel-fixed", inputs: { itemWidth: "itemWidth", gap: "gap", showArrows: "showArrows", showDots: "showDots" }, outputs: { previousClickEventEmitter: "previousClickEventEmitter", nextClickEventEmitter: "nextClickEventEmitter" }, queries: [{ propertyName: "items", predicate: ["carouselItem"], read: ElementRef }], viewQueries: [{ propertyName: "slidesContainer", first: true, predicate: ["slidesContainer"], descendants: true }, { propertyName: "rightBleedContainer", first: true, predicate: ["rightBleedContainer"], descendants: true }], ngImport: i0, template: "<div class=\"c-carousel-fixed-container\" #rightBleedContainer>\n <div \n class=\"c-carousel-fixed-slides\" \n #slidesContainer\n [style.transform]=\"'translateX(' + translateX + 'px)'\" \n (mousedown)=\"onMouseDown($event)\"\n (mousemove)=\"onMouseMove($event)\"\n (mouseup)=\"onMouseUp($event)\"\n (mouseleave)=\"onMouseLeave($event)\"\n (touchstart)=\"onTouchStart($event)\" \n (touchmove)=\"onTouchMove($event)\" \n (touchend)=\"onTouchEnd($event)\">\n <ng-content></ng-content>\n </div>\n</div>\n<div class=\"c-carousel-fixed-footer\" *ngIf=\"showArrows || showDots\">\n <button *ngIf=\"showArrows && getDotsArray().length > 1\"\n class=\"c-carousel-fixed-nav prev\" \n [disabled]=\"!canGoPrevious()\"\n title=\"Item anterior\" \n aria-label=\"Item anterior\" \n (click)=\"prevItem()\">\n <lib-elux-icon [icon]=\"'Chevron_Left.svg'\" [size]=\"'16'\" [sizeType]=\"'px'\" [color]=\"'#020F2E'\"></lib-elux-icon>\n </button>\n\n <div class=\"c-carousel-fixed-dots\" *ngIf=\"showDots && getDotsArray().length > 1\">\n <ng-container *ngFor=\"let dot of getDotsArray(); let idx = index\">\n <span \n class=\"c-carousel-fixed-dot\" \n [class.active]=\"idx === getCurrentDotIndex()\" \n (click)=\"goToDot(idx)\">\n </span>\n </ng-container>\n </div>\n\n <button *ngIf=\"showArrows && getDotsArray().length > 1\"\n class=\"c-carousel-fixed-nav next\" \n [disabled]=\"!canGoNext()\"\n title=\"Pr\u00F3ximo item\" \n aria-label=\"Pr\u00F3ximo item\" \n (click)=\"nextItem()\">\n <lib-elux-icon [icon]=\"'Chevron_Right.svg'\" [size]=\"'16'\" [sizeType]=\"'px'\" [color]=\"'#020F2E'\"></lib-elux-icon>\n </button>\n</div>\n", styles: [".c-carousel-fixed-container{overflow-x:hidden;width:calc(100vw - var(--left-offset, 0px) - var(--scrollbar-width, 0px))}.c-carousel-fixed-slides{display:flex;transition:transform .5s ease-out;touch-action:pan-y;cursor:grab;will-change:transform}.c-carousel-fixed-slides:active{cursor:grabbing}.c-carousel-fixed-footer{display:flex;justify-content:space-between;padding:16px}.c-carousel-fixed-footer .c-carousel-fixed-nav{background:none;border:none;cursor:pointer;padding:8px;border-radius:50px;background-color:#dfe7ea;transition:all ease-in-out .2s;z-index:2}.c-carousel-fixed-footer .c-carousel-fixed-nav:hover:not(:disabled){transform:scale(1.2)}.c-carousel-fixed-footer .c-carousel-fixed-nav:disabled{opacity:.3;cursor:not-allowed}.c-carousel-fixed-footer .c-carousel-fixed-nav:disabled:hover{transform:none}.c-carousel-fixed-footer .c-carousel-fixed-nav ::ng-deep span{display:block}.c-carousel-fixed-footer .c-carousel-fixed-dots{display:flex;align-items:center;gap:8px;margin:0 16px}.c-carousel-fixed-footer .c-carousel-fixed-dots .c-carousel-fixed-dot{width:10px;height:10px;border-radius:50%;background:#dfe7ea;transition:background .3s;cursor:pointer;display:inline-block}.c-carousel-fixed-footer .c-carousel-fixed-dots .c-carousel-fixed-dot.active{background:#011e41}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { 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: EluxIcon, selector: "lib-elux-icon", inputs: ["color", "useSubscription", "icon", "description", "size", "height", "width", "sizeType"] }] }); }
2283
2283
  }
2284
2284
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EluxCarouselFixedComponent, decorators: [{
2285
2285
  type: Component,
2286
- args: [{ standalone: true, selector: 'lib-elux-carousel-fixed', imports: [CommonModule, EluxIcon], template: "<div class=\"c-carousel-fixed-container\" #rightBleedContainer>\n <div \n class=\"c-carousel-fixed-slides\" \n #slidesContainer\n [style.transform]=\"'translateX(' + translateX + 'px)'\" \n (mousedown)=\"onMouseDown($event)\"\n (mousemove)=\"onMouseMove($event)\"\n (mouseup)=\"onMouseUp($event)\"\n (mouseleave)=\"onMouseLeave($event)\"\n (touchstart)=\"onTouchStart($event)\" \n (touchmove)=\"onTouchMove($event)\" \n (touchend)=\"onTouchEnd($event)\">\n <ng-content></ng-content>\n </div>\n</div>\n<div class=\"c-carousel-fixed-footer\" *ngIf=\"showArrows || showDots\">\n <button *ngIf=\"showArrows\"\n class=\"c-carousel-fixed-nav prev\" \n [disabled]=\"!canGoPrevious()\"\n title=\"Item anterior\" \n aria-label=\"Item anterior\" \n (click)=\"prevItem()\">\n <lib-elux-icon [icon]=\"'Chevron_Left.svg'\" [size]=\"'16'\" [sizeType]=\"'px'\" [color]=\"'#020F2E'\"></lib-elux-icon>\n </button>\n\n <div class=\"c-carousel-fixed-dots\" *ngIf=\"showDots\">\n <ng-container *ngFor=\"let dot of getDotsArray(); let idx = index\">\n <span \n class=\"c-carousel-fixed-dot\" \n [class.active]=\"idx === getCurrentDotIndex()\" \n (click)=\"goToDot(idx)\">\n </span>\n </ng-container>\n </div>\n\n <button *ngIf=\"showArrows\"\n class=\"c-carousel-fixed-nav next\" \n [disabled]=\"!canGoNext()\"\n title=\"Pr\u00F3ximo item\" \n aria-label=\"Pr\u00F3ximo item\" \n (click)=\"nextItem()\">\n <lib-elux-icon [icon]=\"'Chevron_Right.svg'\" [size]=\"'16'\" [sizeType]=\"'px'\" [color]=\"'#020F2E'\"></lib-elux-icon>\n </button>\n</div>\n", styles: [".c-carousel-fixed-container{overflow-x:hidden;width:calc(100vw - var(--left-offset, 0px) - var(--scrollbar-width, 0px))}.c-carousel-fixed-slides{display:flex;transition:transform .5s ease-out;touch-action:pan-y;cursor:grab;will-change:transform}.c-carousel-fixed-slides:active{cursor:grabbing}.c-carousel-fixed-footer{display:flex;justify-content:space-between;padding:16px}.c-carousel-fixed-footer .c-carousel-fixed-nav{background:none;border:none;cursor:pointer;padding:8px;border-radius:50px;background-color:#dfe7ea;transition:all ease-in-out .2s;z-index:2}.c-carousel-fixed-footer .c-carousel-fixed-nav:hover:not(:disabled){transform:scale(1.2)}.c-carousel-fixed-footer .c-carousel-fixed-nav:disabled{opacity:.3;cursor:not-allowed}.c-carousel-fixed-footer .c-carousel-fixed-nav:disabled:hover{transform:none}.c-carousel-fixed-footer .c-carousel-fixed-nav ::ng-deep span{display:block}.c-carousel-fixed-footer .c-carousel-fixed-dots{display:flex;align-items:center;gap:8px;margin:0 16px}.c-carousel-fixed-footer .c-carousel-fixed-dots .c-carousel-fixed-dot{width:10px;height:10px;border-radius:50%;background:#dfe7ea;transition:background .3s;cursor:pointer;display:inline-block}.c-carousel-fixed-footer .c-carousel-fixed-dots .c-carousel-fixed-dot.active{background:#011e41}\n"] }]
2286
+ args: [{ standalone: true, selector: 'lib-elux-carousel-fixed', imports: [CommonModule, EluxIcon], template: "<div class=\"c-carousel-fixed-container\" #rightBleedContainer>\n <div \n class=\"c-carousel-fixed-slides\" \n #slidesContainer\n [style.transform]=\"'translateX(' + translateX + 'px)'\" \n (mousedown)=\"onMouseDown($event)\"\n (mousemove)=\"onMouseMove($event)\"\n (mouseup)=\"onMouseUp($event)\"\n (mouseleave)=\"onMouseLeave($event)\"\n (touchstart)=\"onTouchStart($event)\" \n (touchmove)=\"onTouchMove($event)\" \n (touchend)=\"onTouchEnd($event)\">\n <ng-content></ng-content>\n </div>\n</div>\n<div class=\"c-carousel-fixed-footer\" *ngIf=\"showArrows || showDots\">\n <button *ngIf=\"showArrows && getDotsArray().length > 1\"\n class=\"c-carousel-fixed-nav prev\" \n [disabled]=\"!canGoPrevious()\"\n title=\"Item anterior\" \n aria-label=\"Item anterior\" \n (click)=\"prevItem()\">\n <lib-elux-icon [icon]=\"'Chevron_Left.svg'\" [size]=\"'16'\" [sizeType]=\"'px'\" [color]=\"'#020F2E'\"></lib-elux-icon>\n </button>\n\n <div class=\"c-carousel-fixed-dots\" *ngIf=\"showDots && getDotsArray().length > 1\">\n <ng-container *ngFor=\"let dot of getDotsArray(); let idx = index\">\n <span \n class=\"c-carousel-fixed-dot\" \n [class.active]=\"idx === getCurrentDotIndex()\" \n (click)=\"goToDot(idx)\">\n </span>\n </ng-container>\n </div>\n\n <button *ngIf=\"showArrows && getDotsArray().length > 1\"\n class=\"c-carousel-fixed-nav next\" \n [disabled]=\"!canGoNext()\"\n title=\"Pr\u00F3ximo item\" \n aria-label=\"Pr\u00F3ximo item\" \n (click)=\"nextItem()\">\n <lib-elux-icon [icon]=\"'Chevron_Right.svg'\" [size]=\"'16'\" [sizeType]=\"'px'\" [color]=\"'#020F2E'\"></lib-elux-icon>\n </button>\n</div>\n", styles: [".c-carousel-fixed-container{overflow-x:hidden;width:calc(100vw - var(--left-offset, 0px) - var(--scrollbar-width, 0px))}.c-carousel-fixed-slides{display:flex;transition:transform .5s ease-out;touch-action:pan-y;cursor:grab;will-change:transform}.c-carousel-fixed-slides:active{cursor:grabbing}.c-carousel-fixed-footer{display:flex;justify-content:space-between;padding:16px}.c-carousel-fixed-footer .c-carousel-fixed-nav{background:none;border:none;cursor:pointer;padding:8px;border-radius:50px;background-color:#dfe7ea;transition:all ease-in-out .2s;z-index:2}.c-carousel-fixed-footer .c-carousel-fixed-nav:hover:not(:disabled){transform:scale(1.2)}.c-carousel-fixed-footer .c-carousel-fixed-nav:disabled{opacity:.3;cursor:not-allowed}.c-carousel-fixed-footer .c-carousel-fixed-nav:disabled:hover{transform:none}.c-carousel-fixed-footer .c-carousel-fixed-nav ::ng-deep span{display:block}.c-carousel-fixed-footer .c-carousel-fixed-dots{display:flex;align-items:center;gap:8px;margin:0 16px}.c-carousel-fixed-footer .c-carousel-fixed-dots .c-carousel-fixed-dot{width:10px;height:10px;border-radius:50%;background:#dfe7ea;transition:background .3s;cursor:pointer;display:inline-block}.c-carousel-fixed-footer .c-carousel-fixed-dots .c-carousel-fixed-dot.active{background:#011e41}\n"] }]
2287
2287
  }], ctorParameters: () => [{ type: i0.Renderer2 }], propDecorators: { items: [{
2288
2288
  type: ContentChildren,
2289
2289
  args: ['carouselItem', { read: ElementRef }]