@skyux/tabs 11.11.1 → 11.12.0
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/documentation.json +393 -393
- package/esm2022/lib/modules/sectioned-form/sectioned-form-section.component.mjs +2 -2
- package/esm2022/lib/modules/sectioned-form/sectioned-form.component.mjs +3 -3
- package/esm2022/lib/modules/tabs/tab-button.component.mjs +2 -2
- package/esm2022/lib/modules/tabs/tabset-permalink.service.mjs +22 -25
- package/esm2022/lib/modules/tabs/tabset.component.mjs +3 -3
- package/esm2022/lib/modules/vertical-tabset/vertical-tab.component.mjs +2 -2
- package/esm2022/lib/modules/vertical-tabset/vertical-tabset-group.component.mjs +3 -3
- package/esm2022/lib/modules/vertical-tabset/vertical-tabset.component.mjs +3 -3
- package/fesm2022/skyux-tabs.mjs +37 -40
- package/fesm2022/skyux-tabs.mjs.map +1 -1
- package/lib/modules/tabs/tabset-permalink.service.d.ts +0 -3
- package/package.json +10 -10
|
@@ -442,7 +442,7 @@ export class SkyTabsetComponent {
|
|
|
442
442
|
SkyTabsetAdapterService,
|
|
443
443
|
SkyTabsetPermalinkService,
|
|
444
444
|
SkyTabsetService,
|
|
445
|
-
], queries: [{ propertyName: "tabs", predicate: SkyTabComponent }], ngImport: i0, template: "<div\n class=\"sky-tabset\"\n role=\"tablist\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [ngClass]=\"\n 'sky-tabset-mode-' + tabDisplayMode + ' sky-tabset-style-' + tabStyle\n \"\n (window:resize)=\"onWindowResize()\"\n (keydown.arrowright)=\"onRightKeyDown()\"\n (keydown.arrowleft)=\"onLeftKeyDown()\"\n (keydown.home)=\"onHomeKeyDown()\"\n (keydown.end)=\"onEndKeyDown()\"\n>\n <span class=\"sky-tabset-dropdown\">\n @if (tabDisplayMode === 'dropdown') {\n <sky-dropdown buttonType=\"tab\">\n <sky-dropdown-button>\n {{ dropdownTriggerButtonText }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n @for (tabButton of tabButtons; track tabButton) {\n <sky-dropdown-item class=\"sky-tab-dropdown-menu-item\">\n <div\n class=\"sky-tab-dropdown-item\"\n [ngClass]=\"{\n 'sky-tab-dropdown-item-selected': tabButton.active\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n tabButtonTemplate;\n context: {\n $implicit: tabButton\n }\n \"\n />\n </div>\n </sky-dropdown-item>\n }\n </sky-dropdown-menu>\n </sky-dropdown>\n }\n </span>\n <span class=\"sky-tabset-tabs\">\n @for (tabButton of tabButtons; track tabButton) {\n <ng-container\n *ngTemplateOutlet=\"\n tabButtonTemplate;\n context: {\n $implicit: tabButton\n }\n \"\n />\n }\n </span>\n <span class=\"sky-tabset-btns\">\n @if (newTab.observers.length > 0) {\n <button\n class=\"sky-btn sky-btn-icon sky-tabset-btn-new sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_add' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onNewTabClick()\"\n >\n <sky-icon icon=\"plus-circle\" size=\"lg\" />\n </button>\n }\n @if (openTab.observers.length > 0) {\n <button\n class=\"sky-btn sky-btn-icon sky-tabset-btn-open sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_open' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onOpenTabClick()\"\n >\n <sky-icon icon=\"folder-open-o\" size=\"lg\" />\n </button>\n }\n </span>\n</div>\n<ng-content />\n\n<ng-template #tabButtonTemplate let-tabButton>\n <sky-tab-button\n [active]=\"tabButton.active\"\n [ariaControls]=\"tabButton.ariaControls\"\n [buttonHref]=\"tabButton.buttonHref\"\n [buttonId]=\"tabButton.buttonId\"\n [buttonText]=\"tabButton.buttonText\"\n [buttonTextCount]=\"tabButton.buttonTextCount\"\n [closeable]=\"tabButton.closeable\"\n [disabled]=\"tabButton.disabled\"\n [tabIndex]=\"tabButton.tabIndex\"\n [tabStyle]=\"tabStyle\"\n [tabNumber]=\"tabButton.tabNumber\"\n [totalTabsCount]=\"tabButton.totalTabsCount\"\n (buttonClick)=\"onTabButtonClick(tabButton)\"\n (closeClick)=\"onTabCloseClick(tabButton)\"\n />\n</ng-template>\n", styles: ["sky-tabset.sky-tabset-layout-fit{position:absolute;inset:0;display:flex;flex-direction:column}sky-tabset.sky-tabset-layout-fit .sky-tabset{flex-grow:0}.sky-tabset{--sky-tabset-margin: 0;align-items:center;border-bottom:2px solid #0974a1;display:flex;list-style-type:none;margin:var(--sky-tabset-margin);padding:0 0 0 var(--sky-layout-host-tab-content-spacing, 15px);white-space:nowrap;flex-grow:var(--sky-layout-host-content-flex-grow, 0);overflow:var(--sky-layout-host-content-overflow, hidden);position:var(--sky-layout-host-content-position, static)}.sky-tabset.sky-tabset-style-wizard{border-bottom:none;padding-left:0}.sky-modal-content .sky-tabset-style-tabs{--sky-tabset-margin: 0 -15px 20px}.sky-modal-content .sky-tabset-style-wizard{--sky-tabset-margin: 0 0 20px}.sky-tabset-btns{order:1;padding-left:10px}.sky-tabset-dropdown{order:0;max-width:100%}.sky-tabset-mode-dropdown{line-height:0}.sky-tabset-mode-dropdown .sky-tabset-tabs{visibility:hidden;order:2}.sky-tab-dropdown-menu-item sky-tab-button{display:flex;min-width:300px}.sky-tab-dropdown-menu-item .sky-dropdown-item{margin:0}.sky-tab-dropdown-menu-item .sky-btn-tab-wrapper{width:100%;margin-right:0}.sky-tab-dropdown-menu-item .sky-btn-tab{margin:0;border-radius:0;width:100%;display:flex}.sky-tab-dropdown-menu-item .sky-btn-tab>.sky-tab-heading{flex:1 1 auto}.sky-tab-dropdown-menu-item .sky-btn-tab>.sky-btn-tab-close{flex:0 1 auto}.sky-tabset-tabs{order:0;white-space:nowrap}.sky-tabset-btn-new,.sky-tabset-btn-open{color:#0974a1}.sky-theme-modern .sky-modal-content .sky-tabset{--sky-tabset-margin: -10px -30px 30px;padding-left:30px;padding-right:30px}.sky-theme-modern .sky-tabset{border-bottom:1px solid #d2d2d2;overflow:visible}.sky-theme-modern .sky-tab-dropdown-menu-item .sky-btn-tab-wrapper{margin-right:0}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.λ2, selector: "sky-dropdown-button" }, { kind: "component", type: i5.λ3, selector: "sky-dropdown", inputs: ["buttonStyle", "buttonType", "disabled", "label", "horizontalAlignment", "messageStream", "title", "trigger"] }, { kind: "component", type: i5.λ1, selector: "sky-dropdown-item", inputs: ["ariaRole"] }, { kind: "component", type: i5.λ4, selector: "sky-dropdown-menu", inputs: ["ariaLabelledBy", "ariaRole", "useNativeFocus"], outputs: ["menuChanges"] }, { kind: "component", type: i6.λ1, selector: "sky-icon", inputs: ["icon", "iconName", "iconType", "size", "fixedWidth", "variant"] }, { kind: "directive", type: i7.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }, { kind: "component", type: i8.SkyTabButtonComponent, selector: "sky-tab-button", inputs: ["active", "ariaControls", "buttonHref", "buttonId", "buttonText", "buttonTextCount", "closeable", "disabled", "tabIndex", "tabNumber", "totalTabsCount", "tabStyle"], outputs: ["buttonClick", "closeClick"] }, { kind: "pipe", type: i9.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
445
|
+
], queries: [{ propertyName: "tabs", predicate: SkyTabComponent }], ngImport: i0, template: "<div\n class=\"sky-tabset\"\n role=\"tablist\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [ngClass]=\"\n 'sky-tabset-mode-' + tabDisplayMode + ' sky-tabset-style-' + tabStyle\n \"\n (window:resize)=\"onWindowResize()\"\n (keydown.arrowright)=\"onRightKeyDown()\"\n (keydown.arrowleft)=\"onLeftKeyDown()\"\n (keydown.home)=\"onHomeKeyDown()\"\n (keydown.end)=\"onEndKeyDown()\"\n>\n <span class=\"sky-tabset-dropdown\">\n @if (tabDisplayMode === 'dropdown') {\n <sky-dropdown buttonType=\"tab\">\n <sky-dropdown-button>\n {{ dropdownTriggerButtonText }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n @for (tabButton of tabButtons; track tabButton.buttonId) {\n <sky-dropdown-item class=\"sky-tab-dropdown-menu-item\">\n <div\n class=\"sky-tab-dropdown-item\"\n [ngClass]=\"{\n 'sky-tab-dropdown-item-selected': tabButton.active\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n tabButtonTemplate;\n context: {\n $implicit: tabButton\n }\n \"\n />\n </div>\n </sky-dropdown-item>\n }\n </sky-dropdown-menu>\n </sky-dropdown>\n }\n </span>\n <span class=\"sky-tabset-tabs\">\n @for (tabButton of tabButtons; track tabButton.buttonId) {\n <ng-container\n *ngTemplateOutlet=\"\n tabButtonTemplate;\n context: {\n $implicit: tabButton\n }\n \"\n />\n }\n </span>\n <span class=\"sky-tabset-btns\">\n @if (newTab.observers.length > 0) {\n <button\n class=\"sky-btn sky-btn-icon sky-tabset-btn-new sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_add' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onNewTabClick()\"\n >\n <sky-icon icon=\"plus-circle\" size=\"lg\" />\n </button>\n }\n @if (openTab.observers.length > 0) {\n <button\n class=\"sky-btn sky-btn-icon sky-tabset-btn-open sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_open' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onOpenTabClick()\"\n >\n <sky-icon icon=\"folder-open-o\" size=\"lg\" />\n </button>\n }\n </span>\n</div>\n<ng-content />\n\n<ng-template #tabButtonTemplate let-tabButton>\n <sky-tab-button\n [active]=\"tabButton.active\"\n [ariaControls]=\"tabButton.ariaControls\"\n [buttonHref]=\"tabButton.buttonHref\"\n [buttonId]=\"tabButton.buttonId\"\n [buttonText]=\"tabButton.buttonText\"\n [buttonTextCount]=\"tabButton.buttonTextCount\"\n [closeable]=\"tabButton.closeable\"\n [disabled]=\"tabButton.disabled\"\n [tabIndex]=\"tabButton.tabIndex\"\n [tabStyle]=\"tabStyle\"\n [tabNumber]=\"tabButton.tabNumber\"\n [totalTabsCount]=\"tabButton.totalTabsCount\"\n (buttonClick)=\"onTabButtonClick(tabButton)\"\n (closeClick)=\"onTabCloseClick(tabButton)\"\n />\n</ng-template>\n", styles: ["sky-tabset.sky-tabset-layout-fit{position:absolute;inset:0;display:flex;flex-direction:column}sky-tabset.sky-tabset-layout-fit .sky-tabset{flex-grow:0}.sky-tabset{--sky-tabset-margin: 0;align-items:center;border-bottom:2px solid #0974a1;display:flex;list-style-type:none;margin:var(--sky-tabset-margin);padding:0 0 0 var(--sky-layout-host-tab-content-spacing, 15px);white-space:nowrap;flex-grow:var(--sky-layout-host-content-flex-grow, 0);overflow:var(--sky-layout-host-content-overflow, hidden);position:var(--sky-layout-host-content-position, static)}.sky-tabset.sky-tabset-style-wizard{border-bottom:none;padding-left:0}.sky-modal-content .sky-tabset-style-tabs{--sky-tabset-margin: 0 -15px 20px}.sky-modal-content .sky-tabset-style-wizard{--sky-tabset-margin: 0 0 20px}.sky-tabset-btns{order:1;padding-left:10px}.sky-tabset-dropdown{order:0;max-width:100%}.sky-tabset-mode-dropdown{line-height:0}.sky-tabset-mode-dropdown .sky-tabset-tabs{visibility:hidden;order:2}.sky-tab-dropdown-menu-item sky-tab-button{display:flex;min-width:300px}.sky-tab-dropdown-menu-item .sky-dropdown-item{margin:0}.sky-tab-dropdown-menu-item .sky-btn-tab-wrapper{width:100%;margin-right:0}.sky-tab-dropdown-menu-item .sky-btn-tab{margin:0;border-radius:0;width:100%;display:flex}.sky-tab-dropdown-menu-item .sky-btn-tab>.sky-tab-heading{flex:1 1 auto}.sky-tab-dropdown-menu-item .sky-btn-tab>.sky-btn-tab-close{flex:0 1 auto}.sky-tabset-tabs{order:0;white-space:nowrap}.sky-tabset-btn-new,.sky-tabset-btn-open{color:#0974a1}.sky-theme-modern .sky-modal-content .sky-tabset{--sky-tabset-margin: -10px -30px 30px;padding-left:30px;padding-right:30px}.sky-theme-modern .sky-tabset{border-bottom:1px solid #d2d2d2;overflow:visible}.sky-theme-modern .sky-tab-dropdown-menu-item .sky-btn-tab-wrapper{margin-right:0}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.λ2, selector: "sky-dropdown-button" }, { kind: "component", type: i5.λ3, selector: "sky-dropdown", inputs: ["buttonStyle", "buttonType", "disabled", "label", "horizontalAlignment", "messageStream", "title", "trigger"] }, { kind: "component", type: i5.λ1, selector: "sky-dropdown-item", inputs: ["ariaRole"] }, { kind: "component", type: i5.λ4, selector: "sky-dropdown-menu", inputs: ["ariaLabelledBy", "ariaRole", "useNativeFocus"], outputs: ["menuChanges"] }, { kind: "component", type: i6.λ1, selector: "sky-icon", inputs: ["icon", "iconName", "iconType", "size", "fixedWidth", "variant"] }, { kind: "directive", type: i7.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }, { kind: "component", type: i8.SkyTabButtonComponent, selector: "sky-tab-button", inputs: ["active", "ariaControls", "buttonHref", "buttonId", "buttonText", "buttonTextCount", "closeable", "disabled", "tabIndex", "tabNumber", "totalTabsCount", "tabStyle"], outputs: ["buttonClick", "closeClick"] }, { kind: "pipe", type: i9.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
446
446
|
}
|
|
447
447
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SkyTabsetComponent, decorators: [{
|
|
448
448
|
type: Component,
|
|
@@ -450,7 +450,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
450
450
|
SkyTabsetAdapterService,
|
|
451
451
|
SkyTabsetPermalinkService,
|
|
452
452
|
SkyTabsetService,
|
|
453
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div\n class=\"sky-tabset\"\n role=\"tablist\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [ngClass]=\"\n 'sky-tabset-mode-' + tabDisplayMode + ' sky-tabset-style-' + tabStyle\n \"\n (window:resize)=\"onWindowResize()\"\n (keydown.arrowright)=\"onRightKeyDown()\"\n (keydown.arrowleft)=\"onLeftKeyDown()\"\n (keydown.home)=\"onHomeKeyDown()\"\n (keydown.end)=\"onEndKeyDown()\"\n>\n <span class=\"sky-tabset-dropdown\">\n @if (tabDisplayMode === 'dropdown') {\n <sky-dropdown buttonType=\"tab\">\n <sky-dropdown-button>\n {{ dropdownTriggerButtonText }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n @for (tabButton of tabButtons; track tabButton) {\n <sky-dropdown-item class=\"sky-tab-dropdown-menu-item\">\n <div\n class=\"sky-tab-dropdown-item\"\n [ngClass]=\"{\n 'sky-tab-dropdown-item-selected': tabButton.active\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n tabButtonTemplate;\n context: {\n $implicit: tabButton\n }\n \"\n />\n </div>\n </sky-dropdown-item>\n }\n </sky-dropdown-menu>\n </sky-dropdown>\n }\n </span>\n <span class=\"sky-tabset-tabs\">\n @for (tabButton of tabButtons; track tabButton) {\n <ng-container\n *ngTemplateOutlet=\"\n tabButtonTemplate;\n context: {\n $implicit: tabButton\n }\n \"\n />\n }\n </span>\n <span class=\"sky-tabset-btns\">\n @if (newTab.observers.length > 0) {\n <button\n class=\"sky-btn sky-btn-icon sky-tabset-btn-new sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_add' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onNewTabClick()\"\n >\n <sky-icon icon=\"plus-circle\" size=\"lg\" />\n </button>\n }\n @if (openTab.observers.length > 0) {\n <button\n class=\"sky-btn sky-btn-icon sky-tabset-btn-open sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_open' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onOpenTabClick()\"\n >\n <sky-icon icon=\"folder-open-o\" size=\"lg\" />\n </button>\n }\n </span>\n</div>\n<ng-content />\n\n<ng-template #tabButtonTemplate let-tabButton>\n <sky-tab-button\n [active]=\"tabButton.active\"\n [ariaControls]=\"tabButton.ariaControls\"\n [buttonHref]=\"tabButton.buttonHref\"\n [buttonId]=\"tabButton.buttonId\"\n [buttonText]=\"tabButton.buttonText\"\n [buttonTextCount]=\"tabButton.buttonTextCount\"\n [closeable]=\"tabButton.closeable\"\n [disabled]=\"tabButton.disabled\"\n [tabIndex]=\"tabButton.tabIndex\"\n [tabStyle]=\"tabStyle\"\n [tabNumber]=\"tabButton.tabNumber\"\n [totalTabsCount]=\"tabButton.totalTabsCount\"\n (buttonClick)=\"onTabButtonClick(tabButton)\"\n (closeClick)=\"onTabCloseClick(tabButton)\"\n />\n</ng-template>\n", styles: ["sky-tabset.sky-tabset-layout-fit{position:absolute;inset:0;display:flex;flex-direction:column}sky-tabset.sky-tabset-layout-fit .sky-tabset{flex-grow:0}.sky-tabset{--sky-tabset-margin: 0;align-items:center;border-bottom:2px solid #0974a1;display:flex;list-style-type:none;margin:var(--sky-tabset-margin);padding:0 0 0 var(--sky-layout-host-tab-content-spacing, 15px);white-space:nowrap;flex-grow:var(--sky-layout-host-content-flex-grow, 0);overflow:var(--sky-layout-host-content-overflow, hidden);position:var(--sky-layout-host-content-position, static)}.sky-tabset.sky-tabset-style-wizard{border-bottom:none;padding-left:0}.sky-modal-content .sky-tabset-style-tabs{--sky-tabset-margin: 0 -15px 20px}.sky-modal-content .sky-tabset-style-wizard{--sky-tabset-margin: 0 0 20px}.sky-tabset-btns{order:1;padding-left:10px}.sky-tabset-dropdown{order:0;max-width:100%}.sky-tabset-mode-dropdown{line-height:0}.sky-tabset-mode-dropdown .sky-tabset-tabs{visibility:hidden;order:2}.sky-tab-dropdown-menu-item sky-tab-button{display:flex;min-width:300px}.sky-tab-dropdown-menu-item .sky-dropdown-item{margin:0}.sky-tab-dropdown-menu-item .sky-btn-tab-wrapper{width:100%;margin-right:0}.sky-tab-dropdown-menu-item .sky-btn-tab{margin:0;border-radius:0;width:100%;display:flex}.sky-tab-dropdown-menu-item .sky-btn-tab>.sky-tab-heading{flex:1 1 auto}.sky-tab-dropdown-menu-item .sky-btn-tab>.sky-btn-tab-close{flex:0 1 auto}.sky-tabset-tabs{order:0;white-space:nowrap}.sky-tabset-btn-new,.sky-tabset-btn-open{color:#0974a1}.sky-theme-modern .sky-modal-content .sky-tabset{--sky-tabset-margin: -10px -30px 30px;padding-left:30px;padding-right:30px}.sky-theme-modern .sky-tabset{border-bottom:1px solid #d2d2d2;overflow:visible}.sky-theme-modern .sky-tab-dropdown-menu-item .sky-btn-tab-wrapper{margin-right:0}\n"] }]
|
|
453
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div\n class=\"sky-tabset\"\n role=\"tablist\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [ngClass]=\"\n 'sky-tabset-mode-' + tabDisplayMode + ' sky-tabset-style-' + tabStyle\n \"\n (window:resize)=\"onWindowResize()\"\n (keydown.arrowright)=\"onRightKeyDown()\"\n (keydown.arrowleft)=\"onLeftKeyDown()\"\n (keydown.home)=\"onHomeKeyDown()\"\n (keydown.end)=\"onEndKeyDown()\"\n>\n <span class=\"sky-tabset-dropdown\">\n @if (tabDisplayMode === 'dropdown') {\n <sky-dropdown buttonType=\"tab\">\n <sky-dropdown-button>\n {{ dropdownTriggerButtonText }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n @for (tabButton of tabButtons; track tabButton.buttonId) {\n <sky-dropdown-item class=\"sky-tab-dropdown-menu-item\">\n <div\n class=\"sky-tab-dropdown-item\"\n [ngClass]=\"{\n 'sky-tab-dropdown-item-selected': tabButton.active\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n tabButtonTemplate;\n context: {\n $implicit: tabButton\n }\n \"\n />\n </div>\n </sky-dropdown-item>\n }\n </sky-dropdown-menu>\n </sky-dropdown>\n }\n </span>\n <span class=\"sky-tabset-tabs\">\n @for (tabButton of tabButtons; track tabButton.buttonId) {\n <ng-container\n *ngTemplateOutlet=\"\n tabButtonTemplate;\n context: {\n $implicit: tabButton\n }\n \"\n />\n }\n </span>\n <span class=\"sky-tabset-btns\">\n @if (newTab.observers.length > 0) {\n <button\n class=\"sky-btn sky-btn-icon sky-tabset-btn-new sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_add' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onNewTabClick()\"\n >\n <sky-icon icon=\"plus-circle\" size=\"lg\" />\n </button>\n }\n @if (openTab.observers.length > 0) {\n <button\n class=\"sky-btn sky-btn-icon sky-tabset-btn-open sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_open' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onOpenTabClick()\"\n >\n <sky-icon icon=\"folder-open-o\" size=\"lg\" />\n </button>\n }\n </span>\n</div>\n<ng-content />\n\n<ng-template #tabButtonTemplate let-tabButton>\n <sky-tab-button\n [active]=\"tabButton.active\"\n [ariaControls]=\"tabButton.ariaControls\"\n [buttonHref]=\"tabButton.buttonHref\"\n [buttonId]=\"tabButton.buttonId\"\n [buttonText]=\"tabButton.buttonText\"\n [buttonTextCount]=\"tabButton.buttonTextCount\"\n [closeable]=\"tabButton.closeable\"\n [disabled]=\"tabButton.disabled\"\n [tabIndex]=\"tabButton.tabIndex\"\n [tabStyle]=\"tabStyle\"\n [tabNumber]=\"tabButton.tabNumber\"\n [totalTabsCount]=\"tabButton.totalTabsCount\"\n (buttonClick)=\"onTabButtonClick(tabButton)\"\n (closeClick)=\"onTabCloseClick(tabButton)\"\n />\n</ng-template>\n", styles: ["sky-tabset.sky-tabset-layout-fit{position:absolute;inset:0;display:flex;flex-direction:column}sky-tabset.sky-tabset-layout-fit .sky-tabset{flex-grow:0}.sky-tabset{--sky-tabset-margin: 0;align-items:center;border-bottom:2px solid #0974a1;display:flex;list-style-type:none;margin:var(--sky-tabset-margin);padding:0 0 0 var(--sky-layout-host-tab-content-spacing, 15px);white-space:nowrap;flex-grow:var(--sky-layout-host-content-flex-grow, 0);overflow:var(--sky-layout-host-content-overflow, hidden);position:var(--sky-layout-host-content-position, static)}.sky-tabset.sky-tabset-style-wizard{border-bottom:none;padding-left:0}.sky-modal-content .sky-tabset-style-tabs{--sky-tabset-margin: 0 -15px 20px}.sky-modal-content .sky-tabset-style-wizard{--sky-tabset-margin: 0 0 20px}.sky-tabset-btns{order:1;padding-left:10px}.sky-tabset-dropdown{order:0;max-width:100%}.sky-tabset-mode-dropdown{line-height:0}.sky-tabset-mode-dropdown .sky-tabset-tabs{visibility:hidden;order:2}.sky-tab-dropdown-menu-item sky-tab-button{display:flex;min-width:300px}.sky-tab-dropdown-menu-item .sky-dropdown-item{margin:0}.sky-tab-dropdown-menu-item .sky-btn-tab-wrapper{width:100%;margin-right:0}.sky-tab-dropdown-menu-item .sky-btn-tab{margin:0;border-radius:0;width:100%;display:flex}.sky-tab-dropdown-menu-item .sky-btn-tab>.sky-tab-heading{flex:1 1 auto}.sky-tab-dropdown-menu-item .sky-btn-tab>.sky-btn-tab-close{flex:0 1 auto}.sky-tabset-tabs{order:0;white-space:nowrap}.sky-tabset-btn-new,.sky-tabset-btn-open{color:#0974a1}.sky-theme-modern .sky-modal-content .sky-tabset{--sky-tabset-margin: -10px -30px 30px;padding-left:30px;padding-right:30px}.sky-theme-modern .sky-tabset{border-bottom:1px solid #d2d2d2;overflow:visible}.sky-theme-modern .sky-tab-dropdown-menu-item .sky-btn-tab-wrapper{margin-right:0}\n"] }]
|
|
454
454
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.SkyTabsetAdapterService }, { type: i2.SkyTabsetPermalinkService }, { type: i3.SkyTabsetService }], propDecorators: { active: [{
|
|
455
455
|
type: Input
|
|
456
456
|
}], ariaLabel: [{
|
|
@@ -476,4 +476,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
476
476
|
type: HostBinding,
|
|
477
477
|
args: ['class']
|
|
478
478
|
}] } });
|
|
479
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFic2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy90YWJzL3RhYnNldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFicy9zcmMvbGliL21vZHVsZXMvdGFicy90YWJzZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLE1BQU0sRUFFTixpQkFBaUIsRUFDakIsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS2pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUd2RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFjcEQsTUFBTSxPQUFPLGtCQUFrQjtJQUM3Qjs7T0FFRztJQUNILElBQ1csTUFBTSxDQUFDLEtBQThCO1FBQzlDLElBQ0UsS0FBSyxLQUFLLFNBQVM7WUFDbkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsRUFD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QyxpQkFBaUIsQ0FBQyxJQUFJOzROQU8xQixNQUFNO3NCQURoQixLQUFLO2dCQXdDQyxTQUFTO3NCQURmLEtBQUs7Z0JBV0MsY0FBYztzQkFEcEIsS0FBSztnQkFXSyxXQUFXO3NCQURyQixLQUFLO2dCQW1CSyxRQUFRO3NCQURsQixLQUFLO2dCQWFDLFlBQVk7c0JBRGxCLE1BQU07Z0JBU0EsTUFBTTtzQkFEWixNQUFNO2dCQVNBLE9BQU87c0JBRGIsTUFBTTtnQkFRQSxnQkFBZ0I7c0JBRHRCLE1BQU07Z0JBYUksSUFBSTtzQkFEZCxlQUFlO3VCQUFDLGVBQWU7Z0JBaUJ6QixRQUFRO3NCQURkLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUxheW91dEhvc3RTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCByYWNlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBUYWJCdXR0b25WaWV3TW9kZWwgfSBmcm9tICcuL3RhYi1idXR0b24tdmlldy1tb2RlbCc7XG5pbXBvcnQgeyBTa3lUYWJJbmRleCB9IGZyb20gJy4vdGFiLWluZGV4JztcbmltcG9ydCB7IFNreVRhYkxheW91dFR5cGUgfSBmcm9tICcuL3RhYi1sYXlvdXQtdHlwZSc7XG5pbXBvcnQgeyBTa3lUYWJDb21wb25lbnQgfSBmcm9tICcuL3RhYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5VGFic2V0QWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL3RhYnNldC1hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5VGFic2V0QnV0dG9uc0Rpc3BsYXlNb2RlIH0gZnJvbSAnLi90YWJzZXQtYnV0dG9ucy1kaXNwbGF5LW1vZGUnO1xuaW1wb3J0IHsgU2t5VGFic2V0UGVybWFsaW5rU2VydmljZSB9IGZyb20gJy4vdGFic2V0LXBlcm1hbGluay5zZXJ2aWNlJztcbmltcG9ydCB7IFNreVRhYnNldFN0eWxlIH0gZnJvbSAnLi90YWJzZXQtc3R5bGUnO1xuaW1wb3J0IHsgU2t5VGFic2V0VGFiSW5kZXhlc0NoYW5nZSB9IGZyb20gJy4vdGFic2V0LXRhYi1pbmRleGVzLWNoYW5nZSc7XG5pbXBvcnQgeyBTa3lUYWJzZXRTZXJ2aWNlIH0gZnJvbSAnLi90YWJzZXQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS10YWJzZXQnLFxuICBzdHlsZVVybHM6IFsnLi90YWJzZXQuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYnNldC5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIFNreVRhYnNldEFkYXB0ZXJTZXJ2aWNlLFxuICAgIFNreVRhYnNldFBlcm1hbGlua1NlcnZpY2UsXG4gICAgU2t5VGFic2V0U2VydmljZSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFNreVRhYnNldENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBBY3RpdmF0ZXMgYSB0YWIgYnkgaXRzIGB0YWJJbmRleGAgcHJvcGVydHkuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGFjdGl2ZSh2YWx1ZTogU2t5VGFiSW5kZXggfCB1bmRlZmluZWQpIHtcbiAgICBpZiAoXG4gICAgICB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLnRhYkluZGV4ZXNFcXVhbCh2YWx1ZSwgdGhpcy4jX2FjdGl2ZSlcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLiNfYWN0aXZlID0gdmFsdWU7XG5cbiAgICBpZiAodGhpcy50YWJzKSB7XG4gICAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLnNldEFjdGl2ZVRhYkluZGV4KHsgdGFiSW5kZXg6IHZhbHVlIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBPbiBpbml0LCB3YWl0IGZvciBjaGlsZHJlbiB0YWJzIHRvIHJlbmRlciBiZWZvcmUgYnJvYWRjYXN0aW5nIHRoZSBhY3RpdmUgdGFiIGluZGV4LlxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLiN0YWJzZXRTZXJ2aWNlLmlzVmFsaWRUYWJJbmRleCh2YWx1ZSkpIHtcbiAgICAgICAgICAvLyBPbiBpbml0LCB5aWVsZCB0byB0aGUgcGVybWFsaW5rIElELCBpZiBpdCBleGlzdHMuXG4gICAgICAgICAgaWYgKHRoaXMuI2dldEFjdGl2ZVRhYkluZGV4QnlQZXJtYWxpbmtJZCgpID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuI3RhYnNldFNlcnZpY2Uuc2V0QWN0aXZlVGFiSW5kZXgoeyB0YWJJbmRleDogdmFsdWUgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEFjdGl2YXRlIHRoZSBmaXJzdCB0YWIgaWYgdGhlIG5ldyB0YWIgaW5kZXggaXMgaW52YWxpZC5cbiAgICAgICAgICB0aGlzLiNfYWN0aXZlID0gdGhpcy4jdGFic2V0U2VydmljZS5hY3RpdmF0ZUZpcnN0VGFiKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWN0aXZlKCk6IFNreVRhYkluZGV4IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2FjdGl2ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgQVJJQSBsYWJlbCBmb3IgdGhlIHRhYnNldC4gVGhpcyBzZXRzIHRoZSB0YWJzZXQncyBgYXJpYS1sYWJlbGAgYXR0cmlidXRlIHRvIHByb3ZpZGUgYSB0ZXh0IGVxdWl2YWxlbnQgZm9yIHNjcmVlbiByZWFkZXJzXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkuXG4gICAqIElmIHRoZSB0YWJzZXQgaW5jbHVkZXMgYSB2aXNpYmxlIGxhYmVsLCB1c2UgYGFyaWFMYWJlbGxlZEJ5YCBpbnN0ZWFkLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYGFyaWEtbGFiZWxgIGF0dHJpYnV0ZSwgc2VlIHRoZSBbV0FJLUFSSUEgZGVmaW5pdGlvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLyNhcmlhLWxhYmVsKS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIEhUTUwgZWxlbWVudCBJRCBvZiB0aGUgZWxlbWVudCB0aGF0IGxhYmVsc1xuICAgKiB0aGUgdGFic2V0LiBUaGlzIHNldHMgdGhlIHRhYnNldCdzIGBhcmlhLWxhYmVsbGVkYnlgIGF0dHJpYnV0ZSB0byBwcm92aWRlIGEgdGV4dCBlcXVpdmFsZW50IGZvciBzY3JlZW4gcmVhZGVyc1xuICAgKiBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2FjY2Vzc2liaWxpdHkpLlxuICAgKiBJZiB0aGUgdGFic2V0IGRvZXMgbm90IGluY2x1ZGUgYSB2aXNpYmxlIGxhYmVsLCB1c2UgYGFyaWFMYWJlbGAgaW5zdGVhZC5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGBhcmlhLWxhYmVsbGVkYnlgIGF0dHJpYnV0ZSwgc2VlIHRoZSBbV0FJLUFSSUEgZGVmaW5pdGlvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLyNhcmlhLWxhYmVsbGVkYnkpLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFyaWFMYWJlbGxlZEJ5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIERpc3Rpbmd1aXNoZXMgYSB0YWJzZXQncyB1bmlxdWUgc3RhdGUgaW4gdGhlIFVSTCBieSBnZW5lcmF0aW5nIGEgcXVlcnkgcGFyYW1ldGVyXG4gICAqIHRoYXQgaXMgd3JpdHRlbiBhcyBgPzxxdWVyeVBhcmFtPi1hY3RpdmUtdGFiPTxzYW5pdGl6ZWQtdGFiLWhlYWRpbmc+YC5cbiAgICogVGhlIHF1ZXJ5IHBhcmFtZXRlcidzIHZhbHVlIGlzIHBhcnNlZCBhdXRvbWF0aWNhbGx5IGZyb20gdGhlIHNlbGVjdGVkIHRhYidzIGhlYWRpbmcgdGV4dCxcbiAgICogYnV0IHlvdSBjYW4gc3VwcGx5IGEgY3VzdG9tIHF1ZXJ5IHBhcmFtZXRlciB2YWx1ZSBmb3IgZWFjaCB0YWIgd2l0aCBpdHMgYHBlcm1hbGlua1ZhbHVlYC5cbiAgICogVGhpcyBpbnB1dCBvbmx5IGFwcGxpZXMgd2hlbiBgdGFiU3R5bGVgIGlzIGBcInRhYnNcImBcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgcGVybWFsaW5rSWQodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHRoaXMuI19wZXJtYWxpbmtJZCA9ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzYW5pdGl6ZWQgPSB0aGlzLiNwZXJtYWxpbmtTZXJ2aWNlLnVybGlmeSh2YWx1ZSk7XG4gICAgICB0aGlzLiNfcGVybWFsaW5rSWQgPSBgJHtzYW5pdGl6ZWR9LWFjdGl2ZS10YWJgO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGVybWFsaW5rSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy4jX3Blcm1hbGlua0lkO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiZWhhdmlvciBmb3IgYSBzZXJpZXMgb2YgdGFicy5cbiAgICogQGRlZmF1bHQgXCJ0YWJzXCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdGFiU3R5bGUodmFsdWU6IFNreVRhYnNldFN0eWxlIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX3RhYlN0eWxlID0gdmFsdWUgfHwgJ3RhYnMnO1xuICB9XG5cbiAgcHVibGljIGdldCB0YWJTdHlsZSgpOiBTa3lUYWJzZXRTdHlsZSB7XG4gICAgcmV0dXJuIHRoaXMuI190YWJTdHlsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBhY3RpdmUgdGFiIGNoYW5nZXMuIFRoaXMgZXZlbnQgZW1pdHMgdGhlIGluZGV4IG9mIHRoZSBhY3RpdmUgdGFiLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBhY3RpdmVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNreVRhYkluZGV4PigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIGNsaWNrIHRoZSBidXR0b24gdG8gYWRkIGEgbmV3IHRhYi5cbiAgICogVGhlIG5ldyB0YWIgYnV0dG9uIGlzIGFkZGVkIHRvIHRoZSB0YWIgYXJlYSB3aGVuIHlvdSBzcGVjaWZ5IGEgbGlzdGVuZXIgZm9yIHRoaXMgZXZlbnQuXG4gICAqIFRoaXMgZXZlbnQgb25seSBhcHBsaWVzIHdoZW4gYHRhYlN0eWxlYCBpcyBgXCJ0YWJzXCJgLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBuZXdUYWIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgY2xpY2sgdGhlIGJ1dHRvbiB0byBvcGVuIGEgdGFiLlxuICAgKiBUaGUgb3BlbiB0YWIgYnV0dG9uIGlzIGFkZGVkIHRvIHRoZSB0YWIgYXJlYSB3aGVuIHlvdSBzcGVjaWZ5IGEgbGlzdGVuZXIgZm9yIHRoaXMgZXZlbnQuXG4gICAqIFRoaXMgZXZlbnQgb25seSBhcHBsaWVzIHdoZW4gYHRhYlN0eWxlYCBpcyBgXCJ0YWJzXCJgLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBvcGVuVGFiID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIGFueSB0YWIncyBgdGFiSW5kZXhgIHZhbHVlIGNoYW5nZXMuXG4gICAqIFRoaXMgZXZlbnQgb25seSBhcHBsaWVzIHdoZW4gYHRhYlN0eWxlYCBpcyBgXCJ0YWJzXCJgLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyB0YWJJbmRleGVzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lUYWJzZXRUYWJJbmRleGVzQ2hhbmdlPigpO1xuXG4gIHB1YmxpYyBzZXQgdGFiRGlzcGxheU1vZGUodmFsdWU6IFNreVRhYnNldEJ1dHRvbnNEaXNwbGF5TW9kZSkge1xuICAgIHRoaXMuI190YWJEaXNwbGF5TW9kZSA9IHZhbHVlO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGdldCB0YWJEaXNwbGF5TW9kZSgpOiBTa3lUYWJzZXRCdXR0b25zRGlzcGxheU1vZGUge1xuICAgIHJldHVybiB0aGlzLiNfdGFiRGlzcGxheU1vZGU7XG4gIH1cblxuICBAQ29udGVudENoaWxkcmVuKFNreVRhYkNvbXBvbmVudClcbiAgcHVibGljIHNldCB0YWJzKHZhbHVlOiBRdWVyeUxpc3Q8U2t5VGFiQ29tcG9uZW50PiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI190YWJzID0gdmFsdWU7XG4gICAgdGhpcy4jdGFiQ29tcG9uZW50c0NoYW5nZVVuc3Vic2NyaWJlLm5leHQoKTtcblxuICAgIHZhbHVlPy5jaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jdGFiQ29tcG9uZW50c0NoYW5nZVVuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLiNyZXNldFRhYkNvbXBvbmVudHMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldCB0YWJzKCk6IFF1ZXJ5TGlzdDxTa3lUYWJDb21wb25lbnQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX3RhYnM7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgcHVibGljIGNzc0NsYXNzID0gJ3NreS10YWJzZXQtbGF5b3V0LW5vbmUnO1xuXG4gIHB1YmxpYyBkcm9wZG93blRyaWdnZXJCdXR0b25UZXh0ID0gJyc7XG5cbiAgLyoqXG4gICAqIFRoaXMgcHJvcGVydHkgaXMgdXNlZCBieSB0aGUgZGVwcmVjYXRlZCB0YWJzZXQtbmF2LWJ1dHRvbiBjb21wb25lbnQuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGxhc3RBY3RpdmVUYWJJbmRleDogU2t5VGFiSW5kZXggfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIHRhYkJ1dHRvbnM6IFRhYkJ1dHRvblZpZXdNb2RlbFtdID0gW107XG5cbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICN0YWJDb21wb25lbnRzQ2hhbmdlVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAjdGFiQ29tcG9uZW50c1N0YXRlQ2hhbmdlVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICNfYWN0aXZlOiBTa3lUYWJJbmRleCB8IHVuZGVmaW5lZDtcblxuICAjX3Blcm1hbGlua0lkID0gJyc7XG5cbiAgI190YWJzOiBRdWVyeUxpc3Q8U2t5VGFiQ29tcG9uZW50PiB8IHVuZGVmaW5lZDtcblxuICAjX3RhYkRpc3BsYXlNb2RlOiBTa3lUYWJzZXRCdXR0b25zRGlzcGxheU1vZGUgPSAndGFicyc7XG5cbiAgI190YWJTdHlsZTogU2t5VGFic2V0U3R5bGUgPSAndGFicyc7XG5cbiAgI2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgI2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY7XG4gICNhZGFwdGVyU2VydmljZTogU2t5VGFic2V0QWRhcHRlclNlcnZpY2U7XG4gICNwZXJtYWxpbmtTZXJ2aWNlOiBTa3lUYWJzZXRQZXJtYWxpbmtTZXJ2aWNlO1xuICAjdGFic2V0U2VydmljZTogU2t5VGFic2V0U2VydmljZTtcblxuICAjbGF5b3V0SG9zdFN2YyA9IGluamVjdChTa3lMYXlvdXRIb3N0U2VydmljZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBhZGFwdGVyU2VydmljZTogU2t5VGFic2V0QWRhcHRlclNlcnZpY2UsXG4gICAgcGVybWFsaW5rU2VydmljZTogU2t5VGFic2V0UGVybWFsaW5rU2VydmljZSxcbiAgICB0YWJzZXRTZXJ2aWNlOiBTa3lUYWJzZXRTZXJ2aWNlLFxuICApIHtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3RvciA9IGNoYW5nZURldGVjdG9yO1xuICAgIHRoaXMuI2VsZW1lbnRSZWYgPSBlbGVtZW50UmVmO1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlID0gYWRhcHRlclNlcnZpY2U7XG4gICAgdGhpcy4jcGVybWFsaW5rU2VydmljZSA9IHBlcm1hbGlua1NlcnZpY2U7XG4gICAgdGhpcy4jdGFic2V0U2VydmljZSA9IHRhYnNldFNlcnZpY2U7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI2luaXRUYWJDb21wb25lbnRzKCk7XG5cbiAgICBjb25zdCBpbml0aWFsVGFiSW5kZXggPSB0aGlzLiNnZXRJbml0aWFsVGFiSW5kZXgoKTtcbiAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLnNldEFjdGl2ZVRhYkluZGV4KHtcbiAgICAgIHRhYkluZGV4OiBpbml0aWFsVGFiSW5kZXgsXG4gICAgICBpbml0aWFsOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgdGhpcy4jbGlzdGVuVGFiQnV0dG9uc092ZXJmbG93Q2hhbmdlKCk7XG4gICAgdGhpcy4jbGlzdGVuTG9jYXRpb25Qb3BTdGF0ZUNoYW5nZSgpO1xuXG4gICAgLy8gSWYgdGhlIGN1cnJlbnRseSBhY3RpdmUgdGFiIGlzIGdldHRpbmcgdW5yZWdpc3RlcmVkLCBhY3RpdmF0ZSB0aGUgbmV4dCBvbmUuXG4gICAgdGhpcy4jdGFic2V0U2VydmljZS5hY3RpdmVUYWJVbnJlZ2lzdGVyZWRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKHRhYikgPT4ge1xuICAgICAgICAvLyBXYWl0IGZvciB0aGUgbmV3IHRhYnMgdG8gcmVuZGVyIGJlZm9yZSBhY3RpdmF0aW5nLlxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLmFjdGl2YXRlTmVhcmVzdFRhYih0YWIuYXJyYXlJbmRleCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLmFjdGl2ZVRhYkxheW91dFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgobGF5b3V0KSA9PiB7XG4gICAgICAgIHRoaXMuI3VwZGF0ZUxheW91dChsYXlvdXQpO1xuICAgICAgfSk7XG5cbiAgICAvLyBMZXQgdGhlIHRhYnNldCByZW5kZXIgdGhlIGluaXRpYWwgYWN0aXZlIGluZGV4IGJlZm9yZSBsaXN0ZW5pbmcgZm9yIGNoYW5nZXMuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLiNsaXN0ZW5UYWJDb21wb25lbnRzU3RhdGVDaGFuZ2UoKTtcbiAgICAgIHRoaXMuI2xpc3RlbkFjdGl2ZUluZGV4Q2hhbmdlKCk7XG4gICAgICB0aGlzLiNwZXJtYWxpbmtTZXJ2aWNlLmluaXQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy4jdGFiQ29tcG9uZW50c0NoYW5nZVVuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiN0YWJDb21wb25lbnRzQ2hhbmdlVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB0aGlzLiN1bnN1YnNjcmliZVRhYkNvbXBvbmVudHNTdGF0ZUNoYW5nZSgpO1xuICAgIGlmICh0aGlzLnBlcm1hbGlua0lkKSB7XG4gICAgICB0aGlzLiNwZXJtYWxpbmtTZXJ2aWNlLmNsZWFyUGFyYW0odGhpcy5wZXJtYWxpbmtJZCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uV2luZG93UmVzaXplKCk6IHZvaWQge1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmRldGVjdE92ZXJmbG93KCk7XG4gIH1cblxuICBwdWJsaWMgb25UYWJDbG9zZUNsaWNrKHRhYkJ1dHRvbjogVGFiQnV0dG9uVmlld01vZGVsKTogdm9pZCB7XG4gICAgY29uc3QgdGFiQ29tcG9uZW50ID0gdGhpcy50YWJzPy5maW5kKCh0YWIpID0+XG4gICAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLnRhYkluZGV4ZXNFcXVhbChcbiAgICAgICAgdGFiLnRhYkluZGV4VmFsdWUsXG4gICAgICAgIHRhYkJ1dHRvbi50YWJJbmRleCxcbiAgICAgICksXG4gICAgKTtcblxuICAgIHRhYkNvbXBvbmVudD8uY2xvc2UuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIG9uVGFiQnV0dG9uQ2xpY2sodGFiQnV0dG9uOiBUYWJCdXR0b25WaWV3TW9kZWwpOiB2b2lkIHtcbiAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLnNldEFjdGl2ZVRhYkluZGV4KHsgdGFiSW5kZXg6IHRhYkJ1dHRvbi50YWJJbmRleCB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvbk5ld1RhYkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMubmV3VGFiLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbk9wZW5UYWJDbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5UYWIuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIG9uUmlnaHRLZXlEb3duKCk6IHZvaWQge1xuICAgIHRoaXMuI3RhYnNldFNlcnZpY2UuZm9jdXNOZXh0VGFiQnRuKHRoaXMudGFiQnV0dG9ucyk7XG4gIH1cblxuICBwdWJsaWMgb25MZWZ0S2V5RG93bigpOiB2b2lkIHtcbiAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLmZvY3VzUHJldlRhYkJ0bih0aGlzLnRhYkJ1dHRvbnMpO1xuICB9XG5cbiAgcHVibGljIG9uSG9tZUtleURvd24oKTogdm9pZCB7XG4gICAgdGhpcy4jdGFic2V0U2VydmljZS5mb2N1c0ZpcnN0T3JOZWFyZXN0VGFiQnRuKHRoaXMudGFiQnV0dG9ucyk7XG4gIH1cblxuICBwdWJsaWMgb25FbmRLZXlEb3duKCk6IHZvaWQge1xuICAgIHRoaXMuI3RhYnNldFNlcnZpY2UuZm9jdXNMYXN0T3JOZWFyZXN0VGFiQnRuKHRoaXMudGFiQnV0dG9ucyk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgaW5pdGlhbCBhY3RpdmUgdGFiIGluZGV4IGJhc2VkIG9uIHRoZSBmb2xsb3dpbmcgY3JpdGVyaWEuXG4gICAqIDEuIERvZXMgdGhlIFVSTCBpbmNsdWRlIGEgcXVlcnkgcGFyYW0gdGhhdCByZWZsZWN0cyB0aGlzIHRhYnNldCdzIGFjdGl2ZSB0YWI/XG4gICAqIDIuIERvZXMgb25lIG9mIHRoZSB0YWIgY29tcG9uZW50cyBoYXZlIHRoZWlyIGBhY3RpdmVgIHByb3BlcnR5IHNldCB0byBgdHJ1ZWA/XG4gICAqIDMuIElzIHRoZSB0YWJzZXQgY29tcG9uZW50J3MgYGFjdGl2ZWAgcHJvcGVydHkgc2V0IHRvIGEgc3BlY2lmaWMgdGFiIGluZGV4P1xuICAgKi9cbiAgI2dldEluaXRpYWxUYWJJbmRleCgpOiBTa3lUYWJJbmRleCB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IGFjdGl2ZUluZGV4OiBTa3lUYWJJbmRleCB8IHVuZGVmaW5lZCA9XG4gICAgICB0aGlzLiNnZXRBY3RpdmVUYWJJbmRleEJ5UGVybWFsaW5rSWQoKTtcbiAgICBpZiAoYWN0aXZlSW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgYWN0aXZlSW5kZXggPSB0aGlzLiNnZXRBY3RpdmVUYWJDb21wb25lbnQoKT8udGFiSW5kZXhWYWx1ZTtcbiAgICAgIGlmIChhY3RpdmVJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGl2ZUluZGV4ID0gdGhpcy5hY3RpdmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjdGl2ZUluZGV4O1xuICB9XG5cbiAgI2xpc3RlbkFjdGl2ZUluZGV4Q2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuI3RhYnNldFNlcnZpY2UuYWN0aXZlVGFiQ2hhbmdlXG4gICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCB0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCh0YWJDaGFuZ2UpID0+IHtcbiAgICAgICAgdGhpcy4jdXBkYXRlVGFic2V0Q29tcG9uZW50KFxuICAgICAgICAgIHRhYkNoYW5nZS50YWJJbmRleCxcbiAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICB0YWJDaGFuZ2UuaW5pdGlhbCxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgYWN0aXZlVGFiID0gdGhpcy4jZ2V0QWN0aXZlVGFiQ29tcG9uZW50KCk7XG5cbiAgICAgICAgdGhpcy4jdXBkYXRlTGF5b3V0KGFjdGl2ZVRhYj8ubGF5b3V0KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgI3VwZGF0ZUxheW91dChsYXlvdXQ/OiBTa3lUYWJMYXlvdXRUeXBlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI2xheW91dEhvc3RTdmMgJiYgbGF5b3V0KSB7XG4gICAgICB0aGlzLiNsYXlvdXRIb3N0U3ZjLnNldEhvc3RMYXlvdXRGb3JDaGlsZCh7XG4gICAgICAgIGxheW91dCxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmNzc0NsYXNzID0gYHNreS10YWJzZXQtbGF5b3V0LSR7bGF5b3V0fWA7XG4gICAgfVxuICB9XG5cbiAgI2xpc3RlblRhYkNvbXBvbmVudHNTdGF0ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50YWJzKSB7XG4gICAgICBjb21iaW5lTGF0ZXN0KHRoaXMudGFicy5tYXAoKHRhYikgPT4gdGFiLmFjdGl2ZUNoYW5nZSkpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbChcbiAgICAgICAgICAgIHJhY2UoXG4gICAgICAgICAgICAgIHRoaXMuI3RhYkNvbXBvbmVudHNTdGF0ZUNoYW5nZVVuc3Vic2NyaWJlLFxuICAgICAgICAgICAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIC8vIFdhaXQgZm9yIHRoZSB0YWIgY29tcG9uZW50cyB0byByZW5kZXIgY2hhbmdlcyBiZWZvcmUgZmluZGluZyB0aGUgYWN0aXZlIG9uZS5cbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhYkluZGV4ID0gdGhpcy4jZ2V0QWN0aXZlVGFiQ29tcG9uZW50KCk/LnRhYkluZGV4VmFsdWU7XG4gICAgICAgICAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLnNldEFjdGl2ZVRhYkluZGV4KHsgdGFiSW5kZXggfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICBjb21iaW5lTGF0ZXN0KHRoaXMudGFicy5tYXAoKHRhYikgPT4gdGFiLnRhYkluZGV4Q2hhbmdlKSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKFxuICAgICAgICAgICAgcmFjZShcbiAgICAgICAgICAgICAgdGhpcy4jdGFiQ29tcG9uZW50c1N0YXRlQ2hhbmdlVW5zdWJzY3JpYmUsXG4gICAgICAgICAgICAgIHRoaXMuI25nVW5zdWJzY3JpYmUsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgLy8gRG9uJ3QgZW1pdCB0aGUgZmlyc3QgY2hhbmdlLlxuICAgICAgICAgIGlmICh0aGlzLmxhc3RBY3RpdmVUYWJJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBXYWl0IGZvciB0aGUgdGFiIGNvbXBvbmVudHMgdG8gcmVuZGVyIGNoYW5nZXMgYmVmb3JlIHVwZGF0aW5nIHRoZSB2aWV3LlxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuI3VwZGF0ZVRhYnNldENvbXBvbmVudChcbiAgICAgICAgICAgICAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLmN1cnJlbnRBY3RpdmVUYWJJbmRleCxcbiAgICAgICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB0aGlzLiNlbWl0VGFiSW5kZXhDaGFuZ2UoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgIGNvbWJpbmVMYXRlc3QodGhpcy50YWJzLm1hcCgodGFiKSA9PiB0YWIuc3RhdGVDaGFuZ2UpKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwoXG4gICAgICAgICAgICByYWNlKFxuICAgICAgICAgICAgICB0aGlzLiN0YWJDb21wb25lbnRzU3RhdGVDaGFuZ2VVbnN1YnNjcmliZSxcbiAgICAgICAgICAgICAgdGhpcy4jbmdVbnN1YnNjcmliZSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAvLyBXYWl0IGZvciB0aGUgdGFiIGNvbXBvbmVudHMgdG8gcmVuZGVyIGNoYW5nZXMgYmVmb3JlIGZpbmRpbmcgdGhlIGFjdGl2ZSBvbmUuXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLiN1cGRhdGVUYWJzZXRDb21wb25lbnQoXG4gICAgICAgICAgICAgIHRoaXMuI3RhYnNldFNlcnZpY2UuY3VycmVudEFjdGl2ZVRhYkluZGV4LFxuICAgICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgI2luaXRUYWJDb21wb25lbnRzKCk6IHZvaWQge1xuICAgIHRoaXMudGFicz8uZm9yRWFjaCgodGFiKSA9PiB0YWIuaW5pdCgpKTtcbiAgfVxuXG4gICNyZXNldFRhYkNvbXBvbmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy4jdW5zdWJzY3JpYmVUYWJDb21wb25lbnRzU3RhdGVDaGFuZ2UoKTtcbiAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLnVucmVnaXN0ZXJBbGwoKTtcblxuICAgIC8vIElmIHRoZXJlIGFyZSBubyB0YWIgY29tcG9uZW50cywgZG8gYSBoYXJkIHJlc2V0IG9mIHRoZSB2aWV3LlxuICAgIGlmICh0aGlzLnRhYnM/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy4jdXBkYXRlVGFic2V0Q29tcG9uZW50KDAsIHRydWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuI2luaXRUYWJDb21wb25lbnRzKCk7XG4gICAgY29uc3QgYWN0aXZlSW5kZXggPSB0aGlzLiNnZXRBY3RpdmVUYWJDb21wb25lbnQoKT8udGFiSW5kZXhWYWx1ZTtcbiAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLnNldEFjdGl2ZVRhYkluZGV4KFxuICAgICAge1xuICAgICAgICB0YWJJbmRleDogYWN0aXZlSW5kZXgsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBlbWl0Q2hhbmdlOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgKTtcbiAgICB0aGlzLiNsaXN0ZW5UYWJDb21wb25lbnRzU3RhdGVDaGFuZ2UoKTtcbiAgfVxuXG4gICNlbWl0VGFiSW5kZXhDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy50YWJJbmRleGVzQ2hhbmdlLmVtaXQoe1xuICAgICAgdGFiczogdGhpcy50YWJzPy5tYXAoKHRhYikgPT4gKHtcbiAgICAgICAgdGFiSGVhZGluZzogdGFiLnRhYkhlYWRpbmcsXG4gICAgICAgIHRhYkluZGV4OiB0YWIudGFiSW5kZXhWYWx1ZSxcbiAgICAgIH0pKSxcbiAgICB9KTtcbiAgfVxuXG4gICN1bnN1YnNjcmliZVRhYkNvbXBvbmVudHNTdGF0ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLiN0YWJDb21wb25lbnRzU3RhdGVDaGFuZ2VVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jdGFiQ29tcG9uZW50c1N0YXRlQ2hhbmdlVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB0aGlzLiN0YWJDb21wb25lbnRzU3RhdGVDaGFuZ2VVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIH1cblxuICAjbGlzdGVuVGFiQnV0dG9uc092ZXJmbG93Q2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLnJlZ2lzdGVyVGFic2V0KHRoaXMuI2VsZW1lbnRSZWYpO1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLm92ZXJmbG93Q2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChpc092ZXJmbG93aW5nKSA9PiB7XG4gICAgICAgIHRoaXMudGFiRGlzcGxheU1vZGUgPSBpc092ZXJmbG93aW5nID8gJ2Ryb3Bkb3duJyA6ICd0YWJzJztcbiAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0ZW4gZm9yIGJhY2svZm9yd2FyZCBoaXN0b3J5IGJ1dHRvbiBwcmVzc2VzIHRvIGRldGVjdCBxdWVyeSBwYXJhbSBjaGFuZ2VzIGluIHRoZSBVUkwuXG4gICAqL1xuICAjbGlzdGVuTG9jYXRpb25Qb3BTdGF0ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLiNwZXJtYWxpbmtTZXJ2aWNlLnBvcFN0YXRlQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy4jc2V0QWN0aXZlVGFiSW5kZXhCeVBlcm1hbGlua0lkKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gICNzZXRBY3RpdmVUYWJJbmRleEJ5UGVybWFsaW5rSWQoKTogdm9pZCB7XG4gICAgY29uc3QgYWN0aXZlSW5kZXggPSB0aGlzLiNnZXRBY3RpdmVUYWJJbmRleEJ5UGVybWFsaW5rSWQoKTtcbiAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLnNldEFjdGl2ZVRhYkluZGV4KHtcbiAgICAgIHRhYkluZGV4OiBhY3RpdmVJbmRleCxcbiAgICB9KTtcbiAgfVxuXG4gICNnZXRBY3RpdmVUYWJJbmRleEJ5UGVybWFsaW5rSWQoKTogU2t5VGFiSW5kZXggfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLnBlcm1hbGlua0lkKSB7XG4gICAgICBjb25zdCBwYXJhbVZhbHVlID0gdGhpcy4jcGVybWFsaW5rU2VydmljZS5nZXRQYXJhbSh0aGlzLnBlcm1hbGlua0lkKTtcbiAgICAgIGlmIChwYXJhbVZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYnM/LmZpbmQoXG4gICAgICAgICAgKHRhYikgPT4gdGFiLnBlcm1hbGlua1ZhbHVlT3JEZWZhdWx0ID09PSBwYXJhbVZhbHVlLFxuICAgICAgICApPy50YWJJbmRleFZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gICNnZXRBY3RpdmVUYWJDb21wb25lbnQoKTogU2t5VGFiQ29tcG9uZW50IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy50YWJzXG4gICAgICA/LnRvQXJyYXkoKVxuICAgICAgLnJldmVyc2UoKVxuICAgICAgLmZpbmQoKHRhYikgPT4gdGFiLmFjdGl2ZSA9PT0gdHJ1ZSk7XG4gIH1cblxuICAjY3JlYXRlVGFiQnV0dG9ucyhcbiAgICBhY3RpdmVJbmRleDogU2t5VGFiSW5kZXggfCB1bmRlZmluZWQsXG4gICk6IFRhYkJ1dHRvblZpZXdNb2RlbFtdIHtcbiAgICAvLyBTYWZldHkgY2hlY2tcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICghdGhpcy50YWJzKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudGFicy5tYXAoKHRhYiwgaW5kZXgpID0+ICh7XG4gICAgICBhY3RpdmU6IHRoaXMuI3RhYnNldFNlcnZpY2UudGFiSW5kZXhlc0VxdWFsKFxuICAgICAgICB0YWIudGFiSW5kZXhWYWx1ZSxcbiAgICAgICAgYWN0aXZlSW5kZXgsXG4gICAgICApLFxuICAgICAgY2xvc2VhYmxlOiB0YWIuaXNDbG9zZWFibGUoKSxcbiAgICAgIGFyaWFDb250cm9sczogdGFiLnRhYlBhbmVsSWQsXG4gICAgICBkaXNhYmxlZDogdGFiLmRpc2FibGVkLFxuICAgICAgYnV0dG9uSHJlZjogdGFiLmRpc2FibGVkXG4gICAgICAgID8gbnVsbFxuICAgICAgICA6IHRoaXMuI3Blcm1hbGlua1NlcnZpY2UuZ2V0UGFyYW1IcmVmKFxuICAgICAgICAgICAgdGhpcy5wZXJtYWxpbmtJZCxcbiAgICAgICAgICAgIHRhYi5wZXJtYWxpbmtWYWx1ZU9yRGVmYXVsdCxcbiAgICAgICAgICApLFxuICAgICAgYnV0dG9uSWQ6IHRhYi50YWJCdXR0b25JZCxcbiAgICAgIGJ1dHRvblRleHRDb3VudDogdGFiLnRhYkhlYWRlckNvdW50LFxuICAgICAgYnV0dG9uVGV4dDogdGFiLnRhYkhlYWRpbmcsXG4gICAgICB0YWJJbmRleDogdGFiLnRhYkluZGV4VmFsdWUsXG4gICAgICB0YWJOdW1iZXI6IGluZGV4ICsgMSxcbiAgICAgIHRvdGFsVGFic0NvdW50OiB0aGlzLnRhYnMhLmxlbmd0aCxcbiAgICB9KSk7XG4gIH1cblxuICAjdXBkYXRlVGFiQnV0dG9ucyhhY3RpdmVJbmRleDogU2t5VGFiSW5kZXggfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICB0aGlzLnRhYkJ1dHRvbnMuZm9yRWFjaCgoYnV0dG9uKSA9PiB7XG4gICAgICBidXR0b24uYWN0aXZlID0gdGhpcy4jdGFic2V0U2VydmljZS50YWJJbmRleGVzRXF1YWwoXG4gICAgICAgIGJ1dHRvbi50YWJJbmRleCxcbiAgICAgICAgYWN0aXZlSW5kZXgsXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIFVJIGFuZCBzdGF0ZSBvZiB0aGUgdGFic2V0IGNvbXBvbmVudCBhZnRlciB0aGUgdGFiIGluZGV4IG9yXG4gICAqIHRhYiBjb21wb25lbnRzIGhhdmUgY2hhbmdlZC5cbiAgICogQHBhcmFtIGFjdGl2ZUluZGV4IFRoZSBjdXJyZW50bHkgYWN0aXZlIHRhYiBpbmRleC5cbiAgICogQHBhcmFtIHJlZ2VuZXJhdGVUYWJCdXR0b25zIEluZGljYXRlcyBpZiB0YWIgYnV0dG9uIHZpZXcgbW9kZWxzIHNob3VsZCBiZSByZWdlbmVyYXRlZC5cbiAgICogU2V0dGluZyB0aGlzIHZhbHVlIHRvIGBmYWxzZWAgd2lsbCBzaW1wbHkgdXBkYXRlIHRoZSBleGlzdGluZyB0YWIgYnV0dG9ucy4gU2V0dGluZyB0aGlzIHZhbHVlXG4gICAqIHRvIGB0cnVlYCBpcyBvbmx5IG5lY2Vzc2FyeSB3aGVuIHRoZSB1bmRlcmx5aW5nIHRhYiBjb21wb25lbnRzIGhhdmUgY2hhbmdlZCBhbmQgdGhlIHRhYlxuICAgKiBidXR0b25zIG11c3QgcmVmbGVjdCB0aG9zZSBjaGFuZ2VzLlxuICAgKiBAcGFyYW0gaW5pdGlhbCBJbmRpY2F0ZXMgd2hldGhlciB0YWJzIGFyZSBiZWluZyB1cGRhdGVkIGR1cmluZyBpbml0aWFsaXphdGlvbiBvZiB0aGUgdGFic2V0XG4gICAqIGNvbXBvbmVudC4gVGhpcyBpcyBwYXNzZWQgdGhyb3VnaCB0byB0aGUgcGVybWFsaW5rIHNlcnZpY2Ugd2hlcmUgaXQgcHJldmVudHMgYWRkaW5nIGFuIGV4dHJhXG4gICAqIGl0ZW0gdG8gYnJvd3NlciBoaXN0b3J5IHdoZW4gdGhlIFVSTCBpcyB1cGRhdGVkIHdpdGggdGhlIHNlbGVjdGVkIHRhYidzIHBlcm1hbGluayB2YWx1ZS5cbiAgICovXG4gICN1cGRhdGVUYWJzZXRDb21wb25lbnQoXG4gICAgYWN0aXZlSW5kZXg6IFNreVRhYkluZGV4IHwgdW5kZWZpbmVkLFxuICAgIHJlZ2VuZXJhdGVUYWJCdXR0b25zOiBib29sZWFuLFxuICAgIGluaXRpYWw/OiBib29sZWFuLFxuICApOiB2b2lkIHtcbiAgICAvLyBBY3RpdmF0ZS9kZWFjdGl2YXRlIHRhYiBjb21wb25lbnRzLlxuICAgIHRoaXMudGFicz8uZm9yRWFjaCgodGFiKSA9PiB7XG4gICAgICBpZiAodGhpcy4jdGFic2V0U2VydmljZS50YWJJbmRleGVzRXF1YWwodGFiLnRhYkluZGV4VmFsdWUsIGFjdGl2ZUluZGV4KSkge1xuICAgICAgICB0YWIuYWN0aXZhdGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRhYi5kZWFjdGl2YXRlKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBVcGRhdGUgdGhlIHRhYiBidXR0b24gbW9kZWxzLlxuICAgIGlmIChyZWdlbmVyYXRlVGFiQnV0dG9ucyB8fCAhdGhpcy50YWJCdXR0b25zLmxlbmd0aCkge1xuICAgICAgdGhpcy50YWJCdXR0b25zID0gdGhpcy4jY3JlYXRlVGFiQnV0dG9ucyhhY3RpdmVJbmRleCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI3VwZGF0ZVRhYkJ1dHRvbnMoYWN0aXZlSW5kZXgpO1xuICAgIH1cblxuICAgIC8vIFVwZGF0ZSB0aGUgZHJvcGRvd24gdHJpZ2dlciBidXR0b24gdGV4dC5cbiAgICB0aGlzLmRyb3Bkb3duVHJpZ2dlckJ1dHRvblRleHQgPVxuICAgICAgdGhpcy50YWJCdXR0b25zLmZpbmQoKGIpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI3RhYnNldFNlcnZpY2UudGFiSW5kZXhlc0VxdWFsKGIudGFiSW5kZXgsIGFjdGl2ZUluZGV4KTtcbiAgICAgIH0pPy5idXR0b25UZXh0ID8/ICcnO1xuXG4gICAgLy8gU2V0IHRoZSBxdWVyeSBwYXJhbXMgYmFzZWQgb24gYWN0aXZlIHRhYi5cbiAgICBpZiAodGhpcy5wZXJtYWxpbmtJZCkge1xuICAgICAgY29uc3QgYWN0aXZlVGFiQ29tcG9uZW50ID0gdGhpcy50YWJzPy5maW5kKCh0YWIpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI3RhYnNldFNlcnZpY2UudGFiSW5kZXhlc0VxdWFsKFxuICAgICAgICAgIHRhYi50YWJJbmRleFZhbHVlLFxuICAgICAgICAgIGFjdGl2ZUluZGV4LFxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICBpZiAoYWN0aXZlVGFiQ29tcG9uZW50KSB7XG4gICAgICAgIHRoaXMuI3Blcm1hbGlua1NlcnZpY2Uuc2V0UGFyYW0oXG4gICAgICAgICAgdGhpcy5wZXJtYWxpbmtJZCxcbiAgICAgICAgICBhY3RpdmVUYWJDb21wb25lbnQucGVybWFsaW5rVmFsdWVPckRlZmF1bHQsXG4gICAgICAgICAgaW5pdGlhbCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBXYWl0IGZvciB0YWIgYnV0dG9uIHZpZXcgbW9kZWxzIHRvIHJlbmRlciBiZWZvcmUgZ2F1Z2luZyBkaW1lbnNpb25zLlxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2UuZGV0ZWN0T3ZlcmZsb3coKTtcbiAgICB9KTtcblxuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgLy8gRW1pdCB0aGUgbmV3IGFjdGl2ZSBpbmRleCB2YWx1ZSB0byBjb25zdW1lcnMuXG4gICAgaWYgKHRoaXMubGFzdEFjdGl2ZVRhYkluZGV4ICE9PSBhY3RpdmVJbmRleCkge1xuICAgICAgdGhpcy5sYXN0QWN0aXZlVGFiSW5kZXggPSBhY3RpdmVJbmRleDtcbiAgICAgIHRoaXMuYWN0aXZlQ2hhbmdlLmVtaXQoYWN0aXZlSW5kZXgpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInNreS10YWJzZXRcIlxuICByb2xlPVwidGFibGlzdFwiXG4gIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCJcbiAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgW25nQ2xhc3NdPVwiXG4gICAgJ3NreS10YWJzZXQtbW9kZS0nICsgdGFiRGlzcGxheU1vZGUgKyAnIHNreS10YWJzZXQtc3R5bGUtJyArIHRhYlN0eWxlXG4gIFwiXG4gICh3aW5kb3c6cmVzaXplKT1cIm9uV2luZG93UmVzaXplKClcIlxuICAoa2V5ZG93bi5hcnJvd3JpZ2h0KT1cIm9uUmlnaHRLZXlEb3duKClcIlxuICAoa2V5ZG93bi5hcnJvd2xlZnQpPVwib25MZWZ0S2V5RG93bigpXCJcbiAgKGtleWRvd24uaG9tZSk9XCJvbkhvbWVLZXlEb3duKClcIlxuICAoa2V5ZG93bi5lbmQpPVwib25FbmRLZXlEb3duKClcIlxuPlxuICA8c3BhbiBjbGFzcz1cInNreS10YWJzZXQtZHJvcGRvd25cIj5cbiAgICBAaWYgKHRhYkRpc3BsYXlNb2RlID09PSAnZHJvcGRvd24nKSB7XG4gICAgICA8c2t5LWRyb3Bkb3duIGJ1dHRvblR5cGU9XCJ0YWJcIj5cbiAgICAgICAgPHNreS1kcm9wZG93bi1idXR0b24+XG4gICAgICAgICAge3sgZHJvcGRvd25UcmlnZ2VyQnV0dG9uVGV4dCB9fVxuICAgICAgICA8L3NreS1kcm9wZG93bi1idXR0b24+XG4gICAgICAgIDxza3ktZHJvcGRvd24tbWVudT5cbiAgICAgICAgICBAZm9yICh0YWJCdXR0b24gb2YgdGFiQnV0dG9uczsgdHJhY2sgdGFiQnV0dG9uKSB7XG4gICAgICAgICAgICA8c2t5LWRyb3Bkb3duLWl0ZW0gY2xhc3M9XCJza3ktdGFiLWRyb3Bkb3duLW1lbnUtaXRlbVwiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJza3ktdGFiLWRyb3Bkb3duLWl0ZW1cIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICdza3ktdGFiLWRyb3Bkb3duLWl0ZW0tc2VsZWN0ZWQnOiB0YWJCdXR0b24uYWN0aXZlXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICB0YWJCdXR0b25UZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogdGFiQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3NreS1kcm9wZG93bi1pdGVtPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9za3ktZHJvcGRvd24tbWVudT5cbiAgICAgIDwvc2t5LWRyb3Bkb3duPlxuICAgIH1cbiAgPC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cInNreS10YWJzZXQtdGFic1wiPlxuICAgIEBmb3IgKHRhYkJ1dHRvbiBvZiB0YWJCdXR0b25zOyB0cmFjayB0YWJCdXR0b24pIHtcbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICB0YWJCdXR0b25UZW1wbGF0ZTtcbiAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAkaW1wbGljaXQ6IHRhYkJ1dHRvblxuICAgICAgICAgIH1cbiAgICAgICAgXCJcbiAgICAgIC8+XG4gICAgfVxuICA8L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwic2t5LXRhYnNldC1idG5zXCI+XG4gICAgQGlmIChuZXdUYWIub2JzZXJ2ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4taWNvbiBza3ktdGFic2V0LWJ0bi1uZXcgc2t5LW1hcmdpbi1pbmxpbmUtY29tcGFjdFwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidza3l1eF90YWJfYWRkJyB8IHNreUxpYlJlc291cmNlc1wiXG4gICAgICAgIFtza3lUaGVtZUNsYXNzXT1cIntcbiAgICAgICAgICAnc2t5LW1hcmdpbi1pbmxpbmUtc20nOiAnbW9kZXJuJ1xuICAgICAgICB9XCJcbiAgICAgICAgKGNsaWNrKT1cIm9uTmV3VGFiQ2xpY2soKVwiXG4gICAgICA+XG4gICAgICAgIDxza3ktaWNvbiBpY29uPVwicGx1cy1jaXJjbGVcIiBzaXplPVwibGdcIiAvPlxuICAgICAgPC9idXR0b24+XG4gICAgfVxuICAgIEBpZiAob3BlblRhYi5vYnNlcnZlcnMubGVuZ3RoID4gMCkge1xuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1pY29uIHNreS10YWJzZXQtYnRuLW9wZW4gc2t5LW1hcmdpbi1pbmxpbmUtY29tcGFjdFwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidza3l1eF90YWJfb3BlbicgfCBza3lMaWJSZXNvdXJjZXNcIlxuICAgICAgICBbc2t5VGhlbWVDbGFzc109XCJ7XG4gICAgICAgICAgJ3NreS1tYXJnaW4taW5saW5lLXNtJzogJ21vZGVybidcbiAgICAgICAgfVwiXG4gICAgICAgIChjbGljayk9XCJvbk9wZW5UYWJDbGljaygpXCJcbiAgICAgID5cbiAgICAgICAgPHNreS1pY29uIGljb249XCJmb2xkZXItb3Blbi1vXCIgc2l6ZT1cImxnXCIgLz5cbiAgICAgIDwvYnV0dG9uPlxuICAgIH1cbiAgPC9zcGFuPlxuPC9kaXY+XG48bmctY29udGVudCAvPlxuXG48bmctdGVtcGxhdGUgI3RhYkJ1dHRvblRlbXBsYXRlIGxldC10YWJCdXR0b24+XG4gIDxza3ktdGFiLWJ1dHRvblxuICAgIFthY3RpdmVdPVwidGFiQnV0dG9uLmFjdGl2ZVwiXG4gICAgW2FyaWFDb250cm9sc109XCJ0YWJCdXR0b24uYXJpYUNvbnRyb2xzXCJcbiAgICBbYnV0dG9uSHJlZl09XCJ0YWJCdXR0b24uYnV0dG9uSHJlZlwiXG4gICAgW2J1dHRvbklkXT1cInRhYkJ1dHRvbi5idXR0b25JZFwiXG4gICAgW2J1dHRvblRleHRdPVwidGFiQnV0dG9uLmJ1dHRvblRleHRcIlxuICAgIFtidXR0b25UZXh0Q291bnRdPVwidGFiQnV0dG9uLmJ1dHRvblRleHRDb3VudFwiXG4gICAgW2Nsb3NlYWJsZV09XCJ0YWJCdXR0b24uY2xvc2VhYmxlXCJcbiAgICBbZGlzYWJsZWRdPVwidGFiQnV0dG9uLmRpc2FibGVkXCJcbiAgICBbdGFiSW5kZXhdPVwidGFiQnV0dG9uLnRhYkluZGV4XCJcbiAgICBbdGFiU3R5bGVdPVwidGFiU3R5bGVcIlxuICAgIFt0YWJOdW1iZXJdPVwidGFiQnV0dG9uLnRhYk51bWJlclwiXG4gICAgW3RvdGFsVGFic0NvdW50XT1cInRhYkJ1dHRvbi50b3RhbFRhYnNDb3VudFwiXG4gICAgKGJ1dHRvbkNsaWNrKT1cIm9uVGFiQnV0dG9uQ2xpY2sodGFiQnV0dG9uKVwiXG4gICAgKGNsb3NlQ2xpY2spPVwib25UYWJDbG9zZUNsaWNrKHRhYkJ1dHRvbilcIlxuICAvPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
479
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFic2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy90YWJzL3RhYnNldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFicy9zcmMvbGliL21vZHVsZXMvdGFicy90YWJzZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLE1BQU0sRUFFTixpQkFBaUIsRUFDakIsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS2pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUd2RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFjcEQsTUFBTSxPQUFPLGtCQUFrQjtJQUM3Qjs7T0FFRztJQUNILElBQ1csTUFBTSxDQUFDLEtBQThCO1FBQzlDLElBQ0UsS0FBSyxLQUFLLFNBQVM7WUFDbkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsRUFD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QyxpQkFBaUIsQ0FBQyxJQUFJOzROQU8xQixNQUFNO3NCQURoQixLQUFLO2dCQXdDQyxTQUFTO3NCQURmLEtBQUs7Z0JBV0MsY0FBYztzQkFEcEIsS0FBSztnQkFXSyxXQUFXO3NCQURyQixLQUFLO2dCQW1CSyxRQUFRO3NCQURsQixLQUFLO2dCQWFDLFlBQVk7c0JBRGxCLE1BQU07Z0JBU0EsTUFBTTtzQkFEWixNQUFNO2dCQVNBLE9BQU87c0JBRGIsTUFBTTtnQkFRQSxnQkFBZ0I7c0JBRHRCLE1BQU07Z0JBYUksSUFBSTtzQkFEZCxlQUFlO3VCQUFDLGVBQWU7Z0JBaUJ6QixRQUFRO3NCQURkLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUxheW91dEhvc3RTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCByYWNlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBUYWJCdXR0b25WaWV3TW9kZWwgfSBmcm9tICcuL3RhYi1idXR0b24tdmlldy1tb2RlbCc7XG5pbXBvcnQgeyBTa3lUYWJJbmRleCB9IGZyb20gJy4vdGFiLWluZGV4JztcbmltcG9ydCB7IFNreVRhYkxheW91dFR5cGUgfSBmcm9tICcuL3RhYi1sYXlvdXQtdHlwZSc7XG5pbXBvcnQgeyBTa3lUYWJDb21wb25lbnQgfSBmcm9tICcuL3RhYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5VGFic2V0QWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL3RhYnNldC1hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5VGFic2V0QnV0dG9uc0Rpc3BsYXlNb2RlIH0gZnJvbSAnLi90YWJzZXQtYnV0dG9ucy1kaXNwbGF5LW1vZGUnO1xuaW1wb3J0IHsgU2t5VGFic2V0UGVybWFsaW5rU2VydmljZSB9IGZyb20gJy4vdGFic2V0LXBlcm1hbGluay5zZXJ2aWNlJztcbmltcG9ydCB7IFNreVRhYnNldFN0eWxlIH0gZnJvbSAnLi90YWJzZXQtc3R5bGUnO1xuaW1wb3J0IHsgU2t5VGFic2V0VGFiSW5kZXhlc0NoYW5nZSB9IGZyb20gJy4vdGFic2V0LXRhYi1pbmRleGVzLWNoYW5nZSc7XG5pbXBvcnQgeyBTa3lUYWJzZXRTZXJ2aWNlIH0gZnJvbSAnLi90YWJzZXQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS10YWJzZXQnLFxuICBzdHlsZVVybHM6IFsnLi90YWJzZXQuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYnNldC5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIFNreVRhYnNldEFkYXB0ZXJTZXJ2aWNlLFxuICAgIFNreVRhYnNldFBlcm1hbGlua1NlcnZpY2UsXG4gICAgU2t5VGFic2V0U2VydmljZSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFNreVRhYnNldENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBBY3RpdmF0ZXMgYSB0YWIgYnkgaXRzIGB0YWJJbmRleGAgcHJvcGVydHkuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGFjdGl2ZSh2YWx1ZTogU2t5VGFiSW5kZXggfCB1bmRlZmluZWQpIHtcbiAgICBpZiAoXG4gICAgICB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLnRhYkluZGV4ZXNFcXVhbCh2YWx1ZSwgdGhpcy4jX2FjdGl2ZSlcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLiNfYWN0aXZlID0gdmFsdWU7XG5cbiAgICBpZiAodGhpcy50YWJzKSB7XG4gICAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLnNldEFjdGl2ZVRhYkluZGV4KHsgdGFiSW5kZXg6IHZhbHVlIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBPbiBpbml0LCB3YWl0IGZvciBjaGlsZHJlbiB0YWJzIHRvIHJlbmRlciBiZWZvcmUgYnJvYWRjYXN0aW5nIHRoZSBhY3RpdmUgdGFiIGluZGV4LlxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLiN0YWJzZXRTZXJ2aWNlLmlzVmFsaWRUYWJJbmRleCh2YWx1ZSkpIHtcbiAgICAgICAgICAvLyBPbiBpbml0LCB5aWVsZCB0byB0aGUgcGVybWFsaW5rIElELCBpZiBpdCBleGlzdHMuXG4gICAgICAgICAgaWYgKHRoaXMuI2dldEFjdGl2ZVRhYkluZGV4QnlQZXJtYWxpbmtJZCgpID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuI3RhYnNldFNlcnZpY2Uuc2V0QWN0aXZlVGFiSW5kZXgoeyB0YWJJbmRleDogdmFsdWUgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEFjdGl2YXRlIHRoZSBmaXJzdCB0YWIgaWYgdGhlIG5ldyB0YWIgaW5kZXggaXMgaW52YWxpZC5cbiAgICAgICAgICB0aGlzLiNfYWN0aXZlID0gdGhpcy4jdGFic2V0U2VydmljZS5hY3RpdmF0ZUZpcnN0VGFiKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWN0aXZlKCk6IFNreVRhYkluZGV4IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2FjdGl2ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgQVJJQSBsYWJlbCBmb3IgdGhlIHRhYnNldC4gVGhpcyBzZXRzIHRoZSB0YWJzZXQncyBgYXJpYS1sYWJlbGAgYXR0cmlidXRlIHRvIHByb3ZpZGUgYSB0ZXh0IGVxdWl2YWxlbnQgZm9yIHNjcmVlbiByZWFkZXJzXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkuXG4gICAqIElmIHRoZSB0YWJzZXQgaW5jbHVkZXMgYSB2aXNpYmxlIGxhYmVsLCB1c2UgYGFyaWFMYWJlbGxlZEJ5YCBpbnN0ZWFkLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYGFyaWEtbGFiZWxgIGF0dHJpYnV0ZSwgc2VlIHRoZSBbV0FJLUFSSUEgZGVmaW5pdGlvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLyNhcmlhLWxhYmVsKS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIEhUTUwgZWxlbWVudCBJRCBvZiB0aGUgZWxlbWVudCB0aGF0IGxhYmVsc1xuICAgKiB0aGUgdGFic2V0LiBUaGlzIHNldHMgdGhlIHRhYnNldCdzIGBhcmlhLWxhYmVsbGVkYnlgIGF0dHJpYnV0ZSB0byBwcm92aWRlIGEgdGV4dCBlcXVpdmFsZW50IGZvciBzY3JlZW4gcmVhZGVyc1xuICAgKiBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2FjY2Vzc2liaWxpdHkpLlxuICAgKiBJZiB0aGUgdGFic2V0IGRvZXMgbm90IGluY2x1ZGUgYSB2aXNpYmxlIGxhYmVsLCB1c2UgYGFyaWFMYWJlbGAgaW5zdGVhZC5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGBhcmlhLWxhYmVsbGVkYnlgIGF0dHJpYnV0ZSwgc2VlIHRoZSBbV0FJLUFSSUEgZGVmaW5pdGlvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLyNhcmlhLWxhYmVsbGVkYnkpLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFyaWFMYWJlbGxlZEJ5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIERpc3Rpbmd1aXNoZXMgYSB0YWJzZXQncyB1bmlxdWUgc3RhdGUgaW4gdGhlIFVSTCBieSBnZW5lcmF0aW5nIGEgcXVlcnkgcGFyYW1ldGVyXG4gICAqIHRoYXQgaXMgd3JpdHRlbiBhcyBgPzxxdWVyeVBhcmFtPi1hY3RpdmUtdGFiPTxzYW5pdGl6ZWQtdGFiLWhlYWRpbmc+YC5cbiAgICogVGhlIHF1ZXJ5IHBhcmFtZXRlcidzIHZhbHVlIGlzIHBhcnNlZCBhdXRvbWF0aWNhbGx5IGZyb20gdGhlIHNlbGVjdGVkIHRhYidzIGhlYWRpbmcgdGV4dCxcbiAgICogYnV0IHlvdSBjYW4gc3VwcGx5IGEgY3VzdG9tIHF1ZXJ5IHBhcmFtZXRlciB2YWx1ZSBmb3IgZWFjaCB0YWIgd2l0aCBpdHMgYHBlcm1hbGlua1ZhbHVlYC5cbiAgICogVGhpcyBpbnB1dCBvbmx5IGFwcGxpZXMgd2hlbiBgdGFiU3R5bGVgIGlzIGBcInRhYnNcImBcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgcGVybWFsaW5rSWQodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHRoaXMuI19wZXJtYWxpbmtJZCA9ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzYW5pdGl6ZWQgPSB0aGlzLiNwZXJtYWxpbmtTZXJ2aWNlLnVybGlmeSh2YWx1ZSk7XG4gICAgICB0aGlzLiNfcGVybWFsaW5rSWQgPSBgJHtzYW5pdGl6ZWR9LWFjdGl2ZS10YWJgO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGVybWFsaW5rSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy4jX3Blcm1hbGlua0lkO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiZWhhdmlvciBmb3IgYSBzZXJpZXMgb2YgdGFicy5cbiAgICogQGRlZmF1bHQgXCJ0YWJzXCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdGFiU3R5bGUodmFsdWU6IFNreVRhYnNldFN0eWxlIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX3RhYlN0eWxlID0gdmFsdWUgfHwgJ3RhYnMnO1xuICB9XG5cbiAgcHVibGljIGdldCB0YWJTdHlsZSgpOiBTa3lUYWJzZXRTdHlsZSB7XG4gICAgcmV0dXJuIHRoaXMuI190YWJTdHlsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBhY3RpdmUgdGFiIGNoYW5nZXMuIFRoaXMgZXZlbnQgZW1pdHMgdGhlIGluZGV4IG9mIHRoZSBhY3RpdmUgdGFiLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBhY3RpdmVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNreVRhYkluZGV4PigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIGNsaWNrIHRoZSBidXR0b24gdG8gYWRkIGEgbmV3IHRhYi5cbiAgICogVGhlIG5ldyB0YWIgYnV0dG9uIGlzIGFkZGVkIHRvIHRoZSB0YWIgYXJlYSB3aGVuIHlvdSBzcGVjaWZ5IGEgbGlzdGVuZXIgZm9yIHRoaXMgZXZlbnQuXG4gICAqIFRoaXMgZXZlbnQgb25seSBhcHBsaWVzIHdoZW4gYHRhYlN0eWxlYCBpcyBgXCJ0YWJzXCJgLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBuZXdUYWIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgY2xpY2sgdGhlIGJ1dHRvbiB0byBvcGVuIGEgdGFiLlxuICAgKiBUaGUgb3BlbiB0YWIgYnV0dG9uIGlzIGFkZGVkIHRvIHRoZSB0YWIgYXJlYSB3aGVuIHlvdSBzcGVjaWZ5IGEgbGlzdGVuZXIgZm9yIHRoaXMgZXZlbnQuXG4gICAqIFRoaXMgZXZlbnQgb25seSBhcHBsaWVzIHdoZW4gYHRhYlN0eWxlYCBpcyBgXCJ0YWJzXCJgLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBvcGVuVGFiID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIGFueSB0YWIncyBgdGFiSW5kZXhgIHZhbHVlIGNoYW5nZXMuXG4gICAqIFRoaXMgZXZlbnQgb25seSBhcHBsaWVzIHdoZW4gYHRhYlN0eWxlYCBpcyBgXCJ0YWJzXCJgLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyB0YWJJbmRleGVzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lUYWJzZXRUYWJJbmRleGVzQ2hhbmdlPigpO1xuXG4gIHB1YmxpYyBzZXQgdGFiRGlzcGxheU1vZGUodmFsdWU6IFNreVRhYnNldEJ1dHRvbnNEaXNwbGF5TW9kZSkge1xuICAgIHRoaXMuI190YWJEaXNwbGF5TW9kZSA9IHZhbHVlO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGdldCB0YWJEaXNwbGF5TW9kZSgpOiBTa3lUYWJzZXRCdXR0b25zRGlzcGxheU1vZGUge1xuICAgIHJldHVybiB0aGlzLiNfdGFiRGlzcGxheU1vZGU7XG4gIH1cblxuICBAQ29udGVudENoaWxkcmVuKFNreVRhYkNvbXBvbmVudClcbiAgcHVibGljIHNldCB0YWJzKHZhbHVlOiBRdWVyeUxpc3Q8U2t5VGFiQ29tcG9uZW50PiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI190YWJzID0gdmFsdWU7XG4gICAgdGhpcy4jdGFiQ29tcG9uZW50c0NoYW5nZVVuc3Vic2NyaWJlLm5leHQoKTtcblxuICAgIHZhbHVlPy5jaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jdGFiQ29tcG9uZW50c0NoYW5nZVVuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLiNyZXNldFRhYkNvbXBvbmVudHMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldCB0YWJzKCk6IFF1ZXJ5TGlzdDxTa3lUYWJDb21wb25lbnQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX3RhYnM7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgcHVibGljIGNzc0NsYXNzID0gJ3NreS10YWJzZXQtbGF5b3V0LW5vbmUnO1xuXG4gIHB1YmxpYyBkcm9wZG93blRyaWdnZXJCdXR0b25UZXh0ID0gJyc7XG5cbiAgLyoqXG4gICAqIFRoaXMgcHJvcGVydHkgaXMgdXNlZCBieSB0aGUgZGVwcmVjYXRlZCB0YWJzZXQtbmF2LWJ1dHRvbiBjb21wb25lbnQuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGxhc3RBY3RpdmVUYWJJbmRleDogU2t5VGFiSW5kZXggfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIHRhYkJ1dHRvbnM6IFRhYkJ1dHRvblZpZXdNb2RlbFtdID0gW107XG5cbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICN0YWJDb21wb25lbnRzQ2hhbmdlVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAjdGFiQ29tcG9uZW50c1N0YXRlQ2hhbmdlVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICNfYWN0aXZlOiBTa3lUYWJJbmRleCB8IHVuZGVmaW5lZDtcblxuICAjX3Blcm1hbGlua0lkID0gJyc7XG5cbiAgI190YWJzOiBRdWVyeUxpc3Q8U2t5VGFiQ29tcG9uZW50PiB8IHVuZGVmaW5lZDtcblxuICAjX3RhYkRpc3BsYXlNb2RlOiBTa3lUYWJzZXRCdXR0b25zRGlzcGxheU1vZGUgPSAndGFicyc7XG5cbiAgI190YWJTdHlsZTogU2t5VGFic2V0U3R5bGUgPSAndGFicyc7XG5cbiAgI2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgI2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY7XG4gICNhZGFwdGVyU2VydmljZTogU2t5VGFic2V0QWRhcHRlclNlcnZpY2U7XG4gICNwZXJtYWxpbmtTZXJ2aWNlOiBTa3lUYWJzZXRQZXJtYWxpbmtTZXJ2aWNlO1xuICAjdGFic2V0U2VydmljZTogU2t5VGFic2V0U2VydmljZTtcblxuICAjbGF5b3V0SG9zdFN2YyA9IGluamVjdChTa3lMYXlvdXRIb3N0U2VydmljZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBhZGFwdGVyU2VydmljZTogU2t5VGFic2V0QWRhcHRlclNlcnZpY2UsXG4gICAgcGVybWFsaW5rU2VydmljZTogU2t5VGFic2V0UGVybWFsaW5rU2VydmljZSxcbiAgICB0YWJzZXRTZXJ2aWNlOiBTa3lUYWJzZXRTZXJ2aWNlLFxuICApIHtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3RvciA9IGNoYW5nZURldGVjdG9yO1xuICAgIHRoaXMuI2VsZW1lbnRSZWYgPSBlbGVtZW50UmVmO1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlID0gYWRhcHRlclNlcnZpY2U7XG4gICAgdGhpcy4jcGVybWFsaW5rU2VydmljZSA9IHBlcm1hbGlua1NlcnZpY2U7XG4gICAgdGhpcy4jdGFic2V0U2VydmljZSA9IHRhYnNldFNlcnZpY2U7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI2luaXRUYWJDb21wb25lbnRzKCk7XG5cbiAgICBjb25zdCBpbml0aWFsVGFiSW5kZXggPSB0aGlzLiNnZXRJbml0aWFsVGFiSW5kZXgoKTtcbiAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLnNldEFjdGl2ZVRhYkluZGV4KHtcbiAgICAgIHRhYkluZGV4OiBpbml0aWFsVGFiSW5kZXgsXG4gICAgICBpbml0aWFsOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgdGhpcy4jbGlzdGVuVGFiQnV0dG9uc092ZXJmbG93Q2hhbmdlKCk7XG4gICAgdGhpcy4jbGlzdGVuTG9jYXRpb25Qb3BTdGF0ZUNoYW5nZSgpO1xuXG4gICAgLy8gSWYgdGhlIGN1cnJlbnRseSBhY3RpdmUgdGFiIGlzIGdldHRpbmcgdW5yZWdpc3RlcmVkLCBhY3RpdmF0ZSB0aGUgbmV4dCBvbmUuXG4gICAgdGhpcy4jdGFic2V0U2VydmljZS5hY3RpdmVUYWJVbnJlZ2lzdGVyZWRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKHRhYikgPT4ge1xuICAgICAgICAvLyBXYWl0IGZvciB0aGUgbmV3IHRhYnMgdG8gcmVuZGVyIGJlZm9yZSBhY3RpdmF0aW5nLlxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLmFjdGl2YXRlTmVhcmVzdFRhYih0YWIuYXJyYXlJbmRleCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLmFjdGl2ZVRhYkxheW91dFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgobGF5b3V0KSA9PiB7XG4gICAgICAgIHRoaXMuI3VwZGF0ZUxheW91dChsYXlvdXQpO1xuICAgICAgfSk7XG5cbiAgICAvLyBMZXQgdGhlIHRhYnNldCByZW5kZXIgdGhlIGluaXRpYWwgYWN0aXZlIGluZGV4IGJlZm9yZSBsaXN0ZW5pbmcgZm9yIGNoYW5nZXMuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLiNsaXN0ZW5UYWJDb21wb25lbnRzU3RhdGVDaGFuZ2UoKTtcbiAgICAgIHRoaXMuI2xpc3RlbkFjdGl2ZUluZGV4Q2hhbmdlKCk7XG4gICAgICB0aGlzLiNwZXJtYWxpbmtTZXJ2aWNlLmluaXQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy4jdGFiQ29tcG9uZW50c0NoYW5nZVVuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiN0YWJDb21wb25lbnRzQ2hhbmdlVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB0aGlzLiN1bnN1YnNjcmliZVRhYkNvbXBvbmVudHNTdGF0ZUNoYW5nZSgpO1xuICAgIGlmICh0aGlzLnBlcm1hbGlua0lkKSB7XG4gICAgICB0aGlzLiNwZXJtYWxpbmtTZXJ2aWNlLmNsZWFyUGFyYW0odGhpcy5wZXJtYWxpbmtJZCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uV2luZG93UmVzaXplKCk6IHZvaWQge1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmRldGVjdE92ZXJmbG93KCk7XG4gIH1cblxuICBwdWJsaWMgb25UYWJDbG9zZUNsaWNrKHRhYkJ1dHRvbjogVGFiQnV0dG9uVmlld01vZGVsKTogdm9pZCB7XG4gICAgY29uc3QgdGFiQ29tcG9uZW50ID0gdGhpcy50YWJzPy5maW5kKCh0YWIpID0+XG4gICAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLnRhYkluZGV4ZXNFcXVhbChcbiAgICAgICAgdGFiLnRhYkluZGV4VmFsdWUsXG4gICAgICAgIHRhYkJ1dHRvbi50YWJJbmRleCxcbiAgICAgICksXG4gICAgKTtcblxuICAgIHRhYkNvbXBvbmVudD8uY2xvc2UuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIG9uVGFiQnV0dG9uQ2xpY2sodGFiQnV0dG9uOiBUYWJCdXR0b25WaWV3TW9kZWwpOiB2b2lkIHtcbiAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLnNldEFjdGl2ZVRhYkluZGV4KHsgdGFiSW5kZXg6IHRhYkJ1dHRvbi50YWJJbmRleCB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvbk5ld1RhYkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMubmV3VGFiLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbk9wZW5UYWJDbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5UYWIuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIG9uUmlnaHRLZXlEb3duKCk6IHZvaWQge1xuICAgIHRoaXMuI3RhYnNldFNlcnZpY2UuZm9jdXNOZXh0VGFiQnRuKHRoaXMudGFiQnV0dG9ucyk7XG4gIH1cblxuICBwdWJsaWMgb25MZWZ0S2V5RG93bigpOiB2b2lkIHtcbiAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLmZvY3VzUHJldlRhYkJ0bih0aGlzLnRhYkJ1dHRvbnMpO1xuICB9XG5cbiAgcHVibGljIG9uSG9tZUtleURvd24oKTogdm9pZCB7XG4gICAgdGhpcy4jdGFic2V0U2VydmljZS5mb2N1c0ZpcnN0T3JOZWFyZXN0VGFiQnRuKHRoaXMudGFiQnV0dG9ucyk7XG4gIH1cblxuICBwdWJsaWMgb25FbmRLZXlEb3duKCk6IHZvaWQge1xuICAgIHRoaXMuI3RhYnNldFNlcnZpY2UuZm9jdXNMYXN0T3JOZWFyZXN0VGFiQnRuKHRoaXMudGFiQnV0dG9ucyk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgaW5pdGlhbCBhY3RpdmUgdGFiIGluZGV4IGJhc2VkIG9uIHRoZSBmb2xsb3dpbmcgY3JpdGVyaWEuXG4gICAqIDEuIERvZXMgdGhlIFVSTCBpbmNsdWRlIGEgcXVlcnkgcGFyYW0gdGhhdCByZWZsZWN0cyB0aGlzIHRhYnNldCdzIGFjdGl2ZSB0YWI/XG4gICAqIDIuIERvZXMgb25lIG9mIHRoZSB0YWIgY29tcG9uZW50cyBoYXZlIHRoZWlyIGBhY3RpdmVgIHByb3BlcnR5IHNldCB0byBgdHJ1ZWA/XG4gICAqIDMuIElzIHRoZSB0YWJzZXQgY29tcG9uZW50J3MgYGFjdGl2ZWAgcHJvcGVydHkgc2V0IHRvIGEgc3BlY2lmaWMgdGFiIGluZGV4P1xuICAgKi9cbiAgI2dldEluaXRpYWxUYWJJbmRleCgpOiBTa3lUYWJJbmRleCB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IGFjdGl2ZUluZGV4OiBTa3lUYWJJbmRleCB8IHVuZGVmaW5lZCA9XG4gICAgICB0aGlzLiNnZXRBY3RpdmVUYWJJbmRleEJ5UGVybWFsaW5rSWQoKTtcbiAgICBpZiAoYWN0aXZlSW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgYWN0aXZlSW5kZXggPSB0aGlzLiNnZXRBY3RpdmVUYWJDb21wb25lbnQoKT8udGFiSW5kZXhWYWx1ZTtcbiAgICAgIGlmIChhY3RpdmVJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGl2ZUluZGV4ID0gdGhpcy5hY3RpdmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjdGl2ZUluZGV4O1xuICB9XG5cbiAgI2xpc3RlbkFjdGl2ZUluZGV4Q2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuI3RhYnNldFNlcnZpY2UuYWN0aXZlVGFiQ2hhbmdlXG4gICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCB0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCh0YWJDaGFuZ2UpID0+IHtcbiAgICAgICAgdGhpcy4jdXBkYXRlVGFic2V0Q29tcG9uZW50KFxuICAgICAgICAgIHRhYkNoYW5nZS50YWJJbmRleCxcbiAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICB0YWJDaGFuZ2UuaW5pdGlhbCxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgYWN0aXZlVGFiID0gdGhpcy4jZ2V0QWN0aXZlVGFiQ29tcG9uZW50KCk7XG5cbiAgICAgICAgdGhpcy4jdXBkYXRlTGF5b3V0KGFjdGl2ZVRhYj8ubGF5b3V0KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgI3VwZGF0ZUxheW91dChsYXlvdXQ/OiBTa3lUYWJMYXlvdXRUeXBlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI2xheW91dEhvc3RTdmMgJiYgbGF5b3V0KSB7XG4gICAgICB0aGlzLiNsYXlvdXRIb3N0U3ZjLnNldEhvc3RMYXlvdXRGb3JDaGlsZCh7XG4gICAgICAgIGxheW91dCxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmNzc0NsYXNzID0gYHNreS10YWJzZXQtbGF5b3V0LSR7bGF5b3V0fWA7XG4gICAgfVxuICB9XG5cbiAgI2xpc3RlblRhYkNvbXBvbmVudHNTdGF0ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50YWJzKSB7XG4gICAgICBjb21iaW5lTGF0ZXN0KHRoaXMudGFicy5tYXAoKHRhYikgPT4gdGFiLmFjdGl2ZUNoYW5nZSkpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbChcbiAgICAgICAgICAgIHJhY2UoXG4gICAgICAgICAgICAgIHRoaXMuI3RhYkNvbXBvbmVudHNTdGF0ZUNoYW5nZVVuc3Vic2NyaWJlLFxuICAgICAgICAgICAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIC8vIFdhaXQgZm9yIHRoZSB0YWIgY29tcG9uZW50cyB0byByZW5kZXIgY2hhbmdlcyBiZWZvcmUgZmluZGluZyB0aGUgYWN0aXZlIG9uZS5cbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhYkluZGV4ID0gdGhpcy4jZ2V0QWN0aXZlVGFiQ29tcG9uZW50KCk/LnRhYkluZGV4VmFsdWU7XG4gICAgICAgICAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLnNldEFjdGl2ZVRhYkluZGV4KHsgdGFiSW5kZXggfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICBjb21iaW5lTGF0ZXN0KHRoaXMudGFicy5tYXAoKHRhYikgPT4gdGFiLnRhYkluZGV4Q2hhbmdlKSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKFxuICAgICAgICAgICAgcmFjZShcbiAgICAgICAgICAgICAgdGhpcy4jdGFiQ29tcG9uZW50c1N0YXRlQ2hhbmdlVW5zdWJzY3JpYmUsXG4gICAgICAgICAgICAgIHRoaXMuI25nVW5zdWJzY3JpYmUsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgLy8gRG9uJ3QgZW1pdCB0aGUgZmlyc3QgY2hhbmdlLlxuICAgICAgICAgIGlmICh0aGlzLmxhc3RBY3RpdmVUYWJJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBXYWl0IGZvciB0aGUgdGFiIGNvbXBvbmVudHMgdG8gcmVuZGVyIGNoYW5nZXMgYmVmb3JlIHVwZGF0aW5nIHRoZSB2aWV3LlxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuI3VwZGF0ZVRhYnNldENvbXBvbmVudChcbiAgICAgICAgICAgICAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLmN1cnJlbnRBY3RpdmVUYWJJbmRleCxcbiAgICAgICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB0aGlzLiNlbWl0VGFiSW5kZXhDaGFuZ2UoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgIGNvbWJpbmVMYXRlc3QodGhpcy50YWJzLm1hcCgodGFiKSA9PiB0YWIuc3RhdGVDaGFuZ2UpKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwoXG4gICAgICAgICAgICByYWNlKFxuICAgICAgICAgICAgICB0aGlzLiN0YWJDb21wb25lbnRzU3RhdGVDaGFuZ2VVbnN1YnNjcmliZSxcbiAgICAgICAgICAgICAgdGhpcy4jbmdVbnN1YnNjcmliZSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAvLyBXYWl0IGZvciB0aGUgdGFiIGNvbXBvbmVudHMgdG8gcmVuZGVyIGNoYW5nZXMgYmVmb3JlIGZpbmRpbmcgdGhlIGFjdGl2ZSBvbmUuXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLiN1cGRhdGVUYWJzZXRDb21wb25lbnQoXG4gICAgICAgICAgICAgIHRoaXMuI3RhYnNldFNlcnZpY2UuY3VycmVudEFjdGl2ZVRhYkluZGV4LFxuICAgICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgI2luaXRUYWJDb21wb25lbnRzKCk6IHZvaWQge1xuICAgIHRoaXMudGFicz8uZm9yRWFjaCgodGFiKSA9PiB0YWIuaW5pdCgpKTtcbiAgfVxuXG4gICNyZXNldFRhYkNvbXBvbmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy4jdW5zdWJzY3JpYmVUYWJDb21wb25lbnRzU3RhdGVDaGFuZ2UoKTtcbiAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLnVucmVnaXN0ZXJBbGwoKTtcblxuICAgIC8vIElmIHRoZXJlIGFyZSBubyB0YWIgY29tcG9uZW50cywgZG8gYSBoYXJkIHJlc2V0IG9mIHRoZSB2aWV3LlxuICAgIGlmICh0aGlzLnRhYnM/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy4jdXBkYXRlVGFic2V0Q29tcG9uZW50KDAsIHRydWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuI2luaXRUYWJDb21wb25lbnRzKCk7XG4gICAgY29uc3QgYWN0aXZlSW5kZXggPSB0aGlzLiNnZXRBY3RpdmVUYWJDb21wb25lbnQoKT8udGFiSW5kZXhWYWx1ZTtcbiAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLnNldEFjdGl2ZVRhYkluZGV4KFxuICAgICAge1xuICAgICAgICB0YWJJbmRleDogYWN0aXZlSW5kZXgsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBlbWl0Q2hhbmdlOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgKTtcbiAgICB0aGlzLiNsaXN0ZW5UYWJDb21wb25lbnRzU3RhdGVDaGFuZ2UoKTtcbiAgfVxuXG4gICNlbWl0VGFiSW5kZXhDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy50YWJJbmRleGVzQ2hhbmdlLmVtaXQoe1xuICAgICAgdGFiczogdGhpcy50YWJzPy5tYXAoKHRhYikgPT4gKHtcbiAgICAgICAgdGFiSGVhZGluZzogdGFiLnRhYkhlYWRpbmcsXG4gICAgICAgIHRhYkluZGV4OiB0YWIudGFiSW5kZXhWYWx1ZSxcbiAgICAgIH0pKSxcbiAgICB9KTtcbiAgfVxuXG4gICN1bnN1YnNjcmliZVRhYkNvbXBvbmVudHNTdGF0ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLiN0YWJDb21wb25lbnRzU3RhdGVDaGFuZ2VVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jdGFiQ29tcG9uZW50c1N0YXRlQ2hhbmdlVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB0aGlzLiN0YWJDb21wb25lbnRzU3RhdGVDaGFuZ2VVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIH1cblxuICAjbGlzdGVuVGFiQnV0dG9uc092ZXJmbG93Q2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLnJlZ2lzdGVyVGFic2V0KHRoaXMuI2VsZW1lbnRSZWYpO1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLm92ZXJmbG93Q2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChpc092ZXJmbG93aW5nKSA9PiB7XG4gICAgICAgIHRoaXMudGFiRGlzcGxheU1vZGUgPSBpc092ZXJmbG93aW5nID8gJ2Ryb3Bkb3duJyA6ICd0YWJzJztcbiAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0ZW4gZm9yIGJhY2svZm9yd2FyZCBoaXN0b3J5IGJ1dHRvbiBwcmVzc2VzIHRvIGRldGVjdCBxdWVyeSBwYXJhbSBjaGFuZ2VzIGluIHRoZSBVUkwuXG4gICAqL1xuICAjbGlzdGVuTG9jYXRpb25Qb3BTdGF0ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLiNwZXJtYWxpbmtTZXJ2aWNlLnBvcFN0YXRlQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy4jc2V0QWN0aXZlVGFiSW5kZXhCeVBlcm1hbGlua0lkKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gICNzZXRBY3RpdmVUYWJJbmRleEJ5UGVybWFsaW5rSWQoKTogdm9pZCB7XG4gICAgY29uc3QgYWN0aXZlSW5kZXggPSB0aGlzLiNnZXRBY3RpdmVUYWJJbmRleEJ5UGVybWFsaW5rSWQoKTtcbiAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLnNldEFjdGl2ZVRhYkluZGV4KHtcbiAgICAgIHRhYkluZGV4OiBhY3RpdmVJbmRleCxcbiAgICB9KTtcbiAgfVxuXG4gICNnZXRBY3RpdmVUYWJJbmRleEJ5UGVybWFsaW5rSWQoKTogU2t5VGFiSW5kZXggfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLnBlcm1hbGlua0lkKSB7XG4gICAgICBjb25zdCBwYXJhbVZhbHVlID0gdGhpcy4jcGVybWFsaW5rU2VydmljZS5nZXRQYXJhbSh0aGlzLnBlcm1hbGlua0lkKTtcbiAgICAgIGlmIChwYXJhbVZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYnM/LmZpbmQoXG4gICAgICAgICAgKHRhYikgPT4gdGFiLnBlcm1hbGlua1ZhbHVlT3JEZWZhdWx0ID09PSBwYXJhbVZhbHVlLFxuICAgICAgICApPy50YWJJbmRleFZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gICNnZXRBY3RpdmVUYWJDb21wb25lbnQoKTogU2t5VGFiQ29tcG9uZW50IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy50YWJzXG4gICAgICA/LnRvQXJyYXkoKVxuICAgICAgLnJldmVyc2UoKVxuICAgICAgLmZpbmQoKHRhYikgPT4gdGFiLmFjdGl2ZSA9PT0gdHJ1ZSk7XG4gIH1cblxuICAjY3JlYXRlVGFiQnV0dG9ucyhcbiAgICBhY3RpdmVJbmRleDogU2t5VGFiSW5kZXggfCB1bmRlZmluZWQsXG4gICk6IFRhYkJ1dHRvblZpZXdNb2RlbFtdIHtcbiAgICAvLyBTYWZldHkgY2hlY2tcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICghdGhpcy50YWJzKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudGFicy5tYXAoKHRhYiwgaW5kZXgpID0+ICh7XG4gICAgICBhY3RpdmU6IHRoaXMuI3RhYnNldFNlcnZpY2UudGFiSW5kZXhlc0VxdWFsKFxuICAgICAgICB0YWIudGFiSW5kZXhWYWx1ZSxcbiAgICAgICAgYWN0aXZlSW5kZXgsXG4gICAgICApLFxuICAgICAgY2xvc2VhYmxlOiB0YWIuaXNDbG9zZWFibGUoKSxcbiAgICAgIGFyaWFDb250cm9sczogdGFiLnRhYlBhbmVsSWQsXG4gICAgICBkaXNhYmxlZDogdGFiLmRpc2FibGVkLFxuICAgICAgYnV0dG9uSHJlZjogdGFiLmRpc2FibGVkXG4gICAgICAgID8gbnVsbFxuICAgICAgICA6IHRoaXMuI3Blcm1hbGlua1NlcnZpY2UuZ2V0UGFyYW1IcmVmKFxuICAgICAgICAgICAgdGhpcy5wZXJtYWxpbmtJZCxcbiAgICAgICAgICAgIHRhYi5wZXJtYWxpbmtWYWx1ZU9yRGVmYXVsdCxcbiAgICAgICAgICApLFxuICAgICAgYnV0dG9uSWQ6IHRhYi50YWJCdXR0b25JZCxcbiAgICAgIGJ1dHRvblRleHRDb3VudDogdGFiLnRhYkhlYWRlckNvdW50LFxuICAgICAgYnV0dG9uVGV4dDogdGFiLnRhYkhlYWRpbmcsXG4gICAgICB0YWJJbmRleDogdGFiLnRhYkluZGV4VmFsdWUsXG4gICAgICB0YWJOdW1iZXI6IGluZGV4ICsgMSxcbiAgICAgIHRvdGFsVGFic0NvdW50OiB0aGlzLnRhYnMhLmxlbmd0aCxcbiAgICB9KSk7XG4gIH1cblxuICAjdXBkYXRlVGFiQnV0dG9ucyhhY3RpdmVJbmRleDogU2t5VGFiSW5kZXggfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICB0aGlzLnRhYkJ1dHRvbnMuZm9yRWFjaCgoYnV0dG9uKSA9PiB7XG4gICAgICBidXR0b24uYWN0aXZlID0gdGhpcy4jdGFic2V0U2VydmljZS50YWJJbmRleGVzRXF1YWwoXG4gICAgICAgIGJ1dHRvbi50YWJJbmRleCxcbiAgICAgICAgYWN0aXZlSW5kZXgsXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIFVJIGFuZCBzdGF0ZSBvZiB0aGUgdGFic2V0IGNvbXBvbmVudCBhZnRlciB0aGUgdGFiIGluZGV4IG9yXG4gICAqIHRhYiBjb21wb25lbnRzIGhhdmUgY2hhbmdlZC5cbiAgICogQHBhcmFtIGFjdGl2ZUluZGV4IFRoZSBjdXJyZW50bHkgYWN0aXZlIHRhYiBpbmRleC5cbiAgICogQHBhcmFtIHJlZ2VuZXJhdGVUYWJCdXR0b25zIEluZGljYXRlcyBpZiB0YWIgYnV0dG9uIHZpZXcgbW9kZWxzIHNob3VsZCBiZSByZWdlbmVyYXRlZC5cbiAgICogU2V0dGluZyB0aGlzIHZhbHVlIHRvIGBmYWxzZWAgd2lsbCBzaW1wbHkgdXBkYXRlIHRoZSBleGlzdGluZyB0YWIgYnV0dG9ucy4gU2V0dGluZyB0aGlzIHZhbHVlXG4gICAqIHRvIGB0cnVlYCBpcyBvbmx5IG5lY2Vzc2FyeSB3aGVuIHRoZSB1bmRlcmx5aW5nIHRhYiBjb21wb25lbnRzIGhhdmUgY2hhbmdlZCBhbmQgdGhlIHRhYlxuICAgKiBidXR0b25zIG11c3QgcmVmbGVjdCB0aG9zZSBjaGFuZ2VzLlxuICAgKiBAcGFyYW0gaW5pdGlhbCBJbmRpY2F0ZXMgd2hldGhlciB0YWJzIGFyZSBiZWluZyB1cGRhdGVkIGR1cmluZyBpbml0aWFsaXphdGlvbiBvZiB0aGUgdGFic2V0XG4gICAqIGNvbXBvbmVudC4gVGhpcyBpcyBwYXNzZWQgdGhyb3VnaCB0byB0aGUgcGVybWFsaW5rIHNlcnZpY2Ugd2hlcmUgaXQgcHJldmVudHMgYWRkaW5nIGFuIGV4dHJhXG4gICAqIGl0ZW0gdG8gYnJvd3NlciBoaXN0b3J5IHdoZW4gdGhlIFVSTCBpcyB1cGRhdGVkIHdpdGggdGhlIHNlbGVjdGVkIHRhYidzIHBlcm1hbGluayB2YWx1ZS5cbiAgICovXG4gICN1cGRhdGVUYWJzZXRDb21wb25lbnQoXG4gICAgYWN0aXZlSW5kZXg6IFNreVRhYkluZGV4IHwgdW5kZWZpbmVkLFxuICAgIHJlZ2VuZXJhdGVUYWJCdXR0b25zOiBib29sZWFuLFxuICAgIGluaXRpYWw/OiBib29sZWFuLFxuICApOiB2b2lkIHtcbiAgICAvLyBBY3RpdmF0ZS9kZWFjdGl2YXRlIHRhYiBjb21wb25lbnRzLlxuICAgIHRoaXMudGFicz8uZm9yRWFjaCgodGFiKSA9PiB7XG4gICAgICBpZiAodGhpcy4jdGFic2V0U2VydmljZS50YWJJbmRleGVzRXF1YWwodGFiLnRhYkluZGV4VmFsdWUsIGFjdGl2ZUluZGV4KSkge1xuICAgICAgICB0YWIuYWN0aXZhdGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRhYi5kZWFjdGl2YXRlKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBVcGRhdGUgdGhlIHRhYiBidXR0b24gbW9kZWxzLlxuICAgIGlmIChyZWdlbmVyYXRlVGFiQnV0dG9ucyB8fCAhdGhpcy50YWJCdXR0b25zLmxlbmd0aCkge1xuICAgICAgdGhpcy50YWJCdXR0b25zID0gdGhpcy4jY3JlYXRlVGFiQnV0dG9ucyhhY3RpdmVJbmRleCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI3VwZGF0ZVRhYkJ1dHRvbnMoYWN0aXZlSW5kZXgpO1xuICAgIH1cblxuICAgIC8vIFVwZGF0ZSB0aGUgZHJvcGRvd24gdHJpZ2dlciBidXR0b24gdGV4dC5cbiAgICB0aGlzLmRyb3Bkb3duVHJpZ2dlckJ1dHRvblRleHQgPVxuICAgICAgdGhpcy50YWJCdXR0b25zLmZpbmQoKGIpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI3RhYnNldFNlcnZpY2UudGFiSW5kZXhlc0VxdWFsKGIudGFiSW5kZXgsIGFjdGl2ZUluZGV4KTtcbiAgICAgIH0pPy5idXR0b25UZXh0ID8/ICcnO1xuXG4gICAgLy8gU2V0IHRoZSBxdWVyeSBwYXJhbXMgYmFzZWQgb24gYWN0aXZlIHRhYi5cbiAgICBpZiAodGhpcy5wZXJtYWxpbmtJZCkge1xuICAgICAgY29uc3QgYWN0aXZlVGFiQ29tcG9uZW50ID0gdGhpcy50YWJzPy5maW5kKCh0YWIpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI3RhYnNldFNlcnZpY2UudGFiSW5kZXhlc0VxdWFsKFxuICAgICAgICAgIHRhYi50YWJJbmRleFZhbHVlLFxuICAgICAgICAgIGFjdGl2ZUluZGV4LFxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICBpZiAoYWN0aXZlVGFiQ29tcG9uZW50KSB7XG4gICAgICAgIHRoaXMuI3Blcm1hbGlua1NlcnZpY2Uuc2V0UGFyYW0oXG4gICAgICAgICAgdGhpcy5wZXJtYWxpbmtJZCxcbiAgICAgICAgICBhY3RpdmVUYWJDb21wb25lbnQucGVybWFsaW5rVmFsdWVPckRlZmF1bHQsXG4gICAgICAgICAgaW5pdGlhbCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBXYWl0IGZvciB0YWIgYnV0dG9uIHZpZXcgbW9kZWxzIHRvIHJlbmRlciBiZWZvcmUgZ2F1Z2luZyBkaW1lbnNpb25zLlxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2UuZGV0ZWN0T3ZlcmZsb3coKTtcbiAgICB9KTtcblxuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgLy8gRW1pdCB0aGUgbmV3IGFjdGl2ZSBpbmRleCB2YWx1ZSB0byBjb25zdW1lcnMuXG4gICAgaWYgKHRoaXMubGFzdEFjdGl2ZVRhYkluZGV4ICE9PSBhY3RpdmVJbmRleCkge1xuICAgICAgdGhpcy5sYXN0QWN0aXZlVGFiSW5kZXggPSBhY3RpdmVJbmRleDtcbiAgICAgIHRoaXMuYWN0aXZlQ2hhbmdlLmVtaXQoYWN0aXZlSW5kZXgpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInNreS10YWJzZXRcIlxuICByb2xlPVwidGFibGlzdFwiXG4gIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCJcbiAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgW25nQ2xhc3NdPVwiXG4gICAgJ3NreS10YWJzZXQtbW9kZS0nICsgdGFiRGlzcGxheU1vZGUgKyAnIHNreS10YWJzZXQtc3R5bGUtJyArIHRhYlN0eWxlXG4gIFwiXG4gICh3aW5kb3c6cmVzaXplKT1cIm9uV2luZG93UmVzaXplKClcIlxuICAoa2V5ZG93bi5hcnJvd3JpZ2h0KT1cIm9uUmlnaHRLZXlEb3duKClcIlxuICAoa2V5ZG93bi5hcnJvd2xlZnQpPVwib25MZWZ0S2V5RG93bigpXCJcbiAgKGtleWRvd24uaG9tZSk9XCJvbkhvbWVLZXlEb3duKClcIlxuICAoa2V5ZG93bi5lbmQpPVwib25FbmRLZXlEb3duKClcIlxuPlxuICA8c3BhbiBjbGFzcz1cInNreS10YWJzZXQtZHJvcGRvd25cIj5cbiAgICBAaWYgKHRhYkRpc3BsYXlNb2RlID09PSAnZHJvcGRvd24nKSB7XG4gICAgICA8c2t5LWRyb3Bkb3duIGJ1dHRvblR5cGU9XCJ0YWJcIj5cbiAgICAgICAgPHNreS1kcm9wZG93bi1idXR0b24+XG4gICAgICAgICAge3sgZHJvcGRvd25UcmlnZ2VyQnV0dG9uVGV4dCB9fVxuICAgICAgICA8L3NreS1kcm9wZG93bi1idXR0b24+XG4gICAgICAgIDxza3ktZHJvcGRvd24tbWVudT5cbiAgICAgICAgICBAZm9yICh0YWJCdXR0b24gb2YgdGFiQnV0dG9uczsgdHJhY2sgdGFiQnV0dG9uLmJ1dHRvbklkKSB7XG4gICAgICAgICAgICA8c2t5LWRyb3Bkb3duLWl0ZW0gY2xhc3M9XCJza3ktdGFiLWRyb3Bkb3duLW1lbnUtaXRlbVwiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJza3ktdGFiLWRyb3Bkb3duLWl0ZW1cIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICdza3ktdGFiLWRyb3Bkb3duLWl0ZW0tc2VsZWN0ZWQnOiB0YWJCdXR0b24uYWN0aXZlXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICB0YWJCdXR0b25UZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogdGFiQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3NreS1kcm9wZG93bi1pdGVtPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9za3ktZHJvcGRvd24tbWVudT5cbiAgICAgIDwvc2t5LWRyb3Bkb3duPlxuICAgIH1cbiAgPC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cInNreS10YWJzZXQtdGFic1wiPlxuICAgIEBmb3IgKHRhYkJ1dHRvbiBvZiB0YWJCdXR0b25zOyB0cmFjayB0YWJCdXR0b24uYnV0dG9uSWQpIHtcbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICB0YWJCdXR0b25UZW1wbGF0ZTtcbiAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAkaW1wbGljaXQ6IHRhYkJ1dHRvblxuICAgICAgICAgIH1cbiAgICAgICAgXCJcbiAgICAgIC8+XG4gICAgfVxuICA8L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwic2t5LXRhYnNldC1idG5zXCI+XG4gICAgQGlmIChuZXdUYWIub2JzZXJ2ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4taWNvbiBza3ktdGFic2V0LWJ0bi1uZXcgc2t5LW1hcmdpbi1pbmxpbmUtY29tcGFjdFwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidza3l1eF90YWJfYWRkJyB8IHNreUxpYlJlc291cmNlc1wiXG4gICAgICAgIFtza3lUaGVtZUNsYXNzXT1cIntcbiAgICAgICAgICAnc2t5LW1hcmdpbi1pbmxpbmUtc20nOiAnbW9kZXJuJ1xuICAgICAgICB9XCJcbiAgICAgICAgKGNsaWNrKT1cIm9uTmV3VGFiQ2xpY2soKVwiXG4gICAgICA+XG4gICAgICAgIDxza3ktaWNvbiBpY29uPVwicGx1cy1jaXJjbGVcIiBzaXplPVwibGdcIiAvPlxuICAgICAgPC9idXR0b24+XG4gICAgfVxuICAgIEBpZiAob3BlblRhYi5vYnNlcnZlcnMubGVuZ3RoID4gMCkge1xuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1pY29uIHNreS10YWJzZXQtYnRuLW9wZW4gc2t5LW1hcmdpbi1pbmxpbmUtY29tcGFjdFwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidza3l1eF90YWJfb3BlbicgfCBza3lMaWJSZXNvdXJjZXNcIlxuICAgICAgICBbc2t5VGhlbWVDbGFzc109XCJ7XG4gICAgICAgICAgJ3NreS1tYXJnaW4taW5saW5lLXNtJzogJ21vZGVybidcbiAgICAgICAgfVwiXG4gICAgICAgIChjbGljayk9XCJvbk9wZW5UYWJDbGljaygpXCJcbiAgICAgID5cbiAgICAgICAgPHNreS1pY29uIGljb249XCJmb2xkZXItb3Blbi1vXCIgc2l6ZT1cImxnXCIgLz5cbiAgICAgIDwvYnV0dG9uPlxuICAgIH1cbiAgPC9zcGFuPlxuPC9kaXY+XG48bmctY29udGVudCAvPlxuXG48bmctdGVtcGxhdGUgI3RhYkJ1dHRvblRlbXBsYXRlIGxldC10YWJCdXR0b24+XG4gIDxza3ktdGFiLWJ1dHRvblxuICAgIFthY3RpdmVdPVwidGFiQnV0dG9uLmFjdGl2ZVwiXG4gICAgW2FyaWFDb250cm9sc109XCJ0YWJCdXR0b24uYXJpYUNvbnRyb2xzXCJcbiAgICBbYnV0dG9uSHJlZl09XCJ0YWJCdXR0b24uYnV0dG9uSHJlZlwiXG4gICAgW2J1dHRvbklkXT1cInRhYkJ1dHRvbi5idXR0b25JZFwiXG4gICAgW2J1dHRvblRleHRdPVwidGFiQnV0dG9uLmJ1dHRvblRleHRcIlxuICAgIFtidXR0b25UZXh0Q291bnRdPVwidGFiQnV0dG9uLmJ1dHRvblRleHRDb3VudFwiXG4gICAgW2Nsb3NlYWJsZV09XCJ0YWJCdXR0b24uY2xvc2VhYmxlXCJcbiAgICBbZGlzYWJsZWRdPVwidGFiQnV0dG9uLmRpc2FibGVkXCJcbiAgICBbdGFiSW5kZXhdPVwidGFiQnV0dG9uLnRhYkluZGV4XCJcbiAgICBbdGFiU3R5bGVdPVwidGFiU3R5bGVcIlxuICAgIFt0YWJOdW1iZXJdPVwidGFiQnV0dG9uLnRhYk51bWJlclwiXG4gICAgW3RvdGFsVGFic0NvdW50XT1cInRhYkJ1dHRvbi50b3RhbFRhYnNDb3VudFwiXG4gICAgKGJ1dHRvbkNsaWNrKT1cIm9uVGFiQnV0dG9uQ2xpY2sodGFiQnV0dG9uKVwiXG4gICAgKGNsb3NlQ2xpY2spPVwib25UYWJDbG9zZUNsaWNrKHRhYkJ1dHRvbilcIlxuICAvPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -186,7 +186,7 @@ export class SkyVerticalTabComponent {
|
|
|
186
186
|
provide: SkyMediaQueryService,
|
|
187
187
|
useExisting: SkyVerticalTabMediaQueryService,
|
|
188
188
|
},
|
|
189
|
-
], viewQueries: [{ propertyName: "tabButton", first: true, predicate: ["tabButton"], descendants: true }, { propertyName: "tabContent", first: true, predicate: ["tabContentWrapper"], descendants: true }], ngImport: i0, template: "<a\n #tabButton\n class=\"sky-vertical-tab sky-vertical-tabset-button\"\n [attr.aria-controls]=\"isMobile ? null : ariaControls || tabContentPane.id\"\n [attr.aria-disabled]=\"disabled || undefined\"\n [attr.aria-selected]=\"active\"\n [attr.id]=\"tabId\"\n [attr.role]=\"isMobile ? undefined : ariaRole\"\n [ngClass]=\"{\n 'sky-vertical-tab-active': active,\n 'sky-vertical-tabset-button-disabled': disabled,\n 'sky-font-deemphasized': disabled,\n 'sky-deemphasized': disabled\n }\"\n [tabIndex]=\"-1\"\n (click)=\"activateTab()\"\n (keyup.arrowleft)=\"tabButtonArrowLeft($event)\"\n (keyup.enter)=\"tabButtonActivate($event)\"\n (keyup.space)=\"tabButtonActivate($event)\"\n>\n <div class=\"sky-vertical-tab-display\">\n <div class=\"sky-vertical-tab-heading\">\n <span class=\"sky-vertical-tab-heading-value\">{{ tabHeading }}</span>\n @if (tabHeaderCount || tabHeaderCount === 0) {\n <span class=\"sky-vertical-tab-count\"> ({{ tabHeaderCount }}) </span>\n }\n </div>\n @if (errorIndicator) {\n <sky-status-indicator\n class=\"sky-vertical-tab-heading-error\"\n descriptionType=\"error\"\n indicatorType=\"danger\"\n />\n }\n @if (isMobile && showTabRightArrow) {\n <sky-icon class=\"sky-vertical-tab-right-arrow\" icon=\"chevron-right\" />\n }\n </div>\n</a>\n\n<div #tabContentWrapper>\n <div\n #tabContentPane\n class=\"sky-vertical-tab-content-pane\"\n role=\"tabpanel\"\n tabindex=\"0\"\n skyId\n [attr.aria-labelledby]=\"tabId\"\n [ngClass]=\"{ 'sky-vertical-tab-hidden': !active }\"\n >\n <ng-content />\n\n <div></div>\n </div>\n</div>\n", styles: [".sky-vertical-tab{cursor:pointer;padding:7px 0 7px 10px;margin:5px 0 5px 10px;display:flex;text-decoration:none}.sky-vertical-tab:not(.sky-deemphasized){color:#212327}.sky-vertical-tab:hover{background-color:#eeeeef}.sky-vertical-tab:focus-visible{outline:thin dotted;outline:-webkit-focus-ring-color auto 5px}.sky-vertical-tab:hover .sky-vertical-tab-right-arrow{color:#979ba2}.sky-vertical-tab-active{background-color:#eeeeef;color:#212327;padding-left:6px;border-left:4px solid #00b4f1}.sky-vertical-tab-hidden{display:none}.sky-vertical-tab-display{display:flex;justify-content:space-between;flex-grow:1}.sky-vertical-tab-heading-error{padding-left:5px}.sky-vertical-tab-count{margin-left:5px}.sky-vertical-tabset-button-disabled{cursor:not-allowed;pointer-events:none}.sky-vertical-tab-right-arrow{padding:3px 10px 0 0;color:#cdcfd2}.sky-vertical-tab-content-pane:focus-visible{outline:none;border:none}:host-context(.sky-theme-modern) .sky-vertical-tab{color:#686c73;cursor:pointer;padding:10px 0 10px 15px;margin:15px 0 15px 10px}:host-context(.sky-theme-modern) .sky-vertical-tab:not(.sky-vertical-tab-active):not(:active):hover{color:#212327;background-color:transparent;padding-left:14px;border-left:1px solid #00b4f1}:host-context(.sky-theme-modern) .sky-vertical-tab:not(:active):focus-visible{outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}:host-context(.sky-theme-modern) .sky-vertical-tab:focus:active:hover{outline:none;background:none}:host-context(.sky-theme-modern) .sky-vertical-tab:active{border-left:4px solid #00b4f1;color:#212327;padding-left:11px}:host-context(.sky-theme-modern) .sky-vertical-tab .sky-vertical-tab-heading-error{padding-left:10px;position:relative;top:-2px}:host-context(.sky-theme-modern) .sky-vertical-tab-active{background:none;color:#212327;padding-left:11px;border-left:4px solid #1870B8}.sky-theme-modern .sky-vertical-tab{color:#686c73;cursor:pointer;padding:10px 0 10px 15px;margin:15px 0 15px 10px}.sky-theme-modern .sky-vertical-tab:not(.sky-vertical-tab-active):not(:active):hover{color:#212327;background-color:transparent;padding-left:14px;border-left:1px solid #00b4f1}.sky-theme-modern .sky-vertical-tab:not(:active):focus-visible{outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}.sky-theme-modern .sky-vertical-tab:focus:active:hover{outline:none;background:none}.sky-theme-modern .sky-vertical-tab:active{border-left:4px solid #00b4f1;color:#212327;padding-left:11px}.sky-theme-modern .sky-vertical-tab .sky-vertical-tab-heading-error{padding-left:10px;position:relative;top:-2px}.sky-theme-modern .sky-vertical-tab-active{background:none;color:#212327;padding-left:11px;border-left:4px solid #1870B8}:host-context(.sky-sectioned-form-tabs-only) .sky-vertical-tab{margin-left:0}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i6.λ1, selector: "sky-icon", inputs: ["icon", "iconName", "iconType", "size", "fixedWidth", "variant"] }, { kind: "directive", type: i7.λ2, selector: "[skyId]", exportAs: ["skyId"] }, { kind: "component", type: i8.λ10, selector: "sky-status-indicator", inputs: ["indicatorType", "descriptionType", "customDescription", "helpPopoverContent", "helpPopoverTitle", "helpKey"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
189
|
+
], viewQueries: [{ propertyName: "tabButton", first: true, predicate: ["tabButton"], descendants: true }, { propertyName: "tabContent", first: true, predicate: ["tabContentWrapper"], descendants: true }], ngImport: i0, template: "<a\n #tabButton\n class=\"sky-vertical-tab sky-vertical-tabset-button\"\n [attr.aria-controls]=\"isMobile ? null : ariaControls || tabContentPane.id\"\n [attr.aria-disabled]=\"disabled || undefined\"\n [attr.aria-selected]=\"active\"\n [attr.id]=\"tabId\"\n [attr.role]=\"isMobile ? undefined : ariaRole\"\n [ngClass]=\"{\n 'sky-vertical-tab-active': active,\n 'sky-vertical-tabset-button-disabled': disabled,\n 'sky-font-deemphasized': disabled,\n 'sky-deemphasized': disabled\n }\"\n [tabIndex]=\"-1\"\n (click)=\"activateTab()\"\n (keyup.arrowleft)=\"tabButtonArrowLeft($event)\"\n (keyup.enter)=\"tabButtonActivate($event)\"\n (keyup.space)=\"tabButtonActivate($event)\"\n>\n <div class=\"sky-vertical-tab-display\">\n <div class=\"sky-vertical-tab-heading\">\n <span class=\"sky-vertical-tab-heading-value\">{{ tabHeading }}</span>\n @if (tabHeaderCount || tabHeaderCount === 0) {\n <span class=\"sky-vertical-tab-count\"> ({{ tabHeaderCount }}) </span>\n }\n </div>\n @if (errorIndicator) {\n <sky-status-indicator\n class=\"sky-vertical-tab-heading-error\"\n descriptionType=\"error\"\n indicatorType=\"danger\"\n />\n }\n @if (isMobile && showTabRightArrow) {\n <sky-icon class=\"sky-vertical-tab-right-arrow\" icon=\"chevron-right\" />\n }\n </div>\n</a>\n\n<div #tabContentWrapper>\n <div\n #tabContentPane\n class=\"sky-vertical-tab-content-pane\"\n role=\"tabpanel\"\n tabindex=\"0\"\n skyId\n [attr.aria-labelledby]=\"tabId\"\n [ngClass]=\"{ 'sky-vertical-tab-hidden': !active }\"\n >\n <ng-content />\n\n <div></div>\n </div>\n</div>\n", styles: ["body:not(.sky-theme-modern){--sky-override-required-color: var(--sky-highlight-color-danger);--sky-override-required-space: 5px}.sky-vertical-tab{cursor:pointer;padding:7px 0 7px 10px;margin:5px 0 5px 10px;display:flex;text-decoration:none}.sky-vertical-tab:not(.sky-deemphasized){color:#212327}.sky-vertical-tab:hover{background-color:#eeeeef}.sky-vertical-tab:focus-visible{outline:thin dotted;outline:-webkit-focus-ring-color auto 5px}.sky-vertical-tab:hover .sky-vertical-tab-right-arrow{color:#979ba2}.sky-vertical-tab-active{background-color:#eeeeef;color:#212327;padding-left:6px;border-left:4px solid #00b4f1}.sky-vertical-tab-hidden{display:none}.sky-vertical-tab-display{display:flex;justify-content:space-between;flex-grow:1}.sky-vertical-tab-heading-error{padding-left:5px}.sky-vertical-tab-count{margin-left:5px}.sky-vertical-tabset-button-disabled{cursor:not-allowed;pointer-events:none}.sky-vertical-tab-right-arrow{padding:3px 10px 0 0;color:#cdcfd2}.sky-vertical-tab-content-pane:focus-visible{outline:none;border:none}:host-context(.sky-theme-modern) .sky-vertical-tab{color:#686c73;cursor:pointer;padding:10px 0 10px 15px;margin:15px 0 15px 10px}:host-context(.sky-theme-modern) .sky-vertical-tab:not(.sky-vertical-tab-active):not(:active):hover{color:#212327;background-color:transparent;padding-left:14px;border-left:1px solid #00b4f1}:host-context(.sky-theme-modern) .sky-vertical-tab:not(:active):focus-visible{outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}:host-context(.sky-theme-modern) .sky-vertical-tab:focus:active:hover{outline:none;background:none}:host-context(.sky-theme-modern) .sky-vertical-tab:active{border-left:4px solid #00b4f1;color:#212327;padding-left:11px}:host-context(.sky-theme-modern) .sky-vertical-tab .sky-vertical-tab-heading-error{padding-left:10px;position:relative;top:-2px}:host-context(.sky-theme-modern) .sky-vertical-tab-active{background:none;color:#212327;padding-left:11px;border-left:4px solid #1870B8}.sky-theme-modern .sky-vertical-tab{color:#686c73;cursor:pointer;padding:10px 0 10px 15px;margin:15px 0 15px 10px}.sky-theme-modern .sky-vertical-tab:not(.sky-vertical-tab-active):not(:active):hover{color:#212327;background-color:transparent;padding-left:14px;border-left:1px solid #00b4f1}.sky-theme-modern .sky-vertical-tab:not(:active):focus-visible{outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}.sky-theme-modern .sky-vertical-tab:focus:active:hover{outline:none;background:none}.sky-theme-modern .sky-vertical-tab:active{border-left:4px solid #00b4f1;color:#212327;padding-left:11px}.sky-theme-modern .sky-vertical-tab .sky-vertical-tab-heading-error{padding-left:10px;position:relative;top:-2px}.sky-theme-modern .sky-vertical-tab-active{background:none;color:#212327;padding-left:11px;border-left:4px solid #1870B8}:host-context(.sky-sectioned-form-tabs-only) .sky-vertical-tab{margin-left:0}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i6.λ1, selector: "sky-icon", inputs: ["icon", "iconName", "iconType", "size", "fixedWidth", "variant"] }, { kind: "directive", type: i7.λ2, selector: "[skyId]", exportAs: ["skyId"] }, { kind: "component", type: i8.λ10, selector: "sky-status-indicator", inputs: ["indicatorType", "descriptionType", "customDescription", "helpPopoverContent", "helpPopoverTitle", "helpKey"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
190
190
|
}
|
|
191
191
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SkyVerticalTabComponent, decorators: [{
|
|
192
192
|
type: Component,
|
|
@@ -196,7 +196,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
196
196
|
provide: SkyMediaQueryService,
|
|
197
197
|
useExisting: SkyVerticalTabMediaQueryService,
|
|
198
198
|
},
|
|
199
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<a\n #tabButton\n class=\"sky-vertical-tab sky-vertical-tabset-button\"\n [attr.aria-controls]=\"isMobile ? null : ariaControls || tabContentPane.id\"\n [attr.aria-disabled]=\"disabled || undefined\"\n [attr.aria-selected]=\"active\"\n [attr.id]=\"tabId\"\n [attr.role]=\"isMobile ? undefined : ariaRole\"\n [ngClass]=\"{\n 'sky-vertical-tab-active': active,\n 'sky-vertical-tabset-button-disabled': disabled,\n 'sky-font-deemphasized': disabled,\n 'sky-deemphasized': disabled\n }\"\n [tabIndex]=\"-1\"\n (click)=\"activateTab()\"\n (keyup.arrowleft)=\"tabButtonArrowLeft($event)\"\n (keyup.enter)=\"tabButtonActivate($event)\"\n (keyup.space)=\"tabButtonActivate($event)\"\n>\n <div class=\"sky-vertical-tab-display\">\n <div class=\"sky-vertical-tab-heading\">\n <span class=\"sky-vertical-tab-heading-value\">{{ tabHeading }}</span>\n @if (tabHeaderCount || tabHeaderCount === 0) {\n <span class=\"sky-vertical-tab-count\"> ({{ tabHeaderCount }}) </span>\n }\n </div>\n @if (errorIndicator) {\n <sky-status-indicator\n class=\"sky-vertical-tab-heading-error\"\n descriptionType=\"error\"\n indicatorType=\"danger\"\n />\n }\n @if (isMobile && showTabRightArrow) {\n <sky-icon class=\"sky-vertical-tab-right-arrow\" icon=\"chevron-right\" />\n }\n </div>\n</a>\n\n<div #tabContentWrapper>\n <div\n #tabContentPane\n class=\"sky-vertical-tab-content-pane\"\n role=\"tabpanel\"\n tabindex=\"0\"\n skyId\n [attr.aria-labelledby]=\"tabId\"\n [ngClass]=\"{ 'sky-vertical-tab-hidden': !active }\"\n >\n <ng-content />\n\n <div></div>\n </div>\n</div>\n", styles: [".sky-vertical-tab{cursor:pointer;padding:7px 0 7px 10px;margin:5px 0 5px 10px;display:flex;text-decoration:none}.sky-vertical-tab:not(.sky-deemphasized){color:#212327}.sky-vertical-tab:hover{background-color:#eeeeef}.sky-vertical-tab:focus-visible{outline:thin dotted;outline:-webkit-focus-ring-color auto 5px}.sky-vertical-tab:hover .sky-vertical-tab-right-arrow{color:#979ba2}.sky-vertical-tab-active{background-color:#eeeeef;color:#212327;padding-left:6px;border-left:4px solid #00b4f1}.sky-vertical-tab-hidden{display:none}.sky-vertical-tab-display{display:flex;justify-content:space-between;flex-grow:1}.sky-vertical-tab-heading-error{padding-left:5px}.sky-vertical-tab-count{margin-left:5px}.sky-vertical-tabset-button-disabled{cursor:not-allowed;pointer-events:none}.sky-vertical-tab-right-arrow{padding:3px 10px 0 0;color:#cdcfd2}.sky-vertical-tab-content-pane:focus-visible{outline:none;border:none}:host-context(.sky-theme-modern) .sky-vertical-tab{color:#686c73;cursor:pointer;padding:10px 0 10px 15px;margin:15px 0 15px 10px}:host-context(.sky-theme-modern) .sky-vertical-tab:not(.sky-vertical-tab-active):not(:active):hover{color:#212327;background-color:transparent;padding-left:14px;border-left:1px solid #00b4f1}:host-context(.sky-theme-modern) .sky-vertical-tab:not(:active):focus-visible{outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}:host-context(.sky-theme-modern) .sky-vertical-tab:focus:active:hover{outline:none;background:none}:host-context(.sky-theme-modern) .sky-vertical-tab:active{border-left:4px solid #00b4f1;color:#212327;padding-left:11px}:host-context(.sky-theme-modern) .sky-vertical-tab .sky-vertical-tab-heading-error{padding-left:10px;position:relative;top:-2px}:host-context(.sky-theme-modern) .sky-vertical-tab-active{background:none;color:#212327;padding-left:11px;border-left:4px solid #1870B8}.sky-theme-modern .sky-vertical-tab{color:#686c73;cursor:pointer;padding:10px 0 10px 15px;margin:15px 0 15px 10px}.sky-theme-modern .sky-vertical-tab:not(.sky-vertical-tab-active):not(:active):hover{color:#212327;background-color:transparent;padding-left:14px;border-left:1px solid #00b4f1}.sky-theme-modern .sky-vertical-tab:not(:active):focus-visible{outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}.sky-theme-modern .sky-vertical-tab:focus:active:hover{outline:none;background:none}.sky-theme-modern .sky-vertical-tab:active{border-left:4px solid #00b4f1;color:#212327;padding-left:11px}.sky-theme-modern .sky-vertical-tab .sky-vertical-tab-heading-error{padding-left:10px;position:relative;top:-2px}.sky-theme-modern .sky-vertical-tab-active{background:none;color:#212327;padding-left:11px;border-left:4px solid #1870B8}:host-context(.sky-sectioned-form-tabs-only) .sky-vertical-tab{margin-left:0}\n"] }]
|
|
199
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<a\n #tabButton\n class=\"sky-vertical-tab sky-vertical-tabset-button\"\n [attr.aria-controls]=\"isMobile ? null : ariaControls || tabContentPane.id\"\n [attr.aria-disabled]=\"disabled || undefined\"\n [attr.aria-selected]=\"active\"\n [attr.id]=\"tabId\"\n [attr.role]=\"isMobile ? undefined : ariaRole\"\n [ngClass]=\"{\n 'sky-vertical-tab-active': active,\n 'sky-vertical-tabset-button-disabled': disabled,\n 'sky-font-deemphasized': disabled,\n 'sky-deemphasized': disabled\n }\"\n [tabIndex]=\"-1\"\n (click)=\"activateTab()\"\n (keyup.arrowleft)=\"tabButtonArrowLeft($event)\"\n (keyup.enter)=\"tabButtonActivate($event)\"\n (keyup.space)=\"tabButtonActivate($event)\"\n>\n <div class=\"sky-vertical-tab-display\">\n <div class=\"sky-vertical-tab-heading\">\n <span class=\"sky-vertical-tab-heading-value\">{{ tabHeading }}</span>\n @if (tabHeaderCount || tabHeaderCount === 0) {\n <span class=\"sky-vertical-tab-count\"> ({{ tabHeaderCount }}) </span>\n }\n </div>\n @if (errorIndicator) {\n <sky-status-indicator\n class=\"sky-vertical-tab-heading-error\"\n descriptionType=\"error\"\n indicatorType=\"danger\"\n />\n }\n @if (isMobile && showTabRightArrow) {\n <sky-icon class=\"sky-vertical-tab-right-arrow\" icon=\"chevron-right\" />\n }\n </div>\n</a>\n\n<div #tabContentWrapper>\n <div\n #tabContentPane\n class=\"sky-vertical-tab-content-pane\"\n role=\"tabpanel\"\n tabindex=\"0\"\n skyId\n [attr.aria-labelledby]=\"tabId\"\n [ngClass]=\"{ 'sky-vertical-tab-hidden': !active }\"\n >\n <ng-content />\n\n <div></div>\n </div>\n</div>\n", styles: ["body:not(.sky-theme-modern){--sky-override-required-color: var(--sky-highlight-color-danger);--sky-override-required-space: 5px}.sky-vertical-tab{cursor:pointer;padding:7px 0 7px 10px;margin:5px 0 5px 10px;display:flex;text-decoration:none}.sky-vertical-tab:not(.sky-deemphasized){color:#212327}.sky-vertical-tab:hover{background-color:#eeeeef}.sky-vertical-tab:focus-visible{outline:thin dotted;outline:-webkit-focus-ring-color auto 5px}.sky-vertical-tab:hover .sky-vertical-tab-right-arrow{color:#979ba2}.sky-vertical-tab-active{background-color:#eeeeef;color:#212327;padding-left:6px;border-left:4px solid #00b4f1}.sky-vertical-tab-hidden{display:none}.sky-vertical-tab-display{display:flex;justify-content:space-between;flex-grow:1}.sky-vertical-tab-heading-error{padding-left:5px}.sky-vertical-tab-count{margin-left:5px}.sky-vertical-tabset-button-disabled{cursor:not-allowed;pointer-events:none}.sky-vertical-tab-right-arrow{padding:3px 10px 0 0;color:#cdcfd2}.sky-vertical-tab-content-pane:focus-visible{outline:none;border:none}:host-context(.sky-theme-modern) .sky-vertical-tab{color:#686c73;cursor:pointer;padding:10px 0 10px 15px;margin:15px 0 15px 10px}:host-context(.sky-theme-modern) .sky-vertical-tab:not(.sky-vertical-tab-active):not(:active):hover{color:#212327;background-color:transparent;padding-left:14px;border-left:1px solid #00b4f1}:host-context(.sky-theme-modern) .sky-vertical-tab:not(:active):focus-visible{outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}:host-context(.sky-theme-modern) .sky-vertical-tab:focus:active:hover{outline:none;background:none}:host-context(.sky-theme-modern) .sky-vertical-tab:active{border-left:4px solid #00b4f1;color:#212327;padding-left:11px}:host-context(.sky-theme-modern) .sky-vertical-tab .sky-vertical-tab-heading-error{padding-left:10px;position:relative;top:-2px}:host-context(.sky-theme-modern) .sky-vertical-tab-active{background:none;color:#212327;padding-left:11px;border-left:4px solid #1870B8}.sky-theme-modern .sky-vertical-tab{color:#686c73;cursor:pointer;padding:10px 0 10px 15px;margin:15px 0 15px 10px}.sky-theme-modern .sky-vertical-tab:not(.sky-vertical-tab-active):not(:active):hover{color:#212327;background-color:transparent;padding-left:14px;border-left:1px solid #00b4f1}.sky-theme-modern .sky-vertical-tab:not(:active):focus-visible{outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}.sky-theme-modern .sky-vertical-tab:focus:active:hover{outline:none;background:none}.sky-theme-modern .sky-vertical-tab:active{border-left:4px solid #00b4f1;color:#212327;padding-left:11px}.sky-theme-modern .sky-vertical-tab .sky-vertical-tab-heading-error{padding-left:10px;position:relative;top:-2px}.sky-theme-modern .sky-vertical-tab-active{background:none;color:#212327;padding-left:11px;border-left:4px solid #1870B8}:host-context(.sky-sectioned-form-tabs-only) .sky-vertical-tab{margin-left:0}\n"] }]
|
|
200
200
|
}], ctorParameters: () => [{ type: i1.SkyVerticalTabsetAdapterService }, { type: i0.ChangeDetectorRef }, { type: i2.SkyVerticalTabsetService }, { type: i3.SkyVerticalTabMediaQueryService }, { type: i4.SkyTabIdService, decorators: [{
|
|
201
201
|
type: Optional
|
|
202
202
|
}] }], propDecorators: { active: [{
|
|
@@ -131,11 +131,11 @@ export class SkyVerticalTabsetGroupComponent {
|
|
|
131
131
|
this.#adapterService.focusButton(this.groupHeadingButton);
|
|
132
132
|
}
|
|
133
133
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SkyVerticalTabsetGroupComponent, deps: [{ token: i1.SkyVerticalTabsetService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
134
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: SkyVerticalTabsetGroupComponent, selector: "sky-vertical-tabset-group", inputs: { disabled: "disabled", groupHeading: "groupHeading", open: "open" }, providers: [SkyVerticalTabsetGroupService], queries: [{ propertyName: "tabs", predicate: SkyVerticalTabComponent }], viewQueries: [{ propertyName: "groupHeadingButton", first: true, predicate: ["groupHeadingButton"], descendants: true }], ngImport: i0, template: "<div class=\"sky-vertical-tabset-group\">\n <!-- [ngClass] includes font classes for both modern and default styles -->\n <div\n class=\"sky-vertical-tabset-group-header\"\n [ngClass]=\"{\n 'sky-vertical-tabset-group-header-active sky-font-emphasized': isActive(),\n 'sky-vertical-tabset-group-header-sub-open': open,\n 'sky-font-deemphasized': disabled,\n 'sky-deemphasized': disabled\n }\"\n >\n <button\n #groupHeadingButton\n class=\"sky-padding-even-default sky-vertical-tabset-button\"\n role=\"tab\"\n type=\"button\"\n [attr.aria-controls]=\"groupContent.id\"\n [attr.aria-disabled]=\"disabled || undefined\"\n [attr.aria-expanded]=\"!disabled && open\"\n [id]=\"groupId\"\n [ngClass]=\"{\n 'sky-vertical-tabset-button-disabled': disabled\n }\"\n [tabIndex]=\"-1\"\n (click)=\"toggleMenuOpen()\"\n (keyup.arrowleft)=\"groupButtonArrowLeft($event)\"\n (keyup.arrowright)=\"groupButtonArrowRight($event)\"\n >\n {{ groupHeading }}\n <sky-expansion-indicator\n class=\"sky-vertical-tabset-group-expansion-indicator\"\n [direction]=\"!disabled && open ? 'up' : 'down'\"\n />\n </button>\n </div>\n <div\n #groupContent\n class=\"sky-vertical-tabset-group-content\"\n skyId\n [attr.labelledby]=\"groupId\"\n [@.disabled]=\"animationDisabled\"\n [@skyAnimationSlide]=\"slideDirection\"\n (@skyAnimationSlide.done)=\"updateSlideDirection($event)\"\n >\n <ng-content />\n </div>\n</div>\n", styles: [".sky-vertical-tabset-group{border-bottom:1px solid #e2e3e4;margin:5px 0 5px 5px}.sky-vertical-tabset-group-header button{cursor:pointer;display:flex;justify-content:space-between;border:none;width:100%;text-align:left;background:none}.sky-vertical-tabset-group-content{overflow:hidden;border-top:1px solid #e2e3e4}:host ::ng-deep .sky-vertical-tabset-group-expansion-indicator>button{font-size:14px!important}.sky-vertical-tabset-button-disabled{cursor:not-allowed;pointer-events:none}:host-context(.sky-theme-modern) .sky-vertical-tabset-group{border:none;margin:15px 0}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-content{border:none;padding-left:10px}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-header{position:relative}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-expansion-indicator{position:absolute;top:6px;right:5px}.sky-theme-modern .sky-vertical-tabset-group{border:none;margin:15px 0}.sky-theme-modern .sky-vertical-tabset-group-content{border:none;padding-left:10px}.sky-theme-modern .sky-vertical-tabset-group-header{position:relative}.sky-theme-modern .sky-vertical-tabset-group-expansion-indicator{position:absolute;top:6px;right:5px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.λ2, selector: "[skyId]", exportAs: ["skyId"] }, { kind: "component", type: i4.λ15, selector: "sky-expansion-indicator", inputs: ["direction"] }], animations: [skyAnimationSlide], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
134
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: SkyVerticalTabsetGroupComponent, selector: "sky-vertical-tabset-group", inputs: { disabled: "disabled", groupHeading: "groupHeading", open: "open" }, providers: [SkyVerticalTabsetGroupService], queries: [{ propertyName: "tabs", predicate: SkyVerticalTabComponent }], viewQueries: [{ propertyName: "groupHeadingButton", first: true, predicate: ["groupHeadingButton"], descendants: true }], ngImport: i0, template: "<div class=\"sky-vertical-tabset-group\">\n <!-- [ngClass] includes font classes for both modern and default styles -->\n <div\n class=\"sky-vertical-tabset-group-header\"\n [ngClass]=\"{\n 'sky-vertical-tabset-group-header-active sky-font-emphasized': isActive(),\n 'sky-vertical-tabset-group-header-sub-open': open,\n 'sky-font-deemphasized': disabled,\n 'sky-deemphasized': disabled\n }\"\n >\n <button\n #groupHeadingButton\n class=\"sky-padding-even-default sky-vertical-tabset-button\"\n role=\"tab\"\n type=\"button\"\n [attr.aria-controls]=\"groupContent.id\"\n [attr.aria-disabled]=\"disabled || undefined\"\n [attr.aria-expanded]=\"!disabled && open\"\n [id]=\"groupId\"\n [ngClass]=\"{\n 'sky-vertical-tabset-button-disabled': disabled\n }\"\n [tabIndex]=\"-1\"\n (click)=\"toggleMenuOpen()\"\n (keyup.arrowleft)=\"groupButtonArrowLeft($event)\"\n (keyup.arrowright)=\"groupButtonArrowRight($event)\"\n >\n {{ groupHeading }}\n <sky-expansion-indicator\n class=\"sky-vertical-tabset-group-expansion-indicator\"\n [direction]=\"!disabled && open ? 'up' : 'down'\"\n />\n </button>\n </div>\n <div\n #groupContent\n class=\"sky-vertical-tabset-group-content\"\n skyId\n [attr.labelledby]=\"groupId\"\n [@.disabled]=\"animationDisabled\"\n [@skyAnimationSlide]=\"slideDirection\"\n (@skyAnimationSlide.done)=\"updateSlideDirection($event)\"\n >\n <ng-content />\n </div>\n</div>\n", styles: ["body:not(.sky-theme-modern){--sky-override-required-color: var(--sky-highlight-color-danger);--sky-override-required-space: 5px}.sky-vertical-tabset-group{border-bottom:1px solid #e2e3e4;margin:5px 0 5px 5px}.sky-vertical-tabset-group-header button{cursor:pointer;display:flex;justify-content:space-between;border:none;width:100%;text-align:left;background:none}.sky-vertical-tabset-group-content{overflow:hidden;border-top:1px solid #e2e3e4}:host ::ng-deep .sky-vertical-tabset-group-expansion-indicator>button{font-size:14px!important}.sky-vertical-tabset-button-disabled{cursor:not-allowed;pointer-events:none}:host-context(.sky-theme-modern) .sky-vertical-tabset-group{border:none;margin:15px 0}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-content{border:none;padding-left:10px}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-header{position:relative}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-expansion-indicator{position:absolute;top:6px;right:5px}.sky-theme-modern .sky-vertical-tabset-group{border:none;margin:15px 0}.sky-theme-modern .sky-vertical-tabset-group-content{border:none;padding-left:10px}.sky-theme-modern .sky-vertical-tabset-group-header{position:relative}.sky-theme-modern .sky-vertical-tabset-group-expansion-indicator{position:absolute;top:6px;right:5px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.λ2, selector: "[skyId]", exportAs: ["skyId"] }, { kind: "component", type: i4.λ15, selector: "sky-expansion-indicator", inputs: ["direction"] }], animations: [skyAnimationSlide], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
135
135
|
}
|
|
136
136
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SkyVerticalTabsetGroupComponent, decorators: [{
|
|
137
137
|
type: Component,
|
|
138
|
-
args: [{ selector: 'sky-vertical-tabset-group', changeDetection: ChangeDetectionStrategy.OnPush, animations: [skyAnimationSlide], providers: [SkyVerticalTabsetGroupService], template: "<div class=\"sky-vertical-tabset-group\">\n <!-- [ngClass] includes font classes for both modern and default styles -->\n <div\n class=\"sky-vertical-tabset-group-header\"\n [ngClass]=\"{\n 'sky-vertical-tabset-group-header-active sky-font-emphasized': isActive(),\n 'sky-vertical-tabset-group-header-sub-open': open,\n 'sky-font-deemphasized': disabled,\n 'sky-deemphasized': disabled\n }\"\n >\n <button\n #groupHeadingButton\n class=\"sky-padding-even-default sky-vertical-tabset-button\"\n role=\"tab\"\n type=\"button\"\n [attr.aria-controls]=\"groupContent.id\"\n [attr.aria-disabled]=\"disabled || undefined\"\n [attr.aria-expanded]=\"!disabled && open\"\n [id]=\"groupId\"\n [ngClass]=\"{\n 'sky-vertical-tabset-button-disabled': disabled\n }\"\n [tabIndex]=\"-1\"\n (click)=\"toggleMenuOpen()\"\n (keyup.arrowleft)=\"groupButtonArrowLeft($event)\"\n (keyup.arrowright)=\"groupButtonArrowRight($event)\"\n >\n {{ groupHeading }}\n <sky-expansion-indicator\n class=\"sky-vertical-tabset-group-expansion-indicator\"\n [direction]=\"!disabled && open ? 'up' : 'down'\"\n />\n </button>\n </div>\n <div\n #groupContent\n class=\"sky-vertical-tabset-group-content\"\n skyId\n [attr.labelledby]=\"groupId\"\n [@.disabled]=\"animationDisabled\"\n [@skyAnimationSlide]=\"slideDirection\"\n (@skyAnimationSlide.done)=\"updateSlideDirection($event)\"\n >\n <ng-content />\n </div>\n</div>\n", styles: [".sky-vertical-tabset-group{border-bottom:1px solid #e2e3e4;margin:5px 0 5px 5px}.sky-vertical-tabset-group-header button{cursor:pointer;display:flex;justify-content:space-between;border:none;width:100%;text-align:left;background:none}.sky-vertical-tabset-group-content{overflow:hidden;border-top:1px solid #e2e3e4}:host ::ng-deep .sky-vertical-tabset-group-expansion-indicator>button{font-size:14px!important}.sky-vertical-tabset-button-disabled{cursor:not-allowed;pointer-events:none}:host-context(.sky-theme-modern) .sky-vertical-tabset-group{border:none;margin:15px 0}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-content{border:none;padding-left:10px}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-header{position:relative}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-expansion-indicator{position:absolute;top:6px;right:5px}.sky-theme-modern .sky-vertical-tabset-group{border:none;margin:15px 0}.sky-theme-modern .sky-vertical-tabset-group-content{border:none;padding-left:10px}.sky-theme-modern .sky-vertical-tabset-group-header{position:relative}.sky-theme-modern .sky-vertical-tabset-group-expansion-indicator{position:absolute;top:6px;right:5px}\n"] }]
|
|
138
|
+
args: [{ selector: 'sky-vertical-tabset-group', changeDetection: ChangeDetectionStrategy.OnPush, animations: [skyAnimationSlide], providers: [SkyVerticalTabsetGroupService], template: "<div class=\"sky-vertical-tabset-group\">\n <!-- [ngClass] includes font classes for both modern and default styles -->\n <div\n class=\"sky-vertical-tabset-group-header\"\n [ngClass]=\"{\n 'sky-vertical-tabset-group-header-active sky-font-emphasized': isActive(),\n 'sky-vertical-tabset-group-header-sub-open': open,\n 'sky-font-deemphasized': disabled,\n 'sky-deemphasized': disabled\n }\"\n >\n <button\n #groupHeadingButton\n class=\"sky-padding-even-default sky-vertical-tabset-button\"\n role=\"tab\"\n type=\"button\"\n [attr.aria-controls]=\"groupContent.id\"\n [attr.aria-disabled]=\"disabled || undefined\"\n [attr.aria-expanded]=\"!disabled && open\"\n [id]=\"groupId\"\n [ngClass]=\"{\n 'sky-vertical-tabset-button-disabled': disabled\n }\"\n [tabIndex]=\"-1\"\n (click)=\"toggleMenuOpen()\"\n (keyup.arrowleft)=\"groupButtonArrowLeft($event)\"\n (keyup.arrowright)=\"groupButtonArrowRight($event)\"\n >\n {{ groupHeading }}\n <sky-expansion-indicator\n class=\"sky-vertical-tabset-group-expansion-indicator\"\n [direction]=\"!disabled && open ? 'up' : 'down'\"\n />\n </button>\n </div>\n <div\n #groupContent\n class=\"sky-vertical-tabset-group-content\"\n skyId\n [attr.labelledby]=\"groupId\"\n [@.disabled]=\"animationDisabled\"\n [@skyAnimationSlide]=\"slideDirection\"\n (@skyAnimationSlide.done)=\"updateSlideDirection($event)\"\n >\n <ng-content />\n </div>\n</div>\n", styles: ["body:not(.sky-theme-modern){--sky-override-required-color: var(--sky-highlight-color-danger);--sky-override-required-space: 5px}.sky-vertical-tabset-group{border-bottom:1px solid #e2e3e4;margin:5px 0 5px 5px}.sky-vertical-tabset-group-header button{cursor:pointer;display:flex;justify-content:space-between;border:none;width:100%;text-align:left;background:none}.sky-vertical-tabset-group-content{overflow:hidden;border-top:1px solid #e2e3e4}:host ::ng-deep .sky-vertical-tabset-group-expansion-indicator>button{font-size:14px!important}.sky-vertical-tabset-button-disabled{cursor:not-allowed;pointer-events:none}:host-context(.sky-theme-modern) .sky-vertical-tabset-group{border:none;margin:15px 0}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-content{border:none;padding-left:10px}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-header{position:relative}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-expansion-indicator{position:absolute;top:6px;right:5px}.sky-theme-modern .sky-vertical-tabset-group{border:none;margin:15px 0}.sky-theme-modern .sky-vertical-tabset-group-content{border:none;padding-left:10px}.sky-theme-modern .sky-vertical-tabset-group-header{position:relative}.sky-theme-modern .sky-vertical-tabset-group-expansion-indicator{position:absolute;top:6px;right:5px}\n"] }]
|
|
139
139
|
}], ctorParameters: () => [{ type: i1.SkyVerticalTabsetService }, { type: i0.ChangeDetectorRef }], propDecorators: { disabled: [{
|
|
140
140
|
type: Input
|
|
141
141
|
}], groupHeading: [{
|
|
@@ -149,4 +149,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
149
149
|
type: ViewChild,
|
|
150
150
|
args: ['groupHeadingButton']
|
|
151
151
|
}] } });
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtdGFic2V0LWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy92ZXJ0aWNhbC10YWJzZXQvdmVydGljYWwtdGFic2V0LWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy92ZXJ0aWNhbC10YWJzZXQvdmVydGljYWwtdGFic2V0LWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULGVBQWUsRUFFZixLQUFLLEVBSUwsU0FBUyxFQUNULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7O0FBV2hGLE1BQU0sT0FBTywrQkFBK0I7SUFDMUM7OztPQUdHO0lBQ0gsSUFDVyxRQUFRLENBQUMsS0FBMEI7UUFDNUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLHFC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bnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZCxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHNreUFuaW1hdGlvblNsaWRlIH0gZnJvbSAnQHNreXV4L2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgU2t5SWRTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreVRhYklkU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC90YWItaWQuc2VydmljZSc7XG5cbmltcG9ydCB7IFNreVZlcnRpY2FsVGFiQ29tcG9uZW50IH0gZnJvbSAnLi92ZXJ0aWNhbC10YWIuY29tcG9uZW50JztcbmltcG9ydCB7IFNreVZlcnRpY2FsVGFic2V0QWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL3ZlcnRpY2FsLXRhYnNldC1hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5VmVydGljYWxUYWJzZXRHcm91cFNlcnZpY2UgfSBmcm9tICcuL3ZlcnRpY2FsLXRhYnNldC1ncm91cC5zZXJ2aWNlJztcbmltcG9ydCB7IFNreVZlcnRpY2FsVGFic2V0U2VydmljZSB9IGZyb20gJy4vdmVydGljYWwtdGFic2V0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktdmVydGljYWwtdGFic2V0LWdyb3VwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZlcnRpY2FsLXRhYnNldC1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ZlcnRpY2FsLXRhYnNldC1ncm91cC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgYW5pbWF0aW9uczogW3NreUFuaW1hdGlvblNsaWRlXSxcbiAgcHJvdmlkZXJzOiBbU2t5VmVydGljYWxUYWJzZXRHcm91cFNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lWZXJ0aWNhbFRhYnNldEdyb3VwQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogV2hldGhlciB0byBkaXNhYmxlIHRoZSBhYmlsaXR5IHRvIGV4cGFuZCBhbmQgY29sbGFwc2UgdGhlIGdyb3VwLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19kaXNhYmxlZCA9IHZhbHVlO1xuICAgIHRoaXMuI3VwZGF0ZVNsaWRlRGlyZWN0aW9uKGZhbHNlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19kaXNhYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaGVhZGVyIGZvciB0aGUgY29sbGFwc2libGUgZ3JvdXAgb2YgdGFicy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBncm91cEhlYWRpbmc6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY29sbGFwc2libGUgZ3JvdXAgaXMgZXhwYW5kZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG9wZW4odmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfb3BlbiA9IHZhbHVlO1xuICAgIHRoaXMuI3VwZGF0ZVNsaWRlRGlyZWN0aW9uKGZhbHNlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb3BlbigpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX29wZW47XG4gIH1cblxuICBAQ29udGVudENoaWxkcmVuKFNreVZlcnRpY2FsVGFiQ29tcG9uZW50KVxuICBwdWJsaWMgdGFiczogUXVlcnlMaXN0PFNreVZlcnRpY2FsVGFiQ29tcG9uZW50PiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCdncm91cEhlYWRpbmdCdXR0b24nKVxuICBwdWJsaWMgZ3JvdXBIZWFkaW5nQnV0dG9uOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBhbmltYXRpb25EaXNhYmxlZCA9IGZhbHNlO1xuICBwdWJsaWMgc2xpZGVEaXJlY3Rpb246ICdkb3duJyB8ICd1cCcgfCAndm9pZCcgPSAndXAnO1xuXG4gIHByb3RlY3RlZCBncm91cElkOiBzdHJpbmc7XG5cbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICN0YWJTZXJ2aWNlOiBTa3lWZXJ0aWNhbFRhYnNldFNlcnZpY2U7XG4gICNjaGFuZ2VSZWY6IENoYW5nZURldGVjdG9yUmVmO1xuICAjYWRhcHRlclNlcnZpY2UgPSBpbmplY3QoU2t5VmVydGljYWxUYWJzZXRBZGFwdGVyU2VydmljZSk7XG4gICNpZFNlcnZpY2UgPSBpbmplY3QoU2t5SWRTZXJ2aWNlKTtcbiAgI3RhYklkU2VydmljZSA9IGluamVjdChTa3lUYWJJZFNlcnZpY2UpO1xuICAjZ3JvdXBTZXJ2aWNlID0gaW5qZWN0KFNreVZlcnRpY2FsVGFic2V0R3JvdXBTZXJ2aWNlKTtcblxuICAjX2Rpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAjX29wZW46IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgdGFiU2VydmljZTogU2t5VmVydGljYWxUYWJzZXRTZXJ2aWNlLFxuICAgIGNoYW5nZVJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge1xuICAgIHRoaXMuI3RhYlNlcnZpY2UgPSB0YWJTZXJ2aWNlO1xuICAgIHRoaXMuI2NoYW5nZVJlZiA9IGNoYW5nZVJlZjtcblxuICAgIHRoaXMuZ3JvdXBJZCA9IHRoaXMuI2lkU2VydmljZS5nZW5lcmF0ZUlkKCk7XG5cbiAgICB0aGlzLiNncm91cFNlcnZpY2UubWVzc2FnZVN0cmVhbS5zdWJzY3JpYmUoKG1lc3NhZ2UpID0+IHtcbiAgICAgIHN3aXRjaCAobWVzc2FnZS5tZXNzYWdlVHlwZSkge1xuICAgICAgICBjYXNlICdmb2N1cyc6XG4gICAgICAgICAgdGhpcy4jZm9jdXNCdXR0b24oKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLiN0YWJJZFNlcnZpY2UucmVnaXN0ZXIodGhpcy5ncm91cElkLCB0aGlzLmdyb3VwSWQpO1xuXG4gICAgdGhpcy4jdGFiU2VydmljZS5hZGRHcm91cCh0aGlzKTtcblxuICAgIHRoaXMuI3RhYlNlcnZpY2UuaGlkaW5nVGFic1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLiN0YWJzSGlkZGVuKCkpO1xuXG4gICAgdGhpcy4jdGFiU2VydmljZS5zaG93aW5nVGFic1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLiN0YWJzU2hvd24oKSk7XG5cbiAgICB0aGlzLiN0YWJTZXJ2aWNlLnRhYkNsaWNrZWRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy4jdGFiQ2xpY2tlZCgpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiN0YWJTZXJ2aWNlLmRlc3Ryb3lHcm91cCh0aGlzKTtcblxuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcblxuICAgIHRoaXMuI3RhYklkU2VydmljZS51bnJlZ2lzdGVyKHRoaXMuZ3JvdXBJZCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlU2xpZGVEaXJlY3Rpb24oZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuc2xpZGVEaXJlY3Rpb24gPSBldmVudC50b1N0YXRlO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZU1lbnVPcGVuKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5vcGVuID0gIXRoaXMub3BlbjtcbiAgICB9XG5cbiAgICB0aGlzLiN1cGRhdGVTbGlkZURpcmVjdGlvbih0cnVlKTtcbiAgICB0aGlzLiNjaGFuZ2VSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ3JvdXBCdXR0b25BcnJvd0xlZnQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3Blbikge1xuICAgICAgdGhpcy50b2dnbGVNZW51T3BlbigpO1xuICAgIH1cblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ3JvdXBCdXR0b25BcnJvd1JpZ2h0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm9wZW4pIHtcbiAgICAgIHRoaXMudGFicz8uZ2V0KDApPy5mb2N1c0J1dHRvbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRvZ2dsZU1lbnVPcGVuKCk7XG4gICAgfVxuXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0FjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnRhYnMgJiYgdGhpcy50YWJzLmZpbmQoKHQpID0+ICEhdC5hY3RpdmUpICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICAjdGFiQ2xpY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLiNjaGFuZ2VSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAjdGFic0hpZGRlbigpOiB2b2lkIHtcbiAgICAvLyBBbmd1bGFyIHdpbGwgc29tZXRpbWVzIHBsYWNlIHRoZSBhbmltYXRpb24gaW50byB0aGUgXCJ2b2lkXCIgc3RhdGUgd2hlbiB0YWJzIGFyZSBoaWRkZW4uIFVwZGF0ZSBvdXIgaW50ZXJuYWwgdmFyaWFibGUgdG8gcmVmbGVjdCB0aGF0LlxuICAgIHRoaXMuc2xpZGVEaXJlY3Rpb24gPSAndm9pZCc7XG4gICAgdGhpcy4jY2hhbmdlUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgI3RhYnNTaG93bigpOiB2b2lkIHtcbiAgICAvLyBTZXQgdGhlIGFuaW1hdGlvbiBiYWNrIHVwIHNvIHRoYXQgdGhlIFwidm9pZFwiIHN0YXRlIGlzIHJldHVybmVkIHRvIHdoZXJlIGl0IHdhcyBwcmlvciB0byB0aGUgdGFicyBiZWluZyBoaWRkZW4uXG4gICAgLy8gVGhpcyB3aWxsIGJlIGluc3RhbnRhbmVvdXMgZHVlIHRvIHRoZXJlIG5vdCBiZWluZyBhIFwidm9pZCAtPiAqXCIgc3RhdGUgb24gdGhlIHNsaWRlIGFuaW1hdGlvbi5cbiAgICB0aGlzLiN1cGRhdGVTbGlkZURpcmVjdGlvbih0cnVlKTtcbiAgICB0aGlzLiNjaGFuZ2VSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAjdXBkYXRlU2xpZGVEaXJlY3Rpb24oYW5pbWF0ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuYW5pbWF0aW9uRGlzYWJsZWQgPSAhYW5pbWF0ZTtcbiAgICB0aGlzLnNsaWRlRGlyZWN0aW9uID0gdGhpcy5vcGVuICYmICF0aGlzLmRpc2FibGVkID8gJ2Rvd24nIDogJ3VwJztcbiAgfVxuXG4gICNmb2N1c0J1dHRvbigpOiB2b2lkIHtcbiAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5mb2N1c0J1dHRvbih0aGlzLmdyb3VwSGVhZGluZ0J1dHRvbik7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJza3ktdmVydGljYWwtdGFic2V0LWdyb3VwXCI+XG4gIDwhLS0gW25nQ2xhc3NdIGluY2x1ZGVzIGZvbnQgY2xhc3NlcyBmb3IgYm90aCBtb2Rlcm4gYW5kIGRlZmF1bHQgc3R5bGVzIC0tPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJza3ktdmVydGljYWwtdGFic2V0LWdyb3VwLWhlYWRlclwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3NreS12ZXJ0aWNhbC10YWJzZXQtZ3JvdXAtaGVhZGVyLWFjdGl2ZSBza3ktZm9udC1lbXBoYXNpemVkJzogaXNBY3RpdmUoKSxcbiAgICAgICdza3ktdmVydGljYWwtdGFic2V0LWdyb3VwLWhlYWRlci1zdWItb3Blbic6IG9wZW4sXG4gICAgICAnc2t5LWZvbnQtZGVlbXBoYXNpemVkJzogZGlzYWJsZWQsXG4gICAgICAnc2t5LWRlZW1waGFzaXplZCc6IGRpc2FibGVkXG4gICAgfVwiXG4gID5cbiAgICA8YnV0dG9uXG4gICAgICAjZ3JvdXBIZWFkaW5nQnV0dG9uXG4gICAgICBjbGFzcz1cInNreS1wYWRkaW5nLWV2ZW4tZGVmYXVsdCBza3ktdmVydGljYWwtdGFic2V0LWJ1dHRvblwiXG4gICAgICByb2xlPVwidGFiXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJncm91cENvbnRlbnQuaWRcIlxuICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCB1bmRlZmluZWRcIlxuICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCIhZGlzYWJsZWQgJiYgb3BlblwiXG4gICAgICBbaWRdPVwiZ3JvdXBJZFwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdza3ktdmVydGljYWwtdGFic2V0LWJ1dHRvbi1kaXNhYmxlZCc6IGRpc2FibGVkXG4gICAgICB9XCJcbiAgICAgIFt0YWJJbmRleF09XCItMVwiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlTWVudU9wZW4oKVwiXG4gICAgICAoa2V5dXAuYXJyb3dsZWZ0KT1cImdyb3VwQnV0dG9uQXJyb3dMZWZ0KCRldmVudClcIlxuICAgICAgKGtleXVwLmFycm93cmlnaHQpPVwiZ3JvdXBCdXR0b25BcnJvd1JpZ2h0KCRldmVudClcIlxuICAgID5cbiAgICAgIHt7IGdyb3VwSGVhZGluZyB9fVxuICAgICAgPHNreS1leHBhbnNpb24taW5kaWNhdG9yXG4gICAgICAgIGNsYXNzPVwic2t5LXZlcnRpY2FsLXRhYnNldC1ncm91cC1leHBhbnNpb24taW5kaWNhdG9yXCJcbiAgICAgICAgW2RpcmVjdGlvbl09XCIhZGlzYWJsZWQgJiYgb3BlbiA/ICd1cCcgOiAnZG93bidcIlxuICAgICAgLz5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICAjZ3JvdXBDb250ZW50XG4gICAgY2xhc3M9XCJza3ktdmVydGljYWwtdGFic2V0LWdyb3VwLWNvbnRlbnRcIlxuICAgIHNreUlkXG4gICAgW2F0dHIubGFiZWxsZWRieV09XCJncm91cElkXCJcbiAgICBbQC5kaXNhYmxlZF09XCJhbmltYXRpb25EaXNhYmxlZFwiXG4gICAgW0Bza3lBbmltYXRpb25TbGlkZV09XCJzbGlkZURpcmVjdGlvblwiXG4gICAgKEBza3lBbmltYXRpb25TbGlkZS5kb25lKT1cInVwZGF0ZVNsaWRlRGlyZWN0aW9uKCRldmVudClcIlxuICA+XG4gICAgPG5nLWNvbnRlbnQgLz5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtdGFic2V0LWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy92ZXJ0aWNhbC10YWJzZXQvdmVydGljYWwtdGFic2V0LWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy92ZXJ0aWNhbC10YWJzZXQvdmVydGljYWwtdGFic2V0LWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULGVBQWUsRUFFZixLQUFLLEVBSUwsU0FBUyxFQUNULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7O0FBV2hGLE1BQU0sT0FBTywrQkFBK0I7SUFDMUM7OztPQUdHO0lBQ0gsSUFDVyxRQUFRLENBQUMsS0FBMEI7UUFDNUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLHFC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bnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZCxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHNreUFuaW1hdGlvblNsaWRlIH0gZnJvbSAnQHNreXV4L2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgU2t5SWRTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreVRhYklkU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC90YWItaWQuc2VydmljZSc7XG5cbmltcG9ydCB7IFNreVZlcnRpY2FsVGFiQ29tcG9uZW50IH0gZnJvbSAnLi92ZXJ0aWNhbC10YWIuY29tcG9uZW50JztcbmltcG9ydCB7IFNreVZlcnRpY2FsVGFic2V0QWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL3ZlcnRpY2FsLXRhYnNldC1hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5VmVydGljYWxUYWJzZXRHcm91cFNlcnZpY2UgfSBmcm9tICcuL3ZlcnRpY2FsLXRhYnNldC1ncm91cC5zZXJ2aWNlJztcbmltcG9ydCB7IFNreVZlcnRpY2FsVGFic2V0U2VydmljZSB9IGZyb20gJy4vdmVydGljYWwtdGFic2V0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktdmVydGljYWwtdGFic2V0LWdyb3VwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZlcnRpY2FsLXRhYnNldC1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ZlcnRpY2FsLXRhYnNldC1ncm91cC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgYW5pbWF0aW9uczogW3NreUFuaW1hdGlvblNsaWRlXSxcbiAgcHJvdmlkZXJzOiBbU2t5VmVydGljYWxUYWJzZXRHcm91cFNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lWZXJ0aWNhbFRhYnNldEdyb3VwQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogV2hldGhlciB0byBkaXNhYmxlIHRoZSBhYmlsaXR5IHRvIGV4cGFuZCBhbmQgY29sbGFwc2UgdGhlIGdyb3VwLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19kaXNhYmxlZCA9IHZhbHVlO1xuICAgIHRoaXMuI3VwZGF0ZVNsaWRlRGlyZWN0aW9uKGZhbHNlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19kaXNhYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaGVhZGVyIGZvciB0aGUgY29sbGFwc2libGUgZ3JvdXAgb2YgdGFicy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBncm91cEhlYWRpbmc6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY29sbGFwc2libGUgZ3JvdXAgaXMgZXhwYW5kZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG9wZW4odmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfb3BlbiA9IHZhbHVlO1xuICAgIHRoaXMuI3VwZGF0ZVNsaWRlRGlyZWN0aW9uKGZhbHNlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb3BlbigpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX29wZW47XG4gIH1cblxuICBAQ29udGVudENoaWxkcmVuKFNreVZlcnRpY2FsVGFiQ29tcG9uZW50KVxuICBwdWJsaWMgdGFiczogUXVlcnlMaXN0PFNreVZlcnRpY2FsVGFiQ29tcG9uZW50PiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCdncm91cEhlYWRpbmdCdXR0b24nKVxuICBwdWJsaWMgZ3JvdXBIZWFkaW5nQnV0dG9uOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBhbmltYXRpb25EaXNhYmxlZCA9IGZhbHNlO1xuICBwdWJsaWMgc2xpZGVEaXJlY3Rpb246ICdkb3duJyB8ICd1cCcgfCAndm9pZCcgPSAndXAnO1xuXG4gIHByb3RlY3RlZCBncm91cElkOiBzdHJpbmc7XG5cbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICN0YWJTZXJ2aWNlOiBTa3lWZXJ0aWNhbFRhYnNldFNlcnZpY2U7XG4gICNjaGFuZ2VSZWY6IENoYW5nZURldGVjdG9yUmVmO1xuICAjYWRhcHRlclNlcnZpY2UgPSBpbmplY3QoU2t5VmVydGljYWxUYWJzZXRBZGFwdGVyU2VydmljZSk7XG4gICNpZFNlcnZpY2UgPSBpbmplY3QoU2t5SWRTZXJ2aWNlKTtcbiAgI3RhYklkU2VydmljZSA9IGluamVjdChTa3lUYWJJZFNlcnZpY2UpO1xuICAjZ3JvdXBTZXJ2aWNlID0gaW5qZWN0KFNreVZlcnRpY2FsVGFic2V0R3JvdXBTZXJ2aWNlKTtcblxuICAjX2Rpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAjX29wZW46IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgdGFiU2VydmljZTogU2t5VmVydGljYWxUYWJzZXRTZXJ2aWNlLFxuICAgIGNoYW5nZVJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge1xuICAgIHRoaXMuI3RhYlNlcnZpY2UgPSB0YWJTZXJ2aWNlO1xuICAgIHRoaXMuI2NoYW5nZVJlZiA9IGNoYW5nZVJlZjtcblxuICAgIHRoaXMuZ3JvdXBJZCA9IHRoaXMuI2lkU2VydmljZS5nZW5lcmF0ZUlkKCk7XG5cbiAgICB0aGlzLiNncm91cFNlcnZpY2UubWVzc2FnZVN0cmVhbS5zdWJzY3JpYmUoKG1lc3NhZ2UpID0+IHtcbiAgICAgIHN3aXRjaCAobWVzc2FnZS5tZXNzYWdlVHlwZSkge1xuICAgICAgICBjYXNlICdmb2N1cyc6XG4gICAgICAgICAgdGhpcy4jZm9jdXNCdXR0b24oKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLiN0YWJJZFNlcnZpY2UucmVnaXN0ZXIodGhpcy5ncm91cElkLCB0aGlzLmdyb3VwSWQpO1xuXG4gICAgdGhpcy4jdGFiU2VydmljZS5hZGRHcm91cCh0aGlzKTtcblxuICAgIHRoaXMuI3RhYlNlcnZpY2UuaGlkaW5nVGFic1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLiN0YWJzSGlkZGVuKCkpO1xuXG4gICAgdGhpcy4jdGFiU2VydmljZS5zaG93aW5nVGFic1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLiN0YWJzU2hvd24oKSk7XG5cbiAgICB0aGlzLiN0YWJTZXJ2aWNlLnRhYkNsaWNrZWRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy4jdGFiQ2xpY2tlZCgpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiN0YWJTZXJ2aWNlLmRlc3Ryb3lHcm91cCh0aGlzKTtcblxuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcblxuICAgIHRoaXMuI3RhYklkU2VydmljZS51bnJlZ2lzdGVyKHRoaXMuZ3JvdXBJZCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlU2xpZGVEaXJlY3Rpb24oZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuc2xpZGVEaXJlY3Rpb24gPSBldmVudC50b1N0YXRlO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZU1lbnVPcGVuKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5vcGVuID0gIXRoaXMub3BlbjtcbiAgICB9XG5cbiAgICB0aGlzLiN1cGRhdGVTbGlkZURpcmVjdGlvbih0cnVlKTtcbiAgICB0aGlzLiNjaGFuZ2VSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ3JvdXBCdXR0b25BcnJvd0xlZnQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3Blbikge1xuICAgICAgdGhpcy50b2dnbGVNZW51T3BlbigpO1xuICAgIH1cblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ3JvdXBCdXR0b25BcnJvd1JpZ2h0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm9wZW4pIHtcbiAgICAgIHRoaXMudGFicz8uZ2V0KDApPy5mb2N1c0J1dHRvbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRvZ2dsZU1lbnVPcGVuKCk7XG4gICAgfVxuXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0FjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnRhYnMgJiYgdGhpcy50YWJzLmZpbmQoKHQpID0+ICEhdC5hY3RpdmUpICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICAjdGFiQ2xpY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLiNjaGFuZ2VSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAjdGFic0hpZGRlbigpOiB2b2lkIHtcbiAgICAvLyBBbmd1bGFyIHdpbGwgc29tZXRpbWVzIHBsYWNlIHRoZSBhbmltYXRpb24gaW50byB0aGUgXCJ2b2lkXCIgc3RhdGUgd2hlbiB0YWJzIGFyZSBoaWRkZW4uIFVwZGF0ZSBvdXIgaW50ZXJuYWwgdmFyaWFibGUgdG8gcmVmbGVjdCB0aGF0LlxuICAgIHRoaXMuc2xpZGVEaXJlY3Rpb24gPSAndm9pZCc7XG4gICAgdGhpcy4jY2hhbmdlUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgI3RhYnNTaG93bigpOiB2b2lkIHtcbiAgICAvLyBTZXQgdGhlIGFuaW1hdGlvbiBiYWNrIHVwIHNvIHRoYXQgdGhlIFwidm9pZFwiIHN0YXRlIGlzIHJldHVybmVkIHRvIHdoZXJlIGl0IHdhcyBwcmlvciB0byB0aGUgdGFicyBiZWluZyBoaWRkZW4uXG4gICAgLy8gVGhpcyB3aWxsIGJlIGluc3RhbnRhbmVvdXMgZHVlIHRvIHRoZXJlIG5vdCBiZWluZyBhIFwidm9pZCAtPiAqXCIgc3RhdGUgb24gdGhlIHNsaWRlIGFuaW1hdGlvbi5cbiAgICB0aGlzLiN1cGRhdGVTbGlkZURpcmVjdGlvbih0cnVlKTtcbiAgICB0aGlzLiNjaGFuZ2VSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAjdXBkYXRlU2xpZGVEaXJlY3Rpb24oYW5pbWF0ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuYW5pbWF0aW9uRGlzYWJsZWQgPSAhYW5pbWF0ZTtcbiAgICB0aGlzLnNsaWRlRGlyZWN0aW9uID0gdGhpcy5vcGVuICYmICF0aGlzLmRpc2FibGVkID8gJ2Rvd24nIDogJ3VwJztcbiAgfVxuXG4gICNmb2N1c0J1dHRvbigpOiB2b2lkIHtcbiAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5mb2N1c0J1dHRvbih0aGlzLmdyb3VwSGVhZGluZ0J1dHRvbik7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJza3ktdmVydGljYWwtdGFic2V0LWdyb3VwXCI+XG4gIDwhLS0gW25nQ2xhc3NdIGluY2x1ZGVzIGZvbnQgY2xhc3NlcyBmb3IgYm90aCBtb2Rlcm4gYW5kIGRlZmF1bHQgc3R5bGVzIC0tPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJza3ktdmVydGljYWwtdGFic2V0LWdyb3VwLWhlYWRlclwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3NreS12ZXJ0aWNhbC10YWJzZXQtZ3JvdXAtaGVhZGVyLWFjdGl2ZSBza3ktZm9udC1lbXBoYXNpemVkJzogaXNBY3RpdmUoKSxcbiAgICAgICdza3ktdmVydGljYWwtdGFic2V0LWdyb3VwLWhlYWRlci1zdWItb3Blbic6IG9wZW4sXG4gICAgICAnc2t5LWZvbnQtZGVlbXBoYXNpemVkJzogZGlzYWJsZWQsXG4gICAgICAnc2t5LWRlZW1waGFzaXplZCc6IGRpc2FibGVkXG4gICAgfVwiXG4gID5cbiAgICA8YnV0dG9uXG4gICAgICAjZ3JvdXBIZWFkaW5nQnV0dG9uXG4gICAgICBjbGFzcz1cInNreS1wYWRkaW5nLWV2ZW4tZGVmYXVsdCBza3ktdmVydGljYWwtdGFic2V0LWJ1dHRvblwiXG4gICAgICByb2xlPVwidGFiXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJncm91cENvbnRlbnQuaWRcIlxuICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCB1bmRlZmluZWRcIlxuICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCIhZGlzYWJsZWQgJiYgb3BlblwiXG4gICAgICBbaWRdPVwiZ3JvdXBJZFwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdza3ktdmVydGljYWwtdGFic2V0LWJ1dHRvbi1kaXNhYmxlZCc6IGRpc2FibGVkXG4gICAgICB9XCJcbiAgICAgIFt0YWJJbmRleF09XCItMVwiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlTWVudU9wZW4oKVwiXG4gICAgICAoa2V5dXAuYXJyb3dsZWZ0KT1cImdyb3VwQnV0dG9uQXJyb3dMZWZ0KCRldmVudClcIlxuICAgICAgKGtleXVwLmFycm93cmlnaHQpPVwiZ3JvdXBCdXR0b25BcnJvd1JpZ2h0KCRldmVudClcIlxuICAgID5cbiAgICAgIHt7IGdyb3VwSGVhZGluZyB9fVxuICAgICAgPHNreS1leHBhbnNpb24taW5kaWNhdG9yXG4gICAgICAgIGNsYXNzPVwic2t5LXZlcnRpY2FsLXRhYnNldC1ncm91cC1leHBhbnNpb24taW5kaWNhdG9yXCJcbiAgICAgICAgW2RpcmVjdGlvbl09XCIhZGlzYWJsZWQgJiYgb3BlbiA/ICd1cCcgOiAnZG93bidcIlxuICAgICAgLz5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICAjZ3JvdXBDb250ZW50XG4gICAgY2xhc3M9XCJza3ktdmVydGljYWwtdGFic2V0LWdyb3VwLWNvbnRlbnRcIlxuICAgIHNreUlkXG4gICAgW2F0dHIubGFiZWxsZWRieV09XCJncm91cElkXCJcbiAgICBbQC5kaXNhYmxlZF09XCJhbmltYXRpb25EaXNhYmxlZFwiXG4gICAgW0Bza3lBbmltYXRpb25TbGlkZV09XCJzbGlkZURpcmVjdGlvblwiXG4gICAgKEBza3lBbmltYXRpb25TbGlkZS5kb25lKT1cInVwZGF0ZVNsaWRlRGlyZWN0aW9uKCRldmVudClcIlxuICA+XG4gICAgPG5nLWNvbnRlbnQgLz5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|