valtech-components 4.0.942 → 4.0.944

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.
Files changed (20) hide show
  1. package/esm2022/lib/components/organisms/about-view/about-view.component.mjs +3 -3
  2. package/esm2022/lib/components/organisms/account-view/account-view.component.mjs +3 -3
  3. package/esm2022/lib/components/organisms/api-keys-view/api-keys-view.component.mjs +3 -3
  4. package/esm2022/lib/components/organisms/comment-thread/comment-thread.component.mjs +280 -0
  5. package/esm2022/lib/components/organisms/notification-preferences-view/notification-preferences-view.component.mjs +3 -3
  6. package/esm2022/lib/components/organisms/notifications-view/notifications-view.component.mjs +3 -3
  7. package/esm2022/lib/components/organisms/organization-view/organization-view.component.mjs +3 -3
  8. package/esm2022/lib/components/organisms/permissions-view/permissions-view.component.mjs +3 -3
  9. package/esm2022/lib/components/organisms/preferences-view/preferences-view.component.mjs +5 -11
  10. package/esm2022/lib/components/organisms/profile-view/profile-content.component.mjs +3 -3
  11. package/esm2022/lib/components/organisms/security-view/security-view.component.mjs +3 -3
  12. package/esm2022/lib/components/organisms/settings-hub/settings-hub.component.mjs +3 -3
  13. package/esm2022/lib/version.mjs +2 -2
  14. package/esm2022/public-api.mjs +2 -1
  15. package/fesm2022/valtech-components.mjs +299 -31
  16. package/fesm2022/valtech-components.mjs.map +1 -1
  17. package/lib/components/organisms/comment-thread/comment-thread.component.d.ts +52 -0
  18. package/lib/version.d.ts +1 -1
  19. package/package.json +1 -1
  20. package/public-api.d.ts +1 -0
@@ -525,7 +525,7 @@ export class ProfileContentComponent {
525
525
  }
526
526
  }
527
527
  </div>
528
- `, isInline: true, styles: [".page{padding:16px 0;max-width:720px;margin:0 auto}.page-header{margin-bottom:16px}.settings-section{padding:16px 0}.settings-section+.settings-section{border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08))}.avatar-section{display:flex;align-items:center;gap:16px}.avatar-meta{display:flex;flex-direction:column;gap:2px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: AvatarUploadComponent, selector: "val-avatar-upload", inputs: ["props", "customPath", "customThumbPath", "skipBackendSync"], outputs: ["uploaded", "error", "uploadStart"] }, { kind: "component", type: EmptyStateComponent, selector: "val-empty-state", inputs: ["props"] }, { kind: "component", type: FormComponent, selector: "val-form", inputs: ["props"], outputs: ["onSubmit", "onValueChange", "onInvalid", "onSelectChange"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: SkeletonLayoutComponent, selector: "val-skeleton-layout", inputs: ["props"] }] }); }
528
+ `, isInline: true, styles: [".page{padding:16px 0;max-width:720px;margin:0 auto}:host-context([data-menu=\"collapsed\"]) .page{@media (min-width: 1200px){max-width:900px}}.page-header{margin-bottom:16px}.settings-section{padding:16px 0}.settings-section+.settings-section{border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08))}.avatar-section{display:flex;align-items:center;gap:16px}.avatar-meta{display:flex;flex-direction:column;gap:2px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: AvatarUploadComponent, selector: "val-avatar-upload", inputs: ["props", "customPath", "customThumbPath", "skipBackendSync"], outputs: ["uploaded", "error", "uploadStart"] }, { kind: "component", type: EmptyStateComponent, selector: "val-empty-state", inputs: ["props"] }, { kind: "component", type: FormComponent, selector: "val-form", inputs: ["props"], outputs: ["onSubmit", "onValueChange", "onInvalid", "onSelectChange"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: SkeletonLayoutComponent, selector: "val-skeleton-layout", inputs: ["props"] }] }); }
529
529
  }
530
530
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ProfileContentComponent, decorators: [{
531
531
  type: Component,
@@ -603,8 +603,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
603
603
  }
604
604
  }
605
605
  </div>
606
- `, styles: [".page{padding:16px 0;max-width:720px;margin:0 auto}.page-header{margin-bottom:16px}.settings-section{padding:16px 0}.settings-section+.settings-section{border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08))}.avatar-section{display:flex;align-items:center;gap:16px}.avatar-meta{display:flex;flex-direction:column;gap:2px}\n"] }]
606
+ `, styles: [".page{padding:16px 0;max-width:720px;margin:0 auto}:host-context([data-menu=\"collapsed\"]) .page{@media (min-width: 1200px){max-width:900px}}.page-header{margin-bottom:16px}.settings-section{padding:16px 0}.settings-section+.settings-section{border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08))}.avatar-section{display:flex;align-items:center;gap:16px}.avatar-meta{display:flex;flex-direction:column;gap:2px}\n"] }]
607
607
  }], ctorParameters: () => [], propDecorators: { config: [{
608
608
  type: Input
609
609
  }] } });
610
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS1jb250ZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvcHJvZmlsZS12aWV3L3Byb2ZpbGUtY29udGVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUVwRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUVqRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFFbEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFL0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDdkYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUV4RixPQUFPLEVBQUUscUJBQXFC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Q0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLElBQUksR0FBRyxDQUFDO0lBQzdDLENBQUM7K0dBNWNVLHVCQUF1QjttR0FBdkIsdUJBQXVCLDhOQTVGeEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOERULHFaQTFFQyxZQUFZLDhCQUNaLG1CQUFtQiwrQkFDbkIscUJBQXFCLG9MQUNyQixtQkFBbUIsK0VBQ25CLGFBQWEsK0lBQ2IsZ0JBQWdCLDJFQUNoQixhQUFhLHdFQUNiLGNBQWMseUVBQ2QsdUJBQXVCOzs0RkFnR2QsdUJBQXVCO2tCQTVHbkMsU0FBUzsrQkFDRSxxQkFBcUIsY0FDbkIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixxQkFBcUI7d0JBQ3JCLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCx1QkFBdUI7d0JBQ3ZCLGdCQUFnQjt3QkFDaEIsMEJBQTBCO3FCQUMzQixZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThEVDt3REF1Q1EsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBJbnB1dCwgc2lnbmFsLCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEF2YXRhclVwbG9hZENvbXBvbmVudCB9IGZyb20gJy4uL2F2YXRhci11cGxvYWQvYXZhdGFyLXVwbG9hZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXZhdGFyVXBsb2FkRXJyb3IsIEF2YXRhclVwbG9hZE1ldGFkYXRhLCBBdmF0YXJVcGxvYWRSZXN1bHQgfSBmcm9tICcuLi9hdmF0YXItdXBsb2FkL3R5cGVzJztcbmltcG9ydCB7IEZvcm1Db21wb25lbnQgfSBmcm9tICcuLi9mb3JtL2Zvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IFNoYXJlUHJvZmlsZU1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vc2hhcmUtcHJvZmlsZS1tb2RhbC9zaGFyZS1wcm9maWxlLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTaGFyZVByb2ZpbGVNb2RhbE1ldGFkYXRhIH0gZnJvbSAnLi4vc2hhcmUtcHJvZmlsZS1tb2RhbC90eXBlcyc7XG5pbXBvcnQgeyBDdGFDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2N0YS1jYXJkL2N0YS1jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDdGFDYXJkTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvY3RhLWNhcmQvdHlwZXMnO1xuaW1wb3J0IHsgU2tlbGV0b25MYXlvdXRDb21wb25lbnQgfSBmcm9tICcuLi9za2VsZXRvbi1sYXlvdXQvc2tlbGV0b24tbGF5b3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvZGlzcGxheS9kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3RpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvZW1wdHktc3RhdGUvdHlwZXMnO1xuaW1wb3J0IHsgY3JlYXRlRXJyb3JTdGF0ZVByb3BzIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2VtcHR5LXN0YXRlL2ZhY3RvcnknO1xuaW1wb3J0IHsgQnV0dG9uTWV0YWRhdGEsIENvbXBvbmVudFN0YXRlcywgRm9ybU1ldGFkYXRhLCBGb3JtU3VibWl0LCBJbnB1dE1ldGFkYXRhLCBJbnB1dFR5cGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgR2V0UHJvZmlsZVJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC90eXBlcyc7XG5pbXBvcnQgeyBGaXJlYmFzZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9maXJlYmFzZS9maXJlYmFzZS5zZXJ2aWNlJztcbmltcG9ydCB7IEZpcmVzdG9yZUNvbGxlY3Rpb25GYWN0b3J5LCBUeXBlZENvbGxlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9maXJlYmFzZS9maXJlc3RvcmUtY29sbGVjdGlvbic7XG5pbXBvcnQgeyBGaXJlc3RvcmVEb2N1bWVudCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ZpcmViYXNlL3R5cGVzJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBjb25uZWN0UGFnZVJlZnJlc2ggfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wYWdlLXJlZnJlc2gvcGFnZS1yZWZyZXNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBWYWx0ZWNoRXJyb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZXJyb3JzL3ZhbHRlY2gtZXJyb3Iuc2VydmljZSc7XG5pbXBvcnQgeyBpbnRlcnByZXRFcnJvciB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Vycm9ycy9pbnRlcnByZXQtZXJyb3InO1xuXG5pbXBvcnQgeyBQcm9maWxlVmlld0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgUFJPRklMRV9WSUVXX0kxOE4gfSBmcm9tICcuL3Byb2ZpbGUtdmlldy5pMThuJztcblxuaW50ZXJmYWNlIFVzZXJNaXJyb3JEb2MgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudCB7XG4gIHVzZXJJZDogc3RyaW5nO1xuICBlbWFpbDogc3RyaW5nO1xuICBuYW1lPzogc3RyaW5nO1xuICBoYW5kbGU/OiBzdHJpbmc7XG4gIHBob25lPzogc3RyaW5nO1xuICBhdmF0YXJVcmw/OiBzdHJpbmc7XG4gIGF2YXRhclRodW1ibmFpbD86IHN0cmluZztcbn1cblxuY29uc3QgSEFORExFX1BBVFRFUk4gPSAvXlthLXpfXVthLXowLTlfXSokLztcbmNvbnN0IEhBTkRMRV9NSU4gPSAzO1xuY29uc3QgSEFORExFX01BWCA9IDIwO1xuXG5jb25zdCBERUZBVUxUX05BTUVTUEFDRSA9ICdTZXR0aW5ncy5Qcm9maWxlJztcblxuLyoqXG4gKiBgdmFsLXByb2ZpbGUtY29udGVudGAg4oCUIENPTlRFTklETyBkZWwgcGVyZmlsIChhdmF0YXIgKyBoYW5kbGUgKyBub21icmUgKyB0ZWzDqWZvbm9cbiAqIGVuIHVuIGZvcm0gY29uIHVuIGJvdMOzbikuIFByZXNlbnRhY2lvbmFsICsgbMOzZ2ljYSBkZSBkYXRvcywgU0lOIGNyb23DoXRpY2EgZGVcbiAqIHDDoWdpbmE6IE5PIHRvY2EgYE5hdmlnYXRpb25TZXJ2aWNlYCBuaSBlbCBoZWFkZXIgZGVsIHNoZWxsLlxuICpcbiAqIExvIHJldXRpbGl6YW4gdGFudG8gbGEgdmlzdGEgcnV0ZWFkYSAoYHZhbC1wcm9maWxlLXZpZXdgLCBxdWUgc8OtIHNldGVhIGVsIGhlYWRlcilcbiAqIGNvbW8gZWwgbW9kYWwgKGB2YWwtcHJvZmlsZS1tb2RhbGApLiBBc8OtIGVsIG1vZGFsIG5vIGNvbnRhbWluYSBlbCBoZWFkZXIgZGVsIHNoZWxsLlxuICpcbiAqIFRvZGEgbGEgbMOzZ2ljYSAobGVjdHVyYSByZWFjdGl2YSBkZWwgbWlycm9yIEZpcmVzdG9yZSAvdXNlcnMve3VpZH0gKyBmYWxsYmFjayBSRVNULFxuICogc3VibWl0IGNvbiBkaWZmIGhhbmRsZeKGknByb2ZpbGUsIGF2YXRhciB1cGxvYWQsIGVzdGFkb3MsIGkxOG4pIHZpdmUgYXF1w60uXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1wcm9maWxlLWNvbnRlbnQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgQXZhdGFyVXBsb2FkQ29tcG9uZW50LFxuICAgIEVtcHR5U3RhdGVDb21wb25lbnQsXG4gICAgRm9ybUNvbXBvbmVudCxcbiAgICBEaXNwbGF5Q29tcG9uZW50LFxuICAgIFRleHRDb21wb25lbnQsXG4gICAgVGl0bGVDb21wb25lbnQsXG4gICAgU2tlbGV0b25MYXlvdXRDb21wb25lbnQsXG4gICAgQ3RhQ2FyZENvbXBvbmVudCxcbiAgICBTaGFyZVByb2ZpbGVNb2RhbENvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicGFnZVwiPlxuICAgICAgPGhlYWRlciBjbGFzcz1cInBhZ2UtaGVhZGVyXCI+XG4gICAgICAgIDx2YWwtZGlzcGxheSBbcHJvcHNdPVwieyBzaXplOiAnc21hbGwnLCBjb2xvcjogJ2RhcmsnLCBjb250ZW50OiB0KCdwYWdlVGl0bGUnKSB9XCIgLz5cbiAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICBzaXplOiAnbGFyZ2UnLFxuICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgY29udGVudDogdCgncGFnZURlc2NyaXB0aW9uJyksXG4gICAgICAgICAgfVwiXG4gICAgICAgIC8+XG4gICAgICA8L2hlYWRlcj5cblxuICAgICAgQGlmIChsb2FkaW5nKCkpIHtcbiAgICAgICAgPHZhbC1za2VsZXRvbi1sYXlvdXQgW3Byb3BzXT1cInsgcHJlc2V0OiAnZm9ybScsIHJvd3M6IDMsIHNob3dBdmF0YXI6IHRydWUgfVwiIC8+XG4gICAgICB9IEBlbHNlIGlmIChlcnJvclN0YXRlKCkpIHtcbiAgICAgICAgPHZhbC1lbXB0eS1zdGF0ZSBbcHJvcHNdPVwiZXJyb3JTdGF0ZSgpIVwiIC8+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGlmIChwcm9maWxlKCk7IGFzIHApIHtcbiAgICAgICAgICBAaWYgKHJlc29sdmVkQ29uZmlnKCkuc2hvd0F2YXRhcikge1xuICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJzZXR0aW5ncy1zZWN0aW9uIGF2YXRhci1zZWN0aW9uXCI+XG4gICAgICAgICAgICAgIDx2YWwtYXZhdGFyLXVwbG9hZFxuICAgICAgICAgICAgICAgIFtwcm9wc109XCJhdmF0YXJQcm9wcygpXCJcbiAgICAgICAgICAgICAgICAodXBsb2FkZWQpPVwib25BdmF0YXJVcGxvYWRlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoZXJyb3IpPVwib25BdmF0YXJFcnJvcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1tZXRhXCI+XG4gICAgICAgICAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgICAgIGJvbGQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHAubmFtZSB8fCAn4oCUJyxcbiAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogcC5lbWFpbCxcbiAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgQGlmIChwLmhhbmRsZSkge1xuICAgICAgICAgICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICAgICAgICAgIGJvbGQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgY29udGVudDogJ0AnICsgcC5oYW5kbGUsXG4gICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDx2YWwtZm9ybSAjZm9ybSBbcHJvcHNdPVwiZm9ybU1ldGFcIiAob25TdWJtaXQpPVwib25TdWJtaXQoJGV2ZW50KVwiIC8+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLnBhZ2Uge1xuICAgICAgICBwYWRkaW5nOiAxNnB4IDA7XG4gICAgICAgIG1heC13aWR0aDogNzIwcHg7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgfVxuICAgICAgLnBhZ2UtaGVhZGVyIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICAgIH1cbiAgICAgIC5zZXR0aW5ncy1zZWN0aW9uIHtcbiAgICAgICAgcGFkZGluZzogMTZweCAwO1xuICAgICAgfVxuICAgICAgLnNldHRpbmdzLXNlY3Rpb24gKyAuc2V0dGluZ3Mtc2VjdGlvbiB7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS12YWwtYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMDgpKTtcbiAgICAgIH1cbiAgICAgIC5hdmF0YXItc2VjdGlvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMTZweDtcbiAgICAgIH1cbiAgICAgIC5hdmF0YXItbWV0YSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMnB4O1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFByb2ZpbGVDb250ZW50Q29tcG9uZW50IHtcbiAgcHJpdmF0ZSBhdXRoID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdCA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xuICBwcml2YXRlIGVycm9ycyA9IGluamVjdChWYWx0ZWNoRXJyb3JTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBmaXJlYmFzZSA9IGluamVjdChGaXJlYmFzZVNlcnZpY2UpO1xuICBwcml2YXRlIGNvbGxlY3Rpb25zID0gaW5qZWN0KEZpcmVzdG9yZUNvbGxlY3Rpb25GYWN0b3J5KTtcbiAgcHJpdmF0ZSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBASW5wdXQoKSBjb25maWc/OiBQcm9maWxlVmlld0NvbmZpZztcblxuICByZWFkb25seSByZXNvbHZlZENvbmZpZyA9IGNvbXB1dGVkPFxuICAgIFJlcXVpcmVkPE9taXQ8UHJvZmlsZVZpZXdDb25maWcsICdvblNhdmVkJyB8ICdvbkF2YXRhclVwbG9hZGVkJyB8ICdwcm9maWxlQmFzZVVybCc+PiAmXG4gICAgICBQaWNrPFByb2ZpbGVWaWV3Q29uZmlnLCAnb25TYXZlZCcgfCAnb25BdmF0YXJVcGxvYWRlZCcgfCAncHJvZmlsZUJhc2VVcmwnPlxuICA+KCgpID0+IHtcbiAgICBjb25zdCBmcm9tUm91dGUgPSAodGhpcy5yb3V0ZT8uc25hcHNob3QuZGF0YVsncHJvZmlsZUNvbmZpZyddID8/IHt9KSBhcyBQcm9maWxlVmlld0NvbmZpZztcbiAgICBjb25zdCBtZXJnZWQ6IFByb2ZpbGVWaWV3Q29uZmlnID0geyAuLi5mcm9tUm91dGUsIC4uLih0aGlzLmNvbmZpZyA/PyB7fSkgfTtcbiAgICByZXR1cm4ge1xuICAgICAgc2hvd0F2YXRhcjogbWVyZ2VkLnNob3dBdmF0YXIgPz8gdHJ1ZSxcbiAgICAgIHNob3dIYW5kbGU6IG1lcmdlZC5zaG93SGFuZGxlID8/IHRydWUsXG4gICAgICBzaG93UGhvbmU6IG1lcmdlZC5zaG93UGhvbmUgPz8gdHJ1ZSxcbiAgICAgIHNob3dTaGFyZUN0YTogbWVyZ2VkLnNob3dTaGFyZUN0YSA/PyB0cnVlLFxuICAgICAgcHJvZmlsZUJhc2VVcmw6IG1lcmdlZC5wcm9maWxlQmFzZVVybCA/PyAnJyxcbiAgICAgIGkxOG5OYW1lc3BhY2U6IG1lcmdlZC5pMThuTmFtZXNwYWNlID8/IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICAgb25TYXZlZDogbWVyZ2VkLm9uU2F2ZWQsXG4gICAgICBvbkF2YXRhclVwbG9hZGVkOiBtZXJnZWQub25BdmF0YXJVcGxvYWRlZCxcbiAgICB9O1xuICB9KTtcblxuICAvKiogTmFtZXNwYWNlIGkxOG4gcmVzdWVsdG8gKHDDumJsaWNvIHBhcmEgcXVlIGxhIHZpc3RhIHJ1dGVhZGEgYXJtZSBlbCBoZWFkZXIpLiAqL1xuICBnZXQgbnMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZENvbmZpZygpLmkxOG5OYW1lc3BhY2U7XG4gIH1cblxuICBwcml2YXRlIHVzZXJzQ29sOiBUeXBlZENvbGxlY3Rpb248VXNlck1pcnJvckRvYz4gPSB0aGlzLmNvbGxlY3Rpb25zLmNyZWF0ZTxVc2VyTWlycm9yRG9jPigndXNlcnMnLCB7XG4gICAgc2tpcEFwcFByZWZpeDogdHJ1ZSxcbiAgfSk7XG5cbiAgcHJpdmF0ZSBmb3JtQ21wID0gdmlld0NoaWxkPEZvcm1Db21wb25lbnQ+KCdmb3JtJyk7XG5cbiAgcmVhZG9ubHkgcHJvZmlsZSA9IHNpZ25hbDxHZXRQcm9maWxlUmVzcG9uc2UgfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgbG9hZGluZyA9IHNpZ25hbCh0cnVlKTtcbiAgcmVhZG9ubHkgc2F2aW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgbG9hZEVycm9yID0gc2lnbmFsPHVua25vd24gfCBudWxsPihudWxsKTtcblxuICByZWFkb25seSBzaGFyZU9wZW4gPSBzaWduYWwoZmFsc2UpO1xuXG4gIHJlYWRvbmx5IHNoYXJlQ3RhID0gY29tcHV0ZWQ8Q3RhQ2FyZE1ldGFkYXRhPigoKSA9PiB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6IHRoaXMudCgnc2hhcmVDdGFUaXRsZScpLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMudCgnc2hhcmVDdGFEZXNjJyksXG4gICAgICBib3JkZXJlZDogdHJ1ZSxcbiAgICAgIGFjdGlvbnM6IHtcbiAgICAgICAgcG9zaXRpb246ICdsZWZ0JyxcbiAgICAgICAgY29sdW1uZWQ6IGZhbHNlLFxuICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGV4dDogdGhpcy50KCdzaGFyZUN0YUJ0bicpLFxuICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgICAgICBzdGF0ZTogJ0VOQUJMRUQnLFxuICAgICAgICAgICAgdG9rZW46ICdzaGFyZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgc2hhcmVNb2RhbCA9IGNvbXB1dGVkPFNoYXJlUHJvZmlsZU1vZGFsTWV0YWRhdGE+KCgpID0+IHtcbiAgICBjb25zdCBwID0gdGhpcy5wcm9maWxlKCk7XG4gICAgY29uc3QgaGFuZGxlID0gcD8uaGFuZGxlID8/ICdtZSc7XG4gICAgY29uc3QgYmFzZSA9IHRoaXMucmVzb2x2ZWRDb25maWcoKS5wcm9maWxlQmFzZVVybDtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogcD8ubmFtZSA/PyAnJyxcbiAgICAgIGhhbmRsZTogcD8uaGFuZGxlLFxuICAgICAgYXZhdGFyVXJsOiBwPy5hdmF0YXJVcmwsXG4gICAgICBlbWFpbDogcD8uZW1haWwsXG4gICAgICB1cmw6IGJhc2UgPyBgJHtiYXNlfS91LyR7aGFuZGxlfWAgOiBgL3UvJHtoYW5kbGV9YCxcbiAgICB9O1xuICB9KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF91c2VySWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmF1dGgudXNlcigpPy51c2VySWQgPz8gbnVsbCk7XG5cbiAgcmVhZG9ubHkgZXJyb3JTdGF0ZSA9IGNvbXB1dGVkPEVtcHR5U3RhdGVNZXRhZGF0YSB8IG51bGw+KCgpID0+IHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIGNvbnN0IGVyciA9IHRoaXMubG9hZEVycm9yKCk7XG4gICAgaWYgKCFlcnIpIHJldHVybiBudWxsO1xuICAgIHJldHVybiBjcmVhdGVFcnJvclN0YXRlUHJvcHMoZXJyLCB7XG4gICAgICB0aXRsZToge1xuICAgICAgICBvZmZsaW5lOiB0aGlzLnQoJ29mZmxpbmVUaXRsZScpLFxuICAgICAgICBlcnJvcjogdGhpcy50KCdlcnJvclRpdGxlJyksXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246IHtcbiAgICAgICAgb2ZmbGluZTogdGhpcy50KCdvZmZsaW5lSGludCcpLFxuICAgICAgICBlcnJvcjogaW50ZXJwcmV0RXJyb3IoZXJyKS5tZXNzYWdlLFxuICAgICAgfSxcbiAgICAgIHJldHJ5TGFiZWw6IHRoaXMudCgncmV0cnknKSxcbiAgICAgIG9uUmV0cnk6ICgpID0+IHRoaXMubG9hZEZyb21BcGkoKSxcbiAgICAgIHJldHJ5aW5nOiB0aGlzLmxvYWRpbmcoKSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgYXZhdGFyUHJvcHMgPSBjb21wdXRlZDxBdmF0YXJVcGxvYWRNZXRhZGF0YT4oKCkgPT4ge1xuICAgIHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgY29uc3QgcCA9IHRoaXMucHJvZmlsZSgpO1xuICAgIHJldHVybiB7XG4gICAgICBjdXJyZW50VXJsOiBwPy5hdmF0YXJVcmwsXG4gICAgICBpbml0aWFsczogdGhpcy5pbml0aWFsc0Zyb21OYW1lKHA/Lm5hbWUpLFxuICAgICAgc2l6ZTogOTYsXG4gICAgICBlZGl0YWJsZTogdHJ1ZSxcbiAgICAgIHNob3dWaWV3QnV0dG9uOiB0cnVlLFxuICAgICAgaTE4bk5hbWVzcGFjZTogdGhpcy5ucyxcbiAgICB9O1xuICB9KTtcblxuICBmb3JtTWV0YTogRm9ybU1ldGFkYXRhID0gdGhpcy5idWlsZEZvcm1NZXRhKCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgY29uc3QgbnMgPSB0aGlzLm5zO1xuICAgIHRoaXMuaTE4bi5yZWdpc3RlckRlZmF1bHRzKG5zLCBQUk9GSUxFX1ZJRVdfSTE4Tik7XG5cbiAgICBjb25uZWN0UGFnZVJlZnJlc2goKCkgPT4gdGhpcy5sb2FkRnJvbUFwaSgpKTtcblxuICAgIHZvaWQgdGhpcy5maXJlYmFzZS53aGVuRmlyZWJhc2VBdXRoUmVhZHkoKS50aGVuKCgpID0+IHtcbiAgICAgIGNvbnN0IHVpZCA9IHRoaXMuX3VzZXJJZCgpO1xuICAgICAgaWYgKHVpZCkge1xuICAgICAgICB2b2lkIHRoaXMubG9hZEZyb21BcGkoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGVmZmVjdChcbiAgICAgIG9uQ2xlYW51cCA9PiB7XG4gICAgICAgIGNvbnN0IHVpZCA9IHRoaXMuX3VzZXJJZCgpO1xuICAgICAgICBpZiAoIXVpZCkge1xuICAgICAgICAgIHRoaXMucHJvZmlsZS5zZXQobnVsbCk7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9hZGluZy5zZXQodHJ1ZSk7XG5cbiAgICAgICAgbGV0IHN1YjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XG4gICAgICAgIGxldCBjYW5jZWxsZWQgPSBmYWxzZTtcbiAgICAgICAgbGV0IGFwaUZhbGxiYWNrVXNlZCA9IGZhbHNlO1xuXG4gICAgICAgIHZvaWQgdGhpcy5maXJlYmFzZS53aGVuRmlyZWJhc2VBdXRoUmVhZHkoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICBpZiAoY2FuY2VsbGVkKSByZXR1cm47XG4gICAgICAgICAgc3ViID0gdGhpcy51c2Vyc0NvbC53YXRjaCh1aWQpLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiBkb2MgPT4ge1xuICAgICAgICAgICAgICBpZiAoZG9jKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9maWxlLnNldCh0aGlzLm1hcE1pcnJvclRvUHJvZmlsZShkb2MpKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRFcnJvci5zZXQobnVsbCk7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWFwaUZhbGxiYWNrVXNlZCkge1xuICAgICAgICAgICAgICAgIGFwaUZhbGxiYWNrVXNlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdm9pZCB0aGlzLmxvYWRGcm9tQXBpKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWFwaUZhbGxiYWNrVXNlZCkge1xuICAgICAgICAgICAgICAgIGFwaUZhbGxiYWNrVXNlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdm9pZCB0aGlzLmxvYWRGcm9tQXBpKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIG9uQ2xlYW51cCgoKSA9PiB7XG4gICAgICAgICAgY2FuY2VsbGVkID0gdHJ1ZTtcbiAgICAgICAgICBzdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgaXNTYXZpbmcgPSB0aGlzLnNhdmluZygpO1xuICAgICAgY29uc3Qgc3RhdGUgPSBpc1NhdmluZyA/IENvbXBvbmVudFN0YXRlcy5XT1JLSU5HIDogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQ7XG4gICAgICB0aGlzLmZvcm1NZXRhLnN0YXRlID0gc3RhdGU7XG4gICAgICAodGhpcy5mb3JtTWV0YS5hY3Rpb25zIGFzIEJ1dHRvbk1ldGFkYXRhKS5zdGF0ZSA9IHN0YXRlO1xuICAgICAgKHRoaXMuZm9ybU1ldGEuYWN0aW9ucyBhcyBCdXR0b25NZXRhZGF0YSkudGV4dCA9IGlzU2F2aW5nID8gdGhpcy50KCdzYXZpbmcnKSA6IHRoaXMudCgnc2F2ZScpO1xuICAgIH0pO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IHAgPSB0aGlzLnByb2ZpbGUoKTtcbiAgICAgIGNvbnN0IGZvcm0gPSB0aGlzLmZvcm1DbXAoKT8uRm9ybTtcbiAgICAgIGlmICghcCB8fCAhZm9ybSkgcmV0dXJuO1xuICAgICAgZm9ybS5wYXRjaFZhbHVlKFxuICAgICAgICB7XG4gICAgICAgICAgaGFuZGxlOiBwLmhhbmRsZSB8fCAnJyxcbiAgICAgICAgICBuYW1lOiBwLm5hbWUgfHwgJycsXG4gICAgICAgICAgcGhvbmU6IHAucGhvbmUgfHwgJycsXG4gICAgICAgIH0sXG4gICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgICB0aGlzLmFwcGx5STE4bkxhYmVscygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEZvcm1NZXRhKCk6IEZvcm1NZXRhZGF0YSB7XG4gICAgY29uc3QgY2ZnID0gdGhpcy5yZXNvbHZlZENvbmZpZygpO1xuXG4gICAgY29uc3QgaGFuZGxlRmllbGQ6IElucHV0TWV0YWRhdGEgPSB7XG4gICAgICB0b2tlbjogJ3Byb2ZpbGUtaGFuZGxlJyxcbiAgICAgIG5hbWU6ICdoYW5kbGUnLFxuICAgICAgbGFiZWw6IHRoaXMudCgnaGFuZGxlJyksXG4gICAgICBoaW50OiB0aGlzLnQoJ2hhbmRsZUhpbnQnKSxcbiAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnQoJ2hhbmRsZVBsYWNlaG9sZGVyJyksXG4gICAgICB0eXBlOiBJbnB1dFR5cGUuSEFORExFLFxuICAgICAgb3JkZXI6IDEsXG4gICAgICB2YWxpZGF0b3JzOiBbXG4gICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgIFZhbGlkYXRvcnMubWluTGVuZ3RoKEhBTkRMRV9NSU4pLFxuICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aChIQU5ETEVfTUFYKSxcbiAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKEhBTkRMRV9QQVRURVJOKSxcbiAgICAgIF0sXG4gICAgICBlcnJvcnM6IHtcbiAgICAgICAgcmVxdWlyZWQ6IHRoaXMudCgndXNlcm5hbWVJbnZhbGlkJyksXG4gICAgICAgIG1pbmxlbmd0aDogdGhpcy50KCd1c2VybmFtZUludmFsaWQnKSxcbiAgICAgICAgbWF4bGVuZ3RoOiB0aGlzLnQoJ3VzZXJuYW1lSW52YWxpZCcpLFxuICAgICAgICBwYXR0ZXJuOiB0aGlzLnQoJ3VzZXJuYW1lSW52YWxpZCcpLFxuICAgICAgfSxcbiAgICAgIHZhbHVlOiAnJyxcbiAgICAgIHJhbmdlOiB7IG1pbjogSEFORExFX01JTiwgbWF4OiBIQU5ETEVfTUFYIH0sXG4gICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgfTtcblxuICAgIGNvbnN0IG5hbWVGaWVsZDogSW5wdXRNZXRhZGF0YSA9IHtcbiAgICAgIHRva2VuOiAncHJvZmlsZS1uYW1lJyxcbiAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgIGxhYmVsOiB0aGlzLnQoJ25hbWUnKSxcbiAgICAgIGhpbnQ6IHRoaXMudCgnbmFtZUhpbnQnKSxcbiAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnQoJ25hbWVQbGFjZWhvbGRlcicpLFxuICAgICAgdHlwZTogSW5wdXRUeXBlLlRFWFQsXG4gICAgICBvcmRlcjogMixcbiAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgyKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTAwKV0sXG4gICAgICBlcnJvcnM6IHt9LFxuICAgICAgdmFsdWU6ICcnLFxuICAgICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgIH07XG5cbiAgICBjb25zdCBwaG9uZUZpZWxkOiBJbnB1dE1ldGFkYXRhID0ge1xuICAgICAgdG9rZW46ICdwcm9maWxlLXBob25lJyxcbiAgICAgIG5hbWU6ICdwaG9uZScsXG4gICAgICBsYWJlbDogdGhpcy50KCdwaG9uZScpLFxuICAgICAgaGludDogdGhpcy50KCdwaG9uZUhpbnQnKSxcbiAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnQoJ3Bob25lUGxhY2Vob2xkZXInKSxcbiAgICAgIHR5cGU6IElucHV0VHlwZS5QSE9ORSxcbiAgICAgIG9yZGVyOiAzLFxuICAgICAgdmFsaWRhdG9yczogW10sXG4gICAgICBlcnJvcnM6IHt9LFxuICAgICAgdmFsdWU6ICcnLFxuICAgICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgIH07XG5cbiAgICBjb25zdCBmaWVsZHM6IElucHV0TWV0YWRhdGFbXSA9IFtdO1xuICAgIGlmIChjZmcuc2hvd0hhbmRsZSkgZmllbGRzLnB1c2goaGFuZGxlRmllbGQpO1xuICAgIGZpZWxkcy5wdXNoKG5hbWVGaWVsZCk7XG4gICAgaWYgKGNmZy5zaG93UGhvbmUpIGZpZWxkcy5wdXNoKHBob25lRmllbGQpO1xuXG4gICAgY29uc3Qgc3VibWl0QnV0dG9uOiBCdXR0b25NZXRhZGF0YSA9IHtcbiAgICAgIHRleHQ6IHRoaXMudCgnc2F2ZScpLFxuICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgIHR5cGU6ICdzdWJtaXQnLFxuICAgICAgZmlsbDogJ3NvbGlkJyxcbiAgICAgIHNpemU6ICdkZWZhdWx0JyxcbiAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgZXhwYW5kOiAnYmxvY2snLFxuICAgICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgICAgdG9rZW46ICdwcm9maWxlLXNhdmUnLFxuICAgIH0gYXMgQnV0dG9uTWV0YWRhdGE7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogJycsXG4gICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgICBzZWN0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJycsXG4gICAgICAgICAgb3JkZXI6IDEsXG4gICAgICAgICAgZmllbGRzLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGFjdGlvbnM6IHN1Ym1pdEJ1dHRvbixcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUkxOG5MYWJlbHMoKTogdm9pZCB7XG4gICAgY29uc3Qgc2VjdGlvbiA9IHRoaXMuZm9ybU1ldGEuc2VjdGlvbnNbMF07XG4gICAgZm9yIChjb25zdCBmaWVsZCBvZiBzZWN0aW9uLmZpZWxkcykge1xuICAgICAgc3dpdGNoIChmaWVsZC5uYW1lKSB7XG4gICAgICAgIGNhc2UgJ2hhbmRsZSc6XG4gICAgICAgICAgZmllbGQubGFiZWwgPSB0aGlzLnQoJ2hhbmRsZScpO1xuICAgICAgICAgIGZpZWxkLmhpbnQgPSB0aGlzLnQoJ2hhbmRsZUhpbnQnKTtcbiAgICAgICAgICBmaWVsZC5wbGFjZWhvbGRlciA9IHRoaXMudCgnaGFuZGxlUGxhY2Vob2xkZXInKTtcbiAgICAgICAgICBmaWVsZC5lcnJvcnMgPSB7XG4gICAgICAgICAgICByZXF1aXJlZDogdGhpcy50KCd1c2VybmFtZUludmFsaWQnKSxcbiAgICAgICAgICAgIG1pbmxlbmd0aDogdGhpcy50KCd1c2VybmFtZUludmFsaWQnKSxcbiAgICAgICAgICAgIG1heGxlbmd0aDogdGhpcy50KCd1c2VybmFtZUludmFsaWQnKSxcbiAgICAgICAgICAgIHBhdHRlcm46IHRoaXMudCgndXNlcm5hbWVJbnZhbGlkJyksXG4gICAgICAgICAgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbmFtZSc6XG4gICAgICAgICAgZmllbGQubGFiZWwgPSB0aGlzLnQoJ25hbWUnKTtcbiAgICAgICAgICBmaWVsZC5oaW50ID0gdGhpcy50KCduYW1lSGludCcpO1xuICAgICAgICAgIGZpZWxkLnBsYWNlaG9sZGVyID0gdGhpcy50KCduYW1lUGxhY2Vob2xkZXInKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncGhvbmUnOlxuICAgICAgICAgIGZpZWxkLmxhYmVsID0gdGhpcy50KCdwaG9uZScpO1xuICAgICAgICAgIGZpZWxkLmhpbnQgPSB0aGlzLnQoJ3Bob25lSGludCcpO1xuICAgICAgICAgIGZpZWxkLnBsYWNlaG9sZGVyID0gdGhpcy50KCdwaG9uZVBsYWNlaG9sZGVyJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGJ1dHRvbiA9IHRoaXMuZm9ybU1ldGEuYWN0aW9ucyBhcyBCdXR0b25NZXRhZGF0YTtcbiAgICBidXR0b24udGV4dCA9IHRoaXMuc2F2aW5nKCkgPyB0aGlzLnQoJ3NhdmluZycpIDogdGhpcy50KCdzYXZlJyk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRGcm9tQXBpKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMubG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHAgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmF1dGguZ2V0UHJvZmlsZSgpKTtcbiAgICAgIHRoaXMucHJvZmlsZS5zZXQocCk7XG4gICAgICB0aGlzLmxvYWRFcnJvci5zZXQobnVsbCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmxvYWRFcnJvci5zZXQoZXJyKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBNaXJyb3JUb1Byb2ZpbGUoZG9jOiBVc2VyTWlycm9yRG9jKTogR2V0UHJvZmlsZVJlc3BvbnNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgb3BlcmF0aW9uSWQ6ICcnLFxuICAgICAgdXNlcklkOiBkb2MudXNlcklkLFxuICAgICAgZW1haWw6IGRvYy5lbWFpbCxcbiAgICAgIG5hbWU6IGRvYy5uYW1lID8/ICcnLFxuICAgICAgaGFuZGxlOiBkb2MuaGFuZGxlLFxuICAgICAgcGhvbmU6IGRvYy5waG9uZSxcbiAgICAgIGF2YXRhclVybDogZG9jLmF2YXRhclVybCxcbiAgICAgIGVtYWlsVmVyaWZpZWQ6IGZhbHNlLFxuICAgICAgcGhvbmVWZXJpZmllZDogZmFsc2UsXG4gICAgICBtZmFFbmFibGVkOiBmYWxzZSxcbiAgICAgIGNyZWF0ZWRBdDogJycsXG4gICAgICB1cGRhdGVkQXQ6ICcnLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBvblN1Ym1pdChldmVudDogRm9ybVN1Ym1pdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLnNhdmluZygpKSByZXR1cm47XG5cbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5wcm9maWxlKCk7XG4gICAgaWYgKCFjdXJyZW50KSByZXR1cm47XG5cbiAgICBjb25zdCBjZmcgPSB0aGlzLnJlc29sdmVkQ29uZmlnKCk7XG4gICAgY29uc3QgZmllbGRzID0gZXZlbnQuZmllbGRzIHx8IHt9O1xuICAgIGNvbnN0IG5leHRIYW5kbGUgPSBTdHJpbmcoZmllbGRzWydoYW5kbGUnXSB8fCAnJylcbiAgICAgIC50cmltKClcbiAgICAgIC50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IG5leHROYW1lID0gU3RyaW5nKGZpZWxkc1snbmFtZSddIHx8ICcnKS50cmltKCk7XG4gICAgY29uc3QgbmV4dFBob25lID0gU3RyaW5nKGZpZWxkc1sncGhvbmUnXSB8fCAnJykudHJpbSgpO1xuXG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlZCA9IGNmZy5zaG93SGFuZGxlICYmICEhbmV4dEhhbmRsZSAmJiBuZXh0SGFuZGxlICE9PSAoY3VycmVudC5oYW5kbGUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgbmFtZUNoYW5nZWQgPSAhIW5leHROYW1lICYmIG5leHROYW1lICE9PSAoY3VycmVudC5uYW1lIHx8ICcnKTtcbiAgICBjb25zdCBwaG9uZUNoYW5nZWQgPSBjZmcuc2hvd1Bob25lICYmIG5leHRQaG9uZSAhPT0gKGN1cnJlbnQucGhvbmUgfHwgJycpO1xuXG4gICAgaWYgKCFoYW5kbGVDaGFuZ2VkICYmICFuYW1lQ2hhbmdlZCAmJiAhcGhvbmVDaGFuZ2VkKSB7XG4gICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnQoJ3NhdmVTdWNjZXNzJyksXG4gICAgICAgIGR1cmF0aW9uOiAyMDAwLFxuICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICBwb3NpdGlvbjogJ3RvcCcsXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNhdmluZy5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChoYW5kbGVDaGFuZ2VkKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5hdXRoLnVwZGF0ZUhhbmRsZShuZXh0SGFuZGxlKSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIHRoaXMuZXJyb3JzLmhhbmRsZShlcnIsIHtcbiAgICAgICAgICAgIGNvbnRleHQ6ICdwcm9maWxlLnVwZGF0ZUhhbmRsZScsXG4gICAgICAgICAgICBpMThuTWFwOiB7IEFVVEhfVVNFUk5BTUVfRVhJU1RTOiAnaGFuZGxlSW5Vc2UnIH0sXG4gICAgICAgICAgICBmYWxsYmFja0tleTogJ2hhbmRsZUVycm9yJyxcbiAgICAgICAgICAgIGkxOG5OYW1lc3BhY2U6IHRoaXMubnMsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYXdhaXQgdGhpcy5sb2FkRnJvbUFwaSgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAobmFtZUNoYW5nZWQgfHwgcGhvbmVDaGFuZ2VkKSB7XG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IHsgbmFtZT86IHN0cmluZzsgcGhvbmU/OiBzdHJpbmcgfSA9IHt9O1xuICAgICAgICBpZiAobmFtZUNoYW5nZWQpIHBheWxvYWQubmFtZSA9IG5leHROYW1lO1xuICAgICAgICBpZiAocGhvbmVDaGFuZ2VkKSBwYXlsb2FkLnBob25lID0gbmV4dFBob25lO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuYXV0aC51cGRhdGVQcm9maWxlKHBheWxvYWQpKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgdGhpcy5lcnJvcnMuaGFuZGxlKGVyciwge1xuICAgICAgICAgICAgY29udGV4dDogJ3Byb2ZpbGUudXBkYXRlUHJvZmlsZScsXG4gICAgICAgICAgICBpMThuTWFwOiB7XG4gICAgICAgICAgICAgIEFVVEhWMl9QSE9ORV9FWElTVFM6ICdwaG9uZUluVXNlJyxcbiAgICAgICAgICAgICAgQVVUSFYyX0lOVkFMSURfUEhPTkU6ICdwaG9uZUludmFsaWQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZhbGxiYWNrS2V5OiAnc2F2ZUVycm9yJyxcbiAgICAgICAgICAgIGkxOG5OYW1lc3BhY2U6IHRoaXMubnMsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYXdhaXQgdGhpcy5sb2FkRnJvbUFwaSgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnQoJ3NhdmVTdWNjZXNzJyksXG4gICAgICAgIGR1cmF0aW9uOiAyNTAwLFxuICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICBwb3NpdGlvbjogJ3RvcCcsXG4gICAgICB9KTtcbiAgICAgIGNmZy5vblNhdmVkPy4odGhpcy5wcm9maWxlKCkgPz8gY3VycmVudCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuc2F2aW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgb25BdmF0YXJVcGxvYWRlZChyZXN1bHQ6IEF2YXRhclVwbG9hZFJlc3VsdCk6IHZvaWQge1xuICAgIHRoaXMudG9hc3Quc2hvdyh7XG4gICAgICBtZXNzYWdlOiB0aGlzLnQoJ2F2YXRhclN1Y2Nlc3MnKSxcbiAgICAgIGR1cmF0aW9uOiAyNTAwLFxuICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgIHBvc2l0aW9uOiAndG9wJyxcbiAgICB9KTtcbiAgICB0aGlzLnJlc29sdmVkQ29uZmlnKCkub25BdmF0YXJVcGxvYWRlZD8uKHJlc3VsdCk7XG4gIH1cblxuICBvbkF2YXRhckVycm9yKF9lcnI6IEF2YXRhclVwbG9hZEVycm9yKTogdm9pZCB7XG4gICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgIG1lc3NhZ2U6IHRoaXMudCgnYXZhdGFyRXJyb3InKSxcbiAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgIHBvc2l0aW9uOiAndG9wJyxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCB0aGlzLm5zKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbHNGcm9tTmFtZShuYW1lPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIW5hbWUpIHJldHVybiAnPyc7XG4gICAgY29uc3QgcGFydHMgPSBuYW1lLnRyaW0oKS5zcGxpdCgvXFxzKy8pLmZpbHRlcihCb29sZWFuKTtcbiAgICBpZiAocGFydHMubGVuZ3RoID09PSAwKSByZXR1cm4gJz8nO1xuICAgIGNvbnN0IGZpcnN0ID0gcGFydHNbMF0/LlswXSA/PyAnJztcbiAgICBjb25zdCBsYXN0ID0gcGFydHMubGVuZ3RoID4gMSA/IChwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXT8uWzBdID8/ICcnKSA6ICcnO1xuICAgIHJldHVybiAoZmlyc3QgKyBsYXN0KS50b1VwcGVyQ2FzZSgpIHx8ICc/JztcbiAgfVxufVxuIl19
610
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS1jb250ZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvcHJvZmlsZS12aWV3L3Byb2ZpbGUtY29udGVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUVwRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUVqRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFFbEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFL0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDdkYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUV4RixPQUFPLEVBQUUscUJBQXFC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Q0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLElBQUksR0FBRyxDQUFDO0lBQzdDLENBQUM7K0dBNWNVLHVCQUF1QjttR0FBdkIsdUJBQXVCLDhOQXBHeEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOERULGdmQTFFQyxZQUFZLDhCQUNaLG1CQUFtQiwrQkFDbkIscUJBQXFCLG9MQUNyQixtQkFBbUIsK0VBQ25CLGFBQWEsK0lBQ2IsZ0JBQWdCLDJFQUNoQixhQUFhLHdFQUNiLGNBQWMseUVBQ2QsdUJBQXVCOzs0RkF3R2QsdUJBQXVCO2tCQXBIbkMsU0FBUzsrQkFDRSxxQkFBcUIsY0FDbkIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixxQkFBcUI7d0JBQ3JCLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCx1QkFBdUI7d0JBQ3ZCLGdCQUFnQjt3QkFDaEIsMEJBQTBCO3FCQUMzQixZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThEVDt3REErQ1EsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBJbnB1dCwgc2lnbmFsLCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEF2YXRhclVwbG9hZENvbXBvbmVudCB9IGZyb20gJy4uL2F2YXRhci11cGxvYWQvYXZhdGFyLXVwbG9hZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXZhdGFyVXBsb2FkRXJyb3IsIEF2YXRhclVwbG9hZE1ldGFkYXRhLCBBdmF0YXJVcGxvYWRSZXN1bHQgfSBmcm9tICcuLi9hdmF0YXItdXBsb2FkL3R5cGVzJztcbmltcG9ydCB7IEZvcm1Db21wb25lbnQgfSBmcm9tICcuLi9mb3JtL2Zvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IFNoYXJlUHJvZmlsZU1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vc2hhcmUtcHJvZmlsZS1tb2RhbC9zaGFyZS1wcm9maWxlLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTaGFyZVByb2ZpbGVNb2RhbE1ldGFkYXRhIH0gZnJvbSAnLi4vc2hhcmUtcHJvZmlsZS1tb2RhbC90eXBlcyc7XG5pbXBvcnQgeyBDdGFDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2N0YS1jYXJkL2N0YS1jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDdGFDYXJkTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvY3RhLWNhcmQvdHlwZXMnO1xuaW1wb3J0IHsgU2tlbGV0b25MYXlvdXRDb21wb25lbnQgfSBmcm9tICcuLi9za2VsZXRvbi1sYXlvdXQvc2tlbGV0b24tbGF5b3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvZGlzcGxheS9kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3RpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvZW1wdHktc3RhdGUvdHlwZXMnO1xuaW1wb3J0IHsgY3JlYXRlRXJyb3JTdGF0ZVByb3BzIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2VtcHR5LXN0YXRlL2ZhY3RvcnknO1xuaW1wb3J0IHsgQnV0dG9uTWV0YWRhdGEsIENvbXBvbmVudFN0YXRlcywgRm9ybU1ldGFkYXRhLCBGb3JtU3VibWl0LCBJbnB1dE1ldGFkYXRhLCBJbnB1dFR5cGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgR2V0UHJvZmlsZVJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC90eXBlcyc7XG5pbXBvcnQgeyBGaXJlYmFzZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9maXJlYmFzZS9maXJlYmFzZS5zZXJ2aWNlJztcbmltcG9ydCB7IEZpcmVzdG9yZUNvbGxlY3Rpb25GYWN0b3J5LCBUeXBlZENvbGxlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9maXJlYmFzZS9maXJlc3RvcmUtY29sbGVjdGlvbic7XG5pbXBvcnQgeyBGaXJlc3RvcmVEb2N1bWVudCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ZpcmViYXNlL3R5cGVzJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBjb25uZWN0UGFnZVJlZnJlc2ggfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wYWdlLXJlZnJlc2gvcGFnZS1yZWZyZXNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBWYWx0ZWNoRXJyb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZXJyb3JzL3ZhbHRlY2gtZXJyb3Iuc2VydmljZSc7XG5pbXBvcnQgeyBpbnRlcnByZXRFcnJvciB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Vycm9ycy9pbnRlcnByZXQtZXJyb3InO1xuXG5pbXBvcnQgeyBQcm9maWxlVmlld0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgUFJPRklMRV9WSUVXX0kxOE4gfSBmcm9tICcuL3Byb2ZpbGUtdmlldy5pMThuJztcblxuaW50ZXJmYWNlIFVzZXJNaXJyb3JEb2MgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudCB7XG4gIHVzZXJJZDogc3RyaW5nO1xuICBlbWFpbDogc3RyaW5nO1xuICBuYW1lPzogc3RyaW5nO1xuICBoYW5kbGU/OiBzdHJpbmc7XG4gIHBob25lPzogc3RyaW5nO1xuICBhdmF0YXJVcmw/OiBzdHJpbmc7XG4gIGF2YXRhclRodW1ibmFpbD86IHN0cmluZztcbn1cblxuY29uc3QgSEFORExFX1BBVFRFUk4gPSAvXlthLXpfXVthLXowLTlfXSokLztcbmNvbnN0IEhBTkRMRV9NSU4gPSAzO1xuY29uc3QgSEFORExFX01BWCA9IDIwO1xuXG5jb25zdCBERUZBVUxUX05BTUVTUEFDRSA9ICdTZXR0aW5ncy5Qcm9maWxlJztcblxuLyoqXG4gKiBgdmFsLXByb2ZpbGUtY29udGVudGAg4oCUIENPTlRFTklETyBkZWwgcGVyZmlsIChhdmF0YXIgKyBoYW5kbGUgKyBub21icmUgKyB0ZWzDqWZvbm9cbiAqIGVuIHVuIGZvcm0gY29uIHVuIGJvdMOzbikuIFByZXNlbnRhY2lvbmFsICsgbMOzZ2ljYSBkZSBkYXRvcywgU0lOIGNyb23DoXRpY2EgZGVcbiAqIHDDoWdpbmE6IE5PIHRvY2EgYE5hdmlnYXRpb25TZXJ2aWNlYCBuaSBlbCBoZWFkZXIgZGVsIHNoZWxsLlxuICpcbiAqIExvIHJldXRpbGl6YW4gdGFudG8gbGEgdmlzdGEgcnV0ZWFkYSAoYHZhbC1wcm9maWxlLXZpZXdgLCBxdWUgc8OtIHNldGVhIGVsIGhlYWRlcilcbiAqIGNvbW8gZWwgbW9kYWwgKGB2YWwtcHJvZmlsZS1tb2RhbGApLiBBc8OtIGVsIG1vZGFsIG5vIGNvbnRhbWluYSBlbCBoZWFkZXIgZGVsIHNoZWxsLlxuICpcbiAqIFRvZGEgbGEgbMOzZ2ljYSAobGVjdHVyYSByZWFjdGl2YSBkZWwgbWlycm9yIEZpcmVzdG9yZSAvdXNlcnMve3VpZH0gKyBmYWxsYmFjayBSRVNULFxuICogc3VibWl0IGNvbiBkaWZmIGhhbmRsZeKGknByb2ZpbGUsIGF2YXRhciB1cGxvYWQsIGVzdGFkb3MsIGkxOG4pIHZpdmUgYXF1w60uXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1wcm9maWxlLWNvbnRlbnQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgQXZhdGFyVXBsb2FkQ29tcG9uZW50LFxuICAgIEVtcHR5U3RhdGVDb21wb25lbnQsXG4gICAgRm9ybUNvbXBvbmVudCxcbiAgICBEaXNwbGF5Q29tcG9uZW50LFxuICAgIFRleHRDb21wb25lbnQsXG4gICAgVGl0bGVDb21wb25lbnQsXG4gICAgU2tlbGV0b25MYXlvdXRDb21wb25lbnQsXG4gICAgQ3RhQ2FyZENvbXBvbmVudCxcbiAgICBTaGFyZVByb2ZpbGVNb2RhbENvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicGFnZVwiPlxuICAgICAgPGhlYWRlciBjbGFzcz1cInBhZ2UtaGVhZGVyXCI+XG4gICAgICAgIDx2YWwtZGlzcGxheSBbcHJvcHNdPVwieyBzaXplOiAnc21hbGwnLCBjb2xvcjogJ2RhcmsnLCBjb250ZW50OiB0KCdwYWdlVGl0bGUnKSB9XCIgLz5cbiAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICBzaXplOiAnbGFyZ2UnLFxuICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgY29udGVudDogdCgncGFnZURlc2NyaXB0aW9uJyksXG4gICAgICAgICAgfVwiXG4gICAgICAgIC8+XG4gICAgICA8L2hlYWRlcj5cblxuICAgICAgQGlmIChsb2FkaW5nKCkpIHtcbiAgICAgICAgPHZhbC1za2VsZXRvbi1sYXlvdXQgW3Byb3BzXT1cInsgcHJlc2V0OiAnZm9ybScsIHJvd3M6IDMsIHNob3dBdmF0YXI6IHRydWUgfVwiIC8+XG4gICAgICB9IEBlbHNlIGlmIChlcnJvclN0YXRlKCkpIHtcbiAgICAgICAgPHZhbC1lbXB0eS1zdGF0ZSBbcHJvcHNdPVwiZXJyb3JTdGF0ZSgpIVwiIC8+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGlmIChwcm9maWxlKCk7IGFzIHApIHtcbiAgICAgICAgICBAaWYgKHJlc29sdmVkQ29uZmlnKCkuc2hvd0F2YXRhcikge1xuICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJzZXR0aW5ncy1zZWN0aW9uIGF2YXRhci1zZWN0aW9uXCI+XG4gICAgICAgICAgICAgIDx2YWwtYXZhdGFyLXVwbG9hZFxuICAgICAgICAgICAgICAgIFtwcm9wc109XCJhdmF0YXJQcm9wcygpXCJcbiAgICAgICAgICAgICAgICAodXBsb2FkZWQpPVwib25BdmF0YXJVcGxvYWRlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoZXJyb3IpPVwib25BdmF0YXJFcnJvcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1tZXRhXCI+XG4gICAgICAgICAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgICAgIGJvbGQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHAubmFtZSB8fCAn4oCUJyxcbiAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogcC5lbWFpbCxcbiAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgQGlmIChwLmhhbmRsZSkge1xuICAgICAgICAgICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICAgICAgICAgIGJvbGQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgY29udGVudDogJ0AnICsgcC5oYW5kbGUsXG4gICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDx2YWwtZm9ybSAjZm9ybSBbcHJvcHNdPVwiZm9ybU1ldGFcIiAob25TdWJtaXQpPVwib25TdWJtaXQoJGV2ZW50KVwiIC8+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLnBhZ2Uge1xuICAgICAgICBwYWRkaW5nOiAxNnB4IDA7XG4gICAgICAgIG1heC13aWR0aDogNzIwcHg7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgfVxuXG4gICAgICAvKiBTZWd1bmRvIGFuY2hvLCBkZXNrdG9wIGNvbiBlbCByYWlsIHJldHJhw61kby4gVmVyIHNldHRpbmdzLWh1YiBwYXJhIGxhXG4gICAgICAgICBleHBsaWNhY2nDs24gY29tcGxldGEgZGVsIG1lY2FuaXNtby4gKi9cbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtbWVudT0nY29sbGFwc2VkJ10pIC5wYWdlIHtcbiAgICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAgICAgICAgIG1heC13aWR0aDogOTAwcHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC5wYWdlLWhlYWRlciB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gICAgICB9XG4gICAgICAuc2V0dGluZ3Mtc2VjdGlvbiB7XG4gICAgICAgIHBhZGRpbmc6IDE2cHggMDtcbiAgICAgIH1cbiAgICAgIC5zZXR0aW5ncy1zZWN0aW9uICsgLnNldHRpbmdzLXNlY3Rpb24ge1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tdmFsLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjA4KSk7XG4gICAgICB9XG4gICAgICAuYXZhdGFyLXNlY3Rpb24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDE2cHg7XG4gICAgICB9XG4gICAgICAuYXZhdGFyLW1ldGEge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDJweDtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9maWxlQ29udGVudENvbXBvbmVudCB7XG4gIHByaXZhdGUgYXV0aCA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgdG9hc3QgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBlcnJvcnMgPSBpbmplY3QoVmFsdGVjaEVycm9yU2VydmljZSk7XG4gIHByaXZhdGUgZmlyZWJhc2UgPSBpbmplY3QoRmlyZWJhc2VTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBjb2xsZWN0aW9ucyA9IGluamVjdChGaXJlc3RvcmVDb2xsZWN0aW9uRmFjdG9yeSk7XG4gIHByaXZhdGUgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgQElucHV0KCkgY29uZmlnPzogUHJvZmlsZVZpZXdDb25maWc7XG5cbiAgcmVhZG9ubHkgcmVzb2x2ZWRDb25maWcgPSBjb21wdXRlZDxcbiAgICBSZXF1aXJlZDxPbWl0PFByb2ZpbGVWaWV3Q29uZmlnLCAnb25TYXZlZCcgfCAnb25BdmF0YXJVcGxvYWRlZCcgfCAncHJvZmlsZUJhc2VVcmwnPj4gJlxuICAgICAgUGljazxQcm9maWxlVmlld0NvbmZpZywgJ29uU2F2ZWQnIHwgJ29uQXZhdGFyVXBsb2FkZWQnIHwgJ3Byb2ZpbGVCYXNlVXJsJz5cbiAgPigoKSA9PiB7XG4gICAgY29uc3QgZnJvbVJvdXRlID0gKHRoaXMucm91dGU/LnNuYXBzaG90LmRhdGFbJ3Byb2ZpbGVDb25maWcnXSA/PyB7fSkgYXMgUHJvZmlsZVZpZXdDb25maWc7XG4gICAgY29uc3QgbWVyZ2VkOiBQcm9maWxlVmlld0NvbmZpZyA9IHsgLi4uZnJvbVJvdXRlLCAuLi4odGhpcy5jb25maWcgPz8ge30pIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIHNob3dBdmF0YXI6IG1lcmdlZC5zaG93QXZhdGFyID8/IHRydWUsXG4gICAgICBzaG93SGFuZGxlOiBtZXJnZWQuc2hvd0hhbmRsZSA/PyB0cnVlLFxuICAgICAgc2hvd1Bob25lOiBtZXJnZWQuc2hvd1Bob25lID8/IHRydWUsXG4gICAgICBzaG93U2hhcmVDdGE6IG1lcmdlZC5zaG93U2hhcmVDdGEgPz8gdHJ1ZSxcbiAgICAgIHByb2ZpbGVCYXNlVXJsOiBtZXJnZWQucHJvZmlsZUJhc2VVcmwgPz8gJycsXG4gICAgICBpMThuTmFtZXNwYWNlOiBtZXJnZWQuaTE4bk5hbWVzcGFjZSA/PyBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAgIG9uU2F2ZWQ6IG1lcmdlZC5vblNhdmVkLFxuICAgICAgb25BdmF0YXJVcGxvYWRlZDogbWVyZ2VkLm9uQXZhdGFyVXBsb2FkZWQsXG4gICAgfTtcbiAgfSk7XG5cbiAgLyoqIE5hbWVzcGFjZSBpMThuIHJlc3VlbHRvIChww7pibGljbyBwYXJhIHF1ZSBsYSB2aXN0YSBydXRlYWRhIGFybWUgZWwgaGVhZGVyKS4gKi9cbiAgZ2V0IG5zKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWRDb25maWcoKS5pMThuTmFtZXNwYWNlO1xuICB9XG5cbiAgcHJpdmF0ZSB1c2Vyc0NvbDogVHlwZWRDb2xsZWN0aW9uPFVzZXJNaXJyb3JEb2M+ID0gdGhpcy5jb2xsZWN0aW9ucy5jcmVhdGU8VXNlck1pcnJvckRvYz4oJ3VzZXJzJywge1xuICAgIHNraXBBcHBQcmVmaXg6IHRydWUsXG4gIH0pO1xuXG4gIHByaXZhdGUgZm9ybUNtcCA9IHZpZXdDaGlsZDxGb3JtQ29tcG9uZW50PignZm9ybScpO1xuXG4gIHJlYWRvbmx5IHByb2ZpbGUgPSBzaWduYWw8R2V0UHJvZmlsZVJlc3BvbnNlIHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IGxvYWRpbmcgPSBzaWduYWwodHJ1ZSk7XG4gIHJlYWRvbmx5IHNhdmluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGxvYWRFcnJvciA9IHNpZ25hbDx1bmtub3duIHwgbnVsbD4obnVsbCk7XG5cbiAgcmVhZG9ubHkgc2hhcmVPcGVuID0gc2lnbmFsKGZhbHNlKTtcblxuICByZWFkb25seSBzaGFyZUN0YSA9IGNvbXB1dGVkPEN0YUNhcmRNZXRhZGF0YT4oKCkgPT4ge1xuICAgIHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiB0aGlzLnQoJ3NoYXJlQ3RhVGl0bGUnKSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLnQoJ3NoYXJlQ3RhRGVzYycpLFxuICAgICAgYm9yZGVyZWQ6IHRydWUsXG4gICAgICBhY3Rpb25zOiB7XG4gICAgICAgIHBvc2l0aW9uOiAnbGVmdCcsXG4gICAgICAgIGNvbHVtbmVkOiBmYWxzZSxcbiAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRleHQ6IHRoaXMudCgnc2hhcmVDdGFCdG4nKSxcbiAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICAgICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICAgICAgICAgIHRva2VuOiAnc2hhcmUnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH07XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHNoYXJlTW9kYWwgPSBjb21wdXRlZDxTaGFyZVByb2ZpbGVNb2RhbE1ldGFkYXRhPigoKSA9PiB7XG4gICAgY29uc3QgcCA9IHRoaXMucHJvZmlsZSgpO1xuICAgIGNvbnN0IGhhbmRsZSA9IHA/LmhhbmRsZSA/PyAnbWUnO1xuICAgIGNvbnN0IGJhc2UgPSB0aGlzLnJlc29sdmVkQ29uZmlnKCkucHJvZmlsZUJhc2VVcmw7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHA/Lm5hbWUgPz8gJycsXG4gICAgICBoYW5kbGU6IHA/LmhhbmRsZSxcbiAgICAgIGF2YXRhclVybDogcD8uYXZhdGFyVXJsLFxuICAgICAgZW1haWw6IHA/LmVtYWlsLFxuICAgICAgdXJsOiBiYXNlID8gYCR7YmFzZX0vdS8ke2hhbmRsZX1gIDogYC91LyR7aGFuZGxlfWAsXG4gICAgfTtcbiAgfSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfdXNlcklkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5hdXRoLnVzZXIoKT8udXNlcklkID8/IG51bGwpO1xuXG4gIHJlYWRvbmx5IGVycm9yU3RhdGUgPSBjb21wdXRlZDxFbXB0eVN0YXRlTWV0YWRhdGEgfCBudWxsPigoKSA9PiB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICBjb25zdCBlcnIgPSB0aGlzLmxvYWRFcnJvcigpO1xuICAgIGlmICghZXJyKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gY3JlYXRlRXJyb3JTdGF0ZVByb3BzKGVyciwge1xuICAgICAgdGl0bGU6IHtcbiAgICAgICAgb2ZmbGluZTogdGhpcy50KCdvZmZsaW5lVGl0bGUnKSxcbiAgICAgICAgZXJyb3I6IHRoaXMudCgnZXJyb3JUaXRsZScpLFxuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICAgIG9mZmxpbmU6IHRoaXMudCgnb2ZmbGluZUhpbnQnKSxcbiAgICAgICAgZXJyb3I6IGludGVycHJldEVycm9yKGVycikubWVzc2FnZSxcbiAgICAgIH0sXG4gICAgICByZXRyeUxhYmVsOiB0aGlzLnQoJ3JldHJ5JyksXG4gICAgICBvblJldHJ5OiAoKSA9PiB0aGlzLmxvYWRGcm9tQXBpKCksXG4gICAgICByZXRyeWluZzogdGhpcy5sb2FkaW5nKCksXG4gICAgfSk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGF2YXRhclByb3BzID0gY29tcHV0ZWQ8QXZhdGFyVXBsb2FkTWV0YWRhdGE+KCgpID0+IHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIGNvbnN0IHAgPSB0aGlzLnByb2ZpbGUoKTtcbiAgICByZXR1cm4ge1xuICAgICAgY3VycmVudFVybDogcD8uYXZhdGFyVXJsLFxuICAgICAgaW5pdGlhbHM6IHRoaXMuaW5pdGlhbHNGcm9tTmFtZShwPy5uYW1lKSxcbiAgICAgIHNpemU6IDk2LFxuICAgICAgZWRpdGFibGU6IHRydWUsXG4gICAgICBzaG93Vmlld0J1dHRvbjogdHJ1ZSxcbiAgICAgIGkxOG5OYW1lc3BhY2U6IHRoaXMubnMsXG4gICAgfTtcbiAgfSk7XG5cbiAgZm9ybU1ldGE6IEZvcm1NZXRhZGF0YSA9IHRoaXMuYnVpbGRGb3JtTWV0YSgpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IG5zID0gdGhpcy5ucztcbiAgICB0aGlzLmkxOG4ucmVnaXN0ZXJEZWZhdWx0cyhucywgUFJPRklMRV9WSUVXX0kxOE4pO1xuXG4gICAgY29ubmVjdFBhZ2VSZWZyZXNoKCgpID0+IHRoaXMubG9hZEZyb21BcGkoKSk7XG5cbiAgICB2b2lkIHRoaXMuZmlyZWJhc2Uud2hlbkZpcmViYXNlQXV0aFJlYWR5KCkudGhlbigoKSA9PiB7XG4gICAgICBjb25zdCB1aWQgPSB0aGlzLl91c2VySWQoKTtcbiAgICAgIGlmICh1aWQpIHtcbiAgICAgICAgdm9pZCB0aGlzLmxvYWRGcm9tQXBpKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBlZmZlY3QoXG4gICAgICBvbkNsZWFudXAgPT4ge1xuICAgICAgICBjb25zdCB1aWQgPSB0aGlzLl91c2VySWQoKTtcbiAgICAgICAgaWYgKCF1aWQpIHtcbiAgICAgICAgICB0aGlzLnByb2ZpbGUuc2V0KG51bGwpO1xuICAgICAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xuXG4gICAgICAgIGxldCBzdWI6IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuICAgICAgICBsZXQgY2FuY2VsbGVkID0gZmFsc2U7XG4gICAgICAgIGxldCBhcGlGYWxsYmFja1VzZWQgPSBmYWxzZTtcblxuICAgICAgICB2b2lkIHRoaXMuZmlyZWJhc2Uud2hlbkZpcmViYXNlQXV0aFJlYWR5KCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgaWYgKGNhbmNlbGxlZCkgcmV0dXJuO1xuICAgICAgICAgIHN1YiA9IHRoaXMudXNlcnNDb2wud2F0Y2godWlkKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgbmV4dDogZG9jID0+IHtcbiAgICAgICAgICAgICAgaWYgKGRvYykge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvZmlsZS5zZXQodGhpcy5tYXBNaXJyb3JUb1Byb2ZpbGUoZG9jKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkRXJyb3Iuc2V0KG51bGwpO1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFhcGlGYWxsYmFja1VzZWQpIHtcbiAgICAgICAgICAgICAgICBhcGlGYWxsYmFja1VzZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHZvaWQgdGhpcy5sb2FkRnJvbUFwaSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFhcGlGYWxsYmFja1VzZWQpIHtcbiAgICAgICAgICAgICAgICBhcGlGYWxsYmFja1VzZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHZvaWQgdGhpcy5sb2FkRnJvbUFwaSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBvbkNsZWFudXAoKCkgPT4ge1xuICAgICAgICAgIGNhbmNlbGxlZCA9IHRydWU7XG4gICAgICAgICAgc3ViPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGlzU2F2aW5nID0gdGhpcy5zYXZpbmcoKTtcbiAgICAgIGNvbnN0IHN0YXRlID0gaXNTYXZpbmcgPyBDb21wb25lbnRTdGF0ZXMuV09SS0lORyA6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVEO1xuICAgICAgdGhpcy5mb3JtTWV0YS5zdGF0ZSA9IHN0YXRlO1xuICAgICAgKHRoaXMuZm9ybU1ldGEuYWN0aW9ucyBhcyBCdXR0b25NZXRhZGF0YSkuc3RhdGUgPSBzdGF0ZTtcbiAgICAgICh0aGlzLmZvcm1NZXRhLmFjdGlvbnMgYXMgQnV0dG9uTWV0YWRhdGEpLnRleHQgPSBpc1NhdmluZyA/IHRoaXMudCgnc2F2aW5nJykgOiB0aGlzLnQoJ3NhdmUnKTtcbiAgICB9KTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBwID0gdGhpcy5wcm9maWxlKCk7XG4gICAgICBjb25zdCBmb3JtID0gdGhpcy5mb3JtQ21wKCk/LkZvcm07XG4gICAgICBpZiAoIXAgfHwgIWZvcm0pIHJldHVybjtcbiAgICAgIGZvcm0ucGF0Y2hWYWx1ZShcbiAgICAgICAge1xuICAgICAgICAgIGhhbmRsZTogcC5oYW5kbGUgfHwgJycsXG4gICAgICAgICAgbmFtZTogcC5uYW1lIHx8ICcnLFxuICAgICAgICAgIHBob25lOiBwLnBob25lIHx8ICcnLFxuICAgICAgICB9LFxuICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgICAgdGhpcy5hcHBseUkxOG5MYWJlbHMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRGb3JtTWV0YSgpOiBGb3JtTWV0YWRhdGEge1xuICAgIGNvbnN0IGNmZyA9IHRoaXMucmVzb2x2ZWRDb25maWcoKTtcblxuICAgIGNvbnN0IGhhbmRsZUZpZWxkOiBJbnB1dE1ldGFkYXRhID0ge1xuICAgICAgdG9rZW46ICdwcm9maWxlLWhhbmRsZScsXG4gICAgICBuYW1lOiAnaGFuZGxlJyxcbiAgICAgIGxhYmVsOiB0aGlzLnQoJ2hhbmRsZScpLFxuICAgICAgaGludDogdGhpcy50KCdoYW5kbGVIaW50JyksXG4gICAgICBwbGFjZWhvbGRlcjogdGhpcy50KCdoYW5kbGVQbGFjZWhvbGRlcicpLFxuICAgICAgdHlwZTogSW5wdXRUeXBlLkhBTkRMRSxcbiAgICAgIG9yZGVyOiAxLFxuICAgICAgdmFsaWRhdG9yczogW1xuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICBWYWxpZGF0b3JzLm1pbkxlbmd0aChIQU5ETEVfTUlOKSxcbiAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoSEFORExFX01BWCksXG4gICAgICAgIFZhbGlkYXRvcnMucGF0dGVybihIQU5ETEVfUEFUVEVSTiksXG4gICAgICBdLFxuICAgICAgZXJyb3JzOiB7XG4gICAgICAgIHJlcXVpcmVkOiB0aGlzLnQoJ3VzZXJuYW1lSW52YWxpZCcpLFxuICAgICAgICBtaW5sZW5ndGg6IHRoaXMudCgndXNlcm5hbWVJbnZhbGlkJyksXG4gICAgICAgIG1heGxlbmd0aDogdGhpcy50KCd1c2VybmFtZUludmFsaWQnKSxcbiAgICAgICAgcGF0dGVybjogdGhpcy50KCd1c2VybmFtZUludmFsaWQnKSxcbiAgICAgIH0sXG4gICAgICB2YWx1ZTogJycsXG4gICAgICByYW5nZTogeyBtaW46IEhBTkRMRV9NSU4sIG1heDogSEFORExFX01BWCB9LFxuICAgICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgIH07XG5cbiAgICBjb25zdCBuYW1lRmllbGQ6IElucHV0TWV0YWRhdGEgPSB7XG4gICAgICB0b2tlbjogJ3Byb2ZpbGUtbmFtZScsXG4gICAgICBuYW1lOiAnbmFtZScsXG4gICAgICBsYWJlbDogdGhpcy50KCduYW1lJyksXG4gICAgICBoaW50OiB0aGlzLnQoJ25hbWVIaW50JyksXG4gICAgICBwbGFjZWhvbGRlcjogdGhpcy50KCduYW1lUGxhY2Vob2xkZXInKSxcbiAgICAgIHR5cGU6IElucHV0VHlwZS5URVhULFxuICAgICAgb3JkZXI6IDIsXG4gICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMiksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwMCldLFxuICAgICAgZXJyb3JzOiB7fSxcbiAgICAgIHZhbHVlOiAnJyxcbiAgICAgIHN0YXRlOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgICB9O1xuXG4gICAgY29uc3QgcGhvbmVGaWVsZDogSW5wdXRNZXRhZGF0YSA9IHtcbiAgICAgIHRva2VuOiAncHJvZmlsZS1waG9uZScsXG4gICAgICBuYW1lOiAncGhvbmUnLFxuICAgICAgbGFiZWw6IHRoaXMudCgncGhvbmUnKSxcbiAgICAgIGhpbnQ6IHRoaXMudCgncGhvbmVIaW50JyksXG4gICAgICBwbGFjZWhvbGRlcjogdGhpcy50KCdwaG9uZVBsYWNlaG9sZGVyJyksXG4gICAgICB0eXBlOiBJbnB1dFR5cGUuUEhPTkUsXG4gICAgICBvcmRlcjogMyxcbiAgICAgIHZhbGlkYXRvcnM6IFtdLFxuICAgICAgZXJyb3JzOiB7fSxcbiAgICAgIHZhbHVlOiAnJyxcbiAgICAgIHN0YXRlOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgICB9O1xuXG4gICAgY29uc3QgZmllbGRzOiBJbnB1dE1ldGFkYXRhW10gPSBbXTtcbiAgICBpZiAoY2ZnLnNob3dIYW5kbGUpIGZpZWxkcy5wdXNoKGhhbmRsZUZpZWxkKTtcbiAgICBmaWVsZHMucHVzaChuYW1lRmllbGQpO1xuICAgIGlmIChjZmcuc2hvd1Bob25lKSBmaWVsZHMucHVzaChwaG9uZUZpZWxkKTtcblxuICAgIGNvbnN0IHN1Ym1pdEJ1dHRvbjogQnV0dG9uTWV0YWRhdGEgPSB7XG4gICAgICB0ZXh0OiB0aGlzLnQoJ3NhdmUnKSxcbiAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICB0eXBlOiAnc3VibWl0JyxcbiAgICAgIGZpbGw6ICdzb2xpZCcsXG4gICAgICBzaXplOiAnZGVmYXVsdCcsXG4gICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgIGV4cGFuZDogJ2Jsb2NrJyxcbiAgICAgIHN0YXRlOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgICAgIHRva2VuOiAncHJvZmlsZS1zYXZlJyxcbiAgICB9IGFzIEJ1dHRvbk1ldGFkYXRhO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgICAgc2VjdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICcnLFxuICAgICAgICAgIG9yZGVyOiAxLFxuICAgICAgICAgIGZpZWxkcyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBhY3Rpb25zOiBzdWJtaXRCdXR0b24sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlJMThuTGFiZWxzKCk6IHZvaWQge1xuICAgIGNvbnN0IHNlY3Rpb24gPSB0aGlzLmZvcm1NZXRhLnNlY3Rpb25zWzBdO1xuICAgIGZvciAoY29uc3QgZmllbGQgb2Ygc2VjdGlvbi5maWVsZHMpIHtcbiAgICAgIHN3aXRjaCAoZmllbGQubmFtZSkge1xuICAgICAgICBjYXNlICdoYW5kbGUnOlxuICAgICAgICAgIGZpZWxkLmxhYmVsID0gdGhpcy50KCdoYW5kbGUnKTtcbiAgICAgICAgICBmaWVsZC5oaW50ID0gdGhpcy50KCdoYW5kbGVIaW50Jyk7XG4gICAgICAgICAgZmllbGQucGxhY2Vob2xkZXIgPSB0aGlzLnQoJ2hhbmRsZVBsYWNlaG9sZGVyJyk7XG4gICAgICAgICAgZmllbGQuZXJyb3JzID0ge1xuICAgICAgICAgICAgcmVxdWlyZWQ6IHRoaXMudCgndXNlcm5hbWVJbnZhbGlkJyksXG4gICAgICAgICAgICBtaW5sZW5ndGg6IHRoaXMudCgndXNlcm5hbWVJbnZhbGlkJyksXG4gICAgICAgICAgICBtYXhsZW5ndGg6IHRoaXMudCgndXNlcm5hbWVJbnZhbGlkJyksXG4gICAgICAgICAgICBwYXR0ZXJuOiB0aGlzLnQoJ3VzZXJuYW1lSW52YWxpZCcpLFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ25hbWUnOlxuICAgICAgICAgIGZpZWxkLmxhYmVsID0gdGhpcy50KCduYW1lJyk7XG4gICAgICAgICAgZmllbGQuaGludCA9IHRoaXMudCgnbmFtZUhpbnQnKTtcbiAgICAgICAgICBmaWVsZC5wbGFjZWhvbGRlciA9IHRoaXMudCgnbmFtZVBsYWNlaG9sZGVyJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3Bob25lJzpcbiAgICAgICAgICBmaWVsZC5sYWJlbCA9IHRoaXMudCgncGhvbmUnKTtcbiAgICAgICAgICBmaWVsZC5oaW50ID0gdGhpcy50KCdwaG9uZUhpbnQnKTtcbiAgICAgICAgICBmaWVsZC5wbGFjZWhvbGRlciA9IHRoaXMudCgncGhvbmVQbGFjZWhvbGRlcicpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBidXR0b24gPSB0aGlzLmZvcm1NZXRhLmFjdGlvbnMgYXMgQnV0dG9uTWV0YWRhdGE7XG4gICAgYnV0dG9uLnRleHQgPSB0aGlzLnNhdmluZygpID8gdGhpcy50KCdzYXZpbmcnKSA6IHRoaXMudCgnc2F2ZScpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkRnJvbUFwaSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5hdXRoLmdldFByb2ZpbGUoKSk7XG4gICAgICB0aGlzLnByb2ZpbGUuc2V0KHApO1xuICAgICAgdGhpcy5sb2FkRXJyb3Iuc2V0KG51bGwpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5sb2FkRXJyb3Iuc2V0KGVycik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwTWlycm9yVG9Qcm9maWxlKGRvYzogVXNlck1pcnJvckRvYyk6IEdldFByb2ZpbGVSZXNwb25zZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9wZXJhdGlvbklkOiAnJyxcbiAgICAgIHVzZXJJZDogZG9jLnVzZXJJZCxcbiAgICAgIGVtYWlsOiBkb2MuZW1haWwsXG4gICAgICBuYW1lOiBkb2MubmFtZSA/PyAnJyxcbiAgICAgIGhhbmRsZTogZG9jLmhhbmRsZSxcbiAgICAgIHBob25lOiBkb2MucGhvbmUsXG4gICAgICBhdmF0YXJVcmw6IGRvYy5hdmF0YXJVcmwsXG4gICAgICBlbWFpbFZlcmlmaWVkOiBmYWxzZSxcbiAgICAgIHBob25lVmVyaWZpZWQ6IGZhbHNlLFxuICAgICAgbWZhRW5hYmxlZDogZmFsc2UsXG4gICAgICBjcmVhdGVkQXQ6ICcnLFxuICAgICAgdXBkYXRlZEF0OiAnJyxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgb25TdWJtaXQoZXZlbnQ6IEZvcm1TdWJtaXQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5zYXZpbmcoKSkgcmV0dXJuO1xuXG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMucHJvZmlsZSgpO1xuICAgIGlmICghY3VycmVudCkgcmV0dXJuO1xuXG4gICAgY29uc3QgY2ZnID0gdGhpcy5yZXNvbHZlZENvbmZpZygpO1xuICAgIGNvbnN0IGZpZWxkcyA9IGV2ZW50LmZpZWxkcyB8fCB7fTtcbiAgICBjb25zdCBuZXh0SGFuZGxlID0gU3RyaW5nKGZpZWxkc1snaGFuZGxlJ10gfHwgJycpXG4gICAgICAudHJpbSgpXG4gICAgICAudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBuZXh0TmFtZSA9IFN0cmluZyhmaWVsZHNbJ25hbWUnXSB8fCAnJykudHJpbSgpO1xuICAgIGNvbnN0IG5leHRQaG9uZSA9IFN0cmluZyhmaWVsZHNbJ3Bob25lJ10gfHwgJycpLnRyaW0oKTtcblxuICAgIGNvbnN0IGhhbmRsZUNoYW5nZWQgPSBjZmcuc2hvd0hhbmRsZSAmJiAhIW5leHRIYW5kbGUgJiYgbmV4dEhhbmRsZSAhPT0gKGN1cnJlbnQuaGFuZGxlIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IG5hbWVDaGFuZ2VkID0gISFuZXh0TmFtZSAmJiBuZXh0TmFtZSAhPT0gKGN1cnJlbnQubmFtZSB8fCAnJyk7XG4gICAgY29uc3QgcGhvbmVDaGFuZ2VkID0gY2ZnLnNob3dQaG9uZSAmJiBuZXh0UGhvbmUgIT09IChjdXJyZW50LnBob25lIHx8ICcnKTtcblxuICAgIGlmICghaGFuZGxlQ2hhbmdlZCAmJiAhbmFtZUNoYW5nZWQgJiYgIXBob25lQ2hhbmdlZCkge1xuICAgICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgICAgbWVzc2FnZTogdGhpcy50KCdzYXZlU3VjY2VzcycpLFxuICAgICAgICBkdXJhdGlvbjogMjAwMCxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgcG9zaXRpb246ICd0b3AnLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zYXZpbmcuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBpZiAoaGFuZGxlQ2hhbmdlZCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuYXV0aC51cGRhdGVIYW5kbGUobmV4dEhhbmRsZSkpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICB0aGlzLmVycm9ycy5oYW5kbGUoZXJyLCB7XG4gICAgICAgICAgICBjb250ZXh0OiAncHJvZmlsZS51cGRhdGVIYW5kbGUnLFxuICAgICAgICAgICAgaTE4bk1hcDogeyBBVVRIX1VTRVJOQU1FX0VYSVNUUzogJ2hhbmRsZUluVXNlJyB9LFxuICAgICAgICAgICAgZmFsbGJhY2tLZXk6ICdoYW5kbGVFcnJvcicsXG4gICAgICAgICAgICBpMThuTmFtZXNwYWNlOiB0aGlzLm5zLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGF3YWl0IHRoaXMubG9hZEZyb21BcGkoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG5hbWVDaGFuZ2VkIHx8IHBob25lQ2hhbmdlZCkge1xuICAgICAgICBjb25zdCBwYXlsb2FkOiB7IG5hbWU/OiBzdHJpbmc7IHBob25lPzogc3RyaW5nIH0gPSB7fTtcbiAgICAgICAgaWYgKG5hbWVDaGFuZ2VkKSBwYXlsb2FkLm5hbWUgPSBuZXh0TmFtZTtcbiAgICAgICAgaWYgKHBob25lQ2hhbmdlZCkgcGF5bG9hZC5waG9uZSA9IG5leHRQaG9uZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmF1dGgudXBkYXRlUHJvZmlsZShwYXlsb2FkKSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIHRoaXMuZXJyb3JzLmhhbmRsZShlcnIsIHtcbiAgICAgICAgICAgIGNvbnRleHQ6ICdwcm9maWxlLnVwZGF0ZVByb2ZpbGUnLFxuICAgICAgICAgICAgaTE4bk1hcDoge1xuICAgICAgICAgICAgICBBVVRIVjJfUEhPTkVfRVhJU1RTOiAncGhvbmVJblVzZScsXG4gICAgICAgICAgICAgIEFVVEhWMl9JTlZBTElEX1BIT05FOiAncGhvbmVJbnZhbGlkJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmYWxsYmFja0tleTogJ3NhdmVFcnJvcicsXG4gICAgICAgICAgICBpMThuTmFtZXNwYWNlOiB0aGlzLm5zLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGF3YWl0IHRoaXMubG9hZEZyb21BcGkoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgICAgbWVzc2FnZTogdGhpcy50KCdzYXZlU3VjY2VzcycpLFxuICAgICAgICBkdXJhdGlvbjogMjUwMCxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgcG9zaXRpb246ICd0b3AnLFxuICAgICAgfSk7XG4gICAgICBjZmcub25TYXZlZD8uKHRoaXMucHJvZmlsZSgpID8/IGN1cnJlbnQpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnNhdmluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXZhdGFyVXBsb2FkZWQocmVzdWx0OiBBdmF0YXJVcGxvYWRSZXN1bHQpOiB2b2lkIHtcbiAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgbWVzc2FnZTogdGhpcy50KCdhdmF0YXJTdWNjZXNzJyksXG4gICAgICBkdXJhdGlvbjogMjUwMCxcbiAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICBwb3NpdGlvbjogJ3RvcCcsXG4gICAgfSk7XG4gICAgdGhpcy5yZXNvbHZlZENvbmZpZygpLm9uQXZhdGFyVXBsb2FkZWQ/LihyZXN1bHQpO1xuICB9XG5cbiAgb25BdmF0YXJFcnJvcihfZXJyOiBBdmF0YXJVcGxvYWRFcnJvcik6IHZvaWQge1xuICAgIHRoaXMudG9hc3Quc2hvdyh7XG4gICAgICBtZXNzYWdlOiB0aGlzLnQoJ2F2YXRhckVycm9yJyksXG4gICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICBwb3NpdGlvbjogJ3RvcCcsXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgdGhpcy5ucyk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxzRnJvbU5hbWUobmFtZT86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFuYW1lKSByZXR1cm4gJz8nO1xuICAgIGNvbnN0IHBhcnRzID0gbmFtZS50cmltKCkuc3BsaXQoL1xccysvKS5maWx0ZXIoQm9vbGVhbik7XG4gICAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuICc/JztcbiAgICBjb25zdCBmaXJzdCA9IHBhcnRzWzBdPy5bMF0gPz8gJyc7XG4gICAgY29uc3QgbGFzdCA9IHBhcnRzLmxlbmd0aCA+IDEgPyAocGFydHNbcGFydHMubGVuZ3RoIC0gMV0/LlswXSA/PyAnJykgOiAnJztcbiAgICByZXR1cm4gKGZpcnN0ICsgbGFzdCkudG9VcHBlckNhc2UoKSB8fCAnPyc7XG4gIH1cbn1cbiJdfQ==
@@ -661,7 +661,7 @@ export class SecurityViewComponent {
661
661
  (enabledViaDeeplink)="onMfaEnabledViaDeeplink()"
662
662
  />
663
663
  </div>
664
- `, isInline: true, styles: [".page{padding:16px 0;max-width:720px;margin:0 auto}.page-header{margin-bottom:16px}.settings-section{padding:16px 0}.settings-section+.settings-section{border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08))}h2{font-size:16px;font-weight:600;margin:0 0 4px}.cards-grid{margin:0 -4px;padding:0}.cards-grid ion-col{padding:4px;display:flex;flex-direction:column}.cards-grid ion-col val-action-card{flex:1;display:flex;flex-direction:column}.section-body{margin-top:16px;display:flex;flex-direction:column;gap:10px}.row-actions{margin-top:12px}.row-actions--center{display:flex;justify-content:center;margin-top:4px}.sessions{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:10px}.session{display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:14px;background:var(--ion-color-light, rgba(0, 0, 0, .04));border:1px solid transparent;transition:background .15s ease,border-color .15s ease}.session--current{background:#2dd36f1a;border-color:#2dd36f4d}.session__icon{font-size:26px;color:var(--ion-color-dark, #1a1a1a);flex-shrink:0}.session--current .session__icon{color:var(--ion-color-success-shade, #28ba62)}.session__body{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.session__end{flex-shrink:0}.session__badge{display:inline-block;padding:4px 10px;font-size:11px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;color:var(--ion-color-success-shade, #28ba62);background:#2dd36f2e;border-radius:999px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: IonRow, selector: "ion-row" }, { kind: "component", type: IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }, { kind: "component", type: ActionCardComponent, selector: "val-action-card", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: ActionHeaderComponent, selector: "val-action-header", inputs: ["props"] }, { kind: "component", type: PageLinksComponent, selector: "val-page-links", inputs: ["props"] }, { kind: "component", type: SkeletonLayoutComponent, selector: "val-skeleton-layout", inputs: ["props"] }, { kind: "component", type: ChangeEmailModalComponent, selector: "val-change-email-modal", inputs: ["isOpen"], outputs: ["changed", "dismissed"] }, { kind: "component", type: ChangePasswordModalComponent, selector: "val-change-password-modal", inputs: ["isOpen"], outputs: ["changed", "dismissed"] }, { kind: "component", type: MfaModalComponent, selector: "val-mfa-modal", inputs: ["isOpen", "prefillCode"], outputs: ["changed", "enabledViaDeeplink", "dismissed"] }] }); }
664
+ `, isInline: true, styles: [".page{padding:16px 0;max-width:720px;margin:0 auto}:host-context([data-menu=\"collapsed\"]) .page{@media (min-width: 1200px){max-width:900px}}.page-header{margin-bottom:16px}.settings-section{padding:16px 0}.settings-section+.settings-section{border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08))}h2{font-size:16px;font-weight:600;margin:0 0 4px}.cards-grid{margin:0 -4px;padding:0}.cards-grid ion-col{padding:4px;display:flex;flex-direction:column}.cards-grid ion-col val-action-card{flex:1;display:flex;flex-direction:column}.section-body{margin-top:16px;display:flex;flex-direction:column;gap:10px}.row-actions{margin-top:12px}.row-actions--center{display:flex;justify-content:center;margin-top:4px}.sessions{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:10px}.session{display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:14px;background:var(--ion-color-light, rgba(0, 0, 0, .04));border:1px solid transparent;transition:background .15s ease,border-color .15s ease}.session--current{background:#2dd36f1a;border-color:#2dd36f4d}.session__icon{font-size:26px;color:var(--ion-color-dark, #1a1a1a);flex-shrink:0}.session--current .session__icon{color:var(--ion-color-success-shade, #28ba62)}.session__body{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.session__end{flex-shrink:0}.session__badge{display:inline-block;padding:4px 10px;font-size:11px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;color:var(--ion-color-success-shade, #28ba62);background:#2dd36f2e;border-radius:999px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: IonRow, selector: "ion-row" }, { kind: "component", type: IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }, { kind: "component", type: ActionCardComponent, selector: "val-action-card", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: ActionHeaderComponent, selector: "val-action-header", inputs: ["props"] }, { kind: "component", type: PageLinksComponent, selector: "val-page-links", inputs: ["props"] }, { kind: "component", type: SkeletonLayoutComponent, selector: "val-skeleton-layout", inputs: ["props"] }, { kind: "component", type: ChangeEmailModalComponent, selector: "val-change-email-modal", inputs: ["isOpen"], outputs: ["changed", "dismissed"] }, { kind: "component", type: ChangePasswordModalComponent, selector: "val-change-password-modal", inputs: ["isOpen"], outputs: ["changed", "dismissed"] }, { kind: "component", type: MfaModalComponent, selector: "val-mfa-modal", inputs: ["isOpen", "prefillCode"], outputs: ["changed", "enabledViaDeeplink", "dismissed"] }] }); }
665
665
  }
666
666
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SecurityViewComponent, decorators: [{
667
667
  type: Component,
@@ -810,8 +810,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
810
810
  (enabledViaDeeplink)="onMfaEnabledViaDeeplink()"
811
811
  />
812
812
  </div>
813
- `, styles: [".page{padding:16px 0;max-width:720px;margin:0 auto}.page-header{margin-bottom:16px}.settings-section{padding:16px 0}.settings-section+.settings-section{border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08))}h2{font-size:16px;font-weight:600;margin:0 0 4px}.cards-grid{margin:0 -4px;padding:0}.cards-grid ion-col{padding:4px;display:flex;flex-direction:column}.cards-grid ion-col val-action-card{flex:1;display:flex;flex-direction:column}.section-body{margin-top:16px;display:flex;flex-direction:column;gap:10px}.row-actions{margin-top:12px}.row-actions--center{display:flex;justify-content:center;margin-top:4px}.sessions{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:10px}.session{display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:14px;background:var(--ion-color-light, rgba(0, 0, 0, .04));border:1px solid transparent;transition:background .15s ease,border-color .15s ease}.session--current{background:#2dd36f1a;border-color:#2dd36f4d}.session__icon{font-size:26px;color:var(--ion-color-dark, #1a1a1a);flex-shrink:0}.session--current .session__icon{color:var(--ion-color-success-shade, #28ba62)}.session__body{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.session__end{flex-shrink:0}.session__badge{display:inline-block;padding:4px 10px;font-size:11px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;color:var(--ion-color-success-shade, #28ba62);background:#2dd36f2e;border-radius:999px}\n"] }]
813
+ `, styles: [".page{padding:16px 0;max-width:720px;margin:0 auto}:host-context([data-menu=\"collapsed\"]) .page{@media (min-width: 1200px){max-width:900px}}.page-header{margin-bottom:16px}.settings-section{padding:16px 0}.settings-section+.settings-section{border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08))}h2{font-size:16px;font-weight:600;margin:0 0 4px}.cards-grid{margin:0 -4px;padding:0}.cards-grid ion-col{padding:4px;display:flex;flex-direction:column}.cards-grid ion-col val-action-card{flex:1;display:flex;flex-direction:column}.section-body{margin-top:16px;display:flex;flex-direction:column;gap:10px}.row-actions{margin-top:12px}.row-actions--center{display:flex;justify-content:center;margin-top:4px}.sessions{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:10px}.session{display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:14px;background:var(--ion-color-light, rgba(0, 0, 0, .04));border:1px solid transparent;transition:background .15s ease,border-color .15s ease}.session--current{background:#2dd36f1a;border-color:#2dd36f4d}.session__icon{font-size:26px;color:var(--ion-color-dark, #1a1a1a);flex-shrink:0}.session--current .session__icon{color:var(--ion-color-success-shade, #28ba62)}.session__body{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.session__end{flex-shrink:0}.session__badge{display:inline-block;padding:4px 10px;font-size:11px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;color:var(--ion-color-success-shade, #28ba62);background:#2dd36f2e;border-radius:999px}\n"] }]
814
814
  }], ctorParameters: () => [], propDecorators: { config: [{
815
815
  type: Input
816
816
  }] } });
817
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3NlY3VyaXR5LXZpZXcvc2VjdXJpdHktdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUV4RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUU5RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUVyRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnSVQsb2hEQWpKQyxZQUFZLCtCQUNaLE9BQU8sd0VBQ1AsTUFBTSxvREFDTixNQUFNLGtUQUNOLE9BQU8sMkpBQ1AsZ0JBQWdCLDJFQUNoQixjQUFjLHlFQUNkLGFBQWEsd0VBQ2IsZUFBZSwwR0FDZixtQkFBbUIscUdBQ25CLHFCQUFxQixpRkFDckIsa0JBQWtCLDhFQUNsQix1QkFBdUIsbUZBQ3ZCLHlCQUF5QiwwSEFDekIsNEJBQTRCLDZIQUM1QixpQkFBaUI7OzRGQThPUixxQkFBcUI7a0JBalFqQyxTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixPQUFPO3dCQUNQLE1BQU07d0JBQ04sTUFBTTt3QkFDTixPQUFPO3dCQUNQLGdCQUFnQjt3QkFDaEIsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixxQkFBcUI7d0JBQ3JCLGtCQUFrQjt3QkFDbEIsdUJBQXVCO3dCQUN2Qix5QkFBeUI7d0JBQ3pCLDRCQUE0Qjt3QkFDNUIsaUJBQWlCO3FCQUNsQixZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWdJVDt3REE4SFEsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBJbnB1dCwgc2lnbmFsLCB1bnRyYWNrZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSW9uQ29sLCBJb25HcmlkLCBJb25JY29uLCBJb25Sb3cgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgbGFwdG9wT3V0bGluZSwgcGhvbmVQb3J0cmFpdE91dGxpbmUgfSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBBY3Rpb25DYXJkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2FjdGlvbi1jYXJkL2FjdGlvbi1jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBY3Rpb25DYXJkTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvYWN0aW9uLWNhcmQvdHlwZXMnO1xuaW1wb3J0IHsgQWN0aW9uSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2FjdGlvbi1oZWFkZXIvYWN0aW9uLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWN0aW9uSGVhZGVyTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvYWN0aW9uLWhlYWRlci90eXBlcyc7XG5pbXBvcnQgeyBQYWdlTGlua3NDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvcGFnZS1saW5rcy9wYWdlLWxpbmtzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQYWdlTGlua3NNZXRhZGF0YSB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9wYWdlLWxpbmtzL3R5cGVzJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IERpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9kaXNwbGF5L2Rpc3BsYXkuY29tcG9uZW50JztcbmltcG9ydCB7IFRleHRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90ZXh0L3RleHQuY29tcG9uZW50JztcbmltcG9ydCB7IFRpdGxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGl0bGUvdGl0bGUuY29tcG9uZW50JztcbmltcG9ydCB7IFNrZWxldG9uTGF5b3V0Q29tcG9uZW50IH0gZnJvbSAnLi4vc2tlbGV0b24tbGF5b3V0L3NrZWxldG9uLWxheW91dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2hhbmdlRW1haWxNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL2NoYW5nZS1lbWFpbC1tb2RhbC9jaGFuZ2UtZW1haWwtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IENoYW5nZVBhc3N3b3JkTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9jaGFuZ2UtcGFzc3dvcmQtbW9kYWwvY2hhbmdlLXBhc3N3b3JkLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNZmFNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL21mYS1tb2RhbC9tZmEtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IExvZ2luQXR0ZW1wdE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vbG9naW4tYXR0ZW1wdC1tb2RhbC9sb2dpbi1hdHRlbXB0LW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZXNzaW9uTGlzdE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vc2Vzc2lvbi1saXN0LW1vZGFsL3Nlc3Npb24tbGlzdC1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uTWV0YWRhdGEsIENvbXBvbmVudFN0YXRlcyB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuaW1wb3J0IHsgRGV2aWNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGgvZGV2aWNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hdXRoL3Nlc3Npb24uc2VydmljZSc7XG5pbXBvcnQgeyBEZXZpY2VJbmZvLCBTZXNzaW9uSW5mbywgVmFsaWRhdGVBY3Rpb25SZXNwb25zZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGgvdHlwZXMnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IExlZ2FsTGlua1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sZWdhbC1saW5rL2xlZ2FsLWxpbmsuc2VydmljZSc7XG5pbXBvcnQgeyBNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tb2RhbC9tb2RhbC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpcm1hdGlvbkRpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jb25maXJtYXRpb24tZGlhbG9nL2NvbmZpcm1hdGlvbi1kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRpb24vbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IGNvbm5lY3RQYWdlUmVmcmVzaCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3BhZ2UtcmVmcmVzaC9wYWdlLXJlZnJlc2guc2VydmljZSc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IFZhbHRlY2hFcnJvclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9lcnJvcnMvdmFsdGVjaC1lcnJvci5zZXJ2aWNlJztcblxuaW1wb3J0IHsgU2VjdXJpdHlWaWV3Q29uZmlnIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBTRUNVUklUWV9WSUVXX0kxOE4gfSBmcm9tICcuL3NlY3VyaXR5LXZpZXcuaTE4bic7XG5cbmFkZEljb25zKHsgbGFwdG9wT3V0bGluZSwgcGhvbmVQb3J0cmFpdE91dGxpbmUgfSk7XG5cbmNvbnN0IERFRkFVTFRfTkFNRVNQQUNFID0gJ1NldHRpbmdzLlNlY3VyaXR5JztcblxuLyoqXG4gKiBgdmFsLXNlY3VyaXR5LXZpZXdgIOKAlCB2aXN0YSBTZWd1cmlkYWQgZnVsbC1mZWF0dXJlIGF1dG9jb250ZW5pZGEgKG9yZ2FuaXNtKS5cbiAqXG4gKiBQcm9tb3ZpZGEgZGVzZGUgYHNob3djYXNlYCBiYWpvIGVsIHByb2Nlc28gZGUgQURSLTAyMS4gUmXDum5lIGVuIHVuYSBzb2xhIHZpc3RhOlxuICogIC0gKipTZXNpb25lcyBhY3RpdmFzKiog4oCUIMO6bmljYSB2aXN0YSB1c2VyLWZhY2luZyBkZSBcImTDs25kZSB0ZW5nbyBzZXNpw7NuXCIuXG4gKiAgICBMaXN0YSBpbmxpbmUgKGxpbWl0IDMpICsgbW9kYWwgXCJWZXIgdG9kYXNcIiAoYHZhbC1zZXNzaW9uLWxpc3QtbW9kYWxgKSArXG4gKiAgICByZXZva2UgaW5kaXZpZHVhbCAvIHJldm9rZS1hbGwgKGNvbiBjb25maXJtYWNpw7NuKS5cbiAqICAtICoqQWN0aW9uLWNhcmRzKiog4oCUIGNhbWJpYXIgY29udHJhc2XDsWEsIGNhbWJpYXIgZW1haWwgeSBNRkEgKGNhZGEgdW5hIGFicmVcbiAqICAgIGVsIG1vZGFsIGNvcnJlc3BvbmRpZW50ZSBkZSBsYSBsaWIpLlxuICogIC0gKipQb2zDrXRpY2FzIGxlZ2FsZXMqKiDigJQgbGlua3MgcmVzdWVsdG9zIHbDrWEgYExlZ2FsTGlua1NlcnZpY2VgIChhcHBzXG4gKiAgICBzYXTDqWxpdGUgYXB1bnRhbiBhbCBtYWluIHNpdGUpLlxuICpcbiAqIERlZXAtbGlua3MgZGVsIGVtYWlsIChnYXRlYWRvcyBwb3IgYGNvbmZpZy5oYW5kbGVEZWVwTGlua3NgLCBkZWZhdWx0IGB0cnVlYCk6XG4gKiAgLSBgP3Rva2VuPS4uLiZhY3Rpb249Li4uYCDihpIgbW9kYWwgYHZhbC1sb2dpbi1hdHRlbXB0LW1vZGFsYCAoYXV0b3JpemFyL2Jsb3F1ZWFyXG4gKiAgICBlbCBudWV2byBhY2Nlc28pLlxuICogIC0gYD9tZmFDb2RlPS4uLmAg4oaSIGFicmUgZWwgbW9kYWwgTUZBIGNvbiBlbCBjw7NkaWdvIHByZS1jYXJnYWRvLlxuICpcbiAqIE5PIHJlbmRlcml6YSBpb24tY29udGVudCDigJQgdml2ZSBkZW50cm8gZGUgdmFsLXBhZ2Utd3JhcHBlci5cbiAqXG4gKiBBdXRvLXJlZ2lzdHJhIHN1cyBkZWZhdWx0cyBpMThuIChlcy9lbikgZW4gZWwgY29uc3RydWN0b3Igc2kgZWwgY29uc3VtZXIgbm9cbiAqIHByb3ZlecOzIGVsIG5hbWVzcGFjZSBjb25maWd1cmFkbyAoZGVmYXVsdCBgU2V0dGluZ3MuU2VjdXJpdHlgKS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXNlY3VyaXR5LXZpZXcnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIElvbkdyaWQsXG4gICAgSW9uUm93LFxuICAgIElvbkNvbCxcbiAgICBJb25JY29uLFxuICAgIERpc3BsYXlDb21wb25lbnQsXG4gICAgVGl0bGVDb21wb25lbnQsXG4gICAgVGV4dENvbXBvbmVudCxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgQWN0aW9uQ2FyZENvbXBvbmVudCxcbiAgICBBY3Rpb25IZWFkZXJDb21wb25lbnQsXG4gICAgUGFnZUxpbmtzQ29tcG9uZW50LFxuICAgIFNrZWxldG9uTGF5b3V0Q29tcG9uZW50LFxuICAgIENoYW5nZUVtYWlsTW9kYWxDb21wb25lbnQsXG4gICAgQ2hhbmdlUGFzc3dvcmRNb2RhbENvbXBvbmVudCxcbiAgICBNZmFNb2RhbENvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicGFnZVwiPlxuICAgICAgPGhlYWRlciBjbGFzcz1cInBhZ2UtaGVhZGVyXCI+XG4gICAgICAgIDx2YWwtZGlzcGxheSBbcHJvcHNdPVwieyBzaXplOiAnc21hbGwnLCBjb2xvcjogJ2RhcmsnLCBjb250ZW50OiBwYWdlVGl0bGUoKSB9XCIgLz5cbiAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICBzaXplOiAnbGFyZ2UnLFxuICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgY29udGVudDogcGFnZURlc2NyaXB0aW9uKCksXG4gICAgICAgICAgfVwiXG4gICAgICAgIC8+XG4gICAgICA8L2hlYWRlcj5cblxuICAgICAgQGlmIChyZXNvbHZlZENvbmZpZygpLnNob3dTZXNzaW9ucykge1xuICAgICAgICA8IS0tIDEuIEFjdGl2ZSBzZXNzaW9ucyAtIHVuaWNhIHZpc3RhIHVzZXItZmFjaW5nIGRlIGRvbmRlIHRlbmdvIHNlc2lvbi4gLS0+XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwic2V0dGluZ3Mtc2VjdGlvblwiPlxuICAgICAgICAgIEBpZiAoaGFzT3RoZXJTZXNzaW9ucygpKSB7XG4gICAgICAgICAgICA8dmFsLWFjdGlvbi1oZWFkZXIgW3Byb3BzXT1cInNlc3Npb25zSGVhZGVyKClcIiAvPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgYm9sZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBzZXNzaW9uc1RpdGxlV2l0aENvdW50KCksXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1ib2R5XCI+XG4gICAgICAgICAgICBAaWYgKHNlc3Npb25zTG9hZGluZygpKSB7XG4gICAgICAgICAgICAgIDx2YWwtc2tlbGV0b24tbGF5b3V0IFtwcm9wc109XCJ7IHByZXNldDogJ2xpc3QnLCByb3dzOiAzIH1cIiAvPlxuICAgICAgICAgICAgfSBAZWxzZSBpZiAoc2Vzc2lvbnMoKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHNlc3Npb25zRW1wdHlMYWJlbCgpLFxuICAgICAgICAgICAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cInNlc3Npb25zXCI+XG4gICAgICAgICAgICAgICAgQGZvciAocyBvZiB2aXNpYmxlU2Vzc2lvbnMoKTsgdHJhY2sgcy5zZXNzaW9uSWQpIHtcbiAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInNlc3Npb25cIiBbY2xhc3Muc2Vzc2lvbi0tY3VycmVudF09XCJzLmlzQ3VycmVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gY2xhc3M9XCJzZXNzaW9uX19pY29uXCIgW25hbWVdPVwiZGV2aWNlSWNvbihzKVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZXNzaW9uX19ib2R5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBzLmRldmljZUluZm8gfHwgcy5kZXZpY2VJZCB8fCAn4oCUJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJvbGQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogZm9ybWF0U2Vzc2lvbk1ldGEocyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlc3Npb25fX2VuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAocy5pc0N1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2Vzc2lvbl9fYmFkZ2VcIj57eyBzZXNzaW9uc1RoaXMoKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDx2YWwtYnV0dG9uIFtwcm9wc109XCJyZXZva2VPbmVCdXR0b25Qcm9wcygpXCIgKGNsaWNrKT1cIm9uUmV2b2tlT25lKHMuc2Vzc2lvbklkKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICBAaWYgKGhhc01vcmVTZXNzaW9ucygpKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1hY3Rpb25zIHJvdy1hY3Rpb25zLS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgIDx2YWwtYnV0dG9uIFtwcm9wc109XCJ2aWV3QWxsQnV0dG9uUHJvcHMoKVwiIChjbGljayk9XCJvcGVuU2Vzc2lvbnNNb2RhbCgpXCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG5cbiAgICAgIEBpZiAoaGFzQWN0aW9uQ2FyZHMoKSkge1xuICAgICAgICA8IS0tIDIuIFF1aWNrIGFjdGlvbnM6IGNoYW5nZSBwYXNzd29yZCwgY2hhbmdlIGVtYWlsLCBNRkEgLS0+XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwic2V0dGluZ3Mtc2VjdGlvblwiPlxuICAgICAgICAgIDxoMj57eyBxdWlja0FjdGlvbnNUaXRsZSgpIH19PC9oMj5cbiAgICAgICAgICA8aW9uLWdyaWQgY2xhc3M9XCJjYXJkcy1ncmlkXCI+XG4gICAgICAgICAgICA8aW9uLXJvdz5cbiAgICAgICAgICAgICAgQGZvciAoYWN0aW9uIG9mIGFjdGlvbkNhcmRzKCk7IHRyYWNrIGFjdGlvbi50b2tlbikge1xuICAgICAgICAgICAgICAgIDxpb24tY29sIHNpemU9XCIxMlwiIHNpemUtc209XCI2XCI+XG4gICAgICAgICAgICAgICAgICA8dmFsLWFjdGlvbi1jYXJkIFtwcm9wc109XCJhY3Rpb25cIiAob25DbGljayk9XCJvbkFjdGlvbkNsaWNrKGFjdGlvbilcIiAvPlxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9pb24tcm93PlxuICAgICAgICAgIDwvaW9uLWdyaWQ+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH1cblxuICAgICAgQGlmIChyZXNvbHZlZENvbmZpZygpLnNob3dQb2xpY2llcykge1xuICAgICAgICA8IS0tIDMuIFJlbGF0ZWQgcG9saWNpZXMgLS0+XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwic2V0dGluZ3Mtc2VjdGlvblwiPlxuICAgICAgICAgIDxoMj57eyBwb2xpY2llc1RpdGxlKCkgfX08L2gyPlxuICAgICAgICAgIDx2YWwtcGFnZS1saW5rcyBbcHJvcHNdPVwicG9saWN5TGlua3NQcm9wcygpXCIgLz5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfVxuXG4gICAgICA8dmFsLWNoYW5nZS1lbWFpbC1tb2RhbFxuICAgICAgICBbaXNPcGVuXT1cImlzQ2hhbmdlRW1haWxNb2RhbE9wZW4oKVwiXG4gICAgICAgIChjaGFuZ2VkKT1cImlzQ2hhbmdlRW1haWxNb2RhbE9wZW4uc2V0KGZhbHNlKVwiXG4gICAgICAgIChkaXNtaXNzZWQpPVwiaXNDaGFuZ2VFbWFpbE1vZGFsT3Blbi5zZXQoZmFsc2UpXCJcbiAgICAgIC8+XG5cbiAgICAgIDx2YWwtY2hhbmdlLXBhc3N3b3JkLW1vZGFsXG4gICAgICAgIFtpc09wZW5dPVwiaXNDaGFuZ2VQYXNzd29yZE1vZGFsT3BlbigpXCJcbiAgICAgICAgKGNoYW5nZWQpPVwiaXNDaGFuZ2VQYXNzd29yZE1vZGFsT3Blbi5zZXQoZmFsc2UpXCJcbiAgICAgICAgKGRpc21pc3NlZCk9XCJpc0NoYW5nZVBhc3N3b3JkTW9kYWxPcGVuLnNldChmYWxzZSlcIlxuICAgICAgLz5cblxuICAgICAgPHZhbC1tZmEtbW9kYWxcbiAgICAgICAgW2lzT3Blbl09XCJpc01mYU1vZGFsT3BlbigpXCJcbiAgICAgICAgW3ByZWZpbGxDb2RlXT1cIm1mYVByZWZpbGxDb2RlKClcIlxuICAgICAgICAoZGlzbWlzc2VkKT1cIm9uTWZhTW9kYWxEaXNtaXNzZWQoKVwiXG4gICAgICAgIChlbmFibGVkVmlhRGVlcGxpbmspPVwib25NZmFFbmFibGVkVmlhRGVlcGxpbmsoKVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAucGFnZSB7XG4gICAgICAgIHBhZGRpbmc6IDE2cHggMDtcbiAgICAgICAgbWF4LXdpZHRoOiA3MjBweDtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICB9XG4gICAgICAucGFnZS1oZWFkZXIge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICAgICAgfVxuICAgICAgLnNldHRpbmdzLXNlY3Rpb24ge1xuICAgICAgICBwYWRkaW5nOiAxNnB4IDA7XG4gICAgICB9XG4gICAgICAuc2V0dGluZ3Mtc2VjdGlvbiArIC5zZXR0aW5ncy1zZWN0aW9uIHtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXZhbC1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4wOCkpO1xuICAgICAgfVxuICAgICAgaDIge1xuICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIG1hcmdpbjogMCAwIDRweDtcbiAgICAgIH1cbiAgICAgIC5jYXJkcy1ncmlkIHtcbiAgICAgICAgbWFyZ2luOiAwIC00cHggMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgIH1cbiAgICAgIC5jYXJkcy1ncmlkIGlvbi1jb2wge1xuICAgICAgICBwYWRkaW5nOiA0cHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICB9XG4gICAgICAuY2FyZHMtZ3JpZCBpb24tY29sIHZhbC1hY3Rpb24tY2FyZCB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICB9XG5cbiAgICAgIC8qIC0tLSBTZXNzaW9ucyBzZWN0aW9uIC0tLSAqL1xuICAgICAgLnNlY3Rpb24tYm9keSB7XG4gICAgICAgIG1hcmdpbi10b3A6IDE2cHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgIH1cbiAgICAgIC5yb3ctYWN0aW9ucyB7XG4gICAgICAgIG1hcmdpbi10b3A6IDEycHg7XG4gICAgICB9XG4gICAgICAucm93LWFjdGlvbnMtLWNlbnRlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBtYXJnaW4tdG9wOiA0cHg7XG4gICAgICB9XG4gICAgICAuc2Vzc2lvbnMge1xuICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgIH1cbiAgICAgIC5zZXNzaW9uIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAxMnB4O1xuICAgICAgICBwYWRkaW5nOiAxNHB4IDE2cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE0cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1saWdodCwgcmdiYSgwLCAwLCAwLCAwLjA0KSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgIGJhY2tncm91bmQgMC4xNXMgZWFzZSxcbiAgICAgICAgICBib3JkZXItY29sb3IgMC4xNXMgZWFzZTtcbiAgICAgIH1cbiAgICAgIC5zZXNzaW9uLS1jdXJyZW50IHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSg0NSwgMjExLCAxMTEsIDAuMSk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSg0NSwgMjExLCAxMTEsIDAuMyk7XG4gICAgICB9XG4gICAgICAuc2Vzc2lvbl9faWNvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMjZweDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrLCAjMWExYTFhKTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICB9XG4gICAgICAuc2Vzc2lvbi0tY3VycmVudCAuc2Vzc2lvbl9faWNvbiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3Itc3VjY2Vzcy1zaGFkZSwgIzI4YmE2Mik7XG4gICAgICB9XG4gICAgICAuc2Vzc2lvbl9fYm9keSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMnB4O1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICB9XG4gICAgICAuc2Vzc2lvbl9fZW5kIHtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICB9XG4gICAgICAuc2Vzc2lvbl9fYmFkZ2Uge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHBhZGRpbmc6IDRweCAxMHB4O1xuICAgICAgICBmb250LXNpemU6IDExcHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAyZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3Itc3VjY2Vzcy1zaGFkZSwgIzI4YmE2Mik7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoNDUsIDIxMSwgMTExLCAwLjE4KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2VjdXJpdHlWaWV3Q29tcG9uZW50IHtcbiAgcHJpdmF0ZSBuYXYgPSBpbmplY3QoTmF2aWdhdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIGRldmljZVNlcnZpY2UgPSBpbmplY3QoRGV2aWNlU2VydmljZSk7XG4gIHByaXZhdGUgbGVnYWxMaW5rID0gaW5qZWN0KExlZ2FsTGlua1NlcnZpY2UpO1xuICBwcml2YXRlIHRvYXN0ID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XG4gIHByaXZhdGUgZXJyb3JzID0gaW5qZWN0KFZhbHRlY2hFcnJvclNlcnZpY2UpO1xuICBwcml2YXRlIHJvdXRlciA9IGluamVjdChSb3V0ZXIsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgc2Vzc2lvblNlcnZpY2UgPSBpbmplY3QoU2Vzc2lvblNlcnZpY2UpO1xuICBwcml2YXRlIG1vZGFsU2VydmljZSA9IGluamVjdChNb2RhbFNlcnZpY2UpO1xuICBwcml2YXRlIGNvbmZpcm1EaWFsb2cgPSBpbmplY3QoQ29uZmlybWF0aW9uRGlhbG9nU2VydmljZSk7XG5cbiAgLyoqXG4gICAqIENvbmZpZyB2w61hIEBJbnB1dCAob2JqZWN0LWZpcnN0KS4gU2kgbm8gc2UgcGFzYSwgc2UgY2FlIGFsIHJvdXRlIGRhdGFcbiAgICogYHNlY3VyaXR5Q29uZmlnYCAocG9ibGFkbyBwb3IgYHByb3ZpZGVWYWx0ZWNoU2VjdXJpdHlSb3V0ZXNgKS5cbiAgICogYHJlc29sdmVkQ29uZmlnYCBtZXJnZWEgY29uIGxvcyBkZWZhdWx0cyDigJQgYEBJbnB1dGAgZ2FuYSBzb2JyZSByb3V0ZSBkYXRhLlxuICAgKi9cbiAgQElucHV0KCkgY29uZmlnPzogU2VjdXJpdHlWaWV3Q29uZmlnO1xuXG4gIHJlYWRvbmx5IHJlc29sdmVkQ29uZmlnID0gY29tcHV0ZWQ8XG4gICAgUmVxdWlyZWQ8T21pdDxTZWN1cml0eVZpZXdDb25maWcsICdvbk1mYUNvbXBsZXRlZCc+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==
817
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3NlY3VyaXR5LXZpZXcvc2VjdXJpdHktdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUV4RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUU5RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUVyRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnSVQsK21EQWpKQyxZQUFZLCtCQUNaLE9BQU8sd0VBQ1AsTUFBTSxvREFDTixNQUFNLGtUQUNOLE9BQU8sMkpBQ1AsZ0JBQWdCLDJFQUNoQixjQUFjLHlFQUNkLGFBQWEsd0VBQ2IsZUFBZSwwR0FDZixtQkFBbUIscUdBQ25CLHFCQUFxQixpRkFDckIsa0JBQWtCLDhFQUNsQix1QkFBdUIsbUZBQ3ZCLHlCQUF5QiwwSEFDekIsNEJBQTRCLDZIQUM1QixpQkFBaUI7OzRGQXNQUixxQkFBcUI7a0JBelFqQyxTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixPQUFPO3dCQUNQLE1BQU07d0JBQ04sTUFBTTt3QkFDTixPQUFPO3dCQUNQLGdCQUFnQjt3QkFDaEIsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixxQkFBcUI7d0JBQ3JCLGtCQUFrQjt3QkFDbEIsdUJBQXVCO3dCQUN2Qix5QkFBeUI7d0JBQ3pCLDRCQUE0Qjt3QkFDNUIsaUJBQWlCO3FCQUNsQixZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWdJVDt3REFzSVEsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBJbnB1dCwgc2lnbmFsLCB1bnRyYWNrZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSW9uQ29sLCBJb25HcmlkLCBJb25JY29uLCBJb25Sb3cgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgbGFwdG9wT3V0bGluZSwgcGhvbmVQb3J0cmFpdE91dGxpbmUgfSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBBY3Rpb25DYXJkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2FjdGlvbi1jYXJkL2FjdGlvbi1jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBY3Rpb25DYXJkTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvYWN0aW9uLWNhcmQvdHlwZXMnO1xuaW1wb3J0IHsgQWN0aW9uSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2FjdGlvbi1oZWFkZXIvYWN0aW9uLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWN0aW9uSGVhZGVyTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvYWN0aW9uLWhlYWRlci90eXBlcyc7XG5pbXBvcnQgeyBQYWdlTGlua3NDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvcGFnZS1saW5rcy9wYWdlLWxpbmtzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQYWdlTGlua3NNZXRhZGF0YSB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9wYWdlLWxpbmtzL3R5cGVzJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IERpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9kaXNwbGF5L2Rpc3BsYXkuY29tcG9uZW50JztcbmltcG9ydCB7IFRleHRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90ZXh0L3RleHQuY29tcG9uZW50JztcbmltcG9ydCB7IFRpdGxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGl0bGUvdGl0bGUuY29tcG9uZW50JztcbmltcG9ydCB7IFNrZWxldG9uTGF5b3V0Q29tcG9uZW50IH0gZnJvbSAnLi4vc2tlbGV0b24tbGF5b3V0L3NrZWxldG9uLWxheW91dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2hhbmdlRW1haWxNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL2NoYW5nZS1lbWFpbC1tb2RhbC9jaGFuZ2UtZW1haWwtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IENoYW5nZVBhc3N3b3JkTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9jaGFuZ2UtcGFzc3dvcmQtbW9kYWwvY2hhbmdlLXBhc3N3b3JkLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNZmFNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL21mYS1tb2RhbC9tZmEtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IExvZ2luQXR0ZW1wdE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vbG9naW4tYXR0ZW1wdC1tb2RhbC9sb2dpbi1hdHRlbXB0LW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZXNzaW9uTGlzdE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vc2Vzc2lvbi1saXN0LW1vZGFsL3Nlc3Npb24tbGlzdC1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uTWV0YWRhdGEsIENvbXBvbmVudFN0YXRlcyB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuaW1wb3J0IHsgRGV2aWNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGgvZGV2aWNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hdXRoL3Nlc3Npb24uc2VydmljZSc7XG5pbXBvcnQgeyBEZXZpY2VJbmZvLCBTZXNzaW9uSW5mbywgVmFsaWRhdGVBY3Rpb25SZXNwb25zZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGgvdHlwZXMnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IExlZ2FsTGlua1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sZWdhbC1saW5rL2xlZ2FsLWxpbmsuc2VydmljZSc7XG5pbXBvcnQgeyBNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tb2RhbC9tb2RhbC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpcm1hdGlvbkRpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jb25maXJtYXRpb24tZGlhbG9nL2NvbmZpcm1hdGlvbi1kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRpb24vbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IGNvbm5lY3RQYWdlUmVmcmVzaCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3BhZ2UtcmVmcmVzaC9wYWdlLXJlZnJlc2guc2VydmljZSc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IFZhbHRlY2hFcnJvclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9lcnJvcnMvdmFsdGVjaC1lcnJvci5zZXJ2aWNlJztcblxuaW1wb3J0IHsgU2VjdXJpdHlWaWV3Q29uZmlnIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBTRUNVUklUWV9WSUVXX0kxOE4gfSBmcm9tICcuL3NlY3VyaXR5LXZpZXcuaTE4bic7XG5cbmFkZEljb25zKHsgbGFwdG9wT3V0bGluZSwgcGhvbmVQb3J0cmFpdE91dGxpbmUgfSk7XG5cbmNvbnN0IERFRkFVTFRfTkFNRVNQQUNFID0gJ1NldHRpbmdzLlNlY3VyaXR5JztcblxuLyoqXG4gKiBgdmFsLXNlY3VyaXR5LXZpZXdgIOKAlCB2aXN0YSBTZWd1cmlkYWQgZnVsbC1mZWF0dXJlIGF1dG9jb250ZW5pZGEgKG9yZ2FuaXNtKS5cbiAqXG4gKiBQcm9tb3ZpZGEgZGVzZGUgYHNob3djYXNlYCBiYWpvIGVsIHByb2Nlc28gZGUgQURSLTAyMS4gUmXDum5lIGVuIHVuYSBzb2xhIHZpc3RhOlxuICogIC0gKipTZXNpb25lcyBhY3RpdmFzKiog4oCUIMO6bmljYSB2aXN0YSB1c2VyLWZhY2luZyBkZSBcImTDs25kZSB0ZW5nbyBzZXNpw7NuXCIuXG4gKiAgICBMaXN0YSBpbmxpbmUgKGxpbWl0IDMpICsgbW9kYWwgXCJWZXIgdG9kYXNcIiAoYHZhbC1zZXNzaW9uLWxpc3QtbW9kYWxgKSArXG4gKiAgICByZXZva2UgaW5kaXZpZHVhbCAvIHJldm9rZS1hbGwgKGNvbiBjb25maXJtYWNpw7NuKS5cbiAqICAtICoqQWN0aW9uLWNhcmRzKiog4oCUIGNhbWJpYXIgY29udHJhc2XDsWEsIGNhbWJpYXIgZW1haWwgeSBNRkEgKGNhZGEgdW5hIGFicmVcbiAqICAgIGVsIG1vZGFsIGNvcnJlc3BvbmRpZW50ZSBkZSBsYSBsaWIpLlxuICogIC0gKipQb2zDrXRpY2FzIGxlZ2FsZXMqKiDigJQgbGlua3MgcmVzdWVsdG9zIHbDrWEgYExlZ2FsTGlua1NlcnZpY2VgIChhcHBzXG4gKiAgICBzYXTDqWxpdGUgYXB1bnRhbiBhbCBtYWluIHNpdGUpLlxuICpcbiAqIERlZXAtbGlua3MgZGVsIGVtYWlsIChnYXRlYWRvcyBwb3IgYGNvbmZpZy5oYW5kbGVEZWVwTGlua3NgLCBkZWZhdWx0IGB0cnVlYCk6XG4gKiAgLSBgP3Rva2VuPS4uLiZhY3Rpb249Li4uYCDihpIgbW9kYWwgYHZhbC1sb2dpbi1hdHRlbXB0LW1vZGFsYCAoYXV0b3JpemFyL2Jsb3F1ZWFyXG4gKiAgICBlbCBudWV2byBhY2Nlc28pLlxuICogIC0gYD9tZmFDb2RlPS4uLmAg4oaSIGFicmUgZWwgbW9kYWwgTUZBIGNvbiBlbCBjw7NkaWdvIHByZS1jYXJnYWRvLlxuICpcbiAqIE5PIHJlbmRlcml6YSBpb24tY29udGVudCDigJQgdml2ZSBkZW50cm8gZGUgdmFsLXBhZ2Utd3JhcHBlci5cbiAqXG4gKiBBdXRvLXJlZ2lzdHJhIHN1cyBkZWZhdWx0cyBpMThuIChlcy9lbikgZW4gZWwgY29uc3RydWN0b3Igc2kgZWwgY29uc3VtZXIgbm9cbiAqIHByb3ZlecOzIGVsIG5hbWVzcGFjZSBjb25maWd1cmFkbyAoZGVmYXVsdCBgU2V0dGluZ3MuU2VjdXJpdHlgKS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXNlY3VyaXR5LXZpZXcnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIElvbkdyaWQsXG4gICAgSW9uUm93LFxuICAgIElvbkNvbCxcbiAgICBJb25JY29uLFxuICAgIERpc3BsYXlDb21wb25lbnQsXG4gICAgVGl0bGVDb21wb25lbnQsXG4gICAgVGV4dENvbXBvbmVudCxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgQWN0aW9uQ2FyZENvbXBvbmVudCxcbiAgICBBY3Rpb25IZWFkZXJDb21wb25lbnQsXG4gICAgUGFnZUxpbmtzQ29tcG9uZW50LFxuICAgIFNrZWxldG9uTGF5b3V0Q29tcG9uZW50LFxuICAgIENoYW5nZUVtYWlsTW9kYWxDb21wb25lbnQsXG4gICAgQ2hhbmdlUGFzc3dvcmRNb2RhbENvbXBvbmVudCxcbiAgICBNZmFNb2RhbENvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicGFnZVwiPlxuICAgICAgPGhlYWRlciBjbGFzcz1cInBhZ2UtaGVhZGVyXCI+XG4gICAgICAgIDx2YWwtZGlzcGxheSBbcHJvcHNdPVwieyBzaXplOiAnc21hbGwnLCBjb2xvcjogJ2RhcmsnLCBjb250ZW50OiBwYWdlVGl0bGUoKSB9XCIgLz5cbiAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICBzaXplOiAnbGFyZ2UnLFxuICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgY29udGVudDogcGFnZURlc2NyaXB0aW9uKCksXG4gICAgICAgICAgfVwiXG4gICAgICAgIC8+XG4gICAgICA8L2hlYWRlcj5cblxuICAgICAgQGlmIChyZXNvbHZlZENvbmZpZygpLnNob3dTZXNzaW9ucykge1xuICAgICAgICA8IS0tIDEuIEFjdGl2ZSBzZXNzaW9ucyAtIHVuaWNhIHZpc3RhIHVzZXItZmFjaW5nIGRlIGRvbmRlIHRlbmdvIHNlc2lvbi4gLS0+XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwic2V0dGluZ3Mtc2VjdGlvblwiPlxuICAgICAgICAgIEBpZiAoaGFzT3RoZXJTZXNzaW9ucygpKSB7XG4gICAgICAgICAgICA8dmFsLWFjdGlvbi1oZWFkZXIgW3Byb3BzXT1cInNlc3Npb25zSGVhZGVyKClcIiAvPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgYm9sZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBzZXNzaW9uc1RpdGxlV2l0aENvdW50KCksXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1ib2R5XCI+XG4gICAgICAgICAgICBAaWYgKHNlc3Npb25zTG9hZGluZygpKSB7XG4gICAgICAgICAgICAgIDx2YWwtc2tlbGV0b24tbGF5b3V0IFtwcm9wc109XCJ7IHByZXNldDogJ2xpc3QnLCByb3dzOiAzIH1cIiAvPlxuICAgICAgICAgICAgfSBAZWxzZSBpZiAoc2Vzc2lvbnMoKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHNlc3Npb25zRW1wdHlMYWJlbCgpLFxuICAgICAgICAgICAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cInNlc3Npb25zXCI+XG4gICAgICAgICAgICAgICAgQGZvciAocyBvZiB2aXNpYmxlU2Vzc2lvbnMoKTsgdHJhY2sgcy5zZXNzaW9uSWQpIHtcbiAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInNlc3Npb25cIiBbY2xhc3Muc2Vzc2lvbi0tY3VycmVudF09XCJzLmlzQ3VycmVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gY2xhc3M9XCJzZXNzaW9uX19pY29uXCIgW25hbWVdPVwiZGV2aWNlSWNvbihzKVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZXNzaW9uX19ib2R5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBzLmRldmljZUluZm8gfHwgcy5kZXZpY2VJZCB8fCAn4oCUJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJvbGQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogZm9ybWF0U2Vzc2lvbk1ldGEocyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlc3Npb25fX2VuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAocy5pc0N1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2Vzc2lvbl9fYmFkZ2VcIj57eyBzZXNzaW9uc1RoaXMoKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDx2YWwtYnV0dG9uIFtwcm9wc109XCJyZXZva2VPbmVCdXR0b25Qcm9wcygpXCIgKGNsaWNrKT1cIm9uUmV2b2tlT25lKHMuc2Vzc2lvbklkKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICBAaWYgKGhhc01vcmVTZXNzaW9ucygpKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1hY3Rpb25zIHJvdy1hY3Rpb25zLS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgIDx2YWwtYnV0dG9uIFtwcm9wc109XCJ2aWV3QWxsQnV0dG9uUHJvcHMoKVwiIChjbGljayk9XCJvcGVuU2Vzc2lvbnNNb2RhbCgpXCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG5cbiAgICAgIEBpZiAoaGFzQWN0aW9uQ2FyZHMoKSkge1xuICAgICAgICA8IS0tIDIuIFF1aWNrIGFjdGlvbnM6IGNoYW5nZSBwYXNzd29yZCwgY2hhbmdlIGVtYWlsLCBNRkEgLS0+XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwic2V0dGluZ3Mtc2VjdGlvblwiPlxuICAgICAgICAgIDxoMj57eyBxdWlja0FjdGlvbnNUaXRsZSgpIH19PC9oMj5cbiAgICAgICAgICA8aW9uLWdyaWQgY2xhc3M9XCJjYXJkcy1ncmlkXCI+XG4gICAgICAgICAgICA8aW9uLXJvdz5cbiAgICAgICAgICAgICAgQGZvciAoYWN0aW9uIG9mIGFjdGlvbkNhcmRzKCk7IHRyYWNrIGFjdGlvbi50b2tlbikge1xuICAgICAgICAgICAgICAgIDxpb24tY29sIHNpemU9XCIxMlwiIHNpemUtc209XCI2XCI+XG4gICAgICAgICAgICAgICAgICA8dmFsLWFjdGlvbi1jYXJkIFtwcm9wc109XCJhY3Rpb25cIiAob25DbGljayk9XCJvbkFjdGlvbkNsaWNrKGFjdGlvbilcIiAvPlxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9pb24tcm93PlxuICAgICAgICAgIDwvaW9uLWdyaWQ+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH1cblxuICAgICAgQGlmIChyZXNvbHZlZENvbmZpZygpLnNob3dQb2xpY2llcykge1xuICAgICAgICA8IS0tIDMuIFJlbGF0ZWQgcG9saWNpZXMgLS0+XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwic2V0dGluZ3Mtc2VjdGlvblwiPlxuICAgICAgICAgIDxoMj57eyBwb2xpY2llc1RpdGxlKCkgfX08L2gyPlxuICAgICAgICAgIDx2YWwtcGFnZS1saW5rcyBbcHJvcHNdPVwicG9saWN5TGlua3NQcm9wcygpXCIgLz5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfVxuXG4gICAgICA8dmFsLWNoYW5nZS1lbWFpbC1tb2RhbFxuICAgICAgICBbaXNPcGVuXT1cImlzQ2hhbmdlRW1haWxNb2RhbE9wZW4oKVwiXG4gICAgICAgIChjaGFuZ2VkKT1cImlzQ2hhbmdlRW1haWxNb2RhbE9wZW4uc2V0KGZhbHNlKVwiXG4gICAgICAgIChkaXNtaXNzZWQpPVwiaXNDaGFuZ2VFbWFpbE1vZGFsT3Blbi5zZXQoZmFsc2UpXCJcbiAgICAgIC8+XG5cbiAgICAgIDx2YWwtY2hhbmdlLXBhc3N3b3JkLW1vZGFsXG4gICAgICAgIFtpc09wZW5dPVwiaXNDaGFuZ2VQYXNzd29yZE1vZGFsT3BlbigpXCJcbiAgICAgICAgKGNoYW5nZWQpPVwiaXNDaGFuZ2VQYXNzd29yZE1vZGFsT3Blbi5zZXQoZmFsc2UpXCJcbiAgICAgICAgKGRpc21pc3NlZCk9XCJpc0NoYW5nZVBhc3N3b3JkTW9kYWxPcGVuLnNldChmYWxzZSlcIlxuICAgICAgLz5cblxuICAgICAgPHZhbC1tZmEtbW9kYWxcbiAgICAgICAgW2lzT3Blbl09XCJpc01mYU1vZGFsT3BlbigpXCJcbiAgICAgICAgW3ByZWZpbGxDb2RlXT1cIm1mYVByZWZpbGxDb2RlKClcIlxuICAgICAgICAoZGlzbWlzc2VkKT1cIm9uTWZhTW9kYWxEaXNtaXNzZWQoKVwiXG4gICAgICAgIChlbmFibGVkVmlhRGVlcGxpbmspPVwib25NZmFFbmFibGVkVmlhRGVlcGxpbmsoKVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAucGFnZSB7XG4gICAgICAgIHBhZGRpbmc6IDE2cHggMDtcbiAgICAgICAgbWF4LXdpZHRoOiA3MjBweDtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICB9XG5cbiAgICAgIC8qIFNlZ3VuZG8gYW5jaG8sIGRlc2t0b3AgY29uIGVsIHJhaWwgcmV0cmHDrWRvLiBWZXIgc2V0dGluZ3MtaHViIHBhcmEgbGFcbiAgICAgICAgIGV4cGxpY2FjacOzbiBjb21wbGV0YSBkZWwgbWVjYW5pc21vLiAqL1xuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS1tZW51PSdjb2xsYXBzZWQnXSkgLnBhZ2Uge1xuICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gICAgICAgICAgbWF4LXdpZHRoOiA5MDBweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLnBhZ2UtaGVhZGVyIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICAgIH1cbiAgICAgIC5zZXR0aW5ncy1zZWN0aW9uIHtcbiAgICAgICAgcGFkZGluZzogMTZweCAwO1xuICAgICAgfVxuICAgICAgLnNldHRpbmdzLXNlY3Rpb24gKyAuc2V0dGluZ3Mtc2VjdGlvbiB7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS12YWwtYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMDgpKTtcbiAgICAgIH1cbiAgICAgIGgyIHtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBtYXJnaW46IDAgMCA0cHg7XG4gICAgICB9XG4gICAgICAuY2FyZHMtZ3JpZCB7XG4gICAgICAgIG1hcmdpbjogMCAtNHB4IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICB9XG4gICAgICAuY2FyZHMtZ3JpZCBpb24tY29sIHtcbiAgICAgICAgcGFkZGluZzogNHB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgfVxuICAgICAgLmNhcmRzLWdyaWQgaW9uLWNvbCB2YWwtYWN0aW9uLWNhcmQge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgfVxuXG4gICAgICAvKiAtLS0gU2Vzc2lvbnMgc2VjdGlvbiAtLS0gKi9cbiAgICAgIC5zZWN0aW9uLWJvZHkge1xuICAgICAgICBtYXJnaW4tdG9wOiAxNnB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICB9XG4gICAgICAucm93LWFjdGlvbnMge1xuICAgICAgICBtYXJnaW4tdG9wOiAxMnB4O1xuICAgICAgfVxuICAgICAgLnJvdy1hY3Rpb25zLS1jZW50ZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgbWFyZ2luLXRvcDogNHB4O1xuICAgICAgfVxuICAgICAgLnNlc3Npb25zIHtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICB9XG4gICAgICAuc2Vzc2lvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgICAgcGFkZGluZzogMTRweCAxNnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxNHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQsIHJnYmEoMCwgMCwgMCwgMC4wNCkpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgdHJhbnNpdGlvbjpcbiAgICAgICAgICBiYWNrZ3JvdW5kIDAuMTVzIGVhc2UsXG4gICAgICAgICAgYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2U7XG4gICAgICB9XG4gICAgICAuc2Vzc2lvbi0tY3VycmVudCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoNDUsIDIxMSwgMTExLCAwLjEpO1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEoNDUsIDIxMSwgMTExLCAwLjMpO1xuICAgICAgfVxuICAgICAgLnNlc3Npb25fX2ljb24ge1xuICAgICAgICBmb250LXNpemU6IDI2cHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyaywgIzFhMWExYSk7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgfVxuICAgICAgLnNlc3Npb24tLWN1cnJlbnQgLnNlc3Npb25fX2ljb24ge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3Mtc2hhZGUsICMyOGJhNjIpO1xuICAgICAgfVxuICAgICAgLnNlc3Npb25fX2JvZHkge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDJweDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgfVxuICAgICAgLnNlc3Npb25fX2VuZCB7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgfVxuICAgICAgLnNlc3Npb25fX2JhZGdlIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBwYWRkaW5nOiA0cHggMTBweDtcbiAgICAgICAgZm9udC1zaXplOiAxMXB4O1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wMmVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3Mtc2hhZGUsICMyOGJhNjIpO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDQ1LCAyMTEsIDExMSwgMC4xOCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNlY3VyaXR5Vmlld0NvbXBvbmVudCB7XG4gIHByaXZhdGUgbmF2ID0gaW5qZWN0KE5hdmlnYXRpb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBkZXZpY2VTZXJ2aWNlID0gaW5qZWN0KERldmljZVNlcnZpY2UpO1xuICBwcml2YXRlIGxlZ2FsTGluayA9IGluamVjdChMZWdhbExpbmtTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdCA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xuICBwcml2YXRlIGVycm9ycyA9IGluamVjdChWYWx0ZWNoRXJyb3JTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByb3V0ZXIgPSBpbmplY3QoUm91dGVyLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIHNlc3Npb25TZXJ2aWNlID0gaW5qZWN0KFNlc3Npb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBtb2RhbFNlcnZpY2UgPSBpbmplY3QoTW9kYWxTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBjb25maXJtRGlhbG9nID0gaW5qZWN0KENvbmZpcm1hdGlvbkRpYWxvZ1NlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBDb25maWcgdsOtYSBASW5wdXQgKG9iamVjdC1maXJzdCkuIFNpIG5vIHNlIHBhc2EsIHNlIGNhZSBhbCByb3V0ZSBkYXRhXG4gICAqIGBzZWN1cml0eUNvbmZpZ2AgKHBvYmxhZG8gcG9yIGBwcm92aWRlVmFsdGVjaFNlY3VyaXR5Um91dGVzYCkuXG4gICAqIGByZXNvbHZlZENvbmZpZ2AgbWVyZ2VhIGNvbiBsb3MgZGVmYXVsdHMg4oCUIGBASW5wdXRgIGdhbmEgc29icmUgcm91dGUgZGF0YS5cbiAgICovXG4gIEBJbnB1dCgpIGNvbmZpZz86IFNlY3VyaXR5Vmlld0NvbmZpZztcblxuICByZWFkb25seSByZXNvbHZlZENvbmZpZyA9IGNvbXB1dGVkPFxuICAgIFJlcXVpcmVkPE9taXQ8U2VjdXJpdHlWaWV3Q29uZmlnLCAnb25NZmFDb21wbGV0ZWQnPj4gJiBQaWNrPFNlY3VyaXR5Vmlld0NvbmZpZywgJ29uTWZhQ29tcGxldGVkJz5cbiAgPigoKSA9PiB7XG4gICAgY29uc3QgZnJvbVJvdXRlID0gKHRoaXMucm91dGU/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=