@hmcts/ccd-case-ui-toolkit 7.0.38-client-context → 7.0.38-default-tab-fix

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/esm2020/lib/shared/components/case-editor/case-edit/case-edit.component.mjs +11 -11
  2. package/esm2020/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.mjs +14 -16
  3. package/esm2020/lib/shared/components/case-editor/services/cases.service.mjs +27 -54
  4. package/esm2020/lib/shared/components/case-editor/services/event-completion-state-machine.service.mjs +6 -9
  5. package/esm2020/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.mjs +8 -3
  6. package/esm2020/lib/shared/components/event-start/event-guard/event-start.guard.mjs +5 -13
  7. package/esm2020/lib/shared/components/event-start/services/event-start-state-machine.service.mjs +3 -11
  8. package/esm2020/lib/shared/domain/work-allocation/Task.mjs +1 -1
  9. package/esm2020/lib/shared/services/fields/fields.utils.mjs +1 -8
  10. package/esm2020/lib/shared/services/profile/profile.service.mjs +1 -2
  11. package/fesm2015/hmcts-ccd-case-ui-toolkit.mjs +56 -108
  12. package/fesm2015/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
  13. package/fesm2020/hmcts-ccd-case-ui-toolkit.mjs +56 -108
  14. package/fesm2020/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
  15. package/lib/shared/components/case-editor/case-edit/case-edit.component.d.ts.map +1 -1
  16. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.d.ts +2 -1
  17. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.d.ts.map +1 -1
  18. package/lib/shared/components/case-editor/services/cases.service.d.ts +1 -2
  19. package/lib/shared/components/case-editor/services/cases.service.d.ts.map +1 -1
  20. package/lib/shared/components/case-editor/services/event-completion-state-machine.service.d.ts +0 -1
  21. package/lib/shared/components/case-editor/services/event-completion-state-machine.service.d.ts.map +1 -1
  22. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts +1 -0
  23. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts.map +1 -1
  24. package/lib/shared/components/event-start/event-guard/event-start.guard.d.ts +1 -1
  25. package/lib/shared/components/event-start/event-guard/event-start.guard.d.ts.map +1 -1
  26. package/lib/shared/components/event-start/services/event-start-state-machine.service.d.ts.map +1 -1
  27. package/lib/shared/domain/work-allocation/Task.d.ts +0 -4
  28. package/lib/shared/domain/work-allocation/Task.d.ts.map +1 -1
  29. package/lib/shared/services/fields/fields.utils.d.ts +0 -2
  30. package/lib/shared/services/fields/fields.utils.d.ts.map +1 -1
  31. package/package.json +1 -1
@@ -453,8 +453,8 @@ export class CaseFullAccessViewComponent {
453
453
  else {
454
454
  // sort with the order of CCD predefined tabs
455
455
  this.caseDetails.tabs.sort((aTab, bTab) => aTab.order > bTab.order ? 1 : (bTab.order > aTab.order ? -1 : 0));
456
- // preselect the 1st order of CCD predefined tabs
457
- const preSelectTab = this.caseDetails.tabs[0];
456
+ // select the first tab checking if the tab is visible
457
+ const preSelectTab = this.findPreSelectedActiveTab();
458
458
  this.router.navigate(['cases', 'case-details', this.caseDetails.case_id], { fragment: preSelectTab.label }).then(() => {
459
459
  matTab = this.tabGroup._tabs.find((x) => x.textLabel === preSelectTab.label);
460
460
  // Update selectedIndex only if matTab.position is a non-zero number (positive or negative); this means the
@@ -485,6 +485,11 @@ export class CaseFullAccessViewComponent {
485
485
  }
486
486
  }
487
487
  }
488
+ findPreSelectedActiveTab() {
489
+ const unOrderedTabsInSortedTabs = this.caseDetails.tabs
490
+ .filter((tab) => !tab.order && this.sortedTabs.some((sortedTab) => sortedTab.id === tab.id));
491
+ return unOrderedTabsInSortedTabs.length ? unOrderedTabsInSortedTabs[0] : this.sortedTabs[0];
492
+ }
488
493
  // Refactored under EXUI-110 to address infinite tab loop to use tabIndexChanged instead
489
494
  tabChanged(tabIndexChanged) {
490
495
  const matTab = this.tabGroup._tabs.find(tab => tab.isActive);
@@ -678,4 +683,4 @@ CaseFullAccessViewComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
678
683
  type: ViewChild,
679
684
  args: ['tabGroup', { static: false }]
680
685
  }] }); })();
681
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLXZpZXdlci9jYXNlLWZ1bGwtYWNjZXNzLXZpZXcvY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLXZpZXdlci9jYXNlLWZ1bGwtYWNjZXNzLXZpZXcvY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQzVCLFNBQVMsRUFDekIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxJQUFJLFNBQVMsRUFBNEMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6SCxPQUFPLEVBQTBCLGlCQUFpQixJQUFJLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pHLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFVLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQWMsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUN6RCxP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S0FBSztZQUNVLGdCQUFnQjtrQkFBL0IsS0FBSztZQUNVLFdBQVc7a0JBQTFCLEtBQUs7WUFDVSxhQUFhO2tCQUE1QixLQUFLO1lBQ1UsWUFBWTtrQkFBM0IsS0FBSztZQTBCMkMsUUFBUTtrQkFBeEQsU0FBUzttQkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE5nWm9uZSwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCxcbiAgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdExlZ2FjeURpYWxvZyBhcyBNYXREaWFsb2csIE1hdExlZ2FjeURpYWxvZ0NvbmZpZyBhcyBNYXREaWFsb2dDb25maWcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZGlhbG9nJztcbmltcG9ydCB7IE1hdExlZ2FjeVRhYiBhcyBNYXRUYWIsIE1hdExlZ2FjeVRhYkdyb3VwIGFzIE1hdFRhYkdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LXRhYnMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FbmQsIFBhcmFtcywgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IHBsYWluVG9DbGFzcyB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcbmltcG9ydCB7IFJweFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdycHgteHVpLXRyYW5zbGF0aW9uJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgTm90aWZpY2F0aW9uQmFubmVyQ29uZmlnLFxuICBOb3RpZmljYXRpb25CYW5uZXJIZWFkZXJDbGFzcyxcbiAgTm90aWZpY2F0aW9uQmFubmVyVHlwZVxufSBmcm9tICcuLi8uLi8uLi8uLi9jb21wb25lbnRzL2Jhbm5lcnMvbm90aWZpY2F0aW9uLWJhbm5lcic7XG5pbXBvcnQgeyBTaG93Q29uZGl0aW9uIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBBY3Rpdml0eSwgQ2FzZUZpZWxkLCBDYXNlVGFiLCBDYXNlVmlldywgQ2FzZVZpZXdUcmlnZ2VyLCBEUkFGVF9RVUVSWV9QQVJBTSwgRGlzcGxheU1vZGUsIERyYWZ0IH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IENhc2VWaWV3RXZlbnRJZHMgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vY2FzZS12aWV3L2Nhc2Utdmlldy1ldmVudC1pZHMuZW51bSc7XG5pbXBvcnQge1xuICBBY3Rpdml0eVBvbGxpbmdTZXJ2aWNlLFxuICBBbGVydFNlcnZpY2UsXG4gIERyYWZ0U2VydmljZSxcbiAgRXJyb3JOb3RpZmllclNlcnZpY2UsXG4gIEZpZWxkc1V0aWxzLFxuICBOYXZpZ2F0aW9uTm90aWZpZXJTZXJ2aWNlLFxuICBOYXZpZ2F0aW9uT3JpZ2luLFxuICBPcmRlclNlcnZpY2UsXG4gIFNlc3Npb25TdG9yYWdlU2VydmljZVxufSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBDb252ZXJ0SHJlZlRvUm91dGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2Nhc2UtZWRpdG9yL3NlcnZpY2VzL2NvbnZlcnQtaHJlZi10by1yb3V0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBEZWxldGVPckNhbmNlbERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2RpYWxvZ3MnO1xuaW1wb3J0IHsgQ2FsbGJhY2tFcnJvcnNDb250ZXh0IH0gZnJvbSAnLi4vLi4vZXJyb3InO1xuaW1wb3J0IHsgaW5pdERpYWxvZyB9IGZyb20gJy4uLy4uL2hlbHBlcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtY2FzZS1mdWxsLWFjY2Vzcy12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nhc2UtZnVsbC1hY2Nlc3Mtdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nhc2UtZnVsbC1hY2Nlc3Mtdmlldy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE9SSUdJTl9RVUVSWV9QQVJBTSA9ICdvcmlnaW4nO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRSSUdHRVJfVEVYVF9TVEFSVCA9ICdHbyc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVFJJR0dFUl9URVhUX0NPTlRJTlVFID0gJ0lnbm9yZSBXYXJuaW5nIGFuZCBHbyc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVU5JQ09ERV9TUEFDRSA9ICclMjAnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEVNUFRZX1NQQUNFID0gJyAnO1xuICBwcml2YXRlIHJlYWRvbmx5IEhFQVJJTkdTX1RBQl9MQUJFTCA9ICdIZWFyaW5ncyc7XG5cbiAgQElucHV0KCkgcHVibGljIGhhc1ByaW50ID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIGhhc0V2ZW50U2VsZWN0b3IgPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgY2FzZURldGFpbHM6IENhc2VWaWV3O1xuICBASW5wdXQoKSBwdWJsaWMgcHJlcGVuZGVkVGFiczogQ2FzZVRhYltdID0gW107XG4gIEBJbnB1dCgpIHB1YmxpYyBhcHBlbmRlZFRhYnM6IENhc2VUYWJbXSA9IFtdO1xuXG4gIHB1YmxpYyBCQU5ORVIgPSBEaXNwbGF5TW9kZS5CQU5ORVI7XG4gIHB1YmxpYyBzb3J0ZWRUYWJzOiBDYXNlVGFiW107XG4gIHB1YmxpYyBjYXNlRmllbGRzOiBDYXNlRmllbGRbXTtcbiAgcHVibGljIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICBwdWJsaWMgZXJyb3I6IGFueTtcbiAgcHVibGljIHRyaWdnZXJUZXh0U3RhcnQgPSBDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuVFJJR0dFUl9URVhUX1NUQVJUO1xuICBwdWJsaWMgdHJpZ2dlclRleHRJZ25vcmVXYXJuaW5ncyA9IENhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudC5UUklHR0VSX1RFWFRfQ09OVElOVUU7XG4gIHB1YmxpYyB0cmlnZ2VyVGV4dDogc3RyaW5nID0gQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50LlRSSUdHRVJfVEVYVF9TVEFSVDtcbiAgcHVibGljIGlnbm9yZVdhcm5pbmcgPSBmYWxzZTtcbiAgcHVibGljIGFjdGl2aXR5U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBjYXNlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBlcnJvclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgZGlhbG9nQ29uZmlnOiBNYXREaWFsb2dDb25maWc7XG4gIHB1YmxpYyBtYXJrZG93blVzZUhyZWZBc1JvdXRlckxpbms6IGJvb2xlYW47XG4gIHB1YmxpYyBtZXNzYWdlOiBzdHJpbmc7XG4gIHB1YmxpYyBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIG5vdGlmaWNhdGlvbkJhbm5lckNvbmZpZzogTm90aWZpY2F0aW9uQmFubmVyQ29uZmlnO1xuICBwdWJsaWMgc2VsZWN0ZWRUYWJJbmRleCA9IDA7XG4gIHB1YmxpYyBhY3RpdmVDYXNlRmxhZ3MgPSBmYWxzZTtcbiAgcHVibGljIGNhc2VGbGFnc0V4dGVybmFsVXNlciA9IGZhbHNlO1xuICBwcml2YXRlIHJlYWRvbmx5IGNhc2VGbGFnc1JlYWRFeHRlcm5hbE1vZGUgPSAnI0FSR1VNRU5UKFJFQUQsRVhURVJOQUwpJztcbiAgcHJpdmF0ZSBzdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIHB1YmxpYyBjYWxsYmFja0Vycm9yc1N1YmplY3Q6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XG4gIEBWaWV3Q2hpbGQoJ3RhYkdyb3VwJywgeyBzdGF0aWM6IGZhbHNlIH0pIHB1YmxpYyB0YWJHcm91cDogTWF0VGFiR3JvdXA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmF2aWdhdGlvbk5vdGlmaWVyU2VydmljZTogTmF2aWdhdGlvbk5vdGlmaWVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9yZGVyU2VydmljZTogT3JkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZpdHlQb2xsaW5nU2VydmljZTogQWN0aXZpdHlQb2xsaW5nU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkcmFmdFNlcnZpY2U6IERyYWZ0U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVycm9yTm90aWZpZXJTZXJ2aWNlOiBFcnJvck5vdGlmaWVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnZlcnRIcmVmVG9Sb3V0ZXJTZXJ2aWNlOiBDb252ZXJ0SHJlZlRvUm91dGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNyZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uU3RvcmFnZVNlcnZpY2U6IFNlc3Npb25TdG9yYWdlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJweFRyYW5zbGF0aW9uUGlwZTogUnB4VHJhbnNsYXRlUGlwZVxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpbml0RGlhbG9nKCk7XG4gICAgdGhpcy5pbml0KCk7XG4gICAgdGhpcy5jYWxsYmFja0Vycm9yc1N1YmplY3Quc3Vic2NyaWJlKGVycm9yRXZlbnQgPT4ge1xuICAgICAgdGhpcy5lcnJvciA9IGVycm9yRXZlbnQ7XG4gICAgfSk7XG4gICAgdGhpcy5lcnJvclN1YnNjcmlwdGlvbiA9IHRoaXMuZXJyb3JOb3RpZmllclNlcnZpY2UuZXJyb3Iuc3Vic2NyaWJlKGVycm9yID0+IHtcbiAgICAgIGlmIChlcnJvciAmJiBlcnJvci5zdGF0dXMgIT09IDQwMSAmJiBlcnJvci5zdGF0dXMgIT09IDQwMykge1xuICAgICAgICB0aGlzLmVycm9yID0gZXJyb3I7XG4gICAgICAgIHRoaXMuY2FsbGJhY2tFcnJvcnNTdWJqZWN0Lm5leHQodGhpcy5lcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5tYXJrZG93blVzZUhyZWZBc1JvdXRlckxpbmsgPSB0cnVlO1xuXG4gICAgdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UucmVtb3ZlSXRlbSgnZXZlbnRVcmwnKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5jb252ZXJ0SHJlZlRvUm91dGVyU2VydmljZS5nZXRIcmVmTWFya2Rvd25MaW5rQ29udGVudCgpLnN1YnNjcmliZSgoaHJlZk1hcmtkb3duTGlua0NvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgLy8gZG8gbm90IGNvbnZlcnQgcm91dGVyIHdpdGggaW5pdGlhbCBkZWZhdWx0IHZhbHVlOyBjb252ZXJ0IHRvIHJvdXRlciBvbmx5IG9uIHVwZGF0ZWQgbGluayBjb250ZW50XG4gICAgICBpZiAoaHJlZk1hcmtkb3duTGlua0NvbnRlbnQgIT09ICdEZWZhdWx0Jykge1xuICAgICAgICB0aGlzLmNvbnZlcnRIcmVmVG9Sb3V0ZXJTZXJ2aWNlLmNhbGxBbmd1bGFyUm91dGVyKGhyZWZNYXJrZG93bkxpbmtDb250ZW50KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmFjdGl2aXR5UG9sbGluZ1NlcnZpY2UuaXNFbmFibGVkICYmICF0aGlzLmFjdGl2aXR5U3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIHRoaXMuYWN0aXZpdHlTdWJzY3JpcHRpb24gPSB0aGlzLnBvc3RWaWV3QWN0aXZpdHkoKS5zdWJzY3JpYmUoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuY2hlY2tSb3V0ZUFuZFNldENhc2VWaWV3VGFiKCk7XG5cbiAgICAvLyBDaGVjayBmb3IgYWN0aXZlIENhc2UgRmxhZ3NcbiAgICB0aGlzLmFjdGl2ZUNhc2VGbGFncyA9IHRoaXMuaGFzQWN0aXZlQ2FzZUZsYWdzKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzICYmIGNoYW5nZXMucHJlcGVuZGVkVGFicyAmJiAhY2hhbmdlcy5wcmVwZW5kZWRUYWJzLmZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLmluaXQoKTtcbiAgICAgIHRoaXMuY3JmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIHRoaXMub3JnYW5pc2VUYWJQb3NpdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc1ByaW50RW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jYXNlRGV0YWlscy5jYXNlX3R5cGUucHJpbnRFbmFibGVkO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFjdGl2aXR5UG9sbGluZ1NlcnZpY2UuaXNFbmFibGVkKSB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlKHRoaXMuYWN0aXZpdHlTdWJzY3JpcHRpb24pO1xuICAgIH1cbiAgICBpZiAoIXRoaXMucm91dGUuc25hcHNob3QuZGF0YS5jYXNlKSB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlKHRoaXMuY2FzZVN1YnNjcmlwdGlvbik7XG4gICAgfVxuICAgIHRoaXMudW5zdWJzY3JpYmUodGhpcy5jYWxsYmFja0Vycm9yc1N1YmplY3QpO1xuICAgIHRoaXMudW5zdWJzY3JpYmUodGhpcy5lcnJvclN1YnNjcmlwdGlvbik7XG4gICAgdGhpcy51bnN1YnNjcmliZSh0aGlzLnN1YnNjcmlwdGlvbik7XG4gICAgdGhpcy5zdWJzLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgcHVibGljIHVuc3Vic2NyaWJlKHN1YnNjcmlwdGlvbjogYW55KSB7XG4gICAgaWYgKHN1YnNjcmlwdGlvbikge1xuICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja1JvdXRlQW5kU2V0Q2FzZVZpZXdUYWIoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzLnB1c2godGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAucGlwZShmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE5hdmlnYXRpb25FbmQpID0+IHtcbiAgICAgICAgY29uc3QgdXJsID0gZXZlbnQgJiYgKGV2ZW50IGFzIGFueSkudXJsO1xuICAgICAgICBpZiAodXJsKSB7XG4gICAgICAgICAgY29uc3QgdGFiVXJsID0gdXJsID8gdXJsLnNwbGl0KCcjJykgOiBudWxsO1xuICAgICAgICAgIGNvbnN0IHRhYiA9IHRhYlVybCAmJiB0YWJVcmwubGVuZ3RoID4gMSA/IHRhYlVybFt0YWJVcmwubGVuZ3RoIC0gMV0ucmVwbGFjZUFsbCgnJTIwJywgJyAnKSA6ICcnO1xuICAgICAgICAgIGNvbnN0IG1hdFRhYiA9IHRoaXMudGFiR3JvdXAuX3RhYnMuZmluZCgoeCkgPT4geC50ZXh0TGFiZWwudG9Mb3dlckNhc2UoKSA9PT0gdGFiLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgIC8vIFVwZGF0ZSBzZWxlY3RlZEluZGV4IG9ubHkgaWYgbWF0VGFiLnBvc2l0aW9uIGlzIGEgbm9uLXplcm8gbnVtYmVyIChwb3NpdGl2ZSBvciBuZWdhdGl2ZSk7IHRoaXMgbWVhbnMgdGhlXG4gICAgICAgICAgLy8gbWF0VGFiIGlzIG5vdCBhbHJlYWR5IHNlbGVjdGVkIChwb3NpdGlvbiBpcyByZWxhdGl2ZTsgcG9zaXRpdmUgPSByaWdodCwgbmVnYXRpdmUgPSBsZWZ0KSBvciBpdCB3b3VsZCBiZSAwXG4gICAgICAgICAgaWYgKG1hdFRhYj8ucG9zaXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9IG1hdFRhYi5wb3NpdGlvbjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgfVxuXG4gIHB1YmxpYyBwb3N0Vmlld0FjdGl2aXR5KCk6IE9ic2VydmFibGU8QWN0aXZpdHlbXT4ge1xuICAgIHJldHVybiB0aGlzLmFjdGl2aXR5UG9sbGluZ1NlcnZpY2UucG9zdFZpZXdBY3Rpdml0eSh0aGlzLmNhc2VEZXRhaWxzLmNhc2VfaWQpO1xuICB9XG5cbiAgcHVibGljIGNsZWFyRXJyb3JzQW5kV2FybmluZ3MoKTogdm9pZCB7XG4gICAgdGhpcy5yZXNldEVycm9ycygpO1xuICAgIHRoaXMuaWdub3JlV2FybmluZyA9IGZhbHNlO1xuICAgIHRoaXMudHJpZ2dlclRleHQgPSBDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuVFJJR0dFUl9URVhUX1NUQVJUO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFwcGx5VHJpZ2dlcih0cmlnZ2VyOiBDYXNlVmlld1RyaWdnZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmVycm9yID0gbnVsbDtcblxuICAgIGNvbnN0IHRoZVF1ZXJ5UGFyYW1zOiBQYXJhbXMgPSB7fTtcblxuICAgIGlmICh0aGlzLmlnbm9yZVdhcm5pbmcpIHtcbiAgICAgIHRoZVF1ZXJ5UGFyYW1zWydpZ25vcmVXYXJuaW5nJ10gPSB0aGlzLmlnbm9yZVdhcm5pbmc7XG4gICAgfVxuXG4gICAgLy8gd2UgbWF5IG5lZWQgdG8gdGFrZSBjYXJlIG9mIGRpZmZlcmVudCB0cmlnZ2VycyBpbiB0aGUgZnV0dXJlXG4gICAgaWYgKHRyaWdnZXIuaWQgPT09IENhc2VWaWV3RXZlbnRJZHMuUXVlcnlNYW5hZ2VtZW50UmFpc2VRdWVyeSkge1xuICAgICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2AvcXVlcnktbWFuYWdlbWVudC9xdWVyeS8ke3RoaXMuY2FzZURldGFpbHMuY2FzZV9pZH1gXSk7XG4gICAgfSBlbHNlIGlmICh0cmlnZ2VyLmlkID09PSBDYXNlVmlld0V2ZW50SWRzLkRFTEVURSkge1xuICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihEZWxldGVPckNhbmNlbERpYWxvZ0NvbXBvbmVudCwgdGhpcy5kaWFsb2dDb25maWcpO1xuICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgIGlmIChyZXN1bHQgPT09ICdEZWxldGUnKSB7XG4gICAgICAgICAgdGhpcy5kcmFmdFNlcnZpY2UuZGVsZXRlRHJhZnQodGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkKVxuICAgICAgICAgICAgLnN1YnNjcmliZShfID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uTm90aWZpZXJTZXJ2aWNlLmFubm91bmNlTmF2aWdhdGlvbih7IGFjdGlvbjogTmF2aWdhdGlvbk9yaWdpbi5EUkFGVF9ERUxFVEVEIH0pO1xuICAgICAgICAgICAgfSwgXyA9PiB7XG4gICAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbk5vdGlmaWVyU2VydmljZS5hbm5vdW5jZU5hdmlnYXRpb24oeyBhY3Rpb246IE5hdmlnYXRpb25PcmlnaW4uRVJST1JfREVMRVRJTkdfRFJBRlQgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzRHJhZnQoKSAmJiB0cmlnZ2VyLmlkICE9PSBDYXNlVmlld0V2ZW50SWRzLkRFTEVURSkge1xuICAgICAgdGhlUXVlcnlQYXJhbXNbRFJBRlRfUVVFUllfUEFSQU1dID0gdGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkO1xuICAgICAgdGhlUXVlcnlQYXJhbXNbQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50Lk9SSUdJTl9RVUVSWV9QQVJBTV0gPSAndmlld0RyYWZ0JztcbiAgICAgIHRoaXMubmF2aWdhdGlvbk5vdGlmaWVyU2VydmljZS5hbm5vdW5jZU5hdmlnYXRpb24oXG4gICAgICAgIHtcbiAgICAgICAgICBhY3Rpb246IE5hdmlnYXRpb25PcmlnaW4uRFJBRlRfUkVTVU1FRCxcbiAgICAgICAgICBqaWQ6IHRoaXMuY2FzZURldGFpbHMuY2FzZV90eXBlLmp1cmlzZGljdGlvbi5pZCxcbiAgICAgICAgICBjdGlkOiB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfdHlwZS5pZCxcbiAgICAgICAgICBldGlkOiB0cmlnZ2VyLmlkLFxuICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB0aGVRdWVyeVBhcmFtc1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5uYXZpZ2F0aW9uTm90aWZpZXJTZXJ2aWNlLmFubm91bmNlTmF2aWdhdGlvbihcbiAgICAgICAge1xuICAgICAgICAgIGFjdGlvbjogTmF2aWdhdGlvbk9yaWdpbi5FVkVOVF9UUklHR0VSRUQsXG4gICAgICAgICAgcXVlcnlQYXJhbXM6IHRoZVF1ZXJ5UGFyYW1zLFxuICAgICAgICAgIGV0aWQ6IHRyaWdnZXIuaWQsXG4gICAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGFzVGFic1ByZXNlbnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc29ydGVkVGFicy5sZW5ndGggPiAwIHx8IHRoaXMucHJlcGVuZGVkVGFicy5sZW5ndGggPiAwIHx8IHRoaXMuYXBwZW5kZWRUYWJzLmxlbmd0aCA+IDA7XG4gIH1cblxuICBwdWJsaWMgY2FsbGJhY2tFcnJvcnNOb3RpZnkoY2FsbGJhY2tFcnJvcnNDb250ZXh0OiBDYWxsYmFja0Vycm9yc0NvbnRleHQpOiB2b2lkIHtcbiAgICB0aGlzLmlnbm9yZVdhcm5pbmcgPSBjYWxsYmFja0Vycm9yc0NvbnRleHQuaWdub3JlV2FybmluZztcbiAgICB0aGlzLnRyaWdnZXJUZXh0ID0gY2FsbGJhY2tFcnJvcnNDb250ZXh0LnRyaWdnZXJUZXh0O1xuICB9XG5cbiAgcHVibGljIGlzRHJhZnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIERyYWZ0LmlzRHJhZnQodGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1RyaWdnZXJCdXR0b25EaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMuZXJyb3JcbiAgICAgICYmIHRoaXMuZXJyb3IuY2FsbGJhY2tFcnJvcnNcbiAgICAgICYmIHRoaXMuZXJyb3IuY2FsbGJhY2tFcnJvcnMubGVuZ3RoKVxuICAgICAgfHwgKHRoaXMuZXJyb3JcbiAgICAgICAgJiYgdGhpcy5lcnJvci5kZXRhaWxzXG4gICAgICAgICYmIHRoaXMuZXJyb3IuZGV0YWlscy5maWVsZF9lcnJvcnNcbiAgICAgICAgJiYgdGhpcy5lcnJvci5kZXRhaWxzLmZpZWxkX2Vycm9ycy5sZW5ndGgpO1xuICB9XG5cbiAgcHVibGljIG9yZ2FuaXNlVGFiUG9zaXRpb24oKTogdm9pZCB7XG4gICAgbGV0IG1hdFRhYjogTWF0VGFiO1xuICAgIGNvbnN0IHVybCA9IHRoaXMubG9jYXRpb24ucGF0aCh0cnVlKTtcbiAgICBsZXQgaGFzaFZhbHVlID0gdXJsLnN1YnN0cmluZyh1cmwuaW5kZXhPZignIycpICsgMSk7XG4gICAgaWYgKCF1cmwuaW5jbHVkZXMoJyMnKSAmJiAhdXJsLmluY2x1ZGVzKCdyb2xlcy1hbmQtYWNjZXNzJykgJiYgIXVybC5pbmNsdWRlcygndGFza3MnKSAmJiAhdXJsLmluY2x1ZGVzKCdoZWFyaW5ncycpKSB7XG4gICAgICBjb25zdCBwYXRocyA9IHVybC5zcGxpdCgnLycpO1xuICAgICAgLy8gbGFzdFBhdGggY2FuIGJlIC9jYXNlSWQsIG9yIHRoZSB0YWJzIC90YXNrcywgL2hlYXJpbmdzIGV0Yy5cbiAgICAgIGNvbnN0IGxhc3RQYXRoID0gZGVjb2RlVVJJQ29tcG9uZW50KHBhdGhzW3BhdGhzLmxlbmd0aCAtIDFdKTtcbiAgICAgIGxldCBmb3VuZFRhYjogQ2FzZVRhYiA9IG51bGw7XG4gICAgICBpZiAoIXRoaXMucHJlcGVuZGVkVGFicykge1xuICAgICAgICB0aGlzLnByZXBlbmRlZFRhYnMgPSBbXTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFkZGl0aW9uYWxUYWJzID0gWy4uLnRoaXMucHJlcGVuZGVkVGFicywgLi4udGhpcy5hcHBlbmRlZFRhYnNdO1xuICAgICAgaWYgKGFkZGl0aW9uYWxUYWJzICYmIGFkZGl0aW9uYWxUYWJzLmxlbmd0aCkge1xuICAgICAgICBmb3VuZFRhYiA9IGFkZGl0aW9uYWxUYWJzLmZpbmQoKGNhc2VUYWI6IENhc2VUYWIpID0+IGNhc2VUYWIuaWQudG9Mb3dlckNhc2UoKSA9PT0gbGFzdFBhdGgudG9Mb3dlckNhc2UoKSk7XG4gICAgICB9XG4gICAgICAvLyBmb3VuZCB0YXNrcyBvciBoZWFyaW5nIHRhYlxuICAgICAgaWYgKGZvdW5kVGFiKSB7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnY2FzZXMnLCAnY2FzZS1kZXRhaWxzJywgdGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkLCBmb3VuZFRhYi5pZF0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIG1hdFRhYiA9IHRoaXMudGFiR3JvdXAuX3RhYnMuZmluZCgoeCkgPT4geC50ZXh0TGFiZWwgPT09IGZvdW5kVGFiLmxhYmVsKTtcbiAgICAgICAgICAvLyBVcGRhdGUgc2VsZWN0ZWRJbmRleCBvbmx5IGlmIG1hdFRhYi5wb3NpdGlvbiBpcyBhIG5vbi16ZXJvIG51bWJlciAocG9zaXRpdmUgb3IgbmVnYXRpdmUpOyB0aGlzIG1lYW5zIHRoZVxuICAgICAgICAgIC8vIG1hdFRhYiBpcyBub3QgYWxyZWFkeSBzZWxlY3RlZCAocG9zaXRpb24gaXMgcmVsYXRpdmU7IHBvc2l0aXZlID0gcmlnaHQsIG5lZ2F0aXZlID0gbGVmdCkgb3IgaXQgd291bGQgYmUgMFxuICAgICAgICAgIGlmIChtYXRUYWI/LnBvc2l0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSBtYXRUYWIucG9zaXRpb247XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgLy8gbGFzdCBwYXRoIGlzIGNhc2VJZFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gc29ydCB3aXRoIHRoZSBvcmRlciBvZiBDQ0QgcHJlZGVmaW5lZCB0YWJzXG4gICAgICAgIHRoaXMuY2FzZURldGFpbHMudGFicy5zb3J0KChhVGFiLCBiVGFiKSA9PiBhVGFiLm9yZGVyID4gYlRhYi5vcmRlciA/IDEgOiAoYlRhYi5vcmRlciA+IGFUYWIub3JkZXIgPyAtMSA6IDApKTtcbiAgICAgICAgLy8gcHJlc2VsZWN0IHRoZSAxc3Qgb3JkZXIgb2YgQ0NEIHByZWRlZmluZWQgdGFic1xuICAgICAgICBjb25zdCBwcmVTZWxlY3RUYWI6IENhc2VUYWIgPSB0aGlzLmNhc2VEZXRhaWxzLnRhYnNbMF07XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnY2FzZXMnLCAnY2FzZS1kZXRhaWxzJywgdGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkXSwgeyBmcmFnbWVudDogcHJlU2VsZWN0VGFiLmxhYmVsIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIG1hdFRhYiA9IHRoaXMudGFiR3JvdXAuX3RhYnMuZmluZCgoeCkgPT4geC50ZXh0TGFiZWwgPT09IHByZVNlbGVjdFRhYi5sYWJlbCk7XG4gICAgICAgICAgLy8gVXBkYXRlIHNlbGVjdGVkSW5kZXggb25seSBpZiBtYXRUYWIucG9zaXRpb24gaXMgYSBub24temVybyBudW1iZXIgKHBvc2l0aXZlIG9yIG5lZ2F0aXZlKTsgdGhpcyBtZWFucyB0aGVcbiAgICAgICAgICAvLyBtYXRUYWIgaXMgbm90IGFscmVhZHkgc2VsZWN0ZWQgKHBvc2l0aW9uIGlzIHJlbGF0aXZlOyBwb3NpdGl2ZSA9IHJpZ2h0LCBuZWdhdGl2ZSA9IGxlZnQpIG9yIGl0IHdvdWxkIGJlIDBcbiAgICAgICAgICBpZiAobWF0VGFiPy5wb3NpdGlvbikge1xuICAgICAgICAgICAgdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4ID0gbWF0VGFiLnBvc2l0aW9uO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHJlZ0V4cCA9IG5ldyBSZWdFeHAoQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50LlVOSUNPREVfU1BBQ0UsICdnJyk7XG4gICAgICBoYXNoVmFsdWUgPSBoYXNoVmFsdWUucmVwbGFjZShyZWdFeHAsIENhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudC5FTVBUWV9TUEFDRSk7XG4gICAgICBpZiAoaGFzaFZhbHVlLmluY2x1ZGVzKCdoZWFyaW5ncycpKSB7XG4gICAgICAgIGhhc2hWYWx1ZSA9ICdoZWFyaW5ncyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaGFzaFZhbHVlLmluY2x1ZGVzKCdyb2xlcy1hbmQtYWNjZXNzJykgfHwgaGFzaFZhbHVlLmluY2x1ZGVzKCd0YXNrcycpKSB7XG4gICAgICAgICAgaGFzaFZhbHVlID0gaGFzaFZhbHVlLmluY2x1ZGVzKCdyb2xlcy1hbmQtYWNjZXNzJykgPyAncm9sZXMgYW5kIGFjY2VzcycgOiAndGFza3MnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBtYXRUYWIgPSB0aGlzLnRhYkdyb3VwLl90YWJzLmZpbmQoKHgpID0+XG4gICAgICAgIHgudGV4dExhYmVsLnJlcGxhY2UoQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50LkVNUFRZX1NQQUNFLCAnJykudG9Mb3dlckNhc2UoKSA9PT1cbiAgICAgICAgaGFzaFZhbHVlLnJlcGxhY2UoQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50LkVNUFRZX1NQQUNFLCAnJykudG9Mb3dlckNhc2UoKSk7XG4gICAgICAvLyBVcGRhdGUgc2VsZWN0ZWRJbmRleCBvbmx5IGlmIG1hdFRhYi5wb3NpdGlvbiBpcyBhIG5vbi16ZXJvIG51bWJlciAocG9zaXRpdmUgb3IgbmVnYXRpdmUpOyB0aGlzIG1lYW5zIHRoZVxuICAgICAgLy8gbWF0VGFiIGlzIG5vdCBhbHJlYWR5IHNlbGVjdGVkIChwb3NpdGlvbiBpcyByZWxhdGl2ZTsgcG9zaXRpdmUgPSByaWdodCwgbmVnYXRpdmUgPSBsZWZ0KSBvciBpdCB3b3VsZCBiZSAwXG4gICAgICBpZiAobWF0VGFiPy5wb3NpdGlvbikge1xuICAgICAgICB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSBtYXRUYWIucG9zaXRpb247XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUmVmYWN0b3JlZCB1bmRlciBFWFVJLTExMCB0byBhZGRyZXNzIGluZmluaXRlIHRhYiBsb29wIHRvIHVzZSB0YWJJbmRleENoYW5nZWQgaW5zdGVhZFxuICBwdWJsaWMgdGFiQ2hhbmdlZCh0YWJJbmRleENoYW5nZWQ6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG1hdFRhYiA9IHRoaXMudGFiR3JvdXAuX3RhYnMuZmluZCh0YWIgPT4gdGFiLmlzQWN0aXZlKTtcbiAgICBjb25zdCB0YWJMYWJlbCA9IG1hdFRhYi50ZXh0TGFiZWw7XG4gICAgLy8gc29ydGVkVGFicyBhcmUgZnJhZ21lbnRzXG4gICAgLy8gYXBwZW5kZWQvcHJlcGVwZW5kZWQgdGFicyB1c2Ugcm91dGVyIG5hdmlnYXRpb25cbiAgICBpZiAoKHRhYkluZGV4Q2hhbmdlZCA8PSAxICYmIHRoaXMucHJlcGVuZGVkVGFicyAmJiB0aGlzLnByZXBlbmRlZFRhYnMubGVuZ3RoKSB8fFxuICAgICAgKHRoaXMuYXBwZW5kZWRUYWJzPy5sZW5ndGggJiYgKHRhYkxhYmVsID09PSB0aGlzLkhFQVJJTkdTX1RBQl9MQUJFTFxuICAgICAgICB8fCB0YWJMYWJlbCA9PT0gdGhpcy5ycHhUcmFuc2xhdGlvblBpcGUudHJhbnNmb3JtKHRoaXMuSEVBUklOR1NfVEFCX0xBQkVMKSkpKSB7XG4gICAgICAvLyBIYWNrIHRvIGdldCBJRCBmcm9tIHRhYiBhcyBpdCdzIG5vdCBlYXNpbHkgYWNoaWV2ZWQgdGhyb3VnaCBBbmd1bGFyIE1hdGVyaWFsIFRhYnNcbiAgICAgIGNvbnN0IHRhYiA9IG1hdFRhYlsnX3ZpZXdDb250YWluZXJSZWYnXSBhcyBWaWV3Q29udGFpbmVyUmVmO1xuICAgICAgY29uc3QgaWQgPSAodGFiLmVsZW1lbnQubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaWQ7XG4gICAgICAvLyBjYXNlcy9jYXNlLWRldGFpbHMvOmNhc2VJZC9oZWFyaW5nc1xuICAgICAgLy8gY2FzZXMvY2FzZS1kZXRhaWxzLzpjYXNlSWQvcm9sZXMtYW5kLWFjY2Vzc1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2lkXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSb3V0aW5nIGhlcmUgaXMgYmFzZWQgb24gdGFiIGxhYmVsLCBub3QgaWRlYWxcbiAgICAgIC8vIGNhc2VzL2Nhc2UtZGV0YWlscy86Y2FzZUlkI3RhYkxhYmVsXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2Nhc2VzJywgJ2Nhc2UtZGV0YWlscycsIHRoaXMuY2FzZURldGFpbHMuY2FzZV9pZF0sIHsgZnJhZ21lbnQ6IHRhYkxhYmVsIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkxpbmtDbGlja2VkKHRyaWdnZXJPdXRwdXRFdmVudFRleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIEdldCB0aGUgKmFic29sdXRlKiAobm90IHJlbGF0aXZlKSBpbmRleCBvZiB0aGUgdGFyZ2V0IHRhYiBhbmQgc2V0IGFzIHRoZSBhY3RpdmUgdGFiLCB1c2luZyB0aGUgc2VsZWN0ZWRJbmRleCBpbnB1dFxuICAgIC8vIG9mIG1hdC10YWItZ3JvdXAgKGJvdW5kIHRvIHNlbGVjdGVkVGFiSW5kZXgpXG4gICAgY29uc3QgdGFyZ2V0VGFiSW5kZXggPSB0aGlzLnRhYkdyb3VwLl90YWJzLnRvQXJyYXkoKS5maW5kSW5kZXgodGFiID0+IHRhYi50ZXh0TGFiZWwgPT09IHRyaWdnZXJPdXRwdXRFdmVudFRleHQpO1xuICAgIGlmICh0YXJnZXRUYWJJbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVGFiSW5kZXggPSB0YXJnZXRUYWJJbmRleDtcbiAgICAgIHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9IHRhcmdldFRhYkluZGV4O1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYXNBY3RpdmVDYXNlRmxhZ3MoKTogYm9vbGVhbiB7XG4gICAgLy8gRGV0ZXJtaW5lIHdoaWNoIHRhYiBjb250YWlucyB0aGUgRmxhZ0xhdW5jaGVyIENhc2VGaWVsZCB0eXBlLCBmcm9tIHRoZSBDYXNlVmlldyBvYmplY3QgaW4gdGhlIHNuYXBzaG90IGRhdGFcbiAgICBjb25zdCBjYXNlRmxhZ3NUYWIgPSB0aGlzLmNhc2VEZXRhaWxzLnRhYnNcbiAgICAgID8gKHRoaXMuY2FzZURldGFpbHMudGFicykuZmlsdGVyKFxuICAgICAgICB0YWIgPT4gdGFiLmZpZWxkcyAmJiB0YWIuZmllbGRzLnNvbWUoY2FzZUZpZWxkID0+IEZpZWxkc1V0aWxzLmlzRmxhZ0xhdW5jaGVyQ2FzZUZpZWxkKGNhc2VGaWVsZCkpKVswXVxuICAgICAgOiBudWxsO1xuXG4gICAgaWYgKGNhc2VGbGFnc1RhYikge1xuICAgICAgLy8gQ2hlY2sgd2hldGhlciB0aGUgRmxhZ0xhdW5jaGVyIENhc2VGaWVsZCBpcyBpbiBleHRlcm5hbCBtb2RlIG9yIG5vdDsgdGhlIG5vdGlmaWNhdGlvbiBiYW5uZXIgc2hvdWxkIG5vdCBiZVxuICAgICAgLy8gZGlzcGxheWVkIGZvciBleHRlcm5hbCB1c2Vyc1xuICAgICAgdGhpcy5jYXNlRmxhZ3NFeHRlcm5hbFVzZXIgPSBjYXNlRmxhZ3NUYWIuZmllbGRzLmZpbmQoXG4gICAgICAgIGNhc2VGaWVsZCA9PiBGaWVsZHNVdGlscy5pc0ZsYWdMYXVuY2hlckNhc2VGaWVsZChjYXNlRmllbGQpKS5kaXNwbGF5X2NvbnRleHRfcGFyYW1ldGVyID09PSB0aGlzLmNhc2VGbGFnc1JlYWRFeHRlcm5hbE1vZGU7XG5cbiAgICAgIC8vIEdldCB0aGUgYWN0aXZlIGNhc2UgZmxhZ3MgY291bnRcbiAgICAgIC8vIENhbm5vdCBmaWx0ZXIgb3V0IGFueXRoaW5nIG90aGVyIHRoYW4gdG8gcmVtb3ZlIHRoZSBGbGFnTGF1bmNoZXIgQ2FzZUZpZWxkIGJlY2F1c2UgRmxhZ3MgZmllbGRzIG1heSBiZVxuICAgICAgLy8gY29udGFpbmVkIGluIG90aGVyIENhc2VGaWVsZCBpbnN0YW5jZXMsIGVpdGhlciBhcyBhIHN1Yi1maWVsZCBvZiBhIENvbXBsZXggZmllbGQsIG9yIGZpZWxkcyBpbiBhIGNvbGxlY3Rpb25cbiAgICAgIC8vIChvciBzdWItZmllbGRzIG9mIENvbXBsZXggZmllbGRzIGluIGEgY29sbGVjdGlvbilcbiAgICAgIGNvbnN0IGFjdGl2ZUNhc2VGbGFncyA9IGNhc2VGbGFnc1RhYi5maWVsZHNcbiAgICAgICAgLmZpbHRlcihjYXNlRmllbGQgPT4gIUZpZWxkc1V0aWxzLmlzRmxhZ0xhdW5jaGVyQ2FzZUZpZWxkKGNhc2VGaWVsZCkgJiYgY2FzZUZpZWxkLnZhbHVlKVxuICAgICAgICAucmVkdWNlKChhY3RpdmUsIGNhc2VGbGFnKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIEZpZWxkc1V0aWxzLmNvdW50QWN0aXZlRmxhZ3NJbkNhc2VGaWVsZChhY3RpdmUsIGNhc2VGbGFnKTtcbiAgICAgICAgfSwgMCk7XG5cbiAgICAgIGlmIChhY3RpdmVDYXNlRmxhZ3MgPiAwKSB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gYWN0aXZlQ2FzZUZsYWdzID4gMVxuICAgICAgICAgID8gYFRoZXJlIGFyZSAke2FjdGl2ZUNhc2VGbGFnc30gYWN0aXZlIGZsYWdzIG9uIHRoaXMgY2FzZS5gIDogJ1RoZXJlIGlzIDEgYWN0aXZlIGZsYWcgb24gdGhpcyBjYXNlLic7XG4gICAgICAgIC8vIEluaXRpYWxpc2UgYW5kIGRpc3BsYXkgbm90aWZpY2F0aW9uIGJhbm5lclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkJhbm5lckNvbmZpZyA9IHtcbiAgICAgICAgICBiYW5uZXJUeXBlOiBOb3RpZmljYXRpb25CYW5uZXJUeXBlLklORk9STUFUSU9OLFxuICAgICAgICAgIGhlYWRpbmdUZXh0OiAnSW1wb3J0YW50JyxcbiAgICAgICAgICBkZXNjcmlwdGlvbixcbiAgICAgICAgICBzaG93TGluazogdHJ1ZSxcbiAgICAgICAgICBsaW5rVGV4dDogJ1ZpZXcgY2FzZSBmbGFncycsXG4gICAgICAgICAgdHJpZ2dlck91dHB1dEV2ZW50OiB0cnVlLFxuICAgICAgICAgIHRyaWdnZXJPdXRwdXRFdmVudFRleHQ6IGNhc2VGbGFnc1RhYi5sYWJlbCxcbiAgICAgICAgICBoZWFkZXJDbGFzczogTm90aWZpY2F0aW9uQmFubmVySGVhZGVyQ2xhc3MuSU5GT1JNQVRJT05cbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgYSBDYXNlRmllbGQgaXMgdG8gYmUgZGlzcGxheWVkIHdpdGhvdXQgYSBsYWJlbCwgYXMgaXMgZXhwZWN0ZWQgZm9yIGFsbCBDb21wb25lbnRMYXVuY2hlci10eXBlXG4gICAqIGZpZWxkcy5cbiAgICogQHBhcmFtIGNhc2VGaWVsZCBUaGUgYENhc2VGaWVsZGAgaW5zdGFuY2UgdG8gY2hlY2tcbiAgICogQHJldHVybnMgYHRydWVgIGlmIGl0IHNob3VsZCBub3QgaGF2ZSBhIGxhYmVsOyBgZmFsc2VgIG90aGVyd2lzZVxuICAgKi9cbiAgcHVibGljIGlzRmllbGRUb0hhdmVOb0xhYmVsKGNhc2VGaWVsZDogQ2FzZUZpZWxkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGNhc2VGaWVsZC5maWVsZF90eXBlLnR5cGUgPT09ICdDb21wb25lbnRMYXVuY2hlcidcbiAgICAgICYmIGNhc2VGaWVsZC5kaXNwbGF5X2NvbnRleHRfcGFyYW1ldGVyID09PSAnI0FSR1VNRU5UKENhc2VGaWxlVmlldyknO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0KCk6IHZvaWQge1xuICAgIC8vIENsb25lIGFuZCBzb3J0IHRhYnMgYXJyYXlcbiAgICB0aGlzLnNvcnRlZFRhYnMgPSB0aGlzLm9yZGVyU2VydmljZS5zb3J0KHRoaXMuY2FzZURldGFpbHMudGFicyk7XG4gICAgdGhpcy5jYXNlRmllbGRzID0gdGhpcy5nZXRUYWJGaWVsZHMoKTtcbiAgICB0aGlzLnNvcnRlZFRhYnMgPSB0aGlzLnNvcnRUYWJGaWVsZHNBbmRGaWx0ZXJUYWJzKHRoaXMuc29ydGVkVGFicyk7XG4gICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLmJ1aWxkRm9ybUdyb3VwKHRoaXMuY2FzZUZpZWxkcyk7XG4gICAgaWYgKHRoaXMuY2FzZURldGFpbHMudHJpZ2dlcnMgJiYgdGhpcy5lcnJvcikge1xuICAgICAgdGhpcy5yZXNldEVycm9ycygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc29ydFRhYkZpZWxkc0FuZEZpbHRlclRhYnModGFiczogQ2FzZVRhYltdKTogQ2FzZVRhYltdIHtcbiAgICByZXR1cm4gdGFic1xuICAgICAgLm1hcCh0YWIgPT4gT2JqZWN0LmFzc2lnbih7fSwgdGFiLCB7IGZpZWxkczogdGhpcy5vcmRlclNlcnZpY2Uuc29ydCh0YWIuZmllbGRzKSB9KSlcbiAgICAgIC5maWx0ZXIodGFiID0+IFNob3dDb25kaXRpb24uZ2V0SW5zdGFuY2UodGFiLnNob3dfY29uZGl0aW9uKS5tYXRjaEJ5Q29udGV4dEZpZWxkcyh0aGlzLmNhc2VGaWVsZHMpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGFiRmllbGRzKCk6IENhc2VGaWVsZFtdIHtcbiAgICBjb25zdCBjYXNlRGF0YUZpZWxkcyA9IHRoaXMuc29ydGVkVGFicy5yZWR1Y2UoKGFjYywgdGFiKSA9PiB7XG4gICAgICByZXR1cm4gYWNjLmNvbmNhdChwbGFpblRvQ2xhc3MoQ2FzZUZpZWxkLCB0YWIuZmllbGRzKSk7XG4gICAgfSwgW10pO1xuXG4gICAgcmV0dXJuIGNhc2VEYXRhRmllbGRzLmNvbmNhdCh0aGlzLmNhc2VEZXRhaWxzLm1ldGFkYXRhRmllbGRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3IgRVVJLTM4MjU6XG4gICAqIEJ1aWxkcyBhIEZvcm1Hcm91cCBmcm9tIGFsbCB0aGUgQ2FzZUZpZWxkcyBjb250YWluZWQgd2l0aGluIHRoZSB2aWV3LlxuICAgKiBUaGlzIEZvcm1Hcm91cCBpcyBuZWNlc3NhcnkgZm9yIGV2YWx1YXRpb24gdGhlIHNob3cvaGlkZSBjb25kaXRpb25zIG9mXG4gICAqIGZpZWxkcyB0aGF0IGFyZSBkZXBlbmRlbnQgb24gYSBmaWVsZCBvbmx5IGF2YWlsYWJsZSBvbiBhIERJRkZFUkVOVCB0YWIuXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkRm9ybUdyb3VwKGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdKTogRm9ybUdyb3VwIHtcbiAgICBsZXQgdmFsdWU6IG9iamVjdCA9IHt9O1xuICAgIGlmIChjYXNlRmllbGRzKSB7XG4gICAgICBjYXNlRmllbGRzLmZvckVhY2goY2FzZUZpZWxkID0+IHtcbiAgICAgICAgdmFsdWUgPSB7XG4gICAgICAgICAgLi4udmFsdWUsXG4gICAgICAgICAgW2Nhc2VGaWVsZC5pZF06IGNhc2VGaWVsZC52YWx1ZVxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgRm9ybUdyb3VwKHsgZGF0YTogbmV3IEZvcm1Db250cm9sKHZhbHVlKSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRFcnJvcnMoKTogdm9pZCB7XG4gICAgdGhpcy5lcnJvciA9IG51bGw7XG4gICAgdGhpcy5jYWxsYmFja0Vycm9yc1N1YmplY3QubmV4dChudWxsKTtcbiAgICB0aGlzLmFsZXJ0U2VydmljZS5jbGVhcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRVcmxGcmFnbWVudCh1cmw6IHN0cmluZykge1xuICAgIHJldHVybiB1cmwuc3BsaXQoJyMnKVt1cmwuc3BsaXQoJyMnKS5sZW5ndGggLSAxXTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGFiSW5kZXhCeVRhYkxhYmVsKHRhYkdyb3VwOiBNYXRUYWJHcm91cCwgdGFiTGFiZWwpIHtcbiAgICByZXR1cm4gdGFiR3JvdXAuX3RhYnMudG9BcnJheSgpLmZpbmRJbmRleCgodCkgPT4gdC50ZXh0TGFiZWwudG9Mb3dlckNhc2UoKSA9PT0gdGFiTGFiZWwudG9Mb3dlckNhc2UoKSk7XG4gIH1cbn1cbiIsIjwhLS0gR2VuZXJpYyBlcnJvciBoZWFkaW5nIGFuZCBlcnJvciBtZXNzYWdlIHRvIGJlIGRpc3BsYXllZCBvbmx5IGlmIHRoZXJlIGFyZSBubyBzcGVjaWZpYyBjYWxsYmFjayBlcnJvcnMgb3Igd2FybmluZ3MsIG9yIG5vIGVycm9yIGRldGFpbHMgLS0+XG48ZGl2ICpuZ0lmPVwiZXJyb3IgJiYgIShlcnJvci5jYWxsYmFja0Vycm9ycyB8fCBlcnJvci5jYWxsYmFja1dhcm5pbmdzIHx8IGVycm9yLmRldGFpbHMpXCIgY2xhc3M9XCJlcnJvci1zdW1tYXJ5XCJcbiAgICAgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbGxlZGJ5PVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktaGVhZGluZ1wiIHRhYmluZGV4PVwiLTFcIj5cbiAgPGgxIGNsYXNzPVwiaGVhZGluZy1oMSBlcnJvci1zdW1tYXJ5LWhlYWRpbmdcIiBpZD1cImVkaXQtY2FzZS1ldmVudF9lcnJvci1zdW1tYXJ5LWhlYWRpbmdcIj5cbiAgICB7eydTb21ldGhpbmcgd2VudCB3cm9uZycgfCBycHhUcmFuc2xhdGV9fVxuICA8L2gxPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeV9fYm9keVwiIGlkPVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktYm9keVwiPlxuICAgIDxwPnt7XCJXZSdyZSB3b3JraW5nIHRvIGZpeCB0aGUgcHJvYmxlbS4gVHJ5IGFnYWluIHNob3J0bHkuXCIgfCBycHhUcmFuc2xhdGV9fTwvcD5cbiAgICA8cD5cbiAgICAgIDxhIGhyZWY9XCJnZXQtaGVscFwiIHRhcmdldD1cIl9ibGFua1wiPlxuICAgICAgICB7e1wiQ29udGFjdCB1c1wiIHwgcnB4VHJhbnNsYXRlfX08L2E+IHt7XCJpZiB5b3UncmUgc3RpbGwgaGF2aW5nIHByb2JsZW1zLlwiIHwgcnB4VHJhbnNsYXRlfX1cbiAgICA8L3A+XG4gIDwvZGl2PlxuPC9kaXY+XG48IS0tIENhbGxiYWNrIGVycm9yIGhlYWRpbmcgYW5kIGVycm9yIG1lc3NhZ2UgdG8gYmUgZGlzcGxheWVkIGlmIHRoZXJlIGFyZSBzcGVjaWZpYyBlcnJvciBkZXRhaWxzIC0tPlxuPGRpdiAqbmdJZj1cImVycm9yICYmIGVycm9yLmRldGFpbHNcIiBjbGFzcz1cImVycm9yLXN1bW1hcnlcIiByb2xlPVwiZ3JvdXBcIlxuICAgICBhcmlhLWxhYmVsbGVkYnk9XCJlZGl0LWNhc2UtZXZlbnRfZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCIgdGFiaW5kZXg9XCItMVwiPlxuICA8aDIgY2xhc3M9XCJoZWFkaW5nLWgyIGVycm9yLXN1bW1hcnktaGVhZGluZ1wiIGlkPVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktaGVhZGluZ1wiPlxuICAgIHt7J1RoZSBjYWxsYmFjayBkYXRhIGZhaWxlZCB2YWxpZGF0aW9uJyB8IHJweFRyYW5zbGF0ZX19XG4gIDwvaDI+XG4gIDxwPnt7ZXJyb3IubWVzc2FnZSB8IHJweFRyYW5zbGF0ZX19PC9wPlxuICA8dWwgKm5nSWY9XCJlcnJvci5kZXRhaWxzPy5maWVsZF9lcnJvcnNcIiBjbGFzcz1cImVycm9yLXN1bW1hcnktbGlzdFwiPlxuICAgIDxsaSAqbmdGb3I9XCJsZXQgZmllbGRFcnJvciBvZiBlcnJvci5kZXRhaWxzLmZpZWxkX2Vycm9yc1wiPlxuICAgICAge3tmaWVsZEVycm9yLm1lc3NhZ2UgfCBycHhUcmFuc2xhdGV9fVxuICAgIDwvbGk+XG4gIDwvdWw+XG48L2Rpdj5cbjxjY2QtY2FsbGJhY2stZXJyb3JzXG4gIFt0cmlnZ2VyVGV4dENvbnRpbnVlXT1cInRyaWdnZXJUZXh0U3RhcnRcIlxuICBbdHJpZ2dlclRleHRJZ25vcmVdPVwidHJpZ2dlclRleHRJZ25vcmVXYXJuaW5nc1wiXG4gIFtjYWxsYmFja0Vycm9yc1N1YmplY3RdPVwiY2FsbGJhY2tFcnJvcnNTdWJqZWN0XCJcbiAgKGNhbGxiYWNrRXJyb3JzQ29udGV4dCk9XCJjYWxsYmFja0Vycm9yc05vdGlmeSgkZXZlbnQpXCI+XG48L2NjZC1jYWxsYmFjay1lcnJvcnM+XG48Y2NkLWFjdGl2aXR5IFtjYXNlSWRdPVwiY2FzZURldGFpbHMuY2FzZV9pZFwiIFtkaXNwbGF5TW9kZV09XCJCQU5ORVJcIj48L2NjZC1hY3Rpdml0eT5cbjxkaXYgY2xhc3M9XCJncmlkLXJvd1wiPlxuICA8ZGl2IGNsYXNzPVwiY29sdW1uLW9uZS1oYWxmXCI+XG4gICAgPGNjZC1jYXNlLWhlYWRlciBbY2FzZURldGFpbHNdPVwiY2FzZURldGFpbHNcIj48L2NjZC1jYXNlLWhlYWRlcj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FzZS12aWV3ZXItY29udHJvbHNcIiAqbmdJZj1cImhhc1ByaW50ICYmICFpc0RyYWZ0KCkgJiYgaXNQcmludEVuYWJsZWQoKVwiPlxuICAgICAgPGEgaWQ9XCJjYXNlLXZpZXdlci1jb250cm9sLXByaW50XCIgcm91dGVyTGluaz1cInByaW50XCIgY2xhc3M9XCJidXR0b24gYnV0dG9uLXNlY29uZGFyeVwiPnt7J1ByaW50JyB8IHJweFRyYW5zbGF0ZX19PC9hPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImhhc0V2ZW50U2VsZWN0b3JcIiBjbGFzcz1cImNvbHVtbi1vbmUtaGFsZlwiPlxuICAgIDxjY2QtZXZlbnQtdHJpZ2dlciBbaXNEaXNhYmxlZF09XCJpc1RyaWdnZXJCdXR0b25EaXNhYmxlZCgpXCIgW3RyaWdnZXJzXT1cImNhc2VEZXRhaWxzLnRyaWdnZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW3RyaWdnZXJUZXh0XT1cInRyaWdnZXJUZXh0XCIgKG9uVHJpZ2dlckNoYW5nZSk9XCJjbGVhckVycm9yc0FuZFdhcm5pbmdzKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAob25UcmlnZ2VyU3VibWl0KT1cImFwcGx5VHJpZ2dlcigkZXZlbnQpXCI+PC9jY2QtZXZlbnQtdHJpZ2dlcj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJncmlkLXJvd1wiICpuZ0lmPVwiYWN0aXZlQ2FzZUZsYWdzICYmICFjYXNlRmxhZ3NFeHRlcm5hbFVzZXJcIj5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbi1mdWxsXCI+XG4gICAgPGNjZC1ub3RpZmljYXRpb24tYmFubmVyIFtub3RpZmljYXRpb25CYW5uZXJDb25maWddPVwibm90aWZpY2F0aW9uQmFubmVyQ29uZmlnXCIgKGxpbmtDbGlja2VkKT1cIm9uTGlua0NsaWNrZWQoJGV2ZW50KVwiPlxuICAgIDwvY2NkLW5vdGlmaWNhdGlvbi1iYW5uZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiZ3JpZC1yb3dcIj5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbi1mdWxsXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc1RhYnNQcmVzZW50KClcIj5cbiAgICAgIDxtYXQtdGFiLWdyb3VwICN0YWJHcm91cCBhbmltYXRpb25EdXJhdGlvbj1cIjBtc1wiIChzZWxlY3RlZEluZGV4Q2hhbmdlKT1cInRhYkNoYW5nZWQoJGV2ZW50KVwiIFtkaXNhYmxlUmlwcGxlXT1cInRydWVcIlxuICAgICAgICBbc2VsZWN0ZWRJbmRleF09XCJzZWxlY3RlZFRhYkluZGV4XCI+XG4gICAgICAgIDxtYXQtdGFiICpuZ0Zvcj1cImxldCB0YWIgb2YgcHJlcGVuZGVkVGFic1wiIFtpZF09XCJ0YWIuaWRcIiBbbGFiZWxdPVwidGFiLmxhYmVsIHwgcnB4VHJhbnNsYXRlXCI+XG4gICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgPG1hdC10YWIgKm5nRm9yPVwibGV0IHRhYiBvZiBzb3J0ZWRUYWJzOyBsZXQgY3VySWR4PWluZGV4XCIgW2lkXT1cInRhYi5pZFwiIFtsYWJlbF09XCJ0YWIubGFiZWwgfCBycHhUcmFuc2xhdGVcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0VGFiQ29udGVudD5cbiAgICAgICAgICAgIDx0YWJsZSBbY2xhc3NdPVwidGFiLmlkXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInY2FzZSB2aWV3ZXIgdGFibGUnIHwgcnB4VHJhbnNsYXRlXCI+XG4gICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGQgb2YgdGFiIHwgY2NkVGFiRmllbGRzIHwgY2NkUmVhZEZpZWxkc0ZpbHRlcjpmYWxzZSA6dW5kZWZpbmVkIDp0cnVlIDogZm9ybUdyb3VwLmNvbnRyb2xzWydkYXRhJ11cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNjZExhYmVsU3Vic3RpdHV0b3IgW2Nhc2VGaWVsZF09XCJmaWVsZFwiIFtjb250ZXh0RmllbGRzXT1cImNhc2VGaWVsZHNcIiBbaGlkZGVuXT1cImZpZWxkLmhpZGRlblwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiIShmaWVsZCB8IGNjZElzQ29tcG91bmQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBpZD1cImNhc2Utdmlld2VyLWZpZWxkLWxhYmVsXCIgKm5nSWY9XCIhaXNGaWVsZFRvSGF2ZU5vTGFiZWwoZmllbGQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FzZS12aWV3ZXItbGFiZWwgdGV4dC0xNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2ZpZWxkLmxhYmVsIHwgcnB4VHJhbnNsYXRlfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZCBbaWRdPVwiJ2Nhc2Utdmlld2VyLWZpZWxkLXJlYWQtLScgKyBmaWVsZC5pZFwiIHNjb3BlPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtMTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNjZC1maWVsZC1yZWFkIFt0b3BMZXZlbEZvcm1Hcm91cF09XCJmb3JtR3JvdXAuY29udHJvbHNbJ2RhdGEnXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2FzZUZpZWxkXT1cImZpZWxkXCIgW2Nhc2VSZWZlcmVuY2VdPVwiY2FzZURldGFpbHMuY2FzZV9pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWFya2Rvd25Vc2VIcmVmQXNSb3V0ZXJMaW5rXT1cIm1hcmtkb3duVXNlSHJlZkFzUm91dGVyTGlua1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NjZC1maWVsZC1yZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdTd2l0Y2hDYXNlPVwiZmFsc2VcIiBjbGFzcz1cImNvbXBvdW5kLWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRoIFtpZF09XCInY2FzZS12aWV3ZXItZmllbGQtcmVhZC0tJyArIGZpZWxkLmlkXCIgc2NvcGU9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC0xNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2NkLWZpZWxkLXJlYWQgW3RvcExldmVsRm9ybUdyb3VwXT1cImZvcm1Hcm91cC5jb250cm9sc1snZGF0YSddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjYXNlRmllbGRdPVwiZmllbGRcIiBbY2FzZVJlZmVyZW5jZV09XCJjYXNlRGV0YWlscy5jYXNlX2lkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXJrZG93blVzZUhyZWZBc1JvdXRlckxpbmtdPVwibWFya2Rvd25Vc2VIcmVmQXNSb3V0ZXJMaW5rXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2NkLWZpZWxkLXJlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9tYXQtdGFiPlxuICAgICAgICA8bWF0LXRhYiAqbmdGb3I9XCJsZXQgdGFiIG9mIGFwcGVuZGVkVGFic1wiIFtpZF09XCJ0YWIuaWRcIiBbbGFiZWxdPVwidGFiLmxhYmVsIHwgcnB4VHJhbnNsYXRlXCI+XG4gICAgICAgIDwvbWF0LXRhYj5cbiAgICAgIDwvbWF0LXRhYi1ncm91cD5cbiAgICAgIDxyb3V0ZXItb3V0bGV0ICpuZ0lmPVwiKHByZXBlbmRlZFRhYnMgJiYgcHJlcGVuZGVkVGFicy5sZW5ndGgpIHx8IChhcHBlbmRlZFRhYnMgJiYgYXBwZW5kZWRUYWJzLmxlbmd0aClcIj48L3JvdXRlci1vdXRsZXQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
686
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLXZpZXdlci9jYXNlLWZ1bGwtYWNjZXNzLXZpZXcvY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLXZpZXdlci9jYXNlLWZ1bGwtYWNjZXNzLXZpZXcvY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQzVCLFNBQVMsRUFDekIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxJQUFJLFNBQVMsRUFBNEMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6SCxPQUFPLEVBQTBCLGlCQUFpQixJQUFJLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pHLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFVLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQWMsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUN6RCxP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QUtNO1FBQ04sK0JBQXNCLGNBQUE7UUFFbEIsaUdBK0NlO1FBQ2pCLGlCQUFNLEVBQUE7O1FBdEdGLGtIQUFpRjtRQWNqRixlQUE0QjtRQUE1QixxREFBNEI7UUFhaEMsZUFBd0M7UUFBeEMsMERBQXdDLG9EQUFBLG9EQUFBO1FBSzVCLGVBQThCO1FBQTlCLGdEQUE4QiwyQkFBQTtRQUd2QixlQUEyQjtRQUEzQiw2Q0FBMkI7UUFDVCxlQUFnRDtRQUFoRCw2RUFBZ0Q7UUFJL0UsZUFBc0I7UUFBdEIsMkNBQXNCO1FBTVAsZUFBK0M7UUFBL0Msd0VBQStDO1FBUW5ELGVBQXNCO1FBQXRCLDJDQUFzQjs7dUZEYjVCLDJCQUEyQjtjQUx2QyxTQUFTOzJCQUNFLDJCQUEyQjs2ZUFZckIsUUFBUTtrQkFBdkIsS0FBSztZQUNVLGdCQUFnQjtrQkFBL0IsS0FBSztZQUNVLFdBQVc7a0JBQTFCLEtBQUs7WUFDVSxhQUFhO2tCQUE1QixLQUFLO1lBQ1UsWUFBWTtrQkFBM0IsS0FBSztZQTBCMkMsUUFBUTtrQkFBeEQsU0FBUzttQkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE5nWm9uZSwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCxcbiAgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdExlZ2FjeURpYWxvZyBhcyBNYXREaWFsb2csIE1hdExlZ2FjeURpYWxvZ0NvbmZpZyBhcyBNYXREaWFsb2dDb25maWcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZGlhbG9nJztcbmltcG9ydCB7IE1hdExlZ2FjeVRhYiBhcyBNYXRUYWIsIE1hdExlZ2FjeVRhYkdyb3VwIGFzIE1hdFRhYkdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LXRhYnMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FbmQsIFBhcmFtcywgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IHBsYWluVG9DbGFzcyB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcbmltcG9ydCB7IFJweFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdycHgteHVpLXRyYW5zbGF0aW9uJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgTm90aWZpY2F0aW9uQmFubmVyQ29uZmlnLFxuICBOb3RpZmljYXRpb25CYW5uZXJIZWFkZXJDbGFzcyxcbiAgTm90aWZpY2F0aW9uQmFubmVyVHlwZVxufSBmcm9tICcuLi8uLi8uLi8uLi9jb21wb25lbnRzL2Jhbm5lcnMvbm90aWZpY2F0aW9uLWJhbm5lcic7XG5pbXBvcnQgeyBTaG93Q29uZGl0aW9uIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBBY3Rpdml0eSwgQ2FzZUZpZWxkLCBDYXNlVGFiLCBDYXNlVmlldywgQ2FzZVZpZXdUcmlnZ2VyLCBEUkFGVF9RVUVSWV9QQVJBTSwgRGlzcGxheU1vZGUsIERyYWZ0IH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IENhc2VWaWV3RXZlbnRJZHMgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vY2FzZS12aWV3L2Nhc2Utdmlldy1ldmVudC1pZHMuZW51bSc7XG5pbXBvcnQge1xuICBBY3Rpdml0eVBvbGxpbmdTZXJ2aWNlLFxuICBBbGVydFNlcnZpY2UsXG4gIERyYWZ0U2VydmljZSxcbiAgRXJyb3JOb3RpZmllclNlcnZpY2UsXG4gIEZpZWxkc1V0aWxzLFxuICBOYXZpZ2F0aW9uTm90aWZpZXJTZXJ2aWNlLFxuICBOYXZpZ2F0aW9uT3JpZ2luLFxuICBPcmRlclNlcnZpY2UsXG4gIFNlc3Npb25TdG9yYWdlU2VydmljZVxufSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBDb252ZXJ0SHJlZlRvUm91dGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2Nhc2UtZWRpdG9yL3NlcnZpY2VzL2NvbnZlcnQtaHJlZi10by1yb3V0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBEZWxldGVPckNhbmNlbERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2RpYWxvZ3MnO1xuaW1wb3J0IHsgQ2FsbGJhY2tFcnJvcnNDb250ZXh0IH0gZnJvbSAnLi4vLi4vZXJyb3InO1xuaW1wb3J0IHsgaW5pdERpYWxvZyB9IGZyb20gJy4uLy4uL2hlbHBlcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtY2FzZS1mdWxsLWFjY2Vzcy12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nhc2UtZnVsbC1hY2Nlc3Mtdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nhc2UtZnVsbC1hY2Nlc3Mtdmlldy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE9SSUdJTl9RVUVSWV9QQVJBTSA9ICdvcmlnaW4nO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRSSUdHRVJfVEVYVF9TVEFSVCA9ICdHbyc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVFJJR0dFUl9URVhUX0NPTlRJTlVFID0gJ0lnbm9yZSBXYXJuaW5nIGFuZCBHbyc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVU5JQ09ERV9TUEFDRSA9ICclMjAnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEVNUFRZX1NQQUNFID0gJyAnO1xuICBwcml2YXRlIHJlYWRvbmx5IEhFQVJJTkdTX1RBQl9MQUJFTCA9ICdIZWFyaW5ncyc7XG5cbiAgQElucHV0KCkgcHVibGljIGhhc1ByaW50ID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIGhhc0V2ZW50U2VsZWN0b3IgPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgY2FzZURldGFpbHM6IENhc2VWaWV3O1xuICBASW5wdXQoKSBwdWJsaWMgcHJlcGVuZGVkVGFiczogQ2FzZVRhYltdID0gW107XG4gIEBJbnB1dCgpIHB1YmxpYyBhcHBlbmRlZFRhYnM6IENhc2VUYWJbXSA9IFtdO1xuXG4gIHB1YmxpYyBCQU5ORVIgPSBEaXNwbGF5TW9kZS5CQU5ORVI7XG4gIHB1YmxpYyBzb3J0ZWRUYWJzOiBDYXNlVGFiW107XG4gIHB1YmxpYyBjYXNlRmllbGRzOiBDYXNlRmllbGRbXTtcbiAgcHVibGljIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICBwdWJsaWMgZXJyb3I6IGFueTtcbiAgcHVibGljIHRyaWdnZXJUZXh0U3RhcnQgPSBDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuVFJJR0dFUl9URVhUX1NUQVJUO1xuICBwdWJsaWMgdHJpZ2dlclRleHRJZ25vcmVXYXJuaW5ncyA9IENhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudC5UUklHR0VSX1RFWFRfQ09OVElOVUU7XG4gIHB1YmxpYyB0cmlnZ2VyVGV4dDogc3RyaW5nID0gQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50LlRSSUdHRVJfVEVYVF9TVEFSVDtcbiAgcHVibGljIGlnbm9yZVdhcm5pbmcgPSBmYWxzZTtcbiAgcHVibGljIGFjdGl2aXR5U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBjYXNlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBlcnJvclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgZGlhbG9nQ29uZmlnOiBNYXREaWFsb2dDb25maWc7XG4gIHB1YmxpYyBtYXJrZG93blVzZUhyZWZBc1JvdXRlckxpbms6IGJvb2xlYW47XG4gIHB1YmxpYyBtZXNzYWdlOiBzdHJpbmc7XG4gIHB1YmxpYyBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIG5vdGlmaWNhdGlvbkJhbm5lckNvbmZpZzogTm90aWZpY2F0aW9uQmFubmVyQ29uZmlnO1xuICBwdWJsaWMgc2VsZWN0ZWRUYWJJbmRleCA9IDA7XG4gIHB1YmxpYyBhY3RpdmVDYXNlRmxhZ3MgPSBmYWxzZTtcbiAgcHVibGljIGNhc2VGbGFnc0V4dGVybmFsVXNlciA9IGZhbHNlO1xuICBwcml2YXRlIHJlYWRvbmx5IGNhc2VGbGFnc1JlYWRFeHRlcm5hbE1vZGUgPSAnI0FSR1VNRU5UKFJFQUQsRVhURVJOQUwpJztcbiAgcHJpdmF0ZSBzdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIHB1YmxpYyBjYWxsYmFja0Vycm9yc1N1YmplY3Q6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XG4gIEBWaWV3Q2hpbGQoJ3RhYkdyb3VwJywgeyBzdGF0aWM6IGZhbHNlIH0pIHB1YmxpYyB0YWJHcm91cDogTWF0VGFiR3JvdXA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmF2aWdhdGlvbk5vdGlmaWVyU2VydmljZTogTmF2aWdhdGlvbk5vdGlmaWVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9yZGVyU2VydmljZTogT3JkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZpdHlQb2xsaW5nU2VydmljZTogQWN0aXZpdHlQb2xsaW5nU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkcmFmdFNlcnZpY2U6IERyYWZ0U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVycm9yTm90aWZpZXJTZXJ2aWNlOiBFcnJvck5vdGlmaWVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnZlcnRIcmVmVG9Sb3V0ZXJTZXJ2aWNlOiBDb252ZXJ0SHJlZlRvUm91dGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNyZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uU3RvcmFnZVNlcnZpY2U6IFNlc3Npb25TdG9yYWdlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJweFRyYW5zbGF0aW9uUGlwZTogUnB4VHJhbnNsYXRlUGlwZVxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpbml0RGlhbG9nKCk7XG4gICAgdGhpcy5pbml0KCk7XG4gICAgdGhpcy5jYWxsYmFja0Vycm9yc1N1YmplY3Quc3Vic2NyaWJlKGVycm9yRXZlbnQgPT4ge1xuICAgICAgdGhpcy5lcnJvciA9IGVycm9yRXZlbnQ7XG4gICAgfSk7XG4gICAgdGhpcy5lcnJvclN1YnNjcmlwdGlvbiA9IHRoaXMuZXJyb3JOb3RpZmllclNlcnZpY2UuZXJyb3Iuc3Vic2NyaWJlKGVycm9yID0+IHtcbiAgICAgIGlmIChlcnJvciAmJiBlcnJvci5zdGF0dXMgIT09IDQwMSAmJiBlcnJvci5zdGF0dXMgIT09IDQwMykge1xuICAgICAgICB0aGlzLmVycm9yID0gZXJyb3I7XG4gICAgICAgIHRoaXMuY2FsbGJhY2tFcnJvcnNTdWJqZWN0Lm5leHQodGhpcy5lcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5tYXJrZG93blVzZUhyZWZBc1JvdXRlckxpbmsgPSB0cnVlO1xuXG4gICAgdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UucmVtb3ZlSXRlbSgnZXZlbnRVcmwnKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5jb252ZXJ0SHJlZlRvUm91dGVyU2VydmljZS5nZXRIcmVmTWFya2Rvd25MaW5rQ29udGVudCgpLnN1YnNjcmliZSgoaHJlZk1hcmtkb3duTGlua0NvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgLy8gZG8gbm90IGNvbnZlcnQgcm91dGVyIHdpdGggaW5pdGlhbCBkZWZhdWx0IHZhbHVlOyBjb252ZXJ0IHRvIHJvdXRlciBvbmx5IG9uIHVwZGF0ZWQgbGluayBjb250ZW50XG4gICAgICBpZiAoaHJlZk1hcmtkb3duTGlua0NvbnRlbnQgIT09ICdEZWZhdWx0Jykge1xuICAgICAgICB0aGlzLmNvbnZlcnRIcmVmVG9Sb3V0ZXJTZXJ2aWNlLmNhbGxBbmd1bGFyUm91dGVyKGhyZWZNYXJrZG93bkxpbmtDb250ZW50KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmFjdGl2aXR5UG9sbGluZ1NlcnZpY2UuaXNFbmFibGVkICYmICF0aGlzLmFjdGl2aXR5U3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIHRoaXMuYWN0aXZpdHlTdWJzY3JpcHRpb24gPSB0aGlzLnBvc3RWaWV3QWN0aXZpdHkoKS5zdWJzY3JpYmUoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuY2hlY2tSb3V0ZUFuZFNldENhc2VWaWV3VGFiKCk7XG5cbiAgICAvLyBDaGVjayBmb3IgYWN0aXZlIENhc2UgRmxhZ3NcbiAgICB0aGlzLmFjdGl2ZUNhc2VGbGFncyA9IHRoaXMuaGFzQWN0aXZlQ2FzZUZsYWdzKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzICYmIGNoYW5nZXMucHJlcGVuZGVkVGFicyAmJiAhY2hhbmdlcy5wcmVwZW5kZWRUYWJzLmZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLmluaXQoKTtcbiAgICAgIHRoaXMuY3JmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIHRoaXMub3JnYW5pc2VUYWJQb3NpdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc1ByaW50RW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jYXNlRGV0YWlscy5jYXNlX3R5cGUucHJpbnRFbmFibGVkO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFjdGl2aXR5UG9sbGluZ1NlcnZpY2UuaXNFbmFibGVkKSB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlKHRoaXMuYWN0aXZpdHlTdWJzY3JpcHRpb24pO1xuICAgIH1cbiAgICBpZiAoIXRoaXMucm91dGUuc25hcHNob3QuZGF0YS5jYXNlKSB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlKHRoaXMuY2FzZVN1YnNjcmlwdGlvbik7XG4gICAgfVxuICAgIHRoaXMudW5zdWJzY3JpYmUodGhpcy5jYWxsYmFja0Vycm9yc1N1YmplY3QpO1xuICAgIHRoaXMudW5zdWJzY3JpYmUodGhpcy5lcnJvclN1YnNjcmlwdGlvbik7XG4gICAgdGhpcy51bnN1YnNjcmliZSh0aGlzLnN1YnNjcmlwdGlvbik7XG4gICAgdGhpcy5zdWJzLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgcHVibGljIHVuc3Vic2NyaWJlKHN1YnNjcmlwdGlvbjogYW55KSB7XG4gICAgaWYgKHN1YnNjcmlwdGlvbikge1xuICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja1JvdXRlQW5kU2V0Q2FzZVZpZXdUYWIoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzLnB1c2godGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAucGlwZShmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE5hdmlnYXRpb25FbmQpID0+IHtcbiAgICAgICAgY29uc3QgdXJsID0gZXZlbnQgJiYgKGV2ZW50IGFzIGFueSkudXJsO1xuICAgICAgICBpZiAodXJsKSB7XG4gICAgICAgICAgY29uc3QgdGFiVXJsID0gdXJsID8gdXJsLnNwbGl0KCcjJykgOiBudWxsO1xuICAgICAgICAgIGNvbnN0IHRhYiA9IHRhYlVybCAmJiB0YWJVcmwubGVuZ3RoID4gMSA/IHRhYlVybFt0YWJVcmwubGVuZ3RoIC0gMV0ucmVwbGFjZUFsbCgnJTIwJywgJyAnKSA6ICcnO1xuICAgICAgICAgIGNvbnN0IG1hdFRhYiA9IHRoaXMudGFiR3JvdXAuX3RhYnMuZmluZCgoeCkgPT4geC50ZXh0TGFiZWwudG9Mb3dlckNhc2UoKSA9PT0gdGFiLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgIC8vIFVwZGF0ZSBzZWxlY3RlZEluZGV4IG9ubHkgaWYgbWF0VGFiLnBvc2l0aW9uIGlzIGEgbm9uLXplcm8gbnVtYmVyIChwb3NpdGl2ZSBvciBuZWdhdGl2ZSk7IHRoaXMgbWVhbnMgdGhlXG4gICAgICAgICAgLy8gbWF0VGFiIGlzIG5vdCBhbHJlYWR5IHNlbGVjdGVkIChwb3NpdGlvbiBpcyByZWxhdGl2ZTsgcG9zaXRpdmUgPSByaWdodCwgbmVnYXRpdmUgPSBsZWZ0KSBvciBpdCB3b3VsZCBiZSAwXG4gICAgICAgICAgaWYgKG1hdFRhYj8ucG9zaXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9IG1hdFRhYi5wb3NpdGlvbjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgfVxuXG4gIHB1YmxpYyBwb3N0Vmlld0FjdGl2aXR5KCk6IE9ic2VydmFibGU8QWN0aXZpdHlbXT4ge1xuICAgIHJldHVybiB0aGlzLmFjdGl2aXR5UG9sbGluZ1NlcnZpY2UucG9zdFZpZXdBY3Rpdml0eSh0aGlzLmNhc2VEZXRhaWxzLmNhc2VfaWQpO1xuICB9XG5cbiAgcHVibGljIGNsZWFyRXJyb3JzQW5kV2FybmluZ3MoKTogdm9pZCB7XG4gICAgdGhpcy5yZXNldEVycm9ycygpO1xuICAgIHRoaXMuaWdub3JlV2FybmluZyA9IGZhbHNlO1xuICAgIHRoaXMudHJpZ2dlclRleHQgPSBDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuVFJJR0dFUl9URVhUX1NUQVJUO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFwcGx5VHJpZ2dlcih0cmlnZ2VyOiBDYXNlVmlld1RyaWdnZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmVycm9yID0gbnVsbDtcblxuICAgIGNvbnN0IHRoZVF1ZXJ5UGFyYW1zOiBQYXJhbXMgPSB7fTtcblxuICAgIGlmICh0aGlzLmlnbm9yZVdhcm5pbmcpIHtcbiAgICAgIHRoZVF1ZXJ5UGFyYW1zWydpZ25vcmVXYXJuaW5nJ10gPSB0aGlzLmlnbm9yZVdhcm5pbmc7XG4gICAgfVxuXG4gICAgLy8gd2UgbWF5IG5lZWQgdG8gdGFrZSBjYXJlIG9mIGRpZmZlcmVudCB0cmlnZ2VycyBpbiB0aGUgZnV0dXJlXG4gICAgaWYgKHRyaWdnZXIuaWQgPT09IENhc2VWaWV3RXZlbnRJZHMuUXVlcnlNYW5hZ2VtZW50UmFpc2VRdWVyeSkge1xuICAgICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2AvcXVlcnktbWFuYWdlbWVudC9xdWVyeS8ke3RoaXMuY2FzZURldGFpbHMuY2FzZV9pZH1gXSk7XG4gICAgfSBlbHNlIGlmICh0cmlnZ2VyLmlkID09PSBDYXNlVmlld0V2ZW50SWRzLkRFTEVURSkge1xuICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihEZWxldGVPckNhbmNlbERpYWxvZ0NvbXBvbmVudCwgdGhpcy5kaWFsb2dDb25maWcpO1xuICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgIGlmIChyZXN1bHQgPT09ICdEZWxldGUnKSB7XG4gICAgICAgICAgdGhpcy5kcmFmdFNlcnZpY2UuZGVsZXRlRHJhZnQodGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkKVxuICAgICAgICAgICAgLnN1YnNjcmliZShfID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uTm90aWZpZXJTZXJ2aWNlLmFubm91bmNlTmF2aWdhdGlvbih7IGFjdGlvbjogTmF2aWdhdGlvbk9yaWdpbi5EUkFGVF9ERUxFVEVEIH0pO1xuICAgICAgICAgICAgfSwgXyA9PiB7XG4gICAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbk5vdGlmaWVyU2VydmljZS5hbm5vdW5jZU5hdmlnYXRpb24oeyBhY3Rpb246IE5hdmlnYXRpb25PcmlnaW4uRVJST1JfREVMRVRJTkdfRFJBRlQgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzRHJhZnQoKSAmJiB0cmlnZ2VyLmlkICE9PSBDYXNlVmlld0V2ZW50SWRzLkRFTEVURSkge1xuICAgICAgdGhlUXVlcnlQYXJhbXNbRFJBRlRfUVVFUllfUEFSQU1dID0gdGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkO1xuICAgICAgdGhlUXVlcnlQYXJhbXNbQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50Lk9SSUdJTl9RVUVSWV9QQVJBTV0gPSAndmlld0RyYWZ0JztcbiAgICAgIHRoaXMubmF2aWdhdGlvbk5vdGlmaWVyU2VydmljZS5hbm5vdW5jZU5hdmlnYXRpb24oXG4gICAgICAgIHtcbiAgICAgICAgICBhY3Rpb246IE5hdmlnYXRpb25PcmlnaW4uRFJBRlRfUkVTVU1FRCxcbiAgICAgICAgICBqaWQ6IHRoaXMuY2FzZURldGFpbHMuY2FzZV90eXBlLmp1cmlzZGljdGlvbi5pZCxcbiAgICAgICAgICBjdGlkOiB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfdHlwZS5pZCxcbiAgICAgICAgICBldGlkOiB0cmlnZ2VyLmlkLFxuICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB0aGVRdWVyeVBhcmFtc1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5uYXZpZ2F0aW9uTm90aWZpZXJTZXJ2aWNlLmFubm91bmNlTmF2aWdhdGlvbihcbiAgICAgICAge1xuICAgICAgICAgIGFjdGlvbjogTmF2aWdhdGlvbk9yaWdpbi5FVkVOVF9UUklHR0VSRUQsXG4gICAgICAgICAgcXVlcnlQYXJhbXM6IHRoZVF1ZXJ5UGFyYW1zLFxuICAgICAgICAgIGV0aWQ6IHRyaWdnZXIuaWQsXG4gICAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGFzVGFic1ByZXNlbnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc29ydGVkVGFicy5sZW5ndGggPiAwIHx8IHRoaXMucHJlcGVuZGVkVGFicy5sZW5ndGggPiAwIHx8IHRoaXMuYXBwZW5kZWRUYWJzLmxlbmd0aCA+IDA7XG4gIH1cblxuICBwdWJsaWMgY2FsbGJhY2tFcnJvcnNOb3RpZnkoY2FsbGJhY2tFcnJvcnNDb250ZXh0OiBDYWxsYmFja0Vycm9yc0NvbnRleHQpOiB2b2lkIHtcbiAgICB0aGlzLmlnbm9yZVdhcm5pbmcgPSBjYWxsYmFja0Vycm9yc0NvbnRleHQuaWdub3JlV2FybmluZztcbiAgICB0aGlzLnRyaWdnZXJUZXh0ID0gY2FsbGJhY2tFcnJvcnNDb250ZXh0LnRyaWdnZXJUZXh0O1xuICB9XG5cbiAgcHVibGljIGlzRHJhZnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIERyYWZ0LmlzRHJhZnQodGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1RyaWdnZXJCdXR0b25EaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMuZXJyb3JcbiAgICAgICYmIHRoaXMuZXJyb3IuY2FsbGJhY2tFcnJvcnNcbiAgICAgICYmIHRoaXMuZXJyb3IuY2FsbGJhY2tFcnJvcnMubGVuZ3RoKVxuICAgICAgfHwgKHRoaXMuZXJyb3JcbiAgICAgICAgJiYgdGhpcy5lcnJvci5kZXRhaWxzXG4gICAgICAgICYmIHRoaXMuZXJyb3IuZGV0YWlscy5maWVsZF9lcnJvcnNcbiAgICAgICAgJiYgdGhpcy5lcnJvci5kZXRhaWxzLmZpZWxkX2Vycm9ycy5sZW5ndGgpO1xuICB9XG5cbiAgcHVibGljIG9yZ2FuaXNlVGFiUG9zaXRpb24oKTogdm9pZCB7XG4gICAgbGV0IG1hdFRhYjogTWF0VGFiO1xuICAgIGNvbnN0IHVybCA9IHRoaXMubG9jYXRpb24ucGF0aCh0cnVlKTtcbiAgICBsZXQgaGFzaFZhbHVlID0gdXJsLnN1YnN0cmluZyh1cmwuaW5kZXhPZignIycpICsgMSk7XG4gICAgaWYgKCF1cmwuaW5jbHVkZXMoJyMnKSAmJiAhdXJsLmluY2x1ZGVzKCdyb2xlcy1hbmQtYWNjZXNzJykgJiYgIXVybC5pbmNsdWRlcygndGFza3MnKSAmJiAhdXJsLmluY2x1ZGVzKCdoZWFyaW5ncycpKSB7XG4gICAgICBjb25zdCBwYXRocyA9IHVybC5zcGxpdCgnLycpO1xuICAgICAgLy8gbGFzdFBhdGggY2FuIGJlIC9jYXNlSWQsIG9yIHRoZSB0YWJzIC90YXNrcywgL2hlYXJpbmdzIGV0Yy5cbiAgICAgIGNvbnN0IGxhc3RQYXRoID0gZGVjb2RlVVJJQ29tcG9uZW50KHBhdGhzW3BhdGhzLmxlbmd0aCAtIDFdKTtcbiAgICAgIGxldCBmb3VuZFRhYjogQ2FzZVRhYiA9IG51bGw7XG4gICAgICBpZiAoIXRoaXMucHJlcGVuZGVkVGFicykge1xuICAgICAgICB0aGlzLnByZXBlbmRlZFRhYnMgPSBbXTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFkZGl0aW9uYWxUYWJzID0gWy4uLnRoaXMucHJlcGVuZGVkVGFicywgLi4udGhpcy5hcHBlbmRlZFRhYnNdO1xuICAgICAgaWYgKGFkZGl0aW9uYWxUYWJzICYmIGFkZGl0aW9uYWxUYWJzLmxlbmd0aCkge1xuICAgICAgICBmb3VuZFRhYiA9IGFkZGl0aW9uYWxUYWJzLmZpbmQoKGNhc2VUYWI6IENhc2VUYWIpID0+IGNhc2VUYWIuaWQudG9Mb3dlckNhc2UoKSA9PT0gbGFzdFBhdGgudG9Mb3dlckNhc2UoKSk7XG4gICAgICB9XG4gICAgICAvLyBmb3VuZCB0YXNrcyBvciBoZWFyaW5nIHRhYlxuICAgICAgaWYgKGZvdW5kVGFiKSB7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnY2FzZXMnLCAnY2FzZS1kZXRhaWxzJywgdGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkLCBmb3VuZFRhYi5pZF0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIG1hdFRhYiA9IHRoaXMudGFiR3JvdXAuX3RhYnMuZmluZCgoeCkgPT4geC50ZXh0TGFiZWwgPT09IGZvdW5kVGFiLmxhYmVsKTtcbiAgICAgICAgICAvLyBVcGRhdGUgc2VsZWN0ZWRJbmRleCBvbmx5IGlmIG1hdFRhYi5wb3NpdGlvbiBpcyBhIG5vbi16ZXJvIG51bWJlciAocG9zaXRpdmUgb3IgbmVnYXRpdmUpOyB0aGlzIG1lYW5zIHRoZVxuICAgICAgICAgIC8vIG1hdFRhYiBpcyBub3QgYWxyZWFkeSBzZWxlY3RlZCAocG9zaXRpb24gaXMgcmVsYXRpdmU7IHBvc2l0aXZlID0gcmlnaHQsIG5lZ2F0aXZlID0gbGVmdCkgb3IgaXQgd291bGQgYmUgMFxuICAgICAgICAgIGlmIChtYXRUYWI/LnBvc2l0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSBtYXRUYWIucG9zaXRpb247XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgLy8gbGFzdCBwYXRoIGlzIGNhc2VJZFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gc29ydCB3aXRoIHRoZSBvcmRlciBvZiBDQ0QgcHJlZGVmaW5lZCB0YWJzXG4gICAgICAgIHRoaXMuY2FzZURldGFpbHMudGFicy5zb3J0KChhVGFiLCBiVGFiKSA9PiBhVGFiLm9yZGVyID4gYlRhYi5vcmRlciA/IDEgOiAoYlRhYi5vcmRlciA+IGFUYWIub3JkZXIgPyAtMSA6IDApKTtcbiAgICAgICAgLy8gc2VsZWN0IHRoZSBmaXJzdCB0YWIgY2hlY2tpbmcgaWYgdGhlIHRhYiBpcyB2aXNpYmxlXG4gICAgICAgIGNvbnN0IHByZVNlbGVjdFRhYjogQ2FzZVRhYiA9IHRoaXMuZmluZFByZVNlbGVjdGVkQWN0aXZlVGFiKCk7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnY2FzZXMnLCAnY2FzZS1kZXRhaWxzJywgdGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkXSwgeyBmcmFnbWVudDogcHJlU2VsZWN0VGFiLmxhYmVsIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIG1hdFRhYiA9IHRoaXMudGFiR3JvdXAuX3RhYnMuZmluZCgoeCkgPT4geC50ZXh0TGFiZWwgPT09IHByZVNlbGVjdFRhYi5sYWJlbCk7XG4gICAgICAgICAgLy8gVXBkYXRlIHNlbGVjdGVkSW5kZXggb25seSBpZiBtYXRUYWIucG9zaXRpb24gaXMgYSBub24temVybyBudW1iZXIgKHBvc2l0aXZlIG9yIG5lZ2F0aXZlKTsgdGhpcyBtZWFucyB0aGVcbiAgICAgICAgICAvLyBtYXRUYWIgaXMgbm90IGFscmVhZHkgc2VsZWN0ZWQgKHBvc2l0aW9uIGlzIHJlbGF0aXZlOyBwb3NpdGl2ZSA9IHJpZ2h0LCBuZWdhdGl2ZSA9IGxlZnQpIG9yIGl0IHdvdWxkIGJlIDBcbiAgICAgICAgICBpZiAobWF0VGFiPy5wb3NpdGlvbikge1xuICAgICAgICAgICAgdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4ID0gbWF0VGFiLnBvc2l0aW9uO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHJlZ0V4cCA9IG5ldyBSZWdFeHAoQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50LlVOSUNPREVfU1BBQ0UsICdnJyk7XG4gICAgICBoYXNoVmFsdWUgPSBoYXNoVmFsdWUucmVwbGFjZShyZWdFeHAsIENhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudC5FTVBUWV9TUEFDRSk7XG4gICAgICBpZiAoaGFzaFZhbHVlLmluY2x1ZGVzKCdoZWFyaW5ncycpKSB7XG4gICAgICAgIGhhc2hWYWx1ZSA9ICdoZWFyaW5ncyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaGFzaFZhbHVlLmluY2x1ZGVzKCdyb2xlcy1hbmQtYWNjZXNzJykgfHwgaGFzaFZhbHVlLmluY2x1ZGVzKCd0YXNrcycpKSB7XG4gICAgICAgICAgaGFzaFZhbHVlID0gaGFzaFZhbHVlLmluY2x1ZGVzKCdyb2xlcy1hbmQtYWNjZXNzJykgPyAncm9sZXMgYW5kIGFjY2VzcycgOiAndGFza3MnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBtYXRUYWIgPSB0aGlzLnRhYkdyb3VwLl90YWJzLmZpbmQoKHgpID0+XG4gICAgICAgIHgudGV4dExhYmVsLnJlcGxhY2UoQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50LkVNUFRZX1NQQUNFLCAnJykudG9Mb3dlckNhc2UoKSA9PT1cbiAgICAgICAgaGFzaFZhbHVlLnJlcGxhY2UoQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50LkVNUFRZX1NQQUNFLCAnJykudG9Mb3dlckNhc2UoKSk7XG4gICAgICAvLyBVcGRhdGUgc2VsZWN0ZWRJbmRleCBvbmx5IGlmIG1hdFRhYi5wb3NpdGlvbiBpcyBhIG5vbi16ZXJvIG51bWJlciAocG9zaXRpdmUgb3IgbmVnYXRpdmUpOyB0aGlzIG1lYW5zIHRoZVxuICAgICAgLy8gbWF0VGFiIGlzIG5vdCBhbHJlYWR5IHNlbGVjdGVkIChwb3NpdGlvbiBpcyByZWxhdGl2ZTsgcG9zaXRpdmUgPSByaWdodCwgbmVnYXRpdmUgPSBsZWZ0KSBvciBpdCB3b3VsZCBiZSAwXG4gICAgICBpZiAobWF0VGFiPy5wb3NpdGlvbikge1xuICAgICAgICB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSBtYXRUYWIucG9zaXRpb247XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZpbmRQcmVTZWxlY3RlZEFjdGl2ZVRhYigpOiBDYXNlVGFiIHtcbiAgICBjb25zdCB1bk9yZGVyZWRUYWJzSW5Tb3J0ZWRUYWJzID0gdGhpcy5jYXNlRGV0YWlscy50YWJzXG4gICAgICAuZmlsdGVyKCh0YWIpID0+ICF0YWIub3JkZXIgJiYgdGhpcy5zb3J0ZWRUYWJzLnNvbWUoKHNvcnRlZFRhYikgPT4gc29ydGVkVGFiLmlkID09PSB0YWIuaWQpKTtcbiAgICByZXR1cm4gdW5PcmRlcmVkVGFic0luU29ydGVkVGFicy5sZW5ndGggPyB1bk9yZGVyZWRUYWJzSW5Tb3J0ZWRUYWJzWzBdIDogdGhpcy5zb3J0ZWRUYWJzWzBdO1xuICB9XG5cbiAgLy8gUmVmYWN0b3JlZCB1bmRlciBFWFVJLTExMCB0byBhZGRyZXNzIGluZmluaXRlIHRhYiBsb29wIHRvIHVzZSB0YWJJbmRleENoYW5nZWQgaW5zdGVhZFxuICBwdWJsaWMgdGFiQ2hhbmdlZCh0YWJJbmRleENoYW5nZWQ6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG1hdFRhYiA9IHRoaXMudGFiR3JvdXAuX3RhYnMuZmluZCh0YWIgPT4gdGFiLmlzQWN0aXZlKTtcbiAgICBjb25zdCB0YWJMYWJlbCA9IG1hdFRhYi50ZXh0TGFiZWw7XG4gICAgLy8gc29ydGVkVGFicyBhcmUgZnJhZ21lbnRzXG4gICAgLy8gYXBwZW5kZWQvcHJlcGVwZW5kZWQgdGFicyB1c2Ugcm91dGVyIG5hdmlnYXRpb25cbiAgICBpZiAoKHRhYkluZGV4Q2hhbmdlZCA8PSAxICYmIHRoaXMucHJlcGVuZGVkVGFicyAmJiB0aGlzLnByZXBlbmRlZFRhYnMubGVuZ3RoKSB8fFxuICAgICAgKHRoaXMuYXBwZW5kZWRUYWJzPy5sZW5ndGggJiYgKHRhYkxhYmVsID09PSB0aGlzLkhFQVJJTkdTX1RBQl9MQUJFTFxuICAgICAgICB8fCB0YWJMYWJlbCA9PT0gdGhpcy5ycHhUcmFuc2xhdGlvblBpcGUudHJhbnNmb3JtKHRoaXMuSEVBUklOR1NfVEFCX0xBQkVMKSkpKSB7XG4gICAgICAvLyBIYWNrIHRvIGdldCBJRCBmcm9tIHRhYiBhcyBpdCdzIG5vdCBlYXNpbHkgYWNoaWV2ZWQgdGhyb3VnaCBBbmd1bGFyIE1hdGVyaWFsIFRhYnNcbiAgICAgIGNvbnN0IHRhYiA9IG1hdFRhYlsnX3ZpZXdDb250YWluZXJSZWYnXSBhcyBWaWV3Q29udGFpbmVyUmVmO1xuICAgICAgY29uc3QgaWQgPSAodGFiLmVsZW1lbnQubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaWQ7XG4gICAgICAvLyBjYXNlcy9jYXNlLWRldGFpbHMvOmNhc2VJZC9oZWFyaW5nc1xuICAgICAgLy8gY2FzZXMvY2FzZS1kZXRhaWxzLzpjYXNlSWQvcm9sZXMtYW5kLWFjY2Vzc1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2lkXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSb3V0aW5nIGhlcmUgaXMgYmFzZWQgb24gdGFiIGxhYmVsLCBub3QgaWRlYWxcbiAgICAgIC8vIGNhc2VzL2Nhc2UtZGV0YWlscy86Y2FzZUlkI3RhYkxhYmVsXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2Nhc2VzJywgJ2Nhc2UtZGV0YWlscycsIHRoaXMuY2FzZURldGFpbHMuY2FzZV9pZF0sIHsgZnJhZ21lbnQ6IHRhYkxhYmVsIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkxpbmtDbGlja2VkKHRyaWdnZXJPdXRwdXRFdmVudFRleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIEdldCB0aGUgKmFic29sdXRlKiAobm90IHJlbGF0aXZlKSBpbmRleCBvZiB0aGUgdGFyZ2V0IHRhYiBhbmQgc2V0IGFzIHRoZSBhY3RpdmUgdGFiLCB1c2luZyB0aGUgc2VsZWN0ZWRJbmRleCBpbnB1dFxuICAgIC8vIG9mIG1hdC10YWItZ3JvdXAgKGJvdW5kIHRvIHNlbGVjdGVkVGFiSW5kZXgpXG4gICAgY29uc3QgdGFyZ2V0VGFiSW5kZXggPSB0aGlzLnRhYkdyb3VwLl90YWJzLnRvQXJyYXkoKS5maW5kSW5kZXgodGFiID0+IHRhYi50ZXh0TGFiZWwgPT09IHRyaWdnZXJPdXRwdXRFdmVudFRleHQpO1xuICAgIGlmICh0YXJnZXRUYWJJbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVGFiSW5kZXggPSB0YXJnZXRUYWJJbmRleDtcbiAgICAgIHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9IHRhcmdldFRhYkluZGV4O1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYXNBY3RpdmVDYXNlRmxhZ3MoKTogYm9vbGVhbiB7XG4gICAgLy8gRGV0ZXJtaW5lIHdoaWNoIHRhYiBjb250YWlucyB0aGUgRmxhZ0xhdW5jaGVyIENhc2VGaWVsZCB0eXBlLCBmcm9tIHRoZSBDYXNlVmlldyBvYmplY3QgaW4gdGhlIHNuYXBzaG90IGRhdGFcbiAgICBjb25zdCBjYXNlRmxhZ3NUYWIgPSB0aGlzLmNhc2VEZXRhaWxzLnRhYnNcbiAgICAgID8gKHRoaXMuY2FzZURldGFpbHMudGFicykuZmlsdGVyKFxuICAgICAgICB0YWIgPT4gdGFiLmZpZWxkcyAmJiB0YWIuZmllbGRzLnNvbWUoY2FzZUZpZWxkID0+IEZpZWxkc1V0aWxzLmlzRmxhZ0xhdW5jaGVyQ2FzZUZpZWxkKGNhc2VGaWVsZCkpKVswXVxuICAgICAgOiBudWxsO1xuXG4gICAgaWYgKGNhc2VGbGFnc1RhYikge1xuICAgICAgLy8gQ2hlY2sgd2hldGhlciB0aGUgRmxhZ0xhdW5jaGVyIENhc2VGaWVsZCBpcyBpbiBleHRlcm5hbCBtb2RlIG9yIG5vdDsgdGhlIG5vdGlmaWNhdGlvbiBiYW5uZXIgc2hvdWxkIG5vdCBiZVxuICAgICAgLy8gZGlzcGxheWVkIGZvciBleHRlcm5hbCB1c2Vyc1xuICAgICAgdGhpcy5jYXNlRmxhZ3NFeHRlcm5hbFVzZXIgPSBjYXNlRmxhZ3NUYWIuZmllbGRzLmZpbmQoXG4gICAgICAgIGNhc2VGaWVsZCA9PiBGaWVsZHNVdGlscy5pc0ZsYWdMYXVuY2hlckNhc2VGaWVsZChjYXNlRmllbGQpKS5kaXNwbGF5X2NvbnRleHRfcGFyYW1ldGVyID09PSB0aGlzLmNhc2VGbGFnc1JlYWRFeHRlcm5hbE1vZGU7XG5cbiAgICAgIC8vIEdldCB0aGUgYWN0aXZlIGNhc2UgZmxhZ3MgY291bnRcbiAgICAgIC8vIENhbm5vdCBmaWx0ZXIgb3V0IGFueXRoaW5nIG90aGVyIHRoYW4gdG8gcmVtb3ZlIHRoZSBGbGFnTGF1bmNoZXIgQ2FzZUZpZWxkIGJlY2F1c2UgRmxhZ3MgZmllbGRzIG1heSBiZVxuICAgICAgLy8gY29udGFpbmVkIGluIG90aGVyIENhc2VGaWVsZCBpbnN0YW5jZXMsIGVpdGhlciBhcyBhIHN1Yi1maWVsZCBvZiBhIENvbXBsZXggZmllbGQsIG9yIGZpZWxkcyBpbiBhIGNvbGxlY3Rpb25cbiAgICAgIC8vIChvciBzdWItZmllbGRzIG9mIENvbXBsZXggZmllbGRzIGluIGEgY29sbGVjdGlvbilcbiAgICAgIGNvbnN0IGFjdGl2ZUNhc2VGbGFncyA9IGNhc2VGbGFnc1RhYi5maWVsZHNcbiAgICAgICAgLmZpbHRlcihjYXNlRmllbGQgPT4gIUZpZWxkc1V0aWxzLmlzRmxhZ0xhdW5jaGVyQ2FzZUZpZWxkKGNhc2VGaWVsZCkgJiYgY2FzZUZpZWxkLnZhbHVlKVxuICAgICAgICAucmVkdWNlKChhY3RpdmUsIGNhc2VGbGFnKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIEZpZWxkc1V0aWxzLmNvdW50QWN0aXZlRmxhZ3NJbkNhc2VGaWVsZChhY3RpdmUsIGNhc2VGbGFnKTtcbiAgICAgICAgfSwgMCk7XG5cbiAgICAgIGlmIChhY3RpdmVDYXNlRmxhZ3MgPiAwKSB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gYWN0aXZlQ2FzZUZsYWdzID4gMVxuICAgICAgICAgID8gYFRoZXJlIGFyZSAke2FjdGl2ZUNhc2VGbGFnc30gYWN0aXZlIGZsYWdzIG9uIHRoaXMgY2FzZS5gIDogJ1RoZXJlIGlzIDEgYWN0aXZlIGZsYWcgb24gdGhpcyBjYXNlLic7XG4gICAgICAgIC8vIEluaXRpYWxpc2UgYW5kIGRpc3BsYXkgbm90aWZpY2F0aW9uIGJhbm5lclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkJhbm5lckNvbmZpZyA9IHtcbiAgICAgICAgICBiYW5uZXJUeXBlOiBOb3RpZmljYXRpb25CYW5uZXJUeXBlLklORk9STUFUSU9OLFxuICAgICAgICAgIGhlYWRpbmdUZXh0OiAnSW1wb3J0YW50JyxcbiAgICAgICAgICBkZXNjcmlwdGlvbixcbiAgICAgICAgICBzaG93TGluazogdHJ1ZSxcbiAgICAgICAgICBsaW5rVGV4dDogJ1ZpZXcgY2FzZSBmbGFncycsXG4gICAgICAgICAgdHJpZ2dlck91dHB1dEV2ZW50OiB0cnVlLFxuICAgICAgICAgIHRyaWdnZXJPdXRwdXRFdmVudFRleHQ6IGNhc2VGbGFnc1RhYi5sYWJlbCxcbiAgICAgICAgICBoZWFkZXJDbGFzczogTm90aWZpY2F0aW9uQmFubmVySGVhZGVyQ2xhc3MuSU5GT1JNQVRJT05cbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgYSBDYXNlRmllbGQgaXMgdG8gYmUgZGlzcGxheWVkIHdpdGhvdXQgYSBsYWJlbCwgYXMgaXMgZXhwZWN0ZWQgZm9yIGFsbCBDb21wb25lbnRMYXVuY2hlci10eXBlXG4gICAqIGZpZWxkcy5cbiAgICogQHBhcmFtIGNhc2VGaWVsZCBUaGUgYENhc2VGaWVsZGAgaW5zdGFuY2UgdG8gY2hlY2tcbiAgICogQHJldHVybnMgYHRydWVgIGlmIGl0IHNob3VsZCBub3QgaGF2ZSBhIGxhYmVsOyBgZmFsc2VgIG90aGVyd2lzZVxuICAgKi9cbiAgcHVibGljIGlzRmllbGRUb0hhdmVOb0xhYmVsKGNhc2VGaWVsZDogQ2FzZUZpZWxkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGNhc2VGaWVsZC5maWVsZF90eXBlLnR5cGUgPT09ICdDb21wb25lbnRMYXVuY2hlcidcbiAgICAgICYmIGNhc2VGaWVsZC5kaXNwbGF5X2NvbnRleHRfcGFyYW1ldGVyID09PSAnI0FSR1VNRU5UKENhc2VGaWxlVmlldyknO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0KCk6IHZvaWQge1xuICAgIC8vIENsb25lIGFuZCBzb3J0IHRhYnMgYXJyYXlcbiAgICB0aGlzLnNvcnRlZFRhYnMgPSB0aGlzLm9yZGVyU2VydmljZS5zb3J0KHRoaXMuY2FzZURldGFpbHMudGFicyk7XG4gICAgdGhpcy5jYXNlRmllbGRzID0gdGhpcy5nZXRUYWJGaWVsZHMoKTtcbiAgICB0aGlzLnNvcnRlZFRhYnMgPSB0aGlzLnNvcnRUYWJGaWVsZHNBbmRGaWx0ZXJUYWJzKHRoaXMuc29ydGVkVGFicyk7XG4gICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLmJ1aWxkRm9ybUdyb3VwKHRoaXMuY2FzZUZpZWxkcyk7XG4gICAgaWYgKHRoaXMuY2FzZURldGFpbHMudHJpZ2dlcnMgJiYgdGhpcy5lcnJvcikge1xuICAgICAgdGhpcy5yZXNldEVycm9ycygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc29ydFRhYkZpZWxkc0FuZEZpbHRlclRhYnModGFiczogQ2FzZVRhYltdKTogQ2FzZVRhYltdIHtcbiAgICByZXR1cm4gdGFic1xuICAgICAgLm1hcCh0YWIgPT4gT2JqZWN0LmFzc2lnbih7fSwgdGFiLCB7IGZpZWxkczogdGhpcy5vcmRlclNlcnZpY2Uuc29ydCh0YWIuZmllbGRzKSB9KSlcbiAgICAgIC5maWx0ZXIodGFiID0+IFNob3dDb25kaXRpb24uZ2V0SW5zdGFuY2UodGFiLnNob3dfY29uZGl0aW9uKS5tYXRjaEJ5Q29udGV4dEZpZWxkcyh0aGlzLmNhc2VGaWVsZHMpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGFiRmllbGRzKCk6IENhc2VGaWVsZFtdIHtcbiAgICBjb25zdCBjYXNlRGF0YUZpZWxkcyA9IHRoaXMuc29ydGVkVGFicy5yZWR1Y2UoKGFjYywgdGFiKSA9PiB7XG4gICAgICByZXR1cm4gYWNjLmNvbmNhdChwbGFpblRvQ2xhc3MoQ2FzZUZpZWxkLCB0YWIuZmllbGRzKSk7XG4gICAgfSwgW10pO1xuXG4gICAgcmV0dXJuIGNhc2VEYXRhRmllbGRzLmNvbmNhdCh0aGlzLmNhc2VEZXRhaWxzLm1ldGFkYXRhRmllbGRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3IgRVVJLTM4MjU6XG4gICAqIEJ1aWxkcyBhIEZvcm1Hcm91cCBmcm9tIGFsbCB0aGUgQ2FzZUZpZWxkcyBjb250YWluZWQgd2l0aGluIHRoZSB2aWV3LlxuICAgKiBUaGlzIEZvcm1Hcm91cCBpcyBuZWNlc3NhcnkgZm9yIGV2YWx1YXRpb24gdGhlIHNob3cvaGlkZSBjb25kaXRpb25zIG9mXG4gICAqIGZpZWxkcyB0aGF0IGFyZSBkZXBlbmRlbnQgb24gYSBmaWVsZCBvbmx5IGF2YWlsYWJsZSBvbiBhIERJRkZFUkVOVCB0YWIuXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkRm9ybUdyb3VwKGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdKTogRm9ybUdyb3VwIHtcbiAgICBsZXQgdmFsdWU6IG9iamVjdCA9IHt9O1xuICAgIGlmIChjYXNlRmllbGRzKSB7XG4gICAgICBjYXNlRmllbGRzLmZvckVhY2goY2FzZUZpZWxkID0+IHtcbiAgICAgICAgdmFsdWUgPSB7XG4gICAgICAgICAgLi4udmFsdWUsXG4gICAgICAgICAgW2Nhc2VGaWVsZC5pZF06IGNhc2VGaWVsZC52YWx1ZVxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgRm9ybUdyb3VwKHsgZGF0YTogbmV3IEZvcm1Db250cm9sKHZhbHVlKSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRFcnJvcnMoKTogdm9pZCB7XG4gICAgdGhpcy5lcnJvciA9IG51bGw7XG4gICAgdGhpcy5jYWxsYmFja0Vycm9yc1N1YmplY3QubmV4dChudWxsKTtcbiAgICB0aGlzLmFsZXJ0U2VydmljZS5jbGVhcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRVcmxGcmFnbWVudCh1cmw6IHN0cmluZykge1xuICAgIHJldHVybiB1cmwuc3BsaXQoJyMnKVt1cmwuc3BsaXQoJyMnKS5sZW5ndGggLSAxXTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGFiSW5kZXhCeVRhYkxhYmVsKHRhYkdyb3VwOiBNYXRUYWJHcm91cCwgdGFiTGFiZWwpIHtcbiAgICByZXR1cm4gdGFiR3JvdXAuX3RhYnMudG9BcnJheSgpLmZpbmRJbmRleCgodCkgPT4gdC50ZXh0TGFiZWwudG9Mb3dlckNhc2UoKSA9PT0gdGFiTGFiZWwudG9Mb3dlckNhc2UoKSk7XG4gIH1cbn1cbiIsIjwhLS0gR2VuZXJpYyBlcnJvciBoZWFkaW5nIGFuZCBlcnJvciBtZXNzYWdlIHRvIGJlIGRpc3BsYXllZCBvbmx5IGlmIHRoZXJlIGFyZSBubyBzcGVjaWZpYyBjYWxsYmFjayBlcnJvcnMgb3Igd2FybmluZ3MsIG9yIG5vIGVycm9yIGRldGFpbHMgLS0+XG48ZGl2ICpuZ0lmPVwiZXJyb3IgJiYgIShlcnJvci5jYWxsYmFja0Vycm9ycyB8fCBlcnJvci5jYWxsYmFja1dhcm5pbmdzIHx8IGVycm9yLmRldGFpbHMpXCIgY2xhc3M9XCJlcnJvci1zdW1tYXJ5XCJcbiAgICAgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbGxlZGJ5PVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktaGVhZGluZ1wiIHRhYmluZGV4PVwiLTFcIj5cbiAgPGgxIGNsYXNzPVwiaGVhZGluZy1oMSBlcnJvci1zdW1tYXJ5LWhlYWRpbmdcIiBpZD1cImVkaXQtY2FzZS1ldmVudF9lcnJvci1zdW1tYXJ5LWhlYWRpbmdcIj5cbiAgICB7eydTb21ldGhpbmcgd2VudCB3cm9uZycgfCBycHhUcmFuc2xhdGV9fVxuICA8L2gxPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeV9fYm9keVwiIGlkPVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktYm9keVwiPlxuICAgIDxwPnt7XCJXZSdyZSB3b3JraW5nIHRvIGZpeCB0aGUgcHJvYmxlbS4gVHJ5IGFnYWluIHNob3J0bHkuXCIgfCBycHhUcmFuc2xhdGV9fTwvcD5cbiAgICA8cD5cbiAgICAgIDxhIGhyZWY9XCJnZXQtaGVscFwiIHRhcmdldD1cIl9ibGFua1wiPlxuICAgICAgICB7e1wiQ29udGFjdCB1c1wiIHwgcnB4VHJhbnNsYXRlfX08L2E+IHt7XCJpZiB5b3UncmUgc3RpbGwgaGF2aW5nIHByb2JsZW1zLlwiIHwgcnB4VHJhbnNsYXRlfX1cbiAgICA8L3A+XG4gIDwvZGl2PlxuPC9kaXY+XG48IS0tIENhbGxiYWNrIGVycm9yIGhlYWRpbmcgYW5kIGVycm9yIG1lc3NhZ2UgdG8gYmUgZGlzcGxheWVkIGlmIHRoZXJlIGFyZSBzcGVjaWZpYyBlcnJvciBkZXRhaWxzIC0tPlxuPGRpdiAqbmdJZj1cImVycm9yICYmIGVycm9yLmRldGFpbHNcIiBjbGFzcz1cImVycm9yLXN1bW1hcnlcIiByb2xlPVwiZ3JvdXBcIlxuICAgICBhcmlhLWxhYmVsbGVkYnk9XCJlZGl0LWNhc2UtZXZlbnRfZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCIgdGFiaW5kZXg9XCItMVwiPlxuICA8aDIgY2xhc3M9XCJoZWFkaW5nLWgyIGVycm9yLXN1bW1hcnktaGVhZGluZ1wiIGlkPVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktaGVhZGluZ1wiPlxuICAgIHt7J1RoZSBjYWxsYmFjayBkYXRhIGZhaWxlZCB2YWxpZGF0aW9uJyB8IHJweFRyYW5zbGF0ZX19XG4gIDwvaDI+XG4gIDxwPnt7ZXJyb3IubWVzc2FnZSB8IHJweFRyYW5zbGF0ZX19PC9wPlxuICA8dWwgKm5nSWY9XCJlcnJvci5kZXRhaWxzPy5maWVsZF9lcnJvcnNcIiBjbGFzcz1cImVycm9yLXN1bW1hcnktbGlzdFwiPlxuICAgIDxsaSAqbmdGb3I9XCJsZXQgZmllbGRFcnJvciBvZiBlcnJvci5kZXRhaWxzLmZpZWxkX2Vycm9yc1wiPlxuICAgICAge3tmaWVsZEVycm9yLm1lc3NhZ2UgfCBycHhUcmFuc2xhdGV9fVxuICAgIDwvbGk+XG4gIDwvdWw+XG48L2Rpdj5cbjxjY2QtY2FsbGJhY2stZXJyb3JzXG4gIFt0cmlnZ2VyVGV4dENvbnRpbnVlXT1cInRyaWdnZXJUZXh0U3RhcnRcIlxuICBbdHJpZ2dlclRleHRJZ25vcmVdPVwidHJpZ2dlclRleHRJZ25vcmVXYXJuaW5nc1wiXG4gIFtjYWxsYmFja0Vycm9yc1N1YmplY3RdPVwiY2FsbGJhY2tFcnJvcnNTdWJqZWN0XCJcbiAgKGNhbGxiYWNrRXJyb3JzQ29udGV4dCk9XCJjYWxsYmFja0Vycm9yc05vdGlmeSgkZXZlbnQpXCI+XG48L2NjZC1jYWxsYmFjay1lcnJvcnM+XG48Y2NkLWFjdGl2aXR5IFtjYXNlSWRdPVwiY2FzZURldGFpbHMuY2FzZV9pZFwiIFtkaXNwbGF5TW9kZV09XCJCQU5ORVJcIj48L2NjZC1hY3Rpdml0eT5cbjxkaXYgY2xhc3M9XCJncmlkLXJvd1wiPlxuICA8ZGl2IGNsYXNzPVwiY29sdW1uLW9uZS1oYWxmXCI+XG4gICAgPGNjZC1jYXNlLWhlYWRlciBbY2FzZURldGFpbHNdPVwiY2FzZURldGFpbHNcIj48L2NjZC1jYXNlLWhlYWRlcj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FzZS12aWV3ZXItY29udHJvbHNcIiAqbmdJZj1cImhhc1ByaW50ICYmICFpc0RyYWZ0KCkgJiYgaXNQcmludEVuYWJsZWQoKVwiPlxuICAgICAgPGEgaWQ9XCJjYXNlLXZpZXdlci1jb250cm9sLXByaW50XCIgcm91dGVyTGluaz1cInByaW50XCIgY2xhc3M9XCJidXR0b24gYnV0dG9uLXNlY29uZGFyeVwiPnt7J1ByaW50JyB8IHJweFRyYW5zbGF0ZX19PC9hPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImhhc0V2ZW50U2VsZWN0b3JcIiBjbGFzcz1cImNvbHVtbi1vbmUtaGFsZlwiPlxuICAgIDxjY2QtZXZlbnQtdHJpZ2dlciBbaXNEaXNhYmxlZF09XCJpc1RyaWdnZXJCdXR0b25EaXNhYmxlZCgpXCIgW3RyaWdnZXJzXT1cImNhc2VEZXRhaWxzLnRyaWdnZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW3RyaWdnZXJUZXh0XT1cInRyaWdnZXJUZXh0XCIgKG9uVHJpZ2dlckNoYW5nZSk9XCJjbGVhckVycm9yc0FuZFdhcm5pbmdzKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAob25UcmlnZ2VyU3VibWl0KT1cImFwcGx5VHJpZ2dlcigkZXZlbnQpXCI+PC9jY2QtZXZlbnQtdHJpZ2dlcj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJncmlkLXJvd1wiICpuZ0lmPVwiYWN0aXZlQ2FzZUZsYWdzICYmICFjYXNlRmxhZ3NFeHRlcm5hbFVzZXJcIj5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbi1mdWxsXCI+XG4gICAgPGNjZC1ub3RpZmljYXRpb24tYmFubmVyIFtub3RpZmljYXRpb25CYW5uZXJDb25maWddPVwibm90aWZpY2F0aW9uQmFubmVyQ29uZmlnXCIgKGxpbmtDbGlja2VkKT1cIm9uTGlua0NsaWNrZWQoJGV2ZW50KVwiPlxuICAgIDwvY2NkLW5vdGlmaWNhdGlvbi1iYW5uZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiZ3JpZC1yb3dcIj5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbi1mdWxsXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc1RhYnNQcmVzZW50KClcIj5cbiAgICAgIDxtYXQtdGFiLWdyb3VwICN0YWJHcm91cCBhbmltYXRpb25EdXJhdGlvbj1cIjBtc1wiIChzZWxlY3RlZEluZGV4Q2hhbmdlKT1cInRhYkNoYW5nZWQoJGV2ZW50KVwiIFtkaXNhYmxlUmlwcGxlXT1cInRydWVcIlxuICAgICAgICBbc2VsZWN0ZWRJbmRleF09XCJzZWxlY3RlZFRhYkluZGV4XCI+XG4gICAgICAgIDxtYXQtdGFiICpuZ0Zvcj1cImxldCB0YWIgb2YgcHJlcGVuZGVkVGFic1wiIFtpZF09XCJ0YWIuaWRcIiBbbGFiZWxdPVwidGFiLmxhYmVsIHwgcnB4VHJhbnNsYXRlXCI+XG4gICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgPG1hdC10YWIgKm5nRm9yPVwibGV0IHRhYiBvZiBzb3J0ZWRUYWJzOyBsZXQgY3VySWR4PWluZGV4XCIgW2lkXT1cInRhYi5pZFwiIFtsYWJlbF09XCJ0YWIubGFiZWwgfCBycHhUcmFuc2xhdGVcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0VGFiQ29udGVudD5cbiAgICAgICAgICAgIDx0YWJsZSBbY2xhc3NdPVwidGFiLmlkXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInY2FzZSB2aWV3ZXIgdGFibGUnIHwgcnB4VHJhbnNsYXRlXCI+XG4gICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGQgb2YgdGFiIHwgY2NkVGFiRmllbGRzIHwgY2NkUmVhZEZpZWxkc0ZpbHRlcjpmYWxzZSA6dW5kZWZpbmVkIDp0cnVlIDogZm9ybUdyb3VwLmNvbnRyb2xzWydkYXRhJ11cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNjZExhYmVsU3Vic3RpdHV0b3IgW2Nhc2VGaWVsZF09XCJmaWVsZFwiIFtjb250ZXh0RmllbGRzXT1cImNhc2VGaWVsZHNcIiBbaGlkZGVuXT1cImZpZWxkLmhpZGRlblwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiIShmaWVsZCB8IGNjZElzQ29tcG91bmQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBpZD1cImNhc2Utdmlld2VyLWZpZWxkLWxhYmVsXCIgKm5nSWY9XCIhaXNGaWVsZFRvSGF2ZU5vTGFiZWwoZmllbGQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FzZS12aWV3ZXItbGFiZWwgdGV4dC0xNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2ZpZWxkLmxhYmVsIHwgcnB4VHJhbnNsYXRlfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZCBbaWRdPVwiJ2Nhc2Utdmlld2VyLWZpZWxkLXJlYWQtLScgKyBmaWVsZC5pZFwiIHNjb3BlPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtMTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNjZC1maWVsZC1yZWFkIFt0b3BMZXZlbEZvcm1Hcm91cF09XCJmb3JtR3JvdXAuY29udHJvbHNbJ2RhdGEnXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2FzZUZpZWxkXT1cImZpZWxkXCIgW2Nhc2VSZWZlcmVuY2VdPVwiY2FzZURldGFpbHMuY2FzZV9pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWFya2Rvd25Vc2VIcmVmQXNSb3V0ZXJMaW5rXT1cIm1hcmtkb3duVXNlSHJlZkFzUm91dGVyTGlua1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NjZC1maWVsZC1yZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdTd2l0Y2hDYXNlPVwiZmFsc2VcIiBjbGFzcz1cImNvbXBvdW5kLWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRoIFtpZF09XCInY2FzZS12aWV3ZXItZmllbGQtcmVhZC0tJyArIGZpZWxkLmlkXCIgc2NvcGU9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC0xNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2NkLWZpZWxkLXJlYWQgW3RvcExldmVsRm9ybUdyb3VwXT1cImZvcm1Hcm91cC5jb250cm9sc1snZGF0YSddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjYXNlRmllbGRdPVwiZmllbGRcIiBbY2FzZVJlZmVyZW5jZV09XCJjYXNlRGV0YWlscy5jYXNlX2lkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXJrZG93blVzZUhyZWZBc1JvdXRlckxpbmtdPVwibWFya2Rvd25Vc2VIcmVmQXNSb3V0ZXJMaW5rXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2NkLWZpZWxkLXJlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9tYXQtdGFiPlxuICAgICAgICA8bWF0LXRhYiAqbmdGb3I9XCJsZXQgdGFiIG9mIGFwcGVuZGVkVGFic1wiIFtpZF09XCJ0YWIuaWRcIiBbbGFiZWxdPVwidGFiLmxhYmVsIHwgcnB4VHJhbnNsYXRlXCI+XG4gICAgICAgIDwvbWF0LXRhYj5cbiAgICAgIDwvbWF0LXRhYi1ncm91cD5cbiAgICAgIDxyb3V0ZXItb3V0bGV0ICpuZ0lmPVwiKHByZXBlbmRlZFRhYnMgJiYgcHJlcGVuZGVkVGFicy5sZW5ndGgpIHx8IChhcHBlbmRlZFRhYnMgJiYgYXBwZW5kZWRUYWJzLmxlbmd0aClcIj48L3JvdXRlci1vdXRsZXQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -59,26 +59,18 @@ export class EventStartGuard {
59
59
  task = tasksAssignedToUser[0];
60
60
  }
61
61
  // if one task assigned to user, allow user to complete event
62
- const storeClientContext = {
63
- client_context: {
64
- user_task: {
65
- task_data: task,
66
- complete_task: true
67
- }
68
- }
69
- };
70
- this.sessionStorageService.setItem(EventStartGuard.CLIENT_CONTEXT, JSON.stringify(storeClientContext));
62
+ this.sessionStorageService.setItem(EventStartGuard.TASK_TO_COMPLETE, JSON.stringify(task));
71
63
  return true;
72
64
  }
73
65
  }
74
66
  removeTaskFromSessionStorage() {
75
- this.sessionStorageService.removeItem(EventStartGuard.CLIENT_CONTEXT);
67
+ this.sessionStorageService.removeItem(EventStartGuard.TASK_TO_COMPLETE);
76
68
  }
77
69
  checkForTasks(payload, caseId, eventId, taskId) {
78
70
  if (taskId && payload?.tasks?.length > 0) {
79
71
  const task = payload.tasks.find((t) => t.id == taskId);
80
72
  if (task) {
81
- this.sessionStorageService.setItem(EventStartGuard.CLIENT_CONTEXT, JSON.stringify(task));
73
+ this.sessionStorageService.setItem(EventStartGuard.TASK_TO_COMPLETE, JSON.stringify(task));
82
74
  }
83
75
  else {
84
76
  this.removeTaskFromSessionStorage();
@@ -100,10 +92,10 @@ export class EventStartGuard {
100
92
  }
101
93
  }
102
94
  }
103
- EventStartGuard.CLIENT_CONTEXT = 'clientContext';
95
+ EventStartGuard.TASK_TO_COMPLETE = 'taskToComplete';
104
96
  EventStartGuard.ɵfac = function EventStartGuard_Factory(t) { return new (t || EventStartGuard)(i0.ɵɵinject(i1.WorkAllocationService), i0.ɵɵinject(i2.Router), i0.ɵɵinject(i3.SessionStorageService)); };
105
97
  EventStartGuard.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: EventStartGuard, factory: EventStartGuard.ɵfac });
106
98
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EventStartGuard, [{
107
99
  type: Injectable
108
100
  }], function () { return [{ type: i1.WorkAllocationService }, { type: i2.Router }, { type: i3.SessionStorageService }]; }, null); })();
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtc3RhcnQuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvZXZlbnQtc3RhcnQvZXZlbnQtZ3VhcmQvZXZlbnQtc3RhcnQuZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQXVDLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlFLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7OztBQUcxRCxNQUFNLE9BQU8sZUFBZTtJQUcxQixZQUE2QixxQkFBNEMsRUFDdEQsTUFBYyxFQUNkLHFCQUE0QztRQUZsQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQ3RELFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO0lBQy9ELENBQUM7SUFFTSxXQUFXLENBQUMsS0FBNkI7UUFDOUMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFeEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FB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LENBQUMsQ0FBQztTQUN0RTtJQUNILENBQUM7O0FBOUZzQiw4QkFBYyxHQUFHLGVBQWUsQ0FBQzs4RUFEN0MsZUFBZTtxRUFBZixlQUFlLFdBQWYsZUFBZTt1RkFBZixlQUFlO2NBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUYXNrUGF5bG9hZCB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi93b3JrLWFsbG9jYXRpb24vVGFza1BheWxvYWQnO1xuaW1wb3J0IHsgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgV29ya0FsbG9jYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY2FzZS1lZGl0b3InO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRXZlbnRTdGFydEd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENMSUVOVF9DT05URVhUID0gJ2NsaWVudENvbnRleHQnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgd29ya0FsbG9jYXRpb25TZXJ2aWNlOiBXb3JrQWxsb2NhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNlc3Npb25TdG9yYWdlU2VydmljZTogU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlKSB7XG4gIH1cblxuICBwdWJsaWMgY2FuQWN0aXZhdGUocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBjYXNlSWQgPSByb3V0ZS5wYXJhbXNbJ2NpZCddO1xuICAgIGNvbnN0IGV2ZW50SWQgPSByb3V0ZS5wYXJhbXNbJ2VpZCddO1xuICAgIGNvbnN0IHRhc2tJZCA9IHJvdXRlLnF1ZXJ5UGFyYW1zWyd0aWQnXTtcblxuICAgIGNvbnN0IGNhc2VJbmZvU3RyID0gdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSgnY2FzZUluZm8nKTtcbiAgICBpZiAoY2FzZUluZm9TdHIpIHtcbiAgICAgIGNvbnN0IGNhc2VJbmZvID0gSlNPTi5wYXJzZShjYXNlSW5mb1N0cik7XG4gICAgICBpZiAoY2FzZUluZm8gJiYgY2FzZUluZm8uY2lkID09PSBjYXNlSWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud29ya0FsbG9jYXRpb25TZXJ2aWNlLmdldFRhc2tzQnlDYXNlSWRBbmRFdmVudElkKGV2ZW50SWQsIGNhc2VJZCwgY2FzZUluZm8uY2FzZVR5cGUsIGNhc2VJbmZvLmp1cmlzZGljdGlvbilcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAoKHBheWxvYWQ6IFRhc2tQYXlsb2FkKSA9PiB0aGlzLmNoZWNrRm9yVGFza3MocGF5bG9hZCwgY2FzZUlkLCBldmVudElkLCB0YXNrSWQpKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2YoZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIGNoZWNrVGFza0luRXZlbnROb3RSZXF1aXJlZChwYXlsb2FkOiBUYXNrUGF5bG9hZCwgY2FzZUlkOiBzdHJpbmcsIHRhc2tJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCFwYXlsb2FkIHx8ICFwYXlsb2FkLnRhc2tzKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgdGFza051bWJlciA9IHBheWxvYWQudGFza3MubGVuZ3RoO1xuICAgIGlmICh0YXNrTnVtYmVyID09PSAwKSB7XG4gICAgICAvLyBpZiB0aGVyZSBhcmUgbm8gdGFza3MganVzdCBjYXJyeSBvblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIC8vIEdldCBudW1iZXIgb2YgdGFza3MgYXNzaWduZWQgdG8gdXNlclxuICAgIGNvbnN0IHVzZXJJbmZvU3RyID0gdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSgndXNlckRldGFpbHMnKTtcbiAgICBjb25zdCB1c2VySW5mbyA9IEpTT04ucGFyc2UodXNlckluZm9TdHIpO1xuICAgIGNvbnN0IHRhc2tzQXNzaWduZWRUb1VzZXIgPSBwYXlsb2FkLnRhc2tzLmZpbHRlcih4ID0+XG4gICAgICB4LnRhc2tfc3RhdGUgIT09ICd1bmFzc2lnbmVkJyAmJiAoeC5hc3NpZ25lZSA9PT0gdXNlckluZm8uaWQgfHwgeC5hc3NpZ25lZSA9PT0gdXNlckluZm8udWlkKVxuICAgICk7XG4gICAgaWYgKHRhc2tzQXNzaWduZWRUb1VzZXIubGVuZ3RoID09PSAwKSB7XG4gICAgICAvLyBpZiBubyB0YXNrcyBhc3NpZ25lZCB0byB1c2VyIGNhcnJ5IG9uXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHRhc2tzQXNzaWduZWRUb1VzZXIubGVuZ3RoID4gMSAmJiAhdGFza0lkKSB7XG4gICAgICAvLyBpZiBtb3JlIHRoYW4gb25lIHRhc2sgYXNzaWduZWQgdG8gdGhlIHVzZXIgdGhlbiBnaXZlIG11bHRpcGxlIHRhc2tzIGVycm9yXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYC9jYXNlcy9jYXNlLWRldGFpbHMvJHtjYXNlSWR9L211bHRpcGxlLXRhc2tzLWV4aXN0YF0pO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgdGFzazogYW55O1xuICAgICAgaWYgKHRhc2tJZCkge1xuICAgICAgICB0YXNrID0gcGF5bG9hZC50YXNrcy5maW5kKHggPT4geC5pZCA9PT0gdGFza0lkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRhc2sgPSB0YXNrc0Fzc2lnbmVkVG9Vc2VyWzBdO1xuICAgICAgfVxuICAgICAgLy8gaWYgb25lIHRhc2sgYXNzaWduZWQgdG8gdXNlciwgYWxsb3cgdXNlciB0byBjb21wbGV0ZSBldmVudFxuICAgICAgY29uc3Qgc3RvcmVDbGllbnRDb250ZXh0ID0ge1xuICAgICAgICBjbGllbnRfY29udGV4dDoge1xuICAgICAgICAgIHVzZXJfdGFzazoge1xuICAgICAgICAgICAgdGFza19kYXRhOiB0YXNrLFxuICAgICAgICAgICAgY29tcGxldGVfdGFzazogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnNldEl0ZW0oRXZlbnRTdGFydEd1YXJkLkNMSUVOVF9DT05URVhULCBKU09OLnN0cmluZ2lmeShzdG9yZUNsaWVudENvbnRleHQpKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlVGFza0Zyb21TZXNzaW9uU3RvcmFnZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5yZW1vdmVJdGVtKEV2ZW50U3RhcnRHdWFyZC5DTElFTlRfQ09OVEVYVCk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrRm9yVGFza3MocGF5bG9hZDogVGFza1BheWxvYWQsIGNhc2VJZDogc3RyaW5nLCBldmVudElkOiBzdHJpbmcsIHRhc2tJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgaWYgKHRhc2tJZCAmJiBwYXlsb2FkPy50YXNrcz8ubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgdGFzayA9IHBheWxvYWQudGFza3MuZmluZCgodCkgPT4gdC5pZCA9PSB0YXNrSWQpO1xuICAgICAgaWYgKHRhc2spIHtcbiAgICAgICAgdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2Uuc2V0SXRlbShFdmVudFN0YXJ0R3VhcmQuQ0xJRU5UX0NPTlRFWFQsIEpTT04uc3RyaW5naWZ5KHRhc2spKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVtb3ZlVGFza0Zyb21TZXNzaW9uU3RvcmFnZSgpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocGF5bG9hZC50YXNrX3JlcXVpcmVkX2Zvcl9ldmVudCkge1xuICAgICAgLy8gVGhlcmUgYXJlIHNvbWUgaXNzdWVzIGluIEV2ZW50VHJpZ2dlclJlc29sdmVyL0Nhc2VTZXJ2aWNlIGFuZC9vciBDQ0QgZm9yIHNvbWUgZXZlbnRzXG4gICAgICAvLyB3aGljaCB0cmlnZ2VycyB0aGUgQ2FuQWN0aXZhdGUgZ3VhcmQgYWdhaW4uXG4gICAgICAvLyBJZiBldmVudCBzdGFydCBpcyBpbml0aWF0ZWQgYWdhaW4sIHRoZW4gd2UgZG8gbm90IG5lZWQgdG8gcGVyZm9ybSBzdGF0ZSBtYWNoaW5lIHByb2Nlc3NpbmcgYWdhaW4uXG4gICAgICAvLyBodHRwczovL3Rvb2xzLmhtY3RzLm5ldC9qaXJhL2Jyb3dzZS9FVUktNTQ4OVxuICAgICAgaWYgKHRoaXMucm91dGVyICYmIHRoaXMucm91dGVyLnVybCAmJiB0aGlzLnJvdXRlci51cmwuaW5jbHVkZXMoJ2V2ZW50LXN0YXJ0JykpIHtcbiAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgICAgfVxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2AvY2FzZXMvY2FzZS1kZXRhaWxzLyR7Y2FzZUlkfS9ldmVudC1zdGFydGBdLCB7IHF1ZXJ5UGFyYW1zOiB7IGNhc2VJZCwgZXZlbnRJZCwgdGFza0lkIH0gfSk7XG4gICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb2YodGhpcy5jaGVja1Rhc2tJbkV2ZW50Tm90UmVxdWlyZWQocGF5bG9hZCwgY2FzZUlkLCB0YXNrSWQpKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtc3RhcnQuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvZXZlbnQtc3RhcnQvZXZlbnQtZ3VhcmQvZXZlbnQtc3RhcnQuZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQXVDLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlFLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7OztBQUcxRCxNQUFNLE9BQU8sZUFBZTtJQUcxQixZQUE2QixxQkFBNEMsRUFDdEQsTUFBYyxFQUNkLHFCQUE0QztRQUZsQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQ3RELFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO0lBQy9ELENBQUM7SUFFTSxXQUFXLENBQUMsS0FBNkI7UUFDOUMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFeEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FB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c291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgQ2FuQWN0aXZhdGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVGFza1BheWxvYWQgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vd29yay1hbGxvY2F0aW9uL1Rhc2tQYXlsb2FkJztcbmltcG9ydCB7IFNlc3Npb25TdG9yYWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IFdvcmtBbGxvY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2Nhc2UtZWRpdG9yJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEV2ZW50U3RhcnRHdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBUQVNLX1RPX0NPTVBMRVRFID0gJ3Rhc2tUb0NvbXBsZXRlJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHdvcmtBbGxvY2F0aW9uU2VydmljZTogV29ya0FsbG9jYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uU3RvcmFnZVNlcnZpY2U6IFNlc3Npb25TdG9yYWdlU2VydmljZSkge1xuICB9XG5cbiAgcHVibGljIGNhbkFjdGl2YXRlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgY29uc3QgY2FzZUlkID0gcm91dGUucGFyYW1zWydjaWQnXTtcbiAgICBjb25zdCBldmVudElkID0gcm91dGUucGFyYW1zWydlaWQnXTtcbiAgICBjb25zdCB0YXNrSWQgPSByb3V0ZS5xdWVyeVBhcmFtc1sndGlkJ107XG5cbiAgICBjb25zdCBjYXNlSW5mb1N0ciA9IHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ2Nhc2VJbmZvJyk7XG4gICAgaWYgKGNhc2VJbmZvU3RyKSB7XG4gICAgICBjb25zdCBjYXNlSW5mbyA9IEpTT04ucGFyc2UoY2FzZUluZm9TdHIpO1xuICAgICAgaWYgKGNhc2VJbmZvICYmIGNhc2VJbmZvLmNpZCA9PT0gY2FzZUlkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndvcmtBbGxvY2F0aW9uU2VydmljZS5nZXRUYXNrc0J5Q2FzZUlkQW5kRXZlbnRJZChldmVudElkLCBjYXNlSWQsIGNhc2VJbmZvLmNhc2VUeXBlLCBjYXNlSW5mby5qdXJpc2RpY3Rpb24pXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKChwYXlsb2FkOiBUYXNrUGF5bG9hZCkgPT4gdGhpcy5jaGVja0ZvclRhc2tzKHBheWxvYWQsIGNhc2VJZCwgZXZlbnRJZCwgdGFza0lkKSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGVja1Rhc2tJbkV2ZW50Tm90UmVxdWlyZWQocGF5bG9hZDogVGFza1BheWxvYWQsIGNhc2VJZDogc3RyaW5nLCB0YXNrSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghcGF5bG9hZCB8fCAhcGF5bG9hZC50YXNrcykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IHRhc2tOdW1iZXIgPSBwYXlsb2FkLnRhc2tzLmxlbmd0aDtcbiAgICBpZiAodGFza051bWJlciA9PT0gMCkge1xuICAgICAgLy8gaWYgdGhlcmUgYXJlIG5vIHRhc2tzIGp1c3QgY2Fycnkgb25cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICAvLyBHZXQgbnVtYmVyIG9mIHRhc2tzIGFzc2lnbmVkIHRvIHVzZXJcbiAgICBjb25zdCB1c2VySW5mb1N0ciA9IHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ3VzZXJEZXRhaWxzJyk7XG4gICAgY29uc3QgdXNlckluZm8gPSBKU09OLnBhcnNlKHVzZXJJbmZvU3RyKTtcbiAgICBjb25zdCB0YXNrc0Fzc2lnbmVkVG9Vc2VyID0gcGF5bG9hZC50YXNrcy5maWx0ZXIoeCA9PlxuICAgICAgeC50YXNrX3N0YXRlICE9PSAndW5hc3NpZ25lZCcgJiYgKHguYXNzaWduZWUgPT09IHVzZXJJbmZvLmlkIHx8IHguYXNzaWduZWUgPT09IHVzZXJJbmZvLnVpZClcbiAgICApO1xuICAgIGlmICh0YXNrc0Fzc2lnbmVkVG9Vc2VyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gaWYgbm8gdGFza3MgYXNzaWduZWQgdG8gdXNlciBjYXJyeSBvblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmICh0YXNrc0Fzc2lnbmVkVG9Vc2VyLmxlbmd0aCA+IDEgJiYgIXRhc2tJZCkge1xuICAgICAgLy8gaWYgbW9yZSB0aGFuIG9uZSB0YXNrIGFzc2lnbmVkIHRvIHRoZSB1c2VyIHRoZW4gZ2l2ZSBtdWx0aXBsZSB0YXNrcyBlcnJvclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2AvY2FzZXMvY2FzZS1kZXRhaWxzLyR7Y2FzZUlkfS9tdWx0aXBsZS10YXNrcy1leGlzdGBdKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHRhc2s6IGFueTtcbiAgICAgIGlmICh0YXNrSWQpIHtcbiAgICAgICAgdGFzayA9IHBheWxvYWQudGFza3MuZmluZCh4ID0+IHguaWQgPT09IHRhc2tJZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YXNrID0gdGFza3NBc3NpZ25lZFRvVXNlclswXTtcbiAgICAgIH1cbiAgICAgIC8vIGlmIG9uZSB0YXNrIGFzc2lnbmVkIHRvIHVzZXIsIGFsbG93IHVzZXIgdG8gY29tcGxldGUgZXZlbnRcbiAgICAgIHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnNldEl0ZW0oRXZlbnRTdGFydEd1YXJkLlRBU0tfVE9fQ09NUExFVEUsIEpTT04uc3RyaW5naWZ5KHRhc2spKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlVGFza0Zyb21TZXNzaW9uU3RvcmFnZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5yZW1vdmVJdGVtKEV2ZW50U3RhcnRHdWFyZC5UQVNLX1RPX0NPTVBMRVRFKTtcbiAgfVxuICBwcml2YXRlIGNoZWNrRm9yVGFza3MocGF5bG9hZDogVGFza1BheWxvYWQsIGNhc2VJZDogc3RyaW5nLCBldmVudElkOiBzdHJpbmcsIHRhc2tJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgaWYgKHRhc2tJZCAmJiBwYXlsb2FkPy50YXNrcz8ubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgdGFzayA9IHBheWxvYWQudGFza3MuZmluZCgodCkgPT4gdC5pZCA9PSB0YXNrSWQpO1xuICAgICAgaWYgKHRhc2spIHtcbiAgICAgICAgdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2Uuc2V0SXRlbShFdmVudFN0YXJ0R3VhcmQuVEFTS19UT19DT01QTEVURSwgSlNPTi5zdHJpbmdpZnkodGFzaykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW1vdmVUYXNrRnJvbVNlc3Npb25TdG9yYWdlKCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChwYXlsb2FkLnRhc2tfcmVxdWlyZWRfZm9yX2V2ZW50KSB7XG4gICAgICAvLyBUaGVyZSBhcmUgc29tZSBpc3N1ZXMgaW4gRXZlbnRUcmlnZ2VyUmVzb2x2ZXIvQ2FzZVNlcnZpY2UgYW5kL29yIENDRCBmb3Igc29tZSBldmVudHNcbiAgICAgIC8vIHdoaWNoIHRyaWdnZXJzIHRoZSBDYW5BY3RpdmF0ZSBndWFyZCBhZ2Fpbi5cbiAgICAgIC8vIElmIGV2ZW50IHN0YXJ0IGlzIGluaXRpYXRlZCBhZ2FpbiwgdGhlbiB3ZSBkbyBub3QgbmVlZCB0byBwZXJmb3JtIHN0YXRlIG1hY2hpbmUgcHJvY2Vzc2luZyBhZ2Fpbi5cbiAgICAgIC8vIGh0dHBzOi8vdG9vbHMuaG1jdHMubmV0L2ppcmEvYnJvd3NlL0VVSS01NDg5XG4gICAgICBpZiAodGhpcy5yb3V0ZXIgJiYgdGhpcy5yb3V0ZXIudXJsICYmIHRoaXMucm91dGVyLnVybC5pbmNsdWRlcygnZXZlbnQtc3RhcnQnKSkge1xuICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgICB9XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYC9jYXNlcy9jYXNlLWRldGFpbHMvJHtjYXNlSWR9L2V2ZW50LXN0YXJ0YF0sIHsgcXVlcnlQYXJhbXM6IHsgY2FzZUlkLCBldmVudElkLCB0YXNrSWQgfSB9KTtcbiAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvZih0aGlzLmNoZWNrVGFza0luRXZlbnROb3RSZXF1aXJlZChwYXlsb2FkLCBjYXNlSWQsIHRhc2tJZCkpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -117,17 +117,9 @@ export class EventStartStateMachineService {
117
117
  task = context.tasks[0];
118
118
  }
119
119
  const taskStr = JSON.stringify(task);
120
- console.log('entryActionForStateOneTaskAssignedToUser: setting client context task_data to ' + taskStr);
120
+ console.log('entryActionForStateOneTaskAssignedToUser: setting taskToComplete to ' + taskStr);
121
121
  // Store task to session
122
- const clientContext = {
123
- client_context: {
124
- user_task: {
125
- task_data: task,
126
- complete_task: true
127
- }
128
- }
129
- };
130
- context.sessionStorageService.setItem('clientContext', JSON.stringify(clientContext));
122
+ context.sessionStorageService.setItem('taskToComplete', taskStr);
131
123
  // Allow user to perform the event
132
124
  context.router.navigate([`/cases/case-details/${context.caseId}/trigger/${context.eventId}`], { relativeTo: context.route });
133
125
  }
@@ -175,4 +167,4 @@ EventStartStateMachineService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ t
175
167
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EventStartStateMachineService, [{
176
168
  type: Injectable
177
169
  }], null, null); })();
178
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtc3RhcnQtc3RhdGUtbWFjaGluZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL2V2ZW50LXN0YXJ0L3NlcnZpY2VzL2V2ZW50LXN0YXJ0LXN0YXRlLW1hY2hpbmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBUyxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDakQsT0FBTyxFQUFpQyxnQkFBZ0IsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFFNUUsTUFBTSxtQkFBbUIsR0FBRyxxQkFBcUIsQ0FBQztBQUdsRCxNQUFNLE9BQU8sNkJBQTZCO0lBV2pDLHNCQUFzQixDQUFDLE9BQXNDO1FBQ2xFLE9BQU8sSUFBSSxZQUFZLENBQUMsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVNLFlBQVksQ0FBQyxZQUEwQjtRQUM1QyxnQkFBZ0I7UUFDaEIsSUFBSSxDQUFDLDBCQUEwQixHQUFHLFlBQVksQ0FBQyxXQUFXLENBQ3hELGdCQUFnQixDQUFDLHdCQUF3QixFQUN6QyxLQUFLLEVBQ0wsSUFBSSxDQUFDLHdDQUF3QyxDQUM5QyxDQUFDO1FBRUYsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FDekMsZ0JBQWdCLENBQUMsT0FBTyxFQUN4QixLQUFLLEVBQ0wsSUFBSSxDQUFDLHlCQUF5QixDQUMvQixDQUFDO1FBQ0YsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFlBQVksQ0FBQyxXQUFXLENBQ2pELGdCQUFnQixDQUFDLGlCQUFpQixFQUNsQyxLQUFLLEVBQ0wsSUFBSSxDQUFDLGlDQUFpQyxDQUN2QyxDQUFDO1FB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LEtBQUssRUFDdEIsSUFBSSxDQUFDLFVBQVUsQ0FDaEIsQ0FBQztJQUNKLENBQUM7SUFFTSxpREFBaUQ7UUFDdEQsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLGFBQWEsQ0FDakQsZ0JBQWdCLENBQUMsS0FBSyxFQUN0QixJQUFJLENBQUMsVUFBVSxDQUNoQixDQUFDO0lBQ0osQ0FBQzs7MEdBL1FVLDZCQUE2QjttRkFBN0IsNkJBQTZCLFdBQTdCLDZCQUE2Qjt1RkFBN0IsNkJBQTZCO2NBRHpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3RhdGUsIFN0YXRlTWFjaGluZSB9IGZyb20gJ0BlZGl1bS9mc20nO1xuaW1wb3J0IHsgRXZlbnRTdGFydFN0YXRlTWFjaGluZUNvbnRleHQsIEV2ZW50U3RhcnRTdGF0ZXMgfSBmcm9tICcuLi9tb2RlbHMnO1xuXG5jb25zdCBFVkVOVF9TVEFURV9NQUNISU5FID0gJ0VWRU5UIFNUQVRFIE1BQ0hJTkUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRXZlbnRTdGFydFN0YXRlTWFjaGluZVNlcnZpY2Uge1xuICBwdWJsaWMgc3RhdGVDaGVja0Zvck1hdGNoaW5nVGFza3M6IFN0YXRlO1xuICBwdWJsaWMgc3RhdGVOb1Rhc2s6IFN0YXRlO1xuICBwdWJsaWMgc3RhdGVPbmVUYXNrOiBTdGF0ZTtcbiAgcHVibGljIHN0YXRlT25lT3JNb3JlVGFza3M6IFN0YXRlO1xuICBwdWJsaWMgc3RhdGVUYXNrQXNzaWduZWRUb1VzZXI6IFN0YXRlO1xuICBwdWJsaWMgc3RhdGVPbmVUYXNrQXNzaWduZWRUb1VzZXI6IFN0YXRlO1xuICBwdWJsaWMgc3RhdGVNdWx0aXBsZVRhc2tzQXNzaWduZWRUb1VzZXI6IFN0YXRlO1xuICBwdWJsaWMgc3RhdGVUYXNrVW5hc3NpZ25lZDogU3RhdGU7XG4gIHB1YmxpYyBzdGF0ZUZpbmFsOiBTdGF0ZTtcblxuICBwdWJsaWMgaW5pdGlhbGlzZVN0YXRlTWFjaGluZShjb250ZXh0OiBFdmVudFN0YXJ0U3RhdGVNYWNoaW5lQ29udGV4dCk6IFN0YXRlTWFjaGluZSB7XG4gICAgcmV0dXJuIG5ldyBTdGF0ZU1hY2hpbmUoRVZFTlRfU1RBVEVfTUFDSElORSwgY29udGV4dCk7XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlU3RhdGVzKHN0YXRlTWFjaGluZTogU3RhdGVNYWNoaW5lKTogdm9pZCB7XG4gICAgLy8gSW5pdGlhbCBzdGF0ZVxuICAgIHRoaXMuc3RhdGVDaGVja0Zvck1hdGNoaW5nVGFza3MgPSBzdGF0ZU1hY2hpbmUuY3JlYXRlU3RhdGUoXG4gICAgICBFdmVudFN0YXJ0U3RhdGVzLkNIRUNLX0ZPUl9NQVRDSElOR19UQVNLUyxcbiAgICAgIGZhbHNlLFxuICAgICAgdGhpcy5lbnRyeUFjdGlvbkZvclN0YXRlQ2hlY2tGb3JNYXRjaGluZ1Rhc2tzXG4gICAgKTtcblxuICAgIC8vIFN0YXRlcyBiYXNlZCBvbiBudW1iZXIgb2YgdGFza3MgYXZhaWxhYmxlXG4gICAgdGhpcy5zdGF0ZU5vVGFzayA9IHN0YXRlTWFjaGluZS5jcmVhdGVTdGF0ZShcbiAgICAgIEV2ZW50U3RhcnRTdGF0ZXMuTk9fVEFTSyxcbiAgICAgIGZhbHNlLFxuICAgICAgdGhpcy5lbnRyeUFjdGlvbkZvclN0YXRlTm9UYXNrXG4gICAgKTtcbiAgICB0aGlzLnN0YXRlT25lT3JNb3JlVGFza3MgPSBzdGF0ZU1hY2hpbmUuY3JlYXRlU3RhdGUoXG4gICAgICBFdmVudFN0YXJ0U3RhdGVzLk9ORV9PUl9NT1JFX1RBU0tTLFxuICAgICAgZmFsc2UsXG4gICAgICB0aGlzLmVudHJ5QWN0aW9uRm9yU3RhdGVPbmVPck1vcmVUYXNrc1xuICAgICk7XG5cbiAgICAvLyBTdGF0ZXMgYmFzZWQgb24gbnVtYmVyIG9mIHRhc2tzIGFzc2lnbmVkIHRvIHVzZXJcbiAgICB0aGlzLnN0YXRlVGFza1VuYXNzaWduZWQgPSBzdGF0ZU1hY2hpbmUuY3JlYXRlU3RhdGUoXG4gICAgICBFdmVudFN0YXJ0U3RhdGVzLlRBU0tfVU5BU1NJR05FRCxcbiAgICAgIGZhbHNlLFxuICAgICAgdGhpcy5lbnRyeUFjdGlvbkZvclN0YXRlVGFza1VuQXNzaWduZWRcbiAgICApO1xuICAgIHRoaXMuc3RhdGVUYXNrQXNzaWduZWRUb1VzZXIgPSBzdGF0ZU1hY2hpbmUuY3JlYXRlU3RhdGUoXG4gICAgICBFdmVudFN0YXJ0U3RhdGVzLlRBU0tfQVNTSUdORURfVE9fVVNFUixcbiAgICAgIGZhbHNlLFxuICAgICAgdGhpcy5lbnRyeUFjdGlvbkZvclN0YXRlVGFza0Fzc2lnbmVkVG9Vc2VyXG4gICAgKTtcbiAgICB0aGlzLnN0YXRlT25lVGFza0Fzc2lnbmVkVG9Vc2VyID0gc3RhdGVNYWNoaW5lLmNyZWF0ZVN0YXRlKFxuICAgICAgRXZlbnRTdGFydFN0YXRlcy5PTkVfVEFTS19BU1NJR05FRF9UT19VU0VSLFxuICAgICAgZmFsc2UsXG4gICAgICB0aGlzLmVudHJ5QWN0aW9uRm9yU3RhdGVPbmVUYXNrQXNzaWduZWRUb1VzZXJcbiAgICApO1xuICAgIHRoaXMuc3RhdGVNdWx0aXBsZVRhc2tzQXNzaWduZWRUb1VzZXIgPSBzdGF0ZU1hY2hpbmUuY3JlYXRlU3RhdGUoXG4gICAgICBFdmVudFN0YXJ0U3RhdGVzLk1VTFRJUExFX1RBU0tTX0FTU0lHTkVEX1RPX1VTRVIsXG4gICAgICBmYWxzZSxcbiAgICAgIHRoaXMuZW50cnlBY3Rpb25Gb3JTdGF0ZU11bHRpcGxlVGFza3NBc3NpZ25lZFRvVXNlclxuICAgICk7XG5cbiAgICAvLyBDcmVhdGUgZmluYWwgc3RhdGUsIHRoZSBzZWNvbmQgcGFyYW0gaXNDb21wbGV0ZSBpcyBzZXQgdG8gdHJ1ZSB0byBtYWtlIHN1cmUgc3RhdGUgbWFjaGluZSBmaW5pc2hlZCBydW5uaW5nXG4gICAgdGhpcy5zdGF0ZUZpbmFsID0gc3RhdGVNYWNoaW5lLmNyZWF0ZVN0YXRlKFxuICAgICAgRXZlbnRTdGFydFN0YXRlcy5GSU5BTCxcbiAgICAgIHRydWUsXG4gICAgICB0aGlzLmZpbmFsQWN0aW9uXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUcmFuc2l0aW9ucygpOiB2b2lkIHtcbiAgICAvLyBJbml0aWFsIHRyYW5zaXRpb25cbiAgICB0aGlzLmFkZFRyYW5zaXRpb25zRm9yU3RhdGVDaGVja0Zvck1hdGNoaW5nVGFza3MoKTtcblxuICAgIC8vIFRyYW5zaXRpb25zIGJhc2VkIG9uIG51bWJlciBvZiB0YXNrcyBhdmFpbGFibGVcbiAgICB0aGlzLmFkZFRyYW5zaXRpb25zRm9yU3RhdGVOb1Rhc2soKTtcbiAgICB0aGlzLmFkZFRyYW5zaXRpb25zRm9yU3RhdGVPbmVPck1vcmVUYXNrcygpO1xuXG4gICAgLy8gVHJhbnNpdGlvbnMgYmFzZWQgb24gbnVtYmVyIG9mIHRhc2tzIGFzc2lnbmVkIHRvIHVzZXJcbiAgICB0aGlzLmFkZFRyYW5zaXRpb25zRm9yU3RhdGVUYXNrVW5hc3NpZ25lZCgpO1xuICAgIHRoaXMuYWRkVHJhbnNpdGlvbnNGb3JTdGF0ZVRhc2tBc3NpZ25lZFRvVXNlcigpO1xuICAgIHRoaXMuYWRkVHJhbnNpdGlvbnNGb3JTdGF0ZU9uZVRhc2tBc3NpZ25lZFRvVXNlcigpO1xuICAgIHRoaXMuYWRkVHJhbnNpdGlvbnNGb3JTdGF0ZU11bHRpcGxlVGFza3NBc3NpZ25lZFRvVXNlcigpO1xuICB9XG5cbiAgcHVibGljIHN0YXJ0U3RhdGVNYWNoaW5lKHN0YXRlTWFjaGluZTogU3RhdGVNYWNoaW5lKTogdm9pZCB7XG4gICAgc3RhdGVNYWNoaW5lLnN0YXJ0KHRoaXMuc3RhdGVDaGVja0Zvck1hdGNoaW5nVGFza3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWwgZW50cnkgYWN0aW9uIGZvciBzdGF0ZSBjaGVjayBmb3IgbWF0Y2hpbmcgdGFza3MsIGRlY2lkZWQgYmFzZWQgb24gdGhlIG51bWJlciBvZiB0YXNrc1xuICAgKi9cbiAgcHVibGljIGVudHJ5QWN0aW9uRm9yU3RhdGVDaGVja0Zvck1hdGNoaW5nVGFza3Moc3RhdGU6IFN0YXRlLCBjb250ZXh0OiBFdmVudFN0YXJ0U3RhdGVNYWNoaW5lQ29udGV4dCk6IHZvaWQge1xuICAgIGNvbnN0IHRhc2tDb3VudCA9IGNvbnRleHQgJiYgY29udGV4dC50YXNrcyA/IGNvbnRleHQudGFza3MubGVuZ3RoIDogMDtcblxuICAgIGlmICh0YXNrQ291bnQgPT09IDApIHtcbiAgICAgIC8vIFRyaWdnZXIgc3RhdGUgbm8gdGFza1xuICAgICAgc3RhdGUudHJpZ2dlcihFdmVudFN0YXJ0U3RhdGVzLk5PX1RBU0spO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUcmlnZ2VyIHN0YXRlIG9uZSBvciBtb3JlIHRhc2tzXG4gICAgICBzdGF0ZS50cmlnZ2VyKEV2ZW50U3RhcnRTdGF0ZXMuT05FX09SX01PUkVfVEFTS1MpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBlbnRyeUFjdGlvbkZvclN0YXRlTm9UYXNrKHN0YXRlOiBTdGF0ZSwgY29udGV4dDogRXZlbnRTdGFydFN0YXRlTWFjaGluZUNvbnRleHQpOiB2b2lkIHtcbiAgICAvLyBUcmlnZ2VyIGZpbmFsIHN0YXRlIHRvIGNvbXBsZXRlIHByb2Nlc3Npbmcgb2Ygc3RhdGUgbWFjaGluZVxuICAgIHN0YXRlLnRyaWdnZXIoRXZlbnRTdGFydFN0YXRlcy5GSU5BTCk7XG4gICAgLy8gTmF2aWdhdGUgdG8gbm8gdGFza3MgYXZhaWxhYmxlIGVycm9yIHBhZ2VcbiAgICBjb250ZXh0LnJvdXRlci5uYXZpZ2F0ZShbYC9jYXNlcy9jYXNlLWRldGFpbHMvJHtjb250ZXh0LmNhc2VJZH0vbm8tdGFza3MtYXZhaWxhYmxlYF0sIHsgcmVsYXRpdmVUbzogY29udGV4dC5yb3V0ZSB9KTtcbiAgfVxuXG4gIHB1YmxpYyBlbnRyeUFjdGlvbkZvclN0YXRlT25lT3JNb3JlVGFza3Moc3RhdGU6IFN0YXRlLCBjb250ZXh0OiBFdmVudFN0YXJ0U3RhdGVNYWNoaW5lQ29udGV4dCk6IHZvaWQge1xuICAgIHN0YXRlLnRyaWdnZXIoRXZlbnRTdGFydFN0YXRlcy5UQVNLX0FTU0lHTkVEX1RPX1VTRVIpO1xuICB9XG5cbiAgcHVibGljIGVudHJ5QWN0aW9uRm9yU3RhdGVNdWx0aXBsZVRhc2tzKHN0YXRlOiBTdGF0ZSwgY29udGV4dDogRXZlbnRTdGFydFN0YXRlTWFjaGluZUNvbnRleHQpOiB2b2lkIHtcbiAgICBzdGF0ZS50cmlnZ2VyKEV2ZW50U3RhcnRTdGF0ZXMuTVVMVElQTEVfVEFTS1NfQVNTSUdORURfVE9fVVNFUik7XG4gIH1cblxuICBwdWJsaWMgZW50cnlBY3Rpb25Gb3JTdGF0ZVRhc2tBc3NpZ25lZFRvVXNlcihzdGF0ZTogU3RhdGUsIGNvbnRleHQ6IEV2ZW50U3RhcnRTdGF0ZU1hY2hpbmVDb250ZXh0KTogdm9pZCB7XG4gICAgLy8gR2V0IG51bWJlciBvZiB0YXNrcyBhc3NpZ25lZCB0byB1c2VyXG4gICAgY29uc3QgdXNlckluZm9TdHIgPSBjb250ZXh0LnNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRJdGVtKCd1c2VyRGV0YWlscycpO1xuICAgIGNvbnN0IHVzZXJJbmZvID0gSlNPTi5wYXJzZSh1c2VySW5mb1N0cik7XG4gICAgY29uc3QgdGFza3NBc3NpZ25lZFRvVXNlciA9IGNvbnRleHQudGFza3MuZmlsdGVyKHggPT5cbiAgICAgICAgeC50YXNrX3N0YXRlICE9PSAndW5hc3NpZ25lZCcgJiYgeC5hc3NpZ25lZSA9PT0gdXNlckluZm8uaWQgfHwgeC5hc3NpZ25lZSA9PT0gdXNlckluZm8udWlkXG4gICAgICApO1xuXG4gICAgLy8gQ2hlY2sgaWYgdXNlciBpbml0aWF0ZWQgdGhlIGV2ZW50IGZyb20gdGFzayB0YWJcbiAgICBjb25zdCBpc0V2ZW50SW5pdGlhdGVkRnJvbVRhc2tUYWIgPSBjb250ZXh0LnRhc2tJZCAhPT0gdW5kZWZpbmVkICYmIHRhc2tzQXNzaWduZWRUb1VzZXIuZmluZEluZGV4KHggPT4geC5pZCA9PT0gY29udGV4dC50YXNrSWQpID4gLTE7XG5cbiAgICBpZiAoaXNFdmVudEluaXRpYXRlZEZyb21UYXNrVGFiKSB7XG4gICAgICAvLyBVc2VyIGluaXRpYXRlZCBldmVudCBmcm9tIHRhc2sgdGFiXG4gICAgICBzdGF0ZS50cmlnZ2VyKEV2ZW50U3RhcnRTdGF0ZXMuT05FX1RBU0tfQVNTSUdORURfVE9fVVNFUik7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFVzZXIgaW5pdGlhdGVkIGV2ZW50IGZyb20gZHJvcGRvd25cbiAgICAgIHN3aXRjaCAodGFza3NBc3NpZ25lZFRvVXNlci5sZW5ndGgpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgIC8vIE5vIHRhc2tzIGFzc2lnbmVkIHRvIHVzZXIsIHRyaWdnZXIgc3RhdGUgdGFzayB1bmFzc2lnbmVkXG4gICAgICAgICAgc3RhdGUudHJpZ2dlcihFdmVudFN0YXJ0U3RhdGVzLlRBU0tfVU5BU1NJR05FRCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAvLyBPbmUgdGFzayBhc3NpZ25lZCB0byB1c2VyXG4gICAgICAgICAgc3RhdGUudHJpZ2dlcihFdmVudFN0YXJ0U3RhdGVzLk9ORV9UQVNLX0FTU0lHTkVEX1RPX1VTRVIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIC8vIE11bHRpcGxlIHRhc2tzIGFzc2lnbmVkIHRvIHVzZXIsIHRyaWdnZXIgc3RhdGUgbXVsdGlwbGUgdGFza3MgYXNzaWduZWQgdG8gdXNlclxuICAgICAgICAgIHN0YXRlLnRyaWdnZXIoRXZlbnRTdGFydFN0YXRlcy5NVUxUSVBMRV9UQVNLU19BU1NJR05FRF9UT19VU0VSKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZW50cnlBY3Rpb25Gb3JTdGF0ZVRhc2tVbkFzc2lnbmVkKHN0YXRlOiBTdGF0ZSwgY29udGV4dDogRXZlbnRTdGFydFN0YXRlTWFjaGluZUNvbnRleHQpOiB2b2lkIHtcbiAgICBsZXQgbmF2aWdhdGlvblVSTCA9ICcnO1xuICAgIGxldCB0aGVRdWVyeVBhcmFtczogUGFyYW1zID0ge307XG5cbiAgICBpZiAoY29udGV4dC50YXNrc1swXS5hc3NpZ25lZSkge1xuICAgICAgLy8gVGFzayBpcyBhc3NpZ25lZCB0byBzb21lIG90aGVyIHVzZXIsIG5hdmlnYXRlIHRvIHRhc2sgYXNzaWduZWQgZXJyb3IgcGFnZVxuICAgICAgbmF2aWdhdGlvblVSTCA9IGAvY2FzZXMvY2FzZS1kZXRhaWxzLyR7Y29udGV4dC5jYXNlSWR9L3Rhc2stYXNzaWduZWRgO1xuICAgICAgdGhlUXVlcnlQYXJhbXMgPSBjb250ZXh0LnRhc2tzWzBdO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUYXNrIGlzIHVuYXNzaWduZWQsIG5hdmlnYXRlIHRvIHRhc2sgdW5hc3NpZ25lZCBlcnJvciBwYWdlXG4gICAgICBuYXZpZ2F0aW9uVVJMID0gYC9jYXNlcy9jYXNlLWRldGFpbHMvJHtjb250ZXh0LmNhc2VJZH0vdGFzay11bmFzc2lnbmVkYDtcbiAgICB9XG5cbiAgICAvLyBUcmlnZ2VyIGZpbmFsIHN0YXRlIHRvIGNvbXBsZXRlIHByb2Nlc3Npbmcgb2Ygc3RhdGUgbWFjaGluZVxuICAgIHN0YXRlLnRyaWdnZXIoRXZlbnRTdGFydFN0YXRlcy5GSU5BTCk7XG4gICAgLy8gTmF2aWdhdGVcbiAgICBjb250ZXh0LnJvdXRlci5uYXZpZ2F0ZShbYCR7bmF2aWdhdGlvblVSTH1gXSwgeyBxdWVyeVBhcmFtczogdGhlUXVlcnlQYXJhbXMsIHJlbGF0aXZlVG86IGNvbnRleHQucm91dGUgfSk7XG4gIH1cblxuICBwdWJsaWMgZW50cnlBY3Rpb25Gb3JTdGF0ZU9uZVRhc2tBc3NpZ25lZFRvVXNlcihzdGF0ZTogU3RhdGUsIGNvbnRleHQ6IEV2ZW50U3RhcnRTdGF0ZU1hY2hpbmVDb250ZXh0KTogdm9pZCB7XG4gICAgLy8gVHJpZ2dlciBmaW5hbCBzdGF0ZSB0byBjb21wbGV0ZSBwcm9jZXNzaW5nIG9mIHN0YXRlIG1hY2hpbmVcbiAgICBzdGF0ZS50cmlnZ2VyKEV2ZW50U3RhcnRTdGF0ZXMuRklOQUwpO1xuXG4gICAgLy8gR2V0IHRhc2sgYXNzaWduZWQgdG8gdXNlclxuICAgIGxldCB0YXNrID0gY29udGV4dC50YXNrcy5maW5kKHggPT4geC5pZCA9PT0gY29udGV4dC50YXNrSWQpO1xuICAgIGlmICghdGFzaykge1xuICAgICAgdGFzayA9IGNvbnRleHQudGFza3NbMF07XG4gICAgfVxuXG4gICAgY29uc3QgdGFza1N0cj0gSlNPTi5zdHJpbmdpZnkodGFzayk7XG4gICAgY29uc29sZS5sb2coJ2VudHJ5QWN0aW9uRm9yU3RhdGVPbmVUYXNrQXNzaWduZWRUb1VzZXI6IHNldHRpbmcgY2xpZW50IGNvbnRleHQgdGFza19kYXRhIHRvICcgKyB0YXNrU3RyKTtcbiAgICAvLyBTdG9yZSB0YXNrIHRvIHNlc3Npb25cbiAgICBjb25zdCBjbGllbnRDb250ZXh0ID0ge1xuICAgICAgY2xpZW50X2NvbnRleHQ6IHtcbiAgICAgICAgdXNlcl90YXNrOiB7XG4gICAgICAgICAgdGFza19kYXRhOiB0YXNrLFxuICAgICAgICAgIGNvbXBsZXRlX3Rhc2s6IHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgY29udGV4dC5zZXNzaW9uU3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSgnY2xpZW50Q29udGV4dCcsIEpTT04uc3RyaW5naWZ5KGNsaWVudENvbnRleHQpKTtcbiAgICAvLyBBbGxvdyB1c2VyIHRvIHBlcmZvcm0gdGhlIGV2ZW50XG4gICAgY29udGV4dC5yb3V0ZXIubmF2aWdhdGUoW2AvY2FzZXMvY2FzZS1kZXRhaWxzLyR7Y29udGV4dC5jYXNlSWR9L3RyaWdnZXIvJHtjb250ZXh0LmV2ZW50SWR9YF0sXG4gICAgICB7IHJlbGF0aXZlVG86IGNvbnRleHQucm91dGUgfSk7XG4gIH1cblxuICBwdWJsaWMgZW50cnlBY3Rpb25Gb3JTdGF0ZU11bHRpcGxlVGFza3NBc3NpZ25lZFRvVXNlcihzdGF0ZTogU3RhdGUsIGNvbnRleHQ6IEV2ZW50U3RhcnRTdGF0ZU1hY2hpbmVDb250ZXh0KTogdm9pZCB7XG4gICAgLy8gVHJpZ2dlciBmaW5hbCBzdGF0ZSB0byBjb21wbGV0ZSBwcm9jZXNzaW5nIG9mIHN0YXRlIG1hY2hpbmVcbiAgICBzdGF0ZS50cmlnZ2VyKEV2ZW50U3RhcnRTdGF0ZXMuRklOQUwpO1xuICAgIC8vIE5hdmlnYXRlIHRvIG11bHRpcGxlIHRhc2tzIGV4aXN0IGVycm9yIHBhZ2VcbiAgICBjb250ZXh0LnJvdXRlci5uYXZpZ2F0ZShbYC9jYXNlcy9jYXNlLWRldGFpbHMvJHtjb250ZXh0LmNhc2VJZH0vbXVsdGlwbGUtdGFza3MtZXhpc3RgXSwgeyByZWxhdGl2ZVRvOiBjb250ZXh0LnJvdXRlIH0pO1xuICB9XG5cbiAgcHVibGljIGZpbmFsQWN0aW9uKHN0YXRlOiBTdGF0ZSk6IHZvaWQge1xuICAgIC8vIEZpbmFsIGFjdGlvbnMgY2FuIGJlIHBlcmZvcm1lZCBoZXJlLCB0aGUgc3RhdGUgbWFjaGluZSBmaW5pc2hlZCBydW5uaW5nXG4gICAgLy8gY29uc29sZS5sb2coJ0ZJTkFMJywgc3RhdGUpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUcmFuc2l0aW9uc0ZvclN0YXRlQ2hlY2tGb3JNYXRjaGluZ1Rhc2tzKCk6IHZvaWQge1xuICAgIC8vIE5vIHRhc2tzXG4gICAgdGhpcy5zdGF0ZUNoZWNrRm9yTWF0Y2hpbmdUYXNrcy5hZGRUcmFuc2l0aW9uKFxuICAgICAgRXZlbnRTdGFydFN0YXRlcy5OT19UQVNLLFxuICAgICAgdGhpcy5zdGF0ZU5vVGFza1xuICAgICk7XG4gICAgLy8gT25lIHRhc2tcbiAgICB0aGlzLnN0YXRlQ2hlY2tGb3JNYXRjaGluZ1Rhc2tzLmFkZFRyYW5zaXRpb24oXG4gICAgICBFdmVudFN0YXJ0U3RhdGVzLk9ORV9PUl9NT1JFX1RBU0tTLFxuICAgICAgdGhpcy5zdGF0ZU9uZU9yTW9yZVRhc2tzXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUcmFuc2l0aW9uc0ZvclN0YXRlTm9UYXNrKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGVOb1Rhc2suYWRkVHJhbnNpdGlvbihcbiAgICAgIEV2ZW50U3RhcnRTdGF0ZXMuRklOQUwsXG4gICAgICB0aGlzLnN0YXRlRmluYWxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFkZFRyYW5zaXRpb25zRm9yU3RhdGVPbmVPck1vcmVUYXNrcygpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlT25lT3JNb3JlVGFza3MuYWRkVHJhbnNpdGlvbihcbiAgICAgIEV2ZW50U3RhcnRTdGF0ZXMuVEFTS19BU1NJR05FRF9UT19VU0VSLFxuICAgICAgdGhpcy5zdGF0ZVRhc2tBc3NpZ25lZFRvVXNlclxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYWRkVHJhbnNpdGlvbnNGb3JTdGF0ZVRhc2tVbmFzc2lnbmVkKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGVUYXNrVW5hc3NpZ25lZC5hZGRUcmFuc2l0aW9uKFxuICAgICAgRXZlbnRTdGFydFN0YXRlcy5GSU5BTCxcbiAgICAgIHRoaXMuc3RhdGVGaW5hbFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYWRkVHJhbnNpdGlvbnNGb3JTdGF0ZVRhc2tBc3NpZ25lZFRvVXNlcigpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlVGFza0Fzc2lnbmVkVG9Vc2VyLmFkZFRyYW5zaXRpb24oXG4gICAgICBFdmVudFN0YXJ0U3RhdGVzLk9ORV9UQVNLX0FTU0lHTkVEX1RPX1VTRVIsXG4gICAgICB0aGlzLnN0YXRlT25lVGFza0Fzc2lnbmVkVG9Vc2VyXG4gICAgKTtcbiAgICB0aGlzLnN0YXRlVGFza0Fzc2lnbmVkVG9Vc2VyLmFkZFRyYW5zaXRpb24oXG4gICAgICBFdmVudFN0YXJ0U3RhdGVzLlRBU0tfVU5BU1NJR05FRCxcbiAgICAgIHRoaXMuc3RhdGVUYXNrVW5hc3NpZ25lZFxuICAgICk7XG4gICAgdGhpcy5zdGF0ZVRhc2tBc3NpZ25lZFRvVXNlci5hZGRUcmFuc2l0aW9uKFxuICAgICAgRXZlbnRTdGFydFN0YXRlcy5NVUxUSVBMRV9UQVNLU19BU1NJR05FRF9UT19VU0VSLFxuICAgICAgdGhpcy5zdGF0ZU11bHRpcGxlVGFza3NBc3NpZ25lZFRvVXNlclxuICAgICk7XG4gICAgdGhpcy5zdGF0ZVRhc2tBc3NpZ25lZFRvVXNlci5hZGRUcmFuc2l0aW9uKFxuICAgICAgRXZlbnRTdGFydFN0YXRlcy5GSU5BTCxcbiAgICAgIHRoaXMuc3RhdGVGaW5hbFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYWRkVHJhbnNpdGlvbnNGb3JTdGF0ZU9uZVRhc2tBc3NpZ25lZFRvVXNlcigpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlT25lVGFza0Fzc2lnbmVkVG9Vc2VyLmFkZFRyYW5zaXRpb24oXG4gICAgICBFdmVudFN0YXJ0U3RhdGVzLkZJTkFMLFxuICAgICAgdGhpcy5zdGF0ZUZpbmFsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUcmFuc2l0aW9uc0ZvclN0YXRlTXVsdGlwbGVUYXNrc0Fzc2lnbmVkVG9Vc2VyKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGVNdWx0aXBsZVRhc2tzQXNzaWduZWRUb1VzZXIuYWRkVHJhbnNpdGlvbihcbiAgICAgIEV2ZW50U3RhcnRTdGF0ZXMuRklOQUwsXG4gICAgICB0aGlzLnN0YXRlRmluYWxcbiAgICApO1xuICB9XG59XG4iXX0=
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtc3RhcnQtc3RhdGUtbWFjaGluZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL2V2ZW50LXN0YXJ0L3NlcnZpY2VzL2V2ZW50LXN0YXJ0LXN0YXRlLW1hY2hpbmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBUyxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDakQsT0FBTyxFQUFpQyxnQkFBZ0IsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFFNUUsTUFBTSxtQkFBbUIsR0FBRyxxQkFBcUIsQ0FBQztBQUdsRCxNQUFNLE9BQU8sNkJBQTZCO0lBV2pDLHNCQUFzQixDQUFDLE9BQXNDO1FBQ2xFLE9BQU8sSUFBSSxZQUFZLENBQUMsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVNLFlBQVksQ0FBQyxZQUEwQjtRQUM1QyxnQkFBZ0I7UUFDaEIsSUFBSSxDQUFDLDBCQUEwQixHQUFHLFlBQVksQ0FBQyxXQUFXLENBQ3hELGdCQUFnQixDQUFDLHdCQUF3QixFQUN6QyxLQUFLLEVBQ0wsSUFBSSxDQUFDLHdDQUF3QyxDQUM5QyxDQUFDO1FBRUYsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FDekMsZ0JBQWdCLENBQUMsT0FBTyxFQUN4QixLQUFLLEVBQ0wsSUFBSSxDQUFDLHlCQUF5QixDQUMvQixDQUFDO1FBQ0YsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFlBQVksQ0FBQyxXQUFXLENBQ2pELGdCQUFnQixDQUFDLGlCQUFpQixFQUNsQyxLQUFLLEVBQ0wsSUFBSSxDQUFDLGlDQUFpQyxDQUN2QyxDQUFDO1FB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Q2hCLENBQUM7SUFDSixDQUFDOzswR0F2UVUsNkJBQTZCO21GQUE3Qiw2QkFBNkIsV0FBN0IsNkJBQTZCO3VGQUE3Qiw2QkFBNkI7Y0FEekMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdGF0ZSwgU3RhdGVNYWNoaW5lIH0gZnJvbSAnQGVkaXVtL2ZzbSc7XG5pbXBvcnQgeyBFdmVudFN0YXJ0U3RhdGVNYWNoaW5lQ29udGV4dCwgRXZlbnRTdGFydFN0YXRlcyB9IGZyb20gJy4uL21vZGVscyc7XG5cbmNvbnN0IEVWRU5UX1NUQVRFX01BQ0hJTkUgPSAnRVZFTlQgU1RBVEUgTUFDSElORSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBFdmVudFN0YXJ0U3RhdGVNYWNoaW5lU2VydmljZSB7XG4gIHB1YmxpYyBzdGF0ZUNoZWNrRm9yTWF0Y2hpbmdUYXNrczogU3RhdGU7XG4gIHB1YmxpYyBzdGF0ZU5vVGFzazogU3RhdGU7XG4gIHB1YmxpYyBzdGF0ZU9uZVRhc2s6IFN0YXRlO1xuICBwdWJsaWMgc3RhdGVPbmVPck1vcmVUYXNrczogU3RhdGU7XG4gIHB1YmxpYyBzdGF0ZVRhc2tBc3NpZ25lZFRvVXNlcjogU3RhdGU7XG4gIHB1YmxpYyBzdGF0ZU9uZVRhc2tBc3NpZ25lZFRvVXNlcjogU3RhdGU7XG4gIHB1YmxpYyBzdGF0ZU11bHRpcGxlVGFza3NBc3NpZ25lZFRvVXNlcjogU3RhdGU7XG4gIHB1YmxpYyBzdGF0ZVRhc2tVbmFzc2lnbmVkOiBTdGF0ZTtcbiAgcHVibGljIHN0YXRlRmluYWw6IFN0YXRlO1xuXG4gIHB1YmxpYyBpbml0aWFsaXNlU3RhdGVNYWNoaW5lKGNvbnRleHQ6IEV2ZW50U3RhcnRTdGF0ZU1hY2hpbmVDb250ZXh0KTogU3RhdGVNYWNoaW5lIHtcbiAgICByZXR1cm4gbmV3IFN0YXRlTWFjaGluZShFVkVOVF9TVEFURV9NQUNISU5FLCBjb250ZXh0KTtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVTdGF0ZXMoc3RhdGVNYWNoaW5lOiBTdGF0ZU1hY2hpbmUpOiB2b2lkIHtcbiAgICAvLyBJbml0aWFsIHN0YXRlXG4gICAgdGhpcy5zdGF0ZUNoZWNrRm9yTWF0Y2hpbmdUYXNrcyA9IHN0YXRlTWFjaGluZS5jcmVhdGVTdGF0ZShcbiAgICAgIEV2ZW50U3RhcnRTdGF0ZXMuQ0hFQ0tfRk9SX01BVENISU5HX1RBU0tTLFxuICAgICAgZmFsc2UsXG4gICAgICB0aGlzLmVudHJ5QWN0aW9uRm9yU3RhdGVDaGVja0Zvck1hdGNoaW5nVGFza3NcbiAgICApO1xuXG4gICAgLy8gU3RhdGVzIGJhc2VkIG9uIG51bWJlciBvZiB0YXNrcyBhdmFpbGFibGVcbiAgICB0aGlzLnN0YXRlTm9UYXNrID0gc3RhdGVNYWNoaW5lLmNyZWF0ZVN0YXRlKFxuICAgICAgRXZlbnRTdGFydFN0YXRlcy5OT19UQVNLLFxuICAgICAgZmFsc2UsXG4gICAgICB0aGlzLmVudHJ5QWN0aW9uRm9yU3RhdGVOb1Rhc2tcbiAgICApO1xuICAgIHRoaXMuc3RhdGVPbmVPck1vcmVUYXNrcyA9IHN0YXRlTWFjaGluZS5jcmVhdGVTdGF0ZShcbiAgICAgIEV2ZW50U3RhcnRTdGF0ZXMuT05FX09SX01PUkVfVEFTS1MsXG4gICAgICBmYWxzZSxcbiAgICAgIHRoaXMuZW50cnlBY3Rpb25Gb3JTdGF0ZU9uZU9yTW9yZVRhc2tzXG4gICAgKTtcblxuICAgIC8vIFN0YXRlcyBiYXNlZCBvbiBudW1iZXIgb2YgdGFza3MgYXNzaWduZWQgdG8gdXNlclxuICAgIHRoaXMuc3RhdGVUYXNrVW5hc3NpZ25lZCA9IHN0YXRlTWFjaGluZS5jcmVhdGVTdGF0ZShcbiAgICAgIEV2ZW50U3RhcnRTdGF0ZXMuVEFTS19VTkFTU0lHTkVELFxuICAgICAgZmFsc2UsXG4gICAgICB0aGlzLmVudHJ5QWN0aW9uRm9yU3RhdGVUYXNrVW5Bc3NpZ25lZFxuICAgICk7XG4gICAgdGhpcy5zdGF0ZVRhc2tBc3NpZ25lZFRvVXNlciA9IHN0YXRlTWFjaGluZS5jcmVhdGVTdGF0ZShcbiAgICAgIEV2ZW50U3RhcnRTdGF0ZXMuVEFTS19BU1NJR05FRF9UT19VU0VSLFxuICAgICAgZmFsc2UsXG4gICAgICB0aGlzLmVudHJ5QWN0aW9uRm9yU3RhdGVUYXNrQXNzaWduZWRUb1VzZXJcbiAgICApO1xuICAgIHRoaXMuc3RhdGVPbmVUYXNrQXNzaWduZWRUb1VzZXIgPSBzdGF0ZU1hY2hpbmUuY3JlYXRlU3RhdGUoXG4gICAgICBFdmVudFN0YXJ0U3RhdGVzLk9ORV9UQVNLX0FTU0lHTkVEX1RPX1VTRVIsXG4gICAgICBmYWxzZSxcbiAgICAgIHRoaXMuZW50cnlBY3Rpb25Gb3JTdGF0ZU9uZVRhc2tBc3NpZ25lZFRvVXNlclxuICAgICk7XG4gICAgdGhpcy5zdGF0ZU11bHRpcGxlVGFza3NBc3NpZ25lZFRvVXNlciA9IHN0YXRlTWFjaGluZS5jcmVhdGVTdGF0ZShcbiAgICAgIEV2ZW50U3RhcnRTdGF0ZXMuTVVMVElQTEVfVEFTS1NfQVNTSUdORURfVE9fVVNFUixcbiAgICAgIGZhbHNlLFxuICAgICAgdGhpcy5lbnRyeUFjdGlvbkZvclN0YXRlTXVsdGlwbGVUYXNrc0Fzc2lnbmVkVG9Vc2VyXG4gICAgKTtcblxuICAgIC8vIENyZWF0ZSBmaW5hbCBzdGF0ZSwgdGhlIHNlY29uZCBwYXJhbSBpc0NvbXBsZXRlIGlzIHNldCB0byB0cnVlIHRvIG1ha2Ugc3VyZSBzdGF0ZSBtYWNoaW5lIGZpbmlzaGVkIHJ1bm5pbmdcbiAgICB0aGlzLnN0YXRlRmluYWwgPSBzdGF0ZU1hY2hpbmUuY3JlYXRlU3RhdGUoXG4gICAgICBFdmVudFN0YXJ0U3RhdGVzLkZJTkFMLFxuICAgICAgdHJ1ZSxcbiAgICAgIHRoaXMuZmluYWxBY3Rpb25cbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFkZFRyYW5zaXRpb25zKCk6IHZvaWQge1xuICAgIC8vIEluaXRpYWwgdHJhbnNpdGlvblxuICAgIHRoaXMuYWRkVHJhbnNpdGlvbnNGb3JTdGF0ZUNoZWNrRm9yTWF0Y2hpbmdUYXNrcygpO1xuXG4gICAgLy8gVHJhbnNpdGlvbnMgYmFzZWQgb24gbnVtYmVyIG9mIHRhc2tzIGF2YWlsYWJsZVxuICAgIHRoaXMuYWRkVHJhbnNpdGlvbnNGb3JTdGF0ZU5vVGFzaygpO1xuICAgIHRoaXMuYWRkVHJhbnNpdGlvbnNGb3JTdGF0ZU9uZU9yTW9yZVRhc2tzKCk7XG5cbiAgICAvLyBUcmFuc2l0aW9ucyBiYXNlZCBvbiBudW1iZXIgb2YgdGFza3MgYXNzaWduZWQgdG8gdXNlclxuICAgIHRoaXMuYWRkVHJhbnNpdGlvbnNGb3JTdGF0ZVRhc2tVbmFzc2lnbmVkKCk7XG4gICAgdGhpcy5hZGRUcmFuc2l0aW9uc0ZvclN0YXRlVGFza0Fzc2lnbmVkVG9Vc2VyKCk7XG4gICAgdGhpcy5hZGRUcmFuc2l0aW9uc0ZvclN0YXRlT25lVGFza0Fzc2lnbmVkVG9Vc2VyKCk7XG4gICAgdGhpcy5hZGRUcmFuc2l0aW9uc0ZvclN0YXRlTXVsdGlwbGVUYXNrc0Fzc2lnbmVkVG9Vc2VyKCk7XG4gIH1cblxuICBwdWJsaWMgc3RhcnRTdGF0ZU1hY2hpbmUoc3RhdGVNYWNoaW5lOiBTdGF0ZU1hY2hpbmUpOiB2b2lkIHtcbiAgICBzdGF0ZU1hY2hpbmUuc3RhcnQodGhpcy5zdGF0ZUNoZWNrRm9yTWF0Y2hpbmdUYXNrcyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbCBlbnRyeSBhY3Rpb24gZm9yIHN0YXRlIGNoZWNrIGZvciBtYXRjaGluZyB0YXNrcywgZGVjaWRlZCBiYXNlZCBvbiB0aGUgbnVtYmVyIG9mIHRhc2tzXG4gICAqL1xuICBwdWJsaWMgZW50cnlBY3Rpb25Gb3JTdGF0ZUNoZWNrRm9yTWF0Y2hpbmdUYXNrcyhzdGF0ZTogU3RhdGUsIGNvbnRleHQ6IEV2ZW50U3RhcnRTdGF0ZU1hY2hpbmVDb250ZXh0KTogdm9pZCB7XG4gICAgY29uc3QgdGFza0NvdW50ID0gY29udGV4dCAmJiBjb250ZXh0LnRhc2tzID8gY29udGV4dC50YXNrcy5sZW5ndGggOiAwO1xuXG4gICAgaWYgKHRhc2tDb3VudCA9PT0gMCkge1xuICAgICAgLy8gVHJpZ2dlciBzdGF0ZSBubyB0YXNrXG4gICAgICBzdGF0ZS50cmlnZ2VyKEV2ZW50U3RhcnRTdGF0ZXMuTk9fVEFTSyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRyaWdnZXIgc3RhdGUgb25lIG9yIG1vcmUgdGFza3NcbiAgICAgIHN0YXRlLnRyaWdnZXIoRXZlbnRTdGFydFN0YXRlcy5PTkVfT1JfTU9SRV9UQVNLUyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGVudHJ5QWN0aW9uRm9yU3RhdGVOb1Rhc2soc3RhdGU6IFN0YXRlLCBjb250ZXh0OiBFdmVudFN0YXJ0U3RhdGVNYWNoaW5lQ29udGV4dCk6IHZvaWQge1xuICAgIC8vIFRyaWdnZXIgZmluYWwgc3RhdGUgdG8gY29tcGxldGUgcHJvY2Vzc2luZyBvZiBzdGF0ZSBtYWNoaW5lXG4gICAgc3RhdGUudHJpZ2dlcihFdmVudFN0YXJ0U3RhdGVzLkZJTkFMKTtcbiAgICAvLyBOYXZpZ2F0ZSB0byBubyB0YXNrcyBhdmFpbGFibGUgZXJyb3IgcGFnZVxuICAgIGNvbnRleHQucm91dGVyLm5hdmlnYXRlKFtgL2Nhc2VzL2Nhc2UtZGV0YWlscy8ke2NvbnRleHQuY2FzZUlkfS9uby10YXNrcy1hdmFpbGFibGVgXSwgeyByZWxhdGl2ZVRvOiBjb250ZXh0LnJvdXRlIH0pO1xuICB9XG5cbiAgcHVibGljIGVudHJ5QWN0aW9uRm9yU3RhdGVPbmVPck1vcmVUYXNrcyhzdGF0ZTogU3RhdGUsIGNvbnRleHQ6IEV2ZW50U3RhcnRTdGF0ZU1hY2hpbmVDb250ZXh0KTogdm9pZCB7XG4gICAgc3RhdGUudHJpZ2dlcihFdmVudFN0YXJ0U3RhdGVzLlRBU0tfQVNTSUdORURfVE9fVVNFUik7XG4gIH1cblxuICBwdWJsaWMgZW50cnlBY3Rpb25Gb3JTdGF0ZU11bHRpcGxlVGFza3Moc3RhdGU6IFN0YXRlLCBjb250ZXh0OiBFdmVudFN0YXJ0U3RhdGVNYWNoaW5lQ29udGV4dCk6IHZvaWQge1xuICAgIHN0YXRlLnRyaWdnZXIoRXZlbnRTdGFydFN0YXRlcy5NVUxUSVBMRV9UQVNLU19BU1NJR05FRF9UT19VU0VSKTtcbiAgfVxuXG4gIHB1YmxpYyBlbnRyeUFjdGlvbkZvclN0YXRlVGFza0Fzc2lnbmVkVG9Vc2VyKHN0YXRlOiBTdGF0ZSwgY29udGV4dDogRXZlbnRTdGFydFN0YXRlTWFjaGluZUNvbnRleHQpOiB2b2lkIHtcbiAgICAvLyBHZXQgbnVtYmVyIG9mIHRhc2tzIGFzc2lnbmVkIHRvIHVzZXJcbiAgICBjb25zdCB1c2VySW5mb1N0ciA9IGNvbnRleHQuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ3VzZXJEZXRhaWxzJyk7XG4gICAgY29uc3QgdXNlckluZm8gPSBKU09OLnBhcnNlKHVzZXJJbmZvU3RyKTtcbiAgICBjb25zdCB0YXNrc0Fzc2lnbmVkVG9Vc2VyID0gY29udGV4dC50YXNrcy5maWx0ZXIoeCA9PlxuICAgICAgICB4LnRhc2tfc3RhdGUgIT09ICd1bmFzc2lnbmVkJyAmJiB4LmFzc2lnbmVlID09PSB1c2VySW5mby5pZCB8fCB4LmFzc2lnbmVlID09PSB1c2VySW5mby51aWRcbiAgICAgICk7XG5cbiAgICAvLyBDaGVjayBpZiB1c2VyIGluaXRpYXRlZCB0aGUgZXZlbnQgZnJvbSB0YXNrIHRhYlxuICAgIGNvbnN0IGlzRXZlbnRJbml0aWF0ZWRGcm9tVGFza1RhYiA9IGNvbnRleHQudGFza0lkICE9PSB1bmRlZmluZWQgJiYgdGFza3NBc3NpZ25lZFRvVXNlci5maW5kSW5kZXgoeCA9PiB4LmlkID09PSBjb250ZXh0LnRhc2tJZCkgPiAtMTtcblxuICAgIGlmIChpc0V2ZW50SW5pdGlhdGVkRnJvbVRhc2tUYWIpIHtcbiAgICAgIC8vIFVzZXIgaW5pdGlhdGVkIGV2ZW50IGZyb20gdGFzayB0YWJcbiAgICAgIHN0YXRlLnRyaWdnZXIoRXZlbnRTdGFydFN0YXRlcy5PTkVfVEFTS19BU1NJR05FRF9UT19VU0VSKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVXNlciBpbml0aWF0ZWQgZXZlbnQgZnJvbSBkcm9wZG93blxuICAgICAgc3dpdGNoICh0YXNrc0Fzc2lnbmVkVG9Vc2VyLmxlbmd0aCkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgLy8gTm8gdGFza3MgYXNzaWduZWQgdG8gdXNlciwgdHJpZ2dlciBzdGF0ZSB0YXNrIHVuYXNzaWduZWRcbiAgICAgICAgICBzdGF0ZS50cmlnZ2VyKEV2ZW50U3RhcnRTdGF0ZXMuVEFTS19VTkFTU0lHTkVEKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIC8vIE9uZSB0YXNrIGFzc2lnbmVkIHRvIHVzZXJcbiAgICAgICAgICBzdGF0ZS50cmlnZ2VyKEV2ZW50U3RhcnRTdGF0ZXMuT05FX1RBU0tfQVNTSUdORURfVE9fVVNFUik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgLy8gTXVsdGlwbGUgdGFza3MgYXNzaWduZWQgdG8gdXNlciwgdHJpZ2dlciBzdGF0ZSBtdWx0aXBsZSB0YXNrcyBhc3NpZ25lZCB0byB1c2VyXG4gICAgICAgICAgc3RhdGUudHJpZ2dlcihFdmVudFN0YXJ0U3RhdGVzLk1VTFRJUExFX1RBU0tTX0FTU0lHTkVEX1RPX1VTRVIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBlbnRyeUFjdGlvbkZvclN0YXRlVGFza1VuQXNzaWduZWQoc3RhdGU6IFN0YXRlLCBjb250ZXh0OiBFdmVudFN0YXJ0U3RhdGVNYWNoaW5lQ29udGV4dCk6IHZvaWQge1xuICAgIGxldCBuYXZpZ2F0aW9uVVJMID0gJyc7XG4gICAgbGV0IHRoZVF1ZXJ5UGFyYW1zOiBQYXJhbXMgPSB7fTtcblxuICAgIGlmIChjb250ZXh0LnRhc2tzWzBdLmFzc2lnbmVlKSB7XG4gICAgICAvLyBUYXNrIGlzIGFzc2lnbmVkIHRvIHNvbWUgb3RoZXIgdXNlciwgbmF2aWdhdGUgdG8gdGFzayBhc3NpZ25lZCBlcnJvciBwYWdlXG4gICAgICBuYXZpZ2F0aW9uVVJMID0gYC9jYXNlcy9jYXNlLWRldGFpbHMvJHtjb250ZXh0LmNhc2VJZH0vdGFzay1hc3NpZ25lZGA7XG4gICAgICB0aGVRdWVyeVBhcmFtcyA9IGNvbnRleHQudGFza3NbMF07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRhc2sgaXMgdW5hc3NpZ25lZCwgbmF2aWdhdGUgdG8gdGFzayB1bmFzc2lnbmVkIGVycm9yIHBhZ2VcbiAgICAgIG5hdmlnYXRpb25VUkwgPSBgL2Nhc2VzL2Nhc2UtZGV0YWlscy8ke2NvbnRleHQuY2FzZUlkfS90YXNrLXVuYXNzaWduZWRgO1xuICAgIH1cblxuICAgIC8vIFRyaWdnZXIgZmluYWwgc3RhdGUgdG8gY29tcGxldGUgcHJvY2Vzc2luZyBvZiBzdGF0ZSBtYWNoaW5lXG4gICAgc3RhdGUudHJpZ2dlcihFdmVudFN0YXJ0U3RhdGVzLkZJTkFMKTtcbiAgICAvLyBOYXZpZ2F0ZVxuICAgIGNvbnRleHQucm91dGVyLm5hdmlnYXRlKFtgJHtuYXZpZ2F0aW9uVVJMfWBdLCB7IHF1ZXJ5UGFyYW1zOiB0aGVRdWVyeVBhcmFtcywgcmVsYXRpdmVUbzogY29udGV4dC5yb3V0ZSB9KTtcbiAgfVxuXG4gIHB1YmxpYyBlbnRyeUFjdGlvbkZvclN0YXRlT25lVGFza0Fzc2lnbmVkVG9Vc2VyKHN0YXRlOiBTdGF0ZSwgY29udGV4dDogRXZlbnRTdGFydFN0YXRlTWFjaGluZUNvbnRleHQpOiB2b2lkIHtcbiAgICAvLyBUcmlnZ2VyIGZpbmFsIHN0YXRlIHRvIGNvbXBsZXRlIHByb2Nlc3Npbmcgb2Ygc3RhdGUgbWFjaGluZVxuICAgIHN0YXRlLnRyaWdnZXIoRXZlbnRTdGFydFN0YXRlcy5GSU5BTCk7XG5cbiAgICAvLyBHZXQgdGFzayBhc3NpZ25lZCB0byB1c2VyXG4gICAgbGV0IHRhc2sgPSBjb250ZXh0LnRhc2tzLmZpbmQoeCA9PiB4LmlkID09PSBjb250ZXh0LnRhc2tJZCk7XG4gICAgaWYgKCF0YXNrKSB7XG4gICAgICB0YXNrID0gY29udGV4dC50YXNrc1swXTtcbiAgICB9XG5cbiAgICBjb25zdCB0YXNrU3RyPSBKU09OLnN0cmluZ2lmeSh0YXNrKTtcbiAgICBjb25zb2xlLmxvZygnZW50cnlBY3Rpb25Gb3JTdGF0ZU9uZVRhc2tBc3NpZ25lZFRvVXNlcjogc2V0dGluZyB0YXNrVG9Db21wbGV0ZSB0byAnICsgdGFza1N0cik7XG4gICAgLy8gU3RvcmUgdGFzayB0byBzZXNzaW9uXG4gICAgY29udGV4dC5zZXNzaW9uU3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSgndGFza1RvQ29tcGxldGUnLCB0YXNrU3RyICk7XG4gICAgLy8gQWxsb3cgdXNlciB0byBwZXJmb3JtIHRoZSBldmVudFxuICAgIGNvbnRleHQucm91dGVyLm5hdmlnYXRlKFtgL2Nhc2VzL2Nhc2UtZGV0YWlscy8ke2NvbnRleHQuY2FzZUlkfS90cmlnZ2VyLyR7Y29udGV4dC5ldmVudElkfWBdLFxuICAgICAgeyByZWxhdGl2ZVRvOiBjb250ZXh0LnJvdXRlIH0pO1xuICB9XG5cbiAgcHVibGljIGVudHJ5QWN0aW9uRm9yU3RhdGVNdWx0aXBsZVRhc2tzQXNzaWduZWRUb1VzZXIoc3RhdGU6IFN0YXRlLCBjb250ZXh0OiBFdmVudFN0YXJ0U3RhdGVNYWNoaW5lQ29udGV4dCk6IHZvaWQge1xuICAgIC8vIFRyaWdnZXIgZmluYWwgc3RhdGUgdG8gY29tcGxldGUgcHJvY2Vzc2luZyBvZiBzdGF0ZSBtYWNoaW5lXG4gICAgc3RhdGUudHJpZ2dlcihFdmVudFN0YXJ0U3RhdGVzLkZJTkFMKTtcbiAgICAvLyBOYXZpZ2F0ZSB0byBtdWx0aXBsZSB0YXNrcyBleGlzdCBlcnJvciBwYWdlXG4gICAgY29udGV4dC5yb3V0ZXIubmF2aWdhdGUoW2AvY2FzZXMvY2FzZS1kZXRhaWxzLyR7Y29udGV4dC5jYXNlSWR9L211bHRpcGxlLXRhc2tzLWV4aXN0YF0sIHsgcmVsYXRpdmVUbzogY29udGV4dC5yb3V0ZSB9KTtcbiAgfVxuXG4gIHB1YmxpYyBmaW5hbEFjdGlvbihzdGF0ZTogU3RhdGUpOiB2b2lkIHtcbiAgICAvLyBGaW5hbCBhY3Rpb25zIGNhbiBiZSBwZXJmb3JtZWQgaGVyZSwgdGhlIHN0YXRlIG1hY2hpbmUgZmluaXNoZWQgcnVubmluZ1xuICAgIC8vIGNvbnNvbGUubG9nKCdGSU5BTCcsIHN0YXRlKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBwdWJsaWMgYWRkVHJhbnNpdGlvbnNGb3JTdGF0ZUNoZWNrRm9yTWF0Y2hpbmdUYXNrcygpOiB2b2lkIHtcbiAgICAvLyBObyB0YXNrc1xuICAgIHRoaXMuc3RhdGVDaGVja0Zvck1hdGNoaW5nVGFza3MuYWRkVHJhbnNpdGlvbihcbiAgICAgIEV2ZW50U3RhcnRTdGF0ZXMuTk9fVEFTSyxcbiAgICAgIHRoaXMuc3RhdGVOb1Rhc2tcbiAgICApO1xuICAgIC8vIE9uZSB0YXNrXG4gICAgdGhpcy5zdGF0ZUNoZWNrRm9yTWF0Y2hpbmdUYXNrcy5hZGRUcmFuc2l0aW9uKFxuICAgICAgRXZlbnRTdGFydFN0YXRlcy5PTkVfT1JfTU9SRV9UQVNLUyxcbiAgICAgIHRoaXMuc3RhdGVPbmVPck1vcmVUYXNrc1xuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYWRkVHJhbnNpdGlvbnNGb3JTdGF0ZU5vVGFzaygpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlTm9UYXNrLmFkZFRyYW5zaXRpb24oXG4gICAgICBFdmVudFN0YXJ0U3RhdGVzLkZJTkFMLFxuICAgICAgdGhpcy5zdGF0ZUZpbmFsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUcmFuc2l0aW9uc0ZvclN0YXRlT25lT3JNb3JlVGFza3MoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZU9uZU9yTW9yZVRhc2tzLmFkZFRyYW5zaXRpb24oXG4gICAgICBFdmVudFN0YXJ0U3RhdGVzLlRBU0tfQVNTSUdORURfVE9fVVNFUixcbiAgICAgIHRoaXMuc3RhdGVUYXNrQXNzaWduZWRUb1VzZXJcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFkZFRyYW5zaXRpb25zRm9yU3RhdGVUYXNrVW5hc3NpZ25lZCgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlVGFza1VuYXNzaWduZWQuYWRkVHJhbnNpdGlvbihcbiAgICAgIEV2ZW50U3RhcnRTdGF0ZXMuRklOQUwsXG4gICAgICB0aGlzLnN0YXRlRmluYWxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFkZFRyYW5zaXRpb25zRm9yU3RhdGVUYXNrQXNzaWduZWRUb1VzZXIoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZVRhc2tBc3NpZ25lZFRvVXNlci5hZGRUcmFuc2l0aW9uKFxuICAgICAgRXZlbnRTdGFydFN0YXRlcy5PTkVfVEFTS19BU1NJR05FRF9UT19VU0VSLFxuICAgICAgdGhpcy5zdGF0ZU9uZVRhc2tBc3NpZ25lZFRvVXNlclxuICAgICk7XG4gICAgdGhpcy5zdGF0ZVRhc2tBc3NpZ25lZFRvVXNlci5hZGRUcmFuc2l0aW9uKFxuICAgICAgRXZlbnRTdGFydFN0YXRlcy5UQVNLX1VOQVNTSUdORUQsXG4gICAgICB0aGlzLnN0YXRlVGFza1VuYXNzaWduZWRcbiAgICApO1xuICAgIHRoaXMuc3RhdGVUYXNrQXNzaWduZWRUb1VzZXIuYWRkVHJhbnNpdGlvbihcbiAgICAgIEV2ZW50U3RhcnRTdGF0ZXMuTVVMVElQTEVfVEFTS1NfQVNTSUdORURfVE9fVVNFUixcbiAgICAgIHRoaXMuc3RhdGVNdWx0aXBsZVRhc2tzQXNzaWduZWRUb1VzZXJcbiAgICApO1xuICAgIHRoaXMuc3RhdGVUYXNrQXNzaWduZWRUb1VzZXIuYWRkVHJhbnNpdGlvbihcbiAgICAgIEV2ZW50U3RhcnRTdGF0ZXMuRklOQUwsXG4gICAgICB0aGlzLnN0YXRlRmluYWxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFkZFRyYW5zaXRpb25zRm9yU3RhdGVPbmVUYXNrQXNzaWduZWRUb1VzZXIoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZU9uZVRhc2tBc3NpZ25lZFRvVXNlci5hZGRUcmFuc2l0aW9uKFxuICAgICAgRXZlbnRTdGFydFN0YXRlcy5GSU5BTCxcbiAgICAgIHRoaXMuc3RhdGVGaW5hbFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYWRkVHJhbnNpdGlvbnNGb3JTdGF0ZU11bHRpcGxlVGFza3NBc3NpZ25lZFRvVXNlcigpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlTXVsdGlwbGVUYXNrc0Fzc2lnbmVkVG9Vc2VyLmFkZFRyYW5zaXRpb24oXG4gICAgICBFdmVudFN0YXJ0U3RhdGVzLkZJTkFMLFxuICAgICAgdGhpcy5zdGF0ZUZpbmFsXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -18,4 +18,4 @@ export var TaskState;
18
18
  TaskState["Terminated"] = "TERMINATED";
19
19
  TaskState["PendingReConfiguration"] = "PENDING_RECONFIGURATION";
20
20
  })(TaskState || (TaskState = {}));
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFzay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvZG9tYWluL3dvcmstYWxsb2NhdGlvbi9UYXNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlDQSxNQUFNLENBQU4sSUFBWSxXQU1YO0FBTkQsV0FBWSxXQUFXO0lBQ3JCLDBCQUFVLENBQUE7SUFDVixrQ0FBa0IsQ0FBQTtJQUNsQiw0QkFBWSxDQUFBO0lBQ1osZ0NBQWdCLENBQUE7SUFDaEIsZ0NBQWdCLENBQUE7QUFDbEIsQ0FBQyxFQU5XLFdBQVcsS0FBWCxXQUFXLFFBTXRCO0FBRUQsTUFBTSxDQUFOLElBQVksU0FVWDtBQVZELFdBQVksU0FBUztJQUNuQiwwQ0FBNkIsQ0FBQTtJQUM3QixzREFBeUMsQ0FBQTtJQUN6QyxrQ0FBcUIsQ0FBQTtJQUNyQixzQ0FBeUIsQ0FBQTtJQUN6QixzQ0FBeUIsQ0FBQTtJQUN6QixvQ0FBdUIsQ0FBQTtJQUN2QixvQ0FBdUIsQ0FBQTtJQUN2QixzQ0FBeUIsQ0FBQTtJQUN6QiwrREFBa0QsQ0FBQTtBQUNwRCxDQUFDLEVBVlcsU0FBUyxLQUFULFNBQVMsUUFVcEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFRhc2sge1xuICBhc3NpZ25lZT86IHN0cmluZztcbiAgYXV0b19hc3NpZ25lZD86IGJvb2xlYW47XG4gIGNhc2VfY2F0ZWdvcnk6IHN0cmluZztcbiAgY2FzZV9pZDogc3RyaW5nO1xuICBjYXNlX21hbmFnZW1lbnRfY2F0ZWdvcnk/OiBzdHJpbmc7XG4gIGNhc2VfbmFtZT86IHN0cmluZztcbiAgY2FzZV90eXBlX2lkPzogc3RyaW5nO1xuICBjcmVhdGVkX2RhdGU6IHN0cmluZztcbiAgZHVlX2RhdGU/OiBzdHJpbmc7XG4gIGV4ZWN1dGlvbl90eXBlPzogc3RyaW5nO1xuICBpZDogc3RyaW5nO1xuICBqdXJpc2RpY3Rpb246IHN0cmluZztcbiAgbG9jYXRpb24/OiBzdHJpbmc7XG4gIGxvY2F0aW9uX25hbWU/OiBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHBlcm1pc3Npb25zOiB7IHZhbHVlczogUGVybWlzc2lvbnNbXX07XG4gIHJlZ2lvbj86IHN0cmluZztcbiAgc2VjdXJpdHlfY2xhc3NpZmljYXRpb24/OiBzdHJpbmc7XG4gIHRhc2tfc3RhdGU/OiBzdHJpbmc7XG4gIHRhc2tfc3lzdGVtPzogc3RyaW5nO1xuICB0YXNrX3RpdGxlPzogc3RyaW5nO1xuICB0eXBlPzogc3RyaW5nO1xuICB3YXJuaW5nX2xpc3Q/OiB7IHZhbHVlczogc3RyaW5nW119O1xuICB3YXJuaW5ncz86IHRydWU7XG4gIHdvcmtfdHlwZV9pZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VyVGFzayB7XG4gIHRhc2tfZGF0YTogVGFzayxcbiAgY29tcGxldGVfdGFzazogYm9vbGVhblxufVxuXG5leHBvcnQgZW51bSBQZXJtaXNzaW9ucyB7XG4gIE93bj0gJ09XTicsXG4gIEV4ZWN1dGU9ICdFWEVDVVRFJyxcbiAgUmVhZD0gJ1JFQUQnLFxuICBNYW5hZ2U9ICdNQU5BR0UnLFxuICBDYW5jZWw9ICdDQU5DRUwnLFxufVxuXG5leHBvcnQgZW51bSBUYXNrU3RhdGUge1xuICBVbkNvbmZpZ3VyZWQgPSAnVU5DT05GSUdVUkVEJyxcbiAgUGVuZGluZ0F1dG9Bc3NpZ24gPSAnUEVORElOR19BVVRPX0FTU0lHTicsXG4gIEFzc2lnbmVkID0gJ0FTU0lHTkVEJyxcbiAgQ29uZmlndXJlZCA9ICdDT05GSUdVUkVEJyxcbiAgVW5hc3NpZ25lZCA9ICdVTkFTU0lHTkVEJyxcbiAgQ29tcGxldGVkID0gJ0NPTVBMRVRFRCcsXG4gIENhbmNlbGxlZCA9ICdDQU5DRUxMRUQnLFxuICBUZXJtaW5hdGVkID0gJ1RFUk1JTkFURUQnLFxuICBQZW5kaW5nUmVDb25maWd1cmF0aW9uID0gJ1BFTkRJTkdfUkVDT05GSUdVUkFUSU9OJ1xufVxuIl19
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFzay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvZG9tYWluL3dvcmstYWxsb2NhdGlvbi9UYXNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTRCQSxNQUFNLENBQU4sSUFBWSxXQU1YO0FBTkQsV0FBWSxXQUFXO0lBQ3JCLDBCQUFVLENBQUE7SUFDVixrQ0FBa0IsQ0FBQTtJQUNsQiw0QkFBWSxDQUFBO0lBQ1osZ0NBQWdCLENBQUE7SUFDaEIsZ0NBQWdCLENBQUE7QUFDbEIsQ0FBQyxFQU5XLFdBQVcsS0FBWCxXQUFXLFFBTXRCO0FBRUQsTUFBTSxDQUFOLElBQVksU0FVWDtBQVZELFdBQVksU0FBUztJQUNuQiwwQ0FBNkIsQ0FBQTtJQUM3QixzREFBeUMsQ0FBQTtJQUN6QyxrQ0FBcUIsQ0FBQTtJQUNyQixzQ0FBeUIsQ0FBQTtJQUN6QixzQ0FBeUIsQ0FBQTtJQUN6QixvQ0FBdUIsQ0FBQTtJQUN2QixvQ0FBdUIsQ0FBQTtJQUN2QixzQ0FBeUIsQ0FBQTtJQUN6QiwrREFBa0QsQ0FBQTtBQUNwRCxDQUFDLEVBVlcsU0FBUyxLQUFULFNBQVMsUUFVcEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFRhc2sge1xuICBhc3NpZ25lZT86IHN0cmluZztcbiAgYXV0b19hc3NpZ25lZD86IGJvb2xlYW47XG4gIGNhc2VfY2F0ZWdvcnk6IHN0cmluZztcbiAgY2FzZV9pZDogc3RyaW5nO1xuICBjYXNlX21hbmFnZW1lbnRfY2F0ZWdvcnk/OiBzdHJpbmc7XG4gIGNhc2VfbmFtZT86IHN0cmluZztcbiAgY2FzZV90eXBlX2lkPzogc3RyaW5nO1xuICBjcmVhdGVkX2RhdGU6IHN0cmluZztcbiAgZHVlX2RhdGU/OiBzdHJpbmc7XG4gIGV4ZWN1dGlvbl90eXBlPzogc3RyaW5nO1xuICBpZDogc3RyaW5nO1xuICBqdXJpc2RpY3Rpb246IHN0cmluZztcbiAgbG9jYXRpb24/OiBzdHJpbmc7XG4gIGxvY2F0aW9uX25hbWU/OiBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHBlcm1pc3Npb25zOiB7IHZhbHVlczogUGVybWlzc2lvbnNbXX07XG4gIHJlZ2lvbj86IHN0cmluZztcbiAgc2VjdXJpdHlfY2xhc3NpZmljYXRpb24/OiBzdHJpbmc7XG4gIHRhc2tfc3RhdGU/OiBzdHJpbmc7XG4gIHRhc2tfc3lzdGVtPzogc3RyaW5nO1xuICB0YXNrX3RpdGxlPzogc3RyaW5nO1xuICB0eXBlPzogc3RyaW5nO1xuICB3YXJuaW5nX2xpc3Q/OiB7IHZhbHVlczogc3RyaW5nW119O1xuICB3YXJuaW5ncz86IHRydWU7XG4gIHdvcmtfdHlwZV9pZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGVudW0gUGVybWlzc2lvbnMge1xuICBPd249ICdPV04nLFxuICBFeGVjdXRlPSAnRVhFQ1VURScsXG4gIFJlYWQ9ICdSRUFEJyxcbiAgTWFuYWdlPSAnTUFOQUdFJyxcbiAgQ2FuY2VsPSAnQ0FOQ0VMJyxcbn1cblxuZXhwb3J0IGVudW0gVGFza1N0YXRlIHtcbiAgVW5Db25maWd1cmVkID0gJ1VOQ09ORklHVVJFRCcsXG4gIFBlbmRpbmdBdXRvQXNzaWduID0gJ1BFTkRJTkdfQVVUT19BU1NJR04nLFxuICBBc3NpZ25lZCA9ICdBU1NJR05FRCcsXG4gIENvbmZpZ3VyZWQgPSAnQ09ORklHVVJFRCcsXG4gIFVuYXNzaWduZWQgPSAnVU5BU1NJR05FRCcsXG4gIENvbXBsZXRlZCA9ICdDT01QTEVURUQnLFxuICBDYW5jZWxsZWQgPSAnQ0FOQ0VMTEVEJyxcbiAgVGVybWluYXRlZCA9ICdURVJNSU5BVEVEJyxcbiAgUGVuZGluZ1JlQ29uZmlndXJhdGlvbiA9ICdQRU5ESU5HX1JFQ09ORklHVVJBVElPTidcbn1cbiJdfQ==