valtech-components 4.0.963 → 4.0.964
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/notice/notice.component.mjs +3 -3
- package/esm2022/lib/components/atoms/rights-footer/rights-footer.component.mjs +2 -2
- package/esm2022/lib/components/molecules/date-input/date-input.component.mjs +3 -3
- package/esm2022/lib/components/molecules/date-picker/date-picker.component.mjs +5 -5
- 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/footer-links/footer-links.component.mjs +3 -3
- package/esm2022/lib/components/molecules/image-crop/image-crop.component.mjs +3 -3
- package/esm2022/lib/components/molecules/linked-providers/linked-providers.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/option-cards/option-cards.component.mjs +3 -3
- package/esm2022/lib/components/molecules/permission-selector/permission-selector.component.mjs +3 -3
- package/esm2022/lib/components/molecules/progress-status/progress-status.component.mjs +3 -3
- package/esm2022/lib/components/molecules/request-form/request-form.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/comment-section/comment-section.component.mjs +3 -3
- package/esm2022/lib/components/organisms/cookie-settings/cookie-settings.component.mjs +3 -3
- package/esm2022/lib/components/organisms/delete-account-modal/delete-account-modal.component.mjs +3 -3
- package/esm2022/lib/components/organisms/field-list/field-list.component.mjs +3 -3
- package/esm2022/lib/components/organisms/form/form.component.mjs +3 -3
- package/esm2022/lib/components/organisms/infinite-list/infinite-list.component.mjs +5 -5
- package/esm2022/lib/components/organisms/item-list/item-list.component.mjs +9 -9
- 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 +3 -3
- package/esm2022/lib/components/organisms/member-import-modal/member-import-modal.component.mjs +3 -3
- 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/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/organization-view/organization-view.component.mjs +3 -3
- package/esm2022/lib/components/organisms/permissions-view/permissions-view.component.mjs +9 -9
- package/esm2022/lib/components/organisms/request-review-panel/request-review-panel.component.mjs +3 -3
- package/esm2022/lib/components/organisms/role-manager/role-manager.component.mjs +5 -5
- 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/transfer-ownership-modal/transfer-ownership-modal.component.mjs +5 -5
- package/esm2022/lib/components/templates/page-content/page-content.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 +117 -117
- 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
|
@@ -326,7 +326,7 @@ export class RoleManagerComponent {
|
|
|
326
326
|
{{ t('save') }}
|
|
327
327
|
}
|
|
328
328
|
</ion-button>
|
|
329
|
-
<ion-button type="button" fill="clear" size="small" color="
|
|
329
|
+
<ion-button type="button" fill="clear" size="small" color="dark" (click)="closeRoleForm()">
|
|
330
330
|
{{ t('cancel') }}
|
|
331
331
|
</ion-button>
|
|
332
332
|
</div>
|
|
@@ -392,7 +392,7 @@ export class RoleManagerComponent {
|
|
|
392
392
|
}
|
|
393
393
|
</ion-list>
|
|
394
394
|
<div class="rm-sheet-footer">
|
|
395
|
-
<ion-button fill="clear" color="
|
|
395
|
+
<ion-button fill="clear" color="dark" expand="block" (click)="closeRoleSelector()">
|
|
396
396
|
{{ t('cancel') }}
|
|
397
397
|
</ion-button>
|
|
398
398
|
</div>
|
|
@@ -532,7 +532,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
532
532
|
{{ t('save') }}
|
|
533
533
|
}
|
|
534
534
|
</ion-button>
|
|
535
|
-
<ion-button type="button" fill="clear" size="small" color="
|
|
535
|
+
<ion-button type="button" fill="clear" size="small" color="dark" (click)="closeRoleForm()">
|
|
536
536
|
{{ t('cancel') }}
|
|
537
537
|
</ion-button>
|
|
538
538
|
</div>
|
|
@@ -598,7 +598,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
598
598
|
}
|
|
599
599
|
</ion-list>
|
|
600
600
|
<div class="rm-sheet-footer">
|
|
601
|
-
<ion-button fill="clear" color="
|
|
601
|
+
<ion-button fill="clear" color="dark" expand="block" (click)="closeRoleSelector()">
|
|
602
602
|
{{ t('cancel') }}
|
|
603
603
|
</ion-button>
|
|
604
604
|
</div>
|
|
@@ -609,4 +609,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
609
609
|
}], ctorParameters: () => [], propDecorators: { config: [{
|
|
610
610
|
type: Input
|
|
611
611
|
}] } });
|
|
612
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS1tYW5hZ2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvcm9sZS1tYW5hZ2VyL3JvbGUtbWFuYWdlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekYsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUNMLFFBQVEsRUFDUixTQUFTLEVBQ1QsT0FBTyxFQUNQLE9BQU8sRUFDUCxRQUFRLEVBQ1IsT0FBTyxFQUNQLE9BQU8sRUFDUCxVQUFVLEdBQ1gsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFDTCxVQUFVLEVBQ1YsYUFBYSxFQUNiLFlBQVksRUFDWixhQUFhLEVBQ2Isc0JBQXNCLEVBQ3RCLGtCQUFrQixFQUNsQixnQkFBZ0IsR0FDakIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEUsT0FBTyxFQUFFLG1CQUFt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Ozs7Ozs7Ozs7OztHQTBMVDt3REE2S1EsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgZm9ya0pvaW4gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIElvbkJhZGdlLFxuICBJb25CdXR0b24sXG4gIElvbkljb24sXG4gIElvbkl0ZW0sXG4gIElvbkxhYmVsLFxuICBJb25MaXN0LFxuICBJb25Ob3RlLFxuICBJb25TcGlubmVyLFxufSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHtcbiAgYWRkT3V0bGluZSxcbiAgY3JlYXRlT3V0bGluZSxcbiAgdHJhc2hPdXRsaW5lLFxuICBwZXJzb25PdXRsaW5lLFxuICBzaGllbGRDaGVja21hcmtPdXRsaW5lLFxuICBjaGV2cm9uRG93bk91dGxpbmUsXG4gIGNoZXZyb25VcE91dGxpbmUsXG59IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2Rpc3BsYXkvZGlzcGxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90aXRsZS90aXRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGlsbENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9waWxsL3BpbGwuY29tcG9uZW50JztcbmltcG9ydCB7IEVtcHR5U3RhdGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvZW1wdHktc3RhdGUvZW1wdHktc3RhdGUuY29tcG9uZW50JztcblxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBWYWx0ZWNoRXJyb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZXJyb3JzL3ZhbHRlY2gtZXJyb3Iuc2VydmljZSc7XG5pbXBvcnQgeyBDb25maXJtYXRpb25EaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY29uZmlybWF0aW9uLWRpYWxvZy9jb25maXJtYXRpb24tZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmJhY1NlcnZpY2UsIFJiYWNPcmdNZW1iZXIsIFJiYWNSb2xlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcmJhYy9yYmFjLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3JnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL29yZy9vcmcuc2VydmljZSc7XG5pbXBvcnQgeyBPcmdSb2xlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvb3JnL3R5cGVzJztcbmltcG9ydCB7IFBlcm1pc3Npb25DYXRhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL29yZy9wZXJtaXNzaW9uLWNhdGFsb2cuc2VydmljZSc7XG5cbmltcG9ydCB7IFJPTEVfTUFOQUdFUl9JMThOIH0gZnJvbSAnLi9yb2xlLW1hbmFnZXIuaTE4bic7XG5pbXBvcnQgeyBSb2xlTWFuYWdlckNvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuXG5hZGRJY29ucyh7XG4gIGFkZE91dGxpbmUsXG4gIGNyZWF0ZU91dGxpbmUsXG4gIHRyYXNoT3V0bGluZSxcbiAgcGVyc29uT3V0bGluZSxcbiAgc2hpZWxkQ2hlY2ttYXJrT3V0bGluZSxcbiAgY2hldnJvbkRvd25PdXRsaW5lLFxuICBjaGV2cm9uVXBPdXRsaW5lLFxufSk7XG5cbmNvbnN0IERFRkFVTFRfTlMgPSAnU2V0dGluZ3MuUm9sZU1hbmFnZXInO1xuXG5pbnRlcmZhY2UgUm9sZUZvcm1TdGF0ZSB7XG4gIG9wZW46IGJvb2xlYW47XG4gIGVkaXRpbmc6IFJiYWNSb2xlIHwgbnVsbDtcbn1cblxuLyoqXG4gKiBgdmFsLXJvbGUtbWFuYWdlcmAg4oCUIGdlc3Rpw7NuIFJCQUMgZGUgbWllbWJyb3MgeSByb2xlcyBkZSBvcmdhbml6YWNpw7NuLlxuICpcbiAqIE11ZXN0cmEgZG9zIHNlY2Npb25lczpcbiAqIDEuICoqTWllbWJyb3MqKiDigJQgbGlzdGEgZGUgbWllbWJyb3MgY29uIHJvbGVzIGFzaWduYWRvcy4gUGVybWl0ZSBhc2lnbmFyIG9cbiAqICAgIHF1aXRhciB1biByb2wgYSBjYWRhIG1pZW1icm8gKHJlcXVpZXJlIGByYmFjOm1hbmFnZWApLlxuICogMi4gKipSb2xlcyoqIOKAlCBsaXN0YSBkZSByb2xlcyBjdXN0b20gZGUgbGEgb3JnLiBQZXJtaXRlIGNyZWFyLCBlZGl0YXIgeVxuICogICAgZWxpbWluYXIgcm9sZXMgcGVyc29uYWxpemFkb3MuXG4gKlxuICogTGVlIGVsIGBvcmdJZGAgYWN0aXZvIGRlbCBgQXV0aFNlcnZpY2VgLiBSZXF1aWVyZSBxdWUgZWwgdXN1YXJpbyB0ZW5nYVxuICogYHJiYWM6bWFuYWdlYCAoZWwgYmFja2VuZCBsbyB2ZXJpZmljYTsgdW4gNDAzIHNlIHRyYWR1Y2UgYSB1biBtZW5zYWplIGRlIGVycm9yKS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXJvbGUtbWFuYWdlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIElvbkxpc3QsXG4gICAgSW9uSXRlbSxcbiAgICBJb25MYWJlbCxcbiAgICBJb25CYWRnZSxcbiAgICBJb25CdXR0b24sXG4gICAgSW9uSWNvbixcbiAgICBJb25TcGlubmVyLFxuICAgIElvbk5vdGUsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIERpc3BsYXlDb21wb25lbnQsXG4gICAgVGl0bGVDb21wb25lbnQsXG4gICAgVGV4dENvbXBvbmVudCxcbiAgICBQaWxsQ29tcG9uZW50LFxuICAgIEVtcHR5U3RhdGVDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgQGlmIChsb2FkaW5nKCkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJybS1sb2FkaW5nXCI+XG4gICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgfSBAZWxzZSBpZiAobG9hZEVycm9yKCkpIHtcbiAgICAgIDx2YWwtZW1wdHktc3RhdGVcbiAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICB2YXJpYW50OiAnZXJyb3InLFxuICAgICAgICAgIHRpdGxlOiB0KCdlcnJvckxvYWQnKSxcbiAgICAgICAgICBhY3Rpb246IHsgbGFiZWw6IHQoJ3JldHJ5JyksIGhhbmRsZXI6IHJlbG9hZC5iaW5kKHRoaXMpLCBsb2FkaW5nOiBsb2FkaW5nKCkgfSxcbiAgICAgICAgfVwiXG4gICAgICAvPlxuICAgIH0gQGVsc2Uge1xuICAgICAgPCEtLSDilIDilIAgU2VjY2nDs24gTWllbWJyb3Mg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAIC0tPlxuICAgICAgQGlmIChjZmcoKS5zaG93TWVtYmVycyAhPT0gZmFsc2UpIHtcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJybS1zZWN0aW9uXCI+XG4gICAgICAgICAgPGhlYWRlciBjbGFzcz1cInJtLXNlY3Rpb25fX2hlYWRlclwiPlxuICAgICAgICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwieyBjb250ZW50OiB0KCdtZW1iZXJzVGl0bGUnKSwgc2l6ZTogJ21lZGl1bScsIGJvbGQ6IHRydWUsIGNvbG9yOiAnJyB9XCIgLz5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicm0tc2VjdGlvbl9fY291bnRcIj57eyBtZW1iZXJzKCkubGVuZ3RoIH19PC9zcGFuPlxuICAgICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgICAgQGlmIChtZW1iZXJzKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICA8dmFsLWVtcHR5LXN0YXRlIFtwcm9wc109XCJ7IHZhcmlhbnQ6ICdlbXB0eScsIHRpdGxlOiB0KCdub01lbWJlcnMnKSB9XCIgLz5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxpb24tbGlzdCBjbGFzcz1cInJtLWxpc3RcIiBsaW5lcz1cImZ1bGxcIj5cbiAgICAgICAgICAgICAgQGZvciAobWVtYmVyIG9mIG1lbWJlcnMoKTsgdHJhY2sgbWVtYmVyLnVzZXJJZCkge1xuICAgICAgICAgICAgICAgIDxpb24taXRlbSBjbGFzcz1cInJtLW1lbWJlci1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInBlcnNvbi1vdXRsaW5lXCIgc2xvdD1cInN0YXJ0XCIgY2xhc3M9XCJybS1tZW1iZXItaWNvblwiIC8+XG4gICAgICAgICAgICAgICAgICA8aW9uLWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm0tbWVtYmVyLW5hbWVcIj57eyBtZW1iZXIubmFtZSB8fCBtZW1iZXIuZW1haWwgfHwgbWVtYmVyLnVzZXJJZCB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBAaWYgKG1lbWJlci5uYW1lICYmIG1lbWJlci5lbWFpbCkge1xuICAgICAgICAgICAgICAgICAgICAgIDxpb24tbm90ZSBjbGFzcz1cInJtLW1lbWJlci1lbWFpbFwiPnt7IG1lbWJlci5lbWFpbCB9fTwvaW9uLW5vdGU+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJtLW1lbWJlci1yb2xlc1wiPlxuICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKHJvbGUgb2YgbWVtYmVyLnJvbGVzOyB0cmFjayByb2xlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8dmFsLXBpbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogcmVzb2x2ZVJvbGVEaXNwbGF5KHJvbGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBpc1N5c3RlbVJvbGUocm9sZSkgPyAncHJpbWFyeScgOiAnc2Vjb25kYXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAobWVtYmVyLnJvbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJybS1uby1yb2xlXCI+e3sgdCgnbm9Sb2xlQXNzaWduZWQnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8ZGl2IHNsb3Q9XCJlbmRcIiBjbGFzcz1cInJtLW1lbWJlci1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgZmlsbD1cImNsZWFyXCJcbiAgICAgICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuUm9sZVNlbGVjdG9yKG1lbWJlcilcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwZW5kaW5nTWVtYmVyKCkgPT09IG1lbWJlci51c2VySWRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChwZW5kaW5nTWVtYmVyKCkgPT09IG1lbWJlci51c2VySWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAge3sgdCgnYXNzaWduUm9sZScpIH19XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2lvbi1saXN0PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfVxuXG4gICAgICA8IS0tIOKUgOKUgCBTZWNjacOzbiBSb2xlcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgLS0+XG4gICAgICBAaWYgKGNmZygpLnNob3dSb2xlTWFuYWdlbWVudCAhPT0gZmFsc2UpIHtcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJybS1zZWN0aW9uXCI+XG4gICAgICAgICAgPGhlYWRlciBjbGFzcz1cInJtLXNlY3Rpb25fX2hlYWRlclwiPlxuICAgICAgICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwieyBjb250ZW50OiB0KCdyb2xlc1RpdGxlJyksIHNpemU6ICdtZWRpdW0nLCBib2xkOiB0cnVlLCBjb2xvcjogJycgfVwiIC8+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJtLXNlY3Rpb25fX2NvdW50XCI+e3sgYWxsUm9sZXMoKS5sZW5ndGggfX08L3NwYW4+XG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwiY2xlYXJcIiBzaXplPVwic21hbGxcIiBjbGFzcz1cInJtLWFkZC1idG5cIiAoY2xpY2spPVwib3Blbk5ld1JvbGUoKVwiPlxuICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImFkZC1vdXRsaW5lXCIgc2xvdD1cInN0YXJ0XCIgLz5cbiAgICAgICAgICAgICAge3sgdCgnYWRkUm9sZScpIH19XG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgICA8IS0tIOKUgOKUgCBGb3JtdWxhcmlvIGlubGluZSBkZSBjcmVhci9lZGl0YXIgcm9sIOKUgOKUgOKUgOKUgCAtLT5cbiAgICAgICAgICBAaWYgKHJvbGVGb3JtKCkub3Blbikge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJtLXJvbGUtZm9ybVwiPlxuICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAobmdTdWJtaXQpPVwic2F2ZVJvbGUoKVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJybS1mb3JtLWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJybS1sYWJlbFwiPnt7IHQoJ3JvbGVOYW1lJykgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwicm0taW5wdXRcIiB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIiBbcGxhY2Vob2xkZXJdPVwidCgncm9sZU5hbWUnKVwiIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJtLWZvcm0tZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInJtLWxhYmVsXCI+e3sgdCgncm9sZURlc2NyaXB0aW9uJykgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm0taW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInQoJ3JvbGVEZXNjcmlwdGlvbicpXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJtLWZvcm0tYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgIHNoYXBlPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkIHx8IHNhdmluZygpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChzYXZpbmcoKSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIiAvPlxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICB7eyB0KCdzYXZlJykgfX1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiIGZpbGw9XCJjbGVhclwiIHNpemU9XCJzbWFsbFwiIGNvbG9yPVwibWVkaXVtXCIgKGNsaWNrKT1cImNsb3NlUm9sZUZvcm0oKVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyB0KCdjYW5jZWwnKSB9fVxuICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKGFsbFJvbGVzKCkubGVuZ3RoID09PSAwICYmICFyb2xlRm9ybSgpLm9wZW4pIHtcbiAgICAgICAgICAgIDx2YWwtZW1wdHktc3RhdGUgW3Byb3BzXT1cInsgdmFyaWFudDogJ2VtcHR5JywgdGl0bGU6IHQoJ25vUm9sZXMnKSB9XCIgLz5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8aW9uLWxpc3QgY2xhc3M9XCJybS1saXN0XCIgbGluZXM9XCJmdWxsXCI+XG4gICAgICAgICAgICBAZm9yIChyb2xlIG9mIGFsbFJvbGVzKCk7IHRyYWNrIHJvbGUuaWQpIHtcbiAgICAgICAgICAgICAgPGlvbi1pdGVtIGNsYXNzPVwicm0tcm9sZS1pdGVtXCI+XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJzaGllbGQtY2hlY2ttYXJrLW91dGxpbmVcIiBzbG90PVwic3RhcnRcIiBjbGFzcz1cInJtLXJvbGUtaWNvblwiIC8+XG4gICAgICAgICAgICAgICAgPGlvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJybS1yb2xlLW5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgcm9sZS5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIEBpZiAocm9sZS5pc1N5c3RlbSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxpb24tYmFkZ2UgY29sb3I9XCJwcmltYXJ5XCI+e3sgdCgnc3lzdGVtQmFkZ2UnKSB9fTwvaW9uLWJhZGdlPlxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWJhZGdlIGNvbG9yPVwic2Vjb25kYXJ5XCI+e3sgdCgnY3VzdG9tQmFkZ2UnKSB9fTwvaW9uLWJhZGdlPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIEBpZiAocm9sZS5kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgICAgICA8aW9uLW5vdGUgY2xhc3M9XCJybS1yb2xlLWRlc2NcIj57eyByb2xlLmRlc2NyaXB0aW9uIH19PC9pb24tbm90ZT5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDxpb24tbm90ZSBjbGFzcz1cInJtLXJvbGUtcGVybXNcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgcm9sZS5wZXJtaXNzaW9ucz8ubGVuZ3RoID8/IDAgfX0ge3sgdCgncGVybWlzc2lvbnMnKSB9fVxuICAgICAgICAgICAgICAgICAgPC9pb24tbm90ZT5cbiAgICAgICAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICBAaWYgKCFyb2xlLmlzU3lzdGVtKSB7XG4gICAgICAgICAgICAgICAgICA8ZGl2IHNsb3Q9XCJlbmRcIiBjbGFzcz1cInJtLXJvbGUtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwiY2xlYXJcIiBzaXplPVwic21hbGxcIiAoY2xpY2spPVwib3BlbkVkaXRSb2xlKHJvbGUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjcmVhdGUtb3V0bGluZVwiIHNsb3Q9XCJpY29uLW9ubHlcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIHNpemU9XCJzbWFsbFwiIGNvbG9yPVwiZGFuZ2VyXCIgKGNsaWNrKT1cImNvbmZpcm1EZWxldGVSb2xlKHJvbGUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJ0cmFzaC1vdXRsaW5lXCIgc2xvdD1cImljb24tb25seVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2lvbi1saXN0PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG4gICAgfVxuXG4gICAgPCEtLSDilIDilIAgUm9sZSBzZWxlY3RvciBzaGVldCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgLS0+XG4gICAgQGlmIChyb2xlU2VsZWN0b3JNZW1iZXIoKSkge1xuICAgICAgPGRpdiBjbGFzcz1cInJtLXJvbGUtb3ZlcmxheVwiIChjbGljayk9XCJjbG9zZVJvbGVTZWxlY3RvcigpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJybS1yb2xlLXNoZWV0XCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICAgIDx2YWwtdGl0bGUgW3Byb3BzXT1cInsgY29udGVudDogdCgnc2VsZWN0Um9sZScpLCBzaXplOiAnbWVkaXVtJywgYm9sZDogdHJ1ZSwgY29sb3I6ICcnIH1cIiAvPlxuICAgICAgICAgIDxpb24tbGlzdCBsaW5lcz1cImZ1bGxcIiBjbGFzcz1cInJtLXNoZWV0LWxpc3RcIj5cbiAgICAgICAgICAgIEBmb3IgKHJvbGUgb2YgYWxsUm9sZXMoKTsgdHJhY2sgcm9sZS5pZCkge1xuICAgICAgICAgICAgICA8aW9uLWl0ZW0gYnV0dG9uIGRldGFpbD1cImZhbHNlXCIgKGNsaWNrKT1cIm9uUm9sZVNlbGVjdGVkKHJvbGVTZWxlY3Rvck1lbWJlcigpISwgcm9sZS5uYW1lKVwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwic2hpZWxkLWNoZWNrbWFyay1vdXRsaW5lXCIgc2xvdD1cInN0YXJ0XCIgLz5cbiAgICAgICAgICAgICAgICA8aW9uLWxhYmVsPnt7IHJvbGUubmFtZSB9fTwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICAgIEBpZiAocm9sZVNlbGVjdG9yTWVtYmVyKCkhLnJvbGVzLmluY2x1ZGVzKHJvbGUubmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgIDxpb24tYmFkZ2UgY29sb3I9XCJwcmltYXJ5XCIgc2xvdD1cImVuZFwiPuKckzwvaW9uLWJhZGdlPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2lvbi1saXN0PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJybS1zaGVldC1mb290ZXJcIj5cbiAgICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwibWVkaXVtXCIgZXhwYW5kPVwiYmxvY2tcIiAoY2xpY2spPVwiY2xvc2VSb2xlU2VsZWN0b3IoKVwiPlxuICAgICAgICAgICAgICB7eyB0KCdjYW5jZWwnKSB9fVxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cblxuICAgICAgLnJtLWxvYWRpbmcge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogMnJlbSAwO1xuICAgICAgfVxuXG4gICAgICAucm0tc2VjdGlvbiB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDJyZW07XG4gICAgICB9XG5cbiAgICAgIC5ybS1zZWN0aW9uX19oZWFkZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTtcbiAgICAgIH1cblxuICAgICAgLnJtLXNlY3Rpb25fX2NvdW50IHtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItZGFyay10aW50LCAjZWVlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrLXNoYWRlLCAjNTU1KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAycHggOHB4O1xuICAgICAgfVxuXG4gICAgICAucm0tYWRkLWJ0biB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAgfVxuXG4gICAgICAucm0tbGlzdCB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jYXJkLWJhY2tncm91bmQsIHZhcigtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yKSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMDYpO1xuICAgICAgfVxuXG4gICAgICAucm0tbWVtYmVyLWl0ZW0sXG4gICAgICAucm0tcm9sZS1pdGVtIHtcbiAgICAgICAgLS1wYWRkaW5nLXN0YXJ0OiAxcmVtO1xuICAgICAgICAtLWlubmVyLXBhZGRpbmctZW5kOiAwLjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5ybS1tZW1iZXItaWNvbixcbiAgICAgIC5ybS1yb2xlLWljb24ge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmssICM5Mjk0OWMpO1xuICAgICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5ybS1tZW1iZXItbmFtZSxcbiAgICAgIC5ybS1yb2xlLW5hbWUge1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBmb250LXNpemU6IDAuOTM3NXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yKTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjM3NXJlbTtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgfVxuXG4gICAgICAucm0tbWVtYmVyLWVtYWlsLFxuICAgICAgLnJtLXJvbGUtZGVzYyxcbiAgICAgIC5ybS1yb2xlLXBlcm1zIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyaywgIzkyOTQ5Yyk7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW4tdG9wOiAycHg7XG4gICAgICB9XG5cbiAgICAgIC5ybS1tZW1iZXItcm9sZXMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBtYXJnaW4tdG9wOiA0cHg7XG4gICAgICB9XG5cbiAgICAgIC5ybS1uby1yb2xlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyaywgIzkyOTQ5Yyk7XG4gICAgICB9XG5cbiAgICAgIC5ybS1tZW1iZXItYWN0aW9ucyxcbiAgICAgIC5ybS1yb2xlLWFjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDJweDtcbiAgICAgIH1cblxuICAgICAgLyog4pSA4pSAIFJvbGUgZm9ybSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cbiAgICAgIC5ybS1yb2xlLWZvcm0ge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvcikpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtO1xuICAgICAgfVxuXG4gICAgICAucm0tZm9ybS1maWVsZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAuNzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5ybS1sYWJlbCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrLXNoYWRlLCAjNTU1KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgfVxuXG4gICAgICAucm0taW5wdXQge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMC41cmVtIDAuNzVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4xMikpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45Mzc1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvcik7XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5ybS1pbnB1dDpmb2N1cyB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnksICMzODgwZmYpO1xuICAgICAgfVxuXG4gICAgICAucm0tZm9ybS1hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICAgIG1hcmdpbi10b3A6IDAuNXJlbTtcbiAgICAgIH1cblxuICAgICAgLyog4pSA4pSAIFJvbGUgc2VsZWN0b3Igb3ZlcmxheSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cbiAgICAgIC5ybS1yb2xlLW92ZXJsYXkge1xuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMzUpO1xuICAgICAgICB6LWluZGV4OiA1MDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5ybS1yb2xlLXNoZWV0IHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNhcmQtYmFja2dyb3VuZCwgdmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IpKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweCAxNnB4IDAgMDtcbiAgICAgICAgcGFkZGluZzogMS4yNXJlbSAxcmVtIDFyZW07XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXgtd2lkdGg6IDQ4MHB4O1xuICAgICAgICBtYXgtaGVpZ2h0OiA3MHZoO1xuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgfVxuXG4gICAgICAucm0tc2hlZXQtbGlzdCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDAuNzVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB9XG5cbiAgICAgIC5ybS1zaGVldC1mb290ZXIge1xuICAgICAgICBtYXJnaW4tdG9wOiAwLjVyZW07XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgUm9sZU1hbmFnZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBjb25maWc/OiBSb2xlTWFuYWdlckNvbmZpZztcblxuICBwcml2YXRlIHJlYWRvbmx5IGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGF1dGggPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJiYWMgPSBpbmplY3QoUmJhY1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IG9yZyA9IGluamVjdChPcmdTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjYXRhbG9nID0gaW5qZWN0KFBlcm1pc3Npb25DYXRhbG9nU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdG9hc3QgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBlcnJvcnMgPSBpbmplY3QoVmFsdGVjaEVycm9yU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlybSA9IGluamVjdChDb25maXJtYXRpb25EaWFsb2dTZXJ2aWNlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IG5zID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWc/LmkxOG5OYW1lc3BhY2UgPz8gREVGQVVMVF9OUyk7XG5cbiAgcmVhZG9ubHkgbG9hZGluZyA9IHNpZ25hbCh0cnVlKTtcbiAgcmVhZG9ubHkgc2F2aW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgbG9hZEVycm9yID0gc2lnbmFsPHVua25vd24gfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgbWVtYmVycyA9IHNpZ25hbDxSYmFjT3JnTWVtYmVyW10+KFtdKTtcbiAgcmVhZG9ubHkgYWxsUm9sZXMgPSBzaWduYWw8UmJhY1JvbGVbXT4oW10pO1xuICByZWFkb25seSBwZW5kaW5nTWVtYmVyID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICByZWFkb25seSByb2xlU2VsZWN0b3JNZW1iZXIgPSBzaWduYWw8UmJhY09yZ01lbWJlciB8IG51bGw+KG51bGwpO1xuICByZWFkb25seSByb2xlRm9ybSA9IHNpZ25hbDxSb2xlRm9ybVN0YXRlPih7IG9wZW46IGZhbHNlLCBlZGl0aW5nOiBudWxsIH0pO1xuXG4gIHJlYWRvbmx5IGZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICBuYW1lOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgIGRlc2NyaXB0aW9uOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICB9KTtcblxuICByZWFkb25seSBjZmcgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZyA/PyB7fSk7XG5cbiAgcHJpdmF0ZSBnZXQgb3JnSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hdXRoLnVzZXIoKT8uYWN0aXZlT3JnID8/ICcnO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgY29uc3QgbnMgPSBERUZBVUxUX05TO1xuICAgIGlmICghdGhpcy5pMThuLmhhc05hbWVzcGFjZShucykpIHtcbiAgICAgIHRoaXMuaTE4bi5yZWdpc3RlckNvbnRlbnQobnMsIFJPTEVfTUFOQUdFUl9JMThOKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMubG9hZCgpO1xuICB9XG5cbiAgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgdGhpcy5ucygpKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgb3JnSWQgPSB0aGlzLm9yZ0lkO1xuICAgIGlmICghb3JnSWQpIHJldHVybjtcbiAgICB0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMubG9hZEVycm9yLnNldChudWxsKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgW21lbWJlcnNSZXMsIHJvbGVzUmVzXSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICBmb3JrSm9pbihbdGhpcy5yYmFjLmdldE9yZ01lbWJlcnMob3JnSWQsIHsgbGltaXQ6IDUwIH0pLCB0aGlzLnJiYWMubGlzdFJvbGVzKG9yZ0lkLCB7IGxpbWl0OiAxMDAgfSldKVxuICAgICAgKTtcbiAgICAgIHRoaXMubWVtYmVycy5zZXQobWVtYmVyc1Jlcy5tZW1iZXJzKTtcbiAgICAgIHRoaXMuYWxsUm9sZXMuc2V0KHJvbGVzUmVzLnJvbGVzKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMubG9hZEVycm9yLnNldChlcnIpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICByZWxvYWQoKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLmxvYWQoKTtcbiAgfVxuXG4gIC8vIOKUgOKUgCBSb2xlIGxhYmVsIGhlbHBlcnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgcmVzb2x2ZVJvbGVEaXNwbGF5KHJvbGVOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGZvdW5kID0gdGhpcy5hbGxSb2xlcygpLmZpbmQociA9PiByLm5hbWUgPT09IHJvbGVOYW1lKTtcbiAgICByZXR1cm4gZm91bmQgPyBmb3VuZC5uYW1lIDogcm9sZU5hbWU7XG4gIH1cblxuICBpc1N5c3RlbVJvbGUocm9sZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFsbFJvbGVzKCkuZmluZChyID0+IHIubmFtZSA9PT0gcm9sZU5hbWUpPy5pc1N5c3RlbSA/PyBmYWxzZTtcbiAgfVxuXG4gIC8vIOKUgOKUgCBSb2xlIHNlbGVjdG9yIChhc3NpZ24vcmV2b2tlKSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuICBvcGVuUm9sZVNlbGVjdG9yKG1lbWJlcjogUmJhY09yZ01lbWJlcik6IHZvaWQge1xuICAgIHRoaXMucm9sZVNlbGVjdG9yTWVtYmVyLnNldChtZW1iZXIpO1xuICB9XG5cbiAgY2xvc2VSb2xlU2VsZWN0b3IoKTogdm9pZCB7XG4gICAgdGhpcy5yb2xlU2VsZWN0b3JNZW1iZXIuc2V0KG51bGwpO1xuICB9XG5cbiAgYXN5bmMgb25Sb2xlU2VsZWN0ZWQobWVtYmVyOiBSYmFjT3JnTWVtYmVyLCByb2xlTmFtZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jbG9zZVJvbGVTZWxlY3RvcigpO1xuICAgIGNvbnN0IG9yZ0lkID0gdGhpcy5vcmdJZDtcbiAgICBjb25zdCBhbHJlYWR5SGFzID0gbWVtYmVyLnJvbGVzLmluY2x1ZGVzKHJvbGVOYW1lKTtcbiAgICB0aGlzLnBlbmRpbmdNZW1iZXIuc2V0KG1lbWJlci51c2VySWQpO1xuICAgIHRyeSB7XG4gICAgICBpZiAoYWxyZWFkeUhhcykge1xuICAgICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnJiYWMucmV2b2tlUm9sZSh7IHVzZXJJZDogbWVtYmVyLnVzZXJJZCwgb3JnSWQsIHJvbGVOYW1lIH0pKTtcbiAgICAgICAgdGhpcy50b2FzdC5zaG93KHsgbWVzc2FnZTogdGhpcy50KCdyb2xlUmV2b2tlZCcpLCBjb2xvcjogJ2RhcmsnLCBkdXJhdGlvbjogMjAwMCB9KTtcbiAgICAgICAgdGhpcy5tZW1iZXJzLnVwZGF0ZShsaXN0ID0+XG4gICAgICAgICAgbGlzdC5tYXAobSA9PiAobS51c2VySWQgPT09IG1lbWJlci51c2VySWQgPyB7IC4uLm0sIHJvbGVzOiBtLnJvbGVzLmZpbHRlcihyID0+IHIgIT09IHJvbGVOYW1lKSB9IDogbSkpXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnJiYWMuYXNzaWduUm9sZSh7IHVzZXJJZDogbWVtYmVyLnVzZXJJZCwgb3JnSWQsIHJvbGVOYW1lIH0pKTtcbiAgICAgICAgdGhpcy50b2FzdC5zaG93KHsgbWVzc2FnZTogdGhpcy50KCdyb2xlQXNzaWduZWQnKSwgY29sb3I6ICdkYXJrJywgZHVyYXRpb246IDIwMDAgfSk7XG4gICAgICAgIHRoaXMubWVtYmVycy51cGRhdGUobGlzdCA9PlxuICAgICAgICAgIGxpc3QubWFwKG0gPT4gKG0udXNlcklkID09PSBtZW1iZXIudXNlcklkID8geyAuLi5tLCByb2xlczogWy4uLm0ucm9sZXMsIHJvbGVOYW1lXSB9IDogbSkpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmVycm9ycy5oYW5kbGUoZXJyLCB7XG4gICAgICAgIGNvbnRleHQ6ICdyb2xlLW1hbmFnZXIuYXNzaWduUmV2b2tlJyxcbiAgICAgICAgZmFsbGJhY2tLZXk6IGFscmVhZHlIYXMgPyAnZXJyb3JSZXZva2UnIDogJ2Vycm9yQXNzaWduJyxcbiAgICAgICAgaTE4bk5hbWVzcGFjZTogdGhpcy5ucygpLFxuICAgICAgfSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMucGVuZGluZ01lbWJlci5zZXQobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgLy8g4pSA4pSAIFJvbGUgQ1JVRCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuICBvcGVuTmV3Um9sZSgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm0ucmVzZXQoKTtcbiAgICB0aGlzLnJvbGVGb3JtLnNldCh7IG9wZW46IHRydWUsIGVkaXRpbmc6IG51bGwgfSk7XG4gIH1cblxuICBvcGVuRWRpdFJvbGUocm9sZTogUmJhY1JvbGUpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7IG5hbWU6IHJvbGUubmFtZSwgZGVzY3JpcHRpb246IHJvbGUuZGVzY3JpcHRpb24gPz8gJycgfSk7XG4gICAgdGhpcy5yb2xlRm9ybS5zZXQoeyBvcGVuOiB0cnVlLCBlZGl0aW5nOiByb2xlIH0pO1xuICB9XG5cbiAgY2xvc2VSb2xlRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLnJvbGVGb3JtLnNldCh7IG9wZW46IGZhbHNlLCBlZGl0aW5nOiBudWxsIH0pO1xuICAgIHRoaXMuZm9ybS5yZXNldCgpO1xuICB9XG5cbiAgYXN5bmMgc2F2ZVJvbGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkKSByZXR1cm47XG4gICAgY29uc3Qgb3JnSWQgPSB0aGlzLm9yZ0lkO1xuICAgIGNvbnN0IGVkaXRpbmcgPSB0aGlzLnJvbGVGb3JtKCkuZWRpdGluZztcbiAgICBjb25zdCBuYW1lID0gdGhpcy5mb3JtLnZhbHVlLm5hbWUhO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gdGhpcy5mb3JtLnZhbHVlLmRlc2NyaXB0aW9uID8/ICcnO1xuICAgIHRoaXMuc2F2aW5nLnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgaWYgKGVkaXRpbmcpIHtcbiAgICAgICAgY29uc3QgdXBkYXRlZCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMucmJhYy51cGRhdGVSb2xlKHsgb3JnSWQsIHJvbGVJZDogZWRpdGluZy5pZCwgbmFtZSwgZGVzY3JpcHRpb24gfSkpO1xuICAgICAgICB0aGlzLmFsbFJvbGVzLnVwZGF0ZShsaXN0ID0+IGxpc3QubWFwKHIgPT4gKHIuaWQgPT09IGVkaXRpbmcuaWQgPyB1cGRhdGVkIDogcikpKTtcbiAgICAgICAgdGhpcy50b2FzdC5zaG93KHsgbWVzc2FnZTogdGhpcy50KCdyb2xlVXBkYXRlZCcpLCBjb2xvcjogJ2RhcmsnLCBkdXJhdGlvbjogMjAwMCB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGNyZWF0ZWQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnJiYWMuY3JlYXRlUm9sZSh7IG9yZ0lkLCBuYW1lLCBkZXNjcmlwdGlvbiwgcGVybWlzc2lvbnM6IFtdIH0pKTtcbiAgICAgICAgdGhpcy5hbGxSb2xlcy51cGRhdGUobGlzdCA9PiBbLi4ubGlzdCwgY3JlYXRlZF0pO1xuICAgICAgICB0aGlzLnRvYXN0LnNob3coeyBtZXNzYWdlOiB0aGlzLnQoJ3JvbGVDcmVhdGVkJyksIGNvbG9yOiAnZGFyaycsIGR1cmF0aW9uOiAyMDAwIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5jbG9zZVJvbGVGb3JtKCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmVycm9ycy5oYW5kbGUoZXJyLCB7XG4gICAgICAgIGNvbnRleHQ6ICdyb2xlLW1hbmFnZXIuc2F2ZVJvbGUnLFxuICAgICAgICBmYWxsYmFja0tleTogJ2Vycm9yU2F2ZScsXG4gICAgICAgIGkxOG5OYW1lc3BhY2U6IHRoaXMubnMoKSxcbiAgICAgIH0pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnNhdmluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGNvbmZpcm1EZWxldGVSb2xlKHJvbGU6IFJiYWNSb2xlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBjb25maXJtZWQgfSA9IGF3YWl0IHRoaXMuY29uZmlybS5jb25maXJtRGVzdHJ1Y3RpdmUoe1xuICAgICAgdGl0bGU6IHJvbGUubmFtZSxcbiAgICAgIG1lc3NhZ2U6IHRoaXMudCgnZGVsZXRlUm9sZUNvbmZpcm0nKSxcbiAgICAgIGNvbmZpcm1CdXR0b246IHsgdGV4dDogdGhpcy50KCdkZWxldGVSb2xlQ29uZmlybUJ0bicpIH0sXG4gICAgfSk7XG4gICAgaWYgKCFjb25maXJtZWQpIHJldHVybjtcbiAgICBjb25zdCBvcmdJZCA9IHRoaXMub3JnSWQ7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMucmJhYy5kZWxldGVSb2xlKHsgb3JnSWQsIHJvbGVJZDogcm9sZS5pZCB9KSk7XG4gICAgICB0aGlzLmFsbFJvbGVzLnVwZGF0ZShsaXN0ID0+IGxpc3QuZmlsdGVyKHIgPT4gci5pZCAhPT0gcm9sZS5pZCkpO1xuICAgICAgdGhpcy50b2FzdC5zaG93KHsgbWVzc2FnZTogdGhpcy50KCdyb2xlRGVsZXRlZCcpLCBjb2xvcjogJ2RhcmsnLCBkdXJhdGlvbjogMjAwMCB9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuZXJyb3JzLmhhbmRsZShlcnIsIHtcbiAgICAgICAgY29udGV4dDogJ3JvbGUtbWFuYWdlci5kZWxldGVSb2xlJyxcbiAgICAgICAgZmFsbGJhY2tLZXk6ICdlcnJvckRlbGV0ZScsXG4gICAgICAgIGkxOG5OYW1lc3BhY2U6IHRoaXMubnMoKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
612
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS1tYW5hZ2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvcm9sZS1tYW5hZ2VyL3JvbGUtbWFuYWdlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekYsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUNMLFFBQVEsRUFDUixTQUFTLEVBQ1QsT0FBTyxFQUNQLE9BQU8sRUFDUCxRQUFRLEVBQ1IsT0FBTyxFQUNQLE9BQU8sRUFDUCxVQUFVLEdBQ1gsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFDTCxVQUFVLEVBQ1YsYUFBYSxFQUNiLFlBQVksRUFDWixhQUFhLEVBQ2Isc0JBQXNCLEVBQ3RCLGtCQUFrQixFQUNsQixnQkFBZ0IsR0FDakIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEUsT0FBTyxFQUFFLG1CQUFt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Ozs7Ozs7Ozs7OztHQTBMVDt3REE2S1EsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgZm9ya0pvaW4gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIElvbkJhZGdlLFxuICBJb25CdXR0b24sXG4gIElvbkljb24sXG4gIElvbkl0ZW0sXG4gIElvbkxhYmVsLFxuICBJb25MaXN0LFxuICBJb25Ob3RlLFxuICBJb25TcGlubmVyLFxufSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHtcbiAgYWRkT3V0bGluZSxcbiAgY3JlYXRlT3V0bGluZSxcbiAgdHJhc2hPdXRsaW5lLFxuICBwZXJzb25PdXRsaW5lLFxuICBzaGllbGRDaGVja21hcmtPdXRsaW5lLFxuICBjaGV2cm9uRG93bk91dGxpbmUsXG4gIGNoZXZyb25VcE91dGxpbmUsXG59IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2Rpc3BsYXkvZGlzcGxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90aXRsZS90aXRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGlsbENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9waWxsL3BpbGwuY29tcG9uZW50JztcbmltcG9ydCB7IEVtcHR5U3RhdGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvZW1wdHktc3RhdGUvZW1wdHktc3RhdGUuY29tcG9uZW50JztcblxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBWYWx0ZWNoRXJyb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZXJyb3JzL3ZhbHRlY2gtZXJyb3Iuc2VydmljZSc7XG5pbXBvcnQgeyBDb25maXJtYXRpb25EaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY29uZmlybWF0aW9uLWRpYWxvZy9jb25maXJtYXRpb24tZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmJhY1NlcnZpY2UsIFJiYWNPcmdNZW1iZXIsIFJiYWNSb2xlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcmJhYy9yYmFjLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3JnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL29yZy9vcmcuc2VydmljZSc7XG5pbXBvcnQgeyBPcmdSb2xlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvb3JnL3R5cGVzJztcbmltcG9ydCB7IFBlcm1pc3Npb25DYXRhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL29yZy9wZXJtaXNzaW9uLWNhdGFsb2cuc2VydmljZSc7XG5cbmltcG9ydCB7IFJPTEVfTUFOQUdFUl9JMThOIH0gZnJvbSAnLi9yb2xlLW1hbmFnZXIuaTE4bic7XG5pbXBvcnQgeyBSb2xlTWFuYWdlckNvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuXG5hZGRJY29ucyh7XG4gIGFkZE91dGxpbmUsXG4gIGNyZWF0ZU91dGxpbmUsXG4gIHRyYXNoT3V0bGluZSxcbiAgcGVyc29uT3V0bGluZSxcbiAgc2hpZWxkQ2hlY2ttYXJrT3V0bGluZSxcbiAgY2hldnJvbkRvd25PdXRsaW5lLFxuICBjaGV2cm9uVXBPdXRsaW5lLFxufSk7XG5cbmNvbnN0IERFRkFVTFRfTlMgPSAnU2V0dGluZ3MuUm9sZU1hbmFnZXInO1xuXG5pbnRlcmZhY2UgUm9sZUZvcm1TdGF0ZSB7XG4gIG9wZW46IGJvb2xlYW47XG4gIGVkaXRpbmc6IFJiYWNSb2xlIHwgbnVsbDtcbn1cblxuLyoqXG4gKiBgdmFsLXJvbGUtbWFuYWdlcmAg4oCUIGdlc3Rpw7NuIFJCQUMgZGUgbWllbWJyb3MgeSByb2xlcyBkZSBvcmdhbml6YWNpw7NuLlxuICpcbiAqIE11ZXN0cmEgZG9zIHNlY2Npb25lczpcbiAqIDEuICoqTWllbWJyb3MqKiDigJQgbGlzdGEgZGUgbWllbWJyb3MgY29uIHJvbGVzIGFzaWduYWRvcy4gUGVybWl0ZSBhc2lnbmFyIG9cbiAqICAgIHF1aXRhciB1biByb2wgYSBjYWRhIG1pZW1icm8gKHJlcXVpZXJlIGByYmFjOm1hbmFnZWApLlxuICogMi4gKipSb2xlcyoqIOKAlCBsaXN0YSBkZSByb2xlcyBjdXN0b20gZGUgbGEgb3JnLiBQZXJtaXRlIGNyZWFyLCBlZGl0YXIgeVxuICogICAgZWxpbWluYXIgcm9sZXMgcGVyc29uYWxpemFkb3MuXG4gKlxuICogTGVlIGVsIGBvcmdJZGAgYWN0aXZvIGRlbCBgQXV0aFNlcnZpY2VgLiBSZXF1aWVyZSBxdWUgZWwgdXN1YXJpbyB0ZW5nYVxuICogYHJiYWM6bWFuYWdlYCAoZWwgYmFja2VuZCBsbyB2ZXJpZmljYTsgdW4gNDAzIHNlIHRyYWR1Y2UgYSB1biBtZW5zYWplIGRlIGVycm9yKS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXJvbGUtbWFuYWdlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIElvbkxpc3QsXG4gICAgSW9uSXRlbSxcbiAgICBJb25MYWJlbCxcbiAgICBJb25CYWRnZSxcbiAgICBJb25CdXR0b24sXG4gICAgSW9uSWNvbixcbiAgICBJb25TcGlubmVyLFxuICAgIElvbk5vdGUsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIERpc3BsYXlDb21wb25lbnQsXG4gICAgVGl0bGVDb21wb25lbnQsXG4gICAgVGV4dENvbXBvbmVudCxcbiAgICBQaWxsQ29tcG9uZW50LFxuICAgIEVtcHR5U3RhdGVDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgQGlmIChsb2FkaW5nKCkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJybS1sb2FkaW5nXCI+XG4gICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgfSBAZWxzZSBpZiAobG9hZEVycm9yKCkpIHtcbiAgICAgIDx2YWwtZW1wdHktc3RhdGVcbiAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICB2YXJpYW50OiAnZXJyb3InLFxuICAgICAgICAgIHRpdGxlOiB0KCdlcnJvckxvYWQnKSxcbiAgICAgICAgICBhY3Rpb246IHsgbGFiZWw6IHQoJ3JldHJ5JyksIGhhbmRsZXI6IHJlbG9hZC5iaW5kKHRoaXMpLCBsb2FkaW5nOiBsb2FkaW5nKCkgfSxcbiAgICAgICAgfVwiXG4gICAgICAvPlxuICAgIH0gQGVsc2Uge1xuICAgICAgPCEtLSDilIDilIAgU2VjY2nDs24gTWllbWJyb3Mg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAIC0tPlxuICAgICAgQGlmIChjZmcoKS5zaG93TWVtYmVycyAhPT0gZmFsc2UpIHtcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJybS1zZWN0aW9uXCI+XG4gICAgICAgICAgPGhlYWRlciBjbGFzcz1cInJtLXNlY3Rpb25fX2hlYWRlclwiPlxuICAgICAgICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwieyBjb250ZW50OiB0KCdtZW1iZXJzVGl0bGUnKSwgc2l6ZTogJ21lZGl1bScsIGJvbGQ6IHRydWUsIGNvbG9yOiAnJyB9XCIgLz5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicm0tc2VjdGlvbl9fY291bnRcIj57eyBtZW1iZXJzKCkubGVuZ3RoIH19PC9zcGFuPlxuICAgICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgICAgQGlmIChtZW1iZXJzKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICA8dmFsLWVtcHR5LXN0YXRlIFtwcm9wc109XCJ7IHZhcmlhbnQ6ICdlbXB0eScsIHRpdGxlOiB0KCdub01lbWJlcnMnKSB9XCIgLz5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxpb24tbGlzdCBjbGFzcz1cInJtLWxpc3RcIiBsaW5lcz1cImZ1bGxcIj5cbiAgICAgICAgICAgICAgQGZvciAobWVtYmVyIG9mIG1lbWJlcnMoKTsgdHJhY2sgbWVtYmVyLnVzZXJJZCkge1xuICAgICAgICAgICAgICAgIDxpb24taXRlbSBjbGFzcz1cInJtLW1lbWJlci1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInBlcnNvbi1vdXRsaW5lXCIgc2xvdD1cInN0YXJ0XCIgY2xhc3M9XCJybS1tZW1iZXItaWNvblwiIC8+XG4gICAgICAgICAgICAgICAgICA8aW9uLWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm0tbWVtYmVyLW5hbWVcIj57eyBtZW1iZXIubmFtZSB8fCBtZW1iZXIuZW1haWwgfHwgbWVtYmVyLnVzZXJJZCB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBAaWYgKG1lbWJlci5uYW1lICYmIG1lbWJlci5lbWFpbCkge1xuICAgICAgICAgICAgICAgICAgICAgIDxpb24tbm90ZSBjbGFzcz1cInJtLW1lbWJlci1lbWFpbFwiPnt7IG1lbWJlci5lbWFpbCB9fTwvaW9uLW5vdGU+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJtLW1lbWJlci1yb2xlc1wiPlxuICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKHJvbGUgb2YgbWVtYmVyLnJvbGVzOyB0cmFjayByb2xlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8dmFsLXBpbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogcmVzb2x2ZVJvbGVEaXNwbGF5KHJvbGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBpc1N5c3RlbVJvbGUocm9sZSkgPyAncHJpbWFyeScgOiAnc2Vjb25kYXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAobWVtYmVyLnJvbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJybS1uby1yb2xlXCI+e3sgdCgnbm9Sb2xlQXNzaWduZWQnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8ZGl2IHNsb3Q9XCJlbmRcIiBjbGFzcz1cInJtLW1lbWJlci1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgZmlsbD1cImNsZWFyXCJcbiAgICAgICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuUm9sZVNlbGVjdG9yKG1lbWJlcilcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwZW5kaW5nTWVtYmVyKCkgPT09IG1lbWJlci51c2VySWRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChwZW5kaW5nTWVtYmVyKCkgPT09IG1lbWJlci51c2VySWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAge3sgdCgnYXNzaWduUm9sZScpIH19XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2lvbi1saXN0PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfVxuXG4gICAgICA8IS0tIOKUgOKUgCBTZWNjacOzbiBSb2xlcyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgLS0+XG4gICAgICBAaWYgKGNmZygpLnNob3dSb2xlTWFuYWdlbWVudCAhPT0gZmFsc2UpIHtcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJybS1zZWN0aW9uXCI+XG4gICAgICAgICAgPGhlYWRlciBjbGFzcz1cInJtLXNlY3Rpb25fX2hlYWRlclwiPlxuICAgICAgICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwieyBjb250ZW50OiB0KCdyb2xlc1RpdGxlJyksIHNpemU6ICdtZWRpdW0nLCBib2xkOiB0cnVlLCBjb2xvcjogJycgfVwiIC8+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJtLXNlY3Rpb25fX2NvdW50XCI+e3sgYWxsUm9sZXMoKS5sZW5ndGggfX08L3NwYW4+XG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwiY2xlYXJcIiBzaXplPVwic21hbGxcIiBjbGFzcz1cInJtLWFkZC1idG5cIiAoY2xpY2spPVwib3Blbk5ld1JvbGUoKVwiPlxuICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImFkZC1vdXRsaW5lXCIgc2xvdD1cInN0YXJ0XCIgLz5cbiAgICAgICAgICAgICAge3sgdCgnYWRkUm9sZScpIH19XG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgICA8IS0tIOKUgOKUgCBGb3JtdWxhcmlvIGlubGluZSBkZSBjcmVhci9lZGl0YXIgcm9sIOKUgOKUgOKUgOKUgCAtLT5cbiAgICAgICAgICBAaWYgKHJvbGVGb3JtKCkub3Blbikge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJtLXJvbGUtZm9ybVwiPlxuICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAobmdTdWJtaXQpPVwic2F2ZVJvbGUoKVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJybS1mb3JtLWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJybS1sYWJlbFwiPnt7IHQoJ3JvbGVOYW1lJykgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwicm0taW5wdXRcIiB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIiBbcGxhY2Vob2xkZXJdPVwidCgncm9sZU5hbWUnKVwiIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJtLWZvcm0tZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInJtLWxhYmVsXCI+e3sgdCgncm9sZURlc2NyaXB0aW9uJykgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm0taW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInQoJ3JvbGVEZXNjcmlwdGlvbicpXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJtLWZvcm0tYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgIHNoYXBlPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkIHx8IHNhdmluZygpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChzYXZpbmcoKSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIiAvPlxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICB7eyB0KCdzYXZlJykgfX1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiIGZpbGw9XCJjbGVhclwiIHNpemU9XCJzbWFsbFwiIGNvbG9yPVwiZGFya1wiIChjbGljayk9XCJjbG9zZVJvbGVGb3JtKClcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgdCgnY2FuY2VsJykgfX1cbiAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChhbGxSb2xlcygpLmxlbmd0aCA9PT0gMCAmJiAhcm9sZUZvcm0oKS5vcGVuKSB7XG4gICAgICAgICAgICA8dmFsLWVtcHR5LXN0YXRlIFtwcm9wc109XCJ7IHZhcmlhbnQ6ICdlbXB0eScsIHRpdGxlOiB0KCdub1JvbGVzJykgfVwiIC8+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPGlvbi1saXN0IGNsYXNzPVwicm0tbGlzdFwiIGxpbmVzPVwiZnVsbFwiPlxuICAgICAgICAgICAgQGZvciAocm9sZSBvZiBhbGxSb2xlcygpOyB0cmFjayByb2xlLmlkKSB7XG4gICAgICAgICAgICAgIDxpb24taXRlbSBjbGFzcz1cInJtLXJvbGUtaXRlbVwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwic2hpZWxkLWNoZWNrbWFyay1vdXRsaW5lXCIgc2xvdD1cInN0YXJ0XCIgY2xhc3M9XCJybS1yb2xlLWljb25cIiAvPlxuICAgICAgICAgICAgICAgIDxpb24tbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm0tcm9sZS1uYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHJvbGUubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICBAaWYgKHJvbGUuaXNTeXN0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWJhZGdlIGNvbG9yPVwicHJpbWFyeVwiPnt7IHQoJ3N5c3RlbUJhZGdlJykgfX08L2lvbi1iYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1iYWRnZSBjb2xvcj1cInNlY29uZGFyeVwiPnt7IHQoJ2N1c3RvbUJhZGdlJykgfX08L2lvbi1iYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICBAaWYgKHJvbGUuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1ub3RlIGNsYXNzPVwicm0tcm9sZS1kZXNjXCI+e3sgcm9sZS5kZXNjcmlwdGlvbiB9fTwvaW9uLW5vdGU+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8aW9uLW5vdGUgY2xhc3M9XCJybS1yb2xlLXBlcm1zXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHJvbGUucGVybWlzc2lvbnM/Lmxlbmd0aCA/PyAwIH19IHt7IHQoJ3Blcm1pc3Npb25zJykgfX1cbiAgICAgICAgICAgICAgICAgIDwvaW9uLW5vdGU+XG4gICAgICAgICAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgICAgQGlmICghcm9sZS5pc1N5c3RlbSkge1xuICAgICAgICAgICAgICAgICAgPGRpdiBzbG90PVwiZW5kXCIgY2xhc3M9XCJybS1yb2xlLWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cImNsZWFyXCIgc2l6ZT1cInNtYWxsXCIgKGNsaWNrKT1cIm9wZW5FZGl0Um9sZShyb2xlKVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY3JlYXRlLW91dGxpbmVcIiBzbG90PVwiaWNvbi1vbmx5XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwiY2xlYXJcIiBzaXplPVwic21hbGxcIiBjb2xvcj1cImRhbmdlclwiIChjbGljayk9XCJjb25maXJtRGVsZXRlUm9sZShyb2xlKVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidHJhc2gtb3V0bGluZVwiIHNsb3Q9XCJpY29uLW9ubHlcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9pb24tbGlzdD5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfVxuICAgIH1cblxuICAgIDwhLS0g4pSA4pSAIFJvbGUgc2VsZWN0b3Igc2hlZXQg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAIC0tPlxuICAgIEBpZiAocm9sZVNlbGVjdG9yTWVtYmVyKCkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJybS1yb2xlLW92ZXJsYXlcIiAoY2xpY2spPVwiY2xvc2VSb2xlU2VsZWN0b3IoKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm0tcm9sZS1zaGVldFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgICA8dmFsLXRpdGxlIFtwcm9wc109XCJ7IGNvbnRlbnQ6IHQoJ3NlbGVjdFJvbGUnKSwgc2l6ZTogJ21lZGl1bScsIGJvbGQ6IHRydWUsIGNvbG9yOiAnJyB9XCIgLz5cbiAgICAgICAgICA8aW9uLWxpc3QgbGluZXM9XCJmdWxsXCIgY2xhc3M9XCJybS1zaGVldC1saXN0XCI+XG4gICAgICAgICAgICBAZm9yIChyb2xlIG9mIGFsbFJvbGVzKCk7IHRyYWNrIHJvbGUuaWQpIHtcbiAgICAgICAgICAgICAgPGlvbi1pdGVtIGJ1dHRvbiBkZXRhaWw9XCJmYWxzZVwiIChjbGljayk9XCJvblJvbGVTZWxlY3RlZChyb2xlU2VsZWN0b3JNZW1iZXIoKSEsIHJvbGUubmFtZSlcIj5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInNoaWVsZC1jaGVja21hcmstb3V0bGluZVwiIHNsb3Q9XCJzdGFydFwiIC8+XG4gICAgICAgICAgICAgICAgPGlvbi1sYWJlbD57eyByb2xlLm5hbWUgfX08L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICBAaWYgKHJvbGVTZWxlY3Rvck1lbWJlcigpIS5yb2xlcy5pbmNsdWRlcyhyb2xlLm5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICA8aW9uLWJhZGdlIGNvbG9yPVwicHJpbWFyeVwiIHNsb3Q9XCJlbmRcIj7inJM8L2lvbi1iYWRnZT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9pb24tbGlzdD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm0tc2hlZXQtZm9vdGVyXCI+XG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwiY2xlYXJcIiBjb2xvcj1cImRhcmtcIiBleHBhbmQ9XCJibG9ja1wiIChjbGljayk9XCJjbG9zZVJvbGVTZWxlY3RvcigpXCI+XG4gICAgICAgICAgICAgIHt7IHQoJ2NhbmNlbCcpIH19XG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgfVxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuXG4gICAgICAucm0tbG9hZGluZyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiAycmVtIDA7XG4gICAgICB9XG5cbiAgICAgIC5ybS1zZWN0aW9uIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMnJlbTtcbiAgICAgIH1cblxuICAgICAgLnJtLXNlY3Rpb25fX2hlYWRlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC41cmVtO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtO1xuICAgICAgfVxuXG4gICAgICAucm0tc2VjdGlvbl9fY291bnQge1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1kYXJrLXRpbnQsICNlZWUpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmstc2hhZGUsICM1NTUpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDJweCA4cHg7XG4gICAgICB9XG5cbiAgICAgIC5ybS1hZGQtYnRuIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgICB9XG5cbiAgICAgIC5ybS1saXN0IHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNhcmQtYmFja2dyb3VuZCwgdmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IpKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggNHB4IHJnYmEoMCwgMCwgMCwgMC4wNik7XG4gICAgICB9XG5cbiAgICAgIC5ybS1tZW1iZXItaXRlbSxcbiAgICAgIC5ybS1yb2xlLWl0ZW0ge1xuICAgICAgICAtLXBhZGRpbmctc3RhcnQ6IDFyZW07XG4gICAgICAgIC0taW5uZXItcGFkZGluZy1lbmQ6IDAuNXJlbTtcbiAgICAgIH1cblxuICAgICAgLnJtLW1lbWJlci1pY29uLFxuICAgICAgLnJtLXJvbGUtaWNvbiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyaywgIzkyOTQ5Yyk7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgICAgIH1cblxuICAgICAgLnJtLW1lbWJlci1uYW1lLFxuICAgICAgLnJtLXJvbGUtbmFtZSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45Mzc1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IpO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuMzc1cmVtO1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICB9XG5cbiAgICAgIC5ybS1tZW1iZXItZW1haWwsXG4gICAgICAucm0tcm9sZS1kZXNjLFxuICAgICAgLnJtLXJvbGUtcGVybXMge1xuICAgICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrLCAjOTI5NDljKTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbi10b3A6IDJweDtcbiAgICAgIH1cblxuICAgICAgLnJtLW1lbWJlci1yb2xlcyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgZ2FwOiA0cHg7XG4gICAgICAgIG1hcmdpbi10b3A6IDRweDtcbiAgICAgIH1cblxuICAgICAgLnJtLW5vLXJvbGUge1xuICAgICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrLCAjOTI5NDljKTtcbiAgICAgIH1cblxuICAgICAgLnJtLW1lbWJlci1hY3Rpb25zLFxuICAgICAgLnJtLXJvbGUtYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMnB4O1xuICAgICAgfVxuXG4gICAgICAvKiDilIDilIAgUm9sZSBmb3JtIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuICAgICAgLnJtLXJvbGUtZm9ybSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jYXJkLWJhY2tncm91bmQsIHZhcigtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yKSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4xKSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAuNzVyZW07XG4gICAgICB9XG5cbiAgICAgIC5ybS1mb3JtLWZpZWxkIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTtcbiAgICAgIH1cblxuICAgICAgLnJtLWxhYmVsIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmstc2hhZGUsICM1NTUpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICB9XG5cbiAgICAgIC5ybS1pbnB1dCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBwYWRkaW5nOiAwLjVyZW0gMC43NXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0taW9uLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjEyKSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgZm9udC1zaXplOiAwLjkzNzVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvcik7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yKTtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLnJtLWlucHV0OmZvY3VzIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSwgIzM4ODBmZik7XG4gICAgICB9XG5cbiAgICAgIC5ybS1mb3JtLWFjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgICAgbWFyZ2luLXRvcDogMC41cmVtO1xuICAgICAgfVxuXG4gICAgICAvKiDilIDilIAgUm9sZSBzZWxlY3RvciBvdmVybGF5IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuICAgICAgLnJtLXJvbGUtb3ZlcmxheSB7XG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgaW5zZXQ6IDA7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4zNSk7XG4gICAgICAgIHotaW5kZXg6IDUwMDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgLnJtLXJvbGUtc2hlZXQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvcikpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxNnB4IDE2cHggMCAwO1xuICAgICAgICBwYWRkaW5nOiAxLjI1cmVtIDFyZW0gMXJlbTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1heC13aWR0aDogNDgwcHg7XG4gICAgICAgIG1heC1oZWlnaHQ6IDcwdmg7XG4gICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICB9XG5cbiAgICAgIC5ybS1zaGVldC1saXN0IHtcbiAgICAgICAgbWFyZ2luLXRvcDogMC43NXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cblxuICAgICAgLnJtLXNoZWV0LWZvb3RlciB7XG4gICAgICAgIG1hcmdpbi10b3A6IDAuNXJlbTtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBSb2xlTWFuYWdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGNvbmZpZz86IFJvbGVNYW5hZ2VyQ29uZmlnO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXV0aCA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmJhYyA9IGluamVjdChSYmFjU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3JnID0gaW5qZWN0KE9yZ1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNhdGFsb2cgPSBpbmplY3QoUGVybWlzc2lvbkNhdGFsb2dTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0b2FzdCA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGVycm9ycyA9IGluamVjdChWYWx0ZWNoRXJyb3JTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maXJtID0gaW5qZWN0KENvbmZpcm1hdGlvbkRpYWxvZ1NlcnZpY2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbnMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZz8uaTE4bk5hbWVzcGFjZSA/PyBERUZBVUxUX05TKTtcblxuICByZWFkb25seSBsb2FkaW5nID0gc2lnbmFsKHRydWUpO1xuICByZWFkb25seSBzYXZpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBsb2FkRXJyb3IgPSBzaWduYWw8dW5rbm93biB8IG51bGw+KG51bGwpO1xuICByZWFkb25seSBtZW1iZXJzID0gc2lnbmFsPFJiYWNPcmdNZW1iZXJbXT4oW10pO1xuICByZWFkb25seSBhbGxSb2xlcyA9IHNpZ25hbDxSYmFjUm9sZVtdPihbXSk7XG4gIHJlYWRvbmx5IHBlbmRpbmdNZW1iZXIgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IHJvbGVTZWxlY3Rvck1lbWJlciA9IHNpZ25hbDxSYmFjT3JnTWVtYmVyIHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IHJvbGVGb3JtID0gc2lnbmFsPFJvbGVGb3JtU3RhdGU+KHsgb3BlbjogZmFsc2UsIGVkaXRpbmc6IG51bGwgfSk7XG5cbiAgcmVhZG9ubHkgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgIG5hbWU6IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgZGVzY3JpcHRpb246IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gIH0pO1xuXG4gIHJlYWRvbmx5IGNmZyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnID8/IHt9KTtcblxuICBwcml2YXRlIGdldCBvcmdJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmF1dGgudXNlcigpPy5hY3RpdmVPcmcgPz8gJyc7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBjb25zdCBucyA9IERFRkFVTFRfTlM7XG4gICAgaWYgKCF0aGlzLmkxOG4uaGFzTmFtZXNwYWNlKG5zKSkge1xuICAgICAgdGhpcy5pMThuLnJlZ2lzdGVyQ29udGVudChucywgUk9MRV9NQU5BR0VSX0kxOE4pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5sb2FkKCk7XG4gIH1cblxuICB0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCB0aGlzLm5zKCkpO1xuICB9XG5cbiAgYXN5bmMgbG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBvcmdJZCA9IHRoaXMub3JnSWQ7XG4gICAgaWYgKCFvcmdJZCkgcmV0dXJuO1xuICAgIHRoaXMubG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5sb2FkRXJyb3Iuc2V0KG51bGwpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBbbWVtYmVyc1Jlcywgcm9sZXNSZXNdID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgIGZvcmtKb2luKFt0aGlzLnJiYWMuZ2V0T3JnTWVtYmVycyhvcmdJZCwgeyBsaW1pdDogNTAgfSksIHRoaXMucmJhYy5saXN0Um9sZXMob3JnSWQsIHsgbGltaXQ6IDEwMCB9KV0pXG4gICAgICApO1xuICAgICAgdGhpcy5tZW1iZXJzLnNldChtZW1iZXJzUmVzLm1lbWJlcnMpO1xuICAgICAgdGhpcy5hbGxSb2xlcy5zZXQocm9sZXNSZXMucm9sZXMpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5sb2FkRXJyb3Iuc2V0KGVycik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHJlbG9hZCgpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMubG9hZCgpO1xuICB9XG5cbiAgLy8g4pSA4pSAIFJvbGUgbGFiZWwgaGVscGVycyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuICByZXNvbHZlUm9sZURpc3BsYXkocm9sZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZm91bmQgPSB0aGlzLmFsbFJvbGVzKCkuZmluZChyID0+IHIubmFtZSA9PT0gcm9sZU5hbWUpO1xuICAgIHJldHVybiBmb3VuZCA/IGZvdW5kLm5hbWUgOiByb2xlTmFtZTtcbiAgfVxuXG4gIGlzU3lzdGVtUm9sZShyb2xlTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYWxsUm9sZXMoKS5maW5kKHIgPT4gci5uYW1lID09PSByb2xlTmFtZSk/LmlzU3lzdGVtID8/IGZhbHNlO1xuICB9XG5cbiAgLy8g4pSA4pSAIFJvbGUgc2VsZWN0b3IgKGFzc2lnbi9yZXZva2UpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4gIG9wZW5Sb2xlU2VsZWN0b3IobWVtYmVyOiBSYmFjT3JnTWVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5yb2xlU2VsZWN0b3JNZW1iZXIuc2V0KG1lbWJlcik7XG4gIH1cblxuICBjbG9zZVJvbGVTZWxlY3RvcigpOiB2b2lkIHtcbiAgICB0aGlzLnJvbGVTZWxlY3Rvck1lbWJlci5zZXQobnVsbCk7XG4gIH1cblxuICBhc3luYyBvblJvbGVTZWxlY3RlZChtZW1iZXI6IFJiYWNPcmdNZW1iZXIsIHJvbGVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmNsb3NlUm9sZVNlbGVjdG9yKCk7XG4gICAgY29uc3Qgb3JnSWQgPSB0aGlzLm9yZ0lkO1xuICAgIGNvbnN0IGFscmVhZHlIYXMgPSBtZW1iZXIucm9sZXMuaW5jbHVkZXMocm9sZU5hbWUpO1xuICAgIHRoaXMucGVuZGluZ01lbWJlci5zZXQobWVtYmVyLnVzZXJJZCk7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChhbHJlYWR5SGFzKSB7XG4gICAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMucmJhYy5yZXZva2VSb2xlKHsgdXNlcklkOiBtZW1iZXIudXNlcklkLCBvcmdJZCwgcm9sZU5hbWUgfSkpO1xuICAgICAgICB0aGlzLnRvYXN0LnNob3coeyBtZXNzYWdlOiB0aGlzLnQoJ3JvbGVSZXZva2VkJyksIGNvbG9yOiAnZGFyaycsIGR1cmF0aW9uOiAyMDAwIH0pO1xuICAgICAgICB0aGlzLm1lbWJlcnMudXBkYXRlKGxpc3QgPT5cbiAgICAgICAgICBsaXN0Lm1hcChtID0+IChtLnVzZXJJZCA9PT0gbWVtYmVyLnVzZXJJZCA/IHsgLi4ubSwgcm9sZXM6IG0ucm9sZXMuZmlsdGVyKHIgPT4gciAhPT0gcm9sZU5hbWUpIH0gOiBtKSlcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMucmJhYy5hc3NpZ25Sb2xlKHsgdXNlcklkOiBtZW1iZXIudXNlcklkLCBvcmdJZCwgcm9sZU5hbWUgfSkpO1xuICAgICAgICB0aGlzLnRvYXN0LnNob3coeyBtZXNzYWdlOiB0aGlzLnQoJ3JvbGVBc3NpZ25lZCcpLCBjb2xvcjogJ2RhcmsnLCBkdXJhdGlvbjogMjAwMCB9KTtcbiAgICAgICAgdGhpcy5tZW1iZXJzLnVwZGF0ZShsaXN0ID0+XG4gICAgICAgICAgbGlzdC5tYXAobSA9PiAobS51c2VySWQgPT09IG1lbWJlci51c2VySWQgPyB7IC4uLm0sIHJvbGVzOiBbLi4ubS5yb2xlcywgcm9sZU5hbWVdIH0gOiBtKSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuZXJyb3JzLmhhbmRsZShlcnIsIHtcbiAgICAgICAgY29udGV4dDogJ3JvbGUtbWFuYWdlci5hc3NpZ25SZXZva2UnLFxuICAgICAgICBmYWxsYmFja0tleTogYWxyZWFkeUhhcyA/ICdlcnJvclJldm9rZScgOiAnZXJyb3JBc3NpZ24nLFxuICAgICAgICBpMThuTmFtZXNwYWNlOiB0aGlzLm5zKCksXG4gICAgICB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5wZW5kaW5nTWVtYmVyLnNldChudWxsKTtcbiAgICB9XG4gIH1cblxuICAvLyDilIDilIAgUm9sZSBDUlVEIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4gIG9wZW5OZXdSb2xlKCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybS5yZXNldCgpO1xuICAgIHRoaXMucm9sZUZvcm0uc2V0KHsgb3BlbjogdHJ1ZSwgZWRpdGluZzogbnVsbCB9KTtcbiAgfVxuXG4gIG9wZW5FZGl0Um9sZShyb2xlOiBSYmFjUm9sZSk6IHZvaWQge1xuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHsgbmFtZTogcm9sZS5uYW1lLCBkZXNjcmlwdGlvbjogcm9sZS5kZXNjcmlwdGlvbiA/PyAnJyB9KTtcbiAgICB0aGlzLnJvbGVGb3JtLnNldCh7IG9wZW46IHRydWUsIGVkaXRpbmc6IHJvbGUgfSk7XG4gIH1cblxuICBjbG9zZVJvbGVGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMucm9sZUZvcm0uc2V0KHsgb3BlbjogZmFsc2UsIGVkaXRpbmc6IG51bGwgfSk7XG4gICAgdGhpcy5mb3JtLnJlc2V0KCk7XG4gIH1cblxuICBhc3luYyBzYXZlUm9sZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHJldHVybjtcbiAgICBjb25zdCBvcmdJZCA9IHRoaXMub3JnSWQ7XG4gICAgY29uc3QgZWRpdGluZyA9IHRoaXMucm9sZUZvcm0oKS5lZGl0aW5nO1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLmZvcm0udmFsdWUubmFtZSE7XG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSB0aGlzLmZvcm0udmFsdWUuZGVzY3JpcHRpb24gPz8gJyc7XG4gICAgdGhpcy5zYXZpbmcuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBpZiAoZWRpdGluZykge1xuICAgICAgICBjb25zdCB1cGRhdGVkID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5yYmFjLnVwZGF0ZVJvbGUoeyBvcmdJZCwgcm9sZUlkOiBlZGl0aW5nLmlkLCBuYW1lLCBkZXNjcmlwdGlvbiB9KSk7XG4gICAgICAgIHRoaXMuYWxsUm9sZXMudXBkYXRlKGxpc3QgPT4gbGlzdC5tYXAociA9PiAoci5pZCA9PT0gZWRpdGluZy5pZCA/IHVwZGF0ZWQgOiByKSkpO1xuICAgICAgICB0aGlzLnRvYXN0LnNob3coeyBtZXNzYWdlOiB0aGlzLnQoJ3JvbGVVcGRhdGVkJyksIGNvbG9yOiAnZGFyaycsIGR1cmF0aW9uOiAyMDAwIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgY3JlYXRlZCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMucmJhYy5jcmVhdGVSb2xlKHsgb3JnSWQsIG5hbWUsIGRlc2NyaXB0aW9uLCBwZXJtaXNzaW9uczogW10gfSkpO1xuICAgICAgICB0aGlzLmFsbFJvbGVzLnVwZGF0ZShsaXN0ID0+IFsuLi5saXN0LCBjcmVhdGVkXSk7XG4gICAgICAgIHRoaXMudG9hc3Quc2hvdyh7IG1lc3NhZ2U6IHRoaXMudCgncm9sZUNyZWF0ZWQnKSwgY29sb3I6ICdkYXJrJywgZHVyYXRpb246IDIwMDAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLmNsb3NlUm9sZUZvcm0oKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuZXJyb3JzLmhhbmRsZShlcnIsIHtcbiAgICAgICAgY29udGV4dDogJ3JvbGUtbWFuYWdlci5zYXZlUm9sZScsXG4gICAgICAgIGZhbGxiYWNrS2V5OiAnZXJyb3JTYXZlJyxcbiAgICAgICAgaTE4bk5hbWVzcGFjZTogdGhpcy5ucygpLFxuICAgICAgfSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuc2F2aW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY29uZmlybURlbGV0ZVJvbGUocm9sZTogUmJhY1JvbGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGNvbmZpcm1lZCB9ID0gYXdhaXQgdGhpcy5jb25maXJtLmNvbmZpcm1EZXN0cnVjdGl2ZSh7XG4gICAgICB0aXRsZTogcm9sZS5uYW1lLFxuICAgICAgbWVzc2FnZTogdGhpcy50KCdkZWxldGVSb2xlQ29uZmlybScpLFxuICAgICAgY29uZmlybUJ1dHRvbjogeyB0ZXh0OiB0aGlzLnQoJ2RlbGV0ZVJvbGVDb25maXJtQnRuJykgfSxcbiAgICB9KTtcbiAgICBpZiAoIWNvbmZpcm1lZCkgcmV0dXJuO1xuICAgIGNvbnN0IG9yZ0lkID0gdGhpcy5vcmdJZDtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5yYmFjLmRlbGV0ZVJvbGUoeyBvcmdJZCwgcm9sZUlkOiByb2xlLmlkIH0pKTtcbiAgICAgIHRoaXMuYWxsUm9sZXMudXBkYXRlKGxpc3QgPT4gbGlzdC5maWx0ZXIociA9PiByLmlkICE9PSByb2xlLmlkKSk7XG4gICAgICB0aGlzLnRvYXN0LnNob3coeyBtZXNzYWdlOiB0aGlzLnQoJ3JvbGVEZWxldGVkJyksIGNvbG9yOiAnZGFyaycsIGR1cmF0aW9uOiAyMDAwIH0pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5lcnJvcnMuaGFuZGxlKGVyciwge1xuICAgICAgICBjb250ZXh0OiAncm9sZS1tYW5hZ2VyLmRlbGV0ZVJvbGUnLFxuICAgICAgICBmYWxsYmFja0tleTogJ2Vycm9yRGVsZXRlJyxcbiAgICAgICAgaTE4bk5hbWVzcGFjZTogdGhpcy5ucygpLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -573,7 +573,7 @@ export class SecurityViewComponent {
|
|
|
573
573
|
[props]="{
|
|
574
574
|
content: sessionsEmptyLabel(),
|
|
575
575
|
size: 'small',
|
|
576
|
-
color: '
|
|
576
|
+
color: 'dark',
|
|
577
577
|
bold: false,
|
|
578
578
|
}"
|
|
579
579
|
/>
|
|
@@ -595,7 +595,7 @@ export class SecurityViewComponent {
|
|
|
595
595
|
[props]="{
|
|
596
596
|
content: formatSessionMeta(s),
|
|
597
597
|
size: 'small',
|
|
598
|
-
color: '
|
|
598
|
+
color: 'dark',
|
|
599
599
|
bold: false,
|
|
600
600
|
}"
|
|
601
601
|
/>
|
|
@@ -725,7 +725,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
725
725
|
[props]="{
|
|
726
726
|
content: sessionsEmptyLabel(),
|
|
727
727
|
size: 'small',
|
|
728
|
-
color: '
|
|
728
|
+
color: 'dark',
|
|
729
729
|
bold: false,
|
|
730
730
|
}"
|
|
731
731
|
/>
|
|
@@ -747,7 +747,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
747
747
|
[props]="{
|
|
748
748
|
content: formatSessionMeta(s),
|
|
749
749
|
size: 'small',
|
|
750
|
-
color: '
|
|
750
|
+
color: 'dark',
|
|
751
751
|
bold: false,
|
|
752
752
|
}"
|
|
753
753
|
/>
|
|
@@ -820,4 +820,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
820
820
|
}], ctorParameters: () => [], propDecorators: { config: [{
|
|
821
821
|
type: Input
|
|
822
822
|
}] } });
|
|
823
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3NlY3VyaXR5LXZpZXcvc2VjdXJpdHktdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUV4RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUU5RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUVyRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlD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OU90Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtJVCxzL0NBcEpDLFlBQVksK0JBQ1osT0FBTyx3RUFDUCxNQUFNLG9EQUNOLE1BQU0sa1RBQ04sT0FBTywySkFDUCxnQkFBZ0IsMkVBQ2hCLGNBQWMseUVBQ2QsYUFBYSx3RUFDYixlQUFlLDBHQUNmLG1CQUFtQixxR0FDbkIscUJBQXFCLGlGQUNyQixrQkFBa0IsOEVBQ2xCLHVCQUF1QixtRkFDdkIseUJBQXlCLDBIQUN6Qiw0QkFBNEIsNkhBQzVCLGlCQUFpQixzSkFDakIsa0JBQWtCOzs0RkFnUFQscUJBQXFCO2tCQXBRakMsU0FBUzsrQkFDRSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osT0FBTzt3QkFDUCxNQUFNO3dCQUNOLE1BQU07d0JBQ04sT0FBTzt3QkFDUCxnQkFBZ0I7d0JBQ2hCLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIscUJBQXFCO3dCQUNyQixrQkFBa0I7d0JBQ2xCLHVCQUF1Qjt3QkFDdkIseUJBQXlCO3dCQUN6Qiw0QkFBNEI7d0JBQzVCLGlCQUFpQjt3QkFDakIsa0JBQWtCO3FCQUNuQixZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0lUO3dEQThIUSxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIElucHV0LCBzaWduYWwsIHVudHJhY2tlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJb25Db2wsIElvbkdyaWQsIElvbkljb24sIElvblJvdyB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQgeyBsYXB0b3BPdXRsaW5lLCBwaG9uZVBvcnRyYWl0T3V0bGluZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEFjdGlvbkNhcmRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvYWN0aW9uLWNhcmQvYWN0aW9uLWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IEFjdGlvbkNhcmRNZXRhZGF0YSB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9hY3Rpb24tY2FyZC90eXBlcyc7XG5pbXBvcnQgeyBBY3Rpb25IZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvYWN0aW9uLWhlYWRlci9hY3Rpb24taGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBY3Rpb25IZWFkZXJNZXRhZGF0YSB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9hY3Rpb24taGVhZGVyL3R5cGVzJztcbmltcG9ydCB7IFBhZ2VMaW5rc0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9wYWdlLWxpbmtzL3BhZ2UtbGlua3MuY29tcG9uZW50JztcbmltcG9ydCB7IFBhZ2VMaW5rc01ldGFkYXRhIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3BhZ2UtbGlua3MvdHlwZXMnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvY29udGFpbmVyL2NvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2Rpc3BsYXkvZGlzcGxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90aXRsZS90aXRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2tlbGV0b25MYXlvdXRDb21wb25lbnQgfSBmcm9tICcuLi9za2VsZXRvbi1sYXlvdXQvc2tlbGV0b24tbGF5b3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDaGFuZ2VFbWFpbE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vY2hhbmdlLWVtYWlsLW1vZGFsL2NoYW5nZS1lbWFpbC1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2hhbmdlUGFzc3dvcmRNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL2NoYW5nZS1wYXNzd29yZC1tb2RhbC9jaGFuZ2UtcGFzc3dvcmQtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IE1mYU1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vbWZhLW1vZGFsL21mYS1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTG9naW5BdHRlbXB0TW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9sb2dpbi1hdHRlbXB0LW1vZGFsL2xvZ2luLWF0dGVtcHQtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IFNlc3Npb25MaXN0TW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9zZXNzaW9uLWxpc3QtbW9kYWwvc2Vzc2lvbi1saXN0LW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25NZXRhZGF0YSwgQ29tcG9uZW50U3RhdGVzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBEZXZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC9kZXZpY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGgvc2Vzc2lvbi5zZXJ2aWNlJztcbmltcG9ydCB7IERldmljZUluZm8sIFNlc3Npb25JbmZvLCBWYWxpZGF0ZUFjdGlvblJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC90eXBlcyc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgTGVnYWxMaW5rU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xlZ2FsLWxpbmsvbGVnYWwtbGluay5zZXJ2aWNlJztcbmltcG9ydCB7IE1vZGFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21vZGFsL21vZGFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NvbmZpcm1hdGlvbi1kaWFsb2cvY29uZmlybWF0aW9uLWRpYWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgY29ubmVjdFBhZ2VSZWZyZXNoIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcGFnZS1yZWZyZXNoL3BhZ2UtcmVmcmVzaC5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVmFsdGVjaEVycm9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Vycm9ycy92YWx0ZWNoLWVycm9yLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBTZWN1cml0eVZpZXdDb25maWcgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IFNFQ1VSSVRZX1ZJRVdfSTE4TiB9IGZyb20gJy4vc2VjdXJpdHktdmlldy5pMThuJztcblxuYWRkSWNvbnMoeyBsYXB0b3BPdXRsaW5lLCBwaG9uZVBvcnRyYWl0T3V0bGluZSB9KTtcblxuY29uc3QgREVGQVVMVF9OQU1FU1BBQ0UgPSAnU2V0dGluZ3MuU2VjdXJpdHknO1xuXG4vKipcbiAqIGB2YWwtc2VjdXJpdHktdmlld2Ag4oCUIHZpc3RhIFNlZ3VyaWRhZCBmdWxsLWZlYXR1cmUgYXV0b2NvbnRlbmlkYSAob3JnYW5pc20pLlxuICpcbiAqIFByb21vdmlkYSBkZXNkZSBgc2hvd2Nhc2VgIGJham8gZWwgcHJvY2VzbyBkZSBBRFItMDIxLiBSZcO6bmUgZW4gdW5hIHNvbGEgdmlzdGE6XG4gKiAgLSAqKlNlc2lvbmVzIGFjdGl2YXMqKiDigJQgw7puaWNhIHZpc3RhIHVzZXItZmFjaW5nIGRlIFwiZMOzbmRlIHRlbmdvIHNlc2nDs25cIi5cbiAqICAgIExpc3RhIGlubGluZSAobGltaXQgMykgKyBtb2RhbCBcIlZlciB0b2Rhc1wiIChgdmFsLXNlc3Npb24tbGlzdC1tb2RhbGApICtcbiAqICAgIHJldm9rZSBpbmRpdmlkdWFsIC8gcmV2b2tlLWFsbCAoY29uIGNvbmZpcm1hY2nDs24pLlxuICogIC0gKipBY3Rpb24tY2FyZHMqKiDigJQgY2FtYmlhciBjb250cmFzZcOxYSwgY2FtYmlhciBlbWFpbCB5IE1GQSAoY2FkYSB1bmEgYWJyZVxuICogICAgZWwgbW9kYWwgY29ycmVzcG9uZGllbnRlIGRlIGxhIGxpYikuXG4gKiAgLSAqKlBvbMOtdGljYXMgbGVnYWxlcyoqIOKAlCBsaW5rcyByZXN1ZWx0b3MgdsOtYSBgTGVnYWxMaW5rU2VydmljZWAgKGFwcHNcbiAqICAgIHNhdMOpbGl0ZSBhcHVudGFuIGFsIG1haW4gc2l0ZSkuXG4gKlxuICogRGVlcC1saW5rcyBkZWwgZW1haWwgKGdhdGVhZG9zIHBvciBgY29uZmlnLmhhbmRsZURlZXBMaW5rc2AsIGRlZmF1bHQgYHRydWVgKTpcbiAqICAtIGA/dG9rZW49Li4uJmFjdGlvbj0uLi5gIOKGkiBtb2RhbCBgdmFsLWxvZ2luLWF0dGVtcHQtbW9kYWxgIChhdXRvcml6YXIvYmxvcXVlYXJcbiAqICAgIGVsIG51ZXZvIGFjY2VzbykuXG4gKiAgLSBgP21mYUNvZGU9Li4uYCDihpIgYWJyZSBlbCBtb2RhbCBNRkEgY29uIGVsIGPDs2RpZ28gcHJlLWNhcmdhZG8uXG4gKlxuICogTk8gcmVuZGVyaXphIGlvbi1jb250ZW50IOKAlCB2aXZlIGRlbnRybyBkZSB2YWwtcGFnZS13cmFwcGVyLlxuICpcbiAqIEF1dG8tcmVnaXN0cmEgc3VzIGRlZmF1bHRzIGkxOG4gKGVzL2VuKSBlbiBlbCBjb25zdHJ1Y3RvciBzaSBlbCBjb25zdW1lciBub1xuICogcHJvdmV5w7MgZWwgbmFtZXNwYWNlIGNvbmZpZ3VyYWRvIChkZWZhdWx0IGBTZXR0aW5ncy5TZWN1cml0eWApLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtc2VjdXJpdHktdmlldycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSW9uR3JpZCxcbiAgICBJb25Sb3csXG4gICAgSW9uQ29sLFxuICAgIElvbkljb24sXG4gICAgRGlzcGxheUNvbXBvbmVudCxcbiAgICBUaXRsZUNvbXBvbmVudCxcbiAgICBUZXh0Q29tcG9uZW50LFxuICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICBBY3Rpb25DYXJkQ29tcG9uZW50LFxuICAgIEFjdGlvbkhlYWRlckNvbXBvbmVudCxcbiAgICBQYWdlTGlua3NDb21wb25lbnQsXG4gICAgU2tlbGV0b25MYXlvdXRDb21wb25lbnQsXG4gICAgQ2hhbmdlRW1haWxNb2RhbENvbXBvbmVudCxcbiAgICBDaGFuZ2VQYXNzd29yZE1vZGFsQ29tcG9uZW50LFxuICAgIE1mYU1vZGFsQ29tcG9uZW50LFxuICAgIENvbnRhaW5lckNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8dmFsLWNvbnRhaW5lciBbcHJvcHNdPVwieyBzaXplOiAnbWQnLCBwYWRkaW5nOiAnbm9uZScgfVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBhZ2VcIj5cbiAgICAgICAgPGhlYWRlciBjbGFzcz1cInBhZ2UtaGVhZGVyXCI+XG4gICAgICAgICAgPHZhbC1kaXNwbGF5IFtwcm9wc109XCJ7IHNpemU6ICdzbWFsbCcsIGNvbG9yOiAnZGFyaycsIGNvbnRlbnQ6IHBhZ2VUaXRsZSgpIH1cIiAvPlxuICAgICAgICAgIDx2YWwtdGl0bGVcbiAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgIHNpemU6ICdsYXJnZScsXG4gICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgICBjb250ZW50OiBwYWdlRGVzY3JpcHRpb24oKSxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgIEBpZiAocmVzb2x2ZWRDb25maWcoKS5zaG93U2Vzc2lvbnMpIHtcbiAgICAgICAgICA8IS0tIDEuIEFjdGl2ZSBzZXNzaW9ucyAtIHVuaWNhIHZpc3RhIHVzZXItZmFjaW5nIGRlIGRvbmRlIHRlbmdvIHNlc2lvbi4gLS0+XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJzZXR0aW5ncy1zZWN0aW9uXCI+XG4gICAgICAgICAgICBAaWYgKGhhc090aGVyU2Vzc2lvbnMoKSkge1xuICAgICAgICAgICAgICA8dmFsLWFjdGlvbi1oZWFkZXIgW3Byb3BzXT1cInNlc3Npb25zSGVhZGVyKClcIiAvPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDx2YWwtdGl0bGVcbiAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICAgICAgYm9sZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHNlc3Npb25zVGl0bGVXaXRoQ291bnQoKSxcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24tYm9keVwiPlxuICAgICAgICAgICAgICBAaWYgKHNlc3Npb25zTG9hZGluZygpKSB7XG4gICAgICAgICAgICAgICAgPHZhbC1za2VsZXRvbi1sYXlvdXQgW3Byb3BzXT1cInsgcHJlc2V0OiAnbGlzdCcsIHJvd3M6IDMgfVwiIC8+XG4gICAgICAgICAgICAgIH0gQGVsc2UgaWYgKHNlc3Npb25zKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBzZXNzaW9uc0VtcHR5TGFiZWwoKSxcbiAgICAgICAgICAgICAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cInNlc3Npb25zXCI+XG4gICAgICAgICAgICAgICAgICBAZm9yIChzIG9mIHZpc2libGVTZXNzaW9ucygpOyB0cmFjayBzLnNlc3Npb25JZCkge1xuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJzZXNzaW9uXCIgW2NsYXNzLnNlc3Npb24tLWN1cnJlbnRdPVwicy5pc0N1cnJlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gY2xhc3M9XCJzZXNzaW9uX19pY29uXCIgW25hbWVdPVwiZGV2aWNlSWNvbihzKVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlc3Npb25fX2JvZHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHMuZGV2aWNlSW5mbyB8fCBzLmRldmljZUlkIHx8ICfigJQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9sZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogZm9ybWF0U2Vzc2lvbk1ldGEocyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2Vzc2lvbl9fZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHMuaXNDdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2Vzc2lvbl9fYmFkZ2VcIj57eyBzZXNzaW9uc1RoaXMoKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8dmFsLWJ1dHRvbiBbcHJvcHNdPVwicmV2b2tlT25lQnV0dG9uUHJvcHMoKVwiIChjbGljayk9XCJvblJldm9rZU9uZShzLnNlc3Npb25JZClcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgQGlmIChoYXNNb3JlU2Vzc2lvbnMoKSkge1xuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1hY3Rpb25zIHJvdy1hY3Rpb25zLS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHZhbC1idXR0b24gW3Byb3BzXT1cInZpZXdBbGxCdXR0b25Qcm9wcygpXCIgKGNsaWNrKT1cIm9wZW5TZXNzaW9uc01vZGFsKClcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKGhhc0FjdGlvbkNhcmRzKCkpIHtcbiAgICAgICAgICA8IS0tIDIuIFF1aWNrIGFjdGlvbnM6IGNoYW5nZSBwYXNzd29yZCwgY2hhbmdlIGVtYWlsLCBNRkEgLS0+XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJzZXR0aW5ncy1zZWN0aW9uXCI+XG4gICAgICAgICAgICA8aDI+e3sgcXVpY2tBY3Rpb25zVGl0bGUoKSB9fTwvaDI+XG4gICAgICAgICAgICA8aW9uLWdyaWQgY2xhc3M9XCJjYXJkcy1ncmlkXCI+XG4gICAgICAgICAgICAgIDxpb24tcm93PlxuICAgICAgICAgICAgICAgIEBmb3IgKGFjdGlvbiBvZiBhY3Rpb25DYXJkcygpOyB0cmFjayBhY3Rpb24udG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgIDxpb24tY29sIHNpemU9XCIxMlwiIHNpemUtc209XCI2XCI+XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtYWN0aW9uLWNhcmQgW3Byb3BzXT1cImFjdGlvblwiIChvbkNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soYWN0aW9uKVwiIC8+XG4gICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2lvbi1yb3c+XG4gICAgICAgICAgICA8L2lvbi1ncmlkPlxuICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAocmVzb2x2ZWRDb25maWcoKS5zaG93UG9saWNpZXMpIHtcbiAgICAgICAgICA8IS0tIDMuIFJlbGF0ZWQgcG9saWNpZXMgLS0+XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJzZXR0aW5ncy1zZWN0aW9uXCI+XG4gICAgICAgICAgICA8aDI+e3sgcG9saWNpZXNUaXRsZSgpIH19PC9oMj5cbiAgICAgICAgICAgIDx2YWwtcGFnZS1saW5rcyBbcHJvcHNdPVwicG9saWN5TGlua3NQcm9wcygpXCIgLz5cbiAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgIH1cblxuICAgICAgICA8dmFsLWNoYW5nZS1lbWFpbC1tb2RhbFxuICAgICAgICAgIFtpc09wZW5dPVwiaXNDaGFuZ2VFbWFpbE1vZGFsT3BlbigpXCJcbiAgICAgICAgICAoY2hhbmdlZCk9XCJpc0NoYW5nZUVtYWlsTW9kYWxPcGVuLnNldChmYWxzZSlcIlxuICAgICAgICAgIChkaXNtaXNzZWQpPVwiaXNDaGFuZ2VFbWFpbE1vZGFsT3Blbi5zZXQoZmFsc2UpXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8dmFsLWNoYW5nZS1wYXNzd29yZC1tb2RhbFxuICAgICAgICAgIFtpc09wZW5dPVwiaXNDaGFuZ2VQYXNzd29yZE1vZGFsT3BlbigpXCJcbiAgICAgICAgICAoY2hhbmdlZCk9XCJpc0NoYW5nZVBhc3N3b3JkTW9kYWxPcGVuLnNldChmYWxzZSlcIlxuICAgICAgICAgIChkaXNtaXNzZWQpPVwiaXNDaGFuZ2VQYXNzd29yZE1vZGFsT3Blbi5zZXQoZmFsc2UpXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8dmFsLW1mYS1tb2RhbFxuICAgICAgICAgIFtpc09wZW5dPVwiaXNNZmFNb2RhbE9wZW4oKVwiXG4gICAgICAgICAgW3ByZWZpbGxDb2RlXT1cIm1mYVByZWZpbGxDb2RlKClcIlxuICAgICAgICAgIChkaXNtaXNzZWQpPVwib25NZmFNb2RhbERpc21pc3NlZCgpXCJcbiAgICAgICAgICAoZW5hYmxlZFZpYURlZXBsaW5rKT1cIm9uTWZhRW5hYmxlZFZpYURlZXBsaW5rKClcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC92YWwtY29udGFpbmVyPlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAvKiBBbmNobyB5IGNyZWNpbWllbnRvIGNvbiBlbCByYWlsIGNvbGFwc2FkbyBsb3MgZGEgdmFsLWNvbnRhaW5lciAoc2l6ZVxuICAgICAgICAgJ21kJyksIG5vIENTUyBsb2NhbDogdmVyIGNvbnRhaW5lci5jb21wb25lbnQuc2Nzcy4gKi9cbiAgICAgIC5wYWdlIHtcbiAgICAgICAgcGFkZGluZzogMTZweCAwO1xuICAgICAgfVxuICAgICAgLnBhZ2UtaGVhZGVyIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICAgIH1cbiAgICAgIC5zZXR0aW5ncy1zZWN0aW9uIHtcbiAgICAgICAgcGFkZGluZzogMTZweCAwO1xuICAgICAgfVxuICAgICAgLnNldHRpbmdzLXNlY3Rpb24gKyAuc2V0dGluZ3Mtc2VjdGlvbiB7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS12YWwtYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMDgpKTtcbiAgICAgIH1cbiAgICAgIGgyIHtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBtYXJnaW46IDAgMCA0cHg7XG4gICAgICB9XG4gICAgICAuY2FyZHMtZ3JpZCB7XG4gICAgICAgIG1hcmdpbjogMCAtNHB4IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICB9XG4gICAgICAuY2FyZHMtZ3JpZCBpb24tY29sIHtcbiAgICAgICAgcGFkZGluZzogNHB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgfVxuICAgICAgLmNhcmRzLWdyaWQgaW9uLWNvbCB2YWwtYWN0aW9uLWNhcmQge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgfVxuXG4gICAgICAvKiAtLS0gU2Vzc2lvbnMgc2VjdGlvbiAtLS0gKi9cbiAgICAgIC5zZWN0aW9uLWJvZHkge1xuICAgICAgICBtYXJnaW4tdG9wOiAxNnB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICB9XG4gICAgICAucm93LWFjdGlvbnMge1xuICAgICAgICBtYXJnaW4tdG9wOiAxMnB4O1xuICAgICAgfVxuICAgICAgLnJvdy1hY3Rpb25zLS1jZW50ZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgbWFyZ2luLXRvcDogNHB4O1xuICAgICAgfVxuICAgICAgLnNlc3Npb25zIHtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICB9XG4gICAgICAuc2Vzc2lvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgICAgcGFkZGluZzogMTRweCAxNnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxNHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQsIHJnYmEoMCwgMCwgMCwgMC4wNCkpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgdHJhbnNpdGlvbjpcbiAgICAgICAgICBiYWNrZ3JvdW5kIDAuMTVzIGVhc2UsXG4gICAgICAgICAgYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2U7XG4gICAgICB9XG4gICAgICAuc2Vzc2lvbi0tY3VycmVudCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoNDUsIDIxMSwgMTExLCAwLjEpO1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEoNDUsIDIxMSwgMTExLCAwLjMpO1xuICAgICAgfVxuICAgICAgLnNlc3Npb25fX2ljb24ge1xuICAgICAgICBmb250LXNpemU6IDI2cHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyaywgIzFhMWExYSk7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgfVxuICAgICAgLnNlc3Npb24tLWN1cnJlbnQgLnNlc3Npb25fX2ljb24ge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3Mtc2hhZGUsICMyOGJhNjIpO1xuICAgICAgfVxuICAgICAgLnNlc3Npb25fX2JvZHkge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDJweDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgfVxuICAgICAgLnNlc3Npb25fX2VuZCB7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgfVxuICAgICAgLnNlc3Npb25fX2JhZGdlIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBwYWRkaW5nOiA0cHggMTBweDtcbiAgICAgICAgZm9udC1zaXplOiAxMXB4O1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wMmVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3Mtc2hhZGUsICMyOGJhNjIpO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDQ1LCAyMTEsIDExMSwgMC4xOCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNlY3VyaXR5Vmlld0NvbXBvbmVudCB7XG4gIHByaXZhdGUgbmF2ID0gaW5qZWN0KE5hdmlnYXRpb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBkZXZpY2VTZXJ2aWNlID0gaW5qZWN0KERldmljZVNlcnZpY2UpO1xuICBwcml2YXRlIGxlZ2FsTGluayA9IGluamVjdChMZWdhbExpbmtTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdCA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xuICBwcml2YXRlIGVycm9ycyA9IGluamVjdChWYWx0ZWNoRXJyb3JTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByb3V0ZXIgPSBpbmplY3QoUm91dGVyLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIHNlc3Npb25TZXJ2aWNlID0gaW5qZWN0KFNlc3Npb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBtb2RhbFNlcnZpY2UgPSBpbmplY3QoTW9kYWxTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBjb25maXJtRGlhbG9nID0gaW5qZWN0KENvbmZpcm1hdGlvbkRpYWxvZ1NlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBDb25maWcgdsOtYSBASW5wdXQgKG9iamVjdC1maXJzdCkuIFNpIG5vIHNlIHBhc2EsIHNlIGNhZSBhbCByb3V0ZSBkYXRhXG4gICAqIGBzZWN1cml0eUNvbmZpZ2AgKHBvYmxhZG8gcG9yIGBwcm92aWRlVmFsdGVjaFNlY3VyaXR5Um91dGVzYCkuXG4gICAqIGByZXNvbHZlZENvbmZpZ2AgbWVyZ2VhIGNvbiBsb3MgZGVmYXVsdHMg4oCUIGBASW5wdXRgIGdhbmEgc29icmUgcm91dGUgZGF0YS5cbiAgICovXG4gIEBJbnB1dCgpIGNvbmZpZz86IFNlY3VyaXR5Vmlld0NvbmZpZztcblxuICByZWFkb25seSByZXNvbHZlZENvbmZpZyA9IGNvbXB1dGVkPFxuICAgIFJlcXVpcmVkPE9taXQ8U2VjdXJpdHlWaWV3Q29uZmlnLCAnb25NZmFDb21wbGV0ZWQnPj4gJiBQaWNrPFNlY3VyaXR5Vmlld0NvbmZpZywgJ29uTWZhQ29tcGxldGVkJz5cbiAgPigoKSA9PiB7XG4gICAgY29uc3QgZnJvbVJvdXRlID0gKHRoaXMucm91dGU/LnNuYXBzaG90LmRhdGFbJ3NlY3VyaXR5Q29uZmlnJ10gPz8ge30pIGFzIFNlY3VyaXR5Vmlld0NvbmZpZztcbiAgICBjb25zdCBtZXJnZWQ6IFNlY3VyaXR5Vmlld0NvbmZpZyA9IHsgLi4uZnJvbVJvdXRlLCAuLi4odGhpcy5jb25maWcgPz8ge30pIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIHNob3dTZXNzaW9uczogbWVyZ2VkLnNob3dTZXNzaW9ucyA/PyB0cnVlLFxuICAgICAgc2hvd0NoYW5nZVBhc3N3b3JkOiBtZXJnZWQuc2hvd0NoYW5nZVBhc3N3b3JkID8/IHRydWUsXG4gICAgICBzaG93Q2hhbmdlRW1haWw6IG1lcmdlZC5zaG93Q2hhbmdlRW1haWwgPz8gdHJ1ZSxcbiAgICAgIHNob3dNZmE6IG1lcmdlZC5zaG93TWZhID8/IHRydWUsXG4gICAgICBzaG93UG9saWNpZXM6IG1lcmdlZC5zaG93UG9saWNpZXMgPz8gdHJ1ZSxcbiAgICAgIGkxOG5OYW1lc3BhY2U6IG1lcmdlZC5pMThuTmFtZXNwYWNlID8/IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICAgaGFuZGxlRGVlcExpbmtzOiBtZXJnZWQuaGFuZGxlRGVlcExpbmtzID8/IHRydWUsXG4gICAgICBob21lUm91dGU6IG1lcmdlZC5ob21lUm91dGUgPz8gJy9hcHAvaG9tZScsXG4gICAgICBvbk1mYUNvbXBsZXRlZDogbWVyZ2VkLm9uTWZhQ29tcGxldGVkLFxuICAgIH07XG4gIH0pO1xuXG4gIC8qKiBOYW1lc3BhY2UgaTE4biByZXN1ZWx0byAoY2FwdHVyYWRvIHBhcmEgbGxhbWFkYXMgbm8tcmVhY3RpdmFzKS4gKi9cbiAgcHJpdmF0ZSBnZXQgbnMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZENvbmZpZygpLmkxOG5OYW1lc3BhY2U7XG4gIH1cblxuICAvKipcbiAgICogTGlzdGEgZGUgZGlzcG9zaXRpdm9zIGRlbCB1c2VyLiBObyBzZSByZW5kZXJpemEg4oCUIHNvbG8gYWxpbWVudGEgZWwgbW9kYWxcbiAgICogZGUgY29uZmlybWFjacOzbiBkZSBpbmljaW8gZGUgc2VzacOzbiAoYGhhbmRsZUFjdGlvblRva2VuRnJvbVVybGApIHBhcmFcbiAgICogcmVzb2x2ZXIgdW4gbGFiZWwgbGVnaWJsZSBkZXNkZSBlbCBgdGFyZ2V0SWRgIGRlbCB0b2tlbi5cbiAgICovXG4gIHByb3RlY3RlZCBkZXZpY2VzID0gc2lnbmFsPERldmljZUluZm9bXT4oW10pO1xuXG4gIHJlYWRvbmx5IHNlc3Npb25zID0gc2lnbmFsPFNlc3Npb25JbmZvW10+KFtdKTtcbiAgcmVhZG9ubHkgc2Vzc2lvbnNMb2FkaW5nID0gc2lnbmFsKHRydWUpO1xuXG4gIHJlYWRvbmx5IGlzQ2hhbmdlRW1haWxNb2RhbE9wZW4gPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBpc0NoYW5nZVBhc3N3b3JkTW9kYWxPcGVuID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaXNNZmFNb2RhbE9wZW4gPSBzaWduYWwoZmFsc2UpO1xuICAvKiogQ8OzZGlnbyBNRkEgZGVsIGRlZXAtbGluayBgL3ZlcmlmeWAg4oCUIHByZS1jYXJnYSBlbCBtb2RhbCBlbiBjb25maXJtYWNpw7NuLiAqL1xuICByZWFkb25seSBtZmFQcmVmaWxsQ29kZSA9IHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgcmVhZG9ubHkgcGFnZVRpdGxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50dCgncGFnZVRpdGxlJykpO1xuICByZWFkb25seSBwYWdlRGVzY3JpcHRpb24gPSBjb21wdXRlZCgoKSA9PiB0aGlzLnR0KCdwYWdlRGVzY3JpcHRpb24nKSk7XG5cbiAgcmVhZG9ubHkgcXVpY2tBY3Rpb25zVGl0bGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnR0KCdxdWlja0FjdGlvbnNUaXRsZScpKTtcbiAgcmVhZG9ubHkgcG9saWNpZXNUaXRsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHQoJ3BvbGljaWVzVGl0bGUnKSk7XG5cbiAgcmVhZG9ubHkgaGFzQWN0aW9uQ2FyZHMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmFjdGlvbkNhcmRzKCkubGVuZ3RoID4gMCk7XG5cbiAgcmVhZG9ubHkgYWN0aW9uQ2FyZHMgPSBjb21wdXRlZDxBY3Rpb25DYXJkTWV0YWRhdGFbXT4oKCkgPT4ge1xuICAgIHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgY29uc3QgY2ZnID0gdGhpcy5yZXNvbHZlZENvbmZpZygpO1xuICAgIGNvbnN0IGNhcmRzOiBBY3Rpb25DYXJkTWV0YWRhdGFbXSA9IFtdO1xuICAgIGlmIChjZmcuc2hvd0NoYW5nZVBhc3N3b3JkKSB7XG4gICAgICBjYXJkcy5wdXNoKHtcbiAgICAgICAgdG9rZW46ICdhY3Rpb24tY2hhbmdlLXBhc3N3b3JkJyxcbiAgICAgICAgdGl0bGU6IHRoaXMudHQoJ2NoYW5nZVBhc3N3b3JkJyksXG4gICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLnR0KCdjaGFuZ2VQYXNzd29yZERlc2MnKSxcbiAgICAgICAgaWNvbjogeyBpb25pY29uOiAna2V5LW91dGxpbmUnLCBjb2xvcjogJ2RhcmsnLCBiYWNrZ3JvdW5kQ29sb3I6ICdsaWdodCcgfSxcbiAgICAgICAgc2hvd0NoZXZyb246IHRydWUsXG4gICAgICAgIHNoYWRvd2VkOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChjZmcuc2hvd0NoYW5nZUVtYWlsKSB7XG4gICAgICBjYXJkcy5wdXNoKHtcbiAgICAgICAgdG9rZW46ICdhY3Rpb24tY2hhbmdlLWVtYWlsJyxcbiAgICAgICAgdGl0bGU6IHRoaXMudHQoJ2NoYW5nZUVtYWlsJyksXG4gICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLnR0KCdjaGFuZ2VFbWFpbERlc2MnKSxcbiAgICAgICAgaWNvbjogeyBpb25pY29uOiAnbWFpbC1vdXRsaW5lJywgY29sb3I6ICdkYXJrJywgYmFja2dyb3VuZENvbG9yOiAnbGlnaHQnIH0sXG4gICAgICAgIHNob3dDaGV2cm9uOiB0cnVlLFxuICAgICAgICBzaGFkb3dlZDogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoY2ZnLnNob3dNZmEpIHtcbiAgICAgIGNhcmRzLnB1c2goe1xuICAgICAgICB0b2tlbjogJ2FjdGlvbi1tZmEnLFxuICAgICAgICB0aXRsZTogdGhpcy50dCgnbWZhJyksXG4gICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLnR0KCdtZmFEZXNjJyksXG4gICAgICAgIGljb246IHsgaW9uaWNvbjogJ3NoaWVsZC1jaGVja21hcmstb3V0bGluZScsIGNvbG9yOiAnZGFyaycsIGJhY2tncm91bmRDb2xvcjogJ2xpZ2h0JyB9LFxuICAgICAgICBzaG93Q2hldnJvbjogdHJ1ZSxcbiAgICAgICAgc2hhZG93ZWQ6IHRydWUsXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGNhcmRzO1xuICB9KTtcblxuICAvKipcbiAgICogRnVlbnRlIMO6bmljYSBkZSBsaW5rcyBsZWdhbGVzIGRlbCBwcm9kdWN0by4gU2UgcmVzdWVsdmVuIHbDrWFcbiAgICogYExlZ2FsTGlua1NlcnZpY2VgIOKAlCBhcHBzIHNhdMOpbGl0ZSBhcHVudGFuIGFsIG1haW4gc2l0ZSwgZWwgbWFpbiBzaXRlIGxvc1xuICAgKiBkZWphIHJlbGF0aXZvcy5cbiAgICovXG4gIHJlYWRvbmx5IHBvbGljeUxpbmtzUHJvcHMgPSBjb21wdXRlZDxQYWdlTGlua3NNZXRhZGF0YT4oKCkgPT4ge1xuICAgIGNvbnN0IGxvY2FsZSA9IHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgY29uc3QgbGluayA9IChwYXRoOiBzdHJpbmcsIGxhYmVsS2V5OiBzdHJpbmcpID0+ICh7XG4gICAgICBsYWJlbDogdGhpcy50dChsYWJlbEtleSksXG4gICAgICBocmVmOiB0aGlzLmxlZ2FsTGluay5yZXNvbHZlKHBhdGgsIHsgbG9jYWxlIH0pLFxuICAgICAgZXh0ZXJuYWw6IHRoaXMubGVnYWxMaW5rLmlzRXh0ZXJuYWwocGF0aCksXG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmtzOiBbXG4gICAgICAgIGxpbmsoJy9sZWdhbC90ZXJtcycsICd0ZXJtc0xpbmsnKSxcbiAgICAgICAgbGluaygnL2xlZ2FsL3ByaXZhY3knLCAncHJpdmFjeUxpbmsnKSxcbiAgICAgICAgbGluaygnL2xlZ2FsL2Nvb2tpZXMnLCAnY29va2llc0xpbmsnKSxcbiAgICAgICAgbGluaygnL2xlZ2FsL2RhdGEtdXNhZ2UnLCAnZGF0YVVzYWdlTGluaycpLFxuICAgICAgICBsaW5rKCcvbGVnYWwvdGhpcmQtcGFydHknLCAndGhpcmRQYXJ0eUxpbmsnKSxcbiAgICAgICAgbGluaygnL2xlZ2FsL2xlZ2FsLW5vdGljZScsICdsZWdhbE5vdGljZUxpbmsnKSxcbiAgICAgIF0sXG4gICAgICBzaG93RGl2aWRlcnM6IHRydWUsXG4gICAgfTtcbiAgfSk7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFNlc3Npb25zXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIHJlYWRvbmx5IHNlc3Npb25zVGl0bGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnR0KCdzZXNzaW9uc1RpdGxlJykpO1xuICByZWFkb25seSBzZXNzaW9uc0VtcHR5TGFiZWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnR0KCdzZXNzaW9uc0VtcHR5JykpO1xuICByZWFkb25seSBzZXNzaW9uc1RoaXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnR0KCdzZXNzaW9uc1RoaXMnKSk7XG5cbiAgcmVhZG9ubHkgaGFzT3RoZXJTZXNzaW9ucyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2Vzc2lvbnMoKS5zb21lKHMgPT4gIXMuaXNDdXJyZW50KSk7XG5cbiAgLyoqIFNlc2lvbmVzIG9yZGVuYWRhczogY3VycmVudCBwcmltZXJvLCByZXN0byBwb3IgY3JlYXRlZEF0IGRlc2MuICovXG4gIHJlYWRvbmx5IHNvcnRlZFNlc3Npb25zID0gY29tcHV0ZWQ8U2Vzc2lvbkluZm9bXT4oKCkgPT4ge1xuICAgIGNvbnN0IGFsbCA9IFsuLi50aGlzLnNlc3Npb25zKCldO1xuICAgIHJldHVybiBhbGwuc29ydCgoYSwgYikgPT4ge1xuICAgICAgaWYgKGEuaXNDdXJyZW50ICYmICFiLmlzQ3VycmVudCkgcmV0dXJuIC0xO1xuICAgICAgaWYgKCFhLmlzQ3VycmVudCAmJiBiLmlzQ3VycmVudCkgcmV0dXJuIDE7XG4gICAgICByZXR1cm4gKGIuY3JlYXRlZEF0IHx8ICcnKS5sb2NhbGVDb21wYXJlKGEuY3JlYXRlZEF0IHx8ICcnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgLyoqIExpbWl0IGRlIHNlc2lvbmVzIG1vc3RyYWRhcyBpbmxpbmUuIFNpIHRvdGFsID4gbGltaXQsIFwiVmVyIHRvZGFzXCIgYWJyZSBtb2RhbC4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBWSVNJQkxFX0xJTUlUID0gMztcblxuICByZWFkb25seSB2aXNpYmxlU2Vzc2lvbnMgPSBjb21wdXRlZDxTZXNzaW9uSW5mb1tdPigoKSA9PiB0aGlzLnNvcnRlZFNlc3Npb25zKCkuc2xpY2UoMCwgdGhpcy5WSVNJQkxFX0xJTUlUKSk7XG5cbiAgcmVhZG9ubHkgaGFzTW9yZVNlc3Npb25zID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zb3J0ZWRTZXNzaW9ucygpLmxlbmd0aCA+IHRoaXMuVklTSUJMRV9MSU1JVCk7XG5cbiAgLyoqIFRpdHVsbyBjb24gY291bnQ6IFwiU2VzaW9uZXMgYWN0aXZhcyAoNClcIi4gU2luIGNvdW50IHNpIE49MC4gKi9cbiAgcmVhZG9ubHkgc2Vzc2lvbnNUaXRsZVdpdGhDb3VudCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBuID0gdGhpcy5zb3J0ZWRTZXNzaW9ucygpLmxlbmd0aDtcbiAgICBpZiAobiA9PT0gMCkgcmV0dXJuIHRoaXMuc2Vzc2lvbnNUaXRsZSgpO1xuICAgIHJldHVybiB0aGlzLnR0KCdzZXNzaW9uc1RpdGxlQ291bnQnKS5yZXBsYWNlKCd7bn0nLCBTdHJpbmcobikpO1xuICB9KTtcblxuICByZWFkb25seSByZXZva2VPbmVCdXR0b25Qcm9wcyA9IGNvbXB1dGVkPFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+PigoKSA9PiAoe1xuICAgIHRleHQ6IHRoaXMudHQoJ3Nlc3Npb25zUmV2b2tlJyksXG4gICAgY29sb3I6ICdkYXJrJyxcbiAgICBmaWxsOiAnY2xlYXInLFxuICAgIHNpemU6ICdzbWFsbCcsXG4gICAgdHlwZTogJ2J1dHRvbicsXG4gICAgdG9rZW46ICdzZXNzaW9uLXJldm9rZScsXG4gIH0pKTtcblxuICByZWFkb25seSB2aWV3QWxsQnV0dG9uUHJvcHMgPSBjb21wdXRlZDxQYXJ0aWFsPEJ1dHRvbk1ldGFkYXRhPj4oKCkgPT4gKHtcbiAgICB0ZXh0OiB0aGlzLnR0KCdzZXNzaW9uc1ZpZXdBbGwnKSxcbiAgICBjb2xvcjogJ2RhcmsnLFxuICAgIGZpbGw6ICdjbGVhcicsXG4gICAgc2l6ZTogJ3NtYWxsJyxcbiAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gIH0pKTtcblxuICAvKiogQWN0aW9uLWhlYWRlciBkZSBTZXNpb25lczogdGl0bGUgKyBjb3VudCArIGJvdG9uIFwiQ2VycmFyIHRvZGFzIGxhcyBkZW1hc1wiLiAqL1xuICByZWFkb25seSBzZXNzaW9uc0hlYWRlciA9IGNvbXB1dGVkPEFjdGlvbkhlYWRlck1ldGFkYXRhPigoKSA9PiAoe1xuICAgIGhlYWRpbmdLaW5kOiAndGl0bGUnLFxuICAgIHRpdGxlOiB7XG4gICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICBib2xkOiB0cnVlLFxuICAgICAgY29udGVudDogdGhpcy5zZXNzaW9uc1RpdGxlV2l0aENvdW50KCksXG4gICAgfSxcbiAgICBhY3Rpb246IHtcbiAgICAgIHRleHQ6IHRoaXMudHQoJ3Nlc3Npb25zUmV2b2tlQWxsJyksXG4gICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgZmlsbDogJ291dGxpbmUnLFxuICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgICAgdG9rZW46ICdzZXNzaW9uLXJldm9rZS1hbGwnLFxuICAgICAgaGFuZGxlcjogKCkgPT4gdGhpcy5vblJldm9rZUFsbCgpLFxuICAgIH0sXG4gIH0pKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBjb25zdCBucyA9IHRoaXMubnM7XG4gICAgdGhpcy5pMThuLnJlZ2lzdGVyRGVmYXVsdHMobnMsIFNFQ1VSSVRZX1ZJRVdfSTE4Tik7XG4gICAgdGhpcy5uYXYuc2V0QmFja0hlYWRlcigncGFnZVRpdGxlJywgbnMsIHsgd2l0aE1lbnU6IHRydWUgfSk7XG5cbiAgICAvLyBDYXJnYSBpbmljaWFsIGRlIHNlc2lvbmVzIC0gcmVjYXJnYSByZWFjdGl2YSBhIGNhbWJpbyBkZSBsb2NhbGUgcGFyYVxuICAgIC8vIHF1ZSBsb3MgdGV4dG9zIHkgbWV0YWRhdG9zIHNlIG1hbnRlbmdhbiBmcmVzY29zLiBMb3MgZGV2aWNlcyBzb2xvIHNlXG4gICAgLy8gY2FyZ2FuIG9uLWRlbWFuZCBkZXNkZSBlbCBmbHVqbyBkZWwgbW9kYWwgKGhhbmRsZUFjdGlvblRva2VuRnJvbVVybCkuXG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgICAgICBjb25zdCBzaG93U2Vzc2lvbnMgPSB0aGlzLnJlc29sdmVkQ29uZmlnKCkuc2hvd1Nlc3Npb25zO1xuICAgICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICAgIGlmIChzaG93U2Vzc2lvbnMpIHZvaWQgdGhpcy5sb2FkU2Vzc2lvbnMoKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcblxuICAgIC8vIFB1bGwtdG8tcmVmcmVzaCBlc3RhbmRhciAoUmVnbGEgIzMpIC0gcmUtZmV0Y2hlYSBsYXMgc2VzaW9uZXMgYWN0aXZhcy5cbiAgICBjb25uZWN0UGFnZVJlZnJlc2goKCkgPT4gdGhpcy5sb2FkU2Vzc2lvbnMoKSk7XG5cbiAgICAvLyBEZWVwLWxpbmtzIGRlbCBlbWFpbCAtIHNvbG8gc2kgZXN0YW4gaGFiaWxpdGFkb3MgWSBoYXkgcnV0YSAobW9udGFkYSBjb21vXG4gICAgLy8gcm91dGUpLiBFbiBtb2RvIGVtYmViaWRvIHNpbiBydXRhIGVzIG5vLW9wLlxuICAgIGlmICh0aGlzLnJlc29sdmVkQ29uZmlnKCkuaGFuZGxlRGVlcExpbmtzICYmIHRoaXMucm91dGUpIHtcbiAgICAgIC8vIFNpIGVsIHVzZXIgbGxlZ28gdmlhIGxpbmsgZGVsIGVtYWlsICg/dG9rZW49Li4uJmFjdGlvbj0uLi4pLCBhYnJlIGVsXG4gICAgICAvLyBtb2RhbCBkZSBjb25maXJtYWNpb24gcGFyYSBhdXRvcml6YXIvcmVjaGF6YXIgZWwgaW50ZW50by5cbiAgICAgIHZvaWQgdGhpcy5oYW5kbGVBY3Rpb25Ub2tlbkZyb21VcmwoKTtcbiAgICAgIC8vIERlZXAtbGluayBkZWwgZW1haWwgZGUgc2V0dXAgTUZBLWVtYWlsICg/bWZhQ29kZT0uLi4pLlxuICAgICAgdGhpcy5oYW5kbGVNZmFDb2RlRnJvbVVybCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMbGVnYSB2w61hIGxpbmsgZGVsIGVtYWlsIGRlIFwibnVldm8gYWNjZXNvXCIgKGA/dG9rZW49Li4uYCkuIFZhbGlkYSBlbCB0b2tlblxuICAgKiAoc2luIGVqZWN1dGFyKSB5IGxldmFudGEgZWwgbW9kYWwgZGUgY29uZmlybWFjacOzbi4gRWwgYmxvcXVlbyBzb2xvIHNlXG4gICAqIGVqZWN1dGEgc2kgZWwgdXNlciBjb25maXJtYSBcIm5vIGZ1aSB5b1wiIGRlbnRybyBkZWwgbW9kYWwuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGhhbmRsZUFjdGlvblRva2VuRnJvbVVybCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMucm91dGU/LnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KCd0b2tlbicpO1xuICAgIGlmICghdG9rZW4pIHJldHVybjtcblxuICAgIC8vIExpbXBpYSA/dG9rZW4vP2FjdGlvbiBkZSBsYSBVUkwgeWEgLSBlbCBtb2RhbCBlcyBsYSBmdWVudGUgZGUgdmVyZGFkO1xuICAgIC8vIHVuIHJlZnJlc2ggbm8gZGViZSByZS1hYnJpcmxvIG5pIHJlLXZhbGlkYXIuXG4gICAgdm9pZCB0aGlzLnJvdXRlcj8ubmF2aWdhdGUoW10sIHtcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUgPz8gdW5kZWZpbmVkLFxuICAgICAgcXVlcnlQYXJhbXM6IHsgdG9rZW46IG51bGwsIGFjdGlvbjogbnVsbCB9LFxuICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJyxcbiAgICAgIHJlcGxhY2VVcmw6IHRydWUsXG4gICAgfSk7XG5cbiAgICBsZXQgdmFsaWRhdGlvbjogVmFsaWRhdGVBY3Rpb25SZXNwb25zZTtcbiAgICB0cnkge1xuICAgICAgdmFsaWRhdGlvbiA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuZGV2aWNlU2VydmljZS52YWxpZGF0ZUFjdGlvbih0b2tlbikpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5lcnJvcnMuaGFuZGxlKGVyciwge1xuICAgICAgICBjb250ZXh0OiAnc2VjdXJpdHkudmFsaWRhdGVBY3Rpb25Ub2tlbicsXG4gICAgICAgIGZhbGxiYWNrS2V5OiAndG9rZW5BY3Rpb25GYWlsZWQnLFxuICAgICAgICBpMThuTmFtZXNwYWNlOiB0aGlzLm5zLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgdGhpcy50b2FzdFRva2VuSW52YWxpZCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFJlc3VlbHZlIGVsIGRpc3Bvc2l0aXZvIG9iamV0aXZvIGRlc2RlIGxhIGxpc3RhIGNhcmdhZGEgcGFyYSBtb3N0cmFybG8uXG4gICAgYXdhaXQgdGhpcy5sb2FkRGV2aWNlcygpO1xuICAgIGNvbnN0IHRhcmdldCA9IHRoaXMuZGV2aWNlcygpLmZpbmQoZCA9PiBkLmRldmljZUlkID09PSB2YWxpZGF0aW9uLnRhcmdldElkKTtcbiAgICBjb25zdCBpc01vYmlsZSA9IHRhcmdldD8ucGxhdGZvcm0gPT09ICdpb3MnIHx8IHRhcmdldD8ucGxhdGZvcm0gPT09ICdhbmRyb2lkJztcblxuICAgIGNvbnN0IG9uQmxvY2sgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmRldmljZVNlcnZpY2UuZXhlY3V0ZUFjdGlvbih0b2tlbikpO1xuICAgICAgYXdhaXQgdGhpcy5sb2FkRGV2aWNlcygpO1xuICAgIH07XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLm1vZGFsU2VydmljZS5vcGVuPExvZ2luQXR0ZW1wdE1vZGFsQ29tcG9uZW50Pih7XG4gICAgICBjb21wb25lbnQ6IExvZ2luQXR0ZW1wdE1vZGFsQ29tcG9uZW50LFxuICAgICAgY29tcG9uZW50UHJvcHM6IHtcbiAgICAgICAgdGl0bGU6IHRoaXMudHQoJ2xvZ2luQXR0ZW1wdFRpdGxlJyksXG4gICAgICAgIGJvZHk6IHRoaXMudHQoJ2xvZ2luQXR0ZW1wdEJvZHknKSxcbiAgICAgICAgZGV2aWNlTGFiZWw6IHRhcmdldCA/IHRoaXMuZGVzY3JpYmVEZXZpY2UodGFyZ2V0KSA6IHRoaXMudHQoJ2xvZ2luQXR0ZW1wdFVua25vd25EZXZpY2UnKSxcbiAgICAgICAgbWV0YUxhYmVsOiB0YXJnZXQgPyB0aGlzLmZvcm1hdERhdGUodGFyZ2V0Lmxhc3RBY3RpdmUpIDogJycsXG4gICAgICAgIG1pbmVMYWJlbDogdGhpcy50dCgnbG9naW5BdHRlbXB0TWluZScpLFxuICAgICAgICBibG9ja0xhYmVsOiB0aGlzLnR0KCdsb2dpbkF0dGVtcHRCbG9jaycpLFxuICAgICAgICBjbG9zZUxhYmVsOiB0aGlzLnR0KCdsb2dpbkF0dGVtcHRDbG9zZScpLFxuICAgICAgICBkb25lTGFiZWw6IHRoaXMudHQoJ2xvZ2luQXR0ZW1wdERvbmUnKSxcbiAgICAgICAgaXNNb2JpbGUsXG4gICAgICAgIG9uQmxvY2ssXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgaWYgKHJlc3VsdC5yb2xlID09PSAnYmxvY2tlZCcpIHtcbiAgICAgIHRoaXMudG9hc3RPayh0aGlzLnR0KCdibG9ja2VkJykpO1xuICAgIH0gZWxzZSBpZiAocmVzdWx0LnJvbGUgPT09ICdlcnJvcicpIHtcbiAgICAgIHRoaXMudG9hc3RUb2tlbkludmFsaWQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRvYXN0VG9rZW5JbnZhbGlkKCk6IHZvaWQge1xuICAgIHRoaXMudG9hc3Quc2hvdyh7XG4gICAgICBtZXNzYWdlOiB0aGlzLnR0KCd0b2tlbkFjdGlvbkZhaWxlZCcpLFxuICAgICAgZHVyYXRpb246IDM1MDAsXG4gICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgcG9zaXRpb246ICd0b3AnLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgbG9hZERldmljZXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGxpc3QgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmRldmljZVNlcnZpY2UubGlzdERldmljZXMoKSk7XG4gICAgICB0aGlzLmRldmljZXMuc2V0KGxpc3QgfHwgW10pO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy5kZXZpY2VzLnNldChbXSk7XG4gICAgfVxuICB9XG5cbiAgb25BY3Rpb25DbGljayhhY3Rpb246IEFjdGlvbkNhcmRNZXRhZGF0YSk6IHZvaWQge1xuICAgIGlmIChhY3Rpb24udG9rZW4gPT09ICdhY3Rpb24tY2hhbmdlLXBhc3N3b3JkJykge1xuICAgICAgdGhpcy5pc0NoYW5nZVBhc3N3b3JkTW9kYWxPcGVuLnNldCh0cnVlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGFjdGlvbi50b2tlbiA9PT0gJ2FjdGlvbi1jaGFuZ2UtZW1haWwnKSB7XG4gICAgICB0aGlzLmlzQ2hhbmdlRW1haWxNb2RhbE9wZW4uc2V0KHRydWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uLnRva2VuID09PSAnYWN0aW9uLW1mYScpIHtcbiAgICAgIHRoaXMubWZhUHJlZmlsbENvZGUuc2V0KHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLmlzTWZhTW9kYWxPcGVuLnNldCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBvbk1mYU1vZGFsRGlzbWlzc2VkKCk6IHZvaWQge1xuICAgIHRoaXMuaXNNZmFNb2RhbE9wZW4uc2V0KGZhbHNlKTtcbiAgICB0aGlzLm1mYVByZWZpbGxDb2RlLnNldCh1bmRlZmluZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVsIHVzZXIgbGxlZ8OzIHbDrWEgbGluayBkZWwgZW1haWwsIGNvbmZpcm3DsyBNRkEgZW4gZWwgbW9kYWwuIENlcnJhbW9zIGVsXG4gICAqIG1vZGFsIHksIHNpIGhheSBob29rIGBvbk1mYUNvbXBsZXRlZGAsIGxvIGludm9jYW1vczsgc2kgbm8sIG5hdmVnYW1vcyBhbFxuICAgKiBgaG9tZVJvdXRlYCBjb25maWd1cmFkbyDigJQgcXVlZGFyc2UgZW4gU2V0dGluZ3Mg4oaSIFNlY3VyaXR5IGRhcsOtYSBsYVxuICAgKiBzZW5zYWNpw7NuIGRlIFwidGFyZWEgaW5jb25jbHVzYVwiIGN1YW5kbyBlbCBmbG93IHlhIHRlcm1pbsOzLlxuICAgKi9cbiAgb25NZmFFbmFibGVkVmlhRGVlcGxpbmsoKTogdm9pZCB7XG4gICAgdGhpcy5pc01mYU1vZGFsT3Blbi5zZXQoZmFsc2UpO1xuICAgIHRoaXMubWZhUHJlZmlsbENvZGUuc2V0KHVuZGVmaW5lZCk7XG4gICAgY29uc3QgY2ZnID0gdGhpcy5yZXNvbHZlZENvbmZpZygpO1xuICAgIGlmIChjZmcub25NZmFDb21wbGV0ZWQpIHtcbiAgICAgIGNmZy5vbk1mYUNvbXBsZXRlZCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2b2lkIHRoaXMucm91dGVyPy5uYXZpZ2F0ZUJ5VXJsKGNmZy5ob21lUm91dGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWVwLWxpbmsgYC92ZXJpZnk/Li4uJnZlcmlmeS1jb2RlPWAg4oaSIHJlZGlyaWdlIGEgZXN0YSB2aXN0YSBjb24gYD9tZmFDb2RlPWAuXG4gICAqIEFicmUgZWwgbW9kYWwgTUZBIGNvbiBlbCBjw7NkaWdvIHByZS1jYXJnYWRvIGVuIGVsIHBhc28gZGUgY29uZmlybWFjacOzbi5cbiAgICovXG4gIHByaXZhdGUgaGFuZGxlTWZhQ29kZUZyb21VcmwoKTogdm9pZCB7XG4gICAgY29uc3QgY29kZSA9IHRoaXMucm91dGU/LnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KCdtZmFDb2RlJyk7XG4gICAgaWYgKCFjb2RlKSByZXR1cm47XG4gICAgLy8gTGltcGlhIGVsIHF1ZXJ5IHBhcmFtIC0gdW4gcmVmcmVzaCBubyBkZWJlIHJlLWFicmlyIGVsIG1vZGFsLlxuICAgIHZvaWQgdGhpcy5yb3V0ZXI/Lm5hdmlnYXRlKFtdLCB7XG4gICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlID8/IHVuZGVmaW5lZCxcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7IG1mYUNvZGU6IG51bGwgfSxcbiAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZScsXG4gICAgICByZXBsYWNlVXJsOiB0cnVlLFxuICAgIH0pO1xuICAgIHRoaXMubWZhUHJlZmlsbENvZGUuc2V0KGNvZGUpO1xuICAgIHRoaXMuaXNNZmFNb2RhbE9wZW4uc2V0KHRydWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRlc2NyaWJlRGV2aWNlKGQ6IERldmljZUluZm8pOiBzdHJpbmcge1xuICAgIGNvbnN0IHBhcnRzID0gW2QucGxhdGZvcm0sIGQuYnJvd3NlciwgZC5sb2NhdGlvbl0uZmlsdGVyKEJvb2xlYW4pO1xuICAgIHJldHVybiBwYXJ0cy5qb2luKCcgwrcgJykgfHwgZC5kZXZpY2VJZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBmb3JtYXREYXRlKGlzbz86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFpc28pIHJldHVybiAnJztcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKGlzbykudG9Mb2NhbGVTdHJpbmcodGhpcy5pMThuLmxhbmcoKSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gaXNvO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdG9hc3RPayhtc2c6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudG9hc3Quc2hvdyh7XG4gICAgICBtZXNzYWdlOiBtc2csXG4gICAgICBkdXJhdGlvbjogMjIwMCxcbiAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICBwb3NpdGlvbjogJ3RvcCcsXG4gICAgfSk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gU2Vzc2lvbnMgLSBtw6l0b2Rvc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKiogSWNvbm8gc2Vnw7puIGRldmljZTogcGhvbmUgc2kgVUEgbW9iaWxlLCBzaW5vIGxhcHRvcC4gKi9cbiAgZGV2aWNlSWNvbihzOiBTZXNzaW9uSW5mbyk6IHN0cmluZyB7XG4gICAgY29uc3QgdWEgPSAocy5kZXZpY2VJbmZvIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IGlzTW9iaWxlID0gL2lwaG9uZXxpcGFkfGlwb2R8YW5kcm9pZHxtb2JpbGUvLnRlc3QodWEpO1xuICAgIHJldHVybiBpc01vYmlsZSA/ICdwaG9uZS1wb3J0cmFpdC1vdXRsaW5lJyA6ICdsYXB0b3Atb3V0bGluZSc7XG4gIH1cblxuICBmb3JtYXRTZXNzaW9uTWV0YShzOiBTZXNzaW9uSW5mbyk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKHMubG9jYXRpb24pIHBhcnRzLnB1c2gocy5sb2NhdGlvbik7XG4gICAgZWxzZSBpZiAocy5pcCkgcGFydHMucHVzaChzLmlwKTtcbiAgICBpZiAocy5jcmVhdGVkQXQpIHBhcnRzLnB1c2gobmV3IERhdGUocy5jcmVhdGVkQXQpLnRvTG9jYWxlU3RyaW5nKCkpO1xuICAgIHJldHVybiBwYXJ0cy5qb2luKCcgwrcgJyk7XG4gIH1cblxuICBhc3luYyBvblJldm9rZU9uZShzZXNzaW9uSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnNlc3Npb25TZXJ2aWNlLnJldm9rZVNlc3Npb24oc2Vzc2lvbklkKSk7XG4gICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnR0KCdzZXNzaW9uc1Jldm9rZWQnKSxcbiAgICAgICAgZHVyYXRpb246IDI1MDAsXG4gICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgIHBvc2l0aW9uOiAndG9wJyxcbiAgICAgIH0pO1xuICAgICAgYXdhaXQgdGhpcy5sb2FkU2Vzc2lvbnMoKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuZXJyb3JzLmhhbmRsZShlcnIsIHtcbiAgICAgICAgY29udGV4dDogJ3NlY3VyaXR5LnJldm9rZVNlc3Npb24nLFxuICAgICAgICBmYWxsYmFja0tleTogJ3Nlc3Npb25zRXJyb3InLFxuICAgICAgICBpMThuTmFtZXNwYWNlOiB0aGlzLm5zLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgb25SZXZva2VBbGwoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5jb25maXJtRGlhbG9nLmNvbmZpcm1EZXN0cnVjdGl2ZSh7XG4gICAgICB0aXRsZTogdGhpcy50dCgncmV2b2tlQWxsQ29uZmlybVRpdGxlJyksXG4gICAgICBtZXNzYWdlOiB0aGlzLnR0KCdyZXZva2VBbGxDb25maXJtTWVzc2FnZScpLFxuICAgICAgY29uZmlybUJ1dHRvbjogeyB0ZXh0OiB0aGlzLnR0KCdyZXZva2VBbGxDb25maXJtJykgfSxcbiAgICAgIGNhbmNlbEJ1dHRvbjogeyB0ZXh0OiB0aGlzLnR0KCdjYW5jZWwnKSB9LFxuICAgIH0pO1xuICAgIGlmICghcmVzdWx0LmNvbmZpcm1lZCkgcmV0dXJuO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc2Vzc2lvblNlcnZpY2UucmV2b2tlQWxsU2Vzc2lvbnMoKSk7XG4gICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnR0KCdzZXNzaW9uc0FsbFJldm9rZWQnKSxcbiAgICAgICAgZHVyYXRpb246IDI1MDAsXG4gICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgIHBvc2l0aW9uOiAndG9wJyxcbiAgICAgIH0pO1xuICAgICAgYXdhaXQgdGhpcy5sb2FkU2Vzc2lvbnMoKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuZXJyb3JzLmhhbmRsZShlcnIsIHtcbiAgICAgICAgY29udGV4dDogJ3NlY3VyaXR5LnJldm9rZUFsbFNlc3Npb25zJyxcbiAgICAgICAgZmFsbGJhY2tLZXk6ICdzZXNzaW9uc0Vycm9yJyxcbiAgICAgICAgaTE4bk5hbWVzcGFjZTogdGhpcy5ucyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBBYnJlIG1vZGFsIGNvbiBsYSBsaXN0YSBjb21wbGV0YS4gQ2FkYSByZXZva2UgcGFzYSBwb3IgYG9uUmV2b2tlYC4gKi9cbiAgYXN5bmMgb3BlblNlc3Npb25zTW9kYWwoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgb25SZXZva2UgPSBhc3luYyAoc2Vzc2lvbklkOiBzdHJpbmcpOiBQcm9taXNlPFNlc3Npb25JbmZvW10+ID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc2Vzc2lvblNlcnZpY2UucmV2b2tlU2Vzc2lvbihzZXNzaW9uSWQpKTtcbiAgICAgICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgICAgICBtZXNzYWdlOiB0aGlzLnR0KCdzZXNzaW9uc1Jldm9rZWQnKSxcbiAgICAgICAgICBkdXJhdGlvbjogMjUwMCxcbiAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgIHBvc2l0aW9uOiAndG9wJyxcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgdGhpcy5lcnJvcnMuaGFuZGxlKGVyciwge1xuICAgICAgICAgIGNvbnRleHQ6ICdzZWN1cml0eS5yZXZva2VTZXNzaW9uLm1vZGFsJyxcbiAgICAgICAgICBmYWxsYmFja0tleTogJ3Nlc3Npb25zRXJyb3InLFxuICAgICAgICAgIGkxOG5OYW1lc3BhY2U6IHRoaXMubnMsXG4gICAgICAgIH0pO1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgICBhd2FpdCB0aGlzLmxvYWRTZXNzaW9ucygpO1xuICAgICAgcmV0dXJuIHRoaXMuc29ydGVkU2Vzc2lvbnMoKTtcbiAgICB9O1xuXG4gICAgYXdhaXQgdGhpcy5tb2RhbFNlcnZpY2Uub3BlblNoZWV0PFNlc3Npb25MaXN0TW9kYWxDb21wb25lbnQ+KHtcbiAgICAgIGNvbXBvbmVudDogU2Vzc2lvbkxpc3RNb2RhbENvbXBvbmVudCxcbiAgICAgIGNvbXBvbmVudFByb3BzOiB7XG4gICAgICAgIHNlc3Npb25zOiB0aGlzLnNvcnRlZFNlc3Npb25zKCksXG4gICAgICAgIHRpdGxlOiB0aGlzLnR0KCdzZXNzaW9uc01vZGFsVGl0bGUnKSxcbiAgICAgICAgY2xvc2VMYWJlbDogdGhpcy50dCgnbG9naW5BdHRlbXB0Q2xvc2UnKSxcbiAgICAgICAgdGhpc0xhYmVsOiB0aGlzLnNlc3Npb25zVGhpcygpLFxuICAgICAgICByZXZva2VMYWJlbDogdGhpcy50dCgnc2Vzc2lvbnNSZXZva2UnKSxcbiAgICAgICAgb25SZXZva2UsXG4gICAgICB9LFxuICAgICAgaW5pdGlhbEJyZWFrcG9pbnQ6IDEsXG4gICAgICBicmVha3BvaW50czogWzAsIDFdLFxuICAgICAgc2hvd0hhbmRsZTogZmFsc2UsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRTZXNzaW9ucygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnNlc3Npb25zTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGxpc3QgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnNlc3Npb25TZXJ2aWNlLmxpc3RTZXNzaW9ucygpKTtcbiAgICAgIHRoaXMuc2Vzc2lvbnMuc2V0KGxpc3QpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcignW1NlY3VyaXR5XSBsaXN0U2Vzc2lvbnMgZmFpbGVkOicsIGVycik7XG4gICAgICB0aGlzLnNlc3Npb25zLnNldChbXSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuc2Vzc2lvbnNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIExlZSBkZWwgbmFtZXNwYWNlIGNvbmZpZ3VyYWRvLiAqL1xuICBwcm90ZWN0ZWQgdHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksIHRoaXMubnMpO1xuICB9XG59XG4iXX0=
|
|
823
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3NlY3VyaXR5LXZpZXcvc2VjdXJpdHktdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUV4RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUU5RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUVyRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlD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OU90Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtJVCxzL0NBcEpDLFlBQVksK0JBQ1osT0FBTyx3RUFDUCxNQUFNLG9EQUNOLE1BQU0sa1RBQ04sT0FBTywySkFDUCxnQkFBZ0IsMkVBQ2hCLGNBQWMseUVBQ2QsYUFBYSx3RUFDYixlQUFlLDBHQUNmLG1CQUFtQixxR0FDbkIscUJBQXFCLGlGQUNyQixrQkFBa0IsOEVBQ2xCLHVCQUF1QixtRkFDdkIseUJBQXlCLDBIQUN6Qiw0QkFBNEIsNkhBQzVCLGlCQUFpQixzSkFDakIsa0JBQWtCOzs0RkFnUFQscUJBQXFCO2tCQXBRakMsU0FBUzsrQkFDRSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osT0FBTzt3QkFDUCxNQUFNO3dCQUNOLE1BQU07d0JBQ04sT0FBTzt3QkFDUCxnQkFBZ0I7d0JBQ2hCLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIscUJBQXFCO3dCQUNyQixrQkFBa0I7d0JBQ2xCLHVCQUF1Qjt3QkFDdkIseUJBQXlCO3dCQUN6Qiw0QkFBNEI7d0JBQzVCLGlCQUFpQjt3QkFDakIsa0JBQWtCO3FCQUNuQixZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0lUO3dEQThIUSxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIElucHV0LCBzaWduYWwsIHVudHJhY2tlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJb25Db2wsIElvbkdyaWQsIElvbkljb24sIElvblJvdyB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQgeyBsYXB0b3BPdXRsaW5lLCBwaG9uZVBvcnRyYWl0T3V0bGluZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEFjdGlvbkNhcmRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvYWN0aW9uLWNhcmQvYWN0aW9uLWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IEFjdGlvbkNhcmRNZXRhZGF0YSB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9hY3Rpb24tY2FyZC90eXBlcyc7XG5pbXBvcnQgeyBBY3Rpb25IZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvYWN0aW9uLWhlYWRlci9hY3Rpb24taGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBY3Rpb25IZWFkZXJNZXRhZGF0YSB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9hY3Rpb24taGVhZGVyL3R5cGVzJztcbmltcG9ydCB7IFBhZ2VMaW5rc0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9wYWdlLWxpbmtzL3BhZ2UtbGlua3MuY29tcG9uZW50JztcbmltcG9ydCB7IFBhZ2VMaW5rc01ldGFkYXRhIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3BhZ2UtbGlua3MvdHlwZXMnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvY29udGFpbmVyL2NvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2Rpc3BsYXkvZGlzcGxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90aXRsZS90aXRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2tlbGV0b25MYXlvdXRDb21wb25lbnQgfSBmcm9tICcuLi9za2VsZXRvbi1sYXlvdXQvc2tlbGV0b24tbGF5b3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDaGFuZ2VFbWFpbE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vY2hhbmdlLWVtYWlsLW1vZGFsL2NoYW5nZS1lbWFpbC1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2hhbmdlUGFzc3dvcmRNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL2NoYW5nZS1wYXNzd29yZC1tb2RhbC9jaGFuZ2UtcGFzc3dvcmQtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IE1mYU1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vbWZhLW1vZGFsL21mYS1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTG9naW5BdHRlbXB0TW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9sb2dpbi1hdHRlbXB0LW1vZGFsL2xvZ2luLWF0dGVtcHQtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IFNlc3Npb25MaXN0TW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9zZXNzaW9uLWxpc3QtbW9kYWwvc2Vzc2lvbi1saXN0LW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25NZXRhZGF0YSwgQ29tcG9uZW50U3RhdGVzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBEZXZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC9kZXZpY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGgvc2Vzc2lvbi5zZXJ2aWNlJztcbmltcG9ydCB7IERldmljZUluZm8sIFNlc3Npb25JbmZvLCBWYWxpZGF0ZUFjdGlvblJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC90eXBlcyc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgTGVnYWxMaW5rU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xlZ2FsLWxpbmsvbGVnYWwtbGluay5zZXJ2aWNlJztcbmltcG9ydCB7IE1vZGFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21vZGFsL21vZGFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NvbmZpcm1hdGlvbi1kaWFsb2cvY29uZmlybWF0aW9uLWRpYWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgY29ubmVjdFBhZ2VSZWZyZXNoIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcGFnZS1yZWZyZXNoL3BhZ2UtcmVmcmVzaC5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVmFsdGVjaEVycm9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Vycm9ycy92YWx0ZWNoLWVycm9yLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBTZWN1cml0eVZpZXdDb25maWcgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IFNFQ1VSSVRZX1ZJRVdfSTE4TiB9IGZyb20gJy4vc2VjdXJpdHktdmlldy5pMThuJztcblxuYWRkSWNvbnMoeyBsYXB0b3BPdXRsaW5lLCBwaG9uZVBvcnRyYWl0T3V0bGluZSB9KTtcblxuY29uc3QgREVGQVVMVF9OQU1FU1BBQ0UgPSAnU2V0dGluZ3MuU2VjdXJpdHknO1xuXG4vKipcbiAqIGB2YWwtc2VjdXJpdHktdmlld2Ag4oCUIHZpc3RhIFNlZ3VyaWRhZCBmdWxsLWZlYXR1cmUgYXV0b2NvbnRlbmlkYSAob3JnYW5pc20pLlxuICpcbiAqIFByb21vdmlkYSBkZXNkZSBgc2hvd2Nhc2VgIGJham8gZWwgcHJvY2VzbyBkZSBBRFItMDIxLiBSZcO6bmUgZW4gdW5hIHNvbGEgdmlzdGE6XG4gKiAgLSAqKlNlc2lvbmVzIGFjdGl2YXMqKiDigJQgw7puaWNhIHZpc3RhIHVzZXItZmFjaW5nIGRlIFwiZMOzbmRlIHRlbmdvIHNlc2nDs25cIi5cbiAqICAgIExpc3RhIGlubGluZSAobGltaXQgMykgKyBtb2RhbCBcIlZlciB0b2Rhc1wiIChgdmFsLXNlc3Npb24tbGlzdC1tb2RhbGApICtcbiAqICAgIHJldm9rZSBpbmRpdmlkdWFsIC8gcmV2b2tlLWFsbCAoY29uIGNvbmZpcm1hY2nDs24pLlxuICogIC0gKipBY3Rpb24tY2FyZHMqKiDigJQgY2FtYmlhciBjb250cmFzZcOxYSwgY2FtYmlhciBlbWFpbCB5IE1GQSAoY2FkYSB1bmEgYWJyZVxuICogICAgZWwgbW9kYWwgY29ycmVzcG9uZGllbnRlIGRlIGxhIGxpYikuXG4gKiAgLSAqKlBvbMOtdGljYXMgbGVnYWxlcyoqIOKAlCBsaW5rcyByZXN1ZWx0b3MgdsOtYSBgTGVnYWxMaW5rU2VydmljZWAgKGFwcHNcbiAqICAgIHNhdMOpbGl0ZSBhcHVudGFuIGFsIG1haW4gc2l0ZSkuXG4gKlxuICogRGVlcC1saW5rcyBkZWwgZW1haWwgKGdhdGVhZG9zIHBvciBgY29uZmlnLmhhbmRsZURlZXBMaW5rc2AsIGRlZmF1bHQgYHRydWVgKTpcbiAqICAtIGA/dG9rZW49Li4uJmFjdGlvbj0uLi5gIOKGkiBtb2RhbCBgdmFsLWxvZ2luLWF0dGVtcHQtbW9kYWxgIChhdXRvcml6YXIvYmxvcXVlYXJcbiAqICAgIGVsIG51ZXZvIGFjY2VzbykuXG4gKiAgLSBgP21mYUNvZGU9Li4uYCDihpIgYWJyZSBlbCBtb2RhbCBNRkEgY29uIGVsIGPDs2RpZ28gcHJlLWNhcmdhZG8uXG4gKlxuICogTk8gcmVuZGVyaXphIGlvbi1jb250ZW50IOKAlCB2aXZlIGRlbnRybyBkZSB2YWwtcGFnZS13cmFwcGVyLlxuICpcbiAqIEF1dG8tcmVnaXN0cmEgc3VzIGRlZmF1bHRzIGkxOG4gKGVzL2VuKSBlbiBlbCBjb25zdHJ1Y3RvciBzaSBlbCBjb25zdW1lciBub1xuICogcHJvdmV5w7MgZWwgbmFtZXNwYWNlIGNvbmZpZ3VyYWRvIChkZWZhdWx0IGBTZXR0aW5ncy5TZWN1cml0eWApLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtc2VjdXJpdHktdmlldycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSW9uR3JpZCxcbiAgICBJb25Sb3csXG4gICAgSW9uQ29sLFxuICAgIElvbkljb24sXG4gICAgRGlzcGxheUNvbXBvbmVudCxcbiAgICBUaXRsZUNvbXBvbmVudCxcbiAgICBUZXh0Q29tcG9uZW50LFxuICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICBBY3Rpb25DYXJkQ29tcG9uZW50LFxuICAgIEFjdGlvbkhlYWRlckNvbXBvbmVudCxcbiAgICBQYWdlTGlua3NDb21wb25lbnQsXG4gICAgU2tlbGV0b25MYXlvdXRDb21wb25lbnQsXG4gICAgQ2hhbmdlRW1haWxNb2RhbENvbXBvbmVudCxcbiAgICBDaGFuZ2VQYXNzd29yZE1vZGFsQ29tcG9uZW50LFxuICAgIE1mYU1vZGFsQ29tcG9uZW50LFxuICAgIENvbnRhaW5lckNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8dmFsLWNvbnRhaW5lciBbcHJvcHNdPVwieyBzaXplOiAnbWQnLCBwYWRkaW5nOiAnbm9uZScgfVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBhZ2VcIj5cbiAgICAgICAgPGhlYWRlciBjbGFzcz1cInBhZ2UtaGVhZGVyXCI+XG4gICAgICAgICAgPHZhbC1kaXNwbGF5IFtwcm9wc109XCJ7IHNpemU6ICdzbWFsbCcsIGNvbG9yOiAnZGFyaycsIGNvbnRlbnQ6IHBhZ2VUaXRsZSgpIH1cIiAvPlxuICAgICAgICAgIDx2YWwtdGl0bGVcbiAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgIHNpemU6ICdsYXJnZScsXG4gICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgICBjb250ZW50OiBwYWdlRGVzY3JpcHRpb24oKSxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgIEBpZiAocmVzb2x2ZWRDb25maWcoKS5zaG93U2Vzc2lvbnMpIHtcbiAgICAgICAgICA8IS0tIDEuIEFjdGl2ZSBzZXNzaW9ucyAtIHVuaWNhIHZpc3RhIHVzZXItZmFjaW5nIGRlIGRvbmRlIHRlbmdvIHNlc2lvbi4gLS0+XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJzZXR0aW5ncy1zZWN0aW9uXCI+XG4gICAgICAgICAgICBAaWYgKGhhc090aGVyU2Vzc2lvbnMoKSkge1xuICAgICAgICAgICAgICA8dmFsLWFjdGlvbi1oZWFkZXIgW3Byb3BzXT1cInNlc3Npb25zSGVhZGVyKClcIiAvPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDx2YWwtdGl0bGVcbiAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICAgICAgYm9sZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHNlc3Npb25zVGl0bGVXaXRoQ291bnQoKSxcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24tYm9keVwiPlxuICAgICAgICAgICAgICBAaWYgKHNlc3Npb25zTG9hZGluZygpKSB7XG4gICAgICAgICAgICAgICAgPHZhbC1za2VsZXRvbi1sYXlvdXQgW3Byb3BzXT1cInsgcHJlc2V0OiAnbGlzdCcsIHJvd3M6IDMgfVwiIC8+XG4gICAgICAgICAgICAgIH0gQGVsc2UgaWYgKHNlc3Npb25zKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBzZXNzaW9uc0VtcHR5TGFiZWwoKSxcbiAgICAgICAgICAgICAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJzZXNzaW9uc1wiPlxuICAgICAgICAgICAgICAgICAgQGZvciAocyBvZiB2aXNpYmxlU2Vzc2lvbnMoKTsgdHJhY2sgcy5zZXNzaW9uSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwic2Vzc2lvblwiIFtjbGFzcy5zZXNzaW9uLS1jdXJyZW50XT1cInMuaXNDdXJyZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIGNsYXNzPVwic2Vzc2lvbl9faWNvblwiIFtuYW1lXT1cImRldmljZUljb24ocylcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZXNzaW9uX19ib2R5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBzLmRldmljZUluZm8gfHwgcy5kZXZpY2VJZCB8fCAn4oCUJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvbGQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGZvcm1hdFNlc3Npb25NZXRhKHMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZXNzaW9uX19lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAocy5pc0N1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZXNzaW9uX19iYWRnZVwiPnt7IHNlc3Npb25zVGhpcygpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx2YWwtYnV0dG9uIFtwcm9wc109XCJyZXZva2VPbmVCdXR0b25Qcm9wcygpXCIgKGNsaWNrKT1cIm9uUmV2b2tlT25lKHMuc2Vzc2lvbklkKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICBAaWYgKGhhc01vcmVTZXNzaW9ucygpKSB7XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWFjdGlvbnMgcm93LWFjdGlvbnMtLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8dmFsLWJ1dHRvbiBbcHJvcHNdPVwidmlld0FsbEJ1dHRvblByb3BzKClcIiAoY2xpY2spPVwib3BlblNlc3Npb25zTW9kYWwoKVwiIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoaGFzQWN0aW9uQ2FyZHMoKSkge1xuICAgICAgICAgIDwhLS0gMi4gUXVpY2sgYWN0aW9uczogY2hhbmdlIHBhc3N3b3JkLCBjaGFuZ2UgZW1haWwsIE1GQSAtLT5cbiAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cInNldHRpbmdzLXNlY3Rpb25cIj5cbiAgICAgICAgICAgIDxoMj57eyBxdWlja0FjdGlvbnNUaXRsZSgpIH19PC9oMj5cbiAgICAgICAgICAgIDxpb24tZ3JpZCBjbGFzcz1cImNhcmRzLWdyaWRcIj5cbiAgICAgICAgICAgICAgPGlvbi1yb3c+XG4gICAgICAgICAgICAgICAgQGZvciAoYWN0aW9uIG9mIGFjdGlvbkNhcmRzKCk7IHRyYWNrIGFjdGlvbi50b2tlbikge1xuICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjEyXCIgc2l6ZS1zbT1cIjZcIj5cbiAgICAgICAgICAgICAgICAgICAgPHZhbC1hY3Rpb24tY2FyZCBbcHJvcHNdPVwiYWN0aW9uXCIgKG9uQ2xpY2spPVwib25BY3Rpb25DbGljayhhY3Rpb24pXCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvaW9uLXJvdz5cbiAgICAgICAgICAgIDwvaW9uLWdyaWQ+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmIChyZXNvbHZlZENvbmZpZygpLnNob3dQb2xpY2llcykge1xuICAgICAgICAgIDwhLS0gMy4gUmVsYXRlZCBwb2xpY2llcyAtLT5cbiAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cInNldHRpbmdzLXNlY3Rpb25cIj5cbiAgICAgICAgICAgIDxoMj57eyBwb2xpY2llc1RpdGxlKCkgfX08L2gyPlxuICAgICAgICAgICAgPHZhbC1wYWdlLWxpbmtzIFtwcm9wc109XCJwb2xpY3lMaW5rc1Byb3BzKClcIiAvPlxuICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgfVxuXG4gICAgICAgIDx2YWwtY2hhbmdlLWVtYWlsLW1vZGFsXG4gICAgICAgICAgW2lzT3Blbl09XCJpc0NoYW5nZUVtYWlsTW9kYWxPcGVuKClcIlxuICAgICAgICAgIChjaGFuZ2VkKT1cImlzQ2hhbmdlRW1haWxNb2RhbE9wZW4uc2V0KGZhbHNlKVwiXG4gICAgICAgICAgKGRpc21pc3NlZCk9XCJpc0NoYW5nZUVtYWlsTW9kYWxPcGVuLnNldChmYWxzZSlcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDx2YWwtY2hhbmdlLXBhc3N3b3JkLW1vZGFsXG4gICAgICAgICAgW2lzT3Blbl09XCJpc0NoYW5nZVBhc3N3b3JkTW9kYWxPcGVuKClcIlxuICAgICAgICAgIChjaGFuZ2VkKT1cImlzQ2hhbmdlUGFzc3dvcmRNb2RhbE9wZW4uc2V0KGZhbHNlKVwiXG4gICAgICAgICAgKGRpc21pc3NlZCk9XCJpc0NoYW5nZVBhc3N3b3JkTW9kYWxPcGVuLnNldChmYWxzZSlcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDx2YWwtbWZhLW1vZGFsXG4gICAgICAgICAgW2lzT3Blbl09XCJpc01mYU1vZGFsT3BlbigpXCJcbiAgICAgICAgICBbcHJlZmlsbENvZGVdPVwibWZhUHJlZmlsbENvZGUoKVwiXG4gICAgICAgICAgKGRpc21pc3NlZCk9XCJvbk1mYU1vZGFsRGlzbWlzc2VkKClcIlxuICAgICAgICAgIChlbmFibGVkVmlhRGVlcGxpbmspPVwib25NZmFFbmFibGVkVmlhRGVlcGxpbmsoKVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L3ZhbC1jb250YWluZXI+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC8qIEFuY2hvIHkgY3JlY2ltaWVudG8gY29uIGVsIHJhaWwgY29sYXBzYWRvIGxvcyBkYSB2YWwtY29udGFpbmVyIChzaXplXG4gICAgICAgICAnbWQnKSwgbm8gQ1NTIGxvY2FsOiB2ZXIgY29udGFpbmVyLmNvbXBvbmVudC5zY3NzLiAqL1xuICAgICAgLnBhZ2Uge1xuICAgICAgICBwYWRkaW5nOiAxNnB4IDA7XG4gICAgICB9XG4gICAgICAucGFnZS1oZWFkZXIge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICAgICAgfVxuICAgICAgLnNldHRpbmdzLXNlY3Rpb24ge1xuICAgICAgICBwYWRkaW5nOiAxNnB4IDA7XG4gICAgICB9XG4gICAgICAuc2V0dGluZ3Mtc2VjdGlvbiArIC5zZXR0aW5ncy1zZWN0aW9uIHtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXZhbC1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4wOCkpO1xuICAgICAgfVxuICAgICAgaDIge1xuICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIG1hcmdpbjogMCAwIDRweDtcbiAgICAgIH1cbiAgICAgIC5jYXJkcy1ncmlkIHtcbiAgICAgICAgbWFyZ2luOiAwIC00cHggMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgIH1cbiAgICAgIC5jYXJkcy1ncmlkIGlvbi1jb2wge1xuICAgICAgICBwYWRkaW5nOiA0cHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICB9XG4gICAgICAuY2FyZHMtZ3JpZCBpb24tY29sIHZhbC1hY3Rpb24tY2FyZCB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICB9XG5cbiAgICAgIC8qIC0tLSBTZXNzaW9ucyBzZWN0aW9uIC0tLSAqL1xuICAgICAgLnNlY3Rpb24tYm9keSB7XG4gICAgICAgIG1hcmdpbi10b3A6IDE2cHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgIH1cbiAgICAgIC5yb3ctYWN0aW9ucyB7XG4gICAgICAgIG1hcmdpbi10b3A6IDEycHg7XG4gICAgICB9XG4gICAgICAucm93LWFjdGlvbnMtLWNlbnRlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBtYXJnaW4tdG9wOiA0cHg7XG4gICAgICB9XG4gICAgICAuc2Vzc2lvbnMge1xuICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgIH1cbiAgICAgIC5zZXNzaW9uIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAxMnB4O1xuICAgICAgICBwYWRkaW5nOiAxNHB4IDE2cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE0cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1saWdodCwgcmdiYSgwLCAwLCAwLCAwLjA0KSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgIGJhY2tncm91bmQgMC4xNXMgZWFzZSxcbiAgICAgICAgICBib3JkZXItY29sb3IgMC4xNXMgZWFzZTtcbiAgICAgIH1cbiAgICAgIC5zZXNzaW9uLS1jdXJyZW50IHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSg0NSwgMjExLCAxMTEsIDAuMSk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSg0NSwgMjExLCAxMTEsIDAuMyk7XG4gICAgICB9XG4gICAgICAuc2Vzc2lvbl9faWNvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMjZweDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrLCAjMWExYTFhKTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICB9XG4gICAgICAuc2Vzc2lvbi0tY3VycmVudCAuc2Vzc2lvbl9faWNvbiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3Itc3VjY2Vzcy1zaGFkZSwgIzI4YmE2Mik7XG4gICAgICB9XG4gICAgICAuc2Vzc2lvbl9fYm9keSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMnB4O1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICB9XG4gICAgICAuc2Vzc2lvbl9fZW5kIHtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICB9XG4gICAgICAuc2Vzc2lvbl9fYmFkZ2Uge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHBhZGRpbmc6IDRweCAxMHB4O1xuICAgICAgICBmb250LXNpemU6IDExcHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAyZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3Itc3VjY2Vzcy1zaGFkZSwgIzI4YmE2Mik7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoNDUsIDIxMSwgMTExLCAwLjE4KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2VjdXJpdHlWaWV3Q29tcG9uZW50IHtcbiAgcHJpdmF0ZSBuYXYgPSBpbmplY3QoTmF2aWdhdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIGRldmljZVNlcnZpY2UgPSBpbmplY3QoRGV2aWNlU2VydmljZSk7XG4gIHByaXZhdGUgbGVnYWxMaW5rID0gaW5qZWN0KExlZ2FsTGlua1NlcnZpY2UpO1xuICBwcml2YXRlIHRvYXN0ID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XG4gIHByaXZhdGUgZXJyb3JzID0gaW5qZWN0KFZhbHRlY2hFcnJvclNlcnZpY2UpO1xuICBwcml2YXRlIHJvdXRlciA9IGluamVjdChSb3V0ZXIsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgc2Vzc2lvblNlcnZpY2UgPSBpbmplY3QoU2Vzc2lvblNlcnZpY2UpO1xuICBwcml2YXRlIG1vZGFsU2VydmljZSA9IGluamVjdChNb2RhbFNlcnZpY2UpO1xuICBwcml2YXRlIGNvbmZpcm1EaWFsb2cgPSBpbmplY3QoQ29uZmlybWF0aW9uRGlhbG9nU2VydmljZSk7XG5cbiAgLyoqXG4gICAqIENvbmZpZyB2w61hIEBJbnB1dCAob2JqZWN0LWZpcnN0KS4gU2kgbm8gc2UgcGFzYSwgc2UgY2FlIGFsIHJvdXRlIGRhdGFcbiAgICogYHNlY3VyaXR5Q29uZmlnYCAocG9ibGFkbyBwb3IgYHByb3ZpZGVWYWx0ZWNoU2VjdXJpdHlSb3V0ZXNgKS5cbiAgICogYHJlc29sdmVkQ29uZmlnYCBtZXJnZWEgY29uIGxvcyBkZWZhdWx0cyDigJQgYEBJbnB1dGAgZ2FuYSBzb2JyZSByb3V0ZSBkYXRhLlxuICAgKi9cbiAgQElucHV0KCkgY29uZmlnPzogU2VjdXJpdHlWaWV3Q29uZmlnO1xuXG4gIHJlYWRvbmx5IHJlc29sdmVkQ29uZmlnID0gY29tcHV0ZWQ8XG4gICAgUmVxdWlyZWQ8T21pdDxTZWN1cml0eVZpZXdDb25maWcsICdvbk1mYUNvbXBsZXRlZCc+PiAmIFBpY2s8U2VjdXJpdHlWaWV3Q29uZmlnLCAnb25NZmFDb21wbGV0ZWQnPlxuICA+KCgpID0+IHtcbiAgICBjb25zdCBmcm9tUm91dGUgPSAodGhpcy5yb3V0ZT8uc25hcHNob3QuZGF0YVsnc2VjdXJpdHlDb25maWcnXSA/PyB7fSkgYXMgU2VjdXJpdHlWaWV3Q29uZmlnO1xuICAgIGNvbnN0IG1lcmdlZDogU2VjdXJpdHlWaWV3Q29uZmlnID0geyAuLi5mcm9tUm91dGUsIC4uLih0aGlzLmNvbmZpZyA/PyB7fSkgfTtcbiAgICByZXR1cm4ge1xuICAgICAgc2hvd1Nlc3Npb25zOiBtZXJnZWQuc2hvd1Nlc3Npb25zID8/IHRydWUsXG4gICAgICBzaG93Q2hhbmdlUGFzc3dvcmQ6IG1lcmdlZC5zaG93Q2hhbmdlUGFzc3dvcmQgPz8gdHJ1ZSxcbiAgICAgIHNob3dDaGFuZ2VFbWFpbDogbWVyZ2VkLnNob3dDaGFuZ2VFbWFpbCA/PyB0cnVlLFxuICAgICAgc2hvd01mYTogbWVyZ2VkLnNob3dNZmEgPz8gdHJ1ZSxcbiAgICAgIHNob3dQb2xpY2llczogbWVyZ2VkLnNob3dQb2xpY2llcyA/PyB0cnVlLFxuICAgICAgaTE4bk5hbWVzcGFjZTogbWVyZ2VkLmkxOG5OYW1lc3BhY2UgPz8gREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgICBoYW5kbGVEZWVwTGlua3M6IG1lcmdlZC5oYW5kbGVEZWVwTGlua3MgPz8gdHJ1ZSxcbiAgICAgIGhvbWVSb3V0ZTogbWVyZ2VkLmhvbWVSb3V0ZSA/PyAnL2FwcC9ob21lJyxcbiAgICAgIG9uTWZhQ29tcGxldGVkOiBtZXJnZWQub25NZmFDb21wbGV0ZWQsXG4gICAgfTtcbiAgfSk7XG5cbiAgLyoqIE5hbWVzcGFjZSBpMThuIHJlc3VlbHRvIChjYXB0dXJhZG8gcGFyYSBsbGFtYWRhcyBuby1yZWFjdGl2YXMpLiAqL1xuICBwcml2YXRlIGdldCBucygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVkQ29uZmlnKCkuaTE4bk5hbWVzcGFjZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0YSBkZSBkaXNwb3NpdGl2b3MgZGVsIHVzZXIuIE5vIHNlIHJlbmRlcml6YSDigJQgc29sbyBhbGltZW50YSBlbCBtb2RhbFxuICAgKiBkZSBjb25maXJtYWNpw7NuIGRlIGluaWNpbyBkZSBzZXNpw7NuIChgaGFuZGxlQWN0aW9uVG9rZW5Gcm9tVXJsYCkgcGFyYVxuICAgKiByZXNvbHZlciB1biBsYWJlbCBsZWdpYmxlIGRlc2RlIGVsIGB0YXJnZXRJZGAgZGVsIHRva2VuLlxuICAgKi9cbiAgcHJvdGVjdGVkIGRldmljZXMgPSBzaWduYWw8RGV2aWNlSW5mb1tdPihbXSk7XG5cbiAgcmVhZG9ubHkgc2Vzc2lvbnMgPSBzaWduYWw8U2Vzc2lvbkluZm9bXT4oW10pO1xuICByZWFkb25seSBzZXNzaW9uc0xvYWRpbmcgPSBzaWduYWwodHJ1ZSk7XG5cbiAgcmVhZG9ubHkgaXNDaGFuZ2VFbWFpbE1vZGFsT3BlbiA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGlzQ2hhbmdlUGFzc3dvcmRNb2RhbE9wZW4gPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBpc01mYU1vZGFsT3BlbiA9IHNpZ25hbChmYWxzZSk7XG4gIC8qKiBDw7NkaWdvIE1GQSBkZWwgZGVlcC1saW5rIGAvdmVyaWZ5YCDigJQgcHJlLWNhcmdhIGVsIG1vZGFsIGVuIGNvbmZpcm1hY2nDs24uICovXG4gIHJlYWRvbmx5IG1mYVByZWZpbGxDb2RlID0gc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICByZWFkb25seSBwYWdlVGl0bGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnR0KCdwYWdlVGl0bGUnKSk7XG4gIHJlYWRvbmx5IHBhZ2VEZXNjcmlwdGlvbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHQoJ3BhZ2VEZXNjcmlwdGlvbicpKTtcblxuICByZWFkb25seSBxdWlja0FjdGlvbnNUaXRsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHQoJ3F1aWNrQWN0aW9uc1RpdGxlJykpO1xuICByZWFkb25seSBwb2xpY2llc1RpdGxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50dCgncG9saWNpZXNUaXRsZScpKTtcblxuICByZWFkb25seSBoYXNBY3Rpb25DYXJkcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYWN0aW9uQ2FyZHMoKS5sZW5ndGggPiAwKTtcblxuICByZWFkb25seSBhY3Rpb25DYXJkcyA9IGNvbXB1dGVkPEFjdGlvbkNhcmRNZXRhZGF0YVtdPigoKSA9PiB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICBjb25zdCBjZmcgPSB0aGlzLnJlc29sdmVkQ29uZmlnKCk7XG4gICAgY29uc3QgY2FyZHM6IEFjdGlvbkNhcmRNZXRhZGF0YVtdID0gW107XG4gICAgaWYgKGNmZy5zaG93Q2hhbmdlUGFzc3dvcmQpIHtcbiAgICAgIGNhcmRzLnB1c2goe1xuICAgICAgICB0b2tlbjogJ2FjdGlvbi1jaGFuZ2UtcGFzc3dvcmQnLFxuICAgICAgICB0aXRsZTogdGhpcy50dCgnY2hhbmdlUGFzc3dvcmQnKSxcbiAgICAgICAgZGVzY3JpcHRpb246IHRoaXMudHQoJ2NoYW5nZVBhc3N3b3JkRGVzYycpLFxuICAgICAgICBpY29uOiB7IGlvbmljb246ICdrZXktb3V0bGluZScsIGNvbG9yOiAnZGFyaycsIGJhY2tncm91bmRDb2xvcjogJ2xpZ2h0JyB9LFxuICAgICAgICBzaG93Q2hldnJvbjogdHJ1ZSxcbiAgICAgICAgc2hhZG93ZWQ6IHRydWUsXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGNmZy5zaG93Q2hhbmdlRW1haWwpIHtcbiAgICAgIGNhcmRzLnB1c2goe1xuICAgICAgICB0b2tlbjogJ2FjdGlvbi1jaGFuZ2UtZW1haWwnLFxuICAgICAgICB0aXRsZTogdGhpcy50dCgnY2hhbmdlRW1haWwnKSxcbiAgICAgICAgZGVzY3JpcHRpb246IHRoaXMudHQoJ2NoYW5nZUVtYWlsRGVzYycpLFxuICAgICAgICBpY29uOiB7IGlvbmljb246ICdtYWlsLW91dGxpbmUnLCBjb2xvcjogJ2RhcmsnLCBiYWNrZ3JvdW5kQ29sb3I6ICdsaWdodCcgfSxcbiAgICAgICAgc2hvd0NoZXZyb246IHRydWUsXG4gICAgICAgIHNoYWRvd2VkOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChjZmcuc2hvd01mYSkge1xuICAgICAgY2FyZHMucHVzaCh7XG4gICAgICAgIHRva2VuOiAnYWN0aW9uLW1mYScsXG4gICAgICAgIHRpdGxlOiB0aGlzLnR0KCdtZmEnKSxcbiAgICAgICAgZGVzY3JpcHRpb246IHRoaXMudHQoJ21mYURlc2MnKSxcbiAgICAgICAgaWNvbjogeyBpb25pY29uOiAnc2hpZWxkLWNoZWNrbWFyay1vdXRsaW5lJywgY29sb3I6ICdkYXJrJywgYmFja2dyb3VuZENvbG9yOiAnbGlnaHQnIH0sXG4gICAgICAgIHNob3dDaGV2cm9uOiB0cnVlLFxuICAgICAgICBzaGFkb3dlZDogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gY2FyZHM7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBGdWVudGUgw7puaWNhIGRlIGxpbmtzIGxlZ2FsZXMgZGVsIHByb2R1Y3RvLiBTZSByZXN1ZWx2ZW4gdsOtYVxuICAgKiBgTGVnYWxMaW5rU2VydmljZWAg4oCUIGFwcHMgc2F0w6lsaXRlIGFwdW50YW4gYWwgbWFpbiBzaXRlLCBlbCBtYWluIHNpdGUgbG9zXG4gICAqIGRlamEgcmVsYXRpdm9zLlxuICAgKi9cbiAgcmVhZG9ubHkgcG9saWN5TGlua3NQcm9wcyA9IGNvbXB1dGVkPFBhZ2VMaW5rc01ldGFkYXRhPigoKSA9PiB7XG4gICAgY29uc3QgbG9jYWxlID0gdGhpcy5pMThuLmxhbmcoKTtcbiAgICBjb25zdCBsaW5rID0gKHBhdGg6IHN0cmluZywgbGFiZWxLZXk6IHN0cmluZykgPT4gKHtcbiAgICAgIGxhYmVsOiB0aGlzLnR0KGxhYmVsS2V5KSxcbiAgICAgIGhyZWY6IHRoaXMubGVnYWxMaW5rLnJlc29sdmUocGF0aCwgeyBsb2NhbGUgfSksXG4gICAgICBleHRlcm5hbDogdGhpcy5sZWdhbExpbmsuaXNFeHRlcm5hbChwYXRoKSxcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgbGlua3M6IFtcbiAgICAgICAgbGluaygnL2xlZ2FsL3Rlcm1zJywgJ3Rlcm1zTGluaycpLFxuICAgICAgICBsaW5rKCcvbGVnYWwvcHJpdmFjeScsICdwcml2YWN5TGluaycpLFxuICAgICAgICBsaW5rKCcvbGVnYWwvY29va2llcycsICdjb29raWVzTGluaycpLFxuICAgICAgICBsaW5rKCcvbGVnYWwvZGF0YS11c2FnZScsICdkYXRhVXNhZ2VMaW5rJyksXG4gICAgICAgIGxpbmsoJy9sZWdhbC90aGlyZC1wYXJ0eScsICd0aGlyZFBhcnR5TGluaycpLFxuICAgICAgICBsaW5rKCcvbGVnYWwvbGVnYWwtbm90aWNlJywgJ2xlZ2FsTm90aWNlTGluaycpLFxuICAgICAgXSxcbiAgICAgIHNob3dEaXZpZGVyczogdHJ1ZSxcbiAgICB9O1xuICB9KTtcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gU2Vzc2lvbnNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgcmVhZG9ubHkgc2Vzc2lvbnNUaXRsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHQoJ3Nlc3Npb25zVGl0bGUnKSk7XG4gIHJlYWRvbmx5IHNlc3Npb25zRW1wdHlMYWJlbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHQoJ3Nlc3Npb25zRW1wdHknKSk7XG4gIHJlYWRvbmx5IHNlc3Npb25zVGhpcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHQoJ3Nlc3Npb25zVGhpcycpKTtcblxuICByZWFkb25seSBoYXNPdGhlclNlc3Npb25zID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zZXNzaW9ucygpLnNvbWUocyA9PiAhcy5pc0N1cnJlbnQpKTtcblxuICAvKiogU2VzaW9uZXMgb3JkZW5hZGFzOiBjdXJyZW50IHByaW1lcm8sIHJlc3RvIHBvciBjcmVhdGVkQXQgZGVzYy4gKi9cbiAgcmVhZG9ubHkgc29ydGVkU2Vzc2lvbnMgPSBjb21wdXRlZDxTZXNzaW9uSW5mb1tdPigoKSA9PiB7XG4gICAgY29uc3QgYWxsID0gWy4uLnRoaXMuc2Vzc2lvbnMoKV07XG4gICAgcmV0dXJuIGFsbC5zb3J0KChhLCBiKSA9PiB7XG4gICAgICBpZiAoYS5pc0N1cnJlbnQgJiYgIWIuaXNDdXJyZW50KSByZXR1cm4gLTE7XG4gICAgICBpZiAoIWEuaXNDdXJyZW50ICYmIGIuaXNDdXJyZW50KSByZXR1cm4gMTtcbiAgICAgIHJldHVybiAoYi5jcmVhdGVkQXQgfHwgJycpLmxvY2FsZUNvbXBhcmUoYS5jcmVhdGVkQXQgfHwgJycpO1xuICAgIH0pO1xuICB9KTtcblxuICAvKiogTGltaXQgZGUgc2VzaW9uZXMgbW9zdHJhZGFzIGlubGluZS4gU2kgdG90YWwgPiBsaW1pdCwgXCJWZXIgdG9kYXNcIiBhYnJlIG1vZGFsLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IFZJU0lCTEVfTElNSVQgPSAzO1xuXG4gIHJlYWRvbmx5IHZpc2libGVTZXNzaW9ucyA9IGNvbXB1dGVkPFNlc3Npb25JbmZvW10+KCgpID0+IHRoaXMuc29ydGVkU2Vzc2lvbnMoKS5zbGljZSgwLCB0aGlzLlZJU0lCTEVfTElNSVQpKTtcblxuICByZWFkb25seSBoYXNNb3JlU2Vzc2lvbnMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNvcnRlZFNlc3Npb25zKCkubGVuZ3RoID4gdGhpcy5WSVNJQkxFX0xJTUlUKTtcblxuICAvKiogVGl0dWxvIGNvbiBjb3VudDogXCJTZXNpb25lcyBhY3RpdmFzICg0KVwiLiBTaW4gY291bnQgc2kgTj0wLiAqL1xuICByZWFkb25seSBzZXNzaW9uc1RpdGxlV2l0aENvdW50ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG4gPSB0aGlzLnNvcnRlZFNlc3Npb25zKCkubGVuZ3RoO1xuICAgIGlmIChuID09PSAwKSByZXR1cm4gdGhpcy5zZXNzaW9uc1RpdGxlKCk7XG4gICAgcmV0dXJuIHRoaXMudHQoJ3Nlc3Npb25zVGl0bGVDb3VudCcpLnJlcGxhY2UoJ3tufScsIFN0cmluZyhuKSk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHJldm9rZU9uZUJ1dHRvblByb3BzID0gY29tcHV0ZWQ8UGFydGlhbDxCdXR0b25NZXRhZGF0YT4+KCgpID0+ICh7XG4gICAgdGV4dDogdGhpcy50dCgnc2Vzc2lvbnNSZXZva2UnKSxcbiAgICBjb2xvcjogJ2RhcmsnLFxuICAgIGZpbGw6ICdjbGVhcicsXG4gICAgc2l6ZTogJ3NtYWxsJyxcbiAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICB0b2tlbjogJ3Nlc3Npb24tcmV2b2tlJyxcbiAgfSkpO1xuXG4gIHJlYWRvbmx5IHZpZXdBbGxCdXR0b25Qcm9wcyA9IGNvbXB1dGVkPFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+PigoKSA9PiAoe1xuICAgIHRleHQ6IHRoaXMudHQoJ3Nlc3Npb25zVmlld0FsbCcpLFxuICAgIGNvbG9yOiAnZGFyaycsXG4gICAgZmlsbDogJ2NsZWFyJyxcbiAgICBzaXplOiAnc21hbGwnLFxuICAgIHR5cGU6ICdidXR0b24nLFxuICAgIHN0YXRlOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgfSkpO1xuXG4gIC8qKiBBY3Rpb24taGVhZGVyIGRlIFNlc2lvbmVzOiB0aXRsZSArIGNvdW50ICsgYm90b24gXCJDZXJyYXIgdG9kYXMgbGFzIGRlbWFzXCIuICovXG4gIHJlYWRvbmx5IHNlc3Npb25zSGVhZGVyID0gY29tcHV0ZWQ8QWN0aW9uSGVhZGVyTWV0YWRhdGE+KCgpID0+ICh7XG4gICAgaGVhZGluZ0tpbmQ6ICd0aXRsZScsXG4gICAgdGl0bGU6IHtcbiAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgIGJvbGQ6IHRydWUsXG4gICAgICBjb250ZW50OiB0aGlzLnNlc3Npb25zVGl0bGVXaXRoQ291bnQoKSxcbiAgICB9LFxuICAgIGFjdGlvbjoge1xuICAgICAgdGV4dDogdGhpcy50dCgnc2Vzc2lvbnNSZXZva2VBbGwnKSxcbiAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgICB0b2tlbjogJ3Nlc3Npb24tcmV2b2tlLWFsbCcsXG4gICAgICBoYW5kbGVyOiAoKSA9PiB0aGlzLm9uUmV2b2tlQWxsKCksXG4gICAgfSxcbiAgfSkpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IG5zID0gdGhpcy5ucztcbiAgICB0aGlzLmkxOG4ucmVnaXN0ZXJEZWZhdWx0cyhucywgU0VDVVJJVFlfVklFV19JMThOKTtcbiAgICB0aGlzLm5hdi5zZXRCYWNrSGVhZGVyKCdwYWdlVGl0bGUnLCBucywgeyB3aXRoTWVudTogdHJ1ZSB9KTtcblxuICAgIC8vIENhcmdhIGluaWNpYWwgZGUgc2VzaW9uZXMgLSByZWNhcmdhIHJlYWN0aXZhIGEgY2FtYmlvIGRlIGxvY2FsZSBwYXJhXG4gICAgLy8gcXVlIGxvcyB0ZXh0b3MgeSBtZXRhZGF0b3Mgc2UgbWFudGVuZ2FuIGZyZXNjb3MuIExvcyBkZXZpY2VzIHNvbG8gc2VcbiAgICAvLyBjYXJnYW4gb24tZGVtYW5kIGRlc2RlIGVsIGZsdWpvIGRlbCBtb2RhbCAoaGFuZGxlQWN0aW9uVG9rZW5Gcm9tVXJsKS5cbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgICAgIGNvbnN0IHNob3dTZXNzaW9ucyA9IHRoaXMucmVzb2x2ZWRDb25maWcoKS5zaG93U2Vzc2lvbnM7XG4gICAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHNob3dTZXNzaW9ucykgdm9pZCB0aGlzLmxvYWRTZXNzaW9ucygpO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuXG4gICAgLy8gUHVsbC10by1yZWZyZXNoIGVzdGFuZGFyIChSZWdsYSAjMykgLSByZS1mZXRjaGVhIGxhcyBzZXNpb25lcyBhY3RpdmFzLlxuICAgIGNvbm5lY3RQYWdlUmVmcmVzaCgoKSA9PiB0aGlzLmxvYWRTZXNzaW9ucygpKTtcblxuICAgIC8vIERlZXAtbGlua3MgZGVsIGVtYWlsIC0gc29sbyBzaSBlc3RhbiBoYWJpbGl0YWRvcyBZIGhheSBydXRhIChtb250YWRhIGNvbW9cbiAgICAvLyByb3V0ZSkuIEVuIG1vZG8gZW1iZWJpZG8gc2luIHJ1dGEgZXMgbm8tb3AuXG4gICAgaWYgKHRoaXMucmVzb2x2ZWRDb25maWcoKS5oYW5kbGVEZWVwTGlua3MgJiYgdGhpcy5yb3V0ZSkge1xuICAgICAgLy8gU2kgZWwgdXNlciBsbGVnbyB2aWEgbGluayBkZWwgZW1haWwgKD90b2tlbj0uLi4mYWN0aW9uPS4uLiksIGFicmUgZWxcbiAgICAgIC8vIG1vZGFsIGRlIGNvbmZpcm1hY2lvbiBwYXJhIGF1dG9yaXphci9yZWNoYXphciBlbCBpbnRlbnRvLlxuICAgICAgdm9pZCB0aGlzLmhhbmRsZUFjdGlvblRva2VuRnJvbVVybCgpO1xuICAgICAgLy8gRGVlcC1saW5rIGRlbCBlbWFpbCBkZSBzZXR1cCBNRkEtZW1haWwgKD9tZmFDb2RlPS4uLikuXG4gICAgICB0aGlzLmhhbmRsZU1mYUNvZGVGcm9tVXJsKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIExsZWdhIHbDrWEgbGluayBkZWwgZW1haWwgZGUgXCJudWV2byBhY2Nlc29cIiAoYD90b2tlbj0uLi5gKS4gVmFsaWRhIGVsIHRva2VuXG4gICAqIChzaW4gZWplY3V0YXIpIHkgbGV2YW50YSBlbCBtb2RhbCBkZSBjb25maXJtYWNpw7NuLiBFbCBibG9xdWVvIHNvbG8gc2VcbiAgICogZWplY3V0YSBzaSBlbCB1c2VyIGNvbmZpcm1hIFwibm8gZnVpIHlvXCIgZGVudHJvIGRlbCBtb2RhbC5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlQWN0aW9uVG9rZW5Gcm9tVXJsKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHRva2VuID0gdGhpcy5yb3V0ZT8uc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQoJ3Rva2VuJyk7XG4gICAgaWYgKCF0b2tlbikgcmV0dXJuO1xuXG4gICAgLy8gTGltcGlhID90b2tlbi8/YWN0aW9uIGRlIGxhIFVSTCB5YSAtIGVsIG1vZGFsIGVzIGxhIGZ1ZW50ZSBkZSB2ZXJkYWQ7XG4gICAgLy8gdW4gcmVmcmVzaCBubyBkZWJlIHJlLWFicmlybG8gbmkgcmUtdmFsaWRhci5cbiAgICB2b2lkIHRoaXMucm91dGVyPy5uYXZpZ2F0ZShbXSwge1xuICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSA/PyB1bmRlZmluZWQsXG4gICAgICBxdWVyeVBhcmFtczogeyB0b2tlbjogbnVsbCwgYWN0aW9uOiBudWxsIH0sXG4gICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnLFxuICAgICAgcmVwbGFjZVVybDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIGxldCB2YWxpZGF0aW9uOiBWYWxpZGF0ZUFjdGlvblJlc3BvbnNlO1xuICAgIHRyeSB7XG4gICAgICB2YWxpZGF0aW9uID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5kZXZpY2VTZXJ2aWNlLnZhbGlkYXRlQWN0aW9uKHRva2VuKSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmVycm9ycy5oYW5kbGUoZXJyLCB7XG4gICAgICAgIGNvbnRleHQ6ICdzZWN1cml0eS52YWxpZGF0ZUFjdGlvblRva2VuJyxcbiAgICAgICAgZmFsbGJhY2tLZXk6ICd0b2tlbkFjdGlvbkZhaWxlZCcsXG4gICAgICAgIGkxOG5OYW1lc3BhY2U6IHRoaXMubnMsXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCF2YWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICB0aGlzLnRvYXN0VG9rZW5JbnZhbGlkKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gUmVzdWVsdmUgZWwgZGlzcG9zaXRpdm8gb2JqZXRpdm8gZGVzZGUgbGEgbGlzdGEgY2FyZ2FkYSBwYXJhIG1vc3RyYXJsby5cbiAgICBhd2FpdCB0aGlzLmxvYWREZXZpY2VzKCk7XG4gICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5kZXZpY2VzKCkuZmluZChkID0+IGQuZGV2aWNlSWQgPT09IHZhbGlkYXRpb24udGFyZ2V0SWQpO1xuICAgIGNvbnN0IGlzTW9iaWxlID0gdGFyZ2V0Py5wbGF0Zm9ybSA9PT0gJ2lvcycgfHwgdGFyZ2V0Py5wbGF0Zm9ybSA9PT0gJ2FuZHJvaWQnO1xuXG4gICAgY29uc3Qgb25CbG9jayA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuZGV2aWNlU2VydmljZS5leGVjdXRlQWN0aW9uKHRva2VuKSk7XG4gICAgICBhd2FpdCB0aGlzLmxvYWREZXZpY2VzKCk7XG4gICAgfTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW48TG9naW5BdHRlbXB0TW9kYWxDb21wb25lbnQ+KHtcbiAgICAgIGNvbXBvbmVudDogTG9naW5BdHRlbXB0TW9kYWxDb21wb25lbnQsXG4gICAgICBjb21wb25lbnRQcm9wczoge1xuICAgICAgICB0aXRsZTogdGhpcy50dCgnbG9naW5BdHRlbXB0VGl0bGUnKSxcbiAgICAgICAgYm9keTogdGhpcy50dCgnbG9naW5BdHRlbXB0Qm9keScpLFxuICAgICAgICBkZXZpY2VMYWJlbDogdGFyZ2V0ID8gdGhpcy5kZXNjcmliZURldmljZSh0YXJnZXQpIDogdGhpcy50dCgnbG9naW5BdHRlbXB0VW5rbm93bkRldmljZScpLFxuICAgICAgICBtZXRhTGFiZWw6IHRhcmdldCA/IHRoaXMuZm9ybWF0RGF0ZSh0YXJnZXQubGFzdEFjdGl2ZSkgOiAnJyxcbiAgICAgICAgbWluZUxhYmVsOiB0aGlzLnR0KCdsb2dpbkF0dGVtcHRNaW5lJyksXG4gICAgICAgIGJsb2NrTGFiZWw6IHRoaXMudHQoJ2xvZ2luQXR0ZW1wdEJsb2NrJyksXG4gICAgICAgIGNsb3NlTGFiZWw6IHRoaXMudHQoJ2xvZ2luQXR0ZW1wdENsb3NlJyksXG4gICAgICAgIGRvbmVMYWJlbDogdGhpcy50dCgnbG9naW5BdHRlbXB0RG9uZScpLFxuICAgICAgICBpc01vYmlsZSxcbiAgICAgICAgb25CbG9jayxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBpZiAocmVzdWx0LnJvbGUgPT09ICdibG9ja2VkJykge1xuICAgICAgdGhpcy50b2FzdE9rKHRoaXMudHQoJ2Jsb2NrZWQnKSk7XG4gICAgfSBlbHNlIGlmIChyZXN1bHQucm9sZSA9PT0gJ2Vycm9yJykge1xuICAgICAgdGhpcy50b2FzdFRva2VuSW52YWxpZCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdG9hc3RUb2tlbkludmFsaWQoKTogdm9pZCB7XG4gICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgIG1lc3NhZ2U6IHRoaXMudHQoJ3Rva2VuQWN0aW9uRmFpbGVkJyksXG4gICAgICBkdXJhdGlvbjogMzUwMCxcbiAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICBwb3NpdGlvbjogJ3RvcCcsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBsb2FkRGV2aWNlcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbGlzdCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuZGV2aWNlU2VydmljZS5saXN0RGV2aWNlcygpKTtcbiAgICAgIHRoaXMuZGV2aWNlcy5zZXQobGlzdCB8fCBbXSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLmRldmljZXMuc2V0KFtdKTtcbiAgICB9XG4gIH1cblxuICBvbkFjdGlvbkNsaWNrKGFjdGlvbjogQWN0aW9uQ2FyZE1ldGFkYXRhKTogdm9pZCB7XG4gICAgaWYgKGFjdGlvbi50b2tlbiA9PT0gJ2FjdGlvbi1jaGFuZ2UtcGFzc3dvcmQnKSB7XG4gICAgICB0aGlzLmlzQ2hhbmdlUGFzc3dvcmRNb2RhbE9wZW4uc2V0KHRydWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uLnRva2VuID09PSAnYWN0aW9uLWNoYW5nZS1lbWFpbCcpIHtcbiAgICAgIHRoaXMuaXNDaGFuZ2VFbWFpbE1vZGFsT3Blbi5zZXQodHJ1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChhY3Rpb24udG9rZW4gPT09ICdhY3Rpb24tbWZhJykge1xuICAgICAgdGhpcy5tZmFQcmVmaWxsQ29kZS5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMuaXNNZmFNb2RhbE9wZW4uc2V0KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIG9uTWZhTW9kYWxEaXNtaXNzZWQoKTogdm9pZCB7XG4gICAgdGhpcy5pc01mYU1vZGFsT3Blbi5zZXQoZmFsc2UpO1xuICAgIHRoaXMubWZhUHJlZmlsbENvZGUuc2V0KHVuZGVmaW5lZCk7XG4gIH1cblxuICAvKipcbiAgICogRWwgdXNlciBsbGVnw7MgdsOtYSBsaW5rIGRlbCBlbWFpbCwgY29uZmlybcOzIE1GQSBlbiBlbCBtb2RhbC4gQ2VycmFtb3MgZWxcbiAgICogbW9kYWwgeSwgc2kgaGF5IGhvb2sgYG9uTWZhQ29tcGxldGVkYCwgbG8gaW52b2NhbW9zOyBzaSBubywgbmF2ZWdhbW9zIGFsXG4gICAqIGBob21lUm91dGVgIGNvbmZpZ3VyYWRvIOKAlCBxdWVkYXJzZSBlbiBTZXR0aW5ncyDihpIgU2VjdXJpdHkgZGFyw61hIGxhXG4gICAqIHNlbnNhY2nDs24gZGUgXCJ0YXJlYSBpbmNvbmNsdXNhXCIgY3VhbmRvIGVsIGZsb3cgeWEgdGVybWluw7MuXG4gICAqL1xuICBvbk1mYUVuYWJsZWRWaWFEZWVwbGluaygpOiB2b2lkIHtcbiAgICB0aGlzLmlzTWZhTW9kYWxPcGVuLnNldChmYWxzZSk7XG4gICAgdGhpcy5tZmFQcmVmaWxsQ29kZS5zZXQodW5kZWZpbmVkKTtcbiAgICBjb25zdCBjZmcgPSB0aGlzLnJlc29sdmVkQ29uZmlnKCk7XG4gICAgaWYgKGNmZy5vbk1mYUNvbXBsZXRlZCkge1xuICAgICAgY2ZnLm9uTWZhQ29tcGxldGVkKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZvaWQgdGhpcy5yb3V0ZXI/Lm5hdmlnYXRlQnlVcmwoY2ZnLmhvbWVSb3V0ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlZXAtbGluayBgL3ZlcmlmeT8uLi4mdmVyaWZ5LWNvZGU9YCDihpIgcmVkaXJpZ2UgYSBlc3RhIHZpc3RhIGNvbiBgP21mYUNvZGU9YC5cbiAgICogQWJyZSBlbCBtb2RhbCBNRkEgY29uIGVsIGPDs2RpZ28gcHJlLWNhcmdhZG8gZW4gZWwgcGFzbyBkZSBjb25maXJtYWNpw7NuLlxuICAgKi9cbiAgcHJpdmF0ZSBoYW5kbGVNZmFDb2RlRnJvbVVybCgpOiB2b2lkIHtcbiAgICBjb25zdCBjb2RlID0gdGhpcy5yb3V0ZT8uc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQoJ21mYUNvZGUnKTtcbiAgICBpZiAoIWNvZGUpIHJldHVybjtcbiAgICAvLyBMaW1waWEgZWwgcXVlcnkgcGFyYW0gLSB1biByZWZyZXNoIG5vIGRlYmUgcmUtYWJyaXIgZWwgbW9kYWwuXG4gICAgdm9pZCB0aGlzLnJvdXRlcj8ubmF2aWdhdGUoW10sIHtcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUgPz8gdW5kZWZpbmVkLFxuICAgICAgcXVlcnlQYXJhbXM6IHsgbWZhQ29kZTogbnVsbCB9LFxuICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJyxcbiAgICAgIHJlcGxhY2VVcmw6IHRydWUsXG4gICAgfSk7XG4gICAgdGhpcy5tZmFQcmVmaWxsQ29kZS5zZXQoY29kZSk7XG4gICAgdGhpcy5pc01mYU1vZGFsT3Blbi5zZXQodHJ1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZGVzY3JpYmVEZXZpY2UoZDogRGV2aWNlSW5mbyk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFydHMgPSBbZC5wbGF0Zm9ybSwgZC5icm93c2VyLCBkLmxvY2F0aW9uXS5maWx0ZXIoQm9vbGVhbik7XG4gICAgcmV0dXJuIHBhcnRzLmpvaW4oJyDCtyAnKSB8fCBkLmRldmljZUlkO1xuICB9XG5cbiAgcHJvdGVjdGVkIGZvcm1hdERhdGUoaXNvPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIWlzbykgcmV0dXJuICcnO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUoaXNvKS50b0xvY2FsZVN0cmluZyh0aGlzLmkxOG4ubGFuZygpKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBpc287XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB0b2FzdE9rKG1zZzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgIG1lc3NhZ2U6IG1zZyxcbiAgICAgIGR1cmF0aW9uOiAyMjAwLFxuICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgIHBvc2l0aW9uOiAndG9wJyxcbiAgICB9KTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBTZXNzaW9ucyAtIG3DqXRvZG9zXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKiBJY29ubyBzZWfDum4gZGV2aWNlOiBwaG9uZSBzaSBVQSBtb2JpbGUsIHNpbm8gbGFwdG9wLiAqL1xuICBkZXZpY2VJY29uKHM6IFNlc3Npb25JbmZvKTogc3RyaW5nIHtcbiAgICBjb25zdCB1YSA9IChzLmRldmljZUluZm8gfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgaXNNb2JpbGUgPSAvaXBob25lfGlwYWR8aXBvZHxhbmRyb2lkfG1vYmlsZS8udGVzdCh1YSk7XG4gICAgcmV0dXJuIGlzTW9iaWxlID8gJ3Bob25lLXBvcnRyYWl0LW91dGxpbmUnIDogJ2xhcHRvcC1vdXRsaW5lJztcbiAgfVxuXG4gIGZvcm1hdFNlc3Npb25NZXRhKHM6IFNlc3Npb25JbmZvKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYXJ0czogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAocy5sb2NhdGlvbikgcGFydHMucHVzaChzLmxvY2F0aW9uKTtcbiAgICBlbHNlIGlmIChzLmlwKSBwYXJ0cy5wdXNoKHMuaXApO1xuICAgIGlmIChzLmNyZWF0ZWRBdCkgcGFydHMucHVzaChuZXcgRGF0ZShzLmNyZWF0ZWRBdCkudG9Mb2NhbGVTdHJpbmcoKSk7XG4gICAgcmV0dXJuIHBhcnRzLmpvaW4oJyDCtyAnKTtcbiAgfVxuXG4gIGFzeW5jIG9uUmV2b2tlT25lKHNlc3Npb25JZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc2Vzc2lvblNlcnZpY2UucmV2b2tlU2Vzc2lvbihzZXNzaW9uSWQpKTtcbiAgICAgIHRoaXMudG9hc3Quc2hvdyh7XG4gICAgICAgIG1lc3NhZ2U6IHRoaXMudHQoJ3Nlc3Npb25zUmV2b2tlZCcpLFxuICAgICAgICBkdXJhdGlvbjogMjUwMCxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgcG9zaXRpb246ICd0b3AnLFxuICAgICAgfSk7XG4gICAgICBhd2FpdCB0aGlzLmxvYWRTZXNzaW9ucygpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5lcnJvcnMuaGFuZGxlKGVyciwge1xuICAgICAgICBjb250ZXh0OiAnc2VjdXJpdHkucmV2b2tlU2Vzc2lvbicsXG4gICAgICAgIGZhbGxiYWNrS2V5OiAnc2Vzc2lvbnNFcnJvcicsXG4gICAgICAgIGkxOG5OYW1lc3BhY2U6IHRoaXMubnMsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBvblJldm9rZUFsbCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNvbmZpcm1EaWFsb2cuY29uZmlybURlc3RydWN0aXZlKHtcbiAgICAgIHRpdGxlOiB0aGlzLnR0KCdyZXZva2VBbGxDb25maXJtVGl0bGUnKSxcbiAgICAgIG1lc3NhZ2U6IHRoaXMudHQoJ3Jldm9rZUFsbENvbmZpcm1NZXNzYWdlJyksXG4gICAgICBjb25maXJtQnV0dG9uOiB7IHRleHQ6IHRoaXMudHQoJ3Jldm9rZUFsbENvbmZpcm0nKSB9LFxuICAgICAgY2FuY2VsQnV0dG9uOiB7IHRleHQ6IHRoaXMudHQoJ2NhbmNlbCcpIH0sXG4gICAgfSk7XG4gICAgaWYgKCFyZXN1bHQuY29uZmlybWVkKSByZXR1cm47XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5zZXNzaW9uU2VydmljZS5yZXZva2VBbGxTZXNzaW9ucygpKTtcbiAgICAgIHRoaXMudG9hc3Quc2hvdyh7XG4gICAgICAgIG1lc3NhZ2U6IHRoaXMudHQoJ3Nlc3Npb25zQWxsUmV2b2tlZCcpLFxuICAgICAgICBkdXJhdGlvbjogMjUwMCxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgcG9zaXRpb246ICd0b3AnLFxuICAgICAgfSk7XG4gICAgICBhd2FpdCB0aGlzLmxvYWRTZXNzaW9ucygpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5lcnJvcnMuaGFuZGxlKGVyciwge1xuICAgICAgICBjb250ZXh0OiAnc2VjdXJpdHkucmV2b2tlQWxsU2Vzc2lvbnMnLFxuICAgICAgICBmYWxsYmFja0tleTogJ3Nlc3Npb25zRXJyb3InLFxuICAgICAgICBpMThuTmFtZXNwYWNlOiB0aGlzLm5zLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEFicmUgbW9kYWwgY29uIGxhIGxpc3RhIGNvbXBsZXRhLiBDYWRhIHJldm9rZSBwYXNhIHBvciBgb25SZXZva2VgLiAqL1xuICBhc3luYyBvcGVuU2Vzc2lvbnNNb2RhbCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBvblJldm9rZSA9IGFzeW5jIChzZXNzaW9uSWQ6IHN0cmluZyk6IFByb21pc2U8U2Vzc2lvbkluZm9bXT4gPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5zZXNzaW9uU2VydmljZS5yZXZva2VTZXNzaW9uKHNlc3Npb25JZCkpO1xuICAgICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudHQoJ3Nlc3Npb25zUmV2b2tlZCcpLFxuICAgICAgICAgIGR1cmF0aW9uOiAyNTAwLFxuICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgcG9zaXRpb246ICd0b3AnLFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB0aGlzLmVycm9ycy5oYW5kbGUoZXJyLCB7XG4gICAgICAgICAgY29udGV4dDogJ3NlY3VyaXR5LnJldm9rZVNlc3Npb24ubW9kYWwnLFxuICAgICAgICAgIGZhbGxiYWNrS2V5OiAnc2Vzc2lvbnNFcnJvcicsXG4gICAgICAgICAgaTE4bk5hbWVzcGFjZTogdGhpcy5ucyxcbiAgICAgICAgfSk7XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cbiAgICAgIGF3YWl0IHRoaXMubG9hZFNlc3Npb25zKCk7XG4gICAgICByZXR1cm4gdGhpcy5zb3J0ZWRTZXNzaW9ucygpO1xuICAgIH07XG5cbiAgICBhd2FpdCB0aGlzLm1vZGFsU2VydmljZS5vcGVuU2hlZXQ8U2Vzc2lvbkxpc3RNb2RhbENvbXBvbmVudD4oe1xuICAgICAgY29tcG9uZW50OiBTZXNzaW9uTGlzdE1vZGFsQ29tcG9uZW50LFxuICAgICAgY29tcG9uZW50UHJvcHM6IHtcbiAgICAgICAgc2Vzc2lvbnM6IHRoaXMuc29ydGVkU2Vzc2lvbnMoKSxcbiAgICAgICAgdGl0bGU6IHRoaXMudHQoJ3Nlc3Npb25zTW9kYWxUaXRsZScpLFxuICAgICAgICBjbG9zZUxhYmVsOiB0aGlzLnR0KCdsb2dpbkF0dGVtcHRDbG9zZScpLFxuICAgICAgICB0aGlzTGFiZWw6IHRoaXMuc2Vzc2lvbnNUaGlzKCksXG4gICAgICAgIHJldm9rZUxhYmVsOiB0aGlzLnR0KCdzZXNzaW9uc1Jldm9rZScpLFxuICAgICAgICBvblJldm9rZSxcbiAgICAgIH0sXG4gICAgICBpbml0aWFsQnJlYWtwb2ludDogMSxcbiAgICAgIGJyZWFrcG9pbnRzOiBbMCwgMV0sXG4gICAgICBzaG93SGFuZGxlOiBmYWxzZSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZFNlc3Npb25zKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuc2Vzc2lvbnNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbGlzdCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc2Vzc2lvblNlcnZpY2UubGlzdFNlc3Npb25zKCkpO1xuICAgICAgdGhpcy5zZXNzaW9ucy5zZXQobGlzdCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdbU2VjdXJpdHldIGxpc3RTZXNzaW9ucyBmYWlsZWQ6JywgZXJyKTtcbiAgICAgIHRoaXMuc2Vzc2lvbnMuc2V0KFtdKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5zZXNzaW9uc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICAvKiogTGVlIGRlbCBuYW1lc3BhY2UgY29uZmlndXJhZG8uICovXG4gIHByb3RlY3RlZCB0dChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgdGhpcy5ucyk7XG4gIH1cbn1cbiJdfQ==
|