@fundamental-ngx/platform 0.52.2-rc.2 → 0.52.2-rc.21

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.
Files changed (25) hide show
  1. package/esm2022/form/multi-combobox/commons/base-multi-combobox.mjs +9 -3
  2. package/esm2022/icon-tab-bar/components/icon-tab-bar-base.class.mjs +2 -2
  3. package/esm2022/smart-filter-bar/smart-filter-bar.component.mjs +3 -3
  4. package/esm2022/table/components/table-cell-header-popover/table-cell-header-popover.component.mjs +18 -4
  5. package/esm2022/table/components/table-header-cell-content/table-header-cell-content.component.mjs +4 -4
  6. package/esm2022/table/components/table-toolbar/table-toolbar.component.mjs +3 -3
  7. package/esm2022/table/table.component.mjs +5 -6
  8. package/esm2022/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +2 -1
  9. package/esm2022/variant-management/variant-management.component.mjs +3 -3
  10. package/fesm2022/fundamental-ngx-platform-form.mjs +8 -3
  11. package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
  12. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs +1 -1
  13. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs.map +1 -1
  14. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +2 -2
  15. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
  16. package/fesm2022/fundamental-ngx-platform-table.mjs +25 -11
  17. package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
  18. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +1 -0
  19. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
  20. package/fesm2022/fundamental-ngx-platform-variant-management.mjs +2 -2
  21. package/fesm2022/fundamental-ngx-platform-variant-management.mjs.map +1 -1
  22. package/form/multi-combobox/commons/base-multi-combobox.d.ts +10 -3
  23. package/package.json +4 -4
  24. package/schematics/ng-add/index.js +1 -1
  25. package/table/components/table-cell-header-popover/table-cell-header-popover.component.d.ts +4 -1
@@ -183,7 +183,7 @@ export class VariantManagementComponent {
183
183
  provide: FDP_VARIANT_MANAGEMENT,
184
184
  useExisting: VariantManagementComponent
185
185
  }
186
- ], queries: [{ propertyName: "dirtyLabel", first: true, predicate: VariantManagementDirtyLabelDirective, descendants: true }], viewQueries: [{ propertyName: "_popover", first: true, predicate: ["popover"], descendants: true }], ngImport: i0, template: "@if (activeVariant) {\n <fd-popover\n #popover\n placement=\"bottom\"\n [noArrow]=\"false\"\n [focusAutoCapture]=\"true\"\n [focusTrapped]=\"true\"\n additionalBodyClass=\"fd-variant-management__popover-body\"\n [triggers]=\"popoverTriggers\"\n >\n <fd-popover-control>\n <div class=\"fd-variant-management__header\">\n <h4\n fd-title\n [ngClass]=\"{\n 'fd-variant-management__title': true,\n 'fd-variant-management__title--dynamic-page': _dynamicPage,\n 'fd-variant-management__title--dynamic-page--collapsed': _dynamicPageCollapsed$ | async\n }\"\n [headerSize]=\"headerSize\"\n >\n {{ activeVariant.name }}\n </h4>\n @if (_variantChanged && !readonly) {\n <span\n class=\"fd-variant-management__dirty-indicator\"\n [class.fd-variant-management__dirty-indicator--custom]=\"!!dirtyLabel\"\n >\n <ng-template #defaultDirtyIndicator>*</ng-template>\n <ng-template\n [ngTemplateOutlet]=\"dirtyLabel ? dirtyLabel.templateRef : defaultDirtyIndicator\"\n ></ng-template>\n </span>\n }\n <button fd-button [fdMenu]=\"true\" fdType=\"transparent\" [attr.aria-haspopup]=\"true\"></button>\n </div>\n </fd-popover-control>\n <fd-popover-body>\n <div fd-popover-body-header>\n <div fd-bar [barDesign]=\"displaySearch ? 'header-with-subheader' : 'header'\">\n <div fd-bar-left>\n <fd-bar-element>\n <h5 fd-title>{{ 'platformVariantManagement.myViews' | fdTranslate }}</h5>\n </fd-bar-element>\n </div>\n </div>\n @if (displaySearch) {\n <div fd-bar barDesign=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <fdp-search-field\n [placeholder]=\"'platformVariantManagement.search' | fdTranslate\"\n (searchSubmit)=\"_onSearchSubmit($event)\"\n (cancelSearch)=\"_cancelSearch()\"\n [disableRefresh]=\"true\"\n ></fdp-search-field>\n </fd-bar-element>\n </div>\n </div>\n }\n </div>\n <ul fd-list>\n @for (\n variant of _variants | fdFilterStrings: { searchTerm: _filterPhrase, key: 'name' };\n track variant.id\n ) {\n <li fd-list-item (click)=\"selectVariant(variant)\">\n <span fd-list-link>\n <span fd-list-title>{{ variant.name }}</span>\n </span>\n </li>\n }\n </ul>\n @if (!readonly) {\n <div fd-popover-body-footer>\n <div fd-bar barDesign=\"footer\">\n <div fd-bar-right>\n @if (!activeVariant.readonly && _variantChanged) {\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformVariantManagement.save' | fdTranslate\"\n (click)=\"saveCurrentVariant()\"\n >\n </fd-button-bar>\n }\n <fd-button-bar\n [fdType]=\"activeVariant.readonly || !_variantChanged ? 'emphasized' : 'transparent'\"\n [label]=\"'platformVariantManagement.saveAs' | fdTranslate\"\n (click)=\"_openSaveDialog()\"\n ></fd-button-bar>\n <fd-button-bar\n [label]=\"'platformVariantManagement.manage' | fdTranslate\"\n (click)=\"_openManageDialog()\"\n ></fd-button-bar>\n </div>\n </div>\n </div>\n }\n </fd-popover-body>\n </fd-popover>\n}\n", styles: [".fd-variant-management{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-variant-management:after,.fd-variant-management:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-variant-management__header{-webkit-box-sizing:border-box;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;gap:.125rem;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-variant-management__header:after,.fd-variant-management__header:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-variant-management .fd-variant-management__title{--fdTitle_Color:var(--fdVariantManagementHeadingColor)}.fd-variant-management .fd-variant-management__title.is-hover,.fd-variant-management .fd-variant-management__title:hover{--fdTitle_Color:var(--fdVariantManagementHeadingHoverColor)}.fd-variant-management .fd-variant-management__title.is-active,.fd-variant-management .fd-variant-management__title:active{--fdTitle_Color:var(--fdVariantManagementHeadingActiveColor)}.fd-variant-management .fd-variant-management__title.is-disabled,.fd-variant-management .fd-variant-management__title:disabled,.fd-variant-management .fd-variant-management__title[aria-disabled=true]{--fdTitle_Color:var(--sapGroup_TitleTextColor);cursor:default}.fd-variant-management .fd-variant-management__title--object-header{--fdTitle_Font_Size:var(--sapObjectHeader_Title_FontSize);--fdTitle_Font_Family:var(--sapObjectHeader_Title_FontFamily)}.fd-variant-management .fd-variant-management__title--snapped-object-header{--fdTitle_Font_Size:var(--sapObjectHeader_Title_SnappedFontSize);--fdTitle_Font_Family:var(--sapObjectHeader_Title_FontFamily)}.fd-variant-management .fd-variant-management__title--table{--fdTitle_Font_Size:var(--sapGroup_Title_FontSize)}.fd-variant-management__dirty-indicator{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapGroup_TitleTextColor);display:inline-block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;font-weight:700;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-variant-management__dirty-indicator:after,.fd-variant-management__dirty-indicator:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-variant-management__dirty-indicator--custom{font-size:var(--sapFontSmallSize)}.fd-variant-management__favourite-state{color:var(--sapContent_NonInteractiveIconColor);cursor:pointer}.fd-variant-management__favourite-state--active{color:var(--sapContent_MarkerIconColor)}.fd-variant-management__centered-checkbox{-webkit-box-pack:center;-ms-flex-pack:center;display:-webkit-box;display:-ms-flexbox;display:flex;justify-content:center}\n/*!\n * Fundamental Library Styles v0.37.7\n * Copyright (c) 2024 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */\n"], dependencies: [{ kind: "component", type: PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "component", type: PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "directive", type: PopoverBodyHeaderDirective, selector: "[fdPopoverBodyHeader], [fd-popover-body-header]" }, { kind: "component", type: BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth"] }, { kind: "component", type: SearchFieldComponent, selector: "fdp-search-field", inputs: ["categoryMode", "appearance", "placeholder", "mobile", "mobileConfig", "disableRefresh", "disableSearch", "suggestions", "dataSource", "inputText", "categories", "currentCategory", "categoryLabel", "hideCategoryLabel", "isLoading", "forceSearchButton", "disableSuggestionsFoundAnnouncer"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange"] }, { kind: "component", type: ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "component", type: ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id"], outputs: ["keyDown"] }, { kind: "directive", type: ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated", "focusable"] }, { kind: "directive", type: ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: PopoverBodyFooterDirective, selector: "[fdPopoverBodyFooter], [fd-popover-body-footer]" }, { kind: "directive", type: BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }, { kind: "pipe", type: FilterStringsPipe, name: "fdFilterStrings" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
186
+ ], queries: [{ propertyName: "dirtyLabel", first: true, predicate: VariantManagementDirtyLabelDirective, descendants: true }], viewQueries: [{ propertyName: "_popover", first: true, predicate: ["popover"], descendants: true }], ngImport: i0, template: "@if (activeVariant) {\n <fd-popover\n #popover\n placement=\"bottom\"\n [noArrow]=\"false\"\n [focusAutoCapture]=\"true\"\n [focusTrapped]=\"true\"\n additionalBodyClass=\"fd-variant-management__popover-body\"\n [triggers]=\"popoverTriggers\"\n >\n <fd-popover-control>\n <div class=\"fd-variant-management__header\">\n <h4\n fd-title\n [ngClass]=\"{\n 'fd-variant-management__title': true,\n 'fd-variant-management__title--dynamic-page': _dynamicPage,\n 'fd-variant-management__title--dynamic-page--collapsed': _dynamicPageCollapsed$ | async\n }\"\n [headerSize]=\"headerSize\"\n >\n {{ activeVariant.name }}\n </h4>\n @if (_variantChanged && !readonly) {\n <span\n class=\"fd-variant-management__dirty-indicator\"\n [class.fd-variant-management__dirty-indicator--custom]=\"!!dirtyLabel\"\n >\n <ng-template #defaultDirtyIndicator>*</ng-template>\n <ng-template\n [ngTemplateOutlet]=\"dirtyLabel ? dirtyLabel.templateRef : defaultDirtyIndicator\"\n ></ng-template>\n </span>\n }\n <button fd-button [fdMenu]=\"true\" fdType=\"transparent\" [attr.aria-haspopup]=\"true\"></button>\n </div>\n </fd-popover-control>\n <fd-popover-body>\n <div fd-popover-body-header>\n <div fd-bar [barDesign]=\"displaySearch ? 'header-with-subheader' : 'header'\">\n <div fd-bar-left>\n <fd-bar-element>\n <h5 fd-title>{{ 'platformVariantManagement.myViews' | fdTranslate }}</h5>\n </fd-bar-element>\n </div>\n </div>\n @if (displaySearch) {\n <div fd-bar barDesign=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <fdp-search-field\n [placeholder]=\"'platformVariantManagement.search' | fdTranslate\"\n (searchSubmit)=\"_onSearchSubmit($event)\"\n (cancelSearch)=\"_cancelSearch()\"\n [disableRefresh]=\"true\"\n ></fdp-search-field>\n </fd-bar-element>\n </div>\n </div>\n }\n </div>\n <ul fd-list>\n @for (\n variant of _variants | fdFilterStrings: { searchTerm: _filterPhrase, key: 'name' };\n track variant.id\n ) {\n <li fd-list-item [selected]=\"variant.name === activeVariant.name\" (click)=\"selectVariant(variant)\">\n <span fd-list-link>\n <span fd-list-title>{{ variant.name }}</span>\n </span>\n </li>\n }\n </ul>\n @if (!readonly) {\n <div fd-popover-body-footer>\n <div fd-bar barDesign=\"footer\">\n <div fd-bar-right>\n @if (!activeVariant.readonly && _variantChanged) {\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformVariantManagement.save' | fdTranslate\"\n (click)=\"saveCurrentVariant()\"\n >\n </fd-button-bar>\n }\n <fd-button-bar\n [fdType]=\"activeVariant.readonly || !_variantChanged ? 'emphasized' : 'transparent'\"\n [label]=\"'platformVariantManagement.saveAs' | fdTranslate\"\n (click)=\"_openSaveDialog()\"\n ></fd-button-bar>\n <fd-button-bar\n [label]=\"'platformVariantManagement.manage' | fdTranslate\"\n (click)=\"_openManageDialog()\"\n ></fd-button-bar>\n </div>\n </div>\n </div>\n }\n </fd-popover-body>\n </fd-popover>\n}\n", styles: [".fd-variant-management{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-variant-management:after,.fd-variant-management:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-variant-management__header{-webkit-box-sizing:border-box;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;gap:.125rem;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-variant-management__header:after,.fd-variant-management__header:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-variant-management .fd-variant-management__title{--fdTitle_Color:var(--fdVariantManagementHeadingColor)}.fd-variant-management .fd-variant-management__title.is-hover,.fd-variant-management .fd-variant-management__title:hover{--fdTitle_Color:var(--fdVariantManagementHeadingHoverColor)}.fd-variant-management .fd-variant-management__title.is-active,.fd-variant-management .fd-variant-management__title:active{--fdTitle_Color:var(--fdVariantManagementHeadingActiveColor)}.fd-variant-management .fd-variant-management__title.is-disabled,.fd-variant-management .fd-variant-management__title:disabled,.fd-variant-management .fd-variant-management__title[aria-disabled=true]{--fdTitle_Color:var(--sapGroup_TitleTextColor);cursor:default}.fd-variant-management .fd-variant-management__title--object-header{--fdTitle_Font_Size:var(--sapObjectHeader_Title_FontSize);--fdTitle_Font_Family:var(--sapObjectHeader_Title_FontFamily)}.fd-variant-management .fd-variant-management__title--snapped-object-header{--fdTitle_Font_Size:var(--sapObjectHeader_Title_SnappedFontSize);--fdTitle_Font_Family:var(--sapObjectHeader_Title_FontFamily)}.fd-variant-management .fd-variant-management__title--table{--fdTitle_Font_Size:var(--sapGroup_Title_FontSize)}.fd-variant-management__dirty-indicator{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapGroup_TitleTextColor);display:inline-block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;font-weight:700;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-variant-management__dirty-indicator:after,.fd-variant-management__dirty-indicator:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-variant-management__dirty-indicator--custom{font-size:var(--sapFontSmallSize)}.fd-variant-management__favourite-state{color:var(--sapContent_NonInteractiveIconColor);cursor:pointer}.fd-variant-management__favourite-state--active{color:var(--sapContent_MarkerIconColor)}.fd-variant-management__centered-checkbox{-webkit-box-pack:center;-ms-flex-pack:center;display:-webkit-box;display:-ms-flexbox;display:flex;justify-content:center}\n/*!\n * Fundamental Library Styles v0.37.7\n * Copyright (c) 2024 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */\n"], dependencies: [{ kind: "component", type: PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "component", type: PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "directive", type: PopoverBodyHeaderDirective, selector: "[fdPopoverBodyHeader], [fd-popover-body-header]" }, { kind: "component", type: BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth"] }, { kind: "component", type: SearchFieldComponent, selector: "fdp-search-field", inputs: ["categoryMode", "appearance", "placeholder", "mobile", "mobileConfig", "disableRefresh", "disableSearch", "suggestions", "dataSource", "inputText", "categories", "currentCategory", "categoryLabel", "hideCategoryLabel", "isLoading", "forceSearchButton", "disableSuggestionsFoundAnnouncer"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange"] }, { kind: "component", type: ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "component", type: ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id"], outputs: ["keyDown"] }, { kind: "directive", type: ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated", "focusable"] }, { kind: "directive", type: ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: PopoverBodyFooterDirective, selector: "[fdPopoverBodyFooter], [fd-popover-body-footer]" }, { kind: "directive", type: BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }, { kind: "pipe", type: FilterStringsPipe, name: "fdFilterStrings" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
187
187
  }
188
188
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: VariantManagementComponent, decorators: [{
189
189
  type: Component,
@@ -215,7 +215,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
215
215
  AsyncPipe,
216
216
  NgClass,
217
217
  ButtonComponent
218
- ], template: "@if (activeVariant) {\n <fd-popover\n #popover\n placement=\"bottom\"\n [noArrow]=\"false\"\n [focusAutoCapture]=\"true\"\n [focusTrapped]=\"true\"\n additionalBodyClass=\"fd-variant-management__popover-body\"\n [triggers]=\"popoverTriggers\"\n >\n <fd-popover-control>\n <div class=\"fd-variant-management__header\">\n <h4\n fd-title\n [ngClass]=\"{\n 'fd-variant-management__title': true,\n 'fd-variant-management__title--dynamic-page': _dynamicPage,\n 'fd-variant-management__title--dynamic-page--collapsed': _dynamicPageCollapsed$ | async\n }\"\n [headerSize]=\"headerSize\"\n >\n {{ activeVariant.name }}\n </h4>\n @if (_variantChanged && !readonly) {\n <span\n class=\"fd-variant-management__dirty-indicator\"\n [class.fd-variant-management__dirty-indicator--custom]=\"!!dirtyLabel\"\n >\n <ng-template #defaultDirtyIndicator>*</ng-template>\n <ng-template\n [ngTemplateOutlet]=\"dirtyLabel ? dirtyLabel.templateRef : defaultDirtyIndicator\"\n ></ng-template>\n </span>\n }\n <button fd-button [fdMenu]=\"true\" fdType=\"transparent\" [attr.aria-haspopup]=\"true\"></button>\n </div>\n </fd-popover-control>\n <fd-popover-body>\n <div fd-popover-body-header>\n <div fd-bar [barDesign]=\"displaySearch ? 'header-with-subheader' : 'header'\">\n <div fd-bar-left>\n <fd-bar-element>\n <h5 fd-title>{{ 'platformVariantManagement.myViews' | fdTranslate }}</h5>\n </fd-bar-element>\n </div>\n </div>\n @if (displaySearch) {\n <div fd-bar barDesign=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <fdp-search-field\n [placeholder]=\"'platformVariantManagement.search' | fdTranslate\"\n (searchSubmit)=\"_onSearchSubmit($event)\"\n (cancelSearch)=\"_cancelSearch()\"\n [disableRefresh]=\"true\"\n ></fdp-search-field>\n </fd-bar-element>\n </div>\n </div>\n }\n </div>\n <ul fd-list>\n @for (\n variant of _variants | fdFilterStrings: { searchTerm: _filterPhrase, key: 'name' };\n track variant.id\n ) {\n <li fd-list-item (click)=\"selectVariant(variant)\">\n <span fd-list-link>\n <span fd-list-title>{{ variant.name }}</span>\n </span>\n </li>\n }\n </ul>\n @if (!readonly) {\n <div fd-popover-body-footer>\n <div fd-bar barDesign=\"footer\">\n <div fd-bar-right>\n @if (!activeVariant.readonly && _variantChanged) {\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformVariantManagement.save' | fdTranslate\"\n (click)=\"saveCurrentVariant()\"\n >\n </fd-button-bar>\n }\n <fd-button-bar\n [fdType]=\"activeVariant.readonly || !_variantChanged ? 'emphasized' : 'transparent'\"\n [label]=\"'platformVariantManagement.saveAs' | fdTranslate\"\n (click)=\"_openSaveDialog()\"\n ></fd-button-bar>\n <fd-button-bar\n [label]=\"'platformVariantManagement.manage' | fdTranslate\"\n (click)=\"_openManageDialog()\"\n ></fd-button-bar>\n </div>\n </div>\n </div>\n }\n </fd-popover-body>\n </fd-popover>\n}\n", styles: [".fd-variant-management{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-variant-management:after,.fd-variant-management:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-variant-management__header{-webkit-box-sizing:border-box;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;gap:.125rem;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-variant-management__header:after,.fd-variant-management__header:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-variant-management .fd-variant-management__title{--fdTitle_Color:var(--fdVariantManagementHeadingColor)}.fd-variant-management .fd-variant-management__title.is-hover,.fd-variant-management .fd-variant-management__title:hover{--fdTitle_Color:var(--fdVariantManagementHeadingHoverColor)}.fd-variant-management .fd-variant-management__title.is-active,.fd-variant-management .fd-variant-management__title:active{--fdTitle_Color:var(--fdVariantManagementHeadingActiveColor)}.fd-variant-management .fd-variant-management__title.is-disabled,.fd-variant-management .fd-variant-management__title:disabled,.fd-variant-management .fd-variant-management__title[aria-disabled=true]{--fdTitle_Color:var(--sapGroup_TitleTextColor);cursor:default}.fd-variant-management .fd-variant-management__title--object-header{--fdTitle_Font_Size:var(--sapObjectHeader_Title_FontSize);--fdTitle_Font_Family:var(--sapObjectHeader_Title_FontFamily)}.fd-variant-management .fd-variant-management__title--snapped-object-header{--fdTitle_Font_Size:var(--sapObjectHeader_Title_SnappedFontSize);--fdTitle_Font_Family:var(--sapObjectHeader_Title_FontFamily)}.fd-variant-management .fd-variant-management__title--table{--fdTitle_Font_Size:var(--sapGroup_Title_FontSize)}.fd-variant-management__dirty-indicator{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapGroup_TitleTextColor);display:inline-block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;font-weight:700;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-variant-management__dirty-indicator:after,.fd-variant-management__dirty-indicator:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-variant-management__dirty-indicator--custom{font-size:var(--sapFontSmallSize)}.fd-variant-management__favourite-state{color:var(--sapContent_NonInteractiveIconColor);cursor:pointer}.fd-variant-management__favourite-state--active{color:var(--sapContent_MarkerIconColor)}.fd-variant-management__centered-checkbox{-webkit-box-pack:center;-ms-flex-pack:center;display:-webkit-box;display:-ms-flexbox;display:flex;justify-content:center}\n/*!\n * Fundamental Library Styles v0.37.7\n * Copyright (c) 2024 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */\n"] }]
218
+ ], template: "@if (activeVariant) {\n <fd-popover\n #popover\n placement=\"bottom\"\n [noArrow]=\"false\"\n [focusAutoCapture]=\"true\"\n [focusTrapped]=\"true\"\n additionalBodyClass=\"fd-variant-management__popover-body\"\n [triggers]=\"popoverTriggers\"\n >\n <fd-popover-control>\n <div class=\"fd-variant-management__header\">\n <h4\n fd-title\n [ngClass]=\"{\n 'fd-variant-management__title': true,\n 'fd-variant-management__title--dynamic-page': _dynamicPage,\n 'fd-variant-management__title--dynamic-page--collapsed': _dynamicPageCollapsed$ | async\n }\"\n [headerSize]=\"headerSize\"\n >\n {{ activeVariant.name }}\n </h4>\n @if (_variantChanged && !readonly) {\n <span\n class=\"fd-variant-management__dirty-indicator\"\n [class.fd-variant-management__dirty-indicator--custom]=\"!!dirtyLabel\"\n >\n <ng-template #defaultDirtyIndicator>*</ng-template>\n <ng-template\n [ngTemplateOutlet]=\"dirtyLabel ? dirtyLabel.templateRef : defaultDirtyIndicator\"\n ></ng-template>\n </span>\n }\n <button fd-button [fdMenu]=\"true\" fdType=\"transparent\" [attr.aria-haspopup]=\"true\"></button>\n </div>\n </fd-popover-control>\n <fd-popover-body>\n <div fd-popover-body-header>\n <div fd-bar [barDesign]=\"displaySearch ? 'header-with-subheader' : 'header'\">\n <div fd-bar-left>\n <fd-bar-element>\n <h5 fd-title>{{ 'platformVariantManagement.myViews' | fdTranslate }}</h5>\n </fd-bar-element>\n </div>\n </div>\n @if (displaySearch) {\n <div fd-bar barDesign=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <fdp-search-field\n [placeholder]=\"'platformVariantManagement.search' | fdTranslate\"\n (searchSubmit)=\"_onSearchSubmit($event)\"\n (cancelSearch)=\"_cancelSearch()\"\n [disableRefresh]=\"true\"\n ></fdp-search-field>\n </fd-bar-element>\n </div>\n </div>\n }\n </div>\n <ul fd-list>\n @for (\n variant of _variants | fdFilterStrings: { searchTerm: _filterPhrase, key: 'name' };\n track variant.id\n ) {\n <li fd-list-item [selected]=\"variant.name === activeVariant.name\" (click)=\"selectVariant(variant)\">\n <span fd-list-link>\n <span fd-list-title>{{ variant.name }}</span>\n </span>\n </li>\n }\n </ul>\n @if (!readonly) {\n <div fd-popover-body-footer>\n <div fd-bar barDesign=\"footer\">\n <div fd-bar-right>\n @if (!activeVariant.readonly && _variantChanged) {\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformVariantManagement.save' | fdTranslate\"\n (click)=\"saveCurrentVariant()\"\n >\n </fd-button-bar>\n }\n <fd-button-bar\n [fdType]=\"activeVariant.readonly || !_variantChanged ? 'emphasized' : 'transparent'\"\n [label]=\"'platformVariantManagement.saveAs' | fdTranslate\"\n (click)=\"_openSaveDialog()\"\n ></fd-button-bar>\n <fd-button-bar\n [label]=\"'platformVariantManagement.manage' | fdTranslate\"\n (click)=\"_openManageDialog()\"\n ></fd-button-bar>\n </div>\n </div>\n </div>\n }\n </fd-popover-body>\n </fd-popover>\n}\n", styles: [".fd-variant-management{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-variant-management:after,.fd-variant-management:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-variant-management__header{-webkit-box-sizing:border-box;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;gap:.125rem;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-variant-management__header:after,.fd-variant-management__header:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-variant-management .fd-variant-management__title{--fdTitle_Color:var(--fdVariantManagementHeadingColor)}.fd-variant-management .fd-variant-management__title.is-hover,.fd-variant-management .fd-variant-management__title:hover{--fdTitle_Color:var(--fdVariantManagementHeadingHoverColor)}.fd-variant-management .fd-variant-management__title.is-active,.fd-variant-management .fd-variant-management__title:active{--fdTitle_Color:var(--fdVariantManagementHeadingActiveColor)}.fd-variant-management .fd-variant-management__title.is-disabled,.fd-variant-management .fd-variant-management__title:disabled,.fd-variant-management .fd-variant-management__title[aria-disabled=true]{--fdTitle_Color:var(--sapGroup_TitleTextColor);cursor:default}.fd-variant-management .fd-variant-management__title--object-header{--fdTitle_Font_Size:var(--sapObjectHeader_Title_FontSize);--fdTitle_Font_Family:var(--sapObjectHeader_Title_FontFamily)}.fd-variant-management .fd-variant-management__title--snapped-object-header{--fdTitle_Font_Size:var(--sapObjectHeader_Title_SnappedFontSize);--fdTitle_Font_Family:var(--sapObjectHeader_Title_FontFamily)}.fd-variant-management .fd-variant-management__title--table{--fdTitle_Font_Size:var(--sapGroup_Title_FontSize)}.fd-variant-management__dirty-indicator{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapGroup_TitleTextColor);display:inline-block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;font-weight:700;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-variant-management__dirty-indicator:after,.fd-variant-management__dirty-indicator:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-variant-management__dirty-indicator--custom{font-size:var(--sapFontSmallSize)}.fd-variant-management__favourite-state{color:var(--sapContent_NonInteractiveIconColor);cursor:pointer}.fd-variant-management__favourite-state--active{color:var(--sapContent_MarkerIconColor)}.fd-variant-management__centered-checkbox{-webkit-box-pack:center;-ms-flex-pack:center;display:-webkit-box;display:-ms-flexbox;display:flex;justify-content:center}\n/*!\n * Fundamental Library Styles v0.37.7\n * Copyright (c) 2024 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */\n"] }]
219
219
  }], ctorParameters: () => [{ type: i1.DialogService }, { type: i0.ChangeDetectorRef }], propDecorators: { variants: [{
220
220
  type: Input
221
221
  }], headerSize: [{
@@ -244,4 +244,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
244
244
  type: HostBinding,
245
245
  args: ['class']
246
246
  }] } });
247
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFudC1tYW5hZ2VtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdmFyaWFudC1tYW5hZ2VtZW50L3ZhcmlhbnQtbWFuYWdlbWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3ZhcmlhbnQtbWFuYWdlbWVudC92YXJpYW50LW1hbmFnZW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixNQUFNLEVBQ04sTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBWSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pFLE9BQU8sRUFDSCxZQUFZLEVBQ1osbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ3JCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RCxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JILE9BQU8sRUFDSCxvQkFBb0IsRUFDcEIsMEJBQTBCLEVBQzFCLDBC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VUFBVTtzQkFEVCxZQUFZO3VCQUFDLG9DQUFvQztnQkFLbEQsUUFBUTtzQkFEUCxTQUFTO3VCQUFDLFNBQVM7Z0JBS0gsYUFBYTtzQkFEN0IsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIGVmZmVjdCxcbiAgICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWx0ZXJTdHJpbmdzUGlwZSwgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQge1xuICAgIEJhckNvbXBvbmVudCxcbiAgICBCYXJFbGVtZW50RGlyZWN0aXZlLFxuICAgIEJhckxlZnREaXJlY3RpdmUsXG4gICAgQmFyUmlnaHREaXJlY3RpdmUsXG4gICAgQnV0dG9uQmFyQ29tcG9uZW50XG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9iYXInO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RpYWxvZyc7XG5pbXBvcnQgeyBEeW5hbWljUGFnZSwgRkRfRFlOQU1JQ19QQUdFIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2R5bmFtaWMtcGFnZSc7XG5pbXBvcnQgeyBMaXN0Q29tcG9uZW50LCBMaXN0SXRlbUNvbXBvbmVudCwgTGlzdExpbmtEaXJlY3RpdmUsIExpc3RUaXRsZURpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9saXN0JztcbmltcG9ydCB7XG4gICAgUG9wb3ZlckJvZHlDb21wb25lbnQsXG4gICAgUG9wb3ZlckJvZHlGb290ZXJEaXJlY3RpdmUsXG4gICAgUG9wb3ZlckJvZHlIZWFkZXJEaXJlY3RpdmUsXG4gICAgUG9wb3ZlckNvbXBvbmVudCxcbiAgICBQb3BvdmVyQ29udHJvbENvbXBvbmVudCxcbiAgICBUcmlnZ2VyQ29uZmlnXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9wb3BvdmVyJztcbmltcG9ydCB7IEhlYWRlclNpemVzLCBUaXRsZUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90aXRsZSc7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgRkRQX0RZTkFNSUNfUEFHRSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vZHluYW1pYy1wYWdlJztcbmltcG9ydCB7IFNlYXJjaEZpZWxkQ29tcG9uZW50LCBTZWFyY2hJbnB1dCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2VhcmNoLWZpZWxkJztcbmltcG9ydCBlcXVhbCBmcm9tICdmYXN0LWRlZXAtZXF1YWwnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNYW5hZ2VWYXJpYW50SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9tYW5hZ2UtdmFyaWFudC1pdGVtL21hbmFnZS12YXJpYW50LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IE1hbmFnZVZhcmlhbnRzRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL21hbmFnZS12YXJpYW50cy1kaWFsb2cvbWFuYWdlLXZhcmlhbnRzLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmFyaWFudE1hbmFnZW1lbnREaXJ0eUxhYmVsRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3ZhcmlhbnQtbWFuYWdlbWVudC1kaXJ0eS1sYWJlbC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU2F2ZURpYWxvZ0NvbnRleHQgfSBmcm9tICcuL21vZGVscy9zYXZlLWRpYWxvZy5tb2RlbCc7XG5pbXBvcnQgeyBWYXJpYW50TWFuYWdlbWVudCB9IGZyb20gJy4vbW9kZWxzL3ZhcmlhbnQtbWFuYWdlbWVudCc7XG5pbXBvcnQgeyBOZXdWYXJpYW50LCBWYXJpYW50IH0gZnJvbSAnLi9tb2RlbHMvdmFyaWFudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRkRQX1ZBUklBTlRfTUFOQUdFTUVOVCB9IGZyb20gJy4vdG9rZW5zJztcbmltcG9ydCB7IFZhcmlhbnRJdGVtIH0gZnJvbSAnLi92YXJpYW50LWl0ZW0uY2xhc3MnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC12YXJpYW50LW1hbmFnZW1lbnQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi92YXJpYW50LW1hbmFnZW1lbnQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi92YXJpYW50LW1hbmFnZW1lbnQuY29tcG9uZW50LnNjc3MnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEUF9WQVJJQU5UX01BTkFHRU1FTlQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogVmFyaWFudE1hbmFnZW1lbnRDb21wb25lbnRcbiAgICAgICAgfVxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIFBvcG92ZXJDb21wb25lbnQsXG4gICAgICAgIFBvcG92ZXJDb250cm9sQ29tcG9uZW50LFxuICAgICAgICBUaXRsZUNvbXBvbmVudCxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgUG9wb3ZlckJvZHlDb21wb25lbnQsXG4gICAgICAgIFBvcG92ZXJCb2R5SGVhZGVyRGlyZWN0aXZlLFxuICAgICAgICBCYXJDb21wb25lbnQsXG4gICAgICAgIEJhckxlZnREaXJlY3RpdmUsXG4gICAgICAgIEJhckVsZW1lbnREaXJlY3RpdmUsXG4gICAgICAgIFNlYXJjaEZpZWxkQ29tcG9uZW50LFxuICAgICAgICBMaXN0Q29tcG9uZW50LFxuICAgICAgICBMaXN0SXRlbUNvbXBvbmVudCxcbiAgICAgICAgTGlzdExpbmtEaXJlY3RpdmUsXG4gICAgICAgIExpc3RUaXRsZURpcmVjdGl2ZSxcbiAgICAgICAgUG9wb3ZlckJvZHlGb290ZXJEaXJlY3RpdmUsXG4gICAgICAgIEJhclJpZ2h0RGlyZWN0aXZlLFxuICAgICAgICBCdXR0b25CYXJDb21wb25lbnQsXG4gICAgICAgIEZkVHJhbnNsYXRlUGlwZSxcbiAgICAgICAgRmlsdGVyU3RyaW5nc1BpcGUsXG4gICAgICAgIEFzeW5jUGlwZSxcbiAgICAgICAgTmdDbGFzcyxcbiAgICAgICAgQnV0dG9uQ29tcG9uZW50XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBWYXJpYW50TWFuYWdlbWVudENvbXBvbmVudDxUID0gYW55PiBpbXBsZW1lbnRzIFZhcmlhbnRNYW5hZ2VtZW50PFQ+IHtcbiAgICAvKiogSW5pdGlhbCB2YXJpYW50cyBhcnJheS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB2YXJpYW50cyhpdGVtczogVmFyaWFudDxUPltdKSB7XG4gICAgICAgIHRoaXMuX3ZhcmlhbnRzID0gdGhpcy5fdHJhbnNmb3JtVmFyaWFudHMoaXRlbXMpO1xuXG4gICAgICAgIGxldCBjdXJyZW50VmFyaWFudEluZGV4ID0gdGhpcy5fdmFyaWFudHMuZmluZEluZGV4KCh2YXJpYW50KSA9PiB2YXJpYW50LmlzRGVmYXVsdCk7XG4gICAgICAgIGN1cnJlbnRWYXJpYW50SW5kZXggPSBjdXJyZW50VmFyaWFudEluZGV4ID4gLTEgPyBjdXJyZW50VmFyaWFudEluZGV4IDogMDtcbiAgICAgICAgY29uc3QgY3VycmVudFZhcmlhbnQgPSB0aGlzLl92YXJpYW50c1tjdXJyZW50VmFyaWFudEluZGV4XTtcbiAgICAgICAgdGhpcy5zZWxlY3RWYXJpYW50KGN1cnJlbnRWYXJpYW50IGFzIFZhcmlhbnRJdGVtKTtcbiAgICB9XG5cbiAgICAvKiogSGVhZGVyIHNpemUuICovXG4gICAgQElucHV0KClcbiAgICBoZWFkZXJTaXplOiBIZWFkZXJTaXplcyA9IDQ7XG5cbiAgICAvKiogUG9wb3ZlciB0cmlnZ2VyIGV2ZW50cy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHBvcG92ZXJUcmlnZ2VyczogKHN0cmluZyB8IFRyaWdnZXJDb25maWcpW10gPSBbXG4gICAgICAgIHsgdHJpZ2dlcjogJ2NsaWNrJywgc3RvcFByb3BhZ2F0aW9uOiB0cnVlLCBjbG9zZUFjdGlvbjogdHJ1ZSwgb3BlbkFjdGlvbjogdHJ1ZSB9XG4gICAgXTtcblxuICAgIC8qKiBVc2VyJ3MgbmFtZSB3aGljaCB3aWxsIGJlIGFwcGxpZWQgdG8gYWxsIG5ldyB2YXJpYW50cyB1c2VyIGNyZWF0ZXMuICovXG4gICAgQElucHV0KClcbiAgICB1c2VyTmFtZTogc3RyaW5nO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gZGlzcGxheSBzZWFyY2ggZmllbGQgZm9yIHZhcmlhbnRzIGxpc3QuICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgZGlzcGxheVNlYXJjaCA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHZhcmlhbnQgbWFuYWdlbWVudCBjb21wb25lbnQgaXMgaW4gcmVhZG9ubHkgbW9kZS4gKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICByZWFkb25seSA9IGZhbHNlO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB2YXJpYW50cyBkYXRhIGhhcyBiZWVuIHVwZGF0ZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgdmFyaWFudHNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFZhcmlhbnQ8VD5bXT4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gbmV3IHZhcmlhbnQgc2VsZWN0ZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgYWN0aXZlVmFyaWFudENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VmFyaWFudDxUPj4oKTtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBkaXJ0eSBsYWJlbCBkaXJlY3RpdmUuXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZChWYXJpYW50TWFuYWdlbWVudERpcnR5TGFiZWxEaXJlY3RpdmUpXG4gICAgZGlydHlMYWJlbDogVmFyaWFudE1hbmFnZW1lbnREaXJ0eUxhYmVsRGlyZWN0aXZlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdwb3BvdmVyJylcbiAgICBfcG9wb3ZlcjogUG9wb3ZlckNvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgcHJpdmF0ZSByZWFkb25seSBfaW5pdGlhbENsYXNzID0gJ2ZkLXZhcmlhbnQtbWFuYWdlbWVudCc7XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIGludGVybmFsbHkgZm9yIGNvbW11bmljYXRpbmcgd2l0aCB3cmFwcGVyIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBhY3RpdmVWYXJpYW50Q2hhbmdlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VmFyaWFudDxUPiB8IG51bGw+KG51bGwpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdmFyaWFudENoYW5nZWQgPSBmYWxzZTtcblxuICAgIC8qKiBTZWxlY3RlZCB2YXJpYW50LiAqL1xuICAgIGFjdGl2ZVZhcmlhbnQhOiBWYXJpYW50SXRlbTxUPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3ZhcmlhbnRzOiBWYXJpYW50SXRlbTxUPltdID0gW107XG5cbiAgICAvKiogQEhpZGRlbiAqL1xuICAgIF9maWx0ZXJQaHJhc2U6IE51bGxhYmxlPHN0cmluZz4gPSBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2R5bmFtaWNQYWdlKCk6IER5bmFtaWNQYWdlIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb3JlRHluYW1pY1BhZ2UgfHwgdGhpcy5fcGxhdGZvcm1EeW5hbWljUGFnZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfZHluYW1pY1BhZ2VDb2xsYXBzZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfY29yZUR5bmFtaWNQYWdlID0gaW5qZWN0KEZEX0RZTkFNSUNfUEFHRSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfcGxhdGZvcm1EeW5hbWljUGFnZSA9IGluamVjdChGRFBfRFlOQU1JQ19QQUdFLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICAgIC8qKiBASGlkZGVuICovXG4gICAgcHJpdmF0ZSBfb3JpZ2luYWxBY3RpdmVWYXJpYW50OiBWYXJpYW50SXRlbTxUPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2RpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHtcbiAgICAgICAgaWYgKHRoaXMuX2R5bmFtaWNQYWdlKSB7XG4gICAgICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2R5bmFtaWNQYWdlQ29sbGFwc2VkJC5uZXh0KHRoaXMuX2R5bmFtaWNQYWdlIS5jb2xsYXBzZWQoKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1hbnVhbGx5IHNlbGVjdCB2YXJpYW50LlxuICAgICAqIEBwYXJhbSB2YXJpYW50IFZhcmlhbnQgdG8gc2VsZWN0LlxuICAgICAqL1xuICAgIHNlbGVjdFZhcmlhbnQodmFyaWFudDogVmFyaWFudEl0ZW08VD4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdmFyaWFudENoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5hY3RpdmVWYXJpYW50ID0gdmFyaWFudDtcbiAgICAgICAgdGhpcy5fb3JpZ2luYWxBY3RpdmVWYXJpYW50ID0gdmFyaWFudC5jbG9uZSh7fSwgZmFsc2UpO1xuICAgICAgICB0aGlzLmFjdGl2ZVZhcmlhbnRDaGFuZ2UuZW1pdCh2YXJpYW50KTtcbiAgICAgICAgdGhpcy5hY3RpdmVWYXJpYW50Q2hhbmdlU3ViamVjdC5uZXh0KHZhcmlhbnQpO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIG9yaWdpbmFsIHZhcmlhbnQgZGF0YS4gKi9cbiAgICBnZXRPcmlnaW5hbEFjdGl2ZVZhcmlhbnREYXRhKCk6IFZhcmlhbnQ8VD5bJ2RhdGEnXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcmlnaW5hbEFjdGl2ZVZhcmlhbnQuZGF0YTtcbiAgICB9XG5cbiAgICAvKiogUmV0dXJucyBjdXJyZW50IGFjdGl2ZSB2YXJpYW50IGRhdGEgd2l0aCBhcHBsaWVkIGNoYW5nZXMuICovXG4gICAgZ2V0QWN0aXZlVmFyaWFudERhdGEoKTogVmFyaWFudDxUPlsnZGF0YSddIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlVmFyaWFudC5kYXRhO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNhdmVzIGN1cnJlbnQgdmFyaWFudCB3aXRoIGl0cyBjb25maWd1cmF0aW9uLlxuICAgICAqL1xuICAgIHNhdmVDdXJyZW50VmFyaWFudCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXJyZW50VmFyaWFudEluZGV4ID0gdGhpcy5fdmFyaWFudHMuZmluZEluZGV4KCh2YXJpYW50KSA9PiB2YXJpYW50LmlkID09PSB0aGlzLmFjdGl2ZVZhcmlhbnQuaWQpO1xuICAgICAgICB0aGlzLl92YXJpYW50c1tjdXJyZW50VmFyaWFudEluZGV4XSA9IHRoaXMuYWN0aXZlVmFyaWFudDtcbiAgICAgICAgdGhpcy5fb3JpZ2luYWxBY3RpdmVWYXJpYW50ID0gdGhpcy5hY3RpdmVWYXJpYW50LmNsb25lKHt9LCBmYWxzZSk7XG4gICAgICAgIHRoaXMuX3ZhcmlhbnRDaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMudmFyaWFudHNDaGFuZ2UuZW1pdCh0aGlzLl92YXJpYW50cyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb3BlblNhdmVEaWFsb2coKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcG9wb3Zlcj8uY2xvc2UoZmFsc2UpO1xuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLl9kaWFsb2dTZXJ2aWNlLm9wZW48U2F2ZURpYWxvZ0NvbnRleHQ+KE1hbmFnZVZhcmlhbnRJdGVtQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgZXhpc3RpbmdWYXJpYW50TmFtZXM6IHRoaXMuX3ZhcmlhbnRzLm1hcCgodmFyaWFudCkgPT4gdmFyaWFudC5uYW1lKSxcbiAgICAgICAgICAgICAgICBjdXJyZW50VmFyaWFudE5hbWU6IHRoaXMuYWN0aXZlVmFyaWFudC5uYW1lXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IChyZXN1bHQ6IE5ld1ZhcmlhbnQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdWYXJpYW50ID0gdGhpcy5hY3RpdmVWYXJpYW50LmNsb25lKHsgLi4ucmVzdWx0LCAuLi57IGNyZWF0ZWRCeTogdGhpcy51c2VyTmFtZSB9IH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuX3ZhcmlhbnRzLnB1c2gobmV3VmFyaWFudCk7XG4gICAgICAgICAgICAgICAgdGhpcy52YXJpYW50c0NoYW5nZS5lbWl0KHRoaXMuX3ZhcmlhbnRzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZVZhcmlhbnQgPSBuZXdWYXJpYW50O1xuICAgICAgICAgICAgICAgIHRoaXMuX3ZhcmlhbnRDaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogKCkgPT4ge31cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyBjdXJyZW50IGFjdGl2ZSBwcmVzZXQgd2l0aCBuZXcgY29uZmlndXJhdGlvbi5cbiAgICAgKiBAcGFyYW0gcHJlc2V0IFByZXNldCBjb25maWd1cmF0aW9uLlxuICAgICAqIEBwYXJhbSBjb21wb25lbnROYW1lIGNvbXBvbmVudCB0byB3aGljaCB0aGlzIHByZXNldCBiZWxvbmdzIHRvLlxuICAgICAqL1xuICAgIHVwZGF0ZUFjdGl2ZVByZXNldChwcmVzZXQ6IFQsIGNvbXBvbmVudE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBhY3RpdmVWYXJpYW50RGF0YSA9IHRoaXMuX29yaWdpbmFsQWN0aXZlVmFyaWFudC5kYXRhW2NvbXBvbmVudE5hbWVdO1xuICAgICAgICB0aGlzLl92YXJpYW50Q2hhbmdlZCA9IGFjdGl2ZVZhcmlhbnREYXRhICYmICFlcXVhbChwcmVzZXQsIGFjdGl2ZVZhcmlhbnREYXRhKTtcbiAgICAgICAgdGhpcy5hY3RpdmVWYXJpYW50LmRhdGFbY29tcG9uZW50TmFtZV0gPSBwcmVzZXQ7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb3Blbk1hbmFnZURpYWxvZygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9wb3BvdmVyPy5jbG9zZShmYWxzZSk7XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuX2RpYWxvZ1NlcnZpY2Uub3BlbjxWYXJpYW50SXRlbVtdPihNYW5hZ2VWYXJpYW50c0RpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgZGF0YTogdGhpcy5fdmFyaWFudHNcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiAodmFyaWFudHM6IFZhcmlhbnRJdGVtW10pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl92YXJpYW50cyA9IHZhcmlhbnRzO1xuICAgICAgICAgICAgICAgIHRoaXMudmFyaWFudHNDaGFuZ2UuZW1pdCh0aGlzLl92YXJpYW50cyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyb3I6ICgpID0+IHt9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uU2VhcmNoU3VibWl0KHNlYXJjaDogU2VhcmNoSW5wdXQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZmlsdGVyUGhyYXNlID0gc2VhcmNoLnRleHQ7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY2FuY2VsU2VhcmNoKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9maWx0ZXJQaHJhc2UgPSBudWxsO1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBASGlkZGVuICovXG4gICAgX3RyYWNrRm4oaW5kZXg6IG51bWJlciwgaXRlbTogVmFyaWFudEl0ZW08VD4pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gaXRlbS5pZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3RyYW5zZm9ybVZhcmlhbnRzKGl0ZW1zOiBWYXJpYW50PFQ+W10pOiBWYXJpYW50SXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zLm1hcCgodmFyaWFudCkgPT4gbmV3IFZhcmlhbnRJdGVtKHZhcmlhbnQpKTtcbiAgICB9XG59XG4iLCJAaWYgKGFjdGl2ZVZhcmlhbnQpIHtcbiAgICA8ZmQtcG9wb3ZlclxuICAgICAgICAjcG9wb3ZlclxuICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICBbbm9BcnJvd109XCJmYWxzZVwiXG4gICAgICAgIFtmb2N1c0F1dG9DYXB0dXJlXT1cInRydWVcIlxuICAgICAgICBbZm9jdXNUcmFwcGVkXT1cInRydWVcIlxuICAgICAgICBhZGRpdGlvbmFsQm9keUNsYXNzPVwiZmQtdmFyaWFudC1tYW5hZ2VtZW50X19wb3BvdmVyLWJvZHlcIlxuICAgICAgICBbdHJpZ2dlcnNdPVwicG9wb3ZlclRyaWdnZXJzXCJcbiAgICA+XG4gICAgICAgIDxmZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtdmFyaWFudC1tYW5hZ2VtZW50X19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8aDRcbiAgICAgICAgICAgICAgICAgICAgZmQtdGl0bGVcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZkLXZhcmlhbnQtbWFuYWdlbWVudF9fdGl0bGUnOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZkLXZhcmlhbnQtbWFuYWdlbWVudF9fdGl0bGUtLWR5bmFtaWMtcGFnZSc6IF9keW5hbWljUGFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdmZC12YXJpYW50LW1hbmFnZW1lbnRfX3RpdGxlLS1keW5hbWljLXBhZ2UtLWNvbGxhcHNlZCc6IF9keW5hbWljUGFnZUNvbGxhcHNlZCQgfCBhc3luY1xuICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgW2hlYWRlclNpemVdPVwiaGVhZGVyU2l6ZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBhY3RpdmVWYXJpYW50Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICA8L2g0PlxuICAgICAgICAgICAgICAgIEBpZiAoX3ZhcmlhbnRDaGFuZ2VkICYmICFyZWFkb25seSkge1xuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC12YXJpYW50LW1hbmFnZW1lbnRfX2RpcnR5LWluZGljYXRvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmQtdmFyaWFudC1tYW5hZ2VtZW50X19kaXJ0eS1pbmRpY2F0b3ItLWN1c3RvbV09XCIhIWRpcnR5TGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHREaXJ0eUluZGljYXRvcj4qPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRpcnR5TGFiZWwgPyBkaXJ0eUxhYmVsLnRlbXBsYXRlUmVmIDogZGVmYXVsdERpcnR5SW5kaWNhdG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxidXR0b24gZmQtYnV0dG9uIFtmZE1lbnVdPVwidHJ1ZVwiIGZkVHlwZT1cInRyYW5zcGFyZW50XCIgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJ0cnVlXCI+PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9mZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgIDxmZC1wb3BvdmVyLWJvZHk+XG4gICAgICAgICAgICA8ZGl2IGZkLXBvcG92ZXItYm9keS1oZWFkZXI+XG4gICAgICAgICAgICAgICAgPGRpdiBmZC1iYXIgW2JhckRlc2lnbl09XCJkaXNwbGF5U2VhcmNoID8gJ2hlYWRlci13aXRoLXN1YmhlYWRlcicgOiAnaGVhZGVyJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1sZWZ0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBmZC10aXRsZT57eyAncGxhdGZvcm1WYXJpYW50TWFuYWdlbWVudC5teVZpZXdzJyB8IGZkVHJhbnNsYXRlIH19PC9oNT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIEBpZiAoZGlzcGxheVNlYXJjaCkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhciBiYXJEZXNpZ249XCJoZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZmQtYmFyLWxlZnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmRwLXNlYXJjaC1maWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidwbGF0Zm9ybVZhcmlhbnRNYW5hZ2VtZW50LnNlYXJjaCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VhcmNoU3VibWl0KT1cIl9vblNlYXJjaFN1Ym1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYW5jZWxTZWFyY2gpPVwiX2NhbmNlbFNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlUmVmcmVzaF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmRwLXNlYXJjaC1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHVsIGZkLWxpc3Q+XG4gICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQgb2YgX3ZhcmlhbnRzIHwgZmRGaWx0ZXJTdHJpbmdzOiB7IHNlYXJjaFRlcm06IF9maWx0ZXJQaHJhc2UsIGtleTogJ25hbWUnIH07XG4gICAgICAgICAgICAgICAgICAgIHRyYWNrIHZhcmlhbnQuaWRcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgPGxpIGZkLWxpc3QtaXRlbSAoY2xpY2spPVwic2VsZWN0VmFyaWFudCh2YXJpYW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC1saW5rPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+e3sgdmFyaWFudC5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICBAaWYgKCFyZWFkb25seSkge1xuICAgICAgICAgICAgICAgIDxkaXYgZmQtcG9wb3Zlci1ib2R5LWZvb3Rlcj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBmZC1iYXIgYmFyRGVzaWduPVwiZm9vdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1yaWdodD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFhY3RpdmVWYXJpYW50LnJlYWRvbmx5ICYmIF92YXJpYW50Q2hhbmdlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtVmFyaWFudE1hbmFnZW1lbnQuc2F2ZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZUN1cnJlbnRWYXJpYW50KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZkVHlwZV09XCJhY3RpdmVWYXJpYW50LnJlYWRvbmx5IHx8ICFfdmFyaWFudENoYW5nZWQgPyAnZW1waGFzaXplZCcgOiAndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVZhcmlhbnRNYW5hZ2VtZW50LnNhdmVBcycgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfb3BlblNhdmVEaWFsb2coKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtVmFyaWFudE1hbmFnZW1lbnQubWFuYWdlJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9vcGVuTWFuYWdlRGlhbG9nKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZmQtcG9wb3Zlci1ib2R5PlxuICAgIDwvZmQtcG9wb3Zlcj5cbn1cbiJdfQ==
247
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFudC1tYW5hZ2VtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdmFyaWFudC1tYW5hZ2VtZW50L3ZhcmlhbnQtbWFuYWdlbWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3ZhcmlhbnQtbWFuYWdlbWVudC92YXJpYW50LW1hbmFnZW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixNQUFNLEVBQ04sTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBWSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pFLE9BQU8sRUFDSCxZQUFZLEVBQ1osbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ3JCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RCxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JILE9BQU8sRUFDSCxvQkFBb0IsRUFDcEIsMEJBQTBCLEVBQzFCLDBC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VUFBVTtzQkFEVCxZQUFZO3VCQUFDLG9DQUFvQztnQkFLbEQsUUFBUTtzQkFEUCxTQUFTO3VCQUFDLFNBQVM7Z0JBS0gsYUFBYTtzQkFEN0IsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIGVmZmVjdCxcbiAgICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWx0ZXJTdHJpbmdzUGlwZSwgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQge1xuICAgIEJhckNvbXBvbmVudCxcbiAgICBCYXJFbGVtZW50RGlyZWN0aXZlLFxuICAgIEJhckxlZnREaXJlY3RpdmUsXG4gICAgQmFyUmlnaHREaXJlY3RpdmUsXG4gICAgQnV0dG9uQmFyQ29tcG9uZW50XG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9iYXInO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RpYWxvZyc7XG5pbXBvcnQgeyBEeW5hbWljUGFnZSwgRkRfRFlOQU1JQ19QQUdFIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2R5bmFtaWMtcGFnZSc7XG5pbXBvcnQgeyBMaXN0Q29tcG9uZW50LCBMaXN0SXRlbUNvbXBvbmVudCwgTGlzdExpbmtEaXJlY3RpdmUsIExpc3RUaXRsZURpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9saXN0JztcbmltcG9ydCB7XG4gICAgUG9wb3ZlckJvZHlDb21wb25lbnQsXG4gICAgUG9wb3ZlckJvZHlGb290ZXJEaXJlY3RpdmUsXG4gICAgUG9wb3ZlckJvZHlIZWFkZXJEaXJlY3RpdmUsXG4gICAgUG9wb3ZlckNvbXBvbmVudCxcbiAgICBQb3BvdmVyQ29udHJvbENvbXBvbmVudCxcbiAgICBUcmlnZ2VyQ29uZmlnXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9wb3BvdmVyJztcbmltcG9ydCB7IEhlYWRlclNpemVzLCBUaXRsZUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90aXRsZSc7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgRkRQX0RZTkFNSUNfUEFHRSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vZHluYW1pYy1wYWdlJztcbmltcG9ydCB7IFNlYXJjaEZpZWxkQ29tcG9uZW50LCBTZWFyY2hJbnB1dCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2VhcmNoLWZpZWxkJztcbmltcG9ydCBlcXVhbCBmcm9tICdmYXN0LWRlZXAtZXF1YWwnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNYW5hZ2VWYXJpYW50SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9tYW5hZ2UtdmFyaWFudC1pdGVtL21hbmFnZS12YXJpYW50LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IE1hbmFnZVZhcmlhbnRzRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL21hbmFnZS12YXJpYW50cy1kaWFsb2cvbWFuYWdlLXZhcmlhbnRzLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmFyaWFudE1hbmFnZW1lbnREaXJ0eUxhYmVsRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3ZhcmlhbnQtbWFuYWdlbWVudC1kaXJ0eS1sYWJlbC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU2F2ZURpYWxvZ0NvbnRleHQgfSBmcm9tICcuL21vZGVscy9zYXZlLWRpYWxvZy5tb2RlbCc7XG5pbXBvcnQgeyBWYXJpYW50TWFuYWdlbWVudCB9IGZyb20gJy4vbW9kZWxzL3ZhcmlhbnQtbWFuYWdlbWVudCc7XG5pbXBvcnQgeyBOZXdWYXJpYW50LCBWYXJpYW50IH0gZnJvbSAnLi9tb2RlbHMvdmFyaWFudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRkRQX1ZBUklBTlRfTUFOQUdFTUVOVCB9IGZyb20gJy4vdG9rZW5zJztcbmltcG9ydCB7IFZhcmlhbnRJdGVtIH0gZnJvbSAnLi92YXJpYW50LWl0ZW0uY2xhc3MnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC12YXJpYW50LW1hbmFnZW1lbnQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi92YXJpYW50LW1hbmFnZW1lbnQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi92YXJpYW50LW1hbmFnZW1lbnQuY29tcG9uZW50LnNjc3MnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEUF9WQVJJQU5UX01BTkFHRU1FTlQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogVmFyaWFudE1hbmFnZW1lbnRDb21wb25lbnRcbiAgICAgICAgfVxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIFBvcG92ZXJDb21wb25lbnQsXG4gICAgICAgIFBvcG92ZXJDb250cm9sQ29tcG9uZW50LFxuICAgICAgICBUaXRsZUNvbXBvbmVudCxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgUG9wb3ZlckJvZHlDb21wb25lbnQsXG4gICAgICAgIFBvcG92ZXJCb2R5SGVhZGVyRGlyZWN0aXZlLFxuICAgICAgICBCYXJDb21wb25lbnQsXG4gICAgICAgIEJhckxlZnREaXJlY3RpdmUsXG4gICAgICAgIEJhckVsZW1lbnREaXJlY3RpdmUsXG4gICAgICAgIFNlYXJjaEZpZWxkQ29tcG9uZW50LFxuICAgICAgICBMaXN0Q29tcG9uZW50LFxuICAgICAgICBMaXN0SXRlbUNvbXBvbmVudCxcbiAgICAgICAgTGlzdExpbmtEaXJlY3RpdmUsXG4gICAgICAgIExpc3RUaXRsZURpcmVjdGl2ZSxcbiAgICAgICAgUG9wb3ZlckJvZHlGb290ZXJEaXJlY3RpdmUsXG4gICAgICAgIEJhclJpZ2h0RGlyZWN0aXZlLFxuICAgICAgICBCdXR0b25CYXJDb21wb25lbnQsXG4gICAgICAgIEZkVHJhbnNsYXRlUGlwZSxcbiAgICAgICAgRmlsdGVyU3RyaW5nc1BpcGUsXG4gICAgICAgIEFzeW5jUGlwZSxcbiAgICAgICAgTmdDbGFzcyxcbiAgICAgICAgQnV0dG9uQ29tcG9uZW50XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBWYXJpYW50TWFuYWdlbWVudENvbXBvbmVudDxUID0gYW55PiBpbXBsZW1lbnRzIFZhcmlhbnRNYW5hZ2VtZW50PFQ+IHtcbiAgICAvKiogSW5pdGlhbCB2YXJpYW50cyBhcnJheS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB2YXJpYW50cyhpdGVtczogVmFyaWFudDxUPltdKSB7XG4gICAgICAgIHRoaXMuX3ZhcmlhbnRzID0gdGhpcy5fdHJhbnNmb3JtVmFyaWFudHMoaXRlbXMpO1xuXG4gICAgICAgIGxldCBjdXJyZW50VmFyaWFudEluZGV4ID0gdGhpcy5fdmFyaWFudHMuZmluZEluZGV4KCh2YXJpYW50KSA9PiB2YXJpYW50LmlzRGVmYXVsdCk7XG4gICAgICAgIGN1cnJlbnRWYXJpYW50SW5kZXggPSBjdXJyZW50VmFyaWFudEluZGV4ID4gLTEgPyBjdXJyZW50VmFyaWFudEluZGV4IDogMDtcbiAgICAgICAgY29uc3QgY3VycmVudFZhcmlhbnQgPSB0aGlzLl92YXJpYW50c1tjdXJyZW50VmFyaWFudEluZGV4XTtcbiAgICAgICAgdGhpcy5zZWxlY3RWYXJpYW50KGN1cnJlbnRWYXJpYW50IGFzIFZhcmlhbnRJdGVtKTtcbiAgICB9XG5cbiAgICAvKiogSGVhZGVyIHNpemUuICovXG4gICAgQElucHV0KClcbiAgICBoZWFkZXJTaXplOiBIZWFkZXJTaXplcyA9IDQ7XG5cbiAgICAvKiogUG9wb3ZlciB0cmlnZ2VyIGV2ZW50cy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHBvcG92ZXJUcmlnZ2VyczogKHN0cmluZyB8IFRyaWdnZXJDb25maWcpW10gPSBbXG4gICAgICAgIHsgdHJpZ2dlcjogJ2NsaWNrJywgc3RvcFByb3BhZ2F0aW9uOiB0cnVlLCBjbG9zZUFjdGlvbjogdHJ1ZSwgb3BlbkFjdGlvbjogdHJ1ZSB9XG4gICAgXTtcblxuICAgIC8qKiBVc2VyJ3MgbmFtZSB3aGljaCB3aWxsIGJlIGFwcGxpZWQgdG8gYWxsIG5ldyB2YXJpYW50cyB1c2VyIGNyZWF0ZXMuICovXG4gICAgQElucHV0KClcbiAgICB1c2VyTmFtZTogc3RyaW5nO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gZGlzcGxheSBzZWFyY2ggZmllbGQgZm9yIHZhcmlhbnRzIGxpc3QuICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgZGlzcGxheVNlYXJjaCA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHZhcmlhbnQgbWFuYWdlbWVudCBjb21wb25lbnQgaXMgaW4gcmVhZG9ubHkgbW9kZS4gKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICByZWFkb25seSA9IGZhbHNlO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB2YXJpYW50cyBkYXRhIGhhcyBiZWVuIHVwZGF0ZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgdmFyaWFudHNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFZhcmlhbnQ8VD5bXT4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gbmV3IHZhcmlhbnQgc2VsZWN0ZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgYWN0aXZlVmFyaWFudENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VmFyaWFudDxUPj4oKTtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBkaXJ0eSBsYWJlbCBkaXJlY3RpdmUuXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZChWYXJpYW50TWFuYWdlbWVudERpcnR5TGFiZWxEaXJlY3RpdmUpXG4gICAgZGlydHlMYWJlbDogVmFyaWFudE1hbmFnZW1lbnREaXJ0eUxhYmVsRGlyZWN0aXZlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdwb3BvdmVyJylcbiAgICBfcG9wb3ZlcjogUG9wb3ZlckNvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgcHJpdmF0ZSByZWFkb25seSBfaW5pdGlhbENsYXNzID0gJ2ZkLXZhcmlhbnQtbWFuYWdlbWVudCc7XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIGludGVybmFsbHkgZm9yIGNvbW11bmljYXRpbmcgd2l0aCB3cmFwcGVyIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBhY3RpdmVWYXJpYW50Q2hhbmdlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VmFyaWFudDxUPiB8IG51bGw+KG51bGwpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdmFyaWFudENoYW5nZWQgPSBmYWxzZTtcblxuICAgIC8qKiBTZWxlY3RlZCB2YXJpYW50LiAqL1xuICAgIGFjdGl2ZVZhcmlhbnQhOiBWYXJpYW50SXRlbTxUPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3ZhcmlhbnRzOiBWYXJpYW50SXRlbTxUPltdID0gW107XG5cbiAgICAvKiogQEhpZGRlbiAqL1xuICAgIF9maWx0ZXJQaHJhc2U6IE51bGxhYmxlPHN0cmluZz4gPSBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2R5bmFtaWNQYWdlKCk6IER5bmFtaWNQYWdlIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb3JlRHluYW1pY1BhZ2UgfHwgdGhpcy5fcGxhdGZvcm1EeW5hbWljUGFnZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfZHluYW1pY1BhZ2VDb2xsYXBzZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfY29yZUR5bmFtaWNQYWdlID0gaW5qZWN0KEZEX0RZTkFNSUNfUEFHRSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfcGxhdGZvcm1EeW5hbWljUGFnZSA9IGluamVjdChGRFBfRFlOQU1JQ19QQUdFLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICAgIC8qKiBASGlkZGVuICovXG4gICAgcHJpdmF0ZSBfb3JpZ2luYWxBY3RpdmVWYXJpYW50OiBWYXJpYW50SXRlbTxUPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2RpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHtcbiAgICAgICAgaWYgKHRoaXMuX2R5bmFtaWNQYWdlKSB7XG4gICAgICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2R5bmFtaWNQYWdlQ29sbGFwc2VkJC5uZXh0KHRoaXMuX2R5bmFtaWNQYWdlIS5jb2xsYXBzZWQoKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1hbnVhbGx5IHNlbGVjdCB2YXJpYW50LlxuICAgICAqIEBwYXJhbSB2YXJpYW50IFZhcmlhbnQgdG8gc2VsZWN0LlxuICAgICAqL1xuICAgIHNlbGVjdFZhcmlhbnQodmFyaWFudDogVmFyaWFudEl0ZW08VD4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdmFyaWFudENoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5hY3RpdmVWYXJpYW50ID0gdmFyaWFudDtcbiAgICAgICAgdGhpcy5fb3JpZ2luYWxBY3RpdmVWYXJpYW50ID0gdmFyaWFudC5jbG9uZSh7fSwgZmFsc2UpO1xuICAgICAgICB0aGlzLmFjdGl2ZVZhcmlhbnRDaGFuZ2UuZW1pdCh2YXJpYW50KTtcbiAgICAgICAgdGhpcy5hY3RpdmVWYXJpYW50Q2hhbmdlU3ViamVjdC5uZXh0KHZhcmlhbnQpO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIG9yaWdpbmFsIHZhcmlhbnQgZGF0YS4gKi9cbiAgICBnZXRPcmlnaW5hbEFjdGl2ZVZhcmlhbnREYXRhKCk6IFZhcmlhbnQ8VD5bJ2RhdGEnXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcmlnaW5hbEFjdGl2ZVZhcmlhbnQuZGF0YTtcbiAgICB9XG5cbiAgICAvKiogUmV0dXJucyBjdXJyZW50IGFjdGl2ZSB2YXJpYW50IGRhdGEgd2l0aCBhcHBsaWVkIGNoYW5nZXMuICovXG4gICAgZ2V0QWN0aXZlVmFyaWFudERhdGEoKTogVmFyaWFudDxUPlsnZGF0YSddIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlVmFyaWFudC5kYXRhO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNhdmVzIGN1cnJlbnQgdmFyaWFudCB3aXRoIGl0cyBjb25maWd1cmF0aW9uLlxuICAgICAqL1xuICAgIHNhdmVDdXJyZW50VmFyaWFudCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXJyZW50VmFyaWFudEluZGV4ID0gdGhpcy5fdmFyaWFudHMuZmluZEluZGV4KCh2YXJpYW50KSA9PiB2YXJpYW50LmlkID09PSB0aGlzLmFjdGl2ZVZhcmlhbnQuaWQpO1xuICAgICAgICB0aGlzLl92YXJpYW50c1tjdXJyZW50VmFyaWFudEluZGV4XSA9IHRoaXMuYWN0aXZlVmFyaWFudDtcbiAgICAgICAgdGhpcy5fb3JpZ2luYWxBY3RpdmVWYXJpYW50ID0gdGhpcy5hY3RpdmVWYXJpYW50LmNsb25lKHt9LCBmYWxzZSk7XG4gICAgICAgIHRoaXMuX3ZhcmlhbnRDaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMudmFyaWFudHNDaGFuZ2UuZW1pdCh0aGlzLl92YXJpYW50cyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb3BlblNhdmVEaWFsb2coKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcG9wb3Zlcj8uY2xvc2UoZmFsc2UpO1xuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLl9kaWFsb2dTZXJ2aWNlLm9wZW48U2F2ZURpYWxvZ0NvbnRleHQ+KE1hbmFnZVZhcmlhbnRJdGVtQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgZXhpc3RpbmdWYXJpYW50TmFtZXM6IHRoaXMuX3ZhcmlhbnRzLm1hcCgodmFyaWFudCkgPT4gdmFyaWFudC5uYW1lKSxcbiAgICAgICAgICAgICAgICBjdXJyZW50VmFyaWFudE5hbWU6IHRoaXMuYWN0aXZlVmFyaWFudC5uYW1lXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IChyZXN1bHQ6IE5ld1ZhcmlhbnQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdWYXJpYW50ID0gdGhpcy5hY3RpdmVWYXJpYW50LmNsb25lKHsgLi4ucmVzdWx0LCAuLi57IGNyZWF0ZWRCeTogdGhpcy51c2VyTmFtZSB9IH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuX3ZhcmlhbnRzLnB1c2gobmV3VmFyaWFudCk7XG4gICAgICAgICAgICAgICAgdGhpcy52YXJpYW50c0NoYW5nZS5lbWl0KHRoaXMuX3ZhcmlhbnRzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZVZhcmlhbnQgPSBuZXdWYXJpYW50O1xuICAgICAgICAgICAgICAgIHRoaXMuX3ZhcmlhbnRDaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogKCkgPT4ge31cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyBjdXJyZW50IGFjdGl2ZSBwcmVzZXQgd2l0aCBuZXcgY29uZmlndXJhdGlvbi5cbiAgICAgKiBAcGFyYW0gcHJlc2V0IFByZXNldCBjb25maWd1cmF0aW9uLlxuICAgICAqIEBwYXJhbSBjb21wb25lbnROYW1lIGNvbXBvbmVudCB0byB3aGljaCB0aGlzIHByZXNldCBiZWxvbmdzIHRvLlxuICAgICAqL1xuICAgIHVwZGF0ZUFjdGl2ZVByZXNldChwcmVzZXQ6IFQsIGNvbXBvbmVudE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBhY3RpdmVWYXJpYW50RGF0YSA9IHRoaXMuX29yaWdpbmFsQWN0aXZlVmFyaWFudC5kYXRhW2NvbXBvbmVudE5hbWVdO1xuICAgICAgICB0aGlzLl92YXJpYW50Q2hhbmdlZCA9IGFjdGl2ZVZhcmlhbnREYXRhICYmICFlcXVhbChwcmVzZXQsIGFjdGl2ZVZhcmlhbnREYXRhKTtcbiAgICAgICAgdGhpcy5hY3RpdmVWYXJpYW50LmRhdGFbY29tcG9uZW50TmFtZV0gPSBwcmVzZXQ7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb3Blbk1hbmFnZURpYWxvZygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9wb3BvdmVyPy5jbG9zZShmYWxzZSk7XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuX2RpYWxvZ1NlcnZpY2Uub3BlbjxWYXJpYW50SXRlbVtdPihNYW5hZ2VWYXJpYW50c0RpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgZGF0YTogdGhpcy5fdmFyaWFudHNcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiAodmFyaWFudHM6IFZhcmlhbnRJdGVtW10pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl92YXJpYW50cyA9IHZhcmlhbnRzO1xuICAgICAgICAgICAgICAgIHRoaXMudmFyaWFudHNDaGFuZ2UuZW1pdCh0aGlzLl92YXJpYW50cyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyb3I6ICgpID0+IHt9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uU2VhcmNoU3VibWl0KHNlYXJjaDogU2VhcmNoSW5wdXQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZmlsdGVyUGhyYXNlID0gc2VhcmNoLnRleHQ7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY2FuY2VsU2VhcmNoKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9maWx0ZXJQaHJhc2UgPSBudWxsO1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBASGlkZGVuICovXG4gICAgX3RyYWNrRm4oaW5kZXg6IG51bWJlciwgaXRlbTogVmFyaWFudEl0ZW08VD4pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gaXRlbS5pZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3RyYW5zZm9ybVZhcmlhbnRzKGl0ZW1zOiBWYXJpYW50PFQ+W10pOiBWYXJpYW50SXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zLm1hcCgodmFyaWFudCkgPT4gbmV3IFZhcmlhbnRJdGVtKHZhcmlhbnQpKTtcbiAgICB9XG59XG4iLCJAaWYgKGFjdGl2ZVZhcmlhbnQpIHtcbiAgICA8ZmQtcG9wb3ZlclxuICAgICAgICAjcG9wb3ZlclxuICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICBbbm9BcnJvd109XCJmYWxzZVwiXG4gICAgICAgIFtmb2N1c0F1dG9DYXB0dXJlXT1cInRydWVcIlxuICAgICAgICBbZm9jdXNUcmFwcGVkXT1cInRydWVcIlxuICAgICAgICBhZGRpdGlvbmFsQm9keUNsYXNzPVwiZmQtdmFyaWFudC1tYW5hZ2VtZW50X19wb3BvdmVyLWJvZHlcIlxuICAgICAgICBbdHJpZ2dlcnNdPVwicG9wb3ZlclRyaWdnZXJzXCJcbiAgICA+XG4gICAgICAgIDxmZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtdmFyaWFudC1tYW5hZ2VtZW50X19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8aDRcbiAgICAgICAgICAgICAgICAgICAgZmQtdGl0bGVcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZkLXZhcmlhbnQtbWFuYWdlbWVudF9fdGl0bGUnOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZkLXZhcmlhbnQtbWFuYWdlbWVudF9fdGl0bGUtLWR5bmFtaWMtcGFnZSc6IF9keW5hbWljUGFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdmZC12YXJpYW50LW1hbmFnZW1lbnRfX3RpdGxlLS1keW5hbWljLXBhZ2UtLWNvbGxhcHNlZCc6IF9keW5hbWljUGFnZUNvbGxhcHNlZCQgfCBhc3luY1xuICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgW2hlYWRlclNpemVdPVwiaGVhZGVyU2l6ZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBhY3RpdmVWYXJpYW50Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICA8L2g0PlxuICAgICAgICAgICAgICAgIEBpZiAoX3ZhcmlhbnRDaGFuZ2VkICYmICFyZWFkb25seSkge1xuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC12YXJpYW50LW1hbmFnZW1lbnRfX2RpcnR5LWluZGljYXRvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmQtdmFyaWFudC1tYW5hZ2VtZW50X19kaXJ0eS1pbmRpY2F0b3ItLWN1c3RvbV09XCIhIWRpcnR5TGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHREaXJ0eUluZGljYXRvcj4qPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRpcnR5TGFiZWwgPyBkaXJ0eUxhYmVsLnRlbXBsYXRlUmVmIDogZGVmYXVsdERpcnR5SW5kaWNhdG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxidXR0b24gZmQtYnV0dG9uIFtmZE1lbnVdPVwidHJ1ZVwiIGZkVHlwZT1cInRyYW5zcGFyZW50XCIgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJ0cnVlXCI+PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9mZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgIDxmZC1wb3BvdmVyLWJvZHk+XG4gICAgICAgICAgICA8ZGl2IGZkLXBvcG92ZXItYm9keS1oZWFkZXI+XG4gICAgICAgICAgICAgICAgPGRpdiBmZC1iYXIgW2JhckRlc2lnbl09XCJkaXNwbGF5U2VhcmNoID8gJ2hlYWRlci13aXRoLXN1YmhlYWRlcicgOiAnaGVhZGVyJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1sZWZ0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBmZC10aXRsZT57eyAncGxhdGZvcm1WYXJpYW50TWFuYWdlbWVudC5teVZpZXdzJyB8IGZkVHJhbnNsYXRlIH19PC9oNT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIEBpZiAoZGlzcGxheVNlYXJjaCkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhciBiYXJEZXNpZ249XCJoZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZmQtYmFyLWxlZnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmRwLXNlYXJjaC1maWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidwbGF0Zm9ybVZhcmlhbnRNYW5hZ2VtZW50LnNlYXJjaCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VhcmNoU3VibWl0KT1cIl9vblNlYXJjaFN1Ym1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYW5jZWxTZWFyY2gpPVwiX2NhbmNlbFNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlUmVmcmVzaF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmRwLXNlYXJjaC1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHVsIGZkLWxpc3Q+XG4gICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQgb2YgX3ZhcmlhbnRzIHwgZmRGaWx0ZXJTdHJpbmdzOiB7IHNlYXJjaFRlcm06IF9maWx0ZXJQaHJhc2UsIGtleTogJ25hbWUnIH07XG4gICAgICAgICAgICAgICAgICAgIHRyYWNrIHZhcmlhbnQuaWRcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgPGxpIGZkLWxpc3QtaXRlbSBbc2VsZWN0ZWRdPVwidmFyaWFudC5uYW1lID09PSBhY3RpdmVWYXJpYW50Lm5hbWVcIiAoY2xpY2spPVwic2VsZWN0VmFyaWFudCh2YXJpYW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC1saW5rPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+e3sgdmFyaWFudC5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICBAaWYgKCFyZWFkb25seSkge1xuICAgICAgICAgICAgICAgIDxkaXYgZmQtcG9wb3Zlci1ib2R5LWZvb3Rlcj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBmZC1iYXIgYmFyRGVzaWduPVwiZm9vdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1yaWdodD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFhY3RpdmVWYXJpYW50LnJlYWRvbmx5ICYmIF92YXJpYW50Q2hhbmdlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtVmFyaWFudE1hbmFnZW1lbnQuc2F2ZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZUN1cnJlbnRWYXJpYW50KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZkVHlwZV09XCJhY3RpdmVWYXJpYW50LnJlYWRvbmx5IHx8ICFfdmFyaWFudENoYW5nZWQgPyAnZW1waGFzaXplZCcgOiAndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybVZhcmlhbnRNYW5hZ2VtZW50LnNhdmVBcycgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfb3BlblNhdmVEaWFsb2coKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtVmFyaWFudE1hbmFnZW1lbnQubWFuYWdlJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9vcGVuTWFuYWdlRGlhbG9nKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZmQtcG9wb3Zlci1ib2R5PlxuICAgIDwvZmQtcG9wb3Zlcj5cbn1cbiJdfQ==
@@ -29,7 +29,7 @@ import { FdCalendarViewEnum, CalendarDayViewComponent, CalendarComponent } from
29
29
  import { DatePickerComponent } from '@fundamental-ngx/core/date-picker';
30
30
  import { DatetimeAdapter, DATE_TIME_FORMATS } from '@fundamental-ngx/core/datetime';
31
31
  import { DELETE, BACKSPACE, ESCAPE, ENTER, CONTROL, TAB, SHIFT, UP_ARROW, RIGHT_ARROW, DOWN_ARROW, LEFT_ARROW, ALT, NUMPAD_ZERO, NUMPAD_ONE, NUMPAD_TWO, NUMPAD_THREE, NUMPAD_FOUR, NUMPAD_FIVE, NUMPAD_SIX, NUMPAD_SEVEN, NUMPAD_EIGHT, NUMPAD_NINE, A, SPACE, PAGE_UP, PAGE_DOWN } from '@angular/cdk/keycodes';
32
- import { FdTranslatePipe } from '@fundamental-ngx/i18n';
32
+ import { FdTranslatePipe, FD_LANGUAGE, TranslationResolver } from '@fundamental-ngx/i18n';
33
33
  import * as i1$2 from '@fundamental-ngx/core/dialog';
34
34
  import { DialogConfig, DialogModule } from '@fundamental-ngx/core/dialog';
35
35
  import * as i5 from '@fundamental-ngx/platform/list';
@@ -8505,8 +8505,6 @@ class BaseMultiCombobox extends CollectionBaseInput {
8505
8505
  * * 'fit-content' will apply width needed to properly display items inside, independent of control.
8506
8506
  */
8507
8507
  this.fillControlMode = 'at-least';
8508
- /** Sets invalid entry message. */
8509
- this.invalidEntryMessage = 'Invalid entry';
8510
8508
  /** Whether to open the dropdown when the addon button is clicked. */
8511
8509
  this.openDropdownOnAddOnClicked = true;
8512
8510
  /** Event emitted when item is selected. */
@@ -8569,6 +8567,10 @@ class BaseMultiCombobox extends CollectionBaseInput {
8569
8567
  /** @hidden */
8570
8568
  this._mapLimit = inject(MAP_LIMIT);
8571
8569
  /** @hidden */
8570
+ this._lang$ = inject(FD_LANGUAGE);
8571
+ /** @hidden */
8572
+ this._translationResolver = new TranslationResolver();
8573
+ /** @hidden */
8572
8574
  this._displayFn = (value) => this.displayValue(value);
8573
8575
  /** @hidden */
8574
8576
  this._secondaryFn = (value) => {
@@ -8597,6 +8599,9 @@ class BaseMultiCombobox extends CollectionBaseInput {
8597
8599
  this._initWindowResize();
8598
8600
  this._assignCustomTemplates();
8599
8601
  this._previousInputText = this.inputText;
8602
+ this._subscriptions.add(this._lang$.subscribe((lang) => {
8603
+ this.invalidEntryMessage = this._translationResolver.resolve(lang, 'platformMultiCombobox.invalidEntryError');
8604
+ }));
8600
8605
  super.ngAfterViewInit();
8601
8606
  }
8602
8607
  /** @hidden */