@payloadcms/richtext-lexical 0.7.0 → 0.9.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 (260) hide show
  1. package/components.js +1 -1
  2. package/dist/cell/index.js +1 -1
  3. package/dist/exports/components.js +1 -1
  4. package/dist/field/Field.d.ts.map +1 -1
  5. package/dist/field/Field.js +7 -4
  6. package/dist/field/features/BlockQuote/index.js +1 -1
  7. package/dist/field/features/BlockQuote/markdownTransformer.js +1 -1
  8. package/dist/field/features/Blocks/component/BlockContent.js +1 -1
  9. package/dist/field/features/Blocks/component/FormSavePlugin.js +1 -1
  10. package/dist/field/features/Blocks/component/index.d.ts.map +1 -1
  11. package/dist/field/features/Blocks/component/index.js +2 -1
  12. package/dist/field/features/Blocks/drawer/index.js +1 -1
  13. package/dist/field/features/Blocks/index.d.ts +5 -2
  14. package/dist/field/features/Blocks/index.d.ts.map +1 -1
  15. package/dist/field/features/Blocks/index.js +30 -11
  16. package/dist/field/features/Blocks/nodes/BlocksNode.js +1 -1
  17. package/dist/field/features/Blocks/plugin/commands.js +1 -1
  18. package/dist/field/features/Blocks/plugin/index.js +1 -1
  19. package/dist/field/features/Blocks/populationPromise.d.ts.map +1 -1
  20. package/dist/field/features/Blocks/populationPromise.js +2 -1
  21. package/dist/field/features/Blocks/utils/transformInputFormData.js +1 -1
  22. package/dist/field/features/Blocks/utils/transformInputFormSchema.js +1 -1
  23. package/dist/field/features/Blocks/validate.d.ts.map +1 -1
  24. package/dist/field/features/Blocks/validate.js +2 -1
  25. package/dist/field/features/Heading/index.js +1 -1
  26. package/dist/field/features/Heading/markdownTransformer.js +1 -1
  27. package/dist/field/features/Link/drawer/baseFields.js +1 -1
  28. package/dist/field/features/Link/drawer/index.js +1 -1
  29. package/dist/field/features/Link/drawer/types.js +1 -1
  30. package/dist/field/features/Link/index.d.ts +3 -3
  31. package/dist/field/features/Link/index.d.ts.map +1 -1
  32. package/dist/field/features/Link/index.js +5 -5
  33. package/dist/field/features/Link/nodes/AutoLinkNode.js +1 -1
  34. package/dist/field/features/Link/nodes/LinkNode.js +1 -1
  35. package/dist/field/features/Link/plugins/autoLink/index.js +1 -1
  36. package/dist/field/features/Link/plugins/clickableLink/index.js +1 -1
  37. package/dist/field/features/Link/plugins/floatingLinkEditor/LinkEditor/commands.js +1 -1
  38. package/dist/field/features/Link/plugins/floatingLinkEditor/LinkEditor/index.d.ts.map +1 -1
  39. package/dist/field/features/Link/plugins/floatingLinkEditor/LinkEditor/index.js +2 -1
  40. package/dist/field/features/Link/plugins/floatingLinkEditor/index.js +1 -1
  41. package/dist/field/features/Link/plugins/floatingLinkEditor/types.js +1 -1
  42. package/dist/field/features/Link/plugins/floatingLinkEditor/utilities.js +1 -1
  43. package/dist/field/features/Link/plugins/link/index.js +1 -1
  44. package/dist/field/features/Link/populationPromise.js +1 -1
  45. package/dist/field/features/Paragraph/index.js +1 -1
  46. package/dist/field/features/Relationship/drawer/commands.js +1 -1
  47. package/dist/field/features/Relationship/drawer/index.js +1 -1
  48. package/dist/field/features/Relationship/index.js +1 -1
  49. package/dist/field/features/Relationship/nodes/RelationshipNode.js +1 -1
  50. package/dist/field/features/Relationship/nodes/components/RelationshipComponent.js +1 -1
  51. package/dist/field/features/Relationship/plugins/index.js +1 -1
  52. package/dist/field/features/Relationship/populationPromise.js +1 -1
  53. package/dist/field/features/Relationship/utils/EnabledRelationshipsCondition.js +1 -1
  54. package/dist/field/features/Upload/component/ExtraFieldsDrawer/index.d.ts.map +1 -1
  55. package/dist/field/features/Upload/component/ExtraFieldsDrawer/index.js +5 -3
  56. package/dist/field/features/Upload/component/index.js +1 -1
  57. package/dist/field/features/Upload/drawer/commands.js +1 -1
  58. package/dist/field/features/Upload/drawer/index.js +1 -1
  59. package/dist/field/features/Upload/index.d.ts +2 -2
  60. package/dist/field/features/Upload/index.d.ts.map +1 -1
  61. package/dist/field/features/Upload/index.js +14 -7
  62. package/dist/field/features/Upload/nodes/UploadNode.js +3 -3
  63. package/dist/field/features/Upload/plugin/index.js +1 -1
  64. package/dist/field/features/Upload/populationPromise.js +1 -1
  65. package/dist/field/features/Upload/validate.js +1 -1
  66. package/dist/field/features/align/floatingSelectToolbarAlignDropdownSection.js +1 -1
  67. package/dist/field/features/align/index.js +1 -1
  68. package/dist/field/features/common/floatingSelectToolbarFeaturesButtonsSection/index.js +1 -1
  69. package/dist/field/features/common/floatingSelectToolbarTextDropdownSection/index.js +1 -1
  70. package/dist/field/features/converters/html/converter/converters/linebreak.js +1 -1
  71. package/dist/field/features/converters/html/converter/converters/paragraph.js +1 -1
  72. package/dist/field/features/converters/html/converter/converters/text.js +1 -1
  73. package/dist/field/features/converters/html/converter/defaultConverters.js +1 -1
  74. package/dist/field/features/converters/html/converter/index.d.ts.map +1 -1
  75. package/dist/field/features/converters/html/converter/index.js +21 -16
  76. package/dist/field/features/converters/html/converter/types.js +1 -1
  77. package/dist/field/features/converters/html/field/index.js +1 -1
  78. package/dist/field/features/converters/html/index.js +1 -1
  79. package/dist/field/features/debug/TestRecorder/index.js +1 -1
  80. package/dist/field/features/debug/TestRecorder/plugin/index.js +1 -1
  81. package/dist/field/features/debug/TreeView/index.js +1 -1
  82. package/dist/field/features/debug/TreeView/plugin.js +1 -1
  83. package/dist/field/features/format/Bold/index.js +1 -1
  84. package/dist/field/features/format/Bold/markdownTransformers.js +1 -1
  85. package/dist/field/features/format/InlineCode/index.js +1 -1
  86. package/dist/field/features/format/InlineCode/markdownTransformers.js +1 -1
  87. package/dist/field/features/format/Italic/index.js +1 -1
  88. package/dist/field/features/format/Italic/markdownTransformers.js +1 -1
  89. package/dist/field/features/format/common/floatingSelectToolbarSection.js +1 -1
  90. package/dist/field/features/format/strikethrough/index.js +1 -1
  91. package/dist/field/features/format/strikethrough/markdownTransformers.js +1 -1
  92. package/dist/field/features/format/subscript/index.js +1 -1
  93. package/dist/field/features/format/superscript/index.js +1 -1
  94. package/dist/field/features/format/underline/index.js +1 -1
  95. package/dist/field/features/horizontalrule/component/index.d.ts +10 -0
  96. package/dist/field/features/horizontalrule/component/index.d.ts.map +1 -0
  97. package/dist/field/features/horizontalrule/component/index.js +67 -0
  98. package/dist/field/features/horizontalrule/index.d.ts +3 -0
  99. package/dist/field/features/horizontalrule/index.d.ts.map +1 -0
  100. package/dist/field/features/horizontalrule/index.js +121 -0
  101. package/dist/field/features/horizontalrule/nodes/HorizontalRuleNode.d.ts +53 -0
  102. package/dist/field/features/horizontalrule/nodes/HorizontalRuleNode.d.ts.map +1 -0
  103. package/dist/field/features/horizontalrule/nodes/HorizontalRuleNode.js +148 -0
  104. package/dist/field/features/horizontalrule/plugin/index.d.ts +6 -0
  105. package/dist/field/features/horizontalrule/plugin/index.d.ts.map +1 -0
  106. package/dist/field/features/horizontalrule/plugin/index.js +39 -0
  107. package/dist/field/features/horizontalrule/plugin/index.scss +20 -0
  108. package/dist/field/features/indent/floatingSelectToolbarIndentSection.js +1 -1
  109. package/dist/field/features/indent/index.js +1 -1
  110. package/dist/field/features/indent/plugin.js +1 -1
  111. package/dist/field/features/lists/CheckList/index.js +1 -1
  112. package/dist/field/features/lists/CheckList/markdownTransformers.js +1 -1
  113. package/dist/field/features/lists/CheckList/plugin/index.js +1 -1
  114. package/dist/field/features/lists/OrderedList/index.js +1 -1
  115. package/dist/field/features/lists/OrderedList/markdownTransformer.js +1 -1
  116. package/dist/field/features/lists/UnorderedList/index.js +1 -1
  117. package/dist/field/features/lists/UnorderedList/markdownTransformer.js +1 -1
  118. package/dist/field/features/lists/common/markdown.js +1 -1
  119. package/dist/field/features/lists/htmlConverter.js +2 -2
  120. package/dist/field/features/lists/plugin/index.js +1 -1
  121. package/dist/field/features/migrations/LexicalPluginToLexical/converter/converters/heading.js +1 -1
  122. package/dist/field/features/migrations/LexicalPluginToLexical/converter/converters/link.js +1 -1
  123. package/dist/field/features/migrations/LexicalPluginToLexical/converter/converters/list.js +1 -1
  124. package/dist/field/features/migrations/LexicalPluginToLexical/converter/converters/listItem.js +1 -1
  125. package/dist/field/features/migrations/LexicalPluginToLexical/converter/converters/quote.js +1 -1
  126. package/dist/field/features/migrations/LexicalPluginToLexical/converter/converters/unknown.js +1 -1
  127. package/dist/field/features/migrations/LexicalPluginToLexical/converter/converters/upload.js +1 -1
  128. package/dist/field/features/migrations/LexicalPluginToLexical/converter/defaultConverters.js +1 -1
  129. package/dist/field/features/migrations/LexicalPluginToLexical/converter/index.js +1 -1
  130. package/dist/field/features/migrations/LexicalPluginToLexical/converter/types.js +1 -1
  131. package/dist/field/features/migrations/LexicalPluginToLexical/index.js +1 -1
  132. package/dist/field/features/migrations/LexicalPluginToLexical/nodes/unknownConvertedNode/Component.js +1 -1
  133. package/dist/field/features/migrations/LexicalPluginToLexical/nodes/unknownConvertedNode/index.js +1 -1
  134. package/dist/field/features/migrations/SlateToLexical/converter/converters/blockquote.js +1 -1
  135. package/dist/field/features/migrations/SlateToLexical/converter/converters/heading.js +1 -1
  136. package/dist/field/features/migrations/SlateToLexical/converter/converters/indent.js +1 -1
  137. package/dist/field/features/migrations/SlateToLexical/converter/converters/link.js +1 -1
  138. package/dist/field/features/migrations/SlateToLexical/converter/converters/listItem.js +1 -1
  139. package/dist/field/features/migrations/SlateToLexical/converter/converters/orderedList.js +1 -1
  140. package/dist/field/features/migrations/SlateToLexical/converter/converters/relationship.js +1 -1
  141. package/dist/field/features/migrations/SlateToLexical/converter/converters/unknown.js +1 -1
  142. package/dist/field/features/migrations/SlateToLexical/converter/converters/unorderedList.js +1 -1
  143. package/dist/field/features/migrations/SlateToLexical/converter/converters/upload.js +1 -1
  144. package/dist/field/features/migrations/SlateToLexical/converter/defaultConverters.js +1 -1
  145. package/dist/field/features/migrations/SlateToLexical/converter/index.js +1 -1
  146. package/dist/field/features/migrations/SlateToLexical/converter/types.js +1 -1
  147. package/dist/field/features/migrations/SlateToLexical/index.js +1 -1
  148. package/dist/field/features/migrations/SlateToLexical/nodes/unknownConvertedNode/Component.js +1 -1
  149. package/dist/field/features/migrations/SlateToLexical/nodes/unknownConvertedNode/index.js +1 -1
  150. package/dist/field/features/types.d.ts +13 -3
  151. package/dist/field/features/types.d.ts.map +1 -1
  152. package/dist/field/features/types.js +1 -1
  153. package/dist/field/index.js +1 -1
  154. package/dist/field/lexical/EditorPlugin.js +1 -1
  155. package/dist/field/lexical/LexicalEditor.js +1 -1
  156. package/dist/field/lexical/LexicalProvider.js +1 -1
  157. package/dist/field/lexical/config/EditorConfigProvider.js +1 -1
  158. package/dist/field/lexical/config/default.d.ts.map +1 -1
  159. package/dist/field/lexical/config/default.js +4 -2
  160. package/dist/field/lexical/config/defaultClient.js +1 -1
  161. package/dist/field/lexical/config/loader.js +1 -1
  162. package/dist/field/lexical/config/sanitize.js +1 -1
  163. package/dist/field/lexical/config/types.js +1 -1
  164. package/dist/field/lexical/nodes/index.js +1 -1
  165. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarButton/index.js +1 -1
  166. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/DropDown.js +1 -1
  167. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.js +1 -1
  168. package/dist/field/lexical/plugins/FloatingSelectToolbar/index.js +1 -1
  169. package/dist/field/lexical/plugins/FloatingSelectToolbar/types.js +1 -1
  170. package/dist/field/lexical/plugins/MarkdownShortcut/index.js +1 -1
  171. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +1 -1
  172. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js +1 -1
  173. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js +1 -1
  174. package/dist/field/lexical/plugins/SlashMenu/index.js +1 -1
  175. package/dist/field/lexical/plugins/SlashMenu/useMenuTriggerMatch.js +1 -1
  176. package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.d.ts.map +1 -1
  177. package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.js +12 -7
  178. package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.scss +1 -3
  179. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/debounce.js +1 -1
  180. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js +1 -1
  181. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.js +1 -1
  182. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.js +1 -1
  183. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.d.ts.map +1 -1
  184. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.js +9 -4
  185. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.scss +1 -1
  186. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js +1 -1
  187. package/dist/field/lexical/plugins/handles/utils/doesLineHeightAffectElement.d.ts +9 -0
  188. package/dist/field/lexical/plugins/handles/utils/doesLineHeightAffectElement.d.ts.map +1 -0
  189. package/dist/field/lexical/plugins/handles/utils/doesLineHeightAffectElement.js +39 -0
  190. package/dist/field/lexical/plugins/handles/utils/getCollapsedMargins.js +1 -1
  191. package/dist/field/lexical/plugins/handles/utils/getTopLevelNodeKeys.js +1 -1
  192. package/dist/field/lexical/plugins/handles/utils/isOnHandleElement.js +1 -1
  193. package/dist/field/lexical/plugins/handles/utils/setHandlePosition.d.ts +1 -1
  194. package/dist/field/lexical/plugins/handles/utils/setHandlePosition.d.ts.map +1 -1
  195. package/dist/field/lexical/plugins/handles/utils/setHandlePosition.js +18 -8
  196. package/dist/field/lexical/theme/EditorTheme.js +1 -1
  197. package/dist/field/lexical/ui/ContentEditable.js +1 -1
  198. package/dist/field/lexical/ui/icons/AI/index.js +1 -1
  199. package/dist/field/lexical/ui/icons/Add/index.svg +4 -4
  200. package/dist/field/lexical/ui/icons/AlignCenter/index.js +1 -1
  201. package/dist/field/lexical/ui/icons/AlignJustify/index.js +1 -1
  202. package/dist/field/lexical/ui/icons/AlignLeft/index.js +1 -1
  203. package/dist/field/lexical/ui/icons/AlignRight/index.js +1 -1
  204. package/dist/field/lexical/ui/icons/Block/index.js +1 -1
  205. package/dist/field/lexical/ui/icons/Blockquote/index.js +1 -1
  206. package/dist/field/lexical/ui/icons/Bold/index.js +1 -1
  207. package/dist/field/lexical/ui/icons/Checklist/index.js +1 -1
  208. package/dist/field/lexical/ui/icons/Code/index.js +1 -1
  209. package/dist/field/lexical/ui/icons/CodeBlock/index.js +1 -1
  210. package/dist/field/lexical/ui/icons/DraggableBlock/index.svg +8 -8
  211. package/dist/field/lexical/ui/icons/H1/index.js +1 -1
  212. package/dist/field/lexical/ui/icons/H2/index.js +1 -1
  213. package/dist/field/lexical/ui/icons/H3/index.js +1 -1
  214. package/dist/field/lexical/ui/icons/H4/index.js +1 -1
  215. package/dist/field/lexical/ui/icons/H5/index.js +1 -1
  216. package/dist/field/lexical/ui/icons/H6/index.js +1 -1
  217. package/dist/field/lexical/ui/icons/HorizontalRule/index.d.ts +3 -0
  218. package/dist/field/lexical/ui/icons/HorizontalRule/index.d.ts.map +1 -0
  219. package/dist/field/lexical/ui/icons/HorizontalRule/index.js +34 -0
  220. package/dist/field/lexical/ui/icons/IndentDecrease/index.js +1 -1
  221. package/dist/field/lexical/ui/icons/IndentIncrease/index.js +1 -1
  222. package/dist/field/lexical/ui/icons/Italic/index.js +1 -1
  223. package/dist/field/lexical/ui/icons/Link/index.js +1 -1
  224. package/dist/field/lexical/ui/icons/OrderedList/index.js +1 -1
  225. package/dist/field/lexical/ui/icons/Relationship/index.js +1 -1
  226. package/dist/field/lexical/ui/icons/Strikethrough/index.js +1 -1
  227. package/dist/field/lexical/ui/icons/Subscript/index.js +1 -1
  228. package/dist/field/lexical/ui/icons/Superscript/index.js +1 -1
  229. package/dist/field/lexical/ui/icons/Text/index.js +1 -1
  230. package/dist/field/lexical/ui/icons/Underline/index.js +1 -1
  231. package/dist/field/lexical/ui/icons/UnorderedList/index.js +1 -1
  232. package/dist/field/lexical/ui/icons/Upload/index.js +1 -1
  233. package/dist/field/lexical/utils/canUseDOM.js +1 -1
  234. package/dist/field/lexical/utils/cloneDeep.js +1 -1
  235. package/dist/field/lexical/utils/environment.js +1 -1
  236. package/dist/field/lexical/utils/getDOMRangeRect.js +1 -1
  237. package/dist/field/lexical/utils/getSelectedNode.js +1 -1
  238. package/dist/field/lexical/utils/guard.js +1 -1
  239. package/dist/field/lexical/utils/invariant.js +1 -1
  240. package/dist/field/lexical/utils/joinClasses.js +1 -1
  241. package/dist/field/lexical/utils/markdown/createBlockNode.js +1 -1
  242. package/dist/field/lexical/utils/nodeFormat.js +1 -1
  243. package/dist/field/lexical/utils/point.js +1 -1
  244. package/dist/field/lexical/utils/rect.js +1 -1
  245. package/dist/field/lexical/utils/setFloatingElemPosition.js +1 -1
  246. package/dist/field/lexical/utils/setFloatingElemPositionForLinkEditor.js +1 -1
  247. package/dist/field/lexical/utils/swipe.js +1 -1
  248. package/dist/field/lexical/utils/url.js +1 -1
  249. package/dist/index.d.ts +1 -1
  250. package/dist/index.d.ts.map +1 -1
  251. package/dist/index.js +19 -16
  252. package/dist/populate/defaultValue.js +1 -1
  253. package/dist/populate/populate.js +1 -1
  254. package/dist/populate/recurseNestedFields.d.ts.map +1 -1
  255. package/dist/populate/recurseNestedFields.js +3 -1
  256. package/dist/populate/richTextRelationshipPromise.js +1 -1
  257. package/dist/types.js +1 -1
  258. package/dist/validate/index.js +1 -1
  259. package/dist/validate/validateNodes.js +1 -1
  260. package/package.json +7 -3
@@ -170,7 +170,9 @@ function useAddBlockHandle(editor, anchorElem, isEditable) {
170
170
  const adjustedTop = top + window.scrollY;
171
171
  const adjustedBottom = bottom + window.scrollY;
172
172
  if (pageY < adjustedTop - verticalBuffer || pageY > adjustedBottom + verticalBuffer || pageX < left - horizontalBuffer || pageX > right + horizontalBuffer) {
173
- setHoveredElement(null);
173
+ if (hoveredElement !== null) {
174
+ setHoveredElement(null);
175
+ }
174
176
  return;
175
177
  }
176
178
  // This is used to allow the _emptyBlockElem to be found when the mouse is in the
@@ -186,10 +188,12 @@ function useAddBlockHandle(editor, anchorElem, isEditable) {
186
188
  if (!_emptyBlockElem) {
187
189
  return;
188
190
  }
189
- setHoveredElement({
190
- elem: _emptyBlockElem,
191
- node: blockNode
192
- });
191
+ if (hoveredElement?.node !== blockNode || hoveredElement?.elem !== _emptyBlockElem) {
192
+ setHoveredElement({
193
+ elem: _emptyBlockElem,
194
+ node: blockNode
195
+ });
196
+ }
193
197
  }
194
198
  // Since the draggableBlockElem is outside the actual editor, we need to listen to the document
195
199
  // to be able to detect when the mouse is outside the editor and respect a buffer around
@@ -201,7 +205,8 @@ function useAddBlockHandle(editor, anchorElem, isEditable) {
201
205
  }, [
202
206
  scrollerElem,
203
207
  anchorElem,
204
- editor
208
+ editor,
209
+ hoveredElement
205
210
  ]);
206
211
  (0, _react.useEffect)(()=>{
207
212
  if (menuRef.current && hoveredElement?.node) {
@@ -281,4 +286,4 @@ function AddBlockHandlePlugin({ anchorElem = document.body }) {
281
286
  return useAddBlockHandle(editor, anchorElem, editor._editable);
282
287
  }
283
288
 
284
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9BZGRCbG9ja0hhbmRsZVBsdWdpbi9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5pbXBvcnQgdHlwZSB7IFBhcmFncmFwaE5vZGUgfSBmcm9tICdsZXhpY2FsJ1xuXG5pbXBvcnQgeyB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IH0gZnJvbSAnQGxleGljYWwvcmVhY3QvTGV4aWNhbENvbXBvc2VyQ29udGV4dCdcbmltcG9ydCB7ICRjcmVhdGVQYXJhZ3JhcGhOb2RlIH0gZnJvbSAnbGV4aWNhbCdcbmltcG9ydCB7ICRnZXROb2RlQnlLZXksIHR5cGUgTGV4aWNhbEVkaXRvciwgdHlwZSBMZXhpY2FsTm9kZSB9IGZyb20gJ2xleGljYWwnXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSdcblxuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2d1YXJkJ1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9wb2ludCdcbmltcG9ydCB7IFJlY3QgfSBmcm9tICcuLi8uLi8uLi91dGlscy9yZWN0J1xuaW1wb3J0IHsgRU5BQkxFX1NMQVNIX01FTlVfQ09NTUFORCB9IGZyb20gJy4uLy4uL1NsYXNoTWVudS9MZXhpY2FsVHlwZWFoZWFkTWVudVBsdWdpbidcbmltcG9ydCB7IGdldENvbGxhcHNlZE1hcmdpbnMgfSBmcm9tICcuLi91dGlscy9nZXRDb2xsYXBzZWRNYXJnaW5zJ1xuaW1wb3J0IHsgZ2V0VG9wTGV2ZWxOb2RlS2V5cyB9IGZyb20gJy4uL3V0aWxzL2dldFRvcExldmVsTm9kZUtleXMnXG5pbXBvcnQgeyBpc09uSGFuZGxlRWxlbWVudCB9IGZyb20gJy4uL3V0aWxzL2lzT25IYW5kbGVFbGVtZW50J1xuaW1wb3J0IHsgc2V0SGFuZGxlUG9zaXRpb24gfSBmcm9tICcuLi91dGlscy9zZXRIYW5kbGVQb3NpdGlvbidcbmltcG9ydCAnLi9pbmRleC5zY3NzJ1xuXG5jb25zdCBTUEFDRSA9IC0yNFxuY29uc3QgQUREX0JMT0NLX01FTlVfQ0xBU1NOQU1FID0gJ2FkZC1ibG9jay1tZW51J1xuXG5jb25zdCBEb3dud2FyZCA9IDFcbmNvbnN0IFVwd2FyZCA9IC0xXG5jb25zdCBJbmRldGVybWluYXRlID0gMFxuXG5sZXQgcHJldkluZGV4ID0gSW5maW5pdHlcblxuZnVuY3Rpb24gZ2V0Q3VycmVudEluZGV4KGtleXNMZW5ndGg6IG51bWJlcik6IG51bWJlciB7XG4gIGlmIChrZXlzTGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIEluZmluaXR5XG4gIH1cbiAgaWYgKHByZXZJbmRleCA+PSAwICYmIHByZXZJbmRleCA8IGtleXNMZW5ndGgpIHtcbiAgICByZXR1cm4gcHJldkluZGV4XG4gIH1cblxuICByZXR1cm4gTWF0aC5mbG9vcihrZXlzTGVuZ3RoIC8gMilcbn1cblxuZnVuY3Rpb24gZ2V0QmxvY2tFbGVtZW50KFxuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudCxcbiAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yLFxuICBldmVudDogTW91c2VFdmVudCxcbiAgdXNlRWRnZUFzRGVmYXVsdCA9IGZhbHNlLFxuICBob3Jpem9udGFsT2Zmc2V0ID0gMCxcbik6IHtcbiAgYmxvY2tFbGVtOiBIVE1MRWxlbWVudCB8IG51bGxcbiAgYmxvY2tOb2RlOiBMZXhpY2FsTm9kZSB8IG51bGxcbn0ge1xuICBjb25zdCBhbmNob3JFbGVtZW50UmVjdCA9IGFuY2hvckVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgY29uc3QgdG9wTGV2ZWxOb2RlS2V5cyA9IGdldFRvcExldmVsTm9kZUtleXMoZWRpdG9yKVxuXG4gIGxldCBibG9ja0VsZW06IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGxcbiAgbGV0IGJsb2NrTm9kZTogTGV4aWNhbE5vZGUgfCBudWxsID0gbnVsbFxuXG4gIC8vIFJldHVybiBudWxsIGlmIG1hdGNoaW5nIGJsb2NrIGVsZW1lbnQgaXMgdGhlIGZpcnN0IG9yIGxhc3Qgbm9kZVxuICBlZGl0b3IuZ2V0RWRpdG9yU3RhdGUoKS5yZWFkKCgpID0+IHtcbiAgICBpZiAodXNlRWRnZUFzRGVmYXVsdCkge1xuICAgICAgY29uc3QgW2ZpcnN0Tm9kZSwgbGFzdE5vZGVdID0gW1xuICAgICAgICBlZGl0b3IuZ2V0RWxlbWVudEJ5S2V5KHRvcExldmVsTm9kZUtleXNbMF0pLFxuICAgICAgICBlZGl0b3IuZ2V0RWxlbWVudEJ5S2V5KHRvcExldmVsTm9kZUtleXNbdG9wTGV2ZWxOb2RlS2V5cy5sZW5ndGggLSAxXSksXG4gICAgICBdXG5cbiAgICAgIGNvbnN0IFtmaXJzdE5vZGVSZWN0LCBsYXN0Tm9kZVJlY3RdID0gW1xuICAgICAgICBmaXJzdE5vZGU/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgICAgICBsYXN0Tm9kZT8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgICBdXG5cbiAgICAgIGlmIChmaXJzdE5vZGVSZWN0ICYmIGxhc3ROb2RlUmVjdCkge1xuICAgICAgICBpZiAoZXZlbnQueSA8IGZpcnN0Tm9kZVJlY3QudG9wKSB7XG4gICAgICAgICAgYmxvY2tFbGVtID0gZmlyc3ROb2RlXG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQueSA+IGxhc3ROb2RlUmVjdC5ib3R0b20pIHtcbiAgICAgICAgICBibG9ja0VsZW0gPSBsYXN0Tm9kZVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJsb2NrRWxlbSkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBibG9ja0VsZW06IG51bGwsXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRmluZCBtYXRjaGluZyBibG9jayBlbGVtZW50XG4gICAgbGV0IGluZGV4ID0gZ2V0Q3VycmVudEluZGV4KHRvcExldmVsTm9kZUtleXMubGVuZ3RoKVxuICAgIGxldCBkaXJlY3Rpb24gPSBJbmRldGVybWluYXRlXG5cbiAgICB3aGlsZSAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRvcExldmVsTm9kZUtleXMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBrZXkgPSB0b3BMZXZlbE5vZGVLZXlzW2luZGV4XVxuICAgICAgY29uc3QgZWxlbSA9IGVkaXRvci5nZXRFbGVtZW50QnlLZXkoa2V5KVxuICAgICAgaWYgKGVsZW0gPT09IG51bGwpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBvaW50ID0gbmV3IFBvaW50KGV2ZW50LnggKyBob3Jpem9udGFsT2Zmc2V0LCBldmVudC55KVxuICAgICAgY29uc3QgZG9tUmVjdCA9IFJlY3QuZnJvbURPTShlbGVtKVxuICAgICAgY29uc3QgeyBtYXJnaW5Cb3R0b20sIG1hcmdpblRvcCB9ID0gZ2V0Q29sbGFwc2VkTWFyZ2lucyhlbGVtKVxuXG4gICAgICBjb25zdCByZWN0ID0gZG9tUmVjdC5nZW5lcmF0ZU5ld1JlY3Qoe1xuICAgICAgICBib3R0b206IGRvbVJlY3QuYm90dG9tICsgbWFyZ2luQm90dG9tLFxuICAgICAgICBsZWZ0OiBhbmNob3JFbGVtZW50UmVjdC5sZWZ0LFxuICAgICAgICByaWdodDogYW5jaG9yRWxlbWVudFJlY3QucmlnaHQsXG4gICAgICAgIHRvcDogZG9tUmVjdC50b3AgLSBtYXJnaW5Ub3AsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCB7XG4gICAgICAgIHJlYXNvbjogeyBpc09uQm90dG9tU2lkZSwgaXNPblRvcFNpZGUgfSxcbiAgICAgICAgcmVzdWx0LFxuICAgICAgfSA9IHJlY3QuY29udGFpbnMocG9pbnQpXG5cbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgYmxvY2tFbGVtID0gZWxlbVxuICAgICAgICBibG9ja05vZGUgPSAkZ2V0Tm9kZUJ5S2V5KGtleSlcbiAgICAgICAgcHJldkluZGV4ID0gaW5kZXhcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gSW5kZXRlcm1pbmF0ZSkge1xuICAgICAgICBpZiAoaXNPblRvcFNpZGUpIHtcbiAgICAgICAgICBkaXJlY3Rpb24gPSBVcHdhcmRcbiAgICAgICAgfSBlbHNlIGlmIChpc09uQm90dG9tU2lkZSkge1xuICAgICAgICAgIGRpcmVjdGlvbiA9IERvd253YXJkXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gc3RvcCBzZWFyY2ggYmxvY2sgZWxlbWVudFxuICAgICAgICAgIGRpcmVjdGlvbiA9IEluZmluaXR5XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaW5kZXggKz0gZGlyZWN0aW9uXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiB7XG4gICAgYmxvY2tFbGVtLFxuICAgIGJsb2NrTm9kZSxcbiAgfVxufVxuXG5mdW5jdGlvbiB1c2VBZGRCbG9ja0hhbmRsZShcbiAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yLFxuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudCxcbiAgaXNFZGl0YWJsZTogYm9vbGVhbixcbik6IEpTWC5FbGVtZW50IHtcbiAgY29uc3Qgc2Nyb2xsZXJFbGVtID0gYW5jaG9yRWxlbS5wYXJlbnRFbGVtZW50XG5cbiAgY29uc3QgbWVudVJlZiA9IHVzZVJlZjxIVE1MQnV0dG9uRWxlbWVudD4obnVsbClcbiAgY29uc3QgW2hvdmVyZWRFbGVtZW50LCBzZXRIb3ZlcmVkRWxlbWVudF0gPSB1c2VTdGF0ZTx7XG4gICAgZWxlbTogSFRNTEVsZW1lbnRcbiAgICBub2RlOiBMZXhpY2FsTm9kZVxuICB9IHwgbnVsbD4obnVsbClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZ1bmN0aW9uIG9uRG9jdW1lbnRNb3VzZU1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldFxuICAgICAgaWYgKCFpc0hUTUxFbGVtZW50KHRhcmdldCkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGxldCBkaXN0YW5jZUZyb21TY3JvbGxlckVsZW0gPSAwXG4gICAgICAvLyBDYWxjdWxhdGUgZGlzdGFuY2UgYmV0d2VlbiBzY3JvbGxlckVsZW0gYW5kIHRhcmdldCBpZiB0YXJnZXQgaXMgbm90IGluIHNjcm9sbGVyRWxlbVxuICAgICAgaWYgKHNjcm9sbGVyRWxlbSAmJiAhc2Nyb2xsZXJFbGVtLmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAgICAgY29uc3QgeyBib3R0b20sIGxlZnQsIHJpZ2h0LCB0b3AgfSA9IHNjcm9sbGVyRWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgICBjb25zdCB7IHBhZ2VYLCBwYWdlWSB9ID0gZXZlbnRcbiAgICAgICAgY29uc3QgaG9yaXpvbnRhbEJ1ZmZlciA9IDUwXG4gICAgICAgIGNvbnN0IHZlcnRpY2FsQnVmZmVyID0gMjVcbiAgICAgICAgY29uc3QgYWRqdXN0ZWRUb3AgPSB0b3AgKyB3aW5kb3cuc2Nyb2xsWVxuICAgICAgICBjb25zdCBhZGp1c3RlZEJvdHRvbSA9IGJvdHRvbSArIHdpbmRvdy5zY3JvbGxZXG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHBhZ2VZIDwgYWRqdXN0ZWRUb3AgLSB2ZXJ0aWNhbEJ1ZmZlciB8fFxuICAgICAgICAgIHBhZ2VZID4gYWRqdXN0ZWRCb3R0b20gKyB2ZXJ0aWNhbEJ1ZmZlciB8fFxuICAgICAgICAgIHBhZ2VYIDwgbGVmdCAtIGhvcml6b250YWxCdWZmZXIgfHxcbiAgICAgICAgICBwYWdlWCA+IHJpZ2h0ICsgaG9yaXpvbnRhbEJ1ZmZlclxuICAgICAgICApIHtcbiAgICAgICAgICBzZXRIb3ZlcmVkRWxlbWVudChudWxsKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhpcyBpcyB1c2VkIHRvIGFsbG93IHRoZSBfZW1wdHlCbG9ja0VsZW0gdG8gYmUgZm91bmQgd2hlbiB0aGUgbW91c2UgaXMgaW4gdGhlXG4gICAgICAgIC8vIGJ1ZmZlciB6b25lIGFyb3VuZCB0aGUgc2Nyb2xsZXJFbGVtLlxuICAgICAgICBpZiAocGFnZVggPCBsZWZ0IHx8IHBhZ2VYID4gcmlnaHQpIHtcbiAgICAgICAgICBkaXN0YW5jZUZyb21TY3JvbGxlckVsZW0gPSBwYWdlWCA8IGxlZnQgPyBwYWdlWCAtIGxlZnQgOiBwYWdlWCAtIHJpZ2h0XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGlzT25IYW5kbGVFbGVtZW50KHRhcmdldCwgQUREX0JMT0NLX01FTlVfQ0xBU1NOQU1FKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgYmxvY2tFbGVtOiBfZW1wdHlCbG9ja0VsZW0sIGJsb2NrTm9kZSB9ID0gZ2V0QmxvY2tFbGVtZW50KFxuICAgICAgICBhbmNob3JFbGVtLFxuICAgICAgICBlZGl0b3IsXG4gICAgICAgIGV2ZW50LFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgLWRpc3RhbmNlRnJvbVNjcm9sbGVyRWxlbSxcbiAgICAgIClcbiAgICAgIGlmICghX2VtcHR5QmxvY2tFbGVtKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgc2V0SG92ZXJlZEVsZW1lbnQoe1xuICAgICAgICBlbGVtOiBfZW1wdHlCbG9ja0VsZW0sXG4gICAgICAgIG5vZGU6IGJsb2NrTm9kZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gU2luY2UgdGhlIGRyYWdnYWJsZUJsb2NrRWxlbSBpcyBvdXRzaWRlIHRoZSBhY3R1YWwgZWRpdG9yLCB3ZSBuZWVkIHRvIGxpc3RlbiB0byB0aGUgZG9jdW1lbnRcbiAgICAvLyB0byBiZSBhYmxlIHRvIGRldGVjdCB3aGVuIHRoZSBtb3VzZSBpcyBvdXRzaWRlIHRoZSBlZGl0b3IgYW5kIHJlc3BlY3QgYSBidWZmZXIgYXJvdW5kXG4gICAgLy8gdGhlIHNjcm9sbGVyRWxlbSB0byBhdm9pZCB0aGUgZHJhZ2dhYmxlQmxvY2tFbGVtIGRpc2FwcGVhcmluZyB0b28gZWFybHkuXG4gICAgZG9jdW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uRG9jdW1lbnRNb3VzZU1vdmUpXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQ/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uRG9jdW1lbnRNb3VzZU1vdmUpXG4gICAgfVxuICB9LCBbc2Nyb2xsZXJFbGVtLCBhbmNob3JFbGVtLCBlZGl0b3JdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG1lbnVSZWYuY3VycmVudCAmJiBob3ZlcmVkRWxlbWVudD8ubm9kZSkge1xuICAgICAgZWRpdG9yLmdldEVkaXRvclN0YXRlKCkucmVhZCgoKSA9PiB7XG4gICAgICAgIC8vIENoZWNrIGlmIGJsb2NrTm9kZSBpcyBhbiBlbXB0eSB0ZXh0IG5vZGVcbiAgICAgICAgbGV0IGlzRW1wdHlQYXJhZ3JhcGggPSB0cnVlXG4gICAgICAgIGlmIChcbiAgICAgICAgICBob3ZlcmVkRWxlbWVudC5ub2RlLmdldFR5cGUoKSAhPT0gJ3BhcmFncmFwaCcgfHxcbiAgICAgICAgICBob3ZlcmVkRWxlbWVudC5ub2RlLmdldFRleHRDb250ZW50KCkgIT09ICcnXG4gICAgICAgICkge1xuICAgICAgICAgIGlzRW1wdHlQYXJhZ3JhcGggPSBmYWxzZVxuICAgICAgICB9XG5cbiAgICAgICAgc2V0SGFuZGxlUG9zaXRpb24oXG4gICAgICAgICAgaG92ZXJlZEVsZW1lbnQ/LmVsZW0sXG4gICAgICAgICAgbWVudVJlZi5jdXJyZW50LFxuICAgICAgICAgIGFuY2hvckVsZW0sXG4gICAgICAgICAgaXNFbXB0eVBhcmFncmFwaCA/IFNQQUNFIDogU1BBQ0UgLSAyMCxcbiAgICAgICAgKVxuICAgICAgfSlcbiAgICB9XG4gIH0sIFthbmNob3JFbGVtLCBob3ZlcmVkRWxlbWVudCwgZWRpdG9yXSlcblxuICBjb25zdCBoYW5kbGVBZGRDbGljayA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudCkgPT4ge1xuICAgICAgbGV0IGhvdmVyZWRFbGVtZW50VG9Vc2UgPSBob3ZlcmVkRWxlbWVudFxuICAgICAgaWYgKCFob3ZlcmVkRWxlbWVudFRvVXNlPy5ub2RlKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyAxLiBVcGRhdGUgaG92ZXJlZEVsZW1lbnQubm9kZSB0byBhIG5ldyBwYXJhZ3JhcGggbm9kZSBpZiB0aGUgaG92ZXJlZEVsZW1lbnQubm9kZSBpcyBub3QgYSBwYXJhZ3JhcGggbm9kZVxuICAgICAgZWRpdG9yLnVwZGF0ZSgoKSA9PiB7XG4gICAgICAgIC8vIENoZWNrIGlmIGJsb2NrTm9kZSBpcyBhbiBlbXB0eSB0ZXh0IG5vZGVcbiAgICAgICAgbGV0IGlzRW1wdHlQYXJhZ3JhcGggPSB0cnVlXG4gICAgICAgIGlmIChcbiAgICAgICAgICBob3ZlcmVkRWxlbWVudFRvVXNlLm5vZGUuZ2V0VHlwZSgpICE9PSAncGFyYWdyYXBoJyB8fFxuICAgICAgICAgIGhvdmVyZWRFbGVtZW50VG9Vc2Uubm9kZS5nZXRUZXh0Q29udGVudCgpICE9PSAnJ1xuICAgICAgICApIHtcbiAgICAgICAgICBpc0VtcHR5UGFyYWdyYXBoID0gZmFsc2VcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNFbXB0eVBhcmFncmFwaCkge1xuICAgICAgICAgIGNvbnN0IG5ld1BhcmFncmFwaCA9ICRjcmVhdGVQYXJhZ3JhcGhOb2RlKClcbiAgICAgICAgICBob3ZlcmVkRWxlbWVudFRvVXNlLm5vZGUuaW5zZXJ0QWZ0ZXIobmV3UGFyYWdyYXBoKVxuXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBob3ZlcmVkRWxlbWVudFRvVXNlID0ge1xuICAgICAgICAgICAgICBlbGVtOiBlZGl0b3IuZ2V0RWxlbWVudEJ5S2V5KG5ld1BhcmFncmFwaC5nZXRLZXkoKSksXG4gICAgICAgICAgICAgIG5vZGU6IG5ld1BhcmFncmFwaCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldEhvdmVyZWRFbGVtZW50KGhvdmVyZWRFbGVtZW50VG9Vc2UpXG4gICAgICAgICAgfSwgMClcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgLy8gMi4gRm9jdXMgb24gdGhlIG5ldyBwYXJhZ3JhcGggbm9kZVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGVkaXRvci51cGRhdGUoKCkgPT4ge1xuICAgICAgICAgIGVkaXRvci5mb2N1cygpXG5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBob3ZlcmVkRWxlbWVudFRvVXNlLm5vZGUgJiZcbiAgICAgICAgICAgICdzZWxlY3QnIGluIGhvdmVyZWRFbGVtZW50VG9Vc2Uubm9kZSAmJlxuICAgICAgICAgICAgdHlwZW9mIGhvdmVyZWRFbGVtZW50VG9Vc2Uubm9kZS5zZWxlY3QgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGhvdmVyZWRFbGVtZW50VG9Vc2Uubm9kZS5zZWxlY3QoKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0sIDEpXG5cbiAgICAgIC8vIE1ha2Ugc3VyZSB0aGlzIGlzIGNhbGxlZCBBRlRFUiB0aGUgZm9jdXNpbmcgaGFzIGJlZW4gcHJvY2Vzc2VkIGJ5IHRoZSBicm93c2VyXG4gICAgICAvLyBPdGhlcndpc2UsIHRoaXMgd29uJ3Qgd29ya1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGVkaXRvci5kaXNwYXRjaENvbW1hbmQoRU5BQkxFX1NMQVNIX01FTlVfQ09NTUFORCwge1xuICAgICAgICAgIG5vZGU6IGhvdmVyZWRFbGVtZW50VG9Vc2Uubm9kZSBhcyBQYXJhZ3JhcGhOb2RlLFxuICAgICAgICB9KVxuICAgICAgfSwgMilcblxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICB9LFxuICAgIFtlZGl0b3IsIGhvdmVyZWRFbGVtZW50XSxcbiAgKVxuXG4gIHJldHVybiBjcmVhdGVQb3J0YWwoXG4gICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9XCJpY29uIGFkZC1ibG9jay1tZW51XCJcbiAgICAgICAgb25DbGljaz17KGV2ZW50KSA9PiB7XG4gICAgICAgICAgaGFuZGxlQWRkQ2xpY2soZXZlbnQpXG4gICAgICAgIH19XG4gICAgICAgIHJlZj17bWVudVJlZn1cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtpc0VkaXRhYmxlID8gJ2ljb24nIDogJyd9IC8+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L1JlYWN0LkZyYWdtZW50PixcbiAgICBhbmNob3JFbGVtLFxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBBZGRCbG9ja0hhbmRsZVBsdWdpbih7XG4gIGFuY2hvckVsZW0gPSBkb2N1bWVudC5ib2R5LFxufToge1xuICBhbmNob3JFbGVtPzogSFRNTEVsZW1lbnRcbn0pOiBKU1guRWxlbWVudCB7XG4gIGNvbnN0IFtlZGl0b3JdID0gdXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCgpXG4gIHJldHVybiB1c2VBZGRCbG9ja0hhbmRsZShlZGl0b3IsIGFuY2hvckVsZW0sIGVkaXRvci5fZWRpdGFibGUpXG59XG4iXSwibmFtZXMiOlsiQWRkQmxvY2tIYW5kbGVQbHVnaW4iLCJTUEFDRSIsIkFERF9CTE9DS19NRU5VX0NMQVNTTkFNRSIsIkRvd253YXJkIiwiVXB3YXJkIiwiSW5kZXRlcm1pbmF0ZSIsInByZXZJbmRleCIsIkluZmluaXR5IiwiZ2V0Q3VycmVudEluZGV4Iiwia2V5c0xlbmd0aCIsIk1hdGgiLCJmbG9vciIsImdldEJsb2NrRWxlbWVudCIsImFuY2hvckVsZW0iLCJlZGl0b3IiLCJldmVudCIsInVzZUVkZ2VBc0RlZmF1bHQiLCJob3Jpem9udGFsT2Zmc2V0IiwiYW5jaG9yRWxlbWVudFJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ0b3BMZXZlbE5vZGVLZXlzIiwiZ2V0VG9wTGV2ZWxOb2RlS2V5cyIsImJsb2NrRWxlbSIsImJsb2NrTm9kZSIsImdldEVkaXRvclN0YXRlIiwicmVhZCIsImZpcnN0Tm9kZSIsImxhc3ROb2RlIiwiZ2V0RWxlbWVudEJ5S2V5IiwibGVuZ3RoIiwiZmlyc3ROb2RlUmVjdCIsImxhc3ROb2RlUmVjdCIsInkiLCJ0b3AiLCJib3R0b20iLCJpbmRleCIsImRpcmVjdGlvbiIsImtleSIsImVsZW0iLCJwb2ludCIsIlBvaW50IiwieCIsImRvbVJlY3QiLCJSZWN0IiwiZnJvbURPTSIsIm1hcmdpbkJvdHRvbSIsIm1hcmdpblRvcCIsImdldENvbGxhcHNlZE1hcmdpbnMiLCJyZWN0IiwiZ2VuZXJhdGVOZXdSZWN0IiwibGVmdCIsInJpZ2h0IiwicmVhc29uIiwiaXNPbkJvdHRvbVNpZGUiLCJpc09uVG9wU2lkZSIsInJlc3VsdCIsImNvbnRhaW5zIiwiJGdldE5vZGVCeUtleSIsInVzZUFkZEJsb2NrSGFuZGxlIiwiaXNFZGl0YWJsZSIsInNjcm9sbGVyRWxlbSIsInBhcmVudEVsZW1lbnQiLCJtZW51UmVmIiwidXNlUmVmIiwiaG92ZXJlZEVsZW1lbnQiLCJzZXRIb3ZlcmVkRWxlbWVudCIsInVzZVN0YXRlIiwidXNlRWZmZWN0Iiwib25Eb2N1bWVudE1vdXNlTW92ZSIsInRhcmdldCIsImlzSFRNTEVsZW1lbnQiLCJkaXN0YW5jZUZyb21TY3JvbGxlckVsZW0iLCJwYWdlWCIsInBhZ2VZIiwiaG9yaXpvbnRhbEJ1ZmZlciIsInZlcnRpY2FsQnVmZmVyIiwiYWRqdXN0ZWRUb3AiLCJ3aW5kb3ciLCJzY3JvbGxZIiwiYWRqdXN0ZWRCb3R0b20iLCJpc09uSGFuZGxlRWxlbWVudCIsIl9lbXB0eUJsb2NrRWxlbSIsIm5vZGUiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiY3VycmVudCIsImlzRW1wdHlQYXJhZ3JhcGgiLCJnZXRUeXBlIiwiZ2V0VGV4dENvbnRlbnQiLCJzZXRIYW5kbGVQb3NpdGlvbiIsImhhbmRsZUFkZENsaWNrIiwidXNlQ2FsbGJhY2siLCJob3ZlcmVkRWxlbWVudFRvVXNlIiwidXBkYXRlIiwibmV3UGFyYWdyYXBoIiwiJGNyZWF0ZVBhcmFncmFwaE5vZGUiLCJpbnNlcnRBZnRlciIsInNldFRpbWVvdXQiLCJnZXRLZXkiLCJmb2N1cyIsInNlbGVjdCIsImRpc3BhdGNoQ29tbWFuZCIsIkVOQUJMRV9TTEFTSF9NRU5VX0NPTU1BTkQiLCJzdG9wUHJvcGFnYXRpb24iLCJwcmV2ZW50RGVmYXVsdCIsImNyZWF0ZVBvcnRhbCIsIlJlYWN0IiwiRnJhZ21lbnQiLCJidXR0b24iLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwicmVmIiwidHlwZSIsImRpdiIsImJvZHkiLCJ1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IiwiX2VkaXRhYmxlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7K0JBMFRnQkE7OztlQUFBQTs7O3dDQXZUMEI7eUJBQ0w7K0RBRWQ7MEJBRU07dUJBRUM7dUJBQ1I7c0JBQ0Q7NENBQ3FCO3FDQUNOO3FDQUNBO21DQUNGO21DQUNBO1FBQzNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFUCxNQUFNQyxRQUFRLENBQUM7QUFDZixNQUFNQywyQkFBMkI7QUFFakMsTUFBTUMsV0FBVztBQUNqQixNQUFNQyxTQUFTLENBQUM7QUFDaEIsTUFBTUMsZ0JBQWdCO0FBRXRCLElBQUlDLFlBQVlDO0FBRWhCLFNBQVNDLGdCQUFnQkMsVUFBa0I7SUFDekMsSUFBSUEsZUFBZSxHQUFHO1FBQ3BCLE9BQU9GO0lBQ1Q7SUFDQSxJQUFJRCxhQUFhLEtBQUtBLFlBQVlHLFlBQVk7UUFDNUMsT0FBT0g7SUFDVDtJQUVBLE9B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
289
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9BZGRCbG9ja0hhbmRsZVBsdWdpbi9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5pbXBvcnQgdHlwZSB7IFBhcmFncmFwaE5vZGUgfSBmcm9tICdsZXhpY2FsJ1xuXG5pbXBvcnQgeyB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IH0gZnJvbSAnQGxleGljYWwvcmVhY3QvTGV4aWNhbENvbXBvc2VyQ29udGV4dCdcbmltcG9ydCB7ICRjcmVhdGVQYXJhZ3JhcGhOb2RlIH0gZnJvbSAnbGV4aWNhbCdcbmltcG9ydCB7ICRnZXROb2RlQnlLZXksIHR5cGUgTGV4aWNhbEVkaXRvciwgdHlwZSBMZXhpY2FsTm9kZSB9IGZyb20gJ2xleGljYWwnXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSdcblxuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2d1YXJkJ1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9wb2ludCdcbmltcG9ydCB7IFJlY3QgfSBmcm9tICcuLi8uLi8uLi91dGlscy9yZWN0J1xuaW1wb3J0IHsgRU5BQkxFX1NMQVNIX01FTlVfQ09NTUFORCB9IGZyb20gJy4uLy4uL1NsYXNoTWVudS9MZXhpY2FsVHlwZWFoZWFkTWVudVBsdWdpbidcbmltcG9ydCB7IGdldENvbGxhcHNlZE1hcmdpbnMgfSBmcm9tICcuLi91dGlscy9nZXRDb2xsYXBzZWRNYXJnaW5zJ1xuaW1wb3J0IHsgZ2V0VG9wTGV2ZWxOb2RlS2V5cyB9IGZyb20gJy4uL3V0aWxzL2dldFRvcExldmVsTm9kZUtleXMnXG5pbXBvcnQgeyBpc09uSGFuZGxlRWxlbWVudCB9IGZyb20gJy4uL3V0aWxzL2lzT25IYW5kbGVFbGVtZW50J1xuaW1wb3J0IHsgc2V0SGFuZGxlUG9zaXRpb24gfSBmcm9tICcuLi91dGlscy9zZXRIYW5kbGVQb3NpdGlvbidcbmltcG9ydCAnLi9pbmRleC5zY3NzJ1xuXG5jb25zdCBTUEFDRSA9IC0yNFxuY29uc3QgQUREX0JMT0NLX01FTlVfQ0xBU1NOQU1FID0gJ2FkZC1ibG9jay1tZW51J1xuXG5jb25zdCBEb3dud2FyZCA9IDFcbmNvbnN0IFVwd2FyZCA9IC0xXG5jb25zdCBJbmRldGVybWluYXRlID0gMFxuXG5sZXQgcHJldkluZGV4ID0gSW5maW5pdHlcblxuZnVuY3Rpb24gZ2V0Q3VycmVudEluZGV4KGtleXNMZW5ndGg6IG51bWJlcik6IG51bWJlciB7XG4gIGlmIChrZXlzTGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIEluZmluaXR5XG4gIH1cbiAgaWYgKHByZXZJbmRleCA+PSAwICYmIHByZXZJbmRleCA8IGtleXNMZW5ndGgpIHtcbiAgICByZXR1cm4gcHJldkluZGV4XG4gIH1cblxuICByZXR1cm4gTWF0aC5mbG9vcihrZXlzTGVuZ3RoIC8gMilcbn1cblxuZnVuY3Rpb24gZ2V0QmxvY2tFbGVtZW50KFxuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudCxcbiAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yLFxuICBldmVudDogTW91c2VFdmVudCxcbiAgdXNlRWRnZUFzRGVmYXVsdCA9IGZhbHNlLFxuICBob3Jpem9udGFsT2Zmc2V0ID0gMCxcbik6IHtcbiAgYmxvY2tFbGVtOiBIVE1MRWxlbWVudCB8IG51bGxcbiAgYmxvY2tOb2RlOiBMZXhpY2FsTm9kZSB8IG51bGxcbn0ge1xuICBjb25zdCBhbmNob3JFbGVtZW50UmVjdCA9IGFuY2hvckVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgY29uc3QgdG9wTGV2ZWxOb2RlS2V5cyA9IGdldFRvcExldmVsTm9kZUtleXMoZWRpdG9yKVxuXG4gIGxldCBibG9ja0VsZW06IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGxcbiAgbGV0IGJsb2NrTm9kZTogTGV4aWNhbE5vZGUgfCBudWxsID0gbnVsbFxuXG4gIC8vIFJldHVybiBudWxsIGlmIG1hdGNoaW5nIGJsb2NrIGVsZW1lbnQgaXMgdGhlIGZpcnN0IG9yIGxhc3Qgbm9kZVxuICBlZGl0b3IuZ2V0RWRpdG9yU3RhdGUoKS5yZWFkKCgpID0+IHtcbiAgICBpZiAodXNlRWRnZUFzRGVmYXVsdCkge1xuICAgICAgY29uc3QgW2ZpcnN0Tm9kZSwgbGFzdE5vZGVdID0gW1xuICAgICAgICBlZGl0b3IuZ2V0RWxlbWVudEJ5S2V5KHRvcExldmVsTm9kZUtleXNbMF0pLFxuICAgICAgICBlZGl0b3IuZ2V0RWxlbWVudEJ5S2V5KHRvcExldmVsTm9kZUtleXNbdG9wTGV2ZWxOb2RlS2V5cy5sZW5ndGggLSAxXSksXG4gICAgICBdXG5cbiAgICAgIGNvbnN0IFtmaXJzdE5vZGVSZWN0LCBsYXN0Tm9kZVJlY3RdID0gW1xuICAgICAgICBmaXJzdE5vZGU/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgICAgICBsYXN0Tm9kZT8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgICBdXG5cbiAgICAgIGlmIChmaXJzdE5vZGVSZWN0ICYmIGxhc3ROb2RlUmVjdCkge1xuICAgICAgICBpZiAoZXZlbnQueSA8IGZpcnN0Tm9kZVJlY3QudG9wKSB7XG4gICAgICAgICAgYmxvY2tFbGVtID0gZmlyc3ROb2RlXG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQueSA+IGxhc3ROb2RlUmVjdC5ib3R0b20pIHtcbiAgICAgICAgICBibG9ja0VsZW0gPSBsYXN0Tm9kZVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJsb2NrRWxlbSkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBibG9ja0VsZW06IG51bGwsXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRmluZCBtYXRjaGluZyBibG9jayBlbGVtZW50XG4gICAgbGV0IGluZGV4ID0gZ2V0Q3VycmVudEluZGV4KHRvcExldmVsTm9kZUtleXMubGVuZ3RoKVxuICAgIGxldCBkaXJlY3Rpb24gPSBJbmRldGVybWluYXRlXG5cbiAgICB3aGlsZSAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRvcExldmVsTm9kZUtleXMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBrZXkgPSB0b3BMZXZlbE5vZGVLZXlzW2luZGV4XVxuICAgICAgY29uc3QgZWxlbSA9IGVkaXRvci5nZXRFbGVtZW50QnlLZXkoa2V5KVxuICAgICAgaWYgKGVsZW0gPT09IG51bGwpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBvaW50ID0gbmV3IFBvaW50KGV2ZW50LnggKyBob3Jpem9udGFsT2Zmc2V0LCBldmVudC55KVxuICAgICAgY29uc3QgZG9tUmVjdCA9IFJlY3QuZnJvbURPTShlbGVtKVxuICAgICAgY29uc3QgeyBtYXJnaW5Cb3R0b20sIG1hcmdpblRvcCB9ID0gZ2V0Q29sbGFwc2VkTWFyZ2lucyhlbGVtKVxuXG4gICAgICBjb25zdCByZWN0ID0gZG9tUmVjdC5nZW5lcmF0ZU5ld1JlY3Qoe1xuICAgICAgICBib3R0b206IGRvbVJlY3QuYm90dG9tICsgbWFyZ2luQm90dG9tLFxuICAgICAgICBsZWZ0OiBhbmNob3JFbGVtZW50UmVjdC5sZWZ0LFxuICAgICAgICByaWdodDogYW5jaG9yRWxlbWVudFJlY3QucmlnaHQsXG4gICAgICAgIHRvcDogZG9tUmVjdC50b3AgLSBtYXJnaW5Ub3AsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCB7XG4gICAgICAgIHJlYXNvbjogeyBpc09uQm90dG9tU2lkZSwgaXNPblRvcFNpZGUgfSxcbiAgICAgICAgcmVzdWx0LFxuICAgICAgfSA9IHJlY3QuY29udGFpbnMocG9pbnQpXG5cbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgYmxvY2tFbGVtID0gZWxlbVxuICAgICAgICBibG9ja05vZGUgPSAkZ2V0Tm9kZUJ5S2V5KGtleSlcbiAgICAgICAgcHJldkluZGV4ID0gaW5kZXhcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gSW5kZXRlcm1pbmF0ZSkge1xuICAgICAgICBpZiAoaXNPblRvcFNpZGUpIHtcbiAgICAgICAgICBkaXJlY3Rpb24gPSBVcHdhcmRcbiAgICAgICAgfSBlbHNlIGlmIChpc09uQm90dG9tU2lkZSkge1xuICAgICAgICAgIGRpcmVjdGlvbiA9IERvd253YXJkXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gc3RvcCBzZWFyY2ggYmxvY2sgZWxlbWVudFxuICAgICAgICAgIGRpcmVjdGlvbiA9IEluZmluaXR5XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaW5kZXggKz0gZGlyZWN0aW9uXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiB7XG4gICAgYmxvY2tFbGVtLFxuICAgIGJsb2NrTm9kZSxcbiAgfVxufVxuXG5mdW5jdGlvbiB1c2VBZGRCbG9ja0hhbmRsZShcbiAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yLFxuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudCxcbiAgaXNFZGl0YWJsZTogYm9vbGVhbixcbik6IEpTWC5FbGVtZW50IHtcbiAgY29uc3Qgc2Nyb2xsZXJFbGVtID0gYW5jaG9yRWxlbS5wYXJlbnRFbGVtZW50XG5cbiAgY29uc3QgbWVudVJlZiA9IHVzZVJlZjxIVE1MQnV0dG9uRWxlbWVudD4obnVsbClcbiAgY29uc3QgW2hvdmVyZWRFbGVtZW50LCBzZXRIb3ZlcmVkRWxlbWVudF0gPSB1c2VTdGF0ZTx7XG4gICAgZWxlbTogSFRNTEVsZW1lbnRcbiAgICBub2RlOiBMZXhpY2FsTm9kZVxuICB9IHwgbnVsbD4obnVsbClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZ1bmN0aW9uIG9uRG9jdW1lbnRNb3VzZU1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldFxuICAgICAgaWYgKCFpc0hUTUxFbGVtZW50KHRhcmdldCkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGxldCBkaXN0YW5jZUZyb21TY3JvbGxlckVsZW0gPSAwXG4gICAgICAvLyBDYWxjdWxhdGUgZGlzdGFuY2UgYmV0d2VlbiBzY3JvbGxlckVsZW0gYW5kIHRhcmdldCBpZiB0YXJnZXQgaXMgbm90IGluIHNjcm9sbGVyRWxlbVxuICAgICAgaWYgKHNjcm9sbGVyRWxlbSAmJiAhc2Nyb2xsZXJFbGVtLmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAgICAgY29uc3QgeyBib3R0b20sIGxlZnQsIHJpZ2h0LCB0b3AgfSA9IHNjcm9sbGVyRWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgICBjb25zdCB7IHBhZ2VYLCBwYWdlWSB9ID0gZXZlbnRcbiAgICAgICAgY29uc3QgaG9yaXpvbnRhbEJ1ZmZlciA9IDUwXG4gICAgICAgIGNvbnN0IHZlcnRpY2FsQnVmZmVyID0gMjVcbiAgICAgICAgY29uc3QgYWRqdXN0ZWRUb3AgPSB0b3AgKyB3aW5kb3cuc2Nyb2xsWVxuICAgICAgICBjb25zdCBhZGp1c3RlZEJvdHRvbSA9IGJvdHRvbSArIHdpbmRvdy5zY3JvbGxZXG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHBhZ2VZIDwgYWRqdXN0ZWRUb3AgLSB2ZXJ0aWNhbEJ1ZmZlciB8fFxuICAgICAgICAgIHBhZ2VZID4gYWRqdXN0ZWRCb3R0b20gKyB2ZXJ0aWNhbEJ1ZmZlciB8fFxuICAgICAgICAgIHBhZ2VYIDwgbGVmdCAtIGhvcml6b250YWxCdWZmZXIgfHxcbiAgICAgICAgICBwYWdlWCA+IHJpZ2h0ICsgaG9yaXpvbnRhbEJ1ZmZlclxuICAgICAgICApIHtcbiAgICAgICAgICBpZiAoaG92ZXJlZEVsZW1lbnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHNldEhvdmVyZWRFbGVtZW50KG51bGwpXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhpcyBpcyB1c2VkIHRvIGFsbG93IHRoZSBfZW1wdHlCbG9ja0VsZW0gdG8gYmUgZm91bmQgd2hlbiB0aGUgbW91c2UgaXMgaW4gdGhlXG4gICAgICAgIC8vIGJ1ZmZlciB6b25lIGFyb3VuZCB0aGUgc2Nyb2xsZXJFbGVtLlxuICAgICAgICBpZiAocGFnZVggPCBsZWZ0IHx8IHBhZ2VYID4gcmlnaHQpIHtcbiAgICAgICAgICBkaXN0YW5jZUZyb21TY3JvbGxlckVsZW0gPSBwYWdlWCA8IGxlZnQgPyBwYWdlWCAtIGxlZnQgOiBwYWdlWCAtIHJpZ2h0XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGlzT25IYW5kbGVFbGVtZW50KHRhcmdldCwgQUREX0JMT0NLX01FTlVfQ0xBU1NOQU1FKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgYmxvY2tFbGVtOiBfZW1wdHlCbG9ja0VsZW0sIGJsb2NrTm9kZSB9ID0gZ2V0QmxvY2tFbGVtZW50KFxuICAgICAgICBhbmNob3JFbGVtLFxuICAgICAgICBlZGl0b3IsXG4gICAgICAgIGV2ZW50LFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgLWRpc3RhbmNlRnJvbVNjcm9sbGVyRWxlbSxcbiAgICAgIClcbiAgICAgIGlmICghX2VtcHR5QmxvY2tFbGVtKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKGhvdmVyZWRFbGVtZW50Py5ub2RlICE9PSBibG9ja05vZGUgfHwgaG92ZXJlZEVsZW1lbnQ/LmVsZW0gIT09IF9lbXB0eUJsb2NrRWxlbSkge1xuICAgICAgICBzZXRIb3ZlcmVkRWxlbWVudCh7XG4gICAgICAgICAgZWxlbTogX2VtcHR5QmxvY2tFbGVtLFxuICAgICAgICAgIG5vZGU6IGJsb2NrTm9kZSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTaW5jZSB0aGUgZHJhZ2dhYmxlQmxvY2tFbGVtIGlzIG91dHNpZGUgdGhlIGFjdHVhbCBlZGl0b3IsIHdlIG5lZWQgdG8gbGlzdGVuIHRvIHRoZSBkb2N1bWVudFxuICAgIC8vIHRvIGJlIGFibGUgdG8gZGV0ZWN0IHdoZW4gdGhlIG1vdXNlIGlzIG91dHNpZGUgdGhlIGVkaXRvciBhbmQgcmVzcGVjdCBhIGJ1ZmZlciBhcm91bmRcbiAgICAvLyB0aGUgc2Nyb2xsZXJFbGVtIHRvIGF2b2lkIHRoZSBkcmFnZ2FibGVCbG9ja0VsZW0gZGlzYXBwZWFyaW5nIHRvbyBlYXJseS5cbiAgICBkb2N1bWVudD8uYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Eb2N1bWVudE1vdXNlTW92ZSlcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Eb2N1bWVudE1vdXNlTW92ZSlcbiAgICB9XG4gIH0sIFtzY3JvbGxlckVsZW0sIGFuY2hvckVsZW0sIGVkaXRvciwgaG92ZXJlZEVsZW1lbnRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG1lbnVSZWYuY3VycmVudCAmJiBob3ZlcmVkRWxlbWVudD8ubm9kZSkge1xuICAgICAgZWRpdG9yLmdldEVkaXRvclN0YXRlKCkucmVhZCgoKSA9PiB7XG4gICAgICAgIC8vIENoZWNrIGlmIGJsb2NrTm9kZSBpcyBhbiBlbXB0eSB0ZXh0IG5vZGVcbiAgICAgICAgbGV0IGlzRW1wdHlQYXJhZ3JhcGggPSB0cnVlXG4gICAgICAgIGlmIChcbiAgICAgICAgICBob3ZlcmVkRWxlbWVudC5ub2RlLmdldFR5cGUoKSAhPT0gJ3BhcmFncmFwaCcgfHxcbiAgICAgICAgICBob3ZlcmVkRWxlbWVudC5ub2RlLmdldFRleHRDb250ZW50KCkgIT09ICcnXG4gICAgICAgICkge1xuICAgICAgICAgIGlzRW1wdHlQYXJhZ3JhcGggPSBmYWxzZVxuICAgICAgICB9XG5cbiAgICAgICAgc2V0SGFuZGxlUG9zaXRpb24oXG4gICAgICAgICAgaG92ZXJlZEVsZW1lbnQ/LmVsZW0sXG4gICAgICAgICAgbWVudVJlZi5jdXJyZW50LFxuICAgICAgICAgIGFuY2hvckVsZW0sXG4gICAgICAgICAgaXNFbXB0eVBhcmFncmFwaCA/IFNQQUNFIDogU1BBQ0UgLSAyMCxcbiAgICAgICAgKVxuICAgICAgfSlcbiAgICB9XG4gIH0sIFthbmNob3JFbGVtLCBob3ZlcmVkRWxlbWVudCwgZWRpdG9yXSlcblxuICBjb25zdCBoYW5kbGVBZGRDbGljayA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudCkgPT4ge1xuICAgICAgbGV0IGhvdmVyZWRFbGVtZW50VG9Vc2UgPSBob3ZlcmVkRWxlbWVudFxuICAgICAgaWYgKCFob3ZlcmVkRWxlbWVudFRvVXNlPy5ub2RlKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyAxLiBVcGRhdGUgaG92ZXJlZEVsZW1lbnQubm9kZSB0byBhIG5ldyBwYXJhZ3JhcGggbm9kZSBpZiB0aGUgaG92ZXJlZEVsZW1lbnQubm9kZSBpcyBub3QgYSBwYXJhZ3JhcGggbm9kZVxuICAgICAgZWRpdG9yLnVwZGF0ZSgoKSA9PiB7XG4gICAgICAgIC8vIENoZWNrIGlmIGJsb2NrTm9kZSBpcyBhbiBlbXB0eSB0ZXh0IG5vZGVcbiAgICAgICAgbGV0IGlzRW1wdHlQYXJhZ3JhcGggPSB0cnVlXG4gICAgICAgIGlmIChcbiAgICAgICAgICBob3ZlcmVkRWxlbWVudFRvVXNlLm5vZGUuZ2V0VHlwZSgpICE9PSAncGFyYWdyYXBoJyB8fFxuICAgICAgICAgIGhvdmVyZWRFbGVtZW50VG9Vc2Uubm9kZS5nZXRUZXh0Q29udGVudCgpICE9PSAnJ1xuICAgICAgICApIHtcbiAgICAgICAgICBpc0VtcHR5UGFyYWdyYXBoID0gZmFsc2VcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNFbXB0eVBhcmFncmFwaCkge1xuICAgICAgICAgIGNvbnN0IG5ld1BhcmFncmFwaCA9ICRjcmVhdGVQYXJhZ3JhcGhOb2RlKClcbiAgICAgICAgICBob3ZlcmVkRWxlbWVudFRvVXNlLm5vZGUuaW5zZXJ0QWZ0ZXIobmV3UGFyYWdyYXBoKVxuXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBob3ZlcmVkRWxlbWVudFRvVXNlID0ge1xuICAgICAgICAgICAgICBlbGVtOiBlZGl0b3IuZ2V0RWxlbWVudEJ5S2V5KG5ld1BhcmFncmFwaC5nZXRLZXkoKSksXG4gICAgICAgICAgICAgIG5vZGU6IG5ld1BhcmFncmFwaCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldEhvdmVyZWRFbGVtZW50KGhvdmVyZWRFbGVtZW50VG9Vc2UpXG4gICAgICAgICAgfSwgMClcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgLy8gMi4gRm9jdXMgb24gdGhlIG5ldyBwYXJhZ3JhcGggbm9kZVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGVkaXRvci51cGRhdGUoKCkgPT4ge1xuICAgICAgICAgIGVkaXRvci5mb2N1cygpXG5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBob3ZlcmVkRWxlbWVudFRvVXNlLm5vZGUgJiZcbiAgICAgICAgICAgICdzZWxlY3QnIGluIGhvdmVyZWRFbGVtZW50VG9Vc2Uubm9kZSAmJlxuICAgICAgICAgICAgdHlwZW9mIGhvdmVyZWRFbGVtZW50VG9Vc2Uubm9kZS5zZWxlY3QgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGhvdmVyZWRFbGVtZW50VG9Vc2Uubm9kZS5zZWxlY3QoKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0sIDEpXG5cbiAgICAgIC8vIE1ha2Ugc3VyZSB0aGlzIGlzIGNhbGxlZCBBRlRFUiB0aGUgZm9jdXNpbmcgaGFzIGJlZW4gcHJvY2Vzc2VkIGJ5IHRoZSBicm93c2VyXG4gICAgICAvLyBPdGhlcndpc2UsIHRoaXMgd29uJ3Qgd29ya1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGVkaXRvci5kaXNwYXRjaENvbW1hbmQoRU5BQkxFX1NMQVNIX01FTlVfQ09NTUFORCwge1xuICAgICAgICAgIG5vZGU6IGhvdmVyZWRFbGVtZW50VG9Vc2Uubm9kZSBhcyBQYXJhZ3JhcGhOb2RlLFxuICAgICAgICB9KVxuICAgICAgfSwgMilcblxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICB9LFxuICAgIFtlZGl0b3IsIGhvdmVyZWRFbGVtZW50XSxcbiAgKVxuXG4gIHJldHVybiBjcmVhdGVQb3J0YWwoXG4gICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9XCJpY29uIGFkZC1ibG9jay1tZW51XCJcbiAgICAgICAgb25DbGljaz17KGV2ZW50KSA9PiB7XG4gICAgICAgICAgaGFuZGxlQWRkQ2xpY2soZXZlbnQpXG4gICAgICAgIH19XG4gICAgICAgIHJlZj17bWVudVJlZn1cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtpc0VkaXRhYmxlID8gJ2ljb24nIDogJyd9IC8+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L1JlYWN0LkZyYWdtZW50PixcbiAgICBhbmNob3JFbGVtLFxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBBZGRCbG9ja0hhbmRsZVBsdWdpbih7XG4gIGFuY2hvckVsZW0gPSBkb2N1bWVudC5ib2R5LFxufToge1xuICBhbmNob3JFbGVtPzogSFRNTEVsZW1lbnRcbn0pOiBKU1guRWxlbWVudCB7XG4gIGNvbnN0IFtlZGl0b3JdID0gdXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCgpXG4gIHJldHVybiB1c2VBZGRCbG9ja0hhbmRsZShlZGl0b3IsIGFuY2hvckVsZW0sIGVkaXRvci5fZWRpdGFibGUpXG59XG4iXSwibmFtZXMiOlsiQWRkQmxvY2tIYW5kbGVQbHVnaW4iLCJTUEFDRSIsIkFERF9CTE9DS19NRU5VX0NMQVNTTkFNRSIsIkRvd253YXJkIiwiVXB3YXJkIiwiSW5kZXRlcm1pbmF0ZSIsInByZXZJbmRleCIsIkluZmluaXR5IiwiZ2V0Q3VycmVudEluZGV4Iiwia2V5c0xlbmd0aCIsIk1hdGgiLCJmbG9vciIsImdldEJsb2NrRWxlbWVudCIsImFuY2hvckVsZW0iLCJlZGl0b3IiLCJldmVudCIsInVzZUVkZ2VBc0RlZmF1bHQiLCJob3Jpem9udGFsT2Zmc2V0IiwiYW5jaG9yRWxlbWVudFJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ0b3BMZXZlbE5vZGVLZXlzIiwiZ2V0VG9wTGV2ZWxOb2RlS2V5cyIsImJsb2NrRWxlbSIsImJsb2NrTm9kZSIsImdldEVkaXRvclN0YXRlIiwicmVhZCIsImZpcnN0Tm9kZSIsImxhc3ROb2RlIiwiZ2V0RWxlbWVudEJ5S2V5IiwibGVuZ3RoIiwiZmlyc3ROb2RlUmVjdCIsImxhc3ROb2RlUmVjdCIsInkiLCJ0b3AiLCJib3R0b20iLCJpbmRleCIsImRpcmVjdGlvbiIsImtleSIsImVsZW0iLCJwb2ludCIsIlBvaW50IiwieCIsImRvbVJlY3QiLCJSZWN0IiwiZnJvbURPTSIsIm1hcmdpbkJvdHRvbSIsIm1hcmdpblRvcCIsImdldENvbGxhcHNlZE1hcmdpbnMiLCJyZWN0IiwiZ2VuZXJhdGVOZXdSZWN0IiwibGVmdCIsInJpZ2h0IiwicmVhc29uIiwiaXNPbkJvdHRvbVNpZGUiLCJpc09uVG9wU2lkZSIsInJlc3VsdCIsImNvbnRhaW5zIiwiJGdldE5vZGVCeUtleSIsInVzZUFkZEJsb2NrSGFuZGxlIiwiaXNFZGl0YWJsZSIsInNjcm9sbGVyRWxlbSIsInBhcmVudEVsZW1lbnQiLCJtZW51UmVmIiwidXNlUmVmIiwiaG92ZXJlZEVsZW1lbnQiLCJzZXRIb3ZlcmVkRWxlbWVudCIsInVzZVN0YXRlIiwidXNlRWZmZWN0Iiwib25Eb2N1bWVudE1vdXNlTW92ZSIsInRhcmdldCIsImlzSFRNTEVsZW1lbnQiLCJkaXN0YW5jZUZyb21TY3JvbGxlckVsZW0iLCJwYWdlWCIsInBhZ2VZIiwiaG9yaXpvbnRhbEJ1ZmZlciIsInZlcnRpY2FsQnVmZmVyIiwiYWRqdXN0ZWRUb3AiLCJ3aW5kb3ciLCJzY3JvbGxZIiwiYWRqdXN0ZWRCb3R0b20iLCJpc09uSGFuZGxlRWxlbWVudCIsIl9lbXB0eUJsb2NrRWxlbSIsIm5vZGUiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiY3VycmVudCIsImlzRW1wdHlQYXJhZ3JhcGgiLCJnZXRUeXBlIiwiZ2V0VGV4dENvbnRlbnQiLCJzZXRIYW5kbGVQb3NpdGlvbiIsImhhbmRsZUFkZENsaWNrIiwidXNlQ2FsbGJhY2siLCJob3ZlcmVkRWxlbWVudFRvVXNlIiwidXBkYXRlIiwibmV3UGFyYWdyYXBoIiwiJGNyZWF0ZVBhcmFncmFwaE5vZGUiLCJpbnNlcnRBZnRlciIsInNldFRpbWVvdXQiLCJnZXRLZXkiLCJmb2N1cyIsInNlbGVjdCIsImRpc3BhdGNoQ29tbWFuZCIsIkVOQUJMRV9TTEFTSF9NRU5VX0NPTU1BTkQiLCJzdG9wUHJvcGFnYXRpb24iLCJwcmV2ZW50RGVmYXVsdCIsImNyZWF0ZVBvcnRhbCIsIlJlYWN0IiwiRnJhZ21lbnQiLCJidXR0b24iLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwicmVmIiwidHlwZSIsImRpdiIsImJvZHkiLCJ1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IiwiX2VkaXRhYmxlIl0sInJhbmdlTWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
@@ -3,7 +3,7 @@
3
3
  .add-block-menu {
4
4
  all: unset; // reset all default button styles
5
5
  border-radius: 4px;
6
- padding: 0px;
6
+ padding: 0;
7
7
  cursor: pointer;
8
8
  opacity: 0;
9
9
  position: absolute;
@@ -23,8 +23,6 @@
23
23
  height: 24px;
24
24
  opacity: 0.3;
25
25
  background-image: url(../../../ui/icons/Add/index.svg);
26
- background-position-y: 2.5px;
27
- background-position-x: 0px;
28
26
  }
29
27
 
30
28
  html[data-theme='dark'] & {
@@ -21,4 +21,4 @@ function debounce(func, wait) {
21
21
  };
22
22
  }
23
23
 
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9EcmFnZ2FibGVCbG9ja1BsdWdpbi9kZWJvdW5jZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZGVib3VuY2UoZnVuYzogRnVuY3Rpb24sIHdhaXQ6IG51bWJlcikge1xuICBsZXQgdGltZW91dDogbnVsbCB8IG51bWJlciA9IG51bGxcbiAgcmV0dXJuIGZ1bmN0aW9uICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGNvbnN0IGxhdGVyID0gKCkgPT4ge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpXG4gICAgICB0aW1lb3V0ID0gbnVsbFxuICAgICAgZnVuYyguLi5hcmdzKVxuICAgIH1cblxuICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KVxuICAgIHRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dChsYXRlciwgd2FpdClcbiAgfVxufVxuIl0sIm5hbWVzIjpbImRlYm91bmNlIiwiZnVuYyIsIndhaXQiLCJ0aW1lb3V0IiwiYXJncyIsImxhdGVyIiwiY2xlYXJUaW1lb3V0Iiwid2luZG93Iiwic2V0VGltZW91dCJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFBZ0JBOzs7ZUFBQUE7OztBQUFULFNBQVNBLFNBQVNDLElBQWMsRUFBRUMsSUFBWTtJQUNuRCxJQUFJQyxVQUF5QjtJQUM3QixPQUFPLFNBQVUsR0FBR0MsSUFBVztRQUM3QixNQUFNQyxRQUFRO1lBQ1pDLGFBQWFIO1lBQ2JBLFVBQVU7WUFDVkYsUUFBUUc7UUFDVjtRQUVBRSxhQUFhSDtRQUNiQSxVQUFVSSxPQUFPQyxVQUFVLENBQUNILE9BQU9IO0lBQ3JDO0FBQ0YifQ==
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9EcmFnZ2FibGVCbG9ja1BsdWdpbi9kZWJvdW5jZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZGVib3VuY2UoZnVuYzogRnVuY3Rpb24sIHdhaXQ6IG51bWJlcikge1xuICBsZXQgdGltZW91dDogbnVsbCB8IG51bWJlciA9IG51bGxcbiAgcmV0dXJuIGZ1bmN0aW9uICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGNvbnN0IGxhdGVyID0gKCkgPT4ge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpXG4gICAgICB0aW1lb3V0ID0gbnVsbFxuICAgICAgZnVuYyguLi5hcmdzKVxuICAgIH1cblxuICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KVxuICAgIHRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dChsYXRlciwgd2FpdClcbiAgfVxufVxuIl0sIm5hbWVzIjpbImRlYm91bmNlIiwiZnVuYyIsIndhaXQiLCJ0aW1lb3V0IiwiYXJncyIsImxhdGVyIiwiY2xlYXJUaW1lb3V0Iiwid2luZG93Iiwic2V0VGltZW91dCJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7IiwibWFwcGluZ3MiOiI7Ozs7K0JBQWdCQTs7O2VBQUFBOzs7QUFBVCxTQUFTQSxTQUFTQyxJQUFjLEVBQUVDLElBQVk7SUFDbkQsSUFBSUMsVUFBeUI7SUFDN0IsT0FBTyxTQUFVLEdBQUdDLElBQVc7UUFDN0IsTUFBTUMsUUFBUTtZQUNaQyxhQUFhSDtZQUNiQSxVQUFVO1lBQ1ZGLFFBQVFHO1FBQ1Y7UUFFQUUsYUFBYUg7UUFDYkEsVUFBVUksT0FBT0MsVUFBVSxDQUFDSCxPQUFPSDtJQUNyQztBQUNGIn0=
@@ -21,4 +21,4 @@ function getBoundingClientRectWithoutTransform(elem) {
21
21
  return rect;
22
22
  }
23
23
 
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9EcmFnZ2FibGVCbG9ja1BsdWdpbi9nZXRCb3VuZGluZ1JlY3RXaXRob3V0VHJhbnNmb3JtLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3RXaXRob3V0VHJhbnNmb3JtKGVsZW06IEhUTUxFbGVtZW50KTogRE9NUmVjdCB7XG4gIGNvbnN0IHJlY3QgPSBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG5cbiAgLy8gRXh0cmFjdCB0aGUgdHJhbnNsYXRpb24gdmFsdWUgZnJvbSB0aGUgdHJhbnNmb3JtIHN0eWxlXG4gIGNvbnN0IHRyYW5zZm9ybVZhbHVlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtKS5nZXRQcm9wZXJ0eVZhbHVlKCd0cmFuc2Zvcm0nKVxuICBpZiAoIXRyYW5zZm9ybVZhbHVlIHx8IHRyYW5zZm9ybVZhbHVlID09PSAnbm9uZScpIHtcbiAgICByZXR1cm4gcmVjdFxuICB9XG5cbiAgY29uc3QgbGFzdE51bWJlck9mVHJhbnNmb3JtVmFsdWUgPSB0cmFuc2Zvcm1WYWx1ZS5zcGxpdCgnLCcpLnBvcCgpXG4gIHJlY3QueSA9IHJlY3QueSAtIE51bWJlcihsYXN0TnVtYmVyT2ZUcmFuc2Zvcm1WYWx1ZS5yZXBsYWNlKCcpJywgJycpKVxuXG4gIC8vIFJldHVybiB0aGUgb3JpZ2luYWwgYm91bmRpbmcgcmVjdCBpZiBubyB0cmFuc2xhdGlvbiBpcyBhcHBsaWVkXG4gIHJldHVybiByZWN0XG59XG4iXSwibmFtZXMiOlsiZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybSIsImVsZW0iLCJyZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwidHJhbnNmb3JtVmFsdWUiLCJnZXRDb21wdXRlZFN0eWxlIiwiZ2V0UHJvcGVydHlWYWx1ZSIsImxhc3ROdW1iZXJPZlRyYW5zZm9ybVZhbHVlIiwic3BsaXQiLCJwb3AiLCJ5IiwiTnVtYmVyIiwicmVwbGFjZSJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFBZ0JBOzs7ZUFBQUE7OztBQUFULFNBQVNBLHNDQUFzQ0MsSUFBaUI7SUFDckUsTUFBTUMsT0FBT0QsS0FBS0UscUJBQXFCO0lBRXZDLHlEQUF5RDtJQUN6RCxNQUFNQyxpQkFBaUJDLGlCQUFpQkosTUFBTUssZ0JBQWdCLENBQUM7SUFDL0QsSUFBSSxDQUFDRixrQkFBa0JBLG1CQUFtQixRQUFRO1FBQ2hELE9BQU9GO0lBQ1Q7SUFFQSxNQUFNSyw2QkFBNkJILGVBQWVJLEtBQUssQ0FBQyxLQUFLQyxHQUFHO0lBQ2hFUCxLQUFLUSxDQUFDLEdBQUdSLEtBQUtRLENBQUMsR0FBR0MsT0FBT0osMkJBQTJCSyxPQUFPLENBQUMsS0FBSztJQUVqRSxpRUFBaUU7SUFDakUsT0FBT1Y7QUFDVCJ9
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9EcmFnZ2FibGVCbG9ja1BsdWdpbi9nZXRCb3VuZGluZ1JlY3RXaXRob3V0VHJhbnNmb3JtLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3RXaXRob3V0VHJhbnNmb3JtKGVsZW06IEhUTUxFbGVtZW50KTogRE9NUmVjdCB7XG4gIGNvbnN0IHJlY3QgPSBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG5cbiAgLy8gRXh0cmFjdCB0aGUgdHJhbnNsYXRpb24gdmFsdWUgZnJvbSB0aGUgdHJhbnNmb3JtIHN0eWxlXG4gIGNvbnN0IHRyYW5zZm9ybVZhbHVlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtKS5nZXRQcm9wZXJ0eVZhbHVlKCd0cmFuc2Zvcm0nKVxuICBpZiAoIXRyYW5zZm9ybVZhbHVlIHx8IHRyYW5zZm9ybVZhbHVlID09PSAnbm9uZScpIHtcbiAgICByZXR1cm4gcmVjdFxuICB9XG5cbiAgY29uc3QgbGFzdE51bWJlck9mVHJhbnNmb3JtVmFsdWUgPSB0cmFuc2Zvcm1WYWx1ZS5zcGxpdCgnLCcpLnBvcCgpXG4gIHJlY3QueSA9IHJlY3QueSAtIE51bWJlcihsYXN0TnVtYmVyT2ZUcmFuc2Zvcm1WYWx1ZS5yZXBsYWNlKCcpJywgJycpKVxuXG4gIC8vIFJldHVybiB0aGUgb3JpZ2luYWwgYm91bmRpbmcgcmVjdCBpZiBubyB0cmFuc2xhdGlvbiBpcyBhcHBsaWVkXG4gIHJldHVybiByZWN0XG59XG4iXSwibmFtZXMiOlsiZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybSIsImVsZW0iLCJyZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwidHJhbnNmb3JtVmFsdWUiLCJnZXRDb21wdXRlZFN0eWxlIiwiZ2V0UHJvcGVydHlWYWx1ZSIsImxhc3ROdW1iZXJPZlRyYW5zZm9ybVZhbHVlIiwic3BsaXQiLCJwb3AiLCJ5IiwiTnVtYmVyIiwicmVwbGFjZSJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7IiwibWFwcGluZ3MiOiI7Ozs7K0JBQWdCQTs7O2VBQUFBOzs7QUFBVCxTQUFTQSxzQ0FBc0NDLElBQWlCO0lBQ3JFLE1BQU1DLE9BQU9ELEtBQUtFLHFCQUFxQjtJQUV2Qyx5REFBeUQ7SUFDekQsTUFBTUMsaUJBQWlCQyxpQkFBaUJKLE1BQU1LLGdCQUFnQixDQUFDO0lBQy9ELElBQUksQ0FBQ0Ysa0JBQWtCQSxtQkFBbUIsUUFBUTtRQUNoRCxPQUFPRjtJQUNUO0lBRUEsTUFBTUssNkJBQTZCSCxlQUFlSSxLQUFLLENBQUMsS0FBS0MsR0FBRztJQUNoRVAsS0FBS1EsQ0FBQyxHQUFHUixLQUFLUSxDQUFDLEdBQUdDLE9BQU9KLDJCQUEyQkssT0FBTyxDQUFDLEtBQUs7SUFFakUsaUVBQWlFO0lBQ2pFLE9BQU9WO0FBQ1QifQ==
@@ -157,4 +157,4 @@ function getNodeCloseToPoint(props) {
157
157
  };
158
158
  }
159
159
 
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9EcmFnZ2FibGVCbG9ja1BsdWdpbi9nZXROb2RlQ2xvc2VUb1BvaW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTGV4aWNhbEVkaXRvciwgTGV4aWNhbE5vZGUgfSBmcm9tICdsZXhpY2FsJ1xuXG5pbXBvcnQgeyAkZ2V0Tm9kZUJ5S2V5IH0gZnJvbSAnbGV4aWNhbCdcblxuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9wb2ludCdcbmltcG9ydCB7IFJlY3QgfSBmcm9tICcuLi8uLi8uLi91dGlscy9yZWN0J1xuaW1wb3J0IHsgZ2V0Q29sbGFwc2VkTWFyZ2lucyB9IGZyb20gJy4uL3V0aWxzL2dldENvbGxhcHNlZE1hcmdpbnMnXG5pbXBvcnQgeyBnZXRUb3BMZXZlbE5vZGVLZXlzIH0gZnJvbSAnLi4vdXRpbHMvZ2V0VG9wTGV2ZWxOb2RlS2V5cydcbmltcG9ydCB7IGdldEJvdW5kaW5nQ2xpZW50UmVjdFdpdGhvdXRUcmFuc2Zvcm0gfSBmcm9tICcuL2dldEJvdW5kaW5nUmVjdFdpdGhvdXRUcmFuc2Zvcm0nXG5cbi8vIERpcmVjdGlvbnNcbmNvbnN0IERvd253YXJkID0gMVxuY29uc3QgVXB3YXJkID0gLTFcbmNvbnN0IEluZGV0ZXJtaW5hdGUgPSAwXG5cbnR5cGUgUHJvcHMgPSB7XG4gIGFuY2hvckVsZW06IEhUTUxFbGVtZW50XG4gIGNhY2hlX3RyZXNob2xkPzogbnVtYmVyXG4gIGVkaXRvcjogTGV4aWNhbEVkaXRvclxuICAvKiogZnV6enkgbWFrZXMgdGhlIHNlYXJjaCBub3QgZXhhY3QuIElmIG5vIGV4YWN0IG1hdGNoIGZvdW5kLCBmaW5kIHRoZSBjbG9zZXMgbm9kZSBpbnN0ZWFkIG9mIHJldHVybmluZyBudWxsICovXG4gIGZ1enp5PzogYm9vbGVhblxuICBob3Jpem9udGFsT2Zmc2V0PzogbnVtYmVyXG4gIHBvaW50OiBQb2ludFxuICAvKipcbiAgICogVGhlIGluZGV4IHRvIHN0YXJ0IHNlYXJjaGluZyBmcm9tLiBJdCBjYW4gYmUgYSBjb25zaWRlcmFibGUgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIHRvIHN0YXJ0IHNlYXJjaGluZyBmcm9tIHRoZSBpbmRleCBvZiB0aGVcbiAgICogcHJldmlvdXNseSBmb3VuZCBub2RlLCBhcyB0aGUgbm9kZSBpcyBsaWtlbHkgdG8gYmUgY2xvc2UgdG8gdGhlIG5leHQgbm9kZS5cbiAgICovXG4gIHN0YXJ0SW5kZXg/OiBudW1iZXJcbiAgdXNlRWRnZUFzRGVmYXVsdD86IGJvb2xlYW5cbiAgdmVyYm9zZT86IGJvb2xlYW5cbn1cblxudHlwZSBPdXRwdXQgPSB7XG4gIGJsb2NrRWxlbTogSFRNTEVsZW1lbnQgfCBudWxsXG4gIGJsb2NrTm9kZTogTGV4aWNhbE5vZGUgfCBudWxsXG4gIGZvdW5kQXRJbmRleDogbnVtYmVyXG4gIGlzRm91bmROb2RlRW1wdHlQYXJhZ3JhcGg6IGJvb2xlYW5cbn1cblxuY29uc3QgY2FjaGUgPSB7XG4gIHByb3BzOiBudWxsIGFzIFByb3BzIHwgbnVsbCxcbiAgcmVzdWx0OiBudWxsIGFzIE91dHB1dCB8IG51bGwsXG59XG5cbmZ1bmN0aW9uIGlzUG9pbnRDbG9zZShwcmV2aW91czogUG9pbnQsIGN1cnJlbnQ6IFBvaW50LCB0aHJlc2hvbGQ6IG51bWJlciA9IDIwKTogYm9vbGVhbiB7XG4gIGNvbnN0IGR4ID0gcHJldmlvdXMueCAtIGN1cnJlbnQueFxuICBjb25zdCBkeSA9IHByZXZpb3VzLnkgLSBjdXJyZW50LnlcbiAgcmV0dXJuIGR4ICogZHggKyBkeSAqIGR5IDw9IHRocmVzaG9sZCAqIHRocmVzaG9sZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Tm9kZUNsb3NlVG9Qb2ludChwcm9wczogUHJvcHMpOiBPdXRwdXQge1xuICBjb25zdCB7XG4gICAgYW5jaG9yRWxlbSxcbiAgICBjYWNoZV90cmVzaG9sZCA9IDIwLFxuICAgIGVkaXRvcixcbiAgICBmdXp6eSA9IGZhbHNlLFxuICAgIGhvcml6b250YWxPZmZzZXQgPSAwLFxuICAgIHBvaW50OiB7IHgsIHkgfSxcbiAgICBzdGFydEluZGV4ID0gMCxcbiAgICB1c2VFZGdlQXNEZWZhdWx0ID0gZmFsc2UsXG4gICAgdmVyYm9zZSA9IGZhbHNlLFxuICB9ID0gcHJvcHNcblxuICAvLyBVc2UgY2FjaGVcbiAgaWYgKFxuICAgIGNhY2hlX3RyZXNob2xkID4gMCAmJlxuICAgIGNhY2hlLnByb3BzICYmXG4gICAgY2FjaGUucmVzdWx0ICYmXG4gICAgY2FjaGUucHJvcHMuZnV6enkgPT09IHByb3BzLmZ1enp5ICYmXG4gICAgY2FjaGUucHJvcHMuaG9yaXpvbnRhbE9mZnNldCA9PT0gcHJvcHMuaG9yaXpvbnRhbE9mZnNldCAmJlxuICAgIGNhY2hlLnByb3BzLnVzZUVkZ2VBc0RlZmF1bHQgPT09IHByb3BzLnVzZUVkZ2VBc0RlZmF1bHQgJiZcbiAgICBpc1BvaW50Q2xvc2UoY2FjaGUucHJvcHMucG9pbnQsIHByb3BzLnBvaW50LCBjYWNoZV90cmVzaG9sZClcbiAgKSB7XG4gICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgIC8vY29uc29sZS5sb2coJ1JldHVybmluZyBjYWNoZWQgcmVzdWx0JylcbiAgICB9XG4gICAgcmV0dXJuIGNhY2hlLnJlc3VsdFxuICB9XG5cbiAgY29uc3QgYW5jaG9yRWxlbWVudFJlY3QgPSBhbmNob3JFbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gIGNvbnN0IHRvcExldmVsTm9kZUtleXMgPSBnZXRUb3BMZXZlbE5vZGVLZXlzKGVkaXRvcilcblxuICBjb25zdCBjbG9zZXN0QmxvY2tFbGVtOiB7XG4gICAgYmxvY2tFbGVtOiBIVE1MRWxlbWVudCB8IG51bGxcbiAgICBibG9ja05vZGU6IExleGljYWxOb2RlIHwgbnVsbFxuICAgIGRpc3RhbmNlOiBudW1iZXJcbiAgICBmb3VuZEF0SW5kZXg6IG51bWJlclxuICAgIGlzRm91bmROb2RlRW1wdHlQYXJhZ3JhcGg6IGJvb2xlYW5cbiAgfSA9IHtcbiAgICBibG9ja0VsZW06IG51bGwsXG4gICAgYmxvY2tOb2RlOiBudWxsLFxuICAgIGRpc3RhbmNlOiBJbmZpbml0eSxcbiAgICBmb3VuZEF0SW5kZXg6IC0xLFxuICAgIGlzRm91bmROb2RlRW1wdHlQYXJhZ3JhcGg6IGZhbHNlLFxuICB9XG5cbiAgLy8gUmV0dXJuIG51bGwgaWYgbWF0Y2hpbmcgYmxvY2sgZWxlbWVudCBpcyB0aGUgZmlyc3Qgb3IgbGFzdCBub2RlXG4gIGVkaXRvci5nZXRFZGl0b3JTdGF0ZSgpLnJlYWQoKCkgPT4ge1xuICAgIGlmICh1c2VFZGdlQXNEZWZhdWx0KSB7XG4gICAgICBjb25zdCBbZmlyc3ROb2RlLCBsYXN0Tm9kZV0gPSBbXG4gICAgICAgIGVkaXRvci5nZXRFbGVtZW50QnlLZXkodG9wTGV2ZWxOb2RlS2V5c1swXSksXG4gICAgICAgIGVkaXRvci5nZXRFbGVtZW50QnlLZXkodG9wTGV2ZWxOb2RlS2V5c1t0b3BMZXZlbE5vZGVLZXlzLmxlbmd0aCAtIDFdKSxcbiAgICAgIF1cblxuICAgICAgY29uc3QgW2ZpcnN0Tm9kZVJlY3QsIGxhc3ROb2RlUmVjdF0gPSBbXG4gICAgICAgIGdldEJvdW5kaW5nQ2xpZW50UmVjdFdpdGhvdXRUcmFuc2Zvcm0oZmlyc3ROb2RlKSxcbiAgICAgICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybShsYXN0Tm9kZSksXG4gICAgICBdXG5cbiAgICAgIGlmIChmaXJzdE5vZGVSZWN0ICYmIGxhc3ROb2RlUmVjdCkge1xuICAgICAgICBpZiAoeSA8IGZpcnN0Tm9kZVJlY3QudG9wKSB7XG4gICAgICAgICAgY2xvc2VzdEJsb2NrRWxlbS5ibG9ja0VsZW0gPSBmaXJzdE5vZGVcbiAgICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmRpc3RhbmNlID0gZmlyc3ROb2RlUmVjdC50b3AgLSB5XG4gICAgICAgICAgY2xvc2VzdEJsb2NrRWxlbS5ibG9ja05vZGUgPSAkZ2V0Tm9kZUJ5S2V5KHRvcExldmVsTm9kZUtleXNbMF0pXG4gICAgICAgICAgY2xvc2VzdEJsb2NrRWxlbS5mb3VuZEF0SW5kZXggPSAwXG4gICAgICAgIH0gZWxzZSBpZiAoeSA+IGxhc3ROb2RlUmVjdC5ib3R0b20pIHtcbiAgICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmRpc3RhbmNlID0geSAtIGxhc3ROb2RlUmVjdC5ib3R0b21cbiAgICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmJsb2NrTm9kZSA9ICRnZXROb2RlQnlLZXkodG9wTGV2ZWxOb2RlS2V5c1t0b3BMZXZlbE5vZGVLZXlzLmxlbmd0aCAtIDFdKVxuICAgICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uYmxvY2tFbGVtID0gbGFzdE5vZGVcbiAgICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmZvdW5kQXRJbmRleCA9IHRvcExldmVsTm9kZUtleXMubGVuZ3RoIC0gMVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNsb3Nlc3RCbG9ja0VsZW0/LmJsb2NrRWxlbSkge1xuICAgICAgICAgIGlmICh2ZXJib3NlKSB7XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKCd1c2VFZGdlQXNEZWZhdWx0JywgdXNlRWRnZUFzRGVmYXVsdClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYmxvY2tFbGVtOiBudWxsLFxuICAgICAgICAgICAgaXNGb3VuZE5vZGVFbXB0eVBhcmFncmFwaDogZmFsc2UsXG4gICAgICAgICAgfSBhcyBPdXRwdXRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZpbmQgbWF0Y2hpbmcgYmxvY2sgZWxlbWVudFxuICAgIGxldCBpbmRleCA9IHN0YXJ0SW5kZXhcbiAgICBsZXQgZGlyZWN0aW9uID0gSW5kZXRlcm1pbmF0ZVxuXG4gICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgIC8vY29uc29sZS5sb2coJ3N0YXJ0IGluZGV4Jywgc3RhcnRJbmRleClcbiAgICB9XG5cbiAgICB3aGlsZSAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRvcExldmVsTm9kZUtleXMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBrZXkgPSB0b3BMZXZlbE5vZGVLZXlzW2luZGV4XVxuICAgICAgY29uc3QgZWxlbSA9IGVkaXRvci5nZXRFbGVtZW50QnlLZXkoa2V5KVxuICAgICAgaWYgKGVsZW0gPT09IG51bGwpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBvaW50ID0gbmV3IFBvaW50KHggKyBob3Jpem9udGFsT2Zmc2V0LCB5KVxuICAgICAgLy9jb25zdCBkb21SZWN0ID0gUmVjdC5mcm9tRE9NKGVsZW0pXG4gICAgICAvLyBEbyBub3QgY29uc2lkZXIgdHJhbnNmb3JtIG9mIGJsb2NrcyB3aGVuIGNhbGN1bGF0aW5nIGRpc3RhbmNlXG4gICAgICBjb25zdCBkb21SZWN0ID0gUmVjdC5mcm9tRE9NUmVjdChnZXRCb3VuZGluZ0NsaWVudFJlY3RXaXRob3V0VHJhbnNmb3JtKGVsZW0pKVxuXG4gICAgICBjb25zdCB7IG1hcmdpbkJvdHRvbSwgbWFyZ2luVG9wIH0gPSBnZXRDb2xsYXBzZWRNYXJnaW5zKGVsZW0pXG5cbiAgICAgIGNvbnN0IHJlY3QgPSBkb21SZWN0LmdlbmVyYXRlTmV3UmVjdCh7XG4gICAgICAgIGJvdHRvbTogZG9tUmVjdC5ib3R0b20gKyBtYXJnaW5Cb3R0b20sXG4gICAgICAgIGxlZnQ6IGFuY2hvckVsZW1lbnRSZWN0LmxlZnQsXG4gICAgICAgIHJpZ2h0OiBhbmNob3JFbGVtZW50UmVjdC5yaWdodCxcbiAgICAgICAgdG9wOiBkb21SZWN0LnRvcCAtIG1hcmdpblRvcCxcbiAgICAgIH0pXG5cbiAgICAgIGNvbnN0IHsgZGlzdGFuY2UsIGlzT25Cb3R0b21TaWRlLCBpc09uVG9wU2lkZSB9ID0gcmVjdC5kaXN0YW5jZUZyb21Qb2ludChwb2ludClcblxuICAgICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgICAgLy9jb25zb2xlLmxvZygnZGlzdGFuY2UnLCBkaXN0YW5jZSlcbiAgICAgIH1cblxuICAgICAgaWYgKGRpc3RhbmNlID09PSAwKSB7XG4gICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uYmxvY2tFbGVtID0gZWxlbVxuICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmJsb2NrTm9kZSA9ICRnZXROb2RlQnlLZXkoa2V5KVxuICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmZvdW5kQXRJbmRleCA9IGluZGV4XG4gICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uZGlzdGFuY2UgPSBkaXN0YW5jZVxuXG4gICAgICAgIC8vIENoZWNrIGlmIGJsb2NrTm9kZSBpcyBhbiBlbXB0eSB0ZXh0IG5vZGVcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uYmxvY2tOb2RlICYmXG4gICAgICAgICAgY2xvc2VzdEJsb2NrRWxlbS5ibG9ja05vZGUuZ2V0VHlwZSgpID09PSAncGFyYWdyYXBoJyAmJlxuICAgICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uYmxvY2tOb2RlLmdldFRleHRDb250ZW50KCkgPT09ICcnXG4gICAgICAgICkge1xuICAgICAgICAgIGlmICghZnV6enkpIHtcbiAgICAgICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uYmxvY2tFbGVtID0gbnVsbFxuICAgICAgICAgICAgY2xvc2VzdEJsb2NrRWxlbS5ibG9ja05vZGUgPSBudWxsXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2xvc2VzdEJsb2NrRWxlbS5pc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9IGVsc2UgaWYgKGZ1enp5KSB7XG4gICAgICAgIGlmIChkaXN0YW5jZSA8IGNsb3Nlc3RCbG9ja0VsZW0uZGlzdGFuY2UpIHtcbiAgICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmJsb2NrRWxlbSA9IGVsZW1cbiAgICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmJsb2NrTm9kZSA9ICRnZXROb2RlQnlLZXkoa2V5KVxuICAgICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uZGlzdGFuY2UgPSBkaXN0YW5jZVxuICAgICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uZm91bmRBdEluZGV4ID0gaW5kZXhcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZGlyZWN0aW9uID09PSBJbmRldGVybWluYXRlKSB7XG4gICAgICAgIGlmIChpc09uVG9wU2lkZSkge1xuICAgICAgICAgIGRpcmVjdGlvbiA9IFVwd2FyZFxuICAgICAgICB9IGVsc2UgaWYgKGlzT25Cb3R0b21TaWRlKSB7XG4gICAgICAgICAgZGlyZWN0aW9uID0gRG93bndhcmRcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBzdG9wIHNlYXJjaCBibG9jayBlbGVtZW50XG4gICAgICAgICAgZGlyZWN0aW9uID0gSW5maW5pdHlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpbmRleCArPSBkaXJlY3Rpb25cbiAgICB9XG4gIH0pXG5cbiAgLy8gU3RvcmUgaW4gY2FjaGUgYmVmb3JlIHJldHVybmluZ1xuICBjYWNoZS5wcm9wcyA9IHByb3BzXG4gIGNhY2hlLnJlc3VsdCA9IHtcbiAgICBibG9ja0VsZW06IGNsb3Nlc3RCbG9ja0VsZW0uYmxvY2tFbGVtLFxuICAgIGJsb2NrTm9kZTogY2xvc2VzdEJsb2NrRWxlbS5ibG9ja05vZGUsXG4gICAgZm91bmRBdEluZGV4OiBjbG9zZXN0QmxvY2tFbGVtLmZvdW5kQXRJbmRleCxcbiAgICBpc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoOiBjbG9zZXN0QmxvY2tFbGVtLmlzRm91bmROb2RlRW1wdHlQYXJhZ3JhcGgsXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGJsb2NrRWxlbTogY2xvc2VzdEJsb2NrRWxlbS5ibG9ja0VsZW0sXG4gICAgYmxvY2tOb2RlOiBjbG9zZXN0QmxvY2tFbGVtLmJsb2NrTm9kZSxcbiAgICBmb3VuZEF0SW5kZXg6IGNsb3Nlc3RCbG9ja0VsZW0uZm91bmRBdEluZGV4LFxuICAgIGlzRm91bmROb2RlRW1wdHlQYXJhZ3JhcGg6IGNsb3Nlc3RCbG9ja0VsZW0uaXNGb3VuZE5vZGVFbXB0eVBhcmFncmFwaCxcbiAgfVxufVxuIl0sIm5hbWVzIjpbImdldE5vZGVDbG9zZVRvUG9pbnQiLCJEb3dud2FyZCIsIlVwd2FyZCIsIkluZGV0ZXJtaW5hdGUiLCJjYWNoZSIsInByb3BzIiwicmVzdWx0IiwiaXNQb2ludENsb3NlIiwicHJldmlvdXMiLCJjdXJyZW50IiwidGhyZXNob2xkIiwiZHgiLCJ4IiwiZHkiLCJ5IiwiYW5jaG9yRWxlbSIsImNhY2hlX3RyZXNob2xkIiwiZWRpdG9yIiwiZnV6enkiLCJob3Jpem9udGFsT2Zmc2V0IiwicG9pbnQiLCJzdGFydEluZGV4IiwidXNlRWRnZUFzRGVmYXVsdCIsInZlcmJvc2UiLCJhbmNob3JFbGVtZW50UmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInRvcExldmVsTm9kZUtleXMiLCJnZXRUb3BMZXZlbE5vZGVLZXlzIiwiY2xvc2VzdEJsb2NrRWxlbSIsImJsb2NrRWxlbSIsImJsb2NrTm9kZSIsImRpc3RhbmNlIiwiSW5maW5pdHkiLCJmb3VuZEF0SW5kZXgiLCJpc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoIiwiZ2V0RWRpdG9yU3RhdGUiLCJyZWFkIiwiZmlyc3ROb2RlIiwibGFzdE5vZGUiLCJnZXRFbGVtZW50QnlLZXkiLCJsZW5ndGgiLCJmaXJzdE5vZGVSZWN0IiwibGFzdE5vZGVSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybSIsInRvcCIsIiRnZXROb2RlQnlLZXkiLCJib3R0b20iLCJpbmRleCIsImRpcmVjdGlvbiIsImtleSIsImVsZW0iLCJQb2ludCIsImRvbVJlY3QiLCJSZWN0IiwiZnJvbURPTVJlY3QiLCJtYXJnaW5Cb3R0b20iLCJtYXJnaW5Ub3AiLCJnZXRDb2xsYXBzZWRNYXJnaW5zIiwicmVjdCIsImdlbmVyYXRlTmV3UmVjdCIsImxlZnQiLCJyaWdodCIsImlzT25Cb3R0b21TaWRlIiwiaXNPblRvcFNpZGUiLCJkaXN0YW5jZUZyb21Qb2ludCIsImdldFR5cGUiLCJnZXRUZXh0Q29udGVudCJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFrRGdCQTs7O2VBQUFBOzs7eUJBaERjO3VCQUVSO3NCQUNEO3FDQUNlO3FDQUNBO2lEQUNrQjtBQUV0RCxhQUFhO0FBQ2IsTUFBTUMsV0FBVztBQUNqQixNQUFNQyxTQUFTLENBQUM7QUFDaEIsTUFBTUMsZ0JBQWdCO0FBMEJ0QixNQUFNQyxRQUFRO0lBQ1pDLE9BQU87SUFDUEMsUUFBUTtBQUNWO0FBRUEsU0FBU0MsYUFBYUMsUUFBZSxFQUFFQyxPQUFjLEVBQUVDLFlBQW9CLEVBQUU7SUFDM0UsTUFBTUMsS0FBS0gsU0FBU0ksQ0FBQyxHQUFHSCxRQUFRRyxDQUFDO0lBQ2pDLE1BQU1DLEtBQUtMLFNBQVNNLENBQUMsR0FBR0wsUUFBUUssQ0FBQztJQUNqQyxPQUFPSCxLQUFLQSxLQUFLRSxLQUFLQSxNQUFNSCxZQUFZQTtBQUMxQztBQUVPLFNBQVNWLG9CQUFvQkssS0FBWTtJQUM5QyxNQUFNLEVBQ0pVLFVBQVUsRUFDVkMsaUJBQWlCLEVBQUUsRUFDbkJDLE1BQU0sRUFDTkMsUUFBUSxLQUFLLEVBQ2JDLG1CQUFtQixDQUFDLEVBQ3BCQyxPQUFPLEVBQUVSLENBQUMsRUFBRUUsQ0FBQyxFQUFFLEVBQ2ZPLGFBQWEsQ0FBQyxFQUNkQyxtQkFBbUIsS0FBSyxFQUN4QkMsVUFBVSxLQUFLLEVBQ2hCLEdBQUdsQjtJQUVKLFlBQVk7SUFDWixJQUNFVyxpQkFBaUIsS0FDakJaLE1BQU1DLEtBQUssSUFDWEQsTUFBTUUsTUFBTSxJQUNaRixNQUFNQyxLQUFLLENBQUNhLEtBQUssS0FBS2IsTUFBTWEsS0FBSyxJQUNqQ2QsTUFBTUMsS0FBSyxDQUFDYyxnQkFBZ0IsS0FBS2QsTUFBTWMsZ0JBQWdCLElBQ3ZEZixNQUFNQyxLQUFLLENBQUNpQixnQkFBZ0IsS0FBS2pCLE1BQU1pQixnQkFBZ0IsSUFDdkRmLGFBQWFILE1BQU1DLEtBQUssQ0FB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
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9EcmFnZ2FibGVCbG9ja1BsdWdpbi9nZXROb2RlQ2xvc2VUb1BvaW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTGV4aWNhbEVkaXRvciwgTGV4aWNhbE5vZGUgfSBmcm9tICdsZXhpY2FsJ1xuXG5pbXBvcnQgeyAkZ2V0Tm9kZUJ5S2V5IH0gZnJvbSAnbGV4aWNhbCdcblxuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9wb2ludCdcbmltcG9ydCB7IFJlY3QgfSBmcm9tICcuLi8uLi8uLi91dGlscy9yZWN0J1xuaW1wb3J0IHsgZ2V0Q29sbGFwc2VkTWFyZ2lucyB9IGZyb20gJy4uL3V0aWxzL2dldENvbGxhcHNlZE1hcmdpbnMnXG5pbXBvcnQgeyBnZXRUb3BMZXZlbE5vZGVLZXlzIH0gZnJvbSAnLi4vdXRpbHMvZ2V0VG9wTGV2ZWxOb2RlS2V5cydcbmltcG9ydCB7IGdldEJvdW5kaW5nQ2xpZW50UmVjdFdpdGhvdXRUcmFuc2Zvcm0gfSBmcm9tICcuL2dldEJvdW5kaW5nUmVjdFdpdGhvdXRUcmFuc2Zvcm0nXG5cbi8vIERpcmVjdGlvbnNcbmNvbnN0IERvd253YXJkID0gMVxuY29uc3QgVXB3YXJkID0gLTFcbmNvbnN0IEluZGV0ZXJtaW5hdGUgPSAwXG5cbnR5cGUgUHJvcHMgPSB7XG4gIGFuY2hvckVsZW06IEhUTUxFbGVtZW50XG4gIGNhY2hlX3RyZXNob2xkPzogbnVtYmVyXG4gIGVkaXRvcjogTGV4aWNhbEVkaXRvclxuICAvKiogZnV6enkgbWFrZXMgdGhlIHNlYXJjaCBub3QgZXhhY3QuIElmIG5vIGV4YWN0IG1hdGNoIGZvdW5kLCBmaW5kIHRoZSBjbG9zZXMgbm9kZSBpbnN0ZWFkIG9mIHJldHVybmluZyBudWxsICovXG4gIGZ1enp5PzogYm9vbGVhblxuICBob3Jpem9udGFsT2Zmc2V0PzogbnVtYmVyXG4gIHBvaW50OiBQb2ludFxuICAvKipcbiAgICogVGhlIGluZGV4IHRvIHN0YXJ0IHNlYXJjaGluZyBmcm9tLiBJdCBjYW4gYmUgYSBjb25zaWRlcmFibGUgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIHRvIHN0YXJ0IHNlYXJjaGluZyBmcm9tIHRoZSBpbmRleCBvZiB0aGVcbiAgICogcHJldmlvdXNseSBmb3VuZCBub2RlLCBhcyB0aGUgbm9kZSBpcyBsaWtlbHkgdG8gYmUgY2xvc2UgdG8gdGhlIG5leHQgbm9kZS5cbiAgICovXG4gIHN0YXJ0SW5kZXg/OiBudW1iZXJcbiAgdXNlRWRnZUFzRGVmYXVsdD86IGJvb2xlYW5cbiAgdmVyYm9zZT86IGJvb2xlYW5cbn1cblxudHlwZSBPdXRwdXQgPSB7XG4gIGJsb2NrRWxlbTogSFRNTEVsZW1lbnQgfCBudWxsXG4gIGJsb2NrTm9kZTogTGV4aWNhbE5vZGUgfCBudWxsXG4gIGZvdW5kQXRJbmRleDogbnVtYmVyXG4gIGlzRm91bmROb2RlRW1wdHlQYXJhZ3JhcGg6IGJvb2xlYW5cbn1cblxuY29uc3QgY2FjaGUgPSB7XG4gIHByb3BzOiBudWxsIGFzIFByb3BzIHwgbnVsbCxcbiAgcmVzdWx0OiBudWxsIGFzIE91dHB1dCB8IG51bGwsXG59XG5cbmZ1bmN0aW9uIGlzUG9pbnRDbG9zZShwcmV2aW91czogUG9pbnQsIGN1cnJlbnQ6IFBvaW50LCB0aHJlc2hvbGQ6IG51bWJlciA9IDIwKTogYm9vbGVhbiB7XG4gIGNvbnN0IGR4ID0gcHJldmlvdXMueCAtIGN1cnJlbnQueFxuICBjb25zdCBkeSA9IHByZXZpb3VzLnkgLSBjdXJyZW50LnlcbiAgcmV0dXJuIGR4ICogZHggKyBkeSAqIGR5IDw9IHRocmVzaG9sZCAqIHRocmVzaG9sZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Tm9kZUNsb3NlVG9Qb2ludChwcm9wczogUHJvcHMpOiBPdXRwdXQge1xuICBjb25zdCB7XG4gICAgYW5jaG9yRWxlbSxcbiAgICBjYWNoZV90cmVzaG9sZCA9IDIwLFxuICAgIGVkaXRvcixcbiAgICBmdXp6eSA9IGZhbHNlLFxuICAgIGhvcml6b250YWxPZmZzZXQgPSAwLFxuICAgIHBvaW50OiB7IHgsIHkgfSxcbiAgICBzdGFydEluZGV4ID0gMCxcbiAgICB1c2VFZGdlQXNEZWZhdWx0ID0gZmFsc2UsXG4gICAgdmVyYm9zZSA9IGZhbHNlLFxuICB9ID0gcHJvcHNcblxuICAvLyBVc2UgY2FjaGVcbiAgaWYgKFxuICAgIGNhY2hlX3RyZXNob2xkID4gMCAmJlxuICAgIGNhY2hlLnByb3BzICYmXG4gICAgY2FjaGUucmVzdWx0ICYmXG4gICAgY2FjaGUucHJvcHMuZnV6enkgPT09IHByb3BzLmZ1enp5ICYmXG4gICAgY2FjaGUucHJvcHMuaG9yaXpvbnRhbE9mZnNldCA9PT0gcHJvcHMuaG9yaXpvbnRhbE9mZnNldCAmJlxuICAgIGNhY2hlLnByb3BzLnVzZUVkZ2VBc0RlZmF1bHQgPT09IHByb3BzLnVzZUVkZ2VBc0RlZmF1bHQgJiZcbiAgICBpc1BvaW50Q2xvc2UoY2FjaGUucHJvcHMucG9pbnQsIHByb3BzLnBvaW50LCBjYWNoZV90cmVzaG9sZClcbiAgKSB7XG4gICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgIC8vY29uc29sZS5sb2coJ1JldHVybmluZyBjYWNoZWQgcmVzdWx0JylcbiAgICB9XG4gICAgcmV0dXJuIGNhY2hlLnJlc3VsdFxuICB9XG5cbiAgY29uc3QgYW5jaG9yRWxlbWVudFJlY3QgPSBhbmNob3JFbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gIGNvbnN0IHRvcExldmVsTm9kZUtleXMgPSBnZXRUb3BMZXZlbE5vZGVLZXlzKGVkaXRvcilcblxuICBjb25zdCBjbG9zZXN0QmxvY2tFbGVtOiB7XG4gICAgYmxvY2tFbGVtOiBIVE1MRWxlbWVudCB8IG51bGxcbiAgICBibG9ja05vZGU6IExleGljYWxOb2RlIHwgbnVsbFxuICAgIGRpc3RhbmNlOiBudW1iZXJcbiAgICBmb3VuZEF0SW5kZXg6IG51bWJlclxuICAgIGlzRm91bmROb2RlRW1wdHlQYXJhZ3JhcGg6IGJvb2xlYW5cbiAgfSA9IHtcbiAgICBibG9ja0VsZW06IG51bGwsXG4gICAgYmxvY2tOb2RlOiBudWxsLFxuICAgIGRpc3RhbmNlOiBJbmZpbml0eSxcbiAgICBmb3VuZEF0SW5kZXg6IC0xLFxuICAgIGlzRm91bmROb2RlRW1wdHlQYXJhZ3JhcGg6IGZhbHNlLFxuICB9XG5cbiAgLy8gUmV0dXJuIG51bGwgaWYgbWF0Y2hpbmcgYmxvY2sgZWxlbWVudCBpcyB0aGUgZmlyc3Qgb3IgbGFzdCBub2RlXG4gIGVkaXRvci5nZXRFZGl0b3JTdGF0ZSgpLnJlYWQoKCkgPT4ge1xuICAgIGlmICh1c2VFZGdlQXNEZWZhdWx0KSB7XG4gICAgICBjb25zdCBbZmlyc3ROb2RlLCBsYXN0Tm9kZV0gPSBbXG4gICAgICAgIGVkaXRvci5nZXRFbGVtZW50QnlLZXkodG9wTGV2ZWxOb2RlS2V5c1swXSksXG4gICAgICAgIGVkaXRvci5nZXRFbGVtZW50QnlLZXkodG9wTGV2ZWxOb2RlS2V5c1t0b3BMZXZlbE5vZGVLZXlzLmxlbmd0aCAtIDFdKSxcbiAgICAgIF1cblxuICAgICAgY29uc3QgW2ZpcnN0Tm9kZVJlY3QsIGxhc3ROb2RlUmVjdF0gPSBbXG4gICAgICAgIGdldEJvdW5kaW5nQ2xpZW50UmVjdFdpdGhvdXRUcmFuc2Zvcm0oZmlyc3ROb2RlKSxcbiAgICAgICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybShsYXN0Tm9kZSksXG4gICAgICBdXG5cbiAgICAgIGlmIChmaXJzdE5vZGVSZWN0ICYmIGxhc3ROb2RlUmVjdCkge1xuICAgICAgICBpZiAoeSA8IGZpcnN0Tm9kZVJlY3QudG9wKSB7XG4gICAgICAgICAgY2xvc2VzdEJsb2NrRWxlbS5ibG9ja0VsZW0gPSBmaXJzdE5vZGVcbiAgICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmRpc3RhbmNlID0gZmlyc3ROb2RlUmVjdC50b3AgLSB5XG4gICAgICAgICAgY2xvc2VzdEJsb2NrRWxlbS5ibG9ja05vZGUgPSAkZ2V0Tm9kZUJ5S2V5KHRvcExldmVsTm9kZUtleXNbMF0pXG4gICAgICAgICAgY2xvc2VzdEJsb2NrRWxlbS5mb3VuZEF0SW5kZXggPSAwXG4gICAgICAgIH0gZWxzZSBpZiAoeSA+IGxhc3ROb2RlUmVjdC5ib3R0b20pIHtcbiAgICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmRpc3RhbmNlID0geSAtIGxhc3ROb2RlUmVjdC5ib3R0b21cbiAgICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmJsb2NrTm9kZSA9ICRnZXROb2RlQnlLZXkodG9wTGV2ZWxOb2RlS2V5c1t0b3BMZXZlbE5vZGVLZXlzLmxlbmd0aCAtIDFdKVxuICAgICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uYmxvY2tFbGVtID0gbGFzdE5vZGVcbiAgICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmZvdW5kQXRJbmRleCA9IHRvcExldmVsTm9kZUtleXMubGVuZ3RoIC0gMVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNsb3Nlc3RCbG9ja0VsZW0/LmJsb2NrRWxlbSkge1xuICAgICAgICAgIGlmICh2ZXJib3NlKSB7XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKCd1c2VFZGdlQXNEZWZhdWx0JywgdXNlRWRnZUFzRGVmYXVsdClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYmxvY2tFbGVtOiBudWxsLFxuICAgICAgICAgICAgaXNGb3VuZE5vZGVFbXB0eVBhcmFncmFwaDogZmFsc2UsXG4gICAgICAgICAgfSBhcyBPdXRwdXRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZpbmQgbWF0Y2hpbmcgYmxvY2sgZWxlbWVudFxuICAgIGxldCBpbmRleCA9IHN0YXJ0SW5kZXhcbiAgICBsZXQgZGlyZWN0aW9uID0gSW5kZXRlcm1pbmF0ZVxuXG4gICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgIC8vY29uc29sZS5sb2coJ3N0YXJ0IGluZGV4Jywgc3RhcnRJbmRleClcbiAgICB9XG5cbiAgICB3aGlsZSAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRvcExldmVsTm9kZUtleXMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBrZXkgPSB0b3BMZXZlbE5vZGVLZXlzW2luZGV4XVxuICAgICAgY29uc3QgZWxlbSA9IGVkaXRvci5nZXRFbGVtZW50QnlLZXkoa2V5KVxuICAgICAgaWYgKGVsZW0gPT09IG51bGwpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBvaW50ID0gbmV3IFBvaW50KHggKyBob3Jpem9udGFsT2Zmc2V0LCB5KVxuICAgICAgLy9jb25zdCBkb21SZWN0ID0gUmVjdC5mcm9tRE9NKGVsZW0pXG4gICAgICAvLyBEbyBub3QgY29uc2lkZXIgdHJhbnNmb3JtIG9mIGJsb2NrcyB3aGVuIGNhbGN1bGF0aW5nIGRpc3RhbmNlXG4gICAgICBjb25zdCBkb21SZWN0ID0gUmVjdC5mcm9tRE9NUmVjdChnZXRCb3VuZGluZ0NsaWVudFJlY3RXaXRob3V0VHJhbnNmb3JtKGVsZW0pKVxuXG4gICAgICBjb25zdCB7IG1hcmdpbkJvdHRvbSwgbWFyZ2luVG9wIH0gPSBnZXRDb2xsYXBzZWRNYXJnaW5zKGVsZW0pXG5cbiAgICAgIGNvbnN0IHJlY3QgPSBkb21SZWN0LmdlbmVyYXRlTmV3UmVjdCh7XG4gICAgICAgIGJvdHRvbTogZG9tUmVjdC5ib3R0b20gKyBtYXJnaW5Cb3R0b20sXG4gICAgICAgIGxlZnQ6IGFuY2hvckVsZW1lbnRSZWN0LmxlZnQsXG4gICAgICAgIHJpZ2h0OiBhbmNob3JFbGVtZW50UmVjdC5yaWdodCxcbiAgICAgICAgdG9wOiBkb21SZWN0LnRvcCAtIG1hcmdpblRvcCxcbiAgICAgIH0pXG5cbiAgICAgIGNvbnN0IHsgZGlzdGFuY2UsIGlzT25Cb3R0b21TaWRlLCBpc09uVG9wU2lkZSB9ID0gcmVjdC5kaXN0YW5jZUZyb21Qb2ludChwb2ludClcblxuICAgICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgICAgLy9jb25zb2xlLmxvZygnZGlzdGFuY2UnLCBkaXN0YW5jZSlcbiAgICAgIH1cblxuICAgICAgaWYgKGRpc3RhbmNlID09PSAwKSB7XG4gICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uYmxvY2tFbGVtID0gZWxlbVxuICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmJsb2NrTm9kZSA9ICRnZXROb2RlQnlLZXkoa2V5KVxuICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmZvdW5kQXRJbmRleCA9IGluZGV4XG4gICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uZGlzdGFuY2UgPSBkaXN0YW5jZVxuXG4gICAgICAgIC8vIENoZWNrIGlmIGJsb2NrTm9kZSBpcyBhbiBlbXB0eSB0ZXh0IG5vZGVcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uYmxvY2tOb2RlICYmXG4gICAgICAgICAgY2xvc2VzdEJsb2NrRWxlbS5ibG9ja05vZGUuZ2V0VHlwZSgpID09PSAncGFyYWdyYXBoJyAmJlxuICAgICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uYmxvY2tOb2RlLmdldFRleHRDb250ZW50KCkgPT09ICcnXG4gICAgICAgICkge1xuICAgICAgICAgIGlmICghZnV6enkpIHtcbiAgICAgICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uYmxvY2tFbGVtID0gbnVsbFxuICAgICAgICAgICAgY2xvc2VzdEJsb2NrRWxlbS5ibG9ja05vZGUgPSBudWxsXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2xvc2VzdEJsb2NrRWxlbS5pc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9IGVsc2UgaWYgKGZ1enp5KSB7XG4gICAgICAgIGlmIChkaXN0YW5jZSA8IGNsb3Nlc3RCbG9ja0VsZW0uZGlzdGFuY2UpIHtcbiAgICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmJsb2NrRWxlbSA9IGVsZW1cbiAgICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmJsb2NrTm9kZSA9ICRnZXROb2RlQnlLZXkoa2V5KVxuICAgICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uZGlzdGFuY2UgPSBkaXN0YW5jZVxuICAgICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uZm91bmRBdEluZGV4ID0gaW5kZXhcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZGlyZWN0aW9uID09PSBJbmRldGVybWluYXRlKSB7XG4gICAgICAgIGlmIChpc09uVG9wU2lkZSkge1xuICAgICAgICAgIGRpcmVjdGlvbiA9IFVwd2FyZFxuICAgICAgICB9IGVsc2UgaWYgKGlzT25Cb3R0b21TaWRlKSB7XG4gICAgICAgICAgZGlyZWN0aW9uID0gRG93bndhcmRcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBzdG9wIHNlYXJjaCBibG9jayBlbGVtZW50XG4gICAgICAgICAgZGlyZWN0aW9uID0gSW5maW5pdHlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpbmRleCArPSBkaXJlY3Rpb25cbiAgICB9XG4gIH0pXG5cbiAgLy8gU3RvcmUgaW4gY2FjaGUgYmVmb3JlIHJldHVybmluZ1xuICBjYWNoZS5wcm9wcyA9IHByb3BzXG4gIGNhY2hlLnJlc3VsdCA9IHtcbiAgICBibG9ja0VsZW06IGNsb3Nlc3RCbG9ja0VsZW0uYmxvY2tFbGVtLFxuICAgIGJsb2NrTm9kZTogY2xvc2VzdEJsb2NrRWxlbS5ibG9ja05vZGUsXG4gICAgZm91bmRBdEluZGV4OiBjbG9zZXN0QmxvY2tFbGVtLmZvdW5kQXRJbmRleCxcbiAgICBpc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoOiBjbG9zZXN0QmxvY2tFbGVtLmlzRm91bmROb2RlRW1wdHlQYXJhZ3JhcGgsXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGJsb2NrRWxlbTogY2xvc2VzdEJsb2NrRWxlbS5ibG9ja0VsZW0sXG4gICAgYmxvY2tOb2RlOiBjbG9zZXN0QmxvY2tFbGVtLmJsb2NrTm9kZSxcbiAgICBmb3VuZEF0SW5kZXg6IGNsb3Nlc3RCbG9ja0VsZW0uZm91bmRBdEluZGV4LFxuICAgIGlzRm91bmROb2RlRW1wdHlQYXJhZ3JhcGg6IGNsb3Nlc3RCbG9ja0VsZW0uaXNGb3VuZE5vZGVFbXB0eVBhcmFncmFwaCxcbiAgfVxufVxuIl0sIm5hbWVzIjpbImdldE5vZGVDbG9zZVRvUG9pbnQiLCJEb3dud2FyZCIsIlVwd2FyZCIsIkluZGV0ZXJtaW5hdGUiLCJjYWNoZSIsInByb3BzIiwicmVzdWx0IiwiaXNQb2ludENsb3NlIiwicHJldmlvdXMiLCJjdXJyZW50IiwidGhyZXNob2xkIiwiZHgiLCJ4IiwiZHkiLCJ5IiwiYW5jaG9yRWxlbSIsImNhY2hlX3RyZXNob2xkIiwiZWRpdG9yIiwiZnV6enkiLCJob3Jpem9udGFsT2Zmc2V0IiwicG9pbnQiLCJzdGFydEluZGV4IiwidXNlRWRnZUFzRGVmYXVsdCIsInZlcmJvc2UiLCJhbmNob3JFbGVtZW50UmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInRvcExldmVsTm9kZUtleXMiLCJnZXRUb3BMZXZlbE5vZGVLZXlzIiwiY2xvc2VzdEJsb2NrRWxlbSIsImJsb2NrRWxlbSIsImJsb2NrTm9kZSIsImRpc3RhbmNlIiwiSW5maW5pdHkiLCJmb3VuZEF0SW5kZXgiLCJpc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoIiwiZ2V0RWRpdG9yU3RhdGUiLCJyZWFkIiwiZmlyc3ROb2RlIiwibGFzdE5vZGUiLCJnZXRFbGVtZW50QnlLZXkiLCJsZW5ndGgiLCJmaXJzdE5vZGVSZWN0IiwibGFzdE5vZGVSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybSIsInRvcCIsIiRnZXROb2RlQnlLZXkiLCJib3R0b20iLCJpbmRleCIsImRpcmVjdGlvbiIsImtleSIsImVsZW0iLCJQb2ludCIsImRvbVJlY3QiLCJSZWN0IiwiZnJvbURPTVJlY3QiLCJtYXJnaW5Cb3R0b20iLCJtYXJnaW5Ub3AiLCJnZXRDb2xsYXBzZWRNYXJnaW5zIiwicmVjdCIsImdlbmVyYXRlTmV3UmVjdCIsImxlZnQiLCJyaWdodCIsImlzT25Cb3R0b21TaWRlIiwiaXNPblRvcFNpZGUiLCJkaXN0YW5jZUZyb21Qb2ludCIsImdldFR5cGUiLCJnZXRUZXh0Q29udGVudCJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyIsIm1hcHBpbmdzIjoiOzs7OytCQWtEZ0JBOzs7ZUFBQUE7Ozt5QkFoRGM7dUJBRVI7c0JBQ0Q7cUNBQ2U7cUNBQ0E7aURBQ2tCO0FBRXRELGFBQWE7QUFDYixNQUFNQyxXQUFXO0FBQ2pCLE1BQU1DLFNBQVMsQ0FBQztBQUNoQixNQUFNQyxnQkFBZ0I7QUEwQnRCLE1BQU1DLFFBQVE7SUFDWkMsT0FBTztJQUNQQyxRQUFRO0FBQ1Y7QUFFQSxTQUFTQyxhQUFhQyxRQUFlLEVBQUVDLE9BQWMsRUFBRUMsWUFBb0IsRUFBRTtJQUMzRSxNQUFNQyxLQUFLSCxTQUFTSSxDQUFDLEdBQUdILFFBQVFHLENBQUM7SUFDakMsTUFBTUMsS0FBS0wsU0FBU00sQ0FBQyxHQUFHTCxRQUFRSyxDQUFDO0lBQ2pDLE9BQU9ILEtBQUtBLEtBQUtFLEtBQUtBLE1BQU1ILFlBQVlBO0FBQzFDO0FBRU8sU0FBU1Ysb0JBQW9CSyxLQUFZO0lBQzlDLE1BQU0sRUFDSlUsVUFBVSxFQUNWQyxpQkFBaUIsRUFBRSxFQUNuQkMsTUFBTSxFQUNOQyxRQUFRLEtBQUssRUFDYkMsbUJBQW1CLENBQUMsRUFDcEJDLE9BQU8sRUFBRVIsQ0FBQyxFQUFFRSxDQUFDLEVBQUUsRUFDZk8sYUFBYSxDQUFDLEVBQ2RDLG1CQUFtQixLQUFLLEVBQ3hCQyxVQUFVLEtBQUssRUFDaEIsR0FBR2xCO0lBRUosWUFBWTtJQUNaLElBQ0VXLGlCQUFpQixLQUNqQlosTUFBTUMsS0FBSyxJQUNYRCxNQUFNRSxNQUFN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
@@ -34,4 +34,4 @@ function highlightElemOriginalPosition(debugHighlightRef, htmlElem, anchorElem)
34
34
  debugHighlightRef.current.style.opacity = '0.5';
35
35
  }
36
36
 
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9EcmFnZ2FibGVCbG9ja1BsdWdpbi9oaWdobGlnaHRFbGVtT3JpZ2luYWxQb3NpdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBSZWFjdCBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybSB9IGZyb20gJy4vZ2V0Qm91bmRpbmdSZWN0V2l0aG91dFRyYW5zZm9ybSdcblxuZXhwb3J0IGZ1bmN0aW9uIGhpZ2hsaWdodEVsZW1PcmlnaW5hbFBvc2l0aW9uKFxuICBkZWJ1Z0hpZ2hsaWdodFJlZjogUmVhY3QuUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PixcbiAgaHRtbEVsZW06IEhUTUxFbGVtZW50LFxuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudCxcbikge1xuICBpZiAoIWRlYnVnSGlnaGxpZ2h0UmVmLmN1cnJlbnQpIHtcbiAgICAvLyBJZiB0aGUgcmVmIGRvZXNuJ3QgcG9pbnQgdG8gYW4gZXhpc3RpbmcgZWxlbWVudCwgd2UgY2FuJ3Qgc2V0IHN0eWxlc1xuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgeyBsZWZ0OiBhbmNob3JMZWZ0LCB0b3A6IGFuY2hvclRvcCB9ID0gYW5jaG9yRWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuXG4gIC8vIEdldCBjb21wdXRlZCBzdHlsZXMgb2YgdGhlIGdpdmVuIGVsZW1lbnRcbiAgY29uc3QgYm91bmRpbmdSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybShodG1sRWxlbSlcblxuICAvLyBFeHRyYWN0IG5lY2Vzc2FyeSBzdHlsZXMgKGlnbm9yaW5nIHRyYW5zZm9ybSlcbiAgY29uc3Qgd2lkdGggPSBib3VuZGluZ1JlY3Qud2lkdGhcbiAgY29uc3QgaGVpZ2h0ID0gYm91bmRpbmdSZWN0LmhlaWdodFxuICBjb25zdCB0b3AgPSBib3VuZGluZ1JlY3QudG9wIC0gYW5jaG9yVG9wXG4gIGNvbnN0IGxlZnQgPSBib3VuZGluZ1JlY3QubGVmdCAtIGFuY2hvckxlZnRcblxuICBkZWJ1Z0hpZ2hsaWdodFJlZi5jdXJyZW50LnN0eWxlLmJvcmRlciA9ICcycHggc29saWQgZ3JlZW4nXG4gIGRlYnVnSGlnaGxpZ2h0UmVmLmN1cnJlbnQuc3R5bGUuYm94U2l6aW5nID0gJ2JvcmRlci1ib3gnXG4gIGRlYnVnSGlnaGxpZ2h0UmVmLmN1cnJlbnQuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgJ3B4J1xuICBkZWJ1Z0hpZ2hsaWdodFJlZi5jdXJyZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSdcbiAgZGVidWdIaWdobGlnaHRSZWYuY3VycmVudC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSdcbiAgZGVidWdIaWdobGlnaHRSZWYuY3VycmVudC5zdHlsZS50b3AgPSB0b3AgKyAncHgnXG4gIGRlYnVnSGlnaGxpZ2h0UmVmLmN1cnJlbnQuc3R5bGUubGVmdCA9IGxlZnQgKyAncHgnXG4gIGRlYnVnSGlnaGxpZ2h0UmVmLmN1cnJlbnQuc3R5bGUud2lkdGggPSB3aWR0aCArICdweCdcbiAgZGVidWdIaWdobGlnaHRSZWYuY3VycmVudC5zdHlsZS56SW5kZXggPSAnMTAwMCdcbiAgZGVidWdIaWdobGlnaHRSZWYuY3VycmVudC5zdHlsZS5vcGFjaXR5ID0gJzAuNSdcbn1cbiJdLCJuYW1lcyI6WyJoaWdobGlnaHRFbGVtT3JpZ2luYWxQb3NpdGlvbiIsImRlYnVnSGlnaGxpZ2h0UmVmIiwiaHRtbEVsZW0iLCJhbmNob3JFbGVtIiwiY3VycmVudCIsImxlZnQiLCJhbmNob3JMZWZ0IiwidG9wIiwiYW5jaG9yVG9wIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiYm91bmRpbmdSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybSIsIndpZHRoIiwiaGVpZ2h0Iiwic3R5bGUiLCJib3JkZXIiLCJib3hTaXppbmciLCJwb2ludGVyRXZlbnRzIiwicG9zaXRpb24iLCJ6SW5kZXgiLCJvcGFjaXR5Il0sIm1hcHBpbmdzIjoiOzs7OytCQUlnQkE7OztlQUFBQTs7O2lEQUZzQztBQUUvQyxTQUFTQSw4QkFDZEMsaUJBQWtELEVBQ2xEQyxRQUFxQixFQUNyQkMsVUFBdUI7SUFFdkIsSUFBSSxDQUFDRixrQkFBa0JHLE9BQU8sRUFBRTtRQUM5Qix1RUFBdUU7UUFDdkU7SUFDRjtJQUVBLE1BQU0sRUFBRUMsTUFBTUMsVUFBVSxFQUFFQyxLQUFLQyxTQUFTLEVBQUUsR0FBR0wsV0FBV00scUJBQXFCO0lBRTdFLDJDQUEyQztJQUMzQyxNQUFNQyxlQUFlQyxJQUFBQSxzRUFBcUMsRUFBQ1Q7SUFFM0QsZ0RBQWdEO0lBQ2hELE1BQU1VLFFBQVFGLGFBQWFFLEtBQUs7SUFDaEMsTUFBTUMsU0FBU0gsYUFBYUcsTUFBTTtJQUNsQyxNQUFNTixNQUFNRyxhQUFhSCxHQUFHLEdBQUdDO0lBQy9CLE1BQU1ILE9BQU9LLGFBQWFMLElBQUksR0FBR0M7SUFFakNMLGtCQUFrQkcsT0FBTyxDQUFDVSxLQUFLLENBQUNDLE1BQU0sR0FBRztJQUN6Q2Qsa0JBQWtCRyxPQUFPLENBQUNVLEtBQUssQ0FBQ0UsU0FBUyxHQUFHO0lBQzVDZixrQkFBa0JHLE9BQU8sQ0FBQ1UsS0FBSyxDQUFDRCxNQUFNLEdBQUdBLFNBQVM7SUFDbERaLGtCQUFrQkcsT0FBTyxDQUFDVSxLQUFLLENBQUNHLGFBQWEsR0FBRztJQUNoRGhCLGtCQUFrQkcsT0FBTyxDQUFDVSxLQUFLLENBQUNJLFFBQVEsR0FBRztJQUMzQ2pCLGtCQUFrQkcsT0FBTyxDQUFDVSxLQUFLLENBQUNQLEdBQUcsR0FBR0EsTUFBTTtJQUM1Q04sa0JBQWtCRyxPQUFPLENBQUNVLEtBQUssQ0FBQ1QsSUFBSSxHQUFHQSxPQUFPO0lBQzlDSixrQkFBa0JHLE9BQU8sQ0FBQ1UsS0FBSyxDQUFDRixLQUFLLEdBQUdBLFFBQVE7SUFDaERYLGtCQUFrQkcsT0FBTyxDQUFDVSxLQUFLLENBQUNLLE1BQU0sR0FBRztJQUN6Q2xCLGtCQUFrQkcsT0FBTyxDQUFDVSxLQUFLLENBQUNNLE9BQU8sR0FBRztBQUM1QyJ9
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9EcmFnZ2FibGVCbG9ja1BsdWdpbi9oaWdobGlnaHRFbGVtT3JpZ2luYWxQb3NpdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBSZWFjdCBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybSB9IGZyb20gJy4vZ2V0Qm91bmRpbmdSZWN0V2l0aG91dFRyYW5zZm9ybSdcblxuZXhwb3J0IGZ1bmN0aW9uIGhpZ2hsaWdodEVsZW1PcmlnaW5hbFBvc2l0aW9uKFxuICBkZWJ1Z0hpZ2hsaWdodFJlZjogUmVhY3QuUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PixcbiAgaHRtbEVsZW06IEhUTUxFbGVtZW50LFxuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudCxcbikge1xuICBpZiAoIWRlYnVnSGlnaGxpZ2h0UmVmLmN1cnJlbnQpIHtcbiAgICAvLyBJZiB0aGUgcmVmIGRvZXNuJ3QgcG9pbnQgdG8gYW4gZXhpc3RpbmcgZWxlbWVudCwgd2UgY2FuJ3Qgc2V0IHN0eWxlc1xuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgeyBsZWZ0OiBhbmNob3JMZWZ0LCB0b3A6IGFuY2hvclRvcCB9ID0gYW5jaG9yRWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuXG4gIC8vIEdldCBjb21wdXRlZCBzdHlsZXMgb2YgdGhlIGdpdmVuIGVsZW1lbnRcbiAgY29uc3QgYm91bmRpbmdSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybShodG1sRWxlbSlcblxuICAvLyBFeHRyYWN0IG5lY2Vzc2FyeSBzdHlsZXMgKGlnbm9yaW5nIHRyYW5zZm9ybSlcbiAgY29uc3Qgd2lkdGggPSBib3VuZGluZ1JlY3Qud2lkdGhcbiAgY29uc3QgaGVpZ2h0ID0gYm91bmRpbmdSZWN0LmhlaWdodFxuICBjb25zdCB0b3AgPSBib3VuZGluZ1JlY3QudG9wIC0gYW5jaG9yVG9wXG4gIGNvbnN0IGxlZnQgPSBib3VuZGluZ1JlY3QubGVmdCAtIGFuY2hvckxlZnRcblxuICBkZWJ1Z0hpZ2hsaWdodFJlZi5jdXJyZW50LnN0eWxlLmJvcmRlciA9ICcycHggc29saWQgZ3JlZW4nXG4gIGRlYnVnSGlnaGxpZ2h0UmVmLmN1cnJlbnQuc3R5bGUuYm94U2l6aW5nID0gJ2JvcmRlci1ib3gnXG4gIGRlYnVnSGlnaGxpZ2h0UmVmLmN1cnJlbnQuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgJ3B4J1xuICBkZWJ1Z0hpZ2hsaWdodFJlZi5jdXJyZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSdcbiAgZGVidWdIaWdobGlnaHRSZWYuY3VycmVudC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSdcbiAgZGVidWdIaWdobGlnaHRSZWYuY3VycmVudC5zdHlsZS50b3AgPSB0b3AgKyAncHgnXG4gIGRlYnVnSGlnaGxpZ2h0UmVmLmN1cnJlbnQuc3R5bGUubGVmdCA9IGxlZnQgKyAncHgnXG4gIGRlYnVnSGlnaGxpZ2h0UmVmLmN1cnJlbnQuc3R5bGUud2lkdGggPSB3aWR0aCArICdweCdcbiAgZGVidWdIaWdobGlnaHRSZWYuY3VycmVudC5zdHlsZS56SW5kZXggPSAnMTAwMCdcbiAgZGVidWdIaWdobGlnaHRSZWYuY3VycmVudC5zdHlsZS5vcGFjaXR5ID0gJzAuNSdcbn1cbiJdLCJuYW1lcyI6WyJoaWdobGlnaHRFbGVtT3JpZ2luYWxQb3NpdGlvbiIsImRlYnVnSGlnaGxpZ2h0UmVmIiwiaHRtbEVsZW0iLCJhbmNob3JFbGVtIiwiY3VycmVudCIsImxlZnQiLCJhbmNob3JMZWZ0IiwidG9wIiwiYW5jaG9yVG9wIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiYm91bmRpbmdSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybSIsIndpZHRoIiwiaGVpZ2h0Iiwic3R5bGUiLCJib3JkZXIiLCJib3hTaXppbmciLCJwb2ludGVyRXZlbnRzIiwicG9zaXRpb24iLCJ6SW5kZXgiLCJvcGFjaXR5Il0sInJhbmdlTWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7IiwibWFwcGluZ3MiOiI7Ozs7K0JBSWdCQTs7O2VBQUFBOzs7aURBRnNDO0FBRS9DLFNBQVNBLDhCQUNkQyxpQkFBa0QsRUFDbERDLFFBQXFCLEVBQ3JCQyxVQUF1QjtJQUV2QixJQUFJLENBQUNGLGtCQUFrQkcsT0FBTyxFQUFFO1FBQzlCLHVFQUF1RTtRQUN2RTtJQUNGO0lBRUEsTUFBTSxFQUFFQyxNQUFNQyxVQUFVLEVBQUVDLEtBQUtDLFNBQVMsRUFBRSxHQUFHTCxXQUFXTSxxQkFBcUI7SUFFN0UsMkNBQTJDO0lBQzNDLE1BQU1DLGVBQWVDLElBQUFBLHNFQUFxQyxFQUFDVDtJQUUzRCxnREFBZ0Q7SUFDaEQsTUFBTVUsUUFBUUYsYUFBYUUsS0FBSztJQUNoQyxNQUFNQyxTQUFTSCxhQUFhRyxNQUFNO0lBQ2xDLE1BQU1OLE1BQU1HLGFBQWFILEdBQUcsR0FBR0M7SUFDL0IsTUFBTUgsT0FBT0ssYUFBYUwsSUFBSSxHQUFHQztJQUVqQ0wsa0JBQWtCRyxPQUFPLENBQUNVLEtBQUssQ0FBQ0MsTUFBTSxHQUFHO0lBQ3pDZCxrQkFBa0JHLE9BQU8sQ0FBQ1UsS0FBSyxDQUFDRSxTQUFTLEdBQUc7SUFDNUNmLGtCQUFrQkcsT0FBTyxDQUFDVSxLQUFLLENBQUNELE1BQU0sR0FBR0EsU0FBUztJQUNsRFosa0JBQWtCRyxPQUFPLENBQUNVLEtBQUssQ0FBQ0csYUFBYSxHQUFHO0lBQ2hEaEIsa0JBQWtCRyxPQUFPLENBQUNVLEtBQUssQ0FBQ0ksUUFBUSxHQUFHO0lBQzNDakIsa0JBQWtCRyxPQUFPLENBQUNVLEtBQUssQ0FBQ1AsR0FBRyxHQUFHQSxNQUFNO0lBQzVDTixrQkFBa0JHLE9BQU8sQ0FBQ1UsS0FBSyxDQUFDVCxJQUFJLEdBQUdBLE9BQU87SUFDOUNKLGtCQUFrQkcsT0FBTyxDQUFDVSxLQUFLLENBQUNGLEtBQUssR0FBR0EsUUFBUTtJQUNoRFgsa0JBQWtCRyxPQUFPLENBQUNVLEtBQUssQ0FBQ0ssTUFBTSxHQUFHO0lBQ3pDbEIsa0JBQWtCRyxPQUFPLENBQUNVLEtBQUssQ0FBQ00sT0FBTyxHQUFHO0FBQzVDIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/handles/DraggableBlockPlugin/index.tsx"],"names":[],"mappings":";AAkBA,OAAO,cAAc,CAAA;AAgXrB,wBAAgB,oBAAoB,CAAC,EACnC,UAA0B,GAC3B,EAAE;IACD,UAAU,CAAC,EAAE,WAAW,CAAA;CACzB,GAAG,GAAG,CAAC,OAAO,CAGd"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/handles/DraggableBlockPlugin/index.tsx"],"names":[],"mappings":";AAkBA,OAAO,cAAc,CAAA;AAoXrB,wBAAgB,oBAAoB,CAAC,EACnC,UAA0B,GAC3B,EAAE;IACD,UAAU,CAAC,EAAE,WAAW,CAAA;CACzB,GAAG,GAAG,CAAC,OAAO,CAGd"}
@@ -154,7 +154,9 @@ function useDraggableBlockMenu(editor, anchorElem, isEditable) {
154
154
  if (!_draggableBlockElem && !isFoundNodeEmptyParagraph) {
155
155
  return;
156
156
  }
157
- setDraggableBlockElem(_draggableBlockElem);
157
+ if (draggableBlockElem !== _draggableBlockElem) {
158
+ setDraggableBlockElem(_draggableBlockElem);
159
+ }
158
160
  }
159
161
  // Since the draggableBlockElem is outside the actual editor, we need to listen to the document
160
162
  // to be able to detect when the mouse is outside the editor and respect a buffer around the
@@ -167,7 +169,8 @@ function useDraggableBlockMenu(editor, anchorElem, isEditable) {
167
169
  scrollerElem,
168
170
  anchorElem,
169
171
  editor,
170
- calculateDistanceFromScrollerElem
172
+ calculateDistanceFromScrollerElem,
173
+ draggableBlockElem
171
174
  ]);
172
175
  (0, _react.useEffect)(()=>{
173
176
  if (menuRef.current) {
@@ -278,7 +281,9 @@ function useDraggableBlockMenu(editor, anchorElem, isEditable) {
278
281
  targetNode.insertAfter(draggedNode)
279
282
  } else {
280
283
  targetNode.insertBefore(draggedNode)
281
- }*/ setDraggableBlockElem(null);
284
+ }*/ if (draggableBlockElem !== null) {
285
+ setDraggableBlockElem(null);
286
+ }
282
287
  });
283
288
  return true;
284
289
  }
@@ -338,4 +343,4 @@ function DraggableBlockPlugin({ anchorElem = document.body }) {
338
343
  return useDraggableBlockMenu(editor, anchorElem, editor._editable);
339
344
  }
340
345
 
341
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9EcmFnZ2FibGVCbG9ja1BsdWdpbi9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5pbXBvcnQgdHlwZSB7IExleGljYWxFZGl0b3IgfSBmcm9tICdsZXhpY2FsJ1xuaW1wb3J0IHR5cGUgeyBEcmFnRXZlbnQgYXMgUmVhY3REcmFnRXZlbnQgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgdXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCB9IGZyb20gJ0BsZXhpY2FsL3JlYWN0L0xleGljYWxDb21wb3NlckNvbnRleHQnXG5pbXBvcnQgeyBldmVudEZpbGVzIH0gZnJvbSAnQGxleGljYWwvcmljaC10ZXh0J1xuaW1wb3J0IHsgJGdldE5lYXJlc3ROb2RlRnJvbURPTU5vZGUsICRnZXROb2RlQnlLZXkgfSBmcm9tICdsZXhpY2FsJ1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5cbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9ndWFyZCdcbmltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvcG9pbnQnXG5pbXBvcnQgeyBnZXRUb3BMZXZlbE5vZGVLZXlzIH0gZnJvbSAnLi4vdXRpbHMvZ2V0VG9wTGV2ZWxOb2RlS2V5cydcbmltcG9ydCB7IGlzT25IYW5kbGVFbGVtZW50IH0gZnJvbSAnLi4vdXRpbHMvaXNPbkhhbmRsZUVsZW1lbnQnXG5pbXBvcnQgeyBzZXRIYW5kbGVQb3NpdGlvbiB9IGZyb20gJy4uL3V0aWxzL3NldEhhbmRsZVBvc2l0aW9uJ1xuaW1wb3J0IHsgZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybSB9IGZyb20gJy4vZ2V0Qm91bmRpbmdSZWN0V2l0aG91dFRyYW5zZm9ybSdcbmltcG9ydCB7IGdldE5vZGVDbG9zZVRvUG9pbnQgfSBmcm9tICcuL2dldE5vZGVDbG9zZVRvUG9pbnQnXG5pbXBvcnQgJy4vaW5kZXguc2NzcydcbmltcG9ydCB7IHNldFRhcmdldExpbmUgfSBmcm9tICcuL3NldFRhcmdldExpbmUnXG5cbmNvbnN0IFNQQUNFID0gLTI0XG5jb25zdCBEUkFHR0FCTEVfQkxPQ0tfTUVOVV9DTEFTU05BTUUgPSAnZHJhZ2dhYmxlLWJsb2NrLW1lbnUnXG5jb25zdCBEUkFHX0RBVEFfRk9STUFUID0gJ2FwcGxpY2F0aW9uL3gtbGV4aWNhbC1kcmFnLWJsb2NrJ1xuXG5sZXQgcHJldkluZGV4ID0gSW5maW5pdHlcblxuZnVuY3Rpb24gZ2V0Q3VycmVudEluZGV4KGtleXNMZW5ndGg6IG51bWJlcik6IG51bWJlciB7XG4gIGlmIChrZXlzTGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIEluZmluaXR5XG4gIH1cbiAgaWYgKHByZXZJbmRleCA+PSAwICYmIHByZXZJbmRleCA8IGtleXNMZW5ndGgpIHtcbiAgICByZXR1cm4gcHJldkluZGV4XG4gIH1cblxuICByZXR1cm4gTWF0aC5mbG9vcihrZXlzTGVuZ3RoIC8gMilcbn1cblxuZnVuY3Rpb24gc2V0RHJhZ0ltYWdlKGRhdGFUcmFuc2ZlcjogRGF0YVRyYW5zZmVyLCBkcmFnZ2FibGVCbG9ja0VsZW06IEhUTUxFbGVtZW50KSB7XG4gIGNvbnN0IHsgdHJhbnNmb3JtIH0gPSBkcmFnZ2FibGVCbG9ja0VsZW0uc3R5bGVcblxuICAvLyBSZW1vdmUgZHJhZ0ltYWdlIGJvcmRlcnNcbiAgZGF0YVRyYW5zZmVyLnNldERyYWdJbWFnZShkcmFnZ2FibGVCbG9ja0VsZW0sIDAsIDApXG5cbiAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgZHJhZ2dhYmxlQmxvY2tFbGVtLnN0eWxlLnRyYW5zZm9ybSA9IHRyYW5zZm9ybVxuICB9KVxufVxuXG5mdW5jdGlvbiBoaWRlVGFyZ2V0TGluZShcbiAgdGFyZ2V0TGluZUVsZW06IEhUTUxFbGVtZW50IHwgbnVsbCxcbiAgbGFzdFRhcmdldEJsb2NrRWxlbTogSFRNTEVsZW1lbnQgfCBudWxsLFxuKSB7XG4gIGlmICh0YXJnZXRMaW5lRWxlbSkge1xuICAgIHRhcmdldExpbmVFbGVtLnN0eWxlLm9wYWNpdHkgPSAnMCdcbiAgfVxuICBpZiAobGFzdFRhcmdldEJsb2NrRWxlbSkge1xuICAgIGxhc3RUYXJnZXRCbG9ja0VsZW0uc3R5bGUub3BhY2l0eSA9ICcxJ1xuICAgIGxhc3RUYXJnZXRCbG9ja0VsZW0uc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZSgwLCAwKSdcbiAgICAvL2xhc3RUYXJnZXRCbG9ja0VsZW0uc3R5bGUuYm9yZGVyID0gJ25vbmUnXG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlRHJhZ2dhYmxlQmxvY2tNZW51KFxuICBlZGl0b3I6IExleGljYWxFZGl0b3IsXG4gIGFuY2hvckVsZW06IEhUTUxFbGVtZW50LFxuICBpc0VkaXRhYmxlOiBib29sZWFuLFxuKTogSlNYLkVsZW1lbnQge1xuICBjb25zdCBzY3JvbGxlckVsZW0gPSBhbmNob3JFbGVtLnBhcmVudEVsZW1lbnRcblxuICBjb25zdCBtZW51UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCB0YXJnZXRMaW5lUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBkZWJ1Z0hpZ2hsaWdodFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgaXNEcmFnZ2luZ0Jsb2NrUmVmID0gdXNlUmVmPGJvb2xlYW4+KGZhbHNlKVxuICBjb25zdCBbZHJhZ2dhYmxlQmxvY2tFbGVtLCBzZXREcmFnZ2FibGVCbG9ja0VsZW1dID0gdXNlU3RhdGU8SFRNTEVsZW1lbnQgfCBudWxsPihudWxsKVxuICBjb25zdCBbbGFzdFRhcmdldEJsb2NrRWxlbSwgc2V0TGFzdFRhcmdldEJsb2NrRWxlbV0gPSB1c2VTdGF0ZTxIVE1MRWxlbWVudCB8IG51bGw+KG51bGwpXG5cbiAgY29uc3QgY2FsY3VsYXRlRGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgcGFnZVg6IG51bWJlcixcbiAgICAgIHBhZ2VZOiBudW1iZXIsXG4gICAgICB0YXJnZXQ6IEhUTUxFbGVtZW50LFxuICAgICAgaG9yaXpvbnRhbEJ1ZmZlcjogbnVtYmVyID0gNTAsXG4gICAgICB2ZXJ0aWNhbEJ1ZmZlcjogbnVtYmVyID0gMjUsXG4gICAgKTogbnVtYmVyID0+IHtcbiAgICAgIGxldCBkaXN0YW5jZUZyb21TY3JvbGxlckVsZW0gPSAwXG4gICAgICAvLyBDYWxjdWxhdGUgZGlzdGFuY2UgYmV0d2VlbiBzY3JvbGxlckVsZW0gYW5kIHRhcmdldCBpZiB0YXJnZXQgaXMgbm90IGluIHNjcm9sbGVyRWxlbVxuICAgICAgaWYgKHNjcm9sbGVyRWxlbSAmJiAhc2Nyb2xsZXJFbGVtLmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAgICAgY29uc3QgeyBib3R0b20sIGxlZnQsIHJpZ2h0LCB0b3AgfSA9IHNjcm9sbGVyRWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuXG4gICAgICAgIGNvbnN0IGFkanVzdGVkVG9wID0gdG9wICsgd2luZG93LnNjcm9sbFlcbiAgICAgICAgY29uc3QgYWRqdXN0ZWRCb3R0b20gPSBib3R0b20gKyB3aW5kb3cuc2Nyb2xsWVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBwYWdlWSA8IGFkanVzdGVkVG9wIC0gdmVydGljYWxCdWZmZXIgfHxcbiAgICAgICAgICBwYWdlWSA+IGFkanVzdGVkQm90dG9tICsgdmVydGljYWxCdWZmZXIgfHxcbiAgICAgICAgICBwYWdlWCA8IGxlZnQgLSBob3Jpem9udGFsQnVmZmVyIHx8XG4gICAgICAgICAgcGFnZVggPiByaWdodCArIGhvcml6b250YWxCdWZmZXJcbiAgICAgICAgKSB7XG4gICAgICAgICAgc2V0RHJhZ2dhYmxlQmxvY2tFbGVtKG51bGwpXG4gICAgICAgICAgcmV0dXJuIGRpc3RhbmNlRnJvbVNjcm9sbGVyRWxlbVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhpcyBpcyB1c2VkIHRvIGFsbG93IHRoZSBfZHJhZ2dhYmxlQmxvY2tFbGVtIHRvIGJlIGZvdW5kIHdoZW4gdGhlIG1vdXNlIGlzIGluIHRoZVxuICAgICAgICAvLyBidWZmZXIgem9uZSBhcm91bmQgdGhlIHNjcm9sbGVyRWxlbS5cbiAgICAgICAgaWYgKHBhZ2VYIDwgbGVmdCB8fCBwYWdlWCA+IHJpZ2h0KSB7XG4gICAgICAgICAgZGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtID0gcGFnZVggPCBsZWZ0ID8gcGFnZVggLSBsZWZ0IDogcGFnZVggLSByaWdodFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtXG4gICAgfSxcbiAgICBbc2Nyb2xsZXJFbGVtXSxcbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLyoqXG4gICAgICogSGFuZGxlcyBwb3NpdGlvbmluZyBvZiB0aGUgZHJhZyBoYW5kbGVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvbkRvY3VtZW50TW91c2VNb3ZlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXRcbiAgICAgIGlmICghaXNIVE1MRWxlbWVudCh0YXJnZXQpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBkaXN0YW5jZUZyb21TY3JvbGxlckVsZW0gPSBjYWxjdWxhdGVEaXN0YW5jZUZyb21TY3JvbGxlckVsZW0oXG4gICAgICAgIGV2ZW50LnBhZ2VYLFxuICAgICAgICBldmVudC5wYWdlWSxcbiAgICAgICAgdGFyZ2V0LFxuICAgICAgKVxuXG4gICAgICBpZiAoaXNPbkhhbmRsZUVsZW1lbnQodGFyZ2V0LCBEUkFHR0FCTEVfQkxPQ0tfTUVOVV9DTEFTU05BTUUpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB0b3BMZXZlbE5vZGVLZXlzID0gZ2V0VG9wTGV2ZWxOb2RlS2V5cyhlZGl0b3IpXG4gICAgICBjb25zdCB7XG4gICAgICAgIGJsb2NrRWxlbTogX2RyYWdnYWJsZUJsb2NrRWxlbSxcbiAgICAgICAgZm91bmRBdEluZGV4LFxuICAgICAgICBpc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoLFxuICAgICAgfSA9IGdldE5vZGVDbG9zZVRvUG9pbnQoe1xuICAgICAgICBhbmNob3JFbGVtLFxuICAgICAgICBjYWNoZV90cmVzaG9sZDogMCxcbiAgICAgICAgZWRpdG9yLFxuICAgICAgICBob3Jpem9udGFsT2Zmc2V0OiAtZGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtLFxuICAgICAgICBwb2ludDogbmV3IFBvaW50KGV2ZW50LngsIGV2ZW50LnkpLFxuICAgICAgICBzdGFydEluZGV4OiBnZXRDdXJyZW50SW5kZXgodG9wTGV2ZWxOb2RlS2V5cy5sZW5ndGgpLFxuICAgICAgICB1c2VFZGdlQXNEZWZhdWx0OiBmYWxzZSxcbiAgICAgIH0pXG4gICAgICAvL2lmIChERUJVRyAmJiBfZHJhZ2dhYmxlQmxvY2tFbGVtKSB7XG4gICAgICAvL3RhcmdldEJsb2NrRWxlbS5zdHlsZS5ib3JkZXIgPSAnM3B4IHNvbGlkIHJlZCdcbiAgICAgIC8vIGhpZ2hsaWdodEVsZW1PcmlnaW5hbFBvc2l0aW9uKGRlYnVnSGlnaGxpZ2h0UmVmLCBfZHJhZ2dhYmxlQmxvY2tFbGVtLCBhbmNob3JFbGVtKVxuICAgICAgLy99XG4gICAgICBwcmV2SW5kZXggPSBmb3VuZEF0SW5kZXhcblxuICAgICAgaWYgKCFfZHJhZ2dhYmxlQmxvY2tFbGVtICYmICFpc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBzZXREcmFnZ2FibGVCbG9ja0VsZW0oX2RyYWdnYWJsZUJsb2NrRWxlbSlcbiAgICB9XG5cbiAgICAvLyBTaW5jZSB0aGUgZHJhZ2dhYmxlQmxvY2tFbGVtIGlzIG91dHNpZGUgdGhlIGFjdHVhbCBlZGl0b3IsIHdlIG5lZWQgdG8gbGlzdGVuIHRvIHRoZSBkb2N1bWVudFxuICAgIC8vIHRvIGJlIGFibGUgdG8gZGV0ZWN0IHdoZW4gdGhlIG1vdXNlIGlzIG91dHNpZGUgdGhlIGVkaXRvciBhbmQgcmVzcGVjdCBhIGJ1ZmZlciBhcm91bmQgdGhlXG4gICAgLy8gdGhlIHNjcm9sbGVyRWxlbSB0byBhdm9pZCB0aGUgZHJhZ2dhYmxlQmxvY2tFbGVtIGRpc2FwcGVhcmluZyB0b28gZWFybHkuXG4gICAgZG9jdW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uRG9jdW1lbnRNb3VzZU1vdmUpXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQ/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uRG9jdW1lbnRNb3VzZU1vdmUpXG4gICAgfVxuICB9LCBbc2Nyb2xsZXJFbGVtLCBhbmNob3JFbGVtLCBlZGl0b3IsIGNhbGN1bGF0ZURpc3RhbmNlRnJvbVNjcm9sbGVyRWxlbV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAobWVudVJlZi5jdXJyZW50KSB7XG4gICAgICBzZXRIYW5kbGVQb3NpdGlvbihkcmFnZ2FibGVCbG9ja0VsZW0sIG1lbnVSZWYuY3VycmVudCwgYW5jaG9yRWxlbSwgU1BBQ0UpXG4gICAgfVxuICB9LCBbYW5jaG9yRWxlbSwgZHJhZ2dhYmxlQmxvY2tFbGVtXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZ1bmN0aW9uIG9uRHJhZ292ZXIoZXZlbnQ6IERyYWdFdmVudCk6IGJvb2xlYW4ge1xuICAgICAgaWYgKCFpc0RyYWdnaW5nQmxvY2tSZWYuY3VycmVudCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIGNvbnN0IFtpc0ZpbGVUcmFuc2Zlcl0gPSBldmVudEZpbGVzKGV2ZW50KVxuICAgICAgaWYgKGlzRmlsZVRyYW5zZmVyKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHBhZ2VZLCB0YXJnZXQgfSA9IGV2ZW50XG4gICAgICBpZiAoIWlzSFRNTEVsZW1lbnQodGFyZ2V0KSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtID0gY2FsY3VsYXRlRGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtKFxuICAgICAgICBldmVudC5wYWdlWCxcbiAgICAgICAgZXZlbnQucGFnZVksXG4gICAgICAgIHRhcmdldCxcbiAgICAgICAgMTAwLFxuICAgICAgICA1MCxcbiAgICAgIClcblxuICAgICAgY29uc3QgdG9wTGV2ZWxOb2RlS2V5cyA9IGdldFRvcExldmVsTm9kZUtleXMoZWRpdG9yKVxuXG4gICAgICBjb25zdCB7XG4gICAgICAgIGJsb2NrRWxlbTogdGFyZ2V0QmxvY2tFbGVtLFxuICAgICAgICBmb3VuZEF0SW5kZXgsXG4gICAgICAgIGlzRm91bmROb2RlRW1wdHlQYXJhZ3JhcGgsXG4gICAgICB9ID0gZ2V0Tm9kZUNsb3NlVG9Qb2ludCh7XG4gICAgICAgIGFuY2hvckVsZW0sXG4gICAgICAgIGVkaXRvcixcbiAgICAgICAgZnV6enk6IHRydWUsXG4gICAgICAgIGhvcml6b250YWxPZmZzZXQ6IC1kaXN0YW5jZUZyb21TY3JvbGxlckVsZW0sXG4gICAgICAgIHBvaW50OiBuZXcgUG9pbnQoZXZlbnQueCwgZXZlbnQueSksXG4gICAgICAgIHN0YXJ0SW5kZXg6IGdldEN1cnJlbnRJbmRleCh0b3BMZXZlbE5vZGVLZXlzLmxlbmd0aCksXG4gICAgICAgIHVzZUVkZ2VBc0RlZmF1bHQ6IHRydWUsXG4gICAgICAgIHZlcmJvc2U6IHRydWUsXG4gICAgICB9KVxuICAgICAgcHJldkluZGV4ID0gZm91bmRBdEluZGV4XG5cbiAgICAgIGNvbnN0IHRhcmdldExpbmVFbGVtID0gdGFyZ2V0TGluZVJlZi5jdXJyZW50XG4gICAgICAvLyB0YXJnZXRCbG9ja0VsZW0gPT09IG51bGwgc2hvdWxkbid0IGhhcHBlblxuICAgICAgaWYgKHRhcmdldEJsb2NrRWxlbSA9PT0gbnVsbCB8fCB0YXJnZXRMaW5lRWxlbSA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cblxuICAgICAgaWYgKGRyYWdnYWJsZUJsb2NrRWxlbSAhPT0gdGFyZ2V0QmxvY2tFbGVtKSB7XG4gICAgICAgIHNldFRhcmdldExpbmUoXG4gICAgICAgICAgU1BBQ0UsXG4gICAgICAgICAgdGFyZ2V0TGluZUVsZW0sXG4gICAgICAgICAgdGFyZ2V0QmxvY2tFbGVtLFxuICAgICAgICAgIGxhc3RUYXJnZXRCbG9ja0VsZW0sXG4gICAgICAgICAgcGFnZVksXG4gICAgICAgICAgYW5jaG9yRWxlbSxcbiAgICAgICAgICBldmVudCxcbiAgICAgICAgICBkZWJ1Z0hpZ2hsaWdodFJlZixcbiAgICAgICAgICBpc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoLFxuICAgICAgICApXG5cbiAgICAgICAgLy8gUHJldmVudCBkZWZhdWx0IGV2ZW50IHRvIGJlIGFibGUgdG8gdHJpZ2dlciBvbkRyb3AgZXZlbnRzXG4gICAgICAgIC8vIENhbGxpbmcgcHJldmVudERlZmF1bHQoKSBhZGRzIHRoZSBncmVlbiBwbHVzIGljb24gdG8gdGhlIGN1cnNvcixcbiAgICAgICAgLy8gaW5kaWNhdGluZyB0aGF0IHRoZSBkcm9wIGlzIGFsbG93ZWQuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhpZGVUYXJnZXRMaW5lKHRhcmdldExpbmVFbGVtLCBsYXN0VGFyZ2V0QmxvY2tFbGVtKVxuICAgICAgfVxuXG4gICAgICBzZXRMYXN0VGFyZ2V0QmxvY2tFbGVtKHRhcmdldEJsb2NrRWxlbSlcblxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvbkRyb3AoZXZlbnQ6IERyYWdFdmVudCk6IGJvb2xlYW4ge1xuICAgICAgaWYgKCFpc0RyYWdnaW5nQmxvY2tSZWYuY3VycmVudCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIGNvbnN0IFtpc0ZpbGVUcmFuc2Zlcl0gPSBldmVudEZpbGVzKGV2ZW50KVxuICAgICAgaWYgKGlzRmlsZVRyYW5zZmVyKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgY29uc3QgeyBkYXRhVHJhbnNmZXIsIHBhZ2VZLCB0YXJnZXQgfSA9IGV2ZW50XG4gICAgICBjb25zdCBkcmFnRGF0YSA9IGRhdGFUcmFuc2Zlcj8uZ2V0RGF0YShEUkFHX0RBVEFfRk9STUFUKSB8fCAnJ1xuXG4gICAgICBlZGl0b3IudXBkYXRlKCgpID0+IHtcbiAgICAgICAgY29uc3QgZHJhZ2dlZE5vZGUgPSAkZ2V0Tm9kZUJ5S2V5KGRyYWdEYXRhKVxuICAgICAgICBpZiAoIWRyYWdnZWROb2RlKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc0hUTUxFbGVtZW50KHRhcmdldCkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkaXN0YW5jZUZyb21TY3JvbGxlckVsZW0gPSBjYWxjdWxhdGVEaXN0YW5jZUZyb21TY3JvbGxlckVsZW0oXG4gICAgICAgICAgZXZlbnQucGFnZVgsXG4gICAgICAgICAgZXZlbnQucGFnZVksXG4gICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgIDEwMCxcbiAgICAgICAgICA1MCxcbiAgICAgICAgKVxuXG4gICAgICAgIGNvbnN0IHsgYmxvY2tFbGVtOiB0YXJnZXRCbG9ja0VsZW0sIGlzRm91bmROb2RlRW1wdHlQYXJhZ3JhcGggfSA9IGdldE5vZGVDbG9zZVRvUG9pbnQoe1xuICAgICAgICAgIGFuY2hvckVsZW0sXG4gICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgIGZ1enp5OiB0cnVlLFxuICAgICAgICAgIGhvcml6b250YWxPZmZzZXQ6IC1kaXN0YW5jZUZyb21TY3JvbGxlckVsZW0sXG4gICAgICAgICAgcG9pbnQ6IG5ldyBQb2ludChldmVudC54LCBldmVudC55KSxcbiAgICAgICAgICB1c2VFZGdlQXNEZWZhdWx0OiB0cnVlLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmICghdGFyZ2V0QmxvY2tFbGVtKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdGFyZ2V0Tm9kZSA9ICRnZXROZWFyZXN0Tm9kZUZyb21ET01Ob2RlKHRhcmdldEJsb2NrRWxlbSlcbiAgICAgICAgaWYgKCF0YXJnZXROb2RlKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRhcmdldE5vZGUgPT09IGRyYWdnZWROb2RlKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgaGVpZ2h0OiB0YXJnZXRCbG9ja0VsZW1IZWlnaHQsIHRvcDogdGFyZ2V0QmxvY2tFbGVtVG9wIH0gPVxuICAgICAgICAgIGdldEJvdW5kaW5nQ2xpZW50UmVjdFdpdGhvdXRUcmFuc2Zvcm0odGFyZ2V0QmxvY2tFbGVtKVxuXG4gICAgICAgIGNvbnN0IG1vdXNlWSA9IHBhZ2VZXG4gICAgICAgIGNvbnN0IGlzQmVsb3cgPSBtb3VzZVkgPj0gdGFyZ2V0QmxvY2tFbGVtVG9wICsgdGFyZ2V0QmxvY2tFbGVtSGVpZ2h0IC8gMiArIHdpbmRvdy5zY3JvbGxZXG5cbiAgICAgICAgaWYgKCFpc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoKSB7XG4gICAgICAgICAgaWYgKGlzQmVsb3cpIHtcbiAgICAgICAgICAgIC8vIGJlbG93IHRhcmdldEJsb2NrRWxlbVxuICAgICAgICAgICAgdGFyZ2V0Tm9kZS5pbnNlcnRBZnRlcihkcmFnZ2VkTm9kZSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gYWJvdmUgdGFyZ2V0QmxvY2tFbGVtXG4gICAgICAgICAgICB0YXJnZXROb2RlLmluc2VydEJlZm9yZShkcmFnZ2VkTm9kZSlcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy9cbiAgICAgICAgICB0YXJnZXROb2RlLmluc2VydEJlZm9yZShkcmFnZ2VkTm9kZSlcbiAgICAgICAgICB0YXJnZXROb2RlLnJlbW92ZSgpXG4gICAgICAgIH1cblxuICAgICAgICAvKlxuICAgICAgICBpZiAocGFnZVkgPj0gdGFyZ2V0QmxvY2tFbGVtVG9wICsgdGFyZ2V0QmxvY2tFbGVtSGVpZ2h0IC8gMikge1xuICAgICAgICAgIHRhcmdldE5vZGUuaW5zZXJ0QWZ0ZXIoZHJhZ2dlZE5vZGUpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFyZ2V0Tm9kZS5pbnNlcnRCZWZvcmUoZHJhZ2dlZE5vZGUpXG4gICAgICAgIH0qL1xuICAgICAgICBzZXREcmFnZ2FibGVCbG9ja0VsZW0obnVsbClcbiAgICAgIH0pXG5cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgLy8gcmVnaXN0ZXIgb25EcmFnb3ZlciBldmVudCBsaXN0ZW5lcnM6XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCBvbkRyYWdvdmVyKVxuICAgIC8vIHJlZ2lzdGVyIG9uRHJvcCBldmVudCBsaXN0ZW5lcnM6XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJvcCcsIG9uRHJvcClcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdkcmFnb3ZlcicsIG9uRHJhZ292ZXIpXG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdkcm9wJywgb25Ecm9wKVxuICAgIH1cbiAgfSwgW1xuICAgIGFuY2hvckVsZW0sXG4gICAgZWRpdG9yLFxuICAgIGxhc3RUYXJnZXRCbG9ja0VsZW0sXG4gICAgY2FsY3VsYXRlRGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtLFxuICAgIGRyYWdnYWJsZUJsb2NrRWxlbSxcbiAgXSlcblxuICBmdW5jdGlvbiBvbkRyYWdTdGFydChldmVudDogUmVhY3REcmFnRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KTogdm9pZCB7XG4gICAgY29uc3QgZGF0YVRyYW5zZmVyID0gZXZlbnQuZGF0YVRyYW5zZmVyXG4gICAgaWYgKCFkYXRhVHJhbnNmZXIgfHwgIWRyYWdnYWJsZUJsb2NrRWxlbSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHNldERyYWdJbWFnZShkYXRhVHJhbnNmZXIsIGRyYWdnYWJsZUJsb2NrRWxlbSlcbiAgICBsZXQgbm9kZUtleSA9ICcnXG4gICAgZWRpdG9yLnVwZGF0ZSgoKSA9PiB7XG4gICAgICBjb25zdCBub2RlID0gJGdldE5lYXJlc3ROb2RlRnJvbURPTU5vZGUoZHJhZ2dhYmxlQmxvY2tFbGVtKVxuICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgbm9kZUtleSA9IG5vZGUuZ2V0S2V5KClcbiAgICAgIH1cbiAgICB9KVxuICAgIGlzRHJhZ2dpbmdCbG9ja1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIGRhdGFUcmFuc2Zlci5zZXREYXRhKERSQUdfREFUQV9GT1JNQVQsIG5vZGVLZXkpXG4gIH1cblxuICBmdW5jdGlvbiBvbkRyYWdFbmQoKTogdm9pZCB7XG4gICAgaXNEcmFnZ2luZ0Jsb2NrUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIGhpZGVUYXJnZXRMaW5lKHRhcmdldExpbmVSZWYuY3VycmVudCwgbGFzdFRhcmdldEJsb2NrRWxlbSlcbiAgfVxuXG4gIHJldHVybiBjcmVhdGVQb3J0YWwoXG4gICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9XCJpY29uIGRyYWdnYWJsZS1ibG9jay1tZW51XCJcbiAgICAgICAgZHJhZ2dhYmxlXG4gICAgICAgIG9uRHJhZ0VuZD17b25EcmFnRW5kfVxuICAgICAgICBvbkRyYWdTdGFydD17b25EcmFnU3RhcnR9XG4gICAgICAgIHJlZj17bWVudVJlZn1cbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2lzRWRpdGFibGUgPyAnaWNvbicgOiAnJ30gLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJkcmFnZ2FibGUtYmxvY2stdGFyZ2V0LWxpbmVcIiByZWY9e3RhcmdldExpbmVSZWZ9IC8+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImRlYnVnLWhpZ2hsaWdodFwiIHJlZj17ZGVidWdIaWdobGlnaHRSZWZ9IC8+XG4gICAgPC9SZWFjdC5GcmFnbWVudD4sXG4gICAgYW5jaG9yRWxlbSxcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gRHJhZ2dhYmxlQmxvY2tQbHVnaW4oe1xuICBhbmNob3JFbGVtID0gZG9jdW1lbnQuYm9keSxcbn06IHtcbiAgYW5jaG9yRWxlbT86IEhUTUxFbGVtZW50XG59KTogSlNYLkVsZW1lbnQge1xuICBjb25zdCBbZWRpdG9yXSA9IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQoKVxuICByZXR1cm4gdXNlRHJhZ2dhYmxlQmxvY2tNZW51KGVkaXRvciwgYW5jaG9yRWxlbSwgZWRpdG9yLl9lZGl0YWJsZSlcbn1cbiJdLCJuYW1lcyI6WyJEcmFnZ2FibGVCbG9ja1BsdWdpbiIsIlNQQUNFIiwiRFJBR0dBQkxFX0JMT0NLX01FTlVfQ0xBU1NOQU1FIiwiRFJBR19EQVRBX0ZPUk1BVCIsInByZXZJbmRleCIsIkluZmluaXR5IiwiZ2V0Q3VycmVudEluZGV4Iiwia2V5c0xlbmd0aCIsIk1hdGgiLCJmbG9vciIsInNldERyYWdJbWFnZSIsImRhdGFUcmFuc2ZlciIsImRyYWdnYWJsZUJsb2NrRWxlbSIsInRyYW5zZm9ybSIsInN0eWxlIiwic2V0VGltZW91dCIsImhpZGVUYXJnZXRMaW5lIiwidGFyZ2V0TGluZUVsZW0iLCJsYXN0VGFyZ2V0QmxvY2tFbGVtIiwib3BhY2l0eSIsInVzZURyYWdnYWJsZUJsb2NrTWVudSIsImVkaXRvciIsImFuY2hvckVsZW0iLCJpc0VkaXRhYmxlIiwic2Nyb2xsZXJFbGVtIiwicGFyZW50RWxlbWVudCIsIm1lbnVSZWYiLCJ1c2VSZWYiLCJ0YXJnZXRMaW5lUmVmIiwiZGVidWdIaWdobGlnaHRSZWYiLCJpc0RyYWdnaW5nQmxvY2tSZWYiLCJzZXREcmFnZ2FibGVCbG9ja0VsZW0iLCJ1c2VTdGF0ZSIsInNldExhc3RUYXJnZXRCbG9ja0VsZW0iLCJjYWxjdWxhdGVEaXN0YW5jZUZyb21TY3JvbGxlckVsZW0iLCJ1c2VDYWxsYmFjayIsInBhZ2VYIiwicGFnZVkiLCJ0YXJnZXQiLCJob3Jpem9udGFsQnVmZmVyIiwidmVydGljYWxCdWZmZXIiLCJkaXN0YW5jZUZyb21TY3JvbGxlckVsZW0iLCJjb250YWlucyIsImJvdHRvbSIsImxlZnQiLCJyaWdodCIsInRvcCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImFkanVzdGVkVG9wIiwid2luZG93Iiwic2Nyb2xsWSIsImFkanVzdGVkQm90dG9tIiwidXNlRWZmZWN0Iiwib25Eb2N1bWVudE1vdXNlTW92ZSIsImV2ZW50IiwiaXNIVE1MRWxlbWVudCIsImlzT25IYW5kbGVFbGVtZW50IiwidG9wTGV2ZWxOb2RlS2V5cyIsImdldFRvcExldmVsTm9kZUtleXMiLCJibG9ja0VsZW0iLCJfZHJhZ2dhYmxlQmxvY2tFbGVtIiwiZm91bmRBdEluZGV4IiwiaXNGb3VuZE5vZGVFbXB0eVBhcmFncmFwaCIsImdldE5vZGVDbG9zZVRvUG9pbnQiLCJjYWNoZV90cmVzaG9sZCIsImhvcml6b250YWxPZmZzZXQiLCJwb2ludCIsIlBvaW50IiwieCIsInkiLCJzdGFydEluZGV4IiwibGVuZ3RoIiwidXNlRWRnZUFzRGVmYXVsdCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJjdXJyZW50Iiwic2V0SGFuZGxlUG9zaXRpb24iLCJvbkRyYWdvdmVyIiwiaXNGaWxlVHJhbnNmZXIiLCJldmVudEZpbGVzIiwidGFyZ2V0QmxvY2tFbGVtIiwiZnV6enkiLCJ2ZXJib3NlIiwic2V0VGFyZ2V0TGluZSIsInByZXZlbnREZWZhdWx0Iiwib25Ecm9wIiwiZHJhZ0RhdGEiLCJnZXREYXRhIiwidXBkYXRlIiwiZHJhZ2dlZE5vZGUiLCIkZ2V0Tm9kZUJ5S2V5IiwidGFyZ2V0Tm9kZSIsIiRnZXROZWFyZXN0Tm9kZUZyb21ET01Ob2RlIiwiaGVpZ2h0IiwidGFyZ2V0QmxvY2tFbGVtSGVpZ2h0IiwidGFyZ2V0QmxvY2tFbGVtVG9wIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybSIsIm1vdXNlWSIsImlzQmVsb3ciLCJpbnNlcnRBZnRlciIsImluc2VydEJlZm9yZSIsInJlbW92ZSIsIm9uRHJhZ1N0YXJ0Iiwibm9kZUtleSIsIm5vZGUiLCJnZXRLZXkiLCJzZXREYXRhIiwib25EcmFnRW5kIiwiY3JlYXRlUG9ydGFsIiwiUmVhY3QiLCJGcmFnbWVudCIsImRpdiIsImNsYXNzTmFtZSIsImRyYWdnYWJsZSIsInJlZiIsImJvZHkiLCJ1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IiwiX2VkaXRhYmxlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7K0JBa1lnQkE7OztlQUFBQTs7O3dDQTlYMEI7MEJBQ2Y7eUJBQytCOytEQUNuQzswQkFFTTt1QkFFQzt1QkFDUjtxQ0FDYzttQ0FDRjttQ0FDQTtpREFDb0I7cUNBQ2xCO1FBQzdCOytCQUN1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTlCLE1BQU1DLFFBQVEsQ0FBQztBQUNmLE1BQU1DLGlDQUFpQztBQUN2QyxNQUFNQyxtQkFBbUI7QUFFekIsSUFBSUMsWUFBWUM7QUFFaEIsU0FBU0MsZ0JBQWdCQyxVQUFrQjtJQUN6QyxJQUFJQSxlQUFlLEdBQUc7UUFDcEIsT0FBT0Y7SUFDVDtJQUNBLElBQUlE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
346
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9EcmFnZ2FibGVCbG9ja1BsdWdpbi9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5pbXBvcnQgdHlwZSB7IExleGljYWxFZGl0b3IgfSBmcm9tICdsZXhpY2FsJ1xuaW1wb3J0IHR5cGUgeyBEcmFnRXZlbnQgYXMgUmVhY3REcmFnRXZlbnQgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgdXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCB9IGZyb20gJ0BsZXhpY2FsL3JlYWN0L0xleGljYWxDb21wb3NlckNvbnRleHQnXG5pbXBvcnQgeyBldmVudEZpbGVzIH0gZnJvbSAnQGxleGljYWwvcmljaC10ZXh0J1xuaW1wb3J0IHsgJGdldE5lYXJlc3ROb2RlRnJvbURPTU5vZGUsICRnZXROb2RlQnlLZXkgfSBmcm9tICdsZXhpY2FsJ1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5cbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9ndWFyZCdcbmltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvcG9pbnQnXG5pbXBvcnQgeyBnZXRUb3BMZXZlbE5vZGVLZXlzIH0gZnJvbSAnLi4vdXRpbHMvZ2V0VG9wTGV2ZWxOb2RlS2V5cydcbmltcG9ydCB7IGlzT25IYW5kbGVFbGVtZW50IH0gZnJvbSAnLi4vdXRpbHMvaXNPbkhhbmRsZUVsZW1lbnQnXG5pbXBvcnQgeyBzZXRIYW5kbGVQb3NpdGlvbiB9IGZyb20gJy4uL3V0aWxzL3NldEhhbmRsZVBvc2l0aW9uJ1xuaW1wb3J0IHsgZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybSB9IGZyb20gJy4vZ2V0Qm91bmRpbmdSZWN0V2l0aG91dFRyYW5zZm9ybSdcbmltcG9ydCB7IGdldE5vZGVDbG9zZVRvUG9pbnQgfSBmcm9tICcuL2dldE5vZGVDbG9zZVRvUG9pbnQnXG5pbXBvcnQgJy4vaW5kZXguc2NzcydcbmltcG9ydCB7IHNldFRhcmdldExpbmUgfSBmcm9tICcuL3NldFRhcmdldExpbmUnXG5cbmNvbnN0IFNQQUNFID0gLTI0XG5jb25zdCBEUkFHR0FCTEVfQkxPQ0tfTUVOVV9DTEFTU05BTUUgPSAnZHJhZ2dhYmxlLWJsb2NrLW1lbnUnXG5jb25zdCBEUkFHX0RBVEFfRk9STUFUID0gJ2FwcGxpY2F0aW9uL3gtbGV4aWNhbC1kcmFnLWJsb2NrJ1xuXG5sZXQgcHJldkluZGV4ID0gSW5maW5pdHlcblxuZnVuY3Rpb24gZ2V0Q3VycmVudEluZGV4KGtleXNMZW5ndGg6IG51bWJlcik6IG51bWJlciB7XG4gIGlmIChrZXlzTGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIEluZmluaXR5XG4gIH1cbiAgaWYgKHByZXZJbmRleCA+PSAwICYmIHByZXZJbmRleCA8IGtleXNMZW5ndGgpIHtcbiAgICByZXR1cm4gcHJldkluZGV4XG4gIH1cblxuICByZXR1cm4gTWF0aC5mbG9vcihrZXlzTGVuZ3RoIC8gMilcbn1cblxuZnVuY3Rpb24gc2V0RHJhZ0ltYWdlKGRhdGFUcmFuc2ZlcjogRGF0YVRyYW5zZmVyLCBkcmFnZ2FibGVCbG9ja0VsZW06IEhUTUxFbGVtZW50KSB7XG4gIGNvbnN0IHsgdHJhbnNmb3JtIH0gPSBkcmFnZ2FibGVCbG9ja0VsZW0uc3R5bGVcblxuICAvLyBSZW1vdmUgZHJhZ0ltYWdlIGJvcmRlcnNcbiAgZGF0YVRyYW5zZmVyLnNldERyYWdJbWFnZShkcmFnZ2FibGVCbG9ja0VsZW0sIDAsIDApXG5cbiAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgZHJhZ2dhYmxlQmxvY2tFbGVtLnN0eWxlLnRyYW5zZm9ybSA9IHRyYW5zZm9ybVxuICB9KVxufVxuXG5mdW5jdGlvbiBoaWRlVGFyZ2V0TGluZShcbiAgdGFyZ2V0TGluZUVsZW06IEhUTUxFbGVtZW50IHwgbnVsbCxcbiAgbGFzdFRhcmdldEJsb2NrRWxlbTogSFRNTEVsZW1lbnQgfCBudWxsLFxuKSB7XG4gIGlmICh0YXJnZXRMaW5lRWxlbSkge1xuICAgIHRhcmdldExpbmVFbGVtLnN0eWxlLm9wYWNpdHkgPSAnMCdcbiAgfVxuICBpZiAobGFzdFRhcmdldEJsb2NrRWxlbSkge1xuICAgIGxhc3RUYXJnZXRCbG9ja0VsZW0uc3R5bGUub3BhY2l0eSA9ICcxJ1xuICAgIGxhc3RUYXJnZXRCbG9ja0VsZW0uc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZSgwLCAwKSdcbiAgICAvL2xhc3RUYXJnZXRCbG9ja0VsZW0uc3R5bGUuYm9yZGVyID0gJ25vbmUnXG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlRHJhZ2dhYmxlQmxvY2tNZW51KFxuICBlZGl0b3I6IExleGljYWxFZGl0b3IsXG4gIGFuY2hvckVsZW06IEhUTUxFbGVtZW50LFxuICBpc0VkaXRhYmxlOiBib29sZWFuLFxuKTogSlNYLkVsZW1lbnQge1xuICBjb25zdCBzY3JvbGxlckVsZW0gPSBhbmNob3JFbGVtLnBhcmVudEVsZW1lbnRcblxuICBjb25zdCBtZW51UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCB0YXJnZXRMaW5lUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBkZWJ1Z0hpZ2hsaWdodFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgaXNEcmFnZ2luZ0Jsb2NrUmVmID0gdXNlUmVmPGJvb2xlYW4+KGZhbHNlKVxuICBjb25zdCBbZHJhZ2dhYmxlQmxvY2tFbGVtLCBzZXREcmFnZ2FibGVCbG9ja0VsZW1dID0gdXNlU3RhdGU8SFRNTEVsZW1lbnQgfCBudWxsPihudWxsKVxuICBjb25zdCBbbGFzdFRhcmdldEJsb2NrRWxlbSwgc2V0TGFzdFRhcmdldEJsb2NrRWxlbV0gPSB1c2VTdGF0ZTxIVE1MRWxlbWVudCB8IG51bGw+KG51bGwpXG5cbiAgY29uc3QgY2FsY3VsYXRlRGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgcGFnZVg6IG51bWJlcixcbiAgICAgIHBhZ2VZOiBudW1iZXIsXG4gICAgICB0YXJnZXQ6IEhUTUxFbGVtZW50LFxuICAgICAgaG9yaXpvbnRhbEJ1ZmZlcjogbnVtYmVyID0gNTAsXG4gICAgICB2ZXJ0aWNhbEJ1ZmZlcjogbnVtYmVyID0gMjUsXG4gICAgKTogbnVtYmVyID0+IHtcbiAgICAgIGxldCBkaXN0YW5jZUZyb21TY3JvbGxlckVsZW0gPSAwXG4gICAgICAvLyBDYWxjdWxhdGUgZGlzdGFuY2UgYmV0d2VlbiBzY3JvbGxlckVsZW0gYW5kIHRhcmdldCBpZiB0YXJnZXQgaXMgbm90IGluIHNjcm9sbGVyRWxlbVxuICAgICAgaWYgKHNjcm9sbGVyRWxlbSAmJiAhc2Nyb2xsZXJFbGVtLmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAgICAgY29uc3QgeyBib3R0b20sIGxlZnQsIHJpZ2h0LCB0b3AgfSA9IHNjcm9sbGVyRWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuXG4gICAgICAgIGNvbnN0IGFkanVzdGVkVG9wID0gdG9wICsgd2luZG93LnNjcm9sbFlcbiAgICAgICAgY29uc3QgYWRqdXN0ZWRCb3R0b20gPSBib3R0b20gKyB3aW5kb3cuc2Nyb2xsWVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBwYWdlWSA8IGFkanVzdGVkVG9wIC0gdmVydGljYWxCdWZmZXIgfHxcbiAgICAgICAgICBwYWdlWSA+IGFkanVzdGVkQm90dG9tICsgdmVydGljYWxCdWZmZXIgfHxcbiAgICAgICAgICBwYWdlWCA8IGxlZnQgLSBob3Jpem9udGFsQnVmZmVyIHx8XG4gICAgICAgICAgcGFnZVggPiByaWdodCArIGhvcml6b250YWxCdWZmZXJcbiAgICAgICAgKSB7XG4gICAgICAgICAgc2V0RHJhZ2dhYmxlQmxvY2tFbGVtKG51bGwpXG4gICAgICAgICAgcmV0dXJuIGRpc3RhbmNlRnJvbVNjcm9sbGVyRWxlbVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhpcyBpcyB1c2VkIHRvIGFsbG93IHRoZSBfZHJhZ2dhYmxlQmxvY2tFbGVtIHRvIGJlIGZvdW5kIHdoZW4gdGhlIG1vdXNlIGlzIGluIHRoZVxuICAgICAgICAvLyBidWZmZXIgem9uZSBhcm91bmQgdGhlIHNjcm9sbGVyRWxlbS5cbiAgICAgICAgaWYgKHBhZ2VYIDwgbGVmdCB8fCBwYWdlWCA+IHJpZ2h0KSB7XG4gICAgICAgICAgZGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtID0gcGFnZVggPCBsZWZ0ID8gcGFnZVggLSBsZWZ0IDogcGFnZVggLSByaWdodFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtXG4gICAgfSxcbiAgICBbc2Nyb2xsZXJFbGVtXSxcbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLyoqXG4gICAgICogSGFuZGxlcyBwb3NpdGlvbmluZyBvZiB0aGUgZHJhZyBoYW5kbGVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvbkRvY3VtZW50TW91c2VNb3ZlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXRcbiAgICAgIGlmICghaXNIVE1MRWxlbWVudCh0YXJnZXQpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBkaXN0YW5jZUZyb21TY3JvbGxlckVsZW0gPSBjYWxjdWxhdGVEaXN0YW5jZUZyb21TY3JvbGxlckVsZW0oXG4gICAgICAgIGV2ZW50LnBhZ2VYLFxuICAgICAgICBldmVudC5wYWdlWSxcbiAgICAgICAgdGFyZ2V0LFxuICAgICAgKVxuXG4gICAgICBpZiAoaXNPbkhhbmRsZUVsZW1lbnQodGFyZ2V0LCBEUkFHR0FCTEVfQkxPQ0tfTUVOVV9DTEFTU05BTUUpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB0b3BMZXZlbE5vZGVLZXlzID0gZ2V0VG9wTGV2ZWxOb2RlS2V5cyhlZGl0b3IpXG4gICAgICBjb25zdCB7XG4gICAgICAgIGJsb2NrRWxlbTogX2RyYWdnYWJsZUJsb2NrRWxlbSxcbiAgICAgICAgZm91bmRBdEluZGV4LFxuICAgICAgICBpc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoLFxuICAgICAgfSA9IGdldE5vZGVDbG9zZVRvUG9pbnQoe1xuICAgICAgICBhbmNob3JFbGVtLFxuICAgICAgICBjYWNoZV90cmVzaG9sZDogMCxcbiAgICAgICAgZWRpdG9yLFxuICAgICAgICBob3Jpem9udGFsT2Zmc2V0OiAtZGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtLFxuICAgICAgICBwb2ludDogbmV3IFBvaW50KGV2ZW50LngsIGV2ZW50LnkpLFxuICAgICAgICBzdGFydEluZGV4OiBnZXRDdXJyZW50SW5kZXgodG9wTGV2ZWxOb2RlS2V5cy5sZW5ndGgpLFxuICAgICAgICB1c2VFZGdlQXNEZWZhdWx0OiBmYWxzZSxcbiAgICAgIH0pXG4gICAgICAvL2lmIChERUJVRyAmJiBfZHJhZ2dhYmxlQmxvY2tFbGVtKSB7XG4gICAgICAvL3RhcmdldEJsb2NrRWxlbS5zdHlsZS5ib3JkZXIgPSAnM3B4IHNvbGlkIHJlZCdcbiAgICAgIC8vIGhpZ2hsaWdodEVsZW1PcmlnaW5hbFBvc2l0aW9uKGRlYnVnSGlnaGxpZ2h0UmVmLCBfZHJhZ2dhYmxlQmxvY2tFbGVtLCBhbmNob3JFbGVtKVxuICAgICAgLy99XG4gICAgICBwcmV2SW5kZXggPSBmb3VuZEF0SW5kZXhcblxuICAgICAgaWYgKCFfZHJhZ2dhYmxlQmxvY2tFbGVtICYmICFpc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoZHJhZ2dhYmxlQmxvY2tFbGVtICE9PSBfZHJhZ2dhYmxlQmxvY2tFbGVtKSB7XG4gICAgICAgIHNldERyYWdnYWJsZUJsb2NrRWxlbShfZHJhZ2dhYmxlQmxvY2tFbGVtKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNpbmNlIHRoZSBkcmFnZ2FibGVCbG9ja0VsZW0gaXMgb3V0c2lkZSB0aGUgYWN0dWFsIGVkaXRvciwgd2UgbmVlZCB0byBsaXN0ZW4gdG8gdGhlIGRvY3VtZW50XG4gICAgLy8gdG8gYmUgYWJsZSB0byBkZXRlY3Qgd2hlbiB0aGUgbW91c2UgaXMgb3V0c2lkZSB0aGUgZWRpdG9yIGFuZCByZXNwZWN0IGEgYnVmZmVyIGFyb3VuZCB0aGVcbiAgICAvLyB0aGUgc2Nyb2xsZXJFbGVtIHRvIGF2b2lkIHRoZSBkcmFnZ2FibGVCbG9ja0VsZW0gZGlzYXBwZWFyaW5nIHRvbyBlYXJseS5cbiAgICBkb2N1bWVudD8uYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Eb2N1bWVudE1vdXNlTW92ZSlcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Eb2N1bWVudE1vdXNlTW92ZSlcbiAgICB9XG4gIH0sIFtzY3JvbGxlckVsZW0sIGFuY2hvckVsZW0sIGVkaXRvciwgY2FsY3VsYXRlRGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtLCBkcmFnZ2FibGVCbG9ja0VsZW1dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG1lbnVSZWYuY3VycmVudCkge1xuICAgICAgc2V0SGFuZGxlUG9zaXRpb24oZHJhZ2dhYmxlQmxvY2tFbGVtLCBtZW51UmVmLmN1cnJlbnQsIGFuY2hvckVsZW0sIFNQQUNFKVxuICAgIH1cbiAgfSwgW2FuY2hvckVsZW0sIGRyYWdnYWJsZUJsb2NrRWxlbV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmdW5jdGlvbiBvbkRyYWdvdmVyKGV2ZW50OiBEcmFnRXZlbnQpOiBib29sZWFuIHtcbiAgICAgIGlmICghaXNEcmFnZ2luZ0Jsb2NrUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICBjb25zdCBbaXNGaWxlVHJhbnNmZXJdID0gZXZlbnRGaWxlcyhldmVudClcbiAgICAgIGlmIChpc0ZpbGVUcmFuc2Zlcikge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBwYWdlWSwgdGFyZ2V0IH0gPSBldmVudFxuICAgICAgaWYgKCFpc0hUTUxFbGVtZW50KHRhcmdldCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRpc3RhbmNlRnJvbVNjcm9sbGVyRWxlbSA9IGNhbGN1bGF0ZURpc3RhbmNlRnJvbVNjcm9sbGVyRWxlbShcbiAgICAgICAgZXZlbnQucGFnZVgsXG4gICAgICAgIGV2ZW50LnBhZ2VZLFxuICAgICAgICB0YXJnZXQsXG4gICAgICAgIDEwMCxcbiAgICAgICAgNTAsXG4gICAgICApXG5cbiAgICAgIGNvbnN0IHRvcExldmVsTm9kZUtleXMgPSBnZXRUb3BMZXZlbE5vZGVLZXlzKGVkaXRvcilcblxuICAgICAgY29uc3Qge1xuICAgICAgICBibG9ja0VsZW06IHRhcmdldEJsb2NrRWxlbSxcbiAgICAgICAgZm91bmRBdEluZGV4LFxuICAgICAgICBpc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoLFxuICAgICAgfSA9IGdldE5vZGVDbG9zZVRvUG9pbnQoe1xuICAgICAgICBhbmNob3JFbGVtLFxuICAgICAgICBlZGl0b3IsXG4gICAgICAgIGZ1enp5OiB0cnVlLFxuICAgICAgICBob3Jpem9udGFsT2Zmc2V0OiAtZGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtLFxuICAgICAgICBwb2ludDogbmV3IFBvaW50KGV2ZW50LngsIGV2ZW50LnkpLFxuICAgICAgICBzdGFydEluZGV4OiBnZXRDdXJyZW50SW5kZXgodG9wTGV2ZWxOb2RlS2V5cy5sZW5ndGgpLFxuICAgICAgICB1c2VFZGdlQXNEZWZhdWx0OiB0cnVlLFxuICAgICAgICB2ZXJib3NlOiB0cnVlLFxuICAgICAgfSlcbiAgICAgIHByZXZJbmRleCA9IGZvdW5kQXRJbmRleFxuXG4gICAgICBjb25zdCB0YXJnZXRMaW5lRWxlbSA9IHRhcmdldExpbmVSZWYuY3VycmVudFxuICAgICAgLy8gdGFyZ2V0QmxvY2tFbGVtID09PSBudWxsIHNob3VsZG4ndCBoYXBwZW5cbiAgICAgIGlmICh0YXJnZXRCbG9ja0VsZW0gPT09IG51bGwgfHwgdGFyZ2V0TGluZUVsZW0gPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG5cbiAgICAgIGlmIChkcmFnZ2FibGVCbG9ja0VsZW0gIT09IHRhcmdldEJsb2NrRWxlbSkge1xuICAgICAgICBzZXRUYXJnZXRMaW5lKFxuICAgICAgICAgIFNQQUNFLFxuICAgICAgICAgIHRhcmdldExpbmVFbGVtLFxuICAgICAgICAgIHRhcmdldEJsb2NrRWxlbSxcbiAgICAgICAgICBsYXN0VGFyZ2V0QmxvY2tFbGVtLFxuICAgICAgICAgIHBhZ2VZLFxuICAgICAgICAgIGFuY2hvckVsZW0sXG4gICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgZGVidWdIaWdobGlnaHRSZWYsXG4gICAgICAgICAgaXNGb3VuZE5vZGVFbXB0eVBhcmFncmFwaCxcbiAgICAgICAgKVxuXG4gICAgICAgIC8vIFByZXZlbnQgZGVmYXVsdCBldmVudCB0byBiZSBhYmxlIHRvIHRyaWdnZXIgb25Ecm9wIGV2ZW50c1xuICAgICAgICAvLyBDYWxsaW5nIHByZXZlbnREZWZhdWx0KCkgYWRkcyB0aGUgZ3JlZW4gcGx1cyBpY29uIHRvIHRoZSBjdXJzb3IsXG4gICAgICAgIC8vIGluZGljYXRpbmcgdGhhdCB0aGUgZHJvcCBpcyBhbGxvd2VkLlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBoaWRlVGFyZ2V0TGluZSh0YXJnZXRMaW5lRWxlbSwgbGFzdFRhcmdldEJsb2NrRWxlbSlcbiAgICAgIH1cblxuICAgICAgc2V0TGFzdFRhcmdldEJsb2NrRWxlbSh0YXJnZXRCbG9ja0VsZW0pXG5cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gb25Ecm9wKGV2ZW50OiBEcmFnRXZlbnQpOiBib29sZWFuIHtcbiAgICAgIGlmICghaXNEcmFnZ2luZ0Jsb2NrUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICBjb25zdCBbaXNGaWxlVHJhbnNmZXJdID0gZXZlbnRGaWxlcyhldmVudClcbiAgICAgIGlmIChpc0ZpbGVUcmFuc2Zlcikge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgZGF0YVRyYW5zZmVyLCBwYWdlWSwgdGFyZ2V0IH0gPSBldmVudFxuICAgICAgY29uc3QgZHJhZ0RhdGEgPSBkYXRhVHJhbnNmZXI/LmdldERhdGEoRFJBR19EQVRBX0ZPUk1BVCkgfHwgJydcblxuICAgICAgZWRpdG9yLnVwZGF0ZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGRyYWdnZWROb2RlID0gJGdldE5vZGVCeUtleShkcmFnRGF0YSlcbiAgICAgICAgaWYgKCFkcmFnZ2VkTm9kZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9XG4gICAgICAgIGlmICghaXNIVE1MRWxlbWVudCh0YXJnZXQpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtID0gY2FsY3VsYXRlRGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtKFxuICAgICAgICAgIGV2ZW50LnBhZ2VYLFxuICAgICAgICAgIGV2ZW50LnBhZ2VZLFxuICAgICAgICAgIHRhcmdldCxcbiAgICAgICAgICAxMDAsXG4gICAgICAgICAgNTAsXG4gICAgICAgIClcblxuICAgICAgICBjb25zdCB7IGJsb2NrRWxlbTogdGFyZ2V0QmxvY2tFbGVtLCBpc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoIH0gPSBnZXROb2RlQ2xvc2VUb1BvaW50KHtcbiAgICAgICAgICBhbmNob3JFbGVtLFxuICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICBmdXp6eTogdHJ1ZSxcbiAgICAgICAgICBob3Jpem9udGFsT2Zmc2V0OiAtZGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtLFxuICAgICAgICAgIHBvaW50OiBuZXcgUG9pbnQoZXZlbnQueCwgZXZlbnQueSksXG4gICAgICAgICAgdXNlRWRnZUFzRGVmYXVsdDogdHJ1ZSxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAoIXRhcmdldEJsb2NrRWxlbSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRhcmdldE5vZGUgPSAkZ2V0TmVhcmVzdE5vZGVGcm9tRE9NTm9kZSh0YXJnZXRCbG9ja0VsZW0pXG4gICAgICAgIGlmICghdGFyZ2V0Tm9kZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9XG4gICAgICAgIGlmICh0YXJnZXROb2RlID09PSBkcmFnZ2VkTm9kZSkge1xuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IGhlaWdodDogdGFyZ2V0QmxvY2tFbGVtSGVpZ2h0LCB0b3A6IHRhcmdldEJsb2NrRWxlbVRvcCB9ID1cbiAgICAgICAgICBnZXRCb3VuZGluZ0NsaWVudFJlY3RXaXRob3V0VHJhbnNmb3JtKHRhcmdldEJsb2NrRWxlbSlcblxuICAgICAgICBjb25zdCBtb3VzZVkgPSBwYWdlWVxuICAgICAgICBjb25zdCBpc0JlbG93ID0gbW91c2VZID49IHRhcmdldEJsb2NrRWxlbVRvcCArIHRhcmdldEJsb2NrRWxlbUhlaWdodCAvIDIgKyB3aW5kb3cuc2Nyb2xsWVxuXG4gICAgICAgIGlmICghaXNGb3VuZE5vZGVFbXB0eVBhcmFncmFwaCkge1xuICAgICAgICAgIGlmIChpc0JlbG93KSB7XG4gICAgICAgICAgICAvLyBiZWxvdyB0YXJnZXRCbG9ja0VsZW1cbiAgICAgICAgICAgIHRhcmdldE5vZGUuaW5zZXJ0QWZ0ZXIoZHJhZ2dlZE5vZGUpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGFib3ZlIHRhcmdldEJsb2NrRWxlbVxuICAgICAgICAgICAgdGFyZ2V0Tm9kZS5pbnNlcnRCZWZvcmUoZHJhZ2dlZE5vZGUpXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vXG4gICAgICAgICAgdGFyZ2V0Tm9kZS5pbnNlcnRCZWZvcmUoZHJhZ2dlZE5vZGUpXG4gICAgICAgICAgdGFyZ2V0Tm9kZS5yZW1vdmUoKVxuICAgICAgICB9XG5cbiAgICAgICAgLypcbiAgICAgICAgaWYgKHBhZ2VZID49IHRhcmdldEJsb2NrRWxlbVRvcCArIHRhcmdldEJsb2NrRWxlbUhlaWdodCAvIDIpIHtcbiAgICAgICAgICB0YXJnZXROb2RlLmluc2VydEFmdGVyKGRyYWdnZWROb2RlKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRhcmdldE5vZGUuaW5zZXJ0QmVmb3JlKGRyYWdnZWROb2RlKVxuICAgICAgICB9Ki9cbiAgICAgICAgaWYgKGRyYWdnYWJsZUJsb2NrRWxlbSAhPT0gbnVsbCkge1xuICAgICAgICAgIHNldERyYWdnYWJsZUJsb2NrRWxlbShudWxsKVxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIC8vIHJlZ2lzdGVyIG9uRHJhZ292ZXIgZXZlbnQgbGlzdGVuZXJzOlxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdvdmVyJywgb25EcmFnb3ZlcilcbiAgICAvLyByZWdpc3RlciBvbkRyb3AgZXZlbnQgbGlzdGVuZXJzOlxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCBvbkRyb3ApXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCBvbkRyYWdvdmVyKVxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZHJvcCcsIG9uRHJvcClcbiAgICB9XG4gIH0sIFtcbiAgICBhbmNob3JFbGVtLFxuICAgIGVkaXRvcixcbiAgICBsYXN0VGFyZ2V0QmxvY2tFbGVtLFxuICAgIGNhbGN1bGF0ZURpc3RhbmNlRnJvbVNjcm9sbGVyRWxlbSxcbiAgICBkcmFnZ2FibGVCbG9ja0VsZW0sXG4gIF0pXG5cbiAgZnVuY3Rpb24gb25EcmFnU3RhcnQoZXZlbnQ6IFJlYWN0RHJhZ0V2ZW50PEhUTUxEaXZFbGVtZW50Pik6IHZvaWQge1xuICAgIGNvbnN0IGRhdGFUcmFuc2ZlciA9IGV2ZW50LmRhdGFUcmFuc2ZlclxuICAgIGlmICghZGF0YVRyYW5zZmVyIHx8ICFkcmFnZ2FibGVCbG9ja0VsZW0pIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBzZXREcmFnSW1hZ2UoZGF0YVRyYW5zZmVyLCBkcmFnZ2FibGVCbG9ja0VsZW0pXG4gICAgbGV0IG5vZGVLZXkgPSAnJ1xuICAgIGVkaXRvci51cGRhdGUoKCkgPT4ge1xuICAgICAgY29uc3Qgbm9kZSA9ICRnZXROZWFyZXN0Tm9kZUZyb21ET01Ob2RlKGRyYWdnYWJsZUJsb2NrRWxlbSlcbiAgICAgIGlmIChub2RlKSB7XG4gICAgICAgIG5vZGVLZXkgPSBub2RlLmdldEtleSgpXG4gICAgICB9XG4gICAgfSlcbiAgICBpc0RyYWdnaW5nQmxvY2tSZWYuY3VycmVudCA9IHRydWVcbiAgICBkYXRhVHJhbnNmZXIuc2V0RGF0YShEUkFHX0RBVEFfRk9STUFULCBub2RlS2V5KVxuICB9XG5cbiAgZnVuY3Rpb24gb25EcmFnRW5kKCk6IHZvaWQge1xuICAgIGlzRHJhZ2dpbmdCbG9ja1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBoaWRlVGFyZ2V0TGluZSh0YXJnZXRMaW5lUmVmLmN1cnJlbnQsIGxhc3RUYXJnZXRCbG9ja0VsZW0pXG4gIH1cblxuICByZXR1cm4gY3JlYXRlUG9ydGFsKFxuICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPVwiaWNvbiBkcmFnZ2FibGUtYmxvY2stbWVudVwiXG4gICAgICAgIGRyYWdnYWJsZVxuICAgICAgICBvbkRyYWdFbmQ9e29uRHJhZ0VuZH1cbiAgICAgICAgb25EcmFnU3RhcnQ9e29uRHJhZ1N0YXJ0fVxuICAgICAgICByZWY9e21lbnVSZWZ9XG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtpc0VkaXRhYmxlID8gJ2ljb24nIDogJyd9IC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZHJhZ2dhYmxlLWJsb2NrLXRhcmdldC1saW5lXCIgcmVmPXt0YXJnZXRMaW5lUmVmfSAvPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJkZWJ1Zy1oaWdobGlnaHRcIiByZWY9e2RlYnVnSGlnaGxpZ2h0UmVmfSAvPlxuICAgIDwvUmVhY3QuRnJhZ21lbnQ+LFxuICAgIGFuY2hvckVsZW0sXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERyYWdnYWJsZUJsb2NrUGx1Z2luKHtcbiAgYW5jaG9yRWxlbSA9IGRvY3VtZW50LmJvZHksXG59OiB7XG4gIGFuY2hvckVsZW0/OiBIVE1MRWxlbWVudFxufSk6IEpTWC5FbGVtZW50IHtcbiAgY29uc3QgW2VkaXRvcl0gPSB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0KClcbiAgcmV0dXJuIHVzZURyYWdnYWJsZUJsb2NrTWVudShlZGl0b3IsIGFuY2hvckVsZW0sIGVkaXRvci5fZWRpdGFibGUpXG59XG4iXSwibmFtZXMiOlsiRHJhZ2dhYmxlQmxvY2tQbHVnaW4iLCJTUEFDRSIsIkRSQUdHQUJMRV9CTE9DS19NRU5VX0NMQVNTTkFNRSIsIkRSQUdfREFUQV9GT1JNQVQiLCJwcmV2SW5kZXgiLCJJbmZpbml0eSIsImdldEN1cnJlbnRJbmRleCIsImtleXNMZW5ndGgiLCJNYXRoIiwiZmxvb3IiLCJzZXREcmFnSW1hZ2UiLCJkYXRhVHJhbnNmZXIiLCJkcmFnZ2FibGVCbG9ja0VsZW0iLCJ0cmFuc2Zvcm0iLCJzdHlsZSIsInNldFRpbWVvdXQiLCJoaWRlVGFyZ2V0TGluZSIsInRhcmdldExpbmVFbGVtIiwibGFzdFRhcmdldEJsb2NrRWxlbSIsIm9wYWNpdHkiLCJ1c2VEcmFnZ2FibGVCbG9ja01lbnUiLCJlZGl0b3IiLCJhbmNob3JFbGVtIiwiaXNFZGl0YWJsZSIsInNjcm9sbGVyRWxlbSIsInBhcmVudEVsZW1lbnQiLCJtZW51UmVmIiwidXNlUmVmIiwidGFyZ2V0TGluZVJlZiIsImRlYnVnSGlnaGxpZ2h0UmVmIiwiaXNEcmFnZ2luZ0Jsb2NrUmVmIiwic2V0RHJhZ2dhYmxlQmxvY2tFbGVtIiwidXNlU3RhdGUiLCJzZXRMYXN0VGFyZ2V0QmxvY2tFbGVtIiwiY2FsY3VsYXRlRGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtIiwidXNlQ2FsbGJhY2siLCJwYWdlWCIsInBhZ2VZIiwidGFyZ2V0IiwiaG9yaXpvbnRhbEJ1ZmZlciIsInZlcnRpY2FsQnVmZmVyIiwiZGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtIiwiY29udGFpbnMiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiLCJ0b3AiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJhZGp1c3RlZFRvcCIsIndpbmRvdyIsInNjcm9sbFkiLCJhZGp1c3RlZEJvdHRvbSIsInVzZUVmZmVjdCIsIm9uRG9jdW1lbnRNb3VzZU1vdmUiLCJldmVudCIsImlzSFRNTEVsZW1lbnQiLCJpc09uSGFuZGxlRWxlbWVudCIsInRvcExldmVsTm9kZUtleXMiLCJnZXRUb3BMZXZlbE5vZGVLZXlzIiwiYmxvY2tFbGVtIiwiX2RyYWdnYWJsZUJsb2NrRWxlbSIsImZvdW5kQXRJbmRleCIsImlzRm91bmROb2RlRW1wdHlQYXJhZ3JhcGgiLCJnZXROb2RlQ2xvc2VUb1BvaW50IiwiY2FjaGVfdHJlc2hvbGQiLCJob3Jpem9udGFsT2Zmc2V0IiwicG9pbnQiLCJQb2ludCIsIngiLCJ5Iiwic3RhcnRJbmRleCIsImxlbmd0aCIsInVzZUVkZ2VBc0RlZmF1bHQiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiY3VycmVudCIsInNldEhhbmRsZVBvc2l0aW9uIiwib25EcmFnb3ZlciIsImlzRmlsZVRyYW5zZmVyIiwiZXZlbnRGaWxlcyIsInRhcmdldEJsb2NrRWxlbSIsImZ1enp5IiwidmVyYm9zZSIsInNldFRhcmdldExpbmUiLCJwcmV2ZW50RGVmYXVsdCIsIm9uRHJvcCIsImRyYWdEYXRhIiwiZ2V0RGF0YSIsInVwZGF0ZSIsImRyYWdnZWROb2RlIiwiJGdldE5vZGVCeUtleSIsInRhcmdldE5vZGUiLCIkZ2V0TmVhcmVzdE5vZGVGcm9tRE9NTm9kZSIsImhlaWdodCIsInRhcmdldEJsb2NrRWxlbUhlaWdodCIsInRhcmdldEJsb2NrRWxlbVRvcCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdFdpdGhvdXRUcmFuc2Zvcm0iLCJtb3VzZVkiLCJpc0JlbG93IiwiaW5zZXJ0QWZ0ZXIiLCJpbnNlcnRCZWZvcmUiLCJyZW1vdmUiLCJvbkRyYWdTdGFydCIsIm5vZGVLZXkiLCJub2RlIiwiZ2V0S2V5Iiwic2V0RGF0YSIsIm9uRHJhZ0VuZCIsImNyZWF0ZVBvcnRhbCIsIlJlYWN0IiwiRnJhZ21lbnQiLCJkaXYiLCJjbGFzc05hbWUiLCJkcmFnZ2FibGUiLCJyZWYiLCJib2R5IiwidXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCIsIl9lZGl0YWJsZSJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
@@ -2,7 +2,7 @@
2
2
 
3
3
  .draggable-block-menu {
4
4
  border-radius: 4px;
5
- padding: 0px;
5
+ padding: 0;
6
6
  cursor: grab;
7
7
  opacity: 0;
8
8
  position: absolute;
@@ -56,4 +56,4 @@ function setTargetLine(SPACE, targetLineElem, targetBlockElem, lastTargetBlockEl
56
56
  }
57
57
  }
58
58
 
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9EcmFnZ2FibGVCbG9ja1BsdWdpbi9zZXRUYXJnZXRMaW5lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldENvbGxhcHNlZE1hcmdpbnMgfSBmcm9tICcuLi91dGlscy9nZXRDb2xsYXBzZWRNYXJnaW5zJ1xuaW1wb3J0IHsgZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybSB9IGZyb20gJy4vZ2V0Qm91bmRpbmdSZWN0V2l0aG91dFRyYW5zZm9ybSdcbmltcG9ydCB7IGhpZ2hsaWdodEVsZW1PcmlnaW5hbFBvc2l0aW9uIH0gZnJvbSAnLi9oaWdobGlnaHRFbGVtT3JpZ2luYWxQb3NpdGlvbidcbmNvbnN0IFRBUkdFVF9MSU5FX0hBTEZfSEVJR0hUID0gMjVcbmNvbnN0IFRFWFRfQk9YX0hPUklaT05UQUxfUEFERElORyA9IC0yNFxuY29uc3QgREVCVUcgPSBmYWxzZVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0VGFyZ2V0TGluZShcbiAgU1BBQ0U6IG51bWJlcixcbiAgdGFyZ2V0TGluZUVsZW06IEhUTUxFbGVtZW50LFxuICB0YXJnZXRCbG9ja0VsZW06IEhUTUxFbGVtZW50LFxuICBsYXN0VGFyZ2V0QmxvY2tFbGVtOiBIVE1MRWxlbWVudCB8IG51bGwsXG4gIG1vdXNlWTogbnVtYmVyLFxuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudCxcbiAgZXZlbnQ6IERyYWdFdmVudCxcbiAgZGVidWdIaWdobGlnaHRSZWY6IFJlYWN0LlJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIGlzRm91bmROb2RlRW1wdHlQYXJhZ3JhcGg6IGJvb2xlYW4gPSBmYWxzZSxcbikge1xuICBjb25zdCB7IGhlaWdodDogdGFyZ2V0QmxvY2tFbGVtSGVpZ2h0LCB0b3A6IHRhcmdldEJsb2NrRWxlbVRvcCB9ID1cbiAgICBnZXRCb3VuZGluZ0NsaWVudFJlY3RXaXRob3V0VHJhbnNmb3JtKHRhcmdldEJsb2NrRWxlbSlcbiAgY29uc3QgeyB0b3A6IGFuY2hvclRvcCwgd2lkdGg6IGFuY2hvcldpZHRoIH0gPSBhbmNob3JFbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG5cbiAgY29uc3QgeyBtYXJnaW5Cb3R0b20sIG1hcmdpblRvcCB9ID0gZ2V0Q29sbGFwc2VkTWFyZ2lucyh0YXJnZXRCbG9ja0VsZW0pXG4gIGxldCBsaW5lVG9wID0gdGFyZ2V0QmxvY2tFbGVtVG9wXG5cbiAgY29uc3QgaXNCZWxvdyA9IG1vdXNlWSA+PSB0YXJnZXRCbG9ja0VsZW1Ub3AgKyB0YXJnZXRCbG9ja0VsZW1IZWlnaHQgLyAyICsgd2luZG93LnNjcm9sbFlcbiAgaWYgKCFpc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoKSB7XG4gICAgaWYgKGlzQmVsb3cpIHtcbiAgICAgIC8vIGJlbG93IHRhcmdldEJsb2NrRWxlbVxuICAgICAgbGluZVRvcCArPSB0YXJnZXRCbG9ja0VsZW1IZWlnaHQgKyBtYXJnaW5Cb3R0b20gLyAyXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGFib3ZlIHRhcmdldEJsb2NrRWxlbVxuICAgICAgbGluZVRvcCAtPSBtYXJnaW5Ub3AgLyAyXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGxpbmVUb3AgKz0gdGFyZ2V0QmxvY2tFbGVtSGVpZ2h0IC8gMlxuICB9XG5cbiAgY29uc3QgdG9wID0gbGluZVRvcCAtIGFuY2hvclRvcCAtIFRBUkdFVF9MSU5FX0hBTEZfSEVJR0hUXG4gIGNvbnN0IGxlZnQgPSBURVhUX0JPWF9IT1JJWk9OVEFMX1BBRERJTkcgLSBTUEFDRVxuXG4gIHRhcmdldExpbmVFbGVtLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUoJHtsZWZ0fXB4LCAke3RvcH1weClgXG4gIHRhcmdldExpbmVFbGVtLnN0eWxlLndpZHRoID0gYCR7YW5jaG9yV2lkdGggLSAoVEVYVF9CT1hfSE9SSVpPTlRBTF9QQURESU5HIC0gU1BBQ0UpICogMn1weGBcbiAgdGFyZ2V0TGluZUVsZW0uc3R5bGUub3BhY2l0eSA9ICcuNCdcblxuICB0YXJnZXRCbG9ja0VsZW0uc3R5bGUub3BhY2l0eSA9ICcwLjQnXG4gIGlmICghaXNGb3VuZE5vZGVFbXB0eVBhcmFncmFwaCkge1xuICAgIC8vIG1vdmUgbGFzdFRhcmdldEJsb2NrRWxlbSBkb3duIDUwcHggdG8gbWFrZSBzcGFjZSBmb3IgdGFyZ2V0TGluZUVsZW0gKHdoaWNoIGlzIDUwcHggaGVpZ2h0KVxuICAgIGlmIChpc0JlbG93KSB7XG4gICAgICB0YXJnZXRCbG9ja0VsZW0uc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZSgwLCAkey1UQVJHRVRfTElORV9IQUxGX0hFSUdIVCAvIDEuOX1weClgXG4gICAgfSBlbHNlIHtcbiAgICAgIHRhcmdldEJsb2NrRWxlbS5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlKDAsICR7VEFSR0VUX0xJTkVfSEFMRl9IRUlHSFQgLyAxLjl9cHgpYFxuICAgIH1cbiAgfVxuXG4gIGlmIChERUJVRykge1xuICAgIC8vdGFyZ2V0QmxvY2tFbGVtLnN0eWxlLmJvcmRlciA9ICczcHggc29saWQgcmVkJ1xuICAgIGhpZ2hsaWdodEVsZW1PcmlnaW5hbFBvc2l0aW9uKGRlYnVnSGlnaGxpZ2h0UmVmLCB0YXJnZXRCbG9ja0VsZW0sIGFuY2hvckVsZW0pXG4gIH1cblxuICBpZiAobGFzdFRhcmdldEJsb2NrRWxlbSAmJiBsYXN0VGFyZ2V0QmxvY2tFbGVtICE9PSB0YXJnZXRCbG9ja0VsZW0pIHtcbiAgICBsYXN0VGFyZ2V0QmxvY2tFbGVtLnN0eWxlLm9wYWNpdHkgPSAnMSdcbiAgICBsYXN0VGFyZ2V0QmxvY2tFbGVtLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGUoMCwgMCknXG4gICAgLy9sYXN0VGFyZ2V0QmxvY2tFbGVtLnN0eWxlLmJvcmRlciA9ICdub25lJ1xuICB9XG59XG4iXSwibmFtZXMiOlsic2V0VGFyZ2V0TGluZSIsIlRBUkdFVF9MSU5FX0hBTEZfSEVJR0hUIiwiVEVYVF9CT1hfSE9SSVpPTlRBTF9QQURESU5HIiwiREVCVUciLCJTUEFDRSIsInRhcmdldExpbmVFbGVtIiwidGFyZ2V0QmxvY2tFbGVtIiwibGFzdFRhcmdldEJsb2NrRWxlbSIsIm1vdXNlWSIsImFuY2hvckVsZW0iLCJldmVudCIsImRlYnVnSGlnaGxpZ2h0UmVmIiwiaXNGb3VuZE5vZGVFbXB0eVBhcmFncmFwaCIsImhlaWdodCIsInRhcmdldEJsb2NrRWxlbUhlaWdodCIsInRvcCIsInRhcmdldEJsb2NrRWxlbVRvcCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdFdpdGhvdXRUcmFuc2Zvcm0iLCJhbmNob3JUb3AiLCJ3aWR0aCIsImFuY2hvcldpZHRoIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwibWFyZ2luQm90dG9tIiwibWFyZ2luVG9wIiwiZ2V0Q29sbGFwc2VkTWFyZ2lucyIsImxpbmVUb3AiLCJpc0JlbG93Iiwid2luZG93Iiwic2Nyb2xsWSIsImxlZnQiLCJzdHlsZSIsInRyYW5zZm9ybSIsIm9wYWNpdHkiLCJoaWdobGlnaHRFbGVtT3JpZ2luYWxQb3NpdGlvbiJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFPZ0JBOzs7ZUFBQUE7OztxQ0FQb0I7aURBQ2tCOytDQUNSO0FBQzlDLE1BQU1DLDBCQUEwQjtBQUNoQyxNQUFNQyw4QkFBOEIsQ0FBQztBQUNyQyxNQUFNQyxRQUFRO0FBRVAsU0FBU0gsY0FDZEksS0FBYSxFQUNiQyxjQUEyQixFQUMzQkMsZUFBNEIsRUFDNUJDLG1CQUF1QyxFQUN2Q0MsTUFBYyxFQUNkQyxVQUF1QixFQUN2QkMsS0FBZ0IsRUFDaEJDLGlCQUFrRCxFQUNsREMsNEJBQXFDLEtBQUs7SUFFMUMsTUFBTSxFQUFFQyxRQUFRQyxxQkFBcUIsRUFBRUMsS0FBS0Msa0JBQWtCLEVBQUUsR0FDOURDLElBQUFBLHNFQUFxQyxFQUFDWDtJQUN4QyxNQUFNLEVBQUVTLEtBQUtHLFNBQVMsRUFBRUMsT0FBT0MsV0FBVyxFQUFFLEdBQUdYLFdBQVdZLHFCQUFxQjtJQUUvRSxNQUFNLEVBQUVDLFlBQVksRUFBRUMsU0FBUyxFQUFFLEdBQUdDLElBQUFBLHdDQUFtQixFQUFDbEI7SUFDeEQsSUFBSW1CLFVBQVVUO0lBRWQsTUFBTVUsVUFBVWxCLFVBQVVRLHFCQUFxQkYsd0JBQXdCLElBQUlhLE9BQU9DLE9BQU87SUFDekYsSUFBSSxDQUFDaEIsMkJBQTJCO1FBQzlCLElBQUljLFNBQVM7WUFDWCx3QkFBd0I7WUFDeEJELFdBQVdYLHdCQUF3QlEsZUFBZTtRQUNwRCxPQUFPO1lBQ0wsd0JBQXdCO1lBQ3hCRyxXQUFXRixZQUFZO1FBQ3pCO0lBQ0YsT0FBTztRQUNMRSxXQUFXWCx3QkFBd0I7SUFDckM7SUFFQSxNQUFNQyxNQUFNVSxVQUFVUCxZQUFZakI7SUFDbEMsTUFBTTRCLE9BQU8zQiw4QkFBOEJFO0lBRTNDQyxlQUFleUIsS0FBSyxDQUFDQyxTQUFTLEdBQUcsQ0FBQyxVQUFVLEVBQUVGLEtBQUssSUFBSSxFQUFFZCxJQUFJLEdBQUcsQ0FBQztJQUNqRVYsZUFBZXlCLEtBQUssQ0FBQ1gsS0FBSyxHQUFHLENBQUMsRUFBRUMsY0FBYyxBQUFDbEIsQ0FBQUEsOEJBQThCRSxLQUFJLElBQUssRUFBRSxFQUFFLENBQUM7SUFDM0ZDLGVBQWV5QixLQUFLLENBQUNFLE9BQU8sR0FBRztJQUUvQjFCLGdCQUFnQndCLEtBQUssQ0FBQ0UsT0FBTyxHQUFHO0lBQ2hDLElBQUksQ0FBQ3BCLDJCQUEyQjtRQUM5Qiw2RkFBNkY7UUFDN0YsSUFBSWMsU0FBUztZQUNYcEIsZ0JBQWdCd0IsS0FBSyxDQUFDQyxTQUFTLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQzlCLDBCQUEwQixJQUFJLEdBQUcsQ0FBQztRQUN2RixPQUFPO1lBQ0xLLGdCQUFnQndCLEtBQUssQ0FBQ0MsU0FBUyxHQUFHLENBQUMsYUFBYSxFQUFFOUIsMEJBQTBCLElBQUksR0FBRyxDQUFDO1FBQ3RGO0lBQ0Y7SUFFQSxJQUFJRSxPQUFPO1FBQ1QsZ0RBQWdEO1FBQ2hEOEIsSUFBQUEsNERBQTZCLEVBQUN0QixtQkFBbUJMLGlCQUFpQkc7SUFDcEU7SUFFQSxJQUFJRix1QkFBdUJBLHdCQUF3QkQsaUJBQWlCO1FBQ2xFQyxvQkFBb0J1QixLQUFLLENBQUNFLE9BQU8sR0FBRztRQUNwQ3pCLG9CQUFvQnVCLEtBQUssQ0FBQ0MsU0FBUyxHQUFHO0lBQ3RDLDJDQUEyQztJQUM3QztBQUNGIn0=
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9EcmFnZ2FibGVCbG9ja1BsdWdpbi9zZXRUYXJnZXRMaW5lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldENvbGxhcHNlZE1hcmdpbnMgfSBmcm9tICcuLi91dGlscy9nZXRDb2xsYXBzZWRNYXJnaW5zJ1xuaW1wb3J0IHsgZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybSB9IGZyb20gJy4vZ2V0Qm91bmRpbmdSZWN0V2l0aG91dFRyYW5zZm9ybSdcbmltcG9ydCB7IGhpZ2hsaWdodEVsZW1PcmlnaW5hbFBvc2l0aW9uIH0gZnJvbSAnLi9oaWdobGlnaHRFbGVtT3JpZ2luYWxQb3NpdGlvbidcbmNvbnN0IFRBUkdFVF9MSU5FX0hBTEZfSEVJR0hUID0gMjVcbmNvbnN0IFRFWFRfQk9YX0hPUklaT05UQUxfUEFERElORyA9IC0yNFxuY29uc3QgREVCVUcgPSBmYWxzZVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0VGFyZ2V0TGluZShcbiAgU1BBQ0U6IG51bWJlcixcbiAgdGFyZ2V0TGluZUVsZW06IEhUTUxFbGVtZW50LFxuICB0YXJnZXRCbG9ja0VsZW06IEhUTUxFbGVtZW50LFxuICBsYXN0VGFyZ2V0QmxvY2tFbGVtOiBIVE1MRWxlbWVudCB8IG51bGwsXG4gIG1vdXNlWTogbnVtYmVyLFxuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudCxcbiAgZXZlbnQ6IERyYWdFdmVudCxcbiAgZGVidWdIaWdobGlnaHRSZWY6IFJlYWN0LlJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIGlzRm91bmROb2RlRW1wdHlQYXJhZ3JhcGg6IGJvb2xlYW4gPSBmYWxzZSxcbikge1xuICBjb25zdCB7IGhlaWdodDogdGFyZ2V0QmxvY2tFbGVtSGVpZ2h0LCB0b3A6IHRhcmdldEJsb2NrRWxlbVRvcCB9ID1cbiAgICBnZXRCb3VuZGluZ0NsaWVudFJlY3RXaXRob3V0VHJhbnNmb3JtKHRhcmdldEJsb2NrRWxlbSlcbiAgY29uc3QgeyB0b3A6IGFuY2hvclRvcCwgd2lkdGg6IGFuY2hvcldpZHRoIH0gPSBhbmNob3JFbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG5cbiAgY29uc3QgeyBtYXJnaW5Cb3R0b20sIG1hcmdpblRvcCB9ID0gZ2V0Q29sbGFwc2VkTWFyZ2lucyh0YXJnZXRCbG9ja0VsZW0pXG4gIGxldCBsaW5lVG9wID0gdGFyZ2V0QmxvY2tFbGVtVG9wXG5cbiAgY29uc3QgaXNCZWxvdyA9IG1vdXNlWSA+PSB0YXJnZXRCbG9ja0VsZW1Ub3AgKyB0YXJnZXRCbG9ja0VsZW1IZWlnaHQgLyAyICsgd2luZG93LnNjcm9sbFlcbiAgaWYgKCFpc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoKSB7XG4gICAgaWYgKGlzQmVsb3cpIHtcbiAgICAgIC8vIGJlbG93IHRhcmdldEJsb2NrRWxlbVxuICAgICAgbGluZVRvcCArPSB0YXJnZXRCbG9ja0VsZW1IZWlnaHQgKyBtYXJnaW5Cb3R0b20gLyAyXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGFib3ZlIHRhcmdldEJsb2NrRWxlbVxuICAgICAgbGluZVRvcCAtPSBtYXJnaW5Ub3AgLyAyXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGxpbmVUb3AgKz0gdGFyZ2V0QmxvY2tFbGVtSGVpZ2h0IC8gMlxuICB9XG5cbiAgY29uc3QgdG9wID0gbGluZVRvcCAtIGFuY2hvclRvcCAtIFRBUkdFVF9MSU5FX0hBTEZfSEVJR0hUXG4gIGNvbnN0IGxlZnQgPSBURVhUX0JPWF9IT1JJWk9OVEFMX1BBRERJTkcgLSBTUEFDRVxuXG4gIHRhcmdldExpbmVFbGVtLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUoJHtsZWZ0fXB4LCAke3RvcH1weClgXG4gIHRhcmdldExpbmVFbGVtLnN0eWxlLndpZHRoID0gYCR7YW5jaG9yV2lkdGggLSAoVEVYVF9CT1hfSE9SSVpPTlRBTF9QQURESU5HIC0gU1BBQ0UpICogMn1weGBcbiAgdGFyZ2V0TGluZUVsZW0uc3R5bGUub3BhY2l0eSA9ICcuNCdcblxuICB0YXJnZXRCbG9ja0VsZW0uc3R5bGUub3BhY2l0eSA9ICcwLjQnXG4gIGlmICghaXNGb3VuZE5vZGVFbXB0eVBhcmFncmFwaCkge1xuICAgIC8vIG1vdmUgbGFzdFRhcmdldEJsb2NrRWxlbSBkb3duIDUwcHggdG8gbWFrZSBzcGFjZSBmb3IgdGFyZ2V0TGluZUVsZW0gKHdoaWNoIGlzIDUwcHggaGVpZ2h0KVxuICAgIGlmIChpc0JlbG93KSB7XG4gICAgICB0YXJnZXRCbG9ja0VsZW0uc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZSgwLCAkey1UQVJHRVRfTElORV9IQUxGX0hFSUdIVCAvIDEuOX1weClgXG4gICAgfSBlbHNlIHtcbiAgICAgIHRhcmdldEJsb2NrRWxlbS5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlKDAsICR7VEFSR0VUX0xJTkVfSEFMRl9IRUlHSFQgLyAxLjl9cHgpYFxuICAgIH1cbiAgfVxuXG4gIGlmIChERUJVRykge1xuICAgIC8vdGFyZ2V0QmxvY2tFbGVtLnN0eWxlLmJvcmRlciA9ICczcHggc29saWQgcmVkJ1xuICAgIGhpZ2hsaWdodEVsZW1PcmlnaW5hbFBvc2l0aW9uKGRlYnVnSGlnaGxpZ2h0UmVmLCB0YXJnZXRCbG9ja0VsZW0sIGFuY2hvckVsZW0pXG4gIH1cblxuICBpZiAobGFzdFRhcmdldEJsb2NrRWxlbSAmJiBsYXN0VGFyZ2V0QmxvY2tFbGVtICE9PSB0YXJnZXRCbG9ja0VsZW0pIHtcbiAgICBsYXN0VGFyZ2V0QmxvY2tFbGVtLnN0eWxlLm9wYWNpdHkgPSAnMSdcbiAgICBsYXN0VGFyZ2V0QmxvY2tFbGVtLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGUoMCwgMCknXG4gICAgLy9sYXN0VGFyZ2V0QmxvY2tFbGVtLnN0eWxlLmJvcmRlciA9ICdub25lJ1xuICB9XG59XG4iXSwibmFtZXMiOlsic2V0VGFyZ2V0TGluZSIsIlRBUkdFVF9MSU5FX0hBTEZfSEVJR0hUIiwiVEVYVF9CT1hfSE9SSVpPTlRBTF9QQURESU5HIiwiREVCVUciLCJTUEFDRSIsInRhcmdldExpbmVFbGVtIiwidGFyZ2V0QmxvY2tFbGVtIiwibGFzdFRhcmdldEJsb2NrRWxlbSIsIm1vdXNlWSIsImFuY2hvckVsZW0iLCJldmVudCIsImRlYnVnSGlnaGxpZ2h0UmVmIiwiaXNGb3VuZE5vZGVFbXB0eVBhcmFncmFwaCIsImhlaWdodCIsInRhcmdldEJsb2NrRWxlbUhlaWdodCIsInRvcCIsInRhcmdldEJsb2NrRWxlbVRvcCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdFdpdGhvdXRUcmFuc2Zvcm0iLCJhbmNob3JUb3AiLCJ3aWR0aCIsImFuY2hvcldpZHRoIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwibWFyZ2luQm90dG9tIiwibWFyZ2luVG9wIiwiZ2V0Q29sbGFwc2VkTWFyZ2lucyIsImxpbmVUb3AiLCJpc0JlbG93Iiwid2luZG93Iiwic2Nyb2xsWSIsImxlZnQiLCJzdHlsZSIsInRyYW5zZm9ybSIsIm9wYWNpdHkiLCJoaWdobGlnaHRFbGVtT3JpZ2luYWxQb3NpdGlvbiJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsiLCJtYXBwaW5ncyI6Ijs7OzsrQkFPZ0JBOzs7ZUFBQUE7OztxQ0FQb0I7aURBQ2tCOytDQUNSO0FBQzlDLE1BQU1DLDBCQUEwQjtBQUNoQyxNQUFNQyw4QkFBOEIsQ0FBQztBQUNyQyxNQUFNQyxRQUFRO0FBRVAsU0FBU0gsY0FDZEksS0FBYSxFQUNiQyxjQUEyQixFQUMzQkMsZUFBNEIsRUFDNUJDLG1CQUF1QyxFQUN2Q0MsTUFBYyxFQUNkQyxVQUF1QixFQUN2QkMsS0FBZ0IsRUFDaEJDLGlCQUFrRCxFQUNsREMsNEJBQXFDLEtBQUs7SUFFMUMsTUFBTSxFQUFFQyxRQUFRQyxxQkFBcUIsRUFBRUMsS0FBS0Msa0JBQWtCLEVBQUUsR0FDOURDLElBQUFBLHNFQUFxQyxFQUFDWDtJQUN4QyxNQUFNLEVBQUVTLEtBQUtHLFNBQVMsRUFBRUMsT0FBT0MsV0FBVyxFQUFFLEdBQUdYLFdBQVdZLHFCQUFxQjtJQUUvRSxNQUFNLEVBQUVDLFlBQVksRUFBRUMsU0FBUyxFQUFFLEdBQUdDLElBQUFBLHdDQUFtQixFQUFDbEI7SUFDeEQsSUFBSW1CLFVBQVVUO0lBRWQsTUFBTVUsVUFBVWxCLFVBQVVRLHFCQUFxQkYsd0JBQXdCLElBQUlhLE9BQU9DLE9BQU87SUFDekYsSUFBSSxDQUFDaEIsMkJBQTJCO1FBQzlCLElBQUljLFNBQVM7WUFDWCx3QkFBd0I7WUFDeEJELFdBQVdYLHdCQUF3QlEsZUFBZTtRQUNwRCxPQUFPO1lBQ0wsd0JBQXdCO1lBQ3hCRyxXQUFXRixZQUFZO1FBQ3pCO0lBQ0YsT0FBTztRQUNMRSxXQUFXWCx3QkFBd0I7SUFDckM7SUFFQSxNQUFNQyxNQUFNVSxVQUFVUCxZQUFZakI7SUFDbEMsTUFBTTRCLE9BQU8zQiw4QkFBOEJFO0lBRTNDQyxlQUFleUIsS0FBSyxDQUFDQyxTQUFTLEdBQUcsQ0FBQyxVQUFVLEVBQUVGLEtBQUssSUFBSSxFQUFFZCxJQUFJLEdBQUcsQ0FBQztJQUNqRVYsZUFBZXlCLEtBQUssQ0FBQ1gsS0FBSyxHQUFHLENBQUMsRUFBRUMsY0FBYyxBQUFDbEIsQ0FBQUEsOEJBQThCRSxLQUFJLElBQUssRUFBRSxFQUFFLENBQUM7SUFDM0ZDLGVBQWV5QixLQUFLLENBQUNFLE9BQU8sR0FBRztJQUUvQjFCLGdCQUFnQndCLEtBQUssQ0FBQ0UsT0FBTyxHQUFHO0lBQ2hDLElBQUksQ0FBQ3BCLDJCQUEyQjtRQUM5Qiw2RkFBNkY7UUFDN0YsSUFBSWMsU0FBUztZQUNYcEIsZ0JBQWdCd0IsS0FBSyxDQUFDQyxTQUFTLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQzlCLDBCQUEwQixJQUFJLEdBQUcsQ0FBQztRQUN2RixPQUFPO1lBQ0xLLGdCQUFnQndCLEtBQUssQ0FBQ0MsU0FBUyxHQUFHLENBQUMsYUFBYSxFQUFFOUIsMEJBQTBCLElBQUksR0FBRyxDQUFDO1FBQ3RGO0lBQ0Y7SUFFQSxJQUFJRSxPQUFPO1FBQ1QsZ0RBQWdEO1FBQ2hEOEIsSUFBQUEsNERBQTZCLEVBQUN0QixtQkFBbUJMLGlCQUFpQkc7SUFDcEU7SUFFQSxJQUFJRix1QkFBdUJBLHdCQUF3QkQsaUJBQWlCO1FBQ2xFQyxvQkFBb0J1QixLQUFLLENBQUNFLE9BQU8sR0FBRztRQUNwQ3pCLG9CQUFvQnVCLEtBQUssQ0FBQ0MsU0FBUyxHQUFHO0lBQ3RDLDJDQUEyQztJQUM3QztBQUNGIn0=
@@ -0,0 +1,9 @@
1
+ /**
2
+ * From ChatGPT, only that verified it works for HR elements.
3
+ *
4
+ * HTML Elements can have CSS lineHeight applied to them, but it doesn't always affect the visual layout.
5
+ * This function checks if the line-height property has an effect on the element's layout.
6
+ * @param htmlElem
7
+ */
8
+ export declare function doesLineHeightAffectElement(htmlElem: HTMLElement): boolean;
9
+ //# sourceMappingURL=doesLineHeightAffectElement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doesLineHeightAffectElement.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/handles/utils/doesLineHeightAffectElement.ts"],"names":[],"mappings":"AAaA;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,WAAW,WA2BhE"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "doesLineHeightAffectElement", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return doesLineHeightAffectElement;
9
+ }
10
+ });
11
+ const replacedElements = [
12
+ 'IMG',
13
+ 'INPUT',
14
+ 'TEXTAREA',
15
+ 'SELECT',
16
+ 'BUTTON',
17
+ 'VIDEO',
18
+ 'OBJECT',
19
+ 'EMBED',
20
+ 'IFRAME',
21
+ 'HR'
22
+ ];
23
+ function doesLineHeightAffectElement(htmlElem) {
24
+ if (!htmlElem) return false;
25
+ // Check for replaced elements, elements that typically don't support line-height adjustments,
26
+ // and elements without visible content
27
+ if (replacedElements.includes(htmlElem.tagName) || htmlElem.offsetHeight === 0 || htmlElem.offsetWidth === 0) {
28
+ return false;
29
+ }
30
+ // Check for specific CSS properties that negate line-height's visual effects
31
+ const style = window.getComputedStyle(htmlElem);
32
+ if (style.display === 'table-cell' || style.position === 'absolute' || style.visibility === 'hidden' || style.opacity === '0') {
33
+ return false;
34
+ }
35
+ // This is a basic check, and there can be more complex scenarios where line-height doesn't have an effect.
36
+ return true;
37
+ }
38
+
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy91dGlscy9kb2VzTGluZUhlaWdodEFmZmVjdEVsZW1lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgcmVwbGFjZWRFbGVtZW50cyA9IFtcbiAgJ0lNRycsXG4gICdJTlBVVCcsXG4gICdURVhUQVJFQScsXG4gICdTRUxFQ1QnLFxuICAnQlVUVE9OJyxcbiAgJ1ZJREVPJyxcbiAgJ09CSkVDVCcsXG4gICdFTUJFRCcsXG4gICdJRlJBTUUnLFxuICAnSFInLFxuXVxuXG4vKipcbiAqIEZyb20gQ2hhdEdQVCwgb25seSB0aGF0IHZlcmlmaWVkIGl0IHdvcmtzIGZvciBIUiBlbGVtZW50cy5cbiAqXG4gKiBIVE1MIEVsZW1lbnRzIGNhbiBoYXZlIENTUyBsaW5lSGVpZ2h0IGFwcGxpZWQgdG8gdGhlbSwgYnV0IGl0IGRvZXNuJ3QgYWx3YXlzIGFmZmVjdCB0aGUgdmlzdWFsIGxheW91dC5cbiAqIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBsaW5lLWhlaWdodCBwcm9wZXJ0eSBoYXMgYW4gZWZmZWN0IG9uIHRoZSBlbGVtZW50J3MgbGF5b3V0LlxuICogQHBhcmFtIGh0bWxFbGVtXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkb2VzTGluZUhlaWdodEFmZmVjdEVsZW1lbnQoaHRtbEVsZW06IEhUTUxFbGVtZW50KSB7XG4gIGlmICghaHRtbEVsZW0pIHJldHVybiBmYWxzZVxuXG4gIC8vIENoZWNrIGZvciByZXBsYWNlZCBlbGVtZW50cywgZWxlbWVudHMgdGhhdCB0eXBpY2FsbHkgZG9uJ3Qgc3VwcG9ydCBsaW5lLWhlaWdodCBhZGp1c3RtZW50cyxcbiAgLy8gYW5kIGVsZW1lbnRzIHdpdGhvdXQgdmlzaWJsZSBjb250ZW50XG5cbiAgaWYgKFxuICAgIHJlcGxhY2VkRWxlbWVudHMuaW5jbHVkZXMoaHRtbEVsZW0udGFnTmFtZSkgfHxcbiAgICBodG1sRWxlbS5vZmZzZXRIZWlnaHQgPT09IDAgfHxcbiAgICBodG1sRWxlbS5vZmZzZXRXaWR0aCA9PT0gMFxuICApIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8vIENoZWNrIGZvciBzcGVjaWZpYyBDU1MgcHJvcGVydGllcyB0aGF0IG5lZ2F0ZSBsaW5lLWhlaWdodCdzIHZpc3VhbCBlZmZlY3RzXG4gIGNvbnN0IHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoaHRtbEVsZW0pXG4gIGlmIChcbiAgICBzdHlsZS5kaXNwbGF5ID09PSAndGFibGUtY2VsbCcgfHxcbiAgICBzdHlsZS5wb3NpdGlvbiA9PT0gJ2Fic29sdXRlJyB8fFxuICAgIHN0eWxlLnZpc2liaWxpdHkgPT09ICdoaWRkZW4nIHx8XG4gICAgc3R5bGUub3BhY2l0eSA9PT0gJzAnXG4gICkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLy8gVGhpcyBpcyBhIGJhc2ljIGNoZWNrLCBhbmQgdGhlcmUgY2FuIGJlIG1vcmUgY29tcGxleCBzY2VuYXJpb3Mgd2hlcmUgbGluZS1oZWlnaHQgZG9lc24ndCBoYXZlIGFuIGVmZmVjdC5cbiAgcmV0dXJuIHRydWVcbn1cbiJdLCJuYW1lcyI6WyJkb2VzTGluZUhlaWdodEFmZmVjdEVsZW1lbnQiLCJyZXBsYWNlZEVsZW1lbnRzIiwiaHRtbEVsZW0iLCJpbmNsdWRlcyIsInRhZ05hbWUiLCJvZmZzZXRIZWlnaHQiLCJvZmZzZXRXaWR0aCIsInN0eWxlIiwid2luZG93IiwiZ2V0Q29tcHV0ZWRTdHlsZSIsImRpc3BsYXkiLCJwb3NpdGlvbiIsInZpc2liaWxpdHkiLCJvcGFjaXR5Il0sInJhbmdlTWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsiLCJtYXBwaW5ncyI6Ijs7OzsrQkFvQmdCQTs7O2VBQUFBOzs7QUFwQmhCLE1BQU1DLG1CQUFtQjtJQUN2QjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtDQUNEO0FBU00sU0FBU0QsNEJBQTRCRSxRQUFxQjtJQUMvRCxJQUFJLENBQUNBLFVBQVUsT0FBTztJQUV0Qiw4RkFBOEY7SUFDOUYsdUNBQXVDO0lBRXZDLElBQ0VELGlCQUFpQkUsUUFBUSxDQUFDRCxTQUFTRSxPQUFPLEtBQzFDRixTQUFTRyxZQUFZLEtBQUssS0FDMUJILFNBQVNJLFdBQVcsS0FBSyxHQUN6QjtRQUNBLE9BQU87SUFDVDtJQUVBLDZFQUE2RTtJQUM3RSxNQUFNQyxRQUFRQyxPQUFPQyxnQkFBZ0IsQ0FBQ1A7SUFDdEMsSUFDRUssTUFBTUcsT0FBTyxLQUFLLGdCQUNsQkgsTUFBTUksUUFBUSxLQUFLLGNBQ25CSixNQUFNSyxVQUFVLEtBQUssWUFDckJMLE1BQU1NLE9BQU8sS0FBSyxLQUNsQjtRQUNBLE9BQU87SUFDVDtJQUVBLDJHQUEyRztJQUMzRyxPQUFPO0FBQ1QifQ==
@@ -21,4 +21,4 @@ function getCollapsedMargins(elem) {
21
21
  };
22
22
  }
23
23
 
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy91dGlscy9nZXRDb2xsYXBzZWRNYXJnaW5zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBnZXRDb2xsYXBzZWRNYXJnaW5zKGVsZW06IEhUTUxFbGVtZW50KToge1xuICBtYXJnaW5Cb3R0b206IG51bWJlclxuICBtYXJnaW5Ub3A6IG51bWJlclxufSB7XG4gIGNvbnN0IGdldE1hcmdpbiA9IChlbGVtZW50OiBFbGVtZW50IHwgbnVsbCwgbWFyZ2luOiAnbWFyZ2luQm90dG9tJyB8ICdtYXJnaW5Ub3AnKTogbnVtYmVyID0+XG4gICAgZWxlbWVudCA/IHBhcnNlRmxvYXQod2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudClbbWFyZ2luXSkgOiAwXG5cbiAgY29uc3QgeyBtYXJnaW5Cb3R0b20sIG1hcmdpblRvcCB9ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbSlcbiAgY29uc3QgcHJldkVsZW1TaWJsaW5nTWFyZ2luQm90dG9tID0gZ2V0TWFyZ2luKGVsZW0ucHJldmlvdXNFbGVtZW50U2libGluZywgJ21hcmdpbkJvdHRvbScpXG4gIGNvbnN0IG5leHRFbGVtU2libGluZ01hcmdpblRvcCA9IGdldE1hcmdpbihlbGVtLm5leHRFbGVtZW50U2libGluZywgJ21hcmdpblRvcCcpXG4gIGNvbnN0IGNvbGxhcHNlZFRvcE1hcmdpbiA9IE1hdGgubWF4KHBhcnNlRmxvYXQobWFyZ2luVG9wKSwgcHJldkVsZW1TaWJsaW5nTWFyZ2luQm90dG9tKVxuICBjb25zdCBjb2xsYXBzZWRCb3R0b21NYXJnaW4gPSBNYXRoLm1heChwYXJzZUZsb2F0KG1hcmdpbkJvdHRvbSksIG5leHRFbGVtU2libGluZ01hcmdpblRvcClcblxuICByZXR1cm4geyBtYXJnaW5Cb3R0b206IGNvbGxhcHNlZEJvdHRvbU1hcmdpbiwgbWFyZ2luVG9wOiBjb2xsYXBzZWRUb3BNYXJnaW4gfVxufVxuIl0sIm5hbWVzIjpbImdldENvbGxhcHNlZE1hcmdpbnMiLCJlbGVtIiwiZ2V0TWFyZ2luIiwiZWxlbWVudCIsIm1hcmdpbiIsInBhcnNlRmxvYXQiLCJ3aW5kb3ciLCJnZXRDb21wdXRlZFN0eWxlIiwibWFyZ2luQm90dG9tIiwibWFyZ2luVG9wIiwicHJldkVsZW1TaWJsaW5nTWFyZ2luQm90dG9tIiwicHJldmlvdXNFbGVtZW50U2libGluZyIsIm5leHRFbGVtU2libGluZ01hcmdpblRvcCIsIm5leHRFbGVtZW50U2libGluZyIsImNvbGxhcHNlZFRvcE1hcmdpbiIsIk1hdGgiLCJtYXgiLCJjb2xsYXBzZWRCb3R0b21NYXJnaW4iXSwibWFwcGluZ3MiOiI7Ozs7K0JBQWdCQTs7O2VBQUFBOzs7QUFBVCxTQUFTQSxvQkFBb0JDLElBQWlCO0lBSW5ELE1BQU1DLFlBQVksQ0FBQ0MsU0FBeUJDLFNBQzFDRCxVQUFVRSxXQUFXQyxPQUFPQyxnQkFBZ0IsQ0FBQ0osUUFBUSxDQUFDQyxPQUFPLElBQUk7SUFFbkUsTUFBTSxFQUFFSSxZQUFZLEVBQUVDLFNBQVMsRUFBRSxHQUFHSCxPQUFPQyxnQkFBZ0IsQ0FBQ047SUFDNUQsTUFBTVMsOEJBQThCUixVQUFVRCxLQUFLVSxzQkFBc0IsRUFBRTtJQUMzRSxNQUFNQywyQkFBMkJWLFVBQVVELEtBQUtZLGtCQUFrQixFQUFFO0lBQ3BFLE1BQU1DLHFCQUFxQkMsS0FBS0MsR0FBRyxDQUFDWCxXQUFXSSxZQUFZQztJQUMzRCxNQUFNTyx3QkFBd0JGLEtBQUtDLEdBQUcsQ0FBQ1gsV0FBV0csZUFBZUk7SUFFakUsT0FBTztRQUFFSixjQUFjUztRQUF1QlIsV0FBV0s7SUFBbUI7QUFDOUUifQ==
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy91dGlscy9nZXRDb2xsYXBzZWRNYXJnaW5zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBnZXRDb2xsYXBzZWRNYXJnaW5zKGVsZW06IEhUTUxFbGVtZW50KToge1xuICBtYXJnaW5Cb3R0b206IG51bWJlclxuICBtYXJnaW5Ub3A6IG51bWJlclxufSB7XG4gIGNvbnN0IGdldE1hcmdpbiA9IChlbGVtZW50OiBFbGVtZW50IHwgbnVsbCwgbWFyZ2luOiAnbWFyZ2luQm90dG9tJyB8ICdtYXJnaW5Ub3AnKTogbnVtYmVyID0+XG4gICAgZWxlbWVudCA/IHBhcnNlRmxvYXQod2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudClbbWFyZ2luXSkgOiAwXG5cbiAgY29uc3QgeyBtYXJnaW5Cb3R0b20sIG1hcmdpblRvcCB9ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbSlcbiAgY29uc3QgcHJldkVsZW1TaWJsaW5nTWFyZ2luQm90dG9tID0gZ2V0TWFyZ2luKGVsZW0ucHJldmlvdXNFbGVtZW50U2libGluZywgJ21hcmdpbkJvdHRvbScpXG4gIGNvbnN0IG5leHRFbGVtU2libGluZ01hcmdpblRvcCA9IGdldE1hcmdpbihlbGVtLm5leHRFbGVtZW50U2libGluZywgJ21hcmdpblRvcCcpXG4gIGNvbnN0IGNvbGxhcHNlZFRvcE1hcmdpbiA9IE1hdGgubWF4KHBhcnNlRmxvYXQobWFyZ2luVG9wKSwgcHJldkVsZW1TaWJsaW5nTWFyZ2luQm90dG9tKVxuICBjb25zdCBjb2xsYXBzZWRCb3R0b21NYXJnaW4gPSBNYXRoLm1heChwYXJzZUZsb2F0KG1hcmdpbkJvdHRvbSksIG5leHRFbGVtU2libGluZ01hcmdpblRvcClcblxuICByZXR1cm4geyBtYXJnaW5Cb3R0b206IGNvbGxhcHNlZEJvdHRvbU1hcmdpbiwgbWFyZ2luVG9wOiBjb2xsYXBzZWRUb3BNYXJnaW4gfVxufVxuIl0sIm5hbWVzIjpbImdldENvbGxhcHNlZE1hcmdpbnMiLCJlbGVtIiwiZ2V0TWFyZ2luIiwiZWxlbWVudCIsIm1hcmdpbiIsInBhcnNlRmxvYXQiLCJ3aW5kb3ciLCJnZXRDb21wdXRlZFN0eWxlIiwibWFyZ2luQm90dG9tIiwibWFyZ2luVG9wIiwicHJldkVsZW1TaWJsaW5nTWFyZ2luQm90dG9tIiwicHJldmlvdXNFbGVtZW50U2libGluZyIsIm5leHRFbGVtU2libGluZ01hcmdpblRvcCIsIm5leHRFbGVtZW50U2libGluZyIsImNvbGxhcHNlZFRvcE1hcmdpbiIsIk1hdGgiLCJtYXgiLCJjb2xsYXBzZWRCb3R0b21NYXJnaW4iXSwicmFuZ2VNYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyIsIm1hcHBpbmdzIjoiOzs7OytCQUFnQkE7OztlQUFBQTs7O0FBQVQsU0FBU0Esb0JBQW9CQyxJQUFpQjtJQUluRCxNQUFNQyxZQUFZLENBQUNDLFNBQXlCQyxTQUMxQ0QsVUFBVUUsV0FBV0MsT0FBT0MsZ0JBQWdCLENBQUNKLFFBQVEsQ0FBQ0MsT0FBTyxJQUFJO0lBRW5FLE1BQU0sRUFBRUksWUFBWSxFQUFFQyxTQUFTLEVBQUUsR0FBR0gsT0FBT0MsZ0JBQWdCLENBQUNOO0lBQzVELE1BQU1TLDhCQUE4QlIsVUFBVUQsS0FBS1Usc0JBQXNCLEVBQUU7SUFDM0UsTUFBTUMsMkJBQTJCVixVQUFVRCxLQUFLWSxrQkFBa0IsRUFBRTtJQUNwRSxNQUFNQyxxQkFBcUJDLEtBQUtDLEdBQUcsQ0FBQ1gsV0FBV0ksWUFBWUM7SUFDM0QsTUFBTU8sd0JBQXdCRixLQUFLQyxHQUFHLENBQUNYLFdBQVdHLGVBQWVJO0lBRWpFLE9BQU87UUFBRUosY0FBY1M7UUFBdUJSLFdBQVdLO0lBQW1CO0FBQzlFIn0=
@@ -13,4 +13,4 @@ function getTopLevelNodeKeys(editor) {
13
13
  return editor.getEditorState().read(()=>(0, _lexical.$getRoot)().getChildrenKeys());
14
14
  }
15
15
 
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy91dGlscy9nZXRUb3BMZXZlbE5vZGVLZXlzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTGV4aWNhbEVkaXRvciB9IGZyb20gJ2xleGljYWwnXG5cbmltcG9ydCB7ICRnZXRSb290IH0gZnJvbSAnbGV4aWNhbCdcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRvcExldmVsTm9kZUtleXMoZWRpdG9yOiBMZXhpY2FsRWRpdG9yKTogc3RyaW5nW10ge1xuICByZXR1cm4gZWRpdG9yLmdldEVkaXRvclN0YXRlKCkucmVhZCgoKSA9PiAkZ2V0Um9vdCgpLmdldENoaWxkcmVuS2V5cygpKVxufVxuIl0sIm5hbWVzIjpbImdldFRvcExldmVsTm9kZUtleXMiLCJlZGl0b3IiLCJnZXRFZGl0b3JTdGF0ZSIsInJlYWQiLCIkZ2V0Um9vdCIsImdldENoaWxkcmVuS2V5cyJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFJZ0JBOzs7ZUFBQUE7Ozt5QkFGUztBQUVsQixTQUFTQSxvQkFBb0JDLE1BQXFCO0lBQ3ZELE9BQU9BLE9BQU9DLGNBQWMsR0FBR0MsSUFBSSxDQUFDLElBQU1DLElBQUFBLGlCQUFRLElBQUdDLGVBQWU7QUFDdEUifQ==
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy91dGlscy9nZXRUb3BMZXZlbE5vZGVLZXlzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTGV4aWNhbEVkaXRvciB9IGZyb20gJ2xleGljYWwnXG5cbmltcG9ydCB7ICRnZXRSb290IH0gZnJvbSAnbGV4aWNhbCdcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRvcExldmVsTm9kZUtleXMoZWRpdG9yOiBMZXhpY2FsRWRpdG9yKTogc3RyaW5nW10ge1xuICByZXR1cm4gZWRpdG9yLmdldEVkaXRvclN0YXRlKCkucmVhZCgoKSA9PiAkZ2V0Um9vdCgpLmdldENoaWxkcmVuS2V5cygpKVxufVxuIl0sIm5hbWVzIjpbImdldFRvcExldmVsTm9kZUtleXMiLCJlZGl0b3IiLCJnZXRFZGl0b3JTdGF0ZSIsInJlYWQiLCIkZ2V0Um9vdCIsImdldENoaWxkcmVuS2V5cyJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OyIsIm1hcHBpbmdzIjoiOzs7OytCQUlnQkE7OztlQUFBQTs7O3lCQUZTO0FBRWxCLFNBQVNBLG9CQUFvQkMsTUFBcUI7SUFDdkQsT0FBT0EsT0FBT0MsY0FBYyxHQUFHQyxJQUFJLENBQUMsSUFBTUMsSUFBQUEsaUJBQVEsSUFBR0MsZUFBZTtBQUN0RSJ9
@@ -12,4 +12,4 @@ function isOnHandleElement(element, handleElementClassName) {
12
12
  return !!element.closest(`.${handleElementClassName}`);
13
13
  }
14
14
 
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy91dGlscy9pc09uSGFuZGxlRWxlbWVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gaXNPbkhhbmRsZUVsZW1lbnQoZWxlbWVudDogSFRNTEVsZW1lbnQsIGhhbmRsZUVsZW1lbnRDbGFzc05hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gISFlbGVtZW50LmNsb3Nlc3QoYC4ke2hhbmRsZUVsZW1lbnRDbGFzc05hbWV9YClcbn1cbiJdLCJuYW1lcyI6WyJpc09uSGFuZGxlRWxlbWVudCIsImVsZW1lbnQiLCJoYW5kbGVFbGVtZW50Q2xhc3NOYW1lIiwiY2xvc2VzdCJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFBZ0JBOzs7ZUFBQUE7OztBQUFULFNBQVNBLGtCQUFrQkMsT0FBb0IsRUFBRUMsc0JBQThCO0lBQ3BGLE9BQU8sQ0FBQyxDQUFDRCxRQUFRRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUVELHVCQUF1QixDQUFDO0FBQ3ZEIn0=
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy91dGlscy9pc09uSGFuZGxlRWxlbWVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gaXNPbkhhbmRsZUVsZW1lbnQoZWxlbWVudDogSFRNTEVsZW1lbnQsIGhhbmRsZUVsZW1lbnRDbGFzc05hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gISFlbGVtZW50LmNsb3Nlc3QoYC4ke2hhbmRsZUVsZW1lbnRDbGFzc05hbWV9YClcbn1cbiJdLCJuYW1lcyI6WyJpc09uSGFuZGxlRWxlbWVudCIsImVsZW1lbnQiLCJoYW5kbGVFbGVtZW50Q2xhc3NOYW1lIiwiY2xvc2VzdCJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7IiwibWFwcGluZ3MiOiI7Ozs7K0JBQWdCQTs7O2VBQUFBOzs7QUFBVCxTQUFTQSxrQkFBa0JDLE9BQW9CLEVBQUVDLHNCQUE4QjtJQUNwRixPQUFPLENBQUMsQ0FBQ0QsUUFBUUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFRCx1QkFBdUIsQ0FBQztBQUN2RCJ9