@dsivd/prestations-ng 14.5.23-beta8 → 14.5.23-beta9

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.
@@ -56,14 +56,11 @@ export class FoehnMultiselectAutocompleteComponent extends FoehnAutocompleteComp
56
56
  }
57
57
  }
58
58
  }
59
- removeItem(item) {
60
- const index = this.model.indexOf(item);
61
- if (index > -1) {
62
- this.model.splice(index, 1);
63
- this.triggerUserInput(this.model);
64
- this.manageSuggestionListAndFocusAfterRemovingAnItem();
65
- this.manageScreenReaderAnnouncement(item, true);
66
- }
59
+ removeItem(item, index) {
60
+ this.model.splice(index, 1);
61
+ this.triggerUserInput(this.model);
62
+ this.manageSuggestionListAndFocusAfterRemovingAnItem(index);
63
+ this.manageScreenReaderAnnouncement(item, true);
67
64
  }
68
65
  trackByFn(index) {
69
66
  return index;
@@ -109,6 +106,25 @@ export class FoehnMultiselectAutocompleteComponent extends FoehnAutocompleteComp
109
106
  }
110
107
  return this.model;
111
108
  }
109
+ focusNextAreaAfterDelete(removedIndex) {
110
+ // Adjust index depending on default elements that are not deletable
111
+ if (!!this.defaultElementValues) {
112
+ removedIndex -= this.defaultElementValues.length;
113
+ }
114
+ const closeButtonsElemRefArray = [...this.selectedElemRef.toArray()];
115
+ // Need to find an element to focus on
116
+ if (removedIndex === closeButtonsElemRefArray.length) {
117
+ if (!!closeButtonsElemRefArray.length) {
118
+ return closeButtonsElemRefArray[removedIndex - 1].nativeElement.focus();
119
+ }
120
+ const defaultElemRefArray = [...this.defaultElemRef.toArray()];
121
+ if (!!defaultElemRefArray.length) {
122
+ return defaultElemRefArray[defaultElemRefArray.length - 1].nativeElement.focus();
123
+ }
124
+ return this.defaultFocusArea.nativeElement.focus();
125
+ }
126
+ // Otherwise focus element by DOM replacement
127
+ }
112
128
  filterAutocompleteElements(elements) {
113
129
  const filteredElements = ObjectHelper.deepCopy(elements);
114
130
  if (!!this.model && !!this.model.length) {
@@ -141,7 +157,7 @@ export class FoehnMultiselectAutocompleteComponent extends FoehnAutocompleteComp
141
157
  });
142
158
  }
143
159
  }
144
- manageSuggestionListAndFocusAfterRemovingAnItem() {
160
+ manageSuggestionListAndFocusAfterRemovingAnItem(removedIndex) {
145
161
  // Hide message saying no more suggestions to display
146
162
  this.showEmptyListMessage = false;
147
163
  // Manually show autocomplete because there is at least one suggestions to display
@@ -150,10 +166,7 @@ export class FoehnMultiselectAutocompleteComponent extends FoehnAutocompleteComp
150
166
  this.autocompleteComponent.elements = this.filterAutocompleteElements(this.elements);
151
167
  // When deleting a selected item, check were to set focus back when no more items to delete
152
168
  this.selectedElemRef.changes.pipe(first()).subscribe(() => {
153
- const selectedElemRefArray = [...this.selectedElemRef.toArray()];
154
- if (!selectedElemRefArray.length && !!this.selectedItemsArea) {
155
- this.selectedItemsArea.nativeElement.focus();
156
- }
169
+ this.focusNextAreaAfterDelete(removedIndex);
157
170
  });
158
171
  }
159
172
  showAlertMessageAndHideAutocomplete() {
@@ -183,7 +196,7 @@ FoehnMultiselectAutocompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVer
183
196
  useExisting: forwardRef(() => FoehnMultiselectAutocompleteComponent),
184
197
  multi: true
185
198
  }
186
- ], viewQueries: [{ propertyName: "autocompleteComponent", first: true, predicate: ["autocompleteComponent"], descendants: true }, { propertyName: "alertMessageContainer", first: true, predicate: ["alertMessageContainer"], descendants: true }, { propertyName: "selectedItemsArea", first: true, predicate: ["selectedItemsArea"], descendants: true }, { propertyName: "selectedElemRef", predicate: ["selectedElemRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<foehn-autocomplete\n #autocompleteComponent\n [name]=\"name\"\n [label]=\"label\"\n [elements]=\"elements\"\n [elementsUrl]=\"elementsUrl\"\n [elementValue]=\"elementValue\"\n [elementLabel]=\"elementLabel\"\n [elementValueIdentity]=\"elementValueIdentity\"\n [elementDisabled]=\"elementDisabled\"\n [allElementDisabled]=\"allElementDisabled\"\n [elementGroup]=\"elementGroup\"\n [allowCustomValue]=\"false\"\n [searchValueMinCharsCount]=\"searchValueMinCharsCount\"\n [customValueModelGenerator]=\"customValueModelGenerator\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n (userInput)=\"addItem($event)\"\n [(model)]=\"autocompleteInputValue\"\n (elementsLoaded)=\"onAutocompleteElementsLoaded($event)\"\n>\n <small\n *ngIf=\"!showEmptyListMessage\"\n [attr.id]=\"buildChildId('Help')\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText ? helpText : 'foehn-multiselect-autocomplete.autocomplete.screen-reader.label' | fromDictionary\"\n ></small>\n\n <div\n [id]=\"buildChildId('AlertMessageContainer')\"\n role=\"status\"\n #alertMessageContainer\n >\n <p\n *ngIf=\"showEmptyListMessage\"\n class=\"alert alert-info\"\n tabindex=\"0\"\n >{{'foehn-multiselect-autocomplete.autocomplete.empty-message' | fromDictionary}}</p>\n </div>\n</foehn-autocomplete>\n\n<p\n class=\"sr-only\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n>\n {{srAnnouncements}}\n</p>\n\n<div\n role=\"presentation\"\n class=\"selected-list-container d-flex align-content-stretch flex-wrap\"\n [ngClass]=\"!!model && !!model.length ? 'mb-2' : 'mb-0'\"\n #selectedItemsArea\n>\n <ng-container *ngFor=\"let element of model; let index = index; trackBy: trackByFn\">\n <span\n *ngIf=\"!canBeDeleted(index)\"\n class=\"badge badge-pill badge-secondary mr-1 mb-1 py-2 px-3 d-flex align-items-center\"\n [tabindex]=\"disabled ? -1 : 0\"\n [attr.aria-describedby]=\"buildChildId('Label')\"\n >\n {{getLabel(element)}}\n </span>\n <button\n *ngIf=\"canBeDeleted(index)\"\n class=\"btn btn-secondary badge badge-pill mr-1 mb-1 py-2 px-3 d-flex align-items-center\"\n [tabindex]=\"0\"\n [attr.aria-label]=\"getDeleteButtonAriaLabel(element)\"\n [attr.aria-describedby]=\"buildChildId('Label')\"\n [title]=\"getDeleteButtonAriaLabel(element)\"\n (click)=\"removeItem(element)\"\n #selectedElemRef\n >\n {{getLabel(element)}}\n <foehn-icon-times\n aria-hidden=\"true\"\n class=\"ml-2\"\n [title]=\"getDeleteButtonAriaLabel(element)\"\n ></foehn-icon-times>\n </button>\n </ng-container>\n</div>\n", styles: ["foehn-autocomplete p.alert:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem #ffbf47}.selected-list-container button>.btn,.btn-link{line-height:inherit;padding:0}.selected-list-container .btn{text-transform:none}.selected-list-container span.badge-pill:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem #ffbf47}\n"], components: [{ type: i2.FoehnAutocompleteComponent, selector: "foehn-autocomplete", inputs: ["searchValueMinCharsCount", "allowCustomValue", "customValueModelGenerator"] }, { type: i3.FoehnIconTimesComponent, selector: "foehn-icon-times" }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "fromDictionary": i5.SdkDictionaryPipe } });
199
+ ], viewQueries: [{ propertyName: "autocompleteComponent", first: true, predicate: ["autocompleteComponent"], descendants: true }, { propertyName: "alertMessageContainer", first: true, predicate: ["alertMessageContainer"], descendants: true }, { propertyName: "defaultFocusArea", first: true, predicate: ["defaultFocusArea"], descendants: true }, { propertyName: "selectedElemRef", predicate: ["selectedElemRef"], descendants: true }, { propertyName: "defaultElemRef", predicate: ["defaultElemRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<foehn-autocomplete\n #autocompleteComponent\n [name]=\"name\"\n [label]=\"label\"\n [elements]=\"elements\"\n [elementsUrl]=\"elementsUrl\"\n [elementValue]=\"elementValue\"\n [elementLabel]=\"elementLabel\"\n [elementValueIdentity]=\"elementValueIdentity\"\n [elementDisabled]=\"elementDisabled\"\n [allElementDisabled]=\"allElementDisabled\"\n [elementGroup]=\"elementGroup\"\n [allowCustomValue]=\"false\"\n [searchValueMinCharsCount]=\"searchValueMinCharsCount\"\n [customValueModelGenerator]=\"customValueModelGenerator\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n (userInput)=\"addItem($event)\"\n [(model)]=\"autocompleteInputValue\"\n (elementsLoaded)=\"onAutocompleteElementsLoaded($event)\"\n>\n <small\n *ngIf=\"!showEmptyListMessage\"\n [attr.id]=\"buildChildId('Help')\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText ? helpText : 'foehn-multiselect-autocomplete.autocomplete.screen-reader.label' | fromDictionary\"\n ></small>\n\n <div\n [id]=\"buildChildId('AlertMessageContainer')\"\n role=\"status\"\n #alertMessageContainer\n >\n <p\n *ngIf=\"showEmptyListMessage\"\n class=\"alert alert-info\"\n tabindex=\"0\"\n >{{'foehn-multiselect-autocomplete.autocomplete.empty-message' | fromDictionary}}</p>\n </div>\n</foehn-autocomplete>\n\n<p\n class=\"sr-only\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n>\n {{srAnnouncements}}\n</p>\n\n<div\n role=\"presentation\"\n class=\"selected-list-container d-flex align-content-stretch flex-wrap\"\n [ngClass]=\"!!model && !!model.length ? 'mb-2' : 'mb-0'\"\n>\n <span\n *ngIf=\"(!defaultElementValues || !defaultElementValues.length) && (!model || !model.length)\"\n class=\"sr-only\"\n [tabindex]=\"disabled ? -1 : 0\"\n [innerHTML]=\"'foehn-multiselect-autocomplete.sr-default-focus.no-element-to-delete' | fromDictionary\"\n #defaultFocusArea\n ></span>\n <ng-container *ngFor=\"let element of model; let index = index; trackBy: trackByFn\">\n <span\n *ngIf=\"!canBeDeleted(index)\"\n class=\"badge badge-pill badge-secondary mr-1 mb-1 py-2 px-3 d-flex align-items-center\"\n [tabindex]=\"disabled ? -1 : 0\"\n [attr.aria-describedby]=\"buildChildId('Label')\"\n #defaultElemRef\n >\n {{getLabel(element)}}\n <span class=\"sr-only\">\n {{'foehn-multiselect-autocomplete.sr-default-selected-element' | fromDictionary}}\n </span>\n </span>\n <button\n *ngIf=\"canBeDeleted(index)\"\n class=\"btn btn-secondary badge badge-pill mr-1 mb-1 py-2 px-3 d-flex align-items-center\"\n [tabindex]=\"0\"\n [attr.aria-label]=\"getDeleteButtonAriaLabel(element)\"\n [attr.aria-describedby]=\"buildChildId('Label')\"\n [title]=\"getDeleteButtonAriaLabel(element)\"\n (click)=\"removeItem(element, index)\"\n #selectedElemRef\n >\n {{getLabel(element)}}\n <foehn-icon-times\n aria-hidden=\"true\"\n class=\"ml-2\"\n [title]=\"getDeleteButtonAriaLabel(element)\"\n ></foehn-icon-times>\n </button>\n </ng-container>\n</div>\n", styles: ["foehn-autocomplete p.alert:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem #ffbf47}.selected-list-container button>.btn,.btn-link{line-height:inherit;padding:0}.selected-list-container .btn{text-transform:none}.selected-list-container span.badge-pill:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem #ffbf47}\n"], components: [{ type: i2.FoehnAutocompleteComponent, selector: "foehn-autocomplete", inputs: ["searchValueMinCharsCount", "allowCustomValue", "customValueModelGenerator"] }, { type: i3.FoehnIconTimesComponent, selector: "foehn-icon-times" }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "fromDictionary": i5.SdkDictionaryPipe } });
187
200
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: FoehnMultiselectAutocompleteComponent, decorators: [{
188
201
  type: Component,
189
202
  args: [{
@@ -207,12 +220,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImpor
207
220
  }], selectedElemRef: [{
208
221
  type: ViewChildren,
209
222
  args: ['selectedElemRef']
210
- }], selectedItemsArea: [{
223
+ }], defaultElemRef: [{
224
+ type: ViewChildren,
225
+ args: ['defaultElemRef']
226
+ }], defaultFocusArea: [{
211
227
  type: ViewChild,
212
- args: ['selectedItemsArea']
228
+ args: ['defaultFocusArea']
213
229
  }], defaultElementValues: [{
214
230
  type: Input
215
231
  }], defaultElementValue: [{
216
232
  type: Input
217
233
  }] } });
218
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUvZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUvZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsVUFBVSxFQUFFLEtBQUssRUFBcUIsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNySCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUNoRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFeEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBY3ZDLE1BQU0sT0FBTyxxQ0FBc0MsU0FBUSwwQkFBMEI7SUF3Q2pGLFlBQVksTUFBYyxFQUFVLGlCQUF1QztRQUN2RSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFEa0Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtRQVIzRSx5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDN0Isb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFLSiw4Q0FBeUMsR0FBRyxJQUFJLENBQUM7SUFJbEUsQ0FBQztJQTVCRCxJQUNJLG9CQUFvQixDQUFDLEtBQWdCO1FBQ3JDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLEdB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LG1lQ2pCTCw4M0ZBbUZBOzJGRGhFYSxxQ0FBcUM7a0JBWmpELFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGdDQUFnQztvQkFDMUMsV0FBVyxFQUFFLGlEQUFpRDtvQkFDOUQsU0FBUyxFQUFFLENBQUMsZ0RBQWdELENBQUM7b0JBQzdELFNBQVMsRUFBRTt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsbUJBQW1COzRCQUM1QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxzQ0FBc0MsQ0FBQzs0QkFDcEUsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7cUJBQ0o7aUJBQ0o7Z0lBSVcscUJBQXFCO3NCQUQ1QixTQUFTO3VCQUFDLHVCQUF1QjtnQkFJMUIscUJBQXFCO3NCQUQ1QixTQUFTO3VCQUFDLHVCQUF1QjtnQkFJMUIsZUFBZTtzQkFEdEIsWUFBWTt1QkFBQyxpQkFBaUI7Z0JBSXZCLGlCQUFpQjtzQkFEeEIsU0FBUzt1QkFBQyxtQkFBbUI7Z0JBSTFCLG9CQUFvQjtzQkFEdkIsS0FBSztnQkFhRixtQkFBbUI7c0JBRHRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGZvcndhcmRSZWYsIElucHV0LCBOZ1pvbmUsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvZWhuSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9laG5BdXRvY29tcGxldGVDb21wb25lbnQgfSBmcm9tICcuLi9mb2Vobi1hdXRvY29tcGxldGUvZm9laG4tYXV0b2NvbXBsZXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPYmplY3RIZWxwZXIgfSBmcm9tICcuLi9oZWxwZXJzL29iamVjdC5oZWxwZXInO1xuaW1wb3J0IHsgU2RrRGljdGlvbmFyeVNlcnZpY2UgfSBmcm9tICcuLi9zZGstZGljdGlvbmFyeS9zZGstZGljdGlvbmFyeS5zZXJ2aWNlJztcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5jc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRm9laG5JbnB1dENvbXBvbmVudCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZvZWhuTXVsdGlzZWxlY3RBdXRvY29tcGxldGVDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRm9laG5NdWx0aXNlbGVjdEF1dG9jb21wbGV0ZUNvbXBvbmVudCBleHRlbmRzIEZvZWhuQXV0b2NvbXBsZXRlQ29tcG9uZW50IHtcblxuICAgIEBWaWV3Q2hpbGQoJ2F1dG9jb21wbGV0ZUNvbXBvbmVudCcpXG4gICAgcHJpdmF0ZSBhdXRvY29tcGxldGVDb21wb25lbnQ6IEZvZWhuQXV0b2NvbXBsZXRlQ29tcG9uZW50O1xuXG4gICAgQFZpZXdDaGlsZCgnYWxlcnRNZXNzYWdlQ29udGFpbmVyJylcbiAgICBwcml2YXRlIGFsZXJ0TWVzc2FnZUNvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGRyZW4oJ3NlbGVjdGVkRWxlbVJlZicpXG4gICAgcHJpdmF0ZSBzZWxlY3RlZEVsZW1SZWY6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcblxuICAgIEBWaWV3Q2hpbGQoJ3NlbGVjdGVkSXRlbXNBcmVhJylcbiAgICBwcml2YXRlIHNlbGVjdGVkSXRlbXNBcmVhOiBFbGVtZW50UmVmO1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgZGVmYXVsdEVsZW1lbnRWYWx1ZXMoaXRlbXM6IHVua25vd25bXSkge1xuICAgICAgICB0aGlzLmRlZmF1bHRFbGVtZW50VmFsdWVzXyA9IFsuLi5pdGVtc107XG4gICAgICAgIGlmICgoIXRoaXMubW9kZWwgfHwgIXRoaXMubW9kZWwubGVuZ3RoKSAmJiBpdGVtcykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVOZ01vZGVsKGl0ZW1zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBkZWZhdWx0RWxlbWVudFZhbHVlcygpOiB1bmtub3duW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0RWxlbWVudFZhbHVlc187XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgZGVmYXVsdEVsZW1lbnRWYWx1ZShpdGVtOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5kZWZhdWx0RWxlbWVudFZhbHVlcyA9IFtpdGVtXTtcbiAgICB9XG5cbiAgICBhdXRvY29tcGxldGVJbnB1dFZhbHVlOiBzdHJpbmc7XG4gICAgc2hvd0VtcHR5TGlzdE1lc3NhZ2UgPSBmYWxzZTtcbiAgICBzckFubm91bmNlbWVudHMgPSAnJztcblxuICAgIHByaXZhdGUgZGVmYXVsdEVsZW1lbnRWYWx1ZXNfOiB1bmtub3duW107XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcml2YXRlIHNyQW5ub3VuY2VtZW50Q2xlYXJUaW1lcjogYW55O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgU1JfQU5OT1VOQ0VNRU5UX0NMRUFSX1RJTUVPVVRfSU5URVJWQUxfTVMgPSAyMDAwO1xuXG4gICAgY29uc3RydWN0b3Iobmdab25lOiBOZ1pvbmUsIHByaXZhdGUgZGljdGlvbmFyeVNlcnZpY2U6IFNka0RpY3Rpb25hcnlTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKG5nWm9uZSk7XG4gICAgfVxuXG4gICAgdXBkYXRlTXVsdGlzZWxlY3RBdXRvY29tcGxldGUoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbGlkVmFsdWUgPSB0aGlzLmdldFZhbGlkVmFsdWUoKTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWxpZFZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVOZ01vZGVsKHZhbGlkVmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFuZGxlVXNlcklucHV0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWxpZFZhbHVlID0gdGhpcy5nZXRWYWxpZFZhbHVlKCk7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsaWRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlKHZhbGlkVmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWRkSXRlbShpdGVtOiB1bmtub3duKTogdm9pZCB7XG4gICAgICAgIGlmICghIWl0ZW0pIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5tb2RlbCkge1xuICAgICAgICAgICAgICAgIHRoaXMubW9kZWwgPSBbXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLm1vZGVsLmluZGV4T2YoaXRlbSk7XG4gICAgICAgICAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb2RlbC5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTXVsdGlzZWxlY3RBdXRvY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVVzZXJJbnB1dCgpO1xuICAgICAgICAgICAgICAgIHRoaXMubWFuYWdlU3VnZ2VzdGlvbkxpc3RBbmRGb2N1c0FmdGVyQWRkaW5nQW5JdGVtKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5tYW5hZ2VTY3JlZW5SZWFkZXJBbm5vdW5jZW1lbnQoaXRlbSwgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVtb3ZlSXRlbShpdGVtOiB1bmtub3duKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5tb2RlbC5pbmRleE9mKGl0ZW0pO1xuICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgdGhpcy5tb2RlbC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgdGhpcy50cmlnZ2VyVXNlcklucHV0KHRoaXMubW9kZWwpO1xuICAgICAgICAgICAgdGhpcy5tYW5hZ2VTdWdnZXN0aW9uTGlzdEFuZEZvY3VzQWZ0ZXJSZW1vdmluZ0FuSXRlbSgpO1xuICAgICAgICAgICAgdGhpcy5tYW5hZ2VTY3JlZW5SZWFkZXJBbm5vdW5jZW1lbnQoaXRlbSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0cmFja0J5Rm4oaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSxAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtbW9kdWxlLWJvdW5kYXJ5LXR5cGVzXG4gICAgZ2V0TGFiZWwodmFsdWU6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGVsZW0gPSB0aGlzLmZpbmRFbGVtZW50QnlNb2RlbEl0ZW0odmFsdWUpO1xuICAgICAgICByZXR1cm4gc3VwZXIuZ2V0TGFiZWwoZWxlbSk7XG4gICAgfVxuXG4gICAgY2FuQmVEZWxldGVkKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmRpc2FibGVkICYmICghdGhpcy5kZWZhdWx0RWxlbWVudFZhbHVlcyB8fCAhdGhpcy5kZWZhdWx0RWxlbWVudFZhbHVlcy5pbmNsdWRlcyh0aGlzLm1vZGVsW2luZGV4XSkpO1xuICAgIH1cblxuICAgIG9uQXV0b2NvbXBsZXRlRWxlbWVudHNMb2FkZWQoZWxlbWVudHM6IFtdKTogdm9pZCB7XG4gICAgICAgIC8vIE5lZWQgdG8gd2FpdCBmb3IgY2hpbGRWaWV3IHRvIGJlIGxvYWRlZFxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICghIXRoaXMuYXV0b2NvbXBsZXRlQ29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb21wb25lbnQuZWxlbWVudHMgPSB0aGlzLmZpbHRlckF1dG9jb21wbGV0ZUVsZW1lbnRzKGVsZW1lbnRzKTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMuYXV0b2NvbXBsZXRlQ29tcG9uZW50LmVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dBbGVydE1lc3NhZ2VBbmRIaWRlQXV0b2NvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXREZWxldGVCdXR0b25BcmlhTGFiZWwoZWxlbWVudDogdW5rbm93bik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoJ2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5zZWxlY3RlZC5kZWxldGUnLFxuICAgICAgICAgICAgeyBlbGVtZW50TGFiZWw6IHRoaXMuZ2V0TGFiZWwoZWxlbWVudCkgfSl9YDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmRFbGVtZW50QnlNb2RlbEl0ZW0oaXRlbTogdW5rbm93bik6IHVua25vd24ge1xuICAgICAgICBpZiAoISF0aGlzLmVsZW1lbnRzICYmICEhdGhpcy5lbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1WYWx1ZTogdW5rbm93biA9IHR5cGVvZiBpdGVtICE9PSAnb2JqZWN0JyA/IGl0ZW0gOiB0aGlzLmdldFZhbHVlKGl0ZW0pO1xuICAgICAgICAgICAgY29uc3QgZWxlbSA9IHRoaXMuZWxlbWVudHMuZmluZCgoZWxlbWVudDogdW5rbm93bikgPT4gdGhpcy5nZXRWYWx1ZShlbGVtZW50KSA9PT0gaXRlbVZhbHVlKTtcbiAgICAgICAgICAgIGlmICghIWVsZW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFZhbGlkVmFsdWUoKTogbnVtYmVyW10gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIXRoaXMubW9kZWwgfHwgIXRoaXMubW9kZWwubGVuZ3RoXG4gICAgICAgICkge1xuICAgICAgICAgICAgaWYgKHRoaXMubW9kZWxfICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbHRlckF1dG9jb21wbGV0ZUVsZW1lbnRzKGVsZW1lbnRzOiBbXSk6IHVua25vd24ge1xuICAgICAgICBjb25zdCBmaWx0ZXJlZEVsZW1lbnRzID0gT2JqZWN0SGVscGVyLmRlZXBDb3B5KGVsZW1lbnRzKTtcblxuICAgICAgICBpZiAoISF0aGlzLm1vZGVsICYmICEhdGhpcy5tb2RlbC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubW9kZWwuZm9yRWFjaCgoc2VsZWN0ZWQ6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtpbmRleCwgdmFsdWVdIG9mIGZpbHRlcmVkRWxlbWVudHMuZW50cmllcygpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW0gPSB0aGlzLmZpbmRFbGVtZW50QnlNb2RlbEl0ZW0oc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0SGVscGVyLmlzRXF1YWwoZWxlbSwgdmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZEVsZW1lbnRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkRWxlbWVudHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtYW5hZ2VTdWdnZXN0aW9uTGlzdEFuZEZvY3VzQWZ0ZXJBZGRpbmdBbkl0ZW0oKTogdm9pZCB7XG4gICAgICAgIC8vIEVtcHR5IGF1dG9jb21wbGV0ZSBpbnB1dFxuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUlucHV0VmFsdWUgPSBudWxsO1xuICAgICAgICAvLyBSZW1vdmUgc2VsZWN0ZWQgaXRlbSBmcm9tIGF1dG9jb21wbGV0ZSBzdWdnZXN0aW9uIGxpc3RcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb21wb25lbnQuZWxlbWVudHMgPSB0aGlzLmZpbHRlckF1dG9jb21wbGV0ZUVsZW1lbnRzKHRoaXMuZWxlbWVudHMpO1xuICAgICAgICAvLyBDaGVjayBpZiB3ZSBzdGlsbCBoYXZlIHN1Z2dlc3Rpb25zIHRvIGRpc3BsYXlcbiAgICAgICAgaWYgKCF0aGlzLmF1dG9jb21wbGV0ZUNvbXBvbmVudC5lbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0FsZXJ0TWVzc2FnZUFuZEhpZGVBdXRvY29tcGxldGUoKTtcbiAgICAgICAgICAgIC8vIE5lZWQgc2V0VGltZW91dCB0byBlbnN1cmUgYWxlcnQgbWVzc2FnZSBpcyBvbiB0aGUgRE9NIGFuZCBjYW4gYmUgZm9jdXNhYmxlXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhbGVydE1lc3NhZ2U6IEhUTUxFbGVtZW50ID0gdGhpcy5hbGVydE1lc3NhZ2VDb250YWluZXIubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdwJyk7XG4gICAgICAgICAgICAgICAgaWYgKGFsZXJ0TWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgICBhbGVydE1lc3NhZ2UuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbWFuYWdlU3VnZ2VzdGlvbkxpc3RBbmRGb2N1c0FmdGVyUmVtb3ZpbmdBbkl0ZW0oKTogdm9pZCB7XG4gICAgICAgIC8vIEhpZGUgbWVzc2FnZSBzYXlpbmcgbm8gbW9yZSBzdWdnZXN0aW9ucyB0byBkaXNwbGF5XG4gICAgICAgIHRoaXMuc2hvd0VtcHR5TGlzdE1lc3NhZ2UgPSBmYWxzZTtcbiAgICAgICAgLy8gTWFudWFsbHkgc2hvdyBhdXRvY29tcGxldGUgYmVjYXVzZSB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgc3VnZ2VzdGlvbnMgdG8gZGlzcGxheVxuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbXBvbmVudC5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5oaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgLy8gQWRkIGJhY2sgc2VsZWN0ZWQgaXRlbSB0byBhdXRvY29tcGxldGUgc3VnZ2VzdGlvbiBsaXN0XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29tcG9uZW50LmVsZW1lbnRzID0gdGhpcy5maWx0ZXJBdXRvY29tcGxldGVFbGVtZW50cyh0aGlzLmVsZW1lbnRzKTtcbiAgICAgICAgLy8gV2hlbiBkZWxldGluZyBhIHNlbGVjdGVkIGl0ZW0sIGNoZWNrIHdlcmUgdG8gc2V0IGZvY3VzIGJhY2sgd2hlbiBubyBtb3JlIGl0ZW1zIHRvIGRlbGV0ZVxuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbVJlZi5jaGFuZ2VzLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbVJlZkFycmF5ID0gWy4uLnRoaXMuc2VsZWN0ZWRFbGVtUmVmLnRvQXJyYXkoKV07XG4gICAgICAgICAgICBpZiAoIXNlbGVjdGVkRWxlbVJlZkFycmF5Lmxlbmd0aCAmJiAhIXRoaXMuc2VsZWN0ZWRJdGVtc0FyZWEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXNBcmVhLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzaG93QWxlcnRNZXNzYWdlQW5kSGlkZUF1dG9jb21wbGV0ZSgpOiB2b2lkIHtcbiAgICAgICAgLy8gU2hvdyBhIG1lc3NhZ2UgdG8gdXNlciBpbmRpY2F0aW5nIHRoZXJlIGlzIG5vIG1vcmUgc3VnZ2VzdGlvbnMgdG8gZGlzcGxheVxuICAgICAgICB0aGlzLnNob3dFbXB0eUxpc3RNZXNzYWdlID0gdHJ1ZTtcbiAgICAgICAgLy8gTWFudWFsbHkgcmVzZXQgYW5kIGhpZGUgYXV0b2NvbXBsZXRlIGJlY2F1c2UgdGhlcmUgaXMgbm8gbW9yZSBzdWdnZXN0aW9ucyB0byBkaXNwbGF5XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlSW5wdXRWYWx1ZSA9IG51bGw7XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29tcG9uZW50LmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmhpZGRlbiA9IHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtYW5hZ2VTY3JlZW5SZWFkZXJBbm5vdW5jZW1lbnQoZWxlbWVudDogdW5rbm93biwgaXNEZWxldGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc3JBbm5vdW5jZW1lbnRDbGVhclRpbWVyKTtcbiAgICAgICAgaWYgKGlzRGVsZXRlKSB7XG4gICAgICAgICAgICB0aGlzLnNyQW5ub3VuY2VtZW50cyArPSBgJHt0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoJ2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5zci1hbm5vdW5jZW1lbnQuZGVsZXRlZCcsXG4gICAgICAgICAgICAgICAgeyBlbGVtZW50TGFiZWw6IHRoaXMuZ2V0TGFiZWwoZWxlbWVudCkgfSl9YDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3JBbm5vdW5jZW1lbnRzICs9IGAke3RoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYygnZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLnNyLWFubm91bmNlbWVudC5hZGRlZCcsXG4gICAgICAgICAgICAgICAgeyBlbGVtZW50TGFiZWw6IHRoaXMuZ2V0TGFiZWwoZWxlbWVudCkgfSl9YDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNyQW5ub3VuY2VtZW50Q2xlYXJUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zckFubm91bmNlbWVudHMgPSAnJztcbiAgICAgICAgfSwgdGhpcy5TUl9BTk5PVU5DRU1FTlRfQ0xFQVJfVElNRU9VVF9JTlRFUlZBTF9NUyk7XG4gICAgfVxufVxuIiwiPGZvZWhuLWF1dG9jb21wbGV0ZVxuICAgICNhdXRvY29tcGxldGVDb21wb25lbnRcbiAgICBbbmFtZV09XCJuYW1lXCJcbiAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgIFtlbGVtZW50c109XCJlbGVtZW50c1wiXG4gICAgW2VsZW1lbnRzVXJsXT1cImVsZW1lbnRzVXJsXCJcbiAgICBbZWxlbWVudFZhbHVlXT1cImVsZW1lbnRWYWx1ZVwiXG4gICAgW2VsZW1lbnRMYWJlbF09XCJlbGVtZW50TGFiZWxcIlxuICAgIFtlbGVtZW50VmFsdWVJZGVudGl0eV09XCJlbGVtZW50VmFsdWVJZGVudGl0eVwiXG4gICAgW2VsZW1lbnREaXNhYmxlZF09XCJlbGVtZW50RGlzYWJsZWRcIlxuICAgIFthbGxFbGVtZW50RGlzYWJsZWRdPVwiYWxsRWxlbWVudERpc2FibGVkXCJcbiAgICBbZWxlbWVudEdyb3VwXT1cImVsZW1lbnRHcm91cFwiXG4gICAgW2FsbG93Q3VzdG9tVmFsdWVdPVwiZmFsc2VcIlxuICAgIFtzZWFyY2hWYWx1ZU1pbkNoYXJzQ291bnRdPVwic2VhcmNoVmFsdWVNaW5DaGFyc0NvdW50XCJcbiAgICBbY3VzdG9tVmFsdWVNb2RlbEdlbmVyYXRvcl09XCJjdXN0b21WYWx1ZU1vZGVsR2VuZXJhdG9yXCJcbiAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgKHVzZXJJbnB1dCk9XCJhZGRJdGVtKCRldmVudClcIlxuICAgIFsobW9kZWwpXT1cImF1dG9jb21wbGV0ZUlucHV0VmFsdWVcIlxuICAgIChlbGVtZW50c0xvYWRlZCk9XCJvbkF1dG9jb21wbGV0ZUVsZW1lbnRzTG9hZGVkKCRldmVudClcIlxuPlxuICAgIDxzbWFsbFxuICAgICAgICAqbmdJZj1cIiFzaG93RW1wdHlMaXN0TWVzc2FnZVwiXG4gICAgICAgIFthdHRyLmlkXT1cImJ1aWxkQ2hpbGRJZCgnSGVscCcpXCJcbiAgICAgICAgY2xhc3M9XCJmb3JtLXRleHQgdGV4dC1zZWNvbmRhcnlcIlxuICAgICAgICBbaW5uZXJIVE1MXT1cImhlbHBUZXh0ID8gaGVscFRleHQgOiAnZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLmF1dG9jb21wbGV0ZS5zY3JlZW4tcmVhZGVyLmxhYmVsJyB8IGZyb21EaWN0aW9uYXJ5XCJcbiAgICA+PC9zbWFsbD5cblxuICAgIDxkaXZcbiAgICAgICAgW2lkXT1cImJ1aWxkQ2hpbGRJZCgnQWxlcnRNZXNzYWdlQ29udGFpbmVyJylcIlxuICAgICAgICByb2xlPVwic3RhdHVzXCJcbiAgICAgICAgI2FsZXJ0TWVzc2FnZUNvbnRhaW5lclxuICAgID5cbiAgICAgICAgPHBcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd0VtcHR5TGlzdE1lc3NhZ2VcIlxuICAgICAgICAgICAgY2xhc3M9XCJhbGVydCBhbGVydC1pbmZvXCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgID57eydmb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUuYXV0b2NvbXBsZXRlLmVtcHR5LW1lc3NhZ2UnIHwgZnJvbURpY3Rpb25hcnl9fTwvcD5cbiAgICA8L2Rpdj5cbjwvZm9laG4tYXV0b2NvbXBsZXRlPlxuXG48cFxuICAgIGNsYXNzPVwic3Itb25seVwiXG4gICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICBhcmlhLWF0b21pYz1cInRydWVcIlxuPlxuICAgIHt7c3JBbm5vdW5jZW1lbnRzfX1cbjwvcD5cblxuPGRpdlxuICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgIGNsYXNzPVwic2VsZWN0ZWQtbGlzdC1jb250YWluZXIgZC1mbGV4IGFsaWduLWNvbnRlbnQtc3RyZXRjaCBmbGV4LXdyYXBcIlxuICAgIFtuZ0NsYXNzXT1cIiEhbW9kZWwgJiYgISFtb2RlbC5sZW5ndGggPyAnbWItMicgOiAnbWItMCdcIlxuICAgICNzZWxlY3RlZEl0ZW1zQXJlYVxuPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGVsZW1lbnQgb2YgbW9kZWw7IGxldCBpbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICpuZ0lmPVwiIWNhbkJlRGVsZXRlZChpbmRleClcIlxuICAgICAgICAgICAgY2xhc3M9XCJiYWRnZSBiYWRnZS1waWxsIGJhZGdlLXNlY29uZGFyeSBtci0xIG1iLTEgcHktMiBweC0zIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgW3RhYmluZGV4XT1cImRpc2FibGVkID8gLTEgOiAwXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYnVpbGRDaGlsZElkKCdMYWJlbCcpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3tnZXRMYWJlbChlbGVtZW50KX19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJjYW5CZURlbGV0ZWQoaW5kZXgpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnkgYmFkZ2UgYmFkZ2UtcGlsbCBtci0xIG1iLTEgcHktMiBweC0zIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgW3RhYmluZGV4XT1cIjBcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXREZWxldGVCdXR0b25BcmlhTGFiZWwoZWxlbWVudClcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJidWlsZENoaWxkSWQoJ0xhYmVsJylcIlxuICAgICAgICAgICAgW3RpdGxlXT1cImdldERlbGV0ZUJ1dHRvbkFyaWFMYWJlbChlbGVtZW50KVwiXG4gICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlSXRlbShlbGVtZW50KVwiXG4gICAgICAgICAgICAjc2VsZWN0ZWRFbGVtUmVmXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7Z2V0TGFiZWwoZWxlbWVudCl9fVxuICAgICAgICAgICAgPGZvZWhuLWljb24tdGltZXNcbiAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWwtMlwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cImdldERlbGV0ZUJ1dHRvbkFyaWFMYWJlbChlbGVtZW50KVwiXG4gICAgICAgICAgICA+PC9mb2Vobi1pY29uLXRpbWVzPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
234
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUvZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUvZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsVUFBVSxFQUFFLEtBQUssRUFBcUIsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNySCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUNoRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFeEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBY3ZDLE1BQU0sT0FBTyxxQ0FBc0MsU0FBUSwwQkFBMEI7SUEyQ2pGLFlBQVksTUFBYyxFQUFVLGlCQUF1QztRQUN2RSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFEa0Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtRQVIzRSx5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDN0Isb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFLSiw4Q0FBeUMsR0FBRyxJQUFJLENBQUM7SUFJbEUsQ0FBQztJQTVCRCxJQUNJLG9CQUFvQixDQUFDLEtBQWdCO1FBQ3JDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLEdB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QUl6QixvQkFBb0I7c0JBRHZCLEtBQUs7Z0JBYUYsbUJBQW1CO3NCQUR0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBJbnB1dCwgTmdab25lLCBRdWVyeUxpc3QsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb2VobklucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vZm9laG4taW5wdXQvZm9laG4taW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IEZvZWhuQXV0b2NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9laG4tYXV0b2NvbXBsZXRlL2ZvZWhuLWF1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgT2JqZWN0SGVscGVyIH0gZnJvbSAnLi4vaGVscGVycy9vYmplY3QuaGVscGVyJztcbmltcG9ydCB7IFNka0RpY3Rpb25hcnlTZXJ2aWNlIH0gZnJvbSAnLi4vc2RrLWRpY3Rpb25hcnkvc2RrLWRpY3Rpb25hcnkuc2VydmljZSc7XG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5jb21wb25lbnQuY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZvZWhuSW5wdXRDb21wb25lbnQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGb2Vobk11bHRpc2VsZWN0QXV0b2NvbXBsZXRlQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuTXVsdGlzZWxlY3RBdXRvY29tcGxldGVDb21wb25lbnQgZXh0ZW5kcyBGb2VobkF1dG9jb21wbGV0ZUNvbXBvbmVudCB7XG5cbiAgICBAVmlld0NoaWxkKCdhdXRvY29tcGxldGVDb21wb25lbnQnKVxuICAgIHByaXZhdGUgYXV0b2NvbXBsZXRlQ29tcG9uZW50OiBGb2VobkF1dG9jb21wbGV0ZUNvbXBvbmVudDtcblxuICAgIEBWaWV3Q2hpbGQoJ2FsZXJ0TWVzc2FnZUNvbnRhaW5lcicpXG4gICAgcHJpdmF0ZSBhbGVydE1lc3NhZ2VDb250YWluZXI6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkcmVuKCdzZWxlY3RlZEVsZW1SZWYnKVxuICAgIHByaXZhdGUgc2VsZWN0ZWRFbGVtUmVmOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG5cbiAgICBAVmlld0NoaWxkcmVuKCdkZWZhdWx0RWxlbVJlZicpXG4gICAgcHJpdmF0ZSBkZWZhdWx0RWxlbVJlZjogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuXG4gICAgQFZpZXdDaGlsZCgnZGVmYXVsdEZvY3VzQXJlYScpXG4gICAgcHJpdmF0ZSBkZWZhdWx0Rm9jdXNBcmVhOiBFbGVtZW50UmVmO1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgZGVmYXVsdEVsZW1lbnRWYWx1ZXMoaXRlbXM6IHVua25vd25bXSkge1xuICAgICAgICB0aGlzLmRlZmF1bHRFbGVtZW50VmFsdWVzXyA9IFsuLi5pdGVtc107XG4gICAgICAgIGlmICgoIXRoaXMubW9kZWwgfHwgIXRoaXMubW9kZWwubGVuZ3RoKSAmJiBpdGVtcykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVOZ01vZGVsKGl0ZW1zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBkZWZhdWx0RWxlbWVudFZhbHVlcygpOiB1bmtub3duW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0RWxlbWVudFZhbHVlc187XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgZGVmYXVsdEVsZW1lbnRWYWx1ZShpdGVtOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5kZWZhdWx0RWxlbWVudFZhbHVlcyA9IFtpdGVtXTtcbiAgICB9XG5cbiAgICBhdXRvY29tcGxldGVJbnB1dFZhbHVlOiBzdHJpbmc7XG4gICAgc2hvd0VtcHR5TGlzdE1lc3NhZ2UgPSBmYWxzZTtcbiAgICBzckFubm91bmNlbWVudHMgPSAnJztcblxuICAgIHByaXZhdGUgZGVmYXVsdEVsZW1lbnRWYWx1ZXNfOiB1bmtub3duW107XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcml2YXRlIHNyQW5ub3VuY2VtZW50Q2xlYXJUaW1lcjogYW55O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgU1JfQU5OT1VOQ0VNRU5UX0NMRUFSX1RJTUVPVVRfSU5URVJWQUxfTVMgPSAyMDAwO1xuXG4gICAgY29uc3RydWN0b3Iobmdab25lOiBOZ1pvbmUsIHByaXZhdGUgZGljdGlvbmFyeVNlcnZpY2U6IFNka0RpY3Rpb25hcnlTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKG5nWm9uZSk7XG4gICAgfVxuXG4gICAgdXBkYXRlTXVsdGlzZWxlY3RBdXRvY29tcGxldGUoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbGlkVmFsdWUgPSB0aGlzLmdldFZhbGlkVmFsdWUoKTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWxpZFZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVOZ01vZGVsKHZhbGlkVmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFuZGxlVXNlcklucHV0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWxpZFZhbHVlID0gdGhpcy5nZXRWYWxpZFZhbHVlKCk7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsaWRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlKHZhbGlkVmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWRkSXRlbShpdGVtOiB1bmtub3duKTogdm9pZCB7XG4gICAgICAgIGlmICghIWl0ZW0pIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5tb2RlbCkge1xuICAgICAgICAgICAgICAgIHRoaXMubW9kZWwgPSBbXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLm1vZGVsLmluZGV4T2YoaXRlbSk7XG4gICAgICAgICAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb2RlbC5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTXVsdGlzZWxlY3RBdXRvY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVVzZXJJbnB1dCgpO1xuICAgICAgICAgICAgICAgIHRoaXMubWFuYWdlU3VnZ2VzdGlvbkxpc3RBbmRGb2N1c0FmdGVyQWRkaW5nQW5JdGVtKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5tYW5hZ2VTY3JlZW5SZWFkZXJBbm5vdW5jZW1lbnQoaXRlbSwgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVtb3ZlSXRlbShpdGVtOiB1bmtub3duLCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMubW9kZWwuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgdGhpcy50cmlnZ2VyVXNlcklucHV0KHRoaXMubW9kZWwpO1xuICAgICAgICB0aGlzLm1hbmFnZVN1Z2dlc3Rpb25MaXN0QW5kRm9jdXNBZnRlclJlbW92aW5nQW5JdGVtKGluZGV4KTtcbiAgICAgICAgdGhpcy5tYW5hZ2VTY3JlZW5SZWFkZXJBbm5vdW5jZW1lbnQoaXRlbSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnksQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LW1vZHVsZS1ib3VuZGFyeS10eXBlc1xuICAgIGdldExhYmVsKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBlbGVtID0gdGhpcy5maW5kRWxlbWVudEJ5TW9kZWxJdGVtKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmdldExhYmVsKGVsZW0pO1xuICAgIH1cblxuICAgIGNhbkJlRGVsZXRlZChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5kaXNhYmxlZCAmJiAoIXRoaXMuZGVmYXVsdEVsZW1lbnRWYWx1ZXMgfHwgIXRoaXMuZGVmYXVsdEVsZW1lbnRWYWx1ZXMuaW5jbHVkZXModGhpcy5tb2RlbFtpbmRleF0pKTtcbiAgICB9XG5cbiAgICBvbkF1dG9jb21wbGV0ZUVsZW1lbnRzTG9hZGVkKGVsZW1lbnRzOiBbXSk6IHZvaWQge1xuICAgICAgICAvLyBOZWVkIHRvIHdhaXQgZm9yIGNoaWxkVmlldyB0byBiZSBsb2FkZWRcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoISF0aGlzLmF1dG9jb21wbGV0ZUNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29tcG9uZW50LmVsZW1lbnRzID0gdGhpcy5maWx0ZXJBdXRvY29tcGxldGVFbGVtZW50cyhlbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkICYmICF0aGlzLmF1dG9jb21wbGV0ZUNvbXBvbmVudC5lbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93QWxlcnRNZXNzYWdlQW5kSGlkZUF1dG9jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0RGVsZXRlQnV0dG9uQXJpYUxhYmVsKGVsZW1lbnQ6IHVua25vd24pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKCdmb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUuc2VsZWN0ZWQuZGVsZXRlJyxcbiAgICAgICAgICAgIHsgZWxlbWVudExhYmVsOiB0aGlzLmdldExhYmVsKGVsZW1lbnQpIH0pfWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaW5kRWxlbWVudEJ5TW9kZWxJdGVtKGl0ZW06IHVua25vd24pOiB1bmtub3duIHtcbiAgICAgICAgaWYgKCEhdGhpcy5lbGVtZW50cyAmJiAhIXRoaXMuZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtVmFsdWU6IHVua25vd24gPSB0eXBlb2YgaXRlbSAhPT0gJ29iamVjdCcgPyBpdGVtIDogdGhpcy5nZXRWYWx1ZShpdGVtKTtcbiAgICAgICAgICAgIGNvbnN0IGVsZW0gPSB0aGlzLmVsZW1lbnRzLmZpbmQoKGVsZW1lbnQ6IHVua25vd24pID0+IHRoaXMuZ2V0VmFsdWUoZWxlbWVudCkgPT09IGl0ZW1WYWx1ZSk7XG4gICAgICAgICAgICBpZiAoISFlbGVtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRWYWxpZFZhbHVlKCk6IG51bWJlcltdIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICF0aGlzLm1vZGVsIHx8ICF0aGlzLm1vZGVsLmxlbmd0aFxuICAgICAgICApIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGVsXyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZWw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb2N1c05leHRBcmVhQWZ0ZXJEZWxldGUocmVtb3ZlZEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgLy8gQWRqdXN0IGluZGV4IGRlcGVuZGluZyBvbiBkZWZhdWx0IGVsZW1lbnRzIHRoYXQgYXJlIG5vdCBkZWxldGFibGVcbiAgICAgICAgaWYgKCEhdGhpcy5kZWZhdWx0RWxlbWVudFZhbHVlcykge1xuICAgICAgICAgICAgcmVtb3ZlZEluZGV4IC09IHRoaXMuZGVmYXVsdEVsZW1lbnRWYWx1ZXMubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNsb3NlQnV0dG9uc0VsZW1SZWZBcnJheSA9IFsuLi50aGlzLnNlbGVjdGVkRWxlbVJlZi50b0FycmF5KCldO1xuICAgICAgICAvLyBOZWVkIHRvIGZpbmQgYW4gZWxlbWVudCB0byBmb2N1cyBvblxuICAgICAgICBpZiAocmVtb3ZlZEluZGV4ID09PSBjbG9zZUJ1dHRvbnNFbGVtUmVmQXJyYXkubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAoISFjbG9zZUJ1dHRvbnNFbGVtUmVmQXJyYXkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsb3NlQnV0dG9uc0VsZW1SZWZBcnJheVtyZW1vdmVkSW5kZXggLSAxXS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0RWxlbVJlZkFycmF5ID0gWy4uLnRoaXMuZGVmYXVsdEVsZW1SZWYudG9BcnJheSgpXTtcbiAgICAgICAgICAgIGlmICghIWRlZmF1bHRFbGVtUmVmQXJyYXkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRFbGVtUmVmQXJyYXlbZGVmYXVsdEVsZW1SZWZBcnJheS5sZW5ndGggLSAxXS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0Rm9jdXNBcmVhLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBPdGhlcndpc2UgZm9jdXMgZWxlbWVudCBieSBET00gcmVwbGFjZW1lbnRcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbHRlckF1dG9jb21wbGV0ZUVsZW1lbnRzKGVsZW1lbnRzOiBbXSk6IHVua25vd24ge1xuICAgICAgICBjb25zdCBmaWx0ZXJlZEVsZW1lbnRzID0gT2JqZWN0SGVscGVyLmRlZXBDb3B5KGVsZW1lbnRzKTtcbiAgICAgICAgaWYgKCEhdGhpcy5tb2RlbCAmJiAhIXRoaXMubW9kZWwubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGVsLmZvckVhY2goKHNlbGVjdGVkOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBbaW5kZXgsIHZhbHVlXSBvZiBmaWx0ZXJlZEVsZW1lbnRzLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbGVtID0gdGhpcy5maW5kRWxlbWVudEJ5TW9kZWxJdGVtKHNlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdEhlbHBlci5pc0VxdWFsKGVsZW0sIHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWRFbGVtZW50cy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlsdGVyZWRFbGVtZW50cztcbiAgICB9XG5cbiAgICBwcml2YXRlIG1hbmFnZVN1Z2dlc3Rpb25MaXN0QW5kRm9jdXNBZnRlckFkZGluZ0FuSXRlbSgpOiB2b2lkIHtcbiAgICAgICAgLy8gRW1wdHkgYXV0b2NvbXBsZXRlIGlucHV0XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlSW5wdXRWYWx1ZSA9IG51bGw7XG4gICAgICAgIC8vIFJlbW92ZSBzZWxlY3RlZCBpdGVtIGZyb20gYXV0b2NvbXBsZXRlIHN1Z2dlc3Rpb24gbGlzdFxuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbXBvbmVudC5lbGVtZW50cyA9IHRoaXMuZmlsdGVyQXV0b2NvbXBsZXRlRWxlbWVudHModGhpcy5lbGVtZW50cyk7XG4gICAgICAgIC8vIENoZWNrIGlmIHdlIHN0aWxsIGhhdmUgc3VnZ2VzdGlvbnMgdG8gZGlzcGxheVxuICAgICAgICBpZiAoIXRoaXMuYXV0b2NvbXBsZXRlQ29tcG9uZW50LmVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5zaG93QWxlcnRNZXNzYWdlQW5kSGlkZUF1dG9jb21wbGV0ZSgpO1xuICAgICAgICAgICAgLy8gTmVlZCBzZXRUaW1lb3V0IHRvIGVuc3VyZSBhbGVydCBtZXNzYWdlIGlzIG9uIHRoZSBET00gYW5kIGNhbiBiZSBmb2N1c2FibGVcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFsZXJ0TWVzc2FnZTogSFRNTEVsZW1lbnQgPSB0aGlzLmFsZXJ0TWVzc2FnZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ3AnKTtcbiAgICAgICAgICAgICAgICBpZiAoYWxlcnRNZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgIGFsZXJ0TWVzc2FnZS5mb2N1cygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtYW5hZ2VTdWdnZXN0aW9uTGlzdEFuZEZvY3VzQWZ0ZXJSZW1vdmluZ0FuSXRlbShyZW1vdmVkSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICAvLyBIaWRlIG1lc3NhZ2Ugc2F5aW5nIG5vIG1vcmUgc3VnZ2VzdGlvbnMgdG8gZGlzcGxheVxuICAgICAgICB0aGlzLnNob3dFbXB0eUxpc3RNZXNzYWdlID0gZmFsc2U7XG4gICAgICAgIC8vIE1hbnVhbGx5IHNob3cgYXV0b2NvbXBsZXRlIGJlY2F1c2UgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHN1Z2dlc3Rpb25zIHRvIGRpc3BsYXlcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb21wb25lbnQuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaGlkZGVuID0gZmFsc2U7XG4gICAgICAgIC8vIEFkZCBiYWNrIHNlbGVjdGVkIGl0ZW0gdG8gYXV0b2NvbXBsZXRlIHN1Z2dlc3Rpb24gbGlzdFxuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbXBvbmVudC5lbGVtZW50cyA9IHRoaXMuZmlsdGVyQXV0b2NvbXBsZXRlRWxlbWVudHModGhpcy5lbGVtZW50cyk7XG4gICAgICAgIC8vIFdoZW4gZGVsZXRpbmcgYSBzZWxlY3RlZCBpdGVtLCBjaGVjayB3ZXJlIHRvIHNldCBmb2N1cyBiYWNrIHdoZW4gbm8gbW9yZSBpdGVtcyB0byBkZWxldGVcbiAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1SZWYuY2hhbmdlcy5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzTmV4dEFyZWFBZnRlckRlbGV0ZShyZW1vdmVkSW5kZXgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNob3dBbGVydE1lc3NhZ2VBbmRIaWRlQXV0b2NvbXBsZXRlKCk6IHZvaWQge1xuICAgICAgICAvLyBTaG93IGEgbWVzc2FnZSB0byB1c2VyIGluZGljYXRpbmcgdGhlcmUgaXMgbm8gbW9yZSBzdWdnZXN0aW9ucyB0byBkaXNwbGF5XG4gICAgICAgIHRoaXMuc2hvd0VtcHR5TGlzdE1lc3NhZ2UgPSB0cnVlO1xuICAgICAgICAvLyBNYW51YWxseSByZXNldCBhbmQgaGlkZSBhdXRvY29tcGxldGUgYmVjYXVzZSB0aGVyZSBpcyBubyBtb3JlIHN1Z2dlc3Rpb25zIHRvIGRpc3BsYXlcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVJbnB1dFZhbHVlID0gbnVsbDtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb21wb25lbnQuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaGlkZGVuID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1hbmFnZVNjcmVlblJlYWRlckFubm91bmNlbWVudChlbGVtZW50OiB1bmtub3duLCBpc0RlbGV0ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5zckFubm91bmNlbWVudENsZWFyVGltZXIpO1xuICAgICAgICBpZiAoaXNEZWxldGUpIHtcbiAgICAgICAgICAgIHRoaXMuc3JBbm5vdW5jZW1lbnRzICs9IGAke3RoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYygnZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLnNyLWFubm91bmNlbWVudC5kZWxldGVkJyxcbiAgICAgICAgICAgICAgICB7IGVsZW1lbnRMYWJlbDogdGhpcy5nZXRMYWJlbChlbGVtZW50KSB9KX1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zckFubm91bmNlbWVudHMgKz0gYCR7dGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKCdmb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUuc3ItYW5ub3VuY2VtZW50LmFkZGVkJyxcbiAgICAgICAgICAgICAgICB7IGVsZW1lbnRMYWJlbDogdGhpcy5nZXRMYWJlbChlbGVtZW50KSB9KX1gO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3JBbm5vdW5jZW1lbnRDbGVhclRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNyQW5ub3VuY2VtZW50cyA9ICcnO1xuICAgICAgICB9LCB0aGlzLlNSX0FOTk9VTkNFTUVOVF9DTEVBUl9USU1FT1VUX0lOVEVSVkFMX01TKTtcbiAgICB9XG59XG4iLCI8Zm9laG4tYXV0b2NvbXBsZXRlXG4gICAgI2F1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgW2VsZW1lbnRzXT1cImVsZW1lbnRzXCJcbiAgICBbZWxlbWVudHNVcmxdPVwiZWxlbWVudHNVcmxcIlxuICAgIFtlbGVtZW50VmFsdWVdPVwiZWxlbWVudFZhbHVlXCJcbiAgICBbZWxlbWVudExhYmVsXT1cImVsZW1lbnRMYWJlbFwiXG4gICAgW2VsZW1lbnRWYWx1ZUlkZW50aXR5XT1cImVsZW1lbnRWYWx1ZUlkZW50aXR5XCJcbiAgICBbZWxlbWVudERpc2FibGVkXT1cImVsZW1lbnREaXNhYmxlZFwiXG4gICAgW2FsbEVsZW1lbnREaXNhYmxlZF09XCJhbGxFbGVtZW50RGlzYWJsZWRcIlxuICAgIFtlbGVtZW50R3JvdXBdPVwiZWxlbWVudEdyb3VwXCJcbiAgICBbYWxsb3dDdXN0b21WYWx1ZV09XCJmYWxzZVwiXG4gICAgW3NlYXJjaFZhbHVlTWluQ2hhcnNDb3VudF09XCJzZWFyY2hWYWx1ZU1pbkNoYXJzQ291bnRcIlxuICAgIFtjdXN0b21WYWx1ZU1vZGVsR2VuZXJhdG9yXT1cImN1c3RvbVZhbHVlTW9kZWxHZW5lcmF0b3JcIlxuICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAodXNlcklucHV0KT1cImFkZEl0ZW0oJGV2ZW50KVwiXG4gICAgWyhtb2RlbCldPVwiYXV0b2NvbXBsZXRlSW5wdXRWYWx1ZVwiXG4gICAgKGVsZW1lbnRzTG9hZGVkKT1cIm9uQXV0b2NvbXBsZXRlRWxlbWVudHNMb2FkZWQoJGV2ZW50KVwiXG4+XG4gICAgPHNtYWxsXG4gICAgICAgICpuZ0lmPVwiIXNob3dFbXB0eUxpc3RNZXNzYWdlXCJcbiAgICAgICAgW2F0dHIuaWRdPVwiYnVpbGRDaGlsZElkKCdIZWxwJylcIlxuICAgICAgICBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgIFtpbm5lckhUTUxdPVwiaGVscFRleHQgPyBoZWxwVGV4dCA6ICdmb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUuYXV0b2NvbXBsZXRlLnNjcmVlbi1yZWFkZXIubGFiZWwnIHwgZnJvbURpY3Rpb25hcnlcIlxuICAgID48L3NtYWxsPlxuXG4gICAgPGRpdlxuICAgICAgICBbaWRdPVwiYnVpbGRDaGlsZElkKCdBbGVydE1lc3NhZ2VDb250YWluZXInKVwiXG4gICAgICAgIHJvbGU9XCJzdGF0dXNcIlxuICAgICAgICAjYWxlcnRNZXNzYWdlQ29udGFpbmVyXG4gICAgPlxuICAgICAgICA8cFxuICAgICAgICAgICAgKm5nSWY9XCJzaG93RW1wdHlMaXN0TWVzc2FnZVwiXG4gICAgICAgICAgICBjbGFzcz1cImFsZXJ0IGFsZXJ0LWluZm9cIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgPnt7J2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5hdXRvY29tcGxldGUuZW1wdHktbWVzc2FnZScgfCBmcm9tRGljdGlvbmFyeX19PC9wPlxuICAgIDwvZGl2PlxuPC9mb2Vobi1hdXRvY29tcGxldGU+XG5cbjxwXG4gICAgY2xhc3M9XCJzci1vbmx5XCJcbiAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgIGFyaWEtYXRvbWljPVwidHJ1ZVwiXG4+XG4gICAge3tzckFubm91bmNlbWVudHN9fVxuPC9wPlxuXG48ZGl2XG4gICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgY2xhc3M9XCJzZWxlY3RlZC1saXN0LWNvbnRhaW5lciBkLWZsZXggYWxpZ24tY29udGVudC1zdHJldGNoIGZsZXgtd3JhcFwiXG4gICAgW25nQ2xhc3NdPVwiISFtb2RlbCAmJiAhIW1vZGVsLmxlbmd0aCA/ICdtYi0yJyA6ICdtYi0wJ1wiXG4+XG4gICAgPHNwYW5cbiAgICAgICAgKm5nSWY9XCIoIWRlZmF1bHRFbGVtZW50VmFsdWVzIHx8ICFkZWZhdWx0RWxlbWVudFZhbHVlcy5sZW5ndGgpICYmICghbW9kZWwgfHwgIW1vZGVsLmxlbmd0aClcIlxuICAgICAgICBjbGFzcz1cInNyLW9ubHlcIlxuICAgICAgICBbdGFiaW5kZXhdPVwiZGlzYWJsZWQgPyAtMSA6IDBcIlxuICAgICAgICBbaW5uZXJIVE1MXT1cIidmb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUuc3ItZGVmYXVsdC1mb2N1cy5uby1lbGVtZW50LXRvLWRlbGV0ZScgfCBmcm9tRGljdGlvbmFyeVwiXG4gICAgICAgICNkZWZhdWx0Rm9jdXNBcmVhXG4gICAgPjwvc3Bhbj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbGVtZW50IG9mIG1vZGVsOyBsZXQgaW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeUZuXCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICAqbmdJZj1cIiFjYW5CZURlbGV0ZWQoaW5kZXgpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtcGlsbCBiYWRnZS1zZWNvbmRhcnkgbXItMSBtYi0xIHB5LTIgcHgtMyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgIFt0YWJpbmRleF09XCJkaXNhYmxlZCA/IC0xIDogMFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImJ1aWxkQ2hpbGRJZCgnTGFiZWwnKVwiXG4gICAgICAgICAgICAjZGVmYXVsdEVsZW1SZWZcbiAgICAgICAgPlxuICAgICAgICAgICAge3tnZXRMYWJlbChlbGVtZW50KX19XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5cbiAgICAgICAgICAgICAgICB7eydmb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUuc3ItZGVmYXVsdC1zZWxlY3RlZC1lbGVtZW50JyB8IGZyb21EaWN0aW9uYXJ5fX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImNhbkJlRGVsZXRlZChpbmRleClcIlxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeSBiYWRnZSBiYWRnZS1waWxsIG1yLTEgbWItMSBweS0yIHB4LTMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICBbdGFiaW5kZXhdPVwiMFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImdldERlbGV0ZUJ1dHRvbkFyaWFMYWJlbChlbGVtZW50KVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImJ1aWxkQ2hpbGRJZCgnTGFiZWwnKVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiZ2V0RGVsZXRlQnV0dG9uQXJpYUxhYmVsKGVsZW1lbnQpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVJdGVtKGVsZW1lbnQsIGluZGV4KVwiXG4gICAgICAgICAgICAjc2VsZWN0ZWRFbGVtUmVmXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7Z2V0TGFiZWwoZWxlbWVudCl9fVxuICAgICAgICAgICAgPGZvZWhuLWljb24tdGltZXNcbiAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWwtMlwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cImdldERlbGV0ZUJ1dHRvbkFyaWFMYWJlbChlbGVtZW50KVwiXG4gICAgICAgICAgICA+PC9mb2Vobi1pY29uLXRpbWVzPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
@@ -87,10 +87,12 @@ export const DEFAULT_DICTIONARY = {
87
87
  'foehn-status-progress-bar.step3': 'Confirmation',
88
88
  'foehn-status-progress-bar.step3.srOnly': 'Etape 3 sur 3, Confirmation, demande transmise',
89
89
  'foehn-multiselect-autocomplete.selected.delete': 'Supprimer {elementLabel}',
90
- 'foehn-multiselect-autocomplete.sr-announcement.deleted': '{elementLabel} a été supprimé, ',
91
- 'foehn-multiselect-autocomplete.sr-announcement.added': '{elementLabel} a été ajouté, ',
90
+ 'foehn-multiselect-autocomplete.sr-announcement.deleted': '{elementLabel} a été supprimé,',
91
+ 'foehn-multiselect-autocomplete.sr-announcement.added': '{elementLabel} a été ajouté,',
92
+ 'foehn-multiselect-autocomplete.sr-default-focus.no-element-to-delete': 'Aucun élément à supprimer dans la liste.',
93
+ 'foehn-multiselect-autocomplete.sr-default-selected-element': '(sélection par défaut)',
92
94
  'foehn-multiselect-autocomplete.autocomplete.empty-message': 'Tous les éléments de la liste de proposition ont déjà été ajoutés.',
93
95
  'foehn-multiselect-autocomplete.autocomplete.screen-reader.label': 'Sélectionner un élément dans la liste de recherche' +
94
96
  ' ci-dessous pour l\'ajouter à votre sélection.'
95
97
  };
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1kaWN0aW9uYXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL3Nkay1kaWN0aW9uYXJ5L2RlZmF1bHQtZGljdGlvbmFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBbUI7SUFDOUMsc0JBQXNCLEVBQUUsY0FBYztJQUN0Qyw0QkFBNEIsRUFBRSxNQUFNO0lBQ3BDLDhCQUE4QixFQUFFLE1BQU07SUFDdEMsNkJBQTZCLEVBQUUsT0FBTztJQUN0Qyw4QkFBOEIsRUFBRSxPQUFPO0lBQ3ZDLGdDQUFnQyxFQUFFLFNBQVM7SUFDM0MsbUNBQW1DLEVBQUUsTUFBTTtJQUMzQyxvQ0FBb0MsRUFBRSxlQUFlO0lBQ3JELHNDQUFzQyxFQUFFLCtCQUErQjtJQUN2RSxrQ0FBa0MsRUFBRSxLQUFLO0lBQ3pDLHVDQUF1QyxFQUFFLGVBQWU7SUFDeEQsMkNBQTJDLEVBQ3ZDLDBEQUEwRDtJQUM5RCw2Q0FBNkMsRUFBRSxjQUFjO0lBQzdELGlEQUFpRCxFQUM3QywrQ0FBK0M7SUFDbkQsd0NBQXdDLEVBQUUsS0FBSztJQUMvQyx3Q0FBd0MsRUFBRSxzQkFBc0I7SUFDaEUsNENBQTRDLEVBQUUsYUFBYTtJQUMzRCw2Q0FBNkMsRUFBRSxVQUFVO0lBQ3pELDZCQUE2QixFQUFFLFNBQVM7SUFDeEMsaUNBQWlDLEVBQUUsV0FBVztJQUM5QyxpQ0FBaUMsRUFBRSxhQUFhO0lBQ2hELHVDQUF1QyxFQUFFLDRCQUE0QjtJQUNyRSx3Q0FBd0MsRUFBRSxLQUFLO0lBQy9DLDBCQUEwQixFQUFFLG1DQUFtQztJQUMvRCwyQkFBMkIsRUFBRSxjQUFjO0lBQzNDLG1DQUFtQyxFQUFFLG1CQUFtQjtJQUN4RCw2Q0FBNkMsRUFBRSxtQkFBbUI7SUFDbEUsaUNBQWlDLEVBQUUsb0JBQW9CO0lBQ3ZELDJDQUEyQyxFQUFFLDJCQUEyQjtJQUN4RSxxQ0FBcUMsRUFDakMsZ0VBQWdFO0lBQ3BFLCtDQUErQyxFQUMzQyw4QkFBOEI7SUFDbEMsaUNBQWlDLEVBQUUsVUFBVTtJQUM3QyxtQ0FBbUMsRUFBRSxnQkFBZ0I7SUFDckQsbUNBQW1DLEVBQUUsR0FBRztJQUN4QyxxQ0FBcUMsRUFBRSx3QkFBd0I7SUFDL0Qsc0RBQXNELEVBQ2xELHFCQUFxQjtJQUN6Qix3Q0FBd0MsRUFBRSxZQUFZO0lBQ3RELDJDQUEyQyxFQUFFLHNCQUFzQjtJQUNuRSwrQ0FBK0MsRUFBRSxnQkFBZ0I7SUFDakUsMkNBQTJDLEVBQUUsY0FBYztJQUMzRCx3REFBd0QsRUFDcEQsNkJBQTZCO0lBQ2pDLG1EQUFtRCxFQUFFLHNCQUFzQjtJQUMzRSxrREFBa0QsRUFDOUMsd0JBQXdCO0lBQzVCLDBCQUEwQixFQUN0Qiw4RkFBOEY7SUFDbEcsdUJBQXVCLEVBQ25CLCtFQUErRTtJQUNuRiw0QkFBNEIsRUFDeEIsNkRBQTZEO0lBQ2pFLDRCQUE0QixFQUFFLDRDQUE0QztJQUMxRSw0QkFBNEIsRUFDeEIscURBQXFEO0lBQ3pELGtCQUFrQixFQUFFLGtDQUFrQztJQUN0RCw0QkFBNEIsRUFBRSx1Q0FBdUM7SUFDckUsNkJBQTZCLEVBQ3pCLDRHQUE0RztJQUNoSCxvQ0FBb0MsRUFDaEMsc0VBQXNFO0lBQzFFLFlBQVksRUFDUix1RUFBdUU7SUFDM0UsWUFBWSxFQUNSLDBGQUEwRjtJQUM5RixZQUFZLEVBQ1IseUZBQXlGO0lBQzdGLFlBQVksRUFBRSxnREFBZ0Q7SUFDOUQsWUFBWSxFQUNSLDJGQUEyRjtJQUMvRixzQkFBc0IsRUFBRSxvQkFBb0I7SUFDNUMsb0NBQW9DLEVBQUUsd0JBQXdCO0lBQzlELDZDQUE2QyxFQUN6QyxzQ0FBc0M7SUFDMUMsZ0NBQWdDLEVBQUUsb0NBQW9DO0lBQ3RFLHlDQUF5QyxFQUNyQyxrREFBa0Q7SUFDdEQsNENBQTRDLEVBQ3hDLGlEQUFpRDtJQUNyRCwrQkFBK0IsRUFBRSxJQUFJO0lBQ3JDLHFDQUFxQyxFQUFFLFdBQVc7SUFDbEQsa0NBQWtDLEVBQUUscUJBQXFCO0lBQ3pELGdEQUFnRCxFQUM1QyxzRUFBc0U7UUFDdEUsbUdBQW1HO0lBQ3ZHLGdCQUFnQixFQUNaLGlGQUFpRjtRQUNqRiw0RkFBNEY7SUFDaEcsdUJBQXVCLEVBQUUsZ0JBQWdCO0lBQ3pDLDBDQUEwQyxFQUFFLHNCQUFzQjtJQUNsRSxvQ0FBb0MsRUFBRSxlQUFlO0lBQ3JELDRDQUE0QyxFQUN4Qyw2Q0FBNkM7SUFDakQsK0NBQStDLEVBQUUsc0JBQXNCO0lBQ3ZFLDZDQUE2QyxFQUFFLFNBQVM7SUFDeEQsb0RBQW9ELEVBQ2hELGtDQUFrQztJQUN0QywyQ0FBMkMsRUFBRSxXQUFXO0lBQ3hELDJCQUEyQixFQUFFLDBCQUEwQjtJQUN2RCw2QkFBNkIsRUFBRSxrQkFBa0I7SUFDakQsNkJBQTZCLEVBQUUsZ0JBQWdCO0lBQy9DLGlDQUFpQyxFQUFFLFFBQVE7SUFDM0Msd0NBQXdDLEVBQUUsdUJBQXVCO0lBQ2pFLGlDQUFpQyxFQUFFLGNBQWM7SUFDakQsd0NBQXdDLEVBQUUsNkJBQTZCO0lBQ3ZFLGlDQUFpQyxFQUFFLGNBQWM7SUFDakQsd0NBQXdDLEVBQ3BDLGdEQUFnRDtJQUNwRCxnREFBZ0QsRUFBRSwwQkFBMEI7SUFDNUUsd0RBQXdELEVBQUUsaUNBQWlDO0lBQzNGLHNEQUFzRCxFQUFFLCtCQUErQjtJQUN2RiwyREFBMkQsRUFBRSxvRUFBb0U7SUFDakksaUVBQWlFLEVBQUUsb0RBQW9EO1FBQ25ILGdEQUFnRDtDQUN2RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1jeWNsZVxuaW1wb3J0IHsgRGljdGlvbmFyeVR5cGUgfSBmcm9tICcuL3Nkay1kaWN0aW9uYXJ5LnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9ESUNUSU9OQVJZOiBEaWN0aW9uYXJ5VHlwZSA9IHtcbiAgICAnZm9laG4taW5wdXQub3B0aW9uYWwnOiAnKGZhY3VsdGF0aWYpJyxcbiAgICAnZm9laG4taW5wdXQtZGF0ZS5kYXkubGFiZWwnOiAnSm91cicsXG4gICAgJ2ZvZWhuLWlucHV0LWRhdGUubW9udGgubGFiZWwnOiAnTW9pcycsXG4gICAgJ2ZvZWhuLWlucHV0LWRhdGUueWVhci5sYWJlbCc6ICdBbm7DqWUnLFxuICAgICdmb2Vobi1pbnB1dC10aW1lLmhvdXJzLmxhYmVsJzogJ0hldXJlJyxcbiAgICAnZm9laG4taW5wdXQtdGltZS5taW51dGVzLmxhYmVsJzogJ01pbnV0ZXMnLFxuICAgICdmb2Vobi1pbnB1dC1hZGRyZXNzLmNvdW50cnkubGFiZWwnOiAnUGF5cycsXG4gICAgJ2ZvZWhuLWlucHV0LWFkZHJlc3MubG9jYWxpdHkubGFiZWwnOiAnTlBBLCBMb2NhbGl0w6knLFxuICAgICdmb2Vobi1pbnB1dC1hZGRyZXNzLnN0cmVldC5oZWxwLXRleHQnOiAnRXhlbXBsZSA6IEF2ZW51ZSBkZSBsYSBTYWxsYXonLFxuICAgICdmb2Vobi1pbnB1dC1hZGRyZXNzLnN0cmVldC5sYWJlbCc6ICdSdWUnLFxuICAgICdmb2Vobi1pbnB1dC1hZGRyZXNzLmhvdXNlTnVtYmVyLmxhYmVsJzogJ051bcOpcm8gZGUgcnVlJyxcbiAgICAnZm9laG4taW5wdXQtYWRkcmVzcy5ob3VzZU51bWJlci5oZWxwLXRleHQnOlxuICAgICAgICBcIkV4ZW1wbGUgOiA0MCBwb3VyIHVuZSBhZHJlc3NlIMOgIGwnQXZlbnVlIGRlIGxhIFNhbGxheiA0MFwiLFxuICAgICdmb2Vobi1pbnB1dC1hZGRyZXNzLnBvc3RPZmZpY2VCb3hUZXh0LmxhYmVsJzogJ0Nhc2UgcG9zdGFsZScsXG4gICAgJ2ZvZWhuLWlucHV0LWFkZHJlc3MucG9zdE9mZmljZUJveFRleHQuaGVscC10ZXh0JzpcbiAgICAgICAgJ0V4ZW1wbGUgOiBDYXNlIHBvc3RhbGUgMTIyIG91IENQMTIyIG91IENQIDEyMicsXG4gICAgJ2ZvZWhuLWlucHV0LWFkZHJlc3MuYWRkcmVzc0xpbmUxLmxhYmVsJzogJ2MvbycsXG4gICAgJ2ZvZWhuLWlucHV0LWFkZHJlc3MuYWRkcmVzc0xpbmUyLmxhYmVsJzogXCJDb21wbMOpbWVudCBkJ2FkcmVzc2VcIixcbiAgICAnZm9laG4taW5wdXQtZm9yZWlnbi1sb2NhbGl0eS56aXBDb2RlLmxhYmVsJzogJ0NvZGUgcG9zdGFsJyxcbiAgICAnZm9laG4taW5wdXQtZm9yZWlnbi1sb2NhbGl0eS5sb2NhbGl0eS5sYWJlbCc6ICdMb2NhbGl0w6knLFxuICAgICdmb2Vobi1uYXZpZ2F0aW9uLm5leHQubGFiZWwnOiAnU3VpdmFudCcsXG4gICAgJ2ZvZWhuLW5hdmlnYXRpb24ucHJldmlvdXMubGFiZWwnOiAnUHLDqWPDqWRlbnQnLFxuICAgICdmb2Vobi1uYXZpZ2F0aW9uLnRyYW5zbWl0LmxhYmVsJzogJ1RyYW5zbWV0dHJlJyxcbiAgICAnZm9laG4tbmF2aWdhdGlvbi5jb250aW51ZS1sYXRlci5sYWJlbCc6ICdGaW5pciBsYSBkZW1hbmRlIHBsdXMgdGFyZCcsXG4gICAgJ2ZvZWhuLW5hdmlnYXRpb24ucm91dGUuaW5kZXguc2VwYXJhdG9yJzogJ3N1cicsXG4gICAgJ2ZvZWhuLXBhZ2UtY291bnRlci5sYWJlbCc6ICdQYWdlIHtjdXJyZW50UGFnZX0gZGUge3BhZ2VDb3VudH0nLFxuICAgICdnZXNkZW0tY29uZmlybWF0aW9uLnRpdGxlJzogJ0NvbmZpcm1hdGlvbicsXG4gICAgJ2dlc2RlbS1jb25maXJtYXRpb24uc3VjY2Vzcy1sYWJlbCc6ICdEZW1hbmRlIHRyYW5zbWlzZScsXG4gICAgJ2dlc2RlbS1jb25maXJtYXRpb24ubmV4dC1zdGVwLnN1Y2Nlc3MtbGFiZWwnOiAnUsOpcG9uc2UgdHJhbnNtaXNlJyxcbiAgICAnZ2VzZGVtLWNvbmZpcm1hdGlvbi5hYm9ydC1sYWJlbCc6ICdEZW1hbmRlIGFiYW5kb25uw6llJyxcbiAgICAnZ2VzZGVtLWNvbmZpcm1hdGlvbi5yZWZlcmVuY2UtdGl0bGUubGFiZWwnOiAnVm90cmUgbnVtw6lybyBkZSByw6lmw6lyZW5jZScsXG4gICAgJ2dlc2RlbS1jb25maXJtYXRpb24ubWFpbC1zZW50LmxhYmVsJzpcbiAgICAgICAgJ1ZvdXMgcmVjZXZyZXogdW4gZW1haWwgZGUgY29uZmlybWF0aW9uIGRhbnMgcXVlbHF1ZXMgaW5zdGFudHMuJyxcbiAgICAnZ2VzZGVtLWNvbmZpcm1hdGlvbi5kb3dubG9hZC1wZGYtcmVjYXAtYnV0dG9uJzpcbiAgICAgICAgJ1TDqWzDqWNoYXJnZXIgbGEgZGVtYW5kZSAocGRmKScsXG4gICAgJ2dlc2RlbS1jb25maXJtYXRpb24uZXhpdC1idXR0b24nOiAnVGVybWluZXInLFxuICAgICdnZXNkZW0tY29uZmlybWF0aW9uLmxvZ291dC1idXR0b24nOiAnU2UgZMOpY29ubmVjdGVyJyxcbiAgICAnZ2VzZGVtLWNvbmZpcm1hdGlvbi5leHRyYS1jb250ZW50JzogJyAnLFxuICAgICdmb2Vobi1kYXRlLXBpY2tlci1idXR0b24uaWNvbi10aXRsZSc6ICdBZmZpY2hlciBsZSBjYWxlbmRyaWVyJyxcbiAgICAnZm9laG4tZGF0ZS1waWNrZXItYnV0dG9uLnNjcmVlbi1yZWFkZXIuc2VsZWN0ZWQtZGF0ZSc6XG4gICAgICAgICdEYXRlIHPDqWxlY3Rpb25uw6llIDonLFxuICAgICdmb2Vobi1kYXRlLXBpY2tlci5jb250YWluZXIuYXJpYS1sYWJlbCc6ICdDYWxlbmRyaWVyJyxcbiAgICAnZm9laG4tZGF0ZS1waWNrZXIuY2xvc2UtYnV0dG9uLmFyaWEtbGFiZWwnOiAnRmVybWVyIGxlIGNhbGVuZHJpZXInLFxuICAgICdmb2Vobi1kYXRlLXBpY2tlci5wcmV2aW91cy1tb250aC1idXR0b24udGl0bGUnOiAnTW9pcyBwcsOpY8OpZGVudCcsXG4gICAgJ2ZvZWhuLWRhdGUtcGlja2VyLm5leHQtbW9udGgtYnV0dG9uLnRpdGxlJzogJ01vaXMgc3VpdmFudCcsXG4gICAgJ2ZvZWhuLWRhdGUtcGlja2VyLnNjcmVlbi1yZWFkZXIuYWN0dWFsLW1vbnRoLWRpc3BsYXllZCc6XG4gICAgICAgICdNb2lzIGFjdHVlbGxlbWVudCBhZmZpY2jDqSA6JyxcbiAgICAnZm9laG4tZGF0ZS1waWNrZXIuc2NyZWVuLXJlYWRlci5tb250aC1pbnB1dC5sYWJlbCc6ICdTw6lsZWN0aW9ubmVyIHVuIG1vaXMnLFxuICAgICdmb2Vobi1kYXRlLXBpY2tlci5zY3JlZW4tcmVhZGVyLnllYXItaW5wdXQubGFiZWwnOlxuICAgICAgICAnU8OpbGVjdGlvbm5lciB1bmUgYW5uw6llJyxcbiAgICAnZXJyb3JzLkZJTEVOQU1FX1RPT19MT05HJzpcbiAgICAgICAgJ1ZvdHJlIHBpw6hjZSBqb2ludGUgJTEkcyBhIHVuIG5vbSBkdSBmaWNoaWVyIHF1aSBleGPDqGRlIGxlIG1heGltdW0gYXV0b3Jpc8OpIDogJTIkcyBjYXJhY3TDqHJlcycsXG4gICAgJ2Vycm9ycy5GSUxFX1RPT19TTUFMTCc6XG4gICAgICAgICdWb3RyZSBwacOoY2Ugam9pbnRlICUxJHMgYSB1bmUgdGFpbGxlIGluZsOpcmlldXJlIGF1IG1pbmltdW0gZXhpZ8OpIDogJTIkcyBieXRlcycsXG4gICAgJ2Vycm9ycy5QREZfUEFTU1dPUkRfTE9DS0VEJzpcbiAgICAgICAgJ1ZvdHJlIHBpw6hjZSBqb2ludGUgJTEkcyBlc3QgdmVycm91aWxsw6llIHBhciB1biBtb3QgZGUgcGFzc2UnLFxuICAgICdlcnJvcnMuUERGX0NPTlRBSU5TX1NDUklQVCc6ICdWb3RyZSBwacOoY2Ugam9pbnRlICUxJHMgY29udGllbnQgdW4gc2NyaXB0JyxcbiAgICAnZXJyb3JzLlBERl9IQVNfQVRUQUNITUVOVFMnOlxuICAgICAgICAnVm90cmUgcGnDqGNlIGpvaW50ZSAlMSRzIGNvbnRpZW50IHVuIGZpY2hpZXIgYXR0YWNow6knLFxuICAgICdlcnJvcnMuRU1QVFlfUERGJzogJ1ZvdHJlIHBpw6hjZSBqb2ludGUgJTEkcyBlc3QgdmlkZScsXG4gICAgJ2Vycm9ycy5QREZfR0VORVJBTF9QUk9CTEVNJzogJ1ZvdHJlIHBpw6hjZSBqb2ludGUgJTEkcyBlc3QgaWxsaXNpYmxlJyxcbiAgICAnZXJyb3JzLlBERl9IQVNfUkVTVFJJQ1RJT05TJzpcbiAgICAgICAgJ1ZvdHJlIHBpw6hjZSBqb2ludGUgJTEkcyBlc3QgcHJvdMOpZ8OpZS4gVmV1aWxsZXogZW5sZXZlciB0b3V0ZXMgbGVzIHByb3RlY3Rpb25zIGF2YW50IGRlIGpvaW5kcmUgY2UgZmljaGllci4nLFxuICAgICdlcnJvcnMuRklMRU5BTUVfU0hPVUxEX05PVF9DT05UQUlOJzpcbiAgICAgICAgJ0xlIG5vbSBkZSB2b3RyZSBwacOoY2Ugam9pbnRlICUxJHMgY29udGllbnQgZGVzIGNhcmFjdMOocmVzIGludGVyZGl0cy4nLFxuICAgICdlcnJvcnMuNDA2JzpcbiAgICAgICAgJ1ZvdHJlIHBpw6hjZSBqb2ludGUgJTEkcyBuZSBjb3JyZXNwb25kIHBhcyBhdSB0eXBlIGRlIGNvbnRlbnUgYXV0b3Jpc8OpJyxcbiAgICAnZXJyb3JzLjQxMyc6XG4gICAgICAgICdWb3RyZSBwacOoY2Ugam9pbnRlICUxJHMgYSB1bmUgdGFpbGxlIHN1cMOpcmlldXJlIG91IMOpZ2FsZSDDoCBsYSBsaW1pdGUgYXV0b3Jpc8OpZSA6ICUyJHMgTW8nLFxuICAgICdlcnJvcnMuNDE1JzpcbiAgICAgICAgJ0xlIHR5cGUgZGUgdm90cmUgcGnDqGNlIGpvaW50ZSAlMSRzIG5lIGZpZ3VyZSBwYXMgcGFybWkgY2V1eCBxdWkgc29udCBhdXRvcmlzw6lzIDogXCIlMiRzXCInLFxuICAgICdlcnJvcnMuNDIyJzogJ0VjaGVjIGRlIGxhIHNhdXZlZ2FyZGUgZGUgbGEgcGnDqGNlIGpvaW50ZSAlMSRzJyxcbiAgICAnZXJyb3JzLjUwMCc6XG4gICAgICAgICdFY2hlYyBkZSBsYSBzYXV2ZWdhcmRlIGRlIGxhIHBpw6hjZSBqb2ludGUgJTEkcy4gVmV1aWxsZXogcsOpZXNzYXllciBhdmVjIHVuIGF1dHJlIGZpY2hpZXIuJyxcbiAgICAnZXJyb3JzLnN1bW1hcnkudGl0bGUnOiAnSWwgeSBhIHVuIHByb2Jsw6htZScsXG4gICAgJ2ZvZWhuLXVwbG9hZGVyLmNob29zZS1idXR0b24tbGFiZWwnOiAnQ2hvaXNpc3NleiB1biBkb2N1bWVudCcsXG4gICAgJ2ZvZWhuLXVwbG9hZGVyLmNob29zZS1idXR0b24tbGFiZWwtbXVsdGlwbGUnOlxuICAgICAgICAnQ2hvaXNpc3NleiB1biBvdSBwbHVzaWV1cnMgZG9jdW1lbnRzJyxcbiAgICAnZm9laG4tdXBsb2FkZXIuZHJvcC16b25lLWxhYmVsJzogJ0TDqXBvc2V6IHVuIGRvY3VtZW50IG91IGNsaXF1ZXogaWNpJyxcbiAgICAnZm9laG4tdXBsb2FkZXIuZHJvcC16b25lLWxhYmVsLW11bHRpcGxlJzpcbiAgICAgICAgJ0TDqXBvc2V6IHVuIG91IHBsdXNpZXVycyBkb2N1bWVudHMgb3UgY2xpcXVleiBpY2knLFxuICAgICdmb2Vobi11cGxvYWRlci5kZWxldGUtY29uZmlybWF0aW9uLW1lc3NhZ2UnOlxuICAgICAgICAnw4p0ZXMtdm91cyBzw7tyIGRlIHZvdWxvaXIgc3VwcHJpbWVyIGNlIGZpY2hpZXIgPycsXG4gICAgJ2ZvZWhuLXVwbG9hZGVyLmFiYnItbWVnYW9jdGV0JzogJ01vJyxcbiAgICAnZm9laG4tdXBsb2FkZXIuYWJici1tZWdhb2N0ZXQtdGl0bGUnOiAnTWVnYW9jdGV0JyxcbiAgICAnZm9laG4tdXBsb2FkZXIuZGVsZXRlLWljb24tdGl0bGUnOiAnU3VwcHJpbWVyIHtkb2NOYW1lfScsXG4gICAgJ3VzZS1sb2dpbi50ZXh0LmRlY2lzaW9uLWVsZWN0cm9uaXF1ZS1hdmFpbGFibGUnOlxuICAgICAgICAnUG91ciBvYnRlbmlyIGxhIG5vdGlmaWNhdGlvbiBkZSBsYSBkw6ljaXNpb24gc291cyBmb3JtZSDDqWxlY3Ryb25pcXVlICcgK1xuICAgICAgICAnKGZpY2hpZXIgYXUgZm9ybWF0IHBkZiksIHZvdXMgZGV2ZXogZGVtYW5kZXIgbGEgcHJlc3RhdGlvbiBlbiDDqXRhbnQgY29ubmVjdMOpIGF1IHBvcnRhaWwgc8OpY3VyaXPDqS4nLFxuICAgICd1c2UtbG9naW4udGV4dCc6XG4gICAgICAgIFwiQ2V0dGUgcHJlc3RhdGlvbiBlc3QgYXVzc2kgdXRpbGlzYWJsZSBhdSB0cmF2ZXJzIGRlIGwnZXNwYWNlIHPDqWN1cmlzw6kgcXVpIHZvdXMgXCIgK1xuICAgICAgICBcInBlcm1ldCBkZSBwcsOpLXJlbXBsaXIgbGUgZm9ybXVsYWlyZSBldCBkZSBzdWl2cmUgbCdhdmFuY2VtZW50IGRlIHRyYWl0ZW1lbnQgZGUgbGEgZGVtYW5kZS5cIixcbiAgICAndXNlLWxvZ2luLmJ1dHRvbi50ZXh0JzogJ0Nvbm5lY3Rlei12b3VzJyxcbiAgICAnZm9laG4tcGljdHVyZS11cGxvYWQuY2hvb3NlLWJ1dHRvbi1sYWJlbCc6ICdDaG9pc2lzc2V6IHVuZSBwaG90bycsXG4gICAgJ2ZvZWhuLXBpY3R1cmUtdXBsb2FkLmxvYWRpbmctbGFiZWwnOiAnQ2hhcmdlbWVudC4uLicsXG4gICAgJ2ZvZWhuLXBpY3R1cmUtdXBsb2FkLmxvYWRpbmctZmFpbHVyZS1sYWJlbCc6XG4gICAgICAgICdJbXBvc3NpYmxlIGRlIGNoYXJnZXIgbGEgcGhvdG8gc8OpbGVjdGlvbm7DqWUnLFxuICAgICdmb2Vobi1waWN0dXJlLXVwbG9hZC52YWxpZGF0ZS1zZWxlY3Rpb24tbGFiZWwnOiAnVmFsaWRlciBsYSBzw6lsZWN0aW9uJyxcbiAgICAnZm9laG4tcGljdHVyZS11cGxvYWQuY2FuY2VsLXNlbGVjdGlvbi1sYWJlbCc6ICdBbm51bGVyJyxcbiAgICAnZm9laG4tcGljdHVyZS11cGxvYWQuc2VsZWN0aW9uLW5vdC12YWxpZGF0ZWQtbGFiZWwnOlxuICAgICAgICAnTWVyY2kgZGUgdmFsaWRlciB2b3RyZSBzw6lsZWN0aW9uJyxcbiAgICAnZm9laG4tcGljdHVyZS11cGxvYWQuZGVsZXRlLXBpY3R1cmUtbGFiZWwnOiAnU3VwcHJpbWVyJyxcbiAgICAnZm9laG4tdGFibGUudG90YWxFbGVtZW50cyc6ICd7dG90YWx9IMOpbMOpbWVudHMgdHJvdXbDqXMnLFxuICAgICdmb2Vobi10YWJsZS50b3RhbEVsZW1lbnRzLjEnOiAnMSDDqWzDqW1lbnQgdHJvdXbDqScsXG4gICAgJ2ZvZWhuLXRhYmxlLnRvdGFsRWxlbWVudHMuMCc6ICdBdWN1biByw6lzdWx0YXQnLFxuICAgICdmb2Vobi1zdGF0dXMtcHJvZ3Jlc3MtYmFyLnN0ZXAxJzogJ1NhaXNpZScsXG4gICAgJ2ZvZWhuLXN0YXR1cy1wcm9ncmVzcy1iYXIuc3RlcDEuc3JPbmx5JzogJ0V0YXBlIDEgc3VyIDMsIFNhaXNpZScsXG4gICAgJ2ZvZWhuLXN0YXR1cy1wcm9ncmVzcy1iYXIuc3RlcDInOiAnVsOpcmlmaWNhdGlvbicsXG4gICAgJ2ZvZWhuLXN0YXR1cy1wcm9ncmVzcy1iYXIuc3RlcDIuc3JPbmx5JzogJ0V0YXBlIDIgc3VyIDMsIFbDqXJpZmljYXRpb24nLFxuICAgICdmb2Vobi1zdGF0dXMtcHJvZ3Jlc3MtYmFyLnN0ZXAzJzogJ0NvbmZpcm1hdGlvbicsXG4gICAgJ2ZvZWhuLXN0YXR1cy1wcm9ncmVzcy1iYXIuc3RlcDMuc3JPbmx5JzpcbiAgICAgICAgJ0V0YXBlIDMgc3VyIDMsIENvbmZpcm1hdGlvbiwgZGVtYW5kZSB0cmFuc21pc2UnLFxuICAgICdmb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUuc2VsZWN0ZWQuZGVsZXRlJzogJ1N1cHByaW1lciB7ZWxlbWVudExhYmVsfScsXG4gICAgJ2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5zci1hbm5vdW5jZW1lbnQuZGVsZXRlZCc6ICd7ZWxlbWVudExhYmVsfSBhIMOpdMOpIHN1cHByaW3DqSwgJyxcbiAgICAnZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLnNyLWFubm91bmNlbWVudC5hZGRlZCc6ICd7ZWxlbWVudExhYmVsfSBhIMOpdMOpIGFqb3V0w6ksICcsXG4gICAgJ2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5hdXRvY29tcGxldGUuZW1wdHktbWVzc2FnZSc6ICdUb3VzIGxlcyDDqWzDqW1lbnRzIGRlIGxhIGxpc3RlIGRlIHByb3Bvc2l0aW9uIG9udCBkw6lqw6Agw6l0w6kgYWpvdXTDqXMuJyxcbiAgICAnZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLmF1dG9jb21wbGV0ZS5zY3JlZW4tcmVhZGVyLmxhYmVsJzogJ1PDqWxlY3Rpb25uZXIgdW4gw6lsw6ltZW50IGRhbnMgbGEgbGlzdGUgZGUgcmVjaGVyY2hlJyArXG4gICAgICAgICcgY2ktZGVzc291cyBwb3VyIGxcXCdham91dGVyIMOgIHZvdHJlIHPDqWxlY3Rpb24uJ1xufTtcbiJdfQ==
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1kaWN0aW9uYXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL3Nkay1kaWN0aW9uYXJ5L2RlZmF1bHQtZGljdGlvbmFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBbUI7SUFDOUMsc0JBQXNCLEVBQUUsY0FBYztJQUN0Qyw0QkFBNEIsRUFBRSxNQUFNO0lBQ3BDLDhCQUE4QixFQUFFLE1BQU07SUFDdEMsNkJBQTZCLEVBQUUsT0FBTztJQUN0Qyw4QkFBOEIsRUFBRSxPQUFPO0lBQ3ZDLGdDQUFnQyxFQUFFLFNBQVM7SUFDM0MsbUNBQW1DLEVBQUUsTUFBTTtJQUMzQyxvQ0FBb0MsRUFBRSxlQUFlO0lBQ3JELHNDQUFzQyxFQUFFLCtCQUErQjtJQUN2RSxrQ0FBa0MsRUFBRSxLQUFLO0lBQ3pDLHVDQUF1QyxFQUFFLGVBQWU7SUFDeEQsMkNBQTJDLEVBQ3ZDLDBEQUEwRDtJQUM5RCw2Q0FBNkMsRUFBRSxjQUFjO0lBQzdELGlEQUFpRCxFQUM3QywrQ0FBK0M7SUFDbkQsd0NBQXdDLEVBQUUsS0FBSztJQUMvQyx3Q0FBd0MsRUFBRSxzQkFBc0I7SUFDaEUsNENBQTRDLEVBQUUsYUFBYTtJQUMzRCw2Q0FBNkMsRUFBRSxVQUFVO0lBQ3pELDZCQUE2QixFQUFFLFNBQVM7SUFDeEMsaUNBQWlDLEVBQUUsV0FBVztJQUM5QyxpQ0FBaUMsRUFBRSxhQUFhO0lBQ2hELHVDQUF1QyxFQUFFLDRCQUE0QjtJQUNyRSx3Q0FBd0MsRUFBRSxLQUFLO0lBQy9DLDBCQUEwQixFQUFFLG1DQUFtQztJQUMvRCwyQkFBMkIsRUFBRSxjQUFjO0lBQzNDLG1DQUFtQyxFQUFFLG1CQUFtQjtJQUN4RCw2Q0FBNkMsRUFBRSxtQkFBbUI7SUFDbEUsaUNBQWlDLEVBQUUsb0JBQW9CO0lBQ3ZELDJDQUEyQyxFQUFFLDJCQUEyQjtJQUN4RSxxQ0FBcUMsRUFDakMsZ0VBQWdFO0lBQ3BFLCtDQUErQyxFQUMzQyw4QkFBOEI7SUFDbEMsaUNBQWlDLEVBQUUsVUFBVTtJQUM3QyxtQ0FBbUMsRUFBRSxnQkFBZ0I7SUFDckQsbUNBQW1DLEVBQUUsR0FBRztJQUN4QyxxQ0FBcUMsRUFBRSx3QkFBd0I7SUFDL0Qsc0RBQXNELEVBQ2xELHFCQUFxQjtJQUN6Qix3Q0FBd0MsRUFBRSxZQUFZO0lBQ3RELDJDQUEyQyxFQUFFLHNCQUFzQjtJQUNuRSwrQ0FBK0MsRUFBRSxnQkFBZ0I7SUFDakUsMkNBQTJDLEVBQUUsY0FBYztJQUMzRCx3REFBd0QsRUFDcEQsNkJBQTZCO0lBQ2pDLG1EQUFtRCxFQUFFLHNCQUFzQjtJQUMzRSxrREFBa0QsRUFDOUMsd0JBQXdCO0lBQzVCLDBCQUEwQixFQUN0Qiw4RkFBOEY7SUFDbEcsdUJBQXVCLEVBQ25CLCtFQUErRTtJQUNuRiw0QkFBNEIsRUFDeEIsNkRBQTZEO0lBQ2pFLDRCQUE0QixFQUFFLDRDQUE0QztJQUMxRSw0QkFBNEIsRUFDeEIscURBQXFEO0lBQ3pELGtCQUFrQixFQUFFLGtDQUFrQztJQUN0RCw0QkFBNEIsRUFBRSx1Q0FBdUM7SUFDckUsNkJBQTZCLEVBQ3pCLDRHQUE0RztJQUNoSCxvQ0FBb0MsRUFDaEMsc0VBQXNFO0lBQzFFLFlBQVksRUFDUix1RUFBdUU7SUFDM0UsWUFBWSxFQUNSLDBGQUEwRjtJQUM5RixZQUFZLEVBQ1IseUZBQXlGO0lBQzdGLFlBQVksRUFBRSxnREFBZ0Q7SUFDOUQsWUFBWSxFQUNSLDJGQUEyRjtJQUMvRixzQkFBc0IsRUFBRSxvQkFBb0I7SUFDNUMsb0NBQW9DLEVBQUUsd0JBQXdCO0lBQzlELDZDQUE2QyxFQUN6QyxzQ0FBc0M7SUFDMUMsZ0NBQWdDLEVBQUUsb0NBQW9DO0lBQ3RFLHlDQUF5QyxFQUNyQyxrREFBa0Q7SUFDdEQsNENBQTRDLEVBQ3hDLGlEQUFpRDtJQUNyRCwrQkFBK0IsRUFBRSxJQUFJO0lBQ3JDLHFDQUFxQyxFQUFFLFdBQVc7SUFDbEQsa0NBQWtDLEVBQUUscUJBQXFCO0lBQ3pELGdEQUFnRCxFQUM1QyxzRUFBc0U7UUFDdEUsbUdBQW1HO0lBQ3ZHLGdCQUFnQixFQUNaLGlGQUFpRjtRQUNqRiw0RkFBNEY7SUFDaEcsdUJBQXVCLEVBQUUsZ0JBQWdCO0lBQ3pDLDBDQUEwQyxFQUFFLHNCQUFzQjtJQUNsRSxvQ0FBb0MsRUFBRSxlQUFlO0lBQ3JELDRDQUE0QyxFQUN4Qyw2Q0FBNkM7SUFDakQsK0NBQStDLEVBQUUsc0JBQXNCO0lBQ3ZFLDZDQUE2QyxFQUFFLFNBQVM7SUFDeEQsb0RBQW9ELEVBQ2hELGtDQUFrQztJQUN0QywyQ0FBMkMsRUFBRSxXQUFXO0lBQ3hELDJCQUEyQixFQUFFLDBCQUEwQjtJQUN2RCw2QkFBNkIsRUFBRSxrQkFBa0I7SUFDakQsNkJBQTZCLEVBQUUsZ0JBQWdCO0lBQy9DLGlDQUFpQyxFQUFFLFFBQVE7SUFDM0Msd0NBQXdDLEVBQUUsdUJBQXVCO0lBQ2pFLGlDQUFpQyxFQUFFLGNBQWM7SUFDakQsd0NBQXdDLEVBQUUsNkJBQTZCO0lBQ3ZFLGlDQUFpQyxFQUFFLGNBQWM7SUFDakQsd0NBQXdDLEVBQ3BDLGdEQUFnRDtJQUNwRCxnREFBZ0QsRUFBRSwwQkFBMEI7SUFDNUUsd0RBQXdELEVBQUUsZ0NBQWdDO0lBQzFGLHNEQUFzRCxFQUFFLDhCQUE4QjtJQUN0RixzRUFBc0UsRUFBRSwwQ0FBMEM7SUFDbEgsNERBQTRELEVBQUUsd0JBQXdCO0lBQ3RGLDJEQUEyRCxFQUFFLG9FQUFvRTtJQUNqSSxpRUFBaUUsRUFBRSxvREFBb0Q7UUFDbkgsZ0RBQWdEO0NBQ3ZELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWN5Y2xlXG5pbXBvcnQgeyBEaWN0aW9uYXJ5VHlwZSB9IGZyb20gJy4vc2RrLWRpY3Rpb25hcnkuc2VydmljZSc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0RJQ1RJT05BUlk6IERpY3Rpb25hcnlUeXBlID0ge1xuICAgICdmb2Vobi1pbnB1dC5vcHRpb25hbCc6ICcoZmFjdWx0YXRpZiknLFxuICAgICdmb2Vobi1pbnB1dC1kYXRlLmRheS5sYWJlbCc6ICdKb3VyJyxcbiAgICAnZm9laG4taW5wdXQtZGF0ZS5tb250aC5sYWJlbCc6ICdNb2lzJyxcbiAgICAnZm9laG4taW5wdXQtZGF0ZS55ZWFyLmxhYmVsJzogJ0FubsOpZScsXG4gICAgJ2ZvZWhuLWlucHV0LXRpbWUuaG91cnMubGFiZWwnOiAnSGV1cmUnLFxuICAgICdmb2Vobi1pbnB1dC10aW1lLm1pbnV0ZXMubGFiZWwnOiAnTWludXRlcycsXG4gICAgJ2ZvZWhuLWlucHV0LWFkZHJlc3MuY291bnRyeS5sYWJlbCc6ICdQYXlzJyxcbiAgICAnZm9laG4taW5wdXQtYWRkcmVzcy5sb2NhbGl0eS5sYWJlbCc6ICdOUEEsIExvY2FsaXTDqScsXG4gICAgJ2ZvZWhuLWlucHV0LWFkZHJlc3Muc3RyZWV0LmhlbHAtdGV4dCc6ICdFeGVtcGxlIDogQXZlbnVlIGRlIGxhIFNhbGxheicsXG4gICAgJ2ZvZWhuLWlucHV0LWFkZHJlc3Muc3RyZWV0LmxhYmVsJzogJ1J1ZScsXG4gICAgJ2ZvZWhuLWlucHV0LWFkZHJlc3MuaG91c2VOdW1iZXIubGFiZWwnOiAnTnVtw6lybyBkZSBydWUnLFxuICAgICdmb2Vobi1pbnB1dC1hZGRyZXNzLmhvdXNlTnVtYmVyLmhlbHAtdGV4dCc6XG4gICAgICAgIFwiRXhlbXBsZSA6IDQwIHBvdXIgdW5lIGFkcmVzc2Ugw6AgbCdBdmVudWUgZGUgbGEgU2FsbGF6IDQwXCIsXG4gICAgJ2ZvZWhuLWlucHV0LWFkZHJlc3MucG9zdE9mZmljZUJveFRleHQubGFiZWwnOiAnQ2FzZSBwb3N0YWxlJyxcbiAgICAnZm9laG4taW5wdXQtYWRkcmVzcy5wb3N0T2ZmaWNlQm94VGV4dC5oZWxwLXRleHQnOlxuICAgICAgICAnRXhlbXBsZSA6IENhc2UgcG9zdGFsZSAxMjIgb3UgQ1AxMjIgb3UgQ1AgMTIyJyxcbiAgICAnZm9laG4taW5wdXQtYWRkcmVzcy5hZGRyZXNzTGluZTEubGFiZWwnOiAnYy9vJyxcbiAgICAnZm9laG4taW5wdXQtYWRkcmVzcy5hZGRyZXNzTGluZTIubGFiZWwnOiBcIkNvbXBsw6ltZW50IGQnYWRyZXNzZVwiLFxuICAgICdmb2Vobi1pbnB1dC1mb3JlaWduLWxvY2FsaXR5LnppcENvZGUubGFiZWwnOiAnQ29kZSBwb3N0YWwnLFxuICAgICdmb2Vobi1pbnB1dC1mb3JlaWduLWxvY2FsaXR5LmxvY2FsaXR5LmxhYmVsJzogJ0xvY2FsaXTDqScsXG4gICAgJ2ZvZWhuLW5hdmlnYXRpb24ubmV4dC5sYWJlbCc6ICdTdWl2YW50JyxcbiAgICAnZm9laG4tbmF2aWdhdGlvbi5wcmV2aW91cy5sYWJlbCc6ICdQcsOpY8OpZGVudCcsXG4gICAgJ2ZvZWhuLW5hdmlnYXRpb24udHJhbnNtaXQubGFiZWwnOiAnVHJhbnNtZXR0cmUnLFxuICAgICdmb2Vobi1uYXZpZ2F0aW9uLmNvbnRpbnVlLWxhdGVyLmxhYmVsJzogJ0ZpbmlyIGxhIGRlbWFuZGUgcGx1cyB0YXJkJyxcbiAgICAnZm9laG4tbmF2aWdhdGlvbi5yb3V0ZS5pbmRleC5zZXBhcmF0b3InOiAnc3VyJyxcbiAgICAnZm9laG4tcGFnZS1jb3VudGVyLmxhYmVsJzogJ1BhZ2Uge2N1cnJlbnRQYWdlfSBkZSB7cGFnZUNvdW50fScsXG4gICAgJ2dlc2RlbS1jb25maXJtYXRpb24udGl0bGUnOiAnQ29uZmlybWF0aW9uJyxcbiAgICAnZ2VzZGVtLWNvbmZpcm1hdGlvbi5zdWNjZXNzLWxhYmVsJzogJ0RlbWFuZGUgdHJhbnNtaXNlJyxcbiAgICAnZ2VzZGVtLWNvbmZpcm1hdGlvbi5uZXh0LXN0ZXAuc3VjY2Vzcy1sYWJlbCc6ICdSw6lwb25zZSB0cmFuc21pc2UnLFxuICAgICdnZXNkZW0tY29uZmlybWF0aW9uLmFib3J0LWxhYmVsJzogJ0RlbWFuZGUgYWJhbmRvbm7DqWUnLFxuICAgICdnZXNkZW0tY29uZmlybWF0aW9uLnJlZmVyZW5jZS10aXRsZS5sYWJlbCc6ICdWb3RyZSBudW3DqXJvIGRlIHLDqWbDqXJlbmNlJyxcbiAgICAnZ2VzZGVtLWNvbmZpcm1hdGlvbi5tYWlsLXNlbnQubGFiZWwnOlxuICAgICAgICAnVm91cyByZWNldnJleiB1biBlbWFpbCBkZSBjb25maXJtYXRpb24gZGFucyBxdWVscXVlcyBpbnN0YW50cy4nLFxuICAgICdnZXNkZW0tY29uZmlybWF0aW9uLmRvd25sb2FkLXBkZi1yZWNhcC1idXR0b24nOlxuICAgICAgICAnVMOpbMOpY2hhcmdlciBsYSBkZW1hbmRlIChwZGYpJyxcbiAgICAnZ2VzZGVtLWNvbmZpcm1hdGlvbi5leGl0LWJ1dHRvbic6ICdUZXJtaW5lcicsXG4gICAgJ2dlc2RlbS1jb25maXJtYXRpb24ubG9nb3V0LWJ1dHRvbic6ICdTZSBkw6ljb25uZWN0ZXInLFxuICAgICdnZXNkZW0tY29uZmlybWF0aW9uLmV4dHJhLWNvbnRlbnQnOiAnICcsXG4gICAgJ2ZvZWhuLWRhdGUtcGlja2VyLWJ1dHRvbi5pY29uLXRpdGxlJzogJ0FmZmljaGVyIGxlIGNhbGVuZHJpZXInLFxuICAgICdmb2Vobi1kYXRlLXBpY2tlci1idXR0b24uc2NyZWVuLXJlYWRlci5zZWxlY3RlZC1kYXRlJzpcbiAgICAgICAgJ0RhdGUgc8OpbGVjdGlvbm7DqWUgOicsXG4gICAgJ2ZvZWhuLWRhdGUtcGlja2VyLmNvbnRhaW5lci5hcmlhLWxhYmVsJzogJ0NhbGVuZHJpZXInLFxuICAgICdmb2Vobi1kYXRlLXBpY2tlci5jbG9zZS1idXR0b24uYXJpYS1sYWJlbCc6ICdGZXJtZXIgbGUgY2FsZW5kcmllcicsXG4gICAgJ2ZvZWhuLWRhdGUtcGlja2VyLnByZXZpb3VzLW1vbnRoLWJ1dHRvbi50aXRsZSc6ICdNb2lzIHByw6ljw6lkZW50JyxcbiAgICAnZm9laG4tZGF0ZS1waWNrZXIubmV4dC1tb250aC1idXR0b24udGl0bGUnOiAnTW9pcyBzdWl2YW50JyxcbiAgICAnZm9laG4tZGF0ZS1waWNrZXIuc2NyZWVuLXJlYWRlci5hY3R1YWwtbW9udGgtZGlzcGxheWVkJzpcbiAgICAgICAgJ01vaXMgYWN0dWVsbGVtZW50IGFmZmljaMOpIDonLFxuICAgICdmb2Vobi1kYXRlLXBpY2tlci5zY3JlZW4tcmVhZGVyLm1vbnRoLWlucHV0LmxhYmVsJzogJ1PDqWxlY3Rpb25uZXIgdW4gbW9pcycsXG4gICAgJ2ZvZWhuLWRhdGUtcGlja2VyLnNjcmVlbi1yZWFkZXIueWVhci1pbnB1dC5sYWJlbCc6XG4gICAgICAgICdTw6lsZWN0aW9ubmVyIHVuZSBhbm7DqWUnLFxuICAgICdlcnJvcnMuRklMRU5BTUVfVE9PX0xPTkcnOlxuICAgICAgICAnVm90cmUgcGnDqGNlIGpvaW50ZSAlMSRzIGEgdW4gbm9tIGR1IGZpY2hpZXIgcXVpIGV4Y8OoZGUgbGUgbWF4aW11bSBhdXRvcmlzw6kgOiAlMiRzIGNhcmFjdMOocmVzJyxcbiAgICAnZXJyb3JzLkZJTEVfVE9PX1NNQUxMJzpcbiAgICAgICAgJ1ZvdHJlIHBpw6hjZSBqb2ludGUgJTEkcyBhIHVuZSB0YWlsbGUgaW5mw6lyaWV1cmUgYXUgbWluaW11bSBleGlnw6kgOiAlMiRzIGJ5dGVzJyxcbiAgICAnZXJyb3JzLlBERl9QQVNTV09SRF9MT0NLRUQnOlxuICAgICAgICAnVm90cmUgcGnDqGNlIGpvaW50ZSAlMSRzIGVzdCB2ZXJyb3VpbGzDqWUgcGFyIHVuIG1vdCBkZSBwYXNzZScsXG4gICAgJ2Vycm9ycy5QREZfQ09OVEFJTlNfU0NSSVBUJzogJ1ZvdHJlIHBpw6hjZSBqb2ludGUgJTEkcyBjb250aWVudCB1biBzY3JpcHQnLFxuICAgICdlcnJvcnMuUERGX0hBU19BVFRBQ0hNRU5UUyc6XG4gICAgICAgICdWb3RyZSBwacOoY2Ugam9pbnRlICUxJHMgY29udGllbnQgdW4gZmljaGllciBhdHRhY2jDqScsXG4gICAgJ2Vycm9ycy5FTVBUWV9QREYnOiAnVm90cmUgcGnDqGNlIGpvaW50ZSAlMSRzIGVzdCB2aWRlJyxcbiAgICAnZXJyb3JzLlBERl9HRU5FUkFMX1BST0JMRU0nOiAnVm90cmUgcGnDqGNlIGpvaW50ZSAlMSRzIGVzdCBpbGxpc2libGUnLFxuICAgICdlcnJvcnMuUERGX0hBU19SRVNUUklDVElPTlMnOlxuICAgICAgICAnVm90cmUgcGnDqGNlIGpvaW50ZSAlMSRzIGVzdCBwcm90w6lnw6llLiBWZXVpbGxleiBlbmxldmVyIHRvdXRlcyBsZXMgcHJvdGVjdGlvbnMgYXZhbnQgZGUgam9pbmRyZSBjZSBmaWNoaWVyLicsXG4gICAgJ2Vycm9ycy5GSUxFTkFNRV9TSE9VTERfTk9UX0NPTlRBSU4nOlxuICAgICAgICAnTGUgbm9tIGRlIHZvdHJlIHBpw6hjZSBqb2ludGUgJTEkcyBjb250aWVudCBkZXMgY2FyYWN0w6hyZXMgaW50ZXJkaXRzLicsXG4gICAgJ2Vycm9ycy40MDYnOlxuICAgICAgICAnVm90cmUgcGnDqGNlIGpvaW50ZSAlMSRzIG5lIGNvcnJlc3BvbmQgcGFzIGF1IHR5cGUgZGUgY29udGVudSBhdXRvcmlzw6knLFxuICAgICdlcnJvcnMuNDEzJzpcbiAgICAgICAgJ1ZvdHJlIHBpw6hjZSBqb2ludGUgJTEkcyBhIHVuZSB0YWlsbGUgc3Vww6lyaWV1cmUgb3Ugw6lnYWxlIMOgIGxhIGxpbWl0ZSBhdXRvcmlzw6llIDogJTIkcyBNbycsXG4gICAgJ2Vycm9ycy40MTUnOlxuICAgICAgICAnTGUgdHlwZSBkZSB2b3RyZSBwacOoY2Ugam9pbnRlICUxJHMgbmUgZmlndXJlIHBhcyBwYXJtaSBjZXV4IHF1aSBzb250IGF1dG9yaXPDqXMgOiBcIiUyJHNcIicsXG4gICAgJ2Vycm9ycy40MjInOiAnRWNoZWMgZGUgbGEgc2F1dmVnYXJkZSBkZSBsYSBwacOoY2Ugam9pbnRlICUxJHMnLFxuICAgICdlcnJvcnMuNTAwJzpcbiAgICAgICAgJ0VjaGVjIGRlIGxhIHNhdXZlZ2FyZGUgZGUgbGEgcGnDqGNlIGpvaW50ZSAlMSRzLiBWZXVpbGxleiByw6llc3NheWVyIGF2ZWMgdW4gYXV0cmUgZmljaGllci4nLFxuICAgICdlcnJvcnMuc3VtbWFyeS50aXRsZSc6ICdJbCB5IGEgdW4gcHJvYmzDqG1lJyxcbiAgICAnZm9laG4tdXBsb2FkZXIuY2hvb3NlLWJ1dHRvbi1sYWJlbCc6ICdDaG9pc2lzc2V6IHVuIGRvY3VtZW50JyxcbiAgICAnZm9laG4tdXBsb2FkZXIuY2hvb3NlLWJ1dHRvbi1sYWJlbC1tdWx0aXBsZSc6XG4gICAgICAgICdDaG9pc2lzc2V6IHVuIG91IHBsdXNpZXVycyBkb2N1bWVudHMnLFxuICAgICdmb2Vobi11cGxvYWRlci5kcm9wLXpvbmUtbGFiZWwnOiAnRMOpcG9zZXogdW4gZG9jdW1lbnQgb3UgY2xpcXVleiBpY2knLFxuICAgICdmb2Vobi11cGxvYWRlci5kcm9wLXpvbmUtbGFiZWwtbXVsdGlwbGUnOlxuICAgICAgICAnRMOpcG9zZXogdW4gb3UgcGx1c2lldXJzIGRvY3VtZW50cyBvdSBjbGlxdWV6IGljaScsXG4gICAgJ2ZvZWhuLXVwbG9hZGVyLmRlbGV0ZS1jb25maXJtYXRpb24tbWVzc2FnZSc6XG4gICAgICAgICfDinRlcy12b3VzIHPDu3IgZGUgdm91bG9pciBzdXBwcmltZXIgY2UgZmljaGllciA/JyxcbiAgICAnZm9laG4tdXBsb2FkZXIuYWJici1tZWdhb2N0ZXQnOiAnTW8nLFxuICAgICdmb2Vobi11cGxvYWRlci5hYmJyLW1lZ2FvY3RldC10aXRsZSc6ICdNZWdhb2N0ZXQnLFxuICAgICdmb2Vobi11cGxvYWRlci5kZWxldGUtaWNvbi10aXRsZSc6ICdTdXBwcmltZXIge2RvY05hbWV9JyxcbiAgICAndXNlLWxvZ2luLnRleHQuZGVjaXNpb24tZWxlY3Ryb25pcXVlLWF2YWlsYWJsZSc6XG4gICAgICAgICdQb3VyIG9idGVuaXIgbGEgbm90aWZpY2F0aW9uIGRlIGxhIGTDqWNpc2lvbiBzb3VzIGZvcm1lIMOpbGVjdHJvbmlxdWUgJyArXG4gICAgICAgICcoZmljaGllciBhdSBmb3JtYXQgcGRmKSwgdm91cyBkZXZleiBkZW1hbmRlciBsYSBwcmVzdGF0aW9uIGVuIMOpdGFudCBjb25uZWN0w6kgYXUgcG9ydGFpbCBzw6ljdXJpc8OpLicsXG4gICAgJ3VzZS1sb2dpbi50ZXh0JzpcbiAgICAgICAgXCJDZXR0ZSBwcmVzdGF0aW9uIGVzdCBhdXNzaSB1dGlsaXNhYmxlIGF1IHRyYXZlcnMgZGUgbCdlc3BhY2Ugc8OpY3VyaXPDqSBxdWkgdm91cyBcIiArXG4gICAgICAgIFwicGVybWV0IGRlIHByw6ktcmVtcGxpciBsZSBmb3JtdWxhaXJlIGV0IGRlIHN1aXZyZSBsJ2F2YW5jZW1lbnQgZGUgdHJhaXRlbWVudCBkZSBsYSBkZW1hbmRlLlwiLFxuICAgICd1c2UtbG9naW4uYnV0dG9uLnRleHQnOiAnQ29ubmVjdGV6LXZvdXMnLFxuICAgICdmb2Vobi1waWN0dXJlLXVwbG9hZC5jaG9vc2UtYnV0dG9uLWxhYmVsJzogJ0Nob2lzaXNzZXogdW5lIHBob3RvJyxcbiAgICAnZm9laG4tcGljdHVyZS11cGxvYWQubG9hZGluZy1sYWJlbCc6ICdDaGFyZ2VtZW50Li4uJyxcbiAgICAnZm9laG4tcGljdHVyZS11cGxvYWQubG9hZGluZy1mYWlsdXJlLWxhYmVsJzpcbiAgICAgICAgJ0ltcG9zc2libGUgZGUgY2hhcmdlciBsYSBwaG90byBzw6lsZWN0aW9ubsOpZScsXG4gICAgJ2ZvZWhuLXBpY3R1cmUtdXBsb2FkLnZhbGlkYXRlLXNlbGVjdGlvbi1sYWJlbCc6ICdWYWxpZGVyIGxhIHPDqWxlY3Rpb24nLFxuICAgICdmb2Vobi1waWN0dXJlLXVwbG9hZC5jYW5jZWwtc2VsZWN0aW9uLWxhYmVsJzogJ0FubnVsZXInLFxuICAgICdmb2Vobi1waWN0dXJlLXVwbG9hZC5zZWxlY3Rpb24tbm90LXZhbGlkYXRlZC1sYWJlbCc6XG4gICAgICAgICdNZXJjaSBkZSB2YWxpZGVyIHZvdHJlIHPDqWxlY3Rpb24nLFxuICAgICdmb2Vobi1waWN0dXJlLXVwbG9hZC5kZWxldGUtcGljdHVyZS1sYWJlbCc6ICdTdXBwcmltZXInLFxuICAgICdmb2Vobi10YWJsZS50b3RhbEVsZW1lbnRzJzogJ3t0b3RhbH0gw6lsw6ltZW50cyB0cm91dsOpcycsXG4gICAgJ2ZvZWhuLXRhYmxlLnRvdGFsRWxlbWVudHMuMSc6ICcxIMOpbMOpbWVudCB0cm91dsOpJyxcbiAgICAnZm9laG4tdGFibGUudG90YWxFbGVtZW50cy4wJzogJ0F1Y3VuIHLDqXN1bHRhdCcsXG4gICAgJ2ZvZWhuLXN0YXR1cy1wcm9ncmVzcy1iYXIuc3RlcDEnOiAnU2Fpc2llJyxcbiAgICAnZm9laG4tc3RhdHVzLXByb2dyZXNzLWJhci5zdGVwMS5zck9ubHknOiAnRXRhcGUgMSBzdXIgMywgU2Fpc2llJyxcbiAgICAnZm9laG4tc3RhdHVzLXByb2dyZXNzLWJhci5zdGVwMic6ICdWw6lyaWZpY2F0aW9uJyxcbiAgICAnZm9laG4tc3RhdHVzLXByb2dyZXNzLWJhci5zdGVwMi5zck9ubHknOiAnRXRhcGUgMiBzdXIgMywgVsOpcmlmaWNhdGlvbicsXG4gICAgJ2ZvZWhuLXN0YXR1cy1wcm9ncmVzcy1iYXIuc3RlcDMnOiAnQ29uZmlybWF0aW9uJyxcbiAgICAnZm9laG4tc3RhdHVzLXByb2dyZXNzLWJhci5zdGVwMy5zck9ubHknOlxuICAgICAgICAnRXRhcGUgMyBzdXIgMywgQ29uZmlybWF0aW9uLCBkZW1hbmRlIHRyYW5zbWlzZScsXG4gICAgJ2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5zZWxlY3RlZC5kZWxldGUnOiAnU3VwcHJpbWVyIHtlbGVtZW50TGFiZWx9JyxcbiAgICAnZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLnNyLWFubm91bmNlbWVudC5kZWxldGVkJzogJ3tlbGVtZW50TGFiZWx9IGEgw6l0w6kgc3VwcHJpbcOpLCcsXG4gICAgJ2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5zci1hbm5vdW5jZW1lbnQuYWRkZWQnOiAne2VsZW1lbnRMYWJlbH0gYSDDqXTDqSBham91dMOpLCcsXG4gICAgJ2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5zci1kZWZhdWx0LWZvY3VzLm5vLWVsZW1lbnQtdG8tZGVsZXRlJzogJ0F1Y3VuIMOpbMOpbWVudCDDoCBzdXBwcmltZXIgZGFucyBsYSBsaXN0ZS4nLFxuICAgICdmb2Vobi1tdWx0aXNlbGVjdC1hdXRvY29tcGxldGUuc3ItZGVmYXVsdC1zZWxlY3RlZC1lbGVtZW50JzogJyhzw6lsZWN0aW9uIHBhciBkw6lmYXV0KScsXG4gICAgJ2ZvZWhuLW11bHRpc2VsZWN0LWF1dG9jb21wbGV0ZS5hdXRvY29tcGxldGUuZW1wdHktbWVzc2FnZSc6ICdUb3VzIGxlcyDDqWzDqW1lbnRzIGRlIGxhIGxpc3RlIGRlIHByb3Bvc2l0aW9uIG9udCBkw6lqw6Agw6l0w6kgYWpvdXTDqXMuJyxcbiAgICAnZm9laG4tbXVsdGlzZWxlY3QtYXV0b2NvbXBsZXRlLmF1dG9jb21wbGV0ZS5zY3JlZW4tcmVhZGVyLmxhYmVsJzogJ1PDqWxlY3Rpb25uZXIgdW4gw6lsw6ltZW50IGRhbnMgbGEgbGlzdGUgZGUgcmVjaGVyY2hlJyArXG4gICAgICAgICcgY2ktZGVzc291cyBwb3VyIGxcXCdham91dGVyIMOgIHZvdHJlIHPDqWxlY3Rpb24uJ1xufTtcbiJdfQ==
@@ -1448,8 +1448,10 @@ const DEFAULT_DICTIONARY = {
1448
1448
  'foehn-status-progress-bar.step3': 'Confirmation',
1449
1449
  'foehn-status-progress-bar.step3.srOnly': 'Etape 3 sur 3, Confirmation, demande transmise',
1450
1450
  'foehn-multiselect-autocomplete.selected.delete': 'Supprimer {elementLabel}',
1451
- 'foehn-multiselect-autocomplete.sr-announcement.deleted': '{elementLabel} a été supprimé, ',
1452
- 'foehn-multiselect-autocomplete.sr-announcement.added': '{elementLabel} a été ajouté, ',
1451
+ 'foehn-multiselect-autocomplete.sr-announcement.deleted': '{elementLabel} a été supprimé,',
1452
+ 'foehn-multiselect-autocomplete.sr-announcement.added': '{elementLabel} a été ajouté,',
1453
+ 'foehn-multiselect-autocomplete.sr-default-focus.no-element-to-delete': 'Aucun élément à supprimer dans la liste.',
1454
+ 'foehn-multiselect-autocomplete.sr-default-selected-element': '(sélection par défaut)',
1453
1455
  'foehn-multiselect-autocomplete.autocomplete.empty-message': 'Tous les éléments de la liste de proposition ont déjà été ajoutés.',
1454
1456
  'foehn-multiselect-autocomplete.autocomplete.screen-reader.label': 'Sélectionner un élément dans la liste de recherche' +
1455
1457
  ' ci-dessous pour l\'ajouter à votre sélection.'
@@ -7860,14 +7862,11 @@ class FoehnMultiselectAutocompleteComponent extends FoehnAutocompleteComponent {
7860
7862
  }
7861
7863
  }
7862
7864
  }
7863
- removeItem(item) {
7864
- const index = this.model.indexOf(item);
7865
- if (index > -1) {
7866
- this.model.splice(index, 1);
7867
- this.triggerUserInput(this.model);
7868
- this.manageSuggestionListAndFocusAfterRemovingAnItem();
7869
- this.manageScreenReaderAnnouncement(item, true);
7870
- }
7865
+ removeItem(item, index) {
7866
+ this.model.splice(index, 1);
7867
+ this.triggerUserInput(this.model);
7868
+ this.manageSuggestionListAndFocusAfterRemovingAnItem(index);
7869
+ this.manageScreenReaderAnnouncement(item, true);
7871
7870
  }
7872
7871
  trackByFn(index) {
7873
7872
  return index;
@@ -7913,6 +7912,25 @@ class FoehnMultiselectAutocompleteComponent extends FoehnAutocompleteComponent {
7913
7912
  }
7914
7913
  return this.model;
7915
7914
  }
7915
+ focusNextAreaAfterDelete(removedIndex) {
7916
+ // Adjust index depending on default elements that are not deletable
7917
+ if (!!this.defaultElementValues) {
7918
+ removedIndex -= this.defaultElementValues.length;
7919
+ }
7920
+ const closeButtonsElemRefArray = [...this.selectedElemRef.toArray()];
7921
+ // Need to find an element to focus on
7922
+ if (removedIndex === closeButtonsElemRefArray.length) {
7923
+ if (!!closeButtonsElemRefArray.length) {
7924
+ return closeButtonsElemRefArray[removedIndex - 1].nativeElement.focus();
7925
+ }
7926
+ const defaultElemRefArray = [...this.defaultElemRef.toArray()];
7927
+ if (!!defaultElemRefArray.length) {
7928
+ return defaultElemRefArray[defaultElemRefArray.length - 1].nativeElement.focus();
7929
+ }
7930
+ return this.defaultFocusArea.nativeElement.focus();
7931
+ }
7932
+ // Otherwise focus element by DOM replacement
7933
+ }
7916
7934
  filterAutocompleteElements(elements) {
7917
7935
  const filteredElements = ObjectHelper.deepCopy(elements);
7918
7936
  if (!!this.model && !!this.model.length) {
@@ -7945,7 +7963,7 @@ class FoehnMultiselectAutocompleteComponent extends FoehnAutocompleteComponent {
7945
7963
  });
7946
7964
  }
7947
7965
  }
7948
- manageSuggestionListAndFocusAfterRemovingAnItem() {
7966
+ manageSuggestionListAndFocusAfterRemovingAnItem(removedIndex) {
7949
7967
  // Hide message saying no more suggestions to display
7950
7968
  this.showEmptyListMessage = false;
7951
7969
  // Manually show autocomplete because there is at least one suggestions to display
@@ -7954,10 +7972,7 @@ class FoehnMultiselectAutocompleteComponent extends FoehnAutocompleteComponent {
7954
7972
  this.autocompleteComponent.elements = this.filterAutocompleteElements(this.elements);
7955
7973
  // When deleting a selected item, check were to set focus back when no more items to delete
7956
7974
  this.selectedElemRef.changes.pipe(first()).subscribe(() => {
7957
- const selectedElemRefArray = [...this.selectedElemRef.toArray()];
7958
- if (!selectedElemRefArray.length && !!this.selectedItemsArea) {
7959
- this.selectedItemsArea.nativeElement.focus();
7960
- }
7975
+ this.focusNextAreaAfterDelete(removedIndex);
7961
7976
  });
7962
7977
  }
7963
7978
  showAlertMessageAndHideAutocomplete() {
@@ -7987,7 +8002,7 @@ FoehnMultiselectAutocompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVer
7987
8002
  useExisting: forwardRef(() => FoehnMultiselectAutocompleteComponent),
7988
8003
  multi: true
7989
8004
  }
7990
- ], viewQueries: [{ propertyName: "autocompleteComponent", first: true, predicate: ["autocompleteComponent"], descendants: true }, { propertyName: "alertMessageContainer", first: true, predicate: ["alertMessageContainer"], descendants: true }, { propertyName: "selectedItemsArea", first: true, predicate: ["selectedItemsArea"], descendants: true }, { propertyName: "selectedElemRef", predicate: ["selectedElemRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<foehn-autocomplete\n #autocompleteComponent\n [name]=\"name\"\n [label]=\"label\"\n [elements]=\"elements\"\n [elementsUrl]=\"elementsUrl\"\n [elementValue]=\"elementValue\"\n [elementLabel]=\"elementLabel\"\n [elementValueIdentity]=\"elementValueIdentity\"\n [elementDisabled]=\"elementDisabled\"\n [allElementDisabled]=\"allElementDisabled\"\n [elementGroup]=\"elementGroup\"\n [allowCustomValue]=\"false\"\n [searchValueMinCharsCount]=\"searchValueMinCharsCount\"\n [customValueModelGenerator]=\"customValueModelGenerator\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n (userInput)=\"addItem($event)\"\n [(model)]=\"autocompleteInputValue\"\n (elementsLoaded)=\"onAutocompleteElementsLoaded($event)\"\n>\n <small\n *ngIf=\"!showEmptyListMessage\"\n [attr.id]=\"buildChildId('Help')\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText ? helpText : 'foehn-multiselect-autocomplete.autocomplete.screen-reader.label' | fromDictionary\"\n ></small>\n\n <div\n [id]=\"buildChildId('AlertMessageContainer')\"\n role=\"status\"\n #alertMessageContainer\n >\n <p\n *ngIf=\"showEmptyListMessage\"\n class=\"alert alert-info\"\n tabindex=\"0\"\n >{{'foehn-multiselect-autocomplete.autocomplete.empty-message' | fromDictionary}}</p>\n </div>\n</foehn-autocomplete>\n\n<p\n class=\"sr-only\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n>\n {{srAnnouncements}}\n</p>\n\n<div\n role=\"presentation\"\n class=\"selected-list-container d-flex align-content-stretch flex-wrap\"\n [ngClass]=\"!!model && !!model.length ? 'mb-2' : 'mb-0'\"\n #selectedItemsArea\n>\n <ng-container *ngFor=\"let element of model; let index = index; trackBy: trackByFn\">\n <span\n *ngIf=\"!canBeDeleted(index)\"\n class=\"badge badge-pill badge-secondary mr-1 mb-1 py-2 px-3 d-flex align-items-center\"\n [tabindex]=\"disabled ? -1 : 0\"\n [attr.aria-describedby]=\"buildChildId('Label')\"\n >\n {{getLabel(element)}}\n </span>\n <button\n *ngIf=\"canBeDeleted(index)\"\n class=\"btn btn-secondary badge badge-pill mr-1 mb-1 py-2 px-3 d-flex align-items-center\"\n [tabindex]=\"0\"\n [attr.aria-label]=\"getDeleteButtonAriaLabel(element)\"\n [attr.aria-describedby]=\"buildChildId('Label')\"\n [title]=\"getDeleteButtonAriaLabel(element)\"\n (click)=\"removeItem(element)\"\n #selectedElemRef\n >\n {{getLabel(element)}}\n <foehn-icon-times\n aria-hidden=\"true\"\n class=\"ml-2\"\n [title]=\"getDeleteButtonAriaLabel(element)\"\n ></foehn-icon-times>\n </button>\n </ng-container>\n</div>\n", styles: ["foehn-autocomplete p.alert:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem #ffbf47}.selected-list-container button>.btn,.btn-link{line-height:inherit;padding:0}.selected-list-container .btn{text-transform:none}.selected-list-container span.badge-pill:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem #ffbf47}\n"], components: [{ type: FoehnAutocompleteComponent, selector: "foehn-autocomplete", inputs: ["searchValueMinCharsCount", "allowCustomValue", "customValueModelGenerator"] }, { type: FoehnIconTimesComponent, selector: "foehn-icon-times" }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "fromDictionary": SdkDictionaryPipe } });
8005
+ ], viewQueries: [{ propertyName: "autocompleteComponent", first: true, predicate: ["autocompleteComponent"], descendants: true }, { propertyName: "alertMessageContainer", first: true, predicate: ["alertMessageContainer"], descendants: true }, { propertyName: "defaultFocusArea", first: true, predicate: ["defaultFocusArea"], descendants: true }, { propertyName: "selectedElemRef", predicate: ["selectedElemRef"], descendants: true }, { propertyName: "defaultElemRef", predicate: ["defaultElemRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<foehn-autocomplete\n #autocompleteComponent\n [name]=\"name\"\n [label]=\"label\"\n [elements]=\"elements\"\n [elementsUrl]=\"elementsUrl\"\n [elementValue]=\"elementValue\"\n [elementLabel]=\"elementLabel\"\n [elementValueIdentity]=\"elementValueIdentity\"\n [elementDisabled]=\"elementDisabled\"\n [allElementDisabled]=\"allElementDisabled\"\n [elementGroup]=\"elementGroup\"\n [allowCustomValue]=\"false\"\n [searchValueMinCharsCount]=\"searchValueMinCharsCount\"\n [customValueModelGenerator]=\"customValueModelGenerator\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n (userInput)=\"addItem($event)\"\n [(model)]=\"autocompleteInputValue\"\n (elementsLoaded)=\"onAutocompleteElementsLoaded($event)\"\n>\n <small\n *ngIf=\"!showEmptyListMessage\"\n [attr.id]=\"buildChildId('Help')\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText ? helpText : 'foehn-multiselect-autocomplete.autocomplete.screen-reader.label' | fromDictionary\"\n ></small>\n\n <div\n [id]=\"buildChildId('AlertMessageContainer')\"\n role=\"status\"\n #alertMessageContainer\n >\n <p\n *ngIf=\"showEmptyListMessage\"\n class=\"alert alert-info\"\n tabindex=\"0\"\n >{{'foehn-multiselect-autocomplete.autocomplete.empty-message' | fromDictionary}}</p>\n </div>\n</foehn-autocomplete>\n\n<p\n class=\"sr-only\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n>\n {{srAnnouncements}}\n</p>\n\n<div\n role=\"presentation\"\n class=\"selected-list-container d-flex align-content-stretch flex-wrap\"\n [ngClass]=\"!!model && !!model.length ? 'mb-2' : 'mb-0'\"\n>\n <span\n *ngIf=\"(!defaultElementValues || !defaultElementValues.length) && (!model || !model.length)\"\n class=\"sr-only\"\n [tabindex]=\"disabled ? -1 : 0\"\n [innerHTML]=\"'foehn-multiselect-autocomplete.sr-default-focus.no-element-to-delete' | fromDictionary\"\n #defaultFocusArea\n ></span>\n <ng-container *ngFor=\"let element of model; let index = index; trackBy: trackByFn\">\n <span\n *ngIf=\"!canBeDeleted(index)\"\n class=\"badge badge-pill badge-secondary mr-1 mb-1 py-2 px-3 d-flex align-items-center\"\n [tabindex]=\"disabled ? -1 : 0\"\n [attr.aria-describedby]=\"buildChildId('Label')\"\n #defaultElemRef\n >\n {{getLabel(element)}}\n <span class=\"sr-only\">\n {{'foehn-multiselect-autocomplete.sr-default-selected-element' | fromDictionary}}\n </span>\n </span>\n <button\n *ngIf=\"canBeDeleted(index)\"\n class=\"btn btn-secondary badge badge-pill mr-1 mb-1 py-2 px-3 d-flex align-items-center\"\n [tabindex]=\"0\"\n [attr.aria-label]=\"getDeleteButtonAriaLabel(element)\"\n [attr.aria-describedby]=\"buildChildId('Label')\"\n [title]=\"getDeleteButtonAriaLabel(element)\"\n (click)=\"removeItem(element, index)\"\n #selectedElemRef\n >\n {{getLabel(element)}}\n <foehn-icon-times\n aria-hidden=\"true\"\n class=\"ml-2\"\n [title]=\"getDeleteButtonAriaLabel(element)\"\n ></foehn-icon-times>\n </button>\n </ng-container>\n</div>\n", styles: ["foehn-autocomplete p.alert:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem #ffbf47}.selected-list-container button>.btn,.btn-link{line-height:inherit;padding:0}.selected-list-container .btn{text-transform:none}.selected-list-container span.badge-pill:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem #ffbf47}\n"], components: [{ type: FoehnAutocompleteComponent, selector: "foehn-autocomplete", inputs: ["searchValueMinCharsCount", "allowCustomValue", "customValueModelGenerator"] }, { type: FoehnIconTimesComponent, selector: "foehn-icon-times" }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "fromDictionary": SdkDictionaryPipe } });
7991
8006
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: FoehnMultiselectAutocompleteComponent, decorators: [{
7992
8007
  type: Component,
7993
8008
  args: [{
@@ -8011,9 +8026,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImpor
8011
8026
  }], selectedElemRef: [{
8012
8027
  type: ViewChildren,
8013
8028
  args: ['selectedElemRef']
8014
- }], selectedItemsArea: [{
8029
+ }], defaultElemRef: [{
8030
+ type: ViewChildren,
8031
+ args: ['defaultElemRef']
8032
+ }], defaultFocusArea: [{
8015
8033
  type: ViewChild,
8016
- args: ['selectedItemsArea']
8034
+ args: ['defaultFocusArea']
8017
8035
  }], defaultElementValues: [{
8018
8036
  type: Input
8019
8037
  }], defaultElementValue: [{