@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.
- package/docs/components/EclBannerComponent.html +1 -1
- package/docs/components/EclButtonComponent.html +1 -1
- package/docs/components/EclFileComponent.html +1 -1
- package/docs/components/EclFileItemComponent.html +1 -1
- package/docs/components/EclGalleryComponent.html +1 -1
- package/docs/components/EclListIllustrationItemComponent.html +1 -1
- package/docs/components/EclMenuItemComponent.html +1 -1
- package/docs/components/EclMenuMegaItemComponent.html +1 -1
- package/docs/components/EclMultiselectDropdownComponent.html +1 -1
- package/docs/components/EclPaginationComponent.html +1 -1
- package/docs/components/EclSiteHeaderComponent.html +1 -1
- package/docs/components/EclSiteHeaderLanguagePopoverComponent.html +1 -1
- package/docs/components/EclSiteHeaderLoginComponent.html +2 -2
- package/docs/components/EclSocialMediaFollowComponent.html +1 -1
- package/docs/components/EclSocialMediaShareComponent.html +1 -1
- package/docs/components/EclSocialMediaShareItemComponent.html +1 -1
- package/docs/components/EclTabsComponent.html +1 -1
- package/docs/components/EclTimelineItemComponent.html +2 -40
- package/docs/dependencies.html +1 -1
- package/docs/directives/EclHelpBlockDirective.html +1 -1
- package/docs/js/search/search_index.js +2 -2
- package/esm2022/lib/components/ecl-banner/ecl-banner.component.mjs +3 -4
- package/esm2022/lib/components/ecl-button/ecl-button.component.mjs +3 -3
- package/esm2022/lib/components/ecl-carousel/ecl-carousel.component.mjs +3 -3
- package/esm2022/lib/components/ecl-content-item/ecl-content-item.component.mjs +6 -2
- package/esm2022/lib/components/ecl-file/ecl-file-item/ecl-file-item.component.mjs +3 -4
- package/esm2022/lib/components/ecl-file/ecl-file.component.mjs +5 -6
- package/esm2022/lib/components/ecl-gallery/ecl-gallery.component.mjs +9 -10
- package/esm2022/lib/components/ecl-help-block/ecl-help-block.directive.mjs +5 -10
- package/esm2022/lib/components/ecl-list-illustration/ecl-list-illustration-item.component.mjs +3 -4
- package/esm2022/lib/components/ecl-menu/ecl-menu/ecl-menu-item.component.mjs +3 -3
- package/esm2022/lib/components/ecl-menu/ecl-menu-mega/ecl-menu-mega-item.component.mjs +3 -3
- package/esm2022/lib/components/ecl-multiselect/ecl-multiselect-dropdown/ecl-multiselect-dropdown.component.mjs +11 -12
- package/esm2022/lib/components/ecl-pagination/ecl-pagination.component.mjs +4 -5
- package/esm2022/lib/components/ecl-site-header/ecl-site-header.component.mjs +5 -5
- package/esm2022/lib/components/ecl-site-header/language/ecl-site-header-language-popover.component.mjs +7 -8
- package/esm2022/lib/components/ecl-site-header/login/ecl-site-header-login.component.mjs +8 -14
- package/esm2022/lib/components/ecl-social-media-follow/ecl-social-media-follow.component.mjs +3 -4
- package/esm2022/lib/components/ecl-social-media-share/ecl-social-media-share-item.component.mjs +3 -3
- package/esm2022/lib/components/ecl-social-media-share/ecl-social-media-share.component.mjs +5 -10
- package/esm2022/lib/components/ecl-tabs/ecl-tabs.component.mjs +3 -3
- package/esm2022/lib/components/ecl-timeline/ecl-timeline-item.component.mjs +7 -16
- package/fesm2022/eui-ecl.mjs +782 -756
- package/fesm2022/eui-ecl.mjs.map +3 -3
- package/lib/components/ecl-content-item/ecl-content-item.component.d.ts +1 -0
- package/lib/components/ecl-content-item/ecl-content-item.component.d.ts.map +1 -1
- package/lib/components/ecl-file/ecl-file-item/ecl-file-item.component.d.ts +1 -1
- package/lib/components/ecl-help-block/ecl-help-block.directive.d.ts +2 -1
- package/lib/components/ecl-help-block/ecl-help-block.directive.d.ts.map +1 -1
- package/lib/components/ecl-site-header/login/ecl-site-header-login.component.d.ts +2 -1
- package/lib/components/ecl-site-header/login/ecl-site-header-login.component.d.ts.map +1 -1
- package/lib/components/ecl-social-media-share/ecl-social-media-share.component.d.ts +2 -1
- package/lib/components/ecl-social-media-share/ecl-social-media-share.component.d.ts.map +1 -1
- package/lib/components/ecl-timeline/ecl-timeline-item.component.d.ts +3 -10
- package/lib/components/ecl-timeline/ecl-timeline-item.component.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -441,11 +441,11 @@ export class EclTabsComponent extends ECLBaseDirective {
|
|
|
441
441
|
this.index = 0;
|
|
442
442
|
}
|
|
443
443
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.0", ngImport: i0, type: EclTabsComponent, deps: [{ token: i0.IterableDiffers }, { token: i1.BreakpointObserver }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i2.EclRtlService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
444
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0-rc.0", type: EclTabsComponent, selector: "nav[eclTabs], ecl-tabs", inputs: { bodyClass: "bodyClass" }, outputs: { tabSelect: "tabSelect" }, host: { listeners: { "document:click": "onClick($event.target)", "window:resize": "onWindowResize($event)" } }, queries: [{ propertyName: "tabs", predicate: i0.forwardRef(() => EclTabComponent) }], viewQueries: [{ propertyName: "tabsList", first: true, predicate: ["tabsList"], descendants: true }, { propertyName: "moreButton", first: true, predicate: ["moreButton"], descendants: true }, { propertyName: "btnPrev", first: true, predicate: ["btnPrev"], descendants: true }, { propertyName: "btnNext", first: true, predicate: ["btnNext"], descendants: true }, { propertyName: "dropdownList", first: true, predicate: ["dropdownList"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ecl-tabs\">\n <div class=\"ecl-tabs__container\">\n <div\n class=\"ecl-tabs__list\"\n role=\"tablist\"\n #tabsList\n [style.width]=\"getTabsWidthStyle()\"\n [style.transform]=\"styleTransform\"\n [style.transition-duration]=\"'0' || getTransitionDuration()\">\n <ng-content select=\"ecl-tab, [eclTab]\"></ng-content>\n <ecl-tab-more [isHidden]=\"!isMoreButtonShow\">\n @if (listTabs.length > 0) {\n <div class=\"ecl-tabs__dropdown\" [class.ecl-tabs__dropdown--show]=\"isDropdownExpanded\">\n <div class=\"ecl-tabs__dropdown-list\" #dropdownList>\n
|
|
444
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0-rc.0", type: EclTabsComponent, selector: "nav[eclTabs], ecl-tabs", inputs: { bodyClass: "bodyClass" }, outputs: { tabSelect: "tabSelect" }, host: { listeners: { "document:click": "onClick($event.target)", "window:resize": "onWindowResize($event)" } }, queries: [{ propertyName: "tabs", predicate: i0.forwardRef(() => EclTabComponent) }], viewQueries: [{ propertyName: "tabsList", first: true, predicate: ["tabsList"], descendants: true }, { propertyName: "moreButton", first: true, predicate: ["moreButton"], descendants: true }, { propertyName: "btnPrev", first: true, predicate: ["btnPrev"], descendants: true }, { propertyName: "btnNext", first: true, predicate: ["btnNext"], descendants: true }, { propertyName: "dropdownList", first: true, predicate: ["dropdownList"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ecl-tabs\">\n <div class=\"ecl-tabs__container\">\n <div\n class=\"ecl-tabs__list\"\n role=\"tablist\"\n #tabsList\n [style.width]=\"getTabsWidthStyle()\"\n [style.transform]=\"styleTransform\"\n [style.transition-duration]=\"'0' || getTransitionDuration()\">\n <ng-content select=\"ecl-tab, [eclTab]\"></ng-content>\n <ecl-tab-more [isHidden]=\"!isMoreButtonShow\">\n @if (listTabs.length > 0) {\n <div class=\"ecl-tabs__dropdown\" [class.ecl-tabs__dropdown--show]=\"isDropdownExpanded\">\n <div class=\"ecl-tabs__dropdown-list\" #dropdownList>\n @for (tab of listTabs; track tab.id; let i = $index) {\n <ecl-tab [isActive]=\"tab.isActive\" [isHidden]=\"tab.isHidden\" (click)=\"onTabSelect(tab)\"\n (keydown.arrowRight)=\"onTabKeydownArrowRight(i)\" (keydown.arrowLeft)=\"onTabKeydownArrowLeft(i)\"\n (keydown.home)=\"onTabKeydownHome()\" (keydown.end)=\"onTabKeydownEnd()\"\n (keydown.enter)=\"onTabSelect(tab)\" (keydown.tab)=\"onTabBlur()\">\n <ecl-tab-label>{{ getTabLabel(i) }}</ecl-tab-label>\n </ecl-tab>\n }\n </div>\n </div>\n }\n </ecl-tab-more>\n </div>\n <button #moreButton eclButton class=\"ecl-tabs__toggle\" tabindex=\"-1\" variant=\"ghost\"\n [attr.aria-expanded]=\"isDropdownExpanded\" [class.ecl-tabs__toggle--active]=\"isMoreButtonActive\"\n (click)=\"onDropdownToggle()\" [class.ecl-tabs__toggle--hidden]=\"!isMoreButtonShow\">\n <span eclButtonLabel>\n {{ 'ecl.common.MORE' | translate }}\n ({{ getHiddenTabsCount() }})\n </span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-180\" size=\"fluid\"></ecl-icon>\n </button>\n </div>\n\n <div class=\"ecl-tabs__controls\">\n <button\n #btnPrev\n [attr.aria-hidden]=\"true\"\n class=\"ecl-tabs__prev\"\n [class.ecl-u-d-none]=\"!isScrollPrevBtnShow\"\n [class.ecl-u-d-block]=\"isScrollPrevBtnShow\"\n (click)=\"onScrollPrev()\">\n <ecl-icon isInverted icon=\"corner-arrow\" transform=\"rotate-270\" size=\"m\" class=\"ecl-u-d-block\"> </ecl-icon>\n <span class=\"ecl-u-sr-only\"></span>\n </button>\n <button\n #btnNext\n [attr.aria-hidden]=\"true\"\n class=\"ecl-tabs__next\"\n [class.ecl-u-d-none]=\"!isScrollNextBtnShow\"\n [class.ecl-u-d-block]=\"isScrollNextBtnShow\"\n (click)=\"onScrollNext()\">\n <ecl-icon isInverted icon=\"corner-arrow\" color=\"inverted\" transform=\"rotate-90\" size=\"m\" class=\"ecl-u-d-block\"> </ecl-icon>\n <span class=\"ecl-u-sr-only\"></span>\n </button>\n </div>\n</div>\n\n@for (tab of tabs.toArray(); track tab.tabLabel) {\n @if (tab.isActive) {\n <div class=\"{{ bodyClass }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate\"></ng-container>\n </div>\n }\n}\n@for (tab of listTabs; track tab.tabLabel) {\n @if (tab.isActive) {\n <div class=\"{{ bodyClass }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate\"></ng-container>\n </div>\n }\n}\n", dependencies: [{ kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.EclButtonComponent, selector: "button[eclButton], button[ecl-button], a[eclButton]", inputs: ["isIconOnly", "variant", "containerStyleClass"] }, { kind: "directive", type: i5.EclButtonLabelDirective, selector: "[eclButtonLabel]" }, { kind: "component", type: i6.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "ariaHidden", "focusable"] }, { kind: "component", type: i7.EclTabComponent, selector: "ecl-tab, [eclTab]", inputs: ["id", "isHidden", "isActive"], outputs: ["selectTab", "keydownTab"] }, { kind: "component", type: i8.EclTabLabelComponent, selector: "ecl-tab-label" }, { kind: "component", type: i9.EclTabMoreComponent, selector: "ecl-tab-more", inputs: ["isHidden"] }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
445
445
|
}
|
|
446
446
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.0", ngImport: i0, type: EclTabsComponent, decorators: [{
|
|
447
447
|
type: Component,
|
|
448
|
-
args: [{ selector: 'nav[eclTabs], ecl-tabs', encapsulation: ViewEncapsulation.None, template: "<div class=\"ecl-tabs\">\n <div class=\"ecl-tabs__container\">\n <div\n class=\"ecl-tabs__list\"\n role=\"tablist\"\n #tabsList\n [style.width]=\"getTabsWidthStyle()\"\n [style.transform]=\"styleTransform\"\n [style.transition-duration]=\"'0' || getTransitionDuration()\">\n <ng-content select=\"ecl-tab, [eclTab]\"></ng-content>\n <ecl-tab-more [isHidden]=\"!isMoreButtonShow\">\n @if (listTabs.length > 0) {\n <div class=\"ecl-tabs__dropdown\" [class.ecl-tabs__dropdown--show]=\"isDropdownExpanded\">\n <div class=\"ecl-tabs__dropdown-list\" #dropdownList>\n
|
|
448
|
+
args: [{ selector: 'nav[eclTabs], ecl-tabs', encapsulation: ViewEncapsulation.None, template: "<div class=\"ecl-tabs\">\n <div class=\"ecl-tabs__container\">\n <div\n class=\"ecl-tabs__list\"\n role=\"tablist\"\n #tabsList\n [style.width]=\"getTabsWidthStyle()\"\n [style.transform]=\"styleTransform\"\n [style.transition-duration]=\"'0' || getTransitionDuration()\">\n <ng-content select=\"ecl-tab, [eclTab]\"></ng-content>\n <ecl-tab-more [isHidden]=\"!isMoreButtonShow\">\n @if (listTabs.length > 0) {\n <div class=\"ecl-tabs__dropdown\" [class.ecl-tabs__dropdown--show]=\"isDropdownExpanded\">\n <div class=\"ecl-tabs__dropdown-list\" #dropdownList>\n @for (tab of listTabs; track tab.id; let i = $index) {\n <ecl-tab [isActive]=\"tab.isActive\" [isHidden]=\"tab.isHidden\" (click)=\"onTabSelect(tab)\"\n (keydown.arrowRight)=\"onTabKeydownArrowRight(i)\" (keydown.arrowLeft)=\"onTabKeydownArrowLeft(i)\"\n (keydown.home)=\"onTabKeydownHome()\" (keydown.end)=\"onTabKeydownEnd()\"\n (keydown.enter)=\"onTabSelect(tab)\" (keydown.tab)=\"onTabBlur()\">\n <ecl-tab-label>{{ getTabLabel(i) }}</ecl-tab-label>\n </ecl-tab>\n }\n </div>\n </div>\n }\n </ecl-tab-more>\n </div>\n <button #moreButton eclButton class=\"ecl-tabs__toggle\" tabindex=\"-1\" variant=\"ghost\"\n [attr.aria-expanded]=\"isDropdownExpanded\" [class.ecl-tabs__toggle--active]=\"isMoreButtonActive\"\n (click)=\"onDropdownToggle()\" [class.ecl-tabs__toggle--hidden]=\"!isMoreButtonShow\">\n <span eclButtonLabel>\n {{ 'ecl.common.MORE' | translate }}\n ({{ getHiddenTabsCount() }})\n </span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-180\" size=\"fluid\"></ecl-icon>\n </button>\n </div>\n\n <div class=\"ecl-tabs__controls\">\n <button\n #btnPrev\n [attr.aria-hidden]=\"true\"\n class=\"ecl-tabs__prev\"\n [class.ecl-u-d-none]=\"!isScrollPrevBtnShow\"\n [class.ecl-u-d-block]=\"isScrollPrevBtnShow\"\n (click)=\"onScrollPrev()\">\n <ecl-icon isInverted icon=\"corner-arrow\" transform=\"rotate-270\" size=\"m\" class=\"ecl-u-d-block\"> </ecl-icon>\n <span class=\"ecl-u-sr-only\"></span>\n </button>\n <button\n #btnNext\n [attr.aria-hidden]=\"true\"\n class=\"ecl-tabs__next\"\n [class.ecl-u-d-none]=\"!isScrollNextBtnShow\"\n [class.ecl-u-d-block]=\"isScrollNextBtnShow\"\n (click)=\"onScrollNext()\">\n <ecl-icon isInverted icon=\"corner-arrow\" color=\"inverted\" transform=\"rotate-90\" size=\"m\" class=\"ecl-u-d-block\"> </ecl-icon>\n <span class=\"ecl-u-sr-only\"></span>\n </button>\n </div>\n</div>\n\n@for (tab of tabs.toArray(); track tab.tabLabel) {\n @if (tab.isActive) {\n <div class=\"{{ bodyClass }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate\"></ng-container>\n </div>\n }\n}\n@for (tab of listTabs; track tab.tabLabel) {\n @if (tab.isActive) {\n <div class=\"{{ bodyClass }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate\"></ng-container>\n </div>\n }\n}\n" }]
|
|
449
449
|
}], ctorParameters: () => [{ type: i0.IterableDiffers }, { type: i1.BreakpointObserver }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i2.EclRtlService }], propDecorators: { bodyClass: [{
|
|
450
450
|
type: Input
|
|
451
451
|
}], tabSelect: [{
|
|
@@ -475,4 +475,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.0", ng
|
|
|
475
475
|
type: HostListener,
|
|
476
476
|
args: ['window:resize', ['$event']]
|
|
477
477
|
}] } });
|
|
478
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLXRhYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2VjbC10YWJzL2VjbC10YWJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtdGFicy9lY2wtdGFicy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBSUgsU0FBUyxFQUNULGVBQWUsRUFFZixZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBTUwsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7Ozs7Ozs7O0FBR3RDLE1BQU0sQ0FBTixJQUFZLGNBR1g7QUFIRCxXQUFZLGNBQWM7SUFDdEIsK0JBQWEsQ0FBQTtJQUNiLG1DQUFpQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxjQUFjLEtBQWQsY0FBYyxRQUd6QjtBQVFELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxnQkFBZ0I7SUE4QmxELFlBQ1ksT0FBd0IsRUFDeEIscUJBQXlDLEVBQ3pDLEVBQXFCLEVBQ3JCLEVBQWMsRUFDZCxhQUE0QjtRQUVwQyxLQUFLLEVBQUUsQ0FBQztRQU5BLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBQ3hCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBb0I7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O3VCQUFDLGdCQUFnQixFQUFFLENBQUMsZUFBZSxDQUFDO2dCQVFqRCxjQUFjO3NCQURiLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIEl0ZXJhYmxlQ2hhbmdlcyxcbiAgICBJdGVyYWJsZURpZmZlcixcbiAgICBJdGVyYWJsZURpZmZlcnMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtZXJnZVdpdGgsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVDTEJhc2VEaXJlY3RpdmUgfSBmcm9tICcuLi9lY2wtYmFzZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRWNsQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vZWNsLWJ1dHRvbic7XG5pbXBvcnQgeyBFY2xUYWJDb21wb25lbnQsIEVjbFRhYlNlbGVjdEV2ZW50IH0gZnJvbSAnLi9lY2wtdGFiLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBLZXlDb2RlIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgRWNsUnRsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcblxuZXhwb3J0IGVudW0gU2hpZnREaXJlY3Rpb24ge1xuICAgIE5FWFQgPSAnbmV4dCcsXG4gICAgUFJFVklPVVMgPSAncHJldicsXG59XG5cbkBDb21wb25lbnQoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICduYXZbZWNsVGFic10sIGVjbC10YWJzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZWNsLXRhYnMuY29tcG9uZW50Lmh0bWwnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEVjbFRhYnNDb21wb25lbnQgZXh0ZW5kcyBFQ0xCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpIGJvZHlDbGFzcyA9ICdlY2wtdS1tdC1zJztcbiAgICBAT3V0cHV0KCkgdGFiU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxFY2xUYWJTZWxlY3RFdmVudD4oKTtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBFY2xUYWJDb21wb25lbnQpKSB0YWJzOiBRdWVyeUxpc3Q8RWNsVGFiQ29tcG9uZW50PjtcblxuICAgIEBWaWV3Q2hpbGQoJ3RhYnNMaXN0JykgdGFic0xpc3Q6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZCgnbW9yZUJ1dHRvbicpIG1vcmVCdXR0b246IEVjbEJ1dHRvbkNvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKCdidG5QcmV2JykgYnRuUHJldjogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdidG5OZXh0JykgYnRuTmV4dDogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdkcm9wZG93bkxpc3QnKSBkcm9wZG93bkxpc3Q6IEVsZW1lbnRSZWY7XG4gICAgZHJvcGRvd25UYWJzOiBBcnJheTxFY2xUYWJDb21wb25lbnQ+ID0gW107XG4gICAgbGlzdFRhYnM6IEFycmF5PEVjbFRhYkNvbXBvbmVudD4gPSBbXTtcblxuICAgIGluZGV4ID0gMDtcbiAgICBpc0Ryb3Bkb3duRXhwYW5kZWQgPSBmYWxzZTtcbiAgICBpc01vYmlsZUJyZWFrcG9pbnQgPSBmYWxzZTtcbiAgICBpc01vcmVCdXR0b25TaG93ID0gdHJ1ZTtcbiAgICBpc1Njcm9sbFByZXZCdG5TaG93ID0gZmFsc2U7XG4gICAgaXNTY3JvbGxOZXh0QnRuU2hvdyA9IGZhbHNlO1xuICAgIHN0eWxlVHJhbnNmb3JtID0gJ3RyYW5zbGF0ZTNkKDBweCwgMHB4LCAwcHgpJztcblxuICAgIHByaXZhdGUgZGlmZmVyOiBJdGVyYWJsZURpZmZlcjxFY2xUYWJDb21wb25lbnQ+O1xuICAgIHByaXZhdGUgZGlmZjogSXRlcmFibGVDaGFuZ2VzPEVjbFRhYkNvbXBvbmVudD47XG4gICAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gICAgcHJpdmF0ZSBpc0ZpcnN0Q2FsbCA9IHRydWU7XG4gICAgcHJpdmF0ZSBpc1J0bCA9IGZhbHNlO1xuICAgIHByaXZhdGUgbW9yZUJ0bldpZHRoOiBudW1iZXI7XG4gICAgcHJpdmF0ZSBUSU1FT1VUX0lOVEVSVkFMID0gMzAwO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZGlmZmVyczogSXRlcmFibGVEaWZmZXJzLFxuICAgICAgICBwcml2YXRlIGNka0JyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyLFxuICAgICAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBlY2xSdGxTZXJ2aWNlOiBFY2xSdGxTZXJ2aWNlLFxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmRpZmZlciA9IHRoaXMuZGlmZmVycy5maW5kKFtdKS5jcmVhdGUoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vYnNlcnZlQnJlYWtwb2ludENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5oYW5kbGVSdGxDaGFuZ2VTdGF0ZSgpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaWZmID0gdGhpcy5kaWZmZXIuZGlmZih0aGlzLnRhYnMpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jcmVhdGVTZWNvbmRMaXN0Rm9yRHJvcGRvd24oKTtcbiAgICAgICAgdGhpcy5vYnNlcnZlVGFic0NoYW5nZXMoKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmhhbmRsZVJlc2l6ZSgpLCB0aGlzLlRJTUVPVVRfSU5URVJWQUwpO1xuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudC50YXJnZXQnXSlcbiAgICBvbkNsaWNrKHRhcmdldCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMubW9yZUJ1dHRvbi5lbC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhcmdldCkgJiYgIXRoaXMuZHJvcGRvd25MaXN0Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnModGFyZ2V0KSkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcbiAgICBvbldpbmRvd1Jlc2l6ZSgpOiB2b2lkIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmhhbmRsZVJlc2l6ZSgpLCB0aGlzLlRJTUVPVVRfSU5URVJWQUwpO1xuICAgIH1cblxuICAgIGdldCBpc01vcmVCdXR0b25BY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxpc3RUYWJzLmZpbmQoKGVsKSA9PiBlbC5pc0FjdGl2ZSkgIT09IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBvblNjcm9sbFByZXYoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2hpZnRUYWJzKFNoaWZ0RGlyZWN0aW9uLlBSRVZJT1VTKTtcbiAgICB9XG5cbiAgICBvblNjcm9sbE5leHQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2hpZnRUYWJzKFNoaWZ0RGlyZWN0aW9uLk5FWFQpO1xuICAgIH1cblxuICAgIG9uRHJvcGRvd25Ub2dnbGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNEcm9wZG93bkV4cGFuZGVkID0gIXRoaXMuaXNEcm9wZG93bkV4cGFuZGVkO1xuICAgIH1cblxuICAgIGdldFRhYnNXaWR0aFN0eWxlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzTW9iaWxlQnJlYWtwb2ludCA/IGAke3RoaXMuZ2V0VGFic1dpZHRoKCl9cHhgIDogJ2F1dG8nO1xuICAgIH1cblxuICAgIGdldFRhYnNXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy50YWJzLnJlZHVjZSgodG90YWwsIGl0ZW0pID0+ICh0b3RhbCArPSBNYXRoLmNlaWwoaXRlbS5nZXRXaWR0aCgpKSksIDApO1xuICAgIH1cblxuICAgIGdldEhpZGRlblRhYnNDb3VudCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy50YWJzLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5pc0hpZGRlbikubGVuZ3RoO1xuICAgIH1cblxuICAgIGdldFRhYkxhYmVsKGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRUYWJzQXNBcnJheSgpW2luZGV4XS5nZXRUYWJMYWJlbCgpO1xuICAgIH1cblxuICAgIGdldFRyYW5zaXRpb25EdXJhdGlvbigpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5pc01vYmlsZUJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIHJldHVybiAnMC40cyc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcwcyc7XG4gICAgfVxuXG4gICAgb25UYWJCbHVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcblxuICAgICAgICB0aGlzLmdldExhc3RWaXNpYmxlVGFiKCkub25Gb2N1cygpO1xuICAgICAgICB0aGlzLmdldExhc3RWaXNpYmxlVGFiKCkub25CbHVyKCk7XG4gICAgfVxuXG4gICAgb25UYWJTZWxlY3QodGFiOiBFY2xUYWJDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZWFjdGl2YXRlQWxsVGFicyh0aGlzLnRhYnMudG9BcnJheSgpLCB0aGlzLmxpc3RUYWJzKTtcbiAgICAgICAgdGhpcy5hY3RpdmF0ZVRhYih0YWIpO1xuICAgICAgICB0aGlzLnNlbmRUYWJTZWxlY3RFdmVudCh0YWIpO1xuICAgIH1cblxuICAgIG9uVGFiS2V5ZG93bkFycm93UmlnaHQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc01vYmlsZUJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIHRoaXMuc2hpZnRUYWJzKFNoaWZ0RGlyZWN0aW9uLk5FWFQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbmRleCA9PT0gdGhpcy5nZXRUYWJzQ291bnQoKSAtIDEpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNPbkZpcnN0VGFiKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzT25OZXh0VGFiKGluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVGFiS2V5ZG93bkFycm93TGVmdChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzTW9iaWxlQnJlYWtwb2ludCkge1xuICAgICAgICAgICAgdGhpcy5zaGlmdFRhYnMoU2hpZnREaXJlY3Rpb24uUFJFVklPVVMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c09uTGFzdFRhYigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5mb2N1c09uUHJldlRhYihpbmRleCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblRhYktleWRvd25Ib21lKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvY3VzT25GaXJzdFRhYigpO1xuICAgIH1cblxuICAgIG9uVGFiS2V5ZG93bkVuZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb2N1c09uTGFzdFRhYigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2hpZnRUYWJzKGRpcjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5kZXggPSB0aGlzLmdldFNoaWZJbmRleChkaXIsIHRoaXMuaW5kZXgpO1xuXG4gICAgICAgIHRoaXMuaXNTY3JvbGxQcmV2QnRuU2hvdyA9IHRoaXMuaW5kZXggPj0gMTtcbiAgICAgICAgdGhpcy5pc1Njcm9sbE5leHRCdG5TaG93ID0gdGhpcy5pbmRleCA8PSB0aGlzLmdldFRhYnNDb3VudCgpIC0gMTtcblxuICAgICAgICBjb25zdCBsZWZ0TWFyZ2luID0gdGhpcy5pbmRleCA9PT0gMCA/IDAgOiB0aGlzLmJ0blByZXYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCArIDEzO1xuXG4gICAgICAgIGxldCBuZXdPZmZzZXQgPSAwO1xuICAgICAgICBpZiAodGhpcy5pc1J0bCkge1xuICAgICAgICAgICAgbmV3T2Zmc2V0ID0gTWF0aC5jZWlsKFxuICAgICAgICAgICAgICAgIHRoaXMudGFic0xpc3QubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCAtXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0VGFic0FzQXJyYXkoKVt0aGlzLmluZGV4XS5ob3N0RWxlbWVudC5vZmZzZXRMZWZ0IC1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRUYWJzQXNBcnJheSgpW3RoaXMuaW5kZXhdLmhvc3RFbGVtZW50Lm9mZnNldFdpZHRoIC1cbiAgICAgICAgICAgICAgICAgICAgbGVmdE1hcmdpbixcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdPZmZzZXQgPSBNYXRoLmNlaWwodGhpcy5nZXRUYWJzQXNBcnJheSgpW3RoaXMuaW5kZXhdLmhvc3RFbGVtZW50Lm9mZnNldExlZnQgLSBsZWZ0TWFyZ2luKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1heFNjcm9sbCA9IE1hdGguY2VpbCh0aGlzLmdldFRhYnNMaXN0V2lkdGgoKSAtIHRoaXMuZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCk7XG5cbiAgICAgICAgaWYgKG5ld09mZnNldCA+IG1heFNjcm9sbCkge1xuICAgICAgICAgICAgdGhpcy5pc1Njcm9sbE5leHRCdG5TaG93ID0gZmFsc2U7XG4gICAgICAgICAgICBuZXdPZmZzZXQgPSBtYXhTY3JvbGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc1J0bCkge1xuICAgICAgICAgICAgdGhpcy5zdHlsZVRyYW5zZm9ybSA9IGB0cmFuc2xhdGUzZCgke25ld09mZnNldH1weCwgMHB4LCAwcHgpYDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3R5bGVUcmFuc2Zvcm0gPSBgdHJhbnNsYXRlM2QoLSR7bmV3T2Zmc2V0fXB4LCAwcHgsIDBweClgO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTaGlmSW5kZXgoZGlyOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBpZiAoZGlyID09PSBTaGlmdERpcmVjdGlvbi5ORVhUKSB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPT09IHRoaXMuZ2V0VGFic0NvdW50KCkgLSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpbmRleCArIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRUYWJzQ291bnQoKSAtIDE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpbmRleCAtIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVNlY29uZExpc3RGb3JEcm9wZG93bigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50YWJzLmZvckVhY2goKHRhYikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3VGFiID0gT2JqZWN0LmFzc2lnbih7fSwgdGFiKSBhcyBFY2xUYWJDb21wb25lbnQ7XG4gICAgICAgICAgICBuZXdUYWIuaXNIaWRkZW4gPSB0cnVlO1xuICAgICAgICAgICAgbmV3VGFiLmlzQWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmxpc3RUYWJzLnB1c2gobmV3VGFiIGFzIEVjbFRhYkNvbXBvbmVudCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VGFic0FzQXJyYXkoKTogRWNsVGFiQ29tcG9uZW50W10ge1xuICAgICAgICByZXR1cm4gdGhpcy50YWJzLnRvQXJyYXkoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRhYnNDb3VudCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy50YWJzLnRvQXJyYXkoKS5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbG9zZURyb3Bkb3duKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzRHJvcGRvd25FeHBhbmRlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgb3BlbkRyb3Bkb3duKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzRHJvcGRvd25FeHBhbmRlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvYnNlcnZlVGFic0NoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3JlYXRlVGFic0NoYW5nZXNPYnNlcnZhYmxlKHRoaXMudGFicykucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh0aGlzLm9uVGFic0NoYW5nZXMuYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVUYWJzQ2hhbmdlc09ic2VydmFibGUodGFiczogUXVlcnlMaXN0PEVjbFRhYkNvbXBvbmVudD4pOiBPYnNlcnZhYmxlPFF1ZXJ5TGlzdDxFY2xUYWJDb21wb25lbnQ+PiB7XG4gICAgICAgIHJldHVybiBvZih0YWJzKS5waXBlKG1lcmdlV2l0aCh0YWJzLmNoYW5nZXMpLCB0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25UYWJzQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaWZmID0gdGhpcy5kaWZmZXIuZGlmZih0aGlzLnRhYnMpO1xuXG4gICAgICAgIGlmICghdGhpcy5kaWZmKSB7XG4gICAgICAgICAgICB0aGlzLnRhYnMuZm9yRWFjaCgodGFiKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0VGFiRXZlbnRzKHRhYik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGlmZi5mb3JFYWNoQWRkZWRJdGVtKChjaGFuZ2UpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3RUYWJFdmVudHMoY2hhbmdlLml0ZW0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuZGlmZi5mb3JFYWNoUmVtb3ZlZEl0ZW0oKGNoYW5nZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZGlzY29ubmVjdFRhYkV2ZW50cyhjaGFuZ2UuaXRlbSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY29ubmVjdFRhYkV2ZW50cyh0YWI6IEVjbFRhYkNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICB0YWIuc2VsZWN0VGFiLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vblRhYlNlbGVjdCh0YWIpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGFiLmtleWRvd25UYWIucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMub25UYWJLZXlkb3duKGV2ZW50LCB0YWIpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uVGFiS2V5ZG93bihldmVudDogRXZlbnQsIHRhYjogRWNsVGFiQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRUYWJzQXNBcnJheSgpLmluZGV4T2YodGFiKTtcbiAgICAgICAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkFSUk9XX0xFRlQ6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblRhYktleWRvd25BcnJvd0xlZnQoaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkFSUk9XX1JJR0hUOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25UYWJLZXlkb3duQXJyb3dSaWdodChpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIEtleUNvZGUuRU5EOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25UYWJLZXlkb3duRW5kKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIEtleUNvZGUuSE9NRToge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uVGFiS2V5ZG93bkhvbWUoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgS2V5Q29kZS5FTlRFUjoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uVGFiU2VsZWN0KHRhYik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIEtleUNvZGUuVEFCOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25UYWJCbHVyKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TGFzdFZpc2libGVUYWIoKTogRWNsVGFiQ29tcG9uZW50IHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IG51bGw7XG4gICAgICAgIHRoaXMuZ2V0VGFic0FzQXJyYXkoKS5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFlbC5pc0hpZGRlbikge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGVsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9jdXNPbk5leHRUYWIoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5nZXRUYWJzQXNBcnJheSgpW2luZGV4ICsgMV0uaXNIaWRkZW4pIHtcbiAgICAgICAgICAgIHRoaXMub3BlbkRyb3Bkb3duKCk7XG4gICAgICAgICAgICB0aGlzLmZvY3VzT25Ecm9wZG93blRhYihpbmRleCArIDEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgICAgICB0aGlzLmdldFRhYnNBc0FycmF5KClbaW5kZXggKyAxXS5vbkZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGZvY3VzT25GaXJzdFRhYigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgIHRoaXMuZ2V0Rmlyc3RUYWJGcm9tQXJyYXkoKS5vbkZvY3VzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb2N1c09uTGFzdFRhYigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmdldExhc3RUYWJGcm9tQXJyYXkoKS5pc0hpZGRlbikge1xuICAgICAgICAgICAgdGhpcy5nZXRMYXN0VGFiRnJvbUFycmF5KCkub25Gb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vcGVuRHJvcGRvd24oKTtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNPbkRyb3Bkb3duVGFiKHRoaXMuZ2V0VGFic0NvdW50KCkgLSAxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZm9jdXNPblByZXZUYWIoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMubGlzdFRhYnNbaW5kZXggLSAxXS5pc0hpZGRlbikge1xuICAgICAgICAgICAgdGhpcy5mb2N1c09uRHJvcGRvd25UYWIoaW5kZXggLSAxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgICAgICAgdGhpcy5nZXRUYWJzQXNBcnJheSgpW2luZGV4IC0gMV0ub25Gb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb2N1c09uRHJvcGRvd25UYWIoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmRyb3Bkb3duTGlzdC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuW2luZGV4XS5maXJzdENoaWxkLmZvY3VzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBibHVyRHJvcGRvd25UYWIoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmRyb3Bkb3duTGlzdC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuW2luZGV4XS5maXJzdENoaWxkLmJsdXIoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldExhc3RUYWJGcm9tQXJyYXkoKTogRWNsVGFiQ29tcG9uZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VGFic0FzQXJyYXkoKVt0aGlzLmdldFRhYnNBc0FycmF5KCkubGVuZ3RoIC0gMV07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGaXJzdFRhYkZyb21BcnJheSgpOiBFY2xUYWJDb21wb25lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRUYWJzQXNBcnJheSgpWzBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGlzY29ubmVjdFRhYkV2ZW50cyh0YWI6IEVjbFRhYkNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGFiICYmIHRhYi5zZWxlY3RUYWIpIHtcbiAgICAgICAgICAgIHRhYi5zZWxlY3RUYWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZGVhY3RpdmF0ZUFsbFRhYnModGFiczogQXJyYXk8RWNsVGFiQ29tcG9uZW50PiwgbGlzdFRhYnM6IEFycmF5PEVjbFRhYkNvbXBvbmVudD4pOiB2b2lkIHtcbiAgICAgICAgdGFicy5mb3JFYWNoKChpdCkgPT4ge1xuICAgICAgICAgICAgaXQuaXNBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbGlzdFRhYnMuZm9yRWFjaCgoaXQpID0+IHtcbiAgICAgICAgICAgIGl0LmlzQWN0aXZlID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWN0aXZhdGVUYWIodGFiOiBFY2xUYWJDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgdGFiLmlzQWN0aXZlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNlbmRUYWJTZWxlY3RFdmVudCh0YWI6IEVjbFRhYkNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRhYlNlbGVjdC5uZXh0KG5ldyBFY2xUYWJTZWxlY3RFdmVudCh0YWIpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9ic2VydmVCcmVha3BvaW50Q2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jZGtCcmVha3BvaW50T2JzZXJ2ZXJcbiAgICAgICAgICAgIC5vYnNlcnZlKFsnKG1heC13aWR0aDogNDgwcHgpJ10pXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzTW9iaWxlQnJlYWtwb2ludCA9IHJlc3VsdC5tYXRjaGVzO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVSZXNpemUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgICBpZiAodGhpcy5pc01vYmlsZUJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlTW9iaWxlKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbml0TW9yZUJ0bldpZHRoKCk7XG4gICAgICAgIGxldCBzdG9wV2lkdGggPSB0aGlzLm1vcmVCdG5XaWR0aCArIDI1O1xuICAgICAgICBjb25zdCBoaWRkZW5JdGVtcyA9IFtdO1xuICAgICAgICBjb25zdCBsaXN0V2lkdGggPSB0aGlzLmdldFRhYnNMaXN0V2lkdGgoKTtcbiAgICAgICAgdGhpcy5pc1Njcm9sbE5leHRCdG5TaG93ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNTY3JvbGxQcmV2QnRuU2hvdyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzTW9yZUJ1dHRvblNob3cgPSBmYWxzZTtcbiAgICAgICAgdGhpcy50YWJzLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcbiAgICAgICAgICAgIGl0ZW0uaXNIaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChsaXN0V2lkdGggPj0gc3RvcFdpZHRoICsgaXRlbS5nZXRXaWR0aCgpICYmICFoaWRkZW5JdGVtcy5pbmNsdWRlcyhpIC0gMSkpIHtcbiAgICAgICAgICAgICAgICBzdG9wV2lkdGggKz0gaXRlbS5nZXRXaWR0aCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpdGVtLmlzSGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5pc0FjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxpc3RUYWJzW2ldLmlzQWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaGlkZGVuSXRlbXMucHVzaChpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFoaWRkZW5JdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuaXNNb3JlQnV0dG9uU2hvdyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zZXRBY3RpdmVJdGVtRm9yTWFpblRhYnMoKTtcbiAgICAgICAgICAgIHRoaXMuaGlkZUFsbERyb3Bkb3duVGFicygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pc01vcmVCdXR0b25TaG93ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc2V0SGlkZGVuSXRlbXNGb3JEcm9wZG93blRhYnMoaGlkZGVuSXRlbXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0TW9yZUJ0bldpZHRoKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0ZpcnN0Q2FsbCkge1xuICAgICAgICAgICAgdGhpcy5tb3JlQnRuV2lkdGggPSB0aGlzLm1vcmVCdXR0b24uZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICAgICAgICAgIHRoaXMuaXNGaXJzdENhbGwgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaGlkZUFsbERyb3Bkb3duVGFicygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5saXN0VGFicy5mb3JFYWNoKGl0ZW0gPT4gaXRlbS5pc0hpZGRlbiA9IHRydWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0QWN0aXZlSXRlbUZvck1haW5UYWJzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxpc3RUYWJzLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbS5pc0FjdGl2ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMudGFicy50b0FycmF5KClbaW5kZXhdLmlzQWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUYWJzTGlzdFdpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYnNMaXN0Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRIaWRkZW5JdGVtc0ZvckRyb3Bkb3duVGFicyhoaWRkZW5JdGVtczogbnVtYmVyW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5saXN0VGFicy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKGhpZGRlbkl0ZW1zLmluY2x1ZGVzKGluZGV4KSkge1xuICAgICAgICAgICAgICAgIGl0ZW0uaXNIaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaXRlbS5pc0hpZGRlbiA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlTW9iaWxlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzTW9yZUJ1dHRvblNob3cgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc1Njcm9sbFByZXZCdG5TaG93ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNTY3JvbGxOZXh0QnRuU2hvdyA9IHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVSdGxDaGFuZ2VTdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXNSdGxPbGQgPSB0aGlzLmlzUnRsO1xuICAgICAgICB0aGlzLmVjbFJ0bFNlcnZpY2UuY3VycmVudFJ0bFN0YXRlJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChydGxTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1J0bCA9IHJ0bFN0YXRlO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzTW9iaWxlQnJlYWtwb2ludCAmJiB0aGlzLmhhc1J0bENoYW5nZWQoaXNSdGxPbGQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlUnRsQ2hhbmdlKCk7XG4gICAgICAgICAgICAgICAgfSBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc1J0bENoYW5nZWQoaXNSdGxPbGQ6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGlzUnRsT2xkICE9PSB0aGlzLmlzUnRsO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlUnRsQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhhbmRsZU1vYmlsZSgpO1xuICAgICAgICB0aGlzLnN0eWxlVHJhbnNmb3JtID0gJ3RyYW5zbGF0ZTNkKDBweCwgMHB4LCAwcHgpJztcbiAgICAgICAgdGhpcy5pbmRleCA9IDA7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImVjbC10YWJzXCI+XG4gICAgPGRpdiBjbGFzcz1cImVjbC10YWJzX19jb250YWluZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJlY2wtdGFic19fbGlzdFwiXG4gICAgICAgICAgICByb2xlPVwidGFibGlzdFwiXG4gICAgICAgICAgICAjdGFic0xpc3RcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJnZXRUYWJzV2lkdGhTdHlsZSgpXCJcbiAgICAgICAgICAgIFtzdHlsZS50cmFuc2Zvcm1dPVwic3R5bGVUcmFuc2Zvcm1cIlxuICAgICAgICAgICAgW3N0eWxlLnRyYW5zaXRpb24tZHVyYXRpb25dPVwiJzAnIHx8IGdldFRyYW5zaXRpb25EdXJhdGlvbigpXCI+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJlY2wtdGFiLCBbZWNsVGFiXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgIDxlY2wtdGFiLW1vcmUgW2lzSGlkZGVuXT1cIiFpc01vcmVCdXR0b25TaG93XCI+XG4gICAgICAgICAgICAgICAgQGlmIChsaXN0VGFicy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVjbC10YWJzX19kcm9wZG93blwiIFtjbGFzcy5lY2wtdGFic19fZHJvcGRvd24tLXNob3ddPVwiaXNEcm9wZG93bkV4cGFuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlY2wtdGFic19fZHJvcGRvd24tbGlzdFwiICNkcm9wZG93bkxpc3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWIgb2YgbGlzdFRhYnM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZWNsLXRhYiBbaXNBY3RpdmVdPVwidGFiLmlzQWN0aXZlXCIgW2lzSGlkZGVuXT1cInRhYi5pc0hpZGRlblwiIChjbGljayk9XCJvblRhYlNlbGVjdCh0YWIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uYXJyb3dSaWdodCk9XCJvblRhYktleWRvd25BcnJvd1JpZ2h0KGkpXCIgKGtleWRvd24uYXJyb3dMZWZ0KT1cIm9uVGFiS2V5ZG93bkFycm93TGVmdChpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmhvbWUpPVwib25UYWJLZXlkb3duSG9tZSgpXCIgKGtleWRvd24uZW5kKT1cIm9uVGFiS2V5ZG93bkVuZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwib25UYWJTZWxlY3QodGFiKVwiIChrZXlkb3duLnRhYik9XCJvblRhYkJsdXIoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZWNsLXRhYi1sYWJlbD57eyBnZXRUYWJMYWJlbChpKSB9fTwvZWNsLXRhYi1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VjbC10YWI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2VjbC10YWItbW9yZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b24gI21vcmVCdXR0b24gZWNsQnV0dG9uIGNsYXNzPVwiZWNsLXRhYnNfX3RvZ2dsZVwiIHRhYmluZGV4PVwiLTFcIiB2YXJpYW50PVwiZ2hvc3RcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJpc0Ryb3Bkb3duRXhwYW5kZWRcIiBbY2xhc3MuZWNsLXRhYnNfX3RvZ2dsZS0tYWN0aXZlXT1cImlzTW9yZUJ1dHRvbkFjdGl2ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25Ecm9wZG93blRvZ2dsZSgpXCIgW2NsYXNzLmVjbC10YWJzX190b2dnbGUtLWhpZGRlbl09XCIhaXNNb3JlQnV0dG9uU2hvd1wiPlxuICAgICAgICAgICAgPHNwYW4gZWNsQnV0dG9uTGFiZWw+XG4gICAgICAgICAgICAgICAge3sgJ2VjbC5jb21tb24uTU9SRScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAoe3sgZ2V0SGlkZGVuVGFic0NvdW50KCkgfX0pXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8ZWNsLWljb24gaWNvbj1cImNvcm5lci1hcnJvd1wiIHRyYW5zZm9ybT1cInJvdGF0ZS0xODBcIiBzaXplPVwiZmx1aWRcIj48L2VjbC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJlY2wtdGFic19fY29udHJvbHNcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgI2J0blByZXZcbiAgICAgICAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cInRydWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJlY2wtdGFic19fcHJldlwiXG4gICAgICAgICAgICBbY2xhc3MuZWNsLXUtZC1ub25lXT1cIiFpc1Njcm9sbFByZXZCdG5TaG93XCJcbiAgICAgICAgICAgIFtjbGFzcy5lY2wtdS1kLWJsb2NrXT1cImlzU2Nyb2xsUHJldkJ0blNob3dcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2Nyb2xsUHJldigpXCI+XG4gICAgICAgICAgICA8ZWNsLWljb24gaXNJbnZlcnRlZCBpY29uPVwiY29ybmVyLWFycm93XCIgdHJhbnNmb3JtPVwicm90YXRlLTI3MFwiIHNpemU9XCJtXCIgY2xhc3M9XCJlY2wtdS1kLWJsb2NrXCI+IDwvZWNsLWljb24+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVjbC11LXNyLW9ubHlcIj48L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAjYnRuTmV4dFxuICAgICAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwidHJ1ZVwiXG4gICAgICAgICAgICBjbGFzcz1cImVjbC10YWJzX19uZXh0XCJcbiAgICAgICAgICAgIFtjbGFzcy5lY2wtdS1kLW5vbmVdPVwiIWlzU2Nyb2xsTmV4dEJ0blNob3dcIlxuICAgICAgICAgICAgW2NsYXNzLmVjbC11LWQtYmxvY2tdPVwiaXNTY3JvbGxOZXh0QnRuU2hvd1wiXG4gICAgICAgICAgICAoY2xpY2spPVwib25TY3JvbGxOZXh0KClcIj5cbiAgICAgICAgICAgIDxlY2wtaWNvbiBpc0ludmVydGVkIGljb249XCJjb3JuZXItYXJyb3dcIiBjb2xvcj1cImludmVydGVkXCIgdHJhbnNmb3JtPVwicm90YXRlLTkwXCIgc2l6ZT1cIm1cIiBjbGFzcz1cImVjbC11LWQtYmxvY2tcIj4gPC9lY2wtaWNvbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZWNsLXUtc3Itb25seVwiPjwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuQGZvciAodGFiIG9mIHRhYnMudG9BcnJheSgpOyB0cmFjayB0YWIudGFiTGFiZWwpIHtcbiAgICA8ZGl2IGNsYXNzPVwie3sgYm9keUNsYXNzIH19XCIgKm5nSWY9XCJ0YWIuaXNBY3RpdmVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYi5jb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbn1cbkBmb3IgKHRhYiBvZiBsaXN0VGFiczsgdHJhY2sgdGFiLnRhYkxhYmVsKSB7XG4gICAgPGRpdiBjbGFzcz1cInt7IGJvZHlDbGFzcyB9fVwiICpuZ0lmPVwidGFiLmlzQWN0aXZlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWIuY29udGVudFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG59Il19
|
|
478
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLXRhYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2VjbC10YWJzL2VjbC10YWJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtdGFicy9lY2wtdGFicy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBSUgsU0FBUyxFQUNULGVBQWUsRUFFZixZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBTUwsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7Ozs7Ozs7O0FBR3RDLE1BQU0sQ0FBTixJQUFZLGNBR1g7QUFIRCxXQUFZLGNBQWM7SUFDdEIsK0JBQWEsQ0FBQTtJQUNiLG1DQUFpQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxjQUFjLEtBQWQsY0FBYyxRQUd6QjtBQVFELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxnQkFBZ0I7SUE4QmxELFlBQ1ksT0FBd0IsRUFDeEIscUJBQXlDLEVBQ3pDLEVBQXFCLEVBQ3JCLEVBQWMsRUFDZCxhQUE0QjtRQUVwQyxLQUFLLEVBQUUsQ0FBQztRQU5BLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBQ3hCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBb0I7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O3VCQUFDLGdCQUFnQixFQUFFLENBQUMsZUFBZSxDQUFDO2dCQVFqRCxjQUFjO3NCQURiLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIEl0ZXJhYmxlQ2hhbmdlcyxcbiAgICBJdGVyYWJsZURpZmZlcixcbiAgICBJdGVyYWJsZURpZmZlcnMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtZXJnZVdpdGgsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVDTEJhc2VEaXJlY3RpdmUgfSBmcm9tICcuLi9lY2wtYmFzZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRWNsQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vZWNsLWJ1dHRvbic7XG5pbXBvcnQgeyBFY2xUYWJDb21wb25lbnQsIEVjbFRhYlNlbGVjdEV2ZW50IH0gZnJvbSAnLi9lY2wtdGFiLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBLZXlDb2RlIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgRWNsUnRsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcblxuZXhwb3J0IGVudW0gU2hpZnREaXJlY3Rpb24ge1xuICAgIE5FWFQgPSAnbmV4dCcsXG4gICAgUFJFVklPVVMgPSAncHJldicsXG59XG5cbkBDb21wb25lbnQoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICduYXZbZWNsVGFic10sIGVjbC10YWJzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZWNsLXRhYnMuY29tcG9uZW50Lmh0bWwnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEVjbFRhYnNDb21wb25lbnQgZXh0ZW5kcyBFQ0xCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpIGJvZHlDbGFzcyA9ICdlY2wtdS1tdC1zJztcbiAgICBAT3V0cHV0KCkgdGFiU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxFY2xUYWJTZWxlY3RFdmVudD4oKTtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBFY2xUYWJDb21wb25lbnQpKSB0YWJzOiBRdWVyeUxpc3Q8RWNsVGFiQ29tcG9uZW50PjtcblxuICAgIEBWaWV3Q2hpbGQoJ3RhYnNMaXN0JykgdGFic0xpc3Q6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZCgnbW9yZUJ1dHRvbicpIG1vcmVCdXR0b246IEVjbEJ1dHRvbkNvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKCdidG5QcmV2JykgYnRuUHJldjogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdidG5OZXh0JykgYnRuTmV4dDogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdkcm9wZG93bkxpc3QnKSBkcm9wZG93bkxpc3Q6IEVsZW1lbnRSZWY7XG4gICAgZHJvcGRvd25UYWJzOiBBcnJheTxFY2xUYWJDb21wb25lbnQ+ID0gW107XG4gICAgbGlzdFRhYnM6IEFycmF5PEVjbFRhYkNvbXBvbmVudD4gPSBbXTtcblxuICAgIGluZGV4ID0gMDtcbiAgICBpc0Ryb3Bkb3duRXhwYW5kZWQgPSBmYWxzZTtcbiAgICBpc01vYmlsZUJyZWFrcG9pbnQgPSBmYWxzZTtcbiAgICBpc01vcmVCdXR0b25TaG93ID0gdHJ1ZTtcbiAgICBpc1Njcm9sbFByZXZCdG5TaG93ID0gZmFsc2U7XG4gICAgaXNTY3JvbGxOZXh0QnRuU2hvdyA9IGZhbHNlO1xuICAgIHN0eWxlVHJhbnNmb3JtID0gJ3RyYW5zbGF0ZTNkKDBweCwgMHB4LCAwcHgpJztcblxuICAgIHByaXZhdGUgZGlmZmVyOiBJdGVyYWJsZURpZmZlcjxFY2xUYWJDb21wb25lbnQ+O1xuICAgIHByaXZhdGUgZGlmZjogSXRlcmFibGVDaGFuZ2VzPEVjbFRhYkNvbXBvbmVudD47XG4gICAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gICAgcHJpdmF0ZSBpc0ZpcnN0Q2FsbCA9IHRydWU7XG4gICAgcHJpdmF0ZSBpc1J0bCA9IGZhbHNlO1xuICAgIHByaXZhdGUgbW9yZUJ0bldpZHRoOiBudW1iZXI7XG4gICAgcHJpdmF0ZSBUSU1FT1VUX0lOVEVSVkFMID0gMzAwO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZGlmZmVyczogSXRlcmFibGVEaWZmZXJzLFxuICAgICAgICBwcml2YXRlIGNka0JyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyLFxuICAgICAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBlY2xSdGxTZXJ2aWNlOiBFY2xSdGxTZXJ2aWNlLFxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmRpZmZlciA9IHRoaXMuZGlmZmVycy5maW5kKFtdKS5jcmVhdGUoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vYnNlcnZlQnJlYWtwb2ludENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5oYW5kbGVSdGxDaGFuZ2VTdGF0ZSgpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaWZmID0gdGhpcy5kaWZmZXIuZGlmZih0aGlzLnRhYnMpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jcmVhdGVTZWNvbmRMaXN0Rm9yRHJvcGRvd24oKTtcbiAgICAgICAgdGhpcy5vYnNlcnZlVGFic0NoYW5nZXMoKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmhhbmRsZVJlc2l6ZSgpLCB0aGlzLlRJTUVPVVRfSU5URVJWQUwpO1xuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudC50YXJnZXQnXSlcbiAgICBvbkNsaWNrKHRhcmdldCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMubW9yZUJ1dHRvbi5lbC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhcmdldCkgJiYgIXRoaXMuZHJvcGRvd25MaXN0Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnModGFyZ2V0KSkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcbiAgICBvbldpbmRvd1Jlc2l6ZSgpOiB2b2lkIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmhhbmRsZVJlc2l6ZSgpLCB0aGlzLlRJTUVPVVRfSU5URVJWQUwpO1xuICAgIH1cblxuICAgIGdldCBpc01vcmVCdXR0b25BY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxpc3RUYWJzLmZpbmQoKGVsKSA9PiBlbC5pc0FjdGl2ZSkgIT09IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBvblNjcm9sbFByZXYoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2hpZnRUYWJzKFNoaWZ0RGlyZWN0aW9uLlBSRVZJT1VTKTtcbiAgICB9XG5cbiAgICBvblNjcm9sbE5leHQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2hpZnRUYWJzKFNoaWZ0RGlyZWN0aW9uLk5FWFQpO1xuICAgIH1cblxuICAgIG9uRHJvcGRvd25Ub2dnbGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNEcm9wZG93bkV4cGFuZGVkID0gIXRoaXMuaXNEcm9wZG93bkV4cGFuZGVkO1xuICAgIH1cblxuICAgIGdldFRhYnNXaWR0aFN0eWxlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzTW9iaWxlQnJlYWtwb2ludCA/IGAke3RoaXMuZ2V0VGFic1dpZHRoKCl9cHhgIDogJ2F1dG8nO1xuICAgIH1cblxuICAgIGdldFRhYnNXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy50YWJzLnJlZHVjZSgodG90YWwsIGl0ZW0pID0+ICh0b3RhbCArPSBNYXRoLmNlaWwoaXRlbS5nZXRXaWR0aCgpKSksIDApO1xuICAgIH1cblxuICAgIGdldEhpZGRlblRhYnNDb3VudCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy50YWJzLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5pc0hpZGRlbikubGVuZ3RoO1xuICAgIH1cblxuICAgIGdldFRhYkxhYmVsKGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRUYWJzQXNBcnJheSgpW2luZGV4XS5nZXRUYWJMYWJlbCgpO1xuICAgIH1cblxuICAgIGdldFRyYW5zaXRpb25EdXJhdGlvbigpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5pc01vYmlsZUJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIHJldHVybiAnMC40cyc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcwcyc7XG4gICAgfVxuXG4gICAgb25UYWJCbHVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcblxuICAgICAgICB0aGlzLmdldExhc3RWaXNpYmxlVGFiKCkub25Gb2N1cygpO1xuICAgICAgICB0aGlzLmdldExhc3RWaXNpYmxlVGFiKCkub25CbHVyKCk7XG4gICAgfVxuXG4gICAgb25UYWJTZWxlY3QodGFiOiBFY2xUYWJDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZWFjdGl2YXRlQWxsVGFicyh0aGlzLnRhYnMudG9BcnJheSgpLCB0aGlzLmxpc3RUYWJzKTtcbiAgICAgICAgdGhpcy5hY3RpdmF0ZVRhYih0YWIpO1xuICAgICAgICB0aGlzLnNlbmRUYWJTZWxlY3RFdmVudCh0YWIpO1xuICAgIH1cblxuICAgIG9uVGFiS2V5ZG93bkFycm93UmlnaHQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc01vYmlsZUJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIHRoaXMuc2hpZnRUYWJzKFNoaWZ0RGlyZWN0aW9uLk5FWFQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbmRleCA9PT0gdGhpcy5nZXRUYWJzQ291bnQoKSAtIDEpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNPbkZpcnN0VGFiKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzT25OZXh0VGFiKGluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVGFiS2V5ZG93bkFycm93TGVmdChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzTW9iaWxlQnJlYWtwb2ludCkge1xuICAgICAgICAgICAgdGhpcy5zaGlmdFRhYnMoU2hpZnREaXJlY3Rpb24uUFJFVklPVVMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c09uTGFzdFRhYigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5mb2N1c09uUHJldlRhYihpbmRleCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblRhYktleWRvd25Ib21lKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvY3VzT25GaXJzdFRhYigpO1xuICAgIH1cblxuICAgIG9uVGFiS2V5ZG93bkVuZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb2N1c09uTGFzdFRhYigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2hpZnRUYWJzKGRpcjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5kZXggPSB0aGlzLmdldFNoaWZJbmRleChkaXIsIHRoaXMuaW5kZXgpO1xuXG4gICAgICAgIHRoaXMuaXNTY3JvbGxQcmV2QnRuU2hvdyA9IHRoaXMuaW5kZXggPj0gMTtcbiAgICAgICAgdGhpcy5pc1Njcm9sbE5leHRCdG5TaG93ID0gdGhpcy5pbmRleCA8PSB0aGlzLmdldFRhYnNDb3VudCgpIC0gMTtcblxuICAgICAgICBjb25zdCBsZWZ0TWFyZ2luID0gdGhpcy5pbmRleCA9PT0gMCA/IDAgOiB0aGlzLmJ0blByZXYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCArIDEzO1xuXG4gICAgICAgIGxldCBuZXdPZmZzZXQgPSAwO1xuICAgICAgICBpZiAodGhpcy5pc1J0bCkge1xuICAgICAgICAgICAgbmV3T2Zmc2V0ID0gTWF0aC5jZWlsKFxuICAgICAgICAgICAgICAgIHRoaXMudGFic0xpc3QubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCAtXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0VGFic0FzQXJyYXkoKVt0aGlzLmluZGV4XS5ob3N0RWxlbWVudC5vZmZzZXRMZWZ0IC1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRUYWJzQXNBcnJheSgpW3RoaXMuaW5kZXhdLmhvc3RFbGVtZW50Lm9mZnNldFdpZHRoIC1cbiAgICAgICAgICAgICAgICAgICAgbGVmdE1hcmdpbixcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdPZmZzZXQgPSBNYXRoLmNlaWwodGhpcy5nZXRUYWJzQXNBcnJheSgpW3RoaXMuaW5kZXhdLmhvc3RFbGVtZW50Lm9mZnNldExlZnQgLSBsZWZ0TWFyZ2luKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1heFNjcm9sbCA9IE1hdGguY2VpbCh0aGlzLmdldFRhYnNMaXN0V2lkdGgoKSAtIHRoaXMuZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCk7XG5cbiAgICAgICAgaWYgKG5ld09mZnNldCA+IG1heFNjcm9sbCkge1xuICAgICAgICAgICAgdGhpcy5pc1Njcm9sbE5leHRCdG5TaG93ID0gZmFsc2U7XG4gICAgICAgICAgICBuZXdPZmZzZXQgPSBtYXhTY3JvbGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc1J0bCkge1xuICAgICAgICAgICAgdGhpcy5zdHlsZVRyYW5zZm9ybSA9IGB0cmFuc2xhdGUzZCgke25ld09mZnNldH1weCwgMHB4LCAwcHgpYDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3R5bGVUcmFuc2Zvcm0gPSBgdHJhbnNsYXRlM2QoLSR7bmV3T2Zmc2V0fXB4LCAwcHgsIDBweClgO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTaGlmSW5kZXgoZGlyOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBpZiAoZGlyID09PSBTaGlmdERpcmVjdGlvbi5ORVhUKSB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPT09IHRoaXMuZ2V0VGFic0NvdW50KCkgLSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpbmRleCArIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRUYWJzQ291bnQoKSAtIDE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpbmRleCAtIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVNlY29uZExpc3RGb3JEcm9wZG93bigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50YWJzLmZvckVhY2goKHRhYikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3VGFiID0gT2JqZWN0LmFzc2lnbih7fSwgdGFiKSBhcyBFY2xUYWJDb21wb25lbnQ7XG4gICAgICAgICAgICBuZXdUYWIuaXNIaWRkZW4gPSB0cnVlO1xuICAgICAgICAgICAgbmV3VGFiLmlzQWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmxpc3RUYWJzLnB1c2gobmV3VGFiIGFzIEVjbFRhYkNvbXBvbmVudCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VGFic0FzQXJyYXkoKTogRWNsVGFiQ29tcG9uZW50W10ge1xuICAgICAgICByZXR1cm4gdGhpcy50YWJzLnRvQXJyYXkoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRhYnNDb3VudCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy50YWJzLnRvQXJyYXkoKS5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbG9zZURyb3Bkb3duKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzRHJvcGRvd25FeHBhbmRlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgb3BlbkRyb3Bkb3duKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzRHJvcGRvd25FeHBhbmRlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvYnNlcnZlVGFic0NoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3JlYXRlVGFic0NoYW5nZXNPYnNlcnZhYmxlKHRoaXMudGFicykucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh0aGlzLm9uVGFic0NoYW5nZXMuYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVUYWJzQ2hhbmdlc09ic2VydmFibGUodGFiczogUXVlcnlMaXN0PEVjbFRhYkNvbXBvbmVudD4pOiBPYnNlcnZhYmxlPFF1ZXJ5TGlzdDxFY2xUYWJDb21wb25lbnQ+PiB7XG4gICAgICAgIHJldHVybiBvZih0YWJzKS5waXBlKG1lcmdlV2l0aCh0YWJzLmNoYW5nZXMpLCB0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25UYWJzQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaWZmID0gdGhpcy5kaWZmZXIuZGlmZih0aGlzLnRhYnMpO1xuXG4gICAgICAgIGlmICghdGhpcy5kaWZmKSB7XG4gICAgICAgICAgICB0aGlzLnRhYnMuZm9yRWFjaCgodGFiKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0VGFiRXZlbnRzKHRhYik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGlmZi5mb3JFYWNoQWRkZWRJdGVtKChjaGFuZ2UpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3RUYWJFdmVudHMoY2hhbmdlLml0ZW0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuZGlmZi5mb3JFYWNoUmVtb3ZlZEl0ZW0oKGNoYW5nZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZGlzY29ubmVjdFRhYkV2ZW50cyhjaGFuZ2UuaXRlbSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY29ubmVjdFRhYkV2ZW50cyh0YWI6IEVjbFRhYkNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICB0YWIuc2VsZWN0VGFiLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vblRhYlNlbGVjdCh0YWIpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGFiLmtleWRvd25UYWIucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMub25UYWJLZXlkb3duKGV2ZW50LCB0YWIpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uVGFiS2V5ZG93bihldmVudDogRXZlbnQsIHRhYjogRWNsVGFiQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRUYWJzQXNBcnJheSgpLmluZGV4T2YodGFiKTtcbiAgICAgICAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkFSUk9XX0xFRlQ6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblRhYktleWRvd25BcnJvd0xlZnQoaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkFSUk9XX1JJR0hUOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25UYWJLZXlkb3duQXJyb3dSaWdodChpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIEtleUNvZGUuRU5EOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25UYWJLZXlkb3duRW5kKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIEtleUNvZGUuSE9NRToge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uVGFiS2V5ZG93bkhvbWUoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgS2V5Q29kZS5FTlRFUjoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uVGFiU2VsZWN0KHRhYik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIEtleUNvZGUuVEFCOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25UYWJCbHVyKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TGFzdFZpc2libGVUYWIoKTogRWNsVGFiQ29tcG9uZW50IHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IG51bGw7XG4gICAgICAgIHRoaXMuZ2V0VGFic0FzQXJyYXkoKS5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFlbC5pc0hpZGRlbikge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGVsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9jdXNPbk5leHRUYWIoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5nZXRUYWJzQXNBcnJheSgpW2luZGV4ICsgMV0uaXNIaWRkZW4pIHtcbiAgICAgICAgICAgIHRoaXMub3BlbkRyb3Bkb3duKCk7XG4gICAgICAgICAgICB0aGlzLmZvY3VzT25Ecm9wZG93blRhYihpbmRleCArIDEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgICAgICB0aGlzLmdldFRhYnNBc0FycmF5KClbaW5kZXggKyAxXS5vbkZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGZvY3VzT25GaXJzdFRhYigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgIHRoaXMuZ2V0Rmlyc3RUYWJGcm9tQXJyYXkoKS5vbkZvY3VzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb2N1c09uTGFzdFRhYigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmdldExhc3RUYWJGcm9tQXJyYXkoKS5pc0hpZGRlbikge1xuICAgICAgICAgICAgdGhpcy5nZXRMYXN0VGFiRnJvbUFycmF5KCkub25Gb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vcGVuRHJvcGRvd24oKTtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNPbkRyb3Bkb3duVGFiKHRoaXMuZ2V0VGFic0NvdW50KCkgLSAxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZm9jdXNPblByZXZUYWIoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMubGlzdFRhYnNbaW5kZXggLSAxXS5pc0hpZGRlbikge1xuICAgICAgICAgICAgdGhpcy5mb2N1c09uRHJvcGRvd25UYWIoaW5kZXggLSAxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgICAgICAgdGhpcy5nZXRUYWJzQXNBcnJheSgpW2luZGV4IC0gMV0ub25Gb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb2N1c09uRHJvcGRvd25UYWIoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmRyb3Bkb3duTGlzdC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuW2luZGV4XS5maXJzdENoaWxkLmZvY3VzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBibHVyRHJvcGRvd25UYWIoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmRyb3Bkb3duTGlzdC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuW2luZGV4XS5maXJzdENoaWxkLmJsdXIoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldExhc3RUYWJGcm9tQXJyYXkoKTogRWNsVGFiQ29tcG9uZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VGFic0FzQXJyYXkoKVt0aGlzLmdldFRhYnNBc0FycmF5KCkubGVuZ3RoIC0gMV07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGaXJzdFRhYkZyb21BcnJheSgpOiBFY2xUYWJDb21wb25lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRUYWJzQXNBcnJheSgpWzBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGlzY29ubmVjdFRhYkV2ZW50cyh0YWI6IEVjbFRhYkNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGFiICYmIHRhYi5zZWxlY3RUYWIpIHtcbiAgICAgICAgICAgIHRhYi5zZWxlY3RUYWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZGVhY3RpdmF0ZUFsbFRhYnModGFiczogQXJyYXk8RWNsVGFiQ29tcG9uZW50PiwgbGlzdFRhYnM6IEFycmF5PEVjbFRhYkNvbXBvbmVudD4pOiB2b2lkIHtcbiAgICAgICAgdGFicy5mb3JFYWNoKChpdCkgPT4ge1xuICAgICAgICAgICAgaXQuaXNBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbGlzdFRhYnMuZm9yRWFjaCgoaXQpID0+IHtcbiAgICAgICAgICAgIGl0LmlzQWN0aXZlID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWN0aXZhdGVUYWIodGFiOiBFY2xUYWJDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgdGFiLmlzQWN0aXZlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNlbmRUYWJTZWxlY3RFdmVudCh0YWI6IEVjbFRhYkNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRhYlNlbGVjdC5uZXh0KG5ldyBFY2xUYWJTZWxlY3RFdmVudCh0YWIpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9ic2VydmVCcmVha3BvaW50Q2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jZGtCcmVha3BvaW50T2JzZXJ2ZXJcbiAgICAgICAgICAgIC5vYnNlcnZlKFsnKG1heC13aWR0aDogNDgwcHgpJ10pXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzTW9iaWxlQnJlYWtwb2ludCA9IHJlc3VsdC5tYXRjaGVzO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVSZXNpemUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgICBpZiAodGhpcy5pc01vYmlsZUJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlTW9iaWxlKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbml0TW9yZUJ0bldpZHRoKCk7XG4gICAgICAgIGxldCBzdG9wV2lkdGggPSB0aGlzLm1vcmVCdG5XaWR0aCArIDI1O1xuICAgICAgICBjb25zdCBoaWRkZW5JdGVtcyA9IFtdO1xuICAgICAgICBjb25zdCBsaXN0V2lkdGggPSB0aGlzLmdldFRhYnNMaXN0V2lkdGgoKTtcbiAgICAgICAgdGhpcy5pc1Njcm9sbE5leHRCdG5TaG93ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNTY3JvbGxQcmV2QnRuU2hvdyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzTW9yZUJ1dHRvblNob3cgPSBmYWxzZTtcbiAgICAgICAgdGhpcy50YWJzLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcbiAgICAgICAgICAgIGl0ZW0uaXNIaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChsaXN0V2lkdGggPj0gc3RvcFdpZHRoICsgaXRlbS5nZXRXaWR0aCgpICYmICFoaWRkZW5JdGVtcy5pbmNsdWRlcyhpIC0gMSkpIHtcbiAgICAgICAgICAgICAgICBzdG9wV2lkdGggKz0gaXRlbS5nZXRXaWR0aCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpdGVtLmlzSGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5pc0FjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxpc3RUYWJzW2ldLmlzQWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaGlkZGVuSXRlbXMucHVzaChpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFoaWRkZW5JdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuaXNNb3JlQnV0dG9uU2hvdyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zZXRBY3RpdmVJdGVtRm9yTWFpblRhYnMoKTtcbiAgICAgICAgICAgIHRoaXMuaGlkZUFsbERyb3Bkb3duVGFicygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pc01vcmVCdXR0b25TaG93ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc2V0SGlkZGVuSXRlbXNGb3JEcm9wZG93blRhYnMoaGlkZGVuSXRlbXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0TW9yZUJ0bldpZHRoKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0ZpcnN0Q2FsbCkge1xuICAgICAgICAgICAgdGhpcy5tb3JlQnRuV2lkdGggPSB0aGlzLm1vcmVCdXR0b24uZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICAgICAgICAgIHRoaXMuaXNGaXJzdENhbGwgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaGlkZUFsbERyb3Bkb3duVGFicygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5saXN0VGFicy5mb3JFYWNoKGl0ZW0gPT4gaXRlbS5pc0hpZGRlbiA9IHRydWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0QWN0aXZlSXRlbUZvck1haW5UYWJzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxpc3RUYWJzLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbS5pc0FjdGl2ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMudGFicy50b0FycmF5KClbaW5kZXhdLmlzQWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUYWJzTGlzdFdpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYnNMaXN0Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRIaWRkZW5JdGVtc0ZvckRyb3Bkb3duVGFicyhoaWRkZW5JdGVtczogbnVtYmVyW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5saXN0VGFicy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKGhpZGRlbkl0ZW1zLmluY2x1ZGVzKGluZGV4KSkge1xuICAgICAgICAgICAgICAgIGl0ZW0uaXNIaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaXRlbS5pc0hpZGRlbiA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlTW9iaWxlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzTW9yZUJ1dHRvblNob3cgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc1Njcm9sbFByZXZCdG5TaG93ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNTY3JvbGxOZXh0QnRuU2hvdyA9IHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVSdGxDaGFuZ2VTdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXNSdGxPbGQgPSB0aGlzLmlzUnRsO1xuICAgICAgICB0aGlzLmVjbFJ0bFNlcnZpY2UuY3VycmVudFJ0bFN0YXRlJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChydGxTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1J0bCA9IHJ0bFN0YXRlO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzTW9iaWxlQnJlYWtwb2ludCAmJiB0aGlzLmhhc1J0bENoYW5nZWQoaXNSdGxPbGQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlUnRsQ2hhbmdlKCk7XG4gICAgICAgICAgICAgICAgfSBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc1J0bENoYW5nZWQoaXNSdGxPbGQ6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGlzUnRsT2xkICE9PSB0aGlzLmlzUnRsO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlUnRsQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhhbmRsZU1vYmlsZSgpO1xuICAgICAgICB0aGlzLnN0eWxlVHJhbnNmb3JtID0gJ3RyYW5zbGF0ZTNkKDBweCwgMHB4LCAwcHgpJztcbiAgICAgICAgdGhpcy5pbmRleCA9IDA7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImVjbC10YWJzXCI+XG4gICAgPGRpdiBjbGFzcz1cImVjbC10YWJzX19jb250YWluZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJlY2wtdGFic19fbGlzdFwiXG4gICAgICAgICAgICByb2xlPVwidGFibGlzdFwiXG4gICAgICAgICAgICAjdGFic0xpc3RcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJnZXRUYWJzV2lkdGhTdHlsZSgpXCJcbiAgICAgICAgICAgIFtzdHlsZS50cmFuc2Zvcm1dPVwic3R5bGVUcmFuc2Zvcm1cIlxuICAgICAgICAgICAgW3N0eWxlLnRyYW5zaXRpb24tZHVyYXRpb25dPVwiJzAnIHx8IGdldFRyYW5zaXRpb25EdXJhdGlvbigpXCI+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJlY2wtdGFiLCBbZWNsVGFiXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgIDxlY2wtdGFiLW1vcmUgW2lzSGlkZGVuXT1cIiFpc01vcmVCdXR0b25TaG93XCI+XG4gICAgICAgICAgICAgICAgQGlmIChsaXN0VGFicy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVjbC10YWJzX19kcm9wZG93blwiIFtjbGFzcy5lY2wtdGFic19fZHJvcGRvd24tLXNob3ddPVwiaXNEcm9wZG93bkV4cGFuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlY2wtdGFic19fZHJvcGRvd24tbGlzdFwiICNkcm9wZG93bkxpc3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yICh0YWIgb2YgbGlzdFRhYnM7IHRyYWNrIHRhYi5pZDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZWNsLXRhYiBbaXNBY3RpdmVdPVwidGFiLmlzQWN0aXZlXCIgW2lzSGlkZGVuXT1cInRhYi5pc0hpZGRlblwiIChjbGljayk9XCJvblRhYlNlbGVjdCh0YWIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5hcnJvd1JpZ2h0KT1cIm9uVGFiS2V5ZG93bkFycm93UmlnaHQoaSlcIiAoa2V5ZG93bi5hcnJvd0xlZnQpPVwib25UYWJLZXlkb3duQXJyb3dMZWZ0KGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5ob21lKT1cIm9uVGFiS2V5ZG93bkhvbWUoKVwiIChrZXlkb3duLmVuZCk9XCJvblRhYktleWRvd25FbmQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwib25UYWJTZWxlY3QodGFiKVwiIChrZXlkb3duLnRhYik9XCJvblRhYkJsdXIoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZWNsLXRhYi1sYWJlbD57eyBnZXRUYWJMYWJlbChpKSB9fTwvZWNsLXRhYi1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VjbC10YWI+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9lY2wtdGFiLW1vcmU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uICNtb3JlQnV0dG9uIGVjbEJ1dHRvbiBjbGFzcz1cImVjbC10YWJzX190b2dnbGVcIiB0YWJpbmRleD1cIi0xXCIgdmFyaWFudD1cImdob3N0XCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNEcm9wZG93bkV4cGFuZGVkXCIgW2NsYXNzLmVjbC10YWJzX190b2dnbGUtLWFjdGl2ZV09XCJpc01vcmVCdXR0b25BY3RpdmVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uRHJvcGRvd25Ub2dnbGUoKVwiIFtjbGFzcy5lY2wtdGFic19fdG9nZ2xlLS1oaWRkZW5dPVwiIWlzTW9yZUJ1dHRvblNob3dcIj5cbiAgICAgICAgICAgIDxzcGFuIGVjbEJ1dHRvbkxhYmVsPlxuICAgICAgICAgICAgICAgIHt7ICdlY2wuY29tbW9uLk1PUkUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgKHt7IGdldEhpZGRlblRhYnNDb3VudCgpIH19KVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGVjbC1pY29uIGljb249XCJjb3JuZXItYXJyb3dcIiB0cmFuc2Zvcm09XCJyb3RhdGUtMTgwXCIgc2l6ZT1cImZsdWlkXCI+PC9lY2wtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZWNsLXRhYnNfX2NvbnRyb2xzXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICNidG5QcmV2XG4gICAgICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCJ0cnVlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZWNsLXRhYnNfX3ByZXZcIlxuICAgICAgICAgICAgW2NsYXNzLmVjbC11LWQtbm9uZV09XCIhaXNTY3JvbGxQcmV2QnRuU2hvd1wiXG4gICAgICAgICAgICBbY2xhc3MuZWNsLXUtZC1ibG9ja109XCJpc1Njcm9sbFByZXZCdG5TaG93XCJcbiAgICAgICAgICAgIChjbGljayk9XCJvblNjcm9sbFByZXYoKVwiPlxuICAgICAgICAgICAgPGVjbC1pY29uIGlzSW52ZXJ0ZWQgaWNvbj1cImNvcm5lci1hcnJvd1wiIHRyYW5zZm9ybT1cInJvdGF0ZS0yNzBcIiBzaXplPVwibVwiIGNsYXNzPVwiZWNsLXUtZC1ibG9ja1wiPiA8L2VjbC1pY29uPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlY2wtdS1zci1vbmx5XCI+PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgI2J0bk5leHRcbiAgICAgICAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cInRydWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJlY2wtdGFic19fbmV4dFwiXG4gICAgICAgICAgICBbY2xhc3MuZWNsLXUtZC1ub25lXT1cIiFpc1Njcm9sbE5leHRCdG5TaG93XCJcbiAgICAgICAgICAgIFtjbGFzcy5lY2wtdS1kLWJsb2NrXT1cImlzU2Nyb2xsTmV4dEJ0blNob3dcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2Nyb2xsTmV4dCgpXCI+XG4gICAgICAgICAgICA8ZWNsLWljb24gaXNJbnZlcnRlZCBpY29uPVwiY29ybmVyLWFycm93XCIgY29sb3I9XCJpbnZlcnRlZFwiIHRyYW5zZm9ybT1cInJvdGF0ZS05MFwiIHNpemU9XCJtXCIgY2xhc3M9XCJlY2wtdS1kLWJsb2NrXCI+IDwvZWNsLWljb24+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVjbC11LXNyLW9ubHlcIj48L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbkBmb3IgKHRhYiBvZiB0YWJzLnRvQXJyYXkoKTsgdHJhY2sgdGFiLnRhYkxhYmVsKSB7XG4gICAgQGlmICh0YWIuaXNBY3RpdmUpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInt7IGJvZHlDbGFzcyB9fVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYi5jb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgfVxufVxuQGZvciAodGFiIG9mIGxpc3RUYWJzOyB0cmFjayB0YWIudGFiTGFiZWwpIHtcbiAgICBAaWYgKHRhYi5pc0FjdGl2ZSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwie3sgYm9keUNsYXNzIH19XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFiLmNvbnRlbnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG59XG4iXX0=
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Component, Input, HostBinding, ViewEncapsulation, Output, EventEmitter, ContentChild, forwardRef, } from '@angular/core';
|
|
3
|
-
import { coerceBoolean } from '@eui/base';
|
|
1
|
+
import { Component, Input, HostBinding, ViewEncapsulation, Output, EventEmitter, ContentChild, forwardRef, booleanAttribute, } from '@angular/core';
|
|
4
2
|
import { Subject } from 'rxjs';
|
|
5
3
|
import { takeUntil } from 'rxjs/operators';
|
|
6
4
|
import { EclBaseEvent } from '../../model/ecl-base.event';
|
|
@@ -22,7 +20,6 @@ export class EclTimelineItemToggleEvent extends EclBaseEvent {
|
|
|
22
20
|
export class EclTimelineItemComponent extends ECLBaseDirective {
|
|
23
21
|
constructor() {
|
|
24
22
|
super(...arguments);
|
|
25
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
26
23
|
this.isTogglerExpanded = false;
|
|
27
24
|
this.isCollapsed = false;
|
|
28
25
|
this.isToggler = false;
|
|
@@ -67,26 +64,20 @@ export class EclTimelineItemComponent extends ECLBaseDirective {
|
|
|
67
64
|
}
|
|
68
65
|
}
|
|
69
66
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.0", ngImport: i0, type: EclTimelineItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
70
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
67
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0-rc.0", type: EclTimelineItemComponent, selector: "ecl-timeline-item", inputs: { toggleButtonLabel: "toggleButtonLabel", expandLabel: "expandLabel", collapseLabel: "collapseLabel", isTogglerExpanded: ["isTogglerExpanded", "isTogglerExpanded", booleanAttribute], isCollapsed: "isCollapsed", isToggler: "isToggler", toggleGroup: "toggleGroup" }, outputs: { toggle: "toggle" }, host: { properties: { "class": "this.cssClasses", "class.ecl-timeline__item--collapsed": "this.isCollapsed", "class.ecl-timeline__item--toggle": "this.isToggler" } }, queries: [{ propertyName: "timelineItemToggler", first: true, predicate: i0.forwardRef(() => EclTimelineItemTogglerComponent), descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (isToggler) {\n <div class=\"ecl-timeline__content\">\n @if (hasDefaultToggler()) {\n <button eclButton (click)=\"onTogglerClick($event)\" variant=\"secondary\">\n @if (isShowExpandLabel) {\n <span eclButtonLabel> {{ expandLabel }} </span>\n }\n @if (isShowCollapseLabel) {\n <span eclButtonLabel> {{ collapseLabel }} </span>\n }\n @if (isShowOneToggleLabel) {\n <span eclButtonLabel> {{ toggleButtonLabel || 'ecl.timeline.TOGGLE-ITEMS' | translate }} </span>\n }\n <ecl-icon icon=\"corner-arrow\" size=\"fluid\" [transform]=\"!isTogglerExpanded ? 'rotate-180' : ''\"></ecl-icon>\n </button>\n }\n\n\n <ng-content select=\"ecl-timeline-item-toggler\"></ng-content>\n\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n}\n@else {\n <div class=\"ecl-timeline__tooltip\">\n <div class=\"ecl-timeline__tooltip-arrow\"></div>\n <ng-content select=\"[eclTimelineItemLabel]\"></ng-content>\n\n <ng-content select=\"[eclTimelineItemTitle]\"></ng-content>\n\n <div class=\"ecl-timeline__content\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n </div>\n}\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n", styles: ["ecl-timeline-item{display:list-item}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.EclButtonComponent, selector: "button[eclButton], button[ecl-button], a[eclButton]", inputs: ["isIconOnly", "variant", "containerStyleClass"] }, { kind: "directive", type: i3.EclButtonLabelDirective, selector: "[eclButtonLabel]" }, { kind: "component", type: i4.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "ariaHidden", "focusable"] }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
71
68
|
}
|
|
72
|
-
__decorate([
|
|
73
|
-
coerceBoolean
|
|
74
|
-
], EclTimelineItemComponent.prototype, "isTogglerExpanded", void 0);
|
|
75
69
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.0", ngImport: i0, type: EclTimelineItemComponent, decorators: [{
|
|
76
70
|
type: Component,
|
|
77
|
-
args: [{ selector: 'ecl-timeline-item', encapsulation: ViewEncapsulation.None, template: "
|
|
78
|
-
}], propDecorators: {
|
|
79
|
-
type: Input
|
|
80
|
-
}], eclTitle: [{
|
|
81
|
-
type: Input
|
|
82
|
-
}], toggleButtonLabel: [{
|
|
71
|
+
args: [{ selector: 'ecl-timeline-item', encapsulation: ViewEncapsulation.None, template: "@if (isToggler) {\n <div class=\"ecl-timeline__content\">\n @if (hasDefaultToggler()) {\n <button eclButton (click)=\"onTogglerClick($event)\" variant=\"secondary\">\n @if (isShowExpandLabel) {\n <span eclButtonLabel> {{ expandLabel }} </span>\n }\n @if (isShowCollapseLabel) {\n <span eclButtonLabel> {{ collapseLabel }} </span>\n }\n @if (isShowOneToggleLabel) {\n <span eclButtonLabel> {{ toggleButtonLabel || 'ecl.timeline.TOGGLE-ITEMS' | translate }} </span>\n }\n <ecl-icon icon=\"corner-arrow\" size=\"fluid\" [transform]=\"!isTogglerExpanded ? 'rotate-180' : ''\"></ecl-icon>\n </button>\n }\n\n\n <ng-content select=\"ecl-timeline-item-toggler\"></ng-content>\n\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n}\n@else {\n <div class=\"ecl-timeline__tooltip\">\n <div class=\"ecl-timeline__tooltip-arrow\"></div>\n <ng-content select=\"[eclTimelineItemLabel]\"></ng-content>\n\n <ng-content select=\"[eclTimelineItemTitle]\"></ng-content>\n\n <div class=\"ecl-timeline__content\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n </div>\n}\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n", styles: ["ecl-timeline-item{display:list-item}\n"] }]
|
|
72
|
+
}], propDecorators: { toggleButtonLabel: [{
|
|
83
73
|
type: Input
|
|
84
74
|
}], expandLabel: [{
|
|
85
75
|
type: Input
|
|
86
76
|
}], collapseLabel: [{
|
|
87
77
|
type: Input
|
|
88
78
|
}], isTogglerExpanded: [{
|
|
89
|
-
type: Input
|
|
79
|
+
type: Input,
|
|
80
|
+
args: [{ transform: booleanAttribute }]
|
|
90
81
|
}], cssClasses: [{
|
|
91
82
|
type: HostBinding,
|
|
92
83
|
args: ['class']
|
|
@@ -108,4 +99,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.0", ng
|
|
|
108
99
|
}], toggle: [{
|
|
109
100
|
type: Output
|
|
110
101
|
}] } });
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLXRpbWVsaW5lLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2VjbC10aW1lbGluZS9lY2wtdGltZWxpbmUtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZWNsLXRpbWVsaW5lL2VjbC10aW1lbGluZS1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULEtBQUssRUFDTCxXQUFXLEVBRVgsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDTixZQUFZLEVBQ1osWUFBWSxFQUNaLFVBQVUsR0FFYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7OztBQUV6RCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsWUFBWTtJQUN4RCxZQUNXLFVBQW1CLEVBQ25CLFdBQW1CO1FBRTFCLEtBQUssRUFBRSxDQUFDO1FBSEQsZUFBVSxHQUFWLFVBQVUsQ0FBUztRQUNuQixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtJQUc5QixDQUFDO0NBQ0o7QUFjRCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsZ0JBQWdCO0lBWjlEOztRQTJCSSw4REFBOEQ7UUFDdEMsc0JBQWlCLEdBQWtCLEtBQUssQ0FBQztRQVVKLGdCQUFXLEdBQUcsS0FBSyxD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TUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIElucHV0LFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgT3V0cHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgZm9yd2FyZFJlZixcbiAgICBPbkRlc3Ryb3ksXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhbiB9IGZyb20gJ0BldWkvYmFzZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFY2xCYXNlRXZlbnQgfSBmcm9tICcuLi8uLi9tb2RlbC9lY2wtYmFzZS5ldmVudCc7XG5pbXBvcnQgeyBFY2xUaW1lbGluZUl0ZW1Ub2dnbGVyQ29tcG9uZW50IH0gZnJvbSAnLi9lY2wtdGltZWxpbmUtaXRlbS10b2dnbGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFQ0xCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi4vZWNsLWJhc2UuZGlyZWN0aXZlJztcblxuZXhwb3J0IGNsYXNzIEVjbFRpbWVsaW5lSXRlbVRvZ2dsZUV2ZW50IGV4dGVuZHMgRWNsQmFzZUV2ZW50IHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGlzRXhwYW5kZWQ6IGJvb2xlYW4sXG4gICAgICAgIHB1YmxpYyB0b2dnbGVHcm91cDogc3RyaW5nLFxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdlY2wtdGltZWxpbmUtaXRlbScsXG4gICAgdGVtcGxhdGVVcmw6ICdlY2wtdGltZWxpbmUtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVzOiBbXG4gICAgICAgIGBcbiAgICAgICAgICAgIGVjbC10aW1lbGluZS1pdGVtIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBsaXN0LWl0ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIGAsXG4gICAgXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBFY2xUaW1lbGluZUl0ZW1Db21wb25lbnQgZXh0ZW5kcyBFQ0xCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBQbGVhc2UgdXNlIGVjbFRpbWVsaW5lSXRlbUxhYmVsIGRpcmVjdGl2ZSBpbnN0ZWFkLiBUbyBiZSByZW1vdmVkIGluIHYxOC5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIFBsZWFzZSB1c2UgZWNsVGltZWxpbmVJdGVtVGl0bGUgZGlyZWN0aXZlIGluc3RlYWQuIFRvIGJlIHJlbW92ZWQgaW4gdjE4LlxuICAgICAqL1xuICAgIEBJbnB1dCgpIGVjbFRpdGxlOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgUGxlYXNlIHVzZSBleHBhbmRMYWJlbCBhbmQgY29sbGFwc2VMYWJlbCBpbnN0ZWFkLiBUbyBiZSByZW1vdmVkIGluIHYxOS5cbiAgICAgKi9cbiAgICBASW5wdXQoKSB0b2dnbGVCdXR0b25MYWJlbDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGV4cGFuZExhYmVsOiBzdHJpbmc7XG4gICAgQElucHV0KCkgY29sbGFwc2VMYWJlbDogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgQGNvZXJjZUJvb2xlYW4gQElucHV0KCkgaXNUb2dnbGVyRXhwYW5kZWQ6IGJvb2xlYW4gfCBhbnkgPSBmYWxzZTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIGdldCBjc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbc3VwZXIuZ2V0Q3NzQ2xhc3NlcygnZWNsLXRpbWVsaW5lX19pdGVtJyldLmpvaW4oJyAnKTtcbiAgICB9XG5cbiAgICBAQ29udGVudENoaWxkKGZvcndhcmRSZWYoKCkgPT4gRWNsVGltZWxpbmVJdGVtVG9nZ2xlckNvbXBvbmVudCkpXG4gICAgdGltZWxpbmVJdGVtVG9nZ2xlcjogRWNsVGltZWxpbmVJdGVtVG9nZ2xlckNvbXBvbmVudDtcblxuICAgIEBJbnB1dCgpIEBIb3N0QmluZGluZygnY2xhc3MuZWNsLXRpbWVsaW5lX19pdGVtLS1jb2xsYXBzZWQnKSBpc0NvbGxhcHNlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIEBIb3N0QmluZGluZygnY2xhc3MuZWNsLXRpbWVsaW5lX19pdGVtLS10b2dnbGUnKSBpc1RvZ2dsZXIgPSBmYWxzZTtcbiAgICBASW5wdXQoKSB0b2dnbGVHcm91cDogc3RyaW5nO1xuXG4gICAgQE91dHB1dCgpIHRvZ2dsZSA9IG5ldyBFdmVudEVtaXR0ZXI8RWNsVGltZWxpbmVJdGVtVG9nZ2xlRXZlbnQ+KCk7XG5cbiAgICBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRpbWVsaW5lSXRlbVRvZ2dsZXIpIHtcbiAgICAgICAgICAgIHRoaXMudGltZWxpbmVJdGVtVG9nZ2xlci50b2dnbGUucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVUb2dnbGVyKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBnZXQgaXNTaG93RXhwYW5kTGFiZWwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuZXhwYW5kTGFiZWwgJiYgIXRoaXMuaXNUb2dnbGVyRXhwYW5kZWQ7XG4gICAgfVxuXG4gICAgZ2V0IGlzU2hvd0NvbGxhcHNlTGFiZWwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuY29sbGFwc2VMYWJlbCAmJiB0aGlzLmlzVG9nZ2xlckV4cGFuZGVkO1xuICAgIH1cblxuICAgIGdldCBpc1Nob3dPbmVUb2dnbGVMYWJlbCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmNvbGxhcHNlTGFiZWwgJiYgIXRoaXMuZXhwYW5kTGFiZWw7XG4gICAgfVxuXG4gICAgaGFzRGVmYXVsdFRvZ2dsZXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVG9nZ2xlciAmJiAhdGhpcy50aW1lbGluZUl0ZW1Ub2dnbGVyO1xuICAgIH1cblxuICAgIG9uVG9nZ2xlckNsaWNrKGV2dDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhhbmRsZVRvZ2dsZXIoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZVRvZ2dsZXIoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5leHRFeHBhbmRlZFN0YXRlID0gIXRoaXMuaXNUb2dnbGVyRXhwYW5kZWQ7XG4gICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IEVjbFRpbWVsaW5lSXRlbVRvZ2dsZUV2ZW50KG5leHRFeHBhbmRlZFN0YXRlLCB0aGlzLnRvZ2dsZUdyb3VwKTtcblxuICAgICAgICBpZiAoIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlLm5leHQoZXZlbnQpO1xuICAgICAgICAgICAgdGhpcy5pc1RvZ2dsZXJFeHBhbmRlZCA9IG5leHRFeHBhbmRlZFN0YXRlO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImVjbC10aW1lbGluZV9fdG9vbHRpcFwiICpuZ0lmPVwiIWlzVG9nZ2xlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJlY2wtdGltZWxpbmVfX3Rvb2x0aXAtYXJyb3dcIj48L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwibGFiZWxcIiBjbGFzcz1cImVjbC10aW1lbGluZV9fbGFiZWxcIj57eyBsYWJlbCB9fTwvZGl2PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltlY2xUaW1lbGluZUl0ZW1MYWJlbF1cIj48L25nLWNvbnRlbnQ+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiZWNsVGl0bGVcIiBjbGFzcz1cImVjbC10aW1lbGluZV9fdGl0bGVcIj57eyBlY2xUaXRsZSB9fTwvZGl2PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltlY2xUaW1lbGluZUl0ZW1UaXRsZV1cIj48L25nLWNvbnRlbnQ+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZWNsLXRpbWVsaW5lX19jb250ZW50XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cImVjbC10aW1lbGluZV9fY29udGVudFwiICpuZ0lmPVwiaXNUb2dnbGVyXCI+XG4gICAgPGJ1dHRvbiBlY2xCdXR0b24gKm5nSWY9XCJoYXNEZWZhdWx0VG9nZ2xlcigpXCIgKGNsaWNrKT1cIm9uVG9nZ2xlckNsaWNrKCRldmVudClcIiB2YXJpYW50PVwic2Vjb25kYXJ5XCI+XG4gICAgICAgIDxzcGFuIGVjbEJ1dHRvbkxhYmVsICpuZ0lmPVwiaXNTaG93RXhwYW5kTGFiZWxcIj5cbiAgICAgICAgICAgIHt7IGV4cGFuZExhYmVsIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gZWNsQnV0dG9uTGFiZWwgKm5nSWY9XCJpc1Nob3dDb2xsYXBzZUxhYmVsXCI+XG4gICAgICAgICAgICB7eyBjb2xsYXBzZUxhYmVsIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gZWNsQnV0dG9uTGFiZWwgKm5nSWY9XCJpc1Nob3dPbmVUb2dnbGVMYWJlbFwiPlxuICAgICAgICAgICAge3sgdG9nZ2xlQnV0dG9uTGFiZWwgfHwgJ2VjbC50aW1lbGluZS5UT0dHTEUtSVRFTVMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGVjbC1pY29uIGljb249XCJjb3JuZXItYXJyb3dcIiBzaXplPVwiZmx1aWRcIiBbdHJhbnNmb3JtXT1cIiFpc1RvZ2dsZXJFeHBhbmRlZCA/ICdyb3RhdGUtMTgwJyA6ICcnXCI+PC9lY2wtaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImVjbC10aW1lbGluZS1pdGVtLXRvZ2dsZXJcIj48L25nLWNvbnRlbnQ+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjY29udGVudD5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPiJdfQ==
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLXRpbWVsaW5lLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2VjbC10aW1lbGluZS9lY2wtdGltZWxpbmUtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZWNsLXRpbWVsaW5lL2VjbC10aW1lbGluZS1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsS0FBSyxFQUNMLFdBQVcsRUFFWCxpQkFBaUIsRUFDakIsTUFBTSxFQUNOLFlBQVksRUFDWixZQUFZLEVBQ1osVUFBVSxFQUVWLGdCQUFnQixHQUNuQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7QUFFekQsTUFBTSxPQUFPLDBCQUEyQixTQUFRLFlBQVk7SUFDeEQsWUFDVyxVQUFtQixFQUNuQixXQUFtQjtRQUUxQixLQUFLLEVBQUUsQ0FBQztRQUhELGVBQVUsR0FBVixVQUFVLENBQVM7UUFDbkIsZ0JBQVcsR0FBWCxXQUFXLENBQVE7SUFHOUIsQ0FBQztDQUNKO0FBY0QsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGdCQUFnQjtJQVo5RDs7UUFtQjRDLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQVVMLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFHbEUsV0FBTSxH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c3RCaW5kaW5nLFxuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgT3V0cHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgZm9yd2FyZFJlZixcbiAgICBPbkRlc3Ryb3ksXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFY2xCYXNlRXZlbnQgfSBmcm9tICcuLi8uLi9tb2RlbC9lY2wtYmFzZS5ldmVudCc7XG5pbXBvcnQgeyBFY2xUaW1lbGluZUl0ZW1Ub2dnbGVyQ29tcG9uZW50IH0gZnJvbSAnLi9lY2wtdGltZWxpbmUtaXRlbS10b2dnbGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFQ0xCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi4vZWNsLWJhc2UuZGlyZWN0aXZlJztcblxuZXhwb3J0IGNsYXNzIEVjbFRpbWVsaW5lSXRlbVRvZ2dsZUV2ZW50IGV4dGVuZHMgRWNsQmFzZUV2ZW50IHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGlzRXhwYW5kZWQ6IGJvb2xlYW4sXG4gICAgICAgIHB1YmxpYyB0b2dnbGVHcm91cDogc3RyaW5nLFxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdlY2wtdGltZWxpbmUtaXRlbScsXG4gICAgdGVtcGxhdGVVcmw6ICdlY2wtdGltZWxpbmUtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVzOiBbXG4gICAgICAgIGBcbiAgICAgICAgICAgIGVjbC10aW1lbGluZS1pdGVtIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBsaXN0LWl0ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIGAsXG4gICAgXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBFY2xUaW1lbGluZUl0ZW1Db21wb25lbnQgZXh0ZW5kcyBFQ0xCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBQbGVhc2UgdXNlIGV4cGFuZExhYmVsIGFuZCBjb2xsYXBzZUxhYmVsIGluc3RlYWQuIFRvIGJlIHJlbW92ZWQgaW4gdjE5LlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRvZ2dsZUJ1dHRvbkxhYmVsOiBzdHJpbmc7XG4gICAgQElucHV0KCkgZXhwYW5kTGFiZWw6IHN0cmluZztcbiAgICBASW5wdXQoKSBjb2xsYXBzZUxhYmVsOiBzdHJpbmc7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzVG9nZ2xlckV4cGFuZGVkID0gZmFsc2U7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBnZXQgY3NzQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gW3N1cGVyLmdldENzc0NsYXNzZXMoJ2VjbC10aW1lbGluZV9faXRlbScpXS5qb2luKCcgJyk7XG4gICAgfVxuXG4gICAgQENvbnRlbnRDaGlsZChmb3J3YXJkUmVmKCgpID0+IEVjbFRpbWVsaW5lSXRlbVRvZ2dsZXJDb21wb25lbnQpKVxuICAgIHRpbWVsaW5lSXRlbVRvZ2dsZXI6IEVjbFRpbWVsaW5lSXRlbVRvZ2dsZXJDb21wb25lbnQ7XG5cbiAgICBASW5wdXQoKSBASG9zdEJpbmRpbmcoJ2NsYXNzLmVjbC10aW1lbGluZV9faXRlbS0tY29sbGFwc2VkJykgaXNDb2xsYXBzZWQgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBASG9zdEJpbmRpbmcoJ2NsYXNzLmVjbC10aW1lbGluZV9faXRlbS0tdG9nZ2xlJykgaXNUb2dnbGVyID0gZmFsc2U7XG4gICAgQElucHV0KCkgdG9nZ2xlR3JvdXA6IHN0cmluZztcblxuICAgIEBPdXRwdXQoKSB0b2dnbGUgPSBuZXcgRXZlbnRFbWl0dGVyPEVjbFRpbWVsaW5lSXRlbVRvZ2dsZUV2ZW50PigpO1xuXG4gICAgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy50aW1lbGluZUl0ZW1Ub2dnbGVyKSB7XG4gICAgICAgICAgICB0aGlzLnRpbWVsaW5lSXRlbVRvZ2dsZXIudG9nZ2xlLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlVG9nZ2xlcigpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgZ2V0IGlzU2hvd0V4cGFuZExhYmVsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmV4cGFuZExhYmVsICYmICF0aGlzLmlzVG9nZ2xlckV4cGFuZGVkO1xuICAgIH1cblxuICAgIGdldCBpc1Nob3dDb2xsYXBzZUxhYmVsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmNvbGxhcHNlTGFiZWwgJiYgdGhpcy5pc1RvZ2dsZXJFeHBhbmRlZDtcbiAgICB9XG5cbiAgICBnZXQgaXNTaG93T25lVG9nZ2xlTGFiZWwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5jb2xsYXBzZUxhYmVsICYmICF0aGlzLmV4cGFuZExhYmVsO1xuICAgIH1cblxuICAgIGhhc0RlZmF1bHRUb2dnbGVyKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1RvZ2dsZXIgJiYgIXRoaXMudGltZWxpbmVJdGVtVG9nZ2xlcjtcbiAgICB9XG5cbiAgICBvblRvZ2dsZXJDbGljayhldnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oYW5kbGVUb2dnbGVyKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVUb2dnbGVyKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBuZXh0RXhwYW5kZWRTdGF0ZSA9ICF0aGlzLmlzVG9nZ2xlckV4cGFuZGVkO1xuICAgICAgICBjb25zdCBldmVudCA9IG5ldyBFY2xUaW1lbGluZUl0ZW1Ub2dnbGVFdmVudChuZXh0RXhwYW5kZWRTdGF0ZSwgdGhpcy50b2dnbGVHcm91cCk7XG5cbiAgICAgICAgaWYgKCFldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZS5uZXh0KGV2ZW50KTtcbiAgICAgICAgICAgIHRoaXMuaXNUb2dnbGVyRXhwYW5kZWQgPSBuZXh0RXhwYW5kZWRTdGF0ZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkBpZiAoaXNUb2dnbGVyKSB7XG4gICAgPGRpdiBjbGFzcz1cImVjbC10aW1lbGluZV9fY29udGVudFwiPlxuICAgICAgICBAaWYgKGhhc0RlZmF1bHRUb2dnbGVyKCkpIHtcbiAgICAgICAgICAgIDxidXR0b24gZWNsQnV0dG9uIChjbGljayk9XCJvblRvZ2dsZXJDbGljaygkZXZlbnQpXCIgdmFyaWFudD1cInNlY29uZGFyeVwiPlxuICAgICAgICAgICAgIEBpZiAoaXNTaG93RXhwYW5kTGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgPHNwYW4gZWNsQnV0dG9uTGFiZWw+IHt7IGV4cGFuZExhYmVsIH19IDwvc3Bhbj5cbiAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgQGlmIChpc1Nob3dDb2xsYXBzZUxhYmVsKSB7XG4gICAgICAgICAgICAgICAgIDxzcGFuIGVjbEJ1dHRvbkxhYmVsPiB7eyBjb2xsYXBzZUxhYmVsIH19IDwvc3Bhbj5cbiAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgQGlmIChpc1Nob3dPbmVUb2dnbGVMYWJlbCkge1xuICAgICAgICAgICAgICAgICA8c3BhbiBlY2xCdXR0b25MYWJlbD4ge3sgdG9nZ2xlQnV0dG9uTGFiZWwgfHwgJ2VjbC50aW1lbGluZS5UT0dHTEUtSVRFTVMnIHwgdHJhbnNsYXRlIH19IDwvc3Bhbj5cbiAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgPGVjbC1pY29uIGljb249XCJjb3JuZXItYXJyb3dcIiBzaXplPVwiZmx1aWRcIiBbdHJhbnNmb3JtXT1cIiFpc1RvZ2dsZXJFeHBhbmRlZCA/ICdyb3RhdGUtMTgwJyA6ICcnXCI+PC9lY2wtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG5cblxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJlY2wtdGltZWxpbmUtaXRlbS10b2dnbGVyXCI+PC9uZy1jb250ZW50PlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG59XG5AZWxzZSB7XG4gICAgPGRpdiBjbGFzcz1cImVjbC10aW1lbGluZV9fdG9vbHRpcFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZWNsLXRpbWVsaW5lX190b29sdGlwLWFycm93XCI+PC9kaXY+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltlY2xUaW1lbGluZUl0ZW1MYWJlbF1cIj48L25nLWNvbnRlbnQ+XG5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2VjbFRpbWVsaW5lSXRlbVRpdGxlXVwiPjwvbmctY29udGVudD5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZWNsLXRpbWVsaW5lX19jb250ZW50XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbn1cblxuPG5nLXRlbXBsYXRlICNjb250ZW50PlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|