@sarasanalytics-com/design-system 0.0.183 → 0.0.185
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -24
- package/esm2022/interfaces/avatar-interface.mjs +1 -1
- package/esm2022/interfaces/button-interface.mjs +1 -1
- package/esm2022/interfaces/card-carousel-interface.mjs +1 -1
- package/esm2022/interfaces/chip-interface.mjs +1 -1
- package/esm2022/interfaces/form-layout.interface.mjs +1 -1
- package/esm2022/interfaces/grid-interface.mjs +1 -1
- package/esm2022/interfaces/guide-card-interface.mjs +1 -1
- package/esm2022/interfaces/header-interface.mjs +1 -1
- package/esm2022/interfaces/icon-interface.mjs +1 -1
- package/esm2022/interfaces/layout-section-interface.mjs +1 -1
- package/esm2022/interfaces/left-nav-interface.mjs +1 -1
- package/esm2022/interfaces/menu.interface.mjs +1 -1
- package/esm2022/interfaces/message-banner.mjs +1 -1
- package/esm2022/interfaces/option-interface.mjs +1 -1
- package/esm2022/interfaces/scrolling-card-interface.mjs +1 -1
- package/esm2022/interfaces/select-interface.mjs +1 -1
- package/esm2022/interfaces/status-dot.interface.mjs +1 -1
- package/esm2022/interfaces/tab-interface.mjs +1 -1
- package/esm2022/interfaces/toast-interface.mjs +1 -1
- package/esm2022/interfaces/typography-animation-interface.mjs +1 -1
- package/esm2022/lib/accordion/accordion.component.mjs +3 -3
- package/esm2022/lib/avatar/avatar.component.mjs +3 -3
- package/esm2022/lib/button/button.component.mjs +3 -3
- package/esm2022/lib/calendar-header/calendar-header.component.mjs +3 -3
- package/esm2022/lib/card/card-body/card-body.component.mjs +1 -1
- package/esm2022/lib/card/card-custom-header/card-custom-header.component.mjs +1 -1
- package/esm2022/lib/card/card-footer-actions/card-footer-actions.component.mjs +3 -3
- package/esm2022/lib/card/card-icon/card-icon.component.mjs +1 -1
- package/esm2022/lib/card/card-title-actions/card-title-actions.component.mjs +1 -1
- package/esm2022/lib/card/card.component.mjs +3 -3
- package/esm2022/lib/card/checkbox-card/checkbox-card.component.mjs +3 -3
- package/esm2022/lib/card/guide-card/guide-card.component.mjs +3 -3
- package/esm2022/lib/card/menu-card/menu-card.component.mjs +3 -3
- package/esm2022/lib/card/thumbnail-card/thumbnail-card.component.mjs +3 -3
- package/esm2022/lib/card-carousel/card-carousel.component.mjs +3 -3
- package/esm2022/lib/categories-nav/categories-nav.component.mjs +3 -3
- package/esm2022/lib/checkbox/checkbox.component.mjs +3 -3
- package/esm2022/lib/chips/chips.component.mjs +3 -3
- package/esm2022/lib/component-library.component.mjs +9 -9
- package/esm2022/lib/component-library.service.mjs +1 -1
- package/esm2022/lib/dashboard-loader/dashboard-loader.component.mjs +1 -1
- package/esm2022/lib/data-grid/data-grid.component.mjs +3 -3
- package/esm2022/lib/datepicker/datepicker.component.mjs +3 -3
- package/esm2022/lib/dialog/dialog.component.mjs +3 -3
- package/esm2022/lib/dropdown/category-dropdown/category-dropdown.component.mjs +3 -3
- package/esm2022/lib/dropdown/ng-select/ng-select.component.mjs +4 -3
- package/esm2022/lib/dropdown-menu/dropdown-menu.component.mjs +3 -3
- package/esm2022/lib/filter/filter.component.mjs +3 -3
- package/esm2022/lib/form-input/form-input.component.mjs +3 -3
- package/esm2022/lib/form-select/form-select.component.mjs +3 -3
- package/esm2022/lib/grid-cell/grid-cell.component.mjs +10 -10
- package/esm2022/lib/grid-header/grid-header.component.mjs +3 -3
- package/esm2022/lib/header/header.component.mjs +3 -3
- package/esm2022/lib/icon/icon.component.mjs +3 -3
- package/esm2022/lib/icon/icon.service.mjs +1 -1
- package/esm2022/lib/layout-section/layout-section.component.mjs +3 -3
- package/esm2022/lib/left-nav/left-nav.component.mjs +3 -3
- package/esm2022/lib/list/list.component.mjs +3 -3
- package/esm2022/lib/menu/menu-list/menu-item.component.mjs +3 -3
- package/esm2022/lib/menu/menu.component.mjs +3 -3
- package/esm2022/lib/menu/menu.directive.mjs +1 -1
- package/esm2022/lib/message-banner/message-banner.component.mjs +3 -3
- package/esm2022/lib/message-banner-v2/message-banner-v2.component.mjs +3 -3
- package/esm2022/lib/mini-card/mini-card.component.mjs +3 -3
- package/esm2022/lib/page-layout/page-layout.component.mjs +3 -3
- package/esm2022/lib/progress-bar/progress-bar.component.mjs +3 -3
- package/esm2022/lib/query-builder/query-builder-demo.component.mjs +45 -45
- package/esm2022/lib/query-builder/query-builder.component.mjs +3 -3
- package/esm2022/lib/query-builder/query-builder.service.mjs +1 -1
- package/esm2022/lib/query-builder-formly/query-builder-formly.component.mjs +279 -74
- package/esm2022/lib/query-builder-textarea/query-builder-textarea-demo.component.mjs +39 -39
- package/esm2022/lib/query-builder-textarea/query-builder-textarea.component.mjs +3 -3
- package/esm2022/lib/radio-button/radio-button.component.mjs +3 -3
- package/esm2022/lib/scrolling-cards/scrolling-cards.component.mjs +3 -3
- package/esm2022/lib/skeleton/skeleton-base.component.mjs +1 -1
- package/esm2022/lib/skeleton/skeleton-container.component.mjs +9 -9
- package/esm2022/lib/skeleton/skeleton-loader.component.mjs +217 -217
- package/esm2022/lib/skeleton/skeleton-presets.mjs +1 -1
- package/esm2022/lib/skeleton/skeleton-shapes.component.mjs +1 -1
- package/esm2022/lib/spinner/spinner.component.mjs +1 -1
- package/esm2022/lib/status-dot/status-dot.component.mjs +17 -17
- package/esm2022/lib/stepper/stepper.component.mjs +3 -3
- package/esm2022/lib/tabs/tabs.component.mjs +3 -3
- package/esm2022/lib/toast/toast.component.mjs +3 -3
- package/esm2022/lib/tool-tip/tool-tip.component.mjs +3 -3
- package/esm2022/lib/typography-animation/typography-animation.component.mjs +3 -3
- package/esm2022/utils/validators.mjs +1 -1
- package/fesm2022/sarasanalytics-com-design-system.mjs +704 -500
- package/fesm2022/sarasanalytics-com-design-system.mjs.map +1 -1
- package/lib/query-builder-formly/query-builder-formly.component.d.ts +3 -1
- package/package.json +1 -1
- package/styles/styles.css +434 -434
|
@@ -240,7 +240,7 @@ export class CategoryDropdownComponent extends FieldType {
|
|
|
240
240
|
return this.categoryAttributeCounts().get(_get(category, this.bindValue)) || 0;
|
|
241
241
|
}
|
|
242
242
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CategoryDropdownComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
243
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: CategoryDropdownComponent, isStandalone: true, selector: "sa-category-dropdown", host: { listeners: { "document:click": "onClick($event)" } }, providers: [IconService], viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "categoryContainer", first: true, predicate: ["categoryContainer"], descendants: true }, { propertyName: "dropdownPanel", first: true, predicate: ["dropdownPanel"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"custom-category-dropdown relative\" (click)=\"toggleDropdown()\">\r\n <!-- Dropdown Trigger / Display -->\r\n <div #categoryContainer class=\"custom-category-container\" \r\n [ngClass]=\"{\r\n 'category-invalid': formControl.invalid,\r\n 'category-touched': formControl.touched\r\n }\" \r\n [class.open]=\"isOpen()\">\r\n <div class=\"custom-category-attribute-container\">\r\n @if(props?.['multiple']){\r\n @if (selectedAttributes().length > 0) {\r\n @for (item of selectedAttributes(); track item[bindValue]) {\r\n <div class=\"custom-category-attribute custom-category-custom-chip\" (click)=\"$event.stopPropagation()\">\r\n <span class=\"custom-category-attribute-label\">{{ item[bindLabel] }}</span>\r\n <span class=\"custom-category-attribute-icon right\">\r\n <sa-icon icon=\"closeOutlined\" (click)=\"removeValue(item)\" size=\"11\"></sa-icon>\r\n </span>\r\n </div>\r\n }\r\n } @else {\r\n <span class=\"placeholder\">Select items</span>\r\n }\r\n } @else {\r\n @if(formControl.value) {\r\n <span class=\"custom-category-attribute-label\">{{ formControl.value[bindLabel] }}</span>\r\n } @else {\r\n <span class=\"placeholder\">Select item</span>\r\n }\r\n }\r\n </div>\r\n <div class=\"custom-category-arrow-wrapper\">\r\n <sa-icon icon=\"upDownChevronOutlined\" size=\"11\" class=\"searchIcons\"></sa-icon>\r\n </div>\r\n </div>\r\n\r\n <!-- Dropdown Panel -->\r\n @if (isOpen()) {\r\n <div #dropdownPanel class=\"dropdown-panel\" (click)=\"$event.stopPropagation()\">\r\n <div class=\"search-input-container mat-form-field-density-5\">\r\n <mat-form-field [appearance]=\"props['appearance'] || 'outline'\" class=\"w-100\">\r\n <sa-icon icon=\"searchIcon\" size=\"20\" class=\"searchIcons\" matPrefix></sa-icon>\r\n <input #searchInput matInput type=\"text\" name=\"menu-search-bar\" class=\"search-input\"\r\n (keyup)=\"onSearch($event)\" [placeholder]=\"props?.['searchPlaceholder'] || 'Search'\" />\r\n <sa-icon class=\"pointer\" icon=\"closeOutlined\" size=\"15\" class=\"searchIcons\" matSuffix\r\n (click)=\"clearSearch($event)\"></sa-icon>\r\n </mat-form-field>\r\n </div>\r\n\r\n @if (filteredCategories().length > 0) {\r\n <div class=\"two-panel-dropdown\">\r\n <!-- Left Panel: Categories -->\r\n <div class=\"category-panel\">\r\n @for (cat of filteredCategories(); track cat[bindValue]) {\r\n <div class=\"category-item\" [class.active]=\"cat[bindValue] === selectedCategory()?.[bindValue]\"\r\n (click)=\"selectCategory(cat); $event.stopPropagation()\">\r\n <span class=\"category-label\">{{ cat[bindLabel] }}\r\n @if(props?.['showAttributesCount']){\r\n <span class=\"attributes-count\">({{ getFilteredAttributesCount(cat) }})</span>\r\n }\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"dropdown-divider\"></div>\r\n\r\n <!-- Right Panel: Attributes -->\r\n <div class=\"attributes-panel\">\r\n @if(filteredAttributes().length > 0) {\r\n @for (val of filteredAttributes(); track val[bindValue]) {\r\n <div class=\"attribute-item pointer\"\r\n [class.active]=\"props?.['multiple'] ? isItemSelected(val) : formControl.value?.[bindValue] === val[bindValue]\"\r\n (click)=\"props?.['multiple'] ? toggleValue(val) : selectSingleValue(val); $event.stopPropagation()\">\r\n @if(props?.['multiple']){\r\n <label class=\"custom-checkbox-container\" (click)=\"$event.stopPropagation()\">\r\n <input type=\"checkbox\" [checked]=\"isItemSelected(val)\" (change)=\"toggleValue(val)\">\r\n <span class=\"checkmark\"></span>\r\n <span class=\"attribute-label\">{{ val[bindLabel] }}</span>\r\n </label>\r\n }\r\n @else{\r\n <label class=\"custom-checkbox-container\">\r\n <span class=\"attribute-label\">{{ val[bindLabel] }}</span>\r\n @if(val?.tooltip || val?.description){\r\n <span class=\"tooltip-container\">\r\n <sa-icon [icon]=\"props?.['tooltipIcon'] || 'infoCircleOutlined'\" customClass=\"info-icon\"\r\n [matTooltip]=\"val?.tooltip || val?.description\" matTooltipClass=\"custom-tooltip\"\r\n class=\"tooltip-icon\"></sa-icon>\r\n </span>\r\n }\r\n </label>\r\n }\r\n </div>\r\n }\r\n }@else {\r\n <div class=\"p-4 text-center text-gray-500 w-full\">\r\n No items found.\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n } @else {\r\n <div class=\"p-4 text-center text-gray-500 w-full\">\r\n No items found.\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>", styles: [".custom-category-container{display:flex;align-items:center;justify-content:space-between;border-radius:var(--small-4px, 4px);padding:.5rem .75rem;min-height:2.438rem;cursor:pointer;border:1px solid var(--grey-100, #EAECF0)}.custom-category-container.category-invalid.category-touched{border-color:var(--semantic-error-500, #BD271E)}.custom-category-container:hover,.custom-category-container.open{border-color:var(--primary-500)}.custom-category-attribute-container{display:flex;flex-wrap:nowrap;align-items:center;gap:.5rem;padding-right:1.5rem;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.custom-category-attribute{display:flex;align-items:center;background-color:var(--border-subtle, #e5e7eb);border-radius:9999px;padding:.25rem .75rem;color:var(--text-medium-emphasis, #374151);font-size:var(--small-14px, 14px);font-weight:500}.custom-category-attribute-icon.right{margin-left:.5rem;cursor:pointer}.placeholder{color:var(--text-low-emphasis, #9B98A3);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px}.custom-checkbox-container input{opacity:0;position:absolute;width:0;height:0}.checkmark{height:1.125rem;width:1.125rem;background-color:var(--primary-50);border:1px solid var(--grey-100);border-radius:var(--small-4px, 4px);position:relative;margin-right:var(--small-8px, 8px)}.custom-checkbox-container input:checked~.checkmark{background-color:var(--primary-500);border-color:var(--primary-500)}.checkmark:after{content:\"\";position:absolute;display:none}.custom-checkbox-container input:checked~.checkmark:after{display:block}.custom-checkbox-container .checkmark:after{left:.375rem;top:.125rem;width:.375rem;height:.625rem;border:solid var(--structural-white);border-width:0 .125rem .125rem 0;transform:rotate(45deg)}::ng-deep .custom-category-dropdown .search-input-container .mat-mdc-form-field{width:-webkit-fill-available}.custom-category-dropdown .two-panel-dropdown{display:flex;min-height:15.625rem;max-height:25rem;background-color:var(--structural-white);overflow:hidden;top:calc(100% + var(--small-4px));gap:var(--medium-20px)}::ng-deep .custom-category-dropdown .search-input-container .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding:var(--small-2px) var(--small-12px)}.custom-category-dropdown .dropdown-divider{border-right:1px solid var(--grey-100, #EAECF0)}.custom-category-dropdown .category-label{color:var(--text-highemphasis, #1C1B20);text-align:left;font-family:var(--font-family, Roboto);font-size:var(--small-12px, 12px);font-style:normal;font-weight:400;line-height:var(--small-16px, 16px)}.custom-category-dropdown .attribute-label{color:var(--text-mediumemphasis, #6D6979);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px}.custom-category-dropdown .category-item.active{border-radius:var(--small-4px, 4px);background:var(--primary-500)}.custom-category-dropdown .category-item.active .category-label{color:var(--text-white, #FFF);text-align:center;font-family:var(--font-family, Roboto);font-size:var(--small-12px, 12px);font-style:normal;font-weight:500;line-height:var(--small-16px, 16px);letter-spacing:.5px}.custom-category-dropdown .category-item:not(.active):hover{border-radius:var(--small-4px, 4px);background-color:var(--primary-50)}.custom-category-dropdown .attribute-item:hover{border-radius:var(--small-4px, 4px);background-color:var(--primary-50)}.custom-category-dropdown .attribute-item.active{border-radius:var(--small-4px, 4px);background:var(--primary-500)}.custom-category-dropdown .attribute-item.active .attribute-label{color:var(--text-white, #FFF);font-weight:500}.custom-category-dropdown .category-panel{flex:2;overflow-y:auto;display:flex;flex-direction:column;gap:var(--small-8px, 8px)}.custom-category-dropdown .category-item{display:flex;padding:var(--small-8px, 8px);align-items:center;gap:var(--small-8px, 8px);align-self:stretch;border-radius:var(--small-4px, 4px);background:var(--structural-white);cursor:pointer}.custom-category-dropdown .attributes-panel{flex:2;overflow-y:auto;display:flex;flex-direction:column;align-items:flex-start;gap:var(--medium-20px, 20px);align-self:stretch}.custom-category-dropdown .attribute-item{display:flex;padding:var(--small-8px, 8px) var(--small-8px, 8px);align-items:center;gap:var(--Small-4px, 4px)}.custom-checkbox-container{display:flex;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none;gap:var(--small-4px, 4px)}.tooltip-icon{display:flex;align-items:center}::ng-deep .custom-category-dropdown .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,::ng-deep .custom-category-dropdown .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,::ng-deep .custom-category-dropdown .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--primary-500)}::ng-deep .custom-category-dropdown .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:var(--small-4px, 4px);border-bottom-right-radius:var(--small-4px, 4px);border-bottom-left-radius:0}::ng-deep .custom-category-dropdown .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,::ng-deep .custom-category-dropdown .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,::ng-deep .custom-category-dropdown .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--grey-100)}::ng-deep .custom-category-dropdown .active .tooltip-container .info-icon{color:var(--structural-white)}.custom-category-dropdown .dropdown-panel{display:flex;padding:var(--small-16px, 16px) var(--medium-20px, 20px) var(--small-16px, 16px) var(--small-12px, 12px);flex-direction:column;gap:var(--small-10px);border-radius:var(--small-8px);background:var(--structural-white);width:fit-content;max-height:25rem;box-shadow:0 1px 2px #0000004d,0 1px 2px #0000004d,0 2px 6px 2px #00000026;margin-top:0;box-sizing:border-box;position:absolute;z-index:1000;-webkit-overflow-scrolling:touch}.custom-category-container .custom-category-attribute-label{color:var(--text-highemphasis);font-family:var(--font-family-roboto);font-size:var(--small-14px);font-style:normal;font-weight:400;line-height:var(--medium-20px);letter-spacing:.25px}.custom-category-dropdown .searchIcons{color:var(--color-text-neutral-300, #757575)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: IconComponent, selector: "sa-icon", inputs: ["img", "imgWidth", "imgHeight", "icon", "size", "color", "iconPath", "iconUrl", "customClass", "href", "hrefTarget", "iconPosition"], outputs: ["onClickEvent"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "ngmodule", type: MatSelectModule }] }); }
|
|
243
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: CategoryDropdownComponent, isStandalone: true, selector: "sa-category-dropdown", host: { listeners: { "document:click": "onClick($event)" } }, providers: [IconService], viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "categoryContainer", first: true, predicate: ["categoryContainer"], descendants: true }, { propertyName: "dropdownPanel", first: true, predicate: ["dropdownPanel"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"custom-category-dropdown relative\" (click)=\"toggleDropdown()\">\n <!-- Dropdown Trigger / Display -->\n <div #categoryContainer class=\"custom-category-container\" \n [ngClass]=\"{\n 'category-invalid': formControl.invalid,\n 'category-touched': formControl.touched\n }\" \n [class.open]=\"isOpen()\">\n <div class=\"custom-category-attribute-container\">\n @if(props?.['multiple']){\n @if (selectedAttributes().length > 0) {\n @for (item of selectedAttributes(); track item[bindValue]) {\n <div class=\"custom-category-attribute custom-category-custom-chip\" (click)=\"$event.stopPropagation()\">\n <span class=\"custom-category-attribute-label\">{{ item[bindLabel] }}</span>\n <span class=\"custom-category-attribute-icon right\">\n <sa-icon icon=\"closeOutlined\" (click)=\"removeValue(item)\" size=\"11\"></sa-icon>\n </span>\n </div>\n }\n } @else {\n <span class=\"placeholder\">Select items</span>\n }\n } @else {\n @if(formControl.value) {\n <span class=\"custom-category-attribute-label\">{{ formControl.value[bindLabel] }}</span>\n } @else {\n <span class=\"placeholder\">Select item</span>\n }\n }\n </div>\n <div class=\"custom-category-arrow-wrapper\">\n <sa-icon icon=\"upDownChevronOutlined\" size=\"11\" class=\"searchIcons\"></sa-icon>\n </div>\n </div>\n\n <!-- Dropdown Panel -->\n @if (isOpen()) {\n <div #dropdownPanel class=\"dropdown-panel\" (click)=\"$event.stopPropagation()\">\n <div class=\"search-input-container mat-form-field-density-5\">\n <mat-form-field [appearance]=\"props['appearance'] || 'outline'\" class=\"w-100\">\n <sa-icon icon=\"searchIcon\" size=\"20\" class=\"searchIcons\" matPrefix></sa-icon>\n <input #searchInput matInput type=\"text\" name=\"menu-search-bar\" class=\"search-input\"\n (keyup)=\"onSearch($event)\" [placeholder]=\"props?.['searchPlaceholder'] || 'Search'\" />\n <sa-icon class=\"pointer\" icon=\"closeOutlined\" size=\"15\" class=\"searchIcons\" matSuffix\n (click)=\"clearSearch($event)\"></sa-icon>\n </mat-form-field>\n </div>\n\n @if (filteredCategories().length > 0) {\n <div class=\"two-panel-dropdown\">\n <!-- Left Panel: Categories -->\n <div class=\"category-panel\">\n @for (cat of filteredCategories(); track cat[bindValue]) {\n <div class=\"category-item\" [class.active]=\"cat[bindValue] === selectedCategory()?.[bindValue]\"\n (click)=\"selectCategory(cat); $event.stopPropagation()\">\n <span class=\"category-label\">{{ cat[bindLabel] }}\n @if(props?.['showAttributesCount']){\n <span class=\"attributes-count\">({{ getFilteredAttributesCount(cat) }})</span>\n }\n </span>\n </div>\n }\n </div>\n <div class=\"dropdown-divider\"></div>\n\n <!-- Right Panel: Attributes -->\n <div class=\"attributes-panel\">\n @if(filteredAttributes().length > 0) {\n @for (val of filteredAttributes(); track val[bindValue]) {\n <div class=\"attribute-item pointer\"\n [class.active]=\"props?.['multiple'] ? isItemSelected(val) : formControl.value?.[bindValue] === val[bindValue]\"\n (click)=\"props?.['multiple'] ? toggleValue(val) : selectSingleValue(val); $event.stopPropagation()\">\n @if(props?.['multiple']){\n <label class=\"custom-checkbox-container\" (click)=\"$event.stopPropagation()\">\n <input type=\"checkbox\" [checked]=\"isItemSelected(val)\" (change)=\"toggleValue(val)\">\n <span class=\"checkmark\"></span>\n <span class=\"attribute-label\">{{ val[bindLabel] }}</span>\n </label>\n }\n @else{\n <label class=\"custom-checkbox-container\">\n <span class=\"attribute-label\">{{ val[bindLabel] }}</span>\n @if(val?.tooltip || val?.description){\n <span class=\"tooltip-container\">\n <sa-icon [icon]=\"props?.['tooltipIcon'] || 'infoCircleOutlined'\" customClass=\"info-icon\"\n [matTooltip]=\"val?.tooltip || val?.description\" matTooltipClass=\"custom-tooltip\"\n class=\"tooltip-icon\"></sa-icon>\n </span>\n }\n </label>\n }\n </div>\n }\n }@else {\n <div class=\"p-4 text-center text-gray-500 w-full\">\n No items found.\n </div>\n }\n </div>\n </div>\n } @else {\n <div class=\"p-4 text-center text-gray-500 w-full\">\n No items found.\n </div>\n }\n </div>\n }\n</div>", styles: [".custom-category-container{display:flex;align-items:center;justify-content:space-between;border-radius:var(--small-4px, 4px);padding:.5rem .75rem;min-height:2.438rem;cursor:pointer;border:1px solid var(--grey-100, #EAECF0)}.custom-category-container.category-invalid.category-touched{border-color:var(--semantic-error-500, #BD271E)}.custom-category-container:hover,.custom-category-container.open{border-color:var(--primary-500)}.custom-category-attribute-container{display:flex;flex-wrap:nowrap;align-items:center;gap:.5rem;padding-right:1.5rem;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.custom-category-attribute{display:flex;align-items:center;background-color:var(--border-subtle, #e5e7eb);border-radius:9999px;padding:.25rem .75rem;color:var(--text-medium-emphasis, #374151);font-size:var(--small-14px, 14px);font-weight:500}.custom-category-attribute-icon.right{margin-left:.5rem;cursor:pointer}.placeholder{color:var(--text-low-emphasis, #9B98A3);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px}.custom-checkbox-container input{opacity:0;position:absolute;width:0;height:0}.checkmark{height:1.125rem;width:1.125rem;background-color:var(--primary-50);border:1px solid var(--grey-100);border-radius:var(--small-4px, 4px);position:relative;margin-right:var(--small-8px, 8px)}.custom-checkbox-container input:checked~.checkmark{background-color:var(--primary-500);border-color:var(--primary-500)}.checkmark:after{content:\"\";position:absolute;display:none}.custom-checkbox-container input:checked~.checkmark:after{display:block}.custom-checkbox-container .checkmark:after{left:.375rem;top:.125rem;width:.375rem;height:.625rem;border:solid var(--structural-white);border-width:0 .125rem .125rem 0;transform:rotate(45deg)}::ng-deep .custom-category-dropdown .search-input-container .mat-mdc-form-field{width:-webkit-fill-available}.custom-category-dropdown .two-panel-dropdown{display:flex;min-height:15.625rem;max-height:25rem;background-color:var(--structural-white);overflow:hidden;top:calc(100% + var(--small-4px));gap:var(--medium-20px)}::ng-deep .custom-category-dropdown .search-input-container .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding:var(--small-2px) var(--small-12px)}.custom-category-dropdown .dropdown-divider{border-right:1px solid var(--grey-100, #EAECF0)}.custom-category-dropdown .category-label{color:var(--text-highemphasis, #1C1B20);text-align:left;font-family:var(--font-family, Roboto);font-size:var(--small-12px, 12px);font-style:normal;font-weight:400;line-height:var(--small-16px, 16px)}.custom-category-dropdown .attribute-label{color:var(--text-mediumemphasis, #6D6979);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px}.custom-category-dropdown .category-item.active{border-radius:var(--small-4px, 4px);background:var(--primary-500)}.custom-category-dropdown .category-item.active .category-label{color:var(--text-white, #FFF);text-align:center;font-family:var(--font-family, Roboto);font-size:var(--small-12px, 12px);font-style:normal;font-weight:500;line-height:var(--small-16px, 16px);letter-spacing:.5px}.custom-category-dropdown .category-item:not(.active):hover{border-radius:var(--small-4px, 4px);background-color:var(--primary-50)}.custom-category-dropdown .attribute-item:hover{border-radius:var(--small-4px, 4px);background-color:var(--primary-50)}.custom-category-dropdown .attribute-item.active{border-radius:var(--small-4px, 4px);background:var(--primary-500)}.custom-category-dropdown .attribute-item.active .attribute-label{color:var(--text-white, #FFF);font-weight:500}.custom-category-dropdown .category-panel{flex:2;overflow-y:auto;display:flex;flex-direction:column;gap:var(--small-8px, 8px)}.custom-category-dropdown .category-item{display:flex;padding:var(--small-8px, 8px);align-items:center;gap:var(--small-8px, 8px);align-self:stretch;border-radius:var(--small-4px, 4px);background:var(--structural-white);cursor:pointer}.custom-category-dropdown .attributes-panel{flex:2;overflow-y:auto;display:flex;flex-direction:column;align-items:flex-start;gap:var(--medium-20px, 20px);align-self:stretch}.custom-category-dropdown .attribute-item{display:flex;padding:var(--small-8px, 8px) var(--small-8px, 8px);align-items:center;gap:var(--Small-4px, 4px)}.custom-checkbox-container{display:flex;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none;gap:var(--small-4px, 4px)}.tooltip-icon{display:flex;align-items:center}::ng-deep .custom-category-dropdown .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,::ng-deep .custom-category-dropdown .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,::ng-deep .custom-category-dropdown .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--primary-500)}::ng-deep .custom-category-dropdown .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:var(--small-4px, 4px);border-bottom-right-radius:var(--small-4px, 4px);border-bottom-left-radius:0}::ng-deep .custom-category-dropdown .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,::ng-deep .custom-category-dropdown .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,::ng-deep .custom-category-dropdown .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--grey-100)}::ng-deep .custom-category-dropdown .active .tooltip-container .info-icon{color:var(--structural-white)}.custom-category-dropdown .dropdown-panel{display:flex;padding:var(--small-16px, 16px) var(--medium-20px, 20px) var(--small-16px, 16px) var(--small-12px, 12px);flex-direction:column;gap:var(--small-10px);border-radius:var(--small-8px);background:var(--structural-white);width:fit-content;max-height:25rem;box-shadow:0 1px 2px #0000004d,0 1px 2px #0000004d,0 2px 6px 2px #00000026;margin-top:0;box-sizing:border-box;position:absolute;z-index:1000;-webkit-overflow-scrolling:touch}.custom-category-container .custom-category-attribute-label{color:var(--text-highemphasis);font-family:var(--font-family-roboto);font-size:var(--small-14px);font-style:normal;font-weight:400;line-height:var(--medium-20px);letter-spacing:.25px}.custom-category-dropdown .searchIcons{color:var(--color-text-neutral-300, #757575)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: IconComponent, selector: "sa-icon", inputs: ["img", "imgWidth", "imgHeight", "icon", "size", "color", "iconPath", "iconUrl", "customClass", "href", "hrefTarget", "iconPosition"], outputs: ["onClickEvent"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "ngmodule", type: MatSelectModule }] }); }
|
|
244
244
|
}
|
|
245
245
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CategoryDropdownComponent, decorators: [{
|
|
246
246
|
type: Component,
|
|
@@ -258,7 +258,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
258
258
|
MatDatepickerModule,
|
|
259
259
|
MatNativeDateModule,
|
|
260
260
|
MatCheckboxModule,
|
|
261
|
-
MatSelectModule], providers: [IconService], template: "<div class=\"custom-category-dropdown relative\" (click)=\"toggleDropdown()\">\r\n <!-- Dropdown Trigger / Display -->\r\n <div #categoryContainer class=\"custom-category-container\" \r\n [ngClass]=\"{\r\n 'category-invalid': formControl.invalid,\r\n 'category-touched': formControl.touched\r\n }\" \r\n [class.open]=\"isOpen()\">\r\n <div class=\"custom-category-attribute-container\">\r\n @if(props?.['multiple']){\r\n @if (selectedAttributes().length > 0) {\r\n @for (item of selectedAttributes(); track item[bindValue]) {\r\n <div class=\"custom-category-attribute custom-category-custom-chip\" (click)=\"$event.stopPropagation()\">\r\n <span class=\"custom-category-attribute-label\">{{ item[bindLabel] }}</span>\r\n <span class=\"custom-category-attribute-icon right\">\r\n <sa-icon icon=\"closeOutlined\" (click)=\"removeValue(item)\" size=\"11\"></sa-icon>\r\n </span>\r\n </div>\r\n }\r\n } @else {\r\n <span class=\"placeholder\">Select items</span>\r\n }\r\n } @else {\r\n @if(formControl.value) {\r\n <span class=\"custom-category-attribute-label\">{{ formControl.value[bindLabel] }}</span>\r\n } @else {\r\n <span class=\"placeholder\">Select item</span>\r\n }\r\n }\r\n </div>\r\n <div class=\"custom-category-arrow-wrapper\">\r\n <sa-icon icon=\"upDownChevronOutlined\" size=\"11\" class=\"searchIcons\"></sa-icon>\r\n </div>\r\n </div>\r\n\r\n <!-- Dropdown Panel -->\r\n @if (isOpen()) {\r\n <div #dropdownPanel class=\"dropdown-panel\" (click)=\"$event.stopPropagation()\">\r\n <div class=\"search-input-container mat-form-field-density-5\">\r\n <mat-form-field [appearance]=\"props['appearance'] || 'outline'\" class=\"w-100\">\r\n <sa-icon icon=\"searchIcon\" size=\"20\" class=\"searchIcons\" matPrefix></sa-icon>\r\n <input #searchInput matInput type=\"text\" name=\"menu-search-bar\" class=\"search-input\"\r\n (keyup)=\"onSearch($event)\" [placeholder]=\"props?.['searchPlaceholder'] || 'Search'\" />\r\n <sa-icon class=\"pointer\" icon=\"closeOutlined\" size=\"15\" class=\"searchIcons\" matSuffix\r\n (click)=\"clearSearch($event)\"></sa-icon>\r\n </mat-form-field>\r\n </div>\r\n\r\n @if (filteredCategories().length > 0) {\r\n <div class=\"two-panel-dropdown\">\r\n <!-- Left Panel: Categories -->\r\n <div class=\"category-panel\">\r\n @for (cat of filteredCategories(); track cat[bindValue]) {\r\n <div class=\"category-item\" [class.active]=\"cat[bindValue] === selectedCategory()?.[bindValue]\"\r\n (click)=\"selectCategory(cat); $event.stopPropagation()\">\r\n <span class=\"category-label\">{{ cat[bindLabel] }}\r\n @if(props?.['showAttributesCount']){\r\n <span class=\"attributes-count\">({{ getFilteredAttributesCount(cat) }})</span>\r\n }\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"dropdown-divider\"></div>\r\n\r\n <!-- Right Panel: Attributes -->\r\n <div class=\"attributes-panel\">\r\n @if(filteredAttributes().length > 0) {\r\n @for (val of filteredAttributes(); track val[bindValue]) {\r\n <div class=\"attribute-item pointer\"\r\n [class.active]=\"props?.['multiple'] ? isItemSelected(val) : formControl.value?.[bindValue] === val[bindValue]\"\r\n (click)=\"props?.['multiple'] ? toggleValue(val) : selectSingleValue(val); $event.stopPropagation()\">\r\n @if(props?.['multiple']){\r\n <label class=\"custom-checkbox-container\" (click)=\"$event.stopPropagation()\">\r\n <input type=\"checkbox\" [checked]=\"isItemSelected(val)\" (change)=\"toggleValue(val)\">\r\n <span class=\"checkmark\"></span>\r\n <span class=\"attribute-label\">{{ val[bindLabel] }}</span>\r\n </label>\r\n }\r\n @else{\r\n <label class=\"custom-checkbox-container\">\r\n <span class=\"attribute-label\">{{ val[bindLabel] }}</span>\r\n @if(val?.tooltip || val?.description){\r\n <span class=\"tooltip-container\">\r\n <sa-icon [icon]=\"props?.['tooltipIcon'] || 'infoCircleOutlined'\" customClass=\"info-icon\"\r\n [matTooltip]=\"val?.tooltip || val?.description\" matTooltipClass=\"custom-tooltip\"\r\n class=\"tooltip-icon\"></sa-icon>\r\n </span>\r\n }\r\n </label>\r\n }\r\n </div>\r\n }\r\n }@else {\r\n <div class=\"p-4 text-center text-gray-500 w-full\">\r\n No items found.\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n } @else {\r\n <div class=\"p-4 text-center text-gray-500 w-full\">\r\n No items found.\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>", styles: [".custom-category-container{display:flex;align-items:center;justify-content:space-between;border-radius:var(--small-4px, 4px);padding:.5rem .75rem;min-height:2.438rem;cursor:pointer;border:1px solid var(--grey-100, #EAECF0)}.custom-category-container.category-invalid.category-touched{border-color:var(--semantic-error-500, #BD271E)}.custom-category-container:hover,.custom-category-container.open{border-color:var(--primary-500)}.custom-category-attribute-container{display:flex;flex-wrap:nowrap;align-items:center;gap:.5rem;padding-right:1.5rem;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.custom-category-attribute{display:flex;align-items:center;background-color:var(--border-subtle, #e5e7eb);border-radius:9999px;padding:.25rem .75rem;color:var(--text-medium-emphasis, #374151);font-size:var(--small-14px, 14px);font-weight:500}.custom-category-attribute-icon.right{margin-left:.5rem;cursor:pointer}.placeholder{color:var(--text-low-emphasis, #9B98A3);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px}.custom-checkbox-container input{opacity:0;position:absolute;width:0;height:0}.checkmark{height:1.125rem;width:1.125rem;background-color:var(--primary-50);border:1px solid var(--grey-100);border-radius:var(--small-4px, 4px);position:relative;margin-right:var(--small-8px, 8px)}.custom-checkbox-container input:checked~.checkmark{background-color:var(--primary-500);border-color:var(--primary-500)}.checkmark:after{content:\"\";position:absolute;display:none}.custom-checkbox-container input:checked~.checkmark:after{display:block}.custom-checkbox-container .checkmark:after{left:.375rem;top:.125rem;width:.375rem;height:.625rem;border:solid var(--structural-white);border-width:0 .125rem .125rem 0;transform:rotate(45deg)}::ng-deep .custom-category-dropdown .search-input-container .mat-mdc-form-field{width:-webkit-fill-available}.custom-category-dropdown .two-panel-dropdown{display:flex;min-height:15.625rem;max-height:25rem;background-color:var(--structural-white);overflow:hidden;top:calc(100% + var(--small-4px));gap:var(--medium-20px)}::ng-deep .custom-category-dropdown .search-input-container .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding:var(--small-2px) var(--small-12px)}.custom-category-dropdown .dropdown-divider{border-right:1px solid var(--grey-100, #EAECF0)}.custom-category-dropdown .category-label{color:var(--text-highemphasis, #1C1B20);text-align:left;font-family:var(--font-family, Roboto);font-size:var(--small-12px, 12px);font-style:normal;font-weight:400;line-height:var(--small-16px, 16px)}.custom-category-dropdown .attribute-label{color:var(--text-mediumemphasis, #6D6979);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px}.custom-category-dropdown .category-item.active{border-radius:var(--small-4px, 4px);background:var(--primary-500)}.custom-category-dropdown .category-item.active .category-label{color:var(--text-white, #FFF);text-align:center;font-family:var(--font-family, Roboto);font-size:var(--small-12px, 12px);font-style:normal;font-weight:500;line-height:var(--small-16px, 16px);letter-spacing:.5px}.custom-category-dropdown .category-item:not(.active):hover{border-radius:var(--small-4px, 4px);background-color:var(--primary-50)}.custom-category-dropdown .attribute-item:hover{border-radius:var(--small-4px, 4px);background-color:var(--primary-50)}.custom-category-dropdown .attribute-item.active{border-radius:var(--small-4px, 4px);background:var(--primary-500)}.custom-category-dropdown .attribute-item.active .attribute-label{color:var(--text-white, #FFF);font-weight:500}.custom-category-dropdown .category-panel{flex:2;overflow-y:auto;display:flex;flex-direction:column;gap:var(--small-8px, 8px)}.custom-category-dropdown .category-item{display:flex;padding:var(--small-8px, 8px);align-items:center;gap:var(--small-8px, 8px);align-self:stretch;border-radius:var(--small-4px, 4px);background:var(--structural-white);cursor:pointer}.custom-category-dropdown .attributes-panel{flex:2;overflow-y:auto;display:flex;flex-direction:column;align-items:flex-start;gap:var(--medium-20px, 20px);align-self:stretch}.custom-category-dropdown .attribute-item{display:flex;padding:var(--small-8px, 8px) var(--small-8px, 8px);align-items:center;gap:var(--Small-4px, 4px)}.custom-checkbox-container{display:flex;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none;gap:var(--small-4px, 4px)}.tooltip-icon{display:flex;align-items:center}::ng-deep .custom-category-dropdown .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,::ng-deep .custom-category-dropdown .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,::ng-deep .custom-category-dropdown .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--primary-500)}::ng-deep .custom-category-dropdown .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:var(--small-4px, 4px);border-bottom-right-radius:var(--small-4px, 4px);border-bottom-left-radius:0}::ng-deep .custom-category-dropdown .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,::ng-deep .custom-category-dropdown .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,::ng-deep .custom-category-dropdown .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--grey-100)}::ng-deep .custom-category-dropdown .active .tooltip-container .info-icon{color:var(--structural-white)}.custom-category-dropdown .dropdown-panel{display:flex;padding:var(--small-16px, 16px) var(--medium-20px, 20px) var(--small-16px, 16px) var(--small-12px, 12px);flex-direction:column;gap:var(--small-10px);border-radius:var(--small-8px);background:var(--structural-white);width:fit-content;max-height:25rem;box-shadow:0 1px 2px #0000004d,0 1px 2px #0000004d,0 2px 6px 2px #00000026;margin-top:0;box-sizing:border-box;position:absolute;z-index:1000;-webkit-overflow-scrolling:touch}.custom-category-container .custom-category-attribute-label{color:var(--text-highemphasis);font-family:var(--font-family-roboto);font-size:var(--small-14px);font-style:normal;font-weight:400;line-height:var(--medium-20px);letter-spacing:.25px}.custom-category-dropdown .searchIcons{color:var(--color-text-neutral-300, #757575)}\n"] }]
|
|
261
|
+
MatSelectModule], providers: [IconService], template: "<div class=\"custom-category-dropdown relative\" (click)=\"toggleDropdown()\">\n <!-- Dropdown Trigger / Display -->\n <div #categoryContainer class=\"custom-category-container\" \n [ngClass]=\"{\n 'category-invalid': formControl.invalid,\n 'category-touched': formControl.touched\n }\" \n [class.open]=\"isOpen()\">\n <div class=\"custom-category-attribute-container\">\n @if(props?.['multiple']){\n @if (selectedAttributes().length > 0) {\n @for (item of selectedAttributes(); track item[bindValue]) {\n <div class=\"custom-category-attribute custom-category-custom-chip\" (click)=\"$event.stopPropagation()\">\n <span class=\"custom-category-attribute-label\">{{ item[bindLabel] }}</span>\n <span class=\"custom-category-attribute-icon right\">\n <sa-icon icon=\"closeOutlined\" (click)=\"removeValue(item)\" size=\"11\"></sa-icon>\n </span>\n </div>\n }\n } @else {\n <span class=\"placeholder\">Select items</span>\n }\n } @else {\n @if(formControl.value) {\n <span class=\"custom-category-attribute-label\">{{ formControl.value[bindLabel] }}</span>\n } @else {\n <span class=\"placeholder\">Select item</span>\n }\n }\n </div>\n <div class=\"custom-category-arrow-wrapper\">\n <sa-icon icon=\"upDownChevronOutlined\" size=\"11\" class=\"searchIcons\"></sa-icon>\n </div>\n </div>\n\n <!-- Dropdown Panel -->\n @if (isOpen()) {\n <div #dropdownPanel class=\"dropdown-panel\" (click)=\"$event.stopPropagation()\">\n <div class=\"search-input-container mat-form-field-density-5\">\n <mat-form-field [appearance]=\"props['appearance'] || 'outline'\" class=\"w-100\">\n <sa-icon icon=\"searchIcon\" size=\"20\" class=\"searchIcons\" matPrefix></sa-icon>\n <input #searchInput matInput type=\"text\" name=\"menu-search-bar\" class=\"search-input\"\n (keyup)=\"onSearch($event)\" [placeholder]=\"props?.['searchPlaceholder'] || 'Search'\" />\n <sa-icon class=\"pointer\" icon=\"closeOutlined\" size=\"15\" class=\"searchIcons\" matSuffix\n (click)=\"clearSearch($event)\"></sa-icon>\n </mat-form-field>\n </div>\n\n @if (filteredCategories().length > 0) {\n <div class=\"two-panel-dropdown\">\n <!-- Left Panel: Categories -->\n <div class=\"category-panel\">\n @for (cat of filteredCategories(); track cat[bindValue]) {\n <div class=\"category-item\" [class.active]=\"cat[bindValue] === selectedCategory()?.[bindValue]\"\n (click)=\"selectCategory(cat); $event.stopPropagation()\">\n <span class=\"category-label\">{{ cat[bindLabel] }}\n @if(props?.['showAttributesCount']){\n <span class=\"attributes-count\">({{ getFilteredAttributesCount(cat) }})</span>\n }\n </span>\n </div>\n }\n </div>\n <div class=\"dropdown-divider\"></div>\n\n <!-- Right Panel: Attributes -->\n <div class=\"attributes-panel\">\n @if(filteredAttributes().length > 0) {\n @for (val of filteredAttributes(); track val[bindValue]) {\n <div class=\"attribute-item pointer\"\n [class.active]=\"props?.['multiple'] ? isItemSelected(val) : formControl.value?.[bindValue] === val[bindValue]\"\n (click)=\"props?.['multiple'] ? toggleValue(val) : selectSingleValue(val); $event.stopPropagation()\">\n @if(props?.['multiple']){\n <label class=\"custom-checkbox-container\" (click)=\"$event.stopPropagation()\">\n <input type=\"checkbox\" [checked]=\"isItemSelected(val)\" (change)=\"toggleValue(val)\">\n <span class=\"checkmark\"></span>\n <span class=\"attribute-label\">{{ val[bindLabel] }}</span>\n </label>\n }\n @else{\n <label class=\"custom-checkbox-container\">\n <span class=\"attribute-label\">{{ val[bindLabel] }}</span>\n @if(val?.tooltip || val?.description){\n <span class=\"tooltip-container\">\n <sa-icon [icon]=\"props?.['tooltipIcon'] || 'infoCircleOutlined'\" customClass=\"info-icon\"\n [matTooltip]=\"val?.tooltip || val?.description\" matTooltipClass=\"custom-tooltip\"\n class=\"tooltip-icon\"></sa-icon>\n </span>\n }\n </label>\n }\n </div>\n }\n }@else {\n <div class=\"p-4 text-center text-gray-500 w-full\">\n No items found.\n </div>\n }\n </div>\n </div>\n } @else {\n <div class=\"p-4 text-center text-gray-500 w-full\">\n No items found.\n </div>\n }\n </div>\n }\n</div>", styles: [".custom-category-container{display:flex;align-items:center;justify-content:space-between;border-radius:var(--small-4px, 4px);padding:.5rem .75rem;min-height:2.438rem;cursor:pointer;border:1px solid var(--grey-100, #EAECF0)}.custom-category-container.category-invalid.category-touched{border-color:var(--semantic-error-500, #BD271E)}.custom-category-container:hover,.custom-category-container.open{border-color:var(--primary-500)}.custom-category-attribute-container{display:flex;flex-wrap:nowrap;align-items:center;gap:.5rem;padding-right:1.5rem;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.custom-category-attribute{display:flex;align-items:center;background-color:var(--border-subtle, #e5e7eb);border-radius:9999px;padding:.25rem .75rem;color:var(--text-medium-emphasis, #374151);font-size:var(--small-14px, 14px);font-weight:500}.custom-category-attribute-icon.right{margin-left:.5rem;cursor:pointer}.placeholder{color:var(--text-low-emphasis, #9B98A3);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px}.custom-checkbox-container input{opacity:0;position:absolute;width:0;height:0}.checkmark{height:1.125rem;width:1.125rem;background-color:var(--primary-50);border:1px solid var(--grey-100);border-radius:var(--small-4px, 4px);position:relative;margin-right:var(--small-8px, 8px)}.custom-checkbox-container input:checked~.checkmark{background-color:var(--primary-500);border-color:var(--primary-500)}.checkmark:after{content:\"\";position:absolute;display:none}.custom-checkbox-container input:checked~.checkmark:after{display:block}.custom-checkbox-container .checkmark:after{left:.375rem;top:.125rem;width:.375rem;height:.625rem;border:solid var(--structural-white);border-width:0 .125rem .125rem 0;transform:rotate(45deg)}::ng-deep .custom-category-dropdown .search-input-container .mat-mdc-form-field{width:-webkit-fill-available}.custom-category-dropdown .two-panel-dropdown{display:flex;min-height:15.625rem;max-height:25rem;background-color:var(--structural-white);overflow:hidden;top:calc(100% + var(--small-4px));gap:var(--medium-20px)}::ng-deep .custom-category-dropdown .search-input-container .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding:var(--small-2px) var(--small-12px)}.custom-category-dropdown .dropdown-divider{border-right:1px solid var(--grey-100, #EAECF0)}.custom-category-dropdown .category-label{color:var(--text-highemphasis, #1C1B20);text-align:left;font-family:var(--font-family, Roboto);font-size:var(--small-12px, 12px);font-style:normal;font-weight:400;line-height:var(--small-16px, 16px)}.custom-category-dropdown .attribute-label{color:var(--text-mediumemphasis, #6D6979);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px}.custom-category-dropdown .category-item.active{border-radius:var(--small-4px, 4px);background:var(--primary-500)}.custom-category-dropdown .category-item.active .category-label{color:var(--text-white, #FFF);text-align:center;font-family:var(--font-family, Roboto);font-size:var(--small-12px, 12px);font-style:normal;font-weight:500;line-height:var(--small-16px, 16px);letter-spacing:.5px}.custom-category-dropdown .category-item:not(.active):hover{border-radius:var(--small-4px, 4px);background-color:var(--primary-50)}.custom-category-dropdown .attribute-item:hover{border-radius:var(--small-4px, 4px);background-color:var(--primary-50)}.custom-category-dropdown .attribute-item.active{border-radius:var(--small-4px, 4px);background:var(--primary-500)}.custom-category-dropdown .attribute-item.active .attribute-label{color:var(--text-white, #FFF);font-weight:500}.custom-category-dropdown .category-panel{flex:2;overflow-y:auto;display:flex;flex-direction:column;gap:var(--small-8px, 8px)}.custom-category-dropdown .category-item{display:flex;padding:var(--small-8px, 8px);align-items:center;gap:var(--small-8px, 8px);align-self:stretch;border-radius:var(--small-4px, 4px);background:var(--structural-white);cursor:pointer}.custom-category-dropdown .attributes-panel{flex:2;overflow-y:auto;display:flex;flex-direction:column;align-items:flex-start;gap:var(--medium-20px, 20px);align-self:stretch}.custom-category-dropdown .attribute-item{display:flex;padding:var(--small-8px, 8px) var(--small-8px, 8px);align-items:center;gap:var(--Small-4px, 4px)}.custom-checkbox-container{display:flex;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none;gap:var(--small-4px, 4px)}.tooltip-icon{display:flex;align-items:center}::ng-deep .custom-category-dropdown .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,::ng-deep .custom-category-dropdown .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,::ng-deep .custom-category-dropdown .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--primary-500)}::ng-deep .custom-category-dropdown .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:var(--small-4px, 4px);border-bottom-right-radius:var(--small-4px, 4px);border-bottom-left-radius:0}::ng-deep .custom-category-dropdown .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,::ng-deep .custom-category-dropdown .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,::ng-deep .custom-category-dropdown .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--grey-100)}::ng-deep .custom-category-dropdown .active .tooltip-container .info-icon{color:var(--structural-white)}.custom-category-dropdown .dropdown-panel{display:flex;padding:var(--small-16px, 16px) var(--medium-20px, 20px) var(--small-16px, 16px) var(--small-12px, 12px);flex-direction:column;gap:var(--small-10px);border-radius:var(--small-8px);background:var(--structural-white);width:fit-content;max-height:25rem;box-shadow:0 1px 2px #0000004d,0 1px 2px #0000004d,0 2px 6px 2px #00000026;margin-top:0;box-sizing:border-box;position:absolute;z-index:1000;-webkit-overflow-scrolling:touch}.custom-category-container .custom-category-attribute-label{color:var(--text-highemphasis);font-family:var(--font-family-roboto);font-size:var(--small-14px);font-style:normal;font-weight:400;line-height:var(--medium-20px);letter-spacing:.25px}.custom-category-dropdown .searchIcons{color:var(--color-text-neutral-300, #757575)}\n"] }]
|
|
262
262
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }], propDecorators: { searchInput: [{
|
|
263
263
|
type: ViewChild,
|
|
264
264
|
args: ['searchInput']
|
|
@@ -272,4 +272,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
272
272
|
type: HostListener,
|
|
273
273
|
args: ['document:click', ['$event']]
|
|
274
274
|
}] } });
|
|
275
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnktZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50LWxpYnJhcnkvc3JjL2xpYi9kcm9wZG93bi9jYXRlZ29yeS1kcm9wZG93bi9jYXRlZ29yeS1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2Ryb3Bkb3duL2NhdGVnb3J5LWRyb3Bkb3duL2NhdGVnb3J5LWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQWdDLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEssT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFtQixNQUFNLGtCQUFrQixDQUFDO0FBQzlELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5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LDJlQUNsQixjQUFjLDBXQUNkLGFBQWEsOEJBQ2IsZUFBZSw4QkFDZixnQkFBZ0IsNFRBQ2hCLHFCQUFxQiw4QkFDckIsbUJBQW1CLDhCQUNuQixtQkFBbUIsOEJBQ25CLGlCQUFpQiw4QkFDakIsZUFBZTs7MkZBTU4seUJBQXlCO2tCQXZCckMsU0FBUzsrQkFDRSxzQkFBc0IsY0FDcEIsSUFBSSxXQUNQLENBQUMsWUFBWTt3QkFDcEIsbUJBQW1CO3dCQUNuQixXQUFXO3dCQUNYLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixrQkFBa0I7d0JBQ2xCLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIscUJBQXFCO3dCQUNyQixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsaUJBQWlCO3dCQUNqQixlQUFlLENBQUMsYUFDUCxDQUFDLFdBQVcsQ0FBQzs4R0FvQkUsV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhO2dCQUNRLGlCQUFpQjtzQkFBaEQsU0FBUzt1QkFBQyxtQkFBbUI7Z0JBQ0YsYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlO2dCQW1EMUIsT0FBTztzQkFETixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBpbmplY3QsIE9uRGVzdHJveSwgT25Jbml0LCBSZW5kZXJlcjIsIHNpZ25hbCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGlzT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZvcm1seU1vZHVsZSB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xyXG5pbXBvcnQgeyBGaWVsZFR5cGUsIEZpZWxkVHlwZUNvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xyXG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaWNvbi9pY29uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEljb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaWNvbi9pY29uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Ub2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24tdG9nZ2xlJztcclxuaW1wb3J0IHsgTWF0RGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xyXG5pbXBvcnQgeyBNYXROYXRpdmVEYXRlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XHJcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xyXG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xyXG5pbXBvcnQgeyBmaXJzdCBhcyBfZmlyc3QsIGdldCBhcyBfZ2V0LCBmaWx0ZXIgYXMgX2ZpbHRlciwgc2l6ZSBhcyBfc2l6ZSwgdG9Mb3dlciBhcyBfdG9Mb3dlciwgaW5jbHVkZXMgYXMgX2luY2x1ZGVzLCBmb3JFYWNoIGFzIF9mb3JFYWNoIH0gZnJvbSAnbG9kYXNoJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2EtY2F0ZWdvcnktZHJvcGRvd24nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIEZvcm1seU1vZHVsZSxcclxuICAgIEljb25Db21wb25lbnQsXHJcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXHJcbiAgICBNYXRJbnB1dE1vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlLFxyXG4gICAgTWF0RGF0ZXBpY2tlck1vZHVsZSxcclxuICAgIE1hdE5hdGl2ZURhdGVNb2R1bGUsXHJcbiAgICBNYXRDaGVja2JveE1vZHVsZSxcclxuICAgIE1hdFNlbGVjdE1vZHVsZV0sXHJcbiAgcHJvdmlkZXJzOiBbSWNvblNlcnZpY2VdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXRlZ29yeS1kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2NhdGVnb3J5LWRyb3Bkb3duLmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgQ2F0ZWdvcnlEcm9wZG93bkNvbXBvbmVudCBleHRlbmRzIEZpZWxkVHlwZTxGaWVsZFR5cGVDb25maWc+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIGdldCBiaW5kTGFiZWwoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMucHJvcHNbJ2JpbmRMYWJlbCddIHx8ICdsYWJlbCc7IH1cclxuICBnZXQgYmluZFZhbHVlKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLnByb3BzWydiaW5kVmFsdWUnXSB8fCAndmFsdWUnOyB9XHJcbiAgZ2V0IGJpbmRBdHRyaWJ1dGVzKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLnByb3BzWydiaW5kQXR0cmlidXRlcyddIHx8ICdhdHRyaWJ1dGVzJzsgfVxyXG4gIF9jYXRlZ29yaWVzID0gc2lnbmFsPGFueVtdPihbXSk7XHJcbiAgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuXHJcbiAgc2VsZWN0ZWRDYXRlZ29yeSA9IHNpZ25hbDxhbnk+KHVuZGVmaW5lZCk7XHJcbiAgc2VsZWN0ZWRBdHRyaWJ1dGVzID0gc2lnbmFsPGFueVtdPihbXSk7XHJcbiAgc2VhcmNoVGVybSA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcclxuICBpc09wZW4gPSBzaWduYWwoZmFsc2UpO1xyXG4gIHVzZXJTZWxlY3RlZENhdGVnb3J5ID0gc2lnbmFsPGFueT4odW5kZWZpbmVkKTsgLy8gVG8gaG9sZCB0aGUgdXNlcidzIGV4cGxpY2l0IHNlbGVjdGlvblxyXG5cclxuICBwcml2YXRlIGVsOiBFbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xyXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0Jykgc2VhcmNoSW5wdXQ6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnY2F0ZWdvcnlDb250YWluZXInKSBjYXRlZ29yeUNvbnRhaW5lcjogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdkcm9wZG93blBhbmVsJykgZHJvcGRvd25QYW5lbDogRWxlbWVudFJlZjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICBlZmZlY3QoKCkgPT4ge1xyXG4gICAgICBjb25zdCBmaWx0ZXJlZCA9IHRoaXMuZmlsdGVyZWRDYXRlZ29yaWVzKCk7XHJcbiAgICAgIGNvbnN0IHRlcm0gPSB0aGlzLnNlYXJjaFRlcm0oKTtcclxuXHJcbiAgICAgIGlmICh0ZXJtICYmIGZpbHRlcmVkLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQ2F0ZWdvcnkuc2V0KF9maXJzdChmaWx0ZXJlZCkpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gSWYgYXR0cmlidXRlcyBleGlzdCwgc3RpY2sgd2l0aCB0aGVpciBjYXRlZ29yeVxyXG4gICAgICBjb25zdCBhdHRyQ2F0ZWdvcnkgPSB0aGlzLmdldFNlbGVjdGVkQXR0cmlidXRlc0NhdGVnb3J5KCk7XHJcbiAgICAgIGlmIChhdHRyQ2F0ZWdvcnkpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQ2F0ZWdvcnkuc2V0KGF0dHJDYXRlZ29yeSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBFbHNlIGZhbGxiYWNrIHRvIHVzZXItc2VsZWN0ZWQgb3IgZmlyc3RcclxuICAgICAgaWYgKHRoaXMudXNlclNlbGVjdGVkQ2F0ZWdvcnkoKSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yeS5zZXQodGhpcy51c2VyU2VsZWN0ZWRDYXRlZ29yeSgpKTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLl9jYXRlZ29yaWVzKCkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yeS5zZXQoX2ZpcnN0KHRoaXMuX2NhdGVnb3JpZXMoKSkpO1xyXG4gICAgICB9XHJcbiAgICB9LCB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5wcm9wcz8uWydtdWx0aXBsZSddKSB7XHJcbiAgICAgIGNvbnN0IGluaXRpYWxWYWx1ZSA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWU7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRBdHRyaWJ1dGVzLnNldChBcnJheS5pc0FycmF5KGluaXRpYWxWYWx1ZSkgPyBpbml0aWFsVmFsdWUgOiBbXSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGlzT2JzZXJ2YWJsZSh0aGlzLnByb3BzLm9wdGlvbnMpKSB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZCh0aGlzLnByb3BzLm9wdGlvbnMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZShvcHRpb25zID0+IHtcclxuICAgICAgICB0aGlzLl9jYXRlZ29yaWVzLnNldChBcnJheS5pc0FycmF5KG9wdGlvbnMpID8gb3B0aW9ucyA6IFtdKTtcclxuICAgICAgICBpZiAodGhpcy5fY2F0ZWdvcmllcygpLmxlbmd0aCA+IDAgJiYgIXRoaXMudXNlclNlbGVjdGVkQ2F0ZWdvcnkoKSkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENhdGVnb3J5LnNldCh0aGlzLl9jYXRlZ29yaWVzKClbMF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fY2F0ZWdvcmllcy5zZXQoQXJyYXkuaXNBcnJheSh0aGlzLnByb3BzLm9wdGlvbnMpID8gdGhpcy5wcm9wcy5vcHRpb25zIDogW10pO1xyXG4gICAgICBpZiAodGhpcy5fY2F0ZWdvcmllcygpLmxlbmd0aCA+IDAgJiYgIXRoaXMudXNlclNlbGVjdGVkQ2F0ZWdvcnkoKSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yeS5zZXQodGhpcy5fY2F0ZWdvcmllcygpWzBdKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICghdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcclxuICAgICAgaWYgKHRoaXMuaXNPcGVuKCkpIHtcclxuICAgICAgICAvLyBNYXJrIGFzIHRvdWNoZWQgd2hlbiBjbG9zaW5nIHZpYSBvdXRzaWRlIGNsaWNrXHJcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5pc09wZW4uc2V0KGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRvZ2dsZURyb3Bkb3duKCkge1xyXG4gICAgY29uc3QgaXNPcGVuaW5nID0gIXRoaXMuaXNPcGVuKCk7XHJcbiAgICB0aGlzLmlzT3Blbi5zZXQoaXNPcGVuaW5nKTtcclxuXHJcbiAgICBpZiAoaXNPcGVuaW5nKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGVybS5zZXQoJycpO1xyXG4gICAgICBpZiAodGhpcy5zZWFyY2hJbnB1dCkge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmNhdGVnb3J5Q29udGFpbmVyICYmIHRoaXMuZHJvcGRvd25QYW5lbCkge1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gdGhpcy5jYXRlZ29yeUNvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICAgIGNvbnN0IG9mZnNldCA9IHRoaXMucHJvcHM/LlsncGFuZWxXaWR0aE9mZnNldCddID8/IDE2MDsgLy8gZmFsbGJhY2sgaWYgdW5kZWZpbmVkXHJcblxyXG4gICAgICAgIC8vIFVzZSBleHBsaWNpdCBwaXhlbCB3aWR0aCB0byBhdm9pZCByZWZsb3dzIGNhdXNlZCBieSBmaXQtY29udGVudFxyXG4gICAgICAgIGNvbnN0IGJhc2VGb250U2l6ZSA9IDE2OyAvLyBkZWZhdWx0IDFyZW0gPSAxNnB4XHJcbiAgICAgICAgY29uc3QgcGFuZWxXaWR0aFJlbSA9IChjb250YWluZXJXaWR0aCArIG9mZnNldCkgLyBiYXNlRm9udFNpemU7XHJcblxyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5kcm9wZG93blBhbmVsLm5hdGl2ZUVsZW1lbnQsICdtaW4td2lkdGgnLCBgJHtwYW5lbFdpZHRoUmVtfXJlbWApO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5kcm9wZG93blBhbmVsLm5hdGl2ZUVsZW1lbnQsICd3aWR0aCcsIGAke3BhbmVsV2lkdGhSZW19cmVtYCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIPCflJEgU3luYyBzZWxlY3RlZEF0dHJpYnV0ZXMgZnJvbSBmb3JtQ29udHJvbCBvbiBldmVyeSBvcGVuXHJcbiAgICAgIGlmICh0aGlzLnByb3BzPy5bJ211bHRpcGxlJ10pIHtcclxuICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlIHx8IFtdO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBdHRyaWJ1dGVzLnNldChBcnJheS5pc0FycmF5KGN1cnJlbnRWYWx1ZSkgPyBjdXJyZW50VmFsdWUgOiBbXSk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5mb3JtQ29udHJvbC52YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBdHRyaWJ1dGVzLnNldChbdGhpcy5mb3JtQ29udHJvbC52YWx1ZV0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBdHRyaWJ1dGVzLnNldChbXSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIPCfkYcgTm93IHRoaXMgd29ya3MsIGJlY2F1c2Ugc2VsZWN0ZWRBdHRyaWJ1dGVzIGlzbuKAmXQgZW1wdHkgYW55bW9yZVxyXG4gICAgICBjb25zdCBhdHRyQ2F0ZWdvcnkgPSB0aGlzLmdldFNlbGVjdGVkQXR0cmlidXRlc0NhdGVnb3J5KCk7XHJcbiAgICAgIGlmIChhdHRyQ2F0ZWdvcnkpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQ2F0ZWdvcnkuc2V0KGF0dHJDYXRlZ29yeSk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy51c2VyU2VsZWN0ZWRDYXRlZ29yeSgpKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZENhdGVnb3J5LnNldCh0aGlzLnVzZXJTZWxlY3RlZENhdGVnb3J5KCkpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2NhdGVnb3JpZXMoKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZENhdGVnb3J5LnNldCh0aGlzLl9jYXRlZ29yaWVzKClbMF0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBNYXJrIGFzIHRvdWNoZWQgd2hlbiBjbG9zaW5nIHRoZSBkcm9wZG93blxyXG4gICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdENhdGVnb3J5KGNhdGVnb3J5OiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yeS5zZXQoY2F0ZWdvcnkpO1xyXG4gICAgLy8gT25seSB1cGRhdGUgdXNlclNlbGVjdGVkQ2F0ZWdvcnkgaWYgdGhlcmUgYXJlIE5PIGF0dHJpYnV0ZXMgc2VsZWN0ZWRcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkQXR0cmlidXRlcygpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLnVzZXJTZWxlY3RlZENhdGVnb3J5LnNldChjYXRlZ29yeSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0b2dnbGVWYWx1ZSh2YWw6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEF0dHJpYnV0ZXMudXBkYXRlKGF0dHJpYnV0ZXMgPT4ge1xyXG4gICAgICBjb25zdCBpbmRleCA9IGF0dHJpYnV0ZXMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbVt0aGlzLmJpbmRWYWx1ZV0gPT09IHZhbFt0aGlzLmJpbmRWYWx1ZV0pO1xyXG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgIGF0dHJpYnV0ZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCBjYXRlZ29yeSA9IHRoaXMuc2VsZWN0ZWRDYXRlZ29yeSgpO1xyXG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0geyAuLi52YWwsIGNhdGVnb3J5SWQ6IGNhdGVnb3J5W3RoaXMuYmluZFZhbHVlXSwgY2F0ZWdvcnlMYWJlbDogY2F0ZWdvcnlbdGhpcy5iaW5kTGFiZWxdIH07XHJcbiAgICAgICAgYXR0cmlidXRlcy5wdXNoKG5ld1ZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKFsuLi5hdHRyaWJ1dGVzXSk7XHJcbiAgICAgIHJldHVybiBbLi4uYXR0cmlidXRlc107XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0U2VsZWN0ZWRBdHRyaWJ1dGVzQ2F0ZWdvcnkoKTogYW55IHtcclxuICAgIGNvbnN0IGF0dHJzID0gdGhpcy5zZWxlY3RlZEF0dHJpYnV0ZXMoKTtcclxuICAgIGlmIChhdHRycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIC8vIGFsd2F5cyBwcmVmZXIgY2F0ZWdvcnkgb2YgbGFzdCBzZWxlY3RlZCBhdHRyaWJ1dGVcclxuICAgICAgY29uc3QgbGFzdEF0dHIgPSBhdHRyc1thdHRycy5sZW5ndGggLSAxXTtcclxuICAgICAgcmV0dXJuIHRoaXMuX2NhdGVnb3JpZXMoKS5maW5kKGMgPT4gY1t0aGlzLmJpbmRWYWx1ZV0gPT09IGxhc3RBdHRyLmNhdGVnb3J5SWQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBpc0l0ZW1TZWxlY3RlZCh2YWw6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRBdHRyaWJ1dGVzKCkuc29tZShpdGVtID0+IGl0ZW1bdGhpcy5iaW5kVmFsdWVdID09PSB2YWxbdGhpcy5iaW5kVmFsdWVdKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZVZhbHVlKHZhbDogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkQXR0cmlidXRlcy51cGRhdGUoYXR0cmlidXRlcyA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld0F0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzLmZpbHRlcihpdGVtID0+IGl0ZW1bdGhpcy5iaW5kVmFsdWVdICE9PSB2YWxbdGhpcy5iaW5kVmFsdWVdKTtcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShuZXdBdHRyaWJ1dGVzKTtcclxuICAgICAgcmV0dXJuIG5ld0F0dHJpYnV0ZXM7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNlbGVjdFNpbmdsZVZhbHVlKHZhbDogYW55KSB7XHJcbiAgICBjb25zdCBjYXRlZ29yeSA9IHRoaXMuc2VsZWN0ZWRDYXRlZ29yeSgpO1xyXG4gICAgLy8gY29uc3QgbmV3VmFsdWUgPSB7IC4uLnZhbCwgY2F0ZWdvcnlJZDogY2F0ZWdvcnlbdGhpcy5iaW5kVmFsdWVdLCBjYXRlZ29yeUxhYmVsOiBjYXRlZ29yeVt0aGlzLmJpbmRMYWJlbF0gfTtcclxuICAgIC8vIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUobmV3VmFsdWUpO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWwpO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICB0aGlzLmlzT3Blbi5zZXQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgb25TZWFyY2goZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XHJcbiAgICB0aGlzLnNlYXJjaFRlcm0uc2V0KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGNsZWFyU2VhcmNoKGV2ZW50OiBFdmVudCkge1xyXG4gICAgdGhpcy5zZWFyY2hUZXJtLnNldCgnJyk7XHJcbiAgICB0aGlzLnNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgZmlsdGVyZWRBdHRyaWJ1dGVzID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgY29uc3QgY2F0ZWdvcnkgPSB0aGlzLnNlbGVjdGVkQ2F0ZWdvcnkoKTtcclxuICAgIGNvbnN0IHRlcm0gPSB0aGlzLnNlYXJjaFRlcm0oKS50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgIGlmICghY2F0ZWdvcnkpIHtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAoY2F0ZWdvcnlbdGhpcy5iaW5kQXR0cmlidXRlc10gfHwgW10pLmZpbHRlcigodmFsOiBhbnkpID0+ICh2YWxbdGhpcy5iaW5kTGFiZWxdIHx8ICcnKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pKTtcclxuICB9KTtcclxuXHJcbiAgZmlsdGVyZWRDYXRlZ29yaWVzID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgY29uc3QgdGVybSA9IHRoaXMuc2VhcmNoVGVybSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICBjb25zdCBjYXRlZ29yaWVzID0gdGhpcy5fY2F0ZWdvcmllcygpO1xyXG4gICAgaWYgKCF0ZXJtKSB7XHJcbiAgICAgIHJldHVybiBjYXRlZ29yaWVzO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNhdGVnb3JpZXMuZmlsdGVyKGNhdGVnb3J5ID0+XHJcbiAgICAgIChjYXRlZ29yeVt0aGlzLmJpbmRBdHRyaWJ1dGVzXSB8fCBbXSkuc29tZSgodmFsOiBhbnkpID0+ICh2YWxbdGhpcy5iaW5kTGFiZWxdIHx8ICcnKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pKVxyXG4gICAgKTtcclxuICB9KTtcclxuXHJcbiAgLy8gQ29tcHV0ZWQgc2lnbmFsIHRoYXQgY3JlYXRlcyBhIE1hcCBvZiBjYXRlZ29yeSBJRCB0byBmaWx0ZXJlZCBhdHRyaWJ1dGUgY291bnRcclxuICBjYXRlZ29yeUF0dHJpYnV0ZUNvdW50cyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGNvbnN0IHRlcm0gPSBfdG9Mb3dlcih0aGlzLnNlYXJjaFRlcm0oKSk7XHJcbiAgICBjb25zdCBjYXRlZ29yaWVzID0gdGhpcy5fY2F0ZWdvcmllcygpO1xyXG4gICAgY29uc3QgY291bnRzTWFwID0gbmV3IE1hcDxhbnksIG51bWJlcj4oKTtcclxuICAgIFxyXG4gICAgX2ZvckVhY2goY2F0ZWdvcmllcywgY2F0ZWdvcnkgPT4ge1xyXG4gICAgICBjb25zdCBhdHRyaWJ1dGVzID0gX2dldChjYXRlZ29yeSwgdGhpcy5iaW5kQXR0cmlidXRlcywgW10pO1xyXG4gICAgICBcclxuICAgICAgaWYgKCF0ZXJtKSB7XHJcbiAgICAgICAgLy8gTm8gc2VhcmNoIHRlcm0sIHJldHVybiB0b3RhbCBjb3VudFxyXG4gICAgICAgIGNvdW50c01hcC5zZXQoX2dldChjYXRlZ29yeSwgdGhpcy5iaW5kVmFsdWUpLCBfc2l6ZShhdHRyaWJ1dGVzKSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gUmV0dXJuIGNvdW50IG9mIG1hdGNoaW5nIGF0dHJpYnV0ZXNcclxuICAgICAgICBjb25zdCBtYXRjaGluZ0F0dHJpYnV0ZXMgPSBfZmlsdGVyKGF0dHJpYnV0ZXMsICh2YWw6IGFueSkgPT4gXHJcbiAgICAgICAgICBfaW5jbHVkZXMoX3RvTG93ZXIoX2dldCh2YWwsIHRoaXMuYmluZExhYmVsLCAnJykpLCB0ZXJtKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY291bnRzTWFwLnNldChfZ2V0KGNhdGVnb3J5LCB0aGlzLmJpbmRWYWx1ZSksIF9zaXplKG1hdGNoaW5nQXR0cmlidXRlcykpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIFxyXG4gICAgcmV0dXJuIGNvdW50c01hcDtcclxuICB9KTtcclxuXHJcbiAgLy8gSGVscGVyIG1ldGhvZCB0byBnZXQgY291bnQgZnJvbSB0aGUgY29tcHV0ZWQgbWFwXHJcbiAgZ2V0RmlsdGVyZWRBdHRyaWJ1dGVzQ291bnQoY2F0ZWdvcnk6IGFueSk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5jYXRlZ29yeUF0dHJpYnV0ZUNvdW50cygpLmdldChfZ2V0KGNhdGVnb3J5LCB0aGlzLmJpbmRWYWx1ZSkpIHx8IDA7XHJcbiAgfVxyXG59IiwiPGRpdiBjbGFzcz1cImN1c3RvbS1jYXRlZ29yeS1kcm9wZG93biByZWxhdGl2ZVwiIChjbGljayk9XCJ0b2dnbGVEcm9wZG93bigpXCI+XHJcbiAgICA8IS0tIERyb3Bkb3duIFRyaWdnZXIgLyBEaXNwbGF5IC0tPlxyXG4gICAgPGRpdiAjY2F0ZWdvcnlDb250YWluZXIgY2xhc3M9XCJjdXN0b20tY2F0ZWdvcnktY29udGFpbmVyXCIgXHJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAnY2F0ZWdvcnktaW52YWxpZCc6IGZvcm1Db250cm9sLmludmFsaWQsXHJcbiAgICAgICAgICAgICdjYXRlZ29yeS10b3VjaGVkJzogZm9ybUNvbnRyb2wudG91Y2hlZFxyXG4gICAgICAgIH1cIiBcclxuICAgICAgICBbY2xhc3Mub3Blbl09XCJpc09wZW4oKVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tY2F0ZWdvcnktYXR0cmlidXRlLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICBAaWYocHJvcHM/LlsnbXVsdGlwbGUnXSl7XHJcbiAgICAgICAgICAgIEBpZiAoc2VsZWN0ZWRBdHRyaWJ1dGVzKCkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBAZm9yIChpdGVtIG9mIHNlbGVjdGVkQXR0cmlidXRlcygpOyB0cmFjayBpdGVtW2JpbmRWYWx1ZV0pIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1jYXRlZ29yeS1hdHRyaWJ1dGUgY3VzdG9tLWNhdGVnb3J5LWN1c3RvbS1jaGlwXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tY2F0ZWdvcnktYXR0cmlidXRlLWxhYmVsXCI+e3sgaXRlbVtiaW5kTGFiZWxdIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tY2F0ZWdvcnktYXR0cmlidXRlLWljb24gcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c2EtaWNvbiBpY29uPVwiY2xvc2VPdXRsaW5lZFwiIChjbGljayk9XCJyZW1vdmVWYWx1ZShpdGVtKVwiIHNpemU9XCIxMVwiPjwvc2EtaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGxhY2Vob2xkZXJcIj5TZWxlY3QgaXRlbXM8L3NwYW4+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgIEBpZihmb3JtQ29udHJvbC52YWx1ZSkge1xyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1jYXRlZ29yeS1hdHRyaWJ1dGUtbGFiZWxcIj57eyBmb3JtQ29udHJvbC52YWx1ZVtiaW5kTGFiZWxdIH19PC9zcGFuPlxyXG4gICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwbGFjZWhvbGRlclwiPlNlbGVjdCBpdGVtPC9zcGFuPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWNhdGVnb3J5LWFycm93LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgPHNhLWljb24gaWNvbj1cInVwRG93bkNoZXZyb25PdXRsaW5lZFwiIHNpemU9XCIxMVwiIGNsYXNzPVwic2VhcmNoSWNvbnNcIj48L3NhLWljb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIERyb3Bkb3duIFBhbmVsIC0tPlxyXG4gICAgQGlmIChpc09wZW4oKSkge1xyXG4gICAgPGRpdiAjZHJvcGRvd25QYW5lbCBjbGFzcz1cImRyb3Bkb3duLXBhbmVsXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtaW5wdXQtY29udGFpbmVyIG1hdC1mb3JtLWZpZWxkLWRlbnNpdHktNVwiPlxyXG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgW2FwcGVhcmFuY2VdPVwicHJvcHNbJ2FwcGVhcmFuY2UnXSB8fCAnb3V0bGluZSdcIiBjbGFzcz1cInctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICA8c2EtaWNvbiBpY29uPVwic2VhcmNoSWNvblwiIHNpemU9XCIyMFwiIGNsYXNzPVwic2VhcmNoSWNvbnNcIiBtYXRQcmVmaXg+PC9zYS1pY29uPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0ICNzZWFyY2hJbnB1dCBtYXRJbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJtZW51LXNlYXJjaC1iYXJcIiBjbGFzcz1cInNlYXJjaC1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGtleXVwKT1cIm9uU2VhcmNoKCRldmVudClcIiBbcGxhY2Vob2xkZXJdPVwicHJvcHM/Llsnc2VhcmNoUGxhY2Vob2xkZXInXSB8fCAnU2VhcmNoJ1wiIC8+XHJcbiAgICAgICAgICAgICAgICA8c2EtaWNvbiBjbGFzcz1cInBvaW50ZXJcIiBpY29uPVwiY2xvc2VPdXRsaW5lZFwiIHNpemU9XCIxNVwiIGNsYXNzPVwic2VhcmNoSWNvbnNcIiBtYXRTdWZmaXhcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJTZWFyY2goJGV2ZW50KVwiPjwvc2EtaWNvbj5cclxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgQGlmIChmaWx0ZXJlZENhdGVnb3JpZXMoKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInR3by1wYW5lbC1kcm9wZG93blwiPlxyXG4gICAgICAgICAgICA8IS0tIExlZnQgUGFuZWw6IENhdGVnb3JpZXMgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXRlZ29yeS1wYW5lbFwiPlxyXG4gICAgICAgICAgICAgICAgQGZvciAoY2F0IG9mIGZpbHRlcmVkQ2F0ZWdvcmllcygpOyB0cmFjayBjYXRbYmluZFZhbHVlXSkge1xyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhdGVnb3J5LWl0ZW1cIiBbY2xhc3MuYWN0aXZlXT1cImNhdFtiaW5kVmFsdWVdID09PSBzZWxlY3RlZENhdGVnb3J5KCk/LltiaW5kVmFsdWVdXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0Q2F0ZWdvcnkoY2F0KTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXRlZ29yeS1sYWJlbFwiPnt7IGNhdFtiaW5kTGFiZWxdIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZihwcm9wcz8uWydzaG93QXR0cmlidXRlc0NvdW50J10pe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF0dHJpYnV0ZXMtY291bnRcIj4oe3sgZ2V0RmlsdGVyZWRBdHRyaWJ1dGVzQ291bnQoY2F0KSB9fSk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1kaXZpZGVyXCI+PC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIFJpZ2h0IFBhbmVsOiBBdHRyaWJ1dGVzIC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXR0cmlidXRlcy1wYW5lbFwiPlxyXG4gICAgICAgICAgICAgICAgQGlmKGZpbHRlcmVkQXR0cmlidXRlcygpLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIEBmb3IgKHZhbCBvZiBmaWx0ZXJlZEF0dHJpYnV0ZXMoKTsgdHJhY2sgdmFsW2JpbmRWYWx1ZV0pIHtcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdHRyaWJ1dGUtaXRlbSBwb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInByb3BzPy5bJ211bHRpcGxlJ10gPyBpc0l0ZW1TZWxlY3RlZCh2YWwpIDogZm9ybUNvbnRyb2wudmFsdWU/LltiaW5kVmFsdWVdID09PSB2YWxbYmluZFZhbHVlXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInByb3BzPy5bJ211bHRpcGxlJ10gPyB0b2dnbGVWYWx1ZSh2YWwpIDogc2VsZWN0U2luZ2xlVmFsdWUodmFsKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgQGlmKHByb3BzPy5bJ211bHRpcGxlJ10pe1xyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jaGVja2JveC1jb250YWluZXJcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJpc0l0ZW1TZWxlY3RlZCh2YWwpXCIgKGNoYW5nZSk9XCJ0b2dnbGVWYWx1ZSh2YWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlY2ttYXJrXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF0dHJpYnV0ZS1sYWJlbFwiPnt7IHZhbFtiaW5kTGFiZWxdIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIEBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jaGVja2JveC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhdHRyaWJ1dGUtbGFiZWxcIj57eyB2YWxbYmluZExhYmVsXSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmKHZhbD8udG9vbHRpcCB8fCB2YWw/LmRlc2NyaXB0aW9uKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0b29sdGlwLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNhLWljb24gW2ljb25dPVwicHJvcHM/LlsndG9vbHRpcEljb24nXSB8fCAnaW5mb0NpcmNsZU91dGxpbmVkJ1wiIGN1c3RvbUNsYXNzPVwiaW5mby1pY29uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJ2YWw/LnRvb2x0aXAgfHwgdmFsPy5kZXNjcmlwdGlvblwiIG1hdFRvb2x0aXBDbGFzcz1cImN1c3RvbS10b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRvb2x0aXAtaWNvblwiPjwvc2EtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC00IHRleHQtY2VudGVyIHRleHQtZ3JheS01MDAgdy1mdWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgTm8gaXRlbXMgZm91bmQuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInAtNCB0ZXh0LWNlbnRlciB0ZXh0LWdyYXktNTAwIHctZnVsbFwiPlxyXG4gICAgICAgICAgICBObyBpdGVtcyBmb3VuZC5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICAgIH1cclxuPC9kaXY+Il19
|
|
275
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnktZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50LWxpYnJhcnkvc3JjL2xpYi9kcm9wZG93bi9jYXRlZ29yeS1kcm9wZG93bi9jYXRlZ29yeS1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2Ryb3Bkb3duL2NhdGVnb3J5LWRyb3Bkb3duL2NhdGVnb3J5LWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQWdDLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEssT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFtQixNQUFNLGtCQUFrQixDQUFDO0FBQzlELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5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LDJlQUNsQixjQUFjLDBXQUNkLGFBQWEsOEJBQ2IsZUFBZSw4QkFDZixnQkFBZ0IsNFRBQ2hCLHFCQUFxQiw4QkFDckIsbUJBQW1CLDhCQUNuQixtQkFBbUIsOEJBQ25CLGlCQUFpQiw4QkFDakIsZUFBZTs7MkZBTU4seUJBQXlCO2tCQXZCckMsU0FBUzsrQkFDRSxzQkFBc0IsY0FDcEIsSUFBSSxXQUNQLENBQUMsWUFBWTt3QkFDcEIsbUJBQW1CO3dCQUNuQixXQUFXO3dCQUNYLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixrQkFBa0I7d0JBQ2xCLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIscUJBQXFCO3dCQUNyQixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsaUJBQWlCO3dCQUNqQixlQUFlLENBQUMsYUFDUCxDQUFDLFdBQVcsQ0FBQzs4R0FvQkUsV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhO2dCQUNRLGlCQUFpQjtzQkFBaEQsU0FBUzt1QkFBQyxtQkFBbUI7Z0JBQ0YsYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlO2dCQW1EMUIsT0FBTztzQkFETixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBpbmplY3QsIE9uRGVzdHJveSwgT25Jbml0LCBSZW5kZXJlcjIsIHNpZ25hbCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc09ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUsIEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9ybWx5TW9kdWxlIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBGaWVsZFR5cGUsIEZpZWxkVHlwZUNvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ljb24vaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWNvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9pY29uL2ljb24uc2VydmljZSc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IE1hdEJ1dHRvblRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbi10b2dnbGUnO1xuaW1wb3J0IHsgTWF0RGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgTWF0TmF0aXZlRGF0ZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHsgZmlyc3QgYXMgX2ZpcnN0LCBnZXQgYXMgX2dldCwgZmlsdGVyIGFzIF9maWx0ZXIsIHNpemUgYXMgX3NpemUsIHRvTG93ZXIgYXMgX3RvTG93ZXIsIGluY2x1ZGVzIGFzIF9pbmNsdWRlcywgZm9yRWFjaCBhcyBfZm9yRWFjaCB9IGZyb20gJ2xvZGFzaCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NhLWNhdGVnb3J5LWRyb3Bkb3duJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEZvcm1seU1vZHVsZSxcbiAgICBJY29uQ29tcG9uZW50LFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIE1hdEJ1dHRvblRvZ2dsZU1vZHVsZSxcbiAgICBNYXREYXRlcGlja2VyTW9kdWxlLFxuICAgIE1hdE5hdGl2ZURhdGVNb2R1bGUsXG4gICAgTWF0Q2hlY2tib3hNb2R1bGUsXG4gICAgTWF0U2VsZWN0TW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBbSWNvblNlcnZpY2VdLFxuICB0ZW1wbGF0ZVVybDogJy4vY2F0ZWdvcnktZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vY2F0ZWdvcnktZHJvcGRvd24uY29tcG9uZW50LmNzcydcbn0pXG5cbmV4cG9ydCBjbGFzcyBDYXRlZ29yeURyb3Bkb3duQ29tcG9uZW50IGV4dGVuZHMgRmllbGRUeXBlPEZpZWxkVHlwZUNvbmZpZz4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIGdldCBiaW5kTGFiZWwoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMucHJvcHNbJ2JpbmRMYWJlbCddIHx8ICdsYWJlbCc7IH1cbiAgZ2V0IGJpbmRWYWx1ZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5wcm9wc1snYmluZFZhbHVlJ10gfHwgJ3ZhbHVlJzsgfVxuICBnZXQgYmluZEF0dHJpYnV0ZXMoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMucHJvcHNbJ2JpbmRBdHRyaWJ1dGVzJ10gfHwgJ2F0dHJpYnV0ZXMnOyB9XG4gIF9jYXRlZ29yaWVzID0gc2lnbmFsPGFueVtdPihbXSk7XG4gIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHNlbGVjdGVkQ2F0ZWdvcnkgPSBzaWduYWw8YW55Pih1bmRlZmluZWQpO1xuICBzZWxlY3RlZEF0dHJpYnV0ZXMgPSBzaWduYWw8YW55W10+KFtdKTtcbiAgc2VhcmNoVGVybSA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcbiAgaXNPcGVuID0gc2lnbmFsKGZhbHNlKTtcbiAgdXNlclNlbGVjdGVkQ2F0ZWdvcnkgPSBzaWduYWw8YW55Pih1bmRlZmluZWQpOyAvLyBUbyBob2xkIHRoZSB1c2VyJ3MgZXhwbGljaXQgc2VsZWN0aW9uXG5cbiAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgQFZpZXdDaGlsZCgnc2VhcmNoSW5wdXQnKSBzZWFyY2hJbnB1dDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnY2F0ZWdvcnlDb250YWluZXInKSBjYXRlZ29yeUNvbnRhaW5lcjogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnZHJvcGRvd25QYW5lbCcpIGRyb3Bkb3duUGFuZWw6IEVsZW1lbnRSZWY7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcbiAgICBzdXBlcigpO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBmaWx0ZXJlZCA9IHRoaXMuZmlsdGVyZWRDYXRlZ29yaWVzKCk7XG4gICAgICBjb25zdCB0ZXJtID0gdGhpcy5zZWFyY2hUZXJtKCk7XG5cbiAgICAgIGlmICh0ZXJtICYmIGZpbHRlcmVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENhdGVnb3J5LnNldChfZmlyc3QoZmlsdGVyZWQpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiBhdHRyaWJ1dGVzIGV4aXN0LCBzdGljayB3aXRoIHRoZWlyIGNhdGVnb3J5XG4gICAgICBjb25zdCBhdHRyQ2F0ZWdvcnkgPSB0aGlzLmdldFNlbGVjdGVkQXR0cmlidXRlc0NhdGVnb3J5KCk7XG4gICAgICBpZiAoYXR0ckNhdGVnb3J5KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yeS5zZXQoYXR0ckNhdGVnb3J5KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBFbHNlIGZhbGxiYWNrIHRvIHVzZXItc2VsZWN0ZWQgb3IgZmlyc3RcbiAgICAgIGlmICh0aGlzLnVzZXJTZWxlY3RlZENhdGVnb3J5KCkpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENhdGVnb3J5LnNldCh0aGlzLnVzZXJTZWxlY3RlZENhdGVnb3J5KCkpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLl9jYXRlZ29yaWVzKCkubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ2F0ZWdvcnkuc2V0KF9maXJzdCh0aGlzLl9jYXRlZ29yaWVzKCkpKTtcbiAgICAgIH1cbiAgICB9LCB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvcHM/LlsnbXVsdGlwbGUnXSkge1xuICAgICAgY29uc3QgaW5pdGlhbFZhbHVlID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRBdHRyaWJ1dGVzLnNldChBcnJheS5pc0FycmF5KGluaXRpYWxWYWx1ZSkgPyBpbml0aWFsVmFsdWUgOiBbXSk7XG4gICAgfVxuXG4gICAgaWYgKGlzT2JzZXJ2YWJsZSh0aGlzLnByb3BzLm9wdGlvbnMpKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQodGhpcy5wcm9wcy5vcHRpb25zLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUob3B0aW9ucyA9PiB7XG4gICAgICAgIHRoaXMuX2NhdGVnb3JpZXMuc2V0KEFycmF5LmlzQXJyYXkob3B0aW9ucykgPyBvcHRpb25zIDogW10pO1xuICAgICAgICBpZiAodGhpcy5fY2F0ZWdvcmllcygpLmxlbmd0aCA+IDAgJiYgIXRoaXMudXNlclNlbGVjdGVkQ2F0ZWdvcnkoKSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yeS5zZXQodGhpcy5fY2F0ZWdvcmllcygpWzBdKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9jYXRlZ29yaWVzLnNldChBcnJheS5pc0FycmF5KHRoaXMucHJvcHMub3B0aW9ucykgPyB0aGlzLnByb3BzLm9wdGlvbnMgOiBbXSk7XG4gICAgICBpZiAodGhpcy5fY2F0ZWdvcmllcygpLmxlbmd0aCA+IDAgJiYgIXRoaXMudXNlclNlbGVjdGVkQ2F0ZWdvcnkoKSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ2F0ZWdvcnkuc2V0KHRoaXMuX2NhdGVnb3JpZXMoKVswXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxuICBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgaWYgKHRoaXMuaXNPcGVuKCkpIHtcbiAgICAgICAgLy8gTWFyayBhcyB0b3VjaGVkIHdoZW4gY2xvc2luZyB2aWEgb3V0c2lkZSBjbGlja1xuICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaXNPcGVuLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlRHJvcGRvd24oKSB7XG4gICAgY29uc3QgaXNPcGVuaW5nID0gIXRoaXMuaXNPcGVuKCk7XG4gICAgdGhpcy5pc09wZW4uc2V0KGlzT3BlbmluZyk7XG5cbiAgICBpZiAoaXNPcGVuaW5nKSB7XG4gICAgICB0aGlzLnNlYXJjaFRlcm0uc2V0KCcnKTtcbiAgICAgIGlmICh0aGlzLnNlYXJjaElucHV0KSB7XG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgfVxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICBpZiAodGhpcy5jYXRlZ29yeUNvbnRhaW5lciAmJiB0aGlzLmRyb3Bkb3duUGFuZWwpIHtcbiAgICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSB0aGlzLmNhdGVnb3J5Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IHRoaXMucHJvcHM/LlsncGFuZWxXaWR0aE9mZnNldCddID8/IDE2MDsgLy8gZmFsbGJhY2sgaWYgdW5kZWZpbmVkXG5cbiAgICAgICAgLy8gVXNlIGV4cGxpY2l0IHBpeGVsIHdpZHRoIHRvIGF2b2lkIHJlZmxvd3MgY2F1c2VkIGJ5IGZpdC1jb250ZW50XG4gICAgICAgIGNvbnN0IGJhc2VGb250U2l6ZSA9IDE2OyAvLyBkZWZhdWx0IDFyZW0gPSAxNnB4XG4gICAgICAgIGNvbnN0IHBhbmVsV2lkdGhSZW0gPSAoY29udGFpbmVyV2lkdGggKyBvZmZzZXQpIC8gYmFzZUZvbnRTaXplO1xuXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5kcm9wZG93blBhbmVsLm5hdGl2ZUVsZW1lbnQsICdtaW4td2lkdGgnLCBgJHtwYW5lbFdpZHRoUmVtfXJlbWApO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZHJvcGRvd25QYW5lbC5uYXRpdmVFbGVtZW50LCAnd2lkdGgnLCBgJHtwYW5lbFdpZHRoUmVtfXJlbWApO1xuICAgICAgfVxuXG4gICAgICAvLyDwn5SRIFN5bmMgc2VsZWN0ZWRBdHRyaWJ1dGVzIGZyb20gZm9ybUNvbnRyb2wgb24gZXZlcnkgb3BlblxuICAgICAgaWYgKHRoaXMucHJvcHM/LlsnbXVsdGlwbGUnXSkge1xuICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlIHx8IFtdO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQXR0cmlidXRlcy5zZXQoQXJyYXkuaXNBcnJheShjdXJyZW50VmFsdWUpID8gY3VycmVudFZhbHVlIDogW10pO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmZvcm1Db250cm9sLnZhbHVlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBdHRyaWJ1dGVzLnNldChbdGhpcy5mb3JtQ29udHJvbC52YWx1ZV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEF0dHJpYnV0ZXMuc2V0KFtdKTtcbiAgICAgIH1cblxuICAgICAgLy8g8J+RhyBOb3cgdGhpcyB3b3JrcywgYmVjYXVzZSBzZWxlY3RlZEF0dHJpYnV0ZXMgaXNu4oCZdCBlbXB0eSBhbnltb3JlXG4gICAgICBjb25zdCBhdHRyQ2F0ZWdvcnkgPSB0aGlzLmdldFNlbGVjdGVkQXR0cmlidXRlc0NhdGVnb3J5KCk7XG4gICAgICBpZiAoYXR0ckNhdGVnb3J5KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yeS5zZXQoYXR0ckNhdGVnb3J5KTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy51c2VyU2VsZWN0ZWRDYXRlZ29yeSgpKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yeS5zZXQodGhpcy51c2VyU2VsZWN0ZWRDYXRlZ29yeSgpKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fY2F0ZWdvcmllcygpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENhdGVnb3J5LnNldCh0aGlzLl9jYXRlZ29yaWVzKClbMF0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBNYXJrIGFzIHRvdWNoZWQgd2hlbiBjbG9zaW5nIHRoZSBkcm9wZG93blxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0Q2F0ZWdvcnkoY2F0ZWdvcnk6IGFueSkge1xuICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yeS5zZXQoY2F0ZWdvcnkpO1xuICAgIC8vIE9ubHkgdXBkYXRlIHVzZXJTZWxlY3RlZENhdGVnb3J5IGlmIHRoZXJlIGFyZSBOTyBhdHRyaWJ1dGVzIHNlbGVjdGVkXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRBdHRyaWJ1dGVzKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLnVzZXJTZWxlY3RlZENhdGVnb3J5LnNldChjYXRlZ29yeSk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlVmFsdWUodmFsOiBhbnkpIHtcbiAgICB0aGlzLnNlbGVjdGVkQXR0cmlidXRlcy51cGRhdGUoYXR0cmlidXRlcyA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IGF0dHJpYnV0ZXMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbVt0aGlzLmJpbmRWYWx1ZV0gPT09IHZhbFt0aGlzLmJpbmRWYWx1ZV0pO1xuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgYXR0cmlidXRlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgY2F0ZWdvcnkgPSB0aGlzLnNlbGVjdGVkQ2F0ZWdvcnkoKTtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB7IC4uLnZhbCwgY2F0ZWdvcnlJZDogY2F0ZWdvcnlbdGhpcy5iaW5kVmFsdWVdLCBjYXRlZ29yeUxhYmVsOiBjYXRlZ29yeVt0aGlzLmJpbmRMYWJlbF0gfTtcbiAgICAgICAgYXR0cmlidXRlcy5wdXNoKG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoWy4uLmF0dHJpYnV0ZXNdKTtcbiAgICAgIHJldHVybiBbLi4uYXR0cmlidXRlc107XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldFNlbGVjdGVkQXR0cmlidXRlc0NhdGVnb3J5KCk6IGFueSB7XG4gICAgY29uc3QgYXR0cnMgPSB0aGlzLnNlbGVjdGVkQXR0cmlidXRlcygpO1xuICAgIGlmIChhdHRycy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBhbHdheXMgcHJlZmVyIGNhdGVnb3J5IG9mIGxhc3Qgc2VsZWN0ZWQgYXR0cmlidXRlXG4gICAgICBjb25zdCBsYXN0QXR0ciA9IGF0dHJzW2F0dHJzLmxlbmd0aCAtIDFdO1xuICAgICAgcmV0dXJuIHRoaXMuX2NhdGVnb3JpZXMoKS5maW5kKGMgPT4gY1t0aGlzLmJpbmRWYWx1ZV0gPT09IGxhc3RBdHRyLmNhdGVnb3J5SWQpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlzSXRlbVNlbGVjdGVkKHZhbDogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRBdHRyaWJ1dGVzKCkuc29tZShpdGVtID0+IGl0ZW1bdGhpcy5iaW5kVmFsdWVdID09PSB2YWxbdGhpcy5iaW5kVmFsdWVdKTtcbiAgfVxuXG4gIHJlbW92ZVZhbHVlKHZhbDogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZEF0dHJpYnV0ZXMudXBkYXRlKGF0dHJpYnV0ZXMgPT4ge1xuICAgICAgY29uc3QgbmV3QXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMuZmlsdGVyKGl0ZW0gPT4gaXRlbVt0aGlzLmJpbmRWYWx1ZV0gIT09IHZhbFt0aGlzLmJpbmRWYWx1ZV0pO1xuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShuZXdBdHRyaWJ1dGVzKTtcbiAgICAgIHJldHVybiBuZXdBdHRyaWJ1dGVzO1xuICAgIH0pO1xuICB9XG5cbiAgc2VsZWN0U2luZ2xlVmFsdWUodmFsOiBhbnkpIHtcbiAgICBjb25zdCBjYXRlZ29yeSA9IHRoaXMuc2VsZWN0ZWRDYXRlZ29yeSgpO1xuICAgIC8vIGNvbnN0IG5ld1ZhbHVlID0geyAuLi52YWwsIGNhdGVnb3J5SWQ6IGNhdGVnb3J5W3RoaXMuYmluZFZhbHVlXSwgY2F0ZWdvcnlMYWJlbDogY2F0ZWdvcnlbdGhpcy5iaW5kTGFiZWxdIH07XG4gICAgLy8gdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShuZXdWYWx1ZSk7XG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWwpO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgIHRoaXMuaXNPcGVuLnNldChmYWxzZSk7XG4gIH1cblxuICBvblNlYXJjaChldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCB2YWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG4gICAgdGhpcy5zZWFyY2hUZXJtLnNldCh2YWx1ZSk7XG4gIH1cblxuICBjbGVhclNlYXJjaChldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLnNlYXJjaFRlcm0uc2V0KCcnKTtcbiAgICB0aGlzLnNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBmaWx0ZXJlZEF0dHJpYnV0ZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY2F0ZWdvcnkgPSB0aGlzLnNlbGVjdGVkQ2F0ZWdvcnkoKTtcbiAgICBjb25zdCB0ZXJtID0gdGhpcy5zZWFyY2hUZXJtKCkudG9Mb3dlckNhc2UoKTtcblxuICAgIGlmICghY2F0ZWdvcnkpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gKGNhdGVnb3J5W3RoaXMuYmluZEF0dHJpYnV0ZXNdIHx8IFtdKS5maWx0ZXIoKHZhbDogYW55KSA9PiAodmFsW3RoaXMuYmluZExhYmVsXSB8fCAnJykudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKSk7XG4gIH0pO1xuXG4gIGZpbHRlcmVkQ2F0ZWdvcmllcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB0ZXJtID0gdGhpcy5zZWFyY2hUZXJtKCkudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBjYXRlZ29yaWVzID0gdGhpcy5fY2F0ZWdvcmllcygpO1xuICAgIGlmICghdGVybSkge1xuICAgICAgcmV0dXJuIGNhdGVnb3JpZXM7XG4gICAgfVxuICAgIHJldHVybiBjYXRlZ29yaWVzLmZpbHRlcihjYXRlZ29yeSA9PlxuICAgICAgKGNhdGVnb3J5W3RoaXMuYmluZEF0dHJpYnV0ZXNdIHx8IFtdKS5zb21lKCh2YWw6IGFueSkgPT4gKHZhbFt0aGlzLmJpbmRMYWJlbF0gfHwgJycpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSkpXG4gICAgKTtcbiAgfSk7XG5cbiAgLy8gQ29tcHV0ZWQgc2lnbmFsIHRoYXQgY3JlYXRlcyBhIE1hcCBvZiBjYXRlZ29yeSBJRCB0byBmaWx0ZXJlZCBhdHRyaWJ1dGUgY291bnRcbiAgY2F0ZWdvcnlBdHRyaWJ1dGVDb3VudHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdGVybSA9IF90b0xvd2VyKHRoaXMuc2VhcmNoVGVybSgpKTtcbiAgICBjb25zdCBjYXRlZ29yaWVzID0gdGhpcy5fY2F0ZWdvcmllcygpO1xuICAgIGNvbnN0IGNvdW50c01hcCA9IG5ldyBNYXA8YW55LCBudW1iZXI+KCk7XG4gICAgXG4gICAgX2ZvckVhY2goY2F0ZWdvcmllcywgY2F0ZWdvcnkgPT4ge1xuICAgICAgY29uc3QgYXR0cmlidXRlcyA9IF9nZXQoY2F0ZWdvcnksIHRoaXMuYmluZEF0dHJpYnV0ZXMsIFtdKTtcbiAgICAgIFxuICAgICAgaWYgKCF0ZXJtKSB7XG4gICAgICAgIC8vIE5vIHNlYXJjaCB0ZXJtLCByZXR1cm4gdG90YWwgY291bnRcbiAgICAgICAgY291bnRzTWFwLnNldChfZ2V0KGNhdGVnb3J5LCB0aGlzLmJpbmRWYWx1ZSksIF9zaXplKGF0dHJpYnV0ZXMpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFJldHVybiBjb3VudCBvZiBtYXRjaGluZyBhdHRyaWJ1dGVzXG4gICAgICAgIGNvbnN0IG1hdGNoaW5nQXR0cmlidXRlcyA9IF9maWx0ZXIoYXR0cmlidXRlcywgKHZhbDogYW55KSA9PiBcbiAgICAgICAgICBfaW5jbHVkZXMoX3RvTG93ZXIoX2dldCh2YWwsIHRoaXMuYmluZExhYmVsLCAnJykpLCB0ZXJtKVxuICAgICAgICApO1xuICAgICAgICBjb3VudHNNYXAuc2V0KF9nZXQoY2F0ZWdvcnksIHRoaXMuYmluZFZhbHVlKSwgX3NpemUobWF0Y2hpbmdBdHRyaWJ1dGVzKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgXG4gICAgcmV0dXJuIGNvdW50c01hcDtcbiAgfSk7XG5cbiAgLy8gSGVscGVyIG1ldGhvZCB0byBnZXQgY291bnQgZnJvbSB0aGUgY29tcHV0ZWQgbWFwXG4gIGdldEZpbHRlcmVkQXR0cmlidXRlc0NvdW50KGNhdGVnb3J5OiBhbnkpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmNhdGVnb3J5QXR0cmlidXRlQ291bnRzKCkuZ2V0KF9nZXQoY2F0ZWdvcnksIHRoaXMuYmluZFZhbHVlKSkgfHwgMDtcbiAgfVxufSIsIjxkaXYgY2xhc3M9XCJjdXN0b20tY2F0ZWdvcnktZHJvcGRvd24gcmVsYXRpdmVcIiAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oKVwiPlxuICAgIDwhLS0gRHJvcGRvd24gVHJpZ2dlciAvIERpc3BsYXkgLS0+XG4gICAgPGRpdiAjY2F0ZWdvcnlDb250YWluZXIgY2xhc3M9XCJjdXN0b20tY2F0ZWdvcnktY29udGFpbmVyXCIgXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICdjYXRlZ29yeS1pbnZhbGlkJzogZm9ybUNvbnRyb2wuaW52YWxpZCxcbiAgICAgICAgICAgICdjYXRlZ29yeS10b3VjaGVkJzogZm9ybUNvbnRyb2wudG91Y2hlZFxuICAgICAgICB9XCIgXG4gICAgICAgIFtjbGFzcy5vcGVuXT1cImlzT3BlbigpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tY2F0ZWdvcnktYXR0cmlidXRlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgQGlmKHByb3BzPy5bJ211bHRpcGxlJ10pe1xuICAgICAgICAgICAgQGlmIChzZWxlY3RlZEF0dHJpYnV0ZXMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBAZm9yIChpdGVtIG9mIHNlbGVjdGVkQXR0cmlidXRlcygpOyB0cmFjayBpdGVtW2JpbmRWYWx1ZV0pIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tY2F0ZWdvcnktYXR0cmlidXRlIGN1c3RvbS1jYXRlZ29yeS1jdXN0b20tY2hpcFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1jYXRlZ29yeS1hdHRyaWJ1dGUtbGFiZWxcIj57eyBpdGVtW2JpbmRMYWJlbF0gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tY2F0ZWdvcnktYXR0cmlidXRlLWljb24gcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNhLWljb24gaWNvbj1cImNsb3NlT3V0bGluZWRcIiAoY2xpY2spPVwicmVtb3ZlVmFsdWUoaXRlbSlcIiBzaXplPVwiMTFcIj48L3NhLWljb24+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGxhY2Vob2xkZXJcIj5TZWxlY3QgaXRlbXM8L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIEBpZihmb3JtQ29udHJvbC52YWx1ZSkge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tY2F0ZWdvcnktYXR0cmlidXRlLWxhYmVsXCI+e3sgZm9ybUNvbnRyb2wudmFsdWVbYmluZExhYmVsXSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwbGFjZWhvbGRlclwiPlNlbGVjdCBpdGVtPC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1jYXRlZ29yeS1hcnJvdy13cmFwcGVyXCI+XG4gICAgICAgICAgICA8c2EtaWNvbiBpY29uPVwidXBEb3duQ2hldnJvbk91dGxpbmVkXCIgc2l6ZT1cIjExXCIgY2xhc3M9XCJzZWFyY2hJY29uc1wiPjwvc2EtaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIERyb3Bkb3duIFBhbmVsIC0tPlxuICAgIEBpZiAoaXNPcGVuKCkpIHtcbiAgICA8ZGl2ICNkcm9wZG93blBhbmVsIGNsYXNzPVwiZHJvcGRvd24tcGFuZWxcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtaW5wdXQtY29udGFpbmVyIG1hdC1mb3JtLWZpZWxkLWRlbnNpdHktNVwiPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIFthcHBlYXJhbmNlXT1cInByb3BzWydhcHBlYXJhbmNlJ10gfHwgJ291dGxpbmUnXCIgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgICAgICAgIDxzYS1pY29uIGljb249XCJzZWFyY2hJY29uXCIgc2l6ZT1cIjIwXCIgY2xhc3M9XCJzZWFyY2hJY29uc1wiIG1hdFByZWZpeD48L3NhLWljb24+XG4gICAgICAgICAgICAgICAgPGlucHV0ICNzZWFyY2hJbnB1dCBtYXRJbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJtZW51LXNlYXJjaC1iYXJcIiBjbGFzcz1cInNlYXJjaC1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgIChrZXl1cCk9XCJvblNlYXJjaCgkZXZlbnQpXCIgW3BsYWNlaG9sZGVyXT1cInByb3BzPy5bJ3NlYXJjaFBsYWNlaG9sZGVyJ10gfHwgJ1NlYXJjaCdcIiAvPlxuICAgICAgICAgICAgICAgIDxzYS1pY29uIGNsYXNzPVwicG9pbnRlclwiIGljb249XCJjbG9zZU91dGxpbmVkXCIgc2l6ZT1cIjE1XCIgY2xhc3M9XCJzZWFyY2hJY29uc1wiIG1hdFN1ZmZpeFxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJTZWFyY2goJGV2ZW50KVwiPjwvc2EtaWNvbj5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIEBpZiAoZmlsdGVyZWRDYXRlZ29yaWVzKCkubGVuZ3RoID4gMCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwidHdvLXBhbmVsLWRyb3Bkb3duXCI+XG4gICAgICAgICAgICA8IS0tIExlZnQgUGFuZWw6IENhdGVnb3JpZXMgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2F0ZWdvcnktcGFuZWxcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChjYXQgb2YgZmlsdGVyZWRDYXRlZ29yaWVzKCk7IHRyYWNrIGNhdFtiaW5kVmFsdWVdKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhdGVnb3J5LWl0ZW1cIiBbY2xhc3MuYWN0aXZlXT1cImNhdFtiaW5kVmFsdWVdID09PSBzZWxlY3RlZENhdGVnb3J5KCk/LltiaW5kVmFsdWVdXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdENhdGVnb3J5KGNhdCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhdGVnb3J5LWxhYmVsXCI+e3sgY2F0W2JpbmRMYWJlbF0gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZihwcm9wcz8uWydzaG93QXR0cmlidXRlc0NvdW50J10pe1xuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhdHRyaWJ1dGVzLWNvdW50XCI+KHt7IGdldEZpbHRlcmVkQXR0cmlidXRlc0NvdW50KGNhdCkgfX0pPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tZGl2aWRlclwiPjwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIFJpZ2h0IFBhbmVsOiBBdHRyaWJ1dGVzIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF0dHJpYnV0ZXMtcGFuZWxcIj5cbiAgICAgICAgICAgICAgICBAaWYoZmlsdGVyZWRBdHRyaWJ1dGVzKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIEBmb3IgKHZhbCBvZiBmaWx0ZXJlZEF0dHJpYnV0ZXMoKTsgdHJhY2sgdmFsW2JpbmRWYWx1ZV0pIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXR0cmlidXRlLWl0ZW0gcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwicHJvcHM/LlsnbXVsdGlwbGUnXSA/IGlzSXRlbVNlbGVjdGVkKHZhbCkgOiBmb3JtQ29udHJvbC52YWx1ZT8uW2JpbmRWYWx1ZV0gPT09IHZhbFtiaW5kVmFsdWVdXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInByb3BzPy5bJ211bHRpcGxlJ10gPyB0b2dnbGVWYWx1ZSh2YWwpIDogc2VsZWN0U2luZ2xlVmFsdWUodmFsKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZihwcm9wcz8uWydtdWx0aXBsZSddKXtcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY3VzdG9tLWNoZWNrYm94LWNvbnRhaW5lclwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJpc0l0ZW1TZWxlY3RlZCh2YWwpXCIgKGNoYW5nZSk9XCJ0b2dnbGVWYWx1ZSh2YWwpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZWNrbWFya1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXR0cmlidXRlLWxhYmVsXCI+e3sgdmFsW2JpbmRMYWJlbF0gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGVsc2V7XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jaGVja2JveC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXR0cmlidXRlLWxhYmVsXCI+e3sgdmFsW2JpbmRMYWJlbF0gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYodmFsPy50b29sdGlwIHx8IHZhbD8uZGVzY3JpcHRpb24pe1xuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0b29sdGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzYS1pY29uIFtpY29uXT1cInByb3BzPy5bJ3Rvb2x0aXBJY29uJ10gfHwgJ2luZm9DaXJjbGVPdXRsaW5lZCdcIiBjdXN0b21DbGFzcz1cImluZm8taWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cInZhbD8udG9vbHRpcCB8fCB2YWw/LmRlc2NyaXB0aW9uXCIgbWF0VG9vbHRpcENsYXNzPVwiY3VzdG9tLXRvb2x0aXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRvb2x0aXAtaWNvblwiPjwvc2EtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9QGVsc2Uge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTQgdGV4dC1jZW50ZXIgdGV4dC1ncmF5LTUwMCB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgTm8gaXRlbXMgZm91bmQuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInAtNCB0ZXh0LWNlbnRlciB0ZXh0LWdyYXktNTAwIHctZnVsbFwiPlxuICAgICAgICAgICAgTm8gaXRlbXMgZm91bmQuXG4gICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgPC9kaXY+XG4gICAgfVxuPC9kaXY+Il19
|
|
@@ -21,6 +21,7 @@ import * as i2 from "@angular/forms";
|
|
|
21
21
|
import * as i3 from "@ng-select/ng-select";
|
|
22
22
|
import * as i4 from "@angular/material/form-field";
|
|
23
23
|
import * as i5 from "@angular/material/input";
|
|
24
|
+
import * as i6 from "@angular/material/tooltip";
|
|
24
25
|
export class NgSelectComponent extends FieldType {
|
|
25
26
|
constructor() {
|
|
26
27
|
super(...arguments);
|
|
@@ -87,7 +88,7 @@ export class NgSelectComponent extends FieldType {
|
|
|
87
88
|
this.filteredOptions = [...this.field.props?.options];
|
|
88
89
|
}
|
|
89
90
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: NgSelectComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
90
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: NgSelectComponent, isStandalone: true, selector: "sa-ng-select", providers: [IconService], usesInheritance: true, ngImport: i0, template: "<ng-select [items]=\"filteredOptions\" [multiple]=\"props?.multiple || false\" [bindLabel]=\"props?.bindLabel || 'label'\"\r\n [closeOnSelect]=\"props?.closeOnSelect ?? true\" [bindValue]=\"props?.bindValue || 'value'\"\r\n [placeholder]=\"props?.placeholder || 'Select'\" [searchable]=\"false\" [formControl]=\"formControl\"\r\n [clearable]=\"props?.isClearable\" [appearance]=\"props['appearance'] || 'outline'\" [loading]=\"props?.loading || false\" class=\"ng-select-custom\">\r\n\r\n @if(!!props?.showSearchBar){\r\n <ng-template ng-header-tmp>\r\n <div class=\"search-input-container mat-form-field-density-5\">\r\n <mat-form-field [appearance]=\"props['appearance'] || 'outline'\" class=\"w-100\">\r\n <sa-icon icon=\"searchIcon\" class=\"searchIcons\" size=\"20\" matPrefix></sa-icon>\r\n <input matInput type=\"text\" name=\"menu-search-bar\" class=\"search-input searchIcons\"\r\n (keyup)=\"onSearch($event)\" (keydown)=\"stopBackspacePropagation($event)\"\r\n [placeholder]=\"props?.searchPlaceholder || 'Search'\" [(ngModel)]=\"searchValue\" />\r\n <sa-icon icon=\"closeOutlined\" class=\"pointer searchIcons\" size=\"15\" matSuffix\r\n (click)=\"clearSearch($event)\"></sa-icon>\r\n </mat-form-field>\r\n </div>\r\n </ng-template>\r\n }\r\n <!-- Option template with a checkbox in front of each row -->\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\r\n <div class=\"option-row\">\r\n @if(props?.multiple){\r\n <input type=\"checkbox\" [checked]=\"item$.selected\" tabindex=\"-1\" />\r\n }\r\n <span class=\"option-label\">{{ item[props.bindLabel || 'label'] }}</span>\r\n\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Selected items chip template (optional) -->\r\n <ng-template ng-multi-label-tmp let-items=\"items\" let-clear=\"clear\">\r\n <div class=\"chips ng-values-list\">\r\n\r\n <!-- If collapsed: show only first 2 + summary -->\r\n <ng-container *ngIf=\"!expandedSummary\">\r\n @for (s of items.slice(0, 2); track s[props.bindValue || 'value']) {\r\n <div class=\"ng-value\">\r\n <span class=\"ng-value-label\">{{ s[props.bindLabel || 'label'] }}</span>\r\n <span class=\"ng-value-icon right\" (click)=\"clear(s)\"><sa-icon icon=\"closeOutlined\"\r\n size=\"11\"></sa-icon></span>\r\n </div>\r\n }\r\n\r\n @if (items.length > 2) {\r\n <div class=\"ng-value summary-chip pointer\" (click)=\"toggleSummary()\">\r\n <span class=\"ng-value-label\">+{{ items.length - 2 }}</span>\r\n <span class=\"ng-value-icon right\" (click)=\"clearRemaining(items, clear)\"><sa-icon\r\n icon=\"closeOutlined\" size=\"11\"></sa-icon></span>\r\n </div>\r\n }\r\n </ng-container>\r\n\r\n <!-- If expanded: show all items -->\r\n <ng-container *ngIf=\"expandedSummary\">\r\n @for (s of items; track s[props.bindValue || 'value']) {\r\n <div class=\"ng-value\">\r\n <span class=\"ng-value-label\">{{ s[props.bindLabel || 'label'] }}</span>\r\n <span class=\"ng-value-icon right\" (click)=\"clear(s)\"><sa-icon icon=\"closeOutlined\"\r\n size=\"11\"></sa-icon></span>\r\n </div>\r\n }\r\n <!-- Collapse button -->\r\n <div class=\"ng-value summary-chip pointer\" (click)=\"toggleSummary()\">\r\n <sa-icon class=\"ng-value-label\" size=\"18\" icon=\"leftChevronCircle\"></sa-icon>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n </ng-template>\r\n\r\n @if(props?.footer){\r\n <ng-template ng-footer-tmp>\r\n <div class=\"dropdown-footer\">{{props?.footer?.description}}</div>\r\n </ng-template>\r\n }\r\n\r\n <ng-template ng-notfound-tmp>\r\n <div class=\"no-results\">\r\n @if (searchValue?.length > 0) {\r\n {{ props?.searchNotFoundText || '\u274C No items match \"' + searchValue + '\"' }}\r\n } @else {\r\n {{ props?.notFoundText || '\u26A0\uFE0F No options available' }}\r\n }\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template ng-loadingtext-tmp>\r\n <div class=\"loading\">\r\n <sa-icon icon=\"loader\" size=\"16\" class=\"loading-spinner\"></sa-icon>\r\n <span>Loading options...</span>\r\n </div>\r\n </ng-template>\r\n</ng-select>", styles: ["::ng-deep .ng-select-custom .search-input-container .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding:var(--small-2px, 2px) var(--small-12px, 12px)}.ng-select-custom .ng-values-list{display:flex;flex-wrap:wrap;gap:var(--small-8px, 8px)}::ng-deep .ng-select-custom.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:none;display:flex;align-items:center;font-size:var(--small-6px, 6px)}::ng-deep .ng-select-custom.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{border-radius:var(--small-4px, 4px);background:var(--grey-50, #F2F4F7);display:flex;padding:.188rem var(--small-8px, 8px) var(--small-2px, 2px) var(--small-8px, 8px);justify-content:center;align-items:center;gap:var(--small-4px, 4px)}.ng-select-custom .option-row{display:flex;width:18.75rem;height:2.5rem;padding:var(--small-12px, 12px);align-items:center;gap:var(--small-8px, 8px);flex-shrink:0}::ng-deep .ng-select-custom .mdc-form-field.mat-internal-form-field{display:flex;gap:var(--small-8px, 8px);align-items:center}::ng-deep .ng-select-custom .mdc-checkbox__ripple{display:none}::ng-deep .ng-select-custom .checkbox-style{display:flex;align-items:center}.ng-select-custom .ng-option input[type=checkbox],.ng-select input[type=checkbox]{accent-color:var(--primary-500);vertical-align:middle;width:var(--small-14px, 14px);height:var(--small-14px, 14px)}::ng-deep .ng-select-custom.ng-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected{background-color:var(--primary-50)}.option-label{color:var(--text-high-emphasis, #1C1B20);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px}::ng-deep .ng-select-custom.ng-select .search-input-container .mat-mdc-form-field{width:-webkit-fill-available}::ng-deep .ng-select-custom .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{background-color:var(--primary-50)}::ng-deep .ng-select-custom.ng-select .ng-arrow-wrapper .ng-arrow{display:none}::ng-deep .ng-select .ng-arrow-wrapper{width:var(--small-12px, 12px);height:var(--small-12px, 12px);display:flex;align-items:center;justify-content:center}::ng-deep .ng-select .ng-arrow-wrapper:after{content:\"\";display:inline-block;width:var(--small-8px, 8px);height:var(--small-12px, 12px);background:url(/assets/upDownChevronOutlined.svg) no-repeat center;background-size:contain}::ng-deep .ng-select-custom.ng-select.ng-select-focused:not(.ng-select-opened)>.ng-select-container{border-color:var(--primary-500);box-shadow:none}::ng-deep .ng-select-custom.ng-select .no-results{padding:.8rem}::ng-deep .ng-select-custom.ng-select .ng-select-container{padding:.23rem var(--small-12px) .2rem var(--small-12px);height:1.875rem;min-height:2.438rem;border:1px solid var(--grey-100, #EAECF0);align-items:center}::ng-deep .ng-select-custom.ng-select .option-label{color:var(--text-highemphasis, #1C1B20);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px}::ng-deep .ng-select-custom.ng-select .ng-value-label{color:var(--text-mediumemphasis, #6D6979);font-family:var(--font-family-roboto);font-size:.688rem;font-style:normal;font-weight:500;line-height:var(--small-16px, 16px);letter-spacing:.5px}::ng-deep .ng-select-custom.ng-select .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--primary-500)}::ng-deep .ng-select-custom.ng-select .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:var(--small-4px, 4px);border-bottom-right-radius:var(--small-4px, 4px);border-bottom-left-radius:0}::ng-deep .ng-select-custom.ng-select.ng-select-single .ng-value-label{color:var(--text-highemphasis);font-family:var(--font-family-roboto);font-size:var(--small-14px);font-style:normal;font-weight:400;line-height:var(--medium-20px);letter-spacing:.25px}::ng-deep .ng-select-custom.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:var(--text-low-emphasis, #9B98A3);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px}::ng-deep .ng-select-custom .search-input-container .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__leading,::ng-deep .ng-select-custom .search-input-container .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__notch,::ng-deep .ng-select-custom .search-input-container .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--grey-100)}.ng-select-custom .searchIcons{color:var(--color-text-neutral-300, #757575)}::ng-deep .ng-select-custom.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon:hover{background-color:var(--primary-50)}::ng-deep .ng-select-custom.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-label{display:flex}::ng-deep .ng-select-custom .loading{color:var(--text-medium-emphasis, #6D6979);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);display:flex;align-items:center;justify-content:center;padding:12px;gap:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "ngmodule", type: NgSelectModule }, { kind: "component", type: i3.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i3.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i3.NgMultiLabelTemplateDirective, selector: "[ng-multi-label-tmp]" }, { kind: "directive", type: i3.NgHeaderTemplateDirective, selector: "[ng-header-tmp]" }, { kind: "directive", type: i3.NgFooterTemplateDirective, selector: "[ng-footer-tmp]" }, { kind: "directive", type: i3.NgNotFoundTemplateDirective, selector: "[ng-notfound-tmp]" }, { kind: "directive", type: i3.NgLoadingTextTemplateDirective, selector: "[ng-loadingtext-tmp]" }, { kind: "component", type: IconComponent, selector: "sa-icon", inputs: ["img", "imgWidth", "imgHeight", "icon", "size", "color", "iconPath", "iconUrl", "customClass", "href", "hrefTarget", "iconPosition"], outputs: ["onClickEvent"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatCheckboxModule }] }); }
|
|
91
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: NgSelectComponent, isStandalone: true, selector: "sa-ng-select", providers: [IconService], usesInheritance: true, ngImport: i0, template: "<ng-select [items]=\"filteredOptions\" [multiple]=\"props?.multiple || false\" [bindLabel]=\"props?.bindLabel || 'label'\"\n [closeOnSelect]=\"props?.closeOnSelect ?? true\" [bindValue]=\"props?.bindValue || 'value'\"\n [placeholder]=\"props?.placeholder || 'Select'\" [searchable]=\"false\" [formControl]=\"formControl\"\n [clearable]=\"props?.isClearable\" [appearance]=\"props['appearance'] || 'outline'\" [loading]=\"props?.loading || false\" \n class=\"ng-select-custom\"\n [matTooltip]=\"(!props?.multiple && formControl?.value && ((formControl?.value[props?.bindLabel || 'label']?.length > 50) || (formControl?.value?.length > 50))) ? (formControl?.value[props?.bindLabel || 'label'] || formControl?.value) : ''\"\n matTooltipPosition=\"above\">\n\n @if(!!props?.showSearchBar){\n <ng-template ng-header-tmp>\n <div class=\"search-input-container mat-form-field-density-5\">\n <mat-form-field [appearance]=\"props['appearance'] || 'outline'\" class=\"w-100\">\n <sa-icon icon=\"searchIcon\" class=\"searchIcons\" size=\"20\" matPrefix></sa-icon>\n <input matInput type=\"text\" name=\"menu-search-bar\" class=\"search-input searchIcons\"\n (keyup)=\"onSearch($event)\" (keydown)=\"stopBackspacePropagation($event)\"\n [placeholder]=\"props?.searchPlaceholder || 'Search'\" [(ngModel)]=\"searchValue\" />\n <sa-icon icon=\"closeOutlined\" class=\"pointer searchIcons\" size=\"15\" matSuffix\n (click)=\"clearSearch($event)\"></sa-icon>\n </mat-form-field>\n </div>\n </ng-template>\n }\n <!-- Option template with a checkbox in front of each row -->\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\n <div class=\"option-row\" \n [matTooltip]=\"(item[props.bindLabel || 'label']?.length > 80) ? item[props.bindLabel || 'label'] : ''\" \n matTooltipPosition=\"right\">\n @if(props?.multiple){\n <input type=\"checkbox\" [checked]=\"item$.selected\" tabindex=\"-1\" />\n }\n <span class=\"option-label\">{{ item[props.bindLabel || 'label'] }}</span>\n\n </div>\n </ng-template>\n\n <!-- Single select label template -->\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\n <span class=\"ng-value-label\">\n {{ item[props.bindLabel || 'label'] }}\n </span>\n </ng-template>\n\n <!-- Selected items chip template (optional) -->\n <ng-template ng-multi-label-tmp let-items=\"items\" let-clear=\"clear\">\n <div class=\"chips ng-values-list\">\n\n <!-- If collapsed: show only first 2 + summary -->\n <ng-container *ngIf=\"!expandedSummary\">\n @for (s of items.slice(0, 2); track s[props.bindValue || 'value']) {\n <div class=\"ng-value\" \n [matTooltip]=\"(s[props.bindLabel || 'label']?.length > 30) ? s[props.bindLabel || 'label'] : ''\" \n matTooltipPosition=\"above\">\n <span class=\"ng-value-label\">{{ s[props.bindLabel || 'label'] }}</span>\n <span class=\"ng-value-icon right\" (click)=\"clear(s)\"><sa-icon icon=\"closeOutlined\"\n size=\"11\"></sa-icon></span>\n </div>\n }\n\n @if (items.length > 2) {\n <div class=\"ng-value summary-chip pointer\" \n (click)=\"toggleSummary()\" \n matTooltip=\"Click to expand all selected items\" \n matTooltipPosition=\"above\">\n <span class=\"ng-value-label\">+{{ items.length - 2 }}</span>\n <span class=\"ng-value-icon right\" (click)=\"clearRemaining(items, clear)\"><sa-icon\n icon=\"closeOutlined\" size=\"11\"></sa-icon></span>\n </div>\n }\n </ng-container>\n\n <!-- If expanded: show all items -->\n <ng-container *ngIf=\"expandedSummary\">\n @for (s of items; track s[props.bindValue || 'value']) {\n <div class=\"ng-value\" \n [matTooltip]=\"(s[props.bindLabel || 'label']?.length > 30) ? s[props.bindLabel || 'label'] : ''\" \n matTooltipPosition=\"above\">\n <span class=\"ng-value-label\">{{ s[props.bindLabel || 'label'] }}</span>\n <span class=\"ng-value-icon right\" (click)=\"clear(s)\"><sa-icon icon=\"closeOutlined\"\n size=\"11\"></sa-icon></span>\n </div>\n }\n <!-- Collapse button -->\n <div class=\"ng-value summary-chip pointer\" \n (click)=\"toggleSummary()\" \n matTooltip=\"Click to collapse\" \n matTooltipPosition=\"above\">\n <sa-icon class=\"ng-value-label\" size=\"18\" icon=\"leftChevronCircle\"></sa-icon>\n </div>\n </ng-container>\n\n </div>\n </ng-template>\n\n @if(props?.footer){\n <ng-template ng-footer-tmp>\n <div class=\"dropdown-footer\">{{props?.footer?.description}}</div>\n </ng-template>\n }\n\n <ng-template ng-notfound-tmp>\n <div class=\"no-results\">\n @if (searchValue?.length > 0) {\n {{ props?.searchNotFoundText || '\u274C No items match \"' + searchValue + '\"' }}\n } @else {\n {{ props?.notFoundText || '\u26A0\uFE0F No options available' }}\n }\n </div>\n </ng-template>\n\n <ng-template ng-loadingtext-tmp>\n <div class=\"loading\">\n <sa-icon icon=\"loader\" size=\"16\" class=\"loading-spinner\"></sa-icon>\n <span>Loading options...</span>\n </div>\n </ng-template>\n</ng-select>", styles: ["::ng-deep .ng-select-custom .search-input-container .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding:var(--small-2px, 2px) var(--small-12px, 12px)}.ng-select-custom .ng-values-list{display:flex;flex-wrap:wrap;gap:var(--small-8px, 8px)}::ng-deep .ng-select-custom.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:none;display:flex;align-items:center;font-size:var(--small-6px, 6px)}::ng-deep .ng-select-custom.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{border-radius:var(--small-4px, 4px);background:var(--grey-50, #F2F4F7);display:flex;padding:.188rem var(--small-8px, 8px) var(--small-2px, 2px) var(--small-8px, 8px);justify-content:center;align-items:center;gap:var(--small-4px, 4px)}.ng-select-custom .option-row{display:flex;width:18.75rem;height:2.5rem;padding:var(--small-12px, 12px);align-items:center;gap:var(--small-8px, 8px);flex-shrink:0}::ng-deep .ng-select-custom .mdc-form-field.mat-internal-form-field{display:flex;gap:var(--small-8px, 8px);align-items:center}::ng-deep .ng-select-custom .mdc-checkbox__ripple{display:none}::ng-deep .ng-select-custom .checkbox-style{display:flex;align-items:center}.ng-select-custom .ng-option input[type=checkbox],.ng-select input[type=checkbox]{accent-color:var(--primary-500);vertical-align:middle;width:var(--small-14px, 14px);height:var(--small-14px, 14px)}::ng-deep .ng-select-custom.ng-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected{background-color:var(--primary-50)}.option-label{color:var(--text-high-emphasis, #1C1B20);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px}::ng-deep .ng-select-custom.ng-select .search-input-container .mat-mdc-form-field{width:-webkit-fill-available}::ng-deep .ng-select-custom .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{background-color:var(--primary-50)}::ng-deep .ng-select-custom.ng-select .ng-arrow-wrapper .ng-arrow{display:none}::ng-deep .ng-select .ng-arrow-wrapper{width:var(--small-12px, 12px);height:var(--small-12px, 12px);display:flex;align-items:center;justify-content:center}::ng-deep .ng-select .ng-arrow-wrapper:after{content:\"\";display:inline-block;width:var(--small-8px, 8px);height:var(--small-12px, 12px);background:url(/assets/upDownChevronOutlined.svg) no-repeat center;background-size:contain}::ng-deep .ng-select-custom.ng-select.ng-select-focused:not(.ng-select-opened)>.ng-select-container{border-color:var(--primary-500);box-shadow:none}::ng-deep .ng-select-custom.ng-select .no-results{padding:.8rem}::ng-deep .ng-select-custom.ng-select .ng-select-container{padding:.23rem var(--small-12px) .2rem var(--small-12px);height:1.875rem;min-height:2.438rem;border:1px solid var(--grey-100, #EAECF0);align-items:center}::ng-deep .ng-select-custom.ng-select .option-label{color:var(--text-highemphasis, #1C1B20);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px}::ng-deep .ng-select-custom.ng-select .ng-value-label{color:var(--text-mediumemphasis, #6D6979);font-family:var(--font-family-roboto);font-size:.688rem;font-style:normal;font-weight:500;line-height:var(--small-16px, 16px);letter-spacing:.5px}::ng-deep .ng-select-custom.ng-select .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--primary-500)}::ng-deep .ng-select-custom.ng-select .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:var(--small-4px, 4px);border-bottom-right-radius:var(--small-4px, 4px);border-bottom-left-radius:0}::ng-deep .ng-select-custom.ng-select.ng-select-single .ng-value-label{color:var(--text-highemphasis);font-family:var(--font-family-roboto);font-size:var(--small-14px);font-style:normal;font-weight:400;line-height:var(--medium-20px);letter-spacing:.25px}::ng-deep .ng-select-custom.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:var(--text-low-emphasis, #9B98A3);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px}::ng-deep .ng-select-custom .search-input-container .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__leading,::ng-deep .ng-select-custom .search-input-container .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__notch,::ng-deep .ng-select-custom .search-input-container .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--grey-100)}.ng-select-custom .searchIcons{color:var(--color-text-neutral-300, #757575)}::ng-deep .ng-select-custom.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon:hover{background-color:var(--primary-50)}::ng-deep .ng-select-custom.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-label{display:flex}::ng-deep .ng-select-custom .loading{color:var(--text-medium-emphasis, #6D6979);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);display:flex;align-items:center;justify-content:center;padding:12px;gap:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "ngmodule", type: NgSelectModule }, { kind: "component", type: i3.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i3.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i3.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "directive", type: i3.NgMultiLabelTemplateDirective, selector: "[ng-multi-label-tmp]" }, { kind: "directive", type: i3.NgHeaderTemplateDirective, selector: "[ng-header-tmp]" }, { kind: "directive", type: i3.NgFooterTemplateDirective, selector: "[ng-footer-tmp]" }, { kind: "directive", type: i3.NgNotFoundTemplateDirective, selector: "[ng-notfound-tmp]" }, { kind: "directive", type: i3.NgLoadingTextTemplateDirective, selector: "[ng-loadingtext-tmp]" }, { kind: "component", type: IconComponent, selector: "sa-icon", inputs: ["img", "imgWidth", "imgHeight", "icon", "size", "color", "iconPath", "iconUrl", "customClass", "href", "hrefTarget", "iconPosition"], outputs: ["onClickEvent"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatCheckboxModule }] }); }
|
|
91
92
|
}
|
|
92
93
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: NgSelectComponent, decorators: [{
|
|
93
94
|
type: Component,
|
|
@@ -107,6 +108,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
107
108
|
MatDatepickerModule,
|
|
108
109
|
MatNativeDateModule,
|
|
109
110
|
MatCheckboxModule,
|
|
110
|
-
], providers: [IconService], template: "<ng-select [items]=\"filteredOptions\" [multiple]=\"props?.multiple || false\" [bindLabel]=\"props?.bindLabel || 'label'\"\r\n [closeOnSelect]=\"props?.closeOnSelect ?? true\" [bindValue]=\"props?.bindValue || 'value'\"\r\n [placeholder]=\"props?.placeholder || 'Select'\" [searchable]=\"false\" [formControl]=\"formControl\"\r\n [clearable]=\"props?.isClearable\" [appearance]=\"props['appearance'] || 'outline'\" [loading]=\"props?.loading || false\" class=\"ng-select-custom\">\r\n\r\n @if(!!props?.showSearchBar){\r\n <ng-template ng-header-tmp>\r\n <div class=\"search-input-container mat-form-field-density-5\">\r\n <mat-form-field [appearance]=\"props['appearance'] || 'outline'\" class=\"w-100\">\r\n <sa-icon icon=\"searchIcon\" class=\"searchIcons\" size=\"20\" matPrefix></sa-icon>\r\n <input matInput type=\"text\" name=\"menu-search-bar\" class=\"search-input searchIcons\"\r\n (keyup)=\"onSearch($event)\" (keydown)=\"stopBackspacePropagation($event)\"\r\n [placeholder]=\"props?.searchPlaceholder || 'Search'\" [(ngModel)]=\"searchValue\" />\r\n <sa-icon icon=\"closeOutlined\" class=\"pointer searchIcons\" size=\"15\" matSuffix\r\n (click)=\"clearSearch($event)\"></sa-icon>\r\n </mat-form-field>\r\n </div>\r\n </ng-template>\r\n }\r\n <!-- Option template with a checkbox in front of each row -->\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\r\n <div class=\"option-row\">\r\n @if(props?.multiple){\r\n <input type=\"checkbox\" [checked]=\"item$.selected\" tabindex=\"-1\" />\r\n }\r\n <span class=\"option-label\">{{ item[props.bindLabel || 'label'] }}</span>\r\n\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Selected items chip template (optional) -->\r\n <ng-template ng-multi-label-tmp let-items=\"items\" let-clear=\"clear\">\r\n <div class=\"chips ng-values-list\">\r\n\r\n <!-- If collapsed: show only first 2 + summary -->\r\n <ng-container *ngIf=\"!expandedSummary\">\r\n @for (s of items.slice(0, 2); track s[props.bindValue || 'value']) {\r\n <div class=\"ng-value\">\r\n <span class=\"ng-value-label\">{{ s[props.bindLabel || 'label'] }}</span>\r\n <span class=\"ng-value-icon right\" (click)=\"clear(s)\"><sa-icon icon=\"closeOutlined\"\r\n size=\"11\"></sa-icon></span>\r\n </div>\r\n }\r\n\r\n @if (items.length > 2) {\r\n <div class=\"ng-value summary-chip pointer\" (click)=\"toggleSummary()\">\r\n <span class=\"ng-value-label\">+{{ items.length - 2 }}</span>\r\n <span class=\"ng-value-icon right\" (click)=\"clearRemaining(items, clear)\"><sa-icon\r\n icon=\"closeOutlined\" size=\"11\"></sa-icon></span>\r\n </div>\r\n }\r\n </ng-container>\r\n\r\n <!-- If expanded: show all items -->\r\n <ng-container *ngIf=\"expandedSummary\">\r\n @for (s of items; track s[props.bindValue || 'value']) {\r\n <div class=\"ng-value\">\r\n <span class=\"ng-value-label\">{{ s[props.bindLabel || 'label'] }}</span>\r\n <span class=\"ng-value-icon right\" (click)=\"clear(s)\"><sa-icon icon=\"closeOutlined\"\r\n size=\"11\"></sa-icon></span>\r\n </div>\r\n }\r\n <!-- Collapse button -->\r\n <div class=\"ng-value summary-chip pointer\" (click)=\"toggleSummary()\">\r\n <sa-icon class=\"ng-value-label\" size=\"18\" icon=\"leftChevronCircle\"></sa-icon>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n </ng-template>\r\n\r\n @if(props?.footer){\r\n <ng-template ng-footer-tmp>\r\n <div class=\"dropdown-footer\">{{props?.footer?.description}}</div>\r\n </ng-template>\r\n }\r\n\r\n <ng-template ng-notfound-tmp>\r\n <div class=\"no-results\">\r\n @if (searchValue?.length > 0) {\r\n {{ props?.searchNotFoundText || '\u274C No items match \"' + searchValue + '\"' }}\r\n } @else {\r\n {{ props?.notFoundText || '\u26A0\uFE0F No options available' }}\r\n }\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template ng-loadingtext-tmp>\r\n <div class=\"loading\">\r\n <sa-icon icon=\"loader\" size=\"16\" class=\"loading-spinner\"></sa-icon>\r\n <span>Loading options...</span>\r\n </div>\r\n </ng-template>\r\n</ng-select>", styles: ["::ng-deep .ng-select-custom .search-input-container .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding:var(--small-2px, 2px) var(--small-12px, 12px)}.ng-select-custom .ng-values-list{display:flex;flex-wrap:wrap;gap:var(--small-8px, 8px)}::ng-deep .ng-select-custom.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:none;display:flex;align-items:center;font-size:var(--small-6px, 6px)}::ng-deep .ng-select-custom.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{border-radius:var(--small-4px, 4px);background:var(--grey-50, #F2F4F7);display:flex;padding:.188rem var(--small-8px, 8px) var(--small-2px, 2px) var(--small-8px, 8px);justify-content:center;align-items:center;gap:var(--small-4px, 4px)}.ng-select-custom .option-row{display:flex;width:18.75rem;height:2.5rem;padding:var(--small-12px, 12px);align-items:center;gap:var(--small-8px, 8px);flex-shrink:0}::ng-deep .ng-select-custom .mdc-form-field.mat-internal-form-field{display:flex;gap:var(--small-8px, 8px);align-items:center}::ng-deep .ng-select-custom .mdc-checkbox__ripple{display:none}::ng-deep .ng-select-custom .checkbox-style{display:flex;align-items:center}.ng-select-custom .ng-option input[type=checkbox],.ng-select input[type=checkbox]{accent-color:var(--primary-500);vertical-align:middle;width:var(--small-14px, 14px);height:var(--small-14px, 14px)}::ng-deep .ng-select-custom.ng-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected{background-color:var(--primary-50)}.option-label{color:var(--text-high-emphasis, #1C1B20);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px}::ng-deep .ng-select-custom.ng-select .search-input-container .mat-mdc-form-field{width:-webkit-fill-available}::ng-deep .ng-select-custom .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{background-color:var(--primary-50)}::ng-deep .ng-select-custom.ng-select .ng-arrow-wrapper .ng-arrow{display:none}::ng-deep .ng-select .ng-arrow-wrapper{width:var(--small-12px, 12px);height:var(--small-12px, 12px);display:flex;align-items:center;justify-content:center}::ng-deep .ng-select .ng-arrow-wrapper:after{content:\"\";display:inline-block;width:var(--small-8px, 8px);height:var(--small-12px, 12px);background:url(/assets/upDownChevronOutlined.svg) no-repeat center;background-size:contain}::ng-deep .ng-select-custom.ng-select.ng-select-focused:not(.ng-select-opened)>.ng-select-container{border-color:var(--primary-500);box-shadow:none}::ng-deep .ng-select-custom.ng-select .no-results{padding:.8rem}::ng-deep .ng-select-custom.ng-select .ng-select-container{padding:.23rem var(--small-12px) .2rem var(--small-12px);height:1.875rem;min-height:2.438rem;border:1px solid var(--grey-100, #EAECF0);align-items:center}::ng-deep .ng-select-custom.ng-select .option-label{color:var(--text-highemphasis, #1C1B20);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px}::ng-deep .ng-select-custom.ng-select .ng-value-label{color:var(--text-mediumemphasis, #6D6979);font-family:var(--font-family-roboto);font-size:.688rem;font-style:normal;font-weight:500;line-height:var(--small-16px, 16px);letter-spacing:.5px}::ng-deep .ng-select-custom.ng-select .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--primary-500)}::ng-deep .ng-select-custom.ng-select .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:var(--small-4px, 4px);border-bottom-right-radius:var(--small-4px, 4px);border-bottom-left-radius:0}::ng-deep .ng-select-custom.ng-select.ng-select-single .ng-value-label{color:var(--text-highemphasis);font-family:var(--font-family-roboto);font-size:var(--small-14px);font-style:normal;font-weight:400;line-height:var(--medium-20px);letter-spacing:.25px}::ng-deep .ng-select-custom.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:var(--text-low-emphasis, #9B98A3);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px}::ng-deep .ng-select-custom .search-input-container .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__leading,::ng-deep .ng-select-custom .search-input-container .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__notch,::ng-deep .ng-select-custom .search-input-container .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--grey-100)}.ng-select-custom .searchIcons{color:var(--color-text-neutral-300, #757575)}::ng-deep .ng-select-custom.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon:hover{background-color:var(--primary-50)}::ng-deep .ng-select-custom.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-label{display:flex}::ng-deep .ng-select-custom .loading{color:var(--text-medium-emphasis, #6D6979);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);display:flex;align-items:center;justify-content:center;padding:12px;gap:8px}\n"] }]
|
|
111
|
+
], providers: [IconService], template: "<ng-select [items]=\"filteredOptions\" [multiple]=\"props?.multiple || false\" [bindLabel]=\"props?.bindLabel || 'label'\"\n [closeOnSelect]=\"props?.closeOnSelect ?? true\" [bindValue]=\"props?.bindValue || 'value'\"\n [placeholder]=\"props?.placeholder || 'Select'\" [searchable]=\"false\" [formControl]=\"formControl\"\n [clearable]=\"props?.isClearable\" [appearance]=\"props['appearance'] || 'outline'\" [loading]=\"props?.loading || false\" \n class=\"ng-select-custom\"\n [matTooltip]=\"(!props?.multiple && formControl?.value && ((formControl?.value[props?.bindLabel || 'label']?.length > 50) || (formControl?.value?.length > 50))) ? (formControl?.value[props?.bindLabel || 'label'] || formControl?.value) : ''\"\n matTooltipPosition=\"above\">\n\n @if(!!props?.showSearchBar){\n <ng-template ng-header-tmp>\n <div class=\"search-input-container mat-form-field-density-5\">\n <mat-form-field [appearance]=\"props['appearance'] || 'outline'\" class=\"w-100\">\n <sa-icon icon=\"searchIcon\" class=\"searchIcons\" size=\"20\" matPrefix></sa-icon>\n <input matInput type=\"text\" name=\"menu-search-bar\" class=\"search-input searchIcons\"\n (keyup)=\"onSearch($event)\" (keydown)=\"stopBackspacePropagation($event)\"\n [placeholder]=\"props?.searchPlaceholder || 'Search'\" [(ngModel)]=\"searchValue\" />\n <sa-icon icon=\"closeOutlined\" class=\"pointer searchIcons\" size=\"15\" matSuffix\n (click)=\"clearSearch($event)\"></sa-icon>\n </mat-form-field>\n </div>\n </ng-template>\n }\n <!-- Option template with a checkbox in front of each row -->\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\n <div class=\"option-row\" \n [matTooltip]=\"(item[props.bindLabel || 'label']?.length > 80) ? item[props.bindLabel || 'label'] : ''\" \n matTooltipPosition=\"right\">\n @if(props?.multiple){\n <input type=\"checkbox\" [checked]=\"item$.selected\" tabindex=\"-1\" />\n }\n <span class=\"option-label\">{{ item[props.bindLabel || 'label'] }}</span>\n\n </div>\n </ng-template>\n\n <!-- Single select label template -->\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\n <span class=\"ng-value-label\">\n {{ item[props.bindLabel || 'label'] }}\n </span>\n </ng-template>\n\n <!-- Selected items chip template (optional) -->\n <ng-template ng-multi-label-tmp let-items=\"items\" let-clear=\"clear\">\n <div class=\"chips ng-values-list\">\n\n <!-- If collapsed: show only first 2 + summary -->\n <ng-container *ngIf=\"!expandedSummary\">\n @for (s of items.slice(0, 2); track s[props.bindValue || 'value']) {\n <div class=\"ng-value\" \n [matTooltip]=\"(s[props.bindLabel || 'label']?.length > 30) ? s[props.bindLabel || 'label'] : ''\" \n matTooltipPosition=\"above\">\n <span class=\"ng-value-label\">{{ s[props.bindLabel || 'label'] }}</span>\n <span class=\"ng-value-icon right\" (click)=\"clear(s)\"><sa-icon icon=\"closeOutlined\"\n size=\"11\"></sa-icon></span>\n </div>\n }\n\n @if (items.length > 2) {\n <div class=\"ng-value summary-chip pointer\" \n (click)=\"toggleSummary()\" \n matTooltip=\"Click to expand all selected items\" \n matTooltipPosition=\"above\">\n <span class=\"ng-value-label\">+{{ items.length - 2 }}</span>\n <span class=\"ng-value-icon right\" (click)=\"clearRemaining(items, clear)\"><sa-icon\n icon=\"closeOutlined\" size=\"11\"></sa-icon></span>\n </div>\n }\n </ng-container>\n\n <!-- If expanded: show all items -->\n <ng-container *ngIf=\"expandedSummary\">\n @for (s of items; track s[props.bindValue || 'value']) {\n <div class=\"ng-value\" \n [matTooltip]=\"(s[props.bindLabel || 'label']?.length > 30) ? s[props.bindLabel || 'label'] : ''\" \n matTooltipPosition=\"above\">\n <span class=\"ng-value-label\">{{ s[props.bindLabel || 'label'] }}</span>\n <span class=\"ng-value-icon right\" (click)=\"clear(s)\"><sa-icon icon=\"closeOutlined\"\n size=\"11\"></sa-icon></span>\n </div>\n }\n <!-- Collapse button -->\n <div class=\"ng-value summary-chip pointer\" \n (click)=\"toggleSummary()\" \n matTooltip=\"Click to collapse\" \n matTooltipPosition=\"above\">\n <sa-icon class=\"ng-value-label\" size=\"18\" icon=\"leftChevronCircle\"></sa-icon>\n </div>\n </ng-container>\n\n </div>\n </ng-template>\n\n @if(props?.footer){\n <ng-template ng-footer-tmp>\n <div class=\"dropdown-footer\">{{props?.footer?.description}}</div>\n </ng-template>\n }\n\n <ng-template ng-notfound-tmp>\n <div class=\"no-results\">\n @if (searchValue?.length > 0) {\n {{ props?.searchNotFoundText || '\u274C No items match \"' + searchValue + '\"' }}\n } @else {\n {{ props?.notFoundText || '\u26A0\uFE0F No options available' }}\n }\n </div>\n </ng-template>\n\n <ng-template ng-loadingtext-tmp>\n <div class=\"loading\">\n <sa-icon icon=\"loader\" size=\"16\" class=\"loading-spinner\"></sa-icon>\n <span>Loading options...</span>\n </div>\n </ng-template>\n</ng-select>", styles: ["::ng-deep .ng-select-custom .search-input-container .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding:var(--small-2px, 2px) var(--small-12px, 12px)}.ng-select-custom .ng-values-list{display:flex;flex-wrap:wrap;gap:var(--small-8px, 8px)}::ng-deep .ng-select-custom.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:none;display:flex;align-items:center;font-size:var(--small-6px, 6px)}::ng-deep .ng-select-custom.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{border-radius:var(--small-4px, 4px);background:var(--grey-50, #F2F4F7);display:flex;padding:.188rem var(--small-8px, 8px) var(--small-2px, 2px) var(--small-8px, 8px);justify-content:center;align-items:center;gap:var(--small-4px, 4px)}.ng-select-custom .option-row{display:flex;width:18.75rem;height:2.5rem;padding:var(--small-12px, 12px);align-items:center;gap:var(--small-8px, 8px);flex-shrink:0}::ng-deep .ng-select-custom .mdc-form-field.mat-internal-form-field{display:flex;gap:var(--small-8px, 8px);align-items:center}::ng-deep .ng-select-custom .mdc-checkbox__ripple{display:none}::ng-deep .ng-select-custom .checkbox-style{display:flex;align-items:center}.ng-select-custom .ng-option input[type=checkbox],.ng-select input[type=checkbox]{accent-color:var(--primary-500);vertical-align:middle;width:var(--small-14px, 14px);height:var(--small-14px, 14px)}::ng-deep .ng-select-custom.ng-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected{background-color:var(--primary-50)}.option-label{color:var(--text-high-emphasis, #1C1B20);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px}::ng-deep .ng-select-custom.ng-select .search-input-container .mat-mdc-form-field{width:-webkit-fill-available}::ng-deep .ng-select-custom .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{background-color:var(--primary-50)}::ng-deep .ng-select-custom.ng-select .ng-arrow-wrapper .ng-arrow{display:none}::ng-deep .ng-select .ng-arrow-wrapper{width:var(--small-12px, 12px);height:var(--small-12px, 12px);display:flex;align-items:center;justify-content:center}::ng-deep .ng-select .ng-arrow-wrapper:after{content:\"\";display:inline-block;width:var(--small-8px, 8px);height:var(--small-12px, 12px);background:url(/assets/upDownChevronOutlined.svg) no-repeat center;background-size:contain}::ng-deep .ng-select-custom.ng-select.ng-select-focused:not(.ng-select-opened)>.ng-select-container{border-color:var(--primary-500);box-shadow:none}::ng-deep .ng-select-custom.ng-select .no-results{padding:.8rem}::ng-deep .ng-select-custom.ng-select .ng-select-container{padding:.23rem var(--small-12px) .2rem var(--small-12px);height:1.875rem;min-height:2.438rem;border:1px solid var(--grey-100, #EAECF0);align-items:center}::ng-deep .ng-select-custom.ng-select .option-label{color:var(--text-highemphasis, #1C1B20);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px}::ng-deep .ng-select-custom.ng-select .ng-value-label{color:var(--text-mediumemphasis, #6D6979);font-family:var(--font-family-roboto);font-size:.688rem;font-style:normal;font-weight:500;line-height:var(--small-16px, 16px);letter-spacing:.5px}::ng-deep .ng-select-custom.ng-select .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--primary-500)}::ng-deep .ng-select-custom.ng-select .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:var(--small-4px, 4px);border-bottom-right-radius:var(--small-4px, 4px);border-bottom-left-radius:0}::ng-deep .ng-select-custom.ng-select.ng-select-single .ng-value-label{color:var(--text-highemphasis);font-family:var(--font-family-roboto);font-size:var(--small-14px);font-style:normal;font-weight:400;line-height:var(--medium-20px);letter-spacing:.25px}::ng-deep .ng-select-custom.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:var(--text-low-emphasis, #9B98A3);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);font-style:normal;font-weight:400;line-height:var(--medium-20px, 20px);letter-spacing:.25px}::ng-deep .ng-select-custom .search-input-container .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__leading,::ng-deep .ng-select-custom .search-input-container .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__notch,::ng-deep .ng-select-custom .search-input-container .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--grey-100)}.ng-select-custom .searchIcons{color:var(--color-text-neutral-300, #757575)}::ng-deep .ng-select-custom.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon:hover{background-color:var(--primary-50)}::ng-deep .ng-select-custom.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-label{display:flex}::ng-deep .ng-select-custom .loading{color:var(--text-medium-emphasis, #6D6979);font-family:var(--font-family, Roboto);font-size:var(--small-14px, 14px);display:flex;align-items:center;justify-content:center;padding:12px;gap:8px}\n"] }]
|
|
111
112
|
}] });
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudC1saWJyYXJ5L3NyYy9saWIvZHJvcGRvd24vbmctc2VsZWN0L25nLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2Ryb3Bkb3duL25nLXNlbGVjdC9uZy1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVyxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFtQixNQUFNLGtCQUFrQixDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlD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VyxzUEFDWCxZQUFZLDhCQUNaLGNBQWMsNDdDQUNkLGFBQWEsNk5BQ2Isa0JBQWtCLDJlQUNsQixjQUFjLDBXQUNkLGFBQWEsOEJBQ2IsZUFBZSw4QkFDZixnQkFBZ0IsOEJBQ2hCLHFCQUFxQiw4QkFDckIsbUJBQW1CLDhCQUNuQixtQkFBbUIsOEJBQ25CLGlCQUFpQjs7MkZBTVIsaUJBQWlCO2tCQXhCN0IsU0FBUzsrQkFDRSxjQUFjLGNBQ1osSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixXQUFXO3dCQUNYLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixxQkFBcUI7d0JBQ3JCLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixpQkFBaUI7cUJBQ2xCLGFBQ1UsQ0FBQyxXQUFXLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIERvQ2hlY2sgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZvcm1seU1vZHVsZSB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xyXG5pbXBvcnQgeyBGaWVsZFR5cGUsIEZpZWxkVHlwZUNvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xyXG5pbXBvcnQgeyBOZ1NlbGVjdE1vZHVsZSB9IGZyb20gJ0BuZy1zZWxlY3Qvbmctc2VsZWN0JztcclxuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ljb24vaWNvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJY29uU2VydmljZSB9IGZyb20gJy4uLy4uL2ljb24vaWNvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uLXRvZ2dsZSc7XHJcbmltcG9ydCB7IE1hdERhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcclxuaW1wb3J0IHsgTWF0TmF0aXZlRGF0ZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2Etbmctc2VsZWN0JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIEZvcm1seU1vZHVsZSxcclxuICAgIE5nU2VsZWN0TW9kdWxlLFxyXG4gICAgSWNvbkNvbXBvbmVudCxcclxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuICAgIE1hdElucHV0TW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcclxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Ub2dnbGVNb2R1bGUsXHJcbiAgICBNYXREYXRlcGlja2VyTW9kdWxlLFxyXG4gICAgTWF0TmF0aXZlRGF0ZU1vZHVsZSxcclxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbSWNvblNlcnZpY2VdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9uZy1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9uZy1zZWxlY3QuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIE5nU2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgRmllbGRUeXBlPEZpZWxkVHlwZUNvbmZpZzxhbnk+PiBpbXBsZW1lbnRzIERvQ2hlY2sge1xyXG4gIGZpbHRlcmVkT3B0aW9uczogYW55W107XHJcbiAgc2VhcmNoVmFsdWU6IHN0cmluZyA9ICcnO1xyXG4gIHByaXZhdGUgX29wdGlvbnM6IGFueVtdO1xyXG5cclxuICBvblNlYXJjaChldmVudDogRXZlbnQpIHtcclxuICAgIGNvbnN0IHNlYXJjaFZhbHVlID0gdGhpcy5zZWFyY2hWYWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKTtcclxuICAgIGNvbnN0IGJpbmRMYWJlbCA9IHRoaXMucHJvcHMuYmluZExhYmVsIHx8ICdsYWJlbCc7XHJcblxyXG4gICAgaWYgKCFzZWFyY2hWYWx1ZSkge1xyXG4gICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IFsuLi4odGhpcy5maWVsZC5wcm9wcz8ub3B0aW9ucyB8fCBbXSldO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSAodGhpcy5maWVsZC5wcm9wcz8ub3B0aW9ucyB8fCBbXSkuZmlsdGVyKG9wdCA9PiB7XHJcbiAgICAgIGNvbnN0IGxhYmVsID0gb3B0Py5bYmluZExhYmVsXSA/PyAnJztcclxuICAgICAgcmV0dXJuIFN0cmluZyhsYWJlbCkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hWYWx1ZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMucHJvcHMub3B0aW9ucztcclxuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gWy4uLih0aGlzLnByb3BzLm9wdGlvbnMgfHwgW10pXTtcclxuXHJcbiAgICAvLyBJZiBhIGRlZmF1bHQgdmFsdWUgaXMgcHJvdmlkZWQgaW4gcHJvcHMgYW5kIHRoZSBmb3JtIGNvbnRyb2wgaGFzIG5vIHZhbHVlIHlldCwgc2V0IGl0XHJcbiAgICBjb25zdCBkZWZhdWx0VmFsID0gdGhpcy5wcm9wcz8uZGVmYXVsdFZhbHVlO1xyXG4gICAgaWYgKCh0aGlzLmZvcm1Db250cm9sLnZhbHVlID09PSBudWxsIHx8IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgPT09IHVuZGVmaW5lZCkgJiYgZGVmYXVsdFZhbCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoZGVmYXVsdFZhbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0RvQ2hlY2soKSB7XHJcbiAgICBpZiAodGhpcy5wcm9wcy5vcHRpb25zICE9PSB0aGlzLl9vcHRpb25zKSB7XHJcbiAgICAgIHRoaXMuX29wdGlvbnMgPSB0aGlzLnByb3BzLm9wdGlvbnM7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gWy4uLih0aGlzLl9vcHRpb25zIHx8IFtdKV07XHJcbiAgICAgIHRoaXMuc2VhcmNoVmFsdWUgPSAnJzsgLy8gQ2xlYXIgc2VhcmNoIHZhbHVlIHdoZW4gb3B0aW9ucyBjaGFuZ2VcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuXHJcbiAgLy8gKE9wdGlvbmFsKSBTZWxlY3QvRGVzZWxlY3QgYWxsIGhlbHBlcnNcclxuICBhbGxTZWxlY3RlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLnByb3BzPy5zZWxlY3RlZFZhbHVlcy5sZW5ndGggPT09IHRoaXMuZmllbGQucHJvcHM/Lm9wdGlvbnMubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlU2VsZWN0QWxsKCkge1xyXG4gICAgY29uc3QgYmluZFZhbHVlID0gdGhpcy5wcm9wcy5iaW5kVmFsdWUgfHwgJ3ZhbHVlJztcclxuICAgIGlmICh0aGlzLmFsbFNlbGVjdGVkKCkpIHtcclxuICAgICAgdGhpcy5wcm9wcy5zZWxlY3RlZFZhbHVlcyA9IFtdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wcm9wcy5zZWxlY3RlZFZhbHVlcyA9ICh0aGlzLmZpZWxkLnByb3BzPy5vcHRpb25zIHx8IFtdKS5tYXAobyA9PiBvW2JpbmRWYWx1ZV0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xlYXJSZW1haW5pbmcoaXRlbXM6IGFueVtdLCBjbGVhcjogKGl0ZW06IGFueSkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgLy8gcmVtb3ZlIG9ubHkgdGhlIGl0ZW1zIGFmdGVyIHRoZSBmaXJzdCB0d29cclxuICAgIGl0ZW1zLnNsaWNlKDIpLmZvckVhY2goaXRlbSA9PiBjbGVhcihpdGVtKSk7XHJcbiAgfVxyXG4gIGV4cGFuZGVkU3VtbWFyeSA9IGZhbHNlO1xyXG5cclxuICB0b2dnbGVTdW1tYXJ5KCk6IHZvaWQge1xyXG4gICAgdGhpcy5leHBhbmRlZFN1bW1hcnkgPSAhdGhpcy5leHBhbmRlZFN1bW1hcnk7XHJcbiAgfVxyXG5cclxuICAvLyBUaGlzIG1ldGhvZCB3aWxsIHN0b3AgdGhlIGV2ZW50IGZyb20gYnViYmxpbmcgdXBcclxuICBzdG9wQmFja3NwYWNlUHJvcGFnYXRpb24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmIChldmVudC5rZXkgPT09ICdCYWNrc3BhY2UnIHx8IGV2ZW50LmtleUNvZGUgPT09IDgpIHtcclxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbGVhclNlYXJjaChldmVudDogRXZlbnQpIHtcclxuICAgIHRoaXMuc2VhcmNoVmFsdWUgPSAnJztcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBbLi4udGhpcy5maWVsZC5wcm9wcz8ub3B0aW9uc107XHJcbiAgfVxyXG59XHJcbiIsIjxuZy1zZWxlY3QgW2l0ZW1zXT1cImZpbHRlcmVkT3B0aW9uc1wiIFttdWx0aXBsZV09XCJwcm9wcz8ubXVsdGlwbGUgfHwgZmFsc2VcIiBbYmluZExhYmVsXT1cInByb3BzPy5iaW5kTGFiZWwgfHwgJ2xhYmVsJ1wiXHJcbiAgICBbY2xvc2VPblNlbGVjdF09XCJwcm9wcz8uY2xvc2VPblNlbGVjdCA/PyB0cnVlXCIgW2JpbmRWYWx1ZV09XCJwcm9wcz8uYmluZFZhbHVlIHx8ICd2YWx1ZSdcIlxyXG4gICAgW3BsYWNlaG9sZGVyXT1cInByb3BzPy5wbGFjZWhvbGRlciB8fCAnU2VsZWN0J1wiIFtzZWFyY2hhYmxlXT1cImZhbHNlXCIgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcclxuICAgIFtjbGVhcmFibGVdPVwicHJvcHM/LmlzQ2xlYXJhYmxlXCIgW2FwcGVhcmFuY2VdPVwicHJvcHNbJ2FwcGVhcmFuY2UnXSB8fCAnb3V0bGluZSdcIiBbbG9hZGluZ109XCJwcm9wcz8ubG9hZGluZyB8fCBmYWxzZVwiIGNsYXNzPVwibmctc2VsZWN0LWN1c3RvbVwiPlxyXG5cclxuICAgIEBpZighIXByb3BzPy5zaG93U2VhcmNoQmFyKXtcclxuICAgIDxuZy10ZW1wbGF0ZSBuZy1oZWFkZXItdG1wPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtaW5wdXQtY29udGFpbmVyIG1hdC1mb3JtLWZpZWxkLWRlbnNpdHktNVwiPlxyXG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgW2FwcGVhcmFuY2VdPVwicHJvcHNbJ2FwcGVhcmFuY2UnXSB8fCAnb3V0bGluZSdcIiBjbGFzcz1cInctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICA8c2EtaWNvbiBpY29uPVwic2VhcmNoSWNvblwiIGNsYXNzPVwic2VhcmNoSWNvbnNcIiBzaXplPVwiMjBcIiBtYXRQcmVmaXg+PC9zYS1pY29uPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cIm1lbnUtc2VhcmNoLWJhclwiIGNsYXNzPVwic2VhcmNoLWlucHV0IHNlYXJjaEljb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAoa2V5dXApPVwib25TZWFyY2goJGV2ZW50KVwiIChrZXlkb3duKT1cInN0b3BCYWNrc3BhY2VQcm9wYWdhdGlvbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicHJvcHM/LnNlYXJjaFBsYWNlaG9sZGVyIHx8ICdTZWFyY2gnXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hWYWx1ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8c2EtaWNvbiBpY29uPVwiY2xvc2VPdXRsaW5lZFwiIGNsYXNzPVwicG9pbnRlciBzZWFyY2hJY29uc1wiIHNpemU9XCIxNVwiIG1hdFN1ZmZpeFxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhclNlYXJjaCgkZXZlbnQpXCI+PC9zYS1pY29uPlxyXG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIH1cclxuICAgIDwhLS0gT3B0aW9uIHRlbXBsYXRlIHdpdGggYSBjaGVja2JveCBpbiBmcm9udCBvZiBlYWNoIHJvdyAtLT5cclxuICAgIDxuZy10ZW1wbGF0ZSBuZy1vcHRpb24tdG1wIGxldC1pdGVtPVwiaXRlbVwiIGxldC1pdGVtJD1cIml0ZW0kXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm9wdGlvbi1yb3dcIj5cclxuICAgICAgICAgICAgQGlmKHByb3BzPy5tdWx0aXBsZSl7XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJpdGVtJC5zZWxlY3RlZFwiIHRhYmluZGV4PVwiLTFcIiAvPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3B0aW9uLWxhYmVsXCI+e3sgaXRlbVtwcm9wcy5iaW5kTGFiZWwgfHwgJ2xhYmVsJ10gfX08L3NwYW4+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8IS0tIFNlbGVjdGVkIGl0ZW1zIGNoaXAgdGVtcGxhdGUgKG9wdGlvbmFsKSAtLT5cclxuICAgIDxuZy10ZW1wbGF0ZSBuZy1tdWx0aS1sYWJlbC10bXAgbGV0LWl0ZW1zPVwiaXRlbXNcIiBsZXQtY2xlYXI9XCJjbGVhclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwcyBuZy12YWx1ZXMtbGlzdFwiPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBJZiBjb2xsYXBzZWQ6IHNob3cgb25seSBmaXJzdCAyICsgc3VtbWFyeSAtLT5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFleHBhbmRlZFN1bW1hcnlcIj5cclxuICAgICAgICAgICAgICAgIEBmb3IgKHMgb2YgaXRlbXMuc2xpY2UoMCwgMik7IHRyYWNrIHNbcHJvcHMuYmluZFZhbHVlIHx8ICd2YWx1ZSddKSB7XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmctdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5nLXZhbHVlLWxhYmVsXCI+e3sgc1twcm9wcy5iaW5kTGFiZWwgfHwgJ2xhYmVsJ10gfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuZy12YWx1ZS1pY29uIHJpZ2h0XCIgKGNsaWNrKT1cImNsZWFyKHMpXCI+PHNhLWljb24gaWNvbj1cImNsb3NlT3V0bGluZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIjExXCI+PC9zYS1pY29uPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIEBpZiAoaXRlbXMubGVuZ3RoID4gMikge1xyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5nLXZhbHVlIHN1bW1hcnktY2hpcCBwb2ludGVyXCIgKGNsaWNrKT1cInRvZ2dsZVN1bW1hcnkoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmctdmFsdWUtbGFiZWxcIj4re3sgaXRlbXMubGVuZ3RoIC0gMiB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5nLXZhbHVlLWljb24gcmlnaHRcIiAoY2xpY2spPVwiY2xlYXJSZW1haW5pbmcoaXRlbXMsIGNsZWFyKVwiPjxzYS1pY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiY2xvc2VPdXRsaW5lZFwiIHNpemU9XCIxMVwiPjwvc2EtaWNvbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICA8IS0tIElmIGV4cGFuZGVkOiBzaG93IGFsbCBpdGVtcyAtLT5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4cGFuZGVkU3VtbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgQGZvciAocyBvZiBpdGVtczsgdHJhY2sgc1twcm9wcy5iaW5kVmFsdWUgfHwgJ3ZhbHVlJ10pIHtcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZy12YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmctdmFsdWUtbGFiZWxcIj57eyBzW3Byb3BzLmJpbmRMYWJlbCB8fCAnbGFiZWwnXSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5nLXZhbHVlLWljb24gcmlnaHRcIiAoY2xpY2spPVwiY2xlYXIocylcIj48c2EtaWNvbiBpY29uPVwiY2xvc2VPdXRsaW5lZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwiMTFcIj48L3NhLWljb24+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA8IS0tIENvbGxhcHNlIGJ1dHRvbiAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZy12YWx1ZSBzdW1tYXJ5LWNoaXAgcG9pbnRlclwiIChjbGljayk9XCJ0b2dnbGVTdW1tYXJ5KClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c2EtaWNvbiBjbGFzcz1cIm5nLXZhbHVlLWxhYmVsXCIgc2l6ZT1cIjE4XCIgaWNvbj1cImxlZnRDaGV2cm9uQ2lyY2xlXCI+PC9zYS1pY29uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgQGlmKHByb3BzPy5mb290ZXIpe1xyXG4gICAgPG5nLXRlbXBsYXRlIG5nLWZvb3Rlci10bXA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWZvb3RlclwiPnt7cHJvcHM/LmZvb3Rlcj8uZGVzY3JpcHRpb259fTwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIH1cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgbmctbm90Zm91bmQtdG1wPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJuby1yZXN1bHRzXCI+XHJcbiAgICAgICAgICAgIEBpZiAoc2VhcmNoVmFsdWU/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAge3sgcHJvcHM/LnNlYXJjaE5vdEZvdW5kVGV4dCB8fCAn4p2MIE5vIGl0ZW1zIG1hdGNoIFwiJyArIHNlYXJjaFZhbHVlICsgJ1wiJyB9fVxyXG4gICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAge3sgcHJvcHM/Lm5vdEZvdW5kVGV4dCB8fCAn4pqg77iPIE5vIG9wdGlvbnMgYXZhaWxhYmxlJyB9fVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBuZy1sb2FkaW5ndGV4dC10bXA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImxvYWRpbmdcIj5cclxuICAgICAgICAgICAgPHNhLWljb24gaWNvbj1cImxvYWRlclwiIHNpemU9XCIxNlwiIGNsYXNzPVwibG9hZGluZy1zcGlubmVyXCI+PC9zYS1pY29uPlxyXG4gICAgICAgICAgICA8c3Bhbj5Mb2FkaW5nIG9wdGlvbnMuLi48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L25nLXNlbGVjdD4iXX0=
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudC1saWJyYXJ5L3NyYy9saWIvZHJvcGRvd24vbmctc2VsZWN0L25nLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2Ryb3Bkb3duL25nLXNlbGVjdC9uZy1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVyxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFtQixNQUFNLGtCQUFrQixDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlD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QVcsc1BBQ1gsWUFBWSw4QkFDWixjQUFjLGtoREFDZCxhQUFhLDZOQUNiLGtCQUFrQiwyZUFDbEIsY0FBYywwV0FDZCxhQUFhLDhCQUNiLGVBQWUsOEJBQ2YsZ0JBQWdCLDRUQUNoQixxQkFBcUIsOEJBQ3JCLG1CQUFtQiw4QkFDbkIsbUJBQW1CLDhCQUNuQixpQkFBaUI7OzJGQU1SLGlCQUFpQjtrQkF4QjdCLFNBQVM7K0JBQ0UsY0FBYyxjQUNaLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsV0FBVzt3QkFDWCxZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixrQkFBa0I7d0JBQ2xCLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIscUJBQXFCO3dCQUNyQixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsaUJBQWlCO3FCQUNsQixhQUNVLENBQUMsV0FBVyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBEb0NoZWNrIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGb3JtbHlNb2R1bGUgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IEZpZWxkVHlwZSwgRmllbGRUeXBlQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBOZ1NlbGVjdE1vZHVsZSB9IGZyb20gJ0BuZy1zZWxlY3Qvbmctc2VsZWN0JztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9pY29uL2ljb24uY29tcG9uZW50JztcbmltcG9ydCB7IEljb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaWNvbi9pY29uLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Ub2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24tdG9nZ2xlJztcbmltcG9ydCB7IE1hdERhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IE1hdE5hdGl2ZURhdGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzYS1uZy1zZWxlY3QnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgRm9ybWx5TW9kdWxlLFxuICAgIE5nU2VsZWN0TW9kdWxlLFxuICAgIEljb25Db21wb25lbnQsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlLFxuICAgIE1hdERhdGVwaWNrZXJNb2R1bGUsXG4gICAgTWF0TmF0aXZlRGF0ZU1vZHVsZSxcbiAgICBNYXRDaGVja2JveE1vZHVsZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbSWNvblNlcnZpY2VdLFxuICB0ZW1wbGF0ZVVybDogJy4vbmctc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL25nLXNlbGVjdC5jb21wb25lbnQuY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBOZ1NlbGVjdENvbXBvbmVudCBleHRlbmRzIEZpZWxkVHlwZTxGaWVsZFR5cGVDb25maWc8YW55Pj4gaW1wbGVtZW50cyBEb0NoZWNrIHtcbiAgZmlsdGVyZWRPcHRpb25zOiBhbnlbXTtcbiAgc2VhcmNoVmFsdWU6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIF9vcHRpb25zOiBhbnlbXTtcblxuICBvblNlYXJjaChldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCBzZWFyY2hWYWx1ZSA9IHRoaXMuc2VhcmNoVmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgYmluZExhYmVsID0gdGhpcy5wcm9wcy5iaW5kTGFiZWwgfHwgJ2xhYmVsJztcblxuICAgIGlmICghc2VhcmNoVmFsdWUpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gWy4uLih0aGlzLmZpZWxkLnByb3BzPy5vcHRpb25zIHx8IFtdKV07XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSAodGhpcy5maWVsZC5wcm9wcz8ub3B0aW9ucyB8fCBbXSkuZmlsdGVyKG9wdCA9PiB7XG4gICAgICBjb25zdCBsYWJlbCA9IG9wdD8uW2JpbmRMYWJlbF0gPz8gJyc7XG4gICAgICByZXR1cm4gU3RyaW5nKGxhYmVsKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX29wdGlvbnMgPSB0aGlzLnByb3BzLm9wdGlvbnM7XG4gICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBbLi4uKHRoaXMucHJvcHMub3B0aW9ucyB8fCBbXSldO1xuXG4gICAgLy8gSWYgYSBkZWZhdWx0IHZhbHVlIGlzIHByb3ZpZGVkIGluIHByb3BzIGFuZCB0aGUgZm9ybSBjb250cm9sIGhhcyBubyB2YWx1ZSB5ZXQsIHNldCBpdFxuICAgIGNvbnN0IGRlZmF1bHRWYWwgPSB0aGlzLnByb3BzPy5kZWZhdWx0VmFsdWU7XG4gICAgaWYgKCh0aGlzLmZvcm1Db250cm9sLnZhbHVlID09PSBudWxsIHx8IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgPT09IHVuZGVmaW5lZCkgJiYgZGVmYXVsdFZhbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKGRlZmF1bHRWYWwpO1xuICAgIH1cbiAgfVxuXG4gIG5nRG9DaGVjaygpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5vcHRpb25zICE9PSB0aGlzLl9vcHRpb25zKSB7XG4gICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5wcm9wcy5vcHRpb25zO1xuICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBbLi4uKHRoaXMuX29wdGlvbnMgfHwgW10pXTtcbiAgICAgIHRoaXMuc2VhcmNoVmFsdWUgPSAnJzsgLy8gQ2xlYXIgc2VhcmNoIHZhbHVlIHdoZW4gb3B0aW9ucyBjaGFuZ2VcbiAgICB9XG4gIH1cblxuXG5cbiAgLy8gKE9wdGlvbmFsKSBTZWxlY3QvRGVzZWxlY3QgYWxsIGhlbHBlcnNcbiAgYWxsU2VsZWN0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHM/LnNlbGVjdGVkVmFsdWVzLmxlbmd0aCA9PT0gdGhpcy5maWVsZC5wcm9wcz8ub3B0aW9ucy5sZW5ndGg7XG4gIH1cblxuICB0b2dnbGVTZWxlY3RBbGwoKSB7XG4gICAgY29uc3QgYmluZFZhbHVlID0gdGhpcy5wcm9wcy5iaW5kVmFsdWUgfHwgJ3ZhbHVlJztcbiAgICBpZiAodGhpcy5hbGxTZWxlY3RlZCgpKSB7XG4gICAgICB0aGlzLnByb3BzLnNlbGVjdGVkVmFsdWVzID0gW107XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHJvcHMuc2VsZWN0ZWRWYWx1ZXMgPSAodGhpcy5maWVsZC5wcm9wcz8ub3B0aW9ucyB8fCBbXSkubWFwKG8gPT4gb1tiaW5kVmFsdWVdKTtcbiAgICB9XG4gIH1cblxuICBjbGVhclJlbWFpbmluZyhpdGVtczogYW55W10sIGNsZWFyOiAoaXRlbTogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgLy8gcmVtb3ZlIG9ubHkgdGhlIGl0ZW1zIGFmdGVyIHRoZSBmaXJzdCB0d29cbiAgICBpdGVtcy5zbGljZSgyKS5mb3JFYWNoKGl0ZW0gPT4gY2xlYXIoaXRlbSkpO1xuICB9XG4gIGV4cGFuZGVkU3VtbWFyeSA9IGZhbHNlO1xuXG4gIHRvZ2dsZVN1bW1hcnkoKTogdm9pZCB7XG4gICAgdGhpcy5leHBhbmRlZFN1bW1hcnkgPSAhdGhpcy5leHBhbmRlZFN1bW1hcnk7XG4gIH1cblxuICAvLyBUaGlzIG1ldGhvZCB3aWxsIHN0b3AgdGhlIGV2ZW50IGZyb20gYnViYmxpbmcgdXBcbiAgc3RvcEJhY2tzcGFjZVByb3BhZ2F0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0JhY2tzcGFjZScgfHwgZXZlbnQua2V5Q29kZSA9PT0gOCkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJTZWFyY2goZXZlbnQ6IEV2ZW50KSB7XG4gICAgdGhpcy5zZWFyY2hWYWx1ZSA9ICcnO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gWy4uLnRoaXMuZmllbGQucHJvcHM/Lm9wdGlvbnNdO1xuICB9XG59XG4iLCI8bmctc2VsZWN0IFtpdGVtc109XCJmaWx0ZXJlZE9wdGlvbnNcIiBbbXVsdGlwbGVdPVwicHJvcHM/Lm11bHRpcGxlIHx8IGZhbHNlXCIgW2JpbmRMYWJlbF09XCJwcm9wcz8uYmluZExhYmVsIHx8ICdsYWJlbCdcIlxuICAgIFtjbG9zZU9uU2VsZWN0XT1cInByb3BzPy5jbG9zZU9uU2VsZWN0ID8/IHRydWVcIiBbYmluZFZhbHVlXT1cInByb3BzPy5iaW5kVmFsdWUgfHwgJ3ZhbHVlJ1wiXG4gICAgW3BsYWNlaG9sZGVyXT1cInByb3BzPy5wbGFjZWhvbGRlciB8fCAnU2VsZWN0J1wiIFtzZWFyY2hhYmxlXT1cImZhbHNlXCIgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICBbY2xlYXJhYmxlXT1cInByb3BzPy5pc0NsZWFyYWJsZVwiIFthcHBlYXJhbmNlXT1cInByb3BzWydhcHBlYXJhbmNlJ10gfHwgJ291dGxpbmUnXCIgW2xvYWRpbmddPVwicHJvcHM/LmxvYWRpbmcgfHwgZmFsc2VcIiBcbiAgICBjbGFzcz1cIm5nLXNlbGVjdC1jdXN0b21cIlxuICAgIFttYXRUb29sdGlwXT1cIighcHJvcHM/Lm11bHRpcGxlICYmIGZvcm1Db250cm9sPy52YWx1ZSAmJiAoKGZvcm1Db250cm9sPy52YWx1ZVtwcm9wcz8uYmluZExhYmVsIHx8ICdsYWJlbCddPy5sZW5ndGggPiA1MCkgfHwgKGZvcm1Db250cm9sPy52YWx1ZT8ubGVuZ3RoID4gNTApKSkgPyAoZm9ybUNvbnRyb2w/LnZhbHVlW3Byb3BzPy5iaW5kTGFiZWwgfHwgJ2xhYmVsJ10gfHwgZm9ybUNvbnRyb2w/LnZhbHVlKSA6ICcnXCJcbiAgICBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiPlxuXG4gICAgQGlmKCEhcHJvcHM/LnNob3dTZWFyY2hCYXIpe1xuICAgIDxuZy10ZW1wbGF0ZSBuZy1oZWFkZXItdG1wPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWlucHV0LWNvbnRhaW5lciBtYXQtZm9ybS1maWVsZC1kZW5zaXR5LTVcIj5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBbYXBwZWFyYW5jZV09XCJwcm9wc1snYXBwZWFyYW5jZSddIHx8ICdvdXRsaW5lJ1wiIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgICA8c2EtaWNvbiBpY29uPVwic2VhcmNoSWNvblwiIGNsYXNzPVwic2VhcmNoSWNvbnNcIiBzaXplPVwiMjBcIiBtYXRQcmVmaXg+PC9zYS1pY29uPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJtZW51LXNlYXJjaC1iYXJcIiBjbGFzcz1cInNlYXJjaC1pbnB1dCBzZWFyY2hJY29uc1wiXG4gICAgICAgICAgICAgICAgICAgIChrZXl1cCk9XCJvblNlYXJjaCgkZXZlbnQpXCIgKGtleWRvd24pPVwic3RvcEJhY2tzcGFjZVByb3BhZ2F0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicHJvcHM/LnNlYXJjaFBsYWNlaG9sZGVyIHx8ICdTZWFyY2gnXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hWYWx1ZVwiIC8+XG4gICAgICAgICAgICAgICAgPHNhLWljb24gaWNvbj1cImNsb3NlT3V0bGluZWRcIiBjbGFzcz1cInBvaW50ZXIgc2VhcmNoSWNvbnNcIiBzaXplPVwiMTVcIiBtYXRTdWZmaXhcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyU2VhcmNoKCRldmVudClcIj48L3NhLWljb24+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIH1cbiAgICA8IS0tIE9wdGlvbiB0ZW1wbGF0ZSB3aXRoIGEgY2hlY2tib3ggaW4gZnJvbnQgb2YgZWFjaCByb3cgLS0+XG4gICAgPG5nLXRlbXBsYXRlIG5nLW9wdGlvbi10bXAgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWl0ZW0kPVwiaXRlbSRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm9wdGlvbi1yb3dcIiBcbiAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCIoaXRlbVtwcm9wcy5iaW5kTGFiZWwgfHwgJ2xhYmVsJ10/Lmxlbmd0aCA+IDgwKSA/IGl0ZW1bcHJvcHMuYmluZExhYmVsIHx8ICdsYWJlbCddIDogJydcIiBcbiAgICAgICAgICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJyaWdodFwiPlxuICAgICAgICAgICAgQGlmKHByb3BzPy5tdWx0aXBsZSl7XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwiaXRlbSQuc2VsZWN0ZWRcIiB0YWJpbmRleD1cIi0xXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3B0aW9uLWxhYmVsXCI+e3sgaXRlbVtwcm9wcy5iaW5kTGFiZWwgfHwgJ2xhYmVsJ10gfX08L3NwYW4+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDwhLS0gU2luZ2xlIHNlbGVjdCBsYWJlbCB0ZW1wbGF0ZSAtLT5cbiAgICA8bmctdGVtcGxhdGUgbmctbGFiZWwtdG1wIGxldC1pdGVtPVwiaXRlbVwiIGxldC1jbGVhcj1cImNsZWFyXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibmctdmFsdWUtbGFiZWxcIj5cbiAgICAgICAgICAgIHt7IGl0ZW1bcHJvcHMuYmluZExhYmVsIHx8ICdsYWJlbCddIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPCEtLSBTZWxlY3RlZCBpdGVtcyBjaGlwIHRlbXBsYXRlIChvcHRpb25hbCkgLS0+XG4gICAgPG5nLXRlbXBsYXRlIG5nLW11bHRpLWxhYmVsLXRtcCBsZXQtaXRlbXM9XCJpdGVtc1wiIGxldC1jbGVhcj1cImNsZWFyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwcyBuZy12YWx1ZXMtbGlzdFwiPlxuXG4gICAgICAgICAgICA8IS0tIElmIGNvbGxhcHNlZDogc2hvdyBvbmx5IGZpcnN0IDIgKyBzdW1tYXJ5IC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFleHBhbmRlZFN1bW1hcnlcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChzIG9mIGl0ZW1zLnNsaWNlKDAsIDIpOyB0cmFjayBzW3Byb3BzLmJpbmRWYWx1ZSB8fCAndmFsdWUnXSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZy12YWx1ZVwiIFxuICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiKHNbcHJvcHMuYmluZExhYmVsIHx8ICdsYWJlbCddPy5sZW5ndGggPiAzMCkgPyBzW3Byb3BzLmJpbmRMYWJlbCB8fCAnbGFiZWwnXSA6ICcnXCIgXG4gICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5nLXZhbHVlLWxhYmVsXCI+e3sgc1twcm9wcy5iaW5kTGFiZWwgfHwgJ2xhYmVsJ10gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmctdmFsdWUtaWNvbiByaWdodFwiIChjbGljayk9XCJjbGVhcihzKVwiPjxzYS1pY29uIGljb249XCJjbG9zZU91dGxpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwiMTFcIj48L3NhLWljb24+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIEBpZiAoaXRlbXMubGVuZ3RoID4gMikge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZy12YWx1ZSBzdW1tYXJ5LWNoaXAgcG9pbnRlclwiIFxuICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVN1bW1hcnkoKVwiIFxuICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkNsaWNrIHRvIGV4cGFuZCBhbGwgc2VsZWN0ZWQgaXRlbXNcIiBcbiAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmctdmFsdWUtbGFiZWxcIj4re3sgaXRlbXMubGVuZ3RoIC0gMiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuZy12YWx1ZS1pY29uIHJpZ2h0XCIgKGNsaWNrKT1cImNsZWFyUmVtYWluaW5nKGl0ZW1zLCBjbGVhcilcIj48c2EtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJjbG9zZU91dGxpbmVkXCIgc2l6ZT1cIjExXCI+PC9zYS1pY29uPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPCEtLSBJZiBleHBhbmRlZDogc2hvdyBhbGwgaXRlbXMgLS0+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXhwYW5kZWRTdW1tYXJ5XCI+XG4gICAgICAgICAgICAgICAgQGZvciAocyBvZiBpdGVtczsgdHJhY2sgc1twcm9wcy5iaW5kVmFsdWUgfHwgJ3ZhbHVlJ10pIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmctdmFsdWVcIiBcbiAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIihzW3Byb3BzLmJpbmRMYWJlbCB8fCAnbGFiZWwnXT8ubGVuZ3RoID4gMzApID8gc1twcm9wcy5iaW5kTGFiZWwgfHwgJ2xhYmVsJ10gOiAnJ1wiIFxuICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuZy12YWx1ZS1sYWJlbFwiPnt7IHNbcHJvcHMuYmluZExhYmVsIHx8ICdsYWJlbCddIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5nLXZhbHVlLWljb24gcmlnaHRcIiAoY2xpY2spPVwiY2xlYXIocylcIj48c2EtaWNvbiBpY29uPVwiY2xvc2VPdXRsaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIjExXCI+PC9zYS1pY29uPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPCEtLSBDb2xsYXBzZSBidXR0b24gLS0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5nLXZhbHVlIHN1bW1hcnktY2hpcCBwb2ludGVyXCIgXG4gICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU3VtbWFyeSgpXCIgXG4gICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiQ2xpY2sgdG8gY29sbGFwc2VcIiBcbiAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzYS1pY29uIGNsYXNzPVwibmctdmFsdWUtbGFiZWxcIiBzaXplPVwiMThcIiBpY29uPVwibGVmdENoZXZyb25DaXJjbGVcIj48L3NhLWljb24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgQGlmKHByb3BzPy5mb290ZXIpe1xuICAgIDxuZy10ZW1wbGF0ZSBuZy1mb290ZXItdG1wPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tZm9vdGVyXCI+e3twcm9wcz8uZm9vdGVyPy5kZXNjcmlwdGlvbn19PC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICB9XG5cbiAgICA8bmctdGVtcGxhdGUgbmctbm90Zm91bmQtdG1wPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibm8tcmVzdWx0c1wiPlxuICAgICAgICAgICAgQGlmIChzZWFyY2hWYWx1ZT8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAge3sgcHJvcHM/LnNlYXJjaE5vdEZvdW5kVGV4dCB8fCAn4p2MIE5vIGl0ZW1zIG1hdGNoIFwiJyArIHNlYXJjaFZhbHVlICsgJ1wiJyB9fVxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICB7eyBwcm9wcz8ubm90Rm91bmRUZXh0IHx8ICfimqDvuI8gTm8gb3B0aW9ucyBhdmFpbGFibGUnIH19XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgbmctbG9hZGluZ3RleHQtdG1wPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibG9hZGluZ1wiPlxuICAgICAgICAgICAgPHNhLWljb24gaWNvbj1cImxvYWRlclwiIHNpemU9XCIxNlwiIGNsYXNzPVwibG9hZGluZy1zcGlubmVyXCI+PC9zYS1pY29uPlxuICAgICAgICAgICAgPHNwYW4+TG9hZGluZyBvcHRpb25zLi4uPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9uZy1zZWxlY3Q+Il19
|