@bizdoc/core 2.1.2 → 2.1.3

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 (113) hide show
  1. package/esm2022/lib/admin/architecture/designer.component.mjs +1 -1
  2. package/esm2022/lib/admin/architecture/icon-picker.component.mjs +2 -3
  3. package/esm2022/lib/admin/core/color-picker.input.mjs +2 -3
  4. package/esm2022/lib/admin/diff/configuration-diff.component.mjs +42 -38
  5. package/esm2022/lib/admin/document-trace/document-trace.component.mjs +30 -28
  6. package/esm2022/lib/admin/document-trace/trace-element.component.mjs +13 -11
  7. package/esm2022/lib/admin/form/designer/properties.component.mjs +5 -7
  8. package/esm2022/lib/admin/form/designer/section.component.mjs +5 -7
  9. package/esm2022/lib/admin/form/designer/settings.component.mjs +5 -7
  10. package/esm2022/lib/admin/form/form.resolve.service.mjs +3 -2
  11. package/esm2022/lib/admin/form/workflow/workflow.component.mjs +4 -4
  12. package/esm2022/lib/admin/indices/manage-cube-index.component.mjs +3 -4
  13. package/esm2022/lib/admin/patterns/patterns.component.mjs +7 -5
  14. package/esm2022/lib/admin/permissions/permissions.component.mjs +7 -5
  15. package/esm2022/lib/admin/positions/positions.component.mjs +57 -54
  16. package/esm2022/lib/browse/browse-items.component.mjs +57 -43
  17. package/esm2022/lib/browse/browse.pane.component.mjs +3 -3
  18. package/esm2022/lib/browse/expanded-item/expanded-item.component.mjs +25 -24
  19. package/esm2022/lib/chat/chat-info.mjs +2 -2
  20. package/esm2022/lib/chat/contacts.component.mjs +7 -5
  21. package/esm2022/lib/chat/conversation.component.mjs +27 -22
  22. package/esm2022/lib/compose/action/action-picker.component.mjs +9 -7
  23. package/esm2022/lib/compose/action/action.base.mjs +4 -3
  24. package/esm2022/lib/compose/action/moveto-action.component.mjs +1 -1
  25. package/esm2022/lib/compose/can-deactivate-changes.service.mjs +2 -2
  26. package/esm2022/lib/compose/comments/comment.component.mjs +9 -8
  27. package/esm2022/lib/compose/comments/comments.component.mjs +15 -13
  28. package/esm2022/lib/compose/comments/quick-comment.component.exp.mjs +10 -8
  29. package/esm2022/lib/compose/compose-resolve.service.mjs +10 -5
  30. package/esm2022/lib/compose/compose.pane.component.mjs +3 -3
  31. package/esm2022/lib/compose/copy/copy.dialog.mjs +2 -3
  32. package/esm2022/lib/compose/document.mobile.component.mjs +3 -2
  33. package/esm2022/lib/compose/document.pane.component.mjs +3 -2
  34. package/esm2022/lib/compose/form-selector/form-selector.sheet.mjs +10 -6
  35. package/esm2022/lib/compose/tag/tags.component.mjs +3 -5
  36. package/esm2022/lib/compose/trace/trace.component.mjs +4 -3
  37. package/esm2022/lib/core/avatar/avatar.component.mjs +2 -2
  38. package/esm2022/lib/core/component-factory-resolver.mjs +6 -4
  39. package/esm2022/lib/core/guide/guide.component.mjs +17 -18
  40. package/esm2022/lib/core/http.interceptor.mjs +9 -6
  41. package/esm2022/lib/core/identity/identity.component.mjs +2 -2
  42. package/esm2022/lib/core/info/location-info.component.mjs +2 -3
  43. package/esm2022/lib/core/inputs/combination-picker-body.mjs +9 -8
  44. package/esm2022/lib/core/inputs/combination-picker.mjs +1 -1
  45. package/esm2022/lib/core/inputs/combination-pool.mjs +6 -6
  46. package/esm2022/lib/core/inputs/file.input.mjs +28 -28
  47. package/esm2022/lib/core/mailbox.service.mjs +69 -63
  48. package/esm2022/lib/core/slots/router.service.mjs +4 -2
  49. package/esm2022/lib/core/slots/slots.component.mjs +13 -13
  50. package/esm2022/lib/core/tagging/edit-input.component.mjs +9 -12
  51. package/esm2022/lib/core/tagging/tagging.directive.mjs +5 -6
  52. package/esm2022/lib/core/tagging/tagging.pipe.mjs +2 -2
  53. package/esm2022/lib/core/translate.service.mjs +3 -3
  54. package/esm2022/lib/cube/accum/accum.component.mjs +10 -8
  55. package/esm2022/lib/cube/chart/chart.component.mjs +10 -8
  56. package/esm2022/lib/cube/cube.service.mjs +81 -73
  57. package/esm2022/lib/cube/explore/explore-items.component.mjs +38 -34
  58. package/esm2022/lib/cube/explore/item-resolver.service.mjs +13 -15
  59. package/esm2022/lib/cube/grid/grid.component.mjs +24 -23
  60. package/esm2022/lib/cube/grid/spreadsheet.component.mjs +25 -20
  61. package/esm2022/lib/cube/matrix/matrix.base.mjs +6 -6
  62. package/esm2022/lib/cube/matrix/popup.component.mjs +7 -4
  63. package/esm2022/lib/cube/matrix/table.component.mjs +24 -20
  64. package/esm2022/lib/cube/parallel/parallel.component.mjs +12 -10
  65. package/esm2022/lib/cube/pivot/pivot.component.mjs +1 -1
  66. package/esm2022/lib/cube/sum/sum.component.mjs +15 -16
  67. package/esm2022/lib/dashboard/cube/compare.widget.mjs +5 -4
  68. package/esm2022/lib/dashboard/cube/documents.widget.mjs +10 -8
  69. package/esm2022/lib/dashboard/recents/recents.widget.mjs +9 -7
  70. package/esm2022/lib/dashboard/score/compare-groups.widget.mjs +3 -2
  71. package/esm2022/lib/desktop.module.mjs +4 -4
  72. package/esm2022/lib/home/home.desktop.component.mjs +16 -14
  73. package/esm2022/lib/home/home.mobile.component.mjs +2 -2
  74. package/esm2022/lib/home/notifications/notifications.component.mjs +2 -2
  75. package/esm2022/lib/home/tools.component.mjs +2 -2
  76. package/esm2022/lib/impersonate/impersonate.component.mjs +10 -9
  77. package/esm2022/lib/mobile.module.mjs +4 -4
  78. package/esm2022/lib/notifications/notifications-table.component.mjs +2 -2
  79. package/esm2022/lib/notifications/notifications.component-base.mjs +2 -2
  80. package/esm2022/lib/notifications/types/cube-anomaly.notification.mjs +2 -2
  81. package/esm2022/lib/notifications/types/liked.notification.mjs +3 -2
  82. package/esm2022/lib/notifications/types/notification-base.mjs +2 -2
  83. package/esm2022/lib/options/options.component.mjs +5 -8
  84. package/esm2022/lib/options/options.service.mjs +7 -5
  85. package/esm2022/lib/reports/cube/usage.component.mjs +3 -2
  86. package/esm2022/lib/routes.desktop.mjs +3 -3
  87. package/esm2022/lib/routes.mobile.mjs +17 -9
  88. package/esm2022/lib/scheduler/schedule.component.mjs +18 -17
  89. package/esm2022/lib/search/search.service.mjs +2 -2
  90. package/esm2022/lib/views/cube/cube-base.mjs +3 -3
  91. package/esm2022/lib/views/cube/explore.component.mjs +13 -11
  92. package/esm2022/lib/views/timeline/timeline.component.exp.mjs +20 -8
  93. package/esm2022/public-api.mjs +2 -2
  94. package/fesm2022/bizdoc-core.mjs +906 -784
  95. package/fesm2022/bizdoc-core.mjs.map +1 -1
  96. package/lib/admin/indices/manage-cube-index.component.d.ts +1 -1
  97. package/lib/admin/positions/positions.component.d.ts +1 -3
  98. package/lib/browse/browse-items.component.d.ts +1 -1
  99. package/lib/compose/can-deactivate-changes.service.d.ts +3 -3
  100. package/lib/compose/compose-resolve.service.d.ts +3 -3
  101. package/lib/compose/document.mobile.component.d.ts +1 -1
  102. package/lib/compose/document.pane.component.d.ts +1 -1
  103. package/lib/core/component-factory-resolver.d.ts +3 -1
  104. package/lib/core/mailbox.service.d.ts +2 -2
  105. package/lib/core/tagging/tagging.directive.d.ts +1 -1
  106. package/lib/cube/explore/item-resolver.service.d.ts +8 -9
  107. package/lib/cube/pivot/pivot.component.d.ts +1 -2
  108. package/lib/dashboard/cube/compare.widget.d.ts +1 -1
  109. package/lib/dashboard/score/compare-groups.widget.d.ts +1 -1
  110. package/lib/notifications/types/liked.notification.d.ts +1 -1
  111. package/lib/reports/cube/usage.component.d.ts +1 -1
  112. package/package.json +2 -2
  113. package/public-api.d.ts +1 -1
@@ -21,12 +21,10 @@ class BoxSettingsComponent {
21
21
  * @param event
22
22
  */
23
23
  handleKeyboardEvent(event) {
24
- if (event.ctrlKey) {
25
- if (event.which === 83 || event.which === 115) {
26
- this.form.dirty && this.save();
27
- event.preventDefault();
28
- event.stopPropagation();
29
- }
24
+ if (event.ctrlKey && (event.key === 's' || event.key === 'S')) {
25
+ this.form.dirty && this.save();
26
+ event.preventDefault();
27
+ event.stopPropagation();
30
28
  }
31
29
  }
32
30
  save() { this._paneRef.close(this.form.value); }
@@ -51,4 +49,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
51
49
  type: HostListener,
52
50
  args: ['document:keydown', ['$event']]
53
51
  }] } });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9mb3JtL2Rlc2lnbmVyL3NldHRpbmdzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7O0FBSWhFLE1BTWEsb0JBQW9CO0lBRy9CLFlBQ1UsR0FBZ0IsRUFDaEIsUUFBaUI7UUFEakIsUUFBRyxHQUFILEdBQUcsQ0FBYTtRQUNoQixhQUFRLEdBQVIsUUFBUSxDQUFTO1FBSmxCLFNBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUM5QixDQUFDLENBQUM7SUFJSCxDQUFDO0lBQ0QsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7SUFDaEUsQ0FBQztJQUNEOzs7T0FHRztJQUVILG1CQUFtQixDQUFDLEtBQW9CO1FBQ3RDLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNqQixJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssRUFBRSxJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssR0FBRyxFQUFFO2dCQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQy9CLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO2FBQ3pCO1NBQ0Y7SUFDSCxDQUFDO0lBQ0QsSUFBSSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQyxDQUFDOzhHQXhCcEMsb0JBQW9CO2tHQUFwQixvQkFBb0IsZ0lBTHJCOzs7O0NBSVg7O1NBQ1ksb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBTmhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFOzs7O0NBSVg7aUJBQUU7d0hBZ0JELG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBQYW5lUmVmIH0gZnJvbSBcIi4uLy4uLy4uL2NvcmUvc2xvdHMvcGFuZS1yZWZcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlOiBgXHJcbjxtYXQtdG9vbGJhcj5cclxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwic2F2ZSgpXCIgW2Rpc2FibGVkXT1cIiFmb3JtLmRpcnR5IHx8ICFmb3JtLnZhbGlkXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1NhdmUnfHRyYW5zbGF0ZVwiPjxtYXQtaWNvbj5zYXZlPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuPC9tYXQtdG9vbGJhcj5cclxuYCB9KVxyXG5leHBvcnQgY2xhc3MgQm94U2V0dGluZ3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHJlYWRvbmx5IGZvcm0gPSB0aGlzLl9mYi5ncm91cCh7XHJcbiAgfSk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9mYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIF9wYW5lUmVmOiBQYW5lUmVmKSB7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUodGhpcy5fcGFuZVJlZi5kYXRhLCB7IGVtaXRFdmVudDogZmFsc2UgfSlcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQ3RybC1zIHNhdmVcclxuICAgKiBAcGFyYW0gZXZlbnRcclxuICAgKi9cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQuY3RybEtleSkge1xyXG4gICAgICBpZiAoZXZlbnQud2hpY2ggPT09IDgzIHx8IGV2ZW50LndoaWNoID09PSAxMTUpIHtcclxuICAgICAgICB0aGlzLmZvcm0uZGlydHkgJiYgdGhpcy5zYXZlKCk7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBzYXZlKCkgeyB0aGlzLl9wYW5lUmVmLmNsb3NlKHRoaXMuZm9ybS52YWx1ZSkgfVxyXG59XHJcbiJdfQ==
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9mb3JtL2Rlc2lnbmVyL3NldHRpbmdzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7O0FBSWhFLE1BTWEsb0JBQW9CO0lBRy9CLFlBQ1UsR0FBZ0IsRUFDaEIsUUFBaUI7UUFEakIsUUFBRyxHQUFILEdBQUcsQ0FBYTtRQUNoQixhQUFRLEdBQVIsUUFBUSxDQUFTO1FBSmxCLFNBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUM5QixDQUFDLENBQUM7SUFJSCxDQUFDO0lBQ0QsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7SUFDaEUsQ0FBQztJQUNEOzs7T0FHRztJQUVILG1CQUFtQixDQUFDLEtBQW9CO1FBQ3RDLElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLEVBQUU7WUFDN0QsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQy9CLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBQ0QsSUFBSSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQyxDQUFDOzhHQXRCcEMsb0JBQW9CO2tHQUFwQixvQkFBb0IsZ0lBTHJCOzs7O0NBSVg7O1NBQ1ksb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBTmhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFOzs7O0NBSVg7aUJBQUU7d0hBZ0JELG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBQYW5lUmVmIH0gZnJvbSBcIi4uLy4uLy4uL2NvcmUvc2xvdHMvcGFuZS1yZWZcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlOiBgXHJcbjxtYXQtdG9vbGJhcj5cclxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwic2F2ZSgpXCIgW2Rpc2FibGVkXT1cIiFmb3JtLmRpcnR5IHx8ICFmb3JtLnZhbGlkXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1NhdmUnfHRyYW5zbGF0ZVwiPjxtYXQtaWNvbj5zYXZlPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuPC9tYXQtdG9vbGJhcj5cclxuYCB9KVxyXG5leHBvcnQgY2xhc3MgQm94U2V0dGluZ3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHJlYWRvbmx5IGZvcm0gPSB0aGlzLl9mYi5ncm91cCh7XHJcbiAgfSk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9mYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIF9wYW5lUmVmOiBQYW5lUmVmKSB7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUodGhpcy5fcGFuZVJlZi5kYXRhLCB7IGVtaXRFdmVudDogZmFsc2UgfSlcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQ3RybC1zIHNhdmVcclxuICAgKiBAcGFyYW0gZXZlbnRcclxuICAgKi9cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQuY3RybEtleSAmJiAoZXZlbnQua2V5ID09PSAncycgfHwgZXZlbnQua2V5ID09PSAnUycpKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5kaXJ0eSAmJiB0aGlzLnNhdmUoKTtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNhdmUoKSB7IHRoaXMuX3BhbmVSZWYuY2xvc2UodGhpcy5mb3JtLnZhbHVlKSB9XHJcbn1cclxuIl19
@@ -1,4 +1,5 @@
1
1
  import { Injectable } from "@angular/core";
2
+ import { firstValueFrom } from "rxjs";
2
3
  import * as i0 from "@angular/core";
3
4
  import * as i1 from "../../admin/system.service";
4
5
  class FormResolve {
@@ -6,7 +7,7 @@ class FormResolve {
6
7
  this._service = _service;
7
8
  }
8
9
  onResolve(params) {
9
- return this._service.form(params['id']).toPromise();
10
+ return firstValueFrom(this._service.form(params['id']));
10
11
  }
11
12
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: FormResolve, deps: [{ token: i1.SystemService }], target: i0.ɵɵFactoryTarget.Injectable }); }
12
13
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: FormResolve }); }
@@ -15,4 +16,4 @@ export { FormResolve };
15
16
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: FormResolve, decorators: [{
16
17
  type: Injectable
17
18
  }], ctorParameters: function () { return [{ type: i1.SystemService }]; } });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5yZXNvbHZlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL2Zvcm0vZm9ybS5yZXNvbHZlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBTTNDLE1BQ2EsV0FBVztJQUN0QixZQUFvQixRQUF1QjtRQUF2QixhQUFRLEdBQVIsUUFBUSxDQUFlO0lBQUksQ0FBQztJQUM5QyxTQUFTLENBQUMsTUFBYztRQUNwQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQVcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2xFLENBQUM7OEdBSlEsV0FBVztrSEFBWCxXQUFXOztTQUFYLFdBQVc7MkZBQVgsV0FBVztrQkFEdkIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBQYXJhbXMgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IFN5c3RlbVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vYWRtaW4vc3lzdGVtLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRm9ybSB9IGZyb20gXCIuLi8uLi9jb3JlL21vZGVsc1wiO1xyXG5pbXBvcnQgeyBQYW5lUmVzb2x2ZSB9IGZyb20gXCIuLi8uLi9jb3JlL2NvbmZpZ3VyYXRpb25cIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEZvcm1SZXNvbHZlIGltcGxlbWVudHMgUGFuZVJlc29sdmU8Rm9ybT4ge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3NlcnZpY2U6IFN5c3RlbVNlcnZpY2UpIHsgfVxyXG4gICAgb25SZXNvbHZlKHBhcmFtczogUGFyYW1zKTogUHJvbWlzZTxGb3JtPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlcnZpY2UuZm9ybShwYXJhbXNbJ2lkJ10gYXMgc3RyaW5nKS50b1Byb21pc2UoKTtcclxuICAgIH1cclxufVxyXG4iXX0=
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5yZXNvbHZlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL2Zvcm0vZm9ybS5yZXNvbHZlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUszQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFFdEMsTUFDYSxXQUFXO0lBQ3RCLFlBQW9CLFFBQXVCO1FBQXZCLGFBQVEsR0FBUixRQUFRLENBQWU7SUFBSSxDQUFDO0lBQ2hELFNBQVMsQ0FBQyxNQUFjO1FBQ3RCLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQVcsQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQzs4R0FKVSxXQUFXO2tIQUFYLFdBQVc7O1NBQVgsV0FBVzsyRkFBWCxXQUFXO2tCQUR2QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFBhcmFtcyB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgU3lzdGVtU2VydmljZSB9IGZyb20gXCIuLi8uLi9hZG1pbi9zeXN0ZW0uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBGb3JtIH0gZnJvbSBcIi4uLy4uL2NvcmUvbW9kZWxzXCI7XHJcbmltcG9ydCB7IFBhbmVSZXNvbHZlIH0gZnJvbSBcIi4uLy4uL2NvcmUvY29uZmlndXJhdGlvblwiO1xyXG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBGb3JtUmVzb2x2ZSBpbXBsZW1lbnRzIFBhbmVSZXNvbHZlPEZvcm0+IHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlKSB7IH1cclxuICBvblJlc29sdmUocGFyYW1zOiBQYXJhbXMpOiBQcm9taXNlPEZvcm0+IHtcclxuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLl9zZXJ2aWNlLmZvcm0ocGFyYW1zWydpZCddIGFzIHN0cmluZykpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import { Component, ViewChild, HostListener } from '@angular/core';
2
- import { first, Subject } from 'rxjs';
2
+ import { first, firstValueFrom, Subject } from 'rxjs';
3
3
  import { takeUntil } from 'rxjs/operators';
4
4
  import { DiagramConstraints, SelectorConstraints, NodeConstraints, Diagram, UndoRedo, Node, DiagramTools, ConnectorConstraints, SymbolPalette, BpmnDiagrams, ConnectorEditing, ConnectorBridging, Snapping, Connector, PortConstraints, PortVisibility } from '@syncfusion/ej2-angular-diagrams';
5
5
  import { WorkflowNodeComponent } from './node.component';
@@ -456,7 +456,7 @@ class WorkflowComponent {
456
456
  * @param event
457
457
  */
458
458
  handleKeyboardEvent(event) {
459
- if (this.dirty && event.ctrlKey && (event.which === 83 || event.which === 115)) {
459
+ if (this.dirty && event.ctrlKey && (event.key === 's' || event.key === 'S')) {
460
460
  this.save();
461
461
  event.preventDefault();
462
462
  }
@@ -540,7 +540,7 @@ class WorkflowComponent {
540
540
  this._form.workflow.connectors = obj.connectors;
541
541
  this._form.workflow.nodes = obj.nodes.filter(n => n.id !== 'version');
542
542
  this.saving = true;
543
- return this._service.save(this._form).toPromise().then(v => {
543
+ return firstValueFrom(this._service.save(this._form)).then(v => {
544
544
  this._ps.toast('ChangesSaved');
545
545
  if (this._form.workflow.version < v) {
546
546
  this._ps.toast('DiagramVersion', v);
@@ -583,4 +583,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
583
583
  type: HostListener,
584
584
  args: ['document:keydown', ['$event']]
585
585
  }] } });
586
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9mb3JtL3dvcmtmbG93L3dvcmtmbG93LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvYWRtaW4vZm9ybS93b3JrZmxvdy93b3JrZmxvdy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBYSxZQUFZLEVBQXFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFPLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQ1osZUFBZSxFQUMxQyxPQUFPLEVBQWEsUUFBUSxFQUM1QixJQUFJLEVBQTBCLFlBQVksRUFBRSxvQkFBb0IsRUFDaEUsYUFBYSxFQUFFLFlBQVksRUFDM0IsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBaUIsZUFBZSxFQUFlLGNBQWMsRUFDdEgsTUFBTSxrQ0FBa0MsQ0FBQztBQVExQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFekQsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDeEUsYUFBYSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FB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Q2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLENBQUMsRUFBRSxHQUFHLEVBQUU7WUFDTixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMvQixDQUFDOzhHQXhnQlUsaUJBQWlCO2tHQUFqQixpQkFBaUIsb1lDaEU5QiwrK0xBdUZBOztTRHZCYSxpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFUN0IsU0FBUzsrQkFDRSxpQkFBaUIsUUFHckI7d0JBQ0osS0FBSyxFQUFFLE1BQU07cUJBQ2Q7NE9BTytDLGVBQWU7c0JBQTlELFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNKLFNBQVM7c0JBQWxELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkEyWnhDLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkLCBPbkRlc3Ryb3ksIEhvc3RMaXN0ZW5lciwgRWxlbWVudFJlZiwgT25Jbml0LCBBZnRlclZpZXdJbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGZpcnN0LCBTdWJqZWN0LCB0YXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge1xyXG4gIERpYWdyYW1Db25zdHJhaW50cywgU2VsZWN0b3JDb25zdHJhaW50cywgQ29ubmVjdG9yTW9kZWwsXHJcbiAgVGV4dE1vZGVsLCBQb2ludFBvcnRNb2RlbCwgTm9kZUNvbnN0cmFpbnRzLCBTY3JvbGxTZXR0aW5nc01vZGVsLFxyXG4gIERpYWdyYW0sIE5vZGVNb2RlbCwgVW5kb1JlZG8sIFN5bWJvbEluZm8sIElEcmFnRW50ZXJFdmVudEFyZ3MsIFNuYXBTZXR0aW5nc01vZGVsLCBNYXJnaW5Nb2RlbCxcclxuICBOb2RlLCBQYWxldHRlTW9kZWwsIFNlZ21lbnRzLCBEaWFncmFtVG9vbHMsIENvbm5lY3RvckNvbnN0cmFpbnRzLCBTZWxlY3Rvck1vZGVsLCBSdWxlclNldHRpbmdzTW9kZWwsIEFsaWdubWVudE9wdGlvbnMsIFRleHRTdHlsZU1vZGVsLFxyXG4gIFN5bWJvbFBhbGV0dGUsIEJwbW5EaWFncmFtcywgRGF0YUJpbmRpbmcsIElTZWxlY3Rpb25DaGFuZ2VFdmVudEFyZ3MsXHJcbiAgQ29ubmVjdG9yRWRpdGluZywgQ29ubmVjdG9yQnJpZGdpbmcsIFNuYXBwaW5nLCBDb25uZWN0b3IsIFN3aW1MYW5lTW9kZWwsIFBvcnRDb25zdHJhaW50cywgSGVhZGVyTW9kZWwsIFBvcnRWaXNpYmlsaXR5LCBTbmFwQ29uc3RyYWludHMsIFNoYXBlQW5ub3RhdGlvbk1vZGVsLCBQYXRoQW5ub3RhdGlvbk1vZGVsLCBEaWFncmFtTW9kZWxcclxufSBmcm9tICdAc3luY2Z1c2lvbi9lajItYW5ndWxhci1kaWFncmFtcyc7XHJcbmltcG9ydCB7IEZvcm0gfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVscyc7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTeXN0ZW1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc3lzdGVtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcm9tcHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9wcm9tcHQuc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUGFuZVJlZiB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2xvdHMvcGFuZS1yZWYnO1xyXG5pbXBvcnQgeyBQYW5lc1JvdXRlciB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2xvdHMvcm91dGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBXb3JrZmxvd05vZGVDb21wb25lbnQgfSBmcm9tICcuL25vZGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWRtaW5Db21wb25lbnQgfSBmcm9tICcuLi8uLi9hZG1pbi1kaXNtaXNzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPcGVuUG9saWN5IH0gZnJvbSAnLi4vLi4vLi4vY29yZS9jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgTUFURVJJQUxfUEFMRVRURVMgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2NvbG9ycyc7XHJcblxyXG5EaWFncmFtLkluamVjdChVbmRvUmVkbywgQ29ubmVjdG9yQnJpZGdpbmcsIENvbm5lY3RvckVkaXRpbmcsIFNuYXBwaW5nKTtcclxuU3ltYm9sUGFsZXR0ZS5JbmplY3QoQnBtbkRpYWdyYW1zKTtcclxuXHJcbmNvbnN0IHBvcnRzOiBQb2ludFBvcnRNb2RlbFtdID0gW1xyXG4gIHsgaWQ6ICdwb3J0MScsIHNoYXBlOiAnQ2lyY2xlJywgb2Zmc2V0OiB7IHg6IDAsIHk6IDAuNSB9LCB2aXNpYmlsaXR5OiBQb3J0VmlzaWJpbGl0eS5Db25uZWN0IHwgUG9ydFZpc2liaWxpdHkuSG92ZXIsIGNvbnN0cmFpbnRzOiBQb3J0Q29uc3RyYWludHMuRGVmYXVsdCB8IFBvcnRDb25zdHJhaW50cy5EcmF3IH0sXHJcbiAgeyBpZDogJ3BvcnQyJywgc2hhcGU6ICdDaXJjbGUnLCBvZmZzZXQ6IHsgeDogMC41LCB5OiAxIH0sIHZpc2liaWxpdHk6IFBvcnRWaXNpYmlsaXR5LkNvbm5lY3QgfCBQb3J0VmlzaWJpbGl0eS5Ib3ZlciwgY29uc3RyYWludHM6IFBvcnRDb25zdHJhaW50cy5EZWZhdWx0IHwgUG9ydENvbnN0cmFpbnRzLkRyYXcgfSxcclxuICB7IGlkOiAncG9ydDMnLCBzaGFwZTogJ0NpcmNsZScsIG9mZnNldDogeyB4OiAxLCB5OiAwLjUgfSwgdmlzaWJpbGl0eTogUG9ydFZpc2liaWxpdHkuQ29ubmVjdCB8IFBvcnRWaXNpYmlsaXR5LkhvdmVyLCBjb25zdHJhaW50czogUG9ydENvbnN0cmFpbnRzLkRlZmF1bHQgfCBQb3J0Q29uc3RyYWludHMuRHJhdyB9LFxyXG4gIHsgaWQ6ICdwb3J0NCcsIHNoYXBlOiAnQ2lyY2xlJywgb2Zmc2V0OiB7IHg6IDAuNSwgeTogMCB9LCB2aXNpYmlsaXR5OiBQb3J0VmlzaWJpbGl0eS5Db25uZWN0IHwgUG9ydFZpc2liaWxpdHkuSG92ZXIsIGNvbnN0cmFpbnRzOiBQb3J0Q29uc3RyYWludHMuRGVmYXVsdCB8IFBvcnRDb25zdHJhaW50cy5EcmF3IH1cclxuXTtcclxuXHJcbmZ1bmN0aW9uIHNob3dQYWxldHRlSWNvbigpOiB2b2lkIHtcclxuICBjb25zdCBwYWxldHRlU3BhY2U6IEhUTUxFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhbGV0dGUtc3BhY2UnKTtcclxuICBjb25zdCBpc01vYmlsZSA9IHdpbmRvdy5tYXRjaE1lZGlhKCcobWF4LXdpZHRoOjU1MHB4KScpLm1hdGNoZXM7XHJcbiAgaWYgKGlzTW9iaWxlKSB7XHJcbiAgICBpZiAoIXBhbGV0dGVTcGFjZS5jbGFzc0xpc3QuY29udGFpbnMoJ3NiLW1vYmlsZS1wYWxldHRlLW9wZW4nKSkge1xyXG4gICAgICBwYWxldHRlU3BhY2UuY2xhc3NMaXN0LmFkZCgnc2ItbW9iaWxlLXBhbGV0dGUtb3BlbicpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcGFsZXR0ZVNwYWNlLmNsYXNzTGlzdC5yZW1vdmUoJ3NiLW1vYmlsZS1wYWxldHRlLW9wZW4nKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHBhbGV0dGVJY29uQ2xpY2soKSB7XHJcbiAgY29uc3QgaXNNb2JpbGUgPSB3aW5kb3cubWF0Y2hNZWRpYSgnKG1heC13aWR0aDo1NTBweCknKS5tYXRjaGVzO1xyXG4gIGlmIChpc01vYmlsZSkge1xyXG4gICAgY29uc3QgcGFsZXR0ZUljb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFsZXR0ZS1pY29uJyk7XHJcbiAgICBpZiAocGFsZXR0ZUljb24pIHtcclxuICAgICAgcGFsZXR0ZUljb24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBzaG93UGFsZXR0ZUljb24sIGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLXdvcmtmbG93JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vd29ya2Zsb3cuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3dvcmtmbG93LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgaG9zdDoge1xyXG4gICAgY2xhc3M6ICdwYW5lJ1xyXG4gIH1cclxufSlcclxuLyoqIHdvcmtmbG93IGNvbXBvbmVudCovXHJcbmV4cG9ydCBjbGFzcyBXb3JrZmxvd0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBBZG1pbkNvbXBvbmVudCB7XHJcbiAgc3ltYm9sUGFsZXR0ZTogU3ltYm9sUGFsZXR0ZTtcclxuICByZWFkb25seSBmb250U2l6ZXMgPSBbOSwgMTEsIDEyLCAxMywgMTUsIDIxLCAzMSwgNDFdO1xyXG4gIGRpYWdyYW06IERpYWdyYW07XHJcbiAgQFZpZXdDaGlsZCgnc3ltYm9sUGFsZXR0ZUVsJywgeyBzdGF0aWM6IHRydWUgfSkgc3ltYm9sUGFsZXR0ZUVsOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2RpYWdyYW1FbCcsIHsgc3RhdGljOiB0cnVlIH0pIGRpYWdyYW1FbDogRWxlbWVudFJlZjtcclxuICBwcml2YXRlIF90b29sczogYm9vbGVhbjtcclxuICBnZXQgdG9vbHMoKSB7IHJldHVybiB0aGlzLl90b29sczsgfVxyXG4gIHNldCB0b29scyh2YWw6IGJvb2xlYW4pIHtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdkaWFncmFtX3Rvb2xzJywgdmFsID8gJzEnIDogJzAnKTtcclxuICAgIHRoaXMuX3Rvb2xzID0gdmFsO1xyXG4gIH1cclxuICBjb25uZWN0b3JUeXBlOiBTZWdtZW50cyA9ICdCZXppZXInO1xyXG4gIGFsaWdubWVudDogQWxpZ25tZW50T3B0aW9ucyA9ICdDZW50ZXInO1xyXG4gIGZvbnRTaXplID0gMTI7XHJcbiAgc2F2aW5nID0gZmFsc2U7XHJcbiAgZWxlbWVudD86IGFueTtcclxuICBkaXJ0eSA9IGZhbHNlO1xyXG4gIHBhcmFtczoge307XHJcbiAgcmVhZG9ubHkgcGFsZXR0ZXM6IFBhbGV0dGVNb2RlbFtdID0gW107XHJcbiAgZGlhZ3JhbUNvbnN0cmFpbnRzOiBEaWFncmFtQ29uc3RyYWludHMgPSBEaWFncmFtQ29uc3RyYWludHMuRGVmYXVsdCB8IERpYWdyYW1Db25zdHJhaW50cy5CcmlkZ2luZyB8IERpYWdyYW1Db25zdHJhaW50cy5Vc2VySW50ZXJhY3Rpb24gfCBEaWFncmFtQ29uc3RyYWludHMuWm9vbTtcclxuICAvL1N5bWJvbFBhbGV0dGUgUHJvcGVydGllc1xyXG4gIHJlYWRvbmx5IHN5bWJvbE1hcmdpbjogTWFyZ2luTW9kZWwgPSB7IGxlZnQ6IDEwLCByaWdodDogMTAsIHRvcDogMTAsIGJvdHRvbTogMTAgfTtcclxuICByZWFkb25seSBzbmFwU2V0dGluZ3M6IFNuYXBTZXR0aW5nc01vZGVsID0ge1xyXG4gICAgc25hcExpbmVDb2xvcjogdGhpcy5fc2Vzc2lvbi5nZXRBY2NlbnQoMTAwKVxyXG4gIH07XHJcbiAgcmVhZG9ubHkgc2VsZWN0ZWRJdGVtczogU2VsZWN0b3JNb2RlbCA9IHtcclxuICAgIGNvbnN0cmFpbnRzOiBTZWxlY3RvckNvbnN0cmFpbnRzLkFsbCAmIH5TZWxlY3RvckNvbnN0cmFpbnRzLlJvdGF0ZSxcclxuICB9O1xyXG4gIHJlYWRvbmx5IHNjcm9sbFNldHRpbmdzOiBTY3JvbGxTZXR0aW5nc01vZGVsID0ge1xyXG4gICAgbWluWm9vbTogLjUsXHJcbiAgICBtYXhab29tOiAyLjUsXHJcbiAgfTtcclxuICByZWFkb25seSBydWxlclNldHRpbmdzOiBSdWxlclNldHRpbmdzTW9kZWwgPSB7XHJcbiAgfTtcclxuICBwcml2YXRlIF9mb3JtOiBGb3JtO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX25vZGVkZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAvKiogd29ya2Zsb3cgY3RvciAqL1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfcHM6IFByb21wdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfcGFuZTogUGFuZVJlZjxXb3JrZmxvd0NvbXBvbmVudD4sXHJcbiAgICBwcml2YXRlIF9yb3V0ZXI6IFBhbmVzUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcclxuICAgIHRoaXMuX3Rvb2xzID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2RpYWdyYW1fdG9vbHMnKSA9PT0gJzEnO1xyXG5cclxuICAgIHRoaXMuX3BhbGV0dGVzKCk7XHJcbiAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICB9XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnN5bWJvbFBhbGV0dGUgPSBuZXcgU3ltYm9sUGFsZXR0ZSh7XHJcbiAgICAgIGV4cGFuZE1vZGU6ICdNdWx0aXBsZScsXHJcbiAgICAgIHBhbGV0dGVzOiB0aGlzLnBhbGV0dGVzLFxyXG4gICAgICB3aWR0aDogXCIxMDAlXCIsXHJcbiAgICAgIGhlaWdodDogXCIxMDAlXCIsXHJcbiAgICAgIGVuYWJsZVJ0bDogZmFsc2UsXHJcbiAgICAgIGVuYWJsZUFuaW1hdGlvbjogZmFsc2UsXHJcbiAgICAgIHN5bWJvbEhlaWdodDogODAsXHJcbiAgICAgIHN5bWJvbFdpZHRoOiA4MCxcclxuICAgICAgc3ltYm9sTWFyZ2luOiB0aGlzLnN5bWJvbE1hcmdpbixcclxuICAgICAgZ2V0U3ltYm9sSW5mbzogdGhpcy5nZXRTeW1ib2xJbmZvLmJpbmQodGhpcyksXHJcbiAgICAgIGdldE5vZGVEZWZhdWx0czogdGhpcy5nZXRTeW1ib2xEZWZhdWx0cy5iaW5kKHRoaXMpLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnN5bWJvbFBhbGV0dGUuYXBwZW5kVG8odGhpcy5zeW1ib2xQYWxldHRlRWwubmF0aXZlRWxlbWVudCk7XHJcbiAgICB0aGlzLmRpYWdyYW0gPSBuZXcgRGlhZ3JhbSh7XHJcbiAgICAgIHdpZHRoOiBcIjEwMCVcIiwgaGVpZ2h0OiBcIjEwMCVcIixcclxuICAgICAgc25hcFNldHRpbmdzOiB0aGlzLnNuYXBTZXR0aW5ncyxcclxuICAgICAgZ2V0Q29ubmVjdG9yRGVmYXVsdHM6IHRoaXMuY29ubkRlZmF1bHRzLmJpbmQodGhpcyksXHJcbiAgICAgIGNvbnN0cmFpbnRzOiB0aGlzLmRpYWdyYW1Db25zdHJhaW50cyxcclxuICAgICAgZ2V0Tm9kZURlZmF1bHRzOiB0aGlzLm5vZGVEZWZhdWx0cy5iaW5kKHRoaXMpLFxyXG4gICAgICBzY3JvbGxTZXR0aW5nczogdGhpcy5zY3JvbGxTZXR0aW5ncyxcclxuICAgICAgc2VsZWN0ZWRJdGVtczogdGhpcy5zZWxlY3RlZEl0ZW1zLFxyXG4gICAgICBydWxlclNldHRpbmdzOiB0aGlzLnJ1bGVyU2V0dGluZ3MsXHJcbiAgICAgIGRyYWdFbnRlcjogdGhpcy5kcmFnRW50ZXIuYmluZCh0aGlzKSxcclxuICAgICAgY29ubmVjdGlvbkNoYW5nZTogdGhpcy5jaGFuZ2UuYmluZCh0aGlzKSxcclxuICAgICAgY29sbGVjdGlvbkNoYW5nZTogdGhpcy5jb2xsZWN0aW9uQ2hhbmdlLmJpbmQodGhpcyksXHJcbiAgICAgIHByb3BlcnR5Q2hhbmdlOiB0aGlzLnByb3BlcnR5Q2hhbmdlLmJpbmQodGhpcyksXHJcbiAgICAgIHNlbGVjdGlvbkNoYW5nZTogdGhpcy5zZWxlY3Rpb25DaGFuZ2UuYmluZCh0aGlzKSxcclxuICAgIH0sIHRoaXMuZGlhZ3JhbUVsLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgcGFsZXR0ZUljb25DbGljaygpO1xyXG4gICAgdGhpcy5fcGFuZS5wYXJhbXNDaGFuZ2UoKS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKHAgPT4ge1xyXG4gICAgICBjb25zdCBpZCA9IHBbJ2lkJ107XHJcbiAgICAgIHRoaXMuX2Zvcm0gPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZm9ybXMuZmluZChmID0+IGYubmFtZSA9PT0gaWQpO1xyXG4gICAgICB0aGlzLl9wYW5lLnRpdGxlID0gdGhpcy5fZm9ybS50aXRsZTtcclxuICAgICAgdGhpcy5wYXJhbXMgPSB7IGlkOiB0aGlzLl9mb3JtLm5hbWUgfTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fcGFuZS5kYXRhQ2hhbmdlKCkucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZShkID0+IHtcclxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLl9mb3JtLCBkLmZvcm0pO1xyXG4gICAgICBjb25zdCBmbG93ID0gdGhpcy5fZm9ybS53b3JrZmxvdztcclxuICAgICAgdGhpcy5kaWFncmFtLm5vZGVzID0gZmxvdy5ub2RlcztcclxuICAgICAgdGhpcy5kaWFncmFtLmNvbm5lY3RvcnMgPSBmbG93LmNvbm5lY3RvcnM7XHJcbiAgICAgIHRoaXMuZGlhZ3JhbS5kYXRhQmluZCgpO1xyXG4gICAgICB0aGlzLmRpYWdyYW0uYWRkKHRoaXMuX3ZlcnNpb25Ob2RlKGZsb3cudmVyc2lvbikpO1xyXG4gICAgICB0aGlzLmRpYWdyYW0uZml0VG9QYWdlKCk7XHJcbiAgICAgIHRoaXMuZGlydHkgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBwcml2YXRlIF9wYWxldHRlcygpIHtcclxuICAgIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5ub2Rlcy5mb3JFYWNoKG4gPT4ge1xyXG4gICAgICBjb25zdCBub2RlOiBOb2RlTW9kZWwgPSB7XHJcbiAgICAgICAgaWQ6IG4ubmFtZSxcclxuICAgICAgICBzaGFwZTogbi5zaGFwZSxcclxuICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICBub2RlVHlwZTogbi5uYW1lLFxyXG4gICAgICAgICAgdGl0bGU6IG4udGl0bGVcclxuICAgICAgICB9LFxyXG4gICAgICAgIHdpZHRoOiAxNDUsXHJcbiAgICAgICAgaGVpZ2h0OiAxNDUsXHJcbiAgICAgIH07XHJcbiAgICAgIChub2RlIGFzIGFueSkubm9kZSA9IG4ubmFtZTtcclxuICAgICAgbGV0IHBhbGV0dGUgPSB0aGlzLnBhbGV0dGVzLmZpbmQocCA9PiBwLnRpdGxlID09PSAobi5wYWxldHRlIHx8ICcnKSk7XHJcbiAgICAgIGlmICghcGFsZXR0ZSkge1xyXG4gICAgICAgIHBhbGV0dGUgPSB7IGlkOiBgXyR7bi5wYWxldHRlfWAsIGV4cGFuZGVkOiB0cnVlLCB0aXRsZTogbi5wYWxldHRlIHx8ICcnLCBzeW1ib2xzOiBbXSB9O1xyXG4gICAgICAgIHRoaXMucGFsZXR0ZXMucHVzaChwYWxldHRlKTtcclxuICAgICAgfVxyXG4gICAgICBwYWxldHRlLnN5bWJvbHMucHVzaChub2RlKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5wYWxldHRlcy5wdXNoKHtcclxuICAgICAgaWQ6ICdkZXNpZ24nLFxyXG4gICAgICB0aXRsZTogdGhpcy5fdHJhbnNsYXRlLmdldCgnRGVzaWduJyksXHJcbiAgICAgIHN5bWJvbHM6IFt7XHJcbiAgICAgICAgaWQ6ICdMaW5rMjInLFxyXG4gICAgICAgIHR5cGU6ICdTdHJhaWdodCcsXHJcbiAgICAgICAgc291cmNlUG9pbnQ6IHsgeDogMCwgeTogMCB9LFxyXG4gICAgICAgIHRhcmdldFBvaW50OiB7IHg6IDYwLCB5OiA2MCB9LFxyXG4gICAgICAgIHRhcmdldERlY29yYXRvcjoge1xyXG4gICAgICAgICAgc2hhcGU6ICdBcnJvdycsXHJcbiAgICAgICAgICBzdHlsZTogeyBzdHJva2VDb2xvcjogJyM3NTc1NzUnLCBmaWxsOiAnIzc1NzU3NScgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgICBzdHJva2VXaWR0aDogMSxcclxuICAgICAgICAgIHN0cm9rZURhc2hBcnJheTogJzQgNCcsXHJcbiAgICAgICAgICBzdHJva2VDb2xvcjogJyM3NTc1NzUnLFxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiAndGV4dCcsIHNoYXBlOiB7IHR5cGU6ICdUZXh0JywgY29udGVudDogJ1QnIH0sXHJcbiAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgIGZpbGw6ICd0cmFuc3BhcmVudCdcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbnN0cmFpbnRzOiBOb2RlQ29uc3RyYWludHMuRGVmYXVsdCAmIH5Ob2RlQ29uc3RyYWludHMuSW5Db25uZWN0ICYgfk5vZGVDb25zdHJhaW50cy5PdXRDb25uZWN0LFxyXG4gICAgICAgIGFkZEluZm86IHsgdGl0bGU6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1RleHQnKSB9XHJcbiAgICAgIH1dXHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGNvbG9yID0gTUFURVJJQUxfUEFMRVRURVNbJ2dyZXknXVsyMDBdO1xyXG4gICAgdGhpcy5wYWxldHRlcy5wdXNoKHtcclxuICAgICAgaWQ6ICdzd2ltbGFuZVNoYXBlcycsXHJcbiAgICAgIGV4cGFuZGVkOiB0cnVlLFxyXG4gICAgICB0aXRsZTogdGhpcy5fdHJhbnNsYXRlLmdldCgnU3dpbWxhbmUgU2hhcGVzJyksXHJcbiAgICAgIHN5bWJvbHM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBpZDogJ3N3aW1sYW5lJyxcclxuICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgdGl0bGU6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0hvcml6b250YWwnKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHNoYXBlOiB7XHJcbiAgICAgICAgICAgIGhlYWRlcjoge1xyXG4gICAgICAgICAgICAgIGFubm90YXRpb246IHsgY29udGVudDogJ1BsYW4nIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgdHlwZTogJ1N3aW1MYW5lJyxcclxuICAgICAgICAgICAgbGFuZXM6IFtcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBpZDogJ2xhbmUxJyxcclxuICAgICAgICAgICAgICAgIGhlYWRlcjoge1xyXG4gICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uOiB7IGNvbnRlbnQ6ICdMYW5lJyB9LFxyXG4gICAgICAgICAgICAgICAgICBzdHlsZTogeyBmaWxsOiBjb2xvciB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICBvcmllbnRhdGlvbjogJ0hvcml6b250YWwnLFxyXG4gICAgICAgICAgICBpc0xhbmU6IHRydWVcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBoZWlnaHQ6IDYwLFxyXG4gICAgICAgICAgd2lkdGg6IDE0MCxcclxuICAgICAgICAgIG9mZnNldFg6IDcwLFxyXG4gICAgICAgICAgb2Zmc2V0WTogMzAsXHJcbiAgICAgICAgfSwge1xyXG4gICAgICAgICAgaWQ6ICd2c3dpbWxhbmUnLFxyXG4gICAgICAgICAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgICB0aXRsZTogdGhpcy5fdHJhbnNsYXRlLmdldCgnVmVydGljYWwnKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHNoYXBlOiB7XHJcbiAgICAgICAgICAgIHR5cGU6ICdTd2ltTGFuZScsXHJcbiAgICAgICAgICAgIGhlYWRlcjoge1xyXG4gICAgICAgICAgICAgIGFubm90YXRpb246IHsgY29udGVudDogJ1BsYW4nIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgbGFuZXM6IFtcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBpZDogJ2xhbmUxJyxcclxuICAgICAgICAgICAgICAgIGhlYWRlcjoge1xyXG4gICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uOiB7IGNvbnRlbnQ6ICdMYW5lJyB9LFxyXG4gICAgICAgICAgICAgICAgICBzdHlsZTogeyBmaWxsOiBjb2xvciB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICBvcmllbnRhdGlvbjogJ1ZlcnRpY2FsJywgaXNMYW5lOiB0cnVlXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgaGVpZ2h0OiAxNDAsXHJcbiAgICAgICAgICB3aWR0aDogNjAsXHJcbiAgICAgICAgICBvZmZzZXRYOiA3MCxcclxuICAgICAgICAgIG9mZnNldFk6IDMwLFxyXG4gICAgICAgIH0sIHtcclxuICAgICAgICAgIGlkOiAndnBoYXNlJyxcclxuICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgdGl0bGU6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1BoYXNlJylcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBzaGFwZToge1xyXG4gICAgICAgICAgICB0eXBlOiAnU3dpbUxhbmUnLFxyXG4gICAgICAgICAgICBwaGFzZXM6IFtcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBzdHlsZTogeyBzdHJva2VXaWR0aDogMSwgc3Ryb2tlRGFzaEFycmF5OiAnMywzJywgc3Ryb2tlQ29sb3I6IGNvbG9yIH0sXHJcbiAgICAgICAgICAgICAgICBoZWFkZXI6IHtcclxuICAgICAgICAgICAgICAgICAgYW5ub3RhdGlvbjogeyB0ZXh0OiAnUGhhc2UnIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XSxcclxuICAgICAgICAgICAgb3JpZW50YXRpb246ICdWZXJ0aWNhbCcsIGlzUGhhc2U6IHRydWVcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBoZWlnaHQ6IDYwLFxyXG4gICAgICAgICAgd2lkdGg6IDE0MCxcclxuICAgICAgICAgIHN0eWxlOiB7IHN0cm9rZUNvbG9yOiBjb2xvciB9XHJcbiAgICAgICAgfSwge1xyXG4gICAgICAgICAgaWQ6ICdocGhhc2UnLFxyXG4gICAgICAgICAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgICB0aXRsZTogdGhpcy5fdHJhbnNsYXRlLmdldCgnUGhhc2UnKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHNoYXBlOiB7XHJcbiAgICAgICAgICAgIHR5cGU6ICdTd2ltTGFuZScsXHJcbiAgICAgICAgICAgIHBoYXNlczogW3tcclxuICAgICAgICAgICAgICBzdHlsZTogeyBzdHJva2VXaWR0aDogMSwgc3Ryb2tlRGFzaEFycmF5OiAnMywzJywgc3Ryb2tlQ29sb3I6IGNvbG9yIH0sXHJcbiAgICAgICAgICAgICAgaGVhZGVyOiB7XHJcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uOiB7IHRleHQ6ICdQaGFzZScgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfV0sXHJcbiAgICAgICAgICAgIG9yaWVudGF0aW9uOiAnSG9yaXpvbnRhbCcsIGlzUGhhc2U6IHRydWVcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBoZWlnaHQ6IDYwLFxyXG4gICAgICAgICAgd2lkdGg6IDE0MCxcclxuICAgICAgICAgIHN0eWxlOiB7IHN0cm9rZUNvbG9yOiBjb2xvciB9XHJcbiAgICAgICAgfV1cclxuICAgIH0gYXMgUGFsZXR0ZU1vZGVsKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfdmVyc2lvbk5vZGUodmVyc2lvbjogbnVtYmVyKTogTm9kZU1vZGVsIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGlkOiAndmVyc2lvbicsXHJcbiAgICAgIHNoYXBlOiB7XHJcbiAgICAgICAgdHlwZTogJ1RleHQnLFxyXG4gICAgICAgIGNvbnRlbnQ6IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0RpYWdyYW1WZXJzaW9uJywgdmVyc2lvbiB8fCAwKVxyXG4gICAgICB9LFxyXG4gICAgICBvZmZzZXRZOiA1LFxyXG4gICAgICBvZmZzZXRYOiA1LFxyXG4gICAgICBzdHlsZToge1xyXG4gICAgICAgIGZvbnRTaXplOiA1MCxcclxuICAgICAgICBjb2xvcjogdGhpcy5fc2Vzc2lvbi50aGVtZS5kYXJrID8gJ3doaXRlJyA6ICdibGFjaycsXHJcbiAgICAgICAgb3BhY2l0eTogLjFcclxuICAgICAgfSBhcyBUZXh0U3R5bGVNb2RlbCxcclxuICAgICAgY29uc3RyYWludHM6IE5vZGVDb25zdHJhaW50cy5SZWFkT25seSxcclxuICAgICAgekluZGV4OiAtMVxyXG4gICAgfTtcclxuICB9XHJcbiAgbm9kZURlZmF1bHRzID0gKG9iajogTm9kZU1vZGVsKTogTm9kZU1vZGVsID0+IHtcclxuICAgIHN3aXRjaCAob2JqLnNoYXBlLnR5cGUpIHtcclxuICAgICAgY2FzZSAnU3dpbUxhbmUnOlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdUZXh0JzpcclxuICAgICAgICBpZiAob2JqLmlkICE9PSAndmVyc2lvbicpXHJcbiAgICAgICAgICBvYmouY29uc3RyYWludHMgPSBOb2RlQ29uc3RyYWludHMuRGVmYXVsdCAmIH5Ob2RlQ29uc3RyYWludHMuSW5Db25uZWN0ICYgfk5vZGVDb25zdHJhaW50cy5PdXRDb25uZWN0O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGlmIChvYmouYWRkSW5mbyAmJiBvYmouYWRkSW5mb1snbm9kZVR5cGUnXSkge1xyXG4gICAgICAgICAgb2JqLmNvbnN0cmFpbnRzID0gTm9kZUNvbnN0cmFpbnRzLkRlZmF1bHQgfCBOb2RlQ29uc3RyYWludHMuQXNwZWN0UmF0aW87XHJcbiAgICAgICAgICBvYmouc3R5bGUuc3Ryb2tlQ29sb3IgPSB0aGlzLl9zZXNzaW9uLnRoZW1lLmRhcmsgPyAnd2hpdGUnIDogJ2JsYWNrJztcclxuICAgICAgICAgIG9iai5wb3J0cyA9IHBvcnRzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiBvYmo7XHJcbiAgfVxyXG4gIHB1YmxpYyBjb25uRGVmYXVsdHMgPSAob2JqOiBDb25uZWN0b3JNb2RlbCkgPT4ge1xyXG4gICAgb2JqLmNvbnN0cmFpbnRzID0gQ29ubmVjdG9yQ29uc3RyYWludHMuRGVmYXVsdCB8IENvbm5lY3RvckNvbnN0cmFpbnRzLkJyaWRnaW5nO1xyXG4gICAgb2JqLnN0eWxlLnN0cm9rZUNvbG9yID0gdGhpcy5fc2Vzc2lvbi50aGVtZS5kYXJrID8gJ3doaXRlJyA6ICdibGFjayc7XHJcbiAgICBpZiAoIW9iai50eXBlKSBvYmoudHlwZSA9IHRoaXMuY29ubmVjdG9yVHlwZTtcclxuICAgIHJldHVybiBvYmo7XHJcbiAgfVxyXG4gIHB1YmxpYyBnZXRTeW1ib2xJbmZvKHN5bWJvbDogTm9kZU1vZGVsKTogU3ltYm9sSW5mbyB7XHJcbiAgICByZXR1cm4gc3ltYm9sLmFkZEluZm8gPyB7XHJcbiAgICAgIGZpdDogdHJ1ZSxcclxuICAgICAgdG9vbHRpcDogKHN5bWJvbC5hZGRJbmZvIGFzIGFueSkudGl0bGUsXHJcbiAgICAgIGRlc2NyaXB0aW9uOiB7IHRleHQ6IChzeW1ib2wuYWRkSW5mbyBhcyBhbnkpLnRpdGxlLCBvdmVyZmxvdzogJ1dyYXAnLCB3cmFwOiAnV3JhcFdpdGhPdmVyZmxvdycgfVxyXG4gICAgfSA6IG51bGw7XHJcbiAgfVxyXG4gIHB1YmxpYyBnZXRTeW1ib2xEZWZhdWx0cyhzeW1ib2w6IE5vZGVNb2RlbCk6IHZvaWQge1xyXG4gICAgc3ltYm9sLndpZHRoID0gc3ltYm9sLmhlaWdodCA9IDQwO1xyXG4gIH1cclxuICBwYW4oKSB7XHJcbiAgICB0aGlzLmRpYWdyYW0uY29uc3RyYWludHMgPSB0aGlzLmRpYWdyYW0uY29uc3RyYWludHMgfCBEaWFncmFtQ29uc3RyYWludHMuUGFuO1xyXG4gICAgdGhpcy5kaWFncmFtLnRvb2wgPSBEaWFncmFtVG9vbHMuWm9vbVBhbjtcclxuICB9XHJcbiAgY3Vyc29yKCkge1xyXG4gICAgdGhpcy5kaWFncmFtLmNvbnN0cmFpbnRzID0gdGhpcy5kaWFncmFtLmNvbnN0cmFpbnRzICYgfkRpYWdyYW1Db25zdHJhaW50cy5QYW47XHJcbiAgICB0aGlzLmRpYWdyYW0udG9vbCA9IERpYWdyYW1Ub29scy5EZWZhdWx0O1xyXG4gIH1cclxuICBzZWxlY3Rpb25DaGFuZ2UoZXZ0OiBJU2VsZWN0aW9uQ2hhbmdlRXZlbnRBcmdzKSB7XHJcbiAgICBjb25zdCB7IG5ld1ZhbHVlLCBzdGF0ZSB9ID0gZXZ0O1xyXG4gICAgaWYgKHN0YXRlICE9PSAnQ2hhbmdpbmcnIHx8ICFuZXdWYWx1ZS5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5fbm9kZWRlc3Ryb3kubmV4dCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb25uZWN0b3JzID0gbmV3VmFsdWUuZmlsdGVyKG4gPT4gbiBpbnN0YW5jZW9mIENvbm5lY3RvcikubWFwKG4gPT4gbiBhcyBDb25uZWN0b3JNb2RlbCk7XHJcbiAgICBpZiAoY29ubmVjdG9ycy5sZW5ndGgpIHtcclxuICAgICAgY29uc3QgY29ubmVjdG9yID0gY29ubmVjdG9yc1swXSxcclxuICAgICAgICB0eXBlID0gY29ubmVjdG9yLnR5cGU7XHJcbiAgICAgIHRoaXMuY29ubmVjdG9yVHlwZSA9IGNvbm5lY3RvcnMubGVuZ3RoID09PSAxIHx8XHJcbiAgICAgICAgY29ubmVjdG9ycy5ldmVyeShjID0+IGMudHlwZSA9PT0gdHlwZSkgPyB0eXBlIDogbnVsbDtcclxuICAgICAgaWYgKGNvbm5lY3Rvci5hbm5vdGF0aW9ucy5sZW5ndGggJiYgY29ubmVjdG9yLmFubm90YXRpb25zWzBdLnN0eWxlKVxyXG4gICAgICAgIHRoaXMuZm9udFNpemUgPSBjb25uZWN0b3IuYW5ub3RhdGlvbnNbMF0uc3R5bGUuZm9udFNpemU7XHJcbiAgICAgIHRoaXMuY29ubmVjdG9yVHlwZSA9IGNvbm5lY3RvcnMubGVuZ3RoID09PSAxIHx8XHJcbiAgICAgICAgY29ubmVjdG9ycy5ldmVyeShjID0+IGMudHlwZSA9PT0gdHlwZSkgPyB0eXBlIDogbnVsbDtcclxuICAgIH1cclxuICAgIGNvbnN0IG5vZGVzID0gbmV3VmFsdWUuZmlsdGVyKG4gPT4gbiBpbnN0YW5jZW9mIE5vZGUpO1xyXG4gICAgaWYgKG5vZGVzLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBub2RlID0gbm9kZXNbMF0sIGFkZEluZm8gPSBub2RlLmFkZEluZm8gYXMgYW55O1xyXG4gICAgICBpZiAoIWFkZEluZm8gfHwgIWFkZEluZm9bJ25vZGVUeXBlJ10pXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICBpZiAobm9kZS5hbm5vdGF0aW9ucy5sZW5ndGggJiYgbm9kZS5hbm5vdGF0aW9uc1swXS5zdHlsZSlcclxuICAgICAgICB0aGlzLmZvbnRTaXplID0gbm9kZS5hbm5vdGF0aW9uc1swXS5zdHlsZS5mb250U2l6ZTtcclxuICAgIH1cclxuICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShXb3JrZmxvd05vZGVDb21wb25lbnQsIHtcclxuICAgICAgc3RhdGU6IHtcclxuICAgICAgICBkaWFncmFtOiB0aGlzLmRpYWdyYW0sXHJcbiAgICAgICAgbm9kZXMsXHJcbiAgICAgICAgY29ubmVjdG9yc1xyXG4gICAgICB9LFxyXG4gICAgICBwb2xpY3k6IE9wZW5Qb2xpY3kuVGFiIC8qJiB+T3BlblBvbGljeS5FeHBhbmRhYmxlKi8sXHJcbiAgICAgIGdyb3VwOiAnJ1xyXG4gICAgfSkudGhlbihwID0+IHtcclxuICAgICAgcC5pbnN0YW5jZS5jaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5fbm9kZWRlc3Ryb3kpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jaGFuZ2UoKSk7XHJcbiAgICAgIHRoaXMuX25vZGVkZXN0cm95LnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHAuY2xvc2UoKSlcclxuICAgIH0pO1xyXG4gIH1cclxuICBhbGlnbih2YWx1ZTogQWxpZ25tZW50T3B0aW9ucykge1xyXG4gICAgdGhpcy5kaWFncmFtLnNlbGVjdGVkSXRlbXMubm9kZXMuZm9yRWFjaChuID0+IHtcclxuICAgICAgbi5hbm5vdGF0aW9ucy5sZW5ndGggJiYgT2JqZWN0LmFzc2lnbihuLmFubm90YXRpb25zWzBdLCB7XHJcbiAgICAgICAgb2Zmc2V0OiB7XHJcbiAgICAgICAgICB4OiB2YWx1ZSA9PT0gJ1JpZ2h0JyA/IDEgOiB2YWx1ZSA9PT0gJ0xlZnQnID8gMCA6IC41LFxyXG4gICAgICAgICAgeTogdmFsdWUgPT09ICdUb3AnID8gMCA6IHZhbHVlID09PSAnQm90dG9tJyA/IDEgOiAuNVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdmVydGljYWxBbGlnbm1lbnQ6IHZhbHVlID09PSAnVG9wJyA/ICdCb3R0b20nIDogdmFsdWUgPT09ICdCb3R0b20nID8gJ1RvcCcgOiAnQ2VudGVyJyxcclxuICAgICAgICBob3Jpem9udGFsQWxpZ25tZW50OiB2YWx1ZSA9PT0gJ1JpZ2h0JyA/ICdMZWZ0JyA6IHZhbHVlID09PSAnTGVmdCcgPyAnUmlnaHQnIDogJ0NlbnRlcidcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zLmNvbm5lY3RvcnMuZm9yRWFjaChjID0+XHJcbiAgICAgIGMuYW5ub3RhdGlvbnMuZm9yRWFjaChhID0+IE9iamVjdC5hc3NpZ24oYSwge1xyXG4gICAgICAgIHZlcnRpY2FsQWxpZ25tZW50OiB2YWx1ZSA9PT0gJ1RvcCcgPyAnQm90dG9tJyA6IHZhbHVlID09PSAnQm90dG9tJyA/ICdUb3AnIDogJ0NlbnRlcicsXHJcbiAgICAgICAgaG9yaXpvbnRhbEFsaWdubWVudDogdmFsdWUgPT09ICdMZWZ0JyA/ICdMZWZ0JyA6IHZhbHVlID09PSAnUmlnaHQnID8gJ1JpZ2h0JyA6ICdDZW50ZXInLFxyXG4gICAgICAgIC8vICBkaXNwbGFjZW1lbnQ6IHtcclxuICAgICAgICAvLyAgICB4OiB2YWx1ZSA9PT0gJ1JpZ2h0JyA/IDEwIDogdmFsdWUgPT09ICdMZWZ0JyA/IC0xMCA6IDAsXHJcbiAgICAgICAgLy8gICAgeTogdmFsdWUgPT09ICdUb3AnID8gLTEwIDogdmFsdWUgPT09ICdCb3R0b20nID8gMTAgOiAwXHJcbiAgICAgICAgLy8gIH1cclxuICAgICAgfSkpXHJcbiAgICApO1xyXG4gICAgdGhpcy5hbGlnbm1lbnQgPSB2YWx1ZTtcclxuICAgIHRoaXMuZGlydHkgPSB0cnVlO1xyXG4gIH1cclxuICBwdWJsaWMgZHJhZ0VudGVyKGFyZ3M6IElEcmFnRW50ZXJFdmVudEFyZ3MpOiB2b2lkIHtcclxuICAgIGlmIChhcmdzLmVsZW1lbnQgaW5zdGFuY2VvZiBOb2RlKSB7XHJcbiAgICAgIHN3aXRjaCAoYXJncy5lbGVtZW50LnNoYXBlLnR5cGUpIHtcclxuICAgICAgICBjYXNlICdTd2ltTGFuZSc6XHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNoYXBlID0gYXJncy5lbGVtZW50LnNoYXBlIGFzIFN3aW1MYW5lTW9kZWw7XHJcbiAgICAgICAgICAgIHN3aXRjaCAoc2hhcGUub3JpZW50YXRpb24pIHtcclxuICAgICAgICAgICAgICBjYXNlICdIb3Jpem9udGFsJzpcclxuICAgICAgICAgICAgICAgIHNoYXBlLmxhbmVzWzBdLndpZHRoID0gNDAwO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgY2FzZSAnVmVydGljYWwnOlxyXG4gICAgICAgICAgICAgICAgc2hhcGUubGFuZXNbMF0uaGVpZ2h0ID0gNDAwO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnVGV4dCc6XHJcbiAgICAgICAgICAvLyhhcmdzLmVsZW1lbnQuc3R5bGUgYXMgVGV4dFN0eWxlTW9kZWwpLmZvbnRTaXplID0gMjA7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGFyZ3MuZWxlbWVudDtcclxuICAgICAgICAgICAgYXJncy5lbGVtZW50LndpZHRoID0gMTAwO1xyXG4gICAgICAgICAgICBhcmdzLmVsZW1lbnQuaGVpZ2h0ICo9IDEwMCAvIHdpZHRoO1xyXG4gICAgICAgICAgICBhcmdzLmVsZW1lbnQub2Zmc2V0WCArPSAoYXJncy5lbGVtZW50LndpZHRoIC0gd2lkdGgpIC8gMjtcclxuICAgICAgICAgICAgYXJncy5lbGVtZW50Lm9mZnNldFkgKz0gKGFyZ3MuZWxlbWVudC5oZWlnaHQgLSBoZWlnaHQpIC8gMjtcclxuICAgICAgICAgICAgYXJncy5lbGVtZW50LnN0eWxlID0ge1xyXG4gICAgICAgICAgICAgIGZpbGw6ICd0cmFuc3BhcmVudCcsXHJcbiAgICAgICAgICAgICAgc3Ryb2tlQ29sb3I6IHRoaXMuX3Nlc3Npb24udGhlbWUuZGFyayA/ICd3aGl0ZScgOiAnYmxhY2snLFxyXG4gICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAxXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcHJvcGVydHlDaGFuZ2UoZSkge1xyXG4gICAgaWYgKGUuY2F1c2UgIT09IDIpIHRoaXMuZGlydHkgPSB0cnVlO1xyXG4gIH1cclxuICBjaGFuZ2UoKSB7XHJcbiAgICB0aGlzLmRpcnR5ID0gdHJ1ZTtcclxuICB9XHJcbiAgY29sbGVjdGlvbkNoYW5nZSgpIHtcclxuICAgIHRoaXMuX3JvdXRlci5jb2xsYXBzZSgpO1xyXG4gICAgdGhpcy5kaXJ0eSA9IHRydWU7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEN0cmwtcyBzYXZlXHJcbiAgICogQHBhcmFtIGV2ZW50XHJcbiAgICovXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXHJcbiAgaGFuZGxlS2V5Ym9hcmRFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgaWYgKHRoaXMuZGlydHkgJiYgZXZlbnQuY3RybEtleSAmJiAoZXZlbnQud2hpY2ggPT09IDgzIHx8IGV2ZW50LndoaWNoID09PSAxMTUpKSB7XHJcbiAgICAgIHRoaXMuc2F2ZSgpO1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBiZ0NoYW5nZSh2YWw6IHN0cmluZykge1xyXG4gICAgdGhpcy5kaWFncmFtLnNlbGVjdGVkSXRlbXMubm9kZXMuZm9yRWFjaChuID0+IG4uc3R5bGUuZmlsbCA9IHZhbCk7XHJcbiAgICB0aGlzLmRpcnR5ID0gdHJ1ZTtcclxuICB9XHJcbiAgY29sb3JDaGFuZ2UodmFsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zLm5vZGVzLmZvckVhY2gobiA9PiBuLmFubm90YXRpb25zLmZvckVhY2goYSA9PiBhLnN0eWxlLmNvbG9yID0gdmFsKSk7XHJcbiAgICB0aGlzLmRpYWdyYW0uc2VsZWN0ZWRJdGVtcy5jb25uZWN0b3JzLmZvckVhY2goYyA9PiBjLmFubm90YXRpb25zLmZvckVhY2goYSA9PiBhLnN0eWxlLmNvbG9yID0gdmFsKSk7XHJcbiAgICB0aGlzLmRpcnR5ID0gdHJ1ZTtcclxuICB9XHJcbiAgY29ubmVjdG9yVHlwZUNoYW5nZSh0eXBlOiBTZWdtZW50cykge1xyXG4gICAgdGhpcy5kaWFncmFtLnNlbGVjdGVkSXRlbXMuY29ubmVjdG9ycy5mb3JFYWNoKGMgPT4gYy50eXBlID0gdHlwZSk7XHJcbiAgICB0aGlzLmNvbm5lY3RvclR5cGUgPSB0eXBlO1xyXG4gICAgdGhpcy5kaXJ0eSA9IHRydWU7XHJcbiAgfVxyXG4gIGJvbGRDaGFuZ2UoKSB7XHJcbiAgICBjb25zdCB2YWwgPSAhdGhpcy5kaWFncmFtLnNlbGVjdGVkSXRlbXMubm9kZXNbMF0uYW5ub3RhdGlvbnNbMF0/LnN0eWxlPy5ib2xkO1xyXG4gICAgZnVuY3Rpb24gY2hhbmdlKG5vZGU6IChOb2RlTW9kZWwgfCBDb25uZWN0b3JNb2RlbCkpIHtcclxuICAgICAgaWYgKG5vZGUuc2hhcGUudHlwZSA9PT0gJ1RleHQnKVxyXG4gICAgICAgIChub2RlLnN0eWxlIGFzIFRleHRTdHlsZU1vZGVsKS5ib2xkID0gdmFsO1xyXG4gICAgICBlbHNlIG5vZGUuYW5ub3RhdGlvbnMuZm9yRWFjaChhID0+IHtcclxuICAgICAgICBpZiAoIWEuc3R5bGUpXHJcbiAgICAgICAgICBhLnN0eWxlID0geyBib2xkOiB2YWwgfTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBhLnN0eWxlLmJvbGQgPSB2YWw7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kaWFncmFtLnNlbGVjdGVkSXRlbXMubm9kZXMuZm9yRWFjaChjaGFuZ2UpO1xyXG4gICAgdGhpcy5kaWFncmFtLnNlbGVjdGVkSXRlbXMuY29ubmVjdG9ycy5mb3JFYWNoKGNoYW5nZSk7XHJcbiAgICB0aGlzLmRpYWdyYW0uZGF0YUJpbmQoKTtcclxuICB9XHJcbiAgaXRhbGljQ2hhbmdlKCkge1xyXG4gICAgY29uc3QgdmFsID0gIXRoaXMuZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zLm5vZGVzWzBdLmFubm90YXRpb25zWzBdPy5zdHlsZT8uaXRhbGljO1xyXG4gICAgZnVuY3Rpb24gY2hhbmdlKG5vZGU6IChOb2RlTW9kZWwgfCBDb25uZWN0b3JNb2RlbCkpIHtcclxuICAgICAgaWYgKG5vZGUuc2hhcGUudHlwZSA9PT0gJ1RleHQnKVxyXG4gICAgICAgIChub2RlLnN0eWxlIGFzIFRleHRTdHlsZU1vZGVsKS5pdGFsaWMgPSB2YWw7XHJcbiAgICAgIGVsc2Ugbm9kZS5hbm5vdGF0aW9ucy5mb3JFYWNoKGEgPT4ge1xyXG4gICAgICAgIGlmICghYS5zdHlsZSlcclxuICAgICAgICAgIGEuc3R5bGUgPSB7IGl0YWxpYzogdmFsIH07XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgYS5zdHlsZS5pdGFsaWMgPSB2YWw7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kaWFncmFtLnNlbGVjdGVkSXRlbXMubm9kZXMuZm9yRWFjaChjaGFuZ2UpO1xyXG4gICAgdGhpcy5kaWFncmFtLnNlbGVjdGVkSXRlbXMuY29ubmVjdG9ycy5mb3JFYWNoKGNoYW5nZSk7XHJcbiAgICB0aGlzLmRpYWdyYW0uZGF0YUJpbmQoKTtcclxuICB9XHJcbiAgZm9udFNpemVDaGFuZ2UodmFsOiBudW1iZXIpIHtcclxuICAgIGZ1bmN0aW9uIGNoYW5nZShub2RlOiAoTm9kZU1vZGVsIHwgQ29ubmVjdG9yTW9kZWwpKSB7XHJcbiAgICAgIGlmIChub2RlLnNoYXBlLnR5cGUgPT09ICdUZXh0JylcclxuICAgICAgICAobm9kZS5zdHlsZSBhcyBUZXh0U3R5bGVNb2RlbCkuZm9udFNpemUgPSB2YWw7XHJcbiAgICAgIGVsc2UgKG5vZGUgYXMgTm9kZU1vZGVsKS5hbm5vdGF0aW9ucz8uZm9yRWFjaChhID0+IHtcclxuICAgICAgICBpZiAoIWEuc3R5bGUpXHJcbiAgICAgICAgICBhLnN0eWxlID0geyBmb250U2l6ZTogdmFsIH07XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgYS5zdHlsZS5mb250U2l6ZSA9IHZhbDtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRpYWdyYW0uc2VsZWN0ZWRJdGVtcy5ub2Rlcy5mb3JFYWNoKGNoYW5nZSk7XHJcbiAgICB0aGlzLmRpYWdyYW0uc2VsZWN0ZWRJdGVtcy5jb25uZWN0b3JzLmZvckVhY2goY2hhbmdlKTtcclxuICAgIHRoaXMuZGlhZ3JhbS5kYXRhQmluZCgpO1xyXG4gIH1cclxuICBzdHJva2VDaGFuZ2UodmFsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zLmNvbm5lY3RvcnMuZm9yRWFjaChjID0+IHtcclxuICAgICAgYy5zdHlsZS5zdHJva2VDb2xvciA9IHZhbDtcclxuICAgICAgaWYgKGMuYW5ub3RhdGlvbnMpIGMuYW5ub3RhdGlvbnNbMF0uc3R5bGUuY29sb3IgPSB2YWw7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zLm5vZGVzLmZvckVhY2gobiA9PiBuLnN0eWxlLnN0cm9rZUNvbG9yID0gdmFsKTtcclxuICAgIHRoaXMuZGlydHkgPSB0cnVlO1xyXG4gIH1cclxuICBzYXZlKCk6IFByb21pc2U8YW55PiB7XHJcbiAgICB0aGlzLmRpYWdyYW0uc2VyaWFsaXphdGlvblNldHRpbmdzID0geyBwcmV2ZW50RGVmYXVsdHM6IHRydWUgfTtcclxuICAgIGNvbnN0IG9iaiA9IEpTT04ucGFyc2UodGhpcy5kaWFncmFtLnNhdmVEaWFncmFtKCkpIGFzIERpYWdyYW1Nb2RlbDtcclxuICAgIHRoaXMuX2Zvcm0ud29ya2Zsb3cuY29ubmVjdG9ycyA9IG9iai5jb25uZWN0b3JzO1xyXG4gICAgdGhpcy5fZm9ybS53b3JrZmxvdy5ub2RlcyA9IG9iai5ub2Rlcy5maWx0ZXIobiA9PiBuLmlkICE9PSAndmVyc2lvbicpO1xyXG4gICAgdGhpcy5zYXZpbmcgPSB0cnVlO1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlcnZpY2Uuc2F2ZSh0aGlzLl9mb3JtKS50b1Byb21pc2UoKS50aGVuKHYgPT4ge1xyXG4gICAgICB0aGlzLl9wcy50b2FzdCgnQ2hhbmdlc1NhdmVkJyk7XHJcbiAgICAgIGlmICh0aGlzLl9mb3JtLndvcmtmbG93LnZlcnNpb24gPCB2KSB7XHJcbiAgICAgICAgdGhpcy5fcHMudG9hc3QoJ0RpYWdyYW1WZXJzaW9uJywgdik7XHJcbiAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuZGlhZ3JhbS5nZXROb2RlT2JqZWN0KCd2ZXJzaW9uJyk7XHJcbiAgICAgICAgKG5vZGUuc2hhcGUgYXMgVGV4dE1vZGVsKS5jb250ZW50ID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnRGlhZ3JhbVZlcnNpb24nLCB2KTtcclxuICAgICAgICB0aGlzLmRpYWdyYW0uZGF0YUJpbmQoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9mb3JtLndvcmtmbG93LnZlcnNpb24gPSB2O1xyXG4gICAgICB0aGlzLmRpcnR5ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XHJcbiAgICB9LCAoKSA9PiB7XHJcbiAgICAgIHRoaXMuX3BzLmVycm9yKCk7XHJcbiAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN5bWJvbFBhbGV0dGU/LmRlc3Ryb3koKTtcclxuICAgIHRoaXMuZGlhZ3JhbT8uZGVzdHJveSgpO1xyXG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLl9ub2RlZGVzdHJveS5uZXh0KCk7XHJcbiAgICB0aGlzLl9ub2RlZGVzdHJveS5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8bWF0LXRvb2xiYXI+XHJcbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInRvb2xzID0gIXRvb2xzXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0NvbGxhcHNlJyB8IHRyYW5zbGF0ZVwiPjxtYXQtaWNvbj52aWV3X3NpZGViYXI8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwic2F2ZSgpXCIgY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cIiFkaXJ0eSB8fCBzYXZpbmdcIj57eydTYXZlQ2hhbmdlcycgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJkaWFncmFtLmZpdFRvUGFnZSgpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0ZpdFRvUGFnZScgfCB0cmFuc2xhdGVcIj48bWF0LWljb24+ZnVsbHNjcmVlbl9leGl0PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwicGFuKClcIiBbYml6ZG9jVG9vbHRpcF09XCInUGFuJyB8IHRyYW5zbGF0ZVwiPjxzcGFuIGNsYXNzPVwiZS1pY29ucyBzZi1pY29uLXBhblwiPjwvc3Bhbj48L2J1dHRvbj5cclxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY3Vyc29yKClcIiBbYml6ZG9jVG9vbHRpcF09XCInQ3Vyc29yJyB8IHRyYW5zbGF0ZVwiPjxzcGFuIGNsYXNzPVwiZS1pY29ucyBzZi1pY29uLWN1cnNvclwiPjwvc3Bhbj48L2J1dHRvbj5cclxuICA8c3BhbiBjbGFzcz1cInRvb2xzLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImRpYWdyYW0udW5kbygpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1VuZG8nIHwgdHJhbnNsYXRlXCIgW2Rpc2FibGVkXT1cIiFkaWFncmFtLmhpc3RvcnlNYW5hZ2VyPy5jYW5VbmRvXCI+PG1hdC1pY29uPnVuZG88L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJkaWFncmFtLnJlZG8oKVwiIFtiaXpkb2NUb29sdGlwXT1cIidSZWRvJyB8IHRyYW5zbGF0ZVwiIFtkaXNhYmxlZF09XCIhZGlhZ3JhbS5oaXN0b3J5TWFuYWdlcj8uY2FuUmVkb1wiPjxtYXQtaWNvbj5yZWRvPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICA8c3BhbiBjbGFzcz1cInRvb2xzLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImRpYWdyYW0uY29weSgpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0NvcHknIHwgdHJhbnNsYXRlXCIgW2Rpc2FibGVkXT1cImRpYWdyYW0uc2VsZWN0ZWRJdGVtcz8uY29ubmVjdG9ycy5sZW5ndGggPT09IDAgJiYgZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zPy5ub2Rlcy5sZW5ndGggPT09IDBcIj48bWF0LWljb24+Y29weTwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImRpYWdyYW0ucGFzdGUoKVwiIFtiaXpkb2NUb29sdGlwXT1cIidQYXN0ZScgfCB0cmFuc2xhdGVcIj48bWF0LWljb24+cGFzdGU8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJkaWFncmFtLnJlbW92ZSgpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1JlbW92ZScgfCB0cmFuc2xhdGVcIiBbZGlzYWJsZWRdPVwiZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zPy5jb25uZWN0b3JzLmxlbmd0aCA9PT0gMCAmJiBkaWFncmFtLnNlbGVjdGVkSXRlbXM/Lm5vZGVzLmxlbmd0aCA9PT0gMFwiPjxtYXQtaWNvbj5kZWxldGU8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gIDxzcGFuIGNsYXNzPVwidG9vbHMtZGl2aWRlclwiPjwvc3Bhbj5cclxuICA8YnV0dG9uIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cImxpbmVNZW51XCIgW2Rpc2FibGVkXT1cImRpYWdyYW0uc2VsZWN0ZWRJdGVtcz8uY29ubmVjdG9ycy5sZW5ndGggPT09IDBcIiBbYml6ZG9jVG9vbHRpcF09XCInQ29ubmVjdG9yTW9kZSd8dHJhbnNsYXRlXCI+XHJcbiAgICA8c3BhbiBjbGFzcz1cImUtbWVudS1pY29uXCIgW25nQ2xhc3NdPVwieydzZi1pY29uLXN0cmFpZ2h0LWxpbmUnOiBjb25uZWN0b3JUeXBlID09PSAnU3RyYWlnaHQnLFxyXG4gICAgICAgICAgJ3NmLWljb24tb3J0aG9nb25hbC1saW5lJzogY29ubmVjdG9yVHlwZSA9PT0gJ09ydGhvZ29uYWwnLFxyXG4gICAgICAgICAgJ3NmLWljb24tYmVpemVyLWxpbmUnOiBjb25uZWN0b3JUeXBlID09PSAnQmV6aWVyJ31cIj48L3NwYW4+XHJcbiAgICA8bWF0LWljb24+YXJyb3dfZHJvcF9kb3duPC9tYXQtaWNvbj5cclxuICA8L2J1dHRvbj5cclxuICA8bWF0LW1lbnUgI2xpbmVNZW51IG92ZXJsYXlQYW5lbENsYXNzPVwiaWNvbi1tZW51LXBhbmVsXCI+XHJcbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImNvbm5lY3RvclR5cGVDaGFuZ2UoJ1N0cmFpZ2h0JylcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJlLW1lbnUtaWNvbiBzZi1pY29uLXN0cmFpZ2h0LWxpbmVcIj48L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiY29ubmVjdG9yVHlwZUNoYW5nZSgnT3J0aG9nb25hbCcpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZS1tZW51LWljb24gc2YtaWNvbi1vcnRob2dvbmFsLWxpbmVcIj48L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiY29ubmVjdG9yVHlwZUNoYW5nZSgnQmV6aWVyJylcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJlLW1lbnUtaWNvbiBzZi1pY29uLWJlaXplci1saW5lXCI+PC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8IS0tPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbm5lY3RvcnMubGVuZ3RoXCI+XHJcbiAgICAgIDwgYml6ZG9jLWNvbG9yLXBpY2tlciAodmFsdWVDaGFuZ2VzKT0nc3Ryb2tlQ2hhbmdlKCRldmVudCknIFtsYWJlbF09XCInU3Ryb2tlJ3x0cmFuc2xhdGVcIj48LyBiaXpkb2MtY29sb3ItcGlja2VyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibm9kZXNbMF0uYW5ub3RhdGlvbnMubGVuZ3RoXCI+XHJcbiAgICAgICAgPCBiaXpkb2MtY29sb3ItcGlja2VyICh2YWx1ZUNoYW5nZXMpPSdjb2xvckNoYW5nZSgkZXZlbnQpJyBbbGFiZWxdPVwiJ0NvbG9yJ3x0cmFuc2xhdGVcIj48LyBiaXpkb2MtY29sb3ItcGlja2VyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPCBiaXpkb2MtY29sb3ItcGlja2VyICh2YWx1ZUNoYW5nZXMpPSdiZ0NoYW5nZSgkZXZlbnQpJyBbbGFiZWxdPVwiJ0JhY2tncm91bmQnfHRyYW5zbGF0ZVwiPjwvIGJpemRvYy1jb2xvci1waWNrZXI+XHJcbiAgICAgIDwgYml6ZG9jLWNvbG9yLXBpY2tlciAodmFsdWVDaGFuZ2VzKT0nc3Ryb2tlQ2hhbmdlKCRldmVudCknIFtsYWJlbF09XCInU3Ryb2tlJ3x0cmFuc2xhdGVcIj48LyBiaXpkb2MtY29sb3ItcGlja2VyPlxyXG4gICAgPC9uZy1jb250YWluZXI+LS0+XHJcbiAgPC9tYXQtbWVudT5cclxuICAmbmJzcDtcclxuICA8YnV0dG9uIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cImFsaWduTWVudVwiIFtkaXNhYmxlZF09XCJkaWFncmFtLnNlbGVjdGVkSXRlbXM/Lm5vZGVzLmxlbmd0aCA9PT0gMCAmJiBkaWFncmFtLnNlbGVjdGVkSXRlbXM/LmNvbm5lY3RvcnMubGVuZ3RoID09PSAwXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0FsaWduJ3x0cmFuc2xhdGVcIj5cclxuICAgIDxzcGFuIGNsYXNzPVwiZS1pY29uc1wiIFtuZ0NsYXNzXT1cInsnc2YtaWNvbi10b3AnOiBhbGlnbm1lbnQgPT09ICdUb3AnLFxyXG4gICAgICAgICAgJ3NmLWljb24tbGVmdCc6IGFsaWdubWVudCA9PT0gJ0xlZnQnLFxyXG4gICAgICAgICAgJ3NmLWljb24tY2VudGVyJzogYWxpZ25tZW50ID09PSAnQ2VudGVyJyxcclxuICAgICAgICAgICdzZi1pY29uLWJvdHRvbSc6IGFsaWdubWVudCA9PT0gJ0JvdHRvbScsXHJcbiAgICAgICAgICAnc2YtaWNvbi1yaWdodCc6IGFsaWdubWVudCA9PT0gJ1JpZ2h0J31cIj48L3NwYW4+XHJcbiAgICA8bWF0LWljb24+YXJyb3dfZHJvcF9kb3duPC9tYXQtaWNvbj5cclxuICA8L2J1dHRvbj5cclxuICA8bWF0LW1lbnUgI2FsaWduTWVudSBvdmVybGF5UGFuZWxDbGFzcz1cImljb24tbWVudS1wYW5lbFwiPlxyXG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJhbGlnbignVG9wJylcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJlLWljb25zIHNmLWljb24tdG9wXCI+PC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImFsaWduKCdMZWZ0JylcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJlLWljb25zIHNmLWljb24tbGVmdFwiPjwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJhbGlnbignQ2VudGVyJylcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJlLWljb25zIHNmLWljb24tY2VudGVyXCI+PC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImFsaWduKCdSaWdodCcpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZS1pY29ucyBzZi1pY29uLXJpZ2h0XCI+PC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImFsaWduKCdCb3R0b20nKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImUtaWNvbnMgc2YtaWNvbi1ib3R0b21cIj48L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L21hdC1tZW51PlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJib2xkQ2hhbmdlKClcIiBbYml6ZG9jVG9vbHRpcF09XCInQm9sZCcgfCB0cmFuc2xhdGVcIiBbZGlzYWJsZWRdPVwiZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zPy5jb25uZWN0b3JzLmxlbmd0aCA9PT0gMCAmJiBkaWFncmFtLnNlbGVjdGVkSXRlbXM/Lm5vZGVzLmxlbmd0aCA9PT0gMFwiPjxtYXQtaWNvbj5mb3JtYXRfYm9sZDwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIml0YWxpY0NoYW5nZSgpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0l0YWxpYycgfCB0cmFuc2xhdGVcIiBbZGlzYWJsZWRdPVwiZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zPy5jb25uZWN0b3JzLmxlbmd0aCA9PT0gMCAmJiBkaWFncmFtLnNlbGVjdGVkSXRlbXM/Lm5vZGVzLmxlbmd0aCA9PT0gMFwiPjxtYXQtaWNvbj5mb3JtYXRfaXRhbGljPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwic2l6ZU1lbnVcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpYWdyYW0uc2VsZWN0ZWRJdGVtcz8ubm9kZXMubGVuZ3RoID09PSAwICYmIGRpYWdyYW0uc2VsZWN0ZWRJdGVtcz8uY29ubmVjdG9ycy5sZW5ndGggPT09IDBcIlxyXG4gICAgICAgICAgW2JpemRvY1Rvb2x0aXBdPVwiJ0ZvbnRTaXplJ3x0cmFuc2xhdGVcIj5cclxuICAgIDxtYXQtaWNvbj5mb3JtYXRfc2l6ZTwvbWF0LWljb24+XHJcbiAgPC9idXR0b24+XHJcbiAgPG1hdC1tZW51ICNzaXplTWVudSBvdmVybGF5UGFuZWxDbGFzcz1cImljb24tbWVudS1wYW5lbFwiPlxyXG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtICpuZ0Zvcj1cImxldCBzaXplIG9mIGZvbnRTaXplc1wiIChjbGljayk9XCJmb250U2l6ZUNoYW5nZShzaXplKVwiPlxyXG4gICAgICB7e3NpemV9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9tYXQtbWVudT5cclxuICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbjwvbWF0LXRvb2xiYXI+XHJcbjxkaXYgY2xhc3M9XCJyb3cgY29udGFpbmVyXCI+XHJcbiAgPGRpdiBpZD1cInN5bWJvbHBhbGV0dGVcIiBbc3R5bGUuZGlzcGxheV09XCJ0b29scz8nJzonbm9uZSdcIj5cclxuICAgIDxkaXYgZGlyPVwibHRyXCIgI3N5bWJvbFBhbGV0dGVFbD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgI2RpYWdyYW1FbCBpZD1cImRpYWdyYW1cIiBjbGFzcz1cImZsZXhcIiBkaXI9XCJsdHJcIj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
586
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9mb3JtL3dvcmtmbG93L3dvcmtmbG93LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvYWRtaW4vZm9ybS93b3JrZmxvdy93b3JrZmxvdy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBYSxZQUFZLEVBQXFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBTyxNQUFNLE1BQU0sQ0FBQztBQUMzRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUNMLGtCQUFrQixFQUFFLG1CQUFtQixFQUNaLGVBQWUsRUFDMUMsT0FBTyxFQUFhLFFBQVEsRUFDNUIsSUFBSSxFQUEwQixZQUFZLEVBQUUsb0JBQW9CLEVBQ2hFLGFBQWEsRUFBRSxZQUFZLEVBQzNCLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQWlCLGVBQWUsRUFBZSxjQUFjLEVBQ3RILE1BQU0sa0NBQWtDLENBQUM7QUFRMUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBRXpELE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3hFLGFBQWEsQ0FBQyxNQUFNLENBQUMsWUFB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QUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUN0QixDQUFDLEVBQUUsR0FBRyxFQUFFO1lBQ04sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDL0IsQ0FBQzs4R0F4Z0JVLGlCQUFpQjtrR0FBakIsaUJBQWlCLG9ZQ2hFOUIsKytMQXVGQTs7U0R2QmEsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBVDdCLFNBQVM7K0JBQ0UsaUJBQWlCLFFBR3JCO3dCQUNKLEtBQUssRUFBRSxNQUFNO3FCQUNkOzRPQU8rQyxlQUFlO3NCQUE5RCxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDSixTQUFTO3NCQUFsRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBMlp4QyxtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdDaGlsZCwgT25EZXN0cm95LCBIb3N0TGlzdGVuZXIsIEVsZW1lbnRSZWYsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmaXJzdCwgZmlyc3RWYWx1ZUZyb20sIFN1YmplY3QsIHRhcCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7XHJcbiAgRGlhZ3JhbUNvbnN0cmFpbnRzLCBTZWxlY3RvckNvbnN0cmFpbnRzLCBDb25uZWN0b3JNb2RlbCxcclxuICBUZXh0TW9kZWwsIFBvaW50UG9ydE1vZGVsLCBOb2RlQ29uc3RyYWludHMsIFNjcm9sbFNldHRpbmdzTW9kZWwsXHJcbiAgRGlhZ3JhbSwgTm9kZU1vZGVsLCBVbmRvUmVkbywgU3ltYm9sSW5mbywgSURyYWdFbnRlckV2ZW50QXJncywgU25hcFNldHRpbmdzTW9kZWwsIE1hcmdpbk1vZGVsLFxyXG4gIE5vZGUsIFBhbGV0dGVNb2RlbCwgU2VnbWVudHMsIERpYWdyYW1Ub29scywgQ29ubmVjdG9yQ29uc3RyYWludHMsIFNlbGVjdG9yTW9kZWwsIFJ1bGVyU2V0dGluZ3NNb2RlbCwgQWxpZ25tZW50T3B0aW9ucywgVGV4dFN0eWxlTW9kZWwsXHJcbiAgU3ltYm9sUGFsZXR0ZSwgQnBtbkRpYWdyYW1zLCBEYXRhQmluZGluZywgSVNlbGVjdGlvbkNoYW5nZUV2ZW50QXJncyxcclxuICBDb25uZWN0b3JFZGl0aW5nLCBDb25uZWN0b3JCcmlkZ2luZywgU25hcHBpbmcsIENvbm5lY3RvciwgU3dpbUxhbmVNb2RlbCwgUG9ydENvbnN0cmFpbnRzLCBIZWFkZXJNb2RlbCwgUG9ydFZpc2liaWxpdHksIFNuYXBDb25zdHJhaW50cywgU2hhcGVBbm5vdGF0aW9uTW9kZWwsIFBhdGhBbm5vdGF0aW9uTW9kZWwsIERpYWdyYW1Nb2RlbFxyXG59IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWRpYWdyYW1zJztcclxuaW1wb3J0IHsgRm9ybSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWxzJztcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFN5c3RlbVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zeXN0ZW0uc2VydmljZSc7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3Byb21wdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQYW5lUmVmIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zbG90cy9wYW5lLXJlZic7XHJcbmltcG9ydCB7IFBhbmVzUm91dGVyIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zbG90cy9yb3V0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFdvcmtmbG93Tm9kZUNvbXBvbmVudCB9IGZyb20gJy4vbm9kZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBZG1pbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2FkbWluLWRpc21pc3Muc2VydmljZSc7XHJcbmltcG9ydCB7IE9wZW5Qb2xpY3kgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2NvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBNQVRFUklBTF9QQUxFVFRFUyB9IGZyb20gJy4uLy4uLy4uL2NvcmUvY29sb3JzJztcclxuXHJcbkRpYWdyYW0uSW5qZWN0KFVuZG9SZWRvLCBDb25uZWN0b3JCcmlkZ2luZywgQ29ubmVjdG9yRWRpdGluZywgU25hcHBpbmcpO1xyXG5TeW1ib2xQYWxldHRlLkluamVjdChCcG1uRGlhZ3JhbXMpO1xyXG5cclxuY29uc3QgcG9ydHM6IFBvaW50UG9ydE1vZGVsW10gPSBbXHJcbiAgeyBpZDogJ3BvcnQxJywgc2hhcGU6ICdDaXJjbGUnLCBvZmZzZXQ6IHsgeDogMCwgeTogMC41IH0sIHZpc2liaWxpdHk6IFBvcnRWaXNpYmlsaXR5LkNvbm5lY3QgfCBQb3J0VmlzaWJpbGl0eS5Ib3ZlciwgY29uc3RyYWludHM6IFBvcnRDb25zdHJhaW50cy5EZWZhdWx0IHwgUG9ydENvbnN0cmFpbnRzLkRyYXcgfSxcclxuICB7IGlkOiAncG9ydDInLCBzaGFwZTogJ0NpcmNsZScsIG9mZnNldDogeyB4OiAwLjUsIHk6IDEgfSwgdmlzaWJpbGl0eTogUG9ydFZpc2liaWxpdHkuQ29ubmVjdCB8IFBvcnRWaXNpYmlsaXR5LkhvdmVyLCBjb25zdHJhaW50czogUG9ydENvbnN0cmFpbnRzLkRlZmF1bHQgfCBQb3J0Q29uc3RyYWludHMuRHJhdyB9LFxyXG4gIHsgaWQ6ICdwb3J0MycsIHNoYXBlOiAnQ2lyY2xlJywgb2Zmc2V0OiB7IHg6IDEsIHk6IDAuNSB9LCB2aXNpYmlsaXR5OiBQb3J0VmlzaWJpbGl0eS5Db25uZWN0IHwgUG9ydFZpc2liaWxpdHkuSG92ZXIsIGNvbnN0cmFpbnRzOiBQb3J0Q29uc3RyYWludHMuRGVmYXVsdCB8IFBvcnRDb25zdHJhaW50cy5EcmF3IH0sXHJcbiAgeyBpZDogJ3BvcnQ0Jywgc2hhcGU6ICdDaXJjbGUnLCBvZmZzZXQ6IHsgeDogMC41LCB5OiAwIH0sIHZpc2liaWxpdHk6IFBvcnRWaXNpYmlsaXR5LkNvbm5lY3QgfCBQb3J0VmlzaWJpbGl0eS5Ib3ZlciwgY29uc3RyYWludHM6IFBvcnRDb25zdHJhaW50cy5EZWZhdWx0IHwgUG9ydENvbnN0cmFpbnRzLkRyYXcgfVxyXG5dO1xyXG5cclxuZnVuY3Rpb24gc2hvd1BhbGV0dGVJY29uKCk6IHZvaWQge1xyXG4gIGNvbnN0IHBhbGV0dGVTcGFjZTogSFRNTEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFsZXR0ZS1zcGFjZScpO1xyXG4gIGNvbnN0IGlzTW9iaWxlID0gd2luZG93Lm1hdGNoTWVkaWEoJyhtYXgtd2lkdGg6NTUwcHgpJykubWF0Y2hlcztcclxuICBpZiAoaXNNb2JpbGUpIHtcclxuICAgIGlmICghcGFsZXR0ZVNwYWNlLmNsYXNzTGlzdC5jb250YWlucygnc2ItbW9iaWxlLXBhbGV0dGUtb3BlbicpKSB7XHJcbiAgICAgIHBhbGV0dGVTcGFjZS5jbGFzc0xpc3QuYWRkKCdzYi1tb2JpbGUtcGFsZXR0ZS1vcGVuJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBwYWxldHRlU3BhY2UuY2xhc3NMaXN0LnJlbW92ZSgnc2ItbW9iaWxlLXBhbGV0dGUtb3BlbicpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gcGFsZXR0ZUljb25DbGljaygpIHtcclxuICBjb25zdCBpc01vYmlsZSA9IHdpbmRvdy5tYXRjaE1lZGlhKCcobWF4LXdpZHRoOjU1MHB4KScpLm1hdGNoZXM7XHJcbiAgaWYgKGlzTW9iaWxlKSB7XHJcbiAgICBjb25zdCBwYWxldHRlSWNvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYWxldHRlLWljb24nKTtcclxuICAgIGlmIChwYWxldHRlSWNvbikge1xyXG4gICAgICBwYWxldHRlSWNvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHNob3dQYWxldHRlSWNvbiwgZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdiaXpkb2Mtd29ya2Zsb3cnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi93b3JrZmxvdy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vd29ya2Zsb3cuY29tcG9uZW50LnNjc3MnXSxcclxuICBob3N0OiB7XHJcbiAgICBjbGFzczogJ3BhbmUnXHJcbiAgfVxyXG59KVxyXG4vKiogd29ya2Zsb3cgY29tcG9uZW50Ki9cclxuZXhwb3J0IGNsYXNzIFdvcmtmbG93Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIEFkbWluQ29tcG9uZW50IHtcclxuICBzeW1ib2xQYWxldHRlOiBTeW1ib2xQYWxldHRlO1xyXG4gIHJlYWRvbmx5IGZvbnRTaXplcyA9IFs5LCAxMSwgMTIsIDEzLCAxNSwgMjEsIDMxLCA0MV07XHJcbiAgZGlhZ3JhbTogRGlhZ3JhbTtcclxuICBAVmlld0NoaWxkKCdzeW1ib2xQYWxldHRlRWwnLCB7IHN0YXRpYzogdHJ1ZSB9KSBzeW1ib2xQYWxldHRlRWw6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnZGlhZ3JhbUVsJywgeyBzdGF0aWM6IHRydWUgfSkgZGlhZ3JhbUVsOiBFbGVtZW50UmVmO1xyXG4gIHByaXZhdGUgX3Rvb2xzOiBib29sZWFuO1xyXG4gIGdldCB0b29scygpIHsgcmV0dXJuIHRoaXMuX3Rvb2xzOyB9XHJcbiAgc2V0IHRvb2xzKHZhbDogYm9vbGVhbikge1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2RpYWdyYW1fdG9vbHMnLCB2YWwgPyAnMScgOiAnMCcpO1xyXG4gICAgdGhpcy5fdG9vbHMgPSB2YWw7XHJcbiAgfVxyXG4gIGNvbm5lY3RvclR5cGU6IFNlZ21lbnRzID0gJ0Jlemllcic7XHJcbiAgYWxpZ25tZW50OiBBbGlnbm1lbnRPcHRpb25zID0gJ0NlbnRlcic7XHJcbiAgZm9udFNpemUgPSAxMjtcclxuICBzYXZpbmcgPSBmYWxzZTtcclxuICBlbGVtZW50PzogYW55O1xyXG4gIGRpcnR5ID0gZmFsc2U7XHJcbiAgcGFyYW1zOiB7fTtcclxuICByZWFkb25seSBwYWxldHRlczogUGFsZXR0ZU1vZGVsW10gPSBbXTtcclxuICBkaWFncmFtQ29uc3RyYWludHM6IERpYWdyYW1Db25zdHJhaW50cyA9IERpYWdyYW1Db25zdHJhaW50cy5EZWZhdWx0IHwgRGlhZ3JhbUNvbnN0cmFpbnRzLkJyaWRnaW5nIHwgRGlhZ3JhbUNvbnN0cmFpbnRzLlVzZXJJbnRlcmFjdGlvbiB8IERpYWdyYW1Db25zdHJhaW50cy5ab29tO1xyXG4gIC8vU3ltYm9sUGFsZXR0ZSBQcm9wZXJ0aWVzXHJcbiAgcmVhZG9ubHkgc3ltYm9sTWFyZ2luOiBNYXJnaW5Nb2RlbCA9IHsgbGVmdDogMTAsIHJpZ2h0OiAxMCwgdG9wOiAxMCwgYm90dG9tOiAxMCB9O1xyXG4gIHJlYWRvbmx5IHNuYXBTZXR0aW5nczogU25hcFNldHRpbmdzTW9kZWwgPSB7XHJcbiAgICBzbmFwTGluZUNvbG9yOiB0aGlzLl9zZXNzaW9uLmdldEFjY2VudCgxMDApXHJcbiAgfTtcclxuICByZWFkb25seSBzZWxlY3RlZEl0ZW1zOiBTZWxlY3Rvck1vZGVsID0ge1xyXG4gICAgY29uc3RyYWludHM6IFNlbGVjdG9yQ29uc3RyYWludHMuQWxsICYgflNlbGVjdG9yQ29uc3RyYWludHMuUm90YXRlLFxyXG4gIH07XHJcbiAgcmVhZG9ubHkgc2Nyb2xsU2V0dGluZ3M6IFNjcm9sbFNldHRpbmdzTW9kZWwgPSB7XHJcbiAgICBtaW5ab29tOiAuNSxcclxuICAgIG1heFpvb206IDIuNSxcclxuICB9O1xyXG4gIHJlYWRvbmx5IHJ1bGVyU2V0dGluZ3M6IFJ1bGVyU2V0dGluZ3NNb2RlbCA9IHtcclxuICB9O1xyXG4gIHByaXZhdGUgX2Zvcm06IEZvcm07XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfbm9kZWRlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIC8qKiB3b3JrZmxvdyBjdG9yICovXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9wczogUHJvbXB0U2VydmljZSxcclxuICAgIHByaXZhdGUgX3NlcnZpY2U6IFN5c3RlbVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9wYW5lOiBQYW5lUmVmPFdvcmtmbG93Q29tcG9uZW50PixcclxuICAgIHByaXZhdGUgX3JvdXRlcjogUGFuZXNSb3V0ZXIsXHJcbiAgICBwcml2YXRlIF9zZXNzaW9uOiBTZXNzaW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkge1xyXG4gICAgdGhpcy5fdG9vbHMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZGlhZ3JhbV90b29scycpID09PSAnMSc7XHJcblxyXG4gICAgdGhpcy5fcGFsZXR0ZXMoKTtcclxuICB9XHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gIH1cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc3ltYm9sUGFsZXR0ZSA9IG5ldyBTeW1ib2xQYWxldHRlKHtcclxuICAgICAgZXhwYW5kTW9kZTogJ011bHRpcGxlJyxcclxuICAgICAgcGFsZXR0ZXM6IHRoaXMucGFsZXR0ZXMsXHJcbiAgICAgIHdpZHRoOiBcIjEwMCVcIixcclxuICAgICAgaGVpZ2h0OiBcIjEwMCVcIixcclxuICAgICAgZW5hYmxlUnRsOiBmYWxzZSxcclxuICAgICAgZW5hYmxlQW5pbWF0aW9uOiBmYWxzZSxcclxuICAgICAgc3ltYm9sSGVpZ2h0OiA4MCxcclxuICAgICAgc3ltYm9sV2lkdGg6IDgwLFxyXG4gICAgICBzeW1ib2xNYXJnaW46IHRoaXMuc3ltYm9sTWFyZ2luLFxyXG4gICAgICBnZXRTeW1ib2xJbmZvOiB0aGlzLmdldFN5bWJvbEluZm8uYmluZCh0aGlzKSxcclxuICAgICAgZ2V0Tm9kZURlZmF1bHRzOiB0aGlzLmdldFN5bWJvbERlZmF1bHRzLmJpbmQodGhpcyksXHJcbiAgICB9KTtcclxuICAgIHRoaXMuc3ltYm9sUGFsZXR0ZS5hcHBlbmRUbyh0aGlzLnN5bWJvbFBhbGV0dGVFbC5uYXRpdmVFbGVtZW50KTtcclxuICAgIHRoaXMuZGlhZ3JhbSA9IG5ldyBEaWFncmFtKHtcclxuICAgICAgd2lkdGg6IFwiMTAwJVwiLCBoZWlnaHQ6IFwiMTAwJVwiLFxyXG4gICAgICBzbmFwU2V0dGluZ3M6IHRoaXMuc25hcFNldHRpbmdzLFxyXG4gICAgICBnZXRDb25uZWN0b3JEZWZhdWx0czogdGhpcy5jb25uRGVmYXVsdHMuYmluZCh0aGlzKSxcclxuICAgICAgY29uc3RyYWludHM6IHRoaXMuZGlhZ3JhbUNvbnN0cmFpbnRzLFxyXG4gICAgICBnZXROb2RlRGVmYXVsdHM6IHRoaXMubm9kZURlZmF1bHRzLmJpbmQodGhpcyksXHJcbiAgICAgIHNjcm9sbFNldHRpbmdzOiB0aGlzLnNjcm9sbFNldHRpbmdzLFxyXG4gICAgICBzZWxlY3RlZEl0ZW1zOiB0aGlzLnNlbGVjdGVkSXRlbXMsXHJcbiAgICAgIHJ1bGVyU2V0dGluZ3M6IHRoaXMucnVsZXJTZXR0aW5ncyxcclxuICAgICAgZHJhZ0VudGVyOiB0aGlzLmRyYWdFbnRlci5iaW5kKHRoaXMpLFxyXG4gICAgICBjb25uZWN0aW9uQ2hhbmdlOiB0aGlzLmNoYW5nZS5iaW5kKHRoaXMpLFxyXG4gICAgICBjb2xsZWN0aW9uQ2hhbmdlOiB0aGlzLmNvbGxlY3Rpb25DaGFuZ2UuYmluZCh0aGlzKSxcclxuICAgICAgcHJvcGVydHlDaGFuZ2U6IHRoaXMucHJvcGVydHlDaGFuZ2UuYmluZCh0aGlzKSxcclxuICAgICAgc2VsZWN0aW9uQ2hhbmdlOiB0aGlzLnNlbGVjdGlvbkNoYW5nZS5iaW5kKHRoaXMpLFxyXG4gICAgfSwgdGhpcy5kaWFncmFtRWwubmF0aXZlRWxlbWVudCk7XHJcbiAgICBwYWxldHRlSWNvbkNsaWNrKCk7XHJcbiAgICB0aGlzLl9wYW5lLnBhcmFtc0NoYW5nZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUocCA9PiB7XHJcbiAgICAgIGNvbnN0IGlkID0gcFsnaWQnXTtcclxuICAgICAgdGhpcy5fZm9ybSA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5mb3Jtcy5maW5kKGYgPT4gZi5uYW1lID09PSBpZCk7XHJcbiAgICAgIHRoaXMuX3BhbmUudGl0bGUgPSB0aGlzLl9mb3JtLnRpdGxlO1xyXG4gICAgICB0aGlzLnBhcmFtcyA9IHsgaWQ6IHRoaXMuX2Zvcm0ubmFtZSB9O1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9wYW5lLmRhdGFDaGFuZ2UoKS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKGQgPT4ge1xyXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMuX2Zvcm0sIGQuZm9ybSk7XHJcbiAgICAgIGNvbnN0IGZsb3cgPSB0aGlzLl9mb3JtLndvcmtmbG93O1xyXG4gICAgICB0aGlzLmRpYWdyYW0ubm9kZXMgPSBmbG93Lm5vZGVzO1xyXG4gICAgICB0aGlzLmRpYWdyYW0uY29ubmVjdG9ycyA9IGZsb3cuY29ubmVjdG9ycztcclxuICAgICAgdGhpcy5kaWFncmFtLmRhdGFCaW5kKCk7XHJcbiAgICAgIHRoaXMuZGlhZ3JhbS5hZGQodGhpcy5fdmVyc2lvbk5vZGUoZmxvdy52ZXJzaW9uKSk7XHJcbiAgICAgIHRoaXMuZGlhZ3JhbS5maXRUb1BhZ2UoKTtcclxuICAgICAgdGhpcy5kaXJ0eSA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3BhbGV0dGVzKCkge1xyXG4gICAgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5vZGVzLmZvckVhY2gobiA9PiB7XHJcbiAgICAgIGNvbnN0IG5vZGU6IE5vZGVNb2RlbCA9IHtcclxuICAgICAgICBpZDogbi5uYW1lLFxyXG4gICAgICAgIHNoYXBlOiBuLnNoYXBlLFxyXG4gICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgIG5vZGVUeXBlOiBuLm5hbWUsXHJcbiAgICAgICAgICB0aXRsZTogbi50aXRsZVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgd2lkdGg6IDE0NSxcclxuICAgICAgICBoZWlnaHQ6IDE0NSxcclxuICAgICAgfTtcclxuICAgICAgKG5vZGUgYXMgYW55KS5ub2RlID0gbi5uYW1lO1xyXG4gICAgICBsZXQgcGFsZXR0ZSA9IHRoaXMucGFsZXR0ZXMuZmluZChwID0+IHAudGl0bGUgPT09IChuLnBhbGV0dGUgfHwgJycpKTtcclxuICAgICAgaWYgKCFwYWxldHRlKSB7XHJcbiAgICAgICAgcGFsZXR0ZSA9IHsgaWQ6IGBfJHtuLnBhbGV0dGV9YCwgZXhwYW5kZWQ6IHRydWUsIHRpdGxlOiBuLnBhbGV0dGUgfHwgJycsIHN5bWJvbHM6IFtdIH07XHJcbiAgICAgICAgdGhpcy5wYWxldHRlcy5wdXNoKHBhbGV0dGUpO1xyXG4gICAgICB9XHJcbiAgICAgIHBhbGV0dGUuc3ltYm9scy5wdXNoKG5vZGUpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnBhbGV0dGVzLnB1c2goe1xyXG4gICAgICBpZDogJ2Rlc2lnbicsXHJcbiAgICAgIHRpdGxlOiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdEZXNpZ24nKSxcclxuICAgICAgc3ltYm9sczogW3tcclxuICAgICAgICBpZDogJ0xpbmsyMicsXHJcbiAgICAgICAgdHlwZTogJ1N0cmFpZ2h0JyxcclxuICAgICAgICBzb3VyY2VQb2ludDogeyB4OiAwLCB5OiAwIH0sXHJcbiAgICAgICAgdGFyZ2V0UG9pbnQ6IHsgeDogNjAsIHk6IDYwIH0sXHJcbiAgICAgICAgdGFyZ2V0RGVjb3JhdG9yOiB7XHJcbiAgICAgICAgICBzaGFwZTogJ0Fycm93JyxcclxuICAgICAgICAgIHN0eWxlOiB7IHN0cm9rZUNvbG9yOiAnIzc1NzU3NScsIGZpbGw6ICcjNzU3NTc1JyB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgIHN0cm9rZVdpZHRoOiAxLFxyXG4gICAgICAgICAgc3Ryb2tlRGFzaEFycmF5OiAnNCA0JyxcclxuICAgICAgICAgIHN0cm9rZUNvbG9yOiAnIzc1NzU3NScsXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6ICd0ZXh0Jywgc2hhcGU6IHsgdHlwZTogJ1RleHQnLCBjb250ZW50OiAnVCcgfSxcclxuICAgICAgICBzdHlsZToge1xyXG4gICAgICAgICAgZmlsbDogJ3RyYW5zcGFyZW50J1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29uc3RyYWludHM6IE5vZGVDb25zdHJhaW50cy5EZWZhdWx0ICYgfk5vZGVDb25zdHJhaW50cy5JbkNvbm5lY3QgJiB+Tm9kZUNvbnN0cmFpbnRzLk91dENvbm5lY3QsXHJcbiAgICAgICAgYWRkSW5mbzogeyB0aXRsZTogdGhpcy5fdHJhbnNsYXRlLmdldCgnVGV4dCcpIH1cclxuICAgICAgfV1cclxuICAgIH0pO1xyXG4gICAgY29uc3QgY29sb3IgPSBNQVRFUklBTF9QQUxFVFRFU1snZ3JleSddWzIwMF07XHJcbiAgICB0aGlzLnBhbGV0dGVzLnB1c2goe1xyXG4gICAgICBpZDogJ3N3aW1sYW5lU2hhcGVzJyxcclxuICAgICAgZXhwYW5kZWQ6IHRydWUsXHJcbiAgICAgIHRpdGxlOiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdTd2ltbGFuZSBTaGFwZXMnKSxcclxuICAgICAgc3ltYm9sczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGlkOiAnc3dpbWxhbmUnLFxyXG4gICAgICAgICAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgICB0aXRsZTogdGhpcy5fdHJhbnNsYXRlLmdldCgnSG9yaXpvbnRhbCcpXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgc2hhcGU6IHtcclxuICAgICAgICAgICAgaGVhZGVyOiB7XHJcbiAgICAgICAgICAgICAgYW5ub3RhdGlvbjogeyBjb250ZW50OiAnUGxhbicgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB0eXBlOiAnU3dpbUxhbmUnLFxyXG4gICAgICAgICAgICBsYW5lczogW1xyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGlkOiAnbGFuZTEnLFxyXG4gICAgICAgICAgICAgICAgaGVhZGVyOiB7XHJcbiAgICAgICAgICAgICAgICAgIGFubm90YXRpb246IHsgY29udGVudDogJ0xhbmUnIH0sXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlOiB7IGZpbGw6IGNvbG9yIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIG9yaWVudGF0aW9uOiAnSG9yaXpvbnRhbCcsXHJcbiAgICAgICAgICAgIGlzTGFuZTogdHJ1ZVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGhlaWdodDogNjAsXHJcbiAgICAgICAgICB3aWR0aDogMTQwLFxyXG4gICAgICAgICAgb2Zmc2V0WDogNzAsXHJcbiAgICAgICAgICBvZmZzZXRZOiAzMCxcclxuICAgICAgICB9LCB7XHJcbiAgICAgICAgICBpZDogJ3Zzd2ltbGFuZScsXHJcbiAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdWZXJ0aWNhbCcpXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgc2hhcGU6IHtcclxuICAgICAgICAgICAgdHlwZTogJ1N3aW1MYW5lJyxcclxuICAgICAgICAgICAgaGVhZGVyOiB7XHJcbiAgICAgICAgICAgICAgYW5ub3RhdGlvbjogeyBjb250ZW50OiAnUGxhbicgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBsYW5lczogW1xyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGlkOiAnbGFuZTEnLFxyXG4gICAgICAgICAgICAgICAgaGVhZGVyOiB7XHJcbiAgICAgICAgICAgICAgICAgIGFubm90YXRpb246IHsgY29udGVudDogJ0xhbmUnIH0sXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlOiB7IGZpbGw6IGNvbG9yIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIG9yaWVudGF0aW9uOiAnVmVydGljYWwnLCBpc0xhbmU6IHRydWVcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBoZWlnaHQ6IDE0MCxcclxuICAgICAgICAgIHdpZHRoOiA2MCxcclxuICAgICAgICAgIG9mZnNldFg6IDcwLFxyXG4gICAgICAgICAgb2Zmc2V0WTogMzAsXHJcbiAgICAgICAgfSwge1xyXG4gICAgICAgICAgaWQ6ICd2cGhhc2UnLFxyXG4gICAgICAgICAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgICB0aXRsZTogdGhpcy5fdHJhbnNsYXRlLmdldCgnUGhhc2UnKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHNoYXBlOiB7XHJcbiAgICAgICAgICAgIHR5cGU6ICdTd2ltTGFuZScsXHJcbiAgICAgICAgICAgIHBoYXNlczogW1xyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHN0eWxlOiB7IHN0cm9rZVdpZHRoOiAxLCBzdHJva2VEYXNoQXJyYXk6ICczLDMnLCBzdHJva2VDb2xvcjogY29sb3IgfSxcclxuICAgICAgICAgICAgICAgIGhlYWRlcjoge1xyXG4gICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uOiB7IHRleHQ6ICdQaGFzZScgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1dLFxyXG4gICAgICAgICAgICBvcmllbnRhdGlvbjogJ1ZlcnRpY2FsJywgaXNQaGFzZTogdHJ1ZVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGhlaWdodDogNjAsXHJcbiAgICAgICAgICB3aWR0aDogMTQwLFxyXG4gICAgICAgICAgc3R5bGU6IHsgc3Ryb2tlQ29sb3I6IGNvbG9yIH1cclxuICAgICAgICB9LCB7XHJcbiAgICAgICAgICBpZDogJ2hwaGFzZScsXHJcbiAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdQaGFzZScpXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgc2hhcGU6IHtcclxuICAgICAgICAgICAgdHlwZTogJ1N3aW1MYW5lJyxcclxuICAgICAgICAgICAgcGhhc2VzOiBbe1xyXG4gICAgICAgICAgICAgIHN0eWxlOiB7IHN0cm9rZVdpZHRoOiAxLCBzdHJva2VEYXNoQXJyYXk6ICczLDMnLCBzdHJva2VDb2xvcjogY29sb3IgfSxcclxuICAgICAgICAgICAgICBoZWFkZXI6IHtcclxuICAgICAgICAgICAgICAgIGFubm90YXRpb246IHsgdGV4dDogJ1BoYXNlJyB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XSxcclxuICAgICAgICAgICAgb3JpZW50YXRpb246ICdIb3Jpem9udGFsJywgaXNQaGFzZTogdHJ1ZVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGhlaWdodDogNjAsXHJcbiAgICAgICAgICB3aWR0aDogMTQwLFxyXG4gICAgICAgICAgc3R5bGU6IHsgc3Ryb2tlQ29sb3I6IGNvbG9yIH1cclxuICAgICAgICB9XVxyXG4gICAgfSBhcyBQYWxldHRlTW9kZWwpO1xyXG4gIH1cclxuICBwcml2YXRlIF92ZXJzaW9uTm9kZSh2ZXJzaW9uOiBudW1iZXIpOiBOb2RlTW9kZWwge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaWQ6ICd2ZXJzaW9uJyxcclxuICAgICAgc2hhcGU6IHtcclxuICAgICAgICB0eXBlOiAnVGV4dCcsXHJcbiAgICAgICAgY29udGVudDogdGhpcy5fdHJhbnNsYXRlLmdldCgnRGlhZ3JhbVZlcnNpb24nLCB2ZXJzaW9uIHx8IDApXHJcbiAgICAgIH0sXHJcbiAgICAgIG9mZnNldFk6IDUsXHJcbiAgICAgIG9mZnNldFg6IDUsXHJcbiAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgZm9udFNpemU6IDUwLFxyXG4gICAgICAgIGNvbG9yOiB0aGlzLl9zZXNzaW9uLnRoZW1lLmRhcmsgPyAnd2hpdGUnIDogJ2JsYWNrJyxcclxuICAgICAgICBvcGFjaXR5OiAuMVxyXG4gICAgICB9IGFzIFRleHRTdHlsZU1vZGVsLFxyXG4gICAgICBjb25zdHJhaW50czogTm9kZUNvbnN0cmFpbnRzLlJlYWRPbmx5LFxyXG4gICAgICB6SW5kZXg6IC0xXHJcbiAgICB9O1xyXG4gIH1cclxuICBub2RlRGVmYXVsdHMgPSAob2JqOiBOb2RlTW9kZWwpOiBOb2RlTW9kZWwgPT4ge1xyXG4gICAgc3dpdGNoIChvYmouc2hhcGUudHlwZSkge1xyXG4gICAgICBjYXNlICdTd2ltTGFuZSc6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ1RleHQnOlxyXG4gICAgICAgIGlmIChvYmouaWQgIT09ICd2ZXJzaW9uJylcclxuICAgICAgICAgIG9iai5jb25zdHJhaW50cyA9IE5vZGVDb25zdHJhaW50cy5EZWZhdWx0ICYgfk5vZGVDb25zdHJhaW50cy5JbkNvbm5lY3QgJiB+Tm9kZUNvbnN0cmFpbnRzLk91dENvbm5lY3Q7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgaWYgKG9iai5hZGRJbmZvICYmIG9iai5hZGRJbmZvWydub2RlVHlwZSddKSB7XHJcbiAgICAgICAgICBvYmouY29uc3RyYWludHMgPSBOb2RlQ29uc3RyYWludHMuRGVmYXVsdCB8IE5vZGVDb25zdHJhaW50cy5Bc3BlY3RSYXRpbztcclxuICAgICAgICAgIG9iai5zdHlsZS5zdHJva2VDb2xvciA9IHRoaXMuX3Nlc3Npb24udGhlbWUuZGFyayA/ICd3aGl0ZScgOiAnYmxhY2snO1xyXG4gICAgICAgICAgb2JqLnBvcnRzID0gcG9ydHM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG9iajtcclxuICB9XHJcbiAgcHVibGljIGNvbm5EZWZhdWx0cyA9IChvYmo6IENvbm5lY3Rvck1vZGVsKSA9PiB7XHJcbiAgICBvYmouY29uc3RyYWludHMgPSBDb25uZWN0b3JDb25zdHJhaW50cy5EZWZhdWx0IHwgQ29ubmVjdG9yQ29uc3RyYWludHMuQnJpZGdpbmc7XHJcbiAgICBvYmouc3R5bGUuc3Ryb2tlQ29sb3IgPSB0aGlzLl9zZXNzaW9uLnRoZW1lLmRhcmsgPyAnd2hpdGUnIDogJ2JsYWNrJztcclxuICAgIGlmICghb2JqLnR5cGUpIG9iai50eXBlID0gdGhpcy5jb25uZWN0b3JUeXBlO1xyXG4gICAgcmV0dXJuIG9iajtcclxuICB9XHJcbiAgcHVibGljIGdldFN5bWJvbEluZm8oc3ltYm9sOiBOb2RlTW9kZWwpOiBTeW1ib2xJbmZvIHtcclxuICAgIHJldHVybiBzeW1ib2wuYWRkSW5mbyA/IHtcclxuICAgICAgZml0OiB0cnVlLFxyXG4gICAgICB0b29sdGlwOiAoc3ltYm9sLmFkZEluZm8gYXMgYW55KS50aXRsZSxcclxuICAgICAgZGVzY3JpcHRpb246IHsgdGV4dDogKHN5bWJvbC5hZGRJbmZvIGFzIGFueSkudGl0bGUsIG92ZXJmbG93OiAnV3JhcCcsIHdyYXA6ICdXcmFwV2l0aE92ZXJmbG93JyB9XHJcbiAgICB9IDogbnVsbDtcclxuICB9XHJcbiAgcHVibGljIGdldFN5bWJvbERlZmF1bHRzKHN5bWJvbDogTm9kZU1vZGVsKTogdm9pZCB7XHJcbiAgICBzeW1ib2wud2lkdGggPSBzeW1ib2wuaGVpZ2h0ID0gNDA7XHJcbiAgfVxyXG4gIHBhbigpIHtcclxuICAgIHRoaXMuZGlhZ3JhbS5jb25zdHJhaW50cyA9IHRoaXMuZGlhZ3JhbS5jb25zdHJhaW50cyB8IERpYWdyYW1Db25zdHJhaW50cy5QYW47XHJcbiAgICB0aGlzLmRpYWdyYW0udG9vbCA9IERpYWdyYW1Ub29scy5ab29tUGFuO1xyXG4gIH1cclxuICBjdXJzb3IoKSB7XHJcbiAgICB0aGlzLmRpYWdyYW0uY29uc3RyYWludHMgPSB0aGlzLmRpYWdyYW0uY29uc3RyYWludHMgJiB+RGlhZ3JhbUNvbnN0cmFpbnRzLlBhbjtcclxuICAgIHRoaXMuZGlhZ3JhbS50b29sID0gRGlhZ3JhbVRvb2xzLkRlZmF1bHQ7XHJcbiAgfVxyXG4gIHNlbGVjdGlvbkNoYW5nZShldnQ6IElTZWxlY3Rpb25DaGFuZ2VFdmVudEFyZ3MpIHtcclxuICAgIGNvbnN0IHsgbmV3VmFsdWUsIHN0YXRlIH0gPSBldnQ7XHJcbiAgICBpZiAoc3RhdGUgIT09ICdDaGFuZ2luZycgfHwgIW5ld1ZhbHVlLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLl9ub2RlZGVzdHJveS5uZXh0KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbm5lY3RvcnMgPSBuZXdWYWx1ZS5maWx0ZXIobiA9PiBuIGluc3RhbmNlb2YgQ29ubmVjdG9yKS5tYXAobiA9PiBuIGFzIENvbm5lY3Rvck1vZGVsKTtcclxuICAgIGlmIChjb25uZWN0b3JzLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBjb25uZWN0b3IgPSBjb25uZWN0b3JzWzBdLFxyXG4gICAgICAgIHR5cGUgPSBjb25uZWN0b3IudHlwZTtcclxuICAgICAgdGhpcy5jb25uZWN0b3JUeXBlID0gY29ubmVjdG9ycy5sZW5ndGggPT09IDEgfHxcclxuICAgICAgICBjb25uZWN0b3JzLmV2ZXJ5KGMgPT4gYy50eXBlID09PSB0eXBlKSA/IHR5cGUgOiBudWxsO1xyXG4gICAgICBpZiAoY29ubmVjdG9yLmFubm90YXRpb25zLmxlbmd0aCAmJiBjb25uZWN0b3IuYW5ub3RhdGlvbnNbMF0uc3R5bGUpXHJcbiAgICAgICAgdGhpcy5mb250U2l6ZSA9IGNvbm5lY3Rvci5hbm5vdGF0aW9uc1swXS5zdHlsZS5mb250U2l6ZTtcclxuICAgICAgdGhpcy5jb25uZWN0b3JUeXBlID0gY29ubmVjdG9ycy5sZW5ndGggPT09IDEgfHxcclxuICAgICAgICBjb25uZWN0b3JzLmV2ZXJ5KGMgPT4gYy50eXBlID09PSB0eXBlKSA/IHR5cGUgOiBudWxsO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgbm9kZXMgPSBuZXdWYWx1ZS5maWx0ZXIobiA9PiBuIGluc3RhbmNlb2YgTm9kZSk7XHJcbiAgICBpZiAobm9kZXMubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnN0IG5vZGUgPSBub2Rlc1swXSwgYWRkSW5mbyA9IG5vZGUuYWRkSW5mbyBhcyBhbnk7XHJcbiAgICAgIGlmICghYWRkSW5mbyB8fCAhYWRkSW5mb1snbm9kZVR5cGUnXSlcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIGlmIChub2RlLmFubm90YXRpb25zLmxlbmd0aCAmJiBub2RlLmFubm90YXRpb25zWzBdLnN0eWxlKVxyXG4gICAgICAgIHRoaXMuZm9udFNpemUgPSBub2RlLmFubm90YXRpb25zWzBdLnN0eWxlLmZvbnRTaXplO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFdvcmtmbG93Tm9kZUNvbXBvbmVudCwge1xyXG4gICAgICBzdGF0ZToge1xyXG4gICAgICAgIGRpYWdyYW06IHRoaXMuZGlhZ3JhbSxcclxuICAgICAgICBub2RlcyxcclxuICAgICAgICBjb25uZWN0b3JzXHJcbiAgICAgIH0sXHJcbiAgICAgIHBvbGljeTogT3BlblBvbGljeS5UYWIgLyomIH5PcGVuUG9saWN5LkV4cGFuZGFibGUqLyxcclxuICAgICAgZ3JvdXA6ICcnXHJcbiAgICB9KS50aGVuKHAgPT4ge1xyXG4gICAgICBwLmluc3RhbmNlLmNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl9ub2RlZGVzdHJveSkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNoYW5nZSgpKTtcclxuICAgICAgdGhpcy5fbm9kZWRlc3Ryb3kucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKCkgPT4gcC5jbG9zZSgpKVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGFsaWduKHZhbHVlOiBBbGlnbm1lbnRPcHRpb25zKSB7XHJcbiAgICB0aGlzLmRpYWdyYW0uc2VsZWN0ZWRJdGVtcy5ub2Rlcy5mb3JFYWNoKG4gPT4ge1xyXG4gICAgICBuLmFubm90YXRpb25zLmxlbmd0aCAmJiBPYmplY3QuYXNzaWduKG4uYW5ub3RhdGlvbnNbMF0sIHtcclxuICAgICAgICBvZmZzZXQ6IHtcclxuICAgICAgICAgIHg6IHZhbHVlID09PSAnUmlnaHQnID8gMSA6IHZhbHVlID09PSAnTGVmdCcgPyAwIDogLjUsXHJcbiAgICAgICAgICB5OiB2YWx1ZSA9PT0gJ1RvcCcgPyAwIDogdmFsdWUgPT09ICdCb3R0b20nID8gMSA6IC41XHJcbiAgICAgICAgfSxcclxuICAgICAgICB2ZXJ0aWNhbEFsaWdubWVudDogdmFsdWUgPT09ICdUb3AnID8gJ0JvdHRvbScgOiB2YWx1ZSA9PT0gJ0JvdHRvbScgPyAnVG9wJyA6ICdDZW50ZXInLFxyXG4gICAgICAgIGhvcml6b250YWxBbGlnbm1lbnQ6IHZhbHVlID09PSAnUmlnaHQnID8gJ0xlZnQnIDogdmFsdWUgPT09ICdMZWZ0JyA/ICdSaWdodCcgOiAnQ2VudGVyJ1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5kaWFncmFtLnNlbGVjdGVkSXRlbXMuY29ubmVjdG9ycy5mb3JFYWNoKGMgPT5cclxuICAgICAgYy5hbm5vdGF0aW9ucy5mb3JFYWNoKGEgPT4gT2JqZWN0LmFzc2lnbihhLCB7XHJcbiAgICAgICAgdmVydGljYWxBbGlnbm1lbnQ6IHZhbHVlID09PSAnVG9wJyA/ICdCb3R0b20nIDogdmFsdWUgPT09ICdCb3R0b20nID8gJ1RvcCcgOiAnQ2VudGVyJyxcclxuICAgICAgICBob3Jpem9udGFsQWxpZ25tZW50OiB2YWx1ZSA9PT0gJ0xlZnQnID8gJ0xlZnQnIDogdmFsdWUgPT09ICdSaWdodCcgPyAnUmlnaHQnIDogJ0NlbnRlcicsXHJcbiAgICAgICAgLy8gIGRpc3BsYWNlbWVudDoge1xyXG4gICAgICAgIC8vICAgIHg6IHZhbHVlID09PSAnUmlnaHQnID8gMTAgOiB2YWx1ZSA9PT0gJ0xlZnQnID8gLTEwIDogMCxcclxuICAgICAgICAvLyAgICB5OiB2YWx1ZSA9PT0gJ1RvcCcgPyAtMTAgOiB2YWx1ZSA9PT0gJ0JvdHRvbScgPyAxMCA6IDBcclxuICAgICAgICAvLyAgfVxyXG4gICAgICB9KSlcclxuICAgICk7XHJcbiAgICB0aGlzLmFsaWdubWVudCA9IHZhbHVlO1xyXG4gICAgdGhpcy5kaXJ0eSA9IHRydWU7XHJcbiAgfVxyXG4gIHB1YmxpYyBkcmFnRW50ZXIoYXJnczogSURyYWdFbnRlckV2ZW50QXJncyk6IHZvaWQge1xyXG4gICAgaWYgKGFyZ3MuZWxlbWVudCBpbnN0YW5jZW9mIE5vZGUpIHtcclxuICAgICAgc3dpdGNoIChhcmdzLmVsZW1lbnQuc2hhcGUudHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ1N3aW1MYW5lJzpcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgY29uc3Qgc2hhcGUgPSBhcmdzLmVsZW1lbnQuc2hhcGUgYXMgU3dpbUxhbmVNb2RlbDtcclxuICAgICAgICAgICAgc3dpdGNoIChzaGFwZS5vcmllbnRhdGlvbikge1xyXG4gICAgICAgICAgICAgIGNhc2UgJ0hvcml6b250YWwnOlxyXG4gICAgICAgICAgICAgICAgc2hhcGUubGFuZXNbMF0ud2lkdGggPSA0MDA7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICBjYXNlICdWZXJ0aWNhbCc6XHJcbiAgICAgICAgICAgICAgICBzaGFwZS5sYW5lc1swXS5oZWlnaHQgPSA0MDA7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICBjYXNlICdUZXh0JzpcclxuICAgICAgICAgIC8vKGFyZ3MuZWxlbWVudC5zdHlsZSBhcyBUZXh0U3R5bGVNb2RlbCkuZm9udFNpemUgPSAyMDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gYXJncy5lbGVtZW50O1xyXG4gICAgICAgICAgICBhcmdzLmVsZW1lbnQud2lkdGggPSAxMDA7XHJcbiAgICAgICAgICAgIGFyZ3MuZWxlbWVudC5oZWlnaHQgKj0gMTAwIC8gd2lkdGg7XHJcbiAgICAgICAgICAgIGFyZ3MuZWxlbWVudC5vZmZzZXRYICs9IChhcmdzLmVsZW1lbnQud2lkdGggLSB3aWR0aCkgLyAyO1xyXG4gICAgICAgICAgICBhcmdzLmVsZW1lbnQub2Zmc2V0WSArPSAoYXJncy5lbGVtZW50LmhlaWdodCAtIGhlaWdodCkgLyAyO1xyXG4gICAgICAgICAgICBhcmdzLmVsZW1lbnQuc3R5bGUgPSB7XHJcbiAgICAgICAgICAgICAgZmlsbDogJ3RyYW5zcGFyZW50JyxcclxuICAgICAgICAgICAgICBzdHJva2VDb2xvcjogdGhpcy5fc2Vzc2lvbi50aGVtZS5kYXJrID8gJ3doaXRlJyA6ICdibGFjaycsXHJcbiAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDFcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBwcm9wZXJ0eUNoYW5nZShlKSB7XHJcbiAgICBpZiAoZS5jYXVzZSAhPT0gMikgdGhpcy5kaXJ0eSA9IHRydWU7XHJcbiAgfVxyXG4gIGNoYW5nZSgpIHtcclxuICAgIHRoaXMuZGlydHkgPSB0cnVlO1xyXG4gIH1cclxuICBjb2xsZWN0aW9uQ2hhbmdlKCkge1xyXG4gICAgdGhpcy5fcm91dGVyLmNvbGxhcHNlKCk7XHJcbiAgICB0aGlzLmRpcnR5ID0gdHJ1ZTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQ3RybC1zIHNhdmVcclxuICAgKiBAcGFyYW0gZXZlbnRcclxuICAgKi9cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5kaXJ0eSAmJiBldmVudC5jdHJsS2V5ICYmIChldmVudC5rZXkgPT09ICdzJyB8fCBldmVudC5rZXkgPT09ICdTJykpIHtcclxuICAgICAgdGhpcy5zYXZlKCk7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGJnQ2hhbmdlKHZhbDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmRpYWdyYW0uc2VsZWN0ZWRJdGVtcy5ub2Rlcy5mb3JFYWNoKG4gPT4gbi5zdHlsZS5maWxsID0gdmFsKTtcclxuICAgIHRoaXMuZGlydHkgPSB0cnVlO1xyXG4gIH1cclxuICBjb2xvckNoYW5nZSh2YWw6IHN0cmluZykge1xyXG4gICAgdGhpcy5kaWFncmFtLnNlbGVjdGVkSXRlbXMubm9kZXMuZm9yRWFjaChuID0+IG4uYW5ub3RhdGlvbnMuZm9yRWFjaChhID0+IGEuc3R5bGUuY29sb3IgPSB2YWwpKTtcclxuICAgIHRoaXMuZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zLmNvbm5lY3RvcnMuZm9yRWFjaChjID0+IGMuYW5ub3RhdGlvbnMuZm9yRWFjaChhID0+IGEuc3R5bGUuY29sb3IgPSB2YWwpKTtcclxuICAgIHRoaXMuZGlydHkgPSB0cnVlO1xyXG4gIH1cclxuICBjb25uZWN0b3JUeXBlQ2hhbmdlKHR5cGU6IFNlZ21lbnRzKSB7XHJcbiAgICB0aGlzLmRpYWdyYW0uc2VsZWN0ZWRJdGVtcy5jb25uZWN0b3JzLmZvckVhY2goYyA9PiBjLnR5cGUgPSB0eXBlKTtcclxuICAgIHRoaXMuY29ubmVjdG9yVHlwZSA9IHR5cGU7XHJcbiAgICB0aGlzLmRpcnR5ID0gdHJ1ZTtcclxuICB9XHJcbiAgYm9sZENoYW5nZSgpIHtcclxuICAgIGNvbnN0IHZhbCA9ICF0aGlzLmRpYWdyYW0uc2VsZWN0ZWRJdGVtcy5ub2Rlc1swXS5hbm5vdGF0aW9uc1swXT8uc3R5bGU/LmJvbGQ7XHJcbiAgICBmdW5jdGlvbiBjaGFuZ2Uobm9kZTogKE5vZGVNb2RlbCB8IENvbm5lY3Rvck1vZGVsKSkge1xyXG4gICAgICBpZiAobm9kZS5zaGFwZS50eXBlID09PSAnVGV4dCcpXHJcbiAgICAgICAgKG5vZGUuc3R5bGUgYXMgVGV4dFN0eWxlTW9kZWwpLmJvbGQgPSB2YWw7XHJcbiAgICAgIGVsc2Ugbm9kZS5hbm5vdGF0aW9ucy5mb3JFYWNoKGEgPT4ge1xyXG4gICAgICAgIGlmICghYS5zdHlsZSlcclxuICAgICAgICAgIGEuc3R5bGUgPSB7IGJvbGQ6IHZhbCB9O1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIGEuc3R5bGUuYm9sZCA9IHZhbDtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRpYWdyYW0uc2VsZWN0ZWRJdGVtcy5ub2Rlcy5mb3JFYWNoKGNoYW5nZSk7XHJcbiAgICB0aGlzLmRpYWdyYW0uc2VsZWN0ZWRJdGVtcy5jb25uZWN0b3JzLmZvckVhY2goY2hhbmdlKTtcclxuICAgIHRoaXMuZGlhZ3JhbS5kYXRhQmluZCgpO1xyXG4gIH1cclxuICBpdGFsaWNDaGFuZ2UoKSB7XHJcbiAgICBjb25zdCB2YWwgPSAhdGhpcy5kaWFncmFtLnNlbGVjdGVkSXRlbXMubm9kZXNbMF0uYW5ub3RhdGlvbnNbMF0/LnN0eWxlPy5pdGFsaWM7XHJcbiAgICBmdW5jdGlvbiBjaGFuZ2Uobm9kZTogKE5vZGVNb2RlbCB8IENvbm5lY3Rvck1vZGVsKSkge1xyXG4gICAgICBpZiAobm9kZS5zaGFwZS50eXBlID09PSAnVGV4dCcpXHJcbiAgICAgICAgKG5vZGUuc3R5bGUgYXMgVGV4dFN0eWxlTW9kZWwpLml0YWxpYyA9IHZhbDtcclxuICAgICAgZWxzZSBub2RlLmFubm90YXRpb25zLmZvckVhY2goYSA9PiB7XHJcbiAgICAgICAgaWYgKCFhLnN0eWxlKVxyXG4gICAgICAgICAgYS5zdHlsZSA9IHsgaXRhbGljOiB2YWwgfTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBhLnN0eWxlLml0YWxpYyA9IHZhbDtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRpYWdyYW0uc2VsZWN0ZWRJdGVtcy5ub2Rlcy5mb3JFYWNoKGNoYW5nZSk7XHJcbiAgICB0aGlzLmRpYWdyYW0uc2VsZWN0ZWRJdGVtcy5jb25uZWN0b3JzLmZvckVhY2goY2hhbmdlKTtcclxuICAgIHRoaXMuZGlhZ3JhbS5kYXRhQmluZCgpO1xyXG4gIH1cclxuICBmb250U2l6ZUNoYW5nZSh2YWw6IG51bWJlcikge1xyXG4gICAgZnVuY3Rpb24gY2hhbmdlKG5vZGU6IChOb2RlTW9kZWwgfCBDb25uZWN0b3JNb2RlbCkpIHtcclxuICAgICAgaWYgKG5vZGUuc2hhcGUudHlwZSA9PT0gJ1RleHQnKVxyXG4gICAgICAgIChub2RlLnN0eWxlIGFzIFRleHRTdHlsZU1vZGVsKS5mb250U2l6ZSA9IHZhbDtcclxuICAgICAgZWxzZSAobm9kZSBhcyBOb2RlTW9kZWwpLmFubm90YXRpb25zPy5mb3JFYWNoKGEgPT4ge1xyXG4gICAgICAgIGlmICghYS5zdHlsZSlcclxuICAgICAgICAgIGEuc3R5bGUgPSB7IGZvbnRTaXplOiB2YWwgfTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBhLnN0eWxlLmZvbnRTaXplID0gdmFsO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zLm5vZGVzLmZvckVhY2goY2hhbmdlKTtcclxuICAgIHRoaXMuZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zLmNvbm5lY3RvcnMuZm9yRWFjaChjaGFuZ2UpO1xyXG4gICAgdGhpcy5kaWFncmFtLmRhdGFCaW5kKCk7XHJcbiAgfVxyXG4gIHN0cm9rZUNoYW5nZSh2YWw6IHN0cmluZykge1xyXG4gICAgdGhpcy5kaWFncmFtLnNlbGVjdGVkSXRlbXMuY29ubmVjdG9ycy5mb3JFYWNoKGMgPT4ge1xyXG4gICAgICBjLnN0eWxlLnN0cm9rZUNvbG9yID0gdmFsO1xyXG4gICAgICBpZiAoYy5hbm5vdGF0aW9ucykgYy5hbm5vdGF0aW9uc1swXS5zdHlsZS5jb2xvciA9IHZhbDtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5kaWFncmFtLnNlbGVjdGVkSXRlbXMubm9kZXMuZm9yRWFjaChuID0+IG4uc3R5bGUuc3Ryb2tlQ29sb3IgPSB2YWwpO1xyXG4gICAgdGhpcy5kaXJ0eSA9IHRydWU7XHJcbiAgfVxyXG4gIHNhdmUoKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHRoaXMuZGlhZ3JhbS5zZXJpYWxpemF0aW9uU2V0dGluZ3MgPSB7IHByZXZlbnREZWZhdWx0czogdHJ1ZSB9O1xyXG4gICAgY29uc3Qgb2JqID0gSlNPTi5wYXJzZSh0aGlzLmRpYWdyYW0uc2F2ZURpYWdyYW0oKSkgYXMgRGlhZ3JhbU1vZGVsO1xyXG4gICAgdGhpcy5fZm9ybS53b3JrZmxvdy5jb25uZWN0b3JzID0gb2JqLmNvbm5lY3RvcnM7XHJcbiAgICB0aGlzLl9mb3JtLndvcmtmbG93Lm5vZGVzID0gb2JqLm5vZGVzLmZpbHRlcihuID0+IG4uaWQgIT09ICd2ZXJzaW9uJyk7XHJcbiAgICB0aGlzLnNhdmluZyA9IHRydWU7XHJcbiAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20odGhpcy5fc2VydmljZS5zYXZlKHRoaXMuX2Zvcm0pKS50aGVuKHYgPT4ge1xyXG4gICAgICB0aGlzLl9wcy50b2FzdCgnQ2hhbmdlc1NhdmVkJyk7XHJcbiAgICAgIGlmICh0aGlzLl9mb3JtLndvcmtmbG93LnZlcnNpb24gPCB2KSB7XHJcbiAgICAgICAgdGhpcy5fcHMudG9hc3QoJ0RpYWdyYW1WZXJzaW9uJywgdik7XHJcbiAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuZGlhZ3JhbS5nZXROb2RlT2JqZWN0KCd2ZXJzaW9uJyk7XHJcbiAgICAgICAgKG5vZGUuc2hhcGUgYXMgVGV4dE1vZGVsKS5jb250ZW50ID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnRGlhZ3JhbVZlcnNpb24nLCB2KTtcclxuICAgICAgICB0aGlzLmRpYWdyYW0uZGF0YUJpbmQoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9mb3JtLndvcmtmbG93LnZlcnNpb24gPSB2O1xyXG4gICAgICB0aGlzLmRpcnR5ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XHJcbiAgICB9LCAoKSA9PiB7XHJcbiAgICAgIHRoaXMuX3BzLmVycm9yKCk7XHJcbiAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN5bWJvbFBhbGV0dGU/LmRlc3Ryb3koKTtcclxuICAgIHRoaXMuZGlhZ3JhbT8uZGVzdHJveSgpO1xyXG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLl9ub2RlZGVzdHJveS5uZXh0KCk7XHJcbiAgICB0aGlzLl9ub2RlZGVzdHJveS5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8bWF0LXRvb2xiYXI+XHJcbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInRvb2xzID0gIXRvb2xzXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0NvbGxhcHNlJyB8IHRyYW5zbGF0ZVwiPjxtYXQtaWNvbj52aWV3X3NpZGViYXI8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwic2F2ZSgpXCIgY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cIiFkaXJ0eSB8fCBzYXZpbmdcIj57eydTYXZlQ2hhbmdlcycgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJkaWFncmFtLmZpdFRvUGFnZSgpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0ZpdFRvUGFnZScgfCB0cmFuc2xhdGVcIj48bWF0LWljb24+ZnVsbHNjcmVlbl9leGl0PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwicGFuKClcIiBbYml6ZG9jVG9vbHRpcF09XCInUGFuJyB8IHRyYW5zbGF0ZVwiPjxzcGFuIGNsYXNzPVwiZS1pY29ucyBzZi1pY29uLXBhblwiPjwvc3Bhbj48L2J1dHRvbj5cclxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY3Vyc29yKClcIiBbYml6ZG9jVG9vbHRpcF09XCInQ3Vyc29yJyB8IHRyYW5zbGF0ZVwiPjxzcGFuIGNsYXNzPVwiZS1pY29ucyBzZi1pY29uLWN1cnNvclwiPjwvc3Bhbj48L2J1dHRvbj5cclxuICA8c3BhbiBjbGFzcz1cInRvb2xzLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImRpYWdyYW0udW5kbygpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1VuZG8nIHwgdHJhbnNsYXRlXCIgW2Rpc2FibGVkXT1cIiFkaWFncmFtLmhpc3RvcnlNYW5hZ2VyPy5jYW5VbmRvXCI+PG1hdC1pY29uPnVuZG88L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJkaWFncmFtLnJlZG8oKVwiIFtiaXpkb2NUb29sdGlwXT1cIidSZWRvJyB8IHRyYW5zbGF0ZVwiIFtkaXNhYmxlZF09XCIhZGlhZ3JhbS5oaXN0b3J5TWFuYWdlcj8uY2FuUmVkb1wiPjxtYXQtaWNvbj5yZWRvPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICA8c3BhbiBjbGFzcz1cInRvb2xzLWRpdmlkZXJcIj48L3NwYW4+XHJcbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImRpYWdyYW0uY29weSgpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0NvcHknIHwgdHJhbnNsYXRlXCIgW2Rpc2FibGVkXT1cImRpYWdyYW0uc2VsZWN0ZWRJdGVtcz8uY29ubmVjdG9ycy5sZW5ndGggPT09IDAgJiYgZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zPy5ub2Rlcy5sZW5ndGggPT09IDBcIj48bWF0LWljb24+Y29weTwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImRpYWdyYW0ucGFzdGUoKVwiIFtiaXpkb2NUb29sdGlwXT1cIidQYXN0ZScgfCB0cmFuc2xhdGVcIj48bWF0LWljb24+cGFzdGU8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJkaWFncmFtLnJlbW92ZSgpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1JlbW92ZScgfCB0cmFuc2xhdGVcIiBbZGlzYWJsZWRdPVwiZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zPy5jb25uZWN0b3JzLmxlbmd0aCA9PT0gMCAmJiBkaWFncmFtLnNlbGVjdGVkSXRlbXM/Lm5vZGVzLmxlbmd0aCA9PT0gMFwiPjxtYXQtaWNvbj5kZWxldGU8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gIDxzcGFuIGNsYXNzPVwidG9vbHMtZGl2aWRlclwiPjwvc3Bhbj5cclxuICA8YnV0dG9uIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cImxpbmVNZW51XCIgW2Rpc2FibGVkXT1cImRpYWdyYW0uc2VsZWN0ZWRJdGVtcz8uY29ubmVjdG9ycy5sZW5ndGggPT09IDBcIiBbYml6ZG9jVG9vbHRpcF09XCInQ29ubmVjdG9yTW9kZSd8dHJhbnNsYXRlXCI+XHJcbiAgICA8c3BhbiBjbGFzcz1cImUtbWVudS1pY29uXCIgW25nQ2xhc3NdPVwieydzZi1pY29uLXN0cmFpZ2h0LWxpbmUnOiBjb25uZWN0b3JUeXBlID09PSAnU3RyYWlnaHQnLFxyXG4gICAgICAgICAgJ3NmLWljb24tb3J0aG9nb25hbC1saW5lJzogY29ubmVjdG9yVHlwZSA9PT0gJ09ydGhvZ29uYWwnLFxyXG4gICAgICAgICAgJ3NmLWljb24tYmVpemVyLWxpbmUnOiBjb25uZWN0b3JUeXBlID09PSAnQmV6aWVyJ31cIj48L3NwYW4+XHJcbiAgICA8bWF0LWljb24+YXJyb3dfZHJvcF9kb3duPC9tYXQtaWNvbj5cclxuICA8L2J1dHRvbj5cclxuICA8bWF0LW1lbnUgI2xpbmVNZW51IG92ZXJsYXlQYW5lbENsYXNzPVwiaWNvbi1tZW51LXBhbmVsXCI+XHJcbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImNvbm5lY3RvclR5cGVDaGFuZ2UoJ1N0cmFpZ2h0JylcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJlLW1lbnUtaWNvbiBzZi1pY29uLXN0cmFpZ2h0LWxpbmVcIj48L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiY29ubmVjdG9yVHlwZUNoYW5nZSgnT3J0aG9nb25hbCcpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZS1tZW51LWljb24gc2YtaWNvbi1vcnRob2dvbmFsLWxpbmVcIj48L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiY29ubmVjdG9yVHlwZUNoYW5nZSgnQmV6aWVyJylcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJlLW1lbnUtaWNvbiBzZi1pY29uLWJlaXplci1saW5lXCI+PC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8IS0tPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbm5lY3RvcnMubGVuZ3RoXCI+XHJcbiAgICAgIDwgYml6ZG9jLWNvbG9yLXBpY2tlciAodmFsdWVDaGFuZ2VzKT0nc3Ryb2tlQ2hhbmdlKCRldmVudCknIFtsYWJlbF09XCInU3Ryb2tlJ3x0cmFuc2xhdGVcIj48LyBiaXpkb2MtY29sb3ItcGlja2VyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibm9kZXNbMF0uYW5ub3RhdGlvbnMubGVuZ3RoXCI+XHJcbiAgICAgICAgPCBiaXpkb2MtY29sb3ItcGlja2VyICh2YWx1ZUNoYW5nZXMpPSdjb2xvckNoYW5nZSgkZXZlbnQpJyBbbGFiZWxdPVwiJ0NvbG9yJ3x0cmFuc2xhdGVcIj48LyBiaXpkb2MtY29sb3ItcGlja2VyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPCBiaXpkb2MtY29sb3ItcGlja2VyICh2YWx1ZUNoYW5nZXMpPSdiZ0NoYW5nZSgkZXZlbnQpJyBbbGFiZWxdPVwiJ0JhY2tncm91bmQnfHRyYW5zbGF0ZVwiPjwvIGJpemRvYy1jb2xvci1waWNrZXI+XHJcbiAgICAgIDwgYml6ZG9jLWNvbG9yLXBpY2tlciAodmFsdWVDaGFuZ2VzKT0nc3Ryb2tlQ2hhbmdlKCRldmVudCknIFtsYWJlbF09XCInU3Ryb2tlJ3x0cmFuc2xhdGVcIj48LyBiaXpkb2MtY29sb3ItcGlja2VyPlxyXG4gICAgPC9uZy1jb250YWluZXI+LS0+XHJcbiAgPC9tYXQtbWVudT5cclxuICAmbmJzcDtcclxuICA8YnV0dG9uIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cImFsaWduTWVudVwiIFtkaXNhYmxlZF09XCJkaWFncmFtLnNlbGVjdGVkSXRlbXM/Lm5vZGVzLmxlbmd0aCA9PT0gMCAmJiBkaWFncmFtLnNlbGVjdGVkSXRlbXM/LmNvbm5lY3RvcnMubGVuZ3RoID09PSAwXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0FsaWduJ3x0cmFuc2xhdGVcIj5cclxuICAgIDxzcGFuIGNsYXNzPVwiZS1pY29uc1wiIFtuZ0NsYXNzXT1cInsnc2YtaWNvbi10b3AnOiBhbGlnbm1lbnQgPT09ICdUb3AnLFxyXG4gICAgICAgICAgJ3NmLWljb24tbGVmdCc6IGFsaWdubWVudCA9PT0gJ0xlZnQnLFxyXG4gICAgICAgICAgJ3NmLWljb24tY2VudGVyJzogYWxpZ25tZW50ID09PSAnQ2VudGVyJyxcclxuICAgICAgICAgICdzZi1pY29uLWJvdHRvbSc6IGFsaWdubWVudCA9PT0gJ0JvdHRvbScsXHJcbiAgICAgICAgICAnc2YtaWNvbi1yaWdodCc6IGFsaWdubWVudCA9PT0gJ1JpZ2h0J31cIj48L3NwYW4+XHJcbiAgICA8bWF0LWljb24+YXJyb3dfZHJvcF9kb3duPC9tYXQtaWNvbj5cclxuICA8L2J1dHRvbj5cclxuICA8bWF0LW1lbnUgI2FsaWduTWVudSBvdmVybGF5UGFuZWxDbGFzcz1cImljb24tbWVudS1wYW5lbFwiPlxyXG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJhbGlnbignVG9wJylcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJlLWljb25zIHNmLWljb24tdG9wXCI+PC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImFsaWduKCdMZWZ0JylcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJlLWljb25zIHNmLWljb24tbGVmdFwiPjwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJhbGlnbignQ2VudGVyJylcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJlLWljb25zIHNmLWljb24tY2VudGVyXCI+PC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImFsaWduKCdSaWdodCcpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZS1pY29ucyBzZi1pY29uLXJpZ2h0XCI+PC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImFsaWduKCdCb3R0b20nKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImUtaWNvbnMgc2YtaWNvbi1ib3R0b21cIj48L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L21hdC1tZW51PlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJib2xkQ2hhbmdlKClcIiBbYml6ZG9jVG9vbHRpcF09XCInQm9sZCcgfCB0cmFuc2xhdGVcIiBbZGlzYWJsZWRdPVwiZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zPy5jb25uZWN0b3JzLmxlbmd0aCA9PT0gMCAmJiBkaWFncmFtLnNlbGVjdGVkSXRlbXM/Lm5vZGVzLmxlbmd0aCA9PT0gMFwiPjxtYXQtaWNvbj5mb3JtYXRfYm9sZDwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIml0YWxpY0NoYW5nZSgpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0l0YWxpYycgfCB0cmFuc2xhdGVcIiBbZGlzYWJsZWRdPVwiZGlhZ3JhbS5zZWxlY3RlZEl0ZW1zPy5jb25uZWN0b3JzLmxlbmd0aCA9PT0gMCAmJiBkaWFncmFtLnNlbGVjdGVkSXRlbXM/Lm5vZGVzLmxlbmd0aCA9PT0gMFwiPjxtYXQtaWNvbj5mb3JtYXRfaXRhbGljPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwic2l6ZU1lbnVcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpYWdyYW0uc2VsZWN0ZWRJdGVtcz8ubm9kZXMubGVuZ3RoID09PSAwICYmIGRpYWdyYW0uc2VsZWN0ZWRJdGVtcz8uY29ubmVjdG9ycy5sZW5ndGggPT09IDBcIlxyXG4gICAgICAgICAgW2JpemRvY1Rvb2x0aXBdPVwiJ0ZvbnRTaXplJ3x0cmFuc2xhdGVcIj5cclxuICAgIDxtYXQtaWNvbj5mb3JtYXRfc2l6ZTwvbWF0LWljb24+XHJcbiAgPC9idXR0b24+XHJcbiAgPG1hdC1tZW51ICNzaXplTWVudSBvdmVybGF5UGFuZWxDbGFzcz1cImljb24tbWVudS1wYW5lbFwiPlxyXG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtICpuZ0Zvcj1cImxldCBzaXplIG9mIGZvbnRTaXplc1wiIChjbGljayk9XCJmb250U2l6ZUNoYW5nZShzaXplKVwiPlxyXG4gICAgICB7e3NpemV9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9tYXQtbWVudT5cclxuICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbjwvbWF0LXRvb2xiYXI+XHJcbjxkaXYgY2xhc3M9XCJyb3cgY29udGFpbmVyXCI+XHJcbiAgPGRpdiBpZD1cInN5bWJvbHBhbGV0dGVcIiBbc3R5bGUuZGlzcGxheV09XCJ0b29scz8nJzonbm9uZSdcIj5cclxuICAgIDxkaXYgZGlyPVwibHRyXCIgI3N5bWJvbFBhbGV0dGVFbD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgI2RpYWdyYW1FbCBpZD1cImRpYWdyYW1cIiBjbGFzcz1cImZsZXhcIiBkaXI9XCJsdHJcIj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -2,12 +2,11 @@ import { __decorate } from "tslib";
2
2
  import { Component, ViewChild, Inject } from "@angular/core";
3
3
  import { MatTableDataSource } from "@angular/material/table";
4
4
  import { FormGroup, FormControl, Validators } from "@angular/forms";
5
+ import { TemplatePortal } from "@angular/cdk/portal";
5
6
  import { merge, Subject } from "rxjs";
6
7
  import { filter, takeUntil } from "rxjs/operators";
7
- import { TemplatePortal } from "@angular/cdk/portal";
8
8
  import { BizDoc } from "../../core/decorators";
9
9
  import { UtilityRef } from "../utility-ref";
10
- import { ESCAPE } from "@angular/cdk/keycodes";
11
10
  import * as i0 from "@angular/core";
12
11
  import * as i1 from "@angular/cdk/bidi";
13
12
  import * as i2 from "../../core/session.service";
@@ -81,7 +80,7 @@ let ManageCubeIndexUtility = class ManageCubeIndexUtility {
81
80
  hasBackdrop: true,
82
81
  panelClass: 'home-panel'
83
82
  });
84
- merge(oRef.backdropClick(), oRef.keydownEvents().pipe(filter(k => k.keyCode === ESCAPE))).pipe(takeUntil(this._destroy)).subscribe(() => oRef.detach());
83
+ merge(oRef.backdropClick(), oRef.keydownEvents().pipe(filter(k => k.key === 'Escape'))).pipe(takeUntil(this._destroy)).subscribe(() => oRef.detach());
85
84
  }
86
85
  _find(axes) {
87
86
  const n = this.names.length;
@@ -158,4 +157,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
158
157
  type: ViewChild,
159
158
  args: ['editTmpl', { static: true }]
160
159
  }] } });
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlLWN1YmUtaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9pbmRpY2VzL21hbmFnZS1jdWJlLWluZGV4LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvYWRtaW4vaW5kaWNlcy9tYW5hZ2UtY3ViZS1pbmRleC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQTRDLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUdyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzVDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVMvQyxJQUNRLHNCQUFzQixHQUQ5QixNQUNRLHNCQUFzQjtJQWdCNUIsWUFBb0IsSUFBb0IsRUFDVixJQUF5RCxFQUNyRixPQUF1QixFQUFVLEdBQXFCLEVBQzlDLEdBQWtCLEVBQ2xCLFFBQWlCO1FBSlAsU0FBSSxHQUFKLElBQUksQ0FBZ0I7UUFDVixTQUFJLEdBQUos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QUFVO2tHQWpCZCxzQkFBc0Isd0tDdkI5QixrN0RBbUNBOztBRFpRLHNCQUFzQjtJQUY3QixNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztHQUVsQyxzQkFBc0IsQ0F3SDdCO1NBeEhPLHNCQUFzQjsyRkFBdEIsc0JBQXNCO2tCQU43QixTQUFTOzs7MEJBdUJMLE1BQU07MkJBQUMsVUFBVTswSkFQcUIsUUFBUTtzQkFBaEQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYsIE9uRGVzdHJveSwgSW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3RhYmxlXCI7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheVJlZiB9IGZyb20gXCJAYW5ndWxhci9jZGsvb3ZlcmxheVwiO1xyXG5pbXBvcnQgeyBtZXJnZSwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9wb3J0YWxcIjtcclxuaW1wb3J0IHsgRGlyZWN0aW9uYWxpdHkgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2JpZGlcIjtcclxuaW1wb3J0IHsgVXRpbGl0eUNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb3JlL2Jhc2VcIjtcclxuaW1wb3J0IHsgQml6RG9jIH0gZnJvbSBcIi4uLy4uL2NvcmUvZGVjb3JhdG9yc1wiO1xyXG5pbXBvcnQgeyBVdGlsaXR5UmVmIH0gZnJvbSBcIi4uL3V0aWxpdHktcmVmXCI7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEN1YmVBeGlzIH0gZnJvbSBcIi4uLy4uL2NvcmUvbW9kZWxzXCI7XHJcbmltcG9ydCB7IEVTQ0FQRSB9IGZyb20gXCJAYW5ndWxhci9jZGsva2V5Y29kZXNcIjtcclxuaW1wb3J0IHsgUHJvbXB0U2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL3Byb21wdC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFByb2dyZXNzQmFyTW9kZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXJcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHN0eWxlVXJsczogWycuL21hbmFnZS1jdWJlLWluZGV4LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21hbmFnZS1jdWJlLWluZGV4LmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5AQml6RG9jKHsgc2VsZWN0b3I6ICdtYW5hZ2UtY3ViZS1pbmRleCcgfSlcclxuZXhwb3J0XHJcbiAgY2xhc3MgTWFuYWdlQ3ViZUluZGV4VXRpbGl0eSBpbXBsZW1lbnRzIFV0aWxpdHlDb21wb25lbnQ8YW55LCBhbnk+LCBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcmVhZG9ubHkgQ1VSUkVOQ1lfQ09ERTogc3RyaW5nO1xyXG4gIGRpcnR5ID0gZmFsc2U7XHJcbiAgYXhlczogQ3ViZUF4aXNbXTtcclxuICBkYXRhU291cmNlOiBNYXRUYWJsZURhdGFTb3VyY2U8SW5kZXg+O1xyXG4gIHJlYWRvbmx5IG5hbWVzOiBzdHJpbmdbXTtcclxuICByZWFkb25seSBkaXNwbGF5ZWRDb2x1bW5zID0gWyd2YWx1ZScsICdvcHRpb25zJ107XHJcbiAgcmVhZG9ubHkgZm9ybTogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XHJcbiAgICB2YWx1ZTogbmV3IEZvcm1Db250cm9sKDAsIFZhbGlkYXRvcnMucmVxdWlyZWQpXHJcbiAgfSk7XHJcbiAgQFZpZXdDaGlsZCgnZWRpdFRtcGwnLCB7IHN0YXRpYzogdHJ1ZSB9KSBlZGl0VG1wbDogVGVtcGxhdGVSZWY8YW55PjtcclxuICBsb2FkaW5nOiBQcm9ncmVzc0Jhck1vZGU7XHJcbiAgcHJpdmF0ZSBfZGF0YTogSW5kZXhbXTtcclxuICBwcml2YXRlIF9yb3c6IEluZGV4O1xyXG4gIHByaXZhdGUgX29SZWY6IE92ZXJsYXlSZWY7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZGlyOiBEaXJlY3Rpb25hbGl0eSxcclxuICAgIEBJbmplY3QoVXRpbGl0eVJlZikgcHJpdmF0ZSBfcmVmOiBVdGlsaXR5UmVmPGJvb2xlYW4sIEluZGV4W10sIEluZGV4W10sIGFueSwgT3B0aW9ucz4sXHJcbiAgICBzZXNzaW9uOiBTZXNzaW9uU2VydmljZSwgcHJpdmF0ZSBfdmM6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICBwcml2YXRlIF9zYjogUHJvbXB0U2VydmljZSxcclxuICAgIHByaXZhdGUgX292ZXJsYXk6IE92ZXJsYXkpIHtcclxuICAgIGNvbnN0IHsgY3ViZTogbmFtZSwgYXhlczogbmFtZXMgfSA9IF9yZWYub3B0aW9ucztcclxuICAgIGNvbnN0IGN1YmUgPSBuYW1lID8gc2Vzc2lvbi5wcm9maWxlLmN1YmVzLmZpbmQoYyA9PiBjLm5hbWUgPT09IG5hbWUpIDogc2Vzc2lvbi5wcm9maWxlLmN1YmVzWzBdO1xyXG4gICAgdGhpcy5DVVJSRU5DWV9DT0RFID0gY3ViZS5jdXJyZW5jeUNvZGU7XHJcbiAgICB0aGlzLmF4ZXMgPSBjdWJlLmF4ZXMuZmlsdGVyKGEgPT4gbmFtZXMgPyBuYW1lcy5pbmRleE9mKGEubmFtZSkgPiAtMSA6IGEuc2VsZWN0aW9uTW9kZSAhPT0gJ05vbmUnKTtcclxuICAgIHRoaXMubmFtZXMgPSBjdWJlLmF4ZXMubWFwKGEgPT4gYS5uYW1lKTtcclxuICAgIHRoaXMuYXhlcy5mb3JFYWNoKChhLCBpKSA9PiB7XHJcbiAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucy5zcGxpY2UoaSwgMCwgYS5uYW1lKTtcclxuICAgICAgY29uc3QgY3RybCA9IG5ldyBGb3JtQ29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgdGhpcy5mb3JtLmFkZENvbnRyb2woYS5uYW1lLCBjdHJsKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKHYgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuZm9ybS52YWxpZCkgcmV0dXJuO1xyXG4gICAgICBjb25zdCBheGVzID0gW107XHJcbiAgICAgIHRoaXMuYXhlcy5mb3JFYWNoKGEgPT4gYXhlc1t0aGlzLm5hbWVzLmluZGV4T2YoYS5uYW1lKV0gPSB0aGlzLmZvcm0udmFsdWVbYS5uYW1lXSB8fCBudWxsKTtcclxuICAgICAgaWYgKHRoaXMuX3Jvdykge1xyXG4gICAgICAgIGlmIChheGVzLmpvaW4oKSA9PT0gdGhpcy5fcm93LmF4ZXMuam9pbigpKVxyXG4gICAgICAgICAgdGhpcy5fcm93LnZhbHVlID0gdi52YWx1ZTtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IHJvdyA9IHRoaXMuX2ZpbmQoYXhlcyk7XHJcbiAgICAgICAgICBpZiAocm93KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3JvdyA9IHJvdztcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzWyd2YWx1ZSddLnNldFZhbHVlKHRoaXMuX3Jvdy52YWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLl9yb3cuYXhlcyA9IGF4ZXM7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHYudmFsdWUpIHtcclxuICAgICAgICB0aGlzLl9yb3cgPSB7IHZhbHVlOiB2LnZhbHVlLCBheGVzIH07XHJcbiAgICAgICAgdGhpcy5fZGF0YS5wdXNoKHRoaXMuX3Jvdyk7XHJcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmZpbHRlciA9ICcnO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZGlydHkgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBvUmVmID0gdGhpcy5fb1JlZiA9IHRoaXMuX292ZXJsYXkuY3JlYXRlKHtcclxuICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpLmNlbnRlckhvcml6b250YWxseSgpLmNlbnRlclZlcnRpY2FsbHkoKSxcclxuICAgICAgYmFja2Ryb3BDbGFzczogJ2Nkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wJyxcclxuICAgICAgZGlyZWN0aW9uOiB0aGlzLl9kaXIudmFsdWUsXHJcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICBwYW5lbENsYXNzOiAnaG9tZS1wYW5lbCdcclxuICAgIH0pO1xyXG4gICAgbWVyZ2Uob1JlZi5iYWNrZHJvcENsaWNrKCksIG9SZWYua2V5ZG93bkV2ZW50cygpLnBpcGUoZmlsdGVyKGsgPT4gay5rZXlDb2RlID09PSBFU0NBUEUpKSkucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZSgoKSA9PiBvUmVmLmRldGFjaCgpKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZmluZChheGVzOiBzdHJpbmdbXSk6IEluZGV4IHtcclxuICAgIGNvbnN0IG4gPSB0aGlzLm5hbWVzLmxlbmd0aDtcclxuICAgIHJldHVybiB0aGlzLl9kYXRhLmZpbmQoaW5kZXggPT4ge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKylcclxuICAgICAgICBpZiAoYXhlc1tpXSAmJiBheGVzW2ldICE9PSBpbmRleC5heGVzW2ldKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGFkZCgpIHtcclxuICAgIHRoaXMuX3JvdyA9IG51bGw7XHJcbiAgICBjb25zdCB2YWx1ZXMgPSB7IHZhbHVlOiAwIH07XHJcbiAgICB0aGlzLmF4ZXMuZm9yRWFjaChhID0+IHZhbHVlc1thLm5hbWVdID0gbnVsbCk7XHJcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh2YWx1ZXMsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIGNvbnN0IHBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLmVkaXRUbXBsLCB0aGlzLl92Yyk7XHJcbiAgICB0aGlzLl9vUmVmLmF0dGFjaChwb3J0YWwpO1xyXG4gIH1cclxuICBlZGl0KGl0ZW06IEluZGV4KSB7XHJcbiAgICB0aGlzLl9yb3cgPSBpdGVtO1xyXG4gICAgY29uc3QgdmFsdWVzID0geyB2YWx1ZTogaXRlbS52YWx1ZSB9O1xyXG4gICAgdGhpcy5heGVzLmZvckVhY2goYSA9PiB2YWx1ZXNbYS5uYW1lXSA9IGl0ZW0uYXhlc1t0aGlzLm5hbWVzLmluZGV4T2YoYS5uYW1lKV0pO1xyXG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUodmFsdWVzLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICBjb25zdCBwb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5lZGl0VG1wbCwgdGhpcy5fdmMpO1xyXG4gICAgdGhpcy5fb1JlZi5hdHRhY2gocG9ydGFsKTtcclxuICB9XHJcbiAgcmVtb3ZlKGluZGV4OiBJbmRleCwgZXZ0OiBFdmVudCkge1xyXG4gICAgdGhpcy5fZGF0YS5yZW1vdmUoaW5kZXgpO1xyXG4gICAgdGhpcy5kYXRhU291cmNlLmZpbHRlciA9ICcnO1xyXG4gICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuICBwcml2YXRlIF9maWx0ZXIoYXhlczogc3RyaW5nW10pIHtcclxuICAgIGNvbnN0IG4gPSBheGVzLmxlbmd0aDtcclxuICAgIHJldHVybiB0aGlzLl9kYXRhLmZpbHRlcihpbmRleCA9PiB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKVxyXG4gICAgICAgIGlmICh0aGlzLmF4ZXNbaV0gJiYgYXhlc1tpXSAhPT0gaW5kZXguYXhlc1tpXSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMubG9hZGluZyA9ICdxdWVyeSc7XHJcbiAgICB0aGlzLl9yZWYucG9wdWxhdGUoKS5zdWJzY3JpYmUobSA9PiB7XHJcbiAgICAgIHRoaXMuX2RhdGEgPSBtO1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKG0pO1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBudWxsO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHNhdmUoKSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSAnaW5kZXRlcm1pbmF0ZSc7XHJcbiAgICB0aGlzLl9yZWYuZXhlY3V0ZSh0aGlzLl9kYXRhKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLl9zYi50b2FzdCgnQ2hhbmdlc1NhdmVkJyk7XHJcbiAgICAgIHRoaXMuZGlydHkgPSBmYWxzZTtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gbnVsbDtcclxuICAgIH0pO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Rlc3Ryb3kubmV4dCgpO1xyXG4gIH1cclxufVxyXG5pbnRlcmZhY2UgSW5kZXgge1xyXG4gIGlkPzogbnVtYmVyO1xyXG4gIGF4ZXM6IHN0cmluZ1tdO1xyXG4gIHZhbHVlOiBudW1iZXI7XHJcbn1cclxuXHJcbmludGVyZmFjZSBPcHRpb25zIHtcclxuICBjdWJlPzogc3RyaW5nO1xyXG4gIGluZGV4Pzogc3RyaW5nO1xyXG4gIGF4ZXM/OiBzdHJpbmdbXTtcclxufVxyXG4iLCI8bWF0LXRvb2xiYXI+XHJcbiAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJzYXZlKClcIiBbZGlzYWJsZWRdPVwiIWRpcnR5XCI+e3snU2F2ZUNoYW5nZXMnfHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJhZGQoKVwiPjxtYXQtaWNvbj5hZGQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG48L21hdC10b29sYmFyPlxyXG48bWF0LXByb2dyZXNzLWJhciBbbW9kZV09XCJsb2FkaW5nXCIgW3N0eWxlLnZpc2liaWxpdHldPVwibG9hZGluZyA/ICd2aXNpYmxlJzonaGlkZGVuJ1wiPjwvbWF0LXByb2dyZXNzLWJhcj5cclxuPHRhYmxlIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYSBvZiBheGVzOyBsZXQgaSA9IGluZGV4XCIgW21hdENvbHVtbkRlZl09XCJhLm5hbWVcIj5cclxuICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+e3thLnRpdGxlfX08L3RoPlxyXG4gICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj4ge3tlbGVtZW50LmF4ZXNbbmFtZXMuaW5kZXhPZihhLm5hbWUpXXwgdHlwZVZhbHVlOiBhLmRhdGFUeXBlIHwgYXN5bmN9fSA8L3RkPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwidmFsdWVcIj5cclxuICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+e3snVmFsdWUnfHRyYW5zbGF0ZX19PC90aD5cclxuICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+IHt7ZWxlbWVudC52YWx1ZSB8IGN1cnJlbmN5IDogQ1VSUkVOQ1lfQ09ERSB9fSA8L3RkPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwib3B0aW9uc1wiPlxyXG4gICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj48L3RoPlxyXG4gICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24+PG1hdC1pY29uPm1vcmVfaG9yaXo8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwicmVtb3ZlKGVsZW1lbnQsICRldmVudClcIj48bWF0LWljb24+ZGVsZXRlPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgIDwvdGQ+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCI+PC90cj5cclxuICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IGVsZW1lbnQ7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCIgKGNsaWNrKT1cImVkaXQoZWxlbWVudClcIj48L3RyPlxyXG48L3RhYmxlPlxyXG48bmctdGVtcGxhdGUgI2VkaXRUbXBsPlxyXG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkICpuZ0Zvcj1cImxldCBhIG9mIGF4ZXNcIj5cclxuICAgICAgPGJpemRvYy1zZWxlY3QgW3BsYWNlaG9sZGVyXT1cImEudGl0bGVcIiBbdHlwZV09XCJhLmRhdGFUeXBlXCIgW2Zvcm1Db250cm9sTmFtZV09XCJhLm5hbWVcIiByZXF1aXJlZD48L2JpemRvYy1zZWxlY3Q+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cIm51bWJlclwiIGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgcmVxdWlyZWQgW3BsYWNlaG9sZGVyXT1cIidWYWx1ZSd8dHJhbnNsYXRlXCIgLz5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgPC9mb3JtPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlLWN1YmUtaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9pbmRpY2VzL21hbmFnZS1jdWJlLWluZGV4LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvYWRtaW4vaW5kaWNlcy9tYW5hZ2UtY3ViZS1pbmRleC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQTRDLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFckQsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVTVDLElBQ1Esc0JBQXNCLEdBRDlCLE1BQ1Esc0JBQXNCO0lBZ0I1QixZQUFvQixJQUFvQixFQUNWLElBQXlELEVBQ3JGLE9BQXVCLEVBQVUsR0FBcUIsRUFDOUMsR0FBa0IsRUFDbEIsUUFBaUI7UUFKUCxTQUFJLEdBQUosSUFBSSxDQUFnQjtRQUNWLFNBQUksR0FBSixJQUFJLENBQXFEO1FBQ3BELFFBQUcsR0FBSCxHQUFHLENBQWtCO1FBQzlD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QXNCO0lBRjdCLE1BQU0sQ0FBQyxFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxDQUFDO0dBRWxDLHNCQUFzQixDQXdIN0I7U0F4SE8sc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBTjdCLFNBQVM7OzswQkF1QkwsTUFBTTsyQkFBQyxVQUFVOzBKQVBxQixRQUFRO3NCQUFoRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkLCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZiwgT25EZXN0cm95LCBJbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBNYXRUYWJsZURhdGFTb3VyY2UgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGVcIjtcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5UmVmIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9vdmVybGF5XCI7XHJcbmltcG9ydCB7IFByb2dyZXNzQmFyTW9kZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXJcIjtcclxuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3BvcnRhbFwiO1xyXG5pbXBvcnQgeyBEaXJlY3Rpb25hbGl0eSB9IGZyb20gXCJAYW5ndWxhci9jZGsvYmlkaVwiO1xyXG5pbXBvcnQgeyBtZXJnZSwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IFV0aWxpdHlDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29yZS9iYXNlXCI7XHJcbmltcG9ydCB7IEJpekRvYyB9IGZyb20gXCIuLi8uLi9jb3JlL2RlY29yYXRvcnNcIjtcclxuaW1wb3J0IHsgVXRpbGl0eVJlZiB9IGZyb20gXCIuLi91dGlsaXR5LXJlZlwiO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBDdWJlQXhpcyB9IGZyb20gXCIuLi8uLi9jb3JlL21vZGVsc1wiO1xyXG5pbXBvcnQgeyBQcm9tcHRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvcHJvbXB0LnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHN0eWxlVXJsczogWycuL21hbmFnZS1jdWJlLWluZGV4LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21hbmFnZS1jdWJlLWluZGV4LmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5AQml6RG9jKHsgc2VsZWN0b3I6ICdtYW5hZ2UtY3ViZS1pbmRleCcgfSlcclxuZXhwb3J0XHJcbiAgY2xhc3MgTWFuYWdlQ3ViZUluZGV4VXRpbGl0eSBpbXBsZW1lbnRzIFV0aWxpdHlDb21wb25lbnQ8YW55LCBhbnk+LCBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcmVhZG9ubHkgQ1VSUkVOQ1lfQ09ERTogc3RyaW5nO1xyXG4gIGRpcnR5ID0gZmFsc2U7XHJcbiAgYXhlczogQ3ViZUF4aXNbXTtcclxuICBkYXRhU291cmNlOiBNYXRUYWJsZURhdGFTb3VyY2U8SW5kZXg+O1xyXG4gIHJlYWRvbmx5IG5hbWVzOiBzdHJpbmdbXTtcclxuICByZWFkb25seSBkaXNwbGF5ZWRDb2x1bW5zID0gWyd2YWx1ZScsICdvcHRpb25zJ107XHJcbiAgcmVhZG9ubHkgZm9ybTogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XHJcbiAgICB2YWx1ZTogbmV3IEZvcm1Db250cm9sKDAsIFZhbGlkYXRvcnMucmVxdWlyZWQpXHJcbiAgfSk7XHJcbiAgQFZpZXdDaGlsZCgnZWRpdFRtcGwnLCB7IHN0YXRpYzogdHJ1ZSB9KSBlZGl0VG1wbDogVGVtcGxhdGVSZWY8YW55PjtcclxuICBsb2FkaW5nOiBQcm9ncmVzc0Jhck1vZGU7XHJcbiAgcHJpdmF0ZSBfZGF0YTogSW5kZXhbXTtcclxuICBwcml2YXRlIF9yb3c6IEluZGV4O1xyXG4gIHByaXZhdGUgX29SZWY6IE92ZXJsYXlSZWY7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZGlyOiBEaXJlY3Rpb25hbGl0eSxcclxuICAgIEBJbmplY3QoVXRpbGl0eVJlZikgcHJpdmF0ZSBfcmVmOiBVdGlsaXR5UmVmPGJvb2xlYW4sIEluZGV4W10sIEluZGV4W10sIGFueSwgT3B0aW9ucz4sXHJcbiAgICBzZXNzaW9uOiBTZXNzaW9uU2VydmljZSwgcHJpdmF0ZSBfdmM6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICBwcml2YXRlIF9zYjogUHJvbXB0U2VydmljZSxcclxuICAgIHByaXZhdGUgX292ZXJsYXk6IE92ZXJsYXkpIHtcclxuICAgIGNvbnN0IHsgY3ViZTogbmFtZSwgYXhlczogbmFtZXMgfSA9IF9yZWYub3B0aW9ucztcclxuICAgIGNvbnN0IGN1YmUgPSBuYW1lID8gc2Vzc2lvbi5wcm9maWxlLmN1YmVzLmZpbmQoYyA9PiBjLm5hbWUgPT09IG5hbWUpIDogc2Vzc2lvbi5wcm9maWxlLmN1YmVzWzBdO1xyXG4gICAgdGhpcy5DVVJSRU5DWV9DT0RFID0gY3ViZS5jdXJyZW5jeUNvZGU7XHJcbiAgICB0aGlzLmF4ZXMgPSBjdWJlLmF4ZXMuZmlsdGVyKGEgPT4gbmFtZXMgPyBuYW1lcy5pbmRleE9mKGEubmFtZSkgPiAtMSA6IGEuc2VsZWN0aW9uTW9kZSAhPT0gJ05vbmUnKTtcclxuICAgIHRoaXMubmFtZXMgPSBjdWJlLmF4ZXMubWFwKGEgPT4gYS5uYW1lKTtcclxuICAgIHRoaXMuYXhlcy5mb3JFYWNoKChhLCBpKSA9PiB7XHJcbiAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucy5zcGxpY2UoaSwgMCwgYS5uYW1lKTtcclxuICAgICAgY29uc3QgY3RybCA9IG5ldyBGb3JtQ29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgdGhpcy5mb3JtLmFkZENvbnRyb2woYS5uYW1lLCBjdHJsKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKHYgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuZm9ybS52YWxpZCkgcmV0dXJuO1xyXG4gICAgICBjb25zdCBheGVzID0gW107XHJcbiAgICAgIHRoaXMuYXhlcy5mb3JFYWNoKGEgPT4gYXhlc1t0aGlzLm5hbWVzLmluZGV4T2YoYS5uYW1lKV0gPSB0aGlzLmZvcm0udmFsdWVbYS5uYW1lXSB8fCBudWxsKTtcclxuICAgICAgaWYgKHRoaXMuX3Jvdykge1xyXG4gICAgICAgIGlmIChheGVzLmpvaW4oKSA9PT0gdGhpcy5fcm93LmF4ZXMuam9pbigpKVxyXG4gICAgICAgICAgdGhpcy5fcm93LnZhbHVlID0gdi52YWx1ZTtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IHJvdyA9IHRoaXMuX2ZpbmQoYXhlcyk7XHJcbiAgICAgICAgICBpZiAocm93KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3JvdyA9IHJvdztcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzWyd2YWx1ZSddLnNldFZhbHVlKHRoaXMuX3Jvdy52YWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLl9yb3cuYXhlcyA9IGF4ZXM7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHYudmFsdWUpIHtcclxuICAgICAgICB0aGlzLl9yb3cgPSB7IHZhbHVlOiB2LnZhbHVlLCBheGVzIH07XHJcbiAgICAgICAgdGhpcy5fZGF0YS5wdXNoKHRoaXMuX3Jvdyk7XHJcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmZpbHRlciA9ICcnO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZGlydHkgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBvUmVmID0gdGhpcy5fb1JlZiA9IHRoaXMuX292ZXJsYXkuY3JlYXRlKHtcclxuICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpLmNlbnRlckhvcml6b250YWxseSgpLmNlbnRlclZlcnRpY2FsbHkoKSxcclxuICAgICAgYmFja2Ryb3BDbGFzczogJ2Nkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wJyxcclxuICAgICAgZGlyZWN0aW9uOiB0aGlzLl9kaXIudmFsdWUsXHJcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICBwYW5lbENsYXNzOiAnaG9tZS1wYW5lbCdcclxuICAgIH0pO1xyXG4gICAgbWVyZ2Uob1JlZi5iYWNrZHJvcENsaWNrKCksIG9SZWYua2V5ZG93bkV2ZW50cygpLnBpcGUoZmlsdGVyKGsgPT4gay5rZXkgPT09ICdFc2NhcGUnKSkpLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoKCkgPT4gb1JlZi5kZXRhY2goKSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2ZpbmQoYXhlczogc3RyaW5nW10pOiBJbmRleCB7XHJcbiAgICBjb25zdCBuID0gdGhpcy5uYW1lcy5sZW5ndGg7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0YS5maW5kKGluZGV4ID0+IHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspXHJcbiAgICAgICAgaWYgKGF4ZXNbaV0gJiYgYXhlc1tpXSAhPT0gaW5kZXguYXhlc1tpXSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBhZGQoKSB7XHJcbiAgICB0aGlzLl9yb3cgPSBudWxsO1xyXG4gICAgY29uc3QgdmFsdWVzID0geyB2YWx1ZTogMCB9O1xyXG4gICAgdGhpcy5heGVzLmZvckVhY2goYSA9PiB2YWx1ZXNbYS5uYW1lXSA9IG51bGwpO1xyXG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUodmFsdWVzLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICBjb25zdCBwb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5lZGl0VG1wbCwgdGhpcy5fdmMpO1xyXG4gICAgdGhpcy5fb1JlZi5hdHRhY2gocG9ydGFsKTtcclxuICB9XHJcbiAgZWRpdChpdGVtOiBJbmRleCkge1xyXG4gICAgdGhpcy5fcm93ID0gaXRlbTtcclxuICAgIGNvbnN0IHZhbHVlcyA9IHsgdmFsdWU6IGl0ZW0udmFsdWUgfTtcclxuICAgIHRoaXMuYXhlcy5mb3JFYWNoKGEgPT4gdmFsdWVzW2EubmFtZV0gPSBpdGVtLmF4ZXNbdGhpcy5uYW1lcy5pbmRleE9mKGEubmFtZSldKTtcclxuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHZhbHVlcywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgY29uc3QgcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMuZWRpdFRtcGwsIHRoaXMuX3ZjKTtcclxuICAgIHRoaXMuX29SZWYuYXR0YWNoKHBvcnRhbCk7XHJcbiAgfVxyXG4gIHJlbW92ZShpbmRleDogSW5kZXgsIGV2dDogRXZlbnQpIHtcclxuICAgIHRoaXMuX2RhdGEucmVtb3ZlKGluZGV4KTtcclxuICAgIHRoaXMuZGF0YVNvdXJjZS5maWx0ZXIgPSAnJztcclxuICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZmlsdGVyKGF4ZXM6IHN0cmluZ1tdKSB7XHJcbiAgICBjb25zdCBuID0gYXhlcy5sZW5ndGg7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0YS5maWx0ZXIoaW5kZXggPT4ge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKylcclxuICAgICAgICBpZiAodGhpcy5heGVzW2ldICYmIGF4ZXNbaV0gIT09IGluZGV4LmF4ZXNbaV0pIHJldHVybiBmYWxzZTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSAncXVlcnknO1xyXG4gICAgdGhpcy5fcmVmLnBvcHVsYXRlKCkuc3Vic2NyaWJlKG0gPT4ge1xyXG4gICAgICB0aGlzLl9kYXRhID0gbTtcclxuICAgICAgdGhpcy5kYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZShtKTtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gbnVsbDtcclxuICAgIH0pO1xyXG4gIH1cclxuICBzYXZlKCkge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gJ2luZGV0ZXJtaW5hdGUnO1xyXG4gICAgdGhpcy5fcmVmLmV4ZWN1dGUodGhpcy5fZGF0YSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5fc2IudG9hc3QoJ0NoYW5nZXNTYXZlZCcpO1xyXG4gICAgICB0aGlzLmRpcnR5ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IG51bGw7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcclxuICB9XHJcbn1cclxuaW50ZXJmYWNlIEluZGV4IHtcclxuICBpZD86IG51bWJlcjtcclxuICBheGVzOiBzdHJpbmdbXTtcclxuICB2YWx1ZTogbnVtYmVyO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgT3B0aW9ucyB7XHJcbiAgY3ViZT86IHN0cmluZztcclxuICBpbmRleD86IHN0cmluZztcclxuICBheGVzPzogc3RyaW5nW107XHJcbn1cclxuIiwiPG1hdC10b29sYmFyPlxyXG4gIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwic2F2ZSgpXCIgW2Rpc2FibGVkXT1cIiFkaXJ0eVwiPnt7J1NhdmVDaGFuZ2VzJ3x0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiYWRkKClcIj48bWF0LWljb24+YWRkPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuPC9tYXQtdG9vbGJhcj5cclxuPG1hdC1wcm9ncmVzcy1iYXIgW21vZGVdPVwibG9hZGluZ1wiIFtzdHlsZS52aXNpYmlsaXR5XT1cImxvYWRpbmcgPyAndmlzaWJsZSc6J2hpZGRlbidcIj48L21hdC1wcm9ncmVzcy1iYXI+XHJcbjx0YWJsZSBtYXQtdGFibGUgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGEgb2YgYXhlczsgbGV0IGkgPSBpbmRleFwiIFttYXRDb2x1bW5EZWZdPVwiYS5uYW1lXCI+XHJcbiAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPnt7YS50aXRsZX19PC90aD5cclxuICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+IHt7ZWxlbWVudC5heGVzW25hbWVzLmluZGV4T2YoYS5uYW1lKV18IHR5cGVWYWx1ZTogYS5kYXRhVHlwZSB8IGFzeW5jfX0gPC90ZD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInZhbHVlXCI+XHJcbiAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPnt7J1ZhbHVlJ3x0cmFuc2xhdGV9fTwvdGg+XHJcbiAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPiB7e2VsZW1lbnQudmFsdWUgfCBjdXJyZW5jeSA6IENVUlJFTkNZX0NPREUgfX0gPC90ZD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIm9wdGlvbnNcIj5cclxuICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+PC90aD5cclxuICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uPjxtYXQtaWNvbj5tb3JlX2hvcml6PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInJlbW92ZShlbGVtZW50LCAkZXZlbnQpXCI+PG1hdC1pY29uPmRlbGV0ZTwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICA8L3RkPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc1wiPjwvdHI+XHJcbiAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCBlbGVtZW50OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zO1wiIChjbGljayk9XCJlZGl0KGVsZW1lbnQpXCI+PC90cj5cclxuPC90YWJsZT5cclxuPG5nLXRlbXBsYXRlICNlZGl0VG1wbD5cclxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIj5cclxuICAgIDxtYXQtZm9ybS1maWVsZCAqbmdGb3I9XCJsZXQgYSBvZiBheGVzXCI+XHJcbiAgICAgIDxiaXpkb2Mtc2VsZWN0IFtwbGFjZWhvbGRlcl09XCJhLnRpdGxlXCIgW3R5cGVdPVwiYS5kYXRhVHlwZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiYS5uYW1lXCIgcmVxdWlyZWQ+PC9iaXpkb2Mtc2VsZWN0PlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJudW1iZXJcIiBmb3JtQ29udHJvbE5hbWU9XCJ2YWx1ZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHJlcXVpcmVkIFtwbGFjZWhvbGRlcl09XCInVmFsdWUnfHRyYW5zbGF0ZVwiIC8+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gIDwvZm9ybT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19