@netgrif/components-core 6.1.1 → 6.2.0-rc.11

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 (126) hide show
  1. package/esm2020/assets/i18n/de.json +19 -1
  2. package/esm2020/assets/i18n/en.json +19 -1
  3. package/esm2020/assets/i18n/sk.json +20 -2
  4. package/esm2020/lib/authorization/permission/access.service.mjs +74 -0
  5. package/esm2020/lib/authorization/public-api.mjs +2 -1
  6. package/esm2020/lib/data-fields/file-field/abstract-file-field.component.mjs +8 -3
  7. package/esm2020/lib/data-fields/file-list-field/abstract-file-list-field.component.mjs +7 -2
  8. package/esm2020/lib/dialog/components/prompt-dialog/prompt-dialog.component.mjs +3 -3
  9. package/esm2020/lib/filter/models/case-search-request-body.mjs +1 -1
  10. package/esm2020/lib/header/abstract-header-service.mjs +15 -8
  11. package/esm2020/lib/header/abstract-header.component.mjs +2 -2
  12. package/esm2020/lib/header/case-header/case-header.service.mjs +2 -2
  13. package/esm2020/lib/header/header-modes/search-mode/abstract-search-mode.component.mjs +3 -2
  14. package/esm2020/lib/header/task-header/task-header.service.mjs +7 -4
  15. package/esm2020/lib/header/workflow-header/workflow-header.service.mjs +11 -8
  16. package/esm2020/lib/navigation/model/uri-resource.mjs +6 -0
  17. package/esm2020/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.mjs +386 -0
  18. package/esm2020/lib/navigation/navigation-tree/abstract-navigation-tree.component.mjs +15 -62
  19. package/esm2020/lib/navigation/public-api.mjs +5 -1
  20. package/esm2020/lib/navigation/service/uri-resource.service.mjs +35 -0
  21. package/esm2020/lib/navigation/service/uri.service.mjs +194 -0
  22. package/esm2020/lib/panel/abstract/panel-with-immediate-data.mjs +51 -20
  23. package/esm2020/lib/panel/abstract-panel.component.mjs +23 -5
  24. package/esm2020/lib/panel/case-panel/abstract-case-panel.component.mjs +2 -2
  25. package/esm2020/lib/panel/configuration/config-params.mjs +5 -0
  26. package/esm2020/lib/panel/public-api.mjs +5 -1
  27. package/esm2020/lib/panel/task-panel/abstract-task-panel.component.mjs +36 -6
  28. package/esm2020/lib/panel/task-panel/models/task-panel-context.mjs +2 -0
  29. package/esm2020/lib/panel/task-panel-list/default-task-panel-list/abstract-default-task-list.mjs +2 -2
  30. package/esm2020/lib/panel/task-panel-single/abstract-single-task.component.mjs +81 -0
  31. package/esm2020/lib/panel/workflow-panel/abstract-workflow-panel.component.mjs +9 -4
  32. package/esm2020/lib/process/net.mjs +8 -1
  33. package/esm2020/lib/process/public-api.mjs +3 -1
  34. package/esm2020/lib/public/factories/public-factory-resolver.mjs +3 -3
  35. package/esm2020/lib/resources/engine-endpoint/petri-net-resource.service.mjs +2 -2
  36. package/esm2020/lib/resources/engine-endpoint/public/public-task-resource.service.mjs +1 -40
  37. package/esm2020/lib/resources/engine-endpoint/task-resource.service.mjs +4 -1
  38. package/esm2020/lib/resources/interface/case.mjs +1 -1
  39. package/esm2020/lib/resources/interface/petri-net-reference.mjs +1 -1
  40. package/esm2020/lib/resources/interface/task-pair.mjs +2 -0
  41. package/esm2020/lib/resources/public-api.mjs +2 -1
  42. package/esm2020/lib/routing/redirect-service/redirect.service.mjs +2 -1
  43. package/esm2020/lib/routing/routing-builder/routing-builder.service.mjs +5 -1
  44. package/esm2020/lib/search/models/category/case/case-dataset.mjs +3 -1
  45. package/esm2020/lib/search/models/category/case/case-simple-dataset.mjs +5 -1
  46. package/esm2020/lib/side-menu/content-components/save-filter/abstract-save-filter.component.mjs +8 -7
  47. package/esm2020/lib/tabs/classes/opened-tab.mjs +19 -1
  48. package/esm2020/lib/tabs/classes/tab-label-stream.mjs +15 -0
  49. package/esm2020/lib/tabs/classes/tab-view.mjs +11 -3
  50. package/esm2020/lib/tabs/interfaces.mjs +1 -1
  51. package/esm2020/lib/tabs/public-api.mjs +3 -1
  52. package/esm2020/lib/task/services/assign-task.service.mjs +7 -6
  53. package/esm2020/lib/task/services/cancel-task.service.mjs +7 -6
  54. package/esm2020/lib/task/services/delegate-task.service.mjs +9 -8
  55. package/esm2020/lib/task/services/finish-task.service.mjs +7 -6
  56. package/esm2020/lib/task/services/task-data.service.mjs +51 -13
  57. package/esm2020/lib/task-content/field-component-resolver/abstract-field-component-resolver.component.mjs +3 -2
  58. package/esm2020/lib/task-content/model/task-event-notification.mjs +5 -3
  59. package/esm2020/lib/task-content/services/task-content.service.mjs +5 -2
  60. package/esm2020/lib/utility/tests/utility/create-mock-net.mjs +2 -1
  61. package/esm2020/lib/view/abstract/view-with-headers.mjs +13 -4
  62. package/esm2020/lib/view/case-view/abstract-case-view.mjs +7 -5
  63. package/esm2020/lib/view/case-view/tabbed-case-view.mjs +7 -5
  64. package/esm2020/lib/view/public-api.mjs +4 -1
  65. package/esm2020/lib/view/task-view/abstract-single-task-view.component.mjs +55 -0
  66. package/esm2020/lib/view/task-view/abstract-task-view.mjs +6 -5
  67. package/esm2020/lib/view/task-view/tabbed-task-view.mjs +6 -5
  68. package/esm2020/lib/view/workflow-view/abstract-workflow-view.component.mjs +6 -5
  69. package/fesm2015/netgrif-components-core.mjs +5900 -4921
  70. package/fesm2015/netgrif-components-core.mjs.map +1 -1
  71. package/fesm2020/netgrif-components-core.mjs +5841 -4870
  72. package/fesm2020/netgrif-components-core.mjs.map +1 -1
  73. package/lib/authorization/permission/access.service.d.ts +40 -0
  74. package/lib/authorization/public-api.d.ts +1 -0
  75. package/lib/filter/models/case-search-request-body.d.ts +1 -0
  76. package/lib/header/abstract-header-service.d.ts +6 -3
  77. package/lib/header/abstract-header.component.d.ts +1 -1
  78. package/lib/header/task-header/task-header.service.d.ts +3 -2
  79. package/lib/header/workflow-header/workflow-header.service.d.ts +3 -2
  80. package/lib/navigation/model/uri-resource.d.ts +15 -0
  81. package/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.d.ts +138 -0
  82. package/lib/navigation/navigation-tree/abstract-navigation-tree.component.d.ts +3 -30
  83. package/lib/navigation/public-api.d.ts +4 -0
  84. package/lib/navigation/service/uri-resource.service.d.ts +18 -0
  85. package/lib/navigation/service/uri.service.d.ts +75 -0
  86. package/lib/panel/abstract/panel-with-immediate-data.d.ts +4 -1
  87. package/lib/panel/abstract-panel.component.d.ts +8 -2
  88. package/lib/panel/configuration/config-params.d.ts +3 -0
  89. package/lib/panel/public-api.d.ts +3 -0
  90. package/lib/panel/task-panel/abstract-task-panel.component.d.ts +11 -4
  91. package/lib/panel/task-panel/models/task-panel-context.d.ts +19 -0
  92. package/lib/panel/task-panel-single/abstract-single-task.component.d.ts +42 -0
  93. package/lib/panel/workflow-panel/abstract-workflow-panel.component.d.ts +4 -1
  94. package/lib/process/net.d.ts +6 -0
  95. package/lib/process/public-api.d.ts +2 -0
  96. package/lib/public/factories/public-factory-resolver.d.ts +2 -1
  97. package/lib/resources/engine-endpoint/public/public-task-resource.service.d.ts +0 -12
  98. package/lib/resources/interface/case.d.ts +8 -0
  99. package/lib/resources/interface/petri-net-reference.d.ts +4 -0
  100. package/lib/resources/interface/task-pair.d.ts +4 -0
  101. package/lib/resources/public-api.d.ts +1 -0
  102. package/lib/routing/routing-builder/routing-builder.service.d.ts +1 -0
  103. package/lib/side-menu/content-components/save-filter/abstract-save-filter.component.d.ts +2 -1
  104. package/lib/tabs/classes/opened-tab.d.ts +8 -1
  105. package/lib/tabs/classes/tab-label-stream.d.ts +7 -0
  106. package/lib/tabs/interfaces.d.ts +12 -1
  107. package/lib/tabs/public-api.d.ts +2 -0
  108. package/lib/task/services/assign-task.service.d.ts +4 -2
  109. package/lib/task/services/cancel-task.service.d.ts +4 -2
  110. package/lib/task/services/delegate-task.service.d.ts +5 -3
  111. package/lib/task/services/finish-task.service.d.ts +4 -2
  112. package/lib/task/services/task-data.service.d.ts +12 -3
  113. package/lib/task-content/model/task-event-notification.d.ts +7 -1
  114. package/lib/task-content/services/task-content.service.d.ts +1 -0
  115. package/lib/view/abstract/view-with-headers.d.ts +5 -1
  116. package/lib/view/case-view/abstract-case-view.d.ts +4 -2
  117. package/lib/view/case-view/tabbed-case-view.d.ts +4 -2
  118. package/lib/view/public-api.d.ts +3 -0
  119. package/lib/view/task-view/abstract-single-task-view.component.d.ts +25 -0
  120. package/lib/view/task-view/abstract-task-view.d.ts +2 -1
  121. package/lib/view/task-view/tabbed-task-view.d.ts +2 -1
  122. package/lib/view/workflow-view/abstract-workflow-view.component.d.ts +2 -1
  123. package/package.json +1 -1
  124. package/src/assets/i18n/de.json +19 -1
  125. package/src/assets/i18n/en.json +19 -1
  126. package/src/assets/i18n/sk.json +20 -2
@@ -138,8 +138,13 @@ export class AbstractFileListFieldComponent extends AbstractDataFieldComponent {
138
138
  this.state.error = true;
139
139
  this.state.uploading = false;
140
140
  this.state.progress = 0;
141
+ if (error?.error?.message) {
142
+ this._snackbar.openErrorSnackBar(this._translate.instant(error.error.message));
143
+ }
144
+ else {
145
+ this._snackbar.openErrorSnackBar(this._translate.instant('dataField.snackBar.fileUploadFailed'));
146
+ }
141
147
  this._log.error(`File [${this.dataField.stringId}] ${this.fileUploadEl.nativeElement.files.item(0)} uploading has failed!`, error);
142
- this._snackbar.openErrorSnackBar(this._translate.instant('dataField.snackBar.fileUploadFailed'));
143
148
  this.dataField.touch = true;
144
149
  this.dataField.update();
145
150
  this.fileUploadEl.nativeElement.value = '';
@@ -272,4 +277,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
272
277
  type: ViewChild,
273
278
  args: ['fileUploadInput']
274
279
  }] } });
275
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZmlsZS1saXN0LWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvZGF0YS1maWVsZHMvZmlsZS1saXN0LWZpZWxkL2Fic3RyYWN0LWZpbGUtbGlzdC1maWVsZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILFNBQVMsRUFFVCxNQUFNLEVBQ04sS0FBSyxFQUdMLFFBQVEsRUFDUixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFLdkIsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDbkYsT0FBTyxFQUFDLFlBQVksRUFBbUIsTUFBTSwyQ0FBMkMsQ0FBQztBQUN6RixPQUFPLEVBQWdCLHVCQUF1QixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFaEYsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDbEYsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBbUJwQyxNQUFNLE9BQWdCLDhCQUErQixTQUFRLDBCQUEwQjtJQTJCbkYsWUFBZ0Msb0JBQXlDLEVBQ3pDLElBQW1CLEVBQ25CLFNBQTBCLEVBQzFCLFVBQTRCLEVBQzVCLGFBQTJCLEVBQ2Msc0JBQXNDO1FBQzNHLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBTkYseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQUN6QyxTQUFJLEdBQUosSUFBSSxDQUFlO1FBQ25CLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQzFCLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQzVCLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBR3ZELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUMvQixJQUFJLENBQUMsYUFB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RTtZQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN2RjtJQUNMLENBQUM7SUFFTyxtQkFBbUI7UUFDdkIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JGLENBQUM7OzRIQXJTaUIsOEJBQThCLDZLQWdDTiw2QkFBNkI7Z0hBaENyRCw4QkFBOEIsaVFBRnRDLEVBQUU7NEZBRU0sOEJBQThCO2tCQUpuRCxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSw2QkFBNkI7b0JBQ3ZDLFFBQVEsRUFBRSxFQUFFO2lCQUNmOzswQkFpQzBCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsNkJBQTZCOzRDQWZ2RCxNQUFNO3NCQUFyQixLQUFLO2dCQUlVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBSStCLFlBQVk7c0JBQWhELFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VGFza1Jlc291cmNlU2VydmljZX0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2VuZ2luZS1lbmRwb2ludC90YXNrLXJlc291cmNlLnNlcnZpY2UnO1xuaW1wb3J0IHtMb2dnZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi9sb2dnZXIvc2VydmljZXMvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtTbmFja0JhclNlcnZpY2V9IGZyb20gJy4uLy4uL3NuYWNrLWJhci9zZXJ2aWNlcy9zbmFjay1iYXIuc2VydmljZSc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtBYnN0cmFjdERhdGFGaWVsZENvbXBvbmVudH0gZnJvbSAnLi4vbW9kZWxzL2Fic3RyYWN0LWRhdGEtZmllbGQtY29tcG9uZW50JztcbmltcG9ydCB7UHJvZ3Jlc3NUeXBlLCBQcm92aWRlclByb2dyZXNzfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvcmVzb3VyY2UtcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQge0ZpbGVMaXN0RmllbGQsIEZpbGVMaXN0RmllbGRWYWxpZGF0aW9ufSBmcm9tICcuL21vZGVscy9maWxlLWxpc3QtZmllbGQnO1xuaW1wb3J0IHtGaWxlRmllbGRWYWx1ZX0gZnJvbSAnLi4vZmlsZS1maWVsZC9tb2RlbHMvZmlsZS1maWVsZC12YWx1ZSc7XG5pbXBvcnQge05BRV9JTkZPUk1fQUJPVVRfSU5WQUxJRF9EQVRBfSBmcm9tICcuLi9tb2RlbHMvaW52YWxpZC1kYXRhLXBvbGljeS10b2tlbic7XG5pbXBvcnQge3Rha2V9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7RXZlbnRPdXRjb21lTWVzc2FnZVJlc291cmNlfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvaW50ZXJmYWNlL21lc3NhZ2UtcmVzb3VyY2UnO1xuaW1wb3J0IHtFdmVudFNlcnZpY2V9IGZyb20gJy4uLy4uL2V2ZW50L3NlcnZpY2VzL2V2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtDaGFuZ2VkRmllbGRzTWFwfSBmcm9tICcuLi8uLi9ldmVudC9zZXJ2aWNlcy9pbnRlcmZhY2VzL2NoYW5nZWQtZmllbGRzLW1hcCc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0ZpbGVGaWVsZElkQm9keX0gZnJvbSAnLi4vbW9kZWxzL2ZpbGUtZmllbGQtaWQtYm9keSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZXNTdGF0ZSB7XG4gICAgcHJvZ3Jlc3M6IG51bWJlcjtcbiAgICB1cGxvYWRpbmc6IGJvb2xlYW47XG4gICAgZG93bmxvYWRpbmc6IGJvb2xlYW47XG4gICAgY29tcGxldGVkOiBib29sZWFuO1xuICAgIGVycm9yOiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25jYy1hYnN0cmFjdC1maWxlbGlzdC1maWVsZCcsXG4gICAgdGVtcGxhdGU6ICcnXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0RmlsZUxpc3RGaWVsZENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0RGF0YUZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgcHVibGljIHVwbG9hZGVkRmlsZXM6IEFycmF5PHN0cmluZz47XG4gICAgcHVibGljIHN0YXRlOiBGaWxlc1N0YXRlO1xuICAgIHByaXZhdGUgdmFsdWVDaGFuZ2UkOiBTdWJzY3JpcHRpb247XG5cbiAgICAvKipcbiAgICAgKiBWYWx1ZXMgZnJvbSBmaWxlIGxpc3QgZmllbGQgdmFsaWRhdGlvbiAoZWcuIG1heEZpbGVzIDUpXG4gICAgICogbWF4RmlsZXNOdW1iZXIgLSBtYXhpbXVtIHVwbG9hZGFibGUgZmlsZXNcbiAgICAgKiBtYXhGaWxlc01lc3NhZ2UgLSBlcnJvciBtZXNzYWdlIGlmIG51bWJlciBvZiBmaWxlcyBpcyBleGNlZWRlZFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBtYXhGaWxlc051bWJlcjogbnVtYmVyO1xuICAgIHByb3RlY3RlZCBtYXhGaWxlc01lc3NhZ2U6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFRhc2sgbW9uZ28gc3RyaW5nIGlkIGlzIGJpbmRpbmcgcHJvcGVydHkgZnJvbSBwYXJlbnQgY29tcG9uZW50LlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyB0YXNrSWQ6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBCaW5kaW5nIHByb3BlcnR5IGFzIGluc3RhbmNlIGZyb20gcGFyZW50IGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgZGF0YUZpZWxkOiBGaWxlTGlzdEZpZWxkO1xuICAgIC8qKlxuICAgICAqIEZpbGUgcGlja2VyIGVsZW1lbnQgcmVmZXJlbmNlIGZyb20gY29tcG9uZW50IHRlbXBsYXRlIHRoYXQgaXMgaW5pdGlhbGl6ZWQgYWZ0ZXIgdmlldyBpbml0LlxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2ZpbGVVcGxvYWRJbnB1dCcpIHB1YmxpYyBmaWxlVXBsb2FkRWw6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IocHJvdGVjdGVkIF90YXNrUmVzb3VyY2VTZXJ2aWNlOiBUYXNrUmVzb3VyY2VTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2xvZzogTG9nZ2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9zbmFja2JhcjogU25hY2tCYXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9ldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChOQUVfSU5GT1JNX0FCT1VUX0lOVkFMSURfREFUQSkgaW5mb3JtQWJvdXRJbnZhbGlkRGF0YTogYm9vbGVhbiB8IG51bGwpIHtcbiAgICAgICAgc3VwZXIoaW5mb3JtQWJvdXRJbnZhbGlkRGF0YSk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLmRlZmF1bHRTdGF0ZTtcbiAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgICAgICAgdGhpcy5tYXhGaWxlc051bWJlciA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZSQgPSB0aGlzLmRhdGFGaWVsZC52YWx1ZUNoYW5nZXMoKS5zdWJzY3JpYmUobmV3VmFsdWUgPT4ge1xuICAgICAgICAgICAgdGhpcy5wYXJzZVJlc3BvbnNlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodGhpcy5kYXRhRmllbGQudmFsaWRhdGlvbnMgJiYgdGhpcy5kYXRhRmllbGQudmFsaWRhdGlvbnMubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgICBjb25zdCB2YWwgPSB0aGlzLmRhdGFGaWVsZC52YWxpZGF0aW9ucy5maW5kKHZhbGlkYXRpb24gPT5cbiAgICAgICAgICAgICAgICB2YWxpZGF0aW9uLnZhbGlkYXRpb25SdWxlLmluY2x1ZGVzKEZpbGVMaXN0RmllbGRWYWxpZGF0aW9uLk1BWF9GSUxFUylcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAodmFsICYmIHZhbC52YWxpZGF0aW9uUnVsZS5zcGxpdCgnICcpLmxlbmd0aCA9PT0gMiAmJiAhaXNOYU4ocGFyc2VJbnQodmFsLnZhbGlkYXRpb25SdWxlLnNwbGl0KCcgJylbMV0sIDEwKSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1heEZpbGVzTnVtYmVyID0gcGFyc2VJbnQodmFsLnZhbGlkYXRpb25SdWxlLnNwbGl0KCcgJylbMV0sIDEwKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1heEZpbGVzTWVzc2FnZSA9IHZhbC52YWxpZGF0aW9uTWVzc2FnZSAmJiB2YWwudmFsaWRhdGlvbk1lc3NhZ2UgIT09ICcnID8gdmFsLnZhbGlkYXRpb25NZXNzYWdlIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBmaWxlIHBpY2tlciBhbmQgaW1hZ2UgZWxlbWVudHMgdG8gW0ZpbGVGaWVsZFNlcnZpY2Vde0BsaW5rIEZpbGVGaWVsZFNlcnZpY2V9LlxuICAgICAqXG4gICAgICogSW5pdGlhbGl6ZSBmaWxlIGltYWdlLlxuICAgICAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZmlsZVVwbG9hZEVsKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50Lm9uY2hhbmdlID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNob29zZUZpbGUoKSB7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlLnVwbG9hZGluZyB8fCB0aGlzLmZvcm1Db250cm9sLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWxlVXBsb2FkRWwubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGwgYWZ0ZXIgY2xpY2sgb24gZmlsZSBmaWVsZC5cbiAgICAgKlxuICAgICAqIElmIGZpbGUgZmllbGQgaGFzIG5vIGZpbGUgdXBsb2FkZWRcbiAgICAgKiBbRmlsZXNVcGxvYWRDb21wb25lbnRde0BsaW5rIEFic3RyYWN0RmlsZXNVcGxvYWRDb21wb25lbnR9IHZpYSBbU2lkZU1lbnVde0BsaW5rIFNpZGVNZW51U2VydmljZX0gb3BlbnMuXG4gICAgICpcbiAgICAgKiBPdGhlcndpc2Ugb3BlbnMgYSBmaWxlIHBpY2tlciBmcm9tIHdoaWNoIHRoZSB1c2VyIGNhbiBzZWxlY3QgZmlsZXMuXG4gICAgICovXG4gICAgcHVibGljIHVwbG9hZCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50LmZpbGVzIHx8IHRoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQuZmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnRhc2tJZCkge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKCdGaWxlIGNhbm5vdCBiZSB1cGxvYWRlZC4gTm8gdGFzayBpcyBzZXQgdG8gdGhlIGZpZWxkLicpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50LmZpbGVzLmxlbmd0aCArIHRoaXMudXBsb2FkZWRGaWxlcy5sZW5ndGggPiB0aGlzLm1heEZpbGVzTnVtYmVyKSB7XG4gICAgICAgICAgICB0aGlzLl9zbmFja2Jhci5vcGVuRXJyb3JTbmFja0Jhcih0aGlzLm1heEZpbGVzTWVzc2FnZSA/IHRoaXMubWF4RmlsZXNNZXNzYWdlIDpcbiAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgnZGF0YUZpZWxkLnNuYWNrQmFyLm1heEZpbGVzRXhjZWVkZWQnKSArIHRoaXMubWF4RmlsZXNOdW1iZXJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZmlsZXNUb1VwbG9hZCA9IEFycmF5LmZyb20odGhpcy5maWxlVXBsb2FkRWwubmF0aXZlRWxlbWVudC5maWxlcyk7XG4gICAgICAgIGxldCBzdW0gPSAwO1xuICAgICAgICBmaWxlc1RvVXBsb2FkLmZvckVhY2goaXRlbSA9PiBzdW0gKz0gaXRlbS5zaXplKTtcbiAgICAgICAgaWYgKHRoaXMuZGF0YUZpZWxkLm1heFVwbG9hZFNpemVJbkJ5dGVzICYmXG4gICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC5tYXhVcGxvYWRTaXplSW5CeXRlcyA8IHN1bSkge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKCdGaWxlcyBjYW5ub3QgYmUgdXBsb2FkZWQuIE1heGltdW0gc2l6ZSBvZiBmaWxlcyBleGNlZWRlZC4nKTtcbiAgICAgICAgICAgIHRoaXMuX3NuYWNrYmFyLm9wZW5FcnJvclNuYWNrQmFyKFxuICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdkYXRhRmllbGQuc25hY2tCYXIubWF4RmlsZXNTaXplRXhjZWVkZWQnKSArIHRoaXMuZGF0YUZpZWxkLm1heFVwbG9hZFNpemVJbkJ5dGVzXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5maWxlVXBsb2FkRWwubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZGF0YUZpZWxkLnZhbHVlICYmIHRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWVzUGF0aHMgJiYgdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZXNQYXRocy5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWVzUGF0aHMuZm9yRWFjaChuYW1lUGF0aCA9PiB7XG4gICAgICAgICAgICAgICAgZmlsZXNUb1VwbG9hZCA9IGZpbGVzVG9VcGxvYWQuZmlsdGVyKGZpbGVUb1VwbG9hZCA9PiBmaWxlVG9VcGxvYWQubmFtZSAhPT0gbmFtZVBhdGgubmFtZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChmaWxlc1RvVXBsb2FkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcignVXNlciBjaG9zZSB0aGUgc2FtZSBmaWxlcyB0aGF0IGFyZSBhbHJlYWR5IHVwbG9hZGVkLiBVcGxvYWRpbmcgc2tpcHBlZCcpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NuYWNrYmFyLm9wZW5FcnJvclNuYWNrQmFyKHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdkYXRhRmllbGQuc25hY2tCYXIud29udFVwbG9hZFNhbWVGaWxlcycpKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMuZGVmYXVsdFN0YXRlO1xuICAgICAgICB0aGlzLnN0YXRlLnVwbG9hZGluZyA9IHRydWU7XG4gICAgICAgIGNvbnN0IGZpbGVGb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuXG4gICAgICAgIGZpbGVzVG9VcGxvYWQuZm9yRWFjaChmaWxlVG9VcGxvYWQgPT4ge1xuICAgICAgICAgICAgZmlsZUZvcm1EYXRhLmFwcGVuZCgnZmlsZXMnLCBmaWxlVG9VcGxvYWQpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZGF0YTogRmlsZUZpZWxkSWRCb2R5ID0ge307XG4gICAgICAgIGRhdGFbdGhpcy5yZXNvbHZlUGFyZW50VGFza0lkKCldID0gdGhpcy5kYXRhRmllbGQuc3RyaW5nSWQ7XG4gICAgICAgIGZpbGVGb3JtRGF0YS5hcHBlbmQoJ2RhdGEnLCBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkoZGF0YSldLCB7dHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nfSkpO1xuICAgICAgICB0aGlzLl90YXNrUmVzb3VyY2VTZXJ2aWNlLnVwbG9hZEZpbGUodGhpcy50YXNrSWQsXG4gICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC5zdHJpbmdJZCwgZmlsZUZvcm1EYXRhLCB0cnVlKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IEV2ZW50T3V0Y29tZU1lc3NhZ2VSZXNvdXJjZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICgocmVzcG9uc2UgYXMgUHJvdmlkZXJQcm9ncmVzcykudHlwZSAmJiAocmVzcG9uc2UgYXMgUHJvdmlkZXJQcm9ncmVzcykudHlwZSA9PT0gUHJvZ3Jlc3NUeXBlLlVQTE9BRCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnByb2dyZXNzID0gKHJlc3BvbnNlIGFzIFByb3ZpZGVyUHJvZ3Jlc3MpLnByb2dyZXNzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5kZWJ1ZyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGBGaWxlcyBbJHt0aGlzLmRhdGFGaWVsZC5zdHJpbmdJZH1dIHdlcmUgc3VjY2Vzc2Z1bGx5IHVwbG9hZGVkYFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFuZ2VkRmllbGRzTWFwOiBDaGFuZ2VkRmllbGRzTWFwID0gdGhpcy5fZXZlbnRTZXJ2aWNlLnBhcnNlQ2hhbmdlZEZpZWxkc0Zyb21PdXRjb21lVHJlZShyZXNwb25zZS5vdXRjb21lKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQuZW1pdENoYW5nZWRGaWVsZHMoY2hhbmdlZEZpZWxkc01hcCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuY29tcGxldGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5lcnJvciA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnVwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnByb2dyZXNzID0gMDtcbiAgICAgICAgICAgICAgICAgICAgZmlsZXNUb1VwbG9hZC5mb3JFYWNoKGZpbGVUb1VwbG9hZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMucHVzaChmaWxlVG9VcGxvYWQubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lc1BhdGhzLnB1c2goe25hbWU6IGZpbGVUb1VwbG9hZC5uYW1lfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWVzUGF0aHMubWFwKG5hbWVQYXRoID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmFtZVBhdGhbJ25hbWUnXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLmpvaW4oJy8nKSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC50b3VjaCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLnVwZGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuY29tcGxldGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnVwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUucHJvZ3Jlc3MgPSAwO1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgYEZpbGUgWyR7dGhpcy5kYXRhRmllbGQuc3RyaW5nSWR9XSAke3RoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQuZmlsZXMuaXRlbSgwKX0gdXBsb2FkaW5nIGhhcyBmYWlsZWQhYCwgZXJyb3JcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NuYWNrYmFyLm9wZW5FcnJvclNuYWNrQmFyKHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdkYXRhRmllbGQuc25hY2tCYXIuZmlsZVVwbG9hZEZhaWxlZCcpKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC50b3VjaCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQudXBkYXRlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxlVXBsb2FkRWwubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGRvd25sb2FkKGZpbGVOYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRhdGFGaWVsZC52YWx1ZSB8fCAhdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZXNQYXRocyB8fFxuICAgICAgICAgICAgIXRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWVzUGF0aHMuZmluZChuYW1lUGF0aCA9PiBuYW1lUGF0aC5uYW1lID09PSBmaWxlTmFtZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMudGFza0lkKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoJ0ZpbGUgY2Fubm90IGJlIGRvd25sb2FkZWQuIE5vIHRhc2sgaXMgc2V0IHRvIHRoZSBmaWVsZC4nKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLmRlZmF1bHRTdGF0ZTtcbiAgICAgICAgdGhpcy5zdGF0ZS5kb3dubG9hZGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuX3Rhc2tSZXNvdXJjZVNlcnZpY2UuZG93bmxvYWRGaWxlKHRoaXMucmVzb2x2ZVBhcmVudFRhc2tJZCgpLFxuICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQuc3RyaW5nSWQsIGZpbGVOYW1lKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgaWYgKChyZXNwb25zZSBhcyBQcm92aWRlclByb2dyZXNzKS50eXBlICYmIChyZXNwb25zZSBhcyBQcm92aWRlclByb2dyZXNzKS50eXBlID09PSBQcm9ncmVzc1R5cGUuRE9XTkxPQUQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnByb2dyZXNzID0gKHJlc3BvbnNlIGFzIFByb3ZpZGVyUHJvZ3Jlc3MpLnByb2dyZXNzO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZGVidWcoYEZpbGUgWyR7dGhpcy5kYXRhRmllbGQuc3RyaW5nSWR9XSAke2ZpbGVOYW1lfSB3YXMgc3VjY2Vzc2Z1bGx5IGRvd25sb2FkZWRgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRvd25sb2FkVmlhQW5jaG9yKHJlc3BvbnNlIGFzIEJsb2IsIGZpbGVOYW1lKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmRvd25sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5wcm9ncmVzcyA9IDA7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQuZG93bmxvYWRlZC5wdXNoKGZpbGVOYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKGBEb3dubG9hZGluZyBmaWxlIFske3RoaXMuZGF0YUZpZWxkLnN0cmluZ0lkfV0gJHtmaWxlTmFtZX0gaGFzIGZhaWxlZCFgLCBlcnJvcik7XG4gICAgICAgICAgICB0aGlzLl9zbmFja2Jhci5vcGVuRXJyb3JTbmFja0JhcihmaWxlTmFtZSArICcgJyArIHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdkYXRhRmllbGQuc25hY2tCYXIuZG93bmxvYWRGYWlsJykpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS5kb3dubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS5wcm9ncmVzcyA9IDA7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBkb3dubG9hZFZpYUFuY2hvcihibG9iOiBCbG9iLCBmaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7XG4gICAgICAgIGEuc2V0QXR0cmlidXRlKCdzdHlsZScsICdkaXNwbGF5OiBub25lJyk7XG4gICAgICAgIGJsb2IgPSBuZXcgQmxvYihbYmxvYl0sIHt0eXBlOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJ30pO1xuICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgYS5ocmVmID0gdXJsO1xuICAgICAgICBhLmRvd25sb2FkID0gZmlsZU5hbWU7XG4gICAgICAgIGEuY2xpY2soKTtcbiAgICAgICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVsZXRlRmlsZShmaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdGhpcy5kYXRhRmllbGQudmFsdWUgfHwgIXRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWVzUGF0aHMgfHxcbiAgICAgICAgICAgICF0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lc1BhdGhzLmZpbmQobmFtZVBhdGggPT4gbmFtZVBhdGgubmFtZSA9PT0gZmlsZU5hbWUpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnRhc2tJZCkge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKCdGaWxlIGNhbm5vdCBiZSBkZWxldGVkLiBObyB0YXNrIGlzIHNldCB0byB0aGUgZmllbGQuJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl90YXNrUmVzb3VyY2VTZXJ2aWNlLmRlbGV0ZUZpbGUodGhpcy50YXNrSWQsXG4gICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC5zdHJpbmdJZCwgZmlsZU5hbWUpLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzLmZpbHRlcih1cGxvYWRlZEZpbGUgPT4gdXBsb2FkZWRGaWxlICE9PSBmaWxlTmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWVzUGF0aHMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZXNQYXRocyA9IHRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWVzUGF0aHMuZmlsdGVyKG5hbWVQYXRoID0+IG5hbWVQYXRoLm5hbWUgIT09IGZpbGVOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lc1BhdGhzLm1hcChuYW1lUGF0aCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmFtZVBhdGhbJ25hbWUnXTtcbiAgICAgICAgICAgICAgICAgICAgfSkuam9pbignLycpKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQudXBkYXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLmRvd25sb2FkZWQgPSB0aGlzLmRhdGFGaWVsZC5kb3dubG9hZGVkLmZpbHRlcihvbmUgPT4gb25lICE9PSBmaWxlTmFtZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmRlYnVnKGBGaWxlIFske3RoaXMuZGF0YUZpZWxkLnN0cmluZ0lkfV0gJHtmaWxlTmFtZX0gd2FzIHN1Y2Nlc3NmdWxseSBkZWxldGVkYCk7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcihgRGVsZXRpbmcgZmlsZSBbJHt0aGlzLmRhdGFGaWVsZC5zdHJpbmdJZH1dICR7ZmlsZU5hbWV9IGhhcyBmYWlsZWQhYCwgcmVzcG9uc2UuZXJyb3IpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NuYWNrYmFyLm9wZW5FcnJvclNuYWNrQmFyKFxuICAgICAgICAgICAgICAgICAgICBmaWxlTmFtZSArICcgJyArIHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdkYXRhRmllbGQuc25hY2tCYXIuZmlsZURlbGV0ZUZhaWxlZCcpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBkZWZhdWx0U3RhdGUoKTogRmlsZXNTdGF0ZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcm9ncmVzczogMCxcbiAgICAgICAgICAgIGNvbXBsZXRlZDogZmFsc2UsXG4gICAgICAgICAgICBlcnJvcjogZmFsc2UsXG4gICAgICAgICAgICB1cGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgZG93bmxvYWRpbmc6IGZhbHNlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0IGRpc3BsYXkgbmFtZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0RGlzcGxheU5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCEhdGhpcy5kYXRhRmllbGQgJiYgISF0aGlzLmRhdGFGaWVsZC5wbGFjZWhvbGRlcikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YUZpZWxkLnBsYWNlaG9sZGVyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgnZGF0YUZpZWxkLmZpbGUubm9GaWxlJyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHBhcnNlUmVzcG9uc2UoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRhdGFGaWVsZC52YWx1ZSkge1xuICAgICAgICAgICAgaWYgKCEhdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZXNQYXRocyAmJiB0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lc1BhdGhzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZXNQYXRocy5mb3JFYWNoKG5hbWVQYXRoID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzLnB1c2gobmFtZVBhdGgubmFtZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWVzUGF0aHMgPSBuZXcgQXJyYXk8RmlsZUZpZWxkVmFsdWU+KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSB0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lc1BhdGhzLm1hcChuYW1lUGF0aCA9PiBuYW1lUGF0aC5uYW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmVzb2x2ZVBhcmVudFRhc2tJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gISF0aGlzLmRhdGFGaWVsZC5wYXJlbnRUYXNrSWQgPyB0aGlzLmRhdGFGaWVsZC5wYXJlbnRUYXNrSWQgOiB0aGlzLnRhc2tJZDtcbiAgICB9XG59XG4iXX0=
280
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZmlsZS1saXN0LWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvZGF0YS1maWVsZHMvZmlsZS1saXN0LWZpZWxkL2Fic3RyYWN0LWZpbGUtbGlzdC1maWVsZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILFNBQVMsRUFFVCxNQUFNLEVBQ04sS0FBSyxFQUdMLFFBQVEsRUFDUixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFLdkIsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDbkYsT0FBTyxFQUFDLFlBQVksRUFBbUIsTUFBTSwyQ0FBMkMsQ0FBQztBQUN6RixPQUFPLEVBQWdCLHVCQUF1QixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFaEYsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDbEYsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBbUJwQyxNQUFNLE9BQWdCLDhCQUErQixTQUFRLDBCQUEwQjtJQTJCbkYsWUFBZ0Msb0JBQXlDLEVBQ3pDLElBQW1CLEVBQ25CLFNBQTBCLEVBQzFCLFVBQTRCLEVBQzVCLGFBQTJCLEVBQ2Msc0JBQXNDO1FBQzNHLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBTkYseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQUN6QyxTQUFJLEdBQUosSUFBSSxDQUFlO1FBQ25CLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQzFCLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQzVCLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBR3ZELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUMvQixJQUFJLENBQUMsYUFB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O29CQUMvQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzNDLENBQUMsQ0FBQyxDQUFDO2FBQ047aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLElBQUksS0FBSyxFQUFrQixDQUFDO2FBQ2pFO1lBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3ZGO0lBQ0wsQ0FBQztJQUVPLG1CQUFtQjtRQUN2QixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckYsQ0FBQzs7NEhBelNpQiw4QkFBOEIsNktBZ0NOLDZCQUE2QjtnSEFoQ3JELDhCQUE4QixpUUFGdEMsRUFBRTs0RkFFTSw4QkFBOEI7a0JBSm5ELFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLDZCQUE2QjtvQkFDdkMsUUFBUSxFQUFFLEVBQUU7aUJBQ2Y7OzBCQWlDMEIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyw2QkFBNkI7NENBZnZELE1BQU07c0JBQXJCLEtBQUs7Z0JBSVUsU0FBUztzQkFBeEIsS0FBSztnQkFJK0IsWUFBWTtzQkFBaEQsU0FBUzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUYXNrUmVzb3VyY2VTZXJ2aWNlfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvZW5naW5lLWVuZHBvaW50L3Rhc2stcmVzb3VyY2Uuc2VydmljZSc7XG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gJy4uLy4uL2xvZ2dlci9zZXJ2aWNlcy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQge1NuYWNrQmFyU2VydmljZX0gZnJvbSAnLi4vLi4vc25hY2stYmFyL3NlcnZpY2VzL3NuYWNrLWJhci5zZXJ2aWNlJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0Fic3RyYWN0RGF0YUZpZWxkQ29tcG9uZW50fSBmcm9tICcuLi9tb2RlbHMvYWJzdHJhY3QtZGF0YS1maWVsZC1jb21wb25lbnQnO1xuaW1wb3J0IHtQcm9ncmVzc1R5cGUsIFByb3ZpZGVyUHJvZ3Jlc3N9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9yZXNvdXJjZS1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7RmlsZUxpc3RGaWVsZCwgRmlsZUxpc3RGaWVsZFZhbGlkYXRpb259IGZyb20gJy4vbW9kZWxzL2ZpbGUtbGlzdC1maWVsZCc7XG5pbXBvcnQge0ZpbGVGaWVsZFZhbHVlfSBmcm9tICcuLi9maWxlLWZpZWxkL21vZGVscy9maWxlLWZpZWxkLXZhbHVlJztcbmltcG9ydCB7TkFFX0lORk9STV9BQk9VVF9JTlZBTElEX0RBVEF9IGZyb20gJy4uL21vZGVscy9pbnZhbGlkLWRhdGEtcG9saWN5LXRva2VuJztcbmltcG9ydCB7dGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtFdmVudE91dGNvbWVNZXNzYWdlUmVzb3VyY2V9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvbWVzc2FnZS1yZXNvdXJjZSc7XG5pbXBvcnQge0V2ZW50U2VydmljZX0gZnJvbSAnLi4vLi4vZXZlbnQvc2VydmljZXMvZXZlbnQuc2VydmljZSc7XG5pbXBvcnQge0NoYW5nZWRGaWVsZHNNYXB9IGZyb20gJy4uLy4uL2V2ZW50L3NlcnZpY2VzL2ludGVyZmFjZXMvY2hhbmdlZC1maWVsZHMtbWFwJztcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7RmlsZUZpZWxkSWRCb2R5fSBmcm9tICcuLi9tb2RlbHMvZmlsZS1maWVsZC1pZC1ib2R5JztcblxuZXhwb3J0IGludGVyZmFjZSBGaWxlc1N0YXRlIHtcbiAgICBwcm9ncmVzczogbnVtYmVyO1xuICAgIHVwbG9hZGluZzogYm9vbGVhbjtcbiAgICBkb3dubG9hZGluZzogYm9vbGVhbjtcbiAgICBjb21wbGV0ZWQ6IGJvb2xlYW47XG4gICAgZXJyb3I6IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmNjLWFic3RyYWN0LWZpbGVsaXN0LWZpZWxkJyxcbiAgICB0ZW1wbGF0ZTogJydcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RGaWxlTGlzdEZpZWxkQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3REYXRhRmllbGRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgICBwdWJsaWMgdXBsb2FkZWRGaWxlczogQXJyYXk8c3RyaW5nPjtcbiAgICBwdWJsaWMgc3RhdGU6IEZpbGVzU3RhdGU7XG4gICAgcHJpdmF0ZSB2YWx1ZUNoYW5nZSQ6IFN1YnNjcmlwdGlvbjtcblxuICAgIC8qKlxuICAgICAqIFZhbHVlcyBmcm9tIGZpbGUgbGlzdCBmaWVsZCB2YWxpZGF0aW9uIChlZy4gbWF4RmlsZXMgNSlcbiAgICAgKiBtYXhGaWxlc051bWJlciAtIG1heGltdW0gdXBsb2FkYWJsZSBmaWxlc1xuICAgICAqIG1heEZpbGVzTWVzc2FnZSAtIGVycm9yIG1lc3NhZ2UgaWYgbnVtYmVyIG9mIGZpbGVzIGlzIGV4Y2VlZGVkXG4gICAgICovXG4gICAgcHJvdGVjdGVkIG1heEZpbGVzTnVtYmVyOiBudW1iZXI7XG4gICAgcHJvdGVjdGVkIG1heEZpbGVzTWVzc2FnZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVGFzayBtb25nbyBzdHJpbmcgaWQgaXMgYmluZGluZyBwcm9wZXJ0eSBmcm9tIHBhcmVudCBjb21wb25lbnQuXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHRhc2tJZDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEJpbmRpbmcgcHJvcGVydHkgYXMgaW5zdGFuY2UgZnJvbSBwYXJlbnQgY29tcG9uZW50LlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBkYXRhRmllbGQ6IEZpbGVMaXN0RmllbGQ7XG4gICAgLyoqXG4gICAgICogRmlsZSBwaWNrZXIgZWxlbWVudCByZWZlcmVuY2UgZnJvbSBjb21wb25lbnQgdGVtcGxhdGUgdGhhdCBpcyBpbml0aWFsaXplZCBhZnRlciB2aWV3IGluaXQuXG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgnZmlsZVVwbG9hZElucHV0JykgcHVibGljIGZpbGVVcGxvYWRFbDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX3Rhc2tSZXNvdXJjZVNlcnZpY2U6IFRhc2tSZXNvdXJjZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfbG9nOiBMb2dnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3NuYWNrYmFyOiBTbmFja0JhclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2V2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE5BRV9JTkZPUk1fQUJPVVRfSU5WQUxJRF9EQVRBKSBpbmZvcm1BYm91dEludmFsaWREYXRhOiBib29sZWFuIHwgbnVsbCkge1xuICAgICAgICBzdXBlcihpbmZvcm1BYm91dEludmFsaWREYXRhKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMuZGVmYXVsdFN0YXRlO1xuICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgICAgICB0aGlzLm1heEZpbGVzTnVtYmVyID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlJCA9IHRoaXMuZGF0YUZpZWxkLnZhbHVlQ2hhbmdlcygpLnN1YnNjcmliZShuZXdWYWx1ZSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBhcnNlUmVzcG9uc2UoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0aGlzLmRhdGFGaWVsZC52YWxpZGF0aW9ucyAmJiB0aGlzLmRhdGFGaWVsZC52YWxpZGF0aW9ucy5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IHRoaXMuZGF0YUZpZWxkLnZhbGlkYXRpb25zLmZpbmQodmFsaWRhdGlvbiA9PlxuICAgICAgICAgICAgICAgIHZhbGlkYXRpb24udmFsaWRhdGlvblJ1bGUuaW5jbHVkZXMoRmlsZUxpc3RGaWVsZFZhbGlkYXRpb24uTUFYX0ZJTEVTKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmICh2YWwgJiYgdmFsLnZhbGlkYXRpb25SdWxlLnNwbGl0KCcgJykubGVuZ3RoID09PSAyICYmICFpc05hTihwYXJzZUludCh2YWwudmFsaWRhdGlvblJ1bGUuc3BsaXQoJyAnKVsxXSwgMTApKSkge1xuICAgICAgICAgICAgICAgIHRoaXMubWF4RmlsZXNOdW1iZXIgPSBwYXJzZUludCh2YWwudmFsaWRhdGlvblJ1bGUuc3BsaXQoJyAnKVsxXSwgMTApO1xuICAgICAgICAgICAgICAgIHRoaXMubWF4RmlsZXNNZXNzYWdlID0gdmFsLnZhbGlkYXRpb25NZXNzYWdlICYmIHZhbC52YWxpZGF0aW9uTWVzc2FnZSAhPT0gJycgPyB2YWwudmFsaWRhdGlvbk1lc3NhZ2UgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IGZpbGUgcGlja2VyIGFuZCBpbWFnZSBlbGVtZW50cyB0byBbRmlsZUZpZWxkU2VydmljZV17QGxpbmsgRmlsZUZpZWxkU2VydmljZX0uXG4gICAgICpcbiAgICAgKiBJbml0aWFsaXplIGZpbGUgaW1hZ2UuXG4gICAgICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5maWxlVXBsb2FkRWwpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQub25jaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWQoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZSQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2hvb3NlRmlsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUudXBsb2FkaW5nIHx8IHRoaXMuZm9ybUNvbnRyb2wuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsbCBhZnRlciBjbGljayBvbiBmaWxlIGZpZWxkLlxuICAgICAqXG4gICAgICogSWYgZmlsZSBmaWVsZCBoYXMgbm8gZmlsZSB1cGxvYWRlZFxuICAgICAqIFtGaWxlc1VwbG9hZENvbXBvbmVudF17QGxpbmsgQWJzdHJhY3RGaWxlc1VwbG9hZENvbXBvbmVudH0gdmlhIFtTaWRlTWVudV17QGxpbmsgU2lkZU1lbnVTZXJ2aWNlfSBvcGVucy5cbiAgICAgKlxuICAgICAqIE90aGVyd2lzZSBvcGVucyBhIGZpbGUgcGlja2VyIGZyb20gd2hpY2ggdGhlIHVzZXIgY2FuIHNlbGVjdCBmaWxlcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgdXBsb2FkKCkge1xuICAgICAgICBpZiAoIXRoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQuZmlsZXMgfHwgdGhpcy5maWxlVXBsb2FkRWwubmF0aXZlRWxlbWVudC5maWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMudGFza0lkKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoJ0ZpbGUgY2Fubm90IGJlIHVwbG9hZGVkLiBObyB0YXNrIGlzIHNldCB0byB0aGUgZmllbGQuJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQuZmlsZXMubGVuZ3RoICsgdGhpcy51cGxvYWRlZEZpbGVzLmxlbmd0aCA+IHRoaXMubWF4RmlsZXNOdW1iZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX3NuYWNrYmFyLm9wZW5FcnJvclNuYWNrQmFyKHRoaXMubWF4RmlsZXNNZXNzYWdlID8gdGhpcy5tYXhGaWxlc01lc3NhZ2UgOlxuICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdkYXRhRmllbGQuc25hY2tCYXIubWF4RmlsZXNFeGNlZWRlZCcpICsgdGhpcy5tYXhGaWxlc051bWJlclxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBmaWxlc1RvVXBsb2FkID0gQXJyYXkuZnJvbSh0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50LmZpbGVzKTtcbiAgICAgICAgbGV0IHN1bSA9IDA7XG4gICAgICAgIGZpbGVzVG9VcGxvYWQuZm9yRWFjaChpdGVtID0+IHN1bSArPSBpdGVtLnNpemUpO1xuICAgICAgICBpZiAodGhpcy5kYXRhRmllbGQubWF4VXBsb2FkU2l6ZUluQnl0ZXMgJiZcbiAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLm1heFVwbG9hZFNpemVJbkJ5dGVzIDwgc3VtKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoJ0ZpbGVzIGNhbm5vdCBiZSB1cGxvYWRlZC4gTWF4aW11bSBzaXplIG9mIGZpbGVzIGV4Y2VlZGVkLicpO1xuICAgICAgICAgICAgdGhpcy5fc25hY2tiYXIub3BlbkVycm9yU25hY2tCYXIoXG4gICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ2RhdGFGaWVsZC5zbmFja0Jhci5tYXhGaWxlc1NpemVFeGNlZWRlZCcpICsgdGhpcy5kYXRhRmllbGQubWF4VXBsb2FkU2l6ZUluQnl0ZXNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5kYXRhRmllbGQudmFsdWUgJiYgdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZXNQYXRocyAmJiB0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lc1BhdGhzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZXNQYXRocy5mb3JFYWNoKG5hbWVQYXRoID0+IHtcbiAgICAgICAgICAgICAgICBmaWxlc1RvVXBsb2FkID0gZmlsZXNUb1VwbG9hZC5maWx0ZXIoZmlsZVRvVXBsb2FkID0+IGZpbGVUb1VwbG9hZC5uYW1lICE9PSBuYW1lUGF0aC5uYW1lKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKGZpbGVzVG9VcGxvYWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKCdVc2VyIGNob3NlIHRoZSBzYW1lIGZpbGVzIHRoYXQgYXJlIGFscmVhZHkgdXBsb2FkZWQuIFVwbG9hZGluZyBza2lwcGVkJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc25hY2tiYXIub3BlbkVycm9yU25hY2tCYXIodGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ2RhdGFGaWVsZC5zbmFja0Jhci53b250VXBsb2FkU2FtZUZpbGVzJykpO1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN0YXRlID0gdGhpcy5kZWZhdWx0U3RhdGU7XG4gICAgICAgIHRoaXMuc3RhdGUudXBsb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgZmlsZUZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG5cbiAgICAgICAgZmlsZXNUb1VwbG9hZC5mb3JFYWNoKGZpbGVUb1VwbG9hZCA9PiB7XG4gICAgICAgICAgICBmaWxlRm9ybURhdGEuYXBwZW5kKCdmaWxlcycsIGZpbGVUb1VwbG9hZCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBkYXRhOiBGaWxlRmllbGRJZEJvZHkgPSB7fTtcbiAgICAgICAgZGF0YVt0aGlzLnJlc29sdmVQYXJlbnRUYXNrSWQoKV0gPSB0aGlzLmRhdGFGaWVsZC5zdHJpbmdJZDtcbiAgICAgICAgZmlsZUZvcm1EYXRhLmFwcGVuZCgnZGF0YScsIG5ldyBCbG9iKFtKU09OLnN0cmluZ2lmeShkYXRhKV0sIHt0eXBlOiAnYXBwbGljYXRpb24vanNvbid9KSk7XG4gICAgICAgIHRoaXMuX3Rhc2tSZXNvdXJjZVNlcnZpY2UudXBsb2FkRmlsZSh0aGlzLnRhc2tJZCxcbiAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLnN0cmluZ0lkLCBmaWxlRm9ybURhdGEsIHRydWUpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogRXZlbnRPdXRjb21lTWVzc2FnZVJlc291cmNlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKChyZXNwb25zZSBhcyBQcm92aWRlclByb2dyZXNzKS50eXBlICYmIChyZXNwb25zZSBhcyBQcm92aWRlclByb2dyZXNzKS50eXBlID09PSBQcm9ncmVzc1R5cGUuVVBMT0FEKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUucHJvZ3Jlc3MgPSAocmVzcG9uc2UgYXMgUHJvdmlkZXJQcm9ncmVzcykucHJvZ3Jlc3M7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nLmRlYnVnKFxuICAgICAgICAgICAgICAgICAgICAgICAgYEZpbGVzIFske3RoaXMuZGF0YUZpZWxkLnN0cmluZ0lkfV0gd2VyZSBzdWNjZXNzZnVsbHkgdXBsb2FkZWRgXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYW5nZWRGaWVsZHNNYXA6IENoYW5nZWRGaWVsZHNNYXAgPSB0aGlzLl9ldmVudFNlcnZpY2UucGFyc2VDaGFuZ2VkRmllbGRzRnJvbU91dGNvbWVUcmVlKHJlc3BvbnNlLm91dGNvbWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC5lbWl0Q2hhbmdlZEZpZWxkcyhjaGFuZ2VkRmllbGRzTWFwKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5jb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmVycm9yID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUudXBsb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUucHJvZ3Jlc3MgPSAwO1xuICAgICAgICAgICAgICAgICAgICBmaWxlc1RvVXBsb2FkLmZvckVhY2goZmlsZVRvVXBsb2FkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlcy5wdXNoKGZpbGVUb1VwbG9hZC5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWVzUGF0aHMucHVzaCh7bmFtZTogZmlsZVRvVXBsb2FkLm5hbWV9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5kYXRhRmllbGQudmFsdWUubmFtZXNQYXRocy5tYXAobmFtZVBhdGggPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuYW1lUGF0aFsnbmFtZSddO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSkuam9pbignLycpKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLnRvdWNoID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQudXBkYXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5jb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuZXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUudXBsb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5wcm9ncmVzcyA9IDA7XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yPy5lcnJvcj8ubWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zbmFja2Jhci5vcGVuRXJyb3JTbmFja0Jhcih0aGlzLl90cmFuc2xhdGUuaW5zdGFudChlcnJvci5lcnJvci5tZXNzYWdlKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc25hY2tiYXIub3BlbkVycm9yU25hY2tCYXIodGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ2RhdGFGaWVsZC5zbmFja0Jhci5maWxlVXBsb2FkRmFpbGVkJykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGBGaWxlIFske3RoaXMuZGF0YUZpZWxkLnN0cmluZ0lkfV0gJHt0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50LmZpbGVzLml0ZW0oMCl9IHVwbG9hZGluZyBoYXMgZmFpbGVkIWAsIGVycm9yXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC50b3VjaCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQudXBkYXRlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxlVXBsb2FkRWwubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGRvd25sb2FkKGZpbGVOYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRhdGFGaWVsZC52YWx1ZSB8fCAhdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZXNQYXRocyB8fFxuICAgICAgICAgICAgIXRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWVzUGF0aHMuZmluZChuYW1lUGF0aCA9PiBuYW1lUGF0aC5uYW1lID09PSBmaWxlTmFtZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMudGFza0lkKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoJ0ZpbGUgY2Fubm90IGJlIGRvd25sb2FkZWQuIE5vIHRhc2sgaXMgc2V0IHRvIHRoZSBmaWVsZC4nKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLmRlZmF1bHRTdGF0ZTtcbiAgICAgICAgdGhpcy5zdGF0ZS5kb3dubG9hZGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuX3Rhc2tSZXNvdXJjZVNlcnZpY2UuZG93bmxvYWRGaWxlKHRoaXMucmVzb2x2ZVBhcmVudFRhc2tJZCgpLFxuICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQuc3RyaW5nSWQsIGZpbGVOYW1lKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgaWYgKChyZXNwb25zZSBhcyBQcm92aWRlclByb2dyZXNzKS50eXBlICYmIChyZXNwb25zZSBhcyBQcm92aWRlclByb2dyZXNzKS50eXBlID09PSBQcm9ncmVzc1R5cGUuRE9XTkxPQUQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnByb2dyZXNzID0gKHJlc3BvbnNlIGFzIFByb3ZpZGVyUHJvZ3Jlc3MpLnByb2dyZXNzO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZGVidWcoYEZpbGUgWyR7dGhpcy5kYXRhRmllbGQuc3RyaW5nSWR9XSAke2ZpbGVOYW1lfSB3YXMgc3VjY2Vzc2Z1bGx5IGRvd25sb2FkZWRgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRvd25sb2FkVmlhQW5jaG9yKHJlc3BvbnNlIGFzIEJsb2IsIGZpbGVOYW1lKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmRvd25sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5wcm9ncmVzcyA9IDA7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQuZG93bmxvYWRlZC5wdXNoKGZpbGVOYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKGBEb3dubG9hZGluZyBmaWxlIFske3RoaXMuZGF0YUZpZWxkLnN0cmluZ0lkfV0gJHtmaWxlTmFtZX0gaGFzIGZhaWxlZCFgLCBlcnJvcik7XG4gICAgICAgICAgICB0aGlzLl9zbmFja2Jhci5vcGVuRXJyb3JTbmFja0JhcihmaWxlTmFtZSArICcgJyArIHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdkYXRhRmllbGQuc25hY2tCYXIuZG93bmxvYWRGYWlsJykpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS5kb3dubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS5wcm9ncmVzcyA9IDA7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBkb3dubG9hZFZpYUFuY2hvcihibG9iOiBCbG9iLCBmaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7XG4gICAgICAgIGEuc2V0QXR0cmlidXRlKCdzdHlsZScsICdkaXNwbGF5OiBub25lJyk7XG4gICAgICAgIGJsb2IgPSBuZXcgQmxvYihbYmxvYl0sIHt0eXBlOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJ30pO1xuICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgYS5ocmVmID0gdXJsO1xuICAgICAgICBhLmRvd25sb2FkID0gZmlsZU5hbWU7XG4gICAgICAgIGEuY2xpY2soKTtcbiAgICAgICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVsZXRlRmlsZShmaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdGhpcy5kYXRhRmllbGQudmFsdWUgfHwgIXRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWVzUGF0aHMgfHxcbiAgICAgICAgICAgICF0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lc1BhdGhzLmZpbmQobmFtZVBhdGggPT4gbmFtZVBhdGgubmFtZSA9PT0gZmlsZU5hbWUpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnRhc2tJZCkge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKCdGaWxlIGNhbm5vdCBiZSBkZWxldGVkLiBObyB0YXNrIGlzIHNldCB0byB0aGUgZmllbGQuJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl90YXNrUmVzb3VyY2VTZXJ2aWNlLmRlbGV0ZUZpbGUodGhpcy50YXNrSWQsXG4gICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC5zdHJpbmdJZCwgZmlsZU5hbWUpLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzID0gdGhpcy51cGxvYWRlZEZpbGVzLmZpbHRlcih1cGxvYWRlZEZpbGUgPT4gdXBsb2FkZWRGaWxlICE9PSBmaWxlTmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWVzUGF0aHMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZXNQYXRocyA9IHRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWVzUGF0aHMuZmlsdGVyKG5hbWVQYXRoID0+IG5hbWVQYXRoLm5hbWUgIT09IGZpbGVOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lc1BhdGhzLm1hcChuYW1lUGF0aCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmFtZVBhdGhbJ25hbWUnXTtcbiAgICAgICAgICAgICAgICAgICAgfSkuam9pbignLycpKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQudXBkYXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLmRvd25sb2FkZWQgPSB0aGlzLmRhdGFGaWVsZC5kb3dubG9hZGVkLmZpbHRlcihvbmUgPT4gb25lICE9PSBmaWxlTmFtZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmRlYnVnKGBGaWxlIFske3RoaXMuZGF0YUZpZWxkLnN0cmluZ0lkfV0gJHtmaWxlTmFtZX0gd2FzIHN1Y2Nlc3NmdWxseSBkZWxldGVkYCk7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcihgRGVsZXRpbmcgZmlsZSBbJHt0aGlzLmRhdGFGaWVsZC5zdHJpbmdJZH1dICR7ZmlsZU5hbWV9IGhhcyBmYWlsZWQhYCwgcmVzcG9uc2UuZXJyb3IpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NuYWNrYmFyLm9wZW5FcnJvclNuYWNrQmFyKFxuICAgICAgICAgICAgICAgICAgICBmaWxlTmFtZSArICcgJyArIHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdkYXRhRmllbGQuc25hY2tCYXIuZmlsZURlbGV0ZUZhaWxlZCcpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBkZWZhdWx0U3RhdGUoKTogRmlsZXNTdGF0ZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcm9ncmVzczogMCxcbiAgICAgICAgICAgIGNvbXBsZXRlZDogZmFsc2UsXG4gICAgICAgICAgICBlcnJvcjogZmFsc2UsXG4gICAgICAgICAgICB1cGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgZG93bmxvYWRpbmc6IGZhbHNlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0IGRpc3BsYXkgbmFtZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0RGlzcGxheU5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCEhdGhpcy5kYXRhRmllbGQgJiYgISF0aGlzLmRhdGFGaWVsZC5wbGFjZWhvbGRlcikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YUZpZWxkLnBsYWNlaG9sZGVyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgnZGF0YUZpZWxkLmZpbGUubm9GaWxlJyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHBhcnNlUmVzcG9uc2UoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRhdGFGaWVsZC52YWx1ZSkge1xuICAgICAgICAgICAgaWYgKCEhdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZXNQYXRocyAmJiB0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lc1BhdGhzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZXNQYXRocy5mb3JFYWNoKG5hbWVQYXRoID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzLnB1c2gobmFtZVBhdGgubmFtZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWVzUGF0aHMgPSBuZXcgQXJyYXk8RmlsZUZpZWxkVmFsdWU+KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSB0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lc1BhdGhzLm1hcChuYW1lUGF0aCA9PiBuYW1lUGF0aC5uYW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmVzb2x2ZVBhcmVudFRhc2tJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gISF0aGlzLmRhdGFGaWVsZC5wYXJlbnRUYXNrSWQgPyB0aGlzLmRhdGFGaWVsZC5wYXJlbnRUYXNrSWQgOiB0aGlzLnRhc2tJZDtcbiAgICB9XG59XG4iXX0=
@@ -33,12 +33,12 @@ export class PromptDialogComponent extends AbstractDialog {
33
33
  }
34
34
  }
35
35
  PromptDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PromptDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
36
- PromptDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: PromptDialogComponent, selector: "ncc-question-dialog-with-answer", usesInheritance: true, ngImport: i0, template: "<h1 mat-dialog-title>{{data.title}}</h1>\n\n<div mat-dialog-content class=\"dialog-container dialog-content-margin\">\n <span>{{data.content}}</span>\n <br>\n <mat-form-field class=\"dialog-prompt-margin\">\n <mat-label>{{data.placeholder}}</mat-label>\n <input matInput [(ngModel)]=\"prompt\" (ngModelChange)=\"disableButton = !prompt || prompt.trim().length === 0\">\n </mat-form-field>\n</div>\n\n<mat-dialog-actions fxLayoutAlign=\"end\">\n <button mat-button (click)=\"onClose(false)\">{{ 'dialog.close' | translate}}</button>\n <button mat-flat-button color=\"primary\" [disabled]=\"disableButton\" (click)=\"onClose(true)\">{{ 'dialog.submit' | translate}}</button>\n</mat-dialog-actions>\n", styles: [".dialog-prompt-margin{margin-top:16px}\n"], components: [{ type: i2.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i2.MatLabel, selector: "mat-label" }, { type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i6.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }], pipes: { "translate": i7.TranslatePipe } });
36
+ PromptDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: PromptDialogComponent, selector: "ncc-question-dialog-with-answer", usesInheritance: true, ngImport: i0, template: "<h1 mat-dialog-title>{{data.title}}</h1>\n\n<div mat-dialog-content class=\"dialog-container dialog-content-margin netgrif-input netgrif-input-fix\">\n <span>{{data.content}}</span>\n <br>\n <mat-form-field class=\"dialog-prompt-margin\" appearance=\"outline\">\n <mat-label>{{data.placeholder}}</mat-label>\n <input matInput [(ngModel)]=\"prompt\" (ngModelChange)=\"disableButton = !prompt || prompt.trim().length === 0\">\n </mat-form-field>\n</div>\n\n<mat-dialog-actions fxLayoutAlign=\"end\">\n <button mat-button (click)=\"onClose(false)\">{{ 'dialog.close' | translate}}</button>\n <button mat-flat-button color=\"primary\" [disabled]=\"disableButton\" (click)=\"onClose(true)\">{{ 'dialog.submit' | translate}}</button>\n</mat-dialog-actions>\n", styles: [".dialog-prompt-margin{margin-top:16px}\n"], components: [{ type: i2.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i2.MatLabel, selector: "mat-label" }, { type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i6.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }], pipes: { "translate": i7.TranslatePipe } });
37
37
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PromptDialogComponent, decorators: [{
38
38
  type: Component,
39
- args: [{ selector: 'ncc-question-dialog-with-answer', template: "<h1 mat-dialog-title>{{data.title}}</h1>\n\n<div mat-dialog-content class=\"dialog-container dialog-content-margin\">\n <span>{{data.content}}</span>\n <br>\n <mat-form-field class=\"dialog-prompt-margin\">\n <mat-label>{{data.placeholder}}</mat-label>\n <input matInput [(ngModel)]=\"prompt\" (ngModelChange)=\"disableButton = !prompt || prompt.trim().length === 0\">\n </mat-form-field>\n</div>\n\n<mat-dialog-actions fxLayoutAlign=\"end\">\n <button mat-button (click)=\"onClose(false)\">{{ 'dialog.close' | translate}}</button>\n <button mat-flat-button color=\"primary\" [disabled]=\"disableButton\" (click)=\"onClose(true)\">{{ 'dialog.submit' | translate}}</button>\n</mat-dialog-actions>\n", styles: [".dialog-prompt-margin{margin-top:16px}\n"] }]
39
+ args: [{ selector: 'ncc-question-dialog-with-answer', template: "<h1 mat-dialog-title>{{data.title}}</h1>\n\n<div mat-dialog-content class=\"dialog-container dialog-content-margin netgrif-input netgrif-input-fix\">\n <span>{{data.content}}</span>\n <br>\n <mat-form-field class=\"dialog-prompt-margin\" appearance=\"outline\">\n <mat-label>{{data.placeholder}}</mat-label>\n <input matInput [(ngModel)]=\"prompt\" (ngModelChange)=\"disableButton = !prompt || prompt.trim().length === 0\">\n </mat-form-field>\n</div>\n\n<mat-dialog-actions fxLayoutAlign=\"end\">\n <button mat-button (click)=\"onClose(false)\">{{ 'dialog.close' | translate}}</button>\n <button mat-flat-button color=\"primary\" [disabled]=\"disableButton\" (click)=\"onClose(true)\">{{ 'dialog.submit' | translate}}</button>\n</mat-dialog-actions>\n", styles: [".dialog-prompt-margin{margin-top:16px}\n"] }]
40
40
  }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
41
41
  type: Inject,
42
42
  args: [MAT_DIALOG_DATA]
43
43
  }] }]; } });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbXB0LWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2RpYWxvZy9jb21wb25lbnRzL3Byb21wdC1kaWFsb2cvcHJvbXB0LWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2RpYWxvZy9jb21wb25lbnRzL3Byb21wdC1kaWFsb2cvcHJvbXB0LWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFHNUQsT0FBTyxFQUFDLGVBQWUsRUFBZSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7QUFFdkU7OztHQUdHO0FBTUgsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGNBQXFDO0lBTTVFOzs7O09BSUc7SUFDSCxZQUFtQixTQUE0RCxFQUNuQyxJQUFnQjtRQUN4RCxLQUFLLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRlIsY0FBUyxHQUFULFNBQVMsQ0FBbUQ7UUFDbkMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQVg1RCw2RUFBNkU7UUFDdEUsa0JBQWEsR0FBRyxJQUFJLENBQUM7SUFZNUIsQ0FBQztJQUVELE9BQU8sQ0FBQyxXQUFvQjtRQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQy9CLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtTQUN0QixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNaLENBQUM7O21IQXBCUSxxQkFBcUIsOENBWVYsZUFBZTt1R0FaMUIscUJBQXFCLDhGQ2ZsQywydEJBZUE7NEZEQWEscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNJLGlDQUFpQzs7MEJBZ0I5QixNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWJzdHJhY3REaWFsb2d9IGZyb20gJy4uLy4uL21vZGVscy9hYnN0cmFjdC1kaWFsb2cnO1xuaW1wb3J0IHtEaWFsb2dSZXN1bHR9IGZyb20gJy4uLy4uL21vZGVscy9EaWFsb2dSZXN1bHQnO1xuaW1wb3J0IHtEaWFsb2dEYXRhfSBmcm9tICcuLi8uLi9tb2RlbHMvRGlhbG9nRGF0YSc7XG5pbXBvcnQge01BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG4vKipcbiAqIFF1ZXN0aW9uIG1vZGFsIGRpYWxvZyB3aXRoIGl0cyBvd24gbGF5b3V0ICh3aGljaCBhc2tzIHRoZSB1c2VyIGEgcXVlc3Rpb24gYW5kIHdhaXQgZm9yIHRoZSBhbnN3ZXIpXG4gKiBiYXNlZCBvbiBhIG1hdGVyaWFsIGRlc2lnbiB0aGF0IGluamVjdGVkIGRhdGEgYW5kIGluaGVyaXRzIGZyb20gYW4gW0Fic3RyYWN0RGlhbG9nXXtAbGluayBBYnN0cmFjdERpYWxvZ30uXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmNjLXF1ZXN0aW9uLWRpYWxvZy13aXRoLWFuc3dlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Byb21wdC1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3Byb21wdC1kaWFsb2cuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQcm9tcHREaWFsb2dDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdERpYWxvZzxQcm9tcHREaWFsb2dDb21wb25lbnQ+IHtcbiAgICAvKiogU2V0IHN1Ym1pdCBidXR0b24gdG8gZGlzYWJsZWQgb3IgZW5hYmxlZCBhY2NvcmRpbmcgdG8gdGhlIHVzZXIgYW5zd2VyLiAqL1xuICAgIHB1YmxpYyBkaXNhYmxlQnV0dG9uID0gdHJ1ZTtcbiAgICBwdWJsaWMgcHJvbXB0OiBzdHJpbmc7XG4gICAgcHVibGljIHN1Ym1pdENsaWNrOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogT25seSBpbmplY3RpbmcuXG4gICAgICogQHBhcmFtIGRpYWxvZ1JlZiBSZWZlcmVuY2UgdG8gYSBkaWFsb2cgb3BlbmVkIHZpYSB0aGUgTWF0RGlhbG9nIHNlcnZpY2UuXG4gICAgICogQHBhcmFtIGRhdGEgSW5qZWN0ZWQgZGF0YSB0aGF0IHdhcyBwYXNzZWQgaW4gdG8gYSBkaWFsb2cuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFByb21wdERpYWxvZ0NvbXBvbmVudCwgRGlhbG9nUmVzdWx0PixcbiAgICAgICAgICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IERpYWxvZ0RhdGEpIHtcbiAgICAgICAgc3VwZXIoZGlhbG9nUmVmLCBkYXRhKTtcbiAgICB9XG5cbiAgICBvbkNsb3NlKGlzU3VibWl0dGVkOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKGlzU3VibWl0dGVkID8ge1xuICAgICAgICAgICAgcHJvbXB0OiB0aGlzLnByb21wdFxuICAgICAgICB9IDoge30pO1xuICAgIH1cblxufVxuIiwiPGgxIG1hdC1kaWFsb2ctdGl0bGU+e3tkYXRhLnRpdGxlfX08L2gxPlxuXG48ZGl2IG1hdC1kaWFsb2ctY29udGVudCBjbGFzcz1cImRpYWxvZy1jb250YWluZXIgZGlhbG9nLWNvbnRlbnQtbWFyZ2luXCI+XG4gICAgPHNwYW4+e3tkYXRhLmNvbnRlbnR9fTwvc3Bhbj5cbiAgICA8YnI+XG4gICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZGlhbG9nLXByb21wdC1tYXJnaW5cIj5cbiAgICAgICAgPG1hdC1sYWJlbD57e2RhdGEucGxhY2Vob2xkZXJ9fTwvbWF0LWxhYmVsPlxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJwcm9tcHRcIiAobmdNb2RlbENoYW5nZSk9XCJkaXNhYmxlQnV0dG9uID0gIXByb21wdCB8fCBwcm9tcHQudHJpbSgpLmxlbmd0aCA9PT0gMFwiPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG48L2Rpdj5cblxuPG1hdC1kaWFsb2ctYWN0aW9ucyBmeExheW91dEFsaWduPVwiZW5kXCI+XG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJvbkNsb3NlKGZhbHNlKVwiPnt7ICdkaWFsb2cuY2xvc2UnIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cbiAgICA8YnV0dG9uIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZUJ1dHRvblwiIChjbGljayk9XCJvbkNsb3NlKHRydWUpXCI+e3sgJ2RpYWxvZy5zdWJtaXQnIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuIl19
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbXB0LWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2RpYWxvZy9jb21wb25lbnRzL3Byb21wdC1kaWFsb2cvcHJvbXB0LWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2RpYWxvZy9jb21wb25lbnRzL3Byb21wdC1kaWFsb2cvcHJvbXB0LWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFHNUQsT0FBTyxFQUFDLGVBQWUsRUFBZSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7QUFFdkU7OztHQUdHO0FBTUgsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGNBQXFDO0lBTTVFOzs7O09BSUc7SUFDSCxZQUFtQixTQUE0RCxFQUNuQyxJQUFnQjtRQUN4RCxLQUFLLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRlIsY0FBUyxHQUFULFNBQVMsQ0FBbUQ7UUFDbkMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQVg1RCw2RUFBNkU7UUFDdEUsa0JBQWEsR0FBRyxJQUFJLENBQUM7SUFZNUIsQ0FBQztJQUVELE9BQU8sQ0FBQyxXQUFvQjtRQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQy9CLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtTQUN0QixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNaLENBQUM7O21IQXBCUSxxQkFBcUIsOENBWVYsZUFBZTt1R0FaMUIscUJBQXFCLDhGQ2ZsQyxreEJBZUE7NEZEQWEscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNJLGlDQUFpQzs7MEJBZ0I5QixNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWJzdHJhY3REaWFsb2d9IGZyb20gJy4uLy4uL21vZGVscy9hYnN0cmFjdC1kaWFsb2cnO1xuaW1wb3J0IHtEaWFsb2dSZXN1bHR9IGZyb20gJy4uLy4uL21vZGVscy9EaWFsb2dSZXN1bHQnO1xuaW1wb3J0IHtEaWFsb2dEYXRhfSBmcm9tICcuLi8uLi9tb2RlbHMvRGlhbG9nRGF0YSc7XG5pbXBvcnQge01BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG4vKipcbiAqIFF1ZXN0aW9uIG1vZGFsIGRpYWxvZyB3aXRoIGl0cyBvd24gbGF5b3V0ICh3aGljaCBhc2tzIHRoZSB1c2VyIGEgcXVlc3Rpb24gYW5kIHdhaXQgZm9yIHRoZSBhbnN3ZXIpXG4gKiBiYXNlZCBvbiBhIG1hdGVyaWFsIGRlc2lnbiB0aGF0IGluamVjdGVkIGRhdGEgYW5kIGluaGVyaXRzIGZyb20gYW4gW0Fic3RyYWN0RGlhbG9nXXtAbGluayBBYnN0cmFjdERpYWxvZ30uXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmNjLXF1ZXN0aW9uLWRpYWxvZy13aXRoLWFuc3dlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Byb21wdC1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3Byb21wdC1kaWFsb2cuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQcm9tcHREaWFsb2dDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdERpYWxvZzxQcm9tcHREaWFsb2dDb21wb25lbnQ+IHtcbiAgICAvKiogU2V0IHN1Ym1pdCBidXR0b24gdG8gZGlzYWJsZWQgb3IgZW5hYmxlZCBhY2NvcmRpbmcgdG8gdGhlIHVzZXIgYW5zd2VyLiAqL1xuICAgIHB1YmxpYyBkaXNhYmxlQnV0dG9uID0gdHJ1ZTtcbiAgICBwdWJsaWMgcHJvbXB0OiBzdHJpbmc7XG4gICAgcHVibGljIHN1Ym1pdENsaWNrOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogT25seSBpbmplY3RpbmcuXG4gICAgICogQHBhcmFtIGRpYWxvZ1JlZiBSZWZlcmVuY2UgdG8gYSBkaWFsb2cgb3BlbmVkIHZpYSB0aGUgTWF0RGlhbG9nIHNlcnZpY2UuXG4gICAgICogQHBhcmFtIGRhdGEgSW5qZWN0ZWQgZGF0YSB0aGF0IHdhcyBwYXNzZWQgaW4gdG8gYSBkaWFsb2cuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFByb21wdERpYWxvZ0NvbXBvbmVudCwgRGlhbG9nUmVzdWx0PixcbiAgICAgICAgICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IERpYWxvZ0RhdGEpIHtcbiAgICAgICAgc3VwZXIoZGlhbG9nUmVmLCBkYXRhKTtcbiAgICB9XG5cbiAgICBvbkNsb3NlKGlzU3VibWl0dGVkOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKGlzU3VibWl0dGVkID8ge1xuICAgICAgICAgICAgcHJvbXB0OiB0aGlzLnByb21wdFxuICAgICAgICB9IDoge30pO1xuICAgIH1cblxufVxuIiwiPGgxIG1hdC1kaWFsb2ctdGl0bGU+e3tkYXRhLnRpdGxlfX08L2gxPlxuXG48ZGl2IG1hdC1kaWFsb2ctY29udGVudCBjbGFzcz1cImRpYWxvZy1jb250YWluZXIgZGlhbG9nLWNvbnRlbnQtbWFyZ2luIG5ldGdyaWYtaW5wdXQgbmV0Z3JpZi1pbnB1dC1maXhcIj5cbiAgICA8c3Bhbj57e2RhdGEuY29udGVudH19PC9zcGFuPlxuICAgIDxicj5cbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJkaWFsb2ctcHJvbXB0LW1hcmdpblwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XG4gICAgICAgIDxtYXQtbGFiZWw+e3tkYXRhLnBsYWNlaG9sZGVyfX08L21hdC1sYWJlbD5cbiAgICAgICAgPGlucHV0IG1hdElucHV0IFsobmdNb2RlbCldPVwicHJvbXB0XCIgKG5nTW9kZWxDaGFuZ2UpPVwiZGlzYWJsZUJ1dHRvbiA9ICFwcm9tcHQgfHwgcHJvbXB0LnRyaW0oKS5sZW5ndGggPT09IDBcIj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuPC9kaXY+XG5cbjxtYXQtZGlhbG9nLWFjdGlvbnMgZnhMYXlvdXRBbGlnbj1cImVuZFwiPlxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwib25DbG9zZShmYWxzZSlcIj57eyAnZGlhbG9nLmNsb3NlJyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XG4gICAgPGJ1dHRvbiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImRpc2FibGVCdXR0b25cIiAoY2xpY2spPVwib25DbG9zZSh0cnVlKVwiPnt7ICdkaWFsb2cuc3VibWl0JyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XG48L21hdC1kaWFsb2ctYWN0aW9ucz5cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1zZWFyY2gtcmVxdWVzdC1ib2R5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9maWx0ZXIvbW9kZWxzL2Nhc2Utc2VhcmNoLXJlcXVlc3QtYm9keS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBEZXNjcmliZXMgb2JqZWN0cyB0aGF0IGFyZSB1c2VkIHRvIHNlYXJjaC9maWx0ZXIgY2FzZXMgZnJvbSB0aGUgYmFja2VuZC4gUmV0dXJuZWQgY2FzZXMgbXVzdCBmdWxmaWxsIGFsbCBwcm92aWRlZCBjcml0ZXJpYS5cbiAqXG4gKiBUaGlzIG9iamVjdCBpcyB1c2VkIGFzIHBhcnQgb2YgYSB7QGxpbmsgRmlsdGVyfSBvYmplY3QgZm9yIFtzZWFyY2hDYXNlcygpXXtAbGluayBDYXNlUmVzb3VyY2VTZXJ2aWNlI3NlYXJjaENhc2VzfVxuICogbWV0aG9kIGluIHtAbGluayBDYXNlUmVzb3VyY2VTZXJ2aWNlfS5cbiAqXG4gKiBOb3QgdG8gYmUgY29uZnVzZWQgd2l0aCB7QGxpbmsgQ2FzZUdldFJlcXVlc3RCb2R5fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYXNlU2VhcmNoUmVxdWVzdEJvZHkge1xuICAgIC8qKlxuICAgICAqIFJldHVybmVkIGNhc2VzIGFyZSBpbnN0YW5jZXMgb2YgdGhlIHNwZWNpZmllZCBQZXRyaU5ldC5cbiAgICAgKiBJZiBtb3JlIHRoYW4gb25lIFBldHJpTmV0IGlzIHNwZWNpZmllZCwgdGhlIHJldHVybmVkIGNhc2VzIGFyZSBpbnN0YW5jZXMgb2Ygb25lIG9mIHRoZW0uXG4gICAgICovXG4gICAgcHJvY2Vzcz86IFBldHJpTmV0U2VhcmNoUmVxdWVzdCB8IEFycmF5PFBldHJpTmV0U2VhcmNoUmVxdWVzdD47XG4gICAgLy8gVE9ETyBCVUcgMTcuNC4yMDIwIC0gTmVlZHMgaW52ZXN0aWdhdGlvbiwgYmFja2VuZCBoYXMgdGhlc2UgYXR0cmlidXRlcyBkZWNsYXJlZCBpbiBDYXNlU2VhcmNoUmVxdWVzdCBjbGFzcyBidXRcbiAgICAvLyAgRWxhc3RpY0Nhc2VTZXJ2aWNlIGRvZXNuJ3QgYXBwZWFyIHRvIHVzZSB0aGVtXG4gICAgLy8gcHJvY2Vzc0lkZW50aWZpZXI/OiBzdHJpbmcgfCBBcnJheTxzdHJpbmc+O1xuICAgIC8vIHRpdGxlPzogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPjtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5lZCBjYXNlcyB3ZXJlIGNyZWF0ZWQgYnkgdGhlIHNwZWNpZmllZCBhdXRob3IuXG4gICAgICogSWYgbW9yZSB0aGFuIG9uZSBhdXRob3IgaXMgc3BlY2lmaWVkLCB0aGUgcmV0dXJuZWQgY2FzZXMgd2VyZSBjcmVhdGVkIGJ5IG9uZSBvZiB0aGVtLlxuICAgICAqL1xuICAgIGF1dGhvcj86IEF1dGhvclNlYXJjaFJlcXVlc3QgfCBBcnJheTxBdXRob3JTZWFyY2hSZXF1ZXN0PjtcbiAgICAvKipcbiAgICAgKiBNYXBzIGZpZWxkIElEcyB0byBmaWVsZCB2YWx1ZXMuIFJldHVybmVkIGNhc2VzIG11c3QgaGF2ZSBkYXRhIGZpZWxkcyB3aXRoIHRoZSBwcm92aWRlZCBJRHMgdGhhdCBoYXZlIHRoZSBwcm92aWRlZCB2YWx1ZXMuXG4gICAgICogSWYgbW9yZSB0aGFuIG9uZSBmaWVsZC12YWx1ZSBwYWlyIGlzIHNwZWNpZmllZCwgdGhlIGRhdGEgc2V0IG9mIHRoZSByZXR1cm5lZCBjYXNlcyBtdXN0IG1hdGNoIGFsbCBvZiB0aGUgcGFpcnMuXG4gICAgICovXG4gICAgZGF0YT86IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogc3RyaW5nXG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBBIGZ1bGwgdGV4dCBxdWVyeSBvbiBhbGwgaW5kZXhlZCBmaWVsZHMsIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgZnVsbCB0ZXh0IHNlYXJjaGluZy5cbiAgICAgKlxuICAgICAqIEZ1bGwgdGV4dCBzZWFyY2ggaXMgZW5hYmxlZCBvbiBjYXNlJ3MgdGl0bGUsIGF1dGhvcidzIG5hbWUgYW5kIGF1dGhvcidzIGVtYWlsIGJ5IGRlZmF1bHQuXG4gICAgICovXG4gICAgZnVsbFRleHQ/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogUmV0dXJuZWQgY2FzZXMsIHRoYXQgaGF2ZSB0YXNrcywgdGhhdCBjb3JyZXNwb25kIHRvIHNwZWNpZmllZCB0cmFuc2l0aW9uIElELlxuICAgICAqIElmIG1vcmUgdGhhbiBvbmUgdHJhbnNpdGlvbiBJRCBpcyBzcGVjaWZpZWQsIHRoZSByZXR1cm5lZCBjYXNlcyBtdXN0IGhhdmUgdGFza3MgdGhhdCBjb3JyZXNwb25kIHRvIGF0IGxlYXN0IG9uZSBvZiB0aGVtLlxuICAgICAqL1xuICAgIHRyYW5zaXRpb24/OiBzdHJpbmcgfCBBcnJheTxzdHJpbmc+O1xuICAgIC8qKlxuICAgICAqIFJldHVybmVkIGNhc2VzIG11c3QgaGF2ZSBhbiBhY3RpdmUgcm9sZSB3aXRoIHRoZSBzcGVjaWZpZWQgcm9sZSBJRC5cbiAgICAgKiBJZiBtb3JlIHRoYW4gb25lIHJvbGUgSUQgaXMgc3BlY2lmaWVkLCB0aGUgcmV0dXJuZWQgY2FzZXMgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBvZiB0aGVtIGFjdGl2ZS5cbiAgICAgKi9cbiAgICByb2xlPzogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPjtcbiAgICAvKipcbiAgICAgKiBBbiBFbGFzdGljc2VhcmNoIFF1ZXJ5IHN0cmluZyBxdWVyeS5cbiAgICAgKlxuICAgICAqIFNlZSBFbGFzdGljc2VhcmNoJ3NcbiAgICAgKiBbZG9jdW1lbnRhdGlvbl17QGxpbmsgaHR0cHM6Ly93d3cuZWxhc3RpYy5jby9ndWlkZS9lbi9lbGFzdGljc2VhcmNoL3JlZmVyZW5jZS9jdXJyZW50L3F1ZXJ5LWRzbC1xdWVyeS1zdHJpbmctcXVlcnkuaHRtbH1cbiAgICAgKiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAgICAgKi9cbiAgICBxdWVyeT86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBSZXR1cm5lZCBjYXNlcyBtdXN0IGhhdmUgdGhlIHNwZWNpZmllZCBzdHJpbmcgSUQuXG4gICAgICogSWYgbW9yZSB0aGFuIG9uZSBzdHJpbmcgSUQgaXMgc3BlY2lmaWVkLCB0aGUgcmV0dXJuZWQgY2FzZXMgbXVzdCBoYXZlIG9uZSBvZiB0aGVtLlxuICAgICAqL1xuICAgIHN0cmluZ0lkPzogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPjtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5lZCBjYXNlcyBtdXN0IGJlIGluc3RhbmNlcyBvZiBwcm9jZXNzZXMgb2YgdGhlIGdyb3VwIHdpdGggdGhlIHNwZWNpZmllZCBJRC5cbiAgICAgKlxuICAgICAqIElmIG1vcmUgdGhhbiBvbmUgZ3JvdXAgSUQgaXMgc3BlY2lmaWVkLCB0aGUgcmV0dXJuZWQgY2FzZXMgYXJlIGluc3RhbmNlcyBvZiBvbmUgb2YgdGhlIGdyb3Vwcy5cbiAgICAgKi9cbiAgICBncm91cD86IHN0cmluZyB8IEFycmF5PHN0cmluZz47XG59XG5cbi8qKlxuICogUXVlcmllcyBjYXNlcyB0aGF0IGFyZSBpbnN0YW5jZXMgb2YgYSBzcGVjaWZpYyBQZXRyaU5ldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBldHJpTmV0U2VhcmNoUmVxdWVzdCB7XG4gICAgLyoqXG4gICAgICogUXVlcmllZCBQZXRyaU5ldCBpZGVudGlmaWVyXG4gICAgICovXG4gICAgaWRlbnRpZmllcjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFF1ZXJpZXMgY2FzZXMgdGhhdCB3ZXJlIGNyZWF0ZWQgYnkgYSBzcGVjaWZpYyBhdXRob3IuIENhc2UncyBhdXRob3IgbXVzdCBtYXRjaCBhbGwgcHJvdmlkZWQgYXR0cmlidXRlcyB0byBmdWxmaWxsIHRoZSBxdWVyeS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRob3JTZWFyY2hSZXF1ZXN0IHtcbiAgICAvKipcbiAgICAgKiBBdXRob3IncyB1c2VyIElEXG4gICAgICovXG4gICAgaWQ/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQXV0aG9yJ3MgdXNlciBuYW1lXG4gICAgICovXG4gICAgbmFtZT86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBBdXRob3IncyB1c2VyIGVtYWlsXG4gICAgICovXG4gICAgZW1haWw/OiBzdHJpbmc7XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1zZWFyY2gtcmVxdWVzdC1ib2R5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9maWx0ZXIvbW9kZWxzL2Nhc2Utc2VhcmNoLXJlcXVlc3QtYm9keS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBEZXNjcmliZXMgb2JqZWN0cyB0aGF0IGFyZSB1c2VkIHRvIHNlYXJjaC9maWx0ZXIgY2FzZXMgZnJvbSB0aGUgYmFja2VuZC4gUmV0dXJuZWQgY2FzZXMgbXVzdCBmdWxmaWxsIGFsbCBwcm92aWRlZCBjcml0ZXJpYS5cbiAqXG4gKiBUaGlzIG9iamVjdCBpcyB1c2VkIGFzIHBhcnQgb2YgYSB7QGxpbmsgRmlsdGVyfSBvYmplY3QgZm9yIFtzZWFyY2hDYXNlcygpXXtAbGluayBDYXNlUmVzb3VyY2VTZXJ2aWNlI3NlYXJjaENhc2VzfVxuICogbWV0aG9kIGluIHtAbGluayBDYXNlUmVzb3VyY2VTZXJ2aWNlfS5cbiAqXG4gKiBOb3QgdG8gYmUgY29uZnVzZWQgd2l0aCB7QGxpbmsgQ2FzZUdldFJlcXVlc3RCb2R5fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYXNlU2VhcmNoUmVxdWVzdEJvZHkge1xuICAgIC8qKlxuICAgICAqIFJldHVybmVkIGNhc2VzIGFyZSBpbnN0YW5jZXMgb2YgdGhlIHNwZWNpZmllZCBQZXRyaU5ldC5cbiAgICAgKiBJZiBtb3JlIHRoYW4gb25lIFBldHJpTmV0IGlzIHNwZWNpZmllZCwgdGhlIHJldHVybmVkIGNhc2VzIGFyZSBpbnN0YW5jZXMgb2Ygb25lIG9mIHRoZW0uXG4gICAgICovXG4gICAgcHJvY2Vzcz86IFBldHJpTmV0U2VhcmNoUmVxdWVzdCB8IEFycmF5PFBldHJpTmV0U2VhcmNoUmVxdWVzdD47XG4gICAgLy8gVE9ETyBCVUcgMTcuNC4yMDIwIC0gTmVlZHMgaW52ZXN0aWdhdGlvbiwgYmFja2VuZCBoYXMgdGhlc2UgYXR0cmlidXRlcyBkZWNsYXJlZCBpbiBDYXNlU2VhcmNoUmVxdWVzdCBjbGFzcyBidXRcbiAgICAvLyAgRWxhc3RpY0Nhc2VTZXJ2aWNlIGRvZXNuJ3QgYXBwZWFyIHRvIHVzZSB0aGVtXG4gICAgLy8gcHJvY2Vzc0lkZW50aWZpZXI/OiBzdHJpbmcgfCBBcnJheTxzdHJpbmc+O1xuICAgIC8vIHRpdGxlPzogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPjtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5lZCBjYXNlcyB3ZXJlIGNyZWF0ZWQgYnkgdGhlIHNwZWNpZmllZCBhdXRob3IuXG4gICAgICogSWYgbW9yZSB0aGFuIG9uZSBhdXRob3IgaXMgc3BlY2lmaWVkLCB0aGUgcmV0dXJuZWQgY2FzZXMgd2VyZSBjcmVhdGVkIGJ5IG9uZSBvZiB0aGVtLlxuICAgICAqL1xuICAgIGF1dGhvcj86IEF1dGhvclNlYXJjaFJlcXVlc3QgfCBBcnJheTxBdXRob3JTZWFyY2hSZXF1ZXN0PjtcbiAgICAvKipcbiAgICAgKiBNYXBzIGZpZWxkIElEcyB0byBmaWVsZCB2YWx1ZXMuIFJldHVybmVkIGNhc2VzIG11c3QgaGF2ZSBkYXRhIGZpZWxkcyB3aXRoIHRoZSBwcm92aWRlZCBJRHMgdGhhdCBoYXZlIHRoZSBwcm92aWRlZCB2YWx1ZXMuXG4gICAgICogSWYgbW9yZSB0aGFuIG9uZSBmaWVsZC12YWx1ZSBwYWlyIGlzIHNwZWNpZmllZCwgdGhlIGRhdGEgc2V0IG9mIHRoZSByZXR1cm5lZCBjYXNlcyBtdXN0IG1hdGNoIGFsbCBvZiB0aGUgcGFpcnMuXG4gICAgICovXG4gICAgZGF0YT86IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogc3RyaW5nXG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBBIGZ1bGwgdGV4dCBxdWVyeSBvbiBhbGwgaW5kZXhlZCBmaWVsZHMsIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgZnVsbCB0ZXh0IHNlYXJjaGluZy5cbiAgICAgKlxuICAgICAqIEZ1bGwgdGV4dCBzZWFyY2ggaXMgZW5hYmxlZCBvbiBjYXNlJ3MgdGl0bGUsIGF1dGhvcidzIG5hbWUgYW5kIGF1dGhvcidzIGVtYWlsIGJ5IGRlZmF1bHQuXG4gICAgICovXG4gICAgZnVsbFRleHQ/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogUmV0dXJuZWQgY2FzZXMsIHRoYXQgaGF2ZSB0YXNrcywgdGhhdCBjb3JyZXNwb25kIHRvIHNwZWNpZmllZCB0cmFuc2l0aW9uIElELlxuICAgICAqIElmIG1vcmUgdGhhbiBvbmUgdHJhbnNpdGlvbiBJRCBpcyBzcGVjaWZpZWQsIHRoZSByZXR1cm5lZCBjYXNlcyBtdXN0IGhhdmUgdGFza3MgdGhhdCBjb3JyZXNwb25kIHRvIGF0IGxlYXN0IG9uZSBvZiB0aGVtLlxuICAgICAqL1xuICAgIHRyYW5zaXRpb24/OiBzdHJpbmcgfCBBcnJheTxzdHJpbmc+O1xuICAgIC8qKlxuICAgICAqIFJldHVybmVkIGNhc2VzIG11c3QgaGF2ZSBhbiBhY3RpdmUgcm9sZSB3aXRoIHRoZSBzcGVjaWZpZWQgcm9sZSBJRC5cbiAgICAgKiBJZiBtb3JlIHRoYW4gb25lIHJvbGUgSUQgaXMgc3BlY2lmaWVkLCB0aGUgcmV0dXJuZWQgY2FzZXMgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBvZiB0aGVtIGFjdGl2ZS5cbiAgICAgKi9cbiAgICByb2xlPzogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPjtcbiAgICAvKipcbiAgICAgKiBBbiBFbGFzdGljc2VhcmNoIFF1ZXJ5IHN0cmluZyBxdWVyeS5cbiAgICAgKlxuICAgICAqIFNlZSBFbGFzdGljc2VhcmNoJ3NcbiAgICAgKiBbZG9jdW1lbnRhdGlvbl17QGxpbmsgaHR0cHM6Ly93d3cuZWxhc3RpYy5jby9ndWlkZS9lbi9lbGFzdGljc2VhcmNoL3JlZmVyZW5jZS9jdXJyZW50L3F1ZXJ5LWRzbC1xdWVyeS1zdHJpbmctcXVlcnkuaHRtbH1cbiAgICAgKiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAgICAgKi9cbiAgICBxdWVyeT86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBSZXR1cm5lZCBjYXNlcyBtdXN0IGhhdmUgdGhlIHNwZWNpZmllZCBzdHJpbmcgSUQuXG4gICAgICogSWYgbW9yZSB0aGFuIG9uZSBzdHJpbmcgSUQgaXMgc3BlY2lmaWVkLCB0aGUgcmV0dXJuZWQgY2FzZXMgbXVzdCBoYXZlIG9uZSBvZiB0aGVtLlxuICAgICAqL1xuICAgIHN0cmluZ0lkPzogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPjtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5lZCBjYXNlcyBtdXN0IGJlIGluc3RhbmNlcyBvZiBwcm9jZXNzZXMgb2YgdGhlIGdyb3VwIHdpdGggdGhlIHNwZWNpZmllZCBJRC5cbiAgICAgKlxuICAgICAqIElmIG1vcmUgdGhhbiBvbmUgZ3JvdXAgSUQgaXMgc3BlY2lmaWVkLCB0aGUgcmV0dXJuZWQgY2FzZXMgYXJlIGluc3RhbmNlcyBvZiBvbmUgb2YgdGhlIGdyb3Vwcy5cbiAgICAgKi9cbiAgICBncm91cD86IHN0cmluZyB8IEFycmF5PHN0cmluZz47XG5cbiAgICB1cmlOb2RlSWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUXVlcmllcyBjYXNlcyB0aGF0IGFyZSBpbnN0YW5jZXMgb2YgYSBzcGVjaWZpYyBQZXRyaU5ldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBldHJpTmV0U2VhcmNoUmVxdWVzdCB7XG4gICAgLyoqXG4gICAgICogUXVlcmllZCBQZXRyaU5ldCBpZGVudGlmaWVyXG4gICAgICovXG4gICAgaWRlbnRpZmllcjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFF1ZXJpZXMgY2FzZXMgdGhhdCB3ZXJlIGNyZWF0ZWQgYnkgYSBzcGVjaWZpYyBhdXRob3IuIENhc2UncyBhdXRob3IgbXVzdCBtYXRjaCBhbGwgcHJvdmlkZWQgYXR0cmlidXRlcyB0byBmdWxmaWxsIHRoZSBxdWVyeS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRob3JTZWFyY2hSZXF1ZXN0IHtcbiAgICAvKipcbiAgICAgKiBBdXRob3IncyB1c2VyIElEXG4gICAgICovXG4gICAgaWQ/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQXV0aG9yJ3MgdXNlciBuYW1lXG4gICAgICovXG4gICAgbmFtZT86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBBdXRob3IncyB1c2VyIGVtYWlsXG4gICAgICovXG4gICAgZW1haWw/OiBzdHJpbmc7XG59XG4iXX0=
@@ -8,14 +8,16 @@ import { HeaderChangeType } from './models/user-changes/header-change-type';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "./models/header-type";
10
10
  import * as i2 from "../user/services/user-preference.service";
11
- import * as i3 from "../user/services/view-id.service";
12
- import * as i4 from "../logger/services/logger.service";
11
+ import * as i3 from "../logger/services/logger.service";
12
+ import * as i4 from "../user/services/view-id.service";
13
+ import * as i5 from "./services/overflow.service";
13
14
  export class AbstractHeaderService {
14
- constructor(_headerType, _preferences, _viewIdService, _logger) {
15
+ constructor(_headerType, _preferences, _logger, _viewIdService, _overflowService) {
15
16
  this._headerType = _headerType;
16
17
  this._preferences = _preferences;
17
- this._viewIdService = _viewIdService;
18
18
  this._logger = _logger;
19
+ this._viewIdService = _viewIdService;
20
+ this._overflowService = _overflowService;
19
21
  this.loading = new LoadingEmitter(true);
20
22
  this._headerChange$ = new Subject();
21
23
  this.fieldsGroup = [{ groupTitle: 'Meta data', fields: this.createMetaHeaders() }];
@@ -47,6 +49,9 @@ export class AbstractHeaderService {
47
49
  get headerType() {
48
50
  return this._headerType;
49
51
  }
52
+ get overflowMode() {
53
+ return this._overflowService.overflowMode;
54
+ }
50
55
  get headerColumnCount() {
51
56
  return this._headerColumnCount$.getValue();
52
57
  }
@@ -386,11 +391,13 @@ export class AbstractHeaderService {
386
391
  }
387
392
  AbstractHeaderService.DEFAULT_HEADER_COUNT = 5;
388
393
  AbstractHeaderService.DEFAULT_HEADER_RESPONSIVITY = true;
389
- AbstractHeaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AbstractHeaderService, deps: [{ token: i1.HeaderType }, { token: i2.UserPreferenceService }, { token: i3.ViewIdService, optional: true }, { token: i4.LoggerService }], target: i0.ɵɵFactoryTarget.Injectable });
394
+ AbstractHeaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AbstractHeaderService, deps: [{ token: i1.HeaderType }, { token: i2.UserPreferenceService }, { token: i3.LoggerService }, { token: i4.ViewIdService, optional: true }, { token: i5.OverflowService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
390
395
  AbstractHeaderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AbstractHeaderService });
391
396
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AbstractHeaderService, decorators: [{
392
397
  type: Injectable
393
- }], ctorParameters: function () { return [{ type: i1.HeaderType }, { type: i2.UserPreferenceService }, { type: i3.ViewIdService, decorators: [{
398
+ }], ctorParameters: function () { return [{ type: i1.HeaderType }, { type: i2.UserPreferenceService }, { type: i3.LoggerService }, { type: i4.ViewIdService, decorators: [{
399
+ type: Optional
400
+ }] }, { type: i5.OverflowService, decorators: [{
394
401
  type: Optional
395
- }] }, { type: i4.LoggerService }]; } });
396
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtaGVhZGVyLXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2hlYWRlci9hYnN0cmFjdC1oZWFkZXItc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsZUFBZSxFQUFjLGFBQWEsRUFBRSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFekUsT0FBTyxFQUFDLFdBQVcsRUFBdUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQUMsVUFBVSxFQUFhLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQU05RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFDLFlBQVksRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBR3RFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUUxRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7O0FBSzFFLE1BQU0sT0FBZ0IscUJBQXFCO0lBaUJ2QyxZQUFnQyxXQUF1QixFQUN2QixZQUFtQyxFQUN6QixjQUE2QixFQUN2QyxPQUFzQjtRQUh0QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixpQkFBWSxHQUFaLFlBQVksQ0FBdUI7UUFDekIsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDdkMsWUFBTyxHQUFQLE9BQU8sQ0FBZTtRQUNsRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxPQUFPLEVBQWdCLENBQUM7UUFDbEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLEVBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxD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QkFBbUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOztPQUVHO0lBQ08sU0FBUztRQUNmLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNyQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO1NBQ3JDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQzs7QUFqYnNCLDBDQUFvQixHQUFHLENBQUUsQ0FBQTtBQUN6QixpREFBMkIsR0FBRyxJQUFLLENBQUE7bUhBSHhDLHFCQUFxQjt1SEFBckIscUJBQXFCOzRGQUFyQixxQkFBcUI7a0JBRDFDLFVBQVU7OzBCQW9CZ0IsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7RmllbGRzR3JvdXB9IGZyb20gJy4vbW9kZWxzL2ZpZWxkcy1ncm91cCc7XG5pbXBvcnQge0hlYWRlclN0YXRlLCBIZWFkZXJTdGF0ZUludGVyZmFjZX0gZnJvbSAnLi9oZWFkZXItc3RhdGUnO1xuaW1wb3J0IHtJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U29ydENoYW5nZURlc2NyaXB0aW9ufSBmcm9tICcuL21vZGVscy91c2VyLWNoYW5nZXMvc29ydC1jaGFuZ2UtZGVzY3JpcHRpb24nO1xuaW1wb3J0IHtTZWFyY2hDaGFuZ2VEZXNjcmlwdGlvbn0gZnJvbSAnLi9tb2RlbHMvdXNlci1jaGFuZ2VzL3NlYXJjaC1jaGFuZ2UtZGVzY3JpcHRpb24nO1xuaW1wb3J0IHtIZWFkZXJDaGFuZ2V9IGZyb20gJy4vbW9kZWxzL3VzZXItY2hhbmdlcy9oZWFkZXItY2hhbmdlJztcbmltcG9ydCB7UGV0cmlOZXRSZWZlcmVuY2V9IGZyb20gJy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvcGV0cmktbmV0LXJlZmVyZW5jZSc7XG5pbXBvcnQge0hlYWRlclR5cGV9IGZyb20gJy4vbW9kZWxzL2hlYWRlci10eXBlJztcbmltcG9ydCB7SGVhZGVyTW9kZX0gZnJvbSAnLi9tb2RlbHMvaGVhZGVyLW1vZGUnO1xuaW1wb3J0IHtIZWFkZXJDb2x1bW4sIEhlYWRlckNvbHVtblR5cGV9IGZyb20gJy4vbW9kZWxzL2hlYWRlci1jb2x1bW4nO1xuaW1wb3J0IHtVc2VyUHJlZmVyZW5jZVNlcnZpY2V9IGZyb20gJy4uL3VzZXIvc2VydmljZXMvdXNlci1wcmVmZXJlbmNlLnNlcnZpY2UnO1xuaW1wb3J0IHtMb2dnZXJTZXJ2aWNlfSBmcm9tICcuLi9sb2dnZXIvc2VydmljZXMvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtMb2FkaW5nRW1pdHRlcn0gZnJvbSAnLi4vdXRpbGl0eS9sb2FkaW5nLWVtaXR0ZXInO1xuaW1wb3J0IHtTb3J0RGlyZWN0aW9ufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7SGVhZGVyQ2hhbmdlVHlwZX0gZnJvbSAnLi9tb2RlbHMvdXNlci1jaGFuZ2VzL2hlYWRlci1jaGFuZ2UtdHlwZSc7XG5pbXBvcnQge1ZpZXdJZFNlcnZpY2V9IGZyb20gJy4uL3VzZXIvc2VydmljZXMvdmlldy1pZC5zZXJ2aWNlJztcbmltcG9ydCB7TmV0fSBmcm9tICcuLi9wcm9jZXNzL25ldCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdEhlYWRlclNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0hFQURFUl9DT1VOVCA9IDU7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0hFQURFUl9SRVNQT05TSVZJVFkgPSB0cnVlO1xuXG4gICAgcHJvdGVjdGVkIF9oZWFkZXJDb2x1bW5Db3VudCQ6IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+O1xuICAgIHByb3RlY3RlZCBfcHJlZmVyZW5jZUNvbHVtbkNvdW50JDogUmVwbGF5U3ViamVjdDxudW1iZXI+O1xuICAgIHByb3RlY3RlZCBfcmVzcG9uc2l2ZUhlYWRlcnMkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj47XG4gICAgcHJvdGVjdGVkIF9oZWFkZXJTdGF0ZTogSGVhZGVyU3RhdGU7XG4gICAgcHJvdGVjdGVkIF9oZWFkZXJDaGFuZ2UkOiBTdWJqZWN0PEhlYWRlckNoYW5nZT47XG4gICAgcHJvdGVjdGVkIF9jbGVhckhlYWRlclNlYXJjaCQ6IFN1YmplY3Q8bnVtYmVyPjtcbiAgICBwcml2YXRlIF9pbml0RGVmYXVsdEhlYWRlcnM6IEFycmF5PHN0cmluZz47XG4gICAgcHJpdmF0ZSBfaW5pdGlhbGl6ZWRDb3VudDogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBsb2FkaW5nOiBMb2FkaW5nRW1pdHRlcjtcbiAgICBwdWJsaWMgZmllbGRzR3JvdXA6IEFycmF5PEZpZWxkc0dyb3VwPjtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX2hlYWRlclR5cGU6IEhlYWRlclR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfcHJlZmVyZW5jZXM6IFVzZXJQcmVmZXJlbmNlU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfdmlld0lkU2VydmljZTogVmlld0lkU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9sb2dnZXI6IExvZ2dlclNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gbmV3IExvYWRpbmdFbWl0dGVyKHRydWUpO1xuICAgICAgICB0aGlzLl9oZWFkZXJDaGFuZ2UkID0gbmV3IFN1YmplY3Q8SGVhZGVyQ2hhbmdlPigpO1xuICAgICAgICB0aGlzLmZpZWxkc0dyb3VwID0gW3tncm91cFRpdGxlOiAnTWV0YSBkYXRhJywgZmllbGRzOiB0aGlzLmNyZWF0ZU1ldGFIZWFkZXJzKCl9XTtcbiAgICAgICAgdGhpcy5faGVhZGVyQ29sdW1uQ291bnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KEFic3RyYWN0SGVhZGVyU2VydmljZS5ERUZBVUxUX0hFQURFUl9DT1VOVCk7XG4gICAgICAgIHRoaXMuX3Jlc3BvbnNpdmVIZWFkZXJzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oQWJzdHJhY3RIZWFkZXJTZXJ2aWNlLkRFRkFVTFRfSEVBREVSX1JFU1BPTlNJVklUWSk7XG4gICAgICAgIHRoaXMuX3ByZWZlcmVuY2VDb2x1bW5Db3VudCQgPSBuZXcgUmVwbGF5U3ViamVjdDxudW1iZXI+KCk7XG4gICAgICAgIHRoaXMuX2NsZWFySGVhZGVyU2VhcmNoJCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZWRDb3VudCA9IGZhbHNlO1xuXG4gICAgICAgIGlmICh0aGlzLl92aWV3SWRTZXJ2aWNlID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIud2FybignSGVhZGVyIHNlcnZpY2UgY291bGQgbm90IGluamVjdCBWaWV3SWRTZXJ2aWNlISBVc2VyIHByZWZlcmVuY2VzIHdvblxcJ3QgYmUgbG9hZGVkIG9yIHNhdmVkIScpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcHJlZmVyZW5jZXMucHJlZmVyZW5jZXNDaGFuZ2VkJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2FkSGVhZGVyc0Zyb21QcmVmZXJlbmNlcygpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmluaXRpYWxpemVIZWFkZXJTdGF0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGVzIE9ic2VydmFibGUgZm9yIGFsbCBjaGFuZ2VzIGluIGhlYWRlclxuICAgICAqL1xuICAgIGdldCBoZWFkZXJDaGFuZ2UkKCk6IE9ic2VydmFibGU8SGVhZGVyQ2hhbmdlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oZWFkZXJDaGFuZ2UkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIGdldCBzZWxlY3RlZEhlYWRlcnMkKCk6IE9ic2VydmFibGU8QXJyYXk8SGVhZGVyQ29sdW1uPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faGVhZGVyU3RhdGUuc2VsZWN0ZWRIZWFkZXJzJDtcbiAgICB9XG5cbiAgICBnZXQgaGVhZGVyU3RhdGUoKTogSGVhZGVyU3RhdGVJbnRlcmZhY2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5faGVhZGVyU3RhdGUuYXNJbnRlcmZhY2UoKTtcbiAgICB9XG5cbiAgICBnZXQgaGVhZGVyVHlwZSgpOiBIZWFkZXJUeXBlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hlYWRlclR5cGU7XG4gICAgfVxuXG4gICAgZ2V0IGhlYWRlckNvbHVtbkNvdW50KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oZWFkZXJDb2x1bW5Db3VudCQuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICBzZXQgaGVhZGVyQ29sdW1uQ291bnQobWF4Q29sdW1uczogbnVtYmVyKSB7XG4gICAgICAgIGlmIChtYXhDb2x1bW5zICE9PSB0aGlzLmhlYWRlckNvbHVtbkNvdW50KSB7XG4gICAgICAgICAgICB0aGlzLl9oZWFkZXJDb2x1bW5Db3VudCQubmV4dChtYXhDb2x1bW5zKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlSGVhZGVyQ29sdW1uQ291bnQoKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5faW5pdGlhbGl6ZWRDb3VudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZURlZmF1bHRIZWFkZXJTdGF0ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2luaXRpYWxpemVkQ291bnQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGhlYWRlckNvbHVtbkNvdW50JCgpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faGVhZGVyQ29sdW1uQ291bnQkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIGdldCByZXNwb25zaXZlSGVhZGVycygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3BvbnNpdmVIZWFkZXJzJC5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIHNldCByZXNwb25zaXZlSGVhZGVycyhyZXNwb25zaXZlSGVhZGVyczogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9yZXNwb25zaXZlSGVhZGVycyQubmV4dChyZXNwb25zaXZlSGVhZGVycyk7XG4gICAgfVxuXG4gICAgZ2V0IHJlc3BvbnNpdmVIZWFkZXJzJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3BvbnNpdmVIZWFkZXJzJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBnZXQgY2xlYXJIZWFkZXJTZWFyY2gkKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jbGVhckhlYWRlclNlYXJjaCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgc2V0IGluaXREZWZhdWx0SGVhZGVycyhkZWZhdWx0SGVhZGVyczogQXJyYXk8c3RyaW5nPikge1xuICAgICAgICB0aGlzLl9pbml0RGVmYXVsdEhlYWRlcnMgPSBkZWZhdWx0SGVhZGVycztcbiAgICB9XG5cbiAgICBnZXQgaW5pdERlZmF1bHRIZWFkZXJzKCk6IEFycmF5PHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5pdERlZmF1bHRIZWFkZXJzO1xuICAgIH1cblxuICAgIGdldCBwcmVmZXJlbmNlQ29sdW1uQ291bnQkKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcmVmZXJlbmNlQ29sdW1uQ291bnQkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZUhlYWRlclN0YXRlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBkZWZhdWx0SGVhZGVycyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZmllbGRzR3JvdXBbMF0uZmllbGRzLmxlbmd0aCAmJiBkZWZhdWx0SGVhZGVycy5sZW5ndGggPCB0aGlzLmhlYWRlckNvbHVtbkNvdW50OyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmZpZWxkc0dyb3VwWzBdLmZpZWxkc1tpXS5pbml0aWFsKSB7XG4gICAgICAgICAgICAgICAgZGVmYXVsdEhlYWRlcnMucHVzaCh0aGlzLmZpZWxkc0dyb3VwWzBdLmZpZWxkc1tpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKGRlZmF1bHRIZWFkZXJzLmxlbmd0aCA8IHRoaXMuaGVhZGVyQ29sdW1uQ291bnQpIHtcbiAgICAgICAgICAgIGRlZmF1bHRIZWFkZXJzLnB1c2gobnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faGVhZGVyU3RhdGUgPSBuZXcgSGVhZGVyU3RhdGUoZGVmYXVsdEhlYWRlcnMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBpbml0aWFsaXplRGVmYXVsdEhlYWRlclN0YXRlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pbml0RGVmYXVsdEhlYWRlcnMgJiYgQXJyYXkuaXNBcnJheSh0aGlzLmluaXREZWZhdWx0SGVhZGVycykpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRIZWFkZXJzID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuaGVhZGVyQ29sdW1uQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgICAgIGRlZmF1bHRIZWFkZXJzLnB1c2gobnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuaW5pdERlZmF1bHRIZWFkZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGkgPj0gdGhpcy5oZWFkZXJDb2x1bW5Db3VudCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIud2FybigndGhlcmUgYXJlIG1vcmUgTkFFX0RFRkFVTFRfSEVBREVSUyB0aGFuIGhlYWRlciBjb2x1bW5zLiBTa2lwcGluZyB0aGUgcmVzdC4uLicpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBoIG9mIHRoaXMuZmllbGRzR3JvdXApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGVhZCA9IGguZmllbGRzLmZpbmQoaGVhZGVyID0+IGhlYWRlci51bmlxdWVJZCA9PT0gdGhpcy5pbml0RGVmYXVsdEhlYWRlcnNbaV0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaGVhZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEhlYWRlcnNbaV0gPSBoZWFkO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9oZWFkZXJTdGF0ZS51cGRhdGVTZWxlY3RlZEhlYWRlcnMoZGVmYXVsdEhlYWRlcnMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9hZEhlYWRlcnNGcm9tUHJlZmVyZW5jZXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGBudWxsYCBoZWFkZXJzIGlmIHRoZSBuZXcgY291bnQgaXMgZ3JlYXRlciB0aGFuIHRoZSBjdXJyZW50IGNvdW50LlxuICAgICAqXG4gICAgICogUmVtb3ZlcyBleHRyYSBoZWFkZXJzIGlmIHRoZSBuZXcgY291bnQgaXMgc21hbGxlciB0aGFuIHRoZSBjdXJyZW50IGNvdW50LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCB1cGRhdGVIZWFkZXJDb2x1bW5Db3VudCgpOiB2b2lkIHtcbiAgICAgICAgbGV0IGhlYWRlcnMgPSB0aGlzLl9oZWFkZXJTdGF0ZS5zZWxlY3RlZEhlYWRlcnM7XG4gICAgICAgIGlmIChoZWFkZXJzLmxlbmd0aCA8IHRoaXMuaGVhZGVyQ29sdW1uQ291bnQpIHtcbiAgICAgICAgICAgIHdoaWxlIChoZWFkZXJzLmxlbmd0aCAhPT0gdGhpcy5oZWFkZXJDb2x1bW5Db3VudCkge1xuICAgICAgICAgICAgICAgIGhlYWRlcnMucHVzaChudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChoZWFkZXJzLmxlbmd0aCA+IHRoaXMuaGVhZGVyQ29sdW1uQ291bnQpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNsaWNlKDAsIHRoaXMuaGVhZGVyQ29sdW1uQ291bnQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2hlYWRlclN0YXRlLnVwZGF0ZVNlbGVjdGVkSGVhZGVycyhoZWFkZXJzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0QWxsb3dlZE5ldHMoYWxsb3dlZE5ldHM6IEFycmF5PFBldHJpTmV0UmVmZXJlbmNlPikge1xuICAgICAgICAvKiBUT0RPIGJ5IHNpbXBseSByZXBsYWNpbmcgdGhlIHNlbGVjdCBvcHRpb25zIHdpdGggbmV3IG9iamVjdCwgd2UgZG9uJ3QgbG9vc2UgdGhlIG9sZCByZWZlcmVuY2VzLlxuICAgICAgICAgICAgIENvbHVtbnMgd2l0aCBoZWFkZXJzIGZyb20gbmV0cyB0aGF0IGFyZSBubyBsb25nZXIgYWxsb3dlZCBzaG91bGQgaGF2ZSB0aGVpciB2YWx1ZSBjbGVhcmVkLlxuICAgICAgICAgICAgIENvbHVtbnMgd2l0aCB2YWxpZCB2YWx1ZXMgdGhhdCBhcmUgbm90IG1ldGFkYXRhIHNob3VsZCBoYXZlIHRoZWlyIHNlbGVjdGlvbiByZW1hcHBlZCB0byB0aGUgbmV3IG9iamVjdHMuXG4gICAgICAgICAqL1xuXG4gICAgICAgIGNvbnN0IGZpZWxkc0dyb3VwczogQXJyYXk8RmllbGRzR3JvdXA+ID0gW107XG4gICAgICAgIGFsbG93ZWROZXRzLmZvckVhY2goYWxsb3dlZE5ldCA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWVsZHNHcm91cDogRmllbGRzR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBUaXRsZTogYWxsb3dlZE5ldC50aXRsZSxcbiAgICAgICAgICAgICAgICBmaWVsZHM6IFtdXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYWxsb3dlZE5ldC5pbW1lZGlhdGVEYXRhLmZvckVhY2goaW1tZWRpYXRlID0+IHtcbiAgICAgICAgICAgICAgICBmaWVsZHNHcm91cC5maWVsZHMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEhlYWRlckNvbHVtbihIZWFkZXJDb2x1bW5UeXBlLklNTUVESUFURSwgaW1tZWRpYXRlLnN0cmluZ0lkLCBpbW1lZGlhdGUudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbW1lZGlhdGUudHlwZSwgZmFsc2UsIGFsbG93ZWROZXQuaWRlbnRpZmllcilcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBmaWVsZHNHcm91cHMucHVzaChmaWVsZHNHcm91cCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZmllbGRzR3JvdXAuc3BsaWNlKDEsIHRoaXMuZmllbGRzR3JvdXAubGVuZ3RoIC0gMSk7XG4gICAgICAgIHRoaXMuZmllbGRzR3JvdXAucHVzaCguLi5maWVsZHNHcm91cHMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRUYXNrQWxsb3dlZE5ldHMoYWxsb3dlZE5ldHM6IEFycmF5PE5ldD4pIHtcbiAgICAgICAgLyogVE9ETyBieSBzaW1wbHkgcmVwbGFjaW5nIHRoZSBzZWxlY3Qgb3B0aW9ucyB3aXRoIG5ldyBvYmplY3QsIHdlIGRvbid0IGxvb3NlIHRoZSBvbGQgcmVmZXJlbmNlcy5cbiAgICAgICAgICAgICBDb2x1bW5zIHdpdGggaGVhZGVycyBmcm9tIG5ldHMgdGhhdCBhcmUgbm8gbG9uZ2VyIGFsbG93ZWQgc2hvdWxkIGhhdmUgdGhlaXIgdmFsdWUgY2xlYXJlZC5cbiAgICAgICAgICAgICBDb2x1bW5zIHdpdGggdmFsaWQgdmFsdWVzIHRoYXQgYXJlIG5vdCBtZXRhZGF0YSBzaG91bGQgaGF2ZSB0aGVpciBzZWxlY3Rpb24gcmVtYXBwZWQgdG8gdGhlIG5ldyBvYmplY3RzLlxuICAgICAgICAgKi9cblxuICAgICAgICBjb25zdCBmaWVsZHNHcm91cHM6IEFycmF5PEZpZWxkc0dyb3VwPiA9IFtdO1xuICAgICAgICBhbGxvd2VkTmV0cy5mb3JFYWNoKGFsbG93ZWROZXQgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmllbGRzR3JvdXA6IEZpZWxkc0dyb3VwID0ge1xuICAgICAgICAgICAgICAgIGdyb3VwVGl0bGU6IGFsbG93ZWROZXQudGl0bGUsXG4gICAgICAgICAgICAgICAgZmllbGRzOiBbXVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nID0gbmV3IFNldCgpO1xuICAgICAgICAgICAgYWxsb3dlZE5ldC50cmFuc2l0aW9ucy5mb3JFYWNoKHRyYW5zID0+IHtcbiAgICAgICAgICAgICAgICB0cmFucy5pbW1lZGlhdGVEYXRhLmZvckVhY2goZGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZXhpc3RpbmcuaGFzKGRhdGEuc3RyaW5nSWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZy5hZGQoZGF0YS5zdHJpbmdJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZHNHcm91cC5maWVsZHMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgSGVhZGVyQ29sdW1uKEhlYWRlckNvbHVtblR5cGUuSU1NRURJQVRFLCBkYXRhLnN0cmluZ0lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnRpdGxlLCBkYXRhLnR5cGUsIGZhbHNlLCBhbGxvd2VkTmV0LmlkZW50aWZpZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZpZWxkc0dyb3Vwcy5wdXNoKGZpZWxkc0dyb3VwKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5maWVsZHNHcm91cC5zcGxpY2UoMSwgdGhpcy5maWVsZHNHcm91cC5sZW5ndGggLSAxKTtcbiAgICAgICAgdGhpcy5maWVsZHNHcm91cC5wdXNoKC4uLmZpZWxkc0dyb3Vwcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSWYgdGhpcyB2aWV3IGhhcyBzb20gaGVhZGVycyBzdG9yZWQgaW4gaXQncyBwcmVmZXJlbmNlcyBhdHRlbXB0cyB0byBsb2FkIHRoZW0uXG4gICAgICogSWYgdGhlIHByZWZlcmVuY2VzIGNvbnRhaW4gbm9uZXhpc3RlbnQgaGVhZGVycyB0aGV5IHdpbGwgYmUgc2tpcHBlZC5cbiAgICAgKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgTk9UIGNhbGxlZCBieSB0aGUgYWJzdHJhY3QgY2xhc3MnIGNvbnN0cnVjdG9yLlxuICAgICAqIEl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgY2hpbGQgY2xhc3MgdG8gY2FsbCBpdCBhdCBhbiBhcHByb3ByaWF0ZSBtb21lbnQuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGxvYWRIZWFkZXJzRnJvbVByZWZlcmVuY2VzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB2aWV3SWQgPSB0aGlzLmdldFZpZXdJZCgpO1xuICAgICAgICBpZiAoIXZpZXdJZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByZWZlcnJlZEhlYWRlcktleXMgPSB0aGlzLl9wcmVmZXJlbmNlcy5nZXRIZWFkZXJzKHZpZXdJZCk7XG4gICAgICAgIGlmICghcHJlZmVycmVkSGVhZGVyS2V5cykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld0hlYWRlcnMgPSBbXTtcbiAgICAgICAgcHJlZmVycmVkSGVhZGVyS2V5cy5mb3JFYWNoKGhlYWRlcktleSA9PiB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZpZWxkR3JvdXAgb2YgdGhpcy5maWVsZHNHcm91cCkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaGVhZGVyIG9mIGZpZWxkR3JvdXAuZmllbGRzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChoZWFkZXIudW5pcXVlSWQgPT09IGhlYWRlcktleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3SGVhZGVycy5wdXNoKGhlYWRlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47IC8vIGNvbnRpbnVlIHRoZSBvdXRlcm1vc3QgbG9vcFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gbm8gbWF0Y2ggZm91bmRcbiAgICAgICAgICAgIG5ld0hlYWRlcnMucHVzaChudWxsKTtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKFxuICAgICAgICAgICAgICAgIGBDb3VsZCBub3QgcmVzdG9yZSBoZWFkZXIgd2l0aCBJRCAnJHtoZWFkZXJLZXl9JyBmcm9tIHByZWZlcmVuY2VzLiBJdCBpcyBub3Qgb25lIG9mIHRoZSBhdmFpbGFibGUgaGVhZGVycyBmb3IgdGhpcyB2aWV3LmApO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fcHJlZmVyZW5jZUNvbHVtbkNvdW50JC5uZXh0KG5ld0hlYWRlcnMubGVuZ3RoKTtcbiAgICAgICAgdGhpcy5faGVhZGVyU3RhdGUudXBkYXRlU2VsZWN0ZWRIZWFkZXJzKG5ld0hlYWRlcnMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBjcmVhdGVNZXRhSGVhZGVycygpOiBBcnJheTxIZWFkZXJDb2x1bW4+O1xuXG4gICAgLyoqXG4gICAgICogQ2hhbmdlIHNvcnQgbW9kZSBmb3Igc2VsZWN0ZWQgY29sdW1uIGFsbCBvdGhlciBjb2x1bW4gYXJlIHNldCB0byBkZWZhdWx0IHNvcnQgbW9kZVxuICAgICAqIEVtaXQgcmVxdWVzdCBmb3Igc29ydGVkIHBhbmVsc1xuICAgICAqIEBwYXJhbSBjb2x1bW5JbmRleCBpbmRleCBvZiB0aGUgY29sdW1uIHRoYXQgY2F1c2VkIHRoZSBzb3J0IGNoYW5nZVxuICAgICAqIEBwYXJhbSBhY3RpdmUgUmVwcmVzZW50cyBjb2x1bW4gaWRlbnRpZmllclxuICAgICAqIEBwYXJhbSBkaXJlY3Rpb24gUmVwcmVzZW50IG9uZSBvZiBzb3J0IG1vZGVzOiBhc2QsIGRlc2MgYW5kICcnXG4gICAgICovXG4gICAgcHVibGljIHNvcnRIZWFkZXJDaGFuZ2VkKGNvbHVtbkluZGV4OiBudW1iZXIsIGFjdGl2ZTogc3RyaW5nLCBkaXJlY3Rpb246IFNvcnREaXJlY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgbGV0IHNvcnRDaGFuZ2VEZXNjcmlwdGlvbjogU29ydENoYW5nZURlc2NyaXB0aW9uO1xuICAgICAgICBsZXQgZm91bmRGaXJzdE1hdGNoID0gZmFsc2U7IC8vIGNvbHVtbiBjYW4gZmVhdHVyZSBpbiB0aGUgaGVhZGVyIGluIG11bHRpcGxlIHBvc2l0aW9ucyA9PiB3ZSBkb24ndCB3YW50IHRvIHNlbmQgbXVsdGlwbGUgZXZlbnRzXG4gICAgICAgIHRoaXMuaGVhZGVyU3RhdGUuc2VsZWN0ZWRIZWFkZXJzLmZpbHRlcihoZWFkZXIgPT4gISFoZWFkZXIpLmZvckVhY2goaGVhZGVyID0+IHtcbiAgICAgICAgICAgIGlmIChoZWFkZXIudW5pcXVlSWQgPT09IGFjdGl2ZSAmJiAhZm91bmRGaXJzdE1hdGNoKSB7XG4gICAgICAgICAgICAgICAgc29ydENoYW5nZURlc2NyaXB0aW9uID0ge1xuICAgICAgICAgICAgICAgICAgICBzb3J0RGlyZWN0aW9uOiBkaXJlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtblR5cGU6IGhlYWRlci50eXBlLFxuICAgICAgICAgICAgICAgICAgICBmaWVsZElkZW50aWZpZXI6IGhlYWRlci5maWVsZElkZW50aWZpZXIsXG4gICAgICAgICAgICAgICAgICAgIHBldHJpTmV0SWRlbnRpZmllcjogaGVhZGVyLnBldHJpTmV0SWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uSWRlbnRpZmllcjogY29sdW1uSW5kZXgsXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkVHlwZTogaGVhZGVyLmZpZWxkVHlwZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaGVhZGVyLnNvcnREaXJlY3Rpb24gPSBkaXJlY3Rpb247XG4gICAgICAgICAgICAgICAgZm91bmRGaXJzdE1hdGNoID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaGVhZGVyLnNvcnREaXJlY3Rpb24gPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2hlYWRlckNoYW5nZSQubmV4dCh7aGVhZGVyVHlwZTogdGhpcy5oZWFkZXJUeXBlLCBjaGFuZ2VUeXBlOiBIZWFkZXJDaGFuZ2VUeXBlLlNPUlQsIGRlc2NyaXB0aW9uOiBzb3J0Q2hhbmdlRGVzY3JpcHRpb259KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTYXZlcyB0aGUgc2VhcmNoIHZhbHVlIGluIHRoZSBhcHByb3ByaWF0ZSBjb2x1bW4gaW4gdGhlIGhlYWRlclxuICAgICAqIEVtaXQgcmVxdWVzdCBmb3Igc2VhcmNoZWQgcGFuZWxzIGJ5IHVzZXIgaW5wdXQgcXVlcnlcbiAgICAgKi9cbiAgICBwdWJsaWMgaGVhZGVyU2VhcmNoSW5wdXRDaGFuZ2VkKGNvbHVtbkluZGV4OiBudW1iZXIsIHNlYXJjaElucHV0OiBhbnkpIHtcbiAgICAgICAgY29uc3QgYWZmZWN0ZWRIZWFkZXIgPSB0aGlzLmhlYWRlclN0YXRlLnNlbGVjdGVkSGVhZGVyc1tjb2x1bW5JbmRleF07XG4gICAgICAgIGFmZmVjdGVkSGVhZGVyLnNlYXJjaElucHV0ID0gc2VhcmNoSW5wdXQ7XG4gICAgICAgIGNvbnN0IHNlYXJjaENoYW5nZURlc2NyaXB0aW9uOiBTZWFyY2hDaGFuZ2VEZXNjcmlwdGlvbiA9IHtcbiAgICAgICAgICAgIGZpZWxkSWRlbnRpZmllcjogYWZmZWN0ZWRIZWFkZXIuZmllbGRJZGVudGlmaWVyLFxuICAgICAgICAgICAgZmllbGRUeXBlOiBhZmZlY3RlZEhlYWRlci5maWVsZFR5cGUsXG4gICAgICAgICAgICBmaWVsZFRpdGxlOiBhZmZlY3RlZEhlYWRlci50aXRsZSxcbiAgICAgICAgICAgIHNlYXJjaElucHV0LFxuICAgICAgICAgICAgdHlwZTogYWZmZWN0ZWRIZWFkZXIudHlwZSxcbiAgICAgICAgICAgIHBldHJpTmV0SWRlbnRpZmllcjogYWZmZWN0ZWRIZWFkZXIucGV0cmlOZXRJZGVudGlmaWVyLFxuICAgICAgICAgICAgY29sdW1uSWRlbnRpZmllcjogY29sdW1uSW5kZXhcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5faGVhZGVyQ2hhbmdlJC5uZXh0KHtcbiAgICAgICAgICAgIGhlYWRlclR5cGU6IHRoaXMuaGVhZGVyVHlwZSxcbiAgICAgICAgICAgIGNoYW5nZVR5cGU6IEhlYWRlckNoYW5nZVR5cGUuU0VBUkNILFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHNlYXJjaENoYW5nZURlc2NyaXB0aW9uXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoYW5nZSBhY3RpdmUgaGVhZGVyIGFuZCB0aXRsZXMgb2YgcGFuZWxzXG4gICAgICovXG4gICAgcHVibGljIGhlYWRlckNvbHVtblNlbGVjdGVkKGNvbHVtbkluZGV4OiBudW1iZXIsIG5ld0hlYWRlckNvbHVtbjogSGVhZGVyQ29sdW1uKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5ld0hlYWRlcnM6IEFycmF5PEhlYWRlckNvbHVtbj4gPSBbXTtcbiAgICAgICAgbmV3SGVhZGVycy5wdXNoKC4uLnRoaXMuX2hlYWRlclN0YXRlLnNlbGVjdGVkSGVhZGVycyk7XG4gICAgICAgIGlmICghIW5ld0hlYWRlcnNbY29sdW1uSW5kZXhdKSB7XG4gICAgICAgICAgICBuZXdIZWFkZXJzW2NvbHVtbkluZGV4XS5zb3J0RGlyZWN0aW9uID0gJyc7XG4gICAgICAgICAgICBuZXdIZWFkZXJzW2NvbHVtbkluZGV4XS5zZWFyY2hJbnB1dCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBuZXdIZWFkZXJzW2NvbHVtbkluZGV4XSA9IG5ld0hlYWRlckNvbHVtbjtcbiAgICAgICAgdGhpcy5faGVhZGVyU3RhdGUudXBkYXRlU2VsZWN0ZWRIZWFkZXJzKG5ld0hlYWRlcnMpO1xuICAgICAgICB0aGlzLl9oZWFkZXJDaGFuZ2UkLm5leHQoe1xuICAgICAgICAgICAgaGVhZGVyVHlwZTogdGhpcy5oZWFkZXJUeXBlLFxuICAgICAgICAgICAgY2hhbmdlVHlwZTogSGVhZGVyQ2hhbmdlVHlwZS5FRElULFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHtwcmVmZXJyZWRIZWFkZXJzOiB0aGlzLl9oZWFkZXJTdGF0ZS5zZWxlY3RlZEhlYWRlcnN9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoYW5nZSBzZWxlY3RlZCBoZWFkZXIgbW9kZSB0aGVyZSBhcmUgdGhyZWUgcG9zc2libGUgbW9kZXM6IFNPUlQsIFNFQVJDSCBhbmQgRURJVFxuICAgICAqIEBwYXJhbSBuZXdNb2RlIHRoZSBtb2RlIHRoYXQgdGhlIGhlYWRlciBzaG91bGQgY2hhbmdlIHRvXG4gICAgICogQHBhcmFtIHNhdmVMYXN0TW9kZSB3aGV0aGVyIHRoZSBsYXN0IHN0YXRlIHNob3VsZCBiZSByZW1lbWJlcmVkLlxuICAgICAqIEl0IGNhbiBiZSByZXN0b3JlZCB3aXRoIHRoZSBbSGVhZGVyU3RhdGUucmVzdG9yZUxhc3RNb2RlKClde0BsaW5rIEhlYWRlclN0YXRlI3Jlc3RvcmVMYXN0TW9kZX0gbWV0aG9kLlxuICAgICAqL1xuICAgIHB1YmxpYyBjaGFuZ2VNb2RlKG5ld01vZGU6IEhlYWRlck1vZGUsIHNhdmVMYXN0TW9kZSA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKG5ld01vZGUgPT09IHRoaXMuX2hlYWRlclN0YXRlLm1vZGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzYXZlTGFzdE1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2hlYWRlclN0YXRlLnNhdmVTdGF0ZSgpO1xuICAgICAgICAgICAgdGhpcy5zYXZlU3RhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNoYW5nZSA9IHRoaXMubW9kZUNoYW5nZUZyb21DdXJyZW50KG5ld01vZGUpO1xuICAgICAgICB0aGlzLl9oZWFkZXJTdGF0ZS5tb2RlID0gbmV3TW9kZTtcbiAgICAgICAgdGhpcy5faGVhZGVyQ2hhbmdlJC5uZXh0KGNoYW5nZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbmZpcm1FZGl0TW9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faGVhZGVyU3RhdGUucmVzdG9yZUxhc3RNb2RlKCk7XG4gICAgICAgIHRoaXMuc2F2ZU5ld1N0YXRlKCk7XG4gICAgICAgIGNvbnN0IGNoYW5nZSA9IHRoaXMubW9kZUNoYW5nZUFmdGVyRWRpdCgpO1xuICAgICAgICBjb25zdCB2aWV3SWQgPSB0aGlzLmdldFZpZXdJZCgpO1xuICAgICAgICBpZiAoISF2aWV3SWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmhlYWRlclN0YXRlLnNlbGVjdGVkSGVhZGVycztcbiAgICAgICAgICAgIHRoaXMuX3ByZWZlcmVuY2VzLnNldEhlYWRlcnModmlld0lkLCBoZWFkZXJzLm1hcChoZWFkZXIgPT4gISFoZWFkZXIgPyBoZWFkZXIudW5pcXVlSWQgOiAnJykpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2hlYWRlckNoYW5nZSQubmV4dChjaGFuZ2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZW4gdXNlciBjYW5jZWxzIHRoZSBlZGl0IG1vZGUsIHRoZSBsYXN0IHNhdmVkIGhlYWRlcnMgc3RhdGUgaXMgbG9hZGVkIGFuZCBlbWl0dGVkXG4gICAgICogTGFzdCBtb2RlIGluIGhlYWRlciBpcyByZWxvYWRlZCBhcyB3ZWxsLiBQb3NzaWJsZSByZWxvYWRlZCBtb2Rlczogc29ydCBvciBzZWFyY2hcbiAgICAgKi9cbiAgICBwdWJsaWMgcmV2ZXJ0RWRpdE1vZGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2hlYWRlclN0YXRlLnJlc3RvcmVMYXN0U3RhdGUoKTtcbiAgICAgICAgdGhpcy5yZXN0b3JlTGFzdFN0YXRlKCk7XG4gICAgICAgIGNvbnN0IGNoYW5nZSA9IHRoaXMubW9kZUNoYW5nZUFmdGVyRWRpdCgpO1xuICAgICAgICB0aGlzLl9oZWFkZXJDaGFuZ2UkLm5leHQoe1xuICAgICAgICAgICAgaGVhZGVyVHlwZTogdGhpcy5oZWFkZXJUeXBlLFxuICAgICAgICAgICAgY2hhbmdlVHlwZTogSGVhZGVyQ2hhbmdlVHlwZS5FRElULFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHtwcmVmZXJyZWRIZWFkZXJzOiB0aGlzLl9oZWFkZXJTdGF0ZS5zZWxlY3RlZEhlYWRlcnN9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9oZWFkZXJDaGFuZ2UkLm5leHQoY2hhbmdlKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faGVhZGVyQ2hhbmdlJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9jbGVhckhlYWRlclNlYXJjaCQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5faGVhZGVyQ29sdW1uQ291bnQkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX3Jlc3BvbnNpdmVIZWFkZXJzJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLmxvYWRpbmcuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5fcHJlZmVyZW5jZUNvbHVtbkNvdW50JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBuZXdNb2RlIHRoZSB7QGxpbmsgSGVhZGVyTW9kZX0gdGhhdCBpcyBiZWluZyBzZWxlY3RlZCBhcyB0aGUgbmV4dCBtb2RlXG4gICAgICogQHJldHVybnNhIHtAbGluayBIZWFkZXJDaGFuZ2V9IG9iamVjdCB3aXRoIHtAbGluayBNb2RlQ2hhbmdlRGVzY3JpcHRpb259IG9iamVjdCBhcyBpdCdzIGBkZXNjcmlwdGlvbmAsXG4gICAgICogd2hlcmUgdGhlIGBwcmV2aW91c01vZGVgIGlzIHNldCB0byB0aGUgY3VycmVudGx5IHNlbGVjdGVkIG1vZGUgYW5kIHRoZSBgY3VycmVudE1vZGVgIGlzIHNldCB0byB0aGUgcHJvdmlkZWQgYXJndW1lbnRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgbW9kZUNoYW5nZUZyb21DdXJyZW50KG5ld01vZGU6IEhlYWRlck1vZGUpOiBIZWFkZXJDaGFuZ2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVNb2RlQ2hhbmdlKHRoaXMuX2hlYWRlclN0YXRlLm1vZGUsIG5ld01vZGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIGEge0BsaW5rIEhlYWRlckNoYW5nZX0gb2JqZWN0IHdpdGgge0BsaW5rIE1vZGVDaGFuZ2VEZXNjcmlwdGlvbn0gb2JqZWN0IGFzIGl0J3MgYGRlc2NyaXB0aW9uYCxcbiAgICAgKiB3aGVyZSB0aGUgYHByZXZpb3VzTW9kZWAgaXMgc2V0IHRvIFtFRElUXXtAbGluayBIZWFkZXJNb2RlI0VESVR9IGFuZCB0aGUgYGN1cnJlbnRNb2RlYCB0byB0aGUgbW9kZVxuICAgICAqIHRoYXQgaXMgY3VycmVudGx5IHNlbGVjdGVkXG4gICAgICovXG4gICAgcHJvdGVjdGVkIG1vZGVDaGFuZ2VBZnRlckVkaXQoKTogSGVhZGVyQ2hhbmdlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlTW9kZUNoYW5nZShIZWFkZXJNb2RlLkVESVQsIHRoaXMuX2hlYWRlclN0YXRlLm1vZGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBvbGRNb2RlIHRoZSB7QGxpbmsgSGVhZGVyTW9kZX0gdGhhdCB3YXMgcHJldmlvdXNseSBzZWxlY3RlZFxuICAgICAqIEBwYXJhbSBuZXdNb2RlIHRoZSB7QGxpbmsgSGVhZGVyTW9kZX0gdGhhdCBpcyBzZWxlY3RlZCBub3dcbiAgICAgKiBAcmV0dXJucyBhIHtAbGluayBIZWFkZXJDaGFuZ2V9IG9iamVjdCB3aXRoIHtAbGluayBNb2RlQ2hhbmdlRGVzY3JpcHRpb259IG9iamVjdCBhcyBpdCdzIGBkZXNjcmlwdGlvbmBcbiAgICAgKiBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IGEgY2hhbmdlIHRvIHRoZSBoZWFkZXIgbW9kZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjcmVhdGVNb2RlQ2hhbmdlKG9sZE1vZGU6IEhlYWRlck1vZGUsIG5ld01vZGU6IEhlYWRlck1vZGUpOiBIZWFkZXJDaGFuZ2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2hhbmdlVHlwZTogSGVhZGVyQ2hhbmdlVHlwZS5NT0RFX0NIQU5HRUQsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRNb2RlOiBuZXdNb2RlLFxuICAgICAgICAgICAgICAgIHByZXZpb3VzTW9kZTogb2xkTW9kZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhlYWRlclR5cGU6IHRoaXMuaGVhZGVyVHlwZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVtaXRzIGEgbmV3IHZhbHVlIGludG8gdGhlIFtjbGVhckhlYWRlclNlYXJjaCRde0BsaW5rIEFic3RyYWN0SGVhZGVyU2VydmljZSNjbGVhckhlYWRlclNlYXJjaCR9IHN0cmVhbSwgdGhhdCBub3RpZmllc1xuICAgICAqIHRoZSBoZWFkZXIgc2VhcmNoIGNvbXBvbmVudCwgdGhhdCBpdCBzaG91bGQgY2xlYXIgdGhlIGlucHV0IGZvciB0aGUgc3BlY2lmaWVkIGNvbHVtbi5cbiAgICAgKiBAcGFyYW0gY29sdW1uSW5kZXggdGhlIGluZGV4IG9mIHRoZSBjb2x1bW4gdGhhdCBzaG91bGQgYmUgY2xlYXJlZFxuICAgICAqL1xuICAgIHB1YmxpYyBjbGVhckhlYWRlclNlYXJjaChjb2x1bW5JbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NsZWFySGVhZGVyU2VhcmNoJC5uZXh0KGNvbHVtbkluZGV4KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyB0aGUgSWQgb2YgdGhlIHZpZXcsIGlmIHRoZSBWaWV3SWRTZXJ2aWNlIHdhcyBpbmplY3RlZC4gUmV0dXJucyBgdW5kZWZpbmVkYCBpZiB0aGUgc2VydmljZSB3YXMgbm90IGluamVjdGVkLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXRWaWV3SWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHRoaXMuX3ZpZXdJZFNlcnZpY2UpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl92aWV3SWRTZXJ2aWNlLnZpZXdJZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBzYXZlU3RhdGUoKTtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBzYXZlTmV3U3RhdGUoKTtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCByZXN0b3JlTGFzdFN0YXRlKCk7XG59XG4iXX0=
402
+ }] }]; } });
403
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtaGVhZGVyLXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2hlYWRlci9hYnN0cmFjdC1oZWFkZXItc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsZUFBZSxFQUFjLGFBQWEsRUFBRSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFekUsT0FBTyxFQUFDLFdBQVcsRUFBdUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQUMsVUFBVSxFQUFhLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQU05RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFDLFlBQVksRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBR3RFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUUxRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7OztBQU0xRSxNQUFNLE9BQWdCLHFCQUFxQjtJQWlCdkMsWUFBZ0MsV0FBdUIsRUFDdkIsWUFBbUMsRUFDbkMsT0FBc0IsRUFDWixjQUE2QixFQUMzQixnQkFBaUM7UUFKN0MsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsaUJBQVksR0FBWixZQUFZLENBQXVCO1FBQ25DLFlBQU8sR0FBUCxPQUFPLENBQWU7UUFDWixtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUMzQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlCO1FBQ3pFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLE9BQU8sRUFBZ0IsQ0FBQztRQUNsRCxJQUFJLENBQUMsV0FBVyxHQUFHLENB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TzthQUN4QjtZQUNELFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtTQUM5QixDQUFDO0lBQ04sQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxpQkFBaUIsQ0FBQyxXQUFtQjtRQUN4QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7T0FFRztJQUNPLFNBQVM7UUFDZixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDckIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQztTQUNyQztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7O0FBdGJzQiwwQ0FBb0IsR0FBRyxDQUFFLENBQUE7QUFDekIsaURBQTJCLEdBQUcsSUFBSyxDQUFBO21IQUh4QyxxQkFBcUI7dUhBQXJCLHFCQUFxQjs0RkFBckIscUJBQXFCO2tCQUQxQyxVQUFVOzswQkFxQmdCLFFBQVE7OzBCQUNSLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0ZpZWxkc0dyb3VwfSBmcm9tICcuL21vZGVscy9maWVsZHMtZ3JvdXAnO1xuaW1wb3J0IHtIZWFkZXJTdGF0ZSwgSGVhZGVyU3RhdGVJbnRlcmZhY2V9IGZyb20gJy4vaGVhZGVyLXN0YXRlJztcbmltcG9ydCB7SW5qZWN0YWJsZSwgT25EZXN0cm95LCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1NvcnRDaGFuZ2VEZXNjcmlwdGlvbn0gZnJvbSAnLi9tb2RlbHMvdXNlci1jaGFuZ2VzL3NvcnQtY2hhbmdlLWRlc2NyaXB0aW9uJztcbmltcG9ydCB7U2VhcmNoQ2hhbmdlRGVzY3JpcHRpb259IGZyb20gJy4vbW9kZWxzL3VzZXItY2hhbmdlcy9zZWFyY2gtY2hhbmdlLWRlc2NyaXB0aW9uJztcbmltcG9ydCB7SGVhZGVyQ2hhbmdlfSBmcm9tICcuL21vZGVscy91c2VyLWNoYW5nZXMvaGVhZGVyLWNoYW5nZSc7XG5pbXBvcnQge1BldHJpTmV0UmVmZXJlbmNlfSBmcm9tICcuLi9yZXNvdXJjZXMvaW50ZXJmYWNlL3BldHJpLW5ldC1yZWZlcmVuY2UnO1xuaW1wb3J0IHtIZWFkZXJUeXBlfSBmcm9tICcuL21vZGVscy9oZWFkZXItdHlwZSc7XG5pbXBvcnQge0hlYWRlck1vZGV9IGZyb20gJy4vbW9kZWxzL2hlYWRlci1tb2RlJztcbmltcG9ydCB7SGVhZGVyQ29sdW1uLCBIZWFkZXJDb2x1bW5UeXBlfSBmcm9tICcuL21vZGVscy9oZWFkZXItY29sdW1uJztcbmltcG9ydCB7VXNlclByZWZlcmVuY2VTZXJ2aWNlfSBmcm9tICcuLi91c2VyL3NlcnZpY2VzL3VzZXItcHJlZmVyZW5jZS5zZXJ2aWNlJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7TG9hZGluZ0VtaXR0ZXJ9IGZyb20gJy4uL3V0aWxpdHkvbG9hZGluZy1lbWl0dGVyJztcbmltcG9ydCB7U29ydERpcmVjdGlvbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQge0hlYWRlckNoYW5nZVR5cGV9IGZyb20gJy4vbW9kZWxzL3VzZXItY2hhbmdlcy9oZWFkZXItY2hhbmdlLXR5cGUnO1xuaW1wb3J0IHtWaWV3SWRTZXJ2aWNlfSBmcm9tICcuLi91c2VyL3NlcnZpY2VzL3ZpZXctaWQuc2VydmljZSc7XG5pbXBvcnQge05ldH0gZnJvbSAnLi4vcHJvY2Vzcy9uZXQnO1xuaW1wb3J0IHsgT3ZlcmZsb3dTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9vdmVyZmxvdy5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0SGVhZGVyU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfSEVBREVSX0NPVU5UID0gNTtcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfSEVBREVSX1JFU1BPTlNJVklUWSA9IHRydWU7XG5cbiAgICBwcm90ZWN0ZWQgX2hlYWRlckNvbHVtbkNvdW50JDogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj47XG4gICAgcHJvdGVjdGVkIF9wcmVmZXJlbmNlQ29sdW1uQ291bnQkOiBSZXBsYXlTdWJqZWN0PG51bWJlcj47XG4gICAgcHJvdGVjdGVkIF9yZXNwb25zaXZlSGVhZGVycyQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcbiAgICBwcm90ZWN0ZWQgX2hlYWRlclN0YXRlOiBIZWFkZXJTdGF0ZTtcbiAgICBwcm90ZWN0ZWQgX2hlYWRlckNoYW5nZSQ6IFN1YmplY3Q8SGVhZGVyQ2hhbmdlPjtcbiAgICBwcm90ZWN0ZWQgX2NsZWFySGVhZGVyU2VhcmNoJDogU3ViamVjdDxudW1iZXI+O1xuICAgIHByaXZhdGUgX2luaXREZWZhdWx0SGVhZGVyczogQXJyYXk8c3RyaW5nPjtcbiAgICBwcml2YXRlIF9pbml0aWFsaXplZENvdW50OiBib29sZWFuO1xuXG4gICAgcHVibGljIGxvYWRpbmc6IExvYWRpbmdFbWl0dGVyO1xuICAgIHB1YmxpYyBmaWVsZHNHcm91cDogQXJyYXk8RmllbGRzR3JvdXA+O1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfaGVhZGVyVHlwZTogSGVhZGVyVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9wcmVmZXJlbmNlczogVXNlclByZWZlcmVuY2VTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2xvZ2dlcjogTG9nZ2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfdmlld0lkU2VydmljZTogVmlld0lkU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIF9vdmVyZmxvd1NlcnZpY2U6IE92ZXJmbG93U2VydmljZSkge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBuZXcgTG9hZGluZ0VtaXR0ZXIodHJ1ZSk7XG4gICAgICAgIHRoaXMuX2hlYWRlckNoYW5nZSQgPSBuZXcgU3ViamVjdDxIZWFkZXJDaGFuZ2U+KCk7XG4gICAgICAgIHRoaXMuZmllbGRzR3JvdXAgPSBbe2dyb3VwVGl0bGU6ICdNZXRhIGRhdGEnLCBmaWVsZHM6IHRoaXMuY3JlYXRlTWV0YUhlYWRlcnMoKX1dO1xuICAgICAgICB0aGlzLl9oZWFkZXJDb2x1bW5Db3VudCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oQWJzdHJhY3RIZWFkZXJTZXJ2aWNlLkRFRkFVTFRfSEVBREVSX0NPVU5UKTtcbiAgICAgICAgdGhpcy5fcmVzcG9uc2l2ZUhlYWRlcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihBYnN0cmFjdEhlYWRlclNlcnZpY2UuREVGQVVMVF9IRUFERVJfUkVTUE9OU0lWSVRZKTtcbiAgICAgICAgdGhpcy5fcHJlZmVyZW5jZUNvbHVtbkNvdW50JCA9IG5ldyBSZXBsYXlTdWJqZWN0PG51bWJlcj4oKTtcbiAgICAgICAgdGhpcy5fY2xlYXJIZWFkZXJTZWFyY2gkID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuICAgICAgICB0aGlzLl9pbml0aWFsaXplZENvdW50ID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHRoaXMuX3ZpZXdJZFNlcnZpY2UgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdIZWFkZXIgc2VydmljZSBjb3VsZCBub3QgaW5qZWN0IFZpZXdJZFNlcnZpY2UhIFVzZXIgcHJlZmVyZW5jZXMgd29uXFwndCBiZSBsb2FkZWQgb3Igc2F2ZWQhJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9wcmVmZXJlbmNlcy5wcmVmZXJlbmNlc0NoYW5nZWQkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRIZWFkZXJzRnJvbVByZWZlcmVuY2VzKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZUhlYWRlclN0YXRlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvdmlkZXMgT2JzZXJ2YWJsZSBmb3IgYWxsIGNoYW5nZXMgaW4gaGVhZGVyXG4gICAgICovXG4gICAgZ2V0IGhlYWRlckNoYW5nZSQoKTogT2JzZXJ2YWJsZTxIZWFkZXJDaGFuZ2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hlYWRlckNoYW5nZSQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgZ2V0IHNlbGVjdGVkSGVhZGVycyQoKTogT2JzZXJ2YWJsZTxBcnJheTxIZWFkZXJDb2x1bW4+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oZWFkZXJTdGF0ZS5zZWxlY3RlZEhlYWRlcnMkO1xuICAgIH1cblxuICAgIGdldCBoZWFkZXJTdGF0ZSgpOiBIZWFkZXJTdGF0ZUludGVyZmFjZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oZWFkZXJTdGF0ZS5hc0ludGVyZmFjZSgpO1xuICAgIH1cblxuICAgIGdldCBoZWFkZXJUeXBlKCk6IEhlYWRlclR5cGUge1xuICAgICAgICByZXR1cm4gdGhpcy5faGVhZGVyVHlwZTtcbiAgICB9XG5cbiAgICBnZXQgb3ZlcmZsb3dNb2RlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3ZlcmZsb3dTZXJ2aWNlLm92ZXJmbG93TW9kZTtcbiAgICB9XG5cbiAgICBnZXQgaGVhZGVyQ29sdW1uQ291bnQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hlYWRlckNvbHVtbkNvdW50JC5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIHNldCBoZWFkZXJDb2x1bW5Db3VudChtYXhDb2x1bW5zOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKG1heENvbHVtbnMgIT09IHRoaXMuaGVhZGVyQ29sdW1uQ291bnQpIHtcbiAgICAgICAgICAgIHRoaXMuX2hlYWRlckNvbHVtbkNvdW50JC5uZXh0KG1heENvbHVtbnMpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVIZWFkZXJDb2x1bW5Db3VudCgpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9pbml0aWFsaXplZENvdW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplRGVmYXVsdEhlYWRlclN0YXRlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZWRDb3VudCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgaGVhZGVyQ29sdW1uQ291bnQkKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oZWFkZXJDb2x1bW5Db3VudCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgZ2V0IHJlc3BvbnNpdmVIZWFkZXJzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzcG9uc2l2ZUhlYWRlcnMkLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgc2V0IHJlc3BvbnNpdmVIZWFkZXJzKHJlc3BvbnNpdmVIZWFkZXJzOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3Jlc3BvbnNpdmVIZWFkZXJzJC5uZXh0KHJlc3BvbnNpdmVIZWFkZXJzKTtcbiAgICB9XG5cbiAgICBnZXQgcmVzcG9uc2l2ZUhlYWRlcnMkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzcG9uc2l2ZUhlYWRlcnMkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIGdldCBjbGVhckhlYWRlclNlYXJjaCQoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NsZWFySGVhZGVyU2VhcmNoJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBzZXQgaW5pdERlZmF1bHRIZWFkZXJzKGRlZmF1bHRIZWFkZXJzOiBBcnJheTxzdHJpbmc+KSB7XG4gICAgICAgIHRoaXMuX2luaXREZWZhdWx0SGVhZGVycyA9IGRlZmF1bHRIZWFkZXJzO1xuICAgIH1cblxuICAgIGdldCBpbml0RGVmYXVsdEhlYWRlcnMoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbml0RGVmYXVsdEhlYWRlcnM7XG4gICAgfVxuXG4gICAgZ2V0IHByZWZlcmVuY2VDb2x1bW5Db3VudCQoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ByZWZlcmVuY2VDb2x1bW5Db3VudCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplSGVhZGVyU3RhdGUoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRIZWFkZXJzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5maWVsZHNHcm91cFswXS5maWVsZHMubGVuZ3RoICYmIGRlZmF1bHRIZWFkZXJzLmxlbmd0aCA8IHRoaXMuaGVhZGVyQ29sdW1uQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZmllbGRzR3JvdXBbMF0uZmllbGRzW2ldLmluaXRpYWwpIHtcbiAgICAgICAgICAgICAgICBkZWZhdWx0SGVhZGVycy5wdXNoKHRoaXMuZmllbGRzR3JvdXBbMF0uZmllbGRzW2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoZGVmYXVsdEhlYWRlcnMubGVuZ3RoIDwgdGhpcy5oZWFkZXJDb2x1bW5Db3VudCkge1xuICAgICAgICAgICAgZGVmYXVsdEhlYWRlcnMucHVzaChudWxsKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9oZWFkZXJTdGF0ZSA9IG5ldyBIZWFkZXJTdGF0ZShkZWZhdWx0SGVhZGVycyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGluaXRpYWxpemVEZWZhdWx0SGVhZGVyU3RhdGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmluaXREZWZhdWx0SGVhZGVycyAmJiBBcnJheS5pc0FycmF5KHRoaXMuaW5pdERlZmF1bHRIZWFkZXJzKSkge1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdEhlYWRlcnMgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5oZWFkZXJDb2x1bW5Db3VudDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgZGVmYXVsdEhlYWRlcnMucHVzaChudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5pbml0RGVmYXVsdEhlYWRlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaSA+PSB0aGlzLmhlYWRlckNvbHVtbkNvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCd0aGVyZSBhcmUgbW9yZSBOQUVfREVGQVVMVF9IRUFERVJTIHRoYW4gaGVhZGVyIGNvbHVtbnMuIFNraXBwaW5nIHRoZSByZXN0Li4uJyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGggb2YgdGhpcy5maWVsZHNHcm91cCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBoZWFkID0gaC5maWVsZHMuZmluZChoZWFkZXIgPT4gaGVhZGVyLnVuaXF1ZUlkID09PSB0aGlzLmluaXREZWZhdWx0SGVhZGVyc1tpXSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChoZWFkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0SGVhZGVyc1tpXSA9IGhlYWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2hlYWRlclN0YXRlLnVwZGF0ZVNlbGVjdGVkSGVhZGVycyhkZWZhdWx0SGVhZGVycyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2FkSGVhZGVyc0Zyb21QcmVmZXJlbmNlcygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYG51bGxgIGhlYWRlcnMgaWYgdGhlIG5ldyBjb3VudCBpcyBncmVhdGVyIHRoYW4gdGhlIGN1cnJlbnQgY291bnQuXG4gICAgICpcbiAgICAgKiBSZW1vdmVzIGV4dHJhIGhlYWRlcnMgaWYgdGhlIG5ldyBjb3VudCBpcyBzbWFsbGVyIHRoYW4gdGhlIGN1cnJlbnQgY291bnQuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHVwZGF0ZUhlYWRlckNvbHVtbkNvdW50KCk6IHZvaWQge1xuICAgICAgICBsZXQgaGVhZGVycyA9IHRoaXMuX2hlYWRlclN0YXRlLnNlbGVjdGVkSGVhZGVycztcbiAgICAgICAgaWYgKGhlYWRlcnMubGVuZ3RoIDwgdGhpcy5oZWFkZXJDb2x1bW5Db3VudCkge1xuICAgICAgICAgICAgd2hpbGUgKGhlYWRlcnMubGVuZ3RoICE9PSB0aGlzLmhlYWRlckNvbHVtbkNvdW50KSB7XG4gICAgICAgICAgICAgICAgaGVhZGVycy5wdXNoKG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGhlYWRlcnMubGVuZ3RoID4gdGhpcy5oZWFkZXJDb2x1bW5Db3VudCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2xpY2UoMCwgdGhpcy5oZWFkZXJDb2x1bW5Db3VudCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faGVhZGVyU3RhdGUudXBkYXRlU2VsZWN0ZWRIZWFkZXJzKGhlYWRlcnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRBbGxvd2VkTmV0cyhhbGxvd2VkTmV0czogQXJyYXk8UGV0cmlOZXRSZWZlcmVuY2U+KSB7XG4gICAgICAgIC8qIFRPRE8gYnkgc2ltcGx5IHJlcGxhY2luZyB0aGUgc2VsZWN0IG9wdGlvbnMgd2l0aCBuZXcgb2JqZWN0LCB3ZSBkb24ndCBsb29zZSB0aGUgb2xkIHJlZmVyZW5jZXMuXG4gICAgICAgICAgICAgQ29sdW1ucyB3aXRoIGhlYWRlcnMgZnJvbSBuZXRzIHRoYXQgYXJlIG5vIGxvbmdlciBhbGxvd2VkIHNob3VsZCBoYXZlIHRoZWlyIHZhbHVlIGNsZWFyZWQuXG4gICAgICAgICAgICAgQ29sdW1ucyB3aXRoIHZhbGlkIHZhbHVlcyB0aGF0IGFyZSBub3QgbWV0YWRhdGEgc2hvdWxkIGhhdmUgdGhlaXIgc2VsZWN0aW9uIHJlbWFwcGVkIHRvIHRoZSBuZXcgb2JqZWN0cy5cbiAgICAgICAgICovXG5cbiAgICAgICAgY29uc3QgZmllbGRzR3JvdXBzOiBBcnJheTxGaWVsZHNHcm91cD4gPSBbXTtcbiAgICAgICAgYWxsb3dlZE5ldHMuZm9yRWFjaChhbGxvd2VkTmV0ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkc0dyb3VwOiBGaWVsZHNHcm91cCA9IHtcbiAgICAgICAgICAgICAgICBncm91cFRpdGxlOiBhbGxvd2VkTmV0LnRpdGxlLFxuICAgICAgICAgICAgICAgIGZpZWxkczogW11cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBhbGxvd2VkTmV0LmltbWVkaWF0ZURhdGEuZm9yRWFjaChpbW1lZGlhdGUgPT4ge1xuICAgICAgICAgICAgICAgIGZpZWxkc0dyb3VwLmZpZWxkcy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBuZXcgSGVhZGVyQ29sdW1uKEhlYWRlckNvbHVtblR5cGUuSU1NRURJQVRFLCBpbW1lZGlhdGUuc3RyaW5nSWQsIGltbWVkaWF0ZS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltbWVkaWF0ZS50eXBlLCBmYWxzZSwgYWxsb3dlZE5ldC5pZGVudGlmaWVyKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZpZWxkc0dyb3Vwcy5wdXNoKGZpZWxkc0dyb3VwKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5maWVsZHNHcm91cC5zcGxpY2UoMSwgdGhpcy5maWVsZHNHcm91cC5sZW5ndGggLSAxKTtcbiAgICAgICAgdGhpcy5maWVsZHNHcm91cC5wdXNoKC4uLmZpZWxkc0dyb3Vwcyk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFRhc2tBbGxvd2VkTmV0cyhhbGxvd2VkTmV0czogQXJyYXk8TmV0Pikge1xuICAgICAgICAvKiBUT0RPIGJ5IHNpbXBseSByZXBsYWNpbmcgdGhlIHNlbGVjdCBvcHRpb25zIHdpdGggbmV3IG9iamVjdCwgd2UgZG9uJ3QgbG9vc2UgdGhlIG9sZCByZWZlcmVuY2VzLlxuICAgICAgICAgICAgIENvbHVtbnMgd2l0aCBoZWFkZXJzIGZyb20gbmV0cyB0aGF0IGFyZSBubyBsb25nZXIgYWxsb3dlZCBzaG91bGQgaGF2ZSB0aGVpciB2YWx1ZSBjbGVhcmVkLlxuICAgICAgICAgICAgIENvbHVtbnMgd2l0aCB2YWxpZCB2YWx1ZXMgdGhhdCBhcmUgbm90IG1ldGFkYXRhIHNob3VsZCBoYXZlIHRoZWlyIHNlbGVjdGlvbiByZW1hcHBlZCB0byB0aGUgbmV3IG9iamVjdHMuXG4gICAgICAgICAqL1xuXG4gICAgICAgIGNvbnN0IGZpZWxkc0dyb3VwczogQXJyYXk8RmllbGRzR3JvdXA+ID0gW107XG4gICAgICAgIGFsbG93ZWROZXRzLmZvckVhY2goYWxsb3dlZE5ldCA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWVsZHNHcm91cDogRmllbGRzR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBUaXRsZTogYWxsb3dlZE5ldC50aXRsZSxcbiAgICAgICAgICAgICAgICBmaWVsZHM6IFtdXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBuZXcgU2V0KCk7XG4gICAgICAgICAgICBhbGxvd2VkTmV0LnRyYW5zaXRpb25zLmZvckVhY2godHJhbnMgPT4ge1xuICAgICAgICAgICAgICAgIHRyYW5zLmltbWVkaWF0ZURhdGEuZm9yRWFjaChkYXRhID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFleGlzdGluZy5oYXMoZGF0YS5zdHJpbmdJZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nLmFkZChkYXRhLnN0cmluZ0lkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkc0dyb3VwLmZpZWxkcy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBIZWFkZXJDb2x1bW4oSGVhZGVyQ29sdW1uVHlwZS5JTU1FRElBVEUsIGRhdGEuc3RyaW5nSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEudGl0bGUsIGRhdGEudHlwZSwgZmFsc2UsIGFsbG93ZWROZXQuaWRlbnRpZmllcilcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZmllbGRzR3JvdXBzLnB1c2goZmllbGRzR3JvdXApO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmZpZWxkc0dyb3VwLnNwbGljZSgxLCB0aGlzLmZpZWxkc0dyb3VwLmxlbmd0aCAtIDEpO1xuICAgICAgICB0aGlzLmZpZWxkc0dyb3VwLnB1c2goLi4uZmllbGRzR3JvdXBzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJZiB0aGlzIHZpZXcgaGFzIHNvbSBoZWFkZXJzIHN0b3JlZCBpbiBpdCdzIHByZWZlcmVuY2VzIGF0dGVtcHRzIHRvIGxvYWQgdGhlbS5cbiAgICAgKiBJZiB0aGUgcHJlZmVyZW5jZXMgY29udGFpbiBub25leGlzdGVudCBoZWFkZXJzIHRoZXkgd2lsbCBiZSBza2lwcGVkLlxuICAgICAqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBOT1QgY2FsbGVkIGJ5IHRoZSBhYnN0cmFjdCBjbGFzcycgY29uc3RydWN0b3IuXG4gICAgICogSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjaGlsZCBjbGFzcyB0byBjYWxsIGl0IGF0IGFuIGFwcHJvcHJpYXRlIG1vbWVudC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgbG9hZEhlYWRlcnNGcm9tUHJlZmVyZW5jZXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZpZXdJZCA9IHRoaXMuZ2V0Vmlld0lkKCk7XG4gICAgICAgIGlmICghdmlld0lkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcHJlZmVycmVkSGVhZGVyS2V5cyA9IHRoaXMuX3ByZWZlcmVuY2VzLmdldEhlYWRlcnModmlld0lkKTtcbiAgICAgICAgaWYgKCFwcmVmZXJyZWRIZWFkZXJLZXlzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3SGVhZGVycyA9IFtdO1xuICAgICAgICBwcmVmZXJyZWRIZWFkZXJLZXlzLmZvckVhY2goaGVhZGVyS2V5ID0+IHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZmllbGRHcm91cCBvZiB0aGlzLmZpZWxkc0dyb3VwKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBoZWFkZXIgb2YgZmllbGRHcm91cC5maWVsZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhlYWRlci51bmlxdWVJZCA9PT0gaGVhZGVyS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdIZWFkZXJzLnB1c2goaGVhZGVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsgLy8gY29udGludWUgdGhlIG91dGVybW9zdCBsb29wXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBubyBtYXRjaCBmb3VuZFxuICAgICAgICAgICAgbmV3SGVhZGVycy5wdXNoKG51bGwpO1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oXG4gICAgICAgICAgICAgICAgYENvdWxkIG5vdCByZXN0b3JlIGhlYWRlciB3aXRoIElEICcke2hlYWRlcktleX0nIGZyb20gcHJlZmVyZW5jZXMuIEl0IGlzIG5vdCBvbmUgb2YgdGhlIGF2YWlsYWJsZSBoZWFkZXJzIGZvciB0aGlzIHZpZXcuYCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9wcmVmZXJlbmNlQ29sdW1uQ291bnQkLm5leHQobmV3SGVhZGVycy5sZW5ndGgpO1xuICAgICAgICB0aGlzLl9oZWFkZXJTdGF0ZS51cGRhdGVTZWxlY3RlZEhlYWRlcnMobmV3SGVhZGVycyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGNyZWF0ZU1ldGFIZWFkZXJzKCk6IEFycmF5PEhlYWRlckNvbHVtbj47XG5cbiAgICAvKipcbiAgICAgKiBDaGFuZ2Ugc29ydCBtb2RlIGZvciBzZWxlY3RlZCBjb2x1bW4gYWxsIG90aGVyIGNvbHVtbiBhcmUgc2V0IHRvIGRlZmF1bHQgc29ydCBtb2RlXG4gICAgICogRW1pdCByZXF1ZXN0IGZvciBzb3J0ZWQgcGFuZWxzXG4gICAgICogQHBhcmFtIGNvbHVtbkluZGV4IGluZGV4IG9mIHRoZSBjb2x1bW4gdGhhdCBjYXVzZWQgdGhlIHNvcnQgY2hhbmdlXG4gICAgICogQHBhcmFtIGFjdGl2ZSBSZXByZXNlbnRzIGNvbHVtbiBpZGVudGlmaWVyXG4gICAgICogQHBhcmFtIGRpcmVjdGlvbiBSZXByZXNlbnQgb25lIG9mIHNvcnQgbW9kZXM6IGFzZCwgZGVzYyBhbmQgJydcbiAgICAgKi9cbiAgICBwdWJsaWMgc29ydEhlYWRlckNoYW5nZWQoY29sdW1uSW5kZXg6IG51bWJlciwgYWN0aXZlOiBzdHJpbmcsIGRpcmVjdGlvbjogU29ydERpcmVjdGlvbik6IHZvaWQge1xuICAgICAgICBsZXQgc29ydENoYW5nZURlc2NyaXB0aW9uOiBTb3J0Q2hhbmdlRGVzY3JpcHRpb247XG4gICAgICAgIGxldCBmb3VuZEZpcnN0TWF0Y2ggPSBmYWxzZTsgLy8gY29sdW1uIGNhbiBmZWF0dXJlIGluIHRoZSBoZWFkZXIgaW4gbXVsdGlwbGUgcG9zaXRpb25zID0+IHdlIGRvbid0IHdhbnQgdG8gc2VuZCBtdWx0aXBsZSBldmVudHNcbiAgICAgICAgdGhpcy5oZWFkZXJTdGF0ZS5zZWxlY3RlZEhlYWRlcnMuZmlsdGVyKGhlYWRlciA9PiAhIWhlYWRlcikuZm9yRWFjaChoZWFkZXIgPT4ge1xuICAgICAgICAgICAgaWYgKGhlYWRlci51bmlxdWVJZCA9PT0gYWN0aXZlICYmICFmb3VuZEZpcnN0TWF0Y2gpIHtcbiAgICAgICAgICAgICAgICBzb3J0Q2hhbmdlRGVzY3JpcHRpb24gPSB7XG4gICAgICAgICAgICAgICAgICAgIHNvcnREaXJlY3Rpb246IGRpcmVjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uVHlwZTogaGVhZGVyLnR5cGUsXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkSWRlbnRpZmllcjogaGVhZGVyLmZpZWxkSWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICAgICAgcGV0cmlOZXRJZGVudGlmaWVyOiBoZWFkZXIucGV0cmlOZXRJZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgICAgICBjb2x1bW5JZGVudGlmaWVyOiBjb2x1bW5JbmRleCxcbiAgICAgICAgICAgICAgICAgICAgZmllbGRUeXBlOiBoZWFkZXIuZmllbGRUeXBlXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBoZWFkZXIuc29ydERpcmVjdGlvbiA9IGRpcmVjdGlvbjtcbiAgICAgICAgICAgICAgICBmb3VuZEZpcnN0TWF0Y2ggPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBoZWFkZXIuc29ydERpcmVjdGlvbiA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5faGVhZGVyQ2hhbmdlJC5uZXh0KHtoZWFkZXJUeXBlOiB0aGlzLmhlYWRlclR5cGUsIGNoYW5nZVR5cGU6IEhlYWRlckNoYW5nZVR5cGUuU09SVCwgZGVzY3JpcHRpb246IHNvcnRDaGFuZ2VEZXNjcmlwdGlvbn0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNhdmVzIHRoZSBzZWFyY2ggdmFsdWUgaW4gdGhlIGFwcHJvcHJpYXRlIGNvbHVtbiBpbiB0aGUgaGVhZGVyXG4gICAgICogRW1pdCByZXF1ZXN0IGZvciBzZWFyY2hlZCBwYW5lbHMgYnkgdXNlciBpbnB1dCBxdWVyeVxuICAgICAqL1xuICAgIHB1YmxpYyBoZWFkZXJTZWFyY2hJbnB1dENoYW5nZWQoY29sdW1uSW5kZXg6IG51bWJlciwgc2VhcmNoSW5wdXQ6IGFueSkge1xuICAgICAgICBjb25zdCBhZmZlY3RlZEhlYWRlciA9IHRoaXMuaGVhZGVyU3RhdGUuc2VsZWN0ZWRIZWFkZXJzW2NvbHVtbkluZGV4XTtcbiAgICAgICAgYWZmZWN0ZWRIZWFkZXIuc2VhcmNoSW5wdXQgPSBzZWFyY2hJbnB1dDtcbiAgICAgICAgY29uc3Qgc2VhcmNoQ2hhbmdlRGVzY3JpcHRpb246IFNlYXJjaENoYW5nZURlc2NyaXB0aW9uID0ge1xuICAgICAgICAgICAgZmllbGRJZGVudGlmaWVyOiBhZmZlY3RlZEhlYWRlci5maWVsZElkZW50aWZpZXIsXG4gICAgICAgICAgICBmaWVsZFR5cGU6IGFmZmVjdGVkSGVhZGVyLmZpZWxkVHlwZSxcbiAgICAgICAgICAgIGZpZWxkVGl0bGU6IGFmZmVjdGVkSGVhZGVyLnRpdGxlLFxuICAgICAgICAgICAgc2VhcmNoSW5wdXQsXG4gICAgICAgICAgICB0eXBlOiBhZmZlY3RlZEhlYWRlci50eXBlLFxuICAgICAgICAgICAgcGV0cmlOZXRJZGVudGlmaWVyOiBhZmZlY3RlZEhlYWRlci5wZXRyaU5ldElkZW50aWZpZXIsXG4gICAgICAgICAgICBjb2x1bW5JZGVudGlmaWVyOiBjb2x1bW5JbmRleFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLl9oZWFkZXJDaGFuZ2UkLm5leHQoe1xuICAgICAgICAgICAgaGVhZGVyVHlwZTogdGhpcy5oZWFkZXJUeXBlLFxuICAgICAgICAgICAgY2hhbmdlVHlwZTogSGVhZGVyQ2hhbmdlVHlwZS5TRUFSQ0gsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogc2VhcmNoQ2hhbmdlRGVzY3JpcHRpb25cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hhbmdlIGFjdGl2ZSBoZWFkZXIgYW5kIHRpdGxlcyBvZiBwYW5lbHNcbiAgICAgKi9cbiAgICBwdWJsaWMgaGVhZGVyQ29sdW1uU2VsZWN0ZWQoY29sdW1uSW5kZXg6IG51bWJlciwgbmV3SGVhZGVyQ29sdW1uOiBIZWFkZXJDb2x1bW4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbmV3SGVhZGVyczogQXJyYXk8SGVhZGVyQ29sdW1uPiA9IFtdO1xuICAgICAgICBuZXdIZWFkZXJzLnB1c2goLi4udGhpcy5faGVhZGVyU3RhdGUuc2VsZWN0ZWRIZWFkZXJzKTtcbiAgICAgICAgaWYgKCEhbmV3SGVhZGVyc1tjb2x1bW5JbmRleF0pIHtcbiAgICAgICAgICAgIG5ld0hlYWRlcnNbY29sdW1uSW5kZXhdLnNvcnREaXJlY3Rpb24gPSAnJztcbiAgICAgICAgICAgIG5ld0hlYWRlcnNbY29sdW1uSW5kZXhdLnNlYXJjaElucHV0ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIG5ld0hlYWRlcnNbY29sdW1uSW5kZXhdID0gbmV3SGVhZGVyQ29sdW1uO1xuICAgICAgICB0aGlzLl9oZWFkZXJTdGF0ZS51cGRhdGVTZWxlY3RlZEhlYWRlcnMobmV3SGVhZGVycyk7XG4gICAgICAgIHRoaXMuX2hlYWRlckNoYW5nZSQubmV4dCh7XG4gICAgICAgICAgICBoZWFkZXJUeXBlOiB0aGlzLmhlYWRlclR5cGUsXG4gICAgICAgICAgICBjaGFuZ2VUeXBlOiBIZWFkZXJDaGFuZ2VUeXBlLkVESVQsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjoge3ByZWZlcnJlZEhlYWRlcnM6IHRoaXMuX2hlYWRlclN0YXRlLnNlbGVjdGVkSGVhZGVyc31cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hhbmdlIHNlbGVjdGVkIGhlYWRlciBtb2RlIHRoZXJlIGFyZSB0aHJlZSBwb3NzaWJsZSBtb2RlczogU09SVCwgU0VBUkNIIGFuZCBFRElUXG4gICAgICogQHBhcmFtIG5ld01vZGUgdGhlIG1vZGUgdGhhdCB0aGUgaGVhZGVyIHNob3VsZCBjaGFuZ2UgdG9cbiAgICAgKiBAcGFyYW0gc2F2ZUxhc3RNb2RlIHdoZXRoZXIgdGhlIGxhc3Qgc3RhdGUgc2hvdWxkIGJlIHJlbWVtYmVyZWQuXG4gICAgICogSXQgY2FuIGJlIHJlc3RvcmVkIHdpdGggdGhlIFtIZWFkZXJTdGF0ZS5yZXN0b3JlTGFzdE1vZGUoKV17QGxpbmsgSGVhZGVyU3RhdGUjcmVzdG9yZUxhc3RNb2RlfSBtZXRob2QuXG4gICAgICovXG4gICAgcHVibGljIGNoYW5nZU1vZGUobmV3TW9kZTogSGVhZGVyTW9kZSwgc2F2ZUxhc3RNb2RlID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBpZiAobmV3TW9kZSA9PT0gdGhpcy5faGVhZGVyU3RhdGUubW9kZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNhdmVMYXN0TW9kZSkge1xuICAgICAgICAgICAgdGhpcy5faGVhZGVyU3RhdGUuc2F2ZVN0YXRlKCk7XG4gICAgICAgICAgICB0aGlzLnNhdmVTdGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2hhbmdlID0gdGhpcy5tb2RlQ2hhbmdlRnJvbUN1cnJlbnQobmV3TW9kZSk7XG4gICAgICAgIHRoaXMuX2hlYWRlclN0YXRlLm1vZGUgPSBuZXdNb2RlO1xuICAgICAgICB0aGlzLl9oZWFkZXJDaGFuZ2UkLm5leHQoY2hhbmdlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29uZmlybUVkaXRNb2RlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9oZWFkZXJTdGF0ZS5yZXN0b3JlTGFzdE1vZGUoKTtcbiAgICAgICAgdGhpcy5zYXZlTmV3U3RhdGUoKTtcbiAgICAgICAgY29uc3QgY2hhbmdlID0gdGhpcy5tb2RlQ2hhbmdlQWZ0ZXJFZGl0KCk7XG4gICAgICAgIGNvbnN0IHZpZXdJZCA9IHRoaXMuZ2V0Vmlld0lkKCk7XG4gICAgICAgIGlmICghIXZpZXdJZCkge1xuICAgICAgICAgICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVyU3RhdGUuc2VsZWN0ZWRIZWFkZXJzO1xuICAgICAgICAgICAgdGhpcy5fcHJlZmVyZW5jZXMuc2V0SGVhZGVycyh2aWV3SWQsIGhlYWRlcnMubWFwKGhlYWRlciA9PiAhIWhlYWRlciA/IGhlYWRlci51bmlxdWVJZCA6ICcnKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faGVhZGVyQ2hhbmdlJC5uZXh0KGNoYW5nZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2hlbiB1c2VyIGNhbmNlbHMgdGhlIGVkaXQgbW9kZSwgdGhlIGxhc3Qgc2F2ZWQgaGVhZGVycyBzdGF0ZSBpcyBsb2FkZWQgYW5kIGVtaXR0ZWRcbiAgICAgKiBMYXN0IG1vZGUgaW4gaGVhZGVyIGlzIHJlbG9hZGVkIGFzIHdlbGwuIFBvc3NpYmxlIHJlbG9hZGVkIG1vZGVzOiBzb3J0IG9yIHNlYXJjaFxuICAgICAqL1xuICAgIHB1YmxpYyByZXZlcnRFZGl0TW9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faGVhZGVyU3RhdGUucmVzdG9yZUxhc3RTdGF0ZSgpO1xuICAgICAgICB0aGlzLnJlc3RvcmVMYXN0U3RhdGUoKTtcbiAgICAgICAgY29uc3QgY2hhbmdlID0gdGhpcy5tb2RlQ2hhbmdlQWZ0ZXJFZGl0KCk7XG4gICAgICAgIHRoaXMuX2hlYWRlckNoYW5nZSQubmV4dCh7XG4gICAgICAgICAgICBoZWFkZXJUeXBlOiB0aGlzLmhlYWRlclR5cGUsXG4gICAgICAgICAgICBjaGFuZ2VUeXBlOiBIZWFkZXJDaGFuZ2VUeXBlLkVESVQsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjoge3ByZWZlcnJlZEhlYWRlcnM6IHRoaXMuX2hlYWRlclN0YXRlLnNlbGVjdGVkSGVhZGVyc31cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2hlYWRlckNoYW5nZSQubmV4dChjaGFuZ2UpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9oZWFkZXJDaGFuZ2UkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX2NsZWFySGVhZGVyU2VhcmNoJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9oZWFkZXJDb2x1bW5Db3VudCQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5fcmVzcG9uc2l2ZUhlYWRlcnMkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMubG9hZGluZy5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9wcmVmZXJlbmNlQ29sdW1uQ291bnQkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIG5ld01vZGUgdGhlIHtAbGluayBIZWFkZXJNb2RlfSB0aGF0IGlzIGJlaW5nIHNlbGVjdGVkIGFzIHRoZSBuZXh0IG1vZGVcbiAgICAgKiBAcmV0dXJuc2Ege0BsaW5rIEhlYWRlckNoYW5nZX0gb2JqZWN0IHdpdGgge0BsaW5rIE1vZGVDaGFuZ2VEZXNjcmlwdGlvbn0gb2JqZWN0IGFzIGl0J3MgYGRlc2NyaXB0aW9uYCxcbiAgICAgKiB3aGVyZSB0aGUgYHByZXZpb3VzTW9kZWAgaXMgc2V0IHRvIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgbW9kZSBhbmQgdGhlIGBjdXJyZW50TW9kZWAgaXMgc2V0IHRvIHRoZSBwcm92aWRlZCBhcmd1bWVudFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBtb2RlQ2hhbmdlRnJvbUN1cnJlbnQobmV3TW9kZTogSGVhZGVyTW9kZSk6IEhlYWRlckNoYW5nZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZU1vZGVDaGFuZ2UodGhpcy5faGVhZGVyU3RhdGUubW9kZSwgbmV3TW9kZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgYSB7QGxpbmsgSGVhZGVyQ2hhbmdlfSBvYmplY3Qgd2l0aCB7QGxpbmsgTW9kZUNoYW5nZURlc2NyaXB0aW9ufSBvYmplY3QgYXMgaXQncyBgZGVzY3JpcHRpb25gLFxuICAgICAqIHdoZXJlIHRoZSBgcHJldmlvdXNNb2RlYCBpcyBzZXQgdG8gW0VESVRde0BsaW5rIEhlYWRlck1vZGUjRURJVH0gYW5kIHRoZSBgY3VycmVudE1vZGVgIHRvIHRoZSBtb2RlXG4gICAgICogdGhhdCBpcyBjdXJyZW50bHkgc2VsZWN0ZWRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgbW9kZUNoYW5nZUFmdGVyRWRpdCgpOiBIZWFkZXJDaGFuZ2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVNb2RlQ2hhbmdlKEhlYWRlck1vZGUuRURJVCwgdGhpcy5faGVhZGVyU3RhdGUubW9kZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIG9sZE1vZGUgdGhlIHtAbGluayBIZWFkZXJNb2RlfSB0aGF0IHdhcyBwcmV2aW91c2x5IHNlbGVjdGVkXG4gICAgICogQHBhcmFtIG5ld01vZGUgdGhlIHtAbGluayBIZWFkZXJNb2RlfSB0aGF0IGlzIHNlbGVjdGVkIG5vd1xuICAgICAqIEByZXR1cm5zIGEge0BsaW5rIEhlYWRlckNoYW5nZX0gb2JqZWN0IHdpdGgge0BsaW5rIE1vZGVDaGFuZ2VEZXNjcmlwdGlvbn0gb2JqZWN0IGFzIGl0J3MgYGRlc2NyaXB0aW9uYFxuICAgICAqIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgYSBjaGFuZ2UgdG8gdGhlIGhlYWRlciBtb2RlXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGNyZWF0ZU1vZGVDaGFuZ2Uob2xkTW9kZTogSGVhZGVyTW9kZSwgbmV3TW9kZTogSGVhZGVyTW9kZSk6IEhlYWRlckNoYW5nZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjaGFuZ2VUeXBlOiBIZWFkZXJDaGFuZ2VUeXBlLk1PREVfQ0hBTkdFRCxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgICAgICAgY3VycmVudE1vZGU6IG5ld01vZGUsXG4gICAgICAgICAgICAgICAgcHJldmlvdXNNb2RlOiBvbGRNb2RlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGVhZGVyVHlwZTogdGhpcy5oZWFkZXJUeXBlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW1pdHMgYSBuZXcgdmFsdWUgaW50byB0aGUgW2NsZWFySGVhZGVyU2VhcmNoJF17QGxpbmsgQWJzdHJhY3RIZWFkZXJTZXJ2aWNlI2NsZWFySGVhZGVyU2VhcmNoJH0gc3RyZWFtLCB0aGF0IG5vdGlmaWVzXG4gICAgICogdGhlIGhlYWRlciBzZWFyY2ggY29tcG9uZW50LCB0aGF0IGl0IHNob3VsZCBjbGVhciB0aGUgaW5wdXQgZm9yIHRoZSBzcGVjaWZpZWQgY29sdW1uLlxuICAgICAqIEBwYXJhbSBjb2x1bW5JbmRleCB0aGUgaW5kZXggb2YgdGhlIGNvbHVtbiB0aGF0IHNob3VsZCBiZSBjbGVhcmVkXG4gICAgICovXG4gICAgcHVibGljIGNsZWFySGVhZGVyU2VhcmNoKGNvbHVtbkluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2xlYXJIZWFkZXJTZWFyY2gkLm5leHQoY29sdW1uSW5kZXgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIHRoZSBJZCBvZiB0aGUgdmlldywgaWYgdGhlIFZpZXdJZFNlcnZpY2Ugd2FzIGluamVjdGVkLiBSZXR1cm5zIGB1bmRlZmluZWRgIGlmIHRoZSBzZXJ2aWNlIHdhcyBub3QgaW5qZWN0ZWQuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldFZpZXdJZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodGhpcy5fdmlld0lkU2VydmljZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3ZpZXdJZFNlcnZpY2Uudmlld0lkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IHNhdmVTdGF0ZSgpO1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IHNhdmVOZXdTdGF0ZSgpO1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IHJlc3RvcmVMYXN0U3RhdGUoKTtcbn1cbiJdfQ==