@eui/showcase 16.0.0-next.1 → 16.0.0-next.2
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/{esm2020 → esm2022}/lib/components/doc-page/doc-page.component.mjs +25 -25
- package/{esm2020 → esm2022}/lib/components/doc-page-code/doc-page-code.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/doc-page-code-fab/doc-page-code-fab.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/doc-page-pattern/doc-page-pattern.component.mjs +10 -10
- package/{esm2020 → esm2022}/lib/components/doc-sample/doc-sample.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/doc-sample-api/doc-sample-api.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/doc-section/doc-section.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/doc-section-code/doc-section-code.component.mjs +22 -22
- package/{esm2020 → esm2022}/lib/components/eui-code-highlighter/eui-code-highlighter.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/lorem-ipsum/lorem-ipsum-sample.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/playground/playground.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/eui-showcase.module.mjs +75 -75
- package/{fesm2020 → fesm2022}/eui-showcase.mjs +152 -152
- package/{fesm2020 → fesm2022}/eui-showcase.mjs.map +1 -1
- package/lib/components/doc-page/doc-page.component.d.ts +2 -2
- package/lib/components/doc-page-code/doc-page-code.component.d.ts +1 -1
- package/lib/components/doc-page-code-fab/doc-page-code-fab.component.d.ts +1 -1
- package/lib/components/doc-page-pattern/doc-page-pattern.component.d.ts +1 -1
- package/lib/components/doc-sample/doc-sample.component.d.ts +1 -1
- package/lib/components/doc-section/doc-section.component.d.ts +1 -1
- package/lib/components/doc-section-code/doc-section-code.component.d.ts +1 -1
- package/lib/components/lorem-ipsum/lorem-ipsum-sample.component.d.ts +1 -1
- package/lib/components/playground/playground.component.d.ts +1 -1
- package/package.json +5 -11
- package/fesm2015/eui-showcase.mjs +0 -1363
- package/fesm2015/eui-showcase.mjs.map +0 -1
- /package/{esm2020 → esm2022}/eui-showcase.mjs +0 -0
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/playground/stackblitz.files.mjs +0 -0
|
@@ -225,10 +225,10 @@ export class DocPageComponent {
|
|
|
225
225
|
}
|
|
226
226
|
return result;
|
|
227
227
|
}
|
|
228
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DocPageComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.UxAppShellService }, { token: i3.DomSanitizer }, { token: i4.Location }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
229
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: DocPageComponent, selector: "eui-showcase-doc-page", inputs: { id: "id", label: "label", subLabel: "subLabel", isNotReady: "isNotReady", isDeprecated: "isDeprecated", isLegacy: "isLegacy", codeFolder: "codeFolder", showcase: "showcase", isNavigationVisible: "isNavigationVisible", hasApi: "hasApi", hasA11y: "hasA11y" }, queries: [{ propertyName: "samples", predicate: DocSampleComponent, descendants: true }, { propertyName: "sections", predicate: DocSectionComponent, descendants: true }, { propertyName: "pageOverviewContent", predicate: i0.forwardRef(function () { return DocPageOverviewContentDirective; }) }, { propertyName: "pageSamplesContent", predicate: i0.forwardRef(function () { return DocPageSamplesContentDirective; }) }, { propertyName: "pageSectionsContent", predicate: i0.forwardRef(function () { return DocPageSectionsContentDirective; }) }, { propertyName: "pageInteractiveContent", predicate: i0.forwardRef(function () { return DocPageInteractiveContentDirective; }) }, { propertyName: "pageAccessibilityContent", predicate: i0.forwardRef(function () { return DocPageAccessibilityContentDirective; }) }, { propertyName: "pageApiContent", predicate: i0.forwardRef(function () { return DocPageApiContentDirective; }) }, { propertyName: "pageThemingContent", predicate: i0.forwardRef(function () { return DocPageThemingContentDirective; }) }], viewQueries: [{ propertyName: "tabsContent", first: true, predicate: ["tabsContent"], descendants: true }], ngImport: i0, template: "<div class=\"doc-page-navigation-wrapper\" [class.eui-u-hidden]=\"isLoading\">\n <div class=\"doc-page-main-column\">\n <eui-page>\n <eui-page-header label=\"{{ label }}\" subLabel=\"{{ subLabel }}\">\n <eui-page-header-action-items>\n <eui-showcase-doc-page-code\n *ngIf=\"codeFolder\"\n codeFolder=\"{{ codeFolder }}\"\n showcase=\"{{ showcase }}\"></eui-showcase-doc-page-code>\n <eui-chip\n *ngIf=\"stateLabel\"\n [euiSuccess]=\"stateLabel === 'ACTIVE'\"\n [euiWarning]=\"stateLabel === 'DEPRECATED'\"\n [euiDanger]=\"isLegacy\">\n <span euiLabel>\n <strong>{{ stateLabel }}</strong>\n </span>\n </eui-chip>\n </eui-page-header-action-items>\n </eui-page-header>\n\n <eui-page-content>\n <eui-alert *ngIf=\"stateLabel === 'LEGACY' || isLegacy\" euiDanger>\n <p>\n This component will be\n <strong class=\"eui-u-color-danger\">removed</strong> in the next version of eUI !!\n </p>\n <div *ngIf=\"cmp\">\n <div *ngIf=\"cmp.cmpReplacement !== 'NONE'\">\n It has been replaced by :\n <strong class=\"eui-u-color-success-darkest\">{{ cmp.cmpReplacement }}</strong>\n <!-- <div *ngIf=\"cmp.cmpReplacementUrl\">\n <br><br>\n You can find more information on the new component here : <a [routerLink]=\"cmp.cmpReplacementUrl\">{{cmp.cmpReplacementUrl}}</a>\n </div> -->\n </div>\n <div *ngIf=\"cmp.cmpReplacement === 'NONE'\">\n This component will be\n <strong class=\"eui-u-color-danger\">discontinued in future version of eUI</strong>\n </div>\n <div *ngIf=\"cmp.cmpReplacementNote\">\n <strong class=\"eui-u-color-warning\">{{ cmp.cmpReplacementNote }}</strong>\n </div>\n </div>\n </eui-alert>\n\n <eui-alert *ngIf=\"stateLabel === 'DEPRECATED' || isDeprecated\" euiWarning>\n <p>\n This component has been\n <strong class=\"eui-u-color-danger\">deprecated</strong>\n </p>\n <div *ngIf=\"cmp\">\n This component has no replacement in current version AND won't have replacement in next version of eUI, it is kept\n for\n <strong class=\"eui-u-color-warning\">historical usage only</strong>\n </div>\n </eui-alert>\n\n <eui-alert *ngIf=\"stateLabel === 'NOT_READY' || isNotReady\" euiInfo>\n <p>\n This component is\n <strong class=\"eui-u-color-info\">NOT READY</strong>\n </p>\n <div *ngIf=\"cmp\">\n This component is under development / some features might be missing, it'll be available in a future release once\n validated.\n </div>\n </eui-alert>\n\n <div *ngIf=\"(stateLabel || isNotReady || isDeprecated) && stateLabel !== 'ACTIVE'\" class=\"mb-5\"></div>\n\n <eui-tabs #tabsContent *ngIf=\"pageSectionsContent.length === 0\" (tabSelected)=\"onTabSelected($event)\">\n <eui-tab *ngIf=\"hasApi\">\n <euiTabLabel> API </euiTabLabel>\n <euiTabContent>\n <ng-container *ngIf=\"apiUrlSafe\">\n <div class=\"flex-container\">\n <a href=\"{{ apiUrl }}\" target=\"_blank\" class=\"ms-auto pb-2 eui-u-text-link-external\">Open API page</a>\n </div>\n <div class=\"doc-page-api-iframe-wrapper\">\n <iframe id=\"iframe_api\" [width]=\"'100%'\" height=\"700px\" frameBorder=\"0\" [src]=\"apiUrlSafe\"></iframe>\n </div>\n </ng-container>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab *ngIf=\"hasA11y\">\n <euiTabLabel> A11Y </euiTabLabel>\n <euiTabContent>\n <h3 id=\"accessibility\" class=\"eui-u-font-bold eui-u-color-info mt-3 mb-2\">Accessibility</h3>\n <ng-content select=\"docPageAccessibility\"></ng-content>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab>\n <euiTabLabel> OPTIONS & SAMPLES </euiTabLabel>\n <euiTabContent>\n <ng-container *ngIf=\"cmp && cmp.metadata\">\n <h3 class=\"eui-u-font-bold eui-u-color-info mt-3 mb-3\">Module import</h3>\n <pre><code class=\"language-javascript eui-u-bg-color-grey-5\" euiCode>{{ cmpModuleImport }}</code></pre>\n <br />\n </ng-container>\n\n <h3 id=\"overview\" class=\"eui-u-font-bold eui-u-color-info mt-3 mb-3\">Overview & setup</h3>\n <div *ngIf=\"pageOverviewContent.length > 0; else noOverview\">\n <ng-content select=\"docPageOverview\"></ng-content>\n </div>\n <ng-template #noOverview> Coming soon... </ng-template>\n <br />\n\n <h3 id=\"samples\" class=\"eui-u-font-bold eui-u-color-info mt-8 mb-2\">Options & samples</h3>\n <ng-content select=\"docPageSamples\"></ng-content>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab *ngIf=\"pageThemingContent.length > 0\">\n <euiTabLabel> THEMING </euiTabLabel>\n <euiTabContent>\n <h3 id=\"theming\" class=\"eui-u-font-bold eui-u-color-info mt-3 mb-2\">Theming</h3>\n <ng-content select=\"docPageTheming\"></ng-content>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab *ngIf=\"pageInteractiveContent.length > 0\">\n <euiTabLabel>\n {{ pageInteractiveContent.first.title }}\n </euiTabLabel>\n <euiTabContent>\n <h3 id=\"interactive\" class=\"eui-u-font-bold eui-u-color-info mt-3 mb-2\">\n {{ pageInteractiveContent.first.subTitle }}\n </h3>\n <ng-content select=\"docPageInteractive\"></ng-content>\n </euiTabContent>\n </eui-tab>\n </eui-tabs>\n\n <ng-container *ngIf=\"pageSectionsContent.length > 0\">\n <h3 id=\"demo\" *ngIf=\"sections.length === 0\" class=\"eui-u-font-bold eui-u-color-info mt-3 mb-2\">Demo</h3>\n <ng-content select=\"docPageSections\"></ng-content>\n </ng-container>\n </eui-page-content>\n </eui-page>\n </div>\n\n <div *ngIf=\"isNavigationVisible\" class=\"doc-page-navigation-column eui-u-hidden-desktop-down\">\n <div id=\"doc-page-nav\">\n <div class=\"doc-page-navigation-title\">In this page</div>\n <div class=\"doc-page-navigation-content\" tabindex=\"0\">\n <ul class=\"doc-page-navigation\">\n <ng-container *ngIf=\"pageSectionsContent.length === 0\">\n <!-- ALWAYS PRESENT in each page-->\n <!-- <li class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'overview'\" (click)=\"onNavClick('overview', 0)\"><span>OVERVIEW</span></li> -->\n <li\n *ngIf=\"hasApi\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'api'\"\n (click)=\"onNavClick('api', 0)\">\n <span>API</span>\n </li>\n <li\n *ngIf=\"hasA11y\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'a11y'\"\n (click)=\"onNavClick('a11y', 1)\">\n <span>A11Y</span>\n </li>\n <li\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'samples'\"\n (click)=\"onNavClick('samples', 2)\">\n <span>OPTIONS & SAMPLES</span>\n </li>\n <li class=\"doc-page-navigation-item doc-page-navigation-sub\">\n <ul *ngFor=\"let sample of samples\" class=\"doc-page-navigation-list\">\n <li\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === sample.id\"\n (click)=\"onNavClick(sample.id, 2)\">\n <span>{{ sample.label }}</span>\n </li>\n </ul>\n </li>\n\n <!-- OPTIONAL TABS-->\n <ng-container *ngIf=\"pageThemingContent.length > 0\">\n <li\n *ngIf=\"pageThemingContent.length > 0\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'theming'\"\n (click)=\"onNavClick('theming', 3)\">\n <span>THEMING</span>\n </li>\n <li\n *ngIf=\"pageInteractiveContent.length > 0\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'advanced'\"\n (click)=\"onNavClick('advanced', 4)\">\n <span>{{ pageInteractiveContent.first.title }}</span>\n </li>\n </ng-container>\n <ng-container *ngIf=\"pageThemingContent.length === 0\">\n <li\n *ngIf=\"pageInteractiveContent.length > 0\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'advanced'\"\n (click)=\"onNavClick('advanced', 3)\">\n <span>{{ pageInteractiveContent.first.title }}</span>\n </li>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"pageSectionsContent.length > 0\">\n <li\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'sections'\"\n (click)=\"onNavClick('sections', null)\">\n <span>Sections</span>\n </li>\n <li\n *ngIf=\"sections.length === 0\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'demo'\"\n (click)=\"onNavClick('demo', null)\">\n <span>Demo</span>\n </li>\n <li *ngIf=\"sections.length > 0\" class=\"doc-page-navigation-item doc-page-navigation-sub\">\n <ul *ngFor=\"let section of sections\">\n <li\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === section.id\"\n (click)=\"onNavClick(section.id, null)\">\n <span>{{ section.label }}</span>\n </li>\n </ul>\n </li>\n </ng-container>\n </ul>\n </div>\n </div>\n </div>\n</div>\n", styles: [".doc-page-navigation-wrapper{display:flex;flex-wrap:wrap;width:100%}.doc-page-navigation-wrapper .doc-page-main-column{padding-right:var(--eui-base-spacing-m);width:calc(100% - 400px)}.doc-page-navigation-wrapper .doc-page-navigation-column{background:var(--eui-base-color-white);box-shadow:0 8px 10px #b7c0ce33;position:fixed;right:0;transition:all ease-in-out .25s;width:400px;z-index:auto;box-shadow:var(--eui-base-shadow-1)}.doc-page-navigation-wrapper .doc-page-navigation-column:hover{width:400px}.doc-page-navigation-title{font-weight:700;padding:var(--eui-base-spacing-s)}.doc-page-navigation-content{display:block;height:100vh;max-height:calc(100vh - 6rem);overflow-y:auto;width:100%}.doc-page-navigation-content::-webkit-scrollbar{display:inherit;height:6px;width:6px;background-color:var(--eui-base-color-grey-10)}.doc-page-navigation-content::-webkit-scrollbar-thumb{background-color:var(--eui-base-color-grey-20);border-radius:5rem}.doc-page-navigation-content::-webkit-scrollbar-thumb:hover{background-color:var(--eui-base-color-grey-25)}.doc-page-navigation-content::-webkit-scrollbar-track{background-color:var(--eui-base-color-grey-10);border-radius:0}.doc-page-navigation{background-color:transparent;border-left:2px solid transparent;padding-top:var(--eui-base-spacing-xs);margin:0;padding:0}.doc-page-navigation .doc-page-navigation-list{margin:0;padding:0}.doc-page-navigation .doc-page-navigation-item{color:var(--eui-base-color-primary-100);cursor:pointer;line-height:1.5;overflow:hidden;padding:var(--eui-base-spacing-2xs);text-overflow:ellipsis;transition:background-color ease-in .2s;white-space:nowrap;list-style:none}.doc-page-navigation .doc-page-navigation-item span{font-weight:700;padding-left:var(--eui-base-spacing-xs)}.doc-page-navigation .doc-page-navigation-item:not(.doc-page-navigation-sub):hover{background-color:var(--eui-base-color-grey-5);border-left:2px solid var(--eui-base-color-info-100)}.doc-page-navigation .doc-page-navigation-item.doc-page-navigation-sub .doc-page-navigation-item span{font-weight:400;padding-left:var(--eui-base-spacing-m)}.doc-page-navigation .doc-page-navigation-item.doc-page-navigation-sub .doc-page-navigation-item:hover{background-color:var(--eui-base-color-grey-5);border-left:2px solid var(--eui-base-color-grey-15)}.doc-page-navigation .doc-page-navigation-item.doc-page-navigation-item--selected{background-color:var(--eui-base-color-grey-5);border-left:2px solid var(--eui-base-color-info-100)}.doc-page-api-iframe-wrapper{display:flex;justify-content:space-around;margin:0}@media screen and (max-width: 767px){.doc-page-navigation-wrapper .doc-page-main-column{padding-right:0;width:100%}.doc-page-navigation-wrapper .doc-page-navigation-column{display:none;width:0}}@media screen and (min-width: 768px) and (max-width: 995px){.doc-page-navigation-wrapper .doc-page-main-column{width:80%}.doc-page-navigation-wrapper .doc-page-navigation-column{width:20%}}@media screen and (max-width: 1550px){.doc-page-api-iframe-wrapper{display:none}}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.EuiTabsComponent, selector: "eui-tabs", inputs: ["styleClass", "tabs", "activeTabIndex", "e2eAttr", "pathMatch", "isMainNavigation", "isSubTabs", "isVerticalTabs"], outputs: ["tabClosed", "tabSelected", "tabClose", "tabSelect"] }, { kind: "component", type: i5.EuiTabComponent, selector: "eui-tab", inputs: ["url", "e2eAttr", "tooltip", "isClosable", "isVisible", "isActive", "isDisabled", "hasBackgroundFilled", "isHandleCloseOnClose"] }, { kind: "component", type: i5.EuiTabLabelComponent, selector: "eui-tab-label, euiTabLabel" }, { kind: "component", type: i5.EuiTabContentComponent, selector: "eui-tab-content, euiTabContent", inputs: ["hasNoContentPadding"] }, { kind: "component", type: i6.EuiPageComponent, selector: "eui-page" }, { kind: "component", type: i6.EuiPageContentComponent, selector: "eui-page-content" }, { kind: "component", type: i6.EuiPageHeaderComponent, selector: "eui-page-header", inputs: ["label", "subLabel", "isCollapsible", "isCollapsed", "collapsedLabel", "expandedLabel"], outputs: ["collapse"] }, { kind: "directive", type: i6.EuiPageHeaderActionItemsContentDirective, selector: "eui-page-header-action-items" }, { kind: "component", type: i7.EuiChipComponent, selector: "eui-chip, span[euiChip], li[euiChip]", inputs: ["euiInternalId", "tooltipMessage", "id", "data", "isChipRemovable", "isSquared"], outputs: ["remove"] }, { kind: "component", type: i8.EuiAlertComponent, selector: "div[euiAlert], eui-alert", inputs: ["euiAlertMuted", "isCloseable"], outputs: ["close"] }, { kind: "directive", type: i9.EuiCodeHighlighterDirective, selector: "[euiCode]" }, { kind: "component", type: i10.DocPageCodeComponent, selector: "eui-showcase-doc-page-code", inputs: ["codeFolder", "showcase"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
228
230
|
}
|
|
229
|
-
|
|
230
|
-
/** @nocollapse */ DocPageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0-next.2", type: DocPageComponent, selector: "eui-showcase-doc-page", inputs: { id: "id", label: "label", subLabel: "subLabel", isNotReady: "isNotReady", isDeprecated: "isDeprecated", isLegacy: "isLegacy", codeFolder: "codeFolder", showcase: "showcase", isNavigationVisible: "isNavigationVisible", hasApi: "hasApi", hasA11y: "hasA11y" }, queries: [{ propertyName: "samples", predicate: DocSampleComponent, descendants: true }, { propertyName: "sections", predicate: DocSectionComponent, descendants: true }, { propertyName: "pageOverviewContent", predicate: i0.forwardRef(function () { return DocPageOverviewContentDirective; }) }, { propertyName: "pageSamplesContent", predicate: i0.forwardRef(function () { return DocPageSamplesContentDirective; }) }, { propertyName: "pageSectionsContent", predicate: i0.forwardRef(function () { return DocPageSectionsContentDirective; }) }, { propertyName: "pageInteractiveContent", predicate: i0.forwardRef(function () { return DocPageInteractiveContentDirective; }) }, { propertyName: "pageAccessibilityContent", predicate: i0.forwardRef(function () { return DocPageAccessibilityContentDirective; }) }, { propertyName: "pageApiContent", predicate: i0.forwardRef(function () { return DocPageApiContentDirective; }) }, { propertyName: "pageThemingContent", predicate: i0.forwardRef(function () { return DocPageThemingContentDirective; }) }], viewQueries: [{ propertyName: "tabsContent", first: true, predicate: ["tabsContent"], descendants: true }], ngImport: i0, template: "<div class=\"doc-page-navigation-wrapper\" [class.eui-u-hidden]=\"isLoading\">\n <div class=\"doc-page-main-column\">\n <eui-page>\n <eui-page-header label=\"{{ label }}\" subLabel=\"{{ subLabel }}\">\n <eui-page-header-action-items>\n <eui-showcase-doc-page-code\n *ngIf=\"codeFolder\"\n codeFolder=\"{{ codeFolder }}\"\n showcase=\"{{ showcase }}\"></eui-showcase-doc-page-code>\n <eui-chip\n *ngIf=\"stateLabel\"\n [euiSuccess]=\"stateLabel === 'ACTIVE'\"\n [euiWarning]=\"stateLabel === 'DEPRECATED'\"\n [euiDanger]=\"isLegacy\">\n <span euiLabel>\n <strong>{{ stateLabel }}</strong>\n </span>\n </eui-chip>\n </eui-page-header-action-items>\n </eui-page-header>\n\n <eui-page-content>\n <eui-alert *ngIf=\"stateLabel === 'LEGACY' || isLegacy\" euiDanger>\n <p>\n This component will be\n <strong class=\"eui-u-color-danger\">removed</strong> in the next version of eUI !!\n </p>\n <div *ngIf=\"cmp\">\n <div *ngIf=\"cmp.cmpReplacement !== 'NONE'\">\n It has been replaced by :\n <strong class=\"eui-u-color-success-darkest\">{{ cmp.cmpReplacement }}</strong>\n <!-- <div *ngIf=\"cmp.cmpReplacementUrl\">\n <br><br>\n You can find more information on the new component here : <a [routerLink]=\"cmp.cmpReplacementUrl\">{{cmp.cmpReplacementUrl}}</a>\n </div> -->\n </div>\n <div *ngIf=\"cmp.cmpReplacement === 'NONE'\">\n This component will be\n <strong class=\"eui-u-color-danger\">discontinued in future version of eUI</strong>\n </div>\n <div *ngIf=\"cmp.cmpReplacementNote\">\n <strong class=\"eui-u-color-warning\">{{ cmp.cmpReplacementNote }}</strong>\n </div>\n </div>\n </eui-alert>\n\n <eui-alert *ngIf=\"stateLabel === 'DEPRECATED' || isDeprecated\" euiWarning>\n <p>\n This component has been\n <strong class=\"eui-u-color-danger\">deprecated</strong>\n </p>\n <div *ngIf=\"cmp\">\n This component has no replacement in current version AND won't have replacement in next version of eUI, it is kept\n for\n <strong class=\"eui-u-color-warning\">historical usage only</strong>\n </div>\n </eui-alert>\n\n <eui-alert *ngIf=\"stateLabel === 'NOT_READY' || isNotReady\" euiInfo>\n <p>\n This component is\n <strong class=\"eui-u-color-info\">NOT READY</strong>\n </p>\n <div *ngIf=\"cmp\">\n This component is under development / some features might be missing, it'll be available in a future release once\n validated.\n </div>\n </eui-alert>\n\n <div *ngIf=\"(stateLabel || isNotReady || isDeprecated) && stateLabel !== 'ACTIVE'\" class=\"mb-5\"></div>\n\n <eui-tabs #tabsContent *ngIf=\"pageSectionsContent.length === 0\" (tabSelected)=\"onTabSelected($event)\">\n <eui-tab *ngIf=\"hasApi\">\n <euiTabLabel> API </euiTabLabel>\n <euiTabContent>\n <ng-container *ngIf=\"apiUrlSafe\">\n <div class=\"flex-container\">\n <a href=\"{{ apiUrl }}\" target=\"_blank\" class=\"ms-auto pb-2 eui-u-text-link-external\">Open API page</a>\n </div>\n <div class=\"doc-page-api-iframe-wrapper\">\n <iframe id=\"iframe_api\" [width]=\"'100%'\" height=\"700px\" frameBorder=\"0\" [src]=\"apiUrlSafe\"></iframe>\n </div>\n </ng-container>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab *ngIf=\"hasA11y\">\n <euiTabLabel> A11Y </euiTabLabel>\n <euiTabContent>\n <h3 id=\"accessibility\" class=\"eui-u-font-bold eui-u-color-info mt-3 mb-2\">Accessibility</h3>\n <ng-content select=\"docPageAccessibility\"></ng-content>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab>\n <euiTabLabel> OPTIONS & SAMPLES </euiTabLabel>\n <euiTabContent>\n <ng-container *ngIf=\"cmp && cmp.metadata\">\n <h3 class=\"eui-u-font-bold eui-u-color-info mt-3 mb-3\">Module import</h3>\n <pre><code class=\"language-javascript eui-u-bg-color-grey-5\" euiCode>{{ cmpModuleImport }}</code></pre>\n <br />\n </ng-container>\n\n <h3 id=\"overview\" class=\"eui-u-font-bold eui-u-color-info mt-3 mb-3\">Overview & setup</h3>\n <div *ngIf=\"pageOverviewContent.length > 0; else noOverview\">\n <ng-content select=\"docPageOverview\"></ng-content>\n </div>\n <ng-template #noOverview> Coming soon... </ng-template>\n <br />\n\n <h3 id=\"samples\" class=\"eui-u-font-bold eui-u-color-info mt-8 mb-2\">Options & samples</h3>\n <ng-content select=\"docPageSamples\"></ng-content>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab *ngIf=\"pageThemingContent.length > 0\">\n <euiTabLabel> THEMING </euiTabLabel>\n <euiTabContent>\n <h3 id=\"theming\" class=\"eui-u-font-bold eui-u-color-info mt-3 mb-2\">Theming</h3>\n <ng-content select=\"docPageTheming\"></ng-content>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab *ngIf=\"pageInteractiveContent.length > 0\">\n <euiTabLabel>\n {{ pageInteractiveContent.first.title }}\n </euiTabLabel>\n <euiTabContent>\n <h3 id=\"interactive\" class=\"eui-u-font-bold eui-u-color-info mt-3 mb-2\">\n {{ pageInteractiveContent.first.subTitle }}\n </h3>\n <ng-content select=\"docPageInteractive\"></ng-content>\n </euiTabContent>\n </eui-tab>\n </eui-tabs>\n\n <ng-container *ngIf=\"pageSectionsContent.length > 0\">\n <h3 id=\"demo\" *ngIf=\"sections.length === 0\" class=\"eui-u-font-bold eui-u-color-info mt-3 mb-2\">Demo</h3>\n <ng-content select=\"docPageSections\"></ng-content>\n </ng-container>\n </eui-page-content>\n </eui-page>\n </div>\n\n <div *ngIf=\"isNavigationVisible\" class=\"doc-page-navigation-column eui-u-hidden-desktop-down\">\n <div id=\"doc-page-nav\">\n <div class=\"doc-page-navigation-title\">In this page</div>\n <div class=\"doc-page-navigation-content\" tabindex=\"0\">\n <ul class=\"doc-page-navigation\">\n <ng-container *ngIf=\"pageSectionsContent.length === 0\">\n <!-- ALWAYS PRESENT in each page-->\n <!-- <li class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'overview'\" (click)=\"onNavClick('overview', 0)\"><span>OVERVIEW</span></li> -->\n <li\n *ngIf=\"hasApi\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'api'\"\n (click)=\"onNavClick('api', 0)\">\n <span>API</span>\n </li>\n <li\n *ngIf=\"hasA11y\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'a11y'\"\n (click)=\"onNavClick('a11y', 1)\">\n <span>A11Y</span>\n </li>\n <li\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'samples'\"\n (click)=\"onNavClick('samples', 2)\">\n <span>OPTIONS & SAMPLES</span>\n </li>\n <li class=\"doc-page-navigation-item doc-page-navigation-sub\">\n <ul *ngFor=\"let sample of samples\" class=\"doc-page-navigation-list\">\n <li\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === sample.id\"\n (click)=\"onNavClick(sample.id, 2)\">\n <span>{{ sample.label }}</span>\n </li>\n </ul>\n </li>\n\n <!-- OPTIONAL TABS-->\n <ng-container *ngIf=\"pageThemingContent.length > 0\">\n <li\n *ngIf=\"pageThemingContent.length > 0\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'theming'\"\n (click)=\"onNavClick('theming', 3)\">\n <span>THEMING</span>\n </li>\n <li\n *ngIf=\"pageInteractiveContent.length > 0\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'advanced'\"\n (click)=\"onNavClick('advanced', 4)\">\n <span>{{ pageInteractiveContent.first.title }}</span>\n </li>\n </ng-container>\n <ng-container *ngIf=\"pageThemingContent.length === 0\">\n <li\n *ngIf=\"pageInteractiveContent.length > 0\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'advanced'\"\n (click)=\"onNavClick('advanced', 3)\">\n <span>{{ pageInteractiveContent.first.title }}</span>\n </li>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"pageSectionsContent.length > 0\">\n <li\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'sections'\"\n (click)=\"onNavClick('sections', null)\">\n <span>Sections</span>\n </li>\n <li\n *ngIf=\"sections.length === 0\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'demo'\"\n (click)=\"onNavClick('demo', null)\">\n <span>Demo</span>\n </li>\n <li *ngIf=\"sections.length > 0\" class=\"doc-page-navigation-item doc-page-navigation-sub\">\n <ul *ngFor=\"let section of sections\">\n <li\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === section.id\"\n (click)=\"onNavClick(section.id, null)\">\n <span>{{ section.label }}</span>\n </li>\n </ul>\n </li>\n </ng-container>\n </ul>\n </div>\n </div>\n </div>\n</div>\n", styles: [".doc-page-navigation-wrapper{display:flex;flex-wrap:wrap;width:100%}.doc-page-navigation-wrapper .doc-page-main-column{padding-right:var(--eui-base-spacing-m);width:calc(100% - 400px)}.doc-page-navigation-wrapper .doc-page-navigation-column{background:var(--eui-base-color-white);box-shadow:0 8px 10px #b7c0ce33;position:fixed;right:0;transition:all ease-in-out .25s;width:400px;z-index:auto;box-shadow:var(--eui-base-shadow-1)}.doc-page-navigation-wrapper .doc-page-navigation-column:hover{width:400px}.doc-page-navigation-title{font-weight:700;padding:var(--eui-base-spacing-s)}.doc-page-navigation-content{display:block;height:100vh;max-height:calc(100vh - 6rem);overflow-y:auto;width:100%}.doc-page-navigation-content::-webkit-scrollbar{display:inherit;height:6px;width:6px;background-color:var(--eui-base-color-grey-10)}.doc-page-navigation-content::-webkit-scrollbar-thumb{background-color:var(--eui-base-color-grey-20);border-radius:5rem}.doc-page-navigation-content::-webkit-scrollbar-thumb:hover{background-color:var(--eui-base-color-grey-25)}.doc-page-navigation-content::-webkit-scrollbar-track{background-color:var(--eui-base-color-grey-10);border-radius:0}.doc-page-navigation{background-color:transparent;border-left:2px solid transparent;padding-top:var(--eui-base-spacing-xs);margin:0;padding:0}.doc-page-navigation .doc-page-navigation-list{margin:0;padding:0}.doc-page-navigation .doc-page-navigation-item{color:var(--eui-base-color-primary-100);cursor:pointer;line-height:1.5;overflow:hidden;padding:var(--eui-base-spacing-2xs);text-overflow:ellipsis;transition:background-color ease-in .2s;white-space:nowrap;list-style:none}.doc-page-navigation .doc-page-navigation-item span{font-weight:700;padding-left:var(--eui-base-spacing-xs)}.doc-page-navigation .doc-page-navigation-item:not(.doc-page-navigation-sub):hover{background-color:var(--eui-base-color-grey-5);border-left:2px solid var(--eui-base-color-info-100)}.doc-page-navigation .doc-page-navigation-item.doc-page-navigation-sub .doc-page-navigation-item span{font-weight:400;padding-left:var(--eui-base-spacing-m)}.doc-page-navigation .doc-page-navigation-item.doc-page-navigation-sub .doc-page-navigation-item:hover{background-color:var(--eui-base-color-grey-5);border-left:2px solid var(--eui-base-color-grey-15)}.doc-page-navigation .doc-page-navigation-item.doc-page-navigation-item--selected{background-color:var(--eui-base-color-grey-5);border-left:2px solid var(--eui-base-color-info-100)}.doc-page-api-iframe-wrapper{display:flex;justify-content:space-around;margin:0}@media screen and (max-width: 767px){.doc-page-navigation-wrapper .doc-page-main-column{padding-right:0;width:100%}.doc-page-navigation-wrapper .doc-page-navigation-column{display:none;width:0}}@media screen and (min-width: 768px) and (max-width: 995px){.doc-page-navigation-wrapper .doc-page-main-column{width:80%}.doc-page-navigation-wrapper .doc-page-navigation-column{width:20%}}@media screen and (max-width: 1550px){.doc-page-api-iframe-wrapper{display:none}}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.EuiTabsComponent, selector: "eui-tabs", inputs: ["styleClass", "tabs", "activeTabIndex", "e2eAttr", "pathMatch", "isMainNavigation", "isSubTabs", "isVerticalTabs"], outputs: ["tabClosed", "tabSelected", "tabClose", "tabSelect"] }, { kind: "component", type: i5.EuiTabComponent, selector: "eui-tab", inputs: ["url", "e2eAttr", "tooltip", "isClosable", "isVisible", "isActive", "isDisabled", "hasBackgroundFilled", "isHandleCloseOnClose"] }, { kind: "component", type: i5.EuiTabLabelComponent, selector: "eui-tab-label, euiTabLabel" }, { kind: "component", type: i5.EuiTabContentComponent, selector: "eui-tab-content, euiTabContent", inputs: ["hasNoContentPadding"] }, { kind: "component", type: i6.EuiPageComponent, selector: "eui-page" }, { kind: "component", type: i6.EuiPageContentComponent, selector: "eui-page-content" }, { kind: "component", type: i6.EuiPageHeaderComponent, selector: "eui-page-header", inputs: ["label", "subLabel", "isCollapsible", "isCollapsed", "collapsedLabel", "expandedLabel"], outputs: ["collapse"] }, { kind: "directive", type: i6.EuiPageHeaderActionItemsContentDirective, selector: "eui-page-header-action-items" }, { kind: "component", type: i7.EuiChipComponent, selector: "eui-chip, span[euiChip], li[euiChip]", inputs: ["euiInternalId", "tooltipMessage", "id", "data", "isChipRemovable", "isSquared"], outputs: ["remove"] }, { kind: "component", type: i8.EuiAlertComponent, selector: "div[euiAlert], eui-alert", inputs: ["euiAlertMuted", "isCloseable"], outputs: ["close"] }, { kind: "directive", type: i9.EuiCodeHighlighterDirective, selector: "[euiCode]" }, { kind: "component", type: i10.DocPageCodeComponent, selector: "eui-showcase-doc-page-code", inputs: ["codeFolder", "showcase"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
231
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.2", ngImport: i0, type: DocPageComponent, decorators: [{
|
|
231
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DocPageComponent, decorators: [{
|
|
232
232
|
type: Component,
|
|
233
233
|
args: [{ selector: 'eui-showcase-doc-page', encapsulation: ViewEncapsulation.None, template: "<div class=\"doc-page-navigation-wrapper\" [class.eui-u-hidden]=\"isLoading\">\n <div class=\"doc-page-main-column\">\n <eui-page>\n <eui-page-header label=\"{{ label }}\" subLabel=\"{{ subLabel }}\">\n <eui-page-header-action-items>\n <eui-showcase-doc-page-code\n *ngIf=\"codeFolder\"\n codeFolder=\"{{ codeFolder }}\"\n showcase=\"{{ showcase }}\"></eui-showcase-doc-page-code>\n <eui-chip\n *ngIf=\"stateLabel\"\n [euiSuccess]=\"stateLabel === 'ACTIVE'\"\n [euiWarning]=\"stateLabel === 'DEPRECATED'\"\n [euiDanger]=\"isLegacy\">\n <span euiLabel>\n <strong>{{ stateLabel }}</strong>\n </span>\n </eui-chip>\n </eui-page-header-action-items>\n </eui-page-header>\n\n <eui-page-content>\n <eui-alert *ngIf=\"stateLabel === 'LEGACY' || isLegacy\" euiDanger>\n <p>\n This component will be\n <strong class=\"eui-u-color-danger\">removed</strong> in the next version of eUI !!\n </p>\n <div *ngIf=\"cmp\">\n <div *ngIf=\"cmp.cmpReplacement !== 'NONE'\">\n It has been replaced by :\n <strong class=\"eui-u-color-success-darkest\">{{ cmp.cmpReplacement }}</strong>\n <!-- <div *ngIf=\"cmp.cmpReplacementUrl\">\n <br><br>\n You can find more information on the new component here : <a [routerLink]=\"cmp.cmpReplacementUrl\">{{cmp.cmpReplacementUrl}}</a>\n </div> -->\n </div>\n <div *ngIf=\"cmp.cmpReplacement === 'NONE'\">\n This component will be\n <strong class=\"eui-u-color-danger\">discontinued in future version of eUI</strong>\n </div>\n <div *ngIf=\"cmp.cmpReplacementNote\">\n <strong class=\"eui-u-color-warning\">{{ cmp.cmpReplacementNote }}</strong>\n </div>\n </div>\n </eui-alert>\n\n <eui-alert *ngIf=\"stateLabel === 'DEPRECATED' || isDeprecated\" euiWarning>\n <p>\n This component has been\n <strong class=\"eui-u-color-danger\">deprecated</strong>\n </p>\n <div *ngIf=\"cmp\">\n This component has no replacement in current version AND won't have replacement in next version of eUI, it is kept\n for\n <strong class=\"eui-u-color-warning\">historical usage only</strong>\n </div>\n </eui-alert>\n\n <eui-alert *ngIf=\"stateLabel === 'NOT_READY' || isNotReady\" euiInfo>\n <p>\n This component is\n <strong class=\"eui-u-color-info\">NOT READY</strong>\n </p>\n <div *ngIf=\"cmp\">\n This component is under development / some features might be missing, it'll be available in a future release once\n validated.\n </div>\n </eui-alert>\n\n <div *ngIf=\"(stateLabel || isNotReady || isDeprecated) && stateLabel !== 'ACTIVE'\" class=\"mb-5\"></div>\n\n <eui-tabs #tabsContent *ngIf=\"pageSectionsContent.length === 0\" (tabSelected)=\"onTabSelected($event)\">\n <eui-tab *ngIf=\"hasApi\">\n <euiTabLabel> API </euiTabLabel>\n <euiTabContent>\n <ng-container *ngIf=\"apiUrlSafe\">\n <div class=\"flex-container\">\n <a href=\"{{ apiUrl }}\" target=\"_blank\" class=\"ms-auto pb-2 eui-u-text-link-external\">Open API page</a>\n </div>\n <div class=\"doc-page-api-iframe-wrapper\">\n <iframe id=\"iframe_api\" [width]=\"'100%'\" height=\"700px\" frameBorder=\"0\" [src]=\"apiUrlSafe\"></iframe>\n </div>\n </ng-container>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab *ngIf=\"hasA11y\">\n <euiTabLabel> A11Y </euiTabLabel>\n <euiTabContent>\n <h3 id=\"accessibility\" class=\"eui-u-font-bold eui-u-color-info mt-3 mb-2\">Accessibility</h3>\n <ng-content select=\"docPageAccessibility\"></ng-content>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab>\n <euiTabLabel> OPTIONS & SAMPLES </euiTabLabel>\n <euiTabContent>\n <ng-container *ngIf=\"cmp && cmp.metadata\">\n <h3 class=\"eui-u-font-bold eui-u-color-info mt-3 mb-3\">Module import</h3>\n <pre><code class=\"language-javascript eui-u-bg-color-grey-5\" euiCode>{{ cmpModuleImport }}</code></pre>\n <br />\n </ng-container>\n\n <h3 id=\"overview\" class=\"eui-u-font-bold eui-u-color-info mt-3 mb-3\">Overview & setup</h3>\n <div *ngIf=\"pageOverviewContent.length > 0; else noOverview\">\n <ng-content select=\"docPageOverview\"></ng-content>\n </div>\n <ng-template #noOverview> Coming soon... </ng-template>\n <br />\n\n <h3 id=\"samples\" class=\"eui-u-font-bold eui-u-color-info mt-8 mb-2\">Options & samples</h3>\n <ng-content select=\"docPageSamples\"></ng-content>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab *ngIf=\"pageThemingContent.length > 0\">\n <euiTabLabel> THEMING </euiTabLabel>\n <euiTabContent>\n <h3 id=\"theming\" class=\"eui-u-font-bold eui-u-color-info mt-3 mb-2\">Theming</h3>\n <ng-content select=\"docPageTheming\"></ng-content>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab *ngIf=\"pageInteractiveContent.length > 0\">\n <euiTabLabel>\n {{ pageInteractiveContent.first.title }}\n </euiTabLabel>\n <euiTabContent>\n <h3 id=\"interactive\" class=\"eui-u-font-bold eui-u-color-info mt-3 mb-2\">\n {{ pageInteractiveContent.first.subTitle }}\n </h3>\n <ng-content select=\"docPageInteractive\"></ng-content>\n </euiTabContent>\n </eui-tab>\n </eui-tabs>\n\n <ng-container *ngIf=\"pageSectionsContent.length > 0\">\n <h3 id=\"demo\" *ngIf=\"sections.length === 0\" class=\"eui-u-font-bold eui-u-color-info mt-3 mb-2\">Demo</h3>\n <ng-content select=\"docPageSections\"></ng-content>\n </ng-container>\n </eui-page-content>\n </eui-page>\n </div>\n\n <div *ngIf=\"isNavigationVisible\" class=\"doc-page-navigation-column eui-u-hidden-desktop-down\">\n <div id=\"doc-page-nav\">\n <div class=\"doc-page-navigation-title\">In this page</div>\n <div class=\"doc-page-navigation-content\" tabindex=\"0\">\n <ul class=\"doc-page-navigation\">\n <ng-container *ngIf=\"pageSectionsContent.length === 0\">\n <!-- ALWAYS PRESENT in each page-->\n <!-- <li class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'overview'\" (click)=\"onNavClick('overview', 0)\"><span>OVERVIEW</span></li> -->\n <li\n *ngIf=\"hasApi\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'api'\"\n (click)=\"onNavClick('api', 0)\">\n <span>API</span>\n </li>\n <li\n *ngIf=\"hasA11y\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'a11y'\"\n (click)=\"onNavClick('a11y', 1)\">\n <span>A11Y</span>\n </li>\n <li\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'samples'\"\n (click)=\"onNavClick('samples', 2)\">\n <span>OPTIONS & SAMPLES</span>\n </li>\n <li class=\"doc-page-navigation-item doc-page-navigation-sub\">\n <ul *ngFor=\"let sample of samples\" class=\"doc-page-navigation-list\">\n <li\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === sample.id\"\n (click)=\"onNavClick(sample.id, 2)\">\n <span>{{ sample.label }}</span>\n </li>\n </ul>\n </li>\n\n <!-- OPTIONAL TABS-->\n <ng-container *ngIf=\"pageThemingContent.length > 0\">\n <li\n *ngIf=\"pageThemingContent.length > 0\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'theming'\"\n (click)=\"onNavClick('theming', 3)\">\n <span>THEMING</span>\n </li>\n <li\n *ngIf=\"pageInteractiveContent.length > 0\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'advanced'\"\n (click)=\"onNavClick('advanced', 4)\">\n <span>{{ pageInteractiveContent.first.title }}</span>\n </li>\n </ng-container>\n <ng-container *ngIf=\"pageThemingContent.length === 0\">\n <li\n *ngIf=\"pageInteractiveContent.length > 0\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'advanced'\"\n (click)=\"onNavClick('advanced', 3)\">\n <span>{{ pageInteractiveContent.first.title }}</span>\n </li>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"pageSectionsContent.length > 0\">\n <li\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'sections'\"\n (click)=\"onNavClick('sections', null)\">\n <span>Sections</span>\n </li>\n <li\n *ngIf=\"sections.length === 0\"\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === 'demo'\"\n (click)=\"onNavClick('demo', null)\">\n <span>Demo</span>\n </li>\n <li *ngIf=\"sections.length > 0\" class=\"doc-page-navigation-item doc-page-navigation-sub\">\n <ul *ngFor=\"let section of sections\">\n <li\n class=\"doc-page-navigation-item\"\n [class.doc-page-navigation-item--selected]=\"fragmentId === section.id\"\n (click)=\"onNavClick(section.id, null)\">\n <span>{{ section.label }}</span>\n </li>\n </ul>\n </li>\n </ng-container>\n </ul>\n </div>\n </div>\n </div>\n</div>\n", styles: [".doc-page-navigation-wrapper{display:flex;flex-wrap:wrap;width:100%}.doc-page-navigation-wrapper .doc-page-main-column{padding-right:var(--eui-base-spacing-m);width:calc(100% - 400px)}.doc-page-navigation-wrapper .doc-page-navigation-column{background:var(--eui-base-color-white);box-shadow:0 8px 10px #b7c0ce33;position:fixed;right:0;transition:all ease-in-out .25s;width:400px;z-index:auto;box-shadow:var(--eui-base-shadow-1)}.doc-page-navigation-wrapper .doc-page-navigation-column:hover{width:400px}.doc-page-navigation-title{font-weight:700;padding:var(--eui-base-spacing-s)}.doc-page-navigation-content{display:block;height:100vh;max-height:calc(100vh - 6rem);overflow-y:auto;width:100%}.doc-page-navigation-content::-webkit-scrollbar{display:inherit;height:6px;width:6px;background-color:var(--eui-base-color-grey-10)}.doc-page-navigation-content::-webkit-scrollbar-thumb{background-color:var(--eui-base-color-grey-20);border-radius:5rem}.doc-page-navigation-content::-webkit-scrollbar-thumb:hover{background-color:var(--eui-base-color-grey-25)}.doc-page-navigation-content::-webkit-scrollbar-track{background-color:var(--eui-base-color-grey-10);border-radius:0}.doc-page-navigation{background-color:transparent;border-left:2px solid transparent;padding-top:var(--eui-base-spacing-xs);margin:0;padding:0}.doc-page-navigation .doc-page-navigation-list{margin:0;padding:0}.doc-page-navigation .doc-page-navigation-item{color:var(--eui-base-color-primary-100);cursor:pointer;line-height:1.5;overflow:hidden;padding:var(--eui-base-spacing-2xs);text-overflow:ellipsis;transition:background-color ease-in .2s;white-space:nowrap;list-style:none}.doc-page-navigation .doc-page-navigation-item span{font-weight:700;padding-left:var(--eui-base-spacing-xs)}.doc-page-navigation .doc-page-navigation-item:not(.doc-page-navigation-sub):hover{background-color:var(--eui-base-color-grey-5);border-left:2px solid var(--eui-base-color-info-100)}.doc-page-navigation .doc-page-navigation-item.doc-page-navigation-sub .doc-page-navigation-item span{font-weight:400;padding-left:var(--eui-base-spacing-m)}.doc-page-navigation .doc-page-navigation-item.doc-page-navigation-sub .doc-page-navigation-item:hover{background-color:var(--eui-base-color-grey-5);border-left:2px solid var(--eui-base-color-grey-15)}.doc-page-navigation .doc-page-navigation-item.doc-page-navigation-item--selected{background-color:var(--eui-base-color-grey-5);border-left:2px solid var(--eui-base-color-info-100)}.doc-page-api-iframe-wrapper{display:flex;justify-content:space-around;margin:0}@media screen and (max-width: 767px){.doc-page-navigation-wrapper .doc-page-main-column{padding-right:0;width:100%}.doc-page-navigation-wrapper .doc-page-navigation-column{display:none;width:0}}@media screen and (min-width: 768px) and (max-width: 995px){.doc-page-navigation-wrapper .doc-page-main-column{width:80%}.doc-page-navigation-wrapper .doc-page-navigation-column{width:20%}}@media screen and (max-width: 1550px){.doc-page-api-iframe-wrapper{display:none}}\n"] }]
|
|
234
234
|
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.UxAppShellService }, { type: i3.DomSanitizer }, { type: i4.Location }]; }, propDecorators: { id: [{
|
|
@@ -286,10 +286,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.2",
|
|
|
286
286
|
}] } });
|
|
287
287
|
/* eslint-disable @angular-eslint/directive-selector */
|
|
288
288
|
export class DocPageOverviewContentDirective {
|
|
289
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DocPageOverviewContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
290
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: DocPageOverviewContentDirective, selector: "docPageOverview", ngImport: i0 }); }
|
|
289
291
|
}
|
|
290
|
-
|
|
291
|
-
/** @nocollapse */ DocPageOverviewContentDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0-next.2", type: DocPageOverviewContentDirective, selector: "docPageOverview", ngImport: i0 });
|
|
292
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.2", ngImport: i0, type: DocPageOverviewContentDirective, decorators: [{
|
|
292
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DocPageOverviewContentDirective, decorators: [{
|
|
293
293
|
type: Directive,
|
|
294
294
|
args: [{ selector: 'docPageOverview' }]
|
|
295
295
|
}] });
|
|
@@ -298,10 +298,10 @@ export class DocPageInteractiveContentDirective {
|
|
|
298
298
|
this.title = 'ADVANCED EXAMPLES';
|
|
299
299
|
this.subTitle = 'Advanced use cases';
|
|
300
300
|
}
|
|
301
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DocPageInteractiveContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
302
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: DocPageInteractiveContentDirective, selector: "docPageInteractive", inputs: { title: "title", subTitle: "subTitle" }, ngImport: i0 }); }
|
|
301
303
|
}
|
|
302
|
-
|
|
303
|
-
/** @nocollapse */ DocPageInteractiveContentDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0-next.2", type: DocPageInteractiveContentDirective, selector: "docPageInteractive", inputs: { title: "title", subTitle: "subTitle" }, ngImport: i0 });
|
|
304
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.2", ngImport: i0, type: DocPageInteractiveContentDirective, decorators: [{
|
|
304
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DocPageInteractiveContentDirective, decorators: [{
|
|
305
305
|
type: Directive,
|
|
306
306
|
args: [{ selector: 'docPageInteractive' }]
|
|
307
307
|
}], propDecorators: { title: [{
|
|
@@ -310,43 +310,43 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.2",
|
|
|
310
310
|
type: Input
|
|
311
311
|
}] } });
|
|
312
312
|
export class DocPageSamplesContentDirective {
|
|
313
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DocPageSamplesContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
314
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: DocPageSamplesContentDirective, selector: "docPageSamples", ngImport: i0 }); }
|
|
313
315
|
}
|
|
314
|
-
|
|
315
|
-
/** @nocollapse */ DocPageSamplesContentDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0-next.2", type: DocPageSamplesContentDirective, selector: "docPageSamples", ngImport: i0 });
|
|
316
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.2", ngImport: i0, type: DocPageSamplesContentDirective, decorators: [{
|
|
316
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DocPageSamplesContentDirective, decorators: [{
|
|
317
317
|
type: Directive,
|
|
318
318
|
args: [{ selector: 'docPageSamples' }]
|
|
319
319
|
}] });
|
|
320
320
|
export class DocPageSectionsContentDirective {
|
|
321
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DocPageSectionsContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
322
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: DocPageSectionsContentDirective, selector: "docPageSections", ngImport: i0 }); }
|
|
321
323
|
}
|
|
322
|
-
|
|
323
|
-
/** @nocollapse */ DocPageSectionsContentDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0-next.2", type: DocPageSectionsContentDirective, selector: "docPageSections", ngImport: i0 });
|
|
324
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.2", ngImport: i0, type: DocPageSectionsContentDirective, decorators: [{
|
|
324
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DocPageSectionsContentDirective, decorators: [{
|
|
325
325
|
type: Directive,
|
|
326
326
|
args: [{ selector: 'docPageSections' }]
|
|
327
327
|
}] });
|
|
328
328
|
export class DocPageAccessibilityContentDirective {
|
|
329
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DocPageAccessibilityContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
330
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: DocPageAccessibilityContentDirective, selector: "docPageAccessibility", ngImport: i0 }); }
|
|
329
331
|
}
|
|
330
|
-
|
|
331
|
-
/** @nocollapse */ DocPageAccessibilityContentDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0-next.2", type: DocPageAccessibilityContentDirective, selector: "docPageAccessibility", ngImport: i0 });
|
|
332
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.2", ngImport: i0, type: DocPageAccessibilityContentDirective, decorators: [{
|
|
332
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DocPageAccessibilityContentDirective, decorators: [{
|
|
333
333
|
type: Directive,
|
|
334
334
|
args: [{ selector: 'docPageAccessibility' }]
|
|
335
335
|
}] });
|
|
336
336
|
export class DocPageApiContentDirective {
|
|
337
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DocPageApiContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
338
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: DocPageApiContentDirective, selector: "docPageApi", ngImport: i0 }); }
|
|
337
339
|
}
|
|
338
|
-
|
|
339
|
-
/** @nocollapse */ DocPageApiContentDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0-next.2", type: DocPageApiContentDirective, selector: "docPageApi", ngImport: i0 });
|
|
340
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.2", ngImport: i0, type: DocPageApiContentDirective, decorators: [{
|
|
340
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DocPageApiContentDirective, decorators: [{
|
|
341
341
|
type: Directive,
|
|
342
342
|
args: [{ selector: 'docPageApi' }]
|
|
343
343
|
}] });
|
|
344
344
|
export class DocPageThemingContentDirective {
|
|
345
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DocPageThemingContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
346
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: DocPageThemingContentDirective, selector: "docPageTheming", ngImport: i0 }); }
|
|
345
347
|
}
|
|
346
|
-
|
|
347
|
-
/** @nocollapse */ DocPageThemingContentDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0-next.2", type: DocPageThemingContentDirective, selector: "docPageTheming", ngImport: i0 });
|
|
348
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.2", ngImport: i0, type: DocPageThemingContentDirective, decorators: [{
|
|
348
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DocPageThemingContentDirective, decorators: [{
|
|
349
349
|
type: Directive,
|
|
350
350
|
args: [{ selector: 'docPageTheming' }]
|
|
351
351
|
}] });
|
|
352
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jLXBhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2RvYy1wYWdlL2RvYy1wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kb2MtcGFnZS9kb2MtcGFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULEtBQUssRUFDTCxTQUFTLEVBRVQsZUFBZSxFQUNmLFVBQVUsRUFHVixpQkFBaUIsRUFDakIsU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7Ozs7Ozs7QUFVM0UsTUFBTSxPQUFPLGdCQUFnQjtJQStEekIsWUFDWSxNQUFjLEVBQ2QsS0FBcUIsRUFDckIsU0FBNEIsRUFDN0IsU0FBdUIsRUFDdEIsUUFBa0I7UUFKbEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBQzdCLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQWhFckIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDaEIsd0JBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQzNCLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFDZCxZQUFPLEdBQUcsSUFBSSxDQUFDO1FBYXhCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsaUJBQVksR0FBRyxJQUFJLENBQUM7UUE4QlosYUFB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QkFBbUIsQ0FBQztRQUM1QixhQUFRLEdBQUcsb0JBQW9CLENBQUM7S0FDNUM7O3lKQUhZLGtDQUFrQzs2SUFBbEMsa0NBQWtDO2tHQUFsQyxrQ0FBa0M7a0JBRDlDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsb0JBQW9CLEVBQUU7OEJBRWhDLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLOztBQUdWLE1BQU0sT0FBTyw4QkFBOEI7O3FKQUE5Qiw4QkFBOEI7eUlBQTlCLDhCQUE4QjtrR0FBOUIsOEJBQThCO2tCQUQxQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFOztBQUd6QyxNQUFNLE9BQU8sK0JBQStCOztzSkFBL0IsK0JBQStCOzBJQUEvQiwrQkFBK0I7a0dBQS9CLCtCQUErQjtrQkFEM0MsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRTs7QUFHMUMsTUFBTSxPQUFPLG9DQUFvQzs7MkpBQXBDLG9DQUFvQzsrSUFBcEMsb0NBQW9DO2tHQUFwQyxvQ0FBb0M7a0JBRGhELFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUU7O0FBRy9DLE1BQU0sT0FBTywwQkFBMEI7O2lKQUExQiwwQkFBMEI7cUlBQTFCLDBCQUEwQjtrR0FBMUIsMEJBQTBCO2tCQUR0QyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRTs7QUFJckMsTUFBTSxPQUFPLDhCQUE4Qjs7cUpBQTlCLDhCQUE4Qjt5SUFBOUIsOEJBQThCO2tHQUE5Qiw4QkFBOEI7a0JBRDFDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBJbnB1dCxcbiAgICBEaXJlY3RpdmUsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgZm9yd2FyZFJlZixcbiAgICBPbkluaXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTYWZlUmVzb3VyY2VVcmwsIERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgUm91dGVyLCBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBEb2NTYW1wbGVDb21wb25lbnQgfSBmcm9tICcuLi9kb2Mtc2FtcGxlL2RvYy1zYW1wbGUuY29tcG9uZW50JztcbmltcG9ydCB7IERvY1NlY3Rpb25Db21wb25lbnQgfSBmcm9tICcuLi9kb2Mtc2VjdGlvbi9kb2Mtc2VjdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXhBcHBTaGVsbFNlcnZpY2UgfSBmcm9tICdAZXVpL2NvcmUnO1xuaW1wb3J0IHsgRXVpVGFic0NvbXBvbmVudCB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9ldWktdGFicyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZXVpLXNob3djYXNlLWRvYy1wYWdlJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2RvYy1wYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kb2MtcGFnZS5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIERvY1BhZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICAgIEBJbnB1dCgpIGlkO1xuICAgIEBJbnB1dCgpIGxhYmVsO1xuICAgIEBJbnB1dCgpIHN1YkxhYmVsOiBzdHJpbmc7XG4gICAgQElucHV0KCkgaXNOb3RSZWFkeSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGlzRGVwcmVjYXRlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGlzTGVnYWN5ID0gZmFsc2U7XG4gICAgQElucHV0KCkgY29kZUZvbGRlcjogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHNob3djYXNlID0gJ3V4JztcbiAgICBASW5wdXQoKSBpc05hdmlnYXRpb25WaXNpYmxlID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBoYXNBcGkgPSB0cnVlO1xuICAgIEBJbnB1dCgpIGhhc0ExMXkgPSB0cnVlO1xuXG4gICAgc3RhdGVUeXBlQ2xhc3M7XG4gICAgc3RhdGVMYWJlbDtcbiAgICBjbXA7XG4gICAgZnJhZ21lbnRJZDtcbiAgICBjbXBNb2R1bGVJbXBvcnQ7XG4gICAgYXBwTWV0YWRhdGE7XG5cbiAgICBhcGlVcmxTYWZlOiBTYWZlUmVzb3VyY2VVcmw7XG4gICAgYXBpVXJsOiBzdHJpbmc7XG4gICAgaUZyYW1lQ29udGVudDtcblxuICAgIGlzTG9hZGluZyA9IHRydWU7XG4gICAgaXNOYXZDbGlja2VkID0gdHJ1ZTtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oRG9jU2FtcGxlQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gICAgc2FtcGxlczogUXVlcnlMaXN0PERvY1NhbXBsZUNvbXBvbmVudD47XG4gICAgQENvbnRlbnRDaGlsZHJlbihEb2NTZWN0aW9uQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gICAgc2VjdGlvbnM6IFF1ZXJ5TGlzdDxEb2NTZWN0aW9uQ29tcG9uZW50PjtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBEb2NQYWdlT3ZlcnZpZXdDb250ZW50RGlyZWN0aXZlKSlcbiAgICBwYWdlT3ZlcnZpZXdDb250ZW50OiBRdWVyeUxpc3Q8RG9jUGFnZU92ZXJ2aWV3Q29udGVudERpcmVjdGl2ZT47XG5cbiAgICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gRG9jUGFnZVNhbXBsZXNDb250ZW50RGlyZWN0aXZlKSlcbiAgICBwYWdlU2FtcGxlc0NvbnRlbnQ6IFF1ZXJ5TGlzdDxEb2NQYWdlU2FtcGxlc0NvbnRlbnREaXJlY3RpdmU+O1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IERvY1BhZ2VTZWN0aW9uc0NvbnRlbnREaXJlY3RpdmUpKVxuICAgIHBhZ2VTZWN0aW9uc0NvbnRlbnQ6IFF1ZXJ5TGlzdDxEb2NQYWdlU2VjdGlvbnNDb250ZW50RGlyZWN0aXZlPjtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBEb2NQYWdlSW50ZXJhY3RpdmVDb250ZW50RGlyZWN0aXZlKSlcbiAgICBwYWdlSW50ZXJhY3RpdmVDb250ZW50OiBRdWVyeUxpc3Q8RG9jUGFnZUludGVyYWN0aXZlQ29udGVudERpcmVjdGl2ZT47XG5cbiAgICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gRG9jUGFnZUFjY2Vzc2liaWxpdHlDb250ZW50RGlyZWN0aXZlKSlcbiAgICBwYWdlQWNjZXNzaWJpbGl0eUNvbnRlbnQ6IFF1ZXJ5TGlzdDxEb2NQYWdlQWNjZXNzaWJpbGl0eUNvbnRlbnREaXJlY3RpdmU+O1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IERvY1BhZ2VBcGlDb250ZW50RGlyZWN0aXZlKSlcbiAgICBwYWdlQXBpQ29udGVudDogUXVlcnlMaXN0PERvY1BhZ2VBcGlDb250ZW50RGlyZWN0aXZlPjtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBEb2NQYWdlVGhlbWluZ0NvbnRlbnREaXJlY3RpdmUpKVxuICAgIHBhZ2VUaGVtaW5nQ29udGVudDogUXVlcnlMaXN0PERvY1BhZ2VUaGVtaW5nQ29udGVudERpcmVjdGl2ZT47XG5cbiAgICBAVmlld0NoaWxkKCd0YWJzQ29udGVudCcpIHRhYnNDb250ZW50OiBFdWlUYWJzQ29tcG9uZW50O1xuXG4gICAgcHJpdmF0ZSBUQUJTX0RFRiA9IFtcbiAgICAgICAgeyBpbmRleDogMCwgaWQ6ICdhcGknIH0sXG4gICAgICAgIHsgaW5kZXg6IDEsIGlkOiAnYTExeScgfSxcbiAgICAgICAgeyBpbmRleDogMiwgaWQ6ICdzYW1wbGVzJyB9LFxuICAgICAgICB7IGluZGV4OiAzLCBpZDogJ3RoZW1pbmcnIH0sXG4gICAgICAgIHsgaW5kZXg6IDQsIGlkOiAnYWR2YW5jZWQnIH0sXG4gICAgXTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgcHJpdmF0ZSBhc1NlcnZpY2U6IFV4QXBwU2hlbGxTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgICAgIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdGhpcy5hc1NlcnZpY2UuaXNCbG9ja0RvY3VtZW50QWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5hcHBNZXRhZGF0YSA9IHRoaXMuYXNTZXJ2aWNlLnN0YXRlLmFwcE1ldGFkYXRhO1xuXG4gICAgICAgIGlmICh0aGlzLmlkICYmICF0aGlzLmxhYmVsKSB7XG4gICAgICAgICAgICB0aGlzLmxhYmVsID0gdGhpcy5pZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmNtcCA9IHRoaXMuX2dldENvbXBvbmVudFN0YXR1cyh0aGlzLmlkKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuY21wKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmNtcC5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnc3VjY2Vzcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlTGFiZWwgPSAnQUNUSVZFJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGVUeXBlQ2xhc3MgPSAnc3VjY2Vzcyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICBjYXNlICd3YXJuaW5nJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGVMYWJlbCA9ICdERVBSRUNBVEVEJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGVUeXBlQ2xhc3MgPSAnd2FybmluZyc7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRGVwcmVjYXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICBjYXNlICdkYW5nZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZUxhYmVsID0gJ0xFR0FDWSAtIHdpbGwgYmUgcmVtb3ZlZCBpbiBuZXh0IHZlcnNpb24nO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZVR5cGVDbGFzcyA9ICdkYW5nZXInO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0xlZ2FjeSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGVMYWJlbCA9ICdOT1QgUkVBRFknO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZVR5cGVDbGFzcyA9ICdhY2NlbnQnO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc05vdFJlYWR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIGNvbnN0cnVjdCBjbXAgbW9kdWxlIGltcG9ydCBzdHJpbmdcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgICAgICAgICB0aGlzLmNtcE1vZHVsZUltcG9ydCA9IGBpbXBvcnQgeyAke3RoaXMuY21wLm1ldGFkYXRhPy5tb2R1bGVOYW1lfSB9IGZyb20gJ0BldWkvJHt0aGlzLmNtcC5tZXRhZGF0YT8uc3ViRW50cnlOYW1lfSc7YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ1dhcm5pbmcsIGVycm9ycyBkZXRlY3RlZCB3aGlsZSBnZXR0aW5nIHBhZ2Ugc3RhdGUnKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZnJhZ21lbnRJZCA9IHRoaXMucm91dGUuc25hcHNob3QuZnJhZ21lbnQ7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICAvLyBnZXR0aW5nIEFQSSB1cmxcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuYXBpVXJsID0gdGhpcy5fZ2V0QXBpVXJsKCk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRmV0Y2hpbmcgQVBJIHVybCBmcm9tIDogJHt0aGlzLmFwaVVybH1gKTtcblxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5hcGlVcmxTYWZlID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHRoaXMuYXBpVXJsKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGFiID0gdGhpcy5UQUJTX0RFRi5maWx0ZXIoKHQpID0+IHQuaWQgPT09IHRoaXMuZnJhZ21lbnRJZClbMF07XG4gICAgICAgICAgICBsZXQgdGFiSW5kZXg7XG5cbiAgICAgICAgICAgIGlmICghdGFiKSB7XG4gICAgICAgICAgICAgICAgdGFiSW5kZXggPSAyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0YWJJbmRleCA9IHRhYi5pbmRleDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fc2Nyb2xsVG9GcmFnbWVudCh0aGlzLmZyYWdtZW50SWQsIHRhYkluZGV4LCB0cnVlLCB0cnVlKTtcblxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5hc1NlcnZpY2UuaXNCbG9ja0RvY3VtZW50QWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbk5hdkNsaWNrKGZyYWdtZW50SWQ6IHN0cmluZywgdGFiSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmZyYWdtZW50SWQgPSBmcmFnbWVudElkO1xuICAgICAgICB0aGlzLmlzTmF2Q2xpY2tlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuX3Njcm9sbFRvRnJhZ21lbnQodGhpcy5mcmFnbWVudElkLCB0YWJJbmRleCwgZmFsc2UsIHRydWUpO1xuICAgIH1cblxuICAgIG9uVGFiU2VsZWN0ZWQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNMb2FkaW5nICYmICF0aGlzLmlzTmF2Q2xpY2tlZCkge1xuICAgICAgICAgICAgY29uc3QgdGFiSWQgPSB0aGlzLlRBQlNfREVGLmZpbHRlcigodCkgPT4gdC5pbmRleCA9PT0gZXZlbnQuaW5kZXgpWzBdLmlkO1xuICAgICAgICAgICAgdGhpcy5fc2Nyb2xsVG9GcmFnbWVudCh0YWJJZCwgZXZlbnQuaW5kZXgsIGZhbHNlLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc05hdkNsaWNrZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zY3JvbGxUb0ZyYWdtZW50KGZyYWdtZW50SWQ6IHN0cmluZywgdGFiSW5kZXg6IG51bWJlciwgaW5pdDogYm9vbGVhbiwgY2hhbmdlVGFiOiBib29sZWFuKSB7XG4gICAgICAgIGlmIChpbml0KSB7XG4gICAgICAgICAgICBpZiAodGhpcy50YWJzQ29udGVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMudGFic0NvbnRlbnQuY2hhbmdlVGFiKHRhYkluZGV4KTtcblxuICAgICAgICAgICAgICAgIGlmIChmcmFnbWVudElkKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmdtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZnJhZ21lbnRJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB5T2Zmc2V0ID0gLTgwO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZnbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHkgPSBmZ20uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICsgd2luZG93LnBhZ2VZT2Zmc2V0ICsgeU9mZnNldDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IHkgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjaGFuZ2VUYWIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5vblNhbWVVcmxOYXZpZ2F0aW9uID0gJ3JlbG9hZCc7XG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuJ10sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSwgZnJhZ21lbnQ6IGZyYWdtZW50SWQgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRhYnNDb250ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYnNDb250ZW50LmNoYW5nZVRhYih0YWJJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm91dGVSb290ID0gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCcjJylbMF07XG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhdGlvbi5nbyhgJHtyb3V0ZVJvb3R9IyR7ZnJhZ21lbnRJZH1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2dldENvbXBvbmVudFN0YXR1cyhpZCkge1xuICAgICAgICBjb25zdCBmbGF0dGVuID0gKGxpbmtzKSA9PlxuICAgICAgICAgICAgbGlua3NcbiAgICAgICAgICAgICAgICA/IGxpbmtzLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0LCBpdGVtKSA9PiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGl0ZW0ubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHRlcm5hdGVJZDogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBpdGVtLm1hcmtlclR5cGVDbGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtcFJlcGxhY2VtZW50OiBpdGVtLmNtcFJlcGxhY2VtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21wUmVwbGFjZW1lbnRVcmw6IGl0ZW0uY21wUmVwbGFjZW1lbnRVcmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXBSZXBsYWNlbWVudE5vdGU6IGl0ZW0uY21wUmVwbGFjZW1lbnROb3RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0ZXJuYXRlQXBpQ2F0ZWdvcnk6IGl0ZW0uYWx0ZXJuYXRlQXBpQ2F0ZWdvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YTogaXRlbS5tZXRhZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZmxhdHRlbihpdGVtLmNoaWxkcmVuKSxcbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBbXTtcblxuICAgICAgICBjb25zdCBmbGF0TGlua3MgPSBmbGF0dGVuKHRoaXMuYXNTZXJ2aWNlLnN0YXRlLnNpZGViYXJMaW5rcyk7XG4gICAgICAgIGNvbnN0IGlkQmFzZWRDbXAgPSBmbGF0TGlua3MuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmlkID09PSBpZClbMF07XG4gICAgICAgIGlmIChpZEJhc2VkQ21wKSB7XG4gICAgICAgICAgICByZXR1cm4gaWRCYXNlZENtcDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGFsdGVybmF0ZUlkQmFzZWRDbXAgPSBmbGF0TGlua3MuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmFsdGVybmF0ZUlkID09PSBpZClbMF07XG4gICAgICAgICAgICByZXR1cm4gYWx0ZXJuYXRlSWRCYXNlZENtcDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2dldEFwaVVybCgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cubG9jYXRpb247XG4gICAgICAgIGNvbnN0IHByb3RvY29sID0gdXJsLnByb3RvY29sO1xuICAgICAgICBjb25zdCBob3N0ID0gdXJsLmhvc3Q7XG4gICAgICAgIGNvbnN0IHBhdGhOYW1lID0gdXJsLnBhdGhuYW1lO1xuICAgICAgICBjb25zdCBwYXRoTmFtZUFycmF5ID0gcGF0aE5hbWUuc3BsaXQoJy8nKTtcbiAgICAgICAgY29uc3QgbmFtZSA9IHBhdGhOYW1lQXJyYXlbcGF0aE5hbWVBcnJheS5sZW5ndGggLSAxXTtcbiAgICAgICAgbGV0IGNhdGVnb3J5ID0gcGF0aE5hbWVBcnJheVtwYXRoTmFtZUFycmF5Lmxlbmd0aCAtIDJdO1xuXG4gICAgICAgIGxldCBwcm90b2NvbEdlbiA9IHByb3RvY29sO1xuICAgICAgICBsZXQgaG9zdEdlbiA9IGhvc3Q7XG5cbiAgICAgICAgaWYgKGhvc3QuaW5kZXhPZignbG9jYWxob3N0JykgPiAtMSkge1xuICAgICAgICAgICAgcHJvdG9jb2xHZW4gPSAnaHR0cHM6JztcbiAgICAgICAgICAgIGhvc3RHZW4gPSAnZXVpZGV2LmVjZGV2b3BzLmV1JztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFwcFZlcnNpb25OdW1iZXIgPSB0aGlzLmFwcE1ldGFkYXRhLmFwcFZlcnNpb24uc3BsaXQoJy4nKVswXTtcbiAgICAgICAgY29uc3QgZG9jVHlwZVJvb3QgPSBgZXVpLWRvY3MtZXVpLSR7YXBwVmVyc2lvbk51bWJlcn0ueGA7XG5cbiAgICAgICAgaWYgKGNhdGVnb3J5ID09PSAnbGF5b3V0LWNvbXBvbmVudHMnIHx8IGNhdGVnb3J5ID09PSAnZXh0ZXJuYWxzJykge1xuICAgICAgICAgICAgY2F0ZWdvcnkgPSAnY29tcG9uZW50cyc7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjbXAgPSB0aGlzLl9nZXRDb21wb25lbnRTdGF0dXMobmFtZSk7XG5cbiAgICAgICAgaWYgKGNtcC5hbHRlcm5hdGVBcGlDYXRlZ29yeSkge1xuICAgICAgICAgICAgY2F0ZWdvcnkgPSBjbXAuYWx0ZXJuYXRlQXBpQ2F0ZWdvcnk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmb3JtYXR0ZWROYW1lID0gdGhpcy5fY2FtZWxDYXNlU3RyaW5nKG5hbWUgKyAnLScgKyBjYXRlZ29yeS5zbGljZSgwLCAtMSksICctJywgdHJ1ZSk7XG4gICAgICAgIGNvbnN0IGRvY1BhdGggPSBgJHtwcm90b2NvbEdlbn0vLyR7aG9zdEdlbn0vJHtkb2NUeXBlUm9vdH0vJHtjYXRlZ29yeX0vJHtmb3JtYXR0ZWROYW1lfS5odG1sYDtcblxuICAgICAgICBjb25zb2xlLmxvZyhgZmV0Y2hpbmcgQVBJIGZyb206ICR7ZG9jUGF0aH1gKTtcblxuICAgICAgICByZXR1cm4gZG9jUGF0aDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jYW1lbENhc2VTdHJpbmcoc3RyaW5nLCBzZXBhcmF0b3IsIGZpcnN0KSB7XG4gICAgICAgIGNvbnN0IHN0cmluZ0FycmF5ID0gc3RyaW5nLnNwbGl0KHNlcGFyYXRvcik7XG4gICAgICAgIGxldCByZXN1bHQgPSAnJztcbiAgICAgICAgbGV0IHM7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHJpbmdBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgcyA9IHN0cmluZ0FycmF5W2ldO1xuICAgICAgICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoZmlyc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHMuc3Vic3RyaW5nKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyBzLnN1YnN0cigxKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdCArPSBzLnN1YnN0cmluZygwLCAxKS50b1VwcGVyQ2FzZSgpICsgcy5zdWJzdHIoMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbn1cblxuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvciAqL1xuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnZG9jUGFnZU92ZXJ2aWV3JyB9KVxuZXhwb3J0IGNsYXNzIERvY1BhZ2VPdmVydmlld0NvbnRlbnREaXJlY3RpdmUge31cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ2RvY1BhZ2VJbnRlcmFjdGl2ZScgfSlcbmV4cG9ydCBjbGFzcyBEb2NQYWdlSW50ZXJhY3RpdmVDb250ZW50RGlyZWN0aXZlIHtcbiAgICBASW5wdXQoKSB0aXRsZSA9ICdBRFZBTkNFRCBFWEFNUExFUyc7XG4gICAgQElucHV0KCkgc3ViVGl0bGUgPSAnQWR2YW5jZWQgdXNlIGNhc2VzJztcbn1cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ2RvY1BhZ2VTYW1wbGVzJyB9KVxuZXhwb3J0IGNsYXNzIERvY1BhZ2VTYW1wbGVzQ29udGVudERpcmVjdGl2ZSB7fVxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnZG9jUGFnZVNlY3Rpb25zJyB9KVxuZXhwb3J0IGNsYXNzIERvY1BhZ2VTZWN0aW9uc0NvbnRlbnREaXJlY3RpdmUge31cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ2RvY1BhZ2VBY2Nlc3NpYmlsaXR5JyB9KVxuZXhwb3J0IGNsYXNzIERvY1BhZ2VBY2Nlc3NpYmlsaXR5Q29udGVudERpcmVjdGl2ZSB7fVxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnZG9jUGFnZUFwaScgfSlcbmV4cG9ydCBjbGFzcyBEb2NQYWdlQXBpQ29udGVudERpcmVjdGl2ZSB7fVxuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdkb2NQYWdlVGhlbWluZycgfSlcbmV4cG9ydCBjbGFzcyBEb2NQYWdlVGhlbWluZ0NvbnRlbnREaXJlY3RpdmUge31cbi8qIGVzbGludC1lbmFibGUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvciAqL1xuIiwiPGRpdiBjbGFzcz1cImRvYy1wYWdlLW5hdmlnYXRpb24td3JhcHBlclwiIFtjbGFzcy5ldWktdS1oaWRkZW5dPVwiaXNMb2FkaW5nXCI+XG4gICAgPGRpdiBjbGFzcz1cImRvYy1wYWdlLW1haW4tY29sdW1uXCI+XG4gICAgICAgIDxldWktcGFnZT5cbiAgICAgICAgICAgIDxldWktcGFnZS1oZWFkZXIgbGFiZWw9XCJ7eyBsYWJlbCB9fVwiIHN1YkxhYmVsPVwie3sgc3ViTGFiZWwgfX1cIj5cbiAgICAgICAgICAgICAgICA8ZXVpLXBhZ2UtaGVhZGVyLWFjdGlvbi1pdGVtcz5cbiAgICAgICAgICAgICAgICAgICAgPGV1aS1zaG93Y2FzZS1kb2MtcGFnZS1jb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvZGVGb2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZUZvbGRlcj1cInt7IGNvZGVGb2xkZXIgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd2Nhc2U9XCJ7eyBzaG93Y2FzZSB9fVwiPjwvZXVpLXNob3djYXNlLWRvYy1wYWdlLWNvZGU+XG4gICAgICAgICAgICAgICAgICAgIDxldWktY2hpcFxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdGF0ZUxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlTdWNjZXNzXT1cInN0YXRlTGFiZWwgPT09ICdBQ1RJVkUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlXYXJuaW5nXT1cInN0YXRlTGFiZWwgPT09ICdERVBSRUNBVEVEJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXVpRGFuZ2VyXT1cImlzTGVnYWN5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBldWlMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHN0YXRlTGFiZWwgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9ldWktY2hpcD5cbiAgICAgICAgICAgICAgICA8L2V1aS1wYWdlLWhlYWRlci1hY3Rpb24taXRlbXM+XG4gICAgICAgICAgICA8L2V1aS1wYWdlLWhlYWRlcj5cblxuICAgICAgICAgICAgPGV1aS1wYWdlLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPGV1aS1hbGVydCAqbmdJZj1cInN0YXRlTGFiZWwgPT09ICdMRUdBQ1knIHx8IGlzTGVnYWN5XCIgZXVpRGFuZ2VyPlxuICAgICAgICAgICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY29tcG9uZW50IHdpbGwgYmVcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmcgY2xhc3M9XCJldWktdS1jb2xvci1kYW5nZXJcIj5yZW1vdmVkPC9zdHJvbmc+IGluIHRoZSBuZXh0IHZlcnNpb24gb2YgZVVJICEhXG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNtcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNtcC5jbXBSZXBsYWNlbWVudCAhPT0gJ05PTkUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSXQgaGFzIGJlZW4gcmVwbGFjZWQgYnkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmcgY2xhc3M9XCJldWktdS1jb2xvci1zdWNjZXNzLWRhcmtlc3RcIj57eyBjbXAuY21wUmVwbGFjZW1lbnQgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgKm5nSWY9XCJjbXAuY21wUmVwbGFjZW1lbnRVcmxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPjxicj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIG5ldyBjb21wb25lbnQgaGVyZSA6IDxhIFtyb3V0ZXJMaW5rXT1cImNtcC5jbXBSZXBsYWNlbWVudFVybFwiPnt7Y21wLmNtcFJlcGxhY2VtZW50VXJsfX08L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY21wLmNtcFJlcGxhY2VtZW50ID09PSAnTk9ORSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGNvbXBvbmVudCB3aWxsIGJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cImV1aS11LWNvbG9yLWRhbmdlclwiPmRpc2NvbnRpbnVlZCBpbiBmdXR1cmUgdmVyc2lvbiBvZiBlVUk8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNtcC5jbXBSZXBsYWNlbWVudE5vdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwiZXVpLXUtY29sb3Itd2FybmluZ1wiPnt7IGNtcC5jbXBSZXBsYWNlbWVudE5vdGUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2V1aS1hbGVydD5cblxuICAgICAgICAgICAgICAgIDxldWktYWxlcnQgKm5nSWY9XCJzdGF0ZUxhYmVsID09PSAnREVQUkVDQVRFRCcgfHwgaXNEZXByZWNhdGVkXCIgZXVpV2FybmluZz5cbiAgICAgICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGNvbXBvbmVudCBoYXMgYmVlblxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cImV1aS11LWNvbG9yLWRhbmdlclwiPmRlcHJlY2F0ZWQ8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY21wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGNvbXBvbmVudCBoYXMgbm8gcmVwbGFjZW1lbnQgaW4gY3VycmVudCB2ZXJzaW9uIEFORCB3b24ndCBoYXZlIHJlcGxhY2VtZW50IGluIG5leHQgdmVyc2lvbiBvZiBlVUksIGl0IGlzIGtlcHRcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cImV1aS11LWNvbG9yLXdhcm5pbmdcIj5oaXN0b3JpY2FsIHVzYWdlIG9ubHk8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9ldWktYWxlcnQ+XG5cbiAgICAgICAgICAgICAgICA8ZXVpLWFsZXJ0ICpuZ0lmPVwic3RhdGVMYWJlbCA9PT0gJ05PVF9SRUFEWScgfHwgaXNOb3RSZWFkeVwiIGV1aUluZm8+XG4gICAgICAgICAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBjb21wb25lbnQgaXNcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmcgY2xhc3M9XCJldWktdS1jb2xvci1pbmZvXCI+Tk9UIFJFQURZPC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNtcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBjb21wb25lbnQgaXMgdW5kZXIgZGV2ZWxvcG1lbnQgLyBzb21lIGZlYXR1cmVzIG1pZ2h0IGJlIG1pc3NpbmcsIGl0J2xsIGJlIGF2YWlsYWJsZSBpbiBhIGZ1dHVyZSByZWxlYXNlIG9uY2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlZC5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9ldWktYWxlcnQ+XG5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKHN0YXRlTGFiZWwgfHwgaXNOb3RSZWFkeSB8fCBpc0RlcHJlY2F0ZWQpICYmIHN0YXRlTGFiZWwgIT09ICdBQ1RJVkUnXCIgY2xhc3M9XCJtYi01XCI+PC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZXVpLXRhYnMgI3RhYnNDb250ZW50ICpuZ0lmPVwicGFnZVNlY3Rpb25zQ29udGVudC5sZW5ndGggPT09IDBcIiAodGFiU2VsZWN0ZWQpPVwib25UYWJTZWxlY3RlZCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxldWktdGFiICpuZ0lmPVwiaGFzQXBpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZXVpVGFiTGFiZWw+IEFQSSA8L2V1aVRhYkxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGV1aVRhYkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFwaVVybFNhZmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwie3sgYXBpVXJsIH19XCIgdGFyZ2V0PVwiX2JsYW5rXCIgY2xhc3M9XCJtcy1hdXRvIHBiLTIgZXVpLXUtdGV4dC1saW5rLWV4dGVybmFsXCI+T3BlbiBBUEkgcGFnZTwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb2MtcGFnZS1hcGktaWZyYW1lLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpZnJhbWUgaWQ9XCJpZnJhbWVfYXBpXCIgW3dpZHRoXT1cIicxMDAlJ1wiIGhlaWdodD1cIjcwMHB4XCIgZnJhbWVCb3JkZXI9XCIwXCIgW3NyY109XCJhcGlVcmxTYWZlXCI+PC9pZnJhbWU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9ldWlUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8L2V1aS10YWI+XG5cbiAgICAgICAgICAgICAgICAgICAgPGV1aS10YWIgKm5nSWY9XCJoYXNBMTF5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZXVpVGFiTGFiZWw+IEExMVkgPC9ldWlUYWJMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxldWlUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBpZD1cImFjY2Vzc2liaWxpdHlcIiBjbGFzcz1cImV1aS11LWZvbnQtYm9sZCBldWktdS1jb2xvci1pbmZvIG10LTMgbWItMlwiPkFjY2Vzc2liaWxpdHk8L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImRvY1BhZ2VBY2Nlc3NpYmlsaXR5XCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9ldWlUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8L2V1aS10YWI+XG5cbiAgICAgICAgICAgICAgICAgICAgPGV1aS10YWI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZXVpVGFiTGFiZWw+IE9QVElPTlMgJiBTQU1QTEVTIDwvZXVpVGFiTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZXVpVGFiQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY21wICYmIGNtcC5tZXRhZGF0YVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJldWktdS1mb250LWJvbGQgZXVpLXUtY29sb3ItaW5mbyBtdC0zIG1iLTNcIj5Nb2R1bGUgaW1wb3J0PC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByZT48Y29kZSBjbGFzcz1cImxhbmd1YWdlLWphdmFzY3JpcHQgZXVpLXUtYmctY29sb3ItZ3JleS01XCIgZXVpQ29kZT57eyBjbXBNb2R1bGVJbXBvcnQgfX08L2NvZGU+PC9wcmU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGlkPVwib3ZlcnZpZXdcIiBjbGFzcz1cImV1aS11LWZvbnQtYm9sZCBldWktdS1jb2xvci1pbmZvIG10LTMgbWItM1wiPk92ZXJ2aWV3ICYgc2V0dXA8L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwYWdlT3ZlcnZpZXdDb250ZW50Lmxlbmd0aCA+IDA7IGVsc2Ugbm9PdmVydmlld1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJkb2NQYWdlT3ZlcnZpZXdcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub092ZXJ2aWV3PiBDb21pbmcgc29vbi4uLiA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGlkPVwic2FtcGxlc1wiIGNsYXNzPVwiZXVpLXUtZm9udC1ib2xkIGV1aS11LWNvbG9yLWluZm8gbXQtOCBtYi0yXCI+T3B0aW9ucyAmIHNhbXBsZXM8L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImRvY1BhZ2VTYW1wbGVzXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9ldWlUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8L2V1aS10YWI+XG5cbiAgICAgICAgICAgICAgICAgICAgPGV1aS10YWIgKm5nSWY9XCJwYWdlVGhlbWluZ0NvbnRlbnQubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGV1aVRhYkxhYmVsPiBUSEVNSU5HIDwvZXVpVGFiTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZXVpVGFiQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgaWQ9XCJ0aGVtaW5nXCIgY2xhc3M9XCJldWktdS1mb250LWJvbGQgZXVpLXUtY29sb3ItaW5mbyBtdC0zIG1iLTJcIj5UaGVtaW5nPC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJkb2NQYWdlVGhlbWluZ1wiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZXVpVGFiQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPC9ldWktdGFiPlxuXG4gICAgICAgICAgICAgICAgICAgIDxldWktdGFiICpuZ0lmPVwicGFnZUludGVyYWN0aXZlQ29udGVudC5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZXVpVGFiTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcGFnZUludGVyYWN0aXZlQ29udGVudC5maXJzdC50aXRsZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9ldWlUYWJMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxldWlUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBpZD1cImludGVyYWN0aXZlXCIgY2xhc3M9XCJldWktdS1mb250LWJvbGQgZXVpLXUtY29sb3ItaW5mbyBtdC0zIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcGFnZUludGVyYWN0aXZlQ29udGVudC5maXJzdC5zdWJUaXRsZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZG9jUGFnZUludGVyYWN0aXZlXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9ldWlUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8L2V1aS10YWI+XG4gICAgICAgICAgICAgICAgPC9ldWktdGFicz5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYWdlU2VjdGlvbnNDb250ZW50Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGgzIGlkPVwiZGVtb1wiICpuZ0lmPVwic2VjdGlvbnMubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJldWktdS1mb250LWJvbGQgZXVpLXUtY29sb3ItaW5mbyBtdC0zIG1iLTJcIj5EZW1vPC9oMz5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZG9jUGFnZVNlY3Rpb25zXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9ldWktcGFnZS1jb250ZW50PlxuICAgICAgICA8L2V1aS1wYWdlPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cImlzTmF2aWdhdGlvblZpc2libGVcIiBjbGFzcz1cImRvYy1wYWdlLW5hdmlnYXRpb24tY29sdW1uIGV1aS11LWhpZGRlbi1kZXNrdG9wLWRvd25cIj5cbiAgICAgICAgPGRpdiBpZD1cImRvYy1wYWdlLW5hdlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRvYy1wYWdlLW5hdmlnYXRpb24tdGl0bGVcIj5JbiB0aGlzIHBhZ2U8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb2MtcGFnZS1uYXZpZ2F0aW9uLWNvbnRlbnRcIiB0YWJpbmRleD1cIjBcIj5cbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJkb2MtcGFnZS1uYXZpZ2F0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYWdlU2VjdGlvbnNDb250ZW50Lmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBBTFdBWVMgUFJFU0VOVCBpbiBlYWNoIHBhZ2UtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGxpIGNsYXNzPVwiZG9jLXBhZ2UtbmF2aWdhdGlvbi1pdGVtXCIgW2NsYXNzLmRvYy1wYWdlLW5hdmlnYXRpb24taXRlbS0tc2VsZWN0ZWRdPVwiZnJhZ21lbnRJZCA9PT0gJ292ZXJ2aWV3J1wiIChjbGljayk9XCJvbk5hdkNsaWNrKCdvdmVydmlldycsIDApXCI+PHNwYW4+T1ZFUlZJRVc8L3NwYW4+PC9saT4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImhhc0FwaVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkb2MtcGFnZS1uYXZpZ2F0aW9uLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kb2MtcGFnZS1uYXZpZ2F0aW9uLWl0ZW0tLXNlbGVjdGVkXT1cImZyYWdtZW50SWQgPT09ICdhcGknXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25OYXZDbGljaygnYXBpJywgMClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5BUEk8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJoYXNBMTF5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRvYy1wYWdlLW5hdmlnYXRpb24taXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRvYy1wYWdlLW5hdmlnYXRpb24taXRlbS0tc2VsZWN0ZWRdPVwiZnJhZ21lbnRJZCA9PT0gJ2ExMXknXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25OYXZDbGljaygnYTExeScsIDEpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+QTExWTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRvYy1wYWdlLW5hdmlnYXRpb24taXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRvYy1wYWdlLW5hdmlnYXRpb24taXRlbS0tc2VsZWN0ZWRdPVwiZnJhZ21lbnRJZCA9PT0gJ3NhbXBsZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25OYXZDbGljaygnc2FtcGxlcycsIDIpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+T1BUSU9OUyAmIFNBTVBMRVM8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiZG9jLXBhZ2UtbmF2aWdhdGlvbi1pdGVtIGRvYy1wYWdlLW5hdmlnYXRpb24tc3ViXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsICpuZ0Zvcj1cImxldCBzYW1wbGUgb2Ygc2FtcGxlc1wiIGNsYXNzPVwiZG9jLXBhZ2UtbmF2aWdhdGlvbi1saXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkb2MtcGFnZS1uYXZpZ2F0aW9uLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRvYy1wYWdlLW5hdmlnYXRpb24taXRlbS0tc2VsZWN0ZWRdPVwiZnJhZ21lbnRJZCA9PT0gc2FtcGxlLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbk5hdkNsaWNrKHNhbXBsZS5pZCwgMilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHNhbXBsZS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBPUFRJT05BTCBUQUJTLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGFnZVRoZW1pbmdDb250ZW50Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwYWdlVGhlbWluZ0NvbnRlbnQubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZG9jLXBhZ2UtbmF2aWdhdGlvbi1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRvYy1wYWdlLW5hdmlnYXRpb24taXRlbS0tc2VsZWN0ZWRdPVwiZnJhZ21lbnRJZCA9PT0gJ3RoZW1pbmcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTmF2Q2xpY2soJ3RoZW1pbmcnLCAzKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5USEVNSU5HPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicGFnZUludGVyYWN0aXZlQ29udGVudC5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkb2MtcGFnZS1uYXZpZ2F0aW9uLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZG9jLXBhZ2UtbmF2aWdhdGlvbi1pdGVtLS1zZWxlY3RlZF09XCJmcmFnbWVudElkID09PSAnYWR2YW5jZWQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTmF2Q2xpY2soJ2FkdmFuY2VkJywgNClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgcGFnZUludGVyYWN0aXZlQ29udGVudC5maXJzdC50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGFnZVRoZW1pbmdDb250ZW50Lmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBhZ2VJbnRlcmFjdGl2ZUNvbnRlbnQubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZG9jLXBhZ2UtbmF2aWdhdGlvbi1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRvYy1wYWdlLW5hdmlnYXRpb24taXRlbS0tc2VsZWN0ZWRdPVwiZnJhZ21lbnRJZCA9PT0gJ2FkdmFuY2VkJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbk5hdkNsaWNrKCdhZHZhbmNlZCcsIDMpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHBhZ2VJbnRlcmFjdGl2ZUNvbnRlbnQuZmlyc3QudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGFnZVNlY3Rpb25zQ29udGVudC5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRvYy1wYWdlLW5hdmlnYXRpb24taXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRvYy1wYWdlLW5hdmlnYXRpb24taXRlbS0tc2VsZWN0ZWRdPVwiZnJhZ21lbnRJZCA9PT0gJ3NlY3Rpb25zJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTmF2Q2xpY2soJ3NlY3Rpb25zJywgbnVsbClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5TZWN0aW9uczwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNlY3Rpb25zLmxlbmd0aCA9PT0gMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkb2MtcGFnZS1uYXZpZ2F0aW9uLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kb2MtcGFnZS1uYXZpZ2F0aW9uLWl0ZW0tLXNlbGVjdGVkXT1cImZyYWdtZW50SWQgPT09ICdkZW1vJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTmF2Q2xpY2soJ2RlbW8nLCBudWxsKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkRlbW88L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwic2VjdGlvbnMubGVuZ3RoID4gMFwiIGNsYXNzPVwiZG9jLXBhZ2UtbmF2aWdhdGlvbi1pdGVtIGRvYy1wYWdlLW5hdmlnYXRpb24tc3ViXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIHNlY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkb2MtcGFnZS1uYXZpZ2F0aW9uLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRvYy1wYWdlLW5hdmlnYXRpb24taXRlbS0tc2VsZWN0ZWRdPVwiZnJhZ21lbnRJZCA9PT0gc2VjdGlvbi5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25OYXZDbGljayhzZWN0aW9uLmlkLCBudWxsKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgc2VjdGlvbi5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
352
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jLXBhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2RvYy1wYWdlL2RvYy1wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kb2MtcGFnZS9kb2MtcGFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULEtBQUssRUFDTCxTQUFTLEVBRVQsZUFBZSxFQUNmLFVBQVUsRUFHVixpQkFBaUIsRUFDakIsU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7Ozs7Ozs7QUFVM0UsTUFBTSxPQUFPLGdCQUFnQjtJQStEekIsWUFDWSxNQUFjLEVBQ2QsS0FBcUIsRUFDckIsU0FBNEIsRUFDN0IsU0FBdUIsRUFDdEIsUUFBa0I7UUFKbEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBQzdCLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQWhFckIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDaEIsd0JBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQzNCLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFDZCxZQUFPLEdBQUcsSUFBSSxDQUFDO1FBYXhCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsaUJBQVksR0FBRyxJQUFJLENBQUM7UUE4QlosYUFBUSxHQUFHO1lBQ2YsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUU7WUFDdkIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUU7WUFDeEIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUU7WUFDM0IsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUU7WUFDM0IsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUU7U0FDL0IsQ0FBQztJQVFDLENBQUM7SUFFSixRQUFRO1FBQ0osVUFBVSxDQUFDLEdBQVMsRUFBRTtZQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO1FBRXBELElBQUksSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1NBQ3hCO1FBRUQsSUFBSTtZQUNBLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUU3QyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ1YsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRTtvQkFDckIsS0FBSyxTQUFTO3dCQUNWLElBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDO3dCQUMzQixJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQzt3QkFDaEMsTUFBTTtvQkFFVixLQUFLLFNBQVM7d0JBQ1YsSUFBSSxDQUFDLFVBQVUsR0FBRyxZQUFZLENBQUM7d0JBQy9CLElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDO3dCQUNoQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQzt3QkFDekIsTUFBTTtvQkFFVixLQUFLLFFBQVE7d0JBQ1QsSUFBSSxDQUFDLFVBQVUsR0FBRywwQ0FBMEMsQ0FBQzt3QkFDN0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUM7d0JBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO3dCQUNyQixNQUFNO29CQUVWLEtBQUssTUFBTTt3QkFDUCxJQUFJLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQzt3QkFDOUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUM7d0JBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO3dCQUN2QixNQUFNO2lCQUNiO2dCQUVELHFDQUFxQztnQkFDckMsMkJBQTJCO2dCQUMzQixJQUFJLENBQUMsZUFBZSxHQUFHLFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsVUFBVSxpQkFBaUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsWUFBWSxJQUFJLENBQUM7YUFDeEg7U0FDSjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO1lBQ2pFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbEI7UUFDRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztJQUNuRCxDQUFDO0lBRUQsZUFBZTtRQUNYLGtCQUFrQjtRQUNsQixJQUFJO1lBQ0EsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEMsT0FBTyxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFFdEQsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDWixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pGLENBQUMsQ0FBQyxDQUFDO1NBQ047UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNSLGtCQUFrQjtTQUNyQjtRQUVELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckUsSUFBSSxRQUFRLENBQUM7WUFFYixJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNOLFFBQVEsR0FBRyxDQUFDLENBQUM7YUFDaEI7aUJBQU07Z0JBQ0gsUUFBUSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7YUFDeEI7WUFFRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRTlELFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQzNCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsVUFBVSxDQUFDLFVBQWtCLEVBQUUsUUFBZ0I7UUFDM0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQVU7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3ZDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDekUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztTQUM1RDtRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxVQUFrQixFQUFFLFFBQWdCLEVBQUUsSUFBYSxFQUFFLFNBQWtCO1FBQzdGLElBQUksSUFBSSxFQUFFO1lBQ04sSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFFckMsSUFBSSxVQUFVLEVBQUU7b0JBQ1osVUFBVSxDQUFDLEdBQUcsRUFBRTt3QkFDWixNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO3dCQUNoRCxNQUFNLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQzt3QkFDcEIsSUFBSSxHQUFHLEVBQUU7NEJBQ0wsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLHFCQUFxQixFQUFFLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDOzRCQUN6RSxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7eUJBQy9CO29CQUNMLENBQUMsQ0FBQyxDQUFDO2lCQUNOO2FBQ0o7U0FDSjthQUFNO1lBQ0gsSUFBSSxTQUFTLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsR0FBRyxRQUFRLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUNwRixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7d0JBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO3FCQUN4QztnQkFDTCxDQUFDLENBQUMsQ0FBQzthQUNOO2lCQUFNO2dCQUNILE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDaEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLElBQUksVUFBVSxFQUFFLENBQUMsQ0FBQzthQUNsRDtTQUNKO0lBQ0wsQ0FBQztJQUVPLG1CQUFtQixDQUFDLEVBQUU7UUFDMUIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUN0QixLQUFLO1lBQ0QsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQ1IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztnQkFDZCxHQUFHLE1BQU07Z0JBQ1Q7b0JBQ0ksRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLO29CQUNkLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSTtvQkFDdEIsTUFBTSxFQUFFLElBQUksQ0FBQyxlQUFlO29CQUM1QixjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7b0JBQ25DLGlCQUFpQixFQUFFLElBQUksQ0FBQyxpQkFBaUI7b0JBQ3pDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7b0JBQzNDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxvQkFBb0I7b0JBQy9DLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtpQkFDMUI7Z0JBQ0QsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQzthQUM1QixFQUNELEVBQUUsQ0FDTDtZQUNILENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFYixNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDN0QsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqRSxJQUFJLFVBQVUsRUFBRTtZQUNaLE9BQU8sVUFBVSxDQUFDO1NBQ3JCO2FBQU07WUFDSCxNQUFNLG1CQUFtQixHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkYsT0FBTyxtQkFBbUIsQ0FBQztTQUM5QjtJQUNMLENBQUM7SUFFTyxVQUFVO1FBQ2QsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUM1QixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDO1FBQzlCLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDdEIsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUM5QixNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3JELElBQUksUUFBUSxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRXZELElBQUksV0FBVyxHQUFHLFFBQVEsQ0FBQztRQUMzQixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFFbkIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQ2hDLFdBQVcsR0FBRyxRQUFRLENBQUM7WUFDdkIsT0FBTyxHQUFHLG9CQUFvQixDQUFDO1NBQ2xDO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkUsTUFBTSxXQUFXLEdBQUcsZ0JBQWdCLGdCQUFnQixJQUFJLENBQUM7UUFFekQsSUFBSSxRQUFRLEtBQUssbUJBQW1CLElBQUksUUFBUSxLQUFLLFdBQVcsRUFBRTtZQUM5RCxRQUFRLEdBQUcsWUFBWSxDQUFDO1NBQzNCO1FBRUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTNDLElBQUksR0FBRyxDQUFDLG9CQUFvQixFQUFFO1lBQzFCLFFBQVEsR0FBRyxHQUFHLENBQUMsb0JBQW9CLENBQUM7U0FDdkM7UUFFRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzRixNQUFNLE9BQU8sR0FBRyxHQUFHLFdBQVcsS0FBSyxPQUFPLElBQUksV0FBVyxJQUFJLFFBQVEsSUFBSSxhQUFhLE9BQU8sQ0FBQztRQUU5RixPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBRTdDLE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLEtBQUs7UUFDN0MsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1QyxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLENBQUM7UUFFTixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN6QyxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDVCxJQUFJLEtBQUssRUFBRTtvQkFDUCxNQUFNLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDM0Q7cUJBQU07b0JBQ0gsTUFBTSxJQUFJLENBQUMsQ0FBQztpQkFDZjthQUNKO2lCQUFNO2dCQUNILE1BQU0sSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzNEO1NBQ0o7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO2lJQWhTUSxnQkFBZ0I7cUhBQWhCLGdCQUFnQixpV0EyQlIsa0JBQWtCLDhEQUVsQixtQkFBbUIsNEdBR0YsK0JBQStCLDRGQUcvQiw4QkFBOEIsNkZBRzlCLCtCQUErQixnR0FHL0Isa0NBQWtDLGtHQUdsQyxvQ0FBb0Msd0ZBR3BDLDBCQUEwQiw0RkFHMUIsOEJBQThCLDZJQzVFcEUsODlhQWlQQTs7MkZEdk5hLGdCQUFnQjtrQkFONUIsU0FBUzsrQkFDSSx1QkFBdUIsaUJBR2xCLGlCQUFpQixDQUFDLElBQUk7NE1BRzVCLEVBQUU7c0JBQVYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBaUJOLE9BQU87c0JBRE4sZUFBZTt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBRzFELFFBQVE7c0JBRFAsZUFBZTt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBSTNELG1CQUFtQjtzQkFEbEIsZUFBZTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsK0JBQStCLENBQUM7Z0JBSWxFLGtCQUFrQjtzQkFEakIsZUFBZTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsOEJBQThCLENBQUM7Z0JBSWpFLG1CQUFtQjtzQkFEbEIsZUFBZTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsK0JBQStCLENBQUM7Z0JBSWxFLHNCQUFzQjtzQkFEckIsZUFBZTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsa0NBQWtDLENBQUM7Z0JBSXJFLHdCQUF3QjtzQkFEdkIsZUFBZTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsb0NBQW9DLENBQUM7Z0JBSXZFLGNBQWM7c0JBRGIsZUFBZTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsMEJBQTBCLENBQUM7Z0JBSTdELGtCQUFrQjtzQkFEakIsZUFBZTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsOEJBQThCLENBQUM7Z0JBR3ZDLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTs7QUE4TzVCLHVEQUF1RDtBQUV2RCxNQUFNLE9BQU8sK0JBQStCO2lJQUEvQiwrQkFBK0I7cUhBQS9CLCtCQUErQjs7MkZBQS9CLCtCQUErQjtrQkFEM0MsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRTs7QUFHMUMsTUFBTSxPQUFPLGtDQUFrQztJQUQvQztRQUVhLFVBQUssR0FBRyxtQkFBbUIsQ0FBQztRQUM1QixhQUFRLEdBQUcsb0JBQW9CLENBQUM7S0FDNUM7aUlBSFksa0NBQWtDO3FIQUFsQyxrQ0FBa0M7OzJGQUFsQyxrQ0FBa0M7a0JBRDlDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsb0JBQW9CLEVBQUU7OEJBRWhDLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLOztBQUdWLE1BQU0sT0FBTyw4QkFBOEI7aUlBQTlCLDhCQUE4QjtxSEFBOUIsOEJBQThCOzsyRkFBOUIsOEJBQThCO2tCQUQxQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFOztBQUd6QyxNQUFNLE9BQU8sK0JBQStCO2lJQUEvQiwrQkFBK0I7cUhBQS9CLCtCQUErQjs7MkZBQS9CLCtCQUErQjtrQkFEM0MsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRTs7QUFHMUMsTUFBTSxPQUFPLG9DQUFvQztpSUFBcEMsb0NBQW9DO3FIQUFwQyxvQ0FBb0M7OzJGQUFwQyxvQ0FBb0M7a0JBRGhELFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUU7O0FBRy9DLE1BQU0sT0FBTywwQkFBMEI7aUlBQTFCLDBCQUEwQjtxSEFBMUIsMEJBQTBCOzsyRkFBMUIsMEJBQTBCO2tCQUR0QyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRTs7QUFJckMsTUFBTSxPQUFPLDhCQUE4QjtpSUFBOUIsOEJBQThCO3FIQUE5Qiw4QkFBOEI7OzJGQUE5Qiw4QkFBOEI7a0JBRDFDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBJbnB1dCxcbiAgICBEaXJlY3RpdmUsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgZm9yd2FyZFJlZixcbiAgICBPbkluaXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTYWZlUmVzb3VyY2VVcmwsIERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgUm91dGVyLCBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBEb2NTYW1wbGVDb21wb25lbnQgfSBmcm9tICcuLi9kb2Mtc2FtcGxlL2RvYy1zYW1wbGUuY29tcG9uZW50JztcbmltcG9ydCB7IERvY1NlY3Rpb25Db21wb25lbnQgfSBmcm9tICcuLi9kb2Mtc2VjdGlvbi9kb2Mtc2VjdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXhBcHBTaGVsbFNlcnZpY2UgfSBmcm9tICdAZXVpL2NvcmUnO1xuaW1wb3J0IHsgRXVpVGFic0NvbXBvbmVudCB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9ldWktdGFicyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZXVpLXNob3djYXNlLWRvYy1wYWdlJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2RvYy1wYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kb2MtcGFnZS5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIERvY1BhZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICAgIEBJbnB1dCgpIGlkO1xuICAgIEBJbnB1dCgpIGxhYmVsO1xuICAgIEBJbnB1dCgpIHN1YkxhYmVsOiBzdHJpbmc7XG4gICAgQElucHV0KCkgaXNOb3RSZWFkeSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGlzRGVwcmVjYXRlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGlzTGVnYWN5ID0gZmFsc2U7XG4gICAgQElucHV0KCkgY29kZUZvbGRlcjogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHNob3djYXNlID0gJ3V4JztcbiAgICBASW5wdXQoKSBpc05hdmlnYXRpb25WaXNpYmxlID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBoYXNBcGkgPSB0cnVlO1xuICAgIEBJbnB1dCgpIGhhc0ExMXkgPSB0cnVlO1xuXG4gICAgc3RhdGVUeXBlQ2xhc3M7XG4gICAgc3RhdGVMYWJlbDtcbiAgICBjbXA7XG4gICAgZnJhZ21lbnRJZDtcbiAgICBjbXBNb2R1bGVJbXBvcnQ7XG4gICAgYXBwTWV0YWRhdGE7XG5cbiAgICBhcGlVcmxTYWZlOiBTYWZlUmVzb3VyY2VVcmw7XG4gICAgYXBpVXJsOiBzdHJpbmc7XG4gICAgaUZyYW1lQ29udGVudDtcblxuICAgIGlzTG9hZGluZyA9IHRydWU7XG4gICAgaXNOYXZDbGlja2VkID0gdHJ1ZTtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oRG9jU2FtcGxlQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gICAgc2FtcGxlczogUXVlcnlMaXN0PERvY1NhbXBsZUNvbXBvbmVudD47XG4gICAgQENvbnRlbnRDaGlsZHJlbihEb2NTZWN0aW9uQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gICAgc2VjdGlvbnM6IFF1ZXJ5TGlzdDxEb2NTZWN0aW9uQ29tcG9uZW50PjtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBEb2NQYWdlT3ZlcnZpZXdDb250ZW50RGlyZWN0aXZlKSlcbiAgICBwYWdlT3ZlcnZpZXdDb250ZW50OiBRdWVyeUxpc3Q8RG9jUGFnZU92ZXJ2aWV3Q29udGVudERpcmVjdGl2ZT47XG5cbiAgICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gRG9jUGFnZVNhbXBsZXNDb250ZW50RGlyZWN0aXZlKSlcbiAgICBwYWdlU2FtcGxlc0NvbnRlbnQ6IFF1ZXJ5TGlzdDxEb2NQYWdlU2FtcGxlc0NvbnRlbnREaXJlY3RpdmU+O1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IERvY1BhZ2VTZWN0aW9uc0NvbnRlbnREaXJlY3RpdmUpKVxuICAgIHBhZ2VTZWN0aW9uc0NvbnRlbnQ6IFF1ZXJ5TGlzdDxEb2NQYWdlU2VjdGlvbnNDb250ZW50RGlyZWN0aXZlPjtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBEb2NQYWdlSW50ZXJhY3RpdmVDb250ZW50RGlyZWN0aXZlKSlcbiAgICBwYWdlSW50ZXJhY3RpdmVDb250ZW50OiBRdWVyeUxpc3Q8RG9jUGFnZUludGVyYWN0aXZlQ29udGVudERpcmVjdGl2ZT47XG5cbiAgICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gRG9jUGFnZUFjY2Vzc2liaWxpdHlDb250ZW50RGlyZWN0aXZlKSlcbiAgICBwYWdlQWNjZXNzaWJpbGl0eUNvbnRlbnQ6IFF1ZXJ5TGlzdDxEb2NQYWdlQWNjZXNzaWJpbGl0eUNvbnRlbnREaXJlY3RpdmU+O1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IERvY1BhZ2VBcGlDb250ZW50RGlyZWN0aXZlKSlcbiAgICBwYWdlQXBpQ29udGVudDogUXVlcnlMaXN0PERvY1BhZ2VBcGlDb250ZW50RGlyZWN0aXZlPjtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBEb2NQYWdlVGhlbWluZ0NvbnRlbnREaXJlY3RpdmUpKVxuICAgIHBhZ2VUaGVtaW5nQ29udGVudDogUXVlcnlMaXN0PERvY1BhZ2VUaGVtaW5nQ29udGVudERpcmVjdGl2ZT47XG5cbiAgICBAVmlld0NoaWxkKCd0YWJzQ29udGVudCcpIHRhYnNDb250ZW50OiBFdWlUYWJzQ29tcG9uZW50O1xuXG4gICAgcHJpdmF0ZSBUQUJTX0RFRiA9IFtcbiAgICAgICAgeyBpbmRleDogMCwgaWQ6ICdhcGknIH0sXG4gICAgICAgIHsgaW5kZXg6IDEsIGlkOiAnYTExeScgfSxcbiAgICAgICAgeyBpbmRleDogMiwgaWQ6ICdzYW1wbGVzJyB9LFxuICAgICAgICB7IGluZGV4OiAzLCBpZDogJ3RoZW1pbmcnIH0sXG4gICAgICAgIHsgaW5kZXg6IDQsIGlkOiAnYWR2YW5jZWQnIH0sXG4gICAgXTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgcHJpdmF0ZSBhc1NlcnZpY2U6IFV4QXBwU2hlbGxTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgICAgIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdGhpcy5hc1NlcnZpY2UuaXNCbG9ja0RvY3VtZW50QWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5hcHBNZXRhZGF0YSA9IHRoaXMuYXNTZXJ2aWNlLnN0YXRlLmFwcE1ldGFkYXRhO1xuXG4gICAgICAgIGlmICh0aGlzLmlkICYmICF0aGlzLmxhYmVsKSB7XG4gICAgICAgICAgICB0aGlzLmxhYmVsID0gdGhpcy5pZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmNtcCA9IHRoaXMuX2dldENvbXBvbmVudFN0YXR1cyh0aGlzLmlkKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuY21wKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLmNtcC5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnc3VjY2Vzcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlTGFiZWwgPSAnQUNUSVZFJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGVUeXBlQ2xhc3MgPSAnc3VjY2Vzcyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICBjYXNlICd3YXJuaW5nJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGVMYWJlbCA9ICdERVBSRUNBVEVEJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGVUeXBlQ2xhc3MgPSAnd2FybmluZyc7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRGVwcmVjYXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICBjYXNlICdkYW5nZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZUxhYmVsID0gJ0xFR0FDWSAtIHdpbGwgYmUgcmVtb3ZlZCBpbiBuZXh0IHZlcnNpb24nO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZVR5cGVDbGFzcyA9ICdkYW5nZXInO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0xlZ2FjeSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGVMYWJlbCA9ICdOT1QgUkVBRFknO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZVR5cGVDbGFzcyA9ICdhY2NlbnQnO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc05vdFJlYWR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIGNvbnN0cnVjdCBjbXAgbW9kdWxlIGltcG9ydCBzdHJpbmdcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgICAgICAgICB0aGlzLmNtcE1vZHVsZUltcG9ydCA9IGBpbXBvcnQgeyAke3RoaXMuY21wLm1ldGFkYXRhPy5tb2R1bGVOYW1lfSB9IGZyb20gJ0BldWkvJHt0aGlzLmNtcC5tZXRhZGF0YT8uc3ViRW50cnlOYW1lfSc7YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ1dhcm5pbmcsIGVycm9ycyBkZXRlY3RlZCB3aGlsZSBnZXR0aW5nIHBhZ2Ugc3RhdGUnKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZnJhZ21lbnRJZCA9IHRoaXMucm91dGUuc25hcHNob3QuZnJhZ21lbnQ7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICAvLyBnZXR0aW5nIEFQSSB1cmxcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuYXBpVXJsID0gdGhpcy5fZ2V0QXBpVXJsKCk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRmV0Y2hpbmcgQVBJIHVybCBmcm9tIDogJHt0aGlzLmFwaVVybH1gKTtcblxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5hcGlVcmxTYWZlID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHRoaXMuYXBpVXJsKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGFiID0gdGhpcy5UQUJTX0RFRi5maWx0ZXIoKHQpID0+IHQuaWQgPT09IHRoaXMuZnJhZ21lbnRJZClbMF07XG4gICAgICAgICAgICBsZXQgdGFiSW5kZXg7XG5cbiAgICAgICAgICAgIGlmICghdGFiKSB7XG4gICAgICAgICAgICAgICAgdGFiSW5kZXggPSAyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0YWJJbmRleCA9IHRhYi5pbmRleDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fc2Nyb2xsVG9GcmFnbWVudCh0aGlzLmZyYWdtZW50SWQsIHRhYkluZGV4LCB0cnVlLCB0cnVlKTtcblxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5hc1NlcnZpY2UuaXNCbG9ja0RvY3VtZW50QWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbk5hdkNsaWNrKGZyYWdtZW50SWQ6IHN0cmluZywgdGFiSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmZyYWdtZW50SWQgPSBmcmFnbWVudElkO1xuICAgICAgICB0aGlzLmlzTmF2Q2xpY2tlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuX3Njcm9sbFRvRnJhZ21lbnQodGhpcy5mcmFnbWVudElkLCB0YWJJbmRleCwgZmFsc2UsIHRydWUpO1xuICAgIH1cblxuICAgIG9uVGFiU2VsZWN0ZWQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNMb2FkaW5nICYmICF0aGlzLmlzTmF2Q2xpY2tlZCkge1xuICAgICAgICAgICAgY29uc3QgdGFiSWQgPSB0aGlzLlRBQlNfREVGLmZpbHRlcigodCkgPT4gdC5pbmRleCA9PT0gZXZlbnQuaW5kZXgpWzBdLmlkO1xuICAgICAgICAgICAgdGhpcy5fc2Nyb2xsVG9GcmFnbWVudCh0YWJJZCwgZXZlbnQuaW5kZXgsIGZhbHNlLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc05hdkNsaWNrZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zY3JvbGxUb0ZyYWdtZW50KGZyYWdtZW50SWQ6IHN0cmluZywgdGFiSW5kZXg6IG51bWJlciwgaW5pdDogYm9vbGVhbiwgY2hhbmdlVGFiOiBib29sZWFuKSB7XG4gICAgICAgIGlmIChpbml0KSB7XG4gICAgICAgICAgICBpZiAodGhpcy50YWJzQ29udGVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMudGFic0NvbnRlbnQuY2hhbmdlVGFiKHRhYkluZGV4KTtcblxuICAgICAgICAgICAgICAgIGlmIChmcmFnbWVudElkKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmdtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZnJhZ21lbnRJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB5T2Zmc2V0ID0gLTgwO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZnbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHkgPSBmZ20uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICsgd2luZG93LnBhZ2VZT2Zmc2V0ICsgeU9mZnNldDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IHkgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjaGFuZ2VUYWIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5vblNhbWVVcmxOYXZpZ2F0aW9uID0gJ3JlbG9hZCc7XG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuJ10sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSwgZnJhZ21lbnQ6IGZyYWdtZW50SWQgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRhYnNDb250ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYnNDb250ZW50LmNoYW5nZVRhYih0YWJJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm91dGVSb290ID0gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCcjJylbMF07XG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhdGlvbi5nbyhgJHtyb3V0ZVJvb3R9IyR7ZnJhZ21lbnRJZH1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2dldENvbXBvbmVudFN0YXR1cyhpZCkge1xuICAgICAgICBjb25zdCBmbGF0dGVuID0gKGxpbmtzKSA9PlxuICAgICAgICAgICAgbGlua3NcbiAgICAgICAgICAgICAgICA/IGxpbmtzLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0LCBpdGVtKSA9PiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGl0ZW0ubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHRlcm5hdGVJZDogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBpdGVtLm1hcmtlclR5cGVDbGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtcFJlcGxhY2VtZW50OiBpdGVtLmNtcFJlcGxhY2VtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21wUmVwbGFjZW1lbnRVcmw6IGl0ZW0uY21wUmVwbGFjZW1lbnRVcmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXBSZXBsYWNlbWVudE5vdGU6IGl0ZW0uY21wUmVwbGFjZW1lbnROb3RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0ZXJuYXRlQXBpQ2F0ZWdvcnk6IGl0ZW0uYWx0ZXJuYXRlQXBpQ2F0ZWdvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YTogaXRlbS5tZXRhZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZmxhdHRlbihpdGVtLmNoaWxkcmVuKSxcbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBbXTtcblxuICAgICAgICBjb25zdCBmbGF0TGlua3MgPSBmbGF0dGVuKHRoaXMuYXNTZXJ2aWNlLnN0YXRlLnNpZGViYXJMaW5rcyk7XG4gICAgICAgIGNvbnN0IGlkQmFzZWRDbXAgPSBmbGF0TGlua3MuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmlkID09PSBpZClbMF07XG4gICAgICAgIGlmIChpZEJhc2VkQ21wKSB7XG4gICAgICAgICAgICByZXR1cm4gaWRCYXNlZENtcDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGFsdGVybmF0ZUlkQmFzZWRDbXAgPSBmbGF0TGlua3MuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmFsdGVybmF0ZUlkID09PSBpZClbMF07XG4gICAgICAgICAgICByZXR1cm4gYWx0ZXJuYXRlSWRCYXNlZENtcDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2dldEFwaVVybCgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cubG9jYXRpb247XG4gICAgICAgIGNvbnN0IHByb3RvY29sID0gdXJsLnByb3RvY29sO1xuICAgICAgICBjb25zdCBob3N0ID0gdXJsLmhvc3Q7XG4gICAgICAgIGNvbnN0IHBhdGhOYW1lID0gdXJsLnBhdGhuYW1lO1xuICAgICAgICBjb25zdCBwYXRoTmFtZUFycmF5ID0gcGF0aE5hbWUuc3BsaXQoJy8nKTtcbiAgICAgICAgY29uc3QgbmFtZSA9IHBhdGhOYW1lQXJyYXlbcGF0aE5hbWVBcnJheS5sZW5ndGggLSAxXTtcbiAgICAgICAgbGV0IGNhdGVnb3J5ID0gcGF0aE5hbWVBcnJheVtwYXRoTmFtZUFycmF5Lmxlbmd0aCAtIDJdO1xuXG4gICAgICAgIGxldCBwcm90b2NvbEdlbiA9IHByb3RvY29sO1xuICAgICAgICBsZXQgaG9zdEdlbiA9IGhvc3Q7XG5cbiAgICAgICAgaWYgKGhvc3QuaW5kZXhPZignbG9jYWxob3N0JykgPiAtMSkge1xuICAgICAgICAgICAgcHJvdG9jb2xHZW4gPSAnaHR0cHM6JztcbiAgICAgICAgICAgIGhvc3RHZW4gPSAnZXVpZGV2LmVjZGV2b3BzLmV1JztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFwcFZlcnNpb25OdW1iZXIgPSB0aGlzLmFwcE1ldGFkYXRhLmFwcFZlcnNpb24uc3BsaXQoJy4nKVswXTtcbiAgICAgICAgY29uc3QgZG9jVHlwZVJvb3QgPSBgZXVpLWRvY3MtZXVpLSR7YXBwVmVyc2lvbk51bWJlcn0ueGA7XG5cbiAgICAgICAgaWYgKGNhdGVnb3J5ID09PSAnbGF5b3V0LWNvbXBvbmVudHMnIHx8IGNhdGVnb3J5ID09PSAnZXh0ZXJuYWxzJykge1xuICAgICAgICAgICAgY2F0ZWdvcnkgPSAnY29tcG9uZW50cyc7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjbXAgPSB0aGlzLl9nZXRDb21wb25lbnRTdGF0dXMobmFtZSk7XG5cbiAgICAgICAgaWYgKGNtcC5hbHRlcm5hdGVBcGlDYXRlZ29yeSkge1xuICAgICAgICAgICAgY2F0ZWdvcnkgPSBjbXAuYWx0ZXJuYXRlQXBpQ2F0ZWdvcnk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmb3JtYXR0ZWROYW1lID0gdGhpcy5fY2FtZWxDYXNlU3RyaW5nKG5hbWUgKyAnLScgKyBjYXRlZ29yeS5zbGljZSgwLCAtMSksICctJywgdHJ1ZSk7XG4gICAgICAgIGNvbnN0IGRvY1BhdGggPSBgJHtwcm90b2NvbEdlbn0vLyR7aG9zdEdlbn0vJHtkb2NUeXBlUm9vdH0vJHtjYXRlZ29yeX0vJHtmb3JtYXR0ZWROYW1lfS5odG1sYDtcblxuICAgICAgICBjb25zb2xlLmxvZyhgZmV0Y2hpbmcgQVBJIGZyb206ICR7ZG9jUGF0aH1gKTtcblxuICAgICAgICByZXR1cm4gZG9jUGF0aDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jYW1lbENhc2VTdHJpbmcoc3RyaW5nLCBzZXBhcmF0b3IsIGZpcnN0KSB7XG4gICAgICAgIGNvbnN0IHN0cmluZ0FycmF5ID0gc3RyaW5nLnNwbGl0KHNlcGFyYXRvcik7XG4gICAgICAgIGxldCByZXN1bHQgPSAnJztcbiAgICAgICAgbGV0IHM7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHJpbmdBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgcyA9IHN0cmluZ0FycmF5W2ldO1xuICAgICAgICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoZmlyc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHMuc3Vic3RyaW5nKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyBzLnN1YnN0cigxKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdCArPSBzLnN1YnN0cmluZygwLCAxKS50b1VwcGVyQ2FzZSgpICsgcy5zdWJzdHIoMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbn1cblxuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvciAqL1xuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnZG9jUGFnZU92ZXJ2aWV3JyB9KVxuZXhwb3J0IGNsYXNzIERvY1BhZ2VPdmVydmlld0NvbnRlbnREaXJlY3RpdmUge31cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ2RvY1BhZ2VJbnRlcmFjdGl2ZScgfSlcbmV4cG9ydCBjbGFzcyBEb2NQYWdlSW50ZXJhY3RpdmVDb250ZW50RGlyZWN0aXZlIHtcbiAgICBASW5wdXQoKSB0aXRsZSA9ICdBRFZBTkNFRCBFWEFNUExFUyc7XG4gICAgQElucHV0KCkgc3ViVGl0bGUgPSAnQWR2YW5jZWQgdXNlIGNhc2VzJztcbn1cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ2RvY1BhZ2VTYW1wbGVzJyB9KVxuZXhwb3J0IGNsYXNzIERvY1BhZ2VTYW1wbGVzQ29udGVudERpcmVjdGl2ZSB7fVxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnZG9jUGFnZVNlY3Rpb25zJyB9KVxuZXhwb3J0IGNsYXNzIERvY1BhZ2VTZWN0aW9uc0NvbnRlbnREaXJlY3RpdmUge31cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ2RvY1BhZ2VBY2Nlc3NpYmlsaXR5JyB9KVxuZXhwb3J0IGNsYXNzIERvY1BhZ2VBY2Nlc3NpYmlsaXR5Q29udGVudERpcmVjdGl2ZSB7fVxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnZG9jUGFnZUFwaScgfSlcbmV4cG9ydCBjbGFzcyBEb2NQYWdlQXBpQ29udGVudERpcmVjdGl2ZSB7fVxuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdkb2NQYWdlVGhlbWluZycgfSlcbmV4cG9ydCBjbGFzcyBEb2NQYWdlVGhlbWluZ0NvbnRlbnREaXJlY3RpdmUge31cbi8qIGVzbGludC1lbmFibGUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvciAqL1xuIiwiPGRpdiBjbGFzcz1cImRvYy1wYWdlLW5hdmlnYXRpb24td3JhcHBlclwiIFtjbGFzcy5ldWktdS1oaWRkZW5dPVwiaXNMb2FkaW5nXCI+XG4gICAgPGRpdiBjbGFzcz1cImRvYy1wYWdlLW1haW4tY29sdW1uXCI+XG4gICAgICAgIDxldWktcGFnZT5cbiAgICAgICAgICAgIDxldWktcGFnZS1oZWFkZXIgbGFiZWw9XCJ7eyBsYWJlbCB9fVwiIHN1YkxhYmVsPVwie3sgc3ViTGFiZWwgfX1cIj5cbiAgICAgICAgICAgICAgICA8ZXVpLXBhZ2UtaGVhZGVyLWFjdGlvbi1pdGVtcz5cbiAgICAgICAgICAgICAgICAgICAgPGV1aS1zaG93Y2FzZS1kb2MtcGFnZS1jb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvZGVGb2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZUZvbGRlcj1cInt7IGNvZGVGb2xkZXIgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd2Nhc2U9XCJ7eyBzaG93Y2FzZSB9fVwiPjwvZXVpLXNob3djYXNlLWRvYy1wYWdlLWNvZGU+XG4gICAgICAgICAgICAgICAgICAgIDxldWktY2hpcFxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdGF0ZUxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlTdWNjZXNzXT1cInN0YXRlTGFiZWwgPT09ICdBQ1RJVkUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlXYXJuaW5nXT1cInN0YXRlTGFiZWwgPT09ICdERVBSRUNBVEVEJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXVpRGFuZ2VyXT1cImlzTGVnYWN5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBldWlMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHN0YXRlTGFiZWwgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9ldWktY2hpcD5cbiAgICAgICAgICAgICAgICA8L2V1aS1wYWdlLWhlYWRlci1hY3Rpb24taXRlbXM+XG4gICAgICAgICAgICA8L2V1aS1wYWdlLWhlYWRlcj5cblxuICAgICAgICAgICAgPGV1aS1wYWdlLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPGV1aS1hbGVydCAqbmdJZj1cInN0YXRlTGFiZWwgPT09ICdMRUdBQ1knIHx8IGlzTGVnYWN5XCIgZXVpRGFuZ2VyPlxuICAgICAgICAgICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY29tcG9uZW50IHdpbGwgYmVcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmcgY2xhc3M9XCJldWktdS1jb2xvci1kYW5nZXJcIj5yZW1vdmVkPC9zdHJvbmc+IGluIHRoZSBuZXh0IHZlcnNpb24gb2YgZVVJICEhXG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNtcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNtcC5jbXBSZXBsYWNlbWVudCAhPT0gJ05PTkUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSXQgaGFzIGJlZW4gcmVwbGFjZWQgYnkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmcgY2xhc3M9XCJldWktdS1jb2xvci1zdWNjZXNzLWRhcmtlc3RcIj57eyBjbXAuY21wUmVwbGFjZW1lbnQgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgKm5nSWY9XCJjbXAuY21wUmVwbGFjZW1lbnRVcmxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPjxicj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIG5ldyBjb21wb25lbnQgaGVyZSA6IDxhIFtyb3V0ZXJMaW5rXT1cImNtcC5jbXBSZXBsYWNlbWVudFVybFwiPnt7Y21wLmNtcFJlcGxhY2VtZW50VXJsfX08L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY21wLmNtcFJlcGxhY2VtZW50ID09PSAnTk9ORSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGNvbXBvbmVudCB3aWxsIGJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cImV1aS11LWNvbG9yLWRhbmdlclwiPmRpc2NvbnRpbnVlZCBpbiBmdXR1cmUgdmVyc2lvbiBvZiBlVUk8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNtcC5jbXBSZXBsYWNlbWVudE5vdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwiZXVpLXUtY29sb3Itd2FybmluZ1wiPnt7IGNtcC5jbXBSZXBsYWNlbWVudE5vdGUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2V1aS1hbGVydD5cblxuICAgICAgICAgICAgICAgIDxldWktYWxlcnQgKm5nSWY9XCJzdGF0ZUxhYmVsID09PSAnREVQUkVDQVRFRCcgfHwgaXNEZXByZWNhdGVkXCIgZXVpV2FybmluZz5cbiAgICAgICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGNvbXBvbmVudCBoYXMgYmVlblxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cImV1aS11LWNvbG9yLWRhbmdlclwiPmRlcHJlY2F0ZWQ8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY21wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGNvbXBvbmVudCBoYXMgbm8gcmVwbGFjZW1lbnQgaW4gY3VycmVudCB2ZXJzaW9uIEFORCB3b24ndCBoYXZlIHJlcGxhY2VtZW50IGluIG5leHQgdmVyc2lvbiBvZiBlVUksIGl0IGlzIGtlcHRcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cImV1aS11LWNvbG9yLXdhcm5pbmdcIj5oaXN0b3JpY2FsIHVzYWdlIG9ubHk8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9ldWktYWxlcnQ+XG5cbiAgICAgICAgICAgICAgICA8ZXVpLWFsZXJ0ICpuZ0lmPVwic3RhdGVMYWJlbCA9PT0gJ05PVF9SRUFEWScgfHwgaXNOb3RSZWFkeVwiIGV1aUluZm8+XG4gICAgICAgICAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBjb21wb25lbnQgaXNcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmcgY2xhc3M9XCJldWktdS1jb2xvci1pbmZvXCI+Tk9UIFJFQURZPC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNtcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBjb21wb25lbnQgaXMgdW5kZXIgZGV2ZWxvcG1lbnQgLyBzb21lIGZlYXR1cmVzIG1pZ2h0IGJlIG1pc3NpbmcsIGl0J2xsIGJlIGF2YWlsYWJsZSBpbiBhIGZ1dHVyZSByZWxlYXNlIG9uY2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlZC5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9ldWktYWxlcnQ+XG5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKHN0YXRlTGFiZWwgfHwgaXNOb3RSZWFkeSB8fCBpc0RlcHJlY2F0ZWQpICYmIHN0YXRlTGFiZWwgIT09ICdBQ1RJVkUnXCIgY2xhc3M9XCJtYi01XCI+PC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZXVpLXRhYnMgI3RhYnNDb250ZW50ICpuZ0lmPVwicGFnZVNlY3Rpb25zQ29udGVudC5sZW5ndGggPT09IDBcIiAodGFiU2VsZWN0ZWQpPVwib25UYWJTZWxlY3RlZCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxldWktdGFiICpuZ0lmPVwiaGFzQXBpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZXVpVGFiTGFiZWw+IEFQSSA8L2V1aVRhYkxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGV1aVRhYkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFwaVVybFNhZmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwie3sgYXBpVXJsIH19XCIgdGFyZ2V0PVwiX2JsYW5rXCIgY2xhc3M9XCJtcy1hdXRvIHBiLTIgZXVpLXUtdGV4dC1saW5rLWV4dGVybmFsXCI+T3BlbiBBUEkgcGFnZTwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb2MtcGFnZS1hcGktaWZyYW1lLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpZnJhbWUgaWQ9XCJpZnJhbWVfYXBpXCIgW3dpZHRoXT1cIicxMDAlJ1wiIGhlaWdodD1cIjcwMHB4XCIgZnJhbWVCb3JkZXI9XCIwXCIgW3NyY109XCJhcGlVcmxTYWZlXCI+PC9pZnJhbWU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9ldWlUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8L2V1aS10YWI+XG5cbiAgICAgICAgICAgICAgICAgICAgPGV1aS10YWIgKm5nSWY9XCJoYXNBMTF5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZXVpVGFiTGFiZWw+IEExMVkgPC9ldWlUYWJMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxldWlUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBpZD1cImFjY2Vzc2liaWxpdHlcIiBjbGFzcz1cImV1aS11LWZvbnQtYm9sZCBldWktdS1jb2xvci1pbmZvIG10LTMgbWItMlwiPkFjY2Vzc2liaWxpdHk8L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImRvY1BhZ2VBY2Nlc3NpYmlsaXR5XCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9ldWlUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8L2V1aS10YWI+XG5cbiAgICAgICAgICAgICAgICAgICAgPGV1aS10YWI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZXVpVGFiTGFiZWw+IE9QVElPTlMgJiBTQU1QTEVTIDwvZXVpVGFiTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZXVpVGFiQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY21wICYmIGNtcC5tZXRhZGF0YVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJldWktdS1mb250LWJvbGQgZXVpLXUtY29sb3ItaW5mbyBtdC0zIG1iLTNcIj5Nb2R1bGUgaW1wb3J0PC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByZT48Y29kZSBjbGFzcz1cImxhbmd1YWdlLWphdmFzY3JpcHQgZXVpLXUtYmctY29sb3ItZ3JleS01XCIgZXVpQ29kZT57eyBjbXBNb2R1bGVJbXBvcnQgfX08L2NvZGU+PC9wcmU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGlkPVwib3ZlcnZpZXdcIiBjbGFzcz1cImV1aS11LWZvbnQtYm9sZCBldWktdS1jb2xvci1pbmZvIG10LTMgbWItM1wiPk92ZXJ2aWV3ICYgc2V0dXA8L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwYWdlT3ZlcnZpZXdDb250ZW50Lmxlbmd0aCA+IDA7IGVsc2Ugbm9PdmVydmlld1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJkb2NQYWdlT3ZlcnZpZXdcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub092ZXJ2aWV3PiBDb21pbmcgc29vbi4uLiA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGlkPVwic2FtcGxlc1wiIGNsYXNzPVwiZXVpLXUtZm9udC1ib2xkIGV1aS11LWNvbG9yLWluZm8gbXQtOCBtYi0yXCI+T3B0aW9ucyAmIHNhbXBsZXM8L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImRvY1BhZ2VTYW1wbGVzXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9ldWlUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8L2V1aS10YWI+XG5cbiAgICAgICAgICAgICAgICAgICAgPGV1aS10YWIgKm5nSWY9XCJwYWdlVGhlbWluZ0NvbnRlbnQubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGV1aVRhYkxhYmVsPiBUSEVNSU5HIDwvZXVpVGFiTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZXVpVGFiQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgaWQ9XCJ0aGVtaW5nXCIgY2xhc3M9XCJldWktdS1mb250LWJvbGQgZXVpLXUtY29sb3ItaW5mbyBtdC0zIG1iLTJcIj5UaGVtaW5nPC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJkb2NQYWdlVGhlbWluZ1wiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZXVpVGFiQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPC9ldWktdGFiPlxuXG4gICAgICAgICAgICAgICAgICAgIDxldWktdGFiICpuZ0lmPVwicGFnZUludGVyYWN0aXZlQ29udGVudC5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZXVpVGFiTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcGFnZUludGVyYWN0aXZlQ29udGVudC5maXJzdC50aXRsZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9ldWlUYWJMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxldWlUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBpZD1cImludGVyYWN0aXZlXCIgY2xhc3M9XCJldWktdS1mb250LWJvbGQgZXVpLXUtY29sb3ItaW5mbyBtdC0zIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcGFnZUludGVyYWN0aXZlQ29udGVudC5maXJzdC5zdWJUaXRsZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZG9jUGFnZUludGVyYWN0aXZlXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9ldWlUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8L2V1aS10YWI+XG4gICAgICAgICAgICAgICAgPC9ldWktdGFicz5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYWdlU2VjdGlvbnNDb250ZW50Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGgzIGlkPVwiZGVtb1wiICpuZ0lmPVwic2VjdGlvbnMubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJldWktdS1mb250LWJvbGQgZXVpLXUtY29sb3ItaW5mbyBtdC0zIG1iLTJcIj5EZW1vPC9oMz5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZG9jUGFnZVNlY3Rpb25zXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9ldWktcGFnZS1jb250ZW50PlxuICAgICAgICA8L2V1aS1wYWdlPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cImlzTmF2aWdhdGlvblZpc2libGVcIiBjbGFzcz1cImRvYy1wYWdlLW5hdmlnYXRpb24tY29sdW1uIGV1aS11LWhpZGRlbi1kZXNrdG9wLWRvd25cIj5cbiAgICAgICAgPGRpdiBpZD1cImRvYy1wYWdlLW5hdlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRvYy1wYWdlLW5hdmlnYXRpb24tdGl0bGVcIj5JbiB0aGlzIHBhZ2U8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb2MtcGFnZS1uYXZpZ2F0aW9uLWNvbnRlbnRcIiB0YWJpbmRleD1cIjBcIj5cbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJkb2MtcGFnZS1uYXZpZ2F0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYWdlU2VjdGlvbnNDb250ZW50Lmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBBTFdBWVMgUFJFU0VOVCBpbiBlYWNoIHBhZ2UtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGxpIGNsYXNzPVwiZG9jLXBhZ2UtbmF2aWdhdGlvbi1pdGVtXCIgW2NsYXNzLmRvYy1wYWdlLW5hdmlnYXRpb24taXRlbS0tc2VsZWN0ZWRdPVwiZnJhZ21lbnRJZCA9PT0gJ292ZXJ2aWV3J1wiIChjbGljayk9XCJvbk5hdkNsaWNrKCdvdmVydmlldycsIDApXCI+PHNwYW4+T1ZFUlZJRVc8L3NwYW4+PC9saT4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImhhc0FwaVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkb2MtcGFnZS1uYXZpZ2F0aW9uLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kb2MtcGFnZS1uYXZpZ2F0aW9uLWl0ZW0tLXNlbGVjdGVkXT1cImZyYWdtZW50SWQgPT09ICdhcGknXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25OYXZDbGljaygnYXBpJywgMClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5BUEk8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJoYXNBMTF5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRvYy1wYWdlLW5hdmlnYXRpb24taXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRvYy1wYWdlLW5hdmlnYXRpb24taXRlbS0tc2VsZWN0ZWRdPVwiZnJhZ21lbnRJZCA9PT0gJ2ExMXknXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25OYXZDbGljaygnYTExeScsIDEpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+QTExWTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRvYy1wYWdlLW5hdmlnYXRpb24taXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRvYy1wYWdlLW5hdmlnYXRpb24taXRlbS0tc2VsZWN0ZWRdPVwiZnJhZ21lbnRJZCA9PT0gJ3NhbXBsZXMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25OYXZDbGljaygnc2FtcGxlcycsIDIpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+T1BUSU9OUyAmIFNBTVBMRVM8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiZG9jLXBhZ2UtbmF2aWdhdGlvbi1pdGVtIGRvYy1wYWdlLW5hdmlnYXRpb24tc3ViXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsICpuZ0Zvcj1cImxldCBzYW1wbGUgb2Ygc2FtcGxlc1wiIGNsYXNzPVwiZG9jLXBhZ2UtbmF2aWdhdGlvbi1saXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkb2MtcGFnZS1uYXZpZ2F0aW9uLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRvYy1wYWdlLW5hdmlnYXRpb24taXRlbS0tc2VsZWN0ZWRdPVwiZnJhZ21lbnRJZCA9PT0gc2FtcGxlLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbk5hdkNsaWNrKHNhbXBsZS5pZCwgMilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHNhbXBsZS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBPUFRJT05BTCBUQUJTLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGFnZVRoZW1pbmdDb250ZW50Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwYWdlVGhlbWluZ0NvbnRlbnQubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZG9jLXBhZ2UtbmF2aWdhdGlvbi1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRvYy1wYWdlLW5hdmlnYXRpb24taXRlbS0tc2VsZWN0ZWRdPVwiZnJhZ21lbnRJZCA9PT0gJ3RoZW1pbmcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTmF2Q2xpY2soJ3RoZW1pbmcnLCAzKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5USEVNSU5HPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicGFnZUludGVyYWN0aXZlQ29udGVudC5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkb2MtcGFnZS1uYXZpZ2F0aW9uLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZG9jLXBhZ2UtbmF2aWdhdGlvbi1pdGVtLS1zZWxlY3RlZF09XCJmcmFnbWVudElkID09PSAnYWR2YW5jZWQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTmF2Q2xpY2soJ2FkdmFuY2VkJywgNClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgcGFnZUludGVyYWN0aXZlQ29udGVudC5maXJzdC50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGFnZVRoZW1pbmdDb250ZW50Lmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBhZ2VJbnRlcmFjdGl2ZUNvbnRlbnQubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZG9jLXBhZ2UtbmF2aWdhdGlvbi1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRvYy1wYWdlLW5hdmlnYXRpb24taXRlbS0tc2VsZWN0ZWRdPVwiZnJhZ21lbnRJZCA9PT0gJ2FkdmFuY2VkJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbk5hdkNsaWNrKCdhZHZhbmNlZCcsIDMpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHBhZ2VJbnRlcmFjdGl2ZUNvbnRlbnQuZmlyc3QudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGFnZVNlY3Rpb25zQ29udGVudC5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRvYy1wYWdlLW5hdmlnYXRpb24taXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRvYy1wYWdlLW5hdmlnYXRpb24taXRlbS0tc2VsZWN0ZWRdPVwiZnJhZ21lbnRJZCA9PT0gJ3NlY3Rpb25zJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTmF2Q2xpY2soJ3NlY3Rpb25zJywgbnVsbClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5TZWN0aW9uczwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNlY3Rpb25zLmxlbmd0aCA9PT0gMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkb2MtcGFnZS1uYXZpZ2F0aW9uLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kb2MtcGFnZS1uYXZpZ2F0aW9uLWl0ZW0tLXNlbGVjdGVkXT1cImZyYWdtZW50SWQgPT09ICdkZW1vJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTmF2Q2xpY2soJ2RlbW8nLCBudWxsKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkRlbW88L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwic2VjdGlvbnMubGVuZ3RoID4gMFwiIGNsYXNzPVwiZG9jLXBhZ2UtbmF2aWdhdGlvbi1pdGVtIGRvYy1wYWdlLW5hdmlnYXRpb24tc3ViXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIHNlY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkb2MtcGFnZS1uYXZpZ2F0aW9uLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRvYy1wYWdlLW5hdmlnYXRpb24taXRlbS0tc2VsZWN0ZWRdPVwiZnJhZ21lbnRJZCA9PT0gc2VjdGlvbi5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25OYXZDbGljayhzZWN0aW9uLmlkLCBudWxsKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgc2VjdGlvbi5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -12,10 +12,10 @@ export class DocPageCodeComponent {
|
|
|
12
12
|
const sourceRootPath = `https://citnet.tech.ec.europa.eu/CITnet/stash/projects/CSDR/repos/app-eui-showcase-${this.showcase}/browse/src/app/`;
|
|
13
13
|
window.open(sourceRootPath + this.codeFolder, '_blank');
|
|
14
14
|
}
|
|
15
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DocPageCodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
16
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: DocPageCodeComponent, selector: "eui-showcase-doc-page-code", inputs: { codeFolder: "codeFolder", showcase: "showcase" }, ngImport: i0, template: "<button type=\"button\" euiButton euiAccent (click)=\"onOpenCode()\">\n <span euiLabel>Check the code</span>\n <span euiIcon iconClass=\"eui-icon eui-icon-code\"></span>\n</button>\n", dependencies: [{ kind: "component", type: i1.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }, { kind: "component", type: i2.EuiIconComponent, selector: "div[euiIcon], span[euiIcon], i[euiIcon], eui-icon", inputs: ["aria-label", "iconClass", "isLoading"] }] }); }
|
|
15
17
|
}
|
|
16
|
-
|
|
17
|
-
/** @nocollapse */ DocPageCodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0-next.2", type: DocPageCodeComponent, selector: "eui-showcase-doc-page-code", inputs: { codeFolder: "codeFolder", showcase: "showcase" }, ngImport: i0, template: "<button type=\"button\" euiButton euiAccent (click)=\"onOpenCode()\">\n <span euiLabel>Check the code</span>\n <span euiIcon iconClass=\"eui-icon eui-icon-code\"></span>\n</button>\n", dependencies: [{ kind: "component", type: i1.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }, { kind: "component", type: i2.EuiIconComponent, selector: "div[euiIcon], span[euiIcon], i[euiIcon], eui-icon", inputs: ["aria-label", "iconClass", "isLoading"] }] });
|
|
18
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.2", ngImport: i0, type: DocPageCodeComponent, decorators: [{
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DocPageCodeComponent, decorators: [{
|
|
19
19
|
type: Component,
|
|
20
20
|
args: [{ selector: 'eui-showcase-doc-page-code', template: "<button type=\"button\" euiButton euiAccent (click)=\"onOpenCode()\">\n <span euiLabel>Check the code</span>\n <span euiIcon iconClass=\"eui-icon eui-icon-code\"></span>\n</button>\n" }]
|
|
21
21
|
}], propDecorators: { codeFolder: [{
|
|
@@ -23,4 +23,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.2",
|
|
|
23
23
|
}], showcase: [{
|
|
24
24
|
type: Input
|
|
25
25
|
}] } });
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jLXBhZ2UtY29kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZG9jLXBhZ2UtY29kZS9kb2MtcGFnZS1jb2RlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kb2MtcGFnZS1jb2RlL2RvYy1wYWdlLWNvZGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFNakQsTUFBTSxPQUFPLG9CQUFvQjtJQUpqQztRQUthLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsYUFBUSxHQUFHLElBQUksQ0FBQztLQU81QjtJQUxHLFVBQVU7UUFDTixtQ0FBbUM7UUFDbkMsTUFBTSxjQUFjLEdBQUcsc0ZBQXNGLElBQUksQ0FBQyxRQUFRLGtCQUFrQixDQUFDO1FBQzdJLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDNUQsQ0FBQztpSUFSUSxvQkFBb0I7cUhBQXBCLG9CQUFvQiw4SENOakMsOExBSUE7OzJGREVhLG9CQUFvQjtrQkFKaEMsU0FBUzsrQkFDSSw0QkFBNEI7OEJBSTdCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdldWktc2hvd2Nhc2UtZG9jLXBhZ2UtY29kZScsXG4gICAgdGVtcGxhdGVVcmw6ICdkb2MtcGFnZS1jb2RlLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgRG9jUGFnZUNvZGVDb21wb25lbnQge1xuICAgIEBJbnB1dCgpIGNvZGVGb2xkZXIgPSAnJztcbiAgICBASW5wdXQoKSBzaG93Y2FzZSA9ICd1eCc7XG5cbiAgICBvbk9wZW5Db2RlKCk6IHZvaWQge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuICAgICAgICBjb25zdCBzb3VyY2VSb290UGF0aCA9IGBodHRwczovL2NpdG5ldC50ZWNoLmVjLmV1cm9wYS5ldS9DSVRuZXQvc3Rhc2gvcHJvamVjdHMvQ1NEUi9yZXBvcy9hcHAtZXVpLXNob3djYXNlLSR7dGhpcy5zaG93Y2FzZX0vYnJvd3NlL3NyYy9hcHAvYDtcbiAgICAgICAgd2luZG93Lm9wZW4oc291cmNlUm9vdFBhdGggKyB0aGlzLmNvZGVGb2xkZXIsICdfYmxhbmsnKTtcbiAgICB9XG59XG4iLCI8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBldWlCdXR0b24gZXVpQWNjZW50IChjbGljayk9XCJvbk9wZW5Db2RlKClcIj5cbiAgICA8c3BhbiBldWlMYWJlbD5DaGVjayB0aGUgY29kZTwvc3Bhbj5cbiAgICA8c3BhbiBldWlJY29uIGljb25DbGFzcz1cImV1aS1pY29uIGV1aS1pY29uLWNvZGVcIj48L3NwYW4+XG48L2J1dHRvbj5cbiJdfQ==
|
package/{esm2020 → esm2022}/lib/components/doc-page-code-fab/doc-page-code-fab.component.mjs
RENAMED
|
@@ -22,10 +22,10 @@ export class DocPageCodeFabComponent {
|
|
|
22
22
|
const sourceRootPath = `https://citnet.tech.ec.europa.eu/CITnet/stash/projects/CSDR/repos/app-eui-showcase-${this.showcase}/browse/src/app/features/`;
|
|
23
23
|
window.open(sourceRootPath + this.codeFolder, '_blank');
|
|
24
24
|
}
|
|
25
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DocPageCodeFabComponent, deps: [{ token: i1.UxAppShellService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: DocPageCodeFabComponent, selector: "eui-showcase-doc-page-code-fab", inputs: { codeFolder: "codeFolder", showcase: "showcase" }, viewQueries: [{ propertyName: "dialog", first: true, predicate: ["dialog"], descendants: true }], ngImport: i0, template: "<div class=\"eui-button-fixed\">\n <div class=\"eui-button-floating eui-button--size-2xl eui-button--icon-only eui-button--accent\">\n <span class=\"eui-icon eui-icon-code\" (click)=\"toggleCode()\"></span>\n </div>\n</div>\n\n<eui-dialog #dialog title=\"Page source code\" [hasFooter]=\"false\" (close)=\"onClose()\">\n <button type=\"button\" *ngIf=\"codeFolder\" euiButton euiAccent euiSizeS (click)=\"onOpenCode()\">\n <eui-icon-svg icon=\"eui-code\" set=\"eui\" size=\"m\" fillColor=\"grey-100\" class=\"eui-u-mr-xs\"></eui-icon-svg> VIEW SOURCES\n </button>\n <ng-content></ng-content>\n <p>Use the <kbd>View sources</kbd> button to access the code source of the page.</p>\n</eui-dialog>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }, { kind: "component", type: i4.EuiDialogComponent, selector: "eui-dialog", inputs: ["e2eAttr", "title", "width", "height", "acceptLabel", "dismissLabel", "typeClass", "hasCloseButton", "hasAcceptButton", "hasDismissButton", "hasMobileCustomSize", "isClosedOnClickOutside", "isClosedOnEscape", "isHandleCloseOnDismiss", "isHandleCloseOnClose", "isHandleCloseOnAccept", "isHandleCloseOnClickOutside", "isHandleCloseOnEscape", "isMessageBox", "isDraggable", "hasNoBodyPadding", "hasFooter"], outputs: ["clickOutside", "escape", "open", "close", "dismiss", "accept"] }, { kind: "component", type: i5.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "aria-label", "ariaHidden", "focusable", "isLoading"] }] }); }
|
|
25
27
|
}
|
|
26
|
-
|
|
27
|
-
/** @nocollapse */ DocPageCodeFabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0-next.2", type: DocPageCodeFabComponent, selector: "eui-showcase-doc-page-code-fab", inputs: { codeFolder: "codeFolder", showcase: "showcase" }, viewQueries: [{ propertyName: "dialog", first: true, predicate: ["dialog"], descendants: true }], ngImport: i0, template: "<div class=\"eui-button-fixed\">\n <div class=\"eui-button-floating eui-button--size-2xl eui-button--icon-only eui-button--accent\">\n <span class=\"eui-icon eui-icon-code\" (click)=\"toggleCode()\"></span>\n </div>\n</div>\n\n<eui-dialog #dialog title=\"Page source code\" [hasFooter]=\"false\" (close)=\"onClose()\">\n <button type=\"button\" *ngIf=\"codeFolder\" euiButton euiAccent euiSizeS (click)=\"onOpenCode()\">\n <eui-icon-svg icon=\"eui-code\" set=\"eui\" size=\"m\" fillColor=\"grey-100\" class=\"eui-u-mr-xs\"></eui-icon-svg> VIEW SOURCES\n </button>\n <ng-content></ng-content>\n <p>Use the <kbd>View sources</kbd> button to access the code source of the page.</p>\n</eui-dialog>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }, { kind: "component", type: i4.EuiDialogComponent, selector: "eui-dialog", inputs: ["e2eAttr", "title", "width", "height", "acceptLabel", "dismissLabel", "typeClass", "hasCloseButton", "hasAcceptButton", "hasDismissButton", "hasMobileCustomSize", "isClosedOnClickOutside", "isClosedOnEscape", "isHandleCloseOnDismiss", "isHandleCloseOnClose", "isHandleCloseOnAccept", "isHandleCloseOnClickOutside", "isHandleCloseOnEscape", "isMessageBox", "isDraggable", "hasNoBodyPadding", "hasFooter"], outputs: ["clickOutside", "escape", "open", "close", "dismiss", "accept"] }, { kind: "component", type: i5.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "aria-label", "ariaHidden", "focusable", "isLoading"] }] });
|
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.2", ngImport: i0, type: DocPageCodeFabComponent, decorators: [{
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: DocPageCodeFabComponent, decorators: [{
|
|
29
29
|
type: Component,
|
|
30
30
|
args: [{ selector: 'eui-showcase-doc-page-code-fab', template: "<div class=\"eui-button-fixed\">\n <div class=\"eui-button-floating eui-button--size-2xl eui-button--icon-only eui-button--accent\">\n <span class=\"eui-icon eui-icon-code\" (click)=\"toggleCode()\"></span>\n </div>\n</div>\n\n<eui-dialog #dialog title=\"Page source code\" [hasFooter]=\"false\" (close)=\"onClose()\">\n <button type=\"button\" *ngIf=\"codeFolder\" euiButton euiAccent euiSizeS (click)=\"onOpenCode()\">\n <eui-icon-svg icon=\"eui-code\" set=\"eui\" size=\"m\" fillColor=\"grey-100\" class=\"eui-u-mr-xs\"></eui-icon-svg> VIEW SOURCES\n </button>\n <ng-content></ng-content>\n <p>Use the <kbd>View sources</kbd> button to access the code source of the page.</p>\n</eui-dialog>\n" }]
|
|
31
31
|
}], ctorParameters: function () { return [{ type: i1.UxAppShellService }]; }, propDecorators: { codeFolder: [{
|
|
@@ -36,4 +36,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.2",
|
|
|
36
36
|
type: ViewChild,
|
|
37
37
|
args: ['dialog']
|
|
38
38
|
}] } });
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jLXBhZ2UtY29kZS1mYWIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2RvYy1wYWdlLWNvZGUtZmFiL2RvYy1wYWdlLWNvZGUtZmFiLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kb2MtcGFnZS1jb2RlLWZhYi9kb2MtcGFnZS1jb2RlLWZhYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFRNUQsTUFBTSxPQUFPLHVCQUF1QjtJQU1oQyxZQUFtQixTQUE0QjtRQUE1QixjQUFTLEdBQVQsU0FBUyxDQUFtQjtRQUx0QyxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGFBQVEsR0FBRyxhQUFhLENBQUM7SUFJZ0IsQ0FBQztJQUU1QyxVQUFVO1FBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU0sT0FBTztRQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVNLFVBQVU7UUFDYixtQ0FBbUM7UUFDbkMsTUFBTSxjQUFjLEdBQUcsc0ZBQXNGLElBQUksQ0FBQyxRQUFRLDJCQUEyQixDQUFDO1FBQ3RKLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDNUQsQ0FBQztpSUFwQlEsdUJBQXVCO3FIQUF2Qix1QkFBdUIsb09DUnBDLHl0QkFhQTs7MkZETGEsdUJBQXVCO2tCQUpuQyxTQUFTOytCQUNJLGdDQUFnQzt3R0FJakMsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVlLE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVXhBcHBTaGVsbFNlcnZpY2UgfSBmcm9tICdAZXVpL2NvcmUnO1xuaW1wb3J0IHsgRXVpRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnQGV1aS9jb21wb25lbnRzL2V1aS1kaWFsb2cnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2V1aS1zaG93Y2FzZS1kb2MtcGFnZS1jb2RlLWZhYicsXG4gICAgdGVtcGxhdGVVcmw6ICdkb2MtcGFnZS1jb2RlLWZhYi5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIERvY1BhZ2VDb2RlRmFiQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBjb2RlRm9sZGVyID0gJyc7XG4gICAgQElucHV0KCkgc2hvd2Nhc2UgPSAndXgtcGF0dGVybnMnO1xuXG4gICAgQFZpZXdDaGlsZCgnZGlhbG9nJykgZGlhbG9nOiBFdWlEaWFsb2dDb21wb25lbnQ7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgYXNTZXJ2aWNlOiBVeEFwcFNoZWxsU2VydmljZSkge31cblxuICAgIHB1YmxpYyB0b2dnbGVDb2RlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpYWxvZy5vcGVuRGlhbG9nKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2xvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlhbG9nLmNsb3NlRGlhbG9nKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uT3BlbkNvZGUoKTogdm9pZCB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgICAgIGNvbnN0IHNvdXJjZVJvb3RQYXRoID0gYGh0dHBzOi8vY2l0bmV0LnRlY2guZWMuZXVyb3BhLmV1L0NJVG5ldC9zdGFzaC9wcm9qZWN0cy9DU0RSL3JlcG9zL2FwcC1ldWktc2hvd2Nhc2UtJHt0aGlzLnNob3djYXNlfS9icm93c2Uvc3JjL2FwcC9mZWF0dXJlcy9gO1xuICAgICAgICB3aW5kb3cub3Blbihzb3VyY2VSb290UGF0aCArIHRoaXMuY29kZUZvbGRlciwgJ19ibGFuaycpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJldWktYnV0dG9uLWZpeGVkXCI+XG4gICAgPGRpdiBjbGFzcz1cImV1aS1idXR0b24tZmxvYXRpbmcgZXVpLWJ1dHRvbi0tc2l6ZS0yeGwgZXVpLWJ1dHRvbi0taWNvbi1vbmx5IGV1aS1idXR0b24tLWFjY2VudFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImV1aS1pY29uIGV1aS1pY29uLWNvZGVcIiAoY2xpY2spPVwidG9nZ2xlQ29kZSgpXCI+PC9zcGFuPlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxldWktZGlhbG9nICNkaWFsb2cgdGl0bGU9XCJQYWdlIHNvdXJjZSBjb2RlXCIgW2hhc0Zvb3Rlcl09XCJmYWxzZVwiIChjbG9zZSk9XCJvbkNsb3NlKClcIj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cImNvZGVGb2xkZXJcIiBldWlCdXR0b24gZXVpQWNjZW50IGV1aVNpemVTIChjbGljayk9XCJvbk9wZW5Db2RlKClcIj5cbiAgICAgICAgPGV1aS1pY29uLXN2ZyBpY29uPVwiZXVpLWNvZGVcIiBzZXQ9XCJldWlcIiBzaXplPVwibVwiIGZpbGxDb2xvcj1cImdyZXktMTAwXCIgY2xhc3M9XCJldWktdS1tci14c1wiPjwvZXVpLWljb24tc3ZnPiBWSUVXIFNPVVJDRVNcbiAgICA8L2J1dHRvbj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPHA+VXNlIHRoZSA8a2JkPlZpZXcgc291cmNlczwva2JkPiBidXR0b24gdG8gYWNjZXNzIHRoZSBjb2RlIHNvdXJjZSBvZiB0aGUgcGFnZS48L3A+XG48L2V1aS1kaWFsb2c+XG4iXX0=
|