@fundamental-ngx/platform 0.46.2-rc.2 → 0.46.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 (105) hide show
  1. package/esm2022/approval-flow/approval-flow-add-node/approval-flow-add-node.component.mjs +2 -2
  2. package/esm2022/approval-flow/approval-flow-approver-details/approval-flow-approver-details.component.mjs +2 -2
  3. package/esm2022/approval-flow/approval-flow-node/approval-flow-node.component.mjs +2 -2
  4. package/esm2022/approval-flow/approval-flow-team-list/approval-flow-team-list.component.mjs +1 -1
  5. package/esm2022/approval-flow/approval-flow.component.mjs +3 -3
  6. package/esm2022/dynamic-page/dynamic-page.component.mjs +2 -2
  7. package/esm2022/feed-input/feed-input.component.mjs +2 -2
  8. package/esm2022/form/combobox/combobox/combobox.component.mjs +3 -3
  9. package/esm2022/form/combobox/combobox-mobile/combobox/combobox-mobile.component.mjs +3 -3
  10. package/esm2022/form/combobox/combobox.module.mjs +20 -4
  11. package/esm2022/form/combobox/commons/base-combobox.mjs +36 -28
  12. package/esm2022/form/combobox/directives/combobox-item.directive.mjs +148 -0
  13. package/esm2022/form/combobox/index.mjs +4 -3
  14. package/esm2022/form/form-group/form-field/form-field.component.mjs +2 -2
  15. package/esm2022/form/form-group/form-field-group/form-field-group.component.mjs +2 -2
  16. package/esm2022/form/form-group/form-group-header/form-group-header.component.mjs +2 -2
  17. package/esm2022/form/form-group/form-group.component.mjs +3 -3
  18. package/esm2022/form/index.mjs +37 -36
  19. package/esm2022/form/input-group/input-group.component.mjs +2 -2
  20. package/esm2022/form/multi-combobox/commons/base-multi-combobox.mjs +4 -2
  21. package/esm2022/form/multi-combobox/multi-combobox/multi-combobox.component.mjs +7 -5
  22. package/esm2022/form/multi-combobox/multi-combobox-mobile/multi-combobox/multi-combobox-mobile.component.mjs +3 -3
  23. package/esm2022/form/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +3 -3
  24. package/esm2022/form/multi-input/multi-input.component.mjs +6 -4
  25. package/esm2022/form/select/select/select.component.mjs +3 -3
  26. package/esm2022/form/step-input/number/number-step-input.component.mjs +2 -2
  27. package/esm2022/icon-tab-bar/components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component.mjs +2 -2
  28. package/esm2022/icon-tab-bar/components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component.mjs +2 -2
  29. package/esm2022/icon-tab-bar/components/icon-tab-bar-process-type/icon-tab-bar-process-type.component.mjs +2 -2
  30. package/esm2022/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.mjs +1 -1
  31. package/esm2022/icon-tab-bar/components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component.mjs +2 -2
  32. package/esm2022/icon-tab-bar/components/popovers/text-type-popover/text-type-popover.component.mjs +1 -1
  33. package/esm2022/icon-tab-bar/icon-tab-bar.component.mjs +2 -2
  34. package/esm2022/link/link.component.mjs +3 -3
  35. package/esm2022/list/list.component.mjs +2 -2
  36. package/esm2022/list/object-list-item/object-list-item-row.component.mjs +2 -2
  37. package/esm2022/list/object-list-item/object-list-item.component.mjs +2 -2
  38. package/esm2022/list/standard-list-item/standard-list-item.component.mjs +2 -2
  39. package/esm2022/menu/menu-item.component.mjs +2 -2
  40. package/esm2022/menu/menu.component.mjs +2 -2
  41. package/esm2022/message-popover/components/message-view/message-view.component.mjs +3 -3
  42. package/esm2022/message-popover/message-popover.component.mjs +2 -2
  43. package/esm2022/object-attribute/object-attribute.component.mjs +2 -2
  44. package/esm2022/page-footer/page-footer.component.mjs +2 -2
  45. package/esm2022/search-field/search-field-mobile/search-field/search-field-mobile.component.mjs +3 -3
  46. package/esm2022/search-field/search-field.component.mjs +3 -3
  47. package/esm2022/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-icon/settings-generator-sidebar-icon.component.mjs +2 -2
  48. package/esm2022/shared/domain/data-source.mjs +3 -2
  49. package/esm2022/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.mjs +2 -2
  50. package/esm2022/split-menu-button/split-menu-button.component.mjs +2 -2
  51. package/esm2022/table/components/table-header-cell-content/table-header-cell-content.component.mjs +2 -2
  52. package/esm2022/table/table.component.mjs +13 -12
  53. package/esm2022/upload-collection/dialogs/move-to/move-to.component.mjs +2 -2
  54. package/esm2022/upload-collection/upload-collection/upload-collection.component.mjs +2 -2
  55. package/esm2022/value-help-dialog/components/select-tab/select-tab.component.mjs +2 -2
  56. package/esm2022/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +3 -3
  57. package/esm2022/variant-management/components/manage-variants-dialog/manage-variants-dialog.component.mjs +2 -2
  58. package/esm2022/variant-management/variant-management.component.mjs +2 -2
  59. package/esm2022/wizard-generator/components/dialog-wizard-generator/dialog-wizard-generator.component.mjs +3 -3
  60. package/fesm2022/fundamental-ngx-platform-approval-flow.mjs +6 -6
  61. package/fesm2022/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
  62. package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs +2 -2
  63. package/fesm2022/fundamental-ngx-platform-feed-input.mjs +2 -2
  64. package/fesm2022/fundamental-ngx-platform-form.mjs +484 -311
  65. package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
  66. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs +8 -8
  67. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs.map +1 -1
  68. package/fesm2022/fundamental-ngx-platform-link.mjs +2 -2
  69. package/fesm2022/fundamental-ngx-platform-link.mjs.map +1 -1
  70. package/fesm2022/fundamental-ngx-platform-list.mjs +7 -7
  71. package/fesm2022/fundamental-ngx-platform-list.mjs.map +1 -1
  72. package/fesm2022/fundamental-ngx-platform-menu.mjs +4 -4
  73. package/fesm2022/fundamental-ngx-platform-message-popover.mjs +4 -4
  74. package/fesm2022/fundamental-ngx-platform-message-popover.mjs.map +1 -1
  75. package/fesm2022/fundamental-ngx-platform-object-attribute.mjs +2 -2
  76. package/fesm2022/fundamental-ngx-platform-page-footer.mjs +2 -2
  77. package/fesm2022/fundamental-ngx-platform-search-field.mjs +4 -4
  78. package/fesm2022/fundamental-ngx-platform-search-field.mjs.map +1 -1
  79. package/fesm2022/fundamental-ngx-platform-settings-generator.mjs +1 -1
  80. package/fesm2022/fundamental-ngx-platform-settings-generator.mjs.map +1 -1
  81. package/fesm2022/fundamental-ngx-platform-shared.mjs +2 -1
  82. package/fesm2022/fundamental-ngx-platform-shared.mjs.map +1 -1
  83. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +1 -1
  84. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
  85. package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs +2 -2
  86. package/fesm2022/fundamental-ngx-platform-table.mjs +12 -11
  87. package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
  88. package/fesm2022/fundamental-ngx-platform-upload-collection.mjs +2 -2
  89. package/fesm2022/fundamental-ngx-platform-upload-collection.mjs.map +1 -1
  90. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +3 -3
  91. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
  92. package/fesm2022/fundamental-ngx-platform-variant-management.mjs +3 -3
  93. package/fesm2022/fundamental-ngx-platform-variant-management.mjs.map +1 -1
  94. package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs +2 -2
  95. package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs.map +1 -1
  96. package/form/combobox/combobox.module.d.ts +2 -1
  97. package/form/combobox/commons/base-combobox.d.ts +6 -4
  98. package/form/combobox/directives/combobox-item.directive.d.ts +86 -0
  99. package/form/combobox/index.d.ts +3 -2
  100. package/form/index.d.ts +36 -35
  101. package/fundamental-ngx-platform-v0.46.2-rc.21.tgz +0 -0
  102. package/package.json +4 -4
  103. package/schematics/ng-add/index.js +1 -1
  104. package/table/table.component.d.ts +4 -3
  105. package/fundamental-ngx-platform-v0.46.2-rc.2.tgz +0 -0
@@ -184,7 +184,7 @@ export class ComboboxComponent extends BaseCombobox {
184
184
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: ComboboxComponent, isStandalone: true, selector: "fdp-combobox", outputs: { selectionChange: "selectionChange" }, providers: [
185
185
  { provide: FD_FORM_FIELD_CONTROL, useExisting: ComboboxComponent, multi: true },
186
186
  contentDensityObserverProviders()
187
- ], viewQueries: [{ propertyName: "searchInputElement", first: true, predicate: ["searchInputElement"], descendants: true }, { propertyName: "controlTemplate", first: true, predicate: ["controlTemplate"], descendants: true }, { propertyName: "listTemplate", first: true, predicate: ["listTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngTemplateOutlet=\"mobile ? mobileTemplate : desktopTemplate\"></ng-container>\n\n<ng-template #desktopTemplate>\n <fd-popover\n [isOpen]=\"isOpen && _suggestions.length > 0\"\n (isOpenChange)=\"isOpenChangeHandle($event)\"\n [fillControlMode]=\"fillControlMode\"\n [focusTrapped]=\"true\"\n [triggers]=\"triggers\"\n [disabled]=\"disabled || readonly\"\n [maxWidth]=\"autoResize ? null : minWidth\"\n [closeOnOutsideClick]=\"closeOnOutsideClick\"\n additionalBodyClass=\"fdp-combobox__popover\"\n >\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\n </fd-popover-control>\n <fd-popover-body [hidden]=\"_suggestions.length === 0\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n\n<ng-template #mobileTemplate>\n <ng-container [ngTemplateOutlet]=\"controlTemplate\"></ng-container>\n</ng-template>\n\n<ng-template #controlTemplate>\n <fd-form-input-message-group>\n <fd-input-group\n [id]=\"id + '-input-group-container'\"\n [button]=\"!readonly\"\n [glyph]=\"!readonly ? 'navigation-down-arrow' : ' '\"\n [state]=\"mobile && isOpen ? null : state\"\n [buttonFocusable]=\"buttonFocusable\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [isControl]=\"true\"\n (addOnButtonClicked)=\"onPrimaryButtonClick()\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"disabled\"\n [glyphAriaLabel]=\"ariaLabel\"\n (click)=\"openInMobileMode()\"\n >\n <input\n #searchInputElement\n fdp-auto-complete\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n [mobile]=\"mobile\"\n (onComplete)=\"_onCompleteTerm($event)\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-owns]=\"autoComplete && !mobile ? id + '-result' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n [attr.aria-required]=\"required\"\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"id\"\n [name]=\"name\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [disabled]=\"disabled\"\n [ngModel]=\"inputText\"\n (ngModelChange)=\"searchTermChanged($event)\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched()\"\n (blur)=\"_onBlur($event)\"\n [attr.aria-expanded]=\"isOpen && _suggestions.length > 0\"\n [readonly]=\"readonly\"\n [attr.aria-readonly]=\"readonly\"\n />\n </fd-input-group>\n <div class=\"fdp-combobox__count-list-results\" role=\"status\" *ngIf=\"isOpen\">\n <ng-container *ngIf=\"_flatSuggestions?.length || '0' as count\">\n {{\n (count === 1\n ? 'platformCombobox.countListResultsSingular'\n : 'platformCombobox.countListResultsPlural'\n ) | fdTranslate : { count: count }\n }}\n </ng-container>\n </div>\n <fd-form-message\n *ngIf=\"mobile || isOpen ? null : !!stateMessage\"\n [type]=\"state\"\n [innerHtml]=\"stateMessage\"\n ></fd-form-message>\n </fd-form-input-message-group>\n</ng-template>\n\n<ng-template #listTemplate>\n <ul\n fd-list\n [hasMessage]=\"!!stateMessage\"\n (focusEscapeList)=\"handleListFocusEscape($event)\"\n [dropdownMode]=\"true\"\n class=\"fdp-combobox__list\"\n [hasMessage]=\"!!stateMessage || (!!advancedStateMessage?.hasErrors && !!advancedStateMessage?.template)\"\n [id]=\"id + '-result'\"\n role=\"listbox\"\n [byline]=\"byline\"\n [attr.aria-labelledby]=\"id + '-search'\"\n [style.maxHeight]=\"!mobile && maxHeight\"\n [style.maxWidth]=\"autoResize && maxWidth + 'px'\"\n >\n <li\n *ngIf=\"stateMessage\"\n [attr.aria-label]=\"stateMessage\"\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n [innerHtml]=\"stateMessage\"\n ></li>\n\n <li\n *ngIf=\"advancedStateMessage?.hasErrors && advancedStateMessage?.template\"\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n >\n <ng-template [ngTemplateOutlet]=\"advancedStateMessage!.template!\"></ng-template>\n </li>\n\n <ng-content></ng-content>\n <ng-container *ngIf=\"isGroup\">\n <ng-container *ngFor=\"let group of _suggestions\">\n <ng-container *ngIf=\"!groupItemTemplate\">\n <li fd-list-group-header role=\"option\">\n <span fd-list-title [attr.title]=\"group.label\">{{ group.label }}</span>\n </li>\n </ng-container>\n\n <ng-container *ngIf=\"groupItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-container>\n </ng-container>\n\n <li\n *ngFor=\"let optionItem of group.children; let i = index\"\n (click)=\"handleOptionItem(optionItem)\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (keyDown)=\"handlePressEnter($event, optionItem)\"\n [selected]=\"isSelectedOptionItem(optionItem)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!isGroup\">\n <li\n *ngFor=\"let optionItem of _suggestions; let i = index\"\n (click)=\"handleOptionItem(optionItem)\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (keyDown)=\"handlePressEnter($event, optionItem)\"\n [selected]=\"isSelectedOptionItem(optionItem)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #listItem>\n <ng-container\n *ngIf=\"isSelectedOptionItem(optionItem) && !!selectedItemTemplate\"\n [ngTemplateOutlet]=\"selectedItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n\n <ng-container *ngIf=\"!(isSelectedOptionItem(optionItem) && selectedItemTemplate)\">\n <ng-container\n [ngTemplateOutlet]=\"optionItemSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: index }\"\n ></ng-container>\n\n <ng-container\n [ngTemplateOutlet]=\"secondaryTextSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #optionItemSource>\n <ng-container *ngIf=\"!optionItemTemplate\">\n <span [attr.title]=\"optionItem.label\" [innerHTML]=\"optionItem.label | highlight : inputText\"></span>\n </ng-container>\n\n <ng-container *ngIf=\"optionItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"optionItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" #secondaryTextSource>\n <ng-container *ngIf=\"showSecondaryText\">\n <ng-container *ngIf=\"!secondaryItemTemplate\">\n <span\n [style.text-align]=\"secondaryTextAlignment\"\n fd-list-secondary\n [attr.title]=\"optionItem.secondaryText\"\n [innerHTML]=\"optionItem.secondaryText | highlight : inputText\"\n ></span>\n </ng-container>\n\n <ng-container *ngIf=\"secondaryItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"secondaryItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value }\"\n ></ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n", styles: [".fdp-combobox__count-list-results{position:absolute;opacity:0;z-index:-1}.fdp-combobox__list .fd-list__item{justify-content:space-between}.fdp-combobox__list .fd-list__item span{overflow:hidden;text-overflow:ellipsis;width:100%}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: FormInputMessageGroupComponent, selector: "fd-form-input-message-group", inputs: ["triggers", "closeOnOutsideClick", "fillControlMode", "noArrow", "closeOnEscapeKey", "placement", "placementContainer", "isOpen"], outputs: ["isOpenChange"] }, { kind: "ngmodule", type: InputGroupModule }, { kind: "component", type: i5.InputGroupComponent, selector: "fd-input-group", inputs: ["placement", "required", "inline", "placeholder", "addOnText", "buttonFocusable", "type", "glyph", "button", "disabled", "readonly", "state", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "iconTitle", "ariaLabelledBy"], outputs: ["addOnButtonClicked", "search"] }, { kind: "directive", type: i5.InputGroupInputDirective, selector: "[fdInputGroupInput], [fd-input-group-input]", inputs: ["class"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: AutoCompleteDirective, selector: "[fdp-auto-complete]", inputs: ["options", "inputText", "mobile"], outputs: ["onComplete"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormMessageComponent, selector: "fd-form-message", inputs: ["type", "static", "embedded", "class"] }, { kind: "ngmodule", type: ListModule }, { kind: "component", type: i6.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "component", type: i6.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline"], outputs: ["keyDown"] }, { kind: "directive", type: i6.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i6.ListGroupHeaderDirective, selector: "[fdListGroupHeader], [fd-list-group-header]", inputs: ["nativeElementId"], outputs: ["keyDown"] }, { kind: "directive", type: i6.ListSecondaryDirective, selector: "[fd-list-secondary], [fdListSecondary]", inputs: ["type"] }, { kind: "directive", type: i6.ListMessageDirective, selector: "[fd-list-message], [fdListMessage]", inputs: ["type", "class"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: SearchHighlightPipe, name: "highlight" }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }, { kind: "ngmodule", type: ContentDensityModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
187
+ ], viewQueries: [{ propertyName: "searchInputElement", first: true, predicate: ["searchInputElement"], descendants: true }, { propertyName: "controlTemplate", first: true, predicate: ["controlTemplate"], descendants: true }, { propertyName: "listTemplate", first: true, predicate: ["listTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngTemplateOutlet=\"mobile ? mobileTemplate : desktopTemplate\"></ng-container>\n\n<ng-template #desktopTemplate>\n <fd-popover\n [isOpen]=\"isOpen && _suggestions.length > 0\"\n (isOpenChange)=\"isOpenChangeHandle($event)\"\n [fillControlMode]=\"fillControlMode\"\n [focusTrapped]=\"true\"\n [triggers]=\"triggers\"\n [disabled]=\"disabled || readonly\"\n [maxWidth]=\"autoResize ? null : minWidth\"\n [closeOnOutsideClick]=\"closeOnOutsideClick\"\n additionalBodyClass=\"fdp-combobox__popover\"\n >\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\n </fd-popover-control>\n <fd-popover-body [hidden]=\"_suggestions.length === 0\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n\n<ng-template #mobileTemplate>\n <ng-container [ngTemplateOutlet]=\"controlTemplate\"></ng-container>\n</ng-template>\n\n<ng-template #controlTemplate>\n <fd-form-input-message-group>\n <fd-input-group\n [id]=\"id + '-input-group-container'\"\n [button]=\"!readonly\"\n [glyph]=\"!readonly ? 'navigation-down-arrow' : ' '\"\n [state]=\"mobile && isOpen ? null : state\"\n [buttonFocusable]=\"buttonFocusable\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [isControl]=\"true\"\n (addOnButtonClicked)=\"onPrimaryButtonClick()\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"disabled\"\n [glyphAriaLabel]=\"ariaLabel\"\n (click)=\"openInMobileMode()\"\n >\n <input\n #searchInputElement\n fdp-auto-complete\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n [mobile]=\"mobile\"\n (onComplete)=\"_onCompleteTerm($event)\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-owns]=\"autoComplete && !mobile ? id + '-result' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n [attr.aria-required]=\"required\"\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"id\"\n [name]=\"name\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [disabled]=\"disabled\"\n [ngModel]=\"inputText\"\n (ngModelChange)=\"searchTermChanged($event)\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched()\"\n (blur)=\"_onBlur($event)\"\n [attr.aria-expanded]=\"isOpen && _suggestions.length > 0\"\n [readonly]=\"readonly\"\n [attr.aria-readonly]=\"readonly\"\n />\n </fd-input-group>\n <div class=\"fdp-combobox__count-list-results\" role=\"status\" *ngIf=\"isOpen\">\n <ng-container *ngIf=\"_flatSuggestions?.length || '0' as count\">\n {{\n (count === 1\n ? 'platformCombobox.countListResultsSingular'\n : 'platformCombobox.countListResultsPlural'\n ) | fdTranslate : { count: count }\n }}\n </ng-container>\n </div>\n <fd-form-message\n *ngIf=\"mobile || isOpen ? null : !!stateMessage\"\n [type]=\"state\"\n [innerHtml]=\"stateMessage\"\n ></fd-form-message>\n </fd-form-input-message-group>\n</ng-template>\n\n<ng-template #listTemplate>\n <ul\n fd-list\n [hasMessage]=\"!!stateMessage\"\n (focusEscapeList)=\"handleListFocusEscape($event)\"\n [dropdownMode]=\"true\"\n class=\"fdp-combobox__list\"\n [hasMessage]=\"!!stateMessage || (!!advancedStateMessage?.hasErrors && !!advancedStateMessage?.template)\"\n [id]=\"id + '-result'\"\n role=\"listbox\"\n [byline]=\"byline\"\n [attr.aria-labelledby]=\"id + '-search'\"\n [style.maxHeight]=\"!mobile && maxHeight\"\n [style.maxWidth]=\"autoResize && maxWidth + 'px'\"\n >\n <li\n *ngIf=\"stateMessage\"\n [attr.aria-label]=\"stateMessage\"\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n [innerHtml]=\"stateMessage\"\n ></li>\n\n <li\n *ngIf=\"advancedStateMessage?.hasErrors && advancedStateMessage?.template\"\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n >\n <ng-template [ngTemplateOutlet]=\"advancedStateMessage!.template!\"></ng-template>\n </li>\n\n <ng-content></ng-content>\n <ng-container *ngIf=\"isGroup\">\n <ng-container *ngFor=\"let group of _suggestions\">\n <ng-container *ngIf=\"!groupItemTemplate; else customGroupItemTemplateRenderer\">\n <li fd-list-group-header role=\"option\">\n <span fd-list-title [attr.title]=\"group.label\">{{ group.label }}</span>\n </li>\n </ng-container>\n\n <ng-template #customGroupItemTemplateRenderer>\n <ng-template\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-template>\n </ng-template>\n\n <li\n *ngFor=\"let optionItem of group.children; let i = index\"\n (click)=\"handleOptionItem(optionItem)\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (keyDown)=\"handlePressEnter($event, optionItem)\"\n [selected]=\"isSelectedOptionItem(optionItem)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!isGroup\">\n <li\n *ngFor=\"let optionItem of _suggestions; let i = index\"\n (click)=\"handleOptionItem(optionItem)\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (keyDown)=\"handlePressEnter($event, optionItem)\"\n [selected]=\"isSelectedOptionItem(optionItem)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #listItem>\n <ng-container\n *ngIf=\"isSelectedOptionItem(optionItem) && !!selectedItemTemplate\"\n [ngTemplateOutlet]=\"selectedItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n\n <ng-container *ngIf=\"!(isSelectedOptionItem(optionItem) && selectedItemTemplate)\">\n <ng-container\n [ngTemplateOutlet]=\"optionItemSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: index }\"\n ></ng-container>\n\n <ng-container\n [ngTemplateOutlet]=\"secondaryTextSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #optionItemSource>\n <ng-container *ngIf=\"!optionItemTemplate; else customOptinItemTemplateRenderer\">\n <span [attr.title]=\"optionItem.label\" [innerHTML]=\"optionItem.label | highlight : inputText\"></span>\n </ng-container>\n\n <ng-template #customOptinItemTemplateRenderer>\n <ng-template\n [ngTemplateOutlet]=\"optionItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-template>\n </ng-template>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" #secondaryTextSource>\n <ng-container *ngIf=\"showSecondaryText\">\n <ng-container *ngIf=\"!secondaryItemTemplate; else customSecondaryItemTemplateRenderer\">\n <span\n [style.text-align]=\"secondaryTextAlignment\"\n fd-list-secondary\n [attr.title]=\"optionItem.secondaryText\"\n [innerHTML]=\"optionItem.secondaryText | highlight : inputText\"\n ></span>\n </ng-container>\n\n <ng-template #customSecondaryItemTemplateRenderer>\n <ng-template\n [ngTemplateOutlet]=\"secondaryItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value }\"\n ></ng-template>\n </ng-template>\n </ng-container>\n</ng-template>\n", styles: [".fdp-combobox__count-list-results{position:absolute;opacity:0;z-index:-1}.fdp-combobox__list .fd-list__item{justify-content:space-between}.fdp-combobox__list .fd-list__item span{overflow:hidden;text-overflow:ellipsis;width:100%}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: FormInputMessageGroupComponent, selector: "fd-form-input-message-group", inputs: ["triggers", "closeOnOutsideClick", "fillControlMode", "noArrow", "closeOnEscapeKey", "placement", "placementContainer", "isOpen"], outputs: ["isOpenChange"] }, { kind: "ngmodule", type: InputGroupModule }, { kind: "component", type: i5.InputGroupComponent, selector: "fd-input-group", inputs: ["placement", "required", "inline", "placeholder", "addOnText", "buttonFocusable", "type", "glyph", "button", "disabled", "readonly", "state", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "iconTitle", "ariaLabelledBy"], outputs: ["addOnButtonClicked", "search"] }, { kind: "directive", type: i5.InputGroupInputDirective, selector: "[fdInputGroupInput], [fd-input-group-input]", inputs: ["class"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: AutoCompleteDirective, selector: "[fdp-auto-complete]", inputs: ["options", "inputText", "mobile"], outputs: ["onComplete"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormMessageComponent, selector: "fd-form-message", inputs: ["type", "static", "embedded", "class"] }, { kind: "ngmodule", type: ListModule }, { kind: "component", type: i6.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "component", type: i6.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline"], outputs: ["keyDown"] }, { kind: "directive", type: i6.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i6.ListGroupHeaderDirective, selector: "[fdListGroupHeader], [fd-list-group-header]", inputs: ["nativeElementId"], outputs: ["keyDown"] }, { kind: "directive", type: i6.ListSecondaryDirective, selector: "[fd-list-secondary], [fdListSecondary]", inputs: ["type"] }, { kind: "directive", type: i6.ListMessageDirective, selector: "[fd-list-message], [fdListMessage]", inputs: ["type", "class"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: SearchHighlightPipe, name: "highlight" }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }, { kind: "ngmodule", type: ContentDensityModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
188
188
  }
189
189
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ComboboxComponent, decorators: [{
190
190
  type: Component,
@@ -209,7 +209,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
209
209
  SearchHighlightPipe,
210
210
  FdTranslatePipe,
211
211
  ContentDensityModule
212
- ], template: "<ng-container *ngTemplateOutlet=\"mobile ? mobileTemplate : desktopTemplate\"></ng-container>\n\n<ng-template #desktopTemplate>\n <fd-popover\n [isOpen]=\"isOpen && _suggestions.length > 0\"\n (isOpenChange)=\"isOpenChangeHandle($event)\"\n [fillControlMode]=\"fillControlMode\"\n [focusTrapped]=\"true\"\n [triggers]=\"triggers\"\n [disabled]=\"disabled || readonly\"\n [maxWidth]=\"autoResize ? null : minWidth\"\n [closeOnOutsideClick]=\"closeOnOutsideClick\"\n additionalBodyClass=\"fdp-combobox__popover\"\n >\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\n </fd-popover-control>\n <fd-popover-body [hidden]=\"_suggestions.length === 0\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n\n<ng-template #mobileTemplate>\n <ng-container [ngTemplateOutlet]=\"controlTemplate\"></ng-container>\n</ng-template>\n\n<ng-template #controlTemplate>\n <fd-form-input-message-group>\n <fd-input-group\n [id]=\"id + '-input-group-container'\"\n [button]=\"!readonly\"\n [glyph]=\"!readonly ? 'navigation-down-arrow' : ' '\"\n [state]=\"mobile && isOpen ? null : state\"\n [buttonFocusable]=\"buttonFocusable\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [isControl]=\"true\"\n (addOnButtonClicked)=\"onPrimaryButtonClick()\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"disabled\"\n [glyphAriaLabel]=\"ariaLabel\"\n (click)=\"openInMobileMode()\"\n >\n <input\n #searchInputElement\n fdp-auto-complete\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n [mobile]=\"mobile\"\n (onComplete)=\"_onCompleteTerm($event)\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-owns]=\"autoComplete && !mobile ? id + '-result' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n [attr.aria-required]=\"required\"\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"id\"\n [name]=\"name\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [disabled]=\"disabled\"\n [ngModel]=\"inputText\"\n (ngModelChange)=\"searchTermChanged($event)\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched()\"\n (blur)=\"_onBlur($event)\"\n [attr.aria-expanded]=\"isOpen && _suggestions.length > 0\"\n [readonly]=\"readonly\"\n [attr.aria-readonly]=\"readonly\"\n />\n </fd-input-group>\n <div class=\"fdp-combobox__count-list-results\" role=\"status\" *ngIf=\"isOpen\">\n <ng-container *ngIf=\"_flatSuggestions?.length || '0' as count\">\n {{\n (count === 1\n ? 'platformCombobox.countListResultsSingular'\n : 'platformCombobox.countListResultsPlural'\n ) | fdTranslate : { count: count }\n }}\n </ng-container>\n </div>\n <fd-form-message\n *ngIf=\"mobile || isOpen ? null : !!stateMessage\"\n [type]=\"state\"\n [innerHtml]=\"stateMessage\"\n ></fd-form-message>\n </fd-form-input-message-group>\n</ng-template>\n\n<ng-template #listTemplate>\n <ul\n fd-list\n [hasMessage]=\"!!stateMessage\"\n (focusEscapeList)=\"handleListFocusEscape($event)\"\n [dropdownMode]=\"true\"\n class=\"fdp-combobox__list\"\n [hasMessage]=\"!!stateMessage || (!!advancedStateMessage?.hasErrors && !!advancedStateMessage?.template)\"\n [id]=\"id + '-result'\"\n role=\"listbox\"\n [byline]=\"byline\"\n [attr.aria-labelledby]=\"id + '-search'\"\n [style.maxHeight]=\"!mobile && maxHeight\"\n [style.maxWidth]=\"autoResize && maxWidth + 'px'\"\n >\n <li\n *ngIf=\"stateMessage\"\n [attr.aria-label]=\"stateMessage\"\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n [innerHtml]=\"stateMessage\"\n ></li>\n\n <li\n *ngIf=\"advancedStateMessage?.hasErrors && advancedStateMessage?.template\"\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n >\n <ng-template [ngTemplateOutlet]=\"advancedStateMessage!.template!\"></ng-template>\n </li>\n\n <ng-content></ng-content>\n <ng-container *ngIf=\"isGroup\">\n <ng-container *ngFor=\"let group of _suggestions\">\n <ng-container *ngIf=\"!groupItemTemplate\">\n <li fd-list-group-header role=\"option\">\n <span fd-list-title [attr.title]=\"group.label\">{{ group.label }}</span>\n </li>\n </ng-container>\n\n <ng-container *ngIf=\"groupItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-container>\n </ng-container>\n\n <li\n *ngFor=\"let optionItem of group.children; let i = index\"\n (click)=\"handleOptionItem(optionItem)\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (keyDown)=\"handlePressEnter($event, optionItem)\"\n [selected]=\"isSelectedOptionItem(optionItem)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!isGroup\">\n <li\n *ngFor=\"let optionItem of _suggestions; let i = index\"\n (click)=\"handleOptionItem(optionItem)\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (keyDown)=\"handlePressEnter($event, optionItem)\"\n [selected]=\"isSelectedOptionItem(optionItem)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #listItem>\n <ng-container\n *ngIf=\"isSelectedOptionItem(optionItem) && !!selectedItemTemplate\"\n [ngTemplateOutlet]=\"selectedItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n\n <ng-container *ngIf=\"!(isSelectedOptionItem(optionItem) && selectedItemTemplate)\">\n <ng-container\n [ngTemplateOutlet]=\"optionItemSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: index }\"\n ></ng-container>\n\n <ng-container\n [ngTemplateOutlet]=\"secondaryTextSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #optionItemSource>\n <ng-container *ngIf=\"!optionItemTemplate\">\n <span [attr.title]=\"optionItem.label\" [innerHTML]=\"optionItem.label | highlight : inputText\"></span>\n </ng-container>\n\n <ng-container *ngIf=\"optionItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"optionItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" #secondaryTextSource>\n <ng-container *ngIf=\"showSecondaryText\">\n <ng-container *ngIf=\"!secondaryItemTemplate\">\n <span\n [style.text-align]=\"secondaryTextAlignment\"\n fd-list-secondary\n [attr.title]=\"optionItem.secondaryText\"\n [innerHTML]=\"optionItem.secondaryText | highlight : inputText\"\n ></span>\n </ng-container>\n\n <ng-container *ngIf=\"secondaryItemTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"secondaryItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value }\"\n ></ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n", styles: [".fdp-combobox__count-list-results{position:absolute;opacity:0;z-index:-1}.fdp-combobox__list .fd-list__item{justify-content:space-between}.fdp-combobox__list .fd-list__item span{overflow:hidden;text-overflow:ellipsis;width:100%}\n"] }]
212
+ ], template: "<ng-container *ngTemplateOutlet=\"mobile ? mobileTemplate : desktopTemplate\"></ng-container>\n\n<ng-template #desktopTemplate>\n <fd-popover\n [isOpen]=\"isOpen && _suggestions.length > 0\"\n (isOpenChange)=\"isOpenChangeHandle($event)\"\n [fillControlMode]=\"fillControlMode\"\n [focusTrapped]=\"true\"\n [triggers]=\"triggers\"\n [disabled]=\"disabled || readonly\"\n [maxWidth]=\"autoResize ? null : minWidth\"\n [closeOnOutsideClick]=\"closeOnOutsideClick\"\n additionalBodyClass=\"fdp-combobox__popover\"\n >\n <fd-popover-control>\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\n </fd-popover-control>\n <fd-popover-body [hidden]=\"_suggestions.length === 0\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n <ng-content></ng-content>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n\n<ng-template #mobileTemplate>\n <ng-container [ngTemplateOutlet]=\"controlTemplate\"></ng-container>\n</ng-template>\n\n<ng-template #controlTemplate>\n <fd-form-input-message-group>\n <fd-input-group\n [id]=\"id + '-input-group-container'\"\n [button]=\"!readonly\"\n [glyph]=\"!readonly ? 'navigation-down-arrow' : ' '\"\n [state]=\"mobile && isOpen ? null : state\"\n [buttonFocusable]=\"buttonFocusable\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [isControl]=\"true\"\n (addOnButtonClicked)=\"onPrimaryButtonClick()\"\n [isExpanded]=\"!mobile && isOpen && _suggestions.length > 0\"\n [attr.aria-disabled]=\"disabled\"\n [glyphAriaLabel]=\"ariaLabel\"\n (click)=\"openInMobileMode()\"\n >\n <input\n #searchInputElement\n fdp-auto-complete\n [options]=\"_suggestions\"\n [inputText]=\"inputText\"\n [mobile]=\"mobile\"\n (onComplete)=\"_onCompleteTerm($event)\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-autocomplete]=\"autoComplete && !mobile ? 'list' : null\"\n [attr.aria-owns]=\"autoComplete && !mobile ? id + '-result' : null\"\n [attr.aria-haspopup]=\"autoComplete && !mobile\"\n [attr.aria-required]=\"required\"\n fd-input-group-input\n tabindex=\"0\"\n [id]=\"id\"\n [name]=\"name\"\n (keydown)=\"onInputKeydownHandler($event)\"\n [disabled]=\"disabled\"\n [ngModel]=\"inputText\"\n (ngModelChange)=\"searchTermChanged($event)\"\n [placeholder]=\"placeholder\"\n (focus)=\"onTouched()\"\n (blur)=\"_onBlur($event)\"\n [attr.aria-expanded]=\"isOpen && _suggestions.length > 0\"\n [readonly]=\"readonly\"\n [attr.aria-readonly]=\"readonly\"\n />\n </fd-input-group>\n <div class=\"fdp-combobox__count-list-results\" role=\"status\" *ngIf=\"isOpen\">\n <ng-container *ngIf=\"_flatSuggestions?.length || '0' as count\">\n {{\n (count === 1\n ? 'platformCombobox.countListResultsSingular'\n : 'platformCombobox.countListResultsPlural'\n ) | fdTranslate : { count: count }\n }}\n </ng-container>\n </div>\n <fd-form-message\n *ngIf=\"mobile || isOpen ? null : !!stateMessage\"\n [type]=\"state\"\n [innerHtml]=\"stateMessage\"\n ></fd-form-message>\n </fd-form-input-message-group>\n</ng-template>\n\n<ng-template #listTemplate>\n <ul\n fd-list\n [hasMessage]=\"!!stateMessage\"\n (focusEscapeList)=\"handleListFocusEscape($event)\"\n [dropdownMode]=\"true\"\n class=\"fdp-combobox__list\"\n [hasMessage]=\"!!stateMessage || (!!advancedStateMessage?.hasErrors && !!advancedStateMessage?.template)\"\n [id]=\"id + '-result'\"\n role=\"listbox\"\n [byline]=\"byline\"\n [attr.aria-labelledby]=\"id + '-search'\"\n [style.maxHeight]=\"!mobile && maxHeight\"\n [style.maxWidth]=\"autoResize && maxWidth + 'px'\"\n >\n <li\n *ngIf=\"stateMessage\"\n [attr.aria-label]=\"stateMessage\"\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n [innerHtml]=\"stateMessage\"\n ></li>\n\n <li\n *ngIf=\"advancedStateMessage?.hasErrors && advancedStateMessage?.template\"\n fd-list-message\n tabindex=\"-1\"\n role=\"presentation\"\n [type]=\"state || 'default'\"\n >\n <ng-template [ngTemplateOutlet]=\"advancedStateMessage!.template!\"></ng-template>\n </li>\n\n <ng-content></ng-content>\n <ng-container *ngIf=\"isGroup\">\n <ng-container *ngFor=\"let group of _suggestions\">\n <ng-container *ngIf=\"!groupItemTemplate; else customGroupItemTemplateRenderer\">\n <li fd-list-group-header role=\"option\">\n <span fd-list-title [attr.title]=\"group.label\">{{ group.label }}</span>\n </li>\n </ng-container>\n\n <ng-template #customGroupItemTemplateRenderer>\n <ng-template\n [ngTemplateOutlet]=\"groupItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: group.label } }\"\n ></ng-template>\n </ng-template>\n\n <li\n *ngFor=\"let optionItem of group.children; let i = index\"\n (click)=\"handleOptionItem(optionItem)\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (keyDown)=\"handlePressEnter($event, optionItem)\"\n [selected]=\"isSelectedOptionItem(optionItem)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!isGroup\">\n <li\n *ngFor=\"let optionItem of _suggestions; let i = index\"\n (click)=\"handleOptionItem(optionItem)\"\n fd-list-item\n role=\"option\"\n [tabindex]=\"0\"\n (keyDown)=\"handlePressEnter($event, optionItem)\"\n [selected]=\"isSelectedOptionItem(optionItem)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"listItem\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: i }\"\n ></ng-container>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #listItem>\n <ng-container\n *ngIf=\"isSelectedOptionItem(optionItem) && !!selectedItemTemplate\"\n [ngTemplateOutlet]=\"selectedItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-container>\n\n <ng-container *ngIf=\"!(isSelectedOptionItem(optionItem) && selectedItemTemplate)\">\n <ng-container\n [ngTemplateOutlet]=\"optionItemSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem, index: index }\"\n ></ng-container>\n\n <ng-container\n [ngTemplateOutlet]=\"secondaryTextSource\"\n [ngTemplateOutletContext]=\"{ optionItem: optionItem }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" let-index=\"index\" #optionItemSource>\n <ng-container *ngIf=\"!optionItemTemplate; else customOptinItemTemplateRenderer\">\n <span [attr.title]=\"optionItem.label\" [innerHTML]=\"optionItem.label | highlight : inputText\"></span>\n </ng-container>\n\n <ng-template #customOptinItemTemplateRenderer>\n <ng-template\n [ngTemplateOutlet]=\"optionItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value, index: index }\"\n ></ng-template>\n </ng-template>\n</ng-template>\n\n<ng-template let-optionItem=\"optionItem\" #secondaryTextSource>\n <ng-container *ngIf=\"showSecondaryText\">\n <ng-container *ngIf=\"!secondaryItemTemplate; else customSecondaryItemTemplateRenderer\">\n <span\n [style.text-align]=\"secondaryTextAlignment\"\n fd-list-secondary\n [attr.title]=\"optionItem.secondaryText\"\n [innerHTML]=\"optionItem.secondaryText | highlight : inputText\"\n ></span>\n </ng-container>\n\n <ng-template #customSecondaryItemTemplateRenderer>\n <ng-template\n [ngTemplateOutlet]=\"secondaryItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: optionItem.value }\"\n ></ng-template>\n </ng-template>\n </ng-container>\n</ng-template>\n", styles: [".fdp-combobox__count-list-results{position:absolute;opacity:0;z-index:-1}.fdp-combobox__list .fd-list__item{justify-content:space-between}.fdp-combobox__list .fd-list__item span{overflow:hidden;text-overflow:ellipsis;width:100%}\n"] }]
213
213
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.NgControl, decorators: [{
214
214
  type: Optional
215
215
  }, {
@@ -259,4 +259,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
259
259
  type: ViewChild,
260
260
  args: ['listTemplate']
261
261
  }] } });
262
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vY29tYm9ib3gvY29tYm9ib3gvY29tYm9ib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vY29tYm9ib3gvY29tYm9ib3gvY29tYm9ib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osSUFBSSxFQUNKLE1BQU0sRUFDTixRQUFRLEVBRVIsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBQ0osUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsYUFBYSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFbEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLCtCQUErQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDOUcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsY0FBYyxFQUdkLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDM0IsTUFBTSxrQ0FBa0MsQ0FBQztBQUUxQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxp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QWdCO3dCQUNoQixnQkFBZ0I7d0JBQ2hCLHVCQUF1Qjt3QkFDdkIsb0JBQW9CO3dCQUNwQiw4QkFBOEI7d0JBQzlCLGdCQUFnQjt3QkFDaEIsV0FBVzt3QkFDWCxxQkFBcUI7d0JBQ3JCLElBQUk7d0JBQ0osb0JBQW9CO3dCQUNwQixVQUFVO3dCQUNWLEtBQUs7d0JBQ0wsT0FBTzt3QkFDUCxzQkFBc0I7d0JBQ3RCLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixvQkFBb0I7cUJBQ3ZCOzswQkF5QkksUUFBUTs7MEJBQUksSUFBSTs7MEJBQ2hCLFFBQVE7OzBCQUFJLFFBQVE7OzBCQUNwQixRQUFROzswQkFBSSxJQUFJOzswQkFDaEIsUUFBUTs7MEJBSVIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxjQUFjOzswQkFFakMsUUFBUTs7MEJBQUksUUFBUTs7MEJBQUksSUFBSTs7MEJBQUksTUFBTTsyQkFBQyxhQUFhOzswQkFDcEQsUUFBUTs7MEJBQUksUUFBUTs7MEJBQUksSUFBSTs7MEJBQUksTUFBTTsyQkFBQyxxQkFBcUI7NENBOUJqRSxlQUFlO3NCQURkLE1BQU07Z0JBSVAsa0JBQWtCO3NCQURqQixTQUFTO3VCQUFDLG9CQUFvQjtnQkFLL0IsZUFBZTtzQkFEZCxTQUFTO3VCQUFDLGlCQUFpQjtnQkFLNUIsWUFBWTtzQkFEWCxTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3QsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdG9yLFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgU2VsZixcbiAgICBTa2lwU2VsZixcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xDb250YWluZXIsIEZvcm1zTW9kdWxlLCBOZ0NvbnRyb2wsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZEX0ZPUk1fRklFTEQsIEZEX0ZPUk1fRklFTERfQ09OVFJPTCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL2Zvcm1zJztcblxuaW1wb3J0IHsgRHluYW1pY0NvbXBvbmVudFNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eU1vZHVsZSwgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVycyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuaW1wb3J0IHsgRGlhbG9nQ29uZmlnIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RpYWxvZyc7XG5pbXBvcnQge1xuICAgIENvbWJvQm94RGF0YVNvdXJjZSxcbiAgICBEQVRBX1BST1ZJREVSUyxcbiAgICBEYXRhUHJvdmlkZXIsXG4gICAgT3B0aW9uSXRlbSxcbiAgICBQbGF0Zm9ybUZvcm1GaWVsZCxcbiAgICBQbGF0Zm9ybUZvcm1GaWVsZENvbnRyb2xcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zaGFyZWQnO1xuXG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ0ZvciwgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTZWFyY2hIaWdobGlnaHRQaXBlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgRm9ybUlucHV0TWVzc2FnZUdyb3VwQ29tcG9uZW50LCBGb3JtTWVzc2FnZUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9mb3JtJztcbmltcG9ydCB7IElucHV0R3JvdXBNb2R1bGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvaW5wdXQtZ3JvdXAnO1xuaW1wb3J0IHsgTGlzdE1vZHVsZSwgTGlzdFNlY29uZGFyeURpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9saXN0JztcbmltcG9ydCB7IFBvcG92ZXJCb2R5Q29tcG9uZW50LCBQb3BvdmVyQ29tcG9uZW50LCBQb3BvdmVyQ29udHJvbENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9wb3BvdmVyJztcbmltcG9ydCB7IEZkVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQgeyBBdXRvQ29tcGxldGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9hdXRvLWNvbXBsZXRlL2F1dG8tY29tcGxldGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IENvbWJvYm94TW9iaWxlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tYm9ib3gtbW9iaWxlL2NvbWJvYm94L2NvbWJvYm94LW1vYmlsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tYm9ib3hDb25maWcgfSBmcm9tICcuLi9jb21ib2JveC5jb25maWcnO1xuaW1wb3J0IHsgQ09NQk9CT1hfQ09NUE9ORU5ULCBDb21ib2JveEludGVyZmFjZSB9IGZyb20gJy4uL2NvbWJvYm94LmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYXNlQ29tYm9ib3ggfSBmcm9tICcuLi9jb21tb25zL2Jhc2UtY29tYm9ib3gnO1xuXG5leHBvcnQgY2xhc3MgQ29tYm9ib3hTZWxlY3Rpb25DaGFuZ2VFdmVudCB7XG4gICAgLyoqXG4gICAgICogQ29tYm9ib3ggc2VsZWN0aW9uIGV2ZW50XG4gICAgICogQHBhcmFtIHNvdXJjZSBDb21ib2JveCBjb21wb25lbnRcbiAgICAgKiBAcGFyYW0gcGF5bG9hZCBTZWxlY3RlZCBvcHRpb25cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHNvdXJjZTogQ29tYm9ib3hDb21wb25lbnQsXG4gICAgICAgIHB1YmxpYyBwYXlsb2FkOiBhbnkgLy8gQ29udGFpbnMgc2VsZWN0ZWQgaXRlbVxuICAgICkge31cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtY29tYm9ib3gnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb21ib2JveC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY29tYm9ib3guY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IEZEX0ZPUk1fRklFTERfQ09OVFJPTCwgdXNlRXhpc3Rpbmc6IENvbWJvYm94Q29tcG9uZW50LCBtdWx0aTogdHJ1ZSB9LFxuICAgICAgICBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzKClcbiAgICBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBQb3BvdmVyQ29tcG9uZW50LFxuICAgICAgICBQb3BvdmVyQ29udHJvbENvbXBvbmVudCxcbiAgICAgICAgUG9wb3ZlckJvZHlDb21wb25lbnQsXG4gICAgICAgIEZvcm1JbnB1dE1lc3NhZ2VHcm91cENvbXBvbmVudCxcbiAgICAgICAgSW5wdXRHcm91cE1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIEF1dG9Db21wbGV0ZURpcmVjdGl2ZSxcbiAgICAgICAgTmdJZixcbiAgICAgICAgRm9ybU1lc3NhZ2VDb21wb25lbnQsXG4gICAgICAgIExpc3RNb2R1bGUsXG4gICAgICAgIE5nRm9yLFxuICAgICAgICBOZ0NsYXNzLFxuICAgICAgICBMaXN0U2Vjb25kYXJ5RGlyZWN0aXZlLFxuICAgICAgICBTZWFyY2hIaWdobGlnaHRQaXBlLFxuICAgICAgICBGZFRyYW5zbGF0ZVBpcGUsXG4gICAgICAgIENvbnRlbnREZW5zaXR5TW9kdWxlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBDb21ib2JveENvbXBvbmVudCBleHRlbmRzIEJhc2VDb21ib2JveCBpbXBsZW1lbnRzIENvbWJvYm94SW50ZXJmYWNlLCBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gaXRlbSBpcyBzZWxlY3RlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPENvbWJvYm94U2VsZWN0aW9uQ2hhbmdlRXZlbnQ+KCk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdzZWFyY2hJbnB1dEVsZW1lbnQnKVxuICAgIHNlYXJjaElucHV0RWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnY29udHJvbFRlbXBsYXRlJylcbiAgICBjb250cm9sVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2xpc3RUZW1wbGF0ZScpXG4gICAgbGlzdFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VsZWN0ZWRFbGVtZW50PzogT3B0aW9uSXRlbTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHJlYWRvbmx5IGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSByZWFkb25seSBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgcmVhZG9ubHkgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSByZWFkb25seSBuZ0Zvcm06IE5nRm9ybSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcmVhZG9ubHkgZGlhbG9nQ29uZmlnOiBEaWFsb2dDb25maWcsXG4gICAgICAgIHJlYWRvbmx5IF9keW5hbWljQ29tcG9uZW50U2VydmljZTogRHluYW1pY0NvbXBvbmVudFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2luamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChEQVRBX1BST1ZJREVSUykgcHJpdmF0ZSBwcm92aWRlcnM6IE1hcDxzdHJpbmcsIERhdGFQcm92aWRlcjxhbnk+PixcbiAgICAgICAgcmVhZG9ubHkgX2NvbWJvYm94Q29uZmlnOiBDb21ib2JveENvbmZpZyxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgQEhvc3QoKSBASW5qZWN0KEZEX0ZPUk1fRklFTEQpIGZvcm1GaWVsZDogUGxhdGZvcm1Gb3JtRmllbGQsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIEBIb3N0KCkgQEluamVjdChGRF9GT1JNX0ZJRUxEX0NPTlRST0wpIGZvcm1Db250cm9sOiBQbGF0Zm9ybUZvcm1GaWVsZENvbnRyb2xcbiAgICApIHtcbiAgICAgICAgc3VwZXIoXG4gICAgICAgICAgICBjZCxcbiAgICAgICAgICAgIGVsZW1lbnRSZWYsXG4gICAgICAgICAgICBuZ0NvbnRyb2wsXG4gICAgICAgICAgICBjb250cm9sQ29udGFpbmVyLFxuICAgICAgICAgICAgbmdGb3JtLFxuICAgICAgICAgICAgZGlhbG9nQ29uZmlnLFxuICAgICAgICAgICAgX2NvbWJvYm94Q29uZmlnLFxuICAgICAgICAgICAgZm9ybUZpZWxkLFxuICAgICAgICAgICAgZm9ybUNvbnRyb2xcbiAgICAgICAgKTtcbiAgICB9XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgY29uc3QgcHJvdmlkZXJzID0gdGhpcy5wcm92aWRlcnM/LnNpemUgPT09IDAgPyB0aGlzLl9jb21ib2JveENvbmZpZy5wcm92aWRlcnMgOiB0aGlzLnByb3ZpZGVycztcbiAgICAgICAgLy8gaWYgd2UgaGF2ZSBib3RoIHByZWZlciBkYXRhU291cmNlXG4gICAgICAgIGlmICghdGhpcy5kYXRhU291cmNlICYmIHRoaXMuZW50aXR5Q2xhc3MgJiYgcHJvdmlkZXJzPy5oYXModGhpcy5lbnRpdHlDbGFzcykpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBDb21ib0JveERhdGFTb3VyY2UocHJvdmlkZXJzLmdldCh0aGlzLmVudGl0eUNsYXNzKSEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuXG4gICAgICAgIGlmICh0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgdGhpcy5fc2V0VXBNb2JpbGVNb2RlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkJsdXIoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubW9iaWxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC5yZWxhdGVkVGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBpZiAodGFyZ2V0KSB7XG4gICAgICAgICAgICBjb25zdCBpc0xpc3QgPSAhIXRhcmdldC5jbG9zZXN0KCcuZmRwLWNvbWJvYm94X19saXN0LWNvbnRhaW5lcicpO1xuICAgICAgICAgICAgY29uc3QgaXNMaXN0SXRlbSA9ICEhdGFyZ2V0LmNsb3Nlc3QoJy5mZC1saXN0X19pdGVtJyk7XG4gICAgICAgICAgICBpZiAoaXNMaXN0IHx8IGlzTGlzdEl0ZW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoKCF0aGlzLl9zZWxlY3RlZEVsZW1lbnQgJiYgIXRoaXMuaW5wdXRUZXh0KSB8fCB0aGlzLl9zZWxlY3RlZEVsZW1lbnQ/LmxhYmVsID09PSB0aGlzLmlucHV0VGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3B0aW9uSXRlbSA9IHRoaXMuX2dldFNlbGVjdGVkT3B0aW9uSXRlbSh0aGlzLmlucHV0VGV4dCk7XG5cbiAgICAgICAgdGhpcy5fdXBkYXRlTW9kZWwob3B0aW9uSXRlbSA/IG9wdGlvbkl0ZW0udmFsdWUgOiB0aGlzLmlucHV0VGV4dCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gTWV0aG9kIHRvIGVtaXQgY2hhbmdlIGV2ZW50ICovXG4gICAgZW1pdENoYW5nZUV2ZW50PFQ+KG1vZGVsVmFsdWU6IFQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgQ29tYm9ib3hTZWxlY3Rpb25DaGFuZ2VFdmVudCh0aGlzLCBtb2RlbFZhbHVlKTtcblxuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBNZXRob2QgdG8gc2V0IHNlbGVjdGVkIGl0ZW0gKi9cbiAgICBzZWxlY3RPcHRpb25JdGVtKGl0ZW06IE9wdGlvbkl0ZW0pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubW9iaWxlKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEVsZW1lbnQgPSBpdGVtO1xuICAgICAgICAgICAgdGhpcy5pbnB1dFRleHQgPSBpdGVtLmxhYmVsO1xuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5wdXRUZXh0ID0gaXRlbS5sYWJlbDtcbiAgICAgICAgdGhpcy5fY2hlY2tBbmRVcGRhdGUoaXRlbSk7XG4gICAgICAgIHRoaXMuaXNPcGVuQ2hhbmdlSGFuZGxlKGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBNZXRob2QgdG8gc2V0IGFzIHNlbGVjdGVkICovXG4gICAgc2V0QXNTZWxlY3RlZChpdGVtOiBPcHRpb25JdGVtW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gaXRlbVswXTtcblxuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGVkT3B0aW9uSXRlbShzZWxlY3RlZEl0ZW0pKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zZWxlY3RlZEVsZW1lbnQgPSAodGhpcy5pc0dyb3VwICYmIHNlbGVjdGVkSXRlbT8uY2hpbGRyZW4/LlswXSkgfHwgc2VsZWN0ZWRJdGVtO1xuICAgICAgICB0aGlzLmlucHV0VGV4dCA9IHRoaXMuZGlzcGxheVZhbHVlKHRoaXMuX3NlbGVjdGVkRWxlbWVudCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gRGVmaW5lIGlzIHNlbGVjdGVkIGl0ZW0gc2VsZWN0ZWQgKi9cbiAgICBpc1NlbGVjdGVkT3B0aW9uSXRlbShzZWxlY3RlZEl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKHRoaXMubG9va3VwS2V5ICYmIHRoaXMubG9va3VwVmFsdWUodGhpcy5fc2VsZWN0ZWRFbGVtZW50KSA9PT0gdGhpcy5sb29rdXBWYWx1ZShzZWxlY3RlZEl0ZW0pKSB8fFxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5VmFsdWUodGhpcy5fc2VsZWN0ZWRFbGVtZW50KSA9PT0gdGhpcy5kaXNwbGF5VmFsdWUoc2VsZWN0ZWRJdGVtKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIERlZmluZSBpcyBzZWxlY3RlZCBpdGVtIHNlbGVjdGVkIGJ5IGRpc3BsYXkgdmFsdWUgKi9cbiAgICBpc1NlbGVjdGVkT3B0aW9uSXRlbUJ5RGlzcGxheVZhbHVlKHNlbGVjdGVkSXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEVsZW1lbnQ/LmxhYmVsID09PSBzZWxlY3RlZEl0ZW07XG4gICAgfVxuXG4gICAgLyoqIEhhbmRsZSBkaWFsb2cgZGlzbWlzc2luZywgY2xvc2VzIHBvcG92ZXIgYW5kIHNldHMgYmFja3VwIGRhdGEuICovXG4gICAgZGlhbG9nRGlzbWlzcyh0ZXJtOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkRWxlbWVudD8ubGFiZWwgIT09IHRlcm0pIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRWxlbWVudCA9IHRoaXMuX2dldFNlbGVjdGVkT3B0aW9uSXRlbSh0ZXJtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5wdXRUZXh0ID0gdGVybTtcbiAgICAgICAgdGhpcy5pc09wZW5DaGFuZ2VIYW5kbGUoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBIYW5kbGUgZGlhbG9nIGFwcHJvdmFsLCBjbG9zZXMgcG9wb3ZlciBhbmQgcHJvcGFnYXRlcyBkYXRhIGNoYW5nZXMuICovXG4gICAgZGlhbG9nQXBwcm92ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkRWxlbWVudD8ubGFiZWwgPT09IHRoaXMuaW5wdXRUZXh0KSB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVNb2RlbCh0aGlzLl9zZWxlY3RlZEVsZW1lbnQudmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgb3B0aW9uSXRlbSA9IHRoaXMuX2dldFNlbGVjdGVkT3B0aW9uSXRlbSh0aGlzLmlucHV0VGV4dCk7XG5cbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZU1vZGVsKG9wdGlvbkl0ZW0gPyBvcHRpb25JdGVtLnZhbHVlIDogdGhpcy5pbnB1dFRleHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc09wZW5DaGFuZ2VIYW5kbGUoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIGlmIG5vdCBzZWxlY3RlZCB1cGRhdGUgbW9kZWwgKi9cbiAgICBwcml2YXRlIF9jaGVja0FuZFVwZGF0ZShtb2RlbFZhbHVlOiBPcHRpb25JdGVtKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzU2VsZWN0ZWRPcHRpb25JdGVtKG1vZGVsVmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcHRpb25JdGVtID0gdGhpcy5fZ2V0U2VsZWN0ZWRPcHRpb25JdGVtKHRoaXMuaW5wdXRUZXh0KTtcblxuICAgICAgICB0aGlzLl91cGRhdGVNb2RlbChvcHRpb25JdGVtID8gb3B0aW9uSXRlbS52YWx1ZSA6IHRoaXMuaW5wdXRUZXh0KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBVcGRhdGUgbW9kZWwgKi9cbiAgICBwcml2YXRlIF91cGRhdGVNb2RlbCh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIC8vIHNldHRpbmcgdmFsdWUsIGl0IHdpbGwgY2FsbCBzZXRWYWx1ZSgpXG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICB0aGlzLmVtaXRDaGFuZ2VFdmVudCh2YWx1ZSA/IHZhbHVlIDogbnVsbCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGFzeW5jIF9zZXRVcE1vYmlsZU1vZGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgICAgICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogQ09NQk9CT1hfQ09NUE9ORU5ULCB1c2VWYWx1ZTogdGhpcyB9XSxcbiAgICAgICAgICAgIHBhcmVudDogdGhpcy5faW5qZWN0b3JcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fZHluYW1pY0NvbXBvbmVudFNlcnZpY2UuY3JlYXRlRHluYW1pY0NvbXBvbmVudChcbiAgICAgICAgICAgIHsgbGlzdFRlbXBsYXRlOiB0aGlzLmxpc3RUZW1wbGF0ZSwgY29udHJvbFRlbXBsYXRlOiB0aGlzLmNvbnRyb2xUZW1wbGF0ZSB9LFxuICAgICAgICAgICAgQ29tYm9ib3hNb2JpbGVDb21wb25lbnQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyUmVmOiB0aGlzLl92aWV3Q29udGFpbmVyUmVmXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyBpbmplY3RvciB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRTZWxlY3RlZE9wdGlvbkl0ZW0odGV4dDogc3RyaW5nKTogT3B0aW9uSXRlbSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICghdGhpcy5pc0dyb3VwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fc3VnZ2VzdGlvbnMuZmluZCgoaXRlbSkgPT4gaXRlbS5sYWJlbCA9PT0gdGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fc3VnZ2VzdGlvbnNcbiAgICAgICAgICAgIC5yZWR1Y2UoKHJlc3VsdDogT3B0aW9uSXRlbVtdLCBpdGVtOiBPcHRpb25JdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4uKGl0ZW0uY2hpbGRyZW4gPz8gW10pKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9LCBbXSlcbiAgICAgICAgICAgIC5maW5kKChpdGVtKSA9PiBpdGVtLmxhYmVsID09PSB0ZXh0KTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibW9iaWxlID8gbW9iaWxlVGVtcGxhdGUgOiBkZXNrdG9wVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNkZXNrdG9wVGVtcGxhdGU+XG4gICAgPGZkLXBvcG92ZXJcbiAgICAgICAgW2lzT3Blbl09XCJpc09wZW4gJiYgX3N1Z2dlc3Rpb25zLmxlbmd0aCA+IDBcIlxuICAgICAgICAoaXNPcGVuQ2hhbmdlKT1cImlzT3BlbkNoYW5nZUhhbmRsZSgkZXZlbnQpXCJcbiAgICAgICAgW2ZpbGxDb250cm9sTW9kZV09XCJmaWxsQ29udHJvbE1vZGVcIlxuICAgICAgICBbZm9jdXNUcmFwcGVkXT1cInRydWVcIlxuICAgICAgICBbdHJpZ2dlcnNdPVwidHJpZ2dlcnNcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHlcIlxuICAgICAgICBbbWF4V2lkdGhdPVwiYXV0b1Jlc2l6ZSA/IG51bGwgOiBtaW5XaWR0aFwiXG4gICAgICAgIFtjbG9zZU9uT3V0c2lkZUNsaWNrXT1cImNsb3NlT25PdXRzaWRlQ2xpY2tcIlxuICAgICAgICBhZGRpdGlvbmFsQm9keUNsYXNzPVwiZmRwLWNvbWJvYm94X19wb3BvdmVyXCJcbiAgICA+XG4gICAgICAgIDxmZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udHJvbFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZmQtcG9wb3Zlci1jb250cm9sPlxuICAgICAgICA8ZmQtcG9wb3Zlci1ib2R5IFtoaWRkZW5dPVwiX3N1Z2dlc3Rpb25zLmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxpc3RUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2ZkLXBvcG92ZXItYm9keT5cbiAgICA8L2ZkLXBvcG92ZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21vYmlsZVRlbXBsYXRlPlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udHJvbFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NvbnRyb2xUZW1wbGF0ZT5cbiAgICA8ZmQtZm9ybS1pbnB1dC1tZXNzYWdlLWdyb3VwPlxuICAgICAgICA8ZmQtaW5wdXQtZ3JvdXBcbiAgICAgICAgICAgIFtpZF09XCJpZCArICctaW5wdXQtZ3JvdXAtY29udGFpbmVyJ1wiXG4gICAgICAgICAgICBbYnV0dG9uXT1cIiFyZWFkb25seVwiXG4gICAgICAgICAgICBbZ2x5cGhdPVwiIXJlYWRvbmx5ID8gJ25hdmlnYXRpb24tZG93bi1hcnJvdycgOiAnICdcIlxuICAgICAgICAgICAgW3N0YXRlXT1cIm1vYmlsZSAmJiBpc09wZW4gPyBudWxsIDogc3RhdGVcIlxuICAgICAgICAgICAgW2J1dHRvbkZvY3VzYWJsZV09XCJidXR0b25Gb2N1c2FibGVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgICBbaXNDb250cm9sXT1cInRydWVcIlxuICAgICAgICAgICAgKGFkZE9uQnV0dG9uQ2xpY2tlZCk9XCJvblByaW1hcnlCdXR0b25DbGljaygpXCJcbiAgICAgICAgICAgIFtpc0V4cGFuZGVkXT1cIiFtb2JpbGUgJiYgaXNPcGVuICYmIF9zdWdnZXN0aW9ucy5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgW2dseXBoQXJpYUxhYmVsXT1cImFyaWFMYWJlbFwiXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlbkluTW9iaWxlTW9kZSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgI3NlYXJjaElucHV0RWxlbWVudFxuICAgICAgICAgICAgICAgIGZkcC1hdXRvLWNvbXBsZXRlXG4gICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiX3N1Z2dlc3Rpb25zXCJcbiAgICAgICAgICAgICAgICBbaW5wdXRUZXh0XT1cImlucHV0VGV4dFwiXG4gICAgICAgICAgICAgICAgW21vYmlsZV09XCJtb2JpbGVcIlxuICAgICAgICAgICAgICAgIChvbkNvbXBsZXRlKT1cIl9vbkNvbXBsZXRlVGVybSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgcm9sZT1cImNvbWJvYm94XCJcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtYXV0b2NvbXBsZXRlXT1cImF1dG9Db21wbGV0ZSAmJiAhbW9iaWxlID8gJ2xpc3QnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1vd25zXT1cImF1dG9Db21wbGV0ZSAmJiAhbW9iaWxlID8gaWQgKyAnLXJlc3VsdCcgOiBudWxsXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cImF1dG9Db21wbGV0ZSAmJiAhbW9iaWxlXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICBmZC1pbnB1dC1ncm91cC1pbnB1dFxuICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgW2lkXT1cImlkXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJuYW1lXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbklucHV0S2V5ZG93bkhhbmRsZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJpbnB1dFRleHRcIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlYXJjaFRlcm1DaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uVG91Y2hlZCgpXCJcbiAgICAgICAgICAgICAgICAoYmx1cik9XCJfb25CbHVyKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNPcGVuICYmIF9zdWdnZXN0aW9ucy5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9mZC1pbnB1dC1ncm91cD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZkcC1jb21ib2JveF9fY291bnQtbGlzdC1yZXN1bHRzXCIgcm9sZT1cInN0YXR1c1wiICpuZ0lmPVwiaXNPcGVuXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX2ZsYXRTdWdnZXN0aW9ucz8ubGVuZ3RoIHx8ICcwJyBhcyBjb3VudFwiPlxuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgIChjb3VudCA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAncGxhdGZvcm1Db21ib2JveC5jb3VudExpc3RSZXN1bHRzU2luZ3VsYXInXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICdwbGF0Zm9ybUNvbWJvYm94LmNvdW50TGlzdFJlc3VsdHNQbHVyYWwnXG4gICAgICAgICAgICAgICAgICAgICkgfCBmZFRyYW5zbGF0ZSA6IHsgY291bnQ6IGNvdW50IH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZmQtZm9ybS1tZXNzYWdlXG4gICAgICAgICAgICAqbmdJZj1cIm1vYmlsZSB8fCBpc09wZW4gPyBudWxsIDogISFzdGF0ZU1lc3NhZ2VcIlxuICAgICAgICAgICAgW3R5cGVdPVwic3RhdGVcIlxuICAgICAgICAgICAgW2lubmVySHRtbF09XCJzdGF0ZU1lc3NhZ2VcIlxuICAgICAgICA+PC9mZC1mb3JtLW1lc3NhZ2U+XG4gICAgPC9mZC1mb3JtLWlucHV0LW1lc3NhZ2UtZ3JvdXA+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2xpc3RUZW1wbGF0ZT5cbiAgICA8dWxcbiAgICAgICAgZmQtbGlzdFxuICAgICAgICBbaGFzTWVzc2FnZV09XCIhIXN0YXRlTWVzc2FnZVwiXG4gICAgICAgIChmb2N1c0VzY2FwZUxpc3QpPVwiaGFuZGxlTGlzdEZvY3VzRXNjYXBlKCRldmVudClcIlxuICAgICAgICBbZHJvcGRvd25Nb2RlXT1cInRydWVcIlxuICAgICAgICBjbGFzcz1cImZkcC1jb21ib2JveF9fbGlzdFwiXG4gICAgICAgIFtoYXNNZXNzYWdlXT1cIiEhc3RhdGVNZXNzYWdlIHx8ICghIWFkdmFuY2VkU3RhdGVNZXNzYWdlPy5oYXNFcnJvcnMgJiYgISFhZHZhbmNlZFN0YXRlTWVzc2FnZT8udGVtcGxhdGUpXCJcbiAgICAgICAgW2lkXT1cImlkICsgJy1yZXN1bHQnXCJcbiAgICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgICBbYnlsaW5lXT1cImJ5bGluZVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJpZCArICctc2VhcmNoJ1wiXG4gICAgICAgIFtzdHlsZS5tYXhIZWlnaHRdPVwiIW1vYmlsZSAmJiBtYXhIZWlnaHRcIlxuICAgICAgICBbc3R5bGUubWF4V2lkdGhdPVwiYXV0b1Jlc2l6ZSAmJiBtYXhXaWR0aCArICdweCdcIlxuICAgID5cbiAgICAgICAgPGxpXG4gICAgICAgICAgICAqbmdJZj1cInN0YXRlTWVzc2FnZVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInN0YXRlTWVzc2FnZVwiXG4gICAgICAgICAgICBmZC1saXN0LW1lc3NhZ2VcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgICAgICAgICBbdHlwZV09XCJzdGF0ZSB8fCAnZGVmYXVsdCdcIlxuICAgICAgICAgICAgW2lubmVySHRtbF09XCJzdGF0ZU1lc3NhZ2VcIlxuICAgICAgICA+PC9saT5cblxuICAgICAgICA8bGlcbiAgICAgICAgICAgICpuZ0lmPVwiYWR2YW5jZWRTdGF0ZU1lc3NhZ2U/Lmhhc0Vycm9ycyAmJiBhZHZhbmNlZFN0YXRlTWVzc2FnZT8udGVtcGxhdGVcIlxuICAgICAgICAgICAgZmQtbGlzdC1tZXNzYWdlXG4gICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgICAgICAgICAgW3R5cGVdPVwic3RhdGUgfHwgJ2RlZmF1bHQnXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImFkdmFuY2VkU3RhdGVNZXNzYWdlIS50ZW1wbGF0ZSFcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2xpPlxuXG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzR3JvdXBcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIF9zdWdnZXN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZ3JvdXBJdGVtVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxpIGZkLWxpc3QtZ3JvdXAtaGVhZGVyIHJvbGU9XCJvcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGUgW2F0dHIudGl0bGVdPVwiZ3JvdXAubGFiZWxcIj57eyBncm91cC5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncm91cEl0ZW1UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJncm91cEl0ZW1UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHsgbGFiZWw6IGdyb3VwLmxhYmVsIH0gfVwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uSXRlbSBvZiBncm91cC5jaGlsZHJlbjsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVPcHRpb25JdGVtKG9wdGlvbkl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgZmQtbGlzdC1pdGVtXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgIChrZXlEb3duKT1cImhhbmRsZVByZXNzRW50ZXIoJGV2ZW50LCBvcHRpb25JdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJpc1NlbGVjdGVkT3B0aW9uSXRlbShvcHRpb25JdGVtKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJsaXN0SXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBvcHRpb25JdGVtOiBvcHRpb25JdGVtLCBpbmRleDogaSB9XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0dyb3VwXCI+XG4gICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uSXRlbSBvZiBfc3VnZ2VzdGlvbnM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVPcHRpb25JdGVtKG9wdGlvbkl0ZW0pXCJcbiAgICAgICAgICAgICAgICBmZC1saXN0LWl0ZW1cbiAgICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiMFwiXG4gICAgICAgICAgICAgICAgKGtleURvd24pPVwiaGFuZGxlUHJlc3NFbnRlcigkZXZlbnQsIG9wdGlvbkl0ZW0pXCJcbiAgICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwiaXNTZWxlY3RlZE9wdGlvbkl0ZW0ob3B0aW9uSXRlbSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibGlzdEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBvcHRpb25JdGVtOiBvcHRpb25JdGVtLCBpbmRleDogaSB9XCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3VsPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlIGxldC1vcHRpb25JdGVtPVwib3B0aW9uSXRlbVwiIGxldC1pbmRleD1cImluZGV4XCIgI2xpc3RJdGVtPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJpc1NlbGVjdGVkT3B0aW9uSXRlbShvcHRpb25JdGVtKSAmJiAhIXNlbGVjdGVkSXRlbVRlbXBsYXRlXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwic2VsZWN0ZWRJdGVtVGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG9wdGlvbkl0ZW0udmFsdWUsIGluZGV4OiBpbmRleCB9XCJcbiAgICA+PC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIShpc1NlbGVjdGVkT3B0aW9uSXRlbShvcHRpb25JdGVtKSAmJiBzZWxlY3RlZEl0ZW1UZW1wbGF0ZSlcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwib3B0aW9uSXRlbVNvdXJjZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBvcHRpb25JdGVtOiBvcHRpb25JdGVtLCBpbmRleDogaW5kZXggfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJzZWNvbmRhcnlUZXh0U291cmNlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IG9wdGlvbkl0ZW06IG9wdGlvbkl0ZW0gfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSBsZXQtb3B0aW9uSXRlbT1cIm9wdGlvbkl0ZW1cIiBsZXQtaW5kZXg9XCJpbmRleFwiICNvcHRpb25JdGVtU291cmNlPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhb3B0aW9uSXRlbVRlbXBsYXRlXCI+XG4gICAgICAgIDxzcGFuIFthdHRyLnRpdGxlXT1cIm9wdGlvbkl0ZW0ubGFiZWxcIiBbaW5uZXJIVE1MXT1cIm9wdGlvbkl0ZW0ubGFiZWwgfCBoaWdobGlnaHQgOiBpbnB1dFRleHRcIj48L3NwYW4+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib3B0aW9uSXRlbVRlbXBsYXRlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm9wdGlvbkl0ZW1UZW1wbGF0ZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG9wdGlvbkl0ZW0udmFsdWUsIGluZGV4OiBpbmRleCB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlIGxldC1vcHRpb25JdGVtPVwib3B0aW9uSXRlbVwiICNzZWNvbmRhcnlUZXh0U291cmNlPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93U2Vjb25kYXJ5VGV4dFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNlY29uZGFyeUl0ZW1UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBbc3R5bGUudGV4dC1hbGlnbl09XCJzZWNvbmRhcnlUZXh0QWxpZ25tZW50XCJcbiAgICAgICAgICAgICAgICBmZC1saXN0LXNlY29uZGFyeVxuICAgICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cIm9wdGlvbkl0ZW0uc2Vjb25kYXJ5VGV4dFwiXG4gICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJvcHRpb25JdGVtLnNlY29uZGFyeVRleHQgfCBoaWdobGlnaHQgOiBpbnB1dFRleHRcIlxuICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlY29uZGFyeUl0ZW1UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlY29uZGFyeUl0ZW1UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBvcHRpb25JdGVtLnZhbHVlIH1cIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
262
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vY29tYm9ib3gvY29tYm9ib3gvY29tYm9ib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vY29tYm9ib3gvY29tYm9ib3gvY29tYm9ib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osSUFBSSxFQUNKLE1BQU0sRUFDTixRQUFRLEVBRVIsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBQ0osUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsYUFBYSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFbEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLCtCQUErQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDOUcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsY0FBYyxFQUdkLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDM0IsTUFBTSxrQ0FBa0MsQ0FBQztBQUUxQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxp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QWdCO3dCQUNoQixnQkFBZ0I7d0JBQ2hCLHVCQUF1Qjt3QkFDdkIsb0JBQW9CO3dCQUNwQiw4QkFBOEI7d0JBQzlCLGdCQUFnQjt3QkFDaEIsV0FBVzt3QkFDWCxxQkFBcUI7d0JBQ3JCLElBQUk7d0JBQ0osb0JBQW9CO3dCQUNwQixVQUFVO3dCQUNWLEtBQUs7d0JBQ0wsT0FBTzt3QkFDUCxzQkFBc0I7d0JBQ3RCLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixvQkFBb0I7cUJBQ3ZCOzswQkF5QkksUUFBUTs7MEJBQUksSUFBSTs7MEJBQ2hCLFFBQVE7OzBCQUFJLFFBQVE7OzBCQUNwQixRQUFROzswQkFBSSxJQUFJOzswQkFDaEIsUUFBUTs7MEJBSVIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxjQUFjOzswQkFFakMsUUFBUTs7MEJBQUksUUFBUTs7MEJBQUksSUFBSTs7MEJBQUksTUFBTTsyQkFBQyxhQUFhOzswQkFDcEQsUUFBUTs7MEJBQUksUUFBUTs7MEJBQUksSUFBSTs7MEJBQUksTUFBTTsyQkFBQyxxQkFBcUI7NENBOUJqRSxlQUFlO3NCQURkLE1BQU07Z0JBSVAsa0JBQWtCO3NCQURqQixTQUFTO3VCQUFDLG9CQUFvQjtnQkFLL0IsZUFBZTtzQkFEZCxTQUFTO3VCQUFDLGlCQUFpQjtnQkFLNUIsWUFBWTtzQkFEWCxTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3QsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdG9yLFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgU2VsZixcbiAgICBTa2lwU2VsZixcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xDb250YWluZXIsIEZvcm1zTW9kdWxlLCBOZ0NvbnRyb2wsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZEX0ZPUk1fRklFTEQsIEZEX0ZPUk1fRklFTERfQ09OVFJPTCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL2Zvcm1zJztcblxuaW1wb3J0IHsgRHluYW1pY0NvbXBvbmVudFNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eU1vZHVsZSwgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVycyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuaW1wb3J0IHsgRGlhbG9nQ29uZmlnIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RpYWxvZyc7XG5pbXBvcnQge1xuICAgIENvbWJvQm94RGF0YVNvdXJjZSxcbiAgICBEQVRBX1BST1ZJREVSUyxcbiAgICBEYXRhUHJvdmlkZXIsXG4gICAgT3B0aW9uSXRlbSxcbiAgICBQbGF0Zm9ybUZvcm1GaWVsZCxcbiAgICBQbGF0Zm9ybUZvcm1GaWVsZENvbnRyb2xcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zaGFyZWQnO1xuXG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ0ZvciwgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTZWFyY2hIaWdobGlnaHRQaXBlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgRm9ybUlucHV0TWVzc2FnZUdyb3VwQ29tcG9uZW50LCBGb3JtTWVzc2FnZUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9mb3JtJztcbmltcG9ydCB7IElucHV0R3JvdXBNb2R1bGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvaW5wdXQtZ3JvdXAnO1xuaW1wb3J0IHsgTGlzdE1vZHVsZSwgTGlzdFNlY29uZGFyeURpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9saXN0JztcbmltcG9ydCB7IFBvcG92ZXJCb2R5Q29tcG9uZW50LCBQb3BvdmVyQ29tcG9uZW50LCBQb3BvdmVyQ29udHJvbENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9wb3BvdmVyJztcbmltcG9ydCB7IEZkVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQgeyBBdXRvQ29tcGxldGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9hdXRvLWNvbXBsZXRlL2F1dG8tY29tcGxldGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IENvbWJvYm94TW9iaWxlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tYm9ib3gtbW9iaWxlL2NvbWJvYm94L2NvbWJvYm94LW1vYmlsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tYm9ib3hDb25maWcgfSBmcm9tICcuLi9jb21ib2JveC5jb25maWcnO1xuaW1wb3J0IHsgQ09NQk9CT1hfQ09NUE9ORU5ULCBDb21ib2JveEludGVyZmFjZSB9IGZyb20gJy4uL2NvbWJvYm94LmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYXNlQ29tYm9ib3ggfSBmcm9tICcuLi9jb21tb25zL2Jhc2UtY29tYm9ib3gnO1xuXG5leHBvcnQgY2xhc3MgQ29tYm9ib3hTZWxlY3Rpb25DaGFuZ2VFdmVudCB7XG4gICAgLyoqXG4gICAgICogQ29tYm9ib3ggc2VsZWN0aW9uIGV2ZW50XG4gICAgICogQHBhcmFtIHNvdXJjZSBDb21ib2JveCBjb21wb25lbnRcbiAgICAgKiBAcGFyYW0gcGF5bG9hZCBTZWxlY3RlZCBvcHRpb25cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHNvdXJjZTogQ29tYm9ib3hDb21wb25lbnQsXG4gICAgICAgIHB1YmxpYyBwYXlsb2FkOiBhbnkgLy8gQ29udGFpbnMgc2VsZWN0ZWQgaXRlbVxuICAgICkge31cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtY29tYm9ib3gnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb21ib2JveC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY29tYm9ib3guY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IEZEX0ZPUk1fRklFTERfQ09OVFJPTCwgdXNlRXhpc3Rpbmc6IENvbWJvYm94Q29tcG9uZW50LCBtdWx0aTogdHJ1ZSB9LFxuICAgICAgICBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzKClcbiAgICBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBQb3BvdmVyQ29tcG9uZW50LFxuICAgICAgICBQb3BvdmVyQ29udHJvbENvbXBvbmVudCxcbiAgICAgICAgUG9wb3ZlckJvZHlDb21wb25lbnQsXG4gICAgICAgIEZvcm1JbnB1dE1lc3NhZ2VHcm91cENvbXBvbmVudCxcbiAgICAgICAgSW5wdXRHcm91cE1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIEF1dG9Db21wbGV0ZURpcmVjdGl2ZSxcbiAgICAgICAgTmdJZixcbiAgICAgICAgRm9ybU1lc3NhZ2VDb21wb25lbnQsXG4gICAgICAgIExpc3RNb2R1bGUsXG4gICAgICAgIE5nRm9yLFxuICAgICAgICBOZ0NsYXNzLFxuICAgICAgICBMaXN0U2Vjb25kYXJ5RGlyZWN0aXZlLFxuICAgICAgICBTZWFyY2hIaWdobGlnaHRQaXBlLFxuICAgICAgICBGZFRyYW5zbGF0ZVBpcGUsXG4gICAgICAgIENvbnRlbnREZW5zaXR5TW9kdWxlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBDb21ib2JveENvbXBvbmVudCBleHRlbmRzIEJhc2VDb21ib2JveCBpbXBsZW1lbnRzIENvbWJvYm94SW50ZXJmYWNlLCBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gaXRlbSBpcyBzZWxlY3RlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPENvbWJvYm94U2VsZWN0aW9uQ2hhbmdlRXZlbnQ+KCk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdzZWFyY2hJbnB1dEVsZW1lbnQnKVxuICAgIHNlYXJjaElucHV0RWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnY29udHJvbFRlbXBsYXRlJylcbiAgICBjb250cm9sVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2xpc3RUZW1wbGF0ZScpXG4gICAgbGlzdFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VsZWN0ZWRFbGVtZW50PzogT3B0aW9uSXRlbTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHJlYWRvbmx5IGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSByZWFkb25seSBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgcmVhZG9ubHkgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSByZWFkb25seSBuZ0Zvcm06IE5nRm9ybSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcmVhZG9ubHkgZGlhbG9nQ29uZmlnOiBEaWFsb2dDb25maWcsXG4gICAgICAgIHJlYWRvbmx5IF9keW5hbWljQ29tcG9uZW50U2VydmljZTogRHluYW1pY0NvbXBvbmVudFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2luamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChEQVRBX1BST1ZJREVSUykgcHJpdmF0ZSBwcm92aWRlcnM6IE1hcDxzdHJpbmcsIERhdGFQcm92aWRlcjxhbnk+PixcbiAgICAgICAgcmVhZG9ubHkgX2NvbWJvYm94Q29uZmlnOiBDb21ib2JveENvbmZpZyxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgQEhvc3QoKSBASW5qZWN0KEZEX0ZPUk1fRklFTEQpIGZvcm1GaWVsZDogUGxhdGZvcm1Gb3JtRmllbGQsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIEBIb3N0KCkgQEluamVjdChGRF9GT1JNX0ZJRUxEX0NPTlRST0wpIGZvcm1Db250cm9sOiBQbGF0Zm9ybUZvcm1GaWVsZENvbnRyb2xcbiAgICApIHtcbiAgICAgICAgc3VwZXIoXG4gICAgICAgICAgICBjZCxcbiAgICAgICAgICAgIGVsZW1lbnRSZWYsXG4gICAgICAgICAgICBuZ0NvbnRyb2wsXG4gICAgICAgICAgICBjb250cm9sQ29udGFpbmVyLFxuICAgICAgICAgICAgbmdGb3JtLFxuICAgICAgICAgICAgZGlhbG9nQ29uZmlnLFxuICAgICAgICAgICAgX2NvbWJvYm94Q29uZmlnLFxuICAgICAgICAgICAgZm9ybUZpZWxkLFxuICAgICAgICAgICAgZm9ybUNvbnRyb2xcbiAgICAgICAgKTtcbiAgICB9XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgY29uc3QgcHJvdmlkZXJzID0gdGhpcy5wcm92aWRlcnM/LnNpemUgPT09IDAgPyB0aGlzLl9jb21ib2JveENvbmZpZy5wcm92aWRlcnMgOiB0aGlzLnByb3ZpZGVycztcbiAgICAgICAgLy8gaWYgd2UgaGF2ZSBib3RoIHByZWZlciBkYXRhU291cmNlXG4gICAgICAgIGlmICghdGhpcy5kYXRhU291cmNlICYmIHRoaXMuZW50aXR5Q2xhc3MgJiYgcHJvdmlkZXJzPy5oYXModGhpcy5lbnRpdHlDbGFzcykpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBDb21ib0JveERhdGFTb3VyY2UocHJvdmlkZXJzLmdldCh0aGlzLmVudGl0eUNsYXNzKSEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuXG4gICAgICAgIGlmICh0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgdGhpcy5fc2V0VXBNb2JpbGVNb2RlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkJsdXIoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubW9iaWxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC5yZWxhdGVkVGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBpZiAodGFyZ2V0KSB7XG4gICAgICAgICAgICBjb25zdCBpc0xpc3QgPSAhIXRhcmdldC5jbG9zZXN0KCcuZmRwLWNvbWJvYm94X19saXN0LWNvbnRhaW5lcicpO1xuICAgICAgICAgICAgY29uc3QgaXNMaXN0SXRlbSA9ICEhdGFyZ2V0LmNsb3Nlc3QoJy5mZC1saXN0X19pdGVtJyk7XG4gICAgICAgICAgICBpZiAoaXNMaXN0IHx8IGlzTGlzdEl0ZW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoKCF0aGlzLl9zZWxlY3RlZEVsZW1lbnQgJiYgIXRoaXMuaW5wdXRUZXh0KSB8fCB0aGlzLl9zZWxlY3RlZEVsZW1lbnQ/LmxhYmVsID09PSB0aGlzLmlucHV0VGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3B0aW9uSXRlbSA9IHRoaXMuX2dldFNlbGVjdGVkT3B0aW9uSXRlbSh0aGlzLmlucHV0VGV4dCk7XG5cbiAgICAgICAgdGhpcy5fdXBkYXRlTW9kZWwob3B0aW9uSXRlbSA/IG9wdGlvbkl0ZW0udmFsdWUgOiB0aGlzLmlucHV0VGV4dCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gTWV0aG9kIHRvIGVtaXQgY2hhbmdlIGV2ZW50ICovXG4gICAgZW1pdENoYW5nZUV2ZW50PFQ+KG1vZGVsVmFsdWU6IFQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgQ29tYm9ib3hTZWxlY3Rpb25DaGFuZ2VFdmVudCh0aGlzLCBtb2RlbFZhbHVlKTtcblxuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBNZXRob2QgdG8gc2V0IHNlbGVjdGVkIGl0ZW0gKi9cbiAgICBzZWxlY3RPcHRpb25JdGVtKGl0ZW06IE9wdGlvbkl0ZW0pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubW9iaWxlKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEVsZW1lbnQgPSBpdGVtO1xuICAgICAgICAgICAgdGhpcy5pbnB1dFRleHQgPSBpdGVtLmxhYmVsO1xuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5wdXRUZXh0ID0gaXRlbS5sYWJlbDtcbiAgICAgICAgdGhpcy5fY2hlY2tBbmRVcGRhdGUoaXRlbSk7XG4gICAgICAgIHRoaXMuaXNPcGVuQ2hhbmdlSGFuZGxlKGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBNZXRob2QgdG8gc2V0IGFzIHNlbGVjdGVkICovXG4gICAgc2V0QXNTZWxlY3RlZChpdGVtOiBPcHRpb25JdGVtW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gaXRlbVswXTtcblxuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGVkT3B0aW9uSXRlbShzZWxlY3RlZEl0ZW0pKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zZWxlY3RlZEVsZW1lbnQgPSAodGhpcy5pc0dyb3VwICYmIHNlbGVjdGVkSXRlbT8uY2hpbGRyZW4/LlswXSkgfHwgc2VsZWN0ZWRJdGVtO1xuICAgICAgICB0aGlzLmlucHV0VGV4dCA9IHRoaXMuZGlzcGxheVZhbHVlKHRoaXMuX3NlbGVjdGVkRWxlbWVudCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gRGVmaW5lIGlzIHNlbGVjdGVkIGl0ZW0gc2VsZWN0ZWQgKi9cbiAgICBpc1NlbGVjdGVkT3B0aW9uSXRlbShzZWxlY3RlZEl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKHRoaXMubG9va3VwS2V5ICYmIHRoaXMubG9va3VwVmFsdWUodGhpcy5fc2VsZWN0ZWRFbGVtZW50KSA9PT0gdGhpcy5sb29rdXBWYWx1ZShzZWxlY3RlZEl0ZW0pKSB8fFxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5VmFsdWUodGhpcy5fc2VsZWN0ZWRFbGVtZW50KSA9PT0gdGhpcy5kaXNwbGF5VmFsdWUoc2VsZWN0ZWRJdGVtKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIERlZmluZSBpcyBzZWxlY3RlZCBpdGVtIHNlbGVjdGVkIGJ5IGRpc3BsYXkgdmFsdWUgKi9cbiAgICBpc1NlbGVjdGVkT3B0aW9uSXRlbUJ5RGlzcGxheVZhbHVlKHNlbGVjdGVkSXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEVsZW1lbnQ/LmxhYmVsID09PSBzZWxlY3RlZEl0ZW07XG4gICAgfVxuXG4gICAgLyoqIEhhbmRsZSBkaWFsb2cgZGlzbWlzc2luZywgY2xvc2VzIHBvcG92ZXIgYW5kIHNldHMgYmFja3VwIGRhdGEuICovXG4gICAgZGlhbG9nRGlzbWlzcyh0ZXJtOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkRWxlbWVudD8ubGFiZWwgIT09IHRlcm0pIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRWxlbWVudCA9IHRoaXMuX2dldFNlbGVjdGVkT3B0aW9uSXRlbSh0ZXJtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5wdXRUZXh0ID0gdGVybTtcbiAgICAgICAgdGhpcy5pc09wZW5DaGFuZ2VIYW5kbGUoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBIYW5kbGUgZGlhbG9nIGFwcHJvdmFsLCBjbG9zZXMgcG9wb3ZlciBhbmQgcHJvcGFnYXRlcyBkYXRhIGNoYW5nZXMuICovXG4gICAgZGlhbG9nQXBwcm92ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkRWxlbWVudD8ubGFiZWwgPT09IHRoaXMuaW5wdXRUZXh0KSB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVNb2RlbCh0aGlzLl9zZWxlY3RlZEVsZW1lbnQudmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgb3B0aW9uSXRlbSA9IHRoaXMuX2dldFNlbGVjdGVkT3B0aW9uSXRlbSh0aGlzLmlucHV0VGV4dCk7XG5cbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZU1vZGVsKG9wdGlvbkl0ZW0gPyBvcHRpb25JdGVtLnZhbHVlIDogdGhpcy5pbnB1dFRleHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc09wZW5DaGFuZ2VIYW5kbGUoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIGlmIG5vdCBzZWxlY3RlZCB1cGRhdGUgbW9kZWwgKi9cbiAgICBwcml2YXRlIF9jaGVja0FuZFVwZGF0ZShtb2RlbFZhbHVlOiBPcHRpb25JdGVtKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzU2VsZWN0ZWRPcHRpb25JdGVtKG1vZGVsVmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcHRpb25JdGVtID0gdGhpcy5fZ2V0U2VsZWN0ZWRPcHRpb25JdGVtKHRoaXMuaW5wdXRUZXh0KTtcblxuICAgICAgICB0aGlzLl91cGRhdGVNb2RlbChvcHRpb25JdGVtID8gb3B0aW9uSXRlbS52YWx1ZSA6IHRoaXMuaW5wdXRUZXh0KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBVcGRhdGUgbW9kZWwgKi9cbiAgICBwcml2YXRlIF91cGRhdGVNb2RlbCh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIC8vIHNldHRpbmcgdmFsdWUsIGl0IHdpbGwgY2FsbCBzZXRWYWx1ZSgpXG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICB0aGlzLmVtaXRDaGFuZ2VFdmVudCh2YWx1ZSA/IHZhbHVlIDogbnVsbCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGFzeW5jIF9zZXRVcE1vYmlsZU1vZGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgICAgICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogQ09NQk9CT1hfQ09NUE9ORU5ULCB1c2VWYWx1ZTogdGhpcyB9XSxcbiAgICAgICAgICAgIHBhcmVudDogdGhpcy5faW5qZWN0b3JcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fZHluYW1pY0NvbXBvbmVudFNlcnZpY2UuY3JlYXRlRHluYW1pY0NvbXBvbmVudChcbiAgICAgICAgICAgIHsgbGlzdFRlbXBsYXRlOiB0aGlzLmxpc3RUZW1wbGF0ZSwgY29udHJvbFRlbXBsYXRlOiB0aGlzLmNvbnRyb2xUZW1wbGF0ZSB9LFxuICAgICAgICAgICAgQ29tYm9ib3hNb2JpbGVDb21wb25lbnQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyUmVmOiB0aGlzLl92aWV3Q29udGFpbmVyUmVmXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyBpbmplY3RvciB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRTZWxlY3RlZE9wdGlvbkl0ZW0odGV4dDogc3RyaW5nKTogT3B0aW9uSXRlbSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICghdGhpcy5pc0dyb3VwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fc3VnZ2VzdGlvbnMuZmluZCgoaXRlbSkgPT4gaXRlbS5sYWJlbCA9PT0gdGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fc3VnZ2VzdGlvbnNcbiAgICAgICAgICAgIC5yZWR1Y2UoKHJlc3VsdDogT3B0aW9uSXRlbVtdLCBpdGVtOiBPcHRpb25JdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4uKGl0ZW0uY2hpbGRyZW4gPz8gW10pKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9LCBbXSlcbiAgICAgICAgICAgIC5maW5kKChpdGVtKSA9PiBpdGVtLmxhYmVsID09PSB0ZXh0KTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibW9iaWxlID8gbW9iaWxlVGVtcGxhdGUgOiBkZXNrdG9wVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNkZXNrdG9wVGVtcGxhdGU+XG4gICAgPGZkLXBvcG92ZXJcbiAgICAgICAgW2lzT3Blbl09XCJpc09wZW4gJiYgX3N1Z2dlc3Rpb25zLmxlbmd0aCA+IDBcIlxuICAgICAgICAoaXNPcGVuQ2hhbmdlKT1cImlzT3BlbkNoYW5nZUhhbmRsZSgkZXZlbnQpXCJcbiAgICAgICAgW2ZpbGxDb250cm9sTW9kZV09XCJmaWxsQ29udHJvbE1vZGVcIlxuICAgICAgICBbZm9jdXNUcmFwcGVkXT1cInRydWVcIlxuICAgICAgICBbdHJpZ2dlcnNdPVwidHJpZ2dlcnNcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHlcIlxuICAgICAgICBbbWF4V2lkdGhdPVwiYXV0b1Jlc2l6ZSA/IG51bGwgOiBtaW5XaWR0aFwiXG4gICAgICAgIFtjbG9zZU9uT3V0c2lkZUNsaWNrXT1cImNsb3NlT25PdXRzaWRlQ2xpY2tcIlxuICAgICAgICBhZGRpdGlvbmFsQm9keUNsYXNzPVwiZmRwLWNvbWJvYm94X19wb3BvdmVyXCJcbiAgICA+XG4gICAgICAgIDxmZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udHJvbFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZmQtcG9wb3Zlci1jb250cm9sPlxuICAgICAgICA8ZmQtcG9wb3Zlci1ib2R5IFtoaWRkZW5dPVwiX3N1Z2dlc3Rpb25zLmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxpc3RUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2ZkLXBvcG92ZXItYm9keT5cbiAgICA8L2ZkLXBvcG92ZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21vYmlsZVRlbXBsYXRlPlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udHJvbFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NvbnRyb2xUZW1wbGF0ZT5cbiAgICA8ZmQtZm9ybS1pbnB1dC1tZXNzYWdlLWdyb3VwPlxuICAgICAgICA8ZmQtaW5wdXQtZ3JvdXBcbiAgICAgICAgICAgIFtpZF09XCJpZCArICctaW5wdXQtZ3JvdXAtY29udGFpbmVyJ1wiXG4gICAgICAgICAgICBbYnV0dG9uXT1cIiFyZWFkb25seVwiXG4gICAgICAgICAgICBbZ2x5cGhdPVwiIXJlYWRvbmx5ID8gJ25hdmlnYXRpb24tZG93bi1hcnJvdycgOiAnICdcIlxuICAgICAgICAgICAgW3N0YXRlXT1cIm1vYmlsZSAmJiBpc09wZW4gPyBudWxsIDogc3RhdGVcIlxuICAgICAgICAgICAgW2J1dHRvbkZvY3VzYWJsZV09XCJidXR0b25Gb2N1c2FibGVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgICBbaXNDb250cm9sXT1cInRydWVcIlxuICAgICAgICAgICAgKGFkZE9uQnV0dG9uQ2xpY2tlZCk9XCJvblByaW1hcnlCdXR0b25DbGljaygpXCJcbiAgICAgICAgICAgIFtpc0V4cGFuZGVkXT1cIiFtb2JpbGUgJiYgaXNPcGVuICYmIF9zdWdnZXN0aW9ucy5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgW2dseXBoQXJpYUxhYmVsXT1cImFyaWFMYWJlbFwiXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlbkluTW9iaWxlTW9kZSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgI3NlYXJjaElucHV0RWxlbWVudFxuICAgICAgICAgICAgICAgIGZkcC1hdXRvLWNvbXBsZXRlXG4gICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiX3N1Z2dlc3Rpb25zXCJcbiAgICAgICAgICAgICAgICBbaW5wdXRUZXh0XT1cImlucHV0VGV4dFwiXG4gICAgICAgICAgICAgICAgW21vYmlsZV09XCJtb2JpbGVcIlxuICAgICAgICAgICAgICAgIChvbkNvbXBsZXRlKT1cIl9vbkNvbXBsZXRlVGVybSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgcm9sZT1cImNvbWJvYm94XCJcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtYXV0b2NvbXBsZXRlXT1cImF1dG9Db21wbGV0ZSAmJiAhbW9iaWxlID8gJ2xpc3QnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1vd25zXT1cImF1dG9Db21wbGV0ZSAmJiAhbW9iaWxlID8gaWQgKyAnLXJlc3VsdCcgOiBudWxsXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cImF1dG9Db21wbGV0ZSAmJiAhbW9iaWxlXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICBmZC1pbnB1dC1ncm91cC1pbnB1dFxuICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgW2lkXT1cImlkXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJuYW1lXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbklucHV0S2V5ZG93bkhhbmRsZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJpbnB1dFRleHRcIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlYXJjaFRlcm1DaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uVG91Y2hlZCgpXCJcbiAgICAgICAgICAgICAgICAoYmx1cik9XCJfb25CbHVyKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNPcGVuICYmIF9zdWdnZXN0aW9ucy5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9mZC1pbnB1dC1ncm91cD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZkcC1jb21ib2JveF9fY291bnQtbGlzdC1yZXN1bHRzXCIgcm9sZT1cInN0YXR1c1wiICpuZ0lmPVwiaXNPcGVuXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX2ZsYXRTdWdnZXN0aW9ucz8ubGVuZ3RoIHx8ICcwJyBhcyBjb3VudFwiPlxuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgIChjb3VudCA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAncGxhdGZvcm1Db21ib2JveC5jb3VudExpc3RSZXN1bHRzU2luZ3VsYXInXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICdwbGF0Zm9ybUNvbWJvYm94LmNvdW50TGlzdFJlc3VsdHNQbHVyYWwnXG4gICAgICAgICAgICAgICAgICAgICkgfCBmZFRyYW5zbGF0ZSA6IHsgY291bnQ6IGNvdW50IH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZmQtZm9ybS1tZXNzYWdlXG4gICAgICAgICAgICAqbmdJZj1cIm1vYmlsZSB8fCBpc09wZW4gPyBudWxsIDogISFzdGF0ZU1lc3NhZ2VcIlxuICAgICAgICAgICAgW3R5cGVdPVwic3RhdGVcIlxuICAgICAgICAgICAgW2lubmVySHRtbF09XCJzdGF0ZU1lc3NhZ2VcIlxuICAgICAgICA+PC9mZC1mb3JtLW1lc3NhZ2U+XG4gICAgPC9mZC1mb3JtLWlucHV0LW1lc3NhZ2UtZ3JvdXA+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2xpc3RUZW1wbGF0ZT5cbiAgICA8dWxcbiAgICAgICAgZmQtbGlzdFxuICAgICAgICBbaGFzTWVzc2FnZV09XCIhIXN0YXRlTWVzc2FnZVwiXG4gICAgICAgIChmb2N1c0VzY2FwZUxpc3QpPVwiaGFuZGxlTGlzdEZvY3VzRXNjYXBlKCRldmVudClcIlxuICAgICAgICBbZHJvcGRvd25Nb2RlXT1cInRydWVcIlxuICAgICAgICBjbGFzcz1cImZkcC1jb21ib2JveF9fbGlzdFwiXG4gICAgICAgIFtoYXNNZXNzYWdlXT1cIiEhc3RhdGVNZXNzYWdlIHx8ICghIWFkdmFuY2VkU3RhdGVNZXNzYWdlPy5oYXNFcnJvcnMgJiYgISFhZHZhbmNlZFN0YXRlTWVzc2FnZT8udGVtcGxhdGUpXCJcbiAgICAgICAgW2lkXT1cImlkICsgJy1yZXN1bHQnXCJcbiAgICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgICBbYnlsaW5lXT1cImJ5bGluZVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJpZCArICctc2VhcmNoJ1wiXG4gICAgICAgIFtzdHlsZS5tYXhIZWlnaHRdPVwiIW1vYmlsZSAmJiBtYXhIZWlnaHRcIlxuICAgICAgICBbc3R5bGUubWF4V2lkdGhdPVwiYXV0b1Jlc2l6ZSAmJiBtYXhXaWR0aCArICdweCdcIlxuICAgID5cbiAgICAgICAgPGxpXG4gICAgICAgICAgICAqbmdJZj1cInN0YXRlTWVzc2FnZVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInN0YXRlTWVzc2FnZVwiXG4gICAgICAgICAgICBmZC1saXN0LW1lc3NhZ2VcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgICAgICAgICBbdHlwZV09XCJzdGF0ZSB8fCAnZGVmYXVsdCdcIlxuICAgICAgICAgICAgW2lubmVySHRtbF09XCJzdGF0ZU1lc3NhZ2VcIlxuICAgICAgICA+PC9saT5cblxuICAgICAgICA8bGlcbiAgICAgICAgICAgICpuZ0lmPVwiYWR2YW5jZWRTdGF0ZU1lc3NhZ2U/Lmhhc0Vycm9ycyAmJiBhZHZhbmNlZFN0YXRlTWVzc2FnZT8udGVtcGxhdGVcIlxuICAgICAgICAgICAgZmQtbGlzdC1tZXNzYWdlXG4gICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgICAgICAgICAgW3R5cGVdPVwic3RhdGUgfHwgJ2RlZmF1bHQnXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImFkdmFuY2VkU3RhdGVNZXNzYWdlIS50ZW1wbGF0ZSFcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2xpPlxuXG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzR3JvdXBcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIF9zdWdnZXN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZ3JvdXBJdGVtVGVtcGxhdGU7IGVsc2UgY3VzdG9tR3JvdXBJdGVtVGVtcGxhdGVSZW5kZXJlclwiPlxuICAgICAgICAgICAgICAgICAgICA8bGkgZmQtbGlzdC1ncm91cC1oZWFkZXIgcm9sZT1cIm9wdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC10aXRsZSBbYXR0ci50aXRsZV09XCJncm91cC5sYWJlbFwiPnt7IGdyb3VwLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjdXN0b21Hcm91cEl0ZW1UZW1wbGF0ZVJlbmRlcmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImdyb3VwSXRlbVRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogeyBsYWJlbDogZ3JvdXAubGFiZWwgfSB9XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uSXRlbSBvZiBncm91cC5jaGlsZHJlbjsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVPcHRpb25JdGVtKG9wdGlvbkl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgZmQtbGlzdC1pdGVtXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgIChrZXlEb3duKT1cImhhbmRsZVByZXNzRW50ZXIoJGV2ZW50LCBvcHRpb25JdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJpc1NlbGVjdGVkT3B0aW9uSXRlbShvcHRpb25JdGVtKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJsaXN0SXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBvcHRpb25JdGVtOiBvcHRpb25JdGVtLCBpbmRleDogaSB9XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0dyb3VwXCI+XG4gICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uSXRlbSBvZiBfc3VnZ2VzdGlvbnM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVPcHRpb25JdGVtKG9wdGlvbkl0ZW0pXCJcbiAgICAgICAgICAgICAgICBmZC1saXN0LWl0ZW1cbiAgICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiMFwiXG4gICAgICAgICAgICAgICAgKGtleURvd24pPVwiaGFuZGxlUHJlc3NFbnRlcigkZXZlbnQsIG9wdGlvbkl0ZW0pXCJcbiAgICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwiaXNTZWxlY3RlZE9wdGlvbkl0ZW0ob3B0aW9uSXRlbSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibGlzdEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBvcHRpb25JdGVtOiBvcHRpb25JdGVtLCBpbmRleDogaSB9XCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3VsPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlIGxldC1vcHRpb25JdGVtPVwib3B0aW9uSXRlbVwiIGxldC1pbmRleD1cImluZGV4XCIgI2xpc3RJdGVtPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJpc1NlbGVjdGVkT3B0aW9uSXRlbShvcHRpb25JdGVtKSAmJiAhIXNlbGVjdGVkSXRlbVRlbXBsYXRlXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwic2VsZWN0ZWRJdGVtVGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG9wdGlvbkl0ZW0udmFsdWUsIGluZGV4OiBpbmRleCB9XCJcbiAgICA+PC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIShpc1NlbGVjdGVkT3B0aW9uSXRlbShvcHRpb25JdGVtKSAmJiBzZWxlY3RlZEl0ZW1UZW1wbGF0ZSlcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwib3B0aW9uSXRlbVNvdXJjZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBvcHRpb25JdGVtOiBvcHRpb25JdGVtLCBpbmRleDogaW5kZXggfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJzZWNvbmRhcnlUZXh0U291cmNlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IG9wdGlvbkl0ZW06IG9wdGlvbkl0ZW0gfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSBsZXQtb3B0aW9uSXRlbT1cIm9wdGlvbkl0ZW1cIiBsZXQtaW5kZXg9XCJpbmRleFwiICNvcHRpb25JdGVtU291cmNlPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhb3B0aW9uSXRlbVRlbXBsYXRlOyBlbHNlIGN1c3RvbU9wdGluSXRlbVRlbXBsYXRlUmVuZGVyZXJcIj5cbiAgICAgICAgPHNwYW4gW2F0dHIudGl0bGVdPVwib3B0aW9uSXRlbS5sYWJlbFwiIFtpbm5lckhUTUxdPVwib3B0aW9uSXRlbS5sYWJlbCB8IGhpZ2hsaWdodCA6IGlucHV0VGV4dFwiPjwvc3Bhbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy10ZW1wbGF0ZSAjY3VzdG9tT3B0aW5JdGVtVGVtcGxhdGVSZW5kZXJlcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJvcHRpb25JdGVtVGVtcGxhdGVcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBvcHRpb25JdGVtLnZhbHVlLCBpbmRleDogaW5kZXggfVwiXG4gICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgbGV0LW9wdGlvbkl0ZW09XCJvcHRpb25JdGVtXCIgI3NlY29uZGFyeVRleHRTb3VyY2U+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dTZWNvbmRhcnlUZXh0XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2Vjb25kYXJ5SXRlbVRlbXBsYXRlOyBlbHNlIGN1c3RvbVNlY29uZGFyeUl0ZW1UZW1wbGF0ZVJlbmRlcmVyXCI+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIFtzdHlsZS50ZXh0LWFsaWduXT1cInNlY29uZGFyeVRleHRBbGlnbm1lbnRcIlxuICAgICAgICAgICAgICAgIGZkLWxpc3Qtc2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwib3B0aW9uSXRlbS5zZWNvbmRhcnlUZXh0XCJcbiAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIm9wdGlvbkl0ZW0uc2Vjb25kYXJ5VGV4dCB8IGhpZ2hsaWdodCA6IGlucHV0VGV4dFwiXG4gICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI2N1c3RvbVNlY29uZGFyeUl0ZW1UZW1wbGF0ZVJlbmRlcmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwic2Vjb25kYXJ5SXRlbVRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG9wdGlvbkl0ZW0udmFsdWUgfVwiXG4gICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -81,7 +81,7 @@ export class ComboboxMobileComponent extends MobileModeBase {
81
81
  });
82
82
  }
83
83
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ComboboxMobileComponent, deps: [{ token: i0.ElementRef }, { token: i1.DialogService }, { token: COMBOBOX_COMPONENT }, { token: MOBILE_MODE_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
84
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: ComboboxMobileComponent, isStandalone: true, selector: "fdp-combobox-mobile", viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 fd-title *ngIf=\"mobileConfig?.title\">{{ mobileConfig.title }}</h1>\n <button\n fd-dialog-close-button\n *ngIf=\"mobileConfig?.hasCloseButton\"\n [mobile]=\"true\"\n (click)=\"handleDismiss()\"\n ></button>\n <ng-template fdkTemplate=\"subheader\">\n <div fd-bar-middle>\n <fd-bar-element [fullWidth]=\"true\">\n <ng-container *ngTemplateOutlet=\"childContent?.controlTemplate || null\"></ng-container>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n\n <fd-dialog-body>\n <ng-container *ngTemplateOutlet=\"childContent?.listTemplate || null\"></ng-container>\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <fd-button-bar\n *ngIf=\"mobileConfig.approveButtonText\"\n fdType=\"emphasized\"\n [label]=\"mobileConfig.approveButtonText!\"\n (click)=\"handleApprove()\"\n >\n </fd-button-bar>\n <fd-button-bar\n *ngIf=\"mobileConfig?.cancelButtonText\"\n [label]=\"mobileConfig.cancelButtonText!\"\n (click)=\"handleDismiss()\"\n >\n </fd-button-bar>\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: DialogModule }, { kind: "component", type: i1.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i1.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i1.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i1.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i1.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title"] }, { kind: "directive", type: i2.TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "directive", type: i3.BarMiddleDirective, selector: "[fd-bar-middle]" }, { kind: "directive", type: i3.BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth"] }, { kind: "component", type: i3.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabel", "ariaLabelledby", "id"] }, { kind: "component", type: i4.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: BarModule }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
84
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: ComboboxMobileComponent, isStandalone: true, selector: "fdp-combobox-mobile", viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template [fdDialogTemplate] let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 fd-title *ngIf=\"mobileConfig?.title\">{{ mobileConfig.title }}</h1>\n <button\n fd-dialog-close-button\n *ngIf=\"mobileConfig?.hasCloseButton\"\n [mobile]=\"true\"\n (click)=\"handleDismiss()\"\n ></button>\n <ng-template fdkTemplate=\"subheader\">\n <div fd-bar-middle>\n <fd-bar-element [fullWidth]=\"true\">\n <ng-container *ngTemplateOutlet=\"childContent?.controlTemplate || null\"></ng-container>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n\n <fd-dialog-body>\n <ng-container *ngTemplateOutlet=\"childContent?.listTemplate || null\"></ng-container>\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <fd-button-bar\n *ngIf=\"mobileConfig.approveButtonText\"\n fdType=\"emphasized\"\n [label]=\"mobileConfig.approveButtonText!\"\n (click)=\"handleApprove()\"\n >\n </fd-button-bar>\n <fd-button-bar\n *ngIf=\"mobileConfig?.cancelButtonText\"\n [label]=\"mobileConfig.cancelButtonText!\"\n (click)=\"handleDismiss()\"\n >\n </fd-button-bar>\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: DialogModule }, { kind: "component", type: i1.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i1.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i1.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i1.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i1.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title"] }, { kind: "directive", type: i1.DialogTemplateDirective, selector: "[fdDialogTemplate]", inputs: ["fdDialogTemplateConfig"] }, { kind: "directive", type: i2.TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "directive", type: i3.BarMiddleDirective, selector: "[fd-bar-middle]" }, { kind: "directive", type: i3.BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth"] }, { kind: "component", type: i3.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabel", "ariaLabelledby", "id"] }, { kind: "component", type: i4.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: BarModule }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
85
85
  }
86
86
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ComboboxMobileComponent, decorators: [{
87
87
  type: Component,
@@ -94,7 +94,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
94
94
  NgTemplateOutlet,
95
95
  CdkScrollable,
96
96
  ScrollbarDirective
97
- ], template: "<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 fd-title *ngIf=\"mobileConfig?.title\">{{ mobileConfig.title }}</h1>\n <button\n fd-dialog-close-button\n *ngIf=\"mobileConfig?.hasCloseButton\"\n [mobile]=\"true\"\n (click)=\"handleDismiss()\"\n ></button>\n <ng-template fdkTemplate=\"subheader\">\n <div fd-bar-middle>\n <fd-bar-element [fullWidth]=\"true\">\n <ng-container *ngTemplateOutlet=\"childContent?.controlTemplate || null\"></ng-container>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n\n <fd-dialog-body>\n <ng-container *ngTemplateOutlet=\"childContent?.listTemplate || null\"></ng-container>\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <fd-button-bar\n *ngIf=\"mobileConfig.approveButtonText\"\n fdType=\"emphasized\"\n [label]=\"mobileConfig.approveButtonText!\"\n (click)=\"handleApprove()\"\n >\n </fd-button-bar>\n <fd-button-bar\n *ngIf=\"mobileConfig?.cancelButtonText\"\n [label]=\"mobileConfig.cancelButtonText!\"\n (click)=\"handleDismiss()\"\n >\n </fd-button-bar>\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n" }]
97
+ ], template: "<ng-template [fdDialogTemplate] let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 fd-title *ngIf=\"mobileConfig?.title\">{{ mobileConfig.title }}</h1>\n <button\n fd-dialog-close-button\n *ngIf=\"mobileConfig?.hasCloseButton\"\n [mobile]=\"true\"\n (click)=\"handleDismiss()\"\n ></button>\n <ng-template fdkTemplate=\"subheader\">\n <div fd-bar-middle>\n <fd-bar-element [fullWidth]=\"true\">\n <ng-container *ngTemplateOutlet=\"childContent?.controlTemplate || null\"></ng-container>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n\n <fd-dialog-body>\n <ng-container *ngTemplateOutlet=\"childContent?.listTemplate || null\"></ng-container>\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <fd-button-bar\n *ngIf=\"mobileConfig.approveButtonText\"\n fdType=\"emphasized\"\n [label]=\"mobileConfig.approveButtonText!\"\n (click)=\"handleApprove()\"\n >\n </fd-button-bar>\n <fd-button-bar\n *ngIf=\"mobileConfig?.cancelButtonText\"\n [label]=\"mobileConfig.cancelButtonText!\"\n (click)=\"handleDismiss()\"\n >\n </fd-button-bar>\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n" }]
98
98
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.DialogService }, { type: undefined, decorators: [{
99
99
  type: Inject,
100
100
  args: [COMBOBOX_COMPONENT]
@@ -107,4 +107,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
107
107
  type: ViewChild,
108
108
  args: ['dialogTemplate']
109
109
  }] } });
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3gtbW9iaWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9mb3JtL2NvbWJvYm94L2NvbWJvYm94LW1vYmlsZS9jb21ib2JveC9jb21ib2JveC1tb2JpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vY29tYm9ib3gvY29tYm9ib3gtbW9iaWxlL2NvbWJvYm94L2NvbWJvYm94LW1vYmlsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUdOLFFBQVEsRUFDUixXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUNILGtCQUFrQixFQUNsQixjQUFjLEVBRWQsaUJBQWlCLEVBQ3BCLE1BQU0sbUNBQW1DLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBcUIsTUFBTSwwQkFBMEIsQ0FBQztBQUVqRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsSUFBSSxFQUFFLGdC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cEIsa0JBQWtCLGFBQ04sa0JBQWtCO2tHQXRCakMsdUJBQXVCLHdOQ2hEcEMsNmxEQXdDQSwyQ0RGUSxZQUFZLHVwQ0FDWixJQUFJLDRGQUdKLFNBQVMsK0JBQ1QsZ0JBQWdCOzsyRkFLWCx1QkFBdUI7a0JBakJuQyxTQUFTOytCQUNJLHFCQUFxQixtQkFFZCx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLGNBQ3pCLElBQUksV0FDUDt3QkFDTCxZQUFZO3dCQUNaLElBQUk7d0JBQ0osY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLFNBQVM7d0JBQ1QsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLGtCQUFrQjtxQkFDckI7OzBCQXVCSSxNQUFNOzJCQUFDLGtCQUFrQjs7MEJBQ3pCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsa0JBQWtCOzRDQXBCYixjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5qZWN0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICAgIE1PQklMRV9NT0RFX0NPTkZJRyxcbiAgICBNb2JpbGVNb2RlQmFzZSxcbiAgICBNb2JpbGVNb2RlQ29uZmlnVG9rZW4sXG4gICAgTW9iaWxlTW9kZUNvbnRyb2xcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL21vYmlsZS1tb2RlJztcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcbmltcG9ydCB7IENPTUJPQk9YX0NPTVBPTkVOVCwgQ29tYm9ib3hJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi9jb21ib2JveC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBTY3JvbGxiYXJEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2Nyb2xsYmFyJztcbmltcG9ydCB7IENka1Njcm9sbGFibGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBCYXJNb2R1bGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYmFyJztcbmltcG9ydCB7IFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdGl0bGUnO1xuaW1wb3J0IHsgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEaWFsb2dNb2R1bGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtY29tYm9ib3gtbW9iaWxlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29tYm9ib3gtbW9iaWxlLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBEaWFsb2dNb2R1bGUsXG4gICAgICAgIE5nSWYsXG4gICAgICAgIFRpdGxlQ29tcG9uZW50LFxuICAgICAgICBUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICAgICAgQmFyTW9kdWxlLFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBDZGtTY3JvbGxhYmxlLFxuICAgICAgICBTY3JvbGxiYXJEaXJlY3RpdmVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIENvbWJvYm94TW9iaWxlQ29tcG9uZW50IGV4dGVuZHMgTW9iaWxlTW9kZUJhc2U8Q29tYm9ib3hJbnRlcmZhY2U+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnZGlhbG9nVGVtcGxhdGUnKSBkaWFsb2dUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogRm9yIGludGVybmFsIHVzYWdlXG4gICAgICogQ29udHJvbCBlbGVtZW50LCB3aGljaCB3aWxsIGJlIHJlbmRlcmVkIGluc2lkZSBkaWFsb2cuXG4gICAgICogTGlzdCBlbGVtZW50LCB3aGljaCB3aWxsIGJlIHJlbmRlcmVkIGluc2lkZSBkaWFsb2cuXG4gICAgICovXG4gICAgY2hpbGRDb250ZW50OiBOdWxsYWJsZTx7XG4gICAgICAgIGxpc3RUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICAgICAgY29udHJvbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIH0+ID0gbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWRCYWNrdXA6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoQ09NQk9CT1hfQ09NUE9ORU5UKSBjb21ib2JveENvbXBvbmVudDogQ29tYm9ib3hJbnRlcmZhY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTU9CSUxFX01PREVfQ09ORklHKSBtb2JpbGVNb2RlczogTW9iaWxlTW9kZUNvbmZpZ1Rva2VuW11cbiAgICApIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgZGlhbG9nU2VydmljZSwgY29tYm9ib3hDb21wb25lbnQsIE1vYmlsZU1vZGVDb250cm9sLkNPTUJPQk9YLCBtb2JpbGVNb2Rlcyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbGlzdGVuT25NdWx0aUlucHV0T3BlbkNoYW5nZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm9uRGVzdHJveSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgaGFuZGxlRGlzbWlzcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuZGlzbWlzcygpO1xuICAgICAgICB0aGlzLl9jb21wb25lbnQuZGlhbG9nRGlzbWlzcyh0aGlzLl9zZWxlY3RlZEJhY2t1cCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBoYW5kbGVBcHByb3ZlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICAgICAgICB0aGlzLl9jb21wb25lbnQuZGlhbG9nQXBwcm92ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdG9nZ2xlRGlhbG9nKG9wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFvcGVuKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zZWxlY3RlZEJhY2t1cCA9IHRoaXMuX2NvbXBvbmVudC5pbnB1dFRleHQ7XG4gICAgICAgIGlmICghdGhpcy5fZGlhbG9nU2VydmljZS5oYXNPcGVuRGlhbG9ncygpKSB7XG4gICAgICAgICAgICB0aGlzLl9vcGVuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uTXVsdGlJbnB1dE9wZW5DaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvbXBvbmVudC5vcGVuQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGlzT3BlbikgPT4gdGhpcy5fdG9nZ2xlRGlhbG9nKGlzT3BlbikpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfb3BlbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYgPSB0aGlzLl9kaWFsb2dTZXJ2aWNlLm9wZW4odGhpcy5kaWFsb2dUZW1wbGF0ZSwge1xuICAgICAgICAgICAgbW9iaWxlOiB0cnVlLFxuICAgICAgICAgICAgZGlzYWJsZVBhZGRpbmdzOiB0cnVlLFxuICAgICAgICAgICAgLi4udGhpcy5kaWFsb2dDb25maWcsXG4gICAgICAgICAgICBiYWNrZHJvcENsaWNrQ2xvc2VhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbnRhaW5lcjogdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEhhdmUgdG8gZmlyZSBcImRldGVjdENoYW5nZXNcIiB0byBmaXggXCJFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yXCJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuYWZ0ZXJMb2FkZWQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jb21wb25lbnQuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCByZWZTdWIgPSB0aGlzLmRpYWxvZ1JlZi5hZnRlckNsb3NlZC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgZXJyb3I6ICh0eXBlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdlc2NhcGUnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvbXBvbmVudC5kaWFsb2dEaXNtaXNzKHRoaXMuX3NlbGVjdGVkQmFja3VwKTtcbiAgICAgICAgICAgICAgICAgICAgcmVmU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8bmctdGVtcGxhdGUgbGV0LWRpYWxvZyBsZXQtZGlhbG9nQ29uZmlnPVwiZGlhbG9nQ29uZmlnXCIgI2RpYWxvZ1RlbXBsYXRlPlxuICAgIDxmZC1kaWFsb2cgW2RpYWxvZ0NvbmZpZ109XCJkaWFsb2dDb25maWdcIiBbZGlhbG9nUmVmXT1cImRpYWxvZ1wiPlxuICAgICAgICA8ZmQtZGlhbG9nLWhlYWRlcj5cbiAgICAgICAgICAgIDxoMSBmZC10aXRsZSAqbmdJZj1cIm1vYmlsZUNvbmZpZz8udGl0bGVcIj57eyBtb2JpbGVDb25maWcudGl0bGUgfX08L2gxPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGZkLWRpYWxvZy1jbG9zZS1idXR0b25cbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1vYmlsZUNvbmZpZz8uaGFzQ2xvc2VCdXR0b25cIlxuICAgICAgICAgICAgICAgIFttb2JpbGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZURpc21pc3MoKVwiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgZmRrVGVtcGxhdGU9XCJzdWJoZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1taWRkbGU+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1iYXItZWxlbWVudCBbZnVsbFdpZHRoXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjaGlsZENvbnRlbnQ/LmNvbnRyb2xUZW1wbGF0ZSB8fCBudWxsXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2ZkLWRpYWxvZy1oZWFkZXI+XG5cbiAgICAgICAgPGZkLWRpYWxvZy1ib2R5PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNoaWxkQ29udGVudD8ubGlzdFRlbXBsYXRlIHx8IG51bGxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9mZC1kaWFsb2ctYm9keT5cblxuICAgICAgICA8ZmQtZGlhbG9nLWZvb3Rlcj5cbiAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtb2JpbGVDb25maWcuYXBwcm92ZUJ1dHRvblRleHRcIlxuICAgICAgICAgICAgICAgIGZkVHlwZT1cImVtcGhhc2l6ZWRcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJtb2JpbGVDb25maWcuYXBwcm92ZUJ1dHRvblRleHQhXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlQXBwcm92ZSgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtb2JpbGVDb25maWc/LmNhbmNlbEJ1dHRvblRleHRcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJtb2JpbGVDb25maWcuY2FuY2VsQnV0dG9uVGV4dCFcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVEaXNtaXNzKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9mZC1idXR0b24tYmFyPlxuICAgICAgICA8L2ZkLWRpYWxvZy1mb290ZXI+XG4gICAgPC9mZC1kaWFsb2c+XG48L25nLXRlbXBsYXRlPlxuIl19
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3gtbW9iaWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9mb3JtL2NvbWJvYm94L2NvbWJvYm94LW1vYmlsZS9jb21ib2JveC9jb21ib2JveC1tb2JpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vY29tYm9ib3gvY29tYm9ib3gtbW9iaWxlL2NvbWJvYm94L2NvbWJvYm94LW1vYmlsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUdOLFFBQVEsRUFDUixXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUNILGtCQUFrQixFQUNsQixjQUFjLEVBRWQsaUJBQWlCLEVBQ3BCLE1BQU0sbUNBQW1DLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBcUIsTUFBTSwwQkFBMEIsQ0FBQztBQUVqRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsSUFBSSxFQUFFLGdC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cEIsa0JBQWtCLGFBQ04sa0JBQWtCO2tHQXRCakMsdUJBQXVCLHdOQ2hEcEMsZ25EQXdDQSwyQ0RGUSxZQUFZLG94Q0FDWixJQUFJLDRGQUdKLFNBQVMsK0JBQ1QsZ0JBQWdCOzsyRkFLWCx1QkFBdUI7a0JBakJuQyxTQUFTOytCQUNJLHFCQUFxQixtQkFFZCx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLGNBQ3pCLElBQUksV0FDUDt3QkFDTCxZQUFZO3dCQUNaLElBQUk7d0JBQ0osY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLFNBQVM7d0JBQ1QsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLGtCQUFrQjtxQkFDckI7OzBCQXVCSSxNQUFNOzJCQUFDLGtCQUFrQjs7MEJBQ3pCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsa0JBQWtCOzRDQXBCYixjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5qZWN0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICAgIE1PQklMRV9NT0RFX0NPTkZJRyxcbiAgICBNb2JpbGVNb2RlQmFzZSxcbiAgICBNb2JpbGVNb2RlQ29uZmlnVG9rZW4sXG4gICAgTW9iaWxlTW9kZUNvbnRyb2xcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL21vYmlsZS1tb2RlJztcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcbmltcG9ydCB7IENPTUJPQk9YX0NPTVBPTkVOVCwgQ29tYm9ib3hJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi9jb21ib2JveC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBTY3JvbGxiYXJEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2Nyb2xsYmFyJztcbmltcG9ydCB7IENka1Njcm9sbGFibGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBCYXJNb2R1bGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYmFyJztcbmltcG9ydCB7IFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdGl0bGUnO1xuaW1wb3J0IHsgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEaWFsb2dNb2R1bGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtY29tYm9ib3gtbW9iaWxlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29tYm9ib3gtbW9iaWxlLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBEaWFsb2dNb2R1bGUsXG4gICAgICAgIE5nSWYsXG4gICAgICAgIFRpdGxlQ29tcG9uZW50LFxuICAgICAgICBUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICAgICAgQmFyTW9kdWxlLFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBDZGtTY3JvbGxhYmxlLFxuICAgICAgICBTY3JvbGxiYXJEaXJlY3RpdmVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIENvbWJvYm94TW9iaWxlQ29tcG9uZW50IGV4dGVuZHMgTW9iaWxlTW9kZUJhc2U8Q29tYm9ib3hJbnRlcmZhY2U+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnZGlhbG9nVGVtcGxhdGUnKSBkaWFsb2dUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogRm9yIGludGVybmFsIHVzYWdlXG4gICAgICogQ29udHJvbCBlbGVtZW50LCB3aGljaCB3aWxsIGJlIHJlbmRlcmVkIGluc2lkZSBkaWFsb2cuXG4gICAgICogTGlzdCBlbGVtZW50LCB3aGljaCB3aWxsIGJlIHJlbmRlcmVkIGluc2lkZSBkaWFsb2cuXG4gICAgICovXG4gICAgY2hpbGRDb250ZW50OiBOdWxsYWJsZTx7XG4gICAgICAgIGxpc3RUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICAgICAgY29udHJvbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIH0+ID0gbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWRCYWNrdXA6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoQ09NQk9CT1hfQ09NUE9ORU5UKSBjb21ib2JveENvbXBvbmVudDogQ29tYm9ib3hJbnRlcmZhY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTU9CSUxFX01PREVfQ09ORklHKSBtb2JpbGVNb2RlczogTW9iaWxlTW9kZUNvbmZpZ1Rva2VuW11cbiAgICApIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgZGlhbG9nU2VydmljZSwgY29tYm9ib3hDb21wb25lbnQsIE1vYmlsZU1vZGVDb250cm9sLkNPTUJPQk9YLCBtb2JpbGVNb2Rlcyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbGlzdGVuT25NdWx0aUlucHV0T3BlbkNoYW5nZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm9uRGVzdHJveSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgaGFuZGxlRGlzbWlzcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuZGlzbWlzcygpO1xuICAgICAgICB0aGlzLl9jb21wb25lbnQuZGlhbG9nRGlzbWlzcyh0aGlzLl9zZWxlY3RlZEJhY2t1cCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBoYW5kbGVBcHByb3ZlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICAgICAgICB0aGlzLl9jb21wb25lbnQuZGlhbG9nQXBwcm92ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdG9nZ2xlRGlhbG9nKG9wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFvcGVuKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zZWxlY3RlZEJhY2t1cCA9IHRoaXMuX2NvbXBvbmVudC5pbnB1dFRleHQ7XG4gICAgICAgIGlmICghdGhpcy5fZGlhbG9nU2VydmljZS5oYXNPcGVuRGlhbG9ncygpKSB7XG4gICAgICAgICAgICB0aGlzLl9vcGVuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uTXVsdGlJbnB1dE9wZW5DaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvbXBvbmVudC5vcGVuQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGlzT3BlbikgPT4gdGhpcy5fdG9nZ2xlRGlhbG9nKGlzT3BlbikpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfb3BlbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYgPSB0aGlzLl9kaWFsb2dTZXJ2aWNlLm9wZW4odGhpcy5kaWFsb2dUZW1wbGF0ZSwge1xuICAgICAgICAgICAgbW9iaWxlOiB0cnVlLFxuICAgICAgICAgICAgZGlzYWJsZVBhZGRpbmdzOiB0cnVlLFxuICAgICAgICAgICAgLi4udGhpcy5kaWFsb2dDb25maWcsXG4gICAgICAgICAgICBiYWNrZHJvcENsaWNrQ2xvc2VhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbnRhaW5lcjogdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEhhdmUgdG8gZmlyZSBcImRldGVjdENoYW5nZXNcIiB0byBmaXggXCJFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yXCJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuYWZ0ZXJMb2FkZWQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jb21wb25lbnQuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCByZWZTdWIgPSB0aGlzLmRpYWxvZ1JlZi5hZnRlckNsb3NlZC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgZXJyb3I6ICh0eXBlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdlc2NhcGUnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvbXBvbmVudC5kaWFsb2dEaXNtaXNzKHRoaXMuX3NlbGVjdGVkQmFja3VwKTtcbiAgICAgICAgICAgICAgICAgICAgcmVmU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8bmctdGVtcGxhdGUgW2ZkRGlhbG9nVGVtcGxhdGVdIGxldC1kaWFsb2cgbGV0LWRpYWxvZ0NvbmZpZz1cImRpYWxvZ0NvbmZpZ1wiICNkaWFsb2dUZW1wbGF0ZT5cbiAgICA8ZmQtZGlhbG9nIFtkaWFsb2dDb25maWddPVwiZGlhbG9nQ29uZmlnXCIgW2RpYWxvZ1JlZl09XCJkaWFsb2dcIj5cbiAgICAgICAgPGZkLWRpYWxvZy1oZWFkZXI+XG4gICAgICAgICAgICA8aDEgZmQtdGl0bGUgKm5nSWY9XCJtb2JpbGVDb25maWc/LnRpdGxlXCI+e3sgbW9iaWxlQ29uZmlnLnRpdGxlIH19PC9oMT5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBmZC1kaWFsb2ctY2xvc2UtYnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtb2JpbGVDb25maWc/Lmhhc0Nsb3NlQnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbbW9iaWxlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVEaXNtaXNzKClcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGZka1RlbXBsYXRlPVwic3ViaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBmZC1iYXItbWlkZGxlPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtYmFyLWVsZW1lbnQgW2Z1bGxXaWR0aF09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2hpbGRDb250ZW50Py5jb250cm9sVGVtcGxhdGUgfHwgbnVsbFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9mZC1kaWFsb2ctaGVhZGVyPlxuXG4gICAgICAgIDxmZC1kaWFsb2ctYm9keT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjaGlsZENvbnRlbnQ/Lmxpc3RUZW1wbGF0ZSB8fCBudWxsXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZmQtZGlhbG9nLWJvZHk+XG5cbiAgICAgICAgPGZkLWRpYWxvZy1mb290ZXI+XG4gICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgICpuZ0lmPVwibW9iaWxlQ29uZmlnLmFwcHJvdmVCdXR0b25UZXh0XCJcbiAgICAgICAgICAgICAgICBmZFR5cGU9XCJlbXBoYXNpemVkXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwibW9iaWxlQ29uZmlnLmFwcHJvdmVCdXR0b25UZXh0IVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUFwcHJvdmUoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgICpuZ0lmPVwibW9iaWxlQ29uZmlnPy5jYW5jZWxCdXR0b25UZXh0XCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwibW9iaWxlQ29uZmlnLmNhbmNlbEJ1dHRvblRleHQhXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlRGlzbWlzcygpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgPC9mZC1kaWFsb2ctZm9vdGVyPlxuICAgIDwvZmQtZGlhbG9nPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -1,16 +1,32 @@
1
1
  import { NgModule } from '@angular/core';
2
2
  import { ComboboxComponent } from './combobox/combobox.component';
3
+ import { ComboboxItemDirective, ComboboxItemGroupDirective, ComboboxSecondaryItemDirective, ComboboxSelectedItemDirective } from './directives/combobox-item.directive';
3
4
  import * as i0 from "@angular/core";
5
+ const EXPORTABLE_COMPONENTS = [
6
+ ComboboxComponent,
7
+ ComboboxItemDirective,
8
+ ComboboxSelectedItemDirective,
9
+ ComboboxItemGroupDirective,
10
+ ComboboxSecondaryItemDirective
11
+ ];
4
12
  export class PlatformComboboxModule {
5
13
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: PlatformComboboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.7", ngImport: i0, type: PlatformComboboxModule, imports: [ComboboxComponent], exports: [ComboboxComponent] }); }
14
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.7", ngImport: i0, type: PlatformComboboxModule, imports: [ComboboxComponent,
15
+ ComboboxItemDirective,
16
+ ComboboxSelectedItemDirective,
17
+ ComboboxItemGroupDirective,
18
+ ComboboxSecondaryItemDirective], exports: [ComboboxComponent,
19
+ ComboboxItemDirective,
20
+ ComboboxSelectedItemDirective,
21
+ ComboboxItemGroupDirective,
22
+ ComboboxSecondaryItemDirective] }); }
7
23
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: PlatformComboboxModule, imports: [ComboboxComponent] }); }
8
24
  }
9
25
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: PlatformComboboxModule, decorators: [{
10
26
  type: NgModule,
11
27
  args: [{
12
- imports: [ComboboxComponent],
13
- exports: [ComboboxComponent]
28
+ imports: [...EXPORTABLE_COMPONENTS],
29
+ exports: [...EXPORTABLE_COMPONENTS]
14
30
  }]
15
31
  }] });
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3gubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vY29tYm9ib3gvY29tYm9ib3gubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBTWxFLE1BQU0sT0FBTyxzQkFBc0I7OEdBQXRCLHNCQUFzQjsrR0FBdEIsc0JBQXNCLFlBSHJCLGlCQUFpQixhQUNqQixpQkFBaUI7K0dBRWxCLHNCQUFzQixZQUhyQixpQkFBaUI7OzJGQUdsQixzQkFBc0I7a0JBSmxDLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsaUJBQWlCLENBQUM7b0JBQzVCLE9BQU8sRUFBRSxDQUFDLGlCQUFpQixDQUFDO2lCQUMvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENvbWJvYm94Q29tcG9uZW50IH0gZnJvbSAnLi9jb21ib2JveC9jb21ib2JveC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21ib2JveENvbXBvbmVudF0sXG4gICAgZXhwb3J0czogW0NvbWJvYm94Q29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBQbGF0Zm9ybUNvbWJvYm94TW9kdWxlIHt9XG4iXX0=
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3gubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vY29tYm9ib3gvY29tYm9ib3gubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUNILHFCQUFxQixFQUNyQiwwQkFBMEIsRUFDMUIsOEJBQThCLEVBQzlCLDZCQUE2QixFQUNoQyxNQUFNLHNDQUFzQyxDQUFDOztBQUU5QyxNQUFNLHFCQUFxQixHQUFHO0lBQzFCLGlCQUFpQjtJQUNqQixxQkFBcUI7SUFDckIsNkJBQTZCO0lBQzdCLDBCQUEwQjtJQUMxQiw4QkFBOEI7Q0FDakMsQ0FBQztBQU1GLE1BQU0sT0FBTyxzQkFBc0I7OEdBQXRCLHNCQUFzQjsrR0FBdEIsc0JBQXNCLFlBWC9CLGlCQUFpQjtZQUNqQixxQkFBcUI7WUFDckIsNkJBQTZCO1lBQzdCLDBCQUEwQjtZQUMxQiw4QkFBOEIsYUFKOUIsaUJBQWlCO1lBQ2pCLHFCQUFxQjtZQUNyQiw2QkFBNkI7WUFDN0IsMEJBQTBCO1lBQzFCLDhCQUE4QjsrR0FPckIsc0JBQXNCLFlBWC9CLGlCQUFpQjs7MkZBV1Isc0JBQXNCO2tCQUpsQyxRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLEdBQUcscUJBQXFCLENBQUM7b0JBQ25DLE9BQU8sRUFBRSxDQUFDLEdBQUcscUJBQXFCLENBQUM7aUJBQ3RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ29tYm9ib3hDb21wb25lbnQgfSBmcm9tICcuL2NvbWJvYm94L2NvbWJvYm94LmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIENvbWJvYm94SXRlbURpcmVjdGl2ZSxcbiAgICBDb21ib2JveEl0ZW1Hcm91cERpcmVjdGl2ZSxcbiAgICBDb21ib2JveFNlY29uZGFyeUl0ZW1EaXJlY3RpdmUsXG4gICAgQ29tYm9ib3hTZWxlY3RlZEl0ZW1EaXJlY3RpdmVcbn0gZnJvbSAnLi9kaXJlY3RpdmVzL2NvbWJvYm94LWl0ZW0uZGlyZWN0aXZlJztcblxuY29uc3QgRVhQT1JUQUJMRV9DT01QT05FTlRTID0gW1xuICAgIENvbWJvYm94Q29tcG9uZW50LFxuICAgIENvbWJvYm94SXRlbURpcmVjdGl2ZSxcbiAgICBDb21ib2JveFNlbGVjdGVkSXRlbURpcmVjdGl2ZSxcbiAgICBDb21ib2JveEl0ZW1Hcm91cERpcmVjdGl2ZSxcbiAgICBDb21ib2JveFNlY29uZGFyeUl0ZW1EaXJlY3RpdmVcbl07XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogWy4uLkVYUE9SVEFCTEVfQ09NUE9ORU5UU10sXG4gICAgZXhwb3J0czogWy4uLkVYUE9SVEFCTEVfQ09NUE9ORU5UU11cbn0pXG5leHBvcnQgY2xhc3MgUGxhdGZvcm1Db21ib2JveE1vZHVsZSB7fVxuIl19