@payloadcms/richtext-lexical 3.0.0-alpha.18 → 3.0.0-alpha.20

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 (283) hide show
  1. package/components.js +6 -33
  2. package/dist/cell/index.js +29 -80
  3. package/dist/exports/components.js +6 -33
  4. package/dist/field/Field.js +15 -66
  5. package/dist/field/features/align/feature.client.js +21 -31
  6. package/dist/field/features/align/feature.server.js +4 -14
  7. package/dist/field/features/align/floatingSelectToolbarAlignDropdownSection.js +4 -14
  8. package/dist/field/features/blockquote/feature.client.js +20 -30
  9. package/dist/field/features/blockquote/feature.server.js +11 -21
  10. package/dist/field/features/blockquote/markdownTransformer.js +9 -19
  11. package/dist/field/features/blocks/component/BlockContent.js +34 -85
  12. package/dist/field/features/blocks/component/FormSavePlugin.js +7 -17
  13. package/dist/field/features/blocks/component/index.js +25 -76
  14. package/dist/field/features/blocks/drawer/index.js +25 -84
  15. package/dist/field/features/blocks/feature.client.js +15 -25
  16. package/dist/field/features/blocks/feature.server.js +16 -26
  17. package/dist/field/features/blocks/nodes/BlocksNode.d.ts.map +1 -1
  18. package/dist/field/features/blocks/nodes/BlocksNode.js +11 -78
  19. package/dist/field/features/blocks/plugin/commands.js +3 -13
  20. package/dist/field/features/blocks/plugin/index.js +20 -71
  21. package/dist/field/features/blocks/populationPromise.js +6 -16
  22. package/dist/field/features/blocks/validate.js +4 -14
  23. package/dist/field/features/common/floatingSelectToolbarFeaturesButtonsSection/index.js +2 -12
  24. package/dist/field/features/common/floatingSelectToolbarTextDropdownSection/index.js +4 -14
  25. package/dist/field/features/converters/html/converter/converters/linebreak.js +2 -12
  26. package/dist/field/features/converters/html/converter/converters/paragraph.js +4 -14
  27. package/dist/field/features/converters/html/converter/converters/text.js +10 -20
  28. package/dist/field/features/converters/html/converter/defaultConverters.js +8 -18
  29. package/dist/field/features/converters/html/converter/index.js +3 -21
  30. package/dist/field/features/converters/html/converter/types.js +2 -5
  31. package/dist/field/features/converters/html/feature.server.js +2 -12
  32. package/dist/field/features/converters/html/field/index.js +11 -25
  33. package/dist/field/features/createClientComponent.js +6 -14
  34. package/dist/field/features/createFeaturePropComponent.js +5 -15
  35. package/dist/field/features/debug/testrecorder/feature.client.js +5 -15
  36. package/dist/field/features/debug/testrecorder/feature.server.js +4 -14
  37. package/dist/field/features/debug/testrecorder/plugin/index.js +41 -99
  38. package/dist/field/features/debug/treeview/feature.client.js +5 -15
  39. package/dist/field/features/debug/treeview/feature.server.js +4 -14
  40. package/dist/field/features/debug/treeview/plugin/index.js +8 -59
  41. package/dist/field/features/format/bold/feature.client.js +14 -24
  42. package/dist/field/features/format/bold/feature.server.js +8 -18
  43. package/dist/field/features/format/bold/markdownTransformers.js +5 -29
  44. package/dist/field/features/format/common/floatingSelectToolbarSection.js +2 -12
  45. package/dist/field/features/format/inlinecode/feature.client.js +12 -22
  46. package/dist/field/features/format/inlinecode/feature.server.js +6 -16
  47. package/dist/field/features/format/inlinecode/markdownTransformers.js +2 -12
  48. package/dist/field/features/format/italic/feature.client.js +13 -23
  49. package/dist/field/features/format/italic/feature.server.js +7 -17
  50. package/dist/field/features/format/italic/markdownTransformers.js +3 -21
  51. package/dist/field/features/format/strikethrough/feature.client.js +12 -22
  52. package/dist/field/features/format/strikethrough/feature.server.js +6 -16
  53. package/dist/field/features/format/strikethrough/markdownTransformers.js +2 -12
  54. package/dist/field/features/format/subscript/feature.client.js +10 -20
  55. package/dist/field/features/format/subscript/feature.server.js +4 -14
  56. package/dist/field/features/format/superscript/feature.client.js +10 -20
  57. package/dist/field/features/format/superscript/feature.server.js +4 -14
  58. package/dist/field/features/format/underline/feature.client.js +10 -20
  59. package/dist/field/features/format/underline/feature.server.js +4 -14
  60. package/dist/field/features/heading/feature.client.js +28 -37
  61. package/dist/field/features/heading/feature.server.js +12 -22
  62. package/dist/field/features/heading/markdownTransformer.js +8 -18
  63. package/dist/field/features/indent/feature.client.js +13 -23
  64. package/dist/field/features/indent/feature.server.js +4 -14
  65. package/dist/field/features/indent/floatingSelectToolbarIndentSection.js +2 -12
  66. package/dist/field/features/link/drawer/baseFields.js +6 -16
  67. package/dist/field/features/link/drawer/index.js +24 -74
  68. package/dist/field/features/link/drawer/types.js +2 -5
  69. package/dist/field/features/link/feature.client.js +29 -39
  70. package/dist/field/features/link/feature.server.js +22 -32
  71. package/dist/field/features/link/nodes/AutoLinkNode.js +10 -29
  72. package/dist/field/features/link/nodes/LinkNode.js +18 -45
  73. package/dist/field/features/link/nodes/types.js +2 -5
  74. package/dist/field/features/link/plugins/autoLink/index.js +33 -51
  75. package/dist/field/features/link/plugins/clickableLink/index.js +5 -20
  76. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/commands.js +3 -13
  77. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/index.js +64 -114
  78. package/dist/field/features/link/plugins/floatingLinkEditor/index.js +7 -58
  79. package/dist/field/features/link/plugins/floatingLinkEditor/types.js +5 -5
  80. package/dist/field/features/link/plugins/floatingLinkEditor/utilities.js +6 -14
  81. package/dist/field/features/link/plugins/link/index.js +21 -31
  82. package/dist/field/features/link/populationPromise.js +6 -16
  83. package/dist/field/features/lists/checklist/feature.client.js +21 -31
  84. package/dist/field/features/lists/checklist/feature.server.js +12 -22
  85. package/dist/field/features/lists/checklist/markdownTransformers.js +8 -18
  86. package/dist/field/features/lists/checklist/plugin/index.js +5 -20
  87. package/dist/field/features/lists/common/markdown.js +10 -28
  88. package/dist/field/features/lists/htmlConverter.js +9 -27
  89. package/dist/field/features/lists/orderedlist/feature.client.js +19 -29
  90. package/dist/field/features/lists/orderedlist/feature.server.js +12 -22
  91. package/dist/field/features/lists/orderedlist/markdownTransformer.js +8 -18
  92. package/dist/field/features/lists/plugin/index.js +5 -20
  93. package/dist/field/features/lists/unorderedlist/feature.client.js +19 -29
  94. package/dist/field/features/lists/unorderedlist/feature.server.js +12 -22
  95. package/dist/field/features/lists/unorderedlist/markdownTransformer.js +8 -18
  96. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/client.js +4 -14
  97. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/converter.js +4 -14
  98. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/index.js +6 -16
  99. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/client.js +4 -14
  100. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/converter.js +4 -14
  101. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/index.js +6 -16
  102. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/client.js +4 -14
  103. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/converter.js +4 -14
  104. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/index.js +6 -16
  105. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/client.js +4 -14
  106. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.js +4 -14
  107. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/index.js +6 -16
  108. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/client.js +4 -14
  109. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/converter.js +4 -14
  110. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/index.js +6 -16
  111. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/client.js +4 -14
  112. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.js +4 -14
  113. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/index.js +6 -16
  114. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/client.js +4 -14
  115. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.js +2 -12
  116. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/index.js +6 -16
  117. package/dist/field/features/migrations/lexicalPluginToLexical/converter/defaultConverters.js +16 -26
  118. package/dist/field/features/migrations/lexicalPluginToLexical/converter/index.js +5 -29
  119. package/dist/field/features/migrations/lexicalPluginToLexical/converter/types.js +2 -5
  120. package/dist/field/features/migrations/lexicalPluginToLexical/feature.client.js +7 -17
  121. package/dist/field/features/migrations/lexicalPluginToLexical/feature.server.js +9 -19
  122. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.js +5 -20
  123. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.d.ts.map +1 -1
  124. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js +10 -73
  125. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/client.js +4 -14
  126. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/converter.js +4 -14
  127. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/index.js +6 -16
  128. package/dist/field/features/migrations/slateToLexical/converter/converters/heading/client.js +4 -14
  129. package/dist/field/features/migrations/slateToLexical/converter/converters/heading/converter.js +4 -14
  130. package/dist/field/features/migrations/slateToLexical/converter/converters/heading/index.js +6 -16
  131. package/dist/field/features/migrations/slateToLexical/converter/converters/indent/client.js +4 -14
  132. package/dist/field/features/migrations/slateToLexical/converter/converters/indent/converter.js +4 -14
  133. package/dist/field/features/migrations/slateToLexical/converter/converters/indent/index.js +6 -16
  134. package/dist/field/features/migrations/slateToLexical/converter/converters/link/client.js +4 -14
  135. package/dist/field/features/migrations/slateToLexical/converter/converters/link/converter.js +4 -14
  136. package/dist/field/features/migrations/slateToLexical/converter/converters/link/index.js +6 -16
  137. package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/client.js +4 -14
  138. package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/converter.js +4 -14
  139. package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/index.js +6 -16
  140. package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/client.js +4 -14
  141. package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/converter.js +4 -14
  142. package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/index.js +6 -16
  143. package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/client.js +4 -14
  144. package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/converter.js +2 -12
  145. package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/index.js +6 -16
  146. package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/client.js +4 -14
  147. package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/converter.js +4 -14
  148. package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/index.js +6 -16
  149. package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/client.js +4 -14
  150. package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/converter.js +4 -14
  151. package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/index.js +6 -16
  152. package/dist/field/features/migrations/slateToLexical/converter/converters/upload/client.js +4 -14
  153. package/dist/field/features/migrations/slateToLexical/converter/converters/upload/converter.js +2 -12
  154. package/dist/field/features/migrations/slateToLexical/converter/converters/upload/index.js +6 -16
  155. package/dist/field/features/migrations/slateToLexical/converter/defaultConverters.js +22 -32
  156. package/dist/field/features/migrations/slateToLexical/converter/index.js +14 -41
  157. package/dist/field/features/migrations/slateToLexical/converter/types.js +2 -5
  158. package/dist/field/features/migrations/slateToLexical/feature.client.js +7 -17
  159. package/dist/field/features/migrations/slateToLexical/feature.server.js +9 -19
  160. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.js +5 -20
  161. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.d.ts.map +1 -1
  162. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js +10 -73
  163. package/dist/field/features/paragraph/feature.client.js +16 -26
  164. package/dist/field/features/paragraph/feature.server.js +4 -14
  165. package/dist/field/features/relationship/drawer/commands.js +3 -13
  166. package/dist/field/features/relationship/drawer/index.js +24 -75
  167. package/dist/field/features/relationship/feature.client.js +15 -25
  168. package/dist/field/features/relationship/feature.server.js +8 -18
  169. package/dist/field/features/relationship/nodes/RelationshipNode.d.ts.map +1 -1
  170. package/dist/field/features/relationship/nodes/RelationshipNode.js +8 -71
  171. package/dist/field/features/relationship/nodes/components/RelationshipComponent.js +35 -86
  172. package/dist/field/features/relationship/plugins/index.js +22 -80
  173. package/dist/field/features/relationship/populationPromise.js +4 -14
  174. package/dist/field/features/relationship/utils/EnabledRelationshipsCondition.js +8 -59
  175. package/dist/field/features/types.js +2 -5
  176. package/dist/field/features/upload/component/ExtraFieldsDrawer/index.js +36 -84
  177. package/dist/field/features/upload/component/index.js +47 -98
  178. package/dist/field/features/upload/drawer/commands.js +3 -13
  179. package/dist/field/features/upload/drawer/index.js +23 -74
  180. package/dist/field/features/upload/feature.client.js +13 -23
  181. package/dist/field/features/upload/feature.server.js +11 -21
  182. package/dist/field/features/upload/nodes/UploadNode.d.ts.map +1 -1
  183. package/dist/field/features/upload/nodes/UploadNode.js +11 -73
  184. package/dist/field/features/upload/plugin/index.js +22 -81
  185. package/dist/field/features/upload/populationPromise.js +6 -16
  186. package/dist/field/features/upload/validate.js +9 -19
  187. package/dist/field/index.d.ts.map +1 -1
  188. package/dist/field/index.js +23 -75
  189. package/dist/field/lexical/EditorPlugin.js +5 -56
  190. package/dist/field/lexical/LexicalEditor.js +39 -94
  191. package/dist/field/lexical/LexicalProvider.js +15 -66
  192. package/dist/field/lexical/config/client/EditorConfigProvider.js +11 -69
  193. package/dist/field/lexical/config/client/default.js +4 -14
  194. package/dist/field/lexical/config/client/loader.js +5 -12
  195. package/dist/field/lexical/config/client/sanitize.js +3 -21
  196. package/dist/field/lexical/config/server/default.js +44 -68
  197. package/dist/field/lexical/config/server/loader.js +3 -21
  198. package/dist/field/lexical/config/server/sanitize.js +5 -23
  199. package/dist/field/lexical/config/types.js +2 -5
  200. package/dist/field/lexical/nodes/index.js +2 -12
  201. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarButton/index.js +19 -70
  202. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/DropDown.js +40 -98
  203. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.js +11 -34
  204. package/dist/field/lexical/plugins/FloatingSelectToolbar/index.js +55 -105
  205. package/dist/field/lexical/plugins/FloatingSelectToolbar/types.js +2 -5
  206. package/dist/field/lexical/plugins/MarkdownShortcut/index.js +7 -58
  207. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +39 -64
  208. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js +32 -97
  209. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js +3 -21
  210. package/dist/field/lexical/plugins/SlashMenu/index.js +27 -77
  211. package/dist/field/lexical/plugins/SlashMenu/useMenuTriggerMatch.js +8 -16
  212. package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.js +35 -84
  213. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/debounce.js +2 -12
  214. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js +2 -12
  215. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.js +18 -28
  216. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.js +4 -14
  217. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.js +52 -102
  218. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js +8 -18
  219. package/dist/field/lexical/plugins/handles/utils/getCollapsedMargins.js +2 -12
  220. package/dist/field/lexical/plugins/handles/utils/getTopLevelNodeKeys.js +4 -14
  221. package/dist/field/lexical/plugins/handles/utils/isOnHandleElement.js +2 -12
  222. package/dist/field/lexical/plugins/handles/utils/setHandlePosition.js +2 -12
  223. package/dist/field/lexical/theme/EditorTheme.js +3 -13
  224. package/dist/field/lexical/ui/ContentEditable.js +6 -57
  225. package/dist/field/lexical/ui/icons/AI/index.js +7 -22
  226. package/dist/field/lexical/ui/icons/AlignCenter/index.js +6 -21
  227. package/dist/field/lexical/ui/icons/AlignJustify/index.js +6 -21
  228. package/dist/field/lexical/ui/icons/AlignLeft/index.js +6 -21
  229. package/dist/field/lexical/ui/icons/AlignRight/index.js +6 -21
  230. package/dist/field/lexical/ui/icons/Block/index.js +6 -21
  231. package/dist/field/lexical/ui/icons/Blockquote/index.js +4 -19
  232. package/dist/field/lexical/ui/icons/Bold/index.js +4 -19
  233. package/dist/field/lexical/ui/icons/Checklist/index.js +5 -20
  234. package/dist/field/lexical/ui/icons/Code/index.js +5 -20
  235. package/dist/field/lexical/ui/icons/CodeBlock/index.js +5 -20
  236. package/dist/field/lexical/ui/icons/H1/index.js +4 -19
  237. package/dist/field/lexical/ui/icons/H2/index.js +4 -19
  238. package/dist/field/lexical/ui/icons/H3/index.js +4 -19
  239. package/dist/field/lexical/ui/icons/H4/index.js +4 -19
  240. package/dist/field/lexical/ui/icons/H5/index.js +4 -19
  241. package/dist/field/lexical/ui/icons/H6/index.js +4 -19
  242. package/dist/field/lexical/ui/icons/IndentDecrease/index.js +7 -22
  243. package/dist/field/lexical/ui/icons/IndentIncrease/index.js +7 -22
  244. package/dist/field/lexical/ui/icons/Italic/index.js +4 -19
  245. package/dist/field/lexical/ui/icons/Link/index.js +7 -22
  246. package/dist/field/lexical/ui/icons/OrderedList/index.js +8 -23
  247. package/dist/field/lexical/ui/icons/Relationship/index.js +7 -22
  248. package/dist/field/lexical/ui/icons/Strikethrough/index.js +5 -20
  249. package/dist/field/lexical/ui/icons/Subscript/index.js +4 -19
  250. package/dist/field/lexical/ui/icons/Superscript/index.js +4 -19
  251. package/dist/field/lexical/ui/icons/Text/index.js +4 -19
  252. package/dist/field/lexical/ui/icons/Underline/index.js +5 -20
  253. package/dist/field/lexical/ui/icons/UnorderedList/index.js +9 -24
  254. package/dist/field/lexical/ui/icons/Upload/index.js +6 -21
  255. package/dist/field/lexical/utils/canUseDOM.js +2 -12
  256. package/dist/field/lexical/utils/cloneDeep.js +2 -12
  257. package/dist/field/lexical/utils/environment.js +13 -51
  258. package/dist/field/lexical/utils/getDOMRangeRect.js +2 -12
  259. package/dist/field/lexical/utils/getSelectedNode.js +5 -15
  260. package/dist/field/lexical/utils/guard.js +2 -12
  261. package/dist/field/lexical/utils/invariant.js +2 -12
  262. package/dist/field/lexical/utils/joinClasses.js +2 -12
  263. package/dist/field/lexical/utils/markdown/createBlockNode.js +2 -12
  264. package/dist/field/lexical/utils/nodeFormat.js +17 -61
  265. package/dist/field/lexical/utils/point.js +3 -21
  266. package/dist/field/lexical/utils/rect.js +4 -14
  267. package/dist/field/lexical/utils/setFloatingElemPosition.js +5 -12
  268. package/dist/field/lexical/utils/setFloatingElemPositionForLinkEditor.js +2 -12
  269. package/dist/field/lexical/utils/swipe.js +5 -29
  270. package/dist/field/lexical/utils/url.js +3 -21
  271. package/dist/generateComponentMap.js +10 -25
  272. package/dist/generateSchemaMap.js +4 -14
  273. package/dist/index.d.ts.map +1 -1
  274. package/dist/index.js +102 -490
  275. package/dist/populate/defaultValue.js +3 -21
  276. package/dist/populate/populate.js +2 -12
  277. package/dist/populate/recurseNestedFields.js +4 -14
  278. package/dist/populate/richTextRelationshipPromise.js +3 -21
  279. package/dist/types.js +2 -5
  280. package/dist/useLexicalFeature.js +6 -16
  281. package/dist/validate/index.js +6 -16
  282. package/dist/validate/validateNodes.js +2 -12
  283. package/package.json +9 -8
@@ -1,68 +1,19 @@
1
1
  'use client';
2
- "use strict";
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "AddBlockHandlePlugin", {
7
- enumerable: true,
8
- get: function() {
9
- return AddBlockHandlePlugin;
10
- }
11
- });
12
- const _LexicalComposerContext = require("@lexical/react/LexicalComposerContext");
13
- const _lexical = require("lexical");
14
- const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
15
- const _reactdom = require("react-dom");
16
- const _guard = require("../../../utils/guard");
17
- const _point = require("../../../utils/point");
18
- const _rect = require("../../../utils/rect");
19
- const _LexicalTypeaheadMenuPlugin = require("../../SlashMenu/LexicalTypeaheadMenuPlugin");
20
- const _getCollapsedMargins = require("../utils/getCollapsedMargins");
21
- const _getTopLevelNodeKeys = require("../utils/getTopLevelNodeKeys");
22
- const _isOnHandleElement = require("../utils/isOnHandleElement");
23
- const _setHandlePosition = require("../utils/setHandlePosition");
24
- require("./index.scss");
25
- function _getRequireWildcardCache(nodeInterop) {
26
- if (typeof WeakMap !== "function") return null;
27
- var cacheBabelInterop = new WeakMap();
28
- var cacheNodeInterop = new WeakMap();
29
- return (_getRequireWildcardCache = function(nodeInterop) {
30
- return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
31
- })(nodeInterop);
32
- }
33
- function _interop_require_wildcard(obj, nodeInterop) {
34
- if (!nodeInterop && obj && obj.__esModule) {
35
- return obj;
36
- }
37
- if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
38
- return {
39
- default: obj
40
- };
41
- }
42
- var cache = _getRequireWildcardCache(nodeInterop);
43
- if (cache && cache.has(obj)) {
44
- return cache.get(obj);
45
- }
46
- var newObj = {
47
- __proto__: null
48
- };
49
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
50
- for(var key in obj){
51
- if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
52
- var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
53
- if (desc && (desc.get || desc.set)) {
54
- Object.defineProperty(newObj, key, desc);
55
- } else {
56
- newObj[key] = obj[key];
57
- }
58
- }
59
- }
60
- newObj.default = obj;
61
- if (cache) {
62
- cache.set(obj, newObj);
63
- }
64
- return newObj;
65
- }
2
+ import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
3
+ import { $createParagraphNode } from 'lexical';
4
+ import { $getNodeByKey } from 'lexical';
5
+ import * as React from 'react';
6
+ import { useCallback, useEffect, useRef, useState } from 'react';
7
+ import { createPortal } from 'react-dom';
8
+ import { isHTMLElement } from '../../../utils/guard';
9
+ import { Point } from '../../../utils/point';
10
+ import { Rect } from '../../../utils/rect';
11
+ import { ENABLE_SLASH_MENU_COMMAND } from '../../SlashMenu/LexicalTypeaheadMenuPlugin';
12
+ import { getCollapsedMargins } from '../utils/getCollapsedMargins';
13
+ import { getTopLevelNodeKeys } from '../utils/getTopLevelNodeKeys';
14
+ import { isOnHandleElement } from '../utils/isOnHandleElement';
15
+ import { setHandlePosition } from '../utils/setHandlePosition';
16
+ import './index.scss';
66
17
  const SPACE = -24;
67
18
  const ADD_BLOCK_MENU_CLASSNAME = 'add-block-menu';
68
19
  const Downward = 1;
@@ -80,7 +31,7 @@ function getCurrentIndex(keysLength) {
80
31
  }
81
32
  function getBlockElement(anchorElem, editor, event, useEdgeAsDefault = false, horizontalOffset = 0) {
82
33
  const anchorElementRect = anchorElem.getBoundingClientRect();
83
- const topLevelNodeKeys = (0, _getTopLevelNodeKeys.getTopLevelNodeKeys)(editor);
34
+ const topLevelNodeKeys = getTopLevelNodeKeys(editor);
84
35
  let blockElem = null;
85
36
  let blockNode = null;
86
37
  // Return null if matching block element is the first or last node
@@ -116,9 +67,9 @@ function getBlockElement(anchorElem, editor, event, useEdgeAsDefault = false, ho
116
67
  if (elem === null) {
117
68
  break;
118
69
  }
119
- const point = new _point.Point(event.x + horizontalOffset, event.y);
120
- const domRect = _rect.Rect.fromDOM(elem);
121
- const { marginBottom, marginTop } = (0, _getCollapsedMargins.getCollapsedMargins)(elem);
70
+ const point = new Point(event.x + horizontalOffset, event.y);
71
+ const domRect = Rect.fromDOM(elem);
72
+ const { marginBottom, marginTop } = getCollapsedMargins(elem);
122
73
  const rect = domRect.generateNewRect({
123
74
  bottom: domRect.bottom + marginBottom,
124
75
  left: anchorElementRect.left,
@@ -128,7 +79,7 @@ function getBlockElement(anchorElem, editor, event, useEdgeAsDefault = false, ho
128
79
  const { reason: { isOnBottomSide, isOnTopSide }, result } = rect.contains(point);
129
80
  if (result) {
130
81
  blockElem = elem;
131
- blockNode = (0, _lexical.$getNodeByKey)(key);
82
+ blockNode = $getNodeByKey(key);
132
83
  prevIndex = index;
133
84
  break;
134
85
  }
@@ -152,12 +103,12 @@ function getBlockElement(anchorElem, editor, event, useEdgeAsDefault = false, ho
152
103
  }
153
104
  function useAddBlockHandle(editor, anchorElem, isEditable) {
154
105
  const scrollerElem = anchorElem.parentElement;
155
- const menuRef = (0, _react.useRef)(null);
156
- const [hoveredElement, setHoveredElement] = (0, _react.useState)(null);
157
- (0, _react.useEffect)(()=>{
106
+ const menuRef = useRef(null);
107
+ const [hoveredElement, setHoveredElement] = useState(null);
108
+ useEffect(()=>{
158
109
  function onDocumentMouseMove(event) {
159
110
  const target = event.target;
160
- if (!(0, _guard.isHTMLElement)(target)) {
111
+ if (!isHTMLElement(target)) {
161
112
  return;
162
113
  }
163
114
  let distanceFromScrollerElem = 0;
@@ -179,7 +130,7 @@ function useAddBlockHandle(editor, anchorElem, isEditable) {
179
130
  distanceFromScrollerElem = pageX < left ? pageX - left : pageX - right;
180
131
  }
181
132
  }
182
- if ((0, _isOnHandleElement.isOnHandleElement)(target, ADD_BLOCK_MENU_CLASSNAME)) {
133
+ if (isOnHandleElement(target, ADD_BLOCK_MENU_CLASSNAME)) {
183
134
  return;
184
135
  }
185
136
  const { blockElem: _emptyBlockElem, blockNode } = getBlockElement(anchorElem, editor, event, false, -distanceFromScrollerElem);
@@ -203,7 +154,7 @@ function useAddBlockHandle(editor, anchorElem, isEditable) {
203
154
  anchorElem,
204
155
  editor
205
156
  ]);
206
- (0, _react.useEffect)(()=>{
157
+ useEffect(()=>{
207
158
  if (menuRef.current && hoveredElement?.node) {
208
159
  editor.getEditorState().read(()=>{
209
160
  // Check if blockNode is an empty text node
@@ -211,7 +162,7 @@ function useAddBlockHandle(editor, anchorElem, isEditable) {
211
162
  if (hoveredElement.node.getType() !== 'paragraph' || hoveredElement.node.getTextContent() !== '') {
212
163
  isEmptyParagraph = false;
213
164
  }
214
- (0, _setHandlePosition.setHandlePosition)(hoveredElement?.elem, menuRef.current, anchorElem, isEmptyParagraph ? SPACE : SPACE - 20);
165
+ setHandlePosition(hoveredElement?.elem, menuRef.current, anchorElem, isEmptyParagraph ? SPACE : SPACE - 20);
215
166
  });
216
167
  }
217
168
  }, [
@@ -219,7 +170,7 @@ function useAddBlockHandle(editor, anchorElem, isEditable) {
219
170
  hoveredElement,
220
171
  editor
221
172
  ]);
222
- const handleAddClick = (0, _react.useCallback)((event)=>{
173
+ const handleAddClick = useCallback((event)=>{
223
174
  let hoveredElementToUse = hoveredElement;
224
175
  if (!hoveredElementToUse?.node) {
225
176
  return;
@@ -232,7 +183,7 @@ function useAddBlockHandle(editor, anchorElem, isEditable) {
232
183
  isEmptyParagraph = false;
233
184
  }
234
185
  if (!isEmptyParagraph) {
235
- const newParagraph = (0, _lexical.$createParagraphNode)();
186
+ const newParagraph = $createParagraphNode();
236
187
  hoveredElementToUse.node.insertAfter(newParagraph);
237
188
  setTimeout(()=>{
238
189
  hoveredElementToUse = {
@@ -255,7 +206,7 @@ function useAddBlockHandle(editor, anchorElem, isEditable) {
255
206
  // Make sure this is called AFTER the focusing has been processed by the browser
256
207
  // Otherwise, this won't work
257
208
  setTimeout(()=>{
258
- editor.dispatchCommand(_LexicalTypeaheadMenuPlugin.ENABLE_SLASH_MENU_COMMAND, {
209
+ editor.dispatchCommand(ENABLE_SLASH_MENU_COMMAND, {
259
210
  node: hoveredElementToUse.node
260
211
  });
261
212
  }, 2);
@@ -265,20 +216,20 @@ function useAddBlockHandle(editor, anchorElem, isEditable) {
265
216
  editor,
266
217
  hoveredElement
267
218
  ]);
268
- return /*#__PURE__*/ (0, _reactdom.createPortal)(/*#__PURE__*/ _react.createElement(_react.Fragment, null, /*#__PURE__*/ _react.createElement("button", {
219
+ return /*#__PURE__*/ createPortal(/*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement("button", {
269
220
  className: "icon add-block-menu",
270
221
  onClick: (event)=>{
271
222
  handleAddClick(event);
272
223
  },
273
224
  ref: menuRef,
274
225
  type: "button"
275
- }, /*#__PURE__*/ _react.createElement("div", {
226
+ }, /*#__PURE__*/ React.createElement("div", {
276
227
  className: isEditable ? 'icon' : ''
277
228
  }))), anchorElem);
278
229
  }
279
- function AddBlockHandlePlugin({ anchorElem = document.body }) {
280
- const [editor] = (0, _LexicalComposerContext.useLexicalComposerContext)();
230
+ export function AddBlockHandlePlugin({ anchorElem = document.body }) {
231
+ const [editor] = useLexicalComposerContext();
281
232
  return useAddBlockHandle(editor, anchorElem, editor._editable);
282
233
  }
283
234
 
284
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9BZGRCbG9ja0hhbmRsZVBsdWdpbi9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5pbXBvcnQgdHlwZSB7IFBhcmFncmFwaE5vZGUgfSBmcm9tICdsZXhpY2FsJ1xuXG5pbXBvcnQgeyB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IH0gZnJvbSAnQGxleGljYWwvcmVhY3QvTGV4aWNhbENvbXBvc2VyQ29udGV4dCdcbmltcG9ydCB7ICRjcmVhdGVQYXJhZ3JhcGhOb2RlIH0gZnJvbSAnbGV4aWNhbCdcbmltcG9ydCB7ICRnZXROb2RlQnlLZXksIHR5cGUgTGV4aWNhbEVkaXRvciwgdHlwZSBMZXhpY2FsTm9kZSB9IGZyb20gJ2xleGljYWwnXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSdcblxuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2d1YXJkJ1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9wb2ludCdcbmltcG9ydCB7IFJlY3QgfSBmcm9tICcuLi8uLi8uLi91dGlscy9yZWN0J1xuaW1wb3J0IHsgRU5BQkxFX1NMQVNIX01FTlVfQ09NTUFORCB9IGZyb20gJy4uLy4uL1NsYXNoTWVudS9MZXhpY2FsVHlwZWFoZWFkTWVudVBsdWdpbidcbmltcG9ydCB7IGdldENvbGxhcHNlZE1hcmdpbnMgfSBmcm9tICcuLi91dGlscy9nZXRDb2xsYXBzZWRNYXJnaW5zJ1xuaW1wb3J0IHsgZ2V0VG9wTGV2ZWxOb2RlS2V5cyB9IGZyb20gJy4uL3V0aWxzL2dldFRvcExldmVsTm9kZUtleXMnXG5pbXBvcnQgeyBpc09uSGFuZGxlRWxlbWVudCB9IGZyb20gJy4uL3V0aWxzL2lzT25IYW5kbGVFbGVtZW50J1xuaW1wb3J0IHsgc2V0SGFuZGxlUG9zaXRpb24gfSBmcm9tICcuLi91dGlscy9zZXRIYW5kbGVQb3NpdGlvbidcbmltcG9ydCAnLi9pbmRleC5zY3NzJ1xuXG5jb25zdCBTUEFDRSA9IC0yNFxuY29uc3QgQUREX0JMT0NLX01FTlVfQ0xBU1NOQU1FID0gJ2FkZC1ibG9jay1tZW51J1xuXG5jb25zdCBEb3dud2FyZCA9IDFcbmNvbnN0IFVwd2FyZCA9IC0xXG5jb25zdCBJbmRldGVybWluYXRlID0gMFxuXG5sZXQgcHJldkluZGV4ID0gSW5maW5pdHlcblxuZnVuY3Rpb24gZ2V0Q3VycmVudEluZGV4KGtleXNMZW5ndGg6IG51bWJlcik6IG51bWJlciB7XG4gIGlmIChrZXlzTGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIEluZmluaXR5XG4gIH1cbiAgaWYgKHByZXZJbmRleCA+PSAwICYmIHByZXZJbmRleCA8IGtleXNMZW5ndGgpIHtcbiAgICByZXR1cm4gcHJldkluZGV4XG4gIH1cblxuICByZXR1cm4gTWF0aC5mbG9vcihrZXlzTGVuZ3RoIC8gMilcbn1cblxuZnVuY3Rpb24gZ2V0QmxvY2tFbGVtZW50KFxuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudCxcbiAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yLFxuICBldmVudDogTW91c2VFdmVudCxcbiAgdXNlRWRnZUFzRGVmYXVsdCA9IGZhbHNlLFxuICBob3Jpem9udGFsT2Zmc2V0ID0gMCxcbik6IHtcbiAgYmxvY2tFbGVtOiBIVE1MRWxlbWVudCB8IG51bGxcbiAgYmxvY2tOb2RlOiBMZXhpY2FsTm9kZSB8IG51bGxcbn0ge1xuICBjb25zdCBhbmNob3JFbGVtZW50UmVjdCA9IGFuY2hvckVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgY29uc3QgdG9wTGV2ZWxOb2RlS2V5cyA9IGdldFRvcExldmVsTm9kZUtleXMoZWRpdG9yKVxuXG4gIGxldCBibG9ja0VsZW06IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGxcbiAgbGV0IGJsb2NrTm9kZTogTGV4aWNhbE5vZGUgfCBudWxsID0gbnVsbFxuXG4gIC8vIFJldHVybiBudWxsIGlmIG1hdGNoaW5nIGJsb2NrIGVsZW1lbnQgaXMgdGhlIGZpcnN0IG9yIGxhc3Qgbm9kZVxuICBlZGl0b3IuZ2V0RWRpdG9yU3RhdGUoKS5yZWFkKCgpID0+IHtcbiAgICBpZiAodXNlRWRnZUFzRGVmYXVsdCkge1xuICAgICAgY29uc3QgW2ZpcnN0Tm9kZSwgbGFzdE5vZGVdID0gW1xuICAgICAgICBlZGl0b3IuZ2V0RWxlbWVudEJ5S2V5KHRvcExldmVsTm9kZUtleXNbMF0pLFxuICAgICAgICBlZGl0b3IuZ2V0RWxlbWVudEJ5S2V5KHRvcExldmVsTm9kZUtleXNbdG9wTGV2ZWxOb2RlS2V5cy5sZW5ndGggLSAxXSksXG4gICAgICBdXG5cbiAgICAgIGNvbnN0IFtmaXJzdE5vZGVSZWN0LCBsYXN0Tm9kZVJlY3RdID0gW1xuICAgICAgICBmaXJzdE5vZGU/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgICAgICBsYXN0Tm9kZT8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgICBdXG5cbiAgICAgIGlmIChmaXJzdE5vZGVSZWN0ICYmIGxhc3ROb2RlUmVjdCkge1xuICAgICAgICBpZiAoZXZlbnQueSA8IGZpcnN0Tm9kZVJlY3QudG9wKSB7XG4gICAgICAgICAgYmxvY2tFbGVtID0gZmlyc3ROb2RlXG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQueSA+IGxhc3ROb2RlUmVjdC5ib3R0b20pIHtcbiAgICAgICAgICBibG9ja0VsZW0gPSBsYXN0Tm9kZVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJsb2NrRWxlbSkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBibG9ja0VsZW06IG51bGwsXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRmluZCBtYXRjaGluZyBibG9jayBlbGVtZW50XG4gICAgbGV0IGluZGV4ID0gZ2V0Q3VycmVudEluZGV4KHRvcExldmVsTm9kZUtleXMubGVuZ3RoKVxuICAgIGxldCBkaXJlY3Rpb24gPSBJbmRldGVybWluYXRlXG5cbiAgICB3aGlsZSAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRvcExldmVsTm9kZUtleXMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBrZXkgPSB0b3BMZXZlbE5vZGVLZXlzW2luZGV4XVxuICAgICAgY29uc3QgZWxlbSA9IGVkaXRvci5nZXRFbGVtZW50QnlLZXkoa2V5KVxuICAgICAgaWYgKGVsZW0gPT09IG51bGwpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBvaW50ID0gbmV3IFBvaW50KGV2ZW50LnggKyBob3Jpem9udGFsT2Zmc2V0LCBldmVudC55KVxuICAgICAgY29uc3QgZG9tUmVjdCA9IFJlY3QuZnJvbURPTShlbGVtKVxuICAgICAgY29uc3QgeyBtYXJnaW5Cb3R0b20sIG1hcmdpblRvcCB9ID0gZ2V0Q29sbGFwc2VkTWFyZ2lucyhlbGVtKVxuXG4gICAgICBjb25zdCByZWN0ID0gZG9tUmVjdC5nZW5lcmF0ZU5ld1JlY3Qoe1xuICAgICAgICBib3R0b206IGRvbVJlY3QuYm90dG9tICsgbWFyZ2luQm90dG9tLFxuICAgICAgICBsZWZ0OiBhbmNob3JFbGVtZW50UmVjdC5sZWZ0LFxuICAgICAgICByaWdodDogYW5jaG9yRWxlbWVudFJlY3QucmlnaHQsXG4gICAgICAgIHRvcDogZG9tUmVjdC50b3AgLSBtYXJnaW5Ub3AsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCB7XG4gICAgICAgIHJlYXNvbjogeyBpc09uQm90dG9tU2lkZSwgaXNPblRvcFNpZGUgfSxcbiAgICAgICAgcmVzdWx0LFxuICAgICAgfSA9IHJlY3QuY29udGFpbnMocG9pbnQpXG5cbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgYmxvY2tFbGVtID0gZWxlbVxuICAgICAgICBibG9ja05vZGUgPSAkZ2V0Tm9kZUJ5S2V5KGtleSlcbiAgICAgICAgcHJldkluZGV4ID0gaW5kZXhcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gSW5kZXRlcm1pbmF0ZSkge1xuICAgICAgICBpZiAoaXNPblRvcFNpZGUpIHtcbiAgICAgICAgICBkaXJlY3Rpb24gPSBVcHdhcmRcbiAgICAgICAgfSBlbHNlIGlmIChpc09uQm90dG9tU2lkZSkge1xuICAgICAgICAgIGRpcmVjdGlvbiA9IERvd253YXJkXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gc3RvcCBzZWFyY2ggYmxvY2sgZWxlbWVudFxuICAgICAgICAgIGRpcmVjdGlvbiA9IEluZmluaXR5XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaW5kZXggKz0gZGlyZWN0aW9uXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiB7XG4gICAgYmxvY2tFbGVtLFxuICAgIGJsb2NrTm9kZSxcbiAgfVxufVxuXG5mdW5jdGlvbiB1c2VBZGRCbG9ja0hhbmRsZShcbiAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yLFxuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudCxcbiAgaXNFZGl0YWJsZTogYm9vbGVhbixcbik6IEpTWC5FbGVtZW50IHtcbiAgY29uc3Qgc2Nyb2xsZXJFbGVtID0gYW5jaG9yRWxlbS5wYXJlbnRFbGVtZW50XG5cbiAgY29uc3QgbWVudVJlZiA9IHVzZVJlZjxIVE1MQnV0dG9uRWxlbWVudD4obnVsbClcbiAgY29uc3QgW2hvdmVyZWRFbGVtZW50LCBzZXRIb3ZlcmVkRWxlbWVudF0gPSB1c2VTdGF0ZTx7XG4gICAgZWxlbTogSFRNTEVsZW1lbnRcbiAgICBub2RlOiBMZXhpY2FsTm9kZVxuICB9IHwgbnVsbD4obnVsbClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZ1bmN0aW9uIG9uRG9jdW1lbnRNb3VzZU1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldFxuICAgICAgaWYgKCFpc0hUTUxFbGVtZW50KHRhcmdldCkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGxldCBkaXN0YW5jZUZyb21TY3JvbGxlckVsZW0gPSAwXG4gICAgICAvLyBDYWxjdWxhdGUgZGlzdGFuY2UgYmV0d2VlbiBzY3JvbGxlckVsZW0gYW5kIHRhcmdldCBpZiB0YXJnZXQgaXMgbm90IGluIHNjcm9sbGVyRWxlbVxuICAgICAgaWYgKHNjcm9sbGVyRWxlbSAmJiAhc2Nyb2xsZXJFbGVtLmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAgICAgY29uc3QgeyBib3R0b20sIGxlZnQsIHJpZ2h0LCB0b3AgfSA9IHNjcm9sbGVyRWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgICBjb25zdCB7IHBhZ2VYLCBwYWdlWSB9ID0gZXZlbnRcbiAgICAgICAgY29uc3QgaG9yaXpvbnRhbEJ1ZmZlciA9IDUwXG4gICAgICAgIGNvbnN0IHZlcnRpY2FsQnVmZmVyID0gMjVcbiAgICAgICAgY29uc3QgYWRqdXN0ZWRUb3AgPSB0b3AgKyB3aW5kb3cuc2Nyb2xsWVxuICAgICAgICBjb25zdCBhZGp1c3RlZEJvdHRvbSA9IGJvdHRvbSArIHdpbmRvdy5zY3JvbGxZXG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHBhZ2VZIDwgYWRqdXN0ZWRUb3AgLSB2ZXJ0aWNhbEJ1ZmZlciB8fFxuICAgICAgICAgIHBhZ2VZID4gYWRqdXN0ZWRCb3R0b20gKyB2ZXJ0aWNhbEJ1ZmZlciB8fFxuICAgICAgICAgIHBhZ2VYIDwgbGVmdCAtIGhvcml6b250YWxCdWZmZXIgfHxcbiAgICAgICAgICBwYWdlWCA+IHJpZ2h0ICsgaG9yaXpvbnRhbEJ1ZmZlclxuICAgICAgICApIHtcbiAgICAgICAgICBzZXRIb3ZlcmVkRWxlbWVudChudWxsKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhpcyBpcyB1c2VkIHRvIGFsbG93IHRoZSBfZW1wdHlCbG9ja0VsZW0gdG8gYmUgZm91bmQgd2hlbiB0aGUgbW91c2UgaXMgaW4gdGhlXG4gICAgICAgIC8vIGJ1ZmZlciB6b25lIGFyb3VuZCB0aGUgc2Nyb2xsZXJFbGVtLlxuICAgICAgICBpZiAocGFnZVggPCBsZWZ0IHx8IHBhZ2VYID4gcmlnaHQpIHtcbiAgICAgICAgICBkaXN0YW5jZUZyb21TY3JvbGxlckVsZW0gPSBwYWdlWCA8IGxlZnQgPyBwYWdlWCAtIGxlZnQgOiBwYWdlWCAtIHJpZ2h0XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGlzT25IYW5kbGVFbGVtZW50KHRhcmdldCwgQUREX0JMT0NLX01FTlVfQ0xBU1NOQU1FKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgYmxvY2tFbGVtOiBfZW1wdHlCbG9ja0VsZW0sIGJsb2NrTm9kZSB9ID0gZ2V0QmxvY2tFbGVtZW50KFxuICAgICAgICBhbmNob3JFbGVtLFxuICAgICAgICBlZGl0b3IsXG4gICAgICAgIGV2ZW50LFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgLWRpc3RhbmNlRnJvbVNjcm9sbGVyRWxlbSxcbiAgICAgIClcbiAgICAgIGlmICghX2VtcHR5QmxvY2tFbGVtKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgc2V0SG92ZXJlZEVsZW1lbnQoe1xuICAgICAgICBlbGVtOiBfZW1wdHlCbG9ja0VsZW0sXG4gICAgICAgIG5vZGU6IGJsb2NrTm9kZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gU2luY2UgdGhlIGRyYWdnYWJsZUJsb2NrRWxlbSBpcyBvdXRzaWRlIHRoZSBhY3R1YWwgZWRpdG9yLCB3ZSBuZWVkIHRvIGxpc3RlbiB0byB0aGUgZG9jdW1lbnRcbiAgICAvLyB0byBiZSBhYmxlIHRvIGRldGVjdCB3aGVuIHRoZSBtb3VzZSBpcyBvdXRzaWRlIHRoZSBlZGl0b3IgYW5kIHJlc3BlY3QgYSBidWZmZXIgYXJvdW5kXG4gICAgLy8gdGhlIHNjcm9sbGVyRWxlbSB0byBhdm9pZCB0aGUgZHJhZ2dhYmxlQmxvY2tFbGVtIGRpc2FwcGVhcmluZyB0b28gZWFybHkuXG4gICAgZG9jdW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uRG9jdW1lbnRNb3VzZU1vdmUpXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQ/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uRG9jdW1lbnRNb3VzZU1vdmUpXG4gICAgfVxuICB9LCBbc2Nyb2xsZXJFbGVtLCBhbmNob3JFbGVtLCBlZGl0b3JdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG1lbnVSZWYuY3VycmVudCAmJiBob3ZlcmVkRWxlbWVudD8ubm9kZSkge1xuICAgICAgZWRpdG9yLmdldEVkaXRvclN0YXRlKCkucmVhZCgoKSA9PiB7XG4gICAgICAgIC8vIENoZWNrIGlmIGJsb2NrTm9kZSBpcyBhbiBlbXB0eSB0ZXh0IG5vZGVcbiAgICAgICAgbGV0IGlzRW1wdHlQYXJhZ3JhcGggPSB0cnVlXG4gICAgICAgIGlmIChcbiAgICAgICAgICBob3ZlcmVkRWxlbWVudC5ub2RlLmdldFR5cGUoKSAhPT0gJ3BhcmFncmFwaCcgfHxcbiAgICAgICAgICBob3ZlcmVkRWxlbWVudC5ub2RlLmdldFRleHRDb250ZW50KCkgIT09ICcnXG4gICAgICAgICkge1xuICAgICAgICAgIGlzRW1wdHlQYXJhZ3JhcGggPSBmYWxzZVxuICAgICAgICB9XG5cbiAgICAgICAgc2V0SGFuZGxlUG9zaXRpb24oXG4gICAgICAgICAgaG92ZXJlZEVsZW1lbnQ/LmVsZW0sXG4gICAgICAgICAgbWVudVJlZi5jdXJyZW50LFxuICAgICAgICAgIGFuY2hvckVsZW0sXG4gICAgICAgICAgaXNFbXB0eVBhcmFncmFwaCA/IFNQQUNFIDogU1BBQ0UgLSAyMCxcbiAgICAgICAgKVxuICAgICAgfSlcbiAgICB9XG4gIH0sIFthbmNob3JFbGVtLCBob3ZlcmVkRWxlbWVudCwgZWRpdG9yXSlcblxuICBjb25zdCBoYW5kbGVBZGRDbGljayA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudCkgPT4ge1xuICAgICAgbGV0IGhvdmVyZWRFbGVtZW50VG9Vc2UgPSBob3ZlcmVkRWxlbWVudFxuICAgICAgaWYgKCFob3ZlcmVkRWxlbWVudFRvVXNlPy5ub2RlKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyAxLiBVcGRhdGUgaG92ZXJlZEVsZW1lbnQubm9kZSB0byBhIG5ldyBwYXJhZ3JhcGggbm9kZSBpZiB0aGUgaG92ZXJlZEVsZW1lbnQubm9kZSBpcyBub3QgYSBwYXJhZ3JhcGggbm9kZVxuICAgICAgZWRpdG9yLnVwZGF0ZSgoKSA9PiB7XG4gICAgICAgIC8vIENoZWNrIGlmIGJsb2NrTm9kZSBpcyBhbiBlbXB0eSB0ZXh0IG5vZGVcbiAgICAgICAgbGV0IGlzRW1wdHlQYXJhZ3JhcGggPSB0cnVlXG4gICAgICAgIGlmIChcbiAgICAgICAgICBob3ZlcmVkRWxlbWVudFRvVXNlLm5vZGUuZ2V0VHlwZSgpICE9PSAncGFyYWdyYXBoJyB8fFxuICAgICAgICAgIGhvdmVyZWRFbGVtZW50VG9Vc2Uubm9kZS5nZXRUZXh0Q29udGVudCgpICE9PSAnJ1xuICAgICAgICApIHtcbiAgICAgICAgICBpc0VtcHR5UGFyYWdyYXBoID0gZmFsc2VcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNFbXB0eVBhcmFncmFwaCkge1xuICAgICAgICAgIGNvbnN0IG5ld1BhcmFncmFwaCA9ICRjcmVhdGVQYXJhZ3JhcGhOb2RlKClcbiAgICAgICAgICBob3ZlcmVkRWxlbWVudFRvVXNlLm5vZGUuaW5zZXJ0QWZ0ZXIobmV3UGFyYWdyYXBoKVxuXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBob3ZlcmVkRWxlbWVudFRvVXNlID0ge1xuICAgICAgICAgICAgICBlbGVtOiBlZGl0b3IuZ2V0RWxlbWVudEJ5S2V5KG5ld1BhcmFncmFwaC5nZXRLZXkoKSksXG4gICAgICAgICAgICAgIG5vZGU6IG5ld1BhcmFncmFwaCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldEhvdmVyZWRFbGVtZW50KGhvdmVyZWRFbGVtZW50VG9Vc2UpXG4gICAgICAgICAgfSwgMClcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgLy8gMi4gRm9jdXMgb24gdGhlIG5ldyBwYXJhZ3JhcGggbm9kZVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGVkaXRvci51cGRhdGUoKCkgPT4ge1xuICAgICAgICAgIGVkaXRvci5mb2N1cygpXG5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBob3ZlcmVkRWxlbWVudFRvVXNlLm5vZGUgJiZcbiAgICAgICAgICAgICdzZWxlY3QnIGluIGhvdmVyZWRFbGVtZW50VG9Vc2Uubm9kZSAmJlxuICAgICAgICAgICAgdHlwZW9mIGhvdmVyZWRFbGVtZW50VG9Vc2Uubm9kZS5zZWxlY3QgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGhvdmVyZWRFbGVtZW50VG9Vc2Uubm9kZS5zZWxlY3QoKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0sIDEpXG5cbiAgICAgIC8vIE1ha2Ugc3VyZSB0aGlzIGlzIGNhbGxlZCBBRlRFUiB0aGUgZm9jdXNpbmcgaGFzIGJlZW4gcHJvY2Vzc2VkIGJ5IHRoZSBicm93c2VyXG4gICAgICAvLyBPdGhlcndpc2UsIHRoaXMgd29uJ3Qgd29ya1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGVkaXRvci5kaXNwYXRjaENvbW1hbmQoRU5BQkxFX1NMQVNIX01FTlVfQ09NTUFORCwge1xuICAgICAgICAgIG5vZGU6IGhvdmVyZWRFbGVtZW50VG9Vc2Uubm9kZSBhcyBQYXJhZ3JhcGhOb2RlLFxuICAgICAgICB9KVxuICAgICAgfSwgMilcblxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICB9LFxuICAgIFtlZGl0b3IsIGhvdmVyZWRFbGVtZW50XSxcbiAgKVxuXG4gIHJldHVybiBjcmVhdGVQb3J0YWwoXG4gICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9XCJpY29uIGFkZC1ibG9jay1tZW51XCJcbiAgICAgICAgb25DbGljaz17KGV2ZW50KSA9PiB7XG4gICAgICAgICAgaGFuZGxlQWRkQ2xpY2soZXZlbnQpXG4gICAgICAgIH19XG4gICAgICAgIHJlZj17bWVudVJlZn1cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtpc0VkaXRhYmxlID8gJ2ljb24nIDogJyd9IC8+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L1JlYWN0LkZyYWdtZW50PixcbiAgICBhbmNob3JFbGVtLFxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBBZGRCbG9ja0hhbmRsZVBsdWdpbih7XG4gIGFuY2hvckVsZW0gPSBkb2N1bWVudC5ib2R5LFxufToge1xuICBhbmNob3JFbGVtPzogSFRNTEVsZW1lbnRcbn0pOiBKU1guRWxlbWVudCB7XG4gIGNvbnN0IFtlZGl0b3JdID0gdXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCgpXG4gIHJldHVybiB1c2VBZGRCbG9ja0hhbmRsZShlZGl0b3IsIGFuY2hvckVsZW0sIGVkaXRvci5fZWRpdGFibGUpXG59XG4iXSwibmFtZXMiOlsiQWRkQmxvY2tIYW5kbGVQbHVnaW4iLCJTUEFDRSIsIkFERF9CTE9DS19NRU5VX0NMQVNTTkFNRSIsIkRvd253YXJkIiwiVXB3YXJkIiwiSW5kZXRlcm1pbmF0ZSIsInByZXZJbmRleCIsIkluZmluaXR5IiwiZ2V0Q3VycmVudEluZGV4Iiwia2V5c0xlbmd0aCIsIk1hdGgiLCJmbG9vciIsImdldEJsb2NrRWxlbWVudCIsImFuY2hvckVsZW0iLCJlZGl0b3IiLCJldmVudCIsInVzZUVkZ2VBc0RlZmF1bHQiLCJob3Jpem9udGFsT2Zmc2V0IiwiYW5jaG9yRWxlbWVudFJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ0b3BMZXZlbE5vZGVLZXlzIiwiZ2V0VG9wTGV2ZWxOb2RlS2V5cyIsImJsb2NrRWxlbSIsImJsb2NrTm9kZSIsImdldEVkaXRvclN0YXRlIiwicmVhZCIsImZpcnN0Tm9kZSIsImxhc3ROb2RlIiwiZ2V0RWxlbWVudEJ5S2V5IiwibGVuZ3RoIiwiZmlyc3ROb2RlUmVjdCIsImxhc3ROb2RlUmVjdCIsInkiLCJ0b3AiLCJib3R0b20iLCJpbmRleCIsImRpcmVjdGlvbiIsImtleSIsImVsZW0iLCJwb2ludCIsIlBvaW50IiwieCIsImRvbVJlY3QiLCJSZWN0IiwiZnJvbURPTSIsIm1hcmdpbkJvdHRvbSIsIm1hcmdpblRvcCIsImdldENvbGxhcHNlZE1hcmdpbnMiLCJyZWN0IiwiZ2VuZXJhdGVOZXdSZWN0IiwibGVmdCIsInJpZ2h0IiwicmVhc29uIiwiaXNPbkJvdHRvbVNpZGUiLCJpc09uVG9wU2lkZSIsInJlc3VsdCIsImNvbnRhaW5zIiwiJGdldE5vZGVCeUtleSIsInVzZUFkZEJsb2NrSGFuZGxlIiwiaXNFZGl0YWJsZSIsInNjcm9sbGVyRWxlbSIsInBhcmVudEVsZW1lbnQiLCJtZW51UmVmIiwidXNlUmVmIiwiaG92ZXJlZEVsZW1lbnQiLCJzZXRIb3ZlcmVkRWxlbWVudCIsInVzZVN0YXRlIiwidXNlRWZmZWN0Iiwib25Eb2N1bWVudE1vdXNlTW92ZSIsInRhcmdldCIsImlzSFRNTEVsZW1lbnQiLCJkaXN0YW5jZUZyb21TY3JvbGxlckVsZW0iLCJwYWdlWCIsInBhZ2VZIiwiaG9yaXpvbnRhbEJ1ZmZlciIsInZlcnRpY2FsQnVmZmVyIiwiYWRqdXN0ZWRUb3AiLCJ3aW5kb3ciLCJzY3JvbGxZIiwiYWRqdXN0ZWRCb3R0b20iLCJpc09uSGFuZGxlRWxlbWVudCIsIl9lbXB0eUJsb2NrRWxlbSIsIm5vZGUiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiY3VycmVudCIsImlzRW1wdHlQYXJhZ3JhcGgiLCJnZXRUeXBlIiwiZ2V0VGV4dENvbnRlbnQiLCJzZXRIYW5kbGVQb3NpdGlvbiIsImhhbmRsZUFkZENsaWNrIiwidXNlQ2FsbGJhY2siLCJob3ZlcmVkRWxlbWVudFRvVXNlIiwidXBkYXRlIiwibmV3UGFyYWdyYXBoIiwiJGNyZWF0ZVBhcmFncmFwaE5vZGUiLCJpbnNlcnRBZnRlciIsInNldFRpbWVvdXQiLCJnZXRLZXkiLCJmb2N1cyIsInNlbGVjdCIsImRpc3BhdGNoQ29tbWFuZCIsIkVOQUJMRV9TTEFTSF9NRU5VX0NPTU1BTkQiLCJzdG9wUHJvcGFnYXRpb24iLCJwcmV2ZW50RGVmYXVsdCIsImNyZWF0ZVBvcnRhbCIsIlJlYWN0IiwiRnJhZ21lbnQiLCJidXR0b24iLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwicmVmIiwidHlwZSIsImRpdiIsImJvZHkiLCJ1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IiwiX2VkaXRhYmxlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7K0JBMFRnQkE7OztlQUFBQTs7O3dDQXZUMEI7eUJBQ0w7K0RBRWQ7MEJBRU07dUJBRUM7dUJBQ1I7c0JBQ0Q7NENBQ3FCO3FDQUNOO3FDQUNBO21DQUNGO21DQUNBO1FBQzNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFUCxNQUFNQyxRQUFRLENBQUM7QUFDZixNQUFNQywyQkFBMkI7QUFFakMsTUFBTUMsV0FBVztBQUNqQixNQUFNQyxTQUFTLENBQUM7QUFDaEIsTUFBTUMsZ0JBQWdCO0FBRXRCLElBQUlDLFlBQVlDO0FBRWhCLFNBQVNDLGdCQUFnQkMsVUFBa0I7SUFDekMsSUFBSUEsZUFBZSxHQUFHO1FBQ3BCLE9BQU9GO0lBQ1Q7SUFDQSxJQUFJRCxhQUFhLEtBQUtBLFlBQVlHLFlBQVk7UUFDNUMsT0FBT0g7SUFDVDtJQUVBLE9B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
235
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9BZGRCbG9ja0hhbmRsZVBsdWdpbi9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5pbXBvcnQgdHlwZSB7IFBhcmFncmFwaE5vZGUgfSBmcm9tICdsZXhpY2FsJ1xuXG5pbXBvcnQgeyB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IH0gZnJvbSAnQGxleGljYWwvcmVhY3QvTGV4aWNhbENvbXBvc2VyQ29udGV4dCdcbmltcG9ydCB7ICRjcmVhdGVQYXJhZ3JhcGhOb2RlIH0gZnJvbSAnbGV4aWNhbCdcbmltcG9ydCB7ICRnZXROb2RlQnlLZXksIHR5cGUgTGV4aWNhbEVkaXRvciwgdHlwZSBMZXhpY2FsTm9kZSB9IGZyb20gJ2xleGljYWwnXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSdcblxuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2d1YXJkJ1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9wb2ludCdcbmltcG9ydCB7IFJlY3QgfSBmcm9tICcuLi8uLi8uLi91dGlscy9yZWN0J1xuaW1wb3J0IHsgRU5BQkxFX1NMQVNIX01FTlVfQ09NTUFORCB9IGZyb20gJy4uLy4uL1NsYXNoTWVudS9MZXhpY2FsVHlwZWFoZWFkTWVudVBsdWdpbidcbmltcG9ydCB7IGdldENvbGxhcHNlZE1hcmdpbnMgfSBmcm9tICcuLi91dGlscy9nZXRDb2xsYXBzZWRNYXJnaW5zJ1xuaW1wb3J0IHsgZ2V0VG9wTGV2ZWxOb2RlS2V5cyB9IGZyb20gJy4uL3V0aWxzL2dldFRvcExldmVsTm9kZUtleXMnXG5pbXBvcnQgeyBpc09uSGFuZGxlRWxlbWVudCB9IGZyb20gJy4uL3V0aWxzL2lzT25IYW5kbGVFbGVtZW50J1xuaW1wb3J0IHsgc2V0SGFuZGxlUG9zaXRpb24gfSBmcm9tICcuLi91dGlscy9zZXRIYW5kbGVQb3NpdGlvbidcbmltcG9ydCAnLi9pbmRleC5zY3NzJ1xuXG5jb25zdCBTUEFDRSA9IC0yNFxuY29uc3QgQUREX0JMT0NLX01FTlVfQ0xBU1NOQU1FID0gJ2FkZC1ibG9jay1tZW51J1xuXG5jb25zdCBEb3dud2FyZCA9IDFcbmNvbnN0IFVwd2FyZCA9IC0xXG5jb25zdCBJbmRldGVybWluYXRlID0gMFxuXG5sZXQgcHJldkluZGV4ID0gSW5maW5pdHlcblxuZnVuY3Rpb24gZ2V0Q3VycmVudEluZGV4KGtleXNMZW5ndGg6IG51bWJlcik6IG51bWJlciB7XG4gIGlmIChrZXlzTGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIEluZmluaXR5XG4gIH1cbiAgaWYgKHByZXZJbmRleCA+PSAwICYmIHByZXZJbmRleCA8IGtleXNMZW5ndGgpIHtcbiAgICByZXR1cm4gcHJldkluZGV4XG4gIH1cblxuICByZXR1cm4gTWF0aC5mbG9vcihrZXlzTGVuZ3RoIC8gMilcbn1cblxuZnVuY3Rpb24gZ2V0QmxvY2tFbGVtZW50KFxuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudCxcbiAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yLFxuICBldmVudDogTW91c2VFdmVudCxcbiAgdXNlRWRnZUFzRGVmYXVsdCA9IGZhbHNlLFxuICBob3Jpem9udGFsT2Zmc2V0ID0gMCxcbik6IHtcbiAgYmxvY2tFbGVtOiBIVE1MRWxlbWVudCB8IG51bGxcbiAgYmxvY2tOb2RlOiBMZXhpY2FsTm9kZSB8IG51bGxcbn0ge1xuICBjb25zdCBhbmNob3JFbGVtZW50UmVjdCA9IGFuY2hvckVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgY29uc3QgdG9wTGV2ZWxOb2RlS2V5cyA9IGdldFRvcExldmVsTm9kZUtleXMoZWRpdG9yKVxuXG4gIGxldCBibG9ja0VsZW06IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGxcbiAgbGV0IGJsb2NrTm9kZTogTGV4aWNhbE5vZGUgfCBudWxsID0gbnVsbFxuXG4gIC8vIFJldHVybiBudWxsIGlmIG1hdGNoaW5nIGJsb2NrIGVsZW1lbnQgaXMgdGhlIGZpcnN0IG9yIGxhc3Qgbm9kZVxuICBlZGl0b3IuZ2V0RWRpdG9yU3RhdGUoKS5yZWFkKCgpID0+IHtcbiAgICBpZiAodXNlRWRnZUFzRGVmYXVsdCkge1xuICAgICAgY29uc3QgW2ZpcnN0Tm9kZSwgbGFzdE5vZGVdID0gW1xuICAgICAgICBlZGl0b3IuZ2V0RWxlbWVudEJ5S2V5KHRvcExldmVsTm9kZUtleXNbMF0pLFxuICAgICAgICBlZGl0b3IuZ2V0RWxlbWVudEJ5S2V5KHRvcExldmVsTm9kZUtleXNbdG9wTGV2ZWxOb2RlS2V5cy5sZW5ndGggLSAxXSksXG4gICAgICBdXG5cbiAgICAgIGNvbnN0IFtmaXJzdE5vZGVSZWN0LCBsYXN0Tm9kZVJlY3RdID0gW1xuICAgICAgICBmaXJzdE5vZGU/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgICAgICBsYXN0Tm9kZT8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgICBdXG5cbiAgICAgIGlmIChmaXJzdE5vZGVSZWN0ICYmIGxhc3ROb2RlUmVjdCkge1xuICAgICAgICBpZiAoZXZlbnQueSA8IGZpcnN0Tm9kZVJlY3QudG9wKSB7XG4gICAgICAgICAgYmxvY2tFbGVtID0gZmlyc3ROb2RlXG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQueSA+IGxhc3ROb2RlUmVjdC5ib3R0b20pIHtcbiAgICAgICAgICBibG9ja0VsZW0gPSBsYXN0Tm9kZVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJsb2NrRWxlbSkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBibG9ja0VsZW06IG51bGwsXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRmluZCBtYXRjaGluZyBibG9jayBlbGVtZW50XG4gICAgbGV0IGluZGV4ID0gZ2V0Q3VycmVudEluZGV4KHRvcExldmVsTm9kZUtleXMubGVuZ3RoKVxuICAgIGxldCBkaXJlY3Rpb24gPSBJbmRldGVybWluYXRlXG5cbiAgICB3aGlsZSAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRvcExldmVsTm9kZUtleXMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBrZXkgPSB0b3BMZXZlbE5vZGVLZXlzW2luZGV4XVxuICAgICAgY29uc3QgZWxlbSA9IGVkaXRvci5nZXRFbGVtZW50QnlLZXkoa2V5KVxuICAgICAgaWYgKGVsZW0gPT09IG51bGwpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBvaW50ID0gbmV3IFBvaW50KGV2ZW50LnggKyBob3Jpem9udGFsT2Zmc2V0LCBldmVudC55KVxuICAgICAgY29uc3QgZG9tUmVjdCA9IFJlY3QuZnJvbURPTShlbGVtKVxuICAgICAgY29uc3QgeyBtYXJnaW5Cb3R0b20sIG1hcmdpblRvcCB9ID0gZ2V0Q29sbGFwc2VkTWFyZ2lucyhlbGVtKVxuXG4gICAgICBjb25zdCByZWN0ID0gZG9tUmVjdC5nZW5lcmF0ZU5ld1JlY3Qoe1xuICAgICAgICBib3R0b206IGRvbVJlY3QuYm90dG9tICsgbWFyZ2luQm90dG9tLFxuICAgICAgICBsZWZ0OiBhbmNob3JFbGVtZW50UmVjdC5sZWZ0LFxuICAgICAgICByaWdodDogYW5jaG9yRWxlbWVudFJlY3QucmlnaHQsXG4gICAgICAgIHRvcDogZG9tUmVjdC50b3AgLSBtYXJnaW5Ub3AsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCB7XG4gICAgICAgIHJlYXNvbjogeyBpc09uQm90dG9tU2lkZSwgaXNPblRvcFNpZGUgfSxcbiAgICAgICAgcmVzdWx0LFxuICAgICAgfSA9IHJlY3QuY29udGFpbnMocG9pbnQpXG5cbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgYmxvY2tFbGVtID0gZWxlbVxuICAgICAgICBibG9ja05vZGUgPSAkZ2V0Tm9kZUJ5S2V5KGtleSlcbiAgICAgICAgcHJldkluZGV4ID0gaW5kZXhcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gSW5kZXRlcm1pbmF0ZSkge1xuICAgICAgICBpZiAoaXNPblRvcFNpZGUpIHtcbiAgICAgICAgICBkaXJlY3Rpb24gPSBVcHdhcmRcbiAgICAgICAgfSBlbHNlIGlmIChpc09uQm90dG9tU2lkZSkge1xuICAgICAgICAgIGRpcmVjdGlvbiA9IERvd253YXJkXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gc3RvcCBzZWFyY2ggYmxvY2sgZWxlbWVudFxuICAgICAgICAgIGRpcmVjdGlvbiA9IEluZmluaXR5XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaW5kZXggKz0gZGlyZWN0aW9uXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiB7XG4gICAgYmxvY2tFbGVtLFxuICAgIGJsb2NrTm9kZSxcbiAgfVxufVxuXG5mdW5jdGlvbiB1c2VBZGRCbG9ja0hhbmRsZShcbiAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yLFxuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudCxcbiAgaXNFZGl0YWJsZTogYm9vbGVhbixcbik6IEpTWC5FbGVtZW50IHtcbiAgY29uc3Qgc2Nyb2xsZXJFbGVtID0gYW5jaG9yRWxlbS5wYXJlbnRFbGVtZW50XG5cbiAgY29uc3QgbWVudVJlZiA9IHVzZVJlZjxIVE1MQnV0dG9uRWxlbWVudD4obnVsbClcbiAgY29uc3QgW2hvdmVyZWRFbGVtZW50LCBzZXRIb3ZlcmVkRWxlbWVudF0gPSB1c2VTdGF0ZTx7XG4gICAgZWxlbTogSFRNTEVsZW1lbnRcbiAgICBub2RlOiBMZXhpY2FsTm9kZVxuICB9IHwgbnVsbD4obnVsbClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZ1bmN0aW9uIG9uRG9jdW1lbnRNb3VzZU1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldFxuICAgICAgaWYgKCFpc0hUTUxFbGVtZW50KHRhcmdldCkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGxldCBkaXN0YW5jZUZyb21TY3JvbGxlckVsZW0gPSAwXG4gICAgICAvLyBDYWxjdWxhdGUgZGlzdGFuY2UgYmV0d2VlbiBzY3JvbGxlckVsZW0gYW5kIHRhcmdldCBpZiB0YXJnZXQgaXMgbm90IGluIHNjcm9sbGVyRWxlbVxuICAgICAgaWYgKHNjcm9sbGVyRWxlbSAmJiAhc2Nyb2xsZXJFbGVtLmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAgICAgY29uc3QgeyBib3R0b20sIGxlZnQsIHJpZ2h0LCB0b3AgfSA9IHNjcm9sbGVyRWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgICBjb25zdCB7IHBhZ2VYLCBwYWdlWSB9ID0gZXZlbnRcbiAgICAgICAgY29uc3QgaG9yaXpvbnRhbEJ1ZmZlciA9IDUwXG4gICAgICAgIGNvbnN0IHZlcnRpY2FsQnVmZmVyID0gMjVcbiAgICAgICAgY29uc3QgYWRqdXN0ZWRUb3AgPSB0b3AgKyB3aW5kb3cuc2Nyb2xsWVxuICAgICAgICBjb25zdCBhZGp1c3RlZEJvdHRvbSA9IGJvdHRvbSArIHdpbmRvdy5zY3JvbGxZXG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHBhZ2VZIDwgYWRqdXN0ZWRUb3AgLSB2ZXJ0aWNhbEJ1ZmZlciB8fFxuICAgICAgICAgIHBhZ2VZID4gYWRqdXN0ZWRCb3R0b20gKyB2ZXJ0aWNhbEJ1ZmZlciB8fFxuICAgICAgICAgIHBhZ2VYIDwgbGVmdCAtIGhvcml6b250YWxCdWZmZXIgfHxcbiAgICAgICAgICBwYWdlWCA+IHJpZ2h0ICsgaG9yaXpvbnRhbEJ1ZmZlclxuICAgICAgICApIHtcbiAgICAgICAgICBzZXRIb3ZlcmVkRWxlbWVudChudWxsKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhpcyBpcyB1c2VkIHRvIGFsbG93IHRoZSBfZW1wdHlCbG9ja0VsZW0gdG8gYmUgZm91bmQgd2hlbiB0aGUgbW91c2UgaXMgaW4gdGhlXG4gICAgICAgIC8vIGJ1ZmZlciB6b25lIGFyb3VuZCB0aGUgc2Nyb2xsZXJFbGVtLlxuICAgICAgICBpZiAocGFnZVggPCBsZWZ0IHx8IHBhZ2VYID4gcmlnaHQpIHtcbiAgICAgICAgICBkaXN0YW5jZUZyb21TY3JvbGxlckVsZW0gPSBwYWdlWCA8IGxlZnQgPyBwYWdlWCAtIGxlZnQgOiBwYWdlWCAtIHJpZ2h0XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGlzT25IYW5kbGVFbGVtZW50KHRhcmdldCwgQUREX0JMT0NLX01FTlVfQ0xBU1NOQU1FKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgYmxvY2tFbGVtOiBfZW1wdHlCbG9ja0VsZW0sIGJsb2NrTm9kZSB9ID0gZ2V0QmxvY2tFbGVtZW50KFxuICAgICAgICBhbmNob3JFbGVtLFxuICAgICAgICBlZGl0b3IsXG4gICAgICAgIGV2ZW50LFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgLWRpc3RhbmNlRnJvbVNjcm9sbGVyRWxlbSxcbiAgICAgIClcbiAgICAgIGlmICghX2VtcHR5QmxvY2tFbGVtKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgc2V0SG92ZXJlZEVsZW1lbnQoe1xuICAgICAgICBlbGVtOiBfZW1wdHlCbG9ja0VsZW0sXG4gICAgICAgIG5vZGU6IGJsb2NrTm9kZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gU2luY2UgdGhlIGRyYWdnYWJsZUJsb2NrRWxlbSBpcyBvdXRzaWRlIHRoZSBhY3R1YWwgZWRpdG9yLCB3ZSBuZWVkIHRvIGxpc3RlbiB0byB0aGUgZG9jdW1lbnRcbiAgICAvLyB0byBiZSBhYmxlIHRvIGRldGVjdCB3aGVuIHRoZSBtb3VzZSBpcyBvdXRzaWRlIHRoZSBlZGl0b3IgYW5kIHJlc3BlY3QgYSBidWZmZXIgYXJvdW5kXG4gICAgLy8gdGhlIHNjcm9sbGVyRWxlbSB0byBhdm9pZCB0aGUgZHJhZ2dhYmxlQmxvY2tFbGVtIGRpc2FwcGVhcmluZyB0b28gZWFybHkuXG4gICAgZG9jdW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uRG9jdW1lbnRNb3VzZU1vdmUpXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQ/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uRG9jdW1lbnRNb3VzZU1vdmUpXG4gICAgfVxuICB9LCBbc2Nyb2xsZXJFbGVtLCBhbmNob3JFbGVtLCBlZGl0b3JdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG1lbnVSZWYuY3VycmVudCAmJiBob3ZlcmVkRWxlbWVudD8ubm9kZSkge1xuICAgICAgZWRpdG9yLmdldEVkaXRvclN0YXRlKCkucmVhZCgoKSA9PiB7XG4gICAgICAgIC8vIENoZWNrIGlmIGJsb2NrTm9kZSBpcyBhbiBlbXB0eSB0ZXh0IG5vZGVcbiAgICAgICAgbGV0IGlzRW1wdHlQYXJhZ3JhcGggPSB0cnVlXG4gICAgICAgIGlmIChcbiAgICAgICAgICBob3ZlcmVkRWxlbWVudC5ub2RlLmdldFR5cGUoKSAhPT0gJ3BhcmFncmFwaCcgfHxcbiAgICAgICAgICBob3ZlcmVkRWxlbWVudC5ub2RlLmdldFRleHRDb250ZW50KCkgIT09ICcnXG4gICAgICAgICkge1xuICAgICAgICAgIGlzRW1wdHlQYXJhZ3JhcGggPSBmYWxzZVxuICAgICAgICB9XG5cbiAgICAgICAgc2V0SGFuZGxlUG9zaXRpb24oXG4gICAgICAgICAgaG92ZXJlZEVsZW1lbnQ/LmVsZW0sXG4gICAgICAgICAgbWVudVJlZi5jdXJyZW50LFxuICAgICAgICAgIGFuY2hvckVsZW0sXG4gICAgICAgICAgaXNFbXB0eVBhcmFncmFwaCA/IFNQQUNFIDogU1BBQ0UgLSAyMCxcbiAgICAgICAgKVxuICAgICAgfSlcbiAgICB9XG4gIH0sIFthbmNob3JFbGVtLCBob3ZlcmVkRWxlbWVudCwgZWRpdG9yXSlcblxuICBjb25zdCBoYW5kbGVBZGRDbGljayA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudCkgPT4ge1xuICAgICAgbGV0IGhvdmVyZWRFbGVtZW50VG9Vc2UgPSBob3ZlcmVkRWxlbWVudFxuICAgICAgaWYgKCFob3ZlcmVkRWxlbWVudFRvVXNlPy5ub2RlKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyAxLiBVcGRhdGUgaG92ZXJlZEVsZW1lbnQubm9kZSB0byBhIG5ldyBwYXJhZ3JhcGggbm9kZSBpZiB0aGUgaG92ZXJlZEVsZW1lbnQubm9kZSBpcyBub3QgYSBwYXJhZ3JhcGggbm9kZVxuICAgICAgZWRpdG9yLnVwZGF0ZSgoKSA9PiB7XG4gICAgICAgIC8vIENoZWNrIGlmIGJsb2NrTm9kZSBpcyBhbiBlbXB0eSB0ZXh0IG5vZGVcbiAgICAgICAgbGV0IGlzRW1wdHlQYXJhZ3JhcGggPSB0cnVlXG4gICAgICAgIGlmIChcbiAgICAgICAgICBob3ZlcmVkRWxlbWVudFRvVXNlLm5vZGUuZ2V0VHlwZSgpICE9PSAncGFyYWdyYXBoJyB8fFxuICAgICAgICAgIGhvdmVyZWRFbGVtZW50VG9Vc2Uubm9kZS5nZXRUZXh0Q29udGVudCgpICE9PSAnJ1xuICAgICAgICApIHtcbiAgICAgICAgICBpc0VtcHR5UGFyYWdyYXBoID0gZmFsc2VcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNFbXB0eVBhcmFncmFwaCkge1xuICAgICAgICAgIGNvbnN0IG5ld1BhcmFncmFwaCA9ICRjcmVhdGVQYXJhZ3JhcGhOb2RlKClcbiAgICAgICAgICBob3ZlcmVkRWxlbWVudFRvVXNlLm5vZGUuaW5zZXJ0QWZ0ZXIobmV3UGFyYWdyYXBoKVxuXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBob3ZlcmVkRWxlbWVudFRvVXNlID0ge1xuICAgICAgICAgICAgICBlbGVtOiBlZGl0b3IuZ2V0RWxlbWVudEJ5S2V5KG5ld1BhcmFncmFwaC5nZXRLZXkoKSksXG4gICAgICAgICAgICAgIG5vZGU6IG5ld1BhcmFncmFwaCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldEhvdmVyZWRFbGVtZW50KGhvdmVyZWRFbGVtZW50VG9Vc2UpXG4gICAgICAgICAgfSwgMClcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgLy8gMi4gRm9jdXMgb24gdGhlIG5ldyBwYXJhZ3JhcGggbm9kZVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGVkaXRvci51cGRhdGUoKCkgPT4ge1xuICAgICAgICAgIGVkaXRvci5mb2N1cygpXG5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBob3ZlcmVkRWxlbWVudFRvVXNlLm5vZGUgJiZcbiAgICAgICAgICAgICdzZWxlY3QnIGluIGhvdmVyZWRFbGVtZW50VG9Vc2Uubm9kZSAmJlxuICAgICAgICAgICAgdHlwZW9mIGhvdmVyZWRFbGVtZW50VG9Vc2Uubm9kZS5zZWxlY3QgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGhvdmVyZWRFbGVtZW50VG9Vc2Uubm9kZS5zZWxlY3QoKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0sIDEpXG5cbiAgICAgIC8vIE1ha2Ugc3VyZSB0aGlzIGlzIGNhbGxlZCBBRlRFUiB0aGUgZm9jdXNpbmcgaGFzIGJlZW4gcHJvY2Vzc2VkIGJ5IHRoZSBicm93c2VyXG4gICAgICAvLyBPdGhlcndpc2UsIHRoaXMgd29uJ3Qgd29ya1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGVkaXRvci5kaXNwYXRjaENvbW1hbmQoRU5BQkxFX1NMQVNIX01FTlVfQ09NTUFORCwge1xuICAgICAgICAgIG5vZGU6IGhvdmVyZWRFbGVtZW50VG9Vc2Uubm9kZSBhcyBQYXJhZ3JhcGhOb2RlLFxuICAgICAgICB9KVxuICAgICAgfSwgMilcblxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICB9LFxuICAgIFtlZGl0b3IsIGhvdmVyZWRFbGVtZW50XSxcbiAgKVxuXG4gIHJldHVybiBjcmVhdGVQb3J0YWwoXG4gICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9XCJpY29uIGFkZC1ibG9jay1tZW51XCJcbiAgICAgICAgb25DbGljaz17KGV2ZW50KSA9PiB7XG4gICAgICAgICAgaGFuZGxlQWRkQ2xpY2soZXZlbnQpXG4gICAgICAgIH19XG4gICAgICAgIHJlZj17bWVudVJlZn1cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtpc0VkaXRhYmxlID8gJ2ljb24nIDogJyd9IC8+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L1JlYWN0LkZyYWdtZW50PixcbiAgICBhbmNob3JFbGVtLFxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBBZGRCbG9ja0hhbmRsZVBsdWdpbih7XG4gIGFuY2hvckVsZW0gPSBkb2N1bWVudC5ib2R5LFxufToge1xuICBhbmNob3JFbGVtPzogSFRNTEVsZW1lbnRcbn0pOiBKU1guRWxlbWVudCB7XG4gIGNvbnN0IFtlZGl0b3JdID0gdXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCgpXG4gIHJldHVybiB1c2VBZGRCbG9ja0hhbmRsZShlZGl0b3IsIGFuY2hvckVsZW0sIGVkaXRvci5fZWRpdGFibGUpXG59XG4iXSwibmFtZXMiOlsidXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCIsIiRjcmVhdGVQYXJhZ3JhcGhOb2RlIiwiJGdldE5vZGVCeUtleSIsIlJlYWN0IiwidXNlQ2FsbGJhY2siLCJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImNyZWF0ZVBvcnRhbCIsImlzSFRNTEVsZW1lbnQiLCJQb2ludCIsIlJlY3QiLCJFTkFCTEVfU0xBU0hfTUVOVV9DT01NQU5EIiwiZ2V0Q29sbGFwc2VkTWFyZ2lucyIsImdldFRvcExldmVsTm9kZUtleXMiLCJpc09uSGFuZGxlRWxlbWVudCIsInNldEhhbmRsZVBvc2l0aW9uIiwiU1BBQ0UiLCJBRERfQkxPQ0tfTUVOVV9DTEFTU05BTUUiLCJEb3dud2FyZCIsIlVwd2FyZCIsIkluZGV0ZXJtaW5hdGUiLCJwcmV2SW5kZXgiLCJJbmZpbml0eSIsImdldEN1cnJlbnRJbmRleCIsImtleXNMZW5ndGgiLCJNYXRoIiwiZmxvb3IiLCJnZXRCbG9ja0VsZW1lbnQiLCJhbmNob3JFbGVtIiwiZWRpdG9yIiwiZXZlbnQiLCJ1c2VFZGdlQXNEZWZhdWx0IiwiaG9yaXpvbnRhbE9mZnNldCIsImFuY2hvckVsZW1lbnRSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwidG9wTGV2ZWxOb2RlS2V5cyIsImJsb2NrRWxlbSIsImJsb2NrTm9kZSIsImdldEVkaXRvclN0YXRlIiwicmVhZCIsImZpcnN0Tm9kZSIsImxhc3ROb2RlIiwiZ2V0RWxlbWVudEJ5S2V5IiwibGVuZ3RoIiwiZmlyc3ROb2RlUmVjdCIsImxhc3ROb2RlUmVjdCIsInkiLCJ0b3AiLCJib3R0b20iLCJpbmRleCIsImRpcmVjdGlvbiIsImtleSIsImVsZW0iLCJwb2ludCIsIngiLCJkb21SZWN0IiwiZnJvbURPTSIsIm1hcmdpbkJvdHRvbSIsIm1hcmdpblRvcCIsInJlY3QiLCJnZW5lcmF0ZU5ld1JlY3QiLCJsZWZ0IiwicmlnaHQiLCJyZWFzb24iLCJpc09uQm90dG9tU2lkZSIsImlzT25Ub3BTaWRlIiwicmVzdWx0IiwiY29udGFpbnMiLCJ1c2VBZGRCbG9ja0hhbmRsZSIsImlzRWRpdGFibGUiLCJzY3JvbGxlckVsZW0iLCJwYXJlbnRFbGVtZW50IiwibWVudVJlZiIsImhvdmVyZWRFbGVtZW50Iiwic2V0SG92ZXJlZEVsZW1lbnQiLCJvbkRvY3VtZW50TW91c2VNb3ZlIiwidGFyZ2V0IiwiZGlzdGFuY2VGcm9tU2Nyb2xsZXJFbGVtIiwicGFnZVgiLCJwYWdlWSIsImhvcml6b250YWxCdWZmZXIiLCJ2ZXJ0aWNhbEJ1ZmZlciIsImFkanVzdGVkVG9wIiwid2luZG93Iiwic2Nyb2xsWSIsImFkanVzdGVkQm90dG9tIiwiX2VtcHR5QmxvY2tFbGVtIiwibm9kZSIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJjdXJyZW50IiwiaXNFbXB0eVBhcmFncmFwaCIsImdldFR5cGUiLCJnZXRUZXh0Q29udGVudCIsImhhbmRsZUFkZENsaWNrIiwiaG92ZXJlZEVsZW1lbnRUb1VzZSIsInVwZGF0ZSIsIm5ld1BhcmFncmFwaCIsImluc2VydEFmdGVyIiwic2V0VGltZW91dCIsImdldEtleSIsImZvY3VzIiwic2VsZWN0IiwiZGlzcGF0Y2hDb21tYW5kIiwic3RvcFByb3BhZ2F0aW9uIiwicHJldmVudERlZmF1bHQiLCJGcmFnbWVudCIsImJ1dHRvbiIsImNsYXNzTmFtZSIsIm9uQ2xpY2siLCJyZWYiLCJ0eXBlIiwiZGl2IiwiQWRkQmxvY2tIYW5kbGVQbHVnaW4iLCJib2R5IiwiX2VkaXRhYmxlIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUdBLFNBQVNBLHlCQUF5QixRQUFRLHdDQUF1QztBQUNqRixTQUFTQyxvQkFBb0IsUUFBUSxVQUFTO0FBQzlDLFNBQVNDLGFBQWEsUUFBOEMsVUFBUztBQUM3RSxZQUFZQyxXQUFXLFFBQU87QUFDOUIsU0FBU0MsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLFFBQU87QUFDaEUsU0FBU0MsWUFBWSxRQUFRLFlBQVc7QUFFeEMsU0FBU0MsYUFBYSxRQUFRLHVCQUFzQjtBQUNwRCxTQUFTQyxLQUFLLFFBQVEsdUJBQXNCO0FBQzVDLFNBQVNDLElBQUksUUFBUSxzQkFBcUI7QUFDMUMsU0FBU0MseUJBQXlCLFFBQVEsNkNBQTRDO0FBQ3RGLFNBQVNDLG1CQUFtQixRQUFRLCtCQUE4QjtBQUNsRSxTQUFTQyxtQkFBbUIsUUFBUSwrQkFBOEI7QUFDbEUs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
@@ -1,14 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "debounce", {
6
- enumerable: true,
7
- get: function() {
8
- return debounce;
9
- }
10
- });
11
- function debounce(func, wait) {
1
+ export function debounce(func, wait) {
12
2
  let timeout = null;
13
3
  return function(...args) {
14
4
  const later = ()=>{
@@ -21,4 +11,4 @@ function debounce(func, wait) {
21
11
  };
22
12
  }
23
13
 
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9EcmFnZ2FibGVCbG9ja1BsdWdpbi9kZWJvdW5jZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZGVib3VuY2UoZnVuYzogRnVuY3Rpb24sIHdhaXQ6IG51bWJlcikge1xuICBsZXQgdGltZW91dDogbnVsbCB8IG51bWJlciA9IG51bGxcbiAgcmV0dXJuIGZ1bmN0aW9uICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGNvbnN0IGxhdGVyID0gKCkgPT4ge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpXG4gICAgICB0aW1lb3V0ID0gbnVsbFxuICAgICAgZnVuYyguLi5hcmdzKVxuICAgIH1cblxuICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KVxuICAgIHRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dChsYXRlciwgd2FpdClcbiAgfVxufVxuIl0sIm5hbWVzIjpbImRlYm91bmNlIiwiZnVuYyIsIndhaXQiLCJ0aW1lb3V0IiwiYXJncyIsImxhdGVyIiwiY2xlYXJUaW1lb3V0Iiwid2luZG93Iiwic2V0VGltZW91dCJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFBZ0JBOzs7ZUFBQUE7OztBQUFULFNBQVNBLFNBQVNDLElBQWMsRUFBRUMsSUFBWTtJQUNuRCxJQUFJQyxVQUF5QjtJQUM3QixPQUFPLFNBQVUsR0FBR0MsSUFBVztRQUM3QixNQUFNQyxRQUFRO1lBQ1pDLGFBQWFIO1lBQ2JBLFVBQVU7WUFDVkYsUUFBUUc7UUFDVjtRQUVBRSxhQUFhSDtRQUNiQSxVQUFVSSxPQUFPQyxVQUFVLENBQUNILE9BQU9IO0lBQ3JDO0FBQ0YifQ==
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9EcmFnZ2FibGVCbG9ja1BsdWdpbi9kZWJvdW5jZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZGVib3VuY2UoZnVuYzogRnVuY3Rpb24sIHdhaXQ6IG51bWJlcikge1xuICBsZXQgdGltZW91dDogbnVsbCB8IG51bWJlciA9IG51bGxcbiAgcmV0dXJuIGZ1bmN0aW9uICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGNvbnN0IGxhdGVyID0gKCkgPT4ge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpXG4gICAgICB0aW1lb3V0ID0gbnVsbFxuICAgICAgZnVuYyguLi5hcmdzKVxuICAgIH1cblxuICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KVxuICAgIHRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dChsYXRlciwgd2FpdClcbiAgfVxufVxuIl0sIm5hbWVzIjpbImRlYm91bmNlIiwiZnVuYyIsIndhaXQiLCJ0aW1lb3V0IiwiYXJncyIsImxhdGVyIiwiY2xlYXJUaW1lb3V0Iiwid2luZG93Iiwic2V0VGltZW91dCJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxTQUFTQSxTQUFTQyxJQUFjLEVBQUVDLElBQVk7SUFDbkQsSUFBSUMsVUFBeUI7SUFDN0IsT0FBTyxTQUFVLEdBQUdDLElBQVc7UUFDN0IsTUFBTUMsUUFBUTtZQUNaQyxhQUFhSDtZQUNiQSxVQUFVO1lBQ1ZGLFFBQVFHO1FBQ1Y7UUFFQUUsYUFBYUg7UUFDYkEsVUFBVUksT0FBT0MsVUFBVSxDQUFDSCxPQUFPSDtJQUNyQztBQUNGIn0=
@@ -1,14 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "getBoundingClientRectWithoutTransform", {
6
- enumerable: true,
7
- get: function() {
8
- return getBoundingClientRectWithoutTransform;
9
- }
10
- });
11
- function getBoundingClientRectWithoutTransform(elem) {
1
+ export function getBoundingClientRectWithoutTransform(elem) {
12
2
  const rect = elem.getBoundingClientRect();
13
3
  // Extract the translation value from the transform style
14
4
  const transformValue = getComputedStyle(elem).getPropertyValue('transform');
@@ -21,4 +11,4 @@ function getBoundingClientRectWithoutTransform(elem) {
21
11
  return rect;
22
12
  }
23
13
 
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9EcmFnZ2FibGVCbG9ja1BsdWdpbi9nZXRCb3VuZGluZ1JlY3RXaXRob3V0VHJhbnNmb3JtLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3RXaXRob3V0VHJhbnNmb3JtKGVsZW06IEhUTUxFbGVtZW50KTogRE9NUmVjdCB7XG4gIGNvbnN0IHJlY3QgPSBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG5cbiAgLy8gRXh0cmFjdCB0aGUgdHJhbnNsYXRpb24gdmFsdWUgZnJvbSB0aGUgdHJhbnNmb3JtIHN0eWxlXG4gIGNvbnN0IHRyYW5zZm9ybVZhbHVlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtKS5nZXRQcm9wZXJ0eVZhbHVlKCd0cmFuc2Zvcm0nKVxuICBpZiAoIXRyYW5zZm9ybVZhbHVlIHx8IHRyYW5zZm9ybVZhbHVlID09PSAnbm9uZScpIHtcbiAgICByZXR1cm4gcmVjdFxuICB9XG5cbiAgY29uc3QgbGFzdE51bWJlck9mVHJhbnNmb3JtVmFsdWUgPSB0cmFuc2Zvcm1WYWx1ZS5zcGxpdCgnLCcpLnBvcCgpXG4gIHJlY3QueSA9IHJlY3QueSAtIE51bWJlcihsYXN0TnVtYmVyT2ZUcmFuc2Zvcm1WYWx1ZS5yZXBsYWNlKCcpJywgJycpKVxuXG4gIC8vIFJldHVybiB0aGUgb3JpZ2luYWwgYm91bmRpbmcgcmVjdCBpZiBubyB0cmFuc2xhdGlvbiBpcyBhcHBsaWVkXG4gIHJldHVybiByZWN0XG59XG4iXSwibmFtZXMiOlsiZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybSIsImVsZW0iLCJyZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwidHJhbnNmb3JtVmFsdWUiLCJnZXRDb21wdXRlZFN0eWxlIiwiZ2V0UHJvcGVydHlWYWx1ZSIsImxhc3ROdW1iZXJPZlRyYW5zZm9ybVZhbHVlIiwic3BsaXQiLCJwb3AiLCJ5IiwiTnVtYmVyIiwicmVwbGFjZSJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFBZ0JBOzs7ZUFBQUE7OztBQUFULFNBQVNBLHNDQUFzQ0MsSUFBaUI7SUFDckUsTUFBTUMsT0FBT0QsS0FBS0UscUJBQXFCO0lBRXZDLHlEQUF5RDtJQUN6RCxNQUFNQyxpQkFBaUJDLGlCQUFpQkosTUFBTUssZ0JBQWdCLENBQUM7SUFDL0QsSUFBSSxDQUFDRixrQkFBa0JBLG1CQUFtQixRQUFRO1FBQ2hELE9BQU9GO0lBQ1Q7SUFFQSxNQUFNSyw2QkFBNkJILGVBQWVJLEtBQUssQ0FBQyxLQUFLQyxHQUFHO0lBQ2hFUCxLQUFLUSxDQUFDLEdBQUdSLEtBQUtRLENBQUMsR0FBR0MsT0FBT0osMkJBQTJCSyxPQUFPLENBQUMsS0FBSztJQUVqRSxpRUFBaUU7SUFDakUsT0FBT1Y7QUFDVCJ9
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9EcmFnZ2FibGVCbG9ja1BsdWdpbi9nZXRCb3VuZGluZ1JlY3RXaXRob3V0VHJhbnNmb3JtLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3RXaXRob3V0VHJhbnNmb3JtKGVsZW06IEhUTUxFbGVtZW50KTogRE9NUmVjdCB7XG4gIGNvbnN0IHJlY3QgPSBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG5cbiAgLy8gRXh0cmFjdCB0aGUgdHJhbnNsYXRpb24gdmFsdWUgZnJvbSB0aGUgdHJhbnNmb3JtIHN0eWxlXG4gIGNvbnN0IHRyYW5zZm9ybVZhbHVlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtKS5nZXRQcm9wZXJ0eVZhbHVlKCd0cmFuc2Zvcm0nKVxuICBpZiAoIXRyYW5zZm9ybVZhbHVlIHx8IHRyYW5zZm9ybVZhbHVlID09PSAnbm9uZScpIHtcbiAgICByZXR1cm4gcmVjdFxuICB9XG5cbiAgY29uc3QgbGFzdE51bWJlck9mVHJhbnNmb3JtVmFsdWUgPSB0cmFuc2Zvcm1WYWx1ZS5zcGxpdCgnLCcpLnBvcCgpXG4gIHJlY3QueSA9IHJlY3QueSAtIE51bWJlcihsYXN0TnVtYmVyT2ZUcmFuc2Zvcm1WYWx1ZS5yZXBsYWNlKCcpJywgJycpKVxuXG4gIC8vIFJldHVybiB0aGUgb3JpZ2luYWwgYm91bmRpbmcgcmVjdCBpZiBubyB0cmFuc2xhdGlvbiBpcyBhcHBsaWVkXG4gIHJldHVybiByZWN0XG59XG4iXSwibmFtZXMiOlsiZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybSIsImVsZW0iLCJyZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwidHJhbnNmb3JtVmFsdWUiLCJnZXRDb21wdXRlZFN0eWxlIiwiZ2V0UHJvcGVydHlWYWx1ZSIsImxhc3ROdW1iZXJPZlRyYW5zZm9ybVZhbHVlIiwic3BsaXQiLCJwb3AiLCJ5IiwiTnVtYmVyIiwicmVwbGFjZSJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxTQUFTQSxzQ0FBc0NDLElBQWlCO0lBQ3JFLE1BQU1DLE9BQU9ELEtBQUtFLHFCQUFxQjtJQUV2Qyx5REFBeUQ7SUFDekQsTUFBTUMsaUJBQWlCQyxpQkFBaUJKLE1BQU1LLGdCQUFnQixDQUFDO0lBQy9ELElBQUksQ0FBQ0Ysa0JBQWtCQSxtQkFBbUIsUUFBUTtRQUNoRCxPQUFPRjtJQUNUO0lBRUEsTUFBTUssNkJBQTZCSCxlQUFlSSxLQUFLLENBQUMsS0FBS0MsR0FBRztJQUNoRVAsS0FBS1EsQ0FBQyxHQUFHUixLQUFLUSxDQUFDLEdBQUdDLE9BQU9KLDJCQUEyQkssT0FBTyxDQUFDLEtBQUs7SUFFakUsaUVBQWlFO0lBQ2pFLE9BQU9WO0FBQ1QifQ==
@@ -1,19 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "getNodeCloseToPoint", {
6
- enumerable: true,
7
- get: function() {
8
- return getNodeCloseToPoint;
9
- }
10
- });
11
- const _lexical = require("lexical");
12
- const _point = require("../../../utils/point");
13
- const _rect = require("../../../utils/rect");
14
- const _getCollapsedMargins = require("../utils/getCollapsedMargins");
15
- const _getTopLevelNodeKeys = require("../utils/getTopLevelNodeKeys");
16
- const _getBoundingRectWithoutTransform = require("./getBoundingRectWithoutTransform");
1
+ import { $getNodeByKey } from 'lexical';
2
+ import { Point } from '../../../utils/point';
3
+ import { Rect } from '../../../utils/rect';
4
+ import { getCollapsedMargins } from '../utils/getCollapsedMargins';
5
+ import { getTopLevelNodeKeys } from '../utils/getTopLevelNodeKeys';
6
+ import { getBoundingClientRectWithoutTransform } from './getBoundingRectWithoutTransform';
17
7
  // Directions
18
8
  const Downward = 1;
19
9
  const Upward = -1;
@@ -27,7 +17,7 @@ function isPointClose(previous, current, threshold = 20) {
27
17
  const dy = previous.y - current.y;
28
18
  return dx * dx + dy * dy <= threshold * threshold;
29
19
  }
30
- function getNodeCloseToPoint(props) {
20
+ export function getNodeCloseToPoint(props) {
31
21
  const { anchorElem, cache_treshold = 20, editor, fuzzy = false, horizontalOffset = 0, point: { x, y }, startIndex = 0, useEdgeAsDefault = false, verbose = false } = props;
32
22
  // Use cache
33
23
  if (cache_treshold > 0 && cache.props && cache.result && cache.props.fuzzy === props.fuzzy && cache.props.horizontalOffset === props.horizontalOffset && cache.props.useEdgeAsDefault === props.useEdgeAsDefault && isPointClose(cache.props.point, props.point, cache_treshold)) {
@@ -37,7 +27,7 @@ function getNodeCloseToPoint(props) {
37
27
  return cache.result;
38
28
  }
39
29
  const anchorElementRect = anchorElem.getBoundingClientRect();
40
- const topLevelNodeKeys = (0, _getTopLevelNodeKeys.getTopLevelNodeKeys)(editor);
30
+ const topLevelNodeKeys = getTopLevelNodeKeys(editor);
41
31
  const closestBlockElem = {
42
32
  blockElem: null,
43
33
  blockNode: null,
@@ -53,18 +43,18 @@ function getNodeCloseToPoint(props) {
53
43
  editor.getElementByKey(topLevelNodeKeys[topLevelNodeKeys.length - 1])
54
44
  ];
55
45
  const [firstNodeRect, lastNodeRect] = [
56
- (0, _getBoundingRectWithoutTransform.getBoundingClientRectWithoutTransform)(firstNode),
57
- (0, _getBoundingRectWithoutTransform.getBoundingClientRectWithoutTransform)(lastNode)
46
+ getBoundingClientRectWithoutTransform(firstNode),
47
+ getBoundingClientRectWithoutTransform(lastNode)
58
48
  ];
59
49
  if (firstNodeRect && lastNodeRect) {
60
50
  if (y < firstNodeRect.top) {
61
51
  closestBlockElem.blockElem = firstNode;
62
52
  closestBlockElem.distance = firstNodeRect.top - y;
63
- closestBlockElem.blockNode = (0, _lexical.$getNodeByKey)(topLevelNodeKeys[0]);
53
+ closestBlockElem.blockNode = $getNodeByKey(topLevelNodeKeys[0]);
64
54
  closestBlockElem.foundAtIndex = 0;
65
55
  } else if (y > lastNodeRect.bottom) {
66
56
  closestBlockElem.distance = y - lastNodeRect.bottom;
67
- closestBlockElem.blockNode = (0, _lexical.$getNodeByKey)(topLevelNodeKeys[topLevelNodeKeys.length - 1]);
57
+ closestBlockElem.blockNode = $getNodeByKey(topLevelNodeKeys[topLevelNodeKeys.length - 1]);
68
58
  closestBlockElem.blockElem = lastNode;
69
59
  closestBlockElem.foundAtIndex = topLevelNodeKeys.length - 1;
70
60
  }
@@ -91,11 +81,11 @@ function getNodeCloseToPoint(props) {
91
81
  if (elem === null) {
92
82
  break;
93
83
  }
94
- const point = new _point.Point(x + horizontalOffset, y);
84
+ const point = new Point(x + horizontalOffset, y);
95
85
  //const domRect = Rect.fromDOM(elem)
96
86
  // Do not consider transform of blocks when calculating distance
97
- const domRect = _rect.Rect.fromDOMRect((0, _getBoundingRectWithoutTransform.getBoundingClientRectWithoutTransform)(elem));
98
- const { marginBottom, marginTop } = (0, _getCollapsedMargins.getCollapsedMargins)(elem);
87
+ const domRect = Rect.fromDOMRect(getBoundingClientRectWithoutTransform(elem));
88
+ const { marginBottom, marginTop } = getCollapsedMargins(elem);
99
89
  const rect = domRect.generateNewRect({
100
90
  bottom: domRect.bottom + marginBottom,
101
91
  left: anchorElementRect.left,
@@ -108,7 +98,7 @@ function getNodeCloseToPoint(props) {
108
98
  }
109
99
  if (distance === 0) {
110
100
  closestBlockElem.blockElem = elem;
111
- closestBlockElem.blockNode = (0, _lexical.$getNodeByKey)(key);
101
+ closestBlockElem.blockNode = $getNodeByKey(key);
112
102
  closestBlockElem.foundAtIndex = index;
113
103
  closestBlockElem.distance = distance;
114
104
  // Check if blockNode is an empty text node
@@ -123,7 +113,7 @@ function getNodeCloseToPoint(props) {
123
113
  } else if (fuzzy) {
124
114
  if (distance < closestBlockElem.distance) {
125
115
  closestBlockElem.blockElem = elem;
126
- closestBlockElem.blockNode = (0, _lexical.$getNodeByKey)(key);
116
+ closestBlockElem.blockNode = $getNodeByKey(key);
127
117
  closestBlockElem.distance = distance;
128
118
  closestBlockElem.foundAtIndex = index;
129
119
  }
@@ -157,4 +147,4 @@ function getNodeCloseToPoint(props) {
157
147
  };
158
148
  }
159
149
 
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9EcmFnZ2FibGVCbG9ja1BsdWdpbi9nZXROb2RlQ2xvc2VUb1BvaW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTGV4aWNhbEVkaXRvciwgTGV4aWNhbE5vZGUgfSBmcm9tICdsZXhpY2FsJ1xuXG5pbXBvcnQgeyAkZ2V0Tm9kZUJ5S2V5IH0gZnJvbSAnbGV4aWNhbCdcblxuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9wb2ludCdcbmltcG9ydCB7IFJlY3QgfSBmcm9tICcuLi8uLi8uLi91dGlscy9yZWN0J1xuaW1wb3J0IHsgZ2V0Q29sbGFwc2VkTWFyZ2lucyB9IGZyb20gJy4uL3V0aWxzL2dldENvbGxhcHNlZE1hcmdpbnMnXG5pbXBvcnQgeyBnZXRUb3BMZXZlbE5vZGVLZXlzIH0gZnJvbSAnLi4vdXRpbHMvZ2V0VG9wTGV2ZWxOb2RlS2V5cydcbmltcG9ydCB7IGdldEJvdW5kaW5nQ2xpZW50UmVjdFdpdGhvdXRUcmFuc2Zvcm0gfSBmcm9tICcuL2dldEJvdW5kaW5nUmVjdFdpdGhvdXRUcmFuc2Zvcm0nXG5cbi8vIERpcmVjdGlvbnNcbmNvbnN0IERvd253YXJkID0gMVxuY29uc3QgVXB3YXJkID0gLTFcbmNvbnN0IEluZGV0ZXJtaW5hdGUgPSAwXG5cbnR5cGUgUHJvcHMgPSB7XG4gIGFuY2hvckVsZW06IEhUTUxFbGVtZW50XG4gIGNhY2hlX3RyZXNob2xkPzogbnVtYmVyXG4gIGVkaXRvcjogTGV4aWNhbEVkaXRvclxuICAvKiogZnV6enkgbWFrZXMgdGhlIHNlYXJjaCBub3QgZXhhY3QuIElmIG5vIGV4YWN0IG1hdGNoIGZvdW5kLCBmaW5kIHRoZSBjbG9zZXMgbm9kZSBpbnN0ZWFkIG9mIHJldHVybmluZyBudWxsICovXG4gIGZ1enp5PzogYm9vbGVhblxuICBob3Jpem9udGFsT2Zmc2V0PzogbnVtYmVyXG4gIHBvaW50OiBQb2ludFxuICAvKipcbiAgICogVGhlIGluZGV4IHRvIHN0YXJ0IHNlYXJjaGluZyBmcm9tLiBJdCBjYW4gYmUgYSBjb25zaWRlcmFibGUgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIHRvIHN0YXJ0IHNlYXJjaGluZyBmcm9tIHRoZSBpbmRleCBvZiB0aGVcbiAgICogcHJldmlvdXNseSBmb3VuZCBub2RlLCBhcyB0aGUgbm9kZSBpcyBsaWtlbHkgdG8gYmUgY2xvc2UgdG8gdGhlIG5leHQgbm9kZS5cbiAgICovXG4gIHN0YXJ0SW5kZXg/OiBudW1iZXJcbiAgdXNlRWRnZUFzRGVmYXVsdD86IGJvb2xlYW5cbiAgdmVyYm9zZT86IGJvb2xlYW5cbn1cblxudHlwZSBPdXRwdXQgPSB7XG4gIGJsb2NrRWxlbTogSFRNTEVsZW1lbnQgfCBudWxsXG4gIGJsb2NrTm9kZTogTGV4aWNhbE5vZGUgfCBudWxsXG4gIGZvdW5kQXRJbmRleDogbnVtYmVyXG4gIGlzRm91bmROb2RlRW1wdHlQYXJhZ3JhcGg6IGJvb2xlYW5cbn1cblxuY29uc3QgY2FjaGUgPSB7XG4gIHByb3BzOiBudWxsIGFzIFByb3BzIHwgbnVsbCxcbiAgcmVzdWx0OiBudWxsIGFzIE91dHB1dCB8IG51bGwsXG59XG5cbmZ1bmN0aW9uIGlzUG9pbnRDbG9zZShwcmV2aW91czogUG9pbnQsIGN1cnJlbnQ6IFBvaW50LCB0aHJlc2hvbGQ6IG51bWJlciA9IDIwKTogYm9vbGVhbiB7XG4gIGNvbnN0IGR4ID0gcHJldmlvdXMueCAtIGN1cnJlbnQueFxuICBjb25zdCBkeSA9IHByZXZpb3VzLnkgLSBjdXJyZW50LnlcbiAgcmV0dXJuIGR4ICogZHggKyBkeSAqIGR5IDw9IHRocmVzaG9sZCAqIHRocmVzaG9sZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Tm9kZUNsb3NlVG9Qb2ludChwcm9wczogUHJvcHMpOiBPdXRwdXQge1xuICBjb25zdCB7XG4gICAgYW5jaG9yRWxlbSxcbiAgICBjYWNoZV90cmVzaG9sZCA9IDIwLFxuICAgIGVkaXRvcixcbiAgICBmdXp6eSA9IGZhbHNlLFxuICAgIGhvcml6b250YWxPZmZzZXQgPSAwLFxuICAgIHBvaW50OiB7IHgsIHkgfSxcbiAgICBzdGFydEluZGV4ID0gMCxcbiAgICB1c2VFZGdlQXNEZWZhdWx0ID0gZmFsc2UsXG4gICAgdmVyYm9zZSA9IGZhbHNlLFxuICB9ID0gcHJvcHNcblxuICAvLyBVc2UgY2FjaGVcbiAgaWYgKFxuICAgIGNhY2hlX3RyZXNob2xkID4gMCAmJlxuICAgIGNhY2hlLnByb3BzICYmXG4gICAgY2FjaGUucmVzdWx0ICYmXG4gICAgY2FjaGUucHJvcHMuZnV6enkgPT09IHByb3BzLmZ1enp5ICYmXG4gICAgY2FjaGUucHJvcHMuaG9yaXpvbnRhbE9mZnNldCA9PT0gcHJvcHMuaG9yaXpvbnRhbE9mZnNldCAmJlxuICAgIGNhY2hlLnByb3BzLnVzZUVkZ2VBc0RlZmF1bHQgPT09IHByb3BzLnVzZUVkZ2VBc0RlZmF1bHQgJiZcbiAgICBpc1BvaW50Q2xvc2UoY2FjaGUucHJvcHMucG9pbnQsIHByb3BzLnBvaW50LCBjYWNoZV90cmVzaG9sZClcbiAgKSB7XG4gICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgIC8vY29uc29sZS5sb2coJ1JldHVybmluZyBjYWNoZWQgcmVzdWx0JylcbiAgICB9XG4gICAgcmV0dXJuIGNhY2hlLnJlc3VsdFxuICB9XG5cbiAgY29uc3QgYW5jaG9yRWxlbWVudFJlY3QgPSBhbmNob3JFbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gIGNvbnN0IHRvcExldmVsTm9kZUtleXMgPSBnZXRUb3BMZXZlbE5vZGVLZXlzKGVkaXRvcilcblxuICBjb25zdCBjbG9zZXN0QmxvY2tFbGVtOiB7XG4gICAgYmxvY2tFbGVtOiBIVE1MRWxlbWVudCB8IG51bGxcbiAgICBibG9ja05vZGU6IExleGljYWxOb2RlIHwgbnVsbFxuICAgIGRpc3RhbmNlOiBudW1iZXJcbiAgICBmb3VuZEF0SW5kZXg6IG51bWJlclxuICAgIGlzRm91bmROb2RlRW1wdHlQYXJhZ3JhcGg6IGJvb2xlYW5cbiAgfSA9IHtcbiAgICBibG9ja0VsZW06IG51bGwsXG4gICAgYmxvY2tOb2RlOiBudWxsLFxuICAgIGRpc3RhbmNlOiBJbmZpbml0eSxcbiAgICBmb3VuZEF0SW5kZXg6IC0xLFxuICAgIGlzRm91bmROb2RlRW1wdHlQYXJhZ3JhcGg6IGZhbHNlLFxuICB9XG5cbiAgLy8gUmV0dXJuIG51bGwgaWYgbWF0Y2hpbmcgYmxvY2sgZWxlbWVudCBpcyB0aGUgZmlyc3Qgb3IgbGFzdCBub2RlXG4gIGVkaXRvci5nZXRFZGl0b3JTdGF0ZSgpLnJlYWQoKCkgPT4ge1xuICAgIGlmICh1c2VFZGdlQXNEZWZhdWx0KSB7XG4gICAgICBjb25zdCBbZmlyc3ROb2RlLCBsYXN0Tm9kZV0gPSBbXG4gICAgICAgIGVkaXRvci5nZXRFbGVtZW50QnlLZXkodG9wTGV2ZWxOb2RlS2V5c1swXSksXG4gICAgICAgIGVkaXRvci5nZXRFbGVtZW50QnlLZXkodG9wTGV2ZWxOb2RlS2V5c1t0b3BMZXZlbE5vZGVLZXlzLmxlbmd0aCAtIDFdKSxcbiAgICAgIF1cblxuICAgICAgY29uc3QgW2ZpcnN0Tm9kZVJlY3QsIGxhc3ROb2RlUmVjdF0gPSBbXG4gICAgICAgIGdldEJvdW5kaW5nQ2xpZW50UmVjdFdpdGhvdXRUcmFuc2Zvcm0oZmlyc3ROb2RlKSxcbiAgICAgICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybShsYXN0Tm9kZSksXG4gICAgICBdXG5cbiAgICAgIGlmIChmaXJzdE5vZGVSZWN0ICYmIGxhc3ROb2RlUmVjdCkge1xuICAgICAgICBpZiAoeSA8IGZpcnN0Tm9kZVJlY3QudG9wKSB7XG4gICAgICAgICAgY2xvc2VzdEJsb2NrRWxlbS5ibG9ja0VsZW0gPSBmaXJzdE5vZGVcbiAgICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmRpc3RhbmNlID0gZmlyc3ROb2RlUmVjdC50b3AgLSB5XG4gICAgICAgICAgY2xvc2VzdEJsb2NrRWxlbS5ibG9ja05vZGUgPSAkZ2V0Tm9kZUJ5S2V5KHRvcExldmVsTm9kZUtleXNbMF0pXG4gICAgICAgICAgY2xvc2VzdEJsb2NrRWxlbS5mb3VuZEF0SW5kZXggPSAwXG4gICAgICAgIH0gZWxzZSBpZiAoeSA+IGxhc3ROb2RlUmVjdC5ib3R0b20pIHtcbiAgICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmRpc3RhbmNlID0geSAtIGxhc3ROb2RlUmVjdC5ib3R0b21cbiAgICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmJsb2NrTm9kZSA9ICRnZXROb2RlQnlLZXkodG9wTGV2ZWxOb2RlS2V5c1t0b3BMZXZlbE5vZGVLZXlzLmxlbmd0aCAtIDFdKVxuICAgICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uYmxvY2tFbGVtID0gbGFzdE5vZGVcbiAgICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmZvdW5kQXRJbmRleCA9IHRvcExldmVsTm9kZUtleXMubGVuZ3RoIC0gMVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNsb3Nlc3RCbG9ja0VsZW0/LmJsb2NrRWxlbSkge1xuICAgICAgICAgIGlmICh2ZXJib3NlKSB7XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKCd1c2VFZGdlQXNEZWZhdWx0JywgdXNlRWRnZUFzRGVmYXVsdClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYmxvY2tFbGVtOiBudWxsLFxuICAgICAgICAgICAgaXNGb3VuZE5vZGVFbXB0eVBhcmFncmFwaDogZmFsc2UsXG4gICAgICAgICAgfSBhcyBPdXRwdXRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZpbmQgbWF0Y2hpbmcgYmxvY2sgZWxlbWVudFxuICAgIGxldCBpbmRleCA9IHN0YXJ0SW5kZXhcbiAgICBsZXQgZGlyZWN0aW9uID0gSW5kZXRlcm1pbmF0ZVxuXG4gICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgIC8vY29uc29sZS5sb2coJ3N0YXJ0IGluZGV4Jywgc3RhcnRJbmRleClcbiAgICB9XG5cbiAgICB3aGlsZSAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRvcExldmVsTm9kZUtleXMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBrZXkgPSB0b3BMZXZlbE5vZGVLZXlzW2luZGV4XVxuICAgICAgY29uc3QgZWxlbSA9IGVkaXRvci5nZXRFbGVtZW50QnlLZXkoa2V5KVxuICAgICAgaWYgKGVsZW0gPT09IG51bGwpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBvaW50ID0gbmV3IFBvaW50KHggKyBob3Jpem9udGFsT2Zmc2V0LCB5KVxuICAgICAgLy9jb25zdCBkb21SZWN0ID0gUmVjdC5mcm9tRE9NKGVsZW0pXG4gICAgICAvLyBEbyBub3QgY29uc2lkZXIgdHJhbnNmb3JtIG9mIGJsb2NrcyB3aGVuIGNhbGN1bGF0aW5nIGRpc3RhbmNlXG4gICAgICBjb25zdCBkb21SZWN0ID0gUmVjdC5mcm9tRE9NUmVjdChnZXRCb3VuZGluZ0NsaWVudFJlY3RXaXRob3V0VHJhbnNmb3JtKGVsZW0pKVxuXG4gICAgICBjb25zdCB7IG1hcmdpbkJvdHRvbSwgbWFyZ2luVG9wIH0gPSBnZXRDb2xsYXBzZWRNYXJnaW5zKGVsZW0pXG5cbiAgICAgIGNvbnN0IHJlY3QgPSBkb21SZWN0LmdlbmVyYXRlTmV3UmVjdCh7XG4gICAgICAgIGJvdHRvbTogZG9tUmVjdC5ib3R0b20gKyBtYXJnaW5Cb3R0b20sXG4gICAgICAgIGxlZnQ6IGFuY2hvckVsZW1lbnRSZWN0LmxlZnQsXG4gICAgICAgIHJpZ2h0OiBhbmNob3JFbGVtZW50UmVjdC5yaWdodCxcbiAgICAgICAgdG9wOiBkb21SZWN0LnRvcCAtIG1hcmdpblRvcCxcbiAgICAgIH0pXG5cbiAgICAgIGNvbnN0IHsgZGlzdGFuY2UsIGlzT25Cb3R0b21TaWRlLCBpc09uVG9wU2lkZSB9ID0gcmVjdC5kaXN0YW5jZUZyb21Qb2ludChwb2ludClcblxuICAgICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgICAgLy9jb25zb2xlLmxvZygnZGlzdGFuY2UnLCBkaXN0YW5jZSlcbiAgICAgIH1cblxuICAgICAgaWYgKGRpc3RhbmNlID09PSAwKSB7XG4gICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uYmxvY2tFbGVtID0gZWxlbVxuICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmJsb2NrTm9kZSA9ICRnZXROb2RlQnlLZXkoa2V5KVxuICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmZvdW5kQXRJbmRleCA9IGluZGV4XG4gICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uZGlzdGFuY2UgPSBkaXN0YW5jZVxuXG4gICAgICAgIC8vIENoZWNrIGlmIGJsb2NrTm9kZSBpcyBhbiBlbXB0eSB0ZXh0IG5vZGVcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uYmxvY2tOb2RlICYmXG4gICAgICAgICAgY2xvc2VzdEJsb2NrRWxlbS5ibG9ja05vZGUuZ2V0VHlwZSgpID09PSAncGFyYWdyYXBoJyAmJlxuICAgICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uYmxvY2tOb2RlLmdldFRleHRDb250ZW50KCkgPT09ICcnXG4gICAgICAgICkge1xuICAgICAgICAgIGlmICghZnV6enkpIHtcbiAgICAgICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uYmxvY2tFbGVtID0gbnVsbFxuICAgICAgICAgICAgY2xvc2VzdEJsb2NrRWxlbS5ibG9ja05vZGUgPSBudWxsXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2xvc2VzdEJsb2NrRWxlbS5pc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9IGVsc2UgaWYgKGZ1enp5KSB7XG4gICAgICAgIGlmIChkaXN0YW5jZSA8IGNsb3Nlc3RCbG9ja0VsZW0uZGlzdGFuY2UpIHtcbiAgICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmJsb2NrRWxlbSA9IGVsZW1cbiAgICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmJsb2NrTm9kZSA9ICRnZXROb2RlQnlLZXkoa2V5KVxuICAgICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uZGlzdGFuY2UgPSBkaXN0YW5jZVxuICAgICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uZm91bmRBdEluZGV4ID0gaW5kZXhcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZGlyZWN0aW9uID09PSBJbmRldGVybWluYXRlKSB7XG4gICAgICAgIGlmIChpc09uVG9wU2lkZSkge1xuICAgICAgICAgIGRpcmVjdGlvbiA9IFVwd2FyZFxuICAgICAgICB9IGVsc2UgaWYgKGlzT25Cb3R0b21TaWRlKSB7XG4gICAgICAgICAgZGlyZWN0aW9uID0gRG93bndhcmRcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBzdG9wIHNlYXJjaCBibG9jayBlbGVtZW50XG4gICAgICAgICAgZGlyZWN0aW9uID0gSW5maW5pdHlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpbmRleCArPSBkaXJlY3Rpb25cbiAgICB9XG4gIH0pXG5cbiAgLy8gU3RvcmUgaW4gY2FjaGUgYmVmb3JlIHJldHVybmluZ1xuICBjYWNoZS5wcm9wcyA9IHByb3BzXG4gIGNhY2hlLnJlc3VsdCA9IHtcbiAgICBibG9ja0VsZW06IGNsb3Nlc3RCbG9ja0VsZW0uYmxvY2tFbGVtLFxuICAgIGJsb2NrTm9kZTogY2xvc2VzdEJsb2NrRWxlbS5ibG9ja05vZGUsXG4gICAgZm91bmRBdEluZGV4OiBjbG9zZXN0QmxvY2tFbGVtLmZvdW5kQXRJbmRleCxcbiAgICBpc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoOiBjbG9zZXN0QmxvY2tFbGVtLmlzRm91bmROb2RlRW1wdHlQYXJhZ3JhcGgsXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGJsb2NrRWxlbTogY2xvc2VzdEJsb2NrRWxlbS5ibG9ja0VsZW0sXG4gICAgYmxvY2tOb2RlOiBjbG9zZXN0QmxvY2tFbGVtLmJsb2NrTm9kZSxcbiAgICBmb3VuZEF0SW5kZXg6IGNsb3Nlc3RCbG9ja0VsZW0uZm91bmRBdEluZGV4LFxuICAgIGlzRm91bmROb2RlRW1wdHlQYXJhZ3JhcGg6IGNsb3Nlc3RCbG9ja0VsZW0uaXNGb3VuZE5vZGVFbXB0eVBhcmFncmFwaCxcbiAgfVxufVxuIl0sIm5hbWVzIjpbImdldE5vZGVDbG9zZVRvUG9pbnQiLCJEb3dud2FyZCIsIlVwd2FyZCIsIkluZGV0ZXJtaW5hdGUiLCJjYWNoZSIsInByb3BzIiwicmVzdWx0IiwiaXNQb2ludENsb3NlIiwicHJldmlvdXMiLCJjdXJyZW50IiwidGhyZXNob2xkIiwiZHgiLCJ4IiwiZHkiLCJ5IiwiYW5jaG9yRWxlbSIsImNhY2hlX3RyZXNob2xkIiwiZWRpdG9yIiwiZnV6enkiLCJob3Jpem9udGFsT2Zmc2V0IiwicG9pbnQiLCJzdGFydEluZGV4IiwidXNlRWRnZUFzRGVmYXVsdCIsInZlcmJvc2UiLCJhbmNob3JFbGVtZW50UmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInRvcExldmVsTm9kZUtleXMiLCJnZXRUb3BMZXZlbE5vZGVLZXlzIiwiY2xvc2VzdEJsb2NrRWxlbSIsImJsb2NrRWxlbSIsImJsb2NrTm9kZSIsImRpc3RhbmNlIiwiSW5maW5pdHkiLCJmb3VuZEF0SW5kZXgiLCJpc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoIiwiZ2V0RWRpdG9yU3RhdGUiLCJyZWFkIiwiZmlyc3ROb2RlIiwibGFzdE5vZGUiLCJnZXRFbGVtZW50QnlLZXkiLCJsZW5ndGgiLCJmaXJzdE5vZGVSZWN0IiwibGFzdE5vZGVSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybSIsInRvcCIsIiRnZXROb2RlQnlLZXkiLCJib3R0b20iLCJpbmRleCIsImRpcmVjdGlvbiIsImtleSIsImVsZW0iLCJQb2ludCIsImRvbVJlY3QiLCJSZWN0IiwiZnJvbURPTVJlY3QiLCJtYXJnaW5Cb3R0b20iLCJtYXJnaW5Ub3AiLCJnZXRDb2xsYXBzZWRNYXJnaW5zIiwicmVjdCIsImdlbmVyYXRlTmV3UmVjdCIsImxlZnQiLCJyaWdodCIsImlzT25Cb3R0b21TaWRlIiwiaXNPblRvcFNpZGUiLCJkaXN0YW5jZUZyb21Qb2ludCIsImdldFR5cGUiLCJnZXRUZXh0Q29udGVudCJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFrRGdCQTs7O2VBQUFBOzs7eUJBaERjO3VCQUVSO3NCQUNEO3FDQUNlO3FDQUNBO2lEQUNrQjtBQUV0RCxhQUFhO0FBQ2IsTUFBTUMsV0FBVztBQUNqQixNQUFNQyxTQUFTLENBQUM7QUFDaEIsTUFBTUMsZ0JBQWdCO0FBMEJ0QixNQUFNQyxRQUFRO0lBQ1pDLE9BQU87SUFDUEMsUUFBUTtBQUNWO0FBRUEsU0FBU0MsYUFBYUMsUUFBZSxFQUFFQyxPQUFjLEVBQUVDLFlBQW9CLEVBQUU7SUFDM0UsTUFBTUMsS0FBS0gsU0FBU0ksQ0FBQyxHQUFHSCxRQUFRRyxDQUFDO0lBQ2pDLE1BQU1DLEtBQUtMLFNBQVNNLENBQUMsR0FBR0wsUUFBUUssQ0FBQztJQUNqQyxPQUFPSCxLQUFLQSxLQUFLRSxLQUFLQSxNQUFNSCxZQUFZQTtBQUMxQztBQUVPLFNBQVNWLG9CQUFvQkssS0FBWTtJQUM5QyxNQUFNLEVBQ0pVLFVBQVUsRUFDVkMsaUJBQWlCLEVBQUUsRUFDbkJDLE1BQU0sRUFDTkMsUUFBUSxLQUFLLEVBQ2JDLG1CQUFtQixDQUFDLEVBQ3BCQyxPQUFPLEVBQUVSLENBQUMsRUFBRUUsQ0FBQyxFQUFFLEVBQ2ZPLGFBQWEsQ0FBQyxFQUNkQyxtQkFBbUIsS0FBSyxFQUN4QkMsVUFBVSxLQUFLLEVBQ2hCLEdBQUdsQjtJQUVKLFlBQVk7SUFDWixJQUNFVyxpQkFBaUIsS0FDakJaLE1BQU1DLEtBQUssSUFDWEQsTUFBTUUsTUFBTSxJQUNaRixNQUFNQyxLQUFLLENBQUNhLEtBQUssS0FBS2IsTUFBTWEsS0FBSyxJQUNqQ2QsTUFBTUMsS0FBSyxDQUFDYyxnQkFBZ0IsS0FBS2QsTUFBTWMsZ0JBQWdCLElBQ3ZEZixNQUFNQyxLQUFLLENBQUNpQixnQkFBZ0IsS0FBS2pCLE1BQU1pQixnQkFBZ0IsSUFDdkRmLGFBQWFILE1BQU1DLEtBQUssQ0FB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
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9EcmFnZ2FibGVCbG9ja1BsdWdpbi9nZXROb2RlQ2xvc2VUb1BvaW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTGV4aWNhbEVkaXRvciwgTGV4aWNhbE5vZGUgfSBmcm9tICdsZXhpY2FsJ1xuXG5pbXBvcnQgeyAkZ2V0Tm9kZUJ5S2V5IH0gZnJvbSAnbGV4aWNhbCdcblxuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9wb2ludCdcbmltcG9ydCB7IFJlY3QgfSBmcm9tICcuLi8uLi8uLi91dGlscy9yZWN0J1xuaW1wb3J0IHsgZ2V0Q29sbGFwc2VkTWFyZ2lucyB9IGZyb20gJy4uL3V0aWxzL2dldENvbGxhcHNlZE1hcmdpbnMnXG5pbXBvcnQgeyBnZXRUb3BMZXZlbE5vZGVLZXlzIH0gZnJvbSAnLi4vdXRpbHMvZ2V0VG9wTGV2ZWxOb2RlS2V5cydcbmltcG9ydCB7IGdldEJvdW5kaW5nQ2xpZW50UmVjdFdpdGhvdXRUcmFuc2Zvcm0gfSBmcm9tICcuL2dldEJvdW5kaW5nUmVjdFdpdGhvdXRUcmFuc2Zvcm0nXG5cbi8vIERpcmVjdGlvbnNcbmNvbnN0IERvd253YXJkID0gMVxuY29uc3QgVXB3YXJkID0gLTFcbmNvbnN0IEluZGV0ZXJtaW5hdGUgPSAwXG5cbnR5cGUgUHJvcHMgPSB7XG4gIGFuY2hvckVsZW06IEhUTUxFbGVtZW50XG4gIGNhY2hlX3RyZXNob2xkPzogbnVtYmVyXG4gIGVkaXRvcjogTGV4aWNhbEVkaXRvclxuICAvKiogZnV6enkgbWFrZXMgdGhlIHNlYXJjaCBub3QgZXhhY3QuIElmIG5vIGV4YWN0IG1hdGNoIGZvdW5kLCBmaW5kIHRoZSBjbG9zZXMgbm9kZSBpbnN0ZWFkIG9mIHJldHVybmluZyBudWxsICovXG4gIGZ1enp5PzogYm9vbGVhblxuICBob3Jpem9udGFsT2Zmc2V0PzogbnVtYmVyXG4gIHBvaW50OiBQb2ludFxuICAvKipcbiAgICogVGhlIGluZGV4IHRvIHN0YXJ0IHNlYXJjaGluZyBmcm9tLiBJdCBjYW4gYmUgYSBjb25zaWRlcmFibGUgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIHRvIHN0YXJ0IHNlYXJjaGluZyBmcm9tIHRoZSBpbmRleCBvZiB0aGVcbiAgICogcHJldmlvdXNseSBmb3VuZCBub2RlLCBhcyB0aGUgbm9kZSBpcyBsaWtlbHkgdG8gYmUgY2xvc2UgdG8gdGhlIG5leHQgbm9kZS5cbiAgICovXG4gIHN0YXJ0SW5kZXg/OiBudW1iZXJcbiAgdXNlRWRnZUFzRGVmYXVsdD86IGJvb2xlYW5cbiAgdmVyYm9zZT86IGJvb2xlYW5cbn1cblxudHlwZSBPdXRwdXQgPSB7XG4gIGJsb2NrRWxlbTogSFRNTEVsZW1lbnQgfCBudWxsXG4gIGJsb2NrTm9kZTogTGV4aWNhbE5vZGUgfCBudWxsXG4gIGZvdW5kQXRJbmRleDogbnVtYmVyXG4gIGlzRm91bmROb2RlRW1wdHlQYXJhZ3JhcGg6IGJvb2xlYW5cbn1cblxuY29uc3QgY2FjaGUgPSB7XG4gIHByb3BzOiBudWxsIGFzIFByb3BzIHwgbnVsbCxcbiAgcmVzdWx0OiBudWxsIGFzIE91dHB1dCB8IG51bGwsXG59XG5cbmZ1bmN0aW9uIGlzUG9pbnRDbG9zZShwcmV2aW91czogUG9pbnQsIGN1cnJlbnQ6IFBvaW50LCB0aHJlc2hvbGQ6IG51bWJlciA9IDIwKTogYm9vbGVhbiB7XG4gIGNvbnN0IGR4ID0gcHJldmlvdXMueCAtIGN1cnJlbnQueFxuICBjb25zdCBkeSA9IHByZXZpb3VzLnkgLSBjdXJyZW50LnlcbiAgcmV0dXJuIGR4ICogZHggKyBkeSAqIGR5IDw9IHRocmVzaG9sZCAqIHRocmVzaG9sZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Tm9kZUNsb3NlVG9Qb2ludChwcm9wczogUHJvcHMpOiBPdXRwdXQge1xuICBjb25zdCB7XG4gICAgYW5jaG9yRWxlbSxcbiAgICBjYWNoZV90cmVzaG9sZCA9IDIwLFxuICAgIGVkaXRvcixcbiAgICBmdXp6eSA9IGZhbHNlLFxuICAgIGhvcml6b250YWxPZmZzZXQgPSAwLFxuICAgIHBvaW50OiB7IHgsIHkgfSxcbiAgICBzdGFydEluZGV4ID0gMCxcbiAgICB1c2VFZGdlQXNEZWZhdWx0ID0gZmFsc2UsXG4gICAgdmVyYm9zZSA9IGZhbHNlLFxuICB9ID0gcHJvcHNcblxuICAvLyBVc2UgY2FjaGVcbiAgaWYgKFxuICAgIGNhY2hlX3RyZXNob2xkID4gMCAmJlxuICAgIGNhY2hlLnByb3BzICYmXG4gICAgY2FjaGUucmVzdWx0ICYmXG4gICAgY2FjaGUucHJvcHMuZnV6enkgPT09IHByb3BzLmZ1enp5ICYmXG4gICAgY2FjaGUucHJvcHMuaG9yaXpvbnRhbE9mZnNldCA9PT0gcHJvcHMuaG9yaXpvbnRhbE9mZnNldCAmJlxuICAgIGNhY2hlLnByb3BzLnVzZUVkZ2VBc0RlZmF1bHQgPT09IHByb3BzLnVzZUVkZ2VBc0RlZmF1bHQgJiZcbiAgICBpc1BvaW50Q2xvc2UoY2FjaGUucHJvcHMucG9pbnQsIHByb3BzLnBvaW50LCBjYWNoZV90cmVzaG9sZClcbiAgKSB7XG4gICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgIC8vY29uc29sZS5sb2coJ1JldHVybmluZyBjYWNoZWQgcmVzdWx0JylcbiAgICB9XG4gICAgcmV0dXJuIGNhY2hlLnJlc3VsdFxuICB9XG5cbiAgY29uc3QgYW5jaG9yRWxlbWVudFJlY3QgPSBhbmNob3JFbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gIGNvbnN0IHRvcExldmVsTm9kZUtleXMgPSBnZXRUb3BMZXZlbE5vZGVLZXlzKGVkaXRvcilcblxuICBjb25zdCBjbG9zZXN0QmxvY2tFbGVtOiB7XG4gICAgYmxvY2tFbGVtOiBIVE1MRWxlbWVudCB8IG51bGxcbiAgICBibG9ja05vZGU6IExleGljYWxOb2RlIHwgbnVsbFxuICAgIGRpc3RhbmNlOiBudW1iZXJcbiAgICBmb3VuZEF0SW5kZXg6IG51bWJlclxuICAgIGlzRm91bmROb2RlRW1wdHlQYXJhZ3JhcGg6IGJvb2xlYW5cbiAgfSA9IHtcbiAgICBibG9ja0VsZW06IG51bGwsXG4gICAgYmxvY2tOb2RlOiBudWxsLFxuICAgIGRpc3RhbmNlOiBJbmZpbml0eSxcbiAgICBmb3VuZEF0SW5kZXg6IC0xLFxuICAgIGlzRm91bmROb2RlRW1wdHlQYXJhZ3JhcGg6IGZhbHNlLFxuICB9XG5cbiAgLy8gUmV0dXJuIG51bGwgaWYgbWF0Y2hpbmcgYmxvY2sgZWxlbWVudCBpcyB0aGUgZmlyc3Qgb3IgbGFzdCBub2RlXG4gIGVkaXRvci5nZXRFZGl0b3JTdGF0ZSgpLnJlYWQoKCkgPT4ge1xuICAgIGlmICh1c2VFZGdlQXNEZWZhdWx0KSB7XG4gICAgICBjb25zdCBbZmlyc3ROb2RlLCBsYXN0Tm9kZV0gPSBbXG4gICAgICAgIGVkaXRvci5nZXRFbGVtZW50QnlLZXkodG9wTGV2ZWxOb2RlS2V5c1swXSksXG4gICAgICAgIGVkaXRvci5nZXRFbGVtZW50QnlLZXkodG9wTGV2ZWxOb2RlS2V5c1t0b3BMZXZlbE5vZGVLZXlzLmxlbmd0aCAtIDFdKSxcbiAgICAgIF1cblxuICAgICAgY29uc3QgW2ZpcnN0Tm9kZVJlY3QsIGxhc3ROb2RlUmVjdF0gPSBbXG4gICAgICAgIGdldEJvdW5kaW5nQ2xpZW50UmVjdFdpdGhvdXRUcmFuc2Zvcm0oZmlyc3ROb2RlKSxcbiAgICAgICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybShsYXN0Tm9kZSksXG4gICAgICBdXG5cbiAgICAgIGlmIChmaXJzdE5vZGVSZWN0ICYmIGxhc3ROb2RlUmVjdCkge1xuICAgICAgICBpZiAoeSA8IGZpcnN0Tm9kZVJlY3QudG9wKSB7XG4gICAgICAgICAgY2xvc2VzdEJsb2NrRWxlbS5ibG9ja0VsZW0gPSBmaXJzdE5vZGVcbiAgICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmRpc3RhbmNlID0gZmlyc3ROb2RlUmVjdC50b3AgLSB5XG4gICAgICAgICAgY2xvc2VzdEJsb2NrRWxlbS5ibG9ja05vZGUgPSAkZ2V0Tm9kZUJ5S2V5KHRvcExldmVsTm9kZUtleXNbMF0pXG4gICAgICAgICAgY2xvc2VzdEJsb2NrRWxlbS5mb3VuZEF0SW5kZXggPSAwXG4gICAgICAgIH0gZWxzZSBpZiAoeSA+IGxhc3ROb2RlUmVjdC5ib3R0b20pIHtcbiAgICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmRpc3RhbmNlID0geSAtIGxhc3ROb2RlUmVjdC5ib3R0b21cbiAgICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmJsb2NrTm9kZSA9ICRnZXROb2RlQnlLZXkodG9wTGV2ZWxOb2RlS2V5c1t0b3BMZXZlbE5vZGVLZXlzLmxlbmd0aCAtIDFdKVxuICAgICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uYmxvY2tFbGVtID0gbGFzdE5vZGVcbiAgICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmZvdW5kQXRJbmRleCA9IHRvcExldmVsTm9kZUtleXMubGVuZ3RoIC0gMVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNsb3Nlc3RCbG9ja0VsZW0/LmJsb2NrRWxlbSkge1xuICAgICAgICAgIGlmICh2ZXJib3NlKSB7XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKCd1c2VFZGdlQXNEZWZhdWx0JywgdXNlRWRnZUFzRGVmYXVsdClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYmxvY2tFbGVtOiBudWxsLFxuICAgICAgICAgICAgaXNGb3VuZE5vZGVFbXB0eVBhcmFncmFwaDogZmFsc2UsXG4gICAgICAgICAgfSBhcyBPdXRwdXRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZpbmQgbWF0Y2hpbmcgYmxvY2sgZWxlbWVudFxuICAgIGxldCBpbmRleCA9IHN0YXJ0SW5kZXhcbiAgICBsZXQgZGlyZWN0aW9uID0gSW5kZXRlcm1pbmF0ZVxuXG4gICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgIC8vY29uc29sZS5sb2coJ3N0YXJ0IGluZGV4Jywgc3RhcnRJbmRleClcbiAgICB9XG5cbiAgICB3aGlsZSAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRvcExldmVsTm9kZUtleXMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBrZXkgPSB0b3BMZXZlbE5vZGVLZXlzW2luZGV4XVxuICAgICAgY29uc3QgZWxlbSA9IGVkaXRvci5nZXRFbGVtZW50QnlLZXkoa2V5KVxuICAgICAgaWYgKGVsZW0gPT09IG51bGwpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBvaW50ID0gbmV3IFBvaW50KHggKyBob3Jpem9udGFsT2Zmc2V0LCB5KVxuICAgICAgLy9jb25zdCBkb21SZWN0ID0gUmVjdC5mcm9tRE9NKGVsZW0pXG4gICAgICAvLyBEbyBub3QgY29uc2lkZXIgdHJhbnNmb3JtIG9mIGJsb2NrcyB3aGVuIGNhbGN1bGF0aW5nIGRpc3RhbmNlXG4gICAgICBjb25zdCBkb21SZWN0ID0gUmVjdC5mcm9tRE9NUmVjdChnZXRCb3VuZGluZ0NsaWVudFJlY3RXaXRob3V0VHJhbnNmb3JtKGVsZW0pKVxuXG4gICAgICBjb25zdCB7IG1hcmdpbkJvdHRvbSwgbWFyZ2luVG9wIH0gPSBnZXRDb2xsYXBzZWRNYXJnaW5zKGVsZW0pXG5cbiAgICAgIGNvbnN0IHJlY3QgPSBkb21SZWN0LmdlbmVyYXRlTmV3UmVjdCh7XG4gICAgICAgIGJvdHRvbTogZG9tUmVjdC5ib3R0b20gKyBtYXJnaW5Cb3R0b20sXG4gICAgICAgIGxlZnQ6IGFuY2hvckVsZW1lbnRSZWN0LmxlZnQsXG4gICAgICAgIHJpZ2h0OiBhbmNob3JFbGVtZW50UmVjdC5yaWdodCxcbiAgICAgICAgdG9wOiBkb21SZWN0LnRvcCAtIG1hcmdpblRvcCxcbiAgICAgIH0pXG5cbiAgICAgIGNvbnN0IHsgZGlzdGFuY2UsIGlzT25Cb3R0b21TaWRlLCBpc09uVG9wU2lkZSB9ID0gcmVjdC5kaXN0YW5jZUZyb21Qb2ludChwb2ludClcblxuICAgICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgICAgLy9jb25zb2xlLmxvZygnZGlzdGFuY2UnLCBkaXN0YW5jZSlcbiAgICAgIH1cblxuICAgICAgaWYgKGRpc3RhbmNlID09PSAwKSB7XG4gICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uYmxvY2tFbGVtID0gZWxlbVxuICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmJsb2NrTm9kZSA9ICRnZXROb2RlQnlLZXkoa2V5KVxuICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmZvdW5kQXRJbmRleCA9IGluZGV4XG4gICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uZGlzdGFuY2UgPSBkaXN0YW5jZVxuXG4gICAgICAgIC8vIENoZWNrIGlmIGJsb2NrTm9kZSBpcyBhbiBlbXB0eSB0ZXh0IG5vZGVcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uYmxvY2tOb2RlICYmXG4gICAgICAgICAgY2xvc2VzdEJsb2NrRWxlbS5ibG9ja05vZGUuZ2V0VHlwZSgpID09PSAncGFyYWdyYXBoJyAmJlxuICAgICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uYmxvY2tOb2RlLmdldFRleHRDb250ZW50KCkgPT09ICcnXG4gICAgICAgICkge1xuICAgICAgICAgIGlmICghZnV6enkpIHtcbiAgICAgICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uYmxvY2tFbGVtID0gbnVsbFxuICAgICAgICAgICAgY2xvc2VzdEJsb2NrRWxlbS5ibG9ja05vZGUgPSBudWxsXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2xvc2VzdEJsb2NrRWxlbS5pc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9IGVsc2UgaWYgKGZ1enp5KSB7XG4gICAgICAgIGlmIChkaXN0YW5jZSA8IGNsb3Nlc3RCbG9ja0VsZW0uZGlzdGFuY2UpIHtcbiAgICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmJsb2NrRWxlbSA9IGVsZW1cbiAgICAgICAgICBjbG9zZXN0QmxvY2tFbGVtLmJsb2NrTm9kZSA9ICRnZXROb2RlQnlLZXkoa2V5KVxuICAgICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uZGlzdGFuY2UgPSBkaXN0YW5jZVxuICAgICAgICAgIGNsb3Nlc3RCbG9ja0VsZW0uZm91bmRBdEluZGV4ID0gaW5kZXhcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZGlyZWN0aW9uID09PSBJbmRldGVybWluYXRlKSB7XG4gICAgICAgIGlmIChpc09uVG9wU2lkZSkge1xuICAgICAgICAgIGRpcmVjdGlvbiA9IFVwd2FyZFxuICAgICAgICB9IGVsc2UgaWYgKGlzT25Cb3R0b21TaWRlKSB7XG4gICAgICAgICAgZGlyZWN0aW9uID0gRG93bndhcmRcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBzdG9wIHNlYXJjaCBibG9jayBlbGVtZW50XG4gICAgICAgICAgZGlyZWN0aW9uID0gSW5maW5pdHlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpbmRleCArPSBkaXJlY3Rpb25cbiAgICB9XG4gIH0pXG5cbiAgLy8gU3RvcmUgaW4gY2FjaGUgYmVmb3JlIHJldHVybmluZ1xuICBjYWNoZS5wcm9wcyA9IHByb3BzXG4gIGNhY2hlLnJlc3VsdCA9IHtcbiAgICBibG9ja0VsZW06IGNsb3Nlc3RCbG9ja0VsZW0uYmxvY2tFbGVtLFxuICAgIGJsb2NrTm9kZTogY2xvc2VzdEJsb2NrRWxlbS5ibG9ja05vZGUsXG4gICAgZm91bmRBdEluZGV4OiBjbG9zZXN0QmxvY2tFbGVtLmZvdW5kQXRJbmRleCxcbiAgICBpc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoOiBjbG9zZXN0QmxvY2tFbGVtLmlzRm91bmROb2RlRW1wdHlQYXJhZ3JhcGgsXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGJsb2NrRWxlbTogY2xvc2VzdEJsb2NrRWxlbS5ibG9ja0VsZW0sXG4gICAgYmxvY2tOb2RlOiBjbG9zZXN0QmxvY2tFbGVtLmJsb2NrTm9kZSxcbiAgICBmb3VuZEF0SW5kZXg6IGNsb3Nlc3RCbG9ja0VsZW0uZm91bmRBdEluZGV4LFxuICAgIGlzRm91bmROb2RlRW1wdHlQYXJhZ3JhcGg6IGNsb3Nlc3RCbG9ja0VsZW0uaXNGb3VuZE5vZGVFbXB0eVBhcmFncmFwaCxcbiAgfVxufVxuIl0sIm5hbWVzIjpbIiRnZXROb2RlQnlLZXkiLCJQb2ludCIsIlJlY3QiLCJnZXRDb2xsYXBzZWRNYXJnaW5zIiwiZ2V0VG9wTGV2ZWxOb2RlS2V5cyIsImdldEJvdW5kaW5nQ2xpZW50UmVjdFdpdGhvdXRUcmFuc2Zvcm0iLCJEb3dud2FyZCIsIlVwd2FyZCIsIkluZGV0ZXJtaW5hdGUiLCJjYWNoZSIsInByb3BzIiwicmVzdWx0IiwiaXNQb2ludENsb3NlIiwicHJldmlvdXMiLCJjdXJyZW50IiwidGhyZXNob2xkIiwiZHgiLCJ4IiwiZHkiLCJ5IiwiZ2V0Tm9kZUNsb3NlVG9Qb2ludCIsImFuY2hvckVsZW0iLCJjYWNoZV90cmVzaG9sZCIsImVkaXRvciIsImZ1enp5IiwiaG9yaXpvbnRhbE9mZnNldCIsInBvaW50Iiwic3RhcnRJbmRleCIsInVzZUVkZ2VBc0RlZmF1bHQiLCJ2ZXJib3NlIiwiYW5jaG9yRWxlbWVudFJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ0b3BMZXZlbE5vZGVLZXlzIiwiY2xvc2VzdEJsb2NrRWxlbSIsImJsb2NrRWxlbSIsImJsb2NrTm9kZSIsImRpc3RhbmNlIiwiSW5maW5pdHkiLCJmb3VuZEF0SW5kZXgiLCJpc0ZvdW5kTm9kZUVtcHR5UGFyYWdyYXBoIiwiZ2V0RWRpdG9yU3RhdGUiLCJyZWFkIiwiZmlyc3ROb2RlIiwibGFzdE5vZGUiLCJnZXRFbGVtZW50QnlLZXkiLCJsZW5ndGgiLCJmaXJzdE5vZGVSZWN0IiwibGFzdE5vZGVSZWN0IiwidG9wIiwiYm90dG9tIiwiaW5kZXgiLCJkaXJlY3Rpb24iLCJrZXkiLCJlbGVtIiwiZG9tUmVjdCIsImZyb21ET01SZWN0IiwibWFyZ2luQm90dG9tIiwibWFyZ2luVG9wIiwicmVjdCIsImdlbmVyYXRlTmV3UmVjdCIsImxlZnQiLCJyaWdodCIsImlzT25Cb3R0b21TaWRlIiwiaXNPblRvcFNpZGUiLCJkaXN0YW5jZUZyb21Qb2ludCIsImdldFR5cGUiLCJnZXRUZXh0Q29udGVudCJdLCJtYXBwaW5ncyI6IkFBRUEsU0FBU0EsYUFBYSxRQUFRLFVBQVM7QUFFdkMsU0FBU0MsS0FBSyxRQUFRLHVCQUFzQjtBQUM1QyxTQUFTQyxJQUFJLFFBQVEsc0JBQXFCO0FBQzFDLFNBQVNDLG1CQUFtQixRQUFRLCtCQUE4QjtBQUNsRSxTQUFTQyxtQkFBbUIsUUFBUSwrQkFBOEI7QUFDbEUsU0FBU0MscUNBQXFDLFFBQVEsb0NBQW1DO0FBRXpGLGFBQWE7QUFDYixNQUFNQyxXQUFXO0FBQ2pCLE1BQU1DLFNBQVMsQ0FBQztBQUNoQixNQUFNQyxnQkFBZ0I7QUEwQnRCLE1BQU1DLFFBQVE7SUFDWkMsT0FBTztJQUNQQyxRQUFRO0FBQ1Y7QUFFQSxTQUFTQyxhQUFhQyxRQUFlLEVBQUVDLE9BQWMsRUFBRUMsWUFBb0IsRUFBRTtJQUMzRSxNQUFNQyxLQUFLSCxTQUFTSSxDQUFDLEdBQUdILFFBQVFHLENBQUM7SUFDakMsTUFBTUMsS0FBS0wsU0FBU00sQ0FBQyxHQUFHTCxRQUFRSyxDQUFDO0lBQ2pDLE9BQU9ILEtBQUtBLEtBQUtFLEtBQUtBLE1BQU1ILFlBQVlBO0FBQzFDO0FBRUEsT0FBTyxTQUFTSyxvQkFBb0JWLEtBQVk7SUFDOUMsTUFBTSxFQUNKVyxVQUFVLEVBQ1ZDLGlCQUFpQixFQUFFLEVBQ25CQyxNQUFNLEVBQ05DLFFBQVEsS0FBSyxFQUNiQyxtQkFBbUIsQ0FBQyxFQUNwQkMsT0FBTyxFQUFFVCxDQUFDLEVBQUVFLENBQUMsRUFBRSxFQUNmUSxhQUFhLENBQUMsRUFDZEMsbUJBQW1CLEtBQUssRUFDeEJDLFVBQVUsS0FBSyxFQUNoQixHQUFHbkI7SUFFSixZQUFZO0lBQ1osSUFDRVksaUJBQWlCLEtBQ2pCYixNQUFNQyxLQUFLLElBQ1hELE1BQU1FLE1BQU0sSUFDWkYsTUFBTUMsS0FBSyxDQUFDYyxLQUFLLEtBQUtkLE1BQU1jLEtBQUssSUFDakNmLE1B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
@@ -1,22 +1,12 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "highlightElemOriginalPosition", {
6
- enumerable: true,
7
- get: function() {
8
- return highlightElemOriginalPosition;
9
- }
10
- });
11
- const _getBoundingRectWithoutTransform = require("./getBoundingRectWithoutTransform");
12
- function highlightElemOriginalPosition(debugHighlightRef, htmlElem, anchorElem) {
1
+ import { getBoundingClientRectWithoutTransform } from './getBoundingRectWithoutTransform';
2
+ export function highlightElemOriginalPosition(debugHighlightRef, htmlElem, anchorElem) {
13
3
  if (!debugHighlightRef.current) {
14
4
  // If the ref doesn't point to an existing element, we can't set styles
15
5
  return;
16
6
  }
17
7
  const { left: anchorLeft, top: anchorTop } = anchorElem.getBoundingClientRect();
18
8
  // Get computed styles of the given element
19
- const boundingRect = (0, _getBoundingRectWithoutTransform.getBoundingClientRectWithoutTransform)(htmlElem);
9
+ const boundingRect = getBoundingClientRectWithoutTransform(htmlElem);
20
10
  // Extract necessary styles (ignoring transform)
21
11
  const width = boundingRect.width;
22
12
  const height = boundingRect.height;
@@ -34,4 +24,4 @@ function highlightElemOriginalPosition(debugHighlightRef, htmlElem, anchorElem)
34
24
  debugHighlightRef.current.style.opacity = '0.5';
35
25
  }
36
26
 
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9EcmFnZ2FibGVCbG9ja1BsdWdpbi9oaWdobGlnaHRFbGVtT3JpZ2luYWxQb3NpdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBSZWFjdCBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybSB9IGZyb20gJy4vZ2V0Qm91bmRpbmdSZWN0V2l0aG91dFRyYW5zZm9ybSdcblxuZXhwb3J0IGZ1bmN0aW9uIGhpZ2hsaWdodEVsZW1PcmlnaW5hbFBvc2l0aW9uKFxuICBkZWJ1Z0hpZ2hsaWdodFJlZjogUmVhY3QuUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PixcbiAgaHRtbEVsZW06IEhUTUxFbGVtZW50LFxuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudCxcbikge1xuICBpZiAoIWRlYnVnSGlnaGxpZ2h0UmVmLmN1cnJlbnQpIHtcbiAgICAvLyBJZiB0aGUgcmVmIGRvZXNuJ3QgcG9pbnQgdG8gYW4gZXhpc3RpbmcgZWxlbWVudCwgd2UgY2FuJ3Qgc2V0IHN0eWxlc1xuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgeyBsZWZ0OiBhbmNob3JMZWZ0LCB0b3A6IGFuY2hvclRvcCB9ID0gYW5jaG9yRWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuXG4gIC8vIEdldCBjb21wdXRlZCBzdHlsZXMgb2YgdGhlIGdpdmVuIGVsZW1lbnRcbiAgY29uc3QgYm91bmRpbmdSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybShodG1sRWxlbSlcblxuICAvLyBFeHRyYWN0IG5lY2Vzc2FyeSBzdHlsZXMgKGlnbm9yaW5nIHRyYW5zZm9ybSlcbiAgY29uc3Qgd2lkdGggPSBib3VuZGluZ1JlY3Qud2lkdGhcbiAgY29uc3QgaGVpZ2h0ID0gYm91bmRpbmdSZWN0LmhlaWdodFxuICBjb25zdCB0b3AgPSBib3VuZGluZ1JlY3QudG9wIC0gYW5jaG9yVG9wXG4gIGNvbnN0IGxlZnQgPSBib3VuZGluZ1JlY3QubGVmdCAtIGFuY2hvckxlZnRcblxuICBkZWJ1Z0hpZ2hsaWdodFJlZi5jdXJyZW50LnN0eWxlLmJvcmRlciA9ICcycHggc29saWQgZ3JlZW4nXG4gIGRlYnVnSGlnaGxpZ2h0UmVmLmN1cnJlbnQuc3R5bGUuYm94U2l6aW5nID0gJ2JvcmRlci1ib3gnXG4gIGRlYnVnSGlnaGxpZ2h0UmVmLmN1cnJlbnQuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgJ3B4J1xuICBkZWJ1Z0hpZ2hsaWdodFJlZi5jdXJyZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSdcbiAgZGVidWdIaWdobGlnaHRSZWYuY3VycmVudC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSdcbiAgZGVidWdIaWdobGlnaHRSZWYuY3VycmVudC5zdHlsZS50b3AgPSB0b3AgKyAncHgnXG4gIGRlYnVnSGlnaGxpZ2h0UmVmLmN1cnJlbnQuc3R5bGUubGVmdCA9IGxlZnQgKyAncHgnXG4gIGRlYnVnSGlnaGxpZ2h0UmVmLmN1cnJlbnQuc3R5bGUud2lkdGggPSB3aWR0aCArICdweCdcbiAgZGVidWdIaWdobGlnaHRSZWYuY3VycmVudC5zdHlsZS56SW5kZXggPSAnMTAwMCdcbiAgZGVidWdIaWdobGlnaHRSZWYuY3VycmVudC5zdHlsZS5vcGFjaXR5ID0gJzAuNSdcbn1cbiJdLCJuYW1lcyI6WyJoaWdobGlnaHRFbGVtT3JpZ2luYWxQb3NpdGlvbiIsImRlYnVnSGlnaGxpZ2h0UmVmIiwiaHRtbEVsZW0iLCJhbmNob3JFbGVtIiwiY3VycmVudCIsImxlZnQiLCJhbmNob3JMZWZ0IiwidG9wIiwiYW5jaG9yVG9wIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiYm91bmRpbmdSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybSIsIndpZHRoIiwiaGVpZ2h0Iiwic3R5bGUiLCJib3JkZXIiLCJib3hTaXppbmciLCJwb2ludGVyRXZlbnRzIiwicG9zaXRpb24iLCJ6SW5kZXgiLCJvcGFjaXR5Il0sIm1hcHBpbmdzIjoiOzs7OytCQUlnQkE7OztlQUFBQTs7O2lEQUZzQztBQUUvQyxTQUFTQSw4QkFDZEMsaUJBQWtELEVBQ2xEQyxRQUFxQixFQUNyQkMsVUFBdUI7SUFFdkIsSUFBSSxDQUFDRixrQkFBa0JHLE9BQU8sRUFBRTtRQUM5Qix1RUFBdUU7UUFDdkU7SUFDRjtJQUVBLE1BQU0sRUFBRUMsTUFBTUMsVUFBVSxFQUFFQyxLQUFLQyxTQUFTLEVBQUUsR0FBR0wsV0FBV00scUJBQXFCO0lBRTdFLDJDQUEyQztJQUMzQyxNQUFNQyxlQUFlQyxJQUFBQSxzRUFBcUMsRUFBQ1Q7SUFFM0QsZ0RBQWdEO0lBQ2hELE1BQU1VLFFBQVFGLGFBQWFFLEtBQUs7SUFDaEMsTUFBTUMsU0FBU0gsYUFBYUcsTUFBTTtJQUNsQyxNQUFNTixNQUFNRyxhQUFhSCxHQUFHLEdBQUdDO0lBQy9CLE1BQU1ILE9BQU9LLGFBQWFMLElBQUksR0FBR0M7SUFFakNMLGtCQUFrQkcsT0FBTyxDQUFDVSxLQUFLLENBQUNDLE1BQU0sR0FBRztJQUN6Q2Qsa0JBQWtCRyxPQUFPLENBQUNVLEtBQUssQ0FBQ0UsU0FBUyxHQUFHO0lBQzVDZixrQkFBa0JHLE9BQU8sQ0FBQ1UsS0FBSyxDQUFDRCxNQUFNLEdBQUdBLFNBQVM7SUFDbERaLGtCQUFrQkcsT0FBTyxDQUFDVSxLQUFLLENBQUNHLGFBQWEsR0FBRztJQUNoRGhCLGtCQUFrQkcsT0FBTyxDQUFDVSxLQUFLLENBQUNJLFFBQVEsR0FBRztJQUMzQ2pCLGtCQUFrQkcsT0FBTyxDQUFDVSxLQUFLLENBQUNQLEdBQUcsR0FBR0EsTUFBTTtJQUM1Q04sa0JBQWtCRyxPQUFPLENBQUNVLEtBQUssQ0FBQ1QsSUFBSSxHQUFHQSxPQUFPO0lBQzlDSixrQkFBa0JHLE9BQU8sQ0FBQ1UsS0FBSyxDQUFDRixLQUFLLEdBQUdBLFFBQVE7SUFDaERYLGtCQUFrQkcsT0FBTyxDQUFDVSxLQUFLLENBQUNLLE1BQU0sR0FBRztJQUN6Q2xCLGtCQUFrQkcsT0FBTyxDQUFDVSxLQUFLLENBQUNNLE9BQU8sR0FBRztBQUM1QyJ9
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvaGFuZGxlcy9EcmFnZ2FibGVCbG9ja1BsdWdpbi9oaWdobGlnaHRFbGVtT3JpZ2luYWxQb3NpdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBSZWFjdCBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybSB9IGZyb20gJy4vZ2V0Qm91bmRpbmdSZWN0V2l0aG91dFRyYW5zZm9ybSdcblxuZXhwb3J0IGZ1bmN0aW9uIGhpZ2hsaWdodEVsZW1PcmlnaW5hbFBvc2l0aW9uKFxuICBkZWJ1Z0hpZ2hsaWdodFJlZjogUmVhY3QuUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PixcbiAgaHRtbEVsZW06IEhUTUxFbGVtZW50LFxuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudCxcbikge1xuICBpZiAoIWRlYnVnSGlnaGxpZ2h0UmVmLmN1cnJlbnQpIHtcbiAgICAvLyBJZiB0aGUgcmVmIGRvZXNuJ3QgcG9pbnQgdG8gYW4gZXhpc3RpbmcgZWxlbWVudCwgd2UgY2FuJ3Qgc2V0IHN0eWxlc1xuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgeyBsZWZ0OiBhbmNob3JMZWZ0LCB0b3A6IGFuY2hvclRvcCB9ID0gYW5jaG9yRWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuXG4gIC8vIEdldCBjb21wdXRlZCBzdHlsZXMgb2YgdGhlIGdpdmVuIGVsZW1lbnRcbiAgY29uc3QgYm91bmRpbmdSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0V2l0aG91dFRyYW5zZm9ybShodG1sRWxlbSlcblxuICAvLyBFeHRyYWN0IG5lY2Vzc2FyeSBzdHlsZXMgKGlnbm9yaW5nIHRyYW5zZm9ybSlcbiAgY29uc3Qgd2lkdGggPSBib3VuZGluZ1JlY3Qud2lkdGhcbiAgY29uc3QgaGVpZ2h0ID0gYm91bmRpbmdSZWN0LmhlaWdodFxuICBjb25zdCB0b3AgPSBib3VuZGluZ1JlY3QudG9wIC0gYW5jaG9yVG9wXG4gIGNvbnN0IGxlZnQgPSBib3VuZGluZ1JlY3QubGVmdCAtIGFuY2hvckxlZnRcblxuICBkZWJ1Z0hpZ2hsaWdodFJlZi5jdXJyZW50LnN0eWxlLmJvcmRlciA9ICcycHggc29saWQgZ3JlZW4nXG4gIGRlYnVnSGlnaGxpZ2h0UmVmLmN1cnJlbnQuc3R5bGUuYm94U2l6aW5nID0gJ2JvcmRlci1ib3gnXG4gIGRlYnVnSGlnaGxpZ2h0UmVmLmN1cnJlbnQuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgJ3B4J1xuICBkZWJ1Z0hpZ2hsaWdodFJlZi5jdXJyZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSdcbiAgZGVidWdIaWdobGlnaHRSZWYuY3VycmVudC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSdcbiAgZGVidWdIaWdobGlnaHRSZWYuY3VycmVudC5zdHlsZS50b3AgPSB0b3AgKyAncHgnXG4gIGRlYnVnSGlnaGxpZ2h0UmVmLmN1cnJlbnQuc3R5bGUubGVmdCA9IGxlZnQgKyAncHgnXG4gIGRlYnVnSGlnaGxpZ2h0UmVmLmN1cnJlbnQuc3R5bGUud2lkdGggPSB3aWR0aCArICdweCdcbiAgZGVidWdIaWdobGlnaHRSZWYuY3VycmVudC5zdHlsZS56SW5kZXggPSAnMTAwMCdcbiAgZGVidWdIaWdobGlnaHRSZWYuY3VycmVudC5zdHlsZS5vcGFjaXR5ID0gJzAuNSdcbn1cbiJdLCJuYW1lcyI6WyJnZXRCb3VuZGluZ0NsaWVudFJlY3RXaXRob3V0VHJhbnNmb3JtIiwiaGlnaGxpZ2h0RWxlbU9yaWdpbmFsUG9zaXRpb24iLCJkZWJ1Z0hpZ2hsaWdodFJlZiIsImh0bWxFbGVtIiwiYW5jaG9yRWxlbSIsImN1cnJlbnQiLCJsZWZ0IiwiYW5jaG9yTGVmdCIsInRvcCIsImFuY2hvclRvcCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImJvdW5kaW5nUmVjdCIsIndpZHRoIiwiaGVpZ2h0Iiwic3R5bGUiLCJib3JkZXIiLCJib3hTaXppbmciLCJwb2ludGVyRXZlbnRzIiwicG9zaXRpb24iLCJ6SW5kZXgiLCJvcGFjaXR5Il0sIm1hcHBpbmdzIjoiQUFFQSxTQUFTQSxxQ0FBcUMsUUFBUSxvQ0FBbUM7QUFFekYsT0FBTyxTQUFTQyw4QkFDZEMsaUJBQWtELEVBQ2xEQyxRQUFxQixFQUNyQkMsVUFBdUI7SUFFdkIsSUFBSSxDQUFDRixrQkFBa0JHLE9BQU8sRUFBRTtRQUM5Qix1RUFBdUU7UUFDdkU7SUFDRjtJQUVBLE1BQU0sRUFBRUMsTUFBTUMsVUFBVSxFQUFFQyxLQUFLQyxTQUFTLEVBQUUsR0FBR0wsV0FBV00scUJBQXFCO0lBRTdFLDJDQUEyQztJQUMzQyxNQUFNQyxlQUFlWCxzQ0FBc0NHO0lBRTNELGdEQUFnRDtJQUNoRCxNQUFNUyxRQUFRRCxhQUFhQyxLQUFLO0lBQ2hDLE1BQU1DLFNBQVNGLGFBQWFFLE1BQU07SUFDbEMsTUFBTUwsTUFBTUcsYUFBYUgsR0FBRyxHQUFHQztJQUMvQixNQUFNSCxPQUFPSyxhQUFhTCxJQUFJLEdBQUdDO0lBRWpDTCxrQkFBa0JHLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDQyxNQUFNLEdBQUc7SUFDekNiLGtCQUFrQkcsT0FBTyxDQUFDUyxLQUFLLENBQUNFLFNBQVMsR0FBRztJQUM1Q2Qsa0JBQWtCRyxPQUFPLENBQUNTLEtBQUssQ0FBQ0QsTUFBTSxHQUFHQSxTQUFTO0lBQ2xEWCxrQkFBa0JHLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDRyxhQUFhLEdBQUc7SUFDaERmLGtCQUFrQkcsT0FBTyxDQUFDUyxLQUFLLENBQUNJLFFBQVEsR0FBRztJQUMzQ2hCLGtCQUFrQkcsT0FBTyxDQUFDUyxLQUFLLENBQUNOLEdBQUcsR0FBR0EsTUFBTTtJQUM1Q04sa0JBQWtCRyxPQUFPLENBQUNTLEtBQUssQ0FBQ1IsSUFBSSxHQUFHQSxPQUFPO0lBQzlDSixrQkFBa0JHLE9BQU8sQ0FBQ1MsS0FBSyxDQUFDRixLQUFLLEdBQUdBLFFBQVE7SUFDaERWLGtCQUFrQkcsT0FBTyxDQUFDUyxLQUFLLENBQUNLLE1BQU0sR0FBRztJQUN6Q2pCLGtCQUFrQkcsT0FBTyxDQUFDUyxLQUFLLENBQUNNLE9BQU8sR0FBRztBQUM1QyJ9