@payloadcms/richtext-lexical 0.1.4 → 0.1.6

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 (52) hide show
  1. package/dist/cell/index.d.ts +1 -1
  2. package/dist/cell/index.d.ts.map +1 -1
  3. package/dist/cell/index.js +1 -1
  4. package/dist/field/Field.js +2 -1
  5. package/dist/field/features/Blocks/validate.d.ts.map +1 -1
  6. package/dist/field/features/Blocks/validate.js +3 -1
  7. package/dist/field/features/Heading/index.js +2 -2
  8. package/dist/field/features/Heading/markdownTransformer.d.ts +2 -1
  9. package/dist/field/features/Heading/markdownTransformer.d.ts.map +1 -1
  10. package/dist/field/features/Heading/markdownTransformer.js +25 -18
  11. package/dist/field/features/Link/plugins/floatingLinkEditor/LinkEditor/index.d.ts.map +1 -1
  12. package/dist/field/features/Link/plugins/floatingLinkEditor/LinkEditor/index.js +2 -4
  13. package/dist/field/features/Link/plugins/floatingLinkEditor/index.scss +0 -1
  14. package/dist/field/features/types.d.ts +1 -1
  15. package/dist/field/features/types.d.ts.map +1 -1
  16. package/dist/field/index.scss +6 -0
  17. package/dist/field/lexical/LexicalEditor.d.ts.map +1 -1
  18. package/dist/field/lexical/LexicalEditor.js +6 -2
  19. package/dist/field/lexical/LexicalProvider.d.ts.map +1 -1
  20. package/dist/field/lexical/LexicalProvider.js +7 -1
  21. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/DropDown.d.ts.map +1 -1
  22. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/DropDown.js +6 -1
  23. package/dist/field/lexical/plugins/FloatingSelectToolbar/index.d.ts.map +1 -1
  24. package/dist/field/lexical/plugins/FloatingSelectToolbar/index.js +27 -12
  25. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts +1 -1
  26. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts.map +1 -1
  27. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +16 -9
  28. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts +2 -1
  29. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts.map +1 -1
  30. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js +3 -3
  31. package/dist/field/lexical/plugins/SlashMenu/index.d.ts +3 -1
  32. package/dist/field/lexical/plugins/SlashMenu/index.d.ts.map +1 -1
  33. package/dist/field/lexical/plugins/SlashMenu/index.js +3 -2
  34. package/dist/field/lexical/plugins/SlashMenu/index.scss +2 -0
  35. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.d.ts.map +1 -1
  36. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.js +1 -4
  37. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.scss +8 -1
  38. package/dist/field/lexical/ui/ContentEditable.scss +1 -1
  39. package/dist/field/lexical/utils/markdown/createBlockNode.d.ts.map +1 -1
  40. package/dist/field/lexical/utils/markdown/createBlockNode.js +6 -4
  41. package/dist/index.d.ts +2 -1
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +2 -2
  44. package/dist/populate/populate.d.ts +2 -1
  45. package/dist/populate/populate.d.ts.map +1 -1
  46. package/dist/populate/populate.js +1 -1
  47. package/dist/populate/richTextRelationshipPromise.d.ts +3 -3
  48. package/dist/populate/richTextRelationshipPromise.d.ts.map +1 -1
  49. package/dist/populate/richTextRelationshipPromise.js +1 -1
  50. package/dist/types.d.ts +2 -1
  51. package/dist/types.d.ts.map +1 -1
  52. package/package.json +3 -3
@@ -150,6 +150,11 @@ function DropDownItem({ children, entry, title }) {
150
150
  });
151
151
  }
152
152
  },
153
+ onMouseDown: (e)=>{
154
+ // This is required for Firefox compatibility. Without it, the dropdown will disappear without the onClick being called.
155
+ // This only happens in Firefox. Must be something about how Firefox handles focus events differently.
156
+ e.preventDefault();
157
+ },
153
158
  ref: ref,
154
159
  title: title,
155
160
  type: "button"
@@ -286,4 +291,4 @@ function DropDown({ Icon, buttonAriaLabel, buttonClassName, children, disabled =
286
291
  }, children), document.body));
287
292
  }
288
293
 
289
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvRmxvYXRpbmdTZWxlY3RUb29sYmFyL1Rvb2xiYXJEcm9wZG93bi9Ecm9wRG93bi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCB9IGZyb20gJ0BsZXhpY2FsL3JlYWN0L0xleGljYWxDb21wb3NlckNvbnRleHQnXG5pbXBvcnQgeyBtZXJnZVJlZ2lzdGVyIH0gZnJvbSAnQGxleGljYWwvdXRpbHMnXG5pbXBvcnQgeyAkZ2V0U2VsZWN0aW9uIH0gZnJvbSAnbGV4aWNhbCdcbmltcG9ydCB7IHR5cGUgUmVhY3ROb2RlLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSdcblxuaW1wb3J0IHR5cGUgeyBGbG9hdGluZ1Rvb2xiYXJTZWN0aW9uRW50cnkgfSBmcm9tICcuLi90eXBlcydcblxuaW50ZXJmYWNlIERyb3BEb3duQ29udGV4dFR5cGUge1xuICByZWdpc3Rlckl0ZW06IChyZWY6IFJlYWN0LlJlZk9iamVjdDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHZvaWRcbn1cblxuY29uc3QgRHJvcERvd25Db250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dDxEcm9wRG93bkNvbnRleHRUeXBlIHwgbnVsbD4obnVsbClcblxuZXhwb3J0IGZ1bmN0aW9uIERyb3BEb3duSXRlbSh7XG4gIGNoaWxkcmVuLFxuICBlbnRyeSxcbiAgdGl0bGUsXG59OiB7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGVcbiAgZW50cnk6IEZsb2F0aW5nVG9vbGJhclNlY3Rpb25FbnRyeVxuICB0aXRsZT86IHN0cmluZ1xufSk6IEpTWC5FbGVtZW50IHtcbiAgY29uc3QgW2VkaXRvcl0gPSB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0KClcbiAgY29uc3QgW2VuYWJsZWQsIHNldEVuYWJsZWRdID0gdXNlU3RhdGU8Ym9vbGVhbj4odHJ1ZSlcbiAgY29uc3QgW2FjdGl2ZSwgc2V0QWN0aXZlXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKVxuICBjb25zdCBbY2xhc3NOYW1lLCBzZXRDbGFzc05hbWVdID0gdXNlU3RhdGU8c3RyaW5nPignaXRlbScpXG5cbiAgY29uc3QgdXBkYXRlU3RhdGVzID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGVkaXRvci5nZXRFZGl0b3JTdGF0ZSgpLnJlYWQoKCkgPT4ge1xuICAgICAgY29uc3Qgc2VsZWN0aW9uID0gJGdldFNlbGVjdGlvbigpXG4gICAgICBpZiAoZW50cnkuaXNBY3RpdmUpIHtcbiAgICAgICAgY29uc3QgaXNBY3RpdmUgPSBlbnRyeS5pc0FjdGl2ZSh7IGVkaXRvciwgc2VsZWN0aW9uIH0pXG4gICAgICAgIGlmIChhY3RpdmUgIT09IGlzQWN0aXZlKSB7XG4gICAgICAgICAgc2V0QWN0aXZlKGlzQWN0aXZlKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZW50cnkuaXNFbmFibGVkKSB7XG4gICAgICAgIGNvbnN0IGlzRW5hYmxlZCA9IGVudHJ5LmlzRW5hYmxlZCh7IGVkaXRvciwgc2VsZWN0aW9uIH0pXG4gICAgICAgIGlmIChlbmFibGVkICE9PSBpc0VuYWJsZWQpIHtcbiAgICAgICAgICBzZXRFbmFibGVkKGlzRW5hYmxlZClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gIH0sIFthY3RpdmUsIGVkaXRvciwgZW5hYmxlZCwgZW50cnldKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgdXBkYXRlU3RhdGVzKClcbiAgfSwgW3VwZGF0ZVN0YXRlc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdXBkYXRlU3RhdGVzKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdXBkYXRlU3RhdGVzKVxuICAgIH1cbiAgfSwgW3VwZGF0ZVN0YXRlc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gbWVyZ2VSZWdpc3RlcihcbiAgICAgIGVkaXRvci5yZWdpc3RlclVwZGF0ZUxpc3RlbmVyKCgpID0+IHtcbiAgICAgICAgdXBkYXRlU3RhdGVzKClcbiAgICAgIH0pLFxuICAgIClcbiAgfSwgW2VkaXRvciwgdXBkYXRlU3RhdGVzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldENsYXNzTmFtZShcbiAgICAgIFsnaXRlbScsIGVuYWJsZWQgPT09IGZhbHNlID8gJ2Rpc2FibGVkJyA6ICcnLCBhY3RpdmUgPyAnYWN0aXZlJyA6ICcnXVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgIC5qb2luKCcgJyksXG4gICAgKVxuICB9LCBbZW5hYmxlZCwgYWN0aXZlLCBjbGFzc05hbWVdKVxuXG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxIVE1MQnV0dG9uRWxlbWVudD4obnVsbClcblxuICBjb25zdCBkcm9wRG93bkNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KERyb3BEb3duQ29udGV4dClcblxuICBpZiAoZHJvcERvd25Db250ZXh0ID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdEcm9wRG93bkl0ZW0gbXVzdCBiZSB1c2VkIHdpdGhpbiBhIERyb3BEb3duJylcbiAgfVxuXG4gIGNvbnN0IHsgcmVnaXN0ZXJJdGVtIH0gPSBkcm9wRG93bkNvbnRleHRcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZWY/LmN1cnJlbnQgIT0gbnVsbCkge1xuICAgICAgcmVnaXN0ZXJJdGVtKHJlZilcbiAgICB9XG4gIH0sIFtyZWYsIHJlZ2lzdGVySXRlbV0pXG5cbiAgcmV0dXJuIChcbiAgICA8YnV0dG9uXG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgaWYgKGVuYWJsZWQgIT09IGZhbHNlKSB7XG4gICAgICAgICAgZW50cnkub25DbGljayh7XG4gICAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgICBpc0FjdGl2ZTogYWN0aXZlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH19XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2J1dHRvbj5cbiAgKVxufVxuXG5mdW5jdGlvbiBEcm9wRG93bkl0ZW1zKHtcbiAgY2hpbGRyZW4sXG4gIGRyb3BEb3duUmVmLFxuICBvbkNsb3NlLFxufToge1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlXG4gIGRyb3BEb3duUmVmOiBSZWFjdC5SZWY8SFRNTERpdkVsZW1lbnQ+XG4gIG9uQ2xvc2U6ICgpID0+IHZvaWRcbn0pOiBKU1guRWxlbWVudCB7XG4gIGNvbnN0IFtpdGVtcywgc2V0SXRlbXNdID0gdXNlU3RhdGU8QXJyYXk8UmVhY3QuUmVmT2JqZWN0PEhUTUxCdXR0b25FbGVtZW50Pj4+KClcbiAgY29uc3QgW2hpZ2hsaWdodGVkSXRlbSwgc2V0SGlnaGxpZ2h0ZWRJdGVtXSA9IHVzZVN0YXRlPFJlYWN0LlJlZk9iamVjdDxIVE1MQnV0dG9uRWxlbWVudD4+KClcblxuICBjb25zdCByZWdpc3Rlckl0ZW0gPSB1c2VDYWxsYmFjayhcbiAgICAoaXRlbVJlZjogUmVhY3QuUmVmT2JqZWN0PEhUTUxCdXR0b25FbGVtZW50PikgPT4ge1xuICAgICAgc2V0SXRlbXMoKHByZXYpID0+IChwcmV2ICE9IG51bGwgPyBbLi4ucHJldiwgaXRlbVJlZl0gOiBbaXRlbVJlZl0pKVxuICAgIH0sXG4gICAgW3NldEl0ZW1zXSxcbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZXZlbnQ6IFJlYWN0LktleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KTogdm9pZCA9PiB7XG4gICAgaWYgKGl0ZW1zID09IG51bGwpIHJldHVyblxuXG4gICAgY29uc3QgeyBrZXkgfSA9IGV2ZW50XG5cbiAgICBpZiAoWydBcnJvd0Rvd24nLCAnQXJyb3dVcCcsICdFc2NhcGUnLCAnVGFiJ10uaW5jbHVkZXMoa2V5KSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIH1cblxuICAgIGlmIChrZXkgPT09ICdFc2NhcGUnIHx8IGtleSA9PT0gJ1RhYicpIHtcbiAgICAgIG9uQ2xvc2UoKVxuICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICAgIHNldEhpZ2hsaWdodGVkSXRlbSgocHJldikgPT4ge1xuICAgICAgICBpZiAocHJldiA9PSBudWxsKSByZXR1cm4gaXRlbXNbMF1cbiAgICAgICAgY29uc3QgaW5kZXggPSBpdGVtcy5pbmRleE9mKHByZXYpIC0gMVxuICAgICAgICByZXR1cm4gaXRlbXNbaW5kZXggPT09IC0xID8gaXRlbXMubGVuZ3RoIC0gMSA6IGluZGV4XVxuICAgICAgfSlcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgIHNldEhpZ2hsaWdodGVkSXRlbSgocHJldikgPT4ge1xuICAgICAgICBpZiAocHJldiA9PSBudWxsKSByZXR1cm4gaXRlbXNbMF1cbiAgICAgICAgcmV0dXJuIGl0ZW1zW2l0ZW1zLmluZGV4T2YocHJldikgKyAxXVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBjb250ZXh0VmFsdWUgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICByZWdpc3Rlckl0ZW0sXG4gICAgfSksXG4gICAgW3JlZ2lzdGVySXRlbV0sXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpdGVtcyAhPSBudWxsICYmIGhpZ2hsaWdodGVkSXRlbSA9PSBudWxsKSB7XG4gICAgICBzZXRIaWdobGlnaHRlZEl0ZW0oaXRlbXNbMF0pXG4gICAgfVxuXG4gICAgaWYgKGhpZ2hsaWdodGVkSXRlbT8uY3VycmVudCAhPSBudWxsKSB7XG4gICAgICBoaWdobGlnaHRlZEl0ZW0uY3VycmVudC5mb2N1cygpXG4gICAgfVxuICB9LCBbaXRlbXMsIGhpZ2hsaWdodGVkSXRlbV0pXG5cbiAgcmV0dXJuIChcbiAgICA8RHJvcERvd25Db250ZXh0LlByb3ZpZGVyIHZhbHVlPXtjb250ZXh0VmFsdWV9PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9XCJmbG9hdGluZy1zZWxlY3QtdG9vbGJhci1wb3B1cF9fZHJvcGRvd24tLWl0ZW1zXCJcbiAgICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3dufVxuICAgICAgICByZWY9e2Ryb3BEb3duUmVmfVxuICAgICAgPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L2Rpdj5cbiAgICA8L0Ryb3BEb3duQ29udGV4dC5Qcm92aWRlcj5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gRHJvcERvd24oe1xuICBJY29uLFxuICBidXR0b25BcmlhTGFiZWwsXG4gIGJ1dHRvbkNsYXNzTmFtZSxcbiAgY2hpbGRyZW4sXG4gIGRpc2FibGVkID0gZmFsc2UsXG4gIHN0b3BDbG9zZU9uQ2xpY2tTZWxmLFxufToge1xuICBJY29uPzogUmVhY3QuRkNcbiAgYnV0dG9uQXJpYUxhYmVsPzogc3RyaW5nXG4gIGJ1dHRvbkNsYXNzTmFtZTogc3RyaW5nXG4gIGNoaWxkcmVuOiBSZWFjdE5vZGVcbiAgZGlzYWJsZWQ/OiBib29sZWFuXG4gIHN0b3BDbG9zZU9uQ2xpY2tTZWxmPzogYm9vbGVhblxufSk6IEpTWC5FbGVtZW50IHtcbiAgY29uc3QgZHJvcERvd25SZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGJ1dHRvblJlZiA9IHVzZVJlZjxIVE1MQnV0dG9uRWxlbWVudD4obnVsbClcbiAgY29uc3QgW3Nob3dEcm9wRG93biwgc2V0U2hvd0Ryb3BEb3duXSA9IHVzZVN0YXRlKGZhbHNlKVxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlID0gKCk6IHZvaWQgPT4ge1xuICAgIHNldFNob3dEcm9wRG93bihmYWxzZSlcbiAgICBpZiAoYnV0dG9uUmVmPy5jdXJyZW50ICE9IG51bGwpIHtcbiAgICAgIGJ1dHRvblJlZi5jdXJyZW50LmZvY3VzKClcbiAgICB9XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGJ1dHRvbiA9IGJ1dHRvblJlZi5jdXJyZW50XG4gICAgY29uc3QgZHJvcERvd24gPSBkcm9wRG93blJlZi5jdXJyZW50XG5cbiAgICBpZiAoc2hvd0Ryb3BEb3duICYmIGJ1dHRvbiAhPT0gbnVsbCAmJiBkcm9wRG93biAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgeyBsZWZ0LCB0b3AgfSA9IGJ1dHRvbi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgY29uc3Qgc2Nyb2xsVG9wT2Zmc2V0ID0gd2luZG93LnBhZ2VZT2Zmc2V0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3BcbiAgICAgIGRyb3BEb3duLnN0eWxlLnRvcCA9IGAke3RvcCArIHNjcm9sbFRvcE9mZnNldCArIGJ1dHRvbi5vZmZzZXRIZWlnaHQgKyA1fXB4YFxuICAgICAgZHJvcERvd24uc3R5bGUubGVmdCA9IGAke01hdGgubWluKGxlZnQgLSA1LCB3aW5kb3cuaW5uZXJXaWR0aCAtIGRyb3BEb3duLm9mZnNldFdpZHRoIC0gMjApfXB4YFxuICAgIH1cbiAgfSwgW2Ryb3BEb3duUmVmLCBidXR0b25SZWYsIHNob3dEcm9wRG93bl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBidXR0b24gPSBidXR0b25SZWYuY3VycmVudFxuXG4gICAgaWYgKGJ1dHRvbiAhPT0gbnVsbCAmJiBzaG93RHJvcERvd24pIHtcbiAgICAgIGNvbnN0IGhhbmRsZSA9IChldmVudDogTW91c2VFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgICBjb25zdCB7IHRhcmdldCB9ID0gZXZlbnRcbiAgICAgICAgaWYgKHN0b3BDbG9zZU9uQ2xpY2tTZWxmICE9IG51bGwpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3ByZWZlci1vcHRpb25hbC1jaGFpblxuICAgICAgICAgIGlmIChkcm9wRG93blJlZi5jdXJyZW50ICE9IG51bGwgJiYgZHJvcERvd25SZWYuY3VycmVudC5jb250YWlucyh0YXJnZXQgYXMgTm9kZSkpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWJ1dHRvbi5jb250YWlucyh0YXJnZXQgYXMgTm9kZSkpIHtcbiAgICAgICAgICBzZXRTaG93RHJvcERvd24oZmFsc2UpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlKVxuXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtkcm9wRG93blJlZiwgYnV0dG9uUmVmLCBzaG93RHJvcERvd24sIHN0b3BDbG9zZU9uQ2xpY2tTZWxmXSlcblxuICByZXR1cm4gKFxuICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgIDxidXR0b25cbiAgICAgICAgYXJpYS1sYWJlbD17YnV0dG9uQXJpYUxhYmVsfVxuICAgICAgICBjbGFzc05hbWU9e2J1dHRvbkNsYXNzTmFtZSArIChzaG93RHJvcERvd24gPyAnIGFjdGl2ZScgOiAnJyl9XG4gICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgb25DbGljaz17KGV2ZW50KSA9PiB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgIHNldFNob3dEcm9wRG93bighc2hvd0Ryb3BEb3duKVxuICAgICAgICB9fVxuICAgICAgICByZWY9e2J1dHRvblJlZn1cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIDxJY29uIC8+XG4gICAgICAgIDxpIGNsYXNzTmFtZT17YCR7YnV0dG9uQ2xhc3NOYW1lfS0tY2FyZXRgfSAvPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIHtzaG93RHJvcERvd24gJiZcbiAgICAgICAgY3JlYXRlUG9ydGFsKFxuICAgICAgICAgIDxEcm9wRG93bkl0ZW1zIGRyb3BEb3duUmVmPXtkcm9wRG93blJlZn0gb25DbG9zZT17aGFuZGxlQ2xvc2V9PlxuICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgIDwvRHJvcERvd25JdGVtcz4sXG4gICAgICAgICAgZG9jdW1lbnQuYm9keSxcbiAgICAgICAgKX1cbiAgICA8L1JlYWN0LkZyYWdtZW50PlxuICApXG59XG4iXSwibmFtZXMiOlsiRHJvcERvd25JdGVtIiwiRHJvcERvd24iLCJEcm9wRG93bkNvbnRleHQiLCJSZWFjdCIsImNyZWF0ZUNvbnRleHQiLCJjaGlsZHJlbiIsImVudHJ5IiwidGl0bGUiLCJlZGl0b3IiLCJ1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IiwiZW5hYmxlZCIsInNldEVuYWJsZWQiLCJ1c2VTdGF0ZSIsImFjdGl2ZSIsInNldEFjdGl2ZSIsImNsYXNzTmFtZSIsInNldENsYXNzTmFtZSIsInVwZGF0ZVN0YXRlcyIsInVzZUNhbGxiYWNrIiwiZ2V0RWRpdG9yU3RhdGUiLCJyZWFkIiwic2VsZWN0aW9uIiwiJGdldFNlbGVjdGlvbiIsImlzQWN0aXZlIiwiaXNFbmFibGVkIiwidXNlRWZmZWN0IiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm1lcmdlUmVnaXN0ZXIiLCJyZWdpc3RlclVwZGF0ZUxpc3RlbmVyIiwiZmlsdGVyIiwiQm9vbGVhbiIsImpvaW4iLCJyZWYiLCJ1c2VSZWYiLCJkcm9wRG93bkNvbnRleHQiLCJ1c2VDb250ZXh0IiwiRXJyb3IiLCJyZWdpc3Rlckl0ZW0iLCJjdXJyZW50IiwiYnV0dG9uIiwib25DbGljayIsInR5cGUiLCJEcm9wRG93bkl0ZW1zIiwiZHJvcERvd25SZWYiLCJvbkNsb3NlIiwiaXRlbXMiLCJzZXRJdGVtcyIsImhpZ2hsaWdodGVkSXRlbSIsInNldEhpZ2hsaWdodGVkSXRlbSIsIml0ZW1SZWYiLCJwcmV2IiwiaGFuZGxlS2V5RG93biIsImV2ZW50Iiwia2V5IiwiaW5jbHVkZXMiLCJwcmV2ZW50RGVmYXVsdCIsImluZGV4IiwiaW5kZXhPZiIsImxlbmd0aCIsImNvbnRleHRWYWx1ZSIsInVzZU1lbW8iLCJmb2N1cyIsIlByb3ZpZGVyIiwidmFsdWUiLCJkaXYiLCJvbktleURvd24iLCJJY29uIiwiYnV0dG9uQXJpYUxhYmVsIiwiYnV0dG9uQ2xhc3NOYW1lIiwiZGlzYWJsZWQiLCJzdG9wQ2xvc2VPbkNsaWNrU2VsZiIsImJ1dHRvblJlZiIsInNob3dEcm9wRG93biIsInNldFNob3dEcm9wRG93biIsImhhbmRsZUNsb3NlIiwiZHJvcERvd24iLCJsZWZ0IiwidG9wIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0Iiwic2Nyb2xsVG9wT2Zmc2V0Iiwid2luZG93IiwicGFnZVlPZmZzZXQiLCJkb2N1bWVudEVsZW1lbnQiLCJzY3JvbGxUb3AiLCJzdHlsZSIsIm9mZnNldEhlaWdodCIsIk1hdGgiLCJtaW4iLCJpbm5lcldpZHRoIiwib2Zmc2V0V2lkdGgiLCJoYW5kbGUiLCJ0YXJnZXQiLCJjb250YWlucyIsIkZyYWdtZW50IiwiYXJpYS1sYWJlbCIsImkiLCJjcmVhdGVQb3J0YWwiLCJib2R5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQWVnQkEsWUFBWTtlQUFaQTs7SUF5S0FDLFFBQVE7ZUFBUkE7Ozt3Q0F4TDBCO3VCQUNaO3lCQUNBOytEQUNvRDswQkFFckQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
294
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvRmxvYXRpbmdTZWxlY3RUb29sYmFyL1Rvb2xiYXJEcm9wZG93bi9Ecm9wRG93bi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCB9IGZyb20gJ0BsZXhpY2FsL3JlYWN0L0xleGljYWxDb21wb3NlckNvbnRleHQnXG5pbXBvcnQgeyBtZXJnZVJlZ2lzdGVyIH0gZnJvbSAnQGxleGljYWwvdXRpbHMnXG5pbXBvcnQgeyAkZ2V0U2VsZWN0aW9uIH0gZnJvbSAnbGV4aWNhbCdcbmltcG9ydCB7IHR5cGUgUmVhY3ROb2RlLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSdcblxuaW1wb3J0IHR5cGUgeyBGbG9hdGluZ1Rvb2xiYXJTZWN0aW9uRW50cnkgfSBmcm9tICcuLi90eXBlcydcblxuaW50ZXJmYWNlIERyb3BEb3duQ29udGV4dFR5cGUge1xuICByZWdpc3Rlckl0ZW06IChyZWY6IFJlYWN0LlJlZk9iamVjdDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHZvaWRcbn1cblxuY29uc3QgRHJvcERvd25Db250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dDxEcm9wRG93bkNvbnRleHRUeXBlIHwgbnVsbD4obnVsbClcblxuZXhwb3J0IGZ1bmN0aW9uIERyb3BEb3duSXRlbSh7XG4gIGNoaWxkcmVuLFxuICBlbnRyeSxcbiAgdGl0bGUsXG59OiB7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGVcbiAgZW50cnk6IEZsb2F0aW5nVG9vbGJhclNlY3Rpb25FbnRyeVxuICB0aXRsZT86IHN0cmluZ1xufSk6IEpTWC5FbGVtZW50IHtcbiAgY29uc3QgW2VkaXRvcl0gPSB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0KClcbiAgY29uc3QgW2VuYWJsZWQsIHNldEVuYWJsZWRdID0gdXNlU3RhdGU8Ym9vbGVhbj4odHJ1ZSlcbiAgY29uc3QgW2FjdGl2ZSwgc2V0QWN0aXZlXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKVxuICBjb25zdCBbY2xhc3NOYW1lLCBzZXRDbGFzc05hbWVdID0gdXNlU3RhdGU8c3RyaW5nPignaXRlbScpXG5cbiAgY29uc3QgdXBkYXRlU3RhdGVzID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGVkaXRvci5nZXRFZGl0b3JTdGF0ZSgpLnJlYWQoKCkgPT4ge1xuICAgICAgY29uc3Qgc2VsZWN0aW9uID0gJGdldFNlbGVjdGlvbigpXG4gICAgICBpZiAoZW50cnkuaXNBY3RpdmUpIHtcbiAgICAgICAgY29uc3QgaXNBY3RpdmUgPSBlbnRyeS5pc0FjdGl2ZSh7IGVkaXRvciwgc2VsZWN0aW9uIH0pXG4gICAgICAgIGlmIChhY3RpdmUgIT09IGlzQWN0aXZlKSB7XG4gICAgICAgICAgc2V0QWN0aXZlKGlzQWN0aXZlKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZW50cnkuaXNFbmFibGVkKSB7XG4gICAgICAgIGNvbnN0IGlzRW5hYmxlZCA9IGVudHJ5LmlzRW5hYmxlZCh7IGVkaXRvciwgc2VsZWN0aW9uIH0pXG4gICAgICAgIGlmIChlbmFibGVkICE9PSBpc0VuYWJsZWQpIHtcbiAgICAgICAgICBzZXRFbmFibGVkKGlzRW5hYmxlZClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gIH0sIFthY3RpdmUsIGVkaXRvciwgZW5hYmxlZCwgZW50cnldKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgdXBkYXRlU3RhdGVzKClcbiAgfSwgW3VwZGF0ZVN0YXRlc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdXBkYXRlU3RhdGVzKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdXBkYXRlU3RhdGVzKVxuICAgIH1cbiAgfSwgW3VwZGF0ZVN0YXRlc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gbWVyZ2VSZWdpc3RlcihcbiAgICAgIGVkaXRvci5yZWdpc3RlclVwZGF0ZUxpc3RlbmVyKCgpID0+IHtcbiAgICAgICAgdXBkYXRlU3RhdGVzKClcbiAgICAgIH0pLFxuICAgIClcbiAgfSwgW2VkaXRvciwgdXBkYXRlU3RhdGVzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldENsYXNzTmFtZShcbiAgICAgIFsnaXRlbScsIGVuYWJsZWQgPT09IGZhbHNlID8gJ2Rpc2FibGVkJyA6ICcnLCBhY3RpdmUgPyAnYWN0aXZlJyA6ICcnXVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgIC5qb2luKCcgJyksXG4gICAgKVxuICB9LCBbZW5hYmxlZCwgYWN0aXZlLCBjbGFzc05hbWVdKVxuXG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxIVE1MQnV0dG9uRWxlbWVudD4obnVsbClcblxuICBjb25zdCBkcm9wRG93bkNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KERyb3BEb3duQ29udGV4dClcblxuICBpZiAoZHJvcERvd25Db250ZXh0ID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdEcm9wRG93bkl0ZW0gbXVzdCBiZSB1c2VkIHdpdGhpbiBhIERyb3BEb3duJylcbiAgfVxuXG4gIGNvbnN0IHsgcmVnaXN0ZXJJdGVtIH0gPSBkcm9wRG93bkNvbnRleHRcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZWY/LmN1cnJlbnQgIT0gbnVsbCkge1xuICAgICAgcmVnaXN0ZXJJdGVtKHJlZilcbiAgICB9XG4gIH0sIFtyZWYsIHJlZ2lzdGVySXRlbV0pXG5cbiAgcmV0dXJuIChcbiAgICA8YnV0dG9uXG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgaWYgKGVuYWJsZWQgIT09IGZhbHNlKSB7XG4gICAgICAgICAgZW50cnkub25DbGljayh7XG4gICAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgICBpc0FjdGl2ZTogYWN0aXZlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH19XG4gICAgICBvbk1vdXNlRG93bj17KGUpID0+IHtcbiAgICAgICAgLy8gVGhpcyBpcyByZXF1aXJlZCBmb3IgRmlyZWZveCBjb21wYXRpYmlsaXR5LiBXaXRob3V0IGl0LCB0aGUgZHJvcGRvd24gd2lsbCBkaXNhcHBlYXIgd2l0aG91dCB0aGUgb25DbGljayBiZWluZyBjYWxsZWQuXG4gICAgICAgIC8vIFRoaXMgb25seSBoYXBwZW5zIGluIEZpcmVmb3guIE11c3QgYmUgc29tZXRoaW5nIGFib3V0IGhvdyBGaXJlZm94IGhhbmRsZXMgZm9jdXMgZXZlbnRzIGRpZmZlcmVudGx5LlxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgIH19XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2J1dHRvbj5cbiAgKVxufVxuXG5mdW5jdGlvbiBEcm9wRG93bkl0ZW1zKHtcbiAgY2hpbGRyZW4sXG4gIGRyb3BEb3duUmVmLFxuICBvbkNsb3NlLFxufToge1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlXG4gIGRyb3BEb3duUmVmOiBSZWFjdC5SZWY8SFRNTERpdkVsZW1lbnQ+XG4gIG9uQ2xvc2U6ICgpID0+IHZvaWRcbn0pOiBKU1guRWxlbWVudCB7XG4gIGNvbnN0IFtpdGVtcywgc2V0SXRlbXNdID0gdXNlU3RhdGU8QXJyYXk8UmVhY3QuUmVmT2JqZWN0PEhUTUxCdXR0b25FbGVtZW50Pj4+KClcbiAgY29uc3QgW2hpZ2hsaWdodGVkSXRlbSwgc2V0SGlnaGxpZ2h0ZWRJdGVtXSA9IHVzZVN0YXRlPFJlYWN0LlJlZk9iamVjdDxIVE1MQnV0dG9uRWxlbWVudD4+KClcblxuICBjb25zdCByZWdpc3Rlckl0ZW0gPSB1c2VDYWxsYmFjayhcbiAgICAoaXRlbVJlZjogUmVhY3QuUmVmT2JqZWN0PEhUTUxCdXR0b25FbGVtZW50PikgPT4ge1xuICAgICAgc2V0SXRlbXMoKHByZXYpID0+IChwcmV2ICE9IG51bGwgPyBbLi4ucHJldiwgaXRlbVJlZl0gOiBbaXRlbVJlZl0pKVxuICAgIH0sXG4gICAgW3NldEl0ZW1zXSxcbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZXZlbnQ6IFJlYWN0LktleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KTogdm9pZCA9PiB7XG4gICAgaWYgKGl0ZW1zID09IG51bGwpIHJldHVyblxuXG4gICAgY29uc3QgeyBrZXkgfSA9IGV2ZW50XG5cbiAgICBpZiAoWydBcnJvd0Rvd24nLCAnQXJyb3dVcCcsICdFc2NhcGUnLCAnVGFiJ10uaW5jbHVkZXMoa2V5KSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIH1cblxuICAgIGlmIChrZXkgPT09ICdFc2NhcGUnIHx8IGtleSA9PT0gJ1RhYicpIHtcbiAgICAgIG9uQ2xvc2UoKVxuICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICAgIHNldEhpZ2hsaWdodGVkSXRlbSgocHJldikgPT4ge1xuICAgICAgICBpZiAocHJldiA9PSBudWxsKSByZXR1cm4gaXRlbXNbMF1cbiAgICAgICAgY29uc3QgaW5kZXggPSBpdGVtcy5pbmRleE9mKHByZXYpIC0gMVxuICAgICAgICByZXR1cm4gaXRlbXNbaW5kZXggPT09IC0xID8gaXRlbXMubGVuZ3RoIC0gMSA6IGluZGV4XVxuICAgICAgfSlcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgIHNldEhpZ2hsaWdodGVkSXRlbSgocHJldikgPT4ge1xuICAgICAgICBpZiAocHJldiA9PSBudWxsKSByZXR1cm4gaXRlbXNbMF1cbiAgICAgICAgcmV0dXJuIGl0ZW1zW2l0ZW1zLmluZGV4T2YocHJldikgKyAxXVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBjb250ZXh0VmFsdWUgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICByZWdpc3Rlckl0ZW0sXG4gICAgfSksXG4gICAgW3JlZ2lzdGVySXRlbV0sXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpdGVtcyAhPSBudWxsICYmIGhpZ2hsaWdodGVkSXRlbSA9PSBudWxsKSB7XG4gICAgICBzZXRIaWdobGlnaHRlZEl0ZW0oaXRlbXNbMF0pXG4gICAgfVxuXG4gICAgaWYgKGhpZ2hsaWdodGVkSXRlbT8uY3VycmVudCAhPSBudWxsKSB7XG4gICAgICBoaWdobGlnaHRlZEl0ZW0uY3VycmVudC5mb2N1cygpXG4gICAgfVxuICB9LCBbaXRlbXMsIGhpZ2hsaWdodGVkSXRlbV0pXG5cbiAgcmV0dXJuIChcbiAgICA8RHJvcERvd25Db250ZXh0LlByb3ZpZGVyIHZhbHVlPXtjb250ZXh0VmFsdWV9PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9XCJmbG9hdGluZy1zZWxlY3QtdG9vbGJhci1wb3B1cF9fZHJvcGRvd24tLWl0ZW1zXCJcbiAgICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3dufVxuICAgICAgICByZWY9e2Ryb3BEb3duUmVmfVxuICAgICAgPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L2Rpdj5cbiAgICA8L0Ryb3BEb3duQ29udGV4dC5Qcm92aWRlcj5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gRHJvcERvd24oe1xuICBJY29uLFxuICBidXR0b25BcmlhTGFiZWwsXG4gIGJ1dHRvbkNsYXNzTmFtZSxcbiAgY2hpbGRyZW4sXG4gIGRpc2FibGVkID0gZmFsc2UsXG4gIHN0b3BDbG9zZU9uQ2xpY2tTZWxmLFxufToge1xuICBJY29uPzogUmVhY3QuRkNcbiAgYnV0dG9uQXJpYUxhYmVsPzogc3RyaW5nXG4gIGJ1dHRvbkNsYXNzTmFtZTogc3RyaW5nXG4gIGNoaWxkcmVuOiBSZWFjdE5vZGVcbiAgZGlzYWJsZWQ/OiBib29sZWFuXG4gIHN0b3BDbG9zZU9uQ2xpY2tTZWxmPzogYm9vbGVhblxufSk6IEpTWC5FbGVtZW50IHtcbiAgY29uc3QgZHJvcERvd25SZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGJ1dHRvblJlZiA9IHVzZVJlZjxIVE1MQnV0dG9uRWxlbWVudD4obnVsbClcbiAgY29uc3QgW3Nob3dEcm9wRG93biwgc2V0U2hvd0Ryb3BEb3duXSA9IHVzZVN0YXRlKGZhbHNlKVxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlID0gKCk6IHZvaWQgPT4ge1xuICAgIHNldFNob3dEcm9wRG93bihmYWxzZSlcbiAgICBpZiAoYnV0dG9uUmVmPy5jdXJyZW50ICE9IG51bGwpIHtcbiAgICAgIGJ1dHRvblJlZi5jdXJyZW50LmZvY3VzKClcbiAgICB9XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGJ1dHRvbiA9IGJ1dHRvblJlZi5jdXJyZW50XG4gICAgY29uc3QgZHJvcERvd24gPSBkcm9wRG93blJlZi5jdXJyZW50XG5cbiAgICBpZiAoc2hvd0Ryb3BEb3duICYmIGJ1dHRvbiAhPT0gbnVsbCAmJiBkcm9wRG93biAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgeyBsZWZ0LCB0b3AgfSA9IGJ1dHRvbi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgY29uc3Qgc2Nyb2xsVG9wT2Zmc2V0ID0gd2luZG93LnBhZ2VZT2Zmc2V0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3BcbiAgICAgIGRyb3BEb3duLnN0eWxlLnRvcCA9IGAke3RvcCArIHNjcm9sbFRvcE9mZnNldCArIGJ1dHRvbi5vZmZzZXRIZWlnaHQgKyA1fXB4YFxuICAgICAgZHJvcERvd24uc3R5bGUubGVmdCA9IGAke01hdGgubWluKGxlZnQgLSA1LCB3aW5kb3cuaW5uZXJXaWR0aCAtIGRyb3BEb3duLm9mZnNldFdpZHRoIC0gMjApfXB4YFxuICAgIH1cbiAgfSwgW2Ryb3BEb3duUmVmLCBidXR0b25SZWYsIHNob3dEcm9wRG93bl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBidXR0b24gPSBidXR0b25SZWYuY3VycmVudFxuXG4gICAgaWYgKGJ1dHRvbiAhPT0gbnVsbCAmJiBzaG93RHJvcERvd24pIHtcbiAgICAgIGNvbnN0IGhhbmRsZSA9IChldmVudDogTW91c2VFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgICBjb25zdCB7IHRhcmdldCB9ID0gZXZlbnRcbiAgICAgICAgaWYgKHN0b3BDbG9zZU9uQ2xpY2tTZWxmICE9IG51bGwpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3ByZWZlci1vcHRpb25hbC1jaGFpblxuICAgICAgICAgIGlmIChkcm9wRG93blJlZi5jdXJyZW50ICE9IG51bGwgJiYgZHJvcERvd25SZWYuY3VycmVudC5jb250YWlucyh0YXJnZXQgYXMgTm9kZSkpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWJ1dHRvbi5jb250YWlucyh0YXJnZXQgYXMgTm9kZSkpIHtcbiAgICAgICAgICBzZXRTaG93RHJvcERvd24oZmFsc2UpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlKVxuXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtkcm9wRG93blJlZiwgYnV0dG9uUmVmLCBzaG93RHJvcERvd24sIHN0b3BDbG9zZU9uQ2xpY2tTZWxmXSlcblxuICByZXR1cm4gKFxuICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgIDxidXR0b25cbiAgICAgICAgYXJpYS1sYWJlbD17YnV0dG9uQXJpYUxhYmVsfVxuICAgICAgICBjbGFzc05hbWU9e2J1dHRvbkNsYXNzTmFtZSArIChzaG93RHJvcERvd24gPyAnIGFjdGl2ZScgOiAnJyl9XG4gICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgb25DbGljaz17KGV2ZW50KSA9PiB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgIHNldFNob3dEcm9wRG93bighc2hvd0Ryb3BEb3duKVxuICAgICAgICB9fVxuICAgICAgICByZWY9e2J1dHRvblJlZn1cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIDxJY29uIC8+XG4gICAgICAgIDxpIGNsYXNzTmFtZT17YCR7YnV0dG9uQ2xhc3NOYW1lfS0tY2FyZXRgfSAvPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIHtzaG93RHJvcERvd24gJiZcbiAgICAgICAgY3JlYXRlUG9ydGFsKFxuICAgICAgICAgIDxEcm9wRG93bkl0ZW1zIGRyb3BEb3duUmVmPXtkcm9wRG93blJlZn0gb25DbG9zZT17aGFuZGxlQ2xvc2V9PlxuICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgIDwvRHJvcERvd25JdGVtcz4sXG4gICAgICAgICAgZG9jdW1lbnQuYm9keSxcbiAgICAgICAgKX1cbiAgICA8L1JlYWN0LkZyYWdtZW50PlxuICApXG59XG4iXSwibmFtZXMiOlsiRHJvcERvd25JdGVtIiwiRHJvcERvd24iLCJEcm9wRG93bkNvbnRleHQiLCJSZWFjdCIsImNyZWF0ZUNvbnRleHQiLCJjaGlsZHJlbiIsImVudHJ5IiwidGl0bGUiLCJlZGl0b3IiLCJ1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IiwiZW5hYmxlZCIsInNldEVuYWJsZWQiLCJ1c2VTdGF0ZSIsImFjdGl2ZSIsInNldEFjdGl2ZSIsImNsYXNzTmFtZSIsInNldENsYXNzTmFtZSIsInVwZGF0ZVN0YXRlcyIsInVzZUNhbGxiYWNrIiwiZ2V0RWRpdG9yU3RhdGUiLCJyZWFkIiwic2VsZWN0aW9uIiwiJGdldFNlbGVjdGlvbiIsImlzQWN0aXZlIiwiaXNFbmFibGVkIiwidXNlRWZmZWN0IiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm1lcmdlUmVnaXN0ZXIiLCJyZWdpc3RlclVwZGF0ZUxpc3RlbmVyIiwiZmlsdGVyIiwiQm9vbGVhbiIsImpvaW4iLCJyZWYiLCJ1c2VSZWYiLCJkcm9wRG93bkNvbnRleHQiLCJ1c2VDb250ZXh0IiwiRXJyb3IiLCJyZWdpc3Rlckl0ZW0iLCJjdXJyZW50IiwiYnV0dG9uIiwib25DbGljayIsIm9uTW91c2VEb3duIiwiZSIsInByZXZlbnREZWZhdWx0IiwidHlwZSIsIkRyb3BEb3duSXRlbXMiLCJkcm9wRG93blJlZiIsIm9uQ2xvc2UiLCJpdGVtcyIsInNldEl0ZW1zIiwiaGlnaGxpZ2h0ZWRJdGVtIiwic2V0SGlnaGxpZ2h0ZWRJdGVtIiwiaXRlbVJlZiIsInByZXYiLCJoYW5kbGVLZXlEb3duIiwiZXZlbnQiLCJrZXkiLCJpbmNsdWRlcyIsImluZGV4IiwiaW5kZXhPZiIsImxlbmd0aCIsImNvbnRleHRWYWx1ZSIsInVzZU1lbW8iLCJmb2N1cyIsIlByb3ZpZGVyIiwidmFsdWUiLCJkaXYiLCJvbktleURvd24iLCJJY29uIiwiYnV0dG9uQXJpYUxhYmVsIiwiYnV0dG9uQ2xhc3NOYW1lIiwiZGlzYWJsZWQiLCJzdG9wQ2xvc2VPbkNsaWNrU2VsZiIsImJ1dHRvblJlZiIsInNob3dEcm9wRG93biIsInNldFNob3dEcm9wRG93biIsImhhbmRsZUNsb3NlIiwiZHJvcERvd24iLCJsZWZ0IiwidG9wIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0Iiwic2Nyb2xsVG9wT2Zmc2V0Iiwid2luZG93IiwicGFnZVlPZmZzZXQiLCJkb2N1bWVudEVsZW1lbnQiLCJzY3JvbGxUb3AiLCJzdHlsZSIsIm9mZnNldEhlaWdodCIsIk1hdGgiLCJtaW4iLCJpbm5lcldpZHRoIiwib2Zmc2V0V2lkdGgiLCJoYW5kbGUiLCJ0YXJnZXQiLCJjb250YWlucyIsIkZyYWdtZW50IiwiYXJpYS1sYWJlbCIsImkiLCJjcmVhdGVQb3J0YWwiLCJib2R5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQWVnQkEsWUFBWTtlQUFaQTs7SUE4S0FDLFFBQVE7ZUFBUkE7Ozt3Q0E3TDBCO3VCQUNaO3lCQUNBOytEQUNvRDswQkFFckQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRN0IsTUFBTUMsZ0NBQWtCQyxPQUFNQyxhQUFhLENBQTZCO0FBRWpFLFNBQVNKLGFBQWEsRUFDM0JLLFFBQVEsRUFDUkMsS0FBSyxFQUNMQyxLQUFLLEVBS047SUFDQyxNQUFNLENBQUNDLE9BQU8sR0FBR0MsSUFBQUEsaURBQXlCO0lBQzFDLE1BQU0sQ0FBQ0MsU0FBU0MsV0FBVyxHQUFHQyxJQUFBQSxlQUFRLEVBQVU7SUFDaEQsTUFBTSxDQUFDQyxRQUFRQyxVQUFVLEdBQUdGLElBQUFBLGVBQVEsRUFBVTtJQUM5QyxNQUFNLENBQUNHLFdBQVdDLGFBQWEsR0FBR0osSUFBQUEsZUFBUSxFQUFTO0lBRW5ELE1BQU1LLGVBQWVDLElBQUFBLGtCQUFXLEVBQUM7UUFDL0JWLE9BQU9XLGNBQWMsR0FBR0MsSUFBSSxDQUFDO1lBQzNCLE1BQU1DLFlBQVlDLElBQUFBLHNCQUFhO1lBQy9CLElBQUloQixNQUFNaUIsUUFBUSxFQUFFO2dCQUNsQixNQUFNQSxXQUFXakIsTUFBTWlCLFFBQVEsQ0FBQztvQkFBRWY7b0JBQVFhO2dCQUFVO2dCQUNwRCxJQUFJUixXQUFXVSxVQUFVO29CQUN2QlQsVUFBVVM7Z0JBQ1o7WUFDRjtZQUNBLElBQUlqQixNQUFNa0IsU0FBUyxFQUFFO2dCQUNuQixNQUFNQSxZQUFZbEIs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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/field/lexical/plugins/FloatingSelectToolbar/index.tsx"],"names":[],"mappings":";AAqBA,OAAO,cAAc,CAAA;AAkQrB,wBAAgB,2BAA2B,CAAC,EAC1C,UAA0B,GAC3B,EAAE;IACD,UAAU,CAAC,EAAE,WAAW,CAAA;CACzB,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAGrB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/field/lexical/plugins/FloatingSelectToolbar/index.tsx"],"names":[],"mappings":";AAoBA,OAAO,cAAc,CAAA;AA+QrB,wBAAgB,2BAA2B,CAAC,EAC1C,UAA0B,GAC3B,EAAE;IACD,UAAU,CAAC,EAAE,WAAW,CAAA;CACzB,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAGrB"}
@@ -62,7 +62,21 @@ function FloatingSelectToolbar({ anchorElem, editor }) {
62
62
  const popupCharStylesEditorRef = (0, _react.useRef)(null);
63
63
  const caretRef = (0, _react.useRef)(null);
64
64
  const { editorConfig } = (0, _EditorConfigProvider.useEditorConfigContext)();
65
- function mouseMoveListener(e) {
65
+ const closeFloatingToolbar = (0, _react.useCallback)(()=>{
66
+ if (popupCharStylesEditorRef?.current) {
67
+ const isOpacityZero = popupCharStylesEditorRef.current.style.opacity === '0';
68
+ const isPointerEventsNone = popupCharStylesEditorRef.current.style.pointerEvents === 'none';
69
+ if (!isOpacityZero) {
70
+ popupCharStylesEditorRef.current.style.opacity = '0';
71
+ }
72
+ if (!isPointerEventsNone) {
73
+ popupCharStylesEditorRef.current.style.pointerEvents = 'none';
74
+ }
75
+ }
76
+ }, [
77
+ popupCharStylesEditorRef
78
+ ]);
79
+ const mouseMoveListener = (0, _react.useCallback)((e)=>{
66
80
  if (popupCharStylesEditorRef?.current && (e.buttons === 1 || e.buttons === 3)) {
67
81
  const isOpacityZero = popupCharStylesEditorRef.current.style.opacity === '0';
68
82
  const isPointerEventsNone = popupCharStylesEditorRef.current.style.pointerEvents === 'none';
@@ -73,17 +87,14 @@ function FloatingSelectToolbar({ anchorElem, editor }) {
73
87
  const elementUnderMouse = document.elementFromPoint(x, y);
74
88
  if (!popupCharStylesEditorRef.current.contains(elementUnderMouse)) {
75
89
  // Mouse is not over the target element => not a normal click, but probably a drag
76
- if (!isOpacityZero) {
77
- popupCharStylesEditorRef.current.style.opacity = '0';
78
- }
79
- if (!isPointerEventsNone) {
80
- popupCharStylesEditorRef.current.style.pointerEvents = 'none';
81
- }
90
+ closeFloatingToolbar();
82
91
  }
83
92
  }
84
93
  }
85
- }
86
- function mouseUpListener(e) {
94
+ }, [
95
+ closeFloatingToolbar
96
+ ]);
97
+ const mouseUpListener = (0, _react.useCallback)(()=>{
87
98
  if (popupCharStylesEditorRef?.current) {
88
99
  if (popupCharStylesEditorRef.current.style.opacity !== '1') {
89
100
  popupCharStylesEditorRef.current.style.opacity = '1';
@@ -92,7 +103,9 @@ function FloatingSelectToolbar({ anchorElem, editor }) {
92
103
  popupCharStylesEditorRef.current.style.pointerEvents = 'auto';
93
104
  }
94
105
  }
95
- }
106
+ }, [
107
+ popupCharStylesEditorRef
108
+ ]);
96
109
  (0, _react.useEffect)(()=>{
97
110
  document.addEventListener('mousemove', mouseMoveListener);
98
111
  document.addEventListener('mouseup', mouseUpListener);
@@ -101,7 +114,9 @@ function FloatingSelectToolbar({ anchorElem, editor }) {
101
114
  document.removeEventListener('mouseup', mouseUpListener);
102
115
  };
103
116
  }, [
104
- popupCharStylesEditorRef
117
+ popupCharStylesEditorRef,
118
+ mouseMoveListener,
119
+ mouseUpListener
105
120
  ]);
106
121
  const updateTextFormatFloatingToolbar = (0, _react.useCallback)(()=>{
107
122
  const selection = (0, _lexical.$getSelection)();
@@ -269,4 +284,4 @@ function FloatingSelectToolbarPlugin({ anchorElem = document.body }) {
269
284
  return useFloatingTextFormatToolbar(editor, anchorElem);
270
285
  }
271
286
 
272
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvRmxvYXRpbmdTZWxlY3RUb29sYmFyL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IExleGljYWxFZGl0b3IgfSBmcm9tICdsZXhpY2FsJ1xuXG5pbXBvcnQgeyB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IH0gZnJvbSAnQGxleGljYWwvcmVhY3QvTGV4aWNhbENvbXBvc2VyQ29udGV4dCdcbmltcG9ydCB7IG1lcmdlUmVnaXN0ZXIgfSBmcm9tICdAbGV4aWNhbC91dGlscydcbmltcG9ydCB7XG4gICRnZXRTZWxlY3Rpb24sXG4gICRpc1JhbmdlU2VsZWN0aW9uLFxuICAkaXNUZXh0Tm9kZSxcbiAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gIFNFTEVDVElPTl9DSEFOR0VfQ09NTUFORCxcbn0gZnJvbSAnbGV4aWNhbCdcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSAncmVhY3QtZG9tJ1xuXG5pbXBvcnQgeyB1c2VFZGl0b3JDb25maWdDb250ZXh0IH0gZnJvbSAnLi4vLi4vY29uZmlnL0VkaXRvckNvbmZpZ1Byb3ZpZGVyJ1xuaW1wb3J0IHsgZ2V0RE9NUmFuZ2VSZWN0IH0gZnJvbSAnLi4vLi4vdXRpbHMvZ2V0RE9NUmFuZ2VSZWN0J1xuaW1wb3J0IHsgZ2V0U2VsZWN0ZWROb2RlIH0gZnJvbSAnLi4vLi4vdXRpbHMvZ2V0U2VsZWN0ZWROb2RlJ1xuaW1wb3J0IHsgc2V0RmxvYXRpbmdFbGVtUG9zaXRpb24gfSBmcm9tICcuLi8uLi91dGlscy9zZXRGbG9hdGluZ0VsZW1Qb3NpdGlvbidcbmltcG9ydCB7IFRvb2xiYXJCdXR0b24gfSBmcm9tICcuL1Rvb2xiYXJCdXR0b24nXG5pbXBvcnQgeyBUb29sYmFyRHJvcGRvd24gfSBmcm9tICcuL1Rvb2xiYXJEcm9wZG93bidcbmltcG9ydCAnLi9pbmRleC5zY3NzJ1xuXG5mdW5jdGlvbiBGbG9hdGluZ1NlbGVjdFRvb2xiYXIoe1xuICBhbmNob3JFbGVtLFxuICBlZGl0b3IsXG59OiB7XG4gIGFuY2hvckVsZW06IEhUTUxFbGVtZW50XG4gIGVkaXRvcjogTGV4aWNhbEVkaXRvclxufSk6IEpTWC5FbGVtZW50IHtcbiAgY29uc3QgcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbClcbiAgY29uc3QgY2FyZXRSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKVxuXG4gIGNvbnN0IHsgZWRpdG9yQ29uZmlnIH0gPSB1c2VFZGl0b3JDb25maWdDb250ZXh0KClcblxuICBmdW5jdGlvbiBtb3VzZU1vdmVMaXN0ZW5lcihlOiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZj8uY3VycmVudCAmJiAoZS5idXR0b25zID09PSAxIHx8IGUuYnV0dG9ucyA9PT0gMykpIHtcbiAgICAgIGNvbnN0IGlzT3BhY2l0eVplcm8gPSBwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5vcGFjaXR5ID09PSAnMCdcbiAgICAgIGNvbnN0IGlzUG9pbnRlckV2ZW50c05vbmUgPSBwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5wb2ludGVyRXZlbnRzID09PSAnbm9uZSdcbiAgICAgIGlmICghaXNPcGFjaXR5WmVybyB8fCAhaXNQb2ludGVyRXZlbnRzTm9uZSkge1xuICAgICAgICAvLyBDaGVjayBpZiB0aGUgbW91c2UgaXMgbm90IG92ZXIgdGhlIHBvcHVwXG4gICAgICAgIGNvbnN0IHggPSBlLmNsaWVudFhcbiAgICAgICAgY29uc3QgeSA9IGUuY2xpZW50WVxuICAgICAgICBjb25zdCBlbGVtZW50VW5kZXJNb3VzZSA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoeCwgeSlcbiAgICAgICAgaWYgKCFwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5jb250YWlucyhlbGVtZW50VW5kZXJNb3VzZSkpIHtcbiAgICAgICAgICAvLyBNb3VzZSBpcyBub3Qgb3ZlciB0aGUgdGFyZ2V0IGVsZW1lbnQgPT4gbm90IGEgbm9ybWFsIGNsaWNrLCBidXQgcHJvYmFibHkgYSBkcmFnXG4gICAgICAgICAgaWYgKCFpc09wYWNpdHlaZXJvKSB7XG4gICAgICAgICAgICBwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5vcGFjaXR5ID0gJzAnXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghaXNQb2ludGVyRXZlbnRzTm9uZSkge1xuICAgICAgICAgICAgcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnQuc3R5bGUucG9pbnRlckV2ZW50cyA9ICdub25lJ1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBtb3VzZVVwTGlzdGVuZXIoZTogTW91c2VFdmVudCkge1xuICAgIGlmIChwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWY/LmN1cnJlbnQpIHtcbiAgICAgIGlmIChwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5vcGFjaXR5ICE9PSAnMScpIHtcbiAgICAgICAgcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnQuc3R5bGUub3BhY2l0eSA9ICcxJ1xuICAgICAgfVxuICAgICAgaWYgKHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgIT09ICdhdXRvJykge1xuICAgICAgICBwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ2F1dG8nXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBtb3VzZU1vdmVMaXN0ZW5lcilcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgbW91c2VVcExpc3RlbmVyKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdXNlTW92ZUxpc3RlbmVyKVxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG1vdXNlVXBMaXN0ZW5lcilcbiAgICB9XG4gIH0sIFtwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWZdKVxuXG4gIGNvbnN0IHVwZGF0ZVRleHRGb3JtYXRGbG9hdGluZ1Rvb2xiYXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gJGdldFNlbGVjdGlvbigpXG5cbiAgICBjb25zdCBwb3B1cENoYXJTdHlsZXNFZGl0b3JFbGVtID0gcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnRcbiAgICBjb25zdCBuYXRpdmVTZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKClcblxuICAgIGlmIChwb3B1cENoYXJTdHlsZXNFZGl0b3JFbGVtID09PSBudWxsKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCByb290RWxlbWVudCA9IGVkaXRvci5nZXRSb290RWxlbWVudCgpXG4gICAgaWYgKFxuICAgICAgc2VsZWN0aW9uICE9PSBudWxsICYmXG4gICAgICBuYXRpdmVTZWxlY3Rpb24gIT09IG51bGwgJiZcbiAgICAgICFuYXRpdmVTZWxlY3Rpb24uaXNDb2xsYXBzZWQgJiZcbiAgICAgIHJvb3RFbGVtZW50ICE9PSBudWxsICYmXG4gICAgICByb290RWxlbWVudC5jb250YWlucyhuYXRpdmVTZWxlY3Rpb24uYW5jaG9yTm9kZSlcbiAgICApIHtcbiAgICAgIGNvbnN0IHJhbmdlUmVjdCA9IGdldERPTVJhbmdlUmVjdChuYXRpdmVTZWxlY3Rpb24sIHJvb3RFbGVtZW50KVxuXG4gICAgICBzZXRGbG9hdGluZ0VsZW1Qb3NpdGlvbihyYW5nZVJlY3QsIHBvcHVwQ2hhclN0eWxlc0VkaXRvckVsZW0sIGFuY2hvckVsZW0sICdjZW50ZXInKVxuXG4gICAgICBpZiAoY2FyZXRSZWYuY3VycmVudCkge1xuICAgICAgICBzZXRGbG9hdGluZ0VsZW1Qb3NpdGlvbihyYW5nZVJlY3QsIGNhcmV0UmVmLmN1cnJlbnQsIHBvcHVwQ2hhclN0eWxlc0VkaXRvckVsZW0sICdjZW50ZXInKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2VkaXRvciwgYW5jaG9yRWxlbV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBzY3JvbGxlckVsZW0gPSBhbmNob3JFbGVtLnBhcmVudEVsZW1lbnRcblxuICAgIGNvbnN0IHVwZGF0ZSA9ICgpID0+IHtcbiAgICAgIGVkaXRvci5nZXRFZGl0b3JTdGF0ZSgpLnJlYWQoKCkgPT4ge1xuICAgICAgICB1cGRhdGVUZXh0Rm9ybWF0RmxvYXRpbmdUb29sYmFyKClcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHVwZGF0ZSlcbiAgICBpZiAoc2Nyb2xsZXJFbGVtKSB7XG4gICAgICBzY3JvbGxlckVsZW0uYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdXBkYXRlKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlKVxuICAgICAgaWYgKHNjcm9sbGVyRWxlbSkge1xuICAgICAgICBzY3JvbGxlckVsZW0ucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdXBkYXRlKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2VkaXRvciwgdXBkYXRlVGV4dEZvcm1hdEZsb2F0aW5nVG9vbGJhciwgYW5jaG9yRWxlbV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBlZGl0b3IuZ2V0RWRpdG9yU3RhdGUoKS5yZWFkKCgpID0+IHtcbiAgICAgIHVwZGF0ZVRleHRGb3JtYXRGbG9hdGluZ1Rvb2xiYXIoKVxuICAgIH0pXG4gICAgcmV0dXJuIG1lcmdlUmVnaXN0ZXIoXG4gICAgICBlZGl0b3IucmVnaXN0ZXJVcGRhdGVMaXN0ZW5lcigoeyBlZGl0b3JTdGF0ZSB9KSA9PiB7XG4gICAgICAgIGVkaXRvclN0YXRlLnJlYWQoKCkgPT4ge1xuICAgICAgICAgIHVwZGF0ZVRleHRGb3JtYXRGbG9hdGluZ1Rvb2xiYXIoKVxuICAgICAgICB9KVxuICAgICAgfSksXG5cbiAgICAgIGVkaXRvci5yZWdpc3RlckNvbW1hbmQoXG4gICAgICAgIFNFTEVDVElPTl9DSEFOR0VfQ09NTUFORCxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHVwZGF0ZVRleHRGb3JtYXRGbG9hdGluZ1Rvb2xiYXIoKVxuICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBDT01NQU5EX1BSSU9SSVRZX0xPVyxcbiAgICAgICksXG4gICAgKVxuICB9LCBbZWRpdG9yLCB1cGRhdGVUZXh0Rm9ybWF0RmxvYXRpbmdUb29sYmFyXSlcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxvYXRpbmctc2VsZWN0LXRvb2xiYXItcG9wdXBcIiByZWY9e3BvcHVwQ2hhclN0eWxlc0VkaXRvclJlZn0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImNhcmV0XCIgcmVmPXtjYXJldFJlZn0gLz5cbiAgICAgIHtlZGl0b3IuaXNFZGl0YWJsZSgpICYmIChcbiAgICAgICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAgICAgIHtlZGl0b3JDb25maWc/LmZlYXR1cmVzICYmXG4gICAgICAgICAgICBlZGl0b3JDb25maWcuZmVhdHVyZXM/LmZsb2F0aW5nU2VsZWN0VG9vbGJhcj8uc2VjdGlvbnMubWFwKChzZWN0aW9uLCBpKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgZmxvYXRpbmctc2VsZWN0LXRvb2xiYXItcG9wdXBfX3NlY3Rpb24gZmxvYXRpbmctc2VsZWN0LXRvb2xiYXItcG9wdXBfX3NlY3Rpb24tJHtzZWN0aW9uLmtleX1gfVxuICAgICAgICAgICAgICAgICAga2V5PXtzZWN0aW9uLmtleX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7c2VjdGlvbi50eXBlID09PSAnZHJvcGRvd24nICYmIHNlY3Rpb24uZW50cmllcy5sZW5ndGggJiYgKFxuICAgICAgICAgICAgICAgICAgICA8VG9vbGJhckRyb3Bkb3duIEljb249e3NlY3Rpb24uQ2hpbGRDb21wb25lbnR9IGVudHJpZXM9e3NlY3Rpb24uZW50cmllc30gLz5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICB7c2VjdGlvbi50eXBlID09PSAnYnV0dG9ucycgJiZcbiAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi5lbnRyaWVzLmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLmVudHJpZXMubWFwKChlbnRyeSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChlbnRyeS5Db21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeS5Db21wb25lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmNob3JFbGVtPXthbmNob3JFbGVtfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRvcj17ZWRpdG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5PXtlbnRyeX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2VudHJ5LmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sYmFyQnV0dG9uIGVudHJ5PXtlbnRyeX0ga2V5PXtlbnRyeS5rZXl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkuQ2hpbGRDb21wb25lbnQgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbGJhckJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAge2kgPCBlZGl0b3JDb25maWcuZmVhdHVyZXMuZmxvYXRpbmdTZWxlY3RUb29sYmFyPy5zZWN0aW9ucy5sZW5ndGggLSAxICYmIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkaXZpZGVyXCIgLz5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pfVxuICAgICAgICA8L1JlYWN0LkZyYWdtZW50PlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKVxufVxuXG5mdW5jdGlvbiB1c2VGbG9hdGluZ1RleHRGb3JtYXRUb29sYmFyKFxuICBlZGl0b3I6IExleGljYWxFZGl0b3IsXG4gIGFuY2hvckVsZW06IEhUTUxFbGVtZW50LFxuKTogSlNYLkVsZW1lbnQgfCBudWxsIHtcbiAgY29uc3QgW2lzVGV4dCwgc2V0SXNUZXh0XSA9IHVzZVN0YXRlKGZhbHNlKVxuXG4gIGNvbnN0IHVwZGF0ZVBvcHVwID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGVkaXRvci5nZXRFZGl0b3JTdGF0ZSgpLnJlYWQoKCkgPT4ge1xuICAgICAgLy8gU2hvdWxkIG5vdCB0byBwb3AgdXAgdGhlIGZsb2F0aW5nIHRvb2xiYXIgd2hlbiB1c2luZyBJTUUgaW5wdXRcbiAgICAgIGlmIChlZGl0b3IuaXNDb21wb3NpbmcoKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGNvbnN0IHNlbGVjdGlvbiA9ICRnZXRTZWxlY3Rpb24oKVxuICAgICAgY29uc3QgbmF0aXZlU2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpXG4gICAgICBjb25zdCByb290RWxlbWVudCA9IGVkaXRvci5nZXRSb290RWxlbWVudCgpXG5cbiAgICAgIGlmIChcbiAgICAgICAgbmF0aXZlU2VsZWN0aW9uICE9PSBudWxsICYmXG4gICAgICAgICghJGlzUmFuZ2VTZWxlY3Rpb24oc2VsZWN0aW9uKSB8fFxuICAgICAgICAgIHJvb3RFbGVtZW50ID09PSBudWxsIHx8XG4gICAgICAgICAgIXJvb3RFbGVtZW50LmNvbnRhaW5zKG5hdGl2ZVNlbGVjdGlvbi5hbmNob3JOb2RlKSlcbiAgICAgICkge1xuICAgICAgICBzZXRJc1RleHQoZmFsc2UpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoISRpc1JhbmdlU2VsZWN0aW9uKHNlbGVjdGlvbikpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChzZWxlY3Rpb24uZ2V0VGV4dENvbnRlbnQoKSAhPT0gJycpIHtcbiAgICAgICAgY29uc3Qgbm9kZXMgPSBzZWxlY3Rpb24uZ2V0Tm9kZXMoKVxuICAgICAgICBsZXQgZm91bmROb2RlV2l0aFRleHQgPSBmYWxzZVxuICAgICAgICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICAgICAgICBpZiAoJGlzVGV4dE5vZGUobm9kZSkpIHtcbiAgICAgICAgICAgIHNldElzVGV4dCh0cnVlKVxuICAgICAgICAgICAgZm91bmROb2RlV2l0aFRleHQgPSB0cnVlXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWZvdW5kTm9kZVdpdGhUZXh0KSB7XG4gICAgICAgICAgc2V0SXNUZXh0KGZhbHNlKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRJc1RleHQoZmFsc2UpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJhd1RleHRDb250ZW50ID0gc2VsZWN0aW9uLmdldFRleHRDb250ZW50KCkucmVwbGFjZSgvXFxuL2csICcnKVxuICAgICAgaWYgKCFzZWxlY3Rpb24uaXNDb2xsYXBzZWQoKSAmJiByYXdUZXh0Q29udGVudCA9PT0gJycpIHtcbiAgICAgICAgc2V0SXNUZXh0KGZhbHNlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9KVxuICB9LCBbZWRpdG9yXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3NlbGVjdGlvbmNoYW5nZScsIHVwZGF0ZVBvcHVwKVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB1cGRhdGVQb3B1cClcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2VsZWN0aW9uY2hhbmdlJywgdXBkYXRlUG9wdXApXG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdXBkYXRlUG9wdXApXG4gICAgfVxuICB9LCBbdXBkYXRlUG9wdXBdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuIG1lcmdlUmVnaXN0ZXIoXG4gICAgICBlZGl0b3IucmVnaXN0ZXJVcGRhdGVMaXN0ZW5lcigoKSA9PiB7XG4gICAgICAgIHVwZGF0ZVBvcHVwKClcbiAgICAgIH0pLFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyUm9vdExpc3RlbmVyKCgpID0+IHtcbiAgICAgICAgaWYgKGVkaXRvci5nZXRSb290RWxlbWVudCgpID09PSBudWxsKSB7XG4gICAgICAgICAgc2V0SXNUZXh0KGZhbHNlKVxuICAgICAgICB9XG4gICAgICB9KSxcbiAgICApXG4gIH0sIFtlZGl0b3IsIHVwZGF0ZVBvcHVwXSlcblxuICBpZiAoIWlzVGV4dCkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICByZXR1cm4gY3JlYXRlUG9ydGFsKDxGbG9hdGluZ1NlbGVjdFRvb2xiYXIgYW5jaG9yRWxlbT17YW5jaG9yRWxlbX0gZWRpdG9yPXtlZGl0b3J9IC8+LCBhbmNob3JFbGVtKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gRmxvYXRpbmdTZWxlY3RUb29sYmFyUGx1Z2luKHtcbiAgYW5jaG9yRWxlbSA9IGRvY3VtZW50LmJvZHksXG59OiB7XG4gIGFuY2hvckVsZW0/OiBIVE1MRWxlbWVudFxufSk6IEpTWC5FbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IFtlZGl0b3JdID0gdXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCgpXG4gIHJldHVybiB1c2VGbG9hdGluZ1RleHRGb3JtYXRUb29sYmFyKGVkaXRvciwgYW5jaG9yRWxlbSlcbn1cbiJdLCJuYW1lcyI6WyJGbG9hdGluZ1NlbGVjdFRvb2xiYXJQbHVnaW4iLCJGbG9hdGluZ1NlbGVjdFRvb2xiYXIiLCJhbmNob3JFbGVtIiwiZWRpdG9yIiwicG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmIiwidXNlUmVmIiwiY2FyZXRSZWYiLCJlZGl0b3JDb25maWciLCJ1c2VFZGl0b3JDb25maWdDb250ZXh0IiwibW91c2VNb3ZlTGlzdGVuZXIiLCJlIiwiY3VycmVudCIsImJ1dHRvbnMiLCJpc09wYWNpdHlaZXJvIiwic3R5bGUiLCJvcGFjaXR5IiwiaXNQb2ludGVyRXZlbnRzTm9uZSIsInBvaW50ZXJFdmVudHMiLCJ4IiwiY2xpZW50WCIsInkiLCJjbGllbnRZIiwiZWxlbWVudFVuZGVyTW91c2UiLCJkb2N1bWVudCIsImVsZW1lbnRGcm9tUG9pbnQiLCJjb250YWlucyIsIm1vdXNlVXBMaXN0ZW5lciIsInVzZUVmZmVjdCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidXBkYXRlVGV4dEZvcm1hdEZsb2F0aW5nVG9vbGJhciIsInVzZUNhbGxiYWNrIiwic2VsZWN0aW9uIiwiJGdldFNlbGVjdGlvbiIsInBvcHVwQ2hhclN0eWxlc0VkaXRvckVsZW0iLCJuYXRpdmVTZWxlY3Rpb24iLCJ3aW5kb3ciLCJnZXRTZWxlY3Rpb24iLCJyb290RWxlbWVudCIsImdldFJvb3RFbGVtZW50IiwiaXNDb2xsYXBzZWQiLCJhbmNob3JOb2RlIiwicmFuZ2VSZWN0IiwiZ2V0RE9NUmFuZ2VSZWN0Iiwic2V0RmxvYXRpbmdFbGVtUG9zaXRpb24iLCJzY3JvbGxlckVsZW0iLCJwYXJlbnRFbGVtZW50IiwidXBkYXRlIiwiZ2V0RWRpdG9yU3RhdGUiLCJyZWFkIiwibWVyZ2VSZWdpc3RlciIsInJlZ2lzdGVyVXBkYXRlTGlzdGVuZXIiLCJlZGl0b3JTdGF0ZSIsInJlZ2lzdGVyQ29tbWFuZCIsIlNFTEVDVElPTl9DSEFOR0VfQ09NTUFORCIsIkNPTU1BTkRfUFJJT1JJVFlfTE9XIiwiZGl2IiwiY2xhc3NOYW1lIiwicmVmIiwiaXNFZGl0YWJsZSIsIlJlYWN0IiwiRnJhZ21lbnQiLCJmZWF0dXJlcyIsImZsb2F0aW5nU2VsZWN0VG9vbGJhciIsInNlY3Rpb25zIiwibWFwIiwic2VjdGlvbiIsImkiLCJrZXkiLCJ0eXBlIiwiZW50cmllcyIsImxlbmd0aCIsIlRvb2xiYXJEcm9wZG93biIsIkljb24iLCJDaGlsZENvbXBvbmVudCIsImVudHJ5IiwiQ29tcG9uZW50IiwiVG9vbGJhckJ1dHRvbiIsInVzZUZsb2F0aW5nVGV4dEZvcm1hdFRvb2xiYXIiLCJpc1RleHQiLCJzZXRJc1RleHQiLCJ1c2VTdGF0ZSIsInVwZGF0ZVBvcHVwIiwiaXNDb21wb3NpbmciLCIkaXNSYW5nZVNlbGVjdGlvbiIsImdldFRleHRDb250ZW50Iiwibm9kZXMiLCJnZXROb2RlcyIsImZvdW5kTm9kZVdpdGhUZXh0Iiwibm9kZSIsIiRpc1RleHROb2RlIiwicmF3VGV4dENvbnRlbnQiLCJyZXBsYWNlIiwicmVnaXN0ZXJSb290TGlzdGVuZXIiLCJjcmVhdGVQb3J0YWwiLCJib2R5IiwidXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCJdLCJtYXBwaW5ncyI6Ijs7OzsrQkF1UmdCQTs7O2VBQUFBOzs7d0NBclIwQjt1QkFDWjt5QkFPdkI7K0RBQ2tEOzBCQUU1QjtzQ0FFVTtpQ0FDUDt5Q0FFUTsrQkFDVjtpQ0FDRTtRQUN6Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVQLFNBQVNDLHNCQUFzQixFQUM3QkMsVUFBVSxFQUNWQyxNQUFNLEVBSVA7SUFDQyxNQUFNQywyQkFBMkJDLElBQUFBLGFBQU0sRUFBd0I7SUFDL0QsTUFBTUMsV0FBV0QsSUFBQUEsYUFBTSxFQUF3QjtJQUUvQyxNQUFNLEVBQUVFLFlBQVksRUFBRSxHQUFHQyxJQUFBQSw0Q0FBc0I7SUFFL0MsU0FBU0Msa0JBQWtCQyxDQUFhO1FBQ3RDLElBQUlOLDBCQUEwQk8sV0FBWUQsQ0FBQUEsRUFBRUUsT0FBTyxLQUFLLEtBQUtGLEVBQUVFLE9BQU8sS0FBSyxDQUFBLEdBQUk7WUFDN0UsTUFBTUMsZ0JBQWdCVCx5QkFBeUJPLE9BQU8sQ0FBQ0csS0FBSyxDQUFDQyxPQUFPLEtBQUs7WUFDekUsTUFBTUMsc0JBQXNCWix5QkFBeUJPLE9BQU8sQ0FBQ0csS0FBSyxDQUFDRyxhQUFhLEtBQUs7WUFDckYsSUFBSSxDQUFDSixpQkFBaUIsQ0FBQ0cscUJBQXFCO2dCQUMxQywyQ0FBMkM7Z0JBQzNDLE1BQU1FLElBQUlSLEVBQUVTLE9BQU87Z0JBQ25CLE1BQU1DLElBQUlWLEVBQUVXLE9BQU87Z0JBQ25CLE1BQU1DLG9CQUFvQkMsU0FBU0MsZ0JBQWdCLENBQUNOLEdBQUdFO2dCQUN2RCxJQUFJLENBQUNoQix5QkFBeUJPLE9BQU8sQ0FBQ2MsUUFBUSxDQUFDSCxvQkFBb0I7b0JBQ2pFLGtGQUFrRjtvQkFDbEYsSUFBSSxDQUFDVCxlQUFlO3dCQUNsQlQseUJBQXlCTyxPQUFPLENBQUNHLEtBQUssQ0FBQ0Ms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
287
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvRmxvYXRpbmdTZWxlY3RUb29sYmFyL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IExleGljYWxFZGl0b3IgfSBmcm9tICdsZXhpY2FsJ1xuXG5pbXBvcnQgeyB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IH0gZnJvbSAnQGxleGljYWwvcmVhY3QvTGV4aWNhbENvbXBvc2VyQ29udGV4dCdcbmltcG9ydCB7IG1lcmdlUmVnaXN0ZXIgfSBmcm9tICdAbGV4aWNhbC91dGlscydcbmltcG9ydCB7XG4gICRnZXRTZWxlY3Rpb24sXG4gICRpc1JhbmdlU2VsZWN0aW9uLFxuICAkaXNUZXh0Tm9kZSxcbiAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gIFNFTEVDVElPTl9DSEFOR0VfQ09NTUFORCxcbn0gZnJvbSAnbGV4aWNhbCdcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSAncmVhY3QtZG9tJ1xuXG5pbXBvcnQgeyB1c2VFZGl0b3JDb25maWdDb250ZXh0IH0gZnJvbSAnLi4vLi4vY29uZmlnL0VkaXRvckNvbmZpZ1Byb3ZpZGVyJ1xuaW1wb3J0IHsgZ2V0RE9NUmFuZ2VSZWN0IH0gZnJvbSAnLi4vLi4vdXRpbHMvZ2V0RE9NUmFuZ2VSZWN0J1xuaW1wb3J0IHsgc2V0RmxvYXRpbmdFbGVtUG9zaXRpb24gfSBmcm9tICcuLi8uLi91dGlscy9zZXRGbG9hdGluZ0VsZW1Qb3NpdGlvbidcbmltcG9ydCB7IFRvb2xiYXJCdXR0b24gfSBmcm9tICcuL1Rvb2xiYXJCdXR0b24nXG5pbXBvcnQgeyBUb29sYmFyRHJvcGRvd24gfSBmcm9tICcuL1Rvb2xiYXJEcm9wZG93bidcbmltcG9ydCAnLi9pbmRleC5zY3NzJ1xuXG5mdW5jdGlvbiBGbG9hdGluZ1NlbGVjdFRvb2xiYXIoe1xuICBhbmNob3JFbGVtLFxuICBlZGl0b3IsXG59OiB7XG4gIGFuY2hvckVsZW06IEhUTUxFbGVtZW50XG4gIGVkaXRvcjogTGV4aWNhbEVkaXRvclxufSk6IEpTWC5FbGVtZW50IHtcbiAgY29uc3QgcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbClcbiAgY29uc3QgY2FyZXRSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKVxuXG4gIGNvbnN0IHsgZWRpdG9yQ29uZmlnIH0gPSB1c2VFZGl0b3JDb25maWdDb250ZXh0KClcblxuICBjb25zdCBjbG9zZUZsb2F0aW5nVG9vbGJhciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAocG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmPy5jdXJyZW50KSB7XG4gICAgICBjb25zdCBpc09wYWNpdHlaZXJvID0gcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnQuc3R5bGUub3BhY2l0eSA9PT0gJzAnXG4gICAgICBjb25zdCBpc1BvaW50ZXJFdmVudHNOb25lID0gcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnQuc3R5bGUucG9pbnRlckV2ZW50cyA9PT0gJ25vbmUnXG5cbiAgICAgIGlmICghaXNPcGFjaXR5WmVybykge1xuICAgICAgICBwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5vcGFjaXR5ID0gJzAnXG4gICAgICB9XG4gICAgICBpZiAoIWlzUG9pbnRlckV2ZW50c05vbmUpIHtcbiAgICAgICAgcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnQuc3R5bGUucG9pbnRlckV2ZW50cyA9ICdub25lJ1xuICAgICAgfVxuICAgIH1cbiAgfSwgW3BvcHVwQ2hhclN0eWxlc0VkaXRvclJlZl0pXG5cbiAgY29uc3QgbW91c2VNb3ZlTGlzdGVuZXIgPSB1c2VDYWxsYmFjayhcbiAgICAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgaWYgKHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZj8uY3VycmVudCAmJiAoZS5idXR0b25zID09PSAxIHx8IGUuYnV0dG9ucyA9PT0gMykpIHtcbiAgICAgICAgY29uc3QgaXNPcGFjaXR5WmVybyA9IHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLm9wYWNpdHkgPT09ICcwJ1xuICAgICAgICBjb25zdCBpc1BvaW50ZXJFdmVudHNOb25lID0gcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnQuc3R5bGUucG9pbnRlckV2ZW50cyA9PT0gJ25vbmUnXG4gICAgICAgIGlmICghaXNPcGFjaXR5WmVybyB8fCAhaXNQb2ludGVyRXZlbnRzTm9uZSkge1xuICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBtb3VzZSBpcyBub3Qgb3ZlciB0aGUgcG9wdXBcbiAgICAgICAgICBjb25zdCB4ID0gZS5jbGllbnRYXG4gICAgICAgICAgY29uc3QgeSA9IGUuY2xpZW50WVxuICAgICAgICAgIGNvbnN0IGVsZW1lbnRVbmRlck1vdXNlID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCh4LCB5KVxuICAgICAgICAgIGlmICghcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnQuY29udGFpbnMoZWxlbWVudFVuZGVyTW91c2UpKSB7XG4gICAgICAgICAgICAvLyBNb3VzZSBpcyBub3Qgb3ZlciB0aGUgdGFyZ2V0IGVsZW1lbnQgPT4gbm90IGEgbm9ybWFsIGNsaWNrLCBidXQgcHJvYmFibHkgYSBkcmFnXG4gICAgICAgICAgICBjbG9zZUZsb2F0aW5nVG9vbGJhcigpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbY2xvc2VGbG9hdGluZ1Rvb2xiYXJdLFxuICApXG5cbiAgY29uc3QgbW91c2VVcExpc3RlbmVyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWY/LmN1cnJlbnQpIHtcbiAgICAgIGlmIChwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5vcGFjaXR5ICE9PSAnMScpIHtcbiAgICAgICAgcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnQuc3R5bGUub3BhY2l0eSA9ICcxJ1xuICAgICAgfVxuICAgICAgaWYgKHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgIT09ICdhdXRvJykge1xuICAgICAgICBwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ2F1dG8nXG4gICAgICB9XG4gICAgfVxuICB9LCBbcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdXNlTW92ZUxpc3RlbmVyKVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBtb3VzZVVwTGlzdGVuZXIpXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW91c2VNb3ZlTGlzdGVuZXIpXG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgbW91c2VVcExpc3RlbmVyKVxuICAgIH1cbiAgfSwgW3BvcHVwQ2hhclN0eWxlc0VkaXRvclJlZiwgbW91c2VNb3ZlTGlzdGVuZXIsIG1vdXNlVXBMaXN0ZW5lcl0pXG5cbiAgY29uc3QgdXBkYXRlVGV4dEZvcm1hdEZsb2F0aW5nVG9vbGJhciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSAkZ2V0U2VsZWN0aW9uKClcblxuICAgIGNvbnN0IHBvcHVwQ2hhclN0eWxlc0VkaXRvckVsZW0gPSBwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudFxuICAgIGNvbnN0IG5hdGl2ZVNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKVxuXG4gICAgaWYgKHBvcHVwQ2hhclN0eWxlc0VkaXRvckVsZW0gPT09IG51bGwpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IHJvb3RFbGVtZW50ID0gZWRpdG9yLmdldFJvb3RFbGVtZW50KClcbiAgICBpZiAoXG4gICAgICBzZWxlY3Rpb24gIT09IG51bGwgJiZcbiAgICAgIG5hdGl2ZVNlbGVjdGlvbiAhPT0gbnVsbCAmJlxuICAgICAgIW5hdGl2ZVNlbGVjdGlvbi5pc0NvbGxhcHNlZCAmJlxuICAgICAgcm9vdEVsZW1lbnQgIT09IG51bGwgJiZcbiAgICAgIHJvb3RFbGVtZW50LmNvbnRhaW5zKG5hdGl2ZVNlbGVjdGlvbi5hbmNob3JOb2RlKVxuICAgICkge1xuICAgICAgY29uc3QgcmFuZ2VSZWN0ID0gZ2V0RE9NUmFuZ2VSZWN0KG5hdGl2ZVNlbGVjdGlvbiwgcm9vdEVsZW1lbnQpXG5cbiAgICAgIHNldEZsb2F0aW5nRWxlbVBvc2l0aW9uKHJhbmdlUmVjdCwgcG9wdXBDaGFyU3R5bGVzRWRpdG9yRWxlbSwgYW5jaG9yRWxlbSwgJ2NlbnRlcicpXG5cbiAgICAgIGlmIChjYXJldFJlZi5jdXJyZW50KSB7XG4gICAgICAgIHNldEZsb2F0aW5nRWxlbVBvc2l0aW9uKHJhbmdlUmVjdCwgY2FyZXRSZWYuY3VycmVudCwgcG9wdXBDaGFyU3R5bGVzRWRpdG9yRWxlbSwgJ2NlbnRlcicpXG4gICAgICB9XG4gICAgfVxuICB9LCBbZWRpdG9yLCBhbmNob3JFbGVtXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHNjcm9sbGVyRWxlbSA9IGFuY2hvckVsZW0ucGFyZW50RWxlbWVudFxuXG4gICAgY29uc3QgdXBkYXRlID0gKCkgPT4ge1xuICAgICAgZWRpdG9yLmdldEVkaXRvclN0YXRlKCkucmVhZCgoKSA9PiB7XG4gICAgICAgIHVwZGF0ZVRleHRGb3JtYXRGbG9hdGluZ1Rvb2xiYXIoKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlKVxuICAgIGlmIChzY3JvbGxlckVsZW0pIHtcbiAgICAgIHNjcm9sbGVyRWxlbS5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGUpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpXG4gICAgICBpZiAoc2Nyb2xsZXJFbGVtKSB7XG4gICAgICAgIHNjcm9sbGVyRWxlbS5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGUpXG4gICAgICB9XG4gICAgfVxuICB9LCBbZWRpdG9yLCB1cGRhdGVUZXh0Rm9ybWF0RmxvYXRpbmdUb29sYmFyLCBhbmNob3JFbGVtXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGVkaXRvci5nZXRFZGl0b3JTdGF0ZSgpLnJlYWQoKCkgPT4ge1xuICAgICAgdXBkYXRlVGV4dEZvcm1hdEZsb2F0aW5nVG9vbGJhcigpXG4gICAgfSlcbiAgICByZXR1cm4gbWVyZ2VSZWdpc3RlcihcbiAgICAgIGVkaXRvci5yZWdpc3RlclVwZGF0ZUxpc3RlbmVyKCh7IGVkaXRvclN0YXRlIH0pID0+IHtcbiAgICAgICAgZWRpdG9yU3RhdGUucmVhZCgoKSA9PiB7XG4gICAgICAgICAgdXBkYXRlVGV4dEZvcm1hdEZsb2F0aW5nVG9vbGJhcigpXG4gICAgICAgIH0pXG4gICAgICB9KSxcblxuICAgICAgZWRpdG9yLnJlZ2lzdGVyQ29tbWFuZChcbiAgICAgICAgU0VMRUNUSU9OX0NIQU5HRV9DT01NQU5ELFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdXBkYXRlVGV4dEZvcm1hdEZsb2F0aW5nVG9vbGJhcigpXG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIENPTU1BTkRfUFJJT1JJVFlfTE9XLFxuICAgICAgKSxcbiAgICApXG4gIH0sIFtlZGl0b3IsIHVwZGF0ZVRleHRGb3JtYXRGbG9hdGluZ1Rvb2xiYXJdKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJmbG9hdGluZy1zZWxlY3QtdG9vbGJhci1wb3B1cFwiIHJlZj17cG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2FyZXRcIiByZWY9e2NhcmV0UmVmfSAvPlxuICAgICAge2VkaXRvci5pc0VkaXRhYmxlKCkgJiYgKFxuICAgICAgICA8UmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICAge2VkaXRvckNvbmZpZz8uZmVhdHVyZXMgJiZcbiAgICAgICAgICAgIGVkaXRvckNvbmZpZy5mZWF0dXJlcz8uZmxvYXRpbmdTZWxlY3RUb29sYmFyPy5zZWN0aW9ucy5tYXAoKHNlY3Rpb24sIGkpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BmbG9hdGluZy1zZWxlY3QtdG9vbGJhci1wb3B1cF9fc2VjdGlvbiBmbG9hdGluZy1zZWxlY3QtdG9vbGJhci1wb3B1cF9fc2VjdGlvbi0ke3NlY3Rpb24ua2V5fWB9XG4gICAgICAgICAgICAgICAgICBrZXk9e3NlY3Rpb24ua2V5fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtzZWN0aW9uLnR5cGUgPT09ICdkcm9wZG93bicgJiYgc2VjdGlvbi5lbnRyaWVzLmxlbmd0aCAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxUb29sYmFyRHJvcGRvd24gSWNvbj17c2VjdGlvbi5DaGlsZENvbXBvbmVudH0gZW50cmllcz17c2VjdGlvbi5lbnRyaWVzfSAvPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIHtzZWN0aW9uLnR5cGUgPT09ICdidXR0b25zJyAmJlxuICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLmVudHJpZXMubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uZW50cmllcy5tYXAoKGVudHJ5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LkNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5LkNvbXBvbmVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2hvckVsZW09e2FuY2hvckVsZW19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yPXtlZGl0b3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnk9e2VudHJ5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17ZW50cnkua2V5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFRvb2xiYXJCdXR0b24gZW50cnk9e2VudHJ5fSBrZXk9e2VudHJ5LmtleX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeS5DaGlsZENvbXBvbmVudCAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9Ub29sYmFyQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICB7aSA8IGVkaXRvckNvbmZpZy5mZWF0dXJlcy5mbG9hdGluZ1NlbGVjdFRvb2xiYXI/LnNlY3Rpb25zLmxlbmd0aCAtIDEgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRpdmlkZXJcIiAvPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSl9XG4gICAgICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApXG59XG5cbmZ1bmN0aW9uIHVzZUZsb2F0aW5nVGV4dEZvcm1hdFRvb2xiYXIoXG4gIGVkaXRvcjogTGV4aWNhbEVkaXRvcixcbiAgYW5jaG9yRWxlbTogSFRNTEVsZW1lbnQsXG4pOiBKU1guRWxlbWVudCB8IG51bGwge1xuICBjb25zdCBbaXNUZXh0LCBzZXRJc1RleHRdID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgdXBkYXRlUG9wdXAgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZWRpdG9yLmdldEVkaXRvclN0YXRlKCkucmVhZCgoKSA9PiB7XG4gICAgICAvLyBTaG91bGQgbm90IHRvIHBvcCB1cCB0aGUgZmxvYXRpbmcgdG9vbGJhciB3aGVuIHVzaW5nIElNRSBpbnB1dFxuICAgICAgaWYgKGVkaXRvci5pc0NvbXBvc2luZygpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgY29uc3Qgc2VsZWN0aW9uID0gJGdldFNlbGVjdGlvbigpXG4gICAgICBjb25zdCBuYXRpdmVTZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKClcbiAgICAgIGNvbnN0IHJvb3RFbGVtZW50ID0gZWRpdG9yLmdldFJvb3RFbGVtZW50KClcblxuICAgICAgaWYgKFxuICAgICAgICBuYXRpdmVTZWxlY3Rpb24gIT09IG51bGwgJiZcbiAgICAgICAgKCEkaXNSYW5nZVNlbGVjdGlvbihzZWxlY3Rpb24pIHx8XG4gICAgICAgICAgcm9vdEVsZW1lbnQgPT09IG51bGwgfHxcbiAgICAgICAgICAhcm9vdEVsZW1lbnQuY29udGFpbnMobmF0aXZlU2VsZWN0aW9uLmFuY2hvck5vZGUpKVxuICAgICAgKSB7XG4gICAgICAgIHNldElzVGV4dChmYWxzZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmICghJGlzUmFuZ2VTZWxlY3Rpb24oc2VsZWN0aW9uKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKHNlbGVjdGlvbi5nZXRUZXh0Q29udGVudCgpICE9PSAnJykge1xuICAgICAgICBjb25zdCBub2RlcyA9IHNlbGVjdGlvbi5nZXROb2RlcygpXG4gICAgICAgIGxldCBmb3VuZE5vZGVXaXRoVGV4dCA9IGZhbHNlXG4gICAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xuICAgICAgICAgIGlmICgkaXNUZXh0Tm9kZShub2RlKSkge1xuICAgICAgICAgICAgc2V0SXNUZXh0KHRydWUpXG4gICAgICAgICAgICBmb3VuZE5vZGVXaXRoVGV4dCA9IHRydWVcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghZm91bmROb2RlV2l0aFRleHQpIHtcbiAgICAgICAgICBzZXRJc1RleHQoZmFsc2UpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldElzVGV4dChmYWxzZSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmF3VGV4dENvbnRlbnQgPSBzZWxlY3Rpb24uZ2V0VGV4dENvbnRlbnQoKS5yZXBsYWNlKC9cXG4vZywgJycpXG4gICAgICBpZiAoIXNlbGVjdGlvbi5pc0NvbGxhcHNlZCgpICYmIHJhd1RleHRDb250ZW50ID09PSAnJykge1xuICAgICAgICBzZXRJc1RleHQoZmFsc2UpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH0pXG4gIH0sIFtlZGl0b3JdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2VsZWN0aW9uY2hhbmdlJywgdXBkYXRlUG9wdXApXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHVwZGF0ZVBvcHVwKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzZWxlY3Rpb25jaGFuZ2UnLCB1cGRhdGVQb3B1cClcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB1cGRhdGVQb3B1cClcbiAgICB9XG4gIH0sIFt1cGRhdGVQb3B1cF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gbWVyZ2VSZWdpc3RlcihcbiAgICAgIGVkaXRvci5yZWdpc3RlclVwZGF0ZUxpc3RlbmVyKCgpID0+IHtcbiAgICAgICAgdXBkYXRlUG9wdXAoKVxuICAgICAgfSksXG4gICAgICBlZGl0b3IucmVnaXN0ZXJSb290TGlzdGVuZXIoKCkgPT4ge1xuICAgICAgICBpZiAoZWRpdG9yLmdldFJvb3RFbGVtZW50KCkgPT09IG51bGwpIHtcbiAgICAgICAgICBzZXRJc1RleHQoZmFsc2UpXG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgIClcbiAgfSwgW2VkaXRvciwgdXBkYXRlUG9wdXBdKVxuXG4gIGlmICghaXNUZXh0KSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHJldHVybiBjcmVhdGVQb3J0YWwoPEZsb2F0aW5nU2VsZWN0VG9vbGJhciBhbmNob3JFbGVtPXthbmNob3JFbGVtfSBlZGl0b3I9e2VkaXRvcn0gLz4sIGFuY2hvckVsZW0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBGbG9hdGluZ1NlbGVjdFRvb2xiYXJQbHVnaW4oe1xuICBhbmNob3JFbGVtID0gZG9jdW1lbnQuYm9keSxcbn06IHtcbiAgYW5jaG9yRWxlbT86IEhUTUxFbGVtZW50XG59KTogSlNYLkVsZW1lbnQgfCBudWxsIHtcbiAgY29uc3QgW2VkaXRvcl0gPSB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0KClcbiAgcmV0dXJuIHVzZUZsb2F0aW5nVGV4dEZvcm1hdFRvb2xiYXIoZWRpdG9yLCBhbmNob3JFbGVtKVxufVxuIl0sIm5hbWVzIjpbIkZsb2F0aW5nU2VsZWN0VG9vbGJhclBsdWdpbiIsIkZsb2F0aW5nU2VsZWN0VG9vbGJhciIsImFuY2hvckVsZW0iLCJlZGl0b3IiLCJwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYiLCJ1c2VSZWYiLCJjYXJldFJlZiIsImVkaXRvckNvbmZpZyIsInVzZUVkaXRvckNvbmZpZ0NvbnRleHQiLCJjbG9zZUZsb2F0aW5nVG9vbGJhciIsInVzZUNhbGxiYWNrIiwiY3VycmVudCIsImlzT3BhY2l0eVplcm8iLCJzdHlsZSIsIm9wYWNpdHkiLCJpc1BvaW50ZXJFdmVudHNOb25lIiwicG9pbnRlckV2ZW50cyIsIm1vdXNlTW92ZUxpc3RlbmVyIiwiZSIsImJ1dHRvbnMiLCJ4IiwiY2xpZW50WCIsInkiLCJjbGllbnRZIiwiZWxlbWVudFVuZGVyTW91c2UiLCJkb2N1bWVudCIsImVsZW1lbnRGcm9tUG9pbnQiLCJjb250YWlucyIsIm1vdXNlVXBMaXN0ZW5lciIsInVzZUVmZmVjdCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidXBkYXRlVGV4dEZvcm1hdEZsb2F0aW5nVG9vbGJhciIsInNlbGVjdGlvbiIsIiRnZXRTZWxlY3Rpb24iLCJwb3B1cENoYXJTdHlsZXNFZGl0b3JFbGVtIiwibmF0aXZlU2VsZWN0aW9uIiwid2luZG93IiwiZ2V0U2VsZWN0aW9uIiwicm9vdEVsZW1lbnQiLCJnZXRSb290RWxlbWVudCIsImlzQ29sbGFwc2VkIiwiYW5jaG9yTm9kZSIsInJhbmdlUmVjdCIsImdldERPTVJhbmdlUmVjdCIsInNldEZsb2F0aW5nRWxlbVBvc2l0aW9uIiwic2Nyb2xsZXJFbGVtIiwicGFyZW50RWxlbWVudCIsInVwZGF0ZSIsImdldEVkaXRvclN0YXRlIiwicmVhZCIsIm1lcmdlUmVnaXN0ZXIiLCJyZWdpc3RlclVwZGF0ZUxpc3RlbmVyIiwiZWRpdG9yU3RhdGUiLCJyZWdpc3RlckNvbW1hbmQiLCJTRUxFQ1RJT05fQ0hBTkdFX0NPTU1BTkQiLCJDT01NQU5EX1BSSU9SSVRZX0xPVyIsImRpdiIsImNsYXNzTmFtZSIsInJlZiIsImlzRWRpdGFibGUiLCJSZWFjdCIsIkZyYWdtZW50IiwiZmVhdHVyZXMiLCJmbG9hdGluZ1NlbGVjdFRvb2xiYXIiLCJzZWN0aW9ucyIsIm1hcCIsInNlY3Rpb24iLCJpIiwia2V5IiwidHlwZSIsImVudHJpZXMiLCJsZW5ndGgiLCJUb29sYmFyRHJvcGRvd24iLCJJY29uIiwiQ2hpbGRDb21wb25lbnQiLCJlbnRyeSIsIkNvbXBvbmVudCIsIlRvb2xiYXJCdXR0b24iLCJ1c2VGbG9hdGluZ1RleHRGb3JtYXRUb29sYmFyIiwiaXNUZXh0Iiwic2V0SXNUZXh0IiwidXNlU3RhdGUiLCJ1cGRhdGVQb3B1cCIsImlzQ29tcG9zaW5nIiwiJGlzUmFuZ2VTZWxlY3Rpb24iLCJnZXRUZXh0Q29udGVudCIsIm5vZGVzIiwiZ2V0Tm9kZXMiLCJmb3VuZE5vZGVXaXRoVGV4dCIsIm5vZGUiLCIkaXNUZXh0Tm9kZSIsInJhd1RleHRDb250ZW50IiwicmVwbGFjZSIsInJlZ2lzdGVyUm9vdExpc3RlbmVyIiwiY3JlYXRlUG9ydGFsIiwiYm9keSIsInVzZUxleGljYWxDb21wb3NlckNvbnRleHQiXSwibWFwcGluZ3MiOiI7Ozs7K0JBbVNnQkE7OztlQUFBQTs7O3dDQWpTMEI7dUJBQ1o7eUJBT3ZCOytEQUNrRDswQkFFNUI7c0NBRVU7aUNBQ1A7eUNBQ1E7K0JBQ1Y7aUNBQ0U7UUFDekI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFUCxTQUFTQyxzQkFBc0IsRUFDN0JDLFVBQVUsRUFDVkMsTUFBTSxFQUlQO0lBQ0MsTUFBTUMsMkJBQTJCQyxJQUFBQSxhQUFNLEVBQXdCO0lBQy9ELE1BQU1DLFdBQVdELElBQUFBLGFBQU0sRUFBd0I7SUFFL0MsTUFBTSxFQUFFRSxZQUFZLEVBQUUsR0FBR0MsSUFBQUEsNENBQXNCO0lBRS9DLE1BQU1DLHVCQUF1QkMsSUFBQUEsa0JBQVcsRUFBQztRQUN2QyxJQUFJTiwwQkFBMEJPLFNBQVM7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
@@ -65,6 +65,6 @@ export declare function LexicalMenu({ anchorElementRef, close, editor, groupsWit
65
65
  resolution: MenuResolution;
66
66
  shouldSplitNodeWithQuery?: boolean;
67
67
  }): JSX.Element | null;
68
- export declare function useMenuAnchorRef(resolution: MenuResolution | null, setResolution: (r: MenuResolution | null) => void, className?: string): MutableRefObject<HTMLElement>;
68
+ export declare function useMenuAnchorRef(anchorElem: HTMLElement, resolution: MenuResolution | null, setResolution: (r: MenuResolution | null) => void, className?: string): MutableRefObject<HTMLElement>;
69
69
  export type TriggerFn = (text: string, editor: LexicalEditor) => MenuTextMatch | null;
70
70
  //# sourceMappingURL=LexicalMenu.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LexicalMenu.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAiB1D,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,iBAAiB,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,OAAO,CAAA;IACtB,KAAK,CAAC,EAAE,aAAa,CAAA;CACtB,CAAA;AAED,eAAO,MAAM,WAAW,iEAAiE,CAAA;AAEzF,qBAAa,cAAc;IACzB,OAAO,EAAE,KAAK,CAAC,eAAe,CAAC,CAAA;IAC/B,KAAK,EAAE,MAAM,CAAA;CACd;AAED,qBAAa,eAAe;IAC1B,IAAI,EAAE,KAAK,CAAC,EAAE,CAAA;IAEd,WAAW,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,KAAK,MAAM,CAAA;IAElD,GAAG,EAAE,MAAM,CAAA;IAEX,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAEzB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IAEvB,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE;QAAE,MAAM,EAAE,aAAa,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IAE3F,GAAG,CAAC,EAAE,gBAAgB,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;IAG1C,KAAK,EAAE,MAAM,CAAA;gBAGX,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;QACP,IAAI,EAAE,KAAK,CAAC,EAAE,CAAA;QACd,WAAW,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;YAAE,IAAI,EAAE,IAAI,CAAA;SAAE,KAAK,MAAM,CAAA;QAClD,gBAAgB,CAAC,EAAE,MAAM,CAAA;QACzB,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;QACxB,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE;YAAE,MAAM,EAAE,aAAa,CAAC;YAAC,WAAW,EAAE,MAAM,CAAA;SAAE,KAAK,IAAI,CAAA;KAC5F;IAcH,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;CAG1C;AAED,MAAM,MAAM,YAAY,GAAG,CACzB,gBAAgB,EAAE,gBAAgB,CAAC,WAAW,GAAG,IAAI,CAAC,EACtD,SAAS,EAAE;IACT,iBAAiB,EAAE,KAAK,CAAC,cAAc,CAAC,CAAA;IACxC,sBAAsB,EAAE,CAAC,cAAc,EAAE,eAAe,KAAK,IAAI,CAAA;IACjE,iBAAiB,EAAE,IAAI,GAAG,MAAM,CAAA;IAChC,oBAAoB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;CAClD,EACD,cAAc,EAAE,IAAI,GAAG,MAAM,KAC1B,GAAG,CAAC,OAAO,GAAG,WAAW,GAAG,IAAI,CAAA;AAyErC,wBAAgB,eAAe,CAC7B,OAAO,EAAE,WAAW,EACpB,aAAa,EAAE,OAAO,GACrB,eAAe,GAAG,WAAW,CAiB/B;AAYD,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,cAAc,GAAG,IAAI,EACjC,aAAa,EAAE,WAAW,GAAG,IAAI,EACjC,YAAY,EAAE,MAAM,IAAI,EACxB,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,QA2CjD;AAED,eAAO,MAAM,yCAAyC,EAAE,cAAc,CAAC;IACrE,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,eAAe,CAAA;CACxB,CAA8D,CAAA;AAE/D,wBAAgB,WAAW,CAAC,EAC1B,gBAAgB,EAChB,KAAK,EACL,MAAM,EAEN,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,UAAU,EACV,wBAAgC,GACjC,EAAE;IACD,gBAAgB,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAA;IAC/C,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,MAAM,EAAE,aAAa,CAAA;IACrB,iBAAiB,EAAE,KAAK,CAAC,cAAc,CAAC,CAAA;IACxC,YAAY,EAAE,YAAY,CAAA;IAC1B,cAAc,EAAE,CACd,MAAM,EAAE,eAAe,EACvB,uBAAuB,EAAE,QAAQ,GAAG,IAAI,EACxC,SAAS,EAAE,MAAM,IAAI,EACrB,cAAc,EAAE,MAAM,KACnB,IAAI,CAAA;IACT,UAAU,EAAE,cAAc,CAAA;IAC1B,wBAAwB,CAAC,EAAE,OAAO,CAAA;CACnC,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAoOrB;AAED,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,cAAc,GAAG,IAAI,EACjC,aAAa,EAAE,CAAC,CAAC,EAAE,cAAc,GAAG,IAAI,KAAK,IAAI,EACjD,SAAS,CAAC,EAAE,MAAM,GACjB,gBAAgB,CAAC,WAAW,CAAC,CA0F/B;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,KAAK,aAAa,GAAG,IAAI,CAAA"}
1
+ {"version":3,"file":"LexicalMenu.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.tsx"],"names":[],"mappings":"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"}
@@ -377,7 +377,7 @@ groupsWithOptions, menuRenderFn, onSelectOption, resolution, shouldSplitNodeWith
377
377
  ]);
378
378
  return menuRenderFn(anchorElementRef, listItemProps, resolution.match ? resolution.match.matchingString : '');
379
379
  }
380
- function useMenuAnchorRef(resolution, setResolution, className) {
380
+ function useMenuAnchorRef(anchorElem, resolution, setResolution, className) {
381
381
  const [editor] = (0, _LexicalComposerContext.useLexicalComposerContext)();
382
382
  const anchorElementRef = (0, _react.useRef)(document.createElement('div'));
383
383
  const positionMenu = (0, _react.useCallback)(()=>{
@@ -386,8 +386,11 @@ function useMenuAnchorRef(resolution, setResolution, className) {
386
386
  const VERTICAL_OFFSET = 32;
387
387
  const menuEle = containerDiv.firstChild;
388
388
  if (rootElement !== null && resolution !== null) {
389
- const { height, left, top, width } = resolution.getRect();
390
- containerDiv.style.top = `${top + window.scrollY + VERTICAL_OFFSET}px`;
389
+ let { height, left, top, width } = resolution.getRect();
390
+ const rawTop = top;
391
+ const rawLeft = left;
392
+ top -= anchorElem.getBoundingClientRect().top + window.scrollY;
393
+ left -= anchorElem.getBoundingClientRect().left + window.scrollX;
391
394
  containerDiv.style.left = `${left + window.scrollX}px`;
392
395
  containerDiv.style.height = `${height}px`;
393
396
  containerDiv.style.width = `${width}px`;
@@ -399,12 +402,15 @@ function useMenuAnchorRef(resolution, setResolution, className) {
399
402
  if (left + menuWidth > rootElementRect.right) {
400
403
  containerDiv.style.left = `${rootElementRect.right - menuWidth + window.scrollX}px`;
401
404
  }
402
- const wouldGoOffTopOfScreen = top < menuHeight;
403
- const wouldGoOffBottomOfContainer = top + menuHeight > rootElementRect.bottom;
405
+ const wouldGoOffBottomOfScreen = rawTop + menuHeight + VERTICAL_OFFSET > window.innerHeight;
406
+ //const wouldGoOffBottomOfContainer = top + menuHeight > rootElementRect.bottom
407
+ const wouldGoOffTopOfScreen = rawTop < 0;
404
408
  // Position slash menu above the cursor instead of below (default) if it would otherwise go off the bottom of the screen.
405
- if ((top + menuHeight > window.innerHeight || wouldGoOffBottomOfContainer && !wouldGoOffTopOfScreen) && top - rootElementRect.top > menuHeight) {
409
+ if (wouldGoOffBottomOfScreen && !wouldGoOffTopOfScreen) {
406
410
  const margin = 24;
407
411
  containerDiv.style.top = `${top + VERTICAL_OFFSET - menuHeight + window.scrollY - (height + margin)}px`;
412
+ } else {
413
+ containerDiv.style.top = `${top + window.scrollY + VERTICAL_OFFSET}px`;
408
414
  }
409
415
  }
410
416
  if (!containerDiv.isConnected) {
@@ -416,7 +422,7 @@ function useMenuAnchorRef(resolution, setResolution, className) {
416
422
  containerDiv.setAttribute('role', 'listbox');
417
423
  containerDiv.style.display = 'block';
418
424
  containerDiv.style.position = 'absolute';
419
- document.body.append(containerDiv);
425
+ anchorElem.append(containerDiv);
420
426
  }
421
427
  anchorElementRef.current = containerDiv;
422
428
  rootElement.setAttribute('aria-controls', 'typeahead-menu');
@@ -424,7 +430,8 @@ function useMenuAnchorRef(resolution, setResolution, className) {
424
430
  }, [
425
431
  editor,
426
432
  resolution,
427
- className
433
+ className,
434
+ anchorElem
428
435
  ]);
429
436
  (0, _react.useEffect)(()=>{
430
437
  const rootElement = editor.getRootElement();
@@ -459,4 +466,4 @@ function useMenuAnchorRef(resolution, setResolution, className) {
459
466
  return anchorElementRef;
460
467
  }
461
468
 
462
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvU2xhc2hNZW51L0xleGljYWxUeXBlYWhlYWRNZW51UGx1Z2luL0xleGljYWxNZW51LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IGkxOG4gfSBmcm9tICdpMThuZXh0J1xuaW1wb3J0IHR5cGUgeyBMZXhpY2FsQ29tbWFuZCwgTGV4aWNhbEVkaXRvciwgVGV4dE5vZGUgfSBmcm9tICdsZXhpY2FsJ1xuaW1wb3J0IHR5cGUgeyBNdXRhYmxlUmVmT2JqZWN0LCBSZWFjdFBvcnRhbCB9IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgeyB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IH0gZnJvbSAnQGxleGljYWwvcmVhY3QvTGV4aWNhbENvbXBvc2VyQ29udGV4dCdcbmltcG9ydCB7IG1lcmdlUmVnaXN0ZXIgfSBmcm9tICdAbGV4aWNhbC91dGlscydcbmltcG9ydCB7XG4gICRnZXRTZWxlY3Rpb24sXG4gICRpc1JhbmdlU2VsZWN0aW9uLFxuICBDT01NQU5EX1BSSU9SSVRZX0xPVyxcbiAgS0VZX0FSUk9XX0RPV05fQ09NTUFORCxcbiAgS0VZX0FSUk9XX1VQX0NPTU1BTkQsXG4gIEtFWV9FTlRFUl9DT01NQU5ELFxuICBLRVlfRVNDQVBFX0NPTU1BTkQsXG4gIEtFWV9UQUJfQ09NTUFORCxcbiAgY3JlYXRlQ29tbWFuZCxcbn0gZnJvbSAnbGV4aWNhbCdcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZUxheW91dEVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuXG5leHBvcnQgdHlwZSBNZW51VGV4dE1hdGNoID0ge1xuICBsZWFkT2Zmc2V0OiBudW1iZXJcbiAgbWF0Y2hpbmdTdHJpbmc6IHN0cmluZ1xuICByZXBsYWNlYWJsZVN0cmluZzogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIE1lbnVSZXNvbHV0aW9uID0ge1xuICBnZXRSZWN0OiAoKSA9PiBET01SZWN0XG4gIG1hdGNoPzogTWVudVRleHRNYXRjaFxufVxuXG5leHBvcnQgY29uc3QgUFVOQ1RVQVRJT04gPSAnXFxcXC4sXFxcXCtcXFxcKlxcXFw/XFxcXCRcXFxcQFxcXFx8I3t9XFxcXChcXFxcKVxcXFxeXFxcXC1cXFxcW1xcXFxdXFxcXFxcXFwvISVcXCdcIn49PD5fOjsnXG5cbmV4cG9ydCBjbGFzcyBTbGFzaE1lbnVHcm91cCB7XG4gIG9wdGlvbnM6IEFycmF5PFNsYXNoTWVudU9wdGlvbj5cbiAgdGl0bGU6IHN0cmluZ1xufVxuXG5leHBvcnQgY2xhc3MgU2xhc2hNZW51T3B0aW9uIHtcbiAgSWNvbjogUmVhY3QuRkNcblxuICBkaXNwbGF5TmFtZT86ICh7IGkxOG4gfTogeyBpMThuOiBpMThuIH0pID0+IHN0cmluZ1xuICAvLyBJY29uIGZvciBkaXNwbGF5XG4gIGtleTogc3RyaW5nXG4gIC8vIFRCRFxuICBrZXlib2FyZFNob3J0Y3V0Pzogc3RyaW5nXG4gIC8vIEZvciBleHRyYSBzZWFyY2hpbmcuXG4gIGtleXdvcmRzOiBBcnJheTxzdHJpbmc+XG4gIC8vIFdoYXQgaGFwcGVucyB3aGVuIHlvdSBzZWxlY3QgdGhpcyBvcHRpb24/XG4gIG9uU2VsZWN0OiAoeyBlZGl0b3IsIHF1ZXJ5U3RyaW5nIH06IHsgZWRpdG9yOiBMZXhpY2FsRWRpdG9yOyBxdWVyeVN0cmluZzogc3RyaW5nIH0pID0+IHZvaWRcblxuICByZWY/OiBNdXRhYmxlUmVmT2JqZWN0PEhUTUxFbGVtZW50IHwgbnVsbD5cblxuICAvLyBXaGF0IHNob3dzIHVwIGluIHRoZSBlZGl0b3JcbiAgdGl0bGU6IHN0cmluZ1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgSWNvbjogUmVhY3QuRkNcbiAgICAgIGRpc3BsYXlOYW1lPzogKHsgaTE4biB9OiB7IGkxOG46IGkxOG4gfSkgPT4gc3RyaW5nXG4gICAgICBrZXlib2FyZFNob3J0Y3V0Pzogc3RyaW5nXG4gICAgICBrZXl3b3Jkcz86IEFycmF5PHN0cmluZz5cbiAgICAgIG9uU2VsZWN0OiAoeyBlZGl0b3IsIHF1ZXJ5U3RyaW5nIH06IHsgZWRpdG9yOiBMZXhpY2FsRWRpdG9yOyBxdWVyeVN0cmluZzogc3RyaW5nIH0pID0+IHZvaWRcbiAgICB9LFxuICApIHtcbiAgICB0aGlzLmtleSA9IHRpdGxlXG4gICAgdGhpcy5yZWYgPSB7IGN1cnJlbnQ6IG51bGwgfVxuICAgIHRoaXMuc2V0UmVmRWxlbWVudCA9IHRoaXMuc2V0UmVmRWxlbWVudC5iaW5kKHRoaXMpXG5cbiAgICB0aGlzLnRpdGxlID0gdGl0bGVcbiAgICB0aGlzLmRpc3BsYXlOYW1lID0gb3B0aW9ucy5kaXNwbGF5TmFtZVxuICAgIHRoaXMua2V5d29yZHMgPSBvcHRpb25zLmtleXdvcmRzIHx8IFtdXG4gICAgdGhpcy5JY29uID0gb3B0aW9ucy5JY29uXG4gICAgdGhpcy5rZXlib2FyZFNob3J0Y3V0ID0gb3B0aW9ucy5rZXlib2FyZFNob3J0Y3V0XG4gICAgdGhpcy5vblNlbGVjdCA9IG9wdGlvbnMub25TZWxlY3QuYmluZCh0aGlzKVxuICB9XG5cbiAgc2V0UmVmRWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwpIHtcbiAgICB0aGlzLnJlZiA9IHsgY3VycmVudDogZWxlbWVudCB9XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgTWVudVJlbmRlckZuID0gKFxuICBhbmNob3JFbGVtZW50UmVmOiBNdXRhYmxlUmVmT2JqZWN0PEhUTUxFbGVtZW50IHwgbnVsbD4sXG4gIGl0ZW1Qcm9wczoge1xuICAgIGdyb3Vwc1dpdGhPcHRpb25zOiBBcnJheTxTbGFzaE1lbnVHcm91cD5cbiAgICBzZWxlY3RPcHRpb25BbmRDbGVhblVwOiAoc2VsZWN0ZWRPcHRpb246IFNsYXNoTWVudU9wdGlvbikgPT4gdm9pZFxuICAgIHNlbGVjdGVkT3B0aW9uS2V5OiBudWxsIHwgc3RyaW5nXG4gICAgc2V0U2VsZWN0ZWRPcHRpb25LZXk6IChvcHRpb25LZXk6IHN0cmluZykgPT4gdm9pZFxuICB9LFxuICBtYXRjaGluZ1N0cmluZzogbnVsbCB8IHN0cmluZyxcbikgPT4gSlNYLkVsZW1lbnQgfCBSZWFjdFBvcnRhbCB8IG51bGxcblxuY29uc3Qgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCA9ICh0YXJnZXQ6IEhUTUxFbGVtZW50KSA9PiB7XG4gIGNvbnN0IHR5cGVhaGVhZENvbnRhaW5lck5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHlwZWFoZWFkLW1lbnUnKVxuICBpZiAoIXR5cGVhaGVhZENvbnRhaW5lck5vZGUpIHJldHVyblxuXG4gIGNvbnN0IHR5cGVhaGVhZFJlY3QgPSB0eXBlYWhlYWRDb250YWluZXJOb2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG5cbiAgaWYgKHR5cGVhaGVhZFJlY3QudG9wICsgdHlwZWFoZWFkUmVjdC5oZWlnaHQgPiB3aW5kb3cuaW5uZXJIZWlnaHQpIHtcbiAgICB0eXBlYWhlYWRDb250YWluZXJOb2RlLnNjcm9sbEludG9WaWV3KHtcbiAgICAgIGJsb2NrOiAnY2VudGVyJyxcbiAgICB9KVxuICB9XG5cbiAgaWYgKHR5cGVhaGVhZFJlY3QudG9wIDwgMCkge1xuICAgIHR5cGVhaGVhZENvbnRhaW5lck5vZGUuc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgYmxvY2s6ICdjZW50ZXInLFxuICAgIH0pXG4gIH1cblxuICB0YXJnZXQuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ25lYXJlc3QnIH0pXG59XG5cbi8qKlxuICogV2FsayBiYWNrd2FyZHMgYWxvbmcgdXNlciBpbnB1dCBhbmQgZm9yd2FyZCB0aHJvdWdoIGVudGl0eSB0aXRsZSB0byB0cnlcbiAqIGFuZCByZXBsYWNlIG1vcmUgb2YgdGhlIHVzZXIncyB0ZXh0IHdpdGggZW50aXR5LlxuICovXG5mdW5jdGlvbiBnZXRGdWxsTWF0Y2hPZmZzZXQoZG9jdW1lbnRUZXh0OiBzdHJpbmcsIGVudHJ5VGV4dDogc3RyaW5nLCBvZmZzZXQ6IG51bWJlcik6IG51bWJlciB7XG4gIGxldCB0cmlnZ2VyT2Zmc2V0ID0gb2Zmc2V0XG4gIGZvciAobGV0IGkgPSB0cmlnZ2VyT2Zmc2V0OyBpIDw9IGVudHJ5VGV4dC5sZW5ndGg7IGkrKykge1xuICAgIGlmIChkb2N1bWVudFRleHQuc3Vic3RyKC1pKSA9PT0gZW50cnlUZXh0LnN1YnN0cigwLCBpKSkge1xuICAgICAgdHJpZ2dlck9mZnNldCA9IGlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRyaWdnZXJPZmZzZXRcbn1cblxuLyoqXG4gKiBTcGxpdCBMZXhpY2FsIFRleHROb2RlIGFuZCByZXR1cm4gYSBuZXcgVGV4dE5vZGUgb25seSBjb250YWluaW5nIG1hdGNoZWQgdGV4dC5cbiAqIENvbW1vbiB1c2UgY2FzZXMgaW5jbHVkZTogcmVtb3ZpbmcgdGhlIG5vZGUsIHJlcGxhY2luZyB3aXRoIGEgbmV3IG5vZGUuXG4gKi9cbmZ1bmN0aW9uICRzcGxpdE5vZGVDb250YWluaW5nUXVlcnkobWF0Y2g6IE1lbnVUZXh0TWF0Y2gpOiBUZXh0Tm9kZSB8IG51bGwge1xuICBjb25zdCBzZWxlY3Rpb24gPSAkZ2V0U2VsZWN0aW9uKClcbiAgaWYgKCEkaXNSYW5nZVNlbGVjdGlvbihzZWxlY3Rpb24pIHx8ICFzZWxlY3Rpb24uaXNDb2xsYXBzZWQoKSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgYW5jaG9yID0gc2VsZWN0aW9uLmFuY2hvclxuICBpZiAoYW5jaG9yLnR5cGUgIT09ICd0ZXh0Jykge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgYW5jaG9yTm9kZSA9IGFuY2hvci5nZXROb2RlKClcbiAgaWYgKCFhbmNob3JOb2RlLmlzU2ltcGxlVGV4dCgpKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBjb25zdCBzZWxlY3Rpb25PZmZzZXQgPSBhbmNob3Iub2Zmc2V0XG4gIGNvbnN0IHRleHRDb250ZW50ID0gYW5jaG9yTm9kZS5nZXRUZXh0Q29udGVudCgpLnNsaWNlKDAsIHNlbGVjdGlvbk9mZnNldClcbiAgY29uc3QgY2hhcmFjdGVyT2Zmc2V0ID0gbWF0Y2gucmVwbGFjZWFibGVTdHJpbmcubGVuZ3RoXG4gIGNvbnN0IHF1ZXJ5T2Zmc2V0ID0gZ2V0RnVsbE1hdGNoT2Zmc2V0KHRleHRDb250ZW50LCBtYXRjaC5tYXRjaGluZ1N0cmluZywgY2hhcmFjdGVyT2Zmc2V0KVxuICBjb25zdCBzdGFydE9mZnNldCA9IHNlbGVjdGlvbk9mZnNldCAtIHF1ZXJ5T2Zmc2V0XG4gIGlmIChzdGFydE9mZnNldCA8IDApIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGxldCBuZXdOb2RlXG4gIGlmIChzdGFydE9mZnNldCA9PT0gMCkge1xuICAgIDtbbmV3Tm9kZV0gPSBhbmNob3JOb2RlLnNwbGl0VGV4dChzZWxlY3Rpb25PZmZzZXQpXG4gIH0gZWxzZSB7XG4gICAgO1ssIG5ld05vZGVdID0gYW5jaG9yTm9kZS5zcGxpdFRleHQoc3RhcnRPZmZzZXQsIHNlbGVjdGlvbk9mZnNldClcbiAgfVxuXG4gIHJldHVybiBuZXdOb2RlXG59XG5cbi8vIEdvdCBmcm9tIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS80MjU0MzkwOC8yMDEzNTgwXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2Nyb2xsUGFyZW50KFxuICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgaW5jbHVkZUhpZGRlbjogYm9vbGVhbixcbik6IEhUTUxCb2R5RWxlbWVudCB8IEhUTUxFbGVtZW50IHtcbiAgbGV0IHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KVxuICBjb25zdCBleGNsdWRlU3RhdGljUGFyZW50ID0gc3R5bGUucG9zaXRpb24gPT09ICdhYnNvbHV0ZSdcbiAgY29uc3Qgb3ZlcmZsb3dSZWdleCA9IGluY2x1ZGVIaWRkZW4gPyAvKGF1dG98c2Nyb2xsfGhpZGRlbikvIDogLyhhdXRvfHNjcm9sbCkvXG4gIGlmIChzdHlsZS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgIHJldHVybiBkb2N1bWVudC5ib2R5XG4gIH1cbiAgZm9yIChsZXQgcGFyZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBlbGVtZW50OyAocGFyZW50ID0gcGFyZW50LnBhcmVudEVsZW1lbnQpOyApIHtcbiAgICBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUocGFyZW50KVxuICAgIGlmIChleGNsdWRlU3RhdGljUGFyZW50ICYmIHN0eWxlLnBvc2l0aW9uID09PSAnc3RhdGljJykge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKG92ZXJmbG93UmVnZXgudGVzdChzdHlsZS5vdmVyZmxvdyArIHN0eWxlLm92ZXJmbG93WSArIHN0eWxlLm92ZXJmbG93WCkpIHtcbiAgICAgIHJldHVybiBwYXJlbnRcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRvY3VtZW50LmJvZHlcbn1cblxuZnVuY3Rpb24gaXNUcmlnZ2VyVmlzaWJsZUluTmVhcmVzdFNjcm9sbENvbnRhaW5lcihcbiAgdGFyZ2V0RWxlbWVudDogSFRNTEVsZW1lbnQsXG4gIGNvbnRhaW5lckVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHRSZWN0ID0gdGFyZ2V0RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICBjb25zdCBjUmVjdCA9IGNvbnRhaW5lckVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgcmV0dXJuIHRSZWN0LnRvcCA+IGNSZWN0LnRvcCAmJiB0UmVjdC50b3AgPCBjUmVjdC5ib3R0b21cbn1cblxuLy8gUmVwb3NpdGlvbiB0aGUgbWVudSBvbiBzY3JvbGwsIHdpbmRvdyByZXNpemUsIGFuZCBlbGVtZW50IHJlc2l6ZS5cbmV4cG9ydCBmdW5jdGlvbiB1c2VEeW5hbWljUG9zaXRpb25pbmcoXG4gIHJlc29sdXRpb246IE1lbnVSZXNvbHV0aW9uIHwgbnVsbCxcbiAgdGFyZ2V0RWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsLFxuICBvblJlcG9zaXRpb246ICgpID0+IHZvaWQsXG4gIG9uVmlzaWJpbGl0eUNoYW5nZT86IChpc0luVmlldzogYm9vbGVhbikgPT4gdm9pZCxcbikge1xuICBjb25zdCBbZWRpdG9yXSA9IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQoKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0YXJnZXRFbGVtZW50ICE9IG51bGwgJiYgcmVzb2x1dGlvbiAhPSBudWxsKSB7XG4gICAgICBjb25zdCByb290RWxlbWVudCA9IGVkaXRvci5nZXRSb290RWxlbWVudCgpXG4gICAgICBjb25zdCByb290U2Nyb2xsUGFyZW50ID1cbiAgICAgICAgcm9vdEVsZW1lbnQgIT0gbnVsbCA/IGdldFNjcm9sbFBhcmVudChyb290RWxlbWVudCwgZmFsc2UpIDogZG9jdW1lbnQuYm9keVxuICAgICAgbGV0IHRpY2tpbmcgPSBmYWxzZVxuICAgICAgbGV0IHByZXZpb3VzSXNJblZpZXcgPSBpc1RyaWdnZXJWaXNpYmxlSW5OZWFyZXN0U2Nyb2xsQ29udGFpbmVyKFxuICAgICAgICB0YXJnZXRFbGVtZW50LFxuICAgICAgICByb290U2Nyb2xsUGFyZW50LFxuICAgICAgKVxuICAgICAgY29uc3QgaGFuZGxlU2Nyb2xsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIXRpY2tpbmcpIHtcbiAgICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIG9uUmVwb3NpdGlvbigpXG4gICAgICAgICAgICB0aWNraW5nID0gZmFsc2VcbiAgICAgICAgICB9KVxuICAgICAgICAgIHRpY2tpbmcgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXNJblZpZXcgPSBpc1RyaWdnZXJWaXNpYmxlSW5OZWFyZXN0U2Nyb2xsQ29udGFpbmVyKHRhcmdldEVsZW1lbnQsIHJvb3RTY3JvbGxQYXJlbnQpXG4gICAgICAgIGlmIChpc0luVmlldyAhPT0gcHJldmlvdXNJc0luVmlldykge1xuICAgICAgICAgIHByZXZpb3VzSXNJblZpZXcgPSBpc0luVmlld1xuICAgICAgICAgIGlmIChvblZpc2liaWxpdHlDaGFuZ2UgIT0gbnVsbCkge1xuICAgICAgICAgICAgb25WaXNpYmlsaXR5Q2hhbmdlKGlzSW5WaWV3KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3QgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIob25SZXBvc2l0aW9uKVxuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG9uUmVwb3NpdGlvbilcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCwge1xuICAgICAgICBjYXB0dXJlOiB0cnVlLFxuICAgICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgfSlcbiAgICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGFyZ2V0RWxlbWVudClcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHJlc2l6ZU9ic2VydmVyLnVub2JzZXJ2ZSh0YXJnZXRFbGVtZW50KVxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgb25SZXBvc2l0aW9uKVxuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwsIHRydWUpXG4gICAgICB9XG4gICAgfVxuICB9LCBbdGFyZ2V0RWxlbWVudCwgZWRpdG9yLCBvblZpc2liaWxpdHlDaGFuZ2UsIG9uUmVwb3NpdGlvbiwgcmVzb2x1dGlvbl0pXG59XG5cbmV4cG9ydCBjb25zdCBTQ1JPTExfVFlQRUFIRUFEX09QVElPTl9JTlRPX1ZJRVdfQ09NTUFORDogTGV4aWNhbENvbW1hbmQ8e1xuICBpbmRleDogbnVtYmVyXG4gIG9wdGlvbjogU2xhc2hNZW51T3B0aW9uXG59PiA9IGNyZWF0ZUNvbW1hbmQoJ1NDUk9MTF9UWVBFQUhFQURfT1BUSU9OX0lOVE9fVklFV19DT01NQU5EJylcblxuZXhwb3J0IGZ1bmN0aW9uIExleGljYWxNZW51KHtcbiAgYW5jaG9yRWxlbWVudFJlZixcbiAgY2xvc2UsXG4gIGVkaXRvcixcbiAgLy8gZ3JvdXBzV2l0aE9wdGlvbnMgZmlsdGVyaW5nIGlzIGFscmVhZHkgaGFuZGxlZCBpbiBTbGFzaE1lbnUvaW5kZXgudHN4LiBUaHVzLCBncm91cHNXaXRoT3B0aW9ucyBhbHdheXMgY29udGFpbnMgdGhlIG1hdGNoaW5nIG9wdGlvbnMuXG4gIGdyb3Vwc1dpdGhPcHRpb25zLFxuICBtZW51UmVuZGVyRm4sXG4gIG9uU2VsZWN0T3B0aW9uLFxuICByZXNvbHV0aW9uLFxuICBzaG91bGRTcGxpdE5vZGVXaXRoUXVlcnkgPSBmYWxzZSxcbn06IHtcbiAgYW5jaG9yRWxlbWVudFJlZjogTXV0YWJsZVJlZk9iamVjdDxIVE1MRWxlbWVudD5cbiAgY2xvc2U6ICgpID0+IHZvaWRcbiAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yXG4gIGdyb3Vwc1dpdGhPcHRpb25zOiBBcnJheTxTbGFzaE1lbnVHcm91cD5cbiAgbWVudVJlbmRlckZuOiBNZW51UmVuZGVyRm5cbiAgb25TZWxlY3RPcHRpb246IChcbiAgICBvcHRpb246IFNsYXNoTWVudU9wdGlvbixcbiAgICB0ZXh0Tm9kZUNvbnRhaW5pbmdRdWVyeTogVGV4dE5vZGUgfCBudWxsLFxuICAgIGNsb3NlTWVudTogKCkgPT4gdm9pZCxcbiAgICBtYXRjaGluZ1N0cmluZzogc3RyaW5nLFxuICApID0+IHZvaWRcbiAgcmVzb2x1dGlvbjogTWVudVJlc29sdXRpb25cbiAgc2hvdWxkU3BsaXROb2RlV2l0aFF1ZXJ5PzogYm9vbGVhblxufSk6IEpTWC5FbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IFtzZWxlY3RlZE9wdGlvbktleSwgc2V0U2VsZWN0ZWRPcHRpb25LZXldID0gdXNlU3RhdGU8bnVsbCB8IHN0cmluZz4obnVsbClcblxuICBjb25zdCBtYXRjaGluZ1N0cmluZyA9IChyZXNvbHV0aW9uLm1hdGNoICYmIHJlc29sdXRpb24ubWF0Y2gubWF0Y2hpbmdTdHJpbmcpIHx8ICcnXG5cbiAgY29uc3QgdXBkYXRlU2VsZWN0ZWRPcHRpb24gPSB1c2VDYWxsYmFjayhcbiAgICAob3B0aW9uOiBTbGFzaE1lbnVPcHRpb24pID0+IHtcbiAgICAgIGNvbnN0IHJvb3RFbGVtID0gZWRpdG9yLmdldFJvb3RFbGVtZW50KClcbiAgICAgIGlmIChyb290RWxlbSAhPT0gbnVsbCkge1xuICAgICAgICByb290RWxlbS5zZXRBdHRyaWJ1dGUoJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcsICd0eXBlYWhlYWQtaXRlbS0nICsgb3B0aW9uLmtleSlcbiAgICAgICAgc2V0U2VsZWN0ZWRPcHRpb25LZXkob3B0aW9uLmtleSlcbiAgICAgIH1cbiAgICB9LFxuICAgIFtlZGl0b3JdLFxuICApXG5cbiAgY29uc3Qgc2V0U2VsZWN0ZWRPcHRpb25LZXlUb0ZpcnN0TWF0Y2hpbmdPcHRpb24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgLy8gc2V0IHNlbGVjdGVkIG9wdGlvbiB0byB0aGUgZmlyc3Qgb2YgdGhlIG1hdGNoaW5nIG9uZXNcbiAgICBpZiAoZ3JvdXBzV2l0aE9wdGlvbnMgIT09IG51bGwgJiYgbWF0Y2hpbmdTdHJpbmcgIT0gbnVsbCkge1xuICAgICAgLy8gZ3JvdXBzV2l0aE9wdGlvbnMgZmlsdGVyaW5nIGlzIGFscmVhZHkgaGFuZGxlZCBpbiBTbGFzaE1lbnUvaW5kZXgudHN4LiBUaHVzLCBncm91cHNXaXRoT3B0aW9ucyBhbHdheXMgY29udGFpbnMgdGhlIG1hdGNoaW5nIG9wdGlvbnMuXG4gICAgICBjb25zdCBhbGxPcHRpb25zID0gZ3JvdXBzV2l0aE9wdGlvbnMuZmxhdE1hcCgoZ3JvdXApID0+IGdyb3VwLm9wdGlvbnMpXG5cbiAgICAgIGlmIChhbGxPcHRpb25zLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBmaXJzdE1hdGNoaW5nT3B0aW9uID0gYWxsT3B0aW9uc1swXVxuICAgICAgICB1cGRhdGVTZWxlY3RlZE9wdGlvbihmaXJzdE1hdGNoaW5nT3B0aW9uKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2dyb3Vwc1dpdGhPcHRpb25zLCB1cGRhdGVTZWxlY3RlZE9wdGlvbiwgbWF0Y2hpbmdTdHJpbmddKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0U2VsZWN0ZWRPcHRpb25LZXlUb0ZpcnN0TWF0Y2hpbmdPcHRpb24oKVxuICB9LCBbbWF0Y2hpbmdTdHJpbmcsIHNldFNlbGVjdGVkT3B0aW9uS2V5VG9GaXJzdE1hdGNoaW5nT3B0aW9uXSlcblxuICBjb25zdCBzZWxlY3RPcHRpb25BbmRDbGVhblVwID0gdXNlQ2FsbGJhY2soXG4gICAgKHNlbGVjdGVkT3B0aW9uOiBTbGFzaE1lbnVPcHRpb24pID0+IHtcbiAgICAgIGVkaXRvci51cGRhdGUoKCkgPT4ge1xuICAgICAgICBjb25zdCB0ZXh0Tm9kZUNvbnRhaW5pbmdRdWVyeSA9XG4gICAgICAgICAgcmVzb2x1dGlvbi5tYXRjaCAhPSBudWxsICYmIHNob3VsZFNwbGl0Tm9kZVdpdGhRdWVyeVxuICAgICAgICAgICAgPyAkc3BsaXROb2RlQ29udGFpbmluZ1F1ZXJ5KHJlc29sdXRpb24ubWF0Y2gpXG4gICAgICAgICAgICA6IG51bGxcblxuICAgICAgICBvblNlbGVjdE9wdGlvbihcbiAgICAgICAgICBzZWxlY3RlZE9wdGlvbixcbiAgICAgICAgICB0ZXh0Tm9kZUNvbnRhaW5pbmdRdWVyeSxcbiAgICAgICAgICBjbG9zZSxcbiAgICAgICAgICByZXNvbHV0aW9uLm1hdGNoID8gcmVzb2x1dGlvbi5tYXRjaC5tYXRjaGluZ1N0cmluZyA6ICcnLFxuICAgICAgICApXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2VkaXRvciwgc2hvdWxkU3BsaXROb2RlV2l0aFF1ZXJ5LCByZXNvbHV0aW9uLm1hdGNoLCBvblNlbGVjdE9wdGlvbiwgY2xvc2VdLFxuICApXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY29uc3Qgcm9vdEVsZW0gPSBlZGl0b3IuZ2V0Um9vdEVsZW1lbnQoKVxuICAgICAgaWYgKHJvb3RFbGVtICE9PSBudWxsKSB7XG4gICAgICAgIHJvb3RFbGVtLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1hY3RpdmVkZXNjZW5kYW50JylcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtlZGl0b3JdKVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGdyb3Vwc1dpdGhPcHRpb25zID09PSBudWxsKSB7XG4gICAgICBzZXRTZWxlY3RlZE9wdGlvbktleShudWxsKVxuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWRPcHRpb25LZXkgPT09IG51bGwpIHtcbiAgICAgIHNldFNlbGVjdGVkT3B0aW9uS2V5VG9GaXJzdE1hdGNoaW5nT3B0aW9uKClcbiAgICB9XG4gIH0sIFtcbiAgICBncm91cHNXaXRoT3B0aW9ucyxcbiAgICBzZWxlY3RlZE9wdGlvbktleSxcbiAgICB1cGRhdGVTZWxlY3RlZE9wdGlvbixcbiAgICBzZXRTZWxlY3RlZE9wdGlvbktleVRvRmlyc3RNYXRjaGluZ09wdGlvbixcbiAgXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiBtZXJnZVJlZ2lzdGVyKFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyQ29tbWFuZChcbiAgICAgICAgU0NST0xMX1RZUEVBSEVBRF9PUFRJT05fSU5UT19WSUVXX0NPTU1BTkQsXG4gICAgICAgICh7IG9wdGlvbiB9KSA9PiB7XG4gICAgICAgICAgaWYgKG9wdGlvbi5yZWYgJiYgb3B0aW9uLnJlZi5jdXJyZW50ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHNjcm9sbEludG9WaWV3SWZOZWVkZWQob3B0aW9uLnJlZi5jdXJyZW50KVxuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gICAgICApLFxuICAgIClcbiAgfSwgW2VkaXRvciwgdXBkYXRlU2VsZWN0ZWRPcHRpb25dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuIG1lcmdlUmVnaXN0ZXIoXG4gICAgICBlZGl0b3IucmVnaXN0ZXJDb21tYW5kPEtleWJvYXJkRXZlbnQ+KFxuICAgICAgICBLRVlfQVJST1dfRE9XTl9DT01NQU5ELFxuICAgICAgICAocGF5bG9hZCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGV2ZW50ID0gcGF5bG9hZFxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGdyb3Vwc1dpdGhPcHRpb25zICE9PSBudWxsICYmXG4gICAgICAgICAgICBncm91cHNXaXRoT3B0aW9ucy5sZW5ndGggJiZcbiAgICAgICAgICAgIHNlbGVjdGVkT3B0aW9uS2V5ICE9PSBudWxsXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBhbGxPcHRpb25zID0gZ3JvdXBzV2l0aE9wdGlvbnMuZmxhdE1hcCgoZ3JvdXApID0+IGdyb3VwLm9wdGlvbnMpXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gYWxsT3B0aW9ucy5maW5kSW5kZXgoKG9wdGlvbikgPT4gb3B0aW9uLmtleSA9PT0gc2VsZWN0ZWRPcHRpb25LZXkpXG5cbiAgICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkSW5kZXggPSBzZWxlY3RlZEluZGV4ICE9PSBhbGxPcHRpb25zLmxlbmd0aCAtIDEgPyBzZWxlY3RlZEluZGV4ICsgMSA6IDBcblxuICAgICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRPcHRpb24gPSBhbGxPcHRpb25zW25ld1NlbGVjdGVkSW5kZXhdXG5cbiAgICAgICAgICAgIHVwZGF0ZVNlbGVjdGVkT3B0aW9uKG5ld1NlbGVjdGVkT3B0aW9uKVxuICAgICAgICAgICAgaWYgKG5ld1NlbGVjdGVkT3B0aW9uLnJlZiAhPSBudWxsICYmIG5ld1NlbGVjdGVkT3B0aW9uLnJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICAgIGVkaXRvci5kaXNwYXRjaENvbW1hbmQoU0NST0xMX1RZUEVBSEVBRF9PUFRJT05fSU5UT19WSUVXX0NPTU1BTkQsIHtcbiAgICAgICAgICAgICAgICBpbmRleDogbmV3U2VsZWN0ZWRJbmRleCxcbiAgICAgICAgICAgICAgICBvcHRpb246IG5ld1NlbGVjdGVkT3B0aW9uLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKClcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gICAgICApLFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyQ29tbWFuZDxLZXlib2FyZEV2ZW50PihcbiAgICAgICAgS0VZX0FSUk9XX1VQX0NPTU1BTkQsXG4gICAgICAgIChwYXlsb2FkKSA9PiB7XG4gICAgICAgICAgY29uc3QgZXZlbnQgPSBwYXlsb2FkXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZ3JvdXBzV2l0aE9wdGlvbnMgIT09IG51bGwgJiZcbiAgICAgICAgICAgIGdyb3Vwc1dpdGhPcHRpb25zLmxlbmd0aCAmJlxuICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb25LZXkgIT09IG51bGxcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IGFsbE9wdGlvbnMgPSBncm91cHNXaXRoT3B0aW9ucy5mbGF0TWFwKChncm91cCkgPT4gZ3JvdXAub3B0aW9ucylcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSBhbGxPcHRpb25zLmZpbmRJbmRleCgob3B0aW9uKSA9PiBvcHRpb24ua2V5ID09PSBzZWxlY3RlZE9wdGlvbktleSlcblxuICAgICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRJbmRleCA9IHNlbGVjdGVkSW5kZXggIT09IDAgPyBzZWxlY3RlZEluZGV4IC0gMSA6IGFsbE9wdGlvbnMubGVuZ3RoIC0gMVxuXG4gICAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZE9wdGlvbiA9IGFsbE9wdGlvbnNbbmV3U2VsZWN0ZWRJbmRleF1cblxuICAgICAgICAgICAgdXBkYXRlU2VsZWN0ZWRPcHRpb24obmV3U2VsZWN0ZWRPcHRpb24pXG4gICAgICAgICAgICBpZiAobmV3U2VsZWN0ZWRPcHRpb24ucmVmICE9IG51bGwgJiYgbmV3U2VsZWN0ZWRPcHRpb24ucmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChuZXdTZWxlY3RlZE9wdGlvbi5yZWYuY3VycmVudClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIENPTU1BTkRfUFJJT1JJVFlfTE9XLFxuICAgICAgKSxcbiAgICAgIGVkaXRvci5yZWdpc3RlckNvbW1hbmQ8S2V5Ym9hcmRFdmVudD4oXG4gICAgICAgIEtFWV9FU0NBUEVfQ09NTUFORCxcbiAgICAgICAgKHBheWxvYWQpID0+IHtcbiAgICAgICAgICBjb25zdCBldmVudCA9IHBheWxvYWRcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKClcbiAgICAgICAgICBjbG9zZSgpXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gICAgICApLFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyQ29tbWFuZDxLZXlib2FyZEV2ZW50PihcbiAgICAgICAgS0VZX1RBQl9DT01NQU5ELFxuICAgICAgICAocGF5bG9hZCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGV2ZW50ID0gcGF5bG9hZFxuXG4gICAgICAgICAgaWYgKGdyb3Vwc1dpdGhPcHRpb25zID09PSBudWxsIHx8IHNlbGVjdGVkT3B0aW9uS2V5ID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgYWxsT3B0aW9ucyA9IGdyb3Vwc1dpdGhPcHRpb25zLmZsYXRNYXAoKGdyb3VwKSA9PiBncm91cC5vcHRpb25zKVxuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9uID0gYWxsT3B0aW9ucy5maW5kKChvcHRpb24pID0+IG9wdGlvbi5rZXkgPT09IHNlbGVjdGVkT3B0aW9uS2V5KVxuICAgICAgICAgIGlmICghc2VsZWN0ZWRPcHRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKVxuICAgICAgICAgIHNlbGVjdE9wdGlvbkFuZENsZWFuVXAoc2VsZWN0ZWRPcHRpb24pXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gICAgICApLFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyQ29tbWFuZChcbiAgICAgICAgS0VZX0VOVEVSX0NPTU1BTkQsXG4gICAgICAgIChldmVudDogS2V5Ym9hcmRFdmVudCB8IG51bGwpID0+IHtcbiAgICAgICAgICBpZiAoZ3JvdXBzV2l0aE9wdGlvbnMgPT09IG51bGwgfHwgc2VsZWN0ZWRPcHRpb25LZXkgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBhbGxPcHRpb25zID0gZ3JvdXBzV2l0aE9wdGlvbnMuZmxhdE1hcCgoZ3JvdXApID0+IGdyb3VwLm9wdGlvbnMpXG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRPcHRpb24gPSBhbGxPcHRpb25zLmZpbmQoKG9wdGlvbikgPT4gb3B0aW9uLmtleSA9PT0gc2VsZWN0ZWRPcHRpb25LZXkpXG4gICAgICAgICAgaWYgKCFzZWxlY3RlZE9wdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGV2ZW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKVxuICAgICAgICAgIH1cbiAgICAgICAgICBzZWxlY3RPcHRpb25BbmRDbGVhblVwKHNlbGVjdGVkT3B0aW9uKVxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIENPTU1BTkRfUFJJT1JJVFlfTE9XLFxuICAgICAgKSxcbiAgICApXG4gIH0sIFtcbiAgICBzZWxlY3RPcHRpb25BbmRDbGVhblVwLFxuICAgIGNsb3NlLFxuICAgIGVkaXRvcixcbiAgICBncm91cHNXaXRoT3B0aW9ucyxcbiAgICBzZWxlY3RlZE9wdGlvbktleSxcbiAgICB1cGRhdGVTZWxlY3RlZE9wdGlvbixcbiAgXSlcblxuICBjb25zdCBsaXN0SXRlbVByb3BzID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgZ3JvdXBzV2l0aE9wdGlvbnMsXG4gICAgICBzZWxlY3RPcHRpb25BbmRDbGVhblVwLFxuICAgICAgc2VsZWN0ZWRPcHRpb25LZXksXG4gICAgICBzZXRTZWxlY3RlZE9wdGlvbktleSxcbiAgICB9KSxcbiAgICBbc2VsZWN0T3B0aW9uQW5kQ2xlYW5VcCwgc2VsZWN0ZWRPcHRpb25LZXksIGdyb3Vwc1dpdGhPcHRpb25zXSxcbiAgKVxuXG4gIHJldHVybiBtZW51UmVuZGVyRm4oXG4gICAgYW5jaG9yRWxlbWVudFJlZixcbiAgICBsaXN0SXRlbVByb3BzLFxuICAgIHJlc29sdXRpb24ubWF0Y2ggPyByZXNvbHV0aW9uLm1hdGNoLm1hdGNoaW5nU3RyaW5nIDogJycsXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZU1lbnVBbmNob3JSZWYoXG4gIHJlc29sdXRpb246IE1lbnVSZXNvbHV0aW9uIHwgbnVsbCxcbiAgc2V0UmVzb2x1dGlvbjogKHI6IE1lbnVSZXNvbHV0aW9uIHwgbnVsbCkgPT4gdm9pZCxcbiAgY2xhc3NOYW1lPzogc3RyaW5nLFxuKTogTXV0YWJsZVJlZk9iamVjdDxIVE1MRWxlbWVudD4ge1xuICBjb25zdCBbZWRpdG9yXSA9IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQoKVxuICBjb25zdCBhbmNob3JFbGVtZW50UmVmID0gdXNlUmVmPEhUTUxFbGVtZW50Pihkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSlcbiAgY29uc3QgcG9zaXRpb25NZW51ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHJvb3RFbGVtZW50ID0gZWRpdG9yLmdldFJvb3RFbGVtZW50KClcbiAgICBjb25zdCBjb250YWluZXJEaXYgPSBhbmNob3JFbGVtZW50UmVmLmN1cnJlbnRcblxuICAgIGNvbnN0IFZFUlRJQ0FMX09GRlNFVCA9IDMyIGFzIGNvbnN0XG5cbiAgICBjb25zdCBtZW51RWxlID0gY29udGFpbmVyRGl2LmZpcnN0Q2hpbGQgYXMgRWxlbWVudFxuICAgIGlmIChyb290RWxlbWVudCAhPT0gbnVsbCAmJiByZXNvbHV0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB7IGhlaWdodCwgbGVmdCwgdG9wLCB3aWR0aCB9ID0gcmVzb2x1dGlvbi5nZXRSZWN0KClcbiAgICAgIGNvbnRhaW5lckRpdi5zdHlsZS50b3AgPSBgJHt0b3AgKyB3aW5kb3cuc2Nyb2xsWSArIFZFUlRJQ0FMX09GRlNFVH1weGBcbiAgICAgIGNvbnRhaW5lckRpdi5zdHlsZS5sZWZ0ID0gYCR7bGVmdCArIHdpbmRvdy5zY3JvbGxYfXB4YFxuICAgICAgY29udGFpbmVyRGl2LnN0eWxlLmhlaWdodCA9IGAke2hlaWdodH1weGBcbiAgICAgIGNvbnRhaW5lckRpdi5zdHlsZS53aWR0aCA9IGAke3dpZHRofXB4YFxuICAgICAgaWYgKG1lbnVFbGUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgbWVudVJlY3QgPSBtZW51RWxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICAgIGNvbnN0IG1lbnVIZWlnaHQgPSBtZW51UmVjdC5oZWlnaHRcbiAgICAgICAgY29uc3QgbWVudVdpZHRoID0gbWVudVJlY3Qud2lkdGhcblxuICAgICAgICBjb25zdCByb290RWxlbWVudFJlY3QgPSByb290RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuXG4gICAgICAgIGlmIChsZWZ0ICsgbWVudVdpZHRoID4gcm9vdEVsZW1lbnRSZWN0LnJpZ2h0KSB7XG4gICAgICAgICAgY29udGFpbmVyRGl2LnN0eWxlLmxlZnQgPSBgJHtyb290RWxlbWVudFJlY3QucmlnaHQgLSBtZW51V2lkdGggKyB3aW5kb3cuc2Nyb2xsWH1weGBcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHdvdWxkR29PZmZUb3BPZlNjcmVlbiA9IHRvcCA8IG1lbnVIZWlnaHRcbiAgICAgICAgY29uc3Qgd291bGRHb09mZkJvdHRvbU9mQ29udGFpbmVyID0gdG9wICsgbWVudUhlaWdodCA+IHJvb3RFbGVtZW50UmVjdC5ib3R0b21cblxuICAgICAgICAvLyBQb3NpdGlvbiBzbGFzaCBtZW51IGFib3ZlIHRoZSBjdXJzb3IgaW5zdGVhZCBvZiBiZWxvdyAoZGVmYXVsdCkgaWYgaXQgd291bGQgb3RoZXJ3aXNlIGdvIG9mZiB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4uXG4gICAgICAgIGlmIChcbiAgICAgICAgICAodG9wICsgbWVudUhlaWdodCA+IHdpbmRvdy5pbm5lckhlaWdodCB8fFxuICAgICAgICAgICAgKHdvdWxkR29PZmZCb3R0b21PZkNvbnRhaW5lciAmJiAhd291bGRHb09mZlRvcE9mU2NyZWVuKSkgJiZcbiAgICAgICAgICB0b3AgLSByb290RWxlbWVudFJlY3QudG9wID4gbWVudUhlaWdodFxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBtYXJnaW4gPSAyNFxuICAgICAgICAgIGNvbnRhaW5lckRpdi5zdHlsZS50b3AgPSBgJHtcbiAgICAgICAgICAgIHRvcCArIFZFUlRJQ0FMX09GRlNFVCAtIG1lbnVIZWlnaHQgKyB3aW5kb3cuc2Nyb2xsWSAtIChoZWlnaHQgKyBtYXJnaW4pXG4gICAgICAgICAgfXB4YFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghY29udGFpbmVyRGl2LmlzQ29ubmVjdGVkKSB7XG4gICAgICAgIGlmIChjbGFzc05hbWUgIT0gbnVsbCkge1xuICAgICAgICAgIGNvbnRhaW5lckRpdi5jbGFzc05hbWUgPSBjbGFzc05hbWVcbiAgICAgICAgfVxuICAgICAgICBjb250YWluZXJEaXYuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgJ1R5cGVhaGVhZCBtZW51JylcbiAgICAgICAgY29udGFpbmVyRGl2LnNldEF0dHJpYnV0ZSgnaWQnLCAndHlwZWFoZWFkLW1lbnUnKVxuICAgICAgICBjb250YWluZXJEaXYuc2V0QXR0cmlidXRlKCdyb2xlJywgJ2xpc3Rib3gnKVxuICAgICAgICBjb250YWluZXJEaXYuc3R5bGUuZGlzcGxheSA9ICdibG9jaydcbiAgICAgICAgY29udGFpbmVyRGl2LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJ1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZChjb250YWluZXJEaXYpXG4gICAgICB9XG4gICAgICBhbmNob3JFbGVtZW50UmVmLmN1cnJlbnQgPSBjb250YWluZXJEaXZcbiAgICAgIHJvb3RFbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1jb250cm9scycsICd0eXBlYWhlYWQtbWVudScpXG4gICAgfVxuICB9LCBbZWRpdG9yLCByZXNvbHV0aW9uLCBjbGFzc05hbWVdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgcm9vdEVsZW1lbnQgPSBlZGl0b3IuZ2V0Um9vdEVsZW1lbnQoKVxuICAgIGlmIChyZXNvbHV0aW9uICE9PSBudWxsKSB7XG4gICAgICBwb3NpdGlvbk1lbnUoKVxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgaWYgKHJvb3RFbGVtZW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgcm9vdEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWNvbnRyb2xzJylcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lckRpdiA9IGFuY2hvckVsZW1lbnRSZWYuY3VycmVudFxuICAgICAgICBpZiAoY29udGFpbmVyRGl2ICE9PSBudWxsICYmIGNvbnRhaW5lckRpdi5pc0Nvbm5lY3RlZCkge1xuICAgICAgICAgIGNvbnRhaW5lckRpdi5yZW1vdmUoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCBbZWRpdG9yLCBwb3NpdGlvbk1lbnUsIHJlc29sdXRpb25dKVxuXG4gIGNvbnN0IG9uVmlzaWJpbGl0eUNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChpc0luVmlldzogYm9vbGVhbikgPT4ge1xuICAgICAgaWYgKHJlc29sdXRpb24gIT09IG51bGwpIHtcbiAgICAgICAgaWYgKCFpc0luVmlldykge1xuICAgICAgICAgIHNldFJlc29sdXRpb24obnVsbClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW3Jlc29sdXRpb24sIHNldFJlc29sdXRpb25dLFxuICApXG5cbiAgdXNlRHluYW1pY1Bvc2l0aW9uaW5nKHJlc29sdXRpb24sIGFuY2hvckVsZW1lbnRSZWYuY3VycmVudCwgcG9zaXRpb25NZW51LCBvblZpc2liaWxpdHlDaGFuZ2UpXG5cbiAgcmV0dXJuIGFuY2hvckVsZW1lbnRSZWZcbn1cblxuZXhwb3J0IHR5cGUgVHJpZ2dlckZuID0gKHRleHQ6IHN0cmluZywgZWRpdG9yOiBMZXhpY2FsRWRpdG9yKSA9PiBNZW51VGV4dE1hdGNoIHwgbnVsbFxuIl0sIm5hbWVzIjpbIlBVTkNUVUFUSU9OIiwiU2xhc2hNZW51R3JvdXAiLCJTbGFzaE1lbnVPcHRpb24iLCJnZXRTY3JvbGxQYXJlbnQiLCJ1c2VEeW5hbWljUG9zaXRpb25pbmciLCJTQ1JPTExfVFlQRUFIRUFEX09QVElPTl9JTlRPX1ZJRVdfQ09NTUFORCIsIkxleGljYWxNZW51IiwidXNlTWVudUFuY2hvclJlZiIsIm9wdGlvbnMiLCJ0aXRsZSIsIkljb24iLCJkaXNwbGF5TmFtZSIsImtleSIsImtleWJvYXJkU2hvcnRjdXQiLCJrZXl3b3JkcyIsIm9uU2VsZWN0IiwicmVmIiwiY29uc3RydWN0b3IiLCJjdXJyZW50Iiwic2V0UmVmRWxlbWVudCIsImJpbmQiLCJlbGVtZW50Iiwic2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCIsInRhcmdldCIsInR5cGVhaGVhZENvbnRhaW5lck5vZGUiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwidHlwZWFoZWFkUmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInRvcCIsImhlaWdodCIsIndpbmRvdyIsImlubmVySGVpZ2h0Iiwic2Nyb2xsSW50b1ZpZXciLCJibG9jayIsImdldEZ1bGxNYXRjaE9mZnNldCIsImRvY3VtZW50VGV4dCIsImVudHJ5VGV4dCIsIm9mZnNldCIsInRyaWdnZXJPZmZzZXQiLCJpIiwibGVuZ3RoIiwic3Vic3RyIiwiJHNwbGl0Tm9kZUNvbnRhaW5pbmdRdWVyeSIsIm1hdGNoIiwic2VsZWN0aW9uIiwiJGdldFNlbGVjdGlvbiIsIiRpc1JhbmdlU2VsZWN0aW9uIiwiaXNDb2xsYXBzZWQiLCJhbmNob3IiLCJ0eXBlIiwiYW5jaG9yTm9kZSIsImdldE5vZGUiLCJpc1NpbXBsZVRleHQiLCJzZWxlY3Rpb25PZmZzZXQiLCJ0ZXh0Q29udGVudCIsImdldFRleHRDb250ZW50Iiwic2xpY2UiLCJjaGFyYWN0ZXJPZmZzZXQiLCJyZXBsYWNlYWJsZVN0cmluZyIsInF1ZXJ5T2Zmc2V0IiwibWF0Y2hpbmdTdHJpbmciLCJzdGFydE9mZnNldCIsIm5ld05vZGUiLCJzcGxpdFRleHQiLCJpbmNsdWRlSGlkZGVuIiwic3R5bGUiLCJnZXRDb21wdXRlZFN0eWxlIiwiZXhjbHVkZVN0YXRpY1BhcmVudCIsInBvc2l0aW9uIiwib3ZlcmZsb3dSZWdleCIsImJvZHkiLCJwYXJlbnQiLCJwYXJlbnRFbGVtZW50IiwidGVzdCIsIm92ZXJmbG93Iiwib3ZlcmZsb3dZIiwib3ZlcmZsb3dYIiwiaXNUcmlnZ2VyVmlzaWJsZUluTmVhcmVzdFNjcm9sbENvbnRhaW5lciIsInRhcmdldEVsZW1lbnQiLCJjb250YWluZXJFbGVtZW50IiwidFJlY3QiLCJjUmVjdCIsImJvdHRvbSIsInJlc29sdXRpb24iLCJvblJlcG9zaXRpb24iLCJvblZpc2liaWxpdHlDaGFuZ2UiLCJlZGl0b3IiLCJ1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IiwidXNlRWZmZWN0Iiwicm9vdEVsZW1lbnQiLCJnZXRSb290RWxlbWVudCIsInJvb3RTY3JvbGxQYXJlbnQiLCJ0aWNraW5nIiwicHJldmlvdXNJc0luVmlldyIsImhhbmRsZVNjcm9sbCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImlzSW5WaWV3IiwicmVzaXplT2JzZXJ2ZXIiLCJSZXNpemVPYnNlcnZlciIsImFkZEV2ZW50TGlzdGVuZXIiLCJjYXB0dXJlIiwicGFzc2l2ZSIsIm9ic2VydmUiLCJ1bm9ic2VydmUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiY3JlYXRlQ29tbWFuZCIsImFuY2hvckVsZW1lbnRSZWYiLCJjbG9zZSIsImdyb3Vwc1dpdGhPcHRpb25zIiwibWVudVJlbmRlckZuIiwib25TZWxlY3RPcHRpb24iLCJzaG91bGRTcGxpdE5vZGVXaXRoUXVlcnkiLCJzZWxlY3RlZE9wdGlvbktleSIsInNldFNlbGVjdGVkT3B0aW9uS2V5IiwidXNlU3RhdGUiLCJ1cGRhdGVTZWxlY3RlZE9wdGlvbiIsInVzZUNhbGxiYWNrIiwib3B0aW9uIiwicm9vdEVsZW0iLCJzZXRBdHRyaWJ1dGUiLCJzZXRTZWxlY3RlZE9wdGlvbktleVRvRmlyc3RNYXRjaGluZ09wdGlvbiIsImFsbE9wdGlvbnMiLCJmbGF0TWFwIiwiZ3JvdXAiLCJmaXJzdE1hdGNoaW5nT3B0aW9uIiwic2VsZWN0T3B0aW9uQW5kQ2xlYW5VcCIsInNlbGVjdGVkT3B0aW9uIiwidXBkYXRlIiwidGV4dE5vZGVDb250YWluaW5nUXVlcnkiLCJyZW1vdmVBdHRyaWJ1dGUiLCJ1c2VMYXlvdXRFZmZlY3QiLCJtZXJnZVJlZ2lzdGVyIiwicmVnaXN0ZXJDb21tYW5kIiwiQ09NTUFORF9QUklPUklUWV9MT1ciLCJLRVlfQVJST1dfRE9XTl9DT01NQU5EIiwicGF5bG9hZCIsImV2ZW50Iiwic2VsZWN0ZWRJbmRleCIsImZpbmRJbmRleCIsIm5ld1NlbGVjdGVkSW5kZXgiLCJuZXdTZWxlY3RlZE9wdGlvbiIsImRpc3BhdGNoQ29tbWFuZCIsImluZGV4IiwicHJldmVudERlZmF1bHQiLCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24iLCJLRVlfQVJST1dfVVBfQ09NTUFORCIsIktFWV9FU0NBUEVfQ09NTUFORCIsIktFWV9UQUJfQ09NTUFORCIsImZpbmQiLCJLRVlfRU5URVJfQ09NTUFORCIsImxpc3RJdGVtUHJvcHMiLCJ1c2VNZW1vIiwic2V0UmVzb2x1dGlvbiIsImNsYXNzTmFtZSIsInVzZVJlZiIsImNyZWF0ZUVsZW1lbnQiLCJwb3NpdGlvbk1lbnUiLCJjb250YWluZXJEaXYiLCJWRVJUSUNBTF9PRkZTRVQiLCJtZW51RWxlIiwiZmlyc3RDaGlsZCIsImxlZnQiLCJ3aWR0aCIsImdldFJlY3QiLCJzY3JvbGxZIiwic2Nyb2xsWCIsIm1lbnVSZWN0IiwibWVudUhlaWdodCIsIm1lbnVXaWR0aCIsInJvb3RFbGVtZW50UmVjdCIsInJpZ2h0Iiwid291bGRHb09mZlRvcE9mU2NyZWVuIiwid291bGRHb09mZkJvdHRvbU9mQ29udGFpbmVyIiwibWFyZ2luIiwiaXNDb25uZWN0ZWQiLCJkaXNwbGF5IiwiYXBwZW5k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
469
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvU2xhc2hNZW51L0xleGljYWxUeXBlYWhlYWRNZW51UGx1Z2luL0xleGljYWxNZW51LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IGkxOG4gfSBmcm9tICdpMThuZXh0J1xuaW1wb3J0IHR5cGUgeyBMZXhpY2FsQ29tbWFuZCwgTGV4aWNhbEVkaXRvciwgVGV4dE5vZGUgfSBmcm9tICdsZXhpY2FsJ1xuaW1wb3J0IHR5cGUgeyBNdXRhYmxlUmVmT2JqZWN0LCBSZWFjdFBvcnRhbCB9IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgeyB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IH0gZnJvbSAnQGxleGljYWwvcmVhY3QvTGV4aWNhbENvbXBvc2VyQ29udGV4dCdcbmltcG9ydCB7IG1lcmdlUmVnaXN0ZXIgfSBmcm9tICdAbGV4aWNhbC91dGlscydcbmltcG9ydCB7XG4gICRnZXRTZWxlY3Rpb24sXG4gICRpc1JhbmdlU2VsZWN0aW9uLFxuICBDT01NQU5EX1BSSU9SSVRZX0xPVyxcbiAgS0VZX0FSUk9XX0RPV05fQ09NTUFORCxcbiAgS0VZX0FSUk9XX1VQX0NPTU1BTkQsXG4gIEtFWV9FTlRFUl9DT01NQU5ELFxuICBLRVlfRVNDQVBFX0NPTU1BTkQsXG4gIEtFWV9UQUJfQ09NTUFORCxcbiAgY3JlYXRlQ29tbWFuZCxcbn0gZnJvbSAnbGV4aWNhbCdcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZUxheW91dEVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuXG5leHBvcnQgdHlwZSBNZW51VGV4dE1hdGNoID0ge1xuICBsZWFkT2Zmc2V0OiBudW1iZXJcbiAgbWF0Y2hpbmdTdHJpbmc6IHN0cmluZ1xuICByZXBsYWNlYWJsZVN0cmluZzogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIE1lbnVSZXNvbHV0aW9uID0ge1xuICBnZXRSZWN0OiAoKSA9PiBET01SZWN0XG4gIG1hdGNoPzogTWVudVRleHRNYXRjaFxufVxuXG5leHBvcnQgY29uc3QgUFVOQ1RVQVRJT04gPSAnXFxcXC4sXFxcXCtcXFxcKlxcXFw/XFxcXCRcXFxcQFxcXFx8I3t9XFxcXChcXFxcKVxcXFxeXFxcXC1cXFxcW1xcXFxdXFxcXFxcXFwvISVcXCdcIn49PD5fOjsnXG5cbmV4cG9ydCBjbGFzcyBTbGFzaE1lbnVHcm91cCB7XG4gIG9wdGlvbnM6IEFycmF5PFNsYXNoTWVudU9wdGlvbj5cbiAgdGl0bGU6IHN0cmluZ1xufVxuXG5leHBvcnQgY2xhc3MgU2xhc2hNZW51T3B0aW9uIHtcbiAgSWNvbjogUmVhY3QuRkNcblxuICBkaXNwbGF5TmFtZT86ICh7IGkxOG4gfTogeyBpMThuOiBpMThuIH0pID0+IHN0cmluZ1xuICAvLyBJY29uIGZvciBkaXNwbGF5XG4gIGtleTogc3RyaW5nXG4gIC8vIFRCRFxuICBrZXlib2FyZFNob3J0Y3V0Pzogc3RyaW5nXG4gIC8vIEZvciBleHRyYSBzZWFyY2hpbmcuXG4gIGtleXdvcmRzOiBBcnJheTxzdHJpbmc+XG4gIC8vIFdoYXQgaGFwcGVucyB3aGVuIHlvdSBzZWxlY3QgdGhpcyBvcHRpb24/XG4gIG9uU2VsZWN0OiAoeyBlZGl0b3IsIHF1ZXJ5U3RyaW5nIH06IHsgZWRpdG9yOiBMZXhpY2FsRWRpdG9yOyBxdWVyeVN0cmluZzogc3RyaW5nIH0pID0+IHZvaWRcblxuICByZWY/OiBNdXRhYmxlUmVmT2JqZWN0PEhUTUxFbGVtZW50IHwgbnVsbD5cblxuICAvLyBXaGF0IHNob3dzIHVwIGluIHRoZSBlZGl0b3JcbiAgdGl0bGU6IHN0cmluZ1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgSWNvbjogUmVhY3QuRkNcbiAgICAgIGRpc3BsYXlOYW1lPzogKHsgaTE4biB9OiB7IGkxOG46IGkxOG4gfSkgPT4gc3RyaW5nXG4gICAgICBrZXlib2FyZFNob3J0Y3V0Pzogc3RyaW5nXG4gICAgICBrZXl3b3Jkcz86IEFycmF5PHN0cmluZz5cbiAgICAgIG9uU2VsZWN0OiAoeyBlZGl0b3IsIHF1ZXJ5U3RyaW5nIH06IHsgZWRpdG9yOiBMZXhpY2FsRWRpdG9yOyBxdWVyeVN0cmluZzogc3RyaW5nIH0pID0+IHZvaWRcbiAgICB9LFxuICApIHtcbiAgICB0aGlzLmtleSA9IHRpdGxlXG4gICAgdGhpcy5yZWYgPSB7IGN1cnJlbnQ6IG51bGwgfVxuICAgIHRoaXMuc2V0UmVmRWxlbWVudCA9IHRoaXMuc2V0UmVmRWxlbWVudC5iaW5kKHRoaXMpXG5cbiAgICB0aGlzLnRpdGxlID0gdGl0bGVcbiAgICB0aGlzLmRpc3BsYXlOYW1lID0gb3B0aW9ucy5kaXNwbGF5TmFtZVxuICAgIHRoaXMua2V5d29yZHMgPSBvcHRpb25zLmtleXdvcmRzIHx8IFtdXG4gICAgdGhpcy5JY29uID0gb3B0aW9ucy5JY29uXG4gICAgdGhpcy5rZXlib2FyZFNob3J0Y3V0ID0gb3B0aW9ucy5rZXlib2FyZFNob3J0Y3V0XG4gICAgdGhpcy5vblNlbGVjdCA9IG9wdGlvbnMub25TZWxlY3QuYmluZCh0aGlzKVxuICB9XG5cbiAgc2V0UmVmRWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwpIHtcbiAgICB0aGlzLnJlZiA9IHsgY3VycmVudDogZWxlbWVudCB9XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgTWVudVJlbmRlckZuID0gKFxuICBhbmNob3JFbGVtZW50UmVmOiBNdXRhYmxlUmVmT2JqZWN0PEhUTUxFbGVtZW50IHwgbnVsbD4sXG4gIGl0ZW1Qcm9wczoge1xuICAgIGdyb3Vwc1dpdGhPcHRpb25zOiBBcnJheTxTbGFzaE1lbnVHcm91cD5cbiAgICBzZWxlY3RPcHRpb25BbmRDbGVhblVwOiAoc2VsZWN0ZWRPcHRpb246IFNsYXNoTWVudU9wdGlvbikgPT4gdm9pZFxuICAgIHNlbGVjdGVkT3B0aW9uS2V5OiBudWxsIHwgc3RyaW5nXG4gICAgc2V0U2VsZWN0ZWRPcHRpb25LZXk6IChvcHRpb25LZXk6IHN0cmluZykgPT4gdm9pZFxuICB9LFxuICBtYXRjaGluZ1N0cmluZzogbnVsbCB8IHN0cmluZyxcbikgPT4gSlNYLkVsZW1lbnQgfCBSZWFjdFBvcnRhbCB8IG51bGxcblxuY29uc3Qgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCA9ICh0YXJnZXQ6IEhUTUxFbGVtZW50KSA9PiB7XG4gIGNvbnN0IHR5cGVhaGVhZENvbnRhaW5lck5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHlwZWFoZWFkLW1lbnUnKVxuICBpZiAoIXR5cGVhaGVhZENvbnRhaW5lck5vZGUpIHJldHVyblxuXG4gIGNvbnN0IHR5cGVhaGVhZFJlY3QgPSB0eXBlYWhlYWRDb250YWluZXJOb2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG5cbiAgaWYgKHR5cGVhaGVhZFJlY3QudG9wICsgdHlwZWFoZWFkUmVjdC5oZWlnaHQgPiB3aW5kb3cuaW5uZXJIZWlnaHQpIHtcbiAgICB0eXBlYWhlYWRDb250YWluZXJOb2RlLnNjcm9sbEludG9WaWV3KHtcbiAgICAgIGJsb2NrOiAnY2VudGVyJyxcbiAgICB9KVxuICB9XG5cbiAgaWYgKHR5cGVhaGVhZFJlY3QudG9wIDwgMCkge1xuICAgIHR5cGVhaGVhZENvbnRhaW5lck5vZGUuc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgYmxvY2s6ICdjZW50ZXInLFxuICAgIH0pXG4gIH1cblxuICB0YXJnZXQuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ25lYXJlc3QnIH0pXG59XG5cbi8qKlxuICogV2FsayBiYWNrd2FyZHMgYWxvbmcgdXNlciBpbnB1dCBhbmQgZm9yd2FyZCB0aHJvdWdoIGVudGl0eSB0aXRsZSB0byB0cnlcbiAqIGFuZCByZXBsYWNlIG1vcmUgb2YgdGhlIHVzZXIncyB0ZXh0IHdpdGggZW50aXR5LlxuICovXG5mdW5jdGlvbiBnZXRGdWxsTWF0Y2hPZmZzZXQoZG9jdW1lbnRUZXh0OiBzdHJpbmcsIGVudHJ5VGV4dDogc3RyaW5nLCBvZmZzZXQ6IG51bWJlcik6IG51bWJlciB7XG4gIGxldCB0cmlnZ2VyT2Zmc2V0ID0gb2Zmc2V0XG4gIGZvciAobGV0IGkgPSB0cmlnZ2VyT2Zmc2V0OyBpIDw9IGVudHJ5VGV4dC5sZW5ndGg7IGkrKykge1xuICAgIGlmIChkb2N1bWVudFRleHQuc3Vic3RyKC1pKSA9PT0gZW50cnlUZXh0LnN1YnN0cigwLCBpKSkge1xuICAgICAgdHJpZ2dlck9mZnNldCA9IGlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRyaWdnZXJPZmZzZXRcbn1cblxuLyoqXG4gKiBTcGxpdCBMZXhpY2FsIFRleHROb2RlIGFuZCByZXR1cm4gYSBuZXcgVGV4dE5vZGUgb25seSBjb250YWluaW5nIG1hdGNoZWQgdGV4dC5cbiAqIENvbW1vbiB1c2UgY2FzZXMgaW5jbHVkZTogcmVtb3ZpbmcgdGhlIG5vZGUsIHJlcGxhY2luZyB3aXRoIGEgbmV3IG5vZGUuXG4gKi9cbmZ1bmN0aW9uICRzcGxpdE5vZGVDb250YWluaW5nUXVlcnkobWF0Y2g6IE1lbnVUZXh0TWF0Y2gpOiBUZXh0Tm9kZSB8IG51bGwge1xuICBjb25zdCBzZWxlY3Rpb24gPSAkZ2V0U2VsZWN0aW9uKClcbiAgaWYgKCEkaXNSYW5nZVNlbGVjdGlvbihzZWxlY3Rpb24pIHx8ICFzZWxlY3Rpb24uaXNDb2xsYXBzZWQoKSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgYW5jaG9yID0gc2VsZWN0aW9uLmFuY2hvclxuICBpZiAoYW5jaG9yLnR5cGUgIT09ICd0ZXh0Jykge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgYW5jaG9yTm9kZSA9IGFuY2hvci5nZXROb2RlKClcbiAgaWYgKCFhbmNob3JOb2RlLmlzU2ltcGxlVGV4dCgpKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBjb25zdCBzZWxlY3Rpb25PZmZzZXQgPSBhbmNob3Iub2Zmc2V0XG4gIGNvbnN0IHRleHRDb250ZW50ID0gYW5jaG9yTm9kZS5nZXRUZXh0Q29udGVudCgpLnNsaWNlKDAsIHNlbGVjdGlvbk9mZnNldClcbiAgY29uc3QgY2hhcmFjdGVyT2Zmc2V0ID0gbWF0Y2gucmVwbGFjZWFibGVTdHJpbmcubGVuZ3RoXG4gIGNvbnN0IHF1ZXJ5T2Zmc2V0ID0gZ2V0RnVsbE1hdGNoT2Zmc2V0KHRleHRDb250ZW50LCBtYXRjaC5tYXRjaGluZ1N0cmluZywgY2hhcmFjdGVyT2Zmc2V0KVxuICBjb25zdCBzdGFydE9mZnNldCA9IHNlbGVjdGlvbk9mZnNldCAtIHF1ZXJ5T2Zmc2V0XG4gIGlmIChzdGFydE9mZnNldCA8IDApIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGxldCBuZXdOb2RlXG4gIGlmIChzdGFydE9mZnNldCA9PT0gMCkge1xuICAgIDtbbmV3Tm9kZV0gPSBhbmNob3JOb2RlLnNwbGl0VGV4dChzZWxlY3Rpb25PZmZzZXQpXG4gIH0gZWxzZSB7XG4gICAgO1ssIG5ld05vZGVdID0gYW5jaG9yTm9kZS5zcGxpdFRleHQoc3RhcnRPZmZzZXQsIHNlbGVjdGlvbk9mZnNldClcbiAgfVxuXG4gIHJldHVybiBuZXdOb2RlXG59XG5cbi8vIEdvdCBmcm9tIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS80MjU0MzkwOC8yMDEzNTgwXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2Nyb2xsUGFyZW50KFxuICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgaW5jbHVkZUhpZGRlbjogYm9vbGVhbixcbik6IEhUTUxCb2R5RWxlbWVudCB8IEhUTUxFbGVtZW50IHtcbiAgbGV0IHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KVxuICBjb25zdCBleGNsdWRlU3RhdGljUGFyZW50ID0gc3R5bGUucG9zaXRpb24gPT09ICdhYnNvbHV0ZSdcbiAgY29uc3Qgb3ZlcmZsb3dSZWdleCA9IGluY2x1ZGVIaWRkZW4gPyAvKGF1dG98c2Nyb2xsfGhpZGRlbikvIDogLyhhdXRvfHNjcm9sbCkvXG4gIGlmIChzdHlsZS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgIHJldHVybiBkb2N1bWVudC5ib2R5XG4gIH1cbiAgZm9yIChsZXQgcGFyZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBlbGVtZW50OyAocGFyZW50ID0gcGFyZW50LnBhcmVudEVsZW1lbnQpOyApIHtcbiAgICBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUocGFyZW50KVxuICAgIGlmIChleGNsdWRlU3RhdGljUGFyZW50ICYmIHN0eWxlLnBvc2l0aW9uID09PSAnc3RhdGljJykge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKG92ZXJmbG93UmVnZXgudGVzdChzdHlsZS5vdmVyZmxvdyArIHN0eWxlLm92ZXJmbG93WSArIHN0eWxlLm92ZXJmbG93WCkpIHtcbiAgICAgIHJldHVybiBwYXJlbnRcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRvY3VtZW50LmJvZHlcbn1cblxuZnVuY3Rpb24gaXNUcmlnZ2VyVmlzaWJsZUluTmVhcmVzdFNjcm9sbENvbnRhaW5lcihcbiAgdGFyZ2V0RWxlbWVudDogSFRNTEVsZW1lbnQsXG4gIGNvbnRhaW5lckVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHRSZWN0ID0gdGFyZ2V0RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICBjb25zdCBjUmVjdCA9IGNvbnRhaW5lckVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgcmV0dXJuIHRSZWN0LnRvcCA+IGNSZWN0LnRvcCAmJiB0UmVjdC50b3AgPCBjUmVjdC5ib3R0b21cbn1cblxuLy8gUmVwb3NpdGlvbiB0aGUgbWVudSBvbiBzY3JvbGwsIHdpbmRvdyByZXNpemUsIGFuZCBlbGVtZW50IHJlc2l6ZS5cbmV4cG9ydCBmdW5jdGlvbiB1c2VEeW5hbWljUG9zaXRpb25pbmcoXG4gIHJlc29sdXRpb246IE1lbnVSZXNvbHV0aW9uIHwgbnVsbCxcbiAgdGFyZ2V0RWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsLFxuICBvblJlcG9zaXRpb246ICgpID0+IHZvaWQsXG4gIG9uVmlzaWJpbGl0eUNoYW5nZT86IChpc0luVmlldzogYm9vbGVhbikgPT4gdm9pZCxcbikge1xuICBjb25zdCBbZWRpdG9yXSA9IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQoKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0YXJnZXRFbGVtZW50ICE9IG51bGwgJiYgcmVzb2x1dGlvbiAhPSBudWxsKSB7XG4gICAgICBjb25zdCByb290RWxlbWVudCA9IGVkaXRvci5nZXRSb290RWxlbWVudCgpXG4gICAgICBjb25zdCByb290U2Nyb2xsUGFyZW50ID1cbiAgICAgICAgcm9vdEVsZW1lbnQgIT0gbnVsbCA/IGdldFNjcm9sbFBhcmVudChyb290RWxlbWVudCwgZmFsc2UpIDogZG9jdW1lbnQuYm9keVxuICAgICAgbGV0IHRpY2tpbmcgPSBmYWxzZVxuICAgICAgbGV0IHByZXZpb3VzSXNJblZpZXcgPSBpc1RyaWdnZXJWaXNpYmxlSW5OZWFyZXN0U2Nyb2xsQ29udGFpbmVyKFxuICAgICAgICB0YXJnZXRFbGVtZW50LFxuICAgICAgICByb290U2Nyb2xsUGFyZW50LFxuICAgICAgKVxuICAgICAgY29uc3QgaGFuZGxlU2Nyb2xsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIXRpY2tpbmcpIHtcbiAgICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIG9uUmVwb3NpdGlvbigpXG4gICAgICAgICAgICB0aWNraW5nID0gZmFsc2VcbiAgICAgICAgICB9KVxuICAgICAgICAgIHRpY2tpbmcgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXNJblZpZXcgPSBpc1RyaWdnZXJWaXNpYmxlSW5OZWFyZXN0U2Nyb2xsQ29udGFpbmVyKHRhcmdldEVsZW1lbnQsIHJvb3RTY3JvbGxQYXJlbnQpXG4gICAgICAgIGlmIChpc0luVmlldyAhPT0gcHJldmlvdXNJc0luVmlldykge1xuICAgICAgICAgIHByZXZpb3VzSXNJblZpZXcgPSBpc0luVmlld1xuICAgICAgICAgIGlmIChvblZpc2liaWxpdHlDaGFuZ2UgIT0gbnVsbCkge1xuICAgICAgICAgICAgb25WaXNpYmlsaXR5Q2hhbmdlKGlzSW5WaWV3KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3QgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIob25SZXBvc2l0aW9uKVxuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG9uUmVwb3NpdGlvbilcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCwge1xuICAgICAgICBjYXB0dXJlOiB0cnVlLFxuICAgICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgfSlcbiAgICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGFyZ2V0RWxlbWVudClcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHJlc2l6ZU9ic2VydmVyLnVub2JzZXJ2ZSh0YXJnZXRFbGVtZW50KVxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgb25SZXBvc2l0aW9uKVxuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwsIHRydWUpXG4gICAgICB9XG4gICAgfVxuICB9LCBbdGFyZ2V0RWxlbWVudCwgZWRpdG9yLCBvblZpc2liaWxpdHlDaGFuZ2UsIG9uUmVwb3NpdGlvbiwgcmVzb2x1dGlvbl0pXG59XG5cbmV4cG9ydCBjb25zdCBTQ1JPTExfVFlQRUFIRUFEX09QVElPTl9JTlRPX1ZJRVdfQ09NTUFORDogTGV4aWNhbENvbW1hbmQ8e1xuICBpbmRleDogbnVtYmVyXG4gIG9wdGlvbjogU2xhc2hNZW51T3B0aW9uXG59PiA9IGNyZWF0ZUNvbW1hbmQoJ1NDUk9MTF9UWVBFQUhFQURfT1BUSU9OX0lOVE9fVklFV19DT01NQU5EJylcblxuZXhwb3J0IGZ1bmN0aW9uIExleGljYWxNZW51KHtcbiAgYW5jaG9yRWxlbWVudFJlZixcbiAgY2xvc2UsXG4gIGVkaXRvcixcbiAgLy8gZ3JvdXBzV2l0aE9wdGlvbnMgZmlsdGVyaW5nIGlzIGFscmVhZHkgaGFuZGxlZCBpbiBTbGFzaE1lbnUvaW5kZXgudHN4LiBUaHVzLCBncm91cHNXaXRoT3B0aW9ucyBhbHdheXMgY29udGFpbnMgdGhlIG1hdGNoaW5nIG9wdGlvbnMuXG4gIGdyb3Vwc1dpdGhPcHRpb25zLFxuICBtZW51UmVuZGVyRm4sXG4gIG9uU2VsZWN0T3B0aW9uLFxuICByZXNvbHV0aW9uLFxuICBzaG91bGRTcGxpdE5vZGVXaXRoUXVlcnkgPSBmYWxzZSxcbn06IHtcbiAgYW5jaG9yRWxlbWVudFJlZjogTXV0YWJsZVJlZk9iamVjdDxIVE1MRWxlbWVudD5cbiAgY2xvc2U6ICgpID0+IHZvaWRcbiAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yXG4gIGdyb3Vwc1dpdGhPcHRpb25zOiBBcnJheTxTbGFzaE1lbnVHcm91cD5cbiAgbWVudVJlbmRlckZuOiBNZW51UmVuZGVyRm5cbiAgb25TZWxlY3RPcHRpb246IChcbiAgICBvcHRpb246IFNsYXNoTWVudU9wdGlvbixcbiAgICB0ZXh0Tm9kZUNvbnRhaW5pbmdRdWVyeTogVGV4dE5vZGUgfCBudWxsLFxuICAgIGNsb3NlTWVudTogKCkgPT4gdm9pZCxcbiAgICBtYXRjaGluZ1N0cmluZzogc3RyaW5nLFxuICApID0+IHZvaWRcbiAgcmVzb2x1dGlvbjogTWVudVJlc29sdXRpb25cbiAgc2hvdWxkU3BsaXROb2RlV2l0aFF1ZXJ5PzogYm9vbGVhblxufSk6IEpTWC5FbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IFtzZWxlY3RlZE9wdGlvbktleSwgc2V0U2VsZWN0ZWRPcHRpb25LZXldID0gdXNlU3RhdGU8bnVsbCB8IHN0cmluZz4obnVsbClcblxuICBjb25zdCBtYXRjaGluZ1N0cmluZyA9IChyZXNvbHV0aW9uLm1hdGNoICYmIHJlc29sdXRpb24ubWF0Y2gubWF0Y2hpbmdTdHJpbmcpIHx8ICcnXG5cbiAgY29uc3QgdXBkYXRlU2VsZWN0ZWRPcHRpb24gPSB1c2VDYWxsYmFjayhcbiAgICAob3B0aW9uOiBTbGFzaE1lbnVPcHRpb24pID0+IHtcbiAgICAgIGNvbnN0IHJvb3RFbGVtID0gZWRpdG9yLmdldFJvb3RFbGVtZW50KClcbiAgICAgIGlmIChyb290RWxlbSAhPT0gbnVsbCkge1xuICAgICAgICByb290RWxlbS5zZXRBdHRyaWJ1dGUoJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcsICd0eXBlYWhlYWQtaXRlbS0nICsgb3B0aW9uLmtleSlcbiAgICAgICAgc2V0U2VsZWN0ZWRPcHRpb25LZXkob3B0aW9uLmtleSlcbiAgICAgIH1cbiAgICB9LFxuICAgIFtlZGl0b3JdLFxuICApXG5cbiAgY29uc3Qgc2V0U2VsZWN0ZWRPcHRpb25LZXlUb0ZpcnN0TWF0Y2hpbmdPcHRpb24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgLy8gc2V0IHNlbGVjdGVkIG9wdGlvbiB0byB0aGUgZmlyc3Qgb2YgdGhlIG1hdGNoaW5nIG9uZXNcbiAgICBpZiAoZ3JvdXBzV2l0aE9wdGlvbnMgIT09IG51bGwgJiYgbWF0Y2hpbmdTdHJpbmcgIT0gbnVsbCkge1xuICAgICAgLy8gZ3JvdXBzV2l0aE9wdGlvbnMgZmlsdGVyaW5nIGlzIGFscmVhZHkgaGFuZGxlZCBpbiBTbGFzaE1lbnUvaW5kZXgudHN4LiBUaHVzLCBncm91cHNXaXRoT3B0aW9ucyBhbHdheXMgY29udGFpbnMgdGhlIG1hdGNoaW5nIG9wdGlvbnMuXG4gICAgICBjb25zdCBhbGxPcHRpb25zID0gZ3JvdXBzV2l0aE9wdGlvbnMuZmxhdE1hcCgoZ3JvdXApID0+IGdyb3VwLm9wdGlvbnMpXG5cbiAgICAgIGlmIChhbGxPcHRpb25zLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBmaXJzdE1hdGNoaW5nT3B0aW9uID0gYWxsT3B0aW9uc1swXVxuICAgICAgICB1cGRhdGVTZWxlY3RlZE9wdGlvbihmaXJzdE1hdGNoaW5nT3B0aW9uKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2dyb3Vwc1dpdGhPcHRpb25zLCB1cGRhdGVTZWxlY3RlZE9wdGlvbiwgbWF0Y2hpbmdTdHJpbmddKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0U2VsZWN0ZWRPcHRpb25LZXlUb0ZpcnN0TWF0Y2hpbmdPcHRpb24oKVxuICB9LCBbbWF0Y2hpbmdTdHJpbmcsIHNldFNlbGVjdGVkT3B0aW9uS2V5VG9GaXJzdE1hdGNoaW5nT3B0aW9uXSlcblxuICBjb25zdCBzZWxlY3RPcHRpb25BbmRDbGVhblVwID0gdXNlQ2FsbGJhY2soXG4gICAgKHNlbGVjdGVkT3B0aW9uOiBTbGFzaE1lbnVPcHRpb24pID0+IHtcbiAgICAgIGVkaXRvci51cGRhdGUoKCkgPT4ge1xuICAgICAgICBjb25zdCB0ZXh0Tm9kZUNvbnRhaW5pbmdRdWVyeSA9XG4gICAgICAgICAgcmVzb2x1dGlvbi5tYXRjaCAhPSBudWxsICYmIHNob3VsZFNwbGl0Tm9kZVdpdGhRdWVyeVxuICAgICAgICAgICAgPyAkc3BsaXROb2RlQ29udGFpbmluZ1F1ZXJ5KHJlc29sdXRpb24ubWF0Y2gpXG4gICAgICAgICAgICA6IG51bGxcblxuICAgICAgICBvblNlbGVjdE9wdGlvbihcbiAgICAgICAgICBzZWxlY3RlZE9wdGlvbixcbiAgICAgICAgICB0ZXh0Tm9kZUNvbnRhaW5pbmdRdWVyeSxcbiAgICAgICAgICBjbG9zZSxcbiAgICAgICAgICByZXNvbHV0aW9uLm1hdGNoID8gcmVzb2x1dGlvbi5tYXRjaC5tYXRjaGluZ1N0cmluZyA6ICcnLFxuICAgICAgICApXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2VkaXRvciwgc2hvdWxkU3BsaXROb2RlV2l0aFF1ZXJ5LCByZXNvbHV0aW9uLm1hdGNoLCBvblNlbGVjdE9wdGlvbiwgY2xvc2VdLFxuICApXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY29uc3Qgcm9vdEVsZW0gPSBlZGl0b3IuZ2V0Um9vdEVsZW1lbnQoKVxuICAgICAgaWYgKHJvb3RFbGVtICE9PSBudWxsKSB7XG4gICAgICAgIHJvb3RFbGVtLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1hY3RpdmVkZXNjZW5kYW50JylcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtlZGl0b3JdKVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGdyb3Vwc1dpdGhPcHRpb25zID09PSBudWxsKSB7XG4gICAgICBzZXRTZWxlY3RlZE9wdGlvbktleShudWxsKVxuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWRPcHRpb25LZXkgPT09IG51bGwpIHtcbiAgICAgIHNldFNlbGVjdGVkT3B0aW9uS2V5VG9GaXJzdE1hdGNoaW5nT3B0aW9uKClcbiAgICB9XG4gIH0sIFtcbiAgICBncm91cHNXaXRoT3B0aW9ucyxcbiAgICBzZWxlY3RlZE9wdGlvbktleSxcbiAgICB1cGRhdGVTZWxlY3RlZE9wdGlvbixcbiAgICBzZXRTZWxlY3RlZE9wdGlvbktleVRvRmlyc3RNYXRjaGluZ09wdGlvbixcbiAgXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiBtZXJnZVJlZ2lzdGVyKFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyQ29tbWFuZChcbiAgICAgICAgU0NST0xMX1RZUEVBSEVBRF9PUFRJT05fSU5UT19WSUVXX0NPTU1BTkQsXG4gICAgICAgICh7IG9wdGlvbiB9KSA9PiB7XG4gICAgICAgICAgaWYgKG9wdGlvbi5yZWYgJiYgb3B0aW9uLnJlZi5jdXJyZW50ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHNjcm9sbEludG9WaWV3SWZOZWVkZWQob3B0aW9uLnJlZi5jdXJyZW50KVxuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gICAgICApLFxuICAgIClcbiAgfSwgW2VkaXRvciwgdXBkYXRlU2VsZWN0ZWRPcHRpb25dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuIG1lcmdlUmVnaXN0ZXIoXG4gICAgICBlZGl0b3IucmVnaXN0ZXJDb21tYW5kPEtleWJvYXJkRXZlbnQ+KFxuICAgICAgICBLRVlfQVJST1dfRE9XTl9DT01NQU5ELFxuICAgICAgICAocGF5bG9hZCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGV2ZW50ID0gcGF5bG9hZFxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGdyb3Vwc1dpdGhPcHRpb25zICE9PSBudWxsICYmXG4gICAgICAgICAgICBncm91cHNXaXRoT3B0aW9ucy5sZW5ndGggJiZcbiAgICAgICAgICAgIHNlbGVjdGVkT3B0aW9uS2V5ICE9PSBudWxsXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBhbGxPcHRpb25zID0gZ3JvdXBzV2l0aE9wdGlvbnMuZmxhdE1hcCgoZ3JvdXApID0+IGdyb3VwLm9wdGlvbnMpXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gYWxsT3B0aW9ucy5maW5kSW5kZXgoKG9wdGlvbikgPT4gb3B0aW9uLmtleSA9PT0gc2VsZWN0ZWRPcHRpb25LZXkpXG5cbiAgICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkSW5kZXggPSBzZWxlY3RlZEluZGV4ICE9PSBhbGxPcHRpb25zLmxlbmd0aCAtIDEgPyBzZWxlY3RlZEluZGV4ICsgMSA6IDBcblxuICAgICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRPcHRpb24gPSBhbGxPcHRpb25zW25ld1NlbGVjdGVkSW5kZXhdXG5cbiAgICAgICAgICAgIHVwZGF0ZVNlbGVjdGVkT3B0aW9uKG5ld1NlbGVjdGVkT3B0aW9uKVxuICAgICAgICAgICAgaWYgKG5ld1NlbGVjdGVkT3B0aW9uLnJlZiAhPSBudWxsICYmIG5ld1NlbGVjdGVkT3B0aW9uLnJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICAgIGVkaXRvci5kaXNwYXRjaENvbW1hbmQoU0NST0xMX1RZUEVBSEVBRF9PUFRJT05fSU5UT19WSUVXX0NPTU1BTkQsIHtcbiAgICAgICAgICAgICAgICBpbmRleDogbmV3U2VsZWN0ZWRJbmRleCxcbiAgICAgICAgICAgICAgICBvcHRpb246IG5ld1NlbGVjdGVkT3B0aW9uLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKClcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gICAgICApLFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyQ29tbWFuZDxLZXlib2FyZEV2ZW50PihcbiAgICAgICAgS0VZX0FSUk9XX1VQX0NPTU1BTkQsXG4gICAgICAgIChwYXlsb2FkKSA9PiB7XG4gICAgICAgICAgY29uc3QgZXZlbnQgPSBwYXlsb2FkXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZ3JvdXBzV2l0aE9wdGlvbnMgIT09IG51bGwgJiZcbiAgICAgICAgICAgIGdyb3Vwc1dpdGhPcHRpb25zLmxlbmd0aCAmJlxuICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb25LZXkgIT09IG51bGxcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IGFsbE9wdGlvbnMgPSBncm91cHNXaXRoT3B0aW9ucy5mbGF0TWFwKChncm91cCkgPT4gZ3JvdXAub3B0aW9ucylcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSBhbGxPcHRpb25zLmZpbmRJbmRleCgob3B0aW9uKSA9PiBvcHRpb24ua2V5ID09PSBzZWxlY3RlZE9wdGlvbktleSlcblxuICAgICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRJbmRleCA9IHNlbGVjdGVkSW5kZXggIT09IDAgPyBzZWxlY3RlZEluZGV4IC0gMSA6IGFsbE9wdGlvbnMubGVuZ3RoIC0gMVxuXG4gICAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZE9wdGlvbiA9IGFsbE9wdGlvbnNbbmV3U2VsZWN0ZWRJbmRleF1cblxuICAgICAgICAgICAgdXBkYXRlU2VsZWN0ZWRPcHRpb24obmV3U2VsZWN0ZWRPcHRpb24pXG4gICAgICAgICAgICBpZiAobmV3U2VsZWN0ZWRPcHRpb24ucmVmICE9IG51bGwgJiYgbmV3U2VsZWN0ZWRPcHRpb24ucmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChuZXdTZWxlY3RlZE9wdGlvbi5yZWYuY3VycmVudClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIENPTU1BTkRfUFJJT1JJVFlfTE9XLFxuICAgICAgKSxcbiAgICAgIGVkaXRvci5yZWdpc3RlckNvbW1hbmQ8S2V5Ym9hcmRFdmVudD4oXG4gICAgICAgIEtFWV9FU0NBUEVfQ09NTUFORCxcbiAgICAgICAgKHBheWxvYWQpID0+IHtcbiAgICAgICAgICBjb25zdCBldmVudCA9IHBheWxvYWRcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKClcbiAgICAgICAgICBjbG9zZSgpXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gICAgICApLFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyQ29tbWFuZDxLZXlib2FyZEV2ZW50PihcbiAgICAgICAgS0VZX1RBQl9DT01NQU5ELFxuICAgICAgICAocGF5bG9hZCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGV2ZW50ID0gcGF5bG9hZFxuXG4gICAgICAgICAgaWYgKGdyb3Vwc1dpdGhPcHRpb25zID09PSBudWxsIHx8IHNlbGVjdGVkT3B0aW9uS2V5ID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgYWxsT3B0aW9ucyA9IGdyb3Vwc1dpdGhPcHRpb25zLmZsYXRNYXAoKGdyb3VwKSA9PiBncm91cC5vcHRpb25zKVxuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9uID0gYWxsT3B0aW9ucy5maW5kKChvcHRpb24pID0+IG9wdGlvbi5rZXkgPT09IHNlbGVjdGVkT3B0aW9uS2V5KVxuICAgICAgICAgIGlmICghc2VsZWN0ZWRPcHRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKVxuICAgICAgICAgIHNlbGVjdE9wdGlvbkFuZENsZWFuVXAoc2VsZWN0ZWRPcHRpb24pXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gICAgICApLFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyQ29tbWFuZChcbiAgICAgICAgS0VZX0VOVEVSX0NPTU1BTkQsXG4gICAgICAgIChldmVudDogS2V5Ym9hcmRFdmVudCB8IG51bGwpID0+IHtcbiAgICAgICAgICBpZiAoZ3JvdXBzV2l0aE9wdGlvbnMgPT09IG51bGwgfHwgc2VsZWN0ZWRPcHRpb25LZXkgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBhbGxPcHRpb25zID0gZ3JvdXBzV2l0aE9wdGlvbnMuZmxhdE1hcCgoZ3JvdXApID0+IGdyb3VwLm9wdGlvbnMpXG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRPcHRpb24gPSBhbGxPcHRpb25zLmZpbmQoKG9wdGlvbikgPT4gb3B0aW9uLmtleSA9PT0gc2VsZWN0ZWRPcHRpb25LZXkpXG4gICAgICAgICAgaWYgKCFzZWxlY3RlZE9wdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGV2ZW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKVxuICAgICAgICAgIH1cbiAgICAgICAgICBzZWxlY3RPcHRpb25BbmRDbGVhblVwKHNlbGVjdGVkT3B0aW9uKVxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIENPTU1BTkRfUFJJT1JJVFlfTE9XLFxuICAgICAgKSxcbiAgICApXG4gIH0sIFtcbiAgICBzZWxlY3RPcHRpb25BbmRDbGVhblVwLFxuICAgIGNsb3NlLFxuICAgIGVkaXRvcixcbiAgICBncm91cHNXaXRoT3B0aW9ucyxcbiAgICBzZWxlY3RlZE9wdGlvbktleSxcbiAgICB1cGRhdGVTZWxlY3RlZE9wdGlvbixcbiAgXSlcblxuICBjb25zdCBsaXN0SXRlbVByb3BzID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgZ3JvdXBzV2l0aE9wdGlvbnMsXG4gICAgICBzZWxlY3RPcHRpb25BbmRDbGVhblVwLFxuICAgICAgc2VsZWN0ZWRPcHRpb25LZXksXG4gICAgICBzZXRTZWxlY3RlZE9wdGlvbktleSxcbiAgICB9KSxcbiAgICBbc2VsZWN0T3B0aW9uQW5kQ2xlYW5VcCwgc2VsZWN0ZWRPcHRpb25LZXksIGdyb3Vwc1dpdGhPcHRpb25zXSxcbiAgKVxuXG4gIHJldHVybiBtZW51UmVuZGVyRm4oXG4gICAgYW5jaG9yRWxlbWVudFJlZixcbiAgICBsaXN0SXRlbVByb3BzLFxuICAgIHJlc29sdXRpb24ubWF0Y2ggPyByZXNvbHV0aW9uLm1hdGNoLm1hdGNoaW5nU3RyaW5nIDogJycsXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZU1lbnVBbmNob3JSZWYoXG4gIGFuY2hvckVsZW06IEhUTUxFbGVtZW50LFxuICByZXNvbHV0aW9uOiBNZW51UmVzb2x1dGlvbiB8IG51bGwsXG4gIHNldFJlc29sdXRpb246IChyOiBNZW51UmVzb2x1dGlvbiB8IG51bGwpID0+IHZvaWQsXG4gIGNsYXNzTmFtZT86IHN0cmluZyxcbik6IE11dGFibGVSZWZPYmplY3Q8SFRNTEVsZW1lbnQ+IHtcbiAgY29uc3QgW2VkaXRvcl0gPSB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0KClcbiAgY29uc3QgYW5jaG9yRWxlbWVudFJlZiA9IHVzZVJlZjxIVE1MRWxlbWVudD4oZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpXG4gIGNvbnN0IHBvc2l0aW9uTWVudSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCByb290RWxlbWVudCA9IGVkaXRvci5nZXRSb290RWxlbWVudCgpXG4gICAgY29uc3QgY29udGFpbmVyRGl2ID0gYW5jaG9yRWxlbWVudFJlZi5jdXJyZW50XG5cbiAgICBjb25zdCBWRVJUSUNBTF9PRkZTRVQgPSAzMiBhcyBjb25zdFxuXG4gICAgY29uc3QgbWVudUVsZSA9IGNvbnRhaW5lckRpdi5maXJzdENoaWxkIGFzIEVsZW1lbnRcbiAgICBpZiAocm9vdEVsZW1lbnQgIT09IG51bGwgJiYgcmVzb2x1dGlvbiAhPT0gbnVsbCkge1xuICAgICAgbGV0IHsgaGVpZ2h0LCBsZWZ0LCB0b3AsIHdpZHRoIH0gPSByZXNvbHV0aW9uLmdldFJlY3QoKVxuICAgICAgY29uc3QgcmF3VG9wID0gdG9wXG4gICAgICBjb25zdCByYXdMZWZ0ID0gbGVmdFxuICAgICAgdG9wIC09IGFuY2hvckVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICsgd2luZG93LnNjcm9sbFlcbiAgICAgIGxlZnQgLT0gYW5jaG9yRWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0ICsgd2luZG93LnNjcm9sbFhcbiAgICAgIGNvbnRhaW5lckRpdi5zdHlsZS5sZWZ0ID0gYCR7bGVmdCArIHdpbmRvdy5zY3JvbGxYfXB4YFxuICAgICAgY29udGFpbmVyRGl2LnN0eWxlLmhlaWdodCA9IGAke2hlaWdodH1weGBcbiAgICAgIGNvbnRhaW5lckRpdi5zdHlsZS53aWR0aCA9IGAke3dpZHRofXB4YFxuICAgICAgaWYgKG1lbnVFbGUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgbWVudVJlY3QgPSBtZW51RWxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICAgIGNvbnN0IG1lbnVIZWlnaHQgPSBtZW51UmVjdC5oZWlnaHRcbiAgICAgICAgY29uc3QgbWVudVdpZHRoID0gbWVudVJlY3Qud2lkdGhcblxuICAgICAgICBjb25zdCByb290RWxlbWVudFJlY3QgPSByb290RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuXG4gICAgICAgIGlmIChsZWZ0ICsgbWVudVdpZHRoID4gcm9vdEVsZW1lbnRSZWN0LnJpZ2h0KSB7XG4gICAgICAgICAgY29udGFpbmVyRGl2LnN0eWxlLmxlZnQgPSBgJHtyb290RWxlbWVudFJlY3QucmlnaHQgLSBtZW51V2lkdGggKyB3aW5kb3cuc2Nyb2xsWH1weGBcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHdvdWxkR29PZmZCb3R0b21PZlNjcmVlbiA9IHJhd1RvcCArIG1lbnVIZWlnaHQgKyBWRVJUSUNBTF9PRkZTRVQgPiB3aW5kb3cuaW5uZXJIZWlnaHRcbiAgICAgICAgLy9jb25zdCB3b3VsZEdvT2ZmQm90dG9tT2ZDb250YWluZXIgPSB0b3AgKyBtZW51SGVpZ2h0ID4gcm9vdEVsZW1lbnRSZWN0LmJvdHRvbVxuICAgICAgICBjb25zdCB3b3VsZEdvT2ZmVG9wT2ZTY3JlZW4gPSByYXdUb3AgPCAwXG5cbiAgICAgICAgLy8gUG9zaXRpb24gc2xhc2ggbWVudSBhYm92ZSB0aGUgY3Vyc29yIGluc3RlYWQgb2YgYmVsb3cgKGRlZmF1bHQpIGlmIGl0IHdvdWxkIG90aGVyd2lzZSBnbyBvZmYgdGhlIGJvdHRvbSBvZiB0aGUgc2NyZWVuLlxuICAgICAgICBpZiAod291bGRHb09mZkJvdHRvbU9mU2NyZWVuICYmICF3b3VsZEdvT2ZmVG9wT2ZTY3JlZW4pIHtcbiAgICAgICAgICBjb25zdCBtYXJnaW4gPSAyNFxuICAgICAgICAgIGNvbnRhaW5lckRpdi5zdHlsZS50b3AgPSBgJHtcbiAgICAgICAgICAgIHRvcCArIFZFUlRJQ0FMX09GRlNFVCAtIG1lbnVIZWlnaHQgKyB3aW5kb3cuc2Nyb2xsWSAtIChoZWlnaHQgKyBtYXJnaW4pXG4gICAgICAgICAgfXB4YFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRhaW5lckRpdi5zdHlsZS50b3AgPSBgJHt0b3AgKyB3aW5kb3cuc2Nyb2xsWSArIFZFUlRJQ0FMX09GRlNFVH1weGBcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIWNvbnRhaW5lckRpdi5pc0Nvbm5lY3RlZCkge1xuICAgICAgICBpZiAoY2xhc3NOYW1lICE9IG51bGwpIHtcbiAgICAgICAgICBjb250YWluZXJEaXYuY2xhc3NOYW1lID0gY2xhc3NOYW1lXG4gICAgICAgIH1cbiAgICAgICAgY29udGFpbmVyRGl2LnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICdUeXBlYWhlYWQgbWVudScpXG4gICAgICAgIGNvbnRhaW5lckRpdi5zZXRBdHRyaWJ1dGUoJ2lkJywgJ3R5cGVhaGVhZC1tZW51JylcbiAgICAgICAgY29udGFpbmVyRGl2LnNldEF0dHJpYnV0ZSgncm9sZScsICdsaXN0Ym94JylcbiAgICAgICAgY29udGFpbmVyRGl2LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snXG4gICAgICAgIGNvbnRhaW5lckRpdi5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSdcbiAgICAgICAgYW5jaG9yRWxlbS5hcHBlbmQoY29udGFpbmVyRGl2KVxuICAgICAgfVxuICAgICAgYW5jaG9yRWxlbWVudFJlZi5jdXJyZW50ID0gY29udGFpbmVyRGl2XG4gICAgICByb290RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtY29udHJvbHMnLCAndHlwZWFoZWFkLW1lbnUnKVxuICAgIH1cbiAgfSwgW2VkaXRvciwgcmVzb2x1dGlvbiwgY2xhc3NOYW1lLCBhbmNob3JFbGVtXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHJvb3RFbGVtZW50ID0gZWRpdG9yLmdldFJvb3RFbGVtZW50KClcbiAgICBpZiAocmVzb2x1dGlvbiAhPT0gbnVsbCkge1xuICAgICAgcG9zaXRpb25NZW51KClcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGlmIChyb290RWxlbWVudCAhPT0gbnVsbCkge1xuICAgICAgICAgIHJvb3RFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1jb250cm9scycpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb250YWluZXJEaXYgPSBhbmNob3JFbGVtZW50UmVmLmN1cnJlbnRcbiAgICAgICAgaWYgKGNvbnRhaW5lckRpdiAhPT0gbnVsbCAmJiBjb250YWluZXJEaXYuaXNDb25uZWN0ZWQpIHtcbiAgICAgICAgICBjb250YWluZXJEaXYucmVtb3ZlKClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2VkaXRvciwgcG9zaXRpb25NZW51LCByZXNvbHV0aW9uXSlcblxuICBjb25zdCBvblZpc2liaWxpdHlDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAoaXNJblZpZXc6IGJvb2xlYW4pID0+IHtcbiAgICAgIGlmIChyZXNvbHV0aW9uICE9PSBudWxsKSB7XG4gICAgICAgIGlmICghaXNJblZpZXcpIHtcbiAgICAgICAgICBzZXRSZXNvbHV0aW9uKG51bGwpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFtyZXNvbHV0aW9uLCBzZXRSZXNvbHV0aW9uXSxcbiAgKVxuXG4gIHVzZUR5bmFtaWNQb3NpdGlvbmluZyhyZXNvbHV0aW9uLCBhbmNob3JFbGVtZW50UmVmLmN1cnJlbnQsIHBvc2l0aW9uTWVudSwgb25WaXNpYmlsaXR5Q2hhbmdlKVxuXG4gIHJldHVybiBhbmNob3JFbGVtZW50UmVmXG59XG5cbmV4cG9ydCB0eXBlIFRyaWdnZXJGbiA9ICh0ZXh0OiBzdHJpbmcsIGVkaXRvcjogTGV4aWNhbEVkaXRvcikgPT4gTWVudVRleHRNYXRjaCB8IG51bGxcbiJdLCJuYW1lcyI6WyJQVU5DVFVBVElPTiIsIlNsYXNoTWVudUdyb3VwIiwiU2xhc2hNZW51T3B0aW9uIiwiZ2V0U2Nyb2xsUGFyZW50IiwidXNlRHluYW1pY1Bvc2l0aW9uaW5nIiwiU0NST0xMX1RZUEVBSEVBRF9PUFRJT05fSU5UT19WSUVXX0NPTU1BTkQiLCJMZXhpY2FsTWVudSIsInVzZU1lbnVBbmNob3JSZWYiLCJvcHRpb25zIiwidGl0bGUiLCJJY29uIiwiZGlzcGxheU5hbWUiLCJrZXkiLCJrZXlib2FyZFNob3J0Y3V0Iiwia2V5d29yZHMiLCJvblNlbGVjdCIsInJlZiIsImNvbnN0cnVjdG9yIiwiY3VycmVudCIsInNldFJlZkVsZW1lbnQiLCJiaW5kIiwiZWxlbWVudCIsInNjcm9sbEludG9WaWV3SWZOZWVkZWQiLCJ0YXJnZXQiLCJ0eXBlYWhlYWRDb250YWluZXJOb2RlIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsInR5cGVhaGVhZFJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ0b3AiLCJoZWlnaHQiLCJ3aW5kb3ciLCJpbm5lckhlaWdodCIsInNjcm9sbEludG9WaWV3IiwiYmxvY2siLCJnZXRGdWxsTWF0Y2hPZmZzZXQiLCJkb2N1bWVudFRleHQiLCJlbnRyeVRleHQiLCJvZmZzZXQiLCJ0cmlnZ2VyT2Zmc2V0IiwiaSIsImxlbmd0aCIsInN1YnN0ciIsIiRzcGxpdE5vZGVDb250YWluaW5nUXVlcnkiLCJtYXRjaCIsInNlbGVjdGlvbiIsIiRnZXRTZWxlY3Rpb24iLCIkaXNSYW5nZVNlbGVjdGlvbiIsImlzQ29sbGFwc2VkIiwiYW5jaG9yIiwidHlwZSIsImFuY2hvck5vZGUiLCJnZXROb2RlIiwiaXNTaW1wbGVUZXh0Iiwic2VsZWN0aW9uT2Zmc2V0IiwidGV4dENvbnRlbnQiLCJnZXRUZXh0Q29udGVudCIsInNsaWNlIiwiY2hhcmFjdGVyT2Zmc2V0IiwicmVwbGFjZWFibGVTdHJpbmciLCJxdWVyeU9mZnNldCIsIm1hdGNoaW5nU3RyaW5nIiwic3RhcnRPZmZzZXQiLCJuZXdOb2RlIiwic3BsaXRUZXh0IiwiaW5jbHVkZUhpZGRlbiIsInN0eWxlIiwiZ2V0Q29tcHV0ZWRTdHlsZSIsImV4Y2x1ZGVTdGF0aWNQYXJlbnQiLCJwb3NpdGlvbiIsIm92ZXJmbG93UmVnZXgiLCJib2R5IiwicGFyZW50IiwicGFyZW50RWxlbWVudCIsInRlc3QiLCJvdmVyZmxvdyIsIm92ZXJmbG93WSIsIm92ZXJmbG93WCIsImlzVHJpZ2dlclZpc2libGVJbk5lYXJlc3RTY3JvbGxDb250YWluZXIiLCJ0YXJnZXRFbGVtZW50IiwiY29udGFpbmVyRWxlbWVudCIsInRSZWN0IiwiY1JlY3QiLCJib3R0b20iLCJyZXNvbHV0aW9uIiwib25SZXBvc2l0aW9uIiwib25WaXNpYmlsaXR5Q2hhbmdlIiwiZWRpdG9yIiwidXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCIsInVzZUVmZmVjdCIsInJvb3RFbGVtZW50IiwiZ2V0Um9vdEVsZW1lbnQiLCJyb290U2Nyb2xsUGFyZW50IiwidGlja2luZyIsInByZXZpb3VzSXNJblZpZXciLCJoYW5kbGVTY3JvbGwiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJpc0luVmlldyIsInJlc2l6ZU9ic2VydmVyIiwiUmVzaXplT2JzZXJ2ZXIiLCJhZGRFdmVudExpc3RlbmVyIiwiY2FwdHVyZSIsInBhc3NpdmUiLCJvYnNlcnZlIiwidW5vYnNlcnZlIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImNyZWF0ZUNvbW1hbmQiLCJhbmNob3JFbGVtZW50UmVmIiwiY2xvc2UiLCJncm91cHNXaXRoT3B0aW9ucyIsIm1lbnVSZW5kZXJGbiIsIm9uU2VsZWN0T3B0aW9uIiwic2hvdWxkU3BsaXROb2RlV2l0aFF1ZXJ5Iiwic2VsZWN0ZWRPcHRpb25LZXkiLCJzZXRTZWxlY3RlZE9wdGlvbktleSIsInVzZVN0YXRlIiwidXBkYXRlU2VsZWN0ZWRPcHRpb24iLCJ1c2VDYWxsYmFjayIsIm9wdGlvbiIsInJvb3RFbGVtIiwic2V0QXR0cmlidXRlIiwic2V0U2VsZWN0ZWRPcHRpb25LZXlUb0ZpcnN0TWF0Y2hpbmdPcHRpb24iLCJhbGxPcHRpb25zIiwiZmxhdE1hcCIsImdyb3VwIiwiZmlyc3RNYXRjaGluZ09wdGlvbiIsInNlbGVjdE9wdGlvbkFuZENsZWFuVXAiLCJzZWxlY3RlZE9wdGlvbiIsInVwZGF0ZSIsInRleHROb2RlQ29udGFpbmluZ1F1ZXJ5IiwicmVtb3ZlQXR0cmlidXRlIiwidXNlTGF5b3V0RWZmZWN0IiwibWVyZ2VSZWdpc3RlciIsInJlZ2lzdGVyQ29tbWFuZCIsIkNPTU1BTkRfUFJJT1JJVFlfTE9XIiwiS0VZX0FSUk9XX0RPV05fQ09NTUFORCIsInBheWxvYWQiLCJldmVudCIsInNlbGVjdGVkSW5kZXgiLCJmaW5kSW5kZXgiLCJuZXdTZWxlY3RlZEluZGV4IiwibmV3U2VsZWN0ZWRPcHRpb24iLCJkaXNwYXRjaENvbW1hbmQiLCJpbmRleCIsInByZXZlbnREZWZhdWx0Iiwic3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uIiwiS0VZX0FSUk9XX1VQX0NPTU1BTkQiLCJLRVlfRVNDQVBFX0NPTU1BTkQiLCJLRVlfVEFCX0NPTU1BTkQiLCJmaW5kIiwiS0VZX0VOVEVSX0NPTU1BTkQiLCJsaXN0SXRlbVByb3BzIiwidXNlTWVtbyIsImFuY2hvckVsZW0iLCJzZXRSZXNvbHV0aW9uIiwiY2xhc3NOYW1lIiwidXNlUmVmIiwiY3JlYXRlRWxlbWVudCIsInBvc2l0aW9uTWVudSIsImNvbnRhaW5lckRpdiIsIlZFUlRJQ0FMX09GRlNFVCIsIm1lbnVFbGUiLCJmaXJzdENoaWxkIiwibGVmdCIsIndpZHRoIiwiZ2V0UmVjdCIsInJhd1RvcCIsInJhd0xlZnQiLCJzY3JvbGxZIiwic2Nyb2xsWCIsIm1lbnVSZWN0IiwibWVudUhlaWdodCIsIm1lbnVXaWR0aCIsInJvb3RFbGVtZW50UmVjdCIsInJpZ2h0Iiwid291bGRHb09mZkJvdHRvbU9mU2NyZWVuIiwid291bGRHb09mZlRvcE9mU2NyZWVuIiwibWFyZ2luIiwiaXNDb25uZWN0ZWQiLCJkaXNwbGF5IiwiYXBwZW5kIiwicmVtb3ZlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQThCYUEsV0FBVztlQUFYQTs7SUFFQUMsY0FBYztlQUFkQTs7SUFLQUMsZUFBZTtlQUFmQTs7SUErSEdDLGVBQWU7ZUFBZkE7O0lBZ0NBQyxxQkFBcUI7ZUFBckJBOztJQWlESEMseUNBQXlDO2VBQXpDQTs7SUFLR0MsV0FBVztlQUFYQTs7SUE4UEFDLGdCQUFnQjtlQUFoQkE7Ozt3Q0FwZjBCO3VCQUNaO3lCQVd2Qjt1QkFDNEU7QUFhNUUsTUFBTVAsY0FBYztBQUVwQixNQUFNQztJQUNYTyxRQUErQjtJQUMvQkMsTUFBYTtBQUNmO0FBRU8sTUFBTVA7SUFDWFEsS0FBYztJQUVkQyxZQUFrRDtJQUNsRCxtQkFBbUI7SUFDbkJDLElBQVc7SUFDWCxNQUFNO0lBQ05DLGlCQUF5QjtJQUN6Qix1QkFBdUI7SUFDdkJDLFNBQXVCO0lBQ3ZCLDRDQUE0QztJQUM1Q0MsU0FBMkY7SUFFM0ZDLElBQTBDO0lBRTFDLDhCQUE4QjtJQUM5QlAsTUFBYTtJQUViUSxZQUNFUixLQUFhLEVBQ2JELE9BTUMsQ0FDRDtRQUNBLElBQUksQ0FBQ0ksR0FBRyxHQUFHSDtRQUNYLElBQUksQ0FBQ08sR0FBRyxHQUFHO1lBQUVFLFNBQVM7UUFBSztRQUMzQixJQUFJLENBQUNDLGFBQWEsR0FBRyxJQUFJLENBQUNBLGFBQWEsQ0FBQ0MsSUFBSSxDQUFDLElBQUk7UUFFakQsSUFBSSxDQUFDWCxLQUFLLEdBQUdBO1FBQ2IsSUFBSSxD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
@@ -10,6 +10,7 @@ export declare function useBasicTypeaheadTriggerMatch(trigger: string, { maxLeng
10
10
  }): TriggerFn;
11
11
  export type TypeaheadMenuPluginProps = {
12
12
  anchorClassName?: string;
13
+ anchorElem: HTMLElement;
13
14
  groupsWithOptions: Array<SlashMenuGroup>;
14
15
  menuRenderFn: MenuRenderFn;
15
16
  onClose?: () => void;
@@ -21,6 +22,6 @@ export type TypeaheadMenuPluginProps = {
21
22
  export declare const ENABLE_SLASH_MENU_COMMAND: LexicalCommand<{
22
23
  node: ParagraphNode;
23
24
  }>;
24
- export declare function LexicalTypeaheadMenuPlugin({ anchorClassName, groupsWithOptions, menuRenderFn, onClose, onOpen, onQueryChange, onSelectOption, triggerFn, }: TypeaheadMenuPluginProps): JSX.Element | null;
25
+ export declare function LexicalTypeaheadMenuPlugin({ anchorClassName, anchorElem, groupsWithOptions, menuRenderFn, onClose, onOpen, onQueryChange, onSelectOption, triggerFn, }: TypeaheadMenuPluginProps): JSX.Element | null;
25
26
  export { MenuRenderFn, MenuResolution, MenuTextMatch, TriggerFn };
26
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EACV,cAAc,EAEd,aAAa,EAEb,QAAQ,EACT,MAAM,SAAS,CAAA;AAchB,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,aAAa,EACb,cAAc,EACd,eAAe,EACf,SAAS,EACV,MAAM,eAAe,CAAA;AAItB,eAAO,MAAM,WAAW,iEAAiE,CAAA;AA4EzF,wBAAgB,eAAe,CAC7B,OAAO,EAAE,WAAW,EACpB,aAAa,EAAE,OAAO,GACrB,eAAe,GAAG,WAAW,CAiB/B;AAED,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAErD,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,MAAM,EACf,EAAE,SAAc,EAAE,SAAa,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5E,SAAS,CAgCX;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,KAAK,CAAC,cAAc,CAAC,CAAA;IACxC,YAAY,EAAE,YAAY,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,KAAK,IAAI,CAAA;IAC7C,aAAa,EAAE,CAAC,cAAc,EAAE,IAAI,GAAG,MAAM,KAAK,IAAI,CAAA;IACtD,cAAc,EAAE,CACd,MAAM,EAAE,eAAe,EACvB,uBAAuB,EAAE,QAAQ,GAAG,IAAI,EACxC,SAAS,EAAE,MAAM,IAAI,EACrB,cAAc,EAAE,MAAM,KACnB,IAAI,CAAA;IACT,SAAS,EAAE,SAAS,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,yBAAyB,EAAE,cAAc,CAAC;IACrD,IAAI,EAAE,aAAa,CAAA;CACpB,CAA8C,CAAA;AAE/C,wBAAgB,0BAA0B,CAAC,EACzC,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,OAAO,EACP,MAAM,EACN,aAAa,EACb,cAAc,EACd,SAAS,GACV,EAAE,wBAAwB,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAyH/C;AAED,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EACV,cAAc,EAEd,aAAa,EAEb,QAAQ,EACT,MAAM,SAAS,CAAA;AAchB,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,aAAa,EACb,cAAc,EACd,eAAe,EACf,SAAS,EACV,MAAM,eAAe,CAAA;AAItB,eAAO,MAAM,WAAW,iEAAiE,CAAA;AA4EzF,wBAAgB,eAAe,CAC7B,OAAO,EAAE,WAAW,EACpB,aAAa,EAAE,OAAO,GACrB,eAAe,GAAG,WAAW,CAiB/B;AAED,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAErD,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,MAAM,EACf,EAAE,SAAc,EAAE,SAAa,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5E,SAAS,CAgCX;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,UAAU,EAAE,WAAW,CAAA;IACvB,iBAAiB,EAAE,KAAK,CAAC,cAAc,CAAC,CAAA;IACxC,YAAY,EAAE,YAAY,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,KAAK,IAAI,CAAA;IAC7C,aAAa,EAAE,CAAC,cAAc,EAAE,IAAI,GAAG,MAAM,KAAK,IAAI,CAAA;IACtD,cAAc,EAAE,CACd,MAAM,EAAE,eAAe,EACvB,uBAAuB,EAAE,QAAQ,GAAG,IAAI,EACxC,SAAS,EAAE,MAAM,IAAI,EACrB,cAAc,EAAE,MAAM,KACnB,IAAI,CAAA;IACT,SAAS,EAAE,SAAS,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,yBAAyB,EAAE,cAAc,CAAC;IACrD,IAAI,EAAE,aAAa,CAAA;CACpB,CAA8C,CAAA;AAE/C,wBAAgB,0BAA0B,CAAC,EACzC,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,OAAO,EACP,MAAM,EACN,aAAa,EACb,cAAc,EACd,SAAS,GACV,EAAE,wBAAwB,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAyH/C;AAED,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EAAE,CAAA"}