@hmcts/ccd-case-ui-toolkit 7.1.64 → 7.1.67-callback-success-message
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.mjs +2 -1
- package/esm2022/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.mjs +15 -4
- package/esm2022/lib/shared/components/palette/query-management/components/query-confirmation/query-confirmation.component.mjs +7 -4
- package/esm2022/lib/shared/components/palette/query-management/read-query-management-field.component.mjs +3 -3
- package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs +23 -8
- package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
- package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts.map +1 -1
- package/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.d.ts +2 -1
- package/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.d.ts.map +1 -1
- package/lib/shared/components/palette/query-management/components/query-confirmation/query-confirmation.component.d.ts +2 -1
- package/lib/shared/components/palette/query-management/components/query-confirmation/query-confirmation.component.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -419,6 +419,7 @@ export class CaseFullAccessViewComponent {
|
|
|
419
419
|
// we may need to take care of different triggers in the future
|
|
420
420
|
if (trigger.id === CaseViewEventIds.QueryManagementRaiseQuery) {
|
|
421
421
|
await this.router.navigate([`/query-management/query/${this.caseDetails.case_id}`]);
|
|
422
|
+
this.loadingService.unregister(spinner);
|
|
422
423
|
}
|
|
423
424
|
else if (trigger.id === CaseViewEventIds.DELETE) {
|
|
424
425
|
const dialogRef = this.dialog.open(DeleteOrCancelDialogComponent, this.dialogConfig);
|
|
@@ -721,4 +722,4 @@ export class CaseFullAccessViewComponent {
|
|
|
721
722
|
args: ['tabGroup', { static: false }]
|
|
722
723
|
}] }); })();
|
|
723
724
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaseFullAccessViewComponent, { className: "CaseFullAccessViewComponent", filePath: "lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.ts", lineNumber: 46 }); })();
|
|
724
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLXZpZXdlci9jYXNlLWZ1bGwtYWNjZXNzLXZpZXcvY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLXZpZXdlci9jYXNlLWZ1bGwtYWNjZXNzLXZpZXcvY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQzVCLFNBQVMsRUFDekIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxJQUFJLFNBQVMsRUFBNEMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6SCxPQUFPLEVBQTBCLGlCQUFpQixJQUFJLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pHLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFVLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMs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dEIsa0NBQW1GO1lBRWpGLEFBREYsOEJBQXNCLGFBQ1M7WUFDM0IscUNBQStEO1lBQy9ELDRFQUFxRjtZQUd2RixpQkFBTTtZQUNOLDRFQUFzRDtZQU94RCxpQkFBTTtZQUNOLDRFQUF3RTtZQU90RSxBQURGLCtCQUFzQixlQUNLO1lBQ3ZCLGlHQUF1QztZQStDM0MsQUFERSxpQkFBTSxFQUNGOztZQXZHQSxrSEFBaUY7WUFjakYsY0FBNEI7WUFBNUIscURBQTRCO1lBYWhDLGNBQXdDO1lBRXhDLEFBREEsQUFEQSwwREFBd0Msb0RBQ08sb0RBQ0E7WUFHbkMsY0FBOEI7WUFBQyxBQUEvQixnREFBOEIsMkJBQXVCO1lBRzlDLGVBQTJCO1lBQTNCLDZDQUEyQjtZQUNULGNBQWdEO1lBQWhELDZFQUFnRDtZQUkvRSxjQUFzQjtZQUF0QiwyQ0FBc0I7WUFRUCxjQUErQztZQUEvQyx3RUFBK0M7WUFRbkQsZUFBc0I7WUFBdEIsMkNBQXNCOzs7aUZEWjVCLDJCQUEyQjtjQUx2QyxTQUFTOzJCQUNFLDJCQUEyQjs0akJBWXJCLFFBQVE7a0JBQXZCLEtBQUs7WUFDVSxnQkFBZ0I7a0JBQS9CLEtBQUs7WUFDVSxXQUFXO2tCQUExQixLQUFLO1lBQ1UsYUFBYTtrQkFBNUIsS0FBSztZQUNVLFlBQVk7a0JBQTNCLEtBQUs7WUEyQjJDLFFBQVE7a0JBQXhELFNBQVM7bUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTs7a0ZBdkM3QiwyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgTmdab25lLCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LFxuICBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0TGVnYWN5RGlhbG9nIGFzIE1hdERpYWxvZywgTWF0TGVnYWN5RGlhbG9nQ29uZmlnIGFzIE1hdERpYWxvZ0NvbmZpZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1kaWFsb2cnO1xuaW1wb3J0IHsgTWF0TGVnYWN5VGFiIGFzIE1hdFRhYiwgTWF0TGVnYWN5VGFiR3JvdXAgYXMgTWF0VGFiR3JvdXAgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktdGFicyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvbkVuZCwgUGFyYW1zLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgcGxhaW5Ub0NsYXNzIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgUnB4VHJhbnNsYXRlUGlwZSB9IGZyb20gJ3JweC14dWktdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBOb3RpZmljYXRpb25CYW5uZXJDb25maWcsXG4gIE5vdGlmaWNhdGlvbkJhbm5lckhlYWRlckNsYXNzLFxuICBOb3RpZmljYXRpb25CYW5uZXJUeXBlXG59IGZyb20gJy4uLy4uLy4uLy4uL2NvbXBvbmVudHMvYmFubmVycy9ub3RpZmljYXRpb24tYmFubmVyJztcbmltcG9ydCB7IFNob3dDb25kaXRpb24gfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IEFjdGl2aXR5LCBDYXNlRmllbGQsIENhc2VUYWIsIENhc2VWaWV3LCBDYXNlVmlld1RyaWdnZXIsIERSQUZUX1FVRVJZX1BBUkFNLCBEaXNwbGF5TW9kZSwgRHJhZnQgfSBmcm9tICcuLi8uLi8uLi9kb21haW4nO1xuaW1wb3J0IHsgQ2FzZVZpZXdFdmVudElkcyB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9jYXNlLXZpZXcvY2FzZS12aWV3LWV2ZW50LWlkcy5lbnVtJztcbmltcG9ydCB7XG4gIEFjdGl2aXR5UG9sbGluZ1NlcnZpY2UsXG4gIEFsZXJ0U2VydmljZSxcbiAgRHJhZnRTZXJ2aWNlLFxuICBFcnJvck5vdGlmaWVyU2VydmljZSxcbiAgRmllbGRzVXRpbHMsXG4gIExvYWRpbmdTZXJ2aWNlLFxuICBOYXZpZ2F0aW9uTm90aWZpZXJTZXJ2aWNlLFxuICBOYXZpZ2F0aW9uT3JpZ2luLFxuICBPcmRlclNlcnZpY2UsXG4gIFNlc3Npb25TdG9yYWdlU2VydmljZVxufSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBDb252ZXJ0SHJlZlRvUm91dGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2Nhc2UtZWRpdG9yL3NlcnZpY2VzL2NvbnZlcnQtaHJlZi10by1yb3V0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBEZWxldGVPckNhbmNlbERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2RpYWxvZ3MnO1xuaW1wb3J0IHsgQ2FsbGJhY2tFcnJvcnNDb250ZXh0IH0gZnJvbSAnLi4vLi4vZXJyb3InO1xuaW1wb3J0IHsgaW5pdERpYWxvZyB9IGZyb20gJy4uLy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgTGlua2VkQ2FzZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcGFsZXR0ZS9saW5rZWQtY2FzZXMvc2VydmljZXMnO1xuaW1wb3J0IHsgQ2FzZUZsYWdTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jYXNlLWVkaXRvci9zZXJ2aWNlcy9jYXNlLWZsYWctc3RhdGUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1jYXNlLWZ1bGwtYWNjZXNzLXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgT1JJR0lOX1FVRVJZX1BBUkFNID0gJ29yaWdpbic7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVFJJR0dFUl9URVhUX1NUQVJUID0gJ0dvJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBUUklHR0VSX1RFWFRfQ09OVElOVUUgPSAnSWdub3JlIFdhcm5pbmcgYW5kIEdvJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBVTklDT0RFX1NQQUNFID0gJyUyMCc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRU1QVFlfU1BBQ0UgPSAnICc7XG4gIHByaXZhdGUgcmVhZG9ubHkgSEVBUklOR1NfVEFCX0xBQkVMID0gJ0hlYXJpbmdzJztcblxuICBASW5wdXQoKSBwdWJsaWMgaGFzUHJpbnQgPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgaGFzRXZlbnRTZWxlY3RvciA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyBjYXNlRGV0YWlsczogQ2FzZVZpZXc7XG4gIEBJbnB1dCgpIHB1YmxpYyBwcmVwZW5kZWRUYWJzOiBDYXNlVGFiW10gPSBbXTtcbiAgQElucHV0KCkgcHVibGljIGFwcGVuZGVkVGFiczogQ2FzZVRhYltdID0gW107XG5cbiAgcHVibGljIEJBTk5FUiA9IERpc3BsYXlNb2RlLkJBTk5FUjtcbiAgcHVibGljIHNvcnRlZFRhYnM6IENhc2VUYWJbXTtcbiAgcHVibGljIGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdO1xuICBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gIHB1YmxpYyBlcnJvcjogYW55O1xuICBwdWJsaWMgdHJpZ2dlclRleHRTdGFydCA9IENhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudC5UUklHR0VSX1RFWFRfU1RBUlQ7XG4gIHB1YmxpYyB0cmlnZ2VyVGV4dElnbm9yZVdhcm5pbmdzID0gQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50LlRSSUdHRVJfVEVYVF9DT05USU5VRTtcbiAgcHVibGljIHRyaWdnZXJUZXh0OiBzdHJpbmcgPSBDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuVFJJR0dFUl9URVhUX1NUQVJUO1xuICBwdWJsaWMgaWdub3JlV2FybmluZyA9IGZhbHNlO1xuICBwdWJsaWMgYWN0aXZpdHlTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGNhc2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGVycm9yU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBkaWFsb2dDb25maWc6IE1hdERpYWxvZ0NvbmZpZztcbiAgcHVibGljIG1lc3NhZ2U6IHN0cmluZztcbiAgcHVibGljIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgbm90aWZpY2F0aW9uQmFubmVyQ29uZmlnOiBOb3RpZmljYXRpb25CYW5uZXJDb25maWc7XG4gIHB1YmxpYyBzZWxlY3RlZFRhYkluZGV4ID0gMDtcbiAgcHVibGljIGFjdGl2ZUNhc2VGbGFncyA9IGZhbHNlO1xuICBwdWJsaWMgY2FzZUZsYWdzRXh0ZXJuYWxVc2VyID0gZmFsc2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2FzZUZsYWdzUmVhZEV4dGVybmFsTW9kZSA9ICcjQVJHVU1FTlQoUkVBRCxFWFRFUk5BTCknO1xuICBwcml2YXRlIHN1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHB1YmxpYyBldmVudElkOiBzdHJpbmc7XG4gIHB1YmxpYyBpc0V2ZW50QnV0dG9uQ2xpY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBjYWxsYmFja0Vycm9yc1N1YmplY3Q6ICAgT2JzZXJ2YWJsZTxhbnk+O1xuICBAVmlld0NoaWxkKCd0YWJHcm91cCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwdWJsaWMgdGFiR3JvdXA6IE1hdFRhYkdyb3VwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hdmlnYXRpb25Ob3RpZmllclNlcnZpY2U6IE5hdmlnYXRpb25Ob3RpZmllclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcmRlclNlcnZpY2U6IE9yZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjdGl2aXR5UG9sbGluZ1NlcnZpY2U6IEFjdGl2aXR5UG9sbGluZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZHJhZnRTZXJ2aWNlOiBEcmFmdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBlcnJvck5vdGlmaWVyU2VydmljZTogRXJyb3JOb3RpZmllclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb252ZXJ0SHJlZlRvUm91dGVyU2VydmljZTogQ29udmVydEhyZWZUb1JvdXRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2NhdGlvbjogTG9jYXRpb24sXG4gICAgcHJpdmF0ZSByZWFkb25seSBjcmY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlOiBTZXNzaW9uU3RvcmFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBycHhUcmFuc2xhdGlvblBpcGU6IFJweFRyYW5zbGF0ZVBpcGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2FkaW5nU2VydmljZTogTG9hZGluZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBsaW5rZWRDYXNlc1NlcnZpY2U6IExpbmtlZENhc2VzU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhc2VGbGFnU3RhdGVTZXJ2aWNlOiBDYXNlRmxhZ1N0YXRlU2VydmljZVxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNhbGxiYWNrRXJyb3JzU3ViamVjdCA9IHRoaXMuZXJyb3JOb3RpZmllclNlcnZpY2UuZXJyb3JTb3VyY2UucGlwZShmaWx0ZXIoKHgpID0+IHtcbiAgICAgIGlmICh4ICYmIHguc3RhdHVzICE9PSA0MDEgJiYgeC5zdGF0dXMgIT09IDQwMykge1xuICAgICAgICB0aGlzLmVycm9yID0geDtcbiAgICAgICAgdGhpcy5pc0V2ZW50QnV0dG9uQ2xpY2tlZCA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KSk7XG4gICAgXG4gICAgaW5pdERpYWxvZygpO1xuICAgIHRoaXMuaW5pdCgpO1xuXG4gICAgdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2U/LnJlbW92ZUl0ZW0oJ2V2ZW50VXJsJyk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuY29udmVydEhyZWZUb1JvdXRlclNlcnZpY2U/LmdldEhyZWZNYXJrZG93bkxpbmtDb250ZW50KCkuc3Vic2NyaWJlKChocmVmTWFya2Rvd25MaW5rQ29udGVudDogc3RyaW5nKSA9PiB7XG4gICAgICAvLyBkbyBub3QgY29udmVydCByb3V0ZXIgd2l0aCBpbml0aWFsIGRlZmF1bHQgdmFsdWU7IGNvbnZlcnQgdG8gcm91dGVyIG9ubHkgb24gdXBkYXRlZCBsaW5rIGNvbnRlbnRcbiAgICAgIGlmIChocmVmTWFya2Rvd25MaW5rQ29udGVudCAhPT0gJ0RlZmF1bHQnKSB7XG4gICAgICAgIHRoaXMuY29udmVydEhyZWZUb1JvdXRlclNlcnZpY2UuY2FsbEFuZ3VsYXJSb3V0ZXIoaHJlZk1hcmtkb3duTGlua0NvbnRlbnQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuYWN0aXZpdHlQb2xsaW5nU2VydmljZS5pc0VuYWJsZWQgJiYgIXRoaXMuYWN0aXZpdHlTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgdGhpcy5hY3Rpdml0eVN1YnNjcmlwdGlvbiA9IHRoaXMucG9zdFZpZXdBY3Rpdml0eSgpLnN1YnNjcmliZSgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5jaGVja1JvdXRlQW5kU2V0Q2FzZVZpZXdUYWIoKTtcblxuICAgIC8vIENoZWNrIGZvciBhY3RpdmUgQ2FzZSBGbGFnc1xuICAgIHRoaXMuYWN0aXZlQ2FzZUZsYWdzID0gdGhpcy5oYXNBY3RpdmVDYXNlRmxhZ3MoKTtcbiAgICB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5yZXNldExpbmtlZENhc2VEYXRhKCk7XG4gICAgdGhpcy5jYXNlRmxhZ1N0YXRlU2VydmljZS5yZXNldEluaXRpYWxDYXNlRmxhZ3MoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMgJiYgY2hhbmdlcy5wcmVwZW5kZWRUYWJzICYmICFjaGFuZ2VzLnByZXBlbmRlZFRhYnMuZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMuaW5pdCgpO1xuICAgICAgdGhpcy5jcmYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgdGhpcy5vcmdhbmlzZVRhYlBvc2l0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzUHJpbnRFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfdHlwZS5wcmludEVuYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWN0aXZpdHlQb2xsaW5nU2VydmljZS5pc0VuYWJsZWQpIHtcbiAgICAgIHRoaXMudW5zdWJzY3JpYmUodGhpcy5hY3Rpdml0eVN1YnNjcmlwdGlvbik7XG4gICAgfVxuICAgIGlmICghdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmNhc2UpIHtcbiAgICAgIHRoaXMudW5zdWJzY3JpYmUodGhpcy5jYXNlU3Vic2NyaXB0aW9uKTtcbiAgICB9XG4gICAgdGhpcy51bnN1YnNjcmliZSh0aGlzLmNhbGxiYWNrRXJyb3JzU3ViamVjdCk7XG4gICAgdGhpcy51bnN1YnNjcmliZSh0aGlzLmVycm9yU3Vic2NyaXB0aW9uKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlKHRoaXMuc3Vic2NyaXB0aW9uKTtcbiAgICB0aGlzLnN1YnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBwdWJsaWMgdW5zdWJzY3JpYmUoc3Vic2NyaXB0aW9uOiBhbnkpIHtcbiAgICBpZiAoc3Vic2NyaXB0aW9uKSB7XG4gICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNoZWNrUm91dGVBbmRTZXRDYXNlVmlld1RhYigpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnMucHVzaCh0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgIC5waXBlKGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogTmF2aWdhdGlvbkVuZCkgPT4ge1xuICAgICAgICBjb25zdCB1cmwgPSBldmVudCAmJiAoZXZlbnQgYXMgYW55KS51cmw7XG4gICAgICAgIGlmICh1cmwpIHtcbiAgICAgICAgICBjb25zdCB0YWJVcmwgPSB1cmwgPyB1cmwuc3BsaXQoJyMnKSA6IG51bGw7XG4gICAgICAgICAgY29uc3QgdGFiID0gdGFiVXJsICYmIHRhYlVybC5sZW5ndGggPiAxID8gdGFiVXJsW3RhYlVybC5sZW5ndGggLSAxXS5yZXBsYWNlQWxsKCclMjAnLCAnICcpIDogJyc7XG4gICAgICAgICAgY29uc3QgbWF0VGFiID0gdGhpcy50YWJHcm91cC5fdGFicy5maW5kKCh4KSA9PiB4LnRleHRMYWJlbC50b0xvd2VyQ2FzZSgpID09PSB0YWIudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgLy8gVXBkYXRlIHNlbGVjdGVkSW5kZXggb25seSBpZiBtYXRUYWIucG9zaXRpb24gaXMgYSBub24temVybyBudW1iZXIgKHBvc2l0aXZlIG9yIG5lZ2F0aXZlKTsgdGhpcyBtZWFucyB0aGVcbiAgICAgICAgICAvLyBtYXRUYWIgaXMgbm90IGFscmVhZHkgc2VsZWN0ZWQgKHBvc2l0aW9uIGlzIHJlbGF0aXZlOyBwb3NpdGl2ZSA9IHJpZ2h0LCBuZWdhdGl2ZSA9IGxlZnQpIG9yIGl0IHdvdWxkIGJlIDBcbiAgICAgICAgICBpZiAobWF0VGFiPy5wb3NpdGlvbikge1xuICAgICAgICAgICAgdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4ID0gbWF0VGFiLnBvc2l0aW9uO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSkpO1xuICB9XG5cbiAgcHVibGljIHBvc3RWaWV3QWN0aXZpdHkoKTogT2JzZXJ2YWJsZTxBY3Rpdml0eVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZpdHlQb2xsaW5nU2VydmljZS5wb3N0Vmlld0FjdGl2aXR5KHRoaXMuY2FzZURldGFpbHM/LmNhc2VfaWQpO1xuICB9XG5cbiAgcHVibGljIGNsZWFyRXJyb3JzQW5kV2FybmluZ3MoKTogdm9pZCB7XG4gICAgdGhpcy5yZXNldEVycm9ycygpO1xuICAgIHRoaXMuaWdub3JlV2FybmluZyA9IGZhbHNlO1xuICAgIHRoaXMudHJpZ2dlclRleHQgPSBDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuVFJJR0dFUl9URVhUX1NUQVJUO1xuICAgIHRoaXMuaXNFdmVudEJ1dHRvbkNsaWNrZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhcHBseVRyaWdnZXIodHJpZ2dlcjogQ2FzZVZpZXdUcmlnZ2VyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaXNFdmVudEJ1dHRvbkNsaWNrZWQpe1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmlzRXZlbnRCdXR0b25DbGlja2VkID0gdHJ1ZTtcbiAgICBjb25zdCBzcGlubmVyID0gdGhpcy5sb2FkaW5nU2VydmljZS5yZWdpc3RlcigpO1xuICAgIHRoaXMubG9hZGluZ1NlcnZpY2UuYWRkU2hhcmVkU3Bpbm5lcihzcGlubmVyKTtcbiAgICB0aGlzLmVycm9yTm90aWZpZXJTZXJ2aWNlLmFubm91bmNlRXJyb3IobnVsbCk7XG4gICAgY29uc3QgdGhlUXVlcnlQYXJhbXM6IFBhcmFtcyA9IHt9O1xuXG4gICAgaWYgKHRoaXMuaWdub3JlV2FybmluZykge1xuICAgICAgdGhlUXVlcnlQYXJhbXNbJ2lnbm9yZVdhcm5pbmcnXSA9IHRoaXMuaWdub3JlV2FybmluZztcbiAgICB9XG5cbiAgICAvLyB3ZSBtYXkgbmVlZCB0byB0YWtlIGNhcmUgb2YgZGlmZmVyZW50IHRyaWdnZXJzIGluIHRoZSBmdXR1cmVcbiAgICBpZiAodHJpZ2dlci5pZCA9PT0gQ2FzZVZpZXdFdmVudElkcy5RdWVyeU1hbmFnZW1lbnRSYWlzZVF1ZXJ5KSB7XG4gICAgICBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYC9xdWVyeS1tYW5hZ2VtZW50L3F1ZXJ5LyR7dGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkfWBdKTtcbiAgICB9IGVsc2UgaWYgKHRyaWdnZXIuaWQgPT09IENhc2VWaWV3RXZlbnRJZHMuREVMRVRFKSB7XG4gICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKERlbGV0ZU9yQ2FuY2VsRGlhbG9nQ29tcG9uZW50LCB0aGlzLmRpYWxvZ0NvbmZpZyk7XG4gICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdCA9PT0gJ0RlbGV0ZScpIHtcbiAgICAgICAgICB0aGlzLmRyYWZ0U2VydmljZS5kZWxldGVEcmFmdCh0aGlzLmNhc2VEZXRhaWxzLmNhc2VfaWQpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25Ob3RpZmllclNlcnZpY2UuYW5ub3VuY2VOYXZpZ2F0aW9uKHsgYWN0aW9uOiBOYXZpZ2F0aW9uT3JpZ2luLkRSQUZUX0RFTEVURUQgfSk7XG4gICAgICAgICAgICB9LCBfID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uTm90aWZpZXJTZXJ2aWNlLmFubm91bmNlTmF2aWdhdGlvbih7IGFjdGlvbjogTmF2aWdhdGlvbk9yaWdpbi5FUlJPUl9ERUxFVElOR19EUkFGVCB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNEcmFmdCgpICYmIHRyaWdnZXIuaWQgIT09IENhc2VWaWV3RXZlbnRJZHMuREVMRVRFKSB7XG4gICAgICB0aGVRdWVyeVBhcmFtc1tEUkFGVF9RVUVSWV9QQVJBTV0gPSB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfaWQ7XG4gICAgICB0aGVRdWVyeVBhcmFtc1tDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuT1JJR0lOX1FVRVJZX1BBUkFNXSA9ICd2aWV3RHJhZnQnO1xuICAgICAgdGhpcy5uYXZpZ2F0aW9uTm90aWZpZXJTZXJ2aWNlLmFubm91bmNlTmF2aWdhdGlvbihcbiAgICAgICAge1xuICAgICAgICAgIGFjdGlvbjogTmF2aWdhdGlvbk9yaWdpbi5EUkFGVF9SRVNVTUVELFxuICAgICAgICAgIGppZDogdGhpcy5jYXNlRGV0YWlscy5jYXNlX3R5cGUuanVyaXNkaWN0aW9uLmlkLFxuICAgICAgICAgIGN0aWQ6IHRoaXMuY2FzZURldGFpbHMuY2FzZV90eXBlLmlkLFxuICAgICAgICAgIGV0aWQ6IHRyaWdnZXIuaWQsXG4gICAgICAgICAgcXVlcnlQYXJhbXM6IHRoZVF1ZXJ5UGFyYW1zXG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5hdmlnYXRpb25Ob3RpZmllclNlcnZpY2UuYW5ub3VuY2VOYXZpZ2F0aW9uKFxuICAgICAgICB7XG4gICAgICAgICAgYWN0aW9uOiBOYXZpZ2F0aW9uT3JpZ2luLkVWRU5UX1RSSUdHRVJFRCxcbiAgICAgICAgICBxdWVyeVBhcmFtczogdGhlUXVlcnlQYXJhbXMsXG4gICAgICAgICAgZXRpZDogdHJpZ2dlci5pZCxcbiAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYXNUYWJzUHJlc2VudCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zb3J0ZWRUYWJzLmxlbmd0aCA+IDAgfHwgdGhpcy5wcmVwZW5kZWRUYWJzLmxlbmd0aCA+IDAgfHwgdGhpcy5hcHBlbmRlZFRhYnMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIHB1YmxpYyBjYWxsYmFja0Vycm9yc05vdGlmeShjYWxsYmFja0Vycm9yc0NvbnRleHQ6IENhbGxiYWNrRXJyb3JzQ29udGV4dCk6IHZvaWQge1xuICAgIHRoaXMuaWdub3JlV2FybmluZyA9IGNhbGxiYWNrRXJyb3JzQ29udGV4dC5pZ25vcmVXYXJuaW5nO1xuICAgIHRoaXMudHJpZ2dlclRleHQgPSBjYWxsYmFja0Vycm9yc0NvbnRleHQudHJpZ2dlclRleHQ7XG4gICAgdGhpcy5ldmVudElkID0gY2FsbGJhY2tFcnJvcnNDb250ZXh0LmV2ZW50SWQ7XG4gIH1cblxuICBwdWJsaWMgaXNEcmFmdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gRHJhZnQuaXNEcmFmdCh0aGlzLmNhc2VEZXRhaWxzLmNhc2VfaWQpO1xuICB9XG5cbiAgcHVibGljIGlzVHJpZ2dlckJ1dHRvbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5lcnJvclxuICAgICAgJiYgdGhpcy5lcnJvci5jYWxsYmFja0Vycm9yc1xuICAgICAgJiYgdGhpcy5lcnJvci5jYWxsYmFja0Vycm9ycy5sZW5ndGgpXG4gICAgICB8fCAodGhpcy5lcnJvclxuICAgICAgICAmJiB0aGlzLmVycm9yLmRldGFpbHNcbiAgICAgICAgJiYgdGhpcy5lcnJvci5kZXRhaWxzLmZpZWxkX2Vycm9yc1xuICAgICAgICAmJiB0aGlzLmVycm9yLmRldGFpbHMuZmllbGRfZXJyb3JzLmxlbmd0aCk7XG4gIH1cblxuICBwdWJsaWMgb3JnYW5pc2VUYWJQb3NpdGlvbigpOiB2b2lkIHtcbiAgICBsZXQgbWF0VGFiOiBNYXRUYWI7XG4gICAgY29uc3QgdXJsID0gdGhpcy5sb2NhdGlvbi5wYXRoKHRydWUpO1xuICAgIGxldCBoYXNoVmFsdWUgPSB1cmwuc3Vic3RyaW5nKHVybC5pbmRleE9mKCcjJykgKyAxKTtcbiAgICBpZiAoIXVybC5pbmNsdWRlcygnIycpICYmICF1cmwuaW5jbHVkZXMoJ3JvbGVzLWFuZC1hY2Nlc3MnKSAmJiAhdXJsLmluY2x1ZGVzKCd0YXNrcycpICYmICF1cmwuaW5jbHVkZXMoJ2hlYXJpbmdzJykpIHtcbiAgICAgIGNvbnN0IHBhdGhzID0gdXJsLnNwbGl0KCcvJyk7XG4gICAgICAvLyBsYXN0UGF0aCBjYW4gYmUgL2Nhc2VJZCwgb3IgdGhlIHRhYnMgL3Rhc2tzLCAvaGVhcmluZ3MgZXRjLlxuICAgICAgY29uc3QgbGFzdFBhdGggPSBkZWNvZGVVUklDb21wb25lbnQocGF0aHNbcGF0aHMubGVuZ3RoIC0gMV0pO1xuICAgICAgbGV0IGZvdW5kVGFiOiBDYXNlVGFiID0gbnVsbDtcbiAgICAgIGlmICghdGhpcy5wcmVwZW5kZWRUYWJzKSB7XG4gICAgICAgIHRoaXMucHJlcGVuZGVkVGFicyA9IFtdO1xuICAgICAgfVxuICAgICAgY29uc3QgYWRkaXRpb25hbFRhYnMgPSBbLi4udGhpcy5wcmVwZW5kZWRUYWJzLCAuLi50aGlzLmFwcGVuZGVkVGFic107XG4gICAgICBpZiAoYWRkaXRpb25hbFRhYnMgJiYgYWRkaXRpb25hbFRhYnMubGVuZ3RoKSB7XG4gICAgICAgIGZvdW5kVGFiID0gYWRkaXRpb25hbFRhYnMuZmluZCgoY2FzZVRhYjogQ2FzZVRhYikgPT4gY2FzZVRhYi5pZC50b0xvd2VyQ2FzZSgpID09PSBsYXN0UGF0aC50b0xvd2VyQ2FzZSgpKTtcbiAgICAgIH1cbiAgICAgIC8vIGZvdW5kIHRhc2tzIG9yIGhlYXJpbmcgdGFiXG4gICAgICBpZiAoZm91bmRUYWIpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydjYXNlcycsICdjYXNlLWRldGFpbHMnLCB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfaWQsIGZvdW5kVGFiLmlkXSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgbWF0VGFiID0gdGhpcy50YWJHcm91cC5fdGFicy5maW5kKCh4KSA9PiB4LnRleHRMYWJlbCA9PT0gZm91bmRUYWIubGFiZWwpO1xuICAgICAgICAgIC8vIFVwZGF0ZSBzZWxlY3RlZEluZGV4IG9ubHkgaWYgbWF0VGFiLnBvc2l0aW9uIGlzIGEgbm9uLXplcm8gbnVtYmVyIChwb3NpdGl2ZSBvciBuZWdhdGl2ZSk7IHRoaXMgbWVhbnMgdGhlXG4gICAgICAgICAgLy8gbWF0VGFiIGlzIG5vdCBhbHJlYWR5IHNlbGVjdGVkIChwb3NpdGlvbiBpcyByZWxhdGl2ZTsgcG9zaXRpdmUgPSByaWdodCwgbmVnYXRpdmUgPSBsZWZ0KSBvciBpdCB3b3VsZCBiZSAwXG4gICAgICAgICAgaWYgKG1hdFRhYj8ucG9zaXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9IG1hdFRhYi5wb3NpdGlvbjtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBsYXN0IHBhdGggaXMgY2FzZUlkXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBzb3J0IHdpdGggdGhlIG9yZGVyIG9mIENDRCBwcmVkZWZpbmVkIHRhYnNcbiAgICAgICAgdGhpcy5jYXNlRGV0YWlscy50YWJzLnNvcnQoKGFUYWIsIGJUYWIpID0+IGFUYWIub3JkZXIgPiBiVGFiLm9yZGVyID8gMSA6IChiVGFiLm9yZGVyID4gYVRhYi5vcmRlciA/IC0xIDogMCkpO1xuICAgICAgICAvLyBzZWxlY3QgdGhlIGZpcnN0IHRhYiBjaGVja2luZyBpZiB0aGUgdGFiIGlzIHZpc2libGVcbiAgICAgICAgY29uc3QgcHJlU2VsZWN0VGFiOiBDYXNlVGFiID0gdGhpcy5maW5kUHJlU2VsZWN0ZWRBY3RpdmVUYWIoKTtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydjYXNlcycsICdjYXNlLWRldGFpbHMnLCB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfaWRdLCB7IGZyYWdtZW50OiBwcmVTZWxlY3RUYWIubGFiZWwgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgbWF0VGFiID0gdGhpcy50YWJHcm91cC5fdGFicy5maW5kKCh4KSA9PiB4LnRleHRMYWJlbCA9PT0gcHJlU2VsZWN0VGFiLmxhYmVsKTtcbiAgICAgICAgICAvLyBVcGRhdGUgc2VsZWN0ZWRJbmRleCBvbmx5IGlmIG1hdFRhYi5wb3NpdGlvbiBpcyBhIG5vbi16ZXJvIG51bWJlciAocG9zaXRpdmUgb3IgbmVnYXRpdmUpOyB0aGlzIG1lYW5zIHRoZVxuICAgICAgICAgIC8vIG1hdFRhYiBpcyBub3QgYWxyZWFkeSBzZWxlY3RlZCAocG9zaXRpb24gaXMgcmVsYXRpdmU7IHBvc2l0aXZlID0gcmlnaHQsIG5lZ2F0aXZlID0gbGVmdCkgb3IgaXQgd291bGQgYmUgMFxuICAgICAgICAgIGlmIChtYXRUYWI/LnBvc2l0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSBtYXRUYWIucG9zaXRpb247XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcmVnRXhwID0gbmV3IFJlZ0V4cChDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuVU5JQ09ERV9TUEFDRSwgJ2cnKTtcbiAgICAgIGhhc2hWYWx1ZSA9IGhhc2hWYWx1ZS5yZXBsYWNlKHJlZ0V4cCwgQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50LkVNUFRZX1NQQUNFKTtcbiAgICAgIGlmIChoYXNoVmFsdWUuaW5jbHVkZXMoJ2hlYXJpbmdzJykpIHtcbiAgICAgICAgaGFzaFZhbHVlID0gJ2hlYXJpbmdzJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChoYXNoVmFsdWUuaW5jbHVkZXMoJ3JvbGVzLWFuZC1hY2Nlc3MnKSB8fCBoYXNoVmFsdWUuaW5jbHVkZXMoJ3Rhc2tzJykpIHtcbiAgICAgICAgICBoYXNoVmFsdWUgPSBoYXNoVmFsdWUuaW5jbHVkZXMoJ3JvbGVzLWFuZC1hY2Nlc3MnKSA/ICdyb2xlcyBhbmQgYWNjZXNzJyA6ICd0YXNrcyc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG1hdFRhYiA9IHRoaXMudGFiR3JvdXAuX3RhYnMuZmluZCgoeCkgPT5cbiAgICAgICAgeC50ZXh0TGFiZWwucmVwbGFjZShDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuRU1QVFlfU1BBQ0UsICcnKS50b0xvd2VyQ2FzZSgpID09PVxuICAgICAgICBoYXNoVmFsdWUucmVwbGFjZShDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuRU1QVFlfU1BBQ0UsICcnKS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgIC8vIFVwZGF0ZSBzZWxlY3RlZEluZGV4IG9ubHkgaWYgbWF0VGFiLnBvc2l0aW9uIGlzIGEgbm9uLXplcm8gbnVtYmVyIChwb3NpdGl2ZSBvciBuZWdhdGl2ZSk7IHRoaXMgbWVhbnMgdGhlXG4gICAgICAvLyBtYXRUYWIgaXMgbm90IGFscmVhZHkgc2VsZWN0ZWQgKHBvc2l0aW9uIGlzIHJlbGF0aXZlOyBwb3NpdGl2ZSA9IHJpZ2h0LCBuZWdhdGl2ZSA9IGxlZnQpIG9yIGl0IHdvdWxkIGJlIDBcbiAgICAgIGlmIChtYXRUYWI/LnBvc2l0aW9uKSB7XG4gICAgICAgIHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9IG1hdFRhYi5wb3NpdGlvbjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZmluZFByZVNlbGVjdGVkQWN0aXZlVGFiKCk6IENhc2VUYWIge1xuICAgIGNvbnN0IHVuT3JkZXJlZFRhYnNJblNvcnRlZFRhYnMgPSB0aGlzLmNhc2VEZXRhaWxzLnRhYnNcbiAgICAgIC5maWx0ZXIoKHRhYikgPT4gIXRhYi5vcmRlciAmJiB0aGlzLnNvcnRlZFRhYnMuc29tZSgoc29ydGVkVGFiKSA9PiBzb3J0ZWRUYWIuaWQgPT09IHRhYi5pZCkpO1xuICAgIHJldHVybiB1bk9yZGVyZWRUYWJzSW5Tb3J0ZWRUYWJzLmxlbmd0aCA/IHVuT3JkZXJlZFRhYnNJblNvcnRlZFRhYnNbMF0gOiB0aGlzLnNvcnRlZFRhYnNbMF07XG4gIH1cblxuICAvLyBSZWZhY3RvcmVkIHVuZGVyIEVYVUktMTEwIHRvIGFkZHJlc3MgaW5maW5pdGUgdGFiIGxvb3AgdG8gdXNlIHRhYkluZGV4Q2hhbmdlZCBpbnN0ZWFkXG4gIHB1YmxpYyB0YWJDaGFuZ2VkKHRhYkluZGV4Q2hhbmdlZDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgbWF0VGFiID0gdGhpcy50YWJHcm91cC5fdGFicy5maW5kKHRhYiA9PiB0YWIuaXNBY3RpdmUpO1xuICAgIGNvbnN0IHRhYkxhYmVsID0gbWF0VGFiLnRleHRMYWJlbDtcbiAgICAvLyBzb3J0ZWRUYWJzIGFyZSBmcmFnbWVudHNcbiAgICAvLyBhcHBlbmRlZC9wcmVwZXBlbmRlZCB0YWJzIHVzZSByb3V0ZXIgbmF2aWdhdGlvblxuICAgIGlmICgodGFiSW5kZXhDaGFuZ2VkIDw9IDEgJiYgdGhpcy5wcmVwZW5kZWRUYWJzICYmIHRoaXMucHJlcGVuZGVkVGFicy5sZW5ndGgpIHx8XG4gICAgICAodGhpcy5hcHBlbmRlZFRhYnM/Lmxlbmd0aCAmJiAodGFiTGFiZWwgPT09IHRoaXMuSEVBUklOR1NfVEFCX0xBQkVMXG4gICAgICAgIHx8IHRhYkxhYmVsID09PSB0aGlzLnJweFRyYW5zbGF0aW9uUGlwZS50cmFuc2Zvcm0odGhpcy5IRUFSSU5HU19UQUJfTEFCRUwpKSkpIHtcbiAgICAgIC8vIEhhY2sgdG8gZ2V0IElEIGZyb20gdGFiIGFzIGl0J3Mgbm90IGVhc2lseSBhY2hpZXZlZCB0aHJvdWdoIEFuZ3VsYXIgTWF0ZXJpYWwgVGFic1xuICAgICAgY29uc3QgdGFiID0gbWF0VGFiWydfdmlld0NvbnRhaW5lclJlZiddIGFzIFZpZXdDb250YWluZXJSZWY7XG4gICAgICBjb25zdCBpZCA9ICh0YWIuZWxlbWVudC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5pZDtcbiAgICAgIC8vIGNhc2VzL2Nhc2UtZGV0YWlscy86Y2FzZUlkL2hlYXJpbmdzXG4gICAgICAvLyBjYXNlcy9jYXNlLWRldGFpbHMvOmNhc2VJZC9yb2xlcy1hbmQtYWNjZXNzXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbaWRdLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJvdXRpbmcgaGVyZSBpcyBiYXNlZCBvbiB0YWIgbGFiZWwsIG5vdCBpZGVhbFxuICAgICAgLy8gY2FzZXMvY2FzZS1kZXRhaWxzLzpjYXNlSWQjdGFiTGFiZWxcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnY2FzZXMnLCAnY2FzZS1kZXRhaWxzJywgdGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkXSwgeyBmcmFnbWVudDogdGFiTGFiZWwgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uTGlua0NsaWNrZWQodHJpZ2dlck91dHB1dEV2ZW50VGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gR2V0IHRoZSAqYWJzb2x1dGUqIChub3QgcmVsYXRpdmUpIGluZGV4IG9mIHRoZSB0YXJnZXQgdGFiIGFuZCBzZXQgYXMgdGhlIGFjdGl2ZSB0YWIsIHVzaW5nIHRoZSBzZWxlY3RlZEluZGV4IGlucHV0XG4gICAgLy8gb2YgbWF0LXRhYi1ncm91cCAoYm91bmQgdG8gc2VsZWN0ZWRUYWJJbmRleClcbiAgICBjb25zdCB0YXJnZXRUYWJJbmRleCA9IHRoaXMudGFiR3JvdXAuX3RhYnMudG9BcnJheSgpLmZpbmRJbmRleCh0YWIgPT4gdGFiLnRleHRMYWJlbCA9PT0gdHJpZ2dlck91dHB1dEV2ZW50VGV4dCk7XG4gICAgaWYgKHRhcmdldFRhYkluZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IHRhcmdldFRhYkluZGV4O1xuICAgICAgdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4ID0gdGFyZ2V0VGFiSW5kZXg7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhc0FjdGl2ZUNhc2VGbGFncygpOiBib29sZWFuIHtcbiAgICAvLyBEZXRlcm1pbmUgd2hpY2ggdGFiIGNvbnRhaW5zIHRoZSBGbGFnTGF1bmNoZXIgQ2FzZUZpZWxkIHR5cGUsIGZyb20gdGhlIENhc2VWaWV3IG9iamVjdCBpbiB0aGUgc25hcHNob3QgZGF0YVxuICAgIGNvbnN0IGNhc2VGbGFnc1RhYiA9IHRoaXMuY2FzZURldGFpbHM/LnRhYnNcbiAgICAgID8gKHRoaXMuY2FzZURldGFpbHMudGFicykuZmlsdGVyKFxuICAgICAgICB0YWIgPT4gdGFiLmZpZWxkcyAmJiB0YWIuZmllbGRzLnNvbWUoY2FzZUZpZWxkID0+IEZpZWxkc1V0aWxzLmlzRmxhZ0xhdW5jaGVyQ2FzZUZpZWxkKGNhc2VGaWVsZCkpKVswXVxuICAgICAgOiBudWxsO1xuXG4gICAgaWYgKGNhc2VGbGFnc1RhYikge1xuICAgICAgLy8gQ2hlY2sgd2hldGhlciB0aGUgRmxhZ0xhdW5jaGVyIENhc2VGaWVsZCBpcyBpbiBleHRlcm5hbCBtb2RlIG9yIG5vdDsgdGhlIG5vdGlmaWNhdGlvbiBiYW5uZXIgc2hvdWxkIG5vdCBiZVxuICAgICAgLy8gZGlzcGxheWVkIGZvciBleHRlcm5hbCB1c2Vyc1xuICAgICAgdGhpcy5jYXNlRmxhZ3NFeHRlcm5hbFVzZXIgPSBjYXNlRmxhZ3NUYWIuZmllbGRzLmZpbmQoXG4gICAgICAgIGNhc2VGaWVsZCA9PiBGaWVsZHNVdGlscy5pc0ZsYWdMYXVuY2hlckNhc2VGaWVsZChjYXNlRmllbGQpKS5kaXNwbGF5X2NvbnRleHRfcGFyYW1ldGVyID09PSB0aGlzLmNhc2VGbGFnc1JlYWRFeHRlcm5hbE1vZGU7XG5cbiAgICAgIC8vIEdldCB0aGUgYWN0aXZlIGNhc2UgZmxhZ3MgY291bnRcbiAgICAgIC8vIENhbm5vdCBmaWx0ZXIgb3V0IGFueXRoaW5nIG90aGVyIHRoYW4gdG8gcmVtb3ZlIHRoZSBGbGFnTGF1bmNoZXIgQ2FzZUZpZWxkIGJlY2F1c2UgRmxhZ3MgZmllbGRzIG1heSBiZVxuICAgICAgLy8gY29udGFpbmVkIGluIG90aGVyIENhc2VGaWVsZCBpbnN0YW5jZXMsIGVpdGhlciBhcyBhIHN1Yi1maWVsZCBvZiBhIENvbXBsZXggZmllbGQsIG9yIGZpZWxkcyBpbiBhIGNvbGxlY3Rpb25cbiAgICAgIC8vIChvciBzdWItZmllbGRzIG9mIENvbXBsZXggZmllbGRzIGluIGEgY29sbGVjdGlvbilcbiAgICAgIGNvbnN0IGFjdGl2ZUNhc2VGbGFncyA9IGNhc2VGbGFnc1RhYi5maWVsZHNcbiAgICAgICAgLmZpbHRlcihjYXNlRmllbGQgPT4gIUZpZWxkc1V0aWxzLmlzRmxhZ0xhdW5jaGVyQ2FzZUZpZWxkKGNhc2VGaWVsZCkgJiYgY2FzZUZpZWxkLnZhbHVlKVxuICAgICAgICAucmVkdWNlKChhY3RpdmUsIGNhc2VGbGFnKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIEZpZWxkc1V0aWxzLmNvdW50QWN0aXZlRmxhZ3NJbkNhc2VGaWVsZChhY3RpdmUsIGNhc2VGbGFnKTtcbiAgICAgICAgfSwgMCk7XG5cbiAgICAgIGlmIChhY3RpdmVDYXNlRmxhZ3MgPiAwKSB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gYWN0aXZlQ2FzZUZsYWdzID4gMVxuICAgICAgICAgID8gYFRoZXJlIGFyZSAke2FjdGl2ZUNhc2VGbGFnc30gYWN0aXZlIGZsYWdzIG9uIHRoaXMgY2FzZS5gIDogJ1RoZXJlIGlzIDEgYWN0aXZlIGZsYWcgb24gdGhpcyBjYXNlLic7XG4gICAgICAgIC8vIEluaXRpYWxpc2UgYW5kIGRpc3BsYXkgbm90aWZpY2F0aW9uIGJhbm5lclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkJhbm5lckNvbmZpZyA9IHtcbiAgICAgICAgICBiYW5uZXJUeXBlOiBOb3RpZmljYXRpb25CYW5uZXJUeXBlLklORk9STUFUSU9OLFxuICAgICAgICAgIGhlYWRpbmdUZXh0OiAnSW1wb3J0YW50JyxcbiAgICAgICAgICBkZXNjcmlwdGlvbixcbiAgICAgICAgICBzaG93TGluazogdHJ1ZSxcbiAgICAgICAgICBsaW5rVGV4dDogJ1ZpZXcgY2FzZSBmbGFncycsXG4gICAgICAgICAgdHJpZ2dlck91dHB1dEV2ZW50OiB0cnVlLFxuICAgICAgICAgIHRyaWdnZXJPdXRwdXRFdmVudFRleHQ6IGNhc2VGbGFnc1RhYi5sYWJlbCxcbiAgICAgICAgICBoZWFkZXJDbGFzczogTm90aWZpY2F0aW9uQmFubmVySGVhZGVyQ2xhc3MuSU5GT1JNQVRJT05cbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgYSBDYXNlRmllbGQgaXMgdG8gYmUgZGlzcGxheWVkIHdpdGhvdXQgYSBsYWJlbCwgYXMgaXMgZXhwZWN0ZWQgZm9yIGFsbCBDb21wb25lbnRMYXVuY2hlci10eXBlXG4gICAqIGZpZWxkcy5cbiAgICogQHBhcmFtIGNhc2VGaWVsZCBUaGUgYENhc2VGaWVsZGAgaW5zdGFuY2UgdG8gY2hlY2tcbiAgICogQHJldHVybnMgYHRydWVgIGlmIGl0IHNob3VsZCBub3QgaGF2ZSBhIGxhYmVsOyBgZmFsc2VgIG90aGVyd2lzZVxuICAgKi9cbiAgcHVibGljIGlzRmllbGRUb0hhdmVOb0xhYmVsKGNhc2VGaWVsZDogQ2FzZUZpZWxkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGNhc2VGaWVsZC5maWVsZF90eXBlLnR5cGUgPT09ICdDb21wb25lbnRMYXVuY2hlcidcbiAgICAgICYmIGNhc2VGaWVsZC5kaXNwbGF5X2NvbnRleHRfcGFyYW1ldGVyID09PSAnI0FSR1VNRU5UKENhc2VGaWxlVmlldyknO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0KCk6IHZvaWQge1xuICAgIC8vIENsb25lIGFuZCBzb3J0IHRhYnMgYXJyYXlcbiAgICB0aGlzLnNvcnRlZFRhYnMgPSB0aGlzLm9yZGVyU2VydmljZS5zb3J0KHRoaXMuY2FzZURldGFpbHM/LnRhYnMpO1xuICAgIHRoaXMuY2FzZUZpZWxkcyA9IHRoaXMuZ2V0VGFiRmllbGRzKCk7XG4gICAgdGhpcy5zb3J0ZWRUYWJzID0gdGhpcy5zb3J0VGFiRmllbGRzQW5kRmlsdGVyVGFicyh0aGlzLnNvcnRlZFRhYnMpO1xuICAgIHRoaXMuZm9ybUdyb3VwID0gdGhpcy5idWlsZEZvcm1Hcm91cCh0aGlzLmNhc2VGaWVsZHMpO1xuICAgIGlmICh0aGlzLmNhc2VEZXRhaWxzPy50cmlnZ2VycyAmJiB0aGlzLmVycm9yKSB7XG4gICAgICB0aGlzLnJlc2V0RXJyb3JzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzb3J0VGFiRmllbGRzQW5kRmlsdGVyVGFicyh0YWJzOiBDYXNlVGFiW10pOiBDYXNlVGFiW10ge1xuICAgIHJldHVybiB0YWJzPy5tYXAodGFiID0+IE9iamVjdC5hc3NpZ24oe30sIHRhYiwgeyBmaWVsZHM6IHRoaXMub3JkZXJTZXJ2aWNlLnNvcnQodGFiLmZpZWxkcykgfSkpXG4gICAgICAuZmlsdGVyKHRhYiA9PiBTaG93Q29uZGl0aW9uLmdldEluc3RhbmNlKHRhYi5zaG93X2NvbmRpdGlvbikubWF0Y2hCeUNvbnRleHRGaWVsZHModGhpcy5jYXNlRmllbGRzKSk7XG4gIH1cblxuICBwcml2YXRlIGdldFRhYkZpZWxkcygpOiBDYXNlRmllbGRbXSB7XG4gICAgY29uc3QgY2FzZURhdGFGaWVsZHMgPSB0aGlzLnNvcnRlZFRhYnM/LnJlZHVjZSgoYWNjLCB0YWIpID0+IHtcbiAgICAgIHJldHVybiBhY2MuY29uY2F0KHBsYWluVG9DbGFzcyhDYXNlRmllbGQsIHRhYi5maWVsZHMpKTtcbiAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4gY2FzZURhdGFGaWVsZHM/LmNvbmNhdCh0aGlzLmNhc2VEZXRhaWxzLm1ldGFkYXRhRmllbGRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3IgRVVJLTM4MjU6XG4gICAqIEJ1aWxkcyBhIEZvcm1Hcm91cCBmcm9tIGFsbCB0aGUgQ2FzZUZpZWxkcyBjb250YWluZWQgd2l0aGluIHRoZSB2aWV3LlxuICAgKiBUaGlzIEZvcm1Hcm91cCBpcyBuZWNlc3NhcnkgZm9yIGV2YWx1YXRpb24gdGhlIHNob3cvaGlkZSBjb25kaXRpb25zIG9mXG4gICAqIGZpZWxkcyB0aGF0IGFyZSBkZXBlbmRlbnQgb24gYSBmaWVsZCBvbmx5IGF2YWlsYWJsZSBvbiBhIERJRkZFUkVOVCB0YWIuXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkRm9ybUdyb3VwKGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdKTogRm9ybUdyb3VwIHtcbiAgICBsZXQgdmFsdWU6IG9iamVjdCA9IHt9O1xuICAgIGlmIChjYXNlRmllbGRzKSB7XG4gICAgICBjYXNlRmllbGRzLmZvckVhY2goY2FzZUZpZWxkID0+IHtcbiAgICAgICAgdmFsdWUgPSB7XG4gICAgICAgICAgLi4udmFsdWUsXG4gICAgICAgICAgW2Nhc2VGaWVsZC5pZF06IGNhc2VGaWVsZC52YWx1ZVxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgRm9ybUdyb3VwKHsgZGF0YTogbmV3IEZvcm1Db250cm9sKHZhbHVlKSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRFcnJvcnMoKTogdm9pZCB7XG4gICAgdGhpcy5lcnJvck5vdGlmaWVyU2VydmljZS5hbm5vdW5jZUVycm9yKG51bGwpO1xuICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmNsZWFyKCk7XG4gIH1cbn1cbiIsIjwhLS0gR2VuZXJpYyBlcnJvciBoZWFkaW5nIGFuZCBlcnJvciBtZXNzYWdlIHRvIGJlIGRpc3BsYXllZCBvbmx5IGlmIHRoZXJlIGFyZSBubyBzcGVjaWZpYyBjYWxsYmFjayBlcnJvcnMgb3Igd2FybmluZ3MsIG9yIG5vIGVycm9yIGRldGFpbHMgLS0+XG48ZGl2ICpuZ0lmPVwiZXJyb3IgJiYgIShlcnJvci5jYWxsYmFja0Vycm9ycyB8fCBlcnJvci5jYWxsYmFja1dhcm5pbmdzIHx8IGVycm9yLmRldGFpbHMpXCIgY2xhc3M9XCJlcnJvci1zdW1tYXJ5XCJcbiAgICAgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbGxlZGJ5PVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktaGVhZGluZ1wiIHRhYmluZGV4PVwiLTFcIj5cbiAgPGgxIGNsYXNzPVwiaGVhZGluZy1oMSBlcnJvci1zdW1tYXJ5LWhlYWRpbmdcIiBpZD1cImVkaXQtY2FzZS1ldmVudF9lcnJvci1zdW1tYXJ5LWhlYWRpbmdcIj5cbiAgICB7eydTb21ldGhpbmcgd2VudCB3cm9uZycgfCBycHhUcmFuc2xhdGV9fVxuICA8L2gxPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeV9fYm9keVwiIGlkPVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktYm9keVwiPlxuICAgIDxwPnt7XCJXZSdyZSB3b3JraW5nIHRvIGZpeCB0aGUgcHJvYmxlbS4gVHJ5IGFnYWluIHNob3J0bHkuXCIgfCBycHhUcmFuc2xhdGV9fTwvcD5cbiAgICA8cD5cbiAgICAgIDxhIGhyZWY9XCJnZXQtaGVscFwiIHRhcmdldD1cIl9ibGFua1wiPlxuICAgICAgICB7e1wiQ29udGFjdCB1c1wiIHwgcnB4VHJhbnNsYXRlfX08L2E+IHt7XCJpZiB5b3UncmUgc3RpbGwgaGF2aW5nIHByb2JsZW1zLlwiIHwgcnB4VHJhbnNsYXRlfX1cbiAgICA8L3A+XG4gIDwvZGl2PlxuPC9kaXY+XG48IS0tIENhbGxiYWNrIGVycm9yIGhlYWRpbmcgYW5kIGVycm9yIG1lc3NhZ2UgdG8gYmUgZGlzcGxheWVkIGlmIHRoZXJlIGFyZSBzcGVjaWZpYyBlcnJvciBkZXRhaWxzIC0tPlxuPGRpdiAqbmdJZj1cImVycm9yICYmIGVycm9yLmRldGFpbHNcIiBjbGFzcz1cImVycm9yLXN1bW1hcnlcIiByb2xlPVwiZ3JvdXBcIlxuICAgICBhcmlhLWxhYmVsbGVkYnk9XCJlZGl0LWNhc2UtZXZlbnRfZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCIgdGFiaW5kZXg9XCItMVwiPlxuICA8aDIgY2xhc3M9XCJoZWFkaW5nLWgyIGVycm9yLXN1bW1hcnktaGVhZGluZ1wiIGlkPVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktaGVhZGluZ1wiPlxuICAgIHt7J1RoZSBjYWxsYmFjayBkYXRhIGZhaWxlZCB2YWxpZGF0aW9uJyB8IHJweFRyYW5zbGF0ZX19XG4gIDwvaDI+XG4gIDxwPnt7ZXJyb3IubWVzc2FnZSB8IHJweFRyYW5zbGF0ZX19PC9wPlxuICA8dWwgKm5nSWY9XCJlcnJvci5kZXRhaWxzPy5maWVsZF9lcnJvcnNcIiBjbGFzcz1cImVycm9yLXN1bW1hcnktbGlzdFwiPlxuICAgIDxsaSAqbmdGb3I9XCJsZXQgZmllbGRFcnJvciBvZiBlcnJvci5kZXRhaWxzLmZpZWxkX2Vycm9yc1wiPlxuICAgICAge3tmaWVsZEVycm9yLm1lc3NhZ2UgfCBycHhUcmFuc2xhdGV9fVxuICAgIDwvbGk+XG4gIDwvdWw+XG48L2Rpdj5cbjxjY2QtY2FsbGJhY2stZXJyb3JzXG4gIFt0cmlnZ2VyVGV4dENvbnRpbnVlXT1cInRyaWdnZXJUZXh0U3RhcnRcIlxuICBbdHJpZ2dlclRleHRJZ25vcmVdPVwidHJpZ2dlclRleHRJZ25vcmVXYXJuaW5nc1wiXG4gIFtjYWxsYmFja0Vycm9yc1N1YmplY3RdPVwiY2FsbGJhY2tFcnJvcnNTdWJqZWN0XCJcbiAgKGNhbGxiYWNrRXJyb3JzQ29udGV4dCk9XCJjYWxsYmFja0Vycm9yc05vdGlmeSgkZXZlbnQpXCI+XG48L2NjZC1jYWxsYmFjay1lcnJvcnM+XG48Y2NkLWFjdGl2aXR5IFtjYXNlSWRdPVwiY2FzZURldGFpbHMuY2FzZV9pZFwiIFtkaXNwbGF5TW9kZV09XCJCQU5ORVJcIj48L2NjZC1hY3Rpdml0eT5cbjxkaXYgY2xhc3M9XCJncmlkLXJvd1wiPlxuICA8ZGl2IGNsYXNzPVwiY29sdW1uLW9uZS1oYWxmXCI+XG4gICAgPGNjZC1jYXNlLWhlYWRlciBbY2FzZURldGFpbHNdPVwiY2FzZURldGFpbHNcIj48L2NjZC1jYXNlLWhlYWRlcj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FzZS12aWV3ZXItY29udHJvbHNcIiAqbmdJZj1cImhhc1ByaW50ICYmICFpc0RyYWZ0KCkgJiYgaXNQcmludEVuYWJsZWQoKVwiPlxuICAgICAgPGEgaWQ9XCJjYXNlLXZpZXdlci1jb250cm9sLXByaW50XCIgcm91dGVyTGluaz1cInByaW50XCIgY2xhc3M9XCJidXR0b24gYnV0dG9uLXNlY29uZGFyeVwiPnt7J1ByaW50JyB8IHJweFRyYW5zbGF0ZX19PC9hPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImhhc0V2ZW50U2VsZWN0b3JcIiBjbGFzcz1cImNvbHVtbi1vbmUtaGFsZlwiPlxuICAgIDxjY2QtZXZlbnQtdHJpZ2dlciBbaXNEaXNhYmxlZF09XCJpc1RyaWdnZXJCdXR0b25EaXNhYmxlZCgpXCIgW3RyaWdnZXJzXT1cImNhc2VEZXRhaWxzLnRyaWdnZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW3RyaWdnZXJUZXh0XT1cInRyaWdnZXJUZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2V2ZW50SWRdPVwiZXZlbnRJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgIChvblRyaWdnZXJDaGFuZ2UpPVwiY2xlYXJFcnJvcnNBbmRXYXJuaW5ncygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgKG9uVHJpZ2dlclN1Ym1pdCk9XCJhcHBseVRyaWdnZXIoJGV2ZW50KVwiPjwvY2NkLWV2ZW50LXRyaWdnZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiZ3JpZC1yb3dcIiAqbmdJZj1cImFjdGl2ZUNhc2VGbGFncyAmJiAhY2FzZUZsYWdzRXh0ZXJuYWxVc2VyXCI+XG4gIDxkaXYgY2xhc3M9XCJjb2x1bW4tZnVsbFwiPlxuICAgIDxjY2Qtbm90aWZpY2F0aW9uLWJhbm5lciBbbm90aWZpY2F0aW9uQmFubmVyQ29uZmlnXT1cIm5vdGlmaWNhdGlvbkJhbm5lckNvbmZpZ1wiIChsaW5rQ2xpY2tlZCk9XCJvbkxpbmtDbGlja2VkKCRldmVudClcIj5cbiAgICA8L2NjZC1ub3RpZmljYXRpb24tYmFubmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImdyaWQtcm93XCI+XG4gIDxkaXYgY2xhc3M9XCJjb2x1bW4tZnVsbFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNUYWJzUHJlc2VudCgpXCI+XG4gICAgICA8bWF0LXRhYi1ncm91cCAjdGFiR3JvdXAgYW5pbWF0aW9uRHVyYXRpb249XCIwbXNcIiAoc2VsZWN0ZWRJbmRleENoYW5nZSk9XCJ0YWJDaGFuZ2VkKCRldmVudClcIiBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCJcbiAgICAgICAgW3NlbGVjdGVkSW5kZXhdPVwic2VsZWN0ZWRUYWJJbmRleFwiPlxuICAgICAgICA8bWF0LXRhYiAqbmdGb3I9XCJsZXQgdGFiIG9mIHByZXBlbmRlZFRhYnNcIiBbaWRdPVwidGFiLmlkXCIgW2xhYmVsXT1cInRhYi5sYWJlbCB8IHJweFRyYW5zbGF0ZVwiPlxuICAgICAgICA8L21hdC10YWI+XG4gICAgICAgIDxtYXQtdGFiICpuZ0Zvcj1cImxldCB0YWIgb2Ygc29ydGVkVGFiczsgbGV0IGN1cklkeD1pbmRleFwiIFtpZF09XCJ0YWIuaWRcIiBbbGFiZWxdPVwidGFiLmxhYmVsIHwgcnB4VHJhbnNsYXRlXCIgW2FyaWEtbGFiZWxdPVwiY3VySWR4ID09PSAwID8gdGFiLmxhYmVsICsgJywgUGxlYXNlIHVzZSBsZWZ0IGFuZCByaWdodCBhcnJvdyBrZXlzIHRvIG5hdmlnYXRlIGNhc2UgdGFicycgOiAnJyB8IHJweFRyYW5zbGF0ZVwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRUYWJDb250ZW50PlxuICAgICAgICAgICAgPHRhYmxlIFtjbGFzc109XCJ0YWIuaWRcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidjYXNlIHZpZXdlciB0YWJsZScgfCBycHhUcmFuc2xhdGVcIj5cbiAgICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiB0YWIgfCBjY2RUYWJGaWVsZHMgfCBjY2RSZWFkRmllbGRzRmlsdGVyOmZhbHNlIDp1bmRlZmluZWQgOnRydWUgOiBmb3JtR3JvdXA/LmNvbnRyb2xzWydkYXRhJ11cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNjZExhYmVsU3Vic3RpdHV0b3IgW2Nhc2VGaWVsZF09XCJmaWVsZFwiIFtjb250ZXh0RmllbGRzXT1cImNhc2VGaWVsZHNcIiBbaGlkZGVuXT1cImZpZWxkLmhpZGRlblwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiIShmaWVsZCB8IGNjZElzQ29tcG91bmQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBpZD1cImNhc2Utdmlld2VyLWZpZWxkLWxhYmVsXCIgKm5nSWY9XCIhaXNGaWVsZFRvSGF2ZU5vTGFiZWwoZmllbGQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FzZS12aWV3ZXItbGFiZWwgdGV4dC0xNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2ZpZWxkLmxhYmVsIHwgcnB4VHJhbnNsYXRlfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZCBbaWRdPVwiJ2Nhc2Utdmlld2VyLWZpZWxkLXJlYWQtLScgKyBmaWVsZC5pZFwiIHNjb3BlPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtMTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNjZC1maWVsZC1yZWFkIFt0b3BMZXZlbEZvcm1Hcm91cF09XCJmb3JtR3JvdXA/LmNvbnRyb2xzWydkYXRhJ11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nhc2VGaWVsZF09XCJmaWVsZFwiIFtjYXNlUmVmZXJlbmNlXT1cImNhc2VEZXRhaWxzLmNhc2VfaWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jY2QtZmllbGQtcmVhZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICA8dHIgKm5nU3dpdGNoQ2FzZT1cImZhbHNlXCIgY2xhc3M9XCJjb21wb3VuZC1maWVsZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBbaWRdPVwiJ2Nhc2Utdmlld2VyLWZpZWxkLXJlYWQtLScgKyBmaWVsZC5pZFwiIHNjb3BlPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtMTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNjZC1maWVsZC1yZWFkIFt0b3BMZXZlbEZvcm1Hcm91cF09XCJmb3JtR3JvdXAuY29udHJvbHNbJ2RhdGEnXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2FzZUZpZWxkXT1cImZpZWxkXCIgW2Nhc2VSZWZlcmVuY2VdPVwiY2FzZURldGFpbHMuY2FzZV9pZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NjZC1maWVsZC1yZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgPG1hdC10YWIgKm5nRm9yPVwibGV0IHRhYiBvZiBhcHBlbmRlZFRhYnNcIiBbaWRdPVwidGFiLmlkXCIgW2xhYmVsXT1cInRhYi5sYWJlbCB8IHJweFRyYW5zbGF0ZVwiPlxuICAgICAgICA8L21hdC10YWI+XG4gICAgICA8L21hdC10YWItZ3JvdXA+XG4gICAgICA8cm91dGVyLW91dGxldCAqbmdJZj1cIihwcmVwZW5kZWRUYWJzICYmIHByZXBlbmRlZFRhYnMubGVuZ3RoKSB8fCAoYXBwZW5kZWRUYWJzICYmIGFwcGVuZGVkVGFicy5sZW5ndGgpXCI+PC9yb3V0ZXItb3V0bGV0PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
725
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLXZpZXdlci9jYXNlLWZ1bGwtYWNjZXNzLXZpZXcvY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLXZpZXdlci9jYXNlLWZ1bGwtYWNjZXNzLXZpZXcvY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQzVCLFNBQVMsRUFDekIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxJQUFJLFNBQVMsRUFBNEMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6SCxPQUFPLEVBQTBCLGlCQUFpQixJQUFJLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pHLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFVLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMs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M0UsOENBSXlEO1lBQXZELDJKQUF5QixnQ0FBNEIsSUFBQztZQUN4RCxpQkFBc0I7WUFDdEIsa0NBQW1GO1lBRWpGLEFBREYsOEJBQXNCLGFBQ1M7WUFDM0IscUNBQStEO1lBQy9ELDRFQUFxRjtZQUd2RixpQkFBTTtZQUNOLDRFQUFzRDtZQU94RCxpQkFBTTtZQUNOLDRFQUF3RTtZQU90RSxBQURGLCtCQUFzQixlQUNLO1lBQ3ZCLGlHQUF1QztZQStDM0MsQUFERSxpQkFBTSxFQUNGOztZQXZHQSxrSEFBaUY7WUFjakYsY0FBNEI7WUFBNUIscURBQTRCO1lBYWhDLGNBQXdDO1lBRXhDLEFBREEsQUFEQSwwREFBd0Msb0RBQ08sb0RBQ0E7WUFHbkMsY0FBOEI7WUFBQyxBQUEvQixnREFBOEIsMkJBQXVCO1lBRzlDLGVBQTJCO1lBQTNCLDZDQUEyQjtZQUNULGNBQWdEO1lBQWhELDZFQUFnRDtZQUkvRSxjQUFzQjtZQUF0QiwyQ0FBc0I7WUFRUCxjQUErQztZQUEvQyx3RUFBK0M7WUFRbkQsZUFBc0I7WUFBdEIsMkNBQXNCOzs7aUZEWjVCLDJCQUEyQjtjQUx2QyxTQUFTOzJCQUNFLDJCQUEyQjs0akJBWXJCLFFBQVE7a0JBQXZCLEtBQUs7WUFDVSxnQkFBZ0I7a0JBQS9CLEtBQUs7WUFDVSxXQUFXO2tCQUExQixLQUFLO1lBQ1UsYUFBYTtrQkFBNUIsS0FBSztZQUNVLFlBQVk7a0JBQTNCLEtBQUs7WUEyQjJDLFFBQVE7a0JBQXhELFNBQVM7bUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTs7a0ZBdkM3QiwyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgTmdab25lLCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LFxuICBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0TGVnYWN5RGlhbG9nIGFzIE1hdERpYWxvZywgTWF0TGVnYWN5RGlhbG9nQ29uZmlnIGFzIE1hdERpYWxvZ0NvbmZpZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1kaWFsb2cnO1xuaW1wb3J0IHsgTWF0TGVnYWN5VGFiIGFzIE1hdFRhYiwgTWF0TGVnYWN5VGFiR3JvdXAgYXMgTWF0VGFiR3JvdXAgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktdGFicyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvbkVuZCwgUGFyYW1zLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgcGxhaW5Ub0NsYXNzIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgUnB4VHJhbnNsYXRlUGlwZSB9IGZyb20gJ3JweC14dWktdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBOb3RpZmljYXRpb25CYW5uZXJDb25maWcsXG4gIE5vdGlmaWNhdGlvbkJhbm5lckhlYWRlckNsYXNzLFxuICBOb3RpZmljYXRpb25CYW5uZXJUeXBlXG59IGZyb20gJy4uLy4uLy4uLy4uL2NvbXBvbmVudHMvYmFubmVycy9ub3RpZmljYXRpb24tYmFubmVyJztcbmltcG9ydCB7IFNob3dDb25kaXRpb24gfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IEFjdGl2aXR5LCBDYXNlRmllbGQsIENhc2VUYWIsIENhc2VWaWV3LCBDYXNlVmlld1RyaWdnZXIsIERSQUZUX1FVRVJZX1BBUkFNLCBEaXNwbGF5TW9kZSwgRHJhZnQgfSBmcm9tICcuLi8uLi8uLi9kb21haW4nO1xuaW1wb3J0IHsgQ2FzZVZpZXdFdmVudElkcyB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9jYXNlLXZpZXcvY2FzZS12aWV3LWV2ZW50LWlkcy5lbnVtJztcbmltcG9ydCB7XG4gIEFjdGl2aXR5UG9sbGluZ1NlcnZpY2UsXG4gIEFsZXJ0U2VydmljZSxcbiAgRHJhZnRTZXJ2aWNlLFxuICBFcnJvck5vdGlmaWVyU2VydmljZSxcbiAgRmllbGRzVXRpbHMsXG4gIExvYWRpbmdTZXJ2aWNlLFxuICBOYXZpZ2F0aW9uTm90aWZpZXJTZXJ2aWNlLFxuICBOYXZpZ2F0aW9uT3JpZ2luLFxuICBPcmRlclNlcnZpY2UsXG4gIFNlc3Npb25TdG9yYWdlU2VydmljZVxufSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBDb252ZXJ0SHJlZlRvUm91dGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2Nhc2UtZWRpdG9yL3NlcnZpY2VzL2NvbnZlcnQtaHJlZi10by1yb3V0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBEZWxldGVPckNhbmNlbERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2RpYWxvZ3MnO1xuaW1wb3J0IHsgQ2FsbGJhY2tFcnJvcnNDb250ZXh0IH0gZnJvbSAnLi4vLi4vZXJyb3InO1xuaW1wb3J0IHsgaW5pdERpYWxvZyB9IGZyb20gJy4uLy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgTGlua2VkQ2FzZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcGFsZXR0ZS9saW5rZWQtY2FzZXMvc2VydmljZXMnO1xuaW1wb3J0IHsgQ2FzZUZsYWdTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jYXNlLWVkaXRvci9zZXJ2aWNlcy9jYXNlLWZsYWctc3RhdGUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1jYXNlLWZ1bGwtYWNjZXNzLXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgT1JJR0lOX1FVRVJZX1BBUkFNID0gJ29yaWdpbic7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVFJJR0dFUl9URVhUX1NUQVJUID0gJ0dvJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBUUklHR0VSX1RFWFRfQ09OVElOVUUgPSAnSWdub3JlIFdhcm5pbmcgYW5kIEdvJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBVTklDT0RFX1NQQUNFID0gJyUyMCc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRU1QVFlfU1BBQ0UgPSAnICc7XG4gIHByaXZhdGUgcmVhZG9ubHkgSEVBUklOR1NfVEFCX0xBQkVMID0gJ0hlYXJpbmdzJztcblxuICBASW5wdXQoKSBwdWJsaWMgaGFzUHJpbnQgPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgaGFzRXZlbnRTZWxlY3RvciA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyBjYXNlRGV0YWlsczogQ2FzZVZpZXc7XG4gIEBJbnB1dCgpIHB1YmxpYyBwcmVwZW5kZWRUYWJzOiBDYXNlVGFiW10gPSBbXTtcbiAgQElucHV0KCkgcHVibGljIGFwcGVuZGVkVGFiczogQ2FzZVRhYltdID0gW107XG5cbiAgcHVibGljIEJBTk5FUiA9IERpc3BsYXlNb2RlLkJBTk5FUjtcbiAgcHVibGljIHNvcnRlZFRhYnM6IENhc2VUYWJbXTtcbiAgcHVibGljIGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdO1xuICBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gIHB1YmxpYyBlcnJvcjogYW55O1xuICBwdWJsaWMgdHJpZ2dlclRleHRTdGFydCA9IENhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudC5UUklHR0VSX1RFWFRfU1RBUlQ7XG4gIHB1YmxpYyB0cmlnZ2VyVGV4dElnbm9yZVdhcm5pbmdzID0gQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50LlRSSUdHRVJfVEVYVF9DT05USU5VRTtcbiAgcHVibGljIHRyaWdnZXJUZXh0OiBzdHJpbmcgPSBDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuVFJJR0dFUl9URVhUX1NUQVJUO1xuICBwdWJsaWMgaWdub3JlV2FybmluZyA9IGZhbHNlO1xuICBwdWJsaWMgYWN0aXZpdHlTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGNhc2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGVycm9yU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBkaWFsb2dDb25maWc6IE1hdERpYWxvZ0NvbmZpZztcbiAgcHVibGljIG1lc3NhZ2U6IHN0cmluZztcbiAgcHVibGljIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgbm90aWZpY2F0aW9uQmFubmVyQ29uZmlnOiBOb3RpZmljYXRpb25CYW5uZXJDb25maWc7XG4gIHB1YmxpYyBzZWxlY3RlZFRhYkluZGV4ID0gMDtcbiAgcHVibGljIGFjdGl2ZUNhc2VGbGFncyA9IGZhbHNlO1xuICBwdWJsaWMgY2FzZUZsYWdzRXh0ZXJuYWxVc2VyID0gZmFsc2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2FzZUZsYWdzUmVhZEV4dGVybmFsTW9kZSA9ICcjQVJHVU1FTlQoUkVBRCxFWFRFUk5BTCknO1xuICBwcml2YXRlIHN1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHB1YmxpYyBldmVudElkOiBzdHJpbmc7XG4gIHB1YmxpYyBpc0V2ZW50QnV0dG9uQ2xpY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBjYWxsYmFja0Vycm9yc1N1YmplY3Q6ICAgT2JzZXJ2YWJsZTxhbnk+O1xuICBAVmlld0NoaWxkKCd0YWJHcm91cCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwdWJsaWMgdGFiR3JvdXA6IE1hdFRhYkdyb3VwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hdmlnYXRpb25Ob3RpZmllclNlcnZpY2U6IE5hdmlnYXRpb25Ob3RpZmllclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcmRlclNlcnZpY2U6IE9yZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjdGl2aXR5UG9sbGluZ1NlcnZpY2U6IEFjdGl2aXR5UG9sbGluZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZHJhZnRTZXJ2aWNlOiBEcmFmdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBlcnJvck5vdGlmaWVyU2VydmljZTogRXJyb3JOb3RpZmllclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb252ZXJ0SHJlZlRvUm91dGVyU2VydmljZTogQ29udmVydEhyZWZUb1JvdXRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2NhdGlvbjogTG9jYXRpb24sXG4gICAgcHJpdmF0ZSByZWFkb25seSBjcmY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlOiBTZXNzaW9uU3RvcmFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBycHhUcmFuc2xhdGlvblBpcGU6IFJweFRyYW5zbGF0ZVBpcGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2FkaW5nU2VydmljZTogTG9hZGluZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBsaW5rZWRDYXNlc1NlcnZpY2U6IExpbmtlZENhc2VzU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhc2VGbGFnU3RhdGVTZXJ2aWNlOiBDYXNlRmxhZ1N0YXRlU2VydmljZVxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNhbGxiYWNrRXJyb3JzU3ViamVjdCA9IHRoaXMuZXJyb3JOb3RpZmllclNlcnZpY2UuZXJyb3JTb3VyY2UucGlwZShmaWx0ZXIoKHgpID0+IHtcbiAgICAgIGlmICh4ICYmIHguc3RhdHVzICE9PSA0MDEgJiYgeC5zdGF0dXMgIT09IDQwMykge1xuICAgICAgICB0aGlzLmVycm9yID0geDtcbiAgICAgICAgdGhpcy5pc0V2ZW50QnV0dG9uQ2xpY2tlZCA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KSk7XG4gICAgXG4gICAgaW5pdERpYWxvZygpO1xuICAgIHRoaXMuaW5pdCgpO1xuXG4gICAgdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2U/LnJlbW92ZUl0ZW0oJ2V2ZW50VXJsJyk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuY29udmVydEhyZWZUb1JvdXRlclNlcnZpY2U/LmdldEhyZWZNYXJrZG93bkxpbmtDb250ZW50KCkuc3Vic2NyaWJlKChocmVmTWFya2Rvd25MaW5rQ29udGVudDogc3RyaW5nKSA9PiB7XG4gICAgICAvLyBkbyBub3QgY29udmVydCByb3V0ZXIgd2l0aCBpbml0aWFsIGRlZmF1bHQgdmFsdWU7IGNvbnZlcnQgdG8gcm91dGVyIG9ubHkgb24gdXBkYXRlZCBsaW5rIGNvbnRlbnRcbiAgICAgIGlmIChocmVmTWFya2Rvd25MaW5rQ29udGVudCAhPT0gJ0RlZmF1bHQnKSB7XG4gICAgICAgIHRoaXMuY29udmVydEhyZWZUb1JvdXRlclNlcnZpY2UuY2FsbEFuZ3VsYXJSb3V0ZXIoaHJlZk1hcmtkb3duTGlua0NvbnRlbnQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuYWN0aXZpdHlQb2xsaW5nU2VydmljZS5pc0VuYWJsZWQgJiYgIXRoaXMuYWN0aXZpdHlTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgdGhpcy5hY3Rpdml0eVN1YnNjcmlwdGlvbiA9IHRoaXMucG9zdFZpZXdBY3Rpdml0eSgpLnN1YnNjcmliZSgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5jaGVja1JvdXRlQW5kU2V0Q2FzZVZpZXdUYWIoKTtcblxuICAgIC8vIENoZWNrIGZvciBhY3RpdmUgQ2FzZSBGbGFnc1xuICAgIHRoaXMuYWN0aXZlQ2FzZUZsYWdzID0gdGhpcy5oYXNBY3RpdmVDYXNlRmxhZ3MoKTtcbiAgICB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5yZXNldExpbmtlZENhc2VEYXRhKCk7XG4gICAgdGhpcy5jYXNlRmxhZ1N0YXRlU2VydmljZS5yZXNldEluaXRpYWxDYXNlRmxhZ3MoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMgJiYgY2hhbmdlcy5wcmVwZW5kZWRUYWJzICYmICFjaGFuZ2VzLnByZXBlbmRlZFRhYnMuZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMuaW5pdCgpO1xuICAgICAgdGhpcy5jcmYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgdGhpcy5vcmdhbmlzZVRhYlBvc2l0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzUHJpbnRFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfdHlwZS5wcmludEVuYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWN0aXZpdHlQb2xsaW5nU2VydmljZS5pc0VuYWJsZWQpIHtcbiAgICAgIHRoaXMudW5zdWJzY3JpYmUodGhpcy5hY3Rpdml0eVN1YnNjcmlwdGlvbik7XG4gICAgfVxuICAgIGlmICghdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmNhc2UpIHtcbiAgICAgIHRoaXMudW5zdWJzY3JpYmUodGhpcy5jYXNlU3Vic2NyaXB0aW9uKTtcbiAgICB9XG4gICAgdGhpcy51bnN1YnNjcmliZSh0aGlzLmNhbGxiYWNrRXJyb3JzU3ViamVjdCk7XG4gICAgdGhpcy51bnN1YnNjcmliZSh0aGlzLmVycm9yU3Vic2NyaXB0aW9uKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlKHRoaXMuc3Vic2NyaXB0aW9uKTtcbiAgICB0aGlzLnN1YnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBwdWJsaWMgdW5zdWJzY3JpYmUoc3Vic2NyaXB0aW9uOiBhbnkpIHtcbiAgICBpZiAoc3Vic2NyaXB0aW9uKSB7XG4gICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNoZWNrUm91dGVBbmRTZXRDYXNlVmlld1RhYigpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnMucHVzaCh0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgIC5waXBlKGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogTmF2aWdhdGlvbkVuZCkgPT4ge1xuICAgICAgICBjb25zdCB1cmwgPSBldmVudCAmJiAoZXZlbnQgYXMgYW55KS51cmw7XG4gICAgICAgIGlmICh1cmwpIHtcbiAgICAgICAgICBjb25zdCB0YWJVcmwgPSB1cmwgPyB1cmwuc3BsaXQoJyMnKSA6IG51bGw7XG4gICAgICAgICAgY29uc3QgdGFiID0gdGFiVXJsICYmIHRhYlVybC5sZW5ndGggPiAxID8gdGFiVXJsW3RhYlVybC5sZW5ndGggLSAxXS5yZXBsYWNlQWxsKCclMjAnLCAnICcpIDogJyc7XG4gICAgICAgICAgY29uc3QgbWF0VGFiID0gdGhpcy50YWJHcm91cC5fdGFicy5maW5kKCh4KSA9PiB4LnRleHRMYWJlbC50b0xvd2VyQ2FzZSgpID09PSB0YWIudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgLy8gVXBkYXRlIHNlbGVjdGVkSW5kZXggb25seSBpZiBtYXRUYWIucG9zaXRpb24gaXMgYSBub24temVybyBudW1iZXIgKHBvc2l0aXZlIG9yIG5lZ2F0aXZlKTsgdGhpcyBtZWFucyB0aGVcbiAgICAgICAgICAvLyBtYXRUYWIgaXMgbm90IGFscmVhZHkgc2VsZWN0ZWQgKHBvc2l0aW9uIGlzIHJlbGF0aXZlOyBwb3NpdGl2ZSA9IHJpZ2h0LCBuZWdhdGl2ZSA9IGxlZnQpIG9yIGl0IHdvdWxkIGJlIDBcbiAgICAgICAgICBpZiAobWF0VGFiPy5wb3NpdGlvbikge1xuICAgICAgICAgICAgdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4ID0gbWF0VGFiLnBvc2l0aW9uO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSkpO1xuICB9XG5cbiAgcHVibGljIHBvc3RWaWV3QWN0aXZpdHkoKTogT2JzZXJ2YWJsZTxBY3Rpdml0eVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZpdHlQb2xsaW5nU2VydmljZS5wb3N0Vmlld0FjdGl2aXR5KHRoaXMuY2FzZURldGFpbHM/LmNhc2VfaWQpO1xuICB9XG5cbiAgcHVibGljIGNsZWFyRXJyb3JzQW5kV2FybmluZ3MoKTogdm9pZCB7XG4gICAgdGhpcy5yZXNldEVycm9ycygpO1xuICAgIHRoaXMuaWdub3JlV2FybmluZyA9IGZhbHNlO1xuICAgIHRoaXMudHJpZ2dlclRleHQgPSBDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuVFJJR0dFUl9URVhUX1NUQVJUO1xuICAgIHRoaXMuaXNFdmVudEJ1dHRvbkNsaWNrZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhcHBseVRyaWdnZXIodHJpZ2dlcjogQ2FzZVZpZXdUcmlnZ2VyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaXNFdmVudEJ1dHRvbkNsaWNrZWQpe1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmlzRXZlbnRCdXR0b25DbGlja2VkID0gdHJ1ZTtcbiAgICBjb25zdCBzcGlubmVyID0gdGhpcy5sb2FkaW5nU2VydmljZS5yZWdpc3RlcigpO1xuICAgIHRoaXMubG9hZGluZ1NlcnZpY2UuYWRkU2hhcmVkU3Bpbm5lcihzcGlubmVyKTtcbiAgICB0aGlzLmVycm9yTm90aWZpZXJTZXJ2aWNlLmFubm91bmNlRXJyb3IobnVsbCk7XG4gICAgY29uc3QgdGhlUXVlcnlQYXJhbXM6IFBhcmFtcyA9IHt9O1xuXG4gICAgaWYgKHRoaXMuaWdub3JlV2FybmluZykge1xuICAgICAgdGhlUXVlcnlQYXJhbXNbJ2lnbm9yZVdhcm5pbmcnXSA9IHRoaXMuaWdub3JlV2FybmluZztcbiAgICB9XG5cbiAgICAvLyB3ZSBtYXkgbmVlZCB0byB0YWtlIGNhcmUgb2YgZGlmZmVyZW50IHRyaWdnZXJzIGluIHRoZSBmdXR1cmVcbiAgICBpZiAodHJpZ2dlci5pZCA9PT0gQ2FzZVZpZXdFdmVudElkcy5RdWVyeU1hbmFnZW1lbnRSYWlzZVF1ZXJ5KSB7XG4gICAgICBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYC9xdWVyeS1tYW5hZ2VtZW50L3F1ZXJ5LyR7dGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkfWBdKTtcbiAgICAgIHRoaXMubG9hZGluZ1NlcnZpY2UudW5yZWdpc3RlcihzcGlubmVyKTtcbiAgICB9IGVsc2UgaWYgKHRyaWdnZXIuaWQgPT09IENhc2VWaWV3RXZlbnRJZHMuREVMRVRFKSB7XG4gICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKERlbGV0ZU9yQ2FuY2VsRGlhbG9nQ29tcG9uZW50LCB0aGlzLmRpYWxvZ0NvbmZpZyk7XG4gICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdCA9PT0gJ0RlbGV0ZScpIHtcbiAgICAgICAgICB0aGlzLmRyYWZ0U2VydmljZS5kZWxldGVEcmFmdCh0aGlzLmNhc2VEZXRhaWxzLmNhc2VfaWQpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25Ob3RpZmllclNlcnZpY2UuYW5ub3VuY2VOYXZpZ2F0aW9uKHsgYWN0aW9uOiBOYXZpZ2F0aW9uT3JpZ2luLkRSQUZUX0RFTEVURUQgfSk7XG4gICAgICAgICAgICB9LCBfID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uTm90aWZpZXJTZXJ2aWNlLmFubm91bmNlTmF2aWdhdGlvbih7IGFjdGlvbjogTmF2aWdhdGlvbk9yaWdpbi5FUlJPUl9ERUxFVElOR19EUkFGVCB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNEcmFmdCgpICYmIHRyaWdnZXIuaWQgIT09IENhc2VWaWV3RXZlbnRJZHMuREVMRVRFKSB7XG4gICAgICB0aGVRdWVyeVBhcmFtc1tEUkFGVF9RVUVSWV9QQVJBTV0gPSB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfaWQ7XG4gICAgICB0aGVRdWVyeVBhcmFtc1tDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuT1JJR0lOX1FVRVJZX1BBUkFNXSA9ICd2aWV3RHJhZnQnO1xuICAgICAgdGhpcy5uYXZpZ2F0aW9uTm90aWZpZXJTZXJ2aWNlLmFubm91bmNlTmF2aWdhdGlvbihcbiAgICAgICAge1xuICAgICAgICAgIGFjdGlvbjogTmF2aWdhdGlvbk9yaWdpbi5EUkFGVF9SRVNVTUVELFxuICAgICAgICAgIGppZDogdGhpcy5jYXNlRGV0YWlscy5jYXNlX3R5cGUuanVyaXNkaWN0aW9uLmlkLFxuICAgICAgICAgIGN0aWQ6IHRoaXMuY2FzZURldGFpbHMuY2FzZV90eXBlLmlkLFxuICAgICAgICAgIGV0aWQ6IHRyaWdnZXIuaWQsXG4gICAgICAgICAgcXVlcnlQYXJhbXM6IHRoZVF1ZXJ5UGFyYW1zXG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5hdmlnYXRpb25Ob3RpZmllclNlcnZpY2UuYW5ub3VuY2VOYXZpZ2F0aW9uKFxuICAgICAgICB7XG4gICAgICAgICAgYWN0aW9uOiBOYXZpZ2F0aW9uT3JpZ2luLkVWRU5UX1RSSUdHRVJFRCxcbiAgICAgICAgICBxdWVyeVBhcmFtczogdGhlUXVlcnlQYXJhbXMsXG4gICAgICAgICAgZXRpZDogdHJpZ2dlci5pZCxcbiAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYXNUYWJzUHJlc2VudCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zb3J0ZWRUYWJzLmxlbmd0aCA+IDAgfHwgdGhpcy5wcmVwZW5kZWRUYWJzLmxlbmd0aCA+IDAgfHwgdGhpcy5hcHBlbmRlZFRhYnMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIHB1YmxpYyBjYWxsYmFja0Vycm9yc05vdGlmeShjYWxsYmFja0Vycm9yc0NvbnRleHQ6IENhbGxiYWNrRXJyb3JzQ29udGV4dCk6IHZvaWQge1xuICAgIHRoaXMuaWdub3JlV2FybmluZyA9IGNhbGxiYWNrRXJyb3JzQ29udGV4dC5pZ25vcmVXYXJuaW5nO1xuICAgIHRoaXMudHJpZ2dlclRleHQgPSBjYWxsYmFja0Vycm9yc0NvbnRleHQudHJpZ2dlclRleHQ7XG4gICAgdGhpcy5ldmVudElkID0gY2FsbGJhY2tFcnJvcnNDb250ZXh0LmV2ZW50SWQ7XG4gIH1cblxuICBwdWJsaWMgaXNEcmFmdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gRHJhZnQuaXNEcmFmdCh0aGlzLmNhc2VEZXRhaWxzLmNhc2VfaWQpO1xuICB9XG5cbiAgcHVibGljIGlzVHJpZ2dlckJ1dHRvbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5lcnJvclxuICAgICAgJiYgdGhpcy5lcnJvci5jYWxsYmFja0Vycm9yc1xuICAgICAgJiYgdGhpcy5lcnJvci5jYWxsYmFja0Vycm9ycy5sZW5ndGgpXG4gICAgICB8fCAodGhpcy5lcnJvclxuICAgICAgICAmJiB0aGlzLmVycm9yLmRldGFpbHNcbiAgICAgICAgJiYgdGhpcy5lcnJvci5kZXRhaWxzLmZpZWxkX2Vycm9yc1xuICAgICAgICAmJiB0aGlzLmVycm9yLmRldGFpbHMuZmllbGRfZXJyb3JzLmxlbmd0aCk7XG4gIH1cblxuICBwdWJsaWMgb3JnYW5pc2VUYWJQb3NpdGlvbigpOiB2b2lkIHtcbiAgICBsZXQgbWF0VGFiOiBNYXRUYWI7XG4gICAgY29uc3QgdXJsID0gdGhpcy5sb2NhdGlvbi5wYXRoKHRydWUpO1xuICAgIGxldCBoYXNoVmFsdWUgPSB1cmwuc3Vic3RyaW5nKHVybC5pbmRleE9mKCcjJykgKyAxKTtcbiAgICBpZiAoIXVybC5pbmNsdWRlcygnIycpICYmICF1cmwuaW5jbHVkZXMoJ3JvbGVzLWFuZC1hY2Nlc3MnKSAmJiAhdXJsLmluY2x1ZGVzKCd0YXNrcycpICYmICF1cmwuaW5jbHVkZXMoJ2hlYXJpbmdzJykpIHtcbiAgICAgIGNvbnN0IHBhdGhzID0gdXJsLnNwbGl0KCcvJyk7XG4gICAgICAvLyBsYXN0UGF0aCBjYW4gYmUgL2Nhc2VJZCwgb3IgdGhlIHRhYnMgL3Rhc2tzLCAvaGVhcmluZ3MgZXRjLlxuICAgICAgY29uc3QgbGFzdFBhdGggPSBkZWNvZGVVUklDb21wb25lbnQocGF0aHNbcGF0aHMubGVuZ3RoIC0gMV0pO1xuICAgICAgbGV0IGZvdW5kVGFiOiBDYXNlVGFiID0gbnVsbDtcbiAgICAgIGlmICghdGhpcy5wcmVwZW5kZWRUYWJzKSB7XG4gICAgICAgIHRoaXMucHJlcGVuZGVkVGFicyA9IFtdO1xuICAgICAgfVxuICAgICAgY29uc3QgYWRkaXRpb25hbFRhYnMgPSBbLi4udGhpcy5wcmVwZW5kZWRUYWJzLCAuLi50aGlzLmFwcGVuZGVkVGFic107XG4gICAgICBpZiAoYWRkaXRpb25hbFRhYnMgJiYgYWRkaXRpb25hbFRhYnMubGVuZ3RoKSB7XG4gICAgICAgIGZvdW5kVGFiID0gYWRkaXRpb25hbFRhYnMuZmluZCgoY2FzZVRhYjogQ2FzZVRhYikgPT4gY2FzZVRhYi5pZC50b0xvd2VyQ2FzZSgpID09PSBsYXN0UGF0aC50b0xvd2VyQ2FzZSgpKTtcbiAgICAgIH1cbiAgICAgIC8vIGZvdW5kIHRhc2tzIG9yIGhlYXJpbmcgdGFiXG4gICAgICBpZiAoZm91bmRUYWIpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydjYXNlcycsICdjYXNlLWRldGFpbHMnLCB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfaWQsIGZvdW5kVGFiLmlkXSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgbWF0VGFiID0gdGhpcy50YWJHcm91cC5fdGFicy5maW5kKCh4KSA9PiB4LnRleHRMYWJlbCA9PT0gZm91bmRUYWIubGFiZWwpO1xuICAgICAgICAgIC8vIFVwZGF0ZSBzZWxlY3RlZEluZGV4IG9ubHkgaWYgbWF0VGFiLnBvc2l0aW9uIGlzIGEgbm9uLXplcm8gbnVtYmVyIChwb3NpdGl2ZSBvciBuZWdhdGl2ZSk7IHRoaXMgbWVhbnMgdGhlXG4gICAgICAgICAgLy8gbWF0VGFiIGlzIG5vdCBhbHJlYWR5IHNlbGVjdGVkIChwb3NpdGlvbiBpcyByZWxhdGl2ZTsgcG9zaXRpdmUgPSByaWdodCwgbmVnYXRpdmUgPSBsZWZ0KSBvciBpdCB3b3VsZCBiZSAwXG4gICAgICAgICAgaWYgKG1hdFRhYj8ucG9zaXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9IG1hdFRhYi5wb3NpdGlvbjtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBsYXN0IHBhdGggaXMgY2FzZUlkXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBzb3J0IHdpdGggdGhlIG9yZGVyIG9mIENDRCBwcmVkZWZpbmVkIHRhYnNcbiAgICAgICAgdGhpcy5jYXNlRGV0YWlscy50YWJzLnNvcnQoKGFUYWIsIGJUYWIpID0+IGFUYWIub3JkZXIgPiBiVGFiLm9yZGVyID8gMSA6IChiVGFiLm9yZGVyID4gYVRhYi5vcmRlciA/IC0xIDogMCkpO1xuICAgICAgICAvLyBzZWxlY3QgdGhlIGZpcnN0IHRhYiBjaGVja2luZyBpZiB0aGUgdGFiIGlzIHZpc2libGVcbiAgICAgICAgY29uc3QgcHJlU2VsZWN0VGFiOiBDYXNlVGFiID0gdGhpcy5maW5kUHJlU2VsZWN0ZWRBY3RpdmVUYWIoKTtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydjYXNlcycsICdjYXNlLWRldGFpbHMnLCB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfaWRdLCB7IGZyYWdtZW50OiBwcmVTZWxlY3RUYWIubGFiZWwgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgbWF0VGFiID0gdGhpcy50YWJHcm91cC5fdGFicy5maW5kKCh4KSA9PiB4LnRleHRMYWJlbCA9PT0gcHJlU2VsZWN0VGFiLmxhYmVsKTtcbiAgICAgICAgICAvLyBVcGRhdGUgc2VsZWN0ZWRJbmRleCBvbmx5IGlmIG1hdFRhYi5wb3NpdGlvbiBpcyBhIG5vbi16ZXJvIG51bWJlciAocG9zaXRpdmUgb3IgbmVnYXRpdmUpOyB0aGlzIG1lYW5zIHRoZVxuICAgICAgICAgIC8vIG1hdFRhYiBpcyBub3QgYWxyZWFkeSBzZWxlY3RlZCAocG9zaXRpb24gaXMgcmVsYXRpdmU7IHBvc2l0aXZlID0gcmlnaHQsIG5lZ2F0aXZlID0gbGVmdCkgb3IgaXQgd291bGQgYmUgMFxuICAgICAgICAgIGlmIChtYXRUYWI/LnBvc2l0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSBtYXRUYWIucG9zaXRpb247XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcmVnRXhwID0gbmV3IFJlZ0V4cChDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuVU5JQ09ERV9TUEFDRSwgJ2cnKTtcbiAgICAgIGhhc2hWYWx1ZSA9IGhhc2hWYWx1ZS5yZXBsYWNlKHJlZ0V4cCwgQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50LkVNUFRZX1NQQUNFKTtcbiAgICAgIGlmIChoYXNoVmFsdWUuaW5jbHVkZXMoJ2hlYXJpbmdzJykpIHtcbiAgICAgICAgaGFzaFZhbHVlID0gJ2hlYXJpbmdzJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChoYXNoVmFsdWUuaW5jbHVkZXMoJ3JvbGVzLWFuZC1hY2Nlc3MnKSB8fCBoYXNoVmFsdWUuaW5jbHVkZXMoJ3Rhc2tzJykpIHtcbiAgICAgICAgICBoYXNoVmFsdWUgPSBoYXNoVmFsdWUuaW5jbHVkZXMoJ3JvbGVzLWFuZC1hY2Nlc3MnKSA/ICdyb2xlcyBhbmQgYWNjZXNzJyA6ICd0YXNrcyc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG1hdFRhYiA9IHRoaXMudGFiR3JvdXAuX3RhYnMuZmluZCgoeCkgPT5cbiAgICAgICAgeC50ZXh0TGFiZWwucmVwbGFjZShDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuRU1QVFlfU1BBQ0UsICcnKS50b0xvd2VyQ2FzZSgpID09PVxuICAgICAgICBoYXNoVmFsdWUucmVwbGFjZShDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuRU1QVFlfU1BBQ0UsICcnKS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgIC8vIFVwZGF0ZSBzZWxlY3RlZEluZGV4IG9ubHkgaWYgbWF0VGFiLnBvc2l0aW9uIGlzIGEgbm9uLXplcm8gbnVtYmVyIChwb3NpdGl2ZSBvciBuZWdhdGl2ZSk7IHRoaXMgbWVhbnMgdGhlXG4gICAgICAvLyBtYXRUYWIgaXMgbm90IGFscmVhZHkgc2VsZWN0ZWQgKHBvc2l0aW9uIGlzIHJlbGF0aXZlOyBwb3NpdGl2ZSA9IHJpZ2h0LCBuZWdhdGl2ZSA9IGxlZnQpIG9yIGl0IHdvdWxkIGJlIDBcbiAgICAgIGlmIChtYXRUYWI/LnBvc2l0aW9uKSB7XG4gICAgICAgIHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9IG1hdFRhYi5wb3NpdGlvbjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZmluZFByZVNlbGVjdGVkQWN0aXZlVGFiKCk6IENhc2VUYWIge1xuICAgIGNvbnN0IHVuT3JkZXJlZFRhYnNJblNvcnRlZFRhYnMgPSB0aGlzLmNhc2VEZXRhaWxzLnRhYnNcbiAgICAgIC5maWx0ZXIoKHRhYikgPT4gIXRhYi5vcmRlciAmJiB0aGlzLnNvcnRlZFRhYnMuc29tZSgoc29ydGVkVGFiKSA9PiBzb3J0ZWRUYWIuaWQgPT09IHRhYi5pZCkpO1xuICAgIHJldHVybiB1bk9yZGVyZWRUYWJzSW5Tb3J0ZWRUYWJzLmxlbmd0aCA/IHVuT3JkZXJlZFRhYnNJblNvcnRlZFRhYnNbMF0gOiB0aGlzLnNvcnRlZFRhYnNbMF07XG4gIH1cblxuICAvLyBSZWZhY3RvcmVkIHVuZGVyIEVYVUktMTEwIHRvIGFkZHJlc3MgaW5maW5pdGUgdGFiIGxvb3AgdG8gdXNlIHRhYkluZGV4Q2hhbmdlZCBpbnN0ZWFkXG4gIHB1YmxpYyB0YWJDaGFuZ2VkKHRhYkluZGV4Q2hhbmdlZDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgbWF0VGFiID0gdGhpcy50YWJHcm91cC5fdGFicy5maW5kKHRhYiA9PiB0YWIuaXNBY3RpdmUpO1xuICAgIGNvbnN0IHRhYkxhYmVsID0gbWF0VGFiLnRleHRMYWJlbDtcbiAgICAvLyBzb3J0ZWRUYWJzIGFyZSBmcmFnbWVudHNcbiAgICAvLyBhcHBlbmRlZC9wcmVwZXBlbmRlZCB0YWJzIHVzZSByb3V0ZXIgbmF2aWdhdGlvblxuICAgIGlmICgodGFiSW5kZXhDaGFuZ2VkIDw9IDEgJiYgdGhpcy5wcmVwZW5kZWRUYWJzICYmIHRoaXMucHJlcGVuZGVkVGFicy5sZW5ndGgpIHx8XG4gICAgICAodGhpcy5hcHBlbmRlZFRhYnM/Lmxlbmd0aCAmJiAodGFiTGFiZWwgPT09IHRoaXMuSEVBUklOR1NfVEFCX0xBQkVMXG4gICAgICAgIHx8IHRhYkxhYmVsID09PSB0aGlzLnJweFRyYW5zbGF0aW9uUGlwZS50cmFuc2Zvcm0odGhpcy5IRUFSSU5HU19UQUJfTEFCRUwpKSkpIHtcbiAgICAgIC8vIEhhY2sgdG8gZ2V0IElEIGZyb20gdGFiIGFzIGl0J3Mgbm90IGVhc2lseSBhY2hpZXZlZCB0aHJvdWdoIEFuZ3VsYXIgTWF0ZXJpYWwgVGFic1xuICAgICAgY29uc3QgdGFiID0gbWF0VGFiWydfdmlld0NvbnRhaW5lclJlZiddIGFzIFZpZXdDb250YWluZXJSZWY7XG4gICAgICBjb25zdCBpZCA9ICh0YWIuZWxlbWVudC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5pZDtcbiAgICAgIC8vIGNhc2VzL2Nhc2UtZGV0YWlscy86Y2FzZUlkL2hlYXJpbmdzXG4gICAgICAvLyBjYXNlcy9jYXNlLWRldGFpbHMvOmNhc2VJZC9yb2xlcy1hbmQtYWNjZXNzXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbaWRdLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJvdXRpbmcgaGVyZSBpcyBiYXNlZCBvbiB0YWIgbGFiZWwsIG5vdCBpZGVhbFxuICAgICAgLy8gY2FzZXMvY2FzZS1kZXRhaWxzLzpjYXNlSWQjdGFiTGFiZWxcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnY2FzZXMnLCAnY2FzZS1kZXRhaWxzJywgdGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkXSwgeyBmcmFnbWVudDogdGFiTGFiZWwgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uTGlua0NsaWNrZWQodHJpZ2dlck91dHB1dEV2ZW50VGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gR2V0IHRoZSAqYWJzb2x1dGUqIChub3QgcmVsYXRpdmUpIGluZGV4IG9mIHRoZSB0YXJnZXQgdGFiIGFuZCBzZXQgYXMgdGhlIGFjdGl2ZSB0YWIsIHVzaW5nIHRoZSBzZWxlY3RlZEluZGV4IGlucHV0XG4gICAgLy8gb2YgbWF0LXRhYi1ncm91cCAoYm91bmQgdG8gc2VsZWN0ZWRUYWJJbmRleClcbiAgICBjb25zdCB0YXJnZXRUYWJJbmRleCA9IHRoaXMudGFiR3JvdXAuX3RhYnMudG9BcnJheSgpLmZpbmRJbmRleCh0YWIgPT4gdGFiLnRleHRMYWJlbCA9PT0gdHJpZ2dlck91dHB1dEV2ZW50VGV4dCk7XG4gICAgaWYgKHRhcmdldFRhYkluZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IHRhcmdldFRhYkluZGV4O1xuICAgICAgdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4ID0gdGFyZ2V0VGFiSW5kZXg7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhc0FjdGl2ZUNhc2VGbGFncygpOiBib29sZWFuIHtcbiAgICAvLyBEZXRlcm1pbmUgd2hpY2ggdGFiIGNvbnRhaW5zIHRoZSBGbGFnTGF1bmNoZXIgQ2FzZUZpZWxkIHR5cGUsIGZyb20gdGhlIENhc2VWaWV3IG9iamVjdCBpbiB0aGUgc25hcHNob3QgZGF0YVxuICAgIGNvbnN0IGNhc2VGbGFnc1RhYiA9IHRoaXMuY2FzZURldGFpbHM/LnRhYnNcbiAgICAgID8gKHRoaXMuY2FzZURldGFpbHMudGFicykuZmlsdGVyKFxuICAgICAgICB0YWIgPT4gdGFiLmZpZWxkcyAmJiB0YWIuZmllbGRzLnNvbWUoY2FzZUZpZWxkID0+IEZpZWxkc1V0aWxzLmlzRmxhZ0xhdW5jaGVyQ2FzZUZpZWxkKGNhc2VGaWVsZCkpKVswXVxuICAgICAgOiBudWxsO1xuXG4gICAgaWYgKGNhc2VGbGFnc1RhYikge1xuICAgICAgLy8gQ2hlY2sgd2hldGhlciB0aGUgRmxhZ0xhdW5jaGVyIENhc2VGaWVsZCBpcyBpbiBleHRlcm5hbCBtb2RlIG9yIG5vdDsgdGhlIG5vdGlmaWNhdGlvbiBiYW5uZXIgc2hvdWxkIG5vdCBiZVxuICAgICAgLy8gZGlzcGxheWVkIGZvciBleHRlcm5hbCB1c2Vyc1xuICAgICAgdGhpcy5jYXNlRmxhZ3NFeHRlcm5hbFVzZXIgPSBjYXNlRmxhZ3NUYWIuZmllbGRzLmZpbmQoXG4gICAgICAgIGNhc2VGaWVsZCA9PiBGaWVsZHNVdGlscy5pc0ZsYWdMYXVuY2hlckNhc2VGaWVsZChjYXNlRmllbGQpKS5kaXNwbGF5X2NvbnRleHRfcGFyYW1ldGVyID09PSB0aGlzLmNhc2VGbGFnc1JlYWRFeHRlcm5hbE1vZGU7XG5cbiAgICAgIC8vIEdldCB0aGUgYWN0aXZlIGNhc2UgZmxhZ3MgY291bnRcbiAgICAgIC8vIENhbm5vdCBmaWx0ZXIgb3V0IGFueXRoaW5nIG90aGVyIHRoYW4gdG8gcmVtb3ZlIHRoZSBGbGFnTGF1bmNoZXIgQ2FzZUZpZWxkIGJlY2F1c2UgRmxhZ3MgZmllbGRzIG1heSBiZVxuICAgICAgLy8gY29udGFpbmVkIGluIG90aGVyIENhc2VGaWVsZCBpbnN0YW5jZXMsIGVpdGhlciBhcyBhIHN1Yi1maWVsZCBvZiBhIENvbXBsZXggZmllbGQsIG9yIGZpZWxkcyBpbiBhIGNvbGxlY3Rpb25cbiAgICAgIC8vIChvciBzdWItZmllbGRzIG9mIENvbXBsZXggZmllbGRzIGluIGEgY29sbGVjdGlvbilcbiAgICAgIGNvbnN0IGFjdGl2ZUNhc2VGbGFncyA9IGNhc2VGbGFnc1RhYi5maWVsZHNcbiAgICAgICAgLmZpbHRlcihjYXNlRmllbGQgPT4gIUZpZWxkc1V0aWxzLmlzRmxhZ0xhdW5jaGVyQ2FzZUZpZWxkKGNhc2VGaWVsZCkgJiYgY2FzZUZpZWxkLnZhbHVlKVxuICAgICAgICAucmVkdWNlKChhY3RpdmUsIGNhc2VGbGFnKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIEZpZWxkc1V0aWxzLmNvdW50QWN0aXZlRmxhZ3NJbkNhc2VGaWVsZChhY3RpdmUsIGNhc2VGbGFnKTtcbiAgICAgICAgfSwgMCk7XG5cbiAgICAgIGlmIChhY3RpdmVDYXNlRmxhZ3MgPiAwKSB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gYWN0aXZlQ2FzZUZsYWdzID4gMVxuICAgICAgICAgID8gYFRoZXJlIGFyZSAke2FjdGl2ZUNhc2VGbGFnc30gYWN0aXZlIGZsYWdzIG9uIHRoaXMgY2FzZS5gIDogJ1RoZXJlIGlzIDEgYWN0aXZlIGZsYWcgb24gdGhpcyBjYXNlLic7XG4gICAgICAgIC8vIEluaXRpYWxpc2UgYW5kIGRpc3BsYXkgbm90aWZpY2F0aW9uIGJhbm5lclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkJhbm5lckNvbmZpZyA9IHtcbiAgICAgICAgICBiYW5uZXJUeXBlOiBOb3RpZmljYXRpb25CYW5uZXJUeXBlLklORk9STUFUSU9OLFxuICAgICAgICAgIGhlYWRpbmdUZXh0OiAnSW1wb3J0YW50JyxcbiAgICAgICAgICBkZXNjcmlwdGlvbixcbiAgICAgICAgICBzaG93TGluazogdHJ1ZSxcbiAgICAgICAgICBsaW5rVGV4dDogJ1ZpZXcgY2FzZSBmbGFncycsXG4gICAgICAgICAgdHJpZ2dlck91dHB1dEV2ZW50OiB0cnVlLFxuICAgICAgICAgIHRyaWdnZXJPdXRwdXRFdmVudFRleHQ6IGNhc2VGbGFnc1RhYi5sYWJlbCxcbiAgICAgICAgICBoZWFkZXJDbGFzczogTm90aWZpY2F0aW9uQmFubmVySGVhZGVyQ2xhc3MuSU5GT1JNQVRJT05cbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgYSBDYXNlRmllbGQgaXMgdG8gYmUgZGlzcGxheWVkIHdpdGhvdXQgYSBsYWJlbCwgYXMgaXMgZXhwZWN0ZWQgZm9yIGFsbCBDb21wb25lbnRMYXVuY2hlci10eXBlXG4gICAqIGZpZWxkcy5cbiAgICogQHBhcmFtIGNhc2VGaWVsZCBUaGUgYENhc2VGaWVsZGAgaW5zdGFuY2UgdG8gY2hlY2tcbiAgICogQHJldHVybnMgYHRydWVgIGlmIGl0IHNob3VsZCBub3QgaGF2ZSBhIGxhYmVsOyBgZmFsc2VgIG90aGVyd2lzZVxuICAgKi9cbiAgcHVibGljIGlzRmllbGRUb0hhdmVOb0xhYmVsKGNhc2VGaWVsZDogQ2FzZUZpZWxkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGNhc2VGaWVsZC5maWVsZF90eXBlLnR5cGUgPT09ICdDb21wb25lbnRMYXVuY2hlcidcbiAgICAgICYmIGNhc2VGaWVsZC5kaXNwbGF5X2NvbnRleHRfcGFyYW1ldGVyID09PSAnI0FSR1VNRU5UKENhc2VGaWxlVmlldyknO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0KCk6IHZvaWQge1xuICAgIC8vIENsb25lIGFuZCBzb3J0IHRhYnMgYXJyYXlcbiAgICB0aGlzLnNvcnRlZFRhYnMgPSB0aGlzLm9yZGVyU2VydmljZS5zb3J0KHRoaXMuY2FzZURldGFpbHM/LnRhYnMpO1xuICAgIHRoaXMuY2FzZUZpZWxkcyA9IHRoaXMuZ2V0VGFiRmllbGRzKCk7XG4gICAgdGhpcy5zb3J0ZWRUYWJzID0gdGhpcy5zb3J0VGFiRmllbGRzQW5kRmlsdGVyVGFicyh0aGlzLnNvcnRlZFRhYnMpO1xuICAgIHRoaXMuZm9ybUdyb3VwID0gdGhpcy5idWlsZEZvcm1Hcm91cCh0aGlzLmNhc2VGaWVsZHMpO1xuICAgIGlmICh0aGlzLmNhc2VEZXRhaWxzPy50cmlnZ2VycyAmJiB0aGlzLmVycm9yKSB7XG4gICAgICB0aGlzLnJlc2V0RXJyb3JzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzb3J0VGFiRmllbGRzQW5kRmlsdGVyVGFicyh0YWJzOiBDYXNlVGFiW10pOiBDYXNlVGFiW10ge1xuICAgIHJldHVybiB0YWJzPy5tYXAodGFiID0+IE9iamVjdC5hc3NpZ24oe30sIHRhYiwgeyBmaWVsZHM6IHRoaXMub3JkZXJTZXJ2aWNlLnNvcnQodGFiLmZpZWxkcykgfSkpXG4gICAgICAuZmlsdGVyKHRhYiA9PiBTaG93Q29uZGl0aW9uLmdldEluc3RhbmNlKHRhYi5zaG93X2NvbmRpdGlvbikubWF0Y2hCeUNvbnRleHRGaWVsZHModGhpcy5jYXNlRmllbGRzKSk7XG4gIH1cblxuICBwcml2YXRlIGdldFRhYkZpZWxkcygpOiBDYXNlRmllbGRbXSB7XG4gICAgY29uc3QgY2FzZURhdGFGaWVsZHMgPSB0aGlzLnNvcnRlZFRhYnM/LnJlZHVjZSgoYWNjLCB0YWIpID0+IHtcbiAgICAgIHJldHVybiBhY2MuY29uY2F0KHBsYWluVG9DbGFzcyhDYXNlRmllbGQsIHRhYi5maWVsZHMpKTtcbiAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4gY2FzZURhdGFGaWVsZHM/LmNvbmNhdCh0aGlzLmNhc2VEZXRhaWxzLm1ldGFkYXRhRmllbGRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3IgRVVJLTM4MjU6XG4gICAqIEJ1aWxkcyBhIEZvcm1Hcm91cCBmcm9tIGFsbCB0aGUgQ2FzZUZpZWxkcyBjb250YWluZWQgd2l0aGluIHRoZSB2aWV3LlxuICAgKiBUaGlzIEZvcm1Hcm91cCBpcyBuZWNlc3NhcnkgZm9yIGV2YWx1YXRpb24gdGhlIHNob3cvaGlkZSBjb25kaXRpb25zIG9mXG4gICAqIGZpZWxkcyB0aGF0IGFyZSBkZXBlbmRlbnQgb24gYSBmaWVsZCBvbmx5IGF2YWlsYWJsZSBvbiBhIERJRkZFUkVOVCB0YWIuXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkRm9ybUdyb3VwKGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdKTogRm9ybUdyb3VwIHtcbiAgICBsZXQgdmFsdWU6IG9iamVjdCA9IHt9O1xuICAgIGlmIChjYXNlRmllbGRzKSB7XG4gICAgICBjYXNlRmllbGRzLmZvckVhY2goY2FzZUZpZWxkID0+IHtcbiAgICAgICAgdmFsdWUgPSB7XG4gICAgICAgICAgLi4udmFsdWUsXG4gICAgICAgICAgW2Nhc2VGaWVsZC5pZF06IGNhc2VGaWVsZC52YWx1ZVxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgRm9ybUdyb3VwKHsgZGF0YTogbmV3IEZvcm1Db250cm9sKHZhbHVlKSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRFcnJvcnMoKTogdm9pZCB7XG4gICAgdGhpcy5lcnJvck5vdGlmaWVyU2VydmljZS5hbm5vdW5jZUVycm9yKG51bGwpO1xuICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmNsZWFyKCk7XG4gIH1cbn1cbiIsIjwhLS0gR2VuZXJpYyBlcnJvciBoZWFkaW5nIGFuZCBlcnJvciBtZXNzYWdlIHRvIGJlIGRpc3BsYXllZCBvbmx5IGlmIHRoZXJlIGFyZSBubyBzcGVjaWZpYyBjYWxsYmFjayBlcnJvcnMgb3Igd2FybmluZ3MsIG9yIG5vIGVycm9yIGRldGFpbHMgLS0+XG48ZGl2ICpuZ0lmPVwiZXJyb3IgJiYgIShlcnJvci5jYWxsYmFja0Vycm9ycyB8fCBlcnJvci5jYWxsYmFja1dhcm5pbmdzIHx8IGVycm9yLmRldGFpbHMpXCIgY2xhc3M9XCJlcnJvci1zdW1tYXJ5XCJcbiAgICAgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbGxlZGJ5PVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktaGVhZGluZ1wiIHRhYmluZGV4PVwiLTFcIj5cbiAgPGgxIGNsYXNzPVwiaGVhZGluZy1oMSBlcnJvci1zdW1tYXJ5LWhlYWRpbmdcIiBpZD1cImVkaXQtY2FzZS1ldmVudF9lcnJvci1zdW1tYXJ5LWhlYWRpbmdcIj5cbiAgICB7eydTb21ldGhpbmcgd2VudCB3cm9uZycgfCBycHhUcmFuc2xhdGV9fVxuICA8L2gxPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeV9fYm9keVwiIGlkPVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktYm9keVwiPlxuICAgIDxwPnt7XCJXZSdyZSB3b3JraW5nIHRvIGZpeCB0aGUgcHJvYmxlbS4gVHJ5IGFnYWluIHNob3J0bHkuXCIgfCBycHhUcmFuc2xhdGV9fTwvcD5cbiAgICA8cD5cbiAgICAgIDxhIGhyZWY9XCJnZXQtaGVscFwiIHRhcmdldD1cIl9ibGFua1wiPlxuICAgICAgICB7e1wiQ29udGFjdCB1c1wiIHwgcnB4VHJhbnNsYXRlfX08L2E+IHt7XCJpZiB5b3UncmUgc3RpbGwgaGF2aW5nIHByb2JsZW1zLlwiIHwgcnB4VHJhbnNsYXRlfX1cbiAgICA8L3A+XG4gIDwvZGl2PlxuPC9kaXY+XG48IS0tIENhbGxiYWNrIGVycm9yIGhlYWRpbmcgYW5kIGVycm9yIG1lc3NhZ2UgdG8gYmUgZGlzcGxheWVkIGlmIHRoZXJlIGFyZSBzcGVjaWZpYyBlcnJvciBkZXRhaWxzIC0tPlxuPGRpdiAqbmdJZj1cImVycm9yICYmIGVycm9yLmRldGFpbHNcIiBjbGFzcz1cImVycm9yLXN1bW1hcnlcIiByb2xlPVwiZ3JvdXBcIlxuICAgICBhcmlhLWxhYmVsbGVkYnk9XCJlZGl0LWNhc2UtZXZlbnRfZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCIgdGFiaW5kZXg9XCItMVwiPlxuICA8aDIgY2xhc3M9XCJoZWFkaW5nLWgyIGVycm9yLXN1bW1hcnktaGVhZGluZ1wiIGlkPVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktaGVhZGluZ1wiPlxuICAgIHt7J1RoZSBjYWxsYmFjayBkYXRhIGZhaWxlZCB2YWxpZGF0aW9uJyB8IHJweFRyYW5zbGF0ZX19XG4gIDwvaDI+XG4gIDxwPnt7ZXJyb3IubWVzc2FnZSB8IHJweFRyYW5zbGF0ZX19PC9wPlxuICA8dWwgKm5nSWY9XCJlcnJvci5kZXRhaWxzPy5maWVsZF9lcnJvcnNcIiBjbGFzcz1cImVycm9yLXN1bW1hcnktbGlzdFwiPlxuICAgIDxsaSAqbmdGb3I9XCJsZXQgZmllbGRFcnJvciBvZiBlcnJvci5kZXRhaWxzLmZpZWxkX2Vycm9yc1wiPlxuICAgICAge3tmaWVsZEVycm9yLm1lc3NhZ2UgfCBycHhUcmFuc2xhdGV9fVxuICAgIDwvbGk+XG4gIDwvdWw+XG48L2Rpdj5cbjxjY2QtY2FsbGJhY2stZXJyb3JzXG4gIFt0cmlnZ2VyVGV4dENvbnRpbnVlXT1cInRyaWdnZXJUZXh0U3RhcnRcIlxuICBbdHJpZ2dlclRleHRJZ25vcmVdPVwidHJpZ2dlclRleHRJZ25vcmVXYXJuaW5nc1wiXG4gIFtjYWxsYmFja0Vycm9yc1N1YmplY3RdPVwiY2FsbGJhY2tFcnJvcnNTdWJqZWN0XCJcbiAgKGNhbGxiYWNrRXJyb3JzQ29udGV4dCk9XCJjYWxsYmFja0Vycm9yc05vdGlmeSgkZXZlbnQpXCI+XG48L2NjZC1jYWxsYmFjay1lcnJvcnM+XG48Y2NkLWFjdGl2aXR5IFtjYXNlSWRdPVwiY2FzZURldGFpbHMuY2FzZV9pZFwiIFtkaXNwbGF5TW9kZV09XCJCQU5ORVJcIj48L2NjZC1hY3Rpdml0eT5cbjxkaXYgY2xhc3M9XCJncmlkLXJvd1wiPlxuICA8ZGl2IGNsYXNzPVwiY29sdW1uLW9uZS1oYWxmXCI+XG4gICAgPGNjZC1jYXNlLWhlYWRlciBbY2FzZURldGFpbHNdPVwiY2FzZURldGFpbHNcIj48L2NjZC1jYXNlLWhlYWRlcj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FzZS12aWV3ZXItY29udHJvbHNcIiAqbmdJZj1cImhhc1ByaW50ICYmICFpc0RyYWZ0KCkgJiYgaXNQcmludEVuYWJsZWQoKVwiPlxuICAgICAgPGEgaWQ9XCJjYXNlLXZpZXdlci1jb250cm9sLXByaW50XCIgcm91dGVyTGluaz1cInByaW50XCIgY2xhc3M9XCJidXR0b24gYnV0dG9uLXNlY29uZGFyeVwiPnt7J1ByaW50JyB8IHJweFRyYW5zbGF0ZX19PC9hPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImhhc0V2ZW50U2VsZWN0b3JcIiBjbGFzcz1cImNvbHVtbi1vbmUtaGFsZlwiPlxuICAgIDxjY2QtZXZlbnQtdHJpZ2dlciBbaXNEaXNhYmxlZF09XCJpc1RyaWdnZXJCdXR0b25EaXNhYmxlZCgpXCIgW3RyaWdnZXJzXT1cImNhc2VEZXRhaWxzLnRyaWdnZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW3RyaWdnZXJUZXh0XT1cInRyaWdnZXJUZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2V2ZW50SWRdPVwiZXZlbnRJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgIChvblRyaWdnZXJDaGFuZ2UpPVwiY2xlYXJFcnJvcnNBbmRXYXJuaW5ncygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgKG9uVHJpZ2dlclN1Ym1pdCk9XCJhcHBseVRyaWdnZXIoJGV2ZW50KVwiPjwvY2NkLWV2ZW50LXRyaWdnZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiZ3JpZC1yb3dcIiAqbmdJZj1cImFjdGl2ZUNhc2VGbGFncyAmJiAhY2FzZUZsYWdzRXh0ZXJuYWxVc2VyXCI+XG4gIDxkaXYgY2xhc3M9XCJjb2x1bW4tZnVsbFwiPlxuICAgIDxjY2Qtbm90aWZpY2F0aW9uLWJhbm5lciBbbm90aWZpY2F0aW9uQmFubmVyQ29uZmlnXT1cIm5vdGlmaWNhdGlvbkJhbm5lckNvbmZpZ1wiIChsaW5rQ2xpY2tlZCk9XCJvbkxpbmtDbGlja2VkKCRldmVudClcIj5cbiAgICA8L2NjZC1ub3RpZmljYXRpb24tYmFubmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImdyaWQtcm93XCI+XG4gIDxkaXYgY2xhc3M9XCJjb2x1bW4tZnVsbFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNUYWJzUHJlc2VudCgpXCI+XG4gICAgICA8bWF0LXRhYi1ncm91cCAjdGFiR3JvdXAgYW5pbWF0aW9uRHVyYXRpb249XCIwbXNcIiAoc2VsZWN0ZWRJbmRleENoYW5nZSk9XCJ0YWJDaGFuZ2VkKCRldmVudClcIiBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCJcbiAgICAgICAgW3NlbGVjdGVkSW5kZXhdPVwic2VsZWN0ZWRUYWJJbmRleFwiPlxuICAgICAgICA8bWF0LXRhYiAqbmdGb3I9XCJsZXQgdGFiIG9mIHByZXBlbmRlZFRhYnNcIiBbaWRdPVwidGFiLmlkXCIgW2xhYmVsXT1cInRhYi5sYWJlbCB8IHJweFRyYW5zbGF0ZVwiPlxuICAgICAgICA8L21hdC10YWI+XG4gICAgICAgIDxtYXQtdGFiICpuZ0Zvcj1cImxldCB0YWIgb2Ygc29ydGVkVGFiczsgbGV0IGN1cklkeD1pbmRleFwiIFtpZF09XCJ0YWIuaWRcIiBbbGFiZWxdPVwidGFiLmxhYmVsIHwgcnB4VHJhbnNsYXRlXCIgW2FyaWEtbGFiZWxdPVwiY3VySWR4ID09PSAwID8gdGFiLmxhYmVsICsgJywgUGxlYXNlIHVzZSBsZWZ0IGFuZCByaWdodCBhcnJvdyBrZXlzIHRvIG5hdmlnYXRlIGNhc2UgdGFicycgOiAnJyB8IHJweFRyYW5zbGF0ZVwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRUYWJDb250ZW50PlxuICAgICAgICAgICAgPHRhYmxlIFtjbGFzc109XCJ0YWIuaWRcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidjYXNlIHZpZXdlciB0YWJsZScgfCBycHhUcmFuc2xhdGVcIj5cbiAgICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiB0YWIgfCBjY2RUYWJGaWVsZHMgfCBjY2RSZWFkRmllbGRzRmlsdGVyOmZhbHNlIDp1bmRlZmluZWQgOnRydWUgOiBmb3JtR3JvdXA/LmNvbnRyb2xzWydkYXRhJ11cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNjZExhYmVsU3Vic3RpdHV0b3IgW2Nhc2VGaWVsZF09XCJmaWVsZFwiIFtjb250ZXh0RmllbGRzXT1cImNhc2VGaWVsZHNcIiBbaGlkZGVuXT1cImZpZWxkLmhpZGRlblwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiIShmaWVsZCB8IGNjZElzQ29tcG91bmQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBpZD1cImNhc2Utdmlld2VyLWZpZWxkLWxhYmVsXCIgKm5nSWY9XCIhaXNGaWVsZFRvSGF2ZU5vTGFiZWwoZmllbGQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FzZS12aWV3ZXItbGFiZWwgdGV4dC0xNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2ZpZWxkLmxhYmVsIHwgcnB4VHJhbnNsYXRlfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZCBbaWRdPVwiJ2Nhc2Utdmlld2VyLWZpZWxkLXJlYWQtLScgKyBmaWVsZC5pZFwiIHNjb3BlPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtMTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNjZC1maWVsZC1yZWFkIFt0b3BMZXZlbEZvcm1Hcm91cF09XCJmb3JtR3JvdXA/LmNvbnRyb2xzWydkYXRhJ11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nhc2VGaWVsZF09XCJmaWVsZFwiIFtjYXNlUmVmZXJlbmNlXT1cImNhc2VEZXRhaWxzLmNhc2VfaWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jY2QtZmllbGQtcmVhZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICA8dHIgKm5nU3dpdGNoQ2FzZT1cImZhbHNlXCIgY2xhc3M9XCJjb21wb3VuZC1maWVsZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBbaWRdPVwiJ2Nhc2Utdmlld2VyLWZpZWxkLXJlYWQtLScgKyBmaWVsZC5pZFwiIHNjb3BlPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtMTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNjZC1maWVsZC1yZWFkIFt0b3BMZXZlbEZvcm1Hcm91cF09XCJmb3JtR3JvdXAuY29udHJvbHNbJ2RhdGEnXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2FzZUZpZWxkXT1cImZpZWxkXCIgW2Nhc2VSZWZlcmVuY2VdPVwiY2FzZURldGFpbHMuY2FzZV9pZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NjZC1maWVsZC1yZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgPG1hdC10YWIgKm5nRm9yPVwibGV0IHRhYiBvZiBhcHBlbmRlZFRhYnNcIiBbaWRdPVwidGFiLmlkXCIgW2xhYmVsXT1cInRhYi5sYWJlbCB8IHJweFRyYW5zbGF0ZVwiPlxuICAgICAgICA8L21hdC10YWI+XG4gICAgICA8L21hdC10YWItZ3JvdXA+XG4gICAgICA8cm91dGVyLW91dGxldCAqbmdJZj1cIihwcmVwZW5kZWRUYWJzICYmIHByZXBlbmRlZFRhYnMubGVuZ3RoKSB8fCAoYXBwZW5kZWRUYWJzICYmIGFwcGVuZGVkVGFicy5sZW5ndGgpXCI+PC9yb3V0ZXItb3V0bGV0PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -219,6 +219,7 @@ export class QueryCheckYourAnswersComponent {
|
|
|
219
219
|
eventData = null;
|
|
220
220
|
backClicked = new EventEmitter();
|
|
221
221
|
querySubmitted = new EventEmitter();
|
|
222
|
+
callbackConfirmationBody = new EventEmitter();
|
|
222
223
|
caseViewTrigger;
|
|
223
224
|
caseDetails;
|
|
224
225
|
queryId;
|
|
@@ -302,7 +303,11 @@ export class QueryCheckYourAnswersComponent {
|
|
|
302
303
|
const createEvent$ = this.createEvent(data);
|
|
303
304
|
if (this.queryCreateContext === QueryCreateContext.RESPOND) {
|
|
304
305
|
if (this.filteredTasks?.length > 0) {
|
|
305
|
-
this.createEventSubscription = createEvent$.pipe(switchMap((createEventResponse) =>
|
|
306
|
+
this.createEventSubscription = createEvent$.pipe(switchMap((createEventResponse) => {
|
|
307
|
+
const confirmationBody = createEventResponse?.after_submit_callback_response?.confirmation_body;
|
|
308
|
+
this.callbackConfirmationBody.emit(confirmationBody);
|
|
309
|
+
return this.workAllocationService.completeTask(this.filteredTasks[0].id, this.caseViewTrigger.name);
|
|
310
|
+
})).subscribe({
|
|
306
311
|
next: () => this.finaliseSubmission(),
|
|
307
312
|
error: (error) => this.handleError(error)
|
|
308
313
|
});
|
|
@@ -320,7 +325,11 @@ export class QueryCheckYourAnswersComponent {
|
|
|
320
325
|
}
|
|
321
326
|
else {
|
|
322
327
|
this.createEventSubscription = createEvent$.subscribe({
|
|
323
|
-
next: () =>
|
|
328
|
+
next: (callbackResponse) => {
|
|
329
|
+
this.finaliseSubmission();
|
|
330
|
+
const confirmationBody = callbackResponse?.after_submit_callback_response?.confirmation_body;
|
|
331
|
+
this.callbackConfirmationBody.emit(confirmationBody);
|
|
332
|
+
},
|
|
324
333
|
error: (error) => this.handleError(error)
|
|
325
334
|
});
|
|
326
335
|
}
|
|
@@ -502,7 +511,7 @@ export class QueryCheckYourAnswersComponent {
|
|
|
502
511
|
}
|
|
503
512
|
}
|
|
504
513
|
static ɵfac = function QueryCheckYourAnswersComponent_Factory(t) { return new (t || QueryCheckYourAnswersComponent)(i0.ɵɵdirectiveInject(i1.ActivatedRoute), i0.ɵɵdirectiveInject(i1.Router), i0.ɵɵdirectiveInject(i2.CasesService), i0.ɵɵdirectiveInject(i2.CaseNotifier), i0.ɵɵdirectiveInject(i2.WorkAllocationService), i0.ɵɵdirectiveInject(i3.SessionStorageService), i0.ɵɵdirectiveInject(i4.QualifyingQuestionService)); };
|
|
505
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: QueryCheckYourAnswersComponent, selectors: [["ccd-query-check-your-answers"]], inputs: { formGroup: "formGroup", queryItem: "queryItem", queryCreateContext: "queryCreateContext", eventData: "eventData" }, outputs: { backClicked: "backClicked", querySubmitted: "querySubmitted" }, decls: 33, vars: 22, consts: [["defaultCheckYourAnswersTitle", ""], ["isHearingRelatedFalse", ""], [1, "govuk-grid-row"], [1, "govuk-grid-column-two-thirds-from-desktop"], ["class", "govuk-error-summary", "aria-labelledby", "error-summary-title", "role", "alert", "tabindex", "-1", "data-module", "govuk-error-summary", 4, "ngIf"], [4, "ngIf"], [1, "govuk-heading-l"], [4, "ngIf", "ngIfElse"], [1, "govuk-!-margin-bottom-4"], [3, "caseDetails"], ["class", "govuk-summary-list govuk-!-margin-bottom-0", 4, "ngIf"], [1, "govuk-summary-list", "govuk-!-margin-bottom-0"], [1, "govuk-summary-list__row"], [1, "govuk-summary-list__key"], [1, "govuk-summary-list__value"], [1, "govuk-summary-list__actions"], ["href", "javascript:void(0)", 1, "govuk-link", 3, "click"], ["data-module", "govuk-button", 1, "govuk-button", "govuk-button--secondary", "govuk-!-margin-right-3", 3, "click"], ["data-module", "govuk-button", "type", "submit", 1, "govuk-button", 3, "click"], [3, "eventCompletionParams"], ["aria-labelledby", "error-summary-title", "role", "alert", "tabindex", "-1", "data-module", "govuk-error-summary", 1, "govuk-error-summary"], ["id", "error-summary-title", 1, "govuk-error-summary__title"], [1, "govuk-error-summary__body"], [1, "govuk-list", "govuk-error-summary__list"], [4, "ngFor", "ngForOf"], ["href", "javascript:void(0)", 1, "validation-error", 3, "id"], [1, "govuk-caption-l"], ["href", "javascript:void(0)", "class", "govuk-link", 3, "click", 4, "ngIf"], ["class", "govuk-summary-list__row", 4, "ngIf"], [1, "govuk-summary-list__value", "govuk-summary-list__value--documentAttached"], [3, "attachments", 4, "ngIf"], [3, "attachments"]], template: function QueryCheckYourAnswersComponent_Template(rf, ctx) { if (rf & 1) {
|
|
514
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: QueryCheckYourAnswersComponent, selectors: [["ccd-query-check-your-answers"]], inputs: { formGroup: "formGroup", queryItem: "queryItem", queryCreateContext: "queryCreateContext", eventData: "eventData" }, outputs: { backClicked: "backClicked", querySubmitted: "querySubmitted", callbackConfirmationBody: "callbackConfirmationBody" }, decls: 33, vars: 22, consts: [["defaultCheckYourAnswersTitle", ""], ["isHearingRelatedFalse", ""], [1, "govuk-grid-row"], [1, "govuk-grid-column-two-thirds-from-desktop"], ["class", "govuk-error-summary", "aria-labelledby", "error-summary-title", "role", "alert", "tabindex", "-1", "data-module", "govuk-error-summary", 4, "ngIf"], [4, "ngIf"], [1, "govuk-heading-l"], [4, "ngIf", "ngIfElse"], [1, "govuk-!-margin-bottom-4"], [3, "caseDetails"], ["class", "govuk-summary-list govuk-!-margin-bottom-0", 4, "ngIf"], [1, "govuk-summary-list", "govuk-!-margin-bottom-0"], [1, "govuk-summary-list__row"], [1, "govuk-summary-list__key"], [1, "govuk-summary-list__value"], [1, "govuk-summary-list__actions"], ["href", "javascript:void(0)", 1, "govuk-link", 3, "click"], ["data-module", "govuk-button", 1, "govuk-button", "govuk-button--secondary", "govuk-!-margin-right-3", 3, "click"], ["data-module", "govuk-button", "type", "submit", 1, "govuk-button", 3, "click"], [3, "eventCompletionParams"], ["aria-labelledby", "error-summary-title", "role", "alert", "tabindex", "-1", "data-module", "govuk-error-summary", 1, "govuk-error-summary"], ["id", "error-summary-title", 1, "govuk-error-summary__title"], [1, "govuk-error-summary__body"], [1, "govuk-list", "govuk-error-summary__list"], [4, "ngFor", "ngForOf"], ["href", "javascript:void(0)", 1, "validation-error", 3, "id"], [1, "govuk-caption-l"], ["href", "javascript:void(0)", "class", "govuk-link", 3, "click", 4, "ngIf"], ["class", "govuk-summary-list__row", 4, "ngIf"], [1, "govuk-summary-list__value", "govuk-summary-list__value--documentAttached"], [3, "attachments", 4, "ngIf"], [3, "attachments"]], template: function QueryCheckYourAnswersComponent_Template(rf, ctx) { if (rf & 1) {
|
|
506
515
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
507
516
|
i0.ɵɵelementStart(0, "div", 2)(1, "div", 3);
|
|
508
517
|
i0.ɵɵtemplate(2, QueryCheckYourAnswersComponent_div_2_Template, 7, 4, "div", 4)(3, QueryCheckYourAnswersComponent_ng_container_3_Template, 4, 3, "ng-container", 5);
|
|
@@ -585,6 +594,8 @@ export class QueryCheckYourAnswersComponent {
|
|
|
585
594
|
type: Output
|
|
586
595
|
}], querySubmitted: [{
|
|
587
596
|
type: Output
|
|
597
|
+
}], callbackConfirmationBody: [{
|
|
598
|
+
type: Output
|
|
588
599
|
}] }); })();
|
|
589
600
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(QueryCheckYourAnswersComponent, { className: "QueryCheckYourAnswersComponent", filePath: "lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.ts", lineNumber: 26 }); })();
|
|
590
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktY2hlY2steW91ci1hbnN3ZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWVyeS1jaGVjay15b3VyLWFuc3dlcnMvcXVlcnktY2hlY2steW91ci1hbnN3ZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWVyeS1jaGVjay15b3VyLWFuc3dlcnMvcXVlcnktY2hlY2steW91ci1hbnN3ZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUNMLGdCQUFnQixFQUtqQixNQUFNLHdDQUF3QyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckcsT0FBTyxFQUFrRCxrQkFBa0IsRUFBRSxhQUFhLEVBQUUs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dEYsYUFDRjs7WUFFSixBQURFLEFBREUsaUJBQVMsRUFDTCxFQUNGO1lBRU4sa0RBQzZCO1lBQy9CLGlCQUFNOzs7O1lBeklJLGVBQThCO1lBQTlCLG1EQUE4QjtZQWdCckIsY0FBNkQ7WUFBN0Qsc0ZBQTZEO1lBSzNELGVBQTZEO1lBQUEsQUFBN0Qsb0ZBQTZELDZDQUFpQztZQVM5RSxlQUEyQjtZQUEzQiw2Q0FBMkI7WUFHdkQsY0FBNEQ7WUFBNUQscUZBQTREO1lBb0IzRCxlQUNGO1lBREUsMkpBQ0Y7WUFFRSxlQUNGO1lBREUscUdBQ0Y7WUFHSSxlQUNGO1lBREUsaUVBQ0Y7WUFLRCxlQUE2RDtZQUE3RCxzRkFBNkQ7WUFvQ1YsY0FBd0Q7WUFBeEQsd0VBQXdEO1lBeUI1RyxlQUNGO1lBREUsbUVBQ0Y7WUFFRSxlQUNGO1lBREUsaUVBQ0Y7WUFJd0IsZUFBK0M7WUFBL0MsaUVBQStDOzs7aUZEakhoRSw4QkFBOEI7Y0FMMUMsU0FBUzsyQkFDRSw4QkFBOEI7ME9BZXhCLFNBQVM7a0JBQXhCLEtBQUs7WUFDVSxTQUFTO2tCQUF4QixLQUFLO1lBQ1Usa0JBQWtCO2tCQUFqQyxLQUFLO1lBQ1UsU0FBUztrQkFBeEIsS0FBSztZQUNXLFdBQVc7a0JBQTNCLE1BQU07WUFDVSxjQUFjO2tCQUE5QixNQUFNOztrRkFoQkksOEJBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgQ2FzZUV2ZW50VHJpZ2dlcixcbiAgQ2FzZUZpZWxkLFxuICBDYXNlVmlldyxcbiAgQ2FzZVZpZXdUcmlnZ2VyLFxuICBFcnJvck1lc3NhZ2Vcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL3NoYXJlZC9kb21haW4nO1xuaW1wb3J0IHsgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgRXZlbnRDb21wbGV0aW9uUGFyYW1zIH0gZnJvbSAnLi4vLi4vLi4vLi4vY2FzZS1lZGl0b3IvZG9tYWluL2V2ZW50LWNvbXBsZXRpb24tcGFyYW1zLm1vZGVsJztcbmltcG9ydCB7IENhc2VOb3RpZmllciwgQ2FzZXNTZXJ2aWNlLCBXb3JrQWxsb2NhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jYXNlLWVkaXRvci9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBDYXNlUXVlcmllc0NvbGxlY3Rpb24sIFFtQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uLCBRdWVyeUNyZWF0ZUNvbnRleHQsIFF1ZXJ5TGlzdEl0ZW0gfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgUXVlcnlNYW5hZ2VtZW50VXRpbHMgfSBmcm9tICcuLi8uLi91dGlscy9xdWVyeS1tYW5hZ2VtZW50LnV0aWxzJztcbmltcG9ydCB7IEZvcm1Eb2N1bWVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9zaGFyZWQvZG9tYWluL2RvY3VtZW50JztcbmltcG9ydCB7IFF1YWxpZnlpbmdRdWVzdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9xdWFsaWZ5aW5nLXF1ZXN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFzayB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RvbWFpbi93b3JrLWFsbG9jYXRpb24vVGFzayc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtcXVlcnktY2hlY2steW91ci1hbnN3ZXJzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3F1ZXJ5LWNoZWNrLXlvdXItYW5zd2Vycy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3F1ZXJ5LWNoZWNrLXlvdXItYW5zd2Vycy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFF1ZXJ5Q2hlY2tZb3VyQW5zd2Vyc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBSQUlTRV9BX1FVRVJZX0VWRU5UX1RSSUdHRVJfSUQgPSAncXVlcnlNYW5hZ2VtZW50UmFpc2VRdWVyeSc7XG4gIHByaXZhdGUgcmVhZG9ubHkgUkVTUE9ORF9UT19RVUVSWV9FVkVOVF9UUklHR0VSX0lEID0gJ3F1ZXJ5TWFuYWdlbWVudFJlc3BvbmRRdWVyeSc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBDQVNFX1FVRVJJRVNfQ09MTEVDVElPTl9JRCA9ICdDYXNlUXVlcmllc0NvbGxlY3Rpb24nO1xuICBwdWJsaWMgcmVhZG9ubHkgRklFTERfVFlQRV9DT01QTEVYID0gJ0NvbXBsZXgnO1xuICBwdWJsaWMgcmVhZG9ubHkgRElTUExBWV9DT05URVhUX1JFQURPTkxZID0gJ1JFQURPTkxZJztcbiAgcHVibGljIHJlYWRvbmx5IFFNX1NFTEVDVF9GSVJTVF9DT0xMRUNUSU9OID0gJ3NlbGVjdEZpcnN0Q29sbGVjdGlvbic7XG4gIHB1YmxpYyByZWFkb25seSBRTV9DT0xMRUNUSU9OX1BST01QVCA9ICdwcm9tcHRRbUNvbGxlY3Rpb24nO1xuICBwdWJsaWMgcmVhZG9ubHkgQ0lWSUxfSlVSSVNESUNUSU9OID0gJ0NJVklMJztcblxuICBASW5wdXQoKSBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIHB1YmxpYyBxdWVyeUl0ZW06IFF1ZXJ5TGlzdEl0ZW07XG4gIEBJbnB1dCgpIHB1YmxpYyBxdWVyeUNyZWF0ZUNvbnRleHQ6IFF1ZXJ5Q3JlYXRlQ29udGV4dDtcbiAgQElucHV0KCkgcHVibGljIGV2ZW50RGF0YTogQ2FzZUV2ZW50VHJpZ2dlciB8IG51bGwgPSBudWxsO1xuICBAT3V0cHV0KCkgcHVibGljIGJhY2tDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgcHVibGljIHF1ZXJ5U3VibWl0dGVkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHByaXZhdGUgY2FzZVZpZXdUcmlnZ2VyOiBDYXNlVmlld1RyaWdnZXI7XG4gIHB1YmxpYyBjYXNlRGV0YWlsczogQ2FzZVZpZXc7XG4gIHByaXZhdGUgcXVlcnlJZDogc3RyaW5nO1xuICBwcml2YXRlIHRpZDogc3RyaW5nO1xuICBwcml2YXRlIGNyZWF0ZUV2ZW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgc2VhcmNoVGFza3NTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBmaXJzdENvbGxlY3Rpb25QaWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTsgLy8gVHJhY2sgd2hldGhlciB0aGUgZmlyc3QgY29sbGVjdGlvbiBoYXMgYmVlbiBwaWNrZWRcbiAgcHJpdmF0ZSBmaXJzdENvbGxlY3Rpb25PcmRlcj86IG51bWJlcjtcblxuICBwdWJsaWMgcXVlcnlDcmVhdGVDb250ZXh0RW51bSA9IFF1ZXJ5Q3JlYXRlQ29udGV4dDtcbiAgcHVibGljIGV2ZW50Q29tcGxldGlvblBhcmFtczogRXZlbnRDb21wbGV0aW9uUGFyYW1zO1xuICBwdWJsaWMgY2FzZVF1ZXJpZXNDb2xsZWN0aW9uczogQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uW107XG4gIHB1YmxpYyBmaWVsZElkOiBzdHJpbmc7XG4gIHB1YmxpYyBhdHRhY2htZW50czogRm9ybURvY3VtZW50W107XG5cbiAgcHVibGljIGVycm9yTWVzc2FnZXM6IEVycm9yTWVzc2FnZVtdID0gW107XG4gIHB1YmxpYyBmaWx0ZXJlZFRhc2tzOiBUYXNrW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZXNTZXJ2aWNlOiBDYXNlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXNlTm90aWZpZXI6IENhc2VOb3RpZmllcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdvcmtBbGxvY2F0aW9uU2VydmljZTogV29ya0FsbG9jYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlOiBTZXNzaW9uU3RvcmFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBxdWFsaWZ5aW5nUXVlc3Rpb25TZXJ2aWNlOiBRdWFsaWZ5aW5nUXVlc3Rpb25TZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeUlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMucWlkO1xuICAgIHRoaXMudGlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcz8udGlkO1xuXG4gICAgdGhpcy5jYXNlTm90aWZpZXIuY2FzZVZpZXcucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKGNhc2VEZXRhaWxzKSA9PiB7XG4gICAgICB0aGlzLmNhc2VEZXRhaWxzID0gY2FzZURldGFpbHM7XG5cbiAgICAgIC8vIEZpbmQgdGhlIGFwcHJvcHJpYXRlIGV2ZW50IHRyaWdnZXIgYmFzZWQgb24gdGhlIHF1ZXJ5Q3JlYXRlQ29udGV4dFxuICAgICAgdGhpcy5jYXNlVmlld1RyaWdnZXIgPSB0aGlzLmNhc2VEZXRhaWxzLnRyaWdnZXJzLmZpbmQoKHRyaWdnZXIpID0+XG4gICAgICAgIHRoaXMucXVlcnlDcmVhdGVDb250ZXh0ICE9PSBRdWVyeUNyZWF0ZUNvbnRleHQuUkVTUE9ORFxuICAgICAgICAvLyBJZiB0aGUgY29udGV4dCBpcyBub3QgJ1JFU1BPTkQnLCBmaW5kIHRoZSB0cmlnZ2VyIHdpdGggdGhlIElEIGZvciByYWlzaW5nIGEgcXVlcnlcbiAgICAgICAgICA/IHRyaWdnZXIuaWQgPT09IHRoaXMuUkFJU0VfQV9RVUVSWV9FVkVOVF9UUklHR0VSX0lEXG4gICAgICAgIC8vIElmIHRoZSBjb250ZXh0IGlzICdSRVNQT05EJywgZmluZCB0aGUgdHJpZ2dlciB3aXRoIHRoZSBJRCBmb3IgcmVzcG9uZGluZyB0byBhIHF1ZXJ5XG4gICAgICAgICAgOiB0cmlnZ2VyLmlkID09PSB0aGlzLlJFU1BPTkRfVE9fUVVFUllfRVZFTlRfVFJJR0dFUl9JRFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIC8vIEdldCB0aGUgZG9jdW1lbnQgYXR0YWNobWVudHNcbiAgICB0aGlzLmdldERvY3VtZW50QXR0YWNobWVudHMoKTtcblxuICAgIHRoaXMuc2V0Q2FzZVF1ZXJpZXNDb2xsZWN0aW9uRGF0YSgpO1xuXG4gICAgaWYgKHRoaXMucXVlcnlDcmVhdGVDb250ZXh0ID09PSBRdWVyeUNyZWF0ZUNvbnRleHQuUkVTUE9ORCkge1xuICAgICAgdGhpcy5zZWFyY2hUYXNrc1N1YnNjcmlwdGlvbiA9IHRoaXMud29ya0FsbG9jYXRpb25TZXJ2aWNlLmdldFRhc2tzQnlDYXNlSWRBbmRFdmVudElkKHRoaXMuUkVTUE9ORF9UT19RVUVSWV9FVkVOVF9UUklHR0VSX0lELFxuICAgICAgICB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfaWQsIHRoaXMuY2FzZURldGFpbHMuY2FzZV90eXBlLmlkLCB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfdHlwZS5qdXJpc2RpY3Rpb24uaWQpXG4gICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgLy8gRmlsdGVyIHRhc2sgYnkgcXVlcnkgaWRcbiAgICAgICAgICAgIGlmICh0aGlzLnRpZCkge1xuICAgICAgICAgICAgICBpZiAocmVzcG9uc2UudGFza3M/Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkVGFza3MgPSByZXNwb25zZS50YXNrcz8uZmlsdGVyKCh0YXNrOiBUYXNrKSA9PiB0YXNrLmlkID09PSB0aGlzLnRpZCk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZFRhc2tzID0gcmVzcG9uc2UudGFza3M7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluIHNlYXJjaFRhc2tzU3Vic2NyaXB0aW9uOicsIGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNyZWF0ZUV2ZW50U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc2VhcmNoVGFza3NTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgZ29CYWNrKCk6IHZvaWQge1xuICAgIHRoaXMuYmFja0NsaWNrZWQuZW1pdCh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXQoKTogdm9pZCB7XG4gICAgLy8gQ2hlY2sgaWYgZmllbGRJZCBpcyBudWxsIG9yIHVuZGVmaW5lZFxuICAgIGlmICghdGhpcy5maWVsZElkKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvcjogRmllbGQgSUQgaXMgbWlzc2luZy4gQ2Fubm90IHByb2NlZWQgd2l0aCBzdWJtaXNzaW9uLicpO1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2VzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgdGl0bGU6ICdFcnJvcicsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdUaGlzIGNhc2UgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIHF1ZXJ5IG1hbmFnZW1lbnQuJyxcbiAgICAgICAgICBmaWVsZElkOiAnZmllbGQtaWQnXG4gICAgICAgIH1cbiAgICAgIF07XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YSA9IHRoaXMuZ2VuZXJhdGVDYXNlUXVlcmllc0NvbGxlY3Rpb25EYXRhKCk7XG4gICAgY29uc3QgY3JlYXRlRXZlbnQkID0gdGhpcy5jcmVhdGVFdmVudChkYXRhKTtcblxuICAgIGlmICh0aGlzLnF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gUXVlcnlDcmVhdGVDb250ZXh0LlJFU1BPTkQpIHtcbiAgICAgIGlmICh0aGlzLmZpbHRlcmVkVGFza3M/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5jcmVhdGVFdmVudFN1YnNjcmlwdGlvbiA9IGNyZWF0ZUV2ZW50JC5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcCgoY3JlYXRlRXZlbnRSZXNwb25zZSkgPT5cbiAgICAgICAgICAgIHRoaXMud29ya0FsbG9jYXRpb25TZXJ2aWNlLmNvbXBsZXRlVGFzayhcbiAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZFRhc2tzWzBdLmlkLFxuICAgICAgICAgICAgICB0aGlzLmNhc2VWaWV3VHJpZ2dlci5uYW1lXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKCkgPT4gdGhpcy5maW5hbGlzZVN1Ym1pc3Npb24oKSxcbiAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycm9yKVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yOiBObyB0YXNrIHRvIGNvbXBsZXRlIHdhcyBmb3VuZCcpO1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZXMgPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGl0bGU6ICdFcnJvcicsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ05vIHRhc2sgdG8gY29tcGxldGUgd2FzIGZvdW5kJyxcbiAgICAgICAgICAgIGZpZWxkSWQ6ICdmaWVsZC1pZCdcbiAgICAgICAgICB9XG4gICAgICAgIF07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3JlYXRlRXZlbnRTdWJzY3JpcHRpb24gPSBjcmVhdGVFdmVudCQuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKCkgPT4gdGhpcy5maW5hbGlzZVN1Ym1pc3Npb24oKSxcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnJvcilcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRXZlbnQoZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5jYXNlc1NlcnZpY2UuY3JlYXRlRXZlbnQodGhpcy5jYXNlRGV0YWlscywge1xuICAgICAgZGF0YSxcbiAgICAgIGV2ZW50OiB7XG4gICAgICAgIGlkOiB0aGlzLmNhc2VWaWV3VHJpZ2dlcj8uaWQsXG4gICAgICAgIHN1bW1hcnk6ICcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5jYXNlVmlld1RyaWdnZXI/LmRlc2NyaXB0aW9uXG4gICAgICB9LFxuICAgICAgZXZlbnRfdG9rZW46IHRoaXMuZXZlbnREYXRhPy5ldmVudF90b2tlbixcbiAgICAgIGlnbm9yZV93YXJuaW5nOiBmYWxzZVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5hbGlzZVN1Ym1pc3Npb24oKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeVN1Ym1pdHRlZC5lbWl0KHRydWUpO1xuICAgIHRoaXMucXVhbGlmeWluZ1F1ZXN0aW9uU2VydmljZS5jbGVhclF1YWxpZnlpbmdRdWVzdGlvblNlbGVjdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvcjogYW55KTogdm9pZCB7XG4gICAgY29uc29sZS5lcnJvcignRXJyb3IgaW4gQVBJIGNhbGxzOicsIGVycm9yKTtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nLCAnc2VydmljZS1kb3duJ10pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUNhc2VRdWVyaWVzQ29sbGVjdGlvbkRhdGEoKTogUW1DYXNlUXVlcmllc0NvbGxlY3Rpb24ge1xuICAgIGNvbnN0IGN1cnJlbnRVc2VyRGV0YWlscyA9IEpTT04ucGFyc2UodGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSgndXNlckRldGFpbHMnKSk7XG5cbiAgICBjb25zdCBjYXNlTWVzc2FnZSA9IHRoaXMucXVlcnlDcmVhdGVDb250ZXh0ID09PSBRdWVyeUNyZWF0ZUNvbnRleHQuTkVXX1FVRVJZXG4gICAgICA/IFF1ZXJ5TWFuYWdlbWVudFV0aWxzLmdldE5ld1F1ZXJ5RGF0YSh0aGlzLmZvcm1Hcm91cCwgY3VycmVudFVzZXJEZXRhaWxzKVxuICAgICAgOiBRdWVyeU1hbmFnZW1lbnRVdGlscy5nZXRSZXNwb25kT3JGb2xsb3d1cFF1ZXJ5RGF0YSh0aGlzLmZvcm1Hcm91cCwgdGhpcy5xdWVyeUl0ZW0sIGN1cnJlbnRVc2VyRGV0YWlscyk7XG5cbiAgICBjb25zdCBtZXNzYWdlSWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5kYXRhaWQ7IC8vIEdldCB0aGUgbWVzc2FnZSBJRCBmcm9tIHJvdXRlIHBhcmFtcyAoaWYgcHJlc2VudClcbiAgICBjb25zdCBpc05ld1F1ZXJ5ID0gdGhpcy5xdWVyeUNyZWF0ZUNvbnRleHQgPT09IFF1ZXJ5Q3JlYXRlQ29udGV4dC5ORVdfUVVFUlk7IC8vIENoZWNrIGlmIHRoaXMgaXMgYSBuZXcgcXVlcnlcblxuICAgIC8vIENoZWNrIGlmIHRoZSBmaWVsZCBJRCBoYXMgYmVlbiBzZXQgZHluYW1pY2FsbHlcbiAgICBpZiAoIXRoaXMuZmllbGRJZCkge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3I6IEZpZWxkIElEIGZvciBDYXNlUXVlcmllc0NvbGxlY3Rpb24gbm90IGZvdW5kLiBDYW5ub3QgcHJvY2VlZCB3aXRoIGRhdGEgZ2VuZXJhdGlvbi4nKTtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLycsICdzZXJ2aWNlLWRvd24nXSk7XG4gICAgfVxuXG4gICAgLy8gSW5pdGlhbGl6ZSBuZXcgcXVlcnkgZGF0YSBzdHJ1Y3R1cmVcbiAgICBjb25zdCBuZXdRdWVyeURhdGE6IFFtQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uID0ge307XG5cbiAgICBpZiAodGhpcy5jYXNlUXVlcmllc0NvbGxlY3Rpb25zPy5sZW5ndGgpIHtcbiAgICAgIGxldCBtYXRjaGVkQ29sbGVjdGlvbjtcblxuICAgICAgLy8gSWYgaXQncyBub3QgYSBuZXcgcXVlcnksIHRyeSB0byBmaW5kIHRoZSBleGlzdGluZyBjb2xsZWN0aW9uIHdpdGggdGhlIG1lc3NhZ2UgSURcbiAgICAgIGlmICghaXNOZXdRdWVyeSAmJiBtZXNzYWdlSWQpIHtcbiAgICAgICAgbWF0Y2hlZENvbGxlY3Rpb24gPSB0aGlzLmNhc2VRdWVyaWVzQ29sbGVjdGlvbnMuZmluZCgoY29sbGVjdGlvbikgPT5cbiAgICAgICAgICBjb2xsZWN0aW9uLmNhc2VNZXNzYWdlcy5zb21lKChtZXNzYWdlKSA9PiBtZXNzYWdlLnZhbHVlLmlkID09PSBtZXNzYWdlSWQpXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtYXRjaGVkQ29sbGVjdGlvbikge1xuICAgICAgICAvLyBBcHBlbmQgdGhlIG5ldyBjYXNlIG1lc3NhZ2UgdG8gdGhlIG1hdGNoZWQgY29sbGVjdGlvbidzIGNhc2VNZXNzYWdlc1xuICAgICAgICBtYXRjaGVkQ29sbGVjdGlvbi5jYXNlTWVzc2FnZXMucHVzaCh7XG4gICAgICAgICAgaWQ6IG51bGwsXG4gICAgICAgICAgdmFsdWU6IGNhc2VNZXNzYWdlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEFkZCB0aGUgbWF0Y2hlZCBjb2xsZWN0aW9uIHRvIG5ld1F1ZXJ5RGF0YVxuICAgICAgICBuZXdRdWVyeURhdGFbdGhpcy5maWVsZElkXSA9IHtcbiAgICAgICAgICAuLi5tYXRjaGVkQ29sbGVjdGlvbiwgLy8gS2VlcCBleGlzdGluZyBkYXRhIGludGFjdFxuICAgICAgICAgIGNhc2VNZXNzYWdlczogWy4uLm1hdGNoZWRDb2xsZWN0aW9uLmNhc2VNZXNzYWdlc10gLy8gQXBwZW5kIHRoZSB1cGRhdGVkIG1lc3NhZ2VzIGFycmF5XG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJZiBubyBjb2xsZWN0aW9uIG1hdGNoZXMsIG9yIGl0J3MgYSBuZXcgcXVlcnlcbiAgICAgICAgbmV3UXVlcnlEYXRhW3RoaXMuZmllbGRJZF0gPSB7XG4gICAgICAgICAgcGFydHlOYW1lOiBjdXJyZW50VXNlckRldGFpbHM/Lm5hbWUgfHwgYCR7Y3VycmVudFVzZXJEZXRhaWxzPy5mb3JlbmFtZX0gJHtjdXJyZW50VXNlckRldGFpbHM/LnN1cm5hbWV9YCwgLy8gTm90IHJldHVybmVkIGJ5IENDRFxuICAgICAgICAgIHJvbGVPbkNhc2U6ICcnLCAvLyBOb3QgcmV0dXJuZWQgYnkgQ0NEXG4gICAgICAgICAgY2FzZU1lc3NhZ2VzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkOiBudWxsLFxuICAgICAgICAgICAgICB2YWx1ZTogY2FzZU1lc3NhZ2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gSWYgY2FzZVF1ZXJpZXNDb2xsZWN0aW9ucyBpcyBub3QgZW1wdHksIGFwcGVuZCBpdHMgZGF0YVxuICAgICAgICBuZXdRdWVyeURhdGFbdGhpcy5maWVsZElkXS5jYXNlTWVzc2FnZXMucHVzaChcbiAgICAgICAgICAuLi50aGlzLmNhc2VRdWVyaWVzQ29sbGVjdGlvbnMuZmxhdE1hcCgoY29sbGVjdGlvbikgPT4gY29sbGVjdGlvbi5jYXNlTWVzc2FnZXMpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIElmIHRoZXJlIGFyZSBubyBleGlzdGluZyBjb2xsZWN0aW9ucywgY3JlYXRlIGEgbmV3IG9uZSAoZS5nLiwgZm9yIG5ldyBxdWVyaWVzKVxuICAgICAgbmV3UXVlcnlEYXRhW3RoaXMuZmllbGRJZF0gPSB7XG4gICAgICAgIHBhcnR5TmFtZTogY3VycmVudFVzZXJEZXRhaWxzPy5uYW1lIHx8IGAke2N1cnJlbnRVc2VyRGV0YWlscz8uZm9yZW5hbWV9ICR7Y3VycmVudFVzZXJEZXRhaWxzPy5zdXJuYW1lfWAsIC8vIE5vdCByZXR1cm5lZCBieSBDQ0RcbiAgICAgICAgcm9sZU9uQ2FzZTogJycsIC8vIE5vdCByZXR1cm5lZCBieSBDQ0RcbiAgICAgICAgY2FzZU1lc3NhZ2VzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6IG51bGwsXG4gICAgICAgICAgICB2YWx1ZTogY2FzZU1lc3NhZ2VcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBuZXdRdWVyeURhdGE7XG4gIH1cblxuICBwdWJsaWMgc2V0Q2FzZVF1ZXJpZXNDb2xsZWN0aW9uRGF0YSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ldmVudERhdGE/LmNhc2VfZmllbGRzPy5sZW5ndGgpIHtcbiAgICAgIC8vIFdvcmthcm91bmQgZm9yIG11bHRpcGxlIHFtQ2FzZVF1ZXJpZXNDb2xsZWN0aW9ucyB0aGF0IGFyZSBub3QgdG8gYmUgYXBwZWFyaW5nIGluIHRoZSBldmVudERhdGFcbiAgICAgIC8vIENvdW50cyBudW1iZXIgcW1DYXNlUXVlcmllc0NvbGxlY3Rpb25zXG4gICAgICBjb25zdCBudW1iZXJPZkNhc2VRdWVyaWVzQ29sbGVjdGlvbnMgPSB0aGlzLmV2ZW50RGF0YT8uY2FzZV9maWVsZHM/LmZpbHRlcihcbiAgICAgICAgKGNhc2VGaWVsZCkgPT5cbiAgICAgICAgICBjYXNlRmllbGQuZmllbGRfdHlwZS5pZCA9PT0gdGhpcy5DQVNFX1FVRVJJRVNfQ09MTEVDVElPTl9JRCAmJlxuICAgICAgICAgIGNhc2VGaWVsZC5maWVsZF90eXBlLnR5cGUgPT09IHRoaXMuRklFTERfVFlQRV9DT01QTEVYICYmIGNhc2VGaWVsZC5kaXNwbGF5X2NvbnRleHQgIT09IHRoaXMuRElTUExBWV9DT05URVhUX1JFQURPTkxZXG4gICAgICApPy5sZW5ndGggfHwgMDtcblxuICAgICAgdGhpcy5jYXNlUXVlcmllc0NvbGxlY3Rpb25zID0gdGhpcy5ldmVudERhdGEuY2FzZV9maWVsZHMucmVkdWNlKChhY2MsIGNhc2VGaWVsZCkgPT4ge1xuICAgICAgICAvLyBFeHRyYWN0IHRoZSBJRCBiYXNlZCBvbiBjb25kaXRpb25zLCB1cGRhdGluZyB0aGlzLmZpZWxkSWQgZHluYW1pY2FsbHlcbiAgICAgICAgdGhpcy5leHRyYWN0Q2FzZVF1ZXJ5SWQoY2FzZUZpZWxkLCBudW1iZXJPZkNhc2VRdWVyaWVzQ29sbGVjdGlvbnMpO1xuXG4gICAgICAgIGNvbnN0IGV4dHJhY3RlZENhc2VRdWVyaWVzRnJvbUNhc2VGaWVsZCA9IFF1ZXJ5TWFuYWdlbWVudFV0aWxzLmV4dHJhY3RDYXNlUXVlcmllc0Zyb21DYXNlRmllbGQoY2FzZUZpZWxkKTtcbiAgICAgICAgaWYgKGV4dHJhY3RlZENhc2VRdWVyaWVzRnJvbUNhc2VGaWVsZCAmJiB0eXBlb2YgZXh0cmFjdGVkQ2FzZVF1ZXJpZXNGcm9tQ2FzZUZpZWxkID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIGFjYy5wdXNoKGV4dHJhY3RlZENhc2VRdWVyaWVzRnJvbUNhc2VGaWVsZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIFtdKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3RDYXNlUXVlcnlJZChkYXRhOiBDYXNlRmllbGQsIGNvdW50OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCB7IGlkLCB2YWx1ZSB9ID0gZGF0YTtcbiAgICBjb25zdCBtZXNzYWdlSWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5kYXRhaWQ7XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgZmllbGRfdHlwZSBtYXRjaGVzIENhc2VRdWVyaWVzQ29sbGVjdGlvbiBhbmQgdHlwZSBpcyBDb21wbGV4XG4gICAgaWYgKGRhdGEuZmllbGRfdHlwZS5pZCA9PT0gdGhpcy5DQVNFX1FVRVJJRVNfQ09MTEVDVElPTl9JRCAmJiBkYXRhLmZpZWxkX3R5cGUudHlwZSA9PT0gdGhpcy5GSUVMRF9UWVBFX0NPTVBMRVgpIHtcbiAgICAgIGlmICh0aGlzLmlzTmV3UXVlcnlDb250ZXh0KGRhdGEpKSB7XG4gICAgICAgIC8vIElmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgcW1DYXNlUXVlcmllc0NvbGxlY3Rpb24sIHBpY2sgdGhlIG9uZSB3aXRoIHRoZSBsb3dlc3Qgb3JkZXJcbiAgICAgICAgaWYgKGNvdW50ID4gMSkge1xuICAgICAgICAgIGlmICghdGhpcy5oYW5kbGVNdWx0aXBsZUNvbGxlY3Rpb25zKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gU2V0IHRoZSBmaWVsZCBJRCBkeW5hbWljYWxseSBiYXNlZCBvbiB0aGUgZXh0cmFjdGVkIGRhdGFcbiAgICAgICAgICB0aGlzLmZpZWxkSWQgPSBpZDsgLy8gU3RvcmUgdGhlIElEIGZvciB1c2UgaW4gZ2VuZXJhdGluZyBuZXdRdWVyeURhdGFcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBJZiBtZXNzYWdlSWQgaXMgcHJlc2VudCwgZmluZCB0aGUgY29ycmVzcG9uZGluZyBjYXNlIG1lc3NhZ2VcbiAgICAgIHRoaXMuc2V0TWVzc2FnZUZpZWxkSWQobWVzc2FnZUlkLCB2YWx1ZSwgaWQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0TWVzc2FnZUZpZWxkSWQobWVzc2FnZUlkLCB2YWx1ZSwgaWQ6IHN0cmluZykge1xuICAgIGlmIChtZXNzYWdlSWQgJiYgdmFsdWU/LmNhc2VNZXNzYWdlcykge1xuICAgICAgLy8gSWYgYSBtYXRjaGluZyBtZXNzYWdlIGlzIGZvdW5kLCBzZXQgdGhlIGZpZWxkSWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgaWRcbiAgICAgIGNvbnN0IG1hdGNoZWRNZXNzYWdlID0gdmFsdWU/LmNhc2VNZXNzYWdlcz8uZmluZCgobWVzc2FnZSkgPT4gbWVzc2FnZS52YWx1ZS5pZCA9PT0gbWVzc2FnZUlkKTtcbiAgICAgIGlmIChtYXRjaGVkTWVzc2FnZSkge1xuICAgICAgICB0aGlzLmZpZWxkSWQgPSBpZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzTmV3UXVlcnlDb250ZXh0KGRhdGE6IENhc2VGaWVsZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gUXVlcnlDcmVhdGVDb250ZXh0Lk5FV19RVUVSWSAmJiBkYXRhLmRpc3BsYXlfY29udGV4dCAhPT0gdGhpcy5ESVNQTEFZX0NPTlRFWFRfUkVBRE9OTFk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZU11bHRpcGxlQ29sbGVjdGlvbnMoKTogYm9vbGVhbiB7XG4gICAgY29uc3QganVyaXNkaWN0aW9uSWQgPSB0aGlzLmNhc2VEZXRhaWxzPy5jYXNlX3R5cGU/Lmp1cmlzZGljdGlvbj8uaWQ7XG5cbiAgICBpZiAoIWp1cmlzZGljdGlvbklkKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdKdXJpc2RpY3Rpb24gSUQgaXMgbWlzc2luZy4nKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5nZXRDb2xsZWN0aW9uU2VsZWN0aW9uTWV0aG9kKGp1cmlzZGljdGlvbklkKSA9PT0gdGhpcy5RTV9TRUxFQ1RfRklSU1RfQ09MTEVDVElPTikge1xuICAgICAgLy8gUGljayB0aGUgY29sbGVjdGlvbiB3aXRoIHRoZSBsb3dlc3Qgb3JkZXJcbiAgICAgIHRoaXMuZmllbGRJZCA9IHRoaXMuZ2V0Q2FzZVF1ZXJpZXNDb2xsZWN0aW9uRmllbGRPcmRlckZyb21XaXphcmRQYWdlcygpPy5pZDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRGlzcGxheSBFcnJvciwgZm9yIG5vdywgdW50aWwgRVhVSS0yNjQ0IGlzIGltcGxlbWVudGVkXG4gICAgICBjb25zb2xlLmVycm9yKGBFcnJvcjogTXVsdGlwbGUgQ2FzZVF1ZXJpZXNDb2xsZWN0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCB5ZXQgZm9yIHRoZSAke2p1cmlzZGljdGlvbklkfSBqdXJpc2RpY3Rpb25gKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2FzZVF1ZXJpZXNDb2xsZWN0aW9uRmllbGRPcmRlckZyb21XaXphcmRQYWdlcygpOiBDYXNlRmllbGQgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGNhbmRpZGF0ZUZpZWxkcyA9IHRoaXMuZXZlbnREYXRhPy5jYXNlX2ZpZWxkcz8uZmlsdGVyKFxuICAgICAgKGZpZWxkKSA9PlxuICAgICAgICBmaWVsZC5maWVsZF90eXBlLmlkID09PSB0aGlzLkNBU0VfUVVFUklFU19DT0xMRUNUSU9OX0lEICYmXG4gICAgICAgIGZpZWxkLmZpZWxkX3R5cGUudHlwZSA9PT0gdGhpcy5GSUVMRF9UWVBFX0NPTVBMRVggJiZcbiAgICAgICAgZmllbGQuZGlzcGxheV9jb250ZXh0ICE9PSB0aGlzLkRJU1BMQVlfQ09OVEVYVF9SRUFET05MWVxuICAgICk7XG5cbiAgICBpZiAoIWNhbmRpZGF0ZUZpZWxkcz8ubGVuZ3RoKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgZmlyc3RQYWdlRmllbGRzID0gdGhpcy5ldmVudERhdGE/LndpemFyZF9wYWdlcz8uWzBdPy53aXphcmRfcGFnZV9maWVsZHM7XG5cbiAgICBpZiAoIWZpcnN0UGFnZUZpZWxkcykgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIHJldHVybiBjYW5kaWRhdGVGaWVsZHNcbiAgICAgIC5tYXAoKGZpZWxkKSA9PiB7XG4gICAgICAgIGNvbnN0IHdpemFyZEZpZWxkID0gZmlyc3RQYWdlRmllbGRzLmZpbmQoZiA9PiBmLmNhc2VfZmllbGRfaWQgPT09IGZpZWxkLmlkKTtcbiAgICAgICAgcmV0dXJuIHsgZmllbGQsIG9yZGVyOiB3aXphcmRGaWVsZD8ub3JkZXIgPz8gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIgfTtcbiAgICAgIH0pXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS5vcmRlciAtIGIub3JkZXIpWzBdPy5maWVsZDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29sbGVjdGlvblNlbGVjdGlvbk1ldGhvZChqdXJpc2RpY3Rpb246IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGp1cmlzZGljdGlvbi50b1VwcGVyQ2FzZSgpID09PSB0aGlzLkNJVklMX0pVUklTRElDVElPTiA/IHRoaXMuUU1fU0VMRUNUX0ZJUlNUX0NPTExFQ1RJT04gOiB0aGlzLlFNX0NPTExFQ1RJT05fUFJPTVBUO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREb2N1bWVudEF0dGFjaG1lbnRzKCk6IHZvaWQge1xuICAgIGNvbnN0IGF0dGFjaG1lbnRzVmFsdWUgPSB0aGlzLmZvcm1Hcm91cC5nZXQoJ2F0dGFjaG1lbnRzJykudmFsdWU7XG4gICAgaWYgKGF0dGFjaG1lbnRzVmFsdWUgJiYgYXR0YWNobWVudHNWYWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBkb2N1bWVudHMgPSBhdHRhY2htZW50c1ZhbHVlO1xuICAgICAgdGhpcy5hdHRhY2htZW50cyA9IGRvY3VtZW50cy5tYXAoUXVlcnlNYW5hZ2VtZW50VXRpbHMuZG9jdW1lbnRUb0NvbGxlY3Rpb25Gb3JtRG9jdW1lbnQpO1xuICAgIH1cbiAgfVxufVxuXG4iLCI8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1yb3dcIj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLXR3by10aGlyZHMtZnJvbS1kZXNrdG9wXCI+XG4gICAgPCEtLSBFcnJvciBtZXNzYWdlIHN1bW1hcnkgLS0+XG4gICAgPGRpdiAqbmdJZj1cImVycm9yTWVzc2FnZXMubGVuZ3RoID4gMFwiIGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeVwiXG4gICAgICBhcmlhLWxhYmVsbGVkYnk9XCJlcnJvci1zdW1tYXJ5LXRpdGxlXCIgcm9sZT1cImFsZXJ0XCIgdGFiaW5kZXg9XCItMVwiXG4gICAgICBkYXRhLW1vZHVsZT1cImdvdnVrLWVycm9yLXN1bW1hcnlcIj5cbiAgICAgPGgyIGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeV9fdGl0bGVcIiBpZD1cImVycm9yLXN1bW1hcnktdGl0bGVcIj5cbiAgICAgICB7eyAnVGhlcmUgaXMgYSBwcm9ibGVtJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICA8L2gyPlxuICAgICA8ZGl2IGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeV9fYm9keVwiPlxuICAgICAgIDx1bCBjbGFzcz1cImdvdnVrLWxpc3QgZ292dWstZXJyb3Itc3VtbWFyeV9fbGlzdFwiPlxuICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgZXJyb3JNZXNzYWdlc1wiPlxuICAgICAgICAgICA8YSBbaWRdPVwiJ2Vycm9yLScgKyBlcnJvck1lc3NhZ2UuZmllbGRJZFwiIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIlxuICAgICAgICAgICAgIGNsYXNzPVwidmFsaWRhdGlvbi1lcnJvclwiPnt7IGVycm9yTWVzc2FnZS5kZXNjcmlwdGlvbiB8IHJweFRyYW5zbGF0ZSB9fTwvYT5cbiAgICAgICAgIDwvbGk+XG4gICAgICAgPC91bD5cbiAgICAgPC9kaXY+XG4gICA8L2Rpdj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJxdWVyeUNyZWF0ZUNvbnRleHQgPT09IHF1ZXJ5Q3JlYXRlQ29udGV4dEVudW0uTkVXX1FVRVJZXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstY2FwdGlvbi1sXCI+e3sgJ1JhaXNlIGEgcXVlcnknIHwgcnB4VHJhbnNsYXRlIH19PC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8aDEgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLWxcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJxdWVyeUNyZWF0ZUNvbnRleHQgPT09IHF1ZXJ5Q3JlYXRlQ29udGV4dEVudW0uUkVTUE9ORDsgZWxzZSBkZWZhdWx0Q2hlY2tZb3VyQW5zd2Vyc1RpdGxlXCI+XG4gICAgICAgIHt7ICdSZXZpZXcgcXVlcnkgcmVzcG9uc2UgZGV0YWlscycgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDaGVja1lvdXJBbnN3ZXJzVGl0bGU+XG4gICAgICAgIHt7ICdSZXZpZXcgcXVlcnkgZGV0YWlscycgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9oMT5cbiAgICA8ZGl2IGNsYXNzPVwiZ292dWstIS1tYXJnaW4tYm90dG9tLTRcIj5cbiAgICAgIDxjY2QtcXVlcnktY2FzZS1kZXRhaWxzLWhlYWRlciBbY2FzZURldGFpbHNdPVwiY2FzZURldGFpbHNcIj48L2NjZC1xdWVyeS1jYXNlLWRldGFpbHMtaGVhZGVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRsICpuZ0lmPVwicXVlcnlDcmVhdGVDb250ZXh0ICE9PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLkZPTExPV1VQXCIgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3QgZ292dWstIS1tYXJnaW4tYm90dG9tLTBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3Jvd1wiPlxuICAgICAgICA8ZHQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2tleVwiPlxuICAgICAgICAgIHt7IHF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gcXVlcnlDcmVhdGVDb250ZXh0RW51bS5SRVNQT05EID8gJ1N1Ym1pdHRlZCBxdWVyeScgOiAnUXVlcnkgc3ViamVjdCcgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgPC9kdD5cbiAgICAgICAgPGRkIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X192YWx1ZVwiPlxuICAgICAgICAgIHt7IHF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gcXVlcnlDcmVhdGVDb250ZXh0RW51bS5SRVNQT05EID8gcXVlcnlJdGVtLnN1YmplY3QgOiBmb3JtR3JvdXAuZ2V0KCdzdWJqZWN0Jyk/LnZhbHVlIH19XG4gICAgICAgIDwvZGQ+XG4gICAgICAgIDxkZCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fYWN0aW9uc1wiPlxuICAgICAgICAgIDxhICAqbmdJZj1cInF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gcXVlcnlDcmVhdGVDb250ZXh0RW51bS5ORVdfUVVFUllcIiBcbiAgICAgICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiBjbGFzcz1cImdvdnVrLWxpbmtcIiAoY2xpY2spPVwiZ29CYWNrKClcIj5cbiAgICAgICAgICAgIHt7ICdDaGFuZ2UnIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2RkPlxuICAgICAgPC9kaXY+XG4gICAgPC9kbD5cblxuICAgIDxkbCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdCBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fcm93XCI+XG4gICAgICAgIDxkdCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5XCI+XG4gICAgICAgICAge3sgcXVlcnlDcmVhdGVDb250ZXh0ID09PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLlJFU1BPTkQgPyAnUmVzcG9uc2UgZGV0YWlsJyA6ICdRdWVyeSBkZXRhaWwnIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgIDwvZHQ+XG4gICAgICAgIDxkZCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWVcIj5cbiAgICAgICAgICB7eyBmb3JtR3JvdXAuZ2V0KCdib2R5Jyk/LnZhbHVlIH19XG4gICAgICAgIDwvZGQ+XG4gICAgICAgIDxkZCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fYWN0aW9uc1wiPlxuICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiBjbGFzcz1cImdvdnVrLWxpbmtcIiAoY2xpY2spPVwiZ29CYWNrKClcIj5cbiAgICAgICAgICAgIHt7ICdDaGFuZ2UnIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2RkPlxuICAgICAgPC9kaXY+XG4gICAgPC9kbD5cblxuICAgIDxkbCAqbmdJZj1cInF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gcXVlcnlDcmVhdGVDb250ZXh0RW51bS5ORVdfUVVFUllcIiBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdCBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fcm93XCI+XG4gICAgICAgIDxkdCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5XCI+XG4gICAgICAgICAge3sgJ0lzIHRoZSBxdWVyeSBoZWFyaW5nIHJlbGF0ZWQ/JyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2R0PlxuICAgICAgICA8ZGQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm1Hcm91cC5nZXQoJ2lzSGVhcmluZ1JlbGF0ZWQnKT8udmFsdWUgPT09IHRydWU7IGVsc2UgaXNIZWFyaW5nUmVsYXRlZEZhbHNlXCI+XG4gICAgICAgICAgICB7eyAnSXMgdGhlIHF1ZXJ5IGhlYXJpbmcgcmVsYXRlZD8nIHwgcnB4VHJhbnNsYXRlOiBudWxsIDogJ1llcycgfX1cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2lzSGVhcmluZ1JlbGF0ZWRGYWxzZT5cbiAgICAgICAgICAgIHt7ICdJcyB0aGUgcXVlcnkgaGVhcmluZyByZWxhdGVkPycgfCBycHhUcmFuc2xhdGU6IG51bGwgOiAnTm8nIH19XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kZD5cbiAgICAgICAgPGRkIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19hY3Rpb25zXCI+XG4gICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwiZ292dWstbGlua1wiIChjbGljayk9XCJnb0JhY2soKVwiPlxuICAgICAgICAgICAge3sgJ0NoYW5nZScgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGQ+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1Hcm91cC5nZXQoJ2lzSGVhcmluZ1JlbGF0ZWQnKT8udmFsdWVcIiBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fcm93XCI+XG4gICAgICAgIDxkdCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5XCI+XG4gICAgICAgICAge3sgcXVlcnlDcmVhdGVDb250ZXh0ID09PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLk5FV19RVUVSWVxuICAgICAgICAgICAgPyAnV2hhdCBpcyB0aGUgZGF0ZSBvZiB0aGUgaGVhcmluZz8nXG4gICAgICAgICAgICA6ICdXaGF0IGlzIHRoZSBkYXRlIG9mIHRoZSBoZWFyaW5nIHlvdXIgcXVlcnkgaXMgcmVsYXRlZCB0bz8nIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgIDwvZHQ+XG4gICAgICAgIDxkZCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWVcIj5cbiAgICAgICAgICB7eyBmb3JtR3JvdXAuZ2V0KCdoZWFyaW5nRGF0ZScpPy52YWx1ZSB8IGRhdGU6ICdkZCBNTU0geXl5eScgfX1cbiAgICAgICAgPC9kZD5cbiAgICAgICAgPGRkIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19hY3Rpb25zXCI+XG4gICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwiZ292dWstbGlua1wiIChjbGljayk9XCJnb0JhY2soKVwiPlxuICAgICAgICAgICAge3sgJ0NoYW5nZScgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2RsPlxuICAgIDxkbCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdCBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tMFwiICpuZ0lmPVwidGhpcy5mb3JtR3JvdXAuZ2V0KCdhdHRhY2htZW50cycpLnZhbHVlLmxlbmd0aCA+IDBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3Jvd1wiPlxuICAgICAgICA8ZHQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2tleVwiPlxuICAgICAgICAgIHt7IHF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gcXVlcnlDcmVhdGVDb250ZXh0RW51bS5ORVdfUVVFUlkgPyAnVXBsb2FkIGEgZmlsZSB0byB0aGUgcXVlcnknIDogJ0RvY3VtZW50IGF0dGFjaGVkJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2R0PlxuICAgICAgICA8ZGQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlIGdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWUtLWRvY3VtZW50QXR0YWNoZWRcIj5cbiAgICAgICAgICA8Y2NkLXF1ZXJ5LWF0dGFjaG1lbnRzLXJlYWRcbiAgICAgICAgICAgICpuZ0lmPVwidGhpcy5mb3JtR3JvdXAuZ2V0KCdhdHRhY2htZW50cycpLnZhbHVlXCJcbiAgICAgICAgICAgIFthdHRhY2htZW50c109XCJhdHRhY2htZW50c1wiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvY2NkLXF1ZXJ5LWF0dGFjaG1lbnRzLXJlYWQ+XG4gICAgICAgIDwvZGQ+XG4gICAgICAgIDxkZCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fYWN0aW9uc1wiPlxuICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiBjbGFzcz1cImdvdnVrLWxpbmtcIiAoY2xpY2spPVwiZ29CYWNrKClcIj5cbiAgICAgICAgICAgIHt7ICdDaGFuZ2UnIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2RkPlxuICAgICAgPC9kaXY+XG4gICAgPC9kbD5cblxuICAgIDxicj5cblxuICAgIDxkaXY+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiZ292dWstYnV0dG9uIGdvdnVrLWJ1dHRvbi0tc2Vjb25kYXJ5IGdvdnVrLSEtbWFyZ2luLXJpZ2h0LTNcIiBkYXRhLW1vZHVsZT1cImdvdnVrLWJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJnb0JhY2soKVwiPlxuICAgICAgICB7eyAnUHJldmlvdXMnIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJnb3Z1ay1idXR0b25cIiBkYXRhLW1vZHVsZT1cImdvdnVrLWJ1dHRvblwiIHR5cGU9XCJzdWJtaXRcIiAoY2xpY2spPVwic3VibWl0KClcIj5cbiAgICAgICAge3sgJ1N1Ym1pdCcgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8Y2NkLXF1ZXJ5LWV2ZW50LWNvbXBsZXRpb24gW2V2ZW50Q29tcGxldGlvblBhcmFtc109XCJldmVudENvbXBsZXRpb25QYXJhbXNcIj4gICAgXG4gIDwvY2NkLXF1ZXJ5LWV2ZW50LWNvbXBsZXRpb24+XG48L2Rpdj5cbiJdfQ==
|
|
601
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktY2hlY2steW91ci1hbnN3ZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWVyeS1jaGVjay15b3VyLWFuc3dlcnMvcXVlcnktY2hlY2steW91ci1hbnN3ZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWVyeS1jaGVjay15b3VyLWFuc3dlcnMvcXVlcnktY2hlY2steW91ci1hbnN3ZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUNMLGdCQUFnQixFQUtqQixNQUFNLHdDQUF3QyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckcsT0FBTyxFQUFrRCxrQkFBa0IsRUFBRSxhQUFhLEVBQUUs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QkFBeEMsTUFBTTs7a0ZBakJJLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN3aXRjaE1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIENhc2VFdmVudFRyaWdnZXIsXG4gIENhc2VGaWVsZCxcbiAgQ2FzZVZpZXcsXG4gIENhc2VWaWV3VHJpZ2dlcixcbiAgRXJyb3JNZXNzYWdlXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9zaGFyZWQvZG9tYWluJztcbmltcG9ydCB7IFNlc3Npb25TdG9yYWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IEV2ZW50Q29tcGxldGlvblBhcmFtcyB9IGZyb20gJy4uLy4uLy4uLy4uL2Nhc2UtZWRpdG9yL2RvbWFpbi9ldmVudC1jb21wbGV0aW9uLXBhcmFtcy5tb2RlbCc7XG5pbXBvcnQgeyBDYXNlTm90aWZpZXIsIENhc2VzU2VydmljZSwgV29ya0FsbG9jYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY2FzZS1lZGl0b3Ivc2VydmljZXMnO1xuaW1wb3J0IHsgQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uLCBRbUNhc2VRdWVyaWVzQ29sbGVjdGlvbiwgUXVlcnlDcmVhdGVDb250ZXh0LCBRdWVyeUxpc3RJdGVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IFF1ZXJ5TWFuYWdlbWVudFV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMvcXVlcnktbWFuYWdlbWVudC51dGlscyc7XG5pbXBvcnQgeyBGb3JtRG9jdW1lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvc2hhcmVkL2RvbWFpbi9kb2N1bWVudCc7XG5pbXBvcnQgeyBRdWFsaWZ5aW5nUXVlc3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcXVhbGlmeWluZy1xdWVzdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFRhc2sgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kb21haW4vd29yay1hbGxvY2F0aW9uL1Rhc2snO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLXF1ZXJ5LWNoZWNrLXlvdXItYW5zd2VycycsXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWVyeS1jaGVjay15b3VyLWFuc3dlcnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9xdWVyeS1jaGVjay15b3VyLWFuc3dlcnMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBRdWVyeUNoZWNrWW91ckFuc3dlcnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgUkFJU0VfQV9RVUVSWV9FVkVOVF9UUklHR0VSX0lEID0gJ3F1ZXJ5TWFuYWdlbWVudFJhaXNlUXVlcnknO1xuICBwcml2YXRlIHJlYWRvbmx5IFJFU1BPTkRfVE9fUVVFUllfRVZFTlRfVFJJR0dFUl9JRCA9ICdxdWVyeU1hbmFnZW1lbnRSZXNwb25kUXVlcnknO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgQ0FTRV9RVUVSSUVTX0NPTExFQ1RJT05fSUQgPSAnQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uJztcbiAgcHVibGljIHJlYWRvbmx5IEZJRUxEX1RZUEVfQ09NUExFWCA9ICdDb21wbGV4JztcbiAgcHVibGljIHJlYWRvbmx5IERJU1BMQVlfQ09OVEVYVF9SRUFET05MWSA9ICdSRUFET05MWSc7XG4gIHB1YmxpYyByZWFkb25seSBRTV9TRUxFQ1RfRklSU1RfQ09MTEVDVElPTiA9ICdzZWxlY3RGaXJzdENvbGxlY3Rpb24nO1xuICBwdWJsaWMgcmVhZG9ubHkgUU1fQ09MTEVDVElPTl9QUk9NUFQgPSAncHJvbXB0UW1Db2xsZWN0aW9uJztcbiAgcHVibGljIHJlYWRvbmx5IENJVklMX0pVUklTRElDVElPTiA9ICdDSVZJTCc7XG5cbiAgQElucHV0KCkgcHVibGljIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICBASW5wdXQoKSBwdWJsaWMgcXVlcnlJdGVtOiBRdWVyeUxpc3RJdGVtO1xuICBASW5wdXQoKSBwdWJsaWMgcXVlcnlDcmVhdGVDb250ZXh0OiBRdWVyeUNyZWF0ZUNvbnRleHQ7XG4gIEBJbnB1dCgpIHB1YmxpYyBldmVudERhdGE6IENhc2VFdmVudFRyaWdnZXIgfCBudWxsID0gbnVsbDtcbiAgQE91dHB1dCgpIHB1YmxpYyBiYWNrQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBxdWVyeVN1Ym1pdHRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBjYWxsYmFja0NvbmZpcm1hdGlvbkJvZHkgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBwcml2YXRlIGNhc2VWaWV3VHJpZ2dlcjogQ2FzZVZpZXdUcmlnZ2VyO1xuICBwdWJsaWMgY2FzZURldGFpbHM6IENhc2VWaWV3O1xuICBwcml2YXRlIHF1ZXJ5SWQ6IHN0cmluZztcbiAgcHJpdmF0ZSB0aWQ6IHN0cmluZztcbiAgcHJpdmF0ZSBjcmVhdGVFdmVudFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHNlYXJjaFRhc2tzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgZmlyc3RDb2xsZWN0aW9uUGlja2VkOiBib29sZWFuID0gZmFsc2U7IC8vIFRyYWNrIHdoZXRoZXIgdGhlIGZpcnN0IGNvbGxlY3Rpb24gaGFzIGJlZW4gcGlja2VkXG4gIHByaXZhdGUgZmlyc3RDb2xsZWN0aW9uT3JkZXI/OiBudW1iZXI7XG5cbiAgcHVibGljIHF1ZXJ5Q3JlYXRlQ29udGV4dEVudW0gPSBRdWVyeUNyZWF0ZUNvbnRleHQ7XG4gIHB1YmxpYyBldmVudENvbXBsZXRpb25QYXJhbXM6IEV2ZW50Q29tcGxldGlvblBhcmFtcztcbiAgcHVibGljIGNhc2VRdWVyaWVzQ29sbGVjdGlvbnM6IENhc2VRdWVyaWVzQ29sbGVjdGlvbltdO1xuICBwdWJsaWMgZmllbGRJZDogc3RyaW5nO1xuICBwdWJsaWMgYXR0YWNobWVudHM6IEZvcm1Eb2N1bWVudFtdO1xuXG4gIHB1YmxpYyBlcnJvck1lc3NhZ2VzOiBFcnJvck1lc3NhZ2VbXSA9IFtdO1xuICBwdWJsaWMgZmlsdGVyZWRUYXNrczogVGFza1tdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhc2VzU2VydmljZTogQ2FzZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZU5vdGlmaWVyOiBDYXNlTm90aWZpZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSB3b3JrQWxsb2NhdGlvblNlcnZpY2U6IFdvcmtBbGxvY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNlc3Npb25TdG9yYWdlU2VydmljZTogU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcXVhbGlmeWluZ1F1ZXN0aW9uU2VydmljZTogUXVhbGlmeWluZ1F1ZXN0aW9uU2VydmljZVxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucXVlcnlJZCA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLnFpZDtcbiAgICB0aGlzLnRpZCA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXM/LnRpZDtcblxuICAgIHRoaXMuY2FzZU5vdGlmaWVyLmNhc2VWaWV3LnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChjYXNlRGV0YWlscykgPT4ge1xuICAgICAgdGhpcy5jYXNlRGV0YWlscyA9IGNhc2VEZXRhaWxzO1xuXG4gICAgICAvLyBGaW5kIHRoZSBhcHByb3ByaWF0ZSBldmVudCB0cmlnZ2VyIGJhc2VkIG9uIHRoZSBxdWVyeUNyZWF0ZUNvbnRleHRcbiAgICAgIHRoaXMuY2FzZVZpZXdUcmlnZ2VyID0gdGhpcy5jYXNlRGV0YWlscy50cmlnZ2Vycy5maW5kKCh0cmlnZ2VyKSA9PlxuICAgICAgICB0aGlzLnF1ZXJ5Q3JlYXRlQ29udGV4dCAhPT0gUXVlcnlDcmVhdGVDb250ZXh0LlJFU1BPTkRcbiAgICAgICAgLy8gSWYgdGhlIGNvbnRleHQgaXMgbm90ICdSRVNQT05EJywgZmluZCB0aGUgdHJpZ2dlciB3aXRoIHRoZSBJRCBmb3IgcmFpc2luZyBhIHF1ZXJ5XG4gICAgICAgICAgPyB0cmlnZ2VyLmlkID09PSB0aGlzLlJBSVNFX0FfUVVFUllfRVZFTlRfVFJJR0dFUl9JRFxuICAgICAgICAvLyBJZiB0aGUgY29udGV4dCBpcyAnUkVTUE9ORCcsIGZpbmQgdGhlIHRyaWdnZXIgd2l0aCB0aGUgSUQgZm9yIHJlc3BvbmRpbmcgdG8gYSBxdWVyeVxuICAgICAgICAgIDogdHJpZ2dlci5pZCA9PT0gdGhpcy5SRVNQT05EX1RPX1FVRVJZX0VWRU5UX1RSSUdHRVJfSURcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICAvLyBHZXQgdGhlIGRvY3VtZW50IGF0dGFjaG1lbnRzXG4gICAgdGhpcy5nZXREb2N1bWVudEF0dGFjaG1lbnRzKCk7XG5cbiAgICB0aGlzLnNldENhc2VRdWVyaWVzQ29sbGVjdGlvbkRhdGEoKTtcblxuICAgIGlmICh0aGlzLnF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gUXVlcnlDcmVhdGVDb250ZXh0LlJFU1BPTkQpIHtcbiAgICAgIHRoaXMuc2VhcmNoVGFza3NTdWJzY3JpcHRpb24gPSB0aGlzLndvcmtBbGxvY2F0aW9uU2VydmljZS5nZXRUYXNrc0J5Q2FzZUlkQW5kRXZlbnRJZCh0aGlzLlJFU1BPTkRfVE9fUVVFUllfRVZFTlRfVFJJR0dFUl9JRCxcbiAgICAgICAgdGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkLCB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfdHlwZS5pZCwgdGhpcy5jYXNlRGV0YWlscy5jYXNlX3R5cGUuanVyaXNkaWN0aW9uLmlkKVxuICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIC8vIEZpbHRlciB0YXNrIGJ5IHF1ZXJ5IGlkXG4gICAgICAgICAgICBpZiAodGhpcy50aWQpIHtcbiAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnRhc2tzPy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZFRhc2tzID0gcmVzcG9uc2UudGFza3M/LmZpbHRlcigodGFzazogVGFzaykgPT4gdGFzay5pZCA9PT0gdGhpcy50aWQpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRUYXNrcyA9IHJlc3BvbnNlLnRhc2tzO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBpbiBzZWFyY2hUYXNrc1N1YnNjcmlwdGlvbjonLCBlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jcmVhdGVFdmVudFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnNlYXJjaFRhc2tzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGdvQmFjaygpOiB2b2lkIHtcbiAgICB0aGlzLmJhY2tDbGlja2VkLmVtaXQodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgc3VibWl0KCk6IHZvaWQge1xuICAgIC8vIENoZWNrIGlmIGZpZWxkSWQgaXMgbnVsbCBvciB1bmRlZmluZWRcbiAgICBpZiAoIXRoaXMuZmllbGRJZCkge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3I6IEZpZWxkIElEIGlzIG1pc3NpbmcuIENhbm5vdCBwcm9jZWVkIHdpdGggc3VibWlzc2lvbi4nKTtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlcyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHRpdGxlOiAnRXJyb3InLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBjYXNlIGlzIG5vdCBjb25maWd1cmVkIGZvciBxdWVyeSBtYW5hZ2VtZW50LicsXG4gICAgICAgICAgZmllbGRJZDogJ2ZpZWxkLWlkJ1xuICAgICAgICB9XG4gICAgICBdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdlbmVyYXRlQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uRGF0YSgpO1xuICAgIGNvbnN0IGNyZWF0ZUV2ZW50JCA9IHRoaXMuY3JlYXRlRXZlbnQoZGF0YSk7XG5cbiAgICBpZiAodGhpcy5xdWVyeUNyZWF0ZUNvbnRleHQgPT09IFF1ZXJ5Q3JlYXRlQ29udGV4dC5SRVNQT05EKSB7XG4gICAgICBpZiAodGhpcy5maWx0ZXJlZFRhc2tzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuY3JlYXRlRXZlbnRTdWJzY3JpcHRpb24gPSBjcmVhdGVFdmVudCQucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAoKGNyZWF0ZUV2ZW50UmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpcm1hdGlvbkJvZHkgPSBjcmVhdGVFdmVudFJlc3BvbnNlPy5hZnRlcl9zdWJtaXRfY2FsbGJhY2tfcmVzcG9uc2U/LmNvbmZpcm1hdGlvbl9ib2R5O1xuICAgICAgICAgICAgdGhpcy5jYWxsYmFja0NvbmZpcm1hdGlvbkJvZHkuZW1pdChjb25maXJtYXRpb25Cb2R5KTtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMud29ya0FsbG9jYXRpb25TZXJ2aWNlLmNvbXBsZXRlVGFzayhcbiAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZFRhc2tzWzBdLmlkLFxuICAgICAgICAgICAgICB0aGlzLmNhc2VWaWV3VHJpZ2dlci5uYW1lXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSlcbiAgICAgICAgKS5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6ICgpID0+IHRoaXMuZmluYWxpc2VTdWJtaXNzaW9uKCksXG4gICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnJvcilcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvcjogTm8gdGFzayB0byBjb21wbGV0ZSB3YXMgZm91bmQnKTtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2VzID0gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRpdGxlOiAnRXJyb3InLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdObyB0YXNrIHRvIGNvbXBsZXRlIHdhcyBmb3VuZCcsXG4gICAgICAgICAgICBmaWVsZElkOiAnZmllbGQtaWQnXG4gICAgICAgICAgfVxuICAgICAgICBdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNyZWF0ZUV2ZW50U3Vic2NyaXB0aW9uID0gY3JlYXRlRXZlbnQkLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChjYWxsYmFja1Jlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5maW5hbGlzZVN1Ym1pc3Npb24oKTtcbiAgICAgICAgICBjb25zdCBjb25maXJtYXRpb25Cb2R5ID0gY2FsbGJhY2tSZXNwb25zZT8uYWZ0ZXJfc3VibWl0X2NhbGxiYWNrX3Jlc3BvbnNlPy5jb25maXJtYXRpb25fYm9keTtcbiAgICAgICAgICB0aGlzLmNhbGxiYWNrQ29uZmlybWF0aW9uQm9keS5lbWl0KGNvbmZpcm1hdGlvbkJvZHkpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycm9yKVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVFdmVudChkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmNhc2VzU2VydmljZS5jcmVhdGVFdmVudCh0aGlzLmNhc2VEZXRhaWxzLCB7XG4gICAgICBkYXRhLFxuICAgICAgZXZlbnQ6IHtcbiAgICAgICAgaWQ6IHRoaXMuY2FzZVZpZXdUcmlnZ2VyPy5pZCxcbiAgICAgICAgc3VtbWFyeTogJycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmNhc2VWaWV3VHJpZ2dlcj8uZGVzY3JpcHRpb25cbiAgICAgIH0sXG4gICAgICBldmVudF90b2tlbjogdGhpcy5ldmVudERhdGE/LmV2ZW50X3Rva2VuLFxuICAgICAgaWdub3JlX3dhcm5pbmc6IGZhbHNlXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGZpbmFsaXNlU3VibWlzc2lvbigpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5U3VibWl0dGVkLmVtaXQodHJ1ZSk7XG4gICAgdGhpcy5xdWFsaWZ5aW5nUXVlc3Rpb25TZXJ2aWNlLmNsZWFyUXVhbGlmeWluZ1F1ZXN0aW9uU2VsZWN0aW9uKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUVycm9yKGVycm9yOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zb2xlLmVycm9yKCdFcnJvciBpbiBBUEkgY2FsbHM6JywgZXJyb3IpO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLycsICdzZXJ2aWNlLWRvd24nXSk7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uRGF0YSgpOiBRbUNhc2VRdWVyaWVzQ29sbGVjdGlvbiB7XG4gICAgY29uc3QgY3VycmVudFVzZXJEZXRhaWxzID0gSlNPTi5wYXJzZSh0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRJdGVtKCd1c2VyRGV0YWlscycpKTtcblxuICAgIGNvbnN0IGNhc2VNZXNzYWdlID0gdGhpcy5xdWVyeUNyZWF0ZUNvbnRleHQgPT09IFF1ZXJ5Q3JlYXRlQ29udGV4dC5ORVdfUVVFUllcbiAgICAgID8gUXVlcnlNYW5hZ2VtZW50VXRpbHMuZ2V0TmV3UXVlcnlEYXRhKHRoaXMuZm9ybUdyb3VwLCBjdXJyZW50VXNlckRldGFpbHMpXG4gICAgICA6IFF1ZXJ5TWFuYWdlbWVudFV0aWxzLmdldFJlc3BvbmRPckZvbGxvd3VwUXVlcnlEYXRhKHRoaXMuZm9ybUdyb3VwLCB0aGlzLnF1ZXJ5SXRlbSwgY3VycmVudFVzZXJEZXRhaWxzKTtcblxuICAgIGNvbnN0IG1lc3NhZ2VJZCA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLmRhdGFpZDsgLy8gR2V0IHRoZSBtZXNzYWdlIElEIGZyb20gcm91dGUgcGFyYW1zIChpZiBwcmVzZW50KVxuICAgIGNvbnN0IGlzTmV3UXVlcnkgPSB0aGlzLnF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gUXVlcnlDcmVhdGVDb250ZXh0Lk5FV19RVUVSWTsgLy8gQ2hlY2sgaWYgdGhpcyBpcyBhIG5ldyBxdWVyeVxuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGZpZWxkIElEIGhhcyBiZWVuIHNldCBkeW5hbWljYWxseVxuICAgIGlmICghdGhpcy5maWVsZElkKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvcjogRmllbGQgSUQgZm9yIENhc2VRdWVyaWVzQ29sbGVjdGlvbiBub3QgZm91bmQuIENhbm5vdCBwcm9jZWVkIHdpdGggZGF0YSBnZW5lcmF0aW9uLicpO1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvJywgJ3NlcnZpY2UtZG93biddKTtcbiAgICB9XG5cbiAgICAvLyBJbml0aWFsaXplIG5ldyBxdWVyeSBkYXRhIHN0cnVjdHVyZVxuICAgIGNvbnN0IG5ld1F1ZXJ5RGF0YTogUW1DYXNlUXVlcmllc0NvbGxlY3Rpb24gPSB7fTtcblxuICAgIGlmICh0aGlzLmNhc2VRdWVyaWVzQ29sbGVjdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgbGV0IG1hdGNoZWRDb2xsZWN0aW9uO1xuXG4gICAgICAvLyBJZiBpdCdzIG5vdCBhIG5ldyBxdWVyeSwgdHJ5IHRvIGZpbmQgdGhlIGV4aXN0aW5nIGNvbGxlY3Rpb24gd2l0aCB0aGUgbWVzc2FnZSBJRFxuICAgICAgaWYgKCFpc05ld1F1ZXJ5ICYmIG1lc3NhZ2VJZCkge1xuICAgICAgICBtYXRjaGVkQ29sbGVjdGlvbiA9IHRoaXMuY2FzZVF1ZXJpZXNDb2xsZWN0aW9ucy5maW5kKChjb2xsZWN0aW9uKSA9PlxuICAgICAgICAgIGNvbGxlY3Rpb24uY2FzZU1lc3NhZ2VzLnNvbWUoKG1lc3NhZ2UpID0+IG1lc3NhZ2UudmFsdWUuaWQgPT09IG1lc3NhZ2VJZClcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1hdGNoZWRDb2xsZWN0aW9uKSB7XG4gICAgICAgIC8vIEFwcGVuZCB0aGUgbmV3IGNhc2UgbWVzc2FnZSB0byB0aGUgbWF0Y2hlZCBjb2xsZWN0aW9uJ3MgY2FzZU1lc3NhZ2VzXG4gICAgICAgIG1hdGNoZWRDb2xsZWN0aW9uLmNhc2VNZXNzYWdlcy5wdXNoKHtcbiAgICAgICAgICBpZDogbnVsbCxcbiAgICAgICAgICB2YWx1ZTogY2FzZU1lc3NhZ2VcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQWRkIHRoZSBtYXRjaGVkIGNvbGxlY3Rpb24gdG8gbmV3UXVlcnlEYXRhXG4gICAgICAgIG5ld1F1ZXJ5RGF0YVt0aGlzLmZpZWxkSWRdID0ge1xuICAgICAgICAgIC4uLm1hdGNoZWRDb2xsZWN0aW9uLCAvLyBLZWVwIGV4aXN0aW5nIGRhdGEgaW50YWN0XG4gICAgICAgICAgY2FzZU1lc3NhZ2VzOiBbLi4ubWF0Y2hlZENvbGxlY3Rpb24uY2FzZU1lc3NhZ2VzXSAvLyBBcHBlbmQgdGhlIHVwZGF0ZWQgbWVzc2FnZXMgYXJyYXlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIElmIG5vIGNvbGxlY3Rpb24gbWF0Y2hlcywgb3IgaXQncyBhIG5ldyBxdWVyeVxuICAgICAgICBuZXdRdWVyeURhdGFbdGhpcy5maWVsZElkXSA9IHtcbiAgICAgICAgICBwYXJ0eU5hbWU6IGN1cnJlbnRVc2VyRGV0YWlscz8ubmFtZSB8fCBgJHtjdXJyZW50VXNlckRldGFpbHM/LmZvcmVuYW1lfSAke2N1cnJlbnRVc2VyRGV0YWlscz8uc3VybmFtZX1gLCAvLyBOb3QgcmV0dXJuZWQgYnkgQ0NEXG4gICAgICAgICAgcm9sZU9uQ2FzZTogJycsIC8vIE5vdCByZXR1cm5lZCBieSBDQ0RcbiAgICAgICAgICBjYXNlTWVzc2FnZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWQ6IG51bGwsXG4gICAgICAgICAgICAgIHZhbHVlOiBjYXNlTWVzc2FnZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgICAvLyBJZiBjYXNlUXVlcmllc0NvbGxlY3Rpb25zIGlzIG5vdCBlbXB0eSwgYXBwZW5kIGl0cyBkYXRhXG4gICAgICAgIG5ld1F1ZXJ5RGF0YVt0aGlzLmZpZWxkSWRdLmNhc2VNZXNzYWdlcy5wdXNoKFxuICAgICAgICAgIC4uLnRoaXMuY2FzZVF1ZXJpZXNDb2xsZWN0aW9ucy5mbGF0TWFwKChjb2xsZWN0aW9uKSA9PiBjb2xsZWN0aW9uLmNhc2VNZXNzYWdlcylcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIGV4aXN0aW5nIGNvbGxlY3Rpb25zLCBjcmVhdGUgYSBuZXcgb25lIChlLmcuLCBmb3IgbmV3IHF1ZXJpZXMpXG4gICAgICBuZXdRdWVyeURhdGFbdGhpcy5maWVsZElkXSA9IHtcbiAgICAgICAgcGFydHlOYW1lOiBjdXJyZW50VXNlckRldGFpbHM/Lm5hbWUgfHwgYCR7Y3VycmVudFVzZXJEZXRhaWxzPy5mb3JlbmFtZX0gJHtjdXJyZW50VXNlckRldGFpbHM/LnN1cm5hbWV9YCwgLy8gTm90IHJldHVybmVkIGJ5IENDRFxuICAgICAgICByb2xlT25DYXNlOiAnJywgLy8gTm90IHJldHVybmVkIGJ5IENDRFxuICAgICAgICBjYXNlTWVzc2FnZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogbnVsbCxcbiAgICAgICAgICAgIHZhbHVlOiBjYXNlTWVzc2FnZVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld1F1ZXJ5RGF0YTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRDYXNlUXVlcmllc0NvbGxlY3Rpb25EYXRhKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmV2ZW50RGF0YT8uY2FzZV9maWVsZHM/Lmxlbmd0aCkge1xuICAgICAgLy8gV29ya2Fyb3VuZCBmb3IgbXVsdGlwbGUgcW1DYXNlUXVlcmllc0NvbGxlY3Rpb25zIHRoYXQgYXJlIG5vdCB0byBiZSBhcHBlYXJpbmcgaW4gdGhlIGV2ZW50RGF0YVxuICAgICAgLy8gQ291bnRzIG51bWJlciBxbUNhc2VRdWVyaWVzQ29sbGVjdGlvbnNcbiAgICAgIGNvbnN0IG51bWJlck9mQ2FzZVF1ZXJpZXNDb2xsZWN0aW9ucyA9IHRoaXMuZXZlbnREYXRhPy5jYXNlX2ZpZWxkcz8uZmlsdGVyKFxuICAgICAgICAoY2FzZUZpZWxkKSA9PlxuICAgICAgICAgIGNhc2VGaWVsZC5maWVsZF90eXBlLmlkID09PSB0aGlzLkNBU0VfUVVFUklFU19DT0xMRUNUSU9OX0lEICYmXG4gICAgICAgICAgY2FzZUZpZWxkLmZpZWxkX3R5cGUudHlwZSA9PT0gdGhpcy5GSUVMRF9UWVBFX0NPTVBMRVggJiYgY2FzZUZpZWxkLmRpc3BsYXlfY29udGV4dCAhPT0gdGhpcy5ESVNQTEFZX0NPTlRFWFRfUkVBRE9OTFlcbiAgICAgICk/Lmxlbmd0aCB8fCAwO1xuXG4gICAgICB0aGlzLmNhc2VRdWVyaWVzQ29sbGVjdGlvbnMgPSB0aGlzLmV2ZW50RGF0YS5jYXNlX2ZpZWxkcy5yZWR1Y2UoKGFjYywgY2FzZUZpZWxkKSA9PiB7XG4gICAgICAgIC8vIEV4dHJhY3QgdGhlIElEIGJhc2VkIG9uIGNvbmRpdGlvbnMsIHVwZGF0aW5nIHRoaXMuZmllbGRJZCBkeW5hbWljYWxseVxuICAgICAgICB0aGlzLmV4dHJhY3RDYXNlUXVlcnlJZChjYXNlRmllbGQsIG51bWJlck9mQ2FzZVF1ZXJpZXNDb2xsZWN0aW9ucyk7XG5cbiAgICAgICAgY29uc3QgZXh0cmFjdGVkQ2FzZVF1ZXJpZXNGcm9tQ2FzZUZpZWxkID0gUXVlcnlNYW5hZ2VtZW50VXRpbHMuZXh0cmFjdENhc2VRdWVyaWVzRnJvbUNhc2VGaWVsZChjYXNlRmllbGQpO1xuICAgICAgICBpZiAoZXh0cmFjdGVkQ2FzZVF1ZXJpZXNGcm9tQ2FzZUZpZWxkICYmIHR5cGVvZiBleHRyYWN0ZWRDYXNlUXVlcmllc0Zyb21DYXNlRmllbGQgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgYWNjLnB1c2goZXh0cmFjdGVkQ2FzZVF1ZXJpZXNGcm9tQ2FzZUZpZWxkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSwgW10pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZXh0cmFjdENhc2VRdWVyeUlkKGRhdGE6IENhc2VGaWVsZCwgY291bnQ6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHsgaWQsIHZhbHVlIH0gPSBkYXRhO1xuICAgIGNvbnN0IG1lc3NhZ2VJZCA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLmRhdGFpZDtcblxuICAgIC8vIENoZWNrIGlmIHRoZSBmaWVsZF90eXBlIG1hdGNoZXMgQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uIGFuZCB0eXBlIGlzIENvbXBsZXhcbiAgICBpZiAoZGF0YS5maWVsZF90eXBlLmlkID09PSB0aGlzLkNBU0VfUVVFUklFU19DT0xMRUNUSU9OX0lEICYmIGRhdGEuZmllbGRfdHlwZS50eXBlID09PSB0aGlzLkZJRUxEX1RZUEVfQ09NUExFWCkge1xuICAgICAgaWYgKHRoaXMuaXNOZXdRdWVyeUNvbnRleHQoZGF0YSkpIHtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBxbUNhc2VRdWVyaWVzQ29sbGVjdGlvbiwgcGljayB0aGUgb25lIHdpdGggdGhlIGxvd2VzdCBvcmRlclxuICAgICAgICBpZiAoY291bnQgPiAxKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmhhbmRsZU11bHRpcGxlQ29sbGVjdGlvbnMoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBTZXQgdGhlIGZpZWxkIElEIGR5bmFtaWNhbGx5IGJhc2VkIG9uIHRoZSBleHRyYWN0ZWQgZGF0YVxuICAgICAgICAgIHRoaXMuZmllbGRJZCA9IGlkOyAvLyBTdG9yZSB0aGUgSUQgZm9yIHVzZSBpbiBnZW5lcmF0aW5nIG5ld1F1ZXJ5RGF0YVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIElmIG1lc3NhZ2VJZCBpcyBwcmVzZW50LCBmaW5kIHRoZSBjb3JyZXNwb25kaW5nIGNhc2UgbWVzc2FnZVxuICAgICAgdGhpcy5zZXRNZXNzYWdlRmllbGRJZChtZXNzYWdlSWQsIHZhbHVlLCBpZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRNZXNzYWdlRmllbGRJZChtZXNzYWdlSWQsIHZhbHVlLCBpZDogc3RyaW5nKSB7XG4gICAgaWYgKG1lc3NhZ2VJZCAmJiB2YWx1ZT8uY2FzZU1lc3NhZ2VzKSB7XG4gICAgICAvLyBJZiBhIG1hdGNoaW5nIG1lc3NhZ2UgaXMgZm91bmQsIHNldCB0aGUgZmllbGRJZCB0byB0aGUgY29ycmVzcG9uZGluZyBpZFxuICAgICAgY29uc3QgbWF0Y2hlZE1lc3NhZ2UgPSB2YWx1ZT8uY2FzZU1lc3NhZ2VzPy5maW5kKChtZXNzYWdlKSA9PiBtZXNzYWdlLnZhbHVlLmlkID09PSBtZXNzYWdlSWQpO1xuICAgICAgaWYgKG1hdGNoZWRNZXNzYWdlKSB7XG4gICAgICAgIHRoaXMuZmllbGRJZCA9IGlkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNOZXdRdWVyeUNvbnRleHQoZGF0YTogQ2FzZUZpZWxkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnlDcmVhdGVDb250ZXh0ID09PSBRdWVyeUNyZWF0ZUNvbnRleHQuTkVXX1FVRVJZICYmIGRhdGEuZGlzcGxheV9jb250ZXh0ICE9PSB0aGlzLkRJU1BMQVlfQ09OVEVYVF9SRUFET05MWTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTXVsdGlwbGVDb2xsZWN0aW9ucygpOiBib29sZWFuIHtcbiAgICBjb25zdCBqdXJpc2RpY3Rpb25JZCA9IHRoaXMuY2FzZURldGFpbHM/LmNhc2VfdHlwZT8uanVyaXNkaWN0aW9uPy5pZDtcblxuICAgIGlmICghanVyaXNkaWN0aW9uSWQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0p1cmlzZGljdGlvbiBJRCBpcyBtaXNzaW5nLicpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmdldENvbGxlY3Rpb25TZWxlY3Rpb25NZXRob2QoanVyaXNkaWN0aW9uSWQpID09PSB0aGlzLlFNX1NFTEVDVF9GSVJTVF9DT0xMRUNUSU9OKSB7XG4gICAgICAvLyBQaWNrIHRoZSBjb2xsZWN0aW9uIHdpdGggdGhlIGxvd2VzdCBvcmRlclxuICAgICAgdGhpcy5maWVsZElkID0gdGhpcy5nZXRDYXNlUXVlcmllc0NvbGxlY3Rpb25GaWVsZE9yZGVyRnJvbVdpemFyZFBhZ2VzKCk/LmlkO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBEaXNwbGF5IEVycm9yLCBmb3Igbm93LCB1bnRpbCBFWFVJLTI2NDQgaXMgaW1wbGVtZW50ZWRcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yOiBNdWx0aXBsZSBDYXNlUXVlcmllc0NvbGxlY3Rpb25zIGFyZSBub3Qgc3VwcG9ydGVkIHlldCBmb3IgdGhlICR7anVyaXNkaWN0aW9uSWR9IGp1cmlzZGljdGlvbmApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDYXNlUXVlcmllc0NvbGxlY3Rpb25GaWVsZE9yZGVyRnJvbVdpemFyZFBhZ2VzKCk6IENhc2VGaWVsZCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgY2FuZGlkYXRlRmllbGRzID0gdGhpcy5ldmVudERhdGE/LmNhc2VfZmllbGRzPy5maWx0ZXIoXG4gICAgICAoZmllbGQpID0+XG4gICAgICAgIGZpZWxkLmZpZWxkX3R5cGUuaWQgPT09IHRoaXMuQ0FTRV9RVUVSSUVTX0NPTExFQ1RJT05fSUQgJiZcbiAgICAgICAgZmllbGQuZmllbGRfdHlwZS50eXBlID09PSB0aGlzLkZJRUxEX1RZUEVfQ09NUExFWCAmJlxuICAgICAgICBmaWVsZC5kaXNwbGF5X2NvbnRleHQgIT09IHRoaXMuRElTUExBWV9DT05URVhUX1JFQURPTkxZXG4gICAgKTtcblxuICAgIGlmICghY2FuZGlkYXRlRmllbGRzPy5sZW5ndGgpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBmaXJzdFBhZ2VGaWVsZHMgPSB0aGlzLmV2ZW50RGF0YT8ud2l6YXJkX3BhZ2VzPy5bMF0/LndpemFyZF9wYWdlX2ZpZWxkcztcblxuICAgIGlmICghZmlyc3RQYWdlRmllbGRzKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIGNhbmRpZGF0ZUZpZWxkc1xuICAgICAgLm1hcCgoZmllbGQpID0+IHtcbiAgICAgICAgY29uc3Qgd2l6YXJkRmllbGQgPSBmaXJzdFBhZ2VGaWVsZHMuZmluZChmID0+IGYuY2FzZV9maWVsZF9pZCA9PT0gZmllbGQuaWQpO1xuICAgICAgICByZXR1cm4geyBmaWVsZCwgb3JkZXI6IHdpemFyZEZpZWxkPy5vcmRlciA/PyBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiB9O1xuICAgICAgfSlcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLm9yZGVyIC0gYi5vcmRlcilbMF0/LmZpZWxkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb2xsZWN0aW9uU2VsZWN0aW9uTWV0aG9kKGp1cmlzZGljdGlvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4ganVyaXNkaWN0aW9uLnRvVXBwZXJDYXNlKCkgPT09IHRoaXMuQ0lWSUxfSlVSSVNESUNUSU9OID8gdGhpcy5RTV9TRUxFQ1RfRklSU1RfQ09MTEVDVElPTiA6IHRoaXMuUU1fQ09MTEVDVElPTl9QUk9NUFQ7XG4gIH1cblxuICBwcml2YXRlIGdldERvY3VtZW50QXR0YWNobWVudHMoKTogdm9pZCB7XG4gICAgY29uc3QgYXR0YWNobWVudHNWYWx1ZSA9IHRoaXMuZm9ybUdyb3VwLmdldCgnYXR0YWNobWVudHMnKS52YWx1ZTtcbiAgICBpZiAoYXR0YWNobWVudHNWYWx1ZSAmJiBhdHRhY2htZW50c1ZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGRvY3VtZW50cyA9IGF0dGFjaG1lbnRzVmFsdWU7XG4gICAgICB0aGlzLmF0dGFjaG1lbnRzID0gZG9jdW1lbnRzLm1hcChRdWVyeU1hbmFnZW1lbnRVdGlscy5kb2N1bWVudFRvQ29sbGVjdGlvbkZvcm1Eb2N1bWVudCk7XG4gICAgfVxuICB9XG59XG5cbiIsIjxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLXJvd1wiPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1jb2x1bW4tdHdvLXRoaXJkcy1mcm9tLWRlc2t0b3BcIj5cbiAgICA8IS0tIEVycm9yIG1lc3NhZ2Ugc3VtbWFyeSAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiZXJyb3JNZXNzYWdlcy5sZW5ndGggPiAwXCIgY2xhc3M9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5XCJcbiAgICAgIGFyaWEtbGFiZWxsZWRieT1cImVycm9yLXN1bW1hcnktdGl0bGVcIiByb2xlPVwiYWxlcnRcIiB0YWJpbmRleD1cIi0xXCJcbiAgICAgIGRhdGEtbW9kdWxlPVwiZ292dWstZXJyb3Itc3VtbWFyeVwiPlxuICAgICA8aDIgY2xhc3M9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5X190aXRsZVwiIGlkPVwiZXJyb3Itc3VtbWFyeS10aXRsZVwiPlxuICAgICAgIHt7ICdUaGVyZSBpcyBhIHByb2JsZW0nIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgIDwvaDI+XG4gICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5X19ib2R5XCI+XG4gICAgICAgPHVsIGNsYXNzPVwiZ292dWstbGlzdCBnb3Z1ay1lcnJvci1zdW1tYXJ5X19saXN0XCI+XG4gICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiBlcnJvck1lc3NhZ2VzXCI+XG4gICAgICAgICAgIDxhIFtpZF09XCInZXJyb3ItJyArIGVycm9yTWVzc2FnZS5maWVsZElkXCIgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiXG4gICAgICAgICAgICAgY2xhc3M9XCJ2YWxpZGF0aW9uLWVycm9yXCI+e3sgZXJyb3JNZXNzYWdlLmRlc2NyaXB0aW9uIHwgcnB4VHJhbnNsYXRlIH19PC9hPlxuICAgICAgICAgPC9saT5cbiAgICAgICA8L3VsPlxuICAgICA8L2Rpdj5cbiAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gcXVlcnlDcmVhdGVDb250ZXh0RW51bS5ORVdfUVVFUllcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1jYXB0aW9uLWxcIj57eyAnUmFpc2UgYSBxdWVyeScgfCBycHhUcmFuc2xhdGUgfX08L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxoMSBjbGFzcz1cImdvdnVrLWhlYWRpbmctbFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gcXVlcnlDcmVhdGVDb250ZXh0RW51bS5SRVNQT05EOyBlbHNlIGRlZmF1bHRDaGVja1lvdXJBbnN3ZXJzVGl0bGVcIj5cbiAgICAgICAge3sgJ1JldmlldyBxdWVyeSByZXNwb25zZSBkZXRhaWxzJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdENoZWNrWW91ckFuc3dlcnNUaXRsZT5cbiAgICAgICAge3sgJ1JldmlldyBxdWVyeSBkZXRhaWxzJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2gxPlxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay0hLW1hcmdpbi1ib3R0b20tNFwiPlxuICAgICAgPGNjZC1xdWVyeS1jYXNlLWRldGFpbHMtaGVhZGVyIFtjYXNlRGV0YWlsc109XCJjYXNlRGV0YWlsc1wiPjwvY2NkLXF1ZXJ5LWNhc2UtZGV0YWlscy1oZWFkZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGwgKm5nSWY9XCJxdWVyeUNyZWF0ZUNvbnRleHQgIT09IHF1ZXJ5Q3JlYXRlQ29udGV4dEVudW0uRk9MTE9XVVBcIiBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdCBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fcm93XCI+XG4gICAgICAgIDxkdCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5XCI+XG4gICAgICAgICAge3sgcXVlcnlDcmVhdGVDb250ZXh0ID09PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLlJFU1BPTkQgPyAnU3VibWl0dGVkIHF1ZXJ5JyA6ICdRdWVyeSBzdWJqZWN0JyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2R0PlxuICAgICAgICA8ZGQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlXCI+XG4gICAgICAgICAge3sgcXVlcnlDcmVhdGVDb250ZXh0ID09PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLlJFU1BPTkQgPyBxdWVyeUl0ZW0uc3ViamVjdCA6IGZvcm1Hcm91cC5nZXQoJ3N1YmplY3QnKT8udmFsdWUgfX1cbiAgICAgICAgPC9kZD5cbiAgICAgICAgPGRkIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19hY3Rpb25zXCI+XG4gICAgICAgICAgPGEgICpuZ0lmPVwicXVlcnlDcmVhdGVDb250ZXh0ID09PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLk5FV19RVUVSWVwiIFxuICAgICAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwiZ292dWstbGlua1wiIChjbGljayk9XCJnb0JhY2soKVwiPlxuICAgICAgICAgICAge3sgJ0NoYW5nZScgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2RsPlxuXG4gICAgPGRsIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0IGdvdnVrLSEtbWFyZ2luLWJvdHRvbS0wXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19yb3dcIj5cbiAgICAgICAgPGR0IGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19rZXlcIj5cbiAgICAgICAgICB7eyBxdWVyeUNyZWF0ZUNvbnRleHQgPT09IHF1ZXJ5Q3JlYXRlQ29udGV4dEVudW0uUkVTUE9ORCA/ICdSZXNwb25zZSBkZXRhaWwnIDogJ1F1ZXJ5IGRldGFpbCcgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgPC9kdD5cbiAgICAgICAgPGRkIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X192YWx1ZVwiPlxuICAgICAgICAgIHt7IGZvcm1Hcm91cC5nZXQoJ2JvZHknKT8udmFsdWUgfX1cbiAgICAgICAgPC9kZD5cbiAgICAgICAgPGRkIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19hY3Rpb25zXCI+XG4gICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwiZ292dWstbGlua1wiIChjbGljayk9XCJnb0JhY2soKVwiPlxuICAgICAgICAgICAge3sgJ0NoYW5nZScgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2RsPlxuXG4gICAgPGRsICpuZ0lmPVwicXVlcnlDcmVhdGVDb250ZXh0ID09PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLk5FV19RVUVSWVwiIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0IGdvdnVrLSEtbWFyZ2luLWJvdHRvbS0wXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19yb3dcIj5cbiAgICAgICAgPGR0IGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19rZXlcIj5cbiAgICAgICAgICB7eyAnSXMgdGhlIHF1ZXJ5IGhlYXJpbmcgcmVsYXRlZD8nIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgIDwvZHQ+XG4gICAgICAgIDxkZCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWVcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZm9ybUdyb3VwLmdldCgnaXNIZWFyaW5nUmVsYXRlZCcpPy52YWx1ZSA9PT0gdHJ1ZTsgZWxzZSBpc0hlYXJpbmdSZWxhdGVkRmFsc2VcIj5cbiAgICAgICAgICAgIHt7ICdJcyB0aGUgcXVlcnkgaGVhcmluZyByZWxhdGVkPycgfCBycHhUcmFuc2xhdGU6IG51bGwgOiAnWWVzJyB9fVxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaXNIZWFyaW5nUmVsYXRlZEZhbHNlPlxuICAgICAgICAgICAge3sgJ0lzIHRoZSBxdWVyeSBoZWFyaW5nIHJlbGF0ZWQ/JyB8IHJweFRyYW5zbGF0ZTogbnVsbCA6ICdObycgfX1cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2RkPlxuICAgICAgICA8ZGQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2FjdGlvbnNcIj5cbiAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgY2xhc3M9XCJnb3Z1ay1saW5rXCIgKGNsaWNrKT1cImdvQmFjaygpXCI+XG4gICAgICAgICAgICB7eyAnQ2hhbmdlJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kZD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUdyb3VwLmdldCgnaXNIZWFyaW5nUmVsYXRlZCcpPy52YWx1ZVwiIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19yb3dcIj5cbiAgICAgICAgPGR0IGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19rZXlcIj5cbiAgICAgICAgICB7eyBxdWVyeUNyZWF0ZUNvbnRleHQgPT09IHF1ZXJ5Q3JlYXRlQ29udGV4dEVudW0uTkVXX1FVRVJZXG4gICAgICAgICAgICA/ICdXaGF0IGlzIHRoZSBkYXRlIG9mIHRoZSBoZWFyaW5nPydcbiAgICAgICAgICAgIDogJ1doYXQgaXMgdGhlIGRhdGUgb2YgdGhlIGhlYXJpbmcgeW91ciBxdWVyeSBpcyByZWxhdGVkIHRvPycgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgPC9kdD5cbiAgICAgICAgPGRkIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X192YWx1ZVwiPlxuICAgICAgICAgIHt7IGZvcm1Hcm91cC5nZXQoJ2hlYXJpbmdEYXRlJyk/LnZhbHVlIHwgZGF0ZTogJ2RkIE1NTSB5eXl5JyB9fVxuICAgICAgICA8L2RkPlxuICAgICAgICA8ZGQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2FjdGlvbnNcIj5cbiAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgY2xhc3M9XCJnb3Z1ay1saW5rXCIgKGNsaWNrKT1cImdvQmFjaygpXCI+XG4gICAgICAgICAgICB7eyAnQ2hhbmdlJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kZD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGw+XG4gICAgPGRsIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0IGdvdnVrLSEtbWFyZ2luLWJvdHRvbS0wXCIgKm5nSWY9XCJ0aGlzLmZvcm1Hcm91cC5nZXQoJ2F0dGFjaG1lbnRzJykudmFsdWUubGVuZ3RoID4gMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fcm93XCI+XG4gICAgICAgIDxkdCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5XCI+XG4gICAgICAgICAge3sgcXVlcnlDcmVhdGVDb250ZXh0ID09PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLk5FV19RVUVSWSA/ICdVcGxvYWQgYSBmaWxlIHRvIHRoZSBxdWVyeScgOiAnRG9jdW1lbnQgYXR0YWNoZWQnIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgIDwvZHQ+XG4gICAgICAgIDxkZCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWUgZ292dWstc3VtbWFyeS1saXN0X192YWx1ZS0tZG9jdW1lbnRBdHRhY2hlZFwiPlxuICAgICAgICAgIDxjY2QtcXVlcnktYXR0YWNobWVudHMtcmVhZFxuICAgICAgICAgICAgKm5nSWY9XCJ0aGlzLmZvcm1Hcm91cC5nZXQoJ2F0dGFjaG1lbnRzJykudmFsdWVcIlxuICAgICAgICAgICAgW2F0dGFjaG1lbnRzXT1cImF0dGFjaG1lbnRzXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9jY2QtcXVlcnktYXR0YWNobWVudHMtcmVhZD5cbiAgICAgICAgPC9kZD5cbiAgICAgICAgPGRkIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19hY3Rpb25zXCI+XG4gICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwiZ292dWstbGlua1wiIChjbGljayk9XCJnb0JhY2soKVwiPlxuICAgICAgICAgICAge3sgJ0NoYW5nZScgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2RsPlxuXG4gICAgPGJyPlxuXG4gICAgPGRpdj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJnb3Z1ay1idXR0b24gZ292dWstYnV0dG9uLS1zZWNvbmRhcnkgZ292dWstIS1tYXJnaW4tcmlnaHQtM1wiIGRhdGEtbW9kdWxlPVwiZ292dWstYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cImdvQmFjaygpXCI+XG4gICAgICAgIHt7ICdQcmV2aW91cycgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImdvdnVrLWJ1dHRvblwiIGRhdGEtbW9kdWxlPVwiZ292dWstYnV0dG9uXCIgdHlwZT1cInN1Ym1pdFwiIChjbGljayk9XCJzdWJtaXQoKVwiPlxuICAgICAgICB7eyAnU3VibWl0JyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxjY2QtcXVlcnktZXZlbnQtY29tcGxldGlvbiBbZXZlbnRDb21wbGV0aW9uUGFyYW1zXT1cImV2ZW50Q29tcGxldGlvblBhcmFtc1wiPiAgICBcbiAgPC9jY2QtcXVlcnktZXZlbnQtY29tcGxldGlvbj5cbjwvZGl2PlxuIl19
|