@payloadcms/richtext-lexical 0.1.13 → 0.1.15
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.
- package/dist/cell/index.d.ts.map +1 -1
- package/dist/cell/index.js +7 -3
- package/dist/field/Field.d.ts.map +1 -1
- package/dist/field/Field.js +7 -18
- package/dist/field/features/BlockQuote/index.d.ts.map +1 -1
- package/dist/field/features/BlockQuote/index.js +23 -5
- package/dist/field/features/Blocks/component/BlockContent.d.ts.map +1 -1
- package/dist/field/features/Blocks/component/BlockContent.js +17 -9
- package/dist/field/features/Blocks/component/index.d.ts.map +1 -1
- package/dist/field/features/Blocks/component/index.js +2 -1
- package/dist/field/features/Blocks/drawer/index.d.ts.map +1 -1
- package/dist/field/features/Blocks/drawer/index.js +2 -1
- package/dist/field/features/Blocks/index.d.ts.map +1 -1
- package/dist/field/features/Blocks/index.js +8 -8
- package/dist/field/features/Blocks/nodes/BlocksNode.d.ts.map +1 -1
- package/dist/field/features/Blocks/nodes/BlocksNode.js +2 -1
- package/dist/field/features/Blocks/plugin/index.d.ts.map +1 -1
- package/dist/field/features/Blocks/plugin/index.js +2 -1
- package/dist/field/features/Blocks/populationPromise.d.ts +5 -0
- package/dist/field/features/Blocks/populationPromise.d.ts.map +1 -0
- package/dist/field/features/Blocks/populationPromise.js +51 -0
- package/dist/field/features/Heading/index.d.ts.map +1 -1
- package/dist/field/features/Heading/index.js +28 -9
- package/dist/field/features/Link/index.d.ts.map +1 -1
- package/dist/field/features/Link/index.js +53 -14
- package/dist/field/features/Link/plugins/autoLink/index.d.ts +0 -7
- package/dist/field/features/Link/plugins/autoLink/index.d.ts.map +1 -1
- package/dist/field/features/Link/plugins/autoLink/index.js +3 -8
- package/dist/field/features/Link/plugins/clickableLink/index.d.ts +3 -0
- package/dist/field/features/Link/plugins/clickableLink/index.d.ts.map +1 -0
- package/dist/field/features/Link/plugins/clickableLink/index.js +23 -0
- package/dist/field/features/Link/plugins/floatingLinkEditor/LinkEditor/index.d.ts.map +1 -1
- package/dist/field/features/Link/plugins/floatingLinkEditor/LinkEditor/index.js +2 -1
- package/dist/field/features/Link/plugins/floatingLinkEditor/index.d.ts.map +1 -1
- package/dist/field/features/Link/plugins/floatingLinkEditor/index.js +2 -1
- package/dist/field/features/Link/plugins/link/index.d.ts +0 -7
- package/dist/field/features/Link/plugins/link/index.d.ts.map +1 -1
- package/dist/field/features/Link/plugins/link/index.js +3 -8
- package/dist/field/features/Link/populationPromise.d.ts +5 -0
- package/dist/field/features/Link/populationPromise.d.ts.map +1 -0
- package/dist/field/features/Link/populationPromise.js +52 -0
- package/dist/field/features/Paragraph/index.js +3 -3
- package/dist/field/features/Relationship/drawer/index.d.ts.map +1 -1
- package/dist/field/features/Relationship/drawer/index.js +2 -1
- package/dist/field/features/Relationship/index.d.ts.map +1 -1
- package/dist/field/features/Relationship/index.js +9 -9
- package/dist/field/features/Relationship/nodes/components/RelationshipComponent.d.ts.map +1 -1
- package/dist/field/features/Relationship/nodes/components/RelationshipComponent.js +2 -1
- package/dist/field/features/Relationship/plugins/index.d.ts.map +1 -1
- package/dist/field/features/Relationship/plugins/index.js +2 -1
- package/dist/field/features/Relationship/populationPromise.d.ts +4 -0
- package/dist/field/features/Relationship/populationPromise.d.ts.map +1 -0
- package/dist/field/features/Relationship/populationPromise.js +34 -0
- package/dist/field/features/Upload/component/index.d.ts.map +1 -1
- package/dist/field/features/Upload/component/index.js +2 -1
- package/dist/field/features/Upload/drawer/index.d.ts.map +1 -1
- package/dist/field/features/Upload/drawer/index.js +2 -1
- package/dist/field/features/Upload/index.d.ts.map +1 -1
- package/dist/field/features/Upload/index.js +32 -8
- package/dist/field/features/Upload/plugin/index.d.ts.map +1 -1
- package/dist/field/features/Upload/plugin/index.js +2 -1
- package/dist/field/features/Upload/populationPromise.d.ts +5 -0
- package/dist/field/features/Upload/populationPromise.d.ts.map +1 -0
- package/dist/field/features/Upload/populationPromise.js +52 -0
- package/dist/field/features/converters/html/converter/converters/linebreak.d.ts +4 -0
- package/dist/field/features/converters/html/converter/converters/linebreak.d.ts.map +1 -0
- package/dist/field/features/converters/html/converter/converters/linebreak.js +20 -0
- package/dist/field/features/converters/html/converter/converters/paragraph.d.ts +4 -0
- package/dist/field/features/converters/html/converter/converters/paragraph.d.ts.map +1 -0
- package/dist/field/features/converters/html/converter/converters/paragraph.js +29 -0
- package/dist/field/features/converters/html/converter/converters/text.d.ts +4 -0
- package/dist/field/features/converters/html/converter/converters/text.d.ts.map +1 -0
- package/dist/field/features/converters/html/converter/converters/text.js +43 -0
- package/dist/field/features/converters/html/converter/defaultConverters.d.ts +3 -0
- package/dist/field/features/converters/html/converter/defaultConverters.d.ts.map +1 -0
- package/dist/field/features/converters/html/converter/defaultConverters.js +20 -0
- package/dist/field/features/converters/html/converter/index.d.ts +12 -0
- package/dist/field/features/converters/html/converter/index.d.ts.map +1 -0
- package/dist/field/features/converters/html/converter/index.js +54 -0
- package/dist/field/features/converters/html/converter/types.d.ts +14 -0
- package/dist/field/features/converters/html/converter/types.d.ts.map +1 -0
- package/dist/field/features/converters/html/converter/types.js +6 -0
- package/dist/field/features/converters/html/field/index.d.ts +7 -0
- package/dist/field/features/converters/html/field/index.d.ts.map +1 -0
- package/dist/field/features/converters/html/field/index.js +59 -0
- package/dist/field/features/converters/html/index.d.ts +13 -0
- package/dist/field/features/converters/html/index.d.ts.map +1 -0
- package/dist/field/features/converters/html/index.js +28 -0
- package/dist/field/features/debug/TreeView/plugin.d.ts.map +1 -1
- package/dist/field/features/debug/TreeView/plugin.js +2 -1
- package/dist/field/features/indent/index.d.ts.map +1 -1
- package/dist/field/features/indent/index.js +2 -2
- package/dist/field/features/lists/CheckList/index.d.ts.map +1 -1
- package/dist/field/features/lists/CheckList/index.js +13 -6
- package/dist/field/features/lists/CheckList/plugin/index.d.ts +3 -0
- package/dist/field/features/lists/CheckList/plugin/index.d.ts.map +1 -0
- package/dist/field/features/lists/CheckList/plugin/index.js +23 -0
- package/dist/field/features/lists/OrderedList/index.d.ts.map +1 -1
- package/dist/field/features/lists/OrderedList/index.js +12 -5
- package/dist/field/features/lists/UnorderedList/index.d.ts.map +1 -1
- package/dist/field/features/lists/UnorderedList/index.js +12 -5
- package/dist/field/features/lists/htmlConverter.d.ts +5 -0
- package/dist/field/features/lists/htmlConverter.d.ts.map +1 -0
- package/dist/field/features/lists/htmlConverter.js +64 -0
- package/dist/field/features/lists/plugin/index.d.ts +3 -0
- package/dist/field/features/lists/plugin/index.d.ts.map +1 -0
- package/dist/field/features/lists/plugin/index.js +23 -0
- package/dist/field/features/migrations/SlateToLexical/converter/converters/heading.d.ts +1 -1
- package/dist/field/features/migrations/SlateToLexical/converter/converters/heading.d.ts.map +1 -1
- package/dist/field/features/migrations/SlateToLexical/converter/converters/heading.js +4 -4
- package/dist/field/features/migrations/SlateToLexical/converter/converters/indent.d.ts +1 -1
- package/dist/field/features/migrations/SlateToLexical/converter/converters/indent.d.ts.map +1 -1
- package/dist/field/features/migrations/SlateToLexical/converter/converters/indent.js +4 -4
- package/dist/field/features/migrations/SlateToLexical/converter/converters/link.d.ts +1 -1
- package/dist/field/features/migrations/SlateToLexical/converter/converters/link.d.ts.map +1 -1
- package/dist/field/features/migrations/SlateToLexical/converter/converters/link.js +4 -4
- package/dist/field/features/migrations/SlateToLexical/converter/converters/listItem.d.ts +1 -1
- package/dist/field/features/migrations/SlateToLexical/converter/converters/listItem.d.ts.map +1 -1
- package/dist/field/features/migrations/SlateToLexical/converter/converters/listItem.js +4 -4
- package/dist/field/features/migrations/SlateToLexical/converter/converters/orderedList.d.ts +1 -1
- package/dist/field/features/migrations/SlateToLexical/converter/converters/orderedList.d.ts.map +1 -1
- package/dist/field/features/migrations/SlateToLexical/converter/converters/orderedList.js +4 -4
- package/dist/field/features/migrations/SlateToLexical/converter/converters/relationship.d.ts +1 -1
- package/dist/field/features/migrations/SlateToLexical/converter/converters/relationship.d.ts.map +1 -1
- package/dist/field/features/migrations/SlateToLexical/converter/converters/relationship.js +4 -4
- package/dist/field/features/migrations/SlateToLexical/converter/converters/unknown.d.ts +1 -1
- package/dist/field/features/migrations/SlateToLexical/converter/converters/unknown.d.ts.map +1 -1
- package/dist/field/features/migrations/SlateToLexical/converter/converters/unknown.js +4 -4
- package/dist/field/features/migrations/SlateToLexical/converter/converters/unorderedList.d.ts +1 -1
- package/dist/field/features/migrations/SlateToLexical/converter/converters/unorderedList.d.ts.map +1 -1
- package/dist/field/features/migrations/SlateToLexical/converter/converters/unorderedList.js +4 -4
- package/dist/field/features/migrations/SlateToLexical/converter/converters/upload.d.ts +1 -1
- package/dist/field/features/migrations/SlateToLexical/converter/converters/upload.d.ts.map +1 -1
- package/dist/field/features/migrations/SlateToLexical/converter/converters/upload.js +4 -4
- package/dist/field/features/migrations/SlateToLexical/converter/defaultConverters.d.ts +1 -1
- package/dist/field/features/migrations/SlateToLexical/converter/defaultConverters.d.ts.map +1 -1
- package/dist/field/features/migrations/SlateToLexical/converter/defaultConverters.js +13 -13
- package/dist/field/features/migrations/SlateToLexical/index.js +4 -4
- package/dist/field/features/types.d.ts +25 -7
- package/dist/field/features/types.d.ts.map +1 -1
- package/dist/field/lexical/LexicalEditor.d.ts.map +1 -1
- package/dist/field/lexical/LexicalEditor.js +2 -1
- package/dist/field/lexical/LexicalProvider.d.ts.map +1 -1
- package/dist/field/lexical/LexicalProvider.js +5 -1
- package/dist/field/lexical/config/EditorConfigProvider.d.ts.map +1 -1
- package/dist/field/lexical/config/EditorConfigProvider.js +2 -1
- package/dist/field/lexical/config/sanitize.d.ts.map +1 -1
- package/dist/field/lexical/config/sanitize.js +14 -4
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarButton/index.d.ts.map +1 -1
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarButton/index.js +2 -1
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/DropDown.d.ts.map +1 -1
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/DropDown.js +2 -1
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.d.ts.map +1 -1
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.js +2 -1
- package/dist/field/lexical/plugins/FloatingSelectToolbar/index.d.ts.map +1 -1
- package/dist/field/lexical/plugins/FloatingSelectToolbar/index.js +2 -1
- package/dist/field/lexical/plugins/MarkdownShortcut/index.d.ts +0 -7
- package/dist/field/lexical/plugins/MarkdownShortcut/index.d.ts.map +1 -1
- package/dist/field/lexical/plugins/MarkdownShortcut/index.js +3 -8
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts +2 -33
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts.map +1 -1
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +2 -44
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts +2 -1
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts.map +1 -1
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js +2 -1
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts +36 -0
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts.map +1 -0
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js +57 -0
- package/dist/field/lexical/plugins/SlashMenu/index.js +2 -1
- package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.d.ts.map +1 -1
- package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.js +3 -8
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.d.ts.map +1 -1
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.js +3 -8
- package/dist/field/lexical/theme/EditorTheme.scss +0 -2
- package/dist/index.d.ts +27 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +110 -16
- package/dist/populate/recurseNestedFields.d.ts +3 -3
- package/dist/populate/recurseNestedFields.d.ts.map +1 -1
- package/dist/populate/recurseNestedFields.js +25 -22
- package/dist/populate/richTextRelationshipPromise.d.ts +6 -6
- package/dist/populate/richTextRelationshipPromise.d.ts.map +1 -1
- package/dist/populate/richTextRelationshipPromise.js +8 -8
- package/package.json +5 -4
- package/dist/field/features/Blocks/afterReadPromise.d.ts +0 -5
- package/dist/field/features/Blocks/afterReadPromise.d.ts.map +0 -1
- package/dist/field/features/Blocks/afterReadPromise.js +0 -51
- package/dist/field/features/Link/afterReadPromise.d.ts +0 -5
- package/dist/field/features/Link/afterReadPromise.d.ts.map +0 -1
- package/dist/field/features/Link/afterReadPromise.js +0 -52
- package/dist/field/features/Relationship/afterReadPromise.d.ts +0 -4
- package/dist/field/features/Relationship/afterReadPromise.d.ts.map +0 -1
- package/dist/field/features/Relationship/afterReadPromise.js +0 -34
- package/dist/field/features/Upload/afterReadPromise.d.ts +0 -5
- package/dist/field/features/Upload/afterReadPromise.d.ts.map +0 -1
- package/dist/field/features/Upload/afterReadPromise.js +0 -52
- package/dist/field/lexical/plugins/SlashMenu/defaultGroups.d.ts +0 -2
- package/dist/field/lexical/plugins/SlashMenu/defaultGroups.d.ts.map +0 -1
- package/dist/field/lexical/plugins/SlashMenu/defaultGroups.js +0 -3
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
'use client';
|
|
1
2
|
"use strict";
|
|
2
3
|
Object.defineProperty(exports, "__esModule", {
|
|
3
4
|
value: true
|
|
@@ -284,4 +285,4 @@ function FloatingSelectToolbarPlugin({ anchorElem = document.body }) {
|
|
|
284
285
|
return useFloatingTextFormatToolbar(editor, anchorElem);
|
|
285
286
|
}
|
|
286
287
|
|
|
287
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvRmxvYXRpbmdTZWxlY3RUb29sYmFyL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IExleGljYWxFZGl0b3IgfSBmcm9tICdsZXhpY2FsJ1xuXG5pbXBvcnQgeyB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IH0gZnJvbSAnQGxleGljYWwvcmVhY3QvTGV4aWNhbENvbXBvc2VyQ29udGV4dCdcbmltcG9ydCB7IG1lcmdlUmVnaXN0ZXIgfSBmcm9tICdAbGV4aWNhbC91dGlscydcbmltcG9ydCB7XG4gICRnZXRTZWxlY3Rpb24sXG4gICRpc1JhbmdlU2VsZWN0aW9uLFxuICAkaXNUZXh0Tm9kZSxcbiAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gIFNFTEVDVElPTl9DSEFOR0VfQ09NTUFORCxcbn0gZnJvbSAnbGV4aWNhbCdcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSAncmVhY3QtZG9tJ1xuXG5pbXBvcnQgeyB1c2VFZGl0b3JDb25maWdDb250ZXh0IH0gZnJvbSAnLi4vLi4vY29uZmlnL0VkaXRvckNvbmZpZ1Byb3ZpZGVyJ1xuaW1wb3J0IHsgZ2V0RE9NUmFuZ2VSZWN0IH0gZnJvbSAnLi4vLi4vdXRpbHMvZ2V0RE9NUmFuZ2VSZWN0J1xuaW1wb3J0IHsgc2V0RmxvYXRpbmdFbGVtUG9zaXRpb24gfSBmcm9tICcuLi8uLi91dGlscy9zZXRGbG9hdGluZ0VsZW1Qb3NpdGlvbidcbmltcG9ydCB7IFRvb2xiYXJCdXR0b24gfSBmcm9tICcuL1Rvb2xiYXJCdXR0b24nXG5pbXBvcnQgeyBUb29sYmFyRHJvcGRvd24gfSBmcm9tICcuL1Rvb2xiYXJEcm9wZG93bidcbmltcG9ydCAnLi9pbmRleC5zY3NzJ1xuXG5mdW5jdGlvbiBGbG9hdGluZ1NlbGVjdFRvb2xiYXIoe1xuICBhbmNob3JFbGVtLFxuICBlZGl0b3IsXG59OiB7XG4gIGFuY2hvckVsZW06IEhUTUxFbGVtZW50XG4gIGVkaXRvcjogTGV4aWNhbEVkaXRvclxufSk6IEpTWC5FbGVtZW50IHtcbiAgY29uc3QgcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbClcbiAgY29uc3QgY2FyZXRSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKVxuXG4gIGNvbnN0IHsgZWRpdG9yQ29uZmlnIH0gPSB1c2VFZGl0b3JDb25maWdDb250ZXh0KClcblxuICBjb25zdCBjbG9zZUZsb2F0aW5nVG9vbGJhciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAocG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmPy5jdXJyZW50KSB7XG4gICAgICBjb25zdCBpc09wYWNpdHlaZXJvID0gcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnQuc3R5bGUub3BhY2l0eSA9PT0gJzAnXG4gICAgICBjb25zdCBpc1BvaW50ZXJFdmVudHNOb25lID0gcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnQuc3R5bGUucG9pbnRlckV2ZW50cyA9PT0gJ25vbmUnXG5cbiAgICAgIGlmICghaXNPcGFjaXR5WmVybykge1xuICAgICAgICBwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5vcGFjaXR5ID0gJzAnXG4gICAgICB9XG4gICAgICBpZiAoIWlzUG9pbnRlckV2ZW50c05vbmUpIHtcbiAgICAgICAgcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnQuc3R5bGUucG9pbnRlckV2ZW50cyA9ICdub25lJ1xuICAgICAgfVxuICAgIH1cbiAgfSwgW3BvcHVwQ2hhclN0eWxlc0VkaXRvclJlZl0pXG5cbiAgY29uc3QgbW91c2VNb3ZlTGlzdGVuZXIgPSB1c2VDYWxsYmFjayhcbiAgICAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgaWYgKHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZj8uY3VycmVudCAmJiAoZS5idXR0b25zID09PSAxIHx8IGUuYnV0dG9ucyA9PT0gMykpIHtcbiAgICAgICAgY29uc3QgaXNPcGFjaXR5WmVybyA9IHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLm9wYWNpdHkgPT09ICcwJ1xuICAgICAgICBjb25zdCBpc1BvaW50ZXJFdmVudHNOb25lID0gcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnQuc3R5bGUucG9pbnRlckV2ZW50cyA9PT0gJ25vbmUnXG4gICAgICAgIGlmICghaXNPcGFjaXR5WmVybyB8fCAhaXNQb2ludGVyRXZlbnRzTm9uZSkge1xuICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBtb3VzZSBpcyBub3Qgb3ZlciB0aGUgcG9wdXBcbiAgICAgICAgICBjb25zdCB4ID0gZS5jbGllbnRYXG4gICAgICAgICAgY29uc3QgeSA9IGUuY2xpZW50WVxuICAgICAgICAgIGNvbnN0IGVsZW1lbnRVbmRlck1vdXNlID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCh4LCB5KVxuICAgICAgICAgIGlmICghcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnQuY29udGFpbnMoZWxlbWVudFVuZGVyTW91c2UpKSB7XG4gICAgICAgICAgICAvLyBNb3VzZSBpcyBub3Qgb3ZlciB0aGUgdGFyZ2V0IGVsZW1lbnQgPT4gbm90IGEgbm9ybWFsIGNsaWNrLCBidXQgcHJvYmFibHkgYSBkcmFnXG4gICAgICAgICAgICBjbG9zZUZsb2F0aW5nVG9vbGJhcigpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbY2xvc2VGbG9hdGluZ1Rvb2xiYXJdLFxuICApXG5cbiAgY29uc3QgbW91c2VVcExpc3RlbmVyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWY/LmN1cnJlbnQpIHtcbiAgICAgIGlmIChwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5vcGFjaXR5ICE9PSAnMScpIHtcbiAgICAgICAgcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnQuc3R5bGUub3BhY2l0eSA9ICcxJ1xuICAgICAgfVxuICAgICAgaWYgKHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgIT09ICdhdXRvJykge1xuICAgICAgICBwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ2F1dG8nXG4gICAgICB9XG4gICAgfVxuICB9LCBbcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdXNlTW92ZUxpc3RlbmVyKVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBtb3VzZVVwTGlzdGVuZXIpXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW91c2VNb3ZlTGlzdGVuZXIpXG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgbW91c2VVcExpc3RlbmVyKVxuICAgIH1cbiAgfSwgW3BvcHVwQ2hhclN0eWxlc0VkaXRvclJlZiwgbW91c2VNb3ZlTGlzdGVuZXIsIG1vdXNlVXBMaXN0ZW5lcl0pXG5cbiAgY29uc3QgdXBkYXRlVGV4dEZvcm1hdEZsb2F0aW5nVG9vbGJhciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSAkZ2V0U2VsZWN0aW9uKClcblxuICAgIGNvbnN0IHBvcHVwQ2hhclN0eWxlc0VkaXRvckVsZW0gPSBwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudFxuICAgIGNvbnN0IG5hdGl2ZVNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKVxuXG4gICAgaWYgKHBvcHVwQ2hhclN0eWxlc0VkaXRvckVsZW0gPT09IG51bGwpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IHJvb3RFbGVtZW50ID0gZWRpdG9yLmdldFJvb3RFbGVtZW50KClcbiAgICBpZiAoXG4gICAgICBzZWxlY3Rpb24gIT09IG51bGwgJiZcbiAgICAgIG5hdGl2ZVNlbGVjdGlvbiAhPT0gbnVsbCAmJlxuICAgICAgIW5hdGl2ZVNlbGVjdGlvbi5pc0NvbGxhcHNlZCAmJlxuICAgICAgcm9vdEVsZW1lbnQgIT09IG51bGwgJiZcbiAgICAgIHJvb3RFbGVtZW50LmNvbnRhaW5zKG5hdGl2ZVNlbGVjdGlvbi5hbmNob3JOb2RlKVxuICAgICkge1xuICAgICAgY29uc3QgcmFuZ2VSZWN0ID0gZ2V0RE9NUmFuZ2VSZWN0KG5hdGl2ZVNlbGVjdGlvbiwgcm9vdEVsZW1lbnQpXG5cbiAgICAgIHNldEZsb2F0aW5nRWxlbVBvc2l0aW9uKHJhbmdlUmVjdCwgcG9wdXBDaGFyU3R5bGVzRWRpdG9yRWxlbSwgYW5jaG9yRWxlbSwgJ2NlbnRlcicpXG5cbiAgICAgIGlmIChjYXJldFJlZi5jdXJyZW50KSB7XG4gICAgICAgIHNldEZsb2F0aW5nRWxlbVBvc2l0aW9uKHJhbmdlUmVjdCwgY2FyZXRSZWYuY3VycmVudCwgcG9wdXBDaGFyU3R5bGVzRWRpdG9yRWxlbSwgJ2NlbnRlcicpXG4gICAgICB9XG4gICAgfVxuICB9LCBbZWRpdG9yLCBhbmNob3JFbGVtXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHNjcm9sbGVyRWxlbSA9IGFuY2hvckVsZW0ucGFyZW50RWxlbWVudFxuXG4gICAgY29uc3QgdXBkYXRlID0gKCkgPT4ge1xuICAgICAgZWRpdG9yLmdldEVkaXRvclN0YXRlKCkucmVhZCgoKSA9PiB7XG4gICAgICAgIHVwZGF0ZVRleHRGb3JtYXRGbG9hdGluZ1Rvb2xiYXIoKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlKVxuICAgIGlmIChzY3JvbGxlckVsZW0pIHtcbiAgICAgIHNjcm9sbGVyRWxlbS5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGUpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpXG4gICAgICBpZiAoc2Nyb2xsZXJFbGVtKSB7XG4gICAgICAgIHNjcm9sbGVyRWxlbS5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGUpXG4gICAgICB9XG4gICAgfVxuICB9LCBbZWRpdG9yLCB1cGRhdGVUZXh0Rm9ybWF0RmxvYXRpbmdUb29sYmFyLCBhbmNob3JFbGVtXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGVkaXRvci5nZXRFZGl0b3JTdGF0ZSgpLnJlYWQoKCkgPT4ge1xuICAgICAgdXBkYXRlVGV4dEZvcm1hdEZsb2F0aW5nVG9vbGJhcigpXG4gICAgfSlcbiAgICByZXR1cm4gbWVyZ2VSZWdpc3RlcihcbiAgICAgIGVkaXRvci5yZWdpc3RlclVwZGF0ZUxpc3RlbmVyKCh7IGVkaXRvclN0YXRlIH0pID0+IHtcbiAgICAgICAgZWRpdG9yU3RhdGUucmVhZCgoKSA9PiB7XG4gICAgICAgICAgdXBkYXRlVGV4dEZvcm1hdEZsb2F0aW5nVG9vbGJhcigpXG4gICAgICAgIH0pXG4gICAgICB9KSxcblxuICAgICAgZWRpdG9yLnJlZ2lzdGVyQ29tbWFuZChcbiAgICAgICAgU0VMRUNUSU9OX0NIQU5HRV9DT01NQU5ELFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdXBkYXRlVGV4dEZvcm1hdEZsb2F0aW5nVG9vbGJhcigpXG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIENPTU1BTkRfUFJJT1JJVFlfTE9XLFxuICAgICAgKSxcbiAgICApXG4gIH0sIFtlZGl0b3IsIHVwZGF0ZVRleHRGb3JtYXRGbG9hdGluZ1Rvb2xiYXJdKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJmbG9hdGluZy1zZWxlY3QtdG9vbGJhci1wb3B1cFwiIHJlZj17cG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2FyZXRcIiByZWY9e2NhcmV0UmVmfSAvPlxuICAgICAge2VkaXRvci5pc0VkaXRhYmxlKCkgJiYgKFxuICAgICAgICA8UmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICAge2VkaXRvckNvbmZpZz8uZmVhdHVyZXMgJiZcbiAgICAgICAgICAgIGVkaXRvckNvbmZpZy5mZWF0dXJlcz8uZmxvYXRpbmdTZWxlY3RUb29sYmFyPy5zZWN0aW9ucy5tYXAoKHNlY3Rpb24sIGkpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BmbG9hdGluZy1zZWxlY3QtdG9vbGJhci1wb3B1cF9fc2VjdGlvbiBmbG9hdGluZy1zZWxlY3QtdG9vbGJhci1wb3B1cF9fc2VjdGlvbi0ke3NlY3Rpb24ua2V5fWB9XG4gICAgICAgICAgICAgICAgICBrZXk9e3NlY3Rpb24ua2V5fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtzZWN0aW9uLnR5cGUgPT09ICdkcm9wZG93bicgJiYgc2VjdGlvbi5lbnRyaWVzLmxlbmd0aCAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxUb29sYmFyRHJvcGRvd24gSWNvbj17c2VjdGlvbi5DaGlsZENvbXBvbmVudH0gZW50cmllcz17c2VjdGlvbi5lbnRyaWVzfSAvPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIHtzZWN0aW9uLnR5cGUgPT09ICdidXR0b25zJyAmJlxuICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLmVudHJpZXMubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uZW50cmllcy5tYXAoKGVudHJ5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LkNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5LkNvbXBvbmVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2hvckVsZW09e2FuY2hvckVsZW19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yPXtlZGl0b3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnk9e2VudHJ5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17ZW50cnkua2V5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFRvb2xiYXJCdXR0b24gZW50cnk9e2VudHJ5fSBrZXk9e2VudHJ5LmtleX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeS5DaGlsZENvbXBvbmVudCAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9Ub29sYmFyQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICB7aSA8IGVkaXRvckNvbmZpZy5mZWF0dXJlcy5mbG9hdGluZ1NlbGVjdFRvb2xiYXI/LnNlY3Rpb25zLmxlbmd0aCAtIDEgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRpdmlkZXJcIiAvPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSl9XG4gICAgICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApXG59XG5cbmZ1bmN0aW9uIHVzZUZsb2F0aW5nVGV4dEZvcm1hdFRvb2xiYXIoXG4gIGVkaXRvcjogTGV4aWNhbEVkaXRvcixcbiAgYW5jaG9yRWxlbTogSFRNTEVsZW1lbnQsXG4pOiBKU1guRWxlbWVudCB8IG51bGwge1xuICBjb25zdCBbaXNUZXh0LCBzZXRJc1RleHRdID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgdXBkYXRlUG9wdXAgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZWRpdG9yLmdldEVkaXRvclN0YXRlKCkucmVhZCgoKSA9PiB7XG4gICAgICAvLyBTaG91bGQgbm90IHRvIHBvcCB1cCB0aGUgZmxvYXRpbmcgdG9vbGJhciB3aGVuIHVzaW5nIElNRSBpbnB1dFxuICAgICAgaWYgKGVkaXRvci5pc0NvbXBvc2luZygpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgY29uc3Qgc2VsZWN0aW9uID0gJGdldFNlbGVjdGlvbigpXG4gICAgICBjb25zdCBuYXRpdmVTZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKClcbiAgICAgIGNvbnN0IHJvb3RFbGVtZW50ID0gZWRpdG9yLmdldFJvb3RFbGVtZW50KClcblxuICAgICAgaWYgKFxuICAgICAgICBuYXRpdmVTZWxlY3Rpb24gIT09IG51bGwgJiZcbiAgICAgICAgKCEkaXNSYW5nZVNlbGVjdGlvbihzZWxlY3Rpb24pIHx8XG4gICAgICAgICAgcm9vdEVsZW1lbnQgPT09IG51bGwgfHxcbiAgICAgICAgICAhcm9vdEVsZW1lbnQuY29udGFpbnMobmF0aXZlU2VsZWN0aW9uLmFuY2hvck5vZGUpKVxuICAgICAgKSB7XG4gICAgICAgIHNldElzVGV4dChmYWxzZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmICghJGlzUmFuZ2VTZWxlY3Rpb24oc2VsZWN0aW9uKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKHNlbGVjdGlvbi5nZXRUZXh0Q29udGVudCgpICE9PSAnJykge1xuICAgICAgICBjb25zdCBub2RlcyA9IHNlbGVjdGlvbi5nZXROb2RlcygpXG4gICAgICAgIGxldCBmb3VuZE5vZGVXaXRoVGV4dCA9IGZhbHNlXG4gICAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xuICAgICAgICAgIGlmICgkaXNUZXh0Tm9kZShub2RlKSkge1xuICAgICAgICAgICAgc2V0SXNUZXh0KHRydWUpXG4gICAgICAgICAgICBmb3VuZE5vZGVXaXRoVGV4dCA9IHRydWVcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghZm91bmROb2RlV2l0aFRleHQpIHtcbiAgICAgICAgICBzZXRJc1RleHQoZmFsc2UpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldElzVGV4dChmYWxzZSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmF3VGV4dENvbnRlbnQgPSBzZWxlY3Rpb24uZ2V0VGV4dENvbnRlbnQoKS5yZXBsYWNlKC9cXG4vZywgJycpXG4gICAgICBpZiAoIXNlbGVjdGlvbi5pc0NvbGxhcHNlZCgpICYmIHJhd1RleHRDb250ZW50ID09PSAnJykge1xuICAgICAgICBzZXRJc1RleHQoZmFsc2UpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH0pXG4gIH0sIFtlZGl0b3JdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2VsZWN0aW9uY2hhbmdlJywgdXBkYXRlUG9wdXApXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHVwZGF0ZVBvcHVwKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzZWxlY3Rpb25jaGFuZ2UnLCB1cGRhdGVQb3B1cClcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB1cGRhdGVQb3B1cClcbiAgICB9XG4gIH0sIFt1cGRhdGVQb3B1cF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gbWVyZ2VSZWdpc3RlcihcbiAgICAgIGVkaXRvci5yZWdpc3RlclVwZGF0ZUxpc3RlbmVyKCgpID0+IHtcbiAgICAgICAgdXBkYXRlUG9wdXAoKVxuICAgICAgfSksXG4gICAgICBlZGl0b3IucmVnaXN0ZXJSb290TGlzdGVuZXIoKCkgPT4ge1xuICAgICAgICBpZiAoZWRpdG9yLmdldFJvb3RFbGVtZW50KCkgPT09IG51bGwpIHtcbiAgICAgICAgICBzZXRJc1RleHQoZmFsc2UpXG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgIClcbiAgfSwgW2VkaXRvciwgdXBkYXRlUG9wdXBdKVxuXG4gIGlmICghaXNUZXh0KSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHJldHVybiBjcmVhdGVQb3J0YWwoPEZsb2F0aW5nU2VsZWN0VG9vbGJhciBhbmNob3JFbGVtPXthbmNob3JFbGVtfSBlZGl0b3I9e2VkaXRvcn0gLz4sIGFuY2hvckVsZW0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBGbG9hdGluZ1NlbGVjdFRvb2xiYXJQbHVnaW4oe1xuICBhbmNob3JFbGVtID0gZG9jdW1lbnQuYm9keSxcbn06IHtcbiAgYW5jaG9yRWxlbT86IEhUTUxFbGVtZW50XG59KTogSlNYLkVsZW1lbnQgfCBudWxsIHtcbiAgY29uc3QgW2VkaXRvcl0gPSB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0KClcbiAgcmV0dXJuIHVzZUZsb2F0aW5nVGV4dEZvcm1hdFRvb2xiYXIoZWRpdG9yLCBhbmNob3JFbGVtKVxufVxuIl0sIm5hbWVzIjpbIkZsb2F0aW5nU2VsZWN0VG9vbGJhclBsdWdpbiIsIkZsb2F0aW5nU2VsZWN0VG9vbGJhciIsImFuY2hvckVsZW0iLCJlZGl0b3IiLCJwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYiLCJ1c2VSZWYiLCJjYXJldFJlZiIsImVkaXRvckNvbmZpZyIsInVzZUVkaXRvckNvbmZpZ0NvbnRleHQiLCJjbG9zZUZsb2F0aW5nVG9vbGJhciIsInVzZUNhbGxiYWNrIiwiY3VycmVudCIsImlzT3BhY2l0eVplcm8iLCJzdHlsZSIsIm9wYWNpdHkiLCJpc1BvaW50ZXJFdmVudHNOb25lIiwicG9pbnRlckV2ZW50cyIsIm1vdXNlTW92ZUxpc3RlbmVyIiwiZSIsImJ1dHRvbnMiLCJ4IiwiY2xpZW50WCIsInkiLCJjbGllbnRZIiwiZWxlbWVudFVuZGVyTW91c2UiLCJkb2N1bWVudCIsImVsZW1lbnRGcm9tUG9pbnQiLCJjb250YWlucyIsIm1vdXNlVXBMaXN0ZW5lciIsInVzZUVmZmVjdCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidXBkYXRlVGV4dEZvcm1hdEZsb2F0aW5nVG9vbGJhciIsInNlbGVjdGlvbiIsIiRnZXRTZWxlY3Rpb24iLCJwb3B1cENoYXJTdHlsZXNFZGl0b3JFbGVtIiwibmF0aXZlU2VsZWN0aW9uIiwid2luZG93IiwiZ2V0U2VsZWN0aW9uIiwicm9vdEVsZW1lbnQiLCJnZXRSb290RWxlbWVudCIsImlzQ29sbGFwc2VkIiwiYW5jaG9yTm9kZSIsInJhbmdlUmVjdCIsImdldERPTVJhbmdlUmVjdCIsInNldEZsb2F0aW5nRWxlbVBvc2l0aW9uIiwic2Nyb2xsZXJFbGVtIiwicGFyZW50RWxlbWVudCIsInVwZGF0ZSIsImdldEVkaXRvclN0YXRlIiwicmVhZCIsIm1lcmdlUmVnaXN0ZXIiLCJyZWdpc3RlclVwZGF0ZUxpc3RlbmVyIiwiZWRpdG9yU3RhdGUiLCJyZWdpc3RlckNvbW1hbmQiLCJTRUxFQ1RJT05fQ0hBTkdFX0NPTU1BTkQiLCJDT01NQU5EX1BSSU9SSVRZX0xPVyIsImRpdiIsImNsYXNzTmFtZSIsInJlZiIsImlzRWRpdGFibGUiLCJSZWFjdCIsIkZyYWdtZW50IiwiZmVhdHVyZXMiLCJmbG9hdGluZ1NlbGVjdFRvb2xiYXIiLCJzZWN0aW9ucyIsIm1hcCIsInNlY3Rpb24iLCJpIiwia2V5IiwidHlwZSIsImVudHJpZXMiLCJsZW5ndGgiLCJUb29sYmFyRHJvcGRvd24iLCJJY29uIiwiQ2hpbGRDb21wb25lbnQiLCJlbnRyeSIsIkNvbXBvbmVudCIsIlRvb2xiYXJCdXR0b24iLCJ1c2VGbG9hdGluZ1RleHRGb3JtYXRUb29sYmFyIiwiaXNUZXh0Iiwic2V0SXNUZXh0IiwidXNlU3RhdGUiLCJ1cGRhdGVQb3B1cCIsImlzQ29tcG9zaW5nIiwiJGlzUmFuZ2VTZWxlY3Rpb24iLCJnZXRUZXh0Q29udGVudCIsIm5vZGVzIiwiZ2V0Tm9kZXMiLCJmb3VuZE5vZGVXaXRoVGV4dCIsIm5vZGUiLCIkaXNUZXh0Tm9kZSIsInJhd1RleHRDb250ZW50IiwicmVwbGFjZSIsInJlZ2lzdGVyUm9vdExpc3RlbmVyIiwiY3JlYXRlUG9ydGFsIiwiYm9keSIsInVzZUxleGljYWxDb21wb3NlckNvbnRleHQiXSwibWFwcGluZ3MiOiI7Ozs7K0JBbVNnQkE7OztlQUFBQTs7O3dDQWpTMEI7dUJBQ1o7eUJBT3ZCOytEQUNrRDswQkFFNUI7c0NBRVU7aUNBQ1A7eUNBQ1E7K0JBQ1Y7aUNBQ0U7UUFDekI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFUCxTQUFTQyxzQkFBc0IsRUFDN0JDLFVBQVUsRUFDVkMsTUFBTSxFQUlQO0lBQ0MsTUFBTUMsMkJBQTJCQyxJQUFBQSxhQUFNLEVBQXdCO0lBQy9ELE1BQU1DLFdBQVdELElBQUFBLGFBQU0sRUFBd0I7SUFFL0MsTUFBTSxFQUFFRSxZQUFZLEVBQUUsR0FBR0MsSUFBQUEsNENBQXNCO0lBRS9DLE1BQU1DLHVCQUF1QkMsSUFBQUEsa0JBQVcsRUFBQztRQUN2QyxJQUFJTiwwQkFBMEJPLFNBQVM7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
|
|
288
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvRmxvYXRpbmdTZWxlY3RUb29sYmFyL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcbmltcG9ydCB0eXBlIHsgTGV4aWNhbEVkaXRvciB9IGZyb20gJ2xleGljYWwnXG5cbmltcG9ydCB7IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQgfSBmcm9tICdAbGV4aWNhbC9yZWFjdC9MZXhpY2FsQ29tcG9zZXJDb250ZXh0J1xuaW1wb3J0IHsgbWVyZ2VSZWdpc3RlciB9IGZyb20gJ0BsZXhpY2FsL3V0aWxzJ1xuaW1wb3J0IHtcbiAgJGdldFNlbGVjdGlvbixcbiAgJGlzUmFuZ2VTZWxlY3Rpb24sXG4gICRpc1RleHROb2RlLFxuICBDT01NQU5EX1BSSU9SSVRZX0xPVyxcbiAgU0VMRUNUSU9OX0NIQU5HRV9DT01NQU5ELFxufSBmcm9tICdsZXhpY2FsJ1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5cbmltcG9ydCB7IHVzZUVkaXRvckNvbmZpZ0NvbnRleHQgfSBmcm9tICcuLi8uLi9jb25maWcvRWRpdG9yQ29uZmlnUHJvdmlkZXInXG5pbXBvcnQgeyBnZXRET01SYW5nZVJlY3QgfSBmcm9tICcuLi8uLi91dGlscy9nZXRET01SYW5nZVJlY3QnXG5pbXBvcnQgeyBzZXRGbG9hdGluZ0VsZW1Qb3NpdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxzL3NldEZsb2F0aW5nRWxlbVBvc2l0aW9uJ1xuaW1wb3J0IHsgVG9vbGJhckJ1dHRvbiB9IGZyb20gJy4vVG9vbGJhckJ1dHRvbidcbmltcG9ydCB7IFRvb2xiYXJEcm9wZG93biB9IGZyb20gJy4vVG9vbGJhckRyb3Bkb3duJ1xuaW1wb3J0ICcuL2luZGV4LnNjc3MnXG5cbmZ1bmN0aW9uIEZsb2F0aW5nU2VsZWN0VG9vbGJhcih7XG4gIGFuY2hvckVsZW0sXG4gIGVkaXRvcixcbn06IHtcbiAgYW5jaG9yRWxlbTogSFRNTEVsZW1lbnRcbiAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yXG59KTogSlNYLkVsZW1lbnQge1xuICBjb25zdCBwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKVxuICBjb25zdCBjYXJldFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpXG5cbiAgY29uc3QgeyBlZGl0b3JDb25maWcgfSA9IHVzZUVkaXRvckNvbmZpZ0NvbnRleHQoKVxuXG4gIGNvbnN0IGNsb3NlRmxvYXRpbmdUb29sYmFyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWY/LmN1cnJlbnQpIHtcbiAgICAgIGNvbnN0IGlzT3BhY2l0eVplcm8gPSBwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5vcGFjaXR5ID09PSAnMCdcbiAgICAgIGNvbnN0IGlzUG9pbnRlckV2ZW50c05vbmUgPSBwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5wb2ludGVyRXZlbnRzID09PSAnbm9uZSdcblxuICAgICAgaWYgKCFpc09wYWNpdHlaZXJvKSB7XG4gICAgICAgIHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLm9wYWNpdHkgPSAnMCdcbiAgICAgIH1cbiAgICAgIGlmICghaXNQb2ludGVyRXZlbnRzTm9uZSkge1xuICAgICAgICBwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnXG4gICAgICB9XG4gICAgfVxuICB9LCBbcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmXSlcblxuICBjb25zdCBtb3VzZU1vdmVMaXN0ZW5lciA9IHVzZUNhbGxiYWNrKFxuICAgIChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBpZiAocG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmPy5jdXJyZW50ICYmIChlLmJ1dHRvbnMgPT09IDEgfHwgZS5idXR0b25zID09PSAzKSkge1xuICAgICAgICBjb25zdCBpc09wYWNpdHlaZXJvID0gcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnQuc3R5bGUub3BhY2l0eSA9PT0gJzAnXG4gICAgICAgIGNvbnN0IGlzUG9pbnRlckV2ZW50c05vbmUgPSBwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5wb2ludGVyRXZlbnRzID09PSAnbm9uZSdcbiAgICAgICAgaWYgKCFpc09wYWNpdHlaZXJvIHx8ICFpc1BvaW50ZXJFdmVudHNOb25lKSB7XG4gICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIG1vdXNlIGlzIG5vdCBvdmVyIHRoZSBwb3B1cFxuICAgICAgICAgIGNvbnN0IHggPSBlLmNsaWVudFhcbiAgICAgICAgICBjb25zdCB5ID0gZS5jbGllbnRZXG4gICAgICAgICAgY29uc3QgZWxlbWVudFVuZGVyTW91c2UgPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHgsIHkpXG4gICAgICAgICAgaWYgKCFwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5jb250YWlucyhlbGVtZW50VW5kZXJNb3VzZSkpIHtcbiAgICAgICAgICAgIC8vIE1vdXNlIGlzIG5vdCBvdmVyIHRoZSB0YXJnZXQgZWxlbWVudCA9PiBub3QgYSBub3JtYWwgY2xpY2ssIGJ1dCBwcm9iYWJseSBhIGRyYWdcbiAgICAgICAgICAgIGNsb3NlRmxvYXRpbmdUb29sYmFyKClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFtjbG9zZUZsb2F0aW5nVG9vbGJhcl0sXG4gIClcblxuICBjb25zdCBtb3VzZVVwTGlzdGVuZXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZj8uY3VycmVudCkge1xuICAgICAgaWYgKHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLm9wYWNpdHkgIT09ICcxJykge1xuICAgICAgICBwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5vcGFjaXR5ID0gJzEnXG4gICAgICB9XG4gICAgICBpZiAocG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnQuc3R5bGUucG9pbnRlckV2ZW50cyAhPT0gJ2F1dG8nKSB7XG4gICAgICAgIHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnYXV0bydcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWZdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW91c2VNb3ZlTGlzdGVuZXIpXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG1vdXNlVXBMaXN0ZW5lcilcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBtb3VzZU1vdmVMaXN0ZW5lcilcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBtb3VzZVVwTGlzdGVuZXIpXG4gICAgfVxuICB9LCBbcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLCBtb3VzZU1vdmVMaXN0ZW5lciwgbW91c2VVcExpc3RlbmVyXSlcblxuICBjb25zdCB1cGRhdGVUZXh0Rm9ybWF0RmxvYXRpbmdUb29sYmFyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9ICRnZXRTZWxlY3Rpb24oKVxuXG4gICAgY29uc3QgcG9wdXBDaGFyU3R5bGVzRWRpdG9yRWxlbSA9IHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50XG4gICAgY29uc3QgbmF0aXZlU2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpXG5cbiAgICBpZiAocG9wdXBDaGFyU3R5bGVzRWRpdG9yRWxlbSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3Qgcm9vdEVsZW1lbnQgPSBlZGl0b3IuZ2V0Um9vdEVsZW1lbnQoKVxuICAgIGlmIChcbiAgICAgIHNlbGVjdGlvbiAhPT0gbnVsbCAmJlxuICAgICAgbmF0aXZlU2VsZWN0aW9uICE9PSBudWxsICYmXG4gICAgICAhbmF0aXZlU2VsZWN0aW9uLmlzQ29sbGFwc2VkICYmXG4gICAgICByb290RWxlbWVudCAhPT0gbnVsbCAmJlxuICAgICAgcm9vdEVsZW1lbnQuY29udGFpbnMobmF0aXZlU2VsZWN0aW9uLmFuY2hvck5vZGUpXG4gICAgKSB7XG4gICAgICBjb25zdCByYW5nZVJlY3QgPSBnZXRET01SYW5nZVJlY3QobmF0aXZlU2VsZWN0aW9uLCByb290RWxlbWVudClcblxuICAgICAgc2V0RmxvYXRpbmdFbGVtUG9zaXRpb24ocmFuZ2VSZWN0LCBwb3B1cENoYXJTdHlsZXNFZGl0b3JFbGVtLCBhbmNob3JFbGVtLCAnY2VudGVyJylcblxuICAgICAgaWYgKGNhcmV0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgc2V0RmxvYXRpbmdFbGVtUG9zaXRpb24ocmFuZ2VSZWN0LCBjYXJldFJlZi5jdXJyZW50LCBwb3B1cENoYXJTdHlsZXNFZGl0b3JFbGVtLCAnY2VudGVyJylcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtlZGl0b3IsIGFuY2hvckVsZW1dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgc2Nyb2xsZXJFbGVtID0gYW5jaG9yRWxlbS5wYXJlbnRFbGVtZW50XG5cbiAgICBjb25zdCB1cGRhdGUgPSAoKSA9PiB7XG4gICAgICBlZGl0b3IuZ2V0RWRpdG9yU3RhdGUoKS5yZWFkKCgpID0+IHtcbiAgICAgICAgdXBkYXRlVGV4dEZvcm1hdEZsb2F0aW5nVG9vbGJhcigpXG4gICAgICB9KVxuICAgIH1cblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpXG4gICAgaWYgKHNjcm9sbGVyRWxlbSkge1xuICAgICAgc2Nyb2xsZXJFbGVtLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZSlcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHVwZGF0ZSlcbiAgICAgIGlmIChzY3JvbGxlckVsZW0pIHtcbiAgICAgICAgc2Nyb2xsZXJFbGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtlZGl0b3IsIHVwZGF0ZVRleHRGb3JtYXRGbG9hdGluZ1Rvb2xiYXIsIGFuY2hvckVsZW1dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZWRpdG9yLmdldEVkaXRvclN0YXRlKCkucmVhZCgoKSA9PiB7XG4gICAgICB1cGRhdGVUZXh0Rm9ybWF0RmxvYXRpbmdUb29sYmFyKClcbiAgICB9KVxuICAgIHJldHVybiBtZXJnZVJlZ2lzdGVyKFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyVXBkYXRlTGlzdGVuZXIoKHsgZWRpdG9yU3RhdGUgfSkgPT4ge1xuICAgICAgICBlZGl0b3JTdGF0ZS5yZWFkKCgpID0+IHtcbiAgICAgICAgICB1cGRhdGVUZXh0Rm9ybWF0RmxvYXRpbmdUb29sYmFyKClcbiAgICAgICAgfSlcbiAgICAgIH0pLFxuXG4gICAgICBlZGl0b3IucmVnaXN0ZXJDb21tYW5kKFxuICAgICAgICBTRUxFQ1RJT05fQ0hBTkdFX0NPTU1BTkQsXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB1cGRhdGVUZXh0Rm9ybWF0RmxvYXRpbmdUb29sYmFyKClcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gICAgICApLFxuICAgIClcbiAgfSwgW2VkaXRvciwgdXBkYXRlVGV4dEZvcm1hdEZsb2F0aW5nVG9vbGJhcl0pXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImZsb2F0aW5nLXNlbGVjdC10b29sYmFyLXBvcHVwXCIgcmVmPXtwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWZ9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjYXJldFwiIHJlZj17Y2FyZXRSZWZ9IC8+XG4gICAgICB7ZWRpdG9yLmlzRWRpdGFibGUoKSAmJiAoXG4gICAgICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICB7ZWRpdG9yQ29uZmlnPy5mZWF0dXJlcyAmJlxuICAgICAgICAgICAgZWRpdG9yQ29uZmlnLmZlYXR1cmVzPy5mbG9hdGluZ1NlbGVjdFRvb2xiYXI/LnNlY3Rpb25zLm1hcCgoc2VjdGlvbiwgaSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YGZsb2F0aW5nLXNlbGVjdC10b29sYmFyLXBvcHVwX19zZWN0aW9uIGZsb2F0aW5nLXNlbGVjdC10b29sYmFyLXBvcHVwX19zZWN0aW9uLSR7c2VjdGlvbi5rZXl9YH1cbiAgICAgICAgICAgICAgICAgIGtleT17c2VjdGlvbi5rZXl9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3NlY3Rpb24udHlwZSA9PT0gJ2Ryb3Bkb3duJyAmJiBzZWN0aW9uLmVudHJpZXMubGVuZ3RoICYmIChcbiAgICAgICAgICAgICAgICAgICAgPFRvb2xiYXJEcm9wZG93biBJY29uPXtzZWN0aW9uLkNoaWxkQ29tcG9uZW50fSBlbnRyaWVzPXtzZWN0aW9uLmVudHJpZXN9IC8+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAge3NlY3Rpb24udHlwZSA9PT0gJ2J1dHRvbnMnICYmXG4gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uZW50cmllcy5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi5lbnRyaWVzLm1hcCgoZW50cnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoZW50cnkuQ29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW50cnkuQ29tcG9uZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yRWxlbT17YW5jaG9yRWxlbX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeT17ZW50cnl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtlbnRyeS5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8VG9vbGJhckJ1dHRvbiBlbnRyeT17ZW50cnl9IGtleT17ZW50cnkua2V5fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5LkNoaWxkQ29tcG9uZW50IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2xiYXJCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgIHtpIDwgZWRpdG9yQ29uZmlnLmZlYXR1cmVzLmZsb2F0aW5nU2VsZWN0VG9vbGJhcj8uc2VjdGlvbnMubGVuZ3RoIC0gMSAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGl2aWRlclwiIC8+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gIClcbn1cblxuZnVuY3Rpb24gdXNlRmxvYXRpbmdUZXh0Rm9ybWF0VG9vbGJhcihcbiAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yLFxuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudCxcbik6IEpTWC5FbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IFtpc1RleHQsIHNldElzVGV4dF0gPSB1c2VTdGF0ZShmYWxzZSlcblxuICBjb25zdCB1cGRhdGVQb3B1cCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBlZGl0b3IuZ2V0RWRpdG9yU3RhdGUoKS5yZWFkKCgpID0+IHtcbiAgICAgIC8vIFNob3VsZCBub3QgdG8gcG9wIHVwIHRoZSBmbG9hdGluZyB0b29sYmFyIHdoZW4gdXNpbmcgSU1FIGlucHV0XG4gICAgICBpZiAoZWRpdG9yLmlzQ29tcG9zaW5nKCkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCBzZWxlY3Rpb24gPSAkZ2V0U2VsZWN0aW9uKClcbiAgICAgIGNvbnN0IG5hdGl2ZVNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKVxuICAgICAgY29uc3Qgcm9vdEVsZW1lbnQgPSBlZGl0b3IuZ2V0Um9vdEVsZW1lbnQoKVxuXG4gICAgICBpZiAoXG4gICAgICAgIG5hdGl2ZVNlbGVjdGlvbiAhPT0gbnVsbCAmJlxuICAgICAgICAoISRpc1JhbmdlU2VsZWN0aW9uKHNlbGVjdGlvbikgfHxcbiAgICAgICAgICByb290RWxlbWVudCA9PT0gbnVsbCB8fFxuICAgICAgICAgICFyb290RWxlbWVudC5jb250YWlucyhuYXRpdmVTZWxlY3Rpb24uYW5jaG9yTm9kZSkpXG4gICAgICApIHtcbiAgICAgICAgc2V0SXNUZXh0KGZhbHNlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKCEkaXNSYW5nZVNlbGVjdGlvbihzZWxlY3Rpb24pKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoc2VsZWN0aW9uLmdldFRleHRDb250ZW50KCkgIT09ICcnKSB7XG4gICAgICAgIGNvbnN0IG5vZGVzID0gc2VsZWN0aW9uLmdldE5vZGVzKClcbiAgICAgICAgbGV0IGZvdW5kTm9kZVdpdGhUZXh0ID0gZmFsc2VcbiAgICAgICAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XG4gICAgICAgICAgaWYgKCRpc1RleHROb2RlKG5vZGUpKSB7XG4gICAgICAgICAgICBzZXRJc1RleHQodHJ1ZSlcbiAgICAgICAgICAgIGZvdW5kTm9kZVdpdGhUZXh0ID0gdHJ1ZVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFmb3VuZE5vZGVXaXRoVGV4dCkge1xuICAgICAgICAgIHNldElzVGV4dChmYWxzZSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0SXNUZXh0KGZhbHNlKVxuICAgICAgfVxuXG4gICAgICBjb25zdCByYXdUZXh0Q29udGVudCA9IHNlbGVjdGlvbi5nZXRUZXh0Q29udGVudCgpLnJlcGxhY2UoL1xcbi9nLCAnJylcbiAgICAgIGlmICghc2VsZWN0aW9uLmlzQ29sbGFwc2VkKCkgJiYgcmF3VGV4dENvbnRlbnQgPT09ICcnKSB7XG4gICAgICAgIHNldElzVGV4dChmYWxzZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfSlcbiAgfSwgW2VkaXRvcl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzZWxlY3Rpb25jaGFuZ2UnLCB1cGRhdGVQb3B1cClcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdXBkYXRlUG9wdXApXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3NlbGVjdGlvbmNoYW5nZScsIHVwZGF0ZVBvcHVwKVxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHVwZGF0ZVBvcHVwKVxuICAgIH1cbiAgfSwgW3VwZGF0ZVBvcHVwXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiBtZXJnZVJlZ2lzdGVyKFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyVXBkYXRlTGlzdGVuZXIoKCkgPT4ge1xuICAgICAgICB1cGRhdGVQb3B1cCgpXG4gICAgICB9KSxcbiAgICAgIGVkaXRvci5yZWdpc3RlclJvb3RMaXN0ZW5lcigoKSA9PiB7XG4gICAgICAgIGlmIChlZGl0b3IuZ2V0Um9vdEVsZW1lbnQoKSA9PT0gbnVsbCkge1xuICAgICAgICAgIHNldElzVGV4dChmYWxzZSlcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKVxuICB9LCBbZWRpdG9yLCB1cGRhdGVQb3B1cF0pXG5cbiAgaWYgKCFpc1RleHQpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgcmV0dXJuIGNyZWF0ZVBvcnRhbCg8RmxvYXRpbmdTZWxlY3RUb29sYmFyIGFuY2hvckVsZW09e2FuY2hvckVsZW19IGVkaXRvcj17ZWRpdG9yfSAvPiwgYW5jaG9yRWxlbSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEZsb2F0aW5nU2VsZWN0VG9vbGJhclBsdWdpbih7XG4gIGFuY2hvckVsZW0gPSBkb2N1bWVudC5ib2R5LFxufToge1xuICBhbmNob3JFbGVtPzogSFRNTEVsZW1lbnRcbn0pOiBKU1guRWxlbWVudCB8IG51bGwge1xuICBjb25zdCBbZWRpdG9yXSA9IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQoKVxuICByZXR1cm4gdXNlRmxvYXRpbmdUZXh0Rm9ybWF0VG9vbGJhcihlZGl0b3IsIGFuY2hvckVsZW0pXG59XG4iXSwibmFtZXMiOlsiRmxvYXRpbmdTZWxlY3RUb29sYmFyUGx1Z2luIiwiRmxvYXRpbmdTZWxlY3RUb29sYmFyIiwiYW5jaG9yRWxlbSIsImVkaXRvciIsInBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZiIsInVzZVJlZiIsImNhcmV0UmVmIiwiZWRpdG9yQ29uZmlnIiwidXNlRWRpdG9yQ29uZmlnQ29udGV4dCIsImNsb3NlRmxvYXRpbmdUb29sYmFyIiwidXNlQ2FsbGJhY2siLCJjdXJyZW50IiwiaXNPcGFjaXR5WmVybyIsInN0eWxlIiwib3BhY2l0eSIsImlzUG9pbnRlckV2ZW50c05vbmUiLCJwb2ludGVyRXZlbnRzIiwibW91c2VNb3ZlTGlzdGVuZXIiLCJlIiwiYnV0dG9ucyIsIngiLCJjbGllbnRYIiwieSIsImNsaWVudFkiLCJlbGVtZW50VW5kZXJNb3VzZSIsImRvY3VtZW50IiwiZWxlbWVudEZyb21Qb2ludCIsImNvbnRhaW5zIiwibW91c2VVcExpc3RlbmVyIiwidXNlRWZmZWN0IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJ1cGRhdGVUZXh0Rm9ybWF0RmxvYXRpbmdUb29sYmFyIiwic2VsZWN0aW9uIiwiJGdldFNlbGVjdGlvbiIsInBvcHVwQ2hhclN0eWxlc0VkaXRvckVsZW0iLCJuYXRpdmVTZWxlY3Rpb24iLCJ3aW5kb3ciLCJnZXRTZWxlY3Rpb24iLCJyb290RWxlbWVudCIsImdldFJvb3RFbGVtZW50IiwiaXNDb2xsYXBzZWQiLCJhbmNob3JOb2RlIiwicmFuZ2VSZWN0IiwiZ2V0RE9NUmFuZ2VSZWN0Iiwic2V0RmxvYXRpbmdFbGVtUG9zaXRpb24iLCJzY3JvbGxlckVsZW0iLCJwYXJlbnRFbGVtZW50IiwidXBkYXRlIiwiZ2V0RWRpdG9yU3RhdGUiLCJyZWFkIiwibWVyZ2VSZWdpc3RlciIsInJlZ2lzdGVyVXBkYXRlTGlzdGVuZXIiLCJlZGl0b3JTdGF0ZSIsInJlZ2lzdGVyQ29tbWFuZCIsIlNFTEVDVElPTl9DSEFOR0VfQ09NTUFORCIsIkNPTU1BTkRfUFJJT1JJVFlfTE9XIiwiZGl2IiwiY2xhc3NOYW1lIiwicmVmIiwiaXNFZGl0YWJsZSIsIlJlYWN0IiwiRnJhZ21lbnQiLCJmZWF0dXJlcyIsImZsb2F0aW5nU2VsZWN0VG9vbGJhciIsInNlY3Rpb25zIiwibWFwIiwic2VjdGlvbiIsImkiLCJrZXkiLCJ0eXBlIiwiZW50cmllcyIsImxlbmd0aCIsIlRvb2xiYXJEcm9wZG93biIsIkljb24iLCJDaGlsZENvbXBvbmVudCIsImVudHJ5IiwiQ29tcG9uZW50IiwiVG9vbGJhckJ1dHRvbiIsInVzZUZsb2F0aW5nVGV4dEZvcm1hdFRvb2xiYXIiLCJpc1RleHQiLCJzZXRJc1RleHQiLCJ1c2VTdGF0ZSIsInVwZGF0ZVBvcHVwIiwiaXNDb21wb3NpbmciLCIkaXNSYW5nZVNlbGVjdGlvbiIsImdldFRleHRDb250ZW50Iiwibm9kZXMiLCJnZXROb2RlcyIsImZvdW5kTm9kZVdpdGhUZXh0Iiwibm9kZSIsIiRpc1RleHROb2RlIiwicmF3VGV4dENvbnRlbnQiLCJyZXBsYWNlIiwicmVnaXN0ZXJSb290TGlzdGVuZXIiLCJjcmVhdGVQb3J0YWwiLCJib2R5IiwidXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OytCQW9TZ0JBOzs7ZUFBQUE7Ozt3Q0FqUzBCO3VCQUNaO3lCQU92QjsrREFDa0Q7MEJBRTVCO3NDQUVVO2lDQUNQO3lDQUNROytCQUNWO2lDQUNFO1FBQ3pCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRVAsU0FBU0Msc0JBQXNCLEVBQzdCQyxVQUFVLEVBQ1ZDLE1BQU0sRUFJUDtJQUNDLE1BQU1DLDJCQUEyQkMsSUFBQUEsYUFBTSxFQUF3QjtJQUMvRCxNQUFNQyxXQUFXRCxJQUFBQSxhQUFNLEVBQXdCO0lBRS9DLE1BQU0sRUFBRUUsWUFBWSxFQUFFLEdBQUdDLElBQUFBLDRDQUFzQjtJQUUvQyxNQUFNQyx1QkFBdUJDLElBQUFBLGtCQUFXLEVBQUM7UUFDdkMs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
|
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
1
|
import * as React from 'react';
|
|
9
2
|
export declare const MarkdownShortcutPlugin: React.FC;
|
|
10
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/field/lexical/plugins/MarkdownShortcut/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/field/lexical/plugins/MarkdownShortcut/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAI1C,CAAA"}
|
|
@@ -1,10 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*
|
|
7
|
-
*/ "use strict";
|
|
1
|
+
'use client';
|
|
2
|
+
"use strict";
|
|
8
3
|
Object.defineProperty(exports, "__esModule", {
|
|
9
4
|
value: true
|
|
10
5
|
});
|
|
@@ -63,4 +58,4 @@ const MarkdownShortcutPlugin = ()=>{
|
|
|
63
58
|
});
|
|
64
59
|
};
|
|
65
60
|
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvTWFya2Rvd25TaG9ydGN1dC9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5pbXBvcnQgeyBNYXJrZG93blNob3J0Y3V0UGx1Z2luIGFzIExleGljYWxNYXJrZG93blNob3J0Y3V0UGx1Z2luIH0gZnJvbSAnQGxleGljYWwvcmVhY3QvTGV4aWNhbE1hcmtkb3duU2hvcnRjdXRQbHVnaW4nXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgdXNlRWRpdG9yQ29uZmlnQ29udGV4dCB9IGZyb20gJy4uLy4uL2NvbmZpZy9FZGl0b3JDb25maWdQcm92aWRlcidcblxuZXhwb3J0IGNvbnN0IE1hcmtkb3duU2hvcnRjdXRQbHVnaW46IFJlYWN0LkZDID0gKCkgPT4ge1xuICBjb25zdCB7IGVkaXRvckNvbmZpZyB9ID0gdXNlRWRpdG9yQ29uZmlnQ29udGV4dCgpXG5cbiAgcmV0dXJuIDxMZXhpY2FsTWFya2Rvd25TaG9ydGN1dFBsdWdpbiB0cmFuc2Zvcm1lcnM9e2VkaXRvckNvbmZpZy5mZWF0dXJlcy5tYXJrZG93blRyYW5zZm9ybWVyc30gLz5cbn1cbiJdLCJuYW1lcyI6WyJNYXJrZG93blNob3J0Y3V0UGx1Z2luIiwiZWRpdG9yQ29uZmlnIiwidXNlRWRpdG9yQ29uZmlnQ29udGV4dCIsIkxleGljYWxNYXJrZG93blNob3J0Y3V0UGx1Z2luIiwidHJhbnNmb3JtZXJzIiwiZmVhdHVyZXMiLCJtYXJrZG93blRyYW5zZm9ybWVycyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OytCQU1hQTs7O2VBQUFBOzs7K0NBTDJEOytEQUNqRDtzQ0FFZ0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFaEMsTUFBTUEseUJBQW1DO0lBQzlDLE1BQU0sRUFBRUMsWUFBWSxFQUFFLEdBQUdDLElBQUFBLDRDQUFzQjtJQUUvQyxxQkFBTyxxQkFBQ0MscURBQTZCO1FBQUNDLGNBQWNILGFBQWFJLFFBQVEsQ0FBQ0Msb0JBQW9COztBQUNoRyJ9
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import type { i18n } from 'i18next';
|
|
2
1
|
import type { LexicalCommand, LexicalEditor, TextNode } from 'lexical';
|
|
3
2
|
import type { MutableRefObject, ReactPortal } from 'react';
|
|
3
|
+
import type { SlashMenuOption } from './types';
|
|
4
|
+
import type { SlashMenuGroup } from './types';
|
|
4
5
|
export type MenuTextMatch = {
|
|
5
6
|
leadOffset: number;
|
|
6
7
|
matchingString: string;
|
|
@@ -11,38 +12,6 @@ export type MenuResolution = {
|
|
|
11
12
|
match?: MenuTextMatch;
|
|
12
13
|
};
|
|
13
14
|
export declare const PUNCTUATION = "\\.,\\+\\*\\?\\$\\@\\|#{}\\(\\)\\^\\-\\[\\]\\\\/!%'\"~=<>_:;";
|
|
14
|
-
export declare class SlashMenuGroup {
|
|
15
|
-
options: Array<SlashMenuOption>;
|
|
16
|
-
title: string;
|
|
17
|
-
}
|
|
18
|
-
export declare class SlashMenuOption {
|
|
19
|
-
Icon: React.FC;
|
|
20
|
-
displayName?: ({ i18n }: {
|
|
21
|
-
i18n: i18n;
|
|
22
|
-
}) => string;
|
|
23
|
-
key: string;
|
|
24
|
-
keyboardShortcut?: string;
|
|
25
|
-
keywords: Array<string>;
|
|
26
|
-
onSelect: ({ editor, queryString }: {
|
|
27
|
-
editor: LexicalEditor;
|
|
28
|
-
queryString: string;
|
|
29
|
-
}) => void;
|
|
30
|
-
ref?: MutableRefObject<HTMLElement | null>;
|
|
31
|
-
title: string;
|
|
32
|
-
constructor(title: string, options: {
|
|
33
|
-
Icon: React.FC;
|
|
34
|
-
displayName?: ({ i18n }: {
|
|
35
|
-
i18n: i18n;
|
|
36
|
-
}) => string;
|
|
37
|
-
keyboardShortcut?: string;
|
|
38
|
-
keywords?: Array<string>;
|
|
39
|
-
onSelect: ({ editor, queryString }: {
|
|
40
|
-
editor: LexicalEditor;
|
|
41
|
-
queryString: string;
|
|
42
|
-
}) => void;
|
|
43
|
-
});
|
|
44
|
-
setRefElement(element: HTMLElement | null): void;
|
|
45
|
-
}
|
|
46
15
|
export type MenuRenderFn = (anchorElementRef: MutableRefObject<HTMLElement | null>, itemProps: {
|
|
47
16
|
groupsWithOptions: Array<SlashMenuGroup>;
|
|
48
17
|
selectOptionAndCleanUp: (selectedOption: SlashMenuOption) => void;
|
package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LexicalMenu.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"LexicalMenu.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAiB1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C,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,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,WAAW,EACvB,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,CA4F/B;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,KAAK,aAAa,GAAG,IAAI,CAAA"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
'use client';
|
|
1
2
|
"use strict";
|
|
2
3
|
Object.defineProperty(exports, "__esModule", {
|
|
3
4
|
value: true
|
|
@@ -12,12 +13,6 @@ _export(exports, {
|
|
|
12
13
|
PUNCTUATION: function() {
|
|
13
14
|
return PUNCTUATION;
|
|
14
15
|
},
|
|
15
|
-
SlashMenuGroup: function() {
|
|
16
|
-
return SlashMenuGroup;
|
|
17
|
-
},
|
|
18
|
-
SlashMenuOption: function() {
|
|
19
|
-
return SlashMenuOption;
|
|
20
|
-
},
|
|
21
16
|
getScrollParent: function() {
|
|
22
17
|
return getScrollParent;
|
|
23
18
|
},
|
|
@@ -39,43 +34,6 @@ const _utils = require("@lexical/utils");
|
|
|
39
34
|
const _lexical = require("lexical");
|
|
40
35
|
const _react = require("react");
|
|
41
36
|
const PUNCTUATION = '\\.,\\+\\*\\?\\$\\@\\|#{}\\(\\)\\^\\-\\[\\]\\\\/!%\'"~=<>_:;';
|
|
42
|
-
class SlashMenuGroup {
|
|
43
|
-
options;
|
|
44
|
-
title;
|
|
45
|
-
}
|
|
46
|
-
class SlashMenuOption {
|
|
47
|
-
Icon;
|
|
48
|
-
displayName;
|
|
49
|
-
// Icon for display
|
|
50
|
-
key;
|
|
51
|
-
// TBD
|
|
52
|
-
keyboardShortcut;
|
|
53
|
-
// For extra searching.
|
|
54
|
-
keywords;
|
|
55
|
-
// What happens when you select this option?
|
|
56
|
-
onSelect;
|
|
57
|
-
ref;
|
|
58
|
-
// What shows up in the editor
|
|
59
|
-
title;
|
|
60
|
-
constructor(title, options){
|
|
61
|
-
this.key = title;
|
|
62
|
-
this.ref = {
|
|
63
|
-
current: null
|
|
64
|
-
};
|
|
65
|
-
this.setRefElement = this.setRefElement.bind(this);
|
|
66
|
-
this.title = title;
|
|
67
|
-
this.displayName = options.displayName;
|
|
68
|
-
this.keywords = options.keywords || [];
|
|
69
|
-
this.Icon = options.Icon;
|
|
70
|
-
this.keyboardShortcut = options.keyboardShortcut;
|
|
71
|
-
this.onSelect = options.onSelect.bind(this);
|
|
72
|
-
}
|
|
73
|
-
setRefElement(element) {
|
|
74
|
-
this.ref = {
|
|
75
|
-
current: element
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
37
|
const scrollIntoViewIfNeeded = (target)=>{
|
|
80
38
|
const typeaheadContainerNode = document.getElementById('typeahead-menu');
|
|
81
39
|
if (!typeaheadContainerNode) return;
|
|
@@ -466,4 +424,4 @@ function useMenuAnchorRef(anchorElem, resolution, setResolution, className) {
|
|
|
466
424
|
return anchorElementRef;
|
|
467
425
|
}
|
|
468
426
|
|
|
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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
|
|
427
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvU2xhc2hNZW51L0xleGljYWxUeXBlYWhlYWRNZW51UGx1Z2luL0xleGljYWxNZW51LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcbmltcG9ydCB0eXBlIHsgTGV4aWNhbENvbW1hbmQsIExleGljYWxFZGl0b3IsIFRleHROb2RlIH0gZnJvbSAnbGV4aWNhbCdcbmltcG9ydCB0eXBlIHsgTXV0YWJsZVJlZk9iamVjdCwgUmVhY3RQb3J0YWwgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgdXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCB9IGZyb20gJ0BsZXhpY2FsL3JlYWN0L0xleGljYWxDb21wb3NlckNvbnRleHQnXG5pbXBvcnQgeyBtZXJnZVJlZ2lzdGVyIH0gZnJvbSAnQGxleGljYWwvdXRpbHMnXG5pbXBvcnQge1xuICAkZ2V0U2VsZWN0aW9uLFxuICAkaXNSYW5nZVNlbGVjdGlvbixcbiAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gIEtFWV9BUlJPV19ET1dOX0NPTU1BTkQsXG4gIEtFWV9BUlJPV19VUF9DT01NQU5ELFxuICBLRVlfRU5URVJfQ09NTUFORCxcbiAgS0VZX0VTQ0FQRV9DT01NQU5ELFxuICBLRVlfVEFCX0NPTU1BTkQsXG4gIGNyZWF0ZUNvbW1hbmQsXG59IGZyb20gJ2xleGljYWwnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VMYXlvdXRFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHR5cGUgeyBTbGFzaE1lbnVPcHRpb24gfSBmcm9tICcuL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBTbGFzaE1lbnVHcm91cCB9IGZyb20gJy4vdHlwZXMnXG5cbmV4cG9ydCB0eXBlIE1lbnVUZXh0TWF0Y2ggPSB7XG4gIGxlYWRPZmZzZXQ6IG51bWJlclxuICBtYXRjaGluZ1N0cmluZzogc3RyaW5nXG4gIHJlcGxhY2VhYmxlU3RyaW5nOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgTWVudVJlc29sdXRpb24gPSB7XG4gIGdldFJlY3Q6ICgpID0+IERPTVJlY3RcbiAgbWF0Y2g/OiBNZW51VGV4dE1hdGNoXG59XG5cbmV4cG9ydCBjb25zdCBQVU5DVFVBVElPTiA9ICdcXFxcLixcXFxcK1xcXFwqXFxcXD9cXFxcJFxcXFxAXFxcXHwje31cXFxcKFxcXFwpXFxcXF5cXFxcLVxcXFxbXFxcXF1cXFxcXFxcXC8hJVxcJ1wifj08Pl86OydcblxuZXhwb3J0IHR5cGUgTWVudVJlbmRlckZuID0gKFxuICBhbmNob3JFbGVtZW50UmVmOiBNdXRhYmxlUmVmT2JqZWN0PEhUTUxFbGVtZW50IHwgbnVsbD4sXG4gIGl0ZW1Qcm9wczoge1xuICAgIGdyb3Vwc1dpdGhPcHRpb25zOiBBcnJheTxTbGFzaE1lbnVHcm91cD5cbiAgICBzZWxlY3RPcHRpb25BbmRDbGVhblVwOiAoc2VsZWN0ZWRPcHRpb246IFNsYXNoTWVudU9wdGlvbikgPT4gdm9pZFxuICAgIHNlbGVjdGVkT3B0aW9uS2V5OiBudWxsIHwgc3RyaW5nXG4gICAgc2V0U2VsZWN0ZWRPcHRpb25LZXk6IChvcHRpb25LZXk6IHN0cmluZykgPT4gdm9pZFxuICB9LFxuICBtYXRjaGluZ1N0cmluZzogbnVsbCB8IHN0cmluZyxcbikgPT4gSlNYLkVsZW1lbnQgfCBSZWFjdFBvcnRhbCB8IG51bGxcblxuY29uc3Qgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCA9ICh0YXJnZXQ6IEhUTUxFbGVtZW50KSA9PiB7XG4gIGNvbnN0IHR5cGVhaGVhZENvbnRhaW5lck5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHlwZWFoZWFkLW1lbnUnKVxuICBpZiAoIXR5cGVhaGVhZENvbnRhaW5lck5vZGUpIHJldHVyblxuXG4gIGNvbnN0IHR5cGVhaGVhZFJlY3QgPSB0eXBlYWhlYWRDb250YWluZXJOb2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG5cbiAgaWYgKHR5cGVhaGVhZFJlY3QudG9wICsgdHlwZWFoZWFkUmVjdC5oZWlnaHQgPiB3aW5kb3cuaW5uZXJIZWlnaHQpIHtcbiAgICB0eXBlYWhlYWRDb250YWluZXJOb2RlLnNjcm9sbEludG9WaWV3KHtcbiAgICAgIGJsb2NrOiAnY2VudGVyJyxcbiAgICB9KVxuICB9XG5cbiAgaWYgKHR5cGVhaGVhZFJlY3QudG9wIDwgMCkge1xuICAgIHR5cGVhaGVhZENvbnRhaW5lck5vZGUuc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgYmxvY2s6ICdjZW50ZXInLFxuICAgIH0pXG4gIH1cblxuICB0YXJnZXQuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ25lYXJlc3QnIH0pXG59XG5cbi8qKlxuICogV2FsayBiYWNrd2FyZHMgYWxvbmcgdXNlciBpbnB1dCBhbmQgZm9yd2FyZCB0aHJvdWdoIGVudGl0eSB0aXRsZSB0byB0cnlcbiAqIGFuZCByZXBsYWNlIG1vcmUgb2YgdGhlIHVzZXIncyB0ZXh0IHdpdGggZW50aXR5LlxuICovXG5mdW5jdGlvbiBnZXRGdWxsTWF0Y2hPZmZzZXQoZG9jdW1lbnRUZXh0OiBzdHJpbmcsIGVudHJ5VGV4dDogc3RyaW5nLCBvZmZzZXQ6IG51bWJlcik6IG51bWJlciB7XG4gIGxldCB0cmlnZ2VyT2Zmc2V0ID0gb2Zmc2V0XG4gIGZvciAobGV0IGkgPSB0cmlnZ2VyT2Zmc2V0OyBpIDw9IGVudHJ5VGV4dC5sZW5ndGg7IGkrKykge1xuICAgIGlmIChkb2N1bWVudFRleHQuc3Vic3RyKC1pKSA9PT0gZW50cnlUZXh0LnN1YnN0cigwLCBpKSkge1xuICAgICAgdHJpZ2dlck9mZnNldCA9IGlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRyaWdnZXJPZmZzZXRcbn1cblxuLyoqXG4gKiBTcGxpdCBMZXhpY2FsIFRleHROb2RlIGFuZCByZXR1cm4gYSBuZXcgVGV4dE5vZGUgb25seSBjb250YWluaW5nIG1hdGNoZWQgdGV4dC5cbiAqIENvbW1vbiB1c2UgY2FzZXMgaW5jbHVkZTogcmVtb3ZpbmcgdGhlIG5vZGUsIHJlcGxhY2luZyB3aXRoIGEgbmV3IG5vZGUuXG4gKi9cbmZ1bmN0aW9uICRzcGxpdE5vZGVDb250YWluaW5nUXVlcnkobWF0Y2g6IE1lbnVUZXh0TWF0Y2gpOiBUZXh0Tm9kZSB8IG51bGwge1xuICBjb25zdCBzZWxlY3Rpb24gPSAkZ2V0U2VsZWN0aW9uKClcbiAgaWYgKCEkaXNSYW5nZVNlbGVjdGlvbihzZWxlY3Rpb24pIHx8ICFzZWxlY3Rpb24uaXNDb2xsYXBzZWQoKSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgYW5jaG9yID0gc2VsZWN0aW9uLmFuY2hvclxuICBpZiAoYW5jaG9yLnR5cGUgIT09ICd0ZXh0Jykge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgYW5jaG9yTm9kZSA9IGFuY2hvci5nZXROb2RlKClcbiAgaWYgKCFhbmNob3JOb2RlLmlzU2ltcGxlVGV4dCgpKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBjb25zdCBzZWxlY3Rpb25PZmZzZXQgPSBhbmNob3Iub2Zmc2V0XG4gIGNvbnN0IHRleHRDb250ZW50ID0gYW5jaG9yTm9kZS5nZXRUZXh0Q29udGVudCgpLnNsaWNlKDAsIHNlbGVjdGlvbk9mZnNldClcbiAgY29uc3QgY2hhcmFjdGVyT2Zmc2V0ID0gbWF0Y2gucmVwbGFjZWFibGVTdHJpbmcubGVuZ3RoXG4gIGNvbnN0IHF1ZXJ5T2Zmc2V0ID0gZ2V0RnVsbE1hdGNoT2Zmc2V0KHRleHRDb250ZW50LCBtYXRjaC5tYXRjaGluZ1N0cmluZywgY2hhcmFjdGVyT2Zmc2V0KVxuICBjb25zdCBzdGFydE9mZnNldCA9IHNlbGVjdGlvbk9mZnNldCAtIHF1ZXJ5T2Zmc2V0XG4gIGlmIChzdGFydE9mZnNldCA8IDApIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGxldCBuZXdOb2RlXG4gIGlmIChzdGFydE9mZnNldCA9PT0gMCkge1xuICAgIDtbbmV3Tm9kZV0gPSBhbmNob3JOb2RlLnNwbGl0VGV4dChzZWxlY3Rpb25PZmZzZXQpXG4gIH0gZWxzZSB7XG4gICAgO1ssIG5ld05vZGVdID0gYW5jaG9yTm9kZS5zcGxpdFRleHQoc3RhcnRPZmZzZXQsIHNlbGVjdGlvbk9mZnNldClcbiAgfVxuXG4gIHJldHVybiBuZXdOb2RlXG59XG5cbi8vIEdvdCBmcm9tIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS80MjU0MzkwOC8yMDEzNTgwXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2Nyb2xsUGFyZW50KFxuICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgaW5jbHVkZUhpZGRlbjogYm9vbGVhbixcbik6IEhUTUxCb2R5RWxlbWVudCB8IEhUTUxFbGVtZW50IHtcbiAgbGV0IHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KVxuICBjb25zdCBleGNsdWRlU3RhdGljUGFyZW50ID0gc3R5bGUucG9zaXRpb24gPT09ICdhYnNvbHV0ZSdcbiAgY29uc3Qgb3ZlcmZsb3dSZWdleCA9IGluY2x1ZGVIaWRkZW4gPyAvKGF1dG98c2Nyb2xsfGhpZGRlbikvIDogLyhhdXRvfHNjcm9sbCkvXG4gIGlmIChzdHlsZS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgIHJldHVybiBkb2N1bWVudC5ib2R5XG4gIH1cbiAgZm9yIChsZXQgcGFyZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBlbGVtZW50OyAocGFyZW50ID0gcGFyZW50LnBhcmVudEVsZW1lbnQpOyApIHtcbiAgICBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUocGFyZW50KVxuICAgIGlmIChleGNsdWRlU3RhdGljUGFyZW50ICYmIHN0eWxlLnBvc2l0aW9uID09PSAnc3RhdGljJykge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKG92ZXJmbG93UmVnZXgudGVzdChzdHlsZS5vdmVyZmxvdyArIHN0eWxlLm92ZXJmbG93WSArIHN0eWxlLm92ZXJmbG93WCkpIHtcbiAgICAgIHJldHVybiBwYXJlbnRcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRvY3VtZW50LmJvZHlcbn1cblxuZnVuY3Rpb24gaXNUcmlnZ2VyVmlzaWJsZUluTmVhcmVzdFNjcm9sbENvbnRhaW5lcihcbiAgdGFyZ2V0RWxlbWVudDogSFRNTEVsZW1lbnQsXG4gIGNvbnRhaW5lckVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHRSZWN0ID0gdGFyZ2V0RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICBjb25zdCBjUmVjdCA9IGNvbnRhaW5lckVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgcmV0dXJuIHRSZWN0LnRvcCA+IGNSZWN0LnRvcCAmJiB0UmVjdC50b3AgPCBjUmVjdC5ib3R0b21cbn1cblxuLy8gUmVwb3NpdGlvbiB0aGUgbWVudSBvbiBzY3JvbGwsIHdpbmRvdyByZXNpemUsIGFuZCBlbGVtZW50IHJlc2l6ZS5cbmV4cG9ydCBmdW5jdGlvbiB1c2VEeW5hbWljUG9zaXRpb25pbmcoXG4gIHJlc29sdXRpb246IE1lbnVSZXNvbHV0aW9uIHwgbnVsbCxcbiAgdGFyZ2V0RWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsLFxuICBvblJlcG9zaXRpb246ICgpID0+IHZvaWQsXG4gIG9uVmlzaWJpbGl0eUNoYW5nZT86IChpc0luVmlldzogYm9vbGVhbikgPT4gdm9pZCxcbikge1xuICBjb25zdCBbZWRpdG9yXSA9IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQoKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0YXJnZXRFbGVtZW50ICE9IG51bGwgJiYgcmVzb2x1dGlvbiAhPSBudWxsKSB7XG4gICAgICBjb25zdCByb290RWxlbWVudCA9IGVkaXRvci5nZXRSb290RWxlbWVudCgpXG4gICAgICBjb25zdCByb290U2Nyb2xsUGFyZW50ID1cbiAgICAgICAgcm9vdEVsZW1lbnQgIT0gbnVsbCA/IGdldFNjcm9sbFBhcmVudChyb290RWxlbWVudCwgZmFsc2UpIDogZG9jdW1lbnQuYm9keVxuICAgICAgbGV0IHRpY2tpbmcgPSBmYWxzZVxuICAgICAgbGV0IHByZXZpb3VzSXNJblZpZXcgPSBpc1RyaWdnZXJWaXNpYmxlSW5OZWFyZXN0U2Nyb2xsQ29udGFpbmVyKFxuICAgICAgICB0YXJnZXRFbGVtZW50LFxuICAgICAgICByb290U2Nyb2xsUGFyZW50LFxuICAgICAgKVxuICAgICAgY29uc3QgaGFuZGxlU2Nyb2xsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIXRpY2tpbmcpIHtcbiAgICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIG9uUmVwb3NpdGlvbigpXG4gICAgICAgICAgICB0aWNraW5nID0gZmFsc2VcbiAgICAgICAgICB9KVxuICAgICAgICAgIHRpY2tpbmcgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXNJblZpZXcgPSBpc1RyaWdnZXJWaXNpYmxlSW5OZWFyZXN0U2Nyb2xsQ29udGFpbmVyKHRhcmdldEVsZW1lbnQsIHJvb3RTY3JvbGxQYXJlbnQpXG4gICAgICAgIGlmIChpc0luVmlldyAhPT0gcHJldmlvdXNJc0luVmlldykge1xuICAgICAgICAgIHByZXZpb3VzSXNJblZpZXcgPSBpc0luVmlld1xuICAgICAgICAgIGlmIChvblZpc2liaWxpdHlDaGFuZ2UgIT0gbnVsbCkge1xuICAgICAgICAgICAgb25WaXNpYmlsaXR5Q2hhbmdlKGlzSW5WaWV3KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3QgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIob25SZXBvc2l0aW9uKVxuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG9uUmVwb3NpdGlvbilcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCwge1xuICAgICAgICBjYXB0dXJlOiB0cnVlLFxuICAgICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgfSlcbiAgICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGFyZ2V0RWxlbWVudClcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHJlc2l6ZU9ic2VydmVyLnVub2JzZXJ2ZSh0YXJnZXRFbGVtZW50KVxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgb25SZXBvc2l0aW9uKVxuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwsIHRydWUpXG4gICAgICB9XG4gICAgfVxuICB9LCBbdGFyZ2V0RWxlbWVudCwgZWRpdG9yLCBvblZpc2liaWxpdHlDaGFuZ2UsIG9uUmVwb3NpdGlvbiwgcmVzb2x1dGlvbl0pXG59XG5cbmV4cG9ydCBjb25zdCBTQ1JPTExfVFlQRUFIRUFEX09QVElPTl9JTlRPX1ZJRVdfQ09NTUFORDogTGV4aWNhbENvbW1hbmQ8e1xuICBpbmRleDogbnVtYmVyXG4gIG9wdGlvbjogU2xhc2hNZW51T3B0aW9uXG59PiA9IGNyZWF0ZUNvbW1hbmQoJ1NDUk9MTF9UWVBFQUhFQURfT1BUSU9OX0lOVE9fVklFV19DT01NQU5EJylcblxuZXhwb3J0IGZ1bmN0aW9uIExleGljYWxNZW51KHtcbiAgYW5jaG9yRWxlbWVudFJlZixcbiAgY2xvc2UsXG4gIGVkaXRvcixcbiAgLy8gZ3JvdXBzV2l0aE9wdGlvbnMgZmlsdGVyaW5nIGlzIGFscmVhZHkgaGFuZGxlZCBpbiBTbGFzaE1lbnUvaW5kZXgudHN4LiBUaHVzLCBncm91cHNXaXRoT3B0aW9ucyBhbHdheXMgY29udGFpbnMgdGhlIG1hdGNoaW5nIG9wdGlvbnMuXG4gIGdyb3Vwc1dpdGhPcHRpb25zLFxuICBtZW51UmVuZGVyRm4sXG4gIG9uU2VsZWN0T3B0aW9uLFxuICByZXNvbHV0aW9uLFxuICBzaG91bGRTcGxpdE5vZGVXaXRoUXVlcnkgPSBmYWxzZSxcbn06IHtcbiAgYW5jaG9yRWxlbWVudFJlZjogTXV0YWJsZVJlZk9iamVjdDxIVE1MRWxlbWVudD5cbiAgY2xvc2U6ICgpID0+IHZvaWRcbiAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yXG4gIGdyb3Vwc1dpdGhPcHRpb25zOiBBcnJheTxTbGFzaE1lbnVHcm91cD5cbiAgbWVudVJlbmRlckZuOiBNZW51UmVuZGVyRm5cbiAgb25TZWxlY3RPcHRpb246IChcbiAgICBvcHRpb246IFNsYXNoTWVudU9wdGlvbixcbiAgICB0ZXh0Tm9kZUNvbnRhaW5pbmdRdWVyeTogVGV4dE5vZGUgfCBudWxsLFxuICAgIGNsb3NlTWVudTogKCkgPT4gdm9pZCxcbiAgICBtYXRjaGluZ1N0cmluZzogc3RyaW5nLFxuICApID0+IHZvaWRcbiAgcmVzb2x1dGlvbjogTWVudVJlc29sdXRpb25cbiAgc2hvdWxkU3BsaXROb2RlV2l0aFF1ZXJ5PzogYm9vbGVhblxufSk6IEpTWC5FbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IFtzZWxlY3RlZE9wdGlvbktleSwgc2V0U2VsZWN0ZWRPcHRpb25LZXldID0gdXNlU3RhdGU8bnVsbCB8IHN0cmluZz4obnVsbClcblxuICBjb25zdCBtYXRjaGluZ1N0cmluZyA9IChyZXNvbHV0aW9uLm1hdGNoICYmIHJlc29sdXRpb24ubWF0Y2gubWF0Y2hpbmdTdHJpbmcpIHx8ICcnXG5cbiAgY29uc3QgdXBkYXRlU2VsZWN0ZWRPcHRpb24gPSB1c2VDYWxsYmFjayhcbiAgICAob3B0aW9uOiBTbGFzaE1lbnVPcHRpb24pID0+IHtcbiAgICAgIGNvbnN0IHJvb3RFbGVtID0gZWRpdG9yLmdldFJvb3RFbGVtZW50KClcbiAgICAgIGlmIChyb290RWxlbSAhPT0gbnVsbCkge1xuICAgICAgICByb290RWxlbS5zZXRBdHRyaWJ1dGUoJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcsICd0eXBlYWhlYWQtaXRlbS0nICsgb3B0aW9uLmtleSlcbiAgICAgICAgc2V0U2VsZWN0ZWRPcHRpb25LZXkob3B0aW9uLmtleSlcbiAgICAgIH1cbiAgICB9LFxuICAgIFtlZGl0b3JdLFxuICApXG5cbiAgY29uc3Qgc2V0U2VsZWN0ZWRPcHRpb25LZXlUb0ZpcnN0TWF0Y2hpbmdPcHRpb24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgLy8gc2V0IHNlbGVjdGVkIG9wdGlvbiB0byB0aGUgZmlyc3Qgb2YgdGhlIG1hdGNoaW5nIG9uZXNcbiAgICBpZiAoZ3JvdXBzV2l0aE9wdGlvbnMgIT09IG51bGwgJiYgbWF0Y2hpbmdTdHJpbmcgIT0gbnVsbCkge1xuICAgICAgLy8gZ3JvdXBzV2l0aE9wdGlvbnMgZmlsdGVyaW5nIGlzIGFscmVhZHkgaGFuZGxlZCBpbiBTbGFzaE1lbnUvaW5kZXgudHN4LiBUaHVzLCBncm91cHNXaXRoT3B0aW9ucyBhbHdheXMgY29udGFpbnMgdGhlIG1hdGNoaW5nIG9wdGlvbnMuXG4gICAgICBjb25zdCBhbGxPcHRpb25zID0gZ3JvdXBzV2l0aE9wdGlvbnMuZmxhdE1hcCgoZ3JvdXApID0+IGdyb3VwLm9wdGlvbnMpXG5cbiAgICAgIGlmIChhbGxPcHRpb25zLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBmaXJzdE1hdGNoaW5nT3B0aW9uID0gYWxsT3B0aW9uc1swXVxuICAgICAgICB1cGRhdGVTZWxlY3RlZE9wdGlvbihmaXJzdE1hdGNoaW5nT3B0aW9uKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2dyb3Vwc1dpdGhPcHRpb25zLCB1cGRhdGVTZWxlY3RlZE9wdGlvbiwgbWF0Y2hpbmdTdHJpbmddKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0U2VsZWN0ZWRPcHRpb25LZXlUb0ZpcnN0TWF0Y2hpbmdPcHRpb24oKVxuICB9LCBbbWF0Y2hpbmdTdHJpbmcsIHNldFNlbGVjdGVkT3B0aW9uS2V5VG9GaXJzdE1hdGNoaW5nT3B0aW9uXSlcblxuICBjb25zdCBzZWxlY3RPcHRpb25BbmRDbGVhblVwID0gdXNlQ2FsbGJhY2soXG4gICAgKHNlbGVjdGVkT3B0aW9uOiBTbGFzaE1lbnVPcHRpb24pID0+IHtcbiAgICAgIGVkaXRvci51cGRhdGUoKCkgPT4ge1xuICAgICAgICBjb25zdCB0ZXh0Tm9kZUNvbnRhaW5pbmdRdWVyeSA9XG4gICAgICAgICAgcmVzb2x1dGlvbi5tYXRjaCAhPSBudWxsICYmIHNob3VsZFNwbGl0Tm9kZVdpdGhRdWVyeVxuICAgICAgICAgICAgPyAkc3BsaXROb2RlQ29udGFpbmluZ1F1ZXJ5KHJlc29sdXRpb24ubWF0Y2gpXG4gICAgICAgICAgICA6IG51bGxcblxuICAgICAgICBvblNlbGVjdE9wdGlvbihcbiAgICAgICAgICBzZWxlY3RlZE9wdGlvbixcbiAgICAgICAgICB0ZXh0Tm9kZUNvbnRhaW5pbmdRdWVyeSxcbiAgICAgICAgICBjbG9zZSxcbiAgICAgICAgICByZXNvbHV0aW9uLm1hdGNoID8gcmVzb2x1dGlvbi5tYXRjaC5tYXRjaGluZ1N0cmluZyA6ICcnLFxuICAgICAgICApXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2VkaXRvciwgc2hvdWxkU3BsaXROb2RlV2l0aFF1ZXJ5LCByZXNvbHV0aW9uLm1hdGNoLCBvblNlbGVjdE9wdGlvbiwgY2xvc2VdLFxuICApXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY29uc3Qgcm9vdEVsZW0gPSBlZGl0b3IuZ2V0Um9vdEVsZW1lbnQoKVxuICAgICAgaWYgKHJvb3RFbGVtICE9PSBudWxsKSB7XG4gICAgICAgIHJvb3RFbGVtLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1hY3RpdmVkZXNjZW5kYW50JylcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtlZGl0b3JdKVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGdyb3Vwc1dpdGhPcHRpb25zID09PSBudWxsKSB7XG4gICAgICBzZXRTZWxlY3RlZE9wdGlvbktleShudWxsKVxuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWRPcHRpb25LZXkgPT09IG51bGwpIHtcbiAgICAgIHNldFNlbGVjdGVkT3B0aW9uS2V5VG9GaXJzdE1hdGNoaW5nT3B0aW9uKClcbiAgICB9XG4gIH0sIFtcbiAgICBncm91cHNXaXRoT3B0aW9ucyxcbiAgICBzZWxlY3RlZE9wdGlvbktleSxcbiAgICB1cGRhdGVTZWxlY3RlZE9wdGlvbixcbiAgICBzZXRTZWxlY3RlZE9wdGlvbktleVRvRmlyc3RNYXRjaGluZ09wdGlvbixcbiAgXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiBtZXJnZVJlZ2lzdGVyKFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyQ29tbWFuZChcbiAgICAgICAgU0NST0xMX1RZUEVBSEVBRF9PUFRJT05fSU5UT19WSUVXX0NPTU1BTkQsXG4gICAgICAgICh7IG9wdGlvbiB9KSA9PiB7XG4gICAgICAgICAgaWYgKG9wdGlvbi5yZWYgJiYgb3B0aW9uLnJlZi5jdXJyZW50ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHNjcm9sbEludG9WaWV3SWZOZWVkZWQob3B0aW9uLnJlZi5jdXJyZW50KVxuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gICAgICApLFxuICAgIClcbiAgfSwgW2VkaXRvciwgdXBkYXRlU2VsZWN0ZWRPcHRpb25dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuIG1lcmdlUmVnaXN0ZXIoXG4gICAgICBlZGl0b3IucmVnaXN0ZXJDb21tYW5kPEtleWJvYXJkRXZlbnQ+KFxuICAgICAgICBLRVlfQVJST1dfRE9XTl9DT01NQU5ELFxuICAgICAgICAocGF5bG9hZCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGV2ZW50ID0gcGF5bG9hZFxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGdyb3Vwc1dpdGhPcHRpb25zICE9PSBudWxsICYmXG4gICAgICAgICAgICBncm91cHNXaXRoT3B0aW9ucy5sZW5ndGggJiZcbiAgICAgICAgICAgIHNlbGVjdGVkT3B0aW9uS2V5ICE9PSBudWxsXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBhbGxPcHRpb25zID0gZ3JvdXBzV2l0aE9wdGlvbnMuZmxhdE1hcCgoZ3JvdXApID0+IGdyb3VwLm9wdGlvbnMpXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gYWxsT3B0aW9ucy5maW5kSW5kZXgoKG9wdGlvbikgPT4gb3B0aW9uLmtleSA9PT0gc2VsZWN0ZWRPcHRpb25LZXkpXG5cbiAgICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkSW5kZXggPSBzZWxlY3RlZEluZGV4ICE9PSBhbGxPcHRpb25zLmxlbmd0aCAtIDEgPyBzZWxlY3RlZEluZGV4ICsgMSA6IDBcblxuICAgICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRPcHRpb24gPSBhbGxPcHRpb25zW25ld1NlbGVjdGVkSW5kZXhdXG5cbiAgICAgICAgICAgIHVwZGF0ZVNlbGVjdGVkT3B0aW9uKG5ld1NlbGVjdGVkT3B0aW9uKVxuICAgICAgICAgICAgaWYgKG5ld1NlbGVjdGVkT3B0aW9uLnJlZiAhPSBudWxsICYmIG5ld1NlbGVjdGVkT3B0aW9uLnJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICAgIGVkaXRvci5kaXNwYXRjaENvbW1hbmQoU0NST0xMX1RZUEVBSEVBRF9PUFRJT05fSU5UT19WSUVXX0NPTU1BTkQsIHtcbiAgICAgICAgICAgICAgICBpbmRleDogbmV3U2VsZWN0ZWRJbmRleCxcbiAgICAgICAgICAgICAgICBvcHRpb246IG5ld1NlbGVjdGVkT3B0aW9uLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKClcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gICAgICApLFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyQ29tbWFuZDxLZXlib2FyZEV2ZW50PihcbiAgICAgICAgS0VZX0FSUk9XX1VQX0NPTU1BTkQsXG4gICAgICAgIChwYXlsb2FkKSA9PiB7XG4gICAgICAgICAgY29uc3QgZXZlbnQgPSBwYXlsb2FkXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZ3JvdXBzV2l0aE9wdGlvbnMgIT09IG51bGwgJiZcbiAgICAgICAgICAgIGdyb3Vwc1dpdGhPcHRpb25zLmxlbmd0aCAmJlxuICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb25LZXkgIT09IG51bGxcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IGFsbE9wdGlvbnMgPSBncm91cHNXaXRoT3B0aW9ucy5mbGF0TWFwKChncm91cCkgPT4gZ3JvdXAub3B0aW9ucylcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSBhbGxPcHRpb25zLmZpbmRJbmRleCgob3B0aW9uKSA9PiBvcHRpb24ua2V5ID09PSBzZWxlY3RlZE9wdGlvbktleSlcblxuICAgICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRJbmRleCA9IHNlbGVjdGVkSW5kZXggIT09IDAgPyBzZWxlY3RlZEluZGV4IC0gMSA6IGFsbE9wdGlvbnMubGVuZ3RoIC0gMVxuXG4gICAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZE9wdGlvbiA9IGFsbE9wdGlvbnNbbmV3U2VsZWN0ZWRJbmRleF1cblxuICAgICAgICAgICAgdXBkYXRlU2VsZWN0ZWRPcHRpb24obmV3U2VsZWN0ZWRPcHRpb24pXG4gICAgICAgICAgICBpZiAobmV3U2VsZWN0ZWRPcHRpb24ucmVmICE9IG51bGwgJiYgbmV3U2VsZWN0ZWRPcHRpb24ucmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChuZXdTZWxlY3RlZE9wdGlvbi5yZWYuY3VycmVudClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIENPTU1BTkRfUFJJT1JJVFlfTE9XLFxuICAgICAgKSxcbiAgICAgIGVkaXRvci5yZWdpc3RlckNvbW1hbmQ8S2V5Ym9hcmRFdmVudD4oXG4gICAgICAgIEtFWV9FU0NBUEVfQ09NTUFORCxcbiAgICAgICAgKHBheWxvYWQpID0+IHtcbiAgICAgICAgICBjb25zdCBldmVudCA9IHBheWxvYWRcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKClcbiAgICAgICAgICBjbG9zZSgpXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gICAgICApLFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyQ29tbWFuZDxLZXlib2FyZEV2ZW50PihcbiAgICAgICAgS0VZX1RBQl9DT01NQU5ELFxuICAgICAgICAocGF5bG9hZCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGV2ZW50ID0gcGF5bG9hZFxuXG4gICAgICAgICAgaWYgKGdyb3Vwc1dpdGhPcHRpb25zID09PSBudWxsIHx8IHNlbGVjdGVkT3B0aW9uS2V5ID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgYWxsT3B0aW9ucyA9IGdyb3Vwc1dpdGhPcHRpb25zLmZsYXRNYXAoKGdyb3VwKSA9PiBncm91cC5vcHRpb25zKVxuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9uID0gYWxsT3B0aW9ucy5maW5kKChvcHRpb24pID0+IG9wdGlvbi5rZXkgPT09IHNlbGVjdGVkT3B0aW9uS2V5KVxuICAgICAgICAgIGlmICghc2VsZWN0ZWRPcHRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKVxuICAgICAgICAgIHNlbGVjdE9wdGlvbkFuZENsZWFuVXAoc2VsZWN0ZWRPcHRpb24pXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gICAgICApLFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyQ29tbWFuZChcbiAgICAgICAgS0VZX0VOVEVSX0NPTU1BTkQsXG4gICAgICAgIChldmVudDogS2V5Ym9hcmRFdmVudCB8IG51bGwpID0+IHtcbiAgICAgICAgICBpZiAoZ3JvdXBzV2l0aE9wdGlvbnMgPT09IG51bGwgfHwgc2VsZWN0ZWRPcHRpb25LZXkgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBhbGxPcHRpb25zID0gZ3JvdXBzV2l0aE9wdGlvbnMuZmxhdE1hcCgoZ3JvdXApID0+IGdyb3VwLm9wdGlvbnMpXG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRPcHRpb24gPSBhbGxPcHRpb25zLmZpbmQoKG9wdGlvbikgPT4gb3B0aW9uLmtleSA9PT0gc2VsZWN0ZWRPcHRpb25LZXkpXG4gICAgICAgICAgaWYgKCFzZWxlY3RlZE9wdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGV2ZW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKVxuICAgICAgICAgIH1cbiAgICAgICAgICBzZWxlY3RPcHRpb25BbmRDbGVhblVwKHNlbGVjdGVkT3B0aW9uKVxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIENPTU1BTkRfUFJJT1JJVFlfTE9XLFxuICAgICAgKSxcbiAgICApXG4gIH0sIFtcbiAgICBzZWxlY3RPcHRpb25BbmRDbGVhblVwLFxuICAgIGNsb3NlLFxuICAgIGVkaXRvcixcbiAgICBncm91cHNXaXRoT3B0aW9ucyxcbiAgICBzZWxlY3RlZE9wdGlvbktleSxcbiAgICB1cGRhdGVTZWxlY3RlZE9wdGlvbixcbiAgXSlcblxuICBjb25zdCBsaXN0SXRlbVByb3BzID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgZ3JvdXBzV2l0aE9wdGlvbnMsXG4gICAgICBzZWxlY3RPcHRpb25BbmRDbGVhblVwLFxuICAgICAgc2VsZWN0ZWRPcHRpb25LZXksXG4gICAgICBzZXRTZWxlY3RlZE9wdGlvbktleSxcbiAgICB9KSxcbiAgICBbc2VsZWN0T3B0aW9uQW5kQ2xlYW5VcCwgc2VsZWN0ZWRPcHRpb25LZXksIGdyb3Vwc1dpdGhPcHRpb25zXSxcbiAgKVxuXG4gIHJldHVybiBtZW51UmVuZGVyRm4oXG4gICAgYW5jaG9yRWxlbWVudFJlZixcbiAgICBsaXN0SXRlbVByb3BzLFxuICAgIHJlc29sdXRpb24ubWF0Y2ggPyByZXNvbHV0aW9uLm1hdGNoLm1hdGNoaW5nU3RyaW5nIDogJycsXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZU1lbnVBbmNob3JSZWYoXG4gIGFuY2hvckVsZW06IEhUTUxFbGVtZW50LFxuICByZXNvbHV0aW9uOiBNZW51UmVzb2x1dGlvbiB8IG51bGwsXG4gIHNldFJlc29sdXRpb246IChyOiBNZW51UmVzb2x1dGlvbiB8IG51bGwpID0+IHZvaWQsXG4gIGNsYXNzTmFtZT86IHN0cmluZyxcbik6IE11dGFibGVSZWZPYmplY3Q8SFRNTEVsZW1lbnQ+IHtcbiAgY29uc3QgW2VkaXRvcl0gPSB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0KClcbiAgY29uc3QgYW5jaG9yRWxlbWVudFJlZiA9IHVzZVJlZjxIVE1MRWxlbWVudD4oZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpXG4gIGNvbnN0IHBvc2l0aW9uTWVudSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCByb290RWxlbWVudCA9IGVkaXRvci5nZXRSb290RWxlbWVudCgpXG4gICAgY29uc3QgY29udGFpbmVyRGl2ID0gYW5jaG9yRWxlbWVudFJlZi5jdXJyZW50XG5cbiAgICBjb25zdCBWRVJUSUNBTF9PRkZTRVQgPSAzMiBhcyBjb25zdFxuXG4gICAgY29uc3QgbWVudUVsZSA9IGNvbnRhaW5lckRpdi5maXJzdENoaWxkIGFzIEVsZW1lbnRcbiAgICBpZiAocm9vdEVsZW1lbnQgIT09IG51bGwgJiYgcmVzb2x1dGlvbiAhPT0gbnVsbCkge1xuICAgICAgbGV0IHsgaGVpZ2h0LCBsZWZ0LCB0b3AsIHdpZHRoIH0gPSByZXNvbHV0aW9uLmdldFJlY3QoKVxuICAgICAgY29uc3QgcmF3VG9wID0gdG9wXG4gICAgICBjb25zdCByYXdMZWZ0ID0gbGVmdFxuICAgICAgdG9wIC09IGFuY2hvckVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICsgd2luZG93LnNjcm9sbFlcbiAgICAgIGxlZnQgLT0gYW5jaG9yRWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0ICsgd2luZG93LnNjcm9sbFhcbiAgICAgIGNvbnRhaW5lckRpdi5zdHlsZS5sZWZ0ID0gYCR7bGVmdCArIHdpbmRvdy5zY3JvbGxYfXB4YFxuICAgICAgY29udGFpbmVyRGl2LnN0eWxlLmhlaWdodCA9IGAke2hlaWdodH1weGBcbiAgICAgIGNvbnRhaW5lckRpdi5zdHlsZS53aWR0aCA9IGAke3dpZHRofXB4YFxuICAgICAgaWYgKG1lbnVFbGUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgbWVudVJlY3QgPSBtZW51RWxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICAgIGNvbnN0IG1lbnVIZWlnaHQgPSBtZW51UmVjdC5oZWlnaHRcbiAgICAgICAgY29uc3QgbWVudVdpZHRoID0gbWVudVJlY3Qud2lkdGhcblxuICAgICAgICBjb25zdCByb290RWxlbWVudFJlY3QgPSByb290RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuXG4gICAgICAgIGlmIChsZWZ0ICsgbWVudVdpZHRoID4gcm9vdEVsZW1lbnRSZWN0LnJpZ2h0KSB7XG4gICAgICAgICAgY29udGFpbmVyRGl2LnN0eWxlLmxlZnQgPSBgJHtyb290RWxlbWVudFJlY3QucmlnaHQgLSBtZW51V2lkdGggKyB3aW5kb3cuc2Nyb2xsWH1weGBcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHdvdWxkR29PZmZCb3R0b21PZlNjcmVlbiA9IHJhd1RvcCArIG1lbnVIZWlnaHQgKyBWRVJUSUNBTF9PRkZTRVQgPiB3aW5kb3cuaW5uZXJIZWlnaHRcbiAgICAgICAgLy9jb25zdCB3b3VsZEdvT2ZmQm90dG9tT2ZDb250YWluZXIgPSB0b3AgKyBtZW51SGVpZ2h0ID4gcm9vdEVsZW1lbnRSZWN0LmJvdHRvbVxuICAgICAgICBjb25zdCB3b3VsZEdvT2ZmVG9wT2ZTY3JlZW4gPSByYXdUb3AgPCAwXG5cbiAgICAgICAgLy8gUG9zaXRpb24gc2xhc2ggbWVudSBhYm92ZSB0aGUgY3Vyc29yIGluc3RlYWQgb2YgYmVsb3cgKGRlZmF1bHQpIGlmIGl0IHdvdWxkIG90aGVyd2lzZSBnbyBvZmYgdGhlIGJvdHRvbSBvZiB0aGUgc2NyZWVuLlxuICAgICAgICBpZiAod291bGRHb09mZkJvdHRvbU9mU2NyZWVuICYmICF3b3VsZEdvT2ZmVG9wT2ZTY3JlZW4pIHtcbiAgICAgICAgICBjb25zdCBtYXJnaW4gPSAyNFxuICAgICAgICAgIGNvbnRhaW5lckRpdi5zdHlsZS50b3AgPSBgJHtcbiAgICAgICAgICAgIHRvcCArIFZFUlRJQ0FMX09GRlNFVCAtIG1lbnVIZWlnaHQgKyB3aW5kb3cuc2Nyb2xsWSAtIChoZWlnaHQgKyBtYXJnaW4pXG4gICAgICAgICAgfXB4YFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRhaW5lckRpdi5zdHlsZS50b3AgPSBgJHt0b3AgKyB3aW5kb3cuc2Nyb2xsWSArIFZFUlRJQ0FMX09GRlNFVH1weGBcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIWNvbnRhaW5lckRpdi5pc0Nvbm5lY3RlZCkge1xuICAgICAgICBpZiAoY2xhc3NOYW1lICE9IG51bGwpIHtcbiAgICAgICAgICBjb250YWluZXJEaXYuY2xhc3NOYW1lID0gY2xhc3NOYW1lXG4gICAgICAgIH1cbiAgICAgICAgY29udGFpbmVyRGl2LnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICdUeXBlYWhlYWQgbWVudScpXG4gICAgICAgIGNvbnRhaW5lckRpdi5zZXRBdHRyaWJ1dGUoJ2lkJywgJ3R5cGVhaGVhZC1tZW51JylcbiAgICAgICAgY29udGFpbmVyRGl2LnNldEF0dHJpYnV0ZSgncm9sZScsICdsaXN0Ym94JylcbiAgICAgICAgY29udGFpbmVyRGl2LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snXG4gICAgICAgIGNvbnRhaW5lckRpdi5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSdcbiAgICAgICAgYW5jaG9yRWxlbS5hcHBlbmQoY29udGFpbmVyRGl2KVxuICAgICAgfVxuICAgICAgYW5jaG9yRWxlbWVudFJlZi5jdXJyZW50ID0gY29udGFpbmVyRGl2XG4gICAgICByb290RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtY29udHJvbHMnLCAndHlwZWFoZWFkLW1lbnUnKVxuICAgIH1cbiAgfSwgW2VkaXRvciwgcmVzb2x1dGlvbiwgY2xhc3NOYW1lLCBhbmNob3JFbGVtXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHJvb3RFbGVtZW50ID0gZWRpdG9yLmdldFJvb3RFbGVtZW50KClcbiAgICBpZiAocmVzb2x1dGlvbiAhPT0gbnVsbCkge1xuICAgICAgcG9zaXRpb25NZW51KClcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGlmIChyb290RWxlbWVudCAhPT0gbnVsbCkge1xuICAgICAgICAgIHJvb3RFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1jb250cm9scycpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb250YWluZXJEaXYgPSBhbmNob3JFbGVtZW50UmVmLmN1cnJlbnRcbiAgICAgICAgaWYgKGNvbnRhaW5lckRpdiAhPT0gbnVsbCAmJiBjb250YWluZXJEaXYuaXNDb25uZWN0ZWQpIHtcbiAgICAgICAgICBjb250YWluZXJEaXYucmVtb3ZlKClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2VkaXRvciwgcG9zaXRpb25NZW51LCByZXNvbHV0aW9uXSlcblxuICBjb25zdCBvblZpc2liaWxpdHlDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAoaXNJblZpZXc6IGJvb2xlYW4pID0+IHtcbiAgICAgIGlmIChyZXNvbHV0aW9uICE9PSBudWxsKSB7XG4gICAgICAgIGlmICghaXNJblZpZXcpIHtcbiAgICAgICAgICBzZXRSZXNvbHV0aW9uKG51bGwpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFtyZXNvbHV0aW9uLCBzZXRSZXNvbHV0aW9uXSxcbiAgKVxuXG4gIHVzZUR5bmFtaWNQb3NpdGlvbmluZyhyZXNvbHV0aW9uLCBhbmNob3JFbGVtZW50UmVmLmN1cnJlbnQsIHBvc2l0aW9uTWVudSwgb25WaXNpYmlsaXR5Q2hhbmdlKVxuXG4gIHJldHVybiBhbmNob3JFbGVtZW50UmVmXG59XG5cbmV4cG9ydCB0eXBlIFRyaWdnZXJGbiA9ICh0ZXh0OiBzdHJpbmcsIGVkaXRvcjogTGV4aWNhbEVkaXRvcikgPT4gTWVudVRleHRNYXRjaCB8IG51bGxcbiJdLCJuYW1lcyI6WyJQVU5DVFVBVElPTiIsImdldFNjcm9sbFBhcmVudCIsInVzZUR5bmFtaWNQb3NpdGlvbmluZyIsIlNDUk9MTF9UWVBFQUhFQURfT1BUSU9OX0lOVE9fVklFV19DT01NQU5EIiwiTGV4aWNhbE1lbnUiLCJ1c2VNZW51QW5jaG9yUmVmIiwic2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCIsInRhcmdldCIsInR5cGVhaGVhZENvbnRhaW5lck5vZGUiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwidHlwZWFoZWFkUmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInRvcCIsImhlaWdodCIsIndpbmRvdyIsImlubmVySGVpZ2h0Iiwic2Nyb2xsSW50b1ZpZXciLCJibG9jayIsImdldEZ1bGxNYXRjaE9mZnNldCIsImRvY3VtZW50VGV4dCIsImVudHJ5VGV4dCIsIm9mZnNldCIsInRyaWdnZXJPZmZzZXQiLCJpIiwibGVuZ3RoIiwic3Vic3RyIiwiJHNwbGl0Tm9kZUNvbnRhaW5pbmdRdWVyeSIsIm1hdGNoIiwic2VsZWN0aW9uIiwiJGdldFNlbGVjdGlvbiIsIiRpc1JhbmdlU2VsZWN0aW9uIiwiaXNDb2xsYXBzZWQiLCJhbmNob3IiLCJ0eXBlIiwiYW5jaG9yTm9kZSIsImdldE5vZGUiLCJpc1NpbXBsZVRleHQiLCJzZWxlY3Rpb25PZmZzZXQiLCJ0ZXh0Q29udGVudCIsImdldFRleHRDb250ZW50Iiwic2xpY2UiLCJjaGFyYWN0ZXJPZmZzZXQiLCJyZXBsYWNlYWJsZVN0cmluZyIsInF1ZXJ5T2Zmc2V0IiwibWF0Y2hpbmdTdHJpbmciLCJzdGFydE9mZnNldCIsIm5ld05vZGUiLCJzcGxpdFRleHQiLCJlbGVtZW50IiwiaW5jbHVkZUhpZGRlbiIsInN0eWxlIiwiZ2V0Q29tcHV0ZWRTdHlsZSIsImV4Y2x1ZGVTdGF0aWNQYXJlbnQiLCJwb3NpdGlvbiIsIm92ZXJmbG93UmVnZXgiLCJib2R5IiwicGFyZW50IiwicGFyZW50RWxlbWVudCIsInRlc3QiLCJvdmVyZmxvdyIsIm92ZXJmbG93WSIsIm92ZXJmbG93WCIsImlzVHJpZ2dlclZpc2libGVJbk5lYXJlc3RTY3JvbGxDb250YWluZXIiLCJ0YXJnZXRFbGVtZW50IiwiY29udGFpbmVyRWxlbWVudCIsInRSZWN0IiwiY1JlY3QiLCJib3R0b20iLCJyZXNvbHV0aW9uIiwib25SZXBvc2l0aW9uIiwib25WaXNpYmlsaXR5Q2hhbmdlIiwiZWRpdG9yIiwidXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCIsInVzZUVmZmVjdCIsInJvb3RFbGVtZW50IiwiZ2V0Um9vdEVsZW1lbnQiLCJyb290U2Nyb2xsUGFyZW50IiwidGlja2luZyIsInByZXZpb3VzSXNJblZpZXciLCJoYW5kbGVTY3JvbGwiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJpc0luVmlldyIsInJlc2l6ZU9ic2VydmVyIiwiUmVzaXplT2JzZXJ2ZXIiLCJhZGRFdmVudExpc3RlbmVyIiwiY2FwdHVyZSIsInBhc3NpdmUiLCJvYnNlcnZlIiwidW5vYnNlcnZlIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImNyZWF0ZUNvbW1hbmQiLCJhbmNob3JFbGVtZW50UmVmIiwiY2xvc2UiLCJncm91cHNXaXRoT3B0aW9ucyIsIm1lbnVSZW5kZXJGbiIsIm9uU2VsZWN0T3B0aW9uIiwic2hvdWxkU3BsaXROb2RlV2l0aFF1ZXJ5Iiwic2VsZWN0ZWRPcHRpb25LZXkiLCJzZXRTZWxlY3RlZE9wdGlvbktleSIsInVzZVN0YXRlIiwidXBkYXRlU2VsZWN0ZWRPcHRpb24iLCJ1c2VDYWxsYmFjayIsIm9wdGlvbiIsInJvb3RFbGVtIiwic2V0QXR0cmlidXRlIiwia2V5Iiwic2V0U2VsZWN0ZWRPcHRpb25LZXlUb0ZpcnN0TWF0Y2hpbmdPcHRpb24iLCJhbGxPcHRpb25zIiwiZmxhdE1hcCIsImdyb3VwIiwib3B0aW9ucyIsImZpcnN0TWF0Y2hpbmdPcHRpb24iLCJzZWxlY3RPcHRpb25BbmRDbGVhblVwIiwic2VsZWN0ZWRPcHRpb24iLCJ1cGRhdGUiLCJ0ZXh0Tm9kZUNvbnRhaW5pbmdRdWVyeSIsInJlbW92ZUF0dHJpYnV0ZSIsInVzZUxheW91dEVmZmVjdCIsIm1lcmdlUmVnaXN0ZXIiLCJyZWdpc3RlckNvbW1hbmQiLCJyZWYiLCJjdXJyZW50IiwiQ09NTUFORF9QUklPUklUWV9MT1ciLCJLRVlfQVJST1dfRE9XTl9DT01NQU5EIiwicGF5bG9hZCIsImV2ZW50Iiwic2VsZWN0ZWRJbmRleCIsImZpbmRJbmRleCIsIm5ld1NlbGVjdGVkSW5kZXgiLCJuZXdTZWxlY3RlZE9wdGlvbiIsImRpc3BhdGNoQ29tbWFuZCIsImluZGV4IiwicHJldmVudERlZmF1bHQiLCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24iLCJLRVlfQVJST1dfVVBfQ09NTUFORCIsIktFWV9FU0NBUEVfQ09NTUFORCIsIktFWV9UQUJfQ09NTUFORCIsImZpbmQiLCJLRVlfRU5URVJfQ09NTUFORCIsImxpc3RJdGVtUHJvcHMiLCJ1c2VNZW1vIiwiYW5jaG9yRWxlbSIsInNldFJlc29sdXRpb24iLCJjbGFzc05hbWUiLCJ1c2VSZWYiLCJjcmVhdGVFbGVtZW50IiwicG9zaXRpb25NZW51IiwiY29udGFpbmVyRGl2IiwiVkVSVElDQUxfT0ZGU0VUIiwibWVudUVsZSIsImZpcnN0Q2hpbGQiLCJsZWZ0Iiwid2lkdGgiLCJnZXRSZWN0IiwicmF3VG9wIiwicmF3TGVmdCIsInNjcm9sbFkiLCJzY3JvbGxYIiwibWVudVJlY3QiLCJtZW51SGVpZ2h0IiwibWVudVdpZHRoIiwicm9vdEVsZW1lbnRSZWN0IiwicmlnaHQiLCJ3b3VsZEdvT2ZmQm90dG9tT2ZTY3JlZW4iLCJ3b3VsZEdvT2ZmVG9wT2ZTY3JlZW4iLCJtYXJnaW4iLCJpc0Nvbm5lY3RlZCIsImRpc3BsYXkiLCJhcHBlbmQiLCJyZW1vdmUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7SUFpQ2FBLFdBQVc7ZUFBWEE7O0lBb0ZHQyxlQUFlO2VBQWZBOztJQWdDQUMscUJBQXFCO2VBQXJCQTs7SUFpREhDLHlDQUF5QztlQUF6Q0E7O0lBS0dDLFdBQVc7ZUFBWEE7O0lBOFBBQyxnQkFBZ0I7ZUFBaEJBOzs7d0NBcmMwQjt1QkFDWjt5QkFXdkI7dUJBQzRFO0FBZ0I1RSxNQUFNTCxjQUFjO0FBYTNCLE1BQU1NLHlCQUF5QixDQUFDQztJQUM5QixNQUFNQyx5QkFBeUJDLFNBQVNDLGNBQWMsQ0FB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
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import type { LexicalCommand, ParagraphNode, TextNode } from 'lexical';
|
|
3
|
-
import type { MenuRenderFn, MenuResolution, MenuTextMatch,
|
|
3
|
+
import type { MenuRenderFn, MenuResolution, MenuTextMatch, TriggerFn } from './LexicalMenu';
|
|
4
|
+
import type { SlashMenuGroup, SlashMenuOption } from './types';
|
|
4
5
|
export declare const PUNCTUATION = "\\.,\\+\\*\\?\\$\\@\\|#{}\\(\\)\\^\\-\\[\\]\\\\/!%'\"~=<>_:;";
|
|
5
6
|
export declare function getScrollParent(element: HTMLElement, includeHidden: boolean): HTMLBodyElement | HTMLElement;
|
|
6
7
|
export { useDynamicPositioning } from './LexicalMenu';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.tsx"],"names":[],"mappings":";AACA,OAAO,KAAK,EACV,cAAc,EAEd,aAAa,EAEb,QAAQ,EACT,MAAM,SAAS,CAAA;AAchB,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC3F,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAI9D,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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
'use client';
|
|
1
2
|
"use strict";
|
|
2
3
|
Object.defineProperty(exports, "__esModule", {
|
|
3
4
|
value: true
|
|
@@ -286,4 +287,4 @@ function LexicalTypeaheadMenuPlugin({ anchorClassName, anchorElem, groupsWithOpt
|
|
|
286
287
|
});
|
|
287
288
|
}
|
|
288
289
|
|
|
289
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvU2xhc2hNZW51L0xleGljYWxUeXBlYWhlYWRNZW51UGx1Z2luL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIExleGljYWxDb21tYW5kLFxuICBMZXhpY2FsRWRpdG9yLFxuICBQYXJhZ3JhcGhOb2RlLFxuICBSYW5nZVNlbGVjdGlvbixcbiAgVGV4dE5vZGUsXG59IGZyb20gJ2xleGljYWwnXG5cbmltcG9ydCB7IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQgfSBmcm9tICdAbGV4aWNhbC9yZWFjdC9MZXhpY2FsQ29tcG9zZXJDb250ZXh0J1xuaW1wb3J0IHsgbWVyZ2VSZWdpc3RlciB9IGZyb20gJ0BsZXhpY2FsL3V0aWxzJ1xuaW1wb3J0IHtcbiAgJGdldFNlbGVjdGlvbixcbiAgJGlzUmFuZ2VTZWxlY3Rpb24sXG4gICRpc1RleHROb2RlLFxuICBDT01NQU5EX1BSSU9SSVRZX0xPVyxcbiAgY3JlYXRlQ29tbWFuZCxcbn0gZnJvbSAnbGV4aWNhbCdcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHR5cGUge1xuICBNZW51UmVuZGVyRm4sXG4gIE1lbnVSZXNvbHV0aW9uLFxuICBNZW51VGV4dE1hdGNoLFxuICBTbGFzaE1lbnVHcm91cCxcbiAgU2xhc2hNZW51T3B0aW9uLFxuICBUcmlnZ2VyRm4sXG59IGZyb20gJy4vTGV4aWNhbE1lbnUnXG5cbmltcG9ydCB7IExleGljYWxNZW51LCB1c2VNZW51QW5jaG9yUmVmIH0gZnJvbSAnLi9MZXhpY2FsTWVudSdcblxuZXhwb3J0IGNvbnN0IFBVTkNUVUFUSU9OID0gJ1xcXFwuLFxcXFwrXFxcXCpcXFxcP1xcXFwkXFxcXEBcXFxcfCN7fVxcXFwoXFxcXClcXFxcXlxcXFwtXFxcXFtcXFxcXVxcXFxcXFxcLyElXFwnXCJ+PTw+Xzo7J1xuXG5mdW5jdGlvbiBnZXRUZXh0VXBUb0FuY2hvcihzZWxlY3Rpb246IFJhbmdlU2VsZWN0aW9uKTogbnVsbCB8IHN0cmluZyB7XG4gIGNvbnN0IGFuY2hvciA9IHNlbGVjdGlvbi5hbmNob3JcbiAgaWYgKGFuY2hvci50eXBlICE9PSAndGV4dCcpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IGFuY2hvck5vZGUgPSBhbmNob3IuZ2V0Tm9kZSgpXG4gIGlmICghYW5jaG9yTm9kZS5pc1NpbXBsZVRleHQoKSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgYW5jaG9yT2Zmc2V0ID0gYW5jaG9yLm9mZnNldFxuICByZXR1cm4gYW5jaG9yTm9kZS5nZXRUZXh0Q29udGVudCgpLnNsaWNlKDAsIGFuY2hvck9mZnNldClcbn1cblxuZnVuY3Rpb24gdHJ5VG9Qb3NpdGlvblJhbmdlKGxlYWRPZmZzZXQ6IG51bWJlciwgcmFuZ2U6IFJhbmdlLCBlZGl0b3JXaW5kb3c6IFdpbmRvdyk6IGJvb2xlYW4ge1xuICBjb25zdCBkb21TZWxlY3Rpb24gPSBlZGl0b3JXaW5kb3cuZ2V0U2VsZWN0aW9uKClcbiAgaWYgKGRvbVNlbGVjdGlvbiA9PT0gbnVsbCB8fCAhZG9tU2VsZWN0aW9uLmlzQ29sbGFwc2VkKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgY29uc3QgYW5jaG9yTm9kZSA9IGRvbVNlbGVjdGlvbi5hbmNob3JOb2RlXG4gIGNvbnN0IHN0YXJ0T2Zmc2V0ID0gbGVhZE9mZnNldFxuICBjb25zdCBlbmRPZmZzZXQgPSBkb21TZWxlY3Rpb24uYW5jaG9yT2Zmc2V0XG5cbiAgaWYgKGFuY2hvck5vZGUgPT0gbnVsbCB8fCBlbmRPZmZzZXQgPT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgdHJ5IHtcbiAgICByYW5nZS5zZXRTdGFydChhbmNob3JOb2RlLCBzdGFydE9mZnNldClcbiAgICAvLyBpZiBlbmRPZmZzZXQgaXMgMCwgcG9zaXRpb25pbmcgdGhlIHJhbmdlIGZvciB3aGVuIHlvdSBjbGljayB0aGUgcGx1cyBidXR0b24gdG8gb3BlbiB0aGUgc2xhc2ggbWVudSB3aWxsIGZpYWxcbiAgICByYW5nZS5zZXRFbmQoYW5jaG9yTm9kZSwgZW5kT2Zmc2V0ID4gMSA/IGVuZE9mZnNldCA6IDEpXG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5mdW5jdGlvbiBnZXRRdWVyeVRleHRGb3JTZWFyY2goZWRpdG9yOiBMZXhpY2FsRWRpdG9yKTogbnVsbCB8IHN0cmluZyB7XG4gIGxldCB0ZXh0ID0gbnVsbFxuICBlZGl0b3IuZ2V0RWRpdG9yU3RhdGUoKS5yZWFkKCgpID0+IHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSAkZ2V0U2VsZWN0aW9uKClcbiAgICBpZiAoISRpc1JhbmdlU2VsZWN0aW9uKHNlbGVjdGlvbikpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICB0ZXh0ID0gZ2V0VGV4dFVwVG9BbmNob3Ioc2VsZWN0aW9uKVxuICB9KVxuICByZXR1cm4gdGV4dFxufVxuXG5mdW5jdGlvbiBpc1NlbGVjdGlvbk9uRW50aXR5Qm91bmRhcnkoZWRpdG9yOiBMZXhpY2FsRWRpdG9yLCBvZmZzZXQ6IG51bWJlcik6IGJvb2xlYW4ge1xuICBpZiAob2Zmc2V0ICE9PSAwKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgcmV0dXJuIGVkaXRvci5nZXRFZGl0b3JTdGF0ZSgpLnJlYWQoKCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9ICRnZXRTZWxlY3Rpb24oKVxuICAgIGlmICgkaXNSYW5nZVNlbGVjdGlvbihzZWxlY3Rpb24pKSB7XG4gICAgICBjb25zdCBhbmNob3IgPSBzZWxlY3Rpb24uYW5jaG9yXG4gICAgICBjb25zdCBhbmNob3JOb2RlID0gYW5jaG9yLmdldE5vZGUoKVxuICAgICAgY29uc3QgcHJldlNpYmxpbmcgPSBhbmNob3JOb2RlLmdldFByZXZpb3VzU2libGluZygpXG4gICAgICByZXR1cm4gJGlzVGV4dE5vZGUocHJldlNpYmxpbmcpICYmIHByZXZTaWJsaW5nLmlzVGV4dEVudGl0eSgpXG4gICAgfVxuICAgIHJldHVybiBmYWxzZVxuICB9KVxufVxuXG5mdW5jdGlvbiBzdGFydFRyYW5zaXRpb24oY2FsbGJhY2s6ICgpID0+IHZvaWQpIHtcbiAgaWYgKFJlYWN0LnN0YXJ0VHJhbnNpdGlvbikge1xuICAgIFJlYWN0LnN0YXJ0VHJhbnNpdGlvbihjYWxsYmFjaylcbiAgfSBlbHNlIHtcbiAgICBjYWxsYmFjaygpXG4gIH1cbn1cblxuLy8gR290IGZyb20gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzQyNTQzOTA4LzIwMTM1ODBcbmV4cG9ydCBmdW5jdGlvbiBnZXRTY3JvbGxQYXJlbnQoXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICBpbmNsdWRlSGlkZGVuOiBib29sZWFuLFxuKTogSFRNTEJvZHlFbGVtZW50IHwgSFRNTEVsZW1lbnQge1xuICBsZXQgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpXG4gIGNvbnN0IGV4Y2x1ZGVTdGF0aWNQYXJlbnQgPSBzdHlsZS5wb3NpdGlvbiA9PT0gJ2Fic29sdXRlJ1xuICBjb25zdCBvdmVyZmxvd1JlZ2V4ID0gaW5jbHVkZUhpZGRlbiA/IC8oYXV0b3xzY3JvbGx8aGlkZGVuKS8gOiAvKGF1dG98c2Nyb2xsKS9cbiAgaWYgKHN0eWxlLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmJvZHlcbiAgfVxuICBmb3IgKGxldCBwYXJlbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IGVsZW1lbnQ7IChwYXJlbnQgPSBwYXJlbnQucGFyZW50RWxlbWVudCk7ICkge1xuICAgIHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShwYXJlbnQpXG4gICAgaWYgKGV4Y2x1ZGVTdGF0aWNQYXJlbnQgJiYgc3R5bGUucG9zaXRpb24gPT09ICdzdGF0aWMnKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBpZiAob3ZlcmZsb3dSZWdleC50ZXN0KHN0eWxlLm92ZXJmbG93ICsgc3R5bGUub3ZlcmZsb3dZICsgc3R5bGUub3ZlcmZsb3dYKSkge1xuICAgICAgcmV0dXJuIHBhcmVudFxuICAgIH1cbiAgfVxuICByZXR1cm4gZG9jdW1lbnQuYm9keVxufVxuXG5leHBvcnQgeyB1c2VEeW5hbWljUG9zaXRpb25pbmcgfSBmcm9tICcuL0xleGljYWxNZW51J1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlQmFzaWNUeXBlYWhlYWRUcmlnZ2VyTWF0Y2goXG4gIHRyaWdnZXI6IHN0cmluZyxcbiAgeyBtYXhMZW5ndGggPSA3NSwgbWluTGVuZ3RoID0gMSB9OiB7IG1heExlbmd0aD86IG51bWJlcjsgbWluTGVuZ3RoPzogbnVtYmVyIH0sXG4pOiBUcmlnZ2VyRm4ge1xuICByZXR1cm4gdXNlQ2FsbGJhY2soXG4gICAgKHRleHQ6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgdmFsaWRDaGFycyA9ICdbXicgKyB0cmlnZ2VyICsgUFVOQ1RVQVRJT04gKyAnXFxcXHNdJ1xuICAgICAgY29uc3QgVHlwZWFoZWFkVHJpZ2dlclJlZ2V4ID0gbmV3IFJlZ0V4cChcbiAgICAgICAgJyhefFxcXFxzfFxcXFwoKSgnICtcbiAgICAgICAgICAnWycgK1xuICAgICAgICAgIHRyaWdnZXIgK1xuICAgICAgICAgICddJyArXG4gICAgICAgICAgJygoPzonICtcbiAgICAgICAgICB2YWxpZENoYXJzICtcbiAgICAgICAgICAnKXswLCcgK1xuICAgICAgICAgIG1heExlbmd0aCArXG4gICAgICAgICAgJ30pJyArXG4gICAgICAgICAgJykkJyxcbiAgICAgIClcbiAgICAgIGNvbnN0IG1hdGNoID0gVHlwZWFoZWFkVHJpZ2dlclJlZ2V4LmV4ZWModGV4dClcbiAgICAgIGlmIChtYXRjaCAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBtYXliZUxlYWRpbmdXaGl0ZXNwYWNlID0gbWF0Y2hbMV1cbiAgICAgICAgY29uc3QgbWF0Y2hpbmdTdHJpbmcgPSBtYXRjaFszXVxuICAgICAgICBpZiAobWF0Y2hpbmdTdHJpbmcubGVuZ3RoID49IG1pbkxlbmd0aCkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsZWFkT2Zmc2V0OiBtYXRjaC5pbmRleCArIG1heWJlTGVhZGluZ1doaXRlc3BhY2UubGVuZ3RoLFxuICAgICAgICAgICAgbWF0Y2hpbmdTdHJpbmcsXG4gICAgICAgICAgICByZXBsYWNlYWJsZVN0cmluZzogbWF0Y2hbMl0sXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH0sXG4gICAgW21heExlbmd0aCwgbWluTGVuZ3RoLCB0cmlnZ2VyXSxcbiAgKVxufVxuXG5leHBvcnQgdHlwZSBUeXBlYWhlYWRNZW51UGx1Z2luUHJvcHMgPSB7XG4gIGFuY2hvckNsYXNzTmFtZT86IHN0cmluZ1xuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudFxuICBncm91cHNXaXRoT3B0aW9uczogQXJyYXk8U2xhc2hNZW51R3JvdXA+XG4gIG1lbnVSZW5kZXJGbjogTWVudVJlbmRlckZuXG4gIG9uQ2xvc2U/OiAoKSA9PiB2b2lkXG4gIG9uT3Blbj86IChyZXNvbHV0aW9uOiBNZW51UmVzb2x1dGlvbikgPT4gdm9pZFxuICBvblF1ZXJ5Q2hhbmdlOiAobWF0Y2hpbmdTdHJpbmc6IG51bGwgfCBzdHJpbmcpID0+IHZvaWRcbiAgb25TZWxlY3RPcHRpb246IChcbiAgICBvcHRpb246IFNsYXNoTWVudU9wdGlvbixcbiAgICB0ZXh0Tm9kZUNvbnRhaW5pbmdRdWVyeTogVGV4dE5vZGUgfCBudWxsLFxuICAgIGNsb3NlTWVudTogKCkgPT4gdm9pZCxcbiAgICBtYXRjaGluZ1N0cmluZzogc3RyaW5nLFxuICApID0+IHZvaWRcbiAgdHJpZ2dlckZuOiBUcmlnZ2VyRm5cbn1cblxuZXhwb3J0IGNvbnN0IEVOQUJMRV9TTEFTSF9NRU5VX0NPTU1BTkQ6IExleGljYWxDb21tYW5kPHtcbiAgbm9kZTogUGFyYWdyYXBoTm9kZVxufT4gPSBjcmVhdGVDb21tYW5kKCdFTkFCTEVfU0xBU0hfTUVOVV9DT01NQU5EJylcblxuZXhwb3J0IGZ1bmN0aW9uIExleGljYWxUeXBlYWhlYWRNZW51UGx1Z2luKHtcbiAgYW5jaG9yQ2xhc3NOYW1lLFxuICBhbmNob3JFbGVtLFxuICBncm91cHNXaXRoT3B0aW9ucyxcbiAgbWVudVJlbmRlckZuLFxuICBvbkNsb3NlLFxuICBvbk9wZW4sXG4gIG9uUXVlcnlDaGFuZ2UsXG4gIG9uU2VsZWN0T3B0aW9uLFxuICB0cmlnZ2VyRm4sXG59OiBUeXBlYWhlYWRNZW51UGx1Z2luUHJvcHMpOiBKU1guRWxlbWVudCB8IG51bGwge1xuICBjb25zdCBbZWRpdG9yXSA9IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQoKVxuICBjb25zdCBbcmVzb2x1dGlvbiwgc2V0UmVzb2x1dGlvbl0gPSB1c2VTdGF0ZTxNZW51UmVzb2x1dGlvbiB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGFuY2hvckVsZW1lbnRSZWYgPSB1c2VNZW51QW5jaG9yUmVmKGFuY2hvckVsZW0sIHJlc29sdXRpb24sIHNldFJlc29sdXRpb24sIGFuY2hvckNsYXNzTmFtZSlcblxuICBjb25zdCBjbG9zZVR5cGVhaGVhZCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRSZXNvbHV0aW9uKG51bGwpXG4gICAgaWYgKG9uQ2xvc2UgIT0gbnVsbCAmJiByZXNvbHV0aW9uICE9PSBudWxsKSB7XG4gICAgICBvbkNsb3NlKClcbiAgICB9XG4gIH0sIFtvbkNsb3NlLCByZXNvbHV0aW9uXSlcblxuICBjb25zdCBvcGVuVHlwZWFoZWFkID0gdXNlQ2FsbGJhY2soXG4gICAgKHJlczogTWVudVJlc29sdXRpb24pID0+IHtcbiAgICAgIHNldFJlc29sdXRpb24ocmVzKVxuICAgICAgaWYgKG9uT3BlbiAhPSBudWxsICYmIHJlc29sdXRpb24gPT09IG51bGwpIHtcbiAgICAgICAgb25PcGVuKHJlcylcbiAgICAgIH1cbiAgICB9LFxuICAgIFtvbk9wZW4sIHJlc29sdXRpb25dLFxuICApXG5cbiAgLy8gVGhpcyBpcyBtYWlubHkgdXNlZCBmb3IgdGhlIEFkZEJsb2NrSGFuZGxlUGx1Z2luLCBzbyB0aGF0IHRoZSBzbGFzaCBtZW51IGNhbiBiZSBvcGVuZWQgZnJvbSB0aGVyZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiBtZXJnZVJlZ2lzdGVyKFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyQ29tbWFuZChcbiAgICAgICAgRU5BQkxFX1NMQVNIX01FTlVfQ09NTUFORCxcbiAgICAgICAgKHsgbm9kZSB9KSA9PiB7XG4gICAgICAgICAgZWRpdG9yLmdldEVkaXRvclN0YXRlKCkucmVhZCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtYXRjaDogTWVudVRleHRNYXRjaCA9IHtcbiAgICAgICAgICAgICAgbGVhZE9mZnNldDogMCxcbiAgICAgICAgICAgICAgbWF0Y2hpbmdTdHJpbmc6ICcnLFxuICAgICAgICAgICAgICByZXBsYWNlYWJsZVN0cmluZzogJycsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWF0Y2ggIT09IG51bGwgJiYgIWlzU2VsZWN0aW9uT25FbnRpdHlCb3VuZGFyeShlZGl0b3IsIG1hdGNoLmxlYWRPZmZzZXQpKSB7XG4gICAgICAgICAgICAgIGlmIChub2RlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZWRpdG9yV2luZG93ID0gZWRpdG9yLl93aW5kb3cgPz8gd2luZG93XG4gICAgICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSBlZGl0b3JXaW5kb3cuZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKVxuXG4gICAgICAgICAgICAgICAgY29uc3QgaXNSYW5nZVBvc2l0aW9uZWQgPSB0cnlUb1Bvc2l0aW9uUmFuZ2UobWF0Y2gubGVhZE9mZnNldCwgcmFuZ2UsIGVkaXRvcldpbmRvdylcbiAgICAgICAgICAgICAgICBpZiAoaXNSYW5nZVBvc2l0aW9uZWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgIHN0YXJ0VHJhbnNpdGlvbigoKSA9PlxuICAgICAgICAgICAgICAgICAgICBvcGVuVHlwZWFoZWFkKHtcbiAgICAgICAgICAgICAgICAgICAgICBnZXRSZWN0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmFuZ2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoLFxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBDT01NQU5EX1BSSU9SSVRZX0xPVyxcbiAgICAgICksXG4gICAgKVxuICB9LCBbZWRpdG9yLCBvcGVuVHlwZWFoZWFkXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHVwZGF0ZUxpc3RlbmVyID0gKCkgPT4ge1xuICAgICAgZWRpdG9yLmdldEVkaXRvclN0YXRlKCkucmVhZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGVkaXRvcldpbmRvdyA9IGVkaXRvci5fd2luZG93ID8/IHdpbmRvd1xuICAgICAgICBjb25zdCByYW5nZSA9IGVkaXRvcldpbmRvdy5kb2N1bWVudC5jcmVhdGVSYW5nZSgpXG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9ICRnZXRTZWxlY3Rpb24oKVxuICAgICAgICBjb25zdCB0ZXh0ID0gZ2V0UXVlcnlUZXh0Rm9yU2VhcmNoKGVkaXRvcilcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgISRpc1JhbmdlU2VsZWN0aW9uKHNlbGVjdGlvbikgfHxcbiAgICAgICAgICAhc2VsZWN0aW9uLmlzQ29sbGFwc2VkKCkgfHxcbiAgICAgICAgICB0ZXh0ID09PSBudWxsIHx8XG4gICAgICAgICAgcmFuZ2UgPT09IG51bGxcbiAgICAgICAgKSB7XG4gICAgICAgICAgY2xvc2VUeXBlYWhlYWQoKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWF0Y2ggPSB0cmlnZ2VyRm4odGV4dCwgZWRpdG9yKVxuICAgICAgICBvblF1ZXJ5Q2hhbmdlKG1hdGNoID8gbWF0Y2gubWF0Y2hpbmdTdHJpbmcgOiBudWxsKVxuXG4gICAgICAgIGlmIChtYXRjaCAhPT0gbnVsbCAmJiAhaXNTZWxlY3Rpb25PbkVudGl0eUJvdW5kYXJ5KGVkaXRvciwgbWF0Y2gubGVhZE9mZnNldCkpIHtcbiAgICAgICAgICBjb25zdCBpc1JhbmdlUG9zaXRpb25lZCA9IHRyeVRvUG9zaXRpb25SYW5nZShtYXRjaC5sZWFkT2Zmc2V0LCByYW5nZSwgZWRpdG9yV2luZG93KVxuICAgICAgICAgIGlmIChpc1JhbmdlUG9zaXRpb25lZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgc3RhcnRUcmFuc2l0aW9uKCgpID0+XG4gICAgICAgICAgICAgIG9wZW5UeXBlYWhlYWQoe1xuICAgICAgICAgICAgICAgIGdldFJlY3Q6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiByYW5nZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbWF0Y2gsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNsb3NlVHlwZWFoZWFkKClcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgY29uc3QgcmVtb3ZlVXBkYXRlTGlzdGVuZXIgPSBlZGl0b3IucmVnaXN0ZXJVcGRhdGVMaXN0ZW5lcih1cGRhdGVMaXN0ZW5lcilcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICByZW1vdmVVcGRhdGVMaXN0ZW5lcigpXG4gICAgfVxuICB9LCBbZWRpdG9yLCB0cmlnZ2VyRm4sIG9uUXVlcnlDaGFuZ2UsIHJlc29sdXRpb24sIGNsb3NlVHlwZWFoZWFkLCBvcGVuVHlwZWFoZWFkXSlcblxuICByZXR1cm4gcmVzb2x1dGlvbiA9PT0gbnVsbCB8fCBlZGl0b3IgPT09IG51bGwgPyBudWxsIDogKFxuICAgIDxMZXhpY2FsTWVudVxuICAgICAgYW5jaG9yRWxlbWVudFJlZj17YW5jaG9yRWxlbWVudFJlZn1cbiAgICAgIGNsb3NlPXtjbG9zZVR5cGVhaGVhZH1cbiAgICAgIGVkaXRvcj17ZWRpdG9yfVxuICAgICAgZ3JvdXBzV2l0aE9wdGlvbnM9e2dyb3Vwc1dpdGhPcHRpb25zfVxuICAgICAgbWVudVJlbmRlckZuPXttZW51UmVuZGVyRm59XG4gICAgICBvblNlbGVjdE9wdGlvbj17b25TZWxlY3RPcHRpb259XG4gICAgICByZXNvbHV0aW9uPXtyZXNvbHV0aW9ufVxuICAgICAgc2hvdWxkU3BsaXROb2RlV2l0aFF1ZXJ5XG4gICAgLz5cbiAgKVxufVxuXG5leHBvcnQgeyBNZW51UmVuZGVyRm4sIE1lbnVSZXNvbHV0aW9uLCBNZW51VGV4dE1hdGNoLCBUcmlnZ2VyRm4gfVxuIl0sIm5hbWVzIjpbIlBVTkNUVUFUSU9OIiwiZ2V0U2Nyb2xsUGFyZW50IiwidXNlRHluYW1pY1Bvc2l0aW9uaW5nIiwidXNlQmFzaWNUeXBlYWhlYWRUcmlnZ2VyTWF0Y2giLCJFTkFCTEVfU0xBU0hfTUVOVV9DT01NQU5EIiwiTGV4aWNhbFR5cGVhaGVhZE1lbnVQbHVnaW4iLCJnZXRUZXh0VXBUb0FuY2hvciIsInNlbGVjdGlvbiIsImFuY2hvciIsInR5cGUiLCJhbmNob3JOb2RlIiwiZ2V0Tm9kZSIsImlzU2ltcGxlVGV4dCIsImFuY2hvck9mZnNldCIsIm9mZnNldCIsImdldFRleHRDb250ZW50Iiwic2xpY2UiLCJ0cnlUb1Bvc2l0aW9uUmFuZ2UiLCJsZWFkT2Zmc2V0IiwicmFuZ2UiLCJlZGl0b3JXaW5kb3ciLCJkb21TZWxlY3Rpb24iLCJnZXRTZWxlY3Rpb24iLCJpc0NvbGxhcHNlZCIsInN0YXJ0T2Zmc2V0IiwiZW5kT2Zmc2V0Iiwic2V0U3RhcnQiLCJzZXRFbmQiLCJlcnJvciIsImdldFF1ZXJ5VGV4dEZvclNlYXJjaCIsImVkaXRvciIsInRleHQiLCJnZXRFZGl0b3JTdGF0ZSIsInJlYWQiLCIkZ2V0U2VsZWN0aW9uIiwiJGlzUmFuZ2VTZWxlY3Rpb24iLCJpc1NlbGVjdGlvbk9uRW50aXR5Qm91bmRhcnkiLCJwcmV2U2libGluZyIsImdldFByZXZpb3VzU2libGluZyIsIiRpc1RleHROb2RlIiwiaXNUZXh0RW50aXR5Iiwic3RhcnRUcmFuc2l0aW9uIiwiY2FsbGJhY2siLCJSZWFjdCIsImVsZW1lbnQiLCJpbmNsdWRlSGlkZGVuIiwic3R5bGUiLCJnZXRDb21wdXRlZFN0eWxlIiwiZXhjbHVkZVN0YXRpY1BhcmVudCIsInBvc2l0aW9uIiwib3ZlcmZsb3dSZWdleCIsImRvY3VtZW50IiwiYm9keSIsInBhcmVudCIsInBhcmVudEVsZW1lbnQiLCJ0ZXN0Iiwib3ZlcmZsb3ciLCJvdmVyZmxvd1kiLCJvdmVyZmxvd1giLCJ0cmlnZ2VyIiwibWF4TGVuZ3RoIiwibWluTGVuZ3RoIiwidXNlQ2FsbGJhY2siLCJ2YWxpZENoYXJzIiwiVHlwZWFoZWFkVHJpZ2dlclJlZ2V4IiwiUmVnRXhwIiwibWF0Y2giLCJleGVjIiwibWF5YmVMZWFkaW5nV2hpdGVzcGFjZSIsIm1hdGNoaW5nU3RyaW5nIiwibGVuZ3RoIiwiaW5kZXgiLCJyZXBsYWNlYWJsZVN0cmluZyIsImNyZWF0ZUNvbW1hbmQiLCJhbmNob3JDbGFzc05hbWUiLCJhbmNob3JFbGVtIiwiZ3JvdXBzV2l0aE9wdGlvbnMiLCJtZW51UmVuZGVyRm4iLCJvbkNsb3NlIiwib25PcGVuIiwib25RdWVyeUNoYW5nZSIsIm9uU2VsZWN0T3B0aW9uIiwidHJpZ2dlckZuIiwidXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCIsInJlc29sdXRpb24iLCJzZXRSZXNvbHV0aW9uIiwidXNlU3RhdGUiLCJhbmNob3JFbGVtZW50UmVmIiwidXNlTWVudUFuY2hvclJlZiIsImNsb3NlVHlwZWFoZWFkIiwib3BlblR5cGVhaGVhZCIsInJlcyIsInVzZUVmZmVjdCIsIm1lcmdlUmVnaXN0ZXIiLCJyZWdpc3RlckNvbW1hbmQiLCJub2RlIiwiX3dpbmRvdyIsIndpbmRvdyIsImNyZWF0ZVJhbmdlIiwiaXNSYW5nZVBvc2l0aW9uZWQiLCJnZXRSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiQ09NTUFORF9QUklPUklUWV9MT1ciLCJ1cGRhdGVMaXN0ZW5lciIsInJlbW92ZVVwZGF0ZUxpc3RlbmVyIiwicmVnaXN0ZXJVcGRhdGVMaXN0ZW5lciIsIkxleGljYWxNZW51IiwiY2xvc2UiLCJzaG91bGRTcGxpdE5vZGVXaXRoUXVlcnkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBK0JhQSxXQUFXO2VBQVhBOztJQTRFR0MsZUFBZTtlQUFmQTs7SUFzQlBDLHFCQUFxQjtlQUFyQkEsa0NBQXFCOztJQUVkQyw2QkFBNkI7ZUFBN0JBOztJQXNESEMseUJBQXlCO2VBQXpCQTs7SUFJR0MsMEJBQTBCO2VBQTFCQTs7O3dDQXJMMEI7dUJBQ1o7eUJBT3ZCOytEQUMwQzs2QkFZSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV2QyxNQUFNTCxjQUFjO0FBRTNCLFNBQVNNLGtCQUFrQkMsU0FBeUI7SUFDbEQsTUFBTUMsU0FBU0QsVUFBVUMsTUFBTTtJQUMvQixJQUFJQSxPQUFPQyxJQUFJLEtBQUssUUFBUTtRQUMxQixPQUFPO0lBQ1Q7SUFDQSxNQUFNQyxhQUFhRixPQUFPRyxPQUFPO0lBQ2pDLElBQUksQ0FBQ0QsV0FBV0UsWUFBWSxJQUFJO1FBQzlCLE9BQU87SUFDVDtJQUNBLE1BQU1DLGVBQWVMLE9BQU9NLE1BQU07SUFDbEMsT0FB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
|
|
290
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvU2xhc2hNZW51L0xleGljYWxUeXBlYWhlYWRNZW51UGx1Z2luL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcbmltcG9ydCB0eXBlIHtcbiAgTGV4aWNhbENvbW1hbmQsXG4gIExleGljYWxFZGl0b3IsXG4gIFBhcmFncmFwaE5vZGUsXG4gIFJhbmdlU2VsZWN0aW9uLFxuICBUZXh0Tm9kZSxcbn0gZnJvbSAnbGV4aWNhbCdcblxuaW1wb3J0IHsgdXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCB9IGZyb20gJ0BsZXhpY2FsL3JlYWN0L0xleGljYWxDb21wb3NlckNvbnRleHQnXG5pbXBvcnQgeyBtZXJnZVJlZ2lzdGVyIH0gZnJvbSAnQGxleGljYWwvdXRpbHMnXG5pbXBvcnQge1xuICAkZ2V0U2VsZWN0aW9uLFxuICAkaXNSYW5nZVNlbGVjdGlvbixcbiAgJGlzVGV4dE5vZGUsXG4gIENPTU1BTkRfUFJJT1JJVFlfTE9XLFxuICBjcmVhdGVDb21tYW5kLFxufSBmcm9tICdsZXhpY2FsJ1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgdHlwZSB7IE1lbnVSZW5kZXJGbiwgTWVudVJlc29sdXRpb24sIE1lbnVUZXh0TWF0Y2gsIFRyaWdnZXJGbiB9IGZyb20gJy4vTGV4aWNhbE1lbnUnXG5pbXBvcnQgdHlwZSB7IFNsYXNoTWVudUdyb3VwLCBTbGFzaE1lbnVPcHRpb24gfSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyBMZXhpY2FsTWVudSwgdXNlTWVudUFuY2hvclJlZiB9IGZyb20gJy4vTGV4aWNhbE1lbnUnXG5cbmV4cG9ydCBjb25zdCBQVU5DVFVBVElPTiA9ICdcXFxcLixcXFxcK1xcXFwqXFxcXD9cXFxcJFxcXFxAXFxcXHwje31cXFxcKFxcXFwpXFxcXF5cXFxcLVxcXFxbXFxcXF1cXFxcXFxcXC8hJVxcJ1wifj08Pl86OydcblxuZnVuY3Rpb24gZ2V0VGV4dFVwVG9BbmNob3Ioc2VsZWN0aW9uOiBSYW5nZVNlbGVjdGlvbik6IG51bGwgfCBzdHJpbmcge1xuICBjb25zdCBhbmNob3IgPSBzZWxlY3Rpb24uYW5jaG9yXG4gIGlmIChhbmNob3IudHlwZSAhPT0gJ3RleHQnKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBjb25zdCBhbmNob3JOb2RlID0gYW5jaG9yLmdldE5vZGUoKVxuICBpZiAoIWFuY2hvck5vZGUuaXNTaW1wbGVUZXh0KCkpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IGFuY2hvck9mZnNldCA9IGFuY2hvci5vZmZzZXRcbiAgcmV0dXJuIGFuY2hvck5vZGUuZ2V0VGV4dENvbnRlbnQoKS5zbGljZSgwLCBhbmNob3JPZmZzZXQpXG59XG5cbmZ1bmN0aW9uIHRyeVRvUG9zaXRpb25SYW5nZShsZWFkT2Zmc2V0OiBudW1iZXIsIHJhbmdlOiBSYW5nZSwgZWRpdG9yV2luZG93OiBXaW5kb3cpOiBib29sZWFuIHtcbiAgY29uc3QgZG9tU2VsZWN0aW9uID0gZWRpdG9yV2luZG93LmdldFNlbGVjdGlvbigpXG4gIGlmIChkb21TZWxlY3Rpb24gPT09IG51bGwgfHwgIWRvbVNlbGVjdGlvbi5pc0NvbGxhcHNlZCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGNvbnN0IGFuY2hvck5vZGUgPSBkb21TZWxlY3Rpb24uYW5jaG9yTm9kZVxuICBjb25zdCBzdGFydE9mZnNldCA9IGxlYWRPZmZzZXRcbiAgY29uc3QgZW5kT2Zmc2V0ID0gZG9tU2VsZWN0aW9uLmFuY2hvck9mZnNldFxuXG4gIGlmIChhbmNob3JOb2RlID09IG51bGwgfHwgZW5kT2Zmc2V0ID09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHRyeSB7XG4gICAgcmFuZ2Uuc2V0U3RhcnQoYW5jaG9yTm9kZSwgc3RhcnRPZmZzZXQpXG4gICAgLy8gaWYgZW5kT2Zmc2V0IGlzIDAsIHBvc2l0aW9uaW5nIHRoZSByYW5nZSBmb3Igd2hlbiB5b3UgY2xpY2sgdGhlIHBsdXMgYnV0dG9uIHRvIG9wZW4gdGhlIHNsYXNoIG1lbnUgd2lsbCBmaWFsXG4gICAgcmFuZ2Uuc2V0RW5kKGFuY2hvck5vZGUsIGVuZE9mZnNldCA+IDEgPyBlbmRPZmZzZXQgOiAxKVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZnVuY3Rpb24gZ2V0UXVlcnlUZXh0Rm9yU2VhcmNoKGVkaXRvcjogTGV4aWNhbEVkaXRvcik6IG51bGwgfCBzdHJpbmcge1xuICBsZXQgdGV4dCA9IG51bGxcbiAgZWRpdG9yLmdldEVkaXRvclN0YXRlKCkucmVhZCgoKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gJGdldFNlbGVjdGlvbigpXG4gICAgaWYgKCEkaXNSYW5nZVNlbGVjdGlvbihzZWxlY3Rpb24pKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgdGV4dCA9IGdldFRleHRVcFRvQW5jaG9yKHNlbGVjdGlvbilcbiAgfSlcbiAgcmV0dXJuIHRleHRcbn1cblxuZnVuY3Rpb24gaXNTZWxlY3Rpb25PbkVudGl0eUJvdW5kYXJ5KGVkaXRvcjogTGV4aWNhbEVkaXRvciwgb2Zmc2V0OiBudW1iZXIpOiBib29sZWFuIHtcbiAgaWYgKG9mZnNldCAhPT0gMCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHJldHVybiBlZGl0b3IuZ2V0RWRpdG9yU3RhdGUoKS5yZWFkKCgpID0+IHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSAkZ2V0U2VsZWN0aW9uKClcbiAgICBpZiAoJGlzUmFuZ2VTZWxlY3Rpb24oc2VsZWN0aW9uKSkge1xuICAgICAgY29uc3QgYW5jaG9yID0gc2VsZWN0aW9uLmFuY2hvclxuICAgICAgY29uc3QgYW5jaG9yTm9kZSA9IGFuY2hvci5nZXROb2RlKClcbiAgICAgIGNvbnN0IHByZXZTaWJsaW5nID0gYW5jaG9yTm9kZS5nZXRQcmV2aW91c1NpYmxpbmcoKVxuICAgICAgcmV0dXJuICRpc1RleHROb2RlKHByZXZTaWJsaW5nKSAmJiBwcmV2U2libGluZy5pc1RleHRFbnRpdHkoKVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfSlcbn1cblxuZnVuY3Rpb24gc3RhcnRUcmFuc2l0aW9uKGNhbGxiYWNrOiAoKSA9PiB2b2lkKSB7XG4gIGlmIChSZWFjdC5zdGFydFRyYW5zaXRpb24pIHtcbiAgICBSZWFjdC5zdGFydFRyYW5zaXRpb24oY2FsbGJhY2spXG4gIH0gZWxzZSB7XG4gICAgY2FsbGJhY2soKVxuICB9XG59XG5cbi8vIEdvdCBmcm9tIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS80MjU0MzkwOC8yMDEzNTgwXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2Nyb2xsUGFyZW50KFxuICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgaW5jbHVkZUhpZGRlbjogYm9vbGVhbixcbik6IEhUTUxCb2R5RWxlbWVudCB8IEhUTUxFbGVtZW50IHtcbiAgbGV0IHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KVxuICBjb25zdCBleGNsdWRlU3RhdGljUGFyZW50ID0gc3R5bGUucG9zaXRpb24gPT09ICdhYnNvbHV0ZSdcbiAgY29uc3Qgb3ZlcmZsb3dSZWdleCA9IGluY2x1ZGVIaWRkZW4gPyAvKGF1dG98c2Nyb2xsfGhpZGRlbikvIDogLyhhdXRvfHNjcm9sbCkvXG4gIGlmIChzdHlsZS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgIHJldHVybiBkb2N1bWVudC5ib2R5XG4gIH1cbiAgZm9yIChsZXQgcGFyZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBlbGVtZW50OyAocGFyZW50ID0gcGFyZW50LnBhcmVudEVsZW1lbnQpOyApIHtcbiAgICBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUocGFyZW50KVxuICAgIGlmIChleGNsdWRlU3RhdGljUGFyZW50ICYmIHN0eWxlLnBvc2l0aW9uID09PSAnc3RhdGljJykge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKG92ZXJmbG93UmVnZXgudGVzdChzdHlsZS5vdmVyZmxvdyArIHN0eWxlLm92ZXJmbG93WSArIHN0eWxlLm92ZXJmbG93WCkpIHtcbiAgICAgIHJldHVybiBwYXJlbnRcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRvY3VtZW50LmJvZHlcbn1cblxuZXhwb3J0IHsgdXNlRHluYW1pY1Bvc2l0aW9uaW5nIH0gZnJvbSAnLi9MZXhpY2FsTWVudSdcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUJhc2ljVHlwZWFoZWFkVHJpZ2dlck1hdGNoKFxuICB0cmlnZ2VyOiBzdHJpbmcsXG4gIHsgbWF4TGVuZ3RoID0gNzUsIG1pbkxlbmd0aCA9IDEgfTogeyBtYXhMZW5ndGg/OiBudW1iZXI7IG1pbkxlbmd0aD86IG51bWJlciB9LFxuKTogVHJpZ2dlckZuIHtcbiAgcmV0dXJuIHVzZUNhbGxiYWNrKFxuICAgICh0ZXh0OiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkQ2hhcnMgPSAnW14nICsgdHJpZ2dlciArIFBVTkNUVUFUSU9OICsgJ1xcXFxzXSdcbiAgICAgIGNvbnN0IFR5cGVhaGVhZFRyaWdnZXJSZWdleCA9IG5ldyBSZWdFeHAoXG4gICAgICAgICcoXnxcXFxcc3xcXFxcKCkoJyArXG4gICAgICAgICAgJ1snICtcbiAgICAgICAgICB0cmlnZ2VyICtcbiAgICAgICAgICAnXScgK1xuICAgICAgICAgICcoKD86JyArXG4gICAgICAgICAgdmFsaWRDaGFycyArXG4gICAgICAgICAgJyl7MCwnICtcbiAgICAgICAgICBtYXhMZW5ndGggK1xuICAgICAgICAgICd9KScgK1xuICAgICAgICAgICcpJCcsXG4gICAgICApXG4gICAgICBjb25zdCBtYXRjaCA9IFR5cGVhaGVhZFRyaWdnZXJSZWdleC5leGVjKHRleHQpXG4gICAgICBpZiAobWF0Y2ggIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgbWF5YmVMZWFkaW5nV2hpdGVzcGFjZSA9IG1hdGNoWzFdXG4gICAgICAgIGNvbnN0IG1hdGNoaW5nU3RyaW5nID0gbWF0Y2hbM11cbiAgICAgICAgaWYgKG1hdGNoaW5nU3RyaW5nLmxlbmd0aCA+PSBtaW5MZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGVhZE9mZnNldDogbWF0Y2guaW5kZXggKyBtYXliZUxlYWRpbmdXaGl0ZXNwYWNlLmxlbmd0aCxcbiAgICAgICAgICAgIG1hdGNoaW5nU3RyaW5nLFxuICAgICAgICAgICAgcmVwbGFjZWFibGVTdHJpbmc6IG1hdGNoWzJdLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9LFxuICAgIFttYXhMZW5ndGgsIG1pbkxlbmd0aCwgdHJpZ2dlcl0sXG4gIClcbn1cblxuZXhwb3J0IHR5cGUgVHlwZWFoZWFkTWVudVBsdWdpblByb3BzID0ge1xuICBhbmNob3JDbGFzc05hbWU/OiBzdHJpbmdcbiAgYW5jaG9yRWxlbTogSFRNTEVsZW1lbnRcbiAgZ3JvdXBzV2l0aE9wdGlvbnM6IEFycmF5PFNsYXNoTWVudUdyb3VwPlxuICBtZW51UmVuZGVyRm46IE1lbnVSZW5kZXJGblxuICBvbkNsb3NlPzogKCkgPT4gdm9pZFxuICBvbk9wZW4/OiAocmVzb2x1dGlvbjogTWVudVJlc29sdXRpb24pID0+IHZvaWRcbiAgb25RdWVyeUNoYW5nZTogKG1hdGNoaW5nU3RyaW5nOiBudWxsIHwgc3RyaW5nKSA9PiB2b2lkXG4gIG9uU2VsZWN0T3B0aW9uOiAoXG4gICAgb3B0aW9uOiBTbGFzaE1lbnVPcHRpb24sXG4gICAgdGV4dE5vZGVDb250YWluaW5nUXVlcnk6IFRleHROb2RlIHwgbnVsbCxcbiAgICBjbG9zZU1lbnU6ICgpID0+IHZvaWQsXG4gICAgbWF0Y2hpbmdTdHJpbmc6IHN0cmluZyxcbiAgKSA9PiB2b2lkXG4gIHRyaWdnZXJGbjogVHJpZ2dlckZuXG59XG5cbmV4cG9ydCBjb25zdCBFTkFCTEVfU0xBU0hfTUVOVV9DT01NQU5EOiBMZXhpY2FsQ29tbWFuZDx7XG4gIG5vZGU6IFBhcmFncmFwaE5vZGVcbn0+ID0gY3JlYXRlQ29tbWFuZCgnRU5BQkxFX1NMQVNIX01FTlVfQ09NTUFORCcpXG5cbmV4cG9ydCBmdW5jdGlvbiBMZXhpY2FsVHlwZWFoZWFkTWVudVBsdWdpbih7XG4gIGFuY2hvckNsYXNzTmFtZSxcbiAgYW5jaG9yRWxlbSxcbiAgZ3JvdXBzV2l0aE9wdGlvbnMsXG4gIG1lbnVSZW5kZXJGbixcbiAgb25DbG9zZSxcbiAgb25PcGVuLFxuICBvblF1ZXJ5Q2hhbmdlLFxuICBvblNlbGVjdE9wdGlvbixcbiAgdHJpZ2dlckZuLFxufTogVHlwZWFoZWFkTWVudVBsdWdpblByb3BzKTogSlNYLkVsZW1lbnQgfCBudWxsIHtcbiAgY29uc3QgW2VkaXRvcl0gPSB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0KClcbiAgY29uc3QgW3Jlc29sdXRpb24sIHNldFJlc29sdXRpb25dID0gdXNlU3RhdGU8TWVudVJlc29sdXRpb24gfCBudWxsPihudWxsKVxuICBjb25zdCBhbmNob3JFbGVtZW50UmVmID0gdXNlTWVudUFuY2hvclJlZihhbmNob3JFbGVtLCByZXNvbHV0aW9uLCBzZXRSZXNvbHV0aW9uLCBhbmNob3JDbGFzc05hbWUpXG5cbiAgY29uc3QgY2xvc2VUeXBlYWhlYWQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0UmVzb2x1dGlvbihudWxsKVxuICAgIGlmIChvbkNsb3NlICE9IG51bGwgJiYgcmVzb2x1dGlvbiAhPT0gbnVsbCkge1xuICAgICAgb25DbG9zZSgpXG4gICAgfVxuICB9LCBbb25DbG9zZSwgcmVzb2x1dGlvbl0pXG5cbiAgY29uc3Qgb3BlblR5cGVhaGVhZCA9IHVzZUNhbGxiYWNrKFxuICAgIChyZXM6IE1lbnVSZXNvbHV0aW9uKSA9PiB7XG4gICAgICBzZXRSZXNvbHV0aW9uKHJlcylcbiAgICAgIGlmIChvbk9wZW4gIT0gbnVsbCAmJiByZXNvbHV0aW9uID09PSBudWxsKSB7XG4gICAgICAgIG9uT3BlbihyZXMpXG4gICAgICB9XG4gICAgfSxcbiAgICBbb25PcGVuLCByZXNvbHV0aW9uXSxcbiAgKVxuXG4gIC8vIFRoaXMgaXMgbWFpbmx5IHVzZWQgZm9yIHRoZSBBZGRCbG9ja0hhbmRsZVBsdWdpbiwgc28gdGhhdCB0aGUgc2xhc2ggbWVudSBjYW4gYmUgb3BlbmVkIGZyb20gdGhlcmVcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gbWVyZ2VSZWdpc3RlcihcbiAgICAgIGVkaXRvci5yZWdpc3RlckNvbW1hbmQoXG4gICAgICAgIEVOQUJMRV9TTEFTSF9NRU5VX0NPTU1BTkQsXG4gICAgICAgICh7IG5vZGUgfSkgPT4ge1xuICAgICAgICAgIGVkaXRvci5nZXRFZGl0b3JTdGF0ZSgpLnJlYWQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2g6IE1lbnVUZXh0TWF0Y2ggPSB7XG4gICAgICAgICAgICAgIGxlYWRPZmZzZXQ6IDAsXG4gICAgICAgICAgICAgIG1hdGNoaW5nU3RyaW5nOiAnJyxcbiAgICAgICAgICAgICAgcmVwbGFjZWFibGVTdHJpbmc6ICcnLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1hdGNoICE9PSBudWxsICYmICFpc1NlbGVjdGlvbk9uRW50aXR5Qm91bmRhcnkoZWRpdG9yLCBtYXRjaC5sZWFkT2Zmc2V0KSkge1xuICAgICAgICAgICAgICBpZiAobm9kZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVkaXRvcldpbmRvdyA9IGVkaXRvci5fd2luZG93ID8/IHdpbmRvd1xuICAgICAgICAgICAgICAgIGNvbnN0IHJhbmdlID0gZWRpdG9yV2luZG93LmRvY3VtZW50LmNyZWF0ZVJhbmdlKClcblxuICAgICAgICAgICAgICAgIGNvbnN0IGlzUmFuZ2VQb3NpdGlvbmVkID0gdHJ5VG9Qb3NpdGlvblJhbmdlKG1hdGNoLmxlYWRPZmZzZXQsIHJhbmdlLCBlZGl0b3JXaW5kb3cpXG4gICAgICAgICAgICAgICAgaWYgKGlzUmFuZ2VQb3NpdGlvbmVkICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICBzdGFydFRyYW5zaXRpb24oKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgb3BlblR5cGVhaGVhZCh7XG4gICAgICAgICAgICAgICAgICAgICAgZ2V0UmVjdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJhbmdlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCxcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gICAgICApLFxuICAgIClcbiAgfSwgW2VkaXRvciwgb3BlblR5cGVhaGVhZF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCB1cGRhdGVMaXN0ZW5lciA9ICgpID0+IHtcbiAgICAgIGVkaXRvci5nZXRFZGl0b3JTdGF0ZSgpLnJlYWQoKCkgPT4ge1xuICAgICAgICBjb25zdCBlZGl0b3JXaW5kb3cgPSBlZGl0b3IuX3dpbmRvdyA/PyB3aW5kb3dcbiAgICAgICAgY29uc3QgcmFuZ2UgPSBlZGl0b3JXaW5kb3cuZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKVxuICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSAkZ2V0U2VsZWN0aW9uKClcbiAgICAgICAgY29uc3QgdGV4dCA9IGdldFF1ZXJ5VGV4dEZvclNlYXJjaChlZGl0b3IpXG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICEkaXNSYW5nZVNlbGVjdGlvbihzZWxlY3Rpb24pIHx8XG4gICAgICAgICAgIXNlbGVjdGlvbi5pc0NvbGxhcHNlZCgpIHx8XG4gICAgICAgICAgdGV4dCA9PT0gbnVsbCB8fFxuICAgICAgICAgIHJhbmdlID09PSBudWxsXG4gICAgICAgICkge1xuICAgICAgICAgIGNsb3NlVHlwZWFoZWFkKClcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1hdGNoID0gdHJpZ2dlckZuKHRleHQsIGVkaXRvcilcbiAgICAgICAgb25RdWVyeUNoYW5nZShtYXRjaCA/IG1hdGNoLm1hdGNoaW5nU3RyaW5nIDogbnVsbClcblxuICAgICAgICBpZiAobWF0Y2ggIT09IG51bGwgJiYgIWlzU2VsZWN0aW9uT25FbnRpdHlCb3VuZGFyeShlZGl0b3IsIG1hdGNoLmxlYWRPZmZzZXQpKSB7XG4gICAgICAgICAgY29uc3QgaXNSYW5nZVBvc2l0aW9uZWQgPSB0cnlUb1Bvc2l0aW9uUmFuZ2UobWF0Y2gubGVhZE9mZnNldCwgcmFuZ2UsIGVkaXRvcldpbmRvdylcbiAgICAgICAgICBpZiAoaXNSYW5nZVBvc2l0aW9uZWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHN0YXJ0VHJhbnNpdGlvbigoKSA9PlxuICAgICAgICAgICAgICBvcGVuVHlwZWFoZWFkKHtcbiAgICAgICAgICAgICAgICBnZXRSZWN0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gcmFuZ2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG1hdGNoLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjbG9zZVR5cGVhaGVhZCgpXG4gICAgICB9KVxuICAgIH1cblxuICAgIGNvbnN0IHJlbW92ZVVwZGF0ZUxpc3RlbmVyID0gZWRpdG9yLnJlZ2lzdGVyVXBkYXRlTGlzdGVuZXIodXBkYXRlTGlzdGVuZXIpXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgcmVtb3ZlVXBkYXRlTGlzdGVuZXIoKVxuICAgIH1cbiAgfSwgW2VkaXRvciwgdHJpZ2dlckZuLCBvblF1ZXJ5Q2hhbmdlLCByZXNvbHV0aW9uLCBjbG9zZVR5cGVhaGVhZCwgb3BlblR5cGVhaGVhZF0pXG5cbiAgcmV0dXJuIHJlc29sdXRpb24gPT09IG51bGwgfHwgZWRpdG9yID09PSBudWxsID8gbnVsbCA6IChcbiAgICA8TGV4aWNhbE1lbnVcbiAgICAgIGFuY2hvckVsZW1lbnRSZWY9e2FuY2hvckVsZW1lbnRSZWZ9XG4gICAgICBjbG9zZT17Y2xvc2VUeXBlYWhlYWR9XG4gICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgIGdyb3Vwc1dpdGhPcHRpb25zPXtncm91cHNXaXRoT3B0aW9uc31cbiAgICAgIG1lbnVSZW5kZXJGbj17bWVudVJlbmRlckZufVxuICAgICAgb25TZWxlY3RPcHRpb249e29uU2VsZWN0T3B0aW9ufVxuICAgICAgcmVzb2x1dGlvbj17cmVzb2x1dGlvbn1cbiAgICAgIHNob3VsZFNwbGl0Tm9kZVdpdGhRdWVyeVxuICAgIC8+XG4gIClcbn1cblxuZXhwb3J0IHsgTWVudVJlbmRlckZuLCBNZW51UmVzb2x1dGlvbiwgTWVudVRleHRNYXRjaCwgVHJpZ2dlckZuIH1cbiJdLCJuYW1lcyI6WyJQVU5DVFVBVElPTiIsImdldFNjcm9sbFBhcmVudCIsInVzZUR5bmFtaWNQb3NpdGlvbmluZyIsInVzZUJhc2ljVHlwZWFoZWFkVHJpZ2dlck1hdGNoIiwiRU5BQkxFX1NMQVNIX01FTlVfQ09NTUFORCIsIkxleGljYWxUeXBlYWhlYWRNZW51UGx1Z2luIiwiZ2V0VGV4dFVwVG9BbmNob3IiLCJzZWxlY3Rpb24iLCJhbmNob3IiLCJ0eXBlIiwiYW5jaG9yTm9kZSIsImdldE5vZGUiLCJpc1NpbXBsZVRleHQiLCJhbmNob3JPZmZzZXQiLCJvZmZzZXQiLCJnZXRUZXh0Q29udGVudCIsInNsaWNlIiwidHJ5VG9Qb3NpdGlvblJhbmdlIiwibGVhZE9mZnNldCIsInJhbmdlIiwiZWRpdG9yV2luZG93IiwiZG9tU2VsZWN0aW9uIiwiZ2V0U2VsZWN0aW9uIiwiaXNDb2xsYXBzZWQiLCJzdGFydE9mZnNldCIsImVuZE9mZnNldCIsInNldFN0YXJ0Iiwic2V0RW5kIiwiZXJyb3IiLCJnZXRRdWVyeVRleHRGb3JTZWFyY2giLCJlZGl0b3IiLCJ0ZXh0IiwiZ2V0RWRpdG9yU3RhdGUiLCJyZWFkIiwiJGdldFNlbGVjdGlvbiIsIiRpc1JhbmdlU2VsZWN0aW9uIiwiaXNTZWxlY3Rpb25PbkVudGl0eUJvdW5kYXJ5IiwicHJldlNpYmxpbmciLCJnZXRQcmV2aW91c1NpYmxpbmciLCIkaXNUZXh0Tm9kZSIsImlzVGV4dEVudGl0eSIsInN0YXJ0VHJhbnNpdGlvbiIsImNhbGxiYWNrIiwiUmVhY3QiLCJlbGVtZW50IiwiaW5jbHVkZUhpZGRlbiIsInN0eWxlIiwiZ2V0Q29tcHV0ZWRTdHlsZSIsImV4Y2x1ZGVTdGF0aWNQYXJlbnQiLCJwb3NpdGlvbiIsIm92ZXJmbG93UmVnZXgiLCJkb2N1bWVudCIsImJvZHkiLCJwYXJlbnQiLCJwYXJlbnRFbGVtZW50IiwidGVzdCIsIm92ZXJmbG93Iiwib3ZlcmZsb3dZIiwib3ZlcmZsb3dYIiwidHJpZ2dlciIsIm1heExlbmd0aCIsIm1pbkxlbmd0aCIsInVzZUNhbGxiYWNrIiwidmFsaWRDaGFycyIsIlR5cGVhaGVhZFRyaWdnZXJSZWdleCIsIlJlZ0V4cCIsIm1hdGNoIiwiZXhlYyIsIm1heWJlTGVhZGluZ1doaXRlc3BhY2UiLCJtYXRjaGluZ1N0cmluZyIsImxlbmd0aCIsImluZGV4IiwicmVwbGFjZWFibGVTdHJpbmciLCJjcmVhdGVDb21tYW5kIiwiYW5jaG9yQ2xhc3NOYW1lIiwiYW5jaG9yRWxlbSIsImdyb3Vwc1dpdGhPcHRpb25zIiwibWVudVJlbmRlckZuIiwib25DbG9zZSIsIm9uT3BlbiIsIm9uUXVlcnlDaGFuZ2UiLCJvblNlbGVjdE9wdGlvbiIsInRyaWdnZXJGbiIsInVzZUxleGljYWxDb21wb3NlckNvbnRleHQiLCJyZXNvbHV0aW9uIiwic2V0UmVzb2x1dGlvbiIsInVzZVN0YXRlIiwiYW5jaG9yRWxlbWVudFJlZiIsInVzZU1lbnVBbmNob3JSZWYiLCJjbG9zZVR5cGVhaGVhZCIsIm9wZW5UeXBlYWhlYWQiLCJyZXMiLCJ1c2VFZmZlY3QiLCJtZXJnZVJlZ2lzdGVyIiwicmVnaXN0ZXJDb21tYW5kIiwibm9kZSIsIl93aW5kb3ciLCJ3aW5kb3ciLCJjcmVhdGVSYW5nZSIsImlzUmFuZ2VQb3NpdGlvbmVkIiwiZ2V0UmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsIkNPTU1BTkRfUFJJT1JJVFlfTE9XIiwidXBkYXRlTGlzdGVuZXIiLCJyZW1vdmVVcGRhdGVMaXN0ZW5lciIsInJlZ2lzdGVyVXBkYXRlTGlzdGVuZXIiLCJMZXhpY2FsTWVudSIsImNsb3NlIiwic2hvdWxkU3BsaXROb2RlV2l0aFF1ZXJ5Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7O0lBMEJhQSxXQUFXO2VBQVhBOztJQTRFR0MsZUFBZTtlQUFmQTs7SUFzQlBDLHFCQUFxQjtlQUFyQkEsa0NBQXFCOztJQUVkQyw2QkFBNkI7ZUFBN0JBOztJQXNESEMseUJBQXlCO2VBQXpCQTs7SUFJR0MsMEJBQTBCO2VBQTFCQTs7O3dDQS9LMEI7dUJBQ1o7eUJBT3ZCOytEQUMwQzs2QkFNSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV2QyxNQUFNTCxjQUFjO0FBRTNCLFNBQVNNLGtCQUFrQkMsU0FBeUI7SUFDbEQsTUFBTUMsU0FBU0QsVUFBVUMsTUFBTTtJQUMvQixJQUFJQSxPQUFPQyxJQUFJLEtBQUssUUFBUTtRQUMxQixPQUFPO0lBQ1Q7SUFDQSxNQUFNQyxhQUFhRixPQUFPRyxPQUFPO0lBQ2pDLElBQUksQ0FBQ0QsV0FBV0UsWUFBWSxJQUFJO1FBQzlCLE9BQU87SUFDVDtJQUNBLE1B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
|