@payloadcms/richtext-slate 1.4.0 → 3.0.0-alpha.1
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/README.md +1 -3
- package/dist/cell/index.d.ts +2 -3
- package/dist/cell/index.d.ts.map +1 -1
- package/dist/cell/index.js +3 -3
- package/dist/data/validation.d.ts +1 -1
- package/dist/data/validation.d.ts.map +1 -1
- package/dist/data/validation.js +4 -3
- package/dist/field/RichText.d.ts +21 -2
- package/dist/field/RichText.d.ts.map +1 -1
- package/dist/field/RichText.js +94 -156
- package/dist/field/buttons.scss +1 -1
- package/dist/field/createFeatureMap.d.ts +3 -0
- package/dist/field/createFeatureMap.d.ts.map +1 -0
- package/dist/field/createFeatureMap.js +49 -0
- package/dist/field/elements/Button.js +7 -5
- package/dist/field/elements/EnabledRelationshipsCondition.js +7 -5
- package/dist/field/elements/ListButton.d.ts.map +1 -1
- package/dist/field/elements/ListButton.js +5 -2
- package/dist/field/elements/blockquote/Blockquote.d.ts +4 -0
- package/dist/field/elements/blockquote/Blockquote.d.ts.map +1 -0
- package/dist/field/elements/blockquote/Blockquote.js +28 -0
- package/dist/field/elements/blockquote/index.d.ts +2 -9
- package/dist/field/elements/blockquote/index.d.ts.map +1 -1
- package/dist/field/elements/blockquote/index.js +6 -8
- package/dist/field/elements/blockquote/index.scss +1 -1
- package/dist/field/elements/getCommonBlock.d.ts.map +1 -1
- package/dist/field/elements/getCommonBlock.js +1 -3
- package/dist/field/elements/h1/Heading1.d.ts +3 -0
- package/dist/field/elements/h1/Heading1.d.ts.map +1 -0
- package/dist/field/elements/h1/Heading1.js +24 -0
- package/dist/field/elements/h1/index.d.ts +2 -8
- package/dist/field/elements/h1/index.d.ts.map +1 -1
- package/dist/field/elements/h1/index.js +6 -4
- package/dist/field/elements/h2/Heading2.d.ts +3 -0
- package/dist/field/elements/h2/Heading2.d.ts.map +1 -0
- package/dist/field/elements/h2/Heading2.js +24 -0
- package/dist/field/elements/h2/index.d.ts +2 -8
- package/dist/field/elements/h2/index.d.ts.map +1 -1
- package/dist/field/elements/h2/index.js +6 -4
- package/dist/field/elements/h3/Heading3.d.ts +3 -0
- package/dist/field/elements/h3/Heading3.d.ts.map +1 -0
- package/dist/field/elements/h3/Heading3.js +24 -0
- package/dist/field/elements/h3/index.d.ts +2 -8
- package/dist/field/elements/h3/index.d.ts.map +1 -1
- package/dist/field/elements/h3/index.js +6 -4
- package/dist/field/elements/h4/Heading4.d.ts +3 -0
- package/dist/field/elements/h4/Heading4.d.ts.map +1 -0
- package/dist/field/elements/h4/Heading4.js +24 -0
- package/dist/field/elements/h4/index.d.ts +2 -8
- package/dist/field/elements/h4/index.d.ts.map +1 -1
- package/dist/field/elements/h4/index.js +6 -4
- package/dist/field/elements/h5/Heading5.d.ts +3 -0
- package/dist/field/elements/h5/Heading5.d.ts.map +1 -0
- package/dist/field/elements/h5/Heading5.js +24 -0
- package/dist/field/elements/h5/index.d.ts +2 -8
- package/dist/field/elements/h5/index.d.ts.map +1 -1
- package/dist/field/elements/h5/index.js +6 -4
- package/dist/field/elements/h6/Heading6.d.ts +3 -0
- package/dist/field/elements/h6/Heading6.d.ts.map +1 -0
- package/dist/field/elements/h6/Heading6.js +24 -0
- package/dist/field/elements/h6/index.d.ts +2 -8
- package/dist/field/elements/h6/index.d.ts.map +1 -1
- package/dist/field/elements/h6/index.js +6 -4
- package/dist/field/elements/indent/Button.d.ts +3 -0
- package/dist/field/elements/indent/Button.d.ts.map +1 -0
- package/dist/field/elements/indent/Button.js +232 -0
- package/dist/field/elements/indent/Element.d.ts +3 -0
- package/dist/field/elements/indent/Element.d.ts.map +1 -0
- package/dist/field/elements/indent/Element.js +29 -0
- package/dist/field/elements/indent/index.d.ts +2 -8
- package/dist/field/elements/indent/index.d.ts.map +1 -1
- package/dist/field/elements/indent/index.js +7 -225
- package/dist/field/elements/indent/shared.d.ts +2 -0
- package/dist/field/elements/indent/shared.d.ts.map +1 -0
- package/dist/field/elements/indent/shared.js +13 -0
- package/dist/field/elements/index.d.ts +2 -115
- package/dist/field/elements/index.d.ts.map +1 -1
- package/dist/field/elements/index.js +1 -1
- package/dist/field/elements/li/ListItem.d.ts +3 -0
- package/dist/field/elements/li/ListItem.d.ts.map +1 -0
- package/dist/field/elements/li/ListItem.js +77 -0
- package/dist/field/elements/li/index.d.ts +3 -5
- package/dist/field/elements/li/index.d.ts.map +1 -1
- package/dist/field/elements/li/index.js +6 -21
- package/dist/field/elements/link/Button/index.d.ts +1 -5
- package/dist/field/elements/link/Button/index.d.ts.map +1 -1
- package/dist/field/elements/link/Button/index.js +32 -44
- package/dist/field/elements/link/Element/index.d.ts +1 -9
- package/dist/field/elements/link/Element/index.d.ts.map +1 -1
- package/dist/field/elements/link/Element/index.js +59 -66
- package/dist/field/elements/link/Element/index.scss +1 -1
- package/dist/field/elements/link/LinkDrawer/baseFields.js +11 -11
- package/dist/field/elements/link/LinkDrawer/index.d.ts.map +1 -1
- package/dist/field/elements/link/LinkDrawer/index.js +47 -22
- package/dist/field/elements/link/LinkDrawer/index.scss +1 -1
- package/dist/field/elements/link/LinkDrawer/types.d.ts +4 -4
- package/dist/field/elements/link/LinkDrawer/types.d.ts.map +1 -1
- package/dist/field/elements/link/WithLinks.d.ts +3 -0
- package/dist/field/elements/link/WithLinks.d.ts.map +1 -0
- package/dist/field/elements/link/WithLinks.js +29 -0
- package/dist/field/elements/link/index.d.ts +2 -15
- package/dist/field/elements/link/index.d.ts.map +1 -1
- package/dist/field/elements/link/index.js +4 -3
- package/dist/field/elements/link/shared.d.ts +1 -0
- package/dist/field/elements/link/shared.d.ts.map +1 -1
- package/dist/field/elements/link/shared.js +13 -4
- package/dist/field/elements/link/types.d.ts +9 -0
- package/dist/field/elements/link/types.d.ts.map +1 -0
- package/dist/field/elements/link/types.js +6 -0
- package/dist/field/elements/link/utilities.d.ts +3 -4
- package/dist/field/elements/link/utilities.d.ts.map +1 -1
- package/dist/field/elements/link/utilities.js +7 -21
- package/dist/field/elements/ol/OrderedList.d.ts +4 -0
- package/dist/field/elements/ol/OrderedList.d.ts.map +1 -0
- package/dist/field/elements/ol/OrderedList.js +28 -0
- package/dist/field/elements/ol/index.d.ts +2 -9
- package/dist/field/elements/ol/index.d.ts.map +1 -1
- package/dist/field/elements/ol/index.js +6 -8
- package/dist/field/elements/ol/index.scss +1 -1
- package/dist/field/elements/relationship/Button/index.d.ts.map +1 -1
- package/dist/field/elements/relationship/Button/index.js +11 -10
- package/dist/field/elements/relationship/Button/index.scss +1 -1
- package/dist/field/elements/relationship/Element/index.d.ts +4 -7
- package/dist/field/elements/relationship/Element/index.d.ts.map +1 -1
- package/dist/field/elements/relationship/Element/index.js +27 -31
- package/dist/field/elements/relationship/Element/index.scss +1 -1
- package/dist/field/elements/relationship/index.d.ts +3 -15
- package/dist/field/elements/relationship/index.d.ts.map +1 -1
- package/dist/field/elements/relationship/index.js +7 -4
- package/dist/field/elements/relationship/plugin.d.ts +2 -2
- package/dist/field/elements/relationship/plugin.d.ts.map +1 -1
- package/dist/field/elements/relationship/plugin.js +14 -9
- package/dist/field/elements/relationship/shared.d.ts +2 -0
- package/dist/field/elements/relationship/shared.d.ts.map +1 -0
- package/dist/field/elements/relationship/shared.js +13 -0
- package/dist/field/elements/relationship/types.d.ts +8 -0
- package/dist/field/elements/relationship/types.d.ts.map +1 -0
- package/dist/field/elements/relationship/types.js +6 -0
- package/dist/field/elements/textAlign/index.d.ts +3 -6
- package/dist/field/elements/textAlign/index.d.ts.map +1 -1
- package/dist/field/elements/textAlign/index.js +5 -3
- package/dist/field/elements/toggle.js +3 -3
- package/dist/field/elements/toggleList.js +5 -5
- package/dist/field/elements/ul/UnorderedList.d.ts +4 -0
- package/dist/field/elements/ul/UnorderedList.d.ts.map +1 -0
- package/dist/field/elements/ul/UnorderedList.js +28 -0
- package/dist/field/elements/ul/index.d.ts +2 -9
- package/dist/field/elements/ul/index.d.ts.map +1 -1
- package/dist/field/elements/ul/index.js +6 -8
- package/dist/field/elements/ul/index.scss +1 -1
- package/dist/field/elements/upload/Button/index.d.ts.map +1 -1
- package/dist/field/elements/upload/Button/index.js +10 -12
- package/dist/field/elements/upload/Button/index.scss +1 -1
- package/dist/field/elements/upload/Element/UploadDrawer/index.d.ts +9 -2
- package/dist/field/elements/upload/Element/UploadDrawer/index.d.ts.map +1 -1
- package/dist/field/elements/upload/Element/UploadDrawer/index.js +44 -51
- package/dist/field/elements/upload/Element/index.d.ts +5 -9
- package/dist/field/elements/upload/Element/index.d.ts.map +1 -1
- package/dist/field/elements/upload/Element/index.js +40 -39
- package/dist/field/elements/upload/Element/index.scss +1 -1
- package/dist/field/elements/upload/index.d.ts +3 -10
- package/dist/field/elements/upload/index.d.ts.map +1 -1
- package/dist/field/elements/upload/index.js +7 -4
- package/dist/field/elements/upload/plugin.d.ts +2 -2
- package/dist/field/elements/upload/plugin.d.ts.map +1 -1
- package/dist/field/elements/upload/plugin.js +14 -9
- package/dist/field/elements/upload/shared.d.ts +3 -0
- package/dist/field/elements/upload/shared.d.ts.map +1 -0
- package/dist/field/elements/upload/shared.js +22 -0
- package/dist/field/elements/upload/types.d.ts +9 -0
- package/dist/field/elements/upload/types.d.ts.map +1 -0
- package/dist/field/elements/upload/types.js +6 -0
- package/dist/field/icons/IndentLeft/index.scss +1 -1
- package/dist/field/icons/IndentRight/index.scss +1 -1
- package/dist/field/icons/Link/index.scss +1 -1
- package/dist/field/icons/Relationship/index.scss +1 -1
- package/dist/field/icons/Upload/index.scss +1 -1
- package/dist/field/index.d.ts +5 -2
- package/dist/field/index.d.ts.map +1 -1
- package/dist/field/index.js +52 -6
- package/dist/field/index.scss +1 -1
- package/dist/field/leaves/bold/Bold/index.d.ts +3 -0
- package/dist/field/leaves/bold/Bold/index.d.ts.map +1 -0
- package/dist/field/leaves/bold/Bold/index.js +24 -0
- package/dist/field/leaves/bold/index.d.ts +2 -8
- package/dist/field/leaves/bold/index.d.ts.map +1 -1
- package/dist/field/leaves/bold/index.js +4 -3
- package/dist/field/leaves/code/Code/index.d.ts +3 -0
- package/dist/field/leaves/code/Code/index.d.ts.map +1 -0
- package/dist/field/leaves/code/Code/index.js +24 -0
- package/dist/field/leaves/code/index.d.ts +2 -8
- package/dist/field/leaves/code/index.d.ts.map +1 -1
- package/dist/field/leaves/code/index.js +4 -3
- package/dist/field/leaves/index.d.ts +3 -39
- package/dist/field/leaves/index.d.ts.map +1 -1
- package/dist/field/leaves/index.js +3 -2
- package/dist/field/leaves/italic/Italic/index.d.ts +3 -0
- package/dist/field/leaves/italic/Italic/index.d.ts.map +1 -0
- package/dist/field/leaves/italic/Italic/index.js +24 -0
- package/dist/field/leaves/italic/index.d.ts +2 -8
- package/dist/field/leaves/italic/index.d.ts.map +1 -1
- package/dist/field/leaves/italic/index.js +4 -3
- package/dist/field/leaves/strikethrough/Strikethrough/index.d.ts +3 -0
- package/dist/field/leaves/strikethrough/Strikethrough/index.d.ts.map +1 -0
- package/dist/field/leaves/strikethrough/Strikethrough/index.js +24 -0
- package/dist/field/leaves/strikethrough/index.d.ts +2 -8
- package/dist/field/leaves/strikethrough/index.d.ts.map +1 -1
- package/dist/field/leaves/strikethrough/index.js +4 -3
- package/dist/field/leaves/underline/Underline/index.d.ts +3 -0
- package/dist/field/leaves/underline/Underline/index.d.ts.map +1 -0
- package/dist/field/leaves/underline/Underline/index.js +24 -0
- package/dist/field/leaves/underline/index.d.ts +2 -8
- package/dist/field/leaves/underline/index.d.ts.map +1 -1
- package/dist/field/leaves/underline/index.js +4 -3
- package/dist/field/plugins/withHTML.js +2 -2
- package/dist/field/providers/ElementButtonProvider.d.ts +16 -0
- package/dist/field/providers/ElementButtonProvider.d.ts.map +1 -0
- package/dist/field/providers/ElementButtonProvider.js +44 -0
- package/dist/field/providers/ElementProvider.d.ts +21 -0
- package/dist/field/providers/ElementProvider.d.ts.map +1 -0
- package/dist/field/providers/ElementProvider.js +48 -0
- package/dist/field/providers/LeafButtonProvider.d.ts +15 -0
- package/dist/field/providers/LeafButtonProvider.d.ts.map +1 -0
- package/dist/field/providers/LeafButtonProvider.js +44 -0
- package/dist/field/providers/LeafProvider.d.ts +19 -0
- package/dist/field/providers/LeafProvider.d.ts.map +1 -0
- package/dist/field/providers/LeafProvider.js +49 -0
- package/dist/field/types.d.ts +19 -0
- package/dist/field/types.d.ts.map +1 -0
- package/dist/field/types.js +6 -0
- package/dist/generateComponentMap.d.ts +4 -0
- package/dist/generateComponentMap.d.ts.map +1 -0
- package/dist/generateComponentMap.js +123 -0
- package/dist/generateSchemaMap.d.ts +4 -0
- package/dist/generateSchemaMap.d.ts.map +1 -0
- package/dist/generateSchemaMap.js +77 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -17
- package/dist/scss/app.scss +209 -0
- package/dist/scss/colors.scss +269 -0
- package/dist/scss/custom.css +1 -0
- package/dist/scss/fonts.scss +75 -0
- package/dist/scss/queries.scss +27 -0
- package/dist/scss/resets.scss +17 -0
- package/dist/scss/styles.scss +11 -0
- package/dist/scss/svg.scss +10 -0
- package/dist/scss/toastify.scss +59 -0
- package/dist/scss/type.scss +117 -0
- package/dist/scss/vars.scss +220 -0
- package/dist/scss/z-index.scss +9 -0
- package/dist/types.d.ts +7 -7
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/dist/utilities/useSlatePlugin.d.ts +5 -0
- package/dist/utilities/useSlatePlugin.d.ts.map +1 -0
- package/dist/utilities/useSlatePlugin.js +18 -0
- package/package.json +11 -7
- package/dist/field/elements/relationship/Button/Fields/index.d.ts +0 -4
- package/dist/field/elements/relationship/Button/Fields/index.d.ts.map +0 -1
- package/dist/field/elements/relationship/Button/Fields/index.js +0 -95
package/dist/field/RichText.js
CHANGED
|
@@ -9,27 +9,26 @@ Object.defineProperty(exports, "default", {
|
|
|
9
9
|
return _default;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
+
const _translations = require("@payloadcms/translations");
|
|
13
|
+
const _ui = require("@payloadcms/ui");
|
|
14
|
+
const _forms = require("@payloadcms/ui/forms");
|
|
12
15
|
const _ishotkey = /*#__PURE__*/ _interop_require_default(require("is-hotkey"));
|
|
13
|
-
const _forms = require("payload/components/forms");
|
|
14
|
-
const _utilities = require("payload/components/utilities");
|
|
15
|
-
const _utilities1 = require("payload/utilities");
|
|
16
16
|
const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
|
|
17
|
-
const _reacti18next = require("react-i18next");
|
|
18
17
|
const _slate = require("slate");
|
|
19
18
|
const _slatehistory = require("slate-history");
|
|
20
19
|
const _slatereact = require("slate-react");
|
|
21
20
|
const _defaultValue = require("../data/defaultValue");
|
|
22
21
|
const _validation = require("../data/validation");
|
|
23
|
-
const _elements = /*#__PURE__*/ _interop_require_default(require("./elements"));
|
|
24
22
|
const _listTypes = /*#__PURE__*/ _interop_require_default(require("./elements/listTypes"));
|
|
25
|
-
const _enablePlugins = /*#__PURE__*/ _interop_require_default(require("./enablePlugins"));
|
|
26
23
|
const _hotkeys = /*#__PURE__*/ _interop_require_default(require("./hotkeys"));
|
|
27
24
|
require("./index.scss");
|
|
28
|
-
const _leaves = /*#__PURE__*/ _interop_require_default(require("./leaves"));
|
|
29
25
|
const _toggle = /*#__PURE__*/ _interop_require_default(require("./leaves/toggle"));
|
|
30
|
-
const _mergeCustomFunctions = /*#__PURE__*/ _interop_require_default(require("./mergeCustomFunctions"));
|
|
31
26
|
const _withEnterBreakOut = /*#__PURE__*/ _interop_require_default(require("./plugins/withEnterBreakOut"));
|
|
32
27
|
const _withHTML = /*#__PURE__*/ _interop_require_default(require("./plugins/withHTML"));
|
|
28
|
+
const _ElementButtonProvider = require("./providers/ElementButtonProvider");
|
|
29
|
+
const _ElementProvider = require("./providers/ElementProvider");
|
|
30
|
+
const _LeafButtonProvider = require("./providers/LeafButtonProvider");
|
|
31
|
+
const _LeafProvider = require("./providers/LeafProvider");
|
|
33
32
|
function _interop_require_default(obj) {
|
|
34
33
|
return obj && obj.__esModule ? obj : {
|
|
35
34
|
default: obj
|
|
@@ -56,7 +55,9 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
56
55
|
if (cache && cache.has(obj)) {
|
|
57
56
|
return cache.get(obj);
|
|
58
57
|
}
|
|
59
|
-
var newObj = {
|
|
58
|
+
var newObj = {
|
|
59
|
+
__proto__: null
|
|
60
|
+
};
|
|
60
61
|
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
61
62
|
for(var key in obj){
|
|
62
63
|
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
@@ -74,52 +75,44 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
74
75
|
}
|
|
75
76
|
return newObj;
|
|
76
77
|
}
|
|
77
|
-
const defaultElements = [
|
|
78
|
-
'h1',
|
|
79
|
-
'h2',
|
|
80
|
-
'h3',
|
|
81
|
-
'h4',
|
|
82
|
-
'h5',
|
|
83
|
-
'h6',
|
|
84
|
-
'ul',
|
|
85
|
-
'ol',
|
|
86
|
-
'indent',
|
|
87
|
-
'link',
|
|
88
|
-
'relationship',
|
|
89
|
-
'upload'
|
|
90
|
-
];
|
|
91
|
-
const defaultLeaves = [
|
|
92
|
-
'bold',
|
|
93
|
-
'italic',
|
|
94
|
-
'underline',
|
|
95
|
-
'strikethrough',
|
|
96
|
-
'code'
|
|
97
|
-
];
|
|
98
78
|
const baseClass = 'rich-text';
|
|
99
79
|
const RichText = (props)=>{
|
|
100
|
-
const { name,
|
|
101
|
-
|
|
102
|
-
condition: undefined,
|
|
103
|
-
description: undefined,
|
|
104
|
-
hideGutter: undefined,
|
|
105
|
-
placeholder: undefined,
|
|
106
|
-
readOnly: undefined,
|
|
107
|
-
style: undefined,
|
|
108
|
-
width: undefined
|
|
109
|
-
}, admin, defaultValue: defaultValueFromProps, label, path: pathFromProps, required, validate = _validation.richTextValidate } = props;
|
|
110
|
-
const elements = admin?.elements || defaultElements;
|
|
111
|
-
const leaves = admin?.leaves || defaultLeaves;
|
|
112
|
-
const path = pathFromProps || name;
|
|
113
|
-
const { i18n } = (0, _reacti18next.useTranslation)();
|
|
114
|
-
const [loaded, setLoaded] = (0, _react.useState)(false);
|
|
115
|
-
const [enabledElements, setEnabledElements] = (0, _react.useState)({});
|
|
116
|
-
const [enabledLeaves, setEnabledLeaves] = (0, _react.useState)({});
|
|
80
|
+
const { name, Description, Error, Label, className, elements, leaves, path: pathFromProps, placeholder, plugins, readOnly, required, style, validate = _validation.richTextValidate, width } = props;
|
|
81
|
+
const { i18n } = (0, _ui.useTranslation)();
|
|
117
82
|
const editorRef = (0, _react.useRef)(null);
|
|
118
83
|
const toolbarRef = (0, _react.useRef)(null);
|
|
119
|
-
const drawerDepth = (0,
|
|
84
|
+
const drawerDepth = (0, _ui.useEditDepth)();
|
|
120
85
|
const drawerIsOpen = drawerDepth > 1;
|
|
86
|
+
const memoizedValidate = (0, _react.useCallback)((value, validationOptions)=>{
|
|
87
|
+
if (typeof validate === 'function') {
|
|
88
|
+
return validate(value, {
|
|
89
|
+
...validationOptions,
|
|
90
|
+
required
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}, [
|
|
94
|
+
validate,
|
|
95
|
+
required
|
|
96
|
+
]);
|
|
97
|
+
const { initialValue, path, schemaPath, setValue, showError, value } = (0, _ui.useField)({
|
|
98
|
+
path: pathFromProps || name,
|
|
99
|
+
validate: memoizedValidate
|
|
100
|
+
});
|
|
101
|
+
const editor = (0, _react.useMemo)(()=>{
|
|
102
|
+
let CreatedEditor = (0, _withEnterBreakOut.default)((0, _slatehistory.withHistory)((0, _slatereact.withReact)((0, _slate.createEditor)())));
|
|
103
|
+
CreatedEditor = (0, _withHTML.default)(CreatedEditor);
|
|
104
|
+
if (plugins.length) {
|
|
105
|
+
CreatedEditor = plugins.reduce((editorWithPlugins, plugin)=>{
|
|
106
|
+
return plugin(editorWithPlugins);
|
|
107
|
+
}, CreatedEditor);
|
|
108
|
+
}
|
|
109
|
+
return CreatedEditor;
|
|
110
|
+
}, [
|
|
111
|
+
plugins
|
|
112
|
+
]);
|
|
121
113
|
const renderElement = (0, _react.useCallback)(({ attributes, children, element })=>{
|
|
122
|
-
|
|
114
|
+
// return <div {...attributes}>{children}</div>
|
|
115
|
+
const matchedElement = elements[element.type];
|
|
123
116
|
const Element = matchedElement?.Element;
|
|
124
117
|
let attr = {
|
|
125
118
|
...attributes
|
|
@@ -203,85 +196,57 @@ const RichText = (props)=>{
|
|
|
203
196
|
}
|
|
204
197
|
}
|
|
205
198
|
if (Element) {
|
|
206
|
-
const el = /*#__PURE__*/ _react.default.createElement(
|
|
199
|
+
const el = /*#__PURE__*/ _react.default.createElement(_ElementProvider.ElementProvider, {
|
|
207
200
|
attributes: attr,
|
|
201
|
+
childNodes: children,
|
|
208
202
|
editorRef: editorRef,
|
|
209
203
|
element: element,
|
|
210
204
|
fieldProps: props,
|
|
211
|
-
path: path
|
|
212
|
-
|
|
205
|
+
path: path,
|
|
206
|
+
schemaPath: schemaPath
|
|
207
|
+
}, Element);
|
|
213
208
|
return el;
|
|
214
209
|
}
|
|
215
210
|
return /*#__PURE__*/ _react.default.createElement("div", attr, children);
|
|
216
211
|
}, [
|
|
217
|
-
|
|
212
|
+
elements,
|
|
218
213
|
path,
|
|
219
|
-
props
|
|
214
|
+
props,
|
|
215
|
+
schemaPath
|
|
220
216
|
]);
|
|
221
217
|
const renderLeaf = (0, _react.useCallback)(({ attributes, children, leaf })=>{
|
|
222
|
-
const matchedLeaves = Object.entries(
|
|
218
|
+
const matchedLeaves = Object.entries(leaves).filter(([leafName])=>leaf[leafName]);
|
|
223
219
|
if (matchedLeaves.length > 0) {
|
|
224
|
-
return matchedLeaves.reduce((result, [
|
|
225
|
-
if (
|
|
226
|
-
const Leaf =
|
|
227
|
-
return /*#__PURE__*/ _react.default.createElement(
|
|
220
|
+
return matchedLeaves.reduce((result, [, leafConfig], i)=>{
|
|
221
|
+
if (leafConfig?.Leaf) {
|
|
222
|
+
const Leaf = leafConfig.Leaf;
|
|
223
|
+
return /*#__PURE__*/ _react.default.createElement(_LeafProvider.LeafProvider, {
|
|
224
|
+
attributes: attributes,
|
|
228
225
|
editorRef: editorRef,
|
|
229
226
|
fieldProps: props,
|
|
230
227
|
key: i,
|
|
231
228
|
leaf: leaf,
|
|
232
|
-
path: path
|
|
233
|
-
|
|
229
|
+
path: path,
|
|
230
|
+
result: result,
|
|
231
|
+
schemaPath: schemaPath
|
|
232
|
+
}, Leaf);
|
|
234
233
|
}
|
|
235
234
|
return result;
|
|
236
235
|
}, /*#__PURE__*/ _react.default.createElement("span", attributes, children));
|
|
237
236
|
}
|
|
238
237
|
return /*#__PURE__*/ _react.default.createElement("span", attributes, children);
|
|
239
238
|
}, [
|
|
240
|
-
enabledLeaves,
|
|
241
|
-
path,
|
|
242
|
-
props
|
|
243
|
-
]);
|
|
244
|
-
const memoizedValidate = (0, _react.useCallback)((value, validationOptions)=>{
|
|
245
|
-
return validate(value, {
|
|
246
|
-
...validationOptions,
|
|
247
|
-
required
|
|
248
|
-
});
|
|
249
|
-
}, [
|
|
250
|
-
validate,
|
|
251
|
-
required
|
|
252
|
-
]);
|
|
253
|
-
const fieldType = (0, _forms.useField)({
|
|
254
|
-
condition,
|
|
255
239
|
path,
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
const classes = [
|
|
260
|
-
baseClass,
|
|
261
|
-
'field-type',
|
|
262
|
-
className,
|
|
263
|
-
showError && 'error',
|
|
264
|
-
readOnly && `${baseClass}--read-only`,
|
|
265
|
-
!hideGutter && `${baseClass}--gutter`
|
|
266
|
-
].filter(Boolean).join(' ');
|
|
267
|
-
const editor = (0, _react.useMemo)(()=>{
|
|
268
|
-
let CreatedEditor = (0, _withEnterBreakOut.default)((0, _slatehistory.withHistory)((0, _slatereact.withReact)((0, _slate.createEditor)())));
|
|
269
|
-
CreatedEditor = (0, _withHTML.default)(CreatedEditor);
|
|
270
|
-
CreatedEditor = (0, _enablePlugins.default)(CreatedEditor, elements);
|
|
271
|
-
CreatedEditor = (0, _enablePlugins.default)(CreatedEditor, leaves);
|
|
272
|
-
return CreatedEditor;
|
|
273
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
274
|
-
}, [
|
|
275
|
-
elements,
|
|
276
|
-
leaves,
|
|
277
|
-
path
|
|
240
|
+
props,
|
|
241
|
+
schemaPath,
|
|
242
|
+
leaves
|
|
278
243
|
]);
|
|
279
244
|
// All slate changes fire the onChange event
|
|
280
245
|
// including selection changes
|
|
281
246
|
// so we will filter the set_selection operations out
|
|
282
247
|
// and only fire setValue when onChange is because of value
|
|
283
248
|
const handleChange = (0, _react.useCallback)((val)=>{
|
|
284
|
-
const ops = editor
|
|
249
|
+
const ops = editor?.operations.filter((o)=>{
|
|
285
250
|
if (o) {
|
|
286
251
|
return o.type !== 'set_selection';
|
|
287
252
|
}
|
|
@@ -293,24 +258,11 @@ const RichText = (props)=>{
|
|
|
293
258
|
}
|
|
294
259
|
}
|
|
295
260
|
}, [
|
|
296
|
-
editor
|
|
261
|
+
editor?.operations,
|
|
297
262
|
readOnly,
|
|
298
263
|
setValue,
|
|
299
264
|
value
|
|
300
265
|
]);
|
|
301
|
-
(0, _react.useEffect)(()=>{
|
|
302
|
-
if (!loaded) {
|
|
303
|
-
const mergedElements = (0, _mergeCustomFunctions.default)(elements, _elements.default);
|
|
304
|
-
const mergedLeaves = (0, _mergeCustomFunctions.default)(leaves, _leaves.default);
|
|
305
|
-
setEnabledElements(mergedElements);
|
|
306
|
-
setEnabledLeaves(mergedLeaves);
|
|
307
|
-
setLoaded(true);
|
|
308
|
-
}
|
|
309
|
-
}, [
|
|
310
|
-
loaded,
|
|
311
|
-
elements,
|
|
312
|
-
leaves
|
|
313
|
-
]);
|
|
314
266
|
(0, _react.useEffect)(()=>{
|
|
315
267
|
function setClickableState(clickState) {
|
|
316
268
|
const selectors = 'button, a, [role="button"]';
|
|
@@ -322,16 +274,15 @@ const RichText = (props)=>{
|
|
|
322
274
|
if (isButton) child.setAttribute('disabled', isDisabling ? 'disabled' : null);
|
|
323
275
|
});
|
|
324
276
|
}
|
|
325
|
-
if (
|
|
277
|
+
if (readOnly) {
|
|
326
278
|
setClickableState('disabled');
|
|
327
279
|
}
|
|
328
280
|
return ()=>{
|
|
329
|
-
if (
|
|
281
|
+
if (readOnly) {
|
|
330
282
|
setClickableState('enabled');
|
|
331
283
|
}
|
|
332
284
|
};
|
|
333
285
|
}, [
|
|
334
|
-
loaded,
|
|
335
286
|
readOnly
|
|
336
287
|
]);
|
|
337
288
|
// useEffect(() => {
|
|
@@ -343,9 +294,13 @@ const RichText = (props)=>{
|
|
|
343
294
|
// ReactEditor.deselect(editor);
|
|
344
295
|
// }
|
|
345
296
|
// }, [path, editor]);
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
297
|
+
const classes = [
|
|
298
|
+
baseClass,
|
|
299
|
+
'field-type',
|
|
300
|
+
className,
|
|
301
|
+
showError && 'error',
|
|
302
|
+
readOnly && `${baseClass}--read-only`
|
|
303
|
+
].filter(Boolean).join(' ');
|
|
349
304
|
let valueToRender = value;
|
|
350
305
|
if (typeof valueToRender === 'string') {
|
|
351
306
|
try {
|
|
@@ -355,7 +310,7 @@ const RichText = (props)=>{
|
|
|
355
310
|
valueToRender = null;
|
|
356
311
|
}
|
|
357
312
|
}
|
|
358
|
-
if (!valueToRender) valueToRender =
|
|
313
|
+
if (!valueToRender) valueToRender = _defaultValue.defaultRichTextValue;
|
|
359
314
|
return /*#__PURE__*/ _react.default.createElement("div", {
|
|
360
315
|
className: classes,
|
|
361
316
|
style: {
|
|
@@ -364,14 +319,7 @@ const RichText = (props)=>{
|
|
|
364
319
|
}
|
|
365
320
|
}, /*#__PURE__*/ _react.default.createElement("div", {
|
|
366
321
|
className: `${baseClass}__wrap`
|
|
367
|
-
}, /*#__PURE__*/ _react.default.createElement(
|
|
368
|
-
message: errorMessage,
|
|
369
|
-
showError: showError
|
|
370
|
-
}), /*#__PURE__*/ _react.default.createElement(_forms.Label, {
|
|
371
|
-
htmlFor: `field-${path.replace(/\./g, '__')}`,
|
|
372
|
-
label: label,
|
|
373
|
-
required: required
|
|
374
|
-
}), /*#__PURE__*/ _react.default.createElement(_slatereact.Slate, {
|
|
322
|
+
}, Error, Label, /*#__PURE__*/ _react.default.createElement(_slatereact.Slate, {
|
|
375
323
|
editor: editor,
|
|
376
324
|
key: JSON.stringify({
|
|
377
325
|
initialValue,
|
|
@@ -381,7 +329,7 @@ const RichText = (props)=>{
|
|
|
381
329
|
value: valueToRender
|
|
382
330
|
}, /*#__PURE__*/ _react.default.createElement("div", {
|
|
383
331
|
className: `${baseClass}__wrapper`
|
|
384
|
-
}, elements?.length + leaves?.length > 0 && /*#__PURE__*/ _react.default.createElement("div", {
|
|
332
|
+
}, Object.keys(elements)?.length + Object.keys(leaves)?.length > 0 && /*#__PURE__*/ _react.default.createElement("div", {
|
|
385
333
|
className: [
|
|
386
334
|
`${baseClass}__toolbar`,
|
|
387
335
|
drawerIsOpen && `${baseClass}__drawerIsOpen`
|
|
@@ -389,32 +337,26 @@ const RichText = (props)=>{
|
|
|
389
337
|
ref: toolbarRef
|
|
390
338
|
}, /*#__PURE__*/ _react.default.createElement("div", {
|
|
391
339
|
className: `${baseClass}__toolbar-wrap`
|
|
392
|
-
}, elements.map((element
|
|
393
|
-
|
|
394
|
-
if (typeof element === 'object' && element?.name) elementName = element.name;
|
|
395
|
-
if (typeof element === 'string') elementName = element;
|
|
396
|
-
const elementType = enabledElements[elementName];
|
|
397
|
-
const Button = elementType?.Button;
|
|
340
|
+
}, Object.values(elements).map((element)=>{
|
|
341
|
+
const Button = element?.Button;
|
|
398
342
|
if (Button) {
|
|
399
|
-
return /*#__PURE__*/ _react.default.createElement(
|
|
343
|
+
return /*#__PURE__*/ _react.default.createElement(_ElementButtonProvider.ElementButtonProvider, {
|
|
400
344
|
fieldProps: props,
|
|
401
|
-
key:
|
|
402
|
-
path: path
|
|
403
|
-
|
|
345
|
+
key: element.name,
|
|
346
|
+
path: path,
|
|
347
|
+
schemaPath: schemaPath
|
|
348
|
+
}, Button);
|
|
404
349
|
}
|
|
405
350
|
return null;
|
|
406
|
-
}), leaves.map((leaf
|
|
407
|
-
|
|
408
|
-
if (typeof leaf === 'object' && leaf?.name) leafName = leaf.name;
|
|
409
|
-
if (typeof leaf === 'string') leafName = leaf;
|
|
410
|
-
const leafType = enabledLeaves[leafName];
|
|
411
|
-
const Button = leafType?.Button;
|
|
351
|
+
}), Object.values(leaves).map((leaf)=>{
|
|
352
|
+
const Button = leaf?.Button;
|
|
412
353
|
if (Button) {
|
|
413
|
-
return /*#__PURE__*/ _react.default.createElement(
|
|
354
|
+
return /*#__PURE__*/ _react.default.createElement(_LeafButtonProvider.LeafButtonProvider, {
|
|
414
355
|
fieldProps: props,
|
|
415
|
-
key:
|
|
416
|
-
path: path
|
|
417
|
-
|
|
356
|
+
key: leaf.name,
|
|
357
|
+
path: path,
|
|
358
|
+
schemaPath: schemaPath
|
|
359
|
+
}, Button);
|
|
418
360
|
}
|
|
419
361
|
return null;
|
|
420
362
|
}))), /*#__PURE__*/ _react.default.createElement("div", {
|
|
@@ -478,17 +420,13 @@ const RichText = (props)=>{
|
|
|
478
420
|
}
|
|
479
421
|
});
|
|
480
422
|
},
|
|
481
|
-
placeholder: (0,
|
|
423
|
+
placeholder: (0, _translations.getTranslation)(placeholder, i18n),
|
|
482
424
|
readOnly: readOnly,
|
|
483
425
|
renderElement: renderElement,
|
|
484
426
|
renderLeaf: renderLeaf,
|
|
485
427
|
spellCheck: true
|
|
486
|
-
})))),
|
|
487
|
-
description: description,
|
|
488
|
-
path: path,
|
|
489
|
-
value: value
|
|
490
|
-
})));
|
|
428
|
+
})))), Description));
|
|
491
429
|
};
|
|
492
430
|
const _default = (0, _forms.withCondition)(RichText);
|
|
493
431
|
|
|
494
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWVsZC9SaWNoVGV4dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCB0eXBlIHsgQmFzZUVkaXRvciwgQmFzZU9wZXJhdGlvbiB9IGZyb20gJ3NsYXRlJ1xuaW1wb3J0IHR5cGUgeyBIaXN0b3J5RWRpdG9yIH0gZnJvbSAnc2xhdGUtaGlzdG9yeSdcbmltcG9ydCB0eXBlIHsgUmVhY3RFZGl0b3IgfSBmcm9tICdzbGF0ZS1yZWFjdCdcblxuaW1wb3J0IGlzSG90a2V5IGZyb20gJ2lzLWhvdGtleSdcbmltcG9ydCB7IEVycm9yLCBGaWVsZERlc2NyaXB0aW9uLCBMYWJlbCwgdXNlRmllbGQsIHdpdGhDb25kaXRpb24gfSBmcm9tICdwYXlsb2FkL2NvbXBvbmVudHMvZm9ybXMnXG5pbXBvcnQgeyB1c2VFZGl0RGVwdGggfSBmcm9tICdwYXlsb2FkL2NvbXBvbmVudHMvdXRpbGl0aWVzJ1xuaW1wb3J0IHsgZ2V0VHJhbnNsYXRpb24gfSBmcm9tICdwYXlsb2FkL3V0aWxpdGllcydcbmltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyBOb2RlLCBFbGVtZW50IGFzIFNsYXRlRWxlbWVudCwgVGV4dCwgVHJhbnNmb3JtcywgY3JlYXRlRWRpdG9yIH0gZnJvbSAnc2xhdGUnXG5pbXBvcnQgeyB3aXRoSGlzdG9yeSB9IGZyb20gJ3NsYXRlLWhpc3RvcnknXG5pbXBvcnQgeyBFZGl0YWJsZSwgU2xhdGUsIHdpdGhSZWFjdCB9IGZyb20gJ3NsYXRlLXJlYWN0J1xuXG5pbXBvcnQgdHlwZSB7IEVsZW1lbnROb2RlLCBGaWVsZFByb3BzLCBSaWNoVGV4dEVsZW1lbnQsIFJpY2hUZXh0TGVhZiwgVGV4dE5vZGUgfSBmcm9tICcuLi90eXBlcydcblxuaW1wb3J0IHsgZGVmYXVsdFJpY2hUZXh0VmFsdWUgfSBmcm9tICcuLi9kYXRhL2RlZmF1bHRWYWx1ZSdcbmltcG9ydCB7IHJpY2hUZXh0VmFsaWRhdGUgfSBmcm9tICcuLi9kYXRhL3ZhbGlkYXRpb24nXG5pbXBvcnQgZWxlbWVudFR5cGVzIGZyb20gJy4vZWxlbWVudHMnXG5pbXBvcnQgbGlzdFR5cGVzIGZyb20gJy4vZWxlbWVudHMvbGlzdFR5cGVzJ1xuaW1wb3J0IGVuYWJsZVBsdWdpbnMgZnJvbSAnLi9lbmFibGVQbHVnaW5zJ1xuaW1wb3J0IGhvdGtleXMgZnJvbSAnLi9ob3RrZXlzJ1xuaW1wb3J0ICcuL2luZGV4LnNjc3MnXG5pbXBvcnQgbGVhZlR5cGVzIGZyb20gJy4vbGVhdmVzJ1xuaW1wb3J0IHRvZ2dsZUxlYWYgZnJvbSAnLi9sZWF2ZXMvdG9nZ2xlJ1xuaW1wb3J0IG1lcmdlQ3VzdG9tRnVuY3Rpb25zIGZyb20gJy4vbWVyZ2VDdXN0b21GdW5jdGlvbnMnXG5pbXBvcnQgd2l0aEVudGVyQnJlYWtPdXQgZnJvbSAnLi9wbHVnaW5zL3dpdGhFbnRlckJyZWFrT3V0J1xuaW1wb3J0IHdpdGhIVE1MIGZyb20gJy4vcGx1Z2lucy93aXRoSFRNTCdcblxuY29uc3QgZGVmYXVsdEVsZW1lbnRzOiBSaWNoVGV4dEVsZW1lbnRbXSA9IFtcbiAgJ2gxJyxcbiAgJ2gyJyxcbiAgJ2gzJyxcbiAgJ2g0JyxcbiAgJ2g1JyxcbiAgJ2g2JyxcbiAgJ3VsJyxcbiAgJ29sJyxcbiAgJ2luZGVudCcsXG4gICdsaW5rJyxcbiAgJ3JlbGF0aW9uc2hpcCcsXG4gICd1cGxvYWQnLFxuXVxuY29uc3QgZGVmYXVsdExlYXZlczogUmljaFRleHRMZWFmW10gPSBbJ2JvbGQnLCAnaXRhbGljJywgJ3VuZGVybGluZScsICdzdHJpa2V0aHJvdWdoJywgJ2NvZGUnXVxuXG5jb25zdCBiYXNlQ2xhc3MgPSAncmljaC10ZXh0J1xuXG5kZWNsYXJlIG1vZHVsZSAnc2xhdGUnIHtcbiAgaW50ZXJmYWNlIEN1c3RvbVR5cGVzIHtcbiAgICBFZGl0b3I6IEJhc2VFZGl0b3IgJiBSZWFjdEVkaXRvciAmIEhpc3RvcnlFZGl0b3JcbiAgICBFbGVtZW50OiBFbGVtZW50Tm9kZVxuICAgIFRleHQ6IFRleHROb2RlXG4gIH1cbn1cblxuY29uc3QgUmljaFRleHQ6IFJlYWN0LkZDPEZpZWxkUHJvcHM+ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBuYW1lLFxuICAgIGFkbWluOiB7XG4gICAgICBjbGFzc05hbWUsXG4gICAgICBjb25kaXRpb24sXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIGhpZGVHdXR0ZXIsXG4gICAgICBwbGFjZWhvbGRlcixcbiAgICAgIHJlYWRPbmx5LFxuICAgICAgc3R5bGUsXG4gICAgICB3aWR0aCxcbiAgICB9ID0ge1xuICAgICAgY2xhc3NOYW1lOiB1bmRlZmluZWQsXG4gICAgICBjb25kaXRpb246IHVuZGVmaW5lZCxcbiAgICAgIGRlc2NyaXB0aW9uOiB1bmRlZmluZWQsXG4gICAgICBoaWRlR3V0dGVyOiB1bmRlZmluZWQsXG4gICAgICBwbGFjZWhvbGRlcjogdW5kZWZpbmVkLFxuICAgICAgcmVhZE9ubHk6IHVuZGVmaW5lZCxcbiAgICAgIHN0eWxlOiB1bmRlZmluZWQsXG4gICAgICB3aWR0aDogdW5kZWZpbmVkLFxuICAgIH0sXG4gICAgYWRtaW4sXG4gICAgZGVmYXVsdFZhbHVlOiBkZWZhdWx0VmFsdWVGcm9tUHJvcHMsXG4gICAgbGFiZWwsXG4gICAgcGF0aDogcGF0aEZyb21Qcm9wcyxcbiAgICByZXF1aXJlZCxcbiAgICB2YWxpZGF0ZSA9IHJpY2hUZXh0VmFsaWRhdGUsXG4gIH0gPSBwcm9wc1xuXG4gIGNvbnN0IGVsZW1lbnRzOiBSaWNoVGV4dEVsZW1lbnRbXSA9IGFkbWluPy5lbGVtZW50cyB8fCBkZWZhdWx0RWxlbWVudHNcbiAgY29uc3QgbGVhdmVzOiBSaWNoVGV4dExlYWZbXSA9IGFkbWluPy5sZWF2ZXMgfHwgZGVmYXVsdExlYXZlc1xuXG4gIGNvbnN0IHBhdGggPSBwYXRoRnJvbVByb3BzIHx8IG5hbWVcblxuICBjb25zdCB7IGkxOG4gfSA9IHVzZVRyYW5zbGF0aW9uKClcbiAgY29uc3QgW2xvYWRlZCwgc2V0TG9hZGVkXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZW5hYmxlZEVsZW1lbnRzLCBzZXRFbmFibGVkRWxlbWVudHNdID0gdXNlU3RhdGUoe30pXG4gIGNvbnN0IFtlbmFibGVkTGVhdmVzLCBzZXRFbmFibGVkTGVhdmVzXSA9IHVzZVN0YXRlKHt9KVxuICBjb25zdCBlZGl0b3JSZWYgPSB1c2VSZWYobnVsbClcbiAgY29uc3QgdG9vbGJhclJlZiA9IHVzZVJlZihudWxsKVxuXG4gIGNvbnN0IGRyYXdlckRlcHRoID0gdXNlRWRpdERlcHRoKClcbiAgY29uc3QgZHJhd2VySXNPcGVuID0gZHJhd2VyRGVwdGggPiAxXG5cbiAgY29uc3QgcmVuZGVyRWxlbWVudCA9IHVzZUNhbGxiYWNrKFxuICAgICh7IGF0dHJpYnV0ZXMsIGNoaWxkcmVuLCBlbGVtZW50IH0pID0+IHtcbiAgICAgIGNvbnN0IG1hdGNoZWRFbGVtZW50ID0gZW5hYmxlZEVsZW1lbnRzW2VsZW1lbnQudHlwZV1cbiAgICAgIGNvbnN0IEVsZW1lbnQgPSBtYXRjaGVkRWxlbWVudD8uRWxlbWVudFxuXG4gICAgICBsZXQgYXR0ciA9IHsgLi4uYXR0cmlidXRlcyB9XG5cbiAgICAgIC8vIHRoaXMgY29udmVydHMgdGV4dCBhbGlnbm1lbnQgdG8gbWFyZ2luIHdoZW4gZGVhbGluZyB3aXRoIHZvaWQgZWxlbWVudHNcbiAgICAgIGlmIChlbGVtZW50LnRleHRBbGlnbikge1xuICAgICAgICBpZiAoZWxlbWVudC50eXBlID09PSAncmVsYXRpb25zaGlwJyB8fCBlbGVtZW50LnR5cGUgPT09ICd1cGxvYWQnKSB7XG4gICAgICAgICAgc3dpdGNoIChlbGVtZW50LnRleHRBbGlnbikge1xuICAgICAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgICAgIGF0dHIgPSB7IC4uLmF0dHIsIHN0eWxlOiB7IG1hcmdpblJpZ2h0OiAnYXV0bycgfSB9XG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgICAgIGF0dHIgPSB7IC4uLmF0dHIsIHN0eWxlOiB7IG1hcmdpbkxlZnQ6ICdhdXRvJyB9IH1cbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIGNhc2UgJ2NlbnRlcic6XG4gICAgICAgICAgICAgIGF0dHIgPSB7IC4uLmF0dHIsIHN0eWxlOiB7IG1hcmdpbkxlZnQ6ICdhdXRvJywgbWFyZ2luUmlnaHQ6ICdhdXRvJyB9IH1cbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIGF0dHIgPSB7IC4uLmF0dHIsIHN0eWxlOiB7IHRleHRBbGlnbjogZWxlbWVudC50ZXh0QWxpZ24gfSB9XG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQudHlwZSA9PT0gJ2xpJykge1xuICAgICAgICAgIHN3aXRjaCAoZWxlbWVudC50ZXh0QWxpZ24pIHtcbiAgICAgICAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgICAgICAgYXR0ciA9IHsgLi4uYXR0ciwgc3R5bGU6IHsgbGlzdFN0eWxlUG9zaXRpb246ICdpbnNpZGUnLCB0ZXh0QWxpZ246ICdyaWdodCcgfSB9XG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICBjYXNlICdjZW50ZXInOlxuICAgICAgICAgICAgICBhdHRyID0geyAuLi5hdHRyLCBzdHlsZTogeyBsaXN0U3R5bGVQb3NpdGlvbjogJ2luc2lkZScsIHRleHRBbGlnbjogJ2NlbnRlcicgfSB9XG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIGF0dHIgPSB7IC4uLmF0dHIsIHN0eWxlOiB7IGxpc3RTdHlsZVBvc2l0aW9uOiAnb3V0c2lkZScsIHRleHRBbGlnbjogJ2xlZnQnIH0gfVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhdHRyID0geyAuLi5hdHRyLCBzdHlsZTogeyB0ZXh0QWxpZ246IGVsZW1lbnQudGV4dEFsaWduIH0gfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGVsID0gKFxuICAgICAgICAgIDxFbGVtZW50XG4gICAgICAgICAgICBhdHRyaWJ1dGVzPXthdHRyfVxuICAgICAgICAgICAgZWRpdG9yUmVmPXtlZGl0b3JSZWZ9XG4gICAgICAgICAgICBlbGVtZW50PXtlbGVtZW50fVxuICAgICAgICAgICAgZmllbGRQcm9wcz17cHJvcHN9XG4gICAgICAgICAgICBwYXRoPXtwYXRofVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICA8L0VsZW1lbnQ+XG4gICAgICAgIClcblxuICAgICAgICByZXR1cm4gZWxcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIDxkaXYgey4uLmF0dHJ9PntjaGlsZHJlbn08L2Rpdj5cbiAgICB9LFxuICAgIFtlbmFibGVkRWxlbWVudHMsIHBhdGgsIHByb3BzXSxcbiAgKVxuXG4gIGNvbnN0IHJlbmRlckxlYWYgPSB1c2VDYWxsYmFjayhcbiAgICAoeyBhdHRyaWJ1dGVzLCBjaGlsZHJlbiwgbGVhZiB9KSA9PiB7XG4gICAgICBjb25zdCBtYXRjaGVkTGVhdmVzID0gT2JqZWN0LmVudHJpZXMoZW5hYmxlZExlYXZlcykuZmlsdGVyKChbbGVhZk5hbWVdKSA9PiBsZWFmW2xlYWZOYW1lXSlcblxuICAgICAgaWYgKG1hdGNoZWRMZWF2ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gbWF0Y2hlZExlYXZlcy5yZWR1Y2UoXG4gICAgICAgICAgKHJlc3VsdCwgW2xlYWZOYW1lXSwgaSkgPT4ge1xuICAgICAgICAgICAgaWYgKGVuYWJsZWRMZWF2ZXNbbGVhZk5hbWVdPy5MZWFmKSB7XG4gICAgICAgICAgICAgIGNvbnN0IExlYWYgPSBlbmFibGVkTGVhdmVzW2xlYWZOYW1lXT8uTGVhZlxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxMZWFmIGVkaXRvclJlZj17ZWRpdG9yUmVmfSBmaWVsZFByb3BzPXtwcm9wc30ga2V5PXtpfSBsZWFmPXtsZWFmfSBwYXRoPXtwYXRofT5cbiAgICAgICAgICAgICAgICAgIHtyZXN1bHR9XG4gICAgICAgICAgICAgICAgPC9MZWFmPlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgICB9LFxuICAgICAgICAgIDxzcGFuIHsuLi5hdHRyaWJ1dGVzfT57Y2hpbGRyZW59PC9zcGFuPixcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gPHNwYW4gey4uLmF0dHJpYnV0ZXN9PntjaGlsZHJlbn08L3NwYW4+XG4gICAgfSxcbiAgICBbZW5hYmxlZExlYXZlcywgcGF0aCwgcHJvcHNdLFxuICApXG5cbiAgY29uc3QgbWVtb2l6ZWRWYWxpZGF0ZSA9IHVzZUNhbGxiYWNrKFxuICAgICh2YWx1ZSwgdmFsaWRhdGlvbk9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiB2YWxpZGF0ZSh2YWx1ZSwgeyAuLi52YWxpZGF0aW9uT3B0aW9ucywgcmVxdWlyZWQgfSlcbiAgICB9LFxuICAgIFt2YWxpZGF0ZSwgcmVxdWlyZWRdLFxuICApXG5cbiAgY29uc3QgZmllbGRUeXBlID0gdXNlRmllbGQoe1xuICAgIGNvbmRpdGlvbixcbiAgICBwYXRoLFxuICAgIHZhbGlkYXRlOiBtZW1vaXplZFZhbGlkYXRlLFxuICB9KVxuXG4gIGNvbnN0IHsgZXJyb3JNZXNzYWdlLCBpbml0aWFsVmFsdWUsIHNldFZhbHVlLCBzaG93RXJyb3IsIHZhbHVlIH0gPSBmaWVsZFR5cGVcblxuICBjb25zdCBjbGFzc2VzID0gW1xuICAgIGJhc2VDbGFzcyxcbiAgICAnZmllbGQtdHlwZScsXG4gICAgY2xhc3NOYW1lLFxuICAgIHNob3dFcnJvciAmJiAnZXJyb3InLFxuICAgIHJlYWRPbmx5ICYmIGAke2Jhc2VDbGFzc30tLXJlYWQtb25seWAsXG4gICAgIWhpZGVHdXR0ZXIgJiYgYCR7YmFzZUNsYXNzfS0tZ3V0dGVyYCxcbiAgXVxuICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAuam9pbignICcpXG5cbiAgY29uc3QgZWRpdG9yID0gdXNlTWVtbygoKSA9PiB7XG4gICAgbGV0IENyZWF0ZWRFZGl0b3IgPSB3aXRoRW50ZXJCcmVha091dCh3aXRoSGlzdG9yeSh3aXRoUmVhY3QoY3JlYXRlRWRpdG9yKCkpKSlcblxuICAgIENyZWF0ZWRFZGl0b3IgPSB3aXRoSFRNTChDcmVhdGVkRWRpdG9yKVxuICAgIENyZWF0ZWRFZGl0b3IgPSBlbmFibGVQbHVnaW5zKENyZWF0ZWRFZGl0b3IsIGVsZW1lbnRzKVxuICAgIENyZWF0ZWRFZGl0b3IgPSBlbmFibGVQbHVnaW5zKENyZWF0ZWRFZGl0b3IsIGxlYXZlcylcblxuICAgIHJldHVybiBDcmVhdGVkRWRpdG9yXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbZWxlbWVudHMsIGxlYXZlcywgcGF0aF0pXG5cbiAgLy8gQWxsIHNsYXRlIGNoYW5nZXMgZmlyZSB0aGUgb25DaGFuZ2UgZXZlbnRcbiAgLy8gaW5jbHVkaW5nIHNlbGVjdGlvbiBjaGFuZ2VzXG4gIC8vIHNvIHdlIHdpbGwgZmlsdGVyIHRoZSBzZXRfc2VsZWN0aW9uIG9wZXJhdGlvbnMgb3V0XG4gIC8vIGFuZCBvbmx5IGZpcmUgc2V0VmFsdWUgd2hlbiBvbkNoYW5nZSBpcyBiZWNhdXNlIG9mIHZhbHVlXG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgICh2YWw6IHVua25vd24pID0+IHtcbiAgICAgIGNvbnN0IG9wcyA9IGVkaXRvci5vcGVyYXRpb25zLmZpbHRlcigobzogQmFzZU9wZXJhdGlvbikgPT4ge1xuICAgICAgICBpZiAobykge1xuICAgICAgICAgIHJldHVybiBvLnR5cGUgIT09ICdzZXRfc2VsZWN0aW9uJ1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfSlcblxuICAgICAgaWYgKG9wcyAmJiBBcnJheS5pc0FycmF5KG9wcykgJiYgb3BzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKCFyZWFkT25seSAmJiB2YWwgIT09IGRlZmF1bHRSaWNoVGV4dFZhbHVlICYmIHZhbCAhPT0gdmFsdWUpIHtcbiAgICAgICAgICBzZXRWYWx1ZSh2YWwpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFtlZGl0b3Iub3BlcmF0aW9ucywgcmVhZE9ubHksIHNldFZhbHVlLCB2YWx1ZV0sXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghbG9hZGVkKSB7XG4gICAgICBjb25zdCBtZXJnZWRFbGVtZW50cyA9IG1lcmdlQ3VzdG9tRnVuY3Rpb25zKGVsZW1lbnRzLCBlbGVtZW50VHlwZXMpXG4gICAgICBjb25zdCBtZXJnZWRMZWF2ZXMgPSBtZXJnZUN1c3RvbUZ1bmN0aW9ucyhsZWF2ZXMsIGxlYWZUeXBlcylcblxuICAgICAgc2V0RW5hYmxlZEVsZW1lbnRzKG1lcmdlZEVsZW1lbnRzKVxuICAgICAgc2V0RW5hYmxlZExlYXZlcyhtZXJnZWRMZWF2ZXMpXG5cbiAgICAgIHNldExvYWRlZCh0cnVlKVxuICAgIH1cbiAgfSwgW2xvYWRlZCwgZWxlbWVudHMsIGxlYXZlc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmdW5jdGlvbiBzZXRDbGlja2FibGVTdGF0ZShjbGlja1N0YXRlOiAnZGlzYWJsZWQnIHwgJ2VuYWJsZWQnKSB7XG4gICAgICBjb25zdCBzZWxlY3RvcnMgPSAnYnV0dG9uLCBhLCBbcm9sZT1cImJ1dHRvblwiXSdcbiAgICAgIGNvbnN0IHRvb2xiYXJCdXR0b25zOiAoSFRNTEFuY2hvckVsZW1lbnQgfCBIVE1MQnV0dG9uRWxlbWVudClbXSA9XG4gICAgICAgIHRvb2xiYXJSZWYuY3VycmVudD8ucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcnMpXG5cbiAgICAgIDsodG9vbGJhckJ1dHRvbnMgfHwgW10pLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzQnV0dG9uID0gY2hpbGQudGFnTmFtZSA9PT0gJ0JVVFRPTidcbiAgICAgICAgY29uc3QgaXNEaXNhYmxpbmcgPSBjbGlja1N0YXRlID09PSAnZGlzYWJsZWQnXG4gICAgICAgIGNoaWxkLnNldEF0dHJpYnV0ZSgndGFiSW5kZXgnLCBpc0Rpc2FibGluZyA/ICctMScgOiAnMCcpXG4gICAgICAgIGlmIChpc0J1dHRvbikgY2hpbGQuc2V0QXR0cmlidXRlKCdkaXNhYmxlZCcsIGlzRGlzYWJsaW5nID8gJ2Rpc2FibGVkJyA6IG51bGwpXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChsb2FkZWQgJiYgcmVhZE9ubHkpIHtcbiAgICAgIHNldENsaWNrYWJsZVN0YXRlKCdkaXNhYmxlZCcpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChsb2FkZWQgJiYgcmVhZE9ubHkpIHtcbiAgICAgICAgc2V0Q2xpY2thYmxlU3RhdGUoJ2VuYWJsZWQnKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2xvYWRlZCwgcmVhZE9ubHldKVxuXG4gIC8vIHVzZUVmZmVjdCgoKSA9PiB7XG4gIC8vICAgLy8gSWYgdGhlcmUgaXMgYSBjaGFuZ2UgdG8gdGhlIGluaXRpYWwgdmFsdWUsIHdlIG5lZWQgdG8gcmVzZXQgU2xhdGUgaGlzdG9yeVxuICAvLyAgIC8vIGFuZCBjbGVhciBzZWxlY3Rpb24gYmVjYXVzZSB0aGUgb2xkIHNlbGVjdGlvbiBtYXkgbm8gbG9uZ2VyIGJlIHZhbGlkXG4gIC8vICAgLy8gYXMgcmV0dXJuZWQgSlNPTiBtYXkgYmUgbW9kaWZpZWQgaW4gaG9va3MgYW5kIGhhdmUgYSBkaWZmZXJlbnQgc2hhcGVcbiAgLy8gICBpZiAoZWRpdG9yLnNlbGVjdGlvbikge1xuICAvLyAgICAgY29uc29sZS5sb2coJ2Rlc2VsZWN0aW5nJyk7XG4gIC8vICAgICBSZWFjdEVkaXRvci5kZXNlbGVjdChlZGl0b3IpO1xuICAvLyAgIH1cbiAgLy8gfSwgW3BhdGgsIGVkaXRvcl0pO1xuXG4gIGlmICghbG9hZGVkKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGxldCB2YWx1ZVRvUmVuZGVyID0gdmFsdWVcblxuICBpZiAodHlwZW9mIHZhbHVlVG9SZW5kZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhcnNlZEpTT04gPSBKU09OLnBhcnNlKHZhbHVlVG9SZW5kZXIpXG4gICAgICB2YWx1ZVRvUmVuZGVyID0gcGFyc2VkSlNPTlxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdmFsdWVUb1JlbmRlciA9IG51bGxcbiAgICB9XG4gIH1cblxuICBpZiAoIXZhbHVlVG9SZW5kZXIpIHZhbHVlVG9SZW5kZXIgPSBkZWZhdWx0VmFsdWVGcm9tUHJvcHMgfHwgZGVmYXVsdFJpY2hUZXh0VmFsdWVcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlc31cbiAgICAgIHN0eWxlPXt7XG4gICAgICAgIC4uLnN0eWxlLFxuICAgICAgICB3aWR0aCxcbiAgICAgIH19XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX3dyYXBgfT5cbiAgICAgICAgPEVycm9yIG1lc3NhZ2U9e2Vycm9yTWVzc2FnZX0gc2hvd0Vycm9yPXtzaG93RXJyb3J9IC8+XG4gICAgICAgIDxMYWJlbCBodG1sRm9yPXtgZmllbGQtJHtwYXRoLnJlcGxhY2UoL1xcLi9nLCAnX18nKX1gfSBsYWJlbD17bGFiZWx9IHJlcXVpcmVkPXtyZXF1aXJlZH0gLz5cbiAgICAgICAgPFNsYXRlXG4gICAgICAgICAgZWRpdG9yPXtlZGl0b3J9XG4gICAgICAgICAga2V5PXtKU09OLnN0cmluZ2lmeSh7IGluaXRpYWxWYWx1ZSwgcGF0aCB9KX1cbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIHZhbHVlPXt2YWx1ZVRvUmVuZGVyIGFzIGFueVtdfVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX3dyYXBwZXJgfT5cbiAgICAgICAgICAgIHtlbGVtZW50cz8ubGVuZ3RoICsgbGVhdmVzPy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17W2Ake2Jhc2VDbGFzc31fX3Rvb2xiYXJgLCBkcmF3ZXJJc09wZW4gJiYgYCR7YmFzZUNsYXNzfV9fZHJhd2VySXNPcGVuYF1cbiAgICAgICAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICAgICAgICAgIC5qb2luKCcgJyl9XG4gICAgICAgICAgICAgICAgcmVmPXt0b29sYmFyUmVmfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX3Rvb2xiYXItd3JhcGB9PlxuICAgICAgICAgICAgICAgICAge2VsZW1lbnRzLm1hcCgoZWxlbWVudCwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZWxlbWVudE5hbWU6IHN0cmluZ1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGVsZW1lbnQgPT09ICdvYmplY3QnICYmIGVsZW1lbnQ/Lm5hbWUpIGVsZW1lbnROYW1lID0gZWxlbWVudC5uYW1lXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZWxlbWVudCA9PT0gJ3N0cmluZycpIGVsZW1lbnROYW1lID0gZWxlbWVudFxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRUeXBlID0gZW5hYmxlZEVsZW1lbnRzW2VsZW1lbnROYW1lXVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBCdXR0b24gPSBlbGVtZW50VHlwZT8uQnV0dG9uXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKEJ1dHRvbikge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8QnV0dG9uIGZpZWxkUHJvcHM9e3Byb3BzfSBrZXk9e2l9IHBhdGg9e3BhdGh9IC8+XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICB7bGVhdmVzLm1hcCgobGVhZiwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbGVhZk5hbWU6IHN0cmluZ1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGxlYWYgPT09ICdvYmplY3QnICYmIGxlYWY/Lm5hbWUpIGxlYWZOYW1lID0gbGVhZi5uYW1lXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgbGVhZiA9PT0gJ3N0cmluZycpIGxlYWZOYW1lID0gbGVhZlxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxlYWZUeXBlID0gZW5hYmxlZExlYXZlc1tsZWFmTmFtZV1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgQnV0dG9uID0gbGVhZlR5cGU/LkJ1dHRvblxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChCdXR0b24pIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPEJ1dHRvbiBmaWVsZFByb3BzPXtwcm9wc30ga2V5PXtpfSBwYXRoPXtwYXRofSAvPlxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fZWRpdG9yYH0gcmVmPXtlZGl0b3JSZWZ9PlxuICAgICAgICAgICAgICA8RWRpdGFibGVcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2lucHV0YH1cbiAgICAgICAgICAgICAgICBpZD17YGZpZWxkLSR7cGF0aC5yZXBsYWNlKC9cXC4vZywgJ19fJyl9YH1cbiAgICAgICAgICAgICAgICBvbktleURvd249eyhldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgZWRpdG9yLmluc2VydFRleHQoJ1xcbicpXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50ID0gTm9kZS5kZXNjZW5kYW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yLnNlbGVjdGlvbi5hbmNob3IucGF0aC5zbGljZSgwLCAtMSksXG4gICAgICAgICAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKFNsYXRlRWxlbWVudC5pc0VsZW1lbnQoc2VsZWN0ZWRFbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWxsb3cgaGFyZCBlbnRlciB0byBcImJyZWFrIG91dFwiIG9mIGNlcnRhaW4gZWxlbWVudHNcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlZGl0b3Iuc2hvdWxkQnJlYWtPdXRPbkVudGVyKHNlbGVjdGVkRWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZExlYWYgPSBOb2RlLmRlc2NlbmRhbnQoZWRpdG9yLCBlZGl0b3Iuc2VsZWN0aW9uLmFuY2hvci5wYXRoKVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0LmlzVGV4dChzZWxlY3RlZExlYWYpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nKHNlbGVjdGVkTGVhZi50ZXh0KS5sZW5ndGggPT09IGVkaXRvci5zZWxlY3Rpb24uYW5jaG9yLm9mZnNldFxuICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLmluc2VydE5vZGVzKGVkaXRvciwgeyBjaGlsZHJlbjogW3sgdGV4dDogJycgfV0gfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNwbGl0Tm9kZXMoZWRpdG9yKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZXMoZWRpdG9yLCB7fSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQmFja3NwYWNlJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnQgPSBOb2RlLmRlc2NlbmRhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgICAgICAgICAgIGVkaXRvci5zZWxlY3Rpb24uYW5jaG9yLnBhdGguc2xpY2UoMCwgLTEpLFxuICAgICAgICAgICAgICAgICAgICApXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKFNsYXRlRWxlbWVudC5pc0VsZW1lbnQoc2VsZWN0ZWRFbGVtZW50KSAmJiBzZWxlY3RlZEVsZW1lbnQudHlwZSA9PT0gJ2xpJykge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkTGVhZiA9IE5vZGUuZGVzY2VuZGFudChlZGl0b3IsIGVkaXRvci5zZWxlY3Rpb24uYW5jaG9yLnBhdGgpXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKFRleHQuaXNUZXh0KHNlbGVjdGVkTGVhZikgJiYgU3RyaW5nKHNlbGVjdGVkTGVhZi50ZXh0KS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMudW53cmFwTm9kZXMoZWRpdG9yLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoOiAobikgPT4gU2xhdGVFbGVtZW50LmlzRWxlbWVudChuKSAmJiBsaXN0VHlwZXMuaW5jbHVkZXMobi50eXBlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogJ2xvd2VzdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGl0OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlcyhlZGl0b3IsIHsgdHlwZTogdW5kZWZpbmVkIH0pXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVkaXRvci5pc1ZvaWQoc2VsZWN0ZWRFbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMucmVtb3ZlTm9kZXMoZWRpdG9yKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGhvdGtleXMpLmZvckVhY2goKGhvdGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNIb3RrZXkoaG90a2V5LCBldmVudCBhcyBhbnkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hcmsgPSBob3RrZXlzW2hvdGtleV1cbiAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVMZWFmKGVkaXRvciwgbWFyaylcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtnZXRUcmFuc2xhdGlvbihwbGFjZWhvbGRlciwgaTE4bil9XG4gICAgICAgICAgICAgICAgcmVhZE9ubHk9e3JlYWRPbmx5fVxuICAgICAgICAgICAgICAgIHJlbmRlckVsZW1lbnQ9e3JlbmRlckVsZW1lbnR9XG4gICAgICAgICAgICAgICAgcmVuZGVyTGVhZj17cmVuZGVyTGVhZn1cbiAgICAgICAgICAgICAgICBzcGVsbENoZWNrXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9TbGF0ZT5cbiAgICAgICAgPEZpZWxkRGVzY3JpcHRpb24gZGVzY3JpcHRpb249e2Rlc2NyaXB0aW9ufSBwYXRoPXtwYXRofSB2YWx1ZT17dmFsdWV9IC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKVxufVxuZXhwb3J0IGRlZmF1bHQgd2l0aENvbmRpdGlvbihSaWNoVGV4dClcbiJdLCJuYW1lcyI6WyJkZWZhdWx0RWxlbWVudHMiLCJkZWZhdWx0TGVhdmVzIiwiYmFzZUNsYXNzIiwiUmljaFRleHQiLCJwcm9wcyIsIm5hbWUiLCJhZG1pbiIsImNsYXNzTmFtZSIsImNvbmRpdGlvbiIsImRlc2NyaXB0aW9uIiwiaGlkZUd1dHRlciIsInBsYWNlaG9sZGVyIiwicmVhZE9ubHkiLCJzdHlsZSIsIndpZHRoIiwidW5kZWZpbmVkIiwiZGVmYXVsdFZhbHVlIiwiZGVmYXVsdFZhbHVlRnJvbVByb3BzIiwibGFiZWwiLCJwYXRoIiwicGF0aEZyb21Qcm9wcyIsInJlcXVpcmVkIiwidmFsaWRhdGUiLCJyaWNoVGV4dFZhbGlkYXRlIiwiZWxlbWVudHMiLCJsZWF2ZXMiLCJpMThuIiwidXNlVHJhbnNsYXRpb24iLCJsb2FkZWQiLCJzZXRMb2FkZWQiLCJ1c2VTdGF0ZSIsImVuYWJsZWRFbGVtZW50cyIsInNldEVuYWJsZWRFbGVtZW50cyIsImVuYWJsZWRMZWF2ZXMiLCJzZXRFbmFibGVkTGVhdmVzIiwiZWRpdG9yUmVmIiwidXNlUmVmIiwidG9vbGJhclJlZiIsImRyYXdlckRlcHRoIiwidXNlRWRpdERlcHRoIiwiZHJhd2VySXNPcGVuIiwicmVuZGVyRWxlbWVudCIsInVzZUNhbGxiYWNrIiwiYXR0cmlidXRlcyIsImNoaWxkcmVuIiwiZWxlbWVudCIsIm1hdGNoZWRFbGVtZW50IiwidHlwZSIsIkVsZW1lbnQiLCJhdHRyIiwidGV4dEFsaWduIiwibWFyZ2luUmlnaHQiLCJtYXJnaW5MZWZ0IiwibGlzdFN0eWxlUG9zaXRpb24iLCJlbCIsImZpZWxkUHJvcHMiLCJkaXYiLCJyZW5kZXJMZWFmIiwibGVhZiIsIm1hdGNoZWRMZWF2ZXMiLCJPYmplY3QiLCJlbnRyaWVzIiwiZmlsdGVyIiwibGVhZk5hbWUiLCJsZW5ndGgiLCJyZWR1Y2UiLCJyZXN1bHQiLCJpIiwiTGVhZiIsImtleSIsInNwYW4iLCJtZW1vaXplZFZhbGlkYXRlIiwidmFsdWUiLCJ2YWxpZGF0aW9uT3B0aW9ucyIsImZpZWxkVHlwZSIsInVzZUZpZWxkIiwiZXJyb3JNZXNzYWdlIiwiaW5pdGlhbFZhbHVlIiwic2V0VmFsdWUiLCJzaG93RXJyb3IiLCJjbGFzc2VzIiwiQm9vbGVhbiIsImpvaW4iLCJlZGl0b3IiLCJ1c2VNZW1vIiwiQ3JlYXRlZEVkaXRvciIsIndpdGhFbnRlckJyZWFrT3V0Iiwid2l0aEhpc3RvcnkiLCJ3aXRoUmVhY3QiLCJjcmVhdGVFZGl0b3IiLCJ3aXRoSFRNTCIsImVuYWJsZVBsdWdpbnMiLCJoYW5kbGVDaGFuZ2UiLCJ2YWwiLCJvcHMiLCJvcGVyYXRpb25zIiwibyIsIkFycmF5IiwiaXNBcnJheSIsImRlZmF1bHRSaWNoVGV4dFZhbHVlIiwidXNlRWZmZWN0IiwibWVyZ2VkRWxlbWVudHMiLCJtZXJnZUN1c3RvbUZ1bmN0aW9ucyIsImVsZW1lbnRUeXBlcyIsIm1lcmdlZExlYXZlcyIsImxlYWZUeXBlcyIsInNldENsaWNrYWJsZVN0YXRlIiwiY2xpY2tTdGF0ZSIsInNlbGVjdG9ycyIsInRvb2xiYXJCdXR0b25zIiwiY3VycmVudCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJmb3JFYWNoIiwiY2hpbGQiLCJpc0J1dHRvbiIsInRhZ05hbWUiLCJpc0Rpc2FibGluZyIsInNldEF0dHJpYnV0ZSIsInZhbHVlVG9SZW5kZXIiLCJwYXJzZWRKU09OIiwiSlNPTiIsInBhcnNlIiwiZXJyIiwiRXJyb3IiLCJtZXNzYWdlIiwiTGFiZWwiLCJodG1sRm9yIiwicmVwbGFjZSIsIlNsYXRlIiwic3RyaW5naWZ5Iiwib25DaGFuZ2UiLCJyZWYiLCJtYXAiLCJlbGVtZW50TmFtZSIsImVsZW1lbnRUeXBlIiwiQnV0dG9uIiwibGVhZlR5cGUiLCJFZGl0YWJsZSIsImlkIiwib25LZXlEb3duIiwiZXZlbnQiLCJzaGlmdEtleSIsInByZXZlbnREZWZhdWx0IiwiaW5zZXJ0VGV4dCIsInNlbGVjdGVkRWxlbWVudCIsIk5vZGUiLCJkZXNjZW5kYW50Iiwic2VsZWN0aW9uIiwiYW5jaG9yIiwic2xpY2UiLCJTbGF0ZUVsZW1lbnQiLCJpc0VsZW1lbnQiLCJzaG91bGRCcmVha091dE9uRW50ZXIiLCJzZWxlY3RlZExlYWYiLCJUZXh0IiwiaXNUZXh0IiwiU3RyaW5nIiwidGV4dCIsIm9mZnNldCIsIlRyYW5zZm9ybXMiLCJpbnNlcnROb2RlcyIsInNwbGl0Tm9kZXMiLCJzZXROb2RlcyIsInVud3JhcE5vZGVzIiwibWF0Y2giLCJuIiwibGlzdFR5cGVzIiwiaW5jbHVkZXMiLCJtb2RlIiwic3BsaXQiLCJpc1ZvaWQiLCJyZW1vdmVOb2RlcyIsImtleXMiLCJob3RrZXlzIiwiaG90a2V5IiwiaXNIb3RrZXkiLCJtYXJrIiwidG9nZ2xlTGVhZiIsImdldFRyYW5zbGF0aW9uIiwic3BlbGxDaGVjayIsIkZpZWxkRGVzY3JpcHRpb24iLCJ3aXRoQ29uZGl0aW9uIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7K0JBb2NBOzs7ZUFBQTs7O2lFQTlicUI7dUJBQ21EOzJCQUMzQzs0QkFDRTsrREFDMEM7OEJBQzFDO3VCQUMrQzs4QkFDbEQ7NEJBQ2U7OEJBSU47NEJBQ0o7aUVBQ1I7a0VBQ0g7c0VBQ0k7Z0VBQ047UUFDYjsrREFDZTsrREFDQzs2RUFDVTswRUFDSDtpRUFDVDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXJCLE1BQU1BLGtCQUFxQztJQUN6QztJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7Q0FDRDtBQUNELE1BQU1DLGdCQUFnQztJQUFDO0lBQVE7SUFBVTtJQUFhO0lBQWlCO0NBQU87QUFFOUYsTUFBTUMsWUFBWTtBQVVsQixNQUFNQyxXQUFpQyxDQUFDQztJQUN0QyxNQUFNLEVBQ0pDLElBQUksRUFDSkMsT0FBTyxFQUNMQyxTQUFTLEVBQ1RDLFNBQVMsRUFDVEMsV0FBVyxFQUNYQyxVQUFVLEVBQ1ZDLFdBQVcsRUFDWEMsUUFBUSxFQUNSQyxLQUFLLEVBQ0xDLEtBQUssRUFDTixHQUFHO1FBQ0ZQLFdBQVdRO1FBQ1hQLFdBQVdPO1FBQ1hOLGFBQWFNO1FBQ2JMLFlBQVlLO1FBQ1pKLGFBQWFJO1FBQ2JILFVB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
|
|
432
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWVsZC9SaWNoVGV4dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCB0eXBlIHsgRm9ybUZpZWxkQmFzZSB9IGZyb20gJ0BwYXlsb2FkY21zL3VpL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBCYXNlRWRpdG9yLCBCYXNlT3BlcmF0aW9uIH0gZnJvbSAnc2xhdGUnXG5pbXBvcnQgdHlwZSB7IEhpc3RvcnlFZGl0b3IgfSBmcm9tICdzbGF0ZS1oaXN0b3J5J1xuaW1wb3J0IHR5cGUgeyBSZWFjdEVkaXRvciB9IGZyb20gJ3NsYXRlLXJlYWN0J1xuXG5pbXBvcnQgeyBnZXRUcmFuc2xhdGlvbiB9IGZyb20gJ0BwYXlsb2FkY21zL3RyYW5zbGF0aW9ucydcbmltcG9ydCB7IHVzZUVkaXREZXB0aCwgdXNlRmllbGQsIHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAnQHBheWxvYWRjbXMvdWknXG5pbXBvcnQgeyB3aXRoQ29uZGl0aW9uIH0gZnJvbSAnQHBheWxvYWRjbXMvdWkvZm9ybXMnXG5pbXBvcnQgaXNIb3RrZXkgZnJvbSAnaXMtaG90a2V5J1xuaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgTm9kZSwgRWxlbWVudCBhcyBTbGF0ZUVsZW1lbnQsIFRleHQsIFRyYW5zZm9ybXMsIGNyZWF0ZUVkaXRvciB9IGZyb20gJ3NsYXRlJ1xuaW1wb3J0IHsgd2l0aEhpc3RvcnkgfSBmcm9tICdzbGF0ZS1oaXN0b3J5J1xuaW1wb3J0IHsgRWRpdGFibGUsIFNsYXRlLCB3aXRoUmVhY3QgfSBmcm9tICdzbGF0ZS1yZWFjdCdcblxuaW1wb3J0IHR5cGUgeyBFbGVtZW50Tm9kZSwgUmljaFRleHRQbHVnaW4sIFRleHROb2RlIH0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEVuYWJsZWRGZWF0dXJlcyB9IGZyb20gJy4vdHlwZXMnXG5cbmltcG9ydCB7IGRlZmF1bHRSaWNoVGV4dFZhbHVlIH0gZnJvbSAnLi4vZGF0YS9kZWZhdWx0VmFsdWUnXG5pbXBvcnQgeyByaWNoVGV4dFZhbGlkYXRlIH0gZnJvbSAnLi4vZGF0YS92YWxpZGF0aW9uJ1xuaW1wb3J0IGxpc3RUeXBlcyBmcm9tICcuL2VsZW1lbnRzL2xpc3RUeXBlcydcbmltcG9ydCBob3RrZXlzIGZyb20gJy4vaG90a2V5cydcbmltcG9ydCAnLi9pbmRleC5zY3NzJ1xuaW1wb3J0IHRvZ2dsZUxlYWYgZnJvbSAnLi9sZWF2ZXMvdG9nZ2xlJ1xuaW1wb3J0IHdpdGhFbnRlckJyZWFrT3V0IGZyb20gJy4vcGx1Z2lucy93aXRoRW50ZXJCcmVha091dCdcbmltcG9ydCB3aXRoSFRNTCBmcm9tICcuL3BsdWdpbnMvd2l0aEhUTUwnXG5pbXBvcnQgeyBFbGVtZW50QnV0dG9uUHJvdmlkZXIgfSBmcm9tICcuL3Byb3ZpZGVycy9FbGVtZW50QnV0dG9uUHJvdmlkZXInXG5pbXBvcnQgeyBFbGVtZW50UHJvdmlkZXIgfSBmcm9tICcuL3Byb3ZpZGVycy9FbGVtZW50UHJvdmlkZXInXG5pbXBvcnQgeyBMZWFmQnV0dG9uUHJvdmlkZXIgfSBmcm9tICcuL3Byb3ZpZGVycy9MZWFmQnV0dG9uUHJvdmlkZXInXG5pbXBvcnQgeyBMZWFmUHJvdmlkZXIgfSBmcm9tICcuL3Byb3ZpZGVycy9MZWFmUHJvdmlkZXInXG5cbmNvbnN0IGJhc2VDbGFzcyA9ICdyaWNoLXRleHQnXG5cbmRlY2xhcmUgbW9kdWxlICdzbGF0ZScge1xuICBpbnRlcmZhY2UgQ3VzdG9tVHlwZXMge1xuICAgIEVkaXRvcjogQmFzZUVkaXRvciAmIFJlYWN0RWRpdG9yICYgSGlzdG9yeUVkaXRvclxuICAgIEVsZW1lbnQ6IEVsZW1lbnROb2RlXG4gICAgVGV4dDogVGV4dE5vZGVcbiAgfVxufVxuXG5jb25zdCBSaWNoVGV4dDogUmVhY3QuRkM8XG4gIEZvcm1GaWVsZEJhc2UgJiB7XG4gICAgZWxlbWVudHM6IEVuYWJsZWRGZWF0dXJlc1snZWxlbWVudHMnXVxuICAgIGxlYXZlczogRW5hYmxlZEZlYXR1cmVzWydsZWF2ZXMnXVxuICAgIG5hbWU6IHN0cmluZ1xuICAgIHBsdWdpbnM6IFJpY2hUZXh0UGx1Z2luW11cbiAgICByaWNoVGV4dENvbXBvbmVudE1hcDogTWFwPHN0cmluZywgUmVhY3QuUmVhY3ROb2RlPlxuICB9XG4+ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBuYW1lLFxuICAgIERlc2NyaXB0aW9uLFxuICAgIEVycm9yLFxuICAgIExhYmVsLFxuICAgIGNsYXNzTmFtZSxcbiAgICBlbGVtZW50cyxcbiAgICBsZWF2ZXMsXG4gICAgcGF0aDogcGF0aEZyb21Qcm9wcyxcbiAgICBwbGFjZWhvbGRlcixcbiAgICBwbHVnaW5zLFxuICAgIHJlYWRPbmx5LFxuICAgIHJlcXVpcmVkLFxuICAgIHN0eWxlLFxuICAgIHZhbGlkYXRlID0gcmljaFRleHRWYWxpZGF0ZSxcbiAgICB3aWR0aCxcbiAgfSA9IHByb3BzXG5cbiAgY29uc3QgeyBpMThuIH0gPSB1c2VUcmFuc2xhdGlvbigpXG4gIGNvbnN0IGVkaXRvclJlZiA9IHVzZVJlZihudWxsKVxuICBjb25zdCB0b29sYmFyUmVmID0gdXNlUmVmKG51bGwpXG5cbiAgY29uc3QgZHJhd2VyRGVwdGggPSB1c2VFZGl0RGVwdGgoKVxuICBjb25zdCBkcmF3ZXJJc09wZW4gPSBkcmF3ZXJEZXB0aCA+IDFcblxuICBjb25zdCBtZW1vaXplZFZhbGlkYXRlID0gdXNlQ2FsbGJhY2soXG4gICAgKHZhbHVlLCB2YWxpZGF0aW9uT3B0aW9ucykgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB2YWxpZGF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gdmFsaWRhdGUodmFsdWUsIHsgLi4udmFsaWRhdGlvbk9wdGlvbnMsIHJlcXVpcmVkIH0pXG4gICAgICB9XG4gICAgfSxcbiAgICBbdmFsaWRhdGUsIHJlcXVpcmVkXSxcbiAgKVxuXG4gIGNvbnN0IHsgaW5pdGlhbFZhbHVlLCBwYXRoLCBzY2hlbWFQYXRoLCBzZXRWYWx1ZSwgc2hvd0Vycm9yLCB2YWx1ZSB9ID0gdXNlRmllbGQoe1xuICAgIHBhdGg6IHBhdGhGcm9tUHJvcHMgfHwgbmFtZSxcbiAgICB2YWxpZGF0ZTogbWVtb2l6ZWRWYWxpZGF0ZSxcbiAgfSlcblxuICBjb25zdCBlZGl0b3IgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBsZXQgQ3JlYXRlZEVkaXRvciA9IHdpdGhFbnRlckJyZWFrT3V0KHdpdGhIaXN0b3J5KHdpdGhSZWFjdChjcmVhdGVFZGl0b3IoKSkpKVxuXG4gICAgQ3JlYXRlZEVkaXRvciA9IHdpdGhIVE1MKENyZWF0ZWRFZGl0b3IpXG5cbiAgICBpZiAocGx1Z2lucy5sZW5ndGgpIHtcbiAgICAgIENyZWF0ZWRFZGl0b3IgPSBwbHVnaW5zLnJlZHVjZSgoZWRpdG9yV2l0aFBsdWdpbnMsIHBsdWdpbikgPT4ge1xuICAgICAgICByZXR1cm4gcGx1Z2luKGVkaXRvcldpdGhQbHVnaW5zKVxuICAgICAgfSwgQ3JlYXRlZEVkaXRvcilcbiAgICB9XG5cbiAgICByZXR1cm4gQ3JlYXRlZEVkaXRvclxuICB9LCBbcGx1Z2luc10pXG5cbiAgY29uc3QgcmVuZGVyRWxlbWVudCA9IHVzZUNhbGxiYWNrKFxuICAgICh7IGF0dHJpYnV0ZXMsIGNoaWxkcmVuLCBlbGVtZW50IH0pID0+IHtcbiAgICAgIC8vIHJldHVybiA8ZGl2IHsuLi5hdHRyaWJ1dGVzfT57Y2hpbGRyZW59PC9kaXY+XG5cbiAgICAgIGNvbnN0IG1hdGNoZWRFbGVtZW50ID0gZWxlbWVudHNbZWxlbWVudC50eXBlXVxuICAgICAgY29uc3QgRWxlbWVudCA9IG1hdGNoZWRFbGVtZW50Py5FbGVtZW50XG5cbiAgICAgIGxldCBhdHRyID0geyAuLi5hdHRyaWJ1dGVzIH1cblxuICAgICAgLy8gdGhpcyBjb252ZXJ0cyB0ZXh0IGFsaWdubWVudCB0byBtYXJnaW4gd2hlbiBkZWFsaW5nIHdpdGggdm9pZCBlbGVtZW50c1xuICAgICAgaWYgKGVsZW1lbnQudGV4dEFsaWduKSB7XG4gICAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09ICdyZWxhdGlvbnNoaXAnIHx8IGVsZW1lbnQudHlwZSA9PT0gJ3VwbG9hZCcpIHtcbiAgICAgICAgICBzd2l0Y2ggKGVsZW1lbnQudGV4dEFsaWduKSB7XG4gICAgICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgICAgICAgYXR0ciA9IHsgLi4uYXR0ciwgc3R5bGU6IHsgbWFyZ2luUmlnaHQ6ICdhdXRvJyB9IH1cbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgICAgICAgYXR0ciA9IHsgLi4uYXR0ciwgc3R5bGU6IHsgbWFyZ2luTGVmdDogJ2F1dG8nIH0gfVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgY2FzZSAnY2VudGVyJzpcbiAgICAgICAgICAgICAgYXR0ciA9IHsgLi4uYXR0ciwgc3R5bGU6IHsgbWFyZ2luTGVmdDogJ2F1dG8nLCBtYXJnaW5SaWdodDogJ2F1dG8nIH0gfVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgYXR0ciA9IHsgLi4uYXR0ciwgc3R5bGU6IHsgdGV4dEFsaWduOiBlbGVtZW50LnRleHRBbGlnbiB9IH1cbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC50eXBlID09PSAnbGknKSB7XG4gICAgICAgICAgc3dpdGNoIChlbGVtZW50LnRleHRBbGlnbikge1xuICAgICAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgICAgICBhdHRyID0geyAuLi5hdHRyLCBzdHlsZTogeyBsaXN0U3R5bGVQb3NpdGlvbjogJ2luc2lkZScsIHRleHRBbGlnbjogJ3JpZ2h0JyB9IH1cbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIGNhc2UgJ2NlbnRlcic6XG4gICAgICAgICAgICAgIGF0dHIgPSB7IC4uLmF0dHIsIHN0eWxlOiB7IGxpc3RTdHlsZVBvc2l0aW9uOiAnaW5zaWRlJywgdGV4dEFsaWduOiAnY2VudGVyJyB9IH1cbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgYXR0ciA9IHsgLi4uYXR0ciwgc3R5bGU6IHsgbGlzdFN0eWxlUG9zaXRpb246ICdvdXRzaWRlJywgdGV4dEFsaWduOiAnbGVmdCcgfSB9XG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGF0dHIgPSB7IC4uLmF0dHIsIHN0eWxlOiB7IHRleHRBbGlnbjogZWxlbWVudC50ZXh0QWxpZ24gfSB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgZWwgPSAoXG4gICAgICAgICAgPEVsZW1lbnRQcm92aWRlclxuICAgICAgICAgICAgYXR0cmlidXRlcz17YXR0cn1cbiAgICAgICAgICAgIGNoaWxkTm9kZXM9e2NoaWxkcmVufVxuICAgICAgICAgICAgZWRpdG9yUmVmPXtlZGl0b3JSZWZ9XG4gICAgICAgICAgICBlbGVtZW50PXtlbGVtZW50fVxuICAgICAgICAgICAgZmllbGRQcm9wcz17cHJvcHN9XG4gICAgICAgICAgICBwYXRoPXtwYXRofVxuICAgICAgICAgICAgc2NoZW1hUGF0aD17c2NoZW1hUGF0aH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7RWxlbWVudH1cbiAgICAgICAgICA8L0VsZW1lbnRQcm92aWRlcj5cbiAgICAgICAgKVxuXG4gICAgICAgIHJldHVybiBlbFxuICAgICAgfVxuXG4gICAgICByZXR1cm4gPGRpdiB7Li4uYXR0cn0+e2NoaWxkcmVufTwvZGl2PlxuICAgIH0sXG4gICAgW2VsZW1lbnRzLCBwYXRoLCBwcm9wcywgc2NoZW1hUGF0aF0sXG4gIClcblxuICBjb25zdCByZW5kZXJMZWFmID0gdXNlQ2FsbGJhY2soXG4gICAgKHsgYXR0cmlidXRlcywgY2hpbGRyZW4sIGxlYWYgfSkgPT4ge1xuICAgICAgY29uc3QgbWF0Y2hlZExlYXZlcyA9IE9iamVjdC5lbnRyaWVzKGxlYXZlcykuZmlsdGVyKChbbGVhZk5hbWVdKSA9PiBsZWFmW2xlYWZOYW1lXSlcblxuICAgICAgaWYgKG1hdGNoZWRMZWF2ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gbWF0Y2hlZExlYXZlcy5yZWR1Y2UoXG4gICAgICAgICAgKHJlc3VsdCwgWywgbGVhZkNvbmZpZ10sIGkpID0+IHtcbiAgICAgICAgICAgIGlmIChsZWFmQ29uZmlnPy5MZWFmKSB7XG4gICAgICAgICAgICAgIGNvbnN0IExlYWYgPSBsZWFmQ29uZmlnLkxlYWZcblxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxMZWFmUHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM9e2F0dHJpYnV0ZXN9XG4gICAgICAgICAgICAgICAgICBlZGl0b3JSZWY9e2VkaXRvclJlZn1cbiAgICAgICAgICAgICAgICAgIGZpZWxkUHJvcHM9e3Byb3BzfVxuICAgICAgICAgICAgICAgICAga2V5PXtpfVxuICAgICAgICAgICAgICAgICAgbGVhZj17bGVhZn1cbiAgICAgICAgICAgICAgICAgIHBhdGg9e3BhdGh9XG4gICAgICAgICAgICAgICAgICByZXN1bHQ9e3Jlc3VsdH1cbiAgICAgICAgICAgICAgICAgIHNjaGVtYVBhdGg9e3NjaGVtYVBhdGh9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge0xlYWZ9XG4gICAgICAgICAgICAgICAgPC9MZWFmUHJvdmlkZXI+XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgICAgIH0sXG4gICAgICAgICAgPHNwYW4gey4uLmF0dHJpYnV0ZXN9PntjaGlsZHJlbn08L3NwYW4+LFxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIHJldHVybiA8c3BhbiB7Li4uYXR0cmlidXRlc30+e2NoaWxkcmVufTwvc3Bhbj5cbiAgICB9LFxuICAgIFtwYXRoLCBwcm9wcywgc2NoZW1hUGF0aCwgbGVhdmVzXSxcbiAgKVxuXG4gIC8vIEFsbCBzbGF0ZSBjaGFuZ2VzIGZpcmUgdGhlIG9uQ2hhbmdlIGV2ZW50XG4gIC8vIGluY2x1ZGluZyBzZWxlY3Rpb24gY2hhbmdlc1xuICAvLyBzbyB3ZSB3aWxsIGZpbHRlciB0aGUgc2V0X3NlbGVjdGlvbiBvcGVyYXRpb25zIG91dFxuICAvLyBhbmQgb25seSBmaXJlIHNldFZhbHVlIHdoZW4gb25DaGFuZ2UgaXMgYmVjYXVzZSBvZiB2YWx1ZVxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAodmFsOiB1bmtub3duKSA9PiB7XG4gICAgICBjb25zdCBvcHMgPSBlZGl0b3I/Lm9wZXJhdGlvbnMuZmlsdGVyKChvOiBCYXNlT3BlcmF0aW9uKSA9PiB7XG4gICAgICAgIGlmIChvKSB7XG4gICAgICAgICAgcmV0dXJuIG8udHlwZSAhPT0gJ3NldF9zZWxlY3Rpb24nXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9KVxuXG4gICAgICBpZiAob3BzICYmIEFycmF5LmlzQXJyYXkob3BzKSAmJiBvcHMubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAoIXJlYWRPbmx5ICYmIHZhbCAhPT0gZGVmYXVsdFJpY2hUZXh0VmFsdWUgJiYgdmFsICE9PSB2YWx1ZSkge1xuICAgICAgICAgIHNldFZhbHVlKHZhbClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW2VkaXRvcj8ub3BlcmF0aW9ucywgcmVhZE9ubHksIHNldFZhbHVlLCB2YWx1ZV0sXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZ1bmN0aW9uIHNldENsaWNrYWJsZVN0YXRlKGNsaWNrU3RhdGU6ICdkaXNhYmxlZCcgfCAnZW5hYmxlZCcpIHtcbiAgICAgIGNvbnN0IHNlbGVjdG9ycyA9ICdidXR0b24sIGEsIFtyb2xlPVwiYnV0dG9uXCJdJ1xuICAgICAgY29uc3QgdG9vbGJhckJ1dHRvbnM6IChIVE1MQW5jaG9yRWxlbWVudCB8IEhUTUxCdXR0b25FbGVtZW50KVtdID1cbiAgICAgICAgdG9vbGJhclJlZi5jdXJyZW50Py5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9ycylcblxuICAgICAgOyh0b29sYmFyQnV0dG9ucyB8fCBbXSkuZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgICAgY29uc3QgaXNCdXR0b24gPSBjaGlsZC50YWdOYW1lID09PSAnQlVUVE9OJ1xuICAgICAgICBjb25zdCBpc0Rpc2FibGluZyA9IGNsaWNrU3RhdGUgPT09ICdkaXNhYmxlZCdcbiAgICAgICAgY2hpbGQuc2V0QXR0cmlidXRlKCd0YWJJbmRleCcsIGlzRGlzYWJsaW5nID8gJy0xJyA6ICcwJylcbiAgICAgICAgaWYgKGlzQnV0dG9uKSBjaGlsZC5zZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJywgaXNEaXNhYmxpbmcgPyAnZGlzYWJsZWQnIDogbnVsbClcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKHJlYWRPbmx5KSB7XG4gICAgICBzZXRDbGlja2FibGVTdGF0ZSgnZGlzYWJsZWQnKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAocmVhZE9ubHkpIHtcbiAgICAgICAgc2V0Q2xpY2thYmxlU3RhdGUoJ2VuYWJsZWQnKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW3JlYWRPbmx5XSlcblxuICAvLyB1c2VFZmZlY3QoKCkgPT4ge1xuICAvLyAgIC8vIElmIHRoZXJlIGlzIGEgY2hhbmdlIHRvIHRoZSBpbml0aWFsIHZhbHVlLCB3ZSBuZWVkIHRvIHJlc2V0IFNsYXRlIGhpc3RvcnlcbiAgLy8gICAvLyBhbmQgY2xlYXIgc2VsZWN0aW9uIGJlY2F1c2UgdGhlIG9sZCBzZWxlY3Rpb24gbWF5IG5vIGxvbmdlciBiZSB2YWxpZFxuICAvLyAgIC8vIGFzIHJldHVybmVkIEpTT04gbWF5IGJlIG1vZGlmaWVkIGluIGhvb2tzIGFuZCBoYXZlIGEgZGlmZmVyZW50IHNoYXBlXG4gIC8vICAgaWYgKGVkaXRvci5zZWxlY3Rpb24pIHtcbiAgLy8gICAgIGNvbnNvbGUubG9nKCdkZXNlbGVjdGluZycpO1xuICAvLyAgICAgUmVhY3RFZGl0b3IuZGVzZWxlY3QoZWRpdG9yKTtcbiAgLy8gICB9XG4gIC8vIH0sIFtwYXRoLCBlZGl0b3JdKTtcblxuICBjb25zdCBjbGFzc2VzID0gW1xuICAgIGJhc2VDbGFzcyxcbiAgICAnZmllbGQtdHlwZScsXG4gICAgY2xhc3NOYW1lLFxuICAgIHNob3dFcnJvciAmJiAnZXJyb3InLFxuICAgIHJlYWRPbmx5ICYmIGAke2Jhc2VDbGFzc30tLXJlYWQtb25seWAsXG4gIF1cbiAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgLmpvaW4oJyAnKVxuXG4gIGxldCB2YWx1ZVRvUmVuZGVyID0gdmFsdWVcblxuICBpZiAodHlwZW9mIHZhbHVlVG9SZW5kZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhcnNlZEpTT04gPSBKU09OLnBhcnNlKHZhbHVlVG9SZW5kZXIpXG4gICAgICB2YWx1ZVRvUmVuZGVyID0gcGFyc2VkSlNPTlxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdmFsdWVUb1JlbmRlciA9IG51bGxcbiAgICB9XG4gIH1cblxuICBpZiAoIXZhbHVlVG9SZW5kZXIpIHZhbHVlVG9SZW5kZXIgPSBkZWZhdWx0UmljaFRleHRWYWx1ZVxuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzfVxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgLi4uc3R5bGUsXG4gICAgICAgIHdpZHRoLFxuICAgICAgfX1cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fd3JhcGB9PlxuICAgICAgICB7RXJyb3J9XG4gICAgICAgIHtMYWJlbH1cbiAgICAgICAgPFNsYXRlXG4gICAgICAgICAgZWRpdG9yPXtlZGl0b3J9XG4gICAgICAgICAga2V5PXtKU09OLnN0cmluZ2lmeSh7IGluaXRpYWxWYWx1ZSwgcGF0aCB9KX0gLy8gbWFrZXMgc3VyZSBzbGF0ZSBpcyBjb21wbGV0ZWx5IHJlLXJlbmRlcmVkIHdoZW4gaW5pdGlhbFZhbHVlIGNoYW5nZXMsIGJ5cGFzc2luZyB0aGUgc2xhdGUtaW50ZXJuYWwgdmFsdWUgbWVtb2l6YXRpb24uIFRoYXQgd2F5LCBleHRlcm5hbCBjaGFuZ2VzIHRvIHRoZSBmb3JtIHdpbGwgdXBkYXRlIHRoZSBlZGl0b3JcbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIHZhbHVlPXt2YWx1ZVRvUmVuZGVyIGFzIGFueVtdfVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX3dyYXBwZXJgfT5cbiAgICAgICAgICAgIHtPYmplY3Qua2V5cyhlbGVtZW50cyk/Lmxlbmd0aCArIE9iamVjdC5rZXlzKGxlYXZlcyk/Lmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtbYCR7YmFzZUNsYXNzfV9fdG9vbGJhcmAsIGRyYXdlcklzT3BlbiAmJiBgJHtiYXNlQ2xhc3N9X19kcmF3ZXJJc09wZW5gXVxuICAgICAgICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgICAgICAgICAgLmpvaW4oJyAnKX1cbiAgICAgICAgICAgICAgICByZWY9e3Rvb2xiYXJSZWZ9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fdG9vbGJhci13cmFwYH0+XG4gICAgICAgICAgICAgICAgICB7T2JqZWN0LnZhbHVlcyhlbGVtZW50cykubWFwKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IEJ1dHRvbiA9IGVsZW1lbnQ/LkJ1dHRvblxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChCdXR0b24pIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEVsZW1lbnRCdXR0b25Qcm92aWRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZFByb3BzPXtwcm9wc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtlbGVtZW50Lm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9e3BhdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVtYVBhdGg9e3NjaGVtYVBhdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtCdXR0b259XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0VsZW1lbnRCdXR0b25Qcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICB7T2JqZWN0LnZhbHVlcyhsZWF2ZXMpLm1hcCgobGVhZikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBCdXR0b24gPSBsZWFmPy5CdXR0b25cblxuICAgICAgICAgICAgICAgICAgICBpZiAoQnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxMZWFmQnV0dG9uUHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRQcm9wcz17cHJvcHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17bGVhZi5uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPXtwYXRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICBzY2hlbWFQYXRoPXtzY2hlbWFQYXRofVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7QnV0dG9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9MZWFmQnV0dG9uUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fZWRpdG9yYH0gcmVmPXtlZGl0b3JSZWZ9PlxuICAgICAgICAgICAgICA8RWRpdGFibGVcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2lucHV0YH1cbiAgICAgICAgICAgICAgICBpZD17YGZpZWxkLSR7cGF0aC5yZXBsYWNlKC9cXC4vZywgJ19fJyl9YH1cbiAgICAgICAgICAgICAgICBvbktleURvd249eyhldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgZWRpdG9yLmluc2VydFRleHQoJ1xcbicpXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50ID0gTm9kZS5kZXNjZW5kYW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yLnNlbGVjdGlvbi5hbmNob3IucGF0aC5zbGljZSgwLCAtMSksXG4gICAgICAgICAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKFNsYXRlRWxlbWVudC5pc0VsZW1lbnQoc2VsZWN0ZWRFbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWxsb3cgaGFyZCBlbnRlciB0byBcImJyZWFrIG91dFwiIG9mIGNlcnRhaW4gZWxlbWVudHNcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlZGl0b3Iuc2hvdWxkQnJlYWtPdXRPbkVudGVyKHNlbGVjdGVkRWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZExlYWYgPSBOb2RlLmRlc2NlbmRhbnQoZWRpdG9yLCBlZGl0b3Iuc2VsZWN0aW9uLmFuY2hvci5wYXRoKVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0LmlzVGV4dChzZWxlY3RlZExlYWYpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nKHNlbGVjdGVkTGVhZi50ZXh0KS5sZW5ndGggPT09IGVkaXRvci5zZWxlY3Rpb24uYW5jaG9yLm9mZnNldFxuICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLmluc2VydE5vZGVzKGVkaXRvciwgeyBjaGlsZHJlbjogW3sgdGV4dDogJycgfV0gfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNwbGl0Tm9kZXMoZWRpdG9yKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZXMoZWRpdG9yLCB7fSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQmFja3NwYWNlJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnQgPSBOb2RlLmRlc2NlbmRhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgICAgICAgICAgIGVkaXRvci5zZWxlY3Rpb24uYW5jaG9yLnBhdGguc2xpY2UoMCwgLTEpLFxuICAgICAgICAgICAgICAgICAgICApXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKFNsYXRlRWxlbWVudC5pc0VsZW1lbnQoc2VsZWN0ZWRFbGVtZW50KSAmJiBzZWxlY3RlZEVsZW1lbnQudHlwZSA9PT0gJ2xpJykge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkTGVhZiA9IE5vZGUuZGVzY2VuZGFudChlZGl0b3IsIGVkaXRvci5zZWxlY3Rpb24uYW5jaG9yLnBhdGgpXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKFRleHQuaXNUZXh0KHNlbGVjdGVkTGVhZikgJiYgU3RyaW5nKHNlbGVjdGVkTGVhZi50ZXh0KS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMudW53cmFwTm9kZXMoZWRpdG9yLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoOiAobikgPT4gU2xhdGVFbGVtZW50LmlzRWxlbWVudChuKSAmJiBsaXN0VHlwZXMuaW5jbHVkZXMobi50eXBlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogJ2xvd2VzdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGl0OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlcyhlZGl0b3IsIHsgdHlwZTogdW5kZWZpbmVkIH0pXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVkaXRvci5pc1ZvaWQoc2VsZWN0ZWRFbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMucmVtb3ZlTm9kZXMoZWRpdG9yKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGhvdGtleXMpLmZvckVhY2goKGhvdGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNIb3RrZXkoaG90a2V5LCBldmVudCBhcyBhbnkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hcmsgPSBob3RrZXlzW2hvdGtleV1cbiAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVMZWFmKGVkaXRvciwgbWFyaylcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtnZXRUcmFuc2xhdGlvbihwbGFjZWhvbGRlciwgaTE4bil9XG4gICAgICAgICAgICAgICAgcmVhZE9ubHk9e3JlYWRPbmx5fVxuICAgICAgICAgICAgICAgIHJlbmRlckVsZW1lbnQ9e3JlbmRlckVsZW1lbnR9XG4gICAgICAgICAgICAgICAgcmVuZGVyTGVhZj17cmVuZGVyTGVhZn1cbiAgICAgICAgICAgICAgICBzcGVsbENoZWNrXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9TbGF0ZT5cbiAgICAgICAge0Rlc2NyaXB0aW9ufVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgd2l0aENvbmRpdGlvbihSaWNoVGV4dClcbiJdLCJuYW1lcyI6WyJiYXNlQ2xhc3MiLCJSaWNoVGV4dCIsInByb3BzIiwibmFtZSIsIkRlc2NyaXB0aW9uIiwiRXJyb3IiLCJMYWJlbCIsImNsYXNzTmFtZSIsImVsZW1lbnRzIiwibGVhdmVzIiwicGF0aCIsInBhdGhGcm9tUHJvcHMiLCJwbGFjZWhvbGRlciIsInBsdWdpbnMiLCJyZWFkT25seSIsInJlcXVpcmVkIiwic3R5bGUiLCJ2YWxpZGF0ZSIsInJpY2hUZXh0VmFsaWRhdGUiLCJ3aWR0aCIsImkxOG4iLCJ1c2VUcmFuc2xhdGlvbiIsImVkaXRvclJlZiIsInVzZVJlZiIsInRvb2xiYXJSZWYiLCJkcmF3ZXJEZXB0aCIsInVzZUVkaXREZXB0aCIsImRyYXdlcklzT3BlbiIsIm1lbW9pemVkVmFsaWRhdGUiLCJ1c2VDYWxsYmFjayIsInZhbHVlIiwidmFsaWRhdGlvbk9wdGlvbnMiLCJpbml0aWFsVmFsdWUiLCJzY2hlbWFQYXRoIiwic2V0VmFsdWUiLCJzaG93RXJyb3IiLCJ1c2VGaWVsZCIsImVkaXRvciIsInVzZU1lbW8iLCJDcmVhdGVkRWRpdG9yIiwid2l0aEVudGVyQnJlYWtPdXQiLCJ3aXRoSGlzdG9yeSIsIndpdGhSZWFjdCIsImNyZWF0ZUVkaXRvciIsIndpdGhIVE1MIiwibGVuZ3RoIiwicmVkdWNlIiwiZWRpdG9yV2l0aFBsdWdpbnMiLCJwbHVnaW4iLCJyZW5kZXJFbGVtZW50IiwiYXR0cmlidXRlcyIsImNoaWxkcmVuIiwiZWxlbWVudCIsIm1hdGNoZWRFbGVtZW50IiwidHlwZSIsIkVsZW1lbnQiLCJhdHRyIiwidGV4dEFsaWduIiwibWFyZ2luUmlnaHQiLCJtYXJnaW5MZWZ0IiwibGlzdFN0eWxlUG9zaXRpb24iLCJlbCIsIkVsZW1lbnRQcm92aWRlciIsImNoaWxkTm9kZXMiLCJmaWVsZFByb3BzIiwiZGl2IiwicmVuZGVyTGVhZiIsImxlYWYiLCJtYXRjaGVkTGVhdmVzIiwiT2JqZWN0IiwiZW50cmllcyIsImZpbHRlciIsImxlYWZOYW1lIiwicmVzdWx0IiwibGVhZkNvbmZpZyIsImkiLCJMZWFmIiwiTGVhZlByb3ZpZGVyIiwia2V5Iiwic3BhbiIsImhhbmRsZUNoYW5nZSIsInZhbCIsIm9wcyIsIm9wZXJhdGlvbnMiLCJvIiwiQXJyYXkiLCJpc0FycmF5IiwiZGVmYXVsdFJpY2hUZXh0VmFsdWUiLCJ1c2VFZmZlY3QiLCJzZXRDbGlja2FibGVTdGF0ZSIsImNsaWNrU3RhdGUiLCJzZWxlY3RvcnMiLCJ0b29sYmFyQnV0dG9ucyIsImN1cnJlbnQiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZm9yRWFjaCIsImNoaWxkIiwiaXNCdXR0b24iLCJ0YWdOYW1lIiwiaXNEaXNhYmxpbmciLCJzZXRBdHRyaWJ1dGUiLCJjbGFzc2VzIiwiQm9vbGVhbiIsImpvaW4iLCJ2YWx1ZVRvUmVuZGVyIiwicGFyc2VkSlNPTiIsIkpTT04iLCJwYXJzZSIsImVyciIsIlNsYXRlIiwic3RyaW5naWZ5Iiwib25DaGFuZ2UiLCJrZXlzIiwicmVmIiwidmFsdWVzIiwibWFwIiwiQnV0dG9uIiwiRWxlbWVudEJ1dHRvblByb3ZpZGVyIiwiTGVhZkJ1dHRvblByb3ZpZGVyIiwiRWRpdGFibGUiLCJpZCIsInJlcGxhY2UiLCJvbktleURvd24iLCJldmVudCIsInNoaWZ0S2V5IiwicHJldmVudERlZmF1bHQiLCJpbnNlcnRUZXh0Iiwic2VsZWN0ZWRFbGVtZW50IiwiTm9kZSIsImRlc2NlbmRhbnQiLCJzZWxlY3Rpb24iLCJhbmNob3IiLCJzbGljZSIsIlNsYXRlRWxlbWVudCIsImlzRWxlbWVudCIsInNob3VsZEJyZWFrT3V0T25FbnRlciIsInNlbGVjdGVkTGVhZiIsIlRleHQiLCJpc1RleHQiLCJTdHJpbmciLCJ0ZXh0Iiwib2Zmc2V0IiwiVHJhbnNmb3JtcyIsImluc2VydE5vZGVzIiwic3BsaXROb2RlcyIsInNldE5vZGVzIiwidW53cmFwTm9kZXMiLCJtYXRjaCIsIm4iLCJsaXN0VHlwZXMiLCJpbmNsdWRlcyIsIm1vZGUiLCJzcGxpdCIsInVuZGVmaW5lZCIsImlzVm9pZCIsInJlbW92ZU5vZGVzIiwiaG90a2V5cyIsImhvdGtleSIsImlzSG90a2V5IiwibWFyayIsInRvZ2dsZUxlYWYiLCJnZXRUcmFuc2xhdGlvbiIsInNwZWxsQ2hlY2siLCJ3aXRoQ29uZGl0aW9uIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7K0JBa2JBOzs7ZUFBQTs7OzhCQTNhK0I7b0JBQ3dCO3VCQUN6QjtpRUFDVDsrREFDMEM7dUJBQ2U7OEJBQ2xEOzRCQUNlOzhCQUtOOzRCQUNKO2tFQUNYO2dFQUNGO1FBQ2I7K0RBQ2dCOzBFQUNPO2lFQUNUO3VDQUNpQjtpQ0FDTjtvQ0FDRzs4QkFDTjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFN0IsTUFBTUEsWUFBWTtBQVVsQixNQUFNQyxXQVFGLENBQUNDO0lBQ0gsTUFBTSxFQUNKQyxJQUFJLEVBQ0pDLFdBQVcsRUFDWEMsS0FBSyxFQUNMQyxLQUFLLEVBQ0xDLFNBQVMsRUFDVEMsUUFBUSxFQUNSQyxNQUFNLEVBQ05DLE1BQU1DLGFBQWEsRUFDbkJDLFdBQVcsRUFDWEMsT0FBTyxFQUNQQyxRQUFRLEVBQ1JDLFFBQVEsRUFDUkMsS0FBSyxFQUNMQyxXQUFXQyw0QkFBZ0IsRUFDM0JDLEtBQUssRUFDTixHQUFHakI7SUFFSixNQUFNLEVBQUVrQixJQUFJLEVBQUUsR0FBR0MsSUFBQUEsa0JBQWM7SUFDL0IsTUFBTUMsWUFBWUMsSUFBQUEsYUFBTSxFQUFDO0lBQ3pCLE1BQU1DLGFBQWFELElBQUFBLGFBQU0sRUFB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
|
package/dist/field/buttons.scss
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createFeatureMap.d.ts","sourceRoot":"","sources":["../../src/field/createFeatureMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,eAAO,MAAM,gBAAgB,yBACL,IAAI,MAAM,EAAE,MAAM,SAAS,CAAC,KACjD,eA4CF,CAAA"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "createFeatureMap", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return createFeatureMap;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const createFeatureMap = (richTextComponentMap)=>{
|
|
12
|
+
const features = {
|
|
13
|
+
elements: {},
|
|
14
|
+
leaves: {},
|
|
15
|
+
plugins: []
|
|
16
|
+
};
|
|
17
|
+
for (const [key, value] of richTextComponentMap){
|
|
18
|
+
if (key.startsWith('leaf.button') || key.startsWith('leaf.component.')) {
|
|
19
|
+
const leafName = key.replace('leaf.button.', '').replace('leaf.component.', '');
|
|
20
|
+
if (!features.leaves[leafName]) {
|
|
21
|
+
features.leaves[leafName] = {
|
|
22
|
+
name: leafName,
|
|
23
|
+
Button: null,
|
|
24
|
+
Leaf: null
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
if (key.startsWith('leaf.button.')) features.leaves[leafName].Button = value;
|
|
28
|
+
if (key.startsWith('leaf.component.')) features.leaves[leafName].Leaf = value;
|
|
29
|
+
}
|
|
30
|
+
if (key.startsWith('element.button.') || key.startsWith('element.component.')) {
|
|
31
|
+
const elementName = key.replace('element.button.', '').replace('element.component.', '');
|
|
32
|
+
if (!features.elements[elementName]) {
|
|
33
|
+
features.elements[elementName] = {
|
|
34
|
+
name: elementName,
|
|
35
|
+
Button: null,
|
|
36
|
+
Element: null
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
if (key.startsWith('element.button.')) features.elements[elementName].Button = value;
|
|
40
|
+
if (key.startsWith('element.component.')) features.elements[elementName].Element = value;
|
|
41
|
+
}
|
|
42
|
+
if (key.startsWith('leaf.plugin.') || key.startsWith('element.plugin.')) {
|
|
43
|
+
features.plugins.push(value);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return features;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWVsZC9jcmVhdGVGZWF0dXJlTWFwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW5hYmxlZEZlYXR1cmVzIH0gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUZlYXR1cmVNYXAgPSAoXG4gIHJpY2hUZXh0Q29tcG9uZW50TWFwOiBNYXA8c3RyaW5nLCBSZWFjdC5SZWFjdE5vZGU+LFxuKTogRW5hYmxlZEZlYXR1cmVzID0+IHtcbiAgY29uc3QgZmVhdHVyZXM6IEVuYWJsZWRGZWF0dXJlcyA9IHtcbiAgICBlbGVtZW50czoge30sXG4gICAgbGVhdmVzOiB7fSxcbiAgICBwbHVnaW5zOiBbXSxcbiAgfVxuXG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIHJpY2hUZXh0Q29tcG9uZW50TWFwKSB7XG4gICAgaWYgKGtleS5zdGFydHNXaXRoKCdsZWFmLmJ1dHRvbicpIHx8IGtleS5zdGFydHNXaXRoKCdsZWFmLmNvbXBvbmVudC4nKSkge1xuICAgICAgY29uc3QgbGVhZk5hbWUgPSBrZXkucmVwbGFjZSgnbGVhZi5idXR0b24uJywgJycpLnJlcGxhY2UoJ2xlYWYuY29tcG9uZW50LicsICcnKVxuXG4gICAgICBpZiAoIWZlYXR1cmVzLmxlYXZlc1tsZWFmTmFtZV0pIHtcbiAgICAgICAgZmVhdHVyZXMubGVhdmVzW2xlYWZOYW1lXSA9IHtcbiAgICAgICAgICBuYW1lOiBsZWFmTmFtZSxcbiAgICAgICAgICBCdXR0b246IG51bGwsXG4gICAgICAgICAgTGVhZjogbnVsbCxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoJ2xlYWYuYnV0dG9uLicpKSBmZWF0dXJlcy5sZWF2ZXNbbGVhZk5hbWVdLkJ1dHRvbiA9IHZhbHVlXG4gICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoJ2xlYWYuY29tcG9uZW50LicpKSBmZWF0dXJlcy5sZWF2ZXNbbGVhZk5hbWVdLkxlYWYgPSB2YWx1ZVxuICAgIH1cblxuICAgIGlmIChrZXkuc3RhcnRzV2l0aCgnZWxlbWVudC5idXR0b24uJykgfHwga2V5LnN0YXJ0c1dpdGgoJ2VsZW1lbnQuY29tcG9uZW50LicpKSB7XG4gICAgICBjb25zdCBlbGVtZW50TmFtZSA9IGtleS5yZXBsYWNlKCdlbGVtZW50LmJ1dHRvbi4nLCAnJykucmVwbGFjZSgnZWxlbWVudC5jb21wb25lbnQuJywgJycpXG5cbiAgICAgIGlmICghZmVhdHVyZXMuZWxlbWVudHNbZWxlbWVudE5hbWVdKSB7XG4gICAgICAgIGZlYXR1cmVzLmVsZW1lbnRzW2VsZW1lbnROYW1lXSA9IHtcbiAgICAgICAgICBuYW1lOiBlbGVtZW50TmFtZSxcbiAgICAgICAgICBCdXR0b246IG51bGwsXG4gICAgICAgICAgRWxlbWVudDogbnVsbCxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoJ2VsZW1lbnQuYnV0dG9uLicpKSBmZWF0dXJlcy5lbGVtZW50c1tlbGVtZW50TmFtZV0uQnV0dG9uID0gdmFsdWVcbiAgICAgIGlmIChrZXkuc3RhcnRzV2l0aCgnZWxlbWVudC5jb21wb25lbnQuJykpIGZlYXR1cmVzLmVsZW1lbnRzW2VsZW1lbnROYW1lXS5FbGVtZW50ID0gdmFsdWVcbiAgICB9XG5cbiAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoJ2xlYWYucGx1Z2luLicpIHx8IGtleS5zdGFydHNXaXRoKCdlbGVtZW50LnBsdWdpbi4nKSkge1xuICAgICAgZmVhdHVyZXMucGx1Z2lucy5wdXNoKHZhbHVlKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmZWF0dXJlc1xufVxuIl0sIm5hbWVzIjpbImNyZWF0ZUZlYXR1cmVNYXAiLCJyaWNoVGV4dENvbXBvbmVudE1hcCIsImZlYXR1cmVzIiwiZWxlbWVudHMiLCJsZWF2ZXMiLCJwbHVnaW5zIiwia2V5IiwidmFsdWUiLCJzdGFydHNXaXRoIiwibGVhZk5hbWUiLCJyZXBsYWNlIiwibmFtZSIsIkJ1dHRvbiIsIkxlYWYiLCJlbGVtZW50TmFtZSIsIkVsZW1lbnQiLCJwdXNoIl0sIm1hcHBpbmdzIjoiOzs7OytCQUVhQTs7O2VBQUFBOzs7QUFBTixNQUFNQSxtQkFBbUIsQ0FDOUJDO0lBRUEsTUFBTUMsV0FBNEI7UUFDaENDLFVBQVUsQ0FBQztRQUNYQyxRQUFRLENBQUM7UUFDVEMsU0FBUyxFQUFFO0lBQ2I7SUFFQSxLQUFLLE1BQU0sQ0FBQ0MsS0FBS0MsTUFBTSxJQUFJTixxQkFBc0I7UUFDL0MsSUFBSUssSUFBSUUsVUFBVSxDQUFDLGtCQUFrQkYsSUFBSUUsVUFBVSxDQUFDLG9CQUFvQjtZQUN0RSxNQUFNQyxXQUFXSCxJQUFJSSxPQUFPLENBQUMsZ0JBQWdCLElBQUlBLE9BQU8sQ0FBQyxtQkFBbUI7WUFFNUUsSUFBSSxDQUFDUixTQUFTRSxNQUFNLENBQUNLLFNBQVMsRUFBRTtnQkFDOUJQLFNBQVNFLE1BQU0sQ0FBQ0ssU0FBUyxHQUFHO29CQUMxQkUsTUFBTUY7b0JBQ05HLFFBQVE7b0JBQ1JDLE1BQU07Z0JBQ1I7WUFDRjtZQUVBLElBQUlQLElBQUlFLFVBQVUsQ0FBQyxpQkFBaUJOLFNBQVNFLE1BQU0sQ0FBQ0ssU0FBUyxDQUFDRyxNQUFNLEdBQUdMO1lBQ3ZFLElBQUlELElBQUlFLFVBQVUsQ0FBQyxvQkFBb0JOLFNBQVNFLE1BQU0sQ0FBQ0ssU0FBUyxDQUFDSSxJQUFJLEdBQUdOO1FBQzFFO1FBRUEsSUFBSUQsSUFBSUUsVUFBVSxDQUFDLHNCQUFzQkYsSUFBSUUsVUFBVSxDQUFDLHVCQUF1QjtZQUM3RSxNQUFNTSxjQUFjUixJQUFJSSxPQUFPLENBQUMsbUJBQW1CLElBQUlBLE9BQU8sQ0FBQyxzQkFBc0I7WUFFckYsSUFBSSxDQUFDUixTQUFTQyxRQUFRLENBQUNXLFlBQVksRUFBRTtnQkFDbkNaLFNBQVNDLFFBQVEsQ0FBQ1csWUFBWSxHQUFHO29CQUMvQkgsTUFBTUc7b0JBQ05GLFFBQVE7b0JBQ1JHLFNBQVM7Z0JBQ1g7WUFDRjtZQUVBLElBQUlULElBQUlFLFVBQVUsQ0FBQyxvQkFBb0JOLFNBQVNDLFFBQVEsQ0FBQ1csWUFBWSxDQUFDRixNQUFNLEdBQUdMO1lBQy9FLElBQUlELElBQUlFLFVBQVUsQ0FBQyx1QkFBdUJOLFNBQVNDLFFBQVEsQ0FBQ1csWUFBWSxDQUFDQyxPQUFPLEdBQUdSO1FBQ3JGO1FBRUEsSUFBSUQsSUFBSUUsVUFBVSxDQUFDLG1CQUFtQkYsSUFBSUUsVUFBVSxDQUFDLG9CQUFvQjtZQUN2RU4sU0FBU0csT0FBTyxDQUFDVyxJQUFJLENBQUNUO1FBQ3hCO0lBQ0Y7SUFFQSxPQUFPTDtBQUNUIn0=
|