@worktile/theia 2.5.2 → 3.0.0-next.2

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 (198) hide show
  1. package/bundles/worktile-theia.umd.js +4947 -4554
  2. package/bundles/worktile-theia.umd.js.map +1 -1
  3. package/constants/toolbar.d.ts +0 -1
  4. package/core/create-plugin.d.ts +2 -0
  5. package/core/create-toolbar.d.ts +5 -0
  6. package/core/index.d.ts +4 -0
  7. package/core/utils/flatten-deep-plugins.d.ts +6 -0
  8. package/core/utils/get-plugin-options.d.ts +2 -0
  9. package/core/utils/get-plugin.d.ts +2 -0
  10. package/core/utils/get-plugins-by-key.d.ts +2 -0
  11. package/core/utils/get-plugins.d.ts +2 -0
  12. package/core/utils/index.d.ts +7 -0
  13. package/core/utils/merge-options.d.ts +2 -0
  14. package/core/utils/override-plugins-by-key.d.ts +5 -0
  15. package/core/with-theia.d.ts +4 -0
  16. package/editor.component.d.ts +4 -6
  17. package/editor.module.d.ts +2 -2
  18. package/esm2015/components/toolbar-item/toolbar-item.component.js +1 -1
  19. package/esm2015/constants/toolbar.js +1 -2
  20. package/esm2015/core/create-plugin.js +6 -0
  21. package/esm2015/core/create-toolbar.js +57 -0
  22. package/esm2015/core/index.js +5 -0
  23. package/esm2015/core/utils/flatten-deep-plugins.js +36 -0
  24. package/esm2015/core/utils/get-plugin-options.js +3 -0
  25. package/esm2015/core/utils/get-plugin.js +3 -0
  26. package/esm2015/core/utils/get-plugins-by-key.js +8 -0
  27. package/esm2015/core/utils/get-plugins.js +5 -0
  28. package/esm2015/core/utils/index.js +8 -0
  29. package/esm2015/core/utils/merge-options.js +15 -0
  30. package/esm2015/core/utils/override-plugins-by-key.js +27 -0
  31. package/esm2015/core/with-theia.js +36 -0
  32. package/esm2015/editor.component.js +27 -40
  33. package/esm2015/interfaces/editor.js +2 -2
  34. package/esm2015/interfaces/index.js +3 -1
  35. package/esm2015/interfaces/plugins/index.js +5 -0
  36. package/esm2015/interfaces/plugins/no-infer.js +2 -0
  37. package/esm2015/interfaces/plugins/plugin-key.js +40 -0
  38. package/esm2015/interfaces/plugins/plugins.js +2 -0
  39. package/esm2015/interfaces/plugins/with-override.js +2 -0
  40. package/esm2015/interfaces/toolbar.js +1 -1
  41. package/esm2015/interfaces/utility/index.js +4 -0
  42. package/esm2015/interfaces/utility/nested-structure-by-key.js +2 -0
  43. package/esm2015/interfaces/utility/override-by-key.js +2 -0
  44. package/esm2015/interfaces/utility/types.js +2 -0
  45. package/esm2015/plugins/align/align.editor.js +3 -3
  46. package/esm2015/plugins/align/align.plugin.js +41 -2
  47. package/esm2015/plugins/autoformat/autoformat.plugin.js +19 -13
  48. package/esm2015/plugins/blockquote/blockquote.editor.js +9 -16
  49. package/esm2015/plugins/blockquote/blockquote.plugin.js +23 -4
  50. package/esm2015/plugins/code/code.editor.js +4 -15
  51. package/esm2015/plugins/code/code.plugin.js +22 -2
  52. package/esm2015/plugins/color/color.plugin.js +25 -0
  53. package/esm2015/plugins/common/auto-insert-data..js +14 -9
  54. package/esm2015/plugins/common/block-card.plugin.js +9 -3
  55. package/esm2015/plugins/common/get-fragment.plugin.js +10 -2
  56. package/esm2015/plugins/common/history.plugin.js +7 -1
  57. package/esm2015/plugins/common/move-selection.plugin.js +9 -3
  58. package/esm2015/plugins/common/remove-empty.plugin.js +7 -1
  59. package/esm2015/plugins/common/remove-void.plugin.js +8 -2
  60. package/esm2015/plugins/common/reset-type.plugin.js +7 -1
  61. package/esm2015/plugins/common/transforms.plugin.js +8 -2
  62. package/esm2015/plugins/deserializers/deserialize-html.plugin.js +10 -5
  63. package/esm2015/plugins/deserializers/deserialize-md.plugin.js +11 -5
  64. package/esm2015/plugins/font-size/font-size.editor.js +29 -3
  65. package/esm2015/plugins/heading/heading.editor.js +22 -4
  66. package/esm2015/plugins/heading/heading.plugin.js +60 -2
  67. package/esm2015/plugins/hr/hr.plugin.js +21 -1
  68. package/esm2015/plugins/image/image.plugin.js +24 -3
  69. package/esm2015/plugins/indent/indent.editor.js +18 -16
  70. package/esm2015/plugins/indent/indent.plugin.js +50 -9
  71. package/esm2015/plugins/index.js +70 -126
  72. package/esm2015/plugins/inline-code/inline-code.plugin.js +19 -2
  73. package/esm2015/plugins/link/link.plugin.js +21 -7
  74. package/esm2015/plugins/list/list.editor.js +3 -3
  75. package/esm2015/plugins/list/list.plugin.js +46 -3
  76. package/esm2015/plugins/mark/mark.plugin.js +44 -2
  77. package/esm2015/plugins/node-id/node-id.plugin.js +21 -5
  78. package/esm2015/plugins/normalizers/insert-paragraph-nodes.js +10 -2
  79. package/esm2015/plugins/normalizers/remove-empty-nodes.js +1 -1
  80. package/esm2015/plugins/normalizers/trailing-node.plugin.js +27 -18
  81. package/esm2015/plugins/paint-format/paint-format.editor.js +60 -4
  82. package/esm2015/plugins/quick-insert/components/quick-toolbar/quick-toolbar.component.js +7 -4
  83. package/esm2015/plugins/quick-insert/quick-insert.editor.js +4 -4
  84. package/esm2015/plugins/quick-insert/quick-insert.plugin.js +23 -16
  85. package/esm2015/plugins/soft-break/soft-break.plugin.js +22 -3
  86. package/esm2015/plugins/table/components/table.component.js +4 -5
  87. package/esm2015/plugins/table/table.plugin.js +26 -7
  88. package/esm2015/plugins/table/transforms/insert-table.js +2 -2
  89. package/esm2015/plugins/todo-item/todo-item.editor.js +4 -4
  90. package/esm2015/plugins/todo-item/todo-item.plugin.js +21 -2
  91. package/esm2015/plugins/vertical-align/vertical-align.editor.js +40 -1
  92. package/esm2015/public-api.js +2 -1
  93. package/esm2015/queries/index.js +3 -5
  94. package/esm2015/queries/is-contain-nested-type.js +29 -0
  95. package/esm2015/transforms/insert-element-next.js +11 -11
  96. package/esm2015/transforms/insert-element.js +1 -1
  97. package/esm2015/utils/index.js +5 -1
  98. package/fesm2015/worktile-theia.js +6624 -6253
  99. package/fesm2015/worktile-theia.js.map +1 -1
  100. package/interfaces/editor.d.ts +14 -12
  101. package/interfaces/index.d.ts +2 -0
  102. package/interfaces/plugins/index.d.ts +4 -0
  103. package/interfaces/plugins/no-infer.d.ts +1 -0
  104. package/interfaces/plugins/plugin-key.d.ts +48 -0
  105. package/interfaces/plugins/plugins.d.ts +39 -0
  106. package/interfaces/plugins/with-override.d.ts +7 -0
  107. package/interfaces/toolbar.d.ts +0 -1
  108. package/interfaces/utility/index.d.ts +3 -0
  109. package/interfaces/utility/nested-structure-by-key.d.ts +3 -0
  110. package/interfaces/utility/override-by-key.d.ts +3 -0
  111. package/interfaces/utility/types.d.ts +1 -0
  112. package/package.json +1 -1
  113. package/plugins/align/align.editor.d.ts +1 -1
  114. package/plugins/align/align.plugin.d.ts +2 -1
  115. package/plugins/autoformat/autoformat.plugin.d.ts +2 -1
  116. package/plugins/blockquote/blockquote.plugin.d.ts +2 -2
  117. package/plugins/code/code.plugin.d.ts +2 -2
  118. package/plugins/color/color.plugin.d.ts +1 -0
  119. package/plugins/common/auto-insert-data..d.ts +2 -3
  120. package/plugins/common/block-card.plugin.d.ts +2 -2
  121. package/plugins/common/get-fragment.plugin.d.ts +5 -1
  122. package/plugins/common/history.plugin.d.ts +4 -3
  123. package/plugins/common/move-selection.plugin.d.ts +2 -2
  124. package/plugins/common/remove-empty.plugin.d.ts +2 -2
  125. package/plugins/common/remove-void.plugin.d.ts +2 -1
  126. package/plugins/common/reset-type.plugin.d.ts +2 -2
  127. package/plugins/common/transforms.plugin.d.ts +2 -1
  128. package/plugins/deserializers/deserialize-html.plugin.d.ts +2 -2
  129. package/plugins/deserializers/deserialize-md.plugin.d.ts +2 -2
  130. package/plugins/font-size/font-size.editor.d.ts +3 -2
  131. package/plugins/heading/heading.editor.d.ts +4 -1
  132. package/plugins/heading/heading.plugin.d.ts +7 -2
  133. package/plugins/hr/hr.plugin.d.ts +2 -2
  134. package/plugins/image/image.plugin.d.ts +7 -2
  135. package/plugins/indent/indent.editor.d.ts +2 -2
  136. package/plugins/indent/indent.plugin.d.ts +7 -3
  137. package/plugins/index.d.ts +1 -5
  138. package/plugins/inline-code/inline-code.plugin.d.ts +2 -2
  139. package/plugins/link/link.plugin.d.ts +2 -2
  140. package/plugins/list/list.plugin.d.ts +2 -2
  141. package/plugins/mark/mark.plugin.d.ts +2 -1
  142. package/plugins/node-id/node-id.plugin.d.ts +2 -3
  143. package/plugins/normalizers/insert-paragraph-nodes.d.ts +6 -2
  144. package/plugins/normalizers/trailing-node.plugin.d.ts +2 -1
  145. package/plugins/paint-format/paint-format.editor.d.ts +1 -0
  146. package/plugins/quick-insert/components/quick-toolbar/quick-toolbar.component.d.ts +2 -3
  147. package/plugins/quick-insert/quick-insert.editor.d.ts +1 -1
  148. package/plugins/quick-insert/quick-insert.plugin.d.ts +5 -1
  149. package/plugins/soft-break/soft-break.plugin.d.ts +3 -2
  150. package/plugins/table/components/table.component.d.ts +2 -2
  151. package/plugins/table/table.plugin.d.ts +2 -2
  152. package/plugins/todo-item/todo-item.plugin.d.ts +2 -2
  153. package/plugins/vertical-align/vertical-align.editor.d.ts +1 -0
  154. package/public-api.d.ts +1 -0
  155. package/queries/index.d.ts +2 -4
  156. package/queries/is-contain-nested-type.d.ts +2 -0
  157. package/transforms/insert-element-next.d.ts +1 -1
  158. package/utils/index.d.ts +4 -0
  159. package/esm2015/plugins/align/options.js +0 -37
  160. package/esm2015/plugins/blockquote/options.js +0 -13
  161. package/esm2015/plugins/code/options.js +0 -13
  162. package/esm2015/plugins/color/options.js +0 -20
  163. package/esm2015/plugins/font-size/options.js +0 -25
  164. package/esm2015/plugins/heading/options.js +0 -54
  165. package/esm2015/plugins/hr/options.js +0 -13
  166. package/esm2015/plugins/image/options.js +0 -12
  167. package/esm2015/plugins/indent/options.js +0 -28
  168. package/esm2015/plugins/inline-code/options.js +0 -14
  169. package/esm2015/plugins/link/options.js +0 -12
  170. package/esm2015/plugins/list/options.js +0 -19
  171. package/esm2015/plugins/mark/options.js +0 -37
  172. package/esm2015/plugins/paint-format/options.js +0 -57
  173. package/esm2015/plugins/table/options.js +0 -14
  174. package/esm2015/plugins/todo-item/options.js +0 -12
  175. package/esm2015/plugins/vertical-align/options.js +0 -39
  176. package/esm2015/queries/anchor-inline.js +0 -5
  177. package/esm2015/queries/get-children.js +0 -14
  178. package/esm2015/queries/is-empty-content.js +0 -15
  179. package/plugins/align/options.d.ts +0 -2
  180. package/plugins/blockquote/options.d.ts +0 -2
  181. package/plugins/code/options.d.ts +0 -2
  182. package/plugins/color/options.d.ts +0 -2
  183. package/plugins/font-size/options.d.ts +0 -2
  184. package/plugins/heading/options.d.ts +0 -2
  185. package/plugins/hr/options.d.ts +0 -2
  186. package/plugins/image/options.d.ts +0 -2
  187. package/plugins/indent/options.d.ts +0 -2
  188. package/plugins/inline-code/options.d.ts +0 -2
  189. package/plugins/link/options.d.ts +0 -2
  190. package/plugins/list/options.d.ts +0 -2
  191. package/plugins/mark/options.d.ts +0 -2
  192. package/plugins/paint-format/options.d.ts +0 -2
  193. package/plugins/table/options.d.ts +0 -2
  194. package/plugins/todo-item/options.d.ts +0 -2
  195. package/plugins/vertical-align/options.d.ts +0 -2
  196. package/queries/anchor-inline.d.ts +0 -2
  197. package/queries/get-children.d.ts +0 -6
  198. package/queries/is-empty-content.d.ts +0 -2
@@ -2,8 +2,9 @@ import { Component, Input, HostListener } from '@angular/core';
2
2
  import { mixinUnsubscribe, MixinBase } from 'ngx-tethys/core';
3
3
  import { Editor, Node } from 'slate';
4
4
  import { AngularEditor } from 'slate-angular';
5
- import { ToolbarActionTypes } from '../../../../constants/node-types';
6
- import { QUICK_TOOLBAR_HOTKEY, ToolbarItemMode } from '../../../../constants/toolbar';
5
+ import { getPluginOptions } from '../../../../core';
6
+ import { PluginKeys } from '../../../../interfaces';
7
+ import { ToolbarActionTypes, ToolbarItemMode } from '../../../../constants';
7
8
  import { QuickInsertEditor } from '../../quick-insert.editor';
8
9
  import * as i0 from "@angular/core";
9
10
  import * as i1 from "ngx-tethys/list";
@@ -47,8 +48,10 @@ export class TheQuickToolbarComponent extends mixinUnsubscribe(MixinBase) {
47
48
  }
48
49
  }
49
50
  removeHotKey() {
51
+ var _a;
52
+ const hotkey = (_a = getPluginOptions(this.editor, PluginKeys.quickInsert)) === null || _a === void 0 ? void 0 : _a.hotkey;
50
53
  const node = Node.get(this.editor, this.editor.selection.anchor.path);
51
- if (node && QUICK_TOOLBAR_HOTKEY === node.text) {
54
+ if (node && hotkey === node.text) {
52
55
  Editor.deleteBackward(this.editor);
53
56
  }
54
57
  }
@@ -78,4 +81,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
78
81
  type: HostListener,
79
82
  args: ['document: keydown.escape']
80
83
  }] } });
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpY2stdG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9xdWljay1pbnNlcnQvY29tcG9uZW50cy9xdWljay10b29sYmFyL3F1aWNrLXRvb2xiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvcXVpY2staW5zZXJ0L2NvbXBvbmVudHMvcXVpY2stdG9vbGJhci9xdWljay10b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFlBQVksRUFBNEMsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQVEsSUFBSSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7O0FBTTlELE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7SUEyQnJFLFlBQW1CLFVBQXNCLEVBQVMsR0FBc0I7UUFDcEUsS0FBSyxFQUFFLENBQUM7UUFETyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQVMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUF0QnhFLG9CQUFlLEdBQUcsZUFBZSxDQUFDO1FBQ2xDLHVCQUFrQixHQUFHLGtCQUFrQixDQUFDO0lBdUJ4QyxDQUFDO0lBcEJELGVBQWUsQ0FBQyxLQUFpQjtRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFxQixDQUFDLEVBQUU7WUFDdEUsaUJBQWlCLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzFEO2FBQU07WUFDSCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDMUI7SUFDTCxDQUFDO0lBR0QsV0FBVztRQUNQLGlCQUFpQixDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBR0QsU0FBUztRQUNMLGlCQUFpQixDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBTUQsUUFBUTtRQUNKLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQUs7UUFDakIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBSztRQUNqQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xGLElBQUksV0FBVyxhQUFYLFdBQVcsdUJBQVgsV0FBVyxDQUFFLE9BQU8sRUFBRTtZQUN0QixXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNwQztJQUNMLENBQUM7SUFFRCxZQUFZO1FBQ1IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQVMsQ0FBQztRQUM5RSxJQUFJLElBQUksSUFBSSxvQkFBb0IsS0FBSyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQzVDLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3RDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDUCxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEIsQ0FBQzs7c0hBeERRLHdCQUF3QjswR0FBeEIsd0JBQXdCLHdUQ2JyQyxzeEJBa0JBOzRGRExhLHdCQUF3QjtrQkFKcEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixXQUFXLEVBQUUsOEJBQThCO2lCQUM5QztpSUFFWSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQU9OLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxxQkFBcUIsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFVL0MsV0FBVztzQkFEVixZQUFZO3VCQUFDLHlCQUF5QjtnQkFNdkMsU0FBUztzQkFEUixZQUFZO3VCQUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgSG9zdExpc3RlbmVyLCBPbkRlc3Ryb3ksIEVsZW1lbnRSZWYsIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtaXhpblVuc3Vic2NyaWJlLCBNaXhpbkJhc2UgfSBmcm9tICduZ3gtdGV0aHlzL2NvcmUnO1xuaW1wb3J0IHsgRWRpdG9yLCBUZXh0LCBOb2RlIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgQW5ndWxhckVkaXRvciB9IGZyb20gJ3NsYXRlLWFuZ3VsYXInO1xuaW1wb3J0IHsgVG9vbGJhckl0ZW0gfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzL3Rvb2xiYXInO1xuaW1wb3J0IHsgVG9vbGJhckFjdGlvblR5cGVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29uc3RhbnRzL25vZGUtdHlwZXMnO1xuaW1wb3J0IHsgUVVJQ0tfVE9PTEJBUl9IT1RLRVksIFRvb2xiYXJJdGVtTW9kZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbnN0YW50cy90b29sYmFyJztcbmltcG9ydCB7IFF1aWNrSW5zZXJ0RWRpdG9yIH0gZnJvbSAnLi4vLi4vcXVpY2staW5zZXJ0LmVkaXRvcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGhlLXF1aWNrLXRvb2xiYXInLFxuICAgIHRlbXBsYXRlVXJsOiAncXVpY2stdG9vbGJhci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgVGhlUXVpY2tUb29sYmFyQ29tcG9uZW50IGV4dGVuZHMgbWl4aW5VbnN1YnNjcmliZShNaXhpbkJhc2UpIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpIGVkaXRvcjogRWRpdG9yO1xuICAgIEBJbnB1dCgpIHF1aWNrVG9vbGJhckl0ZW1zOiBUb29sYmFySXRlbVtdO1xuXG4gICAgZWRpdG9yRWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gICAgVG9vbGJhckl0ZW1Nb2RlID0gVG9vbGJhckl0ZW1Nb2RlO1xuICAgIFRvb2xiYXJBY3Rpb25UeXBlcyA9IFRvb2xiYXJBY3Rpb25UeXBlcztcblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OiBtb3VzZWRvd24nLCBbJyRldmVudCddKVxuICAgIGhhbmRsZU1vdXNlRG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBpZiAoIXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkpIHtcbiAgICAgICAgICAgIFF1aWNrSW5zZXJ0RWRpdG9yLmNsb3NlUXVpY2tJbnNlcnRUb29sYmFyKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDoga2V5ZG93bi5lbnRlcicpXG4gICAgaGFuZGxlRW50ZXIoKSB7XG4gICAgICAgIFF1aWNrSW5zZXJ0RWRpdG9yLmNsb3NlUXVpY2tJbnNlcnRUb29sYmFyKHRoaXMuZWRpdG9yKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDoga2V5ZG93bi5lc2NhcGUnKVxuICAgIGhhbmRsZUVzYygpIHtcbiAgICAgICAgUXVpY2tJbnNlcnRFZGl0b3IuY2xvc2VRdWlja0luc2VydFRvb2xiYXIodGhpcy5lZGl0b3IpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmVkaXRvckVsZW1lbnQgPSBBbmd1bGFyRWRpdG9yLnRvRE9NTm9kZSh0aGlzLmVkaXRvciwgdGhpcy5lZGl0b3IpO1xuICAgIH1cblxuICAgIHN0b3BQcm9wYWdhdGlvbihldmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIHNlbGVjdGlvbkNoYW5nZShldmVudCkge1xuICAgICAgICB0aGlzLnJlbW92ZUhvdEtleSgpO1xuICAgICAgICBjb25zdCB0b29sYmFySXRlbSA9IHRoaXMucXVpY2tUb29sYmFySXRlbXMuZmluZChpdGVtID0+IGl0ZW0ua2V5ID09PSBldmVudC52YWx1ZSk7XG4gICAgICAgIGlmICh0b29sYmFySXRlbT8uZXhlY3V0ZSkge1xuICAgICAgICAgICAgdG9vbGJhckl0ZW0uZXhlY3V0ZSh0aGlzLmVkaXRvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZW1vdmVIb3RLZXkoKSB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSBOb2RlLmdldCh0aGlzLmVkaXRvciwgdGhpcy5lZGl0b3Iuc2VsZWN0aW9uLmFuY2hvci5wYXRoKSBhcyBUZXh0O1xuICAgICAgICBpZiAobm9kZSAmJiBRVUlDS19UT09MQkFSX0hPVEtFWSA9PT0gbm9kZS50ZXh0KSB7XG4gICAgICAgICAgICBFZGl0b3IuZGVsZXRlQmFja3dhcmQodGhpcy5lZGl0b3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuIiwiPHRoeS1zZWxlY3Rpb24tbGlzdFxuICAgIGNsYXNzPVwidGhlLXF1aWNrLXRvb2xiYXJcIlxuICAgIFt0aHlCaW5kS2V5RXZlbnRDb250YWluZXJdPVwiZWRpdG9yRWxlbWVudFwiXG4gICAgKHRoeVNlbGVjdGlvbkNoYW5nZSk9XCJzZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgW3RoeU11bHRpcGxlXT1cImZhbHNlXCJcbj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHF1aWNrVG9vbGJhckl0ZW1zXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLmtleSAhPT0gVG9vbGJhckFjdGlvblR5cGVzLnNwbGl0OyBlbHNlIHNwbGl0TGluZVwiPlxuICAgICAgICAgICAgPHRoeS1saXN0LW9wdGlvbiBbdGh5VmFsdWVdPVwiaXRlbT8ua2V5XCIgKG1vdXNlZG93bik9XCJzdG9wUHJvcGFnYXRpb24oJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDx0aGUtdG9vbGJhci1pdGVtIFtlZGl0b3JdPVwiZWRpdG9yXCIgW2l0ZW1dPVwiaXRlbVwiIFtpdGVtTW9kZV09XCJUb29sYmFySXRlbU1vZGUudmVydGljYWxcIj48L3RoZS10b29sYmFyLWl0ZW0+XG4gICAgICAgICAgICA8L3RoeS1saXN0LW9wdGlvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG48L3RoeS1zZWxlY3Rpb24tbGlzdD5cblxuPG5nLXRlbXBsYXRlICNzcGxpdExpbmU+XG4gICAgPG5hdi1zcGxpdC1saW5lIFttb2RlXT1cIlRvb2xiYXJJdGVtTW9kZS5ob3Jpem9udGFsXCI+PC9uYXYtc3BsaXQtbGluZT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpY2stdG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9xdWljay1pbnNlcnQvY29tcG9uZW50cy9xdWljay10b29sYmFyL3F1aWNrLXRvb2xiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvcXVpY2staW5zZXJ0L2NvbXBvbmVudHMvcXVpY2stdG9vbGJhci9xdWljay10b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFlBQVksRUFBNEMsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQVEsSUFBSSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBZSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7OztBQU85RCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsZ0JBQWdCLENBQUMsU0FBUyxDQUFDO0lBMkJyRSxZQUFtQixVQUFzQixFQUFTLEdBQXNCO1FBQ3BFLEtBQUssRUFBRSxDQUFDO1FBRE8sZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUFTLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBdEJ4RSxvQkFBZSxHQUFHLGVBQWUsQ0FBQztRQUNsQyx1QkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztJQXVCeEMsQ0FBQztJQXBCRCxlQUFlLENBQUMsS0FBaUI7UUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBcUIsQ0FBQyxFQUFFO1lBQ3RFLGlCQUFpQixDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUMxRDthQUFNO1lBQ0gsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQzFCO0lBQ0wsQ0FBQztJQUdELFdBQVc7UUFDUCxpQkFBaUIsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUdELFNBQVM7UUFDTCxpQkFBaUIsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQU1ELFFBQVE7UUFDSixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFLO1FBQ2pCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQUs7UUFDakIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsRixJQUFJLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxPQUFPLEVBQUU7WUFDdEIsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDcEM7SUFDTCxDQUFDO0lBRUQsWUFBWTs7UUFDUixNQUFNLE1BQU0sR0FBRyxNQUFBLGdCQUFnQixDQUEyQixJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxXQUFXLENBQUMsMENBQUUsTUFBTSxDQUFDO1FBQ3ZHLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFTLENBQUM7UUFDOUUsSUFBSSxJQUFJLElBQUksTUFBTSxLQUFLLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDOUIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDdEM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNQLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QixDQUFDOztzSEF6RFEsd0JBQXdCOzBHQUF4Qix3QkFBd0Isd1RDZHJDLHN4QkFrQkE7NEZESmEsd0JBQXdCO2tCQUpwQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFdBQVcsRUFBRSw4QkFBOEI7aUJBQzlDO2lJQUVZLE1BQU07c0JBQWQsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBT04sZUFBZTtzQkFEZCxZQUFZO3VCQUFDLHFCQUFxQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVUvQyxXQUFXO3NCQURWLFlBQVk7dUJBQUMseUJBQXlCO2dCQU12QyxTQUFTO3NCQURSLFlBQVk7dUJBQUMsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBIb3N0TGlzdGVuZXIsIE9uRGVzdHJveSwgRWxlbWVudFJlZiwgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG1peGluVW5zdWJzY3JpYmUsIE1peGluQmFzZSB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyBFZGl0b3IsIFRleHQsIE5vZGUgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBnZXRQbHVnaW5PcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBQbHVnaW5LZXlzLCBUb29sYmFySXRlbSB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVG9vbGJhckFjdGlvblR5cGVzLCBUb29sYmFySXRlbU1vZGUgfSBmcm9tICcuLi8uLi8uLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgUXVpY2tJbnNlcnRFZGl0b3IgfSBmcm9tICcuLi8uLi9xdWljay1pbnNlcnQuZWRpdG9yJztcbmltcG9ydCB0eXBlIHsgUXVpY2tJbnNlcnRQbHVnaW5PcHRpb25zIH0gZnJvbSAnLi4vLi4vcXVpY2staW5zZXJ0LnBsdWdpbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGhlLXF1aWNrLXRvb2xiYXInLFxuICAgIHRlbXBsYXRlVXJsOiAncXVpY2stdG9vbGJhci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgVGhlUXVpY2tUb29sYmFyQ29tcG9uZW50IGV4dGVuZHMgbWl4aW5VbnN1YnNjcmliZShNaXhpbkJhc2UpIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpIGVkaXRvcjogRWRpdG9yO1xuICAgIEBJbnB1dCgpIHF1aWNrVG9vbGJhckl0ZW1zOiBUb29sYmFySXRlbVtdO1xuXG4gICAgZWRpdG9yRWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gICAgVG9vbGJhckl0ZW1Nb2RlID0gVG9vbGJhckl0ZW1Nb2RlO1xuICAgIFRvb2xiYXJBY3Rpb25UeXBlcyA9IFRvb2xiYXJBY3Rpb25UeXBlcztcblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OiBtb3VzZWRvd24nLCBbJyRldmVudCddKVxuICAgIGhhbmRsZU1vdXNlRG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBpZiAoIXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkpIHtcbiAgICAgICAgICAgIFF1aWNrSW5zZXJ0RWRpdG9yLmNsb3NlUXVpY2tJbnNlcnRUb29sYmFyKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDoga2V5ZG93bi5lbnRlcicpXG4gICAgaGFuZGxlRW50ZXIoKSB7XG4gICAgICAgIFF1aWNrSW5zZXJ0RWRpdG9yLmNsb3NlUXVpY2tJbnNlcnRUb29sYmFyKHRoaXMuZWRpdG9yKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDoga2V5ZG93bi5lc2NhcGUnKVxuICAgIGhhbmRsZUVzYygpIHtcbiAgICAgICAgUXVpY2tJbnNlcnRFZGl0b3IuY2xvc2VRdWlja0luc2VydFRvb2xiYXIodGhpcy5lZGl0b3IpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmVkaXRvckVsZW1lbnQgPSBBbmd1bGFyRWRpdG9yLnRvRE9NTm9kZSh0aGlzLmVkaXRvciwgdGhpcy5lZGl0b3IpO1xuICAgIH1cblxuICAgIHN0b3BQcm9wYWdhdGlvbihldmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIHNlbGVjdGlvbkNoYW5nZShldmVudCkge1xuICAgICAgICB0aGlzLnJlbW92ZUhvdEtleSgpO1xuICAgICAgICBjb25zdCB0b29sYmFySXRlbSA9IHRoaXMucXVpY2tUb29sYmFySXRlbXMuZmluZChpdGVtID0+IGl0ZW0ua2V5ID09PSBldmVudC52YWx1ZSk7XG4gICAgICAgIGlmICh0b29sYmFySXRlbT8uZXhlY3V0ZSkge1xuICAgICAgICAgICAgdG9vbGJhckl0ZW0uZXhlY3V0ZSh0aGlzLmVkaXRvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZW1vdmVIb3RLZXkoKSB7XG4gICAgICAgIGNvbnN0IGhvdGtleSA9IGdldFBsdWdpbk9wdGlvbnM8UXVpY2tJbnNlcnRQbHVnaW5PcHRpb25zPih0aGlzLmVkaXRvciwgUGx1Z2luS2V5cy5xdWlja0luc2VydCk/LmhvdGtleTtcbiAgICAgICAgY29uc3Qgbm9kZSA9IE5vZGUuZ2V0KHRoaXMuZWRpdG9yLCB0aGlzLmVkaXRvci5zZWxlY3Rpb24uYW5jaG9yLnBhdGgpIGFzIFRleHQ7XG4gICAgICAgIGlmIChub2RlICYmIGhvdGtleSA9PT0gbm9kZS50ZXh0KSB7XG4gICAgICAgICAgICBFZGl0b3IuZGVsZXRlQmFja3dhcmQodGhpcy5lZGl0b3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuIiwiPHRoeS1zZWxlY3Rpb24tbGlzdFxuICAgIGNsYXNzPVwidGhlLXF1aWNrLXRvb2xiYXJcIlxuICAgIFt0aHlCaW5kS2V5RXZlbnRDb250YWluZXJdPVwiZWRpdG9yRWxlbWVudFwiXG4gICAgKHRoeVNlbGVjdGlvbkNoYW5nZSk9XCJzZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgW3RoeU11bHRpcGxlXT1cImZhbHNlXCJcbj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHF1aWNrVG9vbGJhckl0ZW1zXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLmtleSAhPT0gVG9vbGJhckFjdGlvblR5cGVzLnNwbGl0OyBlbHNlIHNwbGl0TGluZVwiPlxuICAgICAgICAgICAgPHRoeS1saXN0LW9wdGlvbiBbdGh5VmFsdWVdPVwiaXRlbT8ua2V5XCIgKG1vdXNlZG93bik9XCJzdG9wUHJvcGFnYXRpb24oJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDx0aGUtdG9vbGJhci1pdGVtIFtlZGl0b3JdPVwiZWRpdG9yXCIgW2l0ZW1dPVwiaXRlbVwiIFtpdGVtTW9kZV09XCJUb29sYmFySXRlbU1vZGUudmVydGljYWxcIj48L3RoZS10b29sYmFyLWl0ZW0+XG4gICAgICAgICAgICA8L3RoeS1saXN0LW9wdGlvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG48L3RoeS1zZWxlY3Rpb24tbGlzdD5cblxuPG5nLXRlbXBsYXRlICNzcGxpdExpbmU+XG4gICAgPG5hdi1zcGxpdC1saW5lIFttb2RlXT1cIlRvb2xiYXJJdGVtTW9kZS5ob3Jpem9udGFsXCI+PC9uYXYtc3BsaXQtbGluZT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1,17 +1,17 @@
1
1
  import { Overlay } from '@angular/cdk/overlay';
2
2
  import { ViewContainerRef } from '@angular/core';
3
3
  import { ThyPopover } from 'ngx-tethys/popover';
4
- import { THE_EDITOR_QUICK_TOOLBAR_REF } from '../../utils/weak-maps';
5
- import { TheQuickToolbarComponent } from './components/quick-toolbar/quick-toolbar.component';
6
4
  import { AngularEditor } from 'slate-angular';
5
+ import { THE_EDITOR_QUICK_TOOLBAR_REF } from '../../utils/weak-maps';
7
6
  import { getBlockAbove } from '../../queries/get-block-above';
7
+ import { TheQuickToolbarComponent } from './components/quick-toolbar/quick-toolbar.component';
8
8
  export const QuickInsertEditor = {
9
9
  openQuickInsertToolbar(editor, quickToolbarItems, origin) {
10
10
  if (QuickInsertEditor.isOpenedToolbar(editor)) {
11
11
  return;
12
12
  }
13
13
  if (!origin) {
14
- const [block,] = getBlockAbove(editor);
14
+ const [block] = getBlockAbove(editor);
15
15
  const rootNode = AngularEditor.toDOMNode(editor, block);
16
16
  origin = rootNode.querySelector('[data-slate-leaf="true"]');
17
17
  }
@@ -49,4 +49,4 @@ export const QuickInsertEditor = {
49
49
  return !!quickToolbarRef;
50
50
  }
51
51
  };
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpY2staW5zZXJ0LmVkaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9wbHVnaW5zL3F1aWNrLWluc2VydC9xdWljay1pbnNlcnQuZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWhELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTlELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHO0lBQzdCLHNCQUFzQixDQUFDLE1BQWMsRUFBRSxpQkFBZ0MsRUFBRSxNQUFvQjtRQUN6RixJQUFJLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMzQyxPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsTUFBTSxDQUFDLEtBQUssRUFBRSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN2QyxNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN4RCxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQywwQkFBMEIsQ0FBZ0IsQ0FBQztTQUM5RTtRQUNELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUMvRCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVuRCxNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFO1lBQzlELFlBQVksRUFBRTtnQkFDVixNQUFNO2dCQUNOLGlCQUFpQjthQUNwQjtZQUNELE1BQU07WUFDTixnQkFBZ0IsRUFBRSxnQkFBZ0I7WUFDbEMsZ0JBQWdCLEVBQUUsSUFBSTtZQUN0QixTQUFTLEVBQUUsWUFBWTtZQUN2QixNQUFNLEVBQUUsQ0FBQztZQUNULFdBQVcsRUFBRSxLQUFLO1lBQ2xCLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLFVBQVUsRUFBRSw2QkFBNkI7WUFDekMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUU7WUFDckQsYUFBYSxFQUFFLElBQUk7U0FDdEIsQ0FBQyxDQUFDO1FBQ0gsZUFBZSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVyRCw0QkFBNEIsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFDRCx1QkFBdUIsQ0FBQyxNQUFjO1FBQ2xDLE1BQU0sZUFBZSxHQUFHLDRCQUE0QixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRSxJQUFJLGVBQWUsRUFBRTtZQUNqQixlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDeEIsNEJBQTRCLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNsRDtJQUNMLENBQUM7SUFDRCxlQUFlLENBQUMsTUFBYztRQUMxQixNQUFNLGVBQWUsR0FBRyw0QkFBNEIsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakUsT0FBTyxDQUFDLENBQUMsZUFBZSxDQUFDO0lBQzdCLENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRoeVBvcG92ZXIgfSBmcm9tICduZ3gtdGV0aHlzL3BvcG92ZXInO1xuaW1wb3J0IHsgRWRpdG9yIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgVEhFX0VESVRPUl9RVUlDS19UT09MQkFSX1JFRiB9IGZyb20gJy4uLy4uL3V0aWxzL3dlYWstbWFwcyc7XG5pbXBvcnQgeyBUaGVRdWlja1Rvb2xiYXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcXVpY2stdG9vbGJhci9xdWljay10b29sYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBUb29sYmFySXRlbSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdG9vbGJhcic7XG5pbXBvcnQgeyBnZXRCbG9ja0Fib3ZlIH0gZnJvbSAnLi4vLi4vcXVlcmllcy9nZXQtYmxvY2stYWJvdmUnO1xuXG5leHBvcnQgY29uc3QgUXVpY2tJbnNlcnRFZGl0b3IgPSB7XG4gICAgb3BlblF1aWNrSW5zZXJ0VG9vbGJhcihlZGl0b3I6IEVkaXRvciwgcXVpY2tUb29sYmFySXRlbXM6IFRvb2xiYXJJdGVtW10sIG9yaWdpbj86IEhUTUxFbGVtZW50KSB7XG4gICAgICAgIGlmIChRdWlja0luc2VydEVkaXRvci5pc09wZW5lZFRvb2xiYXIoZWRpdG9yKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghb3JpZ2luKSB7XG4gICAgICAgICAgICBjb25zdCBbYmxvY2ssXSA9IGdldEJsb2NrQWJvdmUoZWRpdG9yKTtcbiAgICAgICAgICAgIGNvbnN0IHJvb3ROb2RlID0gQW5ndWxhckVkaXRvci50b0RPTU5vZGUoZWRpdG9yLCBibG9jayk7XG4gICAgICAgICAgICBvcmlnaW4gPSByb290Tm9kZS5xdWVyeVNlbGVjdG9yKCdbZGF0YS1zbGF0ZS1sZWFmPVwidHJ1ZVwiXScpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG92ZXJsYXkgPSBlZGl0b3IuaW5qZWN0b3IuZ2V0KE92ZXJsYXkpO1xuICAgICAgICBjb25zdCB2aWV3Q29udGFpbmVyUmVmID0gZWRpdG9yLmluamVjdG9yLmdldChWaWV3Q29udGFpbmVyUmVmKTtcbiAgICAgICAgY29uc3QgdGh5UG9wb3ZlciA9IGVkaXRvci5pbmplY3Rvci5nZXQoVGh5UG9wb3Zlcik7XG5cbiAgICAgICAgY29uc3QgcXVpY2tUb29sYmFyUmVmID0gdGh5UG9wb3Zlci5vcGVuKFRoZVF1aWNrVG9vbGJhckNvbXBvbmVudCwge1xuICAgICAgICAgICAgaW5pdGlhbFN0YXRlOiB7XG4gICAgICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgICAgIHF1aWNrVG9vbGJhckl0ZW1zXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb3JpZ2luLFxuICAgICAgICAgICAgdmlld0NvbnRhaW5lclJlZjogdmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgICAgIGJhY2tkcm9wQ2xvc2FibGU6IHRydWUsXG4gICAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b21MZWZ0JyxcbiAgICAgICAgICAgIG9mZnNldDogNCxcbiAgICAgICAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcbiAgICAgICAgICAgIGluc2lkZUNsb3NhYmxlOiB0cnVlLFxuICAgICAgICAgICAgcGFuZWxDbGFzczogJ3RoZS1xdWljay10b29sYmFyLWNvbnRhaW5lcicsXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneTogb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKSxcbiAgICAgICAgICAgIG1hbnVhbENsb3N1cmU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIHF1aWNrVG9vbGJhclJlZi5jb21wb25lbnRJbnN0YW5jZS5jZHIubWFya0ZvckNoZWNrKCk7XG5cbiAgICAgICAgVEhFX0VESVRPUl9RVUlDS19UT09MQkFSX1JFRi5zZXQoZWRpdG9yLCBxdWlja1Rvb2xiYXJSZWYpO1xuICAgIH0sXG4gICAgY2xvc2VRdWlja0luc2VydFRvb2xiYXIoZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgY29uc3QgcXVpY2tUb29sYmFyUmVmID0gVEhFX0VESVRPUl9RVUlDS19UT09MQkFSX1JFRi5nZXQoZWRpdG9yKTtcbiAgICAgICAgaWYgKHF1aWNrVG9vbGJhclJlZikge1xuICAgICAgICAgICAgcXVpY2tUb29sYmFyUmVmLmNsb3NlKCk7XG4gICAgICAgICAgICBUSEVfRURJVE9SX1FVSUNLX1RPT0xCQVJfUkVGLnNldChlZGl0b3IsIG51bGwpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBpc09wZW5lZFRvb2xiYXIoZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgY29uc3QgcXVpY2tUb29sYmFyUmVmID0gVEhFX0VESVRPUl9RVUlDS19UT09MQkFSX1JFRi5nZXQoZWRpdG9yKTtcbiAgICAgICAgcmV0dXJuICEhcXVpY2tUb29sYmFyUmVmO1xuICAgIH1cbn07XG4iXX0=
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpY2staW5zZXJ0LmVkaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9wbHVnaW5zL3F1aWNrLWluc2VydC9xdWljay1pbnNlcnQuZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWhELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUMsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRTlGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHO0lBQzdCLHNCQUFzQixDQUFDLE1BQWMsRUFBRSxpQkFBZ0MsRUFBRSxNQUFvQjtRQUN6RixJQUFJLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMzQyxPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0QyxNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN4RCxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQywwQkFBMEIsQ0FBZ0IsQ0FBQztTQUM5RTtRQUNELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUMvRCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVuRCxNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFO1lBQzlELFlBQVksRUFBRTtnQkFDVixNQUFNO2dCQUNOLGlCQUFpQjthQUNwQjtZQUNELE1BQU07WUFDTixnQkFBZ0IsRUFBRSxnQkFBZ0I7WUFDbEMsZ0JBQWdCLEVBQUUsSUFBSTtZQUN0QixTQUFTLEVBQUUsWUFBWTtZQUN2QixNQUFNLEVBQUUsQ0FBQztZQUNULFdBQVcsRUFBRSxLQUFLO1lBQ2xCLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLFVBQVUsRUFBRSw2QkFBNkI7WUFDekMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUU7WUFDckQsYUFBYSxFQUFFLElBQUk7U0FDdEIsQ0FBQyxDQUFDO1FBQ0gsZUFBZSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVyRCw0QkFBNEIsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFDRCx1QkFBdUIsQ0FBQyxNQUFjO1FBQ2xDLE1BQU0sZUFBZSxHQUFHLDRCQUE0QixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRSxJQUFJLGVBQWUsRUFBRTtZQUNqQixlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDeEIsNEJBQTRCLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNsRDtJQUNMLENBQUM7SUFDRCxlQUFlLENBQUMsTUFBYztRQUMxQixNQUFNLGVBQWUsR0FBRyw0QkFBNEIsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakUsT0FBTyxDQUFDLENBQUMsZUFBZSxDQUFDO0lBQzdCLENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRoeVBvcG92ZXIgfSBmcm9tICduZ3gtdGV0aHlzL3BvcG92ZXInO1xuaW1wb3J0IHsgRWRpdG9yIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgQW5ndWxhckVkaXRvciB9IGZyb20gJ3NsYXRlLWFuZ3VsYXInO1xuaW1wb3J0IHsgVG9vbGJhckl0ZW0gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFRIRV9FRElUT1JfUVVJQ0tfVE9PTEJBUl9SRUYgfSBmcm9tICcuLi8uLi91dGlscy93ZWFrLW1hcHMnO1xuaW1wb3J0IHsgZ2V0QmxvY2tBYm92ZSB9IGZyb20gJy4uLy4uL3F1ZXJpZXMvZ2V0LWJsb2NrLWFib3ZlJztcbmltcG9ydCB7IFRoZVF1aWNrVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9xdWljay10b29sYmFyL3F1aWNrLXRvb2xiYXIuY29tcG9uZW50JztcblxuZXhwb3J0IGNvbnN0IFF1aWNrSW5zZXJ0RWRpdG9yID0ge1xuICAgIG9wZW5RdWlja0luc2VydFRvb2xiYXIoZWRpdG9yOiBFZGl0b3IsIHF1aWNrVG9vbGJhckl0ZW1zOiBUb29sYmFySXRlbVtdLCBvcmlnaW4/OiBIVE1MRWxlbWVudCkge1xuICAgICAgICBpZiAoUXVpY2tJbnNlcnRFZGl0b3IuaXNPcGVuZWRUb29sYmFyKGVkaXRvcikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW9yaWdpbikge1xuICAgICAgICAgICAgY29uc3QgW2Jsb2NrXSA9IGdldEJsb2NrQWJvdmUoZWRpdG9yKTtcbiAgICAgICAgICAgIGNvbnN0IHJvb3ROb2RlID0gQW5ndWxhckVkaXRvci50b0RPTU5vZGUoZWRpdG9yLCBibG9jayk7XG4gICAgICAgICAgICBvcmlnaW4gPSByb290Tm9kZS5xdWVyeVNlbGVjdG9yKCdbZGF0YS1zbGF0ZS1sZWFmPVwidHJ1ZVwiXScpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG92ZXJsYXkgPSBlZGl0b3IuaW5qZWN0b3IuZ2V0KE92ZXJsYXkpO1xuICAgICAgICBjb25zdCB2aWV3Q29udGFpbmVyUmVmID0gZWRpdG9yLmluamVjdG9yLmdldChWaWV3Q29udGFpbmVyUmVmKTtcbiAgICAgICAgY29uc3QgdGh5UG9wb3ZlciA9IGVkaXRvci5pbmplY3Rvci5nZXQoVGh5UG9wb3Zlcik7XG5cbiAgICAgICAgY29uc3QgcXVpY2tUb29sYmFyUmVmID0gdGh5UG9wb3Zlci5vcGVuKFRoZVF1aWNrVG9vbGJhckNvbXBvbmVudCwge1xuICAgICAgICAgICAgaW5pdGlhbFN0YXRlOiB7XG4gICAgICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgICAgIHF1aWNrVG9vbGJhckl0ZW1zXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb3JpZ2luLFxuICAgICAgICAgICAgdmlld0NvbnRhaW5lclJlZjogdmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgICAgIGJhY2tkcm9wQ2xvc2FibGU6IHRydWUsXG4gICAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b21MZWZ0JyxcbiAgICAgICAgICAgIG9mZnNldDogNCxcbiAgICAgICAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcbiAgICAgICAgICAgIGluc2lkZUNsb3NhYmxlOiB0cnVlLFxuICAgICAgICAgICAgcGFuZWxDbGFzczogJ3RoZS1xdWljay10b29sYmFyLWNvbnRhaW5lcicsXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneTogb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKSxcbiAgICAgICAgICAgIG1hbnVhbENsb3N1cmU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIHF1aWNrVG9vbGJhclJlZi5jb21wb25lbnRJbnN0YW5jZS5jZHIubWFya0ZvckNoZWNrKCk7XG5cbiAgICAgICAgVEhFX0VESVRPUl9RVUlDS19UT09MQkFSX1JFRi5zZXQoZWRpdG9yLCBxdWlja1Rvb2xiYXJSZWYpO1xuICAgIH0sXG4gICAgY2xvc2VRdWlja0luc2VydFRvb2xiYXIoZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgY29uc3QgcXVpY2tUb29sYmFyUmVmID0gVEhFX0VESVRPUl9RVUlDS19UT09MQkFSX1JFRi5nZXQoZWRpdG9yKTtcbiAgICAgICAgaWYgKHF1aWNrVG9vbGJhclJlZikge1xuICAgICAgICAgICAgcXVpY2tUb29sYmFyUmVmLmNsb3NlKCk7XG4gICAgICAgICAgICBUSEVfRURJVE9SX1FVSUNLX1RPT0xCQVJfUkVGLnNldChlZGl0b3IsIG51bGwpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBpc09wZW5lZFRvb2xiYXIoZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgY29uc3QgcXVpY2tUb29sYmFyUmVmID0gVEhFX0VESVRPUl9RVUlDS19UT09MQkFSX1JFRi5nZXQoZWRpdG9yKTtcbiAgICAgICAgcmV0dXJuICEhcXVpY2tUb29sYmFyUmVmO1xuICAgIH1cbn07XG4iXX0=
@@ -1,18 +1,19 @@
1
1
  import { Node } from 'slate';
2
+ import { hotkeys } from 'slate-angular';
2
3
  import { TheEditorComponent } from '../../editor.component';
3
- import { QUICK_TOOLBAR_HOTKEY } from '../../constants';
4
- import { isPureEmptyParagraph } from '../../utils/is-clean-empty-paragraph';
4
+ import { THE_EDITOR_QUICK_TOOLBAR_REF, isPureEmptyParagraph } from '../../utils';
5
+ import { createPluginFactory, getPluginOptions } from '../../core';
6
+ import { PluginKeys } from '../../interfaces';
5
7
  import { QuickInsertEditor } from './quick-insert.editor';
6
8
  import { getBlockAbove } from '../../queries/get-block-above';
7
- import { hotkeys } from 'slate-angular';
8
- import { THE_EDITOR_QUICK_TOOLBAR_REF } from '../../utils';
9
9
  export const withQuickInsert = (editor) => {
10
10
  const { onKeydown, deleteBackward, onChange } = editor;
11
11
  let presseingQuickInsertHotkey = false;
12
12
  editor.onKeydown = (event) => {
13
- var _a;
14
- if (event.key === QUICK_TOOLBAR_HOTKEY) {
15
- const types = [...(((_a = editor.options) === null || _a === void 0 ? void 0 : _a.allowContainerOperateTypes) || [])];
13
+ var _a, _b;
14
+ const hotkey = (_a = getPluginOptions(editor, PluginKeys.quickInsert)) === null || _a === void 0 ? void 0 : _a.hotkey;
15
+ if (event.key === hotkey) {
16
+ const types = [...(((_b = editor.options) === null || _b === void 0 ? void 0 : _b.allowContainerOperateTypes) || [])];
16
17
  const [block] = getBlockAbove(editor);
17
18
  if (isPureEmptyParagraph(editor, block) && allowOpenQuickToolbar(editor, types)) {
18
19
  presseingQuickInsertHotkey = true;
@@ -33,14 +34,15 @@ export const withQuickInsert = (editor) => {
33
34
  deleteBackward(unit);
34
35
  };
35
36
  editor.onChange = () => {
36
- var _a;
37
+ var _a, _b;
37
38
  onChange();
38
39
  if (editor.selection) {
39
- const [block, path] = getBlockAbove(editor);
40
+ const hotkey = (_a = getPluginOptions(editor, PluginKeys.quickInsert)) === null || _a === void 0 ? void 0 : _a.hotkey;
41
+ const [block] = getBlockAbove(editor);
40
42
  // quick insert plus
41
43
  const editorComponent = editor.injector.get(TheEditorComponent);
42
- (_a = editorComponent.quickInsertInstance) === null || _a === void 0 ? void 0 : _a.checkStatus();
43
- if (presseingQuickInsertHotkey && Node.string(block) === QUICK_TOOLBAR_HOTKEY) {
44
+ (_b = editorComponent.quickInsertInstance) === null || _b === void 0 ? void 0 : _b.checkStatus();
45
+ if (presseingQuickInsertHotkey && Node.string(block) === hotkey) {
44
46
  QuickInsertEditor.openQuickInsertToolbar(editor, editorComponent.quickToolbarItems);
45
47
  presseingQuickInsertHotkey = false;
46
48
  return;
@@ -48,21 +50,26 @@ export const withQuickInsert = (editor) => {
48
50
  else {
49
51
  presseingQuickInsertHotkey = false;
50
52
  }
51
- if (QuickInsertEditor.isOpenedToolbar(editor) &&
52
- !isPureEmptyParagraph(editor, block) &&
53
- Node.string(block) !== QUICK_TOOLBAR_HOTKEY) {
53
+ if (QuickInsertEditor.isOpenedToolbar(editor) && !isPureEmptyParagraph(editor, block) && Node.string(block) !== hotkey) {
54
54
  QuickInsertEditor.closeQuickInsertToolbar(editor);
55
55
  }
56
56
  }
57
57
  };
58
58
  return editor;
59
59
  };
60
+ export const createQuickInsertPlugin = createPluginFactory({
61
+ key: PluginKeys.quickInsert,
62
+ withOverrides: withQuickInsert,
63
+ options: {
64
+ hotkey: '/'
65
+ }
66
+ });
60
67
  export const allowOpenQuickToolbar = (editor, allowTypes) => {
61
- const [block, path] = getBlockAbove(editor);
68
+ const [, path] = getBlockAbove(editor);
62
69
  const parentNode = Node.parent(editor, path);
63
70
  if (path.length === 1 || (parentNode && allowTypes.includes(parentNode.type))) {
64
71
  return true;
65
72
  }
66
73
  return false;
67
74
  };
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpY2staW5zZXJ0LnBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9wbHVnaW5zL3F1aWNrLWluc2VydC9xdWljay1pbnNlcnQucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxJQUFJLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDckMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTlELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTNELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLE1BQWMsRUFBRSxFQUFFO0lBQzlDLE1BQU0sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUN2RCxJQUFJLDBCQUEwQixHQUFHLEtBQUssQ0FBQztJQUV2QyxNQUFNLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBb0IsRUFBRSxFQUFFOztRQUN4QyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssb0JBQW9CLEVBQUU7WUFDcEMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQSxNQUFBLE1BQU0sQ0FBQyxPQUFPLDBDQUFFLDBCQUEwQixLQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDdEUsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0QyxJQUFJLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUU7Z0JBQzdFLDBCQUEwQixHQUFHLElBQUksQ0FBQzthQUNyQztTQUNKO1FBQ0QsTUFBTSxlQUFlLEdBQUcsNEJBQTRCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QyxJQUFJLGVBQWUsSUFBSSxDQUFDLFFBQVEsSUFBSSxVQUFVLENBQUMsRUFBRTtZQUM3QyxPQUFPO1NBQ1Y7UUFDRCxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQyxDQUFDO0lBRUYsTUFBTSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsRUFBRTtRQUMzQixJQUFJLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMzQyxpQkFBaUIsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNyRDtRQUNELGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixDQUFDLENBQUM7SUFFRixNQUFNLENBQUMsUUFBUSxHQUFHLEdBQUcsRUFBRTs7UUFDbkIsUUFBUSxFQUFFLENBQUM7UUFFWCxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUU7WUFDbEIsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDNUMsb0JBQW9CO1lBQ3BCLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDaEUsTUFBQSxlQUFlLENBQUMsbUJBQW1CLDBDQUFFLFdBQVcsRUFBRSxDQUFDO1lBRW5ELElBQUksMEJBQTBCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxvQkFBb0IsRUFBRTtnQkFDM0UsaUJBQWlCLENBQUMsc0JBQXNCLENBQUMsTUFBTSxFQUFFLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUNwRiwwQkFBMEIsR0FBRyxLQUFLLENBQUM7Z0JBQ25DLE9BQU87YUFDVjtpQkFBTTtnQkFDSCwwQkFBMEIsR0FBRyxLQUFLLENBQUM7YUFDdEM7WUFFRCxJQUNJLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUM7Z0JBQ3pDLENBQUMsb0JBQW9CLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQztnQkFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxvQkFBb0IsRUFDN0M7Z0JBQ0UsaUJBQWlCLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDckQ7U0FDSjtJQUNMLENBQUMsQ0FBQztJQUVGLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsTUFBYyxFQUFFLFVBQTBCLEVBQUUsRUFBRTtJQUNoRixNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3QyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7UUFDM0UsT0FBTyxJQUFJLENBQUM7S0FDZjtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVkaXRvciwgTm9kZSB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IFRoZUVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2VkaXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUVVJQ0tfVE9PTEJBUl9IT1RLRVkgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgaXNQdXJlRW1wdHlQYXJhZ3JhcGggfSBmcm9tICcuLi8uLi91dGlscy9pcy1jbGVhbi1lbXB0eS1wYXJhZ3JhcGgnO1xuaW1wb3J0IHsgUXVpY2tJbnNlcnRFZGl0b3IgfSBmcm9tICcuL3F1aWNrLWluc2VydC5lZGl0b3InO1xuaW1wb3J0IHsgZ2V0QmxvY2tBYm92ZSB9IGZyb20gJy4uLy4uL3F1ZXJpZXMvZ2V0LWJsb2NrLWFib3ZlJztcbmltcG9ydCB7IEVsZW1lbnRLaW5kcyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBob3RrZXlzIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBUSEVfRURJVE9SX1FVSUNLX1RPT0xCQVJfUkVGIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuXG5leHBvcnQgY29uc3Qgd2l0aFF1aWNrSW5zZXJ0ID0gKGVkaXRvcjogRWRpdG9yKSA9PiB7XG4gICAgY29uc3QgeyBvbktleWRvd24sIGRlbGV0ZUJhY2t3YXJkLCBvbkNoYW5nZSB9ID0gZWRpdG9yO1xuICAgIGxldCBwcmVzc2VpbmdRdWlja0luc2VydEhvdGtleSA9IGZhbHNlO1xuXG4gICAgZWRpdG9yLm9uS2V5ZG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBRVUlDS19UT09MQkFSX0hPVEtFWSkge1xuICAgICAgICAgICAgY29uc3QgdHlwZXMgPSBbLi4uKGVkaXRvci5vcHRpb25zPy5hbGxvd0NvbnRhaW5lck9wZXJhdGVUeXBlcyB8fCBbXSldO1xuICAgICAgICAgICAgY29uc3QgW2Jsb2NrXSA9IGdldEJsb2NrQWJvdmUoZWRpdG9yKTtcbiAgICAgICAgICAgIGlmIChpc1B1cmVFbXB0eVBhcmFncmFwaChlZGl0b3IsIGJsb2NrKSAmJiBhbGxvd09wZW5RdWlja1Rvb2xiYXIoZWRpdG9yLCB0eXBlcykpIHtcbiAgICAgICAgICAgICAgICBwcmVzc2VpbmdRdWlja0luc2VydEhvdGtleSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcXVpY2tUb29sYmFyUmVmID0gVEhFX0VESVRPUl9RVUlDS19UT09MQkFSX1JFRi5nZXQoZWRpdG9yKTtcbiAgICAgICAgY29uc3QgaXNNb3ZlVXAgPSBob3RrZXlzLmlzTW92ZVVwKGV2ZW50KTtcbiAgICAgICAgY29uc3QgaXNNb3ZlRG93biA9IGhvdGtleXMuaXNNb3ZlRG93bihldmVudCk7XG4gICAgICAgIGlmIChxdWlja1Rvb2xiYXJSZWYgJiYgKGlzTW92ZVVwIHx8IGlzTW92ZURvd24pKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgb25LZXlkb3duKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgZWRpdG9yLmRlbGV0ZUJhY2t3YXJkID0gdW5pdCA9PiB7XG4gICAgICAgIGlmIChRdWlja0luc2VydEVkaXRvci5pc09wZW5lZFRvb2xiYXIoZWRpdG9yKSkge1xuICAgICAgICAgICAgUXVpY2tJbnNlcnRFZGl0b3IuY2xvc2VRdWlja0luc2VydFRvb2xiYXIoZWRpdG9yKTtcbiAgICAgICAgfVxuICAgICAgICBkZWxldGVCYWNrd2FyZCh1bml0KTtcbiAgICB9O1xuXG4gICAgZWRpdG9yLm9uQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgICBvbkNoYW5nZSgpO1xuXG4gICAgICAgIGlmIChlZGl0b3Iuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBbYmxvY2ssIHBhdGhdID0gZ2V0QmxvY2tBYm92ZShlZGl0b3IpO1xuICAgICAgICAgICAgLy8gcXVpY2sgaW5zZXJ0IHBsdXNcbiAgICAgICAgICAgIGNvbnN0IGVkaXRvckNvbXBvbmVudCA9IGVkaXRvci5pbmplY3Rvci5nZXQoVGhlRWRpdG9yQ29tcG9uZW50KTtcbiAgICAgICAgICAgIGVkaXRvckNvbXBvbmVudC5xdWlja0luc2VydEluc3RhbmNlPy5jaGVja1N0YXR1cygpO1xuXG4gICAgICAgICAgICBpZiAocHJlc3NlaW5nUXVpY2tJbnNlcnRIb3RrZXkgJiYgTm9kZS5zdHJpbmcoYmxvY2spID09PSBRVUlDS19UT09MQkFSX0hPVEtFWSkge1xuICAgICAgICAgICAgICAgIFF1aWNrSW5zZXJ0RWRpdG9yLm9wZW5RdWlja0luc2VydFRvb2xiYXIoZWRpdG9yLCBlZGl0b3JDb21wb25lbnQucXVpY2tUb29sYmFySXRlbXMpO1xuICAgICAgICAgICAgICAgIHByZXNzZWluZ1F1aWNrSW5zZXJ0SG90a2V5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwcmVzc2VpbmdRdWlja0luc2VydEhvdGtleSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgUXVpY2tJbnNlcnRFZGl0b3IuaXNPcGVuZWRUb29sYmFyKGVkaXRvcikgJiZcbiAgICAgICAgICAgICAgICAhaXNQdXJlRW1wdHlQYXJhZ3JhcGgoZWRpdG9yLCBibG9jaykgJiZcbiAgICAgICAgICAgICAgICBOb2RlLnN0cmluZyhibG9jaykgIT09IFFVSUNLX1RPT0xCQVJfSE9US0VZXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBRdWlja0luc2VydEVkaXRvci5jbG9zZVF1aWNrSW5zZXJ0VG9vbGJhcihlZGl0b3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiBlZGl0b3I7XG59O1xuXG5leHBvcnQgY29uc3QgYWxsb3dPcGVuUXVpY2tUb29sYmFyID0gKGVkaXRvcjogRWRpdG9yLCBhbGxvd1R5cGVzOiBFbGVtZW50S2luZHNbXSkgPT4ge1xuICAgIGNvbnN0IFtibG9jaywgcGF0aF0gPSBnZXRCbG9ja0Fib3ZlKGVkaXRvcik7XG4gICAgY29uc3QgcGFyZW50Tm9kZSA9IE5vZGUucGFyZW50KGVkaXRvciwgcGF0aCk7XG4gICAgaWYgKHBhdGgubGVuZ3RoID09PSAxIHx8IChwYXJlbnROb2RlICYmIGFsbG93VHlwZXMuaW5jbHVkZXMocGFyZW50Tm9kZS50eXBlKSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn07XG4iXX0=
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpY2staW5zZXJ0LnBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9wbHVnaW5zL3F1aWNrLWluc2VydC9xdWljay1pbnNlcnQucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxJQUFJLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU1RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFNOUQsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQW1CLE1BQVMsRUFBSyxFQUFFO0lBQzlELE1BQU0sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUN2RCxJQUFJLDBCQUEwQixHQUFHLEtBQUssQ0FBQztJQUV2QyxNQUFNLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBb0IsRUFBRSxFQUFFOztRQUN4QyxNQUFNLE1BQU0sR0FBRyxNQUFBLGdCQUFnQixDQUEyQixNQUFNLEVBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQywwQ0FBRSxNQUFNLENBQUM7UUFDbEcsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLE1BQU0sRUFBRTtZQUN0QixNQUFNLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBLE1B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QUM7SUFDdkMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0MsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO1FBQzNFLE9BQU8sSUFBSSxDQUFDO0tBQ2Y7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFZGl0b3IsIE5vZGUgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBob3RrZXlzIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBUaGVFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi8uLi9lZGl0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IEVsZW1lbnRLaW5kcyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBUSEVfRURJVE9SX1FVSUNLX1RPT0xCQVJfUkVGLCBpc1B1cmVFbXB0eVBhcmFncmFwaCB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IGNyZWF0ZVBsdWdpbkZhY3RvcnksIGdldFBsdWdpbk9wdGlvbnMgfSBmcm9tICcuLi8uLi9jb3JlJztcbmltcG9ydCB7IFBsdWdpbktleXMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFF1aWNrSW5zZXJ0RWRpdG9yIH0gZnJvbSAnLi9xdWljay1pbnNlcnQuZWRpdG9yJztcbmltcG9ydCB7IGdldEJsb2NrQWJvdmUgfSBmcm9tICcuLi8uLi9xdWVyaWVzL2dldC1ibG9jay1hYm92ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVpY2tJbnNlcnRQbHVnaW5PcHRpb25zIHtcbiAgICBob3RLZXk/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCB3aXRoUXVpY2tJbnNlcnQgPSA8VCBleHRlbmRzIEVkaXRvcj4oZWRpdG9yOiBUKTogVCA9PiB7XG4gICAgY29uc3QgeyBvbktleWRvd24sIGRlbGV0ZUJhY2t3YXJkLCBvbkNoYW5nZSB9ID0gZWRpdG9yO1xuICAgIGxldCBwcmVzc2VpbmdRdWlja0luc2VydEhvdGtleSA9IGZhbHNlO1xuXG4gICAgZWRpdG9yLm9uS2V5ZG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBob3RrZXkgPSBnZXRQbHVnaW5PcHRpb25zPFF1aWNrSW5zZXJ0UGx1Z2luT3B0aW9ucz4oZWRpdG9yLCBQbHVnaW5LZXlzLnF1aWNrSW5zZXJ0KT8uaG90a2V5O1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBob3RrZXkpIHtcbiAgICAgICAgICAgIGNvbnN0IHR5cGVzID0gWy4uLihlZGl0b3Iub3B0aW9ucz8uYWxsb3dDb250YWluZXJPcGVyYXRlVHlwZXMgfHwgW10pXTtcbiAgICAgICAgICAgIGNvbnN0IFtibG9ja10gPSBnZXRCbG9ja0Fib3ZlKGVkaXRvcik7XG4gICAgICAgICAgICBpZiAoaXNQdXJlRW1wdHlQYXJhZ3JhcGgoZWRpdG9yLCBibG9jaykgJiYgYWxsb3dPcGVuUXVpY2tUb29sYmFyKGVkaXRvciwgdHlwZXMpKSB7XG4gICAgICAgICAgICAgICAgcHJlc3NlaW5nUXVpY2tJbnNlcnRIb3RrZXkgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHF1aWNrVG9vbGJhclJlZiA9IFRIRV9FRElUT1JfUVVJQ0tfVE9PTEJBUl9SRUYuZ2V0KGVkaXRvcik7XG4gICAgICAgIGNvbnN0IGlzTW92ZVVwID0gaG90a2V5cy5pc01vdmVVcChldmVudCk7XG4gICAgICAgIGNvbnN0IGlzTW92ZURvd24gPSBob3RrZXlzLmlzTW92ZURvd24oZXZlbnQpO1xuICAgICAgICBpZiAocXVpY2tUb29sYmFyUmVmICYmIChpc01vdmVVcCB8fCBpc01vdmVEb3duKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIG9uS2V5ZG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGVkaXRvci5kZWxldGVCYWNrd2FyZCA9IHVuaXQgPT4ge1xuICAgICAgICBpZiAoUXVpY2tJbnNlcnRFZGl0b3IuaXNPcGVuZWRUb29sYmFyKGVkaXRvcikpIHtcbiAgICAgICAgICAgIFF1aWNrSW5zZXJ0RWRpdG9yLmNsb3NlUXVpY2tJbnNlcnRUb29sYmFyKGVkaXRvcik7XG4gICAgICAgIH1cbiAgICAgICAgZGVsZXRlQmFja3dhcmQodW5pdCk7XG4gICAgfTtcblxuICAgIGVkaXRvci5vbkNoYW5nZSA9ICgpID0+IHtcbiAgICAgICAgb25DaGFuZ2UoKTtcblxuICAgICAgICBpZiAoZWRpdG9yLnNlbGVjdGlvbikge1xuICAgICAgICAgICAgY29uc3QgaG90a2V5ID0gZ2V0UGx1Z2luT3B0aW9uczxRdWlja0luc2VydFBsdWdpbk9wdGlvbnM+KGVkaXRvciwgUGx1Z2luS2V5cy5xdWlja0luc2VydCk/LmhvdGtleTtcbiAgICAgICAgICAgIGNvbnN0IFtibG9ja10gPSBnZXRCbG9ja0Fib3ZlKGVkaXRvcik7XG4gICAgICAgICAgICAvLyBxdWljayBpbnNlcnQgcGx1c1xuICAgICAgICAgICAgY29uc3QgZWRpdG9yQ29tcG9uZW50ID0gZWRpdG9yLmluamVjdG9yLmdldChUaGVFZGl0b3JDb21wb25lbnQpO1xuICAgICAgICAgICAgZWRpdG9yQ29tcG9uZW50LnF1aWNrSW5zZXJ0SW5zdGFuY2U/LmNoZWNrU3RhdHVzKCk7XG5cbiAgICAgICAgICAgIGlmIChwcmVzc2VpbmdRdWlja0luc2VydEhvdGtleSAmJiBOb2RlLnN0cmluZyhibG9jaykgPT09IGhvdGtleSkge1xuICAgICAgICAgICAgICAgIFF1aWNrSW5zZXJ0RWRpdG9yLm9wZW5RdWlja0luc2VydFRvb2xiYXIoZWRpdG9yLCBlZGl0b3JDb21wb25lbnQucXVpY2tUb29sYmFySXRlbXMpO1xuICAgICAgICAgICAgICAgIHByZXNzZWluZ1F1aWNrSW5zZXJ0SG90a2V5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwcmVzc2VpbmdRdWlja0luc2VydEhvdGtleSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoUXVpY2tJbnNlcnRFZGl0b3IuaXNPcGVuZWRUb29sYmFyKGVkaXRvcikgJiYgIWlzUHVyZUVtcHR5UGFyYWdyYXBoKGVkaXRvciwgYmxvY2spICYmIE5vZGUuc3RyaW5nKGJsb2NrKSAhPT0gaG90a2V5KSB7XG4gICAgICAgICAgICAgICAgUXVpY2tJbnNlcnRFZGl0b3IuY2xvc2VRdWlja0luc2VydFRvb2xiYXIoZWRpdG9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gZWRpdG9yO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVF1aWNrSW5zZXJ0UGx1Z2luID0gY3JlYXRlUGx1Z2luRmFjdG9yeTxRdWlja0luc2VydFBsdWdpbk9wdGlvbnM+KHtcbiAgICBrZXk6IFBsdWdpbktleXMucXVpY2tJbnNlcnQsXG4gICAgd2l0aE92ZXJyaWRlczogd2l0aFF1aWNrSW5zZXJ0LFxuICAgIG9wdGlvbnM6IHtcbiAgICAgICAgaG90a2V5OiAnLydcbiAgICB9XG59KTtcblxuZXhwb3J0IGNvbnN0IGFsbG93T3BlblF1aWNrVG9vbGJhciA9IChlZGl0b3I6IEVkaXRvciwgYWxsb3dUeXBlczogRWxlbWVudEtpbmRzW10pID0+IHtcbiAgICBjb25zdCBbLCBwYXRoXSA9IGdldEJsb2NrQWJvdmUoZWRpdG9yKTtcbiAgICBjb25zdCBwYXJlbnROb2RlID0gTm9kZS5wYXJlbnQoZWRpdG9yLCBwYXRoKTtcbiAgICBpZiAocGF0aC5sZW5ndGggPT09IDEgfHwgKHBhcmVudE5vZGUgJiYgYWxsb3dUeXBlcy5pbmNsdWRlcyhwYXJlbnROb2RlLnR5cGUpKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufTtcbiJdfQ==
@@ -1,9 +1,13 @@
1
1
  import isHotkey from 'is-hotkey';
2
+ import { createPluginFactory, getPluginOptions } from '../../core';
3
+ import { PluginKeys } from '../../interfaces';
4
+ import { ElementKinds } from '../../constants';
2
5
  import * as TheQueries from '../../queries';
3
- export const withSoftBreak = (options = { rules: [{ hotkey: 'shift+enter' }] }) => (editor) => {
6
+ export const withSoftBreak = (editor) => {
7
+ var _a, _b;
4
8
  const { onKeydown } = editor;
9
+ const rules = (_b = (_a = getPluginOptions(editor, PluginKeys.softBreak)) === null || _a === void 0 ? void 0 : _a.rules) !== null && _b !== void 0 ? _b : [];
5
10
  editor.onKeydown = (event) => {
6
- const { rules } = options;
7
11
  const entry = TheQueries.getBlockAbove(editor);
8
12
  rules.forEach(({ hotkey, query }) => {
9
13
  if (isHotkey(hotkey, event) && TheQueries.isNodeType(entry, query)) {
@@ -15,4 +19,19 @@ export const withSoftBreak = (options = { rules: [{ hotkey: 'shift+enter' }] })
15
19
  };
16
20
  return editor;
17
21
  };
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29mdC1icmVhay5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9zb2Z0LWJyZWFrL3NvZnQtYnJlYWsucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sUUFBUSxNQUFNLFdBQVcsQ0FBQztBQUlqQyxPQUFPLEtBQUssVUFBVSxNQUFNLGVBQWUsQ0FBQztBQUU1QyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQ3RCLENBQUMsVUFBcUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUNoRixDQUF3QyxNQUFTLEVBQUUsRUFBRTtJQUNqRCxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRTdCLE1BQU0sQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFvQixFQUFFLEVBQUU7UUFDeEMsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUMxQixNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLE1BQWEsQ0FBQyxDQUFDO1FBRXRELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2hDLElBQUksUUFBUSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRTtnQkFDaEUsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUV2QixNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzNCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQyxDQUFDO0lBRUYsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzSG90a2V5IGZyb20gJ2lzLWhvdGtleSc7XG5pbXBvcnQgeyBUcmFuc2Zvcm1FZGl0b3IgfSBmcm9tICcuLi9jb21tb24vdHJhbnNmb3Jtcy5wbHVnaW4nO1xuaW1wb3J0IHsgU29mdEJyZWFrT25LZXlEb3duT3B0aW9ucyB9IGZyb20gJy4vc29mdC1icmVhay50eXBlcyc7XG5pbXBvcnQgeyBUaGVFZGl0b3IgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2VkaXRvcic7XG5pbXBvcnQgKiBhcyBUaGVRdWVyaWVzIGZyb20gJy4uLy4uL3F1ZXJpZXMnO1xuXG5leHBvcnQgY29uc3Qgd2l0aFNvZnRCcmVhayA9XG4gICAgKG9wdGlvbnM6IFNvZnRCcmVha09uS2V5RG93bk9wdGlvbnMgPSB7IHJ1bGVzOiBbeyBob3RrZXk6ICdzaGlmdCtlbnRlcicgfV0gfSkgPT5cbiAgICA8VCBleHRlbmRzIFRoZUVkaXRvciAmIFRyYW5zZm9ybUVkaXRvcj4oZWRpdG9yOiBUKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgb25LZXlkb3duIH0gPSBlZGl0b3I7XG5cbiAgICAgICAgZWRpdG9yLm9uS2V5ZG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBydWxlcyB9ID0gb3B0aW9ucztcbiAgICAgICAgICAgIGNvbnN0IGVudHJ5ID0gVGhlUXVlcmllcy5nZXRCbG9ja0Fib3ZlKGVkaXRvciBhcyBhbnkpO1xuXG4gICAgICAgICAgICBydWxlcy5mb3JFYWNoKCh7IGhvdGtleSwgcXVlcnkgfSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpc0hvdGtleShob3RrZXksIGV2ZW50KSAmJiBUaGVRdWVyaWVzLmlzTm9kZVR5cGUoZW50cnksIHF1ZXJ5KSkge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGVkaXRvci5pbnNlcnRUZXh0KCdcXG4nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG9uS2V5ZG93bihldmVudCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIGVkaXRvcjtcbiAgICB9O1xuIl19
22
+ export const createSoftBreakPlugin = createPluginFactory({
23
+ key: PluginKeys.softBreak,
24
+ withOverrides: withSoftBreak,
25
+ options: {
26
+ rules: [
27
+ { hotkey: 'shift+enter' },
28
+ {
29
+ hotkey: 'enter',
30
+ query: {
31
+ allow: [ElementKinds.blockquote]
32
+ }
33
+ }
34
+ ]
35
+ }
36
+ });
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29mdC1icmVhay5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9zb2Z0LWJyZWFrL3NvZnQtYnJlYWsucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sUUFBUSxNQUFNLFdBQVcsQ0FBQztBQUVqQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUcvQyxPQUFPLEtBQUssVUFBVSxNQUFNLGVBQWUsQ0FBQztBQUU1QyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBd0MsTUFBUyxFQUFLLEVBQUU7O0lBQ2pGLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFFN0IsTUFBTSxLQUFLLEdBQUcsTUFBQSxNQUFBLGdCQUFnQixDQUE0QixNQUFNLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQywwQ0FBRSxLQUFLLG1DQUFJLEVBQUUsQ0FBQztJQUVyRyxNQUFNLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBb0IsRUFBRSxFQUFFO1FBQ3hDLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUMsTUFBYSxDQUFDLENBQUM7UUFFdEQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDaEMsSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNoRSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBRXZCLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDM0I7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQixDQUFDLENBQUM7SUFFRixPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxtQkFBbUIsQ0FBNEI7SUFDaEYsR0FBRyxFQUFFLFVBQVUsQ0FBQyxTQUFTO0lBQ3pCLGFBQWEsRUFBRSxhQUFhO0lBQzVCLE9BQU8sRUFBRTtRQUNMLEtBQUssRUFBRTtZQUNILEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRTtZQUN6QjtnQkFDSSxNQUFNLEVBQUUsT0FBTztnQkFDZixLQUFLLEVBQUU7b0JBQ0gsS0FBSyxFQUFFLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQztpQkFDbkM7YUFDSjtTQUNKO0tBQ0o7Q0FDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNIb3RrZXkgZnJvbSAnaXMtaG90a2V5JztcbmltcG9ydCB7IFRoZUVkaXRvciB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgY3JlYXRlUGx1Z2luRmFjdG9yeSwgZ2V0UGx1Z2luT3B0aW9ucyB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgUGx1Z2luS2V5cyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRWxlbWVudEtpbmRzIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFRyYW5zZm9ybUVkaXRvciB9IGZyb20gJy4uL2NvbW1vbi90cmFuc2Zvcm1zLnBsdWdpbic7XG5pbXBvcnQgeyBTb2Z0QnJlYWtPbktleURvd25PcHRpb25zIH0gZnJvbSAnLi9zb2Z0LWJyZWFrLnR5cGVzJztcbmltcG9ydCAqIGFzIFRoZVF1ZXJpZXMgZnJvbSAnLi4vLi4vcXVlcmllcyc7XG5cbmV4cG9ydCBjb25zdCB3aXRoU29mdEJyZWFrID0gPFQgZXh0ZW5kcyBUaGVFZGl0b3IgJiBUcmFuc2Zvcm1FZGl0b3I+KGVkaXRvcjogVCk6IFQgPT4ge1xuICAgIGNvbnN0IHsgb25LZXlkb3duIH0gPSBlZGl0b3I7XG5cbiAgICBjb25zdCBydWxlcyA9IGdldFBsdWdpbk9wdGlvbnM8U29mdEJyZWFrT25LZXlEb3duT3B0aW9ucz4oZWRpdG9yLCBQbHVnaW5LZXlzLnNvZnRCcmVhayk/LnJ1bGVzID8/IFtdO1xuXG4gICAgZWRpdG9yLm9uS2V5ZG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBlbnRyeSA9IFRoZVF1ZXJpZXMuZ2V0QmxvY2tBYm92ZShlZGl0b3IgYXMgYW55KTtcblxuICAgICAgICBydWxlcy5mb3JFYWNoKCh7IGhvdGtleSwgcXVlcnkgfSkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzSG90a2V5KGhvdGtleSwgZXZlbnQpICYmIFRoZVF1ZXJpZXMuaXNOb2RlVHlwZShlbnRyeSwgcXVlcnkpKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgICAgIGVkaXRvci5pbnNlcnRUZXh0KCdcXG4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIG9uS2V5ZG93bihldmVudCk7XG4gICAgfTtcblxuICAgIHJldHVybiBlZGl0b3I7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlU29mdEJyZWFrUGx1Z2luID0gY3JlYXRlUGx1Z2luRmFjdG9yeTxTb2Z0QnJlYWtPbktleURvd25PcHRpb25zPih7XG4gICAga2V5OiBQbHVnaW5LZXlzLnNvZnRCcmVhayxcbiAgICB3aXRoT3ZlcnJpZGVzOiB3aXRoU29mdEJyZWFrLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgICAgcnVsZXM6IFtcbiAgICAgICAgICAgIHsgaG90a2V5OiAnc2hpZnQrZW50ZXInIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaG90a2V5OiAnZW50ZXInLFxuICAgICAgICAgICAgICAgIHF1ZXJ5OiB7XG4gICAgICAgICAgICAgICAgICAgIGFsbG93OiBbRWxlbWVudEtpbmRzLmJsb2NrcXVvdGVdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICBdXG4gICAgfVxufSk7XG4iXX0=
@@ -350,7 +350,6 @@ export class TheTableComponent extends TheBaseElementComponent {
350
350
  if (this.readonly)
351
351
  return;
352
352
  event.stopPropagation();
353
- event.preventDefault();
354
353
  if (!this.isInTable) {
355
354
  const path = TheEditor.findPath(this.editor, this.element);
356
355
  Transforms.select(this.editor, path);
@@ -410,10 +409,10 @@ export class TheTableComponent extends TheBaseElementComponent {
410
409
  });
411
410
  });
412
411
  }
413
- trackByFnRowControls(index) {
412
+ trackByFnRowCotrols(index) {
414
413
  return index;
415
414
  }
416
- trackByFnColControls(index) {
415
+ trackByFnColCotrols(index) {
417
416
  return index;
418
417
  }
419
418
  ngOnDestroy() {
@@ -433,7 +432,7 @@ TheTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
433
432
  provide: TheTableToken,
434
433
  useExisting: TheTableComponent
435
434
  }
436
- ], viewQueries: [{ propertyName: "tableWrapper", first: true, predicate: ["tableWrapper"], descendants: true, read: ElementRef, static: true }, { propertyName: "theTableElement", first: true, predicate: ["theTable"], descendants: true, read: ElementRef, static: true }, { propertyName: "tbodyElement", first: true, predicate: ["tbody"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: "<!-- \u7C7B\u540D the-temp-*: \u4E34\u65F6\u89E3\u51B3\u56E0\u53D7portal\u5F71\u54CD\u8868\u683C\u6837\u5F0F\u95EE\u9898\uFF0C\u540E\u671F\u6539\u56DEthe-* -->\n<div\n class=\"the-temp-table-container\"\n theColumnResize\n [ngClass]=\"{\n 'the-temp-table-with-controls': isInTable,\n 'the-temp-numbered-column-container': element?.options?.numberedColumn,\n 'the-temp-table-selection-hide': tableStore.isCellSelecting || tableStore.isRightClicking\n }\"\n>\n <div\n class=\"the-temp-table-row-controls-wrapper\"\n [ngClass]=\"{\n 'the-temp-table-focus': isInTable\n }\"\n >\n <div\n class=\"the-temp-table-corner-controls\"\n [ngClass]=\"{\n visible: !readonly && isInTable,\n active: isSelectedAllCell,\n dangerous: tableStore.isSelectedTable && tableStore.dangerousCells.length > 0\n }\"\n >\n <div class=\"the-temp-table-corner-button\" (mousedown)=\"onSelectTable($event)\"></div>\n <div class=\"the-temp-table-corner-controls-insert-row-marker\">\n <the-table-insert-mark type=\"row\" [at]=\"0\" [tableStore]=\"tableStore\"></the-table-insert-mark>\n </div>\n <div class=\"the-temp-table-corner-controls-insert-column-marker\">\n <the-table-insert-mark type=\"column\" [at]=\"0\" [tableStore]=\"tableStore\"></the-table-insert-mark>\n </div>\n </div>\n <div class=\"the-temp-table-row-controls\">\n <div class=\"the-temp-table-row-controls-inner\">\n <div\n class=\"the-temp-table-row-controls-button-wrap\"\n *ngFor=\"let control of rowControls; let i = index; trackBy: trackByFnRowControls\"\n [ngClass]=\"{\n active: tableStore.selectedRowsIndex.includes(control.rowIndex),\n dangerous: tableStore.dangerousRowsIndex.includes(control.rowIndex) && tableStore.dangerousCells.length > 0\n }\"\n >\n <ng-container *ngIf=\"!readonly && isInTable && !element?.options?.numberedColumn\">\n <button\n (mousedown)=\"onRowMouseDown($event, control.rowIndex)\"\n type=\"button\"\n [ngStyle]=\"{ height: control.height + 1 + 'px' }\"\n class=\"the-temp-table-row-controls-button the-temp-table-controls-button\"\n ></button>\n </ng-container>\n <ng-container *ngIf=\"element?.options?.numberedColumn\">\n <div\n [contentEditable]=\"false\"\n contenteditable=\"false\"\n (mousedown)=\"onRowMouseDown($event, control.rowIndex)\"\n class=\"the-temp-table-numbered-controls-button\"\n [ngStyle]=\"{ height: control.height + 1 + 'px' }\"\n >\n <p class=\"row-number d-flex align-items-center\">{{ i + 1 }}</p>\n </div>\n </ng-container>\n <the-table-insert-mark type=\"row\" [at]=\"control.rowIndex + 1\" [tableStore]=\"tableStore\"> </the-table-insert-mark>\n </div>\n </div>\n </div>\n </div>\n <div class=\"the-temp-table-wrapper\" #tableWrapper [ngClass]=\"{ 'the-temp-table-numbered': element?.options?.numberedColumn }\">\n <table class=\"the-temp-table\" #theTable [ngClass]=\"{ 'the-temp-table-with-controls': isInTable }\">\n <colgroup *ngIf=\"columns\">\n <col *ngFor=\"let col of columns\" [ngStyle]=\"{ width: col.width + 'px' }\" />\n </colgroup>\n <thead>\n <tr class=\"the-temp-table-col-controls-wrapper\">\n <th\n class=\"the-temp-table-col-controls\"\n [ngClass]=\"{\n active: tableStore.selectedColumnsIndex.includes(i),\n dangerous: tableStore.dangerousColumnsIndex.includes(i) && tableStore.dangerousCells.length > 0\n }\"\n (mousedown)=\"onColMouseDown($event, i)\"\n *ngFor=\"let control of colControls; let i = index; trackBy: trackByFnColControls\"\n >\n <the-table-insert-mark *ngIf=\"isInTable\" type=\"column\" [at]=\"i + 1\" [tableStore]=\"tableStore\">\n </the-table-insert-mark>\n </th>\n </tr>\n </thead>\n <tbody #tbody>\n <slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"> </slate-children>\n </tbody>\n </table>\n </div>\n</div>\n", components: [{ type: i7.TheInsertMarkComponent, selector: "the-table-insert-mark", inputs: ["type", "at", "tableStore"] }, { type: i8.SlateChildrenComponent, selector: "slate-children", inputs: ["children", "context", "viewContext"] }], directives: [{ type: i9.TheColumnResizeDirective, selector: "div[theColumnResize]" }, { type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
435
+ ], viewQueries: [{ propertyName: "tableWrapper", first: true, predicate: ["tableWrapper"], descendants: true, read: ElementRef, static: true }, { propertyName: "theTableElement", first: true, predicate: ["theTable"], descendants: true, read: ElementRef, static: true }, { propertyName: "tbodyElement", first: true, predicate: ["tbody"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: "<!-- \u7C7B\u540D the-temp-*: \u4E34\u65F6\u89E3\u51B3\u56E0\u53D7portal\u5F71\u54CD\u8868\u683C\u6837\u5F0F\u95EE\u9898\uFF0C\u540E\u671F\u6539\u56DEthe-* -->\n<div\n class=\"the-temp-table-container\"\n theColumnResize\n [ngClass]=\"{\n 'the-temp-table-with-controls': isInTable,\n 'the-temp-numbered-column-container': element?.options?.numberedColumn,\n 'the-temp-table-selection-hide': tableStore.isCellSelecting || tableStore.isRightClicking\n }\"\n>\n <div\n class=\"the-temp-table-row-controls-wrapper\"\n [ngClass]=\"{\n 'the-temp-table-focus': isInTable\n }\"\n >\n <div\n class=\"the-temp-table-corner-controls\"\n [ngClass]=\"{\n visible: !readonly && isInTable,\n active: isSelectedAllCell,\n dangerous: tableStore.isSelectedTable && tableStore.dangerousCells.length > 0\n }\"\n >\n <div class=\"the-temp-table-corner-button\" (mousedown)=\"onSelectTable($event)\"></div>\n <div class=\"the-temp-table-corner-controls-insert-row-marker\">\n <the-table-insert-mark type=\"row\" [at]=\"0\" [tableStore]=\"tableStore\"></the-table-insert-mark>\n </div>\n <div class=\"the-temp-table-corner-controls-insert-column-marker\">\n <the-table-insert-mark type=\"column\" [at]=\"0\" [tableStore]=\"tableStore\"></the-table-insert-mark>\n </div>\n </div>\n <div class=\"the-temp-table-row-controls\">\n <div class=\"the-temp-table-row-controls-inner\">\n <div\n class=\"the-temp-table-row-controls-button-wrap\"\n *ngFor=\"let control of rowControls; let i = index; trackBy: trackByFnRowCotrols\"\n [ngClass]=\"{\n active: tableStore.selectedRowsIndex.includes(control.rowIndex),\n dangerous: tableStore.dangerousRowsIndex.includes(control.rowIndex) && tableStore.dangerousCells.length > 0\n }\"\n >\n <ng-container *ngIf=\"!readonly && isInTable && !element?.options?.numberedColumn\">\n <button\n (mousedown)=\"onRowMouseDown($event, control.rowIndex)\"\n type=\"button\"\n [ngStyle]=\"{ height: control.height + 1 + 'px' }\"\n class=\"the-temp-table-row-controls-button the-temp-table-controls-button\"\n ></button>\n </ng-container>\n <ng-container *ngIf=\"element?.options?.numberedColumn\">\n <div\n [contentEditable]=\"false\"\n contenteditable=\"false\"\n (mousedown)=\"onRowMouseDown($event, control.rowIndex)\"\n class=\"the-temp-table-numbered-controls-button\"\n [ngStyle]=\"{ height: control.height + 1 + 'px' }\"\n >\n <p class=\"row-number d-flex align-items-center\">{{ i + 1 }}</p>\n </div>\n </ng-container>\n <the-table-insert-mark type=\"row\" [at]=\"control.rowIndex + 1\" [tableStore]=\"tableStore\"> </the-table-insert-mark>\n </div>\n </div>\n </div>\n </div>\n <div class=\"the-temp-table-wrapper\" #tableWrapper [ngClass]=\"{ 'the-temp-table-numbered': element?.options?.numberedColumn }\">\n <table class=\"the-temp-table\" #theTable [ngClass]=\"{ 'the-temp-table-with-controls': isInTable }\">\n <colgroup *ngIf=\"columns\">\n <col *ngFor=\"let col of columns\" [ngStyle]=\"{ width: col.width + 'px' }\" />\n </colgroup>\n <thead>\n <tr class=\"the-temp-table-col-controls-wrapper\">\n <th\n class=\"the-temp-table-col-controls\"\n [ngClass]=\"{\n active: tableStore.selectedColumnsIndex.includes(i),\n dangerous: tableStore.dangerousColumnsIndex.includes(i) && tableStore.dangerousCells.length > 0\n }\"\n (mousedown)=\"onColMouseDown($event, i)\"\n *ngFor=\"let control of colControls; let i = index; trackBy: trackByFnColCotrols\"\n >\n <the-table-insert-mark *ngIf=\"isInTable\" type=\"column\" [at]=\"i + 1\" [tableStore]=\"tableStore\">\n </the-table-insert-mark>\n </th>\n </tr>\n </thead>\n <tbody #tbody>\n <slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"> </slate-children>\n </tbody>\n </table>\n </div>\n</div>\n", components: [{ type: i7.TheInsertMarkComponent, selector: "the-table-insert-mark", inputs: ["type", "at", "tableStore"] }, { type: i8.SlateChildrenComponent, selector: "slate-children", inputs: ["children", "context", "viewContext"] }], directives: [{ type: i9.TheColumnResizeDirective, selector: "div[theColumnResize]" }, { type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
437
436
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheTableComponent, decorators: [{
438
437
  type: Component,
439
438
  args: [{
@@ -464,4 +463,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
464
463
  type: HostListener,
465
464
  args: ['mousedown', ['$event']]
466
465
  }] } });
467
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvdGFibGUvY29tcG9uZW50cy90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy90YWJsZS9jb21wb25lbnRzL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFVBQVUsRUFBdUQsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1SSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRCxPQUFPLEVBQVUsVUFBVSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUM5RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUV6RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUV4RSxPQUFPLEVBQUUsWUFBWSxF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RSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJekQsWUFBWTtzQkFEWCxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJdEQsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIENoYW5nZURldGVjdG9yUmVmLCBOZ1pvbmUsIEFmdGVyVmlld0luaXQsIFZpZXdDaGlsZCwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UsIHRha2VVbnRpbCwgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRWRpdG9yLCBUcmFuc2Zvcm1zIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgQW5ndWxhckVkaXRvciB9IGZyb20gJ3NsYXRlLWFuZ3VsYXInO1xuaW1wb3J0IHsgVGFibGVQb3NpdGlvbiB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IENvbHVtblJlc2l6ZU5vdGlmaWVyU291cmNlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9jb2x1bW4tcmVzaXplL2NvbHVtbi1yZXNpemUtbm90aWZpZXInO1xuaW1wb3J0IHsgVGFibGVDZWxsRXZlbnREaXNwYXRjaGVyIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9jb2x1bW4tcmVzaXplL2V2ZW50LWRpc3BhdGNoZXInO1xuaW1wb3J0IHsgVGFibGVTdG9yZSB9IGZyb20gJy4uL3RhYmxlLnN0b3JlJztcbmltcG9ydCB7IGdldEVsZW1lbnRIZWlnaHQsIGdldEVsZW1lbnRXaWR0aCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2RvbSc7XG5pbXBvcnQgeyBUYWJsZVNlcnZpY2UgfSBmcm9tICcuLi90YWJsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFRoZVRhYmxlQ29udGV4dE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdGFibGUtY29udGV4dG1lbnUuc2VydmljZSc7XG5pbXBvcnQgeyBUaGVDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBUaGVCYXNlRWxlbWVudENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvdmlldy1iYXNlJztcbmltcG9ydCB7IFRhYmxlQ2VsbEVsZW1lbnQsIFRhYmxlRWxlbWVudCwgVGFibGVSb3dFbGVtZW50IH0gZnJvbSAnLi4vLi4vLi4vY3VzdG9tLXR5cGVzJztcbmltcG9ydCB7IFRhYmxlT3B0aW9ucywgVGhlVGFibGVDb2x1bW4sIFRoZVRhYmxlVG9rZW4gfSBmcm9tICcuLi90YWJsZS50eXBlcyc7XG5pbXBvcnQgeyBUaGVFZGl0b3IgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2VkaXRvcic7XG5pbXBvcnQgeyBTTEFfVEFCTEVfQ0VMTF9TRUxFQ1RPUiB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9zZWxlY3Rvcic7XG5pbXBvcnQgKiBhcyBUaGVUcmFuc2Zvcm1zIGZyb20gJy4uLy4uLy4uL3RyYW5zZm9ybXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoZS10YWJsZSwgW3RoZVRhYmxlXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgVGFibGVTdG9yZSxcbiAgICAgICAgVGFibGVTZXJ2aWNlLFxuICAgICAgICBUaGVUYWJsZUNvbnRleHRNZW51U2VydmljZSxcbiAgICAgICAgVGFibGVDZWxsRXZlbnREaXNwYXRjaGVyLFxuICAgICAgICBDb2x1bW5SZXNpemVOb3RpZmllclNvdXJjZSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogVGhlVGFibGVUb2tlbixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBUaGVUYWJsZUNvbXBvbmVudFxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUaGVUYWJsZUNvbXBvbmVudCBleHRlbmRzIFRoZUJhc2VFbGVtZW50Q29tcG9uZW50PFRhYmxlRWxlbWVudCwgRWRpdG9yPiBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBkZXN0cm95JDogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcbiAgICB0aGVUYWJsZVdyYXBwZXJXaWR0aDogbnVtYmVyO1xuXG4gICAgcm93Q29udHJvbHM6IHsgaGVpZ2h0OiBudW1iZXI7IHJvd0luZGV4OiBudW1iZXIgfVtdID0gW107XG5cbiAgICBjb2xDb250cm9scyA9IFtdO1xuXG4gICAgbm9ybWFsaXplZENvbHVtbnM6IFRoZVRhYmxlQ29sdW1uW107XG5cbiAgICBpc0luVGFibGU6IGJvb2xlYW47XG5cbiAgICBnZXQgY29sdW1ucygpOiBUaGVUYWJsZUNvbHVtbltdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubm9ybWFsaXplZENvbHVtbnMgfHwgKHRoaXMuZWxlbWVudCAmJiB0aGlzLmVsZW1lbnQuY29sdW1ucyk7XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgZ2V0IHRib2R5TmF0aXZlRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLnRib2R5RWxlbWVudD8ubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBnZXQgaXNTZWxlY3RlZEFsbENlbGwoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuc2VsZWN0ZWRSb3dzSW5kZXgubGVuZ3RoID09PSB0aGlzLnJvd0NvbnRyb2xzLmxlbmd0aCAmJlxuICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLnNlbGVjdGVkQ29sdW1uc0luZGV4Lmxlbmd0aCA9PT0gdGhpcy5jb2xDb250cm9scy5sZW5ndGhcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBAVmlld0NoaWxkKCd0YWJsZVdyYXBwZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIHRhYmxlV3JhcHBlcjogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ3RoZVRhYmxlJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgICB0aGVUYWJsZUVsZW1lbnQ6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCd0Ym9keScsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pXG4gICAgdGJvZHlFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVNb3VzZWRvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEVsZW1lbnQgJiYgdGhpcy50Ym9keU5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghVGhlRWRpdG9yLmlzRm9jdXNlZCh0aGlzLmVkaXRvcikpIHtcbiAgICAgICAgICAgIFRoZUVkaXRvci5mb2N1cyh0aGlzLmVkaXRvcik7XG4gICAgICAgIH1cbiAgICAgICAgQW5ndWxhckVkaXRvci5tb3ZlQmxvY2tDYXJkKHRoaXMuZWRpdG9yLCB0aGlzLmVsZW1lbnQsIHsgZGlyZWN0aW9uOiAnbGVmdCcgfSk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25Db250ZXh0Q2hhbmdlKCkge1xuICAgICAgICBzdXBlci5vbkNvbnRleHRDaGFuZ2UoKTtcbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5lbWl0VGFibGVDaGFuZ2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZVJvd0NvbnRyb2xzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuZ2V0SXNJblRhYmxlKCk7XG4gICAgICAgICAgICB0aGlzLmdldENvbENvbnRyb2xzKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5ub3JtYWxpemVkQ29sdW1ucykge1xuICAgICAgICAgICAgICAgIHRoaXMubm9ybWFsaXplU2hvd0NvbHVtbnMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwdWJsaWMgZXZlbnREaXNwYXRjaGVyOiBUYWJsZUNlbGxFdmVudERpc3BhdGNoZXIsXG4gICAgICAgIHB1YmxpYyByZXNpemVOb3RpZmllcjogQ29sdW1uUmVzaXplTm90aWZpZXJTb3VyY2UsXG4gICAgICAgIHB1YmxpYyB0YWJsZVN0b3JlOiBUYWJsZVN0b3JlLFxuICAgICAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHVibGljIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwdWJsaWMgdGFibGVTZXJ2aWNlOiBUYWJsZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdGhlQ29udGV4dFNlcnZpY2U6IFRoZUNvbnRleHRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHRoZVRhYmxlQ29udGV4dE1lbnVTZXJ2aWNlOiBUaGVUYWJsZUNvbnRleHRNZW51U2VydmljZVxuICAgICkge1xuICAgICAgICBzdXBlcihlbGVtZW50UmVmLCBjZHIpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLmdldENvbENvbnRyb2xzKCk7XG4gICAgICAgIHRoaXMuZ2V0SXNJblRhYmxlKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZShhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBibG9ja0NhcmRFbGVtZW50ID0gdGhpcy5uYXRpdmVFbGVtZW50LmNsb3Nlc3QoJ3NsYXRlLWJsb2NrLWNhcmQnKTtcbiAgICAgICAgICAgIGlmIChibG9ja0NhcmRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgYmxvY2tDYXJkRWxlbWVudC5jbGFzc0xpc3QuYWRkKGBzbGF0ZS1ibG9jay1jYXJkLSR7dGhpcy5lbGVtZW50LnR5cGV9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuaW5pdEVkaXRvcih0aGlzLmVkaXRvcik7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmliZUNlbGxzQ2hhbmdlKCk7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmliZUNlbGxQb3NpdGlvbkNoYW5nZSgpO1xuICAgICAgICAgICAgdGhpcy5saXN0ZW5UYWJsZUNvbnRleHRNZW51RXZlbnQoKTtcbiAgICAgICAgICAgIHRoaXMudXNlVGFibGVXcmFwcGVyV2lkdGgoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmVsZW1lbnQub3B0aW9ucz8ubnVtYmVyZWRDb2x1bW4pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsb2FkSW1hZ2VEb25lID0gYXdhaXQgdGhpcy5yZXNvbHZlSW1hZ2UoKTtcbiAgICAgICAgICAgICAgICAvLyDnrYnlvoXluo/lj7fliJfooajmoLzlhoXlm77niYfliqDovb3lrozmiJDlkI7lho3ljrvmuLLmn5PooajmoLzooYzpq5jluqZcbiAgICAgICAgICAgICAgICBpZiAobG9hZEltYWdlRG9uZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZVJvd0NvbnRyb2xzKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudXNlUm93Q29udHJvbHMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc3Vic2NyaWJlQ2VsbFBvc2l0aW9uQ2hhbmdlKCkge1xuICAgICAgICB0aGlzLnRhYmxlU3RvcmVcbiAgICAgICAgICAgIC5jZWxsc1Bvc2l0aW9uQ2hhbmdlKClcbiAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMDApLCB0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHggPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHVzZVRhYmxlV3JhcHBlcldpZHRoKCkge1xuICAgICAgICBjb25zdCByb290V2lkdGggPSB0aGlzLnRoZUNvbnRleHRTZXJ2aWNlLmdldE9wdGlvbnMoKS53aWR0aDtcbiAgICAgICAgY29uc3QgdGFibGVQYXRoID0gVGhlRWRpdG9yLmZpbmRQYXRoKHRoaXMuZWRpdG9yLCB0aGlzLmVsZW1lbnQpO1xuICAgICAgICBpZiAodGFibGVQYXRoLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIC8vIOino+WGs3RhYmxl5LiN5Zyo6aG25bGC5pe277yM5ouW5Yqo5Y2V5YWD5qC85a695bqm6K6h566X6Zeu6aKYXG4gICAgICAgICAgICB0aGlzLnRoZVRhYmxlV3JhcHBlcldpZHRoID0gdGhpcy50YWJsZVdyYXBwZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudGhlVGFibGVXcmFwcGVyV2lkdGggPSByb290V2lkdGg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdWJzY3JpYmVDZWxsc0NoYW5nZSgpIHtcbiAgICAgICAgdGhpcy50YWJsZVN0b3JlXG4gICAgICAgICAgICAuZGFuZ2Vyb3VzT3JTZWxlY3RlZENlbGxzQ2hhbmdlKClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHVzZVJvd0NvbnRyb2xzKCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb24gfHwgdGhpcy5lbGVtZW50Lm9wdGlvbnM/Lm51bWJlcmVkQ29sdW1uKSB7XG4gICAgICAgICAgICB0aGlzLnJvd0NvbnRyb2xzID0gdGhpcy5jYWxjdWxhdGVSb3dDb250cm9scygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGV0ZWN0Q2hhbmdlcygpIHtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIGNhbGN1bGF0ZU1pblJvd1NwYW5DZWxsRm9yUm93cygpOiB7IGNlbGw/OiBUYWJsZUNlbGxFbGVtZW50OyByb3dJbmRleDogbnVtYmVyIH1bXSB7XG4gICAgICAgIGNvbnN0IHRhYmxlID0gdGhpcy5lbGVtZW50O1xuICAgICAgICBjb25zdCBjZWxscyA9IHRhYmxlLmNoaWxkcmVuLm1hcCgocm93LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgbm9IaWRkZW5DZWxscyA9IHJvdy5jaGlsZHJlbi5maWx0ZXIoY2VsbCA9PiAhY2VsbC5oaWRkZW4pO1xuICAgICAgICAgICAgaWYgKG5vSGlkZGVuQ2VsbHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1pblJvd3NwYW4gPSBNYXRoLm1pbi5hcHBseShcbiAgICAgICAgICAgICAgICAgICAgTWF0aCxcbiAgICAgICAgICAgICAgICAgICAgbm9IaWRkZW5DZWxscy5tYXAoY2VsbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2VsbC5yb3dzcGFuIHx8IDE7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGNlbGwgPSByb3cuY2hpbGRyZW4uZmluZChpdGVtID0+ICFpdGVtLmhpZGRlbiAmJiAoaXRlbS5yb3dzcGFuIHx8IDEpID09PSBtaW5Sb3dzcGFuKTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBjZWxsLFxuICAgICAgICAgICAgICAgICAgICByb3dJbmRleDogaW5kZXhcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICByb3dJbmRleDogaW5kZXhcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGNlbGxzO1xuICAgIH1cblxuICAgIGNhbGN1bGF0ZVJvd0NvbnRyb2xzKCkge1xuICAgICAgICBjb25zdCBtaW5Sb3dTcGFuQ2VsbEZvclJvd3MgPSB0aGlzLmNhbGN1bGF0ZU1pblJvd1NwYW5DZWxsRm9yUm93cygpO1xuXG4gICAgICAgIGNvbnN0IHJvd0NvbnRyb2xzID0gW107XG4gICAgICAgIGxldCBwcmV2aW91c1Jvd0luZGV4ID0gMDtcbiAgICAgICAgbGV0IHByZXZpb3VzQ29tYmluZVJvd0luZGV4ID0gMDtcbiAgICAgICAgbWluUm93U3BhbkNlbGxGb3JSb3dzLmZvckVhY2goKGNlbGxJbmZvLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFjZWxsSW5mby5jZWxsKSB7XG4gICAgICAgICAgICAgICAgcm93Q29udHJvbHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMCxcbiAgICAgICAgICAgICAgICAgICAgcm93SW5kZXg6IGluZGV4XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcHJldmlvdXNDb21iaW5lUm93SW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IG1pblJvd1NwYW5DZWxsRm9yUm93cy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlUm93Q29udHJvbHNBdmdIZWlnaHQocHJldmlvdXNDb21iaW5lUm93SW5kZXgsIHByZXZpb3VzUm93SW5kZXgsIHJvd0NvbnRyb2xzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBjYWxjdWxhdGUgY29tYmluZSByb3cgaGVpZ2h0XG4gICAgICAgICAgICBpZiAocHJldmlvdXNDb21iaW5lUm93SW5kZXggPiBwcmV2aW91c1Jvd0luZGV4KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVSb3dDb250cm9sc0F2Z0hlaWdodChwcmV2aW91c0NvbWJpbmVSb3dJbmRleCwgcHJldmlvdXNSb3dJbmRleCwgcm93Q29udHJvbHMpO1xuICAgICAgICAgICAgICAgIHByZXZpb3VzQ29tYmluZVJvd0luZGV4ID0gMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgY2VsbERvbSA9IEFuZ3VsYXJFZGl0b3IudG9ET01Ob2RlKHRoaXMuZWRpdG9yLCBjZWxsSW5mby5jZWxsKTtcbiAgICAgICAgICAgIGxldCBoZWlnaHQgPSBnZXRFbGVtZW50SGVpZ2h0KGNlbGxEb20pO1xuICAgICAgICAgICAgLy8g5b2TY2VsbOS4uuWQiOW5tueahOWNleWFg+agvChyb3dzcGFuID4gMSnvvIzorqHnrpflhbblrp7pmYXpq5jluqbvvIjlvZPliY3ljZXlhYPmoLznmoTpq5jluqYgLSDkuIvmlrnlkIjlubbljZXlhYPmoLznmoTpq5jluqbvvIlcbiAgICAgICAgICAgIGlmIChjZWxsSW5mby5jZWxsLnJvd3NwYW4gPiAxKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2FsY0hlaWdodCA9IGhlaWdodCAtIHRoaXMuZ2V0QmVsb3dSb3dIZWlnaHQobWluUm93U3BhbkNlbGxGb3JSb3dzLCBpbmRleCwgY2VsbEluZm8ucm93SW5kZXgsIGNlbGxJbmZvLmNlbGwucm93c3Bhbik7XG4gICAgICAgICAgICAgICAgcm93Q29udHJvbHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogY2FsY0hlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgcm93SW5kZXg6IGNlbGxJbmZvLnJvd0luZGV4XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJvd0NvbnRyb2xzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgIHJvd0luZGV4OiBjZWxsSW5mby5yb3dJbmRleFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHJldmlvdXNSb3dJbmRleCA9IGluZGV4O1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJvd0NvbnRyb2xzO1xuICAgIH1cblxuICAgIGNhbGN1bGF0ZVJvd0NvbnRyb2xzQXZnSGVpZ2h0KFxuICAgICAgICBwcmV2aW91c0NvbWJpbmVSb3dJbmRleDogbnVtYmVyLFxuICAgICAgICBwcmV2aW91c1Jvd0luZGV4OiBudW1iZXIsXG4gICAgICAgIHJvd0NvbnRyb2xzOiB7IGhlaWdodDogbnVtYmVyOyByb3dJbmRleDogbnVtYmVyIH1bXVxuICAgICkge1xuICAgICAgICBjb25zdCByb3dDb250cm9sID0gcm93Q29udHJvbHNbcHJldmlvdXNSb3dJbmRleF07XG4gICAgICAgIGNvbnN0IGNvdW50ID0gcHJldmlvdXNDb21iaW5lUm93SW5kZXggLSBwcmV2aW91c1Jvd0luZGV4O1xuICAgICAgICBjb25zdCBhdmdIZWlnaHQgPSBNYXRoLmZsb29yKHJvd0NvbnRyb2wuaGVpZ2h0IC8gKGNvdW50ICsgMSkpO1xuICAgICAgICBjb25zdCBmaXJzdEhlaWdodCA9IHJvd0NvbnRyb2wuaGVpZ2h0IC0gYXZnSGVpZ2h0ICogY291bnQ7XG4gICAgICAgIHJvd0NvbnRyb2wuaGVpZ2h0ID0gZmlyc3RIZWlnaHQ7XG4gICAgICAgIHJvd0NvbnRyb2xzXG4gICAgICAgICAgICAuZmlsdGVyKChpdGVtLCBfaW5kZXgpID0+IF9pbmRleCA+IHByZXZpb3VzUm93SW5kZXggJiYgX2luZGV4IDw9IHByZXZpb3VzQ29tYmluZVJvd0luZGV4KVxuICAgICAgICAgICAgLmZvckVhY2gocm93Q29udHJvbCA9PiB7XG4gICAgICAgICAgICAgICAgcm93Q29udHJvbC5oZWlnaHQgPSBhdmdIZWlnaHQ7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRCZWxvd1Jvd0hlaWdodChcbiAgICAgICAgY2VsbHM6IHtcbiAgICAgICAgICAgIGNlbGw/OiBUYWJsZUNlbGxFbGVtZW50O1xuICAgICAgICAgICAgcm93SW5kZXg6IG51bWJlcjtcbiAgICAgICAgfVtdLFxuICAgICAgICBpbmRleDogbnVtYmVyLFxuICAgICAgICByb3dJbmRleDogbnVtYmVyLFxuICAgICAgICByb3dzcGFuOiBudW1iZXJcbiAgICApIHtcbiAgICAgICAgbGV0IGJlbG93Um93bEhlaWdodCA9IDA7XG4gICAgICAgIGNlbGxzLnNsaWNlKGluZGV4ICsgMSwgY2VsbHMubGVuZ3RoKS5tYXAoaXRlbSA9PiB7XG4gICAgICAgICAgICBpZiAoIWl0ZW0uY2VsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyb3dJbmRleCArIHJvd3NwYW4gPiBpdGVtLnJvd0luZGV4KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2VsbERvbSA9IEFuZ3VsYXJFZGl0b3IudG9ET01Ob2RlKHRoaXMuZWRpdG9yLCBpdGVtLmNlbGwpO1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLmNlbGwucm93c3BhbiA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8g5aaC5p6c5LiL5pa55Y2V5YWD5qC855qEcm93c3BhbiA+IDHvvIzpgJLlvZLorqHnrpdcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gdGhpcy5nZXRCZWxvd1Jvd0hlaWdodChcbiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxzLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2VsbHMuZmluZEluZGV4KGNlbGwgPT4gY2VsbC5yb3dJbmRleCA9PT0gaXRlbS5yb3dJbmRleCksXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnJvd0luZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5jZWxsLnJvd3NwYW5cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYmVsb3dSb3dsSGVpZ2h0ICs9IGdldEVsZW1lbnRIZWlnaHQoY2VsbERvbSkgLSBoZWlnaHQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYmVsb3dSb3dsSGVpZ2h0ICs9IGdldEVsZW1lbnRIZWlnaHQoY2VsbERvbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGJlbG93Um93bEhlaWdodDtcbiAgICB9XG5cbiAgICByZXNvbHZlSW1hZ2UoKSB7XG4gICAgICAgIGNvbnN0IGltYWdlRWxlbWVudHMgPSB0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW1nJyk7XG4gICAgICAgIGlmIChpbWFnZUVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgaW1hZ2VSZXNvbHZlczogUHJvbWlzZTxhbnk+W10gPSBbXTtcbiAgICAgICAgICAgIGltYWdlRWxlbWVudHMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGltYWdlTG9hZCA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpbWFnZS5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBpbWFnZS5zcmMgPSBpdGVtLmdldEF0dHJpYnV0ZSgnc3JjJyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaW1hZ2VSZXNvbHZlcy5wdXNoKGltYWdlTG9hZCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChpbWFnZVJlc29sdmVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xuICAgIH1cblxuICAgIGdldENvbENvbnRyb2xzKCkge1xuICAgICAgICB0aGlzLmNvbENvbnRyb2xzID0gdGhpcy5lbGVtZW50Py5jaGlsZHJlblswXT8uY2hpbGRyZW4gfHwgW107XG4gICAgfVxuXG4gICAgb25Db2xNb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQsIGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmICghIXRoaXMuc2VsZWN0aW9uICYmIHRoaXMuaXNJblRhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuY2xlYXJEYW5nZXJvdXNDZWxscygpO1xuICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLnNlbGVjdENvbHVtbih0aGlzLmVkaXRvciwgaW5kZXgpO1xuICAgICAgICAgICAgdGhpcy50YWJsZVNlcnZpY2Uub3BlblRvb2xiYXIoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50LCB0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldElzSW5UYWJsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBvcHRzID0gbmV3IFRhYmxlT3B0aW9ucygpO1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5lZGl0b3Iuc2VsZWN0aW9uO1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRQb3NpdGlvbiA9IFRhYmxlUG9zaXRpb24uY3JlYXRlKG9wdHMsIHRoaXMuZWRpdG9yLCBzZWxlY3Rpb24uYW5jaG9yLnBhdGgpO1xuICAgICAgICAgICAgY29uc3QgZW5kUG9zaXRpb24gPSBUYWJsZVBvc2l0aW9uLmNyZWF0ZShvcHRzLCB0aGlzLmVkaXRvciwgc2VsZWN0aW9uLmZvY3VzLnBhdGgpO1xuICAgICAgICAgICAgdGhpcy5pc0luVGFibGUgPSBzdGFydFBvc2l0aW9uLmlzSW5UYWJsZSgpICYmIGVuZFBvc2l0aW9uLmlzSW5UYWJsZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pc0luVGFibGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5vcm1hbGl6ZVNob3dDb2x1bW5zKCkge1xuICAgICAgICBjb25zdCB0YWJsZSA9IHRoaXMuZWxlbWVudDtcbiAgICAgICAgY29uc3QgdHIgPSB0YWJsZS5jaGlsZHJlblswXTtcbiAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5jb2x1bW5zKSB7XG4gICAgICAgICAgICBsZXQgaXNHb29kID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMubm9ybWFsaXplZENvbHVtbnMgPSB0YWJsZS5jb2x1bW5zLm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5pdGVtIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICh0aGlzLmVsZW1lbnQuY29sdW1ucy5sZW5ndGggIT09IHRyLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMubm9ybWFsaXplZENvbHVtbnMgPSB0ci5jaGlsZHJlbi5tYXAoKGl0ZW0sIGkpID0+IHRoaXMuY29sdW1uc1tpXSB8fCB7IHdpZHRoOiAyMDAgfSk7XG4gICAgICAgICAgICAgICAgaXNHb29kID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB0b3RhbFdpZHRoID0gdGhpcy5ub3JtYWxpemVkQ29sdW1ucy5yZWR1Y2UoKHByZSwgY3VyKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByZSArIGN1ci53aWR0aDtcbiAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgaWYgKHRvdGFsV2lkdGggPCB0aGlzLnRoZVRhYmxlV3JhcHBlcldpZHRoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGFzdENvbHVtbldpZHRoID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aGVUYWJsZVdyYXBwZXJXaWR0aCAtIHRvdGFsV2lkdGggKyB0aGlzLm5vcm1hbGl6ZWRDb2x1bW5zW3RoaXMubm9ybWFsaXplZENvbHVtbnMubGVuZ3RoIC0gMV0ud2lkdGg7XG4gICAgICAgICAgICAgICAgdGhpcy5ub3JtYWxpemVkQ29sdW1uc1t0aGlzLm5vcm1hbGl6ZWRDb2x1bW5zLmxlbmd0aCAtIDFdID0geyB3aWR0aDogbGFzdENvbHVtbldpZHRoIH07XG4gICAgICAgICAgICAgICAgaXNHb29kID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNHb29kKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ub3JtYWxpemVkQ29sdW1ucyA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbml0aWFsaXplQ29sdW1ucygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmVsZW1lbnQuY29sdW1ucykge1xuICAgICAgICAgICAgY29uc3QgdHIgPSB0aGlzLmVsZW1lbnQuY2hpbGRyZW5bMF0gYXMgVGFibGVSb3dFbGVtZW50O1xuICAgICAgICAgICAgY29uc3QgdGFibGVXaWR0aCA9IEFuZ3VsYXJFZGl0b3IudG9ET01Ob2RlKHRoaXMuZWRpdG9yLCB0cikub2Zmc2V0V2lkdGg7XG4gICAgICAgICAgICBjb25zdCBjb2x1bW5zID0gdHIuY2hpbGRyZW4ubWFwKGNlbGwgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IHdpZHRoOiBNYXRoLnJvdW5kKHRhYmxlV2lkdGggLyB0ci5jaGlsZHJlbi5sZW5ndGgpIC0gdHIuY2hpbGRyZW4ubGVuZ3RoIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIFRoZVRyYW5zZm9ybXMuc2V0Tm9kZSh0aGlzLmVkaXRvciwgeyBjb2x1bW5zIH0sIHRoaXMuZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbml0aWFsaXplUm93cygpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50LmNoaWxkcmVuLm1hcChyb3cgPT4ge1xuICAgICAgICAgICAgaWYgKCFyb3cuaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IFRoZUVkaXRvci50b0RPTU5vZGUodGhpcy5lZGl0b3IsIHJvdyk7XG4gICAgICAgICAgICAgICAgVGhlVHJhbnNmb3Jtcy5zZXROb2RlKHRoaXMuZWRpdG9yLCB7IGhlaWdodDogZ2V0RWxlbWVudEhlaWdodChlbGVtZW50KSB9LCByb3cpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0cmFuc2Zvcm1Sb3dIZWlnaHQoKSB7XG4gICAgICAgIGNvbnN0IHJvd0VsZW1lbnRzID0gdGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ3Rib2R5JykuY2hpbGRyZW47XG4gICAgICAgIGlmIChyb3dFbGVtZW50cykge1xuICAgICAgICAgICAgKFsuLi5yb3dFbGVtZW50c10gYXMgSFRNTFRhYmxlUm93RWxlbWVudFtdKS5tYXAoKHJvdywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBoZWlnaHQgPSBnZXRFbGVtZW50SGVpZ2h0KHJvdyk7XG4gICAgICAgICAgICAgICAgVGhlVHJhbnNmb3Jtcy5zZXROb2RlKHRoaXMuZWRpdG9yLCB7IGhlaWdodCB9LCB0aGlzLmVsZW1lbnQuY2hpbGRyZW5baW5kZXhdKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdHJhbnNmb3JtQ29sdW1uc1dpZHRoKCkge1xuICAgICAgICBjb25zdCBjb2xzID0gWy4uLnRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdjb2xncm91cCcpLmNoaWxkcmVuXSBhcyBIVE1MVGFibGVDb2xFbGVtZW50W107XG4gICAgICAgIGNvbnN0IGNvbHVtbnM6IFRoZVRhYmxlQ29sdW1uW10gPSBjb2xzLm1hcChjb2wgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHsgd2lkdGg6IGdldEVsZW1lbnRXaWR0aChjb2wpIH07XG4gICAgICAgIH0pO1xuICAgICAgICBUaGVUcmFuc2Zvcm1zLnNldE5vZGUodGhpcy5lZGl0b3IsIHsgY29sdW1ucyB9LCB0aGlzLmVsZW1lbnQpO1xuICAgIH1cblxuICAgIG9uUm93TW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50LCBpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRvbmx5KSByZXR1cm47XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAoIXRoaXMuaXNJblRhYmxlKSB7XG4gICAgICAgICAgICBjb25zdCBwYXRoID0gVGhlRWRpdG9yLmZpbmRQYXRoKHRoaXMuZWRpdG9yLCB0aGlzLmVsZW1lbnQpO1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QodGhpcy5lZGl0b3IsIHBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGFibGVTdG9yZS5zZWxlY3RSb3codGhpcy5lZGl0b3IsIGluZGV4KTtcbiAgICAgICAgdGhpcy50YWJsZVNlcnZpY2Uub3BlblRvb2xiYXIoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50LCB0cnVlKTtcbiAgICB9XG5cbiAgICBvblNlbGVjdFRhYmxlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLnRhYmxlU3RvcmUuc2VsZWN0VGFibGUodGhpcy5lZGl0b3IpO1xuICAgICAgICB0aGlzLnRhYmxlU2VydmljZS5vcGVuVG9vbGJhcihldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuICAgIH1cblxuICAgIGxpc3RlblRhYmxlQ29udGV4dE1lbnVFdmVudCgpIHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMudGhlVGFibGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdjb250ZXh0bWVudScpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5pc1JpZ2h0Q2xpY2tpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjZWxsID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdChTTEFfVEFCTEVfQ0VMTF9TRUxFQ1RPUikgYXMgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY2VsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjZWxsLmNsYXNzTGlzdC5jb250YWlucygnc2VsZWN0ZWQtY2VsbCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLnNlbGVjdENlbGwoY2VsbCwgdGhpcy5lZGl0b3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRoZVRhYmxlQ29udGV4dE1lbnVTZXJ2aWNlLmlzT3BlbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRoZVRhYmxlQ29udGV4dE1lbnVTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNsb3NlQ29udGV4dE1lbnUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGhlVGFibGVDb250ZXh0TWVudVNlcnZpY2Uub3Blbk1lbnVMaXN0KGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnRhYmxlU2VydmljZS5pc09wZW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZVNlcnZpY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2xvc2VUb29sYmFyKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRoZVRhYmxlQ29udGV4dE1lbnVTZXJ2aWNlLm9wZW5NZW51TGlzdChldmVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGhlVGFibGVDb250ZXh0TWVudVNlcnZpY2Uub3Blbk1lbnVMaXN0KGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIHBhdGNoIGZvciByaWdodCBjbGljayBzZWxlY3QgbmV4dCBjZWxsXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QodGhpcy5lZGl0b3IsIHRoaXMuZWRpdG9yLnNlbGVjdGlvbi5hbmNob3IucGF0aCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0cmFja0J5Rm5Sb3dDb250cm9scyhpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICB0cmFja0J5Rm5Db2xDb250cm9scyhpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG59XG4iLCI8IS0tIOexu+WQjSB0aGUtdGVtcC0qOiDkuLTml7bop6PlhrPlm6Dlj5dwb3J0YWzlvbHlk43ooajmoLzmoLflvI/pl67popjvvIzlkI7mnJ/mlLnlm550aGUtKiAtLT5cbjxkaXZcbiAgICBjbGFzcz1cInRoZS10ZW1wLXRhYmxlLWNvbnRhaW5lclwiXG4gICAgdGhlQ29sdW1uUmVzaXplXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAndGhlLXRlbXAtdGFibGUtd2l0aC1jb250cm9scyc6IGlzSW5UYWJsZSxcbiAgICAgICAgJ3RoZS10ZW1wLW51bWJlcmVkLWNvbHVtbi1jb250YWluZXInOiBlbGVtZW50Py5vcHRpb25zPy5udW1iZXJlZENvbHVtbixcbiAgICAgICAgJ3RoZS10ZW1wLXRhYmxlLXNlbGVjdGlvbi1oaWRlJzogdGFibGVTdG9yZS5pc0NlbGxTZWxlY3RpbmcgfHwgdGFibGVTdG9yZS5pc1JpZ2h0Q2xpY2tpbmdcbiAgICB9XCJcbj5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwidGhlLXRlbXAtdGFibGUtcm93LWNvbnRyb2xzLXdyYXBwZXJcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAndGhlLXRlbXAtdGFibGUtZm9jdXMnOiBpc0luVGFibGVcbiAgICAgICAgfVwiXG4gICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInRoZS10ZW1wLXRhYmxlLWNvcm5lci1jb250cm9sc1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgdmlzaWJsZTogIXJlYWRvbmx5ICYmIGlzSW5UYWJsZSxcbiAgICAgICAgICAgICAgICBhY3RpdmU6IGlzU2VsZWN0ZWRBbGxDZWxsLFxuICAgICAgICAgICAgICAgIGRhbmdlcm91czogdGFibGVTdG9yZS5pc1NlbGVjdGVkVGFibGUgJiYgdGFibGVTdG9yZS5kYW5nZXJvdXNDZWxscy5sZW5ndGggPiAwXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoZS10ZW1wLXRhYmxlLWNvcm5lci1idXR0b25cIiAobW91c2Vkb3duKT1cIm9uU2VsZWN0VGFibGUoJGV2ZW50KVwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoZS10ZW1wLXRhYmxlLWNvcm5lci1jb250cm9scy1pbnNlcnQtcm93LW1hcmtlclwiPlxuICAgICAgICAgICAgICAgIDx0aGUtdGFibGUtaW5zZXJ0LW1hcmsgdHlwZT1cInJvd1wiIFthdF09XCIwXCIgW3RhYmxlU3RvcmVdPVwidGFibGVTdG9yZVwiPjwvdGhlLXRhYmxlLWluc2VydC1tYXJrPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhlLXRlbXAtdGFibGUtY29ybmVyLWNvbnRyb2xzLWluc2VydC1jb2x1bW4tbWFya2VyXCI+XG4gICAgICAgICAgICAgICAgPHRoZS10YWJsZS1pbnNlcnQtbWFyayB0eXBlPVwiY29sdW1uXCIgW2F0XT1cIjBcIiBbdGFibGVTdG9yZV09XCJ0YWJsZVN0b3JlXCI+PC90aGUtdGFibGUtaW5zZXJ0LW1hcms+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aGUtdGVtcC10YWJsZS1yb3ctY29udHJvbHNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aGUtdGVtcC10YWJsZS1yb3ctY29udHJvbHMtaW5uZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGhlLXRlbXAtdGFibGUtcm93LWNvbnRyb2xzLWJ1dHRvbi13cmFwXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbnRyb2wgb2Ygcm93Q29udHJvbHM7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlGblJvd0NvbnRyb2xzXCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiB0YWJsZVN0b3JlLnNlbGVjdGVkUm93c0luZGV4LmluY2x1ZGVzKGNvbnRyb2wucm93SW5kZXgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGFuZ2Vyb3VzOiB0YWJsZVN0b3JlLmRhbmdlcm91c1Jvd3NJbmRleC5pbmNsdWRlcyhjb250cm9sLnJvd0luZGV4KSAmJiB0YWJsZVN0b3JlLmRhbmdlcm91c0NlbGxzLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXJlYWRvbmx5ICYmIGlzSW5UYWJsZSAmJiAhZWxlbWVudD8ub3B0aW9ucz8ubnVtYmVyZWRDb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uUm93TW91c2VEb3duKCRldmVudCwgY29udHJvbC5yb3dJbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiBjb250cm9sLmhlaWdodCArIDEgKyAncHgnIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGhlLXRlbXAtdGFibGUtcm93LWNvbnRyb2xzLWJ1dHRvbiB0aGUtdGVtcC10YWJsZS1jb250cm9scy1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVsZW1lbnQ/Lm9wdGlvbnM/Lm51bWJlcmVkQ29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRFZGl0YWJsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudGVkaXRhYmxlPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25Sb3dNb3VzZURvd24oJGV2ZW50LCBjb250cm9sLnJvd0luZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0aGUtdGVtcC10YWJsZS1udW1iZXJlZC1jb250cm9scy1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiBjb250cm9sLmhlaWdodCArIDEgKyAncHgnIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicm93LW51bWJlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+e3sgaSArIDEgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDx0aGUtdGFibGUtaW5zZXJ0LW1hcmsgdHlwZT1cInJvd1wiIFthdF09XCJjb250cm9sLnJvd0luZGV4ICsgMVwiIFt0YWJsZVN0b3JlXT1cInRhYmxlU3RvcmVcIj4gPC90aGUtdGFibGUtaW5zZXJ0LW1hcms+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInRoZS10ZW1wLXRhYmxlLXdyYXBwZXJcIiAjdGFibGVXcmFwcGVyIFtuZ0NsYXNzXT1cInsgJ3RoZS10ZW1wLXRhYmxlLW51bWJlcmVkJzogZWxlbWVudD8ub3B0aW9ucz8ubnVtYmVyZWRDb2x1bW4gfVwiPlxuICAgICAgICA8dGFibGUgY2xhc3M9XCJ0aGUtdGVtcC10YWJsZVwiICN0aGVUYWJsZSBbbmdDbGFzc109XCJ7ICd0aGUtdGVtcC10YWJsZS13aXRoLWNvbnRyb2xzJzogaXNJblRhYmxlIH1cIj5cbiAgICAgICAgICAgIDxjb2xncm91cCAqbmdJZj1cImNvbHVtbnNcIj5cbiAgICAgICAgICAgICAgICA8Y29sICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiIFtuZ1N0eWxlXT1cInsgd2lkdGg6IGNvbC53aWR0aCArICdweCcgfVwiIC8+XG4gICAgICAgICAgICA8L2NvbGdyb3VwPlxuICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cInRoZS10ZW1wLXRhYmxlLWNvbC1jb250cm9scy13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0aGUtdGVtcC10YWJsZS1jb2wtY29udHJvbHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogdGFibGVTdG9yZS5zZWxlY3RlZENvbHVtbnNJbmRleC5pbmNsdWRlcyhpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYW5nZXJvdXM6IHRhYmxlU3RvcmUuZGFuZ2Vyb3VzQ29sdW1uc0luZGV4LmluY2x1ZGVzKGkpICYmIHRhYmxlU3RvcmUuZGFuZ2Vyb3VzQ2VsbHMubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uQ29sTW91c2VEb3duKCRldmVudCwgaSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbnRyb2wgb2YgY29sQ29udHJvbHM7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlGbkNvbENvbnRyb2xzXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoZS10YWJsZS1pbnNlcnQtbWFyayAqbmdJZj1cImlzSW5UYWJsZVwiIHR5cGU9XCJjb2x1bW5cIiBbYXRdPVwiaSArIDFcIiBbdGFibGVTdG9yZV09XCJ0YWJsZVN0b3JlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoZS10YWJsZS1pbnNlcnQtbWFyaz5cbiAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgIDx0Ym9keSAjdGJvZHk+XG4gICAgICAgICAgICAgICAgPHNsYXRlLWNoaWxkcmVuIFtjaGlsZHJlbl09XCJjaGlsZHJlblwiIFtjb250ZXh0XT1cImNoaWxkcmVuQ29udGV4dFwiIFt2aWV3Q29udGV4dF09XCJ2aWV3Q29udGV4dFwiPiA8L3NsYXRlLWNoaWxkcmVuPlxuICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgPC90YWJsZT5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
466
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvdGFibGUvY29tcG9uZW50cy90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy90YWJsZS9jb21wb25lbnRzL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFVBQVUsRUFBdUQsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1SSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRCxPQUFPLEVBQVUsVUFBVSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUM5RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUV6RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUV4RSxPQUFPLEVBQUUsWUFBWSxF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LEVBQUUsSUFBSSxFQUFFO2dCQUl6RCxZQUFZO3NCQURYLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUl0RCxlQUFlO3NCQURkLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIE5nWm9uZSwgQWZ0ZXJWaWV3SW5pdCwgVmlld0NoaWxkLCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSwgdGFrZVVudGlsLCBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFZGl0b3IsIFRyYW5zZm9ybXMgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBUYWJsZVBvc2l0aW9uIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgQ29sdW1uUmVzaXplTm90aWZpZXJTb3VyY2UgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2NvbHVtbi1yZXNpemUvY29sdW1uLXJlc2l6ZS1ub3RpZmllcic7XG5pbXBvcnQgeyBUYWJsZUNlbGxFdmVudERpc3BhdGNoZXIgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2NvbHVtbi1yZXNpemUvZXZlbnQtZGlzcGF0Y2hlcic7XG5pbXBvcnQgeyBUYWJsZVN0b3JlIH0gZnJvbSAnLi4vdGFibGUuc3RvcmUnO1xuaW1wb3J0IHsgZ2V0RWxlbWVudEhlaWdodCwgZ2V0RWxlbWVudFdpZHRoIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvZG9tJztcbmltcG9ydCB7IFRhYmxlU2VydmljZSB9IGZyb20gJy4uL3RhYmxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGhlVGFibGVDb250ZXh0TWVudVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90YWJsZS1jb250ZXh0bWVudS5zZXJ2aWNlJztcbmltcG9ydCB7IFRoZUNvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IFRoZUJhc2VFbGVtZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy92aWV3LWJhc2UnO1xuaW1wb3J0IHsgVGFibGVDZWxsRWxlbWVudCwgVGFibGVFbGVtZW50LCBUYWJsZVJvd0VsZW1lbnQgfSBmcm9tICcuLi8uLi8uLi9jdXN0b20tdHlwZXMnO1xuaW1wb3J0IHsgVGFibGVPcHRpb25zLCBUaGVUYWJsZUNvbHVtbiwgVGhlVGFibGVUb2tlbiB9IGZyb20gJy4uL3RhYmxlLnR5cGVzJztcbmltcG9ydCB7IFRoZUVkaXRvciB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvZWRpdG9yJztcbmltcG9ydCB7IFNMQV9UQUJMRV9DRUxMX1NFTEVDVE9SIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL3NlbGVjdG9yJztcbmltcG9ydCAqIGFzIFRoZVRyYW5zZm9ybXMgZnJvbSAnLi4vLi4vLi4vdHJhbnNmb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGhlLXRhYmxlLCBbdGhlVGFibGVdJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBUYWJsZVN0b3JlLFxuICAgICAgICBUYWJsZVNlcnZpY2UsXG4gICAgICAgIFRoZVRhYmxlQ29udGV4dE1lbnVTZXJ2aWNlLFxuICAgICAgICBUYWJsZUNlbGxFdmVudERpc3BhdGNoZXIsXG4gICAgICAgIENvbHVtblJlc2l6ZU5vdGlmaWVyU291cmNlLFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBUaGVUYWJsZVRva2VuLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IFRoZVRhYmxlQ29tcG9uZW50XG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRoZVRhYmxlQ29tcG9uZW50IGV4dGVuZHMgVGhlQmFzZUVsZW1lbnRDb21wb25lbnQ8VGFibGVFbGVtZW50LCBFZGl0b3I+IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIGRlc3Ryb3kkOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdCgpO1xuICAgIHRoZVRhYmxlV3JhcHBlcldpZHRoOiBudW1iZXI7XG5cbiAgICByb3dDb250cm9sczogeyBoZWlnaHQ6IG51bWJlcjsgcm93SW5kZXg6IG51bWJlciB9W10gPSBbXTtcblxuICAgIGNvbENvbnRyb2xzID0gW107XG5cbiAgICBub3JtYWxpemVkQ29sdW1uczogVGhlVGFibGVDb2x1bW5bXTtcblxuICAgIGlzSW5UYWJsZTogYm9vbGVhbjtcblxuICAgIGdldCBjb2x1bW5zKCk6IFRoZVRhYmxlQ29sdW1uW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5ub3JtYWxpemVkQ29sdW1ucyB8fCAodGhpcy5lbGVtZW50ICYmIHRoaXMuZWxlbWVudC5jb2x1bW5zKTtcbiAgICB9XG5cbiAgICBnZXQgbmF0aXZlRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBnZXQgdGJvZHlOYXRpdmVFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGJvZHlFbGVtZW50Py5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIGdldCBpc1NlbGVjdGVkQWxsQ2VsbCgpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5zZWxlY3RlZFJvd3NJbmRleC5sZW5ndGggPT09IHRoaXMucm93Q29udHJvbHMubGVuZ3RoICYmXG4gICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuc2VsZWN0ZWRDb2x1bW5zSW5kZXgubGVuZ3RoID09PSB0aGlzLmNvbENvbnRyb2xzLmxlbmd0aFxuICAgICAgICApO1xuICAgIH1cblxuICAgIEBWaWV3Q2hpbGQoJ3RhYmxlV3JhcHBlcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pXG4gICAgdGFibGVXcmFwcGVyOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgndGhlVGFibGUnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIHRoZVRhYmxlRWxlbWVudDogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ3Rib2R5JywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgICB0Ym9keUVsZW1lbnQ6IEVsZW1lbnRSZWY7XG5cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nLCBbJyRldmVudCddKVxuICAgIGhhbmRsZU1vdXNlZG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgRWxlbWVudCAmJiB0aGlzLnRib2R5TmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFUaGVFZGl0b3IuaXNGb2N1c2VkKHRoaXMuZWRpdG9yKSkge1xuICAgICAgICAgICAgVGhlRWRpdG9yLmZvY3VzKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgfVxuICAgICAgICBBbmd1bGFyRWRpdG9yLm1vdmVCbG9ja0NhcmQodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCwgeyBkaXJlY3Rpb246ICdsZWZ0JyB9KTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvbkNvbnRleHRDaGFuZ2UoKSB7XG4gICAgICAgIHN1cGVyLm9uQ29udGV4dENoYW5nZSgpO1xuICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLmVtaXRUYWJsZUNoYW5nZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMudXNlUm93Q29udHJvbHMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5nZXRJc0luVGFibGUoKTtcbiAgICAgICAgICAgIHRoaXMuZ2V0Q29sQ29udHJvbHMoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLm5vcm1hbGl6ZWRDb2x1bW5zKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ub3JtYWxpemVTaG93Q29sdW1ucygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHB1YmxpYyBldmVudERpc3BhdGNoZXI6IFRhYmxlQ2VsbEV2ZW50RGlzcGF0Y2hlcixcbiAgICAgICAgcHVibGljIHJlc2l6ZU5vdGlmaWVyOiBDb2x1bW5SZXNpemVOb3RpZmllclNvdXJjZSxcbiAgICAgICAgcHVibGljIHRhYmxlU3RvcmU6IFRhYmxlU3RvcmUsXG4gICAgICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwdWJsaWMgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHB1YmxpYyB0YWJsZVNlcnZpY2U6IFRhYmxlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB0aGVDb250ZXh0U2VydmljZTogVGhlQ29udGV4dFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdGhlVGFibGVDb250ZXh0TWVudVNlcnZpY2U6IFRoZVRhYmxlQ29udGV4dE1lbnVTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGVsZW1lbnRSZWYsIGNkcik7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuZ2V0Q29sQ29udHJvbHMoKTtcbiAgICAgICAgdGhpcy5nZXRJc0luVGFibGUoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrQ2FyZEVsZW1lbnQgPSB0aGlzLm5hdGl2ZUVsZW1lbnQuY2xvc2VzdCgnc2xhdGUtYmxvY2stY2FyZCcpO1xuICAgICAgICAgICAgaWYgKGJsb2NrQ2FyZEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBibG9ja0NhcmRFbGVtZW50LmNsYXNzTGlzdC5hZGQoYHNsYXRlLWJsb2NrLWNhcmQtJHt0aGlzLmVsZW1lbnQudHlwZX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5pbml0RWRpdG9yKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaWJlQ2VsbHNDaGFuZ2UoKTtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaWJlQ2VsbFBvc2l0aW9uQ2hhbmdlKCk7XG4gICAgICAgICAgICB0aGlzLmxpc3RlblRhYmxlQ29udGV4dE1lbnVFdmVudCgpO1xuICAgICAgICAgICAgdGhpcy51c2VUYWJsZVdyYXBwZXJXaWR0aCgpO1xuICAgICAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5vcHRpb25zPy5udW1iZXJlZENvbHVtbikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxvYWRJbWFnZURvbmUgPSBhd2FpdCB0aGlzLnJlc29sdmVJbWFnZSgpO1xuICAgICAgICAgICAgICAgIC8vIOetieW+heW6j+WPt+WIl+ihqOagvOWGheWbvueJh+WKoOi9veWujOaIkOWQjuWGjeWOu+a4suafk+ihqOagvOihjOmrmOW6plxuICAgICAgICAgICAgICAgIGlmIChsb2FkSW1hZ2VEb25lKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXNlUm93Q29udHJvbHMoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VSb3dDb250cm9scygpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzdWJzY3JpYmVDZWxsUG9zaXRpb25DaGFuZ2UoKSB7XG4gICAgICAgIHRoaXMudGFibGVTdG9yZVxuICAgICAgICAgICAgLmNlbGxzUG9zaXRpb25DaGFuZ2UoKVxuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwMCksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoeCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdXNlVGFibGVXcmFwcGVyV2lkdGgoKSB7XG4gICAgICAgIGNvbnN0IHJvb3RXaWR0aCA9IHRoaXMudGhlQ29udGV4dFNlcnZpY2UuZ2V0T3B0aW9ucygpLndpZHRoO1xuICAgICAgICBjb25zdCB0YWJsZVBhdGggPSBUaGVFZGl0b3IuZmluZFBhdGgodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCk7XG4gICAgICAgIGlmICh0YWJsZVBhdGgubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgLy8g6Kej5YazdGFibGXkuI3lnKjpobblsYLml7bvvIzmi5bliqjljZXlhYPmoLzlrr3luqborqHnrpfpl67pophcbiAgICAgICAgICAgIHRoaXMudGhlVGFibGVXcmFwcGVyV2lkdGggPSB0aGlzLnRhYmxlV3JhcHBlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50aGVUYWJsZVdyYXBwZXJXaWR0aCA9IHJvb3RXaWR0aDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN1YnNjcmliZUNlbGxzQ2hhbmdlKCkge1xuICAgICAgICB0aGlzLnRhYmxlU3RvcmVcbiAgICAgICAgICAgIC5kYW5nZXJvdXNPclNlbGVjdGVkQ2VsbHNDaGFuZ2UoKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdXNlUm93Q29udHJvbHMoKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbiB8fCB0aGlzLmVsZW1lbnQub3B0aW9ucz8ubnVtYmVyZWRDb2x1bW4pIHtcbiAgICAgICAgICAgIHRoaXMucm93Q29udHJvbHMgPSB0aGlzLmNhbGN1bGF0ZVJvd0NvbnRyb2xzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZXRlY3RDaGFuZ2VzKCkge1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgY2FsY3VsYXRlTWluUm93U3BhbkNlbGxGb3JSb3dzKCk6IHsgY2VsbD86IFRhYmxlQ2VsbEVsZW1lbnQ7IHJvd0luZGV4OiBudW1iZXIgfVtdIHtcbiAgICAgICAgY29uc3QgdGFibGUgPSB0aGlzLmVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gdGFibGUuY2hpbGRyZW4ubWFwKChyb3csIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBub0hpZGRlbkNlbGxzID0gcm93LmNoaWxkcmVuLmZpbHRlcihjZWxsID0+ICFjZWxsLmhpZGRlbik7XG4gICAgICAgICAgICBpZiAobm9IaWRkZW5DZWxscy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWluUm93c3BhbiA9IE1hdGgubWluLmFwcGx5KFxuICAgICAgICAgICAgICAgICAgICBNYXRoLFxuICAgICAgICAgICAgICAgICAgICBub0hpZGRlbkNlbGxzLm1hcChjZWxsID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjZWxsLnJvd3NwYW4gfHwgMTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgY2VsbCA9IHJvdy5jaGlsZHJlbi5maW5kKGl0ZW0gPT4gIWl0ZW0uaGlkZGVuICYmIChpdGVtLnJvd3NwYW4gfHwgMSkgPT09IG1pblJvd3NwYW4pO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGNlbGwsXG4gICAgICAgICAgICAgICAgICAgIHJvd0luZGV4OiBpbmRleFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHJvd0luZGV4OiBpbmRleFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gY2VsbHM7XG4gICAgfVxuXG4gICAgY2FsY3VsYXRlUm93Q29udHJvbHMoKSB7XG4gICAgICAgIGNvbnN0IG1pblJvd1NwYW5DZWxsRm9yUm93cyA9IHRoaXMuY2FsY3VsYXRlTWluUm93U3BhbkNlbGxGb3JSb3dzKCk7XG5cbiAgICAgICAgY29uc3Qgcm93Q29udHJvbHMgPSBbXTtcbiAgICAgICAgbGV0IHByZXZpb3VzUm93SW5kZXggPSAwO1xuICAgICAgICBsZXQgcHJldmlvdXNDb21iaW5lUm93SW5kZXggPSAwO1xuICAgICAgICBtaW5Sb3dTcGFuQ2VsbEZvclJvd3MuZm9yRWFjaCgoY2VsbEluZm8sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWNlbGxJbmZvLmNlbGwpIHtcbiAgICAgICAgICAgICAgICByb3dDb250cm9scy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICAgICAgICAgICAgICByb3dJbmRleDogaW5kZXhcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBwcmV2aW91c0NvbWJpbmVSb3dJbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PT0gbWluUm93U3BhbkNlbGxGb3JSb3dzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVSb3dDb250cm9sc0F2Z0hlaWdodChwcmV2aW91c0NvbWJpbmVSb3dJbmRleCwgcHJldmlvdXNSb3dJbmRleCwgcm93Q29udHJvbHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGNhbGN1bGF0ZSBjb21iaW5lIHJvdyBoZWlnaHRcbiAgICAgICAgICAgIGlmIChwcmV2aW91c0NvbWJpbmVSb3dJbmRleCA+IHByZXZpb3VzUm93SW5kZXgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVJvd0NvbnRyb2xzQXZnSGVpZ2h0KHByZXZpb3VzQ29tYmluZVJvd0luZGV4LCBwcmV2aW91c1Jvd0luZGV4LCByb3dDb250cm9scyk7XG4gICAgICAgICAgICAgICAgcHJldmlvdXNDb21iaW5lUm93SW5kZXggPSAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBjZWxsRG9tID0gQW5ndWxhckVkaXRvci50b0RPTU5vZGUodGhpcy5lZGl0b3IsIGNlbGxJbmZvLmNlbGwpO1xuICAgICAgICAgICAgbGV0IGhlaWdodCA9IGdldEVsZW1lbnRIZWlnaHQoY2VsbERvbSk7XG4gICAgICAgICAgICAvLyDlvZNjZWxs5Li65ZCI5bm255qE5Y2V5YWD5qC8KHJvd3NwYW4gPiAxKe+8jOiuoeeul+WFtuWunumZhemrmOW6pu+8iOW9k+WJjeWNleWFg+agvOeahOmrmOW6piAtIOS4i+aWueWQiOW5tuWNleWFg+agvOeahOmrmOW6pu+8iVxuICAgICAgICAgICAgaWYgKGNlbGxJbmZvLmNlbGwucm93c3BhbiA+IDEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjYWxjSGVpZ2h0ID0gaGVpZ2h0IC0gdGhpcy5nZXRCZWxvd1Jvd0hlaWdodChtaW5Sb3dTcGFuQ2VsbEZvclJvd3MsIGluZGV4LCBjZWxsSW5mby5yb3dJbmRleCwgY2VsbEluZm8uY2VsbC5yb3dzcGFuKTtcbiAgICAgICAgICAgICAgICByb3dDb250cm9scy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBjYWxjSGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICByb3dJbmRleDogY2VsbEluZm8ucm93SW5kZXhcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcm93Q29udHJvbHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgcm93SW5kZXg6IGNlbGxJbmZvLnJvd0luZGV4XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwcmV2aW91c1Jvd0luZGV4ID0gaW5kZXg7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcm93Q29udHJvbHM7XG4gICAgfVxuXG4gICAgY2FsY3VsYXRlUm93Q29udHJvbHNBdmdIZWlnaHQoXG4gICAgICAgIHByZXZpb3VzQ29tYmluZVJvd0luZGV4OiBudW1iZXIsXG4gICAgICAgIHByZXZpb3VzUm93SW5kZXg6IG51bWJlcixcbiAgICAgICAgcm93Q29udHJvbHM6IHsgaGVpZ2h0OiBudW1iZXI7IHJvd0luZGV4OiBudW1iZXIgfVtdXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IHJvd0NvbnRyb2wgPSByb3dDb250cm9sc1twcmV2aW91c1Jvd0luZGV4XTtcbiAgICAgICAgY29uc3QgY291bnQgPSBwcmV2aW91c0NvbWJpbmVSb3dJbmRleCAtIHByZXZpb3VzUm93SW5kZXg7XG4gICAgICAgIGNvbnN0IGF2Z0hlaWdodCA9IE1hdGguZmxvb3Iocm93Q29udHJvbC5oZWlnaHQgLyAoY291bnQgKyAxKSk7XG4gICAgICAgIGNvbnN0IGZpcnN0SGVpZ2h0ID0gcm93Q29udHJvbC5oZWlnaHQgLSBhdmdIZWlnaHQgKiBjb3VudDtcbiAgICAgICAgcm93Q29udHJvbC5oZWlnaHQgPSBmaXJzdEhlaWdodDtcbiAgICAgICAgcm93Q29udHJvbHNcbiAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW0sIF9pbmRleCkgPT4gX2luZGV4ID4gcHJldmlvdXNSb3dJbmRleCAmJiBfaW5kZXggPD0gcHJldmlvdXNDb21iaW5lUm93SW5kZXgpXG4gICAgICAgICAgICAuZm9yRWFjaChyb3dDb250cm9sID0+IHtcbiAgICAgICAgICAgICAgICByb3dDb250cm9sLmhlaWdodCA9IGF2Z0hlaWdodDtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldEJlbG93Um93SGVpZ2h0KFxuICAgICAgICBjZWxsczoge1xuICAgICAgICAgICAgY2VsbD86IFRhYmxlQ2VsbEVsZW1lbnQ7XG4gICAgICAgICAgICByb3dJbmRleDogbnVtYmVyO1xuICAgICAgICB9W10sXG4gICAgICAgIGluZGV4OiBudW1iZXIsXG4gICAgICAgIHJvd0luZGV4OiBudW1iZXIsXG4gICAgICAgIHJvd3NwYW46IG51bWJlclxuICAgICkge1xuICAgICAgICBsZXQgYmVsb3dSb3dsSGVpZ2h0ID0gMDtcbiAgICAgICAgY2VsbHMuc2xpY2UoaW5kZXggKyAxLCBjZWxscy5sZW5ndGgpLm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgIGlmICghaXRlbS5jZWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJvd0luZGV4ICsgcm93c3BhbiA+IGl0ZW0ucm93SW5kZXgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjZWxsRG9tID0gQW5ndWxhckVkaXRvci50b0RPTU5vZGUodGhpcy5lZGl0b3IsIGl0ZW0uY2VsbCk7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uY2VsbC5yb3dzcGFuID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAvLyDlpoLmnpzkuIvmlrnljZXlhYPmoLznmoRyb3dzcGFuID4gMe+8jOmAkuW9kuiuoeeul1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBoZWlnaHQgPSB0aGlzLmdldEJlbG93Um93SGVpZ2h0KFxuICAgICAgICAgICAgICAgICAgICAgICAgY2VsbHMsXG4gICAgICAgICAgICAgICAgICAgICAgICBjZWxscy5maW5kSW5kZXgoY2VsbCA9PiBjZWxsLnJvd0luZGV4ID09PSBpdGVtLnJvd0luZGV4KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ucm93SW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmNlbGwucm93c3BhblxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBiZWxvd1Jvd2xIZWlnaHQgKz0gZ2V0RWxlbWVudEhlaWdodChjZWxsRG9tKSAtIGhlaWdodDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBiZWxvd1Jvd2xIZWlnaHQgKz0gZ2V0RWxlbWVudEhlaWdodChjZWxsRG9tKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYmVsb3dSb3dsSGVpZ2h0O1xuICAgIH1cblxuICAgIHJlc29sdmVJbWFnZSgpIHtcbiAgICAgICAgY29uc3QgaW1hZ2VFbGVtZW50cyA9IHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbWcnKTtcbiAgICAgICAgaWYgKGltYWdlRWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBpbWFnZVJlc29sdmVzOiBQcm9taXNlPGFueT5bXSA9IFtdO1xuICAgICAgICAgICAgaW1hZ2VFbGVtZW50cy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGltYWdlID0gbmV3IEltYWdlKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaW1hZ2VMb2FkID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGltYWdlLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIGltYWdlLnNyYyA9IGl0ZW0uZ2V0QXR0cmlidXRlKCdzcmMnKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpbWFnZVJlc29sdmVzLnB1c2goaW1hZ2VMb2FkKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKGltYWdlUmVzb2x2ZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XG4gICAgfVxuXG4gICAgZ2V0Q29sQ29udHJvbHMoKSB7XG4gICAgICAgIHRoaXMuY29sQ29udHJvbHMgPSB0aGlzLmVsZW1lbnQ/LmNoaWxkcmVuWzBdPy5jaGlsZHJlbiB8fCBbXTtcbiAgICB9XG5cbiAgICBvbkNvbE1vdXNlRG93bihldmVudDogTW91c2VFdmVudCwgaW5kZXg6IG51bWJlcikge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKCEhdGhpcy5zZWxlY3Rpb24gJiYgdGhpcy5pc0luVGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5jbGVhckRhbmdlcm91c0NlbGxzKCk7XG4gICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuc2VsZWN0Q29sdW1uKHRoaXMuZWRpdG9yLCBpbmRleCk7XG4gICAgICAgICAgICB0aGlzLnRhYmxlU2VydmljZS5vcGVuVG9vbGJhcihldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQsIHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0SXNJblRhYmxlKCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IG9wdHMgPSBuZXcgVGFibGVPcHRpb25zKCk7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmVkaXRvci5zZWxlY3Rpb247XG4gICAgICAgICAgICBjb25zdCBzdGFydFBvc2l0aW9uID0gVGFibGVQb3NpdGlvbi5jcmVhdGUob3B0cywgdGhpcy5lZGl0b3IsIHNlbGVjdGlvbi5hbmNob3IucGF0aCk7XG4gICAgICAgICAgICBjb25zdCBlbmRQb3NpdGlvbiA9IFRhYmxlUG9zaXRpb24uY3JlYXRlKG9wdHMsIHRoaXMuZWRpdG9yLCBzZWxlY3Rpb24uZm9jdXMucGF0aCk7XG4gICAgICAgICAgICB0aGlzLmlzSW5UYWJsZSA9IHN0YXJ0UG9zaXRpb24uaXNJblRhYmxlKCkgJiYgZW5kUG9zaXRpb24uaXNJblRhYmxlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmlzSW5UYWJsZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbm9ybWFsaXplU2hvd0NvbHVtbnMoKSB7XG4gICAgICAgIGNvbnN0IHRhYmxlID0gdGhpcy5lbGVtZW50O1xuICAgICAgICBjb25zdCB0ciA9IHRhYmxlLmNoaWxkcmVuWzBdO1xuICAgICAgICBpZiAodGhpcy5lbGVtZW50LmNvbHVtbnMpIHtcbiAgICAgICAgICAgIGxldCBpc0dvb2QgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5ub3JtYWxpemVkQ29sdW1ucyA9IHRhYmxlLmNvbHVtbnMubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLml0ZW0gfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5jb2x1bW5zLmxlbmd0aCAhPT0gdHIuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ub3JtYWxpemVkQ29sdW1ucyA9IHRyLmNoaWxkcmVuLm1hcCgoaXRlbSwgaSkgPT4gdGhpcy5jb2x1bW5zW2ldIHx8IHsgd2lkdGg6IDIwMCB9KTtcbiAgICAgICAgICAgICAgICBpc0dvb2QgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHRvdGFsV2lkdGggPSB0aGlzLm5vcm1hbGl6ZWRDb2x1bW5zLnJlZHVjZSgocHJlLCBjdXIpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJlICsgY3VyLndpZHRoO1xuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgICBpZiAodG90YWxXaWR0aCA8IHRoaXMudGhlVGFibGVXcmFwcGVyV2lkdGgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsYXN0Q29sdW1uV2lkdGggPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRoZVRhYmxlV3JhcHBlcldpZHRoIC0gdG90YWxXaWR0aCArIHRoaXMubm9ybWFsaXplZENvbHVtbnNbdGhpcy5ub3JtYWxpemVkQ29sdW1ucy5sZW5ndGggLSAxXS53aWR0aDtcbiAgICAgICAgICAgICAgICB0aGlzLm5vcm1hbGl6ZWRDb2x1bW5zW3RoaXMubm9ybWFsaXplZENvbHVtbnMubGVuZ3RoIC0gMV0gPSB7IHdpZHRoOiBsYXN0Q29sdW1uV2lkdGggfTtcbiAgICAgICAgICAgICAgICBpc0dvb2QgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0dvb2QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5vcm1hbGl6ZWRDb2x1bW5zID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluaXRpYWxpemVDb2x1bW5zKCkge1xuICAgICAgICBpZiAoIXRoaXMuZWxlbWVudC5jb2x1bW5zKSB7XG4gICAgICAgICAgICBjb25zdCB0ciA9IHRoaXMuZWxlbWVudC5jaGlsZHJlblswXSBhcyBUYWJsZVJvd0VsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCB0YWJsZVdpZHRoID0gQW5ndWxhckVkaXRvci50b0RPTU5vZGUodGhpcy5lZGl0b3IsIHRyKS5vZmZzZXRXaWR0aDtcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbnMgPSB0ci5jaGlsZHJlbi5tYXAoY2VsbCA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgd2lkdGg6IE1hdGgucm91bmQodGFibGVXaWR0aCAvIHRyLmNoaWxkcmVuLmxlbmd0aCkgLSB0ci5jaGlsZHJlbi5sZW5ndGggfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgVGhlVHJhbnNmb3Jtcy5zZXROb2RlKHRoaXMuZWRpdG9yLCB7IGNvbHVtbnMgfSwgdGhpcy5lbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluaXRpYWxpemVSb3dzKCkge1xuICAgICAgICB0aGlzLmVsZW1lbnQuY2hpbGRyZW4ubWFwKHJvdyA9PiB7XG4gICAgICAgICAgICBpZiAoIXJvdy5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gVGhlRWRpdG9yLnRvRE9NTm9kZSh0aGlzLmVkaXRvciwgcm93KTtcbiAgICAgICAgICAgICAgICBUaGVUcmFuc2Zvcm1zLnNldE5vZGUodGhpcy5lZGl0b3IsIHsgaGVpZ2h0OiBnZXRFbGVtZW50SGVpZ2h0KGVsZW1lbnQpIH0sIHJvdyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRyYW5zZm9ybVJvd0hlaWdodCgpIHtcbiAgICAgICAgY29uc3Qgcm93RWxlbWVudHMgPSB0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcigndGJvZHknKS5jaGlsZHJlbjtcbiAgICAgICAgaWYgKHJvd0VsZW1lbnRzKSB7XG4gICAgICAgICAgICAoWy4uLnJvd0VsZW1lbnRzXSBhcyBIVE1MVGFibGVSb3dFbGVtZW50W10pLm1hcCgocm93LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGdldEVsZW1lbnRIZWlnaHQocm93KTtcbiAgICAgICAgICAgICAgICBUaGVUcmFuc2Zvcm1zLnNldE5vZGUodGhpcy5lZGl0b3IsIHsgaGVpZ2h0IH0sIHRoaXMuZWxlbWVudC5jaGlsZHJlbltpbmRleF0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0cmFuc2Zvcm1Db2x1bW5zV2lkdGgoKSB7XG4gICAgICAgIGNvbnN0IGNvbHMgPSBbLi4udGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2NvbGdyb3VwJykuY2hpbGRyZW5dIGFzIEhUTUxUYWJsZUNvbEVsZW1lbnRbXTtcbiAgICAgICAgY29uc3QgY29sdW1uczogVGhlVGFibGVDb2x1bW5bXSA9IGNvbHMubWFwKGNvbCA9PiB7XG4gICAgICAgICAgICByZXR1cm4geyB3aWR0aDogZ2V0RWxlbWVudFdpZHRoKGNvbCkgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIFRoZVRyYW5zZm9ybXMuc2V0Tm9kZSh0aGlzLmVkaXRvciwgeyBjb2x1bW5zIH0sIHRoaXMuZWxlbWVudCk7XG4gICAgfVxuXG4gICAgb25Sb3dNb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQsIGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZG9ubHkpIHJldHVybjtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmICghdGhpcy5pc0luVGFibGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhdGggPSBUaGVFZGl0b3IuZmluZFBhdGgodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCk7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdCh0aGlzLmVkaXRvciwgcGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50YWJsZVN0b3JlLnNlbGVjdFJvdyh0aGlzLmVkaXRvciwgaW5kZXgpO1xuICAgICAgICB0aGlzLnRhYmxlU2VydmljZS5vcGVuVG9vbGJhcihldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQsIHRydWUpO1xuICAgIH1cblxuICAgIG9uU2VsZWN0VGFibGUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMudGFibGVTdG9yZS5zZWxlY3RUYWJsZSh0aGlzLmVkaXRvcik7XG4gICAgICAgIHRoaXMudGFibGVTZXJ2aWNlLm9wZW5Ub29sYmFyKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCk7XG4gICAgfVxuXG4gICAgbGlzdGVuVGFibGVDb250ZXh0TWVudUV2ZW50KCkge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy50aGVUYWJsZUVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2NvbnRleHRtZW51JylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLmlzUmlnaHRDbGlja2luZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNlbGwgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbG9zZXN0KFNMQV9UQUJMRV9DRUxMX1NFTEVDVE9SKSBhcyBIVE1MVGFibGVDZWxsRWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjZWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNlbGwuY2xhc3NMaXN0LmNvbnRhaW5zKCdzZWxlY3RlZC1jZWxsJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuc2VsZWN0Q2VsbChjZWxsLCB0aGlzLmVkaXRvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudGhlVGFibGVDb250ZXh0TWVudVNlcnZpY2UuaXNPcGVuZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGhlVGFibGVDb250ZXh0TWVudVNlcnZpY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2xvc2VDb250ZXh0TWVudSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50aGVUYWJsZUNvbnRleHRNZW51U2VydmljZS5vcGVuTWVudUxpc3QoZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMudGFibGVTZXJ2aWNlLmlzT3BlbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jbG9zZVRvb2xiYXIoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGhlVGFibGVDb250ZXh0TWVudVNlcnZpY2Uub3Blbk1lbnVMaXN0KGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50aGVUYWJsZUNvbnRleHRNZW51U2VydmljZS5vcGVuTWVudUxpc3QoZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gcGF0Y2ggZm9yIHJpZ2h0IGNsaWNrIHNlbGVjdCBuZXh0IGNlbGxcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdCh0aGlzLmVkaXRvciwgdGhpcy5lZGl0b3Iuc2VsZWN0aW9uLmFuY2hvci5wYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRyYWNrQnlGblJvd0NvdHJvbHMoaW5kZXg6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgdHJhY2tCeUZuQ29sQ290cm9scyhpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG59XG4iLCI8IS0tIOexu+WQjSB0aGUtdGVtcC0qOiDkuLTml7bop6PlhrPlm6Dlj5dwb3J0YWzlvbHlk43ooajmoLzmoLflvI/pl67popjvvIzlkI7mnJ/mlLnlm550aGUtKiAtLT5cbjxkaXZcbiAgICBjbGFzcz1cInRoZS10ZW1wLXRhYmxlLWNvbnRhaW5lclwiXG4gICAgdGhlQ29sdW1uUmVzaXplXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAndGhlLXRlbXAtdGFibGUtd2l0aC1jb250cm9scyc6IGlzSW5UYWJsZSxcbiAgICAgICAgJ3RoZS10ZW1wLW51bWJlcmVkLWNvbHVtbi1jb250YWluZXInOiBlbGVtZW50Py5vcHRpb25zPy5udW1iZXJlZENvbHVtbixcbiAgICAgICAgJ3RoZS10ZW1wLXRhYmxlLXNlbGVjdGlvbi1oaWRlJzogdGFibGVTdG9yZS5pc0NlbGxTZWxlY3RpbmcgfHwgdGFibGVTdG9yZS5pc1JpZ2h0Q2xpY2tpbmdcbiAgICB9XCJcbj5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwidGhlLXRlbXAtdGFibGUtcm93LWNvbnRyb2xzLXdyYXBwZXJcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAndGhlLXRlbXAtdGFibGUtZm9jdXMnOiBpc0luVGFibGVcbiAgICAgICAgfVwiXG4gICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInRoZS10ZW1wLXRhYmxlLWNvcm5lci1jb250cm9sc1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgdmlzaWJsZTogIXJlYWRvbmx5ICYmIGlzSW5UYWJsZSxcbiAgICAgICAgICAgICAgICBhY3RpdmU6IGlzU2VsZWN0ZWRBbGxDZWxsLFxuICAgICAgICAgICAgICAgIGRhbmdlcm91czogdGFibGVTdG9yZS5pc1NlbGVjdGVkVGFibGUgJiYgdGFibGVTdG9yZS5kYW5nZXJvdXNDZWxscy5sZW5ndGggPiAwXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoZS10ZW1wLXRhYmxlLWNvcm5lci1idXR0b25cIiAobW91c2Vkb3duKT1cIm9uU2VsZWN0VGFibGUoJGV2ZW50KVwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoZS10ZW1wLXRhYmxlLWNvcm5lci1jb250cm9scy1pbnNlcnQtcm93LW1hcmtlclwiPlxuICAgICAgICAgICAgICAgIDx0aGUtdGFibGUtaW5zZXJ0LW1hcmsgdHlwZT1cInJvd1wiIFthdF09XCIwXCIgW3RhYmxlU3RvcmVdPVwidGFibGVTdG9yZVwiPjwvdGhlLXRhYmxlLWluc2VydC1tYXJrPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhlLXRlbXAtdGFibGUtY29ybmVyLWNvbnRyb2xzLWluc2VydC1jb2x1bW4tbWFya2VyXCI+XG4gICAgICAgICAgICAgICAgPHRoZS10YWJsZS1pbnNlcnQtbWFyayB0eXBlPVwiY29sdW1uXCIgW2F0XT1cIjBcIiBbdGFibGVTdG9yZV09XCJ0YWJsZVN0b3JlXCI+PC90aGUtdGFibGUtaW5zZXJ0LW1hcms+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aGUtdGVtcC10YWJsZS1yb3ctY29udHJvbHNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aGUtdGVtcC10YWJsZS1yb3ctY29udHJvbHMtaW5uZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGhlLXRlbXAtdGFibGUtcm93LWNvbnRyb2xzLWJ1dHRvbi13cmFwXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbnRyb2wgb2Ygcm93Q29udHJvbHM7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlGblJvd0NvdHJvbHNcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IHRhYmxlU3RvcmUuc2VsZWN0ZWRSb3dzSW5kZXguaW5jbHVkZXMoY29udHJvbC5yb3dJbmRleCksXG4gICAgICAgICAgICAgICAgICAgICAgICBkYW5nZXJvdXM6IHRhYmxlU3RvcmUuZGFuZ2Vyb3VzUm93c0luZGV4LmluY2x1ZGVzKGNvbnRyb2wucm93SW5kZXgpICYmIHRhYmxlU3RvcmUuZGFuZ2Vyb3VzQ2VsbHMubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhcmVhZG9ubHkgJiYgaXNJblRhYmxlICYmICFlbGVtZW50Py5vcHRpb25zPy5udW1iZXJlZENvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25Sb3dNb3VzZURvd24oJGV2ZW50LCBjb250cm9sLnJvd0luZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyBoZWlnaHQ6IGNvbnRyb2wuaGVpZ2h0ICsgMSArICdweCcgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0aGUtdGVtcC10YWJsZS1yb3ctY29udHJvbHMtYnV0dG9uIHRoZS10ZW1wLXRhYmxlLWNvbnRyb2xzLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWxlbWVudD8ub3B0aW9ucz8ubnVtYmVyZWRDb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29udGVudEVkaXRhYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ZWRpdGFibGU9XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvblJvd01vdXNlRG93bigkZXZlbnQsIGNvbnRyb2wucm93SW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRoZS10ZW1wLXRhYmxlLW51bWJlcmVkLWNvbnRyb2xzLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyBoZWlnaHQ6IGNvbnRyb2wuaGVpZ2h0ICsgMSArICdweCcgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJyb3ctbnVtYmVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj57eyBpICsgMSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPHRoZS10YWJsZS1pbnNlcnQtbWFyayB0eXBlPVwicm93XCIgW2F0XT1cImNvbnRyb2wucm93SW5kZXggKyAxXCIgW3RhYmxlU3RvcmVdPVwidGFibGVTdG9yZVwiPiA8L3RoZS10YWJsZS1pbnNlcnQtbWFyaz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwidGhlLXRlbXAtdGFibGUtd3JhcHBlclwiICN0YWJsZVdyYXBwZXIgW25nQ2xhc3NdPVwieyAndGhlLXRlbXAtdGFibGUtbnVtYmVyZWQnOiBlbGVtZW50Py5vcHRpb25zPy5udW1iZXJlZENvbHVtbiB9XCI+XG4gICAgICAgIDx0YWJsZSBjbGFzcz1cInRoZS10ZW1wLXRhYmxlXCIgI3RoZVRhYmxlIFtuZ0NsYXNzXT1cInsgJ3RoZS10ZW1wLXRhYmxlLXdpdGgtY29udHJvbHMnOiBpc0luVGFibGUgfVwiPlxuICAgICAgICAgICAgPGNvbGdyb3VwICpuZ0lmPVwiY29sdW1uc1wiPlxuICAgICAgICAgICAgICAgIDxjb2wgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCIgW25nU3R5bGVdPVwieyB3aWR0aDogY29sLndpZHRoICsgJ3B4JyB9XCIgLz5cbiAgICAgICAgICAgIDwvY29sZ3JvdXA+XG4gICAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGhlLXRlbXAtdGFibGUtY29sLWNvbnRyb2xzLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRoXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRoZS10ZW1wLXRhYmxlLWNvbC1jb250cm9sc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiB0YWJsZVN0b3JlLnNlbGVjdGVkQ29sdW1uc0luZGV4LmluY2x1ZGVzKGkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhbmdlcm91czogdGFibGVTdG9yZS5kYW5nZXJvdXNDb2x1bW5zSW5kZXguaW5jbHVkZXMoaSkgJiYgdGFibGVTdG9yZS5kYW5nZXJvdXNDZWxscy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25Db2xNb3VzZURvd24oJGV2ZW50LCBpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29udHJvbCBvZiBjb2xDb250cm9sczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeUZuQ29sQ290cm9sc1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aGUtdGFibGUtaW5zZXJ0LW1hcmsgKm5nSWY9XCJpc0luVGFibGVcIiB0eXBlPVwiY29sdW1uXCIgW2F0XT1cImkgKyAxXCIgW3RhYmxlU3RvcmVdPVwidGFibGVTdG9yZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aGUtdGFibGUtaW5zZXJ0LW1hcms+XG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICA8dGJvZHkgI3Rib2R5PlxuICAgICAgICAgICAgICAgIDxzbGF0ZS1jaGlsZHJlbiBbY2hpbGRyZW5dPVwiY2hpbGRyZW5cIiBbY29udGV4dF09XCJjaGlsZHJlbkNvbnRleHRcIiBbdmlld0NvbnRleHRdPVwidmlld0NvbnRleHRcIj4gPC9zbGF0ZS1jaGlsZHJlbj5cbiAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgIDwvdGFibGU+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==