@pie-lib/editable-html-tip-tap 1.0.2 → 1.0.3
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/lib/components/CharacterPicker.js +221 -0
- package/lib/components/EditableHtml.js +323 -0
- package/lib/components/MenuBar.js +693 -0
- package/lib/components/TiptapContainer.js +90 -0
- package/lib/components/buttons/done-button.js +53 -0
- package/lib/components/characters/characterUtils.js +112 -0
- package/lib/components/characters/custom-popper.js +73 -0
- package/lib/components/common/done-button.js +53 -0
- package/lib/components/icons/CssIcon.js +37 -0
- package/lib/components/icons/RespArea.js +95 -0
- package/lib/components/icons/TableIcons.js +69 -0
- package/lib/components/icons/TextAlign.js +194 -0
- package/lib/components/icons/index.js +194 -0
- package/lib/components/image/ImageToolbar.js +16 -0
- package/lib/components/image/InsertImageHandler.js +16 -0
- package/lib/components/media/MediaDialog.js +16 -0
- package/lib/components/media/MediaToolbar.js +16 -0
- package/lib/components/respArea/DragInTheBlank/DragInTheBlank.js +94 -0
- package/lib/components/respArea/DragInTheBlank/choice.js +289 -0
- package/lib/components/respArea/DragInTheBlank.js +94 -0
- package/lib/components/respArea/ExplicitConstructedResponse.js +120 -0
- package/lib/components/respArea/InlineDropdown.js +126 -0
- package/lib/components/respArea/ToolbarIcon.js +105 -0
- package/lib/components/respArea/choice.js +2 -0
- package/lib/extensions/component.js +5 -5
- package/lib/extensions/custom-toolbar-wrapper.js +2 -4
- package/lib/extensions/extended-table.js +30 -0
- package/lib/extensions/index.js +52 -0
- package/lib/extensions/media.js +5 -5
- package/lib/extensions/responseArea.js +7 -7
- package/lib/index.js +16 -1481
- package/lib/plugins/index.js +8 -80
- package/lib/styles/editorContainerStyles.js +200 -0
- package/lib/utils/size.js +34 -0
- package/package.json +1 -1
- package/src/components/CharacterPicker.jsx +185 -0
- package/src/components/EditableHtml.jsx +306 -0
- package/src/components/MenuBar.jsx +630 -0
- package/src/components/TiptapContainer.jsx +96 -0
- package/src/components/characters/characterUtils.js +127 -0
- package/src/components/image/ImageToolbar.jsx +1 -0
- package/src/components/image/InsertImageHandler.js +1 -0
- package/src/components/media/MediaDialog.js +1 -0
- package/src/components/media/MediaToolbar.jsx +1 -0
- package/src/{plugins/respArea/drag-in-the-blank → components/respArea/DragInTheBlank}/choice.jsx +1 -1
- package/src/{plugins/respArea/inline-dropdown/index.jsx → components/respArea/InlineDropdown.jsx} +1 -1
- package/src/components/respArea/ToolbarIcon.jsx +68 -0
- package/src/extensions/component.jsx +2 -2
- package/src/extensions/custom-toolbar-wrapper.jsx +6 -7
- package/src/extensions/extended-table.js +27 -0
- package/src/extensions/index.js +76 -0
- package/src/extensions/media.js +10 -4
- package/src/extensions/responseArea.js +7 -7
- package/src/index.jsx +3 -1440
- package/src/styles/editorContainerStyles.js +203 -0
- package/src/utils/size.js +32 -0
- package/src/__tests__/editor.test.jsx +0 -363
- package/src/__tests__/serialization.test.js +0 -291
- package/src/block-tags.js +0 -17
- package/src/editor.jsx +0 -1197
- package/src/extensions/characters.js +0 -46
- package/src/old-index.jsx +0 -162
- package/src/parse-html.js +0 -8
- package/src/plugins/README.md +0 -27
- package/src/plugins/characters/index.jsx +0 -284
- package/src/plugins/characters/utils.js +0 -447
- package/src/plugins/css/index.jsx +0 -340
- package/src/plugins/customPlugin/index.jsx +0 -85
- package/src/plugins/html/icons/index.jsx +0 -19
- package/src/plugins/html/index.jsx +0 -72
- package/src/plugins/image/__tests__/__snapshots__/component.test.jsx.snap +0 -51
- package/src/plugins/image/__tests__/__snapshots__/image-toolbar-logic.test.jsx.snap +0 -27
- package/src/plugins/image/__tests__/__snapshots__/image-toolbar.test.jsx.snap +0 -44
- package/src/plugins/image/__tests__/component.test.jsx +0 -41
- package/src/plugins/image/__tests__/image-toolbar-logic.test.jsx +0 -42
- package/src/plugins/image/__tests__/image-toolbar.test.jsx +0 -11
- package/src/plugins/image/__tests__/index.test.js +0 -95
- package/src/plugins/image/__tests__/insert-image-handler.test.js +0 -113
- package/src/plugins/image/__tests__/mock-change.js +0 -15
- package/src/plugins/image/alt-dialog.jsx +0 -82
- package/src/plugins/image/component.jsx +0 -343
- package/src/plugins/image/image-toolbar.jsx +0 -100
- package/src/plugins/image/index.jsx +0 -227
- package/src/plugins/image/insert-image-handler.js +0 -79
- package/src/plugins/index.jsx +0 -377
- package/src/plugins/list/__tests__/index.test.js +0 -54
- package/src/plugins/list/index.jsx +0 -305
- package/src/plugins/math/__tests__/__snapshots__/index.test.jsx.snap +0 -48
- package/src/plugins/math/__tests__/index.test.jsx +0 -245
- package/src/plugins/math/index.jsx +0 -379
- package/src/plugins/media/__tests__/index.test.js +0 -75
- package/src/plugins/media/index.jsx +0 -325
- package/src/plugins/media/media-dialog.js +0 -624
- package/src/plugins/media/media-toolbar.jsx +0 -56
- package/src/plugins/media/media-wrapper.jsx +0 -43
- package/src/plugins/rendering/index.js +0 -31
- package/src/plugins/respArea/index.jsx +0 -299
- package/src/plugins/respArea/math-templated/index.jsx +0 -104
- package/src/plugins/respArea/utils.jsx +0 -90
- package/src/plugins/table/CustomTablePlugin.js +0 -113
- package/src/plugins/table/__tests__/__snapshots__/table-toolbar.test.jsx.snap +0 -44
- package/src/plugins/table/__tests__/index.test.jsx +0 -401
- package/src/plugins/table/__tests__/table-toolbar.test.jsx +0 -42
- package/src/plugins/table/index.jsx +0 -427
- package/src/plugins/table/table-toolbar.jsx +0 -136
- package/src/plugins/textAlign/index.jsx +0 -23
- package/src/plugins/toolbar/__tests__/__snapshots__/default-toolbar.test.jsx.snap +0 -923
- package/src/plugins/toolbar/__tests__/__snapshots__/editor-and-toolbar.test.jsx.snap +0 -20
- package/src/plugins/toolbar/__tests__/__snapshots__/toolbar-buttons.test.jsx.snap +0 -36
- package/src/plugins/toolbar/__tests__/__snapshots__/toolbar.test.jsx.snap +0 -46
- package/src/plugins/toolbar/__tests__/default-toolbar.test.jsx +0 -94
- package/src/plugins/toolbar/__tests__/editor-and-toolbar.test.jsx +0 -37
- package/src/plugins/toolbar/__tests__/toolbar-buttons.test.jsx +0 -51
- package/src/plugins/toolbar/__tests__/toolbar.test.jsx +0 -106
- package/src/plugins/toolbar/default-toolbar.jsx +0 -206
- package/src/plugins/toolbar/editor-and-toolbar.jsx +0 -257
- package/src/plugins/toolbar/index.jsx +0 -23
- package/src/plugins/toolbar/toolbar-buttons.jsx +0 -138
- package/src/plugins/toolbar/toolbar.jsx +0 -338
- package/src/plugins/utils.js +0 -31
- package/src/serialization.jsx +0 -621
- /package/src/{plugins → components}/characters/custom-popper.js +0 -0
- /package/src/{plugins/toolbar → components/common}/done-button.jsx +0 -0
- /package/src/{plugins/css/icons/index.jsx → components/icons/CssIcon.jsx} +0 -0
- /package/src/{plugins/respArea/icons/index.jsx → components/icons/RespArea.jsx} +0 -0
- /package/src/{plugins/table/icons/index.jsx → components/icons/TableIcons.jsx} +0 -0
- /package/src/{plugins/textAlign/icons/index.jsx → components/icons/TextAlign.jsx} +0 -0
- /package/src/{plugins/respArea/drag-in-the-blank/index.jsx → components/respArea/DragInTheBlank/DragInTheBlank.jsx} +0 -0
- /package/src/{plugins/respArea/explicit-constructed-response/index.jsx → components/respArea/ExplicitConstructedResponse.jsx} +0 -0
package/lib/index.js
CHANGED
|
@@ -1,1497 +1,32 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
3
|
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
4
|
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
|
-
exports
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
16
|
-
|
|
17
|
-
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
18
|
-
|
|
19
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
20
|
-
|
|
21
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
22
|
-
|
|
23
|
-
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
24
|
-
|
|
25
|
-
var _client = require("react-dom/client");
|
|
26
|
-
|
|
27
|
-
var _prosemirrorState = require("prosemirror-state");
|
|
28
|
-
|
|
29
|
-
var _extensionTextStyle = require("@tiptap/extension-text-style");
|
|
30
|
-
|
|
31
|
-
var _react2 = require("@tiptap/react");
|
|
32
|
-
|
|
33
|
-
var _starterKit = _interopRequireDefault(require("@tiptap/starter-kit"));
|
|
34
|
-
|
|
35
|
-
var _extensionTable = require("@tiptap/extension-table");
|
|
36
|
-
|
|
37
|
-
var _extensionTableRow = require("@tiptap/extension-table-row");
|
|
38
|
-
|
|
39
|
-
var _extensionTableCell = require("@tiptap/extension-table-cell");
|
|
40
|
-
|
|
41
|
-
var _extensionTableHeader = require("@tiptap/extension-table-header");
|
|
42
|
-
|
|
43
|
-
var _extensionSuperscript = _interopRequireDefault(require("@tiptap/extension-superscript"));
|
|
44
|
-
|
|
45
|
-
var _extensionSubscript = _interopRequireDefault(require("@tiptap/extension-subscript"));
|
|
46
|
-
|
|
47
|
-
var _extensionTextAlign = _interopRequireDefault(require("@tiptap/extension-text-align"));
|
|
48
|
-
|
|
49
|
-
var _extensionImage = _interopRequireDefault(require("@tiptap/extension-image"));
|
|
50
|
-
|
|
51
|
-
var _styles = require("@material-ui/core/styles");
|
|
52
|
-
|
|
53
|
-
var _responseArea = require("./extensions/responseArea");
|
|
54
|
-
|
|
55
|
-
var _math = require("./extensions/math");
|
|
56
|
-
|
|
57
|
-
var _classnames = _interopRequireDefault(require("classnames"));
|
|
58
|
-
|
|
59
|
-
var _renderUi = require("@pie-lib/render-ui");
|
|
60
|
-
|
|
61
|
-
var _theme = require("./theme");
|
|
62
|
-
|
|
63
|
-
var _constants = require("./constants");
|
|
64
|
-
|
|
65
|
-
var _doneButton = require("./plugins/toolbar/done-button");
|
|
66
|
-
|
|
67
|
-
var _index = require("./plugins/index");
|
|
68
|
-
|
|
69
|
-
var _FormatBold = _interopRequireDefault(require("@material-ui/icons/FormatBold"));
|
|
70
|
-
|
|
71
|
-
var _FormatItalic = _interopRequireDefault(require("@material-ui/icons/FormatItalic"));
|
|
72
|
-
|
|
73
|
-
var _FormatStrikethrough = _interopRequireDefault(require("@material-ui/icons/FormatStrikethrough"));
|
|
74
|
-
|
|
75
|
-
var _Code = _interopRequireDefault(require("@material-ui/icons/Code"));
|
|
76
|
-
|
|
77
|
-
var _GridOn = _interopRequireDefault(require("@material-ui/icons/GridOn"));
|
|
78
|
-
|
|
79
|
-
var _FormatListBulleted = _interopRequireDefault(require("@material-ui/icons/FormatListBulleted"));
|
|
80
|
-
|
|
81
|
-
var _FormatListNumbered = _interopRequireDefault(require("@material-ui/icons/FormatListNumbered"));
|
|
82
|
-
|
|
83
|
-
var _FormatUnderlined = _interopRequireDefault(require("@material-ui/icons/FormatUnderlined"));
|
|
84
|
-
|
|
85
|
-
var _Functions = _interopRequireDefault(require("@material-ui/icons/Functions"));
|
|
86
|
-
|
|
87
|
-
var _Image = _interopRequireDefault(require("@material-ui/icons/Image"));
|
|
88
|
-
|
|
89
|
-
var _icons = require("./plugins/respArea/icons");
|
|
90
|
-
|
|
91
|
-
var _Redo = _interopRequireDefault(require("@material-ui/icons/Redo"));
|
|
92
|
-
|
|
93
|
-
var _Undo = _interopRequireDefault(require("@material-ui/icons/Undo"));
|
|
94
|
-
|
|
95
|
-
var _Theaters = _interopRequireDefault(require("@material-ui/icons/Theaters"));
|
|
96
|
-
|
|
97
|
-
var _VolumeUp = _interopRequireDefault(require("@material-ui/icons/VolumeUp"));
|
|
98
|
-
|
|
99
|
-
var _utils = require("./plugins/characters/utils");
|
|
100
|
-
|
|
101
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
102
|
-
|
|
103
|
-
var _mathToolbar = require("@pie-lib/math-toolbar");
|
|
104
|
-
|
|
105
|
-
var _get = _interopRequireDefault(require("lodash/get"));
|
|
106
|
-
|
|
107
|
-
var _customPopper = _interopRequireDefault(require("./plugins/characters/custom-popper"));
|
|
108
|
-
|
|
109
|
-
var _icons2 = _interopRequireDefault(require("./plugins/textAlign/icons"));
|
|
110
|
-
|
|
111
|
-
var _icons3 = _interopRequireDefault(require("./plugins/css/icons"));
|
|
112
|
-
|
|
113
|
-
var _image = require("./extensions/image");
|
|
114
|
-
|
|
115
|
-
var _media = require("./extensions/media");
|
|
116
|
-
|
|
117
|
-
var _css = require("./extensions/css");
|
|
118
|
-
|
|
119
|
-
var _icons4 = require("./plugins/table/icons");
|
|
120
|
-
|
|
121
|
-
var _BorderAll = _interopRequireDefault(require("@material-ui/icons/BorderAll"));
|
|
122
|
-
|
|
123
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
124
|
-
|
|
125
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
126
|
-
|
|
127
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
128
|
-
|
|
129
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
130
|
-
|
|
131
|
-
var CharacterIcon = function CharacterIcon(_ref) {
|
|
132
|
-
var letter = _ref.letter;
|
|
133
|
-
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
134
|
-
style: {
|
|
135
|
-
fontSize: '24px',
|
|
136
|
-
lineHeight: '24px'
|
|
137
|
-
}
|
|
138
|
-
}, letter);
|
|
139
|
-
};
|
|
140
|
-
|
|
141
|
-
CharacterIcon.propTypes = {
|
|
142
|
-
letter: _propTypes["default"].string
|
|
143
|
-
};
|
|
144
|
-
|
|
145
|
-
function CharacterPicker(_ref2) {
|
|
146
|
-
var _opts$characters;
|
|
147
|
-
|
|
148
|
-
var editor = _ref2.editor,
|
|
149
|
-
opts = _ref2.opts,
|
|
150
|
-
onClose = _ref2.onClose;
|
|
151
|
-
|
|
152
|
-
if (!(opts !== null && opts !== void 0 && (_opts$characters = opts.characters) !== null && _opts$characters !== void 0 && _opts$characters.length)) {
|
|
153
|
-
return null;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
var containerRef = (0, _react.useRef)(null);
|
|
157
|
-
|
|
158
|
-
var _useState = (0, _react.useState)({
|
|
159
|
-
top: 0,
|
|
160
|
-
left: 0
|
|
161
|
-
}),
|
|
162
|
-
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
163
|
-
position = _useState2[0],
|
|
164
|
-
setPosition = _useState2[1];
|
|
165
|
-
|
|
166
|
-
var _useState3 = (0, _react.useState)(null),
|
|
167
|
-
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
168
|
-
popover = _useState4[0],
|
|
169
|
-
setPopover = _useState4[1];
|
|
170
|
-
|
|
171
|
-
var configToUse;
|
|
172
|
-
|
|
173
|
-
switch (true) {
|
|
174
|
-
case opts.language === 'spanish':
|
|
175
|
-
configToUse = _utils.spanishConfig;
|
|
176
|
-
break;
|
|
177
|
-
|
|
178
|
-
case opts.language === 'special':
|
|
179
|
-
configToUse = _utils.specialConfig;
|
|
180
|
-
break;
|
|
181
|
-
|
|
182
|
-
default:
|
|
183
|
-
configToUse = opts;
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
var layoutForCharacters = configToUse.characters.reduce(function (obj, arr) {
|
|
187
|
-
if (arr.length >= obj.columns) {
|
|
188
|
-
obj.columns = arr.length;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
return obj;
|
|
192
|
-
}, {
|
|
193
|
-
rows: configToUse.characters.length,
|
|
194
|
-
columns: 0
|
|
195
|
-
});
|
|
196
|
-
(0, _react.useEffect)(function () {
|
|
197
|
-
return function () {
|
|
198
|
-
closePopOver();
|
|
199
|
-
};
|
|
200
|
-
}, []);
|
|
201
|
-
(0, _react.useEffect)(function () {
|
|
202
|
-
if (!editor) return; // Calculate position relative to selection
|
|
203
|
-
|
|
204
|
-
var bodyRect = document.body.getBoundingClientRect();
|
|
205
|
-
var from = editor.state.selection.from;
|
|
206
|
-
var start = editor.view.coordsAtPos(from);
|
|
207
|
-
setPosition({
|
|
208
|
-
top: start.top + Math.abs(bodyRect.top) + 40,
|
|
209
|
-
// shift above
|
|
210
|
-
left: start.left
|
|
211
|
-
});
|
|
212
|
-
|
|
213
|
-
var handleClickOutside = function handleClickOutside(e) {
|
|
214
|
-
if (containerRef.current && !containerRef.current.contains(e.target) && !editor.view.dom.contains(e.target)) {
|
|
215
|
-
onClose();
|
|
216
|
-
}
|
|
217
|
-
};
|
|
218
|
-
|
|
219
|
-
document.addEventListener('mousedown', handleClickOutside);
|
|
220
|
-
return function () {
|
|
221
|
-
return document.removeEventListener('mousedown', handleClickOutside);
|
|
222
|
-
};
|
|
223
|
-
}, [editor]);
|
|
224
|
-
|
|
225
|
-
var renderPopOver = function renderPopOver(event, el) {
|
|
226
|
-
return setPopover({
|
|
227
|
-
anchorEl: event.currentTarget,
|
|
228
|
-
el: el
|
|
229
|
-
});
|
|
230
|
-
};
|
|
231
|
-
|
|
232
|
-
var closePopOver = function closePopOver() {
|
|
233
|
-
return setPopover(null);
|
|
234
|
-
};
|
|
235
|
-
|
|
236
|
-
var handleChange = function handleChange(val) {
|
|
237
|
-
if (typeof val === 'string') {
|
|
238
|
-
editor.chain().focus().insertContent(val).run();
|
|
239
|
-
}
|
|
240
|
-
};
|
|
241
|
-
|
|
242
|
-
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_reactDom["default"].createPortal( /*#__PURE__*/_react["default"].createElement("div", {
|
|
243
|
-
ref: containerRef,
|
|
244
|
-
className: "insert-character-dialog",
|
|
245
|
-
style: {
|
|
246
|
-
position: 'absolute',
|
|
247
|
-
top: "".concat(position.top, "px"),
|
|
248
|
-
left: "".concat(position.left, "px"),
|
|
249
|
-
maxWidth: '500px'
|
|
250
|
-
}
|
|
251
|
-
}, /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(_mathToolbar.PureToolbar, {
|
|
252
|
-
keyPadCharacterRef: opts.keyPadCharacterRef,
|
|
253
|
-
setKeypadInteraction: opts.setKeypadInteraction,
|
|
254
|
-
autoFocus: true,
|
|
255
|
-
noDecimal: true,
|
|
256
|
-
hideInput: true,
|
|
257
|
-
noLatexHandling: true,
|
|
258
|
-
hideDoneButtonBackground: true,
|
|
259
|
-
layoutForKeyPad: layoutForCharacters,
|
|
260
|
-
additionalKeys: configToUse.characters.reduce(function (arr, n) {
|
|
261
|
-
arr = [].concat((0, _toConsumableArray2["default"])(arr), (0, _toConsumableArray2["default"])(n.map(function (k) {
|
|
262
|
-
return _objectSpread({
|
|
263
|
-
name: (0, _get["default"])(k, 'name') || k,
|
|
264
|
-
write: (0, _get["default"])(k, 'write') || k,
|
|
265
|
-
label: (0, _get["default"])(k, 'label') || k,
|
|
266
|
-
category: 'character',
|
|
267
|
-
extraClass: 'character',
|
|
268
|
-
extraProps: _objectSpread(_objectSpread({}, k.extraProps || {}), {}, {
|
|
269
|
-
style: _objectSpread(_objectSpread({}, (k.extraProps || {}).style), {}, {
|
|
270
|
-
border: '1px solid #000'
|
|
271
|
-
})
|
|
272
|
-
})
|
|
273
|
-
}, configToUse.hasPreview ? {
|
|
274
|
-
actions: {
|
|
275
|
-
onMouseEnter: function onMouseEnter(ev) {
|
|
276
|
-
return renderPopOver(ev, k);
|
|
277
|
-
},
|
|
278
|
-
onMouseLeave: closePopOver
|
|
279
|
-
}
|
|
280
|
-
} : {});
|
|
281
|
-
})));
|
|
282
|
-
return arr;
|
|
283
|
-
}, []),
|
|
284
|
-
keypadMode: "language",
|
|
285
|
-
onChange: handleChange,
|
|
286
|
-
onDone: onClose
|
|
287
|
-
}))), document.body), popover && /*#__PURE__*/_reactDom["default"].createPortal( /*#__PURE__*/_react["default"].createElement(_customPopper["default"], {
|
|
288
|
-
onClose: closePopOver,
|
|
289
|
-
anchorEl: popover.anchorEl
|
|
290
|
-
}, /*#__PURE__*/_react["default"].createElement("div", null, popover.el.label), /*#__PURE__*/_react["default"].createElement("div", {
|
|
291
|
-
style: {
|
|
292
|
-
fontSize: 20,
|
|
293
|
-
lineHeight: '20px'
|
|
294
|
-
}
|
|
295
|
-
}, popover.el.description), /*#__PURE__*/_react["default"].createElement("div", {
|
|
296
|
-
style: {
|
|
297
|
-
fontSize: 20,
|
|
298
|
-
lineHeight: '20px'
|
|
299
|
-
}
|
|
300
|
-
}, popover.el.unicode)), document.body));
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
var SuperscriptIcon = function SuperscriptIcon() {
|
|
304
|
-
return /*#__PURE__*/_react["default"].createElement("svg", {
|
|
305
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
306
|
-
height: "24px",
|
|
307
|
-
viewBox: "0 0 24 24",
|
|
308
|
-
width: "24px",
|
|
309
|
-
fill: "none"
|
|
310
|
-
}, /*#__PURE__*/_react["default"].createElement("path", {
|
|
311
|
-
d: "M22,7h-2v1h3v1h-4V7c0-0.55,0.45-1,1-1h2V5h-3V4h3c0.55,0,1,0.45,1,1v1C23,6.55,22.55,7,22,7z M5.88,20h2.66l3.4-5.42h0.12 l3.4,5.42h2.66l-4.65-7.27L17.81,6h-2.68l-3.07,4.99h-0.12L8.85,6H6.19l4.32,6.73L5.88,20z",
|
|
312
|
-
fill: "currentColor"
|
|
313
|
-
}));
|
|
314
|
-
};
|
|
315
|
-
|
|
316
|
-
var SubscriptIcon = function SubscriptIcon() {
|
|
317
|
-
return /*#__PURE__*/_react["default"].createElement("svg", {
|
|
318
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
319
|
-
height: "24px",
|
|
320
|
-
viewBox: "0 0 24 24",
|
|
321
|
-
width: "24px",
|
|
322
|
-
fill: "none"
|
|
323
|
-
}, /*#__PURE__*/_react["default"].createElement("path", {
|
|
324
|
-
d: "M22,18h-2v1h3v1h-4v-2c0-0.55,0.45-1,1-1h2v-1h-3v-1h3c0.55,0,1,0.45,1,1v1C23,17.55,22.55,18,22,18z M5.88,18h2.66 l3.4-5.42h0.12l3.4,5.42h2.66l-4.65-7.27L17.81,4h-2.68l-3.07,4.99h-0.12L8.85,4H6.19l4.32,6.73L5.88,18z",
|
|
325
|
-
fill: "currentColor"
|
|
326
|
-
}));
|
|
327
|
-
};
|
|
328
|
-
|
|
329
|
-
var HeadingIcon = function HeadingIcon() {
|
|
330
|
-
return /*#__PURE__*/_react["default"].createElement("svg", {
|
|
331
|
-
width: "30",
|
|
332
|
-
height: "28",
|
|
333
|
-
viewBox: "0 0 30 28",
|
|
334
|
-
fill: "none",
|
|
335
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
336
|
-
style: {
|
|
337
|
-
width: '20px',
|
|
338
|
-
height: '18px'
|
|
339
|
-
}
|
|
340
|
-
}, /*#__PURE__*/_react["default"].createElement("path", {
|
|
341
|
-
d: "M27 4V24H29C29.5 24 30 24.5 30 25V27C30 27.5625 29.5 28 29 28H19C18.4375 28 18 27.5625 18 27V25C18 24.5 18.4375 24 19 24H21V16H9V24H11C11.5 24 12 24.5 12 25V27C12 27.5625 11.5 28 11 28H1C0.4375 28 0 27.5625 0 27V25C0 24.5 0.4375 24 1 24H3V4H1C0.4375 4 0 3.5625 0 3V1C0 0.5 0.4375 0 1 0H11C11.5 0 12 0.5 12 1V3C12 3.5625 11.5 4 11 4H9V12H21V4H19C18.4375 4 18 3.5625 18 3V1C18 0.5 18.4375 0 19 0H29C29.5 0 30 0.5 30 1V3C30 3.5625 29.5 4 29 4H27Z",
|
|
342
|
-
fill: "currentColor"
|
|
343
|
-
}));
|
|
344
|
-
};
|
|
345
|
-
|
|
346
|
-
var ExtendedTable = _extensionTable.Table.extend({
|
|
347
|
-
addAttributes: function addAttributes() {
|
|
348
|
-
return {
|
|
349
|
-
border: {
|
|
350
|
-
"default": '1'
|
|
351
|
-
}
|
|
352
|
-
};
|
|
353
|
-
},
|
|
354
|
-
renderHTML: function renderHTML(props) {
|
|
355
|
-
var originalTable = this.parent(props);
|
|
356
|
-
var border = props.HTMLAttributes.border;
|
|
357
|
-
var previousStyle = "".concat(originalTable[1].style).concat(originalTable[1].style.match(/.*; */) ? '' : ';');
|
|
358
|
-
originalTable[1].style = "".concat(previousStyle, "\n width: 100%;\n color: var(--pie-text, black);\n table-layout: fixed;\n border-collapse: collapse;\n background-color: var(--pie-background, rgba(255, 255, 255))");
|
|
359
|
-
originalTable[1].border = border ? border : '1';
|
|
360
|
-
return originalTable;
|
|
8
|
+
Object.defineProperty(exports, "ALL_PLUGINS", {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
get: function get() {
|
|
11
|
+
return _extensions.ALL_PLUGINS;
|
|
361
12
|
}
|
|
362
13
|
});
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
position: 'relative',
|
|
368
|
-
padding: '0px',
|
|
369
|
-
border: '1px solid #ccc',
|
|
370
|
-
borderRadius: '4px',
|
|
371
|
-
cursor: 'text',
|
|
372
|
-
'& [data-slate-editor="true"]': {
|
|
373
|
-
wordBreak: 'break-word',
|
|
374
|
-
overflow: 'visible',
|
|
375
|
-
maxHeight: '500px',
|
|
376
|
-
// needed in order to be able to put the focus before a void element when it is the first one in the editor
|
|
377
|
-
padding: '5px'
|
|
378
|
-
},
|
|
379
|
-
'&:first-child': {
|
|
380
|
-
marginTop: 0
|
|
381
|
-
},
|
|
382
|
-
'& ul, & ol': {
|
|
383
|
-
padding: '0 1rem',
|
|
384
|
-
margin: '1.25rem 1rem 1.25rem 0.4rem'
|
|
385
|
-
},
|
|
386
|
-
'& ul li p, & ol li p': {
|
|
387
|
-
marginTop: '0.25em',
|
|
388
|
-
marginBottom: '0.25em'
|
|
389
|
-
},
|
|
390
|
-
'& h1, & h2, & h3, & h4, & h5, & h6': {
|
|
391
|
-
lineHeight: 1.1,
|
|
392
|
-
marginTop: '2.5rem',
|
|
393
|
-
textWrap: 'pretty'
|
|
394
|
-
},
|
|
395
|
-
'& h1, & h2': {
|
|
396
|
-
marginTop: '3.5rem',
|
|
397
|
-
marginBottom: '1.5rem'
|
|
398
|
-
},
|
|
399
|
-
'& h1': {
|
|
400
|
-
fontSize: '1.4rem'
|
|
401
|
-
},
|
|
402
|
-
'& h2': {
|
|
403
|
-
fontSize: '1.2rem'
|
|
404
|
-
},
|
|
405
|
-
'& h3': {
|
|
406
|
-
fontSize: '1.1rem'
|
|
407
|
-
},
|
|
408
|
-
'& h4, & h5, & h6': {
|
|
409
|
-
fontSize: '1rem'
|
|
410
|
-
},
|
|
411
|
-
'& code': {
|
|
412
|
-
backgroundColor: 'var(--purple-light)',
|
|
413
|
-
borderRadius: '0.4rem',
|
|
414
|
-
color: 'var(--black)',
|
|
415
|
-
fontSize: '0.85rem',
|
|
416
|
-
padding: '0.25em 0.3em'
|
|
417
|
-
},
|
|
418
|
-
'& pre': {
|
|
419
|
-
background: 'var(--black)',
|
|
420
|
-
borderRadius: '0.5rem',
|
|
421
|
-
color: 'var(--white)',
|
|
422
|
-
fontFamily: "'JetBrainsMono', monospace",
|
|
423
|
-
margin: '1.5rem 0',
|
|
424
|
-
padding: '0.75rem 1rem',
|
|
425
|
-
'& code': {
|
|
426
|
-
background: 'none',
|
|
427
|
-
color: 'inherit',
|
|
428
|
-
fontSize: '0.8rem',
|
|
429
|
-
padding: 0
|
|
430
|
-
}
|
|
431
|
-
},
|
|
432
|
-
'& blockquote': {
|
|
433
|
-
borderLeft: '3px solid var(--gray-3)',
|
|
434
|
-
margin: '1.5rem 0',
|
|
435
|
-
paddingLeft: '1rem'
|
|
436
|
-
},
|
|
437
|
-
'& hr': {
|
|
438
|
-
border: 'none',
|
|
439
|
-
borderTop: '1px solid var(--gray-2)',
|
|
440
|
-
margin: '2rem 0'
|
|
441
|
-
},
|
|
442
|
-
'& table': {
|
|
443
|
-
tableLayout: 'fixed',
|
|
444
|
-
width: '100%',
|
|
445
|
-
borderCollapse: 'collapse',
|
|
446
|
-
color: _renderUi.color.text(),
|
|
447
|
-
backgroundColor: _renderUi.color.background()
|
|
448
|
-
},
|
|
449
|
-
'& table:not([border="1"]) tr': {
|
|
450
|
-
borderTop: '1px solid #dfe2e5'
|
|
451
|
-
},
|
|
452
|
-
'& td, th': {
|
|
453
|
-
padding: '.6em 1em',
|
|
454
|
-
textAlign: 'center'
|
|
455
|
-
},
|
|
456
|
-
'& table:not([border="1"]) td, th': {
|
|
457
|
-
border: '1px solid #dfe2e5'
|
|
458
|
-
}
|
|
459
|
-
},
|
|
460
|
-
children: {
|
|
461
|
-
padding: '10px 16px'
|
|
462
|
-
},
|
|
463
|
-
editorHolder: {
|
|
464
|
-
position: 'relative',
|
|
465
|
-
padding: '0px',
|
|
466
|
-
// overflowY: 'auto',
|
|
467
|
-
overflow: 'visible',
|
|
468
|
-
color: _renderUi.color.text(),
|
|
469
|
-
backgroundColor: _renderUi.color.background(),
|
|
470
|
-
'&::before': {
|
|
471
|
-
left: '0',
|
|
472
|
-
right: '0',
|
|
473
|
-
bottom: '0',
|
|
474
|
-
height: '1px',
|
|
475
|
-
content: '""',
|
|
476
|
-
position: 'absolute',
|
|
477
|
-
transition: 'background-color 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms',
|
|
478
|
-
pointerEvents: 'none',
|
|
479
|
-
backgroundColor: 'rgba(0, 0, 0, 0.42)'
|
|
480
|
-
},
|
|
481
|
-
'&::after': {
|
|
482
|
-
left: '0',
|
|
483
|
-
right: '0',
|
|
484
|
-
bottom: '0',
|
|
485
|
-
height: '1px',
|
|
486
|
-
content: '""',
|
|
487
|
-
position: 'absolute',
|
|
488
|
-
transform: 'scaleX(0)',
|
|
489
|
-
transition: 'transform 200ms cubic-bezier(0.0, 0.0, 0.2, 1) 0ms, background-color 200ms linear',
|
|
490
|
-
backgroundColor: 'rgba(0, 0, 0, 0.42)'
|
|
491
|
-
},
|
|
492
|
-
'&:focus': {
|
|
493
|
-
'&::after': {
|
|
494
|
-
transform: 'scaleX(1)',
|
|
495
|
-
backgroundColor: _theme.primary,
|
|
496
|
-
height: '2px'
|
|
497
|
-
}
|
|
498
|
-
},
|
|
499
|
-
'&:hover': {
|
|
500
|
-
'&::after': {
|
|
501
|
-
transform: 'scaleX(1)',
|
|
502
|
-
backgroundColor: theme.palette.common.black,
|
|
503
|
-
height: '2px'
|
|
504
|
-
}
|
|
505
|
-
}
|
|
506
|
-
},
|
|
507
|
-
disabledUnderline: {
|
|
508
|
-
'&::before': {
|
|
509
|
-
display: 'none'
|
|
510
|
-
},
|
|
511
|
-
'&::after': {
|
|
512
|
-
display: 'none'
|
|
513
|
-
}
|
|
514
|
-
},
|
|
515
|
-
disabledScrollbar: {
|
|
516
|
-
'&::-webkit-scrollbar': {
|
|
517
|
-
display: 'none'
|
|
518
|
-
},
|
|
519
|
-
scrollbarWidth: 'none',
|
|
520
|
-
'-ms-overflow-style': 'none'
|
|
521
|
-
},
|
|
522
|
-
readOnly: {
|
|
523
|
-
'&::before': {
|
|
524
|
-
background: 'transparent',
|
|
525
|
-
backgroundSize: '5px 1px',
|
|
526
|
-
backgroundImage: 'linear-gradient(to right, rgba(0, 0, 0, 0.42) 33%, transparent 0%)',
|
|
527
|
-
backgroundRepeat: 'repeat-x',
|
|
528
|
-
backgroundPosition: 'left top'
|
|
529
|
-
},
|
|
530
|
-
'&::after': {
|
|
531
|
-
left: '0',
|
|
532
|
-
right: '0',
|
|
533
|
-
bottom: '0',
|
|
534
|
-
height: '1px',
|
|
535
|
-
content: '""',
|
|
536
|
-
position: 'absolute',
|
|
537
|
-
transform: 'scaleX(0)',
|
|
538
|
-
transition: 'transform 200ms cubic-bezier(0.0, 0.0, 0.2, 1) 0ms, background-color 0ms linear',
|
|
539
|
-
backgroundColor: 'rgba(0, 0, 0, 0)'
|
|
540
|
-
},
|
|
541
|
-
'&:hover': {
|
|
542
|
-
'&::after': {
|
|
543
|
-
transform: 'scaleX(0)',
|
|
544
|
-
backgroundColor: theme.palette.common.black,
|
|
545
|
-
height: '2px'
|
|
546
|
-
}
|
|
547
|
-
}
|
|
548
|
-
},
|
|
549
|
-
editorInFocus: {
|
|
550
|
-
'&::after': {
|
|
551
|
-
transform: 'scaleX(1)',
|
|
552
|
-
backgroundColor: _theme.primary,
|
|
553
|
-
height: '2px'
|
|
554
|
-
},
|
|
555
|
-
'&:hover': {
|
|
556
|
-
'&::after': {
|
|
557
|
-
backgroundColor: _theme.primary
|
|
558
|
-
}
|
|
559
|
-
}
|
|
560
|
-
},
|
|
561
|
-
error: {
|
|
562
|
-
border: "2px solid ".concat(theme.palette.error.main, " !important")
|
|
563
|
-
},
|
|
564
|
-
noBorder: {
|
|
565
|
-
border: 'none'
|
|
566
|
-
},
|
|
567
|
-
noPadding: {
|
|
568
|
-
padding: 0
|
|
569
|
-
},
|
|
570
|
-
toolbarOnTop: {
|
|
571
|
-
marginTop: '45px'
|
|
572
|
-
}
|
|
573
|
-
};
|
|
574
|
-
};
|
|
575
|
-
|
|
576
|
-
var defaultResponseAreaProps = {
|
|
577
|
-
options: {},
|
|
578
|
-
respAreaToolbar: function respAreaToolbar() {},
|
|
579
|
-
onHandleAreaChange: function onHandleAreaChange() {}
|
|
580
|
-
};
|
|
581
|
-
|
|
582
|
-
var valueToSize = function valueToSize(v) {
|
|
583
|
-
if (!v) {
|
|
584
|
-
return;
|
|
585
|
-
}
|
|
586
|
-
|
|
587
|
-
var calcRegex = /^calc\((.*)\)$/;
|
|
588
|
-
|
|
589
|
-
if (typeof v === 'string') {
|
|
590
|
-
if (v.endsWith('%')) {
|
|
591
|
-
return undefined;
|
|
592
|
-
} else if (v.endsWith('px') || v.endsWith('vh') || v.endsWith('vw') || v.endsWith('ch') || v.endsWith('em') || v.match(calcRegex)) {
|
|
593
|
-
return v;
|
|
594
|
-
} else {
|
|
595
|
-
var value = parseInt(v, 10);
|
|
596
|
-
return isNaN(value) ? value : "".concat(value, "px");
|
|
597
|
-
}
|
|
14
|
+
Object.defineProperty(exports, "EditableHtml", {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: function get() {
|
|
17
|
+
return _EditableHtml.EditableHtml;
|
|
598
18
|
}
|
|
19
|
+
});
|
|
20
|
+
exports["default"] = void 0;
|
|
599
21
|
|
|
600
|
-
|
|
601
|
-
return "".concat(v, "px");
|
|
602
|
-
}
|
|
603
|
-
};
|
|
604
|
-
|
|
605
|
-
function TiptapContainer(props) {
|
|
606
|
-
var _classNames, _classNames2;
|
|
607
|
-
|
|
608
|
-
var editor = props.editor,
|
|
609
|
-
editorState = props.editorState,
|
|
610
|
-
classes = props.classes,
|
|
611
|
-
children = props.children,
|
|
612
|
-
disableUnderline = props.disableUnderline,
|
|
613
|
-
disableScrollbar = props.disableScrollbar,
|
|
614
|
-
activePlugins = props.activePlugins,
|
|
615
|
-
toolbarOpts = props.toolbarOpts,
|
|
616
|
-
responseAreaProps = props.responseAreaProps,
|
|
617
|
-
autoFocus = props.autoFocus,
|
|
618
|
-
minWidth = props.minWidth,
|
|
619
|
-
width = props.width,
|
|
620
|
-
maxWidth = props.maxWidth,
|
|
621
|
-
minHeight = props.minHeight,
|
|
622
|
-
height = props.height,
|
|
623
|
-
maxHeight = props.maxHeight;
|
|
624
|
-
var holderNames = (0, _classnames["default"])(classes.editorHolder, (_classNames = {}, (0, _defineProperty2["default"])(_classNames, classes.editorInFocus, editorState.isFocused), (0, _defineProperty2["default"])(_classNames, classes.readOnly, editorState.readOnly), (0, _defineProperty2["default"])(_classNames, classes.disabledUnderline, disableUnderline), (0, _defineProperty2["default"])(_classNames, classes.disabledScrollbar, disableScrollbar), _classNames));
|
|
625
|
-
(0, _react.useEffect)(function () {
|
|
626
|
-
if (editor && autoFocus) {
|
|
627
|
-
Promise.resolve().then(function () {
|
|
628
|
-
editor.commands.focus('end');
|
|
629
|
-
});
|
|
630
|
-
}
|
|
631
|
-
}, [editor, autoFocus]);
|
|
632
|
-
var sizeStyle = (0, _react.useMemo)(function () {
|
|
633
|
-
return {
|
|
634
|
-
width: valueToSize(width),
|
|
635
|
-
minWidth: valueToSize(minWidth),
|
|
636
|
-
maxWidth: valueToSize(maxWidth),
|
|
637
|
-
height: valueToSize(height),
|
|
638
|
-
minHeight: valueToSize(minHeight),
|
|
639
|
-
maxHeight: valueToSize(maxHeight)
|
|
640
|
-
};
|
|
641
|
-
}, [minWidth, width, maxWidth, minHeight, height, maxHeight]);
|
|
642
|
-
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
643
|
-
className: (0, _classnames["default"])((_classNames2 = {}, (0, _defineProperty2["default"])(_classNames2, classes.noBorder, toolbarOpts && toolbarOpts.noBorder), (0, _defineProperty2["default"])(_classNames2, classes.error, toolbarOpts && toolbarOpts.error), _classNames2), classes.root, props.className),
|
|
644
|
-
style: {
|
|
645
|
-
width: sizeStyle.width,
|
|
646
|
-
minWidth: sizeStyle.minWidth,
|
|
647
|
-
maxWidth: sizeStyle.maxWidth
|
|
648
|
-
}
|
|
649
|
-
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
650
|
-
className: holderNames
|
|
651
|
-
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
652
|
-
className: (0, _classnames["default"])((0, _defineProperty2["default"])({}, classes.noPadding, toolbarOpts && toolbarOpts.noPadding), classes.children)
|
|
653
|
-
}, children)), editor && /*#__PURE__*/_react["default"].createElement(StyledMenuBar, {
|
|
654
|
-
editor: editor,
|
|
655
|
-
responseAreaProps: responseAreaProps,
|
|
656
|
-
toolbarOpts: toolbarOpts,
|
|
657
|
-
activePlugins: activePlugins,
|
|
658
|
-
onChange: props.onChange
|
|
659
|
-
}));
|
|
660
|
-
}
|
|
661
|
-
|
|
662
|
-
var EditorContainer = (0, _styles.withStyles)(styles)(TiptapContainer);
|
|
663
|
-
|
|
664
|
-
function MenuBar(_ref3) {
|
|
665
|
-
var _classNames4;
|
|
666
|
-
|
|
667
|
-
var editor = _ref3.editor,
|
|
668
|
-
classes = _ref3.classes,
|
|
669
|
-
activePlugins = _ref3.activePlugins,
|
|
670
|
-
toolOpts = _ref3.toolbarOpts,
|
|
671
|
-
responseAreaProps = _ref3.responseAreaProps,
|
|
672
|
-
onChange = _ref3.onChange;
|
|
673
|
-
|
|
674
|
-
var _useState5 = (0, _react.useState)(false),
|
|
675
|
-
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
676
|
-
showPicker = _useState6[0],
|
|
677
|
-
setShowPicker = _useState6[1];
|
|
678
|
-
|
|
679
|
-
var toolbarOpts = toolOpts !== null && toolOpts !== void 0 ? toolOpts : {}; // Read the current editor's state, and re-render the component when it changes
|
|
680
|
-
|
|
681
|
-
var editorState = (0, _react2.useEditorState)({
|
|
682
|
-
editor: editor,
|
|
683
|
-
selector: function selector(ctx) {
|
|
684
|
-
var _ctx$editor, _ctx$editor2, _ctx$editor3, _ctx$editor4, _ctx$editor5, _ctx$editor$isActive, _ctx$editor$can$chain, _ctx$editor$isActive2, _ref5, _ctx$editor$getAttrib, _ctx$editor$can$chain2, _ctx$editor$isActive3, _ctx$editor$can$chain3, _ctx$editor$isActive4, _ctx$editor$can$chain4, _ctx$editor$isActive5, _ctx$editor$can$chain5, _ctx$editor$can$chain6, _ctx$editor$isActive6, _ctx$editor$isActive7, _ctx$editor$isActive8, _ctx$editor$isActive9, _ctx$editor$isActive10, _ctx$editor$isActive11, _ctx$editor$isActive12, _ctx$editor$isActive13, _ctx$editor$isActive14, _ctx$editor$isActive15, _ctx$editor$isActive16, _ctx$editor$isActive17, _ctx$editor$isActive18, _ctx$editor$isActive19, _ctx$editor$can$chain7, _ctx$editor$can$chain8;
|
|
685
|
-
|
|
686
|
-
var _ref4 = ((_ctx$editor = ctx.editor) === null || _ctx$editor === void 0 ? void 0 : _ctx$editor.state) || {},
|
|
687
|
-
selection = _ref4.selection;
|
|
688
|
-
|
|
689
|
-
var currentNode;
|
|
690
|
-
|
|
691
|
-
if (selection instanceof _prosemirrorState.NodeSelection) {
|
|
692
|
-
currentNode = selection.node; // the selected node
|
|
693
|
-
}
|
|
694
|
-
|
|
695
|
-
var hideDefaultToolbar = ((_ctx$editor2 = ctx.editor) === null || _ctx$editor2 === void 0 ? void 0 : _ctx$editor2.isActive('math')) || ((_ctx$editor3 = ctx.editor) === null || _ctx$editor3 === void 0 ? void 0 : _ctx$editor3.isActive('explicit_constructed_response')) || ((_ctx$editor4 = ctx.editor) === null || _ctx$editor4 === void 0 ? void 0 : _ctx$editor4.isActive('imageUploadNode'));
|
|
696
|
-
return {
|
|
697
|
-
currentNode: currentNode,
|
|
698
|
-
hideDefaultToolbar: hideDefaultToolbar,
|
|
699
|
-
isFocused: (_ctx$editor5 = ctx.editor) === null || _ctx$editor5 === void 0 ? void 0 : _ctx$editor5.isFocused,
|
|
700
|
-
isBold: (_ctx$editor$isActive = ctx.editor.isActive('bold')) !== null && _ctx$editor$isActive !== void 0 ? _ctx$editor$isActive : false,
|
|
701
|
-
canBold: (_ctx$editor$can$chain = ctx.editor.can().chain().toggleBold().run()) !== null && _ctx$editor$can$chain !== void 0 ? _ctx$editor$can$chain : false,
|
|
702
|
-
isTable: (_ctx$editor$isActive2 = ctx.editor.isActive('table')) !== null && _ctx$editor$isActive2 !== void 0 ? _ctx$editor$isActive2 : false,
|
|
703
|
-
tableHasBorder: (_ref5 = ((_ctx$editor$getAttrib = ctx.editor.getAttributes('table')) === null || _ctx$editor$getAttrib === void 0 ? void 0 : _ctx$editor$getAttrib.border) === '1') !== null && _ref5 !== void 0 ? _ref5 : false,
|
|
704
|
-
canTable: (_ctx$editor$can$chain2 = ctx.editor.can().chain().insertTable().run()) !== null && _ctx$editor$can$chain2 !== void 0 ? _ctx$editor$can$chain2 : false,
|
|
705
|
-
isItalic: (_ctx$editor$isActive3 = ctx.editor.isActive('italic')) !== null && _ctx$editor$isActive3 !== void 0 ? _ctx$editor$isActive3 : false,
|
|
706
|
-
canItalic: (_ctx$editor$can$chain3 = ctx.editor.can().chain().toggleItalic().run()) !== null && _ctx$editor$can$chain3 !== void 0 ? _ctx$editor$can$chain3 : false,
|
|
707
|
-
isStrike: (_ctx$editor$isActive4 = ctx.editor.isActive('strike')) !== null && _ctx$editor$isActive4 !== void 0 ? _ctx$editor$isActive4 : false,
|
|
708
|
-
canStrike: (_ctx$editor$can$chain4 = ctx.editor.can().chain().toggleStrike().run()) !== null && _ctx$editor$can$chain4 !== void 0 ? _ctx$editor$can$chain4 : false,
|
|
709
|
-
isCode: (_ctx$editor$isActive5 = ctx.editor.isActive('code')) !== null && _ctx$editor$isActive5 !== void 0 ? _ctx$editor$isActive5 : false,
|
|
710
|
-
canCode: (_ctx$editor$can$chain5 = ctx.editor.can().chain().toggleCode().run()) !== null && _ctx$editor$can$chain5 !== void 0 ? _ctx$editor$can$chain5 : false,
|
|
711
|
-
canClearMarks: (_ctx$editor$can$chain6 = ctx.editor.can().chain().unsetAllMarks().run()) !== null && _ctx$editor$can$chain6 !== void 0 ? _ctx$editor$can$chain6 : false,
|
|
712
|
-
isUnderline: (_ctx$editor$isActive6 = ctx.editor.isActive('underline')) !== null && _ctx$editor$isActive6 !== void 0 ? _ctx$editor$isActive6 : false,
|
|
713
|
-
isSubScript: (_ctx$editor$isActive7 = ctx.editor.isActive('subscript')) !== null && _ctx$editor$isActive7 !== void 0 ? _ctx$editor$isActive7 : false,
|
|
714
|
-
isSuperScript: (_ctx$editor$isActive8 = ctx.editor.isActive('superscript')) !== null && _ctx$editor$isActive8 !== void 0 ? _ctx$editor$isActive8 : false,
|
|
715
|
-
isParagraph: (_ctx$editor$isActive9 = ctx.editor.isActive('paragraph')) !== null && _ctx$editor$isActive9 !== void 0 ? _ctx$editor$isActive9 : false,
|
|
716
|
-
isHeading1: (_ctx$editor$isActive10 = ctx.editor.isActive('heading', {
|
|
717
|
-
level: 1
|
|
718
|
-
})) !== null && _ctx$editor$isActive10 !== void 0 ? _ctx$editor$isActive10 : false,
|
|
719
|
-
isHeading2: (_ctx$editor$isActive11 = ctx.editor.isActive('heading', {
|
|
720
|
-
level: 2
|
|
721
|
-
})) !== null && _ctx$editor$isActive11 !== void 0 ? _ctx$editor$isActive11 : false,
|
|
722
|
-
isHeading3: (_ctx$editor$isActive12 = ctx.editor.isActive('heading', {
|
|
723
|
-
level: 3
|
|
724
|
-
})) !== null && _ctx$editor$isActive12 !== void 0 ? _ctx$editor$isActive12 : false,
|
|
725
|
-
isHeading4: (_ctx$editor$isActive13 = ctx.editor.isActive('heading', {
|
|
726
|
-
level: 4
|
|
727
|
-
})) !== null && _ctx$editor$isActive13 !== void 0 ? _ctx$editor$isActive13 : false,
|
|
728
|
-
isHeading5: (_ctx$editor$isActive14 = ctx.editor.isActive('heading', {
|
|
729
|
-
level: 5
|
|
730
|
-
})) !== null && _ctx$editor$isActive14 !== void 0 ? _ctx$editor$isActive14 : false,
|
|
731
|
-
isHeading6: (_ctx$editor$isActive15 = ctx.editor.isActive('heading', {
|
|
732
|
-
level: 6
|
|
733
|
-
})) !== null && _ctx$editor$isActive15 !== void 0 ? _ctx$editor$isActive15 : false,
|
|
734
|
-
isBulletList: (_ctx$editor$isActive16 = ctx.editor.isActive('bulletList')) !== null && _ctx$editor$isActive16 !== void 0 ? _ctx$editor$isActive16 : false,
|
|
735
|
-
isOrderedList: (_ctx$editor$isActive17 = ctx.editor.isActive('orderedList')) !== null && _ctx$editor$isActive17 !== void 0 ? _ctx$editor$isActive17 : false,
|
|
736
|
-
isCodeBlock: (_ctx$editor$isActive18 = ctx.editor.isActive('codeBlock')) !== null && _ctx$editor$isActive18 !== void 0 ? _ctx$editor$isActive18 : false,
|
|
737
|
-
isBlockquote: (_ctx$editor$isActive19 = ctx.editor.isActive('blockquote')) !== null && _ctx$editor$isActive19 !== void 0 ? _ctx$editor$isActive19 : false,
|
|
738
|
-
canUndo: (_ctx$editor$can$chain7 = ctx.editor.can().chain().undo().run()) !== null && _ctx$editor$can$chain7 !== void 0 ? _ctx$editor$can$chain7 : false,
|
|
739
|
-
canRedo: (_ctx$editor$can$chain8 = ctx.editor.can().chain().redo().run()) !== null && _ctx$editor$can$chain8 !== void 0 ? _ctx$editor$can$chain8 : false
|
|
740
|
-
};
|
|
741
|
-
}
|
|
742
|
-
});
|
|
743
|
-
var hasDoneButton = false;
|
|
744
|
-
var autoWidth = false;
|
|
745
|
-
var names = (0, _classnames["default"])(classes.toolbar, _constants.PIE_TOOLBAR__CLASS, (_classNames4 = {}, (0, _defineProperty2["default"])(_classNames4, classes.toolbarWithNoDone, !hasDoneButton), (0, _defineProperty2["default"])(_classNames4, classes.toolbarTop, toolbarOpts.position === 'top'), (0, _defineProperty2["default"])(_classNames4, classes.toolbarRight, toolbarOpts.alignment === 'right'), (0, _defineProperty2["default"])(_classNames4, classes.focused, toolbarOpts.alwaysVisible || editorState.isFocused && !editor._toolbarOpened), (0, _defineProperty2["default"])(_classNames4, classes.autoWidth, autoWidth), (0, _defineProperty2["default"])(_classNames4, classes.fullWidth, !autoWidth), (0, _defineProperty2["default"])(_classNames4, classes.hidden, toolbarOpts.isHidden === true), _classNames4));
|
|
746
|
-
var customStyles = toolbarOpts.minWidth !== undefined ? {
|
|
747
|
-
minWidth: toolbarOpts.minWidth
|
|
748
|
-
} : {};
|
|
749
|
-
|
|
750
|
-
var handleMouseDown = function handleMouseDown(e) {
|
|
751
|
-
e.preventDefault();
|
|
752
|
-
};
|
|
753
|
-
|
|
754
|
-
var toolbarButtons = (0, _react.useMemo)(function () {
|
|
755
|
-
return [{
|
|
756
|
-
icon: /*#__PURE__*/_react["default"].createElement(_GridOn["default"], null),
|
|
757
|
-
onClick: function onClick(editor) {
|
|
758
|
-
return editor.chain().focus().insertTable({
|
|
759
|
-
rows: 2,
|
|
760
|
-
cols: 2,
|
|
761
|
-
withHeaderRow: false
|
|
762
|
-
}).run();
|
|
763
|
-
},
|
|
764
|
-
hidden: function hidden(state) {
|
|
765
|
-
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('table')) || state.isTable;
|
|
766
|
-
},
|
|
767
|
-
isActive: function isActive(state) {
|
|
768
|
-
return state.isTable;
|
|
769
|
-
},
|
|
770
|
-
isDisabled: function isDisabled(state) {
|
|
771
|
-
return !state.canTable;
|
|
772
|
-
}
|
|
773
|
-
}, {
|
|
774
|
-
icon: /*#__PURE__*/_react["default"].createElement(_icons4.AddRow, null),
|
|
775
|
-
onClick: function onClick(editor) {
|
|
776
|
-
return editor.chain().focus().addRowAfter().run();
|
|
777
|
-
},
|
|
778
|
-
hidden: function hidden(state) {
|
|
779
|
-
return !state.isTable;
|
|
780
|
-
},
|
|
781
|
-
isActive: function isActive(state) {
|
|
782
|
-
return state.isTable;
|
|
783
|
-
},
|
|
784
|
-
isDisabled: function isDisabled(state) {
|
|
785
|
-
return !state.canTable;
|
|
786
|
-
}
|
|
787
|
-
}, {
|
|
788
|
-
icon: /*#__PURE__*/_react["default"].createElement(_icons4.RemoveRow, null),
|
|
789
|
-
onClick: function onClick(editor) {
|
|
790
|
-
return editor.chain().focus().deleteRow().run();
|
|
791
|
-
},
|
|
792
|
-
hidden: function hidden(state) {
|
|
793
|
-
return !state.isTable;
|
|
794
|
-
},
|
|
795
|
-
isActive: function isActive(state) {
|
|
796
|
-
return state.isTable;
|
|
797
|
-
},
|
|
798
|
-
isDisabled: function isDisabled(state) {
|
|
799
|
-
return !state.canTable;
|
|
800
|
-
}
|
|
801
|
-
}, {
|
|
802
|
-
icon: /*#__PURE__*/_react["default"].createElement(_icons4.AddColumn, null),
|
|
803
|
-
onClick: function onClick(editor) {
|
|
804
|
-
return editor.chain().focus().addColumnAfter().run();
|
|
805
|
-
},
|
|
806
|
-
hidden: function hidden(state) {
|
|
807
|
-
return !state.isTable;
|
|
808
|
-
},
|
|
809
|
-
isActive: function isActive(state) {
|
|
810
|
-
return state.isTable;
|
|
811
|
-
},
|
|
812
|
-
isDisabled: function isDisabled(state) {
|
|
813
|
-
return !state.canTable;
|
|
814
|
-
}
|
|
815
|
-
}, {
|
|
816
|
-
icon: /*#__PURE__*/_react["default"].createElement(_icons4.RemoveColumn, null),
|
|
817
|
-
onClick: function onClick(editor) {
|
|
818
|
-
return editor.chain().focus().deleteColumn().run();
|
|
819
|
-
},
|
|
820
|
-
hidden: function hidden(state) {
|
|
821
|
-
return !state.isTable;
|
|
822
|
-
},
|
|
823
|
-
isActive: function isActive(state) {
|
|
824
|
-
return state.isTable;
|
|
825
|
-
},
|
|
826
|
-
isDisabled: function isDisabled(state) {
|
|
827
|
-
return !state.canTable;
|
|
828
|
-
}
|
|
829
|
-
}, {
|
|
830
|
-
icon: /*#__PURE__*/_react["default"].createElement(_icons4.RemoveTable, null),
|
|
831
|
-
onClick: function onClick(editor) {
|
|
832
|
-
return editor.chain().focus().deleteTable().run();
|
|
833
|
-
},
|
|
834
|
-
hidden: function hidden(state) {
|
|
835
|
-
return !state.isTable;
|
|
836
|
-
},
|
|
837
|
-
isActive: function isActive(state) {
|
|
838
|
-
return state.isTable;
|
|
839
|
-
},
|
|
840
|
-
isDisabled: function isDisabled(state) {
|
|
841
|
-
return !state.canTable;
|
|
842
|
-
}
|
|
843
|
-
}, {
|
|
844
|
-
icon: /*#__PURE__*/_react["default"].createElement(_BorderAll["default"], null),
|
|
845
|
-
onClick: function onClick(editor) {
|
|
846
|
-
var tableAttrs = editor.getAttributes('table');
|
|
847
|
-
|
|
848
|
-
var update = _objectSpread(_objectSpread({}, tableAttrs), {}, {
|
|
849
|
-
border: tableAttrs.border !== '0' ? '0' : '1'
|
|
850
|
-
});
|
|
851
|
-
|
|
852
|
-
editor.commands.updateAttributes('table', update);
|
|
853
|
-
},
|
|
854
|
-
hidden: function hidden(state) {
|
|
855
|
-
return !state.isTable;
|
|
856
|
-
},
|
|
857
|
-
isActive: function isActive(state) {
|
|
858
|
-
return state.tableHasBorder;
|
|
859
|
-
},
|
|
860
|
-
isDisabled: function isDisabled(state) {
|
|
861
|
-
return !state.canTable;
|
|
862
|
-
}
|
|
863
|
-
}, {
|
|
864
|
-
icon: /*#__PURE__*/_react["default"].createElement(_FormatBold["default"], null),
|
|
865
|
-
onClick: function onClick(editor) {
|
|
866
|
-
return editor.chain().focus().toggleBold().run();
|
|
867
|
-
},
|
|
868
|
-
hidden: function hidden(state) {
|
|
869
|
-
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('bold')) || state.isTable;
|
|
870
|
-
},
|
|
871
|
-
isActive: function isActive(state) {
|
|
872
|
-
return state.isBold;
|
|
873
|
-
},
|
|
874
|
-
isDisabled: function isDisabled(state) {
|
|
875
|
-
return !state.canBold;
|
|
876
|
-
}
|
|
877
|
-
}, {
|
|
878
|
-
icon: /*#__PURE__*/_react["default"].createElement(_FormatItalic["default"], null),
|
|
879
|
-
onClick: function onClick(editor) {
|
|
880
|
-
return editor.chain().focus().toggleItalic().run();
|
|
881
|
-
},
|
|
882
|
-
hidden: function hidden(state) {
|
|
883
|
-
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('italic')) || state.isTable;
|
|
884
|
-
},
|
|
885
|
-
isActive: function isActive(state) {
|
|
886
|
-
return state.isItalic;
|
|
887
|
-
},
|
|
888
|
-
isDisabled: function isDisabled(state) {
|
|
889
|
-
return !state.canItalic;
|
|
890
|
-
}
|
|
891
|
-
}, {
|
|
892
|
-
icon: /*#__PURE__*/_react["default"].createElement(_FormatStrikethrough["default"], null),
|
|
893
|
-
onClick: function onClick(editor) {
|
|
894
|
-
return editor.chain().focus().toggleStrike().run();
|
|
895
|
-
},
|
|
896
|
-
hidden: function hidden(state) {
|
|
897
|
-
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('strikethrough')) || state.isTable;
|
|
898
|
-
},
|
|
899
|
-
isActive: function isActive(state) {
|
|
900
|
-
return state.isStrike;
|
|
901
|
-
},
|
|
902
|
-
isDisabled: function isDisabled(state) {
|
|
903
|
-
return !state.canStrike;
|
|
904
|
-
}
|
|
905
|
-
}, {
|
|
906
|
-
icon: /*#__PURE__*/_react["default"].createElement(_Code["default"], null),
|
|
907
|
-
onClick: function onClick(editor) {
|
|
908
|
-
return editor.chain().focus().toggleCode().run();
|
|
909
|
-
},
|
|
910
|
-
hidden: function hidden(state) {
|
|
911
|
-
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('code')) || state.isTable;
|
|
912
|
-
},
|
|
913
|
-
isActive: function isActive(state) {
|
|
914
|
-
return state.isCode;
|
|
915
|
-
},
|
|
916
|
-
isDisabled: function isDisabled(state) {
|
|
917
|
-
return !state.canCode;
|
|
918
|
-
}
|
|
919
|
-
}, {
|
|
920
|
-
icon: /*#__PURE__*/_react["default"].createElement(_FormatUnderlined["default"], null),
|
|
921
|
-
onClick: function onClick(editor) {
|
|
922
|
-
return editor.chain().focus().toggleUnderline().run();
|
|
923
|
-
},
|
|
924
|
-
hidden: function hidden(state) {
|
|
925
|
-
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('underline')) || state.isTable;
|
|
926
|
-
},
|
|
927
|
-
isActive: function isActive(state) {
|
|
928
|
-
return state.isUnderline;
|
|
929
|
-
}
|
|
930
|
-
}, {
|
|
931
|
-
icon: /*#__PURE__*/_react["default"].createElement(SubscriptIcon, null),
|
|
932
|
-
onClick: function onClick(editor) {
|
|
933
|
-
return editor.chain().focus().toggleSubscript().run();
|
|
934
|
-
},
|
|
935
|
-
hidden: function hidden(state) {
|
|
936
|
-
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('subscript')) || state.isTable;
|
|
937
|
-
},
|
|
938
|
-
isActive: function isActive(state) {
|
|
939
|
-
return state.isSubScript;
|
|
940
|
-
}
|
|
941
|
-
}, {
|
|
942
|
-
icon: /*#__PURE__*/_react["default"].createElement(SuperscriptIcon, null),
|
|
943
|
-
onClick: function onClick(editor) {
|
|
944
|
-
return editor.chain().focus().toggleSuperscript().run();
|
|
945
|
-
},
|
|
946
|
-
hidden: function hidden(state) {
|
|
947
|
-
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('superscript')) || state.isTable;
|
|
948
|
-
},
|
|
949
|
-
isActive: function isActive(state) {
|
|
950
|
-
return state.isSuperScript;
|
|
951
|
-
}
|
|
952
|
-
}, {
|
|
953
|
-
icon: /*#__PURE__*/_react["default"].createElement(_Image["default"], null),
|
|
954
|
-
hidden: function hidden(state) {
|
|
955
|
-
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('image')) || state.isTable;
|
|
956
|
-
},
|
|
957
|
-
onClick: function onClick(editor) {
|
|
958
|
-
return editor.chain().focus().setImageUploadNode().run();
|
|
959
|
-
}
|
|
960
|
-
}, {
|
|
961
|
-
icon: /*#__PURE__*/_react["default"].createElement(_Theaters["default"], null),
|
|
962
|
-
hidden: function hidden(state) {
|
|
963
|
-
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('video')) || state.isTable;
|
|
964
|
-
},
|
|
965
|
-
onClick: function onClick(editor) {
|
|
966
|
-
return editor.chain().focus().insertMedia({
|
|
967
|
-
tag: 'video'
|
|
968
|
-
}).run();
|
|
969
|
-
}
|
|
970
|
-
}, {
|
|
971
|
-
icon: /*#__PURE__*/_react["default"].createElement(_VolumeUp["default"], null),
|
|
972
|
-
hidden: function hidden(state) {
|
|
973
|
-
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('audio')) || state.isTable;
|
|
974
|
-
},
|
|
975
|
-
onClick: function onClick(editor) {
|
|
976
|
-
return editor.chain().focus().insertMedia({
|
|
977
|
-
tag: 'audio'
|
|
978
|
-
}).run();
|
|
979
|
-
}
|
|
980
|
-
}, {
|
|
981
|
-
icon: /*#__PURE__*/_react["default"].createElement(_icons3["default"], null),
|
|
982
|
-
hidden: function hidden(state) {
|
|
983
|
-
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('css')) || state.isTable;
|
|
984
|
-
},
|
|
985
|
-
onClick: function onClick(editor) {
|
|
986
|
-
return editor.commands.openCSSClassDialog();
|
|
987
|
-
}
|
|
988
|
-
}, {
|
|
989
|
-
icon: /*#__PURE__*/_react["default"].createElement(HeadingIcon, null),
|
|
990
|
-
hidden: function hidden(state) {
|
|
991
|
-
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('h3')) || state.isTable;
|
|
992
|
-
},
|
|
993
|
-
onClick: function onClick(editor) {
|
|
994
|
-
return editor.chain().focus().toggleHeading({
|
|
995
|
-
level: 3
|
|
996
|
-
}).run();
|
|
997
|
-
},
|
|
998
|
-
isActive: function isActive(state) {
|
|
999
|
-
return state.isHeading3;
|
|
1000
|
-
}
|
|
1001
|
-
}, {
|
|
1002
|
-
icon: /*#__PURE__*/_react["default"].createElement(_Functions["default"], null),
|
|
1003
|
-
hidden: function hidden() {
|
|
1004
|
-
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('math'));
|
|
1005
|
-
},
|
|
1006
|
-
onClick: function onClick(editor) {
|
|
1007
|
-
return editor.chain().focus().insertMath('').run();
|
|
1008
|
-
}
|
|
1009
|
-
}, {
|
|
1010
|
-
icon: /*#__PURE__*/_react["default"].createElement(CharacterIcon, {
|
|
1011
|
-
letter: "\xF1"
|
|
1012
|
-
}),
|
|
1013
|
-
hidden: function hidden(state) {
|
|
1014
|
-
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('languageCharacters')) || state.isTable;
|
|
1015
|
-
},
|
|
1016
|
-
onClick: function onClick() {
|
|
1017
|
-
return setShowPicker(_utils.spanishConfig);
|
|
1018
|
-
}
|
|
1019
|
-
}, {
|
|
1020
|
-
icon: /*#__PURE__*/_react["default"].createElement(CharacterIcon, {
|
|
1021
|
-
letter: "\u20AC"
|
|
1022
|
-
}),
|
|
1023
|
-
hidden: function hidden(state) {
|
|
1024
|
-
return (activePlugins === null || activePlugins === void 0 ? void 0 : activePlugins.filter(function (p) {
|
|
1025
|
-
return p === 'languageCharacters';
|
|
1026
|
-
}).length) !== 2 || state.isTable;
|
|
1027
|
-
},
|
|
1028
|
-
onClick: function onClick() {
|
|
1029
|
-
return setShowPicker(_utils.specialConfig);
|
|
1030
|
-
}
|
|
1031
|
-
}, {
|
|
1032
|
-
icon: /*#__PURE__*/_react["default"].createElement(_icons2["default"], {
|
|
1033
|
-
editor: editor
|
|
1034
|
-
}),
|
|
1035
|
-
hidden: function hidden(state) {
|
|
1036
|
-
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('text-align')) || state.isTable;
|
|
1037
|
-
},
|
|
1038
|
-
onClick: function onClick() {}
|
|
1039
|
-
}, {
|
|
1040
|
-
icon: /*#__PURE__*/_react["default"].createElement(_FormatListBulleted["default"], null),
|
|
1041
|
-
hidden: function hidden(state) {
|
|
1042
|
-
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('bulleted-list')) || state.isTable;
|
|
1043
|
-
},
|
|
1044
|
-
onClick: function onClick(editor) {
|
|
1045
|
-
return editor.chain().focus().toggleBulletList().run();
|
|
1046
|
-
},
|
|
1047
|
-
isActive: function isActive(state) {
|
|
1048
|
-
return state.isBulletList;
|
|
1049
|
-
}
|
|
1050
|
-
}, {
|
|
1051
|
-
icon: /*#__PURE__*/_react["default"].createElement(_FormatListNumbered["default"], null),
|
|
1052
|
-
hidden: function hidden(state) {
|
|
1053
|
-
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('numbered-list')) || state.isTable;
|
|
1054
|
-
},
|
|
1055
|
-
onClick: function onClick(editor) {
|
|
1056
|
-
return editor.chain().focus().toggleOrderedList().run();
|
|
1057
|
-
},
|
|
1058
|
-
isActive: function isActive(state) {
|
|
1059
|
-
return state.isOrderedList;
|
|
1060
|
-
}
|
|
1061
|
-
}, {
|
|
1062
|
-
icon: /*#__PURE__*/_react["default"].createElement(_Undo["default"], null),
|
|
1063
|
-
hidden: function hidden(state) {
|
|
1064
|
-
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('undo')) || state.isTable;
|
|
1065
|
-
},
|
|
1066
|
-
onClick: function onClick(editor) {
|
|
1067
|
-
return editor.chain().focus().undo().run();
|
|
1068
|
-
},
|
|
1069
|
-
isDisabled: function isDisabled(state) {
|
|
1070
|
-
return !state.canUndo;
|
|
1071
|
-
}
|
|
1072
|
-
}, {
|
|
1073
|
-
icon: /*#__PURE__*/_react["default"].createElement(_Redo["default"], null),
|
|
1074
|
-
hidden: function hidden(state) {
|
|
1075
|
-
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('redo')) || state.isTable;
|
|
1076
|
-
},
|
|
1077
|
-
onClick: function onClick(editor) {
|
|
1078
|
-
return editor.chain().focus().redo().run();
|
|
1079
|
-
},
|
|
1080
|
-
isDisabled: function isDisabled(state) {
|
|
1081
|
-
return !state.canRedo;
|
|
1082
|
-
}
|
|
1083
|
-
}];
|
|
1084
|
-
}, [activePlugins, editor, _utils.spanishConfig, _utils.specialConfig, setShowPicker]);
|
|
1085
|
-
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
1086
|
-
className: names,
|
|
1087
|
-
style: _objectSpread({}, customStyles),
|
|
1088
|
-
onMouseDown: handleMouseDown
|
|
1089
|
-
}, !editorState.hideDefaultToolbar && /*#__PURE__*/_react["default"].createElement("div", {
|
|
1090
|
-
className: classes.defaultToolbar,
|
|
1091
|
-
tabIndex: "1"
|
|
1092
|
-
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
1093
|
-
className: classes.buttonsContainer
|
|
1094
|
-
}, toolbarButtons.filter(function (btn) {
|
|
1095
|
-
var _btn$hidden;
|
|
1096
|
-
|
|
1097
|
-
return !((_btn$hidden = btn.hidden) !== null && _btn$hidden !== void 0 && _btn$hidden.call(btn, editorState));
|
|
1098
|
-
}).map(function (btn, index) {
|
|
1099
|
-
var _btn$isDisabled, _btn$isActive;
|
|
1100
|
-
|
|
1101
|
-
var disabled = (_btn$isDisabled = btn.isDisabled) === null || _btn$isDisabled === void 0 ? void 0 : _btn$isDisabled.call(btn, editorState);
|
|
1102
|
-
var active = (_btn$isActive = btn.isActive) === null || _btn$isActive === void 0 ? void 0 : _btn$isActive.call(btn, editorState);
|
|
1103
|
-
return /*#__PURE__*/_react["default"].createElement("button", {
|
|
1104
|
-
key: index,
|
|
1105
|
-
disabled: disabled,
|
|
1106
|
-
onClick: function onClick(e) {
|
|
1107
|
-
e.preventDefault();
|
|
1108
|
-
btn.onClick(editor);
|
|
1109
|
-
},
|
|
1110
|
-
className: (0, _classnames["default"])(classes.button, (0, _defineProperty2["default"])({}, classes.active, active))
|
|
1111
|
-
}, btn.icon);
|
|
1112
|
-
})), (activePlugins === null || activePlugins === void 0 ? void 0 : activePlugins.includes('responseArea')) && /*#__PURE__*/_react["default"].createElement("button", {
|
|
1113
|
-
onClick: function onClick() {
|
|
1114
|
-
editor.chain().focus().insertResponseArea(responseAreaProps.type).run();
|
|
1115
|
-
},
|
|
1116
|
-
className: classes.button
|
|
1117
|
-
}, /*#__PURE__*/_react["default"].createElement(_icons.ToolbarIcon, null)), /*#__PURE__*/_react["default"].createElement(_doneButton.DoneButton, {
|
|
1118
|
-
onClick: function onClick() {
|
|
1119
|
-
onChange === null || onChange === void 0 ? void 0 : onChange(editor.getHTML());
|
|
1120
|
-
editor.commands.blur();
|
|
1121
|
-
}
|
|
1122
|
-
})), showPicker && /*#__PURE__*/_react["default"].createElement(CharacterPicker, {
|
|
1123
|
-
editor: editor,
|
|
1124
|
-
opts: _objectSpread(_objectSpread({}, showPicker), {}, {
|
|
1125
|
-
renderPopOver: function renderPopOver(ev, ch) {
|
|
1126
|
-
return console.log('Show popover', ch);
|
|
1127
|
-
},
|
|
1128
|
-
closePopOver: function closePopOver() {
|
|
1129
|
-
return console.log('Close popover');
|
|
1130
|
-
}
|
|
1131
|
-
}),
|
|
1132
|
-
onClose: function onClose() {
|
|
1133
|
-
return setShowPicker(false);
|
|
1134
|
-
}
|
|
1135
|
-
}));
|
|
1136
|
-
}
|
|
1137
|
-
|
|
1138
|
-
var style = function style(theme) {
|
|
1139
|
-
return {
|
|
1140
|
-
defaultToolbar: {
|
|
1141
|
-
display: 'flex',
|
|
1142
|
-
width: '100%',
|
|
1143
|
-
justifyContent: 'space-between'
|
|
1144
|
-
},
|
|
1145
|
-
buttonsContainer: {
|
|
1146
|
-
alignItems: 'center',
|
|
1147
|
-
display: 'flex',
|
|
1148
|
-
width: '100%'
|
|
1149
|
-
},
|
|
1150
|
-
button: {
|
|
1151
|
-
color: 'grey',
|
|
1152
|
-
display: 'inline-flex',
|
|
1153
|
-
padding: '2px',
|
|
1154
|
-
background: 'none',
|
|
1155
|
-
border: 'none',
|
|
1156
|
-
cursor: 'pointer',
|
|
1157
|
-
'&:hover': {
|
|
1158
|
-
color: 'black'
|
|
1159
|
-
},
|
|
1160
|
-
'&:focus': {
|
|
1161
|
-
outline: "2px solid ".concat(theme.palette.grey[700])
|
|
1162
|
-
}
|
|
1163
|
-
},
|
|
1164
|
-
active: {
|
|
1165
|
-
color: 'black'
|
|
1166
|
-
},
|
|
1167
|
-
disabled: {
|
|
1168
|
-
opacity: 0.7,
|
|
1169
|
-
cursor: 'not-allowed',
|
|
1170
|
-
'& :hover': {
|
|
1171
|
-
color: 'grey'
|
|
1172
|
-
}
|
|
1173
|
-
},
|
|
1174
|
-
isActive: {
|
|
1175
|
-
background: 'var(--purple)',
|
|
1176
|
-
color: 'var(--white)'
|
|
1177
|
-
},
|
|
1178
|
-
toolbar: {
|
|
1179
|
-
position: 'absolute',
|
|
1180
|
-
zIndex: 20,
|
|
1181
|
-
cursor: 'pointer',
|
|
1182
|
-
justifyContent: 'space-between',
|
|
1183
|
-
background: 'var(--editable-html-toolbar-bg, #efefef)',
|
|
1184
|
-
minWidth: '280px',
|
|
1185
|
-
margin: '5px 0 0 0',
|
|
1186
|
-
padding: '2px',
|
|
1187
|
-
boxShadow: '0px 1px 5px 0px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 3px 1px -2px rgba(0, 0, 0, 0.12)',
|
|
1188
|
-
boxSizing: 'border-box',
|
|
1189
|
-
display: 'flex',
|
|
1190
|
-
opacity: 0,
|
|
1191
|
-
pointerEvents: 'none'
|
|
1192
|
-
},
|
|
1193
|
-
toolbarWithNoDone: {
|
|
1194
|
-
minWidth: '265px'
|
|
1195
|
-
},
|
|
1196
|
-
toolbarTop: {
|
|
1197
|
-
top: '-45px'
|
|
1198
|
-
},
|
|
1199
|
-
toolbarRight: {
|
|
1200
|
-
right: 0
|
|
1201
|
-
},
|
|
1202
|
-
fullWidth: {
|
|
1203
|
-
width: '100%'
|
|
1204
|
-
},
|
|
1205
|
-
hidden: {
|
|
1206
|
-
visibility: 'hidden'
|
|
1207
|
-
},
|
|
1208
|
-
autoWidth: {
|
|
1209
|
-
width: 'auto'
|
|
1210
|
-
},
|
|
1211
|
-
focused: {
|
|
1212
|
-
opacity: 1,
|
|
1213
|
-
pointerEvents: 'auto'
|
|
1214
|
-
},
|
|
1215
|
-
iconRoot: {
|
|
1216
|
-
width: '28px',
|
|
1217
|
-
height: '28px',
|
|
1218
|
-
padding: '4px',
|
|
1219
|
-
verticalAlign: 'top'
|
|
1220
|
-
},
|
|
1221
|
-
label: {
|
|
1222
|
-
color: 'var(--editable-html-toolbar-check, #00bb00)'
|
|
1223
|
-
},
|
|
1224
|
-
shared: {
|
|
1225
|
-
display: 'flex'
|
|
1226
|
-
}
|
|
1227
|
-
};
|
|
1228
|
-
};
|
|
1229
|
-
|
|
1230
|
-
var StyledMenuBar = (0, _styles.withStyles)(style, {
|
|
1231
|
-
index: 1000
|
|
1232
|
-
})(MenuBar);
|
|
1233
|
-
var defaultToolbarOpts = {
|
|
1234
|
-
position: 'bottom',
|
|
1235
|
-
alignment: 'left',
|
|
1236
|
-
alwaysVisible: false,
|
|
1237
|
-
showDone: true,
|
|
1238
|
-
doneOn: 'blur'
|
|
1239
|
-
};
|
|
1240
|
-
|
|
1241
|
-
var EditableHtml = function EditableHtml(props) {
|
|
1242
|
-
var _useState7 = (0, _react.useState)([]),
|
|
1243
|
-
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
|
|
1244
|
-
pendingImages = _useState8[0],
|
|
1245
|
-
setPendingImages = _useState8[1];
|
|
1246
|
-
|
|
1247
|
-
var _useState9 = (0, _react.useState)(false),
|
|
1248
|
-
_useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
|
|
1249
|
-
scheduled = _useState10[0],
|
|
1250
|
-
setScheduled = _useState10[1];
|
|
1251
|
-
|
|
1252
|
-
var classes = props.classes,
|
|
1253
|
-
toolbarOpts = props.toolbarOpts;
|
|
1254
|
-
|
|
1255
|
-
var toolbarOptsToUse = _objectSpread(_objectSpread({}, defaultToolbarOpts), toolbarOpts);
|
|
1256
|
-
|
|
1257
|
-
var activePluginsToUse = (0, _react.useMemo)(function () {
|
|
1258
|
-
var _ref6 = props.pluginProps || {},
|
|
1259
|
-
customPlugins = _ref6.customPlugins;
|
|
1260
|
-
|
|
1261
|
-
customPlugins = customPlugins || [];
|
|
1262
|
-
return (0, _index.buildPlugins)(props.activePlugins, customPlugins, {
|
|
1263
|
-
math: {},
|
|
1264
|
-
textAlign: {},
|
|
1265
|
-
html: {},
|
|
1266
|
-
extraCSSRules: props.extraCSSRules || {},
|
|
1267
|
-
image: {},
|
|
1268
|
-
toolbar: {},
|
|
1269
|
-
table: {},
|
|
1270
|
-
responseArea: {},
|
|
1271
|
-
languageCharacters: props.languageCharactersProps,
|
|
1272
|
-
keyPadCharacterRef: {},
|
|
1273
|
-
setKeypadInteraction: {},
|
|
1274
|
-
media: {}
|
|
1275
|
-
});
|
|
1276
|
-
}, [props]);
|
|
1277
|
-
var extensions = [_extensionTextStyle.TextStyleKit, _starterKit["default"], ExtendedTable, _extensionTableRow.TableRow, _extensionTableHeader.TableHeader, _extensionTableCell.TableCell, _responseArea.ResponseAreaExtension, _responseArea.ExplicitConstructedResponseNode.configure(props.responseAreaProps), _responseArea.DragInTheBlankNode.configure(props.responseAreaProps), _responseArea.InlineDropdownNode.configure(props.responseAreaProps), _math.MathNode.configure({
|
|
1278
|
-
toolbarOpts: toolbarOptsToUse
|
|
1279
|
-
}), _extensionSubscript["default"], _extensionSuperscript["default"], _extensionTextAlign["default"].configure({
|
|
1280
|
-
types: ['heading', 'paragraph'],
|
|
1281
|
-
alignments: ['left', 'right', 'center']
|
|
1282
|
-
}), _extensionImage["default"], _image.ImageUploadNode.configure({
|
|
1283
|
-
toolbarOpts: toolbarOptsToUse,
|
|
1284
|
-
imageHandling: {
|
|
1285
|
-
disableImageAlignmentButtons: props.disableImageAlignmentButtons,
|
|
1286
|
-
onDone: function onDone() {
|
|
1287
|
-
var _props$onDone;
|
|
1288
|
-
|
|
1289
|
-
return (_props$onDone = props.onDone) === null || _props$onDone === void 0 ? void 0 : _props$onDone.call(props, editor.getHTML());
|
|
1290
|
-
},
|
|
1291
|
-
onDelete: props.imageSupport && props.imageSupport["delete"] && function (node, done) {
|
|
1292
|
-
var src = node.attrs.src;
|
|
1293
|
-
props.imageSupport["delete"](src, function (e) {
|
|
1294
|
-
var newPendingImages = pendingImages.filter(function (img) {
|
|
1295
|
-
return img.key !== node.key;
|
|
1296
|
-
});
|
|
1297
|
-
var newState = {
|
|
1298
|
-
pendingImages: newPendingImages,
|
|
1299
|
-
scheduled: scheduled && newPendingImages.length === 0 ? false : scheduled
|
|
1300
|
-
};
|
|
1301
|
-
setPendingImages(newState.pendingImages);
|
|
1302
|
-
setScheduled(newState.scheduled);
|
|
1303
|
-
done();
|
|
1304
|
-
});
|
|
1305
|
-
},
|
|
1306
|
-
insertImageRequested: props.imageSupport && function (addedImage, getHandler) {
|
|
1307
|
-
var onFinish = function onFinish(result) {
|
|
1308
|
-
var _cb;
|
|
1309
|
-
|
|
1310
|
-
var cb;
|
|
1311
|
-
|
|
1312
|
-
if (scheduled && result) {
|
|
1313
|
-
// finish editing only on success
|
|
1314
|
-
cb = props.onChange;
|
|
1315
|
-
}
|
|
1316
|
-
|
|
1317
|
-
var newPendingImages = pendingImages.filter(function (img) {
|
|
1318
|
-
return img.key !== addedImage.key;
|
|
1319
|
-
});
|
|
1320
|
-
var newState = {
|
|
1321
|
-
pendingImages: newPendingImages
|
|
1322
|
-
};
|
|
1323
|
-
|
|
1324
|
-
if (newPendingImages.length === 0) {
|
|
1325
|
-
newState.scheduled = false;
|
|
1326
|
-
}
|
|
1327
|
-
|
|
1328
|
-
setPendingImages(newState.pendingImages);
|
|
1329
|
-
setScheduled(newState.scheduled);
|
|
1330
|
-
(_cb = cb) === null || _cb === void 0 ? void 0 : _cb(editor.getHTML());
|
|
1331
|
-
};
|
|
1332
|
-
|
|
1333
|
-
var callback = function callback() {
|
|
1334
|
-
/**
|
|
1335
|
-
* The handler is the object through which the outer context
|
|
1336
|
-
* communicates file upload events like: fileChosen, cancel, progress
|
|
1337
|
-
*/
|
|
1338
|
-
var handler = getHandler(onFinish);
|
|
1339
|
-
props.imageSupport.add(handler);
|
|
1340
|
-
};
|
|
1341
|
-
|
|
1342
|
-
setPendingImages([].concat((0, _toConsumableArray2["default"])(pendingImages), [addedImage]));
|
|
1343
|
-
callback();
|
|
1344
|
-
},
|
|
1345
|
-
maxImageWidth: props.maxImageWidth,
|
|
1346
|
-
maxImageHeight: props.maxImageHeight
|
|
1347
|
-
},
|
|
1348
|
-
limit: 3
|
|
1349
|
-
}), _media.Media.configure({
|
|
1350
|
-
uploadSoundSupport: props.uploadSoundSupport
|
|
1351
|
-
}), _css.CSSMark.configure({
|
|
1352
|
-
extraCSSRules: props.extraCSSRules
|
|
1353
|
-
})];
|
|
1354
|
-
var editor = (0, _react2.useEditor)({
|
|
1355
|
-
extensions: extensions,
|
|
1356
|
-
immediatelyRender: false,
|
|
1357
|
-
content: props.markup,
|
|
1358
|
-
onUpdate: function onUpdate(_ref7) {
|
|
1359
|
-
var _props$onChange;
|
|
1360
|
-
|
|
1361
|
-
var editor = _ref7.editor,
|
|
1362
|
-
transaction = _ref7.transaction;
|
|
1363
|
-
return transaction.isDone && ((_props$onChange = props.onChange) === null || _props$onChange === void 0 ? void 0 : _props$onChange.call(props, editor.getHTML()));
|
|
1364
|
-
},
|
|
1365
|
-
onBlur: function onBlur(_ref8) {
|
|
1366
|
-
var editor = _ref8.editor;
|
|
1367
|
-
|
|
1368
|
-
if (toolbarOptsToUse.doneOn === 'blur') {
|
|
1369
|
-
var _props$onChange2;
|
|
1370
|
-
|
|
1371
|
-
(_props$onChange2 = props.onChange) === null || _props$onChange2 === void 0 ? void 0 : _props$onChange2.call(props, editor.getHTML());
|
|
1372
|
-
} else {
|
|
1373
|
-
var _props$onDone2;
|
|
1374
|
-
|
|
1375
|
-
(_props$onDone2 = props.onDone) === null || _props$onDone2 === void 0 ? void 0 : _props$onDone2.call(props, editor.getHTML());
|
|
1376
|
-
}
|
|
1377
|
-
}
|
|
1378
|
-
});
|
|
1379
|
-
(0, _react.useEffect)(function () {
|
|
1380
|
-
if (!editor) {
|
|
1381
|
-
return;
|
|
1382
|
-
}
|
|
1383
|
-
|
|
1384
|
-
if (props.markup !== editor.getHTML()) {
|
|
1385
|
-
editor.commands.setContent(props.markup, false); // false = don’t emit update
|
|
1386
|
-
}
|
|
1387
|
-
}, [props.markup, editor]);
|
|
1388
|
-
(0, _react.useEffect)(function () {
|
|
1389
|
-
// Define your variables in a JS object
|
|
1390
|
-
var cssVariables = {
|
|
1391
|
-
'--white': '#fff',
|
|
1392
|
-
'--black': '#2e2b29',
|
|
1393
|
-
'--black-contrast': '#110f0e',
|
|
1394
|
-
'--gray-1': 'rgba(61, 37, 20, .05)',
|
|
1395
|
-
'--gray-2': 'rgba(61, 37, 20, .08)',
|
|
1396
|
-
'--gray-3': 'rgba(61, 37, 20, .12)',
|
|
1397
|
-
'--gray-4': 'rgba(53, 38, 28, .3)',
|
|
1398
|
-
'--gray-5': 'rgba(28, 25, 23, .6)',
|
|
1399
|
-
'--green': '#22c55e',
|
|
1400
|
-
'--purple': '#6a00f5',
|
|
1401
|
-
'--purple-contrast': '#5800cc',
|
|
1402
|
-
'--purple-light': 'rgba(88, 5, 255, .05)',
|
|
1403
|
-
'--yellow-contrast': '#facc15',
|
|
1404
|
-
'--yellow': 'rgba(250, 204, 21, .4)',
|
|
1405
|
-
'--yellow-light': '#fffae5',
|
|
1406
|
-
'--red': '#ff5c33',
|
|
1407
|
-
'--red-light': '#ffebe5',
|
|
1408
|
-
'--shadow': "0px 12px 33px 0px rgba(0, 0, 0, .06),\n 0px 3.618px 9.949px 0px rgba(0, 0, 0, .04)"
|
|
1409
|
-
};
|
|
1410
|
-
Object.entries(cssVariables).forEach(function (_ref9) {
|
|
1411
|
-
var _ref10 = (0, _slicedToArray2["default"])(_ref9, 2),
|
|
1412
|
-
key = _ref10[0],
|
|
1413
|
-
value = _ref10[1];
|
|
1414
|
-
|
|
1415
|
-
document.documentElement.style.setProperty(key, value);
|
|
1416
|
-
});
|
|
1417
|
-
}, []);
|
|
1418
|
-
var editorState = (0, _react2.useEditorState)({
|
|
1419
|
-
editor: editor,
|
|
1420
|
-
selector: function selector(ctx) {
|
|
1421
|
-
var _ctx$editor6;
|
|
1422
|
-
|
|
1423
|
-
return {
|
|
1424
|
-
isFocused: (_ctx$editor6 = ctx.editor) === null || _ctx$editor6 === void 0 ? void 0 : _ctx$editor6.isFocused
|
|
1425
|
-
};
|
|
1426
|
-
}
|
|
1427
|
-
});
|
|
1428
|
-
|
|
1429
|
-
var valueToSize = function valueToSize(v) {
|
|
1430
|
-
if (!v) {
|
|
1431
|
-
return;
|
|
1432
|
-
}
|
|
1433
|
-
|
|
1434
|
-
var calcRegex = /^calc\((.*)\)$/;
|
|
22
|
+
var _EditableHtml = _interopRequireWildcard(require("./components/EditableHtml"));
|
|
1435
23
|
|
|
1436
|
-
|
|
1437
|
-
if (v.endsWith('%')) {
|
|
1438
|
-
return undefined;
|
|
1439
|
-
} else if (v.endsWith('px') || v.endsWith('vh') || v.endsWith('vw') || v.endsWith('ch') || v.endsWith('em') || v.match(calcRegex)) {
|
|
1440
|
-
return v;
|
|
1441
|
-
} else {
|
|
1442
|
-
var value = parseInt(v, 10);
|
|
1443
|
-
return isNaN(value) ? value : "".concat(value, "px");
|
|
1444
|
-
}
|
|
1445
|
-
}
|
|
24
|
+
var _extensions = require("./extensions");
|
|
1446
25
|
|
|
1447
|
-
|
|
1448
|
-
return "".concat(v, "px");
|
|
1449
|
-
}
|
|
1450
|
-
};
|
|
26
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
1451
27
|
|
|
1452
|
-
|
|
1453
|
-
var minWidth = props.minWidth,
|
|
1454
|
-
width = props.width,
|
|
1455
|
-
maxWidth = props.maxWidth,
|
|
1456
|
-
minHeight = props.minHeight,
|
|
1457
|
-
height = props.height,
|
|
1458
|
-
maxHeight = props.maxHeight;
|
|
1459
|
-
return {
|
|
1460
|
-
width: valueToSize(width),
|
|
1461
|
-
minWidth: valueToSize(minWidth),
|
|
1462
|
-
maxWidth: valueToSize(maxWidth),
|
|
1463
|
-
height: valueToSize(height),
|
|
1464
|
-
minHeight: valueToSize(minHeight),
|
|
1465
|
-
maxHeight: valueToSize(maxHeight)
|
|
1466
|
-
};
|
|
1467
|
-
}, [props]);
|
|
1468
|
-
return /*#__PURE__*/_react["default"].createElement(EditorContainer, (0, _extends2["default"])({}, _objectSpread(_objectSpread({}, props), {}, {
|
|
1469
|
-
activePlugins: activePluginsToUse,
|
|
1470
|
-
toolbarOpts: toolbarOptsToUse
|
|
1471
|
-
}), {
|
|
1472
|
-
editorState: editorState,
|
|
1473
|
-
editor: editor
|
|
1474
|
-
}), editor && /*#__PURE__*/_react["default"].createElement(_react2.EditorContent, {
|
|
1475
|
-
style: {
|
|
1476
|
-
minHeight: sizeStyle.minHeight,
|
|
1477
|
-
height: sizeStyle.height,
|
|
1478
|
-
maxHeight: sizeStyle.maxHeight
|
|
1479
|
-
},
|
|
1480
|
-
className: classes.root,
|
|
1481
|
-
editor: editor
|
|
1482
|
-
}));
|
|
1483
|
-
};
|
|
28
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
1484
29
|
|
|
1485
|
-
|
|
1486
|
-
var StyledEditor = (0, _styles.withStyles)({
|
|
1487
|
-
root: {
|
|
1488
|
-
outline: 'none !important',
|
|
1489
|
-
'& .ProseMirror': {
|
|
1490
|
-
outline: 'none !important',
|
|
1491
|
-
position: 'initial'
|
|
1492
|
-
}
|
|
1493
|
-
}
|
|
1494
|
-
})(EditableHtml);
|
|
1495
|
-
var _default = StyledEditor;
|
|
30
|
+
var _default = _EditableHtml["default"];
|
|
1496
31
|
exports["default"] = _default;
|
|
1497
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qc3giXSwibmFtZXMiOlsiQ2hhcmFjdGVySWNvbiIsImxldHRlciIsImZvbnRTaXplIiwibGluZUhlaWdodCIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsInN0cmluZyIsIkNoYXJhY3RlclBpY2tlciIsImVkaXRvciIsIm9wdHMiLCJvbkNsb3NlIiwiY2hhcmFjdGVycyIsImxlbmd0aCIsImNvbnRhaW5lclJlZiIsInRvcCIsImxlZnQiLCJwb3NpdGlvbiIsInNldFBvc2l0aW9uIiwicG9wb3ZlciIsInNldFBvcG92ZXIiLCJjb25maWdUb1VzZSIsImxhbmd1YWdlIiwic3BhbmlzaENvbmZpZyIsInNwZWNpYWxDb25maWciLCJsYXlvdXRGb3JDaGFyYWN0ZXJzIiwicmVkdWNlIiwib2JqIiwiYXJyIiwiY29sdW1ucyIsInJvd3MiLCJjbG9zZVBvcE92ZXIiLCJib2R5UmVjdCIsImRvY3VtZW50IiwiYm9keSIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImZyb20iLCJzdGF0ZSIsInNlbGVjdGlvbiIsInN0YXJ0IiwidmlldyIsImNvb3Jkc0F0UG9zIiwiTWF0aCIsImFicyIsImhhbmRsZUNsaWNrT3V0c2lkZSIsImUiLCJjdXJyZW50IiwiY29udGFpbnMiLCJ0YXJnZXQiLCJkb20iLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInJlbmRlclBvcE92ZXIiLCJldmVudCIsImVsIiwiYW5jaG9yRWwiLCJjdXJyZW50VGFyZ2V0IiwiaGFuZGxlQ2hhbmdlIiwidmFsIiwiY2hhaW4iLCJmb2N1cyIsImluc2VydENvbnRlbnQiLCJydW4iLCJSZWFjdERPTSIsImNyZWF0ZVBvcnRhbCIsIm1heFdpZHRoIiwia2V5UGFkQ2hhcmFjdGVyUmVmIiwic2V0S2V5cGFkSW50ZXJhY3Rpb24iLCJuIiwibWFwIiwiayIsIm5hbWUiLCJ3cml0ZSIsImxhYmVsIiwiY2F0ZWdvcnkiLCJleHRyYUNsYXNzIiwiZXh0cmFQcm9wcyIsInN0eWxlIiwiYm9yZGVyIiwiaGFzUHJldmlldyIsImFjdGlvbnMiLCJvbk1vdXNlRW50ZXIiLCJldiIsIm9uTW91c2VMZWF2ZSIsImRlc2NyaXB0aW9uIiwidW5pY29kZSIsIlN1cGVyc2NyaXB0SWNvbiIsIlN1YnNjcmlwdEljb24iLCJIZWFkaW5nSWNvbiIsIndpZHRoIiwiaGVpZ2h0IiwiRXh0ZW5kZWRUYWJsZSIsIlRhYmxlIiwiZXh0ZW5kIiwiYWRkQXR0cmlidXRlcyIsInJlbmRlckhUTUwiLCJwcm9wcyIsIm9yaWdpbmFsVGFibGUiLCJwYXJlbnQiLCJIVE1MQXR0cmlidXRlcyIsInByZXZpb3VzU3R5bGUiLCJtYXRjaCIsInN0eWxlcyIsInRoZW1lIiwicm9vdCIsInBhZGRpbmciLCJib3JkZXJSYWRpdXMiLCJjdXJzb3IiLCJ3b3JkQnJlYWsiLCJvdmVyZmxvdyIsIm1heEhlaWdodCIsIm1hcmdpblRvcCIsIm1hcmdpbiIsIm1hcmdpbkJvdHRvbSIsInRleHRXcmFwIiwiYmFja2dyb3VuZENvbG9yIiwiY29sb3IiLCJiYWNrZ3JvdW5kIiwiZm9udEZhbWlseSIsImJvcmRlckxlZnQiLCJwYWRkaW5nTGVmdCIsImJvcmRlclRvcCIsInRhYmxlTGF5b3V0IiwiYm9yZGVyQ29sbGFwc2UiLCJ0ZXh0IiwidGV4dEFsaWduIiwiY2hpbGRyZW4iLCJlZGl0b3JIb2xkZXIiLCJyaWdodCIsImJvdHRvbSIsImNvbnRlbnQiLCJ0cmFuc2l0aW9uIiwicG9pbnRlckV2ZW50cyIsInRyYW5zZm9ybSIsInByaW1hcnkiLCJwYWxldHRlIiwiY29tbW9uIiwiYmxhY2siLCJkaXNhYmxlZFVuZGVybGluZSIsImRpc3BsYXkiLCJkaXNhYmxlZFNjcm9sbGJhciIsInNjcm9sbGJhcldpZHRoIiwicmVhZE9ubHkiLCJiYWNrZ3JvdW5kU2l6ZSIsImJhY2tncm91bmRJbWFnZSIsImJhY2tncm91bmRSZXBlYXQiLCJiYWNrZ3JvdW5kUG9zaXRpb24iLCJlZGl0b3JJbkZvY3VzIiwiZXJyb3IiLCJtYWluIiwibm9Cb3JkZXIiLCJub1BhZGRpbmciLCJ0b29sYmFyT25Ub3AiLCJkZWZhdWx0UmVzcG9uc2VBcmVhUHJvcHMiLCJvcHRpb25zIiwicmVzcEFyZWFUb29sYmFyIiwib25IYW5kbGVBcmVhQ2hhbmdlIiwidmFsdWVUb1NpemUiLCJ2IiwiY2FsY1JlZ2V4IiwiZW5kc1dpdGgiLCJ1bmRlZmluZWQiLCJ2YWx1ZSIsInBhcnNlSW50IiwiaXNOYU4iLCJUaXB0YXBDb250YWluZXIiLCJlZGl0b3JTdGF0ZSIsImNsYXNzZXMiLCJkaXNhYmxlVW5kZXJsaW5lIiwiZGlzYWJsZVNjcm9sbGJhciIsImFjdGl2ZVBsdWdpbnMiLCJ0b29sYmFyT3B0cyIsInJlc3BvbnNlQXJlYVByb3BzIiwiYXV0b0ZvY3VzIiwibWluV2lkdGgiLCJtaW5IZWlnaHQiLCJob2xkZXJOYW1lcyIsImlzRm9jdXNlZCIsIlByb21pc2UiLCJyZXNvbHZlIiwidGhlbiIsImNvbW1hbmRzIiwic2l6ZVN0eWxlIiwiY2xhc3NOYW1lIiwib25DaGFuZ2UiLCJFZGl0b3JDb250YWluZXIiLCJNZW51QmFyIiwidG9vbE9wdHMiLCJzaG93UGlja2VyIiwic2V0U2hvd1BpY2tlciIsInNlbGVjdG9yIiwiY3R4IiwiY3VycmVudE5vZGUiLCJOb2RlU2VsZWN0aW9uIiwibm9kZSIsImhpZGVEZWZhdWx0VG9vbGJhciIsImlzQWN0aXZlIiwiaXNCb2xkIiwiY2FuQm9sZCIsImNhbiIsInRvZ2dsZUJvbGQiLCJpc1RhYmxlIiwidGFibGVIYXNCb3JkZXIiLCJnZXRBdHRyaWJ1dGVzIiwiY2FuVGFibGUiLCJpbnNlcnRUYWJsZSIsImlzSXRhbGljIiwiY2FuSXRhbGljIiwidG9nZ2xlSXRhbGljIiwiaXNTdHJpa2UiLCJjYW5TdHJpa2UiLCJ0b2dnbGVTdHJpa2UiLCJpc0NvZGUiLCJjYW5Db2RlIiwidG9nZ2xlQ29kZSIsImNhbkNsZWFyTWFya3MiLCJ1bnNldEFsbE1hcmtzIiwiaXNVbmRlcmxpbmUiLCJpc1N1YlNjcmlwdCIsImlzU3VwZXJTY3JpcHQiLCJpc1BhcmFncmFwaCIsImlzSGVhZGluZzEiLCJsZXZlbCIsImlzSGVhZGluZzIiLCJpc0hlYWRpbmczIiwiaXNIZWFkaW5nNCIsImlzSGVhZGluZzUiLCJpc0hlYWRpbmc2IiwiaXNCdWxsZXRMaXN0IiwiaXNPcmRlcmVkTGlzdCIsImlzQ29kZUJsb2NrIiwiaXNCbG9ja3F1b3RlIiwiY2FuVW5kbyIsInVuZG8iLCJjYW5SZWRvIiwicmVkbyIsImhhc0RvbmVCdXR0b24iLCJhdXRvV2lkdGgiLCJuYW1lcyIsInRvb2xiYXIiLCJQSUVfVE9PTEJBUl9fQ0xBU1MiLCJ0b29sYmFyV2l0aE5vRG9uZSIsInRvb2xiYXJUb3AiLCJ0b29sYmFyUmlnaHQiLCJhbGlnbm1lbnQiLCJmb2N1c2VkIiwiYWx3YXlzVmlzaWJsZSIsIl90b29sYmFyT3BlbmVkIiwiZnVsbFdpZHRoIiwiaGlkZGVuIiwiaXNIaWRkZW4iLCJjdXN0b21TdHlsZXMiLCJoYW5kbGVNb3VzZURvd24iLCJwcmV2ZW50RGVmYXVsdCIsInRvb2xiYXJCdXR0b25zIiwiaWNvbiIsIm9uQ2xpY2siLCJjb2xzIiwid2l0aEhlYWRlclJvdyIsImluY2x1ZGVzIiwiaXNEaXNhYmxlZCIsImFkZFJvd0FmdGVyIiwiZGVsZXRlUm93IiwiYWRkQ29sdW1uQWZ0ZXIiLCJkZWxldGVDb2x1bW4iLCJkZWxldGVUYWJsZSIsInRhYmxlQXR0cnMiLCJ1cGRhdGUiLCJ1cGRhdGVBdHRyaWJ1dGVzIiwidG9nZ2xlVW5kZXJsaW5lIiwidG9nZ2xlU3Vic2NyaXB0IiwidG9nZ2xlU3VwZXJzY3JpcHQiLCJzZXRJbWFnZVVwbG9hZE5vZGUiLCJpbnNlcnRNZWRpYSIsInRhZyIsIm9wZW5DU1NDbGFzc0RpYWxvZyIsInRvZ2dsZUhlYWRpbmciLCJpbnNlcnRNYXRoIiwiZmlsdGVyIiwicCIsInRvZ2dsZUJ1bGxldExpc3QiLCJ0b2dnbGVPcmRlcmVkTGlzdCIsImRlZmF1bHRUb29sYmFyIiwiYnV0dG9uc0NvbnRhaW5lciIsImJ0biIsImluZGV4IiwiZGlzYWJsZWQiLCJhY3RpdmUiLCJidXR0b24iLCJpbnNlcnRSZXNwb25zZUFyZWEiLCJ0eXBlIiwiZ2V0SFRNTCIsImJsdXIiLCJjaCIsImNvbnNvbGUiLCJsb2ciLCJqdXN0aWZ5Q29udGVudCIsImFsaWduSXRlbXMiLCJvdXRsaW5lIiwiZ3JleSIsIm9wYWNpdHkiLCJ6SW5kZXgiLCJib3hTaGFkb3ciLCJib3hTaXppbmciLCJ2aXNpYmlsaXR5IiwiaWNvblJvb3QiLCJ2ZXJ0aWNhbEFsaWduIiwic2hhcmVkIiwiU3R5bGVkTWVudUJhciIsImRlZmF1bHRUb29sYmFyT3B0cyIsInNob3dEb25lIiwiZG9uZU9uIiwiRWRpdGFibGVIdG1sIiwicGVuZGluZ0ltYWdlcyIsInNldFBlbmRpbmdJbWFnZXMiLCJzY2hlZHVsZWQiLCJzZXRTY2hlZHVsZWQiLCJ0b29sYmFyT3B0c1RvVXNlIiwiYWN0aXZlUGx1Z2luc1RvVXNlIiwicGx1Z2luUHJvcHMiLCJjdXN0b21QbHVnaW5zIiwibWF0aCIsImh0bWwiLCJleHRyYUNTU1J1bGVzIiwiaW1hZ2UiLCJ0YWJsZSIsInJlc3BvbnNlQXJlYSIsImxhbmd1YWdlQ2hhcmFjdGVycyIsImxhbmd1YWdlQ2hhcmFjdGVyc1Byb3BzIiwibWVkaWEiLCJleHRlbnNpb25zIiwiVGV4dFN0eWxlS2l0IiwiU3RhcnRlcktpdCIsIlRhYmxlUm93IiwiVGFibGVIZWFkZXIiLCJUYWJsZUNlbGwiLCJSZXNwb25zZUFyZWFFeHRlbnNpb24iLCJFeHBsaWNpdENvbnN0cnVjdGVkUmVzcG9uc2VOb2RlIiwiY29uZmlndXJlIiwiRHJhZ0luVGhlQmxhbmtOb2RlIiwiSW5saW5lRHJvcGRvd25Ob2RlIiwiTWF0aE5vZGUiLCJTdWJTY3JpcHQiLCJTdXBlclNjcmlwdCIsIlRleHRBbGlnbiIsInR5cGVzIiwiYWxpZ25tZW50cyIsIkltYWdlIiwiSW1hZ2VVcGxvYWROb2RlIiwiaW1hZ2VIYW5kbGluZyIsImRpc2FibGVJbWFnZUFsaWdubWVudEJ1dHRvbnMiLCJvbkRvbmUiLCJvbkRlbGV0ZSIsImltYWdlU3VwcG9ydCIsImRvbmUiLCJzcmMiLCJhdHRycyIsIm5ld1BlbmRpbmdJbWFnZXMiLCJpbWciLCJrZXkiLCJuZXdTdGF0ZSIsImluc2VydEltYWdlUmVxdWVzdGVkIiwiYWRkZWRJbWFnZSIsImdldEhhbmRsZXIiLCJvbkZpbmlzaCIsInJlc3VsdCIsImNiIiwiY2FsbGJhY2siLCJoYW5kbGVyIiwiYWRkIiwibWF4SW1hZ2VXaWR0aCIsIm1heEltYWdlSGVpZ2h0IiwibGltaXQiLCJNZWRpYSIsInVwbG9hZFNvdW5kU3VwcG9ydCIsIkNTU01hcmsiLCJpbW1lZGlhdGVseVJlbmRlciIsIm1hcmt1cCIsIm9uVXBkYXRlIiwidHJhbnNhY3Rpb24iLCJpc0RvbmUiLCJvbkJsdXIiLCJzZXRDb250ZW50IiwiY3NzVmFyaWFibGVzIiwiT2JqZWN0IiwiZW50cmllcyIsImZvckVhY2giLCJkb2N1bWVudEVsZW1lbnQiLCJzZXRQcm9wZXJ0eSIsIlN0eWxlZEVkaXRvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFNQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7OztBQUVBLElBQU1BLGFBQWEsR0FBRyxTQUFoQkEsYUFBZ0I7QUFBQSxNQUFHQyxNQUFILFFBQUdBLE1BQUg7QUFBQSxzQkFDcEI7QUFDRSxJQUFBLEtBQUssRUFBRTtBQUNMQyxNQUFBQSxRQUFRLEVBQUUsTUFETDtB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Q0FBQy9DLFNBQUQ7QUFOakIsS0FBUDtBQVFELEdBWGlCLEVBV2YsQ0FBQ2QsS0FBRCxDQVhlLENBQWxCO0FBYUEsc0JBQ0UsZ0NBQUMsZUFBRCxnRUFDV0EsS0FEWDtBQUNrQjBFLElBQUFBLGFBQWEsRUFBRW9KLGtCQURqQztBQUNxRG5KLElBQUFBLFdBQVcsRUFBRWtKO0FBRGxFO0FBRUUsSUFBQSxXQUFXLEVBQUV2SixXQUZmO0FBR0UsSUFBQSxNQUFNLEVBQUU3SjtBQUhWLE1BS0dBLE1BQU0saUJBQ0wsZ0NBQUMscUJBQUQ7QUFDRSxJQUFBLEtBQUssRUFBRTtBQUNMc0ssTUFBQUEsU0FBUyxFQUFFTyxTQUFTLENBQUNQLFNBRGhCO0FBRUxyRixNQUFBQSxNQUFNLEVBQUU0RixTQUFTLENBQUM1RixNQUZiO0FBR0xvQixNQUFBQSxTQUFTLEVBQUV3RSxTQUFTLENBQUN4RTtBQUhoQixLQURUO0FBTUUsSUFBQSxTQUFTLEVBQUV5RCxPQUFPLENBQUMvRCxJQU5yQjtBQU9FLElBQUEsTUFBTSxFQUFFL0Y7QUFQVixJQU5KLENBREY7QUFtQkQsQ0FsUE07OztBQW9QUCxJQUFNNFgsWUFBWSxHQUFHLHdCQUFXO0FBQzlCN1IsRUFBQUEsSUFBSSxFQUFFO0FBQ0prTSxJQUFBQSxPQUFPLEVBQUUsaUJBREw7QUFFSixzQkFBa0I7QUFDaEJBLE1BQUFBLE9BQU8sRUFBRSxpQkFETztBQUVoQnpSLE1BQUFBLFFBQVEsRUFBRTtBQUZNO0FBRmQ7QUFEd0IsQ0FBWCxFQVFsQnVTLFlBUmtCLENBQXJCO2VBVWU2RSxZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IHsgY3JlYXRlUm9vdCB9IGZyb20gJ3JlYWN0LWRvbS9jbGllbnQnO1xuaW1wb3J0IHsgTm9kZVNlbGVjdGlvbiB9IGZyb20gJ3Byb3NlbWlycm9yLXN0YXRlJztcbmltcG9ydCB7IFRleHRTdHlsZUtpdCB9IGZyb20gJ0B0aXB0YXAvZXh0ZW5zaW9uLXRleHQtc3R5bGUnO1xuaW1wb3J0IHsgRWRpdG9yQ29udGVudCwgdXNlRWRpdG9yLCB1c2VFZGl0b3JTdGF0ZSB9IGZyb20gJ0B0aXB0YXAvcmVhY3QnO1xuaW1wb3J0IFN0YXJ0ZXJLaXQgZnJvbSAnQHRpcHRhcC9zdGFydGVyLWtpdCc7XG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJ0B0aXB0YXAvZXh0ZW5zaW9uLXRhYmxlJztcbmltcG9ydCB7IFRhYmxlUm93IH0gZnJvbSAnQHRpcHRhcC9leHRlbnNpb24tdGFibGUtcm93JztcbmltcG9ydCB7IFRhYmxlQ2VsbCB9IGZyb20gJ0B0aXB0YXAvZXh0ZW5zaW9uLXRhYmxlLWNlbGwnO1xuaW1wb3J0IHsgVGFibGVIZWFkZXIgfSBmcm9tICdAdGlwdGFwL2V4dGVuc2lvbi10YWJsZS1oZWFkZXInO1xuaW1wb3J0IFN1cGVyU2NyaXB0IGZyb20gJ0B0aXB0YXAvZXh0ZW5zaW9uLXN1cGVyc2NyaXB0JztcbmltcG9ydCBTdWJTY3JpcHQgZnJvbSAnQHRpcHRhcC9leHRlbnNpb24tc3Vic2NyaXB0JztcbmltcG9ydCBUZXh0QWxpZ24gZnJvbSAnQHRpcHRhcC9leHRlbnNpb24tdGV4dC1hbGlnbic7XG5pbXBvcnQgSW1hZ2UgZnJvbSAnQHRpcHRhcC9leHRlbnNpb24taW1hZ2UnO1xuXG5pbXBvcnQgeyB3aXRoU3R5bGVzIH0gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvc3R5bGVzJztcbmltcG9ydCB7XG4gIEV4cGxpY2l0Q29uc3RydWN0ZWRSZXNwb25zZU5vZGUsXG4gIERyYWdJblRoZUJsYW5rTm9kZSxcbiAgSW5saW5lRHJvcGRvd25Ob2RlLFxuICBSZXNwb25zZUFyZWFFeHRlbnNpb24sXG59IGZyb20gJy4vZXh0ZW5zaW9ucy9yZXNwb25zZUFyZWEnO1xuaW1wb3J0IHsgTWF0aE5vZGUgfSBmcm9tICcuL2V4dGVuc2lvbnMvbWF0aCc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCB7IGNvbG9yIH0gZnJvbSAnQHBpZS1saWIvcmVuZGVyLXVpJztcbmltcG9ydCB7IHByaW1hcnkgfSBmcm9tICcuL3RoZW1lJztcbmltcG9ydCB7IFBJRV9UT09MQkFSX19DTEFTUyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IERvbmVCdXR0b24gfSBmcm9tICcuL3BsdWdpbnMvdG9vbGJhci9kb25lLWJ1dHRvbic7XG5pbXBvcnQgeyBidWlsZFBsdWdpbnMsIERFRkFVTFRfUExVR0lOUyB9IGZyb20gXCIuL3BsdWdpbnMvaW5kZXhcIjtcbmltcG9ydCBCb2xkIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9Gb3JtYXRCb2xkJztcbmltcG9ydCBJdGFsaWMgZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0Zvcm1hdEl0YWxpYyc7XG5pbXBvcnQgU3RyaWtldGhyb3VnaCBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvRm9ybWF0U3RyaWtldGhyb3VnaCc7XG5pbXBvcnQgQ29kZSBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvQ29kZSc7XG5pbXBvcnQgR3JpZE9uIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9HcmlkT24nO1xuaW1wb3J0IEJ1bGxldGVkTGlzdEljb24gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0Zvcm1hdExpc3RCdWxsZXRlZCc7XG5pbXBvcnQgTnVtYmVyZWRMaXN0SWNvbiBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvRm9ybWF0TGlzdE51bWJlcmVkJztcbmltcG9ydCBVbmRlcmxpbmUgZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0Zvcm1hdFVuZGVybGluZWQnO1xuaW1wb3J0IEZ1bmN0aW9ucyBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvRnVuY3Rpb25zJztcbmltcG9ydCBJbWFnZUljb24gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0ltYWdlJztcbmltcG9ydCB7IFRvb2xiYXJJY29uIH0gZnJvbSAnLi9wbHVnaW5zL3Jlc3BBcmVhL2ljb25zJztcbmltcG9ydCBSZWRvIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9SZWRvJztcbmltcG9ydCBVbmRvIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9VbmRvJztcbmltcG9ydCBUaGVhdGVyc0ljb24gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL1RoZWF0ZXJzJztcbmltcG9ydCBWb2x1bWVVcEljb24gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL1ZvbHVtZVVwJztcbmltcG9ydCB7IGNoYXJhY3Rlckljb25zLCBzcGFuaXNoQ29uZmlnLCBzcGVjaWFsQ29uZmlnIH0gZnJvbSAnLi9wbHVnaW5zL2NoYXJhY3RlcnMvdXRpbHMnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IE1hdGhUb29sYmFyLCBQdXJlVG9vbGJhciB9IGZyb20gJ0BwaWUtbGliL21hdGgtdG9vbGJhcic7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IEN1c3RvbVBvcHBlciBmcm9tICcuL3BsdWdpbnMvY2hhcmFjdGVycy9jdXN0b20tcG9wcGVyJztcbmltcG9ydCBUZXh0QWxpZ25JY29uIGZyb20gJy4vcGx1Z2lucy90ZXh0QWxpZ24vaWNvbnMnO1xuaW1wb3J0IENTU0ljb24gZnJvbSAnLi9wbHVnaW5zL2Nzcy9pY29ucyc7XG5cbmltcG9ydCB7IEltYWdlVXBsb2FkTm9kZSB9IGZyb20gJy4vZXh0ZW5zaW9ucy9pbWFnZSc7XG5pbXBvcnQgeyBNZWRpYSB9IGZyb20gJy4vZXh0ZW5zaW9ucy9tZWRpYSc7XG5pbXBvcnQgeyBDU1NNYXJrIH0gZnJvbSAnLi9leHRlbnNpb25zL2Nzcyc7XG5pbXBvcnQgeyBBZGRDb2x1bW4sIEFkZFJvdywgUmVtb3ZlQ29sdW1uLCBSZW1vdmVSb3csIFJlbW92ZVRhYmxlIH0gZnJvbSAnLi9wbHVnaW5zL3RhYmxlL2ljb25zJztcbmltcG9ydCBCb3JkZXJBbGwgZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0JvcmRlckFsbCc7XG5cbmNvbnN0IENoYXJhY3Rlckljb24gPSAoeyBsZXR0ZXIgfSkgPT4gKFxuICA8ZGl2XG4gICAgc3R5bGU9e3tcbiAgICAgIGZvbnRTaXplOiAnMjRweCcsXG4gICAgICBsaW5lSGVpZ2h0OiAnMjRweCcsXG4gICAgfX1cbiAgPlxuICAgIHtsZXR0ZXJ9XG4gIDwvZGl2PlxuKTtcblxuQ2hhcmFjdGVySWNvbi5wcm9wVHlwZXMgPSB7XG4gIGxldHRlcjogUHJvcFR5cGVzLnN0cmluZyxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBDaGFyYWN0ZXJQaWNrZXIoeyBlZGl0b3IsIG9wdHMsIG9uQ2xvc2UgfSkge1xuICBpZiAoIW9wdHM/LmNoYXJhY3RlcnM/Lmxlbmd0aCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBbcG9zaXRpb24sIHNldFBvc2l0aW9uXSA9IHVzZVN0YXRlKHsgdG9wOiAwLCBsZWZ0OiAwIH0pO1xuICBjb25zdCBbcG9wb3Zlciwgc2V0UG9wb3Zlcl0gPSB1c2VTdGF0ZShudWxsKTtcblxuICBsZXQgY29uZmlnVG9Vc2U7XG5cbiAgc3dpdGNoICh0cnVlKSB7XG4gICAgY2FzZSBvcHRzLmxhbmd1YWdlID09PSAnc3BhbmlzaCc6XG4gICAgICBjb25maWdUb1VzZSA9IHNwYW5pc2hDb25maWc7XG4gICAgICBicmVhaztcbiAgICBjYXNlIG9wdHMubGFuZ3VhZ2UgPT09ICdzcGVjaWFsJzpcbiAgICAgIGNvbmZpZ1RvVXNlID0gc3BlY2lhbENvbmZpZztcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBjb25maWdUb1VzZSA9IG9wdHM7XG4gIH1cblxuICBjb25zdCBsYXlvdXRGb3JDaGFyYWN0ZXJzID0gY29uZmlnVG9Vc2UuY2hhcmFjdGVycy5yZWR1Y2UoXG4gICAgKG9iaiwgYXJyKSA9PiB7XG4gICAgICBpZiAoYXJyLmxlbmd0aCA+PSBvYmouY29sdW1ucykge1xuICAgICAgICBvYmouY29sdW1ucyA9IGFyci5sZW5ndGg7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSxcbiAgICB7IHJvd3M6IGNvbmZpZ1RvVXNlLmNoYXJhY3RlcnMubGVuZ3RoLCBjb2x1bW5zOiAwIH0sXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY2xvc2VQb3BPdmVyKCk7XG4gICAgfTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFlZGl0b3IpIHJldHVybjtcblxuICAgIC8vIENhbGN1bGF0ZSBwb3NpdGlvbiByZWxhdGl2ZSB0byBzZWxlY3Rpb25cbiAgICBjb25zdCBib2R5UmVjdCA9IGRvY3VtZW50LmJvZHkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgeyBmcm9tIH0gPSBlZGl0b3Iuc3RhdGUuc2VsZWN0aW9uO1xuICAgIGNvbnN0IHN0YXJ0ID0gZWRpdG9yLnZpZXcuY29vcmRzQXRQb3MoZnJvbSk7XG4gICAgc2V0UG9zaXRpb24oe1xuICAgICAgdG9wOiBzdGFydC50b3AgKyBNYXRoLmFicyhib2R5UmVjdC50b3ApICsgNDAsIC8vIHNoaWZ0IGFib3ZlXG4gICAgICBsZWZ0OiBzdGFydC5sZWZ0LFxuICAgIH0pO1xuXG4gICAgY29uc3QgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKGUpID0+IHtcbiAgICAgIGlmIChjb250YWluZXJSZWYuY3VycmVudCAmJiAhY29udGFpbmVyUmVmLmN1cnJlbnQuY29udGFpbnMoZS50YXJnZXQpICYmICFlZGl0b3Iudmlldy5kb20uY29udGFpbnMoZS50YXJnZXQpKSB7XG4gICAgICAgIG9uQ2xvc2UoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlKTtcbiAgICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlKTtcbiAgfSwgW2VkaXRvcl0pO1xuXG4gIGNvbnN0IHJlbmRlclBvcE92ZXIgPSAoZXZlbnQsIGVsKSA9PiBzZXRQb3BvdmVyKHsgYW5jaG9yRWw6IGV2ZW50LmN1cnJlbnRUYXJnZXQsIGVsIH0pO1xuICBjb25zdCBjbG9zZVBvcE92ZXIgPSAoKSA9PiBzZXRQb3BvdmVyKG51bGwpO1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9ICh2YWwpID0+IHtcbiAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVkaXRvclxuICAgICAgICAuY2hhaW4oKVxuICAgICAgICAuZm9jdXMoKVxuICAgICAgICAuaW5zZXJ0Q29udGVudCh2YWwpXG4gICAgICAgIC5ydW4oKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8UmVhY3QuRnJhZ21lbnQ+XG4gICAgICB7UmVhY3RET00uY3JlYXRlUG9ydGFsKFxuICAgICAgICA8ZGl2XG4gICAgICAgICAgcmVmPXtjb250YWluZXJSZWZ9XG4gICAgICAgICAgY2xhc3NOYW1lPVwiaW5zZXJ0LWNoYXJhY3Rlci1kaWFsb2dcIlxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgIHRvcDogYCR7cG9zaXRpb24udG9wfXB4YCxcbiAgICAgICAgICAgIGxlZnQ6IGAke3Bvc2l0aW9uLmxlZnR9cHhgLFxuICAgICAgICAgICAgbWF4V2lkdGg6ICc1MDBweCcsXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8UHVyZVRvb2xiYXJcbiAgICAgICAgICAgICAga2V5UGFkQ2hhcmFjdGVyUmVmPXtvcHRzLmtleVBhZENoYXJhY3RlclJlZn1cbiAgICAgICAgICAgICAgc2V0S2V5cGFkSW50ZXJhY3Rpb249e29wdHMuc2V0S2V5cGFkSW50ZXJhY3Rpb259XG4gICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICBub0RlY2ltYWxcbiAgICAgICAgICAgICAgaGlkZUlucHV0XG4gICAgICAgICAgICAgIG5vTGF0ZXhIYW5kbGluZ1xuICAgICAgICAgICAgICBoaWRlRG9uZUJ1dHRvbkJhY2tncm91bmRcbiAgICAgICAgICAgICAgbGF5b3V0Rm9yS2V5UGFkPXtsYXlvdXRGb3JDaGFyYWN0ZXJzfVxuICAgICAgICAgICAgICBhZGRpdGlvbmFsS2V5cz17Y29uZmlnVG9Vc2UuY2hhcmFjdGVycy5yZWR1Y2UoKGFyciwgbikgPT4ge1xuICAgICAgICAgICAgICAgIGFyciA9IFtcbiAgICAgICAgICAgICAgICAgIC4uLmFycixcbiAgICAgICAgICAgICAgICAgIC4uLm4ubWFwKChrKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBnZXQoaywgJ25hbWUnKSB8fCBrLFxuICAgICAgICAgICAgICAgICAgICB3cml0ZTogZ2V0KGssICd3cml0ZScpIHx8IGssXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBnZXQoaywgJ2xhYmVsJykgfHwgayxcbiAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk6ICdjaGFyYWN0ZXInLFxuICAgICAgICAgICAgICAgICAgICBleHRyYUNsYXNzOiAnY2hhcmFjdGVyJyxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmFQcm9wczoge1xuICAgICAgICAgICAgICAgICAgICAgIC4uLihrLmV4dHJhUHJvcHMgfHwge30pLFxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi4oay5leHRyYVByb3BzIHx8IHt9KS5zdHlsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogJzFweCBzb2xpZCAjMDAwJyxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAuLi4oY29uZmlnVG9Vc2UuaGFzUHJldmlld1xuICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zOiB7IG9uTW91c2VFbnRlcjogKGV2KSA9PiByZW5kZXJQb3BPdmVyKGV2LCBrKSwgb25Nb3VzZUxlYXZlOiBjbG9zZVBvcE92ZXIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGFycjtcbiAgICAgICAgICAgICAgfSwgW10pfVxuICAgICAgICAgICAgICBrZXlwYWRNb2RlPVwibGFuZ3VhZ2VcIlxuICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICBvbkRvbmU9e29uQ2xvc2V9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj4sXG4gICAgICAgIGRvY3VtZW50LmJvZHksXG4gICAgICApfVxuICAgICAge3BvcG92ZXIgJiZcbiAgICAgICAgUmVhY3RET00uY3JlYXRlUG9ydGFsKFxuICAgICAgICAgIDxDdXN0b21Qb3BwZXIgb25DbG9zZT17Y2xvc2VQb3BPdmVyfSBhbmNob3JFbD17cG9wb3Zlci5hbmNob3JFbH0+XG4gICAgICAgICAgICA8ZGl2Pntwb3BvdmVyLmVsLmxhYmVsfTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBmb250U2l6ZTogMjAsIGxpbmVIZWlnaHQ6ICcyMHB4JyB9fT57cG9wb3Zlci5lbC5kZXNjcmlwdGlvbn08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZm9udFNpemU6IDIwLCBsaW5lSGVpZ2h0OiAnMjBweCcgfX0+e3BvcG92ZXIuZWwudW5pY29kZX08L2Rpdj5cbiAgICAgICAgICA8L0N1c3RvbVBvcHBlcj4sXG4gICAgICAgICAgZG9jdW1lbnQuYm9keSxcbiAgICAgICAgKX1cbiAgICA8L1JlYWN0LkZyYWdtZW50PlxuICApO1xufVxuXG5jb25zdCBTdXBlcnNjcmlwdEljb24gPSAoKSA9PiAoXG4gIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGhlaWdodD1cIjI0cHhcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNHB4XCIgZmlsbD1cIm5vbmVcIj5cbiAgICA8cGF0aFxuICAgICAgZD1cIk0yMiw3aC0ydjFoM3YxaC00VjdjMC0wLjU1LDAuNDUtMSwxLTFoMlY1aC0zVjRoM2MwLjU1LDAsMSwwLjQ1LDEsMXYxQzIzLDYuNTUsMjIuNTUsNywyMiw3eiBNNS44OCwyMGgyLjY2bDMuNC01LjQyaDAuMTIgbDMuNCw1LjQyaDIuNjZsLTQuNjUtNy4yN0wxNy44MSw2aC0yLjY4bC0zLjA3LDQuOTloLTAuMTJMOC44NSw2SDYuMTlsNC4zMiw2LjczTDUuODgsMjB6XCJcbiAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgIC8+XG4gIDwvc3ZnPlxuKTtcblxuY29uc3QgU3Vic2NyaXB0SWNvbiA9ICgpID0+IChcbiAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgaGVpZ2h0PVwiMjRweFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0cHhcIiBmaWxsPVwibm9uZVwiPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTIyLDE4aC0ydjFoM3YxaC00di0yYzAtMC41NSwwLjQ1LTEsMS0xaDJ2LTFoLTN2LTFoM2MwLjU1LDAsMSwwLjQ1LDEsMXYxQzIzLDE3LjU1LDIyLjU1LDE4LDIyLDE4eiBNNS44OCwxOGgyLjY2IGwzLjQtNS40MmgwLjEybDMuNCw1LjQyaDIuNjZsLTQuNjUtNy4yN0wxNy44MSw0aC0yLjY4bC0zLjA3LDQuOTloLTAuMTJMOC44NSw0SDYuMTlsNC4zMiw2LjczTDUuODgsMTh6XCJcbiAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgIC8+XG4gIDwvc3ZnPlxuKTtcblxuY29uc3QgSGVhZGluZ0ljb24gPSAoKSA9PiAoXG4gIDxzdmdcbiAgICB3aWR0aD1cIjMwXCJcbiAgICBoZWlnaHQ9XCIyOFwiXG4gICAgdmlld0JveD1cIjAgMCAzMCAyOFwiXG4gICAgZmlsbD1cIm5vbmVcIlxuICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgIHN0eWxlPXt7IHdpZHRoOiAnMjBweCcsIGhlaWdodDogJzE4cHgnIH19XG4gID5cbiAgICA8cGF0aFxuICAgICAgZD1cIk0yNyA0VjI0SDI5QzI5LjUgMjQgMzAgMjQuNSAzMCAyNVYyN0MzMCAyNy41NjI1IDI5LjUgMjggMjkgMjhIMTlDMTguNDM3NSAyOCAxOCAyNy41NjI1IDE4IDI3VjI1QzE4IDI0LjUgMTguNDM3NSAyNCAxOSAyNEgyMVYxNkg5VjI0SDExQzExLjUgMjQgMTIgMjQuNSAxMiAyNVYyN0MxMiAyNy41NjI1IDExLjUgMjggMTEgMjhIMUMwLjQzNzUgMjggMCAyNy41NjI1IDAgMjdWMjVDMCAyNC41IDAuNDM3NSAyNCAxIDI0SDNWNEgxQzAuNDM3NSA0IDAgMy41NjI1IDAgM1YxQzAgMC41IDAuNDM3NSAwIDEgMEgxMUMxMS41IDAgMTIgMC41IDEyIDFWM0MxMiAzLjU2MjUgMTEuNSA0IDExIDRIOVYxMkgyMVY0SDE5QzE4LjQzNzUgNCAxOCAzLjU2MjUgMTggM1YxQzE4IDAuNSAxOC40Mzc1IDAgMTkgMEgyOUMyOS41IDAgMzAgMC41IDMwIDFWM0MzMCAzLjU2MjUgMjkuNSA0IDI5IDRIMjdaXCJcbiAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgIC8+XG4gIDwvc3ZnPlxuKTtcblxuY29uc3QgRXh0ZW5kZWRUYWJsZSA9IFRhYmxlLmV4dGVuZCh7XG4gIGFkZEF0dHJpYnV0ZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJvcmRlcjogeyBkZWZhdWx0OiAnMScgfSxcbiAgICB9O1xuICB9LFxuICByZW5kZXJIVE1MKHByb3BzKSB7XG4gICAgY29uc3Qgb3JpZ2luYWxUYWJsZSA9IHRoaXMucGFyZW50KHByb3BzKTtcbiAgICBjb25zdCB7IGJvcmRlciB9ID0gcHJvcHMuSFRNTEF0dHJpYnV0ZXM7XG5cbiAgICBjb25zdCBwcmV2aW91c1N0eWxlID0gYCR7b3JpZ2luYWxUYWJsZVsxXS5zdHlsZX0ke29yaWdpbmFsVGFibGVbMV0uc3R5bGUubWF0Y2goLy4qOyAqLykgPyAnJyA6ICc7J31gO1xuXG4gICAgb3JpZ2luYWxUYWJsZVsxXS5zdHlsZSA9IGAke3ByZXZpb3VzU3R5bGV9XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgY29sb3I6IHZhcigtLXBpZS10ZXh0LCBibGFjayk7XG4gICAgdGFibGUtbGF5b3V0OiBmaXhlZDtcbiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBpZS1iYWNrZ3JvdW5kLCByZ2JhKDI1NSwgMjU1LCAyNTUpKWA7XG4gICAgb3JpZ2luYWxUYWJsZVsxXS5ib3JkZXIgPSBib3JkZXIgPyBib3JkZXIgOiAnMSc7XG5cbiAgICByZXR1cm4gb3JpZ2luYWxUYWJsZTtcbiAgfSxcbn0pO1xuXG5jb25zdCBzdHlsZXMgPSAodGhlbWUpID0+ICh7XG4gIHJvb3Q6IHtcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICBwYWRkaW5nOiAnMHB4JyxcbiAgICBib3JkZXI6ICcxcHggc29saWQgI2NjYycsXG4gICAgYm9yZGVyUmFkaXVzOiAnNHB4JyxcbiAgICBjdXJzb3I6ICd0ZXh0JyxcbiAgICAnJiBbZGF0YS1zbGF0ZS1lZGl0b3I9XCJ0cnVlXCJdJzoge1xuICAgICAgd29yZEJyZWFrOiAnYnJlYWstd29yZCcsXG4gICAgICBvdmVyZmxvdzogJ3Zpc2libGUnLFxuICAgICAgbWF4SGVpZ2h0OiAnNTAwcHgnLFxuICAgICAgLy8gbmVlZGVkIGluIG9yZGVyIHRvIGJlIGFibGUgdG8gcHV0IHRoZSBmb2N1cyBiZWZvcmUgYSB2b2lkIGVsZW1lbnQgd2hlbiBpdCBpcyB0aGUgZmlyc3Qgb25lIGluIHRoZSBlZGl0b3JcbiAgICAgIHBhZGRpbmc6ICc1cHgnLFxuICAgIH0sXG5cbiAgICAnJjpmaXJzdC1jaGlsZCc6IHtcbiAgICAgIG1hcmdpblRvcDogMCxcbiAgICB9LFxuXG4gICAgJyYgdWwsICYgb2wnOiB7XG4gICAgICBwYWRkaW5nOiAnMCAxcmVtJyxcbiAgICAgIG1hcmdpbjogJzEuMjVyZW0gMXJlbSAxLjI1cmVtIDAuNHJlbScsXG4gICAgfSxcblxuICAgICcmIHVsIGxpIHAsICYgb2wgbGkgcCc6IHtcbiAgICAgIG1hcmdpblRvcDogJzAuMjVlbScsXG4gICAgICBtYXJnaW5Cb3R0b206ICcwLjI1ZW0nLFxuICAgIH0sXG5cbiAgICAnJiBoMSwgJiBoMiwgJiBoMywgJiBoNCwgJiBoNSwgJiBoNic6IHtcbiAgICAgIGxpbmVIZWlnaHQ6IDEuMSxcbiAgICAgIG1hcmdpblRvcDogJzIuNXJlbScsXG4gICAgICB0ZXh0V3JhcDogJ3ByZXR0eScsXG4gICAgfSxcblxuICAgICcmIGgxLCAmIGgyJzoge1xuICAgICAgbWFyZ2luVG9wOiAnMy41cmVtJyxcbiAgICAgIG1hcmdpbkJvdHRvbTogJzEuNXJlbScsXG4gICAgfSxcblxuICAgICcmIGgxJzoge1xuICAgICAgZm9udFNpemU6ICcxLjRyZW0nLFxuICAgIH0sXG5cbiAgICAnJiBoMic6IHtcbiAgICAgIGZvbnRTaXplOiAnMS4ycmVtJyxcbiAgICB9LFxuXG4gICAgJyYgaDMnOiB7XG4gICAgICBmb250U2l6ZTogJzEuMXJlbScsXG4gICAgfSxcblxuICAgICcmIGg0LCAmIGg1LCAmIGg2Jzoge1xuICAgICAgZm9udFNpemU6ICcxcmVtJyxcbiAgICB9LFxuXG4gICAgJyYgY29kZSc6IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJ3ZhcigtLXB1cnBsZS1saWdodCknLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnMC40cmVtJyxcbiAgICAgIGNvbG9yOiAndmFyKC0tYmxhY2spJyxcbiAgICAgIGZvbnRTaXplOiAnMC44NXJlbScsXG4gICAgICBwYWRkaW5nOiAnMC4yNWVtIDAuM2VtJyxcbiAgICB9LFxuXG4gICAgJyYgcHJlJzoge1xuICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLWJsYWNrKScsXG4gICAgICBib3JkZXJSYWRpdXM6ICcwLjVyZW0nLFxuICAgICAgY29sb3I6ICd2YXIoLS13aGl0ZSknLFxuICAgICAgZm9udEZhbWlseTogXCInSmV0QnJhaW5zTW9ubycsIG1vbm9zcGFjZVwiLFxuICAgICAgbWFyZ2luOiAnMS41cmVtIDAnLFxuICAgICAgcGFkZGluZzogJzAuNzVyZW0gMXJlbScsXG5cbiAgICAgICcmIGNvZGUnOiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICdub25lJyxcbiAgICAgICAgY29sb3I6ICdpbmhlcml0JyxcbiAgICAgICAgZm9udFNpemU6ICcwLjhyZW0nLFxuICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgfSxcbiAgICB9LFxuXG4gICAgJyYgYmxvY2txdW90ZSc6IHtcbiAgICAgIGJvcmRlckxlZnQ6ICczcHggc29saWQgdmFyKC0tZ3JheS0zKScsXG4gICAgICBtYXJnaW46ICcxLjVyZW0gMCcsXG4gICAgICBwYWRkaW5nTGVmdDogJzFyZW0nLFxuICAgIH0sXG5cbiAgICAnJiBocic6IHtcbiAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgYm9yZGVyVG9wOiAnMXB4IHNvbGlkIHZhcigtLWdyYXktMiknLFxuICAgICAgbWFyZ2luOiAnMnJlbSAwJyxcbiAgICB9LFxuXG4gICAgJyYgdGFibGUnOiB7XG4gICAgICB0YWJsZUxheW91dDogJ2ZpeGVkJyxcbiAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICBib3JkZXJDb2xsYXBzZTogJ2NvbGxhcHNlJyxcbiAgICAgIGNvbG9yOiBjb2xvci50ZXh0KCksXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLmJhY2tncm91bmQoKSxcbiAgICB9LFxuICAgICcmIHRhYmxlOm5vdChbYm9yZGVyPVwiMVwiXSkgdHInOiB7XG4gICAgICBib3JkZXJUb3A6ICcxcHggc29saWQgI2RmZTJlNScsXG4gICAgfSxcbiAgICAnJiB0ZCwgdGgnOiB7XG4gICAgICBwYWRkaW5nOiAnLjZlbSAxZW0nLFxuICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICB9LFxuICAgICcmIHRhYmxlOm5vdChbYm9yZGVyPVwiMVwiXSkgdGQsIHRoJzoge1xuICAgICAgYm9yZGVyOiAnMXB4IHNvbGlkICNkZmUyZTUnLFxuICAgIH0sXG4gIH0sXG4gIGNoaWxkcmVuOiB7XG4gICAgcGFkZGluZzogJzEwcHggMTZweCcsXG4gIH0sXG4gIGVkaXRvckhvbGRlcjoge1xuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIHBhZGRpbmc6ICcwcHgnLFxuICAgIC8vIG92ZXJmbG93WTogJ2F1dG8nLFxuICAgIG92ZXJmbG93OiAndmlzaWJsZScsXG4gICAgY29sb3I6IGNvbG9yLnRleHQoKSxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLmJhY2tncm91bmQoKSxcbiAgICAnJjo6YmVmb3JlJzoge1xuICAgICAgbGVmdDogJzAnLFxuICAgICAgcmlnaHQ6ICcwJyxcbiAgICAgIGJvdHRvbTogJzAnLFxuICAgICAgaGVpZ2h0OiAnMXB4JyxcbiAgICAgIGNvbnRlbnQ6ICdcIlwiJyxcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgdHJhbnNpdGlvbjogJ2JhY2tncm91bmQtY29sb3IgMjAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSAwbXMnLFxuICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiAncmdiYSgwLCAwLCAwLCAwLjQyKScsXG4gICAgfSxcbiAgICAnJjo6YWZ0ZXInOiB7XG4gICAgICBsZWZ0OiAnMCcsXG4gICAgICByaWdodDogJzAnLFxuICAgICAgYm90dG9tOiAnMCcsXG4gICAgICBoZWlnaHQ6ICcxcHgnLFxuICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICB0cmFuc2Zvcm06ICdzY2FsZVgoMCknLFxuICAgICAgdHJhbnNpdGlvbjogJ3RyYW5zZm9ybSAyMDBtcyBjdWJpYy1iZXppZXIoMC4wLCAwLjAsIDAuMiwgMSkgMG1zLCBiYWNrZ3JvdW5kLWNvbG9yIDIwMG1zIGxpbmVhcicsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdyZ2JhKDAsIDAsIDAsIDAuNDIpJyxcbiAgICB9LFxuICAgICcmOmZvY3VzJzoge1xuICAgICAgJyY6OmFmdGVyJzoge1xuICAgICAgICB0cmFuc2Zvcm06ICdzY2FsZVgoMSknLFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHByaW1hcnksXG4gICAgICAgIGhlaWdodDogJzJweCcsXG4gICAgICB9LFxuICAgIH0sXG4gICAgJyY6aG92ZXInOiB7XG4gICAgICAnJjo6YWZ0ZXInOiB7XG4gICAgICAgIHRyYW5zZm9ybTogJ3NjYWxlWCgxKScsXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUucGFsZXR0ZS5jb21tb24uYmxhY2ssXG4gICAgICAgIGhlaWdodDogJzJweCcsXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG4gIGRpc2FibGVkVW5kZXJsaW5lOiB7XG4gICAgJyY6OmJlZm9yZSc6IHtcbiAgICAgIGRpc3BsYXk6ICdub25lJyxcbiAgICB9LFxuICAgICcmOjphZnRlcic6IHtcbiAgICAgIGRpc3BsYXk6ICdub25lJyxcbiAgICB9LFxuICB9LFxuICBkaXNhYmxlZFNjcm9sbGJhcjoge1xuICAgICcmOjotd2Via2l0LXNjcm9sbGJhcic6IHtcbiAgICAgIGRpc3BsYXk6ICdub25lJyxcbiAgICB9LFxuICAgIHNjcm9sbGJhcldpZHRoOiAnbm9uZScsXG4gICAgJy1tcy1vdmVyZmxvdy1zdHlsZSc6ICdub25lJyxcbiAgfSxcbiAgcmVhZE9ubHk6IHtcbiAgICAnJjo6YmVmb3JlJzoge1xuICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgIGJhY2tncm91bmRTaXplOiAnNXB4IDFweCcsXG4gICAgICBiYWNrZ3JvdW5kSW1hZ2U6ICdsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC40MikgMzMlLCB0cmFuc3BhcmVudCAwJSknLFxuICAgICAgYmFja2dyb3VuZFJlcGVhdDogJ3JlcGVhdC14JyxcbiAgICAgIGJhY2tncm91bmRQb3NpdGlvbjogJ2xlZnQgdG9wJyxcbiAgICB9LFxuICAgICcmOjphZnRlcic6IHtcbiAgICAgIGxlZnQ6ICcwJyxcbiAgICAgIHJpZ2h0OiAnMCcsXG4gICAgICBib3R0b206ICcwJyxcbiAgICAgIGhlaWdodDogJzFweCcsXG4gICAgICBjb250ZW50OiAnXCJcIicsXG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgIHRyYW5zZm9ybTogJ3NjYWxlWCgwKScsXG4gICAgICB0cmFuc2l0aW9uOiAndHJhbnNmb3JtIDIwMG1zIGN1YmljLWJlemllcigwLjAsIDAuMCwgMC4yLCAxKSAwbXMsIGJhY2tncm91bmQtY29sb3IgMG1zIGxpbmVhcicsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdyZ2JhKDAsIDAsIDAsIDApJyxcbiAgICB9LFxuICAgICcmOmhvdmVyJzoge1xuICAgICAgJyY6OmFmdGVyJzoge1xuICAgICAgICB0cmFuc2Zvcm06ICdzY2FsZVgoMCknLFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnBhbGV0dGUuY29tbW9uLmJsYWNrLFxuICAgICAgICBoZWlnaHQ6ICcycHgnLFxuICAgICAgfSxcbiAgICB9LFxuICB9LFxuICBlZGl0b3JJbkZvY3VzOiB7XG4gICAgJyY6OmFmdGVyJzoge1xuICAgICAgdHJhbnNmb3JtOiAnc2NhbGVYKDEpJyxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogcHJpbWFyeSxcbiAgICAgIGhlaWdodDogJzJweCcsXG4gICAgfSxcbiAgICAnJjpob3Zlcic6IHtcbiAgICAgICcmOjphZnRlcic6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBwcmltYXJ5LFxuICAgICAgfSxcbiAgICB9LFxuICB9LFxuICBlcnJvcjoge1xuICAgIGJvcmRlcjogYDJweCBzb2xpZCAke3RoZW1lLnBhbGV0dGUuZXJyb3IubWFpbn0gIWltcG9ydGFudGAsXG4gIH0sXG4gIG5vQm9yZGVyOiB7XG4gICAgYm9yZGVyOiAnbm9uZScsXG4gIH0sXG4gIG5vUGFkZGluZzoge1xuICAgIHBhZGRpbmc6IDAsXG4gIH0sXG4gIHRvb2xiYXJPblRvcDoge1xuICAgIG1hcmdpblRvcDogJzQ1cHgnLFxuICB9LFxufSk7XG5cbmNvbnN0IGRlZmF1bHRSZXNwb25zZUFyZWFQcm9wcyA9IHtcbiAgb3B0aW9uczoge30sXG4gIHJlc3BBcmVhVG9vbGJhcjogKCkgPT4ge30sXG4gIG9uSGFuZGxlQXJlYUNoYW5nZTogKCkgPT4ge30sXG59O1xuXG5jb25zdCB2YWx1ZVRvU2l6ZSA9ICh2KSA9PiB7XG4gIGlmICghdikge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBjYWxjUmVnZXggPSAvXmNhbGNcXCgoLiopXFwpJC87XG5cbiAgaWYgKHR5cGVvZiB2ID09PSAnc3RyaW5nJykge1xuICAgIGlmICh2LmVuZHNXaXRoKCclJykpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHYuZW5kc1dpdGgoJ3B4JykgfHxcbiAgICAgIHYuZW5kc1dpdGgoJ3ZoJykgfHxcbiAgICAgIHYuZW5kc1dpdGgoJ3Z3JykgfHxcbiAgICAgIHYuZW5kc1dpdGgoJ2NoJykgfHxcbiAgICAgIHYuZW5kc1dpdGgoJ2VtJykgfHxcbiAgICAgIHYubWF0Y2goY2FsY1JlZ2V4KVxuICAgICkge1xuICAgICAgcmV0dXJuIHY7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gcGFyc2VJbnQodiwgMTApO1xuICAgICAgcmV0dXJuIGlzTmFOKHZhbHVlKSA/IHZhbHVlIDogYCR7dmFsdWV9cHhgO1xuICAgIH1cbiAgfVxuICBpZiAodHlwZW9mIHYgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIGAke3Z9cHhgO1xuICB9XG59O1xuXG5mdW5jdGlvbiBUaXB0YXBDb250YWluZXIocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGVkaXRvcixcbiAgICBlZGl0b3JTdGF0ZSxcbiAgICBjbGFzc2VzLFxuICAgIGNoaWxkcmVuLFxuICAgIGRpc2FibGVVbmRlcmxpbmUsXG4gICAgZGlzYWJsZVNjcm9sbGJhcixcbiAgICBhY3RpdmVQbHVnaW5zLFxuICAgIHRvb2xiYXJPcHRzLFxuICAgIHJlc3BvbnNlQXJlYVByb3BzLFxuICAgIGF1dG9Gb2N1cyxcbiAgICBtaW5XaWR0aCxcbiAgICB3aWR0aCxcbiAgICBtYXhXaWR0aCxcbiAgICBtaW5IZWlnaHQsXG4gICAgaGVpZ2h0LFxuICAgIG1heEhlaWdodCxcbiAgfSA9IHByb3BzO1xuICBjb25zdCBob2xkZXJOYW1lcyA9IGNsYXNzTmFtZXMoY2xhc3Nlcy5lZGl0b3JIb2xkZXIsIHtcbiAgICBbY2xhc3Nlcy5lZGl0b3JJbkZvY3VzXTogZWRpdG9yU3RhdGUuaXNGb2N1c2VkLFxuICAgIFtjbGFzc2VzLnJlYWRPbmx5XTogZWRpdG9yU3RhdGUucmVhZE9ubHksXG4gICAgW2NsYXNzZXMuZGlzYWJsZWRVbmRlcmxpbmVdOiBkaXNhYmxlVW5kZXJsaW5lLFxuICAgIFtjbGFzc2VzLmRpc2FibGVkU2Nyb2xsYmFyXTogZGlzYWJsZVNjcm9sbGJhcixcbiAgfSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZWRpdG9yICYmIGF1dG9Gb2N1cykge1xuICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgIGVkaXRvci5jb21tYW5kcy5mb2N1cygnZW5kJyk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFtlZGl0b3IsIGF1dG9Gb2N1c10pO1xuXG4gIGNvbnN0IHNpemVTdHlsZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICB3aWR0aDogdmFsdWVUb1NpemUod2lkdGgpLFxuICAgICAgbWluV2lkdGg6IHZhbHVlVG9TaXplKG1pbldpZHRoKSxcbiAgICAgIG1heFdpZHRoOiB2YWx1ZVRvU2l6ZShtYXhXaWR0aCksXG4gICAgICBoZWlnaHQ6IHZhbHVlVG9TaXplKGhlaWdodCksXG4gICAgICBtaW5IZWlnaHQ6IHZhbHVlVG9TaXplKG1pbkhlaWdodCksXG4gICAgICBtYXhIZWlnaHQ6IHZhbHVlVG9TaXplKG1heEhlaWdodCksXG4gICAgfTtcbiAgfSwgW21pbldpZHRoLCB3aWR0aCwgbWF4V2lkdGgsIG1pbkhlaWdodCwgaGVpZ2h0LCBtYXhIZWlnaHRdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhcbiAgICAgICAge1xuICAgICAgICAgIFtjbGFzc2VzLm5vQm9yZGVyXTogdG9vbGJhck9wdHMgJiYgdG9vbGJhck9wdHMubm9Cb3JkZXIsXG4gICAgICAgICAgW2NsYXNzZXMuZXJyb3JdOiB0b29sYmFyT3B0cyAmJiB0b29sYmFyT3B0cy5lcnJvcixcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3Nlcy5yb290LFxuICAgICAgICBwcm9wcy5jbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgc3R5bGU9e3sgd2lkdGg6IHNpemVTdHlsZS53aWR0aCwgbWluV2lkdGg6IHNpemVTdHlsZS5taW5XaWR0aCwgbWF4V2lkdGg6IHNpemVTdHlsZS5tYXhXaWR0aCB9fVxuICAgID5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtob2xkZXJOYW1lc30+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFtjbGFzc2VzLm5vUGFkZGluZ106IHRvb2xiYXJPcHRzICYmIHRvb2xiYXJPcHRzLm5vUGFkZGluZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjbGFzc2VzLmNoaWxkcmVuLFxuICAgICAgICAgICl9XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKntlZGl0b3JTdGF0ZS5pc0ZvY3VzZWQgJiYgPE1lbnVCYXIgZWRpdG9yPXtlZGl0b3J9IC8+fSovfVxuICAgICAgey8qPFRvb2xiYXIgZWRpdG9yPXtlZGl0b3J9IGVkaXRvclN0YXRlPXtlZGl0b3JTdGF0ZX0gcGx1Z2lucz17cGx1Z2luc30gdG9vbGJhck9wdHM9e3Rvb2xiYXJPcHRzfSBpc0ZvY3VzZWQ9e2VkaXRvclN0YXRlLmlzRm9jdXNlZH0gLz4qL31cbiAgICAgIHtlZGl0b3IgJiYgKFxuICAgICAgICA8U3R5bGVkTWVudUJhclxuICAgICAgICAgIGVkaXRvcj17ZWRpdG9yfVxuICAgICAgICAgIHJlc3BvbnNlQXJlYVByb3BzPXtyZXNwb25zZUFyZWFQcm9wc31cbiAgICAgICAgICB0b29sYmFyT3B0cz17dG9vbGJhck9wdHN9XG4gICAgICAgICAgYWN0aXZlUGx1Z2lucz17YWN0aXZlUGx1Z2luc31cbiAgICAgICAgICBvbkNoYW5nZT17cHJvcHMub25DaGFuZ2V9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuXG5jb25zdCBFZGl0b3JDb250YWluZXIgPSB3aXRoU3R5bGVzKHN0eWxlcykoVGlwdGFwQ29udGFpbmVyKTtcblxuZnVuY3Rpb24gTWVudUJhcih7IGVkaXRvciwgY2xhc3NlcywgYWN0aXZlUGx1Z2lucywgdG9vbGJhck9wdHM6IHRvb2xPcHRzLCByZXNwb25zZUFyZWFQcm9wcywgb25DaGFuZ2UgfSkge1xuICBjb25zdCBbc2hvd1BpY2tlciwgc2V0U2hvd1BpY2tlcl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHRvb2xiYXJPcHRzID0gdG9vbE9wdHMgPz8ge307XG4gIC8vIFJlYWQgdGhlIGN1cnJlbnQgZWRpdG9yJ3Mgc3RhdGUsIGFuZCByZS1yZW5kZXIgdGhlIGNvbXBvbmVudCB3aGVuIGl0IGNoYW5nZXNcbiAgY29uc3QgZWRpdG9yU3RhdGUgPSB1c2VFZGl0b3JTdGF0ZSh7XG4gICAgZWRpdG9yLFxuICAgIHNlbGVjdG9yOiAoY3R4KSA9PiB7XG4gICAgICBjb25zdCB7IHNlbGVjdGlvbiB9ID0gY3R4LmVkaXRvcj8uc3RhdGUgfHwge307XG5cbiAgICAgIGxldCBjdXJyZW50Tm9kZTtcblxuICAgICAgaWYgKHNlbGVjdGlvbiBpbnN0YW5jZW9mIE5vZGVTZWxlY3Rpb24pIHtcbiAgICAgICAgY3VycmVudE5vZGUgPSBzZWxlY3Rpb24ubm9kZTsgLy8gdGhlIHNlbGVjdGVkIG5vZGVcbiAgICAgIH1cblxuICAgICAgY29uc3QgaGlkZURlZmF1bHRUb29sYmFyID1cbiAgICAgICAgY3R4LmVkaXRvcj8uaXNBY3RpdmUoJ21hdGgnKSB8fFxuICAgICAgICBjdHguZWRpdG9yPy5pc0FjdGl2ZSgnZXhwbGljaXRfY29uc3RydWN0ZWRfcmVzcG9uc2UnKSB8fFxuICAgICAgICBjdHguZWRpdG9yPy5pc0FjdGl2ZSgnaW1hZ2VVcGxvYWROb2RlJyk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGN1cnJlbnROb2RlLFxuICAgICAgICBoaWRlRGVmYXVsdFRvb2xiYXIsXG4gICAgICAgIGlzRm9jdXNlZDogY3R4LmVkaXRvcj8uaXNGb2N1c2VkLFxuICAgICAgICBpc0JvbGQ6IGN0eC5lZGl0b3IuaXNBY3RpdmUoJ2JvbGQnKSA/PyBmYWxzZSxcbiAgICAgICAgY2FuQm9sZDpcbiAgICAgICAgICBjdHguZWRpdG9yXG4gICAgICAgICAgICAuY2FuKClcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAudG9nZ2xlQm9sZCgpXG4gICAgICAgICAgICAucnVuKCkgPz8gZmFsc2UsXG4gICAgICAgIGlzVGFibGU6IGN0eC5lZGl0b3IuaXNBY3RpdmUoJ3RhYmxlJykgPz8gZmFsc2UsXG4gICAgICAgIHRhYmxlSGFzQm9yZGVyOiBjdHguZWRpdG9yLmdldEF0dHJpYnV0ZXMoJ3RhYmxlJyk/LmJvcmRlciA9PT0gJzEnID8/IGZhbHNlLFxuICAgICAgICBjYW5UYWJsZTpcbiAgICAgICAgICBjdHguZWRpdG9yXG4gICAgICAgICAgICAuY2FuKClcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuaW5zZXJ0VGFibGUoKVxuICAgICAgICAgICAgLnJ1bigpID8/IGZhbHNlLFxuICAgICAgICBpc0l0YWxpYzogY3R4LmVkaXRvci5pc0FjdGl2ZSgnaXRhbGljJykgPz8gZmFsc2UsXG4gICAgICAgIGNhbkl0YWxpYzpcbiAgICAgICAgICBjdHguZWRpdG9yXG4gICAgICAgICAgICAuY2FuKClcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAudG9nZ2xlSXRhbGljKClcbiAgICAgICAgICAgIC5ydW4oKSA/PyBmYWxzZSxcbiAgICAgICAgaXNTdHJpa2U6IGN0eC5lZGl0b3IuaXNBY3RpdmUoJ3N0cmlrZScpID8/IGZhbHNlLFxuICAgICAgICBjYW5TdHJpa2U6XG4gICAgICAgICAgY3R4LmVkaXRvclxuICAgICAgICAgICAgLmNhbigpXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLnRvZ2dsZVN0cmlrZSgpXG4gICAgICAgICAgICAucnVuKCkgPz8gZmFsc2UsXG4gICAgICAgIGlzQ29kZTogY3R4LmVkaXRvci5pc0FjdGl2ZSgnY29kZScpID8/IGZhbHNlLFxuICAgICAgICBjYW5Db2RlOlxuICAgICAgICAgIGN0eC5lZGl0b3JcbiAgICAgICAgICAgIC5jYW4oKVxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC50b2dnbGVDb2RlKClcbiAgICAgICAgICAgIC5ydW4oKSA/PyBmYWxzZSxcbiAgICAgICAgY2FuQ2xlYXJNYXJrczpcbiAgICAgICAgICBjdHguZWRpdG9yXG4gICAgICAgICAgICAuY2FuKClcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAudW5zZXRBbGxNYXJrcygpXG4gICAgICAgICAgICAucnVuKCkgPz8gZmFsc2UsXG4gICAgICAgIGlzVW5kZXJsaW5lOiBjdHguZWRpdG9yLmlzQWN0aXZlKCd1bmRlcmxpbmUnKSA/PyBmYWxzZSxcbiAgICAgICAgaXNTdWJTY3JpcHQ6IGN0eC5lZGl0b3IuaXNBY3RpdmUoJ3N1YnNjcmlwdCcpID8/IGZhbHNlLFxuICAgICAgICBpc1N1cGVyU2NyaXB0OiBjdHguZWRpdG9yLmlzQWN0aXZlKCdzdXBlcnNjcmlwdCcpID8/IGZhbHNlLFxuICAgICAgICBpc1BhcmFncmFwaDogY3R4LmVkaXRvci5pc0FjdGl2ZSgncGFyYWdyYXBoJykgPz8gZmFsc2UsXG4gICAgICAgIGlzSGVhZGluZzE6IGN0eC5lZGl0b3IuaXNBY3RpdmUoJ2hlYWRpbmcnLCB7IGxldmVsOiAxIH0pID8/IGZhbHNlLFxuICAgICAgICBpc0hlYWRpbmcyOiBjdHguZWRpdG9yLmlzQWN0aXZlKCdoZWFkaW5nJywgeyBsZXZlbDogMiB9KSA/PyBmYWxzZSxcbiAgICAgICAgaXNIZWFkaW5nMzogY3R4LmVkaXRvci5pc0FjdGl2ZSgnaGVhZGluZycsIHsgbGV2ZWw6IDMgfSkgPz8gZmFsc2UsXG4gICAgICAgIGlzSGVhZGluZzQ6IGN0eC5lZGl0b3IuaXNBY3RpdmUoJ2hlYWRpbmcnLCB7IGxldmVsOiA0IH0pID8/IGZhbHNlLFxuICAgICAgICBpc0hlYWRpbmc1OiBjdHguZWRpdG9yLmlzQWN0aXZlKCdoZWFkaW5nJywgeyBsZXZlbDogNSB9KSA/PyBmYWxzZSxcbiAgICAgICAgaXNIZWFkaW5nNjogY3R4LmVkaXRvci5pc0FjdGl2ZSgnaGVhZGluZycsIHsgbGV2ZWw6IDYgfSkgPz8gZmFsc2UsXG4gICAgICAgIGlzQnVsbGV0TGlzdDogY3R4LmVkaXRvci5pc0FjdGl2ZSgnYnVsbGV0TGlzdCcpID8/IGZhbHNlLFxuICAgICAgICBpc09yZGVyZWRMaXN0OiBjdHguZWRpdG9yLmlzQWN0aXZlKCdvcmRlcmVkTGlzdCcpID8/IGZhbHNlLFxuICAgICAgICBpc0NvZGVCbG9jazogY3R4LmVkaXRvci5pc0FjdGl2ZSgnY29kZUJsb2NrJykgPz8gZmFsc2UsXG4gICAgICAgIGlzQmxvY2txdW90ZTogY3R4LmVkaXRvci5pc0FjdGl2ZSgnYmxvY2txdW90ZScpID8/IGZhbHNlLFxuICAgICAgICBjYW5VbmRvOlxuICAgICAgICAgIGN0eC5lZGl0b3JcbiAgICAgICAgICAgIC5jYW4oKVxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC51bmRvKClcbiAgICAgICAgICAgIC5ydW4oKSA/PyBmYWxzZSxcbiAgICAgICAgY2FuUmVkbzpcbiAgICAgICAgICBjdHguZWRpdG9yXG4gICAgICAgICAgICAuY2FuKClcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAucmVkbygpXG4gICAgICAgICAgICAucnVuKCkgPz8gZmFsc2UsXG4gICAgICB9O1xuICAgIH0sXG4gIH0pO1xuICBjb25zdCBoYXNEb25lQnV0dG9uID0gZmFsc2U7XG4gIGNvbnN0IGF1dG9XaWR0aCA9IGZhbHNlO1xuXG4gIGNvbnN0IG5hbWVzID0gY2xhc3NOYW1lcyhjbGFzc2VzLnRvb2xiYXIsIFBJRV9UT09MQkFSX19DTEFTUywge1xuICAgIFtjbGFzc2VzLnRvb2xiYXJXaXRoTm9Eb25lXTogIWhhc0RvbmVCdXR0b24sXG4gICAgW2NsYXNzZXMudG9vbGJhclRvcF06IHRvb2xiYXJPcHRzLnBvc2l0aW9uID09PSAndG9wJyxcbiAgICBbY2xhc3Nlcy50b29sYmFyUmlnaHRdOiB0b29sYmFyT3B0cy5hbGlnbm1lbnQgPT09ICdyaWdodCcsXG4gICAgW2NsYXNzZXMuZm9jdXNlZF06IHRvb2xiYXJPcHRzLmFsd2F5c1Zpc2libGUgfHwgKGVkaXRvclN0YXRlLmlzRm9jdXNlZCAmJiAhZWRpdG9yLl90b29sYmFyT3BlbmVkKSxcbiAgICBbY2xhc3Nlcy5hdXRvV2lkdGhdOiBhdXRvV2lkdGgsXG4gICAgW2NsYXNzZXMuZnVsbFdpZHRoXTogIWF1dG9XaWR0aCxcbiAgICBbY2xhc3Nlcy5oaWRkZW5dOiB0b29sYmFyT3B0cy5pc0hpZGRlbiA9PT0gdHJ1ZSxcbiAgfSk7XG4gIGNvbnN0IGN1c3RvbVN0eWxlcyA9IHRvb2xiYXJPcHRzLm1pbldpZHRoICE9PSB1bmRlZmluZWQgPyB7IG1pbldpZHRoOiB0b29sYmFyT3B0cy5taW5XaWR0aCB9IDoge307XG4gIGNvbnN0IGhhbmRsZU1vdXNlRG93biA9IChlKSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICB9O1xuICBjb25zdCB0b29sYmFyQnV0dG9ucyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gW1xuICAgICAge1xuICAgICAgICBpY29uOiA8R3JpZE9uIC8+LFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAuaW5zZXJ0VGFibGUoeyByb3dzOiAyLCBjb2xzOiAyLCB3aXRoSGVhZGVyUm93OiBmYWxzZSB9KVxuICAgICAgICAgICAgLnJ1bigpLFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIWFjdGl2ZVBsdWdpbnM/LmluY2x1ZGVzKCd0YWJsZScpIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzQWN0aXZlOiAoc3RhdGUpID0+IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzRGlzYWJsZWQ6IChzdGF0ZSkgPT4gIXN0YXRlLmNhblRhYmxlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPEFkZFJvdyAvPixcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT5cbiAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgLmFkZFJvd0FmdGVyKClcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0FjdGl2ZTogKHN0YXRlKSA9PiBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0Rpc2FibGVkOiAoc3RhdGUpID0+ICFzdGF0ZS5jYW5UYWJsZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxSZW1vdmVSb3cgLz4sXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC5kZWxldGVSb3coKVxuICAgICAgICAgICAgLnJ1bigpLFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIXN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzQWN0aXZlOiAoc3RhdGUpID0+IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzRGlzYWJsZWQ6IChzdGF0ZSkgPT4gIXN0YXRlLmNhblRhYmxlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPEFkZENvbHVtbiAvPixcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT5cbiAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgLmFkZENvbHVtbkFmdGVyKClcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0FjdGl2ZTogKHN0YXRlKSA9PiBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0Rpc2FibGVkOiAoc3RhdGUpID0+ICFzdGF0ZS5jYW5UYWJsZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxSZW1vdmVDb2x1bW4gLz4sXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC5kZWxldGVDb2x1bW4oKVxuICAgICAgICAgICAgLnJ1bigpLFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIXN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzQWN0aXZlOiAoc3RhdGUpID0+IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzRGlzYWJsZWQ6IChzdGF0ZSkgPT4gIXN0YXRlLmNhblRhYmxlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPFJlbW92ZVRhYmxlIC8+LFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAuZGVsZXRlVGFibGUoKVxuICAgICAgICAgICAgLnJ1bigpLFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIXN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzQWN0aXZlOiAoc3RhdGUpID0+IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzRGlzYWJsZWQ6IChzdGF0ZSkgPT4gIXN0YXRlLmNhblRhYmxlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPEJvcmRlckFsbCAvPixcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT4ge1xuICAgICAgICAgIGNvbnN0IHRhYmxlQXR0cnMgPSBlZGl0b3IuZ2V0QXR0cmlidXRlcygndGFibGUnKTtcblxuICAgICAgICAgIGNvbnN0IHVwZGF0ZSA9IHtcbiAgICAgICAgICAgIC4uLnRhYmxlQXR0cnMsXG4gICAgICAgICAgICBib3JkZXI6IHRhYmxlQXR0cnMuYm9yZGVyICE9PSAnMCcgPyAnMCcgOiAnMScsXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGVkaXRvci5jb21tYW5kcy51cGRhdGVBdHRyaWJ1dGVzKCd0YWJsZScsIHVwZGF0ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgaXNBY3RpdmU6IChzdGF0ZSkgPT4gc3RhdGUudGFibGVIYXNCb3JkZXIsXG4gICAgICAgIGlzRGlzYWJsZWQ6IChzdGF0ZSkgPT4gIXN0YXRlLmNhblRhYmxlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPEJvbGQgLz4sXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC50b2dnbGVCb2xkKClcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygnYm9sZCcpIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzQWN0aXZlOiAoc3RhdGUpID0+IHN0YXRlLmlzQm9sZCxcbiAgICAgICAgaXNEaXNhYmxlZDogKHN0YXRlKSA9PiAhc3RhdGUuY2FuQm9sZCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxJdGFsaWMgLz4sXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC50b2dnbGVJdGFsaWMoKVxuICAgICAgICAgICAgLnJ1bigpLFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIWFjdGl2ZVBsdWdpbnM/LmluY2x1ZGVzKCdpdGFsaWMnKSB8fCBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0FjdGl2ZTogKHN0YXRlKSA9PiBzdGF0ZS5pc0l0YWxpYyxcbiAgICAgICAgaXNEaXNhYmxlZDogKHN0YXRlKSA9PiAhc3RhdGUuY2FuSXRhbGljLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPFN0cmlrZXRocm91Z2ggLz4sXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC50b2dnbGVTdHJpa2UoKVxuICAgICAgICAgICAgLnJ1bigpLFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIWFjdGl2ZVBsdWdpbnM/LmluY2x1ZGVzKCdzdHJpa2V0aHJvdWdoJykgfHwgc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgaXNBY3RpdmU6IChzdGF0ZSkgPT4gc3RhdGUuaXNTdHJpa2UsXG4gICAgICAgIGlzRGlzYWJsZWQ6IChzdGF0ZSkgPT4gIXN0YXRlLmNhblN0cmlrZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxDb2RlIC8+LFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAudG9nZ2xlQ29kZSgpXG4gICAgICAgICAgICAucnVuKCksXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhYWN0aXZlUGx1Z2lucz8uaW5jbHVkZXMoJ2NvZGUnKSB8fCBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0FjdGl2ZTogKHN0YXRlKSA9PiBzdGF0ZS5pc0NvZGUsXG4gICAgICAgIGlzRGlzYWJsZWQ6IChzdGF0ZSkgPT4gIXN0YXRlLmNhbkNvZGUsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiA8VW5kZXJsaW5lIC8+LFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAudG9nZ2xlVW5kZXJsaW5lKClcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygndW5kZXJsaW5lJykgfHwgc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgaXNBY3RpdmU6IChzdGF0ZSkgPT4gc3RhdGUuaXNVbmRlcmxpbmUsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiA8U3Vic2NyaXB0SWNvbiAvPixcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT5cbiAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgLnRvZ2dsZVN1YnNjcmlwdCgpXG4gICAgICAgICAgICAucnVuKCksXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhYWN0aXZlUGx1Z2lucz8uaW5jbHVkZXMoJ3N1YnNjcmlwdCcpIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzQWN0aXZlOiAoc3RhdGUpID0+IHN0YXRlLmlzU3ViU2NyaXB0LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPFN1cGVyc2NyaXB0SWNvbiAvPixcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT5cbiAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgLnRvZ2dsZVN1cGVyc2NyaXB0KClcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygnc3VwZXJzY3JpcHQnKSB8fCBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0FjdGl2ZTogKHN0YXRlKSA9PiBzdGF0ZS5pc1N1cGVyU2NyaXB0LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPEltYWdlSWNvbiAvPixcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygnaW1hZ2UnKSB8fCBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAuc2V0SW1hZ2VVcGxvYWROb2RlKClcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxUaGVhdGVyc0ljb24gLz4sXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhYWN0aXZlUGx1Z2lucz8uaW5jbHVkZXMoJ3ZpZGVvJykgfHwgc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT5cbiAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgLmluc2VydE1lZGlhKHsgdGFnOiAndmlkZW8nIH0pXG4gICAgICAgICAgICAucnVuKCksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiA8Vm9sdW1lVXBJY29uIC8+LFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIWFjdGl2ZVBsdWdpbnM/LmluY2x1ZGVzKCdhdWRpbycpIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC5pbnNlcnRNZWRpYSh7IHRhZzogJ2F1ZGlvJyB9KVxuICAgICAgICAgICAgLnJ1bigpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPENTU0ljb24gLz4sXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhYWN0aXZlUGx1Z2lucz8uaW5jbHVkZXMoJ2NzcycpIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+IGVkaXRvci5jb21tYW5kcy5vcGVuQ1NTQ2xhc3NEaWFsb2coKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxIZWFkaW5nSWNvbiAvPixcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygnaDMnKSB8fCBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAudG9nZ2xlSGVhZGluZyh7IGxldmVsOiAzIH0pXG4gICAgICAgICAgICAucnVuKCksXG4gICAgICAgIGlzQWN0aXZlOiAoc3RhdGUpID0+IHN0YXRlLmlzSGVhZGluZzMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiA8RnVuY3Rpb25zIC8+LFxuICAgICAgICBoaWRkZW46ICgpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygnbWF0aCcpLFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAuaW5zZXJ0TWF0aCgnJylcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxDaGFyYWN0ZXJJY29uIGxldHRlcj1cIsOxXCIgLz4sXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhYWN0aXZlUGx1Z2lucz8uaW5jbHVkZXMoJ2xhbmd1YWdlQ2hhcmFjdGVycycpIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIG9uQ2xpY2s6ICgpID0+IHNldFNob3dQaWNrZXIoc3BhbmlzaENvbmZpZyksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiA8Q2hhcmFjdGVySWNvbiBsZXR0ZXI9XCLigqxcIiAvPixcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+IGFjdGl2ZVBsdWdpbnM/LmZpbHRlcihwID0+IHAgPT09ICdsYW5ndWFnZUNoYXJhY3RlcnMnKS5sZW5ndGggIT09IDIgfHwgc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgb25DbGljazogKCkgPT4gc2V0U2hvd1BpY2tlcihzcGVjaWFsQ29uZmlnKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxUZXh0QWxpZ25JY29uIGVkaXRvcj17ZWRpdG9yfSAvPixcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygndGV4dC1hbGlnbicpIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIG9uQ2xpY2s6ICgpID0+IHt9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPEJ1bGxldGVkTGlzdEljb24gLz4sXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhYWN0aXZlUGx1Z2lucz8uaW5jbHVkZXMoJ2J1bGxldGVkLWxpc3QnKSB8fCBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAudG9nZ2xlQnVsbGV0TGlzdCgpXG4gICAgICAgICAgICAucnVuKCksXG4gICAgICAgIGlzQWN0aXZlOiAoc3RhdGUpID0+IHN0YXRlLmlzQnVsbGV0TGlzdCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxOdW1iZXJlZExpc3RJY29uIC8+LFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIWFjdGl2ZVBsdWdpbnM/LmluY2x1ZGVzKCdudW1iZXJlZC1saXN0JykgfHwgc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT5cbiAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgLnRvZ2dsZU9yZGVyZWRMaXN0KClcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgICAgaXNBY3RpdmU6IChzdGF0ZSkgPT4gc3RhdGUuaXNPcmRlcmVkTGlzdCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxVbmRvIC8+LFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIWFjdGl2ZVBsdWdpbnM/LmluY2x1ZGVzKCd1bmRvJykgfHwgc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT5cbiAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgLnVuZG8oKVxuICAgICAgICAgICAgLnJ1bigpLFxuICAgICAgICBpc0Rpc2FibGVkOiAoc3RhdGUpID0+ICFzdGF0ZS5jYW5VbmRvLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPFJlZG8gLz4sXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhYWN0aXZlUGx1Z2lucz8uaW5jbHVkZXMoJ3JlZG8nKSB8fCBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAucmVkbygpXG4gICAgICAgICAgICAucnVuKCksXG4gICAgICAgIGlzRGlzYWJsZWQ6IChzdGF0ZSkgPT4gIXN0YXRlLmNhblJlZG8sXG4gICAgICB9LFxuICAgIF0sXG4gICAgW2FjdGl2ZVBsdWdpbnMsIGVkaXRvciwgc3BhbmlzaENvbmZpZywgc3BlY2lhbENvbmZpZywgc2V0U2hvd1BpY2tlcl0sXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17bmFtZXN9IHN0eWxlPXt7IC4uLmN1c3RvbVN0eWxlcyB9fSBvbk1vdXNlRG93bj17aGFuZGxlTW91c2VEb3dufT5cbiAgICAgIHshZWRpdG9yU3RhdGUuaGlkZURlZmF1bHRUb29sYmFyICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMuZGVmYXVsdFRvb2xiYXJ9IHRhYkluZGV4PVwiMVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmJ1dHRvbnNDb250YWluZXJ9PlxuICAgICAgICAgICAge3Rvb2xiYXJCdXR0b25zXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGJ0bikgPT4gIWJ0bi5oaWRkZW4/LihlZGl0b3JTdGF0ZSkpXG4gICAgICAgICAgICAgIC5tYXAoKGJ0biwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBkaXNhYmxlZCA9IGJ0bi5pc0Rpc2FibGVkPy4oZWRpdG9yU3RhdGUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZSA9IGJ0bi5pc0FjdGl2ZT8uKGVkaXRvclN0YXRlKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgYnRuLm9uQ2xpY2soZWRpdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKGNsYXNzZXMuYnV0dG9uLCB7IFtjbGFzc2VzLmFjdGl2ZV06IGFjdGl2ZSB9KX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge2J0bi5pY29ufVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAge2FjdGl2ZVBsdWdpbnM/LmluY2x1ZGVzKCdyZXNwb25zZUFyZWEnKSAmJiAoXG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgICAgICAgLmluc2VydFJlc3BvbnNlQXJlYShyZXNwb25zZUFyZWFQcm9wcy50eXBlKVxuICAgICAgICAgICAgICAgICAgLnJ1bigpO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMuYnV0dG9ufVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8VG9vbGJhckljb24gLz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICl9XG5cbiAgICAgICAgICA8RG9uZUJ1dHRvblxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICBvbkNoYW5nZT8uKGVkaXRvci5nZXRIVE1MKCkpO1xuICAgICAgICAgICAgICBlZGl0b3IuY29tbWFuZHMuYmx1cigpO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgICB7c2hvd1BpY2tlciAmJiAoXG4gICAgICAgIDxDaGFyYWN0ZXJQaWNrZXJcbiAgICAgICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgICAgICBvcHRzPXt7XG4gICAgICAgICAgICAuLi5zaG93UGlja2VyLFxuICAgICAgICAgICAgcmVuZGVyUG9wT3ZlcjogKGV2LCBjaCkgPT4gY29uc29sZS5sb2coJ1Nob3cgcG9wb3ZlcicsIGNoKSxcbiAgICAgICAgICAgIGNsb3NlUG9wT3ZlcjogKCkgPT4gY29uc29sZS5sb2coJ0Nsb3NlIHBvcG92ZXInKSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dQaWNrZXIoZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuY29uc3Qgc3R5bGUgPSAodGhlbWUpID0+ICh7XG4gIGRlZmF1bHRUb29sYmFyOiB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIHdpZHRoOiAnMTAwJScsXG4gICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgfSxcbiAgYnV0dG9uc0NvbnRhaW5lcjoge1xuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICB9LFxuICBidXR0b246IHtcbiAgICBjb2xvcjogJ2dyZXknLFxuICAgIGRpc3BsYXk6ICdpbmxpbmUtZmxleCcsXG4gICAgcGFkZGluZzogJzJweCcsXG4gICAgYmFja2dyb3VuZDogJ25vbmUnLFxuICAgIGJvcmRlcjogJ25vbmUnLFxuICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgICcmOmhvdmVyJzoge1xuICAgICAgY29sb3I6ICdibGFjaycsXG4gICAgfSxcbiAgICAnJjpmb2N1cyc6IHtcbiAgICAgIG91dGxpbmU6IGAycHggc29saWQgJHt0aGVtZS5wYWxldHRlLmdyZXlbNzAwXX1gLFxuICAgIH0sXG4gIH0sXG4gIGFjdGl2ZToge1xuICAgIGNvbG9yOiAnYmxhY2snLFxuICB9LFxuICBkaXNhYmxlZDoge1xuICAgIG9wYWNpdHk6IDAuNyxcbiAgICBjdXJzb3I6ICdub3QtYWxsb3dlZCcsXG4gICAgJyYgOmhvdmVyJzoge1xuICAgICAgY29sb3I6ICdncmV5JyxcbiAgICB9LFxuICB9LFxuICBpc0FjdGl2ZToge1xuICAgIGJhY2tncm91bmQ6ICd2YXIoLS1wdXJwbGUpJyxcbiAgICBjb2xvcjogJ3ZhcigtLXdoaXRlKScsXG4gIH0sXG4gIHRvb2xiYXI6IHtcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICB6SW5kZXg6IDIwLFxuICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicsXG4gICAgYmFja2dyb3VuZDogJ3ZhcigtLWVkaXRhYmxlLWh0bWwtdG9vbGJhci1iZywgI2VmZWZlZiknLFxuICAgIG1pbldpZHRoOiAnMjgwcHgnLFxuICAgIG1hcmdpbjogJzVweCAwIDAgMCcsXG4gICAgcGFkZGluZzogJzJweCcsXG4gICAgYm94U2hhZG93OlxuICAgICAgJzBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4xMiknLFxuICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBvcGFjaXR5OiAwLFxuICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgfSxcbiAgdG9vbGJhcldpdGhOb0RvbmU6IHtcbiAgICBtaW5XaWR0aDogJzI2NXB4JyxcbiAgfSxcbiAgdG9vbGJhclRvcDoge1xuICAgIHRvcDogJy00NXB4JyxcbiAgfSxcbiAgdG9vbGJhclJpZ2h0OiB7XG4gICAgcmlnaHQ6IDAsXG4gIH0sXG4gIGZ1bGxXaWR0aDoge1xuICAgIHdpZHRoOiAnMTAwJScsXG4gIH0sXG4gIGhpZGRlbjoge1xuICAgIHZpc2liaWxpdHk6ICdoaWRkZW4nLFxuICB9LFxuICBhdXRvV2lkdGg6IHtcbiAgICB3aWR0aDogJ2F1dG8nLFxuICB9LFxuICBmb2N1c2VkOiB7XG4gICAgb3BhY2l0eTogMSxcbiAgICBwb2ludGVyRXZlbnRzOiAnYXV0bycsXG4gIH0sXG4gIGljb25Sb290OiB7XG4gICAgd2lkdGg6ICcyOHB4JyxcbiAgICBoZWlnaHQ6ICcyOHB4JyxcbiAgICBwYWRkaW5nOiAnNHB4JyxcbiAgICB2ZXJ0aWNhbEFsaWduOiAndG9wJyxcbiAgfSxcbiAgbGFiZWw6IHtcbiAgICBjb2xvcjogJ3ZhcigtLWVkaXRhYmxlLWh0bWwtdG9vbGJhci1jaGVjaywgIzAwYmIwMCknLFxuICB9LFxuICBzaGFyZWQ6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gIH0sXG59KTtcbmNvbnN0IFN0eWxlZE1lbnVCYXIgPSB3aXRoU3R5bGVzKHN0eWxlLCB7IGluZGV4OiAxMDAwIH0pKE1lbnVCYXIpO1xuXG5jb25zdCBkZWZhdWx0VG9vbGJhck9wdHMgPSB7XG4gIHBvc2l0aW9uOiAnYm90dG9tJyxcbiAgYWxpZ25tZW50OiAnbGVmdCcsXG4gIGFsd2F5c1Zpc2libGU6IGZhbHNlLFxuICBzaG93RG9uZTogdHJ1ZSxcbiAgZG9uZU9uOiAnYmx1cicsXG59O1xuXG5leHBvcnQgY29uc3QgRWRpdGFibGVIdG1sID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IFtwZW5kaW5nSW1hZ2VzLCBzZXRQZW5kaW5nSW1hZ2VzXSA9IHVzZVN0YXRlKFtdKTtcbiAgY29uc3QgW3NjaGVkdWxlZCwgc2V0U2NoZWR1bGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgeyBjbGFzc2VzLCB0b29sYmFyT3B0cyB9ID0gcHJvcHM7XG4gIGNvbnN0IHRvb2xiYXJPcHRzVG9Vc2UgPSB7XG4gICAgLi4uZGVmYXVsdFRvb2xiYXJPcHRzLFxuICAgIC4uLnRvb2xiYXJPcHRzLFxuICB9O1xuICBjb25zdCBhY3RpdmVQbHVnaW5zVG9Vc2UgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBsZXQgeyBjdXN0b21QbHVnaW5zIH0gPSBwcm9wcy5wbHVnaW5Qcm9wcyB8fCB7fTtcblxuICAgIGN1c3RvbVBsdWdpbnMgPSBjdXN0b21QbHVnaW5zIHx8IFtdO1xuXG4gICAgcmV0dXJuIGJ1aWxkUGx1Z2lucyhwcm9wcy5hY3RpdmVQbHVnaW5zLCBjdXN0b21QbHVnaW5zLCB7XG4gICAgICBtYXRoOiB7fSxcbiAgICAgIHRleHRBbGlnbjoge30sXG4gICAgICBodG1sOiB7fSxcbiAgICAgIGV4dHJhQ1NTUnVsZXM6IHByb3BzLmV4dHJhQ1NTUnVsZXMgfHwge30sXG4gICAgICBpbWFnZToge30sXG4gICAgICB0b29sYmFyOiB7fSxcbiAgICAgIHRhYmxlOiB7fSxcbiAgICAgIHJlc3BvbnNlQXJlYToge30sXG4gICAgICBsYW5ndWFnZUNoYXJhY3RlcnM6IHByb3BzLmxhbmd1YWdlQ2hhcmFjdGVyc1Byb3BzLFxuICAgICAga2V5UGFkQ2hhcmFjdGVyUmVmOiB7fSxcbiAgICAgIHNldEtleXBhZEludGVyYWN0aW9uOiB7fSxcbiAgICAgIG1lZGlhOiB7fSxcbiAgICB9KTtcbiAgfSwgW3Byb3BzXSk7XG4gIGNvbnN0IGV4dGVuc2lvbnMgPSBbXG4gICAgVGV4dFN0eWxlS2l0LFxuICAgIFN0YXJ0ZXJLaXQsXG4gICAgRXh0ZW5kZWRUYWJsZSxcbiAgICBUYWJsZVJvdyxcbiAgICBUYWJsZUhlYWRlcixcbiAgICBUYWJsZUNlbGwsXG4gICAgUmVzcG9uc2VBcmVhRXh0ZW5zaW9uLFxuICAgIEV4cGxpY2l0Q29uc3RydWN0ZWRSZXNwb25zZU5vZGUuY29uZmlndXJlKHByb3BzLnJlc3BvbnNlQXJlYVByb3BzKSxcbiAgICBEcmFnSW5UaGVCbGFua05vZGUuY29uZmlndXJlKHByb3BzLnJlc3BvbnNlQXJlYVByb3BzKSxcbiAgICBJbmxpbmVEcm9wZG93bk5vZGUuY29uZmlndXJlKHByb3BzLnJlc3BvbnNlQXJlYVByb3BzKSxcbiAgICBNYXRoTm9kZS5jb25maWd1cmUoe1xuICAgICAgdG9vbGJhck9wdHM6IHRvb2xiYXJPcHRzVG9Vc2UsXG4gICAgfSksXG4gICAgU3ViU2NyaXB0LFxuICAgIFN1cGVyU2NyaXB0LFxuICAgIFRleHRBbGlnbi5jb25maWd1cmUoe1xuICAgICAgdHlwZXM6IFsnaGVhZGluZycsICdwYXJhZ3JhcGgnXSxcbiAgICAgIGFsaWdubWVudHM6IFsnbGVmdCcsICdyaWdodCcsICdjZW50ZXInXSxcbiAgICB9KSxcbiAgICBJbWFnZSxcbiAgICBJbWFnZVVwbG9hZE5vZGUuY29uZmlndXJlKHtcbiAgICAgIHRvb2xiYXJPcHRzOiB0b29sYmFyT3B0c1RvVXNlLFxuICAgICAgaW1hZ2VIYW5kbGluZzoge1xuICAgICAgICBkaXNhYmxlSW1hZ2VBbGlnbm1lbnRCdXR0b25zOiBwcm9wcy5kaXNhYmxlSW1hZ2VBbGlnbm1lbnRCdXR0b25zLFxuICAgICAgICBvbkRvbmU6ICgpID0+IHByb3BzLm9uRG9uZT8uKGVkaXRvci5nZXRIVE1MKCkpLFxuICAgICAgICBvbkRlbGV0ZTpcbiAgICAgICAgICBwcm9wcy5pbWFnZVN1cHBvcnQgJiZcbiAgICAgICAgICBwcm9wcy5pbWFnZVN1cHBvcnQuZGVsZXRlICYmXG4gICAgICAgICAgKChub2RlLCBkb25lKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHNyYyB9ID0gbm9kZS5hdHRycztcblxuICAgICAgICAgICAgcHJvcHMuaW1hZ2VTdXBwb3J0LmRlbGV0ZShzcmMsIChlKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld1BlbmRpbmdJbWFnZXMgPSBwZW5kaW5nSW1hZ2VzLmZpbHRlcigoaW1nKSA9PiBpbWcua2V5ICE9PSBub2RlLmtleSk7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgICAgICAgICAgICAgIHBlbmRpbmdJbWFnZXM6IG5ld1BlbmRpbmdJbWFnZXMsXG4gICAgICAgICAgICAgICAgc2NoZWR1bGVkOiBzY2hlZHVsZWQgJiYgbmV3UGVuZGluZ0ltYWdlcy5sZW5ndGggPT09IDAgPyBmYWxzZSA6IHNjaGVkdWxlZCxcbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICBzZXRQZW5kaW5nSW1hZ2VzKG5ld1N0YXRlLnBlbmRpbmdJbWFnZXMpO1xuICAgICAgICAgICAgICBzZXRTY2hlZHVsZWQobmV3U3RhdGUuc2NoZWR1bGVkKTtcbiAgICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSksXG4gICAgICAgIGluc2VydEltYWdlUmVxdWVzdGVkOlxuICAgICAgICAgIHByb3BzLmltYWdlU3VwcG9ydCAmJlxuICAgICAgICAgICgoYWRkZWRJbWFnZSwgZ2V0SGFuZGxlcikgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb25GaW5pc2ggPSAocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgIGxldCBjYjtcblxuICAgICAgICAgICAgICBpZiAoc2NoZWR1bGVkICYmIHJlc3VsdCkge1xuICAgICAgICAgICAgICAgIC8vIGZpbmlzaCBlZGl0aW5nIG9ubHkgb24gc3VjY2Vzc1xuICAgICAgICAgICAgICAgIGNiID0gcHJvcHMub25DaGFuZ2U7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb25zdCBuZXdQZW5kaW5nSW1hZ2VzID0gcGVuZGluZ0ltYWdlcy5maWx0ZXIoKGltZykgPT4gaW1nLmtleSAhPT0gYWRkZWRJbWFnZS5rZXkpO1xuICAgICAgICAgICAgICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAgICAgICAgICAgICBwZW5kaW5nSW1hZ2VzOiBuZXdQZW5kaW5nSW1hZ2VzLFxuICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgIGlmIChuZXdQZW5kaW5nSW1hZ2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIG5ld1N0YXRlLnNjaGVkdWxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgc2V0UGVuZGluZ0ltYWdlcyhuZXdTdGF0ZS5wZW5kaW5nSW1hZ2VzKTtcbiAgICAgICAgICAgICAgc2V0U2NoZWR1bGVkKG5ld1N0YXRlLnNjaGVkdWxlZCk7XG4gICAgICAgICAgICAgIGNiPy4oZWRpdG9yLmdldEhUTUwoKSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgY2FsbGJhY2sgPSAoKSA9PiB7XG4gICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgKiBUaGUgaGFuZGxlciBpcyB0aGUgb2JqZWN0IHRocm91Z2ggd2hpY2ggdGhlIG91dGVyIGNvbnRleHRcbiAgICAgICAgICAgICAgICogY29tbXVuaWNhdGVzIGZpbGUgdXBsb2FkIGV2ZW50cyBsaWtlOiBmaWxlQ2hvc2VuLCBjYW5jZWwsIHByb2dyZXNzXG4gICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICBjb25zdCBoYW5kbGVyID0gZ2V0SGFuZGxlcihvbkZpbmlzaCk7XG4gICAgICAgICAgICAgIHByb3BzLmltYWdlU3VwcG9ydC5hZGQoaGFuZGxlcik7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBzZXRQZW5kaW5nSW1hZ2VzKFsuLi5wZW5kaW5nSW1hZ2VzLCBhZGRlZEltYWdlXSk7XG4gICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgIH0pLFxuICAgICAgICBtYXhJbWFnZVdpZHRoOiBwcm9wcy5tYXhJbWFnZVdpZHRoLFxuICAgICAgICBtYXhJbWFnZUhlaWdodDogcHJvcHMubWF4SW1hZ2VIZWlnaHQsXG4gICAgICB9LFxuICAgICAgbGltaXQ6IDMsXG4gICAgfSksXG4gICAgTWVkaWEuY29uZmlndXJlKHtcbiAgICAgIHVwbG9hZFNvdW5kU3VwcG9ydDogcHJvcHMudXBsb2FkU291bmRTdXBwb3J0LFxuICAgIH0pLFxuICAgIENTU01hcmsuY29uZmlndXJlKHtcbiAgICAgIGV4dHJhQ1NTUnVsZXM6IHByb3BzLmV4dHJhQ1NTUnVsZXMsXG4gICAgfSksXG4gIF07XG4gIGNvbnN0IGVkaXRvciA9IHVzZUVkaXRvcih7XG4gICAgZXh0ZW5zaW9ucyxcbiAgICBpbW1lZGlhdGVseVJlbmRlcjogZmFsc2UsXG4gICAgY29udGVudDogcHJvcHMubWFya3VwLFxuICAgIG9uVXBkYXRlOiAoeyBlZGl0b3IsIHRyYW5zYWN0aW9uIH0pID0+IHRyYW5zYWN0aW9uLmlzRG9uZSAmJiBwcm9wcy5vbkNoYW5nZT8uKGVkaXRvci5nZXRIVE1MKCkpLFxuICAgIG9uQmx1cjogKHsgZWRpdG9yIH0pID0+IHtcbiAgICAgIGlmICh0b29sYmFyT3B0c1RvVXNlLmRvbmVPbiA9PT0gJ2JsdXInKSB7XG4gICAgICAgIHByb3BzLm9uQ2hhbmdlPy4oZWRpdG9yLmdldEhUTUwoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9wcy5vbkRvbmU/LihlZGl0b3IuZ2V0SFRNTCgpKTtcbiAgICAgIH1cbiAgICB9LFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLm1hcmt1cCAhPT0gZWRpdG9yLmdldEhUTUwoKSkge1xuICAgICAgZWRpdG9yLmNvbW1hbmRzLnNldENvbnRlbnQocHJvcHMubWFya3VwLCBmYWxzZSk7IC8vIGZhbHNlID0gZG9u4oCZdCBlbWl0IHVwZGF0ZVxuICAgIH1cbiAgfSwgW3Byb3BzLm1hcmt1cCwgZWRpdG9yXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBEZWZpbmUgeW91ciB2YXJpYWJsZXMgaW4gYSBKUyBvYmplY3RcbiAgICBjb25zdCBjc3NWYXJpYWJsZXMgPSB7XG4gICAgICAnLS13aGl0ZSc6ICcjZmZmJyxcbiAgICAgICctLWJsYWNrJzogJyMyZTJiMjknLFxuICAgICAgJy0tYmxhY2stY29udHJhc3QnOiAnIzExMGYwZScsXG4gICAgICAnLS1ncmF5LTEnOiAncmdiYSg2MSwgMzcsIDIwLCAuMDUpJyxcbiAgICAgICctLWdyYXktMic6ICdyZ2JhKDYxLCAzNywgMjAsIC4wOCknLFxuICAgICAgJy0tZ3JheS0zJzogJ3JnYmEoNjEsIDM3LCAyMCwgLjEyKScsXG4gICAgICAnLS1ncmF5LTQnOiAncmdiYSg1MywgMzgsIDI4LCAuMyknLFxuICAgICAgJy0tZ3JheS01JzogJ3JnYmEoMjgsIDI1LCAyMywgLjYpJyxcbiAgICAgICctLWdyZWVuJzogJyMyMmM1NWUnLFxuICAgICAgJy0tcHVycGxlJzogJyM2YTAwZjUnLFxuICAgICAgJy0tcHVycGxlLWNvbnRyYXN0JzogJyM1ODAwY2MnLFxuICAgICAgJy0tcHVycGxlLWxpZ2h0JzogJ3JnYmEoODgsIDUsIDI1NSwgLjA1KScsXG4gICAgICAnLS15ZWxsb3ctY29udHJhc3QnOiAnI2ZhY2MxNScsXG4gICAgICAnLS15ZWxsb3cnOiAncmdiYSgyNTAsIDIwNCwgMjEsIC40KScsXG4gICAgICAnLS15ZWxsb3ctbGlnaHQnOiAnI2ZmZmFlNScsXG4gICAgICAnLS1yZWQnOiAnI2ZmNWMzMycsXG4gICAgICAnLS1yZWQtbGlnaHQnOiAnI2ZmZWJlNScsXG4gICAgICAnLS1zaGFkb3cnOiBgMHB4IDEycHggMzNweCAwcHggcmdiYSgwLCAwLCAwLCAuMDYpLFxuICAgICAgICAgICAgICAgMHB4IDMuNjE4cHggOS45NDlweCAwcHggcmdiYSgwLCAwLCAwLCAuMDQpYCxcbiAgICB9O1xuXG4gICAgT2JqZWN0LmVudHJpZXMoY3NzVmFyaWFibGVzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShrZXksIHZhbHVlKTtcbiAgICB9KTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IGVkaXRvclN0YXRlID0gdXNlRWRpdG9yU3RhdGUoe1xuICAgIGVkaXRvcixcbiAgICBzZWxlY3RvcjogKGN0eCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXNGb2N1c2VkOiBjdHguZWRpdG9yPy5pc0ZvY3VzZWQsXG4gICAgICB9O1xuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IHZhbHVlVG9TaXplID0gKHYpID0+IHtcbiAgICBpZiAoIXYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY2FsY1JlZ2V4ID0gL15jYWxjXFwoKC4qKVxcKSQvO1xuXG4gICAgaWYgKHR5cGVvZiB2ID09PSAnc3RyaW5nJykge1xuICAgICAgaWYgKHYuZW5kc1dpdGgoJyUnKSkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgdi5lbmRzV2l0aCgncHgnKSB8fFxuICAgICAgICB2LmVuZHNXaXRoKCd2aCcpIHx8XG4gICAgICAgIHYuZW5kc1dpdGgoJ3Z3JykgfHxcbiAgICAgICAgdi5lbmRzV2l0aCgnY2gnKSB8fFxuICAgICAgICB2LmVuZHNXaXRoKCdlbScpIHx8XG4gICAgICAgIHYubWF0Y2goY2FsY1JlZ2V4KVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBwYXJzZUludCh2LCAxMCk7XG4gICAgICAgIHJldHVybiBpc05hTih2YWx1ZSkgPyB2YWx1ZSA6IGAke3ZhbHVlfXB4YDtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2ID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIGAke3Z9cHhgO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBzaXplU3R5bGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IG1pbldpZHRoLCB3aWR0aCwgbWF4V2lkdGgsIG1pbkhlaWdodCwgaGVpZ2h0LCBtYXhIZWlnaHQgfSA9IHByb3BzO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHdpZHRoOiB2YWx1ZVRvU2l6ZSh3aWR0aCksXG4gICAgICBtaW5XaWR0aDogdmFsdWVUb1NpemUobWluV2lkdGgpLFxuICAgICAgbWF4V2lkdGg6IHZhbHVlVG9TaXplKG1heFdpZHRoKSxcbiAgICAgIGhlaWdodDogdmFsdWVUb1NpemUoaGVpZ2h0KSxcbiAgICAgIG1pbkhlaWdodDogdmFsdWVUb1NpemUobWluSGVpZ2h0KSxcbiAgICAgIG1heEhlaWdodDogdmFsdWVUb1NpemUobWF4SGVpZ2h0KSxcbiAgICB9O1xuICB9LCBbcHJvcHNdKTtcblxuICByZXR1cm4gKFxuICAgIDxFZGl0b3JDb250YWluZXJcbiAgICAgIHsuLi57IC4uLnByb3BzLCBhY3RpdmVQbHVnaW5zOiBhY3RpdmVQbHVnaW5zVG9Vc2UsIHRvb2xiYXJPcHRzOiB0b29sYmFyT3B0c1RvVXNlIH19XG4gICAgICBlZGl0b3JTdGF0ZT17ZWRpdG9yU3RhdGV9XG4gICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICA+XG4gICAgICB7ZWRpdG9yICYmIChcbiAgICAgICAgPEVkaXRvckNvbnRlbnRcbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgbWluSGVpZ2h0OiBzaXplU3R5bGUubWluSGVpZ2h0LFxuICAgICAgICAgICAgaGVpZ2h0OiBzaXplU3R5bGUuaGVpZ2h0LFxuICAgICAgICAgICAgbWF4SGVpZ2h0OiBzaXplU3R5bGUubWF4SGVpZ2h0LFxuICAgICAgICAgIH19XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnJvb3R9XG4gICAgICAgICAgZWRpdG9yPXtlZGl0b3J9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvRWRpdG9yQ29udGFpbmVyPlxuICApO1xufTtcblxuY29uc3QgU3R5bGVkRWRpdG9yID0gd2l0aFN0eWxlcyh7XG4gIHJvb3Q6IHtcbiAgICBvdXRsaW5lOiAnbm9uZSAhaW1wb3J0YW50JyxcbiAgICAnJiAuUHJvc2VNaXJyb3InOiB7XG4gICAgICBvdXRsaW5lOiAnbm9uZSAhaW1wb3J0YW50JyxcbiAgICAgIHBvc2l0aW9uOiAnaW5pdGlhbCcsXG4gICAgfSxcbiAgfSxcbn0pKEVkaXRhYmxlSHRtbCk7XG5cbmV4cG9ydCBkZWZhdWx0IFN0eWxlZEVkaXRvcjtcbiJdfQ==
|
|
32
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qc3giXSwibmFtZXMiOlsiU3R5bGVkRWRpdG9yIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7Ozs7O2VBR2VBLHdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFN0eWxlZEVkaXRvciwgeyBFZGl0YWJsZUh0bWwgfSBmcm9tICcuL2NvbXBvbmVudHMvRWRpdGFibGVIdG1sJztcbmltcG9ydCB7IEFMTF9QTFVHSU5TIH0gZnJvbSAnLi9leHRlbnNpb25zJztcblxuZXhwb3J0IHsgRWRpdGFibGVIdG1sLCBBTExfUExVR0lOUyB9O1xuZXhwb3J0IGRlZmF1bHQgU3R5bGVkRWRpdG9yO1xuIl19
|