@fundamental-ngx/platform 0.44.0-rc.2 → 0.44.0-rc.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/button/button.component.d.ts +8 -2
- package/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.d.ts +1 -1
- package/esm2022/action-bar/action-bar.component.mjs +9 -3
- package/esm2022/approval-flow/approval-flow-add-node/approval-flow-add-node.component.mjs +1 -1
- package/esm2022/approval-flow/approval-flow.component.mjs +14 -4
- package/esm2022/button/button.component.mjs +21 -1
- package/esm2022/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.mjs +3 -2
- package/esm2022/feed-input/feed-input.component.mjs +12 -1
- package/esm2022/form/checkbox/checkbox.component.mjs +11 -1
- package/esm2022/form/combobox/combobox-mobile/combobox/combobox-mobile.component.mjs +1 -1
- package/esm2022/form/date-picker/date-picker.component.mjs +34 -1
- package/esm2022/form/datetime-picker/datetime-picker.component.mjs +45 -1
- package/esm2022/form/form-group/form-field/form-field.component.mjs +13 -3
- package/esm2022/form/multi-combobox/multi-combobox-mobile/multi-combobox/multi-combobox-mobile.component.mjs +1 -1
- package/esm2022/form/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +1 -1
- package/esm2022/form/select/commons/base-select.mjs +9 -3
- package/esm2022/form/select/select/select.component.mjs +1 -1
- package/esm2022/form/time-picker/time-picker.component.mjs +17 -1
- package/esm2022/list/base-list-item.mjs +4 -1
- package/esm2022/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.mjs +31 -29
- package/esm2022/message-popover/components/message-view/message-view.component.mjs +12 -11
- package/esm2022/message-popover/message-popover.component.mjs +21 -22
- package/esm2022/page-footer/page-footer.component.mjs +11 -3
- package/esm2022/search-field/search-field-mobile/search-field/search-field-mobile.component.mjs +1 -1
- package/esm2022/search-field/search-field.component.mjs +34 -11
- package/esm2022/settings-generator/layouts/base-settings-generator-layout.mjs +3 -3
- package/esm2022/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-icon/settings-generator-sidebar-icon.component.mjs +8 -8
- package/esm2022/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-layout.component.mjs +18 -17
- package/esm2022/settings-generator/settings-generator.component.mjs +14 -17
- package/esm2022/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.mjs +1 -1
- package/esm2022/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.mjs +1 -1
- package/esm2022/smart-filter-bar/smart-filter-bar.class.mjs +1 -1
- package/esm2022/smart-filter-bar/smart-filter-bar.component.mjs +75 -21
- package/esm2022/table/components/table-cell-header-popover/table-cell-header-popover.component.mjs +14 -13
- package/esm2022/table/components/table-column-resizer/table-column-resizer.component.mjs +14 -11
- package/esm2022/table/components/table-header-row/table-header-row.component.mjs +7 -9
- package/esm2022/table/components/table-p13-dialog/columns/columns.component.mjs +1 -1
- package/esm2022/table/components/table-p13-dialog/filtering/filter-rule.component.mjs +1 -1
- package/esm2022/table/components/table-p13-dialog/filtering/filtering.component.mjs +1 -1
- package/esm2022/table/components/table-p13-dialog/grouping/grouping.component.mjs +1 -1
- package/esm2022/table/components/table-p13-dialog/sorting/sorting.component.mjs +1 -1
- package/esm2022/table/components/table-popping-row/table-popping-row.component.mjs +5 -7
- package/esm2022/table/components/table-row/table-row.component.mjs +31 -32
- package/esm2022/table/components/table-view-settings-dialog/filtering/filters.component.mjs +1 -1
- package/esm2022/table/components/table-view-settings-dialog/grouping/grouping.component.mjs +1 -1
- package/esm2022/table/components/table-view-settings-dialog/sorting/sorting.component.mjs +1 -1
- package/esm2022/table-helpers/directives/table-cell-resizable.directive.mjs +5 -4
- package/esm2022/table-helpers/directives/table-data-source.directive.mjs +8 -12
- package/esm2022/table-helpers/directives/table-header-resizer.directive.mjs +10 -11
- package/esm2022/table-helpers/directives/table-scrollable.directive.mjs +9 -15
- package/esm2022/table-helpers/directives/table-virtual-scroll.directive.mjs +5 -8
- package/esm2022/thumbnail/thumbnail-details/thumbnail-details.component.mjs +10 -4
- package/esm2022/thumbnail/thumbnail-image/thumbnail-image.component.mjs +12 -4
- package/esm2022/thumbnail/thumbnail.component.mjs +13 -4
- package/esm2022/upload-collection/dialogs/move-to/move-to.component.mjs +1 -1
- package/esm2022/upload-collection/upload-collection/upload-collection.component.mjs +36 -3
- package/esm2022/value-help-dialog/components/define-tab/define-tab.component.mjs +23 -6
- package/esm2022/value-help-dialog/components/select-tab/select-tab.component.mjs +14 -2
- package/esm2022/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +36 -3
- package/esm2022/variant-management/components/variant-management-wrapper/variant-management-wrapper.component.mjs +13 -16
- package/esm2022/variant-management/variant-management.component.mjs +1 -1
- package/feed-input/feed-input.component.d.ts +4 -1
- package/fesm2022/fundamental-ngx-platform-action-bar.mjs +10 -4
- package/fesm2022/fundamental-ngx-platform-action-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-approval-flow.mjs +17 -7
- package/fesm2022/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-button.mjs +20 -0
- package/fesm2022/fundamental-ngx-platform-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs +2 -2
- package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-feed-input.mjs +11 -0
- package/fesm2022/fundamental-ngx-platform-feed-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-form.mjs +127 -8
- package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-list.mjs +3 -0
- package/fesm2022/fundamental-ngx-platform-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-message-popover.mjs +54 -50
- package/fesm2022/fundamental-ngx-platform-message-popover.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-page-footer.mjs +11 -3
- package/fesm2022/fundamental-ngx-platform-page-footer.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-search-field.mjs +34 -11
- package/fesm2022/fundamental-ngx-platform-search-field.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-settings-generator.mjs +31 -33
- package/fesm2022/fundamental-ngx-platform-settings-generator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +82 -26
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-table-helpers.mjs +23 -35
- package/fesm2022/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-table.mjs +64 -67
- package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-thumbnail.mjs +27 -8
- package/fesm2022/fundamental-ngx-platform-thumbnail.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-upload-collection.mjs +38 -5
- package/fesm2022/fundamental-ngx-platform-upload-collection.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +70 -8
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs +15 -16
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs.map +1 -1
- package/form/checkbox/checkbox.component.d.ts +4 -2
- package/form/date-picker/date-picker.component.d.ts +16 -7
- package/form/datetime-picker/datetime-picker.component.d.ts +20 -8
- package/form/form-group/form-field/form-field.component.d.ts +4 -1
- package/form/time-picker/time-picker.component.d.ts +4 -1
- package/fundamental-ngx-platform-v0.44.0-rc.4.tgz +0 -0
- package/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.d.ts +22 -21
- package/message-popover/components/message-view/message-view.component.d.ts +4 -5
- package/message-popover/message-popover.component.d.ts +7 -6
- package/package.json +4 -4
- package/schematics/ng-add/index.js +1 -1
- package/search-field/search-field.component.d.ts +25 -19
- package/settings-generator/layouts/base-settings-generator-layout.d.ts +16 -17
- package/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-icon/settings-generator-sidebar-icon.component.d.ts +3 -3
- package/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-layout.component.d.ts +6 -7
- package/settings-generator/settings-generator.component.d.ts +8 -8
- package/smart-filter-bar/smart-filter-bar.class.d.ts +5 -5
- package/smart-filter-bar/smart-filter-bar.component.d.ts +31 -17
- package/table/components/table-cell-header-popover/table-cell-header-popover.component.d.ts +3 -3
- package/table/components/table-column-resizer/table-column-resizer.component.d.ts +1 -1
- package/table/components/table-row/table-row.component.d.ts +10 -10
- package/table-helpers/directives/table-data-source.directive.d.ts +11 -13
- package/table-helpers/directives/table-header-resizer.directive.d.ts +3 -3
- package/table-helpers/directives/table-scrollable.directive.d.ts +1 -1
- package/table-helpers/directives/table-virtual-scroll.directive.d.ts +1 -1
- package/thumbnail/thumbnail-details/thumbnail-details.component.d.ts +2 -2
- package/thumbnail/thumbnail-image/thumbnail-image.component.d.ts +1 -1
- package/upload-collection/upload-collection/upload-collection.component.d.ts +11 -5
- package/value-help-dialog/components/define-tab/define-tab.component.d.ts +8 -2
- package/value-help-dialog/components/select-tab/select-tab.component.d.ts +6 -3
- package/value-help-dialog/value-help-dialog/value-help-dialog.component.d.ts +12 -3
- package/variant-management/components/variant-management-wrapper/variant-management-wrapper.component.d.ts +1 -3
- package/fundamental-ngx-platform-v0.44.0-rc.2.tgz +0 -0
|
@@ -98,9 +98,28 @@ export class SearchFieldComponent extends BaseComponent {
|
|
|
98
98
|
get categories() {
|
|
99
99
|
return this._categories;
|
|
100
100
|
}
|
|
101
|
-
/**
|
|
102
|
-
|
|
103
|
-
|
|
101
|
+
/**
|
|
102
|
+
* @deprecated use i18n capabilities instead
|
|
103
|
+
* Message announced by screen reader, when search suggestions opens.
|
|
104
|
+
*/
|
|
105
|
+
set searchSuggestionMessage(value) {
|
|
106
|
+
console.warn('Property searchSuggestionMessage is deprecated. Use i18n capabilities instead.');
|
|
107
|
+
this._searchSuggestionMessage = value;
|
|
108
|
+
}
|
|
109
|
+
get searchSuggestionMessage() {
|
|
110
|
+
return this._searchSuggestionMessage;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* @deprecated use i18n capabilities instead
|
|
114
|
+
* Second part of message for search suggestion.
|
|
115
|
+
* direction for navigating the suggestion. This is not necessry in case of 0 suggestion.
|
|
116
|
+
*/
|
|
117
|
+
set searchSuggestionNavigateMessage(value) {
|
|
118
|
+
console.warn('Property searchSuggestionNavigateMessage is deprecated. Use i18n capabilities instead.');
|
|
119
|
+
this._searchSuggestionNavigateMessage = value;
|
|
120
|
+
}
|
|
121
|
+
get searchSuggestionNavigateMessage() {
|
|
122
|
+
return this._searchSuggestionNavigateMessage;
|
|
104
123
|
}
|
|
105
124
|
/** @hidden */
|
|
106
125
|
get searchFieldValue() {
|
|
@@ -109,6 +128,10 @@ export class SearchFieldComponent extends BaseComponent {
|
|
|
109
128
|
category: this._currentCategory?.value || null
|
|
110
129
|
};
|
|
111
130
|
}
|
|
131
|
+
/** @hidden Focus state */
|
|
132
|
+
get isFocused() {
|
|
133
|
+
return this._document?.activeElement === this.inputField?.nativeElement;
|
|
134
|
+
}
|
|
112
135
|
/** @hidden */
|
|
113
136
|
constructor(elementRef, _overlay, _viewContainerRef, _injector, _cd, _rtl, _document, _language$, _liveAnnouncer, _dynamicComponentService, contentDensityObserver) {
|
|
114
137
|
super(_cd);
|
|
@@ -188,6 +211,12 @@ export class SearchFieldComponent extends BaseComponent {
|
|
|
188
211
|
this._dataSourceChanged$ = new Subject();
|
|
189
212
|
}
|
|
190
213
|
/** @hidden */
|
|
214
|
+
handleKeydown(event) {
|
|
215
|
+
if (this.mobile && this.isOpen && KeyUtil.isKeyCode(event, [ESCAPE])) {
|
|
216
|
+
this.showDialog(false);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
/** @hidden */
|
|
191
220
|
ngOnInit() {
|
|
192
221
|
const baseId = 'fdp-search-field';
|
|
193
222
|
this._inputId = `${baseId}-input-${searchFieldIdCount++}`;
|
|
@@ -220,12 +249,6 @@ export class SearchFieldComponent extends BaseComponent {
|
|
|
220
249
|
this._onDestroy$.next();
|
|
221
250
|
this._onDestroy$.complete();
|
|
222
251
|
}
|
|
223
|
-
/** @hidden */
|
|
224
|
-
handleKeydown(event) {
|
|
225
|
-
if (this.mobile && this.isOpen && KeyUtil.isKeyCode(event, [ESCAPE])) {
|
|
226
|
-
this.showDialog(false);
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
252
|
/**
|
|
230
253
|
* Focuses the search input field.
|
|
231
254
|
*/
|
|
@@ -484,7 +507,7 @@ export class SearchFieldComponent extends BaseComponent {
|
|
|
484
507
|
provide: FD_SHELLBAR_SEARCH_COMPONENT,
|
|
485
508
|
useExisting: SearchFieldComponent
|
|
486
509
|
}
|
|
487
|
-
], viewQueries: [{ propertyName: "categoryDropdown", first: true, predicate: ["categoryDropdown"], descendants: true }, { propertyName: "inputGroup", first: true, predicate: ["inputGroup"], descendants: true }, { propertyName: "inputField", first: true, predicate: ["inputField"], descendants: true }, { propertyName: "inputFieldTemplate", first: true, predicate: ["inputFieldTemplate"], descendants: true }, { propertyName: "suggestionMenuTemplate", first: true, predicate: ["suggestionMenuTemplate"], descendants: true }, { propertyName: "suggestionItems", predicate: SearchFieldSuggestionDirective, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngTemplateOutlet=\"mobile ? mobileTemplate : inputFieldTemplate\"></ng-container>\n\n<ng-template #mobileTemplate>\n <ng-container *ngTemplateOutlet=\"inputFieldTemplate\"></ng-container>\n</ng-template>\n\n<ng-template #searchCategoryMenu>\n <button\n class=\"fdp-search-field__category-button fd-input-group__button fd-button fd-button--menu {{\n appearance?.categoryButtonClass\n }}\"\n [fdpMenuTriggerFor]=\"categoryMenu\"\n >\n <span class=\"fdp-search-field__category-label\" *ngIf=\"!hideCategoryLabel\">\n {{ _currentCategory?.label || categoryLabel }}\n </span>\n </button>\n <fdp-menu #categoryMenu>\n <fdp-menu-item *ngFor=\"let category of categories\" (itemSelect)=\"setCurrentCategory(category)\"\n >{{ category.label }}\n </fdp-menu-item>\n </fdp-menu>\n</ng-template>\n\n<ng-template #searchCategorySelect>\n <fd-select\n [placeholder]=\"categoryLabel\"\n [selectControlClass]=\"appearance?.categoryButtonClass\"\n [selectDropdownButtonClass]=\"appearance?.categoryDropdownButtonClass\"\n (valueChange)=\"setCurrentCategory($event)\"\n >\n <li fd-option *ngFor=\"let category of categories\" [value]=\"category\">{{ category.label }}</li>\n </fd-select>\n</ng-template>\n\n<ng-template #inputFieldTemplate>\n <div\n class=\"fdp-search-field\"\n [class.with-categories]=\"_showCategoryDropdown\"\n [class.is-loading]=\"isLoading\"\n [class.is-compact]=\"contentDensityObserver.isCompact$ | async\"\n [class.hide-category-label]=\"hideCategoryLabel\"\n >\n <div\n #inputGroup\n class=\"fdp-search-field__input-group fd-input-group {{ appearance?.searchClass }}\"\n [class.is-focus]=\"isFocused\"\n >\n <span\n class=\"fd-input-group__addon fd-input-group__addon--button {{ appearance?.searchCategoryClass }}\"\n *ngIf=\"_showCategoryDropdown\"\n >\n <ng-template\n *ngTemplateOutlet=\"categoryMode === 'select' ? searchCategorySelect : searchCategoryMenu\"\n ></ng-template>\n </span>\n <input\n #inputField\n type=\"search\"\n [attr.placeholder]=\"placeholder\"\n class=\"fdp-search-field__input fd-input fd-input-group__input {{ appearance?.searchFieldClass }}\"\n [attr.id]=\"_inputId\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-controls]=\"_menuId\"\n [attr.aria-expanded]=\"_showDropdown ? 'true' : 'false'\"\n aria-haspopup=\"true\"\n autocomplete=\"off\"\n (keydown)=\"onKeydown($event)\"\n (keydown.enter)=\"onSearchSubmit($event)\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"onValueChange($event)\"\n (click)=\"mobile && openMobileMode()\"\n />\n <span\n class=\"fd-input-group__addon fd-input-group__addon--button {{ appearance?.addonClass }}\"\n *ngIf=\"inputText && inputText.length > 0\"\n >\n <button\n [title]=\"'platformSearchField.clearButtonTitle' | fdTranslate\"\n class=\"fdp-search-field__clear fd-button fd-button--transparent {{ appearance?.buttonClass }}\"\n [class.fd-input-group__button]=\"!appearance?.removeGroupButtonClass\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.id]=\"_clearId\"\n (click)=\"clearTextInput()\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </span>\n <span\n class=\"fd-input-group__addon fd-input-group__addon--button {{ appearance?.addonClass }} {{\n appearance?.searchSubmitClass\n }}\"\n *ngIf=\"forceSearchButton || isLoading || (!isLoading && !_isSearchDone)\"\n >\n <button\n *ngIf=\"!disableSearch\"\n [title]=\"'platformSearchField.submitButtonTitle' | fdTranslate\"\n class=\"fdp-search-field__submit fd-button fd-button--transparent {{ appearance?.buttonClass }}\"\n [class.fd-input-group__button]=\"!appearance?.removeGroupButtonClass\"\n [attr.id]=\"_submitId\"\n [attr.disabled]=\"disabled ? '' : null\"\n (click)=\"onSearchSubmit()\"\n >\n <fd-icon glyph=\"search\"></fd-icon>\n </button>\n </span>\n <span\n class=\"fd-input-group__addon fd-input-group__addon--button {{ appearance?.addonClass }} {{\n appearance?.searchSubmitClass\n }}\"\n *ngIf=\"!disableRefresh && !isLoading && (_isRefresh || _isSearchDone)\"\n >\n <button\n [title]=\"'platformSearchField.synchronizeButtonTitle' | fdTranslate\"\n class=\"fdp-search-field__loading fd-input-group__button fd-button fd-button--transparent {{\n appearance?.buttonClass\n }}\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.id]=\"_refreshId\"\n (click)=\"onSearchSubmit()\"\n >\n <fd-icon glyph=\"synchronize\"></fd-icon>\n </button>\n </span>\n </div>\n </div>\n</ng-template>\n\n<ng-template #suggestionMenuTemplate>\n <div\n class=\"fdp-search-field__suggestion-dropdown\"\n [attr.dir]=\"_dir\"\n *ngIf=\"(_dropdownValues$ | async | suggestionMatches : inputText : mobile)?.length\"\n >\n <nav\n class=\"fd-menu\"\n tabindex=\"-1\"\n [class.is-compact]=\"contentDensityObserver.isCompact$ | async\"\n [class.fd-menu--mobile]=\"mobile\"\n [class.fd-menu--overflow]=\"!mobile\"\n [attr.id]=\"_menuId\"\n #menu\n (keydown)=\"onKeydown($event)\"\n >\n <ul class=\"fd-menu__list\" role=\"menu\">\n <li\n fdpSearchFieldSuggestion\n class=\"fdp-search-field__suggestion-item fd-menu__item fd-menu__link\"\n *ngFor=\"let value of _dropdownValues$ | async | suggestionMatches : inputText : mobile\"\n (keydown.enter)=\"onItemClick(value); $event.preventDefault()\"\n (keydown.tab)=\"onItemClick(value)\"\n (keyup.space)=\"onItemClick(value); $event.stopPropagation()\"\n (click)=\"onItemClick(value)\"\n [innerHTML]=\"value | highlight : inputText : true : true\"\n role=\"menuitem\"\n ></li>\n </ul>\n </nav>\n </div>\n</ng-template>\n", styles: [".fd-button{--fdButton_Height:2.25rem;--fdButton_Clickable_Height:2.75rem;--fdButton_Padding_X:.625rem;--fdButton_Min_Width:2.25rem;-webkit-box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;--fdButtonColor:var(--sapButton_TextColor);--fdButtonBorderColor:var(--sapButton_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Background);align-items:center;appearance:none;background-color:transparent;background-color:var(--fdButtonBackgroundColor);background-image:none;border:0;border-color:var(--fdButtonBorderColor);border-radius:var(--sapButton_BorderCornerRadius);border-style:solid;border-width:var(--sapButton_BorderWidth);box-sizing:border-box;color:var(--sapTextColor);color:var(--fdButtonColor);cursor:pointer;display:inline-block;display:inline-flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdButton_Height);justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;max-height:var(--fdButton_Height);min-width:var(--fdButton_Min_Width);outline:0;padding:0;padding-left:calc(var(--fdButton_Padding_X) - var(--sapButton_BorderWidth));padding-right:calc(var(--fdButton_Padding_X) - var(--sapButton_BorderWidth));position:relative;text-align:center;text-decoration:none;text-shadow:var(--fdButton_Text_Shadow);user-select:none;vertical-align:middle;white-space:nowrap}.fd-button:after,.fd-button:before{box-sizing:inherit;font-size:inherit}.fd-button::-moz-focus-inner{border:0}.fd-button:before{bottom:calc((var(--fdButton_Clickable_Height) - var(--fdButton_Height)) * .5);content:\"\";display:block;height:auto;left:0;position:absolute;right:0;top:calc((var(--fdButton_Clickable_Height) - var(--fdButton_Height)) * .5);width:100%}.fd-button__text{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:inherit;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;font-weight:inherit;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;overflow:hidden;padding:0;text-overflow:ellipsis;white-space:nowrap}.fd-button__text:after,.fd-button__text:before{box-sizing:inherit;font-size:inherit}.fd-button,.fd-button__text{font-family:var(--fdButton_Font_Family)}.fd-button :not(:first-child):not(.fd-button__badge){margin-left:.375rem}.fd-button :not(:first-child):not(.fd-button__badge)[dir=rtl],[dir=rtl] .fd-button :not(:first-child):not(.fd-button__badge){margin-left:0;margin-right:.375rem}.fd-button>[class*=sap-icon]{color:inherit;font-size:1rem;font-style:normal;height:1rem;line-height:1rem;min-width:1rem;vertical-align:text-bottom;width:1rem}.fd-button>[class*=sap-icon]:after,.fd-button>[class*=sap-icon]:before{font-size:inherit;height:inherit;line-height:inherit;width:inherit}.fd-button__badge{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;background-color:var(--sapContent_BadgeBackground);border:0;border:.0625rem solid var(--fdButton_Badge_Border_Color);border-radius:.5rem;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_BadgeTextColor);display:inline-flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:var(--sapFontSmallSize);font-weight:400;forced-color-adjust:none;height:1rem;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;margin-left:var(--fdButton_Badge_Margin_Left, 0);padding:0 .3125rem;position:var(--fdButton_Badge_Position, absolute);right:-.25rem;top:-.25rem;z-index:1}.fd-button__badge:after,.fd-button__badge:before{box-sizing:inherit;font-size:inherit}.fd-button__badge[dir=rtl],[dir=rtl] .fd-button__badge{left:-.25rem;margin-left:0;margin-right:var(--fdButton_Badge_Margin_Left, 0);right:auto}.fd-button[class*=-compact],.fd-button[class*=-condensed],[class*=-compact] .fd-button:not([class*=-cozy]),[class*=-condensed] .fd-button:not([class*=-cozy]){--fdButton_Height:1.625rem;--fdButton_Clickable_Height:2rem;--fdButton_Padding_X:.5rem;--fdButton_Min_Width:2rem;--fdButton_Badge_Position:static;--fdButton_Badge_Margin_Left:.25rem}.fd-button--menu{max-width:12rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fd-button--menu-fixed-width{justify-content:space-between}.fd-button--menu .fd-button__text{line-height:1rem}.fd-button--full-width{-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;display:flex;justify-content:center;min-width:100%;width:100%}.fd-button--text-alignment-left{justify-content:flex-start;text-align:left}.fd-button--text-alignment-right{justify-content:flex-end;text-align:right}.fd-button--decisive{min-width:4rem}.fd-button__instructions{clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.fd-button.is-focus,.fd-button:focus{box-shadow:none;outline:none;z-index:5}.fd-button.is-focus:after,.fd-button:focus:after{border:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--sapContent_FocusColor);border-radius:calc(var(--sapButton_BorderCornerRadius) - var(--sapContent_FocusWidth));bottom:var(--fdButton_Outline_Offset);content:\"\";display:block;left:var(--fdButton_Outline_Offset);position:absolute;right:var(--fdButton_Outline_Offset);top:var(--fdButton_Outline_Offset)}.fd-button.is-focus.fd-button--toggled:after,.fd-button.is-focus.is-selected:after,.fd-button:focus.fd-button--toggled:after,.fd-button:focus.is-selected:after{border-color:var(--fdButton_Outline_Contrast)}.fd-button.is-active,.fd-button.is-selected,.fd-button:active,.fd-button[aria-selected=true]{box-shadow:none;outline:none}.fd-button.is-disabled,.fd-button:disabled,.fd-button[aria-disabled=true]{box-shadow:none;cursor:not-allowed;opacity:var(--sapContent_DisabledOpacity)}.fd-button.is-selected,.fd-button[aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Selected_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Selected_Background)}.fd-button.is-hover,.fd-button:hover{--fdButtonColor:var(--sapButton_Hover_TextColor);--fdButtonBorderColor:var(--sapButton_Hover_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Hover_Background);box-shadow:var(--fdButton_Hover_Shadow)}.fd-button.is-active,.fd-button:active{--fdButtonColor:var(--sapButton_Active_TextColor);--fdButtonBorderColor:var(--sapButton_Active_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Active_Background);--fdElementTextColor:var(--sapButton_Active_TextColor);--fdElementIconColor:var(--sapButton_Active_TextColor)}.fd-button.is-active .fd-button__icon,.fd-button:active .fd-button__icon{color:var(--sapButton_Active_TextColor);text-shadow:none}.fd-button.is-disabled,.fd-button:disabled,.fd-button[aria-disabled=true]{--fdButtonColor:var(--sapButton_TextColor);--fdButtonBorderColor:var(--sapButton_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Background)}.fd-button.fd-button--toggled,.fd-button.is-disabled.is-selected,.fd-button.is-disabled[aria-selected=true],.fd-button:disabled.is-selected,.fd-button:disabled[aria-selected=true],.fd-button[aria-disabled=true].is-selected,.fd-button[aria-disabled=true][aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Selected_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Selected_Background)}.fd-button.fd-button--toggled.is-active,.fd-button.fd-button--toggled.is-hover,.fd-button.fd-button--toggled.is-selected,.fd-button.fd-button--toggled:active,.fd-button.fd-button--toggled:hover,.fd-button.fd-button--toggled[aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Selected_Hover_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Selected_Hover_Background);box-shadow:var(--fdButton_Hover_Shadow)}.fd-button.fd-button--toggled.is-active,.fd-button.fd-button--toggled.is-selected,.fd-button.fd-button--toggled:active,.fd-button.fd-button--toggled[aria-selected=true]{--fdElementTextColor:var(--sapButton_Selected_TextColor);--fdElementIconColor:var(--sapButton_Selected_TextColor)}.fd-button.fd-button--toggled.is-active .fd-button__icon,.fd-button.fd-button--toggled.is-selected .fd-button__icon,.fd-button.fd-button--toggled:active .fd-button__icon,.fd-button.fd-button--toggled[aria-selected=true] .fd-button__icon{color:var(--sapButton_Active_TextColor);text-shadow:none}.fd-button.fd-button--toggled.is-disabled,.fd-button.fd-button--toggled:disabled,.fd-button.fd-button--toggled[aria-disabled=true]{box-shadow:none}.fd-button--attention{--fdButtonColor:var(--sapButton_Attention_TextColor);--fdButtonBorderColor:var(--sapButton_Attention_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Attention_Background);background-color:var(--fdButtonBackgroundColor);border-color:var(--fdButtonBorderColor);color:var(--fdButtonColor)}.fd-button--attention.is-selected,.fd-button--attention[aria-selected=true]{--fdButtonColor:var(--sapButton_Attention_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Attention_Selected_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Attention_Selected_Background)}.fd-button--attention.is-hover,.fd-button--attention:hover{--fdButtonColor:var(--sapButton_Attention_Hover_TextColor);--fdButtonBorderColor:var(--sapButton_Attention_Hover_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Attention_Hover_Background);box-shadow:var(--fdButton_Attention_Hover_Shadow)}.fd-button--attention.is-active,.fd-button--attention:active{--fdButtonColor:var(--sapButton_Attention_Active_TextColor);--fdButtonBorderColor:var(--sapButton_Attention_Active_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Attention_Active_Background);--fdElementTextColor:var(--sapButton_Attention_Active_TextColor);--fdElementIconColor:var(--sapButton_Attention_Active_TextColor)}.fd-button--attention.is-active .fd-button__icon,.fd-button--attention:active .fd-button__icon{color:var(--sapButton_Attention_Active_TextColor);text-shadow:none}.fd-button--attention.is-disabled,.fd-button--attention:disabled,.fd-button--attention[aria-disabled=true]{--fdButtonColor:var(--sapButton_Attention_TextColor);--fdButtonBorderColor:var(--sapButton_Attention_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Attention_Background)}.fd-button--attention.fd-button--toggled,.fd-button--attention.is-disabled.is-selected,.fd-button--attention.is-disabled[aria-selected=true],.fd-button--attention:disabled.is-selected,.fd-button--attention:disabled[aria-selected=true],.fd-button--attention[aria-disabled=true].is-selected,.fd-button--attention[aria-disabled=true][aria-selected=true]{--fdButtonColor:var(--sapButton_Attention_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Attention_Selected_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Attention_Selected_Background)}.fd-button--attention.fd-button--toggled.is-active,.fd-button--attention.fd-button--toggled.is-hover,.fd-button--attention.fd-button--toggled.is-selected,.fd-button--attention.fd-button--toggled:active,.fd-button--attention.fd-button--toggled:hover,.fd-button--attention.fd-button--toggled[aria-selected=true]{--fdButtonColor:var(--sapButton_Attention_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Attention_Selected_Hover_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Attention_Selected_Hover_Background);box-shadow:var(--fdButton_Attention_Hover_Shadow)}.fd-button--attention.fd-button--toggled.is-active,.fd-button--attention.fd-button--toggled.is-selected,.fd-button--attention.fd-button--toggled:active,.fd-button--attention.fd-button--toggled[aria-selected=true]{--fdElementTextColor:var(--sapButton_Attention_Selected_TextColor);--fdElementIconColor:var(--sapButton_Attention_Selected_TextColor)}.fd-button--attention.fd-button--toggled.is-active .fd-button__icon,.fd-button--attention.fd-button--toggled.is-selected .fd-button__icon,.fd-button--attention.fd-button--toggled:active .fd-button__icon,.fd-button--attention.fd-button--toggled[aria-selected=true] .fd-button__icon{color:var(--sapButton_Attention_Active_TextColor);text-shadow:none}.fd-button--attention.fd-button--toggled.is-disabled,.fd-button--attention.fd-button--toggled:disabled,.fd-button--attention.fd-button--toggled[aria-disabled=true]{box-shadow:none}.fd-button--emphasized{--fdButtonColor:var(--sapButton_Emphasized_TextColor);--fdButtonBorderColor:var(--sapButton_Emphasized_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Emphasized_Background);background-color:var(--fdButtonBackgroundColor);border-color:var(--fdButtonBorderColor);border-width:var(--fdButton_Emphasized_Border_Width);color:var(--fdButtonColor);font-weight:var(--sapButton_Emphasized_FontWeight)}.fd-button--emphasized.is-selected,.fd-button--emphasized[aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Selected_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Selected_Background)}.fd-button--emphasized.is-hover,.fd-button--emphasized:hover{--fdButtonColor:var(--sapButton_Emphasized_Hover_TextColor);--fdButtonBorderColor:var(--sapButton_Emphasized_Hover_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Emphasized_Hover_Background);box-shadow:none}.fd-button--emphasized.is-active,.fd-button--emphasized:active{--fdButtonColor:var(--sapButton_Emphasized_Active_TextColor);--fdButtonBorderColor:var(--sapButton_Emphasized_Active_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Emphasized_Active_Background);--fdElementTextColor:var(--sapButton_Emphasized_Active_TextColor);--fdElementIconColor:var(--sapButton_Emphasized_Active_TextColor)}.fd-button--emphasized.is-active .fd-button__icon,.fd-button--emphasized:active .fd-button__icon{color:var(--sapButton_Emphasized_Active_TextColor);text-shadow:none}.fd-button--emphasized.is-disabled,.fd-button--emphasized:disabled,.fd-button--emphasized[aria-disabled=true]{--fdButtonColor:var(--sapButton_Emphasized_TextColor);--fdButtonBorderColor:var(--sapButton_Emphasized_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Emphasized_Background)}.fd-button--emphasized.fd-button--toggled,.fd-button--emphasized.is-disabled.is-selected,.fd-button--emphasized.is-disabled[aria-selected=true],.fd-button--emphasized:disabled.is-selected,.fd-button--emphasized:disabled[aria-selected=true],.fd-button--emphasized[aria-disabled=true].is-selected,.fd-button--emphasized[aria-disabled=true][aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Selected_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Selected_Background)}.fd-button--emphasized.fd-button--toggled.is-active,.fd-button--emphasized.fd-button--toggled.is-hover,.fd-button--emphasized.fd-button--toggled.is-selected,.fd-button--emphasized.fd-button--toggled:active,.fd-button--emphasized.fd-button--toggled:hover,.fd-button--emphasized.fd-button--toggled[aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Selected_Hover_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Selected_Hover_Background);box-shadow:var(--fdButton_Hover_Shadow)}.fd-button--emphasized.fd-button--toggled.is-active,.fd-button--emphasized.fd-button--toggled.is-selected,.fd-button--emphasized.fd-button--toggled:active,.fd-button--emphasized.fd-button--toggled[aria-selected=true]{--fdElementTextColor:var(--sapButton_Selected_TextColor);--fdElementIconColor:var(--sapButton_Selected_TextColor)}.fd-button--emphasized.fd-button--toggled.is-active .fd-button__icon,.fd-button--emphasized.fd-button--toggled.is-selected .fd-button__icon,.fd-button--emphasized.fd-button--toggled:active .fd-button__icon,.fd-button--emphasized.fd-button--toggled[aria-selected=true] .fd-button__icon{color:var(--sapButton_Emphasized_Active_TextColor);text-shadow:none}.fd-button--emphasized.fd-button--toggled.is-disabled,.fd-button--emphasized.fd-button--toggled:disabled,.fd-button--emphasized.fd-button--toggled[aria-disabled=true]{box-shadow:none}.fd-button--emphasized.is-focus,.fd-button--emphasized:focus{z-index:5}.fd-button--emphasized.is-focus:after,.fd-button--emphasized:focus:after{border-color:var(--sapContent_ContrastFocusColor)}.fd-button--emphasized.is-active,.fd-button--emphasized.is-selected,.fd-button--emphasized:active,.fd-button--emphasized[aria-selected=true]{outline:none}.fd-button--emphasized.fd-button--toggled.is-focus,.fd-button--emphasized.fd-button--toggled:focus{outline-color:var(--fdButton_Emphasized_Active_Outline);z-index:5}.fd-button--emphasized.fd-button--toggled.is-active,.fd-button--emphasized.fd-button--toggled.is-selected,.fd-button--emphasized.fd-button--toggled:active,.fd-button--emphasized.fd-button--toggled[aria-selected=true]{outline:none}.fd-button--ghost{--fdButtonColor:var(--sapButton_TextColor);--fdButtonBorderColor:var(--sapButton_BorderColor);--fdButtonBackgroundColor:var(--fdButton_Ghost_Background);background-color:var(--fdButtonBackgroundColor);border-color:var(--fdButtonBorderColor);color:var(--fdButtonColor)}.fd-button--ghost.is-selected,.fd-button--ghost[aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Selected_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Selected_Background)}.fd-button--ghost.is-hover,.fd-button--ghost:hover{--fdButtonColor:var(--sapButton_Hover_TextColor);--fdButtonBorderColor:var(--sapButton_Hover_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Hover_Background);box-shadow:var(--fdButton_Hover_Shadow)}.fd-button--ghost.is-active,.fd-button--ghost:active{--fdButtonColor:var(--sapButton_Active_TextColor);--fdButtonBorderColor:var(--sapButton_Active_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Active_Background);--fdElementTextColor:var(--sapButton_Active_TextColor);--fdElementIconColor:var(--sapButton_Active_TextColor)}.fd-button--ghost.is-active .fd-button__icon,.fd-button--ghost:active .fd-button__icon{color:var(--sapButton_Active_TextColor);text-shadow:none}.fd-button--ghost.is-disabled,.fd-button--ghost:disabled,.fd-button--ghost[aria-disabled=true]{--fdButtonColor:var(--sapButton_TextColor);--fdButtonBorderColor:var(--sapButton_BorderColor);--fdButtonBackgroundColor:var(--fdButton_Ghost_Background)}.fd-button--ghost.fd-button--toggled,.fd-button--ghost.is-disabled.is-selected,.fd-button--ghost.is-disabled[aria-selected=true],.fd-button--ghost:disabled.is-selected,.fd-button--ghost:disabled[aria-selected=true],.fd-button--ghost[aria-disabled=true].is-selected,.fd-button--ghost[aria-disabled=true][aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Selected_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Selected_Background)}.fd-button--ghost.fd-button--toggled.is-active,.fd-button--ghost.fd-button--toggled.is-hover,.fd-button--ghost.fd-button--toggled.is-selected,.fd-button--ghost.fd-button--toggled:active,.fd-button--ghost.fd-button--toggled:hover,.fd-button--ghost.fd-button--toggled[aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Selected_Hover_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Selected_Hover_Background);box-shadow:var(--fdButton_Hover_Shadow)}.fd-button--ghost.fd-button--toggled.is-active,.fd-button--ghost.fd-button--toggled.is-selected,.fd-button--ghost.fd-button--toggled:active,.fd-button--ghost.fd-button--toggled[aria-selected=true]{--fdElementTextColor:var(--sapButton_Selected_TextColor);--fdElementIconColor:var(--sapButton_Selected_TextColor)}.fd-button--ghost.fd-button--toggled.is-active .fd-button__icon,.fd-button--ghost.fd-button--toggled.is-selected .fd-button__icon,.fd-button--ghost.fd-button--toggled:active .fd-button__icon,.fd-button--ghost.fd-button--toggled[aria-selected=true] .fd-button__icon{color:var(--sapButton_Active_TextColor);text-shadow:none}.fd-button--ghost.fd-button--toggled.is-disabled,.fd-button--ghost.fd-button--toggled:disabled,.fd-button--ghost.fd-button--toggled[aria-disabled=true]{box-shadow:none}.fd-button--negative{--fdButtonColor:var(--sapButton_Reject_TextColor);--fdButtonBorderColor:var(--sapButton_Reject_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Reject_Background);background-color:var(--fdButtonBackgroundColor);border-color:var(--fdButtonBorderColor);color:var(--fdButtonColor)}.fd-button--negative.is-selected,.fd-button--negative[aria-selected=true]{--fdButtonColor:var(--sapButton_Reject_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Reject_Selected_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Reject_Selected_Background)}.fd-button--negative.is-hover,.fd-button--negative:hover{--fdButtonColor:var(--sapButton_Reject_Hover_TextColor);--fdButtonBorderColor:var(--sapButton_Reject_Hover_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Reject_Hover_Background);box-shadow:var(--fdButton_Negative_Hover_Shadow)}.fd-button--negative.is-active,.fd-button--negative:active{--fdButtonColor:var(--sapButton_Reject_Active_TextColor);--fdButtonBorderColor:var(--sapButton_Reject_Active_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Reject_Active_Background);--fdElementTextColor:var(--sapButton_Reject_Active_TextColor);--fdElementIconColor:var(--sapButton_Reject_Active_TextColor)}.fd-button--negative.is-active .fd-button__icon,.fd-button--negative:active .fd-button__icon{color:var(--sapButton_Reject_Active_TextColor);text-shadow:none}.fd-button--negative.is-disabled,.fd-button--negative:disabled,.fd-button--negative[aria-disabled=true]{--fdButtonColor:var(--sapButton_Reject_TextColor);--fdButtonBorderColor:var(--sapButton_Reject_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Reject_Background)}.fd-button--negative.fd-button--toggled,.fd-button--negative.is-disabled.is-selected,.fd-button--negative.is-disabled[aria-selected=true],.fd-button--negative:disabled.is-selected,.fd-button--negative:disabled[aria-selected=true],.fd-button--negative[aria-disabled=true].is-selected,.fd-button--negative[aria-disabled=true][aria-selected=true]{--fdButtonColor:var(--sapButton_Reject_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Reject_Selected_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Reject_Selected_Background)}.fd-button--negative.fd-button--toggled.is-active,.fd-button--negative.fd-button--toggled.is-hover,.fd-button--negative.fd-button--toggled.is-selected,.fd-button--negative.fd-button--toggled:active,.fd-button--negative.fd-button--toggled:hover,.fd-button--negative.fd-button--toggled[aria-selected=true]{--fdButtonColor:var(--sapButton_Reject_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Reject_Selected_Hover_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Reject_Selected_Hover_Background);box-shadow:var(--fdButton_Negative_Hover_Shadow)}.fd-button--negative.fd-button--toggled.is-active,.fd-button--negative.fd-button--toggled.is-selected,.fd-button--negative.fd-button--toggled:active,.fd-button--negative.fd-button--toggled[aria-selected=true]{--fdElementTextColor:var(--sapButton_Reject_Selected_TextColor);--fdElementIconColor:var(--sapButton_Reject_Selected_TextColor)}.fd-button--negative.fd-button--toggled.is-active .fd-button__icon,.fd-button--negative.fd-button--toggled.is-selected .fd-button__icon,.fd-button--negative.fd-button--toggled:active .fd-button__icon,.fd-button--negative.fd-button--toggled[aria-selected=true] .fd-button__icon{color:var(--sapButton_Reject_Active_TextColor);text-shadow:none}.fd-button--negative.fd-button--toggled.is-disabled,.fd-button--negative.fd-button--toggled:disabled,.fd-button--negative.fd-button--toggled[aria-disabled=true]{box-shadow:none}.fd-button--positive{--fdButtonColor:var(--sapButton_Accept_TextColor);--fdButtonBorderColor:var(--sapButton_Accept_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Accept_Background);background-color:var(--fdButtonBackgroundColor);border-color:var(--fdButtonBorderColor);color:var(--fdButtonColor)}.fd-button--positive.is-selected,.fd-button--positive[aria-selected=true]{--fdButtonColor:var(--sapButton_Accept_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Accept_Selected_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Accept_Selected_Background)}.fd-button--positive.is-hover,.fd-button--positive:hover{--fdButtonColor:var(--sapButton_Accept_Hover_TextColor);--fdButtonBorderColor:var(--sapButton_Accept_Hover_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Accept_Hover_Background);box-shadow:var(--fdButton_Positive_Hover_Shadow)}.fd-button--positive.is-active,.fd-button--positive:active{--fdButtonColor:var(--sapButton_Accept_Active_TextColor);--fdButtonBorderColor:var(--sapButton_Accept_Active_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Accept_Active_Background);--fdElementTextColor:var(--sapButton_Accept_Active_TextColor);--fdElementIconColor:var(--sapButton_Accept_Active_TextColor)}.fd-button--positive.is-active .fd-button__icon,.fd-button--positive:active .fd-button__icon{color:var(--sapButton_Accept_Active_TextColor);text-shadow:none}.fd-button--positive.is-disabled,.fd-button--positive:disabled,.fd-button--positive[aria-disabled=true]{--fdButtonColor:var(--sapButton_Accept_TextColor);--fdButtonBorderColor:var(--sapButton_Accept_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Accept_Background)}.fd-button--positive.fd-button--toggled,.fd-button--positive.is-disabled.is-selected,.fd-button--positive.is-disabled[aria-selected=true],.fd-button--positive:disabled.is-selected,.fd-button--positive:disabled[aria-selected=true],.fd-button--positive[aria-disabled=true].is-selected,.fd-button--positive[aria-disabled=true][aria-selected=true]{--fdButtonColor:var(--sapButton_Accept_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Accept_Selected_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Accept_Selected_Background)}.fd-button--positive.fd-button--toggled.is-active,.fd-button--positive.fd-button--toggled.is-hover,.fd-button--positive.fd-button--toggled.is-selected,.fd-button--positive.fd-button--toggled:active,.fd-button--positive.fd-button--toggled:hover,.fd-button--positive.fd-button--toggled[aria-selected=true]{--fdButtonColor:var(--sapButton_Accept_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Accept_Selected_Hover_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Accept_Selected_Hover_Background);box-shadow:var(--fdButton_Positive_Hover_Shadow)}.fd-button--positive.fd-button--toggled.is-active,.fd-button--positive.fd-button--toggled.is-selected,.fd-button--positive.fd-button--toggled:active,.fd-button--positive.fd-button--toggled[aria-selected=true]{--fdElementTextColor:var(--sapButton_Accept_Selected_TextColor);--fdElementIconColor:var(--sapButton_Accept_Selected_TextColor)}.fd-button--positive.fd-button--toggled.is-active .fd-button__icon,.fd-button--positive.fd-button--toggled.is-selected .fd-button__icon,.fd-button--positive.fd-button--toggled:active .fd-button__icon,.fd-button--positive.fd-button--toggled[aria-selected=true] .fd-button__icon{color:var(--sapButton_Accept_Active_TextColor);text-shadow:none}.fd-button--positive.fd-button--toggled.is-disabled,.fd-button--positive.fd-button--toggled:disabled,.fd-button--positive.fd-button--toggled[aria-disabled=true]{box-shadow:none}.fd-button--transparent{--fdButtonColor:var(--sapButton_Lite_TextColor);--fdButtonBorderColor:var(--sapButton_Lite_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Lite_Background);background-color:var(--fdButtonBackgroundColor);border-color:var(--fdButtonBorderColor);color:var(--fdButtonColor)}.fd-button--transparent.is-selected,.fd-button--transparent[aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Selected_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Selected_Background)}.fd-button--transparent.is-hover,.fd-button--transparent:hover{--fdButtonColor:var(--sapButton_Lite_Hover_TextColor);--fdButtonBorderColor:var(--sapButton_Lite_Hover_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Lite_Hover_Background);box-shadow:var(--fdButton_Hover_Shadow)}.fd-button--transparent.is-active,.fd-button--transparent:active{--fdButtonColor:var(--sapButton_Active_TextColor);--fdButtonBorderColor:var(--sapButton_Lite_Active_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Lite_Active_Background);--fdElementTextColor:var(--sapButton_Active_TextColor);--fdElementIconColor:var(--sapButton_Active_TextColor)}.fd-button--transparent.is-active .fd-button__icon,.fd-button--transparent:active .fd-button__icon{color:var(--sapButton_Active_TextColor);text-shadow:none}.fd-button--transparent.is-disabled,.fd-button--transparent:disabled,.fd-button--transparent[aria-disabled=true]{--fdButtonColor:var(--sapButton_Lite_TextColor);--fdButtonBorderColor:var(--sapButton_Lite_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Lite_Background)}.fd-button--transparent.fd-button--toggled,.fd-button--transparent.is-disabled.is-selected,.fd-button--transparent.is-disabled[aria-selected=true],.fd-button--transparent:disabled.is-selected,.fd-button--transparent:disabled[aria-selected=true],.fd-button--transparent[aria-disabled=true].is-selected,.fd-button--transparent[aria-disabled=true][aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Selected_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Selected_Background)}.fd-button--transparent.fd-button--toggled.is-active,.fd-button--transparent.fd-button--toggled.is-hover,.fd-button--transparent.fd-button--toggled.is-selected,.fd-button--transparent.fd-button--toggled:active,.fd-button--transparent.fd-button--toggled:hover,.fd-button--transparent.fd-button--toggled[aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Selected_Hover_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Selected_Hover_Background);box-shadow:var(--fdButton_Hover_Shadow)}.fd-button--transparent.fd-button--toggled.is-active,.fd-button--transparent.fd-button--toggled.is-selected,.fd-button--transparent.fd-button--toggled:active,.fd-button--transparent.fd-button--toggled[aria-selected=true]{--fdElementTextColor:var(--sapButton_Selected_TextColor);--fdElementIconColor:var(--sapButton_Selected_TextColor)}.fd-button--transparent.fd-button--toggled.is-active .fd-button__icon,.fd-button--transparent.fd-button--toggled.is-selected .fd-button__icon,.fd-button--transparent.fd-button--toggled:active .fd-button__icon,.fd-button--transparent.fd-button--toggled[aria-selected=true] .fd-button__icon{color:var(--sapButton_Active_TextColor);text-shadow:none}.fd-button--transparent.fd-button--toggled.is-disabled,.fd-button--transparent.fd-button--toggled:disabled,.fd-button--transparent.fd-button--toggled[aria-disabled=true]{box-shadow:none}.fd-input{-webkit-box-sizing:border-box;-webkit-box-shadow:none;-webkit-appearance:none;appearance:none;background:var(--sapField_BackgroundStyle, var(--sapField_BackgroundStyle));background-color:var(--sapField_Background, var(--sapField_Background));border:0;border:var(--sapField_BorderWidth) var(--sapField_BorderStyle) var(--sapField_BorderColor);border-radius:var(--sapField_BorderCornerRadius);box-shadow:none;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapField_TextColor);cursor:text;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:2.25rem;line-height:var(--sapContent_LineHeight);margin:0;margin:var(--fdInput_Field_Margin, .25rem 0);min-height:2.25rem;min-width:var(2.75rem, 2.75rem);outline:none;overflow:hidden;padding:0;padding:var(--fdInput_Field_Padding, 0 .625rem);text-overflow:ellipsis;text-shadow:var(--fdInput_Text_Shadow);white-space:nowrap;width:100%;z-index:1}.fd-input:after,.fd-input:before{box-sizing:inherit;font-size:inherit}.fd-input::placeholder{color:var(--sapField_PlaceholderTextColor);font-style:var(--fdPlaceholder_Font_Style)}.fd-input[dir=rtl]::placeholder,[dir=rtl] .fd-input::placeholder{text-indent:.125rem}.fd-input::selection{background-color:var(--sapSelectedColor);color:var(--sapContent_ContrastTextColor)}.fd-input::-ms-clear{display:none}.fd-input.is-hover,.fd-input:hover{-webkit-box-shadow:var(--fdInput_Box_Shadow_Hover);background:var(--sapField_Hover_BackgroundStyle, var(--sapField_Hover_BackgroundStyle));background-color:var(--sapField_Hover_Background, var(--sapField_Hover_Background));border-color:var(--sapField_Hover_BorderColor);box-shadow:var(--fdInput_Box_Shadow_Hover)}.fd-input.is-focus,.fd-input:focus{-webkit-box-shadow:none;background:var(--sapField_Focus_Background, var(--sapField_Focus_Background));box-shadow:none;outline-color:var(--fdInput_Outline_Color);outline-offset:var(--fdInput_Outline_Offset);outline-style:var(--sapContent_FocusStyle);outline-width:var(--sapContent_FocusWidth);z-index:5}.fd-input[type=search]::-webkit-search-cancel-button,.fd-input[type=search]::-webkit-search-decoration,.fd-input[type=search]::-webkit-search-results-button,.fd-input[type=search]::-webkit-search-results-decoration{-webkit-appearance:none}.fd-input[aria-expanded=false]{z-index:0}.fd-input.is-expanded,.fd-input[aria-expanded=true]{z-index:4}.fd-input[class*=-compact],.fd-input[class*=-condensed],[class*=-compact] .fd-input:not([class*=-cozy]),[class*=-condensed] .fd-input:not([class*=-cozy]){box-sizing:border-box;height:1.625rem;margin:var(--fdInput_Field_Compact_Margin, .1875rem 0);min-height:1.625rem;min-width:var(--fdInput_Field_Compact_Min_Width, 2rem);padding:var(--fdInput_Field_Compact_Padding, 0 .5rem)}.fd-input--no-number-spinner{-moz-appearance:textfield}.fd-input--no-number-spinner::-webkit-inner-spin-button,.fd-input--no-number-spinner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.fd-input.right-align{text-align:right}.fd-input.is-success{background:var(--sapField_SuccessBackgroundStyle);background-color:var(--sapField_SuccessBackground);border:var(--sapField_SuccessColor) var(--sapField_SuccessBorderWidth) var(--sapField_SuccessBorderStyle)}.fd-input.is-success.is-hover,.fd-input.is-success:hover{-webkit-box-shadow:var(--fdInput_Success_Box_Shadow_Hover);background-color:var(--fdInput_Success_Background_Color_Hover);border-color:var(--sapField_SuccessColor);box-shadow:var(--fdInput_Success_Box_Shadow_Hover)}.fd-input.is-success.is-focus,.fd-input.is-success:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Success_Outline_Color);z-index:5}.fd-input.is-success.is-focus.is-hover,.fd-input.is-success.is-focus:hover,.fd-input.is-success:focus.is-hover,.fd-input.is-success:focus:hover{box-shadow:none}.fd-input.is-error{background:var(--sapField_InvalidBackgroundStyle);background-color:var(--sapField_InvalidBackground);border:var(--sapField_InvalidColor) var(--sapField_InvalidBorderWidth) var(--sapField_InvalidBorderStyle)}.fd-input.is-error.is-hover,.fd-input.is-error:hover{-webkit-box-shadow:var(--fdInput_Error_Box_Shadow_Hover);background-color:var(--fdInput_Error_Background_Color_Hover);border-color:var(--sapField_InvalidColor);box-shadow:var(--fdInput_Error_Box_Shadow_Hover)}.fd-input.is-error.is-focus,.fd-input.is-error:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Error_Outline_Color);z-index:5}.fd-input.is-error.is-focus.is-hover,.fd-input.is-error.is-focus:hover,.fd-input.is-error:focus.is-hover,.fd-input.is-error:focus:hover{box-shadow:none}.fd-input.is-warning{background:var(--sapField_WarningBackgroundStyle);background-color:var(--sapField_WarningBackground);border:var(--sapField_WarningColor) var(--sapField_WarningBorderWidth) var(--sapField_WarningBorderStyle)}.fd-input.is-warning.is-hover,.fd-input.is-warning:hover{-webkit-box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);background-color:var(--fdInput_Warning_Background_Color_Hover);border-color:var(--sapField_WarningColor);box-shadow:var(--fdInput_Warning_Box_Shadow_Hover)}.fd-input.is-warning.is-focus,.fd-input.is-warning:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Warning_Outline_Color);z-index:5}.fd-input.is-warning.is-focus.is-hover,.fd-input.is-warning.is-focus:hover,.fd-input.is-warning:focus.is-hover,.fd-input.is-warning:focus:hover{box-shadow:none}.fd-input.is-alert{background:var(--sapField_WarningBackgroundStyle);background-color:var(--sapField_WarningBackground);border:var(--sapField_WarningColor) var(--sapField_WarningBorderWidth) var(--sapField_WarningBorderStyle)}.fd-input.is-alert.is-hover,.fd-input.is-alert:hover{-webkit-box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);background-color:var(--fdInput_Warning_Background_Color_Hover);border-color:var(--sapField_WarningColor);box-shadow:var(--fdInput_Warning_Box_Shadow_Hover)}.fd-input.is-alert.is-focus,.fd-input.is-alert:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Warning_Outline_Color);z-index:5}.fd-input.is-alert.is-focus.is-hover,.fd-input.is-alert.is-focus:hover,.fd-input.is-alert:focus.is-hover,.fd-input.is-alert:focus:hover{box-shadow:none}.fd-input.is-information{background:var(--sapField_InformationBackgroundStyle);background-color:var(--sapField_InformationBackground);border:var(--sapField_InformationColor) var(--sapField_InformationBorderWidth) var(--sapField_InformationBorderStyle)}.fd-input.is-information.is-hover,.fd-input.is-information:hover{-webkit-box-shadow:var(--fdInput_Information_Box_Shadow_Hover);background-color:var(--fdInput_Information_Background_Color_Hover);border-color:var(--sapField_InformationColor);box-shadow:var(--fdInput_Information_Box_Shadow_Hover)}.fd-input.is-information.is-focus,.fd-input.is-information:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Information_Outline_Color);z-index:5}.fd-input.is-information.is-focus.is-hover,.fd-input.is-information.is-focus:hover,.fd-input.is-information:focus.is-hover,.fd-input.is-information:focus:hover{box-shadow:none}.fd-input.is-alert,.fd-input.is-error,.fd-input.is-warning{font-style:var(--fdInput_State_Text_Style);font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert::placeholder,.fd-input.is-error::placeholder,.fd-input.is-warning::placeholder{font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert.is-focus,.fd-input.is-alert:focus,.fd-input.is-error.is-focus,.fd-input.is-error:focus,.fd-input.is-information.is-focus,.fd-input.is-information:focus,.fd-input.is-warning.is-focus,.fd-input.is-warning:focus{outline-offset:var(--fdInput_Outline_Offset_States);z-index:5}.fd-input.is-error::placeholder{color:var(--sapField_TextColor)}.fd-input.is-disabled,.fd-input:disabled,.fd-input[aria-disabled=true]{opacity:var(--sapContent_DisabledOpacity);pointer-events:none}.fd-input.is-disabled::placeholder,.fd-input:disabled::placeholder,.fd-input[aria-disabled=true]::placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color)}.fd-input.is-readonly,.fd-input[aria-readonly=true],.fd-input[readonly]{background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);border-radius:var(--fdInput_ReadOnly_Border_Radius)}.fd-input.is-readonly::placeholder,.fd-input[aria-readonly=true]::placeholder,.fd-input[readonly]::placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color)}.fd-input.is-readonly.is-hover,.fd-input.is-readonly:hover,.fd-input[aria-readonly=true].is-hover,.fd-input[aria-readonly=true]:hover,.fd-input[readonly].is-hover,.fd-input[readonly]:hover{-webkit-box-shadow:none;background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);border-radius:var(--fdInput_ReadOnly_Border_Radius);box-shadow:none}.fd-input.is-readonly.is-focus,.fd-input.is-readonly:focus,.fd-input[aria-readonly=true].is-focus,.fd-input[aria-readonly=true]:focus,.fd-input[readonly].is-focus,.fd-input[readonly]:focus{background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);border-radius:var(--fdInput_ReadOnly_Border_Radius);z-index:5}/*!\n * Fundamental Library Styles v0.28.3\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *//*!\n.fd-input-group+(--inline, --control)\n .fd-input-group__addon+(--button)\n*/.fd-input-group{-webkit-box-sizing:border-box;-webkit-box-shadow:none;-webkit-appearance:none;appearance:none;background:var(--fdInputGroup_Background, var(--sapField_BackgroundStyle));background-color:var(--fdInputGroup_Background_Color, var(--sapField_Background));border:0;border:var(--sapField_BorderWidth) var(--sapField_BorderStyle) var(--sapField_BorderColor);border-radius:var(--sapField_BorderCornerRadius);box-shadow:none;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapField_TextColor);cursor:text;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:auto;line-height:var(--sapContent_LineHeight);margin:0;margin:var(--fdInput_Field_Margin, .25rem 0);min-width:var(2.75rem, 2.75rem);outline:none;overflow:hidden;padding:0;text-overflow:ellipsis;text-shadow:var(--fdInput_Text_Shadow);white-space:nowrap;width:100%;z-index:1}.fd-input-group:after,.fd-input-group:before{box-sizing:inherit;font-size:inherit}.fd-input-group::placeholder{color:var(--sapField_PlaceholderTextColor);font-style:var(--fdPlaceholder_Font_Style)}.fd-input-group[dir=rtl]::placeholder,[dir=rtl] .fd-input-group::placeholder{text-indent:.125rem}.fd-input-group::selection{background-color:var(--sapSelectedColor);color:var(--sapContent_ContrastTextColor)}.fd-input-group::-ms-clear{display:none}.fd-input-group.is-hover,.fd-input-group:hover{-webkit-box-shadow:var(--fdInput_Box_Shadow_Hover);background:var(--fdInputGroup_Hover_Background, var(--sapField_Hover_BackgroundStyle));background-color:var(--fdInputGroup_Hover_Background_Color, var(--sapField_Hover_Background));border-color:var(--sapField_Hover_BorderColor);box-shadow:var(--fdInput_Box_Shadow_Hover)}.fd-input-group.is-focus,.fd-input-group:focus{-webkit-box-shadow:none;background:var(--sapField_Focus_Background, var(--sapField_Focus_Background));box-shadow:none;outline-color:var(--fdInput_Outline_Color);outline-offset:var(--fdInput_Outline_Offset);outline-style:var(--sapContent_FocusStyle);outline-width:var(--sapContent_FocusWidth);z-index:5}.fd-input-group.is-success{background:var(--sapField_SuccessBackgroundStyle);background-color:var(--sapField_SuccessBackground);border:var(--sapField_SuccessColor) var(--sapField_SuccessBorderWidth) var(--sapField_SuccessBorderStyle)}.fd-input-group.is-success.is-hover,.fd-input-group.is-success:hover{-webkit-box-shadow:var(--fdInput_Success_Box_Shadow_Hover);background-color:var(--fdInput_Success_Background_Color_Hover);border-color:var(--sapField_SuccessColor);box-shadow:var(--fdInput_Success_Box_Shadow_Hover)}.fd-input-group.is-success.is-focus,.fd-input-group.is-success:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Success_Outline_Color);z-index:5}.fd-input-group.is-success.is-focus.is-hover,.fd-input-group.is-success.is-focus:hover,.fd-input-group.is-success:focus.is-hover,.fd-input-group.is-success:focus:hover{box-shadow:none}.fd-input-group.is-error{background:var(--sapField_InvalidBackgroundStyle);background-color:var(--sapField_InvalidBackground);border:var(--sapField_InvalidColor) var(--sapField_InvalidBorderWidth) var(--sapField_InvalidBorderStyle)}.fd-input-group.is-error.is-hover,.fd-input-group.is-error:hover{-webkit-box-shadow:var(--fdInput_Error_Box_Shadow_Hover);background-color:var(--fdInput_Error_Background_Color_Hover);border-color:var(--sapField_InvalidColor);box-shadow:var(--fdInput_Error_Box_Shadow_Hover)}.fd-input-group.is-error.is-focus,.fd-input-group.is-error:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Error_Outline_Color);z-index:5}.fd-input-group.is-error.is-focus.is-hover,.fd-input-group.is-error.is-focus:hover,.fd-input-group.is-error:focus.is-hover,.fd-input-group.is-error:focus:hover{box-shadow:none}.fd-input-group.is-warning{background:var(--sapField_WarningBackgroundStyle);background-color:var(--sapField_WarningBackground);border:var(--sapField_WarningColor) var(--sapField_WarningBorderWidth) var(--sapField_WarningBorderStyle)}.fd-input-group.is-warning.is-hover,.fd-input-group.is-warning:hover{-webkit-box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);background-color:var(--fdInput_Warning_Background_Color_Hover);border-color:var(--sapField_WarningColor);box-shadow:var(--fdInput_Warning_Box_Shadow_Hover)}.fd-input-group.is-warning.is-focus,.fd-input-group.is-warning:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Warning_Outline_Color);z-index:5}.fd-input-group.is-warning.is-focus.is-hover,.fd-input-group.is-warning.is-focus:hover,.fd-input-group.is-warning:focus.is-hover,.fd-input-group.is-warning:focus:hover{box-shadow:none}.fd-input-group.is-alert{background:var(--sapField_WarningBackgroundStyle);background-color:var(--sapField_WarningBackground);border:var(--sapField_WarningColor) var(--sapField_WarningBorderWidth) var(--sapField_WarningBorderStyle)}.fd-input-group.is-alert.is-hover,.fd-input-group.is-alert:hover{-webkit-box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);background-color:var(--fdInput_Warning_Background_Color_Hover);border-color:var(--sapField_WarningColor);box-shadow:var(--fdInput_Warning_Box_Shadow_Hover)}.fd-input-group.is-alert.is-focus,.fd-input-group.is-alert:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Warning_Outline_Color);z-index:5}.fd-input-group.is-alert.is-focus.is-hover,.fd-input-group.is-alert.is-focus:hover,.fd-input-group.is-alert:focus.is-hover,.fd-input-group.is-alert:focus:hover{box-shadow:none}.fd-input-group.is-information{background:var(--sapField_InformationBackgroundStyle);background-color:var(--sapField_InformationBackground);border:var(--sapField_InformationColor) var(--sapField_InformationBorderWidth) var(--sapField_InformationBorderStyle)}.fd-input-group.is-information.is-hover,.fd-input-group.is-information:hover{-webkit-box-shadow:var(--fdInput_Information_Box_Shadow_Hover);background-color:var(--fdInput_Information_Background_Color_Hover);border-color:var(--sapField_InformationColor);box-shadow:var(--fdInput_Information_Box_Shadow_Hover)}.fd-input-group.is-information.is-focus,.fd-input-group.is-information:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Information_Outline_Color);z-index:5}.fd-input-group.is-information.is-focus.is-hover,.fd-input-group.is-information.is-focus:hover,.fd-input-group.is-information:focus.is-hover,.fd-input-group.is-information:focus:hover{box-shadow:none}.fd-input-group.is-alert,.fd-input-group.is-error,.fd-input-group.is-warning{font-style:var(--fdInput_State_Text_Style);font-weight:var(--fdInput_State_Font_Weight)}.fd-input-group.is-alert::placeholder,.fd-input-group.is-error::placeholder,.fd-input-group.is-warning::placeholder{font-weight:var(--fdInput_State_Font_Weight)}.fd-input-group.is-alert.is-focus,.fd-input-group.is-alert:focus,.fd-input-group.is-error.is-focus,.fd-input-group.is-error:focus,.fd-input-group.is-information.is-focus,.fd-input-group.is-information:focus,.fd-input-group.is-warning.is-focus,.fd-input-group.is-warning:focus{outline-offset:var(--fdInput_Outline_Offset_States);z-index:5}.fd-input-group.is-error::placeholder{color:var(--sapField_TextColor)}.fd-input-group.is-disabled,.fd-input-group:disabled,.fd-input-group[aria-disabled=true]{opacity:var(--sapContent_DisabledOpacity);pointer-events:none}.fd-input-group.is-disabled::placeholder,.fd-input-group:disabled::placeholder,.fd-input-group[aria-disabled=true]::placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color)}.fd-input-group.is-readonly,.fd-input-group[aria-readonly=true],.fd-input-group[readonly]{background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);border-radius:var(--fdInput_ReadOnly_Border_Radius)}.fd-input-group.is-readonly::placeholder,.fd-input-group[aria-readonly=true]::placeholder,.fd-input-group[readonly]::placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color)}.fd-input-group.is-readonly.is-hover,.fd-input-group.is-readonly:hover,.fd-input-group[aria-readonly=true].is-hover,.fd-input-group[aria-readonly=true]:hover,.fd-input-group[readonly].is-hover,.fd-input-group[readonly]:hover{-webkit-box-shadow:none;background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);border-radius:var(--fdInput_ReadOnly_Border_Radius);box-shadow:none}.fd-input-group.is-readonly.is-focus,.fd-input-group.is-readonly:focus,.fd-input-group[aria-readonly=true].is-focus,.fd-input-group[aria-readonly=true]:focus,.fd-input-group[readonly].is-focus,.fd-input-group[readonly]:focus{background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);border-radius:var(--fdInput_ReadOnly_Border_Radius);z-index:5}.fd-input-group .fd-input-group__button:first-child{border-right:var(--fdInputGroup_ControlButton_SideBorder)}.fd-input-group .fd-input-group__button:first-child[dir=rtl],[dir=rtl] .fd-input-group .fd-input-group__button:first-child{border-left:var(--fdInputGroup_ControlButton_SideBorder);border-right-style:none}.fd-input-group .fd-input-group__button:first-child.is-hover,.fd-input-group .fd-input-group__button:first-child:hover{border-right:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-input-group .fd-input-group__button:first-child.is-hover[dir=rtl],.fd-input-group .fd-input-group__button:first-child:hover[dir=rtl],[dir=rtl] .fd-input-group .fd-input-group__button:first-child.is-hover,[dir=rtl] .fd-input-group .fd-input-group__button:first-child:hover{border-left:var(--fdInputGroup_ControlButton_SideBorder_Active);border-right-style:none}.fd-input-group .fd-input-group__button:first-child.is-active,.fd-input-group .fd-input-group__button:first-child:active{border-right:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-input-group .fd-input-group__button:first-child.is-active[dir=rtl],.fd-input-group .fd-input-group__button:first-child:active[dir=rtl],[dir=rtl] .fd-input-group .fd-input-group__button:first-child.is-active,[dir=rtl] .fd-input-group .fd-input-group__button:first-child:active{border-left:var(--fdInputGroup_ControlButton_SideBorder_Active);border-right-style:none}.fd-input-group .fd-input-group__button:not(:first-child){border-left:var(--fdInputGroup_ControlButton_SideBorder)}.fd-input-group .fd-input-group__button:not(:first-child)[dir=rtl],[dir=rtl] .fd-input-group .fd-input-group__button:not(:first-child){border-left-style:none;border-right:var(--fdInputGroup_ControlButton_SideBorder)}.fd-input-group .fd-input-group__button:not(:first-child).is-hover,.fd-input-group .fd-input-group__button:not(:first-child):hover{border-left:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-input-group .fd-input-group__button:not(:first-child).is-hover[dir=rtl],.fd-input-group .fd-input-group__button:not(:first-child):hover[dir=rtl],[dir=rtl] .fd-input-group .fd-input-group__button:not(:first-child).is-hover,[dir=rtl] .fd-input-group .fd-input-group__button:not(:first-child):hover{border-left-style:none;border-right:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-input-group .fd-input-group__button:not(:first-child).is-active,.fd-input-group .fd-input-group__button:not(:first-child):active{border-left:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-input-group .fd-input-group__button:not(:first-child).is-active[dir=rtl],.fd-input-group .fd-input-group__button:not(:first-child):active[dir=rtl],[dir=rtl] .fd-input-group .fd-input-group__button:not(:first-child).is-active,[dir=rtl] .fd-input-group .fd-input-group__button:not(:first-child):active{border-left-style:none;border-right:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-input-group .fd-input-group__addon:first-child .fd-input-group__button{border-right:var(--fdInputGroup_ControlButton_SideBorder)}.fd-input-group .fd-input-group__addon:first-child .fd-input-group__button[dir=rtl],[dir=rtl] .fd-input-group .fd-input-group__addon:first-child .fd-input-group__button{border-left:var(--fdInputGroup_ControlButton_SideBorder);border-right-style:none}.fd-input-group .fd-input-group__addon:first-child .fd-input-group__button.is-hover,.fd-input-group .fd-input-group__addon:first-child .fd-input-group__button:hover{border-right:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-input-group .fd-input-group__addon:first-child .fd-input-group__button.is-hover[dir=rtl],.fd-input-group .fd-input-group__addon:first-child .fd-input-group__button:hover[dir=rtl],[dir=rtl] .fd-input-group .fd-input-group__addon:first-child .fd-input-group__button.is-hover,[dir=rtl] .fd-input-group .fd-input-group__addon:first-child .fd-input-group__button:hover{border-left:var(--fdInputGroup_ControlButton_SideBorder_Active);border-right-style:none}.fd-input-group .fd-input-group__addon:first-child .fd-input-group__button.is-active,.fd-input-group .fd-input-group__addon:first-child .fd-input-group__button:active{border-right:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-input-group .fd-input-group__addon:first-child .fd-input-group__button.is-active[dir=rtl],.fd-input-group .fd-input-group__addon:first-child .fd-input-group__button:active[dir=rtl],[dir=rtl] .fd-input-group .fd-input-group__addon:first-child .fd-input-group__button.is-active,[dir=rtl] .fd-input-group .fd-input-group__addon:first-child .fd-input-group__button:active{border-left:var(--fdInputGroup_ControlButton_SideBorder_Active);border-right-style:none}.fd-input-group .fd-input-group__addon:not(:first-child) .fd-input-group__button{border-left:var(--fdInputGroup_ControlButton_SideBorder)}.fd-input-group .fd-input-group__addon:not(:first-child) .fd-input-group__button[dir=rtl],[dir=rtl] .fd-input-group .fd-input-group__addon:not(:first-child) .fd-input-group__button{border-left-style:none;border-right:var(--fdInputGroup_ControlButton_SideBorder)}.fd-input-group .fd-input-group__addon:not(:first-child) .fd-input-group__button.is-hover,.fd-input-group .fd-input-group__addon:not(:first-child) .fd-input-group__button:hover{border-left:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-input-group .fd-input-group__addon:not(:first-child) .fd-input-group__button.is-hover[dir=rtl],.fd-input-group .fd-input-group__addon:not(:first-child) .fd-input-group__button:hover[dir=rtl],[dir=rtl] .fd-input-group .fd-input-group__addon:not(:first-child) .fd-input-group__button.is-hover,[dir=rtl] .fd-input-group .fd-input-group__addon:not(:first-child) .fd-input-group__button:hover{border-left-style:none;border-right:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-input-group .fd-input-group__addon:not(:first-child) .fd-input-group__button.is-active,.fd-input-group .fd-input-group__addon:not(:first-child) .fd-input-group__button:active{border-left:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-input-group .fd-input-group__addon:not(:first-child) .fd-input-group__button.is-active[dir=rtl],.fd-input-group .fd-input-group__addon:not(:first-child) .fd-input-group__button:active[dir=rtl],[dir=rtl] .fd-input-group .fd-input-group__addon:not(:first-child) .fd-input-group__button.is-active,[dir=rtl] .fd-input-group .fd-input-group__addon:not(:first-child) .fd-input-group__button:active{border-left-style:none;border-right:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-input-group .fd-input-group__button{background:var(--fdInput_Group_Button_Background);border:none;border-radius:var(--fdInput_Group_Button_Border_Raduis);color:var(--fdInput_Group_Button_Text_Color);overflow:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;z-index:auto!important}.fd-input-group .fd-input-group__button:before{display:none!important}.fd-input-group .fd-input-group__button.is-hover,.fd-input-group .fd-input-group__button:hover{--fdInput_Group_Button_Text_Color:var(--fdInput_Group_Button_Hover_Text_Color);-webkit-box-shadow:var(--fdInput_Group_Button_Box_Shadow);background:var(--fdInput_Group_Button_Hover_Background);box-shadow:var(--fdInput_Group_Button_Box_Shadow)}.fd-input-group .fd-input-group__button.is-active,.fd-input-group .fd-input-group__button:active{-webkit-box-shadow:var(--fdInput_Group_Button_Box_Shadow);background:var(--fdInput_Group_Button_Active_Background);box-shadow:var(--fdInput_Group_Button_Box_Shadow);color:var(--fdInput_Group_Button_Active_Text_Color)}.fd-input-group.is-success .fd-input-group__button.is-active,.fd-input-group.is-success .fd-input-group__button.is-hover,.fd-input-group.is-success .fd-input-group__button:active,.fd-input-group.is-success .fd-input-group__button:hover{box-shadow:var(--fdInput_Group_Button_Success_Active_Box_Shadow)}.fd-input-group.is-success .fd-input-group__button.is-active,.fd-input-group.is-success .fd-input-group__button:active{color:var(--fdInput_Group_Button_Success_Active_Text_Color)}.fd-input-group.is-error .fd-input-group__button.is-active,.fd-input-group.is-error .fd-input-group__button.is-hover,.fd-input-group.is-error .fd-input-group__button:active,.fd-input-group.is-error .fd-input-group__button:hover{box-shadow:var(--fdInput_Group_Button_Error_Active_Box_Shadow)}.fd-input-group.is-error .fd-input-group__button.is-active,.fd-input-group.is-error .fd-input-group__button:active{color:var(--fdInput_Group_Button_Error_Active_Text_Color)}.fd-input-group.is-warning .fd-input-group__button.is-active,.fd-input-group.is-warning .fd-input-group__button.is-hover,.fd-input-group.is-warning .fd-input-group__button:active,.fd-input-group.is-warning .fd-input-group__button:hover{box-shadow:var(--fdInput_Group_Button_Warning_Active_Box_Shadow)}.fd-input-group.is-warning .fd-input-group__button.is-active,.fd-input-group.is-warning .fd-input-group__button:active{color:var(--fdInput_Group_Button_Warning_Active_Text_Color)}.fd-input-group.is-alert .fd-input-group__button.is-active,.fd-input-group.is-alert .fd-input-group__button.is-hover,.fd-input-group.is-alert .fd-input-group__button:active,.fd-input-group.is-alert .fd-input-group__button:hover{box-shadow:var(--fdInput_Group_Button_Warning_Active_Box_Shadow)}.fd-input-group.is-alert .fd-input-group__button.is-active,.fd-input-group.is-alert .fd-input-group__button:active{color:var(--fdInput_Group_Button_Warning_Active_Text_Color)}.fd-input-group.is-information .fd-input-group__button.is-active,.fd-input-group.is-information .fd-input-group__button.is-hover,.fd-input-group.is-information .fd-input-group__button:active,.fd-input-group.is-information .fd-input-group__button:hover{box-shadow:var(--fdInput_Group_Button_Information_Active_Box_Shadow)}.fd-input-group.is-information .fd-input-group__button.is-active,.fd-input-group.is-information .fd-input-group__button:active{color:var(--fdInput_Group_Button_Information_Active_Text_Color)}.fd-input-group .fd-input-group__input{-webkit-box-flex:1;-ms-flex:1 1 10rem;background:none;background-color:var(--fdInputGroup_Input_Background, transparent);border:var(--fdInputGroup_Input_Border, none);color:var(--fdInputGroup_Input_Color, inherit);flex:1 1 10rem;padding-left:.25rem;padding-right:.25rem;text-shadow:var(--fdInputGroup_Text_Shadow)}.fd-input-group .fd-input-group__input:nth-child(n+1){margin:0}.fd-input-group .fd-input-group__input::placeholder{color:var(--fdInputGroup_Input_Placeholder_Color, var(--sapField_PlaceholderTextColor));font-style:var(--fdInputGroup_Input_Placeholder_Style, italic)}.fd-input-group .fd-input-group__input.is-hover,.fd-input-group .fd-input-group__input:hover{-webkit-box-shadow:none;background:none;background-color:var(--fdInputGroup_Hover_Input_Background, transparent);box-shadow:none}.fd-input-group .fd-input-group__input.is-focus,.fd-input-group .fd-input-group__input:focus{-webkit-box-shadow:none;background:var(--fdInputGroup_Input_Background, none);border-radius:0;box-shadow:none;outline:none;z-index:5}.fd-input-group .fd-input-group__input:first-child{padding-left:.625rem}.fd-input-group .fd-input-group__input:first-child[dir=rtl],[dir=rtl] .fd-input-group .fd-input-group__input:first-child{padding-left:0;padding-right:.625rem}.fd-input-group .fd-input-group__input:last-child{padding-right:.625rem}.fd-input-group .fd-input-group__input:last-child[dir=rtl],[dir=rtl] .fd-input-group .fd-input-group__input:last-child{padding-left:.625rem;padding-right:.25rem}.fd-input-group--inline{display:inline-flex;vertical-align:bottom;width:auto}.fd-input-group__addon{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;background:var(--fdInputGroup_Addon_Background, none);border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_NonInteractiveIconColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:var(--sapFontLargeSize);font-weight:400;forced-color-adjust:none;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;min-height:var(--fdInput_Group_Addon_Height, 2.25rem);min-width:var(--fdInput_Group_Addon_Width, 2.25rem);overflow:hidden;padding:0 .625rem;text-overflow:ellipsis;white-space:nowrap}.fd-input-group__addon:after,.fd-input-group__addon:before{box-sizing:inherit;font-size:inherit}.fd-input-group__addon span[class*=sap-icon--]:before{font-size:var(--sapFontLargeSize)}.fd-input-group__addon--readonly{opacity:.4}.fd-input-group__addon--button{overflow:visible;padding:0}.fd-input-group--control[aria-expanded=true]{margin-bottom:0}.fd-input-group[class*=-compact],.fd-input-group[class*=-condensed],[class*=-compact] .fd-input-group:not([class*=-cozy]),[class*=-condensed] .fd-input-group:not([class*=-cozy]){--fdInput_Field_Margin:.1875rem 0;--fdInput_Field_Compact_Margin:0;--fdInput_Group_Addon_Width:2rem;--fdInput_Group_Addon_Height:1.625rem}.fd-input-group .fd-textarea{resize:vertical}.fd-input-group .is-disabled,.fd-input-group :disabled,.fd-input-group [aria-disabled=true]{opacity:1}.fd-input-group.is-readonly,.fd-input-group[readonly]{overflow:visible}.fd-input-group .fd-tokenizer,.fd-input-group .fd-tokenizer.is-focus,.fd-input-group .fd-tokenizer.is-hover,.fd-input-group .fd-tokenizer:focus,.fd-input-group .fd-tokenizer:hover{-webkit-box-shadow:none;background:none;background-color:var(transparent, transparent);box-shadow:none}.fd-input-group .fd-tokenizer.is-focus,.fd-input-group .fd-tokenizer:focus{outline:none;z-index:5}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.fdp-search-field input[type=text]::-ms-clear{display:none;width:0;height:0}.fdp-search-field input[type=text]::-ms-reveal{display:none;width:0;height:0}.fdp-search-field input[type=search]::-webkit-search-decoration,.fdp-search-field input[type=search]::-webkit-search-cancel-button,.fdp-search-field input[type=search]::-webkit-search-results-button,.fdp-search-field input[type=search]::-webkit-search-results-decoration{display:none}.fdp-search-field .fdp-search-field__input-group button.fd-input-group__button{border-width:0}.fdp-search-field .fdp-search-field__input:hover{background:transparent}.fdp-search-field__suggestion-dropdown .fd-menu--overflow{top:0;max-width:none;min-height:10rem;max-height:100%;position:absolute;background-color:var(--sapList_Background)}.fdp-search-field__suggestion-dropdown .fd-menu__list,.fdp-search-field__suggestion-dropdown .fd-menu__item{max-width:none}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return i5.NgForOf; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(function () { return i5.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(function () { return i5.NgTemplateOutlet; }), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i0.forwardRef(function () { return i6.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: i0.forwardRef(function () { return i6.NgControlStatus; }), selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i0.forwardRef(function () { return i6.NgModel; }), selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i0.forwardRef(function () { return i7.IconComponent; }), selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i0.forwardRef(function () { return i8.MenuComponent; }), selector: "fdp-menu", inputs: ["id", "openByArrowKeys", "xPosition"], outputs: ["close"] }, { kind: "component", type: i0.forwardRef(function () { return i8.MenuItemComponent; }), selector: "fdp-menu-item", inputs: ["disabled", "cascadeDirection"], outputs: ["itemSelect"] }, { kind: "directive", type: i0.forwardRef(function () { return i8.MenuTriggerDirective; }), selector: "[fdpMenuTriggerFor]", inputs: ["fdpMenuTriggerFor"] }, { kind: "component", type: i0.forwardRef(function () { return i9.SelectComponent; }), selector: "fd-select", inputs: ["controlId", "state", "mobile", "stateMessage", "disabled", "required", "readonly", "placeholder", "value", "extendedBodyTemplate", "maxHeight", "glyph", "closeOnOutsideClick", "fillControlMode", "controlTemplate", "appendTo", "unselectMissingOption", "typeaheadDebounceInterval", "ariaLabelledBy", "ariaLabel", "mobileConfig", "inline", "selectControlClass", "selectDropdownButtonClass", "compareWith"], outputs: ["isOpenChange", "valueChange"] }, { kind: "component", type: i0.forwardRef(function () { return i9.OptionComponent; }), selector: "[fd-option], fd-option", inputs: ["id", "value", "disabled"], outputs: ["selectionChange"] }, { kind: "directive", type: i0.forwardRef(function () { return SearchFieldSuggestionDirective; }), selector: "[fdpSearchFieldSuggestion]" }, { kind: "pipe", type: i0.forwardRef(function () { return i5.AsyncPipe; }), name: "async" }, { kind: "pipe", type: i0.forwardRef(function () { return i2.SearchHighlightPipe; }), name: "highlight" }, { kind: "pipe", type: i0.forwardRef(function () { return i10.FdTranslatePipe; }), name: "fdTranslate" }, { kind: "pipe", type: i0.forwardRef(function () { return SuggestionMatchesPipe; }), name: "suggestionMatches" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
510
|
+
], viewQueries: [{ propertyName: "categoryDropdown", first: true, predicate: ["categoryDropdown"], descendants: true }, { propertyName: "inputGroup", first: true, predicate: ["inputGroup"], descendants: true }, { propertyName: "inputField", first: true, predicate: ["inputField"], descendants: true }, { propertyName: "inputFieldTemplate", first: true, predicate: ["inputFieldTemplate"], descendants: true }, { propertyName: "suggestionMenuTemplate", first: true, predicate: ["suggestionMenuTemplate"], descendants: true }, { propertyName: "suggestionItems", predicate: SearchFieldSuggestionDirective, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngTemplateOutlet=\"mobile ? mobileTemplate : inputFieldTemplate\"></ng-container>\n\n<ng-template #mobileTemplate>\n <ng-container *ngTemplateOutlet=\"inputFieldTemplate\"></ng-container>\n</ng-template>\n\n<ng-template #searchCategoryMenu>\n <button\n class=\"fdp-search-field__category-button fd-input-group__button fd-button fd-button--menu {{\n appearance?.categoryButtonClass\n }}\"\n [fdpMenuTriggerFor]=\"categoryMenu\"\n >\n <span class=\"fdp-search-field__category-label\" *ngIf=\"!hideCategoryLabel\">\n {{ _currentCategory?.label || categoryLabel }}\n </span>\n </button>\n <fdp-menu #categoryMenu>\n <fdp-menu-item *ngFor=\"let category of categories\" (itemSelect)=\"setCurrentCategory(category)\"\n >{{ category.label }}\n </fdp-menu-item>\n </fdp-menu>\n</ng-template>\n\n<ng-template #searchCategorySelect>\n <fd-select\n [placeholder]=\"categoryLabel\"\n [selectControlClass]=\"appearance?.categoryButtonClass\"\n [selectDropdownButtonClass]=\"appearance?.categoryDropdownButtonClass\"\n (valueChange)=\"setCurrentCategory($event)\"\n >\n <li fd-option *ngFor=\"let category of categories\" [value]=\"category\">{{ category.label }}</li>\n </fd-select>\n</ng-template>\n\n<ng-template #inputFieldTemplate>\n <div\n class=\"fdp-search-field\"\n [class.with-categories]=\"_showCategoryDropdown\"\n [class.is-loading]=\"isLoading\"\n [class.is-compact]=\"contentDensityObserver.isCompact$ | async\"\n [class.hide-category-label]=\"hideCategoryLabel\"\n >\n <div\n #inputGroup\n class=\"fdp-search-field__input-group fd-input-group {{ appearance?.searchClass }}\"\n [class.is-focus]=\"isFocused\"\n >\n <span\n class=\"fd-input-group__addon fd-input-group__addon--button {{ appearance?.searchCategoryClass }}\"\n *ngIf=\"_showCategoryDropdown\"\n >\n <ng-template\n *ngTemplateOutlet=\"categoryMode === 'select' ? searchCategorySelect : searchCategoryMenu\"\n ></ng-template>\n </span>\n <input\n #inputField\n type=\"search\"\n [attr.placeholder]=\"placeholder\"\n class=\"fdp-search-field__input fd-input fd-input-group__input {{ appearance?.searchFieldClass }}\"\n [attr.id]=\"_inputId\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-controls]=\"_menuId\"\n [attr.aria-expanded]=\"_showDropdown ? 'true' : 'false'\"\n aria-haspopup=\"true\"\n autocomplete=\"off\"\n (keydown)=\"onKeydown($event)\"\n (keydown.enter)=\"onSearchSubmit($event)\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"onValueChange($event)\"\n (click)=\"mobile && openMobileMode()\"\n />\n <span\n class=\"fd-input-group__addon fd-input-group__addon--button {{ appearance?.addonClass }}\"\n *ngIf=\"inputText && inputText.length > 0\"\n >\n <button\n [title]=\"'platformSearchField.clearButtonTitle' | fdTranslate\"\n class=\"fdp-search-field__clear fd-button fd-button--transparent {{ appearance?.buttonClass }}\"\n [class.fd-input-group__button]=\"!appearance?.removeGroupButtonClass\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.id]=\"_clearId\"\n (click)=\"clearTextInput()\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </span>\n <span\n class=\"fd-input-group__addon fd-input-group__addon--button {{ appearance?.addonClass }} {{\n appearance?.searchSubmitClass\n }}\"\n *ngIf=\"forceSearchButton || isLoading || (!isLoading && !_isSearchDone)\"\n >\n <button\n *ngIf=\"!disableSearch\"\n [title]=\"'platformSearchField.submitButtonTitle' | fdTranslate\"\n class=\"fdp-search-field__submit fd-button fd-button--transparent {{ appearance?.buttonClass }}\"\n [class.fd-input-group__button]=\"!appearance?.removeGroupButtonClass\"\n [attr.id]=\"_submitId\"\n [attr.disabled]=\"disabled ? '' : null\"\n (click)=\"onSearchSubmit()\"\n >\n <fd-icon glyph=\"search\"></fd-icon>\n </button>\n </span>\n <span\n class=\"fd-input-group__addon fd-input-group__addon--button {{ appearance?.addonClass }} {{\n appearance?.searchSubmitClass\n }}\"\n *ngIf=\"!disableRefresh && !isLoading && (_isRefresh || _isSearchDone)\"\n >\n <button\n [title]=\"'platformSearchField.synchronizeButtonTitle' | fdTranslate\"\n class=\"fdp-search-field__loading fd-input-group__button fd-button fd-button--transparent {{\n appearance?.buttonClass\n }}\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.id]=\"_refreshId\"\n (click)=\"onSearchSubmit()\"\n >\n <fd-icon glyph=\"synchronize\"></fd-icon>\n </button>\n </span>\n </div>\n </div>\n</ng-template>\n\n<ng-template #suggestionMenuTemplate>\n <div\n class=\"fdp-search-field__suggestion-dropdown\"\n [attr.dir]=\"_dir\"\n *ngIf=\"(_dropdownValues$ | async | suggestionMatches : inputText : mobile)?.length\"\n >\n <nav\n class=\"fd-menu\"\n tabindex=\"-1\"\n [class.is-compact]=\"contentDensityObserver.isCompact$ | async\"\n [class.fd-menu--mobile]=\"mobile\"\n [class.fd-menu--overflow]=\"!mobile\"\n [attr.id]=\"_menuId\"\n #menu\n (keydown)=\"onKeydown($event)\"\n >\n <ul class=\"fd-menu__list\" role=\"menu\">\n <li\n fdpSearchFieldSuggestion\n class=\"fdp-search-field__suggestion-item fd-menu__item fd-menu__link\"\n *ngFor=\"let value of _dropdownValues$ | async | suggestionMatches : inputText : mobile\"\n (keydown.enter)=\"onItemClick(value); $event.preventDefault()\"\n (keydown.tab)=\"onItemClick(value)\"\n (keyup.space)=\"onItemClick(value); $event.stopPropagation()\"\n (click)=\"onItemClick(value)\"\n [innerHTML]=\"value | highlight : inputText : true : true\"\n role=\"menuitem\"\n ></li>\n </ul>\n </nav>\n </div>\n</ng-template>\n", styles: [".fd-button{--fdButton_Height:2.25rem;--fdButton_Clickable_Height:2.75rem;--fdButton_Padding_X:.625rem;--fdButton_Min_Width:2.25rem;-webkit-box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;--fdButtonColor:var(--sapButton_TextColor);--fdButtonBorderColor:var(--sapButton_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Background);align-items:center;appearance:none;background-color:transparent;background-color:var(--fdButtonBackgroundColor);background-image:none;border:0;border-color:var(--fdButtonBorderColor);border-radius:var(--sapButton_BorderCornerRadius);border-style:solid;border-width:var(--sapButton_BorderWidth);box-sizing:border-box;color:var(--sapTextColor);color:var(--fdButtonColor);cursor:pointer;display:inline-block;display:inline-flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdButton_Height);justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;max-height:var(--fdButton_Height);min-width:var(--fdButton_Min_Width);outline:0;padding:0;padding-left:calc(var(--fdButton_Padding_X) - var(--sapButton_BorderWidth));padding-right:calc(var(--fdButton_Padding_X) - var(--sapButton_BorderWidth));position:relative;text-align:center;text-decoration:none;text-shadow:var(--fdButton_Text_Shadow);user-select:none;vertical-align:middle;white-space:nowrap}.fd-button:after,.fd-button:before{box-sizing:inherit;font-size:inherit}.fd-button::-moz-focus-inner{border:0}.fd-button:before{bottom:calc((var(--fdButton_Clickable_Height) - var(--fdButton_Height)) * .5);content:\"\";display:block;height:auto;left:0;position:absolute;right:0;top:calc((var(--fdButton_Clickable_Height) - var(--fdButton_Height)) * .5);width:100%}.fd-button__text{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:inherit;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;font-weight:inherit;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;overflow:hidden;padding:0;text-overflow:ellipsis;white-space:nowrap}.fd-button__text:after,.fd-button__text:before{box-sizing:inherit;font-size:inherit}.fd-button,.fd-button__text{font-family:var(--fdButton_Font_Family)}.fd-button :not(:first-child):not(.fd-button__badge){margin-left:.375rem}.fd-button :not(:first-child):not(.fd-button__badge)[dir=rtl],[dir=rtl] .fd-button :not(:first-child):not(.fd-button__badge){margin-left:0;margin-right:.375rem}.fd-button>[class*=sap-icon]{color:inherit;font-size:1rem;font-style:normal;height:1rem;line-height:1rem;min-width:1rem;vertical-align:text-bottom;width:1rem}.fd-button>[class*=sap-icon]:after,.fd-button>[class*=sap-icon]:before{font-size:inherit;height:inherit;line-height:inherit;width:inherit}.fd-button__badge{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;background-color:var(--sapContent_BadgeBackground);border:0;border:.0625rem solid var(--fdButton_Badge_Border_Color);border-radius:.5rem;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_BadgeTextColor);display:inline-flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:var(--sapFontSmallSize);font-weight:400;forced-color-adjust:none;height:1rem;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;margin-left:var(--fdButton_Badge_Margin_Left, 0);padding:0 .3125rem;position:var(--fdButton_Badge_Position, absolute);right:-.25rem;top:-.25rem;z-index:1}.fd-button__badge:after,.fd-button__badge:before{box-sizing:inherit;font-size:inherit}.fd-button__badge[dir=rtl],[dir=rtl] .fd-button__badge{left:-.25rem;margin-left:0;margin-right:var(--fdButton_Badge_Margin_Left, 0);right:auto}.fd-button[class*=-compact],.fd-button[class*=-condensed],[class*=-compact] .fd-button:not([class*=-cozy]),[class*=-condensed] .fd-button:not([class*=-cozy]){--fdButton_Height:1.625rem;--fdButton_Clickable_Height:2rem;--fdButton_Padding_X:.5rem;--fdButton_Min_Width:2rem;--fdButton_Badge_Position:static;--fdButton_Badge_Margin_Left:.25rem}.fd-button--menu{max-width:12rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fd-button--menu-fixed-width{justify-content:space-between}.fd-button--menu .fd-button__text{line-height:1rem}.fd-button--full-width{-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;display:flex;justify-content:center;min-width:100%;width:100%}.fd-button--text-alignment-left{justify-content:flex-start;text-align:left}.fd-button--text-alignment-right{justify-content:flex-end;text-align:right}.fd-button--decisive{min-width:4rem}.fd-button__instructions{clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.fd-button.is-focus,.fd-button:focus{box-shadow:none;outline:none;z-index:5}.fd-button.is-focus:after,.fd-button:focus:after{border:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--sapContent_FocusColor);border-radius:calc(var(--sapButton_BorderCornerRadius) - var(--sapContent_FocusWidth));bottom:var(--fdButton_Outline_Offset);content:\"\";display:block;left:var(--fdButton_Outline_Offset);position:absolute;right:var(--fdButton_Outline_Offset);top:var(--fdButton_Outline_Offset)}.fd-button.is-focus.fd-button--toggled:after,.fd-button.is-focus.is-selected:after,.fd-button:focus.fd-button--toggled:after,.fd-button:focus.is-selected:after{border-color:var(--fdButton_Outline_Contrast)}.fd-button.is-active,.fd-button.is-selected,.fd-button:active,.fd-button[aria-selected=true]{box-shadow:none;outline:none}.fd-button.is-disabled,.fd-button:disabled,.fd-button[aria-disabled=true]{box-shadow:none;cursor:not-allowed;opacity:var(--sapContent_DisabledOpacity)}.fd-button.is-selected,.fd-button[aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Selected_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Selected_Background)}.fd-button.is-hover,.fd-button:hover{--fdButtonColor:var(--sapButton_Hover_TextColor);--fdButtonBorderColor:var(--sapButton_Hover_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Hover_Background);box-shadow:var(--fdButton_Hover_Shadow)}.fd-button.is-active,.fd-button:active{--fdButtonColor:var(--sapButton_Active_TextColor);--fdButtonBorderColor:var(--sapButton_Active_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Active_Background);--fdElementTextColor:var(--sapButton_Active_TextColor);--fdElementIconColor:var(--sapButton_Active_TextColor)}.fd-button.is-active .fd-button__icon,.fd-button:active .fd-button__icon{color:var(--sapButton_Active_TextColor);text-shadow:none}.fd-button.is-disabled,.fd-button:disabled,.fd-button[aria-disabled=true]{--fdButtonColor:var(--sapButton_TextColor);--fdButtonBorderColor:var(--sapButton_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Background)}.fd-button.fd-button--toggled,.fd-button.is-disabled.is-selected,.fd-button.is-disabled[aria-selected=true],.fd-button:disabled.is-selected,.fd-button:disabled[aria-selected=true],.fd-button[aria-disabled=true].is-selected,.fd-button[aria-disabled=true][aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Selected_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Selected_Background)}.fd-button.fd-button--toggled.is-active,.fd-button.fd-button--toggled.is-hover,.fd-button.fd-button--toggled.is-selected,.fd-button.fd-button--toggled:active,.fd-button.fd-button--toggled:hover,.fd-button.fd-button--toggled[aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Selected_Hover_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Selected_Hover_Background);box-shadow:var(--fdButton_Hover_Shadow)}.fd-button.fd-button--toggled.is-active,.fd-button.fd-button--toggled.is-selected,.fd-button.fd-button--toggled:active,.fd-button.fd-button--toggled[aria-selected=true]{--fdElementTextColor:var(--sapButton_Selected_TextColor);--fdElementIconColor:var(--sapButton_Selected_TextColor)}.fd-button.fd-button--toggled.is-active .fd-button__icon,.fd-button.fd-button--toggled.is-selected .fd-button__icon,.fd-button.fd-button--toggled:active .fd-button__icon,.fd-button.fd-button--toggled[aria-selected=true] .fd-button__icon{color:var(--sapButton_Active_TextColor);text-shadow:none}.fd-button.fd-button--toggled.is-disabled,.fd-button.fd-button--toggled:disabled,.fd-button.fd-button--toggled[aria-disabled=true]{box-shadow:none}.fd-button--attention{--fdButtonColor:var(--sapButton_Attention_TextColor);--fdButtonBorderColor:var(--sapButton_Attention_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Attention_Background);background-color:var(--fdButtonBackgroundColor);border-color:var(--fdButtonBorderColor);color:var(--fdButtonColor)}.fd-button--attention.is-selected,.fd-button--attention[aria-selected=true]{--fdButtonColor:var(--sapButton_Attention_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Attention_Selected_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Attention_Selected_Background)}.fd-button--attention.is-hover,.fd-button--attention:hover{--fdButtonColor:var(--sapButton_Attention_Hover_TextColor);--fdButtonBorderColor:var(--sapButton_Attention_Hover_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Attention_Hover_Background);box-shadow:var(--fdButton_Attention_Hover_Shadow)}.fd-button--attention.is-active,.fd-button--attention:active{--fdButtonColor:var(--sapButton_Attention_Active_TextColor);--fdButtonBorderColor:var(--sapButton_Attention_Active_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Attention_Active_Background);--fdElementTextColor:var(--sapButton_Attention_Active_TextColor);--fdElementIconColor:var(--sapButton_Attention_Active_TextColor)}.fd-button--attention.is-active .fd-button__icon,.fd-button--attention:active .fd-button__icon{color:var(--sapButton_Attention_Active_TextColor);text-shadow:none}.fd-button--attention.is-disabled,.fd-button--attention:disabled,.fd-button--attention[aria-disabled=true]{--fdButtonColor:var(--sapButton_Attention_TextColor);--fdButtonBorderColor:var(--sapButton_Attention_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Attention_Background)}.fd-button--attention.fd-button--toggled,.fd-button--attention.is-disabled.is-selected,.fd-button--attention.is-disabled[aria-selected=true],.fd-button--attention:disabled.is-selected,.fd-button--attention:disabled[aria-selected=true],.fd-button--attention[aria-disabled=true].is-selected,.fd-button--attention[aria-disabled=true][aria-selected=true]{--fdButtonColor:var(--sapButton_Attention_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Attention_Selected_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Attention_Selected_Background)}.fd-button--attention.fd-button--toggled.is-active,.fd-button--attention.fd-button--toggled.is-hover,.fd-button--attention.fd-button--toggled.is-selected,.fd-button--attention.fd-button--toggled:active,.fd-button--attention.fd-button--toggled:hover,.fd-button--attention.fd-button--toggled[aria-selected=true]{--fdButtonColor:var(--sapButton_Attention_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Attention_Selected_Hover_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Attention_Selected_Hover_Background);box-shadow:var(--fdButton_Attention_Hover_Shadow)}.fd-button--attention.fd-button--toggled.is-active,.fd-button--attention.fd-button--toggled.is-selected,.fd-button--attention.fd-button--toggled:active,.fd-button--attention.fd-button--toggled[aria-selected=true]{--fdElementTextColor:var(--sapButton_Attention_Selected_TextColor);--fdElementIconColor:var(--sapButton_Attention_Selected_TextColor)}.fd-button--attention.fd-button--toggled.is-active .fd-button__icon,.fd-button--attention.fd-button--toggled.is-selected .fd-button__icon,.fd-button--attention.fd-button--toggled:active .fd-button__icon,.fd-button--attention.fd-button--toggled[aria-selected=true] .fd-button__icon{color:var(--sapButton_Attention_Active_TextColor);text-shadow:none}.fd-button--attention.fd-button--toggled.is-disabled,.fd-button--attention.fd-button--toggled:disabled,.fd-button--attention.fd-button--toggled[aria-disabled=true]{box-shadow:none}.fd-button--emphasized{--fdButtonColor:var(--sapButton_Emphasized_TextColor);--fdButtonBorderColor:var(--sapButton_Emphasized_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Emphasized_Background);background-color:var(--fdButtonBackgroundColor);border-color:var(--fdButtonBorderColor);border-width:var(--fdButton_Emphasized_Border_Width);color:var(--fdButtonColor);font-weight:var(--sapButton_Emphasized_FontWeight)}.fd-button--emphasized.is-selected,.fd-button--emphasized[aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Selected_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Selected_Background)}.fd-button--emphasized.is-hover,.fd-button--emphasized:hover{--fdButtonColor:var(--sapButton_Emphasized_Hover_TextColor);--fdButtonBorderColor:var(--sapButton_Emphasized_Hover_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Emphasized_Hover_Background);box-shadow:none}.fd-button--emphasized.is-active,.fd-button--emphasized:active{--fdButtonColor:var(--sapButton_Emphasized_Active_TextColor);--fdButtonBorderColor:var(--sapButton_Emphasized_Active_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Emphasized_Active_Background);--fdElementTextColor:var(--sapButton_Emphasized_Active_TextColor);--fdElementIconColor:var(--sapButton_Emphasized_Active_TextColor)}.fd-button--emphasized.is-active .fd-button__icon,.fd-button--emphasized:active .fd-button__icon{color:var(--sapButton_Emphasized_Active_TextColor);text-shadow:none}.fd-button--emphasized.is-disabled,.fd-button--emphasized:disabled,.fd-button--emphasized[aria-disabled=true]{--fdButtonColor:var(--sapButton_Emphasized_TextColor);--fdButtonBorderColor:var(--sapButton_Emphasized_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Emphasized_Background)}.fd-button--emphasized.fd-button--toggled,.fd-button--emphasized.is-disabled.is-selected,.fd-button--emphasized.is-disabled[aria-selected=true],.fd-button--emphasized:disabled.is-selected,.fd-button--emphasized:disabled[aria-selected=true],.fd-button--emphasized[aria-disabled=true].is-selected,.fd-button--emphasized[aria-disabled=true][aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Selected_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Selected_Background)}.fd-button--emphasized.fd-button--toggled.is-active,.fd-button--emphasized.fd-button--toggled.is-hover,.fd-button--emphasized.fd-button--toggled.is-selected,.fd-button--emphasized.fd-button--toggled:active,.fd-button--emphasized.fd-button--toggled:hover,.fd-button--emphasized.fd-button--toggled[aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Selected_Hover_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Selected_Hover_Background);box-shadow:var(--fdButton_Hover_Shadow)}.fd-button--emphasized.fd-button--toggled.is-active,.fd-button--emphasized.fd-button--toggled.is-selected,.fd-button--emphasized.fd-button--toggled:active,.fd-button--emphasized.fd-button--toggled[aria-selected=true]{--fdElementTextColor:var(--sapButton_Selected_TextColor);--fdElementIconColor:var(--sapButton_Selected_TextColor)}.fd-button--emphasized.fd-button--toggled.is-active .fd-button__icon,.fd-button--emphasized.fd-button--toggled.is-selected .fd-button__icon,.fd-button--emphasized.fd-button--toggled:active .fd-button__icon,.fd-button--emphasized.fd-button--toggled[aria-selected=true] .fd-button__icon{color:var(--sapButton_Emphasized_Active_TextColor);text-shadow:none}.fd-button--emphasized.fd-button--toggled.is-disabled,.fd-button--emphasized.fd-button--toggled:disabled,.fd-button--emphasized.fd-button--toggled[aria-disabled=true]{box-shadow:none}.fd-button--emphasized.is-focus,.fd-button--emphasized:focus{z-index:5}.fd-button--emphasized.is-focus:after,.fd-button--emphasized:focus:after{border-color:var(--sapContent_ContrastFocusColor)}.fd-button--emphasized.is-active,.fd-button--emphasized.is-selected,.fd-button--emphasized:active,.fd-button--emphasized[aria-selected=true]{outline:none}.fd-button--emphasized.fd-button--toggled.is-focus,.fd-button--emphasized.fd-button--toggled:focus{outline-color:var(--fdButton_Emphasized_Active_Outline);z-index:5}.fd-button--emphasized.fd-button--toggled.is-active,.fd-button--emphasized.fd-button--toggled.is-selected,.fd-button--emphasized.fd-button--toggled:active,.fd-button--emphasized.fd-button--toggled[aria-selected=true]{outline:none}.fd-button--ghost{--fdButtonColor:var(--sapButton_TextColor);--fdButtonBorderColor:var(--sapButton_BorderColor);--fdButtonBackgroundColor:var(--fdButton_Ghost_Background);background-color:var(--fdButtonBackgroundColor);border-color:var(--fdButtonBorderColor);color:var(--fdButtonColor)}.fd-button--ghost.is-selected,.fd-button--ghost[aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Selected_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Selected_Background)}.fd-button--ghost.is-hover,.fd-button--ghost:hover{--fdButtonColor:var(--sapButton_Hover_TextColor);--fdButtonBorderColor:var(--sapButton_Hover_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Hover_Background);box-shadow:var(--fdButton_Hover_Shadow)}.fd-button--ghost.is-active,.fd-button--ghost:active{--fdButtonColor:var(--sapButton_Active_TextColor);--fdButtonBorderColor:var(--sapButton_Active_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Active_Background);--fdElementTextColor:var(--sapButton_Active_TextColor);--fdElementIconColor:var(--sapButton_Active_TextColor)}.fd-button--ghost.is-active .fd-button__icon,.fd-button--ghost:active .fd-button__icon{color:var(--sapButton_Active_TextColor);text-shadow:none}.fd-button--ghost.is-disabled,.fd-button--ghost:disabled,.fd-button--ghost[aria-disabled=true]{--fdButtonColor:var(--sapButton_TextColor);--fdButtonBorderColor:var(--sapButton_BorderColor);--fdButtonBackgroundColor:var(--fdButton_Ghost_Background)}.fd-button--ghost.fd-button--toggled,.fd-button--ghost.is-disabled.is-selected,.fd-button--ghost.is-disabled[aria-selected=true],.fd-button--ghost:disabled.is-selected,.fd-button--ghost:disabled[aria-selected=true],.fd-button--ghost[aria-disabled=true].is-selected,.fd-button--ghost[aria-disabled=true][aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Selected_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Selected_Background)}.fd-button--ghost.fd-button--toggled.is-active,.fd-button--ghost.fd-button--toggled.is-hover,.fd-button--ghost.fd-button--toggled.is-selected,.fd-button--ghost.fd-button--toggled:active,.fd-button--ghost.fd-button--toggled:hover,.fd-button--ghost.fd-button--toggled[aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Selected_Hover_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Selected_Hover_Background);box-shadow:var(--fdButton_Hover_Shadow)}.fd-button--ghost.fd-button--toggled.is-active,.fd-button--ghost.fd-button--toggled.is-selected,.fd-button--ghost.fd-button--toggled:active,.fd-button--ghost.fd-button--toggled[aria-selected=true]{--fdElementTextColor:var(--sapButton_Selected_TextColor);--fdElementIconColor:var(--sapButton_Selected_TextColor)}.fd-button--ghost.fd-button--toggled.is-active .fd-button__icon,.fd-button--ghost.fd-button--toggled.is-selected .fd-button__icon,.fd-button--ghost.fd-button--toggled:active .fd-button__icon,.fd-button--ghost.fd-button--toggled[aria-selected=true] .fd-button__icon{color:var(--sapButton_Active_TextColor);text-shadow:none}.fd-button--ghost.fd-button--toggled.is-disabled,.fd-button--ghost.fd-button--toggled:disabled,.fd-button--ghost.fd-button--toggled[aria-disabled=true]{box-shadow:none}.fd-button--negative{--fdButtonColor:var(--sapButton_Reject_TextColor);--fdButtonBorderColor:var(--sapButton_Reject_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Reject_Background);background-color:var(--fdButtonBackgroundColor);border-color:var(--fdButtonBorderColor);color:var(--fdButtonColor)}.fd-button--negative.is-selected,.fd-button--negative[aria-selected=true]{--fdButtonColor:var(--sapButton_Reject_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Reject_Selected_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Reject_Selected_Background)}.fd-button--negative.is-hover,.fd-button--negative:hover{--fdButtonColor:var(--sapButton_Reject_Hover_TextColor);--fdButtonBorderColor:var(--sapButton_Reject_Hover_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Reject_Hover_Background);box-shadow:var(--fdButton_Negative_Hover_Shadow)}.fd-button--negative.is-active,.fd-button--negative:active{--fdButtonColor:var(--sapButton_Reject_Active_TextColor);--fdButtonBorderColor:var(--sapButton_Reject_Active_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Reject_Active_Background);--fdElementTextColor:var(--sapButton_Reject_Active_TextColor);--fdElementIconColor:var(--sapButton_Reject_Active_TextColor)}.fd-button--negative.is-active .fd-button__icon,.fd-button--negative:active .fd-button__icon{color:var(--sapButton_Reject_Active_TextColor);text-shadow:none}.fd-button--negative.is-disabled,.fd-button--negative:disabled,.fd-button--negative[aria-disabled=true]{--fdButtonColor:var(--sapButton_Reject_TextColor);--fdButtonBorderColor:var(--sapButton_Reject_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Reject_Background)}.fd-button--negative.fd-button--toggled,.fd-button--negative.is-disabled.is-selected,.fd-button--negative.is-disabled[aria-selected=true],.fd-button--negative:disabled.is-selected,.fd-button--negative:disabled[aria-selected=true],.fd-button--negative[aria-disabled=true].is-selected,.fd-button--negative[aria-disabled=true][aria-selected=true]{--fdButtonColor:var(--sapButton_Reject_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Reject_Selected_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Reject_Selected_Background)}.fd-button--negative.fd-button--toggled.is-active,.fd-button--negative.fd-button--toggled.is-hover,.fd-button--negative.fd-button--toggled.is-selected,.fd-button--negative.fd-button--toggled:active,.fd-button--negative.fd-button--toggled:hover,.fd-button--negative.fd-button--toggled[aria-selected=true]{--fdButtonColor:var(--sapButton_Reject_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Reject_Selected_Hover_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Reject_Selected_Hover_Background);box-shadow:var(--fdButton_Negative_Hover_Shadow)}.fd-button--negative.fd-button--toggled.is-active,.fd-button--negative.fd-button--toggled.is-selected,.fd-button--negative.fd-button--toggled:active,.fd-button--negative.fd-button--toggled[aria-selected=true]{--fdElementTextColor:var(--sapButton_Reject_Selected_TextColor);--fdElementIconColor:var(--sapButton_Reject_Selected_TextColor)}.fd-button--negative.fd-button--toggled.is-active .fd-button__icon,.fd-button--negative.fd-button--toggled.is-selected .fd-button__icon,.fd-button--negative.fd-button--toggled:active .fd-button__icon,.fd-button--negative.fd-button--toggled[aria-selected=true] .fd-button__icon{color:var(--sapButton_Reject_Active_TextColor);text-shadow:none}.fd-button--negative.fd-button--toggled.is-disabled,.fd-button--negative.fd-button--toggled:disabled,.fd-button--negative.fd-button--toggled[aria-disabled=true]{box-shadow:none}.fd-button--positive{--fdButtonColor:var(--sapButton_Accept_TextColor);--fdButtonBorderColor:var(--sapButton_Accept_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Accept_Background);background-color:var(--fdButtonBackgroundColor);border-color:var(--fdButtonBorderColor);color:var(--fdButtonColor)}.fd-button--positive.is-selected,.fd-button--positive[aria-selected=true]{--fdButtonColor:var(--sapButton_Accept_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Accept_Selected_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Accept_Selected_Background)}.fd-button--positive.is-hover,.fd-button--positive:hover{--fdButtonColor:var(--sapButton_Accept_Hover_TextColor);--fdButtonBorderColor:var(--sapButton_Accept_Hover_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Accept_Hover_Background);box-shadow:var(--fdButton_Positive_Hover_Shadow)}.fd-button--positive.is-active,.fd-button--positive:active{--fdButtonColor:var(--sapButton_Accept_Active_TextColor);--fdButtonBorderColor:var(--sapButton_Accept_Active_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Accept_Active_Background);--fdElementTextColor:var(--sapButton_Accept_Active_TextColor);--fdElementIconColor:var(--sapButton_Accept_Active_TextColor)}.fd-button--positive.is-active .fd-button__icon,.fd-button--positive:active .fd-button__icon{color:var(--sapButton_Accept_Active_TextColor);text-shadow:none}.fd-button--positive.is-disabled,.fd-button--positive:disabled,.fd-button--positive[aria-disabled=true]{--fdButtonColor:var(--sapButton_Accept_TextColor);--fdButtonBorderColor:var(--sapButton_Accept_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Accept_Background)}.fd-button--positive.fd-button--toggled,.fd-button--positive.is-disabled.is-selected,.fd-button--positive.is-disabled[aria-selected=true],.fd-button--positive:disabled.is-selected,.fd-button--positive:disabled[aria-selected=true],.fd-button--positive[aria-disabled=true].is-selected,.fd-button--positive[aria-disabled=true][aria-selected=true]{--fdButtonColor:var(--sapButton_Accept_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Accept_Selected_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Accept_Selected_Background)}.fd-button--positive.fd-button--toggled.is-active,.fd-button--positive.fd-button--toggled.is-hover,.fd-button--positive.fd-button--toggled.is-selected,.fd-button--positive.fd-button--toggled:active,.fd-button--positive.fd-button--toggled:hover,.fd-button--positive.fd-button--toggled[aria-selected=true]{--fdButtonColor:var(--sapButton_Accept_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Accept_Selected_Hover_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Accept_Selected_Hover_Background);box-shadow:var(--fdButton_Positive_Hover_Shadow)}.fd-button--positive.fd-button--toggled.is-active,.fd-button--positive.fd-button--toggled.is-selected,.fd-button--positive.fd-button--toggled:active,.fd-button--positive.fd-button--toggled[aria-selected=true]{--fdElementTextColor:var(--sapButton_Accept_Selected_TextColor);--fdElementIconColor:var(--sapButton_Accept_Selected_TextColor)}.fd-button--positive.fd-button--toggled.is-active .fd-button__icon,.fd-button--positive.fd-button--toggled.is-selected .fd-button__icon,.fd-button--positive.fd-button--toggled:active .fd-button__icon,.fd-button--positive.fd-button--toggled[aria-selected=true] .fd-button__icon{color:var(--sapButton_Accept_Active_TextColor);text-shadow:none}.fd-button--positive.fd-button--toggled.is-disabled,.fd-button--positive.fd-button--toggled:disabled,.fd-button--positive.fd-button--toggled[aria-disabled=true]{box-shadow:none}.fd-button--transparent{--fdButtonColor:var(--sapButton_Lite_TextColor);--fdButtonBorderColor:var(--sapButton_Lite_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Lite_Background);background-color:var(--fdButtonBackgroundColor);border-color:var(--fdButtonBorderColor);color:var(--fdButtonColor)}.fd-button--transparent.is-selected,.fd-button--transparent[aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Selected_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Selected_Background)}.fd-button--transparent.is-hover,.fd-button--transparent:hover{--fdButtonColor:var(--sapButton_Lite_Hover_TextColor);--fdButtonBorderColor:var(--sapButton_Lite_Hover_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Lite_Hover_Background);box-shadow:var(--fdButton_Hover_Shadow)}.fd-button--transparent.is-active,.fd-button--transparent:active{--fdButtonColor:var(--sapButton_Active_TextColor);--fdButtonBorderColor:var(--sapButton_Lite_Active_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Lite_Active_Background);--fdElementTextColor:var(--sapButton_Active_TextColor);--fdElementIconColor:var(--sapButton_Active_TextColor)}.fd-button--transparent.is-active .fd-button__icon,.fd-button--transparent:active .fd-button__icon{color:var(--sapButton_Active_TextColor);text-shadow:none}.fd-button--transparent.is-disabled,.fd-button--transparent:disabled,.fd-button--transparent[aria-disabled=true]{--fdButtonColor:var(--sapButton_Lite_TextColor);--fdButtonBorderColor:var(--sapButton_Lite_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Lite_Background)}.fd-button--transparent.fd-button--toggled,.fd-button--transparent.is-disabled.is-selected,.fd-button--transparent.is-disabled[aria-selected=true],.fd-button--transparent:disabled.is-selected,.fd-button--transparent:disabled[aria-selected=true],.fd-button--transparent[aria-disabled=true].is-selected,.fd-button--transparent[aria-disabled=true][aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Selected_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Selected_Background)}.fd-button--transparent.fd-button--toggled.is-active,.fd-button--transparent.fd-button--toggled.is-hover,.fd-button--transparent.fd-button--toggled.is-selected,.fd-button--transparent.fd-button--toggled:active,.fd-button--transparent.fd-button--toggled:hover,.fd-button--transparent.fd-button--toggled[aria-selected=true]{--fdButtonColor:var(--sapButton_Selected_TextColor);--fdButtonBorderColor:var(--sapButton_Selected_Hover_BorderColor);--fdButtonBackgroundColor:var(--sapButton_Selected_Hover_Background);box-shadow:var(--fdButton_Hover_Shadow)}.fd-button--transparent.fd-button--toggled.is-active,.fd-button--transparent.fd-button--toggled.is-selected,.fd-button--transparent.fd-button--toggled:active,.fd-button--transparent.fd-button--toggled[aria-selected=true]{--fdElementTextColor:var(--sapButton_Selected_TextColor);--fdElementIconColor:var(--sapButton_Selected_TextColor)}.fd-button--transparent.fd-button--toggled.is-active .fd-button__icon,.fd-button--transparent.fd-button--toggled.is-selected .fd-button__icon,.fd-button--transparent.fd-button--toggled:active .fd-button__icon,.fd-button--transparent.fd-button--toggled[aria-selected=true] .fd-button__icon{color:var(--sapButton_Active_TextColor);text-shadow:none}.fd-button--transparent.fd-button--toggled.is-disabled,.fd-button--transparent.fd-button--toggled:disabled,.fd-button--transparent.fd-button--toggled[aria-disabled=true]{box-shadow:none}.fd-input{-webkit-box-sizing:border-box;-webkit-box-shadow:none;-webkit-appearance:none;appearance:none;background:var(--sapField_BackgroundStyle, var(--sapField_BackgroundStyle));background-color:var(--sapField_Background, var(--sapField_Background));border:0;border:var(--sapField_BorderWidth) var(--sapField_BorderStyle) var(--sapField_BorderColor);border-radius:var(--sapField_BorderCornerRadius);box-shadow:none;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapField_TextColor);cursor:text;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:2.25rem;line-height:var(--sapContent_LineHeight);margin:0;margin:var(--fdInput_Field_Margin, .25rem 0);min-height:2.25rem;min-width:var(2.75rem, 2.75rem);outline:none;overflow:hidden;padding:0;padding:var(--fdInput_Field_Padding, 0 .625rem);text-overflow:ellipsis;text-shadow:var(--fdInput_Text_Shadow);white-space:nowrap;width:100%;z-index:1}.fd-input:after,.fd-input:before{box-sizing:inherit;font-size:inherit}.fd-input::placeholder{color:var(--sapField_PlaceholderTextColor);font-style:var(--fdPlaceholder_Font_Style)}.fd-input[dir=rtl]::placeholder,[dir=rtl] .fd-input::placeholder{text-indent:.125rem}.fd-input::selection{background-color:var(--sapSelectedColor);color:var(--sapContent_ContrastTextColor)}.fd-input::-ms-clear{display:none}.fd-input.is-hover,.fd-input:hover{-webkit-box-shadow:var(--fdInput_Box_Shadow_Hover);background:var(--sapField_Hover_BackgroundStyle, var(--sapField_Hover_BackgroundStyle));background-color:var(--sapField_Hover_Background, var(--sapField_Hover_Background));border-color:var(--sapField_Hover_BorderColor);box-shadow:var(--fdInput_Box_Shadow_Hover)}.fd-input.is-focus,.fd-input:focus{-webkit-box-shadow:none;background:var(--sapField_Focus_Background, var(--sapField_Focus_Background));box-shadow:none;outline-color:var(--fdInput_Outline_Color);outline-offset:var(--fdInput_Outline_Offset);outline-style:var(--sapContent_FocusStyle);outline-width:var(--sapContent_FocusWidth);z-index:5}.fd-input[type=search]::-webkit-search-cancel-button,.fd-input[type=search]::-webkit-search-decoration,.fd-input[type=search]::-webkit-search-results-button,.fd-input[type=search]::-webkit-search-results-decoration{-webkit-appearance:none}.fd-input[aria-expanded=false]{z-index:0}.fd-input.is-expanded,.fd-input[aria-expanded=true]{z-index:4}.fd-input[class*=-compact],.fd-input[class*=-condensed],[class*=-compact] .fd-input:not([class*=-cozy]),[class*=-condensed] .fd-input:not([class*=-cozy]){box-sizing:border-box;height:1.625rem;margin:var(--fdInput_Field_Compact_Margin, .1875rem 0);min-height:1.625rem;min-width:var(--fdInput_Field_Compact_Min_Width, 2rem);padding:var(--fdInput_Field_Compact_Padding, 0 .5rem)}.fd-input--no-number-spinner{-moz-appearance:textfield}.fd-input--no-number-spinner::-webkit-inner-spin-button,.fd-input--no-number-spinner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.fd-input.right-align{text-align:right}.fd-input.is-success{background:var(--sapField_SuccessBackgroundStyle);background-color:var(--sapField_SuccessBackground);border:var(--sapField_SuccessColor) var(--sapField_SuccessBorderWidth) var(--sapField_SuccessBorderStyle)}.fd-input.is-success.is-hover,.fd-input.is-success:hover{-webkit-box-shadow:var(--fdInput_Success_Box_Shadow_Hover);background-color:var(--fdInput_Success_Background_Color_Hover);border-color:var(--sapField_SuccessColor);box-shadow:var(--fdInput_Success_Box_Shadow_Hover)}.fd-input.is-success.is-focus,.fd-input.is-success:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Success_Outline_Color);z-index:5}.fd-input.is-success.is-focus.is-hover,.fd-input.is-success.is-focus:hover,.fd-input.is-success:focus.is-hover,.fd-input.is-success:focus:hover{box-shadow:none}.fd-input.is-error{background:var(--sapField_InvalidBackgroundStyle);background-color:var(--sapField_InvalidBackground);border:var(--sapField_InvalidColor) var(--sapField_InvalidBorderWidth) var(--sapField_InvalidBorderStyle)}.fd-input.is-error.is-hover,.fd-input.is-error:hover{-webkit-box-shadow:var(--fdInput_Error_Box_Shadow_Hover);background-color:var(--fdInput_Error_Background_Color_Hover);border-color:var(--sapField_InvalidColor);box-shadow:var(--fdInput_Error_Box_Shadow_Hover)}.fd-input.is-error.is-focus,.fd-input.is-error:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Error_Outline_Color);z-index:5}.fd-input.is-error.is-focus.is-hover,.fd-input.is-error.is-focus:hover,.fd-input.is-error:focus.is-hover,.fd-input.is-error:focus:hover{box-shadow:none}.fd-input.is-warning{background:var(--sapField_WarningBackgroundStyle);background-color:var(--sapField_WarningBackground);border:var(--sapField_WarningColor) var(--sapField_WarningBorderWidth) var(--sapField_WarningBorderStyle)}.fd-input.is-warning.is-hover,.fd-input.is-warning:hover{-webkit-box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);background-color:var(--fdInput_Warning_Background_Color_Hover);border-color:var(--sapField_WarningColor);box-shadow:var(--fdInput_Warning_Box_Shadow_Hover)}.fd-input.is-warning.is-focus,.fd-input.is-warning:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Warning_Outline_Color);z-index:5}.fd-input.is-warning.is-focus.is-hover,.fd-input.is-warning.is-focus:hover,.fd-input.is-warning:focus.is-hover,.fd-input.is-warning:focus:hover{box-shadow:none}.fd-input.is-alert{background:var(--sapField_WarningBackgroundStyle);background-color:var(--sapField_WarningBackground);border:var(--sapField_WarningColor) var(--sapField_WarningBorderWidth) var(--sapField_WarningBorderStyle)}.fd-input.is-alert.is-hover,.fd-input.is-alert:hover{-webkit-box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);background-color:var(--fdInput_Warning_Background_Color_Hover);border-color:var(--sapField_WarningColor);box-shadow:var(--fdInput_Warning_Box_Shadow_Hover)}.fd-input.is-alert.is-focus,.fd-input.is-alert:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Warning_Outline_Color);z-index:5}.fd-input.is-alert.is-focus.is-hover,.fd-input.is-alert.is-focus:hover,.fd-input.is-alert:focus.is-hover,.fd-input.is-alert:focus:hover{box-shadow:none}.fd-input.is-information{background:var(--sapField_InformationBackgroundStyle);background-color:var(--sapField_InformationBackground);border:var(--sapField_InformationColor) var(--sapField_InformationBorderWidth) var(--sapField_InformationBorderStyle)}.fd-input.is-information.is-hover,.fd-input.is-information:hover{-webkit-box-shadow:var(--fdInput_Information_Box_Shadow_Hover);background-color:var(--fdInput_Information_Background_Color_Hover);border-color:var(--sapField_InformationColor);box-shadow:var(--fdInput_Information_Box_Shadow_Hover)}.fd-input.is-information.is-focus,.fd-input.is-information:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Information_Outline_Color);z-index:5}.fd-input.is-information.is-focus.is-hover,.fd-input.is-information.is-focus:hover,.fd-input.is-information:focus.is-hover,.fd-input.is-information:focus:hover{box-shadow:none}.fd-input.is-alert,.fd-input.is-error,.fd-input.is-warning{font-style:var(--fdInput_State_Text_Style);font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert::placeholder,.fd-input.is-error::placeholder,.fd-input.is-warning::placeholder{font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert.is-focus,.fd-input.is-alert:focus,.fd-input.is-error.is-focus,.fd-input.is-error:focus,.fd-input.is-information.is-focus,.fd-input.is-information:focus,.fd-input.is-warning.is-focus,.fd-input.is-warning:focus{outline-offset:var(--fdInput_Outline_Offset_States);z-index:5}.fd-input.is-error::placeholder{color:var(--sapField_TextColor)}.fd-input.is-disabled,.fd-input:disabled,.fd-input[aria-disabled=true]{opacity:var(--sapContent_DisabledOpacity);pointer-events:none}.fd-input.is-disabled::placeholder,.fd-input:disabled::placeholder,.fd-input[aria-disabled=true]::placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color)}.fd-input.is-readonly,.fd-input[aria-readonly=true],.fd-input[readonly]{background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);border-radius:var(--fdInput_ReadOnly_Border_Radius)}.fd-input.is-readonly::placeholder,.fd-input[aria-readonly=true]::placeholder,.fd-input[readonly]::placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color)}.fd-input.is-readonly.is-hover,.fd-input.is-readonly:hover,.fd-input[aria-readonly=true].is-hover,.fd-input[aria-readonly=true]:hover,.fd-input[readonly].is-hover,.fd-input[readonly]:hover{-webkit-box-shadow:none;background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);border-radius:var(--fdInput_ReadOnly_Border_Radius);box-shadow:none}.fd-input.is-readonly.is-focus,.fd-input.is-readonly:focus,.fd-input[aria-readonly=true].is-focus,.fd-input[aria-readonly=true]:focus,.fd-input[readonly].is-focus,.fd-input[readonly]:focus{background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);border-radius:var(--fdInput_ReadOnly_Border_Radius);z-index:5}/*!\n * Fundamental Library Styles v0.28.3\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *//*!\n.fd-input-group+(--inline, --control)\n .fd-input-group__addon+(--button)\n*/.fd-input-group{-webkit-box-sizing:border-box;-webkit-box-shadow:none;-webkit-appearance:none;appearance:none;background:var(--fdInputGroup_Background, var(--sapField_BackgroundStyle));background-color:var(--fdInputGroup_Background_Color, var(--sapField_Background));border:0;border:var(--sapField_BorderWidth) var(--sapField_BorderStyle) var(--sapField_BorderColor);border-radius:var(--sapField_BorderCornerRadius);box-shadow:none;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapField_TextColor);cursor:text;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:auto;line-height:var(--sapContent_LineHeight);margin:0;margin:var(--fdInput_Field_Margin, .25rem 0);min-width:var(2.75rem, 2.75rem);outline:none;overflow:hidden;padding:0;text-overflow:ellipsis;text-shadow:var(--fdInput_Text_Shadow);white-space:nowrap;width:100%;z-index:1}.fd-input-group:after,.fd-input-group:before{box-sizing:inherit;font-size:inherit}.fd-input-group::placeholder{color:var(--sapField_PlaceholderTextColor);font-style:var(--fdPlaceholder_Font_Style)}.fd-input-group[dir=rtl]::placeholder,[dir=rtl] .fd-input-group::placeholder{text-indent:.125rem}.fd-input-group::selection{background-color:var(--sapSelectedColor);color:var(--sapContent_ContrastTextColor)}.fd-input-group::-ms-clear{display:none}.fd-input-group.is-hover,.fd-input-group:hover{-webkit-box-shadow:var(--fdInput_Box_Shadow_Hover);background:var(--fdInputGroup_Hover_Background, var(--sapField_Hover_BackgroundStyle));background-color:var(--fdInputGroup_Hover_Background_Color, var(--sapField_Hover_Background));border-color:var(--sapField_Hover_BorderColor);box-shadow:var(--fdInput_Box_Shadow_Hover)}.fd-input-group.is-focus,.fd-input-group:focus{-webkit-box-shadow:none;background:var(--sapField_Focus_Background, var(--sapField_Focus_Background));box-shadow:none;outline-color:var(--fdInput_Outline_Color);outline-offset:var(--fdInput_Outline_Offset);outline-style:var(--sapContent_FocusStyle);outline-width:var(--sapContent_FocusWidth);z-index:5}.fd-input-group.is-success{background:var(--sapField_SuccessBackgroundStyle);background-color:var(--sapField_SuccessBackground);border:var(--sapField_SuccessColor) var(--sapField_SuccessBorderWidth) var(--sapField_SuccessBorderStyle)}.fd-input-group.is-success.is-hover,.fd-input-group.is-success:hover{-webkit-box-shadow:var(--fdInput_Success_Box_Shadow_Hover);background-color:var(--fdInput_Success_Background_Color_Hover);border-color:var(--sapField_SuccessColor);box-shadow:var(--fdInput_Success_Box_Shadow_Hover)}.fd-input-group.is-success.is-focus,.fd-input-group.is-success:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Success_Outline_Color);z-index:5}.fd-input-group.is-success.is-focus.is-hover,.fd-input-group.is-success.is-focus:hover,.fd-input-group.is-success:focus.is-hover,.fd-input-group.is-success:focus:hover{box-shadow:none}.fd-input-group.is-error{background:var(--sapField_InvalidBackgroundStyle);background-color:var(--sapField_InvalidBackground);border:var(--sapField_InvalidColor) var(--sapField_InvalidBorderWidth) var(--sapField_InvalidBorderStyle)}.fd-input-group.is-error.is-hover,.fd-input-group.is-error:hover{-webkit-box-shadow:var(--fdInput_Error_Box_Shadow_Hover);background-color:var(--fdInput_Error_Background_Color_Hover);border-color:var(--sapField_InvalidColor);box-shadow:var(--fdInput_Error_Box_Shadow_Hover)}.fd-input-group.is-error.is-focus,.fd-input-group.is-error:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Error_Outline_Color);z-index:5}.fd-input-group.is-error.is-focus.is-hover,.fd-input-group.is-error.is-focus:hover,.fd-input-group.is-error:focus.is-hover,.fd-input-group.is-error:focus:hover{box-shadow:none}.fd-input-group.is-warning{background:var(--sapField_WarningBackgroundStyle);background-color:var(--sapField_WarningBackground);border:var(--sapField_WarningColor) var(--sapField_WarningBorderWidth) var(--sapField_WarningBorderStyle)}.fd-input-group.is-warning.is-hover,.fd-input-group.is-warning:hover{-webkit-box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);background-color:var(--fdInput_Warning_Background_Color_Hover);border-color:var(--sapField_WarningColor);box-shadow:var(--fdInput_Warning_Box_Shadow_Hover)}.fd-input-group.is-warning.is-focus,.fd-input-group.is-warning:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Warning_Outline_Color);z-index:5}.fd-input-group.is-warning.is-focus.is-hover,.fd-input-group.is-warning.is-focus:hover,.fd-input-group.is-warning:focus.is-hover,.fd-input-group.is-warning:focus:hover{box-shadow:none}.fd-input-group.is-alert{background:var(--sapField_WarningBackgroundStyle);background-color:var(--sapField_WarningBackground);border:var(--sapField_WarningColor) var(--sapField_WarningBorderWidth) var(--sapField_WarningBorderStyle)}.fd-input-group.is-alert.is-hover,.fd-input-group.is-alert:hover{-webkit-box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);background-color:var(--fdInput_Warning_Background_Color_Hover);border-color:var(--sapField_WarningColor);box-shadow:var(--fdInput_Warning_Box_Shadow_Hover)}.fd-input-group.is-alert.is-focus,.fd-input-group.is-alert:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Warning_Outline_Color);z-index:5}.fd-input-group.is-alert.is-focus.is-hover,.fd-input-group.is-alert.is-focus:hover,.fd-input-group.is-alert:focus.is-hover,.fd-input-group.is-alert:focus:hover{box-shadow:none}.fd-input-group.is-information{background:var(--sapField_InformationBackgroundStyle);background-color:var(--sapField_InformationBackground);border:var(--sapField_InformationColor) var(--sapField_InformationBorderWidth) var(--sapField_InformationBorderStyle)}.fd-input-group.is-information.is-hover,.fd-input-group.is-information:hover{-webkit-box-shadow:var(--fdInput_Information_Box_Shadow_Hover);background-color:var(--fdInput_Information_Background_Color_Hover);border-color:var(--sapField_InformationColor);box-shadow:var(--fdInput_Information_Box_Shadow_Hover)}.fd-input-group.is-information.is-focus,.fd-input-group.is-information:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Information_Outline_Color);z-index:5}.fd-input-group.is-information.is-focus.is-hover,.fd-input-group.is-information.is-focus:hover,.fd-input-group.is-information:focus.is-hover,.fd-input-group.is-information:focus:hover{box-shadow:none}.fd-input-group.is-alert,.fd-input-group.is-error,.fd-input-group.is-warning{font-style:var(--fdInput_State_Text_Style);font-weight:var(--fdInput_State_Font_Weight)}.fd-input-group.is-alert::placeholder,.fd-input-group.is-error::placeholder,.fd-input-group.is-warning::placeholder{font-weight:var(--fdInput_State_Font_Weight)}.fd-input-group.is-alert.is-focus,.fd-input-group.is-alert:focus,.fd-input-group.is-error.is-focus,.fd-input-group.is-error:focus,.fd-input-group.is-information.is-focus,.fd-input-group.is-information:focus,.fd-input-group.is-warning.is-focus,.fd-input-group.is-warning:focus{outline-offset:var(--fdInput_Outline_Offset_States);z-index:5}.fd-input-group.is-error::placeholder{color:var(--sapField_TextColor)}.fd-input-group.is-disabled,.fd-input-group:disabled,.fd-input-group[aria-disabled=true]{opacity:var(--sapContent_DisabledOpacity);pointer-events:none}.fd-input-group.is-disabled::placeholder,.fd-input-group:disabled::placeholder,.fd-input-group[aria-disabled=true]::placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color)}.fd-input-group.is-readonly,.fd-input-group[aria-readonly=true],.fd-input-group[readonly]{background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);border-radius:var(--fdInput_ReadOnly_Border_Radius)}.fd-input-group.is-readonly::placeholder,.fd-input-group[aria-readonly=true]::placeholder,.fd-input-group[readonly]::placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color)}.fd-input-group.is-readonly.is-hover,.fd-input-group.is-readonly:hover,.fd-input-group[aria-readonly=true].is-hover,.fd-input-group[aria-readonly=true]:hover,.fd-input-group[readonly].is-hover,.fd-input-group[readonly]:hover{-webkit-box-shadow:none;background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);border-radius:var(--fdInput_ReadOnly_Border_Radius);box-shadow:none}.fd-input-group.is-readonly.is-focus,.fd-input-group.is-readonly:focus,.fd-input-group[aria-readonly=true].is-focus,.fd-input-group[aria-readonly=true]:focus,.fd-input-group[readonly].is-focus,.fd-input-group[readonly]:focus{background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);border-radius:var(--fdInput_ReadOnly_Border_Radius);z-index:5}.fd-input-group .fd-input-group__button:first-child{border-right:var(--fdInputGroup_ControlButton_SideBorder)}.fd-input-group .fd-input-group__button:first-child[dir=rtl],[dir=rtl] .fd-input-group .fd-input-group__button:first-child{border-left:var(--fdInputGroup_ControlButton_SideBorder);border-right-style:none}.fd-input-group .fd-input-group__button:first-child.is-hover,.fd-input-group .fd-input-group__button:first-child:hover{border-right:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-input-group .fd-input-group__button:first-child.is-hover[dir=rtl],.fd-input-group .fd-input-group__button:first-child:hover[dir=rtl],[dir=rtl] .fd-input-group .fd-input-group__button:first-child.is-hover,[dir=rtl] .fd-input-group .fd-input-group__button:first-child:hover{border-left:var(--fdInputGroup_ControlButton_SideBorder_Active);border-right-style:none}.fd-input-group .fd-input-group__button:first-child.is-active,.fd-input-group .fd-input-group__button:first-child:active{border-right:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-input-group .fd-input-group__button:first-child.is-active[dir=rtl],.fd-input-group .fd-input-group__button:first-child:active[dir=rtl],[dir=rtl] .fd-input-group .fd-input-group__button:first-child.is-active,[dir=rtl] .fd-input-group .fd-input-group__button:first-child:active{border-left:var(--fdInputGroup_ControlButton_SideBorder_Active);border-right-style:none}.fd-input-group .fd-input-group__button:not(:first-child){border-left:var(--fdInputGroup_ControlButton_SideBorder)}.fd-input-group .fd-input-group__button:not(:first-child)[dir=rtl],[dir=rtl] .fd-input-group .fd-input-group__button:not(:first-child){border-left-style:none;border-right:var(--fdInputGroup_ControlButton_SideBorder)}.fd-input-group .fd-input-group__button:not(:first-child).is-hover,.fd-input-group .fd-input-group__button:not(:first-child):hover{border-left:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-input-group .fd-input-group__button:not(:first-child).is-hover[dir=rtl],.fd-input-group .fd-input-group__button:not(:first-child):hover[dir=rtl],[dir=rtl] .fd-input-group .fd-input-group__button:not(:first-child).is-hover,[dir=rtl] .fd-input-group .fd-input-group__button:not(:first-child):hover{border-left-style:none;border-right:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-input-group .fd-input-group__button:not(:first-child).is-active,.fd-input-group .fd-input-group__button:not(:first-child):active{border-left:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-input-group .fd-input-group__button:not(:first-child).is-active[dir=rtl],.fd-input-group .fd-input-group__button:not(:first-child):active[dir=rtl],[dir=rtl] .fd-input-group .fd-input-group__button:not(:first-child).is-active,[dir=rtl] .fd-input-group .fd-input-group__button:not(:first-child):active{border-left-style:none;border-right:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-input-group .fd-input-group__addon:first-child .fd-input-group__button{border-right:var(--fdInputGroup_ControlButton_SideBorder)}.fd-input-group .fd-input-group__addon:first-child .fd-input-group__button[dir=rtl],[dir=rtl] .fd-input-group .fd-input-group__addon:first-child .fd-input-group__button{border-left:var(--fdInputGroup_ControlButton_SideBorder);border-right-style:none}.fd-input-group .fd-input-group__addon:first-child .fd-input-group__button.is-hover,.fd-input-group .fd-input-group__addon:first-child .fd-input-group__button:hover{border-right:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-input-group .fd-input-group__addon:first-child .fd-input-group__button.is-hover[dir=rtl],.fd-input-group .fd-input-group__addon:first-child .fd-input-group__button:hover[dir=rtl],[dir=rtl] .fd-input-group .fd-input-group__addon:first-child .fd-input-group__button.is-hover,[dir=rtl] .fd-input-group .fd-input-group__addon:first-child .fd-input-group__button:hover{border-left:var(--fdInputGroup_ControlButton_SideBorder_Active);border-right-style:none}.fd-input-group .fd-input-group__addon:first-child .fd-input-group__button.is-active,.fd-input-group .fd-input-group__addon:first-child .fd-input-group__button:active{border-right:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-input-group .fd-input-group__addon:first-child .fd-input-group__button.is-active[dir=rtl],.fd-input-group .fd-input-group__addon:first-child .fd-input-group__button:active[dir=rtl],[dir=rtl] .fd-input-group .fd-input-group__addon:first-child .fd-input-group__button.is-active,[dir=rtl] .fd-input-group .fd-input-group__addon:first-child .fd-input-group__button:active{border-left:var(--fdInputGroup_ControlButton_SideBorder_Active);border-right-style:none}.fd-input-group .fd-input-group__addon:not(:first-child) .fd-input-group__button{border-left:var(--fdInputGroup_ControlButton_SideBorder)}.fd-input-group .fd-input-group__addon:not(:first-child) .fd-input-group__button[dir=rtl],[dir=rtl] .fd-input-group .fd-input-group__addon:not(:first-child) .fd-input-group__button{border-left-style:none;border-right:var(--fdInputGroup_ControlButton_SideBorder)}.fd-input-group .fd-input-group__addon:not(:first-child) .fd-input-group__button.is-hover,.fd-input-group .fd-input-group__addon:not(:first-child) .fd-input-group__button:hover{border-left:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-input-group .fd-input-group__addon:not(:first-child) .fd-input-group__button.is-hover[dir=rtl],.fd-input-group .fd-input-group__addon:not(:first-child) .fd-input-group__button:hover[dir=rtl],[dir=rtl] .fd-input-group .fd-input-group__addon:not(:first-child) .fd-input-group__button.is-hover,[dir=rtl] .fd-input-group .fd-input-group__addon:not(:first-child) .fd-input-group__button:hover{border-left-style:none;border-right:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-input-group .fd-input-group__addon:not(:first-child) .fd-input-group__button.is-active,.fd-input-group .fd-input-group__addon:not(:first-child) .fd-input-group__button:active{border-left:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-input-group .fd-input-group__addon:not(:first-child) .fd-input-group__button.is-active[dir=rtl],.fd-input-group .fd-input-group__addon:not(:first-child) .fd-input-group__button:active[dir=rtl],[dir=rtl] .fd-input-group .fd-input-group__addon:not(:first-child) .fd-input-group__button.is-active,[dir=rtl] .fd-input-group .fd-input-group__addon:not(:first-child) .fd-input-group__button:active{border-left-style:none;border-right:var(--fdInputGroup_ControlButton_SideBorder_Active)}.fd-input-group .fd-input-group__button{background:var(--fdInput_Group_Button_Background);border:none;border-radius:var(--fdInput_Group_Button_Border_Raduis);color:var(--fdInput_Group_Button_Text_Color);overflow:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;z-index:auto!important}.fd-input-group .fd-input-group__button:before{display:none!important}.fd-input-group .fd-input-group__button.is-hover,.fd-input-group .fd-input-group__button:hover{--fdInput_Group_Button_Text_Color:var(--fdInput_Group_Button_Hover_Text_Color);-webkit-box-shadow:var(--fdInput_Group_Button_Box_Shadow);background:var(--fdInput_Group_Button_Hover_Background);box-shadow:var(--fdInput_Group_Button_Box_Shadow)}.fd-input-group .fd-input-group__button.is-active,.fd-input-group .fd-input-group__button:active{-webkit-box-shadow:var(--fdInput_Group_Button_Box_Shadow);background:var(--fdInput_Group_Button_Active_Background);box-shadow:var(--fdInput_Group_Button_Box_Shadow);color:var(--fdInput_Group_Button_Active_Text_Color)}.fd-input-group.is-success .fd-input-group__button.is-active,.fd-input-group.is-success .fd-input-group__button.is-hover,.fd-input-group.is-success .fd-input-group__button:active,.fd-input-group.is-success .fd-input-group__button:hover{box-shadow:var(--fdInput_Group_Button_Success_Active_Box_Shadow)}.fd-input-group.is-success .fd-input-group__button.is-active,.fd-input-group.is-success .fd-input-group__button:active{color:var(--fdInput_Group_Button_Success_Active_Text_Color)}.fd-input-group.is-error .fd-input-group__button.is-active,.fd-input-group.is-error .fd-input-group__button.is-hover,.fd-input-group.is-error .fd-input-group__button:active,.fd-input-group.is-error .fd-input-group__button:hover{box-shadow:var(--fdInput_Group_Button_Error_Active_Box_Shadow)}.fd-input-group.is-error .fd-input-group__button.is-active,.fd-input-group.is-error .fd-input-group__button:active{color:var(--fdInput_Group_Button_Error_Active_Text_Color)}.fd-input-group.is-warning .fd-input-group__button.is-active,.fd-input-group.is-warning .fd-input-group__button.is-hover,.fd-input-group.is-warning .fd-input-group__button:active,.fd-input-group.is-warning .fd-input-group__button:hover{box-shadow:var(--fdInput_Group_Button_Warning_Active_Box_Shadow)}.fd-input-group.is-warning .fd-input-group__button.is-active,.fd-input-group.is-warning .fd-input-group__button:active{color:var(--fdInput_Group_Button_Warning_Active_Text_Color)}.fd-input-group.is-alert .fd-input-group__button.is-active,.fd-input-group.is-alert .fd-input-group__button.is-hover,.fd-input-group.is-alert .fd-input-group__button:active,.fd-input-group.is-alert .fd-input-group__button:hover{box-shadow:var(--fdInput_Group_Button_Warning_Active_Box_Shadow)}.fd-input-group.is-alert .fd-input-group__button.is-active,.fd-input-group.is-alert .fd-input-group__button:active{color:var(--fdInput_Group_Button_Warning_Active_Text_Color)}.fd-input-group.is-information .fd-input-group__button.is-active,.fd-input-group.is-information .fd-input-group__button.is-hover,.fd-input-group.is-information .fd-input-group__button:active,.fd-input-group.is-information .fd-input-group__button:hover{box-shadow:var(--fdInput_Group_Button_Information_Active_Box_Shadow)}.fd-input-group.is-information .fd-input-group__button.is-active,.fd-input-group.is-information .fd-input-group__button:active{color:var(--fdInput_Group_Button_Information_Active_Text_Color)}.fd-input-group .fd-input-group__input{-webkit-box-flex:1;-ms-flex:1 1 10rem;background:none;background-color:var(--fdInputGroup_Input_Background, transparent);border:var(--fdInputGroup_Input_Border, none);color:var(--fdInputGroup_Input_Color, inherit);flex:1 1 10rem;padding-left:.25rem;padding-right:.25rem;text-shadow:var(--fdInputGroup_Text_Shadow)}.fd-input-group .fd-input-group__input:nth-child(n+1){margin:0}.fd-input-group .fd-input-group__input::placeholder{color:var(--fdInputGroup_Input_Placeholder_Color, var(--sapField_PlaceholderTextColor));font-style:var(--fdInputGroup_Input_Placeholder_Style, italic)}.fd-input-group .fd-input-group__input.is-hover,.fd-input-group .fd-input-group__input:hover{-webkit-box-shadow:none;background:none;background-color:var(--fdInputGroup_Hover_Input_Background, transparent);box-shadow:none}.fd-input-group .fd-input-group__input.is-focus,.fd-input-group .fd-input-group__input:focus{-webkit-box-shadow:none;background:var(--fdInputGroup_Input_Background, none);border-radius:0;box-shadow:none;outline:none;z-index:5}.fd-input-group .fd-input-group__input:first-child{padding-left:.625rem}.fd-input-group .fd-input-group__input:first-child[dir=rtl],[dir=rtl] .fd-input-group .fd-input-group__input:first-child{padding-left:0;padding-right:.625rem}.fd-input-group .fd-input-group__input:last-child{padding-right:.625rem}.fd-input-group .fd-input-group__input:last-child[dir=rtl],[dir=rtl] .fd-input-group .fd-input-group__input:last-child{padding-left:.625rem;padding-right:.25rem}.fd-input-group--inline{display:inline-flex;vertical-align:bottom;width:auto}.fd-input-group__addon{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;background:var(--fdInputGroup_Addon_Background, none);border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_NonInteractiveIconColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:var(--sapFontLargeSize);font-weight:400;forced-color-adjust:none;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;min-height:var(--fdInput_Group_Addon_Height, 2.25rem);min-width:var(--fdInput_Group_Addon_Width, 2.25rem);overflow:hidden;padding:0 .625rem;text-overflow:ellipsis;white-space:nowrap}.fd-input-group__addon:after,.fd-input-group__addon:before{box-sizing:inherit;font-size:inherit}.fd-input-group__addon span[class*=sap-icon--]:before{font-size:var(--sapFontLargeSize)}.fd-input-group__addon--readonly{opacity:.4}.fd-input-group__addon--button{overflow:visible;padding:0}.fd-input-group--control[aria-expanded=true]{margin-bottom:0}.fd-input-group[class*=-compact],.fd-input-group[class*=-condensed],[class*=-compact] .fd-input-group:not([class*=-cozy]),[class*=-condensed] .fd-input-group:not([class*=-cozy]){--fdInput_Field_Margin:.1875rem 0;--fdInput_Field_Compact_Margin:0;--fdInput_Group_Addon_Width:2rem;--fdInput_Group_Addon_Height:1.625rem}.fd-input-group .fd-textarea{resize:vertical}.fd-input-group .is-disabled,.fd-input-group :disabled,.fd-input-group [aria-disabled=true]{opacity:1}.fd-input-group.is-readonly,.fd-input-group[readonly]{overflow:visible}.fd-input-group .fd-tokenizer,.fd-input-group .fd-tokenizer.is-focus,.fd-input-group .fd-tokenizer.is-hover,.fd-input-group .fd-tokenizer:focus,.fd-input-group .fd-tokenizer:hover{-webkit-box-shadow:none;background:none;background-color:var(transparent, transparent);box-shadow:none}.fd-input-group .fd-tokenizer.is-focus,.fd-input-group .fd-tokenizer:focus{outline:none;z-index:5}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.fdp-search-field input[type=text]::-ms-clear{display:none;width:0;height:0}.fdp-search-field input[type=text]::-ms-reveal{display:none;width:0;height:0}.fdp-search-field input[type=search]::-webkit-search-decoration,.fdp-search-field input[type=search]::-webkit-search-cancel-button,.fdp-search-field input[type=search]::-webkit-search-results-button,.fdp-search-field input[type=search]::-webkit-search-results-decoration{display:none}.fdp-search-field .fdp-search-field__input-group button.fd-input-group__button{border-width:0}.fdp-search-field .fdp-search-field__input:hover{background:transparent}.fdp-search-field__suggestion-dropdown .fd-menu--overflow{top:0;max-width:none;min-height:10rem;max-height:100%;position:absolute;background-color:var(--sapList_Background)}.fdp-search-field__suggestion-dropdown .fd-menu__list,.fdp-search-field__suggestion-dropdown .fd-menu__item{max-width:none}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return i5.NgForOf; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(function () { return i5.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(function () { return i5.NgTemplateOutlet; }), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i0.forwardRef(function () { return i6.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: i0.forwardRef(function () { return i6.NgControlStatus; }), selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i0.forwardRef(function () { return i6.NgModel; }), selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i0.forwardRef(function () { return i7.IconComponent; }), selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i0.forwardRef(function () { return i8.MenuComponent; }), selector: "fdp-menu", inputs: ["id", "openByArrowKeys", "xPosition"], outputs: ["close"] }, { kind: "component", type: i0.forwardRef(function () { return i8.MenuItemComponent; }), selector: "fdp-menu-item", inputs: ["disabled", "cascadeDirection"], outputs: ["itemSelect"] }, { kind: "directive", type: i0.forwardRef(function () { return i8.MenuTriggerDirective; }), selector: "[fdpMenuTriggerFor]", inputs: ["fdpMenuTriggerFor"] }, { kind: "component", type: i0.forwardRef(function () { return i9.SelectComponent; }), selector: "fd-select", inputs: ["extendedBodyTemplate", "controlId", "state", "mobile", "stateMessage", "disabled", "required", "readonly", "placeholder", "value", "maxHeight", "glyph", "closeOnOutsideClick", "fillControlMode", "controlTemplate", "appendTo", "unselectMissingOption", "typeaheadDebounceInterval", "ariaLabelledBy", "ariaLabel", "mobileConfig", "inline", "selectControlClass", "selectDropdownButtonClass", "compareWith"], outputs: ["isOpenChange", "valueChange"] }, { kind: "component", type: i0.forwardRef(function () { return i9.OptionComponent; }), selector: "[fd-option], fd-option", inputs: ["id", "value", "disabled"], outputs: ["selectionChange"] }, { kind: "directive", type: i0.forwardRef(function () { return SearchFieldSuggestionDirective; }), selector: "[fdpSearchFieldSuggestion]" }, { kind: "pipe", type: i0.forwardRef(function () { return i5.AsyncPipe; }), name: "async" }, { kind: "pipe", type: i0.forwardRef(function () { return i2.SearchHighlightPipe; }), name: "highlight" }, { kind: "pipe", type: i0.forwardRef(function () { return i10.FdTranslatePipe; }), name: "fdTranslate" }, { kind: "pipe", type: i0.forwardRef(function () { return SuggestionMatchesPipe; }), name: "suggestionMatches" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
488
511
|
}
|
|
489
512
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: SearchFieldComponent, decorators: [{
|
|
490
513
|
type: Component,
|
|
@@ -594,4 +617,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
594
617
|
name: 'suggestionMatches'
|
|
595
618
|
}]
|
|
596
619
|
}] });
|
|
597
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9zZWFyY2gtZmllbGQvc2VhcmNoLWZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9zZWFyY2gtZmllbGQvc2VhcmNoLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBRUosU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JFLE9BQU8sRUFBcUIsT0FBTyxFQUFFLGFBQWEsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzdGLE9BQU8sRUFBbUIsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUdyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVB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STttQkFBQztvQkFDRixJQUFJLEVBQUUsbUJBQW1CO2lCQUM1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBQaXBlLFxuICAgIFBpcGVUcmFuc2Zvcm0sXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRE9XTl9BUlJPVywgRVNDQVBFLCBVUF9BUlJPVyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBDb25uZWN0ZWRQb3NpdGlvbiwgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZywgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IEZvY3VzYWJsZU9wdGlvbiwgRm9jdXNLZXlNYW5hZ2VyLCBMaXZlQW5ub3VuY2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcblxuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20sIGZyb21FdmVudCwgaXNPYnNlcnZhYmxlLCBtZXJnZSwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IER5bmFtaWNDb21wb25lbnRTZXJ2aWNlLCBLZXlVdGlsLCBSdGxTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBQb3BvdmVyQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3BvcG92ZXInO1xuaW1wb3J0IHsgTW9iaWxlTW9kZUNvbmZpZyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9tb2JpbGUtbW9kZSc7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50LCBTZWFyY2hGaWVsZERhdGFTb3VyY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQge1xuICAgIFNFQVJDSF9GSUVMRF9DT01QT05FTlQsXG4gICAgU2VhcmNoRmllbGRNb2JpbGVJbnRlcmZhY2Vcbn0gZnJvbSAnLi9zZWFyY2gtZmllbGQtbW9iaWxlL3NlYXJjaC1maWVsZC1tb2JpbGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IFNlYXJjaEZpZWxkTW9iaWxlQ29tcG9uZW50IH0gZnJvbSAnLi9zZWFyY2gtZmllbGQtbW9iaWxlL3NlYXJjaC1maWVsZC9zZWFyY2gtZmllbGQtbW9iaWxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbGF0Zm9ybVNlYXJjaEZpZWxkTW9iaWxlTW9kdWxlIH0gZnJvbSAnLi9zZWFyY2gtZmllbGQtbW9iaWxlL3NlYXJjaC1maWVsZC1tb2JpbGUubW9kdWxlJztcbmltcG9ydCB7IEZkTGFuZ3VhZ2UsIEZEX0xBTkdVQUdFLCBUcmFuc2xhdGlvblJlc29sdmVyIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9pMThuJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIsIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IEZEX1NIRUxMQkFSX1NFQVJDSF9DT01QT05FTlQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2hlbGxiYXInO1xuaW1wb3J0IHsgU2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NoYXJlZCc7XG5pbXBvcnQgZXF1YWwgZnJvbSAnZmFzdC1kZWVwLWVxdWFsJztcblxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hJbnB1dCB7XG4gICAgdGV4dDogc3RyaW5nO1xuICAgIGNhdGVnb3J5OiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN1Z2dlc3Rpb25JdGVtIHtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIGlzSGlzdG9yaWNhbD86IHN0cmluZztcbiAgICBkYXRhPzogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZhbHVlTGFiZWxJdGVtIHtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2ZkcFNlYXJjaEZpZWxkU3VnZ2VzdGlvbl0nLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgdGFiaW5kZXg6ICctMScsXG4gICAgICAgIHJvbGU6ICdsaXN0LWl0ZW0nXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hGaWVsZFN1Z2dlc3Rpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBGb2N1c2FibGVPcHRpb24ge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG59XG5cbmxldCBzZWFyY2hGaWVsZElkQ291bnQgPSAwO1xuXG50eXBlIEFwcGVhcmFuY2UgPSBTZWFyY2hDb21wb25lbnRbJ2FwcGVhcmFuY2UnXSB8IHVuZGVmaW5lZDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtc2VhcmNoLWZpZWxkJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zZWFyY2gtZmllbGQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzKCksXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEX1NIRUxMQkFSX1NFQVJDSF9DT01QT05FTlQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogU2VhcmNoRmllbGRDb21wb25lbnRcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoRmllbGRDb21wb25lbnRcbiAgICBleHRlbmRzIEJhc2VDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIFNlYXJjaEZpZWxkTW9iaWxlSW50ZXJmYWNlLCBTZWFyY2hDb21wb25lbnRcbntcbiAgICAvKiogVHlwZSBvZiBjb21wb25lbnQgdXNlZCB0byByZW5kZXIgdGhlIGNhdGVnb3JpZXMgZHJvcGRvd24uICovXG4gICAgQElucHV0KClcbiAgICBjYXRlZ29yeU1vZGU6ICdtZW51JyB8ICdzZWxlY3QnID0gJ21lbnUnO1xuXG4gICAgLyoqIEFkZGl0aW9uYWwgYXBwZWFyYW5jZSBjb25maWd1cmF0aW9uLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGFwcGVhcmFuY2UodmFsdWU6IEFwcGVhcmFuY2UpIHtcbiAgICAgICAgaWYgKGVxdWFsKHZhbHVlLCB0aGlzLmFwcGVhcmFuY2UpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9hcHBlYXJhbmNlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBnZXQgYXBwZWFyYW5jZSgpOiBBcHBlYXJhbmNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FwcGVhcmFuY2U7XG4gICAgfVxuXG4gICAgLyoqIFBsYWNlIGhvbGRlciB0ZXh0IGZvciBzZWFyY2ggaW5wdXQgZmllbGQuICovXG4gICAgQElucHV0KClcbiAgICBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gICAgLyoqIFNldCBNb2JpbGUgTW9kZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgbW9iaWxlOiBib29sZWFuO1xuXG4gICAgLyoqIFNlYXJjaCBGaWVsZCBNb2JpbGUgY29uZmlndXJhdGlvbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbW9iaWxlQ29uZmlnOiBNb2JpbGVNb2RlQ29uZmlnO1xuXG4gICAgLyoqIFdoZXRoZXIgZGlzcGxheSBSZWZyZXNoIGJ1dHRvbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZVJlZnJlc2ggPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIGRpc3BsYXkgc2VhcmNoIGJ1dHRvbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZVNlYXJjaCA9IGZhbHNlO1xuXG4gICAgLyoqIExpc3Qgb2Ygc3RyaW5nIHZhbHVlcyB0byBwb3B1bGF0ZSBzdWdnZXN0aW9uIGRyb3Bkb3duIHNlbGVjdGlvbi4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzdWdnZXN0aW9ucyh2YWx1ZTogU3VnZ2VzdGlvbkl0ZW1bXSB8IE9ic2VydmFibGU8U3VnZ2VzdGlvbkl0ZW1bXT4pIHtcbiAgICAgICAgdGhpcy5fc3VnZ2VzdGlvbnMgPSB2YWx1ZTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAvLyBjb252ZXJ0IHN1Z2dlc3Rpb25zIHRvIGFuIGFycmF5IG9mIHN0cmluZyBmb3IgXCJkcm9wZG93biB2YWx1ZXNcIlxuICAgICAgICAgICAgY29uc3QgZHJvcGRvd25WYWx1ZXMgPSB2YWx1ZS5tYXAoKHN1Z2dlc3Rpb246IFN1Z2dlc3Rpb25JdGVtKSA9PiBzdWdnZXN0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuX2Ryb3Bkb3duVmFsdWVzJCA9IG9mKGRyb3Bkb3duVmFsdWVzKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc09ic2VydmFibGUodmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLl9kcm9wZG93blZhbHVlcyQgPSB2YWx1ZS5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoc3VnZ2VzdGlvbnM6IFN1Z2dlc3Rpb25JdGVtW10pID0+IHN1Z2dlc3Rpb25zLm1hcCgoc3VnZ2VzdGlvbikgPT4gc3VnZ2VzdGlvbi52YWx1ZSkpXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZHJvcGRvd25WYWx1ZXMkID0gb2YoW10pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCBzdWdnZXN0aW9ucygpOiBTdWdnZXN0aW9uSXRlbVtdIHwgT2JzZXJ2YWJsZTxTdWdnZXN0aW9uSXRlbVtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdWdnZXN0aW9ucztcbiAgICB9XG5cbiAgICAvKiogRGF0YXNvdXJjZSBmb3Igc3VnZ2VzdGlvbiBsaXN0ICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZGF0YVNvdXJjZSh2YWx1ZTogU2VhcmNoRmllbGREYXRhU291cmNlPGFueT4pIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl9pbml0aWFsaXplRGF0YVNvdXJjZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IGRhdGFTb3VyY2UoKTogU2VhcmNoRmllbGREYXRhU291cmNlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVNvdXJjZTtcbiAgICB9XG5cbiAgICAvKiogSW5pdGlhbCBpbnB1dCB0ZXh0LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgaW5wdXRUZXh0OiBzdHJpbmc7XG5cbiAgICAvKiogTGlzdCBvZiBjYXRlZ29yaWVzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGNhdGVnb3JpZXModmFsdWU6IFZhbHVlTGFiZWxJdGVtW10pIHtcbiAgICAgICAgdGhpcy5fY2F0ZWdvcmllcyA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9zaG93Q2F0ZWdvcnlEcm9wZG93biA9IEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDA7XG4gICAgfVxuICAgIGdldCBjYXRlZ29yaWVzKCk6IFZhbHVlTGFiZWxJdGVtW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2F0ZWdvcmllcztcbiAgICB9XG5cbiAgICAvKiogQ3VycmVudCBjYXRlZ29yeSwgdmFsdWUgc2hvdWxkIGJlIHByZXNlbnQgaW4gY2F0ZWdvcmllcyBhcnJheSAqL1xuICAgIEBJbnB1dCgpXG4gICAgY3VycmVudENhdGVnb3J5OiBWYWx1ZUxhYmVsSXRlbTtcblxuICAgIC8qKiBTZXQgbGFiZWwgZm9yIGNhdGVnb3J5IGRyb3Bkb3duIGJ1dHRvbi4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNhdGVnb3J5TGFiZWwgPSAnQ2F0ZWdvcnknO1xuXG4gICAgLyoqIEhpZGUgZGlzcGxheSBvZiBjYXRlZ29yeSBsYWJlbCAqL1xuICAgIEBJbnB1dCgpXG4gICAgaGlkZUNhdGVnb3J5TGFiZWwgPSBmYWxzZTtcblxuICAgIC8qKiBUb2dnbGUgXCJsb2FkaW5nXCIgbW9kZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGlzTG9hZGluZyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQVJJQSBsYWJlbCB0byBzcGVjaWZ5IHdoYXQgdGhlIHNlYXJjaCBmaWVsZCBpc1xuICAgICAqIE5vdCBzaG93biBpbiB0aGUgVUksIG9ubHkgdmlzaWJsZSBieSB0aGUgc2NyZWVuLXJlYWRlcnMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWw6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKipcbiAgICAgKiBJZCBvZiBlbGVtZW50cyAoc2VwYXJhdGVkIGJ5IHNwYWNlKSBmb3Igc2V0dGluZyBhcmlhLWxhYmVsbGVkYnkgZm9yIHNlYXJjaCBpbnB1dFxuICAgICAqIE5vdCBzaG93biBpbiB0aGUgVUksIG9ubHkgdmlzaWJsZSBieSB0aGUgc2NyZWVuLXJlYWRlcnMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWxsZWRieTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWRcbiAgICAgKiBNZXNzYWdlIGFubm91bmNlZCBieSBzY3JlZW4gcmVhZGVyLCB3aGVuIHNlYXJjaCBzdWdnZXN0aW9ucyBvcGVucy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNlYXJjaFN1Z2dlc3Rpb25NZXNzYWdlOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaTE4biBjYXBhYmlsaXRpZXMgaW5zdGVhZFxuICAgICAqIFNlY29uZCBwYXJ0IG9mIG1lc3NhZ2UgZm9yIHNlYXJjaCBzdWdnZXN0aW9uLlxuICAgICAqIGRpcmVjdGlvbiBmb3IgbmF2aWdhdGluZyB0aGUgc3VnZ2VzdGlvbi4gVGhpcyBpcyBub3QgbmVjZXNzcnkgaW4gY2FzZSBvZiAwIHN1Z2dlc3Rpb24uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZWFyY2hTdWdnZXN0aW9uTmF2aWdhdGVNZXNzYWdlOiBzdHJpbmc7XG5cbiAgICAvKiogV2hldGhlciB0byBhbHdheXMgc2hvdyBzZWFyY2ggYnV0dG9uLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZm9yY2VTZWFyY2hCdXR0b24gPSBmYWxzZTtcblxuICAgIC8qKiBJbnB1dCBjaGFuZ2UgZXZlbnQuICovXG4gICAgQE91dHB1dCgpXG4gICAgaW5wdXRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxTZWFyY2hJbnB1dD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICAvKiogU2VhcmNoIHN1Ym1pdCBldmVudC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBzZWFyY2hTdWJtaXQ6IEV2ZW50RW1pdHRlcjxTZWFyY2hJbnB1dD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICAvKiogQ2FuY2VsIHNlYXJjaCBldmVudC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBjYW5jZWxTZWFyY2g6IEV2ZW50RW1pdHRlcjxTZWFyY2hJbnB1dD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICAvKiogT3BlbiBtb2JpbGUgbW9kZSBldmVudC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBpc09wZW5DaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKiBAaGlkZGVuIEZvY3VzIHN0YXRlICovXG4gICAgZ2V0IGlzRm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50Py5hY3RpdmVFbGVtZW50ID09PSB0aGlzLmlucHV0RmllbGQ/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT2JzZXJ2YWJsZSBsaXN0IG9mIHN0cmluZyB2YWx1ZXMgdGFrZW4gZnJvbSBgc3VnZ2VzdGlvbnNgIHRvIHBvcHVsYXRlIGRyb3Bkb3duIG1lbnUuXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIF9kcm9wZG93blZhbHVlcyQ6IE9ic2VydmFibGU8c3RyaW5nW10+ID0gb2YoW10pO1xuXG4gICAgLyoqXG4gICAgICogQ3VycmVudGx5IHNldCBjYXRlZ29yeS5cbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgX2N1cnJlbnRDYXRlZ29yeT86IFZhbHVlTGFiZWxJdGVtO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdG8gc2hvdyB0eXBlYWhlYWQgZHJvcGRvd24uXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIF9zaG93RHJvcGRvd24gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRvIHNob3cgY2F0ZWdvcnkgZHJvcGRvd24uIFRoaXMgaXMgZGVwZW5kZW50IG9uIGxlbmd0aCBvZiBgY2F0ZWdvcnlWYWx1ZXNgIHByb3BlcnR5LlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBfc2hvd0NhdGVnb3J5RHJvcGRvd24gPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2lucHV0SWQgPSAnJztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3N1Ym1pdElkID0gJyc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9tZW51SWQgPSAnJztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3JlZnJlc2hJZCA9ICcnO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY2xlYXJJZCA9ICcnO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZGlyOiBEaXJlY3Rpb24gPSAnbHRyJztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgaXNPcGVuID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pc1JlZnJlc2ggPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2lzU2VhcmNoRG9uZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdWdnZXN0aW9uczogU3VnZ2VzdGlvbkl0ZW1bXSB8IE9ic2VydmFibGU8U3VnZ2VzdGlvbkl0ZW1bXT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RhdGFTb3VyY2U6IFNlYXJjaEZpZWxkRGF0YVNvdXJjZTxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYXRlZ29yaWVzOiBWYWx1ZUxhYmVsSXRlbVtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jdXJyZW50U2VhcmNoU3VnZ2VzdGlvbkFubm91Y2VtZW50TWVzc2FnZSA9ICcnO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdWdnZXN0aW9uT3ZlcmxheVJlZjogT3ZlcmxheVJlZiB8IG51bGw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1Z2dlc3Rpb25Qb3J0YWw6IFRlbXBsYXRlUG9ydGFsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdWdnZXN0aW9ua2V5TWFuYWdlcjogRm9jdXNLZXlNYW5hZ2VyPFNlYXJjaEZpZWxkU3VnZ2VzdGlvbkRpcmVjdGl2ZT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3RyYW5zbGF0aW9uUmVzb2x2ZXIgPSBuZXcgVHJhbnNsYXRpb25SZXNvbHZlcigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vbkRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGF0YVNvdXJjZUNoYW5nZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYXBwZWFyYW5jZTogQXBwZWFyYW5jZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnY2F0ZWdvcnlEcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIGNhdGVnb3J5RHJvcGRvd246IFBvcG92ZXJDb21wb25lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2lucHV0R3JvdXAnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBpbnB1dEdyb3VwOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnaW5wdXRGaWVsZCcsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIGlucHV0RmllbGQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdpbnB1dEZpZWxkVGVtcGxhdGUnKVxuICAgIGlucHV0RmllbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnc3VnZ2VzdGlvbk1lbnVUZW1wbGF0ZScsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHN1Z2dlc3Rpb25NZW51VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oU2VhcmNoRmllbGRTdWdnZXN0aW9uRGlyZWN0aXZlKVxuICAgIHN1Z2dlc3Rpb25JdGVtczogUXVlcnlMaXN0PFNlYXJjaEZpZWxkU3VnZ2VzdGlvbkRpcmVjdGl2ZT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBzZWFyY2hGaWVsZFZhbHVlKCk6IFNlYXJjaElucHV0IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRleHQ6IHRoaXMuaW5wdXRUZXh0LFxuICAgICAgICAgICAgY2F0ZWdvcnk6IHRoaXMuX2N1cnJlbnRDYXRlZ29yeT8udmFsdWUgfHwgbnVsbFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfb3ZlcmxheTogT3ZlcmxheSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2NkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBfcnRsOiBSdGxTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IF9kb2N1bWVudDogRG9jdW1lbnQsXG4gICAgICAgIEBJbmplY3QoRkRfTEFOR1VBR0UpIHByaXZhdGUgcmVhZG9ubHkgX2xhbmd1YWdlJDogT2JzZXJ2YWJsZTxGZExhbmd1YWdlPixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfbGl2ZUFubm91bmNlcjogTGl2ZUFubm91bmNlcixcbiAgICAgICAgcmVhZG9ubHkgX2R5bmFtaWNDb21wb25lbnRTZXJ2aWNlOiBEeW5hbWljQ29tcG9uZW50U2VydmljZSxcbiAgICAgICAgcmVhZG9ubHkgY29udGVudERlbnNpdHlPYnNlcnZlcjogQ29udGVudERlbnNpdHlPYnNlcnZlclxuICAgICkge1xuICAgICAgICBzdXBlcihfY2QpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGJhc2VJZCA9ICdmZHAtc2VhcmNoLWZpZWxkJztcbiAgICAgICAgdGhpcy5faW5wdXRJZCA9IGAke2Jhc2VJZH0taW5wdXQtJHtzZWFyY2hGaWVsZElkQ291bnQrK31gO1xuICAgICAgICB0aGlzLl9zdWJtaXRJZCA9IGAke2Jhc2VJZH0tc3VibWl0LSR7c2VhcmNoRmllbGRJZENvdW50Kyt9YDtcbiAgICAgICAgdGhpcy5fbWVudUlkID0gYCR7YmFzZUlkfS1tZW51LSR7c2VhcmNoRmllbGRJZENvdW50Kyt9YDtcblxuICAgICAgICB0aGlzLl9pc1JlZnJlc2ggPSB0cnVlO1xuXG4gICAgICAgIGlmICh0aGlzLl9ydGwpIHtcbiAgICAgICAgICAgIHRoaXMuX3J0bC5ydGwucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoaXNSdGw6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kaXIgPSBpc1J0bCA/ICdydGwnIDogJ2x0cic7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFVwTW9iaWxlTW9kZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICgnY2F0ZWdvcmllcycgaW4gY2hhbmdlcyB8fCAnY3VycmVudENhdGVnb3J5JyBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLnNldEN1cnJlbnRDYXRlZ29yeSh0aGlzLmN1cnJlbnRDYXRlZ29yeSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fc3VnZ2VzdGlvbk92ZXJsYXlSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25PdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25PdmVybGF5UmVmID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zdWdnZXN0aW9ua2V5TWFuYWdlcj8uZGVzdHJveSgpO1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tb2JpbGUgJiYgdGhpcy5pc09wZW4gJiYgS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtFU0NBUEVdKSkge1xuICAgICAgICAgICAgdGhpcy5zaG93RGlhbG9nKGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZvY3VzZXMgdGhlIHNlYXJjaCBpbnB1dCBmaWVsZC5cbiAgICAgKi9cbiAgICBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnB1dEZpZWxkLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBDYXB0dXJpbmcgb25LZXlkb3duIG9mIGlucHV0IGVsZW1lbnQgKi9cbiAgICBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFldmVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbVVBfQVJST1csIERPV05fQVJST1ddKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3N1Z2dlc3Rpb25rZXlNYW5hZ2VyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3VnZ2VzdGlvbmtleU1hbmFnZXIub25LZXlkb3duKGV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW0VTQ0FQRV0pKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlU3VnZ2VzdGlvbk1lbnUodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYXB0dXJpbmcgdmFsdWUgY2hhbmdlIGluIGlucHV0IHRleHQgZmllbGQgb2YgY29tYm9ib3guXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIG9uVmFsdWVDaGFuZ2UoZXZlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICAvLyB3aGVuIHNlYXJjaCByZXN1bHQgbm90IGNoYW5nZWQgYnV0IGlucHV0IHRleHQgaXMgY2hhbmdlZC5cbiAgICAgICAgLy8gYWdhaW4gbmVlZCB0byBhbm5vdW5jZSB0aGUgcmVzdWx0LCBzbyBjbGVhciB0aGlzIG1lc3NhZ2UuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gKHRoaXMuX2N1cnJlbnRTZWFyY2hTdWdnZXN0aW9uQW5ub3VjZW1lbnRNZXNzYWdlID0gJycpKTtcbiAgICAgICAgdGhpcy5faXNTZWFyY2hEb25lID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2lzUmVmcmVzaCA9IGZhbHNlO1xuXG4gICAgICAgIGlmICh0aGlzLm1vYmlsZSAmJiAhdGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMub3Blbk1vYmlsZU1vZGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5wdXRDaGFuZ2UuZW1pdCh0aGlzLnNlYXJjaEZpZWxkVmFsdWUpO1xuICAgICAgICBjb25zdCBpbnB1dFN0cjogc3RyaW5nID0gZXZlbnQudHJpbSgpO1xuICAgICAgICBpZiAoaW5wdXRTdHIubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlU3VnZ2VzdGlvbk1lbnUoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMub3BlblN1Z2dlc3Rpb25NZW51KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5kYXRhU291cmNlKSB7XG4gICAgICAgICAgICBjb25zdCBtYXRjaCA9IG5ldyBNYXAoKTtcbiAgICAgICAgICAgIG1hdGNoLnNldCgna2V5d29yZCcsIGlucHV0U3RyKTtcbiAgICAgICAgICAgIG1hdGNoLnNldCgnY2F0ZWdvcnknLCB0aGlzLl9jdXJyZW50Q2F0ZWdvcnk/LnZhbHVlIHx8IG51bGwpO1xuXG4gICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UubWF0Y2gobWF0Y2gpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fdXBkYXRlU2VhcmNoQW5ub3VjZW1lbnRUZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FwdHVyaW5nIGl0ZW0gc2VsZWN0aW9uIGZyb20gZHJvcGRvd24gbWVudSBvZiBjb21ib2JveC5cbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgb25JdGVtQ2xpY2soZXZlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmlucHV0VGV4dCA9IGV2ZW50O1xuICAgICAgICB0aGlzLmlucHV0Q2hhbmdlLmVtaXQodGhpcy5zZWFyY2hGaWVsZFZhbHVlKTtcbiAgICAgICAgdGhpcy5zZWFyY2hTdWJtaXQuZW1pdCh0aGlzLnNlYXJjaEZpZWxkVmFsdWUpO1xuICAgICAgICB0aGlzLmNsb3NlU3VnZ2VzdGlvbk1lbnUoKTtcbiAgICAgICAgaWYgKHRoaXMubW9iaWxlKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dEaWFsb2coZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2lzU2VhcmNoRG9uZSA9IHRydWU7XG4gICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayBmdW5jdGlvbiB3aGljaCBnZXRzIGV4ZWN1dGVkIG9uIGtleWJvYXJkIGVudGVyIG9mIGlucHV0IHRleHQgZmllbGQuXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIG9uU2VhcmNoU3VibWl0KGV2ZW50PzogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQ/LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNMb2FkaW5nKSB7XG4gICAgICAgICAgICB0aGlzLmNhbmNlbFNlYXJjaC5lbWl0KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlYXJjaFN1Ym1pdC5lbWl0KHRoaXMuc2VhcmNoRmllbGRWYWx1ZSk7XG5cbiAgICAgICAgdGhpcy5faXNSZWZyZXNoID0gdHJ1ZTtcblxuICAgICAgICBpZiAodGhpcy5pbnB1dFRleHQpIHtcbiAgICAgICAgICAgIHRoaXMuX2lzU2VhcmNoRG9uZSA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNsb3NlU3VnZ2VzdGlvbk1lbnUoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgY3VycmVudCBjYXRlZ29yeS5cbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgc2V0Q3VycmVudENhdGVnb3J5KGN1cnJlbnRDYXRlZ29yeTogVmFsdWVMYWJlbEl0ZW0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY3VycmVudENhdGVnb3J5ID1cbiAgICAgICAgICAgIGN1cnJlbnRDYXRlZ29yeSAmJlxuICAgICAgICAgICAgdGhpcy5jYXRlZ29yaWVzPy5maW5kKFxuICAgICAgICAgICAgICAgIChjYXRlZ29yeSkgPT4gY2F0ZWdvcnkubGFiZWwgPT09IGN1cnJlbnRDYXRlZ29yeS5sYWJlbCAmJiBjYXRlZ29yeS52YWx1ZSA9PT0gY3VycmVudENhdGVnb3J5LnZhbHVlXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuaW5wdXRDaGFuZ2UuZW1pdCh0aGlzLnNlYXJjaEZpZWxkVmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW4gc3VnZ2VzdGlvbiBtZW51XG4gICAgICovXG4gICAgb3BlblN1Z2dlc3Rpb25NZW51KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsb3NlU3VnZ2VzdGlvbk1lbnUoKTtcbiAgICAgICAgdGhpcy5fc3VnZ2VzdGlvbmtleU1hbmFnZXI/LmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5fc3VnZ2VzdGlvbmtleU1hbmFnZXIgPSBuZXcgRm9jdXNLZXlNYW5hZ2VyKHRoaXMuc3VnZ2VzdGlvbkl0ZW1zKTtcbiAgICAgICAgaWYgKHRoaXMuX3Nob3dEcm9wZG93bikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gY3JlYXRlIG92ZXJsYXlcbiAgICAgICAgY29uc3Qgb3ZlcmxheUNvbmZpZyA9IHRoaXMuX2NyZWF0ZVN1Z2dldGlvbk92ZXJsYXlDb25maWcoKTtcbiAgICAgICAgdGhpcy5fc3VnZ2VzdGlvbk92ZXJsYXlSZWYgPSB0aGlzLl9vdmVybGF5LmNyZWF0ZShvdmVybGF5Q29uZmlnKTtcblxuICAgICAgICAvLyBnZXQgcG9ydGFsIHRvIGF0dGFjaCB0byBvdmVybGF5XG4gICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25Qb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5zdWdnZXN0aW9uTWVudVRlbXBsYXRlLCB0aGlzLl92aWV3Q29udGFpbmVyUmVmKTtcbiAgICAgICAgdGhpcy5fc3VnZ2VzdGlvbk92ZXJsYXlSZWYuYXR0YWNoKHRoaXMuX3N1Z2dlc3Rpb25Qb3J0YWwpO1xuXG4gICAgICAgIC8vIGFkZCBzdWJzY3JpcHRpb24gdG8gY2FwdHVyZSBvdXRzaWRlIGNsaWNrc1xuICAgICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZG9jdW1lbnQsICdjbGljaycpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICEhdGhpcy5fc3VnZ2VzdGlvbk92ZXJsYXlSZWYgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICF0aGlzLl9zdWdnZXN0aW9uT3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudC5jb250YWlucyh0YXJnZXQpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zaG93RHJvcGRvd25cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9jdXMgPSAhKHRhcmdldC50YWdOYW1lID09PSAnSU5QVVQnICYmIHRoaXMuX2lucHV0SWQgIT09IHRhcmdldC5pZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZVN1Z2dlc3Rpb25NZW51KGZvY3VzKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3Nob3dEcm9wZG93biA9IHRydWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvcGVuTW9iaWxlTW9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaG93RGlhbG9nKHRydWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZGlhbG9nQXBwcm92ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkl0ZW1DbGljayh0aGlzLmlucHV0VGV4dCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBkaWFsb2dEaXNtaXNzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNob3dEaWFsb2coZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2hvd0RpYWxvZyhpc09wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuICE9PSBpc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gaXNPcGVuO1xuXG4gICAgICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KGlzT3Blbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNsb3NlU3VnZ2VzdGlvbk1lbnUoZm9jdXMgPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fc3VnZ2VzdGlvbk92ZXJsYXlSZWYpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zdWdnZXN0aW9uT3ZlcmxheVJlZi5kZXRhY2goKTtcbiAgICAgICAgaWYgKGZvY3VzKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2hvd0Ryb3Bkb3duID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjbGVhclRleHRJbnB1dCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnB1dFRleHQgPSAnJztcbiAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLmlucHV0Q2hhbmdlLmVtaXQodGhpcy5zZWFyY2hGaWVsZFZhbHVlKTtcbiAgICAgICAgdGhpcy5jYW5jZWxTZWFyY2guZW1pdCh0aGlzLnNlYXJjaEZpZWxkVmFsdWUpO1xuXG4gICAgICAgIHRoaXMuX2lzUmVmcmVzaCA9IHRydWU7XG4gICAgICAgIHRoaXMuX2lzU2VhcmNoRG9uZSA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuY2xvc2VTdWdnZXN0aW9uTWVudShmYWxzZSk7XG4gICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jcmVhdGVTdWdnZXRpb25PdmVybGF5Q29uZmlnKCk6IE92ZXJsYXlDb25maWcge1xuICAgICAgICBjb25zdCBwb3NpdGlvbnM6IENvbm5lY3RlZFBvc2l0aW9uW10gPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICAgICAgICBvdmVybGF5WTogJ3RvcCdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICAgICAgICBvdmVybGF5WTogJ2JvdHRvbSdcbiAgICAgICAgICAgIH1cbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMuX292ZXJsYXlcbiAgICAgICAgICAgIC5wb3NpdGlvbigpXG4gICAgICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLmlucHV0R3JvdXApXG4gICAgICAgICAgICAud2l0aExvY2tlZFBvc2l0aW9uKClcbiAgICAgICAgICAgIC53aXRoUG9zaXRpb25zKHBvc2l0aW9ucyk7XG4gICAgICAgIGNvbnN0IHNjcm9sbFN0cmF0ZWd5ID0gdGhpcy5fb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKTtcbiAgICAgICAgcmV0dXJuIG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgICAgICAgIHBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneSxcbiAgICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCcsXG4gICAgICAgICAgICB3aWR0aDogdGhpcy5pbnB1dEdyb3VwLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGhcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaW5pdGlhbGl6ZURhdGFTb3VyY2UoZGF0YVNvdXJjZTogU2VhcmNoRmllbGREYXRhU291cmNlPGFueT4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGF0YVNvdXJjZUNoYW5nZWQkLm5leHQoKTtcbiAgICAgICAgZGF0YVNvdXJjZVxuICAgICAgICAgICAgLm9wZW4oKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKG1lcmdlKHRoaXMuX29uRGVzdHJveSQsIHRoaXMuX2RhdGFTb3VyY2VDaGFuZ2VkJCkpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2Ryb3Bkb3duVmFsdWVzJCA9IG9mKGRhdGEpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2RhdGFTb3VyY2UgPSBkYXRhU291cmNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gcmV0dXJuIGNvdW50IGZvciBtYXRjaGluZyBzdWdnZXN0aW9uIHdpdGggaW5wdXQgdGV4dFxuICAgICAqIEByZXR1cm5zIG51bWJlclxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldFN1Z2dlc3Rpb25zTGVuZ3RoKCk6IG51bWJlciB7XG4gICAgICAgIGxldCBjb3VudCA9IDA7XG4gICAgICAgIHRoaXMuX2Ryb3Bkb3duVmFsdWVzJC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgICAgICAgc3VnZ2VzdGlvbnM/LmZvckVhY2goKHN1Z2dlc3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pbnB1dFRleHQgJiYgc3VnZ2VzdGlvbj8udG9Mb3dlckNhc2UoKS5pbmRleE9mKHRoaXMuaW5wdXRUZXh0Py50cmltKCk/LnRvTG93ZXJDYXNlKCkpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGNvdW50O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBhc3luYyBfdXBkYXRlU2VhcmNoQW5ub3VjZW1lbnRUZXh0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAvLyBjcmVhdGUgc2VhcmNoIHN1Z2dlc3Rpb24gbWVzc2FnZSB3aXRoIGNvdW50LlxuICAgICAgICBjb25zdCBzdWdnZXN0aW9uQ291bnQgPSB0aGlzLl9nZXRTdWdnZXN0aW9uc0xlbmd0aCgpO1xuICAgICAgICBsZXQgeyBzZWFyY2hTdWdnZXN0aW9uTWVzc2FnZSwgc2VhcmNoU3VnZ2VzdGlvbk5hdmlnYXRlTWVzc2FnZSB9ID0gdGhpcztcbiAgICAgICAgaWYgKHNlYXJjaFN1Z2dlc3Rpb25NZXNzYWdlKSB7XG4gICAgICAgICAgICBzZWFyY2hTdWdnZXN0aW9uTWVzc2FnZSA9IHN1Z2dlc3Rpb25Db3VudCArICcgJyArIHNlYXJjaFN1Z2dlc3Rpb25NZXNzYWdlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghc2VhcmNoU3VnZ2VzdGlvbk1lc3NhZ2UgfHwgIXNlYXJjaFN1Z2dlc3Rpb25OYXZpZ2F0ZU1lc3NhZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGxhbmcgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9sYW5ndWFnZSQpO1xuICAgICAgICAgICAgaWYgKCFzZWFyY2hTdWdnZXN0aW9uTWVzc2FnZSkge1xuICAgICAgICAgICAgICAgIHNlYXJjaFN1Z2dlc3Rpb25NZXNzYWdlID0gdGhpcy5fdHJhbnNsYXRpb25SZXNvbHZlci5yZXNvbHZlKFxuICAgICAgICAgICAgICAgICAgICBsYW5nLFxuICAgICAgICAgICAgICAgICAgICAncGxhdGZvcm1TZWFyY2hGaWVsZC5zZWFyY2hTdWdnZXN0aW9uTWVzc2FnZScsXG4gICAgICAgICAgICAgICAgICAgIHsgY291bnQ6IHN1Z2dlc3Rpb25Db3VudCB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghc2VhcmNoU3VnZ2VzdGlvbk5hdmlnYXRlTWVzc2FnZSkge1xuICAgICAgICAgICAgICAgIHNlYXJjaFN1Z2dlc3Rpb25OYXZpZ2F0ZU1lc3NhZ2UgPSB0aGlzLl90cmFuc2xhdGlvblJlc29sdmVyLnJlc29sdmUoXG4gICAgICAgICAgICAgICAgICAgIGxhbmcsXG4gICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybVNlYXJjaEZpZWxkLnNlYXJjaFN1Z2dlc3Rpb25OYXZpZ2F0ZU1lc3NhZ2UnXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jdXJyZW50U2VhcmNoU3VnZ2VzdGlvbkFubm91Y2VtZW50TWVzc2FnZSA9XG4gICAgICAgICAgICBzZWFyY2hTdWdnZXN0aW9uTWVzc2FnZSArIChzdWdnZXN0aW9uQ291bnQgPiAwID8gc2VhcmNoU3VnZ2VzdGlvbk5hdmlnYXRlTWVzc2FnZSA6ICcnKTtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRUZXh0Py5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLl9saXZlQW5ub3VuY2VyLmFubm91bmNlKHRoaXMuX2N1cnJlbnRTZWFyY2hTdWdnZXN0aW9uQW5ub3VjZW1lbnRNZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBhc3luYyBfc2V0VXBNb2JpbGVNb2RlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBpbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICAgICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFNFQVJDSF9GSUVMRF9DT01QT05FTlQsIHVzZVZhbHVlOiB0aGlzIH1dLFxuICAgICAgICAgICAgcGFyZW50OiB0aGlzLl9pbmplY3RvclxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9keW5hbWljQ29tcG9uZW50U2VydmljZS5jcmVhdGVEeW5hbWljTW9kdWxlKFxuICAgICAgICAgICAgeyBpbnB1dEZpZWxkVGVtcGxhdGU6IHRoaXMuaW5wdXRGaWVsZFRlbXBsYXRlLCBzdWdnZXN0aW9uTWVudVRlbXBsYXRlOiB0aGlzLnN1Z2dlc3Rpb25NZW51VGVtcGxhdGUgfSxcbiAgICAgICAgICAgIFBsYXRmb3JtU2VhcmNoRmllbGRNb2JpbGVNb2R1bGUsXG4gICAgICAgICAgICBTZWFyY2hGaWVsZE1vYmlsZUNvbXBvbmVudCxcbiAgICAgICAgICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgICBpbmplY3RvclxuICAgICAgICApO1xuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIG5hbWU6ICdzdWdnZXN0aW9uTWF0Y2hlcydcbn0pXG5leHBvcnQgY2xhc3MgU3VnZ2VzdGlvbk1hdGNoZXNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB0cmFuc2Zvcm0odmFsdWVzOiBzdHJpbmdbXSB8IG51bGwsIG1hdGNoOiBzdHJpbmcsIG1vYmlsZSA9IGZhbHNlKTogc3RyaW5nW10ge1xuICAgICAgICBpZiAoIXZhbHVlcykge1xuICAgICAgICAgICAgdmFsdWVzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1vYmlsZSAmJiAhbWF0Y2gpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcHJvY2Vzc2VkTWF0Y2ggPSBtYXRjaC50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgcmV0dXJuIHZhbHVlcy5maWx0ZXIoKHZhbHVlKSA9PiB2YWx1ZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YocHJvY2Vzc2VkTWF0Y2gpID4gLTEpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb2JpbGUgPyBtb2JpbGVUZW1wbGF0ZSA6IGlucHV0RmllbGRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI21vYmlsZVRlbXBsYXRlPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dEZpZWxkVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2VhcmNoQ2F0ZWdvcnlNZW51PlxuICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJmZHAtc2VhcmNoLWZpZWxkX19jYXRlZ29yeS1idXR0b24gZmQtaW5wdXQtZ3JvdXBfX2J1dHRvbiBmZC1idXR0b24gZmQtYnV0dG9uLS1tZW51IHt7XG4gICAgICAgICAgICBhcHBlYXJhbmNlPy5jYXRlZ29yeUJ1dHRvbkNsYXNzXG4gICAgICAgIH19XCJcbiAgICAgICAgW2ZkcE1lbnVUcmlnZ2VyRm9yXT1cImNhdGVnb3J5TWVudVwiXG4gICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImZkcC1zZWFyY2gtZmllbGRfX2NhdGVnb3J5LWxhYmVsXCIgKm5nSWY9XCIhaGlkZUNhdGVnb3J5TGFiZWxcIj5cbiAgICAgICAgICAgIHt7IF9jdXJyZW50Q2F0ZWdvcnk/LmxhYmVsIHx8IGNhdGVnb3J5TGFiZWwgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxmZHAtbWVudSAjY2F0ZWdvcnlNZW51PlxuICAgICAgICA8ZmRwLW1lbnUtaXRlbSAqbmdGb3I9XCJsZXQgY2F0ZWdvcnkgb2YgY2F0ZWdvcmllc1wiIChpdGVtU2VsZWN0KT1cInNldEN1cnJlbnRDYXRlZ29yeShjYXRlZ29yeSlcIlxuICAgICAgICAgICAgPnt7IGNhdGVnb3J5LmxhYmVsIH19XG4gICAgICAgIDwvZmRwLW1lbnUtaXRlbT5cbiAgICA8L2ZkcC1tZW51PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzZWFyY2hDYXRlZ29yeVNlbGVjdD5cbiAgICA8ZmQtc2VsZWN0XG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJjYXRlZ29yeUxhYmVsXCJcbiAgICAgICAgW3NlbGVjdENvbnRyb2xDbGFzc109XCJhcHBlYXJhbmNlPy5jYXRlZ29yeUJ1dHRvbkNsYXNzXCJcbiAgICAgICAgW3NlbGVjdERyb3Bkb3duQnV0dG9uQ2xhc3NdPVwiYXBwZWFyYW5jZT8uY2F0ZWdvcnlEcm9wZG93bkJ1dHRvbkNsYXNzXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInNldEN1cnJlbnRDYXRlZ29yeSgkZXZlbnQpXCJcbiAgICA+XG4gICAgICAgIDxsaSBmZC1vcHRpb24gKm5nRm9yPVwibGV0IGNhdGVnb3J5IG9mIGNhdGVnb3JpZXNcIiBbdmFsdWVdPVwiY2F0ZWdvcnlcIj57eyBjYXRlZ29yeS5sYWJlbCB9fTwvbGk+XG4gICAgPC9mZC1zZWxlY3Q+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2lucHV0RmllbGRUZW1wbGF0ZT5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZmRwLXNlYXJjaC1maWVsZFwiXG4gICAgICAgIFtjbGFzcy53aXRoLWNhdGVnb3JpZXNdPVwiX3Nob3dDYXRlZ29yeURyb3Bkb3duXCJcbiAgICAgICAgW2NsYXNzLmlzLWxvYWRpbmddPVwiaXNMb2FkaW5nXCJcbiAgICAgICAgW2NsYXNzLmlzLWNvbXBhY3RdPVwiY29udGVudERlbnNpdHlPYnNlcnZlci5pc0NvbXBhY3QkIHwgYXN5bmNcIlxuICAgICAgICBbY2xhc3MuaGlkZS1jYXRlZ29yeS1sYWJlbF09XCJoaWRlQ2F0ZWdvcnlMYWJlbFwiXG4gICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAjaW5wdXRHcm91cFxuICAgICAgICAgICAgY2xhc3M9XCJmZHAtc2VhcmNoLWZpZWxkX19pbnB1dC1ncm91cCBmZC1pbnB1dC1ncm91cCB7eyBhcHBlYXJhbmNlPy5zZWFyY2hDbGFzcyB9fVwiXG4gICAgICAgICAgICBbY2xhc3MuaXMtZm9jdXNdPVwiaXNGb2N1c2VkXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWlucHV0LWdyb3VwX19hZGRvbiBmZC1pbnB1dC1ncm91cF9fYWRkb24tLWJ1dHRvbiB7eyBhcHBlYXJhbmNlPy5zZWFyY2hDYXRlZ29yeUNsYXNzIH19XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIl9zaG93Q2F0ZWdvcnlEcm9wZG93blwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2F0ZWdvcnlNb2RlID09PSAnc2VsZWN0JyA/IHNlYXJjaENhdGVnb3J5U2VsZWN0IDogc2VhcmNoQ2F0ZWdvcnlNZW51XCJcbiAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICNpbnB1dEZpZWxkXG4gICAgICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmRwLXNlYXJjaC1maWVsZF9faW5wdXQgZmQtaW5wdXQgZmQtaW5wdXQtZ3JvdXBfX2lucHV0IHt7IGFwcGVhcmFuY2U/LnNlYXJjaEZpZWxkQ2xhc3MgfX1cIlxuICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cIl9pbnB1dElkXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJfbWVudUlkXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIl9zaG93RHJvcGRvd24gPyAndHJ1ZScgOiAnZmFsc2UnXCJcbiAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwib25TZWFyY2hTdWJtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpbnB1dFRleHRcIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vYmlsZSAmJiBvcGVuTW9iaWxlTW9kZSgpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtaW5wdXQtZ3JvdXBfX2FkZG9uIGZkLWlucHV0LWdyb3VwX19hZGRvbi0tYnV0dG9uIHt7IGFwcGVhcmFuY2U/LmFkZG9uQ2xhc3MgfX1cIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaW5wdXRUZXh0ICYmIGlucHV0VGV4dC5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCIncGxhdGZvcm1TZWFyY2hGaWVsZC5jbGVhckJ1dHRvblRpdGxlJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZHAtc2VhcmNoLWZpZWxkX19jbGVhciBmZC1idXR0b24gZmQtYnV0dG9uLS10cmFuc3BhcmVudCB7eyBhcHBlYXJhbmNlPy5idXR0b25DbGFzcyB9fVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mZC1pbnB1dC1ncm91cF9fYnV0dG9uXT1cIiFhcHBlYXJhbmNlPy5yZW1vdmVHcm91cEJ1dHRvbkNsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJfY2xlYXJJZFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhclRleHRJbnB1dCgpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1pY29uIGdseXBoPVwiZGVjbGluZVwiPjwvZmQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1pbnB1dC1ncm91cF9fYWRkb24gZmQtaW5wdXQtZ3JvdXBfX2FkZG9uLS1idXR0b24ge3sgYXBwZWFyYW5jZT8uYWRkb25DbGFzcyB9fSB7e1xuICAgICAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPy5zZWFyY2hTdWJtaXRDbGFzc1xuICAgICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImZvcmNlU2VhcmNoQnV0dG9uIHx8IGlzTG9hZGluZyB8fCAoIWlzTG9hZGluZyAmJiAhX2lzU2VhcmNoRG9uZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZGlzYWJsZVNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCIncGxhdGZvcm1TZWFyY2hGaWVsZC5zdWJtaXRCdXR0b25UaXRsZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmRwLXNlYXJjaC1maWVsZF9fc3VibWl0IGZkLWJ1dHRvbiBmZC1idXR0b24tLXRyYW5zcGFyZW50IHt7IGFwcGVhcmFuY2U/LmJ1dHRvbkNsYXNzIH19XCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZkLWlucHV0LWdyb3VwX19idXR0b25dPVwiIWFwcGVhcmFuY2U/LnJlbW92ZUdyb3VwQnV0dG9uQ2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJfc3VibWl0SWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlYXJjaFN1Ym1pdCgpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1pY29uIGdseXBoPVwic2VhcmNoXCI+PC9mZC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWlucHV0LWdyb3VwX19hZGRvbiBmZC1pbnB1dC1ncm91cF9fYWRkb24tLWJ1dHRvbiB7eyBhcHBlYXJhbmNlPy5hZGRvbkNsYXNzIH19IHt7XG4gICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U/LnNlYXJjaFN1Ym1pdENsYXNzXG4gICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWRpc2FibGVSZWZyZXNoICYmICFpc0xvYWRpbmcgJiYgKF9pc1JlZnJlc2ggfHwgX2lzU2VhcmNoRG9uZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVNlYXJjaEZpZWxkLnN5bmNocm9uaXplQnV0dG9uVGl0bGUnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkcC1zZWFyY2gtZmllbGRfX2xvYWRpbmcgZmQtaW5wdXQtZ3JvdXBfX2J1dHRvbiBmZC1idXR0b24gZmQtYnV0dG9uLS10cmFuc3BhcmVudCB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgYXBwZWFyYW5jZT8uYnV0dG9uQ2xhc3NcbiAgICAgICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cIl9yZWZyZXNoSWRcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWFyY2hTdWJtaXQoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtaWNvbiBnbHlwaD1cInN5bmNocm9uaXplXCI+PC9mZC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc3VnZ2VzdGlvbk1lbnVUZW1wbGF0ZT5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZmRwLXNlYXJjaC1maWVsZF9fc3VnZ2VzdGlvbi1kcm9wZG93blwiXG4gICAgICAgIFthdHRyLmRpcl09XCJfZGlyXCJcbiAgICAgICAgKm5nSWY9XCIoX2Ryb3Bkb3duVmFsdWVzJCB8IGFzeW5jIHwgc3VnZ2VzdGlvbk1hdGNoZXMgOiBpbnB1dFRleHQgOiBtb2JpbGUpPy5sZW5ndGhcIlxuICAgID5cbiAgICAgICAgPG5hdlxuICAgICAgICAgICAgY2xhc3M9XCJmZC1tZW51XCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgW2NsYXNzLmlzLWNvbXBhY3RdPVwiY29udGVudERlbnNpdHlPYnNlcnZlci5pc0NvbXBhY3QkIHwgYXN5bmNcIlxuICAgICAgICAgICAgW2NsYXNzLmZkLW1lbnUtLW1vYmlsZV09XCJtb2JpbGVcIlxuICAgICAgICAgICAgW2NsYXNzLmZkLW1lbnUtLW92ZXJmbG93XT1cIiFtb2JpbGVcIlxuICAgICAgICAgICAgW2F0dHIuaWRdPVwiX21lbnVJZFwiXG4gICAgICAgICAgICAjbWVudVxuICAgICAgICAgICAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJmZC1tZW51X19saXN0XCIgcm9sZT1cIm1lbnVcIj5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgZmRwU2VhcmNoRmllbGRTdWdnZXN0aW9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmRwLXNlYXJjaC1maWVsZF9fc3VnZ2VzdGlvbi1pdGVtIGZkLW1lbnVfX2l0ZW0gZmQtbWVudV9fbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB2YWx1ZSBvZiBfZHJvcGRvd25WYWx1ZXMkIHwgYXN5bmMgfCBzdWdnZXN0aW9uTWF0Y2hlcyA6IGlucHV0VGV4dCA6IG1vYmlsZVwiXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uSXRlbUNsaWNrKHZhbHVlKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi50YWIpPVwib25JdGVtQ2xpY2sodmFsdWUpXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleXVwLnNwYWNlKT1cIm9uSXRlbUNsaWNrKHZhbHVlKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKHZhbHVlKVwiXG4gICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwidmFsdWUgfCBoaWdobGlnaHQgOiBpbnB1dFRleHQgOiB0cnVlIDogdHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJtZW51aXRlbVwiXG4gICAgICAgICAgICAgICAgPjwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICA8L25hdj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
620
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9zZWFyY2gtZmllbGQvc2VhcmNoLWZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9zZWFyY2gtZmllbGQvc2VhcmNoLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBRUosU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JFLE9BQU8sRUFBcUIsT0FBTyxFQUFFLGFBQWEsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzdGLE9BQU8sRUFBbUIsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUdyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVB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LEVBQUUsTUFBTSxHQUFHLEtBQUs7UUFDNUQsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE1BQU0sR0FBRyxFQUFFLENBQUM7U0FDZjtRQUNELElBQUksTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2xCLE9BQU8sTUFBTSxDQUFDO1NBQ2pCO1FBQ0QsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2xELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7OEdBWFEscUJBQXFCOzRHQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBSGpDLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLG1CQUFtQjtpQkFDNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdG9yLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgUGlwZSxcbiAgICBQaXBlVHJhbnNmb3JtLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q2hpbGRyZW4sXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERPV05fQVJST1csIEVTQ0FQRSwgVVBfQVJST1cgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgQ29ubmVjdGVkUG9zaXRpb24sIE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBGb2N1c2FibGVPcHRpb24sIEZvY3VzS2V5TWFuYWdlciwgTGl2ZUFubm91bmNlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBEaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XG5cbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tLCBmcm9tRXZlbnQsIGlzT2JzZXJ2YWJsZSwgbWVyZ2UsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBEeW5hbWljQ29tcG9uZW50U2VydmljZSwgS2V5VXRpbCwgUnRsU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgUG9wb3ZlckNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9wb3BvdmVyJztcbmltcG9ydCB7IE1vYmlsZU1vZGVDb25maWcgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbW9iaWxlLW1vZGUnO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCwgU2VhcmNoRmllbGREYXRhU291cmNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zaGFyZWQnO1xuaW1wb3J0IHtcbiAgICBTRUFSQ0hfRklFTERfQ09NUE9ORU5ULFxuICAgIFNlYXJjaEZpZWxkTW9iaWxlSW50ZXJmYWNlXG59IGZyb20gJy4vc2VhcmNoLWZpZWxkLW1vYmlsZS9zZWFyY2gtZmllbGQtbW9iaWxlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTZWFyY2hGaWVsZE1vYmlsZUNvbXBvbmVudCB9IGZyb20gJy4vc2VhcmNoLWZpZWxkLW1vYmlsZS9zZWFyY2gtZmllbGQvc2VhcmNoLWZpZWxkLW1vYmlsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGxhdGZvcm1TZWFyY2hGaWVsZE1vYmlsZU1vZHVsZSB9IGZyb20gJy4vc2VhcmNoLWZpZWxkLW1vYmlsZS9zZWFyY2gtZmllbGQtbW9iaWxlLm1vZHVsZSc7XG5pbXBvcnQgeyBGZExhbmd1YWdlLCBGRF9MQU5HVUFHRSwgVHJhbnNsYXRpb25SZXNvbHZlciB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eU9ic2VydmVyLCBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5pbXBvcnQgeyBGRF9TSEVMTEJBUl9TRUFSQ0hfQ09NUE9ORU5UIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NoZWxsYmFyJztcbmltcG9ydCB7IFNlYXJjaENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zaGFyZWQnO1xuaW1wb3J0IGVxdWFsIGZyb20gJ2Zhc3QtZGVlcC1lcXVhbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoSW5wdXQge1xuICAgIHRleHQ6IHN0cmluZztcbiAgICBjYXRlZ29yeTogc3RyaW5nIHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdWdnZXN0aW9uSXRlbSB7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICBpc0hpc3RvcmljYWw/OiBzdHJpbmc7XG4gICAgZGF0YT86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWYWx1ZUxhYmVsSXRlbSB7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZHBTZWFyY2hGaWVsZFN1Z2dlc3Rpb25dJyxcbiAgICBob3N0OiB7XG4gICAgICAgIHRhYmluZGV4OiAnLTEnLFxuICAgICAgICByb2xlOiAnbGlzdC1pdGVtJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoRmllbGRTdWdnZXN0aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgRm9jdXNhYmxlT3B0aW9uIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZikge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxufVxuXG5sZXQgc2VhcmNoRmllbGRJZENvdW50ID0gMDtcblxudHlwZSBBcHBlYXJhbmNlID0gU2VhcmNoQ29tcG9uZW50WydhcHBlYXJhbmNlJ10gfCB1bmRlZmluZWQ7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLXNlYXJjaC1maWVsZCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoLWZpZWxkLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVycygpLFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGRF9TSEVMTEJBUl9TRUFSQ0hfQ09NUE9ORU5ULFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IFNlYXJjaEZpZWxkQ29tcG9uZW50XG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaEZpZWxkQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBCYXNlQ29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBTZWFyY2hGaWVsZE1vYmlsZUludGVyZmFjZSwgU2VhcmNoQ29tcG9uZW50XG57XG4gICAgLyoqIFR5cGUgb2YgY29tcG9uZW50IHVzZWQgdG8gcmVuZGVyIHRoZSBjYXRlZ29yaWVzIGRyb3Bkb3duLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY2F0ZWdvcnlNb2RlOiAnbWVudScgfCAnc2VsZWN0JyA9ICdtZW51JztcblxuICAgIC8qKiBBZGRpdGlvbmFsIGFwcGVhcmFuY2UgY29uZmlndXJhdGlvbi4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBhcHBlYXJhbmNlKHZhbHVlOiBBcHBlYXJhbmNlKSB7XG4gICAgICAgIGlmIChlcXVhbCh2YWx1ZSwgdGhpcy5hcHBlYXJhbmNlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fYXBwZWFyYW5jZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgZ2V0IGFwcGVhcmFuY2UoKTogQXBwZWFyYW5jZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hcHBlYXJhbmNlO1xuICAgIH1cblxuICAgIC8qKiBQbGFjZWhvbGRlciB0ZXh0IGZvciBzZWFyY2ggaW5wdXQgZmllbGQuICovXG4gICAgQElucHV0KClcbiAgICBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gICAgLyoqIFNldCBNb2JpbGUgTW9kZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgbW9iaWxlOiBib29sZWFuO1xuXG4gICAgLyoqIFNlYXJjaCBGaWVsZCBNb2JpbGUgY29uZmlndXJhdGlvbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbW9iaWxlQ29uZmlnOiBNb2JpbGVNb2RlQ29uZmlnO1xuXG4gICAgLyoqIFdoZXRoZXIgZGlzcGxheSBSZWZyZXNoIGJ1dHRvbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZVJlZnJlc2ggPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIGRpc3BsYXkgc2VhcmNoIGJ1dHRvbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZVNlYXJjaCA9IGZhbHNlO1xuXG4gICAgLyoqIExpc3Qgb2Ygc3RyaW5nIHZhbHVlcyB0byBwb3B1bGF0ZSBzdWdnZXN0aW9uIGRyb3Bkb3duIHNlbGVjdGlvbi4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzdWdnZXN0aW9ucyh2YWx1ZTogU3VnZ2VzdGlvbkl0ZW1bXSB8IE9ic2VydmFibGU8U3VnZ2VzdGlvbkl0ZW1bXT4pIHtcbiAgICAgICAgdGhpcy5fc3VnZ2VzdGlvbnMgPSB2YWx1ZTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAvLyBjb252ZXJ0IHN1Z2dlc3Rpb25zIHRvIGFuIGFycmF5IG9mIHN0cmluZyBmb3IgXCJkcm9wZG93biB2YWx1ZXNcIlxuICAgICAgICAgICAgY29uc3QgZHJvcGRvd25WYWx1ZXMgPSB2YWx1ZS5tYXAoKHN1Z2dlc3Rpb246IFN1Z2dlc3Rpb25JdGVtKSA9PiBzdWdnZXN0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuX2Ryb3Bkb3duVmFsdWVzJCA9IG9mKGRyb3Bkb3duVmFsdWVzKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc09ic2VydmFibGUodmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLl9kcm9wZG93blZhbHVlcyQgPSB2YWx1ZS5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoc3VnZ2VzdGlvbnM6IFN1Z2dlc3Rpb25JdGVtW10pID0+IHN1Z2dlc3Rpb25zLm1hcCgoc3VnZ2VzdGlvbikgPT4gc3VnZ2VzdGlvbi52YWx1ZSkpXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZHJvcGRvd25WYWx1ZXMkID0gb2YoW10pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCBzdWdnZXN0aW9ucygpOiBTdWdnZXN0aW9uSXRlbVtdIHwgT2JzZXJ2YWJsZTxTdWdnZXN0aW9uSXRlbVtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdWdnZXN0aW9ucztcbiAgICB9XG5cbiAgICAvKiogRGF0YXNvdXJjZSBmb3Igc3VnZ2VzdGlvbiBsaXN0ICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZGF0YVNvdXJjZSh2YWx1ZTogU2VhcmNoRmllbGREYXRhU291cmNlPGFueT4pIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl9pbml0aWFsaXplRGF0YVNvdXJjZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IGRhdGFTb3VyY2UoKTogU2VhcmNoRmllbGREYXRhU291cmNlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVNvdXJjZTtcbiAgICB9XG5cbiAgICAvKiogSW5pdGlhbCBpbnB1dCB0ZXh0LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgaW5wdXRUZXh0OiBzdHJpbmc7XG5cbiAgICAvKiogTGlzdCBvZiBjYXRlZ29yaWVzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGNhdGVnb3JpZXModmFsdWU6IFZhbHVlTGFiZWxJdGVtW10pIHtcbiAgICAgICAgdGhpcy5fY2F0ZWdvcmllcyA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9zaG93Q2F0ZWdvcnlEcm9wZG93biA9IEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDA7XG4gICAgfVxuICAgIGdldCBjYXRlZ29yaWVzKCk6IFZhbHVlTGFiZWxJdGVtW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2F0ZWdvcmllcztcbiAgICB9XG5cbiAgICAvKiogQ3VycmVudCBjYXRlZ29yeSwgdmFsdWUgc2hvdWxkIGJlIHByZXNlbnQgaW4gY2F0ZWdvcmllcyBhcnJheSAqL1xuICAgIEBJbnB1dCgpXG4gICAgY3VycmVudENhdGVnb3J5OiBWYWx1ZUxhYmVsSXRlbTtcblxuICAgIC8qKiBTZXQgbGFiZWwgZm9yIGNhdGVnb3J5IGRyb3Bkb3duIGJ1dHRvbi4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNhdGVnb3J5TGFiZWwgPSAnQ2F0ZWdvcnknO1xuXG4gICAgLyoqIEhpZGUgZGlzcGxheSBvZiBjYXRlZ29yeSBsYWJlbCAqL1xuICAgIEBJbnB1dCgpXG4gICAgaGlkZUNhdGVnb3J5TGFiZWwgPSBmYWxzZTtcblxuICAgIC8qKiBUb2dnbGUgXCJsb2FkaW5nXCIgbW9kZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGlzTG9hZGluZyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQVJJQSBsYWJlbCB0byBzcGVjaWZ5IHdoYXQgdGhlIHNlYXJjaCBmaWVsZCBpc1xuICAgICAqIE5vdCBzaG93biBpbiB0aGUgVUksIG9ubHkgdmlzaWJsZSBieSB0aGUgc2NyZWVuLXJlYWRlcnMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWw6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKipcbiAgICAgKiBJZCBvZiBlbGVtZW50cyAoc2VwYXJhdGVkIGJ5IHNwYWNlKSBmb3Igc2V0dGluZyBhcmlhLWxhYmVsbGVkYnkgZm9yIHNlYXJjaCBpbnB1dFxuICAgICAqIE5vdCBzaG93biBpbiB0aGUgVUksIG9ubHkgdmlzaWJsZSBieSB0aGUgc2NyZWVuLXJlYWRlcnMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWxsZWRieTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWRcbiAgICAgKiBNZXNzYWdlIGFubm91bmNlZCBieSBzY3JlZW4gcmVhZGVyLCB3aGVuIHNlYXJjaCBzdWdnZXN0aW9ucyBvcGVucy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzZWFyY2hTdWdnZXN0aW9uTWVzc2FnZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignUHJvcGVydHkgc2VhcmNoU3VnZ2VzdGlvbk1lc3NhZ2UgaXMgZGVwcmVjYXRlZC4gVXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWQuJyk7XG4gICAgICAgIHRoaXMuX3NlYXJjaFN1Z2dlc3Rpb25NZXNzYWdlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IHNlYXJjaFN1Z2dlc3Rpb25NZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWFyY2hTdWdnZXN0aW9uTWVzc2FnZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaTE4biBjYXBhYmlsaXRpZXMgaW5zdGVhZFxuICAgICAqIFNlY29uZCBwYXJ0IG9mIG1lc3NhZ2UgZm9yIHNlYXJjaCBzdWdnZXN0aW9uLlxuICAgICAqIGRpcmVjdGlvbiBmb3IgbmF2aWdhdGluZyB0aGUgc3VnZ2VzdGlvbi4gVGhpcyBpcyBub3QgbmVjZXNzcnkgaW4gY2FzZSBvZiAwIHN1Z2dlc3Rpb24uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgc2VhcmNoU3VnZ2VzdGlvbk5hdmlnYXRlTWVzc2FnZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignUHJvcGVydHkgc2VhcmNoU3VnZ2VzdGlvbk5hdmlnYXRlTWVzc2FnZSBpcyBkZXByZWNhdGVkLiBVc2UgaTE4biBjYXBhYmlsaXRpZXMgaW5zdGVhZC4nKTtcbiAgICAgICAgdGhpcy5fc2VhcmNoU3VnZ2VzdGlvbk5hdmlnYXRlTWVzc2FnZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCBzZWFyY2hTdWdnZXN0aW9uTmF2aWdhdGVNZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWFyY2hTdWdnZXN0aW9uTmF2aWdhdGVNZXNzYWdlO1xuICAgIH1cblxuICAgIC8qKiBXaGV0aGVyIHRvIGFsd2F5cyBzaG93IHNlYXJjaCBidXR0b24uICovXG4gICAgQElucHV0KClcbiAgICBmb3JjZVNlYXJjaEJ1dHRvbiA9IGZhbHNlO1xuXG4gICAgLyoqIElucHV0IGNoYW5nZSBldmVudC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBpbnB1dENoYW5nZTogRXZlbnRFbWl0dGVyPFNlYXJjaElucHV0PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIC8qKiBTZWFyY2ggc3VibWl0IGV2ZW50LiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHNlYXJjaFN1Ym1pdDogRXZlbnRFbWl0dGVyPFNlYXJjaElucHV0PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIC8qKiBDYW5jZWwgc2VhcmNoIGV2ZW50LiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGNhbmNlbFNlYXJjaDogRXZlbnRFbWl0dGVyPFNlYXJjaElucHV0PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIC8qKiBPcGVuIG1vYmlsZSBtb2RlIGV2ZW50LiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGlzT3BlbkNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdjYXRlZ29yeURyb3Bkb3duJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgY2F0ZWdvcnlEcm9wZG93bjogUG9wb3ZlckNvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnaW5wdXRHcm91cCcsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIGlucHV0R3JvdXA6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdpbnB1dEZpZWxkJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgaW5wdXRGaWVsZDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2lucHV0RmllbGRUZW1wbGF0ZScpXG4gICAgaW5wdXRGaWVsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdzdWdnZXN0aW9uTWVudVRlbXBsYXRlJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgc3VnZ2VzdGlvbk1lbnVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZHJlbihTZWFyY2hGaWVsZFN1Z2dlc3Rpb25EaXJlY3RpdmUpXG4gICAgc3VnZ2VzdGlvbkl0ZW1zOiBRdWVyeUxpc3Q8U2VhcmNoRmllbGRTdWdnZXN0aW9uRGlyZWN0aXZlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IHNlYXJjaEZpZWxkVmFsdWUoKTogU2VhcmNoSW5wdXQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGV4dDogdGhpcy5pbnB1dFRleHQsXG4gICAgICAgICAgICBjYXRlZ29yeTogdGhpcy5fY3VycmVudENhdGVnb3J5Py52YWx1ZSB8fCBudWxsXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKiBAaGlkZGVuIEZvY3VzIHN0YXRlICovXG4gICAgZ2V0IGlzRm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50Py5hY3RpdmVFbGVtZW50ID09PSB0aGlzLmlucHV0RmllbGQ/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT2JzZXJ2YWJsZSBsaXN0IG9mIHN0cmluZyB2YWx1ZXMgdGFrZW4gZnJvbSBgc3VnZ2VzdGlvbnNgIHRvIHBvcHVsYXRlIGRyb3Bkb3duIG1lbnUuXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIF9kcm9wZG93blZhbHVlcyQ6IE9ic2VydmFibGU8c3RyaW5nW10+ID0gb2YoW10pO1xuXG4gICAgLyoqXG4gICAgICogQ3VycmVudGx5IHNldCBjYXRlZ29yeS5cbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgX2N1cnJlbnRDYXRlZ29yeT86IFZhbHVlTGFiZWxJdGVtO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdG8gc2hvdyB0eXBlYWhlYWQgZHJvcGRvd24uXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIF9zaG93RHJvcGRvd24gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRvIHNob3cgY2F0ZWdvcnkgZHJvcGRvd24uIFRoaXMgaXMgZGVwZW5kZW50IG9uIGxlbmd0aCBvZiBgY2F0ZWdvcnlWYWx1ZXNgIHByb3BlcnR5LlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBfc2hvd0NhdGVnb3J5RHJvcGRvd24gPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2lucHV0SWQgPSAnJztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3N1Ym1pdElkID0gJyc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9tZW51SWQgPSAnJztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3JlZnJlc2hJZCA9ICcnO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY2xlYXJJZCA9ICcnO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZGlyOiBEaXJlY3Rpb24gPSAnbHRyJztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgaXNPcGVuID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pc1JlZnJlc2ggPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2lzU2VhcmNoRG9uZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZWFyY2hTdWdnZXN0aW9uTWVzc2FnZTogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZWFyY2hTdWdnZXN0aW9uTmF2aWdhdGVNZXNzYWdlOiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1Z2dlc3Rpb25zOiBTdWdnZXN0aW9uSXRlbVtdIHwgT2JzZXJ2YWJsZTxTdWdnZXN0aW9uSXRlbVtdPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGF0YVNvdXJjZTogU2VhcmNoRmllbGREYXRhU291cmNlPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhdGVnb3JpZXM6IFZhbHVlTGFiZWxJdGVtW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2N1cnJlbnRTZWFyY2hTdWdnZXN0aW9uQW5ub3VjZW1lbnRNZXNzYWdlID0gJyc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1Z2dlc3Rpb25PdmVybGF5UmVmOiBPdmVybGF5UmVmIHwgbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3VnZ2VzdGlvblBvcnRhbDogVGVtcGxhdGVQb3J0YWw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1Z2dlc3Rpb25rZXlNYW5hZ2VyOiBGb2N1c0tleU1hbmFnZXI8U2VhcmNoRmllbGRTdWdnZXN0aW9uRGlyZWN0aXZlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRpb25SZXNvbHZlciA9IG5ldyBUcmFuc2xhdGlvblJlc29sdmVyKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29uRGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kYXRhU291cmNlQ2hhbmdlZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hcHBlYXJhbmNlOiBBcHBlYXJhbmNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9vdmVybGF5OiBPdmVybGF5LFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF92aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByb3RlY3RlZCByZWFkb25seSBfY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IF9ydGw6IFJ0bFNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgcmVhZG9ubHkgX2RvY3VtZW50OiBEb2N1bWVudCxcbiAgICAgICAgQEluamVjdChGRF9MQU5HVUFHRSkgcHJpdmF0ZSByZWFkb25seSBfbGFuZ3VhZ2UkOiBPYnNlcnZhYmxlPEZkTGFuZ3VhZ2U+LFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9saXZlQW5ub3VuY2VyOiBMaXZlQW5ub3VuY2VyLFxuICAgICAgICByZWFkb25seSBfZHluYW1pY0NvbXBvbmVudFNlcnZpY2U6IER5bmFtaWNDb21wb25lbnRTZXJ2aWNlLFxuICAgICAgICByZWFkb25seSBjb250ZW50RGVuc2l0eU9ic2VydmVyOiBDb250ZW50RGVuc2l0eU9ic2VydmVyXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKF9jZCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1vYmlsZSAmJiB0aGlzLmlzT3BlbiAmJiBLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW0VTQ0FQRV0pKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dEaWFsb2coZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYmFzZUlkID0gJ2ZkcC1zZWFyY2gtZmllbGQnO1xuICAgICAgICB0aGlzLl9pbnB1dElkID0gYCR7YmFzZUlkfS1pbnB1dC0ke3NlYXJjaEZpZWxkSWRDb3VudCsrfWA7XG4gICAgICAgIHRoaXMuX3N1Ym1pdElkID0gYCR7YmFzZUlkfS1zdWJtaXQtJHtzZWFyY2hGaWVsZElkQ291bnQrK31gO1xuICAgICAgICB0aGlzLl9tZW51SWQgPSBgJHtiYXNlSWR9LW1lbnUtJHtzZWFyY2hGaWVsZElkQ291bnQrK31gO1xuXG4gICAgICAgIHRoaXMuX2lzUmVmcmVzaCA9IHRydWU7XG5cbiAgICAgICAgaWYgKHRoaXMuX3J0bCkge1xuICAgICAgICAgICAgdGhpcy5fcnRsLnJ0bC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChpc1J0bDogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2RpciA9IGlzUnRsID8gJ3J0bCcgOiAnbHRyJztcbiAgICAgICAgICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgdGhpcy5fc2V0VXBNb2JpbGVNb2RlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKCdjYXRlZ29yaWVzJyBpbiBjaGFuZ2VzIHx8ICdjdXJyZW50Q2F0ZWdvcnknIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0Q3VycmVudENhdGVnb3J5KHRoaXMuY3VycmVudENhdGVnb3J5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9zdWdnZXN0aW9uT3ZlcmxheVJlZikge1xuICAgICAgICAgICAgdGhpcy5fc3VnZ2VzdGlvbk92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgICAgICAgdGhpcy5fc3VnZ2VzdGlvbk92ZXJsYXlSZWYgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25rZXlNYW5hZ2VyPy5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRm9jdXNlcyB0aGUgc2VhcmNoIGlucHV0IGZpZWxkLlxuICAgICAqL1xuICAgIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlucHV0RmllbGQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIENhcHR1cmluZyBvbktleWRvd24gb2YgaW5wdXQgZWxlbWVudCAqL1xuICAgIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIWV2ZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtVUF9BUlJPVywgRE9XTl9BUlJPV10pKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fc3VnZ2VzdGlvbmtleU1hbmFnZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdWdnZXN0aW9ua2V5TWFuYWdlci5vbktleWRvd24oZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbRVNDQVBFXSkpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VTdWdnZXN0aW9uTWVudSh0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhcHR1cmluZyB2YWx1ZSBjaGFuZ2UgaW4gaW5wdXQgdGV4dCBmaWVsZCBvZiBjb21ib2JveC5cbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgb25WYWx1ZUNoYW5nZShldmVudDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIC8vIHdoZW4gc2VhcmNoIHJlc3VsdCBub3QgY2hhbmdlZCBidXQgaW5wdXQgdGV4dCBpcyBjaGFuZ2VkLlxuICAgICAgICAvLyBhZ2FpbiBuZWVkIHRvIGFubm91bmNlIHRoZSByZXN1bHQsIHNvIGNsZWFyIHRoaXMgbWVzc2FnZS5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiAodGhpcy5fY3VycmVudFNlYXJjaFN1Z2dlc3Rpb25Bbm5vdWNlbWVudE1lc3NhZ2UgPSAnJykpO1xuICAgICAgICB0aGlzLl9pc1NlYXJjaERvbmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5faXNSZWZyZXNoID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHRoaXMubW9iaWxlICYmICF0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5vcGVuTW9iaWxlTW9kZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbnB1dENoYW5nZS5lbWl0KHRoaXMuc2VhcmNoRmllbGRWYWx1ZSk7XG4gICAgICAgIGNvbnN0IGlucHV0U3RyOiBzdHJpbmcgPSBldmVudC50cmltKCk7XG4gICAgICAgIGlmIChpbnB1dFN0ci5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VTdWdnZXN0aW9uTWVudSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgdGhpcy5vcGVuU3VnZ2VzdGlvbk1lbnUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRhdGFTb3VyY2UpIHtcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gbmV3IE1hcCgpO1xuICAgICAgICAgICAgbWF0Y2guc2V0KCdrZXl3b3JkJywgaW5wdXRTdHIpO1xuICAgICAgICAgICAgbWF0Y2guc2V0KCdjYXRlZ29yeScsIHRoaXMuX2N1cnJlbnRDYXRlZ29yeT8udmFsdWUgfHwgbnVsbCk7XG5cbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5tYXRjaChtYXRjaCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl91cGRhdGVTZWFyY2hBbm5vdWNlbWVudFRleHQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYXB0dXJpbmcgaXRlbSBzZWxlY3Rpb24gZnJvbSBkcm9wZG93biBtZW51IG9mIGNvbWJvYm94LlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBvbkl0ZW1DbGljayhldmVudDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5wdXRUZXh0ID0gZXZlbnQ7XG4gICAgICAgIHRoaXMuaW5wdXRDaGFuZ2UuZW1pdCh0aGlzLnNlYXJjaEZpZWxkVmFsdWUpO1xuICAgICAgICB0aGlzLnNlYXJjaFN1Ym1pdC5lbWl0KHRoaXMuc2VhcmNoRmllbGRWYWx1ZSk7XG4gICAgICAgIHRoaXMuY2xvc2VTdWdnZXN0aW9uTWVudSgpO1xuICAgICAgICBpZiAodGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0RpYWxvZyhmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faXNTZWFyY2hEb25lID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIGZ1bmN0aW9uIHdoaWNoIGdldHMgZXhlY3V0ZWQgb24ga2V5Ym9hcmQgZW50ZXIgb2YgaW5wdXQgdGV4dCBmaWVsZC5cbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgb25TZWFyY2hTdWJtaXQoZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudD8ucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICBpZiAodGhpcy5pc0xvYWRpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuY2FuY2VsU2VhcmNoLmVtaXQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VhcmNoU3VibWl0LmVtaXQodGhpcy5zZWFyY2hGaWVsZFZhbHVlKTtcblxuICAgICAgICB0aGlzLl9pc1JlZnJlc2ggPSB0cnVlO1xuXG4gICAgICAgIGlmICh0aGlzLmlucHV0VGV4dCkge1xuICAgICAgICAgICAgdGhpcy5faXNTZWFyY2hEb25lID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2xvc2VTdWdnZXN0aW9uTWVudShmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyBjdXJyZW50IGNhdGVnb3J5LlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBzZXRDdXJyZW50Q2F0ZWdvcnkoY3VycmVudENhdGVnb3J5OiBWYWx1ZUxhYmVsSXRlbSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jdXJyZW50Q2F0ZWdvcnkgPVxuICAgICAgICAgICAgY3VycmVudENhdGVnb3J5ICYmXG4gICAgICAgICAgICB0aGlzLmNhdGVnb3JpZXM/LmZpbmQoXG4gICAgICAgICAgICAgICAgKGNhdGVnb3J5KSA9PiBjYXRlZ29yeS5sYWJlbCA9PT0gY3VycmVudENhdGVnb3J5LmxhYmVsICYmIGNhdGVnb3J5LnZhbHVlID09PSBjdXJyZW50Q2F0ZWdvcnkudmFsdWVcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5pbnB1dENoYW5nZS5lbWl0KHRoaXMuc2VhcmNoRmllbGRWYWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3BlbiBzdWdnZXN0aW9uIG1lbnVcbiAgICAgKi9cbiAgICBvcGVuU3VnZ2VzdGlvbk1lbnUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xvc2VTdWdnZXN0aW9uTWVudSgpO1xuICAgICAgICB0aGlzLl9zdWdnZXN0aW9ua2V5TWFuYWdlcj8uZGVzdHJveSgpO1xuICAgICAgICB0aGlzLl9zdWdnZXN0aW9ua2V5TWFuYWdlciA9IG5ldyBGb2N1c0tleU1hbmFnZXIodGhpcy5zdWdnZXN0aW9uSXRlbXMpO1xuICAgICAgICBpZiAodGhpcy5fc2hvd0Ryb3Bkb3duKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjcmVhdGUgb3ZlcmxheVxuICAgICAgICBjb25zdCBvdmVybGF5Q29uZmlnID0gdGhpcy5fY3JlYXRlU3VnZ2V0aW9uT3ZlcmxheUNvbmZpZygpO1xuICAgICAgICB0aGlzLl9zdWdnZXN0aW9uT3ZlcmxheVJlZiA9IHRoaXMuX292ZXJsYXkuY3JlYXRlKG92ZXJsYXlDb25maWcpO1xuXG4gICAgICAgIC8vIGdldCBwb3J0YWwgdG8gYXR0YWNoIHRvIG92ZXJsYXlcbiAgICAgICAgdGhpcy5fc3VnZ2VzdGlvblBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnN1Z2dlc3Rpb25NZW51VGVtcGxhdGUsIHRoaXMuX3ZpZXdDb250YWluZXJSZWYpO1xuICAgICAgICB0aGlzLl9zdWdnZXN0aW9uT3ZlcmxheVJlZi5hdHRhY2godGhpcy5fc3VnZ2VzdGlvblBvcnRhbCk7XG5cbiAgICAgICAgLy8gYWRkIHN1YnNjcmlwdGlvbiB0byBjYXB0dXJlIG91dHNpZGUgY2xpY2tzXG4gICAgICAgIGZyb21FdmVudDxNb3VzZUV2ZW50Pihkb2N1bWVudCwgJ2NsaWNrJylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgISF0aGlzLl9zdWdnZXN0aW9uT3ZlcmxheVJlZiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIXRoaXMuX3N1Z2dlc3Rpb25PdmVybGF5UmVmLm92ZXJsYXlFbGVtZW50LmNvbnRhaW5zKHRhcmdldCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Nob3dEcm9wZG93blxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgICAgICBjb25zdCBmb2N1cyA9ICEodGFyZ2V0LnRhZ05hbWUgPT09ICdJTlBVVCcgJiYgdGhpcy5faW5wdXRJZCAhPT0gdGFyZ2V0LmlkKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlU3VnZ2VzdGlvbk1lbnUoZm9jdXMpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fc2hvd0Ryb3Bkb3duID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9wZW5Nb2JpbGVNb2RlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNob3dEaWFsb2codHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBkaWFsb2dBcHByb3ZlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uSXRlbUNsaWNrKHRoaXMuaW5wdXRUZXh0KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGRpYWxvZ0Rpc21pc3MoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2hvd0RpYWxvZyhmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzaG93RGlhbG9nKGlzT3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc09wZW4gIT09IGlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5pc09wZW4gPSBpc09wZW47XG5cbiAgICAgICAgICAgIHRoaXMuaXNPcGVuQ2hhbmdlLmVtaXQoaXNPcGVuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY2xvc2VTdWdnZXN0aW9uTWVudShmb2N1cyA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9zdWdnZXN0aW9uT3ZlcmxheVJlZikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25PdmVybGF5UmVmLmRldGFjaCgpO1xuICAgICAgICBpZiAoZm9jdXMpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zaG93RHJvcGRvd24gPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNsZWFyVGV4dElucHV0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlucHV0VGV4dCA9ICcnO1xuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMuaW5wdXRDaGFuZ2UuZW1pdCh0aGlzLnNlYXJjaEZpZWxkVmFsdWUpO1xuICAgICAgICB0aGlzLmNhbmNlbFNlYXJjaC5lbWl0KHRoaXMuc2VhcmNoRmllbGRWYWx1ZSk7XG5cbiAgICAgICAgdGhpcy5faXNSZWZyZXNoID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5faXNTZWFyY2hEb25lID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5jbG9zZVN1Z2dlc3Rpb25NZW51KGZhbHNlKTtcbiAgICAgICAgdGhpcy5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NyZWF0ZVN1Z2dldGlvbk92ZXJsYXlDb25maWcoKTogT3ZlcmxheUNvbmZpZyB7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uczogQ29ubmVjdGVkUG9zaXRpb25bXSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJ1xuICAgICAgICAgICAgfVxuICAgICAgICBdO1xuICAgICAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5fb3ZlcmxheVxuICAgICAgICAgICAgLnBvc2l0aW9uKClcbiAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuaW5wdXRHcm91cClcbiAgICAgICAgICAgIC53aXRoTG9ja2VkUG9zaXRpb24oKVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbnMocG9zaXRpb25zKTtcbiAgICAgICAgY29uc3Qgc2Nyb2xsU3RyYXRlZ3kgPSB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpO1xuICAgICAgICByZXR1cm4gbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgICAgICAgcG9zaXRpb25TdHJhdGVneSxcbiAgICAgICAgICAgIHNjcm9sbFN0cmF0ZWd5LFxuICAgICAgICAgICAgYmFja2Ryb3BDbGFzczogJ2Nkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wJyxcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLmlucHV0R3JvdXAubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pbml0aWFsaXplRGF0YVNvdXJjZShkYXRhU291cmNlOiBTZWFyY2hGaWVsZERhdGFTb3VyY2U8YW55Pik6IHZvaWQge1xuICAgICAgICB0aGlzLl9kYXRhU291cmNlQ2hhbmdlZCQubmV4dCgpO1xuICAgICAgICBkYXRhU291cmNlXG4gICAgICAgICAgICAub3BlbigpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwobWVyZ2UodGhpcy5fb25EZXN0cm95JCwgdGhpcy5fZGF0YVNvdXJjZUNoYW5nZWQkKSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZHJvcGRvd25WYWx1ZXMkID0gb2YoZGF0YSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fZGF0YVNvdXJjZSA9IGRhdGFTb3VyY2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiByZXR1cm4gY291bnQgZm9yIG1hdGNoaW5nIHN1Z2dlc3Rpb24gd2l0aCBpbnB1dCB0ZXh0XG4gICAgICogQHJldHVybnMgbnVtYmVyXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0U3VnZ2VzdGlvbnNMZW5ndGgoKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IGNvdW50ID0gMDtcbiAgICAgICAgdGhpcy5fZHJvcGRvd25WYWx1ZXMkLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKHN1Z2dlc3Rpb25zKSA9PiB7XG4gICAgICAgICAgICBzdWdnZXN0aW9ucz8uZm9yRWFjaCgoc3VnZ2VzdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlucHV0VGV4dCAmJiBzdWdnZXN0aW9uPy50b0xvd2VyQ2FzZSgpLmluZGV4T2YodGhpcy5pbnB1dFRleHQ/LnRyaW0oKT8udG9Mb3dlckNhc2UoKSkgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICBjb3VudCsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gY291bnQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGFzeW5jIF91cGRhdGVTZWFyY2hBbm5vdWNlbWVudFRleHQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIC8vIGNyZWF0ZSBzZWFyY2ggc3VnZ2VzdGlvbiBtZXNzYWdlIHdpdGggY291bnQuXG4gICAgICAgIGNvbnN0IHN1Z2dlc3Rpb25Db3VudCA9IHRoaXMuX2dldFN1Z2dlc3Rpb25zTGVuZ3RoKCk7XG4gICAgICAgIGxldCB7IHNlYXJjaFN1Z2dlc3Rpb25NZXNzYWdlLCBzZWFyY2hTdWdnZXN0aW9uTmF2aWdhdGVNZXNzYWdlIH0gPSB0aGlzO1xuICAgICAgICBpZiAoc2VhcmNoU3VnZ2VzdGlvbk1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHNlYXJjaFN1Z2dlc3Rpb25NZXNzYWdlID0gc3VnZ2VzdGlvbkNvdW50ICsgJyAnICsgc2VhcmNoU3VnZ2VzdGlvbk1lc3NhZ2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzZWFyY2hTdWdnZXN0aW9uTWVzc2FnZSB8fCAhc2VhcmNoU3VnZ2VzdGlvbk5hdmlnYXRlTWVzc2FnZSkge1xuICAgICAgICAgICAgY29uc3QgbGFuZyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2xhbmd1YWdlJCk7XG4gICAgICAgICAgICBpZiAoIXNlYXJjaFN1Z2dlc3Rpb25NZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgc2VhcmNoU3VnZ2VzdGlvbk1lc3NhZ2UgPSB0aGlzLl90cmFuc2xhdGlvblJlc29sdmVyLnJlc29sdmUoXG4gICAgICAgICAgICAgICAgICAgIGxhbmcsXG4gICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybVNlYXJjaEZpZWxkLnNlYXJjaFN1Z2dlc3Rpb25NZXNzYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgeyBjb3VudDogc3VnZ2VzdGlvbkNvdW50IH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFzZWFyY2hTdWdnZXN0aW9uTmF2aWdhdGVNZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgc2VhcmNoU3VnZ2VzdGlvbk5hdmlnYXRlTWVzc2FnZSA9IHRoaXMuX3RyYW5zbGF0aW9uUmVzb2x2ZXIucmVzb2x2ZShcbiAgICAgICAgICAgICAgICAgICAgbGFuZyxcbiAgICAgICAgICAgICAgICAgICAgJ3BsYXRmb3JtU2VhcmNoRmllbGQuc2VhcmNoU3VnZ2VzdGlvbk5hdmlnYXRlTWVzc2FnZSdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2N1cnJlbnRTZWFyY2hTdWdnZXN0aW9uQW5ub3VjZW1lbnRNZXNzYWdlID1cbiAgICAgICAgICAgIHNlYXJjaFN1Z2dlc3Rpb25NZXNzYWdlICsgKHN1Z2dlc3Rpb25Db3VudCA+IDAgPyBzZWFyY2hTdWdnZXN0aW9uTmF2aWdhdGVNZXNzYWdlIDogJycpO1xuICAgICAgICBpZiAodGhpcy5pbnB1dFRleHQ/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuX2xpdmVBbm5vdW5jZXIuYW5ub3VuY2UodGhpcy5fY3VycmVudFNlYXJjaFN1Z2dlc3Rpb25Bbm5vdWNlbWVudE1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGFzeW5jIF9zZXRVcE1vYmlsZU1vZGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgICAgICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogU0VBUkNIX0ZJRUxEX0NPTVBPTkVOVCwgdXNlVmFsdWU6IHRoaXMgfV0sXG4gICAgICAgICAgICBwYXJlbnQ6IHRoaXMuX2luamVjdG9yXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2R5bmFtaWNDb21wb25lbnRTZXJ2aWNlLmNyZWF0ZUR5bmFtaWNNb2R1bGUoXG4gICAgICAgICAgICB7IGlucHV0RmllbGRUZW1wbGF0ZTogdGhpcy5pbnB1dEZpZWxkVGVtcGxhdGUsIHN1Z2dlc3Rpb25NZW51VGVtcGxhdGU6IHRoaXMuc3VnZ2VzdGlvbk1lbnVUZW1wbGF0ZSB9LFxuICAgICAgICAgICAgUGxhdGZvcm1TZWFyY2hGaWVsZE1vYmlsZU1vZHVsZSxcbiAgICAgICAgICAgIFNlYXJjaEZpZWxkTW9iaWxlQ29tcG9uZW50LFxuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgICAgIGluamVjdG9yXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgbmFtZTogJ3N1Z2dlc3Rpb25NYXRjaGVzJ1xufSlcbmV4cG9ydCBjbGFzcyBTdWdnZXN0aW9uTWF0Y2hlc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHRyYW5zZm9ybSh2YWx1ZXM6IHN0cmluZ1tdIHwgbnVsbCwgbWF0Y2g6IHN0cmluZywgbW9iaWxlID0gZmFsc2UpOiBzdHJpbmdbXSB7XG4gICAgICAgIGlmICghdmFsdWVzKSB7XG4gICAgICAgICAgICB2YWx1ZXMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobW9iaWxlICYmICFtYXRjaCkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcm9jZXNzZWRNYXRjaCA9IG1hdGNoLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICByZXR1cm4gdmFsdWVzLmZpbHRlcigodmFsdWUpID0+IHZhbHVlLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihwcm9jZXNzZWRNYXRjaCkgPiAtMSk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1vYmlsZSA/IG1vYmlsZVRlbXBsYXRlIDogaW5wdXRGaWVsZFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjbW9iaWxlVGVtcGxhdGU+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0RmllbGRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzZWFyY2hDYXRlZ29yeU1lbnU+XG4gICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImZkcC1zZWFyY2gtZmllbGRfX2NhdGVnb3J5LWJ1dHRvbiBmZC1pbnB1dC1ncm91cF9fYnV0dG9uIGZkLWJ1dHRvbiBmZC1idXR0b24tLW1lbnUge3tcbiAgICAgICAgICAgIGFwcGVhcmFuY2U/LmNhdGVnb3J5QnV0dG9uQ2xhc3NcbiAgICAgICAgfX1cIlxuICAgICAgICBbZmRwTWVudVRyaWdnZXJGb3JdPVwiY2F0ZWdvcnlNZW51XCJcbiAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZmRwLXNlYXJjaC1maWVsZF9fY2F0ZWdvcnktbGFiZWxcIiAqbmdJZj1cIiFoaWRlQ2F0ZWdvcnlMYWJlbFwiPlxuICAgICAgICAgICAge3sgX2N1cnJlbnRDYXRlZ29yeT8ubGFiZWwgfHwgY2F0ZWdvcnlMYWJlbCB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPGZkcC1tZW51ICNjYXRlZ29yeU1lbnU+XG4gICAgICAgIDxmZHAtbWVudS1pdGVtICpuZ0Zvcj1cImxldCBjYXRlZ29yeSBvZiBjYXRlZ29yaWVzXCIgKGl0ZW1TZWxlY3QpPVwic2V0Q3VycmVudENhdGVnb3J5KGNhdGVnb3J5KVwiXG4gICAgICAgICAgICA+e3sgY2F0ZWdvcnkubGFiZWwgfX1cbiAgICAgICAgPC9mZHAtbWVudS1pdGVtPlxuICAgIDwvZmRwLW1lbnU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NlYXJjaENhdGVnb3J5U2VsZWN0PlxuICAgIDxmZC1zZWxlY3RcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNhdGVnb3J5TGFiZWxcIlxuICAgICAgICBbc2VsZWN0Q29udHJvbENsYXNzXT1cImFwcGVhcmFuY2U/LmNhdGVnb3J5QnV0dG9uQ2xhc3NcIlxuICAgICAgICBbc2VsZWN0RHJvcGRvd25CdXR0b25DbGFzc109XCJhcHBlYXJhbmNlPy5jYXRlZ29yeURyb3Bkb3duQnV0dG9uQ2xhc3NcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwic2V0Q3VycmVudENhdGVnb3J5KCRldmVudClcIlxuICAgID5cbiAgICAgICAgPGxpIGZkLW9wdGlvbiAqbmdGb3I9XCJsZXQgY2F0ZWdvcnkgb2YgY2F0ZWdvcmllc1wiIFt2YWx1ZV09XCJjYXRlZ29yeVwiPnt7IGNhdGVnb3J5LmxhYmVsIH19PC9saT5cbiAgICA8L2ZkLXNlbGVjdD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaW5wdXRGaWVsZFRlbXBsYXRlPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJmZHAtc2VhcmNoLWZpZWxkXCJcbiAgICAgICAgW2NsYXNzLndpdGgtY2F0ZWdvcmllc109XCJfc2hvd0NhdGVnb3J5RHJvcGRvd25cIlxuICAgICAgICBbY2xhc3MuaXMtbG9hZGluZ109XCJpc0xvYWRpbmdcIlxuICAgICAgICBbY2xhc3MuaXMtY29tcGFjdF09XCJjb250ZW50RGVuc2l0eU9ic2VydmVyLmlzQ29tcGFjdCQgfCBhc3luY1wiXG4gICAgICAgIFtjbGFzcy5oaWRlLWNhdGVnb3J5LWxhYmVsXT1cImhpZGVDYXRlZ29yeUxhYmVsXCJcbiAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICNpbnB1dEdyb3VwXG4gICAgICAgICAgICBjbGFzcz1cImZkcC1zZWFyY2gtZmllbGRfX2lucHV0LWdyb3VwIGZkLWlucHV0LWdyb3VwIHt7IGFwcGVhcmFuY2U/LnNlYXJjaENsYXNzIH19XCJcbiAgICAgICAgICAgIFtjbGFzcy5pcy1mb2N1c109XCJpc0ZvY3VzZWRcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtaW5wdXQtZ3JvdXBfX2FkZG9uIGZkLWlucHV0LWdyb3VwX19hZGRvbi0tYnV0dG9uIHt7IGFwcGVhcmFuY2U/LnNlYXJjaENhdGVnb3J5Q2xhc3MgfX1cIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiX3Nob3dDYXRlZ29yeURyb3Bkb3duXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjYXRlZ29yeU1vZGUgPT09ICdzZWxlY3QnID8gc2VhcmNoQ2F0ZWdvcnlTZWxlY3QgOiBzZWFyY2hDYXRlZ29yeU1lbnVcIlxuICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgI2lucHV0RmllbGRcbiAgICAgICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmZHAtc2VhcmNoLWZpZWxkX19pbnB1dCBmZC1pbnB1dCBmZC1pbnB1dC1ncm91cF9faW5wdXQge3sgYXBwZWFyYW5jZT8uc2VhcmNoRmllbGRDbGFzcyB9fVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiX2lucHV0SWRcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cIl9tZW51SWRcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiX3Nob3dEcm9wZG93biA/ICd0cnVlJyA6ICdmYWxzZSdcIlxuICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvblNlYXJjaFN1Ym1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImlucHV0VGV4dFwiXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwibW9iaWxlICYmIG9wZW5Nb2JpbGVNb2RlKClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1pbnB1dC1ncm91cF9fYWRkb24gZmQtaW5wdXQtZ3JvdXBfX2FkZG9uLS1idXR0b24ge3sgYXBwZWFyYW5jZT8uYWRkb25DbGFzcyB9fVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpbnB1dFRleHQgJiYgaW5wdXRUZXh0Lmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVNlYXJjaEZpZWxkLmNsZWFyQnV0dG9uVGl0bGUnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkcC1zZWFyY2gtZmllbGRfX2NsZWFyIGZkLWJ1dHRvbiBmZC1idXR0b24tLXRyYW5zcGFyZW50IHt7IGFwcGVhcmFuY2U/LmJ1dHRvbkNsYXNzIH19XCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZkLWlucHV0LWdyb3VwX19idXR0b25dPVwiIWFwcGVhcmFuY2U/LnJlbW92ZUdyb3VwQnV0dG9uQ2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cIl9jbGVhcklkXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyVGV4dElucHV0KClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGZkLWljb24gZ2x5cGg9XCJkZWNsaW5lXCI+PC9mZC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWlucHV0LWdyb3VwX19hZGRvbiBmZC1pbnB1dC1ncm91cF9fYWRkb24tLWJ1dHRvbiB7eyBhcHBlYXJhbmNlPy5hZGRvbkNsYXNzIH19IHt7XG4gICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U/LnNlYXJjaFN1Ym1pdENsYXNzXG4gICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZm9yY2VTZWFyY2hCdXR0b24gfHwgaXNMb2FkaW5nIHx8ICghaXNMb2FkaW5nICYmICFfaXNTZWFyY2hEb25lKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFkaXNhYmxlU2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidwbGF0Zm9ybVNlYXJjaEZpZWxkLnN1Ym1pdEJ1dHRvblRpdGxlJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZHAtc2VhcmNoLWZpZWxkX19zdWJtaXQgZmQtYnV0dG9uIGZkLWJ1dHRvbi0tdHJhbnNwYXJlbnQge3sgYXBwZWFyYW5jZT8uYnV0dG9uQ2xhc3MgfX1cIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmQtaW5wdXQtZ3JvdXBfX2J1dHRvbl09XCIhYXBwZWFyYW5jZT8ucmVtb3ZlR3JvdXBCdXR0b25DbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cIl9zdWJtaXRJZFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VhcmNoU3VibWl0KClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGZkLWljb24gZ2x5cGg9XCJzZWFyY2hcIj48L2ZkLWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtaW5wdXQtZ3JvdXBfX2FkZG9uIGZkLWlucHV0LWdyb3VwX19hZGRvbi0tYnV0dG9uIHt7IGFwcGVhcmFuY2U/LmFkZG9uQ2xhc3MgfX0ge3tcbiAgICAgICAgICAgICAgICAgICAgYXBwZWFyYW5jZT8uc2VhcmNoU3VibWl0Q2xhc3NcbiAgICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhZGlzYWJsZVJlZnJlc2ggJiYgIWlzTG9hZGluZyAmJiAoX2lzUmVmcmVzaCB8fCBfaXNTZWFyY2hEb25lKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ3BsYXRmb3JtU2VhcmNoRmllbGQuc3luY2hyb25pemVCdXR0b25UaXRsZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmRwLXNlYXJjaC1maWVsZF9fbG9hZGluZyBmZC1pbnB1dC1ncm91cF9fYnV0dG9uIGZkLWJ1dHRvbiBmZC1idXR0b24tLXRyYW5zcGFyZW50IHt7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPy5idXR0b25DbGFzc1xuICAgICAgICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiX3JlZnJlc2hJZFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlYXJjaFN1Ym1pdCgpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1pY29uIGdseXBoPVwic3luY2hyb25pemVcIj48L2ZkLWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzdWdnZXN0aW9uTWVudVRlbXBsYXRlPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJmZHAtc2VhcmNoLWZpZWxkX19zdWdnZXN0aW9uLWRyb3Bkb3duXCJcbiAgICAgICAgW2F0dHIuZGlyXT1cIl9kaXJcIlxuICAgICAgICAqbmdJZj1cIihfZHJvcGRvd25WYWx1ZXMkIHwgYXN5bmMgfCBzdWdnZXN0aW9uTWF0Y2hlcyA6IGlucHV0VGV4dCA6IG1vYmlsZSk/Lmxlbmd0aFwiXG4gICAgPlxuICAgICAgICA8bmF2XG4gICAgICAgICAgICBjbGFzcz1cImZkLW1lbnVcIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICBbY2xhc3MuaXMtY29tcGFjdF09XCJjb250ZW50RGVuc2l0eU9ic2VydmVyLmlzQ29tcGFjdCQgfCBhc3luY1wiXG4gICAgICAgICAgICBbY2xhc3MuZmQtbWVudS0tbW9iaWxlXT1cIm1vYmlsZVwiXG4gICAgICAgICAgICBbY2xhc3MuZmQtbWVudS0tb3ZlcmZsb3ddPVwiIW1vYmlsZVwiXG4gICAgICAgICAgICBbYXR0ci5pZF09XCJfbWVudUlkXCJcbiAgICAgICAgICAgICNtZW51XG4gICAgICAgICAgICAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImZkLW1lbnVfX2xpc3RcIiByb2xlPVwibWVudVwiPlxuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICBmZHBTZWFyY2hGaWVsZFN1Z2dlc3Rpb25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZHAtc2VhcmNoLWZpZWxkX19zdWdnZXN0aW9uLWl0ZW0gZmQtbWVudV9faXRlbSBmZC1tZW51X19saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHZhbHVlIG9mIF9kcm9wZG93blZhbHVlcyQgfCBhc3luYyB8IHN1Z2dlc3Rpb25NYXRjaGVzIDogaW5wdXRUZXh0IDogbW9iaWxlXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwib25JdGVtQ2xpY2sodmFsdWUpOyAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duLnRhYik9XCJvbkl0ZW1DbGljayh2YWx1ZSlcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5dXAuc3BhY2UpPVwib25JdGVtQ2xpY2sodmFsdWUpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25JdGVtQ2xpY2sodmFsdWUpXCJcbiAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJ2YWx1ZSB8IGhpZ2hsaWdodCA6IGlucHV0VGV4dCA6IHRydWUgOiB0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm1lbnVpdGVtXCJcbiAgICAgICAgICAgICAgICA+PC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvbmF2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|