@eui/ecl 18.0.0-next.56 → 18.0.0-next.57

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/docs/components/EclBannerComponent.html +1 -1
  2. package/docs/components/EclButtonComponent.html +1 -1
  3. package/docs/components/EclFileComponent.html +1 -1
  4. package/docs/components/EclFileItemComponent.html +1 -1
  5. package/docs/components/EclGalleryComponent.html +1 -1
  6. package/docs/components/EclListIllustrationItemComponent.html +1 -1
  7. package/docs/components/EclMenuItemComponent.html +1 -1
  8. package/docs/components/EclMenuMegaItemComponent.html +1 -1
  9. package/docs/components/EclMultiselectDropdownComponent.html +1 -1
  10. package/docs/components/EclPaginationComponent.html +1 -1
  11. package/docs/components/EclSiteHeaderComponent.html +1 -1
  12. package/docs/components/EclSiteHeaderLanguagePopoverComponent.html +1 -1
  13. package/docs/components/EclSiteHeaderLoginComponent.html +2 -2
  14. package/docs/components/EclSocialMediaFollowComponent.html +1 -1
  15. package/docs/components/EclSocialMediaShareComponent.html +1 -1
  16. package/docs/components/EclSocialMediaShareItemComponent.html +1 -1
  17. package/docs/components/EclTabsComponent.html +1 -1
  18. package/docs/components/EclTimelineItemComponent.html +2 -40
  19. package/docs/dependencies.html +1 -1
  20. package/docs/directives/EclHelpBlockDirective.html +1 -1
  21. package/docs/js/search/search_index.js +2 -2
  22. package/esm2022/lib/components/ecl-banner/ecl-banner.component.mjs +3 -4
  23. package/esm2022/lib/components/ecl-button/ecl-button.component.mjs +3 -3
  24. package/esm2022/lib/components/ecl-carousel/ecl-carousel.component.mjs +3 -3
  25. package/esm2022/lib/components/ecl-content-item/ecl-content-item.component.mjs +6 -2
  26. package/esm2022/lib/components/ecl-file/ecl-file-item/ecl-file-item.component.mjs +3 -4
  27. package/esm2022/lib/components/ecl-file/ecl-file.component.mjs +5 -6
  28. package/esm2022/lib/components/ecl-gallery/ecl-gallery.component.mjs +9 -10
  29. package/esm2022/lib/components/ecl-help-block/ecl-help-block.directive.mjs +5 -10
  30. package/esm2022/lib/components/ecl-list-illustration/ecl-list-illustration-item.component.mjs +3 -4
  31. package/esm2022/lib/components/ecl-menu/ecl-menu/ecl-menu-item.component.mjs +3 -3
  32. package/esm2022/lib/components/ecl-menu/ecl-menu-mega/ecl-menu-mega-item.component.mjs +3 -3
  33. package/esm2022/lib/components/ecl-multiselect/ecl-multiselect-dropdown/ecl-multiselect-dropdown.component.mjs +11 -12
  34. package/esm2022/lib/components/ecl-pagination/ecl-pagination.component.mjs +4 -5
  35. package/esm2022/lib/components/ecl-site-header/ecl-site-header.component.mjs +5 -5
  36. package/esm2022/lib/components/ecl-site-header/language/ecl-site-header-language-popover.component.mjs +7 -8
  37. package/esm2022/lib/components/ecl-site-header/login/ecl-site-header-login.component.mjs +8 -14
  38. package/esm2022/lib/components/ecl-social-media-follow/ecl-social-media-follow.component.mjs +3 -4
  39. package/esm2022/lib/components/ecl-social-media-share/ecl-social-media-share-item.component.mjs +3 -3
  40. package/esm2022/lib/components/ecl-social-media-share/ecl-social-media-share.component.mjs +5 -10
  41. package/esm2022/lib/components/ecl-tabs/ecl-tabs.component.mjs +3 -3
  42. package/esm2022/lib/components/ecl-timeline/ecl-timeline-item.component.mjs +7 -16
  43. package/fesm2022/eui-ecl.mjs +782 -756
  44. package/fesm2022/eui-ecl.mjs.map +3 -3
  45. package/lib/components/ecl-content-item/ecl-content-item.component.d.ts +1 -0
  46. package/lib/components/ecl-content-item/ecl-content-item.component.d.ts.map +1 -1
  47. package/lib/components/ecl-file/ecl-file-item/ecl-file-item.component.d.ts +1 -1
  48. package/lib/components/ecl-help-block/ecl-help-block.directive.d.ts +2 -1
  49. package/lib/components/ecl-help-block/ecl-help-block.directive.d.ts.map +1 -1
  50. package/lib/components/ecl-site-header/login/ecl-site-header-login.component.d.ts +2 -1
  51. package/lib/components/ecl-site-header/login/ecl-site-header-login.component.d.ts.map +1 -1
  52. package/lib/components/ecl-social-media-share/ecl-social-media-share.component.d.ts +2 -1
  53. package/lib/components/ecl-social-media-share/ecl-social-media-share.component.d.ts.map +1 -1
  54. package/lib/components/ecl-timeline/ecl-timeline-item.component.d.ts +3 -10
  55. package/lib/components/ecl-timeline/ecl-timeline-item.component.d.ts.map +1 -1
  56. package/package.json +1 -1
@@ -6,15 +6,14 @@ import { KeyCode } from '../../../utils';
6
6
  import { ECLBaseDirective } from '../../ecl-base.directive';
7
7
  import { EclMultiselectOptionComponent, } from '../ecl-multiselect-option/ecl-multiselect-option.component';
8
8
  import * as i0 from "@angular/core";
9
- import * as i1 from "@angular/common";
10
- import * as i2 from "../../ecl-checkbox/ecl-checkbox.directive";
11
- import * as i3 from "../../ecl-checkbox/ecl-checkbox-label.component";
12
- import * as i4 from "../../ecl-checkbox/ecl-checkbox-input.directive";
13
- import * as i5 from "../../ecl-button/ecl-button.component";
14
- import * as i6 from "../ecl-multiselect-option/ecl-multiselect-option.component";
15
- import * as i7 from "../ecl-multiselect-input/ecl-multiselect-input.component";
16
- import * as i8 from "../ecl-multiselect-optgroup/ecl-multiselect-optgroup.component";
17
- import * as i9 from "@ngx-translate/core";
9
+ import * as i1 from "../../ecl-checkbox/ecl-checkbox.directive";
10
+ import * as i2 from "../../ecl-checkbox/ecl-checkbox-label.component";
11
+ import * as i3 from "../../ecl-checkbox/ecl-checkbox-input.directive";
12
+ import * as i4 from "../../ecl-button/ecl-button.component";
13
+ import * as i5 from "../ecl-multiselect-option/ecl-multiselect-option.component";
14
+ import * as i6 from "../ecl-multiselect-input/ecl-multiselect-input.component";
15
+ import * as i7 from "../ecl-multiselect-optgroup/ecl-multiselect-optgroup.component";
16
+ import * as i8 from "@ngx-translate/core";
18
17
  export class EclMultiselectDropdownComponent extends ECLBaseDirective {
19
18
  get isInvalid() {
20
19
  return this._isInvalid;
@@ -416,7 +415,7 @@ export class EclMultiselectDropdownComponent extends ECLBaseDirective {
416
415
  useExisting: forwardRef(() => EclMultiselectDropdownComponent),
417
416
  multi: true,
418
417
  },
419
- ], viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "eclMultiselectInput", first: true, predicate: ["eclMultiselectInput"], descendants: true }, { propertyName: "selectAllCheckbox", first: true, predicate: ["selectAllCheckbox"], descendants: true }, { propertyName: "selectAll", first: true, predicate: ["selectAll"], descendants: true }, { propertyName: "closeBtn", first: true, predicate: ["closeBtn"], descendants: true, read: ElementRef }, { propertyName: "clearAllBtn", first: true, predicate: ["clearAllBtn"], descendants: true, read: ElementRef }, { propertyName: "multiOptionComponents", predicate: EclMultiselectOptionComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div eclMultiselectInput #eclMultiselectInput [inputPlaceholder]=\"mainInputPlaceholder\" [selectedItems]=\"selectedItems\"\n (mainInputClick)=\"onClickMainInput($event)\" (mainInputKeydown)=\"onKeydownMainInput($event)\" [isDisabled]=\"disabled\"\n [ariaLabeledby]=\"ariaLabeledby\" [ariaDescribedby]=\"ariaDescribedby\" [toggleLabel]=\"toggleLabel\" [ariaControls]=\"dropdownId\" [isInvalid]=\"isInvalid\"\n [isDropdownExpanded]=\"isShowMultiselectDropdown\" [eclSize]=\"eclSize\" [toggleId]=\"toggleId\"></div>\n<div\n [style.display]=\"isShowMultiselectDropdown ? 'block' : 'none'\"\n class=\"ecl-select__multiple-dropdown ecl-select__container ecl-select__container--{{eclSize}}\"\n [id]=\"dropdownId\">\n <input\n class=\"ecl-text-input\"\n type=\"search\"\n #searchInput\n [placeholder]=\"searchFieldPlaceholder\"\n (input)=\"onSearch($event.target)\"\n (keydown.enter)=\"onEnterSearch($event)\"\n (keydown.arrowup)=\"onArrowUpSearch($event)\"\n (keydown.arrowdown)=\"onArrowDownSearch($event)\" />\n <div eclCheckbox #selectAll class=\"ecl-select__multiple-all\">\n <input\n eclCheckboxInput\n #selectAllCheckbox\n [id]=\"selectAllId\"\n type=\"checkbox\"\n (click)=\"onSelectAll()\"\n (keydown.arrowup)=\"onArrowUpSelectAll($event)\"\n (keydown.arrowdown)=\"onArrowDownSelectAll($event)\" />\n <label [for]=\"selectAllId\" eclCheckboxLabel> {{ 'ecl.multiselect.SELECT-ALL' | translate }} ({{ optionsCount }}) </label>\n </div>\n <div class=\"ecl-select__multiple-options\">\n <ng-container *ngFor=\"let item of multiOptionDirectives\">\n @if (item.isOptGroup()) {\n <fieldset eclMultiselectOptgroup [label]=\"item.label\">\n <div\n eclMultiselectOption\n *ngFor=\"let elem of item.eclOptionItems\"\n [value]=\"elem.value\"\n [label]=\"elem.label\"\n [disabled]=\"elem.disabled\"\n [isChecked]=\"elem.selected\"\n [class]=\"elem.class\"\n (optionClick)=\"onOptionSelected($event)\"\n (optionKeydown)=\"onKeydownOption($event)\"></div>\n </fieldset>\n } @else if (!item.isOptGroup()) {\n <div\n eclMultiselectOption\n [value]=\"item.value\"\n [label]=\"item.label\"\n [disabled]=\"item.disabled\"\n [isChecked]=\"item.selected\"\n [class]=\"item.class\"\n (optionClick)=\"onOptionSelected($event)\"\n (optionKeydown)=\"onKeydownOption($event)\"></div>\n }\n\n </ng-container>\n\n @if (isShowNoResultsFound) {\n <div class=\"ecl-select__multiple-no-results\">\n <span>{{ 'ecl.multiselect.NO-RESULTS-FOUND' | translate }}</span>\n </div>\n }\n\n </div>\n @if (isShowToolbar) {\n <div class=\"ecl-select-multiple-toolbar\">\n <button\n eclButton\n variant=\"ghost\"\n #clearAllBtn\n (keydown.arrowup)=\"onArrowUpCloseClear($event)\"\n (keydown.arrowright)=\"onArrowRightClear($event)\"\n (keydown.enter)=\"onEnterClear($event)\"\n (click)=\"onClickClearAll($event)\">\n {{ 'ecl.multiselect.CLEAR-ALL' | translate }}\n </button>\n <button\n eclButton\n variant=\"primary\"\n #closeBtn\n (keydown.arrowup)=\"onArrowUpCloseClear($event)\"\n (keydown.arrowleft)=\"onArrowLeftClose($event)\"\n (keydown.tab)=\"onTabClose($event)\"\n (click)=\"onClickClose($event)\">\n {{ 'ecl.common.CLOSE' | translate }}\n </button>\n </div>\n }\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.EclCheckboxDirective, selector: "[eclCheckbox]", inputs: ["isDisabled", "isInvalid", "isSingle"] }, { kind: "component", type: i3.EclCheckboxLabelComponent, selector: "label[eclCheckboxLabel]", inputs: ["isInvalid", "isDisabled", "isRequired"] }, { kind: "directive", type: i4.EclCheckboxInputDirective, selector: "input[eclCheckboxInput]" }, { kind: "component", type: i5.EclButtonComponent, selector: "button[eclButton], button[ecl-button], a[eclButton]", inputs: ["isIconOnly", "variant", "containerStyleClass"] }, { kind: "component", type: i6.EclMultiselectOptionComponent, selector: "div[eclMultiselectOption]", inputs: ["value", "label", "disabled", "isChecked"], outputs: ["optionClick", "optionKeydown"] }, { kind: "component", type: i7.EclMultiselectInputComponent, selector: "div[eclMultiselectInput]", inputs: ["eclSize", "toggleId", "toggleLabel", "isDisabled", "isInvalid", "inputPlaceholder", "selectedItems", "isDropdownExpanded", "ariaControls", "ariaDescribedby", "ariaLabeledby"], outputs: ["mainInputClick", "mainInputKeydown"] }, { kind: "component", type: i8.EclMultiselectOptgroupComponent, selector: "fieldset[eclMultiselectOptgroup]", inputs: ["label"] }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }] }); }
418
+ ], viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "eclMultiselectInput", first: true, predicate: ["eclMultiselectInput"], descendants: true }, { propertyName: "selectAllCheckbox", first: true, predicate: ["selectAllCheckbox"], descendants: true }, { propertyName: "selectAll", first: true, predicate: ["selectAll"], descendants: true }, { propertyName: "closeBtn", first: true, predicate: ["closeBtn"], descendants: true, read: ElementRef }, { propertyName: "clearAllBtn", first: true, predicate: ["clearAllBtn"], descendants: true, read: ElementRef }, { propertyName: "multiOptionComponents", predicate: EclMultiselectOptionComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div eclMultiselectInput #eclMultiselectInput [inputPlaceholder]=\"mainInputPlaceholder\" [selectedItems]=\"selectedItems\"\n (mainInputClick)=\"onClickMainInput($event)\" (mainInputKeydown)=\"onKeydownMainInput($event)\" [isDisabled]=\"disabled\"\n [ariaLabeledby]=\"ariaLabeledby\" [ariaDescribedby]=\"ariaDescribedby\" [toggleLabel]=\"toggleLabel\" [ariaControls]=\"dropdownId\" [isInvalid]=\"isInvalid\"\n [isDropdownExpanded]=\"isShowMultiselectDropdown\" [eclSize]=\"eclSize\" [toggleId]=\"toggleId\"></div>\n<div\n [style.display]=\"isShowMultiselectDropdown ? 'block' : 'none'\"\n class=\"ecl-select__multiple-dropdown ecl-select__container ecl-select__container--{{eclSize}}\"\n [id]=\"dropdownId\">\n <input\n class=\"ecl-text-input\"\n type=\"search\"\n #searchInput\n [placeholder]=\"searchFieldPlaceholder\"\n (input)=\"onSearch($event.target)\"\n (keydown.enter)=\"onEnterSearch($event)\"\n (keydown.arrowup)=\"onArrowUpSearch($event)\"\n (keydown.arrowdown)=\"onArrowDownSearch($event)\" />\n <div eclCheckbox #selectAll class=\"ecl-select__multiple-all\">\n <input\n eclCheckboxInput\n #selectAllCheckbox\n [id]=\"selectAllId\"\n type=\"checkbox\"\n (click)=\"onSelectAll()\"\n (keydown.arrowup)=\"onArrowUpSelectAll($event)\"\n (keydown.arrowdown)=\"onArrowDownSelectAll($event)\" />\n <label [for]=\"selectAllId\" eclCheckboxLabel> {{ 'ecl.multiselect.SELECT-ALL' | translate }} ({{ optionsCount }}) </label>\n </div>\n <div class=\"ecl-select__multiple-options\">\n @for (item of multiOptionDirectives; track item.label) {\n @if (item.isOptGroup()) {\n <fieldset eclMultiselectOptgroup [label]=\"item.label\">\n @for (elem of item.eclOptionItems; track elem.label) {\n <div\n eclMultiselectOption\n [value]=\"elem.value\"\n [label]=\"elem.label\"\n [disabled]=\"elem.disabled\"\n [isChecked]=\"elem.selected\"\n [class]=\"elem.class\"\n (optionClick)=\"onOptionSelected($event)\"\n (optionKeydown)=\"onKeydownOption($event)\"></div>\n }\n </fieldset>\n } @else if (!item.isOptGroup()) {\n <div\n eclMultiselectOption\n [value]=\"item.value\"\n [label]=\"item.label\"\n [disabled]=\"item.disabled\"\n [isChecked]=\"item.selected\"\n [class]=\"item.class\"\n (optionClick)=\"onOptionSelected($event)\"\n (optionKeydown)=\"onKeydownOption($event)\"></div>\n }\n }\n\n\n @if (isShowNoResultsFound) {\n <div class=\"ecl-select__multiple-no-results\">\n <span>{{ 'ecl.multiselect.NO-RESULTS-FOUND' | translate }}</span>\n </div>\n }\n\n </div>\n @if (isShowToolbar) {\n <div class=\"ecl-select-multiple-toolbar\">\n <button\n eclButton\n variant=\"ghost\"\n #clearAllBtn\n (keydown.arrowup)=\"onArrowUpCloseClear($event)\"\n (keydown.arrowright)=\"onArrowRightClear($event)\"\n (keydown.enter)=\"onEnterClear($event)\"\n (click)=\"onClickClearAll($event)\">\n {{ 'ecl.multiselect.CLEAR-ALL' | translate }}\n </button>\n <button\n eclButton\n variant=\"primary\"\n #closeBtn\n (keydown.arrowup)=\"onArrowUpCloseClear($event)\"\n (keydown.arrowleft)=\"onArrowLeftClose($event)\"\n (keydown.tab)=\"onTabClose($event)\"\n (click)=\"onClickClose($event)\">\n {{ 'ecl.common.CLOSE' | translate }}\n </button>\n </div>\n }\n</div>\n", dependencies: [{ kind: "directive", type: i1.EclCheckboxDirective, selector: "[eclCheckbox]", inputs: ["isDisabled", "isInvalid", "isSingle"] }, { kind: "component", type: i2.EclCheckboxLabelComponent, selector: "label[eclCheckboxLabel]", inputs: ["isInvalid", "isDisabled", "isRequired"] }, { kind: "directive", type: i3.EclCheckboxInputDirective, selector: "input[eclCheckboxInput]" }, { kind: "component", type: i4.EclButtonComponent, selector: "button[eclButton], button[ecl-button], a[eclButton]", inputs: ["isIconOnly", "variant", "containerStyleClass"] }, { kind: "component", type: i5.EclMultiselectOptionComponent, selector: "div[eclMultiselectOption]", inputs: ["value", "label", "disabled", "isChecked"], outputs: ["optionClick", "optionKeydown"] }, { kind: "component", type: i6.EclMultiselectInputComponent, selector: "div[eclMultiselectInput]", inputs: ["eclSize", "toggleId", "toggleLabel", "isDisabled", "isInvalid", "inputPlaceholder", "selectedItems", "isDropdownExpanded", "ariaControls", "ariaDescribedby", "ariaLabeledby"], outputs: ["mainInputClick", "mainInputKeydown"] }, { kind: "component", type: i7.EclMultiselectOptgroupComponent, selector: "fieldset[eclMultiselectOptgroup]", inputs: ["label"] }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }] }); }
420
419
  }
421
420
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.0", ngImport: i0, type: EclMultiselectDropdownComponent, decorators: [{
422
421
  type: Component,
@@ -426,7 +425,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.0", ng
426
425
  useExisting: forwardRef(() => EclMultiselectDropdownComponent),
427
426
  multi: true,
428
427
  },
429
- ], template: "<div eclMultiselectInput #eclMultiselectInput [inputPlaceholder]=\"mainInputPlaceholder\" [selectedItems]=\"selectedItems\"\n (mainInputClick)=\"onClickMainInput($event)\" (mainInputKeydown)=\"onKeydownMainInput($event)\" [isDisabled]=\"disabled\"\n [ariaLabeledby]=\"ariaLabeledby\" [ariaDescribedby]=\"ariaDescribedby\" [toggleLabel]=\"toggleLabel\" [ariaControls]=\"dropdownId\" [isInvalid]=\"isInvalid\"\n [isDropdownExpanded]=\"isShowMultiselectDropdown\" [eclSize]=\"eclSize\" [toggleId]=\"toggleId\"></div>\n<div\n [style.display]=\"isShowMultiselectDropdown ? 'block' : 'none'\"\n class=\"ecl-select__multiple-dropdown ecl-select__container ecl-select__container--{{eclSize}}\"\n [id]=\"dropdownId\">\n <input\n class=\"ecl-text-input\"\n type=\"search\"\n #searchInput\n [placeholder]=\"searchFieldPlaceholder\"\n (input)=\"onSearch($event.target)\"\n (keydown.enter)=\"onEnterSearch($event)\"\n (keydown.arrowup)=\"onArrowUpSearch($event)\"\n (keydown.arrowdown)=\"onArrowDownSearch($event)\" />\n <div eclCheckbox #selectAll class=\"ecl-select__multiple-all\">\n <input\n eclCheckboxInput\n #selectAllCheckbox\n [id]=\"selectAllId\"\n type=\"checkbox\"\n (click)=\"onSelectAll()\"\n (keydown.arrowup)=\"onArrowUpSelectAll($event)\"\n (keydown.arrowdown)=\"onArrowDownSelectAll($event)\" />\n <label [for]=\"selectAllId\" eclCheckboxLabel> {{ 'ecl.multiselect.SELECT-ALL' | translate }} ({{ optionsCount }}) </label>\n </div>\n <div class=\"ecl-select__multiple-options\">\n <ng-container *ngFor=\"let item of multiOptionDirectives\">\n @if (item.isOptGroup()) {\n <fieldset eclMultiselectOptgroup [label]=\"item.label\">\n <div\n eclMultiselectOption\n *ngFor=\"let elem of item.eclOptionItems\"\n [value]=\"elem.value\"\n [label]=\"elem.label\"\n [disabled]=\"elem.disabled\"\n [isChecked]=\"elem.selected\"\n [class]=\"elem.class\"\n (optionClick)=\"onOptionSelected($event)\"\n (optionKeydown)=\"onKeydownOption($event)\"></div>\n </fieldset>\n } @else if (!item.isOptGroup()) {\n <div\n eclMultiselectOption\n [value]=\"item.value\"\n [label]=\"item.label\"\n [disabled]=\"item.disabled\"\n [isChecked]=\"item.selected\"\n [class]=\"item.class\"\n (optionClick)=\"onOptionSelected($event)\"\n (optionKeydown)=\"onKeydownOption($event)\"></div>\n }\n\n </ng-container>\n\n @if (isShowNoResultsFound) {\n <div class=\"ecl-select__multiple-no-results\">\n <span>{{ 'ecl.multiselect.NO-RESULTS-FOUND' | translate }}</span>\n </div>\n }\n\n </div>\n @if (isShowToolbar) {\n <div class=\"ecl-select-multiple-toolbar\">\n <button\n eclButton\n variant=\"ghost\"\n #clearAllBtn\n (keydown.arrowup)=\"onArrowUpCloseClear($event)\"\n (keydown.arrowright)=\"onArrowRightClear($event)\"\n (keydown.enter)=\"onEnterClear($event)\"\n (click)=\"onClickClearAll($event)\">\n {{ 'ecl.multiselect.CLEAR-ALL' | translate }}\n </button>\n <button\n eclButton\n variant=\"primary\"\n #closeBtn\n (keydown.arrowup)=\"onArrowUpCloseClear($event)\"\n (keydown.arrowleft)=\"onArrowLeftClose($event)\"\n (keydown.tab)=\"onTabClose($event)\"\n (click)=\"onClickClose($event)\">\n {{ 'ecl.common.CLOSE' | translate }}\n </button>\n </div>\n }\n</div>\n" }]
428
+ ], template: "<div eclMultiselectInput #eclMultiselectInput [inputPlaceholder]=\"mainInputPlaceholder\" [selectedItems]=\"selectedItems\"\n (mainInputClick)=\"onClickMainInput($event)\" (mainInputKeydown)=\"onKeydownMainInput($event)\" [isDisabled]=\"disabled\"\n [ariaLabeledby]=\"ariaLabeledby\" [ariaDescribedby]=\"ariaDescribedby\" [toggleLabel]=\"toggleLabel\" [ariaControls]=\"dropdownId\" [isInvalid]=\"isInvalid\"\n [isDropdownExpanded]=\"isShowMultiselectDropdown\" [eclSize]=\"eclSize\" [toggleId]=\"toggleId\"></div>\n<div\n [style.display]=\"isShowMultiselectDropdown ? 'block' : 'none'\"\n class=\"ecl-select__multiple-dropdown ecl-select__container ecl-select__container--{{eclSize}}\"\n [id]=\"dropdownId\">\n <input\n class=\"ecl-text-input\"\n type=\"search\"\n #searchInput\n [placeholder]=\"searchFieldPlaceholder\"\n (input)=\"onSearch($event.target)\"\n (keydown.enter)=\"onEnterSearch($event)\"\n (keydown.arrowup)=\"onArrowUpSearch($event)\"\n (keydown.arrowdown)=\"onArrowDownSearch($event)\" />\n <div eclCheckbox #selectAll class=\"ecl-select__multiple-all\">\n <input\n eclCheckboxInput\n #selectAllCheckbox\n [id]=\"selectAllId\"\n type=\"checkbox\"\n (click)=\"onSelectAll()\"\n (keydown.arrowup)=\"onArrowUpSelectAll($event)\"\n (keydown.arrowdown)=\"onArrowDownSelectAll($event)\" />\n <label [for]=\"selectAllId\" eclCheckboxLabel> {{ 'ecl.multiselect.SELECT-ALL' | translate }} ({{ optionsCount }}) </label>\n </div>\n <div class=\"ecl-select__multiple-options\">\n @for (item of multiOptionDirectives; track item.label) {\n @if (item.isOptGroup()) {\n <fieldset eclMultiselectOptgroup [label]=\"item.label\">\n @for (elem of item.eclOptionItems; track elem.label) {\n <div\n eclMultiselectOption\n [value]=\"elem.value\"\n [label]=\"elem.label\"\n [disabled]=\"elem.disabled\"\n [isChecked]=\"elem.selected\"\n [class]=\"elem.class\"\n (optionClick)=\"onOptionSelected($event)\"\n (optionKeydown)=\"onKeydownOption($event)\"></div>\n }\n </fieldset>\n } @else if (!item.isOptGroup()) {\n <div\n eclMultiselectOption\n [value]=\"item.value\"\n [label]=\"item.label\"\n [disabled]=\"item.disabled\"\n [isChecked]=\"item.selected\"\n [class]=\"item.class\"\n (optionClick)=\"onOptionSelected($event)\"\n (optionKeydown)=\"onKeydownOption($event)\"></div>\n }\n }\n\n\n @if (isShowNoResultsFound) {\n <div class=\"ecl-select__multiple-no-results\">\n <span>{{ 'ecl.multiselect.NO-RESULTS-FOUND' | translate }}</span>\n </div>\n }\n\n </div>\n @if (isShowToolbar) {\n <div class=\"ecl-select-multiple-toolbar\">\n <button\n eclButton\n variant=\"ghost\"\n #clearAllBtn\n (keydown.arrowup)=\"onArrowUpCloseClear($event)\"\n (keydown.arrowright)=\"onArrowRightClear($event)\"\n (keydown.enter)=\"onEnterClear($event)\"\n (click)=\"onClickClearAll($event)\">\n {{ 'ecl.multiselect.CLEAR-ALL' | translate }}\n </button>\n <button\n eclButton\n variant=\"primary\"\n #closeBtn\n (keydown.arrowup)=\"onArrowUpCloseClear($event)\"\n (keydown.arrowleft)=\"onArrowLeftClose($event)\"\n (keydown.tab)=\"onTabClose($event)\"\n (click)=\"onClickClose($event)\">\n {{ 'ecl.common.CLOSE' | translate }}\n </button>\n </div>\n }\n</div>\n" }]
430
429
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.IterableDiffers }, { type: i0.Renderer2 }], propDecorators: { searchInput: [{
431
430
  type: ViewChild,
432
431
  args: ['searchInput']
@@ -475,4 +474,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.0", ng
475
474
  type: HostListener,
476
475
  args: ['document:click', ['$event']]
477
476
  }] } });
478
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLW11bHRpc2VsZWN0LWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtbXVsdGlzZWxlY3QvZWNsLW11bHRpc2VsZWN0LWRyb3Bkb3duL2VjbC1tdWx0aXNlbGVjdC1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZWNsLW11bHRpc2VsZWN0L2VjbC1tdWx0aXNlbGVjdC1kcm9wZG93bi9lY2wtbXVsdGlzZWxlY3QtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILGdCQUFnQixFQUNoQixTQUFTLEVBRVQsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBS0wsTUFBTSxFQUdOLFNBQVMsRUFDVCxZQUFZLEdBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFtQyxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLEVBQUUsSUFBSSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSTVELE9BQU8sRUFFSCw2QkFBNkIsR0FFaEMsTUFBTSw0REFBNEQsQ0FBQzs7Ozs7Ozs7Ozs7QUFjcEUsTUFBTSxPQUFPLCtCQUFnQyxTQUFRLGdCQUFnQjtJQVVqRSxJQUNJLFNBQVM7UUFDVCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztJQUNELElBQUksU0FBUyxDQUFDLEtBQTBCO1FBQ3BDLElB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XG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBDb21wb25lbnQsXG4gICAgRG9DaGVjayxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBJdGVyYWJsZURpZmZlcixcbiAgICBJdGVyYWJsZURpZmZlcnMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFJlbmRlcmVyMixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtR3JvdXAsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZGdlbiB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgS2V5Q29kZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IEVjbE11bHRpc2VsZWN0T3B0aW9uIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWwvZWNsLW11bHRpc2VsZWN0LW9wdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBFQ0xCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZWNsLWJhc2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IEVjbENoZWNrYm94RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZWNsLWNoZWNrYm94JztcbmltcG9ydCB7IEVjbE11bHRpc2VsZWN0SW5wdXRDb21wb25lbnQsIEVjbE11bHRpc2VsZWN0TWFpbklucHV0Q2xpY2tFdmVudCB9IGZyb20gJy4uL2VjbC1tdWx0aXNlbGVjdC1pbnB1dC9lY2wtbXVsdGlzZWxlY3QtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IEVjbE11bHRpc2VsZWN0T3B0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vZWNsLW11bHRpc2VsZWN0LW9wdGlvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHtcbiAgICBFY2xNdWx0aXNlbGVjdE9wdGlvbkNsaWNrRXZlbnQsXG4gICAgRWNsTXVsdGlzZWxlY3RPcHRpb25Db21wb25lbnQsXG4gICAgRWNsTXVsdGlzZWxlY3RPcHRpb25LZXlkb3duRXZlbnQsXG59IGZyb20gJy4uL2VjbC1tdWx0aXNlbGVjdC1vcHRpb24vZWNsLW11bHRpc2VsZWN0LW9wdGlvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnZGl2W2VjbE11bHRpc2VsZWN0RHJvcGRvd25dJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2VjbC1tdWx0aXNlbGVjdC1kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRWNsTXVsdGlzZWxlY3REcm9wZG93bkNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBFY2xNdWx0aXNlbGVjdERyb3Bkb3duQ29tcG9uZW50IGV4dGVuZHMgRUNMQmFzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIERvQ2hlY2ssIE9uRGVzdHJveSB7XG4gICAgQFZpZXdDaGlsZCgnc2VhcmNoSW5wdXQnKSBzZWFyY2hJbnB1dDogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdlY2xNdWx0aXNlbGVjdElucHV0JykgZWNsTXVsdGlzZWxlY3RJbnB1dDogRWNsTXVsdGlzZWxlY3RJbnB1dENvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKCdzZWxlY3RBbGxDaGVja2JveCcpIHNlbGVjdEFsbENoZWNrYm94OiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoJ3NlbGVjdEFsbCcpIHNlbGVjdEFsbDogRWNsQ2hlY2tib3hEaXJlY3RpdmU7XG4gICAgQFZpZXdDaGlsZCgnY2xvc2VCdG4nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgY2xvc2VCdG46IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZCgnY2xlYXJBbGxCdG4nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgY2xlYXJBbGxCdG46IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZHJlbihFY2xNdWx0aXNlbGVjdE9wdGlvbkNvbXBvbmVudCkgbXVsdGlPcHRpb25Db21wb25lbnRzOiBRdWVyeUxpc3Q8RWNsTXVsdGlzZWxlY3RPcHRpb25Db21wb25lbnQ+O1xuICAgIEBPdXRwdXQoKSBlY2xDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZ1tdPigpO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgZ2V0IGlzSW52YWxpZCgpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzSW52YWxpZDtcbiAgICB9XG4gICAgc2V0IGlzSW52YWxpZCh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9pc0ludmFsaWQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBnZXQgY3NzQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gW3N1cGVyLmdldENzc0NsYXNzZXMoJ2VjbC1zZWxlY3RfX211bHRpcGxlJyldLmpvaW4oJyAnKS50cmltKCk7XG4gICAgfVxuICAgIEBJbnB1dCgpIG1haW5JbnB1dFBsYWNlaG9sZGVyID0gJ1NlbGVjdCBhbiBpdGVtJztcbiAgICBASW5wdXQoKSBzZWFyY2hGaWVsZFBsYWNlaG9sZGVyID0gJ0VudGVyIGtleXdvcmQnO1xuICAgIEBJbnB1dCgpIGVjbFNpemUgPSAnbSc7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRpc2FibGVkJylcbiAgICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZCB8fCB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IHZhbHVlO1xuICAgIH1cblxuICAgIGFyaWFEZXNjcmliZWRieTogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGFyaWFMYWJlbGVkYnk6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICB0b2dnbGVMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGlkID0gJyc7XG4gICAgaXNTaG93Tm9SZXN1bHRzRm91bmQgPSBmYWxzZTtcbiAgICBpc1Nob3dNdWx0aXNlbGVjdERyb3Bkb3duID0gZmFsc2U7XG4gICAgbXVsdGlPcHRpb25EaXJlY3RpdmVzOiBFY2xNdWx0aXNlbGVjdE9wdGlvbkRpcmVjdGl2ZVtdID0gW107XG4gICAgZm9ybTogRm9ybUdyb3VwO1xuICAgIHByb3RlY3RlZCBkcm9wZG93bklkID0gJyc7XG4gICAgcHJvdGVjdGVkIHNlbGVjdEFsbElkID0gJyc7XG4gICAgcHJvdGVjdGVkIHRvZ2dsZUlkID0gJyc7XG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9pc0ludmFsaWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9zZWxlY3RlZEl0ZW1zOiBFY2xNdWx0aXNlbGVjdE9wdGlvbltdID0gW107XG4gICAgcHJpdmF0ZSBkaWZmZXI6IEl0ZXJhYmxlRGlmZmVyPEVjbE11bHRpc2VsZWN0T3B0aW9uQ29tcG9uZW50PjtcbiAgICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgICBwcml2YXRlIGlzV3JpdGVWYWx1ZUNhbGxlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgdmFsdWVzID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBkaWZmZXJzOiBJdGVyYWJsZURpZmZlcnMsXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5kaWZmZXIgPSB0aGlzLmRpZmZlcnMuZmluZChbXSkuY3JlYXRlKCk7XG4gICAgfVxuXG4gICAgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBkaWZmID0gdGhpcy5kaWZmZXIuZGlmZih0aGlzLm11bHRpT3B0aW9uQ29tcG9uZW50cyk7XG5cbiAgICAgICAgaWYgKGRpZmYpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzV3JpdGVWYWx1ZUNhbGxlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXRDb21wb25lbnQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLndyaXRlVmFsdWVzKHRoaXMudmFsdWVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzV3JpdGVWYWx1ZUNhbGxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRTZWxlY3RlZE9wdGlvbnMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdEFsbElkID0gdGhpcy5nZXRTZWxlY3RBbGxJZCgpO1xuICAgICAgICB0aGlzLmRyb3Bkb3duSWQgPSB0aGlzLmdldERyb3Bkb3duSWQoKTtcbiAgICAgICAgdGhpcy50b2dnbGVJZCA9IHRoaXMuZ2V0VG9nZ2xlSWQoKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm1vZGlmeVBhcmVudExhYmVsRm9yQXR0cmlidXRlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlczogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm11bHRpT3B0aW9uQ29tcG9uZW50cykge1xuICAgICAgICAgICAgdGhpcy5yZXNldENvbXBvbmVudCgpO1xuICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlcyh2YWx1ZXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy52YWx1ZXMgPSB2YWx1ZXM7XG4gICAgICAgICAgICB0aGlzLmlzV3JpdGVWYWx1ZUNhbGxlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJvcGFnYXRlVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleXVwLmVzY2FwZScsIFsnJGV2ZW50J10pXG4gICAgb25Fc2NhcGVLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oaWRlTXVsdGlzZWxlY3REcm9wZG93bigpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgICBvbktleVVwKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZU11bHRpc2VsZWN0RHJvcGRvd24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBvcHRpb25zQ291bnQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QWN0aXZlT3B0aW9ucygpID8gdGhpcy5nZXRBY3RpdmVPcHRpb25zKCkubGVuZ3RoIDogMDtcbiAgICB9XG5cbiAgICBnZXQgc2VsZWN0ZWRJdGVtcygpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEl0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS5sYWJlbCk7XG4gICAgfVxuXG4gICAgZ2V0IGlzSXRlbXNTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSXRlbXMubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBnZXQgaXNTaG93VG9vbGJhcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSXRlbXMubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBpbml0U2VsZWN0ZWRPcHRpb25zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zID0gW107XG4gICAgICAgIHRoaXMubXVsdGlPcHRpb25Db21wb25lbnRzXG4gICAgICAgICAgICAuZmlsdGVyKChlbGVtKSA9PiBlbGVtLmlzQ2hlY2tlZClcbiAgICAgICAgICAgIC5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25DbGlja0NsZWFyQWxsKGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLnVuc2VsZWN0QWxsQWN0aXZlT3B0aW9ucygpO1xuICAgICAgICB0aGlzLmVjbENoYW5nZS5lbWl0KFtdKTtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UoW10pO1xuICAgIH1cblxuICAgIG9uRW50ZXJDbGVhcihldnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DbGlja0NsZWFyQWxsKGV2dCk7XG4gICAgICAgIHRoaXMuZWNsTXVsdGlzZWxlY3RJbnB1dC5vbkZvY3VzKCk7XG4gICAgfVxuXG4gICAgb25DbGlja0Nsb3NlKGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuaGlkZU11bHRpc2VsZWN0RHJvcGRvd24oKTtcbiAgICB9XG5cbiAgICBvbkFycm93VXBDbG9zZUNsZWFyKGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRPcHRpb25zID0gdGhpcy5nZXRBY3RpdmVPcHRpb25zKCk7XG4gICAgICAgIGN1cnJlbnRPcHRpb25zW2N1cnJlbnRPcHRpb25zLmxlbmd0aCAtIDFdLm9uRm9jdXMoKTtcbiAgICB9XG5cbiAgICBvbkFycm93TGVmdENsb3NlKGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2VsZWN0Um9vdEVsZW1lbnQodGhpcy5jbGVhckFsbEJ0bi5uYXRpdmVFbGVtZW50LCB0cnVlKS5mb2N1cygpO1xuICAgIH1cblxuICAgIG9uVGFiQ2xvc2UoZXZ0OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5lY2xNdWx0aXNlbGVjdElucHV0Lm9uRm9jdXMoKTtcbiAgICB9XG5cbiAgICBvbkFycm93UmlnaHRDbGVhcihldnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNlbGVjdFJvb3RFbGVtZW50KHRoaXMuY2xvc2VCdG4ubmF0aXZlRWxlbWVudCwgdHJ1ZSkuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBvbkVudGVyU2VhcmNoKGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25BcnJvd0Rvd25TZWFyY2goZXZ0OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29uc3QgY3VycmVudE9wdGlvbnMgPSB0aGlzLmdldEFjdGl2ZU9wdGlvbnMoKTtcbiAgICAgICAgaWYgKGN1cnJlbnRPcHRpb25zLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2VsZWN0Um9vdEVsZW1lbnQodGhpcy5zZWxlY3RBbGxDaGVja2JveC5uYXRpdmVFbGVtZW50LCB0cnVlKS5mb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY3VycmVudE9wdGlvbnNbMF0ub25Gb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25BcnJvd1VwU2VhcmNoKGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuaGlkZU11bHRpc2VsZWN0RHJvcGRvd24oKTtcbiAgICAgICAgdGhpcy5lY2xNdWx0aXNlbGVjdElucHV0Lm9uRm9jdXMoKTtcbiAgICB9XG5cbiAgICBvbktleWRvd25NYWluSW5wdXQoZXZ0OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5zaG93TXVsdGlzZWxlY3REcm9wZG93bigpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucmVuZGVyZXIuc2VsZWN0Um9vdEVsZW1lbnQodGhpcy5zZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LCB0cnVlKS5mb2N1cygpKTtcbiAgICB9XG5cbiAgICBvbkNsaWNrTWFpbklucHV0KGV2dDogRWNsTXVsdGlzZWxlY3RNYWluSW5wdXRDbGlja0V2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2dC5ldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLnRvZ2dsZURyb3Bkb3duKCk7XG4gICAgfVxuXG4gICAgb25BcnJvd0Rvd25TZWxlY3RBbGwoZXZ0OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29uc3QgY3VycmVudE9wdGlvbnMgPSB0aGlzLmdldEFjdGl2ZU9wdGlvbnMoKTtcbiAgICAgICAgaWYgKGN1cnJlbnRPcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGN1cnJlbnRPcHRpb25zWzBdLm9uRm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQXJyb3dVcFNlbGVjdEFsbChldnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNlbGVjdFJvb3RFbGVtZW50KHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudCwgdHJ1ZSkuZm9jdXMoKVxuICAgIH1cblxuICAgIG9uU2VhcmNoKGlucHV0OiBFdmVudFRhcmdldCk6IHZvaWQge1xuICAgICAgICBjb25zdCBrZXl3b3JkID0gKGlucHV0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuICAgICAgICBsZXQgaXNNYXRjaEZvdW5kID0gZmFsc2U7XG4gICAgICAgIGlmIChrZXl3b3JkID09PSAnJykge1xuICAgICAgICAgICAgdGhpcy5lbmFibGVTZWxlY3RBbGwoKTtcbiAgICAgICAgICAgIGlzTWF0Y2hGb3VuZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLm11bHRpT3B0aW9uQ29tcG9uZW50cy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgaXRlbS5oaWdobGlnaHRTZWFyY2hUZXh0KCcnKTtcbiAgICAgICAgICAgICAgICBpdGVtLnNob3coKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tdWx0aU9wdGlvbkNvbXBvbmVudHMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihrZXl3b3JkLnRvTG93ZXJDYXNlKCkpIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICBpdGVtLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpc01hdGNoRm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBpdGVtLmhpZ2hsaWdodFNlYXJjaFRleHQoa2V5d29yZC50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5zaG93KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVTZWxlY3RBbGwoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzTWF0Y2hGb3VuZCkge1xuICAgICAgICAgICAgdGhpcy5zaG93Tm9SZXN1bHRzRm91bmQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZU5vUmVzdWx0c0ZvdW5kKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblNlbGVjdEFsbCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0QWxsQ2hlY2tib3gubmF0aXZlRWxlbWVudC5jaGVja2VkKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdEFsbEFjdGl2ZU9wdGlvbnMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudW5zZWxlY3RBbGxBY3RpdmVPcHRpb25zKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wcm9wYWdhdGVUb3VjaGVkKCk7XG4gICAgICAgIHRoaXMuZWNsQ2hhbmdlLmVtaXQodGhpcy5fc2VsZWN0ZWRJdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0udmFsdWUpKTtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5fc2VsZWN0ZWRJdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0udmFsdWUpKTtcbiAgICB9XG5cbiAgICBvbktleWRvd25PcHRpb24oZXZ0OiBFY2xNdWx0aXNlbGVjdE9wdGlvbktleWRvd25FdmVudCk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKGV2dC5rZXlib2FyZEV2ZW50LmtleSkge1xuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkFSUk9XX0RPV046IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uT3B0aW9uQXJyb3dEb3duQW5kVGFiKGV2dC5rZXlib2FyZEV2ZW50LCBldnQubXVsdGlzZWxlY3RPcHRpb24pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkFSUk9XX1VQOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbk9wdGlvbkFycm93VXAoZXZ0LmtleWJvYXJkRXZlbnQsIGV2dC5tdWx0aXNlbGVjdE9wdGlvbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtleUNvZGUuRVNDQVBFOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlTXVsdGlzZWxlY3REcm9wZG93bigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkVOVEVSOiB7XG4gICAgICAgICAgICAgICAgKGV2dC5rZXlib2FyZEV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5jbGljaygpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLlRBQjoge1xuICAgICAgICAgICAgICAgIHRoaXMub25PcHRpb25BcnJvd0Rvd25BbmRUYWIoZXZ0LmtleWJvYXJkRXZlbnQsIGV2dC5tdWx0aXNlbGVjdE9wdGlvbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk9wdGlvblNlbGVjdGVkKGV2dDogRWNsTXVsdGlzZWxlY3RPcHRpb25DbGlja0V2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdEFsbENoZWNrYm94Lm5hdGl2ZUVsZW1lbnQuY2hlY2tlZCkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLnNlbGVjdEFsbENoZWNrYm94Lm5hdGl2ZUVsZW1lbnQsICdjaGVja2VkJywgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGN1cnJPcHRpb24gPSBldnQubXVsdGlzZWxlY3RPcHRpb247XG4gICAgICAgIGlmIChjdXJyT3B0aW9uLmlzQ2hlY2tlZCkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtcy5wdXNoKGN1cnJPcHRpb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLl9zZWxlY3RlZEl0ZW1zLmluZGV4T2YoY3Vyck9wdGlvbik7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5fc2VsZWN0ZWRJdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0udmFsdWUpKTtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVUb3VjaGVkKCk7XG4gICAgICAgIHRoaXMuZWNsQ2hhbmdlLmVtaXQodGhpcy5fc2VsZWN0ZWRJdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0udmFsdWUpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNlbGVjdEFsbEFjdGl2ZU9wdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZ2V0QWxsQWN0aXZlT3B0aW9ucygpLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmICghaXRlbS5pc0NoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICBpdGVtLmlzQ2hlY2tlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVuc2VsZWN0QWxsQWN0aXZlT3B0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLnNlbGVjdEFsbENoZWNrYm94Lm5hdGl2ZUVsZW1lbnQsICdjaGVja2VkJywgZmFsc2UpO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zID0gW107XG4gICAgICAgIHRoaXMuZ2V0QWxsQWN0aXZlT3B0aW9ucygpLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGl0ZW0uaXNDaGVja2VkID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QWxsQWN0aXZlT3B0aW9ucygpOiBFY2xNdWx0aXNlbGVjdE9wdGlvbkNvbXBvbmVudFtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubXVsdGlPcHRpb25Db21wb25lbnRzLmZpbHRlcigoZWxlbSkgPT4gZWxlbS5pc0FjdGl2ZSk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcml2YXRlIHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpOiB2b2lkID0+IHtcbiAgICAgICAgLyogZW1wdHkgKi9cbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBwcm9wYWdhdGVUb3VjaGVkID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAvKiBlbXB0eSAqL1xuICAgIH07XG5cbiAgICBwcml2YXRlIHNob3dNdWx0aXNlbGVjdERyb3Bkb3duKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzU2hvd011bHRpc2VsZWN0RHJvcGRvd24gPSB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGlkZU11bHRpc2VsZWN0RHJvcGRvd24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNTaG93TXVsdGlzZWxlY3REcm9wZG93biA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGlzYWJsZVNlbGVjdEFsbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RBbGwuaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbmFibGVTZWxlY3RBbGwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0QWxsLmlzRGlzYWJsZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNob3dOb1Jlc3VsdHNGb3VuZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc1Nob3dOb1Jlc3VsdHNGb3VuZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoaWRlTm9SZXN1bHRzRm91bmQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNTaG93Tm9SZXN1bHRzRm91bmQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2V0Q29tcG9uZW50KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm11bHRpT3B0aW9uQ29tcG9uZW50cy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpdGVtLmlzQ2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0QWxsQ2hlY2tib3gpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5zZWxlY3RBbGxDaGVja2JveC5uYXRpdmVFbGVtZW50LCAnY2hlY2tlZCcsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zID0gW107XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB3cml0ZVZhbHVlcyh2YWx1ZXM6IEFycmF5PHN0cmluZz4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHZhbHVlcykge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50c0FycmF5ID0gW107XG4gICAgICAgICAgICBpZiAodGhpcy5tdWx0aU9wdGlvbkNvbXBvbmVudHMgJiYgdGhpcy5tdWx0aU9wdGlvbkNvbXBvbmVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMubXVsdGlPcHRpb25Db21wb25lbnRzXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+IHZhbHVlcy5pbmNsdWRlcyhpdGVtLnZhbHVlKSAmJiAhaXRlbS5kaXNhYmxlZClcbiAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbC5pc0NoZWNrZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRFbGVtZW50c0FycmF5LnB1c2goZWwubGFiZWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtcy5wdXNoKGVsKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHRvZ2dsZURyb3Bkb3duKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzU2hvd011bHRpc2VsZWN0RHJvcGRvd24gPSAhdGhpcy5pc1Nob3dNdWx0aXNlbGVjdERyb3Bkb3duO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25PcHRpb25BcnJvd0Rvd25BbmRUYWIoZXZ0OiBLZXlib2FyZEV2ZW50LCBvcHRpb246IEVjbE11bHRpc2VsZWN0T3B0aW9uKTogdm9pZCB7XG4gICAgICAgIChldnQgYXMgS2V5Ym9hcmRFdmVudCkucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmdldE9wdGlvbkluZGV4QnlJZEZyb21BY3RpdmVPcHRpb25zKG9wdGlvbi5pZCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRPcHRpb25zID0gdGhpcy5nZXRBY3RpdmVPcHRpb25zKCk7XG4gICAgICAgIGlmIChpbmRleCAhPT0gY3VycmVudE9wdGlvbnMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgY29uc3QgbmV4dFNpYmxpbmdDaGVja2JveCA9IGN1cnJlbnRPcHRpb25zW2luZGV4ICsgMV07XG4gICAgICAgICAgICBuZXh0U2libGluZ0NoZWNrYm94Lm9uRm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNsZWFyQWxsQnRuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZWxlY3RSb290RWxlbWVudCh0aGlzLmNsZWFyQWxsQnRuLm5hdGl2ZUVsZW1lbnQsIHRydWUpLmZvY3VzKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZWNsTXVsdGlzZWxlY3RJbnB1dC5vbkZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uT3B0aW9uQXJyb3dVcChldnQ6IEtleWJvYXJkRXZlbnQsIG9wdGlvbjogRWNsTXVsdGlzZWxlY3RPcHRpb24pOiB2b2lkIHtcbiAgICAgICAgKGV2dCBhcyBLZXlib2FyZEV2ZW50KS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0T3B0aW9uSW5kZXhCeUlkRnJvbUFjdGl2ZU9wdGlvbnMob3B0aW9uLmlkKTtcbiAgICAgICAgaWYgKGluZGV4ICE9PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBwcmV2U2libGluZ0NoZWNrYm94ID0gdGhpcy5nZXRBY3RpdmVPcHRpb25zKClbaW5kZXggLSAxXTtcbiAgICAgICAgICAgIHByZXZTaWJsaW5nQ2hlY2tib3gub25Gb2N1cygpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0QWxsQ2hlY2tib3gubmF0aXZlRWxlbWVudC5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZWxlY3RSb290RWxlbWVudCh0aGlzLnNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQsIHRydWUpLmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNlbGVjdFJvb3RFbGVtZW50KHRoaXMuc2VsZWN0QWxsQ2hlY2tib3gubmF0aXZlRWxlbWVudCwgdHJ1ZSkuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QWN0aXZlT3B0aW9ucygpOiBFY2xNdWx0aXNlbGVjdE9wdGlvbkNvbXBvbmVudFtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubXVsdGlPcHRpb25Db21wb25lbnRzID8gdGhpcy5tdWx0aU9wdGlvbkNvbXBvbmVudHMuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmlzQWN0aXZlKSA6IFtdO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0T3B0aW9uSW5kZXhCeUlkRnJvbUFjdGl2ZU9wdGlvbnMoaWQ6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEFjdGl2ZU9wdGlvbnMoKS5maW5kSW5kZXgoKG9wdGlvbikgPT4gb3B0aW9uLmlkID09PSBpZCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTZWxlY3RBbGxJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdXVpZGdlbigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RHJvcGRvd25JZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pZCAhPT0gJycgPyBgJHt0aGlzLmlkfS1kcm9wZG93bmAgOiB1dWlkZ2VuKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUb2dnbGVJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pZCAhPT0gJycgPyBgJHt0aGlzLmlkfS10b2dnbGVgIDogdXVpZGdlbigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbW9kaWZ5UGFyZW50TGFiZWxGb3JBdHRyaWJ1dGUoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZvcm0gPSB0aGlzLnJlbmRlcmVyLnBhcmVudE5vZGUodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgY29uc3QgbGFiZWwgPSBmb3JtPy5xdWVyeVNlbGVjdG9yKCcuZWNsLWZvcm0tbGFiZWwnKTtcbiAgICAgICAgaWYgKGxhYmVsKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShsYWJlbCwgJ2ZvcicsIHRoaXMudG9nZ2xlSWQpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdiBlY2xNdWx0aXNlbGVjdElucHV0ICNlY2xNdWx0aXNlbGVjdElucHV0IFtpbnB1dFBsYWNlaG9sZGVyXT1cIm1haW5JbnB1dFBsYWNlaG9sZGVyXCIgW3NlbGVjdGVkSXRlbXNdPVwic2VsZWN0ZWRJdGVtc1wiXG4gICAgKG1haW5JbnB1dENsaWNrKT1cIm9uQ2xpY2tNYWluSW5wdXQoJGV2ZW50KVwiIChtYWluSW5wdXRLZXlkb3duKT1cIm9uS2V5ZG93bk1haW5JbnB1dCgkZXZlbnQpXCIgW2lzRGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFthcmlhTGFiZWxlZGJ5XT1cImFyaWFMYWJlbGVkYnlcIiBbYXJpYURlc2NyaWJlZGJ5XT1cImFyaWFEZXNjcmliZWRieVwiIFt0b2dnbGVMYWJlbF09XCJ0b2dnbGVMYWJlbFwiIFthcmlhQ29udHJvbHNdPVwiZHJvcGRvd25JZFwiIFtpc0ludmFsaWRdPVwiaXNJbnZhbGlkXCJcbiAgICBbaXNEcm9wZG93bkV4cGFuZGVkXT1cImlzU2hvd011bHRpc2VsZWN0RHJvcGRvd25cIiBbZWNsU2l6ZV09XCJlY2xTaXplXCIgW3RvZ2dsZUlkXT1cInRvZ2dsZUlkXCI+PC9kaXY+XG48ZGl2XG4gICAgW3N0eWxlLmRpc3BsYXldPVwiaXNTaG93TXVsdGlzZWxlY3REcm9wZG93biA/ICdibG9jaycgOiAnbm9uZSdcIlxuICAgIGNsYXNzPVwiZWNsLXNlbGVjdF9fbXVsdGlwbGUtZHJvcGRvd24gZWNsLXNlbGVjdF9fY29udGFpbmVyIGVjbC1zZWxlY3RfX2NvbnRhaW5lci0te3tlY2xTaXplfX1cIlxuICAgIFtpZF09XCJkcm9wZG93bklkXCI+XG4gICAgPGlucHV0XG4gICAgICAgIGNsYXNzPVwiZWNsLXRleHQtaW5wdXRcIlxuICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgI3NlYXJjaElucHV0XG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZWFyY2hGaWVsZFBsYWNlaG9sZGVyXCJcbiAgICAgICAgKGlucHV0KT1cIm9uU2VhcmNoKCRldmVudC50YXJnZXQpXCJcbiAgICAgICAgKGtleWRvd24uZW50ZXIpPVwib25FbnRlclNlYXJjaCgkZXZlbnQpXCJcbiAgICAgICAgKGtleWRvd24uYXJyb3d1cCk9XCJvbkFycm93VXBTZWFyY2goJGV2ZW50KVwiXG4gICAgICAgIChrZXlkb3duLmFycm93ZG93bik9XCJvbkFycm93RG93blNlYXJjaCgkZXZlbnQpXCIgLz5cbiAgICA8ZGl2IGVjbENoZWNrYm94ICNzZWxlY3RBbGwgY2xhc3M9XCJlY2wtc2VsZWN0X19tdWx0aXBsZS1hbGxcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBlY2xDaGVja2JveElucHV0XG4gICAgICAgICAgICAjc2VsZWN0QWxsQ2hlY2tib3hcbiAgICAgICAgICAgIFtpZF09XCJzZWxlY3RBbGxJZFwiXG4gICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0QWxsKClcIlxuICAgICAgICAgICAgKGtleWRvd24uYXJyb3d1cCk9XCJvbkFycm93VXBTZWxlY3RBbGwoJGV2ZW50KVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5hcnJvd2Rvd24pPVwib25BcnJvd0Rvd25TZWxlY3RBbGwoJGV2ZW50KVwiIC8+XG4gICAgICAgIDxsYWJlbCBbZm9yXT1cInNlbGVjdEFsbElkXCIgZWNsQ2hlY2tib3hMYWJlbD4ge3sgJ2VjbC5tdWx0aXNlbGVjdC5TRUxFQ1QtQUxMJyB8IHRyYW5zbGF0ZSB9fSAoe3sgb3B0aW9uc0NvdW50IH19KSA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJlY2wtc2VsZWN0X19tdWx0aXBsZS1vcHRpb25zXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbXVsdGlPcHRpb25EaXJlY3RpdmVzXCI+XG4gICAgICAgICAgICBAaWYgKGl0ZW0uaXNPcHRHcm91cCgpKSB7XG4gICAgICAgICAgICAgICAgPGZpZWxkc2V0IGVjbE11bHRpc2VsZWN0T3B0Z3JvdXAgW2xhYmVsXT1cIml0ZW0ubGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgZWNsTXVsdGlzZWxlY3RPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBlbGVtIG9mIGl0ZW0uZWNsT3B0aW9uSXRlbXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImVsZW0udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImVsZW0ubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImVsZW0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lzQ2hlY2tlZF09XCJlbGVtLnNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJlbGVtLmNsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvcHRpb25DbGljayk9XCJvbk9wdGlvblNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9wdGlvbktleWRvd24pPVwib25LZXlkb3duT3B0aW9uKCRldmVudClcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PlxuICAgICAgICAgICAgfSBAZWxzZSBpZiAoIWl0ZW0uaXNPcHRHcm91cCgpKSB7XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBlY2xNdWx0aXNlbGVjdE9wdGlvblxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaXRlbS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJpdGVtLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICBbaXNDaGVja2VkXT1cIml0ZW0uc2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiaXRlbS5jbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgIChvcHRpb25DbGljayk9XCJvbk9wdGlvblNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAob3B0aW9uS2V5ZG93bik9XCJvbktleWRvd25PcHRpb24oJGV2ZW50KVwiPjwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIEBpZiAoaXNTaG93Tm9SZXN1bHRzRm91bmQpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlY2wtc2VsZWN0X19tdWx0aXBsZS1uby1yZXN1bHRzXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgJ2VjbC5tdWx0aXNlbGVjdC5OTy1SRVNVTFRTLUZPVU5EJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICA8L2Rpdj5cbiAgICBAaWYgKGlzU2hvd1Rvb2xiYXIpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImVjbC1zZWxlY3QtbXVsdGlwbGUtdG9vbGJhclwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGVjbEJ1dHRvblxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJnaG9zdFwiXG4gICAgICAgICAgICAgICAgI2NsZWFyQWxsQnRuXG4gICAgICAgICAgICAgICAgKGtleWRvd24uYXJyb3d1cCk9XCJvbkFycm93VXBDbG9zZUNsZWFyKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duLmFycm93cmlnaHQpPVwib25BcnJvd1JpZ2h0Q2xlYXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwib25FbnRlckNsZWFyKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrQ2xlYXJBbGwoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIHt7ICdlY2wubXVsdGlzZWxlY3QuQ0xFQVItQUxMJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZWNsQnV0dG9uXG4gICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICNjbG9zZUJ0blxuICAgICAgICAgICAgICAgIChrZXlkb3duLmFycm93dXApPVwib25BcnJvd1VwQ2xvc2VDbGVhcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5hcnJvd2xlZnQpPVwib25BcnJvd0xlZnRDbG9zZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi50YWIpPVwib25UYWJDbG9zZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbGlja0Nsb3NlKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICB7eyAnZWNsLmNvbW1vbi5DTE9TRScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG48L2Rpdj5cbiJdfQ==
477
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLW11bHRpc2VsZWN0LWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtbXVsdGlzZWxlY3QvZWNsLW11bHRpc2VsZWN0LWRyb3Bkb3duL2VjbC1tdWx0aXNlbGVjdC1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZWNsLW11bHRpc2VsZWN0L2VjbC1tdWx0aXNlbGVjdC1kcm9wZG93bi9lY2wtbXVsdGlzZWxlY3QtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILGdCQUFnQixFQUNoQixTQUFTLEVBRVQsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBS0wsTUFBTSxFQUdOLFNBQVMsRUFDVCxZQUFZLEdBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFtQyxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLEVBQUUsSUFBSSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSTVELE9BQU8sRUFFSCw2QkFBNkIsR0FFaEMsTUFBTSw0REFBNEQsQ0FBQzs7Ozs7Ozs7OztBQWNwRSxNQUFNLE9BQU8sK0JBQWdDLFNBQVEsZ0JBQWdCO0lBVWpFLElBQ0ksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFBSSxTQUFTLENBQUMsS0FBMEI7UUFDcEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQ0ksVUFBVTtRQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUUsQ0FBQztJQUlELElBRUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUM7SUFDdkMsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLEtBQTBCO1FBQ25DLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFxQkQsWUFDWSxLQUFpQixFQUNqQixPQUF3QixFQUN4QixRQUFtQjtRQUUzQixLQUFLLEVBQUUsQ0FBQztRQUpBLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDakIsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUFDeEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQWhEckIsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFZLENBQUM7UUFjMUMseUJBQW9CLEdBQUcsZ0JBQWdCLENBQUM7UUFDeEMsMkJBQXNCLEdBQUcsZUFBZSxDQUFDO1FBQ3pDLFlBQU8sR0FBRyxHQUFHLENBQUM7UUFVdkIsb0JBQWUsR0FBdUIsU0FBUyxDQUFDO1FBQ2hELGtCQUFhLEdBQXVCLFNBQVMsQ0FBQztRQUM5QyxnQkFBVyxHQUF1QixTQUFTLENBQUM7UUFDNUMsT0FBRSxHQUFHLEVBQUUsQ0FBQztRQUNSLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUM3Qiw4QkFBeUIsR0FBRyxLQUFLLENBQUM7UUFDbEMsMEJBQXFCLEdBQW9DLEVBQUUsQ0FBQztRQUVsRCxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDaEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLG1CQUFjLEdBQTJCLEVBQUUsQ0FBQztRQUU1QyxhQUFRLEdBQXFCLElBQUksT0FBTyxFQUFXLENBQUM7UUFDcEQsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQzNCLFdBQU0sR0FBRyxFQUFFLENBQUM7UUFnU3BCLDhEQUE4RDtRQUN0RCxvQkFBZSxHQUFHLENBQUMsQ0FBTSxFQUFRLEVBQUU7WUFDdkMsV0FBVztRQUNmLENBQUMsQ0FBQztRQUVNLHFCQUFnQixHQUFHLEdBQVMsRUFBRTtZQUNsQyxXQUFXO1FBQ2YsQ0FBQyxDQUFDO1FBL1JFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDakQsQ0FBQztJQUVELFNBQVM7UUFDTCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUUxRCxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1AsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztZQUNwQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDL0IsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25DLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsOERBQThEO0lBQ3ZELFVBQVUsQ0FBQyxNQUFXO1FBQ3pCLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0IsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztZQUNyQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQ25DLENBQUM7SUFDTCxDQUFDO0lBRUQsOERBQThEO0lBQ3ZELGdCQUFnQixDQUFDLEVBQU87UUFDM0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELDhEQUE4RDtJQUN2RCxpQkFBaUIsQ0FBQyxFQUFPO1FBQzVCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVNLGdCQUFnQixDQUFDLFVBQW1CO1FBQ3ZDLElBQUksQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDO0lBQ2hDLENBQUM7SUFHRCxXQUFXLENBQUMsS0FBb0I7UUFDNUIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUdELE9BQU8sQ0FBQyxLQUFpQjtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQ25DLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ1osT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxtQkFBbUI7UUFDZixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMscUJBQXFCO2FBQ3JCLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQzthQUNoQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNkLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELGVBQWUsQ0FBQyxHQUFVO1FBQ3RCLEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxZQUFZLENBQUMsR0FBVTtRQUNuQixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsWUFBWSxDQUFDLEdBQVU7UUFDbkIsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxHQUFVO1FBQzFCLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNyQixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUMvQyxjQUFjLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN4RCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsR0FBVTtRQUN2QixHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNsRixDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQVU7UUFDakIsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsR0FBVTtRQUN4QixHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMvRSxDQUFDO0lBRUQsYUFBYSxDQUFDLEdBQVU7UUFDcEIsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxHQUFVO1FBQ3hCLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNyQixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUMvQyxJQUFJLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3hGLENBQUM7YUFBTSxDQUFDO1lBQ0osY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2hDLENBQUM7SUFDTCxDQUFDO0lBRUQsZUFBZSxDQUFDLEdBQVU7UUFDdEIsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsa0JBQWtCLENBQUMsR0FBVTtRQUN6QixHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDL0IsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNwRyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsR0FBc0M7UUFDbkQsR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELG9CQUFvQixDQUFDLEdBQVU7UUFDM0IsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3JCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQy9DLElBQUksY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM1QixjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDaEMsQ0FBQztJQUNMLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxHQUFVO1FBQ3pCLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ2pGLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBa0I7UUFDdkIsTUFBTSxPQUFPLEdBQUksS0FBMEIsQ0FBQyxLQUFLLENBQUM7UUFDbEQsSUFBSSxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksT0FBTyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDeEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUM3QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDaEIsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDeEMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDOUQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNoQixDQUFDO3FCQUFNLENBQUM7b0JBQ0osWUFBWSxHQUFHLElBQUksQ0FBQztvQkFDcEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO29CQUNoRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2hCLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzVCLENBQUM7UUFDRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDOUIsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUM5QixDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDbEMsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNwQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxlQUFlLENBQUMsR0FBcUM7UUFDakQsUUFBUSxHQUFHLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzVCLEtBQUssT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUN2RSxNQUFNO1lBQ1YsQ0FBQztZQUNELEtBQUssT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztnQkFDL0QsTUFBTTtZQUNWLENBQUM7WUFDRCxLQUFLLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUNsQixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztnQkFDL0IsTUFBTTtZQUNWLENBQUM7WUFDRCxLQUFLLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNoQixHQUFHLENBQUMsYUFBYSxDQUFDLE1BQTJCLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3ZELE1BQU07WUFDVixDQUFDO1lBQ0QsS0FBSyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDZixJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztnQkFDdkUsTUFBTTtZQUNWLENBQUM7WUFDRCxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUNOLE1BQU07WUFDVixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxHQUFtQztRQUNoRCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEYsQ0FBQztRQUNELE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQztRQUN6QyxJQUFJLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6QyxDQUFDO2FBQU0sQ0FBQztZQUNKLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3RELElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFTyxzQkFBc0I7UUFDMUIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25DLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyx3QkFBd0I7UUFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbEYsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDeEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sbUJBQW1CO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFXTyx1QkFBdUI7UUFDM0IsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQztJQUMxQyxDQUFDO0lBRU8sdUJBQXVCO1FBQzNCLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxLQUFLLENBQUM7SUFDM0MsQ0FBQztJQUVPLGdCQUFnQjtRQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDckMsQ0FBQztJQUVPLGVBQWU7UUFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQ3RDLENBQUM7SUFFTyxrQkFBa0I7UUFDdEIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztJQUNyQyxDQUFDO0lBRU8sa0JBQWtCO1FBQ3RCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7SUFDdEMsQ0FBQztJQUVPLGNBQWM7UUFDbEIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN0RixDQUFDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVPLFdBQVcsQ0FBQyxNQUFxQjtRQUNyQyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1QsTUFBTSxxQkFBcUIsR0FBRyxFQUFFLENBQUM7WUFDakMsSUFBSSxJQUFJLENBQUMscUJBQXFCLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDdEUsSUFBSSxDQUFDLHFCQUFxQjtxQkFDckIsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7cUJBQy9ELE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO29CQUNaLEVBQUUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO29CQUNwQixxQkFBcUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNyQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDakMsQ0FBQyxDQUFDLENBQUM7WUFDWCxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFTyxjQUFjO1FBQ2xCLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQztJQUNyRSxDQUFDO0lBRU8sdUJBQXVCLENBQUMsR0FBa0IsRUFBRSxNQUE0QjtRQUMzRSxHQUFxQixDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3hDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEUsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDL0MsSUFBSSxLQUFLLEtBQUssY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN0QyxNQUFNLG1CQUFtQixHQUFHLGNBQWMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDdEQsbUJBQW1CLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbEMsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNsRixDQUFDO2lCQUFNLENBQUM7Z0JBQ0osSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3ZDLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVPLGVBQWUsQ0FBQyxHQUFrQixFQUFFLE1BQTRCO1FBQ25FLEdBQXFCLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsRSxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNkLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQy9ELG1CQUFtQixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2xDLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdkQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsRixDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN4RixDQUFDO0lBQ0wsQ0FBQztJQUVPLGdCQUFnQjtRQUNwQixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDeEcsQ0FBQztJQUVPLG1DQUFtQyxDQUFDLEVBQVU7UUFDbEQsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVPLGNBQWM7UUFDbEIsT0FBTyxPQUFPLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRU8sYUFBYTtRQUNqQixPQUFPLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDOUQsQ0FBQztJQUVPLFdBQVc7UUFDZixPQUFPLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDNUQsQ0FBQztJQUVPLDZCQUE2QjtRQUNqQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sS0FBSyxHQUFHLElBQUksRUFBRSxhQUFhLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNyRCxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUQsQ0FBQztJQUNMLENBQUM7bUhBeGNRLCtCQUErQjt1R0FBL0IsK0JBQStCLDJGQVVwQixnQkFBZ0IsMEpBZWhCLGdCQUFnQixpUEFqQ3pCO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQztnQkFDOUQsS0FBSyxFQUFFLElBQUk7YUFDZDtTQUNKLHVmQU84QixVQUFVLHFHQUNQLFVBQVUsd0RBQzlCLDZCQUE2Qix1RUN0RC9DLHdzSUEwRkE7O2dHRDNDYSwrQkFBK0I7a0JBWjNDLFNBQVM7K0JBRUksNkJBQTZCLGFBRTVCO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGdDQUFnQyxDQUFDOzRCQUM5RCxLQUFLLEVBQUUsSUFBSTt5QkFDZDtxQkFDSjtxSUFHeUIsV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhO2dCQUNVLG1CQUFtQjtzQkFBcEQsU0FBUzt1QkFBQyxxQkFBcUI7Z0JBQ0EsaUJBQWlCO3NCQUFoRCxTQUFTO3VCQUFDLG1CQUFtQjtnQkFDTixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ3VCLFFBQVE7c0JBQXBELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFDSyxXQUFXO3NCQUExRCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQ0QscUJBQXFCO3NCQUFqRSxZQUFZO3VCQUFDLDZCQUE2QjtnQkFDakMsU0FBUztzQkFBbEIsTUFBTTtnQkFHSCxTQUFTO3NCQURaLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBU2xDLFVBQVU7c0JBRGIsV0FBVzt1QkFBQyxPQUFPO2dCQUlYLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUdGLFFBQVE7c0JBRlgsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTs7c0JBQ3JDLFdBQVc7dUJBQUMsZUFBZTtnQkEwRjVCLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyx1QkFBdUIsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFNakQsT0FBTztzQkFETixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIENvbXBvbmVudCxcbiAgICBEb0NoZWNrLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIEl0ZXJhYmxlRGlmZmVyLFxuICAgIEl0ZXJhYmxlRGlmZmVycyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgUmVuZGVyZXIyLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Hcm91cCwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkZ2VuIH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBLZXlDb2RlIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgRWNsTXVsdGlzZWxlY3RPcHRpb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbC9lY2wtbXVsdGlzZWxlY3Qtb3B0aW9uLm1vZGVsJztcbmltcG9ydCB7IEVDTEJhc2VEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9lY2wtYmFzZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRWNsQ2hlY2tib3hEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9lY2wtY2hlY2tib3gnO1xuaW1wb3J0IHsgRWNsTXVsdGlzZWxlY3RJbnB1dENvbXBvbmVudCwgRWNsTXVsdGlzZWxlY3RNYWluSW5wdXRDbGlja0V2ZW50IH0gZnJvbSAnLi4vZWNsLW11bHRpc2VsZWN0LWlucHV0L2VjbC1tdWx0aXNlbGVjdC1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRWNsTXVsdGlzZWxlY3RPcHRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi9lY2wtbXVsdGlzZWxlY3Qtb3B0aW9uLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1xuICAgIEVjbE11bHRpc2VsZWN0T3B0aW9uQ2xpY2tFdmVudCxcbiAgICBFY2xNdWx0aXNlbGVjdE9wdGlvbkNvbXBvbmVudCxcbiAgICBFY2xNdWx0aXNlbGVjdE9wdGlvbktleWRvd25FdmVudCxcbn0gZnJvbSAnLi4vZWNsLW11bHRpc2VsZWN0LW9wdGlvbi9lY2wtbXVsdGlzZWxlY3Qtb3B0aW9uLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdkaXZbZWNsTXVsdGlzZWxlY3REcm9wZG93bl0nLFxuICAgIHRlbXBsYXRlVXJsOiAnZWNsLW11bHRpc2VsZWN0LWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBFY2xNdWx0aXNlbGVjdERyb3Bkb3duQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIEVjbE11bHRpc2VsZWN0RHJvcGRvd25Db21wb25lbnQgZXh0ZW5kcyBFQ0xCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgRG9DaGVjaywgT25EZXN0cm95IHtcbiAgICBAVmlld0NoaWxkKCdzZWFyY2hJbnB1dCcpIHNlYXJjaElucHV0OiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoJ2VjbE11bHRpc2VsZWN0SW5wdXQnKSBlY2xNdWx0aXNlbGVjdElucHV0OiBFY2xNdWx0aXNlbGVjdElucHV0Q29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoJ3NlbGVjdEFsbENoZWNrYm94Jykgc2VsZWN0QWxsQ2hlY2tib3g6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZCgnc2VsZWN0QWxsJykgc2VsZWN0QWxsOiBFY2xDaGVja2JveERpcmVjdGl2ZTtcbiAgICBAVmlld0NoaWxkKCdjbG9zZUJ0bicsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBjbG9zZUJ0bjogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdjbGVhckFsbEJ0bicsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBjbGVhckFsbEJ0bjogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkcmVuKEVjbE11bHRpc2VsZWN0T3B0aW9uQ29tcG9uZW50KSBtdWx0aU9wdGlvbkNvbXBvbmVudHM6IFF1ZXJ5TGlzdDxFY2xNdWx0aXNlbGVjdE9wdGlvbkNvbXBvbmVudD47XG4gICAgQE91dHB1dCgpIGVjbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10+KCk7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBnZXQgaXNJbnZhbGlkKCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNJbnZhbGlkO1xuICAgIH1cbiAgICBzZXQgaXNJbnZhbGlkKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX2lzSW52YWxpZCA9IHZhbHVlO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIGdldCBjc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbc3VwZXIuZ2V0Q3NzQ2xhc3NlcygnZWNsLXNlbGVjdF9fbXVsdGlwbGUnKV0uam9pbignICcpLnRyaW0oKTtcbiAgICB9XG4gICAgQElucHV0KCkgbWFpbklucHV0UGxhY2Vob2xkZXIgPSAnU2VsZWN0IGFuIGl0ZW0nO1xuICAgIEBJbnB1dCgpIHNlYXJjaEZpZWxkUGxhY2Vob2xkZXIgPSAnRW50ZXIga2V5d29yZCc7XG4gICAgQElucHV0KCkgZWNsU2l6ZSA9ICdtJztcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuZGlzYWJsZWQnKVxuICAgIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkIHx8IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsdWU7XG4gICAgfVxuXG4gICAgYXJpYURlc2NyaWJlZGJ5OiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgYXJpYUxhYmVsZWRieTogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIHRvZ2dsZUxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgaWQgPSAnJztcbiAgICBpc1Nob3dOb1Jlc3VsdHNGb3VuZCA9IGZhbHNlO1xuICAgIGlzU2hvd011bHRpc2VsZWN0RHJvcGRvd24gPSBmYWxzZTtcbiAgICBtdWx0aU9wdGlvbkRpcmVjdGl2ZXM6IEVjbE11bHRpc2VsZWN0T3B0aW9uRGlyZWN0aXZlW10gPSBbXTtcbiAgICBmb3JtOiBGb3JtR3JvdXA7XG4gICAgcHJvdGVjdGVkIGRyb3Bkb3duSWQgPSAnJztcbiAgICBwcm90ZWN0ZWQgc2VsZWN0QWxsSWQgPSAnJztcbiAgICBwcm90ZWN0ZWQgdG9nZ2xlSWQgPSAnJztcbiAgICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2lzSW52YWxpZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX3NlbGVjdGVkSXRlbXM6IEVjbE11bHRpc2VsZWN0T3B0aW9uW10gPSBbXTtcbiAgICBwcml2YXRlIGRpZmZlcjogSXRlcmFibGVEaWZmZXI8RWNsTXVsdGlzZWxlY3RPcHRpb25Db21wb25lbnQ+O1xuICAgIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICAgIHByaXZhdGUgaXNXcml0ZVZhbHVlQ2FsbGVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSB2YWx1ZXMgPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIGRpZmZlcnM6IEl0ZXJhYmxlRGlmZmVycyxcbiAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmRpZmZlciA9IHRoaXMuZGlmZmVycy5maW5kKFtdKS5jcmVhdGUoKTtcbiAgICB9XG5cbiAgICBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRpZmYgPSB0aGlzLmRpZmZlci5kaWZmKHRoaXMubXVsdGlPcHRpb25Db21wb25lbnRzKTtcblxuICAgICAgICBpZiAoZGlmZikge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNXcml0ZVZhbHVlQ2FsbGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldENvbXBvbmVudCgpO1xuICAgICAgICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZXModGhpcy52YWx1ZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNXcml0ZVZhbHVlQ2FsbGVkID0gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFNlbGVjdGVkT3B0aW9ucygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0QWxsSWQgPSB0aGlzLmdldFNlbGVjdEFsbElkKCk7XG4gICAgICAgIHRoaXMuZHJvcGRvd25JZCA9IHRoaXMuZ2V0RHJvcGRvd25JZCgpO1xuICAgICAgICB0aGlzLnRvZ2dsZUlkID0gdGhpcy5nZXRUb2dnbGVJZCgpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubW9kaWZ5UGFyZW50TGFiZWxGb3JBdHRyaWJ1dGUoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWVzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlPcHRpb25Db21wb25lbnRzKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0Q29tcG9uZW50KCk7XG4gICAgICAgICAgICB0aGlzLndyaXRlVmFsdWVzKHZhbHVlcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlcyA9IHZhbHVlcztcbiAgICAgICAgICAgIHRoaXMuaXNXcml0ZVZhbHVlQ2FsbGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVUb3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5dXAuZXNjYXBlJywgWyckZXZlbnQnXSlcbiAgICBvbkVzY2FwZUtleShldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhpZGVNdWx0aXNlbGVjdERyb3Bkb3duKCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxuICAgIG9uS2V5VXAoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICAgICAgdGhpcy5oaWRlTXVsdGlzZWxlY3REcm9wZG93bigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IG9wdGlvbnNDb3VudCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRBY3RpdmVPcHRpb25zKCkgPyB0aGlzLmdldEFjdGl2ZU9wdGlvbnMoKS5sZW5ndGggOiAwO1xuICAgIH1cblxuICAgIGdldCBzZWxlY3RlZEl0ZW1zKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLmxhYmVsKTtcbiAgICB9XG5cbiAgICBnZXQgaXNJdGVtc1NlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIGdldCBpc1Nob3dUb29sYmFyKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIGluaXRTZWxlY3RlZE9wdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICAgICAgdGhpcy5tdWx0aU9wdGlvbkNvbXBvbmVudHNcbiAgICAgICAgICAgIC5maWx0ZXIoKGVsZW0pID0+IGVsZW0uaXNDaGVja2VkKVxuICAgICAgICAgICAgLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkNsaWNrQ2xlYXJBbGwoZXZ0OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMudW5zZWxlY3RBbGxBY3RpdmVPcHRpb25zKCk7XG4gICAgICAgIHRoaXMuZWNsQ2hhbmdlLmVtaXQoW10pO1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZShbXSk7XG4gICAgfVxuXG4gICAgb25FbnRlckNsZWFyKGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNsaWNrQ2xlYXJBbGwoZXZ0KTtcbiAgICAgICAgdGhpcy5lY2xNdWx0aXNlbGVjdElucHV0Lm9uRm9jdXMoKTtcbiAgICB9XG5cbiAgICBvbkNsaWNrQ2xvc2UoZXZ0OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5oaWRlTXVsdGlzZWxlY3REcm9wZG93bigpO1xuICAgIH1cblxuICAgIG9uQXJyb3dVcENsb3NlQ2xlYXIoZXZ0OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29uc3QgY3VycmVudE9wdGlvbnMgPSB0aGlzLmdldEFjdGl2ZU9wdGlvbnMoKTtcbiAgICAgICAgY3VycmVudE9wdGlvbnNbY3VycmVudE9wdGlvbnMubGVuZ3RoIC0gMV0ub25Gb2N1cygpO1xuICAgIH1cblxuICAgIG9uQXJyb3dMZWZ0Q2xvc2UoZXZ0OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZWxlY3RSb290RWxlbWVudCh0aGlzLmNsZWFyQWxsQnRuLm5hdGl2ZUVsZW1lbnQsIHRydWUpLmZvY3VzKCk7XG4gICAgfVxuXG4gICAgb25UYWJDbG9zZShldnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmVjbE11bHRpc2VsZWN0SW5wdXQub25Gb2N1cygpO1xuICAgIH1cblxuICAgIG9uQXJyb3dSaWdodENsZWFyKGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2VsZWN0Um9vdEVsZW1lbnQodGhpcy5jbG9zZUJ0bi5uYXRpdmVFbGVtZW50LCB0cnVlKS5mb2N1cygpO1xuICAgIH1cblxuICAgIG9uRW50ZXJTZWFyY2goZXZ0OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvbkFycm93RG93blNlYXJjaChldnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBjb25zdCBjdXJyZW50T3B0aW9ucyA9IHRoaXMuZ2V0QWN0aXZlT3B0aW9ucygpO1xuICAgICAgICBpZiAoY3VycmVudE9wdGlvbnMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZWxlY3RSb290RWxlbWVudCh0aGlzLnNlbGVjdEFsbENoZWNrYm94Lm5hdGl2ZUVsZW1lbnQsIHRydWUpLmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjdXJyZW50T3B0aW9uc1swXS5vbkZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkFycm93VXBTZWFyY2goZXZ0OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5oaWRlTXVsdGlzZWxlY3REcm9wZG93bigpO1xuICAgICAgICB0aGlzLmVjbE11bHRpc2VsZWN0SW5wdXQub25Gb2N1cygpO1xuICAgIH1cblxuICAgIG9uS2V5ZG93bk1haW5JbnB1dChldnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLnNob3dNdWx0aXNlbGVjdERyb3Bkb3duKCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5yZW5kZXJlci5zZWxlY3RSb290RWxlbWVudCh0aGlzLnNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQsIHRydWUpLmZvY3VzKCkpO1xuICAgIH1cblxuICAgIG9uQ2xpY2tNYWluSW5wdXQoZXZ0OiBFY2xNdWx0aXNlbGVjdE1haW5JbnB1dENsaWNrRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZ0LmV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMudG9nZ2xlRHJvcGRvd24oKTtcbiAgICB9XG5cbiAgICBvbkFycm93RG93blNlbGVjdEFsbChldnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBjb25zdCBjdXJyZW50T3B0aW9ucyA9IHRoaXMuZ2V0QWN0aXZlT3B0aW9ucygpO1xuICAgICAgICBpZiAoY3VycmVudE9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY3VycmVudE9wdGlvbnNbMF0ub25Gb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25BcnJvd1VwU2VsZWN0QWxsKGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2VsZWN0Um9vdEVsZW1lbnQodGhpcy5zZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LCB0cnVlKS5mb2N1cygpXG4gICAgfVxuXG4gICAgb25TZWFyY2goaW5wdXQ6IEV2ZW50VGFyZ2V0KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGtleXdvcmQgPSAoaW5wdXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG4gICAgICAgIGxldCBpc01hdGNoRm91bmQgPSBmYWxzZTtcbiAgICAgICAgaWYgKGtleXdvcmQgPT09ICcnKSB7XG4gICAgICAgICAgICB0aGlzLmVuYWJsZVNlbGVjdEFsbCgpO1xuICAgICAgICAgICAgaXNNYXRjaEZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMubXVsdGlPcHRpb25Db21wb25lbnRzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBpdGVtLmhpZ2hsaWdodFNlYXJjaFRleHQoJycpO1xuICAgICAgICAgICAgICAgIGl0ZW0uc2hvdygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm11bHRpT3B0aW9uQ29tcG9uZW50cy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0ubGFiZWwudG9Mb3dlckNhc2UoKS5pbmRleE9mKGtleXdvcmQudG9Mb3dlckNhc2UoKSkgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uaGlkZSgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlzTWF0Y2hGb3VuZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uaGlnaGxpZ2h0U2VhcmNoVGV4dChrZXl3b3JkLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgICAgICAgICAgICBpdGVtLnNob3coKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZVNlbGVjdEFsbCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNNYXRjaEZvdW5kKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dOb1Jlc3VsdHNGb3VuZCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5oaWRlTm9SZXN1bHRzRm91bmQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uU2VsZWN0QWxsKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RBbGxDaGVja2JveC5uYXRpdmVFbGVtZW50LmNoZWNrZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0QWxsQWN0aXZlT3B0aW9ucygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy51bnNlbGVjdEFsbEFjdGl2ZU9wdGlvbnMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnByb3BhZ2F0ZVRvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5lY2xDaGFuZ2UuZW1pdCh0aGlzLl9zZWxlY3RlZEl0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS52YWx1ZSkpO1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLl9zZWxlY3RlZEl0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS52YWx1ZSkpO1xuICAgIH1cblxuICAgIG9uS2V5ZG93bk9wdGlvbihldnQ6IEVjbE11bHRpc2VsZWN0T3B0aW9uS2V5ZG93bkV2ZW50KTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAoZXZ0LmtleWJvYXJkRXZlbnQua2V5KSB7XG4gICAgICAgICAgICBjYXNlIEtleUNvZGUuQVJST1dfRE9XTjoge1xuICAgICAgICAgICAgICAgIHRoaXMub25PcHRpb25BcnJvd0Rvd25BbmRUYWIoZXZ0LmtleWJvYXJkRXZlbnQsIGV2dC5tdWx0aXNlbGVjdE9wdGlvbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtleUNvZGUuQVJST1dfVVA6IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uT3B0aW9uQXJyb3dVcChldnQua2V5Ym9hcmRFdmVudCwgZXZ0Lm11bHRpc2VsZWN0T3B0aW9uKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgS2V5Q29kZS5FU0NBUEU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGVNdWx0aXNlbGVjdERyb3Bkb3duKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtleUNvZGUuRU5URVI6IHtcbiAgICAgICAgICAgICAgICAoZXZ0LmtleWJvYXJkRXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmNsaWNrKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtleUNvZGUuVEFCOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbk9wdGlvbkFycm93RG93bkFuZFRhYihldnQua2V5Ym9hcmRFdmVudCwgZXZ0Lm11bHRpc2VsZWN0T3B0aW9uKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uT3B0aW9uU2VsZWN0ZWQoZXZ0OiBFY2xNdWx0aXNlbGVjdE9wdGlvbkNsaWNrRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0QWxsQ2hlY2tib3gubmF0aXZlRWxlbWVudC5jaGVja2VkKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuc2VsZWN0QWxsQ2hlY2tib3gubmF0aXZlRWxlbWVudCwgJ2NoZWNrZWQnLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3Vyck9wdGlvbiA9IGV2dC5tdWx0aXNlbGVjdE9wdGlvbjtcbiAgICAgICAgaWYgKGN1cnJPcHRpb24uaXNDaGVja2VkKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zLnB1c2goY3Vyck9wdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuX3NlbGVjdGVkSXRlbXMuaW5kZXhPZihjdXJyT3B0aW9uKTtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLl9zZWxlY3RlZEl0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS52YWx1ZSkpO1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZVRvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5lY2xDaGFuZ2UuZW1pdCh0aGlzLl9zZWxlY3RlZEl0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS52YWx1ZSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2VsZWN0QWxsQWN0aXZlT3B0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5nZXRBbGxBY3RpdmVPcHRpb25zKCkuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFpdGVtLmlzQ2hlY2tlZCkge1xuICAgICAgICAgICAgICAgIGl0ZW0uaXNDaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgdW5zZWxlY3RBbGxBY3RpdmVPcHRpb25zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuc2VsZWN0QWxsQ2hlY2tib3gubmF0aXZlRWxlbWVudCwgJ2NoZWNrZWQnLCBmYWxzZSk7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICAgICAgdGhpcy5nZXRBbGxBY3RpdmVPcHRpb25zKCkuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaXRlbS5pc0NoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRBbGxBY3RpdmVPcHRpb25zKCk6IEVjbE11bHRpc2VsZWN0T3B0aW9uQ29tcG9uZW50W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5tdWx0aU9wdGlvbkNvbXBvbmVudHMuZmlsdGVyKChlbGVtKSA9PiBlbGVtLmlzQWN0aXZlKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHByaXZhdGUgcHJvcGFnYXRlQ2hhbmdlID0gKF86IGFueSk6IHZvaWQgPT4ge1xuICAgICAgICAvKiBlbXB0eSAqL1xuICAgIH07XG5cbiAgICBwcml2YXRlIHByb3BhZ2F0ZVRvdWNoZWQgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIC8qIGVtcHR5ICovXG4gICAgfTtcblxuICAgIHByaXZhdGUgc2hvd011bHRpc2VsZWN0RHJvcGRvd24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNTaG93TXVsdGlzZWxlY3REcm9wZG93biA9IHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoaWRlTXVsdGlzZWxlY3REcm9wZG93bigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc1Nob3dNdWx0aXNlbGVjdERyb3Bkb3duID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkaXNhYmxlU2VsZWN0QWxsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdEFsbC5pc0Rpc2FibGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGVuYWJsZVNlbGVjdEFsbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RBbGwuaXNEaXNhYmxlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2hvd05vUmVzdWx0c0ZvdW5kKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzU2hvd05vUmVzdWx0c0ZvdW5kID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhpZGVOb1Jlc3VsdHNGb3VuZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc1Nob3dOb1Jlc3VsdHNGb3VuZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzZXRDb21wb25lbnQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubXVsdGlPcHRpb25Db21wb25lbnRzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGl0ZW0uaXNDaGVja2VkID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RBbGxDaGVja2JveCkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLnNlbGVjdEFsbENoZWNrYm94Lm5hdGl2ZUVsZW1lbnQsICdjaGVja2VkJywgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHdyaXRlVmFsdWVzKHZhbHVlczogQXJyYXk8c3RyaW5nPik6IHZvaWQge1xuICAgICAgICBpZiAodmFsdWVzKSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzQXJyYXkgPSBbXTtcbiAgICAgICAgICAgIGlmICh0aGlzLm11bHRpT3B0aW9uQ29tcG9uZW50cyAmJiB0aGlzLm11bHRpT3B0aW9uQ29tcG9uZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tdWx0aU9wdGlvbkNvbXBvbmVudHNcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gdmFsdWVzLmluY2x1ZGVzKGl0ZW0udmFsdWUpICYmICFpdGVtLmRpc2FibGVkKVxuICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsLmlzQ2hlY2tlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEVsZW1lbnRzQXJyYXkucHVzaChlbC5sYWJlbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zLnB1c2goZWwpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdG9nZ2xlRHJvcGRvd24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNTaG93TXVsdGlzZWxlY3REcm9wZG93biA9ICF0aGlzLmlzU2hvd011bHRpc2VsZWN0RHJvcGRvd247XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbk9wdGlvbkFycm93RG93bkFuZFRhYihldnQ6IEtleWJvYXJkRXZlbnQsIG9wdGlvbjogRWNsTXVsdGlzZWxlY3RPcHRpb24pOiB2b2lkIHtcbiAgICAgICAgKGV2dCBhcyBLZXlib2FyZEV2ZW50KS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0T3B0aW9uSW5kZXhCeUlkRnJvbUFjdGl2ZU9wdGlvbnMob3B0aW9uLmlkKTtcbiAgICAgICAgY29uc3QgY3VycmVudE9wdGlvbnMgPSB0aGlzLmdldEFjdGl2ZU9wdGlvbnMoKTtcbiAgICAgICAgaWYgKGluZGV4ICE9PSBjdXJyZW50T3B0aW9ucy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBjb25zdCBuZXh0U2libGluZ0NoZWNrYm94ID0gY3VycmVudE9wdGlvbnNbaW5kZXggKyAxXTtcbiAgICAgICAgICAgIG5leHRTaWJsaW5nQ2hlY2tib3gub25Gb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2xlYXJBbGxCdG4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNlbGVjdFJvb3RFbGVtZW50KHRoaXMuY2xlYXJBbGxCdG4ubmF0aXZlRWxlbWVudCwgdHJ1ZSkuZm9jdXMoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lY2xNdWx0aXNlbGVjdElucHV0Lm9uRm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25PcHRpb25BcnJvd1VwKGV2dDogS2V5Ym9hcmRFdmVudCwgb3B0aW9uOiBFY2xNdWx0aXNlbGVjdE9wdGlvbik6IHZvaWQge1xuICAgICAgICAoZXZ0IGFzIEtleWJvYXJkRXZlbnQpLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRPcHRpb25JbmRleEJ5SWRGcm9tQWN0aXZlT3B0aW9ucyhvcHRpb24uaWQpO1xuICAgICAgICBpZiAoaW5kZXggIT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHByZXZTaWJsaW5nQ2hlY2tib3ggPSB0aGlzLmdldEFjdGl2ZU9wdGlvbnMoKVtpbmRleCAtIDFdO1xuICAgICAgICAgICAgcHJldlNpYmxpbmdDaGVja2JveC5vbkZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RBbGxDaGVja2JveC5uYXRpdmVFbGVtZW50LmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNlbGVjdFJvb3RFbGVtZW50KHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudCwgdHJ1ZSkuZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2VsZWN0Um9vdEVsZW1lbnQodGhpcy5zZWxlY3RBbGxDaGVja2JveC5uYXRpdmVFbGVtZW50LCB0cnVlKS5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRBY3RpdmVPcHRpb25zKCk6IEVjbE11bHRpc2VsZWN0T3B0aW9uQ29tcG9uZW50W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5tdWx0aU9wdGlvbkNvbXBvbmVudHMgPyB0aGlzLm11bHRpT3B0aW9uQ29tcG9uZW50cy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uaXNBY3RpdmUpIDogW107XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRPcHRpb25JbmRleEJ5SWRGcm9tQWN0aXZlT3B0aW9ucyhpZDogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QWN0aXZlT3B0aW9ucygpLmZpbmRJbmRleCgob3B0aW9uKSA9PiBvcHRpb24uaWQgPT09IGlkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFNlbGVjdEFsbElkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB1dWlkZ2VuKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREcm9wZG93bklkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmlkICE9PSAnJyA/IGAke3RoaXMuaWR9LWRyb3Bkb3duYCA6IHV1aWRnZW4oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRvZ2dsZUlkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmlkICE9PSAnJyA/IGAke3RoaXMuaWR9LXRvZ2dsZWAgOiB1dWlkZ2VuKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb2RpZnlQYXJlbnRMYWJlbEZvckF0dHJpYnV0ZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZm9ybSA9IHRoaXMucmVuZGVyZXIucGFyZW50Tm9kZSh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICBjb25zdCBsYWJlbCA9IGZvcm0/LnF1ZXJ5U2VsZWN0b3IoJy5lY2wtZm9ybS1sYWJlbCcpO1xuICAgICAgICBpZiAobGFiZWwpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGxhYmVsLCAnZm9yJywgdGhpcy50b2dnbGVJZCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2IGVjbE11bHRpc2VsZWN0SW5wdXQgI2VjbE11bHRpc2VsZWN0SW5wdXQgW2lucHV0UGxhY2Vob2xkZXJdPVwibWFpbklucHV0UGxhY2Vob2xkZXJcIiBbc2VsZWN0ZWRJdGVtc109XCJzZWxlY3RlZEl0ZW1zXCJcbiAgICAobWFpbklucHV0Q2xpY2spPVwib25DbGlja01haW5JbnB1dCgkZXZlbnQpXCIgKG1haW5JbnB1dEtleWRvd24pPVwib25LZXlkb3duTWFpbklucHV0KCRldmVudClcIiBbaXNEaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW2FyaWFMYWJlbGVkYnldPVwiYXJpYUxhYmVsZWRieVwiIFthcmlhRGVzY3JpYmVkYnldPVwiYXJpYURlc2NyaWJlZGJ5XCIgW3RvZ2dsZUxhYmVsXT1cInRvZ2dsZUxhYmVsXCIgW2FyaWFDb250cm9sc109XCJkcm9wZG93bklkXCIgW2lzSW52YWxpZF09XCJpc0ludmFsaWRcIlxuICAgIFtpc0Ryb3Bkb3duRXhwYW5kZWRdPVwiaXNTaG93TXVsdGlzZWxlY3REcm9wZG93blwiIFtlY2xTaXplXT1cImVjbFNpemVcIiBbdG9nZ2xlSWRdPVwidG9nZ2xlSWRcIj48L2Rpdj5cbjxkaXZcbiAgICBbc3R5bGUuZGlzcGxheV09XCJpc1Nob3dNdWx0aXNlbGVjdERyb3Bkb3duID8gJ2Jsb2NrJyA6ICdub25lJ1wiXG4gICAgY2xhc3M9XCJlY2wtc2VsZWN0X19tdWx0aXBsZS1kcm9wZG93biBlY2wtc2VsZWN0X19jb250YWluZXIgZWNsLXNlbGVjdF9fY29udGFpbmVyLS17e2VjbFNpemV9fVwiXG4gICAgW2lkXT1cImRyb3Bkb3duSWRcIj5cbiAgICA8aW5wdXRcbiAgICAgICAgY2xhc3M9XCJlY2wtdGV4dC1pbnB1dFwiXG4gICAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgICAjc2VhcmNoSW5wdXRcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNlYXJjaEZpZWxkUGxhY2Vob2xkZXJcIlxuICAgICAgICAoaW5wdXQpPVwib25TZWFyY2goJGV2ZW50LnRhcmdldClcIlxuICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvbkVudGVyU2VhcmNoKCRldmVudClcIlxuICAgICAgICAoa2V5ZG93bi5hcnJvd3VwKT1cIm9uQXJyb3dVcFNlYXJjaCgkZXZlbnQpXCJcbiAgICAgICAgKGtleWRvd24uYXJyb3dkb3duKT1cIm9uQXJyb3dEb3duU2VhcmNoKCRldmVudClcIiAvPlxuICAgIDxkaXYgZWNsQ2hlY2tib3ggI3NlbGVjdEFsbCBjbGFzcz1cImVjbC1zZWxlY3RfX211bHRpcGxlLWFsbFwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGVjbENoZWNrYm94SW5wdXRcbiAgICAgICAgICAgICNzZWxlY3RBbGxDaGVja2JveFxuICAgICAgICAgICAgW2lkXT1cInNlbGVjdEFsbElkXCJcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3RBbGwoKVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5hcnJvd3VwKT1cIm9uQXJyb3dVcFNlbGVjdEFsbCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChrZXlkb3duLmFycm93ZG93bik9XCJvbkFycm93RG93blNlbGVjdEFsbCgkZXZlbnQpXCIgLz5cbiAgICAgICAgPGxhYmVsIFtmb3JdPVwic2VsZWN0QWxsSWRcIiBlY2xDaGVja2JveExhYmVsPiB7eyAnZWNsLm11bHRpc2VsZWN0LlNFTEVDVC1BTEwnIHwgdHJhbnNsYXRlIH19ICh7eyBvcHRpb25zQ291bnQgfX0pIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImVjbC1zZWxlY3RfX211bHRpcGxlLW9wdGlvbnNcIj5cbiAgICAgICAgQGZvciAoaXRlbSBvZiBtdWx0aU9wdGlvbkRpcmVjdGl2ZXM7IHRyYWNrIGl0ZW0ubGFiZWwpIHtcbiAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uaXNPcHRHcm91cCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBlY2xNdWx0aXNlbGVjdE9wdGdyb3VwIFtsYWJlbF09XCJpdGVtLmxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChlbGVtIG9mIGl0ZW0uZWNsT3B0aW9uSXRlbXM7IHRyYWNrIGVsZW0ubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjbE11bHRpc2VsZWN0T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJlbGVtLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImVsZW0ubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZWxlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0NoZWNrZWRdPVwiZWxlbS5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJlbGVtLmNsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9wdGlvbkNsaWNrKT1cIm9uT3B0aW9uU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvcHRpb25LZXlkb3duKT1cIm9uS2V5ZG93bk9wdGlvbigkZXZlbnQpXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+XG4gICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAoIWl0ZW0uaXNPcHRHcm91cCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGVjbE11bHRpc2VsZWN0T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaXRlbS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiaXRlbS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaXNDaGVja2VkXT1cIml0ZW0uc2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIml0ZW0uY2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9wdGlvbkNsaWNrKT1cIm9uT3B0aW9uU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAob3B0aW9uS2V5ZG93bik9XCJvbktleWRvd25PcHRpb24oJGV2ZW50KVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG5cbiAgICAgICAgQGlmIChpc1Nob3dOb1Jlc3VsdHNGb3VuZCkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVjbC1zZWxlY3RfX211bHRpcGxlLW5vLXJlc3VsdHNcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyAnZWNsLm11bHRpc2VsZWN0Lk5PLVJFU1VMVFMtRk9VTkQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgIDwvZGl2PlxuICAgIEBpZiAoaXNTaG93VG9vbGJhcikge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZWNsLXNlbGVjdC1tdWx0aXBsZS10b29sYmFyXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZWNsQnV0dG9uXG4gICAgICAgICAgICAgICAgdmFyaWFudD1cImdob3N0XCJcbiAgICAgICAgICAgICAgICAjY2xlYXJBbGxCdG5cbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5hcnJvd3VwKT1cIm9uQXJyb3dVcENsb3NlQ2xlYXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uYXJyb3dyaWdodCk9XCJvbkFycm93UmlnaHRDbGVhcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvbkVudGVyQ2xlYXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2tDbGVhckFsbCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAge3sgJ2VjbC5tdWx0aXNlbGVjdC5DTEVBUi1BTEwnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBlY2xCdXR0b25cbiAgICAgICAgICAgICAgICB2YXJpYW50PVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgI2Nsb3NlQnRuXG4gICAgICAgICAgICAgICAgKGtleWRvd24uYXJyb3d1cCk9XCJvbkFycm93VXBDbG9zZUNsZWFyKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duLmFycm93bGVmdCk9XCJvbkFycm93TGVmdENsb3NlKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duLnRhYik9XCJvblRhYkNsb3NlKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrQ2xvc2UoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIHt7ICdlY2wuY29tbW9uLkNMT1NFJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbjwvZGl2PlxuIl19
@@ -3,8 +3,7 @@ import { DefaultConfig, EuiPagination } from '@eui/base';
3
3
  import { EclBaseEvent } from '../../model/ecl-base.event';
4
4
  import { ECLBaseDirective } from '../ecl-base.directive';
5
5
  import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/common";
7
- import * as i2 from "./ecl-pagination-item.component";
6
+ import * as i1 from "./ecl-pagination-item.component";
8
7
  export class EclPaginationEvent extends EclBaseEvent {
9
8
  constructor(page, showingFrom, showingTo) {
10
9
  super();
@@ -63,11 +62,11 @@ export class EclPaginationComponent extends ECLBaseDirective {
63
62
  this.page.next(evt);
64
63
  }
65
64
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.0", ngImport: i0, type: EclPaginationComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
66
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0-rc.0", type: EclPaginationComponent, selector: "ecl-pagination", inputs: { mode: "mode", totalItems: ["totalItems", "totalItems", numberAttribute], pageSize: ["pageSize", "pageSize", numberAttribute], currentPage: ["currentPage", "currentPage", numberAttribute], pageWindowSize: ["pageWindowSize", "pageWindowSize", numberAttribute] }, outputs: { page: "page" }, host: { properties: { "class.ecl-pagination": "this.cmpClass", "attr.role": "this.role" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ul class=\"ecl-pagination__list\">\n @if (isModeAuto()){\n @if(model.hasPreviousPage()){\n <ecl-pagination-item [isPrevious]=\"true\" (pageClick)=\"onPreviousPage()\"> </ecl-pagination-item>\n }\n\n <ecl-pagination-item\n *ngFor=\"let page of model.getPages()\"\n [label]=\"page.toString()\"\n [isCurrent]=\"model.getCurrentPage() === page\"\n (pageClick)=\"onPage(page)\"\n [pagesCount]=\"model.getPagesCount().toString()\"\n >\n </ecl-pagination-item>\n\n @if(model.hasNextPage()){\n <ecl-pagination-item [isNext]=\"true\" (pageClick)=\"onNextPage()\"> </ecl-pagination-item>\n }\n }\n\n @if(!isModeAuto()){\n <ng-content></ng-content>\n }\n</ul>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2.EclPaginationItemComponent, selector: "ecl-pagination-item", inputs: ["label", "ariaLabel", "pagesCount", "isCurrent", "isNext", "isPrevious", "isTruncated", "routerLink", "queryParams", "queryParamsHandling", "href"], outputs: ["pageClick"] }] }); }
65
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0-rc.0", type: EclPaginationComponent, selector: "ecl-pagination", inputs: { mode: "mode", totalItems: ["totalItems", "totalItems", numberAttribute], pageSize: ["pageSize", "pageSize", numberAttribute], currentPage: ["currentPage", "currentPage", numberAttribute], pageWindowSize: ["pageWindowSize", "pageWindowSize", numberAttribute] }, outputs: { page: "page" }, host: { properties: { "class.ecl-pagination": "this.cmpClass", "attr.role": "this.role" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ul class=\"ecl-pagination__list\">\n @if (isModeAuto()){\n @if(model.hasPreviousPage()){\n <ecl-pagination-item [isPrevious]=\"true\" (pageClick)=\"onPreviousPage()\"> </ecl-pagination-item>\n }\n @for (page of model.getPages(); track page) {\n <ecl-pagination-item\n [label]=\"page.toString()\"\n [isCurrent]=\"model.getCurrentPage() === page\"\n (pageClick)=\"onPage(page)\"\n [pagesCount]=\"model.getPagesCount().toString()\"\n >\n </ecl-pagination-item>\n }\n\n @if(model.hasNextPage()){\n <ecl-pagination-item [isNext]=\"true\" (pageClick)=\"onNextPage()\"> </ecl-pagination-item>\n }\n }\n\n @if(!isModeAuto()){\n <ng-content></ng-content>\n }\n</ul>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: i1.EclPaginationItemComponent, selector: "ecl-pagination-item", inputs: ["label", "ariaLabel", "pagesCount", "isCurrent", "isNext", "isPrevious", "isTruncated", "routerLink", "queryParams", "queryParamsHandling", "href"], outputs: ["pageClick"] }] }); }
67
66
  }
68
67
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.0", ngImport: i0, type: EclPaginationComponent, decorators: [{
69
68
  type: Component,
70
- args: [{ selector: 'ecl-pagination', template: "<ul class=\"ecl-pagination__list\">\n @if (isModeAuto()){\n @if(model.hasPreviousPage()){\n <ecl-pagination-item [isPrevious]=\"true\" (pageClick)=\"onPreviousPage()\"> </ecl-pagination-item>\n }\n\n <ecl-pagination-item\n *ngFor=\"let page of model.getPages()\"\n [label]=\"page.toString()\"\n [isCurrent]=\"model.getCurrentPage() === page\"\n (pageClick)=\"onPage(page)\"\n [pagesCount]=\"model.getPagesCount().toString()\"\n >\n </ecl-pagination-item>\n\n @if(model.hasNextPage()){\n <ecl-pagination-item [isNext]=\"true\" (pageClick)=\"onNextPage()\"> </ecl-pagination-item>\n }\n }\n\n @if(!isModeAuto()){\n <ng-content></ng-content>\n }\n</ul>\n", styles: [":host{display:block}\n"] }]
69
+ args: [{ selector: 'ecl-pagination', template: "<ul class=\"ecl-pagination__list\">\n @if (isModeAuto()){\n @if(model.hasPreviousPage()){\n <ecl-pagination-item [isPrevious]=\"true\" (pageClick)=\"onPreviousPage()\"> </ecl-pagination-item>\n }\n @for (page of model.getPages(); track page) {\n <ecl-pagination-item\n [label]=\"page.toString()\"\n [isCurrent]=\"model.getCurrentPage() === page\"\n (pageClick)=\"onPage(page)\"\n [pagesCount]=\"model.getPagesCount().toString()\"\n >\n </ecl-pagination-item>\n }\n\n @if(model.hasNextPage()){\n <ecl-pagination-item [isNext]=\"true\" (pageClick)=\"onNextPage()\"> </ecl-pagination-item>\n }\n }\n\n @if(!isModeAuto()){\n <ng-content></ng-content>\n }\n</ul>\n", styles: [":host{display:block}\n"] }]
71
70
  }], propDecorators: { mode: [{
72
71
  type: Input
73
72
  }], totalItems: [{
@@ -91,4 +90,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.0", ng
91
90
  type: HostBinding,
92
91
  args: ['attr.role']
93
92
  }] } });
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLXBhZ2luYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2VjbC1wYWdpbmF0aW9uL2VjbC1wYWdpbmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtcGFnaW5hdGlvbi9lY2wtcGFnaW5hdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7OztBQUV6RCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsWUFBWTtJQUNoRCxZQUNvQixJQUFZLEVBQ1osV0FBbUIsRUFDbkIsU0FBaUI7UUFFakMsS0FBSyxFQUFFLENBQUM7UUFKUSxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFDbkIsY0FBUyxHQUFULFNBQVMsQ0FBUTtJQUdyQyxDQUFDO0NBQ0o7QUFZRCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsZ0JBQWdCO0lBWDVEOztRQVlhLFNBQUksR0FBc0IsUUFBUSxDQUFDO1FBQ0wsZUFBVSxHQUFXLGFBQWEsQ0FBQyxVQUFVLENBQUM7UUFDOUMsYUFBUSxHQUFXLGFBQWEsQ0FBQyxRQUFRLENBQUM7UUFDMUMsZ0JBQVcsR0FBVyxhQUFhLENBQUMsV0FBVyxDQUFDO1FBQ2hELG1CQUFjLEdBQVcsYUFBYSxDQUFDLGNBQWMsQ0FBQztRQUVuRixTQUFJLEdBQUcsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFFbkIsYUFBUSxHQUFHLElBQUksQ0FBQztRQUMzQixTQUFJLEdBQUcsWUFBWSxDQUFDO1FBRXZDLFVBQUssR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUM7S0E2Q3pDO0lBM0NHLFFBQVE7UUFDSixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ3BCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsS0FBSyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUM7Z0JBQzlCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtnQkFDM0IsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUN2QixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7Z0JBQzdCLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYzthQUN0QyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWM7UUFDVixJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxVQUFVO1FBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFZO1FBQ2YsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxVQUFVO1FBQ04sT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQztJQUNoQyxDQUFDO0lBRU8sYUFBYTtRQUNqQixNQUFNLEdBQUcsR0FBRyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFFeEgsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEIsQ0FBQzttSEF4RFEsc0JBQXNCO3VHQUF0QixzQkFBc0IsK0ZBRVgsZUFBZSxzQ0FDZixlQUFlLCtDQUNmLGVBQWUsd0RBQ2YsZUFBZSxpTUM5QnZDLGt5QkF3QkE7O2dHRENhLHNCQUFzQjtrQkFYbEMsU0FBUzsrQkFDSSxnQkFBZ0I7OEJBV2pCLElBQUk7c0JBQVosS0FBSztnQkFDaUMsVUFBVTtzQkFBaEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUU7Z0JBQ0UsUUFBUTtzQkFBOUMsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUU7Z0JBQ0UsV0FBVztzQkFBakQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUU7Z0JBQ0UsY0FBYztzQkFBcEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUU7Z0JBRTNCLElBQUk7c0JBQWIsTUFBTTtnQkFFOEIsUUFBUTtzQkFBNUMsV0FBVzt1QkFBQyxzQkFBc0I7Z0JBQ1QsSUFBSTtzQkFBN0IsV0FBVzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgbnVtYmVyQXR0cmlidXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEZWZhdWx0Q29uZmlnLCBFdWlQYWdpbmF0aW9uIH0gZnJvbSAnQGV1aS9iYXNlJztcbmltcG9ydCB7IEVjbEJhc2VFdmVudCB9IGZyb20gJy4uLy4uL21vZGVsL2VjbC1iYXNlLmV2ZW50JztcbmltcG9ydCB7IEVDTEJhc2VEaXJlY3RpdmUgfSBmcm9tICcuLi9lY2wtYmFzZS5kaXJlY3RpdmUnO1xuXG5leHBvcnQgY2xhc3MgRWNsUGFnaW5hdGlvbkV2ZW50IGV4dGVuZHMgRWNsQmFzZUV2ZW50IHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IHBhZ2U6IG51bWJlcixcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IHNob3dpbmdGcm9tOiBudW1iZXIsXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBzaG93aW5nVG86IG51bWJlcixcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG59XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2VjbC1wYWdpbmF0aW9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZWNsLXBhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlczogW1xuICAgICAgICBgXG4gICAgICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgIGAsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRWNsUGFnaW5hdGlvbkNvbXBvbmVudCBleHRlbmRzIEVDTEJhc2VEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KCkgbW9kZTogJ21hbnVhbCcgfCAnYXV0bycgPSAnbWFudWFsJztcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSB0b3RhbEl0ZW1zOiBudW1iZXIgPSBEZWZhdWx0Q29uZmlnLnRvdGFsSXRlbXM7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgcGFnZVNpemU6IG51bWJlciA9IERlZmF1bHRDb25maWcucGFnZVNpemU7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgY3VycmVudFBhZ2U6IG51bWJlciA9IERlZmF1bHRDb25maWcuY3VycmVudFBhZ2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgcGFnZVdpbmRvd1NpemU6IG51bWJlciA9IERlZmF1bHRDb25maWcucGFnZVdpbmRvd1NpemU7XG5cbiAgICBAT3V0cHV0KCkgcGFnZSA9IG5ldyBFdmVudEVtaXR0ZXI8RWNsUGFnaW5hdGlvbkV2ZW50PigpO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5lY2wtcGFnaW5hdGlvbicpIGNtcENsYXNzID0gdHJ1ZTtcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpIHJvbGUgPSAnbmF2aWdhdGlvbic7XG5cbiAgICBwdWJsaWMgbW9kZWwgPSBFdWlQYWdpbmF0aW9uLmNyZWF0ZSgpO1xuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzTW9kZUF1dG8oKSkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5maXJlUGFnZUV2ZW50KCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc01vZGVBdXRvKCkpIHtcbiAgICAgICAgICAgIHRoaXMubW9kZWwgPSBFdWlQYWdpbmF0aW9uLmNyZWF0ZSh7XG4gICAgICAgICAgICAgICAgdG90YWxJdGVtczogdGhpcy50b3RhbEl0ZW1zLFxuICAgICAgICAgICAgICAgIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlOiB0aGlzLmN1cnJlbnRQYWdlLFxuICAgICAgICAgICAgICAgIHBhZ2VXaW5kb3dTaXplOiB0aGlzLnBhZ2VXaW5kb3dTaXplLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblByZXZpb3VzUGFnZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb2RlbC5nb1RvUHJldmlvdXNQYWdlKCk7XG4gICAgICAgIHRoaXMuZmlyZVBhZ2VFdmVudCgpO1xuICAgIH1cblxuICAgIG9uTmV4dFBhZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubW9kZWwuZ29Ub05leHRQYWdlKCk7XG4gICAgICAgIHRoaXMuZmlyZVBhZ2VFdmVudCgpO1xuICAgIH1cblxuICAgIG9uUGFnZShwYWdlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb2RlbC5nb1RvUGFnZShwYWdlKTtcbiAgICAgICAgdGhpcy5maXJlUGFnZUV2ZW50KCk7XG4gICAgfVxuXG4gICAgaXNNb2RlQXV0bygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gJ2F1dG8nO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmlyZVBhZ2VFdmVudCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZXZ0ID0gbmV3IEVjbFBhZ2luYXRpb25FdmVudCh0aGlzLm1vZGVsLmdldEN1cnJlbnRQYWdlKCksIHRoaXMubW9kZWwuZ2V0U2hvd2luZ0Zyb20oKSwgdGhpcy5tb2RlbC5nZXRTaG93aW5nVG8oKSk7XG5cbiAgICAgICAgdGhpcy5wYWdlLm5leHQoZXZ0KTtcbiAgICB9XG59XG4iLCI8dWwgY2xhc3M9XCJlY2wtcGFnaW5hdGlvbl9fbGlzdFwiPlxuICAgIEBpZiAoaXNNb2RlQXV0bygpKXtcbiAgICAgICAgQGlmKG1vZGVsLmhhc1ByZXZpb3VzUGFnZSgpKXtcbiAgICAgICAgICAgIDxlY2wtcGFnaW5hdGlvbi1pdGVtIFtpc1ByZXZpb3VzXT1cInRydWVcIiAocGFnZUNsaWNrKT1cIm9uUHJldmlvdXNQYWdlKClcIj4gPC9lY2wtcGFnaW5hdGlvbi1pdGVtPlxuICAgICAgICB9XG5cbiAgICAgICAgPGVjbC1wYWdpbmF0aW9uLWl0ZW1cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwYWdlIG9mIG1vZGVsLmdldFBhZ2VzKClcIlxuICAgICAgICAgICAgW2xhYmVsXT1cInBhZ2UudG9TdHJpbmcoKVwiXG4gICAgICAgICAgICBbaXNDdXJyZW50XT1cIm1vZGVsLmdldEN1cnJlbnRQYWdlKCkgPT09IHBhZ2VcIlxuICAgICAgICAgICAgKHBhZ2VDbGljayk9XCJvblBhZ2UocGFnZSlcIlxuICAgICAgICAgICAgW3BhZ2VzQ291bnRdPVwibW9kZWwuZ2V0UGFnZXNDb3VudCgpLnRvU3RyaW5nKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICA8L2VjbC1wYWdpbmF0aW9uLWl0ZW0+XG5cbiAgICAgICAgQGlmKG1vZGVsLmhhc05leHRQYWdlKCkpe1xuICAgICAgICAgICAgPGVjbC1wYWdpbmF0aW9uLWl0ZW0gW2lzTmV4dF09XCJ0cnVlXCIgKHBhZ2VDbGljayk9XCJvbk5leHRQYWdlKClcIj4gPC9lY2wtcGFnaW5hdGlvbi1pdGVtPlxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGlmKCFpc01vZGVBdXRvKCkpe1xuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgfVxuPC91bD5cbiJdfQ==
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLXBhZ2luYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2VjbC1wYWdpbmF0aW9uL2VjbC1wYWdpbmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtcGFnaW5hdGlvbi9lY2wtcGFnaW5hdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBRXpELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxZQUFZO0lBQ2hELFlBQ29CLElBQVksRUFDWixXQUFtQixFQUNuQixTQUFpQjtRQUVqQyxLQUFLLEVBQUUsQ0FBQztRQUpRLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUNuQixjQUFTLEdBQVQsU0FBUyxDQUFRO0lBR3JDLENBQUM7Q0FDSjtBQVlELE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxnQkFBZ0I7SUFYNUQ7O1FBWWEsU0FBSSxHQUFzQixRQUFRLENBQUM7UUFDTCxlQUFVLEdBQVcsYUFBYSxDQUFDLFVBQVUsQ0FBQztRQUM5QyxhQUFRLEdBQVcsYUFBYSxDQUFDLFFBQVEsQ0FBQztRQUMxQyxnQkFBVyxHQUFXLGFBQWEsQ0FBQyxXQUFXLENBQUM7UUFDaEQsbUJBQWMsR0FBVyxhQUFhLENBQUMsY0FBYyxDQUFDO1FBRW5GLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBc0IsQ0FBQztRQUVuQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBQzNCLFNBQUksR0FBRyxZQUFZLENBQUM7UUFFdkMsVUFBSyxHQUFHLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztLQTZDekM7SUEzQ0csUUFBUTtRQUNKLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDcEIsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDWixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekIsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQztnQkFDOUIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO2dCQUMzQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ3ZCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztnQkFDN0IsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO2FBQ3RDLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztRQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELFVBQVU7UUFDTixJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsTUFBTSxDQUFDLElBQVk7UUFDZixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELFVBQVU7UUFDTixPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDO0lBQ2hDLENBQUM7SUFFTyxhQUFhO1FBQ2pCLE1BQU0sR0FBRyxHQUFHLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUV4SCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QixDQUFDO21IQXhEUSxzQkFBc0I7dUdBQXRCLHNCQUFzQiwrRkFFWCxlQUFlLHNDQUNmLGVBQWUsK0NBQ2YsZUFBZSx3REFDZixlQUFlLGlNQzlCdkMscTBCQXdCQTs7Z0dEQ2Esc0JBQXNCO2tCQVhsQyxTQUFTOytCQUNJLGdCQUFnQjs4QkFXakIsSUFBSTtzQkFBWixLQUFLO2dCQUNpQyxVQUFVO3NCQUFoRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFDRSxRQUFRO3NCQUE5QyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFDRSxXQUFXO3NCQUFqRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFDRSxjQUFjO3NCQUFwRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFFM0IsSUFBSTtzQkFBYixNQUFNO2dCQUU4QixRQUFRO3NCQUE1QyxXQUFXO3VCQUFDLHNCQUFzQjtnQkFDVCxJQUFJO3NCQUE3QixXQUFXO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBudW1iZXJBdHRyaWJ1dGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERlZmF1bHRDb25maWcsIEV1aVBhZ2luYXRpb24gfSBmcm9tICdAZXVpL2Jhc2UnO1xuaW1wb3J0IHsgRWNsQmFzZUV2ZW50IH0gZnJvbSAnLi4vLi4vbW9kZWwvZWNsLWJhc2UuZXZlbnQnO1xuaW1wb3J0IHsgRUNMQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4uL2VjbC1iYXNlLmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCBjbGFzcyBFY2xQYWdpbmF0aW9uRXZlbnQgZXh0ZW5kcyBFY2xCYXNlRXZlbnQge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgcGFnZTogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgc2hvd2luZ0Zyb206IG51bWJlcixcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IHNob3dpbmdUbzogbnVtYmVyLFxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cbn1cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZWNsLXBhZ2luYXRpb24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9lY2wtcGFnaW5hdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVzOiBbXG4gICAgICAgIGBcbiAgICAgICAgICAgIDpob3N0IHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgYCxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBFY2xQYWdpbmF0aW9uQ29tcG9uZW50IGV4dGVuZHMgRUNMQmFzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgICBASW5wdXQoKSBtb2RlOiAnbWFudWFsJyB8ICdhdXRvJyA9ICdtYW51YWwnO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIHRvdGFsSXRlbXM6IG51bWJlciA9IERlZmF1bHRDb25maWcudG90YWxJdGVtcztcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBwYWdlU2l6ZTogbnVtYmVyID0gRGVmYXVsdENvbmZpZy5wYWdlU2l6ZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBjdXJyZW50UGFnZTogbnVtYmVyID0gRGVmYXVsdENvbmZpZy5jdXJyZW50UGFnZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBwYWdlV2luZG93U2l6ZTogbnVtYmVyID0gRGVmYXVsdENvbmZpZy5wYWdlV2luZG93U2l6ZTtcblxuICAgIEBPdXRwdXQoKSBwYWdlID0gbmV3IEV2ZW50RW1pdHRlcjxFY2xQYWdpbmF0aW9uRXZlbnQ+KCk7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmVjbC1wYWdpbmF0aW9uJykgY21wQ2xhc3MgPSB0cnVlO1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJykgcm9sZSA9ICduYXZpZ2F0aW9uJztcblxuICAgIHB1YmxpYyBtb2RlbCA9IEV1aVBhZ2luYXRpb24uY3JlYXRlKCk7XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNNb2RlQXV0bygpKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpcmVQYWdlRXZlbnQoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzTW9kZUF1dG8oKSkge1xuICAgICAgICAgICAgdGhpcy5tb2RlbCA9IEV1aVBhZ2luYXRpb24uY3JlYXRlKHtcbiAgICAgICAgICAgICAgICB0b3RhbEl0ZW1zOiB0aGlzLnRvdGFsSXRlbXMsXG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IHRoaXMucGFnZVNpemUsXG4gICAgICAgICAgICAgICAgY3VycmVudFBhZ2U6IHRoaXMuY3VycmVudFBhZ2UsXG4gICAgICAgICAgICAgICAgcGFnZVdpbmRvd1NpemU6IHRoaXMucGFnZVdpbmRvd1NpemUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uUHJldmlvdXNQYWdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vZGVsLmdvVG9QcmV2aW91c1BhZ2UoKTtcbiAgICAgICAgdGhpcy5maXJlUGFnZUV2ZW50KCk7XG4gICAgfVxuXG4gICAgb25OZXh0UGFnZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb2RlbC5nb1RvTmV4dFBhZ2UoKTtcbiAgICAgICAgdGhpcy5maXJlUGFnZUV2ZW50KCk7XG4gICAgfVxuXG4gICAgb25QYWdlKHBhZ2U6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLm1vZGVsLmdvVG9QYWdlKHBhZ2UpO1xuICAgICAgICB0aGlzLmZpcmVQYWdlRXZlbnQoKTtcbiAgICB9XG5cbiAgICBpc01vZGVBdXRvKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnYXV0byc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaXJlUGFnZUV2ZW50KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBldnQgPSBuZXcgRWNsUGFnaW5hdGlvbkV2ZW50KHRoaXMubW9kZWwuZ2V0Q3VycmVudFBhZ2UoKSwgdGhpcy5tb2RlbC5nZXRTaG93aW5nRnJvbSgpLCB0aGlzLm1vZGVsLmdldFNob3dpbmdUbygpKTtcblxuICAgICAgICB0aGlzLnBhZ2UubmV4dChldnQpO1xuICAgIH1cbn1cbiIsIjx1bCBjbGFzcz1cImVjbC1wYWdpbmF0aW9uX19saXN0XCI+XG4gICAgQGlmIChpc01vZGVBdXRvKCkpe1xuICAgICAgICBAaWYobW9kZWwuaGFzUHJldmlvdXNQYWdlKCkpe1xuICAgICAgICAgICAgPGVjbC1wYWdpbmF0aW9uLWl0ZW0gW2lzUHJldmlvdXNdPVwidHJ1ZVwiIChwYWdlQ2xpY2spPVwib25QcmV2aW91c1BhZ2UoKVwiPiA8L2VjbC1wYWdpbmF0aW9uLWl0ZW0+XG4gICAgICAgIH1cbiAgICAgICAgQGZvciAocGFnZSBvZiBtb2RlbC5nZXRQYWdlcygpOyB0cmFjayBwYWdlKSB7XG4gICAgICAgICAgICA8ZWNsLXBhZ2luYXRpb24taXRlbVxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJwYWdlLnRvU3RyaW5nKClcIlxuICAgICAgICAgICAgICAgIFtpc0N1cnJlbnRdPVwibW9kZWwuZ2V0Q3VycmVudFBhZ2UoKSA9PT0gcGFnZVwiXG4gICAgICAgICAgICAgICAgKHBhZ2VDbGljayk9XCJvblBhZ2UocGFnZSlcIlxuICAgICAgICAgICAgICAgIFtwYWdlc0NvdW50XT1cIm1vZGVsLmdldFBhZ2VzQ291bnQoKS50b1N0cmluZygpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvZWNsLXBhZ2luYXRpb24taXRlbT5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZihtb2RlbC5oYXNOZXh0UGFnZSgpKXtcbiAgICAgICAgICAgIDxlY2wtcGFnaW5hdGlvbi1pdGVtIFtpc05leHRdPVwidHJ1ZVwiIChwYWdlQ2xpY2spPVwib25OZXh0UGFnZSgpXCI+IDwvZWNsLXBhZ2luYXRpb24taXRlbT5cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBpZighaXNNb2RlQXV0bygpKXtcbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIH1cbjwvdWw+XG4iXX0=
@@ -10,8 +10,8 @@ import * as i0 from "@angular/core";
10
10
  import * as i1 from "../../services/ecl-language.service";
11
11
  import * as i2 from "@ngx-translate/core";
12
12
  import * as i3 from "../../services";
13
- import * as i4 from "@angular/common";
14
- import * as i5 from "../ecl-link/ecl-link.directive";
13
+ import * as i4 from "../ecl-link/ecl-link.directive";
14
+ import * as i5 from "@angular/common";
15
15
  export class EclSiteHeaderLogoClickEvent extends EclBaseEvent {
16
16
  }
17
17
  export class EclSiteHeaderComponent extends ECLBaseDirective {
@@ -67,11 +67,11 @@ export class EclSiteHeaderComponent extends ECLBaseDirective {
67
67
  return this.eclLanguageService.getEULanguageOrFallback(this.languageCode).code;
68
68
  }
69
69
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.0", ngImport: i0, type: EclSiteHeaderComponent, deps: [{ token: i1.EclLanguageService }, { token: i2.TranslateService }, { token: i3.EclThemeService }], target: i0.ɵɵFactoryTarget.Component }); }
70
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0-rc.0", type: EclSiteHeaderComponent, selector: "ecl-site-header", inputs: { logoUrl: "logoUrl", siteName: "siteName", languageCode: "languageCode" }, outputs: { logoClick: "logoClick", languageClick: "languageClick" }, host: { properties: { "class": "this.cssClasses" } }, queries: [{ propertyName: "eclLoginComponent", first: true, predicate: EclSiteHeaderLoginComponent, descendants: true }, { propertyName: "eclSearchComponent", first: true, predicate: EclSiteHeaderSearchComponent, descendants: true }, { propertyName: "eclLanguageComponent", first: true, predicate: EclSiteHeaderLanguageComponent, descendants: true }, { propertyName: "eclHeaderLink", first: true, predicate: EclSiteHeaderLinkDirective, descendants: true }], viewQueries: [{ propertyName: "topContainerElement", first: true, predicate: ["topContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ecl-site-header__background\">\n <div class=\"ecl-site-header__header\">\n <div class=\"ecl-site-header__container ecl-container\">\n <div #topContainer class=\"ecl-site-header__top\">\n @if(hasCustomLink()) {\n <ng-content select=\"[eclSiteHeaderLink]\"></ng-content>\n } @else {\n <a eclLink variant=\"standalone\" class=\"ecl-site-header__logo-link\"\n href=\"https://ec.europa.eu/info/index_{{ getEULanguageCode() }}\" (click)=\"onECLogoClick($event)\"\n [attr.aria-label]=\"'ecl.footer.EUROPEAN-COMMISSION' | translate\">\n <ng-content select=\"[eclSiteHeaderEnvironment]\"></ng-content>\n\n <ng-container *ngIf=\"eclThemeService.isEC$ | async\">\n <picture class=\"ecl-picture ecl-site-header__picture\"\n [attr.title]=\"'ecl.footer.EUROPEAN-COMMISSION' | translate\">\n <source\n srcset=\"./assets/images/ecl/ec/logo/positive/logo-ec--{{ getEULanguageCode() }}.svg\"\n media=\"(min-width: 996px)\" />\n <img class=\"ecl-site-header__logo-image\"\n src=\"./assets/images/ecl/ec/logo/positive/logo-ec--{{ getEULanguageCode() }}.svg\"\n alt=\"European Commission logo\" />\n </picture>\n </ng-container>\n\n <ng-container *ngIf=\"eclThemeService.isEU$ | async\">\n <picture class=\"ecl-picture ecl-site-header__picture\"\n [attr.title]=\"'ecl.footer.EUROPEAN-UNION' | translate\">\n <source\n srcset=\"./assets/images/ecl/eu/logo/standard-version/positive/logo-eu--{{ getEULanguageCode() }}.svg\"\n media=\"(min-width: 996px)\" />\n <img class=\"ecl-site-header__logo-image\"\n src=\"./assets/images/ecl/eu/logo/condensed-version/positive/logo-eu--{{ getEULanguageCode() }}.svg\"\n alt=\"European Union flag\" />\n </picture>\n </ng-container>\n </a>\n }\n <ng-content select=\"ecl-site-header-action\"></ng-content>\n </div>\n </div>\n </div>\n <ng-content select=\"ecl-site-header-notification\"></ng-content>\n</div>\n\n\n<ng-content select=\"ecl-site-header-banner-top\"></ng-content>\n\n<div *ngIf=\"siteName\" class=\"ecl-site-header__banner\">\n <div class=\"ecl-container\">\n <div class=\"ecl-site-header__site-name\">{{ siteName }}</div>\n <ng-content select=\"[eclSiteHeaderCta]\"></ng-content>\n </div>\n</div>\n\n<ng-content select=\"ecl-menu\"></ng-content>", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.EclLinkDirective, selector: "[eclLink]", inputs: ["isInverted", "isIconOnly", "isNoVisited", "variant"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
70
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0-rc.0", type: EclSiteHeaderComponent, selector: "ecl-site-header", inputs: { logoUrl: "logoUrl", siteName: "siteName", languageCode: "languageCode" }, outputs: { logoClick: "logoClick", languageClick: "languageClick" }, host: { properties: { "class": "this.cssClasses" } }, queries: [{ propertyName: "eclLoginComponent", first: true, predicate: EclSiteHeaderLoginComponent, descendants: true }, { propertyName: "eclSearchComponent", first: true, predicate: EclSiteHeaderSearchComponent, descendants: true }, { propertyName: "eclLanguageComponent", first: true, predicate: EclSiteHeaderLanguageComponent, descendants: true }, { propertyName: "eclHeaderLink", first: true, predicate: EclSiteHeaderLinkDirective, descendants: true }], viewQueries: [{ propertyName: "topContainerElement", first: true, predicate: ["topContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ecl-site-header__background\">\n <div class=\"ecl-site-header__header\">\n <div class=\"ecl-site-header__container ecl-container\">\n <div #topContainer class=\"ecl-site-header__top\">\n @if(hasCustomLink()) {\n <ng-content select=\"[eclSiteHeaderLink]\"></ng-content>\n } @else {\n <a eclLink variant=\"standalone\" class=\"ecl-site-header__logo-link\"\n href=\"https://ec.europa.eu/info/index_{{ getEULanguageCode() }}\" (click)=\"onECLogoClick($event)\"\n [attr.aria-label]=\"'ecl.footer.EUROPEAN-COMMISSION' | translate\">\n <ng-content select=\"[eclSiteHeaderEnvironment]\"></ng-content>\n\n @if (eclThemeService.isEC$ | async) {\n <picture class=\"ecl-picture ecl-site-header__picture\"\n [attr.title]=\"'ecl.footer.EUROPEAN-COMMISSION' | translate\">\n <source\n srcset=\"./assets/images/ecl/ec/logo/positive/logo-ec--{{ getEULanguageCode() }}.svg\"\n media=\"(min-width: 996px)\" />\n <img class=\"ecl-site-header__logo-image\"\n src=\"./assets/images/ecl/ec/logo/positive/logo-ec--{{ getEULanguageCode() }}.svg\"\n alt=\"European Commission logo\" />\n </picture>\n }\n @if (eclThemeService.isEU$ | async) {\n <picture class=\"ecl-picture ecl-site-header__picture\"\n [attr.title]=\"'ecl.footer.EUROPEAN-UNION' | translate\">\n <source\n srcset=\"./assets/images/ecl/eu/logo/standard-version/positive/logo-eu--{{ getEULanguageCode() }}.svg\"\n media=\"(min-width: 996px)\" />\n <img class=\"ecl-site-header__logo-image\"\n src=\"./assets/images/ecl/eu/logo/condensed-version/positive/logo-eu--{{ getEULanguageCode() }}.svg\"\n alt=\"European Union flag\" />\n </picture>\n }\n </a>\n }\n <ng-content select=\"ecl-site-header-action\"></ng-content>\n </div>\n </div>\n </div>\n <ng-content select=\"ecl-site-header-notification\"></ng-content>\n</div>\n\n\n<ng-content select=\"ecl-site-header-banner-top\"></ng-content>\n@if (siteName) {\n <div class=\"ecl-site-header__banner\">\n <div class=\"ecl-container\">\n <div class=\"ecl-site-header__site-name\">{{ siteName }}</div>\n <ng-content select=\"[eclSiteHeaderCta]\"></ng-content>\n </div>\n </div>\n}\n\n<ng-content select=\"ecl-menu\"></ng-content>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i4.EclLinkDirective, selector: "[eclLink]", inputs: ["isInverted", "isIconOnly", "isNoVisited", "variant"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
71
71
  }
72
72
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.0", ngImport: i0, type: EclSiteHeaderComponent, decorators: [{
73
73
  type: Component,
74
- args: [{ selector: 'ecl-site-header', template: "<div class=\"ecl-site-header__background\">\n <div class=\"ecl-site-header__header\">\n <div class=\"ecl-site-header__container ecl-container\">\n <div #topContainer class=\"ecl-site-header__top\">\n @if(hasCustomLink()) {\n <ng-content select=\"[eclSiteHeaderLink]\"></ng-content>\n } @else {\n <a eclLink variant=\"standalone\" class=\"ecl-site-header__logo-link\"\n href=\"https://ec.europa.eu/info/index_{{ getEULanguageCode() }}\" (click)=\"onECLogoClick($event)\"\n [attr.aria-label]=\"'ecl.footer.EUROPEAN-COMMISSION' | translate\">\n <ng-content select=\"[eclSiteHeaderEnvironment]\"></ng-content>\n\n <ng-container *ngIf=\"eclThemeService.isEC$ | async\">\n <picture class=\"ecl-picture ecl-site-header__picture\"\n [attr.title]=\"'ecl.footer.EUROPEAN-COMMISSION' | translate\">\n <source\n srcset=\"./assets/images/ecl/ec/logo/positive/logo-ec--{{ getEULanguageCode() }}.svg\"\n media=\"(min-width: 996px)\" />\n <img class=\"ecl-site-header__logo-image\"\n src=\"./assets/images/ecl/ec/logo/positive/logo-ec--{{ getEULanguageCode() }}.svg\"\n alt=\"European Commission logo\" />\n </picture>\n </ng-container>\n\n <ng-container *ngIf=\"eclThemeService.isEU$ | async\">\n <picture class=\"ecl-picture ecl-site-header__picture\"\n [attr.title]=\"'ecl.footer.EUROPEAN-UNION' | translate\">\n <source\n srcset=\"./assets/images/ecl/eu/logo/standard-version/positive/logo-eu--{{ getEULanguageCode() }}.svg\"\n media=\"(min-width: 996px)\" />\n <img class=\"ecl-site-header__logo-image\"\n src=\"./assets/images/ecl/eu/logo/condensed-version/positive/logo-eu--{{ getEULanguageCode() }}.svg\"\n alt=\"European Union flag\" />\n </picture>\n </ng-container>\n </a>\n }\n <ng-content select=\"ecl-site-header-action\"></ng-content>\n </div>\n </div>\n </div>\n <ng-content select=\"ecl-site-header-notification\"></ng-content>\n</div>\n\n\n<ng-content select=\"ecl-site-header-banner-top\"></ng-content>\n\n<div *ngIf=\"siteName\" class=\"ecl-site-header__banner\">\n <div class=\"ecl-container\">\n <div class=\"ecl-site-header__site-name\">{{ siteName }}</div>\n <ng-content select=\"[eclSiteHeaderCta]\"></ng-content>\n </div>\n</div>\n\n<ng-content select=\"ecl-menu\"></ng-content>", styles: [":host{display:block}\n"] }]
74
+ args: [{ selector: 'ecl-site-header', template: "<div class=\"ecl-site-header__background\">\n <div class=\"ecl-site-header__header\">\n <div class=\"ecl-site-header__container ecl-container\">\n <div #topContainer class=\"ecl-site-header__top\">\n @if(hasCustomLink()) {\n <ng-content select=\"[eclSiteHeaderLink]\"></ng-content>\n } @else {\n <a eclLink variant=\"standalone\" class=\"ecl-site-header__logo-link\"\n href=\"https://ec.europa.eu/info/index_{{ getEULanguageCode() }}\" (click)=\"onECLogoClick($event)\"\n [attr.aria-label]=\"'ecl.footer.EUROPEAN-COMMISSION' | translate\">\n <ng-content select=\"[eclSiteHeaderEnvironment]\"></ng-content>\n\n @if (eclThemeService.isEC$ | async) {\n <picture class=\"ecl-picture ecl-site-header__picture\"\n [attr.title]=\"'ecl.footer.EUROPEAN-COMMISSION' | translate\">\n <source\n srcset=\"./assets/images/ecl/ec/logo/positive/logo-ec--{{ getEULanguageCode() }}.svg\"\n media=\"(min-width: 996px)\" />\n <img class=\"ecl-site-header__logo-image\"\n src=\"./assets/images/ecl/ec/logo/positive/logo-ec--{{ getEULanguageCode() }}.svg\"\n alt=\"European Commission logo\" />\n </picture>\n }\n @if (eclThemeService.isEU$ | async) {\n <picture class=\"ecl-picture ecl-site-header__picture\"\n [attr.title]=\"'ecl.footer.EUROPEAN-UNION' | translate\">\n <source\n srcset=\"./assets/images/ecl/eu/logo/standard-version/positive/logo-eu--{{ getEULanguageCode() }}.svg\"\n media=\"(min-width: 996px)\" />\n <img class=\"ecl-site-header__logo-image\"\n src=\"./assets/images/ecl/eu/logo/condensed-version/positive/logo-eu--{{ getEULanguageCode() }}.svg\"\n alt=\"European Union flag\" />\n </picture>\n }\n </a>\n }\n <ng-content select=\"ecl-site-header-action\"></ng-content>\n </div>\n </div>\n </div>\n <ng-content select=\"ecl-site-header-notification\"></ng-content>\n</div>\n\n\n<ng-content select=\"ecl-site-header-banner-top\"></ng-content>\n@if (siteName) {\n <div class=\"ecl-site-header__banner\">\n <div class=\"ecl-container\">\n <div class=\"ecl-site-header__site-name\">{{ siteName }}</div>\n <ng-content select=\"[eclSiteHeaderCta]\"></ng-content>\n </div>\n </div>\n}\n\n<ng-content select=\"ecl-menu\"></ng-content>\n", styles: [":host{display:block}\n"] }]
75
75
  }], ctorParameters: () => [{ type: i1.EclLanguageService }, { type: i2.TranslateService }, { type: i3.EclThemeService }], propDecorators: { logoUrl: [{
76
76
  type: Input
77
77
  }], cssClasses: [{
@@ -101,4 +101,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.0", ng
101
101
  }], languageCode: [{
102
102
  type: Input
103
103
  }] } });
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLXNpdGUtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtc2l0ZS1oZWFkZXIvZWNsLXNpdGUtaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtc2l0ZS1oZWFkZXIvZWNsLXNpdGUtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsU0FBUyxFQUFFLFlBQVksRUFBYyxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsU0FBUyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBRWxLLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUcxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNoSSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN0RixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN6RixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxHQUFHLENBQUM7Ozs7Ozs7QUFFL0MsTUFBTSxPQUFPLDJCQUE0QixTQUFRLFlBQVk7Q0FBRztBQWFoRSxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsZ0JBQWdCO0lBR3hELElBQ0ksVUFBVTtRQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckUsQ0FBQztJ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bkYsQ0FBQzttSEE3RVEsc0JBQXNCO3VHQUF0QixzQkFBc0IscVRBZWpCLDJCQUEyQixxRkFDM0IsNEJBQTRCLHVGQUM1Qiw4QkFBOEIsZ0ZBQzlCLDBCQUEwQiw0TEMzQzVDLHc3RkFzRDJDOztnR0Q3QjlCLHNCQUFzQjtrQkFYbEMsU0FBUzsrQkFDSSxpQkFBaUI7b0pBV2xCLE9BQU87c0JBQWYsS0FBSztnQkFHRixVQUFVO3NCQURiLFdBQVc7dUJBQUMsT0FBTztnQkFLWCxRQUFRO3NCQUFoQixLQUFLO2dCQUVJLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFFb0IsbUJBQW1CO3NCQUE3QyxTQUFTO3VCQUFDLGNBQWM7Z0JBRWtCLGlCQUFpQjtzQkFBM0QsWUFBWTt1QkFBQywyQkFBMkI7Z0JBQ0csa0JBQWtCO3NCQUE3RCxZQUFZO3VCQUFDLDRCQUE0QjtnQkFDSSxvQkFBb0I7c0JBQWpFLFlBQVk7dUJBQUMsOEJBQThCO2dCQUNxQixhQUFhO3NCQUE3RSxZQUFZO3VCQUFDLDBCQUEwQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFFdEQsWUFBWTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXQsIFZpZXdDaGlsZCwgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFY2xCYXNlRXZlbnQgfSBmcm9tICcuLi8uLi9tb2RlbC9lY2wtYmFzZS5ldmVudCc7XG5pbXBvcnQgeyBFY2xUaGVtZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBFY2xMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lY2wtbGFuZ3VhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBFQ0xCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi4vZWNsLWJhc2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IEVjbFNpdGVIZWFkZXJMYW5ndWFnZUNsaWNrRXZlbnQsIEVjbFNpdGVIZWFkZXJMYW5ndWFnZUNvbXBvbmVudCB9IGZyb20gJy4vbGFuZ3VhZ2UvZWNsLXNpdGUtaGVhZGVyLWxhbmd1YWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFY2xTaXRlSGVhZGVyTG9naW5Db21wb25lbnQgfSBmcm9tICcuL2xvZ2luL2VjbC1zaXRlLWhlYWRlci1sb2dpbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRWNsU2l0ZUhlYWRlclNlYXJjaENvbXBvbmVudCB9IGZyb20gJy4vc2VhcmNoL2VjbC1zaXRlLWhlYWRlci1zZWFyY2guY29tcG9uZW50JztcbmltcG9ydCB7IEVjbFNpdGVIZWFkZXJMaW5rRGlyZWN0aXZlIH0gZnJvbSAnLic7XG5cbmV4cG9ydCBjbGFzcyBFY2xTaXRlSGVhZGVyTG9nb0NsaWNrRXZlbnQgZXh0ZW5kcyBFY2xCYXNlRXZlbnQge31cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdlY2wtc2l0ZS1oZWFkZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9lY2wtc2l0ZS1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlczogW1xuICAgICAgICBgXG4gICAgICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgIGAsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRWNsU2l0ZUhlYWRlckNvbXBvbmVudCBleHRlbmRzIEVDTEJhc2VEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpIGxvZ29Vcmw6IHN0cmluZztcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIGdldCBjc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbc3VwZXIuZ2V0Q3NzQ2xhc3NlcygnZWNsLXNpdGUtaGVhZGVyJyldLmpvaW4oJyAnKS50cmltKCk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2l0ZU5hbWU6IHN0cmluZztcblxuICAgIEBPdXRwdXQoKSBsb2dvQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEVjbFNpdGVIZWFkZXJMb2dvQ2xpY2tFdmVudD4oKTtcbiAgICBAT3V0cHV0KCkgbGFuZ3VhZ2VDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8RWNsU2l0ZUhlYWRlckxhbmd1YWdlQ2xpY2tFdmVudD4oKTtcblxuICAgIEBWaWV3Q2hpbGQoJ3RvcENvbnRhaW5lcicpIHRvcENvbnRhaW5lckVsZW1lbnQ6IEVsZW1lbnRSZWY7XG5cbiAgICBAQ29udGVudENoaWxkKEVjbFNpdGVIZWFkZXJMb2dpbkNvbXBvbmVudCkgZWNsTG9naW5Db21wb25lbnQ6IEVjbFNpdGVIZWFkZXJMb2dpbkNvbXBvbmVudDtcbiAgICBAQ29udGVudENoaWxkKEVjbFNpdGVIZWFkZXJTZWFyY2hDb21wb25lbnQpIGVjbFNlYXJjaENvbXBvbmVudDogRWNsU2l0ZUhlYWRlclNlYXJjaENvbXBvbmVudDtcbiAgICBAQ29udGVudENoaWxkKEVjbFNpdGVIZWFkZXJMYW5ndWFnZUNvbXBvbmVudCkgZWNsTGFuZ3VhZ2VDb21wb25lbnQ6IEVjbFNpdGVIZWFkZXJMYW5ndWFnZUNvbXBvbmVudDtcbiAgICBAQ29udGVudENoaWxkKEVjbFNpdGVIZWFkZXJMaW5rRGlyZWN0aXZlLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIGVjbEhlYWRlckxpbms6IEVjbFNpdGVIZWFkZXJMaW5rRGlyZWN0aXZlO1xuXG4gICAgQElucHV0KCkgbGFuZ3VhZ2VDb2RlID0gJ2VuJztcblxuICAgIHByb3RlY3RlZCBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIGVjbExhbmd1YWdlU2VydmljZTogRWNsTGFuZ3VhZ2VTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHVibGljIGVjbFRoZW1lU2VydmljZTogRWNsVGhlbWVTZXJ2aWNlLFxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZWNsTG9naW5Db21wb25lbnQgJiYgdGhpcy5lY2xTZWFyY2hDb21wb25lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZWNsTG9naW5Db21wb25lbnQubG9naW5Cb3hUb2dnbGUucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lY2xTZWFyY2hDb21wb25lbnQuaXNTZWFyY2hCb3hBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLmVjbFNlYXJjaENvbXBvbmVudC5zZWFyY2hUb2dnbGUucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lY2xMb2dpbkNvbXBvbmVudC5pc0xvZ2luQm94QWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmVjbExhbmd1YWdlQ29tcG9uZW50KSB7XG4gICAgICAgICAgICB0aGlzLmVjbExhbmd1YWdlQ29tcG9uZW50Lmxhbmd1YWdlQ2xpY2sucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5sYW5ndWFnZUNsaWNrLm5leHQobmV3IEVjbFNpdGVIZWFkZXJMYW5ndWFnZUNsaWNrRXZlbnQoKSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5lY2xMYW5ndWFnZUNvbXBvbmVudC5sYW5ndWFnZVNlbGVjdGVkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubGFuZ3VhZ2VDb2RlID0gZXZ0Lmxhbmd1YWdlPy5jb2RlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5lY2xMYW5ndWFnZUNvbXBvbmVudCkge1xuICAgICAgICAgICAgdGhpcy5sYW5ndWFnZUNvZGUgPSB0aGlzLmVjbExhbmd1YWdlQ29tcG9uZW50Py5sYW5ndWFnZUNvZGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgb25FQ0xvZ29DbGljayhldnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgRWNsU2l0ZUhlYWRlckxvZ29DbGlja0V2ZW50KCk7XG4gICAgICAgIHRoaXMubG9nb0NsaWNrLm5leHQoZXZlbnQpO1xuICAgICAgICBpZiAoZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYXNDdXN0b21MaW5rKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmVjbEhlYWRlckxpbms7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEVVTGFuZ3VhZ2VDb2RlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmVjbExhbmd1YWdlU2VydmljZS5nZXRFVUxhbmd1YWdlT3JGYWxsYmFjayh0aGlzLmxhbmd1YWdlQ29kZSkuY29kZTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZWNsLXNpdGUtaGVhZGVyX19iYWNrZ3JvdW5kXCI+XG4gICAgPGRpdiBjbGFzcz1cImVjbC1zaXRlLWhlYWRlcl9faGVhZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlY2wtc2l0ZS1oZWFkZXJfX2NvbnRhaW5lciBlY2wtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8ZGl2ICN0b3BDb250YWluZXIgY2xhc3M9XCJlY2wtc2l0ZS1oZWFkZXJfX3RvcFwiPlxuICAgICAgICAgICAgICAgIEBpZihoYXNDdXN0b21MaW5rKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2VjbFNpdGVIZWFkZXJMaW5rXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8YSBlY2xMaW5rIHZhcmlhbnQ9XCJzdGFuZGFsb25lXCIgY2xhc3M9XCJlY2wtc2l0ZS1oZWFkZXJfX2xvZ28tbGlua1wiXG4gICAgICAgICAgICAgICAgICAgIGhyZWY9XCJodHRwczovL2VjLmV1cm9wYS5ldS9pbmZvL2luZGV4X3t7IGdldEVVTGFuZ3VhZ2VDb2RlKCkgfX1cIiAoY2xpY2spPVwib25FQ0xvZ29DbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInZWNsLmZvb3Rlci5FVVJPUEVBTi1DT01NSVNTSU9OJyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZWNsU2l0ZUhlYWRlckVudmlyb25tZW50XVwiPjwvbmctY29udGVudD5cblxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWNsVGhlbWVTZXJ2aWNlLmlzRUMkIHwgYXN5bmNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwaWN0dXJlIGNsYXNzPVwiZWNsLXBpY3R1cmUgZWNsLXNpdGUtaGVhZGVyX19waWN0dXJlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCInZWNsLmZvb3Rlci5FVVJPUEVBTi1DT01NSVNTSU9OJyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzb3VyY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Jjc2V0PVwiLi9hc3NldHMvaW1hZ2VzL2VjbC9lYy9sb2dvL3Bvc2l0aXZlL2xvZ28tZWMtLXt7ICBnZXRFVUxhbmd1YWdlQ29kZSgpIH19LnN2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhPVwiKG1pbi13aWR0aDogOTk2cHgpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiZWNsLXNpdGUtaGVhZGVyX19sb2dvLWltYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiLi9hc3NldHMvaW1hZ2VzL2VjbC9lYy9sb2dvL3Bvc2l0aXZlL2xvZ28tZWMtLXt7IGdldEVVTGFuZ3VhZ2VDb2RlKCkgfX0uc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiRXVyb3BlYW4gQ29tbWlzc2lvbiBsb2dvXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGljdHVyZT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVjbFRoZW1lU2VydmljZS5pc0VVJCB8IGFzeW5jXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGljdHVyZSBjbGFzcz1cImVjbC1waWN0dXJlIGVjbC1zaXRlLWhlYWRlcl9fcGljdHVyZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiJ2VjbC5mb290ZXIuRVVST1BFQU4tVU5JT04nIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNzZXQ9XCIuL2Fzc2V0cy9pbWFnZXMvZWNsL2V1L2xvZ28vc3RhbmRhcmQtdmVyc2lvbi9wb3NpdGl2ZS9sb2dvLWV1LS17eyBnZXRFVUxhbmd1YWdlQ29kZSgpIH19LnN2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhPVwiKG1pbi13aWR0aDogOTk2cHgpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiZWNsLXNpdGUtaGVhZGVyX19sb2dvLWltYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiLi9hc3NldHMvaW1hZ2VzL2VjbC9ldS9sb2dvL2NvbmRlbnNlZC12ZXJzaW9uL3Bvc2l0aXZlL2xvZ28tZXUtLXt7IGdldEVVTGFuZ3VhZ2VDb2RlKCkgfX0uc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiRXVyb3BlYW4gVW5pb24gZmxhZ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3BpY3R1cmU+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZWNsLXNpdGUtaGVhZGVyLWFjdGlvblwiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJlY2wtc2l0ZS1oZWFkZXItbm90aWZpY2F0aW9uXCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG5cblxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiZWNsLXNpdGUtaGVhZGVyLWJhbm5lci10b3BcIj48L25nLWNvbnRlbnQ+XG5cbjxkaXYgKm5nSWY9XCJzaXRlTmFtZVwiIGNsYXNzPVwiZWNsLXNpdGUtaGVhZGVyX19iYW5uZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZWNsLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZWNsLXNpdGUtaGVhZGVyX19zaXRlLW5hbWVcIj57eyBzaXRlTmFtZSB9fTwvZGl2PlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZWNsU2l0ZUhlYWRlckN0YV1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiZWNsLW1lbnVcIj48L25nLWNvbnRlbnQ+Il19
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLXNpdGUtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtc2l0ZS1oZWFkZXIvZWNsLXNpdGUtaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtc2l0ZS1oZWFkZXIvZWNsLXNpdGUtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsU0FBUyxFQUFFLFlBQVksRUFBYyxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsU0FBUyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBRWxLLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUcxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNoSSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN0RixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN6RixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxHQUFHLENBQUM7Ozs7Ozs7QUFFL0MsTUFBTSxPQUFPLDJCQUE0QixTQUFRLFlBQVk7Q0FBRztBQWFoRSxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsZ0JBQWdCO0lBR3hELElBQ0ksVUFBVTtRQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckUsQ0FBQztJQWtCRCxZQUNjLGtCQUFzQyxFQUN0QyxnQkFBa0MsRUFDckMsZUFBZ0M7UUFFdkMsS0FBSyxFQUFFLENBQUM7UUFKRSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDckMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBakJqQyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQStCLENBQUM7UUFDNUQsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBbUMsQ0FBQztRQVNyRSxpQkFBWSxHQUFHLElBQUksQ0FBQztRQUVuQixhQUFRLEdBQXFCLElBQUksT0FBTyxFQUFXLENBQUM7SUFROUQsQ0FBQztJQUVELGtCQUFrQjtRQUNkLElBQUksSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ3BELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDbkYsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztZQUN0RCxDQUFDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDbEYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztZQUNwRCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDckYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSwrQkFBK0IsRUFBRSxDQUFDLENBQUM7WUFDbkUsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDeEYsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQztZQUMzQyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLFlBQVksQ0FBQztRQUNoRSxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxhQUFhLENBQUMsR0FBZTtRQUN6QixNQUFNLEtBQUssR0FBRyxJQUFJLDJCQUEyQixFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsSUFBSSxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUN6QixHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDekIsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhO1FBQ1QsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUNoQyxDQUFDO0lBRU0saUJBQWlCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDbkYsQ0FBQzttSEE3RVEsc0JBQXNCO3VHQUF0QixzQkFBc0IscVRBZWpCLDJCQUEyQixxRkFDM0IsNEJBQTRCLHVGQUM1Qiw4QkFBOEIsZ0ZBQzlCLDBCQUEwQiw0TEMzQzVDLGc2RkF1REE7O2dHRDlCYSxzQkFBc0I7a0JBWGxDLFNBQVM7K0JBQ0ksaUJBQWlCO29KQVdsQixPQUFPO3NCQUFmLEtBQUs7Z0JBR0YsVUFBVTtzQkFEYixXQUFXO3VCQUFDLE9BQU87Z0JBS1gsUUFBUTtzQkFBaEIsS0FBSztnQkFFSSxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBRW9CLG1CQUFtQjtzQkFBN0MsU0FBUzt1QkFBQyxjQUFjO2dCQUVrQixpQkFBaUI7c0JBQTNELFlBQVk7dUJBQUMsMkJBQTJCO2dCQUNHLGtCQUFrQjtzQkFBN0QsWUFBWTt1QkFBQyw0QkFBNEI7Z0JBQ0ksb0JBQW9CO3NCQUFqRSxZQUFZO3VCQUFDLDhCQUE4QjtnQkFDcUIsYUFBYTtzQkFBN0UsWUFBWTt1QkFBQywwQkFBMEIsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBRXRELFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0LCBWaWV3Q2hpbGQsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRWNsQmFzZUV2ZW50IH0gZnJvbSAnLi4vLi4vbW9kZWwvZWNsLWJhc2UuZXZlbnQnO1xuaW1wb3J0IHsgRWNsVGhlbWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgRWNsTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZWNsLWxhbmd1YWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRUNMQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4uL2VjbC1iYXNlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBFY2xTaXRlSGVhZGVyTGFuZ3VhZ2VDbGlja0V2ZW50LCBFY2xTaXRlSGVhZGVyTGFuZ3VhZ2VDb21wb25lbnQgfSBmcm9tICcuL2xhbmd1YWdlL2VjbC1zaXRlLWhlYWRlci1sYW5ndWFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRWNsU2l0ZUhlYWRlckxvZ2luQ29tcG9uZW50IH0gZnJvbSAnLi9sb2dpbi9lY2wtc2l0ZS1oZWFkZXItbG9naW4uY29tcG9uZW50JztcbmltcG9ydCB7IEVjbFNpdGVIZWFkZXJTZWFyY2hDb21wb25lbnQgfSBmcm9tICcuL3NlYXJjaC9lY2wtc2l0ZS1oZWFkZXItc2VhcmNoLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFY2xTaXRlSGVhZGVyTGlua0RpcmVjdGl2ZSB9IGZyb20gJy4nO1xuXG5leHBvcnQgY2xhc3MgRWNsU2l0ZUhlYWRlckxvZ29DbGlja0V2ZW50IGV4dGVuZHMgRWNsQmFzZUV2ZW50IHt9XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZWNsLXNpdGUtaGVhZGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZWNsLXNpdGUtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZXM6IFtcbiAgICAgICAgYFxuICAgICAgICAgICAgOmhvc3Qge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgfVxuICAgICAgICBgLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIEVjbFNpdGVIZWFkZXJDb21wb25lbnQgZXh0ZW5kcyBFQ0xCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBsb2dvVXJsOiBzdHJpbmc7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBnZXQgY3NzQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gW3N1cGVyLmdldENzc0NsYXNzZXMoJ2VjbC1zaXRlLWhlYWRlcicpXS5qb2luKCcgJykudHJpbSgpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNpdGVOYW1lOiBzdHJpbmc7XG5cbiAgICBAT3V0cHV0KCkgbG9nb0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxFY2xTaXRlSGVhZGVyTG9nb0NsaWNrRXZlbnQ+KCk7XG4gICAgQE91dHB1dCgpIGxhbmd1YWdlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEVjbFNpdGVIZWFkZXJMYW5ndWFnZUNsaWNrRXZlbnQ+KCk7XG5cbiAgICBAVmlld0NoaWxkKCd0b3BDb250YWluZXInKSB0b3BDb250YWluZXJFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gICAgQENvbnRlbnRDaGlsZChFY2xTaXRlSGVhZGVyTG9naW5Db21wb25lbnQpIGVjbExvZ2luQ29tcG9uZW50OiBFY2xTaXRlSGVhZGVyTG9naW5Db21wb25lbnQ7XG4gICAgQENvbnRlbnRDaGlsZChFY2xTaXRlSGVhZGVyU2VhcmNoQ29tcG9uZW50KSBlY2xTZWFyY2hDb21wb25lbnQ6IEVjbFNpdGVIZWFkZXJTZWFyY2hDb21wb25lbnQ7XG4gICAgQENvbnRlbnRDaGlsZChFY2xTaXRlSGVhZGVyTGFuZ3VhZ2VDb21wb25lbnQpIGVjbExhbmd1YWdlQ29tcG9uZW50OiBFY2xTaXRlSGVhZGVyTGFuZ3VhZ2VDb21wb25lbnQ7XG4gICAgQENvbnRlbnRDaGlsZChFY2xTaXRlSGVhZGVyTGlua0RpcmVjdGl2ZSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBlY2xIZWFkZXJMaW5rOiBFY2xTaXRlSGVhZGVyTGlua0RpcmVjdGl2ZTtcblxuICAgIEBJbnB1dCgpIGxhbmd1YWdlQ29kZSA9ICdlbic7XG5cbiAgICBwcm90ZWN0ZWQgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBlY2xMYW5ndWFnZVNlcnZpY2U6IEVjbExhbmd1YWdlU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBlY2xUaGVtZVNlcnZpY2U6IEVjbFRoZW1lU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmVjbExvZ2luQ29tcG9uZW50ICYmIHRoaXMuZWNsU2VhcmNoQ29tcG9uZW50KSB7XG4gICAgICAgICAgICB0aGlzLmVjbExvZ2luQ29tcG9uZW50LmxvZ2luQm94VG9nZ2xlLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZWNsU2VhcmNoQ29tcG9uZW50LmlzU2VhcmNoQm94QWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5lY2xTZWFyY2hDb21wb25lbnQuc2VhcmNoVG9nZ2xlLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZWNsTG9naW5Db21wb25lbnQuaXNMb2dpbkJveEFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5lY2xMYW5ndWFnZUNvbXBvbmVudCkge1xuICAgICAgICAgICAgdGhpcy5lY2xMYW5ndWFnZUNvbXBvbmVudC5sYW5ndWFnZUNsaWNrLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubGFuZ3VhZ2VDbGljay5uZXh0KG5ldyBFY2xTaXRlSGVhZGVyTGFuZ3VhZ2VDbGlja0V2ZW50KCkpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuZWNsTGFuZ3VhZ2VDb21wb25lbnQubGFuZ3VhZ2VTZWxlY3RlZC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChldnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxhbmd1YWdlQ29kZSA9IGV2dC5sYW5ndWFnZT8uY29kZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZWNsTGFuZ3VhZ2VDb21wb25lbnQpIHtcbiAgICAgICAgICAgIHRoaXMubGFuZ3VhZ2VDb2RlID0gdGhpcy5lY2xMYW5ndWFnZUNvbXBvbmVudD8ubGFuZ3VhZ2VDb2RlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIG9uRUNMb2dvQ2xpY2soZXZ0OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IEVjbFNpdGVIZWFkZXJMb2dvQ2xpY2tFdmVudCgpO1xuICAgICAgICB0aGlzLmxvZ29DbGljay5uZXh0KGV2ZW50KTtcbiAgICAgICAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFzQ3VzdG9tTGluaygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5lY2xIZWFkZXJMaW5rO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRFVUxhbmd1YWdlQ29kZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5lY2xMYW5ndWFnZVNlcnZpY2UuZ2V0RVVMYW5ndWFnZU9yRmFsbGJhY2sodGhpcy5sYW5ndWFnZUNvZGUpLmNvZGU7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImVjbC1zaXRlLWhlYWRlcl9fYmFja2dyb3VuZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJlY2wtc2l0ZS1oZWFkZXJfX2hlYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZWNsLXNpdGUtaGVhZGVyX19jb250YWluZXIgZWNsLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGRpdiAjdG9wQ29udGFpbmVyIGNsYXNzPVwiZWNsLXNpdGUtaGVhZGVyX190b3BcIj5cbiAgICAgICAgICAgICAgICBAaWYoaGFzQ3VzdG9tTGluaygpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltlY2xTaXRlSGVhZGVyTGlua11cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPGEgZWNsTGluayB2YXJpYW50PVwic3RhbmRhbG9uZVwiIGNsYXNzPVwiZWNsLXNpdGUtaGVhZGVyX19sb2dvLWxpbmtcIlxuICAgICAgICAgICAgICAgICAgICBocmVmPVwiaHR0cHM6Ly9lYy5ldXJvcGEuZXUvaW5mby9pbmRleF97eyBnZXRFVUxhbmd1YWdlQ29kZSgpIH19XCIgKGNsaWNrKT1cIm9uRUNMb2dvQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ2VjbC5mb290ZXIuRVVST1BFQU4tQ09NTUlTU0lPTicgfCB0cmFuc2xhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2VjbFNpdGVIZWFkZXJFbnZpcm9ubWVudF1cIj48L25nLWNvbnRlbnQ+XG5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChlY2xUaGVtZVNlcnZpY2UuaXNFQyQgfCBhc3luYykge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHBpY3R1cmUgY2xhc3M9XCJlY2wtcGljdHVyZSBlY2wtc2l0ZS1oZWFkZXJfX3BpY3R1cmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiJ2VjbC5mb290ZXIuRVVST1BFQU4tQ09NTUlTU0lPTicgfCB0cmFuc2xhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c291cmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY3NldD1cIi4vYXNzZXRzL2ltYWdlcy9lY2wvZWMvbG9nby9wb3NpdGl2ZS9sb2dvLWVjLS17eyAgZ2V0RVVMYW5ndWFnZUNvZGUoKSB9fS5zdmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWRpYT1cIihtaW4td2lkdGg6IDk5NnB4KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImVjbC1zaXRlLWhlYWRlcl9fbG9nby1pbWFnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCIuL2Fzc2V0cy9pbWFnZXMvZWNsL2VjL2xvZ28vcG9zaXRpdmUvbG9nby1lYy0te3sgZ2V0RVVMYW5ndWFnZUNvZGUoKSB9fS5zdmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiRXVyb3BlYW4gQ29tbWlzc2lvbiBsb2dvXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGljdHVyZT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKGVjbFRoZW1lU2VydmljZS5pc0VVJCB8IGFzeW5jKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGljdHVyZSBjbGFzcz1cImVjbC1waWN0dXJlIGVjbC1zaXRlLWhlYWRlcl9fcGljdHVyZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCInZWNsLmZvb3Rlci5FVVJPUEVBTi1VTklPTicgfCB0cmFuc2xhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c291cmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY3NldD1cIi4vYXNzZXRzL2ltYWdlcy9lY2wvZXUvbG9nby9zdGFuZGFyZC12ZXJzaW9uL3Bvc2l0aXZlL2xvZ28tZXUtLXt7IGdldEVVTGFuZ3VhZ2VDb2RlKCkgfX0uc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWE9XCIobWluLXdpZHRoOiA5OTZweClcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJlY2wtc2l0ZS1oZWFkZXJfX2xvZ28taW1hZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiLi9hc3NldHMvaW1hZ2VzL2VjbC9ldS9sb2dvL2NvbmRlbnNlZC12ZXJzaW9uL3Bvc2l0aXZlL2xvZ28tZXUtLXt7IGdldEVVTGFuZ3VhZ2VDb2RlKCkgfX0uc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIkV1cm9wZWFuIFVuaW9uIGZsYWdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9waWN0dXJlPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJlY2wtc2l0ZS1oZWFkZXItYWN0aW9uXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImVjbC1zaXRlLWhlYWRlci1ub3RpZmljYXRpb25cIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cblxuXG48bmctY29udGVudCBzZWxlY3Q9XCJlY2wtc2l0ZS1oZWFkZXItYmFubmVyLXRvcFwiPjwvbmctY29udGVudD5cbkBpZiAoc2l0ZU5hbWUpIHtcbiAgICA8ZGl2IGNsYXNzPVwiZWNsLXNpdGUtaGVhZGVyX19iYW5uZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVjbC1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlY2wtc2l0ZS1oZWFkZXJfX3NpdGUtbmFtZVwiPnt7IHNpdGVOYW1lIH19PC9kaXY+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZWNsU2l0ZUhlYWRlckN0YV1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxufVxuXG48bmctY29udGVudCBzZWxlY3Q9XCJlY2wtbWVudVwiPjwvbmctY29udGVudD5cbiJdfQ==