@sarasanalytics-com/design-system 0.0.127 → 0.0.129

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.
@@ -178,7 +178,7 @@ export class LeftNavComponent {
178
178
  });
179
179
  }
180
180
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: LeftNavComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
181
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: LeftNavComponent, isStandalone: true, selector: "sa-left-nav", inputs: { config: "config" }, outputs: { clickEvent: "clickEvent", hoverEvent: "hoverEvent", onEvent: "onEvent" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"sa-left-nav\" >\n\n <div class=\"sa-left-nav-container {{isMenuAttached() ? 'menu-attached' : ''}}\">\n <div class=\"sa-left-nav-logo\">\n <sa-icon (click)=\"onLogoClick($event, config?.logo)\" [matTooltip]=\"config?.logo?.tooltip\" [matTooltipPosition]=\"'right'\" [icon]=\"config?.logo?.icon\" [size]=\"config?.logo?.iconSize\"></sa-icon>\n </div>\n <div class=\"sa-left-nav-items-container\">\n @if(config && config?.items && !!config?.items?.length){\n <div class=\"sa-left-nav-items-group\">\n <ng-container *ngFor=\"let item of config?.items; let i = index\">\n <div class=\"sa-left-nav-items\">\n <div class=\"sa-left-nav-item\" [ngClass]=\"item.active ? 'active' : '' \"\n [saMenu]=\"item.menu\" (onEvent)=\"onEvent.emit($event)\"\n (onAttached)=\"onMenuAttached($event, 'nav', item, i)\" (onDetached)=\"onMenuDetached($event, 'nav', item, i)\"\n (click)=\"onNavItemClick(item, i, $event)\" (mouseenter)=\"onNavItemBlur(item,i,$event,tooltip)\"\n #tooltip=\"matTooltip\" [matTooltip]=\"item.tooltip\" matTooltipPosition=\"right\">\n\n <sa-icon class=\"sa-left-nav-item-icon\" [icon]=\"item.icon\" [size]=\"item.iconSize || '24'\" [color]=\"item.color || 'white'\"></sa-icon>\n <!-- <span>{{item.tooltip}}</span> -->\n <!-- <span class=\"sa-left-nav-item-icon\"\n [ngStyle]=\"{ 'background-image': 'url(' + item.icon_url + ')' }\"></span> -->\n </div>\n <p class=\"sa-icon-label\">{{item.iconLabel}}</p>\n </div>\n </ng-container>\n </div>\n }\n </div>\n <div class=\"sa-template-item-container\">\n @if(config && config.templateItems && !!config.templateItems.length){\n <div (click)=\"onTemplateItemClick($event, i, item)\" class=\"sa-template-item\" [ngClass]=\"item.className\" *ngFor=\"let item of config.templateItems; let i = index\">\n <sa-icon [matTooltip]=\"item.tooltip\" matTooltipPosition=\"right\" [icon]=\"item.icon\" [size]=\"item.iconSize || '24'\" [color]=\"item.color\"></sa-icon>\n </div>\n }\n </div>\n <div class=\"sa-left-nav-footer\">\n @if(config && config.footerItems && !!config.footerItems.length){\n <div class=\"sa-left-nav-footer-container\">\n <div class=\"sa-left-nav-footer-item\" [ngClass]=\"item.className\" *ngFor=\"let item of config.footerItems; let i = index\">\n <div class=\"footer-item-icon\" [ngClass]=\"item.active ? 'active' : '' \"\n (click)=\"onFooterItemClick(item, i, $event)\" (onEvent)=\"onEvent.emit($event)\"\n [saMenu]=\"item.menu\" (onAttached)=\"onMenuAttached($event, 'footer', item, i)\" (onDetached)=\"onMenuDetached($event, 'footer', item, i)\"\n (mouseenter)=\"onFooterItemBlur(item,i,$event,tooltip)\" #tooltip=\"matTooltip\"\n [matTooltip]=\"item.tooltip\" matTooltipPosition=\"right\">\n @if(item.type === 'AVATAR'){\n <!-- <span class=\"sa-left-nav-footer-name\">ET</span> -->\n <sa-avatar [altText]=\"item.altText\" [imagePath]=\"''\" size=\"extra-small\"></sa-avatar>\n }@else{\n <sa-icon class=\"sa-left-nav-footer-icon\" [icon]=\"item.icon\" size=\"24\" color=\"white\"></sa-icon>\n <!-- <span class=\"sa-left-nav-footer-icon\"\n [ngStyle]=\"{ 'background-image': 'url(' + item.icon_url || '' + ')' }\"></span> -->\n }\n </div>\n <p class=\"sa-icon-label\">{{item.iconLabel}}</p>\n </div>\n </div>\n }\n </div>\n </div>\n\n <div class=\"sa-left-nav-content\">\n <ng-content></ng-content>\n </div>\n\n</div>", styles: [".sa-left-nav{height:calc(100vh - 16px);padding:8px;display:flex}.sa-left-nav-logo{display:flex;align-items:center;justify-content:center;width:40px;margin:auto;padding:5px 0;border-bottom:1px #fff solid;min-height:48px}.sa-logo{height:40px;width:20px;display:block;margin:auto;background-position:center;background:url('data:image/svg+xml,<svg width=\"20\" height=\"38\" viewBox=\"0 0 20 38\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15.554 13.549c-.05 0-.101 0-.152-.003v.003s-.541-.013-2.395-.024c-3.047-.026-4.175 1.237-4.532 1.816H8.47c-.26.49-.332 1.061-.202 1.603l-.004.01c.02.13.303 1.624 2.762 1.573 1.971-.042 3.15-.165 3.626-.225a3.881 3.881 0 0 1 1.815.004c.596.145 1.152.43 1.623.831.472.402.846.91 1.093 1.484a4.156 4.156 0 0 1-.158 3.617 4.037 4.037 0 0 1-1.22 1.377 3.883 3.883 0 0 1-3.498.516c-.29-.068-.68-.169-1.207-.315-3.167-.789-4.906 4.081-4.906 4.081l-.006.005a4.069 4.069 0 0 1-1.244 1.785 3.926 3.926 0 0 1-1.968.866 3.888 3.888 0 0 1-2.12-.307c-.667-.3-1.24-.78-1.658-1.39a4.153 4.153 0 0 1-.273-4.216 4.033 4.033 0 0 1 1.463-1.6 3.904 3.904 0 0 1 2.408-.576c.44-.004 1.353 0 3.19.032 3.136.057 3.556-1.442 3.596-2.056 0-.058-.003-.116-.003-.173v-.083a2.288 2.288 0 0 0-.448-1.238 2.204 2.204 0 0 0-1.048-.768c-1.543-.684-5.413-.377-5.413-.377v-.005a3.893 3.893 0 0 1-1.805-.345 3.978 3.978 0 0 1-1.33-.985 4.093 4.093 0 0 1-.829-1.453 4.162 4.162 0 0 1 .308-3.277 4.04 4.04 0 0 1 1.084-1.264c.443-.34.95-.58 1.49-.707a3.882 3.882 0 0 1 1.643-.03c1.257.082 2.52.034 3.768-.144 2.02-.254 2.48-1.434 2.58-2.079V9.48c0-.805.233-1.592.67-2.261a3.996 3.996 0 0 1 1.782-1.5 3.886 3.886 0 0 1 2.296-.23c.77.156 1.478.544 2.034 1.113.556.57.934 1.294 1.087 2.084.154.789.075 1.607-.226 2.35a4.05 4.05 0 0 1-1.463 1.827 3.906 3.906 0 0 1-2.207.686h.003ZM4.476 9.043a3.906 3.906 0 0 1-2.207-.686A4.05 4.05 0 0 1 .806 6.531 4.161 4.161 0 0 1 .58 4.18a4.1 4.1 0 0 1 1.087-2.084A3.945 3.945 0 0 1 3.7.982a3.885 3.885 0 0 1 2.295.232c.726.308 1.347.83 1.783 1.499.437.67.67 1.456.67 2.26a4.12 4.12 0 0 1-1.164 2.878 3.926 3.926 0 0 1-2.809 1.192Z\" fill=\"%23fff\"/><path d=\"M15.531 37.095c2.194 0 3.973-1.822 3.973-4.07 0-2.246-1.779-4.068-3.973-4.068s-3.972 1.822-3.972 4.069 1.779 4.069 3.972 4.069Z\" fill=\"%23fff\"/></svg>') no-repeat}.sa-left-nav-container{height:inherit;width:64px;background-color:var(--primary-800, #42307D);border-radius:var(--small-8px, 8px) var(--small-8px, 8px);padding:16px 6px;box-sizing:border-box;display:flex;flex-direction:column;justify-content:space-evenly}.sa-left-nav-container.menu-attached{border-radius:var(--small-8px, 8px) 0 0 var(--small-8px, 8px)}.sa-left-nav-items{flex:1;overflow-y:auto}.sa-left-nav-items-container{padding:var(--medium-28px) 0;height:100%;overflow:auto;box-sizing:border-box}.sa-left-nav-items-group{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:var(--small-8px, 8px);align-self:stretch}.sa-left-nav-items{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:0;align-self:stretch}.sa-left-nav-item,.sa-left-nav-footer-item .footer-item-icon{height:40px;width:40px;margin:0 auto;cursor:pointer;border-radius:4px;display:flex;flex-direction:column;justify-content:center;align-items:center}.sa-icon-label{color:var(--icon-white,#fff);font-size:var(--small-10px,10px);text-align:center;margin:0}::-webkit-scrollbar{display:none}.sa-left-nav-footer-item{margin:0 auto;gap:0;display:flex;flex-direction:column;align-items:center}.sa-left-nav-item:hover,.sa-left-nav-item.active,.sa-left-nav-footer-item .footer-item-icon.active,.sa-left-nav-footer-item .footer-item-icon:hover{background-color:var(--primary-500)}.sa-left-nav-item-name,.sa-left-nav-item-icon,.sa-left-nav-footer-icon,.sa-left-nav-footer-name{height:24px;width:24px;display:block}.sa-left-nav-item-name,mn.sa-left-nav-footer-name{display:flex;justify-content:center;align-items:center}.sa-left-nav-footer{min-height:fit-content;border-top:1px solid #fff}.sa-left-nav-content{width:calc(100% - 64px)}.sa-template-item-container{margin-bottom:.8rem;display:flex;justify-content:center}.sa-left-nav-footer-container{display:flex;flex-direction:column;align-items:center;gap:var(--small-16px, 16px);align-self:stretch;margin-top:var(--small-16px, 16px)}.sa-template-item-container{display:flex;flex-direction:column;align-items:center;gap:var(--small-8px, 8px)}\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: AvatarComponent, selector: "sa-avatar", inputs: ["id", "imagePath", "altText", "size"], outputs: ["onClickEvent", "onMouseInEvent", "onMouseOutEvent"] }, { kind: "component", type: IconComponent, selector: "sa-icon", inputs: ["img", "icon", "size", "color", "iconPath", "iconUrl", "customClass", "href", "hrefTarget"], outputs: ["onClickEvent"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: MenuDirective, selector: "[saMenu]", inputs: ["saMenuRef", "saMenu", "saManuPosition"], outputs: ["onMenuEvent", "onEvent", "onAttached", "onDetached"] }] }); }
181
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: LeftNavComponent, isStandalone: true, selector: "sa-left-nav", inputs: { config: "config" }, outputs: { clickEvent: "clickEvent", hoverEvent: "hoverEvent", onEvent: "onEvent" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"sa-left-nav\" >\n\n <div class=\"sa-left-nav-container {{isMenuAttached() ? 'menu-attached' : ''}}\">\n <div class=\"sa-left-nav-logo\">\n <sa-icon (click)=\"onLogoClick($event, config?.logo)\" [matTooltip]=\"config?.logo?.tooltip\" [matTooltipPosition]=\"'right'\" matTooltipClass=\"sa-left-nav-tooltip\" [icon]=\"config?.logo?.icon\" [size]=\"config?.logo?.iconSize\"></sa-icon>\n </div>\n <div class=\"sa-left-nav-items-container\">\n @if(config && config?.items && !!config?.items?.length){\n <div class=\"sa-left-nav-items-group\">\n <ng-container *ngFor=\"let item of config?.items; let i = index\">\n <div class=\"sa-left-nav-items\">\n <div class=\"sa-left-nav-item\" [ngClass]=\"item.active ? 'active' : '' \"\n [saMenu]=\"item.menu\" (onEvent)=\"onEvent.emit($event)\"\n (onAttached)=\"onMenuAttached($event, 'nav', item, i)\" (onDetached)=\"onMenuDetached($event, 'nav', item, i)\"\n (click)=\"onNavItemClick(item, i, $event)\" (mouseenter)=\"onNavItemBlur(item,i,$event,tooltip)\"\n #tooltip=\"matTooltip\" [matTooltip]=\"item.tooltip\" matTooltipPosition=\"right\" matTooltipClass=\"sa-left-nav-tooltip\">\n\n <sa-icon class=\"sa-left-nav-item-icon\" [icon]=\"item.icon\" [size]=\"item.iconSize || '24'\" [color]=\"item.active ? item.color : 'var(--grey-200)'\"></sa-icon>\n <!-- <span>{{item.tooltip}}</span> -->\n <!-- <span class=\"sa-left-nav-item-icon\"\n [ngStyle]=\"{ 'background-image': 'url(' + item.icon_url + ')' }\"></span> -->\n </div>\n <p class=\"sa-icon-label\" [ngClass]=\"item.active ? 'active' : '' \">{{item.iconLabel}}</p>\n </div>\n </ng-container>\n </div>\n }\n </div>\n <div class=\"sa-template-item-container\">\n @if(config && config.templateItems && !!config.templateItems.length){\n <div (click)=\"onTemplateItemClick($event, i, item)\" class=\"sa-template-item\" [ngClass]=\"item.className\" *ngFor=\"let item of config.templateItems; let i = index\">\n <sa-icon [matTooltip]=\"item.tooltip\" matTooltipPosition=\"right\" matTooltipClass=\"sa-left-nav-tooltip sa-left-nav-template-tooltip\" [icon]=\"item.icon\" [size]=\"item.iconSize || '24'\" [color]=\"item.color\"></sa-icon>\n </div>\n }\n </div>\n <div class=\"sa-left-nav-footer\">\n @if(config && config.footerItems && !!config.footerItems.length){\n <div class=\"sa-left-nav-footer-container\">\n <div class=\"sa-left-nav-footer-item\" [ngClass]=\"item.className\" *ngFor=\"let item of config.footerItems; let i = index\">\n <div class=\"footer-item-icon\" [ngClass]=\"item.active ? 'active' : '' \"\n (click)=\"onFooterItemClick(item, i, $event)\" (onEvent)=\"onEvent.emit($event)\"\n [saMenu]=\"item.menu\" (onAttached)=\"onMenuAttached($event, 'footer', item, i)\" (onDetached)=\"onMenuDetached($event, 'footer', item, i)\"\n (mouseenter)=\"onFooterItemBlur(item,i,$event,tooltip)\" #tooltip=\"matTooltip\"\n [matTooltip]=\"item.tooltip\" matTooltipPosition=\"right\" matTooltipClass=\"sa-left-nav-tooltip\">\n @if(item.type === 'AVATAR'){\n <!-- <span class=\"sa-left-nav-footer-name\">ET</span> -->\n <sa-avatar [altText]=\"item.altText\" [imagePath]=\"''\" size=\"extra-small\"></sa-avatar>\n }@else{\n <sa-icon class=\"sa-left-nav-footer-icon\" [icon]=\"item.icon\" size=\"24\" color=\"white\"></sa-icon>\n <!-- <span clasi ss=\"sa-left-nav-footer-icon\"\n [ngStyle]=\"{ 'background-image': 'url(' + item.icon_url || '' + ')' }\"></span> -->\n }\n </div>\n <p class=\"sa-icon-label\" [ngClass]=\"item.active ? 'active' : '' \">{{item.iconLabel}}</p>\n </div>\n </div>\n }\n </div>\n </div>\n\n <div class=\"sa-left-nav-content\">\n <ng-content></ng-content>\n </div>\n\n</div>", styles: [".sa-left-nav{height:calc(100vh - 16px);padding:8px;display:flex}.sa-left-nav-logo{display:flex;align-items:center;justify-content:center;width:40px;margin:auto;padding:5px 0;border-bottom:1px #fff solid;min-height:48px}.sa-logo{height:40px;width:20px;display:block;margin:auto;background-position:center;background:url('data:image/svg+xml,<svg width=\"20\" height=\"38\" viewBox=\"0 0 20 38\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15.554 13.549c-.05 0-.101 0-.152-.003v.003s-.541-.013-2.395-.024c-3.047-.026-4.175 1.237-4.532 1.816H8.47c-.26.49-.332 1.061-.202 1.603l-.004.01c.02.13.303 1.624 2.762 1.573 1.971-.042 3.15-.165 3.626-.225a3.881 3.881 0 0 1 1.815.004c.596.145 1.152.43 1.623.831.472.402.846.91 1.093 1.484a4.156 4.156 0 0 1-.158 3.617 4.037 4.037 0 0 1-1.22 1.377 3.883 3.883 0 0 1-3.498.516c-.29-.068-.68-.169-1.207-.315-3.167-.789-4.906 4.081-4.906 4.081l-.006.005a4.069 4.069 0 0 1-1.244 1.785 3.926 3.926 0 0 1-1.968.866 3.888 3.888 0 0 1-2.12-.307c-.667-.3-1.24-.78-1.658-1.39a4.153 4.153 0 0 1-.273-4.216 4.033 4.033 0 0 1 1.463-1.6 3.904 3.904 0 0 1 2.408-.576c.44-.004 1.353 0 3.19.032 3.136.057 3.556-1.442 3.596-2.056 0-.058-.003-.116-.003-.173v-.083a2.288 2.288 0 0 0-.448-1.238 2.204 2.204 0 0 0-1.048-.768c-1.543-.684-5.413-.377-5.413-.377v-.005a3.893 3.893 0 0 1-1.805-.345 3.978 3.978 0 0 1-1.33-.985 4.093 4.093 0 0 1-.829-1.453 4.162 4.162 0 0 1 .308-3.277 4.04 4.04 0 0 1 1.084-1.264c.443-.34.95-.58 1.49-.707a3.882 3.882 0 0 1 1.643-.03c1.257.082 2.52.034 3.768-.144 2.02-.254 2.48-1.434 2.58-2.079V9.48c0-.805.233-1.592.67-2.261a3.996 3.996 0 0 1 1.782-1.5 3.886 3.886 0 0 1 2.296-.23c.77.156 1.478.544 2.034 1.113.556.57.934 1.294 1.087 2.084.154.789.075 1.607-.226 2.35a4.05 4.05 0 0 1-1.463 1.827 3.906 3.906 0 0 1-2.207.686h.003ZM4.476 9.043a3.906 3.906 0 0 1-2.207-.686A4.05 4.05 0 0 1 .806 6.531 4.161 4.161 0 0 1 .58 4.18a4.1 4.1 0 0 1 1.087-2.084A3.945 3.945 0 0 1 3.7.982a3.885 3.885 0 0 1 2.295.232c.726.308 1.347.83 1.783 1.499.437.67.67 1.456.67 2.26a4.12 4.12 0 0 1-1.164 2.878 3.926 3.926 0 0 1-2.809 1.192Z\" fill=\"%23fff\"/><path d=\"M15.531 37.095c2.194 0 3.973-1.822 3.973-4.07 0-2.246-1.779-4.068-3.973-4.068s-3.972 1.822-3.972 4.069 1.779 4.069 3.972 4.069Z\" fill=\"%23fff\"/></svg>') no-repeat}.sa-left-nav-container{height:inherit;width:64px;background-color:var(--primary-800, #42307D);border-radius:var(--small-8px, 8px) var(--small-8px, 8px);padding:16px 6px;box-sizing:border-box;display:flex;flex-direction:column;justify-content:space-evenly}.sa-left-nav-container.menu-attached{border-radius:var(--small-8px, 8px) 0 0 var(--small-8px, 8px)}.sa-left-nav-items{flex:1;overflow-y:auto}.sa-left-nav-items-container{padding:var(--medium-28px) 0;height:100%;overflow:auto;box-sizing:border-box}.sa-left-nav-items-group{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:var(--small-8px, 8px);align-self:stretch}.sa-left-nav-items{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:0;align-self:stretch}.sa-left-nav-item,.sa-left-nav-footer-item .footer-item-icon{height:40px;width:40px;margin:0 auto;cursor:pointer;border-radius:4px;display:flex;flex-direction:column;justify-content:center;align-items:center;transition:all .3s ease}.sa-icon-label{color:var(--grey-200);font-size:var(--small-10px,10px);text-align:center;margin:0}.sa-icon-label.active{color:var(--structural-white, #FFF);font-weight:500}::-webkit-scrollbar{display:none}.sa-left-nav-footer-item{margin:0 auto;gap:0;display:flex;flex-direction:column;align-items:center}.sa-left-nav-item:hover,.sa-left-nav-item.active,.sa-left-nav-footer-item .footer-item-icon.active,.sa-left-nav-footer-item .footer-item-icon:hover{background-color:var(--primary-500)}::ng-deep .sa-left-nav-item.active .sa-left-nav-item-icon .sa-icon{color:var(--structural-white, #FFF)}.sa-left-nav-item-name,.sa-left-nav-item-icon,.sa-left-nav-footer-icon,.sa-left-nav-footer-name{height:24px;width:24px;display:block}.sa-left-nav-item-name,mn.sa-left-nav-footer-name{display:flex;justify-content:center;align-items:center}.sa-left-nav-footer{min-height:fit-content;border-top:1px solid #fff}.sa-left-nav-content{width:calc(100% - 64px)}.sa-template-item-container{margin-bottom:.8rem;display:flex;justify-content:center}.sa-left-nav-footer-container{display:flex;flex-direction:column;align-items:center;gap:var(--small-16px, 16px);align-self:stretch;margin-top:var(--small-16px, 16px)}.sa-template-item-container{display:flex;flex-direction:column;align-items:center;gap:var(--small-8px, 8px)}::ng-deep .mat-mdc-tooltip-panel-right .sa-left-nav-tooltip{margin-left:8px!important}::ng-deep .sa-left-nav-template-tooltip.mat-mdc-tooltip{margin-left:16px!important}::ng-deep .sa-left-nav-tooltip.mat-mdc-tooltip{position:relative}::ng-deep .mat-mdc-tooltip-panel-right .sa-left-nav-tooltip.mat-mdc-tooltip:before{content:\"\";position:absolute;left:-6px;top:50%;transform:translateY(-50%);border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:6px solid var(--mdc-plain-tooltip-container-color, rgba(97, 97, 97, .9))}\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: AvatarComponent, selector: "sa-avatar", inputs: ["id", "imagePath", "altText", "size"], outputs: ["onClickEvent", "onMouseInEvent", "onMouseOutEvent"] }, { kind: "component", type: IconComponent, selector: "sa-icon", inputs: ["img", "icon", "size", "color", "iconPath", "iconUrl", "customClass", "href", "hrefTarget"], outputs: ["onClickEvent"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: MenuDirective, selector: "[saMenu]", inputs: ["saMenuRef", "saMenu", "saManuPosition"], outputs: ["onMenuEvent", "onEvent", "onAttached", "onDetached"] }] }); }
182
182
  }
183
183
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: LeftNavComponent, decorators: [{
184
184
  type: Component,
@@ -190,7 +190,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
190
190
  MenuDirective,
191
191
  SAMenuComponent,
192
192
  IconComponent
193
- ], template: "<div class=\"sa-left-nav\" >\n\n <div class=\"sa-left-nav-container {{isMenuAttached() ? 'menu-attached' : ''}}\">\n <div class=\"sa-left-nav-logo\">\n <sa-icon (click)=\"onLogoClick($event, config?.logo)\" [matTooltip]=\"config?.logo?.tooltip\" [matTooltipPosition]=\"'right'\" [icon]=\"config?.logo?.icon\" [size]=\"config?.logo?.iconSize\"></sa-icon>\n </div>\n <div class=\"sa-left-nav-items-container\">\n @if(config && config?.items && !!config?.items?.length){\n <div class=\"sa-left-nav-items-group\">\n <ng-container *ngFor=\"let item of config?.items; let i = index\">\n <div class=\"sa-left-nav-items\">\n <div class=\"sa-left-nav-item\" [ngClass]=\"item.active ? 'active' : '' \"\n [saMenu]=\"item.menu\" (onEvent)=\"onEvent.emit($event)\"\n (onAttached)=\"onMenuAttached($event, 'nav', item, i)\" (onDetached)=\"onMenuDetached($event, 'nav', item, i)\"\n (click)=\"onNavItemClick(item, i, $event)\" (mouseenter)=\"onNavItemBlur(item,i,$event,tooltip)\"\n #tooltip=\"matTooltip\" [matTooltip]=\"item.tooltip\" matTooltipPosition=\"right\">\n\n <sa-icon class=\"sa-left-nav-item-icon\" [icon]=\"item.icon\" [size]=\"item.iconSize || '24'\" [color]=\"item.color || 'white'\"></sa-icon>\n <!-- <span>{{item.tooltip}}</span> -->\n <!-- <span class=\"sa-left-nav-item-icon\"\n [ngStyle]=\"{ 'background-image': 'url(' + item.icon_url + ')' }\"></span> -->\n </div>\n <p class=\"sa-icon-label\">{{item.iconLabel}}</p>\n </div>\n </ng-container>\n </div>\n }\n </div>\n <div class=\"sa-template-item-container\">\n @if(config && config.templateItems && !!config.templateItems.length){\n <div (click)=\"onTemplateItemClick($event, i, item)\" class=\"sa-template-item\" [ngClass]=\"item.className\" *ngFor=\"let item of config.templateItems; let i = index\">\n <sa-icon [matTooltip]=\"item.tooltip\" matTooltipPosition=\"right\" [icon]=\"item.icon\" [size]=\"item.iconSize || '24'\" [color]=\"item.color\"></sa-icon>\n </div>\n }\n </div>\n <div class=\"sa-left-nav-footer\">\n @if(config && config.footerItems && !!config.footerItems.length){\n <div class=\"sa-left-nav-footer-container\">\n <div class=\"sa-left-nav-footer-item\" [ngClass]=\"item.className\" *ngFor=\"let item of config.footerItems; let i = index\">\n <div class=\"footer-item-icon\" [ngClass]=\"item.active ? 'active' : '' \"\n (click)=\"onFooterItemClick(item, i, $event)\" (onEvent)=\"onEvent.emit($event)\"\n [saMenu]=\"item.menu\" (onAttached)=\"onMenuAttached($event, 'footer', item, i)\" (onDetached)=\"onMenuDetached($event, 'footer', item, i)\"\n (mouseenter)=\"onFooterItemBlur(item,i,$event,tooltip)\" #tooltip=\"matTooltip\"\n [matTooltip]=\"item.tooltip\" matTooltipPosition=\"right\">\n @if(item.type === 'AVATAR'){\n <!-- <span class=\"sa-left-nav-footer-name\">ET</span> -->\n <sa-avatar [altText]=\"item.altText\" [imagePath]=\"''\" size=\"extra-small\"></sa-avatar>\n }@else{\n <sa-icon class=\"sa-left-nav-footer-icon\" [icon]=\"item.icon\" size=\"24\" color=\"white\"></sa-icon>\n <!-- <span class=\"sa-left-nav-footer-icon\"\n [ngStyle]=\"{ 'background-image': 'url(' + item.icon_url || '' + ')' }\"></span> -->\n }\n </div>\n <p class=\"sa-icon-label\">{{item.iconLabel}}</p>\n </div>\n </div>\n }\n </div>\n </div>\n\n <div class=\"sa-left-nav-content\">\n <ng-content></ng-content>\n </div>\n\n</div>", styles: [".sa-left-nav{height:calc(100vh - 16px);padding:8px;display:flex}.sa-left-nav-logo{display:flex;align-items:center;justify-content:center;width:40px;margin:auto;padding:5px 0;border-bottom:1px #fff solid;min-height:48px}.sa-logo{height:40px;width:20px;display:block;margin:auto;background-position:center;background:url('data:image/svg+xml,<svg width=\"20\" height=\"38\" viewBox=\"0 0 20 38\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15.554 13.549c-.05 0-.101 0-.152-.003v.003s-.541-.013-2.395-.024c-3.047-.026-4.175 1.237-4.532 1.816H8.47c-.26.49-.332 1.061-.202 1.603l-.004.01c.02.13.303 1.624 2.762 1.573 1.971-.042 3.15-.165 3.626-.225a3.881 3.881 0 0 1 1.815.004c.596.145 1.152.43 1.623.831.472.402.846.91 1.093 1.484a4.156 4.156 0 0 1-.158 3.617 4.037 4.037 0 0 1-1.22 1.377 3.883 3.883 0 0 1-3.498.516c-.29-.068-.68-.169-1.207-.315-3.167-.789-4.906 4.081-4.906 4.081l-.006.005a4.069 4.069 0 0 1-1.244 1.785 3.926 3.926 0 0 1-1.968.866 3.888 3.888 0 0 1-2.12-.307c-.667-.3-1.24-.78-1.658-1.39a4.153 4.153 0 0 1-.273-4.216 4.033 4.033 0 0 1 1.463-1.6 3.904 3.904 0 0 1 2.408-.576c.44-.004 1.353 0 3.19.032 3.136.057 3.556-1.442 3.596-2.056 0-.058-.003-.116-.003-.173v-.083a2.288 2.288 0 0 0-.448-1.238 2.204 2.204 0 0 0-1.048-.768c-1.543-.684-5.413-.377-5.413-.377v-.005a3.893 3.893 0 0 1-1.805-.345 3.978 3.978 0 0 1-1.33-.985 4.093 4.093 0 0 1-.829-1.453 4.162 4.162 0 0 1 .308-3.277 4.04 4.04 0 0 1 1.084-1.264c.443-.34.95-.58 1.49-.707a3.882 3.882 0 0 1 1.643-.03c1.257.082 2.52.034 3.768-.144 2.02-.254 2.48-1.434 2.58-2.079V9.48c0-.805.233-1.592.67-2.261a3.996 3.996 0 0 1 1.782-1.5 3.886 3.886 0 0 1 2.296-.23c.77.156 1.478.544 2.034 1.113.556.57.934 1.294 1.087 2.084.154.789.075 1.607-.226 2.35a4.05 4.05 0 0 1-1.463 1.827 3.906 3.906 0 0 1-2.207.686h.003ZM4.476 9.043a3.906 3.906 0 0 1-2.207-.686A4.05 4.05 0 0 1 .806 6.531 4.161 4.161 0 0 1 .58 4.18a4.1 4.1 0 0 1 1.087-2.084A3.945 3.945 0 0 1 3.7.982a3.885 3.885 0 0 1 2.295.232c.726.308 1.347.83 1.783 1.499.437.67.67 1.456.67 2.26a4.12 4.12 0 0 1-1.164 2.878 3.926 3.926 0 0 1-2.809 1.192Z\" fill=\"%23fff\"/><path d=\"M15.531 37.095c2.194 0 3.973-1.822 3.973-4.07 0-2.246-1.779-4.068-3.973-4.068s-3.972 1.822-3.972 4.069 1.779 4.069 3.972 4.069Z\" fill=\"%23fff\"/></svg>') no-repeat}.sa-left-nav-container{height:inherit;width:64px;background-color:var(--primary-800, #42307D);border-radius:var(--small-8px, 8px) var(--small-8px, 8px);padding:16px 6px;box-sizing:border-box;display:flex;flex-direction:column;justify-content:space-evenly}.sa-left-nav-container.menu-attached{border-radius:var(--small-8px, 8px) 0 0 var(--small-8px, 8px)}.sa-left-nav-items{flex:1;overflow-y:auto}.sa-left-nav-items-container{padding:var(--medium-28px) 0;height:100%;overflow:auto;box-sizing:border-box}.sa-left-nav-items-group{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:var(--small-8px, 8px);align-self:stretch}.sa-left-nav-items{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:0;align-self:stretch}.sa-left-nav-item,.sa-left-nav-footer-item .footer-item-icon{height:40px;width:40px;margin:0 auto;cursor:pointer;border-radius:4px;display:flex;flex-direction:column;justify-content:center;align-items:center}.sa-icon-label{color:var(--icon-white,#fff);font-size:var(--small-10px,10px);text-align:center;margin:0}::-webkit-scrollbar{display:none}.sa-left-nav-footer-item{margin:0 auto;gap:0;display:flex;flex-direction:column;align-items:center}.sa-left-nav-item:hover,.sa-left-nav-item.active,.sa-left-nav-footer-item .footer-item-icon.active,.sa-left-nav-footer-item .footer-item-icon:hover{background-color:var(--primary-500)}.sa-left-nav-item-name,.sa-left-nav-item-icon,.sa-left-nav-footer-icon,.sa-left-nav-footer-name{height:24px;width:24px;display:block}.sa-left-nav-item-name,mn.sa-left-nav-footer-name{display:flex;justify-content:center;align-items:center}.sa-left-nav-footer{min-height:fit-content;border-top:1px solid #fff}.sa-left-nav-content{width:calc(100% - 64px)}.sa-template-item-container{margin-bottom:.8rem;display:flex;justify-content:center}.sa-left-nav-footer-container{display:flex;flex-direction:column;align-items:center;gap:var(--small-16px, 16px);align-self:stretch;margin-top:var(--small-16px, 16px)}.sa-template-item-container{display:flex;flex-direction:column;align-items:center;gap:var(--small-8px, 8px)}\n"] }]
193
+ ], template: "<div class=\"sa-left-nav\" >\n\n <div class=\"sa-left-nav-container {{isMenuAttached() ? 'menu-attached' : ''}}\">\n <div class=\"sa-left-nav-logo\">\n <sa-icon (click)=\"onLogoClick($event, config?.logo)\" [matTooltip]=\"config?.logo?.tooltip\" [matTooltipPosition]=\"'right'\" matTooltipClass=\"sa-left-nav-tooltip\" [icon]=\"config?.logo?.icon\" [size]=\"config?.logo?.iconSize\"></sa-icon>\n </div>\n <div class=\"sa-left-nav-items-container\">\n @if(config && config?.items && !!config?.items?.length){\n <div class=\"sa-left-nav-items-group\">\n <ng-container *ngFor=\"let item of config?.items; let i = index\">\n <div class=\"sa-left-nav-items\">\n <div class=\"sa-left-nav-item\" [ngClass]=\"item.active ? 'active' : '' \"\n [saMenu]=\"item.menu\" (onEvent)=\"onEvent.emit($event)\"\n (onAttached)=\"onMenuAttached($event, 'nav', item, i)\" (onDetached)=\"onMenuDetached($event, 'nav', item, i)\"\n (click)=\"onNavItemClick(item, i, $event)\" (mouseenter)=\"onNavItemBlur(item,i,$event,tooltip)\"\n #tooltip=\"matTooltip\" [matTooltip]=\"item.tooltip\" matTooltipPosition=\"right\" matTooltipClass=\"sa-left-nav-tooltip\">\n\n <sa-icon class=\"sa-left-nav-item-icon\" [icon]=\"item.icon\" [size]=\"item.iconSize || '24'\" [color]=\"item.active ? item.color : 'var(--grey-200)'\"></sa-icon>\n <!-- <span>{{item.tooltip}}</span> -->\n <!-- <span class=\"sa-left-nav-item-icon\"\n [ngStyle]=\"{ 'background-image': 'url(' + item.icon_url + ')' }\"></span> -->\n </div>\n <p class=\"sa-icon-label\" [ngClass]=\"item.active ? 'active' : '' \">{{item.iconLabel}}</p>\n </div>\n </ng-container>\n </div>\n }\n </div>\n <div class=\"sa-template-item-container\">\n @if(config && config.templateItems && !!config.templateItems.length){\n <div (click)=\"onTemplateItemClick($event, i, item)\" class=\"sa-template-item\" [ngClass]=\"item.className\" *ngFor=\"let item of config.templateItems; let i = index\">\n <sa-icon [matTooltip]=\"item.tooltip\" matTooltipPosition=\"right\" matTooltipClass=\"sa-left-nav-tooltip sa-left-nav-template-tooltip\" [icon]=\"item.icon\" [size]=\"item.iconSize || '24'\" [color]=\"item.color\"></sa-icon>\n </div>\n }\n </div>\n <div class=\"sa-left-nav-footer\">\n @if(config && config.footerItems && !!config.footerItems.length){\n <div class=\"sa-left-nav-footer-container\">\n <div class=\"sa-left-nav-footer-item\" [ngClass]=\"item.className\" *ngFor=\"let item of config.footerItems; let i = index\">\n <div class=\"footer-item-icon\" [ngClass]=\"item.active ? 'active' : '' \"\n (click)=\"onFooterItemClick(item, i, $event)\" (onEvent)=\"onEvent.emit($event)\"\n [saMenu]=\"item.menu\" (onAttached)=\"onMenuAttached($event, 'footer', item, i)\" (onDetached)=\"onMenuDetached($event, 'footer', item, i)\"\n (mouseenter)=\"onFooterItemBlur(item,i,$event,tooltip)\" #tooltip=\"matTooltip\"\n [matTooltip]=\"item.tooltip\" matTooltipPosition=\"right\" matTooltipClass=\"sa-left-nav-tooltip\">\n @if(item.type === 'AVATAR'){\n <!-- <span class=\"sa-left-nav-footer-name\">ET</span> -->\n <sa-avatar [altText]=\"item.altText\" [imagePath]=\"''\" size=\"extra-small\"></sa-avatar>\n }@else{\n <sa-icon class=\"sa-left-nav-footer-icon\" [icon]=\"item.icon\" size=\"24\" color=\"white\"></sa-icon>\n <!-- <span clasi ss=\"sa-left-nav-footer-icon\"\n [ngStyle]=\"{ 'background-image': 'url(' + item.icon_url || '' + ')' }\"></span> -->\n }\n </div>\n <p class=\"sa-icon-label\" [ngClass]=\"item.active ? 'active' : '' \">{{item.iconLabel}}</p>\n </div>\n </div>\n }\n </div>\n </div>\n\n <div class=\"sa-left-nav-content\">\n <ng-content></ng-content>\n </div>\n\n</div>", styles: [".sa-left-nav{height:calc(100vh - 16px);padding:8px;display:flex}.sa-left-nav-logo{display:flex;align-items:center;justify-content:center;width:40px;margin:auto;padding:5px 0;border-bottom:1px #fff solid;min-height:48px}.sa-logo{height:40px;width:20px;display:block;margin:auto;background-position:center;background:url('data:image/svg+xml,<svg width=\"20\" height=\"38\" viewBox=\"0 0 20 38\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15.554 13.549c-.05 0-.101 0-.152-.003v.003s-.541-.013-2.395-.024c-3.047-.026-4.175 1.237-4.532 1.816H8.47c-.26.49-.332 1.061-.202 1.603l-.004.01c.02.13.303 1.624 2.762 1.573 1.971-.042 3.15-.165 3.626-.225a3.881 3.881 0 0 1 1.815.004c.596.145 1.152.43 1.623.831.472.402.846.91 1.093 1.484a4.156 4.156 0 0 1-.158 3.617 4.037 4.037 0 0 1-1.22 1.377 3.883 3.883 0 0 1-3.498.516c-.29-.068-.68-.169-1.207-.315-3.167-.789-4.906 4.081-4.906 4.081l-.006.005a4.069 4.069 0 0 1-1.244 1.785 3.926 3.926 0 0 1-1.968.866 3.888 3.888 0 0 1-2.12-.307c-.667-.3-1.24-.78-1.658-1.39a4.153 4.153 0 0 1-.273-4.216 4.033 4.033 0 0 1 1.463-1.6 3.904 3.904 0 0 1 2.408-.576c.44-.004 1.353 0 3.19.032 3.136.057 3.556-1.442 3.596-2.056 0-.058-.003-.116-.003-.173v-.083a2.288 2.288 0 0 0-.448-1.238 2.204 2.204 0 0 0-1.048-.768c-1.543-.684-5.413-.377-5.413-.377v-.005a3.893 3.893 0 0 1-1.805-.345 3.978 3.978 0 0 1-1.33-.985 4.093 4.093 0 0 1-.829-1.453 4.162 4.162 0 0 1 .308-3.277 4.04 4.04 0 0 1 1.084-1.264c.443-.34.95-.58 1.49-.707a3.882 3.882 0 0 1 1.643-.03c1.257.082 2.52.034 3.768-.144 2.02-.254 2.48-1.434 2.58-2.079V9.48c0-.805.233-1.592.67-2.261a3.996 3.996 0 0 1 1.782-1.5 3.886 3.886 0 0 1 2.296-.23c.77.156 1.478.544 2.034 1.113.556.57.934 1.294 1.087 2.084.154.789.075 1.607-.226 2.35a4.05 4.05 0 0 1-1.463 1.827 3.906 3.906 0 0 1-2.207.686h.003ZM4.476 9.043a3.906 3.906 0 0 1-2.207-.686A4.05 4.05 0 0 1 .806 6.531 4.161 4.161 0 0 1 .58 4.18a4.1 4.1 0 0 1 1.087-2.084A3.945 3.945 0 0 1 3.7.982a3.885 3.885 0 0 1 2.295.232c.726.308 1.347.83 1.783 1.499.437.67.67 1.456.67 2.26a4.12 4.12 0 0 1-1.164 2.878 3.926 3.926 0 0 1-2.809 1.192Z\" fill=\"%23fff\"/><path d=\"M15.531 37.095c2.194 0 3.973-1.822 3.973-4.07 0-2.246-1.779-4.068-3.973-4.068s-3.972 1.822-3.972 4.069 1.779 4.069 3.972 4.069Z\" fill=\"%23fff\"/></svg>') no-repeat}.sa-left-nav-container{height:inherit;width:64px;background-color:var(--primary-800, #42307D);border-radius:var(--small-8px, 8px) var(--small-8px, 8px);padding:16px 6px;box-sizing:border-box;display:flex;flex-direction:column;justify-content:space-evenly}.sa-left-nav-container.menu-attached{border-radius:var(--small-8px, 8px) 0 0 var(--small-8px, 8px)}.sa-left-nav-items{flex:1;overflow-y:auto}.sa-left-nav-items-container{padding:var(--medium-28px) 0;height:100%;overflow:auto;box-sizing:border-box}.sa-left-nav-items-group{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:var(--small-8px, 8px);align-self:stretch}.sa-left-nav-items{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:0;align-self:stretch}.sa-left-nav-item,.sa-left-nav-footer-item .footer-item-icon{height:40px;width:40px;margin:0 auto;cursor:pointer;border-radius:4px;display:flex;flex-direction:column;justify-content:center;align-items:center;transition:all .3s ease}.sa-icon-label{color:var(--grey-200);font-size:var(--small-10px,10px);text-align:center;margin:0}.sa-icon-label.active{color:var(--structural-white, #FFF);font-weight:500}::-webkit-scrollbar{display:none}.sa-left-nav-footer-item{margin:0 auto;gap:0;display:flex;flex-direction:column;align-items:center}.sa-left-nav-item:hover,.sa-left-nav-item.active,.sa-left-nav-footer-item .footer-item-icon.active,.sa-left-nav-footer-item .footer-item-icon:hover{background-color:var(--primary-500)}::ng-deep .sa-left-nav-item.active .sa-left-nav-item-icon .sa-icon{color:var(--structural-white, #FFF)}.sa-left-nav-item-name,.sa-left-nav-item-icon,.sa-left-nav-footer-icon,.sa-left-nav-footer-name{height:24px;width:24px;display:block}.sa-left-nav-item-name,mn.sa-left-nav-footer-name{display:flex;justify-content:center;align-items:center}.sa-left-nav-footer{min-height:fit-content;border-top:1px solid #fff}.sa-left-nav-content{width:calc(100% - 64px)}.sa-template-item-container{margin-bottom:.8rem;display:flex;justify-content:center}.sa-left-nav-footer-container{display:flex;flex-direction:column;align-items:center;gap:var(--small-16px, 16px);align-self:stretch;margin-top:var(--small-16px, 16px)}.sa-template-item-container{display:flex;flex-direction:column;align-items:center;gap:var(--small-8px, 8px)}::ng-deep .mat-mdc-tooltip-panel-right .sa-left-nav-tooltip{margin-left:8px!important}::ng-deep .sa-left-nav-template-tooltip.mat-mdc-tooltip{margin-left:16px!important}::ng-deep .sa-left-nav-tooltip.mat-mdc-tooltip{position:relative}::ng-deep .mat-mdc-tooltip-panel-right .sa-left-nav-tooltip.mat-mdc-tooltip:before{content:\"\";position:absolute;left:-6px;top:50%;transform:translateY(-50%);border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:6px solid var(--mdc-plain-tooltip-container-color, rgba(97, 97, 97, .9))}\n"] }]
194
194
  }], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i1.Router }], propDecorators: { config: [{
195
195
  type: Input,
196
196
  args: ['config']
@@ -244,4 +244,4 @@ const data = {
244
244
  tooltip: ''
245
245
  }]
246
246
  };
247
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVmdC1uYXYuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50LWxpYnJhcnkvc3JjL2xpYi9sZWZ0LW5hdi9sZWZ0LW5hdi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2xlZnQtbmF2L2xlZnQtbmF2LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBa0IsS0FBSyxFQUFhLE1BQU0sRUFBRSxNQUFNLEVBQXVDLE1BQU0sZUFBZSxDQUFDO0FBRTNKLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsZ0VBQWdFO0FBRWhFLE9BQU8sRUFFTCxnQkFBZ0IsRUFDakIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7OztBQWtCekQsTUFBTSxPQUFPLGdCQUFnQjtJQWlCM0IsWUFBb0IsS0FBcUIsRUFBVSxNQUFjO1FBQTdDLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQWZqRSx1REFBdUQ7UUFDdkQsbUJBQWMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFL0IscUNBQXFDO1FBQzdCLHNCQUFpQixHQUF5RCxJQUFJLENBQUM7UUFJcEUsWUFBTyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBUWpFLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxZQUFZLEVB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SSxFQUFFLE1BQU07U0FDYixFQUFFO1lBQ0QsS0FBSyxFQUFFLFNBQVM7WUFDaEIsSUFBSSxFQUFFLEVBQUU7WUFDUixPQUFPLEVBQUUsSUFBSTtZQUNiLE9BQU8sRUFBRSxFQUFFO1lBQ1gsWUFBWSxFQUFFLElBQUk7WUFDbEIsSUFBSSxFQUFFLEVBQUU7U0FDVCxFQUFFO1lBQ0QsS0FBSyxFQUFFLFNBQVM7WUFDaEIsSUFBSSxFQUFFLGtCQUFrQjtZQUN4QixPQUFPLEVBQUUsSUFBSTtZQUNiLE9BQU8sRUFBRSxhQUFhO1lBQ3RCLFlBQVksRUFBRSxJQUFJO1lBQ2xCLElBQUksRUFBRSxFQUFFO1NBQ1QsQ0FBQztJQUNGLFdBQVcsRUFBRSxDQUFDO1lBQ1osS0FBSyxFQUFFLE1BQU07WUFDYixJQUFJLEVBQUUsa0JBQWtCO1lBQ3hCLE9BQU8sRUFBRSxJQUFJO1lBQ2IsT0FBTyxFQUFFLGFBQWE7U0FDdkIsRUFBRTtZQUNELEtBQUssRUFBRSxNQUFNO1lBQ2IsT0FBTyxFQUFFLEtBQUs7WUFDZCxPQUFPLEVBQUUsRUFBRTtZQUNYLElBQUksRUFBRSxRQUFRO1NBQ2YsRUFBRTtZQUNELEtBQUssRUFBRSxTQUFTO1lBQ2hCLElBQUksRUFBRSxvQkFBb0I7WUFDMUIsT0FBTyxFQUFFLElBQUk7WUFDYixPQUFPLEVBQUUsRUFBRTtTQUNaLENBQUM7Q0FDSCxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIEluamVjdCwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBzaWduYWwsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCwgdmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEF2YXRhckNvbXBvbmVudCB9IGZyb20gJy4uL2F2YXRhci9hdmF0YXIuY29tcG9uZW50JztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICcuLi9pY29uL2ljb24uY29tcG9uZW50Jztcbi8vIGltcG9ydCB7IEF2YXRhckNvbXBvbmVudCB9IGZyb20gJy4uL2F2YXRhci9hdmF0YXIuY29tcG9uZW50JztcblxuaW1wb3J0IHtcbiAgTWF0VG9vbHRpcCxcbiAgTWF0VG9vbHRpcE1vZHVsZVxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IE1lbnVEaXJlY3RpdmUgfSBmcm9tICcuLi9tZW51L21lbnUuZGlyZWN0aXZlJztcbmltcG9ydCB7IFNBTWVudUNvbXBvbmVudCB9IGZyb20gJy4uL21lbnUvbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSUxlZnROYXYsIElMZWZ0TmF2Qmx1ckV2ZW50LCBJTGVmdE5hdkNsaWNrRXZlbnQsIElMZWZ0TmF2SXRlbSwgSUxlZnROYXZMb2dvIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9sZWZ0LW5hdi1pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSU1lbnUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL21lbnUuaW50ZXJmYWNlJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NhLWxlZnQtbmF2JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBBdmF0YXJDb21wb25lbnQsXG4gICAgSWNvbkNvbXBvbmVudCxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIE1lbnVEaXJlY3RpdmUsXG4gICAgU0FNZW51Q29tcG9uZW50LFxuICAgIEljb25Db21wb25lbnRcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2xlZnQtbmF2LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2xlZnQtbmF2LmNvbXBvbmVudC5jc3MnXG59KVxuZXhwb3J0IGNsYXNzIExlZnROYXZDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuXG4gIC8vIFNpZ25hbCB0byB0cmFjayBpZiBhIG1lbnUgaXMgY3VycmVudGx5IGF0dGFjaGVkL29wZW5cbiAgaXNNZW51QXR0YWNoZWQgPSBzaWduYWwoZmFsc2UpO1xuICBcbiAgLy8gVHJhY2sgd2hpY2ggbWVudSBpcyBjdXJyZW50bHkgb3BlblxuICBwcml2YXRlIGFjdGl2ZU1lbnVJdGVtUmVmOiB7IGl0ZW1UeXBlOiAnbmF2JyB8ICdmb290ZXInLCBpbmRleDogbnVtYmVyIH0gfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCdjb25maWcnKSBjb25maWc6IElMZWZ0TmF2O1xuICBAT3V0cHV0KCdjbGlja0V2ZW50JykgY2xpY2tFdmVudDogRXZlbnRFbWl0dGVyPElMZWZ0TmF2Q2xpY2tFdmVudD47XG4gIEBPdXRwdXQoJ2hvdmVyRXZlbnQnKSBob3ZlckV2ZW50OiBFdmVudEVtaXR0ZXI8SUxlZnROYXZCbHVyRXZlbnQ+O1xuICBAT3V0cHV0KCdvbkV2ZW50Jykgb25FdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLy8gQEluamVjdChBY3RpdmF0ZWRSb3V0ZSkgYWN0aXZlUm91dGVTZXJ2aWNlOiBBY3RpdmF0ZWRSb3V0ZTtcbiAgLy8gQEluamVjdChSb3V0ZXIpIHJvdXRlclNlcnZpY2U6IFJvdXRlcjtcblxuICBwcml2YXRlIGFjdGl2ZUl0ZW06IElMZWZ0TmF2SXRlbSB8IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHtcbiAgICB0aGlzLmNsaWNrRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5ob3ZlckV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc29sZS5sb2codGhpcy5jb25maWcuaXRlbXMpO1xuICAgIGlmICghdGhpcy5jb25maWcuZm9vdGVySXRlbXMpIHtcbiAgICAgIHRoaXMuY29uZmlnLmZvb3Rlckl0ZW1zID0gZGF0YS5mb290ZXJJdGVtcztcbiAgICB9XG5cbiAgICAvLyBUaGlzIGxvZ2ljIHNob3VsZCBub3QgYmUgYXMgcGFydCBvZiB0aGUgbGlicmFyeS4gSXQgc2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhlIGFwcGxpY2F0aW9uLlxuICAgIC8vIGlmICh0aGlzLmNvbmZpZz8uaXRlbXM/Lmxlbmd0aCkge1xuICAgIC8vICAgdGhpcy5vbk5hdkl0ZW1DbGljayh0aGlzLmNvbmZpZy5pdGVtc1swXSwgMCk7XG4gICAgLy8gfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIFxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydjb25maWcnXSAmJiAhY2hhbmdlc1snY29uZmlnJ10uZmlyc3RDaGFuZ2UpIHtcbiAgICAgIC8vIEhhbmRsZSBjb25maWcgY2hhbmdlc1xuICAgICAgY29uc29sZS5sb2coJ0NvbmZpZyBjaGFuZ2VkOicsIGNoYW5nZXNbJ2NvbmZpZyddLmN1cnJlbnRWYWx1ZSk7XG4gICAgICBcbiAgICAgIC8vIFVwZGF0ZSBhbnkgZGVyaXZlZCBzdGF0ZSBvciB0cmlnZ2VyIFVJIHVwZGF0ZXNcbiAgICAgIGlmICh0aGlzLmNvbmZpZz8uaXRlbXMpIHtcbiAgICAgICAgLy8gRmluZCBhbmQgbWFpbnRhaW4gYWN0aXZlIHN0YXRlIHdoZW4gY29uZmlnIGNoYW5nZXNcbiAgICAgICAgY29uc3QgYWN0aXZlSXRlbUluZGV4ID0gdGhpcy5jb25maWcuaXRlbXMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5hY3RpdmUpO1xuICAgICAgICBpZiAoYWN0aXZlSXRlbUluZGV4ID49IDApIHtcbiAgICAgICAgICB0aGlzLmFjdGl2ZUl0ZW0gPSB0aGlzLmNvbmZpZy5pdGVtc1thY3RpdmVJdGVtSW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyBUbyBlbnN1cmUgQW5ndWxhcidzIGNoYW5nZSBkZXRlY3Rpb24gcHJvcGVybHkgcHJvcGFnYXRlcyBjaGFuZ2VzIHRvIHRoZSBtZW51IGRpcmVjdGl2ZSxcbiAgICAgICAgLy8gd2UgY2FuIHVzZSB0aGUgT2JqZWN0LmFzc2lnbiBhcHByb2FjaCB3aGljaCBwcmVzZXJ2ZXMgb2JqZWN0IHJlZmVyZW5jZXMgYnV0IHVwZGF0ZXMgcHJvcGVydGllc1xuICAgICAgICAvLyBUaGlzIGlzIGltcG9ydGFudCBmb3IgQW5ndWxhcidzIE9uUHVzaCBjaGFuZ2UgZGV0ZWN0aW9uIHN0cmF0ZWd5IGluIGNoaWxkIGNvbXBvbmVudHNcbiAgICAgICAgXG4gICAgICAgIC8vIFVwZGF0ZSBtZW51IG9iamVjdHMgaW4gaXRlbXMgd2l0aG91dCBjaGFuZ2luZyB0aGVpciByZWZlcmVuY2VzXG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZU1lbnVJdGVtUmVmICYmIHRoaXMuYWN0aXZlTWVudUl0ZW1SZWYuaXRlbVR5cGUgPT09ICduYXYnKSB7XG4gICAgICAgICAgY29uc3QgYWN0aXZlSW5kZXggPSB0aGlzLmFjdGl2ZU1lbnVJdGVtUmVmLmluZGV4O1xuICAgICAgICAgIGlmICh0aGlzLmNvbmZpZy5pdGVtc1thY3RpdmVJbmRleF0/Lm1lbnUpIHtcbiAgICAgICAgICAgIC8vIFVzaW5nIGEgY29uc29sZS5sb2cgdG8gdmlzdWFsbHkgdmVyaWZ5IHRoZSBhcHByb2FjaCBpcyBiZWluZyBhcHBsaWVkXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnTWFpbnRhaW5pbmcgbWVudSByZWZlcmVuY2UgZm9yIGFjdGl2ZSBuYXYgaXRlbTonLCBhY3RpdmVJbmRleCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0SXRlbUFjdGl2ZShpbmRleDogbnVtYmVyKSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLmFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgdGhpcy5hY3RpdmVJdGVtLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuY29uZmlnPy5pdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlSXRlbSA9IHRoaXMuY29uZmlnLml0ZW1zW2luZGV4XTtcbiAgICAgICAgdGhpcy5hY3RpdmVJdGVtLmFjdGl2ZSA9IHRydWU7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgfVxuICB9XG5cbiAgb25OYXZJdGVtQ2xpY2soaXRlbTogSUxlZnROYXZJdGVtLCBpbmRleDogbnVtYmVyLCBldmVudDogYW55ID0gbnVsbCkge1xuXG4gICAgdGhpcy5jbGlja0V2ZW50LmVtaXQoe1xuICAgICAgZXZlbnQsXG4gICAgICB0eXBlOiAnTkFWX0lURU1fQ0xJQ0snLFxuICAgICAgaXRlbVxuICAgIH0pO1xuICAgIHRoaXMuY29uZmlnLml0ZW1zLmZvckVhY2goKGl0ZW0pID0+IGl0ZW0uYWN0aXZlID0gZmFsc2UpO1xuICAgIHRoaXMuY29uZmlnLml0ZW1zW2luZGV4XS5hY3RpdmUgPSB0cnVlO1xuICAgIFxuICAgIGlmICghaXRlbS5kaXNhYmxlICYmIGl0ZW0ucGF0aCkge1xuICAgICAgdGhpcy5zZXRJdGVtQWN0aXZlKGluZGV4KTtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtpdGVtLnBhdGhdKVxuICAgIH1cbiAgICB0aGlzLm9uRXZlbnQuZW1pdCh7IGl0ZW0sIGluZGV4LCBldmVudCB9KTtcbiAgfVxuXG4gIG9uRm9vdGVySXRlbUNsaWNrKGl0ZW06IElMZWZ0TmF2SXRlbSwgaW5kZXg6IG51bWJlciwgZXZlbnQ6IGFueSA9IG51bGwpIHtcbiAgICB0aGlzLmNsaWNrRXZlbnQuZW1pdCh7XG4gICAgICBldmVudCxcbiAgICAgIHR5cGU6ICdGT09URVJfSVRFTV9DTElDSycsXG4gICAgICBpdGVtXG4gICAgfSk7XG4gIH1cbiAgb25Gb290ZXJJdGVtQmx1cihpdGVtOiBJTGVmdE5hdkl0ZW0sIGluZGV4OiBudW1iZXIsIGV2ZW50OiBhbnkgPSBudWxsLCB0b29sdGlwOiBNYXRUb29sdGlwKSB7XG4gICAgdGhpcy5ob3ZlckV2ZW50LmVtaXQoe1xuICAgICAgZXZlbnQsXG4gICAgICB0eXBlOiAnRk9PVEVSX0lURU1fSE9WRVInLFxuICAgICAgaXRlbVxuICAgIH0pO1xuICAgIGlmICh0b29sdGlwKSB7XG4gICAgICB0b29sdGlwLnNob3coKTtcbiAgICB9XG4gIH1cbiAgb25OYXZJdGVtQmx1cihpdGVtOiBJTGVmdE5hdkl0ZW0sIGluZGV4OiBudW1iZXIsIGV2ZW50OiBhbnkgPSBudWxsLCB0b29sdGlwOiBNYXRUb29sdGlwKSB7XG4gICAgdGhpcy5ob3ZlckV2ZW50LmVtaXQoe1xuICAgICAgZXZlbnQsXG4gICAgICB0eXBlOiAnTkFWX0lURU1fSE9WRVInLFxuICAgICAgaXRlbVxuICAgIH0pO1xuICAgIGlmICh0b29sdGlwKSB7XG4gICAgICB0b29sdGlwLnNob3coKTtcbiAgICB9XG4gIH1cblxuICBvblRlbXBsYXRlSXRlbUNsaWNrKGV2ZW50OiBhbnksIGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkge1xuICAgIHRoaXMuY2xpY2tFdmVudC5lbWl0KHtcbiAgICAgIGV2ZW50LFxuICAgICAgaXRlbSxcbiAgICAgIHR5cGU6ICdURU1QTEFURV9JVEVNX0NMSUNLJ1xuICAgIH0pO1xuICB9XG5cbiAgb25NZW51RXZlbnQoZXZlbnQ6IGFueSl7XG4gICAgY29uc29sZS5sb2coJ29uTWVudUV2ZW50JywgZXZlbnQpXG4gIH1cblxuICBvbkxvZ29DbGljayhldmVudDogYW55LCBsb2dvOiBJTGVmdE5hdkxvZ28pIHtcbiAgICB0aGlzLmNsaWNrRXZlbnQuZW1pdCh7XG4gICAgICBldmVudCxcbiAgICAgIHR5cGU6ICdMT0dPX0NMSUNLJyxcbiAgICAgIGl0ZW06IHtcbiAgICAgICAgLi4ubG9nbyxcbiAgICAgICAgdGl0bGU6IGxvZ28uYWx0VGV4dFxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXIgZm9yIHRoZSBvbkF0dGFjaGVkIGV2ZW50IGZyb20gdGhlIE1lbnVEaXJlY3RpdmVcbiAgICogVGhpcyBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgc2FNZW51IGRpcmVjdGl2ZSBpcyBhdHRhY2hlZCB0byBhbiBlbGVtZW50XG4gICAqIEBwYXJhbSBldmVudCBUaGUgZXZlbnQgZGF0YSBjb250YWluaW5nIHRoZSBlbGVtZW50IGFuZCBtZW51IGNvbmZpZ3VyYXRpb25cbiAgICogQHBhcmFtIGl0ZW1UeXBlIFRoZSB0eXBlIG9mIGl0ZW0gKCduYXYnIG9yICdmb290ZXInKVxuICAgKiBAcGFyYW0gaXRlbSBUaGUgbmF2L2Zvb3RlciBpdGVtIHRoYXQgdGhlIG1lbnUgaXMgYXR0YWNoZWQgdG9cbiAgICogQHBhcmFtIGluZGV4IFRoZSBpbmRleCBvZiB0aGUgaXRlbSBpbiB0aGUgaXRlbXMgYXJyYXlcbiAgICovXG4gIG9uTWVudUF0dGFjaGVkKGV2ZW50OiB7IGVsZW1lbnQ6IEVsZW1lbnRSZWYsIG1lbnU6IElNZW51IH0sIGl0ZW1UeXBlOiAnbmF2JyB8ICdmb290ZXInLCBpdGVtOiBJTGVmdE5hdkl0ZW0sIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAvLyBFbWl0IGFuIGV2ZW50IHRoYXQgY2FuIGJlIGNhcHR1cmVkIGJ5IHBhcmVudCBhcHBsaWNhdGlvbnNcbiAgICB0aGlzLmlzTWVudUF0dGFjaGVkLnNldCh0cnVlKTtcbiAgICBcbiAgICAvLyBUcmFjayB3aGljaCBtZW51IGlzIG9wZW5cbiAgICB0aGlzLmFjdGl2ZU1lbnVJdGVtUmVmID0geyBpdGVtVHlwZSwgaW5kZXggfTtcbiAgICBcbiAgICB0aGlzLm9uRXZlbnQuZW1pdCh7XG4gICAgICB0eXBlOiAnTUVOVV9BVFRBQ0hFRCcsXG4gICAgICBpdGVtVHlwZSxcbiAgICAgIGl0ZW0sXG4gICAgICBpbmRleCxcbiAgICAgIGVsZW1lbnQ6IGV2ZW50LmVsZW1lbnQsXG4gICAgICBtZW51OiBldmVudC5tZW51XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlciBmb3IgdGhlIG9uRGV0YWNoZWQgZXZlbnQgZnJvbSB0aGUgTWVudURpcmVjdGl2ZVxuICAgKiBUaGlzIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBtZW51IGlzIGNsb3NlZC9kZXRhY2hlZFxuICAgKiBAcGFyYW0gZXZlbnQgVGhlIGV2ZW50IGRhdGEgY29udGFpbmluZyB0aGUgZWxlbWVudCBhbmQgbWVudSBjb25maWd1cmF0aW9uXG4gICAqIEBwYXJhbSBpdGVtVHlwZSBUaGUgdHlwZSBvZiBpdGVtICgnbmF2JyBvciAnZm9vdGVyJylcbiAgICogQHBhcmFtIGl0ZW0gVGhlIG5hdi9mb290ZXIgaXRlbSB0aGF0IHRoZSBtZW51IHdhcyBhdHRhY2hlZCB0b1xuICAgKiBAcGFyYW0gaW5kZXggVGhlIGluZGV4IG9mIHRoZSBpdGVtIGluIHRoZSBpdGVtcyBhcnJheVxuICAgKi9cbiAgb25NZW51RGV0YWNoZWQoZXZlbnQ6IHsgZWxlbWVudDogRWxlbWVudFJlZiwgbWVudTogSU1lbnUgfSwgaXRlbVR5cGU6ICduYXYnIHwgJ2Zvb3RlcicsIGl0ZW06IElMZWZ0TmF2SXRlbSwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuaXNNZW51QXR0YWNoZWQuc2V0KGZhbHNlKTtcbiAgICBcbiAgICAvLyBDbGVhciB0aGUgYWN0aXZlIG1lbnUgcmVmZXJlbmNlXG4gICAgdGhpcy5hY3RpdmVNZW51SXRlbVJlZiA9IG51bGw7XG4gICAgXG4gICAgdGhpcy5vbkV2ZW50LmVtaXQoe1xuICAgICAgdHlwZTogJ01FTlVfREVUQUNIRUQnLFxuICAgICAgaXRlbVR5cGUsXG4gICAgICBpdGVtLFxuICAgICAgaW5kZXgsXG4gICAgICBlbGVtZW50OiBldmVudC5lbGVtZW50LFxuICAgICAgbWVudTogZXZlbnQubWVudVxuICAgIH0pO1xuICB9XG5cblxufVxuXG5cbmNvbnN0IGRhdGE6IElMZWZ0TmF2ID0ge1xuICBpdGVtczogW3tcbiAgICB0aXRsZTogJ0hvbWUnLFxuICAgIGljb246ICcnLFxuICAgIGRpc2FibGU6IGZhbHNlLFxuICAgIHRvb2x0aXA6ICcnLFxuICAgIHJlbGF0aXZlUGF0aDogdHJ1ZSxcbiAgICBwYXRoOiAnaG9tZSdcbiAgfSwge1xuICAgIHRpdGxlOiAnUHJpY2luZycsXG4gICAgaWNvbjogJycsXG4gICAgZGlzYWJsZTogdHJ1ZSxcbiAgICB0b29sdGlwOiAnJyxcbiAgICByZWxhdGl2ZVBhdGg6IHRydWUsXG4gICAgcGF0aDogJydcbiAgfSwge1xuICAgIHRpdGxlOiAnU2V0dGluZycsXG4gICAgaWNvbjogJ3NldHRpbmdzT3V0bGluZWQnLFxuICAgIGRpc2FibGU6IHRydWUsXG4gICAgdG9vbHRpcDogJ2NvbWluZyBzb29uJyxcbiAgICByZWxhdGl2ZVBhdGg6IHRydWUsXG4gICAgcGF0aDogJydcbiAgfV0sXG4gIGZvb3Rlckl0ZW1zOiBbe1xuICAgIHRpdGxlOiAnSGVscCcsXG4gICAgaWNvbjogJ2NoYXRIZWxwT3V0bGluZWQnLFxuICAgIGRpc2FibGU6IHRydWUsXG4gICAgdG9vbHRpcDogJ2NvbWluZyBzb29uJ1xuICB9LCB7XG4gICAgdGl0bGU6ICdOYW1lJyxcbiAgICBkaXNhYmxlOiBmYWxzZSxcbiAgICB0b29sdGlwOiAnJyxcbiAgICB0eXBlOiAnQVZBVEFSJ1xuICB9LCB7XG4gICAgdGl0bGU6ICdDaGV2cm9uJyxcbiAgICBpY29uOiAnZG91YmxlRG93bk91dGxpbmVkJyxcbiAgICBkaXNhYmxlOiB0cnVlLFxuICAgIHRvb2x0aXA6ICcnXG4gIH1dXG59IiwiPGRpdiBjbGFzcz1cInNhLWxlZnQtbmF2XCIgPlxuXG4gICAgPGRpdiBjbGFzcz1cInNhLWxlZnQtbmF2LWNvbnRhaW5lciB7e2lzTWVudUF0dGFjaGVkKCkgPyAnbWVudS1hdHRhY2hlZCcgOiAnJ319XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYS1sZWZ0LW5hdi1sb2dvXCI+XG4gICAgICAgICAgICA8c2EtaWNvbiAoY2xpY2spPVwib25Mb2dvQ2xpY2soJGV2ZW50LCBjb25maWc/LmxvZ28pXCIgW21hdFRvb2x0aXBdPVwiY29uZmlnPy5sb2dvPy50b29sdGlwXCIgW21hdFRvb2x0aXBQb3NpdGlvbl09XCIncmlnaHQnXCIgW2ljb25dPVwiY29uZmlnPy5sb2dvPy5pY29uXCIgW3NpemVdPVwiY29uZmlnPy5sb2dvPy5pY29uU2l6ZVwiPjwvc2EtaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYS1sZWZ0LW5hdi1pdGVtcy1jb250YWluZXJcIj5cbiAgICAgICAgICAgIEBpZihjb25maWcgJiYgY29uZmlnPy5pdGVtcyAmJiAhIWNvbmZpZz8uaXRlbXM/Lmxlbmd0aCl7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2EtbGVmdC1uYXYtaXRlbXMtZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNvbmZpZz8uaXRlbXM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNhLWxlZnQtbmF2LWl0ZW1zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2EtbGVmdC1uYXYtaXRlbVwiIFtuZ0NsYXNzXT1cIml0ZW0uYWN0aXZlID8gJ2FjdGl2ZScgOiAnJyBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NhTWVudV09XCJpdGVtLm1lbnVcIiAob25FdmVudCk9XCJvbkV2ZW50LmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BdHRhY2hlZCk9XCJvbk1lbnVBdHRhY2hlZCgkZXZlbnQsICduYXYnLCBpdGVtLCBpKVwiIChvbkRldGFjaGVkKT1cIm9uTWVudURldGFjaGVkKCRldmVudCwgJ25hdicsIGl0ZW0sIGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbk5hdkl0ZW1DbGljayhpdGVtLCBpLCAkZXZlbnQpXCIgKG1vdXNlZW50ZXIpPVwib25OYXZJdGVtQmx1cihpdGVtLGksJGV2ZW50LHRvb2x0aXApXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICN0b29sdGlwPVwibWF0VG9vbHRpcFwiIFttYXRUb29sdGlwXT1cIml0ZW0udG9vbHRpcFwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzYS1pY29uIGNsYXNzPVwic2EtbGVmdC1uYXYtaXRlbS1pY29uXCIgW2ljb25dPVwiaXRlbS5pY29uXCIgW3NpemVdPVwiaXRlbS5pY29uU2l6ZSB8fCAnMjQnXCIgW2NvbG9yXT1cIml0ZW0uY29sb3IgfHwgJ3doaXRlJ1wiPjwvc2EtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHNwYW4+e3tpdGVtLnRvb2x0aXB9fTwvc3Bhbj4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwic2EtbGVmdC1uYXYtaXRlbS1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ2JhY2tncm91bmQtaW1hZ2UnOiAndXJsKCcgKyBpdGVtLmljb25fdXJsICsgJyknIH1cIj48L3NwYW4+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInNhLWljb24tbGFiZWxcIj57e2l0ZW0uaWNvbkxhYmVsfX08L3A+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2EtdGVtcGxhdGUtaXRlbS1jb250YWluZXJcIj5cbiAgICAgICAgICAgIEBpZihjb25maWcgJiYgY29uZmlnLnRlbXBsYXRlSXRlbXMgJiYgISFjb25maWcudGVtcGxhdGVJdGVtcy5sZW5ndGgpe1xuICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwib25UZW1wbGF0ZUl0ZW1DbGljaygkZXZlbnQsIGksIGl0ZW0pXCIgY2xhc3M9XCJzYS10ZW1wbGF0ZS1pdGVtXCIgW25nQ2xhc3NdPVwiaXRlbS5jbGFzc05hbWVcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjb25maWcudGVtcGxhdGVJdGVtczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICAgIDxzYS1pY29uIFttYXRUb29sdGlwXT1cIml0ZW0udG9vbHRpcFwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCIgW2ljb25dPVwiaXRlbS5pY29uXCIgW3NpemVdPVwiaXRlbS5pY29uU2l6ZSB8fCAnMjQnXCIgW2NvbG9yXT1cIml0ZW0uY29sb3JcIj48L3NhLWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYS1sZWZ0LW5hdi1mb290ZXJcIj5cbiAgICAgICAgICAgIEBpZihjb25maWcgJiYgY29uZmlnLmZvb3Rlckl0ZW1zICYmICEhY29uZmlnLmZvb3Rlckl0ZW1zLmxlbmd0aCl7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2EtbGVmdC1uYXYtZm9vdGVyLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYS1sZWZ0LW5hdi1mb290ZXItaXRlbVwiIFtuZ0NsYXNzXT1cIml0ZW0uY2xhc3NOYW1lXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY29uZmlnLmZvb3Rlckl0ZW1zOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXItaXRlbS1pY29uXCIgW25nQ2xhc3NdPVwiaXRlbS5hY3RpdmUgPyAnYWN0aXZlJyA6ICcnIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Gb290ZXJJdGVtQ2xpY2soaXRlbSwgaSwgJGV2ZW50KVwiIChvbkV2ZW50KT1cIm9uRXZlbnQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzYU1lbnVdPVwiaXRlbS5tZW51XCIgKG9uQXR0YWNoZWQpPVwib25NZW51QXR0YWNoZWQoJGV2ZW50LCAnZm9vdGVyJywgaXRlbSwgaSlcIiAob25EZXRhY2hlZCk9XCJvbk1lbnVEZXRhY2hlZCgkZXZlbnQsICdmb290ZXInLCBpdGVtLCBpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJvbkZvb3Rlckl0ZW1CbHVyKGl0ZW0saSwkZXZlbnQsdG9vbHRpcClcIiAjdG9vbHRpcD1cIm1hdFRvb2x0aXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiaXRlbS50b29sdGlwXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZihpdGVtLnR5cGUgPT09ICdBVkFUQVInKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJzYS1sZWZ0LW5hdi1mb290ZXItbmFtZVwiPkVUPC9zcGFuPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzYS1hdmF0YXIgW2FsdFRleHRdPVwiaXRlbS5hbHRUZXh0XCIgW2ltYWdlUGF0aF09XCInJ1wiIHNpemU9XCJleHRyYS1zbWFsbFwiPjwvc2EtYXZhdGFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgfUBlbHNle1xuICAgICAgICAgICAgICAgICAgICAgICAgPHNhLWljb24gY2xhc3M9XCJzYS1sZWZ0LW5hdi1mb290ZXItaWNvblwiIFtpY29uXT1cIml0ZW0uaWNvblwiIHNpemU9XCIyNFwiIGNvbG9yPVwid2hpdGVcIj48L3NhLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwic2EtbGVmdC1uYXYtZm9vdGVyLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ2JhY2tncm91bmQtaW1hZ2UnOiAndXJsKCcgKyBpdGVtLmljb25fdXJsIHx8ICcnICsgJyknIH1cIj48L3NwYW4+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJzYS1pY29uLWxhYmVsXCI+e3tpdGVtLmljb25MYWJlbH19PC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInNhLWxlZnQtbmF2LWNvbnRlbnRcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuXG48L2Rpdj4iXX0=
247
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVmdC1uYXYuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50LWxpYnJhcnkvc3JjL2xpYi9sZWZ0LW5hdi9sZWZ0LW5hdi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2xlZnQtbmF2L2xlZnQtbmF2LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBa0IsS0FBSyxFQUFhLE1BQU0sRUFBRSxNQUFNLEVBQXVDLE1BQU0sZUFBZSxDQUFDO0FBRTNKLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsZ0VBQWdFO0FBRWhFLE9BQU8sRUFFTCxnQkFBZ0IsRUFDakIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7OztBQWtCekQsTUFBTSxPQUFPLGdCQUFnQjtJQWlCM0IsWUFBb0IsS0FBcUIsRUFBVSxNQUFjO1FBQTdDLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQWZqRSx1REFBdUQ7UUFDdkQsbUJBQWMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFL0IscUNBQXFDO1FBQzdCLHNCQUFpQixHQUF5RCxJQUFJLENBQUM7UUFJcEUsWUFBTyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBUWpFLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxZQUFZLEVB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SSxFQUFFLE1BQU07U0FDYixFQUFFO1lBQ0QsS0FBSyxFQUFFLFNBQVM7WUFDaEIsSUFBSSxFQUFFLEVBQUU7WUFDUixPQUFPLEVBQUUsSUFBSTtZQUNiLE9BQU8sRUFBRSxFQUFFO1lBQ1gsWUFBWSxFQUFFLElBQUk7WUFDbEIsSUFBSSxFQUFFLEVBQUU7U0FDVCxFQUFFO1lBQ0QsS0FBSyxFQUFFLFNBQVM7WUFDaEIsSUFBSSxFQUFFLGtCQUFrQjtZQUN4QixPQUFPLEVBQUUsSUFBSTtZQUNiLE9BQU8sRUFBRSxhQUFhO1lBQ3RCLFlBQVksRUFBRSxJQUFJO1lBQ2xCLElBQUksRUFBRSxFQUFFO1NBQ1QsQ0FBQztJQUNGLFdBQVcsRUFBRSxDQUFDO1lBQ1osS0FBSyxFQUFFLE1BQU07WUFDYixJQUFJLEVBQUUsa0JBQWtCO1lBQ3hCLE9BQU8sRUFBRSxJQUFJO1lBQ2IsT0FBTyxFQUFFLGFBQWE7U0FDdkIsRUFBRTtZQUNELEtBQUssRUFBRSxNQUFNO1lBQ2IsT0FBTyxFQUFFLEtBQUs7WUFDZCxPQUFPLEVBQUUsRUFBRTtZQUNYLElBQUksRUFBRSxRQUFRO1NBQ2YsRUFBRTtZQUNELEtBQUssRUFBRSxTQUFTO1lBQ2hCLElBQUksRUFBRSxvQkFBb0I7WUFDMUIsT0FBTyxFQUFFLElBQUk7WUFDYixPQUFPLEVBQUUsRUFBRTtTQUNaLENBQUM7Q0FDSCxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIEluamVjdCwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBzaWduYWwsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCwgdmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEF2YXRhckNvbXBvbmVudCB9IGZyb20gJy4uL2F2YXRhci9hdmF0YXIuY29tcG9uZW50JztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICcuLi9pY29uL2ljb24uY29tcG9uZW50Jztcbi8vIGltcG9ydCB7IEF2YXRhckNvbXBvbmVudCB9IGZyb20gJy4uL2F2YXRhci9hdmF0YXIuY29tcG9uZW50JztcblxuaW1wb3J0IHtcbiAgTWF0VG9vbHRpcCxcbiAgTWF0VG9vbHRpcE1vZHVsZVxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IE1lbnVEaXJlY3RpdmUgfSBmcm9tICcuLi9tZW51L21lbnUuZGlyZWN0aXZlJztcbmltcG9ydCB7IFNBTWVudUNvbXBvbmVudCB9IGZyb20gJy4uL21lbnUvbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSUxlZnROYXYsIElMZWZ0TmF2Qmx1ckV2ZW50LCBJTGVmdE5hdkNsaWNrRXZlbnQsIElMZWZ0TmF2SXRlbSwgSUxlZnROYXZMb2dvIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9sZWZ0LW5hdi1pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSU1lbnUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL21lbnUuaW50ZXJmYWNlJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NhLWxlZnQtbmF2JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBBdmF0YXJDb21wb25lbnQsXG4gICAgSWNvbkNvbXBvbmVudCxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIE1lbnVEaXJlY3RpdmUsXG4gICAgU0FNZW51Q29tcG9uZW50LFxuICAgIEljb25Db21wb25lbnRcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2xlZnQtbmF2LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2xlZnQtbmF2LmNvbXBvbmVudC5jc3MnXG59KVxuZXhwb3J0IGNsYXNzIExlZnROYXZDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuXG4gIC8vIFNpZ25hbCB0byB0cmFjayBpZiBhIG1lbnUgaXMgY3VycmVudGx5IGF0dGFjaGVkL29wZW5cbiAgaXNNZW51QXR0YWNoZWQgPSBzaWduYWwoZmFsc2UpO1xuICBcbiAgLy8gVHJhY2sgd2hpY2ggbWVudSBpcyBjdXJyZW50bHkgb3BlblxuICBwcml2YXRlIGFjdGl2ZU1lbnVJdGVtUmVmOiB7IGl0ZW1UeXBlOiAnbmF2JyB8ICdmb290ZXInLCBpbmRleDogbnVtYmVyIH0gfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCdjb25maWcnKSBjb25maWc6IElMZWZ0TmF2O1xuICBAT3V0cHV0KCdjbGlja0V2ZW50JykgY2xpY2tFdmVudDogRXZlbnRFbWl0dGVyPElMZWZ0TmF2Q2xpY2tFdmVudD47XG4gIEBPdXRwdXQoJ2hvdmVyRXZlbnQnKSBob3ZlckV2ZW50OiBFdmVudEVtaXR0ZXI8SUxlZnROYXZCbHVyRXZlbnQ+O1xuICBAT3V0cHV0KCdvbkV2ZW50Jykgb25FdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLy8gQEluamVjdChBY3RpdmF0ZWRSb3V0ZSkgYWN0aXZlUm91dGVTZXJ2aWNlOiBBY3RpdmF0ZWRSb3V0ZTtcbiAgLy8gQEluamVjdChSb3V0ZXIpIHJvdXRlclNlcnZpY2U6IFJvdXRlcjtcblxuICBwcml2YXRlIGFjdGl2ZUl0ZW06IElMZWZ0TmF2SXRlbSB8IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHtcbiAgICB0aGlzLmNsaWNrRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5ob3ZlckV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc29sZS5sb2codGhpcy5jb25maWcuaXRlbXMpO1xuICAgIGlmICghdGhpcy5jb25maWcuZm9vdGVySXRlbXMpIHtcbiAgICAgIHRoaXMuY29uZmlnLmZvb3Rlckl0ZW1zID0gZGF0YS5mb290ZXJJdGVtcztcbiAgICB9XG5cbiAgICAvLyBUaGlzIGxvZ2ljIHNob3VsZCBub3QgYmUgYXMgcGFydCBvZiB0aGUgbGlicmFyeS4gSXQgc2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhlIGFwcGxpY2F0aW9uLlxuICAgIC8vIGlmICh0aGlzLmNvbmZpZz8uaXRlbXM/Lmxlbmd0aCkge1xuICAgIC8vICAgdGhpcy5vbk5hdkl0ZW1DbGljayh0aGlzLmNvbmZpZy5pdGVtc1swXSwgMCk7XG4gICAgLy8gfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIFxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydjb25maWcnXSAmJiAhY2hhbmdlc1snY29uZmlnJ10uZmlyc3RDaGFuZ2UpIHtcbiAgICAgIC8vIEhhbmRsZSBjb25maWcgY2hhbmdlc1xuICAgICAgY29uc29sZS5sb2coJ0NvbmZpZyBjaGFuZ2VkOicsIGNoYW5nZXNbJ2NvbmZpZyddLmN1cnJlbnRWYWx1ZSk7XG4gICAgICBcbiAgICAgIC8vIFVwZGF0ZSBhbnkgZGVyaXZlZCBzdGF0ZSBvciB0cmlnZ2VyIFVJIHVwZGF0ZXNcbiAgICAgIGlmICh0aGlzLmNvbmZpZz8uaXRlbXMpIHtcbiAgICAgICAgLy8gRmluZCBhbmQgbWFpbnRhaW4gYWN0aXZlIHN0YXRlIHdoZW4gY29uZmlnIGNoYW5nZXNcbiAgICAgICAgY29uc3QgYWN0aXZlSXRlbUluZGV4ID0gdGhpcy5jb25maWcuaXRlbXMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5hY3RpdmUpO1xuICAgICAgICBpZiAoYWN0aXZlSXRlbUluZGV4ID49IDApIHtcbiAgICAgICAgICB0aGlzLmFjdGl2ZUl0ZW0gPSB0aGlzLmNvbmZpZy5pdGVtc1thY3RpdmVJdGVtSW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyBUbyBlbnN1cmUgQW5ndWxhcidzIGNoYW5nZSBkZXRlY3Rpb24gcHJvcGVybHkgcHJvcGFnYXRlcyBjaGFuZ2VzIHRvIHRoZSBtZW51IGRpcmVjdGl2ZSxcbiAgICAgICAgLy8gd2UgY2FuIHVzZSB0aGUgT2JqZWN0LmFzc2lnbiBhcHByb2FjaCB3aGljaCBwcmVzZXJ2ZXMgb2JqZWN0IHJlZmVyZW5jZXMgYnV0IHVwZGF0ZXMgcHJvcGVydGllc1xuICAgICAgICAvLyBUaGlzIGlzIGltcG9ydGFudCBmb3IgQW5ndWxhcidzIE9uUHVzaCBjaGFuZ2UgZGV0ZWN0aW9uIHN0cmF0ZWd5IGluIGNoaWxkIGNvbXBvbmVudHNcbiAgICAgICAgXG4gICAgICAgIC8vIFVwZGF0ZSBtZW51IG9iamVjdHMgaW4gaXRlbXMgd2l0aG91dCBjaGFuZ2luZyB0aGVpciByZWZlcmVuY2VzXG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZU1lbnVJdGVtUmVmICYmIHRoaXMuYWN0aXZlTWVudUl0ZW1SZWYuaXRlbVR5cGUgPT09ICduYXYnKSB7XG4gICAgICAgICAgY29uc3QgYWN0aXZlSW5kZXggPSB0aGlzLmFjdGl2ZU1lbnVJdGVtUmVmLmluZGV4O1xuICAgICAgICAgIGlmICh0aGlzLmNvbmZpZy5pdGVtc1thY3RpdmVJbmRleF0/Lm1lbnUpIHtcbiAgICAgICAgICAgIC8vIFVzaW5nIGEgY29uc29sZS5sb2cgdG8gdmlzdWFsbHkgdmVyaWZ5IHRoZSBhcHByb2FjaCBpcyBiZWluZyBhcHBsaWVkXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnTWFpbnRhaW5pbmcgbWVudSByZWZlcmVuY2UgZm9yIGFjdGl2ZSBuYXYgaXRlbTonLCBhY3RpdmVJbmRleCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0SXRlbUFjdGl2ZShpbmRleDogbnVtYmVyKSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLmFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgdGhpcy5hY3RpdmVJdGVtLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuY29uZmlnPy5pdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlSXRlbSA9IHRoaXMuY29uZmlnLml0ZW1zW2luZGV4XTtcbiAgICAgICAgdGhpcy5hY3RpdmVJdGVtLmFjdGl2ZSA9IHRydWU7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgfVxuICB9XG5cbiAgb25OYXZJdGVtQ2xpY2soaXRlbTogSUxlZnROYXZJdGVtLCBpbmRleDogbnVtYmVyLCBldmVudDogYW55ID0gbnVsbCkge1xuXG4gICAgdGhpcy5jbGlja0V2ZW50LmVtaXQoe1xuICAgICAgZXZlbnQsXG4gICAgICB0eXBlOiAnTkFWX0lURU1fQ0xJQ0snLFxuICAgICAgaXRlbVxuICAgIH0pO1xuICAgIHRoaXMuY29uZmlnLml0ZW1zLmZvckVhY2goKGl0ZW0pID0+IGl0ZW0uYWN0aXZlID0gZmFsc2UpO1xuICAgIHRoaXMuY29uZmlnLml0ZW1zW2luZGV4XS5hY3RpdmUgPSB0cnVlO1xuICAgIFxuICAgIGlmICghaXRlbS5kaXNhYmxlICYmIGl0ZW0ucGF0aCkge1xuICAgICAgdGhpcy5zZXRJdGVtQWN0aXZlKGluZGV4KTtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtpdGVtLnBhdGhdKVxuICAgIH1cbiAgICB0aGlzLm9uRXZlbnQuZW1pdCh7IGl0ZW0sIGluZGV4LCBldmVudCB9KTtcbiAgfVxuXG4gIG9uRm9vdGVySXRlbUNsaWNrKGl0ZW06IElMZWZ0TmF2SXRlbSwgaW5kZXg6IG51bWJlciwgZXZlbnQ6IGFueSA9IG51bGwpIHtcbiAgICB0aGlzLmNsaWNrRXZlbnQuZW1pdCh7XG4gICAgICBldmVudCxcbiAgICAgIHR5cGU6ICdGT09URVJfSVRFTV9DTElDSycsXG4gICAgICBpdGVtXG4gICAgfSk7XG4gIH1cbiAgb25Gb290ZXJJdGVtQmx1cihpdGVtOiBJTGVmdE5hdkl0ZW0sIGluZGV4OiBudW1iZXIsIGV2ZW50OiBhbnkgPSBudWxsLCB0b29sdGlwOiBNYXRUb29sdGlwKSB7XG4gICAgdGhpcy5ob3ZlckV2ZW50LmVtaXQoe1xuICAgICAgZXZlbnQsXG4gICAgICB0eXBlOiAnRk9PVEVSX0lURU1fSE9WRVInLFxuICAgICAgaXRlbVxuICAgIH0pO1xuICAgIGlmICh0b29sdGlwKSB7XG4gICAgICB0b29sdGlwLnNob3coKTtcbiAgICB9XG4gIH1cbiAgb25OYXZJdGVtQmx1cihpdGVtOiBJTGVmdE5hdkl0ZW0sIGluZGV4OiBudW1iZXIsIGV2ZW50OiBhbnkgPSBudWxsLCB0b29sdGlwOiBNYXRUb29sdGlwKSB7XG4gICAgdGhpcy5ob3ZlckV2ZW50LmVtaXQoe1xuICAgICAgZXZlbnQsXG4gICAgICB0eXBlOiAnTkFWX0lURU1fSE9WRVInLFxuICAgICAgaXRlbVxuICAgIH0pO1xuICAgIGlmICh0b29sdGlwKSB7XG4gICAgICB0b29sdGlwLnNob3coKTtcbiAgICB9XG4gIH1cblxuICBvblRlbXBsYXRlSXRlbUNsaWNrKGV2ZW50OiBhbnksIGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkge1xuICAgIHRoaXMuY2xpY2tFdmVudC5lbWl0KHtcbiAgICAgIGV2ZW50LFxuICAgICAgaXRlbSxcbiAgICAgIHR5cGU6ICdURU1QTEFURV9JVEVNX0NMSUNLJ1xuICAgIH0pO1xuICB9XG5cbiAgb25NZW51RXZlbnQoZXZlbnQ6IGFueSl7XG4gICAgY29uc29sZS5sb2coJ29uTWVudUV2ZW50JywgZXZlbnQpXG4gIH1cblxuICBvbkxvZ29DbGljayhldmVudDogYW55LCBsb2dvOiBJTGVmdE5hdkxvZ28pIHtcbiAgICB0aGlzLmNsaWNrRXZlbnQuZW1pdCh7XG4gICAgICBldmVudCxcbiAgICAgIHR5cGU6ICdMT0dPX0NMSUNLJyxcbiAgICAgIGl0ZW06IHtcbiAgICAgICAgLi4ubG9nbyxcbiAgICAgICAgdGl0bGU6IGxvZ28uYWx0VGV4dFxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXIgZm9yIHRoZSBvbkF0dGFjaGVkIGV2ZW50IGZyb20gdGhlIE1lbnVEaXJlY3RpdmVcbiAgICogVGhpcyBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgc2FNZW51IGRpcmVjdGl2ZSBpcyBhdHRhY2hlZCB0byBhbiBlbGVtZW50XG4gICAqIEBwYXJhbSBldmVudCBUaGUgZXZlbnQgZGF0YSBjb250YWluaW5nIHRoZSBlbGVtZW50IGFuZCBtZW51IGNvbmZpZ3VyYXRpb25cbiAgICogQHBhcmFtIGl0ZW1UeXBlIFRoZSB0eXBlIG9mIGl0ZW0gKCduYXYnIG9yICdmb290ZXInKVxuICAgKiBAcGFyYW0gaXRlbSBUaGUgbmF2L2Zvb3RlciBpdGVtIHRoYXQgdGhlIG1lbnUgaXMgYXR0YWNoZWQgdG9cbiAgICogQHBhcmFtIGluZGV4IFRoZSBpbmRleCBvZiB0aGUgaXRlbSBpbiB0aGUgaXRlbXMgYXJyYXlcbiAgICovXG4gIG9uTWVudUF0dGFjaGVkKGV2ZW50OiB7IGVsZW1lbnQ6IEVsZW1lbnRSZWYsIG1lbnU6IElNZW51IH0sIGl0ZW1UeXBlOiAnbmF2JyB8ICdmb290ZXInLCBpdGVtOiBJTGVmdE5hdkl0ZW0sIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAvLyBFbWl0IGFuIGV2ZW50IHRoYXQgY2FuIGJlIGNhcHR1cmVkIGJ5IHBhcmVudCBhcHBsaWNhdGlvbnNcbiAgICB0aGlzLmlzTWVudUF0dGFjaGVkLnNldCh0cnVlKTtcbiAgICBcbiAgICAvLyBUcmFjayB3aGljaCBtZW51IGlzIG9wZW5cbiAgICB0aGlzLmFjdGl2ZU1lbnVJdGVtUmVmID0geyBpdGVtVHlwZSwgaW5kZXggfTtcbiAgICBcbiAgICB0aGlzLm9uRXZlbnQuZW1pdCh7XG4gICAgICB0eXBlOiAnTUVOVV9BVFRBQ0hFRCcsXG4gICAgICBpdGVtVHlwZSxcbiAgICAgIGl0ZW0sXG4gICAgICBpbmRleCxcbiAgICAgIGVsZW1lbnQ6IGV2ZW50LmVsZW1lbnQsXG4gICAgICBtZW51OiBldmVudC5tZW51XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlciBmb3IgdGhlIG9uRGV0YWNoZWQgZXZlbnQgZnJvbSB0aGUgTWVudURpcmVjdGl2ZVxuICAgKiBUaGlzIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBtZW51IGlzIGNsb3NlZC9kZXRhY2hlZFxuICAgKiBAcGFyYW0gZXZlbnQgVGhlIGV2ZW50IGRhdGEgY29udGFpbmluZyB0aGUgZWxlbWVudCBhbmQgbWVudSBjb25maWd1cmF0aW9uXG4gICAqIEBwYXJhbSBpdGVtVHlwZSBUaGUgdHlwZSBvZiBpdGVtICgnbmF2JyBvciAnZm9vdGVyJylcbiAgICogQHBhcmFtIGl0ZW0gVGhlIG5hdi9mb290ZXIgaXRlbSB0aGF0IHRoZSBtZW51IHdhcyBhdHRhY2hlZCB0b1xuICAgKiBAcGFyYW0gaW5kZXggVGhlIGluZGV4IG9mIHRoZSBpdGVtIGluIHRoZSBpdGVtcyBhcnJheVxuICAgKi9cbiAgb25NZW51RGV0YWNoZWQoZXZlbnQ6IHsgZWxlbWVudDogRWxlbWVudFJlZiwgbWVudTogSU1lbnUgfSwgaXRlbVR5cGU6ICduYXYnIHwgJ2Zvb3RlcicsIGl0ZW06IElMZWZ0TmF2SXRlbSwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuaXNNZW51QXR0YWNoZWQuc2V0KGZhbHNlKTtcbiAgICBcbiAgICAvLyBDbGVhciB0aGUgYWN0aXZlIG1lbnUgcmVmZXJlbmNlXG4gICAgdGhpcy5hY3RpdmVNZW51SXRlbVJlZiA9IG51bGw7XG4gICAgXG4gICAgdGhpcy5vbkV2ZW50LmVtaXQoe1xuICAgICAgdHlwZTogJ01FTlVfREVUQUNIRUQnLFxuICAgICAgaXRlbVR5cGUsXG4gICAgICBpdGVtLFxuICAgICAgaW5kZXgsXG4gICAgICBlbGVtZW50OiBldmVudC5lbGVtZW50LFxuICAgICAgbWVudTogZXZlbnQubWVudVxuICAgIH0pO1xuICB9XG5cblxufVxuXG5cbmNvbnN0IGRhdGE6IElMZWZ0TmF2ID0ge1xuICBpdGVtczogW3tcbiAgICB0aXRsZTogJ0hvbWUnLFxuICAgIGljb246ICcnLFxuICAgIGRpc2FibGU6IGZhbHNlLFxuICAgIHRvb2x0aXA6ICcnLFxuICAgIHJlbGF0aXZlUGF0aDogdHJ1ZSxcbiAgICBwYXRoOiAnaG9tZSdcbiAgfSwge1xuICAgIHRpdGxlOiAnUHJpY2luZycsXG4gICAgaWNvbjogJycsXG4gICAgZGlzYWJsZTogdHJ1ZSxcbiAgICB0b29sdGlwOiAnJyxcbiAgICByZWxhdGl2ZVBhdGg6IHRydWUsXG4gICAgcGF0aDogJydcbiAgfSwge1xuICAgIHRpdGxlOiAnU2V0dGluZycsXG4gICAgaWNvbjogJ3NldHRpbmdzT3V0bGluZWQnLFxuICAgIGRpc2FibGU6IHRydWUsXG4gICAgdG9vbHRpcDogJ2NvbWluZyBzb29uJyxcbiAgICByZWxhdGl2ZVBhdGg6IHRydWUsXG4gICAgcGF0aDogJydcbiAgfV0sXG4gIGZvb3Rlckl0ZW1zOiBbe1xuICAgIHRpdGxlOiAnSGVscCcsXG4gICAgaWNvbjogJ2NoYXRIZWxwT3V0bGluZWQnLFxuICAgIGRpc2FibGU6IHRydWUsXG4gICAgdG9vbHRpcDogJ2NvbWluZyBzb29uJ1xuICB9LCB7XG4gICAgdGl0bGU6ICdOYW1lJyxcbiAgICBkaXNhYmxlOiBmYWxzZSxcbiAgICB0b29sdGlwOiAnJyxcbiAgICB0eXBlOiAnQVZBVEFSJ1xuICB9LCB7XG4gICAgdGl0bGU6ICdDaGV2cm9uJyxcbiAgICBpY29uOiAnZG91YmxlRG93bk91dGxpbmVkJyxcbiAgICBkaXNhYmxlOiB0cnVlLFxuICAgIHRvb2x0aXA6ICcnXG4gIH1dXG59IiwiPGRpdiBjbGFzcz1cInNhLWxlZnQtbmF2XCIgPlxuXG4gICAgPGRpdiBjbGFzcz1cInNhLWxlZnQtbmF2LWNvbnRhaW5lciB7e2lzTWVudUF0dGFjaGVkKCkgPyAnbWVudS1hdHRhY2hlZCcgOiAnJ319XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYS1sZWZ0LW5hdi1sb2dvXCI+XG4gICAgICAgICAgICA8c2EtaWNvbiAoY2xpY2spPVwib25Mb2dvQ2xpY2soJGV2ZW50LCBjb25maWc/LmxvZ28pXCIgW21hdFRvb2x0aXBdPVwiY29uZmlnPy5sb2dvPy50b29sdGlwXCIgW21hdFRvb2x0aXBQb3NpdGlvbl09XCIncmlnaHQnXCIgbWF0VG9vbHRpcENsYXNzPVwic2EtbGVmdC1uYXYtdG9vbHRpcFwiIFtpY29uXT1cImNvbmZpZz8ubG9nbz8uaWNvblwiIFtzaXplXT1cImNvbmZpZz8ubG9nbz8uaWNvblNpemVcIj48L3NhLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2EtbGVmdC1uYXYtaXRlbXMtY29udGFpbmVyXCI+XG4gICAgICAgICAgICBAaWYoY29uZmlnICYmIGNvbmZpZz8uaXRlbXMgJiYgISFjb25maWc/Lml0ZW1zPy5sZW5ndGgpe1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNhLWxlZnQtbmF2LWl0ZW1zLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjb25maWc/Lml0ZW1zOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYS1sZWZ0LW5hdi1pdGVtc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNhLWxlZnQtbmF2LWl0ZW1cIiBbbmdDbGFzc109XCJpdGVtLmFjdGl2ZSA/ICdhY3RpdmUnIDogJycgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzYU1lbnVdPVwiaXRlbS5tZW51XCIgKG9uRXZlbnQpPVwib25FdmVudC5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQXR0YWNoZWQpPVwib25NZW51QXR0YWNoZWQoJGV2ZW50LCAnbmF2JywgaXRlbSwgaSlcIiAob25EZXRhY2hlZCk9XCJvbk1lbnVEZXRhY2hlZCgkZXZlbnQsICduYXYnLCBpdGVtLCBpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25OYXZJdGVtQ2xpY2soaXRlbSwgaSwgJGV2ZW50KVwiIChtb3VzZWVudGVyKT1cIm9uTmF2SXRlbUJsdXIoaXRlbSxpLCRldmVudCx0b29sdGlwKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAjdG9vbHRpcD1cIm1hdFRvb2x0aXBcIiBbbWF0VG9vbHRpcF09XCJpdGVtLnRvb2x0aXBcIiBtYXRUb29sdGlwUG9zaXRpb249XCJyaWdodFwiIG1hdFRvb2x0aXBDbGFzcz1cInNhLWxlZnQtbmF2LXRvb2x0aXBcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPHNhLWljb24gY2xhc3M9XCJzYS1sZWZ0LW5hdi1pdGVtLWljb25cIiBbaWNvbl09XCJpdGVtLmljb25cIiBbc2l6ZV09XCJpdGVtLmljb25TaXplIHx8ICcyNCdcIiBbY29sb3JdPVwiaXRlbS5hY3RpdmUgPyBpdGVtLmNvbG9yIDogJ3ZhcigtLWdyZXktMjAwKSdcIj48L3NhLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzcGFuPnt7aXRlbS50b29sdGlwfX08L3NwYW4+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cInNhLWxlZnQtbmF2LWl0ZW0taWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICdiYWNrZ3JvdW5kLWltYWdlJzogJ3VybCgnICsgaXRlbS5pY29uX3VybCArICcpJyB9XCI+PC9zcGFuPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJzYS1pY29uLWxhYmVsXCIgW25nQ2xhc3NdPVwiaXRlbS5hY3RpdmUgPyAnYWN0aXZlJyA6ICcnIFwiPnt7aXRlbS5pY29uTGFiZWx9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYS10ZW1wbGF0ZS1pdGVtLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgQGlmKGNvbmZpZyAmJiBjb25maWcudGVtcGxhdGVJdGVtcyAmJiAhIWNvbmZpZy50ZW1wbGF0ZUl0ZW1zLmxlbmd0aCl7XG4gICAgICAgICAgICA8ZGl2IChjbGljayk9XCJvblRlbXBsYXRlSXRlbUNsaWNrKCRldmVudCwgaSwgaXRlbSlcIiBjbGFzcz1cInNhLXRlbXBsYXRlLWl0ZW1cIiBbbmdDbGFzc109XCJpdGVtLmNsYXNzTmFtZVwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNvbmZpZy50ZW1wbGF0ZUl0ZW1zOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgPHNhLWljb24gW21hdFRvb2x0aXBdPVwiaXRlbS50b29sdGlwXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIiBtYXRUb29sdGlwQ2xhc3M9XCJzYS1sZWZ0LW5hdi10b29sdGlwIHNhLWxlZnQtbmF2LXRlbXBsYXRlLXRvb2x0aXBcIiBbaWNvbl09XCJpdGVtLmljb25cIiBbc2l6ZV09XCJpdGVtLmljb25TaXplIHx8ICcyNCdcIiBbY29sb3JdPVwiaXRlbS5jb2xvclwiPjwvc2EtaWNvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNhLWxlZnQtbmF2LWZvb3RlclwiPlxuICAgICAgICAgICAgQGlmKGNvbmZpZyAmJiBjb25maWcuZm9vdGVySXRlbXMgJiYgISFjb25maWcuZm9vdGVySXRlbXMubGVuZ3RoKXtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYS1sZWZ0LW5hdi1mb290ZXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNhLWxlZnQtbmF2LWZvb3Rlci1pdGVtXCIgW25nQ2xhc3NdPVwiaXRlbS5jbGFzc05hbWVcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjb25maWcuZm9vdGVySXRlbXM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3Rlci1pdGVtLWljb25cIiBbbmdDbGFzc109XCJpdGVtLmFjdGl2ZSA/ICdhY3RpdmUnIDogJycgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkZvb3Rlckl0ZW1DbGljayhpdGVtLCBpLCAkZXZlbnQpXCIgKG9uRXZlbnQpPVwib25FdmVudC5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NhTWVudV09XCJpdGVtLm1lbnVcIiAob25BdHRhY2hlZCk9XCJvbk1lbnVBdHRhY2hlZCgkZXZlbnQsICdmb290ZXInLCBpdGVtLCBpKVwiIChvbkRldGFjaGVkKT1cIm9uTWVudURldGFjaGVkKCRldmVudCwgJ2Zvb3RlcicsIGl0ZW0sIGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cIm9uRm9vdGVySXRlbUJsdXIoaXRlbSxpLCRldmVudCx0b29sdGlwKVwiICN0b29sdGlwPVwibWF0VG9vbHRpcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJpdGVtLnRvb2x0aXBcIiBtYXRUb29sdGlwUG9zaXRpb249XCJyaWdodFwiIG1hdFRvb2x0aXBDbGFzcz1cInNhLWxlZnQtbmF2LXRvb2x0aXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZihpdGVtLnR5cGUgPT09ICdBVkFUQVInKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJzYS1sZWZ0LW5hdi1mb290ZXItbmFtZVwiPkVUPC9zcGFuPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzYS1hdmF0YXIgW2FsdFRleHRdPVwiaXRlbS5hbHRUZXh0XCIgW2ltYWdlUGF0aF09XCInJ1wiIHNpemU9XCJleHRyYS1zbWFsbFwiPjwvc2EtYXZhdGFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgfUBlbHNle1xuICAgICAgICAgICAgICAgICAgICAgICAgPHNhLWljb24gY2xhc3M9XCJzYS1sZWZ0LW5hdi1mb290ZXItaWNvblwiIFtpY29uXT1cIml0ZW0uaWNvblwiIHNpemU9XCIyNFwiIGNvbG9yPVwid2hpdGVcIj48L3NhLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNpIHNzPVwic2EtbGVmdC1uYXYtZm9vdGVyLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ2JhY2tncm91bmQtaW1hZ2UnOiAndXJsKCcgKyBpdGVtLmljb25fdXJsIHx8ICcnICsgJyknIH1cIj48L3NwYW4+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJzYS1pY29uLWxhYmVsXCIgW25nQ2xhc3NdPVwiaXRlbS5hY3RpdmUgPyAnYWN0aXZlJyA6ICcnIFwiPnt7aXRlbS5pY29uTGFiZWx9fTwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJzYS1sZWZ0LW5hdi1jb250ZW50XCI+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cblxuPC9kaXY+Il19
@@ -53,6 +53,8 @@ export class SAMenuComponent {
53
53
  onMenuItemClick(event, item) {
54
54
  // item.isSelected = !item.isSelected;
55
55
  this.onEvent.emit({ type: 'CLICK', item, menu: this.menu });
56
+ // Close the menu after the item is clicked, just like the close button
57
+ this.closeEvent.emit(event);
56
58
  }
57
59
  onSearch(event) {
58
60
  this.onEvent.emit({ type: 'SEARCH', value: event.target.value });
@@ -62,7 +64,7 @@ export class SAMenuComponent {
62
64
  this.onEvent.emit({ type: 'TAB_CLICK', activeTab: tabname, menu: this.menu });
63
65
  }
64
66
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: SAMenuComponent, deps: [{ token: i1.Overlay }], target: i0.ɵɵFactoryTarget.Component }); }
65
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: SAMenuComponent, isStandalone: true, selector: "sa-menu", inputs: { position: "position", menu: "menu", hostEl: "hostEl" }, outputs: { onEvent: "onEvent", onKeyUpEvent: "onKeyUpEvent", closeEvent: "closeEvent" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"sa-menu\" [ngClass]=\"menu.showTray ? 'sa-menu-tray sa-round-border' : ''\"\n [ngStyle]=\"{width: menu.width || 'max-content'}\">\n\n @if(menu?.title){\n <div class=\"sa-menu-title\">\n <h1>{{menu?.title}}</h1>\n <sa-icon [icon]=\"'closeOutlined'\" [size]=\"'20'\" class=\"sa-menu-close-icon\"\n (click)=\"closeEvent.emit($event)\"></sa-icon>\n </div>\n }\n\n @if(menu?.showSearch){\n <div class=\"search-container\">\n <sa-icon icon=\"search\"></sa-icon>\n <input class=\"search-input\" (keyup)=\"onSearch($event)\" type=\"text\" [placeholder]=\"menu.searchPlaceholder\" />\n <button *ngIf=\"menu?.showAddIcon\"><i class=\"fas fa-plus\"></i></button>\n </div>\n }\n\n <!-- @if(menu?.itemGroups && menu.itemGroups.length){\n @for (groupItem of menu.itemGroups; track groupItem) {\n <div class=\"sa-menu-group\">\n <h2>{{groupItem.groupTitle}}</h2>\n \n @for (item of groupItem.items; track $index) {\n <sa-menu-item [item]=\"item\" [showRound]=\"menu.showTray\" (click)=\"onMenuItemClick($event, item)\"></sa-menu-item>\n }\n </div>\n }\n } @else if(menu?.items && menu.items.length){\n <div class=\"sa-menu-items\">\n @for (item of menu.items; track item) {\n <sa-menu-item [item]=\"item\" (click)=\"onMenuItemClick($event, item)\"></sa-menu-item>\n }\n </div>\n } -->\n\n\n <!-- Tab Content or Item Groups -->\n <div class=\"sa-menu-content\" *ngIf=\"menu?.itemGroups?.length || menu?.tabs?.length\">\n <!-- Tabs -->\n @if(menu?.tabs){\n <div class=\"sa-menu-tabs\">\n <button *ngFor=\"let tab of menu.tabs; let i = index\" [class.active]=\"i === activeTabIndex\"\n (click)=\"setActiveTab(i,tab.label)\">\n {{ tab.label }}\n <!-- ({{ tab.itemGroups.length }}) -->\n </button>\n </div>\n }\n <!-- Tabs End -->\n\n @if(menu?.tabs?.length){\n @if(menu.tabs[activeTabIndex]?.itemGroups?.length){\n <ng-container *ngFor=\"let groupItem of menu.tabs[activeTabIndex].itemGroups\">\n <div class=\"sa-menu-group\">\n <h2>{{groupItem.groupTitle}}</h2>\n <ng-container *ngFor=\"let item of groupItem.items\">\n <sa-menu-item [item]=\"item\" [showRound]=\"menu.showTray\"\n (click)=\"onMenuItemClick($event, item)\"></sa-menu-item>\n </ng-container>\n </div>\n </ng-container>\n }\n } @else if(menu?.itemGroups?.length){\n <ng-container *ngFor=\"let groupItem of menu.itemGroups\">\n <div class=\"sa-menu-group\">\n <h2>{{groupItem.groupTitle}}</h2>\n <ng-container *ngFor=\"let item of groupItem.items\">\n <sa-menu-item [item]=\"item\" [showRound]=\"menu.showTray\"\n (click)=\"onMenuItemClick($event, item)\"></sa-menu-item>\n </ng-container>\n </div>\n </ng-container>\n }\n </div>\n\n @if(menu?.items && menu.items.length){\n <div class=\"sa-menu-items\">\n @for (item of menu.items; track item) {\n <sa-menu-item [item]=\"item\" (click)=\"onMenuItemClick($event, item)\"></sa-menu-item>\n }\n </div>\n }\n\n</div>", styles: [".sa-menu{background-color:var(--primary-900);box-shadow:3px 4px 16px 4px #00000014;width:max-content;color:#fff;overflow-y:auto;max-height:100%}.sa-round-border{border-radius:8px}.sa-menu-tray{height:calc(100vh - 16px);margin-top:8px;border-top-left-radius:0;border-bottom-left-radius:0;background:var(--grey-700, #1D2939);padding:0 1rem 1rem}sa-menu-item{cursor:pointer;display:block}.sa-menu-title{display:flex;justify-content:space-between;align-items:center;position:fixed;padding:1rem 0 .5rem;height:64px;width:calc(100% - 2rem);border-bottom:1px solid var(--primary-50, #F4EBFF);background:var(--grey-700, #1D2939)}.sa-menu-title h1{color:var(--grey-100, #EAECF0);font-family:var(--font-family, Roboto);font-size:16px;font-style:normal;font-weight:400;line-height:24px;letter-spacing:.5px;margin-bottom:0;margin-top:0}.sa-menu-close-icon{cursor:pointer;margin-left:auto;height:20px}.search-container{position:relative;display:flex;align-items:center;margin-bottom:1rem}.search-container input{flex:1;padding:.5rem .5rem .5rem 2rem;background-color:#4a5568;border-radius:.25rem;font-size:.875rem;border:none;outline:none;color:#fff;box-sizing:border-box}.search-container .search-icon{position:absolute;left:.5rem;font-size:1rem;color:#888;pointer-events:none}.search-container button{margin-left:.5rem;background-color:#6b46c1;padding:.5rem;border-radius:.25rem;border:none;cursor:pointer}.sa-menu-group{margin-bottom:1rem;padding-bottom:.8rem;border-bottom:1px solid #ccc}.sa-menu-group:last-child{border-bottom:none}.sa-menu-group h2{color:var(--grey-300, #D0D5DD);font-family:var(--font-family, Roboto);font-size:11px;font-style:normal;font-weight:400;line-height:16px;letter-spacing:.5px;text-transform:uppercase;margin-bottom:.5rem}.MenuBar{width:max-content;margin-top:8px;background-color:var(--grey-400);border-top-left-radius:0;border-bottom-left-radius:0;background-color:#2d3748;padding:0}.sa-menu-tabs{display:flex;border-bottom:1px solid #ccc;margin-bottom:1rem}.sa-menu-tabs button{flex:1;padding:.5rem 1rem;background:none;border:none;cursor:pointer;font-size:12px;font-style:normal;font-weight:400;line-height:16px;color:#888;border-bottom:2px solid transparent;transition:all .5s ease}.sa-menu-tabs button.active{color:#f7f3f3;border-bottom:2px solid #f7f7f7;font-size:12px;font-style:normal;font-weight:600;line-height:16px;letter-spacing:.5px}.sa-menu-content{padding:5rem 0}.sa-menu-group{margin-bottom:1rem}\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: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: SAMenuItemComponent, selector: "sa-menu-item", inputs: ["item", "showRound"] }, { kind: "component", type: IconComponent, selector: "sa-icon", inputs: ["img", "icon", "size", "color", "iconPath", "iconUrl", "customClass", "href", "hrefTarget"], outputs: ["onClickEvent"] }] }); }
67
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: SAMenuComponent, isStandalone: true, selector: "sa-menu", inputs: { position: "position", menu: "menu", hostEl: "hostEl" }, outputs: { onEvent: "onEvent", onKeyUpEvent: "onKeyUpEvent", closeEvent: "closeEvent" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"sa-menu\" [ngClass]=\"menu.showTray ? 'sa-menu-tray sa-round-border' : ''\"\n [ngStyle]=\"{width: menu.width || 'max-content'}\">\n\n @if(menu?.title){\n <div class=\"sa-menu-title\">\n <h1>{{menu?.title}}</h1>\n <sa-icon [icon]=\"'closeOutlined'\" [size]=\"'20'\" class=\"sa-menu-close-icon\"\n (click)=\"closeEvent.emit($event)\"></sa-icon>\n </div>\n }\n\n <!-- @if(menu?.itemGroups && menu.itemGroups.length){\n @for (groupItem of menu.itemGroups; track groupItem) {\n <div class=\"sa-menu-group\">\n <h2>{{groupItem.groupTitle}}</h2>\n \n @for (item of groupItem.items; track $index) {\n <sa-menu-item [item]=\"item\" [showRound]=\"menu.showTray\" (click)=\"onMenuItemClick($event, item)\"></sa-menu-item>\n }\n </div>\n }\n } @else if(menu?.items && menu.items.length){\n <div class=\"sa-menu-items\">\n @for (item of menu.items; track item) {\n <sa-menu-item [item]=\"item\" (click)=\"onMenuItemClick($event, item)\"></sa-menu-item>\n }\n </div>\n } -->\n\n\n <!-- Tab Content or Item Groups -->\n <div class=\"sa-menu-content\">\n\n @if(menu?.showSearch){\n <div class=\"search-container\">\n <sa-icon icon=\"search\"></sa-icon>\n <input class=\"search-input\" (keyup)=\"onSearch($event)\" type=\"text\" [placeholder]=\"menu.searchPlaceholder\" \n />\n <button *ngIf=\"menu?.showAddIcon\"><i class=\"fas fa-plus\"></i></button>\n </div>\n }\n \n <!-- Tabs -->\n @if(menu?.tabs){\n <div class=\"sa-menu-tabs\">\n <button *ngFor=\"let tab of menu.tabs; let i = index\" [class.active]=\"i === activeTabIndex\"\n (click)=\"setActiveTab(i,tab.label)\">\n {{ tab.label }}\n <!-- ({{ tab.itemGroups.length }}) -->\n </button>\n </div>\n }\n <!-- Tabs End -->\n\n @if(menu?.tabs?.length){\n @if(menu.tabs[activeTabIndex]?.itemGroups?.length){\n <ng-container *ngFor=\"let groupItem of menu.tabs[activeTabIndex].itemGroups\">\n <div class=\"sa-menu-group\">\n <h2>{{groupItem.groupTitle}}</h2>\n <ng-container *ngFor=\"let item of groupItem.items\">\n <sa-menu-item [item]=\"item\" [showRound]=\"menu.showTray\"\n (click)=\"onMenuItemClick($event, item)\"></sa-menu-item>\n </ng-container>\n </div>\n </ng-container>\n }\n } @else if(menu?.itemGroups?.length){\n <ng-container *ngFor=\"let groupItem of menu.itemGroups\">\n <div class=\"sa-menu-group\">\n <h2>{{groupItem.groupTitle}}</h2>\n <ng-container *ngFor=\"let item of groupItem.items\">\n <sa-menu-item [item]=\"item\" [showRound]=\"menu.showTray\"\n (click)=\"onMenuItemClick($event, item)\"></sa-menu-item>\n </ng-container>\n </div>\n </ng-container>\n }\n </div>\n\n @if(menu?.items && menu.items.length){\n <div class=\"sa-menu-items\">\n @for (item of menu.items; track item) {\n <sa-menu-item [item]=\"item\" (click)=\"onMenuItemClick($event, item)\"></sa-menu-item>\n }\n </div>\n }\n\n</div>", styles: [".sa-menu{background-color:var(--primary-900);box-shadow:3px 4px 16px 4px #00000014;width:max-content;color:#fff;overflow-y:auto;max-height:100%}.sa-round-border{border-radius:8px}.sa-menu-tray{height:calc(100vh - 16px);margin-top:8px;border-top-left-radius:0;border-bottom-left-radius:0;background:var(--grey-700, #1D2939);padding:0 1rem 1rem;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.3) transparent}.sa-menu-tray::-webkit-scrollbar{width:6px}.sa-menu-tray::-webkit-scrollbar-track{background:transparent}.sa-menu-tray::-webkit-scrollbar-thumb{background-color:#ffffff4d;border-radius:3px}sa-menu-item{cursor:pointer;display:block}.sa-menu-title{display:flex;justify-content:space-between;align-items:center;position:fixed;padding:1rem 0 .5rem;height:64px;width:calc(100% - 2rem);border-bottom:1px solid var(--primary-50, #F4EBFF);background:var(--grey-700, #1D2939)}.sa-menu-title h1{color:var(--grey-100, #EAECF0);font-family:var(--font-family, Roboto);font-size:16px;font-style:normal;font-weight:400;line-height:24px;letter-spacing:.5px;margin-bottom:0;margin-top:0}.sa-menu-close-icon{cursor:pointer;margin-left:auto;height:20px}.search-container{position:relative;display:flex;align-items:center;margin-bottom:1rem}.search-container input{flex:1;padding:.5rem .5rem .5rem 2rem;background-color:#4a5568;border-radius:.25rem;font-size:.875rem;border:none;outline:none;color:#fff;box-sizing:border-box}.search-container .search-icon{position:absolute;left:.5rem;font-size:1rem;color:#888;pointer-events:none}.search-container button{margin-left:.5rem;background-color:#6b46c1;padding:.5rem;border-radius:.25rem;border:none;cursor:pointer}.sa-menu-group{margin-bottom:1rem;padding-bottom:.8rem;border-bottom:1px solid var(--grey-400, #475467)}.sa-menu-group:last-child{border-bottom:none}.sa-menu-group h2{color:var(--grey-300, #D0D5DD);font-family:var(--font-family, Roboto);font-size:11px;font-style:normal;font-weight:400;line-height:16px;letter-spacing:.5px;text-transform:uppercase;margin-bottom:.5rem}.MenuBar{width:max-content;margin-top:8px;background-color:var(--grey-400);border-top-left-radius:0;border-bottom-left-radius:0;background-color:#2d3748;padding:0}.sa-menu-tabs{display:flex;border-bottom:1px solid #ccc;margin-bottom:1rem}.sa-menu-tabs button{flex:1;padding:.5rem 1rem;background:none;border:none;cursor:pointer;font-size:12px;font-style:normal;font-weight:400;line-height:16px;color:#888;border-bottom:2px solid transparent;transition:all .5s ease}.sa-menu-tabs button.active{color:#f7f3f3;border-bottom:2px solid #f7f7f7;font-size:12px;font-style:normal;font-weight:600;line-height:16px;letter-spacing:.5px}.sa-menu-content{padding:5rem 0}.sa-menu-group{margin-bottom:1rem}\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: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: SAMenuItemComponent, selector: "sa-menu-item", inputs: ["item", "showRound"] }, { kind: "component", type: IconComponent, selector: "sa-icon", inputs: ["img", "icon", "size", "color", "iconPath", "iconUrl", "customClass", "href", "hrefTarget"], outputs: ["onClickEvent"] }] }); }
66
68
  }
67
69
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: SAMenuComponent, decorators: [{
68
70
  type: Component,
@@ -73,7 +75,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
73
75
  MatMenuItem,
74
76
  ChipsComponent,
75
77
  IconComponent
76
- ], template: "<div class=\"sa-menu\" [ngClass]=\"menu.showTray ? 'sa-menu-tray sa-round-border' : ''\"\n [ngStyle]=\"{width: menu.width || 'max-content'}\">\n\n @if(menu?.title){\n <div class=\"sa-menu-title\">\n <h1>{{menu?.title}}</h1>\n <sa-icon [icon]=\"'closeOutlined'\" [size]=\"'20'\" class=\"sa-menu-close-icon\"\n (click)=\"closeEvent.emit($event)\"></sa-icon>\n </div>\n }\n\n @if(menu?.showSearch){\n <div class=\"search-container\">\n <sa-icon icon=\"search\"></sa-icon>\n <input class=\"search-input\" (keyup)=\"onSearch($event)\" type=\"text\" [placeholder]=\"menu.searchPlaceholder\" />\n <button *ngIf=\"menu?.showAddIcon\"><i class=\"fas fa-plus\"></i></button>\n </div>\n }\n\n <!-- @if(menu?.itemGroups && menu.itemGroups.length){\n @for (groupItem of menu.itemGroups; track groupItem) {\n <div class=\"sa-menu-group\">\n <h2>{{groupItem.groupTitle}}</h2>\n \n @for (item of groupItem.items; track $index) {\n <sa-menu-item [item]=\"item\" [showRound]=\"menu.showTray\" (click)=\"onMenuItemClick($event, item)\"></sa-menu-item>\n }\n </div>\n }\n } @else if(menu?.items && menu.items.length){\n <div class=\"sa-menu-items\">\n @for (item of menu.items; track item) {\n <sa-menu-item [item]=\"item\" (click)=\"onMenuItemClick($event, item)\"></sa-menu-item>\n }\n </div>\n } -->\n\n\n <!-- Tab Content or Item Groups -->\n <div class=\"sa-menu-content\" *ngIf=\"menu?.itemGroups?.length || menu?.tabs?.length\">\n <!-- Tabs -->\n @if(menu?.tabs){\n <div class=\"sa-menu-tabs\">\n <button *ngFor=\"let tab of menu.tabs; let i = index\" [class.active]=\"i === activeTabIndex\"\n (click)=\"setActiveTab(i,tab.label)\">\n {{ tab.label }}\n <!-- ({{ tab.itemGroups.length }}) -->\n </button>\n </div>\n }\n <!-- Tabs End -->\n\n @if(menu?.tabs?.length){\n @if(menu.tabs[activeTabIndex]?.itemGroups?.length){\n <ng-container *ngFor=\"let groupItem of menu.tabs[activeTabIndex].itemGroups\">\n <div class=\"sa-menu-group\">\n <h2>{{groupItem.groupTitle}}</h2>\n <ng-container *ngFor=\"let item of groupItem.items\">\n <sa-menu-item [item]=\"item\" [showRound]=\"menu.showTray\"\n (click)=\"onMenuItemClick($event, item)\"></sa-menu-item>\n </ng-container>\n </div>\n </ng-container>\n }\n } @else if(menu?.itemGroups?.length){\n <ng-container *ngFor=\"let groupItem of menu.itemGroups\">\n <div class=\"sa-menu-group\">\n <h2>{{groupItem.groupTitle}}</h2>\n <ng-container *ngFor=\"let item of groupItem.items\">\n <sa-menu-item [item]=\"item\" [showRound]=\"menu.showTray\"\n (click)=\"onMenuItemClick($event, item)\"></sa-menu-item>\n </ng-container>\n </div>\n </ng-container>\n }\n </div>\n\n @if(menu?.items && menu.items.length){\n <div class=\"sa-menu-items\">\n @for (item of menu.items; track item) {\n <sa-menu-item [item]=\"item\" (click)=\"onMenuItemClick($event, item)\"></sa-menu-item>\n }\n </div>\n }\n\n</div>", styles: [".sa-menu{background-color:var(--primary-900);box-shadow:3px 4px 16px 4px #00000014;width:max-content;color:#fff;overflow-y:auto;max-height:100%}.sa-round-border{border-radius:8px}.sa-menu-tray{height:calc(100vh - 16px);margin-top:8px;border-top-left-radius:0;border-bottom-left-radius:0;background:var(--grey-700, #1D2939);padding:0 1rem 1rem}sa-menu-item{cursor:pointer;display:block}.sa-menu-title{display:flex;justify-content:space-between;align-items:center;position:fixed;padding:1rem 0 .5rem;height:64px;width:calc(100% - 2rem);border-bottom:1px solid var(--primary-50, #F4EBFF);background:var(--grey-700, #1D2939)}.sa-menu-title h1{color:var(--grey-100, #EAECF0);font-family:var(--font-family, Roboto);font-size:16px;font-style:normal;font-weight:400;line-height:24px;letter-spacing:.5px;margin-bottom:0;margin-top:0}.sa-menu-close-icon{cursor:pointer;margin-left:auto;height:20px}.search-container{position:relative;display:flex;align-items:center;margin-bottom:1rem}.search-container input{flex:1;padding:.5rem .5rem .5rem 2rem;background-color:#4a5568;border-radius:.25rem;font-size:.875rem;border:none;outline:none;color:#fff;box-sizing:border-box}.search-container .search-icon{position:absolute;left:.5rem;font-size:1rem;color:#888;pointer-events:none}.search-container button{margin-left:.5rem;background-color:#6b46c1;padding:.5rem;border-radius:.25rem;border:none;cursor:pointer}.sa-menu-group{margin-bottom:1rem;padding-bottom:.8rem;border-bottom:1px solid #ccc}.sa-menu-group:last-child{border-bottom:none}.sa-menu-group h2{color:var(--grey-300, #D0D5DD);font-family:var(--font-family, Roboto);font-size:11px;font-style:normal;font-weight:400;line-height:16px;letter-spacing:.5px;text-transform:uppercase;margin-bottom:.5rem}.MenuBar{width:max-content;margin-top:8px;background-color:var(--grey-400);border-top-left-radius:0;border-bottom-left-radius:0;background-color:#2d3748;padding:0}.sa-menu-tabs{display:flex;border-bottom:1px solid #ccc;margin-bottom:1rem}.sa-menu-tabs button{flex:1;padding:.5rem 1rem;background:none;border:none;cursor:pointer;font-size:12px;font-style:normal;font-weight:400;line-height:16px;color:#888;border-bottom:2px solid transparent;transition:all .5s ease}.sa-menu-tabs button.active{color:#f7f3f3;border-bottom:2px solid #f7f7f7;font-size:12px;font-style:normal;font-weight:600;line-height:16px;letter-spacing:.5px}.sa-menu-content{padding:5rem 0}.sa-menu-group{margin-bottom:1rem}\n"] }]
78
+ ], template: "<div class=\"sa-menu\" [ngClass]=\"menu.showTray ? 'sa-menu-tray sa-round-border' : ''\"\n [ngStyle]=\"{width: menu.width || 'max-content'}\">\n\n @if(menu?.title){\n <div class=\"sa-menu-title\">\n <h1>{{menu?.title}}</h1>\n <sa-icon [icon]=\"'closeOutlined'\" [size]=\"'20'\" class=\"sa-menu-close-icon\"\n (click)=\"closeEvent.emit($event)\"></sa-icon>\n </div>\n }\n\n <!-- @if(menu?.itemGroups && menu.itemGroups.length){\n @for (groupItem of menu.itemGroups; track groupItem) {\n <div class=\"sa-menu-group\">\n <h2>{{groupItem.groupTitle}}</h2>\n \n @for (item of groupItem.items; track $index) {\n <sa-menu-item [item]=\"item\" [showRound]=\"menu.showTray\" (click)=\"onMenuItemClick($event, item)\"></sa-menu-item>\n }\n </div>\n }\n } @else if(menu?.items && menu.items.length){\n <div class=\"sa-menu-items\">\n @for (item of menu.items; track item) {\n <sa-menu-item [item]=\"item\" (click)=\"onMenuItemClick($event, item)\"></sa-menu-item>\n }\n </div>\n } -->\n\n\n <!-- Tab Content or Item Groups -->\n <div class=\"sa-menu-content\">\n\n @if(menu?.showSearch){\n <div class=\"search-container\">\n <sa-icon icon=\"search\"></sa-icon>\n <input class=\"search-input\" (keyup)=\"onSearch($event)\" type=\"text\" [placeholder]=\"menu.searchPlaceholder\" \n />\n <button *ngIf=\"menu?.showAddIcon\"><i class=\"fas fa-plus\"></i></button>\n </div>\n }\n \n <!-- Tabs -->\n @if(menu?.tabs){\n <div class=\"sa-menu-tabs\">\n <button *ngFor=\"let tab of menu.tabs; let i = index\" [class.active]=\"i === activeTabIndex\"\n (click)=\"setActiveTab(i,tab.label)\">\n {{ tab.label }}\n <!-- ({{ tab.itemGroups.length }}) -->\n </button>\n </div>\n }\n <!-- Tabs End -->\n\n @if(menu?.tabs?.length){\n @if(menu.tabs[activeTabIndex]?.itemGroups?.length){\n <ng-container *ngFor=\"let groupItem of menu.tabs[activeTabIndex].itemGroups\">\n <div class=\"sa-menu-group\">\n <h2>{{groupItem.groupTitle}}</h2>\n <ng-container *ngFor=\"let item of groupItem.items\">\n <sa-menu-item [item]=\"item\" [showRound]=\"menu.showTray\"\n (click)=\"onMenuItemClick($event, item)\"></sa-menu-item>\n </ng-container>\n </div>\n </ng-container>\n }\n } @else if(menu?.itemGroups?.length){\n <ng-container *ngFor=\"let groupItem of menu.itemGroups\">\n <div class=\"sa-menu-group\">\n <h2>{{groupItem.groupTitle}}</h2>\n <ng-container *ngFor=\"let item of groupItem.items\">\n <sa-menu-item [item]=\"item\" [showRound]=\"menu.showTray\"\n (click)=\"onMenuItemClick($event, item)\"></sa-menu-item>\n </ng-container>\n </div>\n </ng-container>\n }\n </div>\n\n @if(menu?.items && menu.items.length){\n <div class=\"sa-menu-items\">\n @for (item of menu.items; track item) {\n <sa-menu-item [item]=\"item\" (click)=\"onMenuItemClick($event, item)\"></sa-menu-item>\n }\n </div>\n }\n\n</div>", styles: [".sa-menu{background-color:var(--primary-900);box-shadow:3px 4px 16px 4px #00000014;width:max-content;color:#fff;overflow-y:auto;max-height:100%}.sa-round-border{border-radius:8px}.sa-menu-tray{height:calc(100vh - 16px);margin-top:8px;border-top-left-radius:0;border-bottom-left-radius:0;background:var(--grey-700, #1D2939);padding:0 1rem 1rem;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.3) transparent}.sa-menu-tray::-webkit-scrollbar{width:6px}.sa-menu-tray::-webkit-scrollbar-track{background:transparent}.sa-menu-tray::-webkit-scrollbar-thumb{background-color:#ffffff4d;border-radius:3px}sa-menu-item{cursor:pointer;display:block}.sa-menu-title{display:flex;justify-content:space-between;align-items:center;position:fixed;padding:1rem 0 .5rem;height:64px;width:calc(100% - 2rem);border-bottom:1px solid var(--primary-50, #F4EBFF);background:var(--grey-700, #1D2939)}.sa-menu-title h1{color:var(--grey-100, #EAECF0);font-family:var(--font-family, Roboto);font-size:16px;font-style:normal;font-weight:400;line-height:24px;letter-spacing:.5px;margin-bottom:0;margin-top:0}.sa-menu-close-icon{cursor:pointer;margin-left:auto;height:20px}.search-container{position:relative;display:flex;align-items:center;margin-bottom:1rem}.search-container input{flex:1;padding:.5rem .5rem .5rem 2rem;background-color:#4a5568;border-radius:.25rem;font-size:.875rem;border:none;outline:none;color:#fff;box-sizing:border-box}.search-container .search-icon{position:absolute;left:.5rem;font-size:1rem;color:#888;pointer-events:none}.search-container button{margin-left:.5rem;background-color:#6b46c1;padding:.5rem;border-radius:.25rem;border:none;cursor:pointer}.sa-menu-group{margin-bottom:1rem;padding-bottom:.8rem;border-bottom:1px solid var(--grey-400, #475467)}.sa-menu-group:last-child{border-bottom:none}.sa-menu-group h2{color:var(--grey-300, #D0D5DD);font-family:var(--font-family, Roboto);font-size:11px;font-style:normal;font-weight:400;line-height:16px;letter-spacing:.5px;text-transform:uppercase;margin-bottom:.5rem}.MenuBar{width:max-content;margin-top:8px;background-color:var(--grey-400);border-top-left-radius:0;border-bottom-left-radius:0;background-color:#2d3748;padding:0}.sa-menu-tabs{display:flex;border-bottom:1px solid #ccc;margin-bottom:1rem}.sa-menu-tabs button{flex:1;padding:.5rem 1rem;background:none;border:none;cursor:pointer;font-size:12px;font-style:normal;font-weight:400;line-height:16px;color:#888;border-bottom:2px solid transparent;transition:all .5s ease}.sa-menu-tabs button.active{color:#f7f3f3;border-bottom:2px solid #f7f7f7;font-size:12px;font-style:normal;font-weight:600;line-height:16px;letter-spacing:.5px}.sa-menu-content{padding:5rem 0}.sa-menu-group{margin-bottom:1rem}\n"] }]
77
79
  }], ctorParameters: () => [{ type: i1.Overlay }], propDecorators: { position: [{
78
80
  type: Input
79
81
  }], menu: [{
@@ -87,4 +89,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
87
89
  }], closeEvent: [{
88
90
  type: Output
89
91
  }] } });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL21lbnUvbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL21lbnUvbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBR04sWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxPQUFPLEVBRVAsV0FBVyxHQUVaLE1BQU0sd0JBQXdCLENBQUM7QUFTaEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBSS9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7QUE4QnZELE1BQU0sT0FBTyxlQUFlO0lBVzFCLFlBQ1UsT0FBZ0I7UUFBaEIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQVhqQixhQUFRLEdBQXdDLFFBQVEsQ0FBQyxDQUFDLG1CQUFtQjtRQUc1RSxZQUFPLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDaEQsaUJBQVksR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNyRCxlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDN0QsMkNBQTJDO1FBRTNDLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFvRDVCLG1CQUFjLEdBQVcsQ0FBQyxDQUFDLENBQUMsNkJBQTZCO0lBL0N6RCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwRCxPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUFrQyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUU5RSw4Q0FBOEM7WUFDOUMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDNUUsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7WUFDMUIsQ0FBQztZQUVELHNFQUFzRTtZQUN0RSwyREFBMkQ7WUFDM0QsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCw4RUFBOEU7Z0JBQzlFLE9BQU8sQ0FBQyxHQUFHLENBQUMsK0NBQStDLENBQUMsQ0FBQztZQUMvRCxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDUixDQUFDO0lBQ0gsQ0FBQztJQUNELGVBQWU7UUFDYixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztJQUN6QixDQUFDO0lBQ0QsV0FBVztRQUNULDREQUE0RDtRQUM1RCxvRkFBb0Y7UUFDcEYsaUZBQWlGO1FBQ2pGLHdGQUF3RjtRQUN4RiwwRkFBMEY7UUFDMUYsS0FBSztRQUVMLDRDQUE0QztRQUM1QyxnRUFBZ0U7UUFDaEUsd0RBQXdEO1FBQ3hELCtDQUErQztRQUMvQyxvR0FBb0c7UUFDcEcsbURBQW1EO0lBQ3JELENBQUM7SUFFRCxlQUFlLENBQUMsS0FBVSxFQUFFLElBQWU7UUFDekMsc0NBQXNDO1FBQ3RDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUMsQ0FBQyxDQUFBO0lBQzNELENBQUM7SUFFRCxRQUFRLENBQUMsS0FBVTtRQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQTtJQUMvRCxDQUFDO0lBSUQsWUFBWSxDQUFDLEtBQWEsRUFBQyxPQUFPO1FBQ2hDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLENBQUMsOEJBQThCO1FBQzNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQTtJQUM1RSxDQUFDOzhHQWxFVSxlQUFlO2tHQUFmLGVBQWUsbVBDMUQ1Qix3N0dBcUZNLDY3RURsREYsWUFBWSxtYkFDWixtQkFBbUIsd0ZBSW5CLGFBQWE7OzJGQWtCSixlQUFlO2tCQTNCM0IsU0FBUzsrQkFDRSxTQUFTLGNBQ1AsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixPQUFPO3dCQUNQLFdBQVc7d0JBQ1gsY0FBYzt3QkFDZCxhQUFhO3FCQUNkOzRFQWtCUSxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0ksT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIE9uQ2hhbmdlcyxcbiAgRXZlbnRFbWl0dGVyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIE1hdE1lbnUsXG4gIE1hdE1lbnVEZWZhdWx0T3B0aW9ucyxcbiAgTWF0TWVudUl0ZW0sXG4gIE1hdE1lbnVUcmlnZ2VyLFxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7XG4gIE92ZXJsYXksXG4gIFBvc2l0aW9uU3RyYXRlZ3ksXG4gIENvbm5lY3RlZFBvc2l0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IENhcmRDb21wb25lbnQgfSBmcm9tICcuLi9jYXJkL2NhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUnO1xuaW1wb3J0IHsgU0FNZW51SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vbWVudS1saXN0L21lbnUtaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQnJvd3Nlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgQ2hpcHNDb21wb25lbnQgfSBmcm9tICcuLi9jaGlwcy9jaGlwcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2ljb24vaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSU1lbnUsIElNZW51SXRlbSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvbWVudS5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzYS1tZW51JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBTQU1lbnVJdGVtQ29tcG9uZW50LFxuICAgIE1hdE1lbnUsXG4gICAgTWF0TWVudUl0ZW0sXG4gICAgQ2hpcHNDb21wb25lbnQsXG4gICAgSWNvbkNvbXBvbmVudFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9tZW51LmNvbXBvbmVudC5jc3MnLFxuICAvLyBhbmltYXRpb25zOiBbXG4gIC8vICAgdHJpZ2dlcignc2xpZGVJbk91dCcsIFtcbiAgLy8gICAgIHN0YXRlKCdpbicsIHN0eWxlKHtcbiAgLy8gICAgICAgd2lkdGg6ICcnLCAvLyBXaGVuIGV4cGFuZGVkIChmdWxseSBzaG93bilcbiAgLy8gICAgIH0pKSxcbiAgLy8gICAgIHN0YXRlKCdvdXQnLCBzdHlsZSh7XG4gIC8vICAgICAgIHdpZHRoOiAnMCcsIC8vIFdoZW4gY29sbGFwc2VkIChoaWRkZW4pXG4gIC8vICAgICB9KSksXG4gIC8vICAgICB0cmFuc2l0aW9uKCdpbiA8PT4gb3V0JywgW1xuICAvLyAgICAgICBhbmltYXRlKCcwLjJzIGVhc2UtaW4tb3V0JyksIC8vIEFuaW1hdGlvbiBzcGVlZCBhbmQgZWFzaW5nXG4gIC8vICAgICBdKVxuICAvLyAgIF0pXG4gIC8vIF1cbn0pXG5leHBvcnQgY2xhc3MgU0FNZW51Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgcG9zaXRpb246ICdsZWZ0JyB8ICdyaWdodCcgfCAndG9wJyB8ICdib3R0b20nID0gJ2JvdHRvbSc7IC8vIERlZmF1bHQgcG9zaXRpb25cbiAgQElucHV0KCkgbWVudTogSU1lbnU7XG4gIEBJbnB1dCgpIGhvc3RFbDogYW55O1xuICBAT3V0cHV0KCkgb25FdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbktleVVwRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgY2xvc2VFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIC8vIEBWaWV3Q2hpbGQoJ21lbnUnLCB7c3RhdGljOiB0cnVlfSkgbWVudTtcblxuICBpc0V4cGFuZGVkOiBib29sZWFuID0gZmFsc2U7XG4gIFxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXG4gICkge1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydtZW51J10gJiYgY2hhbmdlc1snbWVudSddLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgY29uc29sZS5sb2coJ01lbnUgY29tcG9uZW50IGRldGVjdGVkIGNoYW5nZXM6JywgY2hhbmdlc1snbWVudSddLmN1cnJlbnRWYWx1ZSk7XG4gICAgICBcbiAgICAgIC8vIFJlc2V0IGFjdGl2ZSB0YWIgaW5kZXggaWYgdGFicyBoYXZlIGNoYW5nZWRcbiAgICAgIGlmICh0aGlzLm1lbnU/LnRhYnM/Lmxlbmd0aCAmJiB0aGlzLmFjdGl2ZVRhYkluZGV4ID49IHRoaXMubWVudS50YWJzLmxlbmd0aCkge1xuICAgICAgICB0aGlzLmFjdGl2ZVRhYkluZGV4ID0gMDtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgLy8gUHJldmVudCB0aGUgbWVudSBmcm9tIGNsb3NpbmcgYnkgc3RvcHBpbmcgcHJvcGFnYXRpb24gb2YgYW55IGV2ZW50c1xuICAgICAgLy8gdGhhdCBtaWdodCB0cmlnZ2VyIG1lbnUgY2xvc2luZyBkdXJpbmcgdGhpcyB1cGRhdGUgY3ljbGVcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAvLyBUaGlzIGVuc3VyZXMgdGhlIG1lbnUgc3RheXMgb3BlbiBhZnRlciB0aGUgY2hhbmdlIGRldGVjdGlvbiBjeWNsZSBjb21wbGV0ZXNcbiAgICAgICAgY29uc29sZS5sb2coJ01lbnUgdXBkYXRlIGNvbXBsZXRlLCBtZW51IHNob3VsZCByZW1haW4gb3BlbicpO1xuICAgICAgfSwgMCk7XG4gICAgfVxuICB9XG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzRXhwYW5kZWQgPSB0cnVlO1xuICB9XG4gIHNldFBvc2l0aW9uKCkge1xuICAgIC8vIGNvbnN0IHBvc2l0aW9uczogeyBba2V5OiBzdHJpbmddOiBDb25uZWN0ZWRQb3NpdGlvbiB9ID0ge1xuICAgIC8vICAgbGVmdDogeyBvcmlnaW5YOiAnc3RhcnQnLCBvcmlnaW5ZOiAndG9wJywgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAndG9wJyB9LFxuICAgIC8vICAgcmlnaHQ6IHsgb3JpZ2luWDogJ2VuZCcsIG9yaWdpblk6ICd0b3AnLCBvdmVybGF5WDogJ2VuZCcsIG92ZXJsYXlZOiAndG9wJyB9LFxuICAgIC8vICAgdG9wOiB7IG9yaWdpblg6ICdjZW50ZXInLCBvcmlnaW5ZOiAnYm90dG9tJywgb3ZlcmxheVg6ICdjZW50ZXInLCBvdmVybGF5WTogJ3RvcCcgfSxcbiAgICAvLyAgIGJvdHRvbTogeyBvcmlnaW5YOiAnY2VudGVyJywgb3JpZ2luWTogJ3RvcCcsIG92ZXJsYXlYOiAnY2VudGVyJywgb3ZlcmxheVk6ICdib3R0b20nIH1cbiAgICAvLyB9O1xuXG4gICAgLy8gY29uc3Qgb3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoKTtcbiAgICAvLyBjb25zdCB1c2VyUHJvZmlsZVBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoQ2FyZENvbXBvbmVudCk7XG4gICAgLy8gY29uc3QgY29tcFJlZiA9IG92ZXJsYXlSZWYuYXR0YWNoKHVzZXJQcm9maWxlUG9ydGFsKTtcbiAgICAvLyBjb21wUmVmLmluc3RhbmNlLnRpdGxlID0gJ25lZWQgbmR1ayByYSBiaGFpJ1xuICAgIC8vIGNvbXBSZWYuaW5zdGFuY2UuYm9keSA9ICdzb21ldGltZSBsaXR0bGUgYml0IHRoaXMgc29tZXRpbWVzIGxpdHRsZSBiaXQgdGhhdC4gQ29tbWluZyBub3QgY29tbWluZydcbiAgICAvLyBjb21wUmVmLmluc3RhbmNlLmF2YXRhciA9ICcuLi9hc3NldHMvYXZhdGFyLnN2ZydcbiAgfVxuXG4gIG9uTWVudUl0ZW1DbGljayhldmVudDogYW55LCBpdGVtOiBJTWVudUl0ZW0pe1xuICAgIC8vIGl0ZW0uaXNTZWxlY3RlZCA9ICFpdGVtLmlzU2VsZWN0ZWQ7XG4gICAgdGhpcy5vbkV2ZW50LmVtaXQoe3R5cGU6ICdDTElDSycsIGl0ZW0sIG1lbnU6IHRoaXMubWVudX0pXG4gIH1cblxuICBvblNlYXJjaChldmVudDogYW55KXtcbiAgICB0aGlzLm9uRXZlbnQuZW1pdCh7dHlwZTogJ1NFQVJDSCcsIHZhbHVlOmV2ZW50LnRhcmdldC52YWx1ZX0pXG4gIH1cblxuICBhY3RpdmVUYWJJbmRleDogbnVtYmVyID0gMDsgLy8gVHJhY2sgdGhlIGFjdGl2ZSB0YWIgaW5kZXhcblxuICBzZXRBY3RpdmVUYWIoaW5kZXg6IG51bWJlcix0YWJuYW1lKTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmVUYWJJbmRleCA9IGluZGV4OyAvLyBVcGRhdGUgdGhlIGFjdGl2ZSB0YWIgaW5kZXhcbiAgICB0aGlzLm9uRXZlbnQuZW1pdCh7dHlwZTogJ1RBQl9DTElDSycsIGFjdGl2ZVRhYjp0YWJuYW1lLCBtZW51OiB0aGlzLm1lbnV9KVxuICB9XG5cblxufVxuIiwiPGRpdiBjbGFzcz1cInNhLW1lbnVcIiBbbmdDbGFzc109XCJtZW51LnNob3dUcmF5ID8gJ3NhLW1lbnUtdHJheSBzYS1yb3VuZC1ib3JkZXInIDogJydcIlxuICAgIFtuZ1N0eWxlXT1cInt3aWR0aDogbWVudS53aWR0aCB8fCAnbWF4LWNvbnRlbnQnfVwiPlxuXG4gICAgQGlmKG1lbnU/LnRpdGxlKXtcbiAgICA8ZGl2IGNsYXNzPVwic2EtbWVudS10aXRsZVwiPlxuICAgICAgICA8aDE+e3ttZW51Py50aXRsZX19PC9oMT5cbiAgICAgICAgPHNhLWljb24gW2ljb25dPVwiJ2Nsb3NlT3V0bGluZWQnXCIgW3NpemVdPVwiJzIwJ1wiIGNsYXNzPVwic2EtbWVudS1jbG9zZS1pY29uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjbG9zZUV2ZW50LmVtaXQoJGV2ZW50KVwiPjwvc2EtaWNvbj5cbiAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICBAaWYobWVudT8uc2hvd1NlYXJjaCl7XG4gICAgPGRpdiBjbGFzcz1cInNlYXJjaC1jb250YWluZXJcIj5cbiAgICAgICAgPHNhLWljb24gaWNvbj1cInNlYXJjaFwiPjwvc2EtaWNvbj5cbiAgICAgICAgPGlucHV0IGNsYXNzPVwic2VhcmNoLWlucHV0XCIgKGtleXVwKT1cIm9uU2VhcmNoKCRldmVudClcIiB0eXBlPVwidGV4dFwiIFtwbGFjZWhvbGRlcl09XCJtZW51LnNlYXJjaFBsYWNlaG9sZGVyXCIgLz5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIm1lbnU/LnNob3dBZGRJY29uXCI+PGkgY2xhc3M9XCJmYXMgZmEtcGx1c1wiPjwvaT48L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICA8IS0tIEBpZihtZW51Py5pdGVtR3JvdXBzICYmIG1lbnUuaXRlbUdyb3Vwcy5sZW5ndGgpe1xuICAgICAgICBAZm9yIChncm91cEl0ZW0gb2YgbWVudS5pdGVtR3JvdXBzOyB0cmFjayBncm91cEl0ZW0pIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYS1tZW51LWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgPGgyPnt7Z3JvdXBJdGVtLmdyb3VwVGl0bGV9fTwvaDI+XG4gICAgICAgIFxuICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgZ3JvdXBJdGVtLml0ZW1zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICA8c2EtbWVudS1pdGVtIFtpdGVtXT1cIml0ZW1cIiBbc2hvd1JvdW5kXT1cIm1lbnUuc2hvd1RyYXlcIiAoY2xpY2spPVwib25NZW51SXRlbUNsaWNrKCRldmVudCwgaXRlbSlcIj48L3NhLW1lbnUtaXRlbT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgIH0gQGVsc2UgaWYobWVudT8uaXRlbXMgJiYgbWVudS5pdGVtcy5sZW5ndGgpe1xuICAgICAgICA8ZGl2IGNsYXNzPVwic2EtbWVudS1pdGVtc1wiPlxuICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBtZW51Lml0ZW1zOyB0cmFjayBpdGVtKSB7XG4gICAgICAgICAgICAgICAgPHNhLW1lbnUtaXRlbSBbaXRlbV09XCJpdGVtXCIgKGNsaWNrKT1cIm9uTWVudUl0ZW1DbGljaygkZXZlbnQsIGl0ZW0pXCI+PC9zYS1tZW51LWl0ZW0+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIH0gLS0+XG5cblxuICAgIDwhLS0gVGFiIENvbnRlbnQgb3IgSXRlbSBHcm91cHMgLS0+XG4gICAgPGRpdiBjbGFzcz1cInNhLW1lbnUtY29udGVudFwiICpuZ0lmPVwibWVudT8uaXRlbUdyb3Vwcz8ubGVuZ3RoIHx8IG1lbnU/LnRhYnM/Lmxlbmd0aFwiPlxuICAgICAgICA8IS0tIFRhYnMgLS0+XG4gICAgICAgIEBpZihtZW51Py50YWJzKXtcbiAgICAgICAgPGRpdiBjbGFzcz1cInNhLW1lbnUtdGFic1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdGb3I9XCJsZXQgdGFiIG9mIG1lbnUudGFiczsgbGV0IGkgPSBpbmRleFwiIFtjbGFzcy5hY3RpdmVdPVwiaSA9PT0gYWN0aXZlVGFiSW5kZXhcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRBY3RpdmVUYWIoaSx0YWIubGFiZWwpXCI+XG4gICAgICAgICAgICAgICAge3sgdGFiLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgPCEtLSAoe3sgdGFiLml0ZW1Hcm91cHMubGVuZ3RoIH19KSAtLT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIFRhYnMgRW5kIC0tPlxuXG4gICAgICAgIEBpZihtZW51Py50YWJzPy5sZW5ndGgpe1xuICAgICAgICBAaWYobWVudS50YWJzW2FjdGl2ZVRhYkluZGV4XT8uaXRlbUdyb3Vwcz8ubGVuZ3RoKXtcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZ3JvdXBJdGVtIG9mIG1lbnUudGFic1thY3RpdmVUYWJJbmRleF0uaXRlbUdyb3Vwc1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNhLW1lbnUtZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICA8aDI+e3tncm91cEl0ZW0uZ3JvdXBUaXRsZX19PC9oMj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdyb3VwSXRlbS5pdGVtc1wiPlxuICAgICAgICAgICAgICAgICAgICA8c2EtbWVudS1pdGVtIFtpdGVtXT1cIml0ZW1cIiBbc2hvd1JvdW5kXT1cIm1lbnUuc2hvd1RyYXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTWVudUl0ZW1DbGljaygkZXZlbnQsIGl0ZW0pXCI+PC9zYS1tZW51LWl0ZW0+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIH1cbiAgICAgICAgfSBAZWxzZSBpZihtZW51Py5pdGVtR3JvdXBzPy5sZW5ndGgpe1xuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBncm91cEl0ZW0gb2YgbWVudS5pdGVtR3JvdXBzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2EtbWVudS1ncm91cFwiPlxuICAgICAgICAgICAgICAgIDxoMj57e2dyb3VwSXRlbS5ncm91cFRpdGxlfX08L2gyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ3JvdXBJdGVtLml0ZW1zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzYS1tZW51LWl0ZW0gW2l0ZW1dPVwiaXRlbVwiIFtzaG93Um91bmRdPVwibWVudS5zaG93VHJheVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25NZW51SXRlbUNsaWNrKCRldmVudCwgaXRlbSlcIj48L3NhLW1lbnUtaXRlbT5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuXG4gICAgQGlmKG1lbnU/Lml0ZW1zICYmIG1lbnUuaXRlbXMubGVuZ3RoKXtcbiAgICAgICAgPGRpdiBjbGFzcz1cInNhLW1lbnUtaXRlbXNcIj5cbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgbWVudS5pdGVtczsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgPHNhLW1lbnUtaXRlbSBbaXRlbV09XCJpdGVtXCIgKGNsaWNrKT1cIm9uTWVudUl0ZW1DbGljaygkZXZlbnQsIGl0ZW0pXCI+PC9zYS1tZW51LWl0ZW0+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIH1cblxuPC9kaXY+Il19
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL21lbnUvbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL21lbnUvbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBR04sWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxPQUFPLEVBRVAsV0FBVyxHQUVaLE1BQU0sd0JBQXdCLENBQUM7QUFTaEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBSS9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7QUE4QnZELE1BQU0sT0FBTyxlQUFlO0lBVzFCLFlBQ1UsT0FBZ0I7UUFBaEIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQVhqQixhQUFRLEdBQXdDLFFBQVEsQ0FBQyxDQUFDLG1CQUFtQjtRQUc1RSxZQUFPLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDaEQsaUJBQVksR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNyRCxlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDN0QsMkNBQTJDO1FBRTNDLGVBQVUsR0FBWSxLQUFLLENBQUM7UUF3RDVCLG1CQUFjLEdBQVcsQ0FBQyxDQUFDLENBQUMsNkJBQTZCO0lBbkR6RCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwRCxPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUFrQyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUU5RSw4Q0FBOEM7WUFDOUMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDNUUsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7WUFDMUIsQ0FBQztZQUVELHNFQUFzRTtZQUN0RSwyREFBMkQ7WUFDM0QsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCw4RUFBOEU7Z0JBQzlFLE9BQU8sQ0FBQyxHQUFHLENBQUMsK0NBQStDLENBQUMsQ0FBQztZQUMvRCxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDUixDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztJQUN6QixDQUFDO0lBQ0QsV0FBVztRQUNULDREQUE0RDtRQUM1RCxvRkFBb0Y7UUFDcEYsaUZBQWlGO1FBQ2pGLHdGQUF3RjtRQUN4RiwwRkFBMEY7UUFDMUYsS0FBSztRQUVMLDRDQUE0QztRQUM1QyxnRUFBZ0U7UUFDaEUsd0RBQXdEO1FBQ3hELCtDQUErQztRQUMvQyxvR0FBb0c7UUFDcEcsbURBQW1EO0lBQ3JELENBQUM7SUFFRCxlQUFlLENBQUMsS0FBVSxFQUFFLElBQWU7UUFDekMsc0NBQXNDO1FBQ3RDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBRTFELHVFQUF1RTtRQUN2RSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVU7UUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBQyxDQUFDLENBQUE7SUFDL0QsQ0FBQztJQUlELFlBQVksQ0FBQyxLQUFhLEVBQUMsT0FBTztRQUNoQyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxDQUFDLDhCQUE4QjtRQUMzRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBQyxDQUFDLENBQUE7SUFDNUUsQ0FBQzs4R0F0RVUsZUFBZTtrR0FBZixlQUFlLG1QQzFENUIsNDhHQXVGTSxvdUZEcERGLFlBQVksbWJBQ1osbUJBQW1CLHdGQUluQixhQUFhOzsyRkFrQkosZUFBZTtrQkEzQjNCLFNBQVM7K0JBQ0UsU0FBUyxjQUNQLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsT0FBTzt3QkFDUCxXQUFXO3dCQUNYLGNBQWM7d0JBQ2QsYUFBYTtxQkFDZDs0RUFrQlEsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNJLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBPbkNoYW5nZXMsXG4gIEV2ZW50RW1pdHRlcixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBNYXRNZW51LFxuICBNYXRNZW51RGVmYXVsdE9wdGlvbnMsXG4gIE1hdE1lbnVJdGVtLFxuICBNYXRNZW51VHJpZ2dlcixcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQge1xuICBPdmVybGF5LFxuICBQb3NpdGlvblN0cmF0ZWd5LFxuICBDb25uZWN0ZWRQb3NpdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi4vY2FyZC9jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlJztcbmltcG9ydCB7IFNBTWVudUl0ZW1Db21wb25lbnQgfSBmcm9tICcuL21lbnUtbGlzdC9tZW51LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBhbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IEJyb3dzZXJBbmltYXRpb25zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zJztcbmltcG9ydCB7IEJyb3dzZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IENoaXBzQ29tcG9uZW50IH0gZnJvbSAnLi4vY2hpcHMvY2hpcHMuY29tcG9uZW50JztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICcuLi9pY29uL2ljb24uY29tcG9uZW50JztcbmltcG9ydCB7IElNZW51LCBJTWVudUl0ZW0gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL21lbnUuaW50ZXJmYWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2EtbWVudScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgU0FNZW51SXRlbUNvbXBvbmVudCxcbiAgICBNYXRNZW51LFxuICAgIE1hdE1lbnVJdGVtLFxuICAgIENoaXBzQ29tcG9uZW50LFxuICAgIEljb25Db21wb25lbnRcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL21lbnUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vbWVudS5jb21wb25lbnQuY3NzJyxcbiAgLy8gYW5pbWF0aW9uczogW1xuICAvLyAgIHRyaWdnZXIoJ3NsaWRlSW5PdXQnLCBbXG4gIC8vICAgICBzdGF0ZSgnaW4nLCBzdHlsZSh7XG4gIC8vICAgICAgIHdpZHRoOiAnJywgLy8gV2hlbiBleHBhbmRlZCAoZnVsbHkgc2hvd24pXG4gIC8vICAgICB9KSksXG4gIC8vICAgICBzdGF0ZSgnb3V0Jywgc3R5bGUoe1xuICAvLyAgICAgICB3aWR0aDogJzAnLCAvLyBXaGVuIGNvbGxhcHNlZCAoaGlkZGVuKVxuICAvLyAgICAgfSkpLFxuICAvLyAgICAgdHJhbnNpdGlvbignaW4gPD0+IG91dCcsIFtcbiAgLy8gICAgICAgYW5pbWF0ZSgnMC4ycyBlYXNlLWluLW91dCcpLCAvLyBBbmltYXRpb24gc3BlZWQgYW5kIGVhc2luZ1xuICAvLyAgICAgXSlcbiAgLy8gICBdKVxuICAvLyBdXG59KVxuZXhwb3J0IGNsYXNzIFNBTWVudUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHBvc2l0aW9uOiAnbGVmdCcgfCAncmlnaHQnIHwgJ3RvcCcgfCAnYm90dG9tJyA9ICdib3R0b20nOyAvLyBEZWZhdWx0IHBvc2l0aW9uXG4gIEBJbnB1dCgpIG1lbnU6IElNZW51O1xuICBASW5wdXQoKSBob3N0RWw6IGFueTtcbiAgQE91dHB1dCgpIG9uRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25LZXlVcEV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGNsb3NlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAvLyBAVmlld0NoaWxkKCdtZW51Jywge3N0YXRpYzogdHJ1ZX0pIG1lbnU7XG5cbiAgaXNFeHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LFxuICApIHtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1snbWVudSddICYmIGNoYW5nZXNbJ21lbnUnXS5jdXJyZW50VmFsdWUpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdNZW51IGNvbXBvbmVudCBkZXRlY3RlZCBjaGFuZ2VzOicsIGNoYW5nZXNbJ21lbnUnXS5jdXJyZW50VmFsdWUpO1xuICAgICAgXG4gICAgICAvLyBSZXNldCBhY3RpdmUgdGFiIGluZGV4IGlmIHRhYnMgaGF2ZSBjaGFuZ2VkXG4gICAgICBpZiAodGhpcy5tZW51Py50YWJzPy5sZW5ndGggJiYgdGhpcy5hY3RpdmVUYWJJbmRleCA+PSB0aGlzLm1lbnUudGFicy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVUYWJJbmRleCA9IDA7XG4gICAgICB9XG4gICAgICBcbiAgICAgIC8vIFByZXZlbnQgdGhlIG1lbnUgZnJvbSBjbG9zaW5nIGJ5IHN0b3BwaW5nIHByb3BhZ2F0aW9uIG9mIGFueSBldmVudHNcbiAgICAgIC8vIHRoYXQgbWlnaHQgdHJpZ2dlciBtZW51IGNsb3NpbmcgZHVyaW5nIHRoaXMgdXBkYXRlIGN5Y2xlXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgLy8gVGhpcyBlbnN1cmVzIHRoZSBtZW51IHN0YXlzIG9wZW4gYWZ0ZXIgdGhlIGNoYW5nZSBkZXRlY3Rpb24gY3ljbGUgY29tcGxldGVzXG4gICAgICAgIGNvbnNvbGUubG9nKCdNZW51IHVwZGF0ZSBjb21wbGV0ZSwgbWVudSBzaG91bGQgcmVtYWluIG9wZW4nKTtcbiAgICAgIH0sIDApO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzRXhwYW5kZWQgPSB0cnVlO1xuICB9XG4gIHNldFBvc2l0aW9uKCkge1xuICAgIC8vIGNvbnN0IHBvc2l0aW9uczogeyBba2V5OiBzdHJpbmddOiBDb25uZWN0ZWRQb3NpdGlvbiB9ID0ge1xuICAgIC8vICAgbGVmdDogeyBvcmlnaW5YOiAnc3RhcnQnLCBvcmlnaW5ZOiAndG9wJywgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAndG9wJyB9LFxuICAgIC8vICAgcmlnaHQ6IHsgb3JpZ2luWDogJ2VuZCcsIG9yaWdpblk6ICd0b3AnLCBvdmVybGF5WDogJ2VuZCcsIG92ZXJsYXlZOiAndG9wJyB9LFxuICAgIC8vICAgdG9wOiB7IG9yaWdpblg6ICdjZW50ZXInLCBvcmlnaW5ZOiAnYm90dG9tJywgb3ZlcmxheVg6ICdjZW50ZXInLCBvdmVybGF5WTogJ3RvcCcgfSxcbiAgICAvLyAgIGJvdHRvbTogeyBvcmlnaW5YOiAnY2VudGVyJywgb3JpZ2luWTogJ3RvcCcsIG92ZXJsYXlYOiAnY2VudGVyJywgb3ZlcmxheVk6ICdib3R0b20nIH1cbiAgICAvLyB9O1xuXG4gICAgLy8gY29uc3Qgb3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoKTtcbiAgICAvLyBjb25zdCB1c2VyUHJvZmlsZVBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoQ2FyZENvbXBvbmVudCk7XG4gICAgLy8gY29uc3QgY29tcFJlZiA9IG92ZXJsYXlSZWYuYXR0YWNoKHVzZXJQcm9maWxlUG9ydGFsKTtcbiAgICAvLyBjb21wUmVmLmluc3RhbmNlLnRpdGxlID0gJ25lZWQgbmR1ayByYSBiaGFpJ1xuICAgIC8vIGNvbXBSZWYuaW5zdGFuY2UuYm9keSA9ICdzb21ldGltZSBsaXR0bGUgYml0IHRoaXMgc29tZXRpbWVzIGxpdHRsZSBiaXQgdGhhdC4gQ29tbWluZyBub3QgY29tbWluZydcbiAgICAvLyBjb21wUmVmLmluc3RhbmNlLmF2YXRhciA9ICcuLi9hc3NldHMvYXZhdGFyLnN2ZydcbiAgfVxuXG4gIG9uTWVudUl0ZW1DbGljayhldmVudDogYW55LCBpdGVtOiBJTWVudUl0ZW0pe1xuICAgIC8vIGl0ZW0uaXNTZWxlY3RlZCA9ICFpdGVtLmlzU2VsZWN0ZWQ7XG4gICAgdGhpcy5vbkV2ZW50LmVtaXQoe3R5cGU6ICdDTElDSycsIGl0ZW0sIG1lbnU6IHRoaXMubWVudX0pO1xuICAgIFxuICAgIC8vIENsb3NlIHRoZSBtZW51IGFmdGVyIHRoZSBpdGVtIGlzIGNsaWNrZWQsIGp1c3QgbGlrZSB0aGUgY2xvc2UgYnV0dG9uXG4gICAgdGhpcy5jbG9zZUV2ZW50LmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25TZWFyY2goZXZlbnQ6IGFueSl7XG4gICAgdGhpcy5vbkV2ZW50LmVtaXQoe3R5cGU6ICdTRUFSQ0gnLCB2YWx1ZTpldmVudC50YXJnZXQudmFsdWV9KVxuICB9XG5cbiAgYWN0aXZlVGFiSW5kZXg6IG51bWJlciA9IDA7IC8vIFRyYWNrIHRoZSBhY3RpdmUgdGFiIGluZGV4XG5cbiAgc2V0QWN0aXZlVGFiKGluZGV4OiBudW1iZXIsdGFibmFtZSk6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZlVGFiSW5kZXggPSBpbmRleDsgLy8gVXBkYXRlIHRoZSBhY3RpdmUgdGFiIGluZGV4XG4gICAgdGhpcy5vbkV2ZW50LmVtaXQoe3R5cGU6ICdUQUJfQ0xJQ0snLCBhY3RpdmVUYWI6dGFibmFtZSwgbWVudTogdGhpcy5tZW51fSlcbiAgfVxuXG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJzYS1tZW51XCIgW25nQ2xhc3NdPVwibWVudS5zaG93VHJheSA/ICdzYS1tZW51LXRyYXkgc2Etcm91bmQtYm9yZGVyJyA6ICcnXCJcbiAgICBbbmdTdHlsZV09XCJ7d2lkdGg6IG1lbnUud2lkdGggfHwgJ21heC1jb250ZW50J31cIj5cblxuICAgIEBpZihtZW51Py50aXRsZSl7XG4gICAgPGRpdiBjbGFzcz1cInNhLW1lbnUtdGl0bGVcIj5cbiAgICAgICAgPGgxPnt7bWVudT8udGl0bGV9fTwvaDE+XG4gICAgICAgIDxzYS1pY29uIFtpY29uXT1cIidjbG9zZU91dGxpbmVkJ1wiIFtzaXplXT1cIicyMCdcIiBjbGFzcz1cInNhLW1lbnUtY2xvc2UtaWNvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VFdmVudC5lbWl0KCRldmVudClcIj48L3NhLWljb24+XG4gICAgPC9kaXY+XG4gICAgfVxuXG4gICAgPCEtLSBAaWYobWVudT8uaXRlbUdyb3VwcyAmJiBtZW51Lml0ZW1Hcm91cHMubGVuZ3RoKXtcbiAgICAgICAgQGZvciAoZ3JvdXBJdGVtIG9mIG1lbnUuaXRlbUdyb3VwczsgdHJhY2sgZ3JvdXBJdGVtKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2EtbWVudS1ncm91cFwiPlxuICAgICAgICAgICAgICAgIDxoMj57e2dyb3VwSXRlbS5ncm91cFRpdGxlfX08L2gyPlxuICAgICAgICBcbiAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGdyb3VwSXRlbS5pdGVtczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgPHNhLW1lbnUtaXRlbSBbaXRlbV09XCJpdGVtXCIgW3Nob3dSb3VuZF09XCJtZW51LnNob3dUcmF5XCIgKGNsaWNrKT1cIm9uTWVudUl0ZW1DbGljaygkZXZlbnQsIGl0ZW0pXCI+PC9zYS1tZW51LWl0ZW0+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICB9IEBlbHNlIGlmKG1lbnU/Lml0ZW1zICYmIG1lbnUuaXRlbXMubGVuZ3RoKXtcbiAgICAgICAgPGRpdiBjbGFzcz1cInNhLW1lbnUtaXRlbXNcIj5cbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgbWVudS5pdGVtczsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgICAgIDxzYS1tZW51LWl0ZW0gW2l0ZW1dPVwiaXRlbVwiIChjbGljayk9XCJvbk1lbnVJdGVtQ2xpY2soJGV2ZW50LCBpdGVtKVwiPjwvc2EtbWVudS1pdGVtPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICB9IC0tPlxuXG5cbiAgICA8IS0tIFRhYiBDb250ZW50IG9yIEl0ZW0gR3JvdXBzIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJzYS1tZW51LWNvbnRlbnRcIj5cblxuICAgICAgICBAaWYobWVudT8uc2hvd1NlYXJjaCl7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxzYS1pY29uIGljb249XCJzZWFyY2hcIj48L3NhLWljb24+XG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwic2VhcmNoLWlucHV0XCIgKGtleXVwKT1cIm9uU2VhcmNoKCRldmVudClcIiB0eXBlPVwidGV4dFwiIFtwbGFjZWhvbGRlcl09XCJtZW51LnNlYXJjaFBsYWNlaG9sZGVyXCIgIFxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIm1lbnU/LnNob3dBZGRJY29uXCI+PGkgY2xhc3M9XCJmYXMgZmEtcGx1c1wiPjwvaT48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICA8IS0tIFRhYnMgLS0+XG4gICAgICAgIEBpZihtZW51Py50YWJzKXtcbiAgICAgICAgPGRpdiBjbGFzcz1cInNhLW1lbnUtdGFic1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdGb3I9XCJsZXQgdGFiIG9mIG1lbnUudGFiczsgbGV0IGkgPSBpbmRleFwiIFtjbGFzcy5hY3RpdmVdPVwiaSA9PT0gYWN0aXZlVGFiSW5kZXhcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRBY3RpdmVUYWIoaSx0YWIubGFiZWwpXCI+XG4gICAgICAgICAgICAgICAge3sgdGFiLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgPCEtLSAoe3sgdGFiLml0ZW1Hcm91cHMubGVuZ3RoIH19KSAtLT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIFRhYnMgRW5kIC0tPlxuXG4gICAgICAgIEBpZihtZW51Py50YWJzPy5sZW5ndGgpe1xuICAgICAgICBAaWYobWVudS50YWJzW2FjdGl2ZVRhYkluZGV4XT8uaXRlbUdyb3Vwcz8ubGVuZ3RoKXtcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZ3JvdXBJdGVtIG9mIG1lbnUudGFic1thY3RpdmVUYWJJbmRleF0uaXRlbUdyb3Vwc1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNhLW1lbnUtZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICA8aDI+e3tncm91cEl0ZW0uZ3JvdXBUaXRsZX19PC9oMj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdyb3VwSXRlbS5pdGVtc1wiPlxuICAgICAgICAgICAgICAgICAgICA8c2EtbWVudS1pdGVtIFtpdGVtXT1cIml0ZW1cIiBbc2hvd1JvdW5kXT1cIm1lbnUuc2hvd1RyYXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTWVudUl0ZW1DbGljaygkZXZlbnQsIGl0ZW0pXCI+PC9zYS1tZW51LWl0ZW0+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIH1cbiAgICAgICAgfSBAZWxzZSBpZihtZW51Py5pdGVtR3JvdXBzPy5sZW5ndGgpe1xuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBncm91cEl0ZW0gb2YgbWVudS5pdGVtR3JvdXBzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2EtbWVudS1ncm91cFwiPlxuICAgICAgICAgICAgICAgIDxoMj57e2dyb3VwSXRlbS5ncm91cFRpdGxlfX08L2gyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ3JvdXBJdGVtLml0ZW1zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzYS1tZW51LWl0ZW0gW2l0ZW1dPVwiaXRlbVwiIFtzaG93Um91bmRdPVwibWVudS5zaG93VHJheVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25NZW51SXRlbUNsaWNrKCRldmVudCwgaXRlbSlcIj48L3NhLW1lbnUtaXRlbT5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuXG4gICAgQGlmKG1lbnU/Lml0ZW1zICYmIG1lbnUuaXRlbXMubGVuZ3RoKXtcbiAgICAgICAgPGRpdiBjbGFzcz1cInNhLW1lbnUtaXRlbXNcIj5cbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgbWVudS5pdGVtczsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgPHNhLW1lbnUtaXRlbSBbaXRlbV09XCJpdGVtXCIgKGNsaWNrKT1cIm9uTWVudUl0ZW1DbGljaygkZXZlbnQsIGl0ZW0pXCI+PC9zYS1tZW51LWl0ZW0+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIH1cblxuPC9kaXY+Il19
@@ -19,8 +19,9 @@ export class MenuDirective {
19
19
  set position(value) {
20
20
  this._position = value;
21
21
  }
22
- constructor(overlay, elRef) {
22
+ constructor(overlay, overlayContainer, elRef) {
23
23
  this.overlay = overlay;
24
+ this.overlayContainer = overlayContainer;
24
25
  this.elRef = elRef;
25
26
  // Stream to track menu configuration changes
26
27
  this.menuConfig$ = new BehaviorSubject(null);
@@ -84,7 +85,13 @@ export class MenuDirective {
84
85
  const positionStrategy = this.overlay.position()
85
86
  .flexibleConnectedTo(hostElement) // Position relative to the target element (the button)
86
87
  .withPositions([{ ...MENU_POSITIONS[this._position], ...(this._saMenu.overlayConfig || {}) }]);
87
- this.overlayRef = this.overlay.create({ positionStrategy, scrollStrategy: this.overlay.scrollStrategies.reposition() });
88
+ // Add custom class to the overlay container
89
+ this.overlayContainer.getContainerElement().classList.add('sa-menu-overlay-container');
90
+ this.overlayRef = this.overlay.create({
91
+ positionStrategy,
92
+ scrollStrategy: this.overlay.scrollStrategies.reposition(),
93
+ panelClass: 'custom-menu-overlay'
94
+ });
88
95
  this.compRef = this.overlayRef.attach(menuPortal);
89
96
  this.compRef.instance.menu = this.saMenu;
90
97
  this.compRef.instance.hostEl = hostElement;
@@ -112,9 +119,11 @@ export class MenuDirective {
112
119
  this.overlayRef.dispose();
113
120
  this.overlayRef = null;
114
121
  this.compRef = null;
122
+ // Remove the custom class from the overlay container
123
+ this.overlayContainer.getContainerElement().classList.remove('sa-menu-overlay-container');
115
124
  }
116
125
  }
117
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MenuDirective, deps: [{ token: i1.Overlay }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
126
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MenuDirective, deps: [{ token: i1.Overlay }, { token: i1.OverlayContainer }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
118
127
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.4", type: MenuDirective, isStandalone: true, selector: "[saMenu]", inputs: { saMenuRef: "saMenuRef", saMenu: "saMenu", position: ["saManuPosition", "position"] }, outputs: { onMenuEvent: "onMenuEvent", onEvent: "onEvent", onAttached: "onAttached", onDetached: "onDetached" }, host: { listeners: { "click": "onClick($event)" } }, usesOnChanges: true, ngImport: i0 }); }
119
128
  }
120
129
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MenuDirective, decorators: [{
@@ -123,7 +132,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
123
132
  selector: '[saMenu]',
124
133
  standalone: true
125
134
  }]
126
- }], ctorParameters: () => [{ type: i1.Overlay }, { type: i0.ElementRef }], propDecorators: { saMenuRef: [{
135
+ }], ctorParameters: () => [{ type: i1.Overlay }, { type: i1.OverlayContainer }, { type: i0.ElementRef }], propDecorators: { saMenuRef: [{
127
136
  type: Input,
128
137
  args: ['saMenuRef']
129
138
  }], onMenuEvent: [{
@@ -179,4 +188,4 @@ const MENU_POSITIONS = {
179
188
  offsetY: 20
180
189
  }
181
190
  };
182
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL21lbnUvbWVudS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBZ0MsTUFBTSxFQUFnRCxNQUFNLGVBQWUsQ0FBQztBQUM3SyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBTTNELE1BQU0sT0FBTyxhQUFhO0lBZ0J4QixJQUNJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUksTUFBTSxDQUFDLEtBQVk7UUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsMkNBQTJDO1FBQzNDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUNJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLEtBQTBDO1FBQ3JELElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxZQUNVLE9BQWdCLEVBQ2hCLEtBQWdCO1FBRGhCLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIsVUFBSyxHQUFMLEtBQUssQ0FBVztRQXBDMUIsNkNBQTZDO1FBQ3JDLGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQWUsSUFBSSxDQUFDLENBQUM7UUFFOUQseUNBQXlDO1FBQ2pD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QUFRO1FBQ2pCLE9BQU8sRUFBRSxLQUFLO1FBQ2QsUUFBUSxFQUFFLFFBQVE7UUFDbEIsUUFBUSxFQUFFLFFBQVE7UUFDbEIsT0FBTyxFQUFFLENBQUM7UUFDVixPQUFPLEVBQUUsRUFBRTtLQUNaO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsT0FBTyxFQUFFLFFBQVE7UUFDakIsT0FBTyxFQUFFLFFBQVE7UUFDakIsUUFBUSxFQUFFLFFBQVE7UUFDbEIsUUFBUSxFQUFFLEtBQUs7UUFDZixPQUFPLEVBQUUsQ0FBQztRQUNWLE9BQU8sRUFBRSxFQUFFO0tBQ1o7Q0FDRixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29ubmVjdGVkUG9zaXRpb24sIENvbm5lY3Rpb25Qb3NpdGlvblBhaXIsIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneU9yaWdpbiwgT3ZlcmxheSwgUG9zaXRpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTQU1lbnVDb21wb25lbnQgfSBmcm9tICcuL21lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgSU1lbnUsIE15T3ZlcmxheVBvc2l0aW9ucyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvbWVudS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3NhTWVudV0nLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1lbnVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgLy8gU3RyZWFtIHRvIHRyYWNrIG1lbnUgY29uZmlndXJhdGlvbiBjaGFuZ2VzXG4gIHByaXZhdGUgbWVudUNvbmZpZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElNZW51IHwgbnVsbD4obnVsbCk7XG4gIFxuICAvLyBTdHJlYW0gdG8gaGFuZGxlIGNvbXBvbmVudCBkZXN0cnVjdGlvblxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvLyBASW5wdXQoJ3NhTWVudU9iaicpIHNhTWVudU9iaiA9IHt9O1xuICBASW5wdXQoJ3NhTWVudVJlZicpIHNhTWVudVJlZjogVmlld0NvbnRhaW5lclJlZiB8IFRlbXBsYXRlUmVmPEVsZW1lbnRSZWY+IHwgbnVsbCA9IG51bGw7XG4gIEBPdXRwdXQoJ29uTWVudUV2ZW50Jykgb25NZW51RXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25FdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkF0dGFjaGVkOiBFdmVudEVtaXR0ZXI8eyBlbGVtZW50OiBFbGVtZW50UmVmLCBtZW51OiBJTWVudSB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uRGV0YWNoZWQ6IEV2ZW50RW1pdHRlcjx7IGVsZW1lbnQ6IEVsZW1lbnRSZWYsIG1lbnU6IElNZW51IH0+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIF9zYU1lbnU6IElNZW51O1xuICBfcG9zaXRpb246ICdsZWZ0JyB8ICdyaWdodCcgfCAndG9wJyB8ICdib3R0b20nID0gJ3JpZ2h0JztcbiAgQElucHV0KCdzYU1lbnUnKVxuICBnZXQgc2FNZW51KCk6IElNZW51IHtcbiAgICByZXR1cm4gdGhpcy5fc2FNZW51O1xuICB9XG5cbiAgc2V0IHNhTWVudSh2YWx1ZTogSU1lbnUpIHtcbiAgICB0aGlzLl9zYU1lbnUgPSB2YWx1ZTtcbiAgICAvLyBFbWl0IHRoZSBuZXcgY29uZmlndXJhdGlvbiB0byB0aGUgc3RyZWFtXG4gICAgdGhpcy5tZW51Q29uZmlnJC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIEBJbnB1dCgnc2FNYW51UG9zaXRpb24nKVxuICBnZXQgcG9zaXRpb24oKXtcbiAgICByZXR1cm4gdGhpcy5fcG9zaXRpb247XG4gIH1cbiAgc2V0IHBvc2l0aW9uKHZhbHVlOiAnbGVmdCcgfCAncmlnaHQnIHwgJ3RvcCcgfCAnYm90dG9tJyl7XG4gICAgdGhpcy5fcG9zaXRpb24gPSB2YWx1ZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIGVsUmVmOkVsZW1lbnRSZWZcbiAgKSB7fVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgb25DbGljayhlKSB7XG4gICAgaWYoISF0aGlzLl9zYU1lbnU/Lml0ZW1zPy5sZW5ndGggfHwgISF0aGlzLl9zYU1lbnU/Lml0ZW1Hcm91cHM/Lmxlbmd0aCB8fCAhIXRoaXMuX3NhTWVudT8udGFicz8ubGVuZ3RoKVxuICAgICAgdGhpcy5hdHRhY2hNZW51KCk7XG4gIH1cblxuICBwcml2YXRlIG92ZXJsYXlSZWY6IGFueSA9IG51bGw7XG4gIHByaXZhdGUgY29tcFJlZjogYW55ID0gbnVsbDtcblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyBTdWJzY3JpYmUgdG8gbWVudSBjb25maWd1cmF0aW9uIGNoYW5nZXNcbiAgICB0aGlzLm1lbnVDb25maWckXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKGNvbmZpZyA9PiB7XG4gICAgICAgIGlmICghY29uZmlnKSByZXR1cm47XG4gICAgICAgIFxuICAgICAgICAvLyBJZiB0aGUgbWVudSBpcyBhbHJlYWR5IG9wZW4sIHVwZGF0ZSBpdCB3aXRob3V0IGNsb3NpbmdcbiAgICAgICAgaWYgKHRoaXMub3ZlcmxheVJlZiAmJiB0aGlzLmNvbXBSZWYpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnVXBkYXRpbmcgb3BlbiBtZW51IHdpdGggbmV3IGNvbmZpZycpO1xuICAgICAgICAgIHRoaXMuY29tcFJlZi5pbnN0YW5jZS5tZW51ID0gY29uZmlnO1xuICAgICAgICAgIFxuICAgICAgICAgIC8vIE1hbnVhbGx5IHRyaWdnZXIgY2hhbmdlIGRldGVjdGlvbiBpZiBuZWVkZWRcbiAgICAgICAgICBpZiAodGhpcy5jb21wUmVmLmluc3RhbmNlLm5nT25DaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBSZWYuaW5zdGFuY2UubmdPbkNoYW5nZXMoe1xuICAgICAgICAgICAgICBtZW51OiB7XG4gICAgICAgICAgICAgICAgY3VycmVudFZhbHVlOiBjb25maWcsXG4gICAgICAgICAgICAgICAgcHJldmlvdXNWYWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICBmaXJzdENoYW5nZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNGaXJzdENoYW5nZTogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgfVxuXG4gIC8vIFdlJ3ZlIG1vdmVkIHRoaXMgZnVuY3Rpb25hbGl0eSB0byB0aGUgcmVhY3RpdmUgc3RyZWFtXG4gIFxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgLy8gTWVudSBjaGFuZ2VzIGFyZSBub3cgaGFuZGxlZCB0aHJvdWdoIHRoZSByZWFjdGl2ZSBzdHJlYW1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIC8vIENsZWFuIHVwIHN1YnNjcmlwdGlvbnNcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgXG4gICAgLy8gQ2xlYW4gdXAgdGhlIG92ZXJsYXlcbiAgICB0aGlzLmRldGFjaE1lbnUoKTtcbiAgfVxuXG4gIGF0dGFjaE1lbnUoKSB7XG4gICAgY29uc3QgaG9zdEVsZW1lbnQgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgbWVudVBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoU0FNZW51Q29tcG9uZW50KTtcbiAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5OiBQb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5LnBvc2l0aW9uKClcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKGhvc3RFbGVtZW50KSAgLy8gUG9zaXRpb24gcmVsYXRpdmUgdG8gdGhlIHRhcmdldCBlbGVtZW50ICh0aGUgYnV0dG9uKVxuICAgICAgLndpdGhQb3NpdGlvbnMoW3suLi5NRU5VX1BPU0lUSU9OU1t0aGlzLl9wb3NpdGlvbl0sIC4uLih0aGlzLl9zYU1lbnUub3ZlcmxheUNvbmZpZyB8fCB7fSl9XSk7XG5cbiAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHtwb3NpdGlvblN0cmF0ZWd5LCBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpfSk7XG4gICAgdGhpcy5jb21wUmVmID0gdGhpcy5vdmVybGF5UmVmLmF0dGFjaChtZW51UG9ydGFsKTtcbiAgICB0aGlzLmNvbXBSZWYuaW5zdGFuY2UubWVudSA9IHRoaXMuc2FNZW51O1xuICAgIHRoaXMuY29tcFJlZi5pbnN0YW5jZS5ob3N0RWwgPSBob3N0RWxlbWVudDtcblxuICAgIC8vIFN1YnNjcmliZSB0byBtZW51IGNvbXBvbmVudCBldmVudHMgYW5kIGVtaXQgdGhlbVxuICAgIHRoaXMuY29tcFJlZi5pbnN0YW5jZS5vbkV2ZW50LnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICB0aGlzLm9uRXZlbnQuZW1pdChyZXMpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jb21wUmVmLmluc3RhbmNlLmNsb3NlRXZlbnQuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgIHRoaXMuZGV0YWNoTWVudSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5vdmVybGF5UmVmLm91dHNpZGVQb2ludGVyRXZlbnRzKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZGV0YWNoTWVudSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5vbkF0dGFjaGVkLmVtaXQoe1xuICAgICAgZWxlbWVudDogdGhpcy5lbFJlZixcbiAgICAgIG1lbnU6IHRoaXMuX3NhTWVudVxuICAgIH0pO1xuICB9XG5cbiAgZGV0YWNoTWVudSgpIHtcbiAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLm9uRGV0YWNoZWQuZW1pdCh7XG4gICAgICAgIGVsZW1lbnQ6IHRoaXMuZWxSZWYsXG4gICAgICAgIG1lbnU6IHRoaXMuX3NhTWVudVxuICAgICAgfSk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmID0gbnVsbDtcbiAgICAgIHRoaXMuY29tcFJlZiA9IG51bGw7XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IE1FTlVfUE9TSVRJT05TOiBNeU92ZXJsYXlQb3NpdGlvbnM9IHtcbiAgJ3JpZ2h0Jzoge1xuICAgIG9yaWdpblg6ICdlbmQnLFxuICAgIG9yaWdpblk6ICdjZW50ZXInLFxuICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgIG92ZXJsYXlZOiAnY2VudGVyJyxcbiAgICBvZmZzZXRYOiAyMCxcbiAgICBvZmZzZXRZOiAwXG4gIH0sXG4gICdsZWZ0Jzoge1xuICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgb3JpZ2luWTogJ2NlbnRlcicsXG4gICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgIG92ZXJsYXlZOiAnY2VudGVyJyxcbiAgICBvZmZzZXRYOiAyMCxcbiAgICBvZmZzZXRZOiAwXG4gIH0sXG4gICd0b3AnOiB7XG4gICAgb3JpZ2luWDogJ2NlbnRlcicsXG4gICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgb3ZlcmxheVg6ICdjZW50ZXInLFxuICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgICBvZmZzZXRYOiAwLFxuICAgIG9mZnNldFk6IDIwXG4gIH0sXG4gICdib3R0b20nOiB7XG4gICAgb3JpZ2luWDogJ2NlbnRlcicsXG4gICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgb3ZlcmxheVg6ICdjZW50ZXInLFxuICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICBvZmZzZXRYOiAwLFxuICAgIG9mZnNldFk6IDIwXG4gIH1cbn0iXX0=
191
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL21lbnUvbWVudS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBZ0MsTUFBTSxFQUFnRCxNQUFNLGVBQWUsQ0FBQztBQUM3SyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBTTNELE1BQU0sT0FBTyxhQUFhO0lBZ0J4QixJQUNJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUksTUFBTSxDQUFDLEtBQVk7UUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsMkNBQTJDO1FBQzNDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUNJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLEtBQTBDO1FBQ3JELElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxZQUNVLE9BQWdCLEVBQ2hCLGdCQUFrQyxFQUNsQyxLQUFnQjtRQUZoQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsVUFBSyxHQUFMLEtBQUssQ0FBVztRQXJDMUIsNkNBQTZDO1FBQ3JDLGdCQUFXLEdBQUcsSUFB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Q2pCLFFBQVEsRUFBRSxPQUFPO1FBQ2pCLFFBQVEsRUFBRSxRQUFRO1FBQ2xCLE9BQU8sRUFBRSxFQUFFO1FBQ1gsT0FBTyxFQUFFLENBQUM7S0FDWDtJQUNELE1BQU0sRUFBRTtRQUNOLE9BQU8sRUFBRSxPQUFPO1FBQ2hCLE9BQU8sRUFBRSxRQUFRO1FBQ2pCLFFBQVEsRUFBRSxLQUFLO1FBQ2YsUUFBUSxFQUFFLFFBQVE7UUFDbEIsT0FBTyxFQUFFLEVBQUU7UUFDWCxPQUFPLEVBQUUsQ0FBQztLQUNYO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsT0FBTyxFQUFFLFFBQVE7UUFDakIsT0FBTyxFQUFFLEtBQUs7UUFDZCxRQUFRLEVBQUUsUUFBUTtRQUNsQixRQUFRLEVBQUUsUUFBUTtRQUNsQixPQUFPLEVBQUUsQ0FBQztRQUNWLE9BQU8sRUFBRSxFQUFFO0tBQ1o7SUFDRCxRQUFRLEVBQUU7UUFDUixPQUFPLEVBQUUsUUFBUTtRQUNqQixPQUFPLEVBQUUsUUFBUTtRQUNqQixRQUFRLEVBQUUsUUFBUTtRQUNsQixRQUFRLEVBQUUsS0FBSztRQUNmLE9BQU8sRUFBRSxDQUFDO1FBQ1YsT0FBTyxFQUFFLEVBQUU7S0FDWjtDQUNGLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25uZWN0ZWRQb3NpdGlvbiwgQ29ubmVjdGlvblBvc2l0aW9uUGFpciwgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5T3JpZ2luLCBPdmVybGF5LCBPdmVybGF5Q29udGFpbmVyLCBQb3NpdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNBTWVudUNvbXBvbmVudCB9IGZyb20gJy4vbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBJTWVudSwgTXlPdmVybGF5UG9zaXRpb25zIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9tZW51LmludGVyZmFjZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbc2FNZW51XScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWVudURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAvLyBTdHJlYW0gdG8gdHJhY2sgbWVudSBjb25maWd1cmF0aW9uIGNoYW5nZXNcbiAgcHJpdmF0ZSBtZW51Q29uZmlnJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SU1lbnUgfCBudWxsPihudWxsKTtcbiAgXG4gIC8vIFN0cmVhbSB0byBoYW5kbGUgY29tcG9uZW50IGRlc3RydWN0aW9uXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8vIEBJbnB1dCgnc2FNZW51T2JqJykgc2FNZW51T2JqID0ge307XG4gIEBJbnB1dCgnc2FNZW51UmVmJykgc2FNZW51UmVmOiBWaWV3Q29udGFpbmVyUmVmIHwgVGVtcGxhdGVSZWY8RWxlbWVudFJlZj4gfCBudWxsID0gbnVsbDtcbiAgQE91dHB1dCgnb25NZW51RXZlbnQnKSBvbk1lbnVFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uQXR0YWNoZWQ6IEV2ZW50RW1pdHRlcjx7IGVsZW1lbnQ6IEVsZW1lbnRSZWYsIG1lbnU6IElNZW51IH0+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25EZXRhY2hlZDogRXZlbnRFbWl0dGVyPHsgZWxlbWVudDogRWxlbWVudFJlZiwgbWVudTogSU1lbnUgfT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgX3NhTWVudTogSU1lbnU7XG4gIF9wb3NpdGlvbjogJ2xlZnQnIHwgJ3JpZ2h0JyB8ICd0b3AnIHwgJ2JvdHRvbScgPSAncmlnaHQnO1xuICBASW5wdXQoJ3NhTWVudScpXG4gIGdldCBzYU1lbnUoKTogSU1lbnUge1xuICAgIHJldHVybiB0aGlzLl9zYU1lbnU7XG4gIH1cblxuICBzZXQgc2FNZW51KHZhbHVlOiBJTWVudSkge1xuICAgIHRoaXMuX3NhTWVudSA9IHZhbHVlO1xuICAgIC8vIEVtaXQgdGhlIG5ldyBjb25maWd1cmF0aW9uIHRvIHRoZSBzdHJlYW1cbiAgICB0aGlzLm1lbnVDb25maWckLm5leHQodmFsdWUpO1xuICB9XG5cbiAgQElucHV0KCdzYU1hbnVQb3NpdGlvbicpXG4gIGdldCBwb3NpdGlvbigpe1xuICAgIHJldHVybiB0aGlzLl9wb3NpdGlvbjtcbiAgfVxuICBzZXQgcG9zaXRpb24odmFsdWU6ICdsZWZ0JyB8ICdyaWdodCcgfCAndG9wJyB8ICdib3R0b20nKXtcbiAgICB0aGlzLl9wb3NpdGlvbiA9IHZhbHVlO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LFxuICAgIHByaXZhdGUgb3ZlcmxheUNvbnRhaW5lcjogT3ZlcmxheUNvbnRhaW5lcixcbiAgICBwcml2YXRlIGVsUmVmOkVsZW1lbnRSZWZcbiAgKSB7fVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgb25DbGljayhlKSB7XG4gICAgaWYoISF0aGlzLl9zYU1lbnU/Lml0ZW1zPy5sZW5ndGggfHwgISF0aGlzLl9zYU1lbnU/Lml0ZW1Hcm91cHM/Lmxlbmd0aCB8fCAhIXRoaXMuX3NhTWVudT8udGFicz8ubGVuZ3RoKVxuICAgICAgdGhpcy5hdHRhY2hNZW51KCk7XG4gIH1cblxuICBwcml2YXRlIG92ZXJsYXlSZWY6IGFueSA9IG51bGw7XG4gIHByaXZhdGUgY29tcFJlZjogYW55ID0gbnVsbDtcblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyBTdWJzY3JpYmUgdG8gbWVudSBjb25maWd1cmF0aW9uIGNoYW5nZXNcbiAgICB0aGlzLm1lbnVDb25maWckXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKGNvbmZpZyA9PiB7XG4gICAgICAgIGlmICghY29uZmlnKSByZXR1cm47XG4gICAgICAgIFxuICAgICAgICAvLyBJZiB0aGUgbWVudSBpcyBhbHJlYWR5IG9wZW4sIHVwZGF0ZSBpdCB3aXRob3V0IGNsb3NpbmdcbiAgICAgICAgaWYgKHRoaXMub3ZlcmxheVJlZiAmJiB0aGlzLmNvbXBSZWYpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnVXBkYXRpbmcgb3BlbiBtZW51IHdpdGggbmV3IGNvbmZpZycpO1xuICAgICAgICAgIHRoaXMuY29tcFJlZi5pbnN0YW5jZS5tZW51ID0gY29uZmlnO1xuICAgICAgICAgIFxuICAgICAgICAgIC8vIE1hbnVhbGx5IHRyaWdnZXIgY2hhbmdlIGRldGVjdGlvbiBpZiBuZWVkZWRcbiAgICAgICAgICBpZiAodGhpcy5jb21wUmVmLmluc3RhbmNlLm5nT25DaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBSZWYuaW5zdGFuY2UubmdPbkNoYW5nZXMoe1xuICAgICAgICAgICAgICBtZW51OiB7XG4gICAgICAgICAgICAgICAgY3VycmVudFZhbHVlOiBjb25maWcsXG4gICAgICAgICAgICAgICAgcHJldmlvdXNWYWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICBmaXJzdENoYW5nZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNGaXJzdENoYW5nZTogKCkgPT4gZmFsc2VcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgfVxuXG4gIC8vIFdlJ3ZlIG1vdmVkIHRoaXMgZnVuY3Rpb25hbGl0eSB0byB0aGUgcmVhY3RpdmUgc3RyZWFtXG4gIFxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgLy8gTWVudSBjaGFuZ2VzIGFyZSBub3cgaGFuZGxlZCB0aHJvdWdoIHRoZSByZWFjdGl2ZSBzdHJlYW1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIC8vIENsZWFuIHVwIHN1YnNjcmlwdGlvbnNcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgXG4gICAgLy8gQ2xlYW4gdXAgdGhlIG92ZXJsYXlcbiAgICB0aGlzLmRldGFjaE1lbnUoKTtcbiAgfVxuXG4gIGF0dGFjaE1lbnUoKSB7XG4gICAgY29uc3QgaG9zdEVsZW1lbnQgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgbWVudVBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoU0FNZW51Q29tcG9uZW50KTtcbiAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5OiBQb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5LnBvc2l0aW9uKClcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKGhvc3RFbGVtZW50KSAgLy8gUG9zaXRpb24gcmVsYXRpdmUgdG8gdGhlIHRhcmdldCBlbGVtZW50ICh0aGUgYnV0dG9uKVxuICAgICAgLndpdGhQb3NpdGlvbnMoW3suLi5NRU5VX1BPU0lUSU9OU1t0aGlzLl9wb3NpdGlvbl0sIC4uLih0aGlzLl9zYU1lbnUub3ZlcmxheUNvbmZpZyB8fCB7fSl9XSk7XG5cbiAgICAvLyBBZGQgY3VzdG9tIGNsYXNzIHRvIHRoZSBvdmVybGF5IGNvbnRhaW5lclxuICAgIHRoaXMub3ZlcmxheUNvbnRhaW5lci5nZXRDb250YWluZXJFbGVtZW50KCkuY2xhc3NMaXN0LmFkZCgnc2EtbWVudS1vdmVybGF5LWNvbnRhaW5lcicpO1xuICAgIFxuICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoe1xuICAgICAgcG9zaXRpb25TdHJhdGVneSwgXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpLCBcbiAgICAgIHBhbmVsQ2xhc3M6ICdjdXN0b20tbWVudS1vdmVybGF5J1xuICAgIH0pO1xuICAgIHRoaXMuY29tcFJlZiA9IHRoaXMub3ZlcmxheVJlZi5hdHRhY2gobWVudVBvcnRhbCk7XG4gICAgdGhpcy5jb21wUmVmLmluc3RhbmNlLm1lbnUgPSB0aGlzLnNhTWVudTtcbiAgICB0aGlzLmNvbXBSZWYuaW5zdGFuY2UuaG9zdEVsID0gaG9zdEVsZW1lbnQ7XG5cbiAgICAvLyBTdWJzY3JpYmUgdG8gbWVudSBjb21wb25lbnQgZXZlbnRzIGFuZCBlbWl0IHRoZW1cbiAgICB0aGlzLmNvbXBSZWYuaW5zdGFuY2Uub25FdmVudC5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgdGhpcy5vbkV2ZW50LmVtaXQocmVzKTtcbiAgICB9KTtcblxuICAgIHRoaXMuY29tcFJlZi5pbnN0YW5jZS5jbG9zZUV2ZW50LnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICB0aGlzLmRldGFjaE1lbnUoKTtcbiAgICB9KTtcblxuICAgIHRoaXMub3ZlcmxheVJlZi5vdXRzaWRlUG9pbnRlckV2ZW50cygpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmRldGFjaE1lbnUoKTtcbiAgICB9KTtcblxuICAgIHRoaXMub25BdHRhY2hlZC5lbWl0KHtcbiAgICAgIGVsZW1lbnQ6IHRoaXMuZWxSZWYsXG4gICAgICBtZW51OiB0aGlzLl9zYU1lbnVcbiAgICB9KTtcbiAgfVxuXG4gIGRldGFjaE1lbnUoKSB7XG4gICAgaWYgKHRoaXMub3ZlcmxheVJlZikge1xuICAgICAgdGhpcy5vbkRldGFjaGVkLmVtaXQoe1xuICAgICAgICBlbGVtZW50OiB0aGlzLmVsUmVmLFxuICAgICAgICBtZW51OiB0aGlzLl9zYU1lbnVcbiAgICAgIH0pO1xuICAgICAgdGhpcy5vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IG51bGw7XG4gICAgICB0aGlzLmNvbXBSZWYgPSBudWxsO1xuICAgICAgXG4gICAgICAvLyBSZW1vdmUgdGhlIGN1c3RvbSBjbGFzcyBmcm9tIHRoZSBvdmVybGF5IGNvbnRhaW5lclxuICAgICAgdGhpcy5vdmVybGF5Q29udGFpbmVyLmdldENvbnRhaW5lckVsZW1lbnQoKS5jbGFzc0xpc3QucmVtb3ZlKCdzYS1tZW51LW92ZXJsYXktY29udGFpbmVyJyk7XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IE1FTlVfUE9TSVRJT05TOiBNeU92ZXJsYXlQb3NpdGlvbnM9IHtcbiAgJ3JpZ2h0Jzoge1xuICAgIG9yaWdpblg6ICdlbmQnLFxuICAgIG9yaWdpblk6ICdjZW50ZXInLFxuICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgIG92ZXJsYXlZOiAnY2VudGVyJyxcbiAgICBvZmZzZXRYOiAyMCxcbiAgICBvZmZzZXRZOiAwXG4gIH0sXG4gICdsZWZ0Jzoge1xuICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgb3JpZ2luWTogJ2NlbnRlcicsXG4gICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgIG92ZXJsYXlZOiAnY2VudGVyJyxcbiAgICBvZmZzZXRYOiAyMCxcbiAgICBvZmZzZXRZOiAwXG4gIH0sXG4gICd0b3AnOiB7XG4gICAgb3JpZ2luWDogJ2NlbnRlcicsXG4gICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgb3ZlcmxheVg6ICdjZW50ZXInLFxuICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgICBvZmZzZXRYOiAwLFxuICAgIG9mZnNldFk6IDIwXG4gIH0sXG4gICdib3R0b20nOiB7XG4gICAgb3JpZ2luWDogJ2NlbnRlcicsXG4gICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgb3ZlcmxheVg6ICdjZW50ZXInLFxuICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICBvZmZzZXRYOiAwLFxuICAgIG9mZnNldFk6IDIwXG4gIH1cbn0iXX0=