@worktile/theia 3.0.7 → 3.1.0-next.0

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 (400) hide show
  1. package/components/toolbar/toolbar.component.d.ts +2 -3
  2. package/components/toolbar-dropdown/toolbar-dropdown.component.scss +0 -1
  3. package/components/toolbar-item/toolbar-item.component.d.ts +2 -3
  4. package/editor.component.d.ts +2 -1
  5. package/esm2020/components/color-select/color-select.component.mjs +109 -0
  6. package/{esm2015/components/column-resize/column-resize-notifier.js → esm2020/components/column-resize/column-resize-notifier.mjs} +4 -4
  7. package/{esm2015/components/column-resize/column-resize.directive.js → esm2020/components/column-resize/column-resize.directive.mjs} +4 -4
  8. package/esm2020/components/column-resize/column-resize.module.mjs +33 -0
  9. package/{esm2015/components/column-resize/event-dispatcher.js → esm2020/components/column-resize/event-dispatcher.mjs} +4 -4
  10. package/{esm2015/components/column-resize/overlay-handle.component.js → esm2020/components/column-resize/overlay-handle.component.mjs} +4 -4
  11. package/{esm2015/components/column-resize/resize-ref.js → esm2020/components/column-resize/resize-ref.mjs} +0 -0
  12. package/{esm2015/components/column-resize/resizing.store.js → esm2020/components/column-resize/resizing.store.mjs} +4 -4
  13. package/{esm2015/components/column-resize/selectors.js → esm2020/components/column-resize/selectors.mjs} +0 -0
  14. package/esm2020/components/contextmenu/contextmenu.component.mjs +61 -0
  15. package/esm2020/components/conversion-hint/conversion-hint.component.mjs +54 -0
  16. package/esm2020/components/element/element.component.mjs +23 -0
  17. package/esm2020/components/inline-toolbar/inline-toolbar.component.mjs +138 -0
  18. package/{esm2015/components/nav-split-line/nav-split-line.component.js → esm2020/components/nav-split-line/nav-split-line.component.mjs} +4 -4
  19. package/esm2020/components/table-select/table-select.component.mjs +50 -0
  20. package/esm2020/components/template/template.component.mjs +62 -0
  21. package/{esm2015/components/text/text.component.js → esm2020/components/text/text.component.mjs} +4 -4
  22. package/esm2020/components/toolbar/toolbar.component.mjs +241 -0
  23. package/esm2020/components/toolbar-dropdown/toolbar-dropdown.component.mjs +129 -0
  24. package/esm2020/components/toolbar-group/toolbar-group.component.mjs +110 -0
  25. package/esm2020/components/toolbar-item/toolbar-item.component.mjs +101 -0
  26. package/{esm2015/constants/auto-format-rules.js → esm2020/constants/auto-format-rules.mjs} +0 -0
  27. package/{esm2015/constants/code.js → esm2020/constants/code.mjs} +0 -0
  28. package/{esm2015/constants/color-select.js → esm2020/constants/color-select.mjs} +0 -0
  29. package/{esm2015/constants/default.js → esm2020/constants/default.mjs} +0 -0
  30. package/{esm2015/constants/error.js → esm2020/constants/error.mjs} +0 -0
  31. package/{esm2015/constants/index.js → esm2020/constants/index.mjs} +0 -0
  32. package/{esm2015/constants/node-types.js → esm2020/constants/node-types.mjs} +0 -0
  33. package/{esm2015/constants/selector.js → esm2020/constants/selector.mjs} +0 -0
  34. package/{esm2015/constants/toolbar.js → esm2020/constants/toolbar.mjs} +0 -0
  35. package/{esm2015/core/create-plugin.js → esm2020/core/create-plugin.mjs} +0 -0
  36. package/esm2020/core/create-toolbar.mjs +56 -0
  37. package/{esm2015/core/index.js → esm2020/core/index.mjs} +0 -0
  38. package/esm2020/core/toolbar-item/base-toolbar-item.mjs +90 -0
  39. package/{esm2015/core/utils/combine-plugins.js → esm2020/core/utils/combine-plugins.mjs} +0 -0
  40. package/{esm2015/core/utils/flatten-deep-plugins.js → esm2020/core/utils/flatten-deep-plugins.mjs} +0 -0
  41. package/esm2020/core/utils/get-plugin-options.mjs +3 -0
  42. package/{esm2015/core/utils/get-plugin.js → esm2020/core/utils/get-plugin.mjs} +0 -0
  43. package/esm2020/core/utils/get-plugins.mjs +4 -0
  44. package/{esm2015/core/utils/index.js → esm2020/core/utils/index.mjs} +0 -0
  45. package/esm2020/core/utils/merge-array.mjs +18 -0
  46. package/{esm2015/core/utils/merge-deep-plugins.js → esm2020/core/utils/merge-deep-plugins.mjs} +0 -0
  47. package/{esm2015/core/utils/merge-options.js → esm2020/core/utils/merge-options.mjs} +0 -0
  48. package/{esm2015/core/utils/nested-structure-by-key.js → esm2020/core/utils/nested-structure-by-key.mjs} +0 -0
  49. package/{esm2015/core/utils/plugins-by-key.js → esm2020/core/utils/plugins-by-key.mjs} +0 -0
  50. package/{esm2015/core/with-theia.js → esm2020/core/with-theia.mjs} +0 -0
  51. package/{esm2015/custom-types.js → esm2020/custom-types.mjs} +0 -0
  52. package/esm2020/editor.component.mjs +431 -0
  53. package/{esm2015/editor.module.js → esm2020/editor.module.mjs} +5 -6
  54. package/{esm2015/interfaces/auto-format.js → esm2020/interfaces/auto-format.mjs} +0 -0
  55. package/esm2020/interfaces/editor.mjs +25 -0
  56. package/{esm2015/interfaces/element.js → esm2020/interfaces/element.mjs} +0 -0
  57. package/{esm2015/interfaces/image.js → esm2020/interfaces/image.mjs} +0 -0
  58. package/{esm2015/interfaces/index.js → esm2020/interfaces/index.mjs} +0 -0
  59. package/{esm2015/interfaces/plugins/index.js → esm2020/interfaces/plugins/index.mjs} +0 -0
  60. package/{esm2015/interfaces/plugins/no-infer.js → esm2020/interfaces/plugins/no-infer.mjs} +0 -0
  61. package/{esm2015/interfaces/plugins/plugin-key.js → esm2020/interfaces/plugins/plugin-key.mjs} +0 -0
  62. package/{esm2015/interfaces/plugins/plugins.js → esm2020/interfaces/plugins/plugins.mjs} +0 -0
  63. package/{esm2015/interfaces/plugins/with-override.js → esm2020/interfaces/plugins/with-override.mjs} +0 -0
  64. package/{esm2015/interfaces/reset-block-type-plugin-options.js → esm2020/interfaces/reset-block-type-plugin-options.mjs} +0 -0
  65. package/{esm2015/interfaces/toolbar.js → esm2020/interfaces/toolbar.mjs} +0 -0
  66. package/{esm2015/interfaces/upload.js → esm2020/interfaces/upload.mjs} +1 -1
  67. package/{esm2015/interfaces/utility/index.js → esm2020/interfaces/utility/index.mjs} +0 -0
  68. package/{esm2015/interfaces/utility/nested-structure-by-key.js → esm2020/interfaces/utility/nested-structure-by-key.mjs} +0 -0
  69. package/{esm2015/interfaces/utility/override-by-key.js → esm2020/interfaces/utility/override-by-key.mjs} +0 -0
  70. package/{esm2015/interfaces/utility/types.js → esm2020/interfaces/utility/types.mjs} +0 -0
  71. package/{esm2015/interfaces/valid-children-types.js → esm2020/interfaces/valid-children-types.mjs} +0 -0
  72. package/{esm2015/interfaces/view-base.js → esm2020/interfaces/view-base.mjs} +4 -4
  73. package/{esm2015/pipes.js → esm2020/pipes.mjs} +7 -7
  74. package/esm2020/plugins/align/align.editor.mjs +47 -0
  75. package/{esm2015/plugins/align/align.plugin.js → esm2020/plugins/align/align.plugin.mjs} +0 -0
  76. package/esm2020/plugins/autoformat/autoformat.plugin.mjs +109 -0
  77. package/{esm2015/plugins/autoformat/transforms/auto-format-block.js → esm2020/plugins/autoformat/transforms/auto-format-block.mjs} +0 -0
  78. package/{esm2015/plugins/autoformat/transforms/auto-format-inline.js → esm2020/plugins/autoformat/transforms/auto-format-inline.mjs} +0 -0
  79. package/{esm2015/plugins/blockquote/blockquote.component.js → esm2020/plugins/blockquote/blockquote.component.mjs} +4 -4
  80. package/esm2020/plugins/blockquote/blockquote.editor.mjs +20 -0
  81. package/{esm2015/plugins/blockquote/blockquote.plugin.js → esm2020/plugins/blockquote/blockquote.plugin.mjs} +0 -0
  82. package/esm2020/plugins/code/code.component.mjs +241 -0
  83. package/{esm2015/plugins/code/code.editor.js → esm2020/plugins/code/code.editor.mjs} +0 -0
  84. package/{esm2015/plugins/code/code.plugin.js → esm2020/plugins/code/code.plugin.mjs} +0 -0
  85. package/esm2020/plugins/color/color.editor.mjs +44 -0
  86. package/{esm2015/plugins/color/color.plugin.js → esm2020/plugins/color/color.plugin.mjs} +0 -0
  87. package/esm2020/plugins/color/toolbar-item.component.mjs +123 -0
  88. package/esm2020/plugins/common/auto-insert-data..mjs +77 -0
  89. package/{esm2015/plugins/common/block-card.plugin.js → esm2020/plugins/common/block-card.plugin.mjs} +2 -2
  90. package/esm2020/plugins/common/get-fragment.plugin.mjs +24 -0
  91. package/{esm2015/plugins/common/history.plugin.js → esm2020/plugins/common/history.plugin.mjs} +0 -0
  92. package/{esm2015/plugins/common/move-selection.plugin.js → esm2020/plugins/common/move-selection.plugin.mjs} +0 -0
  93. package/{esm2015/plugins/common/remove-empty.plugin.js → esm2020/plugins/common/remove-empty.plugin.mjs} +0 -0
  94. package/{esm2015/plugins/common/remove-void.plugin.js → esm2020/plugins/common/remove-void.plugin.mjs} +0 -0
  95. package/{esm2015/plugins/common/reset-type.plugin.js → esm2020/plugins/common/reset-type.plugin.mjs} +0 -0
  96. package/{esm2015/plugins/common/transforms.plugin.js → esm2020/plugins/common/transforms.plugin.mjs} +0 -0
  97. package/{esm2015/plugins/deserializers/deserialize-html.plugin.js → esm2020/plugins/deserializers/deserialize-html.plugin.mjs} +0 -0
  98. package/{esm2015/plugins/deserializers/deserialize-md.plugin.js → esm2020/plugins/deserializers/deserialize-md.plugin.mjs} +0 -0
  99. package/esm2020/plugins/font-size/font-size.editor.mjs +98 -0
  100. package/{esm2015/plugins/heading/heading.editor.js → esm2020/plugins/heading/heading.editor.mjs} +0 -0
  101. package/{esm2015/plugins/heading/heading.plugin.js → esm2020/plugins/heading/heading.plugin.mjs} +0 -0
  102. package/{esm2015/plugins/hr/hr.component.js → esm2020/plugins/hr/hr.component.mjs} +4 -4
  103. package/{esm2015/plugins/hr/hr.editor.js → esm2020/plugins/hr/hr.editor.mjs} +0 -0
  104. package/{esm2015/plugins/hr/hr.plugin.js → esm2020/plugins/hr/hr.plugin.mjs} +0 -0
  105. package/esm2020/plugins/image/image.component.mjs +365 -0
  106. package/{esm2015/plugins/image/image.editor.js → esm2020/plugins/image/image.editor.mjs} +3 -5
  107. package/esm2020/plugins/image/image.plugin.mjs +57 -0
  108. package/esm2020/plugins/indent/indent.editor.mjs +71 -0
  109. package/esm2020/plugins/indent/indent.plugin.mjs +58 -0
  110. package/{esm2015/plugins/indent/on-keydown-indent.js → esm2020/plugins/indent/on-keydown-indent.mjs} +0 -0
  111. package/{esm2015/plugins/index.js → esm2020/plugins/index.mjs} +0 -0
  112. package/{esm2015/plugins/inline-code/inline-code.component.js → esm2020/plugins/inline-code/inline-code.component.mjs} +4 -4
  113. package/{esm2015/plugins/inline-code/inline-code.editor.js → esm2020/plugins/inline-code/inline-code.editor.mjs} +2 -3
  114. package/{esm2015/plugins/inline-code/inline-code.plugin.js → esm2020/plugins/inline-code/inline-code.plugin.mjs} +0 -0
  115. package/esm2020/plugins/link/edit/link-edit.component.mjs +105 -0
  116. package/esm2020/plugins/link/hover/link-hover.component.mjs +36 -0
  117. package/{esm2015/plugins/link/link.component.js → esm2020/plugins/link/link.component.mjs} +7 -7
  118. package/{esm2015/plugins/link/link.editor.js → esm2020/plugins/link/link.editor.mjs} +0 -0
  119. package/{esm2015/plugins/link/link.plugin.js → esm2020/plugins/link/link.plugin.mjs} +0 -0
  120. package/{esm2015/plugins/link/link.types.js → esm2020/plugins/link/link.types.mjs} +0 -0
  121. package/esm2020/plugins/list/components/bulleted-list.component.mjs +33 -0
  122. package/esm2020/plugins/list/components/list-item.component.mjs +93 -0
  123. package/esm2020/plugins/list/components/numbered-list.component.mjs +39 -0
  124. package/{esm2015/plugins/list/list.editor.js → esm2020/plugins/list/list.editor.mjs} +0 -0
  125. package/esm2020/plugins/list/list.plugin.mjs +286 -0
  126. package/{esm2015/plugins/list/normalizers/get-list-normalizer.js → esm2020/plugins/list/normalizers/get-list-normalizer.mjs} +0 -0
  127. package/esm2020/plugins/list/normalizers/normalize-list-item.mjs +18 -0
  128. package/{esm2015/plugins/list/normalizers/normalize-no.js → esm2020/plugins/list/normalizers/normalize-no.mjs} +0 -0
  129. package/{esm2015/plugins/list/on-key-down-list.js → esm2020/plugins/list/on-key-down-list.mjs} +0 -0
  130. package/{esm2015/plugins/list/queries/get-list-item-entry.js → esm2020/plugins/list/queries/get-list-item-entry.mjs} +0 -0
  131. package/{esm2015/plugins/list/queries/get-list-item-sublist.js → esm2020/plugins/list/queries/get-list-item-sublist.mjs} +0 -0
  132. package/{esm2015/plugins/list/queries/get-list-types.js → esm2020/plugins/list/queries/get-list-types.mjs} +0 -0
  133. package/{esm2015/plugins/list/queries/get-start-list-item.js → esm2020/plugins/list/queries/get-start-list-item.mjs} +0 -0
  134. package/{esm2015/plugins/list/queries/has-list-in-list-item.js → esm2020/plugins/list/queries/has-list-in-list-item.mjs} +0 -0
  135. package/{esm2015/plugins/list/queries/is-in-list.js → esm2020/plugins/list/queries/is-in-list.mjs} +0 -0
  136. package/{esm2015/plugins/list/queries/is-list-nested.js → esm2020/plugins/list/queries/is-list-nested.mjs} +0 -0
  137. package/{esm2015/plugins/list/queries/is-list.js → esm2020/plugins/list/queries/is-list.mjs} +0 -0
  138. package/{esm2015/plugins/list/queries/is-node-type-list.js → esm2020/plugins/list/queries/is-node-type-list.mjs} +0 -0
  139. package/{esm2015/plugins/list/queries/is-selection-at-list-item-start.js → esm2020/plugins/list/queries/is-selection-at-list-item-start.mjs} +0 -0
  140. package/{esm2015/plugins/list/queries/is-selection-in-same-list-item.js → esm2020/plugins/list/queries/is-selection-in-same-list-item.mjs} +0 -0
  141. package/{esm2015/plugins/list/queries/is-single-list-item.js → esm2020/plugins/list/queries/is-single-list-item.mjs} +0 -0
  142. package/{esm2015/plugins/list/transforms/insert-list-data.js → esm2020/plugins/list/transforms/insert-list-data.mjs} +0 -0
  143. package/{esm2015/plugins/list/transforms/insert-list-item.js → esm2020/plugins/list/transforms/insert-list-item.mjs} +0 -0
  144. package/{esm2015/plugins/list/transforms/move-list-item-down.js → esm2020/plugins/list/transforms/move-list-item-down.mjs} +0 -0
  145. package/{esm2015/plugins/list/transforms/move-list-item-sublist-items-to-list-item-sublist.js → esm2020/plugins/list/transforms/move-list-item-sublist-items-to-list-item-sublist.mjs} +0 -0
  146. package/{esm2015/plugins/list/transforms/move-list-item-sublist-items-to-list.js → esm2020/plugins/list/transforms/move-list-item-sublist-items-to-list.mjs} +0 -0
  147. package/{esm2015/plugins/list/transforms/move-list-item-up.js → esm2020/plugins/list/transforms/move-list-item-up.mjs} +0 -0
  148. package/{esm2015/plugins/list/transforms/unwrap-list.js → esm2020/plugins/list/transforms/unwrap-list.mjs} +0 -0
  149. package/{esm2015/plugins/list/types.js → esm2020/plugins/list/types.mjs} +0 -0
  150. package/esm2020/plugins/mark/mark.editor.mjs +28 -0
  151. package/esm2020/plugins/mark/mark.plugin.mjs +105 -0
  152. package/esm2020/plugins/node-id/node-id.plugin.mjs +78 -0
  153. package/esm2020/plugins/normalizers/insert-paragraph-nodes.mjs +28 -0
  154. package/{esm2015/plugins/normalizers/remove-empty-nodes.js → esm2020/plugins/normalizers/remove-empty-nodes.mjs} +0 -0
  155. package/esm2020/plugins/normalizers/trailing-node.plugin.mjs +33 -0
  156. package/{esm2015/plugins/paint-format/paint-format.editor.js → esm2020/plugins/paint-format/paint-format.editor.mjs} +0 -0
  157. package/{esm2015/plugins/public-api.js → esm2020/plugins/public-api.mjs} +0 -0
  158. package/esm2020/plugins/quick-insert/components/quick-insert.component.mjs +96 -0
  159. package/esm2020/plugins/quick-insert/components/quick-toolbar/quick-toolbar.component.mjs +80 -0
  160. package/{esm2015/plugins/quick-insert/quick-insert.editor.js → esm2020/plugins/quick-insert/quick-insert.editor.mjs} +0 -0
  161. package/esm2020/plugins/quick-insert/quick-insert.plugin.mjs +74 -0
  162. package/esm2020/plugins/soft-break/soft-break.plugin.mjs +36 -0
  163. package/{esm2015/plugins/soft-break/soft-break.types.js → esm2020/plugins/soft-break/soft-break.types.mjs} +0 -0
  164. package/esm2020/plugins/table/components/insert-mark/insert-mark.component.mjs +100 -0
  165. package/{esm2015/plugins/table/components/row/row.component.js → esm2020/plugins/table/components/row/row.component.mjs} +4 -4
  166. package/esm2020/plugins/table/components/table.component.mjs +461 -0
  167. package/esm2020/plugins/table/components/td/td.component.mjs +696 -0
  168. package/{esm2015/plugins/table/components/toolbar/table-options.component.js → esm2020/plugins/table/components/toolbar/table-options.component.mjs} +8 -5
  169. package/esm2020/plugins/table/components/toolbar/table-toolbar.component.mjs +159 -0
  170. package/{esm2015/plugins/table/table.editor.js → esm2020/plugins/table/table.editor.mjs} +0 -0
  171. package/esm2020/plugins/table/table.plugin.mjs +427 -0
  172. package/{esm2015/plugins/table/table.service.js → esm2020/plugins/table/table.service.mjs} +4 -4
  173. package/esm2020/plugins/table/table.store.mjs +484 -0
  174. package/{esm2015/plugins/table/table.types.js → esm2020/plugins/table/table.types.mjs} +0 -0
  175. package/esm2020/plugins/table/toolbar-item.component.mjs +85 -0
  176. package/esm2020/plugins/table/transforms/clear-cell.mjs +14 -0
  177. package/{esm2015/plugins/table/transforms/clear-table-node.js → esm2020/plugins/table/transforms/clear-table-node.mjs} +0 -0
  178. package/{esm2015/plugins/table/transforms/insert-column.js → esm2020/plugins/table/transforms/insert-column.mjs} +0 -0
  179. package/{esm2015/plugins/table/transforms/insert-row.js → esm2020/plugins/table/transforms/insert-row.mjs} +0 -0
  180. package/esm2020/plugins/table/transforms/insert-table.mjs +15 -0
  181. package/{esm2015/plugins/table/transforms/remove-column.js → esm2020/plugins/table/transforms/remove-column.mjs} +0 -0
  182. package/{esm2015/plugins/table/transforms/remove-row.js → esm2020/plugins/table/transforms/remove-row.mjs} +0 -0
  183. package/{esm2015/plugins/table/transforms/remove-table.js → esm2020/plugins/table/transforms/remove-table.mjs} +0 -0
  184. package/{esm2015/plugins/table/utils/add-columns.js → esm2020/plugins/table/utils/add-columns.mjs} +0 -0
  185. package/{esm2015/plugins/table/utils/calc-anchor-position.js → esm2020/plugins/table/utils/calc-anchor-position.mjs} +0 -0
  186. package/{esm2015/plugins/table/utils/calc-span.js → esm2020/plugins/table/utils/calc-span.mjs} +0 -0
  187. package/{esm2015/plugins/table/utils/create-cell.js → esm2020/plugins/table/utils/create-cell.mjs} +0 -0
  188. package/{esm2015/plugins/table/utils/create-row.js → esm2020/plugins/table/utils/create-row.mjs} +0 -0
  189. package/{esm2015/plugins/table/utils/create-table.js → esm2020/plugins/table/utils/create-table.mjs} +0 -0
  190. package/{esm2015/plugins/table/utils/get-base-height.js → esm2020/plugins/table/utils/get-base-height.mjs} +0 -0
  191. package/{esm2015/plugins/table/utils/get-select-cell-node.js → esm2020/plugins/table/utils/get-select-cell-node.mjs} +5 -2
  192. package/{esm2015/plugins/table/utils/index.js → esm2020/plugins/table/utils/index.mjs} +0 -0
  193. package/{esm2015/plugins/table/utils/is-range-in-table.js → esm2020/plugins/table/utils/is-range-in-table.mjs} +0 -0
  194. package/{esm2015/plugins/table/utils/is-selection-in-table.js → esm2020/plugins/table/utils/is-selection-in-table.mjs} +0 -0
  195. package/{esm2015/plugins/table/utils/is-virtual-key.js → esm2020/plugins/table/utils/is-virtual-key.mjs} +0 -0
  196. package/{esm2015/plugins/table/utils/merge-cell.js → esm2020/plugins/table/utils/merge-cell.mjs} +0 -0
  197. package/{esm2015/plugins/table/utils/next-path.js → esm2020/plugins/table/utils/next-path.mjs} +0 -0
  198. package/{esm2015/plugins/table/utils/normalize-table.js → esm2020/plugins/table/utils/normalize-table.mjs} +0 -0
  199. package/{esm2015/plugins/table/utils/remove-columns.js → esm2020/plugins/table/utils/remove-columns.mjs} +0 -0
  200. package/{esm2015/plugins/table/utils/set-menu-cell-invisibility.js → esm2020/plugins/table/utils/set-menu-cell-invisibility.mjs} +0 -0
  201. package/{esm2015/plugins/table/utils/split-cell.js → esm2020/plugins/table/utils/split-cell.mjs} +0 -0
  202. package/{esm2015/plugins/table/utils/table-position.js → esm2020/plugins/table/utils/table-position.mjs} +0 -0
  203. package/esm2020/plugins/todo-item/todo-item.component.mjs +64 -0
  204. package/{esm2015/plugins/todo-item/todo-item.editor.js → esm2020/plugins/todo-item/todo-item.editor.mjs} +0 -0
  205. package/{esm2015/plugins/todo-item/todo-item.plugin.js → esm2020/plugins/todo-item/todo-item.plugin.mjs} +0 -0
  206. package/esm2020/plugins/vertical-align/toolbar-item.component.mjs +83 -0
  207. package/{esm2015/plugins/vertical-align/vertical-align.editor.js → esm2020/plugins/vertical-align/vertical-align.editor.mjs} +0 -0
  208. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  209. package/{esm2015/queries/anchor-block-entry.js → esm2020/queries/anchor-block-entry.mjs} +0 -0
  210. package/{esm2015/queries/anchor-block.js → esm2020/queries/anchor-block.mjs} +0 -0
  211. package/{esm2015/queries/anchor-inline-entry.js → esm2020/queries/anchor-inline-entry.mjs} +0 -0
  212. package/{esm2015/queries/find-descendant.js → esm2020/queries/find-descendant.mjs} +0 -0
  213. package/{esm2015/queries/find-node.js → esm2020/queries/find-node.mjs} +0 -0
  214. package/{esm2015/queries/find-path.js → esm2020/queries/find-path.mjs} +0 -0
  215. package/esm2020/queries/get-above-by-type.mjs +14 -0
  216. package/{esm2015/queries/get-above.js → esm2020/queries/get-above.mjs} +0 -0
  217. package/{esm2015/queries/get-anchor-block-entry.js → esm2020/queries/get-anchor-block-entry.mjs} +0 -0
  218. package/esm2020/queries/get-block-above.mjs +10 -0
  219. package/esm2020/queries/get-block-card-above.mjs +10 -0
  220. package/{esm2015/queries/get-block-card-cursor.js → esm2020/queries/get-block-card-cursor.mjs} +0 -0
  221. package/{esm2015/queries/get-container-blocks.js → esm2020/queries/get-container-blocks.mjs} +0 -0
  222. package/{esm2015/queries/get-directly-parent.js → esm2020/queries/get-directly-parent.mjs} +0 -0
  223. package/{esm2015/queries/get-insert-elements-path.js → esm2020/queries/get-insert-elements-path.mjs} +0 -0
  224. package/{esm2015/queries/get-last-child-path.js → esm2020/queries/get-last-child-path.mjs} +0 -0
  225. package/{esm2015/queries/get-last-node.js → esm2020/queries/get-last-node.mjs} +0 -0
  226. package/{esm2015/queries/get-next-sibling-nodes.js → esm2020/queries/get-next-sibling-nodes.mjs} +0 -0
  227. package/{esm2015/queries/get-node.js → esm2020/queries/get-node.mjs} +0 -0
  228. package/esm2020/queries/get-nodes-by-type.mjs +15 -0
  229. package/{esm2015/queries/get-nodes.js → esm2020/queries/get-nodes.mjs} +0 -0
  230. package/{esm2015/queries/get-parent.js → esm2020/queries/get-parent.mjs} +0 -0
  231. package/esm2020/queries/get-plain-text.mjs +16 -0
  232. package/{esm2015/queries/get-plugin-by-toolbar.js → esm2020/queries/get-plugin-by-toolbar.mjs} +0 -0
  233. package/{esm2015/queries/get-point-before.js → esm2020/queries/get-point-before.mjs} +0 -0
  234. package/{esm2015/queries/get-point-from-location.js → esm2020/queries/get-point-from-location.mjs} +0 -0
  235. package/{esm2015/queries/get-previous-path.js → esm2020/queries/get-previous-path.mjs} +0 -0
  236. package/{esm2015/queries/get-rang-from-block-start.js → esm2020/queries/get-rang-from-block-start.mjs} +0 -0
  237. package/{esm2015/queries/get-range-before.js → esm2020/queries/get-range-before.mjs} +0 -0
  238. package/esm2020/queries/get-selection-marks.mjs +18 -0
  239. package/{esm2015/queries/get-selection-nodes-by-type.js → esm2020/queries/get-selection-nodes-by-type.mjs} +0 -0
  240. package/{esm2015/queries/get-text.js → esm2020/queries/get-text.mjs} +0 -0
  241. package/esm2020/queries/get-toolbar-disabled.mjs +13 -0
  242. package/esm2020/queries/index.mjs +59 -0
  243. package/{esm2015/queries/is-across-blocks.js → esm2020/queries/is-across-blocks.mjs} +0 -0
  244. package/{esm2015/queries/is-ancestor-empty.js → esm2020/queries/is-ancestor-empty.mjs} +0 -0
  245. package/{esm2015/queries/is-ancestor.js → esm2020/queries/is-ancestor.mjs} +0 -0
  246. package/{esm2015/queries/is-block-above-empty.js → esm2020/queries/is-block-above-empty.mjs} +0 -0
  247. package/{esm2015/queries/is-block-active.js → esm2020/queries/is-block-active.mjs} +0 -0
  248. package/{esm2015/queries/is-block-card-cursor.js → esm2020/queries/is-block-card-cursor.mjs} +0 -0
  249. package/{esm2015/queries/is-block-text-empty-after-selection.js → esm2020/queries/is-block-text-empty-after-selection.mjs} +0 -0
  250. package/{esm2015/queries/is-collapsed.js → esm2020/queries/is-collapsed.mjs} +0 -0
  251. package/{esm2015/queries/is-contain-nested-type.js → esm2020/queries/is-contain-nested-type.mjs} +0 -0
  252. package/{esm2015/queries/is-container-type.js → esm2020/queries/is-container-type.mjs} +0 -0
  253. package/{esm2015/queries/is-descendant.js → esm2020/queries/is-descendant.mjs} +0 -0
  254. package/esm2020/queries/is-empty-content.mjs +15 -0
  255. package/{esm2015/queries/is-empty-paragraph-by-path.js → esm2020/queries/is-empty-paragraph-by-path.mjs} +0 -0
  256. package/{esm2015/queries/is-empty-paragraph.js → esm2020/queries/is-empty-paragraph.mjs} +0 -0
  257. package/{esm2015/queries/is-first-child.js → esm2020/queries/is-first-child.mjs} +0 -0
  258. package/{esm2015/queries/is-include-types.js → esm2020/queries/is-include-types.mjs} +0 -0
  259. package/{esm2015/queries/is-node-type-in.js → esm2020/queries/is-node-type-in.mjs} +0 -0
  260. package/{esm2015/queries/is-node-type.js → esm2020/queries/is-node-type.mjs} +0 -0
  261. package/{esm2015/queries/is-paragraph.js → esm2020/queries/is-paragraph.mjs} +0 -0
  262. package/{esm2015/queries/is-point-at-root.js → esm2020/queries/is-point-at-root.mjs} +0 -0
  263. package/esm2020/queries/is-range-across-blocks.mjs +22 -0
  264. package/{esm2015/queries/is-range-at-root.js → esm2020/queries/is-range-at-root.mjs} +0 -0
  265. package/{esm2015/queries/is-start.js → esm2020/queries/is-start.mjs} +0 -0
  266. package/{esm2015/queries/some-node.js → esm2020/queries/some-node.mjs} +0 -0
  267. package/{esm2015/services/color-select.service.js → esm2020/services/color-select.service.mjs} +4 -4
  268. package/esm2020/services/context.service.mjs +59 -0
  269. package/{esm2015/services/table-contextmenu.service.js → esm2020/services/table-contextmenu.service.mjs} +4 -4
  270. package/esm2020/services/toolbar.service.mjs +48 -0
  271. package/{esm2015/shortcuts/index.js → esm2020/shortcuts/index.mjs} +0 -0
  272. package/{esm2015/shortcuts/mark.js → esm2020/shortcuts/mark.mjs} +0 -0
  273. package/{esm2015/transforms/apply-deep-to-nodes.js → esm2020/transforms/apply-deep-to-nodes.mjs} +0 -0
  274. package/{esm2015/transforms/clear-marks.js → esm2020/transforms/clear-marks.mjs} +0 -0
  275. package/{esm2015/transforms/close-conversion-hint.js → esm2020/transforms/close-conversion-hint.mjs} +0 -0
  276. package/{esm2015/transforms/delete-element.js → esm2020/transforms/delete-element.mjs} +0 -0
  277. package/{esm2015/transforms/handle-continual-delete-backward.js → esm2020/transforms/handle-continual-delete-backward.mjs} +0 -0
  278. package/{esm2015/transforms/handle-continual-insert-break.js → esm2020/transforms/handle-continual-insert-break.mjs} +0 -0
  279. package/{esm2015/transforms/index.js → esm2020/transforms/index.mjs} +0 -0
  280. package/esm2020/transforms/insert-elements.mjs +34 -0
  281. package/{esm2015/transforms/insert-paragraph.js → esm2020/transforms/insert-paragraph.mjs} +0 -0
  282. package/esm2020/transforms/merge-deep-to-nodes.mjs +9 -0
  283. package/{esm2015/transforms/move-children.js → esm2020/transforms/move-children.mjs} +0 -0
  284. package/{esm2015/transforms/on-keydown-reset-block-type.js → esm2020/transforms/on-keydown-reset-block-type.mjs} +0 -0
  285. package/{esm2015/transforms/set-end-selection.js → esm2020/transforms/set-end-selection.mjs} +0 -0
  286. package/{esm2015/transforms/set-marks.js → esm2020/transforms/set-marks.mjs} +0 -0
  287. package/{esm2015/transforms/set-node.js → esm2020/transforms/set-node.mjs} +0 -0
  288. package/{esm2015/transforms/split-node.js → esm2020/transforms/split-node.mjs} +0 -0
  289. package/{esm2015/transforms/un-hang-range.js → esm2020/transforms/un-hang-range.mjs} +0 -0
  290. package/{esm2015/transforms/un-wrap.js → esm2020/transforms/un-wrap.mjs} +0 -0
  291. package/esm2020/transforms/unwrap-nodes-by-type.mjs +14 -0
  292. package/{esm2015/utils/auto-focus.js → esm2020/utils/auto-focus.mjs} +0 -0
  293. package/{esm2015/utils/auto-scroll-view.js → esm2020/utils/auto-scroll-view.mjs} +0 -0
  294. package/{esm2015/utils/cast-array.js → esm2020/utils/cast-array.mjs} +0 -0
  295. package/{esm2015/utils/common.js → esm2020/utils/common.mjs} +0 -0
  296. package/{esm2015/utils/create-empty-paragraph.js → esm2020/utils/create-empty-paragraph.mjs} +0 -0
  297. package/{esm2015/utils/data-transform.js → esm2020/utils/data-transform.mjs} +0 -0
  298. package/{esm2015/utils/dom.js → esm2020/utils/dom.mjs} +0 -0
  299. package/{esm2015/utils/editor-uuid.js → esm2020/utils/editor-uuid.mjs} +0 -0
  300. package/{esm2015/utils/fragment.js → esm2020/utils/fragment.mjs} +0 -0
  301. package/{esm2015/utils/get-editable-element-height.js → esm2020/utils/get-editable-element-height.mjs} +0 -0
  302. package/{esm2015/utils/get-toolbar-class.js → esm2020/utils/get-toolbar-class.mjs} +0 -0
  303. package/{esm2015/utils/id-creator.js → esm2020/utils/id-creator.mjs} +0 -0
  304. package/{esm2015/utils/index.js → esm2020/utils/index.mjs} +0 -0
  305. package/{esm2015/utils/is-clean-empty-paragraph.js → esm2020/utils/is-clean-empty-paragraph.mjs} +0 -0
  306. package/esm2020/utils/is-inline.mjs +9 -0
  307. package/{esm2015/utils/lodash.js → esm2020/utils/lodash.mjs} +0 -0
  308. package/esm2020/utils/match.mjs +32 -0
  309. package/{esm2015/utils/merge-element-options.js → esm2020/utils/merge-element-options.mjs} +0 -0
  310. package/{esm2015/utils/weak-maps.js → esm2020/utils/weak-maps.mjs} +0 -0
  311. package/{esm2015/worktile-theia.js → esm2020/worktile-theia.mjs} +0 -0
  312. package/fesm2015/{worktile-theia.js → worktile-theia.mjs} +289 -332
  313. package/fesm2015/worktile-theia.mjs.map +1 -0
  314. package/fesm2020/worktile-theia.mjs +13739 -0
  315. package/fesm2020/worktile-theia.mjs.map +1 -0
  316. package/interfaces/editor.d.ts +3 -3
  317. package/interfaces/upload.d.ts +1 -1
  318. package/package.json +19 -6
  319. package/plugins/image/image.component.d.ts +4 -1
  320. package/queries/index.d.ts +2 -1
  321. package/queries/is-empty-content.d.ts +2 -0
  322. package/services/context.service.d.ts +8 -4
  323. package/bundles/worktile-theia.umd.js +0 -14888
  324. package/bundles/worktile-theia.umd.js.map +0 -1
  325. package/esm2015/components/color-select/color-select.component.js +0 -113
  326. package/esm2015/components/column-resize/column-resize.module.js +0 -34
  327. package/esm2015/components/contextmenu/contextmenu.component.js +0 -64
  328. package/esm2015/components/conversion-hint/conversion-hint.component.js +0 -59
  329. package/esm2015/components/element/element.component.js +0 -24
  330. package/esm2015/components/inline-toolbar/inline-toolbar.component.js +0 -139
  331. package/esm2015/components/table-select/table-select.component.js +0 -53
  332. package/esm2015/components/template/template.component.js +0 -66
  333. package/esm2015/components/toolbar/toolbar.component.js +0 -250
  334. package/esm2015/components/toolbar-dropdown/toolbar-dropdown.component.js +0 -133
  335. package/esm2015/components/toolbar-group/toolbar-group.component.js +0 -116
  336. package/esm2015/components/toolbar-item/toolbar-item.component.js +0 -105
  337. package/esm2015/core/create-toolbar.js +0 -57
  338. package/esm2015/core/toolbar-item/base-toolbar-item.js +0 -92
  339. package/esm2015/core/utils/get-plugin-options.js +0 -3
  340. package/esm2015/core/utils/get-plugins.js +0 -5
  341. package/esm2015/core/utils/merge-array.js +0 -18
  342. package/esm2015/editor.component.js +0 -427
  343. package/esm2015/interfaces/editor.js +0 -23
  344. package/esm2015/plugins/align/align.editor.js +0 -48
  345. package/esm2015/plugins/autoformat/autoformat.plugin.js +0 -110
  346. package/esm2015/plugins/blockquote/blockquote.editor.js +0 -21
  347. package/esm2015/plugins/code/code.component.js +0 -245
  348. package/esm2015/plugins/color/color.editor.js +0 -45
  349. package/esm2015/plugins/color/toolbar-item.component.js +0 -124
  350. package/esm2015/plugins/common/auto-insert-data..js +0 -78
  351. package/esm2015/plugins/common/get-fragment.plugin.js +0 -25
  352. package/esm2015/plugins/font-size/font-size.editor.js +0 -98
  353. package/esm2015/plugins/image/image.component.js +0 -366
  354. package/esm2015/plugins/image/image.plugin.js +0 -58
  355. package/esm2015/plugins/indent/indent.editor.js +0 -73
  356. package/esm2015/plugins/indent/indent.plugin.js +0 -60
  357. package/esm2015/plugins/link/edit/link-edit.component.js +0 -108
  358. package/esm2015/plugins/link/hover/link-hover.component.js +0 -39
  359. package/esm2015/plugins/list/components/bulleted-list.component.js +0 -34
  360. package/esm2015/plugins/list/components/list-item.component.js +0 -95
  361. package/esm2015/plugins/list/components/numbered-list.component.js +0 -40
  362. package/esm2015/plugins/list/list.plugin.js +0 -281
  363. package/esm2015/plugins/list/normalizers/normalize-list-item.js +0 -19
  364. package/esm2015/plugins/mark/mark.editor.js +0 -29
  365. package/esm2015/plugins/mark/mark.plugin.js +0 -102
  366. package/esm2015/plugins/node-id/node-id.plugin.js +0 -69
  367. package/esm2015/plugins/normalizers/insert-paragraph-nodes.js +0 -29
  368. package/esm2015/plugins/normalizers/trailing-node.plugin.js +0 -34
  369. package/esm2015/plugins/quick-insert/components/quick-insert.component.js +0 -102
  370. package/esm2015/plugins/quick-insert/components/quick-toolbar/quick-toolbar.component.js +0 -84
  371. package/esm2015/plugins/quick-insert/quick-insert.plugin.js +0 -75
  372. package/esm2015/plugins/soft-break/soft-break.plugin.js +0 -37
  373. package/esm2015/plugins/table/components/insert-mark/insert-mark.component.js +0 -103
  374. package/esm2015/plugins/table/components/table.component.js +0 -470
  375. package/esm2015/plugins/table/components/td/td.component.js +0 -698
  376. package/esm2015/plugins/table/components/toolbar/table-toolbar.component.js +0 -162
  377. package/esm2015/plugins/table/table.plugin.js +0 -424
  378. package/esm2015/plugins/table/table.store.js +0 -480
  379. package/esm2015/plugins/table/toolbar-item.component.js +0 -86
  380. package/esm2015/plugins/table/transforms/clear-cell.js +0 -11
  381. package/esm2015/plugins/table/transforms/insert-table.js +0 -15
  382. package/esm2015/plugins/todo-item/todo-item.component.js +0 -66
  383. package/esm2015/plugins/vertical-align/toolbar-item.component.js +0 -90
  384. package/esm2015/queries/get-above-by-type.js +0 -11
  385. package/esm2015/queries/get-block-above.js +0 -7
  386. package/esm2015/queries/get-block-card-above.js +0 -7
  387. package/esm2015/queries/get-nodes-by-type.js +0 -12
  388. package/esm2015/queries/get-plain-text.js +0 -16
  389. package/esm2015/queries/get-selection-marks.js +0 -19
  390. package/esm2015/queries/get-toolbar-disabled.js +0 -14
  391. package/esm2015/queries/index.js +0 -58
  392. package/esm2015/queries/is-range-across-blocks.js +0 -18
  393. package/esm2015/services/context.service.js +0 -59
  394. package/esm2015/services/toolbar.service.js +0 -48
  395. package/esm2015/transforms/insert-elements.js +0 -35
  396. package/esm2015/transforms/merge-deep-to-nodes.js +0 -9
  397. package/esm2015/transforms/unwrap-nodes-by-type.js +0 -11
  398. package/esm2015/utils/is-inline.js +0 -10
  399. package/esm2015/utils/match.js +0 -29
  400. package/fesm2015/worktile-theia.js.map +0 -1
@@ -261,7 +261,7 @@ export const withBlockCard = (editor) => {
261
261
  };
262
262
  editor.insertText = (text) => {
263
263
  const domSelection = window.getSelection();
264
- const anchorNode = domSelection === null || domSelection === void 0 ? void 0 : domSelection.anchorNode;
264
+ const anchorNode = domSelection?.anchorNode;
265
265
  if (AngularEditor.isBlockCardLeftCursor(editor) || AngularEditor.isBlockCardRightCursor(editor)) {
266
266
  const isLeftCursor = isCardLeft(anchorNode);
267
267
  const cardEntry = AngularEditor.toSlateCardEntry(editor, anchorNode);
@@ -284,4 +284,4 @@ export const createBlockCardPlugin = createPluginFactory({
284
284
  key: PluginKeys.blockCard,
285
285
  withOverrides: withBlockCard
286
286
  });
287
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stY2FyZC5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9jb21tb24vYmxvY2stY2FyZC5wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLDRCQUE0QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDakQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BFLE9BQU8sS0FBSyxhQUFhLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxLQUFLLFVBQVUsTUFBTSxlQUFlLENBQUM7QUFFNUMsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQW1CLE1BQVMsRUFBSyxFQUFFO0lBQzVELE1BQU0sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUVqRyxNQUFNLENBQUMsV0FBVyxHQUFHLEdBQUcsRUFBRTtRQUN0QixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDM0MsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQztRQUMzQyxJQUFJLFlBQVksSUFBSSxZ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Q0FBQztZQUM1QyxNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ3JFLE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQyxJQUFJLFlBQVksRUFBRTtnQkFDZCxlQUFlLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDO2dCQUN4QyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQzthQUM3QztpQkFBTTtnQkFDSCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUMzQyxlQUFlLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUNsQyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQzthQUN2QztTQUNKO1FBQ0QsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JCLENBQUMsQ0FBQztJQUVGLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLG1CQUFtQixDQUFDO0lBQ3JELEdBQUcsRUFBRSxVQUFVLENBQUMsU0FBUztJQUN6QixhQUFhLEVBQUUsYUFBYTtDQUMvQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFZGl0b3IsIE5vZGUsIFJhbmdlLCBQYXRoLCBUcmFuc2Zvcm1zIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgSGlzdG9yeUVkaXRvciB9IGZyb20gJ3NsYXRlLWhpc3RvcnknO1xuaW1wb3J0IHsgQW5ndWxhckVkaXRvciwgaG90a2V5cywgaGFzQmxvY2tDYXJkLCBpc0NhcmRMZWZ0LCBGQUtFX1JJR0hUX0JMT0NLX0NBUkRfT0ZGU0VUIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBQbHVnaW5LZXlzIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBjcmVhdGVQbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBjcmVhdGVFbXB0eVBhcmFncmFwaCB9IGZyb20gJy4uLy4uL3V0aWxzL2NyZWF0ZS1lbXB0eS1wYXJhZ3JhcGgnO1xuaW1wb3J0IHsgaW5zZXJ0UGFyYWdyYXBoIH0gZnJvbSAnLi4vLi4vdHJhbnNmb3Jtcy9pbnNlcnQtcGFyYWdyYXBoJztcbmltcG9ydCAqIGFzIFRoZVRyYW5zZm9ybXMgZnJvbSAnLi4vLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgKiBhcyBUaGVRdWVyaWVzIGZyb20gJy4uLy4uL3F1ZXJpZXMnO1xuXG5leHBvcnQgY29uc3Qgd2l0aEJsb2NrQ2FyZCA9IDxUIGV4dGVuZHMgRWRpdG9yPihlZGl0b3I6IFQpOiBUID0+IHtcbiAgICBjb25zdCB7IGluc2VydEJyZWFrLCBkZWxldGVCYWNrd2FyZCwgb25LZXlkb3duLCBkZWxldGVGb3J3YXJkLCBpbnNlcnREYXRhLCBpbnNlcnRUZXh0IH0gPSBlZGl0b3I7XG5cbiAgICBlZGl0b3IuaW5zZXJ0QnJlYWsgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGRvbVNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgY29uc3QgYW5jaG9yTm9kZSA9IGRvbVNlbGVjdGlvbi5hbmNob3JOb2RlO1xuICAgICAgICBpZiAoZG9tU2VsZWN0aW9uICYmIGRvbVNlbGVjdGlvbi5pc0NvbGxhcHNlZCAmJiBoYXNCbG9ja0NhcmQoZG9tU2VsZWN0aW9uKSkge1xuICAgICAgICAgICAgY29uc3QgaXNMZWZ0Q3Vyc29yID0gaXNDYXJkTGVmdChhbmNob3JOb2RlKTtcbiAgICAgICAgICAgIGNvbnN0IGNhcmRFbnRyeSA9IEFuZ3VsYXJFZGl0b3IudG9TbGF0ZUNhcmRFbnRyeShlZGl0b3IsIGFuY2hvck5vZGUpO1xuICAgICAgICAgICAgY29uc3QgY3Vyc29yUm9vdFBhdGggPSBjYXJkRW50cnlbMV07XG4gICAgICAgICAgICBUaGVUcmFuc2Zvcm1zLmluc2VydFBhcmFncmFwaChlZGl0b3IsIGlzTGVmdEN1cnNvciA/IGN1cnNvclJvb3RQYXRoIDogUGF0aC5uZXh0KGN1cnNvclJvb3RQYXRoKSk7XG4gICAgICAgICAgICBpZiAoIWlzTGVmdEN1cnNvcikge1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2VsZWN0KGVkaXRvciwgUGF0aC5uZXh0KGN1cnNvclJvb3RQYXRoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaW5zZXJ0QnJlYWsoKTtcbiAgICB9O1xuXG4gICAgZWRpdG9yLmRlbGV0ZUJhY2t3YXJkID0gdW5pdCA9PiB7XG4gICAgICAgIGNvbnN0IGRvbVNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgY29uc3QgYW5jaG9yTm9kZSA9IGRvbVNlbGVjdGlvbi5hbmNob3JOb2RlO1xuICAgICAgICBpZiAoZG9tU2VsZWN0aW9uICYmIGRvbVNlbGVjdGlvbi5pc0NvbGxhcHNlZCAmJiBoYXNCbG9ja0NhcmQoZG9tU2VsZWN0aW9uKSkge1xuICAgICAgICAgICAgY29uc3QgaXNMZWZ0Q3Vyc29yID0gaXNDYXJkTGVmdChhbmNob3JOb2RlKTtcbiAgICAgICAgICAgIGNvbnN0IGNhcmRFbnRyeSA9IEFuZ3VsYXJFZGl0b3IudG9TbGF0ZUNhcmRFbnRyeShlZGl0b3IsIGFuY2hvck5vZGUpO1xuICAgICAgICAgICAgY29uc3QgY3Vyc29yUm9vdFBhdGggPSBjYXJkRW50cnlbMV07XG4gICAgICAgICAgICBpZiAoaXNMZWZ0Q3Vyc29yKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNQYXRoID0gUGF0aC5oYXNQcmV2aW91cyhjdXJzb3JSb290UGF0aCkgJiYgUGF0aC5wcmV2aW91cyhjdXJzb3JSb290UGF0aCk7XG4gICAgICAgICAgICAgICAgaWYgKCFwcmV2aW91c1BhdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNQYXRoICYmIFRoZVF1ZXJpZXMuaXNFbXB0eVBhcmFncmFwaEJ5UGF0aChlZGl0b3IsIHByZXZpb3VzUGF0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5yZW1vdmVOb2RlcyhlZGl0b3IsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0OiBwcmV2aW91c1BhdGhcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgSGlzdG9yeUVkaXRvci53aXRob3V0TWVyZ2luZyhlZGl0b3IsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QoZWRpdG9yLCBFZGl0b3IuZW5kKGVkaXRvciwgcHJldmlvdXNQYXRoKSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBUaGVUcmFuc2Zvcm1zLmluc2VydFBhcmFncmFwaChlZGl0b3IsIGN1cnNvclJvb3RQYXRoKTtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdChlZGl0b3IsIGN1cnNvclJvb3RQYXRoKTtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnJlbW92ZU5vZGVzKGVkaXRvciwgeyBhdDogUGF0aC5uZXh0KGN1cnNvclJvb3RQYXRoKSB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBibG9ja0NhcmQgPSBUaGVRdWVyaWVzLmdldEJsb2NrQ2FyZEFib3ZlKGVkaXRvcik7XG4gICAgICAgIGNvbnN0IGJlZm9yZVBvaW50ID0gRWRpdG9yLmJlZm9yZShlZGl0b3IsIGVkaXRvci5zZWxlY3Rpb24uYW5jaG9yKTtcbiAgICAgICAgY29uc3QgYmVmb3JlQmxvY2tDYXJkID0gVGhlUXVlcmllcy5nZXRCbG9ja0NhcmRBYm92ZShlZGl0b3IsIHsgYXQ6IGJlZm9yZVBvaW50IH0pO1xuICAgICAgICBpZiAoIWJsb2NrQ2FyZCAmJiBiZWZvcmVCbG9ja0NhcmQpIHtcbiAgICAgICAgICAgIGlmIChUaGVRdWVyaWVzLmlzQmxvY2tBYm92ZUVtcHR5KGVkaXRvcikpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBbbm9kZSwgcGF0aF0gPSBFZGl0b3IucGFyZW50KGVkaXRvciwgZWRpdG9yLnNlbGVjdGlvbi5hbmNob3IucGF0aCk7XG4gICAgICAgICAgICAgICAgSGlzdG9yeUVkaXRvci53aXRob3V0TWVyZ2luZyhlZGl0b3IsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmlnaHRDdXJzb3IgPSB7IHBhdGg6IGJlZm9yZUJsb2NrQ2FyZFsxXSwgb2Zmc2V0OiBGQUtFX1JJR0hUX0JMT0NLX0NBUkRfT0ZGU0VUIH07XG4gICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2VsZWN0KGVkaXRvciwgeyBhbmNob3I6IHJpZ2h0Q3Vyc29yLCBmb2N1czogcmlnaHRDdXJzb3IgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5kZWxldGUoZWRpdG9yLCB7IGF0OiBwYXRoIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5kZWxldGUoZWRpdG9yLCB7IGF0OiBiZWZvcmVCbG9ja0NhcmRbMV0gfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBkZWxldGVCYWNrd2FyZCh1bml0KTtcbiAgICB9O1xuXG4gICAgZWRpdG9yLmRlbGV0ZUZvcndhcmQgPSB1bml0ID0+IHtcbiAgICAgICAgY29uc3QgZG9tU2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgICAgICBjb25zdCBhbmNob3JOb2RlID0gZG9tU2VsZWN0aW9uLmFuY2hvck5vZGU7XG4gICAgICAgIGlmIChkb21TZWxlY3Rpb24gJiYgZG9tU2VsZWN0aW9uLmlzQ29sbGFwc2VkICYmIGhhc0Jsb2NrQ2FyZChkb21TZWxlY3Rpb24pKSB7XG4gICAgICAgICAgICBjb25zdCBpc0xlZnRDdXJzb3IgPSBpc0NhcmRMZWZ0KGFuY2hvck5vZGUpO1xuICAgICAgICAgICAgY29uc3QgY2FyZEVudHJ5ID0gQW5ndWxhckVkaXRvci50b1NsYXRlQ2FyZEVudHJ5KGVkaXRvciwgYW5jaG9yTm9kZSk7XG4gICAgICAgICAgICBjb25zdCBjdXJzb3JSb290UGF0aCA9IGNhcmRFbnRyeVsxXTtcbiAgICAgICAgICAgIGlmIChpc0xlZnRDdXJzb3IpIHtcbiAgICAgICAgICAgICAgICBUaGVUcmFuc2Zvcm1zLmluc2VydFBhcmFncmFwaChlZGl0b3IsIGN1cnNvclJvb3RQYXRoKTtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdChlZGl0b3IsIGN1cnNvclJvb3RQYXRoKTtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnJlbW92ZU5vZGVzKGVkaXRvciwgeyBhdDogUGF0aC5uZXh0KGN1cnNvclJvb3RQYXRoKSB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5leHRQYXRoID0gUGF0aC5uZXh0KGN1cnNvclJvb3RQYXRoKTtcbiAgICAgICAgICAgICAgICBIaXN0b3J5RWRpdG9yLndpdGhvdXRNZXJnaW5nKGVkaXRvciwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdChlZGl0b3IsIEVkaXRvci5zdGFydChlZGl0b3IsIG5leHRQYXRoKSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYmxvY2tDYXJkID0gVGhlUXVlcmllcy5nZXRCbG9ja0NhcmRBYm92ZShlZGl0b3IpO1xuICAgICAgICBjb25zdCBhZnRlclBvaW50ID0gRWRpdG9yLmFmdGVyKGVkaXRvciwgZWRpdG9yLnNlbGVjdGlvbi5hbmNob3IpO1xuICAgICAgICBjb25zdCBhZnRlckJsb2NrQ2FyZCA9IFRoZVF1ZXJpZXMuZ2V0QmxvY2tDYXJkQWJvdmUoZWRpdG9yLCB7IGF0OiBhZnRlclBvaW50IH0pO1xuICAgICAgICBpZiAoIWJsb2NrQ2FyZCAmJiBhZnRlckJsb2NrQ2FyZCkge1xuICAgICAgICAgICAgaWYgKFRoZVF1ZXJpZXMuaXNCbG9ja0Fib3ZlRW1wdHkoZWRpdG9yKSkge1xuICAgICAgICAgICAgICAgIEhpc3RvcnlFZGl0b3Iud2l0aG91dE1lcmdpbmcoZWRpdG9yLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxlZnRDdXJzb3IgPSB7IHBhdGg6IGFmdGVyQmxvY2tDYXJkWzFdLCBvZmZzZXQ6IC0xIH07XG4gICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2VsZWN0KGVkaXRvciwgeyBhbmNob3I6IGxlZnRDdXJzb3IsIGZvY3VzOiBsZWZ0Q3Vyc29yIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuZGVsZXRlKGVkaXRvciwgeyBhdDogUGF0aC5wcmV2aW91cyhhZnRlckJsb2NrQ2FyZFsxXSkgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVsZXRlRm9yd2FyZCh1bml0KTtcbiAgICB9O1xuXG4gICAgZWRpdG9yLm9uS2V5ZG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBkb21TZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgIGNvbnN0IGFuY2hvck5vZGUgPSBkb21TZWxlY3Rpb24uYW5jaG9yTm9kZTtcbiAgICAgICAgY29uc3QgbmF0aXZlRXZlbnQgPSBldmVudDtcbiAgICAgICAgY29uc3QgeyBzZWxlY3Rpb24gfSA9IGVkaXRvcjtcblxuICAgICAgICBjb25zdCBpc01vdmVCYWNrd2FyZCA9IGhvdGtleXMuaXNNb3ZlQmFja3dhcmQobmF0aXZlRXZlbnQpO1xuICAgICAgICBjb25zdCBpc01vdmVGb3J3YXJkID0gaG90a2V5cy5pc01vdmVGb3J3YXJkKG5hdGl2ZUV2ZW50KTtcbiAgICAgICAgY29uc3QgaXNNb3ZlVXAgPSBob3RrZXlzLmlzTW92ZVVwKG5hdGl2ZUV2ZW50KTtcbiAgICAgICAgY29uc3QgaXNNb3ZlRG93biA9IGhvdGtleXMuaXNNb3ZlRG93bihuYXRpdmVFdmVudCk7XG4gICAgICAgIGNvbnN0IGlzQ29sbGFwc2VkID0gc2VsZWN0aW9uICYmIFJhbmdlLmlzQ29sbGFwc2VkKHNlbGVjdGlvbik7XG4gICAgICAgIGNvbnN0IGFuY2hvckVudHJ5ID0gVGhlUXVlcmllcy5hbmNob3JCbG9ja0VudHJ5KGVkaXRvcik7XG5cbiAgICAgICAgLy8gYmxvY2sgY2FyZCBjdXJzb3JcbiAgICAgICAgaWYgKGFuY2hvck5vZGUgJiYgaGFzQmxvY2tDYXJkKGRvbVNlbGVjdGlvbikpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzQ2FyZExlZnRDdXJzb3IgPSBpc0NhcmRMZWZ0KGFuY2hvck5vZGUpO1xuICAgICAgICAgICAgaWYgKGlzTW92ZVVwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgWywgcGF0aF0gPSBBbmd1bGFyRWRpdG9yLnRvU2xhdGVDYXJkRW50cnkoZWRpdG9yLCBhbmNob3JOb2RlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1BhdGggPSBQYXRoLmhhc1ByZXZpb3VzKHBhdGgpICYmIFBhdGgucHJldmlvdXMocGF0aCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNOb2RlID0gcHJldmlvdXNQYXRoICYmIFRoZVF1ZXJpZXMuZ2V0Tm9kZShlZGl0b3IsIHByZXZpb3VzUGF0aCk7XG4gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzTm9kZSAmJiBlZGl0b3IuaXNCbG9ja0NhcmQocHJldmlvdXNOb2RlKSkge1xuICAgICAgICAgICAgICAgICAgICBBbmd1bGFyRWRpdG9yLm1vdmVCbG9ja0NhcmQoZWRpdG9yLCBwcmV2aW91c05vZGUsIHsgZGlyZWN0aW9uOiBpc0NhcmRMZWZ0Q3Vyc29yID8gJ2xlZnQnIDogJ3JpZ2h0JyB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBiZWZvcmUgPSBFZGl0b3IuYmVmb3JlKGVkaXRvciwgcGF0aCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChiZWZvcmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2VsZWN0KGVkaXRvciwgYmVmb3JlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBuYXRpdmVFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc01vdmVEb3duKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgWywgcGF0aF0gPSBBbmd1bGFyRWRpdG9yLnRvU2xhdGVDYXJkRW50cnkoZWRpdG9yLCBhbmNob3JOb2RlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0UGF0aCA9IFBhdGgubmV4dChwYXRoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0Tm9kZSA9IFRoZVF1ZXJpZXMuZ2V0Tm9kZShlZGl0b3IsIG5leHRQYXRoKTtcbiAgICAgICAgICAgICAgICBpZiAobmV4dE5vZGUgJiYgZWRpdG9yLmlzQmxvY2tDYXJkKG5leHROb2RlKSkge1xuICAgICAgICAgICAgICAgICAgICBBbmd1bGFyRWRpdG9yLm1vdmVCbG9ja0NhcmQoZWRpdG9yLCBuZXh0Tm9kZSwgeyBkaXJlY3Rpb246IGlzQ2FyZExlZnRDdXJzb3IgPyAnbGVmdCcgOiAncmlnaHQnIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFmdGVyID0gRWRpdG9yLmFmdGVyKGVkaXRvciwgcGF0aCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhZnRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QoZWRpdG9yLCBFZGl0b3IuYWZ0ZXIoZWRpdG9yLCBwYXRoKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbmF0aXZlRXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyDihpIgKyByaWdodC1ibG9jay1jYXJkXG4gICAgICAgICAgICBpZiAoaXNNb3ZlRm9yd2FyZCAmJiAhaXNDYXJkTGVmdEN1cnNvcikge1xuICAgICAgICAgICAgICAgIG5hdGl2ZUV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgWywgcGF0aF0gPSBBbmd1bGFyRWRpdG9yLnRvU2xhdGVDYXJkRW50cnkoZWRpdG9yLCBhbmNob3JOb2RlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0UGF0aCA9IFBhdGgubmV4dChwYXRoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0Tm9kZSA9IFRoZVF1ZXJpZXMuZ2V0Tm9kZShlZGl0b3IsIG5leHRQYXRoKTtcbiAgICAgICAgICAgICAgICBpZiAobmV4dE5vZGUgJiYgZWRpdG9yLmlzQmxvY2tDYXJkKG5leHROb2RlKSkge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBBbmd1bGFyRWRpdG9yLm1vdmVCbG9ja0NhcmQoZWRpdG9yLCBuZXh0Tm9kZSwgeyBkaXJlY3Rpb246ICdsZWZ0JyB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBhZnRlciA9IEVkaXRvci5hZnRlcihlZGl0b3IsIHBhdGgpO1xuICAgICAgICAgICAgICAgIGlmIChhZnRlcikge1xuICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdChlZGl0b3IsIEVkaXRvci5hZnRlcihlZGl0b3IsIHBhdGgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8g4oaQICsgbGVmdC1ibG9jay1jYXJkXG4gICAgICAgICAgICBpZiAoaXNNb3ZlQmFja3dhcmQgJiYgaXNDYXJkTGVmdEN1cnNvcikge1xuICAgICAgICAgICAgICAgIG5hdGl2ZUV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgWywgcGF0aF0gPSBBbmd1bGFyRWRpdG9yLnRvU2xhdGVDYXJkRW50cnkoZWRpdG9yLCBhbmNob3JOb2RlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1BhdGggPSBQYXRoLmhhc1ByZXZpb3VzKHBhdGgpICYmIFBhdGgucHJldmlvdXMocGF0aCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNOb2RlID0gcHJldmlvdXNQYXRoICYmIFRoZVF1ZXJpZXMuZ2V0Tm9kZShlZGl0b3IsIHByZXZpb3VzUGF0aCk7XG4gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzTm9kZSAmJiBlZGl0b3IuaXNCbG9ja0NhcmQocHJldmlvdXNOb2RlKSkge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBBbmd1bGFyRWRpdG9yLm1vdmVCbG9ja0NhcmQoZWRpdG9yLCBwcmV2aW91c05vZGUsIHsgZGlyZWN0aW9uOiAncmlnaHQnIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGJlZm9yZSA9IEVkaXRvci5iZWZvcmUoZWRpdG9yLCBwYXRoKTtcbiAgICAgICAgICAgICAgICBpZiAoYmVmb3JlKSB7XG4gICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2VsZWN0KGVkaXRvciwgYmVmb3JlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gbW92ZSB0byBjYXJkIGNlbnRlclxuICAgICAgICAgICAgaWYgKChpc0NhcmRMZWZ0Q3Vyc29yICYmIGlzTW92ZUZvcndhcmQpIHx8ICghaXNDYXJkTGVmdEN1cnNvciAmJiBpc01vdmVCYWNrd2FyZCkpIHtcbiAgICAgICAgICAgICAgICBuYXRpdmVFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IFssIHBhdGhdID0gQW5ndWxhckVkaXRvci50b1NsYXRlQ2FyZEVudHJ5KGVkaXRvciwgYW5jaG9yTm9kZSk7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QoZWRpdG9yLCBpc0NhcmRMZWZ0Q3Vyc29yID8gRWRpdG9yLnN0YXJ0KGVkaXRvciwgcGF0aCkgOiBFZGl0b3IuZW5kKGVkaXRvciwgcGF0aCkpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBibG9jayBjYXJkIGNlbnRlclxuICAgICAgICBpZiAoaXNDb2xsYXBzZWQgJiYgKGlzTW92ZVVwIHx8IGlzTW92ZURvd24pICYmIGFuY2hvckVudHJ5KSB7XG4gICAgICAgICAgICBjb25zdCBbYmxvY2ssIHBhdGhdID0gYW5jaG9yRW50cnk7XG4gICAgICAgICAgICBpZiAoZWRpdG9yLmlzQmxvY2tDYXJkKGJsb2NrKSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QoZWRpdG9yLCBpc01vdmVVcCA/IEVkaXRvci5iZWZvcmUoZWRpdG9yLCBwYXRoKSA6IEVkaXRvci5hZnRlcihlZGl0b3IsIHBhdGgpKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQ29sbGFwc2VkICYmIChpc01vdmVCYWNrd2FyZCB8fCBpc01vdmVGb3J3YXJkKSAmJiBhbmNob3JFbnRyeSkge1xuICAgICAgICAgICAgY29uc3QgW2Jsb2NrXSA9IGFuY2hvckVudHJ5O1xuICAgICAgICAgICAgaWYgKGVkaXRvci5pc0Jsb2NrQ2FyZChibG9jaykpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIEFuZ3VsYXJFZGl0b3IubW92ZUJsb2NrQ2FyZChlZGl0b3IsIGJsb2NrLCB7IGRpcmVjdGlvbjogaXNNb3ZlQmFja3dhcmQgPyAnbGVmdCcgOiAncmlnaHQnIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBtb3ZlIHRvIGJsb2NrIGNhcmQgY3Vyc29yXG4gICAgICAgIGlmIChpc0NvbGxhcHNlZCAmJiBpc01vdmVCYWNrd2FyZCAmJiBFZGl0b3IuaXNTdGFydChlZGl0b3IsIHNlbGVjdGlvbi5hbmNob3IsIHNlbGVjdGlvbi5hbmNob3IucGF0aC5zbGljZSgwLCAxKSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRQYXRoID0gc2VsZWN0aW9uLmFuY2hvci5wYXRoLnNsaWNlKDAsIDEpO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRQYXRoWzBdID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzTm9kZSA9IE5vZGUuZ2V0KGVkaXRvciwgUGF0aC5wcmV2aW91cyhjdXJyZW50UGF0aCkpO1xuICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c05vZGUgJiYgZWRpdG9yLmlzQmxvY2tDYXJkKHByZXZpb3VzTm9kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgQW5ndWxhckVkaXRvci5tb3ZlQmxvY2tDYXJkKGVkaXRvciwgcHJldmlvdXNOb2RlLCB7IGRpcmVjdGlvbjogJ3JpZ2h0JyB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNDb2xsYXBzZWQgJiYgaXNNb3ZlRm9yd2FyZCAmJiBFZGl0b3IuaXNFbmQoZWRpdG9yLCBzZWxlY3Rpb24uYW5jaG9yLCBzZWxlY3Rpb24uYW5jaG9yLnBhdGguc2xpY2UoMCwgMSkpKSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50UGF0aCA9IHNlbGVjdGlvbi5hbmNob3IucGF0aC5zbGljZSgwLCAxKTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50UGF0aFswXSA8IGVkaXRvci5jaGlsZHJlbi5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNOb2RlID0gTm9kZS5nZXQoZWRpdG9yLCBQYXRoLm5leHQoY3VycmVudFBhdGgpKTtcbiAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNOb2RlICYmIGVkaXRvci5pc0Jsb2NrQ2FyZChwcmV2aW91c05vZGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIEFuZ3VsYXJFZGl0b3IubW92ZUJsb2NrQ2FyZChlZGl0b3IsIHByZXZpb3VzTm9kZSwgeyBkaXJlY3Rpb246ICdsZWZ0JyB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIG9uS2V5ZG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGVkaXRvci5pbnNlcnREYXRhID0gKGRhdGE6IERhdGFUcmFuc2ZlcikgPT4ge1xuICAgICAgICBjb25zdCBkb21TZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgIGNvbnN0IGFuY2hvck5vZGUgPSBkb21TZWxlY3Rpb24uYW5jaG9yTm9kZTtcbiAgICAgICAgaWYgKGRvbVNlbGVjdGlvbiAmJiBkb21TZWxlY3Rpb24uaXNDb2xsYXBzZWQgJiYgaGFzQmxvY2tDYXJkKGRvbVNlbGVjdGlvbikpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzTGVmdEN1cnNvciA9IGlzQ2FyZExlZnQoYW5jaG9yTm9kZSk7XG4gICAgICAgICAgICBjb25zdCBjYXJkRW50cnkgPSBBbmd1bGFyRWRpdG9yLnRvU2xhdGVDYXJkRW50cnkoZWRpdG9yLCBhbmNob3JOb2RlKTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnNvclJvb3RQYXRoID0gY2FyZEVudHJ5WzFdO1xuICAgICAgICAgICAgaWYgKGlzTGVmdEN1cnNvcikge1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuaW5zZXJ0Tm9kZXMoZWRpdG9yLCBjcmVhdGVFbXB0eVBhcmFncmFwaCgpLCB7IGF0OiBjdXJzb3JSb290UGF0aCB9KTtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdChlZGl0b3IsIGN1cnNvclJvb3RQYXRoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5pbnNlcnROb2RlcyhlZGl0b3IsIGNyZWF0ZUVtcHR5UGFyYWdyYXBoKCksIHsgYXQ6IFBhdGgubmV4dChjdXJzb3JSb290UGF0aCkgfSk7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QoZWRpdG9yLCBQYXRoLm5leHQoY3Vyc29yUm9vdFBhdGgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpbnNlcnREYXRhKGRhdGEpO1xuICAgIH07XG5cbiAgICBlZGl0b3IuaW5zZXJ0VGV4dCA9ICh0ZXh0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgZG9tU2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgICAgICBjb25zdCBhbmNob3JOb2RlID0gZG9tU2VsZWN0aW9uPy5hbmNob3JOb2RlO1xuICAgICAgICBpZiAoQW5ndWxhckVkaXRvci5pc0Jsb2NrQ2FyZExlZnRDdXJzb3IoZWRpdG9yKSB8fCBBbmd1bGFyRWRpdG9yLmlzQmxvY2tDYXJkUmlnaHRDdXJzb3IoZWRpdG9yKSkge1xuICAgICAgICAgICAgY29uc3QgaXNMZWZ0Q3Vyc29yID0gaXNDYXJkTGVmdChhbmNob3JOb2RlKTtcbiAgICAgICAgICAgIGNvbnN0IGNhcmRFbnRyeSA9IEFuZ3VsYXJFZGl0b3IudG9TbGF0ZUNhcmRFbnRyeShlZGl0b3IsIGFuY2hvck5vZGUpO1xuICAgICAgICAgICAgY29uc3QgY3Vyc29yUm9vdFBhdGggPSBjYXJkRW50cnlbMV07XG4gICAgICAgICAgICBpZiAoaXNMZWZ0Q3Vyc29yKSB7XG4gICAgICAgICAgICAgICAgaW5zZXJ0UGFyYWdyYXBoKGVkaXRvciwgY3Vyc29yUm9vdFBhdGgpO1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2VsZWN0KGVkaXRvciwgY3Vyc29yUm9vdFBhdGgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0UGF0aCA9IFBhdGgubmV4dChjdXJzb3JSb290UGF0aCk7XG4gICAgICAgICAgICAgICAgaW5zZXJ0UGFyYWdyYXBoKGVkaXRvciwgbmV4dFBhdGgpO1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2VsZWN0KGVkaXRvciwgbmV4dFBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGluc2VydFRleHQodGV4dCk7XG4gICAgfTtcblxuICAgIHJldHVybiBlZGl0b3I7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlQmxvY2tDYXJkUGx1Z2luID0gY3JlYXRlUGx1Z2luRmFjdG9yeSh7XG4gICAga2V5OiBQbHVnaW5LZXlzLmJsb2NrQ2FyZCxcbiAgICB3aXRoT3ZlcnJpZGVzOiB3aXRoQmxvY2tDYXJkXG59KTtcbiJdfQ==
287
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stY2FyZC5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9jb21tb24vYmxvY2stY2FyZC5wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLDRCQUE0QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDakQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BFLE9BQU8sS0FBSyxhQUFhLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxLQUFLLFVBQVUsTUFBTSxlQUFlLENBQUM7QUFFNUMsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQW1CLE1BQVMsRUFBSyxFQUFFO0lBQzVELE1BQU0sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUVqRyxNQUFNLENBQUMsV0FBVyxHQUFHLEdBQUcsRUFBRTtRQUN0QixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDM0MsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQztRQUMzQyxJQUFJLFlBQVksSUFBSSxZ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R0FBRyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ3JFLE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQyxJQUFJLFlBQVksRUFBRTtnQkFDZCxlQUFlLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDO2dCQUN4QyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQzthQUM3QztpQkFBTTtnQkFDSCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUMzQyxlQUFlLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUNsQyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQzthQUN2QztTQUNKO1FBQ0QsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JCLENBQUMsQ0FBQztJQUVGLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLG1CQUFtQixDQUFDO0lBQ3JELEdBQUcsRUFBRSxVQUFVLENBQUMsU0FBUztJQUN6QixhQUFhLEVBQUUsYUFBYTtDQUMvQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFZGl0b3IsIE5vZGUsIFJhbmdlLCBQYXRoLCBUcmFuc2Zvcm1zIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgSGlzdG9yeUVkaXRvciB9IGZyb20gJ3NsYXRlLWhpc3RvcnknO1xuaW1wb3J0IHsgQW5ndWxhckVkaXRvciwgaG90a2V5cywgaGFzQmxvY2tDYXJkLCBpc0NhcmRMZWZ0LCBGQUtFX1JJR0hUX0JMT0NLX0NBUkRfT0ZGU0VUIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBQbHVnaW5LZXlzIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBjcmVhdGVQbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBjcmVhdGVFbXB0eVBhcmFncmFwaCB9IGZyb20gJy4uLy4uL3V0aWxzL2NyZWF0ZS1lbXB0eS1wYXJhZ3JhcGgnO1xuaW1wb3J0IHsgaW5zZXJ0UGFyYWdyYXBoIH0gZnJvbSAnLi4vLi4vdHJhbnNmb3Jtcy9pbnNlcnQtcGFyYWdyYXBoJztcbmltcG9ydCAqIGFzIFRoZVRyYW5zZm9ybXMgZnJvbSAnLi4vLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgKiBhcyBUaGVRdWVyaWVzIGZyb20gJy4uLy4uL3F1ZXJpZXMnO1xuXG5leHBvcnQgY29uc3Qgd2l0aEJsb2NrQ2FyZCA9IDxUIGV4dGVuZHMgRWRpdG9yPihlZGl0b3I6IFQpOiBUID0+IHtcbiAgICBjb25zdCB7IGluc2VydEJyZWFrLCBkZWxldGVCYWNrd2FyZCwgb25LZXlkb3duLCBkZWxldGVGb3J3YXJkLCBpbnNlcnREYXRhLCBpbnNlcnRUZXh0IH0gPSBlZGl0b3I7XG5cbiAgICBlZGl0b3IuaW5zZXJ0QnJlYWsgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGRvbVNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgY29uc3QgYW5jaG9yTm9kZSA9IGRvbVNlbGVjdGlvbi5hbmNob3JOb2RlO1xuICAgICAgICBpZiAoZG9tU2VsZWN0aW9uICYmIGRvbVNlbGVjdGlvbi5pc0NvbGxhcHNlZCAmJiBoYXNCbG9ja0NhcmQoZG9tU2VsZWN0aW9uKSkge1xuICAgICAgICAgICAgY29uc3QgaXNMZWZ0Q3Vyc29yID0gaXNDYXJkTGVmdChhbmNob3JOb2RlKTtcbiAgICAgICAgICAgIGNvbnN0IGNhcmRFbnRyeSA9IEFuZ3VsYXJFZGl0b3IudG9TbGF0ZUNhcmRFbnRyeShlZGl0b3IsIGFuY2hvck5vZGUpO1xuICAgICAgICAgICAgY29uc3QgY3Vyc29yUm9vdFBhdGggPSBjYXJkRW50cnlbMV07XG4gICAgICAgICAgICBUaGVUcmFuc2Zvcm1zLmluc2VydFBhcmFncmFwaChlZGl0b3IsIGlzTGVmdEN1cnNvciA/IGN1cnNvclJvb3RQYXRoIDogUGF0aC5uZXh0KGN1cnNvclJvb3RQYXRoKSk7XG4gICAgICAgICAgICBpZiAoIWlzTGVmdEN1cnNvcikge1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2VsZWN0KGVkaXRvciwgUGF0aC5uZXh0KGN1cnNvclJvb3RQYXRoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaW5zZXJ0QnJlYWsoKTtcbiAgICB9O1xuXG4gICAgZWRpdG9yLmRlbGV0ZUJhY2t3YXJkID0gdW5pdCA9PiB7XG4gICAgICAgIGNvbnN0IGRvbVNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgY29uc3QgYW5jaG9yTm9kZSA9IGRvbVNlbGVjdGlvbi5hbmNob3JOb2RlO1xuICAgICAgICBpZiAoZG9tU2VsZWN0aW9uICYmIGRvbVNlbGVjdGlvbi5pc0NvbGxhcHNlZCAmJiBoYXNCbG9ja0NhcmQoZG9tU2VsZWN0aW9uKSkge1xuICAgICAgICAgICAgY29uc3QgaXNMZWZ0Q3Vyc29yID0gaXNDYXJkTGVmdChhbmNob3JOb2RlKTtcbiAgICAgICAgICAgIGNvbnN0IGNhcmRFbnRyeSA9IEFuZ3VsYXJFZGl0b3IudG9TbGF0ZUNhcmRFbnRyeShlZGl0b3IsIGFuY2hvck5vZGUpO1xuICAgICAgICAgICAgY29uc3QgY3Vyc29yUm9vdFBhdGggPSBjYXJkRW50cnlbMV07XG4gICAgICAgICAgICBpZiAoaXNMZWZ0Q3Vyc29yKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNQYXRoID0gUGF0aC5oYXNQcmV2aW91cyhjdXJzb3JSb290UGF0aCkgJiYgUGF0aC5wcmV2aW91cyhjdXJzb3JSb290UGF0aCk7XG4gICAgICAgICAgICAgICAgaWYgKCFwcmV2aW91c1BhdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNQYXRoICYmIFRoZVF1ZXJpZXMuaXNFbXB0eVBhcmFncmFwaEJ5UGF0aChlZGl0b3IsIHByZXZpb3VzUGF0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5yZW1vdmVOb2RlcyhlZGl0b3IsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0OiBwcmV2aW91c1BhdGhcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgSGlzdG9yeUVkaXRvci53aXRob3V0TWVyZ2luZyhlZGl0b3IsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QoZWRpdG9yLCBFZGl0b3IuZW5kKGVkaXRvciwgcHJldmlvdXNQYXRoKSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBUaGVUcmFuc2Zvcm1zLmluc2VydFBhcmFncmFwaChlZGl0b3IsIGN1cnNvclJvb3RQYXRoKTtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdChlZGl0b3IsIGN1cnNvclJvb3RQYXRoKTtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnJlbW92ZU5vZGVzKGVkaXRvciwgeyBhdDogUGF0aC5uZXh0KGN1cnNvclJvb3RQYXRoKSB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBibG9ja0NhcmQgPSBUaGVRdWVyaWVzLmdldEJsb2NrQ2FyZEFib3ZlKGVkaXRvcik7XG4gICAgICAgIGNvbnN0IGJlZm9yZVBvaW50ID0gRWRpdG9yLmJlZm9yZShlZGl0b3IsIGVkaXRvci5zZWxlY3Rpb24uYW5jaG9yKTtcbiAgICAgICAgY29uc3QgYmVmb3JlQmxvY2tDYXJkID0gVGhlUXVlcmllcy5nZXRCbG9ja0NhcmRBYm92ZShlZGl0b3IsIHsgYXQ6IGJlZm9yZVBvaW50IH0pO1xuICAgICAgICBpZiAoIWJsb2NrQ2FyZCAmJiBiZWZvcmVCbG9ja0NhcmQpIHtcbiAgICAgICAgICAgIGlmIChUaGVRdWVyaWVzLmlzQmxvY2tBYm92ZUVtcHR5KGVkaXRvcikpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBbbm9kZSwgcGF0aF0gPSBFZGl0b3IucGFyZW50KGVkaXRvciwgZWRpdG9yLnNlbGVjdGlvbi5hbmNob3IucGF0aCk7XG4gICAgICAgICAgICAgICAgSGlzdG9yeUVkaXRvci53aXRob3V0TWVyZ2luZyhlZGl0b3IsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmlnaHRDdXJzb3IgPSB7IHBhdGg6IGJlZm9yZUJsb2NrQ2FyZFsxXSwgb2Zmc2V0OiBGQUtFX1JJR0hUX0JMT0NLX0NBUkRfT0ZGU0VUIH07XG4gICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2VsZWN0KGVkaXRvciwgeyBhbmNob3I6IHJpZ2h0Q3Vyc29yLCBmb2N1czogcmlnaHRDdXJzb3IgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5kZWxldGUoZWRpdG9yLCB7IGF0OiBwYXRoIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5kZWxldGUoZWRpdG9yLCB7IGF0OiBiZWZvcmVCbG9ja0NhcmRbMV0gfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBkZWxldGVCYWNrd2FyZCh1bml0KTtcbiAgICB9O1xuXG4gICAgZWRpdG9yLmRlbGV0ZUZvcndhcmQgPSB1bml0ID0+IHtcbiAgICAgICAgY29uc3QgZG9tU2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgICAgICBjb25zdCBhbmNob3JOb2RlID0gZG9tU2VsZWN0aW9uLmFuY2hvck5vZGU7XG4gICAgICAgIGlmIChkb21TZWxlY3Rpb24gJiYgZG9tU2VsZWN0aW9uLmlzQ29sbGFwc2VkICYmIGhhc0Jsb2NrQ2FyZChkb21TZWxlY3Rpb24pKSB7XG4gICAgICAgICAgICBjb25zdCBpc0xlZnRDdXJzb3IgPSBpc0NhcmRMZWZ0KGFuY2hvck5vZGUpO1xuICAgICAgICAgICAgY29uc3QgY2FyZEVudHJ5ID0gQW5ndWxhckVkaXRvci50b1NsYXRlQ2FyZEVudHJ5KGVkaXRvciwgYW5jaG9yTm9kZSk7XG4gICAgICAgICAgICBjb25zdCBjdXJzb3JSb290UGF0aCA9IGNhcmRFbnRyeVsxXTtcbiAgICAgICAgICAgIGlmIChpc0xlZnRDdXJzb3IpIHtcbiAgICAgICAgICAgICAgICBUaGVUcmFuc2Zvcm1zLmluc2VydFBhcmFncmFwaChlZGl0b3IsIGN1cnNvclJvb3RQYXRoKTtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdChlZGl0b3IsIGN1cnNvclJvb3RQYXRoKTtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnJlbW92ZU5vZGVzKGVkaXRvciwgeyBhdDogUGF0aC5uZXh0KGN1cnNvclJvb3RQYXRoKSB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5leHRQYXRoID0gUGF0aC5uZXh0KGN1cnNvclJvb3RQYXRoKTtcbiAgICAgICAgICAgICAgICBIaXN0b3J5RWRpdG9yLndpdGhvdXRNZXJnaW5nKGVkaXRvciwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdChlZGl0b3IsIEVkaXRvci5zdGFydChlZGl0b3IsIG5leHRQYXRoKSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYmxvY2tDYXJkID0gVGhlUXVlcmllcy5nZXRCbG9ja0NhcmRBYm92ZShlZGl0b3IpO1xuICAgICAgICBjb25zdCBhZnRlclBvaW50ID0gRWRpdG9yLmFmdGVyKGVkaXRvciwgZWRpdG9yLnNlbGVjdGlvbi5hbmNob3IpO1xuICAgICAgICBjb25zdCBhZnRlckJsb2NrQ2FyZCA9IFRoZVF1ZXJpZXMuZ2V0QmxvY2tDYXJkQWJvdmUoZWRpdG9yLCB7IGF0OiBhZnRlclBvaW50IH0pO1xuICAgICAgICBpZiAoIWJsb2NrQ2FyZCAmJiBhZnRlckJsb2NrQ2FyZCkge1xuICAgICAgICAgICAgaWYgKFRoZVF1ZXJpZXMuaXNCbG9ja0Fib3ZlRW1wdHkoZWRpdG9yKSkge1xuICAgICAgICAgICAgICAgIEhpc3RvcnlFZGl0b3Iud2l0aG91dE1lcmdpbmcoZWRpdG9yLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxlZnRDdXJzb3IgPSB7IHBhdGg6IGFmdGVyQmxvY2tDYXJkWzFdLCBvZmZzZXQ6IC0xIH07XG4gICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2VsZWN0KGVkaXRvciwgeyBhbmNob3I6IGxlZnRDdXJzb3IsIGZvY3VzOiBsZWZ0Q3Vyc29yIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuZGVsZXRlKGVkaXRvciwgeyBhdDogUGF0aC5wcmV2aW91cyhhZnRlckJsb2NrQ2FyZFsxXSkgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVsZXRlRm9yd2FyZCh1bml0KTtcbiAgICB9O1xuXG4gICAgZWRpdG9yLm9uS2V5ZG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBkb21TZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgIGNvbnN0IGFuY2hvck5vZGUgPSBkb21TZWxlY3Rpb24uYW5jaG9yTm9kZTtcbiAgICAgICAgY29uc3QgbmF0aXZlRXZlbnQgPSBldmVudDtcbiAgICAgICAgY29uc3QgeyBzZWxlY3Rpb24gfSA9IGVkaXRvcjtcblxuICAgICAgICBjb25zdCBpc01vdmVCYWNrd2FyZCA9IGhvdGtleXMuaXNNb3ZlQmFja3dhcmQobmF0aXZlRXZlbnQpO1xuICAgICAgICBjb25zdCBpc01vdmVGb3J3YXJkID0gaG90a2V5cy5pc01vdmVGb3J3YXJkKG5hdGl2ZUV2ZW50KTtcbiAgICAgICAgY29uc3QgaXNNb3ZlVXAgPSBob3RrZXlzLmlzTW92ZVVwKG5hdGl2ZUV2ZW50KTtcbiAgICAgICAgY29uc3QgaXNNb3ZlRG93biA9IGhvdGtleXMuaXNNb3ZlRG93bihuYXRpdmVFdmVudCk7XG4gICAgICAgIGNvbnN0IGlzQ29sbGFwc2VkID0gc2VsZWN0aW9uICYmIFJhbmdlLmlzQ29sbGFwc2VkKHNlbGVjdGlvbik7XG4gICAgICAgIGNvbnN0IGFuY2hvckVudHJ5ID0gVGhlUXVlcmllcy5hbmNob3JCbG9ja0VudHJ5KGVkaXRvcik7XG5cbiAgICAgICAgLy8gYmxvY2sgY2FyZCBjdXJzb3JcbiAgICAgICAgaWYgKGFuY2hvck5vZGUgJiYgaGFzQmxvY2tDYXJkKGRvbVNlbGVjdGlvbikpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzQ2FyZExlZnRDdXJzb3IgPSBpc0NhcmRMZWZ0KGFuY2hvck5vZGUpO1xuICAgICAgICAgICAgaWYgKGlzTW92ZVVwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgWywgcGF0aF0gPSBBbmd1bGFyRWRpdG9yLnRvU2xhdGVDYXJkRW50cnkoZWRpdG9yLCBhbmNob3JOb2RlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1BhdGggPSBQYXRoLmhhc1ByZXZpb3VzKHBhdGgpICYmIFBhdGgucHJldmlvdXMocGF0aCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNOb2RlID0gcHJldmlvdXNQYXRoICYmIFRoZVF1ZXJpZXMuZ2V0Tm9kZShlZGl0b3IsIHByZXZpb3VzUGF0aCk7XG4gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzTm9kZSAmJiBlZGl0b3IuaXNCbG9ja0NhcmQocHJldmlvdXNOb2RlKSkge1xuICAgICAgICAgICAgICAgICAgICBBbmd1bGFyRWRpdG9yLm1vdmVCbG9ja0NhcmQoZWRpdG9yLCBwcmV2aW91c05vZGUsIHsgZGlyZWN0aW9uOiBpc0NhcmRMZWZ0Q3Vyc29yID8gJ2xlZnQnIDogJ3JpZ2h0JyB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBiZWZvcmUgPSBFZGl0b3IuYmVmb3JlKGVkaXRvciwgcGF0aCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChiZWZvcmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2VsZWN0KGVkaXRvciwgYmVmb3JlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBuYXRpdmVFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc01vdmVEb3duKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgWywgcGF0aF0gPSBBbmd1bGFyRWRpdG9yLnRvU2xhdGVDYXJkRW50cnkoZWRpdG9yLCBhbmNob3JOb2RlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0UGF0aCA9IFBhdGgubmV4dChwYXRoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0Tm9kZSA9IFRoZVF1ZXJpZXMuZ2V0Tm9kZShlZGl0b3IsIG5leHRQYXRoKTtcbiAgICAgICAgICAgICAgICBpZiAobmV4dE5vZGUgJiYgZWRpdG9yLmlzQmxvY2tDYXJkKG5leHROb2RlKSkge1xuICAgICAgICAgICAgICAgICAgICBBbmd1bGFyRWRpdG9yLm1vdmVCbG9ja0NhcmQoZWRpdG9yLCBuZXh0Tm9kZSwgeyBkaXJlY3Rpb246IGlzQ2FyZExlZnRDdXJzb3IgPyAnbGVmdCcgOiAncmlnaHQnIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFmdGVyID0gRWRpdG9yLmFmdGVyKGVkaXRvciwgcGF0aCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhZnRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QoZWRpdG9yLCBFZGl0b3IuYWZ0ZXIoZWRpdG9yLCBwYXRoKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbmF0aXZlRXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyDihpIgKyByaWdodC1ibG9jay1jYXJkXG4gICAgICAgICAgICBpZiAoaXNNb3ZlRm9yd2FyZCAmJiAhaXNDYXJkTGVmdEN1cnNvcikge1xuICAgICAgICAgICAgICAgIG5hdGl2ZUV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgWywgcGF0aF0gPSBBbmd1bGFyRWRpdG9yLnRvU2xhdGVDYXJkRW50cnkoZWRpdG9yLCBhbmNob3JOb2RlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0UGF0aCA9IFBhdGgubmV4dChwYXRoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0Tm9kZSA9IFRoZVF1ZXJpZXMuZ2V0Tm9kZShlZGl0b3IsIG5leHRQYXRoKTtcbiAgICAgICAgICAgICAgICBpZiAobmV4dE5vZGUgJiYgZWRpdG9yLmlzQmxvY2tDYXJkKG5leHROb2RlKSkge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBBbmd1bGFyRWRpdG9yLm1vdmVCbG9ja0NhcmQoZWRpdG9yLCBuZXh0Tm9kZSwgeyBkaXJlY3Rpb246ICdsZWZ0JyB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBhZnRlciA9IEVkaXRvci5hZnRlcihlZGl0b3IsIHBhdGgpO1xuICAgICAgICAgICAgICAgIGlmIChhZnRlcikge1xuICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdChlZGl0b3IsIEVkaXRvci5hZnRlcihlZGl0b3IsIHBhdGgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8g4oaQICsgbGVmdC1ibG9jay1jYXJkXG4gICAgICAgICAgICBpZiAoaXNNb3ZlQmFja3dhcmQgJiYgaXNDYXJkTGVmdEN1cnNvcikge1xuICAgICAgICAgICAgICAgIG5hdGl2ZUV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgWywgcGF0aF0gPSBBbmd1bGFyRWRpdG9yLnRvU2xhdGVDYXJkRW50cnkoZWRpdG9yLCBhbmNob3JOb2RlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1BhdGggPSBQYXRoLmhhc1ByZXZpb3VzKHBhdGgpICYmIFBhdGgucHJldmlvdXMocGF0aCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNOb2RlID0gcHJldmlvdXNQYXRoICYmIFRoZVF1ZXJpZXMuZ2V0Tm9kZShlZGl0b3IsIHByZXZpb3VzUGF0aCk7XG4gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzTm9kZSAmJiBlZGl0b3IuaXNCbG9ja0NhcmQocHJldmlvdXNOb2RlKSkge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBBbmd1bGFyRWRpdG9yLm1vdmVCbG9ja0NhcmQoZWRpdG9yLCBwcmV2aW91c05vZGUsIHsgZGlyZWN0aW9uOiAncmlnaHQnIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGJlZm9yZSA9IEVkaXRvci5iZWZvcmUoZWRpdG9yLCBwYXRoKTtcbiAgICAgICAgICAgICAgICBpZiAoYmVmb3JlKSB7XG4gICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2VsZWN0KGVkaXRvciwgYmVmb3JlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gbW92ZSB0byBjYXJkIGNlbnRlclxuICAgICAgICAgICAgaWYgKChpc0NhcmRMZWZ0Q3Vyc29yICYmIGlzTW92ZUZvcndhcmQpIHx8ICghaXNDYXJkTGVmdEN1cnNvciAmJiBpc01vdmVCYWNrd2FyZCkpIHtcbiAgICAgICAgICAgICAgICBuYXRpdmVFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IFssIHBhdGhdID0gQW5ndWxhckVkaXRvci50b1NsYXRlQ2FyZEVudHJ5KGVkaXRvciwgYW5jaG9yTm9kZSk7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QoZWRpdG9yLCBpc0NhcmRMZWZ0Q3Vyc29yID8gRWRpdG9yLnN0YXJ0KGVkaXRvciwgcGF0aCkgOiBFZGl0b3IuZW5kKGVkaXRvciwgcGF0aCkpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBibG9jayBjYXJkIGNlbnRlclxuICAgICAgICBpZiAoaXNDb2xsYXBzZWQgJiYgKGlzTW92ZVVwIHx8IGlzTW92ZURvd24pICYmIGFuY2hvckVudHJ5KSB7XG4gICAgICAgICAgICBjb25zdCBbYmxvY2ssIHBhdGhdID0gYW5jaG9yRW50cnk7XG4gICAgICAgICAgICBpZiAoZWRpdG9yLmlzQmxvY2tDYXJkKGJsb2NrKSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QoZWRpdG9yLCBpc01vdmVVcCA/IEVkaXRvci5iZWZvcmUoZWRpdG9yLCBwYXRoKSA6IEVkaXRvci5hZnRlcihlZGl0b3IsIHBhdGgpKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQ29sbGFwc2VkICYmIChpc01vdmVCYWNrd2FyZCB8fCBpc01vdmVGb3J3YXJkKSAmJiBhbmNob3JFbnRyeSkge1xuICAgICAgICAgICAgY29uc3QgW2Jsb2NrXSA9IGFuY2hvckVudHJ5O1xuICAgICAgICAgICAgaWYgKGVkaXRvci5pc0Jsb2NrQ2FyZChibG9jaykpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIEFuZ3VsYXJFZGl0b3IubW92ZUJsb2NrQ2FyZChlZGl0b3IsIGJsb2NrLCB7IGRpcmVjdGlvbjogaXNNb3ZlQmFja3dhcmQgPyAnbGVmdCcgOiAncmlnaHQnIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBtb3ZlIHRvIGJsb2NrIGNhcmQgY3Vyc29yXG4gICAgICAgIGlmIChpc0NvbGxhcHNlZCAmJiBpc01vdmVCYWNrd2FyZCAmJiBFZGl0b3IuaXNTdGFydChlZGl0b3IsIHNlbGVjdGlvbi5hbmNob3IsIHNlbGVjdGlvbi5hbmNob3IucGF0aC5zbGljZSgwLCAxKSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRQYXRoID0gc2VsZWN0aW9uLmFuY2hvci5wYXRoLnNsaWNlKDAsIDEpO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRQYXRoWzBdID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzTm9kZSA9IE5vZGUuZ2V0KGVkaXRvciwgUGF0aC5wcmV2aW91cyhjdXJyZW50UGF0aCkpO1xuICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c05vZGUgJiYgZWRpdG9yLmlzQmxvY2tDYXJkKHByZXZpb3VzTm9kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgQW5ndWxhckVkaXRvci5tb3ZlQmxvY2tDYXJkKGVkaXRvciwgcHJldmlvdXNOb2RlLCB7IGRpcmVjdGlvbjogJ3JpZ2h0JyB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNDb2xsYXBzZWQgJiYgaXNNb3ZlRm9yd2FyZCAmJiBFZGl0b3IuaXNFbmQoZWRpdG9yLCBzZWxlY3Rpb24uYW5jaG9yLCBzZWxlY3Rpb24uYW5jaG9yLnBhdGguc2xpY2UoMCwgMSkpKSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50UGF0aCA9IHNlbGVjdGlvbi5hbmNob3IucGF0aC5zbGljZSgwLCAxKTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50UGF0aFswXSA8IGVkaXRvci5jaGlsZHJlbi5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNOb2RlID0gTm9kZS5nZXQoZWRpdG9yLCBQYXRoLm5leHQoY3VycmVudFBhdGgpKTtcbiAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNOb2RlICYmIGVkaXRvci5pc0Jsb2NrQ2FyZChwcmV2aW91c05vZGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIEFuZ3VsYXJFZGl0b3IubW92ZUJsb2NrQ2FyZChlZGl0b3IsIHByZXZpb3VzTm9kZSwgeyBkaXJlY3Rpb246ICdsZWZ0JyB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIG9uS2V5ZG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGVkaXRvci5pbnNlcnREYXRhID0gKGRhdGE6IERhdGFUcmFuc2ZlcikgPT4ge1xuICAgICAgICBjb25zdCBkb21TZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgIGNvbnN0IGFuY2hvck5vZGUgPSBkb21TZWxlY3Rpb24uYW5jaG9yTm9kZTtcbiAgICAgICAgaWYgKGRvbVNlbGVjdGlvbiAmJiBkb21TZWxlY3Rpb24uaXNDb2xsYXBzZWQgJiYgaGFzQmxvY2tDYXJkKGRvbVNlbGVjdGlvbikpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzTGVmdEN1cnNvciA9IGlzQ2FyZExlZnQoYW5jaG9yTm9kZSk7XG4gICAgICAgICAgICBjb25zdCBjYXJkRW50cnkgPSBBbmd1bGFyRWRpdG9yLnRvU2xhdGVDYXJkRW50cnkoZWRpdG9yLCBhbmNob3JOb2RlKTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnNvclJvb3RQYXRoID0gY2FyZEVudHJ5WzFdO1xuICAgICAgICAgICAgaWYgKGlzTGVmdEN1cnNvcikge1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuaW5zZXJ0Tm9kZXMoZWRpdG9yLCBjcmVhdGVFbXB0eVBhcmFncmFwaCgpLCB7IGF0OiBjdXJzb3JSb290UGF0aCB9KTtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdChlZGl0b3IsIGN1cnNvclJvb3RQYXRoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5pbnNlcnROb2RlcyhlZGl0b3IsIGNyZWF0ZUVtcHR5UGFyYWdyYXBoKCksIHsgYXQ6IFBhdGgubmV4dChjdXJzb3JSb290UGF0aCkgfSk7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QoZWRpdG9yLCBQYXRoLm5leHQoY3Vyc29yUm9vdFBhdGgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpbnNlcnREYXRhKGRhdGEpO1xuICAgIH07XG5cbiAgICBlZGl0b3IuaW5zZXJ0VGV4dCA9ICh0ZXh0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgZG9tU2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgICAgICBjb25zdCBhbmNob3JOb2RlID0gZG9tU2VsZWN0aW9uPy5hbmNob3JOb2RlO1xuICAgICAgICBpZiAoQW5ndWxhckVkaXRvci5pc0Jsb2NrQ2FyZExlZnRDdXJzb3IoZWRpdG9yKSB8fCBBbmd1bGFyRWRpdG9yLmlzQmxvY2tDYXJkUmlnaHRDdXJzb3IoZWRpdG9yKSkge1xuICAgICAgICAgICAgY29uc3QgaXNMZWZ0Q3Vyc29yID0gaXNDYXJkTGVmdChhbmNob3JOb2RlKTtcbiAgICAgICAgICAgIGNvbnN0IGNhcmRFbnRyeSA9IEFuZ3VsYXJFZGl0b3IudG9TbGF0ZUNhcmRFbnRyeShlZGl0b3IsIGFuY2hvck5vZGUpO1xuICAgICAgICAgICAgY29uc3QgY3Vyc29yUm9vdFBhdGggPSBjYXJkRW50cnlbMV07XG4gICAgICAgICAgICBpZiAoaXNMZWZ0Q3Vyc29yKSB7XG4gICAgICAgICAgICAgICAgaW5zZXJ0UGFyYWdyYXBoKGVkaXRvciwgY3Vyc29yUm9vdFBhdGgpO1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2VsZWN0KGVkaXRvciwgY3Vyc29yUm9vdFBhdGgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0UGF0aCA9IFBhdGgubmV4dChjdXJzb3JSb290UGF0aCk7XG4gICAgICAgICAgICAgICAgaW5zZXJ0UGFyYWdyYXBoKGVkaXRvciwgbmV4dFBhdGgpO1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2VsZWN0KGVkaXRvciwgbmV4dFBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGluc2VydFRleHQodGV4dCk7XG4gICAgfTtcblxuICAgIHJldHVybiBlZGl0b3I7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlQmxvY2tDYXJkUGx1Z2luID0gY3JlYXRlUGx1Z2luRmFjdG9yeSh7XG4gICAga2V5OiBQbHVnaW5LZXlzLmJsb2NrQ2FyZCxcbiAgICB3aXRoT3ZlcnJpZGVzOiB3aXRoQmxvY2tDYXJkXG59KTtcbiJdfQ==
@@ -0,0 +1,24 @@
1
+ import { Element } from 'slate';
2
+ import { createPluginFactory, getPluginOptions } from '../../core';
3
+ import { PluginKeys } from '../../interfaces';
4
+ import * as TheQueries from '../../queries';
5
+ export const withGetFragment = (editor) => {
6
+ const { getFragment } = editor;
7
+ const elementKinds = getPluginOptions(editor, PluginKeys.getFragment)?.types ?? [];
8
+ editor.getFragment = () => {
9
+ const { selection } = editor;
10
+ const containerBlocks = [...elementKinds, ...TheQueries.getContainerBlocks(editor)];
11
+ if (selection && selection.anchor.path[0] === selection.focus.path[0]) {
12
+ const fragmentData = getFragment();
13
+ const nodes = TheQueries.getSelectionNodesByType(editor, fragmentData, containerBlocks);
14
+ return nodes && Element.isElement(nodes) ? nodes.children : fragmentData;
15
+ }
16
+ return getFragment();
17
+ };
18
+ return editor;
19
+ };
20
+ export const createGetFragmentPlugin = createPluginFactory({
21
+ key: PluginKeys.getFragment,
22
+ withOverrides: withGetFragment
23
+ });
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWZyYWdtZW50LnBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9wbHVnaW5zL2NvbW1vbi9nZXQtZnJhZ21lbnQucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFFeEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEtBQUssVUFBVSxNQUFNLGVBQWUsQ0FBQztBQU01QyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBbUIsTUFBUyxFQUFFLEVBQUU7SUFDM0QsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUMvQixNQUFNLFlBQVksR0FBRyxnQkFBZ0IsQ0FBMkIsTUFBTSxFQUFFLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDO0lBRTdHLE1BQU0sQ0FBQyxXQUFXLEdBQUcsR0FBRyxFQUFFO1FBQ3RCLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLENBQUM7UUFDN0IsTUFBTSxlQUFlLEdBQUcsQ0FBQyxHQUFHLFlBQVksRUFBRSxHQUFHLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3BGLElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ25FLE1BQU0sWUFBWSxHQUFHLFdBQVcsRUFBRSxDQUFDO1lBQ25DLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1lBQ3hGLE9BQU8sS0FBSyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztTQUM1RTtRQUNELE9BQU8sV0FBVyxFQUFFLENBQUM7SUFDekIsQ0FBQyxDQUFDO0lBRUYsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsbUJBQW1CLENBQTJCO0lBQ2pGLEdBQUcsRUFBRSxVQUFVLENBQUMsV0FBVztJQUMzQixhQUFhLEVBQUUsZUFBZTtDQUNqQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFZGl0b3IsIEVsZW1lbnQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBDdXN0b21FbGVtZW50S2luZHMgfSBmcm9tICcuLi8uLi9jdXN0b20tdHlwZXMnO1xuaW1wb3J0IHsgY3JlYXRlUGx1Z2luRmFjdG9yeSwgZ2V0UGx1Z2luT3B0aW9ucyB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgUGx1Z2luS2V5cyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0ICogYXMgVGhlUXVlcmllcyBmcm9tICcuLi8uLi9xdWVyaWVzJztcblxuZXhwb3J0IGludGVyZmFjZSBHZXRGcmFnbWVudFBsdWdpbk9wdGlvbnMge1xuICAgIHR5cGVzPzogQ3VzdG9tRWxlbWVudEtpbmRzW107XG59XG5cbmV4cG9ydCBjb25zdCB3aXRoR2V0RnJhZ21lbnQgPSA8VCBleHRlbmRzIEVkaXRvcj4oZWRpdG9yOiBUKSA9PiB7XG4gICAgY29uc3QgeyBnZXRGcmFnbWVudCB9ID0gZWRpdG9yO1xuICAgIGNvbnN0IGVsZW1lbnRLaW5kcyA9IGdldFBsdWdpbk9wdGlvbnM8R2V0RnJhZ21lbnRQbHVnaW5PcHRpb25zPihlZGl0b3IsIFBsdWdpbktleXMuZ2V0RnJhZ21lbnQpPy50eXBlcyA/PyBbXTtcblxuICAgIGVkaXRvci5nZXRGcmFnbWVudCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgeyBzZWxlY3Rpb24gfSA9IGVkaXRvcjtcbiAgICAgICAgY29uc3QgY29udGFpbmVyQmxvY2tzID0gWy4uLmVsZW1lbnRLaW5kcywgLi4uVGhlUXVlcmllcy5nZXRDb250YWluZXJCbG9ja3MoZWRpdG9yKV07XG4gICAgICAgIGlmIChzZWxlY3Rpb24gJiYgc2VsZWN0aW9uLmFuY2hvci5wYXRoWzBdID09PSBzZWxlY3Rpb24uZm9jdXMucGF0aFswXSkge1xuICAgICAgICAgICAgY29uc3QgZnJhZ21lbnREYXRhID0gZ2V0RnJhZ21lbnQoKTtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gVGhlUXVlcmllcy5nZXRTZWxlY3Rpb25Ob2Rlc0J5VHlwZShlZGl0b3IsIGZyYWdtZW50RGF0YSwgY29udGFpbmVyQmxvY2tzKTtcbiAgICAgICAgICAgIHJldHVybiBub2RlcyAmJiBFbGVtZW50LmlzRWxlbWVudChub2RlcykgPyBub2Rlcy5jaGlsZHJlbiA6IGZyYWdtZW50RGF0YTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ2V0RnJhZ21lbnQoKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGVkaXRvcjtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVHZXRGcmFnbWVudFBsdWdpbiA9IGNyZWF0ZVBsdWdpbkZhY3Rvcnk8R2V0RnJhZ21lbnRQbHVnaW5PcHRpb25zPih7XG4gICAga2V5OiBQbHVnaW5LZXlzLmdldEZyYWdtZW50LFxuICAgIHdpdGhPdmVycmlkZXM6IHdpdGhHZXRGcmFnbWVudFxufSk7XG4iXX0=
@@ -0,0 +1,98 @@
1
+ import { Editor } from 'slate';
2
+ import { ElementKinds, FontSizes, MarkTypes, HEADING_TYPES, FontSizeTypes, DISABLED_OPERATE_TYPES } from '../../constants';
3
+ import { PluginKeys, ToolbarItemType } from '../../interfaces';
4
+ import { createPluginFactory } from '../../core';
5
+ import { TheContextService } from '../../services/context.service';
6
+ import { TableEditor } from '../table/table.editor';
7
+ import * as TheQueries from '../../queries';
8
+ import * as TheTransforms from '../../transforms';
9
+ export const FontSizeEditor = {
10
+ setFontSize(editor, size) {
11
+ const contextService = editor.injector.get(TheContextService);
12
+ const defaultFontSize = contextService.getDefaultFontSize();
13
+ const marks = TheQueries.getSelectionMarks(editor);
14
+ const fontSizeMark = marks[MarkTypes.fontSize];
15
+ const isDefaultFontSize = size === defaultFontSize;
16
+ if (!fontSizeMark && isDefaultFontSize) {
17
+ return;
18
+ }
19
+ // unset fontSize
20
+ if (isDefaultFontSize) {
21
+ FontSizeEditor.unsetFontSize(editor, size);
22
+ return;
23
+ }
24
+ FontSizeEditor.setFontSizeMark(editor, size);
25
+ },
26
+ setFontSizeMark(editor, size) {
27
+ // set Table selectedCells fontSize
28
+ if (TableEditor.toggleMark(editor, false, MarkTypes.fontSize, Number(size))) {
29
+ return;
30
+ }
31
+ // set paragraph text fontSize
32
+ Editor.addMark(editor, MarkTypes.fontSize, Number(size));
33
+ },
34
+ unsetFontSize(editor, size) {
35
+ const isTable = TableEditor.isActive(editor);
36
+ // unset Table selectedCells fontSize
37
+ if (isTable && TableEditor.toggleMark(editor, true, MarkTypes.fontSize, Number(size))) {
38
+ return;
39
+ }
40
+ // unset paragraph text fontSize
41
+ TheTransforms.setMarks(editor, {
42
+ [MarkTypes.fontSize]: null
43
+ }, editor.selection);
44
+ },
45
+ isFontSizeActive(editor, size) {
46
+ if (editor.selection) {
47
+ const anchorBlock = TheQueries.anchorBlock(editor);
48
+ switch (anchorBlock?.type) {
49
+ case ElementKinds.heading_1:
50
+ return size === FontSizes.fontSize28;
51
+ case ElementKinds.heading_2:
52
+ return size === FontSizes.fontSize24;
53
+ case ElementKinds.heading_3:
54
+ return size === FontSizes.fontSize20;
55
+ case ElementKinds.heading_4:
56
+ return size === FontSizes.fontSize18;
57
+ case ElementKinds.heading_5:
58
+ return size === FontSizes.fontSize16;
59
+ case ElementKinds.heading_6:
60
+ return size === FontSizes.fontSize14;
61
+ case ElementKinds.paragraph:
62
+ const marks = TheQueries.getSelectionMarks(editor);
63
+ const fontSizeMark = marks[MarkTypes.fontSize];
64
+ return Number(size) === fontSizeMark;
65
+ default:
66
+ return false;
67
+ }
68
+ }
69
+ return false;
70
+ }
71
+ };
72
+ const sizeOptions = () => {
73
+ return FontSizeTypes.map(fontSize => {
74
+ return {
75
+ key: fontSize,
76
+ name: fontSize,
77
+ execute: editor => FontSizeEditor.setFontSize(editor, fontSize),
78
+ active: editor => FontSizeEditor.isFontSizeActive(editor, fontSize)
79
+ };
80
+ });
81
+ };
82
+ export const createFontSizePlugin = createPluginFactory({
83
+ key: PluginKeys.fontSize,
84
+ toolbarItems: [
85
+ {
86
+ key: MarkTypes.fontSize,
87
+ name: '字号',
88
+ type: ToolbarItemType.dropdown,
89
+ dropdownItemKey: FontSizes.fontSize14,
90
+ includes: FontSizeTypes
91
+ },
92
+ ...sizeOptions()
93
+ ],
94
+ options: {
95
+ disabledOperateTypes: [...HEADING_TYPES, ElementKinds.image, ...DISABLED_OPERATE_TYPES]
96
+ }
97
+ });
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9udC1zaXplLmVkaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9wbHVnaW5zL2ZvbnQtc2l6ZS9mb250LXNpemUuZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzSCxPQUFPLEVBQWEsVUFBVSxFQUFlLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxtQkFBbUIsRUFBb0IsTUFBTSxZQUFZLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sS0FBSyxVQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sS0FBSyxhQUFhLE1BQU0sa0JBQWtCLENBQUM7QUFFbEQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHO0lBQzFCLFdBQVcsQ0FBQyxNQUFpQixFQUFFLElBQWU7UUFDMUMsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM5RCxNQUFNLGVBQWUsR0FBRyxjQUFjLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUM1RCxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkQsTUFBTSxZQUFZLEdBQVcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2RCxNQUFNLGlCQUFpQixHQUFHLElBQUksS0FBSyxlQUFlLENBQUM7UUFFbkQsSUFB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O1lBQ2QsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDO1lBQy9ELE1BQU0sRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDO1NBQ3RFLENBQUM7SUFDTixDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLG1CQUFtQixDQUFDO0lBQ3BELEdBQUcsRUFBRSxVQUFVLENBQUMsUUFBUTtJQUN4QixZQUFZLEVBQUU7UUFDVjtZQUNJLEdBQUcsRUFBRSxTQUFTLENBQUMsUUFBUTtZQUN2QixJQUFJLEVBQUUsSUFBSTtZQUNWLElBQUksRUFBRSxlQUFlLENBQUMsUUFBUTtZQUM5QixlQUFlLEVBQUUsU0FBUyxDQUFDLFVBQVU7WUFDckMsUUFBUSxFQUFFLGFBQWE7U0FDMUI7UUFDRCxHQUFHLFdBQVcsRUFBRTtLQUNuQjtJQUNELE9BQU8sRUFBRTtRQUNMLG9CQUFvQixFQUFFLENBQUMsR0FBRyxhQUFhLEVBQUUsWUFBWSxDQUFDLEtBQUssRUFBRSxHQUFHLHNCQUFzQixDQUFDO0tBQzFGO0NBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWRpdG9yIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgRWxlbWVudEtpbmRzLCBGb250U2l6ZXMsIE1hcmtUeXBlcywgSEVBRElOR19UWVBFUywgRm9udFNpemVUeXBlcywgRElTQUJMRURfT1BFUkFURV9UWVBFUyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBUaGVFZGl0b3IsIFBsdWdpbktleXMsIFRvb2xiYXJJdGVtLCBUb29sYmFySXRlbVR5cGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGNyZWF0ZVBsdWdpbkZhY3RvcnksIGdldFBsdWdpbk9wdGlvbnMgfSBmcm9tICcuLi8uLi9jb3JlJztcbmltcG9ydCB7IFRoZUNvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IFRhYmxlRWRpdG9yIH0gZnJvbSAnLi4vdGFibGUvdGFibGUuZWRpdG9yJztcbmltcG9ydCAqIGFzIFRoZVF1ZXJpZXMgZnJvbSAnLi4vLi4vcXVlcmllcyc7XG5pbXBvcnQgKiBhcyBUaGVUcmFuc2Zvcm1zIGZyb20gJy4uLy4uL3RyYW5zZm9ybXMnO1xuXG5leHBvcnQgY29uc3QgRm9udFNpemVFZGl0b3IgPSB7XG4gICAgc2V0Rm9udFNpemUoZWRpdG9yOiBUaGVFZGl0b3IsIHNpemU6IEZvbnRTaXplcykge1xuICAgICAgICBjb25zdCBjb250ZXh0U2VydmljZSA9IGVkaXRvci5pbmplY3Rvci5nZXQoVGhlQ29udGV4dFNlcnZpY2UpO1xuICAgICAgICBjb25zdCBkZWZhdWx0Rm9udFNpemUgPSBjb250ZXh0U2VydmljZS5nZXREZWZhdWx0Rm9udFNpemUoKTtcbiAgICAgICAgY29uc3QgbWFya3MgPSBUaGVRdWVyaWVzLmdldFNlbGVjdGlvbk1hcmtzKGVkaXRvcik7XG4gICAgICAgIGNvbnN0IGZvbnRTaXplTWFyazogbnVtYmVyID0gbWFya3NbTWFya1R5cGVzLmZvbnRTaXplXTtcbiAgICAgICAgY29uc3QgaXNEZWZhdWx0Rm9udFNpemUgPSBzaXplID09PSBkZWZhdWx0Rm9udFNpemU7XG5cbiAgICAgICAgaWYgKCFmb250U2l6ZU1hcmsgJiYgaXNEZWZhdWx0Rm9udFNpemUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHVuc2V0IGZvbnRTaXplXG4gICAgICAgIGlmIChpc0RlZmF1bHRGb250U2l6ZSkge1xuICAgICAgICAgICAgRm9udFNpemVFZGl0b3IudW5zZXRGb250U2l6ZShlZGl0b3IsIHNpemUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgRm9udFNpemVFZGl0b3Iuc2V0Rm9udFNpemVNYXJrKGVkaXRvciwgc2l6ZSk7XG4gICAgfSxcbiAgICBzZXRGb250U2l6ZU1hcmsoZWRpdG9yOiBFZGl0b3IsIHNpemU6IEZvbnRTaXplcykge1xuICAgICAgICAvLyBzZXQgVGFibGUgc2VsZWN0ZWRDZWxscyBmb250U2l6ZVxuICAgICAgICBpZiAoVGFibGVFZGl0b3IudG9nZ2xlTWFyayhlZGl0b3IsIGZhbHNlLCBNYXJrVHlwZXMuZm9udFNpemUsIE51bWJlcihzaXplKSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBzZXQgcGFyYWdyYXBoIHRleHQgZm9udFNpemVcbiAgICAgICAgRWRpdG9yLmFkZE1hcmsoZWRpdG9yLCBNYXJrVHlwZXMuZm9udFNpemUsIE51bWJlcihzaXplKSk7XG4gICAgfSxcbiAgICB1bnNldEZvbnRTaXplKGVkaXRvcjogRWRpdG9yLCBzaXplOiBGb250U2l6ZXMpIHtcbiAgICAgICAgY29uc3QgaXNUYWJsZSA9IFRhYmxlRWRpdG9yLmlzQWN0aXZlKGVkaXRvcik7XG5cbiAgICAgICAgLy8gdW5zZXQgVGFibGUgc2VsZWN0ZWRDZWxscyBmb250U2l6ZVxuICAgICAgICBpZiAoaXNUYWJsZSAmJiBUYWJsZUVkaXRvci50b2dnbGVNYXJrKGVkaXRvciwgdHJ1ZSwgTWFya1R5cGVzLmZvbnRTaXplLCBOdW1iZXIoc2l6ZSkpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gdW5zZXQgcGFyYWdyYXBoIHRleHQgZm9udFNpemVcbiAgICAgICAgVGhlVHJhbnNmb3Jtcy5zZXRNYXJrcyhcbiAgICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBbTWFya1R5cGVzLmZvbnRTaXplXTogbnVsbFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVkaXRvci5zZWxlY3Rpb25cbiAgICAgICAgKTtcbiAgICB9LFxuICAgIGlzRm9udFNpemVBY3RpdmUoZWRpdG9yOiBFZGl0b3IsIHNpemU6IEZvbnRTaXplcykge1xuICAgICAgICBpZiAoZWRpdG9yLnNlbGVjdGlvbikge1xuICAgICAgICAgICAgY29uc3QgYW5jaG9yQmxvY2sgPSBUaGVRdWVyaWVzLmFuY2hvckJsb2NrKGVkaXRvcik7XG4gICAgICAgICAgICBzd2l0Y2ggKGFuY2hvckJsb2NrPy50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBFbGVtZW50S2luZHMuaGVhZGluZ18xOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZSA9PT0gRm9udFNpemVzLmZvbnRTaXplMjg7XG4gICAgICAgICAgICAgICAgY2FzZSBFbGVtZW50S2luZHMuaGVhZGluZ18yOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZSA9PT0gRm9udFNpemVzLmZvbnRTaXplMjQ7XG4gICAgICAgICAgICAgICAgY2FzZSBFbGVtZW50S2luZHMuaGVhZGluZ18zOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZSA9PT0gRm9udFNpemVzLmZvbnRTaXplMjA7XG4gICAgICAgICAgICAgICAgY2FzZSBFbGVtZW50S2luZHMuaGVhZGluZ180OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZSA9PT0gRm9udFNpemVzLmZvbnRTaXplMTg7XG4gICAgICAgICAgICAgICAgY2FzZSBFbGVtZW50S2luZHMuaGVhZGluZ181OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZSA9PT0gRm9udFNpemVzLmZvbnRTaXplMTY7XG4gICAgICAgICAgICAgICAgY2FzZSBFbGVtZW50S2luZHMuaGVhZGluZ182OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZSA9PT0gRm9udFNpemVzLmZvbnRTaXplMTQ7XG4gICAgICAgICAgICAgICAgY2FzZSBFbGVtZW50S2luZHMucGFyYWdyYXBoOlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXJrcyA9IFRoZVF1ZXJpZXMuZ2V0U2VsZWN0aW9uTWFya3MoZWRpdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9udFNpemVNYXJrID0gbWFya3NbTWFya1R5cGVzLmZvbnRTaXplXTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE51bWJlcihzaXplKSA9PT0gZm9udFNpemVNYXJrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufTtcblxuY29uc3Qgc2l6ZU9wdGlvbnMgPSAoKTogVG9vbGJhckl0ZW1bXSA9PiB7XG4gICAgcmV0dXJuIEZvbnRTaXplVHlwZXMubWFwKGZvbnRTaXplID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtleTogZm9udFNpemUsXG4gICAgICAgICAgICBuYW1lOiBmb250U2l6ZSxcbiAgICAgICAgICAgIGV4ZWN1dGU6IGVkaXRvciA9PiBGb250U2l6ZUVkaXRvci5zZXRGb250U2l6ZShlZGl0b3IsIGZvbnRTaXplKSxcbiAgICAgICAgICAgIGFjdGl2ZTogZWRpdG9yID0+IEZvbnRTaXplRWRpdG9yLmlzRm9udFNpemVBY3RpdmUoZWRpdG9yLCBmb250U2l6ZSlcbiAgICAgICAgfTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVGb250U2l6ZVBsdWdpbiA9IGNyZWF0ZVBsdWdpbkZhY3Rvcnkoe1xuICAgIGtleTogUGx1Z2luS2V5cy5mb250U2l6ZSxcbiAgICB0b29sYmFySXRlbXM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiBNYXJrVHlwZXMuZm9udFNpemUsXG4gICAgICAgICAgICBuYW1lOiAn5a2X5Y+3JyxcbiAgICAgICAgICAgIHR5cGU6IFRvb2xiYXJJdGVtVHlwZS5kcm9wZG93bixcbiAgICAgICAgICAgIGRyb3Bkb3duSXRlbUtleTogRm9udFNpemVzLmZvbnRTaXplMTQsXG4gICAgICAgICAgICBpbmNsdWRlczogRm9udFNpemVUeXBlc1xuICAgICAgICB9LFxuICAgICAgICAuLi5zaXplT3B0aW9ucygpXG4gICAgXSxcbiAgICBvcHRpb25zOiB7XG4gICAgICAgIGRpc2FibGVkT3BlcmF0ZVR5cGVzOiBbLi4uSEVBRElOR19UWVBFUywgRWxlbWVudEtpbmRzLmltYWdlLCAuLi5ESVNBQkxFRF9PUEVSQVRFX1RZUEVTXVxuICAgIH1cbn0pO1xuIl19
@@ -18,14 +18,14 @@ export class TheHrComponent extends TheBaseElementComponent {
18
18
  });
19
19
  }
20
20
  }
21
- TheHrComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheHrComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
22
- TheHrComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheHrComponent, selector: "the-hr, [theHr]", usesInheritance: true, ngImport: i0, template: `
21
+ TheHrComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: TheHrComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
22
+ TheHrComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: TheHrComponent, selector: "the-hr, [theHr]", usesInheritance: true, ngImport: i0, template: `
23
23
  <div class="the-hr" contenteditable="false" [ngClass]="{ active: selection }">
24
24
  <hr class="the-hr" />
25
25
  <slate-children [children]="children" [context]="childrenContext" [viewContext]="viewContext"></slate-children>
26
26
  </div>
27
27
  `, isInline: true, components: [{ type: i1.SlateChildrenComponent, selector: "slate-children", inputs: ["children", "context", "viewContext"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheHrComponent, decorators: [{
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: TheHrComponent, decorators: [{
29
29
  type: Component,
30
30
  args: [{
31
31
  selector: 'the-hr, [theHr]',
@@ -37,4 +37,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
37
37
  `
38
38
  }]
39
39
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; } });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvaHIvaHIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWdELE1BQU0sZUFBZSxDQUFDO0FBRXhGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7O0FBVzNELE1BQU0sT0FBTyxjQUFlLFNBQVEsdUJBQXdDO0lBQ3hFLFlBQW1CLFVBQXNCLEVBQVMsR0FBc0I7UUFDcEUsS0FBSyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQURSLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBUyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtJQUV4RSxDQUFDO0lBRUQsZUFBZTtRQUNYLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDeEUsSUFBSSxnQkFBZ0IsRUFBRTtnQkFDbEIsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQzNFO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzs0R0FaUSxjQUFjO2dHQUFkLGNBQWMsOEVBUGI7Ozs7O0tBS1Q7NEZBRVEsY0FBYztrQkFUMUIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixRQUFRLEVBQUU7Ozs7O0tBS1Q7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIENoYW5nZURldGVjdG9yUmVmLCBBZnRlclZpZXdJbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFZGl0b3IsIEVsZW1lbnQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBUaGVCYXNlRWxlbWVudENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoZS1ociwgW3RoZUhyXScsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBjbGFzcz1cInRoZS1oclwiIGNvbnRlbnRlZGl0YWJsZT1cImZhbHNlXCIgW25nQ2xhc3NdPVwieyBhY3RpdmU6IHNlbGVjdGlvbiB9XCI+XG4gICAgICAgICAgICA8aHIgY2xhc3M9XCJ0aGUtaHJcIiAvPlxuICAgICAgICAgICAgPHNsYXRlLWNoaWxkcmVuIFtjaGlsZHJlbl09XCJjaGlsZHJlblwiIFtjb250ZXh0XT1cImNoaWxkcmVuQ29udGV4dFwiIFt2aWV3Q29udGV4dF09XCJ2aWV3Q29udGV4dFwiPjwvc2xhdGUtY2hpbGRyZW4+XG4gICAgICAgIDwvZGl2PlxuICAgIGBcbn0pXG5leHBvcnQgY2xhc3MgVGhlSHJDb21wb25lbnQgZXh0ZW5kcyBUaGVCYXNlRWxlbWVudENvbXBvbmVudDxFbGVtZW50LCBFZGl0b3I+IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgICAgIHN1cGVyKGVsZW1lbnRSZWYsIGNkcik7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrQ2FyZEVsZW1lbnQgPSB0aGlzLm5hdGl2ZUVsZW1lbnQuY2xvc2VzdCgnc2xhdGUtYmxvY2stY2FyZCcpO1xuICAgICAgICAgICAgaWYgKGJsb2NrQ2FyZEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBibG9ja0NhcmRFbGVtZW50LmNsYXNzTGlzdC5hZGQoYHNsYXRlLWJsb2NrLWNhcmQtJHt0aGlzLmVsZW1lbnQudHlwZX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvaHIvaHIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWdELE1BQU0sZUFBZSxDQUFDO0FBRXhGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7O0FBVzNELE1BQU0sT0FBTyxjQUFlLFNBQVEsdUJBQXdDO0lBQ3hFLFlBQW1CLFVBQXNCLEVBQVMsR0FBc0I7UUFDcEUsS0FBSyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQURSLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBUyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtJQUV4RSxDQUFDO0lBRUQsZUFBZTtRQUNYLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDeEUsSUFBSSxnQkFBZ0IsRUFBRTtnQkFDbEIsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQzNFO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzsyR0FaUSxjQUFjOytGQUFkLGNBQWMsOEVBUGI7Ozs7O0tBS1Q7MkZBRVEsY0FBYztrQkFUMUIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixRQUFRLEVBQUU7Ozs7O0tBS1Q7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIENoYW5nZURldGVjdG9yUmVmLCBBZnRlclZpZXdJbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFZGl0b3IsIEVsZW1lbnQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBUaGVCYXNlRWxlbWVudENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoZS1ociwgW3RoZUhyXScsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBjbGFzcz1cInRoZS1oclwiIGNvbnRlbnRlZGl0YWJsZT1cImZhbHNlXCIgW25nQ2xhc3NdPVwieyBhY3RpdmU6IHNlbGVjdGlvbiB9XCI+XG4gICAgICAgICAgICA8aHIgY2xhc3M9XCJ0aGUtaHJcIiAvPlxuICAgICAgICAgICAgPHNsYXRlLWNoaWxkcmVuIFtjaGlsZHJlbl09XCJjaGlsZHJlblwiIFtjb250ZXh0XT1cImNoaWxkcmVuQ29udGV4dFwiIFt2aWV3Q29udGV4dF09XCJ2aWV3Q29udGV4dFwiPjwvc2xhdGUtY2hpbGRyZW4+XG4gICAgICAgIDwvZGl2PlxuICAgIGBcbn0pXG5leHBvcnQgY2xhc3MgVGhlSHJDb21wb25lbnQgZXh0ZW5kcyBUaGVCYXNlRWxlbWVudENvbXBvbmVudDxFbGVtZW50LCBFZGl0b3I+IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgICAgIHN1cGVyKGVsZW1lbnRSZWYsIGNkcik7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrQ2FyZEVsZW1lbnQgPSB0aGlzLm5hdGl2ZUVsZW1lbnQuY2xvc2VzdCgnc2xhdGUtYmxvY2stY2FyZCcpO1xuICAgICAgICAgICAgaWYgKGJsb2NrQ2FyZEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBibG9ja0NhcmRFbGVtZW50LmNsYXNzTGlzdC5hZGQoYHNsYXRlLWJsb2NrLWNhcmQtJHt0aGlzLmVsZW1lbnQudHlwZX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19