valtech-components 4.0.963 → 4.0.965
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/esm2022/lib/components/atoms/avatar/avatar.component.mjs +3 -3
- package/esm2022/lib/components/atoms/box/box.component.mjs +3 -3
- package/esm2022/lib/components/atoms/button/button.component.mjs +3 -3
- package/esm2022/lib/components/atoms/display/display.component.mjs +3 -3
- package/esm2022/lib/components/atoms/divider/divider.component.mjs +3 -3
- package/esm2022/lib/components/atoms/href/href.component.mjs +3 -3
- package/esm2022/lib/components/atoms/icon/icon.component.mjs +3 -3
- package/esm2022/lib/components/atoms/image/image.component.mjs +3 -3
- package/esm2022/lib/components/atoms/notice/notice.component.mjs +3 -3
- package/esm2022/lib/components/atoms/progress-bar/progress-bar.component.mjs +3 -3
- package/esm2022/lib/components/atoms/qr-code/qr-code.component.mjs +3 -3
- package/esm2022/lib/components/atoms/text/text.component.mjs +3 -3
- package/esm2022/lib/components/atoms/title/title.component.mjs +3 -3
- package/esm2022/lib/components/atoms/user-avatar/user-avatar.component.mjs +3 -3
- package/esm2022/lib/components/molecules/alert-box/alert-box.component.mjs +3 -3
- package/esm2022/lib/components/molecules/animal-card/animal-card.component.mjs +3 -3
- package/esm2022/lib/components/molecules/button-group/button-group.component.mjs +3 -3
- package/esm2022/lib/components/molecules/card/card.component.mjs +3 -3
- package/esm2022/lib/components/molecules/chat-composer/chat-composer.component.mjs +3 -3
- package/esm2022/lib/components/molecules/chip-group/chip-group.component.mjs +3 -3
- package/esm2022/lib/components/molecules/code-display/code-display.component.mjs +3 -3
- package/esm2022/lib/components/molecules/command-display/command-display.component.mjs +3 -3
- package/esm2022/lib/components/molecules/comment/comment.component.mjs +4 -4
- package/esm2022/lib/components/molecules/content-loader/content-loader.component.mjs +3 -3
- package/esm2022/lib/components/molecules/currency-input/currency-input.component.mjs +3 -3
- package/esm2022/lib/components/molecules/date-input/date-input.component.mjs +3 -3
- package/esm2022/lib/components/molecules/date-range-input/date-range-input.component.mjs +3 -3
- package/esm2022/lib/components/molecules/docs-search/docs-search.component.mjs +3 -3
- package/esm2022/lib/components/molecules/file-input/file-input.component.mjs +3 -3
- package/esm2022/lib/components/molecules/glow-card/glow-card.component.mjs +4 -4
- package/esm2022/lib/components/molecules/hint/hint.component.mjs +3 -3
- package/esm2022/lib/components/molecules/layered-card/layered-card.component.mjs +3 -3
- package/esm2022/lib/components/molecules/link/link.component.mjs +3 -3
- package/esm2022/lib/components/molecules/links-cake/links-cake.component.mjs +3 -3
- package/esm2022/lib/components/molecules/notes-box/notes-box.component.mjs +3 -3
- package/esm2022/lib/components/molecules/number-stepper/number-stepper.component.mjs +3 -3
- package/esm2022/lib/components/molecules/password-input/password-input.component.mjs +3 -3
- package/esm2022/lib/components/molecules/permission-selector/permission-selector.component.mjs +3 -3
- package/esm2022/lib/components/molecules/pill/pill.component.mjs +3 -3
- package/esm2022/lib/components/molecules/pin-input/pin-input.component.mjs +3 -3
- package/esm2022/lib/components/molecules/popover-selector/popover-selector.component.mjs +3 -3
- package/esm2022/lib/components/molecules/progress-status/progress-status.component.mjs +3 -3
- package/esm2022/lib/components/molecules/prompter/prompter.component.mjs +3 -3
- package/esm2022/lib/components/molecules/rating/rating.component.mjs +3 -3
- package/esm2022/lib/components/molecules/searchbar/searchbar.component.mjs +3 -3
- package/esm2022/lib/components/molecules/section-header/section-header.component.mjs +3 -3
- package/esm2022/lib/components/molecules/select-input/select-input.component.mjs +3 -3
- package/esm2022/lib/components/molecules/stats-card/stats-card.component.mjs +3 -3
- package/esm2022/lib/components/molecules/stepper/stepper.component.mjs +4 -4
- package/esm2022/lib/components/molecules/swipe-carousel/swipe-carousel.component.mjs +3 -3
- package/esm2022/lib/components/molecules/text-input/text-input.component.mjs +3 -3
- package/esm2022/lib/components/molecules/ticket-card/ticket-card.component.mjs +3 -3
- package/esm2022/lib/components/molecules/title-block/title-block.component.mjs +3 -3
- package/esm2022/lib/components/molecules/typing-indicator/typing-indicator.component.mjs +3 -3
- package/esm2022/lib/components/organisms/article/article.component.mjs +3 -3
- package/esm2022/lib/components/organisms/banner/banner.component.mjs +3 -3
- package/esm2022/lib/components/organisms/bottom-nav/bottom-nav.component.mjs +3 -3
- package/esm2022/lib/components/organisms/comment-section/comment-section.component.mjs +3 -3
- package/esm2022/lib/components/organisms/confirmation-dialog-v2/confirmation-dialog-v2.component.mjs +3 -3
- package/esm2022/lib/components/organisms/cookie-settings/cookie-settings.component.mjs +3 -3
- package/esm2022/lib/components/organisms/data-table/data-table.component.mjs +3 -3
- package/esm2022/lib/components/organisms/docs-sidebar/docs-sidebar.component.mjs +3 -3
- package/esm2022/lib/components/organisms/folder-tabs/folder-tabs.component.mjs +3 -3
- package/esm2022/lib/components/organisms/form/form.component.mjs +3 -3
- package/esm2022/lib/components/organisms/fun-header/fun-header.component.mjs +3 -3
- package/esm2022/lib/components/organisms/header/header.component.mjs +3 -3
- package/esm2022/lib/components/organisms/invite-member-modal/invite-member-modal.component.mjs +3 -3
- package/esm2022/lib/components/organisms/item-list/item-list.component.mjs +3 -3
- package/esm2022/lib/components/organisms/login/login.component.mjs +3 -3
- package/esm2022/lib/components/organisms/member-detail-modal/member-detail-modal.component.mjs +3 -3
- package/esm2022/lib/components/organisms/member-import-modal/member-import-modal.component.mjs +3 -3
- package/esm2022/lib/components/organisms/mfa-modal/mfa-modal.component.mjs +3 -3
- package/esm2022/lib/components/organisms/mini-games/bubble-blitz-game.component.mjs +3 -3
- package/esm2022/lib/components/organisms/mini-games/memory-game.component.mjs +3 -3
- package/esm2022/lib/components/organisms/mini-games/simon-game.component.mjs +3 -3
- package/esm2022/lib/components/organisms/no-content/no-content.component.mjs +3 -3
- package/esm2022/lib/components/organisms/option-sheet/option-sheet.component.mjs +3 -3
- package/esm2022/lib/components/organisms/permissions-view/permissions-view.component.mjs +3 -3
- package/esm2022/lib/components/organisms/request-review-panel/request-review-panel.component.mjs +3 -3
- package/esm2022/lib/components/organisms/role-manager/role-manager.component.mjs +3 -3
- package/esm2022/lib/components/organisms/rotating-text/rotating-text.component.mjs +3 -3
- package/esm2022/lib/components/organisms/toolbar/toolbar.component.mjs +3 -3
- package/esm2022/lib/components/organisms/wizard/wizard.component.mjs +3 -3
- package/esm2022/lib/components/templates/docs-layout/docs-layout.component.mjs +3 -3
- package/esm2022/lib/components/templates/simple/simple.component.mjs +3 -3
- package/esm2022/lib/version.mjs +2 -2
- package/fesm2022/valtech-components.mjs +174 -174
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
- package/src/lib/components/styles/overrides.scss +4 -4
- package/src/lib/components/styles/variables.scss +6 -6
|
@@ -202,7 +202,7 @@ export class FolderTabsComponent {
|
|
|
202
202
|
}
|
|
203
203
|
</div>
|
|
204
204
|
</div>
|
|
205
|
-
`, isInline: true, styles: [":host{display:block;--_rail: var(--val-folder-tabs-rail, var(--ion-color-light, #f1f1f4));--_surface: var(--val-folder-tabs-surface, var(--ion-card-background, var(--ion-background-color, #fff)));--_ink: var(--val-folder-tabs-ink, var(--ion-text-color, #1e1926));--_ink-idle: var(--val-folder-tabs-ink-idle, var(--ion-color-
|
|
205
|
+
`, isInline: true, styles: [":host{display:block;--_rail: var(--val-folder-tabs-rail, var(--ion-color-light, #f1f1f4));--_surface: var(--val-folder-tabs-surface, var(--ion-card-background, var(--ion-background-color, #fff)));--_ink: var(--val-folder-tabs-ink, var(--ion-text-color, #1e1926));--_ink-idle: var(--val-folder-tabs-ink-idle, var(--ion-color-medium, #6e6579));--_r: var(--val-folder-tabs-radius, 20px);--_n: var(--val-folder-tabs-notch, 16px)}.val-folder-tabs{background:var(--_rail);border-radius:var(--_r);overflow:hidden}.val-folder-tabs__rail{position:relative;display:flex;padding:0 calc(var(--_r) + var(--_n));overflow-x:auto;scrollbar-width:none}.val-folder-tabs__rail::-webkit-scrollbar{display:none}.val-folder-tabs__flap{position:absolute;bottom:0;left:0;height:100%;width:var(--flap-w, 0px);transform:translate(var(--flap-x, 0px));background:var(--_surface);border-radius:var(--_r) var(--_r) 0 0;pointer-events:none;z-index:0;transition:transform .42s cubic-bezier(.65,0,.35,1),width .42s cubic-bezier(.65,0,.35,1)}.val-folder-tabs--no-anim .val-folder-tabs__flap{transition:none}.val-folder-tabs__flap:before,.val-folder-tabs__flap:after{content:\"\";position:absolute;bottom:0;width:var(--_n);height:var(--_n);background:transparent}.val-folder-tabs__flap:before{left:calc(var(--_n) * -1);border-bottom-right-radius:50%;box-shadow:calc(var(--_n) / 2) calc(var(--_n) / 2) 0 calc(var(--_n) / 2) var(--_surface)}.val-folder-tabs__flap:after{right:calc(var(--_n) * -1);border-bottom-left-radius:50%;box-shadow:calc(var(--_n) / -2) calc(var(--_n) / 2) 0 calc(var(--_n) / 2) var(--_surface)}.val-folder-tabs__tab{position:relative;flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;border:0;background:transparent;font:inherit;font-weight:600;font-size:1rem;color:var(--_ink-idle);padding:1rem 1.35rem;cursor:pointer;z-index:1;transition:color .26s ease}.val-folder-tabs__tab:hover:not([disabled]){color:var(--_ink)}.val-folder-tabs__tab[aria-selected=true]{color:var(--_ink)}.val-folder-tabs__tab[disabled]{opacity:.45;cursor:not-allowed}.val-folder-tabs__tab:focus-visible{outline:2px solid var(--_ink);outline-offset:-4px;border-radius:8px}.val-folder-tabs__badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;height:1.25rem;padding:0 .35rem;border-radius:100px;background:var(--ion-color-danger, #eb445a);color:var(--ion-color-danger-contrast, #fff);font-size:.7rem;font-weight:700;font-variant-numeric:tabular-nums}.val-folder-tabs__body{position:relative;background:var(--_surface);border-radius:var(--_r);padding:1.5rem;z-index:2}@media (prefers-reduced-motion: reduce){.val-folder-tabs__flap,.val-folder-tabs__tab{transition:none}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
206
206
|
}
|
|
207
207
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FolderTabsComponent, decorators: [{
|
|
208
208
|
type: Component,
|
|
@@ -246,7 +246,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
246
246
|
}
|
|
247
247
|
</div>
|
|
248
248
|
</div>
|
|
249
|
-
`, styles: [":host{display:block;--_rail: var(--val-folder-tabs-rail, var(--ion-color-light, #f1f1f4));--_surface: var(--val-folder-tabs-surface, var(--ion-card-background, var(--ion-background-color, #fff)));--_ink: var(--val-folder-tabs-ink, var(--ion-text-color, #1e1926));--_ink-idle: var(--val-folder-tabs-ink-idle, var(--ion-color-
|
|
249
|
+
`, styles: [":host{display:block;--_rail: var(--val-folder-tabs-rail, var(--ion-color-light, #f1f1f4));--_surface: var(--val-folder-tabs-surface, var(--ion-card-background, var(--ion-background-color, #fff)));--_ink: var(--val-folder-tabs-ink, var(--ion-text-color, #1e1926));--_ink-idle: var(--val-folder-tabs-ink-idle, var(--ion-color-medium, #6e6579));--_r: var(--val-folder-tabs-radius, 20px);--_n: var(--val-folder-tabs-notch, 16px)}.val-folder-tabs{background:var(--_rail);border-radius:var(--_r);overflow:hidden}.val-folder-tabs__rail{position:relative;display:flex;padding:0 calc(var(--_r) + var(--_n));overflow-x:auto;scrollbar-width:none}.val-folder-tabs__rail::-webkit-scrollbar{display:none}.val-folder-tabs__flap{position:absolute;bottom:0;left:0;height:100%;width:var(--flap-w, 0px);transform:translate(var(--flap-x, 0px));background:var(--_surface);border-radius:var(--_r) var(--_r) 0 0;pointer-events:none;z-index:0;transition:transform .42s cubic-bezier(.65,0,.35,1),width .42s cubic-bezier(.65,0,.35,1)}.val-folder-tabs--no-anim .val-folder-tabs__flap{transition:none}.val-folder-tabs__flap:before,.val-folder-tabs__flap:after{content:\"\";position:absolute;bottom:0;width:var(--_n);height:var(--_n);background:transparent}.val-folder-tabs__flap:before{left:calc(var(--_n) * -1);border-bottom-right-radius:50%;box-shadow:calc(var(--_n) / 2) calc(var(--_n) / 2) 0 calc(var(--_n) / 2) var(--_surface)}.val-folder-tabs__flap:after{right:calc(var(--_n) * -1);border-bottom-left-radius:50%;box-shadow:calc(var(--_n) / -2) calc(var(--_n) / 2) 0 calc(var(--_n) / 2) var(--_surface)}.val-folder-tabs__tab{position:relative;flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;border:0;background:transparent;font:inherit;font-weight:600;font-size:1rem;color:var(--_ink-idle);padding:1rem 1.35rem;cursor:pointer;z-index:1;transition:color .26s ease}.val-folder-tabs__tab:hover:not([disabled]){color:var(--_ink)}.val-folder-tabs__tab[aria-selected=true]{color:var(--_ink)}.val-folder-tabs__tab[disabled]{opacity:.45;cursor:not-allowed}.val-folder-tabs__tab:focus-visible{outline:2px solid var(--_ink);outline-offset:-4px;border-radius:8px}.val-folder-tabs__badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;height:1.25rem;padding:0 .35rem;border-radius:100px;background:var(--ion-color-danger, #eb445a);color:var(--ion-color-danger-contrast, #fff);font-size:.7rem;font-weight:700;font-variant-numeric:tabular-nums}.val-folder-tabs__body{position:relative;background:var(--_surface);border-radius:var(--_r);padding:1.5rem;z-index:2}@media (prefers-reduced-motion: reduce){.val-folder-tabs__flap,.val-folder-tabs__tab{transition:none}}\n"] }]
|
|
250
250
|
}], ctorParameters: () => [], propDecorators: { props: [{
|
|
251
251
|
type: Input,
|
|
252
252
|
args: [{ required: true }]
|
|
@@ -256,4 +256,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
256
256
|
type: ViewChild,
|
|
257
257
|
args: ['rail']
|
|
258
258
|
}] } });
|
|
259
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9sZGVyLXRhYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9mb2xkZXItdGFicy9mb2xkZXItdGFicy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7OztBQUd2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUNHO0FBeU1ILE1BQU0sT0FBTyxtQkFBbUI7SUFHOUI7Ozs7T0FJRztJQUNILElBQ0ksS0FBSyxDQUFDLEtBQXlCO1FBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFDRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBc0NEO1FBbkRpQixhQUFRLEdBQUcsTUFBTSxDQUFxQixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBZXJFLDhDQUE4QztRQUNwQyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUloQyxrQkFBYSxHQUFHLE1BQU0sQ0FBZ0IsSUFBSSxDQUFDLENBQUM7UUFDMUMsbUJBQWMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFakMsZUFBVSxHQUFHLG1CQUFtQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUUxRjs7OztXQUlHO1FBQ2dCLGdCQUFXLEdBQUcsUUFBUSxDQUFnQixHQUFHLEVBQUU7WUFDNUQsTUFBTSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDOUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBRS9CLE1BQU0sTUFBTSxHQUFHLENBQUMsS0FBZ0MsRUFBRSxFQUFFLENBQ2xELENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXBFLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQztnQkFBRSxPQUFPLFdBQVksQ0FBQztZQUM3QyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQUUsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDOUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztRQUVnQixjQUFTLEdBQUcsUUFBUSxDQUFtQixHQUFHLEVBQUU7WUFDN0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pDLE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQztRQUN4RSxDQUFDLENBQUMsQ0FBQztRQUVnQixnQkFBVyxHQUFHLFFBQVEsQ0FDdkMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUNyRixDQUFDO1FBR0EsNkVBQTZFO1FBQzdFLDJFQUEyRTtRQUMzRSxvQkFBb0I7UUFDcEIsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDO1lBQ3JCLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLHdFQUF3RTtRQUN4RSw4REFBOEQ7UUFDOUQsY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFcEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUM7UUFDekMsSUFBSSxJQUFJLElBQUksT0FBTyxjQUFjLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDbEQsd0VBQXdFO1lBQ3hFLHFFQUFxRTtZQUNyRSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1lBQ2pFLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxjQUFjLEVBQUUsVUFBVSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVTLE1BQU0sQ0FBQyxHQUFjO1FBQzdCLElBQUksR0FBRyxDQUFDLFFBQVEsSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFBRSxPQUFPO1FBQzdELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVTLFNBQVMsQ0FBQyxLQUFvQixFQUFFLEtBQWE7UUFDckQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTztRQUV6QixNQUFNLElBQUksR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQzdCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FDMUQsdUNBQXVDLENBQ3hDLENBQUM7WUFDRixJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU07Z0JBQUUsT0FBTztZQUM3QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2pDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzFELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU8sR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDaEIsQ0FBQyxDQUFDO1FBRUYsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLFlBQVk7WUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEMsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLFdBQVc7WUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDekIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLGFBQWEsQ0FBb0IsdUNBQXVDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNqSCxDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQy9DLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDeEIsSUFBSSxHQUFHO2dCQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7SUFFUyxPQUFPLENBQUMsR0FBYztRQUM5QixPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxTQUFTO1FBQ2YsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUM7UUFDekMsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPO1FBRWxCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQWMsNkNBQTZDLENBQUMsQ0FBQztRQUM5RixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFjLHdCQUF3QixDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPO1FBRTdCLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUM7UUFDL0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLEdBQUcsTUFBTSxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUM7SUFDaEUsQ0FBQzsrR0F4SVUsbUJBQW1CO21HQUFuQixtQkFBbUIsNk9Bbk1wQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdDVCx5ckZBMUNTLFlBQVk7OzRGQXFNWCxtQkFBbUI7a0JBeE0vQixTQUFTOytCQUNFLGlCQUFpQixjQUNmLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxtQkFDTix1QkFBdUIsQ0FBQyxNQUFNLFlBQ3JDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0NUO3dEQW9LRyxLQUFLO3NCQURSLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQVNmLFNBQVM7c0JBQWxCLE1BQU07Z0JBRW9CLE9BQU87c0JBQWpDLFNBQVM7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBzaWduYWwsXG4gIHVudHJhY2tlZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb2xkZXJUYWIsIEZvbGRlclRhYnNDb250ZXh0LCBGb2xkZXJUYWJzTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiB2YWwtZm9sZGVyLXRhYnNcbiAqXG4gKiBQZXN0YcOxYXMgZG9uZGUgbGEgYWN0aXZhIHNlIGZ1bmRlIGNvbiBlbCBjdWVycG8sIGNvbW8gbGEgbGVuZ8O8ZXRhIGRlIHVuYVxuICogY2FycGV0YS4gTGEgbGVuZ8O8ZXRhIGVzIFVOIHNvbG8gZWxlbWVudG8gcXVlIHNlIGRlc3BsYXphIGVudHJlIHBvc2ljaW9uZXMsIG5vXG4gKiBlbCBmb25kbyBkZSBjYWRhIGJvdMOzbjogZWwgY2FtYmlvIHNlIGxlZSBjb21vIHVuIG1vdmltaWVudG8geSBubyBjb21vIHVuXG4gKiBlbmNlbmRpZG8uXG4gKlxuICogQ3XDoW5kbyB1c2FyIGVzdGUgeSBubyBsb3Mgb3Ryb3MgZG9zIGNvbXBvbmVudGVzIGRlIHBlc3Rhw7FhcyBkZSBsYSBsaWJyZXLDrWE6XG4gKiAtIGB2YWwtc2VnbWVudC1jb250cm9sYCDigJQgY29ubXV0YXIgdW4gZmlsdHJvLCBzaW4gY29udGVuZWRvciBwcm9waW8uXG4gKiAtIGB2YWwtdGFiYmVkLWNvbnRlbnRgIOKAlCBuYXZlZ2FjacOzbiB0aXBvIHNlZ21lbnRvIHNvYnJlIHBhbmVsZXMuXG4gKiAtIGB2YWwtZm9sZGVyLXRhYnNgIOKAlCBjdWFuZG8gbGFzIHBlc3Rhw7FhcyBDT05USUVORU4gYSBzdSBjb250ZW5pZG8geSBlbFxuICogICBjb25qdW50byBzZSBsZWUgY29tbyB1bmEgc29sYSBwaWV6YSAodW5hIGNhcmQgY29uIHNlY2Npb25lcykuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxuZy10ZW1wbGF0ZSAjc2FsZG8+4oCmPC9uZy10ZW1wbGF0ZT5cbiAqIDxuZy10ZW1wbGF0ZSAjcmVzZXJ2YXM+4oCmPC9uZy10ZW1wbGF0ZT5cbiAqXG4gKiA8dmFsLWZvbGRlci10YWJzXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgdGFiczogW1xuICogICAgICAgeyB2YWx1ZTogJ3NhbGRvJywgbGFiZWw6IHQoJ3NhbGRvJyksIHRlbXBsYXRlOiBzYWxkbyB9LFxuICogICAgICAgeyB2YWx1ZTogJ3Jlc2VydmFzJywgbGFiZWw6IHQoJ3Jlc2VydmFzJyksIGJhZGdlOiAzLCB0ZW1wbGF0ZTogcmVzZXJ2YXMgfVxuICogICAgIF0sXG4gKiAgICAgc2VsZWN0ZWRUYWI6IGFjdGl2ZVRhYigpLFxuICogICAgIGFyaWFMYWJlbDogdCgnc2VjY2lvbmVzRGVMYUN1ZW50YScpXG4gKiAgIH1cIlxuICogICAodGFiQ2hhbmdlKT1cIm9uVGFiKCRldmVudClcIlxuICogLz5cbiAqIGBgYFxuICpcbiAqIElkZW50aWRhZCB2aXN1YWw6IG5vIHRyYWUgcGFsZXRhIHByb3BpYSwgbGVlIGN1YXRybyBjdXN0b20gcHJvcGVydGllcy4gRWxcbiAqIGNvbnN1bWVyIGxhcyByZWRlZmluZSBzb2JyZSBlbCBob3N0IHkgZWwgY29tcG9uZW50ZSBjYW1iaWEgZGUgaWRlbnRpZGFkIHNpblxuICogdG9jYXIgc3UgQ1NTOlxuICogICAtLXZhbC1mb2xkZXItdGFicy1yYWlsICAgICBjb2xvciBkZSBsYSBiYXJyYVxuICogICAtLXZhbC1mb2xkZXItdGFicy1zdXJmYWNlICBjb2xvciBkZWwgY3VlcnBvIHkgZGUgbGEgbGVuZ8O8ZXRhXG4gKiAgIC0tdmFsLWZvbGRlci10YWJzLXJhZGl1cyAgIHJhZGlvIGRlbCBjb250ZW5lZG9yXG4gKiAgIC0tdmFsLWZvbGRlci10YWJzLW5vdGNoICAgIHRhbWHDsW8gZGUgbGEgY3VydmEgcXVlIHVuZSBsZW5nw7xldGEgeSBjdWVycG9cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWZvbGRlci10YWJzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJ2YWwtZm9sZGVyLXRhYnNcIiBbY2xhc3MudmFsLWZvbGRlci10YWJzLS1uby1hbmltXT1cIiFhbmltYXRpb25SZWFkeSgpXCI+XG4gICAgICA8ZGl2ICNyYWlsIGNsYXNzPVwidmFsLWZvbGRlci10YWJzX19yYWlsXCIgcm9sZT1cInRhYmxpc3RcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInByb3BzLmFyaWFMYWJlbCB8fCBudWxsXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidmFsLWZvbGRlci10YWJzX19mbGFwXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuXG4gICAgICAgIEBmb3IgKHRhYiBvZiBwcm9wcy50YWJzOyB0cmFjayB0YWIudmFsdWU7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgI3RhYkJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICByb2xlPVwidGFiXCJcbiAgICAgICAgICAgIGNsYXNzPVwidmFsLWZvbGRlci10YWJzX190YWJcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJ0YWIudmFsdWUgPT09IGFjdGl2ZVZhbHVlKClcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJwYW5lbElkKHRhYilcIlxuICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwidGFiLnZhbHVlID09PSBhY3RpdmVWYWx1ZSgpID8gMCA6IC0xXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0YWIuZGlzYWJsZWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdCh0YWIpXCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQsIGkpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyB0YWIubGFiZWwgfX1cbiAgICAgICAgICAgIEBpZiAodGFiLmJhZGdlKSB7XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsLWZvbGRlci10YWJzX19iYWRnZVwiPnt7IHRhYi5iYWRnZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2YWwtZm9sZGVyLXRhYnNfX2JvZHlcIj5cbiAgICAgICAgQGlmIChhY3RpdmVUYWIoKTsgYXMgdGFiKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZhbC1mb2xkZXItdGFic19fcGFuZWxcIiByb2xlPVwidGFicGFuZWxcIiBbaWRdPVwicGFuZWxJZCh0YWIpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0YWIubGFiZWxcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICB0YWIudGVtcGxhdGUgfHwgbnVsbDtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogdGFiLnZhbHVlLCB0YWI6IHRhYiwgaW5kZXg6IGFjdGl2ZUluZGV4KCkgfVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgICAgIC0tX3JhaWw6IHZhcigtLXZhbC1mb2xkZXItdGFicy1yYWlsLCB2YXIoLS1pb24tY29sb3ItbGlnaHQsICNmMWYxZjQpKTtcbiAgICAgICAgLS1fc3VyZmFjZTogdmFyKC0tdmFsLWZvbGRlci10YWJzLXN1cmZhY2UsIHZhcigtLWlvbi1jYXJkLWJhY2tncm91bmQsIHZhcigtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yLCAjZmZmKSkpO1xuICAgICAgICAtLV9pbms6IHZhcigtLXZhbC1mb2xkZXItdGFicy1pbmssIHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjMWUxOTI2KSk7XG4gICAgICAgIC0tX2luay1pZGxlOiB2YXIoLS12YWwtZm9sZGVyLXRhYnMtaW5rLWlkbGUsIHZhcigtLWlvbi1jb2xvci1kYXJrLCAjNmU2NTc5KSk7XG4gICAgICAgIC0tX3I6IHZhcigtLXZhbC1mb2xkZXItdGFicy1yYWRpdXMsIDIwcHgpO1xuICAgICAgICAtLV9uOiB2YXIoLS12YWwtZm9sZGVyLXRhYnMtbm90Y2gsIDE2cHgpO1xuICAgICAgfVxuXG4gICAgICAudmFsLWZvbGRlci10YWJzIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tX3JhaWwpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1fcik7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB9XG5cbiAgICAgIC52YWwtZm9sZGVyLXRhYnNfX3JhaWwge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIC8qIFNhbmdyaWEgPSByYWRpbyBkZWwgY29udGVuZWRvciArIGN1cnZhIGRlIGxhIGxlbmd1ZXN0YS5cbiAgICAgICAgICAgRXMgZ2VvbWV0cmlhLCBubyBndXN0bzogbGEgY3VydmEgY29uY2F2YSBzZSBleHRpZW5kZSBcXGBub3RjaFxcYCBweCBoYWNpYVxuICAgICAgICAgICBhZnVlcmEgeSBlbCBjb250ZW5lZG9yIHlhIHZpZW5lIGN1cnZhbmRvIGR1cmFudGUgc3VzIHByaW1lcm9zXG4gICAgICAgICAgIFxcYHJhZGl1c1xcYCBweC4gQ29uIG1lbm9zIHNhbmdyaWEgbGFzIGRvcyBjdXJ2YXMgc2UgZW5jdWVudHJhbiB5IGRlamFuIHVuXG4gICAgICAgICAgIHBpY28gcXVlIGNvcnRhIGVsIGJvcmRlIGRlbCBjb21wb25lbnRlLiAqL1xuICAgICAgICBwYWRkaW5nOiAwIGNhbGModmFyKC0tX3IpICsgdmFyKC0tX24pKTtcbiAgICAgICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICAgICAgc2Nyb2xsYmFyLXdpZHRoOiBub25lO1xuICAgICAgfVxuXG4gICAgICAudmFsLWZvbGRlci10YWJzX19yYWlsOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC8qIExhIGxlbmd1ZXN0YTogVU4gc29sbyBlbGVtZW50byBxdWUgc2UgZGVzcGxhemEuIFNpIGNhZGEgYm90b24gc2UgcGludGFyYVxuICAgICAgICAgYWwgYWN0aXZhcnNlLCBlbCBjYW1iaW8gc2VyaWEgaW5zdGFudGFuZW8geSBsYSBwZXN0YW5hIFwic2FsdGFyaWFcIi4gKi9cbiAgICAgIC52YWwtZm9sZGVyLXRhYnNfX2ZsYXAge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB3aWR0aDogdmFyKC0tZmxhcC13LCAwcHgpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgodmFyKC0tZmxhcC14LCAwcHgpKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tX3N1cmZhY2UpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1fcikgdmFyKC0tX3IpIDAgMDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHotaW5kZXg6IDA7XG4gICAgICAgIHRyYW5zaXRpb246XG4gICAgICAgICAgdHJhbnNmb3JtIDQyMG1zIGN1YmljLWJlemllcigwLjY1LCAwLCAwLjM1LCAxKSxcbiAgICAgICAgICB3aWR0aCA0MjBtcyBjdWJpYy1iZXppZXIoMC42NSwgMCwgMC4zNSwgMSk7XG4gICAgICB9XG5cbiAgICAgIC8qIEFsIG1vbnRhciBubyBkZWJlIGRlc2xpemFyc2UgZGVzZGUgbGEgZXNxdWluYS4gKi9cbiAgICAgIC52YWwtZm9sZGVyLXRhYnMtLW5vLWFuaW0gLnZhbC1mb2xkZXItdGFic19fZmxhcCB7XG4gICAgICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC8qIExhcyBjdXJ2YXMgdmlhamFuIGNvbiBsYSBsZW5ndWVzdGEuIENhZGEgdW5hIGVzIHVuIGN1YWRyYWRvIHRyYW5zcGFyZW50ZVxuICAgICAgICAgY29uIGJvcmRlci1yYWRpdXMgNTAlIHkgdW5hIHNvbWJyYSBzb2xpZGEgZGVzcGxhemFkYTogbGEgc29tYnJhIHBpbnRhXG4gICAgICAgICBzb2xvIGVsIGFyZWEgcG9yIGZ1ZXJhIGRlbCBjaXJjdWxvLCBxdWUgZXMgbGEgY3VydmEgaW52ZXJzYS4gKi9cbiAgICAgIC52YWwtZm9sZGVyLXRhYnNfX2ZsYXA6OmJlZm9yZSxcbiAgICAgIC52YWwtZm9sZGVyLXRhYnNfX2ZsYXA6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICB3aWR0aDogdmFyKC0tX24pO1xuICAgICAgICBoZWlnaHQ6IHZhcigtLV9uKTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICB9XG5cbiAgICAgIC52YWwtZm9sZGVyLXRhYnNfX2ZsYXA6OmJlZm9yZSB7XG4gICAgICAgIGxlZnQ6IGNhbGModmFyKC0tX24pICogLTEpO1xuICAgICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNTAlO1xuICAgICAgICBib3gtc2hhZG93OiBjYWxjKHZhcigtLV9uKSAvIDIpIGNhbGModmFyKC0tX24pIC8gMikgMCBjYWxjKHZhcigtLV9uKSAvIDIpIHZhcigtLV9zdXJmYWNlKTtcbiAgICAgIH1cblxuICAgICAgLnZhbC1mb2xkZXItdGFic19fZmxhcDo6YWZ0ZXIge1xuICAgICAgICByaWdodDogY2FsYyh2YXIoLS1fbikgKiAtMSk7XG4gICAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDUwJTtcbiAgICAgICAgYm94LXNoYWRvdzogY2FsYyh2YXIoLS1fbikgLyAtMikgY2FsYyh2YXIoLS1fbikgLyAyKSAwIGNhbGModmFyKC0tX24pIC8gMikgdmFyKC0tX3N1cmZhY2UpO1xuICAgICAgfVxuXG4gICAgICAudmFsLWZvbGRlci10YWJzX190YWIge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLV9pbmstaWRsZSk7XG4gICAgICAgIHBhZGRpbmc6IDFyZW0gMS4zNXJlbTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAvKiBTb2JyZSBsYSBsZW5ndWVzdGE6IGVsIHRleHRvIG5vIGRlYmUgdGFwYXJzZSBtaWVudHJhcyBlbGxhIHBhc2EuICovXG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIHRyYW5zaXRpb246IGNvbG9yIDI2MG1zIGVhc2U7XG4gICAgICB9XG5cbiAgICAgIC52YWwtZm9sZGVyLXRhYnNfX3RhYjpob3Zlcjpub3QoW2Rpc2FibGVkXSkge1xuICAgICAgICBjb2xvcjogdmFyKC0tX2luayk7XG4gICAgICB9XG5cbiAgICAgIC52YWwtZm9sZGVyLXRhYnNfX3RhYlthcmlhLXNlbGVjdGVkPSd0cnVlJ10ge1xuICAgICAgICBjb2xvcjogdmFyKC0tX2luayk7XG4gICAgICB9XG5cbiAgICAgIC52YWwtZm9sZGVyLXRhYnNfX3RhYltkaXNhYmxlZF0ge1xuICAgICAgICBvcGFjaXR5OiAwLjQ1O1xuICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgICAgfVxuXG4gICAgICAudmFsLWZvbGRlci10YWJzX190YWI6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS1faW5rKTtcbiAgICAgICAgb3V0bGluZS1vZmZzZXQ6IC00cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgIH1cblxuICAgICAgLnZhbC1mb2xkZXItdGFic19fYmFkZ2Uge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMS4yNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxLjI1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwIDAuMzVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEwMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLCAjZWI0NDVhKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXItY29udHJhc3QsICNmZmYpO1xuICAgICAgICBmb250LXNpemU6IDAuN3JlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbiAgICAgIH1cblxuICAgICAgLnZhbC1mb2xkZXItdGFic19fYm9keSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tX3N1cmZhY2UpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1fcik7XG4gICAgICAgIHBhZGRpbmc6IDEuNXJlbTtcbiAgICAgICAgei1pbmRleDogMjtcbiAgICAgIH1cblxuICAgICAgQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgICAgICAgLnZhbC1mb2xkZXItdGFic19fZmxhcCxcbiAgICAgICAgLnZhbC1mb2xkZXItdGFic19fdGFiIHtcbiAgICAgICAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9sZGVyVGFic0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvcHNTaWcgPSBzaWduYWw8Rm9sZGVyVGFic01ldGFkYXRhPih7IHRhYnM6IFtdIH0pO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmFjacOzbi4gRXMgdW4gc2lnbmFsIGNvbiBzZXR0ZXIgKG5vIHVuIGNhbXBvIHBsYW5vKSBwb3JxdWUgZGUgw6lsXG4gICAqIGRlcGVuZGVuIGNvbXB1dGVkcyB5IGVsIHJlcG9zaWNpb25hbWllbnRvIGRlIGxhIGxlbmfDvGV0YTogY29uIHVuIGNhbXBvXG4gICAqIHBsYW5vLCB1bmEgcmVhc2lnbmFjacOzbiBubyBkaXNwYXJhcsOtYSBuaW5ndW5vIGRlIGxvcyBkb3MuXG4gICAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBzZXQgcHJvcHModmFsdWU6IEZvbGRlclRhYnNNZXRhZGF0YSkge1xuICAgIHRoaXMucHJvcHNTaWcuc2V0KHZhbHVlID8/IHsgdGFiczogW10gfSk7XG4gIH1cbiAgZ2V0IHByb3BzKCk6IEZvbGRlclRhYnNNZXRhZGF0YSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHNTaWcoKTtcbiAgfVxuXG4gIC8qKiBFbWl0ZSBlbCBgdmFsdWVgIGRlIGxhIHBlc3Rhw7FhIGVsZWdpZGEuICovXG4gIEBPdXRwdXQoKSB0YWJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBAVmlld0NoaWxkKCdyYWlsJykgcHJpdmF0ZSByYWlsUmVmPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpbnRlcm5hbFZhbHVlID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYW5pbWF0aW9uUmVhZHkgPSBzaWduYWwoZmFsc2UpO1xuICBwcml2YXRlIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW5zdGFuY2VJZCA9IGB2YWwtZm9sZGVyLXRhYnMtJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLCA5KX1gO1xuXG4gIC8qKlxuICAgKiBQZXN0YcOxYSBhY3RpdmEuIGBzZWxlY3RlZFRhYmAgZ2FuYSBjdWFuZG8gZWwgY29uc3VtZXIgbGEgcGFzYSAobW9kb1xuICAgKiBjb250cm9sYWRvKTsgc2kgbm8sIG1hbmRhIGxhIHNlbGVjY2nDs24gaW50ZXJuYTsgeSBzaSBuaW5ndW5hIHJlc3VlbHZlLCBsYVxuICAgKiBwcmltZXJhIGhhYmlsaXRhZGEuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWN0aXZlVmFsdWUgPSBjb21wdXRlZDxzdHJpbmcgfCBudWxsPigoKSA9PiB7XG4gICAgY29uc3QgeyB0YWJzLCBzZWxlY3RlZFRhYiB9ID0gdGhpcy5wcm9wc1NpZygpO1xuICAgIGlmICghdGFicz8ubGVuZ3RoKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IGV4aXN0cyA9ICh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkgPT5cbiAgICAgICEhdmFsdWUgJiYgdGFicy5zb21lKHRhYiA9PiB0YWIudmFsdWUgPT09IHZhbHVlICYmICF0YWIuZGlzYWJsZWQpO1xuXG4gICAgaWYgKGV4aXN0cyhzZWxlY3RlZFRhYikpIHJldHVybiBzZWxlY3RlZFRhYiE7XG4gICAgaWYgKGV4aXN0cyh0aGlzLmludGVybmFsVmFsdWUoKSkpIHJldHVybiB0aGlzLmludGVybmFsVmFsdWUoKTtcbiAgICByZXR1cm4gdGFicy5maW5kKHRhYiA9PiAhdGFiLmRpc2FibGVkKT8udmFsdWUgPz8gbnVsbDtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFjdGl2ZVRhYiA9IGNvbXB1dGVkPEZvbGRlclRhYiB8IG51bGw+KCgpID0+IHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuYWN0aXZlVmFsdWUoKTtcbiAgICByZXR1cm4gdGhpcy5wcm9wc1NpZygpLnRhYnM/LmZpbmQodGFiID0+IHRhYi52YWx1ZSA9PT0gdmFsdWUpID8/IG51bGw7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBhY3RpdmVJbmRleCA9IGNvbXB1dGVkPG51bWJlcj4oXG4gICAgKCkgPT4gdGhpcy5wcm9wc1NpZygpLnRhYnM/LmZpbmRJbmRleCh0YWIgPT4gdGFiLnZhbHVlID09PSB0aGlzLmFjdGl2ZVZhbHVlKCkpID8/IC0xXG4gICk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gUmVwb3NpY2lvbmEgY3VhbmRvIGNhbWJpYSBsYSBwZXN0YcOxYSBhY3RpdmEgbyBsYSBsaXN0YS4gTGVlciBhbWJvcyBzaWduYWxzXG4gICAgLy8gYWPDoSBlcyBsbyBxdWUgYXRhIGxhIGxlbmfDvGV0YSBhbCBlc3RhZG86IHNpbiBlc3RvIHF1ZWRhcsOtYSBkb25kZSBsYSBkZWrDs1xuICAgIC8vIGVsIHByaW1lciByZW5kZXIuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIHRoaXMuYWN0aXZlVmFsdWUoKTtcbiAgICAgIHRoaXMucHJvcHNTaWcoKS50YWJzO1xuICAgICAgdW50cmFja2VkKCgpID0+IHF1ZXVlTWljcm90YXNrKCgpID0+IHRoaXMucGxhY2VGbGFwKCkpKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnBsYWNlRmxhcCgpO1xuICAgIC8vIExhIHRyYW5zaWNpw7NuIHNlIGhhYmlsaXRhIERFU1BVw4lTIGRlIGxhIHByaW1lcmEgY29sb2NhY2nDs246IHNpIG5vLCBsYVxuICAgIC8vIGxlbmfDvGV0YSBlbnRyYSBkZXNsaXrDoW5kb3NlIGRlc2RlIGxhIGVzcXVpbmEgZW4gY2FkYSBjYXJnYS5cbiAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB0aGlzLmFuaW1hdGlvblJlYWR5LnNldCh0cnVlKSk7XG5cbiAgICBjb25zdCByYWlsID0gdGhpcy5yYWlsUmVmPy5uYXRpdmVFbGVtZW50O1xuICAgIGlmIChyYWlsICYmIHR5cGVvZiBSZXNpemVPYnNlcnZlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8vIEVsIGFuY2hvIGRlIHVuYSBwZXN0YcOxYSBkZXBlbmRlIGRlIHN1IHRleHRvLCB5IGVsIHRleHRvIGNhbWJpYSBjb24gZWxcbiAgICAgIC8vIGlkaW9tYSwgYWwgdGVybWluYXIgZGUgY2FyZ2FyIGxhIGZ1ZW50ZSB5IGFsIHJvdGFyIGVsIGRpc3Bvc2l0aXZvLlxuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB0aGlzLnBsYWNlRmxhcCgpKTtcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShyYWlsKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VsZWN0KHRhYjogRm9sZGVyVGFiKTogdm9pZCB7XG4gICAgaWYgKHRhYi5kaXNhYmxlZCB8fCB0YWIudmFsdWUgPT09IHRoaXMuYWN0aXZlVmFsdWUoKSkgcmV0dXJuO1xuICAgIHRoaXMuaW50ZXJuYWxWYWx1ZS5zZXQodGFiLnZhbHVlKTtcbiAgICB0aGlzLnRhYkNoYW5nZS5lbWl0KHRhYi52YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgdGFicyA9IHRoaXMucHJvcHNTaWcoKS50YWJzID8/IFtdO1xuICAgIGlmICghdGFicy5sZW5ndGgpIHJldHVybjtcblxuICAgIGNvbnN0IG1vdmUgPSAoZGVsdGE6IG51bWJlcikgPT4ge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGNvbnN0IGJ1dHRvbnMgPSB0aGlzLnJhaWxSZWY/Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbDxIVE1MQnV0dG9uRWxlbWVudD4oXG4gICAgICAgICcudmFsLWZvbGRlci10YWJzX190YWI6bm90KFtkaXNhYmxlZF0pJ1xuICAgICAgKTtcbiAgICAgIGlmICghYnV0dG9ucz8ubGVuZ3RoKSByZXR1cm47XG4gICAgICBjb25zdCBsaXN0ID0gQXJyYXkuZnJvbShidXR0b25zKTtcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSBsaXN0LmZpbmRJbmRleChlbCA9PiBlbCA9PT0gZXZlbnQudGFyZ2V0KTtcbiAgICAgIGNvbnN0IG5leHQgPSBsaXN0WyhjdXJyZW50ICsgZGVsdGEgKyBsaXN0Lmxlbmd0aCkgJSBsaXN0Lmxlbmd0aF07XG4gICAgICBuZXh0Py5mb2N1cygpO1xuICAgIH07XG5cbiAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dSaWdodCcpIG1vdmUoMSk7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93TGVmdCcpIG1vdmUoLTEpO1xuICAgIGlmIChldmVudC5rZXkgPT09ICdIb21lJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMucmFpbFJlZj8ubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yPEhUTUxCdXR0b25FbGVtZW50PignLnZhbC1mb2xkZXItdGFic19fdGFiOm5vdChbZGlzYWJsZWRdKScpPy5mb2N1cygpO1xuICAgIH1cbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleSA9PT0gJyAnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgY29uc3QgdGFiID0gdGFic1tpbmRleF07XG4gICAgICBpZiAodGFiKSB0aGlzLnNlbGVjdCh0YWIpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBwYW5lbElkKHRhYjogRm9sZGVyVGFiKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5pbnN0YW5jZUlkfS0ke3RhYi52YWx1ZX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIE1pZGUgbGEgcGVzdGHDsWEgYWN0aXZhIHkgbXVldmUgbGEgbGVuZ8O8ZXRhIGhhc3RhIGVsbGEuIFNlIG1pZGUgZW4gY2FkYVxuICAgKiBsbGFtYWRhIGVuIHZleiBkZSBjYWNoZWFyOiBlbCBhbmNobyBkZXBlbmRlIGRlbCB0ZXh0byByZW5kZXJpemFkbywgbm8gZGUgbGFcbiAgICogY29uZmlndXJhY2nDs24uXG4gICAqL1xuICBwcml2YXRlIHBsYWNlRmxhcCgpOiB2b2lkIHtcbiAgICBjb25zdCByYWlsID0gdGhpcy5yYWlsUmVmPy5uYXRpdmVFbGVtZW50O1xuICAgIGlmICghcmFpbCkgcmV0dXJuO1xuXG4gICAgY29uc3QgYWN0aXZlID0gcmFpbC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignLnZhbC1mb2xkZXItdGFic19fdGFiW2FyaWEtc2VsZWN0ZWQ9XCJ0cnVlXCJdJyk7XG4gICAgY29uc3QgZmxhcCA9IHJhaWwucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJy52YWwtZm9sZGVyLXRhYnNfX2ZsYXAnKTtcbiAgICBpZiAoIWFjdGl2ZSB8fCAhZmxhcCkgcmV0dXJuO1xuXG4gICAgZmxhcC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1mbGFwLXgnLCBgJHthY3RpdmUub2Zmc2V0TGVmdCAtIHJhaWwuY2xpZW50TGVmdH1weGApO1xuICAgIGZsYXAuc3R5bGUuc2V0UHJvcGVydHkoJy0tZmxhcC13JywgYCR7YWN0aXZlLm9mZnNldFdpZHRofXB4YCk7XG4gIH1cbn1cbiJdfQ==
|
|
259
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9sZGVyLXRhYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9mb2xkZXItdGFicy9mb2xkZXItdGFicy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7OztBQUd2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUNHO0FBeU1ILE1BQU0sT0FBTyxtQkFBbUI7SUFHOUI7Ozs7T0FJRztJQUNILElBQ0ksS0FBSyxDQUFDLEtBQXlCO1FBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFDRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBc0NEO1FBbkRpQixhQUFRLEdBQUcsTUFBTSxDQUFxQixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBZXJFLDhDQUE4QztRQUNwQyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUloQyxrQkFBYSxHQUFHLE1BQU0sQ0FBZ0IsSUFBSSxDQUFDLENBQUM7UUFDMUMsbUJBQWMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFakMsZUFBVSxHQUFHLG1CQUFtQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FB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RUFBRSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUM7UUFDL0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLEdBQUcsTUFBTSxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUM7SUFDaEUsQ0FBQzsrR0F4SVUsbUJBQW1CO21HQUFuQixtQkFBbUIsNk9Bbk1wQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdDVCwyckZBMUNTLFlBQVk7OzRGQXFNWCxtQkFBbUI7a0JBeE0vQixTQUFTOytCQUNFLGlCQUFpQixjQUNmLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxtQkFDTix1QkFBdUIsQ0FBQyxNQUFNLFlBQ3JDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0NUO3dEQW9LRyxLQUFLO3NCQURSLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQVNmLFNBQVM7c0JBQWxCLE1BQU07Z0JBRW9CLE9BQU87c0JBQWpDLFNBQVM7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBzaWduYWwsXG4gIHVudHJhY2tlZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb2xkZXJUYWIsIEZvbGRlclRhYnNDb250ZXh0LCBGb2xkZXJUYWJzTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiB2YWwtZm9sZGVyLXRhYnNcbiAqXG4gKiBQZXN0YcOxYXMgZG9uZGUgbGEgYWN0aXZhIHNlIGZ1bmRlIGNvbiBlbCBjdWVycG8sIGNvbW8gbGEgbGVuZ8O8ZXRhIGRlIHVuYVxuICogY2FycGV0YS4gTGEgbGVuZ8O8ZXRhIGVzIFVOIHNvbG8gZWxlbWVudG8gcXVlIHNlIGRlc3BsYXphIGVudHJlIHBvc2ljaW9uZXMsIG5vXG4gKiBlbCBmb25kbyBkZSBjYWRhIGJvdMOzbjogZWwgY2FtYmlvIHNlIGxlZSBjb21vIHVuIG1vdmltaWVudG8geSBubyBjb21vIHVuXG4gKiBlbmNlbmRpZG8uXG4gKlxuICogQ3XDoW5kbyB1c2FyIGVzdGUgeSBubyBsb3Mgb3Ryb3MgZG9zIGNvbXBvbmVudGVzIGRlIHBlc3Rhw7FhcyBkZSBsYSBsaWJyZXLDrWE6XG4gKiAtIGB2YWwtc2VnbWVudC1jb250cm9sYCDigJQgY29ubXV0YXIgdW4gZmlsdHJvLCBzaW4gY29udGVuZWRvciBwcm9waW8uXG4gKiAtIGB2YWwtdGFiYmVkLWNvbnRlbnRgIOKAlCBuYXZlZ2FjacOzbiB0aXBvIHNlZ21lbnRvIHNvYnJlIHBhbmVsZXMuXG4gKiAtIGB2YWwtZm9sZGVyLXRhYnNgIOKAlCBjdWFuZG8gbGFzIHBlc3Rhw7FhcyBDT05USUVORU4gYSBzdSBjb250ZW5pZG8geSBlbFxuICogICBjb25qdW50byBzZSBsZWUgY29tbyB1bmEgc29sYSBwaWV6YSAodW5hIGNhcmQgY29uIHNlY2Npb25lcykuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxuZy10ZW1wbGF0ZSAjc2FsZG8+4oCmPC9uZy10ZW1wbGF0ZT5cbiAqIDxuZy10ZW1wbGF0ZSAjcmVzZXJ2YXM+4oCmPC9uZy10ZW1wbGF0ZT5cbiAqXG4gKiA8dmFsLWZvbGRlci10YWJzXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgdGFiczogW1xuICogICAgICAgeyB2YWx1ZTogJ3NhbGRvJywgbGFiZWw6IHQoJ3NhbGRvJyksIHRlbXBsYXRlOiBzYWxkbyB9LFxuICogICAgICAgeyB2YWx1ZTogJ3Jlc2VydmFzJywgbGFiZWw6IHQoJ3Jlc2VydmFzJyksIGJhZGdlOiAzLCB0ZW1wbGF0ZTogcmVzZXJ2YXMgfVxuICogICAgIF0sXG4gKiAgICAgc2VsZWN0ZWRUYWI6IGFjdGl2ZVRhYigpLFxuICogICAgIGFyaWFMYWJlbDogdCgnc2VjY2lvbmVzRGVMYUN1ZW50YScpXG4gKiAgIH1cIlxuICogICAodGFiQ2hhbmdlKT1cIm9uVGFiKCRldmVudClcIlxuICogLz5cbiAqIGBgYFxuICpcbiAqIElkZW50aWRhZCB2aXN1YWw6IG5vIHRyYWUgcGFsZXRhIHByb3BpYSwgbGVlIGN1YXRybyBjdXN0b20gcHJvcGVydGllcy4gRWxcbiAqIGNvbnN1bWVyIGxhcyByZWRlZmluZSBzb2JyZSBlbCBob3N0IHkgZWwgY29tcG9uZW50ZSBjYW1iaWEgZGUgaWRlbnRpZGFkIHNpblxuICogdG9jYXIgc3UgQ1NTOlxuICogICAtLXZhbC1mb2xkZXItdGFicy1yYWlsICAgICBjb2xvciBkZSBsYSBiYXJyYVxuICogICAtLXZhbC1mb2xkZXItdGFicy1zdXJmYWNlICBjb2xvciBkZWwgY3VlcnBvIHkgZGUgbGEgbGVuZ8O8ZXRhXG4gKiAgIC0tdmFsLWZvbGRlci10YWJzLXJhZGl1cyAgIHJhZGlvIGRlbCBjb250ZW5lZG9yXG4gKiAgIC0tdmFsLWZvbGRlci10YWJzLW5vdGNoICAgIHRhbWHDsW8gZGUgbGEgY3VydmEgcXVlIHVuZSBsZW5nw7xldGEgeSBjdWVycG9cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWZvbGRlci10YWJzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJ2YWwtZm9sZGVyLXRhYnNcIiBbY2xhc3MudmFsLWZvbGRlci10YWJzLS1uby1hbmltXT1cIiFhbmltYXRpb25SZWFkeSgpXCI+XG4gICAgICA8ZGl2ICNyYWlsIGNsYXNzPVwidmFsLWZvbGRlci10YWJzX19yYWlsXCIgcm9sZT1cInRhYmxpc3RcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInByb3BzLmFyaWFMYWJlbCB8fCBudWxsXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidmFsLWZvbGRlci10YWJzX19mbGFwXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuXG4gICAgICAgIEBmb3IgKHRhYiBvZiBwcm9wcy50YWJzOyB0cmFjayB0YWIudmFsdWU7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgI3RhYkJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICByb2xlPVwidGFiXCJcbiAgICAgICAgICAgIGNsYXNzPVwidmFsLWZvbGRlci10YWJzX190YWJcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJ0YWIudmFsdWUgPT09IGFjdGl2ZVZhbHVlKClcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJwYW5lbElkKHRhYilcIlxuICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwidGFiLnZhbHVlID09PSBhY3RpdmVWYWx1ZSgpID8gMCA6IC0xXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0YWIuZGlzYWJsZWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdCh0YWIpXCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQsIGkpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyB0YWIubGFiZWwgfX1cbiAgICAgICAgICAgIEBpZiAodGFiLmJhZGdlKSB7XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsLWZvbGRlci10YWJzX19iYWRnZVwiPnt7IHRhYi5iYWRnZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2YWwtZm9sZGVyLXRhYnNfX2JvZHlcIj5cbiAgICAgICAgQGlmIChhY3RpdmVUYWIoKTsgYXMgdGFiKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZhbC1mb2xkZXItdGFic19fcGFuZWxcIiByb2xlPVwidGFicGFuZWxcIiBbaWRdPVwicGFuZWxJZCh0YWIpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0YWIubGFiZWxcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICB0YWIudGVtcGxhdGUgfHwgbnVsbDtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogdGFiLnZhbHVlLCB0YWI6IHRhYiwgaW5kZXg6IGFjdGl2ZUluZGV4KCkgfVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgICAgIC0tX3JhaWw6IHZhcigtLXZhbC1mb2xkZXItdGFicy1yYWlsLCB2YXIoLS1pb24tY29sb3ItbGlnaHQsICNmMWYxZjQpKTtcbiAgICAgICAgLS1fc3VyZmFjZTogdmFyKC0tdmFsLWZvbGRlci10YWJzLXN1cmZhY2UsIHZhcigtLWlvbi1jYXJkLWJhY2tncm91bmQsIHZhcigtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yLCAjZmZmKSkpO1xuICAgICAgICAtLV9pbms6IHZhcigtLXZhbC1mb2xkZXItdGFicy1pbmssIHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjMWUxOTI2KSk7XG4gICAgICAgIC0tX2luay1pZGxlOiB2YXIoLS12YWwtZm9sZGVyLXRhYnMtaW5rLWlkbGUsIHZhcigtLWlvbi1jb2xvci1tZWRpdW0sICM2ZTY1NzkpKTtcbiAgICAgICAgLS1fcjogdmFyKC0tdmFsLWZvbGRlci10YWJzLXJhZGl1cywgMjBweCk7XG4gICAgICAgIC0tX246IHZhcigtLXZhbC1mb2xkZXItdGFicy1ub3RjaCwgMTZweCk7XG4gICAgICB9XG5cbiAgICAgIC52YWwtZm9sZGVyLXRhYnMge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1fcmFpbCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLV9yKTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cblxuICAgICAgLnZhbC1mb2xkZXItdGFic19fcmFpbCB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgLyogU2FuZ3JpYSA9IHJhZGlvIGRlbCBjb250ZW5lZG9yICsgY3VydmEgZGUgbGEgbGVuZ3Vlc3RhLlxuICAgICAgICAgICBFcyBnZW9tZXRyaWEsIG5vIGd1c3RvOiBsYSBjdXJ2YSBjb25jYXZhIHNlIGV4dGllbmRlIFxcYG5vdGNoXFxgIHB4IGhhY2lhXG4gICAgICAgICAgIGFmdWVyYSB5IGVsIGNvbnRlbmVkb3IgeWEgdmllbmUgY3VydmFuZG8gZHVyYW50ZSBzdXMgcHJpbWVyb3NcbiAgICAgICAgICAgXFxgcmFkaXVzXFxgIHB4LiBDb24gbWVub3Mgc2FuZ3JpYSBsYXMgZG9zIGN1cnZhcyBzZSBlbmN1ZW50cmFuIHkgZGVqYW4gdW5cbiAgICAgICAgICAgcGljbyBxdWUgY29ydGEgZWwgYm9yZGUgZGVsIGNvbXBvbmVudGUuICovXG4gICAgICAgIHBhZGRpbmc6IDAgY2FsYyh2YXIoLS1fcikgKyB2YXIoLS1fbikpO1xuICAgICAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgICAgICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC52YWwtZm9sZGVyLXRhYnNfX3JhaWw6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLyogTGEgbGVuZ3Vlc3RhOiBVTiBzb2xvIGVsZW1lbnRvIHF1ZSBzZSBkZXNwbGF6YS4gU2kgY2FkYSBib3RvbiBzZSBwaW50YXJhXG4gICAgICAgICBhbCBhY3RpdmFyc2UsIGVsIGNhbWJpbyBzZXJpYSBpbnN0YW50YW5lbyB5IGxhIHBlc3RhbmEgXCJzYWx0YXJpYVwiLiAqL1xuICAgICAgLnZhbC1mb2xkZXItdGFic19fZmxhcCB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIHdpZHRoOiB2YXIoLS1mbGFwLXcsIDBweCk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCh2YXIoLS1mbGFwLXgsIDBweCkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1fc3VyZmFjZSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLV9yKSB2YXIoLS1fcikgMCAwO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgei1pbmRleDogMDtcbiAgICAgICAgdHJhbnNpdGlvbjpcbiAgICAgICAgICB0cmFuc2Zvcm0gNDIwbXMgY3ViaWMtYmV6aWVyKDAuNjUsIDAsIDAuMzUsIDEpLFxuICAgICAgICAgIHdpZHRoIDQyMG1zIGN1YmljLWJlemllcigwLjY1LCAwLCAwLjM1LCAxKTtcbiAgICAgIH1cblxuICAgICAgLyogQWwgbW9udGFyIG5vIGRlYmUgZGVzbGl6YXJzZSBkZXNkZSBsYSBlc3F1aW5hLiAqL1xuICAgICAgLnZhbC1mb2xkZXItdGFicy0tbm8tYW5pbSAudmFsLWZvbGRlci10YWJzX19mbGFwIHtcbiAgICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLyogTGFzIGN1cnZhcyB2aWFqYW4gY29uIGxhIGxlbmd1ZXN0YS4gQ2FkYSB1bmEgZXMgdW4gY3VhZHJhZG8gdHJhbnNwYXJlbnRlXG4gICAgICAgICBjb24gYm9yZGVyLXJhZGl1cyA1MCUgeSB1bmEgc29tYnJhIHNvbGlkYSBkZXNwbGF6YWRhOiBsYSBzb21icmEgcGludGFcbiAgICAgICAgIHNvbG8gZWwgYXJlYSBwb3IgZnVlcmEgZGVsIGNpcmN1bG8sIHF1ZSBlcyBsYSBjdXJ2YSBpbnZlcnNhLiAqL1xuICAgICAgLnZhbC1mb2xkZXItdGFic19fZmxhcDo6YmVmb3JlLFxuICAgICAgLnZhbC1mb2xkZXItdGFic19fZmxhcDo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBib3R0b206IDA7XG4gICAgICAgIHdpZHRoOiB2YXIoLS1fbik7XG4gICAgICAgIGhlaWdodDogdmFyKC0tX24pO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIH1cblxuICAgICAgLnZhbC1mb2xkZXItdGFic19fZmxhcDo6YmVmb3JlIHtcbiAgICAgICAgbGVmdDogY2FsYyh2YXIoLS1fbikgKiAtMSk7XG4gICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA1MCU7XG4gICAgICAgIGJveC1zaGFkb3c6IGNhbGModmFyKC0tX24pIC8gMikgY2FsYyh2YXIoLS1fbikgLyAyKSAwIGNhbGModmFyKC0tX24pIC8gMikgdmFyKC0tX3N1cmZhY2UpO1xuICAgICAgfVxuXG4gICAgICAudmFsLWZvbGRlci10YWJzX19mbGFwOjphZnRlciB7XG4gICAgICAgIHJpZ2h0OiBjYWxjKHZhcigtLV9uKSAqIC0xKTtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNTAlO1xuICAgICAgICBib3gtc2hhZG93OiBjYWxjKHZhcigtLV9uKSAvIC0yKSBjYWxjKHZhcigtLV9uKSAvIDIpIDAgY2FsYyh2YXIoLS1fbikgLyAyKSB2YXIoLS1fc3VyZmFjZSk7XG4gICAgICB9XG5cbiAgICAgIC52YWwtZm9sZGVyLXRhYnNfX3RhYiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDZweDtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0tX2luay1pZGxlKTtcbiAgICAgICAgcGFkZGluZzogMXJlbSAxLjM1cmVtO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIC8qIFNvYnJlIGxhIGxlbmd1ZXN0YTogZWwgdGV4dG8gbm8gZGViZSB0YXBhcnNlIG1pZW50cmFzIGVsbGEgcGFzYS4gKi9cbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgMjYwbXMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLnZhbC1mb2xkZXItdGFic19fdGFiOmhvdmVyOm5vdChbZGlzYWJsZWRdKSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1faW5rKTtcbiAgICAgIH1cblxuICAgICAgLnZhbC1mb2xkZXItdGFic19fdGFiW2FyaWEtc2VsZWN0ZWQ9J3RydWUnXSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1faW5rKTtcbiAgICAgIH1cblxuICAgICAgLnZhbC1mb2xkZXItdGFic19fdGFiW2Rpc2FibGVkXSB7XG4gICAgICAgIG9wYWNpdHk6IDAuNDU7XG4gICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgICB9XG5cbiAgICAgIC52YWwtZm9sZGVyLXRhYnNfX3RhYjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLV9pbmspO1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogLTRweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgfVxuXG4gICAgICAudmFsLWZvbGRlci10YWJzX19iYWRnZSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgbWluLXdpZHRoOiAxLjI1cmVtO1xuICAgICAgICBoZWlnaHQ6IDEuMjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAgMC4zNXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTAwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIsICNlYjQ0NWEpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhbmdlci1jb250cmFzdCwgI2ZmZik7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuICAgICAgfVxuXG4gICAgICAudmFsLWZvbGRlci10YWJzX19ib2R5IHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1fc3VyZmFjZSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLV9yKTtcbiAgICAgICAgcGFkZGluZzogMS41cmVtO1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAgICAgICAudmFsLWZvbGRlci10YWJzX19mbGFwLFxuICAgICAgICAudmFsLWZvbGRlci10YWJzX190YWIge1xuICAgICAgICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGb2xkZXJUYWJzQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBwcm9wc1NpZyA9IHNpZ25hbDxGb2xkZXJUYWJzTWV0YWRhdGE+KHsgdGFiczogW10gfSk7XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYWNpw7NuLiBFcyB1biBzaWduYWwgY29uIHNldHRlciAobm8gdW4gY2FtcG8gcGxhbm8pIHBvcnF1ZSBkZSDDqWxcbiAgICogZGVwZW5kZW4gY29tcHV0ZWRzIHkgZWwgcmVwb3NpY2lvbmFtaWVudG8gZGUgbGEgbGVuZ8O8ZXRhOiBjb24gdW4gY2FtcG9cbiAgICogcGxhbm8sIHVuYSByZWFzaWduYWNpw7NuIG5vIGRpc3BhcmFyw61hIG5pbmd1bm8gZGUgbG9zIGRvcy5cbiAgICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIHNldCBwcm9wcyh2YWx1ZTogRm9sZGVyVGFic01ldGFkYXRhKSB7XG4gICAgdGhpcy5wcm9wc1NpZy5zZXQodmFsdWUgPz8geyB0YWJzOiBbXSB9KTtcbiAgfVxuICBnZXQgcHJvcHMoKTogRm9sZGVyVGFic01ldGFkYXRhIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wc1NpZygpO1xuICB9XG5cbiAgLyoqIEVtaXRlIGVsIGB2YWx1ZWAgZGUgbGEgcGVzdGHDsWEgZWxlZ2lkYS4gKi9cbiAgQE91dHB1dCgpIHRhYkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ3JhaWwnKSBwcml2YXRlIHJhaWxSZWY/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBwcml2YXRlIHJlYWRvbmx5IGludGVybmFsVmFsdWUgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBhbmltYXRpb25SZWFkeSA9IHNpZ25hbChmYWxzZSk7XG4gIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXI/OiBSZXNpemVPYnNlcnZlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBpbnN0YW5jZUlkID0gYHZhbC1mb2xkZXItdGFicy0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIsIDkpfWA7XG5cbiAgLyoqXG4gICAqIFBlc3Rhw7FhIGFjdGl2YS4gYHNlbGVjdGVkVGFiYCBnYW5hIGN1YW5kbyBlbCBjb25zdW1lciBsYSBwYXNhIChtb2RvXG4gICAqIGNvbnRyb2xhZG8pOyBzaSBubywgbWFuZGEgbGEgc2VsZWNjacOzbiBpbnRlcm5hOyB5IHNpIG5pbmd1bmEgcmVzdWVsdmUsIGxhXG4gICAqIHByaW1lcmEgaGFiaWxpdGFkYS5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBhY3RpdmVWYWx1ZSA9IGNvbXB1dGVkPHN0cmluZyB8IG51bGw+KCgpID0+IHtcbiAgICBjb25zdCB7IHRhYnMsIHNlbGVjdGVkVGFiIH0gPSB0aGlzLnByb3BzU2lnKCk7XG4gICAgaWYgKCF0YWJzPy5sZW5ndGgpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgZXhpc3RzID0gKHZhbHVlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSA9PlxuICAgICAgISF2YWx1ZSAmJiB0YWJzLnNvbWUodGFiID0+IHRhYi52YWx1ZSA9PT0gdmFsdWUgJiYgIXRhYi5kaXNhYmxlZCk7XG5cbiAgICBpZiAoZXhpc3RzKHNlbGVjdGVkVGFiKSkgcmV0dXJuIHNlbGVjdGVkVGFiITtcbiAgICBpZiAoZXhpc3RzKHRoaXMuaW50ZXJuYWxWYWx1ZSgpKSkgcmV0dXJuIHRoaXMuaW50ZXJuYWxWYWx1ZSgpO1xuICAgIHJldHVybiB0YWJzLmZpbmQodGFiID0+ICF0YWIuZGlzYWJsZWQpPy52YWx1ZSA/PyBudWxsO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWN0aXZlVGFiID0gY29tcHV0ZWQ8Rm9sZGVyVGFiIHwgbnVsbD4oKCkgPT4ge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5hY3RpdmVWYWx1ZSgpO1xuICAgIHJldHVybiB0aGlzLnByb3BzU2lnKCkudGFicz8uZmluZCh0YWIgPT4gdGFiLnZhbHVlID09PSB2YWx1ZSkgPz8gbnVsbDtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFjdGl2ZUluZGV4ID0gY29tcHV0ZWQ8bnVtYmVyPihcbiAgICAoKSA9PiB0aGlzLnByb3BzU2lnKCkudGFicz8uZmluZEluZGV4KHRhYiA9PiB0YWIudmFsdWUgPT09IHRoaXMuYWN0aXZlVmFsdWUoKSkgPz8gLTFcbiAgKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBSZXBvc2ljaW9uYSBjdWFuZG8gY2FtYmlhIGxhIHBlc3Rhw7FhIGFjdGl2YSBvIGxhIGxpc3RhLiBMZWVyIGFtYm9zIHNpZ25hbHNcbiAgICAvLyBhY8OhIGVzIGxvIHF1ZSBhdGEgbGEgbGVuZ8O8ZXRhIGFsIGVzdGFkbzogc2luIGVzdG8gcXVlZGFyw61hIGRvbmRlIGxhIGRlasOzXG4gICAgLy8gZWwgcHJpbWVyIHJlbmRlci5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgdGhpcy5hY3RpdmVWYWx1ZSgpO1xuICAgICAgdGhpcy5wcm9wc1NpZygpLnRhYnM7XG4gICAgICB1bnRyYWNrZWQoKCkgPT4gcXVldWVNaWNyb3Rhc2soKCkgPT4gdGhpcy5wbGFjZUZsYXAoKSkpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMucGxhY2VGbGFwKCk7XG4gICAgLy8gTGEgdHJhbnNpY2nDs24gc2UgaGFiaWxpdGEgREVTUFXDiVMgZGUgbGEgcHJpbWVyYSBjb2xvY2FjacOzbjogc2kgbm8sIGxhXG4gICAgLy8gbGVuZ8O8ZXRhIGVudHJhIGRlc2xpesOhbmRvc2UgZGVzZGUgbGEgZXNxdWluYSBlbiBjYWRhIGNhcmdhLlxuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHRoaXMuYW5pbWF0aW9uUmVhZHkuc2V0KHRydWUpKTtcblxuICAgIGNvbnN0IHJhaWwgPSB0aGlzLnJhaWxSZWY/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKHJhaWwgJiYgdHlwZW9mIFJlc2l6ZU9ic2VydmVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgLy8gRWwgYW5jaG8gZGUgdW5hIHBlc3Rhw7FhIGRlcGVuZGUgZGUgc3UgdGV4dG8sIHkgZWwgdGV4dG8gY2FtYmlhIGNvbiBlbFxuICAgICAgLy8gaWRpb21hLCBhbCB0ZXJtaW5hciBkZSBjYXJnYXIgbGEgZnVlbnRlIHkgYWwgcm90YXIgZWwgZGlzcG9zaXRpdm8uXG4gICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHRoaXMucGxhY2VGbGFwKCkpO1xuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHJhaWwpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZWxlY3QodGFiOiBGb2xkZXJUYWIpOiB2b2lkIHtcbiAgICBpZiAodGFiLmRpc2FibGVkIHx8IHRhYi52YWx1ZSA9PT0gdGhpcy5hY3RpdmVWYWx1ZSgpKSByZXR1cm47XG4gICAgdGhpcy5pbnRlcm5hbFZhbHVlLnNldCh0YWIudmFsdWUpO1xuICAgIHRoaXMudGFiQ2hhbmdlLmVtaXQodGFiLnZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCB0YWJzID0gdGhpcy5wcm9wc1NpZygpLnRhYnMgPz8gW107XG4gICAgaWYgKCF0YWJzLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgY29uc3QgbW92ZSA9IChkZWx0YTogbnVtYmVyKSA9PiB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgY29uc3QgYnV0dG9ucyA9IHRoaXMucmFpbFJlZj8ubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsPEhUTUxCdXR0b25FbGVtZW50PihcbiAgICAgICAgJy52YWwtZm9sZGVyLXRhYnNfX3RhYjpub3QoW2Rpc2FibGVkXSknXG4gICAgICApO1xuICAgICAgaWYgKCFidXR0b25zPy5sZW5ndGgpIHJldHVybjtcbiAgICAgIGNvbnN0IGxpc3QgPSBBcnJheS5mcm9tKGJ1dHRvbnMpO1xuICAgICAgY29uc3QgY3VycmVudCA9IGxpc3QuZmluZEluZGV4KGVsID0+IGVsID09PSBldmVudC50YXJnZXQpO1xuICAgICAgY29uc3QgbmV4dCA9IGxpc3RbKGN1cnJlbnQgKyBkZWx0YSArIGxpc3QubGVuZ3RoKSAlIGxpc3QubGVuZ3RoXTtcbiAgICAgIG5leHQ/LmZvY3VzKCk7XG4gICAgfTtcblxuICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1JpZ2h0JykgbW92ZSgxKTtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dMZWZ0JykgbW92ZSgtMSk7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0hvbWUnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5yYWlsUmVmPy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTEJ1dHRvbkVsZW1lbnQ+KCcudmFsLWZvbGRlci10YWJzX190YWI6bm90KFtkaXNhYmxlZF0pJyk/LmZvY3VzKCk7XG4gICAgfVxuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicgfHwgZXZlbnQua2V5ID09PSAnICcpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBjb25zdCB0YWIgPSB0YWJzW2luZGV4XTtcbiAgICAgIGlmICh0YWIpIHRoaXMuc2VsZWN0KHRhYik7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHBhbmVsSWQodGFiOiBGb2xkZXJUYWIpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmluc3RhbmNlSWR9LSR7dGFiLnZhbHVlfWA7XG4gIH1cblxuICAvKipcbiAgICogTWlkZSBsYSBwZXN0YcOxYSBhY3RpdmEgeSBtdWV2ZSBsYSBsZW5nw7xldGEgaGFzdGEgZWxsYS4gU2UgbWlkZSBlbiBjYWRhXG4gICAqIGxsYW1hZGEgZW4gdmV6IGRlIGNhY2hlYXI6IGVsIGFuY2hvIGRlcGVuZGUgZGVsIHRleHRvIHJlbmRlcml6YWRvLCBubyBkZSBsYVxuICAgKiBjb25maWd1cmFjacOzbi5cbiAgICovXG4gIHByaXZhdGUgcGxhY2VGbGFwKCk6IHZvaWQge1xuICAgIGNvbnN0IHJhaWwgPSB0aGlzLnJhaWxSZWY/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKCFyYWlsKSByZXR1cm47XG5cbiAgICBjb25zdCBhY3RpdmUgPSByYWlsLnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCcudmFsLWZvbGRlci10YWJzX190YWJbYXJpYS1zZWxlY3RlZD1cInRydWVcIl0nKTtcbiAgICBjb25zdCBmbGFwID0gcmFpbC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignLnZhbC1mb2xkZXItdGFic19fZmxhcCcpO1xuICAgIGlmICghYWN0aXZlIHx8ICFmbGFwKSByZXR1cm47XG5cbiAgICBmbGFwLnN0eWxlLnNldFByb3BlcnR5KCctLWZsYXAteCcsIGAke2FjdGl2ZS5vZmZzZXRMZWZ0IC0gcmFpbC5jbGllbnRMZWZ0fXB4YCk7XG4gICAgZmxhcC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1mbGFwLXcnLCBgJHthY3RpdmUub2Zmc2V0V2lkdGh9cHhgKTtcbiAgfVxufVxuIl19
|
|
@@ -674,7 +674,7 @@ export class FormComponent {
|
|
|
674
674
|
}
|
|
675
675
|
</form>
|
|
676
676
|
</div>
|
|
677
|
-
`, isInline: true, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-xl-wide: 1280px;--val-container-md-wide: 900px;--val-container-aside: 0px;--val-container-padding: 16px;--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-
|
|
677
|
+
`, isInline: true, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-xl-wide: 1280px;--val-container-md-wide: 900px;--val-container-aside: 0px;--val-container-padding: 16px;--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--ion-color-warning: #ffde38;--ion-color-warning-rgb: 255, 222, 56;--ion-color-warning-contrast: #000000;--ion-color-warning-contrast-rgb: 0, 0, 0;--ion-color-warning-shade: #e0c331;--ion-color-warning-tint: #ffe14c;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-dark)}body.dark,html.ion-palette-dark,body[data-theme=dark]{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.container--sticky-footer{--val-form-sticky-footer-space: 7rem;padding-bottom:calc(var(--val-form-sticky-footer-space) + env(safe-area-inset-bottom))}.section{margin-top:1rem}.input{margin:var(--val-form-field-gap, .5rem) 0}@media (min-width: 768px){.input{margin:var(--val-form-field-gap, .75rem) 0}}.submit-actions{display:block;width:100%;box-sizing:border-box}.submit-actions--sticky{position:sticky;bottom:0;z-index:20;width:calc(100% + var(--val-form-sticky-footer-bleed, 0px) * 2);margin-inline:calc(var(--val-form-sticky-footer-bleed, 0px) * -1);background:var(--ion-card-background, var(--ion-background-color, #ffffff));border-top:1px solid var(--ion-color-step-150, rgba(0, 0, 0, .08));box-shadow:0 -.25rem 1rem rgba(var(--ion-text-color-rgb, 0, 0, 0),.08);padding:.75rem var(--val-form-sticky-footer-inline-padding, var(--val-form-sticky-footer-bleed, 0px)) max(.75rem,env(safe-area-inset-bottom));isolation:isolate;transform:translateZ(0)}.field-description{display:block;font-size:.75rem;color:var(--ion-color-dark);margin-bottom:.25rem;line-height:1.4}.email-suggestion{margin:6px 0 0;font-size:.875rem;color:var(--ion-text-color, #000)}.email-suggestion__apply{padding:0;margin-left:4px;background:none;border:none;font:inherit;font-weight:700;color:var(--ion-color-primary);text-decoration:underline;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: TextInputComponent, selector: "val-text-input", inputs: ["preset", "props"] }, { kind: "component", type: TextareaInputComponent, selector: "val-textarea-input", inputs: ["preset", "props"] }, { kind: "component", type: CheckInputComponent, selector: "val-check-input", inputs: ["preset", "props"] }, { kind: "component", type: ButtonGroupComponent, selector: "val-button-group", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: DividerComponent, selector: "val-divider", inputs: ["props"] }, { kind: "component", type: HintComponent, selector: "val-hint", inputs: ["props", "id", "isError"] }, { kind: "component", type: CommentInputComponent, selector: "val-comment-input", inputs: ["props"] }, { kind: "component", type: DateInputComponent, selector: "val-date-input", inputs: ["preset", "props"] }, { kind: "component", type: FileInputComponent, selector: "val-file-input", inputs: ["props"] }, { kind: "component", type: NumberFromToComponent, selector: "val-number-from-to", inputs: ["props"] }, { kind: "component", type: RadioInputComponent, selector: "val-radio-input", inputs: ["props"] }, { kind: "component", type: PasswordInputComponent, selector: "val-password-input", inputs: ["preset", "props"] }, { kind: "component", type: PinInputComponent, selector: "val-pin-input", inputs: ["props"] }, { kind: "component", type: SelectSearchComponent, selector: "val-select-search", inputs: ["label", "labelProperty", "valueProperty", "multiple", "placeholder", "props"] }, { kind: "component", type: MultiSelectSearchComponent, selector: "val-multi-select-search", inputs: ["label", "labelProperty", "valueProperty", "placeholder", "props"] }, { kind: "component", type: SearchSelectorComponent, selector: "val-select-input", inputs: ["preset", "props"] }, { kind: "component", type: PhoneInputComponent, selector: "val-phone-input", inputs: ["preset", "props"], outputs: ["phoneChange"] }, { kind: "component", type: ToggleInputComponent, selector: "val-toggle-input", inputs: ["preset", "props"] }, { kind: "component", type: CheckboxRadioInputComponent, selector: "val-checkbox-radio-input", inputs: ["props"] }, { kind: "component", type: ChipSelectComponent, selector: "val-chip-select", inputs: ["props"] }, { kind: "component", type: UsernameInputComponent, selector: "val-username-input", inputs: ["props"] }, { kind: "component", type: AttachmentUploaderComponent, selector: "val-attachment-uploader", inputs: ["props"], outputs: ["attachmentsChange"] }, { kind: "component", type: DatePickerComponent, selector: "val-date-picker", inputs: ["props"], outputs: ["valueChange"] }] }); }
|
|
678
678
|
}
|
|
679
679
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormComponent, decorators: [{
|
|
680
680
|
type: Component,
|
|
@@ -849,7 +849,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
849
849
|
}
|
|
850
850
|
</form>
|
|
851
851
|
</div>
|
|
852
|
-
`, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-xl-wide: 1280px;--val-container-md-wide: 900px;--val-container-aside: 0px;--val-container-padding: 16px;--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-
|
|
852
|
+
`, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-xl-wide: 1280px;--val-container-md-wide: 900px;--val-container-aside: 0px;--val-container-padding: 16px;--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--ion-color-warning: #ffde38;--ion-color-warning-rgb: 255, 222, 56;--ion-color-warning-contrast: #000000;--ion-color-warning-contrast-rgb: 0, 0, 0;--ion-color-warning-shade: #e0c331;--ion-color-warning-tint: #ffe14c;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-dark)}body.dark,html.ion-palette-dark,body[data-theme=dark]{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.container--sticky-footer{--val-form-sticky-footer-space: 7rem;padding-bottom:calc(var(--val-form-sticky-footer-space) + env(safe-area-inset-bottom))}.section{margin-top:1rem}.input{margin:var(--val-form-field-gap, .5rem) 0}@media (min-width: 768px){.input{margin:var(--val-form-field-gap, .75rem) 0}}.submit-actions{display:block;width:100%;box-sizing:border-box}.submit-actions--sticky{position:sticky;bottom:0;z-index:20;width:calc(100% + var(--val-form-sticky-footer-bleed, 0px) * 2);margin-inline:calc(var(--val-form-sticky-footer-bleed, 0px) * -1);background:var(--ion-card-background, var(--ion-background-color, #ffffff));border-top:1px solid var(--ion-color-step-150, rgba(0, 0, 0, .08));box-shadow:0 -.25rem 1rem rgba(var(--ion-text-color-rgb, 0, 0, 0),.08);padding:.75rem var(--val-form-sticky-footer-inline-padding, var(--val-form-sticky-footer-bleed, 0px)) max(.75rem,env(safe-area-inset-bottom));isolation:isolate;transform:translateZ(0)}.field-description{display:block;font-size:.75rem;color:var(--ion-color-dark);margin-bottom:.25rem;line-height:1.4}.email-suggestion{margin:6px 0 0;font-size:.875rem;color:var(--ion-text-color, #000)}.email-suggestion__apply{padding:0;margin-left:4px;background:none;border:none;font:inherit;font-weight:700;color:var(--ion-color-primary);text-decoration:underline;cursor:pointer}\n"] }]
|
|
853
853
|
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i0.ElementRef }], propDecorators: { props: [{
|
|
854
854
|
type: Input
|
|
855
855
|
}], onSubmit: [{
|
|
@@ -861,4 +861,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
861
861
|
}], onSelectChange: [{
|
|
862
862
|
type: Output
|
|
863
863
|
}] } });
|
|
864
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2Zvcm0vZm9ybS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBR1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXVDLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBRXhGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxhQUFhLEVB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QiwyQkFBMkI7d0JBQzNCLG1CQUFtQjt3QkFDbkIsc0JBQXNCO3dCQUN0QiwyQkFBMkI7d0JBQzNCLG1CQUFtQjtxQkFDcEIsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErSVQ7eUdBS0QsS0FBSztzQkFESixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsTUFBTTtnQkFJUCxhQUFhO3NCQURaLE1BQU07Z0JBSVAsU0FBUztzQkFEUixNQUFNO2dCQUlQLGNBQWM7c0JBRGIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIERvQ2hlY2ssXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIGluamVjdCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4vaTE4bi5zZXJ2aWNlJztcbmltcG9ydCB7IHN1Z2dlc3RFbWFpbEZpeCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Zvcm1zL2VtYWlsLXN1Z2dlc3Rpb24nO1xuaW1wb3J0IHsgaXNBdEVuZCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC91dGlscy9kb20nO1xuaW1wb3J0IHsgRGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2Rpc3BsYXkvZGlzcGxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGl2aWRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2RpdmlkZXIvZGl2aWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90aXRsZS90aXRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uR3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvYnV0dG9uLWdyb3VwL2J1dHRvbi1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2hlY2tJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9jaGVjay1pbnB1dC9jaGVjay1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tbWVudElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2NvbW1lbnQtaW5wdXQvY29tbWVudC1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZVBpY2tlck1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2RhdGUtcGlja2VyL3R5cGVzJztcbmltcG9ydCB7IEZpbGVJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9maWxlLWlucHV0L2ZpbGUtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IEhpbnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvaGludC9oaW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOdW1iZXJGcm9tVG9Db21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvbnVtYmVyLWZyb20tdG8vbnVtYmVyLWZyb20tdG8uY29tcG9uZW50JztcbmltcG9ydCB7IFBhc3N3b3JkSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvcGFzc3dvcmQtaW5wdXQvcGFzc3dvcmQtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFBpbklucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3Bpbi1pbnB1dC9waW4taW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFJhZGlvSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvcmFkaW8taW5wdXQvcmFkaW8taW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaFNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3NlbGVjdC1pbnB1dC9zZWxlY3QtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFNlbGVjdFNlYXJjaENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9zZWxlY3Qtc2VhcmNoL3NlbGVjdC1zZWFyY2guY29tcG9uZW50JztcbmltcG9ydCB7IE11bHRpU2VsZWN0U2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL211bHRpLXNlbGVjdC1zZWFyY2gvbXVsdGktc2VsZWN0LXNlYXJjaC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3RleHQtaW5wdXQvdGV4dC1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dGFyZWFJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy90ZXh0YXJlYS1pbnB1dC90ZXh0YXJlYS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dGFyZWFJbnB1dE1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3RleHRhcmVhLWlucHV0L3R5cGVzJztcbmltcG9ydCB7IFBob25lSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvcGhvbmUtaW5wdXQvcGhvbmUtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFRvZ2dsZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3RvZ2dsZS1pbnB1dC90b2dnbGUtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IENoZWNrYm94UmFkaW9JbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9jaGVja2JveC1yYWRpby1pbnB1dC9jaGVja2JveC1yYWRpby1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2hpcFNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9jaGlwLXNlbGVjdC9jaGlwLXNlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXNlcm5hbWVJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy91c2VybmFtZS1pbnB1dC91c2VybmFtZS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXNlcm5hbWVJbnB1dE1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3VzZXJuYW1lLWlucHV0L3R5cGVzJztcbmltcG9ydCB7IEF0dGFjaG1lbnRVcGxvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2F0dGFjaG1lbnQtdXBsb2FkZXIvYXR0YWNobWVudC11cGxvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXR0YWNobWVudEl0ZW0gfSBmcm9tICcuLi9hdHRhY2htZW50LXVwbG9hZGVyL3R5cGVzJztcbmltcG9ydCB7IEJ1dHRvbk1ldGFkYXRhLCBDb21wb25lbnRTdGF0ZXMsIEZvcm1NZXRhZGF0YSwgRm9ybVN1Ym1pdCwgSW5wdXRNZXRhZGF0YSwgSW5wdXRUeXBlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtZm9ybScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBEaXNwbGF5Q29tcG9uZW50LFxuICAgIFRpdGxlQ29tcG9uZW50LFxuICAgIFRleHRJbnB1dENvbXBvbmVudCxcbiAgICBUZXh0YXJlYUlucHV0Q29tcG9uZW50LFxuICAgIENoZWNrSW5wdXRDb21wb25lbnQsXG4gICAgQnV0dG9uR3JvdXBDb21wb25lbnQsXG4gICAgRGl2aWRlckNvbXBvbmVudCxcbiAgICBIaW50Q29tcG9uZW50LFxuICAgIENvbW1lbnRJbnB1dENvbXBvbmVudCxcbiAgICBEYXRlSW5wdXRDb21wb25lbnQsXG4gICAgRmlsZUlucHV0Q29tcG9uZW50LFxuICAgIE51bWJlckZyb21Ub0NvbXBvbmVudCxcbiAgICBSYWRpb0lucHV0Q29tcG9uZW50LFxuICAgIFBhc3N3b3JkSW5wdXRDb21wb25lbnQsXG4gICAgUGluSW5wdXRDb21wb25lbnQsXG4gICAgU2VsZWN0U2VhcmNoQ29tcG9uZW50LFxuICAgIE11bHRpU2VsZWN0U2VhcmNoQ29tcG9uZW50LFxuICAgIFNlYXJjaFNlbGVjdG9yQ29tcG9uZW50LFxuICAgIFBob25lSW5wdXRDb21wb25lbnQsXG4gICAgVG9nZ2xlSW5wdXRDb21wb25lbnQsXG4gICAgQ2hlY2tib3hSYWRpb0lucHV0Q29tcG9uZW50LFxuICAgIENoaXBTZWxlY3RDb21wb25lbnQsXG4gICAgVXNlcm5hbWVJbnB1dENvbXBvbmVudCxcbiAgICBBdHRhY2htZW50VXBsb2FkZXJDb21wb25lbnQsXG4gICAgRGF0ZVBpY2tlckNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImNvbnRhaW5lclwiXG4gICAgICBbY2xhc3MuY29udGFpbmVyLS1zdGlja3ktZm9vdGVyXT1cInByb3BzLnN0aWNreUZvb3RlciAmJiAhcHJvcHMuY29udHJvbGxlZFwiXG4gICAgICBbc3R5bGUuLS12YWwtZm9ybS1maWVsZC1nYXBdPVwicHJvcHMuZmllbGRTcGFjaW5nICE9IG51bGwgPyBwcm9wcy5maWVsZFNwYWNpbmcgKyAncHgnIDogbnVsbFwiXG4gICAgPlxuICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gICAgICAgIEBpZiAocHJvcHMubmFtZSkge1xuICAgICAgICAgIDx2YWwtZGlzcGxheVxuICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgY29udGVudDogcHJvcHMubmFtZSxcbiAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgID48L3ZhbC1kaXNwbGF5PlxuICAgICAgICB9XG4gICAgICAgIEBmb3IgKHMgb2YgcHJvcHMuc2VjdGlvbnM7IHRyYWNrIHMubmFtZSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgICA8dmFsLXRpdGxlIFtwcm9wc109XCJ7IGNvbnRlbnQ6IHMubmFtZSwgc2l6ZTogJ2xhcmdlJywgY29sb3I6ICcnLCBib2xkOiBmYWxzZSB9XCI+PC92YWwtdGl0bGU+XG4gICAgICAgICAgICBAZm9yIChmIG9mIHMuZmllbGRzOyB0cmFjayBmLm5hbWUpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0XCIgW2F0dHIuZGF0YS10ZXN0aWRdPVwiZi50b2tlblwiPlxuICAgICAgICAgICAgICAgIEBpZiAoZi50eXBlICE9PSB0eXBlcy5QSE9ORSAmJiBmLnR5cGUgIT09IHR5cGVzLkhBTkRMRSAmJiBmLnR5cGUgIT09IHR5cGVzLkFUVEFDSE1FTlQpIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgW2F0dHIuaWRdPVwibGFiZWxJZChmKVwiPlxuICAgICAgICAgICAgICAgICAgICA8dmFsLXRpdGxlIFtwcm9wc109XCJ7IGNvbnRlbnQ6IGYubGFiZWwsIHNpemU6ICdzbWFsbCcsIGNvbG9yOiAnZGFyaycsIGJvbGQ6IGZhbHNlIH1cIj48L3ZhbC10aXRsZT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKGYuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmllbGQtZGVzY3JpcHRpb25cIj57eyBmLmRlc2NyaXB0aW9uIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAc3dpdGNoIChmLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgIEBjYXNlICh0eXBlcy5URVhUKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtdGV4dC1pbnB1dCBbcHJvcHNdPVwiZ2V0RmllbGRQcm9wKGYpXCI+PC92YWwtdGV4dC1pbnB1dD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBjYXNlICh0eXBlcy5URVhUQVJFQSkge1xuICAgICAgICAgICAgICAgICAgICA8dmFsLXRleHRhcmVhLWlucHV0IFtwcm9wc109XCJnZXRUZXh0YXJlYVByb3AoZilcIj48L3ZhbC10ZXh0YXJlYS1pbnB1dD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBjYXNlICh0eXBlcy5DSEVDSykge1xuICAgICAgICAgICAgICAgICAgICA8dmFsLWNoZWNrLWlucHV0IFtwcm9wc109XCJnZXRGaWVsZFByb3AoZilcIj48L3ZhbC1jaGVjay1pbnB1dD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBjYXNlICh0eXBlcy5DT01NRU5UKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtY29tbWVudC1pbnB1dCBbcHJvcHNdPVwiZ2V0RmllbGRQcm9wKGYpXCI+PC92YWwtY29tbWVudC1pbnB1dD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBjYXNlICh0eXBlcy5EQVRFKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtZGF0ZS1pbnB1dCBbcHJvcHNdPVwiZ2V0RmllbGRQcm9wKGYpXCI+PC92YWwtZGF0ZS1pbnB1dD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBjYXNlICh0eXBlcy5FTUFJTCkge1xuICAgICAgICAgICAgICAgICAgICA8dmFsLXRleHQtaW5wdXQgW3Byb3BzXT1cImdldFRleHRJbnB1dFByb3AoZiwgJ2VtYWlsJylcIj48L3ZhbC10ZXh0LWlucHV0PlxuICAgICAgICAgICAgICAgICAgICA8IS0tIFN1Z2VyZW5jaWEgZGUgZG9taW5pby4gU2UgT0ZSRUNFLCBubyBzZSBhcGxpY2Egc29sYTogdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICBkb21pbmlvIGNvcnBvcmF0aXZvIGxlZ8OtdGltbyBwdWVkZSBwYXJlY2Vyc2UgYSB1bm9cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXNpdm8sIHkgY29ycmVnaXJsbyBwb3Igc3UgY3VlbnRhIGxlIGNhbWJpYXLDrWEgZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICBjb3JyZW8gYSBhbGd1aWVuIHF1ZSBsbyBlc2NyaWJpw7MgYmllbi4gLS0+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoZW1haWxTdWdnZXN0aW9uRm9yKGYpOyBhcyBzdWdlcmlkbykge1xuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZW1haWwtc3VnZ2VzdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZW1haWxTdWdnZXN0aW9uUXVlc3Rpb24oc3VnZXJpZG8pIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImVtYWlsLXN1Z2dlc3Rpb25fX2FwcGx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFwcGx5RW1haWxTdWdnZXN0aW9uKGYsIHN1Z2VyaWRvKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGVtYWlsU3VnZ2VzdGlvbkFwcGx5TGFiZWwoKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAodHlwZXMuRklMRSkge1xuICAgICAgICAgICAgICAgICAgICA8dmFsLWZpbGUtaW5wdXQgW3Byb3BzXT1cImdldEZpZWxkUHJvcChmKVwiPjwvdmFsLWZpbGUtaW5wdXQ+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAodHlwZXMuSE9VUikge1xuICAgICAgICAgICAgICAgICAgICA8dmFsLXRleHQtaW5wdXQgW3Byb3BzXT1cImdldFRleHRJbnB1dFByb3AoZiwgJ3RpbWUnKVwiPjwvdmFsLXRleHQtaW5wdXQ+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAodHlwZXMuTlVNQkVSKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtdGV4dC1pbnB1dCBbcHJvcHNdPVwiZ2V0VGV4dElucHV0UHJvcChmLCAnbnVtYmVyJylcIj48L3ZhbC10ZXh0LWlucHV0PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLk5VTUJFUl9GUk9NX1RPKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtbnVtYmVyLWZyb20tdG8gW3Byb3BzXT1cImdldEZpZWxkUHJvcChmKVwiPjwvdmFsLW51bWJlci1mcm9tLXRvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLlBBU1NXT1JEKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtcGFzc3dvcmQtaW5wdXQgW3Byb3BzXT1cImdldEZpZWxkUHJvcChmKVwiPjwvdmFsLXBhc3N3b3JkLWlucHV0PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLlBJTl9DT0RFKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtcGluLWlucHV0IFtwcm9wc109XCJnZXRGaWVsZFByb3AoZilcIj48L3ZhbC1waW4taW5wdXQ+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAodHlwZXMuUkFESU8pIHtcbiAgICAgICAgICAgICAgICAgICAgPHZhbC1yYWRpby1pbnB1dCBbcHJvcHNdPVwiZ2V0RmllbGRQcm9wKGYpXCI+PC92YWwtcmFkaW8taW5wdXQ+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAodHlwZXMuU0VMRUNUKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtc2VsZWN0LWlucHV0IFtwcm9wc109XCJnZXRTZWxlY3RQcm9wKGYpXCI+PC92YWwtc2VsZWN0LWlucHV0PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLlNFQVJDSF9TRUxFQ1QpIHtcbiAgICAgICAgICAgICAgICAgICAgPHZhbC1zZWxlY3Qtc2VhcmNoIFtwcm9wc109XCJnZXRGaWVsZFByb3AoZilcIj48L3ZhbC1zZWxlY3Qtc2VhcmNoPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLk1VTFRJX1NFTEVDVCkge1xuICAgICAgICAgICAgICAgICAgICA8dmFsLW11bHRpLXNlbGVjdC1zZWFyY2ggW3Byb3BzXT1cImdldEZpZWxkUHJvcChmKVwiPjwvdmFsLW11bHRpLXNlbGVjdC1zZWFyY2g+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAodHlwZXMuUEhPTkUpIHtcbiAgICAgICAgICAgICAgICAgICAgPHZhbC1waG9uZS1pbnB1dCBbcHJvcHNdPVwiZ2V0RmllbGRQcm9wKGYpXCI+PC92YWwtcGhvbmUtaW5wdXQ+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAodHlwZXMuSEFORExFKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtdXNlcm5hbWUtaW5wdXQgW3Byb3BzXT1cImdldFVzZXJuYW1lUHJvcChmKVwiPjwvdmFsLXVzZXJuYW1lLWlucHV0PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLlRPR0dMRSkge1xuICAgICAgICAgICAgICAgICAgICA8dmFsLXRvZ2dsZS1pbnB1dCBbcHJvcHNdPVwiZ2V0RmllbGRQcm9wKGYpXCI+PC92YWwtdG9nZ2xlLWlucHV0PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLkNIRUNLQk9YX1JBRElPKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtY2hlY2tib3gtcmFkaW8taW5wdXQgW3Byb3BzXT1cImdldEZpZWxkUHJvcChmKVwiPjwvdmFsLWNoZWNrYm94LXJhZGlvLWlucHV0PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLkNISVBfU0VMRUNUKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtY2hpcC1zZWxlY3QgW3Byb3BzXT1cImdldEZpZWxkUHJvcChmKVwiPjwvdmFsLWNoaXAtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLkFUVEFDSE1FTlQpIHtcbiAgICAgICAgICAgICAgICAgICAgPHZhbC1hdHRhY2htZW50LXVwbG9hZGVyXG4gICAgICAgICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBmLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGludDogZi5oaW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgdXBsb2FkRm46IGYudXBsb2FkRm4sXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZi5zdGF0ZSA9PT0gc3RhdGVzLkRJU0FCTEVEIHx8IGYuc3RhdGUgPT09IHN0YXRlcy5XT1JLSU5HLFxuICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgIChhdHRhY2htZW50c0NoYW5nZSk9XCJvbkF0dGFjaG1lbnRDaGFuZ2UoZi5uYW1lLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvdmFsLWF0dGFjaG1lbnQtdXBsb2FkZXI+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAodHlwZXMuREFURV9QSUNLRVIpIHtcbiAgICAgICAgICAgICAgICAgICAgPHZhbC1kYXRlLXBpY2tlciBbcHJvcHNdPVwiZ2V0RGF0ZVBpY2tlclByb3AoZilcIj48L3ZhbC1kYXRlLXBpY2tlcj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPHZhbC1oaW50IFtwcm9wc109XCJnZXRGaWVsZFByb3AoZilcIiBbaWRdPVwiZXJyb3JJZChmKVwiPjwvdmFsLWhpbnQ+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChwcm9wcy5zaG93RGl2aWRlcnMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIDx2YWwtZGl2aWRlciBbcHJvcHNdPVwieyBmaWxsOiAnc29saWQnLCBzaXplOiAnbWVkaXVtJywgY29sb3I6ICdtZWRpdW0nIH1cIj48L3ZhbC1kaXZpZGVyPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoIXByb3BzLmNvbnRyb2xsZWQpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VibWl0LWFjdGlvbnNcIiBbY2xhc3Muc3VibWl0LWFjdGlvbnMtLXN0aWNreV09XCJwcm9wcy5zdGlja3lGb290ZXJcIj5cbiAgICAgICAgICAgIDx2YWwtYnV0dG9uLWdyb3VwXG4gICAgICAgICAgICAgIFtwcm9wc109XCJ7IGJ1dHRvbnM6IGFjdGlvbnMsIHBvc2l0aW9uOiAnY2VudGVyJywgY29sdW1uZWQ6IGZhbHNlIH1cIlxuICAgICAgICAgICAgICAob25DbGljayk9XCJzdWJtaXRIYW5kbGVyKCRldmVudClcIlxuICAgICAgICAgICAgPjwvdmFsLWJ1dHRvbi1ncm91cD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9mb3JtPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgRG9DaGVjayB7XG4gIEBJbnB1dCgpXG4gIHByb3BzOiBGb3JtTWV0YWRhdGE7XG5cbiAgQE91dHB1dCgpXG4gIG9uU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtU3VibWl0PigpO1xuXG4gIEBPdXRwdXQoKVxuICBvblZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oKTtcblxuICBAT3V0cHV0KClcbiAgb25JbnZhbGlkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBvblNlbGVjdENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBmaWVsZDogc3RyaW5nOyB2YWx1ZTogYW55IH0+KCk7XG5cbiAgZm9ybTogRm9ybUdyb3VwO1xuICB0eXBlcyA9IElucHV0VHlwZTtcbiAgc3RhdGVzID0gQ29tcG9uZW50U3RhdGVzO1xuXG4gIC8qKlxuICAgKiBWYWxvciBhY3R1YWwgZGVsIGZvcm0gKGBmb3JtLmdldFJhd1ZhbHVlKClgKSwgYWN0dWFsaXphZG8gZW4gY2FkYVxuICAgKiBgdmFsdWVDaGFuZ2VzYC4gUGVuc2FkbyBwYXJhIGVsIG1vZG8gYGNvbnRyb2xsZWRgOiBlbCBob3N0IGxvIGxlZSB2w61hXG4gICAqIGBAVmlld0NoaWxkKEZvcm1Db21wb25lbnQpYCBzaW4gdG9jYXIgZWwgRm9ybUdyb3VwIGRpcmVjdG8uIEVuIG1vZG8gbm9ybWFsXG4gICAqIHRhbWJpw6luIGVzdMOhIGRpc3BvbmlibGUuXG4gICAqL1xuICByZWFkb25seSB2YWx1ZSA9IHNpZ25hbDxSZWNvcmQ8c3RyaW5nLCBhbnk+Pih7fSk7XG5cbiAgLyoqXG4gICAqIEVzdGFkbyBkZSB2YWxpZGV6IGRlbCBmb3JtLCBhY3R1YWxpemFkbyBlbiBjYWRhIGBzdGF0dXNDaGFuZ2VzYC4gUGFyYSBxdWVcbiAgICogZWwgaG9zdCAod2l6YXJkKSBoYWJpbGl0ZS9kZXNoYWJpbGl0ZSBzdSBib3TDs24gXCJTaWd1aWVudGVcIi5cbiAgICovXG4gIHJlYWRvbmx5IHZhbGlkID0gc2lnbmFsKGZhbHNlKTtcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgcHJpdmF0ZSBhY3Rpb25zQ2FjaGU6IEJ1dHRvbk1ldGFkYXRhW10gPSBbXTtcblxuICAvLyBNZW1vIGRlIGdldEZpZWxkUHJvcC9nZXRVc2VybmFtZVByb3AgcG9yIHJlZmVyZW5jaWEgZGUgZmllbGQg4oCUIGV2aXRhXG4gIC8vIGNyZWFyIHVuIG51ZXZvIG9iamV0byBwcm9wcyBwb3Iga2V5c3Ryb2tlIChjYWRhIENEIGN5Y2xlIGludm9jYXLDrWEgZWxcbiAgLy8gdGVtcGxhdGUgYmluZGluZywgbXVsdGlwbGljYW5kbyByZS1yZW5kZXJzIGVuIGNhc2NhZGEgcG9yICMgZmllbGRzKS5cbiAgLy8gV2Vha01hcDogc2kgbGEgcmVmZXJlbmNpYSBkZWwgZmllbGQgY2FtYmlhLCBlbCBjYWNoZSBzZSBsaWJlcmEuXG4gIHByaXZhdGUgZmllbGRQcm9wTWVtbyA9IG5ldyBXZWFrTWFwPElucHV0TWV0YWRhdGEsIElucHV0TWV0YWRhdGE+KCk7XG4gIHByaXZhdGUgdXNlcm5hbWVQcm9wTWVtbyA9IG5ldyBXZWFrTWFwPElucHV0TWV0YWRhdGEsIFVzZXJuYW1lSW5wdXRNZXRhZGF0YT4oKTtcbiAgcHJpdmF0ZSB0ZXh0YXJlYVByb3BNZW1vID0gbmV3IFdlYWtNYXA8SW5wdXRNZXRhZGF0YSwgVGV4dGFyZWFJbnB1dE1ldGFkYXRhPigpO1xuICBwcml2YXRlIHNlbGVjdFByb3BNZW1vID0gbmV3IFdlYWtNYXA8SW5wdXRNZXRhZGF0YSwgSW5wdXRNZXRhZGF0YT4oKTtcbiAgLy8gTWVtbyBkZSBwcm9wcyBjb24gdW4gaW5wdXRUeXBlIEhUTUwgaW55ZWN0YWRvIChFTUFJTC9OVU1CRVIvSE9VUiBjb2xhcHNhZG9zXG4gIC8vIGVuIHZhbC10ZXh0LWlucHV0KS4gQ2xhdmUgcG9yIGZpZWxkIHBhcmEgY29uc2VydmFyIGlkZW50aWRhZCBkZSByZWZlcmVuY2lhLlxuICBwcml2YXRlIHRleHRJbnB1dFByb3BNZW1vID0gbmV3IFdlYWtNYXA8SW5wdXRNZXRhZGF0YSwgSW5wdXRNZXRhZGF0YT4oKTtcbiAgcHJpdmF0ZSBkYXRlUGlja2VyUHJvcE1lbW8gPSBuZXcgV2Vha01hcDxJbnB1dE1ldGFkYXRhLCBEYXRlUGlja2VyTWV0YWRhdGE+KCk7XG5cbiAgLy8gSWRzIGVzdGFibGVzIHBvciBmaWVsZCBwYXJhIGVsIHdpcmluZyBkZSBhY2Nlc2liaWxpZGFkIGxhYmVs4oaUaW5wdXTihpRlcnJvci5cbiAgLy8gRXN0YWJsZXMgZW50cmUgQ0QgY3ljbGVzIChtZW1vaXphZG9zIHBvciByZWZlcmVuY2lhIGRlIGZpZWxkKSDihpIgYXJpYS0qIG5vIHBhcnBhZGVhLlxuICBwcml2YXRlIGZpZWxkSWRNZW1vID0gbmV3IFdlYWtNYXA8SW5wdXRNZXRhZGF0YSwgeyBsYWJlbElkOiBzdHJpbmc7IGVycm9ySWQ6IHN0cmluZyB9PigpO1xuICBwcml2YXRlIGZpZWxkVWlkID0gMDtcblxuICAvLyBFc3RhZG8gcHJldmlvIHBhcmEgZGV0ZWN0YXIgY2FtYmlvcyBlbiBuZ0RvQ2hlY2tcbiAgcHJpdmF0ZSBwcmV2aW91c1N0YXRlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcHJldmlvdXNVcGxvYWRpbmdDb3VudCA9IDA7XG5cbiAgLy8gQ2FtcG9zIEFUVEFDSE1FTlQgY29uIHVwbG9hZHMgZW4gY3Vyc28g4oCUIGJsb3F1ZWEgc3VibWl0ICsgREVTSEFCSUxJVEEgZWxcbiAgLy8gYm90w7NuIChubyBsb2FkaW5nOiBlbCBzcGlubmVyIHNlIHJlc2VydmEgcGFyYSBlbCBzdWJtaXQgcmVhbCBkZWwgZm9ybSkuXG4gIHByaXZhdGUgdXBsb2FkaW5nRmllbGRzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmXG4gICkge31cblxuICAvKiogQXJtYSBsYSBkZWZpbmljacOzbiBkZSBjb250cm9sZXMgKHZhbG9yIGluaWNpYWwgKyB2YWxpZGFkb3JlcykgZGVzZGUgYHByb3BzYC4gKi9cbiAgcHJpdmF0ZSBidWlsZEZvcm1Db250cm9sc0RlZigpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgY29uc3QgZm9ybUNvbnRyb2xzID0ge307XG4gICAgdGhpcy5wcm9wcy5zZWN0aW9ucy5mb3JFYWNoKHNlY3Rpb24gPT4ge1xuICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgIC8vIEhvbnJhIGBmaWVsZC52YWx1ZWAgYWwgY29uc3RydWlyIGVsIEZvcm1Hcm91cCBwYXJhIHF1ZSBjb250cm9sZXMgdGlwb1xuICAgICAgICAvLyBIQU5ETEUgKHF1ZSBjb25zdW1lbiBlbCBjb250cm9sIGRpcmVjdG8gdmlhIFtmb3JtQ29udHJvbF0pIHJlY2liYW4gZWxcbiAgICAgICAgLy8gdmFsb3IgaW5pY2lhbCBzaW4gcXVlIGVsIGNhbGxlciB0ZW5nYSBxdWUgcGF0Y2hWYWx1ZSBwb3N0LW1vdW50LlxuICAgICAgICAvLyBFbCBoZWxwZXIgYXBwbHlEZWZhdWx0VmFsdWVUb0NvbnRyb2wgKHZhbC10ZXh0LWlucHV0IGV0Yy4pIHNpZ3VlXG4gICAgICAgIC8vIGZ1bmNpb25hbmRvIOKAlCBlc2NyaWJlIHNvYnJlIHVuIGNvbnRyb2wgeWEgaW5pY2lhbGl6YWRvLCBpZGVtcG90ZW50ZS5cbiAgICAgICAgY29uc3QgaW5pdGlhbFZhbHVlID0gZmllbGQudmFsdWUgPz8gbnVsbDtcbiAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09IHRoaXMudHlwZXMuTlVNQkVSX0ZST01fVE8pIHtcbiAgICAgICAgICAvLyBDcmVhciBkb3MgY29udHJvbGVzIHBhcmEgY2FtcG9zIE5VTUJFUl9GUk9NX1RPXG4gICAgICAgICAgZm9ybUNvbnRyb2xzW2Ake2ZpZWxkLm5hbWV9X2Zyb21gXSA9IFtpbml0aWFsVmFsdWUsIGZpZWxkLnZhbGlkYXRvcnMgfHwgW11dO1xuICAgICAgICAgIGZvcm1Db250cm9sc1tgJHtmaWVsZC5uYW1lfV90b2BdID0gW2luaXRpYWxWYWx1ZSwgZmllbGQudmFsaWRhdG9ycyB8fCBbXV07XG4gICAgICAgIH0gZWxzZSBpZiAoZmllbGQudHlwZSA9PT0gdGhpcy50eXBlcy5BVFRBQ0hNRU5UKSB7XG4gICAgICAgICAgZm9ybUNvbnRyb2xzW2ZpZWxkLm5hbWVdID0gW1tdLCBmaWVsZC52YWxpZGF0b3JzIHx8IFtdXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmb3JtQ29udHJvbHNbZmllbGQubmFtZV0gPSBbaW5pdGlhbFZhbHVlLCBmaWVsZC52YWxpZGF0b3JzIHx8IFtdXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGZvcm1Db250cm9scztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNvbnN0cnV5ZSBlbCBgRm9ybUdyb3VwYCBkZXNkZSBjZXJvLCBjb24gbG9zIHZhbG9yZXMgaW5pY2lhbGVzIGRlIGBwcm9wc2BcbiAgICogYWN0dWFsZXMgKG5vIGxvcyBxdWUgZWwgdXN1YXJpbyBoYXlhIHRlY2xlYWRvIGRlc2RlIGVudG9uY2VzKS5cbiAgICpcbiAgICogRXhpc3RlIHBhcmEgZWwgY2FzbyBlbiBxdWUgQW5ndWxhciBOTyBkZXN0cnV5ZSBlbCBjb21wb25lbnRlIGVudHJlIGRvcyB1c29zXG4gICAqIOKAlCB0w61waWNhbWVudGUgYElvbmljUm91dGVTdHJhdGVneWAsIHF1ZSBjYWNoZWEgbGEgcMOhZ2luYSBydXRlYWRhIGFsIG5hdmVnYXJcbiAgICogYWZ1ZXJhIHkgbGEgcmV1dGlsaXphIGFsIHZvbHZlciBzaW4gY29ycmVyIGBuZ09uSW5pdGAgZGUgbnVldm8uIFNpbiBlc3RvLFxuICAgKiB1biBmb3JtIGRlIGxvZ2luIG1hbnRpZW5lIGxvIHF1ZSBlbCB1c3VhcmlvIGFudGVyaW9yIHRlY2xlw7MgZGVzcHXDqXMgZGVcbiAgICogY2VycmFyIHNlc2nDs24geSB2b2x2ZXIgYSBgL2xvZ2luYDogZWwgYEZvcm1Hcm91cGAgc2UgY29uc3RydXnDsyBVTkEgdmV6IHlcbiAgICogbmFkaWUgbG8gdG9jw7MgZGVzZGUgZW50b25jZXMuXG4gICAqXG4gICAqIFJlY29uc3RydXllIGVsIGBGb3JtR3JvdXBgIGVudGVybyAobm8gYC5yZXNldCh2YWx1ZXMpYCkgcG9ycXVlIGxhXG4gICAqIGRlZmluaWNpw7NuIHRyYWUgYFt2YWxvciwgdmFsaWRhdG9yc11gIHBvciBjb250cm9sLCBubyB2YWxvcmVzIHBsYW5vcyDigJRcbiAgICogcmV1c2FyIGBidWlsZEZvcm1Db250cm9sc0RlZigpYCB0YWwgY3VhbCBldml0YSBtYW50ZW5lciBkb3MgZm9ybWFzIGRlXG4gICAqIGNhbGN1bGFyIFwiY3XDoWwgZXMgZWwgdmFsb3IgaW5pY2lhbFwiIHF1ZSBwdWVkYW4gZGVzaW5jcm9uaXphcnNlLlxuICAgKlxuICAgKiBFbCBjYWxsZXIgKHTDrXBpY2FtZW50ZSBgdmFsLWxvZ2luYCwgdsOtYSBgaW9uVmlld1dpbGxFbnRlcmApIGRlY2lkZSBDVcOBTkRPXG4gICAqIGxsYW1hcmxvIOKAlCBhY8OhIG5vIGhheSBoZXVyw61zdGljYSBkZSBcImN1w6FuZG8gcmVzZXRlYXJcIiwgcG9ycXVlIHVuIGZvcm0gZGVcbiAgICogdmFyaW9zIHBhc29zIHPDrSBwb2Ryw61hIHF1ZXJlciBjb25zZXJ2YXIgbG8gdGVjbGVhZG8gYWwgdm9sdmVyIGEgdW5hXG4gICAqIHBlc3Rhw7FhLlxuICAgKi9cbiAgcmVzZXRGb3JtKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5mb3JtKSByZXR1cm47XG4gICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cCh0aGlzLmJ1aWxkRm9ybUNvbnRyb2xzRGVmKCkpO1xuICAgIHRoaXMudmFsdWUuc2V0KHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKTtcbiAgICB0aGlzLnZhbGlkLnNldCh0aGlzLmZvcm0udmFsaWQpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cCh0aGlzLmJ1aWxkRm9ybUNvbnRyb2xzRGVmKCkpO1xuICAgIHRoaXMucHJvcHMuc2VjdGlvbnMuZm9yRWFjaChzZWN0aW9uID0+IHtcbiAgICAgIHNlY3Rpb24uZmllbGRzXG4gICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgeCA9PlxuICAgICAgICAgICAgeC50eXBlID09PSB0aGlzLnR5cGVzLlNFTEVDVCB8fFxuICAgICAgICAgICAgeC50eXBlID09PSB0aGlzLnR5cGVzLlRFWFQgfHxcbiAgICAgICAgICAgIHgudHlwZSA9PT0gdGhpcy50eXBlcy5TRUFSQ0hfU0VMRUNUIHx8XG4gICAgICAgICAgICB4LnR5cGUgPT09IHRoaXMudHlwZXMuTVVMVElfU0VMRUNUXG4gICAgICAgIClcbiAgICAgICAgLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgIHRoaXMudHJhY2tTZWxlY3RDaGFuZ2VzKGZpZWxkLm5hbWUpO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIC8vIEVzdGFkbyByZWFjdGl2byBww7pibGljbyAodmFsdWUvdmFsaWQpIOKAlCBhY3R1YWxpemFkbyBwb3Igc3VzY3JpcGNpw7NuIFJ4SlMsXG4gICAgLy8gTk8gZGVudHJvIGRlIHVuIGVmZmVjdDogc2V0ZWFyIHNpZ25hbHMgYWPDoSBlcyBzZWd1cm8gKG5vIGRpc3BhcmEgTkcwNjAwKS5cbiAgICB0aGlzLnZhbHVlLnNldCh0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKSk7XG4gICAgdGhpcy52YWxpZC5zZXQodGhpcy5mb3JtLnZhbGlkKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3QgcmF3VmFsdWUgPSB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKTtcbiAgICAgICAgdGhpcy52YWx1ZS5zZXQocmF3VmFsdWUpO1xuICAgICAgICB0aGlzLm9uVmFsdWVDaGFuZ2UuZW1pdChyYXdWYWx1ZSk7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5mb3JtLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMudmFsaWQuc2V0KHRoaXMuZm9ybS52YWxpZCkpKTtcblxuICAgIHRoaXMuc3luY0ZpZWxkQ29udHJvbFN0YXRlcygpO1xuICAgIHRoaXMudXBkYXRlQWN0aW9uc0NhY2hlKCk7XG4gICAgdGhpcy5wcmV2aW91c1N0YXRlID0gdGhpcy5wcm9wcy5zdGF0ZTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAvLyBDdWFuZG8gcHJvcHMgY2FtYmlhLCByZWNvbnN0cnVpciBlbCBjYWNoZVxuICAgIGlmIChjaGFuZ2VzWydwcm9wcyddICYmIHRoaXMuZm9ybSkge1xuICAgICAgdGhpcy5wYXRjaEluaXRpYWxWYWx1ZXNGcm9tUHJvcHMoKTtcbiAgICAgIHRoaXMuc3luY0ZpZWxkQ29udHJvbFN0YXRlcygpO1xuICAgICAgdGhpcy51cGRhdGVBY3Rpb25zQ2FjaGUoKTtcbiAgICAgIHRoaXMucHJldmlvdXNTdGF0ZSA9IHRoaXMucHJvcHMuc3RhdGU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwYXRjaEluaXRpYWxWYWx1ZXNGcm9tUHJvcHMoKTogdm9pZCB7XG4gICAgdGhpcy5wcm9wcy5zZWN0aW9ucy5mb3JFYWNoKHNlY3Rpb24gPT4ge1xuICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgIGlmIChmaWVsZC52YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGZpZWxkLnR5cGUgPT09IHRoaXMudHlwZXMuQVRUQUNITUVOVCkgcmV0dXJuO1xuICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gdGhpcy50eXBlcy5OVU1CRVJfRlJPTV9UTykge1xuICAgICAgICAgIHRoaXMuZm9ybS5nZXQoYCR7ZmllbGQubmFtZX1fZnJvbWApPy5wYXRjaFZhbHVlKGZpZWxkLnZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgdGhpcy5mb3JtLmdldChgJHtmaWVsZC5uYW1lfV90b2ApPy5wYXRjaFZhbHVlKGZpZWxkLnZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoZmllbGQubmFtZSk/LnBhdGNoVmFsdWUoZmllbGQudmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHRoaXMudmFsdWUuc2V0KHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKTtcbiAgICB0aGlzLnZhbGlkLnNldCh0aGlzLmZvcm0udmFsaWQpO1xuICB9XG5cbiAgbmdEb0NoZWNrKCkge1xuICAgIC8vIERldGVjdGFyIGNhbWJpb3MgZW4gZWwgZXN0YWRvIGRlbCBmb3JtdWxhcmlvIChtdXRhY2nDs24gc2luIGNhbWJpYXIgcmVmZXJlbmNpYSlcbiAgICBjb25zdCB1cGxvYWRpbmdDb3VudCA9IHRoaXMudXBsb2FkaW5nRmllbGRzLnNpemU7XG4gICAgaWYgKFxuICAgICAgdGhpcy5mb3JtICYmXG4gICAgICB0aGlzLnByb3BzICYmXG4gICAgICAodGhpcy5wcm9wcy5zdGF0ZSAhPT0gdGhpcy5wcmV2aW91c1N0YXRlIHx8IHVwbG9hZGluZ0NvdW50ICE9PSB0aGlzLnByZXZpb3VzVXBsb2FkaW5nQ291bnQpXG4gICAgKSB7XG4gICAgICB0aGlzLnByZXZpb3VzU3RhdGUgPSB0aGlzLnByb3BzLnN0YXRlO1xuICAgICAgdGhpcy5wcmV2aW91c1VwbG9hZGluZ0NvdW50ID0gdXBsb2FkaW5nQ291bnQ7XG4gICAgICB0aGlzLnVwZGF0ZUFjdGlvbnNDYWNoZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTeW5jaHJvbml6ZXMgZm9ybSBjb250cm9sIGRpc2FibGVkL2VuYWJsZWQgc3RhdGUgd2l0aCBmaWVsZCBtZXRhZGF0YS5cbiAgICovXG4gIHByaXZhdGUgc3luY0ZpZWxkQ29udHJvbFN0YXRlcygpIHtcbiAgICB0aGlzLnByb3BzLnNlY3Rpb25zLmZvckVhY2goc2VjdGlvbiA9PiB7XG4gICAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09IHRoaXMudHlwZXMuQVRUQUNITUVOVCkgcmV0dXJuO1xuICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gdGhpcy50eXBlcy5OVU1CRVJfRlJPTV9UTykge1xuICAgICAgICAgIGNvbnN0IGZyb21Db250cm9sID0gdGhpcy5nZXRDb250cm9sKGAke2ZpZWxkLm5hbWV9X2Zyb21gKTtcbiAgICAgICAgICBjb25zdCB0b0NvbnRyb2wgPSB0aGlzLmdldENvbnRyb2woYCR7ZmllbGQubmFtZX1fdG9gKTtcblxuICAgICAgICAgIGlmIChmaWVsZC5zdGF0ZSA9PT0gQ29tcG9uZW50U3RhdGVzLkRJU0FCTEVEKSB7XG4gICAgICAgICAgICBmcm9tQ29udHJvbC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgIHRvQ29udHJvbC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZnJvbUNvbnRyb2wuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgIHRvQ29udHJvbC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5nZXRDb250cm9sKGZpZWxkLm5hbWUpO1xuICAgICAgICAgIGlmIChmaWVsZC5zdGF0ZSA9PT0gQ29tcG9uZW50U3RhdGVzLkRJU0FCTEVEKSB7XG4gICAgICAgICAgICBjb250cm9sLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb250cm9sLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3R1YWxpemEgZWwgY2FjaGUgZGUgYWN0aW9ucyBiYXNhZG8gZW4gZWwgZXN0YWRvIGFjdHVhbCBkZWwgZm9ybS5cbiAgICovXG4gIHByaXZhdGUgdXBkYXRlQWN0aW9uc0NhY2hlKCkge1xuICAgIC8vIEVuIG1vZG8gY29udHJvbGxlZCAobyBzaW4gc3VibWl0KSBubyBoYXkgYm90w7NuIHByb3BpbyBxdWUgY2FjaGVhci5cbiAgICBpZiAoIXRoaXMucHJvcHMuYWN0aW9ucykge1xuICAgICAgdGhpcy5hY3Rpb25zQ2FjaGUgPSBbXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IGFjdGlvblN0YXRlID0gdGhpcy5wcm9wcy5hY3Rpb25zLnN0YXRlO1xuXG4gICAgaWYgKHRoaXMucHJvcHMuc3RhdGUgPT09IENvbXBvbmVudFN0YXRlcy5XT1JLSU5HKSB7XG4gICAgICAvLyBTdWJtaXQgcmVhbCBkZWwgZm9ybSBlbiBjdXJzbyDihpIgYm90w7NuIGVuIGxvYWRpbmcgKHNwaW5uZXIpLlxuICAgICAgYWN0aW9uU3RhdGUgPSBDb21wb25lbnRTdGF0ZXMuV09SS0lORztcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMuc3RhdGUgPT09IENvbXBvbmVudFN0YXRlcy5ESVNBQkxFRCB8fCB0aGlzLnVwbG9hZGluZ0ZpZWxkcy5zaXplID4gMCkge1xuICAgICAgLy8gU3ViaWRhIGRlIGFkanVudG8gZW4gY3Vyc28g4oaSIERFU0hBQklMSVRBUiBlbCBzdWJtaXQsIE5PIGxvYWRpbmc6IHRvZGF2w61hXG4gICAgICAvLyBubyBzZSBlc3TDoSBlbnZpYW5kbyBlbCBmb3JtLCBzb2xvIHN1YmllbmRvIHVuIGFyY2hpdm8uIFVuIHNwaW5uZXIgYWPDoVxuICAgICAgLy8gY29uZnVuZGUgKHBhcmVjZSBxdWUgZWwgZm9ybSBzZSBlc3TDoSBlbnZpYW5kbykuXG4gICAgICBhY3Rpb25TdGF0ZSA9IENvbXBvbmVudFN0YXRlcy5ESVNBQkxFRDtcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMuc3RhdGUgPT09IENvbXBvbmVudFN0YXRlcy5FTkFCTEVEIHx8IHRoaXMuZm9ybT8udmFsaWQpIHtcbiAgICAgIGFjdGlvblN0YXRlID0gQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQ7XG4gICAgfVxuXG4gICAgdGhpcy5hY3Rpb25zQ2FjaGUgPSBbeyAuLi50aGlzLnByb3BzLmFjdGlvbnMsIHN0YXRlOiBhY3Rpb25TdGF0ZSB9XTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIC8vIENsZWFudXAgc3Vic2NyaXB0aW9ucyB0byBhdm9pZCBtZW1vcnkgbGVha3NcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWIgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgdHJhY2tTZWxlY3RDaGFuZ2VzKGZpZWxkTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZ2V0Q29udHJvbChmaWVsZE5hbWUpO1xuICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IGNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICB0aGlzLm9uU2VsZWN0Q2hhbmdlLmVtaXQoeyBmaWVsZDogZmllbGROYW1lLCB2YWx1ZSB9KTtcbiAgICB9KTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzdWJzY3JpcHRpb24pO1xuICB9XG5cbiAgYXN5bmMgc3VibWl0SGFuZGxlcih0b2tlbj86IHN0cmluZykge1xuICAgIGlmICh0aGlzLnVwbG9hZGluZ0ZpZWxkcy5zaXplID4gMCkgcmV0dXJuO1xuICAgIGlmICghdGhpcy5mb3JtLnZhbGlkKSB7XG4gICAgICB0aGlzLmZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgICAgdGhpcy5vbkludmFsaWQuZW1pdCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9uU3VibWl0LmVtaXQoeyBmaWVsZHM6IHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpLCB0b2tlbiB9KTtcbiAgfVxuXG4gIG9uQXR0YWNobWVudENoYW5nZShmaWVsZE5hbWU6IHN0cmluZywgaXRlbXM6IEF0dGFjaG1lbnRJdGVtW10pOiB2b2lkIHtcbiAgICBjb25zdCByZWFkeVVybHMgPSBpdGVtcy5maWx0ZXIoYSA9PiBhLnN0YXR1cyA9PT0gJ3JlYWR5JyAmJiBhLnVybCkubWFwKGEgPT4gYS51cmwhKTtcbiAgICB0aGlzLmZvcm0uZ2V0KGZpZWxkTmFtZSk/LnNldFZhbHVlKHJlYWR5VXJscywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIGlmIChpdGVtcy5zb21lKGEgPT4gYS5zdGF0dXMgPT09ICd1cGxvYWRpbmcnKSkge1xuICAgICAgdGhpcy51cGxvYWRpbmdGaWVsZHMuYWRkKGZpZWxkTmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBsb2FkaW5nRmllbGRzLmRlbGV0ZShmaWVsZE5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIGdldENvbnRyb2woZmllbGQ6IHN0cmluZyk6IEZvcm1Db250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5Gb3JtLmdldChmaWVsZCkgYXMgRm9ybUNvbnRyb2w7XG4gIH1cblxuICAvKipcbiAgICogSWRzIGVzdGFibGVzIChsYWJlbCArIGVycm9yKSBwYXJhIHVuIGZpZWxkLiBNZW1vaXphZG9zIHBvciByZWZlcmVuY2lhIHBhcmFcbiAgICogcXVlIGVsIHdpcmluZyBgYXJpYS1sYWJlbGxlZGJ5YCAvIGBhcmlhLWRlc2NyaWJlZGJ5YCBubyBjYW1iaWUgZW50cmUgY2ljbG9zXG4gICAqIGRlIGNoYW5nZSBkZXRlY3Rpb24uXG4gICAqL1xuICBwcml2YXRlIGZpZWxkSWRzKGZpZWxkOiBJbnB1dE1ldGFkYXRhKTogeyBsYWJlbElkOiBzdHJpbmc7IGVycm9ySWQ6IHN0cmluZyB9IHtcbiAgICBsZXQgaWRzID0gdGhpcy5maWVsZElkTWVtby5nZXQoZmllbGQpO1xuICAgIGlmICghaWRzKSB7XG4gICAgICBjb25zdCBiYXNlID0gYHZhbC1mb3JtLWZpZWxkLSR7dGhpcy5maWVsZFVpZCsrfWA7XG4gICAgICBpZHMgPSB7IGxhYmVsSWQ6IGAke2Jhc2V9LWxhYmVsYCwgZXJyb3JJZDogYCR7YmFzZX0tZXJyb3JgIH07XG4gICAgICB0aGlzLmZpZWxkSWRNZW1vLnNldChmaWVsZCwgaWRzKTtcbiAgICB9XG4gICAgcmV0dXJuIGlkcztcbiAgfVxuXG4gIC8qKiBJZCBkZWwgbGFiZWwgdmlzaWJsZSBkZWwgY2FtcG8gKGNvbnN1bWlkbyBwb3IgZWwgdGVtcGxhdGUgKyBlbCBpbnB1dCkuICovXG4gIGxhYmVsSWQoZmllbGQ6IElucHV0TWV0YWRhdGEpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZpZWxkSWRzKGZpZWxkKS5sYWJlbElkO1xuICB9XG5cbiAgLyoqIElkIGRlbCBjb250ZW5lZG9yIGRlIGVycm9yIChgdmFsLWhpbnRgKSBkZWwgY2FtcG8uICovXG4gIGVycm9ySWQoZmllbGQ6IElucHV0TWV0YWRhdGEpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZpZWxkSWRzKGZpZWxkKS5lcnJvcklkO1xuICB9XG5cbiAgZ2V0RmllbGRQcm9wKGZpZWxkOiBJbnB1dE1ldGFkYXRhKTogSW5wdXRNZXRhZGF0YSB7XG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy5maWVsZFByb3BNZW1vLmdldChmaWVsZCk7XG4gICAgaWYgKGNhY2hlZCkgcmV0dXJuIGNhY2hlZDtcblxuICAgIGlmICghZmllbGQudG9rZW4pIHtcbiAgICAgIGZpZWxkLnRva2VuID0gYGlucHV0LSR7ZmllbGQudHlwZX0tJHtmaWVsZC5uYW1lfWA7XG4gICAgfVxuXG4gICAgY29uc3QgaWRzID0gdGhpcy5maWVsZElkcyhmaWVsZCk7XG5cbiAgICBsZXQgcmVzdWx0OiBJbnB1dE1ldGFkYXRhO1xuICAgIGlmIChmaWVsZC50eXBlID09PSB0aGlzLnR5cGVzLk5VTUJFUl9GUk9NX1RPKSB7XG4gICAgICBjb25zdCBmcm9tQ29udHJvbCA9IHRoaXMuZ2V0Q29udHJvbChgJHtmaWVsZC5uYW1lfV9mcm9tYCk7XG4gICAgICBjb25zdCB0b0NvbnRyb2wgPSB0aGlzLmdldENvbnRyb2woYCR7ZmllbGQubmFtZX1fdG9gKTtcbiAgICAgIHJlc3VsdCA9IHsgLi4uZmllbGQsIGZyb21Db250cm9sLCB0b0NvbnRyb2wsIGNvbnRyb2w6IHVuZGVmaW5lZCwgbGFiZWxJZDogaWRzLmxhYmVsSWQsIGVycm9ySWQ6IGlkcy5lcnJvcklkIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmdldENvbnRyb2woZmllbGQubmFtZSk7XG4gICAgICByZXN1bHQgPSB7IC4uLmZpZWxkLCBjb250cm9sLCBsYWJlbElkOiBpZHMubGFiZWxJZCwgZXJyb3JJZDogaWRzLmVycm9ySWQgfTtcbiAgICB9XG4gICAgdGhpcy5maWVsZFByb3BNZW1vLnNldChmaWVsZCwgcmVzdWx0KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkYXB0ZXIgcGFyYSBsb3MgdGlwb3MgY29sYXBzYWRvcyBlbiBgdmFsLXRleHQtaW5wdXRgIChFTUFJTC9OVU1CRVIvSE9VUikuXG4gICAqIFJldXNhIGBnZXRGaWVsZFByb3BgIChjb24gc3UgY29udHJvbCArIHdpcmluZyBkZSBpZHMpIGUgaW55ZWN0YSBlbCBgaW5wdXRUeXBlYFxuICAgKiBIVE1MIG5hdGl2by4gTWVtb2l6YWRvIHBvciByZWZlcmVuY2lhIGRlIGZpZWxkIHBhcmEgbm8gcm9tcGVyIGxhIGlkZW50aWRhZC5cbiAgICovXG4gIGdldFRleHRJbnB1dFByb3AoZmllbGQ6IElucHV0TWV0YWRhdGEsIGlucHV0VHlwZTogTm9uTnVsbGFibGU8SW5wdXRNZXRhZGF0YVsnaW5wdXRUeXBlJ10+KTogSW5wdXRNZXRhZGF0YSB7XG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy50ZXh0SW5wdXRQcm9wTWVtby5nZXQoZmllbGQpO1xuICAgIGlmIChjYWNoZWQpIHJldHVybiBjYWNoZWQ7XG5cbiAgICBjb25zdCBiYXNlID0gdGhpcy5nZXRGaWVsZFByb3AoZmllbGQpO1xuICAgIGNvbnN0IHJlc3VsdDogSW5wdXRNZXRhZGF0YSA9IHsgLi4uYmFzZSwgaW5wdXRUeXBlIH07XG4gICAgdGhpcy50ZXh0SW5wdXRQcm9wTWVtby5zZXQoZmllbGQsIHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGFwdGVyIHBhcmEgU0VMRUNUIOKAlCBpZ3VhbCBxdWUgYGdldEZpZWxkUHJvcGAgcGVybyBsaW1waWEgYGxhYmVsYC5cbiAgICogdmFsLWZvcm0geWEgcmVuZGVyaXphIGVsIHTDrXR1bG8gZGVsIGNhbXBvIGNvbiBgPHZhbC10aXRsZT5gIGFycmliYSBkZWwgaW5wdXQ7XG4gICAqIHNpIGFkZW3DoXMgcGFzw6FyYW1vcyBgbGFiZWxgIGFsIGA8aW9uLXNlbGVjdD5gLCBlc3RlIGxvIHBpbnRhIERFTlRSTyBkZWwgcGlsbFxuICAgKiDihpIgcmVkdW5kYW5jaWEgdmlzdWFsIChcIlRpcG9cIiBkb3MgdmVjZXMpLiBSZXVzYSBlbCBtaXNtbyBtZW1vIChjb24gbGEgZW50cmFkYVxuICAgKiB5YSBsYWJlbC1zdHJpcHBlZCkgcGFyYSBubyByb21wZXIgbGEgaWRlbnRpZGFkIGRlIHJlZmVyZW5jaWEuXG4gICAqL1xuICBnZXRTZWxlY3RQcm9wKGZpZWxkOiBJbnB1dE1ldGFkYXRhKTogSW5wdXRNZXRhZGF0YSB7XG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy5zZWxlY3RQcm9wTWVtby5nZXQoZmllbGQpO1xuICAgIGlmIChjYWNoZWQpIHJldHVybiBjYWNoZWQ7XG5cbiAgICBjb25zdCBiYXNlID0gdGhpcy5nZXRGaWVsZFByb3AoZmllbGQpO1xuICAgIGNvbnN0IHJlc3VsdDogSW5wdXRNZXRhZGF0YSA9IHsgLi4uYmFzZSwgbGFiZWw6ICcnIH07XG4gICAgdGhpcy5zZWxlY3RQcm9wTWVtby5zZXQoZmllbGQsIHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGFwdGVyIOKAlCBjb252aWVydGUgdW4gYElucHV0TWV0YWRhdGFgIChjb24gdHlwZT1IQU5ETEUpIGEgYFVzZXJuYW1lSW5wdXRNZXRhZGF0YWAuXG4gICAqIEVsIGNoZWNrIGRlIGRpc3BvbmliaWxpZGFkIHNlIHJlc3VlbHZlIGRlbnRybyBkZWwgY29tcG9uZW50IChBdXRoU2VydmljZSBpbnllY3RhZG8pO1xuICAgKiBlbCBjYWxsZXIgcHVlZGUgc29icmVzY3JpYmlybG8gcGFzYW5kbyBgZmllbGQuZXJyb3JzYCBvIHVuIGBVc2VybmFtZUlucHV0TWV0YWRhdGFgXG4gICAqIGN1c3RvbSB1c2FuZG8gdHlwZT1URVhUIHNpIG5lY2VzaXRhIG90cmEgZnVlbnRlIGRlIHRydXRoLlxuICAgKi9cbiAgZ2V0VXNlcm5hbWVQcm9wKGZpZWxkOiBJbnB1dE1ldGFkYXRhKTogVXNlcm5hbWVJbnB1dE1ldGFkYXRhIHtcbiAgICBjb25zdCBjYWNoZWQgPSB0aGlzLnVzZXJuYW1lUHJvcE1lbW8uZ2V0KGZpZWxkKTtcbiAgICBpZiAoY2FjaGVkKSByZXR1cm4gY2FjaGVkO1xuXG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZ2V0Q29udHJvbChmaWVsZC5uYW1lKTtcbiAgICBjb25zdCByZXN1bHQ6IFVzZXJuYW1lSW5wdXRNZXRhZGF0YSA9IHtcbiAgICAgIGNvbnRyb2w6IGNvbnRyb2wgYXMgRm9ybUNvbnRyb2w8c3RyaW5nPixcbiAgICAgIGxhYmVsOiBmaWVsZC5sYWJlbCxcbiAgICAgIGhpbnQ6IGZpZWxkLmhpbnQsXG4gICAgICBwbGFjZWhvbGRlcjogZmllbGQucGxhY2Vob2xkZXIsXG4gICAgICBtaW5MZW5ndGg6IGZpZWxkLnJhbmdlPy5taW4sXG4gICAgICBtYXhMZW5ndGg6IGZpZWxkLnJhbmdlPy5tYXgsXG4gICAgICBlcnJvcnM6IGZpZWxkLmVycm9ycyxcbiAgICAgIHN0YXRlOiBmaWVsZC5zdGF0ZSxcbiAgICB9O1xuICAgIHRoaXMudXNlcm5hbWVQcm9wTWVtby5zZXQoZmllbGQsIHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGFwdGVyIOKAlCBjb252aWVydGUgdW4gYElucHV0TWV0YWRhdGFgIChjb24gdHlwZT1EQVRFX1BJQ0tFUikgYSBgRGF0ZVBpY2tlck1ldGFkYXRhYC5cbiAgICogbGFiZWwvaGludCBzZSBvbWl0ZW4g4oCUIHZhbC1mb3JtIGxvcyByZW5kZXJpemEgdsOtYSAuZmllbGQtbmFtZS8uZmllbGQtZGVzY3JpcHRpb24uXG4gICAqL1xuICBnZXREYXRlUGlja2VyUHJvcChmaWVsZDogSW5wdXRNZXRhZGF0YSk6IERhdGVQaWNrZXJNZXRhZGF0YSB7XG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy5kYXRlUGlja2VyUHJvcE1lbW8uZ2V0KGZpZWxkKTtcbiAgICBpZiAoY2FjaGVkKSByZXR1cm4gY2FjaGVkO1xuXG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZ2V0Q29udHJvbChmaWVsZC5uYW1lKSBhcyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbiAgICBjb25zdCByZXN1bHQ6IERhdGVQaWNrZXJNZXRhZGF0YSA9IHtcbiAgICAgIGNvbnRyb2wsXG4gICAgICBwbGFjZWhvbGRlcjogZmllbGQucGxhY2Vob2xkZXIgfHwgdW5kZWZpbmVkLFxuICAgICAgdG9rZW46IGZpZWxkLnRva2VuLFxuICAgIH07XG4gICAgdGhpcy5kYXRlUGlja2VyUHJvcE1lbW8uc2V0KGZpZWxkLCByZXN1bHQpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQWRhcHRlciDigJQgY29udmllcnRlIHVuIGBJbnB1dE1ldGFkYXRhYCAoY29uIHR5cGU9VEVYVEFSRUEpIGEgYFRleHRhcmVhSW5wdXRNZXRhZGF0YWAuXG4gICAqIERlZmF1bHRzIHNlbnNhdG9zOiBhdXRvR3JvdyArIGNvdW50ZXIgaGFiaWxpdGFkbywgNC0xMiByb3dzLlxuICAgKi9cbiAgZ2V0VGV4dGFyZWFQcm9wKGZpZWxkOiBJbnB1dE1ldGFkYXRhKTogVGV4dGFyZWFJbnB1dE1ldGFkYXRhIHtcbiAgICBjb25zdCBjYWNoZWQgPSB0aGlzLnRleHRhcmVhUHJvcE1lbW8uZ2V0KGZpZWxkKTtcbiAgICBpZiAoY2FjaGVkKSByZXR1cm4gY2FjaGVkO1xuXG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZ2V0Q29udHJvbChmaWVsZC5uYW1lKTtcbiAgICBjb25zdCByZXN1bHQ6IFRleHRhcmVhSW5wdXRNZXRhZGF0YSA9IHtcbiAgICAgIGNvbnRyb2w6IGNvbnRyb2wgYXMgRm9ybUNvbnRyb2w8c3RyaW5nPixcbiAgICAgIG5hbWU6IGZpZWxkLm5hbWUsXG4gICAgICAvLyBsYWJlbCB2YWPDrW8g4oCUIHZhbC1mb3JtIHlhIHJlbmRlcml6YSBlbCB0w610dWxvIGNvbiA8dmFsLXRpdGxlPiBhcnJpYmEgZGVsXG4gICAgICAvLyBpbnB1dC4gUGFzYXJsbyBhbCA8aW9uLXRleHRhcmVhPiBkdXBsaWNhcsOtYSBlbCB0ZXh0byAoXCJEZXNjcmlwY2nDs25cIiB4MikuXG4gICAgICBsYWJlbDogJycsXG4gICAgICBoaW50OiBmaWVsZC5oaW50LFxuICAgICAgcGxhY2Vob2xkZXI6IGZpZWxkLnBsYWNlaG9sZGVyLFxuICAgICAgYXV0b0dyb3c6IHRydWUsXG4gICAgICBtaW5Sb3dzOiA0LFxuICAgICAgbWF4Um93czogMTIsXG4gICAgICBtYXhMZW5ndGg6IGZpZWxkLnJhbmdlPy5tYXggPz8gMjAwMCxcbiAgICAgIHNob3dDb3VudGVyOiB0cnVlLFxuICAgICAgY291bnRlckZvcm1hdDogJ2N1cnJlbnQnLFxuICAgICAgZmlsbDogJ291dGxpbmUnLFxuICAgICAgZXJyb3JzOiBmaWVsZC5lcnJvcnMsXG4gICAgICBzdGF0ZTogZmllbGQuc3RhdGUsXG4gICAgfTtcbiAgICB0aGlzLnRleHRhcmVhUHJvcE1lbW8uc2V0KGZpZWxkLCByZXN1bHQpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBnZXQgaXNBdEVuZE9mRm9ybSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNBdEVuZCh0aGlzLmVsZW1lbnRSZWYpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZ1ZXJ6YSBtb3N0cmFyIGxvcyBlcnJvcmVzIGRlIHZhbGlkYWNpw7NuIChtYXJjYSB0b2RvcyBsb3MgY29udHJvbGVzIGNvbW9cbiAgICogdG91Y2hlZCkgeSBkZXZ1ZWx2ZSBzaSBlbCBmb3JtIGVzIHbDoWxpZG8uIFBlbnNhZG8gcGFyYSBlbCBtb2RvIGBjb250cm9sbGVkYDpcbiAgICogZWwgaG9zdCBsbyBpbnZvY2EgZW4gc3UgXCJTaWd1aWVudGVcIiBwYXJhIGdhdGVhciBsYSBuYXZlZ2FjacOzbiBkZWwgd2l6YXJkLlxuICAgKi9cbiAgdmFsaWRhdGUoKTogYm9vbGVhbiB7XG4gICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICByZXR1cm4gdGhpcy5mb3JtLnZhbGlkO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcmNhIHRvZG9zIGxvcyBjb250cm9sZXMgY29tbyB0b3VjaGVkIChtdWVzdHJhIGVycm9yZXMpIHNpbiBkZXZvbHZlciBuYWRhLlxuICAgKiBBbGlhcyBzZW3DoW50aWNvIGRlIGxhIHByaW1lcmEgbWl0YWQgZGUgYHZhbGlkYXRlKClgLlxuICAgKi9cbiAgbWFya0FsbFRvdWNoZWQoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgfVxuXG4gIGdldCBGb3JtKCk6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybTtcbiAgfVxuXG4gIGdldCBGb3JtU3RhdGUoKTogeyBmb3JtOiBGb3JtR3JvdXA7IGRhdGE6IEZvcm1NZXRhZGF0YSB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgZm9ybTogdGhpcy5Gb3JtLFxuICAgICAgZGF0YTogdGhpcy5wcm9wcyxcbiAgICB9O1xuICB9XG5cbiAgZ2V0IGFjdGlvbnMoKTogQnV0dG9uTWV0YWRhdGFbXSB7XG4gICAgLy8gUmV0b3JuYXIgZGVsIGNhY2hlIHBhcmEgZXZpdGFyIGNyZWFyIG51ZXZvcyBvYmpldG9zIGVuIGNhZGEgY2ljbG8gZGUgY2hhbmdlIGRldGVjdGlvblxuICAgIHJldHVybiB0aGlzLmFjdGlvbnNDYWNoZTtcbiAgfVxuICAvLyDilIDilIAgU3VnZXJlbmNpYSBkZSBkb21pbmlvIGRlIGNvcnJlbyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgLy9cbiAgLy8gVml2ZSBlbiBlbCBmb3JtdWxhcmlvIHkgbm8gZW4gY2FkYSBhcHA6IGVsIGNhbXBvIEVNQUlMIHlhIGVzdMOhIGNlbnRyYWxpemFkb1xuICAvLyBhY8OhLCBhc8OtIHF1ZSB0b2RhIGFwcCBkZWwgZmFjdG9yeSBoZXJlZGEgbGEgYXl1ZGEgc2luIGVzY3JpYmlyIHVuYSBsw61uZWEuXG4gIC8vIE5hY2UgZGUgdW4gcmVib3RlIHJlYWwgZW4gcHJvZHVjY2nDs246IHVuIHR5cG8gZW4gZWwgZG9taW5pbyBkZWrDsyBhIHVuYVxuICAvLyBjb21wcmFkb3JhIHNpbiBzdXMgZW50cmFkYXMgeSBuYWRpZSBzZSBlbnRlcsOzIGhhc3RhIHF1ZSByZWNsYW3Dsy5cblxuICBwcml2YXRlIHJlYWRvbmx5IGkxOG5TdWdnZXN0aW9uID0gaW5qZWN0KEkxOG5TZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICAvKiogU3VnZXJlbmNpYXMgZGVzY2FydGFkYXMgcG9yIGVsIHVzdWFyaW8sIHBhcmEgbm8gdm9sdmVyIGEgaW5zaXN0aXIuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgc3VnZ2VzdGlvbkRpc21pc3NlZCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gIC8qKlxuICAgKiBEZXZ1ZWx2ZSBlbCBjb3JyZW8gY29ycmVnaWRvIGEgc3VnZXJpciwgbyBudWxsLlxuICAgKlxuICAgKiBTb2xvIHN1Z2llcmUgY3VhbmRvIGVsIGNhbXBvIE5PIHRpZW5lIGZvY286IG1pZW50cmFzIHNlIGVzY3JpYmUsIHRvZG9cbiAgICogY29ycmVvIGEgbWVkaW8gdGVjbGVhciBwYXJlY2UgdW4gdHlwbyB5IGxhIHN1Z2VyZW5jaWEgcGFycGFkZWFyw61hLlxuICAgKi9cbiAgZW1haWxTdWdnZXN0aW9uRm9yKGZpZWxkOiBJbnB1dE1ldGFkYXRhKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgLy8gRWwgY29udHJvbCBOTyB2aWVuZSBlbiBlbCBmaWVsZCBjcnVkbzogdmFsLWZvcm0gbG8gcmVzdWVsdmUgcG9yIG5vbWJyZVxuICAgIC8vIGNvbnRyYSBzdSBwcm9waW8gRm9ybUdyb3VwIChgZ2V0Q29udHJvbGApLiBMZWVyIGBmaWVsZC5jb250cm9sYCBkZXZvbHbDrWFcbiAgICAvLyB1bmRlZmluZWQgc2llbXByZSwgYXPDrSBxdWUgbGEgc3VnZXJlbmNpYSBubyBhcGFyZWPDrWEgbnVuY2Eg4oCUIHkgc29sbyBzZVxuICAgIC8vIG5vdMOzIGNvbiBlbCBlMmUsIHBvcnF1ZSBlbCBzcGVjIGRlbCBjb21wb25lbnRlIGxlIHBhc2FiYSBlbCBjb250cm9sIGFcbiAgICAvLyBtYW5vIHkgcG9yIGVzbyBwYXNhYmEgZW4gdmVyZGUuXG4gICAgY29uc3QgY29udHJvbCA9IGZpZWxkLmNvbnRyb2wgPz8gdGhpcy5jb250cm9sUG9yTm9tYnJlKGZpZWxkLm5hbWUpO1xuICAgIGNvbnN0IHZhbG9yID0gdHlwZW9mIGNvbnRyb2w/LnZhbHVlID09PSAnc3RyaW5nJyA/IGNvbnRyb2wudmFsdWUgOiAnJztcbiAgICBpZiAoIXZhbG9yIHx8ICFjb250cm9sPy50b3VjaGVkKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBzdWdlcmlkbyA9IHN1Z2dlc3RFbWFpbEZpeCh2YWxvcik7XG4gICAgaWYgKCFzdWdlcmlkbyB8fCB0aGlzLnN1Z2dlc3Rpb25EaXNtaXNzZWQuaGFzKHN1Z2VyaWRvKSkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHN1Z2VyaWRvO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1c2NhIGVsIGNvbnRyb2wgc2luIGV4cGxvdGFyIHNpIGVsIGZvcm11bGFyaW8gdG9kYXbDrWEgbm8gc2UgY29uc3RydXnDsy5cbiAgICogYGdldENvbnRyb2xgIGFzdW1lIGBGb3JtYCB5YSBpbmljaWFsaXphZG87IGFjw6Egc2UgbGxhbWEgZGVzZGUgZWwgdGVtcGxhdGUsXG4gICAqIHF1ZSBwdWVkZSBldmFsdWFyc2UgYW50ZXMgZGUgYG5nT25Jbml0YCBlbiBhbGd1bm9zIGNpY2xvcy5cbiAgICovXG4gIHByaXZhdGUgY29udHJvbFBvck5vbWJyZShub21icmU/OiBzdHJpbmcpIHtcbiAgICBpZiAoIW5vbWJyZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdGhpcy5Gb3JtPy5nZXQobm9tYnJlKSA/PyB1bmRlZmluZWQ7XG4gIH1cblxuICBlbWFpbFN1Z2dlc3Rpb25RdWVzdGlvbihzdWdlcmlkbzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB0ZXh0byA9IHRoaXMudGV4dG9JMThuKCdlbWFpbFN1Z2dlc3Rpb25RdWVzdGlvbicsICfCv1F1aXNpc3RlIGRlY2lyIHtlbWFpbH0/Jyk7XG4gICAgcmV0dXJuIHRleHRvLnJlcGxhY2UoJ3tlbWFpbH0nLCBzdWdlcmlkbyk7XG4gIH1cblxuICBlbWFpbFN1Z2dlc3Rpb25BcHBseUxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudGV4dG9JMThuKCdlbWFpbFN1Z2dlc3Rpb25BcHBseScsICdTw60sIGNvcnJlZ2lyJyk7XG4gIH1cblxuICAvKipcbiAgICogVHJhZHVjZSBjb24gcmVzcGFsZG8gcmVhbC5cbiAgICpcbiAgICogYEkxOG5TZXJ2aWNlLnQoKWAgTk8gZGV2dWVsdmUgbnVsbCBjdWFuZG8gZmFsdGEgbGEgY2xhdmU6IGRldnVlbHZlIHZhY8OtbyBvXG4gICAqIHVuIHBsYWNlaG9sZGVyIGBbbmFtZXNwYWNlLmtleV1gLiBDb24gYD8/YCBlbCByZXNwYWxkbyBudW5jYSBlbnRyYWJhIHkgZWxcbiAgICogcmVuZ2zDs24gc2Fsw61hIGVuIGJsYW5jbyBlbiBjdWFscXVpZXIgYXBwIHF1ZSBubyByZWdpc3RyYXJhIGxhIGNsYXZlLiBMb1xuICAgKiBlbmNvbnRyw7MgZWwgc3BlYyBkZWwgY29tcG9uZW50ZSwgbm8gbGEgcmV2aXNpw7NuIGEgb2pvLlxuICAgKi9cbiAgcHJpdmF0ZSB0ZXh0b0kxOG4oa2V5OiBzdHJpbmcsIHJlc3BhbGRvOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRleHRvID0gdGhpcy5pMThuU3VnZ2VzdGlvbj8udChrZXkpID8/ICcnO1xuICAgIGlmICghdGV4dG8gfHwgdGV4dG8uc3RhcnRzV2l0aCgnWycpKSByZXR1cm4gcmVzcGFsZG87XG4gICAgcmV0dXJuIHRleHRvO1xuICB9XG5cbiAgLyoqIEFwbGljYSBsYSBjb3JyZWNjacOzbi4gRXMgbGEgw7puaWNhIHbDrWE6IG5hZGEgc2UgcmVlc2NyaWJlIHNpbiBlc3RlIGNsaWMuICovXG4gIGFwcGx5RW1haWxTdWdnZXN0aW9uKGZpZWxkOiBJbnB1dE1ldGFkYXRhLCBzdWdlcmlkbzogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgY29udHJvbCA9IGZpZWxkLmNvbnRyb2wgPz8gdGhpcy5jb250cm9sUG9yTm9tYnJlKGZpZWxkLm5hbWUpO1xuICAgIGNvbnRyb2w/LnNldFZhbHVlKHN1Z2VyaWRvKTtcbiAgICBjb250cm9sPy5tYXJrQXNEaXJ0eSgpO1xuICAgIC8vIEFwbGljYWRhIGRlamEgZGUgb2ZyZWNlcnNlOyBzaSBlbCB1c3VhcmlvIHZ1ZWx2ZSBhIGVzY3JpYmlyIG1hbCwgZWxcbiAgICAvLyB2YWxvciBzZXLDoSBvdHJvIHkgbGEgc3VnZXJlbmNpYSByZWFwYXJlY2UuXG4gICAgdGhpcy5zdWdnZXN0aW9uRGlzbWlzc2VkLmFkZChzdWdlcmlkbyk7XG4gIH1cblxufVxuIl19
|
|
864
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2Zvcm0vZm9ybS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBR1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXVDLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBRXhGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxhQUFhLEVB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QiwyQkFBMkI7d0JBQzNCLG1CQUFtQjt3QkFDbkIsc0JBQXNCO3dCQUN0QiwyQkFBMkI7d0JBQzNCLG1CQUFtQjtxQkFDcEIsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErSVQ7eUdBS0QsS0FBSztzQkFESixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsTUFBTTtnQkFJUCxhQUFhO3NCQURaLE1BQU07Z0JBSVAsU0FBUztzQkFEUixNQUFNO2dCQUlQLGNBQWM7c0JBRGIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIERvQ2hlY2ssXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIGluamVjdCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4vaTE4bi5zZXJ2aWNlJztcbmltcG9ydCB7IHN1Z2dlc3RFbWFpbEZpeCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Zvcm1zL2VtYWlsLXN1Z2dlc3Rpb24nO1xuaW1wb3J0IHsgaXNBdEVuZCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC91dGlscy9kb20nO1xuaW1wb3J0IHsgRGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2Rpc3BsYXkvZGlzcGxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGl2aWRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2RpdmlkZXIvZGl2aWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90aXRsZS90aXRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uR3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvYnV0dG9uLWdyb3VwL2J1dHRvbi1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2hlY2tJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9jaGVjay1pbnB1dC9jaGVjay1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tbWVudElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2NvbW1lbnQtaW5wdXQvY29tbWVudC1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZVBpY2tlck1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2RhdGUtcGlja2VyL3R5cGVzJztcbmltcG9ydCB7IEZpbGVJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9maWxlLWlucHV0L2ZpbGUtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IEhpbnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvaGludC9oaW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOdW1iZXJGcm9tVG9Db21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvbnVtYmVyLWZyb20tdG8vbnVtYmVyLWZyb20tdG8uY29tcG9uZW50JztcbmltcG9ydCB7IFBhc3N3b3JkSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvcGFzc3dvcmQtaW5wdXQvcGFzc3dvcmQtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFBpbklucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3Bpbi1pbnB1dC9waW4taW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFJhZGlvSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvcmFkaW8taW5wdXQvcmFkaW8taW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaFNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3NlbGVjdC1pbnB1dC9zZWxlY3QtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFNlbGVjdFNlYXJjaENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9zZWxlY3Qtc2VhcmNoL3NlbGVjdC1zZWFyY2guY29tcG9uZW50JztcbmltcG9ydCB7IE11bHRpU2VsZWN0U2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL211bHRpLXNlbGVjdC1zZWFyY2gvbXVsdGktc2VsZWN0LXNlYXJjaC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3RleHQtaW5wdXQvdGV4dC1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dGFyZWFJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy90ZXh0YXJlYS1pbnB1dC90ZXh0YXJlYS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dGFyZWFJbnB1dE1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3RleHRhcmVhLWlucHV0L3R5cGVzJztcbmltcG9ydCB7IFBob25lSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvcGhvbmUtaW5wdXQvcGhvbmUtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFRvZ2dsZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3RvZ2dsZS1pbnB1dC90b2dnbGUtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IENoZWNrYm94UmFkaW9JbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9jaGVja2JveC1yYWRpby1pbnB1dC9jaGVja2JveC1yYWRpby1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2hpcFNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9jaGlwLXNlbGVjdC9jaGlwLXNlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXNlcm5hbWVJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy91c2VybmFtZS1pbnB1dC91c2VybmFtZS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXNlcm5hbWVJbnB1dE1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3VzZXJuYW1lLWlucHV0L3R5cGVzJztcbmltcG9ydCB7IEF0dGFjaG1lbnRVcGxvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2F0dGFjaG1lbnQtdXBsb2FkZXIvYXR0YWNobWVudC11cGxvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXR0YWNobWVudEl0ZW0gfSBmcm9tICcuLi9hdHRhY2htZW50LXVwbG9hZGVyL3R5cGVzJztcbmltcG9ydCB7IEJ1dHRvbk1ldGFkYXRhLCBDb21wb25lbnRTdGF0ZXMsIEZvcm1NZXRhZGF0YSwgRm9ybVN1Ym1pdCwgSW5wdXRNZXRhZGF0YSwgSW5wdXRUeXBlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtZm9ybScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBEaXNwbGF5Q29tcG9uZW50LFxuICAgIFRpdGxlQ29tcG9uZW50LFxuICAgIFRleHRJbnB1dENvbXBvbmVudCxcbiAgICBUZXh0YXJlYUlucHV0Q29tcG9uZW50LFxuICAgIENoZWNrSW5wdXRDb21wb25lbnQsXG4gICAgQnV0dG9uR3JvdXBDb21wb25lbnQsXG4gICAgRGl2aWRlckNvbXBvbmVudCxcbiAgICBIaW50Q29tcG9uZW50LFxuICAgIENvbW1lbnRJbnB1dENvbXBvbmVudCxcbiAgICBEYXRlSW5wdXRDb21wb25lbnQsXG4gICAgRmlsZUlucHV0Q29tcG9uZW50LFxuICAgIE51bWJlckZyb21Ub0NvbXBvbmVudCxcbiAgICBSYWRpb0lucHV0Q29tcG9uZW50LFxuICAgIFBhc3N3b3JkSW5wdXRDb21wb25lbnQsXG4gICAgUGluSW5wdXRDb21wb25lbnQsXG4gICAgU2VsZWN0U2VhcmNoQ29tcG9uZW50LFxuICAgIE11bHRpU2VsZWN0U2VhcmNoQ29tcG9uZW50LFxuICAgIFNlYXJjaFNlbGVjdG9yQ29tcG9uZW50LFxuICAgIFBob25lSW5wdXRDb21wb25lbnQsXG4gICAgVG9nZ2xlSW5wdXRDb21wb25lbnQsXG4gICAgQ2hlY2tib3hSYWRpb0lucHV0Q29tcG9uZW50LFxuICAgIENoaXBTZWxlY3RDb21wb25lbnQsXG4gICAgVXNlcm5hbWVJbnB1dENvbXBvbmVudCxcbiAgICBBdHRhY2htZW50VXBsb2FkZXJDb21wb25lbnQsXG4gICAgRGF0ZVBpY2tlckNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImNvbnRhaW5lclwiXG4gICAgICBbY2xhc3MuY29udGFpbmVyLS1zdGlja3ktZm9vdGVyXT1cInByb3BzLnN0aWNreUZvb3RlciAmJiAhcHJvcHMuY29udHJvbGxlZFwiXG4gICAgICBbc3R5bGUuLS12YWwtZm9ybS1maWVsZC1nYXBdPVwicHJvcHMuZmllbGRTcGFjaW5nICE9IG51bGwgPyBwcm9wcy5maWVsZFNwYWNpbmcgKyAncHgnIDogbnVsbFwiXG4gICAgPlxuICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gICAgICAgIEBpZiAocHJvcHMubmFtZSkge1xuICAgICAgICAgIDx2YWwtZGlzcGxheVxuICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgY29udGVudDogcHJvcHMubmFtZSxcbiAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgID48L3ZhbC1kaXNwbGF5PlxuICAgICAgICB9XG4gICAgICAgIEBmb3IgKHMgb2YgcHJvcHMuc2VjdGlvbnM7IHRyYWNrIHMubmFtZSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgICA8dmFsLXRpdGxlIFtwcm9wc109XCJ7IGNvbnRlbnQ6IHMubmFtZSwgc2l6ZTogJ2xhcmdlJywgY29sb3I6ICcnLCBib2xkOiBmYWxzZSB9XCI+PC92YWwtdGl0bGU+XG4gICAgICAgICAgICBAZm9yIChmIG9mIHMuZmllbGRzOyB0cmFjayBmLm5hbWUpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0XCIgW2F0dHIuZGF0YS10ZXN0aWRdPVwiZi50b2tlblwiPlxuICAgICAgICAgICAgICAgIEBpZiAoZi50eXBlICE9PSB0eXBlcy5QSE9ORSAmJiBmLnR5cGUgIT09IHR5cGVzLkhBTkRMRSAmJiBmLnR5cGUgIT09IHR5cGVzLkFUVEFDSE1FTlQpIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgW2F0dHIuaWRdPVwibGFiZWxJZChmKVwiPlxuICAgICAgICAgICAgICAgICAgICA8dmFsLXRpdGxlIFtwcm9wc109XCJ7IGNvbnRlbnQ6IGYubGFiZWwsIHNpemU6ICdzbWFsbCcsIGNvbG9yOiAnZGFyaycsIGJvbGQ6IGZhbHNlIH1cIj48L3ZhbC10aXRsZT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKGYuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmllbGQtZGVzY3JpcHRpb25cIj57eyBmLmRlc2NyaXB0aW9uIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAc3dpdGNoIChmLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgIEBjYXNlICh0eXBlcy5URVhUKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtdGV4dC1pbnB1dCBbcHJvcHNdPVwiZ2V0RmllbGRQcm9wKGYpXCI+PC92YWwtdGV4dC1pbnB1dD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBjYXNlICh0eXBlcy5URVhUQVJFQSkge1xuICAgICAgICAgICAgICAgICAgICA8dmFsLXRleHRhcmVhLWlucHV0IFtwcm9wc109XCJnZXRUZXh0YXJlYVByb3AoZilcIj48L3ZhbC10ZXh0YXJlYS1pbnB1dD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBjYXNlICh0eXBlcy5DSEVDSykge1xuICAgICAgICAgICAgICAgICAgICA8dmFsLWNoZWNrLWlucHV0IFtwcm9wc109XCJnZXRGaWVsZFByb3AoZilcIj48L3ZhbC1jaGVjay1pbnB1dD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBjYXNlICh0eXBlcy5DT01NRU5UKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtY29tbWVudC1pbnB1dCBbcHJvcHNdPVwiZ2V0RmllbGRQcm9wKGYpXCI+PC92YWwtY29tbWVudC1pbnB1dD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBjYXNlICh0eXBlcy5EQVRFKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtZGF0ZS1pbnB1dCBbcHJvcHNdPVwiZ2V0RmllbGRQcm9wKGYpXCI+PC92YWwtZGF0ZS1pbnB1dD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBjYXNlICh0eXBlcy5FTUFJTCkge1xuICAgICAgICAgICAgICAgICAgICA8dmFsLXRleHQtaW5wdXQgW3Byb3BzXT1cImdldFRleHRJbnB1dFByb3AoZiwgJ2VtYWlsJylcIj48L3ZhbC10ZXh0LWlucHV0PlxuICAgICAgICAgICAgICAgICAgICA8IS0tIFN1Z2VyZW5jaWEgZGUgZG9taW5pby4gU2UgT0ZSRUNFLCBubyBzZSBhcGxpY2Egc29sYTogdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICBkb21pbmlvIGNvcnBvcmF0aXZvIGxlZ8OtdGltbyBwdWVkZSBwYXJlY2Vyc2UgYSB1bm9cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXNpdm8sIHkgY29ycmVnaXJsbyBwb3Igc3UgY3VlbnRhIGxlIGNhbWJpYXLDrWEgZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICBjb3JyZW8gYSBhbGd1aWVuIHF1ZSBsbyBlc2NyaWJpw7MgYmllbi4gLS0+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoZW1haWxTdWdnZXN0aW9uRm9yKGYpOyBhcyBzdWdlcmlkbykge1xuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZW1haWwtc3VnZ2VzdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZW1haWxTdWdnZXN0aW9uUXVlc3Rpb24oc3VnZXJpZG8pIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImVtYWlsLXN1Z2dlc3Rpb25fX2FwcGx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFwcGx5RW1haWxTdWdnZXN0aW9uKGYsIHN1Z2VyaWRvKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGVtYWlsU3VnZ2VzdGlvbkFwcGx5TGFiZWwoKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAodHlwZXMuRklMRSkge1xuICAgICAgICAgICAgICAgICAgICA8dmFsLWZpbGUtaW5wdXQgW3Byb3BzXT1cImdldEZpZWxkUHJvcChmKVwiPjwvdmFsLWZpbGUtaW5wdXQ+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAodHlwZXMuSE9VUikge1xuICAgICAgICAgICAgICAgICAgICA8dmFsLXRleHQtaW5wdXQgW3Byb3BzXT1cImdldFRleHRJbnB1dFByb3AoZiwgJ3RpbWUnKVwiPjwvdmFsLXRleHQtaW5wdXQ+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAodHlwZXMuTlVNQkVSKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtdGV4dC1pbnB1dCBbcHJvcHNdPVwiZ2V0VGV4dElucHV0UHJvcChmLCAnbnVtYmVyJylcIj48L3ZhbC10ZXh0LWlucHV0PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLk5VTUJFUl9GUk9NX1RPKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtbnVtYmVyLWZyb20tdG8gW3Byb3BzXT1cImdldEZpZWxkUHJvcChmKVwiPjwvdmFsLW51bWJlci1mcm9tLXRvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLlBBU1NXT1JEKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtcGFzc3dvcmQtaW5wdXQgW3Byb3BzXT1cImdldEZpZWxkUHJvcChmKVwiPjwvdmFsLXBhc3N3b3JkLWlucHV0PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLlBJTl9DT0RFKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtcGluLWlucHV0IFtwcm9wc109XCJnZXRGaWVsZFByb3AoZilcIj48L3ZhbC1waW4taW5wdXQ+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAodHlwZXMuUkFESU8pIHtcbiAgICAgICAgICAgICAgICAgICAgPHZhbC1yYWRpby1pbnB1dCBbcHJvcHNdPVwiZ2V0RmllbGRQcm9wKGYpXCI+PC92YWwtcmFkaW8taW5wdXQ+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAodHlwZXMuU0VMRUNUKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtc2VsZWN0LWlucHV0IFtwcm9wc109XCJnZXRTZWxlY3RQcm9wKGYpXCI+PC92YWwtc2VsZWN0LWlucHV0PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLlNFQVJDSF9TRUxFQ1QpIHtcbiAgICAgICAgICAgICAgICAgICAgPHZhbC1zZWxlY3Qtc2VhcmNoIFtwcm9wc109XCJnZXRGaWVsZFByb3AoZilcIj48L3ZhbC1zZWxlY3Qtc2VhcmNoPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLk1VTFRJX1NFTEVDVCkge1xuICAgICAgICAgICAgICAgICAgICA8dmFsLW11bHRpLXNlbGVjdC1zZWFyY2ggW3Byb3BzXT1cImdldEZpZWxkUHJvcChmKVwiPjwvdmFsLW11bHRpLXNlbGVjdC1zZWFyY2g+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAodHlwZXMuUEhPTkUpIHtcbiAgICAgICAgICAgICAgICAgICAgPHZhbC1waG9uZS1pbnB1dCBbcHJvcHNdPVwiZ2V0RmllbGRQcm9wKGYpXCI+PC92YWwtcGhvbmUtaW5wdXQ+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAodHlwZXMuSEFORExFKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtdXNlcm5hbWUtaW5wdXQgW3Byb3BzXT1cImdldFVzZXJuYW1lUHJvcChmKVwiPjwvdmFsLXVzZXJuYW1lLWlucHV0PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLlRPR0dMRSkge1xuICAgICAgICAgICAgICAgICAgICA8dmFsLXRvZ2dsZS1pbnB1dCBbcHJvcHNdPVwiZ2V0RmllbGRQcm9wKGYpXCI+PC92YWwtdG9nZ2xlLWlucHV0PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLkNIRUNLQk9YX1JBRElPKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtY2hlY2tib3gtcmFkaW8taW5wdXQgW3Byb3BzXT1cImdldEZpZWxkUHJvcChmKVwiPjwvdmFsLWNoZWNrYm94LXJhZGlvLWlucHV0PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLkNISVBfU0VMRUNUKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtY2hpcC1zZWxlY3QgW3Byb3BzXT1cImdldEZpZWxkUHJvcChmKVwiPjwvdmFsLWNoaXAtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLkFUVEFDSE1FTlQpIHtcbiAgICAgICAgICAgICAgICAgICAgPHZhbC1hdHRhY2htZW50LXVwbG9hZGVyXG4gICAgICAgICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBmLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGludDogZi5oaW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgdXBsb2FkRm46IGYudXBsb2FkRm4sXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZi5zdGF0ZSA9PT0gc3RhdGVzLkRJU0FCTEVEIHx8IGYuc3RhdGUgPT09IHN0YXRlcy5XT1JLSU5HLFxuICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgIChhdHRhY2htZW50c0NoYW5nZSk9XCJvbkF0dGFjaG1lbnRDaGFuZ2UoZi5uYW1lLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvdmFsLWF0dGFjaG1lbnQtdXBsb2FkZXI+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAodHlwZXMuREFURV9QSUNLRVIpIHtcbiAgICAgICAgICAgICAgICAgICAgPHZhbC1kYXRlLXBpY2tlciBbcHJvcHNdPVwiZ2V0RGF0ZVBpY2tlclByb3AoZilcIj48L3ZhbC1kYXRlLXBpY2tlcj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPHZhbC1oaW50IFtwcm9wc109XCJnZXRGaWVsZFByb3AoZilcIiBbaWRdPVwiZXJyb3JJZChmKVwiPjwvdmFsLWhpbnQ+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChwcm9wcy5zaG93RGl2aWRlcnMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIDx2YWwtZGl2aWRlciBbcHJvcHNdPVwieyBmaWxsOiAnc29saWQnLCBzaXplOiAnbWVkaXVtJywgY29sb3I6ICdtZWRpdW0nIH1cIj48L3ZhbC1kaXZpZGVyPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoIXByb3BzLmNvbnRyb2xsZWQpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VibWl0LWFjdGlvbnNcIiBbY2xhc3Muc3VibWl0LWFjdGlvbnMtLXN0aWNreV09XCJwcm9wcy5zdGlja3lGb290ZXJcIj5cbiAgICAgICAgICAgIDx2YWwtYnV0dG9uLWdyb3VwXG4gICAgICAgICAgICAgIFtwcm9wc109XCJ7IGJ1dHRvbnM6IGFjdGlvbnMsIHBvc2l0aW9uOiAnY2VudGVyJywgY29sdW1uZWQ6IGZhbHNlIH1cIlxuICAgICAgICAgICAgICAob25DbGljayk9XCJzdWJtaXRIYW5kbGVyKCRldmVudClcIlxuICAgICAgICAgICAgPjwvdmFsLWJ1dHRvbi1ncm91cD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9mb3JtPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgRG9DaGVjayB7XG4gIEBJbnB1dCgpXG4gIHByb3BzOiBGb3JtTWV0YWRhdGE7XG5cbiAgQE91dHB1dCgpXG4gIG9uU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtU3VibWl0PigpO1xuXG4gIEBPdXRwdXQoKVxuICBvblZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oKTtcblxuICBAT3V0cHV0KClcbiAgb25JbnZhbGlkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBvblNlbGVjdENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBmaWVsZDogc3RyaW5nOyB2YWx1ZTogYW55IH0+KCk7XG5cbiAgZm9ybTogRm9ybUdyb3VwO1xuICB0eXBlcyA9IElucHV0VHlwZTtcbiAgc3RhdGVzID0gQ29tcG9uZW50U3RhdGVzO1xuXG4gIC8qKlxuICAgKiBWYWxvciBhY3R1YWwgZGVsIGZvcm0gKGBmb3JtLmdldFJhd1ZhbHVlKClgKSwgYWN0dWFsaXphZG8gZW4gY2FkYVxuICAgKiBgdmFsdWVDaGFuZ2VzYC4gUGVuc2FkbyBwYXJhIGVsIG1vZG8gYGNvbnRyb2xsZWRgOiBlbCBob3N0IGxvIGxlZSB2w61hXG4gICAqIGBAVmlld0NoaWxkKEZvcm1Db21wb25lbnQpYCBzaW4gdG9jYXIgZWwgRm9ybUdyb3VwIGRpcmVjdG8uIEVuIG1vZG8gbm9ybWFsXG4gICAqIHRhbWJpw6luIGVzdMOhIGRpc3BvbmlibGUuXG4gICAqL1xuICByZWFkb25seSB2YWx1ZSA9IHNpZ25hbDxSZWNvcmQ8c3RyaW5nLCBhbnk+Pih7fSk7XG5cbiAgLyoqXG4gICAqIEVzdGFkbyBkZSB2YWxpZGV6IGRlbCBmb3JtLCBhY3R1YWxpemFkbyBlbiBjYWRhIGBzdGF0dXNDaGFuZ2VzYC4gUGFyYSBxdWVcbiAgICogZWwgaG9zdCAod2l6YXJkKSBoYWJpbGl0ZS9kZXNoYWJpbGl0ZSBzdSBib3TDs24gXCJTaWd1aWVudGVcIi5cbiAgICovXG4gIHJlYWRvbmx5IHZhbGlkID0gc2lnbmFsKGZhbHNlKTtcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgcHJpdmF0ZSBhY3Rpb25zQ2FjaGU6IEJ1dHRvbk1ldGFkYXRhW10gPSBbXTtcblxuICAvLyBNZW1vIGRlIGdldEZpZWxkUHJvcC9nZXRVc2VybmFtZVByb3AgcG9yIHJlZmVyZW5jaWEgZGUgZmllbGQg4oCUIGV2aXRhXG4gIC8vIGNyZWFyIHVuIG51ZXZvIG9iamV0byBwcm9wcyBwb3Iga2V5c3Ryb2tlIChjYWRhIENEIGN5Y2xlIGludm9jYXLDrWEgZWxcbiAgLy8gdGVtcGxhdGUgYmluZGluZywgbXVsdGlwbGljYW5kbyByZS1yZW5kZXJzIGVuIGNhc2NhZGEgcG9yICMgZmllbGRzKS5cbiAgLy8gV2Vha01hcDogc2kgbGEgcmVmZXJlbmNpYSBkZWwgZmllbGQgY2FtYmlhLCBlbCBjYWNoZSBzZSBsaWJlcmEuXG4gIHByaXZhdGUgZmllbGRQcm9wTWVtbyA9IG5ldyBXZWFrTWFwPElucHV0TWV0YWRhdGEsIElucHV0TWV0YWRhdGE+KCk7XG4gIHByaXZhdGUgdXNlcm5hbWVQcm9wTWVtbyA9IG5ldyBXZWFrTWFwPElucHV0TWV0YWRhdGEsIFVzZXJuYW1lSW5wdXRNZXRhZGF0YT4oKTtcbiAgcHJpdmF0ZSB0ZXh0YXJlYVByb3BNZW1vID0gbmV3IFdlYWtNYXA8SW5wdXRNZXRhZGF0YSwgVGV4dGFyZWFJbnB1dE1ldGFkYXRhPigpO1xuICBwcml2YXRlIHNlbGVjdFByb3BNZW1vID0gbmV3IFdlYWtNYXA8SW5wdXRNZXRhZGF0YSwgSW5wdXRNZXRhZGF0YT4oKTtcbiAgLy8gTWVtbyBkZSBwcm9wcyBjb24gdW4gaW5wdXRUeXBlIEhUTUwgaW55ZWN0YWRvIChFTUFJTC9OVU1CRVIvSE9VUiBjb2xhcHNhZG9zXG4gIC8vIGVuIHZhbC10ZXh0LWlucHV0KS4gQ2xhdmUgcG9yIGZpZWxkIHBhcmEgY29uc2VydmFyIGlkZW50aWRhZCBkZSByZWZlcmVuY2lhLlxuICBwcml2YXRlIHRleHRJbnB1dFByb3BNZW1vID0gbmV3IFdlYWtNYXA8SW5wdXRNZXRhZGF0YSwgSW5wdXRNZXRhZGF0YT4oKTtcbiAgcHJpdmF0ZSBkYXRlUGlja2VyUHJvcE1lbW8gPSBuZXcgV2Vha01hcDxJbnB1dE1ldGFkYXRhLCBEYXRlUGlja2VyTWV0YWRhdGE+KCk7XG5cbiAgLy8gSWRzIGVzdGFibGVzIHBvciBmaWVsZCBwYXJhIGVsIHdpcmluZyBkZSBhY2Nlc2liaWxpZGFkIGxhYmVs4oaUaW5wdXTihpRlcnJvci5cbiAgLy8gRXN0YWJsZXMgZW50cmUgQ0QgY3ljbGVzIChtZW1vaXphZG9zIHBvciByZWZlcmVuY2lhIGRlIGZpZWxkKSDihpIgYXJpYS0qIG5vIHBhcnBhZGVhLlxuICBwcml2YXRlIGZpZWxkSWRNZW1vID0gbmV3IFdlYWtNYXA8SW5wdXRNZXRhZGF0YSwgeyBsYWJlbElkOiBzdHJpbmc7IGVycm9ySWQ6IHN0cmluZyB9PigpO1xuICBwcml2YXRlIGZpZWxkVWlkID0gMDtcblxuICAvLyBFc3RhZG8gcHJldmlvIHBhcmEgZGV0ZWN0YXIgY2FtYmlvcyBlbiBuZ0RvQ2hlY2tcbiAgcHJpdmF0ZSBwcmV2aW91c1N0YXRlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcHJldmlvdXNVcGxvYWRpbmdDb3VudCA9IDA7XG5cbiAgLy8gQ2FtcG9zIEFUVEFDSE1FTlQgY29uIHVwbG9hZHMgZW4gY3Vyc28g4oCUIGJsb3F1ZWEgc3VibWl0ICsgREVTSEFCSUxJVEEgZWxcbiAgLy8gYm90w7NuIChubyBsb2FkaW5nOiBlbCBzcGlubmVyIHNlIHJlc2VydmEgcGFyYSBlbCBzdWJtaXQgcmVhbCBkZWwgZm9ybSkuXG4gIHByaXZhdGUgdXBsb2FkaW5nRmllbGRzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmXG4gICkge31cblxuICAvKiogQXJtYSBsYSBkZWZpbmljacOzbiBkZSBjb250cm9sZXMgKHZhbG9yIGluaWNpYWwgKyB2YWxpZGFkb3JlcykgZGVzZGUgYHByb3BzYC4gKi9cbiAgcHJpdmF0ZSBidWlsZEZvcm1Db250cm9sc0RlZigpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgY29uc3QgZm9ybUNvbnRyb2xzID0ge307XG4gICAgdGhpcy5wcm9wcy5zZWN0aW9ucy5mb3JFYWNoKHNlY3Rpb24gPT4ge1xuICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgIC8vIEhvbnJhIGBmaWVsZC52YWx1ZWAgYWwgY29uc3RydWlyIGVsIEZvcm1Hcm91cCBwYXJhIHF1ZSBjb250cm9sZXMgdGlwb1xuICAgICAgICAvLyBIQU5ETEUgKHF1ZSBjb25zdW1lbiBlbCBjb250cm9sIGRpcmVjdG8gdmlhIFtmb3JtQ29udHJvbF0pIHJlY2liYW4gZWxcbiAgICAgICAgLy8gdmFsb3IgaW5pY2lhbCBzaW4gcXVlIGVsIGNhbGxlciB0ZW5nYSBxdWUgcGF0Y2hWYWx1ZSBwb3N0LW1vdW50LlxuICAgICAgICAvLyBFbCBoZWxwZXIgYXBwbHlEZWZhdWx0VmFsdWVUb0NvbnRyb2wgKHZhbC10ZXh0LWlucHV0IGV0Yy4pIHNpZ3VlXG4gICAgICAgIC8vIGZ1bmNpb25hbmRvIOKAlCBlc2NyaWJlIHNvYnJlIHVuIGNvbnRyb2wgeWEgaW5pY2lhbGl6YWRvLCBpZGVtcG90ZW50ZS5cbiAgICAgICAgY29uc3QgaW5pdGlhbFZhbHVlID0gZmllbGQudmFsdWUgPz8gbnVsbDtcbiAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09IHRoaXMudHlwZXMuTlVNQkVSX0ZST01fVE8pIHtcbiAgICAgICAgICAvLyBDcmVhciBkb3MgY29udHJvbGVzIHBhcmEgY2FtcG9zIE5VTUJFUl9GUk9NX1RPXG4gICAgICAgICAgZm9ybUNvbnRyb2xzW2Ake2ZpZWxkLm5hbWV9X2Zyb21gXSA9IFtpbml0aWFsVmFsdWUsIGZpZWxkLnZhbGlkYXRvcnMgfHwgW11dO1xuICAgICAgICAgIGZvcm1Db250cm9sc1tgJHtmaWVsZC5uYW1lfV90b2BdID0gW2luaXRpYWxWYWx1ZSwgZmllbGQudmFsaWRhdG9ycyB8fCBbXV07XG4gICAgICAgIH0gZWxzZSBpZiAoZmllbGQudHlwZSA9PT0gdGhpcy50eXBlcy5BVFRBQ0hNRU5UKSB7XG4gICAgICAgICAgZm9ybUNvbnRyb2xzW2ZpZWxkLm5hbWVdID0gW1tdLCBmaWVsZC52YWxpZGF0b3JzIHx8IFtdXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmb3JtQ29udHJvbHNbZmllbGQubmFtZV0gPSBbaW5pdGlhbFZhbHVlLCBmaWVsZC52YWxpZGF0b3JzIHx8IFtdXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGZvcm1Db250cm9scztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNvbnN0cnV5ZSBlbCBgRm9ybUdyb3VwYCBkZXNkZSBjZXJvLCBjb24gbG9zIHZhbG9yZXMgaW5pY2lhbGVzIGRlIGBwcm9wc2BcbiAgICogYWN0dWFsZXMgKG5vIGxvcyBxdWUgZWwgdXN1YXJpbyBoYXlhIHRlY2xlYWRvIGRlc2RlIGVudG9uY2VzKS5cbiAgICpcbiAgICogRXhpc3RlIHBhcmEgZWwgY2FzbyBlbiBxdWUgQW5ndWxhciBOTyBkZXN0cnV5ZSBlbCBjb21wb25lbnRlIGVudHJlIGRvcyB1c29zXG4gICAqIOKAlCB0w61waWNhbWVudGUgYElvbmljUm91dGVTdHJhdGVneWAsIHF1ZSBjYWNoZWEgbGEgcMOhZ2luYSBydXRlYWRhIGFsIG5hdmVnYXJcbiAgICogYWZ1ZXJhIHkgbGEgcmV1dGlsaXphIGFsIHZvbHZlciBzaW4gY29ycmVyIGBuZ09uSW5pdGAgZGUgbnVldm8uIFNpbiBlc3RvLFxuICAgKiB1biBmb3JtIGRlIGxvZ2luIG1hbnRpZW5lIGxvIHF1ZSBlbCB1c3VhcmlvIGFudGVyaW9yIHRlY2xlw7MgZGVzcHXDqXMgZGVcbiAgICogY2VycmFyIHNlc2nDs24geSB2b2x2ZXIgYSBgL2xvZ2luYDogZWwgYEZvcm1Hcm91cGAgc2UgY29uc3RydXnDsyBVTkEgdmV6IHlcbiAgICogbmFkaWUgbG8gdG9jw7MgZGVzZGUgZW50b25jZXMuXG4gICAqXG4gICAqIFJlY29uc3RydXllIGVsIGBGb3JtR3JvdXBgIGVudGVybyAobm8gYC5yZXNldCh2YWx1ZXMpYCkgcG9ycXVlIGxhXG4gICAqIGRlZmluaWNpw7NuIHRyYWUgYFt2YWxvciwgdmFsaWRhdG9yc11gIHBvciBjb250cm9sLCBubyB2YWxvcmVzIHBsYW5vcyDigJRcbiAgICogcmV1c2FyIGBidWlsZEZvcm1Db250cm9sc0RlZigpYCB0YWwgY3VhbCBldml0YSBtYW50ZW5lciBkb3MgZm9ybWFzIGRlXG4gICAqIGNhbGN1bGFyIFwiY3XDoWwgZXMgZWwgdmFsb3IgaW5pY2lhbFwiIHF1ZSBwdWVkYW4gZGVzaW5jcm9uaXphcnNlLlxuICAgKlxuICAgKiBFbCBjYWxsZXIgKHTDrXBpY2FtZW50ZSBgdmFsLWxvZ2luYCwgdsOtYSBgaW9uVmlld1dpbGxFbnRlcmApIGRlY2lkZSBDVcOBTkRPXG4gICAqIGxsYW1hcmxvIOKAlCBhY8OhIG5vIGhheSBoZXVyw61zdGljYSBkZSBcImN1w6FuZG8gcmVzZXRlYXJcIiwgcG9ycXVlIHVuIGZvcm0gZGVcbiAgICogdmFyaW9zIHBhc29zIHPDrSBwb2Ryw61hIHF1ZXJlciBjb25zZXJ2YXIgbG8gdGVjbGVhZG8gYWwgdm9sdmVyIGEgdW5hXG4gICAqIHBlc3Rhw7FhLlxuICAgKi9cbiAgcmVzZXRGb3JtKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5mb3JtKSByZXR1cm47XG4gICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cCh0aGlzLmJ1aWxkRm9ybUNvbnRyb2xzRGVmKCkpO1xuICAgIHRoaXMudmFsdWUuc2V0KHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKTtcbiAgICB0aGlzLnZhbGlkLnNldCh0aGlzLmZvcm0udmFsaWQpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cCh0aGlzLmJ1aWxkRm9ybUNvbnRyb2xzRGVmKCkpO1xuICAgIHRoaXMucHJvcHMuc2VjdGlvbnMuZm9yRWFjaChzZWN0aW9uID0+IHtcbiAgICAgIHNlY3Rpb24uZmllbGRzXG4gICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgeCA9PlxuICAgICAgICAgICAgeC50eXBlID09PSB0aGlzLnR5cGVzLlNFTEVDVCB8fFxuICAgICAgICAgICAgeC50eXBlID09PSB0aGlzLnR5cGVzLlRFWFQgfHxcbiAgICAgICAgICAgIHgudHlwZSA9PT0gdGhpcy50eXBlcy5TRUFSQ0hfU0VMRUNUIHx8XG4gICAgICAgICAgICB4LnR5cGUgPT09IHRoaXMudHlwZXMuTVVMVElfU0VMRUNUXG4gICAgICAgIClcbiAgICAgICAgLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgIHRoaXMudHJhY2tTZWxlY3RDaGFuZ2VzKGZpZWxkLm5hbWUpO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIC8vIEVzdGFkbyByZWFjdGl2byBww7pibGljbyAodmFsdWUvdmFsaWQpIOKAlCBhY3R1YWxpemFkbyBwb3Igc3VzY3JpcGNpw7NuIFJ4SlMsXG4gICAgLy8gTk8gZGVudHJvIGRlIHVuIGVmZmVjdDogc2V0ZWFyIHNpZ25hbHMgYWPDoSBlcyBzZWd1cm8gKG5vIGRpc3BhcmEgTkcwNjAwKS5cbiAgICB0aGlzLnZhbHVlLnNldCh0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKSk7XG4gICAgdGhpcy52YWxpZC5zZXQodGhpcy5mb3JtLnZhbGlkKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3QgcmF3VmFsdWUgPSB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKTtcbiAgICAgICAgdGhpcy52YWx1ZS5zZXQocmF3VmFsdWUpO1xuICAgICAgICB0aGlzLm9uVmFsdWVDaGFuZ2UuZW1pdChyYXdWYWx1ZSk7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5mb3JtLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMudmFsaWQuc2V0KHRoaXMuZm9ybS52YWxpZCkpKTtcblxuICAgIHRoaXMuc3luY0ZpZWxkQ29udHJvbFN0YXRlcygpO1xuICAgIHRoaXMudXBkYXRlQWN0aW9uc0NhY2hlKCk7XG4gICAgdGhpcy5wcmV2aW91c1N0YXRlID0gdGhpcy5wcm9wcy5zdGF0ZTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAvLyBDdWFuZG8gcHJvcHMgY2FtYmlhLCByZWNvbnN0cnVpciBlbCBjYWNoZVxuICAgIGlmIChjaGFuZ2VzWydwcm9wcyddICYmIHRoaXMuZm9ybSkge1xuICAgICAgdGhpcy5wYXRjaEluaXRpYWxWYWx1ZXNGcm9tUHJvcHMoKTtcbiAgICAgIHRoaXMuc3luY0ZpZWxkQ29udHJvbFN0YXRlcygpO1xuICAgICAgdGhpcy51cGRhdGVBY3Rpb25zQ2FjaGUoKTtcbiAgICAgIHRoaXMucHJldmlvdXNTdGF0ZSA9IHRoaXMucHJvcHMuc3RhdGU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwYXRjaEluaXRpYWxWYWx1ZXNGcm9tUHJvcHMoKTogdm9pZCB7XG4gICAgdGhpcy5wcm9wcy5zZWN0aW9ucy5mb3JFYWNoKHNlY3Rpb24gPT4ge1xuICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgIGlmIChmaWVsZC52YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGZpZWxkLnR5cGUgPT09IHRoaXMudHlwZXMuQVRUQUNITUVOVCkgcmV0dXJuO1xuICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gdGhpcy50eXBlcy5OVU1CRVJfRlJPTV9UTykge1xuICAgICAgICAgIHRoaXMuZm9ybS5nZXQoYCR7ZmllbGQubmFtZX1fZnJvbWApPy5wYXRjaFZhbHVlKGZpZWxkLnZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgdGhpcy5mb3JtLmdldChgJHtmaWVsZC5uYW1lfV90b2ApPy5wYXRjaFZhbHVlKGZpZWxkLnZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoZmllbGQubmFtZSk/LnBhdGNoVmFsdWUoZmllbGQudmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHRoaXMudmFsdWUuc2V0KHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKTtcbiAgICB0aGlzLnZhbGlkLnNldCh0aGlzLmZvcm0udmFsaWQpO1xuICB9XG5cbiAgbmdEb0NoZWNrKCkge1xuICAgIC8vIERldGVjdGFyIGNhbWJpb3MgZW4gZWwgZXN0YWRvIGRlbCBmb3JtdWxhcmlvIChtdXRhY2nDs24gc2luIGNhbWJpYXIgcmVmZXJlbmNpYSlcbiAgICBjb25zdCB1cGxvYWRpbmdDb3VudCA9IHRoaXMudXBsb2FkaW5nRmllbGRzLnNpemU7XG4gICAgaWYgKFxuICAgICAgdGhpcy5mb3JtICYmXG4gICAgICB0aGlzLnByb3BzICYmXG4gICAgICAodGhpcy5wcm9wcy5zdGF0ZSAhPT0gdGhpcy5wcmV2aW91c1N0YXRlIHx8IHVwbG9hZGluZ0NvdW50ICE9PSB0aGlzLnByZXZpb3VzVXBsb2FkaW5nQ291bnQpXG4gICAgKSB7XG4gICAgICB0aGlzLnByZXZpb3VzU3RhdGUgPSB0aGlzLnByb3BzLnN0YXRlO1xuICAgICAgdGhpcy5wcmV2aW91c1VwbG9hZGluZ0NvdW50ID0gdXBsb2FkaW5nQ291bnQ7XG4gICAgICB0aGlzLnVwZGF0ZUFjdGlvbnNDYWNoZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTeW5jaHJvbml6ZXMgZm9ybSBjb250cm9sIGRpc2FibGVkL2VuYWJsZWQgc3RhdGUgd2l0aCBmaWVsZCBtZXRhZGF0YS5cbiAgICovXG4gIHByaXZhdGUgc3luY0ZpZWxkQ29udHJvbFN0YXRlcygpIHtcbiAgICB0aGlzLnByb3BzLnNlY3Rpb25zLmZvckVhY2goc2VjdGlvbiA9PiB7XG4gICAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09IHRoaXMudHlwZXMuQVRUQUNITUVOVCkgcmV0dXJuO1xuICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gdGhpcy50eXBlcy5OVU1CRVJfRlJPTV9UTykge1xuICAgICAgICAgIGNvbnN0IGZyb21Db250cm9sID0gdGhpcy5nZXRDb250cm9sKGAke2ZpZWxkLm5hbWV9X2Zyb21gKTtcbiAgICAgICAgICBjb25zdCB0b0NvbnRyb2wgPSB0aGlzLmdldENvbnRyb2woYCR7ZmllbGQubmFtZX1fdG9gKTtcblxuICAgICAgICAgIGlmIChmaWVsZC5zdGF0ZSA9PT0gQ29tcG9uZW50U3RhdGVzLkRJU0FCTEVEKSB7XG4gICAgICAgICAgICBmcm9tQ29udHJvbC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgIHRvQ29udHJvbC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZnJvbUNvbnRyb2wuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgIHRvQ29udHJvbC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5nZXRDb250cm9sKGZpZWxkLm5hbWUpO1xuICAgICAgICAgIGlmIChmaWVsZC5zdGF0ZSA9PT0gQ29tcG9uZW50U3RhdGVzLkRJU0FCTEVEKSB7XG4gICAgICAgICAgICBjb250cm9sLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb250cm9sLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3R1YWxpemEgZWwgY2FjaGUgZGUgYWN0aW9ucyBiYXNhZG8gZW4gZWwgZXN0YWRvIGFjdHVhbCBkZWwgZm9ybS5cbiAgICovXG4gIHByaXZhdGUgdXBkYXRlQWN0aW9uc0NhY2hlKCkge1xuICAgIC8vIEVuIG1vZG8gY29udHJvbGxlZCAobyBzaW4gc3VibWl0KSBubyBoYXkgYm90w7NuIHByb3BpbyBxdWUgY2FjaGVhci5cbiAgICBpZiAoIXRoaXMucHJvcHMuYWN0aW9ucykge1xuICAgICAgdGhpcy5hY3Rpb25zQ2FjaGUgPSBbXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IGFjdGlvblN0YXRlID0gdGhpcy5wcm9wcy5hY3Rpb25zLnN0YXRlO1xuXG4gICAgaWYgKHRoaXMucHJvcHMuc3RhdGUgPT09IENvbXBvbmVudFN0YXRlcy5XT1JLSU5HKSB7XG4gICAgICAvLyBTdWJtaXQgcmVhbCBkZWwgZm9ybSBlbiBjdXJzbyDihpIgYm90w7NuIGVuIGxvYWRpbmcgKHNwaW5uZXIpLlxuICAgICAgYWN0aW9uU3RhdGUgPSBDb21wb25lbnRTdGF0ZXMuV09SS0lORztcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMuc3RhdGUgPT09IENvbXBvbmVudFN0YXRlcy5ESVNBQkxFRCB8fCB0aGlzLnVwbG9hZGluZ0ZpZWxkcy5zaXplID4gMCkge1xuICAgICAgLy8gU3ViaWRhIGRlIGFkanVudG8gZW4gY3Vyc28g4oaSIERFU0hBQklMSVRBUiBlbCBzdWJtaXQsIE5PIGxvYWRpbmc6IHRvZGF2w61hXG4gICAgICAvLyBubyBzZSBlc3TDoSBlbnZpYW5kbyBlbCBmb3JtLCBzb2xvIHN1YmllbmRvIHVuIGFyY2hpdm8uIFVuIHNwaW5uZXIgYWPDoVxuICAgICAgLy8gY29uZnVuZGUgKHBhcmVjZSBxdWUgZWwgZm9ybSBzZSBlc3TDoSBlbnZpYW5kbykuXG4gICAgICBhY3Rpb25TdGF0ZSA9IENvbXBvbmVudFN0YXRlcy5ESVNBQkxFRDtcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMuc3RhdGUgPT09IENvbXBvbmVudFN0YXRlcy5FTkFCTEVEIHx8IHRoaXMuZm9ybT8udmFsaWQpIHtcbiAgICAgIGFjdGlvblN0YXRlID0gQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQ7XG4gICAgfVxuXG4gICAgdGhpcy5hY3Rpb25zQ2FjaGUgPSBbeyAuLi50aGlzLnByb3BzLmFjdGlvbnMsIHN0YXRlOiBhY3Rpb25TdGF0ZSB9XTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIC8vIENsZWFudXAgc3Vic2NyaXB0aW9ucyB0byBhdm9pZCBtZW1vcnkgbGVha3NcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWIgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgdHJhY2tTZWxlY3RDaGFuZ2VzKGZpZWxkTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZ2V0Q29udHJvbChmaWVsZE5hbWUpO1xuICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IGNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICB0aGlzLm9uU2VsZWN0Q2hhbmdlLmVtaXQoeyBmaWVsZDogZmllbGROYW1lLCB2YWx1ZSB9KTtcbiAgICB9KTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzdWJzY3JpcHRpb24pO1xuICB9XG5cbiAgYXN5bmMgc3VibWl0SGFuZGxlcih0b2tlbj86IHN0cmluZykge1xuICAgIGlmICh0aGlzLnVwbG9hZGluZ0ZpZWxkcy5zaXplID4gMCkgcmV0dXJuO1xuICAgIGlmICghdGhpcy5mb3JtLnZhbGlkKSB7XG4gICAgICB0aGlzLmZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgICAgdGhpcy5vbkludmFsaWQuZW1pdCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9uU3VibWl0LmVtaXQoeyBmaWVsZHM6IHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpLCB0b2tlbiB9KTtcbiAgfVxuXG4gIG9uQXR0YWNobWVudENoYW5nZShmaWVsZE5hbWU6IHN0cmluZywgaXRlbXM6IEF0dGFjaG1lbnRJdGVtW10pOiB2b2lkIHtcbiAgICBjb25zdCByZWFkeVVybHMgPSBpdGVtcy5maWx0ZXIoYSA9PiBhLnN0YXR1cyA9PT0gJ3JlYWR5JyAmJiBhLnVybCkubWFwKGEgPT4gYS51cmwhKTtcbiAgICB0aGlzLmZvcm0uZ2V0KGZpZWxkTmFtZSk/LnNldFZhbHVlKHJlYWR5VXJscywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIGlmIChpdGVtcy5zb21lKGEgPT4gYS5zdGF0dXMgPT09ICd1cGxvYWRpbmcnKSkge1xuICAgICAgdGhpcy51cGxvYWRpbmdGaWVsZHMuYWRkKGZpZWxkTmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBsb2FkaW5nRmllbGRzLmRlbGV0ZShmaWVsZE5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIGdldENvbnRyb2woZmllbGQ6IHN0cmluZyk6IEZvcm1Db250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5Gb3JtLmdldChmaWVsZCkgYXMgRm9ybUNvbnRyb2w7XG4gIH1cblxuICAvKipcbiAgICogSWRzIGVzdGFibGVzIChsYWJlbCArIGVycm9yKSBwYXJhIHVuIGZpZWxkLiBNZW1vaXphZG9zIHBvciByZWZlcmVuY2lhIHBhcmFcbiAgICogcXVlIGVsIHdpcmluZyBgYXJpYS1sYWJlbGxlZGJ5YCAvIGBhcmlhLWRlc2NyaWJlZGJ5YCBubyBjYW1iaWUgZW50cmUgY2ljbG9zXG4gICAqIGRlIGNoYW5nZSBkZXRlY3Rpb24uXG4gICAqL1xuICBwcml2YXRlIGZpZWxkSWRzKGZpZWxkOiBJbnB1dE1ldGFkYXRhKTogeyBsYWJlbElkOiBzdHJpbmc7IGVycm9ySWQ6IHN0cmluZyB9IHtcbiAgICBsZXQgaWRzID0gdGhpcy5maWVsZElkTWVtby5nZXQoZmllbGQpO1xuICAgIGlmICghaWRzKSB7XG4gICAgICBjb25zdCBiYXNlID0gYHZhbC1mb3JtLWZpZWxkLSR7dGhpcy5maWVsZFVpZCsrfWA7XG4gICAgICBpZHMgPSB7IGxhYmVsSWQ6IGAke2Jhc2V9LWxhYmVsYCwgZXJyb3JJZDogYCR7YmFzZX0tZXJyb3JgIH07XG4gICAgICB0aGlzLmZpZWxkSWRNZW1vLnNldChmaWVsZCwgaWRzKTtcbiAgICB9XG4gICAgcmV0dXJuIGlkcztcbiAgfVxuXG4gIC8qKiBJZCBkZWwgbGFiZWwgdmlzaWJsZSBkZWwgY2FtcG8gKGNvbnN1bWlkbyBwb3IgZWwgdGVtcGxhdGUgKyBlbCBpbnB1dCkuICovXG4gIGxhYmVsSWQoZmllbGQ6IElucHV0TWV0YWRhdGEpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZpZWxkSWRzKGZpZWxkKS5sYWJlbElkO1xuICB9XG5cbiAgLyoqIElkIGRlbCBjb250ZW5lZG9yIGRlIGVycm9yIChgdmFsLWhpbnRgKSBkZWwgY2FtcG8uICovXG4gIGVycm9ySWQoZmllbGQ6IElucHV0TWV0YWRhdGEpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZpZWxkSWRzKGZpZWxkKS5lcnJvcklkO1xuICB9XG5cbiAgZ2V0RmllbGRQcm9wKGZpZWxkOiBJbnB1dE1ldGFkYXRhKTogSW5wdXRNZXRhZGF0YSB7XG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy5maWVsZFByb3BNZW1vLmdldChmaWVsZCk7XG4gICAgaWYgKGNhY2hlZCkgcmV0dXJuIGNhY2hlZDtcblxuICAgIGlmICghZmllbGQudG9rZW4pIHtcbiAgICAgIGZpZWxkLnRva2VuID0gYGlucHV0LSR7ZmllbGQudHlwZX0tJHtmaWVsZC5uYW1lfWA7XG4gICAgfVxuXG4gICAgY29uc3QgaWRzID0gdGhpcy5maWVsZElkcyhmaWVsZCk7XG5cbiAgICBsZXQgcmVzdWx0OiBJbnB1dE1ldGFkYXRhO1xuICAgIGlmIChmaWVsZC50eXBlID09PSB0aGlzLnR5cGVzLk5VTUJFUl9GUk9NX1RPKSB7XG4gICAgICBjb25zdCBmcm9tQ29udHJvbCA9IHRoaXMuZ2V0Q29udHJvbChgJHtmaWVsZC5uYW1lfV9mcm9tYCk7XG4gICAgICBjb25zdCB0b0NvbnRyb2wgPSB0aGlzLmdldENvbnRyb2woYCR7ZmllbGQubmFtZX1fdG9gKTtcbiAgICAgIHJlc3VsdCA9IHsgLi4uZmllbGQsIGZyb21Db250cm9sLCB0b0NvbnRyb2wsIGNvbnRyb2w6IHVuZGVmaW5lZCwgbGFiZWxJZDogaWRzLmxhYmVsSWQsIGVycm9ySWQ6IGlkcy5lcnJvcklkIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmdldENvbnRyb2woZmllbGQubmFtZSk7XG4gICAgICByZXN1bHQgPSB7IC4uLmZpZWxkLCBjb250cm9sLCBsYWJlbElkOiBpZHMubGFiZWxJZCwgZXJyb3JJZDogaWRzLmVycm9ySWQgfTtcbiAgICB9XG4gICAgdGhpcy5maWVsZFByb3BNZW1vLnNldChmaWVsZCwgcmVzdWx0KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkYXB0ZXIgcGFyYSBsb3MgdGlwb3MgY29sYXBzYWRvcyBlbiBgdmFsLXRleHQtaW5wdXRgIChFTUFJTC9OVU1CRVIvSE9VUikuXG4gICAqIFJldXNhIGBnZXRGaWVsZFByb3BgIChjb24gc3UgY29udHJvbCArIHdpcmluZyBkZSBpZHMpIGUgaW55ZWN0YSBlbCBgaW5wdXRUeXBlYFxuICAgKiBIVE1MIG5hdGl2by4gTWVtb2l6YWRvIHBvciByZWZlcmVuY2lhIGRlIGZpZWxkIHBhcmEgbm8gcm9tcGVyIGxhIGlkZW50aWRhZC5cbiAgICovXG4gIGdldFRleHRJbnB1dFByb3AoZmllbGQ6IElucHV0TWV0YWRhdGEsIGlucHV0VHlwZTogTm9uTnVsbGFibGU8SW5wdXRNZXRhZGF0YVsnaW5wdXRUeXBlJ10+KTogSW5wdXRNZXRhZGF0YSB7XG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy50ZXh0SW5wdXRQcm9wTWVtby5nZXQoZmllbGQpO1xuICAgIGlmIChjYWNoZWQpIHJldHVybiBjYWNoZWQ7XG5cbiAgICBjb25zdCBiYXNlID0gdGhpcy5nZXRGaWVsZFByb3AoZmllbGQpO1xuICAgIGNvbnN0IHJlc3VsdDogSW5wdXRNZXRhZGF0YSA9IHsgLi4uYmFzZSwgaW5wdXRUeXBlIH07XG4gICAgdGhpcy50ZXh0SW5wdXRQcm9wTWVtby5zZXQoZmllbGQsIHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGFwdGVyIHBhcmEgU0VMRUNUIOKAlCBpZ3VhbCBxdWUgYGdldEZpZWxkUHJvcGAgcGVybyBsaW1waWEgYGxhYmVsYC5cbiAgICogdmFsLWZvcm0geWEgcmVuZGVyaXphIGVsIHTDrXR1bG8gZGVsIGNhbXBvIGNvbiBgPHZhbC10aXRsZT5gIGFycmliYSBkZWwgaW5wdXQ7XG4gICAqIHNpIGFkZW3DoXMgcGFzw6FyYW1vcyBgbGFiZWxgIGFsIGA8aW9uLXNlbGVjdD5gLCBlc3RlIGxvIHBpbnRhIERFTlRSTyBkZWwgcGlsbFxuICAgKiDihpIgcmVkdW5kYW5jaWEgdmlzdWFsIChcIlRpcG9cIiBkb3MgdmVjZXMpLiBSZXVzYSBlbCBtaXNtbyBtZW1vIChjb24gbGEgZW50cmFkYVxuICAgKiB5YSBsYWJlbC1zdHJpcHBlZCkgcGFyYSBubyByb21wZXIgbGEgaWRlbnRpZGFkIGRlIHJlZmVyZW5jaWEuXG4gICAqL1xuICBnZXRTZWxlY3RQcm9wKGZpZWxkOiBJbnB1dE1ldGFkYXRhKTogSW5wdXRNZXRhZGF0YSB7XG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy5zZWxlY3RQcm9wTWVtby5nZXQoZmllbGQpO1xuICAgIGlmIChjYWNoZWQpIHJldHVybiBjYWNoZWQ7XG5cbiAgICBjb25zdCBiYXNlID0gdGhpcy5nZXRGaWVsZFByb3AoZmllbGQpO1xuICAgIGNvbnN0IHJlc3VsdDogSW5wdXRNZXRhZGF0YSA9IHsgLi4uYmFzZSwgbGFiZWw6ICcnIH07XG4gICAgdGhpcy5zZWxlY3RQcm9wTWVtby5zZXQoZmllbGQsIHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGFwdGVyIOKAlCBjb252aWVydGUgdW4gYElucHV0TWV0YWRhdGFgIChjb24gdHlwZT1IQU5ETEUpIGEgYFVzZXJuYW1lSW5wdXRNZXRhZGF0YWAuXG4gICAqIEVsIGNoZWNrIGRlIGRpc3BvbmliaWxpZGFkIHNlIHJlc3VlbHZlIGRlbnRybyBkZWwgY29tcG9uZW50IChBdXRoU2VydmljZSBpbnllY3RhZG8pO1xuICAgKiBlbCBjYWxsZXIgcHVlZGUgc29icmVzY3JpYmlybG8gcGFzYW5kbyBgZmllbGQuZXJyb3JzYCBvIHVuIGBVc2VybmFtZUlucHV0TWV0YWRhdGFgXG4gICAqIGN1c3RvbSB1c2FuZG8gdHlwZT1URVhUIHNpIG5lY2VzaXRhIG90cmEgZnVlbnRlIGRlIHRydXRoLlxuICAgKi9cbiAgZ2V0VXNlcm5hbWVQcm9wKGZpZWxkOiBJbnB1dE1ldGFkYXRhKTogVXNlcm5hbWVJbnB1dE1ldGFkYXRhIHtcbiAgICBjb25zdCBjYWNoZWQgPSB0aGlzLnVzZXJuYW1lUHJvcE1lbW8uZ2V0KGZpZWxkKTtcbiAgICBpZiAoY2FjaGVkKSByZXR1cm4gY2FjaGVkO1xuXG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZ2V0Q29udHJvbChmaWVsZC5uYW1lKTtcbiAgICBjb25zdCByZXN1bHQ6IFVzZXJuYW1lSW5wdXRNZXRhZGF0YSA9IHtcbiAgICAgIGNvbnRyb2w6IGNvbnRyb2wgYXMgRm9ybUNvbnRyb2w8c3RyaW5nPixcbiAgICAgIGxhYmVsOiBmaWVsZC5sYWJlbCxcbiAgICAgIGhpbnQ6IGZpZWxkLmhpbnQsXG4gICAgICBwbGFjZWhvbGRlcjogZmllbGQucGxhY2Vob2xkZXIsXG4gICAgICBtaW5MZW5ndGg6IGZpZWxkLnJhbmdlPy5taW4sXG4gICAgICBtYXhMZW5ndGg6IGZpZWxkLnJhbmdlPy5tYXgsXG4gICAgICBlcnJvcnM6IGZpZWxkLmVycm9ycyxcbiAgICAgIHN0YXRlOiBmaWVsZC5zdGF0ZSxcbiAgICB9O1xuICAgIHRoaXMudXNlcm5hbWVQcm9wTWVtby5zZXQoZmllbGQsIHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGFwdGVyIOKAlCBjb252aWVydGUgdW4gYElucHV0TWV0YWRhdGFgIChjb24gdHlwZT1EQVRFX1BJQ0tFUikgYSBgRGF0ZVBpY2tlck1ldGFkYXRhYC5cbiAgICogbGFiZWwvaGludCBzZSBvbWl0ZW4g4oCUIHZhbC1mb3JtIGxvcyByZW5kZXJpemEgdsOtYSAuZmllbGQtbmFtZS8uZmllbGQtZGVzY3JpcHRpb24uXG4gICAqL1xuICBnZXREYXRlUGlja2VyUHJvcChmaWVsZDogSW5wdXRNZXRhZGF0YSk6IERhdGVQaWNrZXJNZXRhZGF0YSB7XG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy5kYXRlUGlja2VyUHJvcE1lbW8uZ2V0KGZpZWxkKTtcbiAgICBpZiAoY2FjaGVkKSByZXR1cm4gY2FjaGVkO1xuXG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZ2V0Q29udHJvbChmaWVsZC5uYW1lKSBhcyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbiAgICBjb25zdCByZXN1bHQ6IERhdGVQaWNrZXJNZXRhZGF0YSA9IHtcbiAgICAgIGNvbnRyb2wsXG4gICAgICBwbGFjZWhvbGRlcjogZmllbGQucGxhY2Vob2xkZXIgfHwgdW5kZWZpbmVkLFxuICAgICAgdG9rZW46IGZpZWxkLnRva2VuLFxuICAgIH07XG4gICAgdGhpcy5kYXRlUGlja2VyUHJvcE1lbW8uc2V0KGZpZWxkLCByZXN1bHQpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQWRhcHRlciDigJQgY29udmllcnRlIHVuIGBJbnB1dE1ldGFkYXRhYCAoY29uIHR5cGU9VEVYVEFSRUEpIGEgYFRleHRhcmVhSW5wdXRNZXRhZGF0YWAuXG4gICAqIERlZmF1bHRzIHNlbnNhdG9zOiBhdXRvR3JvdyArIGNvdW50ZXIgaGFiaWxpdGFkbywgNC0xMiByb3dzLlxuICAgKi9cbiAgZ2V0VGV4dGFyZWFQcm9wKGZpZWxkOiBJbnB1dE1ldGFkYXRhKTogVGV4dGFyZWFJbnB1dE1ldGFkYXRhIHtcbiAgICBjb25zdCBjYWNoZWQgPSB0aGlzLnRleHRhcmVhUHJvcE1lbW8uZ2V0KGZpZWxkKTtcbiAgICBpZiAoY2FjaGVkKSByZXR1cm4gY2FjaGVkO1xuXG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZ2V0Q29udHJvbChmaWVsZC5uYW1lKTtcbiAgICBjb25zdCByZXN1bHQ6IFRleHRhcmVhSW5wdXRNZXRhZGF0YSA9IHtcbiAgICAgIGNvbnRyb2w6IGNvbnRyb2wgYXMgRm9ybUNvbnRyb2w8c3RyaW5nPixcbiAgICAgIG5hbWU6IGZpZWxkLm5hbWUsXG4gICAgICAvLyBsYWJlbCB2YWPDrW8g4oCUIHZhbC1mb3JtIHlhIHJlbmRlcml6YSBlbCB0w610dWxvIGNvbiA8dmFsLXRpdGxlPiBhcnJpYmEgZGVsXG4gICAgICAvLyBpbnB1dC4gUGFzYXJsbyBhbCA8aW9uLXRleHRhcmVhPiBkdXBsaWNhcsOtYSBlbCB0ZXh0byAoXCJEZXNjcmlwY2nDs25cIiB4MikuXG4gICAgICBsYWJlbDogJycsXG4gICAgICBoaW50OiBmaWVsZC5oaW50LFxuICAgICAgcGxhY2Vob2xkZXI6IGZpZWxkLnBsYWNlaG9sZGVyLFxuICAgICAgYXV0b0dyb3c6IHRydWUsXG4gICAgICBtaW5Sb3dzOiA0LFxuICAgICAgbWF4Um93czogMTIsXG4gICAgICBtYXhMZW5ndGg6IGZpZWxkLnJhbmdlPy5tYXggPz8gMjAwMCxcbiAgICAgIHNob3dDb3VudGVyOiB0cnVlLFxuICAgICAgY291bnRlckZvcm1hdDogJ2N1cnJlbnQnLFxuICAgICAgZmlsbDogJ291dGxpbmUnLFxuICAgICAgZXJyb3JzOiBmaWVsZC5lcnJvcnMsXG4gICAgICBzdGF0ZTogZmllbGQuc3RhdGUsXG4gICAgfTtcbiAgICB0aGlzLnRleHRhcmVhUHJvcE1lbW8uc2V0KGZpZWxkLCByZXN1bHQpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBnZXQgaXNBdEVuZE9mRm9ybSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNBdEVuZCh0aGlzLmVsZW1lbnRSZWYpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZ1ZXJ6YSBtb3N0cmFyIGxvcyBlcnJvcmVzIGRlIHZhbGlkYWNpw7NuIChtYXJjYSB0b2RvcyBsb3MgY29udHJvbGVzIGNvbW9cbiAgICogdG91Y2hlZCkgeSBkZXZ1ZWx2ZSBzaSBlbCBmb3JtIGVzIHbDoWxpZG8uIFBlbnNhZG8gcGFyYSBlbCBtb2RvIGBjb250cm9sbGVkYDpcbiAgICogZWwgaG9zdCBsbyBpbnZvY2EgZW4gc3UgXCJTaWd1aWVudGVcIiBwYXJhIGdhdGVhciBsYSBuYXZlZ2FjacOzbiBkZWwgd2l6YXJkLlxuICAgKi9cbiAgdmFsaWRhdGUoKTogYm9vbGVhbiB7XG4gICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICByZXR1cm4gdGhpcy5mb3JtLnZhbGlkO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcmNhIHRvZG9zIGxvcyBjb250cm9sZXMgY29tbyB0b3VjaGVkIChtdWVzdHJhIGVycm9yZXMpIHNpbiBkZXZvbHZlciBuYWRhLlxuICAgKiBBbGlhcyBzZW3DoW50aWNvIGRlIGxhIHByaW1lcmEgbWl0YWQgZGUgYHZhbGlkYXRlKClgLlxuICAgKi9cbiAgbWFya0FsbFRvdWNoZWQoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgfVxuXG4gIGdldCBGb3JtKCk6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybTtcbiAgfVxuXG4gIGdldCBGb3JtU3RhdGUoKTogeyBmb3JtOiBGb3JtR3JvdXA7IGRhdGE6IEZvcm1NZXRhZGF0YSB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgZm9ybTogdGhpcy5Gb3JtLFxuICAgICAgZGF0YTogdGhpcy5wcm9wcyxcbiAgICB9O1xuICB9XG5cbiAgZ2V0IGFjdGlvbnMoKTogQnV0dG9uTWV0YWRhdGFbXSB7XG4gICAgLy8gUmV0b3JuYXIgZGVsIGNhY2hlIHBhcmEgZXZpdGFyIGNyZWFyIG51ZXZvcyBvYmpldG9zIGVuIGNhZGEgY2ljbG8gZGUgY2hhbmdlIGRldGVjdGlvblxuICAgIHJldHVybiB0aGlzLmFjdGlvbnNDYWNoZTtcbiAgfVxuICAvLyDilIDilIAgU3VnZXJlbmNpYSBkZSBkb21pbmlvIGRlIGNvcnJlbyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgLy9cbiAgLy8gVml2ZSBlbiBlbCBmb3JtdWxhcmlvIHkgbm8gZW4gY2FkYSBhcHA6IGVsIGNhbXBvIEVNQUlMIHlhIGVzdMOhIGNlbnRyYWxpemFkb1xuICAvLyBhY8OhLCBhc8OtIHF1ZSB0b2RhIGFwcCBkZWwgZmFjdG9yeSBoZXJlZGEgbGEgYXl1ZGEgc2luIGVzY3JpYmlyIHVuYSBsw61uZWEuXG4gIC8vIE5hY2UgZGUgdW4gcmVib3RlIHJlYWwgZW4gcHJvZHVjY2nDs246IHVuIHR5cG8gZW4gZWwgZG9taW5pbyBkZWrDsyBhIHVuYVxuICAvLyBjb21wcmFkb3JhIHNpbiBzdXMgZW50cmFkYXMgeSBuYWRpZSBzZSBlbnRlcsOzIGhhc3RhIHF1ZSByZWNsYW3Dsy5cblxuICBwcml2YXRlIHJlYWRvbmx5IGkxOG5TdWdnZXN0aW9uID0gaW5qZWN0KEkxOG5TZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICAvKiogU3VnZXJlbmNpYXMgZGVzY2FydGFkYXMgcG9yIGVsIHVzdWFyaW8sIHBhcmEgbm8gdm9sdmVyIGEgaW5zaXN0aXIuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgc3VnZ2VzdGlvbkRpc21pc3NlZCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gIC8qKlxuICAgKiBEZXZ1ZWx2ZSBlbCBjb3JyZW8gY29ycmVnaWRvIGEgc3VnZXJpciwgbyBudWxsLlxuICAgKlxuICAgKiBTb2xvIHN1Z2llcmUgY3VhbmRvIGVsIGNhbXBvIE5PIHRpZW5lIGZvY286IG1pZW50cmFzIHNlIGVzY3JpYmUsIHRvZG9cbiAgICogY29ycmVvIGEgbWVkaW8gdGVjbGVhciBwYXJlY2UgdW4gdHlwbyB5IGxhIHN1Z2VyZW5jaWEgcGFycGFkZWFyw61hLlxuICAgKi9cbiAgZW1haWxTdWdnZXN0aW9uRm9yKGZpZWxkOiBJbnB1dE1ldGFkYXRhKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgLy8gRWwgY29udHJvbCBOTyB2aWVuZSBlbiBlbCBmaWVsZCBjcnVkbzogdmFsLWZvcm0gbG8gcmVzdWVsdmUgcG9yIG5vbWJyZVxuICAgIC8vIGNvbnRyYSBzdSBwcm9waW8gRm9ybUdyb3VwIChgZ2V0Q29udHJvbGApLiBMZWVyIGBmaWVsZC5jb250cm9sYCBkZXZvbHbDrWFcbiAgICAvLyB1bmRlZmluZWQgc2llbXByZSwgYXPDrSBxdWUgbGEgc3VnZXJlbmNpYSBubyBhcGFyZWPDrWEgbnVuY2Eg4oCUIHkgc29sbyBzZVxuICAgIC8vIG5vdMOzIGNvbiBlbCBlMmUsIHBvcnF1ZSBlbCBzcGVjIGRlbCBjb21wb25lbnRlIGxlIHBhc2FiYSBlbCBjb250cm9sIGFcbiAgICAvLyBtYW5vIHkgcG9yIGVzbyBwYXNhYmEgZW4gdmVyZGUuXG4gICAgY29uc3QgY29udHJvbCA9IGZpZWxkLmNvbnRyb2wgPz8gdGhpcy5jb250cm9sUG9yTm9tYnJlKGZpZWxkLm5hbWUpO1xuICAgIGNvbnN0IHZhbG9yID0gdHlwZW9mIGNvbnRyb2w/LnZhbHVlID09PSAnc3RyaW5nJyA/IGNvbnRyb2wudmFsdWUgOiAnJztcbiAgICBpZiAoIXZhbG9yIHx8ICFjb250cm9sPy50b3VjaGVkKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBzdWdlcmlkbyA9IHN1Z2dlc3RFbWFpbEZpeCh2YWxvcik7XG4gICAgaWYgKCFzdWdlcmlkbyB8fCB0aGlzLnN1Z2dlc3Rpb25EaXNtaXNzZWQuaGFzKHN1Z2VyaWRvKSkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHN1Z2VyaWRvO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1c2NhIGVsIGNvbnRyb2wgc2luIGV4cGxvdGFyIHNpIGVsIGZvcm11bGFyaW8gdG9kYXbDrWEgbm8gc2UgY29uc3RydXnDsy5cbiAgICogYGdldENvbnRyb2xgIGFzdW1lIGBGb3JtYCB5YSBpbmljaWFsaXphZG87IGFjw6Egc2UgbGxhbWEgZGVzZGUgZWwgdGVtcGxhdGUsXG4gICAqIHF1ZSBwdWVkZSBldmFsdWFyc2UgYW50ZXMgZGUgYG5nT25Jbml0YCBlbiBhbGd1bm9zIGNpY2xvcy5cbiAgICovXG4gIHByaXZhdGUgY29udHJvbFBvck5vbWJyZShub21icmU/OiBzdHJpbmcpIHtcbiAgICBpZiAoIW5vbWJyZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdGhpcy5Gb3JtPy5nZXQobm9tYnJlKSA/PyB1bmRlZmluZWQ7XG4gIH1cblxuICBlbWFpbFN1Z2dlc3Rpb25RdWVzdGlvbihzdWdlcmlkbzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB0ZXh0byA9IHRoaXMudGV4dG9JMThuKCdlbWFpbFN1Z2dlc3Rpb25RdWVzdGlvbicsICfCv1F1aXNpc3RlIGRlY2lyIHtlbWFpbH0/Jyk7XG4gICAgcmV0dXJuIHRleHRvLnJlcGxhY2UoJ3tlbWFpbH0nLCBzdWdlcmlkbyk7XG4gIH1cblxuICBlbWFpbFN1Z2dlc3Rpb25BcHBseUxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudGV4dG9JMThuKCdlbWFpbFN1Z2dlc3Rpb25BcHBseScsICdTw60sIGNvcnJlZ2lyJyk7XG4gIH1cblxuICAvKipcbiAgICogVHJhZHVjZSBjb24gcmVzcGFsZG8gcmVhbC5cbiAgICpcbiAgICogYEkxOG5TZXJ2aWNlLnQoKWAgTk8gZGV2dWVsdmUgbnVsbCBjdWFuZG8gZmFsdGEgbGEgY2xhdmU6IGRldnVlbHZlIHZhY8OtbyBvXG4gICAqIHVuIHBsYWNlaG9sZGVyIGBbbmFtZXNwYWNlLmtleV1gLiBDb24gYD8/YCBlbCByZXNwYWxkbyBudW5jYSBlbnRyYWJhIHkgZWxcbiAgICogcmVuZ2zDs24gc2Fsw61hIGVuIGJsYW5jbyBlbiBjdWFscXVpZXIgYXBwIHF1ZSBubyByZWdpc3RyYXJhIGxhIGNsYXZlLiBMb1xuICAgKiBlbmNvbnRyw7MgZWwgc3BlYyBkZWwgY29tcG9uZW50ZSwgbm8gbGEgcmV2aXNpw7NuIGEgb2pvLlxuICAgKi9cbiAgcHJpdmF0ZSB0ZXh0b0kxOG4oa2V5OiBzdHJpbmcsIHJlc3BhbGRvOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRleHRvID0gdGhpcy5pMThuU3VnZ2VzdGlvbj8udChrZXkpID8/ICcnO1xuICAgIGlmICghdGV4dG8gfHwgdGV4dG8uc3RhcnRzV2l0aCgnWycpKSByZXR1cm4gcmVzcGFsZG87XG4gICAgcmV0dXJuIHRleHRvO1xuICB9XG5cbiAgLyoqIEFwbGljYSBsYSBjb3JyZWNjacOzbi4gRXMgbGEgw7puaWNhIHbDrWE6IG5hZGEgc2UgcmVlc2NyaWJlIHNpbiBlc3RlIGNsaWMuICovXG4gIGFwcGx5RW1haWxTdWdnZXN0aW9uKGZpZWxkOiBJbnB1dE1ldGFkYXRhLCBzdWdlcmlkbzogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgY29udHJvbCA9IGZpZWxkLmNvbnRyb2wgPz8gdGhpcy5jb250cm9sUG9yTm9tYnJlKGZpZWxkLm5hbWUpO1xuICAgIGNvbnRyb2w/LnNldFZhbHVlKHN1Z2VyaWRvKTtcbiAgICBjb250cm9sPy5tYXJrQXNEaXJ0eSgpO1xuICAgIC8vIEFwbGljYWRhIGRlamEgZGUgb2ZyZWNlcnNlOyBzaSBlbCB1c3VhcmlvIHZ1ZWx2ZSBhIGVzY3JpYmlyIG1hbCwgZWxcbiAgICAvLyB2YWxvciBzZXLDoSBvdHJvIHkgbGEgc3VnZXJlbmNpYSByZWFwYXJlY2UuXG4gICAgdGhpcy5zdWdnZXN0aW9uRGlzbWlzc2VkLmFkZChzdWdlcmlkbyk7XG4gIH1cblxufVxuIl19
|