valtech-components 4.0.964 → 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/rights-footer/rights-footer.component.mjs +2 -2
- 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 +5 -5
- package/esm2022/lib/components/molecules/date-picker/date-picker.component.mjs +5 -5
- 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/empty-state/empty-state.component.mjs +3 -3
- package/esm2022/lib/components/molecules/feedback-form/feedback-form.component.mjs +3 -3
- package/esm2022/lib/components/molecules/field-options-editor/field-options-editor.component.mjs +3 -3
- package/esm2022/lib/components/molecules/file-input/file-input.component.mjs +3 -3
- package/esm2022/lib/components/molecules/footer-links/footer-links.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/image-crop/image-crop.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/linked-providers/linked-providers.component.mjs +3 -3
- package/esm2022/lib/components/molecules/links-cake/links-cake.component.mjs +3 -3
- package/esm2022/lib/components/molecules/multi-select-search/multi-select-search.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/option-cards/option-cards.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 +5 -5
- 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 +5 -5
- 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/request-form/request-form.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/molecules/update-banner/update-banner.component.mjs +3 -3
- package/esm2022/lib/components/organisms/access-request-view/access-request-view.component.mjs +3 -3
- package/esm2022/lib/components/organisms/api-keys-modal/api-keys-modal.component.mjs +5 -5
- 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 +5 -5
- 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 +5 -5
- package/esm2022/lib/components/organisms/data-table/data-table.component.mjs +3 -3
- package/esm2022/lib/components/organisms/delete-account-modal/delete-account-modal.component.mjs +3 -3
- package/esm2022/lib/components/organisms/docs-sidebar/docs-sidebar.component.mjs +3 -3
- package/esm2022/lib/components/organisms/field-list/field-list.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 +5 -5
- 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/infinite-list/infinite-list.component.mjs +5 -5
- 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 +11 -11
- package/esm2022/lib/components/organisms/login/login.component.mjs +3 -3
- package/esm2022/lib/components/organisms/login-attempt-modal/login-attempt-modal.component.mjs +6 -6
- package/esm2022/lib/components/organisms/member-detail-modal/member-detail-modal.component.mjs +5 -5
- package/esm2022/lib/components/organisms/member-import-modal/member-import-modal.component.mjs +5 -5
- package/esm2022/lib/components/organisms/menu/menu.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/notification-preferences-view/notification-preferences-view.component.mjs +5 -5
- package/esm2022/lib/components/organisms/notifications-view/notifications-view.component.mjs +3 -3
- package/esm2022/lib/components/organisms/option-sheet/option-sheet.component.mjs +3 -3
- package/esm2022/lib/components/organisms/organization-view/organization-view.component.mjs +3 -3
- package/esm2022/lib/components/organisms/permissions-view/permissions-view.component.mjs +11 -11
- package/esm2022/lib/components/organisms/request-review-panel/request-review-panel.component.mjs +5 -5
- package/esm2022/lib/components/organisms/role-manager/role-manager.component.mjs +7 -7
- package/esm2022/lib/components/organisms/rotating-text/rotating-text.component.mjs +3 -3
- package/esm2022/lib/components/organisms/security-view/security-view.component.mjs +5 -5
- package/esm2022/lib/components/organisms/session-list-modal/session-list-modal.component.mjs +3 -3
- package/esm2022/lib/components/organisms/toolbar/toolbar.component.mjs +3 -3
- package/esm2022/lib/components/organisms/transfer-ownership-modal/transfer-ownership-modal.component.mjs +5 -5
- 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/page-content/page-content.component.mjs +3 -3
- package/esm2022/lib/components/templates/simple/simple.component.mjs +3 -3
- package/esm2022/lib/services/confirmation-dialog/types.mjs +2 -2
- package/esm2022/lib/services/content/transformer.mjs +3 -3
- package/esm2022/lib/services/markdown-article/beautify-legal-article.mjs +2 -2
- package/esm2022/lib/services/markdown-article/markdown-article-parser.mjs +2 -2
- package/esm2022/lib/services/modal/types.mjs +2 -2
- package/esm2022/lib/version.mjs +2 -2
- package/fesm2022/valtech-components.mjs +284 -284
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/atoms/rights-footer/rights-footer.component.d.ts +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
package/esm2022/lib/components/organisms/notifications-view/notifications-view.component.mjs
CHANGED
|
@@ -517,7 +517,7 @@ export class NotificationsViewComponent {
|
|
|
517
517
|
[props]="{
|
|
518
518
|
content: ctaHint(),
|
|
519
519
|
size: 'small',
|
|
520
|
-
color: '
|
|
520
|
+
color: 'medium',
|
|
521
521
|
bold: false,
|
|
522
522
|
}"
|
|
523
523
|
/>
|
|
@@ -677,7 +677,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
677
677
|
[props]="{
|
|
678
678
|
content: ctaHint(),
|
|
679
679
|
size: 'small',
|
|
680
|
-
color: '
|
|
680
|
+
color: 'medium',
|
|
681
681
|
bold: false,
|
|
682
682
|
}"
|
|
683
683
|
/>
|
|
@@ -792,4 +792,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
792
792
|
}], ctorParameters: () => [], propDecorators: { config: [{
|
|
793
793
|
type: Input
|
|
794
794
|
}] } });
|
|
795
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvbm90aWZpY2F0aW9ucy12aWV3L25vdGlmaWNhdGlvbnMtdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUNMLFlBQVksRUFDWixzQkFBc0IsRUFDdEIsaUJBQWlCLEVBQ2pCLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ25CLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIsdUJBQXVCLEVBQ3ZCLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIsYUFBYSxHQUNkLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFFeEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1B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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUpULHVtR0E1SkMsT0FBTywySkFDUCxnQkFBZ0IsMkVBQ2hCLGNBQWMseUVBQ2QsYUFBYSx3RUFDYixlQUFlLDBHQUNmLHVCQUF1QixtRkFDdkIsbUJBQW1CLCtFQUNuQixrQkFBa0I7OzRGQXdXVCwwQkFBMEI7a0JBblh0QyxTQUFTOytCQUNFLHdCQUF3QixjQUN0QixJQUFJLFdBQ1A7d0JBQ1AsT0FBTzt3QkFDUCxnQkFBZ0I7d0JBQ2hCLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixlQUFlO3dCQUNmLHVCQUF1Qjt3QkFDdkIsbUJBQW1CO3dCQUNuQixrQkFBa0I7cUJBQ25CLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1KVDt3REFzT1EsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJb25JY29uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7XG4gIGFsYXJtT3V0bGluZSxcbiAgY2hhdGJveEVsbGlwc2VzT3V0bGluZSxcbiAgY2hhdGJ1YmJsZU91dGxpbmUsXG4gIGNoZWNrbWFya0NpcmNsZU91dGxpbmUsXG4gIGNoZWNrbWFya0RvbmVPdXRsaW5lLFxuICBjbG91ZE9mZmxpbmVPdXRsaW5lLFxuICBjb2dPdXRsaW5lLFxuICBkb2N1bWVudFRleHRPdXRsaW5lLFxuICBub3RpZmljYXRpb25zT2ZmT3V0bGluZSxcbiAgbm90aWZpY2F0aW9uc091dGxpbmUsXG4gIGNoZXZyb25Gb3J3YXJkT3V0bGluZSxcbiAgcGVyc29uT3V0bGluZSxcbn0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9jb250YWluZXIvY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvZGlzcGxheS9kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3RpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvZW1wdHktc3RhdGUvdHlwZXMnO1xuaW1wb3J0IHsgY3JlYXRlRXJyb3JTdGF0ZVByb3BzIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2VtcHR5LXN0YXRlL2ZhY3RvcnknO1xuaW1wb3J0IHsgU2tlbGV0b25MYXlvdXRDb21wb25lbnQgfSBmcm9tICcuLi9za2VsZXRvbi1sYXlvdXQvc2tlbGV0b24tbGF5b3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25NZXRhZGF0YSwgQ29tcG9uZW50U3RhdGVzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGgvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbkFjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hdXRoL25vdGlmaWNhdGlvbi1hY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgaW50ZXJwcmV0RXJyb3IgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9lcnJvcnMvaW50ZXJwcmV0LWVycm9yJztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uRG9jdW1lbnQsIE5vdGlmaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZmlyZWJhc2Uvbm90aWZpY2F0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IFBhZ2VSZWZyZXNoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3BhZ2UtcmVmcmVzaC9wYWdlLXJlZnJlc2guc2VydmljZSc7XG5pbXBvcnQgeyBjcmVhdGVSZWZyZXNoYWJsZVN0cmVhbSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3JlZnJlc2hhYmxlLXN0cmVhbS9yZWZyZXNoYWJsZS1zdHJlYW0nO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBWYWx0ZWNoRXJyb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZXJyb3JzL3ZhbHRlY2gtZXJyb3Iuc2VydmljZSc7XG5cbmltcG9ydCB7IE5vdGlmaWNhdGlvbnNWaWV3Q29uZmlnIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBOT1RJRklDQVRJT05TX1ZJRVdfSTE4TiB9IGZyb20gJy4vbm90aWZpY2F0aW9ucy12aWV3LmkxOG4nO1xuXG5hZGRJY29ucyh7XG4gIGFsYXJtT3V0bGluZSxcbiAgY2hhdGJveEVsbGlwc2VzT3V0bGluZSxcbiAgY2hhdGJ1YmJsZU91dGxpbmUsXG4gIGNoZWNrbWFya0NpcmNsZU91dGxpbmUsXG4gIGNoZWNrbWFya0RvbmVPdXRsaW5lLFxuICBjbG91ZE9mZmxpbmVPdXRsaW5lLFxuICBjb2dPdXRsaW5lLFxuICBkb2N1bWVudFRleHRPdXRsaW5lLFxuICBub3RpZmljYXRpb25zT2ZmT3V0bGluZSxcbiAgbm90aWZpY2F0aW9uc091dGxpbmUsXG4gIGNoZXZyb25Gb3J3YXJkT3V0bGluZSxcbiAgcGVyc29uT3V0bGluZSxcbn0pO1xuXG5jb25zdCBERUZBVUxUX05BTUVTUEFDRSA9ICdOb3RpZmljYXRpb25zJztcbmNvbnN0IERFRkFVTFRfU0VUVElOR1NfUEFUSCA9ICcvYXBwL3NldHRpbmdzL25vdGlmaWNhdGlvbnMnO1xuY29uc3QgREVGQVVMVF9QQUdFX1NJWkUgPSAxMDtcbmNvbnN0IERFRkFVTFRfTUFYX0xPQUQgPSA1MDtcblxudHlwZSBHcm91cEtleSA9ICd0b2RheScgfCAndGhpc01vbnRoJyB8ICdlYXJsaWVyJztcblxuaW50ZXJmYWNlIE5vdGlmaWNhdGlvbkdyb3VwIHtcbiAga2V5OiBHcm91cEtleTtcbiAgbGFiZWw6IHN0cmluZztcbiAgaXRlbXM6IE5vdGlmaWNhdGlvbkRvY3VtZW50W107XG59XG5cbnR5cGUgUmVzb2x2ZWRJY29uID1cbiAgfCB7IGtpbmQ6ICdpb25pY29uJzsgbmFtZTogc3RyaW5nOyBjb2xvcj86IHN0cmluZyB9XG4gIHwgeyBraW5kOiAnaW1hZ2UnOyBzcmM6IHN0cmluZyB9XG4gIHwgeyBraW5kOiAnYXZhdGFyJzsgc3JjOiBzdHJpbmcgfTtcblxuaW50ZXJmYWNlIEljb25IaW50IHtcbiAgdHlwZT86ICdpb25pY29uJyB8ICdpbWFnZScgfCAnYXZhdGFyJztcbiAgdmFsdWU/OiBzdHJpbmc7XG4gIGNvbG9yPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIGB2YWwtbm90aWZpY2F0aW9ucy12aWV3YCDigJQgaW5ib3ggZGUgbm90aWZpY2FjaW9uZXMgZnVsbC1mZWF0dXJlIGF1dG9jb250ZW5pZG9cbiAqIChvcmdhbmlzbSkuIFByb21vdmlkbyBkZXNkZSBgc2hvd2Nhc2VgIGJham8gZWwgcHJvY2VzbyBkZSBBRFItMDIxLlxuICpcbiAqIFNlcGFyYWRvIGRlIGAvYXBwL3NldHRpbmdzL25vdGlmaWNhdGlvbnNgIChxdWUgY29udHJvbGEgcGVybWlzbyBGQ00gKyBtYXN0ZXJcbiAqIHRvZ2dsZSkuIEFxdcOtIGVsIHVzZXIgbGVlL2FicmUvbWFyY2EtbGXDrWRhcyBzdXMgbWVuc2FqZXMuXG4gKlxuICogLSAqKlN0cmVhbSByZWFsLXRpbWUqKiB2w61hIGBOb3RpZmljYXRpb25zU2VydmljZS5nZXRBbGwobWF4TG9hZClgIGVudnVlbHRvIGVuXG4gKiAgIGBjcmVhdGVSZWZyZXNoYWJsZVN0cmVhbWAgKGdhdGVhZG8gcG9yIGBmaXJlYmFzZUF1dGhSZWFkeWAsIHJldHJ5IGNvcnRvLFxuICogICBgZmlyc3RFbWl0VGltZW91dE1zOiAxNTAwMGApLiBFc3RhZG9zOiBsb2FkaW5nIChza2VsZXRvbiksIGVycm9yXG4gKiAgIChgdmFsLWVtcHR5LXN0YXRlYCArIHJlaW50ZW50YXIpLCBlbXB0eSAoYHZhbC1lbXB0eS1zdGF0ZWAgKyBDVEEpLCBkYXRhXG4gKiAgIChsaXN0YSBhZ3J1cGFkYSBIb3kgLyBFc3RlIG1lcyAvIEFudGVyaW9yZXMpLlxuICogLSAqKkFicmlyKiogdW5hIG5vdGlmIOKGkiBgTm90aWZpY2F0aW9uQWN0aW9uU2VydmljZS5vcGVuKClgIChtYXJrUmVhZCArXG4gKiAgIHN3aXRjaC1vcmcgKyBuYXZlZ2FyL2hhbmRvZmYgY3Jvc3MtYXBwKS4gSG9vayBgb25Ob3RpZmljYXRpb25PcGVuYCBvcGNpb25hbC5cbiAqIC0gKipNYXJjYXIgdG9kYXMgY29tbyBsZcOtZGFzKiogKGdhdGVhZG8gcG9yIGBlbmFibGVNYXJrQWxsYCkuXG4gKiAtICoqQ1RBIHB1c2gtb2ZmKiogY3VhbmRvIGVsIHBlcm1pc28gZGVsIG5hdmVnYWRvciBubyBlc3TDoSBjb25jZWRpZG8gKGdhdGVhZG9cbiAqICAgcG9yIGBzaG93UHVzaE9mZkN0YWApOyBuYXZlZ2EgYSBgc2V0dGluZ3NOb3RpZmljYXRpb25zUGF0aGAuXG4gKiAtICoqUGFnaW5hY2nDs24gc29mdCoqIOKAlCBzbGljZSBsb2NhbCAoYHBhZ2VTaXplYCwgK2BwYWdlU2l6ZWAgcG9yIGNsaWNrKSBzb2JyZSBlbFxuICogICBjYWNoZSBkZWwgc3RyZWFtOyBlbCB0b3BlIGRlIGZldGNoIGVzIGBtYXhMb2FkYC5cbiAqIC0gKippMThuIGF1dG8tcmVnaXN0cmFkbyoqIGVzL2VuIGJham8gYGkxOG5OYW1lc3BhY2VgIChkZWZhdWx0IGBOb3RpZmljYXRpb25zYCkuXG4gKlxuICogTk8gcmVuZGVyaXphIGlvbi1jb250ZW50IOKAlCB2aXZlIGRlbnRybyBkZSB2YWwtcGFnZS13cmFwcGVyLiBgUm91dGVyYCB5XG4gKiBgQWN0aXZhdGVkUm91dGVgIHNlIGlueWVjdGFuIGB7IG9wdGlvbmFsOiB0cnVlIH1gIOKGkiBmdW5jaW9uYSBzaW4gcm91dGVyXG4gKiAoZW1iZWJpZGEgLyBTdG9yeWJvb2spLiBFbCBmb3J3YXJkLWNvbXBhdCBpY29uIHJlc29sdmVyIGxlZSBgbm90aWYucGF5bG9hZC5pY29uYFxuICogc2kgZXhpc3RlIChgeyB0eXBlLCB2YWx1ZSwgY29sb3I/IH1gKSwgY2FlIGEgdW4gbWFwYSBwb3IgYG5vdGlmLnR5cGVgLCBsdWVnbyBhXG4gKiBgbm90aWZpY2F0aW9ucy1vdXRsaW5lYC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLW5vdGlmaWNhdGlvbnMtdmlldycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBJb25JY29uLFxuICAgIERpc3BsYXlDb21wb25lbnQsXG4gICAgVGl0bGVDb21wb25lbnQsXG4gICAgVGV4dENvbXBvbmVudCxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgU2tlbGV0b25MYXlvdXRDb21wb25lbnQsXG4gICAgRW1wdHlTdGF0ZUNvbXBvbmVudCxcbiAgICBDb250YWluZXJDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPHZhbC1jb250YWluZXIgW3Byb3BzXT1cInsgc2l6ZTogJ21kJywgcGFkZGluZzogJ25vbmUnIH1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwYWdlXCI+XG4gICAgICAgIDxoZWFkZXIgY2xhc3M9XCJwYWdlLWhlYWRlclwiPlxuICAgICAgICAgIDx2YWwtZGlzcGxheSBbcHJvcHNdPVwieyBzaXplOiAnc21hbGwnLCBjb2xvcjogJ2RhcmsnLCBjb250ZW50OiBwYWdlVGl0bGUoKSB9XCIgLz5cbiAgICAgICAgICA8dmFsLXRpdGxlXG4gICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICBzaXplOiAnbGFyZ2UnLFxuICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgICAgY29udGVudDogcGFnZURlc2NyaXB0aW9uKCksXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIEBpZiAoc2hvd01hcmtBbGwoKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgIDx2YWwtYnV0dG9uIFtwcm9wc109XCJtYXJrQWxsQnV0dG9uUHJvcHMoKVwiIChjbGljayk9XCJvbk1hcmtBbGwoKVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgIEBpZiAocmVzb2x2ZWRDb25maWcoKS5zaG93UHVzaE9mZkN0YSAmJiAhcHVzaEVuYWJsZWQoKSkge1xuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwibm90aWYtY3RhXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gY2xhc3M9XCJub3RpZi1jdGFfX2ljb25cIiBuYW1lPVwibm90aWZpY2F0aW9ucy1vZmYtb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm90aWYtY3RhX19ib2R5XCI+XG4gICAgICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgICBjb250ZW50OiBjdGFUaXRsZSgpLFxuICAgICAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICAgICAgYm9sZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGN0YUhpbnQoKSxcbiAgICAgICAgICAgICAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIDx2YWwtYnV0dG9uIFtwcm9wc109XCJjdGFCdXR0b25Qcm9wcygpXCIgKGNsaWNrKT1cIm9uR29Ub1NldHRpbmdzKClcIiAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAobG9hZGluZygpKSB7XG4gICAgICAgICAgPHZhbC1za2VsZXRvbi1sYXlvdXQgW3Byb3BzXT1cInsgcHJlc2V0OiAnbGlzdCcsIHJvd3M6IDYgfVwiIC8+XG4gICAgICAgIH0gQGVsc2UgaWYgKGVycm9yU3RhdGUoKSkge1xuICAgICAgICAgIDx2YWwtZW1wdHktc3RhdGUgW3Byb3BzXT1cImVycm9yU3RhdGUoKSFcIiAvPlxuICAgICAgICB9IEBlbHNlIGlmIChhbGxOb3RpZnMoKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICA8dmFsLWVtcHR5LXN0YXRlIFtwcm9wc109XCJlbXB0eVN0YXRlUHJvcHMoKVwiIC8+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIEBmb3IgKGdyb3VwIG9mIGdyb3VwcygpOyB0cmFjayBncm91cC5rZXkpIHtcbiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiZ3JvdXBcIj5cbiAgICAgICAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgICBib2xkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgY29udGVudDogZ3JvdXAubGFiZWwsXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cIm5vdGlmLWxpc3RcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChuIG9mIGdyb3VwLml0ZW1zOyB0cmFjayBuLmlkKSB7XG4gICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJub3RpZlwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5ub3RpZi0tdW5yZWFkXT1cIiFuLmlzUmVhZFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5ub3RpZi0tcmVhZF09XCJuLmlzUmVhZFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5ub3RpZi0tYWN0aW9uYWJsZV09XCIhIW4uYWN0aW9uUm91dGVcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5yb2xlXT1cIm4uYWN0aW9uUm91dGUgPyAnYnV0dG9uJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJuLmFjdGlvblJvdXRlID8gJzAnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibm90aWZpY2F0aW9uQXJpYUxhYmVsKG4pXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTm90aWZpY2F0aW9uUm93Q2xpY2sobilcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvbk5vdGlmaWNhdGlvbktleWRvd24oJGV2ZW50LCBuKVwiXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duLnNwYWNlKT1cIm9uTm90aWZpY2F0aW9uS2V5ZG93bigkZXZlbnQsIG4pXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vdGlmX19pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgQHN3aXRjaCAocmVzb2x2ZUljb24obikua2luZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdpb25pY29uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJpb25pY29uTmFtZShuKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImlvbkNvbG9yKGlvbmljb25Db2xvcihuKSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ2ltYWdlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiaW1hZ2VTcmMobilcIiBhbHQ9XCJcIiBsb2FkaW5nPVwibGF6eVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ2F2YXRhcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cIm5vdGlmX19hdmF0YXJcIiBbc3JjXT1cImltYWdlU3JjKG4pXCIgYWx0PVwiXCIgbG9hZGluZz1cImxhenlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vdGlmX19ib2R5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vdGlmX19oZWFkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm90aWZfX3RpdGxlLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFuLmlzUmVhZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibm90aWZfX3VucmVhZC1kb3RcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInVucmVhZExhYmVsKClcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJub3RpZl9fdGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBuLnRpdGxlIHx8ICfigJQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9sZDogIW4uaXNSZWFkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFuLmlzUmVhZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibm90aWZfX3VucmVhZC1iYWRnZVwiPnt7IHVucmVhZExhYmVsKCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJub3RpZl9fdGltZVwiPnt7IHJlbGF0aXZlVGltZShuKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKG4uYm9keSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJub3RpZl9fdGV4dFwiIFtjbGFzcy5ub3RpZl9fdGV4dC0tY2xhbXBlZF09XCIhaXNFeHBhbmRlZChuLmlkKSAmJiBpc0xvbmcobi5ib2R5KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBuLmJvZHkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXNMb25nKG4uYm9keSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm5vdGlmX19leHBhbmRcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uVG9nZ2xlRXhwYW5kKCRldmVudCwgbi5pZClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpc0V4cGFuZGVkKG4uaWQpID8gc2VlTGVzcygpIDogc2VlTW9yZSgpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKG4uYWN0aW9uUm91dGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub3RpZl9fYWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWwtYnV0dG9uIFtwcm9wc109XCJvcGVuQnV0dG9uUHJvcHMoKVwiIChjbGljayk9XCJvbk9wZW5CdXR0b25DbGljaygkZXZlbnQsIG4pXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKGhhc01vcmUoKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1hY3Rpb25zIHJvdy1hY3Rpb25zLS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPHZhbC1idXR0b24gW3Byb3BzXT1cImxvYWRNb3JlQnV0dG9uUHJvcHMoKVwiIChjbGljayk9XCJvbkxvYWRNb3JlKClcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L3ZhbC1jb250YWluZXI+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC8qIEFuY2hvIHkgY3JlY2ltaWVudG8gY29uIGVsIHJhaWwgY29sYXBzYWRvIGxvcyBkYSB2YWwtY29udGFpbmVyIChzaXplXG4gICAgICAgICAnbWQnKSwgbm8gQ1NTIGxvY2FsOiB2ZXIgY29udGFpbmVyLmNvbXBvbmVudC5zY3NzLiAqL1xuICAgICAgLnBhZ2Uge1xuICAgICAgICBwYWRkaW5nOiAxNnB4IDA7XG4gICAgICB9XG4gICAgICAucGFnZS1oZWFkZXIge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICAgICAgfVxuICAgICAgLnJvdy1hY3Rpb25zIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMTJweDtcbiAgICAgIH1cbiAgICAgIC5yb3ctYWN0aW9ucy0tY2VudGVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XG4gICAgICB9XG4gICAgICAucm93LWFjdGlvbnMtLWVuZCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICAgIG1hcmdpbi10b3A6IDhweDtcbiAgICAgIH1cblxuICAgICAgLm5vdGlmLWN0YSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgIHBhZGRpbmc6IDE0cHggMTZweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICAgICAgLyogU3RlcC0qIG5vIGludmllcnRlIGVuIGRhcmssIHRleHRvIGxpZ2h0ICsgYmcgbGlnaHQgPSBpbnZpc2libGUuXG4gICAgICAgICAgIGxpZ2h0L2xpZ2h0LXNoYWRlIHNpIGZsaXBwYW4gY29uIGVsIHBhbGV0dGUgZGFyayBkZSBJb25pYy4gKi9cbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0taW9uLWNvbG9yLWxpZ2h0LXNoYWRlLCByZ2JhKDAsIDAsIDAsIDAuMDgpKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTRweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWxpZ2h0KTtcbiAgICAgIH1cbiAgICAgIC5ub3RpZi1jdGFfX2ljb24ge1xuICAgICAgICBmb250LXNpemU6IDI0cHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyaywgIzFhMWExYSk7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICBtYXJnaW4tdG9wOiAycHg7XG4gICAgICB9XG4gICAgICAubm90aWYtY3RhX19ib2R5IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAycHg7XG4gICAgICB9XG5cbiAgICAgIC5ncm91cCB7XG4gICAgICAgIHBhZGRpbmc6IDEycHggMDtcbiAgICAgIH1cbiAgICAgIC5ncm91cCArIC5ncm91cCB7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS12YWwtYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMDgpKTtcbiAgICAgIH1cblxuICAgICAgLm5vdGlmLWxpc3Qge1xuICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBtYXJnaW46IDEycHggMCAwO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICB9XG4gICAgICAubm90aWYge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogNDRweCAxZnI7XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgICAgcGFkZGluZzogMTRweCAxMnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIHRyYW5zaXRpb246XG4gICAgICAgICAgYmFja2dyb3VuZCAxNDBtcyBlYXNlLFxuICAgICAgICAgIGJvcmRlci1jb2xvciAxNDBtcyBlYXNlLFxuICAgICAgICAgIGJveC1zaGFkb3cgMTQwbXMgZWFzZTtcbiAgICAgIH1cbiAgICAgIC5ub3RpZi0tYWN0aW9uYWJsZSB7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIH1cbiAgICAgIC5ub3RpZi0tYWN0aW9uYWJsZTpob3ZlcixcbiAgICAgIC5ub3RpZi0tYWN0aW9uYWJsZTpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWxpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuMDQpKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS12YWwtYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMDgpKTtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgIH1cbiAgICAgIC5ub3RpZi0tdW5yZWFkIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDU2LCAxMjgsIDI1NSksIDAuMDcpO1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCA1NiwgMTI4LCAyNTUpLCAwLjE4KTtcbiAgICAgIH1cbiAgICAgIC5ub3RpZi0tcmVhZCAubm90aWZfX2ljb24ge1xuICAgICAgICBvcGFjaXR5OiAwLjcyO1xuICAgICAgfVxuICAgICAgLm5vdGlmX19pY29uIHtcbiAgICAgICAgd2lkdGg6IDQ0cHg7XG4gICAgICAgIGhlaWdodDogNDRweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWxpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuMDYpKTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cbiAgICAgIC5ub3RpZl9faWNvbiBpb24taWNvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMjJweDtcbiAgICAgIH1cbiAgICAgIC5ub3RpZl9faWNvbiBpbWcge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgIH1cbiAgICAgIC5ub3RpZl9fYXZhdGFyIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgfVxuXG4gICAgICAubm90aWZfX2JvZHkge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDRweDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuICAgICAgLm5vdGlmX19oZWFkIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgZ2FwOiAxMnB4O1xuICAgICAgfVxuICAgICAgLm5vdGlmX190aXRsZS1yb3cge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuICAgICAgLm5vdGlmX190aXRsZSB7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cbiAgICAgIC5ub3RpZl9fdW5yZWFkLWRvdCB7XG4gICAgICAgIHdpZHRoOiA4cHg7XG4gICAgICAgIGhlaWdodDogOHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LCAjMzg4MGZmKTtcbiAgICAgIH1cbiAgICAgIC5ub3RpZl9fdW5yZWFkLWJhZGdlIHtcbiAgICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICAgIHBhZGRpbmc6IDJweCA3cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBmb250LXNpemU6IDEwcHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM1O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnktY29udHJhc3QsICNmZmYpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSwgIzM4ODBmZik7XG4gICAgICB9XG4gICAgICAubm90aWZfX3RpbWUge1xuICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyaywgIzkyOTQ5Yyk7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgfVxuICAgICAgLm5vdGlmX190ZXh0IHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyaywgIzFhMWExYSk7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgICAgIH1cbiAgICAgIC5ub3RpZl9fdGV4dC0tY2xhbXBlZCB7XG4gICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgICAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDI7XG4gICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB9XG4gICAgICAubm90aWZfX2V4cGFuZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgZm9udC1zaXplOiAxM3B4O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmssICMxYTFhMWEpO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgfVxuICAgICAgLm5vdGlmX19hY3Rpb24ge1xuICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZDtcbiAgICAgICAgbWFyZ2luLXRvcDogNHB4O1xuICAgICAgfVxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDUyMHB4KSB7XG4gICAgICAgIC5ub3RpZiB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiA0MHB4IDFmcjtcbiAgICAgICAgICBnYXA6IDEwcHg7XG4gICAgICAgICAgcGFkZGluZzogMTJweCAxMHB4O1xuICAgICAgICB9XG4gICAgICAgIC5ub3RpZl9faWNvbiB7XG4gICAgICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgICAgICB9XG4gICAgICAgIC5ub3RpZl9faGVhZCB7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICBnYXA6IDRweDtcbiAgICAgICAgfVxuICAgICAgICAubm90aWZfX3VucmVhZC1iYWRnZSB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgICAgICAubm90aWZfX3RpbWUge1xuICAgICAgICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25zVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBuYXYgPSBpbmplY3QoTmF2aWdhdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIG5vdGlmcyA9IGluamVjdChOb3RpZmljYXRpb25zU2VydmljZSk7XG4gIHByaXZhdGUgYWN0aW9uID0gaW5qZWN0KE5vdGlmaWNhdGlvbkFjdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIHRvYXN0ID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XG4gIHByaXZhdGUgZXJyb3JzID0gaW5qZWN0KFZhbHRlY2hFcnJvclNlcnZpY2UpO1xuICBwcml2YXRlIGF1dGggPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBwcml2YXRlIHBhZ2VSZWZyZXNoID0gaW5qZWN0KFBhZ2VSZWZyZXNoU2VydmljZSk7XG4gIC8vIGBBY3RpdmF0ZWRSb3V0ZWAgb3BjaW9uYWwg4oaSIGxhIHZpc3RhIGZ1bmNpb25hIGVtYmViaWRhIC8gZW4gU3Rvcnlib29rIHNpblxuICAvLyByb3V0ZXIgKHNvbG8gbG8gdXNhIHBhcmEgbGVlciBlbCByb3V0ZSBkYXRhIGRlIGNvbmZpZyBjb21vIGZhbGxiYWNrKS4gTGFcbiAgLy8gbmF2ZWdhY2nDs24gdmEgcG9yIGBOYXZpZ2F0aW9uU2VydmljZWAgKHdyYXBwZXIgb3BjaW9uYWwgc29icmUgYFJvdXRlcmApLlxuICBwcml2YXRlIHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIC8qKlxuICAgKiBDb25maWcgdsOtYSBASW5wdXQgKG9iamVjdC1maXJzdCkuIFNpIG5vIHNlIHBhc2EsIHNlIGNhZSBhbCByb3V0ZSBkYXRhXG4gICAqIGBub3RpZmljYXRpb25zQ29uZmlnYCAocG9ibGFkbyBwb3IgYHByb3ZpZGVWYWx0ZWNoTm90aWZpY2F0aW9uc1JvdXRlc2ApLlxuICAgKiBgcmVzb2x2ZWRDb25maWdgIG1lcmdlYSBjb24gbG9zIGRlZmF1bHRzIOKAlCBgQElucHV0YCBnYW5hIHNvYnJlIHJvdXRlIGRhdGEuXG4gICAqL1xuICBASW5wdXQoKSBjb25maWc/OiBOb3RpZmljYXRpb25zVmlld0NvbmZpZztcblxuICByZWFkb25seSByZXNvbHZlZENvbmZpZyA9IGNvbXB1dGVkPFxuICAgIFJlcXVpcmVkPE9taXQ8Tm90aWZpY2F0aW9uc1ZpZXdDb25maWcsICdvbk5vdGlmaWNhdGlvbk9wZW4nPj4gJiBQaWNrPE5vdGlmaWNhdGlvbnNWaWV3Q29uZmlnLCAnb25Ob3RpZmljYXRpb25PcGVuJz5cbiAgPigoKSA9PiB7XG4gICAgY29uc3QgZnJvbVJvdXRlID0gKHRoaXMucm91dGU/LnNuYXBzaG90LmRhdGFbJ25vdGlmaWNhdGlvbnNDb25maWcnXSA/PyB7fSkgYXMgTm90aWZpY2F0aW9uc1ZpZXdDb25maWc7XG4gICAgY29uc3QgbWVyZ2VkOiBOb3RpZmljYXRpb25zVmlld0NvbmZpZyA9IHsgLi4uZnJvbVJvdXRlLCAuLi4odGhpcy5jb25maWcgPz8ge30pIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIHNob3dQdXNoT2ZmQ3RhOiBtZXJnZWQuc2hvd1B1c2hPZmZDdGEgPz8gdHJ1ZSxcbiAgICAgIGVuYWJsZU1hcmtBbGw6IG1lcmdlZC5lbmFibGVNYXJrQWxsID8/IHRydWUsXG4gICAgICBzZXR0aW5nc05vdGlmaWNhdGlvbnNQYXRoOiBtZXJnZWQuc2V0dGluZ3NOb3RpZmljYXRpb25zUGF0aCA/PyBERUZBVUxUX1NFVFRJTkdTX1BBVEgsXG4gICAgICBpMThuTmFtZXNwYWNlOiBtZXJnZWQuaTE4bk5hbWVzcGFjZSA/PyBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAgIHBhZ2VTaXplOiBtZXJnZWQucGFnZVNpemUgPz8gREVGQVVMVF9QQUdFX1NJWkUsXG4gICAgICBtYXhMb2FkOiBtZXJnZWQubWF4TG9hZCA/PyBERUZBVUxUX01BWF9MT0FELFxuICAgICAgb25Ob3RpZmljYXRpb25PcGVuOiBtZXJnZWQub25Ob3RpZmljYXRpb25PcGVuLFxuICAgIH07XG4gIH0pO1xuXG4gIC8qKiBOYW1lc3BhY2UgaTE4biByZXN1ZWx0byAoY2FwdHVyYWRvIHBhcmEgbGxhbWFkYXMgbm8tcmVhY3RpdmFzKS4gKi9cbiAgcHJpdmF0ZSBnZXQgbnMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZENvbmZpZygpLmkxOG5OYW1lc3BhY2U7XG4gIH1cblxuICAvKiogUGFzbyBkZSBwYWdpbmFjacOzbiBzb2Z0IChyZXZlbGEgK04gcG9yIFwiY2FyZ2FyIG3DoXNcIikuICovXG4gIHByaXZhdGUgZ2V0IHBhZ2VTdGVwKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWRDb25maWcoKS5wYWdlU2l6ZTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2V4cGFuZGVkID0gc2lnbmFsPFNldDxzdHJpbmc+PihuZXcgU2V0KCkpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYWdlU2l6ZSA9IHNpZ25hbCh0aGlzLnJlc29sdmVkQ29uZmlnKCkucGFnZVNpemUpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9idWxrQnVzeSA9IHNpZ25hbChmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvYWRpbmdNb3JlID0gc2lnbmFsKGZhbHNlKTtcblxuICAvKipcbiAgICogUHVzaCBhY3RpdmFkbyA9IHBlcm1pc28gZGVsIG5hdmVnYWRvciBlbiBgZ3JhbnRlZGAuIFNpIE5PIGVzdMOhIGFjdGl2YWRvLFxuICAgKiBlbCB1c2VyIHB1ZWRlIGxlZXIgZWwgaW5ib3ggKEZpcmVzdG9yZSkgcGVybyBOTyByZWNpYmlyw6EgcHVzaCBlbiBzdVxuICAgKiBkaXNwb3NpdGl2byDihpIgbW9zdHJhbW9zIHVuYSBjYXJkIHF1ZSBsbyBpbnZpdGEgYSBpciBhIGNvbmZpZ3VyYWNpw7NuLlxuICAgKiBTZSBldmFsw7phIGVuIGNhZGEgbW9udGFqZSBkZSBsYSB2aXN0YS5cbiAgICovXG4gIHJlYWRvbmx5IHB1c2hFbmFibGVkID0gc2lnbmFsKHRoaXMuYXV0aC5nZXROb3RpZmljYXRpb25QZXJtaXNzaW9uU3RhdGUoKSA9PT0gJ2dyYW50ZWQnKTtcblxuICAvKipcbiAgICogU3RyZWFtIGZpcmVzdG9yZSByZWFsLXRpbWUgdsOtYSBlbCBoZWxwZXIgZXN0w6FuZGFyIGBjcmVhdGVSZWZyZXNoYWJsZVN0cmVhbWBcbiAgICogKG1vZG8gcmVhbC10aW1lOiBmYWN0b3J5IGRldnVlbHZlIHVuIGxpc3RlbmVyIHZpdm8gYG5vdGlmcy5nZXRBbGwobWF4TG9hZClgKS5cbiAgICpcbiAgICogRWwgaGVscGVyIGdhdGVhIGxhIHByaW1lcmEgc3VzY3JpcGNpw7NuIHBvciBgZmlyZWJhc2VBdXRoUmVhZHlgLCBhcGxpY2EgdW5cbiAgICogYHJldHJ5YCBjb3J0byBjb24gYmFja29mZiB5LCB0cmFzIGFnb3RhciByZWludGVudG9zLCBlbWl0ZSBlbCBmYWxsYmFjayAoYFtdYClcbiAgICogeSBtYXJjYSBgZXJyb3JgIOKAlCBlc3RhZG8gZGUgZXJyb3IgZW4gVUksIG5vIHNrZWxldG9uIGluZmluaXRvLiBgcmVsb2FkKClgXG4gICAqIHJlLXN1c2NyaWJlIGVsIHN0cmVhbSBjb21wbGV0byAobG8gdXNhIGVsIHB1bGwtdG8tcmVmcmVzaCkuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdHJlYW0gPSBjcmVhdGVSZWZyZXNoYWJsZVN0cmVhbTxOb3RpZmljYXRpb25Eb2N1bWVudFtdPihcbiAgICAoKSA9PiB0aGlzLm5vdGlmcy5nZXRBbGwodGhpcy5yZXNvbHZlZENvbmZpZygpLm1heExvYWQpLFxuICAgIHtcbiAgICAgIGZhbGxiYWNrOiBbXSxcbiAgICAgIC8vIGBub3RpZnMuZ2V0QWxsKClgIFlBIGdhdGVhIGludGVybmFtZW50ZSBwb3IgYGZpcmViYXNlQXV0aFJlYWR5YC4gU2kgZWxcbiAgICAgIC8vIHN0cmVhbSB0YW1iacOpbiBnYXRlYXJhLCBzZXLDrWFuIERPUyBlc3BlcmFzIGRlIGF1dGggYXBpbGFkYXMuXG4gICAgICBnYXRlT25GaXJlYmFzZUF1dGg6IGZhbHNlLFxuICAgICAgLy8gQ29sZCBzdGFydCBkZSBQV0EgZW4gaU9TIHB1ZWRlIHBhc2FyIGRlIDhzIGVuIHJlZGVzIGxlbnRhczsgY29uIDE1c1xuICAgICAgLy8gZXZpdGFtb3MgZWwgZmFsc28gZXN0YWRvIGRlIGVycm9yLlxuICAgICAgZmlyc3RFbWl0VGltZW91dE1zOiAxNTAwMCxcbiAgICB9XG4gICk7XG5cbiAgLyoqIFRydWUgc2kgZWwgc3RyZWFtIGZhbGzDsyB0cmFzIGFnb3RhciByZWludGVudG9zIOKGkiBtdWVzdHJhIGVzdGFkbyBkZSBlcnJvci4gKi9cbiAgcmVhZG9ubHkgc3RyZWFtRXJyb3IgPSB0aGlzLl9zdHJlYW0uZXJyb3I7XG5cbiAgcmVhZG9ubHkgbG9hZGluZyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX3N0cmVhbS5kYXRhKCkgPT09IG51bGwpO1xuXG4gIC8qKlxuICAgKiBOb3RpZnMgcmVhbGVzIG1vc3RyYWRhcy4gRmlsdHJhbW9zIGRvY3Mgc2luIHTDrXR1bG8gWSBzaW4gYm9keSDigJQgc29uIHJ1aWRvXG4gICAqICh0w61waWNhbWVudGUgc2VudGluZWwvc3lzdGVtIHdyaXRlcyBwcmUtc2NoZW1hIGNvbiB0aXRsZS9ib2R5IG9wY2lvbmFsZXMpLlxuICAgKi9cbiAgcmVhZG9ubHkgYWxsTm90aWZzID0gY29tcHV0ZWQ8Tm90aWZpY2F0aW9uRG9jdW1lbnRbXT4oKCkgPT5cbiAgICAodGhpcy5fc3RyZWFtLmRhdGEoKSA/PyBbXSkuZmlsdGVyKG4gPT4gISEobi50aXRsZSAmJiBuLnRpdGxlLnRyaW0oKSkgfHwgISEobi5ib2R5ICYmIG4uYm9keS50cmltKCkpKVxuICApO1xuICByZWFkb25seSBoYXNNb3JlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5hbGxOb3RpZnMoKS5sZW5ndGggPiB0aGlzLl9wYWdlU2l6ZSgpKTtcbiAgcmVhZG9ubHkgc2hvd01hcmtBbGwgPSBjb21wdXRlZChcbiAgICAoKSA9PiB0aGlzLnJlc29sdmVkQ29uZmlnKCkuZW5hYmxlTWFya0FsbCAmJiAhdGhpcy5sb2FkaW5nKCkgJiYgdGhpcy5hbGxOb3RpZnMoKS5zb21lKG4gPT4gIW4uaXNSZWFkKVxuICApO1xuXG4gIC8qKiBTdWItY29uanVudG8gcGFnaW5hZG8sIGFncnVwYWRvIHBvciBwZXLDrW9kby4gKi9cbiAgcmVhZG9ubHkgZ3JvdXBzID0gY29tcHV0ZWQ8Tm90aWZpY2F0aW9uR3JvdXBbXT4oKCkgPT4ge1xuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5hbGxOb3RpZnMoKS5zbGljZSgwLCB0aGlzLl9wYWdlU2l6ZSgpKTtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IGJ1Y2tldHM6IFJlY29yZDxHcm91cEtleSwgTm90aWZpY2F0aW9uRG9jdW1lbnRbXT4gPSB7XG4gICAgICB0b2RheTogW10sXG4gICAgICB0aGlzTW9udGg6IFtdLFxuICAgICAgZWFybGllcjogW10sXG4gICAgfTtcbiAgICBmb3IgKGNvbnN0IG4gb2YgaXRlbXMpIHtcbiAgICAgIGJ1Y2tldHNbdGhpcy5idWNrZXRPZihuLCBub3cpXS5wdXNoKG4pO1xuICAgIH1cbiAgICBjb25zdCBvdXQ6IE5vdGlmaWNhdGlvbkdyb3VwW10gPSBbXTtcbiAgICBpZiAoYnVja2V0cy50b2RheS5sZW5ndGgpIHtcbiAgICAgIG91dC5wdXNoKHsga2V5OiAndG9kYXknLCBsYWJlbDogdGhpcy50dCgnZ3JvdXBUb2RheScpLCBpdGVtczogYnVja2V0cy50b2RheSB9KTtcbiAgICB9XG4gICAgaWYgKGJ1Y2tldHMudGhpc01vbnRoLmxlbmd0aCkge1xuICAgICAgb3V0LnB1c2goe1xuICAgICAgICBrZXk6ICd0aGlzTW9udGgnLFxuICAgICAgICBsYWJlbDogdGhpcy50dCgnZ3JvdXBUaGlzTW9udGgnKSxcbiAgICAgICAgaXRlbXM6IGJ1Y2tldHMudGhpc01vbnRoLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChidWNrZXRzLmVhcmxpZXIubGVuZ3RoKSB7XG4gICAgICBvdXQucHVzaCh7IGtleTogJ2VhcmxpZXInLCBsYWJlbDogdGhpcy50dCgnZ3JvdXBFYXJsaWVyJyksIGl0ZW1zOiBidWNrZXRzLmVhcmxpZXIgfSk7XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHBhZ2VUaXRsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHQoJ3BhZ2VUaXRsZScpKTtcbiAgcmVhZG9ubHkgcGFnZURlc2NyaXB0aW9uID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50dCgncGFnZURlc2NyaXB0aW9uJykpO1xuXG4gIC8vIENUQSBcImFjdGl2YSBsYXMgbm90aWZpY2FjaW9uZXMgcHVzaFwiIOKAlCB2aXNpYmxlIGN1YW5kbyBwdXNoRW5hYmxlZCgpIGVzIGZhbHNlLlxuICByZWFkb25seSBjdGFUaXRsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHQoJ3B1c2hPZmZUaXRsZScpKTtcbiAgcmVhZG9ubHkgY3RhSGludCA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHQoJ3B1c2hPZmZIaW50JykpO1xuICByZWFkb25seSBjdGFCdXR0b25Qcm9wcyA9IGNvbXB1dGVkPFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+PigoKSA9PiAoe1xuICAgIHRleHQ6IHRoaXMudHQoJ3B1c2hPZmZDdGEnKSxcbiAgICBjb2xvcjogJ2RhcmsnLFxuICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICBzaXplOiAnc21hbGwnLFxuICAgIHNoYXBlOiAncm91bmQnLFxuICAgIHR5cGU6ICdidXR0b24nLFxuICB9KSk7XG5cbiAgLyoqXG4gICAqIEVzdGFkbyBkZSBlcnJvciBkZSBjYXJnYTogY29udmllcnRlIGVsIGVycm9yIGRlbCBzdHJlYW0gZW5cbiAgICogYEVtcHR5U3RhdGVNZXRhZGF0YWAgdmlhIGVsIGhlbHBlciBjYW7Ds25pY28gYGNyZWF0ZUVycm9yU3RhdGVQcm9wc2AuXG4gICAqIEVsIGhlbHBlciBkZWNpZGUgdmFyaWFudGUgKGBvZmZsaW5lYCB2cyBgZXJyb3JgKSBwb3IgYGlzTmV0d29ya2AuXG4gICAqIE51bGwgY3VhbmRvIGVsIHN0cmVhbSBubyBoYSBmYWxsYWRvLlxuICAgKi9cbiAgcmVhZG9ubHkgZXJyb3JTdGF0ZSA9IGNvbXB1dGVkPEVtcHR5U3RhdGVNZXRhZGF0YSB8IG51bGw+KCgpID0+IHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIGNvbnN0IGVyciA9IHRoaXMuc3RyZWFtRXJyb3IoKTtcbiAgICBpZiAoIWVycikgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIGNyZWF0ZUVycm9yU3RhdGVQcm9wcyhlcnIsIHtcbiAgICAgIHRpdGxlOiB7XG4gICAgICAgIG9mZmxpbmU6IHRoaXMudHQoJ29mZmxpbmVUaXRsZScpLFxuICAgICAgICBlcnJvcjogdGhpcy50dCgnbG9hZEVycm9yVGl0bGUnKSxcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgICBvZmZsaW5lOiB0aGlzLnR0KCdvZmZsaW5lSGludCcpLFxuICAgICAgICBlcnJvcjogaW50ZXJwcmV0RXJyb3IoZXJyKS5tZXNzYWdlIHx8IHRoaXMudHQoJ2xvYWRFcnJvckhpbnQnKSxcbiAgICAgIH0sXG4gICAgICByZXRyeUxhYmVsOiB0aGlzLnR0KCdyZXRyeUN0YScpLFxuICAgICAgb25SZXRyeTogKCkgPT4gdGhpcy5fc3RyZWFtLnJlbG9hZCgpLFxuICAgICAgcmV0cnlpbmc6IHRoaXMubG9hZGluZygpLFxuICAgIH0pO1xuICB9KTtcblxuICAvKipcbiAgICogRXN0YWRvIHZhY8OtbyAobGlzdGEgcmVhbCA9IDAgbm90aWZpY2FjaW9uZXMsIHNpbiBlcnJvciBkZSBjYXJnYSkuXG4gICAqIFNlIGNvbnN0cnV5ZSBtYW51YWxtZW50ZSBjb24gYHZhcmlhbnQ6ICdlbXB0eSdgIOKAlCBzaW4gaGVscGVyIGRlIGVycm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgZW1wdHlTdGF0ZVByb3BzID0gY29tcHV0ZWQ8RW1wdHlTdGF0ZU1ldGFkYXRhPigoKSA9PiB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICByZXR1cm4ge1xuICAgICAgdmFyaWFudDogJ2VtcHR5JyxcbiAgICAgIGljb246ICdub3RpZmljYXRpb25zLW9mZi1vdXRsaW5lJyxcbiAgICAgIHRpdGxlOiB0aGlzLnR0KCdlbXB0eScpLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMudHQoJ2VtcHR5SGludCcpLFxuICAgICAgYWN0aW9uOiB7XG4gICAgICAgIGxhYmVsOiB0aGlzLnR0KCdlbXB0eUN0YScpLFxuICAgICAgICBoYW5kbGVyOiAoKSA9PiB0aGlzLm9uR29Ub1NldHRpbmdzKCksXG4gICAgICB9LFxuICAgIH07XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHNlZU1vcmUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnR0KCdzZWVNb3JlJykpO1xuICByZWFkb25seSBzZWVMZXNzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50dCgnc2VlTGVzcycpKTtcbiAgcmVhZG9ubHkgdW5yZWFkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnR0KCd1bnJlYWQnKSk7XG5cbiAgcmVhZG9ubHkgbWFya0FsbEJ1dHRvblByb3BzID0gY29tcHV0ZWQ8UGFydGlhbDxCdXR0b25NZXRhZGF0YT4+KCgpID0+ICh7XG4gICAgdGV4dDogdGhpcy50dCgnbWFya0FsbCcpLFxuICAgIGNvbG9yOiAnZGFyaycsXG4gICAgZmlsbDogJ291dGxpbmUnLFxuICAgIHNpemU6ICdzbWFsbCcsXG4gICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgdHlwZTogJ2J1dHRvbicsXG4gICAgaWNvbjogeyBuYW1lOiAnY2hlY2ttYXJrLWRvbmUtb3V0bGluZScsIHNsb3Q6ICdzdGFydCcgfSxcbiAgICBzdGF0ZTogdGhpcy5fYnVsa0J1c3koKSA/IENvbXBvbmVudFN0YXRlcy5XT1JLSU5HIDogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gIH0pKTtcblxuICByZWFkb25seSBsb2FkTW9yZUJ1dHRvblByb3BzID0gY29tcHV0ZWQ8UGFydGlhbDxCdXR0b25NZXRhZGF0YT4+KCgpID0+ICh7XG4gICAgdGV4dDogdGhpcy50dCgnbG9hZE1vcmUnKSxcbiAgICBjb2xvcjogJ2RhcmsnLFxuICAgIGZpbGw6ICdjbGVhcicsXG4gICAgc2l6ZTogJ2RlZmF1bHQnLFxuICAgIHNoYXBlOiAncm91bmQnLFxuICAgIHR5cGU6ICdidXR0b24nLFxuICAgIHN0YXRlOiB0aGlzLl9sb2FkaW5nTW9yZSgpID8gQ29tcG9uZW50U3RhdGVzLldPUktJTkcgOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgfSkpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IG5zID0gdGhpcy5ucztcbiAgICB0aGlzLmkxOG4ucmVnaXN0ZXJEZWZhdWx0cyhucywgTk9USUZJQ0FUSU9OU19WSUVXX0kxOE4pO1xuICAgIHRoaXMubmF2LnNldEJhY2tIZWFkZXIoJ3BhZ2VUaXRsZScsIG5zLCB7IHdpdGhNZW51OiB0cnVlIH0pO1xuXG4gICAgLy8gUmUtYXBsaWNhciBoZWFkZXIgZW4gY2FtYmlvIGRlIGlkaW9tYS5cbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgICAgIHRoaXMubmF2LnNldEJhY2tIZWFkZXIoJ3BhZ2VUaXRsZScsIHRoaXMubnMsIHsgd2l0aE1lbnU6IHRydWUgfSk7XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RyYSBlbCBwdWxsLXRvLXJlZnJlc2ggZXN0w6FuZGFyLiBVc2Ftb3MgYG5nT25Jbml0YC9gbmdPbkRlc3Ryb3lgXG4gICAqIChOTyBgaW9uVmlld1dpbGxFbnRlcmApIHBvcnF1ZSBgdmFsLXBhZ2Utd3JhcHBlcmAgdXNhIGA8cm91dGVyLW91dGxldD5gXG4gICAqIHBsYW5vIOKAlCBsb3MgaG9va3MgYGlvblZpZXcqYCBzb2xvIGRpc3BhcmFuIGRlbnRybyBkZSBgPGlvbi1yb3V0ZXItb3V0bGV0PmAuXG4gICAqL1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2VSZWZyZXNoLnJlZ2lzdGVyKCgpID0+IHRoaXMucmVsb2FkKCkpO1xuICB9XG5cbiAgLyoqIFF1aXRhIGVsIGhhbmRsZXIgYWwgZGVzdHJ1aXIgbGEgdmlzdGEg4oCUIGVsIHJlZnJlc2hlciBkZXNhcGFyZWNlLiAqL1xuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2VSZWZyZXNoLnVucmVnaXN0ZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZyZXNoIG1hbnVhbDogcmUtc3VzY3JpYmUgZWwgc3RyZWFtIEZpcmVzdG9yZSAobGlzdGVuZXIgbnVldm8pIHbDrWEgZWxcbiAgICogaGVscGVyLiBSZXN1ZWx2ZSB0cmFzIHVuIG1hcmdlbiBicmV2ZSDigJQgZWwgc3RyZWFtIGVzIHJlYWwtdGltZSB5IHJlLWVtaXRlXG4gICAqIGVuIG1pbGlzZWd1bmRvczsgZWwgZGVsYXkgc8OzbG8gbWFudGllbmUgZWwgc3Bpbm5lciB2aXNpYmxlIGxvIGp1c3RvLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyByZWxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5fc3RyZWFtLnJlbG9hZCgpO1xuICAgIGF3YWl0IG5ldyBQcm9taXNlKHIgPT4gc2V0VGltZW91dChyLCA3MDApKTtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBQZXItaXRlbSBoZWxwZXJzIChwdXJvcyDigJQgdXNhYmxlcyBkZXNkZSB0ZW1wbGF0ZSkuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIG9wZW5CdXR0b25Qcm9wcygpOiBQYXJ0aWFsPEJ1dHRvbk1ldGFkYXRhPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRleHQ6IHRoaXMudHQoJ29wZW4nKSxcbiAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICBmaWxsOiAnY2xlYXInLFxuICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICBpY29uOiB7IG5hbWU6ICdjaGV2cm9uLWZvcndhcmQtb3V0bGluZScsIHNsb3Q6ICdlbmQnIH0sXG4gICAgfTtcbiAgfVxuXG4gIG5vdGlmaWNhdGlvbkFyaWFMYWJlbChuOiBOb3RpZmljYXRpb25Eb2N1bWVudCk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICghbi5hY3Rpb25Sb3V0ZSkgcmV0dXJuIG51bGw7XG4gICAgY29uc3Qgc3RhdHVzID0gbi5pc1JlYWQgPyAnJyA6IHRoaXMudW5yZWFkTGFiZWwoKSArICcuICc7XG4gICAgY29uc3QgdGl0bGUgPSBuLnRpdGxlIHx8IG4uYm9keSB8fCB0aGlzLnR0KCdvcGVuJyk7XG4gICAgcmV0dXJuIHN0YXR1cyArIHRpdGxlICsgJy4gJyArIHRoaXMudHQoJ29wZW4nKTtcbiAgfVxuXG4gIG9uTm90aWZpY2F0aW9uUm93Q2xpY2sobjogTm90aWZpY2F0aW9uRG9jdW1lbnQpOiB2b2lkIHtcbiAgICBpZiAoIW4uYWN0aW9uUm91dGUpIHJldHVybjtcbiAgICB2b2lkIHRoaXMub25PcGVuKG4pO1xuICB9XG5cbiAgb25Ob3RpZmljYXRpb25LZXlkb3duKGV2ZW50OiBFdmVudCwgbjogTm90aWZpY2F0aW9uRG9jdW1lbnQpOiB2b2lkIHtcbiAgICBpZiAoIW4uYWN0aW9uUm91dGUpIHJldHVybjtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHZvaWQgdGhpcy5vbk9wZW4obik7XG4gIH1cblxuICBvbk9wZW5CdXR0b25DbGljayhldmVudDogRXZlbnQsIG46IE5vdGlmaWNhdGlvbkRvY3VtZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdm9pZCB0aGlzLm9uT3BlbihuKTtcbiAgfVxuXG4gIG9uVG9nZ2xlRXhwYW5kKGV2ZW50OiBFdmVudCwgaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMudG9nZ2xlRXhwYW5kKGlkKTtcbiAgfVxuXG4gIGlzRXhwYW5kZWQoaWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9leHBhbmRlZCgpLmhhcyhpZCk7XG4gIH1cblxuICB0b2dnbGVFeHBhbmQoaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IG5leHQgPSBuZXcgU2V0KHRoaXMuX2V4cGFuZGVkKCkpO1xuICAgIGlmIChuZXh0LmhhcyhpZCkpIG5leHQuZGVsZXRlKGlkKTtcbiAgICBlbHNlIG5leHQuYWRkKGlkKTtcbiAgICB0aGlzLl9leHBhbmRlZC5zZXQobmV4dCk7XG4gIH1cblxuICBpc0xvbmcoYm9keTogc3RyaW5nIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gICAgaWYgKCFib2R5KSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIGJvZHkubGVuZ3RoID4gMTEwIHx8IGJvZHkuaW5jbHVkZXMoJ1xcbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEljb24gcmVzb2x2ZXIgY29uIG9yZGVuIGRlIGZhbGxiYWNrOlxuICAgKiAxLiBub3RpZi5wYXlsb2FkLmljb24gKGZvcndhcmQtY29tcGF0LCBzaW4gYnJlYWtpbmcgY2hhbmdlIGVuIHNjaGVtYSlcbiAgICogMi4gbWFwYSBwb3Igbm90aWYudHlwZVxuICAgKiAzLiBkZWZhdWx0IG5vdGlmaWNhdGlvbnMtb3V0bGluZVxuICAgKi9cbiAgcmVzb2x2ZUljb24objogTm90aWZpY2F0aW9uRG9jdW1lbnQpOiBSZXNvbHZlZEljb24ge1xuICAgIGNvbnN0IGhpbnQgPSBuLnBheWxvYWQ/LlsnaWNvbiddIGFzIEljb25IaW50IHwgdW5kZWZpbmVkO1xuICAgIGlmIChoaW50Py52YWx1ZSkge1xuICAgICAgaWYgKGhpbnQudHlwZSA9PT0gJ2ltYWdlJyB8fCBoaW50LnR5cGUgPT09ICdhdmF0YXInKSB7XG4gICAgICAgIHJldHVybiB7IGtpbmQ6IGhpbnQudHlwZSwgc3JjOiBoaW50LnZhbHVlIH07XG4gICAgICB9XG4gICAgICAvLyBJZ25vcmFtb3MgaGludC5jb2xvciDigJQgdG9kb3MgbG9zIGljb25vcyB2YW4gZW4gZGFyayBwb3IgY29udmVuY2nDs24gVVguXG4gICAgICByZXR1cm4geyBraW5kOiAnaW9uaWNvbicsIG5hbWU6IGhpbnQudmFsdWUsIGNvbG9yOiAnZGFyaycgfTtcbiAgICB9XG4gICAgY29uc3QgdCA9IG4udHlwZTtcbiAgICBjb25zdCBuYW1lID0gKCgpID0+IHtcbiAgICAgIHN3aXRjaCAodCkge1xuICAgICAgICBjYXNlICdhcHByb3ZhbCc6XG4gICAgICAgICAgcmV0dXJuICdjaGVja21hcmstY2lyY2xlLW91dGxpbmUnO1xuICAgICAgICBjYXNlICdjaGF0JzpcbiAgICAgICAgY2FzZSAnY2hhdGJvdCc6XG4gICAgICAgICAgcmV0dXJuICdjaGF0YnViYmxlLW91dGxpbmUnO1xuICAgICAgICBjYXNlICdjb21tZW50JzpcbiAgICAgICAgICByZXR1cm4gJ2NoYXRib3gtZWxsaXBzZXMtb3V0bGluZSc7XG4gICAgICAgIGNhc2UgJ3JlbWluZGVyJzpcbiAgICAgICAgICByZXR1cm4gJ2FsYXJtLW91dGxpbmUnO1xuICAgICAgICBjYXNlICdzeXN0ZW0nOlxuICAgICAgICAgIHJldHVybiAnY29nLW91dGxpbmUnO1xuICAgICAgICBjYXNlICd1c2VyJzpcbiAgICAgICAgY2FzZSAnbWVudGlvbic6XG4gICAgICAgICAgcmV0dXJuICdwZXJzb24tb3V0bGluZSc7XG4gICAgICAgIGNhc2UgJ2RvY3VtZW50JzpcbiAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50LXRleHQtb3V0bGluZSc7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuICdub3RpZmljYXRpb25zLW91dGxpbmUnO1xuICAgICAgfVxuICAgIH0pKCk7XG4gICAgcmV0dXJuIHsga2luZDogJ2lvbmljb24nLCBuYW1lLCBjb2xvcjogJ2RhcmsnIH07XG4gIH1cblxuICBpb25pY29uTmFtZShuOiBOb3RpZmljYXRpb25Eb2N1bWVudCk6IHN0cmluZyB7XG4gICAgY29uc3QgciA9IHRoaXMucmVzb2x2ZUljb24obik7XG4gICAgcmV0dXJuIHIua2luZCA9PT0gJ2lvbmljb24nID8gci5uYW1lIDogJyc7XG4gIH1cblxuICBpb25pY29uQ29sb3IobjogTm90aWZpY2F0aW9uRG9jdW1lbnQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHIgPSB0aGlzLnJlc29sdmVJY29uKG4pO1xuICAgIHJldHVybiByLmtpbmQgPT09ICdpb25pY29uJyA/IHIuY29sb3IgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBpbWFnZVNyYyhuOiBOb3RpZmljYXRpb25Eb2N1bWVudCk6IHN0cmluZyB7XG4gICAgY29uc3QgciA9IHRoaXMucmVzb2x2ZUljb24obik7XG4gICAgcmV0dXJuIHIua2luZCA9PT0gJ2ltYWdlJyB8fCByLmtpbmQgPT09ICdhdmF0YXInID8gci5zcmMgOiAnJztcbiAgfVxuXG4gIGlvbkNvbG9yKHRva2VuOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICAgIGlmICghdG9rZW4pIHJldHVybiAndmFyKC0taW9uLWNvbG9yLXByaW1hcnkpJztcbiAgICByZXR1cm4gYHZhcigtLWlvbi1jb2xvci0ke3Rva2VufSlgO1xuICB9XG5cbiAgcmVsYXRpdmVUaW1lKG46IE5vdGlmaWNhdGlvbkRvY3VtZW50KTogc3RyaW5nIHtcbiAgICBjb25zdCBkID0gbi5jcmVhdGVkQXQgaW5zdGFuY2VvZiBEYXRlID8gbi5jcmVhdGVkQXQgOiBudWxsO1xuICAgIGlmICghZCkgcmV0dXJuICcnO1xuICAgIGNvbnN0IGRpZmZNcyA9IERhdGUubm93KCkgLSBkLmdldFRpbWUoKTtcbiAgICBjb25zdCBtaW4gPSBNYXRoLmZsb29yKGRpZmZNcyAvIDYwMDAwKTtcbiAgICBpZiAobWluIDwgMSkgcmV0dXJuIHRoaXMudHQoJ3RpbWVOb3cnKTtcbiAgICBpZiAobWluIDwgNjApIHJldHVybiB0aGlzLnR0KCd0aW1lTWludXRlcycpLnJlcGxhY2UoJ3tufScsIFN0cmluZyhtaW4pKTtcbiAgICBjb25zdCBoID0gTWF0aC5mbG9vcihtaW4gLyA2MCk7XG4gICAgaWYgKGggPCAyNCkgcmV0dXJuIHRoaXMudHQoJ3RpbWVIb3VycycpLnJlcGxhY2UoJ3tufScsIFN0cmluZyhoKSk7XG4gICAgY29uc3QgZGF5cyA9IE1hdGguZmxvb3IoaCAvIDI0KTtcbiAgICByZXR1cm4gdGhpcy50dCgndGltZURheXMnKS5yZXBsYWNlKCd7bn0nLCBTdHJpbmcoZGF5cykpO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIEFjdGlvbnNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgYXN5bmMgb25PcGVuKG46IE5vdGlmaWNhdGlvbkRvY3VtZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuYWN0aW9uLm9wZW4obik7XG4gICAgICB0aGlzLnJlc29sdmVkQ29uZmlnKCkub25Ob3RpZmljYXRpb25PcGVuPy4obiwgcmVzdWx0KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuZXJyb3JzLmhhbmRsZShlcnIsIHtcbiAgICAgICAgY29udGV4dDogJ25vdGlmaWNhdGlvbnMub3BlbicsXG4gICAgICAgIGZhbGxiYWNrS2V5OiAnb3BlbkVycm9yJyxcbiAgICAgICAgaTE4bk5hbWVzcGFjZTogdGhpcy5ucyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG9uTWFya0FsbCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fYnVsa0J1c3koKSkgcmV0dXJuO1xuICAgIHRoaXMuX2J1bGtCdXN5LnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5ub3RpZnMubWFya0FsbEFzUmVhZCgpO1xuICAgICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgICAgbWVzc2FnZTogdGhpcy50dCgnbWFya2VkQWxsU3VjY2VzcycpLFxuICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICBkdXJhdGlvbjogMjUwMCxcbiAgICAgICAgcG9zaXRpb246ICd0b3AnLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmVycm9ycy5oYW5kbGUoZXJyLCB7XG4gICAgICAgIGNvbnRleHQ6ICdub3RpZmljYXRpb25zLm1hcmtBbGwnLFxuICAgICAgICBmYWxsYmFja0tleTogJ21hcmtlZEFsbEVycm9yJyxcbiAgICAgICAgaTE4bk5hbWVzcGFjZTogdGhpcy5ucyxcbiAgICAgIH0pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9idWxrQnVzeS5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIG9uTG9hZE1vcmUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2xvYWRpbmdNb3JlKCkpIHJldHVybjtcbiAgICB0aGlzLl9sb2FkaW5nTW9yZS5zZXQodHJ1ZSk7XG4gICAgLy8gU2xpY2UgdmllbmUgZGVsIGNhY2hlIGxvY2FsIOKAlCBubyBoYXkgZmV0Y2ggcmVhbCwgcGVybyB1biBicmV2ZSBzcGlubmVyXG4gICAgLy8gY29uZmlybWEgYWwgdXNlciBxdWUgZWwgY2xpY2sgcmVnaXN0csOzIHkgc3Vhdml6YSBsYSBhcGFyaWNpw7NuIGRlIGl0ZW1zLlxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5fcGFnZVNpemUudXBkYXRlKG4gPT4gbiArIHRoaXMucGFnZVN0ZXApO1xuICAgICAgdGhpcy5fbG9hZGluZ01vcmUuc2V0KGZhbHNlKTtcbiAgICB9LCAyNTApO1xuICB9XG5cbiAgb25Hb1RvU2V0dGluZ3MoKTogdm9pZCB7XG4gICAgdGhpcy5uYXYubmF2aWdhdGVCeVVybCh0aGlzLnJlc29sdmVkQ29uZmlnKCkuc2V0dGluZ3NOb3RpZmljYXRpb25zUGF0aCk7XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gR3JvdXBpbmcgaGVscGVyc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBwcml2YXRlIGJ1Y2tldE9mKG46IE5vdGlmaWNhdGlvbkRvY3VtZW50LCBub3c6IERhdGUpOiBHcm91cEtleSB7XG4gICAgY29uc3QgZCA9IG4uY3JlYXRlZEF0IGluc3RhbmNlb2YgRGF0ZSA/IG4uY3JlYXRlZEF0IDogbnVsbDtcbiAgICBpZiAoIWQpIHJldHVybiAnZWFybGllcic7XG4gICAgaWYgKGQuZ2V0RnVsbFllYXIoKSA9PT0gbm93LmdldEZ1bGxZZWFyKCkgJiYgZC5nZXRNb250aCgpID09PSBub3cuZ2V0TW9udGgoKSAmJiBkLmdldERhdGUoKSA9PT0gbm93LmdldERhdGUoKSkge1xuICAgICAgcmV0dXJuICd0b2RheSc7XG4gICAgfVxuICAgIGlmIChkLmdldEZ1bGxZZWFyKCkgPT09IG5vdy5nZXRGdWxsWWVhcigpICYmIGQuZ2V0TW9udGgoKSA9PT0gbm93LmdldE1vbnRoKCkpIHtcbiAgICAgIHJldHVybiAndGhpc01vbnRoJztcbiAgICB9XG4gICAgcmV0dXJuICdlYXJsaWVyJztcbiAgfVxuXG4gIHByaXZhdGUgdHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksIHRoaXMubnMpO1xuICB9XG59XG4iXX0=
|
|
795
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvbm90aWZpY2F0aW9ucy12aWV3L25vdGlmaWNhdGlvbnMtdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUNMLFlBQVksRUFDWixzQkFBc0IsRUFDdEIsaUJBQWlCLEVBQ2pCLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ25CLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIsdUJBQXVCLEVBQ3ZCLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIsYUFBYSxHQUNkLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFFeEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1B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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUpULHVtR0E1SkMsT0FBTywySkFDUCxnQkFBZ0IsMkVBQ2hCLGNBQWMseUVBQ2QsYUFBYSx3RUFDYixlQUFlLDBHQUNmLHVCQUF1QixtRkFDdkIsbUJBQW1CLCtFQUNuQixrQkFBa0I7OzRGQXdXVCwwQkFBMEI7a0JBblh0QyxTQUFTOytCQUNFLHdCQUF3QixjQUN0QixJQUFJLFdBQ1A7d0JBQ1AsT0FBTzt3QkFDUCxnQkFBZ0I7d0JBQ2hCLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixlQUFlO3dCQUNmLHVCQUF1Qjt3QkFDdkIsbUJBQW1CO3dCQUNuQixrQkFBa0I7cUJBQ25CLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1KVDt3REFzT1EsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJb25JY29uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7XG4gIGFsYXJtT3V0bGluZSxcbiAgY2hhdGJveEVsbGlwc2VzT3V0bGluZSxcbiAgY2hhdGJ1YmJsZU91dGxpbmUsXG4gIGNoZWNrbWFya0NpcmNsZU91dGxpbmUsXG4gIGNoZWNrbWFya0RvbmVPdXRsaW5lLFxuICBjbG91ZE9mZmxpbmVPdXRsaW5lLFxuICBjb2dPdXRsaW5lLFxuICBkb2N1bWVudFRleHRPdXRsaW5lLFxuICBub3RpZmljYXRpb25zT2ZmT3V0bGluZSxcbiAgbm90aWZpY2F0aW9uc091dGxpbmUsXG4gIGNoZXZyb25Gb3J3YXJkT3V0bGluZSxcbiAgcGVyc29uT3V0bGluZSxcbn0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9jb250YWluZXIvY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvZGlzcGxheS9kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3RpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvZW1wdHktc3RhdGUvdHlwZXMnO1xuaW1wb3J0IHsgY3JlYXRlRXJyb3JTdGF0ZVByb3BzIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2VtcHR5LXN0YXRlL2ZhY3RvcnknO1xuaW1wb3J0IHsgU2tlbGV0b25MYXlvdXRDb21wb25lbnQgfSBmcm9tICcuLi9za2VsZXRvbi1sYXlvdXQvc2tlbGV0b24tbGF5b3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25NZXRhZGF0YSwgQ29tcG9uZW50U3RhdGVzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGgvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbkFjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hdXRoL25vdGlmaWNhdGlvbi1hY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgaW50ZXJwcmV0RXJyb3IgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9lcnJvcnMvaW50ZXJwcmV0LWVycm9yJztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uRG9jdW1lbnQsIE5vdGlmaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZmlyZWJhc2Uvbm90aWZpY2F0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IFBhZ2VSZWZyZXNoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3BhZ2UtcmVmcmVzaC9wYWdlLXJlZnJlc2guc2VydmljZSc7XG5pbXBvcnQgeyBjcmVhdGVSZWZyZXNoYWJsZVN0cmVhbSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3JlZnJlc2hhYmxlLXN0cmVhbS9yZWZyZXNoYWJsZS1zdHJlYW0nO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBWYWx0ZWNoRXJyb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZXJyb3JzL3ZhbHRlY2gtZXJyb3Iuc2VydmljZSc7XG5cbmltcG9ydCB7IE5vdGlmaWNhdGlvbnNWaWV3Q29uZmlnIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBOT1RJRklDQVRJT05TX1ZJRVdfSTE4TiB9IGZyb20gJy4vbm90aWZpY2F0aW9ucy12aWV3LmkxOG4nO1xuXG5hZGRJY29ucyh7XG4gIGFsYXJtT3V0bGluZSxcbiAgY2hhdGJveEVsbGlwc2VzT3V0bGluZSxcbiAgY2hhdGJ1YmJsZU91dGxpbmUsXG4gIGNoZWNrbWFya0NpcmNsZU91dGxpbmUsXG4gIGNoZWNrbWFya0RvbmVPdXRsaW5lLFxuICBjbG91ZE9mZmxpbmVPdXRsaW5lLFxuICBjb2dPdXRsaW5lLFxuICBkb2N1bWVudFRleHRPdXRsaW5lLFxuICBub3RpZmljYXRpb25zT2ZmT3V0bGluZSxcbiAgbm90aWZpY2F0aW9uc091dGxpbmUsXG4gIGNoZXZyb25Gb3J3YXJkT3V0bGluZSxcbiAgcGVyc29uT3V0bGluZSxcbn0pO1xuXG5jb25zdCBERUZBVUxUX05BTUVTUEFDRSA9ICdOb3RpZmljYXRpb25zJztcbmNvbnN0IERFRkFVTFRfU0VUVElOR1NfUEFUSCA9ICcvYXBwL3NldHRpbmdzL25vdGlmaWNhdGlvbnMnO1xuY29uc3QgREVGQVVMVF9QQUdFX1NJWkUgPSAxMDtcbmNvbnN0IERFRkFVTFRfTUFYX0xPQUQgPSA1MDtcblxudHlwZSBHcm91cEtleSA9ICd0b2RheScgfCAndGhpc01vbnRoJyB8ICdlYXJsaWVyJztcblxuaW50ZXJmYWNlIE5vdGlmaWNhdGlvbkdyb3VwIHtcbiAga2V5OiBHcm91cEtleTtcbiAgbGFiZWw6IHN0cmluZztcbiAgaXRlbXM6IE5vdGlmaWNhdGlvbkRvY3VtZW50W107XG59XG5cbnR5cGUgUmVzb2x2ZWRJY29uID1cbiAgfCB7IGtpbmQ6ICdpb25pY29uJzsgbmFtZTogc3RyaW5nOyBjb2xvcj86IHN0cmluZyB9XG4gIHwgeyBraW5kOiAnaW1hZ2UnOyBzcmM6IHN0cmluZyB9XG4gIHwgeyBraW5kOiAnYXZhdGFyJzsgc3JjOiBzdHJpbmcgfTtcblxuaW50ZXJmYWNlIEljb25IaW50IHtcbiAgdHlwZT86ICdpb25pY29uJyB8ICdpbWFnZScgfCAnYXZhdGFyJztcbiAgdmFsdWU/OiBzdHJpbmc7XG4gIGNvbG9yPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIGB2YWwtbm90aWZpY2F0aW9ucy12aWV3YCDigJQgaW5ib3ggZGUgbm90aWZpY2FjaW9uZXMgZnVsbC1mZWF0dXJlIGF1dG9jb250ZW5pZG9cbiAqIChvcmdhbmlzbSkuIFByb21vdmlkbyBkZXNkZSBgc2hvd2Nhc2VgIGJham8gZWwgcHJvY2VzbyBkZSBBRFItMDIxLlxuICpcbiAqIFNlcGFyYWRvIGRlIGAvYXBwL3NldHRpbmdzL25vdGlmaWNhdGlvbnNgIChxdWUgY29udHJvbGEgcGVybWlzbyBGQ00gKyBtYXN0ZXJcbiAqIHRvZ2dsZSkuIEFxdcOtIGVsIHVzZXIgbGVlL2FicmUvbWFyY2EtbGXDrWRhcyBzdXMgbWVuc2FqZXMuXG4gKlxuICogLSAqKlN0cmVhbSByZWFsLXRpbWUqKiB2w61hIGBOb3RpZmljYXRpb25zU2VydmljZS5nZXRBbGwobWF4TG9hZClgIGVudnVlbHRvIGVuXG4gKiAgIGBjcmVhdGVSZWZyZXNoYWJsZVN0cmVhbWAgKGdhdGVhZG8gcG9yIGBmaXJlYmFzZUF1dGhSZWFkeWAsIHJldHJ5IGNvcnRvLFxuICogICBgZmlyc3RFbWl0VGltZW91dE1zOiAxNTAwMGApLiBFc3RhZG9zOiBsb2FkaW5nIChza2VsZXRvbiksIGVycm9yXG4gKiAgIChgdmFsLWVtcHR5LXN0YXRlYCArIHJlaW50ZW50YXIpLCBlbXB0eSAoYHZhbC1lbXB0eS1zdGF0ZWAgKyBDVEEpLCBkYXRhXG4gKiAgIChsaXN0YSBhZ3J1cGFkYSBIb3kgLyBFc3RlIG1lcyAvIEFudGVyaW9yZXMpLlxuICogLSAqKkFicmlyKiogdW5hIG5vdGlmIOKGkiBgTm90aWZpY2F0aW9uQWN0aW9uU2VydmljZS5vcGVuKClgIChtYXJrUmVhZCArXG4gKiAgIHN3aXRjaC1vcmcgKyBuYXZlZ2FyL2hhbmRvZmYgY3Jvc3MtYXBwKS4gSG9vayBgb25Ob3RpZmljYXRpb25PcGVuYCBvcGNpb25hbC5cbiAqIC0gKipNYXJjYXIgdG9kYXMgY29tbyBsZcOtZGFzKiogKGdhdGVhZG8gcG9yIGBlbmFibGVNYXJrQWxsYCkuXG4gKiAtICoqQ1RBIHB1c2gtb2ZmKiogY3VhbmRvIGVsIHBlcm1pc28gZGVsIG5hdmVnYWRvciBubyBlc3TDoSBjb25jZWRpZG8gKGdhdGVhZG9cbiAqICAgcG9yIGBzaG93UHVzaE9mZkN0YWApOyBuYXZlZ2EgYSBgc2V0dGluZ3NOb3RpZmljYXRpb25zUGF0aGAuXG4gKiAtICoqUGFnaW5hY2nDs24gc29mdCoqIOKAlCBzbGljZSBsb2NhbCAoYHBhZ2VTaXplYCwgK2BwYWdlU2l6ZWAgcG9yIGNsaWNrKSBzb2JyZSBlbFxuICogICBjYWNoZSBkZWwgc3RyZWFtOyBlbCB0b3BlIGRlIGZldGNoIGVzIGBtYXhMb2FkYC5cbiAqIC0gKippMThuIGF1dG8tcmVnaXN0cmFkbyoqIGVzL2VuIGJham8gYGkxOG5OYW1lc3BhY2VgIChkZWZhdWx0IGBOb3RpZmljYXRpb25zYCkuXG4gKlxuICogTk8gcmVuZGVyaXphIGlvbi1jb250ZW50IOKAlCB2aXZlIGRlbnRybyBkZSB2YWwtcGFnZS13cmFwcGVyLiBgUm91dGVyYCB5XG4gKiBgQWN0aXZhdGVkUm91dGVgIHNlIGlueWVjdGFuIGB7IG9wdGlvbmFsOiB0cnVlIH1gIOKGkiBmdW5jaW9uYSBzaW4gcm91dGVyXG4gKiAoZW1iZWJpZGEgLyBTdG9yeWJvb2spLiBFbCBmb3J3YXJkLWNvbXBhdCBpY29uIHJlc29sdmVyIGxlZSBgbm90aWYucGF5bG9hZC5pY29uYFxuICogc2kgZXhpc3RlIChgeyB0eXBlLCB2YWx1ZSwgY29sb3I/IH1gKSwgY2FlIGEgdW4gbWFwYSBwb3IgYG5vdGlmLnR5cGVgLCBsdWVnbyBhXG4gKiBgbm90aWZpY2F0aW9ucy1vdXRsaW5lYC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLW5vdGlmaWNhdGlvbnMtdmlldycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBJb25JY29uLFxuICAgIERpc3BsYXlDb21wb25lbnQsXG4gICAgVGl0bGVDb21wb25lbnQsXG4gICAgVGV4dENvbXBvbmVudCxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgU2tlbGV0b25MYXlvdXRDb21wb25lbnQsXG4gICAgRW1wdHlTdGF0ZUNvbXBvbmVudCxcbiAgICBDb250YWluZXJDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPHZhbC1jb250YWluZXIgW3Byb3BzXT1cInsgc2l6ZTogJ21kJywgcGFkZGluZzogJ25vbmUnIH1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwYWdlXCI+XG4gICAgICAgIDxoZWFkZXIgY2xhc3M9XCJwYWdlLWhlYWRlclwiPlxuICAgICAgICAgIDx2YWwtZGlzcGxheSBbcHJvcHNdPVwieyBzaXplOiAnc21hbGwnLCBjb2xvcjogJ2RhcmsnLCBjb250ZW50OiBwYWdlVGl0bGUoKSB9XCIgLz5cbiAgICAgICAgICA8dmFsLXRpdGxlXG4gICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICBzaXplOiAnbGFyZ2UnLFxuICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgICAgY29udGVudDogcGFnZURlc2NyaXB0aW9uKCksXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIEBpZiAoc2hvd01hcmtBbGwoKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgIDx2YWwtYnV0dG9uIFtwcm9wc109XCJtYXJrQWxsQnV0dG9uUHJvcHMoKVwiIChjbGljayk9XCJvbk1hcmtBbGwoKVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgIEBpZiAocmVzb2x2ZWRDb25maWcoKS5zaG93UHVzaE9mZkN0YSAmJiAhcHVzaEVuYWJsZWQoKSkge1xuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwibm90aWYtY3RhXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gY2xhc3M9XCJub3RpZi1jdGFfX2ljb25cIiBuYW1lPVwibm90aWZpY2F0aW9ucy1vZmYtb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm90aWYtY3RhX19ib2R5XCI+XG4gICAgICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgICBjb250ZW50OiBjdGFUaXRsZSgpLFxuICAgICAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICAgICAgYm9sZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGN0YUhpbnQoKSxcbiAgICAgICAgICAgICAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICAgICAgICAgICAgICBjb2xvcjogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgPHZhbC1idXR0b24gW3Byb3BzXT1cImN0YUJ1dHRvblByb3BzKClcIiAoY2xpY2spPVwib25Hb1RvU2V0dGluZ3MoKVwiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmIChsb2FkaW5nKCkpIHtcbiAgICAgICAgICA8dmFsLXNrZWxldG9uLWxheW91dCBbcHJvcHNdPVwieyBwcmVzZXQ6ICdsaXN0Jywgcm93czogNiB9XCIgLz5cbiAgICAgICAgfSBAZWxzZSBpZiAoZXJyb3JTdGF0ZSgpKSB7XG4gICAgICAgICAgPHZhbC1lbXB0eS1zdGF0ZSBbcHJvcHNdPVwiZXJyb3JTdGF0ZSgpIVwiIC8+XG4gICAgICAgIH0gQGVsc2UgaWYgKGFsbE5vdGlmcygpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIDx2YWwtZW1wdHktc3RhdGUgW3Byb3BzXT1cImVtcHR5U3RhdGVQcm9wcygpXCIgLz5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgQGZvciAoZ3JvdXAgb2YgZ3JvdXBzKCk7IHRyYWNrIGdyb3VwLmtleSkge1xuICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJncm91cFwiPlxuICAgICAgICAgICAgICA8dmFsLXRpdGxlXG4gICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgICAgIGJvbGQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICBjb250ZW50OiBncm91cC5sYWJlbCxcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibm90aWYtbGlzdFwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKG4gb2YgZ3JvdXAuaXRlbXM7IHRyYWNrIG4uaWQpIHtcbiAgICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5vdGlmXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLm5vdGlmLS11bnJlYWRdPVwiIW4uaXNSZWFkXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLm5vdGlmLS1yZWFkXT1cIm4uaXNSZWFkXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLm5vdGlmLS1hY3Rpb25hYmxlXT1cIiEhbi5hY3Rpb25Sb3V0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLnJvbGVdPVwibi5hY3Rpb25Sb3V0ZSA/ICdidXR0b24nIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cIm4uYWN0aW9uUm91dGUgPyAnMCcgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJub3RpZmljYXRpb25BcmlhTGFiZWwobilcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Ob3RpZmljYXRpb25Sb3dDbGljayhuKVwiXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uTm90aWZpY2F0aW9uS2V5ZG93bigkZXZlbnQsIG4pXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwib25Ob3RpZmljYXRpb25LZXlkb3duKCRldmVudCwgbilcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm90aWZfX2ljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICBAc3dpdGNoIChyZXNvbHZlSWNvbihuKS5raW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ2lvbmljb24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cImlvbmljb25OYW1lKG4pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiaW9uQ29sb3IoaW9uaWNvbkNvbG9yKG4pKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgnaW1hZ2UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpbWFnZVNyYyhuKVwiIGFsdD1cIlwiIGxvYWRpbmc9XCJsYXp5XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgnYXZhdGFyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwibm90aWZfX2F2YXRhclwiIFtzcmNdPVwiaW1hZ2VTcmMobilcIiBhbHQ9XCJcIiBsb2FkaW5nPVwibGF6eVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm90aWZfX2JvZHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm90aWZfX2hlYWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub3RpZl9fdGl0bGUtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIW4uaXNSZWFkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJub3RpZl9fdW5yZWFkLWRvdFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidW5yZWFkTGFiZWwoKVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5vdGlmX190aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IG4udGl0bGUgfHwgJ+KAlCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2xkOiAhbi5pc1JlYWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIW4uaXNSZWFkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJub3RpZl9fdW5yZWFkLWJhZGdlXCI+e3sgdW5yZWFkTGFiZWwoKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5vdGlmX190aW1lXCI+e3sgcmVsYXRpdmVUaW1lKG4pIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAobi5ib2R5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5vdGlmX190ZXh0XCIgW2NsYXNzLm5vdGlmX190ZXh0LS1jbGFtcGVkXT1cIiFpc0V4cGFuZGVkKG4uaWQpICYmIGlzTG9uZyhuLmJvZHkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG4uYm9keSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpc0xvbmcobi5ib2R5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibm90aWZfX2V4cGFuZFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25Ub2dnbGVFeHBhbmQoJGV2ZW50LCBuLmlkKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGlzRXhwYW5kZWQobi5pZCkgPyBzZWVMZXNzKCkgOiBzZWVNb3JlKCkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAobi5hY3Rpb25Sb3V0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vdGlmX19hY3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHZhbC1idXR0b24gW3Byb3BzXT1cIm9wZW5CdXR0b25Qcm9wcygpXCIgKGNsaWNrKT1cIm9uT3BlbkJ1dHRvbkNsaWNrKCRldmVudCwgbilcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAoaGFzTW9yZSgpKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWFjdGlvbnMgcm93LWFjdGlvbnMtLWNlbnRlclwiPlxuICAgICAgICAgICAgICA8dmFsLWJ1dHRvbiBbcHJvcHNdPVwibG9hZE1vcmVCdXR0b25Qcm9wcygpXCIgKGNsaWNrKT1cIm9uTG9hZE1vcmUoKVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvdmFsLWNvbnRhaW5lcj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLyogQW5jaG8geSBjcmVjaW1pZW50byBjb24gZWwgcmFpbCBjb2xhcHNhZG8gbG9zIGRhIHZhbC1jb250YWluZXIgKHNpemVcbiAgICAgICAgICdtZCcpLCBubyBDU1MgbG9jYWw6IHZlciBjb250YWluZXIuY29tcG9uZW50LnNjc3MuICovXG4gICAgICAucGFnZSB7XG4gICAgICAgIHBhZGRpbmc6IDE2cHggMDtcbiAgICAgIH1cbiAgICAgIC5wYWdlLWhlYWRlciB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gICAgICB9XG4gICAgICAucm93LWFjdGlvbnMge1xuICAgICAgICBtYXJnaW4tdG9wOiAxMnB4O1xuICAgICAgfVxuICAgICAgLnJvdy1hY3Rpb25zLS1jZW50ZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgbWFyZ2luLXRvcDogMjBweDtcbiAgICAgIH1cbiAgICAgIC5yb3ctYWN0aW9ucy0tZW5kIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgICAgbWFyZ2luLXRvcDogOHB4O1xuICAgICAgfVxuXG4gICAgICAubm90aWYtY3RhIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZ2FwOiAxMnB4O1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgcGFkZGluZzogMTRweCAxNnB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICAgICAgICAvKiBTdGVwLSogbm8gaW52aWVydGUgZW4gZGFyaywgdGV4dG8gbGlnaHQgKyBiZyBsaWdodCA9IGludmlzaWJsZS5cbiAgICAgICAgICAgbGlnaHQvbGlnaHQtc2hhZGUgc2kgZmxpcHBhbiBjb24gZWwgcGFsZXR0ZSBkYXJrIGRlIElvbmljLiAqL1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tY29sb3ItbGlnaHQtc2hhZGUsIHJnYmEoMCwgMCwgMCwgMC4wOCkpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxNHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQpO1xuICAgICAgfVxuICAgICAgLm5vdGlmLWN0YV9faWNvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrLCAjMWExYTFhKTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIG1hcmdpbi10b3A6IDJweDtcbiAgICAgIH1cbiAgICAgIC5ub3RpZi1jdGFfX2JvZHkge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDJweDtcbiAgICAgIH1cblxuICAgICAgLmdyb3VwIHtcbiAgICAgICAgcGFkZGluZzogMTJweCAwO1xuICAgICAgfVxuICAgICAgLmdyb3VwICsgLmdyb3VwIHtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXZhbC1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4wOCkpO1xuICAgICAgfVxuXG4gICAgICAubm90aWYtbGlzdCB7XG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIG1hcmdpbjogMTJweCAwIDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgIH1cbiAgICAgIC5ub3RpZiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiA0NHB4IDFmcjtcbiAgICAgICAgZ2FwOiAxMnB4O1xuICAgICAgICBwYWRkaW5nOiAxNHB4IDEycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgdHJhbnNpdGlvbjpcbiAgICAgICAgICBiYWNrZ3JvdW5kIDE0MG1zIGVhc2UsXG4gICAgICAgICAgYm9yZGVyLWNvbG9yIDE0MG1zIGVhc2UsXG4gICAgICAgICAgYm94LXNoYWRvdyAxNDBtcyBlYXNlO1xuICAgICAgfVxuICAgICAgLm5vdGlmLS1hY3Rpb25hYmxlIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgfVxuICAgICAgLm5vdGlmLS1hY3Rpb25hYmxlOmhvdmVyLFxuICAgICAgLm5vdGlmLS1hY3Rpb25hYmxlOmZvY3VzLXZpc2libGUge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQsIHJnYmEoMCwgMCwgMCwgMC4wNCkpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXZhbC1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4wOCkpO1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgfVxuICAgICAgLm5vdGlmLS11bnJlYWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiwgNTYsIDEyOCwgMjU1KSwgMC4wNyk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1yZ2IsIDU2LCAxMjgsIDI1NSksIDAuMTgpO1xuICAgICAgfVxuICAgICAgLm5vdGlmLS1yZWFkIC5ub3RpZl9faWNvbiB7XG4gICAgICAgIG9wYWNpdHk6IDAuNzI7XG4gICAgICB9XG4gICAgICAubm90aWZfX2ljb24ge1xuICAgICAgICB3aWR0aDogNDRweDtcbiAgICAgICAgaGVpZ2h0OiA0NHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQsIHJnYmEoMCwgMCwgMCwgMC4wNikpO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgfVxuICAgICAgLm5vdGlmX19pY29uIGlvbi1pY29uIHtcbiAgICAgICAgZm9udC1zaXplOiAyMnB4O1xuICAgICAgfVxuICAgICAgLm5vdGlmX19pY29uIGltZyB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgfVxuICAgICAgLm5vdGlmX19hdmF0YXIge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICB9XG5cbiAgICAgIC5ub3RpZl9fYm9keSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG4gICAgICAubm90aWZfX2hlYWQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICBnYXA6IDEycHg7XG4gICAgICB9XG4gICAgICAubm90aWZfX3RpdGxlLXJvdyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG4gICAgICAubm90aWZfX3RpdGxlIHtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuICAgICAgLm5vdGlmX191bnJlYWQtZG90IHtcbiAgICAgICAgd2lkdGg6IDhweDtcbiAgICAgICAgaGVpZ2h0OiA4cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXByaW1hcnksICMzODgwZmYpO1xuICAgICAgfVxuICAgICAgLm5vdGlmX191bnJlYWQtYmFkZ2Uge1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgcGFkZGluZzogMnB4IDdweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1jb250cmFzdCwgI2ZmZik7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LCAjMzg4MGZmKTtcbiAgICAgIH1cbiAgICAgIC5ub3RpZl9fdGltZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrLCAjOTI5NDljKTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICB9XG4gICAgICAubm90aWZfX3RleHQge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrLCAjMWExYTFhKTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICAgICAgfVxuICAgICAgLm5vdGlmX190ZXh0LS1jbGFtcGVkIHtcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMjtcbiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cbiAgICAgIC5ub3RpZl9fZXhwYW5kIHtcbiAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyaywgIzFhMWExYSk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICB9XG4gICAgICAubm90aWZfX2FjdGlvbiB7XG4gICAgICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kO1xuICAgICAgICBtYXJnaW4tdG9wOiA0cHg7XG4gICAgICB9XG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogNTIwcHgpIHtcbiAgICAgICAgLm5vdGlmIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDQwcHggMWZyO1xuICAgICAgICAgIGdhcDogMTBweDtcbiAgICAgICAgICBwYWRkaW5nOiAxMnB4IDEwcHg7XG4gICAgICAgIH1cbiAgICAgICAgLm5vdGlmX19pY29uIHtcbiAgICAgICAgICB3aWR0aDogNDBweDtcbiAgICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgICAgIH1cbiAgICAgICAgLm5vdGlmX19oZWFkIHtcbiAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIGdhcDogNHB4O1xuICAgICAgICB9XG4gICAgICAgIC5ub3RpZl9fdW5yZWFkLWJhZGdlIHtcbiAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgICAgIC5ub3RpZl9fdGltZSB7XG4gICAgICAgICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbnNWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIG5hdiA9IGluamVjdChOYXZpZ2F0aW9uU2VydmljZSk7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgbm90aWZzID0gaW5qZWN0KE5vdGlmaWNhdGlvbnNTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBhY3Rpb24gPSBpbmplY3QoTm90aWZpY2F0aW9uQWN0aW9uU2VydmljZSk7XG4gIHByaXZhdGUgdG9hc3QgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBlcnJvcnMgPSBpbmplY3QoVmFsdGVjaEVycm9yU2VydmljZSk7XG4gIHByaXZhdGUgYXV0aCA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIHByaXZhdGUgcGFnZVJlZnJlc2ggPSBpbmplY3QoUGFnZVJlZnJlc2hTZXJ2aWNlKTtcbiAgLy8gYEFjdGl2YXRlZFJvdXRlYCBvcGNpb25hbCDihpIgbGEgdmlzdGEgZnVuY2lvbmEgZW1iZWJpZGEgLyBlbiBTdG9yeWJvb2sgc2luXG4gIC8vIHJvdXRlciAoc29sbyBsbyB1c2EgcGFyYSBsZWVyIGVsIHJvdXRlIGRhdGEgZGUgY29uZmlnIGNvbW8gZmFsbGJhY2spLiBMYVxuICAvLyBuYXZlZ2FjacOzbiB2YSBwb3IgYE5hdmlnYXRpb25TZXJ2aWNlYCAod3JhcHBlciBvcGNpb25hbCBzb2JyZSBgUm91dGVyYCkuXG4gIHByaXZhdGUgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgLyoqXG4gICAqIENvbmZpZyB2w61hIEBJbnB1dCAob2JqZWN0LWZpcnN0KS4gU2kgbm8gc2UgcGFzYSwgc2UgY2FlIGFsIHJvdXRlIGRhdGFcbiAgICogYG5vdGlmaWNhdGlvbnNDb25maWdgIChwb2JsYWRvIHBvciBgcHJvdmlkZVZhbHRlY2hOb3RpZmljYXRpb25zUm91dGVzYCkuXG4gICAqIGByZXNvbHZlZENvbmZpZ2AgbWVyZ2VhIGNvbiBsb3MgZGVmYXVsdHMg4oCUIGBASW5wdXRgIGdhbmEgc29icmUgcm91dGUgZGF0YS5cbiAgICovXG4gIEBJbnB1dCgpIGNvbmZpZz86IE5vdGlmaWNhdGlvbnNWaWV3Q29uZmlnO1xuXG4gIHJlYWRvbmx5IHJlc29sdmVkQ29uZmlnID0gY29tcHV0ZWQ8XG4gICAgUmVxdWlyZWQ8T21pdDxOb3RpZmljYXRpb25zVmlld0NvbmZpZywgJ29uTm90aWZpY2F0aW9uT3Blbic+PiAmIFBpY2s8Tm90aWZpY2F0aW9uc1ZpZXdDb25maWcsICdvbk5vdGlmaWNhdGlvbk9wZW4nPlxuICA+KCgpID0+IHtcbiAgICBjb25zdCBmcm9tUm91dGUgPSAodGhpcy5yb3V0ZT8uc25hcHNob3QuZGF0YVsnbm90aWZpY2F0aW9uc0NvbmZpZyddID8/IHt9KSBhcyBOb3RpZmljYXRpb25zVmlld0NvbmZpZztcbiAgICBjb25zdCBtZXJnZWQ6IE5vdGlmaWNhdGlvbnNWaWV3Q29uZmlnID0geyAuLi5mcm9tUm91dGUsIC4uLih0aGlzLmNvbmZpZyA/PyB7fSkgfTtcbiAgICByZXR1cm4ge1xuICAgICAgc2hvd1B1c2hPZmZDdGE6IG1lcmdlZC5zaG93UHVzaE9mZkN0YSA/PyB0cnVlLFxuICAgICAgZW5hYmxlTWFya0FsbDogbWVyZ2VkLmVuYWJsZU1hcmtBbGwgPz8gdHJ1ZSxcbiAgICAgIHNldHRpbmdzTm90aWZpY2F0aW9uc1BhdGg6IG1lcmdlZC5zZXR0aW5nc05vdGlmaWNhdGlvbnNQYXRoID8/IERFRkFVTFRfU0VUVElOR1NfUEFUSCxcbiAgICAgIGkxOG5OYW1lc3BhY2U6IG1lcmdlZC5pMThuTmFtZXNwYWNlID8/IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICAgcGFnZVNpemU6IG1lcmdlZC5wYWdlU2l6ZSA/PyBERUZBVUxUX1BBR0VfU0laRSxcbiAgICAgIG1heExvYWQ6IG1lcmdlZC5tYXhMb2FkID8/IERFRkFVTFRfTUFYX0xPQUQsXG4gICAgICBvbk5vdGlmaWNhdGlvbk9wZW46IG1lcmdlZC5vbk5vdGlmaWNhdGlvbk9wZW4sXG4gICAgfTtcbiAgfSk7XG5cbiAgLyoqIE5hbWVzcGFjZSBpMThuIHJlc3VlbHRvIChjYXB0dXJhZG8gcGFyYSBsbGFtYWRhcyBuby1yZWFjdGl2YXMpLiAqL1xuICBwcml2YXRlIGdldCBucygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVkQ29uZmlnKCkuaTE4bk5hbWVzcGFjZTtcbiAgfVxuXG4gIC8qKiBQYXNvIGRlIHBhZ2luYWNpw7NuIHNvZnQgKHJldmVsYSArTiBwb3IgXCJjYXJnYXIgbcOhc1wiKS4gKi9cbiAgcHJpdmF0ZSBnZXQgcGFnZVN0ZXAoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZENvbmZpZygpLnBhZ2VTaXplO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZXhwYW5kZWQgPSBzaWduYWw8U2V0PHN0cmluZz4+KG5ldyBTZXQoKSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhZ2VTaXplID0gc2lnbmFsKHRoaXMucmVzb2x2ZWRDb25maWcoKS5wYWdlU2l6ZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2J1bGtCdXN5ID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9hZGluZ01vcmUgPSBzaWduYWwoZmFsc2UpO1xuXG4gIC8qKlxuICAgKiBQdXNoIGFjdGl2YWRvID0gcGVybWlzbyBkZWwgbmF2ZWdhZG9yIGVuIGBncmFudGVkYC4gU2kgTk8gZXN0w6EgYWN0aXZhZG8sXG4gICAqIGVsIHVzZXIgcHVlZGUgbGVlciBlbCBpbmJveCAoRmlyZXN0b3JlKSBwZXJvIE5PIHJlY2liaXLDoSBwdXNoIGVuIHN1XG4gICAqIGRpc3Bvc2l0aXZvIOKGkiBtb3N0cmFtb3MgdW5hIGNhcmQgcXVlIGxvIGludml0YSBhIGlyIGEgY29uZmlndXJhY2nDs24uXG4gICAqIFNlIGV2YWzDumEgZW4gY2FkYSBtb250YWplIGRlIGxhIHZpc3RhLlxuICAgKi9cbiAgcmVhZG9ubHkgcHVzaEVuYWJsZWQgPSBzaWduYWwodGhpcy5hdXRoLmdldE5vdGlmaWNhdGlvblBlcm1pc3Npb25TdGF0ZSgpID09PSAnZ3JhbnRlZCcpO1xuXG4gIC8qKlxuICAgKiBTdHJlYW0gZmlyZXN0b3JlIHJlYWwtdGltZSB2w61hIGVsIGhlbHBlciBlc3TDoW5kYXIgYGNyZWF0ZVJlZnJlc2hhYmxlU3RyZWFtYFxuICAgKiAobW9kbyByZWFsLXRpbWU6IGZhY3RvcnkgZGV2dWVsdmUgdW4gbGlzdGVuZXIgdml2byBgbm90aWZzLmdldEFsbChtYXhMb2FkKWApLlxuICAgKlxuICAgKiBFbCBoZWxwZXIgZ2F0ZWEgbGEgcHJpbWVyYSBzdXNjcmlwY2nDs24gcG9yIGBmaXJlYmFzZUF1dGhSZWFkeWAsIGFwbGljYSB1blxuICAgKiBgcmV0cnlgIGNvcnRvIGNvbiBiYWNrb2ZmIHksIHRyYXMgYWdvdGFyIHJlaW50ZW50b3MsIGVtaXRlIGVsIGZhbGxiYWNrIChgW11gKVxuICAgKiB5IG1hcmNhIGBlcnJvcmAg4oCUIGVzdGFkbyBkZSBlcnJvciBlbiBVSSwgbm8gc2tlbGV0b24gaW5maW5pdG8uIGByZWxvYWQoKWBcbiAgICogcmUtc3VzY3JpYmUgZWwgc3RyZWFtIGNvbXBsZXRvIChsbyB1c2EgZWwgcHVsbC10by1yZWZyZXNoKS5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0cmVhbSA9IGNyZWF0ZVJlZnJlc2hhYmxlU3RyZWFtPE5vdGlmaWNhdGlvbkRvY3VtZW50W10+KFxuICAgICgpID0+IHRoaXMubm90aWZzLmdldEFsbCh0aGlzLnJlc29sdmVkQ29uZmlnKCkubWF4TG9hZCksXG4gICAge1xuICAgICAgZmFsbGJhY2s6IFtdLFxuICAgICAgLy8gYG5vdGlmcy5nZXRBbGwoKWAgWUEgZ2F0ZWEgaW50ZXJuYW1lbnRlIHBvciBgZmlyZWJhc2VBdXRoUmVhZHlgLiBTaSBlbFxuICAgICAgLy8gc3RyZWFtIHRhbWJpw6luIGdhdGVhcmEsIHNlcsOtYW4gRE9TIGVzcGVyYXMgZGUgYXV0aCBhcGlsYWRhcy5cbiAgICAgIGdhdGVPbkZpcmViYXNlQXV0aDogZmFsc2UsXG4gICAgICAvLyBDb2xkIHN0YXJ0IGRlIFBXQSBlbiBpT1MgcHVlZGUgcGFzYXIgZGUgOHMgZW4gcmVkZXMgbGVudGFzOyBjb24gMTVzXG4gICAgICAvLyBldml0YW1vcyBlbCBmYWxzbyBlc3RhZG8gZGUgZXJyb3IuXG4gICAgICBmaXJzdEVtaXRUaW1lb3V0TXM6IDE1MDAwLFxuICAgIH1cbiAgKTtcblxuICAvKiogVHJ1ZSBzaSBlbCBzdHJlYW0gZmFsbMOzIHRyYXMgYWdvdGFyIHJlaW50ZW50b3Mg4oaSIG11ZXN0cmEgZXN0YWRvIGRlIGVycm9yLiAqL1xuICByZWFkb25seSBzdHJlYW1FcnJvciA9IHRoaXMuX3N0cmVhbS5lcnJvcjtcblxuICByZWFkb25seSBsb2FkaW5nID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fc3RyZWFtLmRhdGEoKSA9PT0gbnVsbCk7XG5cbiAgLyoqXG4gICAqIE5vdGlmcyByZWFsZXMgbW9zdHJhZGFzLiBGaWx0cmFtb3MgZG9jcyBzaW4gdMOtdHVsbyBZIHNpbiBib2R5IOKAlCBzb24gcnVpZG9cbiAgICogKHTDrXBpY2FtZW50ZSBzZW50aW5lbC9zeXN0ZW0gd3JpdGVzIHByZS1zY2hlbWEgY29uIHRpdGxlL2JvZHkgb3BjaW9uYWxlcykuXG4gICAqL1xuICByZWFkb25seSBhbGxOb3RpZnMgPSBjb21wdXRlZDxOb3RpZmljYXRpb25Eb2N1bWVudFtdPigoKSA9PlxuICAgICh0aGlzLl9zdHJlYW0uZGF0YSgpID8/IFtdKS5maWx0ZXIobiA9PiAhIShuLnRpdGxlICYmIG4udGl0bGUudHJpbSgpKSB8fCAhIShuLmJvZHkgJiYgbi5ib2R5LnRyaW0oKSkpXG4gICk7XG4gIHJlYWRvbmx5IGhhc01vcmUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmFsbE5vdGlmcygpLmxlbmd0aCA+IHRoaXMuX3BhZ2VTaXplKCkpO1xuICByZWFkb25seSBzaG93TWFya0FsbCA9IGNvbXB1dGVkKFxuICAgICgpID0+IHRoaXMucmVzb2x2ZWRDb25maWcoKS5lbmFibGVNYXJrQWxsICYmICF0aGlzLmxvYWRpbmcoKSAmJiB0aGlzLmFsbE5vdGlmcygpLnNvbWUobiA9PiAhbi5pc1JlYWQpXG4gICk7XG5cbiAgLyoqIFN1Yi1jb25qdW50byBwYWdpbmFkbywgYWdydXBhZG8gcG9yIHBlcsOtb2RvLiAqL1xuICByZWFkb25seSBncm91cHMgPSBjb21wdXRlZDxOb3RpZmljYXRpb25Hcm91cFtdPigoKSA9PiB7XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLmFsbE5vdGlmcygpLnNsaWNlKDAsIHRoaXMuX3BhZ2VTaXplKCkpO1xuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgYnVja2V0czogUmVjb3JkPEdyb3VwS2V5LCBOb3RpZmljYXRpb25Eb2N1bWVudFtdPiA9IHtcbiAgICAgIHRvZGF5OiBbXSxcbiAgICAgIHRoaXNNb250aDogW10sXG4gICAgICBlYXJsaWVyOiBbXSxcbiAgICB9O1xuICAgIGZvciAoY29uc3QgbiBvZiBpdGVtcykge1xuICAgICAgYnVja2V0c1t0aGlzLmJ1Y2tldE9mKG4sIG5vdyldLnB1c2gobik7XG4gICAgfVxuICAgIGNvbnN0IG91dDogTm90aWZpY2F0aW9uR3JvdXBbXSA9IFtdO1xuICAgIGlmIChidWNrZXRzLnRvZGF5Lmxlbmd0aCkge1xuICAgICAgb3V0LnB1c2goeyBrZXk6ICd0b2RheScsIGxhYmVsOiB0aGlzLnR0KCdncm91cFRvZGF5JyksIGl0ZW1zOiBidWNrZXRzLnRvZGF5IH0pO1xuICAgIH1cbiAgICBpZiAoYnVja2V0cy50aGlzTW9udGgubGVuZ3RoKSB7XG4gICAgICBvdXQucHVzaCh7XG4gICAgICAgIGtleTogJ3RoaXNNb250aCcsXG4gICAgICAgIGxhYmVsOiB0aGlzLnR0KCdncm91cFRoaXNNb250aCcpLFxuICAgICAgICBpdGVtczogYnVja2V0cy50aGlzTW9udGgsXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGJ1Y2tldHMuZWFybGllci5sZW5ndGgpIHtcbiAgICAgIG91dC5wdXNoKHsga2V5OiAnZWFybGllcicsIGxhYmVsOiB0aGlzLnR0KCdncm91cEVhcmxpZXInKSwgaXRlbXM6IGJ1Y2tldHMuZWFybGllciB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgcGFnZVRpdGxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50dCgncGFnZVRpdGxlJykpO1xuICByZWFkb25seSBwYWdlRGVzY3JpcHRpb24gPSBjb21wdXRlZCgoKSA9PiB0aGlzLnR0KCdwYWdlRGVzY3JpcHRpb24nKSk7XG5cbiAgLy8gQ1RBIFwiYWN0aXZhIGxhcyBub3RpZmljYWNpb25lcyBwdXNoXCIg4oCUIHZpc2libGUgY3VhbmRvIHB1c2hFbmFibGVkKCkgZXMgZmFsc2UuXG4gIHJlYWRvbmx5IGN0YVRpdGxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50dCgncHVzaE9mZlRpdGxlJykpO1xuICByZWFkb25seSBjdGFIaW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50dCgncHVzaE9mZkhpbnQnKSk7XG4gIHJlYWRvbmx5IGN0YUJ1dHRvblByb3BzID0gY29tcHV0ZWQ8UGFydGlhbDxCdXR0b25NZXRhZGF0YT4+KCgpID0+ICh7XG4gICAgdGV4dDogdGhpcy50dCgncHVzaE9mZkN0YScpLFxuICAgIGNvbG9yOiAnZGFyaycsXG4gICAgZmlsbDogJ291dGxpbmUnLFxuICAgIHNpemU6ICdzbWFsbCcsXG4gICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgdHlwZTogJ2J1dHRvbicsXG4gIH0pKTtcblxuICAvKipcbiAgICogRXN0YWRvIGRlIGVycm9yIGRlIGNhcmdhOiBjb252aWVydGUgZWwgZXJyb3IgZGVsIHN0cmVhbSBlblxuICAgKiBgRW1wdHlTdGF0ZU1ldGFkYXRhYCB2aWEgZWwgaGVscGVyIGNhbsOzbmljbyBgY3JlYXRlRXJyb3JTdGF0ZVByb3BzYC5cbiAgICogRWwgaGVscGVyIGRlY2lkZSB2YXJpYW50ZSAoYG9mZmxpbmVgIHZzIGBlcnJvcmApIHBvciBgaXNOZXR3b3JrYC5cbiAgICogTnVsbCBjdWFuZG8gZWwgc3RyZWFtIG5vIGhhIGZhbGxhZG8uXG4gICAqL1xuICByZWFkb25seSBlcnJvclN0YXRlID0gY29tcHV0ZWQ8RW1wdHlTdGF0ZU1ldGFkYXRhIHwgbnVsbD4oKCkgPT4ge1xuICAgIHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgY29uc3QgZXJyID0gdGhpcy5zdHJlYW1FcnJvcigpO1xuICAgIGlmICghZXJyKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gY3JlYXRlRXJyb3JTdGF0ZVByb3BzKGVyciwge1xuICAgICAgdGl0bGU6IHtcbiAgICAgICAgb2ZmbGluZTogdGhpcy50dCgnb2ZmbGluZVRpdGxlJyksXG4gICAgICAgIGVycm9yOiB0aGlzLnR0KCdsb2FkRXJyb3JUaXRsZScpLFxuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICAgIG9mZmxpbmU6IHRoaXMudHQoJ29mZmxpbmVIaW50JyksXG4gICAgICAgIGVycm9yOiBpbnRlcnByZXRFcnJvcihlcnIpLm1lc3NhZ2UgfHwgdGhpcy50dCgnbG9hZEVycm9ySGludCcpLFxuICAgICAgfSxcbiAgICAgIHJldHJ5TGFiZWw6IHRoaXMudHQoJ3JldHJ5Q3RhJyksXG4gICAgICBvblJldHJ5OiAoKSA9PiB0aGlzLl9zdHJlYW0ucmVsb2FkKCksXG4gICAgICByZXRyeWluZzogdGhpcy5sb2FkaW5nKCksXG4gICAgfSk7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBFc3RhZG8gdmFjw61vIChsaXN0YSByZWFsID0gMCBub3RpZmljYWNpb25lcywgc2luIGVycm9yIGRlIGNhcmdhKS5cbiAgICogU2UgY29uc3RydXllIG1hbnVhbG1lbnRlIGNvbiBgdmFyaWFudDogJ2VtcHR5J2Ag4oCUIHNpbiBoZWxwZXIgZGUgZXJyb3IuXG4gICAqL1xuICByZWFkb25seSBlbXB0eVN0YXRlUHJvcHMgPSBjb21wdXRlZDxFbXB0eVN0YXRlTWV0YWRhdGE+KCgpID0+IHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIHJldHVybiB7XG4gICAgICB2YXJpYW50OiAnZW1wdHknLFxuICAgICAgaWNvbjogJ25vdGlmaWNhdGlvbnMtb2ZmLW91dGxpbmUnLFxuICAgICAgdGl0bGU6IHRoaXMudHQoJ2VtcHR5JyksXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy50dCgnZW1wdHlIaW50JyksXG4gICAgICBhY3Rpb246IHtcbiAgICAgICAgbGFiZWw6IHRoaXMudHQoJ2VtcHR5Q3RhJyksXG4gICAgICAgIGhhbmRsZXI6ICgpID0+IHRoaXMub25Hb1RvU2V0dGluZ3MoKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgc2VlTW9yZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHQoJ3NlZU1vcmUnKSk7XG4gIHJlYWRvbmx5IHNlZUxlc3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnR0KCdzZWVMZXNzJykpO1xuICByZWFkb25seSB1bnJlYWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHQoJ3VucmVhZCcpKTtcblxuICByZWFkb25seSBtYXJrQWxsQnV0dG9uUHJvcHMgPSBjb21wdXRlZDxQYXJ0aWFsPEJ1dHRvbk1ldGFkYXRhPj4oKCkgPT4gKHtcbiAgICB0ZXh0OiB0aGlzLnR0KCdtYXJrQWxsJyksXG4gICAgY29sb3I6ICdkYXJrJyxcbiAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgc2l6ZTogJ3NtYWxsJyxcbiAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICBpY29uOiB7IG5hbWU6ICdjaGVja21hcmstZG9uZS1vdXRsaW5lJywgc2xvdDogJ3N0YXJ0JyB9LFxuICAgIHN0YXRlOiB0aGlzLl9idWxrQnVzeSgpID8gQ29tcG9uZW50U3RhdGVzLldPUktJTkcgOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgfSkpO1xuXG4gIHJlYWRvbmx5IGxvYWRNb3JlQnV0dG9uUHJvcHMgPSBjb21wdXRlZDxQYXJ0aWFsPEJ1dHRvbk1ldGFkYXRhPj4oKCkgPT4gKHtcbiAgICB0ZXh0OiB0aGlzLnR0KCdsb2FkTW9yZScpLFxuICAgIGNvbG9yOiAnZGFyaycsXG4gICAgZmlsbDogJ2NsZWFyJyxcbiAgICBzaXplOiAnZGVmYXVsdCcsXG4gICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgdHlwZTogJ2J1dHRvbicsXG4gICAgc3RhdGU6IHRoaXMuX2xvYWRpbmdNb3JlKCkgPyBDb21wb25lbnRTdGF0ZXMuV09SS0lORyA6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICB9KSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgY29uc3QgbnMgPSB0aGlzLm5zO1xuICAgIHRoaXMuaTE4bi5yZWdpc3RlckRlZmF1bHRzKG5zLCBOT1RJRklDQVRJT05TX1ZJRVdfSTE4Tik7XG4gICAgdGhpcy5uYXYuc2V0QmFja0hlYWRlcigncGFnZVRpdGxlJywgbnMsIHsgd2l0aE1lbnU6IHRydWUgfSk7XG5cbiAgICAvLyBSZS1hcGxpY2FyIGhlYWRlciBlbiBjYW1iaW8gZGUgaWRpb21hLlxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICAgICAgdGhpcy5uYXYuc2V0QmFja0hlYWRlcigncGFnZVRpdGxlJywgdGhpcy5ucywgeyB3aXRoTWVudTogdHJ1ZSB9KTtcbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhIGVsIHB1bGwtdG8tcmVmcmVzaCBlc3TDoW5kYXIuIFVzYW1vcyBgbmdPbkluaXRgL2BuZ09uRGVzdHJveWBcbiAgICogKE5PIGBpb25WaWV3V2lsbEVudGVyYCkgcG9ycXVlIGB2YWwtcGFnZS13cmFwcGVyYCB1c2EgYDxyb3V0ZXItb3V0bGV0PmBcbiAgICogcGxhbm8g4oCUIGxvcyBob29rcyBgaW9uVmlldypgIHNvbG8gZGlzcGFyYW4gZGVudHJvIGRlIGA8aW9uLXJvdXRlci1vdXRsZXQ+YC5cbiAgICovXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucGFnZVJlZnJlc2gucmVnaXN0ZXIoKCkgPT4gdGhpcy5yZWxvYWQoKSk7XG4gIH1cblxuICAvKiogUXVpdGEgZWwgaGFuZGxlciBhbCBkZXN0cnVpciBsYSB2aXN0YSDigJQgZWwgcmVmcmVzaGVyIGRlc2FwYXJlY2UuICovXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucGFnZVJlZnJlc2gudW5yZWdpc3RlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZnJlc2ggbWFudWFsOiByZS1zdXNjcmliZSBlbCBzdHJlYW0gRmlyZXN0b3JlIChsaXN0ZW5lciBudWV2bykgdsOtYSBlbFxuICAgKiBoZWxwZXIuIFJlc3VlbHZlIHRyYXMgdW4gbWFyZ2VuIGJyZXZlIOKAlCBlbCBzdHJlYW0gZXMgcmVhbC10aW1lIHkgcmUtZW1pdGVcbiAgICogZW4gbWlsaXNlZ3VuZG9zOyBlbCBkZWxheSBzw7NsbyBtYW50aWVuZSBlbCBzcGlubmVyIHZpc2libGUgbG8ganVzdG8uXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHJlbG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLl9zdHJlYW0ucmVsb2FkKCk7XG4gICAgYXdhaXQgbmV3IFByb21pc2UociA9PiBzZXRUaW1lb3V0KHIsIDcwMCkpO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIFBlci1pdGVtIGhlbHBlcnMgKHB1cm9zIOKAlCB1c2FibGVzIGRlc2RlIHRlbXBsYXRlKS5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgb3BlbkJ1dHRvblByb3BzKCk6IFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdGV4dDogdGhpcy50dCgnb3BlbicpLFxuICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgIGZpbGw6ICdjbGVhcicsXG4gICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgIGljb246IHsgbmFtZTogJ2NoZXZyb24tZm9yd2FyZC1vdXRsaW5lJywgc2xvdDogJ2VuZCcgfSxcbiAgICB9O1xuICB9XG5cbiAgbm90aWZpY2F0aW9uQXJpYUxhYmVsKG46IE5vdGlmaWNhdGlvbkRvY3VtZW50KTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKCFuLmFjdGlvblJvdXRlKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBzdGF0dXMgPSBuLmlzUmVhZCA/ICcnIDogdGhpcy51bnJlYWRMYWJlbCgpICsgJy4gJztcbiAgICBjb25zdCB0aXRsZSA9IG4udGl0bGUgfHwgbi5ib2R5IHx8IHRoaXMudHQoJ29wZW4nKTtcbiAgICByZXR1cm4gc3RhdHVzICsgdGl0bGUgKyAnLiAnICsgdGhpcy50dCgnb3BlbicpO1xuICB9XG5cbiAgb25Ob3RpZmljYXRpb25Sb3dDbGljayhuOiBOb3RpZmljYXRpb25Eb2N1bWVudCk6IHZvaWQge1xuICAgIGlmICghbi5hY3Rpb25Sb3V0ZSkgcmV0dXJuO1xuICAgIHZvaWQgdGhpcy5vbk9wZW4obik7XG4gIH1cblxuICBvbk5vdGlmaWNhdGlvbktleWRvd24oZXZlbnQ6IEV2ZW50LCBuOiBOb3RpZmljYXRpb25Eb2N1bWVudCk6IHZvaWQge1xuICAgIGlmICghbi5hY3Rpb25Sb3V0ZSkgcmV0dXJuO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdm9pZCB0aGlzLm9uT3BlbihuKTtcbiAgfVxuXG4gIG9uT3BlbkJ1dHRvbkNsaWNrKGV2ZW50OiBFdmVudCwgbjogTm90aWZpY2F0aW9uRG9jdW1lbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB2b2lkIHRoaXMub25PcGVuKG4pO1xuICB9XG5cbiAgb25Ub2dnbGVFeHBhbmQoZXZlbnQ6IEV2ZW50LCBpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy50b2dnbGVFeHBhbmQoaWQpO1xuICB9XG5cbiAgaXNFeHBhbmRlZChpZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2V4cGFuZGVkKCkuaGFzKGlkKTtcbiAgfVxuXG4gIHRvZ2dsZUV4cGFuZChpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgbmV4dCA9IG5ldyBTZXQodGhpcy5fZXhwYW5kZWQoKSk7XG4gICAgaWYgKG5leHQuaGFzKGlkKSkgbmV4dC5kZWxldGUoaWQpO1xuICAgIGVsc2UgbmV4dC5hZGQoaWQpO1xuICAgIHRoaXMuX2V4cGFuZGVkLnNldChuZXh0KTtcbiAgfVxuXG4gIGlzTG9uZyhib2R5OiBzdHJpbmcgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICBpZiAoIWJvZHkpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gYm9keS5sZW5ndGggPiAxMTAgfHwgYm9keS5pbmNsdWRlcygnXFxuJyk7XG4gIH1cblxuICAvKipcbiAgICogSWNvbiByZXNvbHZlciBjb24gb3JkZW4gZGUgZmFsbGJhY2s6XG4gICAqIDEuIG5vdGlmLnBheWxvYWQuaWNvbiAoZm9yd2FyZC1jb21wYXQsIHNpbiBicmVha2luZyBjaGFuZ2UgZW4gc2NoZW1hKVxuICAgKiAyLiBtYXBhIHBvciBub3RpZi50eXBlXG4gICAqIDMuIGRlZmF1bHQgbm90aWZpY2F0aW9ucy1vdXRsaW5lXG4gICAqL1xuICByZXNvbHZlSWNvbihuOiBOb3RpZmljYXRpb25Eb2N1bWVudCk6IFJlc29sdmVkSWNvbiB7XG4gICAgY29uc3QgaGludCA9IG4ucGF5bG9hZD8uWydpY29uJ10gYXMgSWNvbkhpbnQgfCB1bmRlZmluZWQ7XG4gICAgaWYgKGhpbnQ/LnZhbHVlKSB7XG4gICAgICBpZiAoaGludC50eXBlID09PSAnaW1hZ2UnIHx8IGhpbnQudHlwZSA9PT0gJ2F2YXRhcicpIHtcbiAgICAgICAgcmV0dXJuIHsga2luZDogaGludC50eXBlLCBzcmM6IGhpbnQudmFsdWUgfTtcbiAgICAgIH1cbiAgICAgIC8vIElnbm9yYW1vcyBoaW50LmNvbG9yIOKAlCB0b2RvcyBsb3MgaWNvbm9zIHZhbiBlbiBkYXJrIHBvciBjb252ZW5jacOzbiBVWC5cbiAgICAgIHJldHVybiB7IGtpbmQ6ICdpb25pY29uJywgbmFtZTogaGludC52YWx1ZSwgY29sb3I6ICdkYXJrJyB9O1xuICAgIH1cbiAgICBjb25zdCB0ID0gbi50eXBlO1xuICAgIGNvbnN0IG5hbWUgPSAoKCkgPT4ge1xuICAgICAgc3dpdGNoICh0KSB7XG4gICAgICAgIGNhc2UgJ2FwcHJvdmFsJzpcbiAgICAgICAgICByZXR1cm4gJ2NoZWNrbWFyay1jaXJjbGUtb3V0bGluZSc7XG4gICAgICAgIGNhc2UgJ2NoYXQnOlxuICAgICAgICBjYXNlICdjaGF0Ym90JzpcbiAgICAgICAgICByZXR1cm4gJ2NoYXRidWJibGUtb3V0bGluZSc7XG4gICAgICAgIGNhc2UgJ2NvbW1lbnQnOlxuICAgICAgICAgIHJldHVybiAnY2hhdGJveC1lbGxpcHNlcy1vdXRsaW5lJztcbiAgICAgICAgY2FzZSAncmVtaW5kZXInOlxuICAgICAgICAgIHJldHVybiAnYWxhcm0tb3V0bGluZSc7XG4gICAgICAgIGNhc2UgJ3N5c3RlbSc6XG4gICAgICAgICAgcmV0dXJuICdjb2ctb3V0bGluZSc7XG4gICAgICAgIGNhc2UgJ3VzZXInOlxuICAgICAgICBjYXNlICdtZW50aW9uJzpcbiAgICAgICAgICByZXR1cm4gJ3BlcnNvbi1vdXRsaW5lJztcbiAgICAgICAgY2FzZSAnZG9jdW1lbnQnOlxuICAgICAgICAgIHJldHVybiAnZG9jdW1lbnQtdGV4dC1vdXRsaW5lJztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gJ25vdGlmaWNhdGlvbnMtb3V0bGluZSc7XG4gICAgICB9XG4gICAgfSkoKTtcbiAgICByZXR1cm4geyBraW5kOiAnaW9uaWNvbicsIG5hbWUsIGNvbG9yOiAnZGFyaycgfTtcbiAgfVxuXG4gIGlvbmljb25OYW1lKG46IE5vdGlmaWNhdGlvbkRvY3VtZW50KTogc3RyaW5nIHtcbiAgICBjb25zdCByID0gdGhpcy5yZXNvbHZlSWNvbihuKTtcbiAgICByZXR1cm4gci5raW5kID09PSAnaW9uaWNvbicgPyByLm5hbWUgOiAnJztcbiAgfVxuXG4gIGlvbmljb25Db2xvcihuOiBOb3RpZmljYXRpb25Eb2N1bWVudCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgciA9IHRoaXMucmVzb2x2ZUljb24obik7XG4gICAgcmV0dXJuIHIua2luZCA9PT0gJ2lvbmljb24nID8gci5jb2xvciA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGltYWdlU3JjKG46IE5vdGlmaWNhdGlvbkRvY3VtZW50KTogc3RyaW5nIHtcbiAgICBjb25zdCByID0gdGhpcy5yZXNvbHZlSWNvbihuKTtcbiAgICByZXR1cm4gci5raW5kID09PSAnaW1hZ2UnIHx8IHIua2luZCA9PT0gJ2F2YXRhcicgPyByLnNyYyA6ICcnO1xuICB9XG5cbiAgaW9uQ29sb3IodG9rZW46IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gICAgaWYgKCF0b2tlbikgcmV0dXJuICd2YXIoLS1pb24tY29sb3ItcHJpbWFyeSknO1xuICAgIHJldHVybiBgdmFyKC0taW9uLWNvbG9yLSR7dG9rZW59KWA7XG4gIH1cblxuICByZWxhdGl2ZVRpbWUobjogTm90aWZpY2F0aW9uRG9jdW1lbnQpOiBzdHJpbmcge1xuICAgIGNvbnN0IGQgPSBuLmNyZWF0ZWRBdCBpbnN0YW5jZW9mIERhdGUgPyBuLmNyZWF0ZWRBdCA6IG51bGw7XG4gICAgaWYgKCFkKSByZXR1cm4gJyc7XG4gICAgY29uc3QgZGlmZk1zID0gRGF0ZS5ub3coKSAtIGQuZ2V0VGltZSgpO1xuICAgIGNvbnN0IG1pbiA9IE1hdGguZmxvb3IoZGlmZk1zIC8gNjAwMDApO1xuICAgIGlmIChtaW4gPCAxKSByZXR1cm4gdGhpcy50dCgndGltZU5vdycpO1xuICAgIGlmIChtaW4gPCA2MCkgcmV0dXJuIHRoaXMudHQoJ3RpbWVNaW51dGVzJykucmVwbGFjZSgne259JywgU3RyaW5nKG1pbikpO1xuICAgIGNvbnN0IGggPSBNYXRoLmZsb29yKG1pbiAvIDYwKTtcbiAgICBpZiAoaCA8IDI0KSByZXR1cm4gdGhpcy50dCgndGltZUhvdXJzJykucmVwbGFjZSgne259JywgU3RyaW5nKGgpKTtcbiAgICBjb25zdCBkYXlzID0gTWF0aC5mbG9vcihoIC8gMjQpO1xuICAgIHJldHVybiB0aGlzLnR0KCd0aW1lRGF5cycpLnJlcGxhY2UoJ3tufScsIFN0cmluZyhkYXlzKSk7XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gQWN0aW9uc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBhc3luYyBvbk9wZW4objogTm90aWZpY2F0aW9uRG9jdW1lbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5hY3Rpb24ub3BlbihuKTtcbiAgICAgIHRoaXMucmVzb2x2ZWRDb25maWcoKS5vbk5vdGlmaWNhdGlvbk9wZW4/LihuLCByZXN1bHQpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5lcnJvcnMuaGFuZGxlKGVyciwge1xuICAgICAgICBjb250ZXh0OiAnbm90aWZpY2F0aW9ucy5vcGVuJyxcbiAgICAgICAgZmFsbGJhY2tLZXk6ICdvcGVuRXJyb3InLFxuICAgICAgICBpMThuTmFtZXNwYWNlOiB0aGlzLm5zLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgb25NYXJrQWxsKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLl9idWxrQnVzeSgpKSByZXR1cm47XG4gICAgdGhpcy5fYnVsa0J1c3kuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm5vdGlmcy5tYXJrQWxsQXNSZWFkKCk7XG4gICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnR0KCdtYXJrZWRBbGxTdWNjZXNzJyksXG4gICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgIGR1cmF0aW9uOiAyNTAwLFxuICAgICAgICBwb3NpdGlvbjogJ3RvcCcsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuZXJyb3JzLmhhbmRsZShlcnIsIHtcbiAgICAgICAgY29udGV4dDogJ25vdGlmaWNhdGlvbnMubWFya0FsbCcsXG4gICAgICAgIGZhbGxiYWNrS2V5OiAnbWFya2VkQWxsRXJyb3InLFxuICAgICAgICBpMThuTmFtZXNwYWNlOiB0aGlzLm5zLFxuICAgICAgfSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX2J1bGtCdXN5LnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgb25Mb2FkTW9yZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fbG9hZGluZ01vcmUoKSkgcmV0dXJuO1xuICAgIHRoaXMuX2xvYWRpbmdNb3JlLnNldCh0cnVlKTtcbiAgICAvLyBTbGljZSB2aWVuZSBkZWwgY2FjaGUgbG9jYWwg4oCUIG5vIGhheSBmZXRjaCByZWFsLCBwZXJvIHVuIGJyZXZlIHNwaW5uZXJcbiAgICAvLyBjb25maXJtYSBhbCB1c2VyIHF1ZSBlbCBjbGljayByZWdpc3Ryw7MgeSBzdWF2aXphIGxhIGFwYXJpY2nDs24gZGUgaXRlbXMuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLl9wYWdlU2l6ZS51cGRhdGUobiA9PiBuICsgdGhpcy5wYWdlU3RlcCk7XG4gICAgICB0aGlzLl9sb2FkaW5nTW9yZS5zZXQoZmFsc2UpO1xuICAgIH0sIDI1MCk7XG4gIH1cblxuICBvbkdvVG9TZXR0aW5ncygpOiB2b2lkIHtcbiAgICB0aGlzLm5hdi5uYXZpZ2F0ZUJ5VXJsKHRoaXMucmVzb2x2ZWRDb25maWcoKS5zZXR0aW5nc05vdGlmaWNhdGlvbnNQYXRoKTtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBHcm91cGluZyBoZWxwZXJzXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIHByaXZhdGUgYnVja2V0T2YobjogTm90aWZpY2F0aW9uRG9jdW1lbnQsIG5vdzogRGF0ZSk6IEdyb3VwS2V5IHtcbiAgICBjb25zdCBkID0gbi5jcmVhdGVkQXQgaW5zdGFuY2VvZiBEYXRlID8gbi5jcmVhdGVkQXQgOiBudWxsO1xuICAgIGlmICghZCkgcmV0dXJuICdlYXJsaWVyJztcbiAgICBpZiAoZC5nZXRGdWxsWWVhcigpID09PSBub3cuZ2V0RnVsbFllYXIoKSAmJiBkLmdldE1vbnRoKCkgPT09IG5vdy5nZXRNb250aCgpICYmIGQuZ2V0RGF0ZSgpID09PSBub3cuZ2V0RGF0ZSgpKSB7XG4gICAgICByZXR1cm4gJ3RvZGF5JztcbiAgICB9XG4gICAgaWYgKGQuZ2V0RnVsbFllYXIoKSA9PT0gbm93LmdldEZ1bGxZZWFyKCkgJiYgZC5nZXRNb250aCgpID09PSBub3cuZ2V0TW9udGgoKSkge1xuICAgICAgcmV0dXJuICd0aGlzTW9udGgnO1xuICAgIH1cbiAgICByZXR1cm4gJ2VhcmxpZXInO1xuICB9XG5cbiAgcHJpdmF0ZSB0dChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgdGhpcy5ucyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -94,7 +94,7 @@ export class OptionSheetComponent {
|
|
|
94
94
|
/>
|
|
95
95
|
}
|
|
96
96
|
</div>
|
|
97
|
-
`, isInline: true, styles: [":host{display:block}.val-sheet{--sheet-text: var(--ion-text-color, #111114);--sheet-muted: var(--ion-color-
|
|
97
|
+
`, isInline: true, styles: [":host{display:block}.val-sheet{--sheet-text: var(--ion-text-color, #111114);--sheet-muted: var(--ion-color-medium, #6b6675);--sheet-option-bg: rgba(0, 0, 0, .035);--sheet-hover: rgba(0, 0, 0, .07);--sheet-surface: var(--ion-background-color, #fff);padding:8px 16px calc(16px + env(safe-area-inset-bottom,0px));background:var(--sheet-surface)}:host-context(body.dark) .val-sheet,:host-context(html.ion-palette-dark) .val-sheet,:host-context([data-theme=\"dark\"]) .val-sheet{--sheet-option-bg: rgba(255, 255, 255, .06);--sheet-hover: rgba(255, 255, 255, .11)}.val-sheet__head{padding:4px 4px 16px}.val-sheet__title{margin:0;font-size:1rem;font-weight:700;color:var(--sheet-text)}.val-sheet__subtitle{margin:4px 0 0;font-size:.875rem;color:var(--sheet-muted)}.val-sheet__options{display:flex;flex-direction:column;gap:8px}.val-sheet__option{display:flex;align-items:center;gap:14px;width:100%;min-height:56px;padding:12px 18px;border:0;border-radius:14px;background:var(--sheet-option-bg);text-align:left;font:inherit;font-size:1rem;font-weight:500;color:var(--sheet-text);cursor:pointer;transition:background .14s ease}.val-sheet__option:hover:not([disabled]){background:var(--sheet-hover)}.val-sheet__option:focus-visible{outline:2px solid var(--ion-color-primary, #10131a);outline-offset:-2px}.val-sheet__option[disabled]{opacity:.45;cursor:default}.val-sheet__option--destructive{color:var(--ion-color-danger, #c5000f)}.val-sheet__icon{flex:0 0 auto;font-size:1.35rem;color:currentColor}.val-sheet__text{display:flex;flex-direction:column;gap:2px;min-width:0}.val-sheet__description{font-size:.8125rem;color:var(--sheet-muted)}.val-sheet__cancel{display:block;margin-top:16px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }] }); }
|
|
98
98
|
}
|
|
99
99
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OptionSheetComponent, decorators: [{
|
|
100
100
|
type: Component,
|
|
@@ -156,7 +156,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
156
156
|
/>
|
|
157
157
|
}
|
|
158
158
|
</div>
|
|
159
|
-
`, styles: [":host{display:block}.val-sheet{--sheet-text: var(--ion-text-color, #111114);--sheet-muted: var(--ion-color-
|
|
159
|
+
`, styles: [":host{display:block}.val-sheet{--sheet-text: var(--ion-text-color, #111114);--sheet-muted: var(--ion-color-medium, #6b6675);--sheet-option-bg: rgba(0, 0, 0, .035);--sheet-hover: rgba(0, 0, 0, .07);--sheet-surface: var(--ion-background-color, #fff);padding:8px 16px calc(16px + env(safe-area-inset-bottom,0px));background:var(--sheet-surface)}:host-context(body.dark) .val-sheet,:host-context(html.ion-palette-dark) .val-sheet,:host-context([data-theme=\"dark\"]) .val-sheet{--sheet-option-bg: rgba(255, 255, 255, .06);--sheet-hover: rgba(255, 255, 255, .11)}.val-sheet__head{padding:4px 4px 16px}.val-sheet__title{margin:0;font-size:1rem;font-weight:700;color:var(--sheet-text)}.val-sheet__subtitle{margin:4px 0 0;font-size:.875rem;color:var(--sheet-muted)}.val-sheet__options{display:flex;flex-direction:column;gap:8px}.val-sheet__option{display:flex;align-items:center;gap:14px;width:100%;min-height:56px;padding:12px 18px;border:0;border-radius:14px;background:var(--sheet-option-bg);text-align:left;font:inherit;font-size:1rem;font-weight:500;color:var(--sheet-text);cursor:pointer;transition:background .14s ease}.val-sheet__option:hover:not([disabled]){background:var(--sheet-hover)}.val-sheet__option:focus-visible{outline:2px solid var(--ion-color-primary, #10131a);outline-offset:-2px}.val-sheet__option[disabled]{opacity:.45;cursor:default}.val-sheet__option--destructive{color:var(--ion-color-danger, #c5000f)}.val-sheet__icon{flex:0 0 auto;font-size:1.35rem;color:currentColor}.val-sheet__text{display:flex;flex-direction:column;gap:2px;min-width:0}.val-sheet__description{font-size:.8125rem;color:var(--sheet-muted)}.val-sheet__cancel{display:block;margin-top:16px}\n"] }]
|
|
160
160
|
}], propDecorators: { title: [{
|
|
161
161
|
type: Input
|
|
162
162
|
}], subtitle: [{
|
|
@@ -170,4 +170,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
170
170
|
}], _modalRef: [{
|
|
171
171
|
type: Input
|
|
172
172
|
}] } });
|
|
173
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLXNoZWV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvb3B0aW9uLXNoZWV0L29wdGlvbi1zaGVldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7O0FBR3RFOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQXNMSCxNQUFNLE9BQU8sb0JBQW9CO0lBckxqQztRQXdMVyxZQUFPLEdBQTJCLEVBQUUsQ0FBQztRQUNyQyxlQUFVLEdBQUcsVUFBVSxDQUFDO1FBQ3hCLGVBQVUsR0FBRyxLQUFLLENBQUM7S0FhN0I7SUFSQyxNQUFNLENBQUMsTUFBNEI7UUFDakMsSUFBSSxNQUFNLENBQUMsUUFBUTtZQUFFLE9BQU87UUFDNUIsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMxQyxDQUFDOytHQWpCVSxvQkFBb0I7bUdBQXBCLG9CQUFvQiw4TkFqTHJCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMERULHV0REEzRFMsWUFBWSwrQkFBRSxPQUFPLDJKQUFFLGVBQWU7OzRGQWtMckMsb0JBQW9CO2tCQXJMaEMsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxlQUFlLENBQUMsWUFDdkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwRFQ7OEJBd0hRLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25JY29uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5cbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IE9wdGlvblNoZWV0T3B0aW9uIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogYHZhbC1vcHRpb24tc2hlZXRgIOKAlCBzZWxlY3RvciBkZSBOIG9wY2lvbmVzLCBwcm9waW8gZGVsIGZhY3RvcnkuXG4gKlxuICogUmVlbXBsYXphIGFsIGBBY3Rpb25TaGVldENvbnRyb2xsZXJgIGRlIElvbmljLiBEb3MgbW90aXZvczpcbiAqXG4gKiAxLiBFbCBhY3Rpb24gc2hlZXQgbmF0aXZvIHNlIGVzdGlsYSBwb2NvIHkgbWFsOiBzdSBET00gbG8gZ2VuZXJhIElvbmljIHlcbiAqICAgIGFycmFzdHJhIGVsIGxvb2sgXCJpT1Mgc3lzdGVtIHNoZWV0XCIgKHRvZG8gZWwgdGV4dG8gY2VudHJhZG8sIHRvZGFzIGxhc1xuICogICAgb3BjaW9uZXMgZGVsIG1pc21vIGNvbG9yLCBzaW4gamVyYXJxdcOtYSkuIEVuIGxhIHByw6FjdGljYSB0ZXJtaW5hYmEgY29uXG4gKiAgICB0cmVzIG9wY2lvbmVzIGVuIHJvam8gZG9uZGUgc29sbyB1bmEgZXJhIGRlc3RydWN0aXZhLlxuICogMi4gRXMgZGUgbGFzIHBpZXphcyBxdWUgbcOhcyBzZSBub3RhcsOtYW4gc2kgYWxnw7puIGTDrWEgZGVqYW1vcyBJb25pYywgcG9ycXVlXG4gKiAgICBhcGFyZWNlIGVuIGNhZGEgZmx1am8gZG9uZGUgZWwgdXN1YXJpbyBlbGlnZSBlbnRyZSB2YXJpYXMgc2FsaWRhcy5cbiAqXG4gKiBTZSBhYnJlIHbDrWEgYE9wdGlvblNoZWV0U2VydmljZWAsIHF1ZSB1c2EgYE1vZGFsU2VydmljZS5vcGVuU2hlZXQoKWA7IHJlY2liZVxuICogYF9tb2RhbFJlZmAgcG9yIGBjb21wb25lbnRQcm9wc2AsIGlndWFsIHF1ZSBgdmFsLWNvbmZpcm1hdGlvbi1kaWFsb2ctdjJgLlxuICpcbiAqIEVsIGNvbXBvbmVudGUgTk8gdHJhZHVjZTogcmVjaWJlIGxvcyB0ZXh0b3MgeWEgcmVzdWVsdG9zLiBMYSBpMThuIGVzIGRlIGxhXG4gKiBhcHAsIHF1ZSBzYWJlIGVuIHF1w6kgbmFtZXNwYWNlIHZpdmVuIHN1cyBjbGF2ZXMuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1vcHRpb24tc2hlZXQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25JY29uLCBCdXR0b25Db21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJ2YWwtc2hlZXRcIj5cbiAgICAgIEBpZiAodGl0bGUgfHwgc3VidGl0bGUpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInZhbC1zaGVldF9faGVhZFwiPlxuICAgICAgICAgIEBpZiAodGl0bGUpIHtcbiAgICAgICAgICAgIDxwIGNsYXNzPVwidmFsLXNoZWV0X190aXRsZVwiPnt7IHRpdGxlIH19PC9wPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKHN1YnRpdGxlKSB7XG4gICAgICAgICAgICA8cCBjbGFzcz1cInZhbC1zaGVldF9fc3VidGl0bGVcIj57eyBzdWJ0aXRsZSB9fTwvcD5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICA8ZGl2IGNsYXNzPVwidmFsLXNoZWV0X19vcHRpb25zXCIgcm9sZT1cImxpc3Rib3hcIj5cbiAgICAgICAgQGZvciAob3B0aW9uIG9mIG9wdGlvbnM7IHRyYWNrIG9wdGlvbi52YWx1ZSkge1xuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICBjbGFzcz1cInZhbC1zaGVldF9fb3B0aW9uXCJcbiAgICAgICAgICAgIFtjbGFzcy52YWwtc2hlZXRfX29wdGlvbi0tZGVzdHJ1Y3RpdmVdPVwib3B0aW9uLmRlc3RydWN0aXZlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJvcHRpb24uZGlzYWJsZWRcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2hvb3NlKG9wdGlvbilcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIEBpZiAob3B0aW9uLmljb24pIHtcbiAgICAgICAgICAgICAgPGlvbi1pY29uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ2YWwtc2hlZXRfX2ljb25cIlxuICAgICAgICAgICAgICAgIFtuYW1lXT1cIm9wdGlvbi5pY29uXCJcbiAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICA+PC9pb24taWNvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsLXNoZWV0X190ZXh0XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsLXNoZWV0X19sYWJlbFwiPnt7IG9wdGlvbi50ZXh0IH19PC9zcGFuPlxuICAgICAgICAgICAgICBAaWYgKG9wdGlvbi5kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsLXNoZWV0X19kZXNjcmlwdGlvblwiPnt7IG9wdGlvbi5kZXNjcmlwdGlvbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cblxuICAgICAgQGlmICghaGlkZUNhbmNlbCkge1xuICAgICAgICA8dmFsLWJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwidmFsLXNoZWV0X19jYW5jZWxcIlxuICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICB0ZXh0OiBjYW5jZWxUZXh0LFxuICAgICAgICAgICAgZmlsbDogJ291dGxpbmUnLFxuICAgICAgICAgICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgZXhwYW5kOiAnYmxvY2snLFxuICAgICAgICAgICAgc2l6ZTogJ2RlZmF1bHQnLFxuICAgICAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgICAgICBzdGF0ZTogJ0VOQUJMRUQnLFxuICAgICAgICAgIH1cIlxuICAgICAgICAgIChvbkNsaWNrKT1cImNhbmNlbCgpXCJcbiAgICAgICAgLz5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cblxuICAgICAgLnZhbC1zaGVldCB7XG4gICAgICAgIC0tc2hlZXQtdGV4dDogdmFyKC0taW9uLXRleHQtY29sb3IsICMxMTExMTQpO1xuICAgICAgICAtLXNoZWV0LW11dGVkOiB2YXIoLS1pb24tY29sb3ItZGFyaywgIzZiNjY3NSk7XG4gICAgICAgIC0tc2hlZXQtb3B0aW9uLWJnOiByZ2JhKDAsIDAsIDAsIDAuMDM1KTtcbiAgICAgICAgLS1zaGVldC1ob3ZlcjogcmdiYSgwLCAwLCAwLCAwLjA3KTtcbiAgICAgICAgLS1zaGVldC1zdXJmYWNlOiB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciwgI2ZmZik7XG5cbiAgICAgICAgcGFkZGluZzogOHB4IDE2cHggY2FsYygxNnB4ICsgZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20sIDBweCkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaGVldC1zdXJmYWNlKTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChib2R5LmRhcmspIC52YWwtc2hlZXQsXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLnZhbC1zaGVldCxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLnZhbC1zaGVldCB7XG4gICAgICAgIC0tc2hlZXQtb3B0aW9uLWJnOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDYpO1xuICAgICAgICAtLXNoZWV0LWhvdmVyOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTEpO1xuICAgICAgfVxuXG4gICAgICAudmFsLXNoZWV0X19oZWFkIHtcbiAgICAgICAgcGFkZGluZzogNHB4IDRweCAxNnB4O1xuICAgICAgfVxuXG4gICAgICAudmFsLXNoZWV0X190aXRsZSB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tc2hlZXQtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIC52YWwtc2hlZXRfX3N1YnRpdGxlIHtcbiAgICAgICAgbWFyZ2luOiA0cHggMCAwO1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0tc2hlZXQtbXV0ZWQpO1xuICAgICAgfVxuXG4gICAgICAudmFsLXNoZWV0X19vcHRpb25zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICB9XG5cbiAgICAgIC8qIEZpbGFzIHJlZG9uZGVhZGFzIHkgc2luIGRpdmlzb3JlczogY2FkYSBvcGNpw7NuIHNlIGxlZSBjb21vIHVuIG9iamV0b1xuICAgICAgICAgcHJvcGlvIHF1ZSBzZSBwdWVkZSB0b2Nhci4gTGFzIGzDrW5lYXMgc2VwYXJhZG9yYXMgZGVsIGFjdGlvbiBzaGVldFxuICAgICAgICAgbmF0aXZvIGRhYmFuIGFzcGVjdG8gZGUgZm9ybXVsYXJpbyBkZSBzaXN0ZW1hLiAqL1xuICAgICAgLnZhbC1zaGVldF9fb3B0aW9uIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAxNHB4O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgLyogT2JqZXRpdm8gY8OzbW9kbyBjb24gZ3VhbnRlcyBwdWVzdG9zLCBxdWUgZXMgY29tbyBzZSB1c2EgTWVyb3R6LiAqL1xuICAgICAgICBtaW4taGVpZ2h0OiA1NnB4O1xuICAgICAgICBwYWRkaW5nOiAxMnB4IDE4cHg7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTRweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc2hlZXQtb3B0aW9uLWJnKTtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tc2hlZXQtdGV4dCk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAxNDBtcyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAudmFsLXNoZWV0X19vcHRpb246aG92ZXI6bm90KFtkaXNhYmxlZF0pIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc2hlZXQtaG92ZXIpO1xuICAgICAgfVxuXG4gICAgICAudmFsLXNoZWV0X19vcHRpb246Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSwgIzEwMTMxYSk7XG4gICAgICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICAgICAgfVxuXG4gICAgICAudmFsLXNoZWV0X19vcHRpb25bZGlzYWJsZWRdIHtcbiAgICAgICAgb3BhY2l0eTogMC40NTtcbiAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgfVxuXG4gICAgICAvKiBTb2xvIGxvIHJlYWxtZW50ZSBkZXN0cnVjdGl2byBzZSBwaW50YS4gQ29uIGVsIGFjdGlvbiBzaGVldCBuYXRpdm9cbiAgICAgICAgIHRvZGFzIGxhcyBvcGNpb25lcyBzYWzDrWFuIGRlbCBtaXNtbyBjb2xvciB5IGxhIGplcmFycXXDrWEgc2UgcGVyZMOtYS4gKi9cbiAgICAgIC52YWwtc2hlZXRfX29wdGlvbi0tZGVzdHJ1Y3RpdmUge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhbmdlciwgI2M1MDAwZik7XG4gICAgICB9XG5cbiAgICAgIC52YWwtc2hlZXRfX2ljb24ge1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgZm9udC1zaXplOiAxLjM1cmVtO1xuICAgICAgICBjb2xvcjogY3VycmVudENvbG9yO1xuICAgICAgfVxuXG4gICAgICAudmFsLXNoZWV0X190ZXh0IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAycHg7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLnZhbC1zaGVldF9fZGVzY3JpcHRpb24ge1xuICAgICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLXNoZWV0LW11dGVkKTtcbiAgICAgIH1cblxuICAgICAgLyogQ2FuY2VsYXIgdXNhIHZhbC1idXR0b24gKG91dGxpbmUsIHJlZG9uZGVhZG8pIHkgbm8gdW4gPGJ1dHRvbj4gcHJvcGlvOlxuICAgICAgICAgdW4gYm90w7NuIGRpYnVqYWRvIGEgbWFubyBhY8OhIHNlIGRlc2luY3Jvbml6YSBkZWwgcmVzdG8gZGVsIGZhY3RvcnkgZW5cbiAgICAgICAgIGN1YW50byBjYW1iaWEgZWwgZXN0aWxvIGRlIGxvcyBib3RvbmVzLiAqL1xuICAgICAgLnZhbC1zaGVldF9fY2FuY2VsIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbi10b3A6IDE2cHg7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgT3B0aW9uU2hlZXRDb21wb25lbnQ8VCA9IHN0cmluZz4ge1xuICBASW5wdXQoKSB0aXRsZT86IHN0cmluZztcbiAgQElucHV0KCkgc3VidGl0bGU/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIG9wdGlvbnM6IE9wdGlvblNoZWV0T3B0aW9uPFQ+W10gPSBbXTtcbiAgQElucHV0KCkgY2FuY2VsVGV4dCA9ICdDYW5jZWxhcic7XG4gIEBJbnB1dCgpIGhpZGVDYW5jZWwgPSBmYWxzZTtcblxuICAvKiogTG8gaW55ZWN0YSBgTW9kYWxTZXJ2aWNlYCBhbCBhYnJpciAobWlzbW8gcGF0csOzbiBxdWUgZWwgcmVzdG8gZGUgbW9kYWxlcykuICovXG4gIEBJbnB1dCgpIF9tb2RhbFJlZj86IHsgZGlzbWlzczogKGRhdGE/OiB1bmtub3duLCByb2xlPzogc3RyaW5nKSA9PiB2b2lkIH07XG5cbiAgY2hvb3NlKG9wdGlvbjogT3B0aW9uU2hlZXRPcHRpb248VD4pOiB2b2lkIHtcbiAgICBpZiAob3B0aW9uLmRpc2FibGVkKSByZXR1cm47XG4gICAgdGhpcy5fbW9kYWxSZWY/LmRpc21pc3Mob3B0aW9uLnZhbHVlLCAnc2VsZWN0Jyk7XG4gIH1cblxuICBjYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5fbW9kYWxSZWY/LmRpc21pc3MobnVsbCwgJ2NhbmNlbCcpO1xuICB9XG59XG4iXX0=
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLXNoZWV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvb3B0aW9uLXNoZWV0L29wdGlvbi1zaGVldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7O0FBR3RFOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQXNMSCxNQUFNLE9BQU8sb0JBQW9CO0lBckxqQztRQXdMVyxZQUFPLEdBQTJCLEVBQUUsQ0FBQztRQUNyQyxlQUFVLEdBQUcsVUFBVSxDQUFDO1FBQ3hCLGVBQVUsR0FBRyxLQUFLLENBQUM7S0FhN0I7SUFSQyxNQUFNLENBQUMsTUFBNEI7UUFDakMsSUFBSSxNQUFNLENBQUMsUUFBUTtZQUFFLE9BQU87UUFDNUIsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMxQyxDQUFDOytHQWpCVSxvQkFBb0I7bUdBQXBCLG9CQUFvQiw4TkFqTHJCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMERULHl0REEzRFMsWUFBWSwrQkFBRSxPQUFPLDJKQUFFLGVBQWU7OzRGQWtMckMsb0JBQW9CO2tCQXJMaEMsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxlQUFlLENBQUMsWUFDdkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwRFQ7OEJBd0hRLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25JY29uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5cbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IE9wdGlvblNoZWV0T3B0aW9uIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogYHZhbC1vcHRpb24tc2hlZXRgIOKAlCBzZWxlY3RvciBkZSBOIG9wY2lvbmVzLCBwcm9waW8gZGVsIGZhY3RvcnkuXG4gKlxuICogUmVlbXBsYXphIGFsIGBBY3Rpb25TaGVldENvbnRyb2xsZXJgIGRlIElvbmljLiBEb3MgbW90aXZvczpcbiAqXG4gKiAxLiBFbCBhY3Rpb24gc2hlZXQgbmF0aXZvIHNlIGVzdGlsYSBwb2NvIHkgbWFsOiBzdSBET00gbG8gZ2VuZXJhIElvbmljIHlcbiAqICAgIGFycmFzdHJhIGVsIGxvb2sgXCJpT1Mgc3lzdGVtIHNoZWV0XCIgKHRvZG8gZWwgdGV4dG8gY2VudHJhZG8sIHRvZGFzIGxhc1xuICogICAgb3BjaW9uZXMgZGVsIG1pc21vIGNvbG9yLCBzaW4gamVyYXJxdcOtYSkuIEVuIGxhIHByw6FjdGljYSB0ZXJtaW5hYmEgY29uXG4gKiAgICB0cmVzIG9wY2lvbmVzIGVuIHJvam8gZG9uZGUgc29sbyB1bmEgZXJhIGRlc3RydWN0aXZhLlxuICogMi4gRXMgZGUgbGFzIHBpZXphcyBxdWUgbcOhcyBzZSBub3RhcsOtYW4gc2kgYWxnw7puIGTDrWEgZGVqYW1vcyBJb25pYywgcG9ycXVlXG4gKiAgICBhcGFyZWNlIGVuIGNhZGEgZmx1am8gZG9uZGUgZWwgdXN1YXJpbyBlbGlnZSBlbnRyZSB2YXJpYXMgc2FsaWRhcy5cbiAqXG4gKiBTZSBhYnJlIHbDrWEgYE9wdGlvblNoZWV0U2VydmljZWAsIHF1ZSB1c2EgYE1vZGFsU2VydmljZS5vcGVuU2hlZXQoKWA7IHJlY2liZVxuICogYF9tb2RhbFJlZmAgcG9yIGBjb21wb25lbnRQcm9wc2AsIGlndWFsIHF1ZSBgdmFsLWNvbmZpcm1hdGlvbi1kaWFsb2ctdjJgLlxuICpcbiAqIEVsIGNvbXBvbmVudGUgTk8gdHJhZHVjZTogcmVjaWJlIGxvcyB0ZXh0b3MgeWEgcmVzdWVsdG9zLiBMYSBpMThuIGVzIGRlIGxhXG4gKiBhcHAsIHF1ZSBzYWJlIGVuIHF1w6kgbmFtZXNwYWNlIHZpdmVuIHN1cyBjbGF2ZXMuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1vcHRpb24tc2hlZXQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25JY29uLCBCdXR0b25Db21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJ2YWwtc2hlZXRcIj5cbiAgICAgIEBpZiAodGl0bGUgfHwgc3VidGl0bGUpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInZhbC1zaGVldF9faGVhZFwiPlxuICAgICAgICAgIEBpZiAodGl0bGUpIHtcbiAgICAgICAgICAgIDxwIGNsYXNzPVwidmFsLXNoZWV0X190aXRsZVwiPnt7IHRpdGxlIH19PC9wPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKHN1YnRpdGxlKSB7XG4gICAgICAgICAgICA8cCBjbGFzcz1cInZhbC1zaGVldF9fc3VidGl0bGVcIj57eyBzdWJ0aXRsZSB9fTwvcD5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICA8ZGl2IGNsYXNzPVwidmFsLXNoZWV0X19vcHRpb25zXCIgcm9sZT1cImxpc3Rib3hcIj5cbiAgICAgICAgQGZvciAob3B0aW9uIG9mIG9wdGlvbnM7IHRyYWNrIG9wdGlvbi52YWx1ZSkge1xuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICBjbGFzcz1cInZhbC1zaGVldF9fb3B0aW9uXCJcbiAgICAgICAgICAgIFtjbGFzcy52YWwtc2hlZXRfX29wdGlvbi0tZGVzdHJ1Y3RpdmVdPVwib3B0aW9uLmRlc3RydWN0aXZlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJvcHRpb24uZGlzYWJsZWRcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2hvb3NlKG9wdGlvbilcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIEBpZiAob3B0aW9uLmljb24pIHtcbiAgICAgICAgICAgICAgPGlvbi1pY29uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ2YWwtc2hlZXRfX2ljb25cIlxuICAgICAgICAgICAgICAgIFtuYW1lXT1cIm9wdGlvbi5pY29uXCJcbiAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICA+PC9pb24taWNvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsLXNoZWV0X190ZXh0XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsLXNoZWV0X19sYWJlbFwiPnt7IG9wdGlvbi50ZXh0IH19PC9zcGFuPlxuICAgICAgICAgICAgICBAaWYgKG9wdGlvbi5kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsLXNoZWV0X19kZXNjcmlwdGlvblwiPnt7IG9wdGlvbi5kZXNjcmlwdGlvbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cblxuICAgICAgQGlmICghaGlkZUNhbmNlbCkge1xuICAgICAgICA8dmFsLWJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwidmFsLXNoZWV0X19jYW5jZWxcIlxuICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICB0ZXh0OiBjYW5jZWxUZXh0LFxuICAgICAgICAgICAgZmlsbDogJ291dGxpbmUnLFxuICAgICAgICAgICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgZXhwYW5kOiAnYmxvY2snLFxuICAgICAgICAgICAgc2l6ZTogJ2RlZmF1bHQnLFxuICAgICAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgICAgICBzdGF0ZTogJ0VOQUJMRUQnLFxuICAgICAgICAgIH1cIlxuICAgICAgICAgIChvbkNsaWNrKT1cImNhbmNlbCgpXCJcbiAgICAgICAgLz5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cblxuICAgICAgLnZhbC1zaGVldCB7XG4gICAgICAgIC0tc2hlZXQtdGV4dDogdmFyKC0taW9uLXRleHQtY29sb3IsICMxMTExMTQpO1xuICAgICAgICAtLXNoZWV0LW11dGVkOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjNmI2Njc1KTtcbiAgICAgICAgLS1zaGVldC1vcHRpb24tYmc6IHJnYmEoMCwgMCwgMCwgMC4wMzUpO1xuICAgICAgICAtLXNoZWV0LWhvdmVyOiByZ2JhKDAsIDAsIDAsIDAuMDcpO1xuICAgICAgICAtLXNoZWV0LXN1cmZhY2U6IHZhcigtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yLCAjZmZmKTtcblxuICAgICAgICBwYWRkaW5nOiA4cHggMTZweCBjYWxjKDE2cHggKyBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSwgMHB4KSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXNoZWV0LXN1cmZhY2UpO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGJvZHkuZGFyaykgLnZhbC1zaGVldCxcbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAudmFsLXNoZWV0LFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAudmFsLXNoZWV0IHtcbiAgICAgICAgLS1zaGVldC1vcHRpb24tYmc6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNik7XG4gICAgICAgIC0tc2hlZXQtaG92ZXI6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMSk7XG4gICAgICB9XG5cbiAgICAgIC52YWwtc2hlZXRfX2hlYWQge1xuICAgICAgICBwYWRkaW5nOiA0cHggNHB4IDE2cHg7XG4gICAgICB9XG5cbiAgICAgIC52YWwtc2hlZXRfX3RpdGxlIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zaGVldC10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgLnZhbC1zaGVldF9fc3VidGl0bGUge1xuICAgICAgICBtYXJnaW46IDRweCAwIDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zaGVldC1tdXRlZCk7XG4gICAgICB9XG5cbiAgICAgIC52YWwtc2hlZXRfX29wdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgIH1cblxuICAgICAgLyogRmlsYXMgcmVkb25kZWFkYXMgeSBzaW4gZGl2aXNvcmVzOiBjYWRhIG9wY2nDs24gc2UgbGVlIGNvbW8gdW4gb2JqZXRvXG4gICAgICAgICBwcm9waW8gcXVlIHNlIHB1ZWRlIHRvY2FyLiBMYXMgbMOtbmVhcyBzZXBhcmFkb3JhcyBkZWwgYWN0aW9uIHNoZWV0XG4gICAgICAgICBuYXRpdm8gZGFiYW4gYXNwZWN0byBkZSBmb3JtdWxhcmlvIGRlIHNpc3RlbWEuICovXG4gICAgICAudmFsLXNoZWV0X19vcHRpb24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDE0cHg7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAvKiBPYmpldGl2byBjw7Ntb2RvIGNvbiBndWFudGVzIHB1ZXN0b3MsIHF1ZSBlcyBjb21vIHNlIHVzYSBNZXJvdHouICovXG4gICAgICAgIG1pbi1oZWlnaHQ6IDU2cHg7XG4gICAgICAgIHBhZGRpbmc6IDEycHggMThweDtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxNHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaGVldC1vcHRpb24tYmcpO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zaGVldC10ZXh0KTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDE0MG1zIGVhc2U7XG4gICAgICB9XG5cbiAgICAgIC52YWwtc2hlZXRfX29wdGlvbjpob3Zlcjpub3QoW2Rpc2FibGVkXSkge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zaGVldC1ob3Zlcik7XG4gICAgICB9XG5cbiAgICAgIC52YWwtc2hlZXRfX29wdGlvbjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LCAjMTAxMzFhKTtcbiAgICAgICAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7XG4gICAgICB9XG5cbiAgICAgIC52YWwtc2hlZXRfX29wdGlvbltkaXNhYmxlZF0ge1xuICAgICAgICBvcGFjaXR5OiAwLjQ1O1xuICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICB9XG5cbiAgICAgIC8qIFNvbG8gbG8gcmVhbG1lbnRlIGRlc3RydWN0aXZvIHNlIHBpbnRhLiBDb24gZWwgYWN0aW9uIHNoZWV0IG5hdGl2b1xuICAgICAgICAgdG9kYXMgbGFzIG9wY2lvbmVzIHNhbMOtYW4gZGVsIG1pc21vIGNvbG9yIHkgbGEgamVyYXJxdcOtYSBzZSBwZXJkw61hLiAqL1xuICAgICAgLnZhbC1zaGVldF9fb3B0aW9uLS1kZXN0cnVjdGl2ZSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLCAjYzUwMDBmKTtcbiAgICAgIH1cblxuICAgICAgLnZhbC1zaGVldF9faWNvbiB7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgICBmb250LXNpemU6IDEuMzVyZW07XG4gICAgICAgIGNvbG9yOiBjdXJyZW50Q29sb3I7XG4gICAgICB9XG5cbiAgICAgIC52YWwtc2hlZXRfX3RleHQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDJweDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAudmFsLXNoZWV0X19kZXNjcmlwdGlvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0tc2hlZXQtbXV0ZWQpO1xuICAgICAgfVxuXG4gICAgICAvKiBDYW5jZWxhciB1c2EgdmFsLWJ1dHRvbiAob3V0bGluZSwgcmVkb25kZWFkbykgeSBubyB1biA8YnV0dG9uPiBwcm9waW86XG4gICAgICAgICB1biBib3TDs24gZGlidWphZG8gYSBtYW5vIGFjw6Egc2UgZGVzaW5jcm9uaXphIGRlbCByZXN0byBkZWwgZmFjdG9yeSBlblxuICAgICAgICAgY3VhbnRvIGNhbWJpYSBlbCBlc3RpbG8gZGUgbG9zIGJvdG9uZXMuICovXG4gICAgICAudmFsLXNoZWV0X19jYW5jZWwge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luLXRvcDogMTZweDtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBPcHRpb25TaGVldENvbXBvbmVudDxUID0gc3RyaW5nPiB7XG4gIEBJbnB1dCgpIHRpdGxlPzogc3RyaW5nO1xuICBASW5wdXQoKSBzdWJ0aXRsZT86IHN0cmluZztcbiAgQElucHV0KCkgb3B0aW9uczogT3B0aW9uU2hlZXRPcHRpb248VD5bXSA9IFtdO1xuICBASW5wdXQoKSBjYW5jZWxUZXh0ID0gJ0NhbmNlbGFyJztcbiAgQElucHV0KCkgaGlkZUNhbmNlbCA9IGZhbHNlO1xuXG4gIC8qKiBMbyBpbnllY3RhIGBNb2RhbFNlcnZpY2VgIGFsIGFicmlyIChtaXNtbyBwYXRyw7NuIHF1ZSBlbCByZXN0byBkZSBtb2RhbGVzKS4gKi9cbiAgQElucHV0KCkgX21vZGFsUmVmPzogeyBkaXNtaXNzOiAoZGF0YT86IHVua25vd24sIHJvbGU/OiBzdHJpbmcpID0+IHZvaWQgfTtcblxuICBjaG9vc2Uob3B0aW9uOiBPcHRpb25TaGVldE9wdGlvbjxUPik6IHZvaWQge1xuICAgIGlmIChvcHRpb24uZGlzYWJsZWQpIHJldHVybjtcbiAgICB0aGlzLl9tb2RhbFJlZj8uZGlzbWlzcyhvcHRpb24udmFsdWUsICdzZWxlY3QnKTtcbiAgfVxuXG4gIGNhbmNlbCgpOiB2b2lkIHtcbiAgICB0aGlzLl9tb2RhbFJlZj8uZGlzbWlzcyhudWxsLCAnY2FuY2VsJyk7XG4gIH1cbn1cbiJdfQ==
|