single-scripture-rcl 3.4.10 → 3.4.11-beta.7
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.
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import "core-js/modules/es.array.concat.js";
|
|
2
|
-
import "core-js/modules/es.array.is-array.js";
|
|
3
2
|
import "core-js/modules/es.parse-float.js";
|
|
4
3
|
|
|
5
4
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
@@ -12,14 +11,16 @@ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArra
|
|
|
12
11
|
|
|
13
12
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
14
13
|
|
|
15
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
16
|
-
|
|
17
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
18
|
-
|
|
19
14
|
function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
20
15
|
|
|
21
16
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
22
17
|
|
|
18
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
19
|
+
|
|
20
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
21
|
+
|
|
22
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
23
|
+
|
|
23
24
|
import * as React from 'react';
|
|
24
25
|
import useDeepCompareEffect from 'use-deep-compare-effect';
|
|
25
26
|
import { VerseObjects } from 'scripture-resources-rcl';
|
|
@@ -27,7 +28,7 @@ import { UsfmFileConversionHelpers } from 'word-aligner-rcl';
|
|
|
27
28
|
import { ScriptureReference } from '../../types';
|
|
28
29
|
import { getResourceMessage, LOADING_RESOURCE } from '../../utils';
|
|
29
30
|
import { ScriptureALignmentEditProps, useScriptureAlignmentEdit } from '../../hooks/useScriptureAlignmentEdit';
|
|
30
|
-
import { Container, Content } from './styled';
|
|
31
|
+
import { Container, Content, EmptyContent } from './styled';
|
|
31
32
|
var MessageStyle = {
|
|
32
33
|
direction: 'ltr',
|
|
33
34
|
whiteSpace: 'pre-wrap',
|
|
@@ -47,6 +48,38 @@ var TextAreaStyle = {
|
|
|
47
48
|
minWidth: '220px',
|
|
48
49
|
fontSize: '16px'
|
|
49
50
|
};
|
|
51
|
+
/**
|
|
52
|
+
* determines if there are any words in verseObjects
|
|
53
|
+
* @param {object[]} verseObjects - array to search for words
|
|
54
|
+
* @return {boolean} true if word is found
|
|
55
|
+
*/
|
|
56
|
+
|
|
57
|
+
function hasWords(verseObjects) {
|
|
58
|
+
var _iterator = _createForOfIteratorHelper(verseObjects),
|
|
59
|
+
_step;
|
|
60
|
+
|
|
61
|
+
try {
|
|
62
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
63
|
+
var vo = _step.value;
|
|
64
|
+
|
|
65
|
+
if (vo.type === 'word') {
|
|
66
|
+
return true;
|
|
67
|
+
} else if (vo.children) {
|
|
68
|
+
var foundWords = hasWords(vo.children);
|
|
69
|
+
|
|
70
|
+
if (foundWords) {
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
} catch (err) {
|
|
76
|
+
_iterator.e(err);
|
|
77
|
+
} finally {
|
|
78
|
+
_iterator.f();
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
50
83
|
|
|
51
84
|
function ScripturePane(_ref) {
|
|
52
85
|
var _scriptureAlignmentEd3;
|
|
@@ -142,9 +175,9 @@ function ScripturePane(_ref) {
|
|
|
142
175
|
aligned = _scriptureAlignmentEd2.aligned,
|
|
143
176
|
alignerData = _scriptureAlignmentEd2.alignerData,
|
|
144
177
|
currentVerseObjects = _scriptureAlignmentEd2.currentVerseObjects,
|
|
145
|
-
initialVerseObjects = _scriptureAlignmentEd2.initialVerseObjects,
|
|
146
178
|
editing = _scriptureAlignmentEd2.editing,
|
|
147
|
-
|
|
179
|
+
enableEdit = _scriptureAlignmentEd2.enableEdit,
|
|
180
|
+
initialVerseObjects = _scriptureAlignmentEd2.initialVerseObjects,
|
|
148
181
|
newVerseText = _scriptureAlignmentEd2.newVerseText;
|
|
149
182
|
|
|
150
183
|
if (isVerseSelectedForAlignment && !alignerData && !doingAlignment) {
|
|
@@ -227,6 +260,41 @@ function ScripturePane(_ref) {
|
|
|
227
260
|
setEditing(false, newText);
|
|
228
261
|
}
|
|
229
262
|
|
|
263
|
+
var verseObjects = currentVerseObjects || initialVerseObjects;
|
|
264
|
+
var noWords = React.useMemo(function () {
|
|
265
|
+
return !hasWords(verseObjects);
|
|
266
|
+
}, [currentVerseObjects, initialVerseObjects]);
|
|
267
|
+
/**
|
|
268
|
+
* determine what to show based on variables
|
|
269
|
+
* @param {boolean} editing - if true show edit mode
|
|
270
|
+
* @param {boolean} enableEdit - if true then edit is enabled
|
|
271
|
+
* @param {boolean} noWords - if true then there are no displayable words
|
|
272
|
+
*/
|
|
273
|
+
|
|
274
|
+
function verseContent(editing, enableEdit, noWords) {
|
|
275
|
+
if (noWords && enableEdit) {
|
|
276
|
+
return /*#__PURE__*/React.createElement(EmptyContent, null, "Click to Edit");
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
if (editing) {
|
|
280
|
+
return /*#__PURE__*/React.createElement("textarea", {
|
|
281
|
+
defaultValue: newVerseText || initialVerseText,
|
|
282
|
+
onChange: onTextChange,
|
|
283
|
+
onBlur: onBlur,
|
|
284
|
+
style: textAreaStyle,
|
|
285
|
+
autoFocus: true
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
return /*#__PURE__*/React.createElement(VerseObjects, {
|
|
290
|
+
verseKey: "".concat(reference.chapter, ":").concat(reference.verse),
|
|
291
|
+
verseObjects: verseObjects,
|
|
292
|
+
disableWordPopover: disableWordPopover,
|
|
293
|
+
getLexiconData: getLexiconData,
|
|
294
|
+
translate: translate
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
|
|
230
298
|
return /*#__PURE__*/React.createElement(Container, {
|
|
231
299
|
style: {
|
|
232
300
|
direction: direction,
|
|
@@ -249,23 +317,11 @@ function ScripturePane(_ref) {
|
|
|
249
317
|
onClick: function onClick() {
|
|
250
318
|
setEditing && setEditing(true);
|
|
251
319
|
}
|
|
252
|
-
}, editing
|
|
253
|
-
defaultValue: newVerseText || initialVerseText,
|
|
254
|
-
onChange: onTextChange,
|
|
255
|
-
onBlur: onBlur,
|
|
256
|
-
style: textAreaStyle,
|
|
257
|
-
autoFocus: true
|
|
258
|
-
}) : /*#__PURE__*/React.createElement(VerseObjects, {
|
|
259
|
-
verseKey: "".concat(reference.chapter, ":").concat(reference.verse),
|
|
260
|
-
verseObjects: currentVerseObjects || initialVerseObjects,
|
|
261
|
-
disableWordPopover: disableWordPopover,
|
|
262
|
-
getLexiconData: getLexiconData,
|
|
263
|
-
translate: translate
|
|
264
|
-
}))));
|
|
320
|
+
}, verseContent(editing, enableEdit, noWords))));
|
|
265
321
|
}
|
|
266
322
|
|
|
267
323
|
ScripturePane.defaultProps = {
|
|
268
324
|
verseObjects: []
|
|
269
325
|
};
|
|
270
326
|
export default ScripturePane;
|
|
271
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZVBhbmUvU2NyaXB0dXJlUGFuZS50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJ1c2VEZWVwQ29tcGFyZUVmZmVjdCIsIlZlcnNlT2JqZWN0cyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJTY3JpcHR1cmVSZWZlcmVuY2UiLCJnZXRSZXNvdXJjZU1lc3NhZ2UiLCJMT0FESU5HX1JFU09VUkNFIiwiU2NyaXB0dXJlQUxpZ25tZW50RWRpdFByb3BzIiwidXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdCIsIkNvbnRhaW5lciIsIkNvbnRlbnQiLCJNZXNzYWdlU3R5bGUiLCJkaXJlY3Rpb24iLCJ3aGl0ZVNwYWNlIiwibGluZUhlaWdodCIsImRpc3BsYXkiLCJqdXN0aWZ5Q29udGVudCIsImFsaWduSXRlbXMiLCJoZWlnaHQiLCJ3aWR0aCIsImZvbnRTaXplIiwiZm9udEZhbWlseSIsImZvbnRXZWlnaHQiLCJUZXh0QXJlYVN0eWxlIiwibWluV2lkdGgiLCJTY3JpcHR1cmVQYW5lIiwiY3VycmVudEluZGV4IiwiY29udGVudFN0eWxlIiwiZGV0ZXJtaW5pbmdCcmFuY2giLCJkaXNhYmxlV29yZFBvcG92ZXIiLCJnZXRMZXhpY29uRGF0YSIsImlzTlQiLCJpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQiLCJvbkFsaWdubWVudEZpbmlzaCIsIm9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMiLCJyZWZlcmVuY2UiLCJyZWZTdHlsZSIsInJlc291cmNlU3RhdHVzIiwicmVzb3VyY2VMaW5rIiwic2F2aW5nIiwic2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsInNldFNhdmVkQ2hhbmdlcyIsInNldFdvcmRBbGlnbmVyU3RhdHVzIiwic2VydmVyIiwidHJhbnNsYXRlIiwidXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzIiwidXNlU3RhdGUiLCJkb2luZ0FsaWdubWVudCIsIm5ld1RleHQiLCJ1cmxFcnJvciIsInN0YXRlIiwic2V0U3RhdGVfIiwic2V0U3RhdGUiLCJuZXdTdGF0ZSIsInByZXZTdGF0ZSIsImluaXRpYWxWZXJzZVRleHQiLCJzZXRJbml0aWFsVmVyc2VUZXh0IiwicmVzb3VyY2VNZXNzYWdlIiwiY2hhcHRlciIsInByb2plY3RJZCIsInZlcnNlIiwiYmFzaWNSZWZlcmVuY2UiLCJfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsIl9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0IiwiYWN0aW9ucyIsImNsZWFyQ2hhbmdlcyIsImhhbmRsZUFsaWdubWVudENsaWNrIiwic2V0RWRpdGluZyIsInNldFZlcnNlQ2hhbmdlZCIsImFsaWduZWQiLCJhbGlnbmVyRGF0YSIsImN1cnJlbnRWZXJzZU9iamVjdHMiLCJpbml0aWFsVmVyc2VPYmplY3RzIiwiZWRpdGluZyIsInVuc2F2ZWRDaGFuZ2VzIiwibmV3VmVyc2VUZXh0IiwiY29uc29sZSIsImxvZyIsInVzZUVmZmVjdCIsImNhbGN1bGF0ZWRGb250U2l6ZSIsInVzZU1lbW8iLCJwYXJzZUZsb2F0IiwidGV4dEFyZWFTdHlsZSIsInZlcnNlVGV4dCIsImdldFVzZm1Gb3JWZXJzZUNvbnRlbnQiLCJ2ZXJzZU9iamVjdHMiLCJvblRleHRDaGFuZ2UiLCJldmVudCIsInRhcmdldCIsInZhbHVlIiwiY2hhbmdlZCIsIm9uQmx1ciIsInBhZGRpbmdCb3R0b20iLCJkZWZhdWx0UHJvcHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUtBLEtBQVosTUFBdUIsT0FBdkI7QUFDQSxPQUFPQyxvQkFBUCxNQUFpQyx5QkFBakM7QUFDQSxTQUFTQyxZQUFULFFBQTZCLHlCQUE3QjtBQUNBLFNBQVNDLHlCQUFULFFBQTBDLGtCQUExQztBQUNBLFNBQVNDLGtCQUFULFFBQW1DLGFBQW5DO0FBQ0EsU0FBU0Msa0JBQVQsRUFBNkJDLGdCQUE3QixRQUFxRCxhQUFyRDtBQUNBLFNBQVNDLDJCQUFULEVBQXNDQyx5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QUFBLEtBQUssRUFBRWpDLFlBQWI7QUFBMkIsSUFBQSxPQUFPLEVBQUUsbUJBQU07QUFDeEN3QyxNQUFBQSxVQUFVLElBQUlBLFVBQVUsQ0FBQyxJQUFELENBQXhCO0FBQ0Q7QUFGRCxLQUlHTSxPQUFPLGdCQUNOO0FBQ0UsSUFBQSxZQUFZLEVBQUVFLFlBQVksSUFBSXBCLGdCQURoQztBQUVFLElBQUEsUUFBUSxFQUFFK0IsWUFGWjtBQUdFLElBQUEsTUFBTSxFQUFFSyxNQUhWO0FBSUUsSUFBQSxLQUFLLEVBQUVULGFBSlQ7QUFLRSxJQUFBLFNBQVM7QUFMWCxJQURNLGdCQVNOLG9CQUFDLFlBQUQ7QUFDRSxJQUFBLFFBQVEsWUFBSy9DLFNBQVMsQ0FBQ3VCLE9BQWYsY0FBMEJ2QixTQUFTLENBQUN5QixLQUFwQyxDQURWO0FBRUUsSUFBQSxZQUFZLEVBQUVXLG1CQUFtQixJQUFJQyxtQkFGdkM7QUFHRSxJQUFBLGtCQUFrQixFQUFFM0Msa0JBSHRCO0FBSUUsSUFBQSxjQUFjLEVBQUVDLGNBSmxCO0FBS0UsSUFBQSxTQUFTLEVBQUVjO0FBTGIsSUFiSixDQUZGLENBUEosQ0FERjtBQW9DRDs7QUFFRG5CLGFBQWEsQ0FBQ29FLFlBQWQsR0FBNkI7QUFBRVIsRUFBQUEsWUFBWSxFQUFFO0FBQWhCLENBQTdCO0FBRUEsZUFBZTVELGFBQWYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB1c2VEZWVwQ29tcGFyZUVmZmVjdCBmcm9tICd1c2UtZGVlcC1jb21wYXJlLWVmZmVjdCdcbmltcG9ydCB7IFZlcnNlT2JqZWN0cyB9IGZyb20gJ3NjcmlwdHVyZS1yZXNvdXJjZXMtcmNsJ1xuaW1wb3J0IHsgVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycyB9IGZyb20gJ3dvcmQtYWxpZ25lci1yY2wnXG5pbXBvcnQgeyBTY3JpcHR1cmVSZWZlcmVuY2UgfSBmcm9tICcuLi8uLi90eXBlcydcbmltcG9ydCB7IGdldFJlc291cmNlTWVzc2FnZSwgTE9BRElOR19SRVNPVVJDRSB9IGZyb20gJy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgU2NyaXB0dXJlQUxpZ25tZW50RWRpdFByb3BzLCB1c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0IH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdCdcbmltcG9ydCB7IENvbnRhaW5lciwgQ29udGVudCB9IGZyb20gJy4vc3R5bGVkJ1xuXG5pbnRlcmZhY2UgUHJvcHMge1xuICAvKiogb3B0aW9uYWwgc3R5bGVzIHRvIHVzZSBmb3IgY29udGVudCAqKi9cbiAgY29udGVudFN0eWxlOiBhbnk7XG4gIC8vIGluZGV4IG51bWJlciBmb3IgdGhpcyBzY3JpcHR1cmUgcGFuZVxuICBjdXJyZW50SW5kZXg6IG51bWJlcixcbiAgLy8gd2FpdGluZyB0byBkZXRlcm1pbmUgYnJhbmNoXG4gIGRldGVybWluaW5nQnJhbmNoOiBib29sZWFuLFxuICAvKiogbGFuZ3VhZ2UgZGlyZWN0aW9uIHRvIHVzZSAqKi9cbiAgZGlyZWN0aW9uOiBzdHJpbmd8dW5kZWZpbmVkO1xuICAvKiogaWYgdHJ1ZSB0aGVuIGRvIG5vdCBkaXNwbGF5IGxleGljb24gcG9wb3ZlciBvbiBob3ZlciAqKi9cbiAgZGlzYWJsZVdvcmRQb3BvdmVyOiBib29sZWFufHVuZGVmaW5lZDtcbiAgLyoqIGZvbnQgc2l6ZSBmb3IgbWVzc2FnZXMgKi9cbiAgZm9udFNpemU6IG51bWJlcjtcbiAgLyoqIGZ1bmN0aW9uIHRvIGdldCBsYXRlc3QgbGV4aWNvbiBkYXRhICovXG4gIGdldExleGljb25EYXRhOiBGdW5jdGlvbjtcbiAgLyoqIHRydWUgaWYgYnJvd3NpbmcgTlQgKi9cbiAgaXNOVDogYm9vbGVhbjtcbiAgLyoqIHdoZXRoZXIgb3Igbm90IHRoaXMgY3VycmVudCB2ZXJzZSBoYXMgYmVlbiBzZWxlY3RlZCBmb3IgYWxpZ25tZW50ICovXG4gIGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogYm9vbGVhbjtcbiAgLyoqIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHZlcnNlIGFsaWdubWVudCBoYXMgZmluaXNoZWQgKi9cbiAgb25BbGlnbm1lbnRGaW5pc2g6IEZ1bmN0aW9uO1xuICAvLyBvcmlnaW5hbCBzY3JpcHR1cmUgYm9va09iamVjdHMgZm9yIGN1cnJlbnQgYm9va1xuICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzOiBvYmplY3QsXG4gIC8qKiBjdXJyZW50IHJlZmVyZW5jZSAqKi9cbiAgcmVmZXJlbmNlOiBTY3JpcHR1cmVSZWZlcmVuY2U7XG4gIC8qKiBvcHRpb25hbCBzdHlsZXMgdG8gdXNlIGZvciByZWZlcmVuY2UgKiovXG4gIHJlZlN0eWxlOiBhbnk7XG4gIC8qKiBvYmplY3QgdGhhdCBjb250YWlucyByZXNvdXJjZSBsb2FkaW5nIHN0YXR1cyBvciBmZXRjaGluZyBlcnJvcnMgKi9cbiAgcmVzb3VyY2VTdGF0dXM6IG9iamVjdHx1bmRlZmluZWQ7XG4gIC8qKiByZXNvdXJjZSB0aGF0IHdhcyBsb2FkZWQgKi9cbiAgcmVzb3VyY2VMaW5rOiBzdHJpbmd8dW5kZWZpbmVkO1xuICAvKiogdHJ1ZSBpZiBjdXJyZW50bHkgc2F2aW5nIHVwZGF0ZWQgdGV4dCBhbmQgYWxpZ25tZW50cyAqL1xuICBzYXZpbmc6IGJvb2xlYW47XG4gIC8vIGluaXRpYWxpemF0aW9uIGZvciB1c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0XG4gIHNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWc6IFNjcmlwdHVyZUFMaWdubWVudEVkaXRQcm9wcyxcbiAgLyoqIHNlcnZlciAqL1xuICBzZXJ2ZXI6IHN0cmluZ3x1bmRlZmluZWQ7XG4gIC8qKiBjYWxsYmFjayB0byBmbGFnIHVuc2F2ZWQgc3RhdHVzICovXG4gIHNldFNhdmVkQ2hhbmdlczogRnVuY3Rpb247XG4gIC8vIGNhbGxiYWNrIGZvciBjaGFuZ2UgaW4gd29yZCBhbGlnbm1lbnQgc3RhdHVzXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzOiBGdW5jdGlvbjtcbiAgLyoqIG9wdGlvbmFsIGZ1bmN0aW9uIGZvciBsb2NhbGl6YXRpb24gKi9cbiAgdHJhbnNsYXRlOiBGdW5jdGlvbjtcbiAgLyoqIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB0byB1cGRhdGUgdmVyc2UgYWxpZ25tZW50IHN0YXR1cyAqL1xuICB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXM6IEZ1bmN0aW9uO1xufVxuXG5jb25zdCBNZXNzYWdlU3R5bGUgPSB7XG4gIGRpcmVjdGlvbjogJ2x0cicsXG4gIHdoaXRlU3BhY2U6ICdwcmUtd3JhcCcsXG4gIGxpbmVIZWlnaHQ6ICdub3JtYWwnLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIGhlaWdodDogJzEwMCUnLFxuICB3aWR0aDogJzEwMCUnLFxuICBmb250U2l6ZTogJzE2cHgnLFxuICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgZm9udFdlaWdodDogJ2JvbGQnLFxufVxuXG5jb25zdCBUZXh0QXJlYVN0eWxlID0ge1xuICBoZWlnaHQ6ICc2MCUnLFxuICB3aWR0aDogJzEwMCUnLFxuICBtaW5XaWR0aDogJzIyMHB4JyxcbiAgZm9udFNpemU6ICcxNnB4Jyxcbn1cblxuZnVuY3Rpb24gU2NyaXB0dXJlUGFuZSh7XG4gIGN1cnJlbnRJbmRleCxcbiAgY29udGVudFN0eWxlLFxuICBkZXRlcm1pbmluZ0JyYW5jaCxcbiAgZGlyZWN0aW9uLFxuICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gIGZvbnRTaXplLFxuICBnZXRMZXhpY29uRGF0YSxcbiAgaXNOVCxcbiAgaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50LFxuICBvbkFsaWdubWVudEZpbmlzaCxcbiAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyxcbiAgcmVmZXJlbmNlLFxuICByZWZTdHlsZSxcbiAgcmVzb3VyY2VTdGF0dXMsXG4gIHJlc291cmNlTGluayxcbiAgc2F2aW5nLFxuICBzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnLFxuICBzZXRTYXZlZENoYW5nZXMsXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzLFxuICBzZXJ2ZXIsXG4gIHRyYW5zbGF0ZSxcbiAgdXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzLFxufSA6IFByb3BzKSB7XG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVfXSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICBkb2luZ0FsaWdubWVudDogZmFsc2UsXG4gICAgbmV3VGV4dDogbnVsbCxcbiAgICB1cmxFcnJvcjogbnVsbCxcbiAgfSlcbiAgY29uc3Qge1xuICAgIGRvaW5nQWxpZ25tZW50LFxuICAgIG5ld1RleHQsXG4gICAgdXJsRXJyb3IsXG4gIH0gPSBzdGF0ZVxuXG4gIGZ1bmN0aW9uIHNldFN0YXRlKG5ld1N0YXRlKSB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoeyAuLi5wcmV2U3RhdGUsIC4uLm5ld1N0YXRlIH0pKVxuICB9XG5cbiAgY29uc3QgW2luaXRpYWxWZXJzZVRleHQsIHNldEluaXRpYWxWZXJzZVRleHRdID0gUmVhY3QudXNlU3RhdGUobnVsbClcblxuICBsZXQgcmVzb3VyY2VNZXNzYWdlID0gJydcblxuICBpZiAoc2F2aW5nKSB7XG4gICAgcmVzb3VyY2VNZXNzYWdlID0gJ1NhdmluZyBDaGFuZ2VzLi4uJ1xuICB9IGVsc2UgaWYgKGRldGVybWluaW5nQnJhbmNoKSB7XG4gICAgcmVzb3VyY2VNZXNzYWdlID0gJ1ByZS0nICsgTE9BRElOR19SRVNPVVJDRVxuICB9IGVsc2Uge1xuICAgIHJlc291cmNlTWVzc2FnZSA9IGdldFJlc291cmNlTWVzc2FnZShyZXNvdXJjZVN0YXR1cywgc2VydmVyLCByZXNvdXJjZUxpbmssIGlzTlQpXG4gIH1cblxuICBjb25zdCB7XG4gICAgY2hhcHRlcixcbiAgICBwcm9qZWN0SWQsXG4gICAgdmVyc2UsXG4gIH0gPSByZWZlcmVuY2VcbiAgZGlyZWN0aW9uID0gZGlyZWN0aW9uIHx8ICdsdHInXG4gIGNvbnN0IGJhc2ljUmVmZXJlbmNlID0ge1xuICAgIGNoYXB0ZXIsXG4gICAgdmVyc2UsXG4gICAgcHJvamVjdElkLFxuICB9XG5cbiAgcmVmU3R5bGUgPSByZWZTdHlsZSB8fCB7XG4gICAgZm9udEZhbWlseTogJ05vdG8gU2FucycsXG4gICAgZm9udFNpemU6ICc5MCUnLFxuICB9XG5cbiAgY29udGVudFN0eWxlID0gY29udGVudFN0eWxlIHx8IHtcbiAgICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgICBmb250U2l6ZTogJzEwMCUnLFxuICB9XG5cbiAgY29uc3QgX3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcgPSB7XG4gICAgLi4uc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyxcbiAgICBpbml0aWFsVmVyc2VUZXh0LFxuICAgIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsXG4gIH1cblxuICBjb25zdCBfc2NyaXB0dXJlQWxpZ25tZW50RWRpdCA9IHVzZVNjcmlwdHVyZUFsaWdubWVudEVkaXQoX3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcpXG4gIGNvbnN0IHtcbiAgICBhY3Rpb25zOiB7XG4gICAgICBjbGVhckNoYW5nZXMsXG4gICAgICBoYW5kbGVBbGlnbm1lbnRDbGljayxcbiAgICAgIHNldEVkaXRpbmcsXG4gICAgICBzZXRWZXJzZUNoYW5nZWQsXG4gICAgfSxcbiAgICBzdGF0ZToge1xuICAgICAgYWxpZ25lZCxcbiAgICAgIGFsaWduZXJEYXRhLFxuICAgICAgY3VycmVudFZlcnNlT2JqZWN0cyxcbiAgICAgIGluaXRpYWxWZXJzZU9iamVjdHMsXG4gICAgICBlZGl0aW5nLFxuICAgICAgdW5zYXZlZENoYW5nZXMsXG4gICAgICBuZXdWZXJzZVRleHQsXG4gICAgfSxcbiAgfSA9IF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0XG5cbiAgaWYgKGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCAmJiAhYWxpZ25lckRhdGEgJiYgIWRvaW5nQWxpZ25tZW50KSB7XG4gICAgY29uc29sZS5sb2coYFNjcmlwdHVyZVBhbmUgLSB2ZXJzZSBzZWxlY3RlZCBmb3IgYWxpZ25tZW50YCwgYmFzaWNSZWZlcmVuY2UpXG4gICAgaGFuZGxlQWxpZ25tZW50Q2xpY2soKVxuICB9XG5cbiAgLy8gY29uc3QgdmVyc2VDaGFuZ2VkID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gIC8vICAgcmV0dXJuIChuZXdWZXJzZVRleHQgIT09IG5ld1RleHQpXG4gIC8vIH0sIFtuZXdWZXJzZVRleHQsIG5ld1RleHRdKVxuICAvL1xuICAvLyBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAvLyAgIGlmIChuZXdWZXJzZVRleHQgIT09IG5ld1RleHQpIHtcbiAgLy8gICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVQYW5lIC0gbmV3IHZlcnNlIHRleHQgZGl2ZXJnZWRgLCB7IG5ld1ZlcnNlVGV4dCwgbmV3VGV4dCB9KVxuICAvLyAgIH0gZWxzZSB7XG4gIC8vICAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlUGFuZSAtIG5ldyB2ZXJzZSB0ZXh0IGNvbnZlcmdlZGAsIHsgbmV3VmVyc2VUZXh0IH0pXG4gIC8vICAgfVxuICAvLyB9LCBbdmVyc2VDaGFuZ2VkXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIHVwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1cyAmJiB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMocmVmZXJlbmNlLCBhbGlnbmVkKVxuICB9LCBbYWxpZ25lZCwgY2hhcHRlciwgdmVyc2UsIHByb2plY3RJZF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYWxpZ25lckRhdGEgJiYgIWRvaW5nQWxpZ25tZW50KSB7XG4gICAgICBzZXRXb3JkQWxpZ25lclN0YXR1cyAmJiBzZXRXb3JkQWxpZ25lclN0YXR1cyhfc2NyaXB0dXJlQWxpZ25tZW50RWRpdClcbiAgICAgIHNldFN0YXRlKHsgZG9pbmdBbGlnbm1lbnQ6IHRydWUgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFkb2luZ0FsaWdubWVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlUGFuZSAtIGFsaWduZXJEYXRhIHdlbnQgZmFsc2UgdW5leHBlY3RlZGAsIHsgYmFzaWNSZWZlcmVuY2UsIGFsaWduZXJEYXRhLCBkb2luZ0FsaWdubWVudCB9KVxuICAgICAgfVxuXG4gICAgICBzZXRXb3JkQWxpZ25lclN0YXR1cyAmJiBzZXRXb3JkQWxpZ25lclN0YXR1cyhfc2NyaXB0dXJlQWxpZ25tZW50RWRpdClcbiAgICAgIHNldFN0YXRlKHsgZG9pbmdBbGlnbm1lbnQ6IGZhbHNlIH0pXG4gICAgICBvbkFsaWdubWVudEZpbmlzaCAmJiBvbkFsaWdubWVudEZpbmlzaCgpXG4gICAgfVxuICB9LCBbX3NjcmlwdHVyZUFsaWdubWVudEVkaXQ/LnN0YXRlPy5hbGlnbmVyRGF0YV0pXG5cbiAgLy8gZHluYW1pY2FsbHkgYWRqdXN0IGZvbnQgc2l6ZVxuICBjb25zdCBjYWxjdWxhdGVkRm9udFNpemUgPSBSZWFjdC51c2VNZW1vKCgpID0+IChcbiAgICBwYXJzZUZsb2F0KFRleHRBcmVhU3R5bGUuZm9udFNpemUpICogZm9udFNpemUgLyAxMDAgKyAncHgnXG4gICksIFtmb250U2l6ZV0pXG5cbiAgY29uc3QgdGV4dEFyZWFTdHlsZSA9IHtcbiAgICAuLi5jb250ZW50U3R5bGUsXG4gICAgLi4uVGV4dEFyZWFTdHlsZSxcbiAgICBmb250U2l6ZTogY2FsY3VsYXRlZEZvbnRTaXplLFxuICB9XG5cbiAgdXNlRGVlcENvbXBhcmVFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHZlcnNlVGV4dCA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuZ2V0VXNmbUZvclZlcnNlQ29udGVudCh7IHZlcnNlT2JqZWN0czogaW5pdGlhbFZlcnNlT2JqZWN0cyB9KVxuICAgIGNsZWFyQ2hhbmdlcygpXG4gICAgc2V0SW5pdGlhbFZlcnNlVGV4dCh2ZXJzZVRleHQpXG4gICAgc2V0U3RhdGUoeyBuZXdUZXh0OiBudWxsIH0pXG4gIH0sIFt7IGJhc2ljUmVmZXJlbmNlLCBpbml0aWFsVmVyc2VPYmplY3RzIH1dKVxuXG4gIGZ1bmN0aW9uIG9uVGV4dENoYW5nZShldmVudDogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTFRleHRBcmVhRWxlbWVudD4pIHtcbiAgICBjb25zdCBuZXdWZXJzZVRleHQgPSBldmVudD8udGFyZ2V0Py52YWx1ZVxuICAgIGNvbnN0IGNoYW5nZWQgPSBuZXdWZXJzZVRleHQgIT09IGluaXRpYWxWZXJzZVRleHRcbiAgICAvLyBjb25zb2xlLmxvZyhgU1Aub25UZXh0Q2hhbmdlYCwgeyBjaGFuZ2VkLCBuZXdUZXh0OiBuZXdWZXJzZVRleHQsIGluaXRpYWxWZXJzZVRleHQgfSlcbiAgICBzZXRWZXJzZUNoYW5nZWQoY2hhbmdlZCwgbmV3VmVyc2VUZXh0LCBpbml0aWFsVmVyc2VUZXh0KVxuICAgIHNldFN0YXRlKHsgbmV3VGV4dDogbmV3VmVyc2VUZXh0IH0pXG4gIH1cblxuICBmdW5jdGlvbiBvbkJsdXIoZXZlbnQ6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KSB7XG4gICAgc2V0RWRpdGluZyhmYWxzZSwgbmV3VGV4dClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lciBzdHlsZT17eyBkaXJlY3Rpb24sIHdpZHRoOiAnMTAwJScsIHBhZGRpbmdCb3R0b206ICcwLjVlbScgfX0+XG4gICAgICB7cmVzb3VyY2VNZXNzYWdlID9cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICA8ZGl2IHN0eWxlPXtNZXNzYWdlU3R5bGV9PlxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZm9udFNpemU6IGAke2ZvbnRTaXplfSVgIH19PiB7cmVzb3VyY2VNZXNzYWdlfSA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDpcbiAgICAgICAgPENvbnRlbnQ+XG4gICAgICAgICAgPHNwYW4gc3R5bGU9e3JlZlN0eWxlfT4ge2NoYXB0ZXJ9Ont2ZXJzZX0mbmJzcDs8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gc3R5bGU9e2NvbnRlbnRTdHlsZX0gb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgc2V0RWRpdGluZyAmJiBzZXRFZGl0aW5nKHRydWUpXG4gICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7ZWRpdGluZyA/XG4gICAgICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZT17bmV3VmVyc2VUZXh0IHx8IGluaXRpYWxWZXJzZVRleHR9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uVGV4dENoYW5nZX1cbiAgICAgICAgICAgICAgICBvbkJsdXI9e29uQmx1cn1cbiAgICAgICAgICAgICAgICBzdHlsZT17dGV4dEFyZWFTdHlsZX1cbiAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICA8VmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgICAgdmVyc2VLZXk9e2Ake3JlZmVyZW5jZS5jaGFwdGVyfToke3JlZmVyZW5jZS52ZXJzZX1gfVxuICAgICAgICAgICAgICAgIHZlcnNlT2JqZWN0cz17Y3VycmVudFZlcnNlT2JqZWN0cyB8fCBpbml0aWFsVmVyc2VPYmplY3RzfVxuICAgICAgICAgICAgICAgIGRpc2FibGVXb3JkUG9wb3Zlcj17ZGlzYWJsZVdvcmRQb3BvdmVyfVxuICAgICAgICAgICAgICAgIGdldExleGljb25EYXRhPXtnZXRMZXhpY29uRGF0YX1cbiAgICAgICAgICAgICAgICB0cmFuc2xhdGU9e3RyYW5zbGF0ZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvQ29udGVudD5cbiAgICAgIH1cbiAgICA8L0NvbnRhaW5lcj5cbiAgKVxufVxuXG5TY3JpcHR1cmVQYW5lLmRlZmF1bHRQcm9wcyA9IHsgdmVyc2VPYmplY3RzOiBbXSB9XG5cbmV4cG9ydCBkZWZhdWx0IFNjcmlwdHVyZVBhbmVcbiJdfQ==
|
|
327
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZVBhbmUvU2NyaXB0dXJlUGFuZS50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJ1c2VEZWVwQ29tcGFyZUVmZmVjdCIsIlZlcnNlT2JqZWN0cyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJTY3JpcHR1cmVSZWZlcmVuY2UiLCJnZXRSZXNvdXJjZU1lc3NhZ2UiLCJMT0FESU5HX1JFU09VUkNFIiwiU2NyaXB0dXJlQUxpZ25tZW50RWRpdFByb3BzIiwidXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdCIsIkNvbnRhaW5lciIsIkNvbnRlbnQiLCJFbXB0eUNvbnRlbnQiLCJNZXNzYWdlU3R5bGUiLCJkaXJlY3Rpb24iLCJ3aGl0ZVNwYWNlIiwibGluZUhlaWdodCIsImRpc3BsYXkiLCJqdXN0aWZ5Q29udGVudCIsImFsaWduSXRlbXMiLCJoZWlnaHQiLCJ3aWR0aCIsImZvbnRTaXplIiwiZm9udEZhbWlseSIsImZvbnRXZWlnaHQiLCJUZXh0QXJlYVN0eWxlIiwibWluV2lkdGgiLCJoYXNXb3JkcyIsInZlcnNlT2JqZWN0cyIsInZvIiwidHlwZSIsImNoaWxkcmVuIiwiZm91bmRXb3JkcyIsIlNjcmlwdHVyZVBhbmUiLCJjdXJyZW50SW5kZXgiLCJjb250ZW50U3R5bGUiLCJkZXRlcm1pbmluZ0JyYW5jaCIsImRpc2FibGVXb3JkUG9wb3ZlciIsImdldExleGljb25EYXRhIiwiaXNOVCIsImlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCIsIm9uQWxpZ25tZW50RmluaXNoIiwib3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyIsInJlZmVyZW5jZSIsInJlZlN0eWxlIiwicmVzb3VyY2VTdGF0dXMiLCJyZXNvdXJjZUxpbmsiLCJzYXZpbmciLCJzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnIiwic2V0U2F2ZWRDaGFuZ2VzIiwic2V0V29yZEFsaWduZXJTdGF0dXMiLCJzZXJ2ZXIiLCJ0cmFuc2xhdGUiLCJ1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMiLCJ1c2VTdGF0ZSIsImRvaW5nQWxpZ25tZW50IiwibmV3VGV4dCIsInVybEVycm9yIiwic3RhdGUiLCJzZXRTdGF0ZV8iLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwicHJldlN0YXRlIiwiaW5pdGlhbFZlcnNlVGV4dCIsInNldEluaXRpYWxWZXJzZVRleHQiLCJyZXNvdXJjZU1lc3NhZ2UiLCJjaGFwdGVyIiwicHJvamVjdElkIiwidmVyc2UiLCJiYXNpY1JlZmVyZW5jZSIsIl9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnIiwiX3NjcmlwdHVyZUFsaWdubWVudEVkaXQiLCJhY3Rpb25zIiwiY2xlYXJDaGFuZ2VzIiwiaGFuZGxlQWxpZ25tZW50Q2xpY2siLCJzZXRFZGl0aW5nIiwic2V0VmVyc2VDaGFuZ2VkIiwiYWxpZ25lZCIsImFsaWduZXJEYXRhIiwiY3VycmVudFZlcnNlT2JqZWN0cyIsImVkaXRpbmciLCJlbmFibGVFZGl0IiwiaW5pdGlhbFZlcnNlT2JqZWN0cyIsIm5ld1ZlcnNlVGV4dCIsImNvbnNvbGUiLCJsb2ciLCJ1c2VFZmZlY3QiLCJjYWxjdWxhdGVkRm9udFNpemUiLCJ1c2VNZW1vIiwicGFyc2VGbG9hdCIsInRleHRBcmVhU3R5bGUiLCJ2ZXJzZVRleHQiLCJnZXRVc2ZtRm9yVmVyc2VDb250ZW50Iiwib25UZXh0Q2hhbmdlIiwiZXZlbnQiLCJ0YXJnZXQiLCJ2YWx1ZSIsImNoYW5nZWQiLCJvbkJsdXIiLCJub1dvcmRzIiwidmVyc2VDb250ZW50IiwicGFkZGluZ0JvdHRvbSIsImRlZmF1bHRQcm9wcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUtBLEtBQVosTUFBdUIsT0FBdkI7QUFDQSxPQUFPQyxvQkFBUCxNQUFpQyx5QkFBakM7QUFDQSxTQUFTQyxZQUFULFFBQTZCLHlCQUE3QjtBQUNBLFNBQVNDLHlCQUFULFFBQTBDLGtCQUExQztBQUNBLFNBQVNDLGtC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QUFBQSxTQUFTLEVBQVRBLFNBQUY7QUFBYU8sTUFBQUEsS0FBSyxFQUFFLE1BQXBCO0FBQTRCZ0YsTUFBQUEsYUFBYSxFQUFFO0FBQTNDO0FBQWxCLEtBQ0dwQyxlQUFlO0FBQUE7QUFDZDtBQUNBO0FBQUssSUFBQSxLQUFLLEVBQUVwRDtBQUFaLGtCQUNFO0FBQUssSUFBQSxLQUFLLEVBQUU7QUFBRVMsTUFBQUEsUUFBUSxZQUFLQSxRQUFMO0FBQVY7QUFBWixVQUE0QzJDLGVBQTVDLE1BREYsQ0FGYyxnQkFNZCxvQkFBQyxPQUFELHFCQUNFO0FBQU0sSUFBQSxLQUFLLEVBQUVyQjtBQUFiLFVBQXlCc0IsT0FBekIsT0FBbUNFLEtBQW5DLFNBREYsZUFFRTtBQUFNLElBQUEsS0FBSyxFQUFFakMsWUFBYjtBQUEyQixJQUFBLE9BQU8sRUFBRSxtQkFBTTtBQUN4Q3dDLE1BQUFBLFVBQVUsSUFBSUEsVUFBVSxDQUFDLElBQUQsQ0FBeEI7QUFDRDtBQUZELEtBSUd5QixZQUFZLENBQUNwQixPQUFELEVBQVVDLFVBQVYsRUFBc0JrQixPQUF0QixDQUpmLENBRkYsQ0FQSixDQURGO0FBcUJEOztBQUVEbEUsYUFBYSxDQUFDcUUsWUFBZCxHQUE2QjtBQUFFMUUsRUFBQUEsWUFBWSxFQUFFO0FBQWhCLENBQTdCO0FBRUEsZUFBZUssYUFBZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHVzZURlZXBDb21wYXJlRWZmZWN0IGZyb20gJ3VzZS1kZWVwLWNvbXBhcmUtZWZmZWN0J1xuaW1wb3J0IHsgVmVyc2VPYmplY3RzIH0gZnJvbSAnc2NyaXB0dXJlLXJlc291cmNlcy1yY2wnXG5pbXBvcnQgeyBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIH0gZnJvbSAnd29yZC1hbGlnbmVyLXJjbCdcbmltcG9ydCB7IFNjcmlwdHVyZVJlZmVyZW5jZSB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuaW1wb3J0IHsgZ2V0UmVzb3VyY2VNZXNzYWdlLCBMT0FESU5HX1JFU09VUkNFIH0gZnJvbSAnLi4vLi4vdXRpbHMnXG5pbXBvcnQgeyBTY3JpcHR1cmVBTGlnbm1lbnRFZGl0UHJvcHMsIHVzZVNjcmlwdHVyZUFsaWdubWVudEVkaXQgfSBmcm9tICcuLi8uLi9ob29rcy91c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0J1xuaW1wb3J0IHtcbiAgQ29udGFpbmVyLFxuICBDb250ZW50LFxuICBFbXB0eUNvbnRlbnQsXG59IGZyb20gJy4vc3R5bGVkJ1xuXG5pbnRlcmZhY2UgUHJvcHMge1xuICAvKiogb3B0aW9uYWwgc3R5bGVzIHRvIHVzZSBmb3IgY29udGVudCAqKi9cbiAgY29udGVudFN0eWxlOiBhbnk7XG4gIC8vIGluZGV4IG51bWJlciBmb3IgdGhpcyBzY3JpcHR1cmUgcGFuZVxuICBjdXJyZW50SW5kZXg6IG51bWJlcixcbiAgLy8gd2FpdGluZyB0byBkZXRlcm1pbmUgYnJhbmNoXG4gIGRldGVybWluaW5nQnJhbmNoOiBib29sZWFuLFxuICAvKiogbGFuZ3VhZ2UgZGlyZWN0aW9uIHRvIHVzZSAqKi9cbiAgZGlyZWN0aW9uOiBzdHJpbmd8dW5kZWZpbmVkO1xuICAvKiogaWYgdHJ1ZSB0aGVuIGRvIG5vdCBkaXNwbGF5IGxleGljb24gcG9wb3ZlciBvbiBob3ZlciAqKi9cbiAgZGlzYWJsZVdvcmRQb3BvdmVyOiBib29sZWFufHVuZGVmaW5lZDtcbiAgLyoqIGZvbnQgc2l6ZSBmb3IgbWVzc2FnZXMgKi9cbiAgZm9udFNpemU6IG51bWJlcjtcbiAgLyoqIGZ1bmN0aW9uIHRvIGdldCBsYXRlc3QgbGV4aWNvbiBkYXRhICovXG4gIGdldExleGljb25EYXRhOiBGdW5jdGlvbjtcbiAgLyoqIHRydWUgaWYgYnJvd3NpbmcgTlQgKi9cbiAgaXNOVDogYm9vbGVhbjtcbiAgLyoqIHdoZXRoZXIgb3Igbm90IHRoaXMgY3VycmVudCB2ZXJzZSBoYXMgYmVlbiBzZWxlY3RlZCBmb3IgYWxpZ25tZW50ICovXG4gIGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogYm9vbGVhbjtcbiAgLyoqIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHZlcnNlIGFsaWdubWVudCBoYXMgZmluaXNoZWQgKi9cbiAgb25BbGlnbm1lbnRGaW5pc2g6IEZ1bmN0aW9uO1xuICAvLyBvcmlnaW5hbCBzY3JpcHR1cmUgYm9va09iamVjdHMgZm9yIGN1cnJlbnQgYm9va1xuICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzOiBvYmplY3QsXG4gIC8qKiBjdXJyZW50IHJlZmVyZW5jZSAqKi9cbiAgcmVmZXJlbmNlOiBTY3JpcHR1cmVSZWZlcmVuY2U7XG4gIC8qKiBvcHRpb25hbCBzdHlsZXMgdG8gdXNlIGZvciByZWZlcmVuY2UgKiovXG4gIHJlZlN0eWxlOiBhbnk7XG4gIC8qKiBvYmplY3QgdGhhdCBjb250YWlucyByZXNvdXJjZSBsb2FkaW5nIHN0YXR1cyBvciBmZXRjaGluZyBlcnJvcnMgKi9cbiAgcmVzb3VyY2VTdGF0dXM6IG9iamVjdHx1bmRlZmluZWQ7XG4gIC8qKiByZXNvdXJjZSB0aGF0IHdhcyBsb2FkZWQgKi9cbiAgcmVzb3VyY2VMaW5rOiBzdHJpbmd8dW5kZWZpbmVkO1xuICAvKiogdHJ1ZSBpZiBjdXJyZW50bHkgc2F2aW5nIHVwZGF0ZWQgdGV4dCBhbmQgYWxpZ25tZW50cyAqL1xuICBzYXZpbmc6IGJvb2xlYW47XG4gIC8vIGluaXRpYWxpemF0aW9uIGZvciB1c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0XG4gIHNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWc6IFNjcmlwdHVyZUFMaWdubWVudEVkaXRQcm9wcyxcbiAgLyoqIHNlcnZlciAqL1xuICBzZXJ2ZXI6IHN0cmluZ3x1bmRlZmluZWQ7XG4gIC8qKiBjYWxsYmFjayB0byBmbGFnIHVuc2F2ZWQgc3RhdHVzICovXG4gIHNldFNhdmVkQ2hhbmdlczogRnVuY3Rpb247XG4gIC8vIGNhbGxiYWNrIGZvciBjaGFuZ2UgaW4gd29yZCBhbGlnbm1lbnQgc3RhdHVzXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzOiBGdW5jdGlvbjtcbiAgLyoqIG9wdGlvbmFsIGZ1bmN0aW9uIGZvciBsb2NhbGl6YXRpb24gKi9cbiAgdHJhbnNsYXRlOiBGdW5jdGlvbjtcbiAgLyoqIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB0byB1cGRhdGUgdmVyc2UgYWxpZ25tZW50IHN0YXR1cyAqL1xuICB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXM6IEZ1bmN0aW9uO1xufVxuXG5jb25zdCBNZXNzYWdlU3R5bGUgPSB7XG4gIGRpcmVjdGlvbjogJ2x0cicsXG4gIHdoaXRlU3BhY2U6ICdwcmUtd3JhcCcsXG4gIGxpbmVIZWlnaHQ6ICdub3JtYWwnLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIGhlaWdodDogJzEwMCUnLFxuICB3aWR0aDogJzEwMCUnLFxuICBmb250U2l6ZTogJzE2cHgnLFxuICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgZm9udFdlaWdodDogJ2JvbGQnLFxufVxuXG5jb25zdCBUZXh0QXJlYVN0eWxlID0ge1xuICBoZWlnaHQ6ICc2MCUnLFxuICB3aWR0aDogJzEwMCUnLFxuICBtaW5XaWR0aDogJzIyMHB4JyxcbiAgZm9udFNpemU6ICcxNnB4Jyxcbn1cblxuLyoqXG4gKiBkZXRlcm1pbmVzIGlmIHRoZXJlIGFyZSBhbnkgd29yZHMgaW4gdmVyc2VPYmplY3RzXG4gKiBAcGFyYW0ge29iamVjdFtdfSB2ZXJzZU9iamVjdHMgLSBhcnJheSB0byBzZWFyY2ggZm9yIHdvcmRzXG4gKiBAcmV0dXJuIHtib29sZWFufSB0cnVlIGlmIHdvcmQgaXMgZm91bmRcbiAqL1xuZnVuY3Rpb24gaGFzV29yZHModmVyc2VPYmplY3RzOm9iamVjdFtdKSB7XG4gIGZvciAoY29uc3Qgdm8gb2YgdmVyc2VPYmplY3RzKSB7XG4gICAgaWYgKHZvLnR5cGUgPT09ICd3b3JkJykge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9IGVsc2UgaWYgKHZvLmNoaWxkcmVuKSB7XG4gICAgICBjb25zdCBmb3VuZFdvcmRzID0gaGFzV29yZHModm8uY2hpbGRyZW4pXG5cbiAgICAgIGlmIChmb3VuZFdvcmRzKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuXG5mdW5jdGlvbiBTY3JpcHR1cmVQYW5lKHtcbiAgY3VycmVudEluZGV4LFxuICBjb250ZW50U3R5bGUsXG4gIGRldGVybWluaW5nQnJhbmNoLFxuICBkaXJlY3Rpb24sXG4gIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgZm9udFNpemUsXG4gIGdldExleGljb25EYXRhLFxuICBpc05ULFxuICBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQsXG4gIG9uQWxpZ25tZW50RmluaXNoLFxuICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLFxuICByZWZlcmVuY2UsXG4gIHJlZlN0eWxlLFxuICByZXNvdXJjZVN0YXR1cyxcbiAgcmVzb3VyY2VMaW5rLFxuICBzYXZpbmcsXG4gIHNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcsXG4gIHNldFNhdmVkQ2hhbmdlcyxcbiAgc2V0V29yZEFsaWduZXJTdGF0dXMsXG4gIHNlcnZlcixcbiAgdHJhbnNsYXRlLFxuICB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMsXG59IDogUHJvcHMpIHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV9dID0gUmVhY3QudXNlU3RhdGUoe1xuICAgIGRvaW5nQWxpZ25tZW50OiBmYWxzZSxcbiAgICBuZXdUZXh0OiBudWxsLFxuICAgIHVybEVycm9yOiBudWxsLFxuICB9KVxuICBjb25zdCB7XG4gICAgZG9pbmdBbGlnbm1lbnQsXG4gICAgbmV3VGV4dCxcbiAgICB1cmxFcnJvcixcbiAgfSA9IHN0YXRlXG5cbiAgZnVuY3Rpb24gc2V0U3RhdGUobmV3U3RhdGUpIHtcbiAgICBzZXRTdGF0ZV8ocHJldlN0YXRlID0+ICh7IC4uLnByZXZTdGF0ZSwgLi4ubmV3U3RhdGUgfSkpXG4gIH1cblxuICBjb25zdCBbaW5pdGlhbFZlcnNlVGV4dCwgc2V0SW5pdGlhbFZlcnNlVGV4dF0gPSBSZWFjdC51c2VTdGF0ZShudWxsKVxuXG4gIGxldCByZXNvdXJjZU1lc3NhZ2UgPSAnJ1xuXG4gIGlmIChzYXZpbmcpIHtcbiAgICByZXNvdXJjZU1lc3NhZ2UgPSAnU2F2aW5nIENoYW5nZXMuLi4nXG4gIH0gZWxzZSBpZiAoZGV0ZXJtaW5pbmdCcmFuY2gpIHtcbiAgICByZXNvdXJjZU1lc3NhZ2UgPSAnUHJlLScgKyBMT0FESU5HX1JFU09VUkNFXG4gIH0gZWxzZSB7XG4gICAgcmVzb3VyY2VNZXNzYWdlID0gZ2V0UmVzb3VyY2VNZXNzYWdlKHJlc291cmNlU3RhdHVzLCBzZXJ2ZXIsIHJlc291cmNlTGluaywgaXNOVClcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBjaGFwdGVyLFxuICAgIHByb2plY3RJZCxcbiAgICB2ZXJzZSxcbiAgfSA9IHJlZmVyZW5jZVxuICBkaXJlY3Rpb24gPSBkaXJlY3Rpb24gfHwgJ2x0cidcbiAgY29uc3QgYmFzaWNSZWZlcmVuY2UgPSB7XG4gICAgY2hhcHRlcixcbiAgICB2ZXJzZSxcbiAgICBwcm9qZWN0SWQsXG4gIH1cblxuICByZWZTdHlsZSA9IHJlZlN0eWxlIHx8IHtcbiAgICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgICBmb250U2l6ZTogJzkwJScsXG4gIH1cblxuICBjb250ZW50U3R5bGUgPSBjb250ZW50U3R5bGUgfHwge1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiAnMTAwJScsXG4gIH1cblxuICBjb25zdCBfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyA9IHtcbiAgICAuLi5zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnLFxuICAgIGluaXRpYWxWZXJzZVRleHQsXG4gICAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyxcbiAgfVxuXG4gIGNvbnN0IF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0ID0gdXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdChfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZylcbiAgY29uc3Qge1xuICAgIGFjdGlvbnM6IHtcbiAgICAgIGNsZWFyQ2hhbmdlcyxcbiAgICAgIGhhbmRsZUFsaWdubWVudENsaWNrLFxuICAgICAgc2V0RWRpdGluZyxcbiAgICAgIHNldFZlcnNlQ2hhbmdlZCxcbiAgICB9LFxuICAgIHN0YXRlOiB7XG4gICAgICBhbGlnbmVkLFxuICAgICAgYWxpZ25lckRhdGEsXG4gICAgICBjdXJyZW50VmVyc2VPYmplY3RzLFxuICAgICAgZWRpdGluZyxcbiAgICAgIGVuYWJsZUVkaXQsXG4gICAgICBpbml0aWFsVmVyc2VPYmplY3RzLFxuICAgICAgbmV3VmVyc2VUZXh0LFxuICAgIH0sXG4gIH0gPSBfc2NyaXB0dXJlQWxpZ25tZW50RWRpdFxuXG4gIGlmIChpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQgJiYgIWFsaWduZXJEYXRhICYmICFkb2luZ0FsaWdubWVudCkge1xuICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVQYW5lIC0gdmVyc2Ugc2VsZWN0ZWQgZm9yIGFsaWdubWVudGAsIGJhc2ljUmVmZXJlbmNlKVxuICAgIGhhbmRsZUFsaWdubWVudENsaWNrKClcbiAgfVxuXG4gIC8vIGNvbnN0IHZlcnNlQ2hhbmdlZCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAvLyAgIHJldHVybiAobmV3VmVyc2VUZXh0ICE9PSBuZXdUZXh0KVxuICAvLyB9LCBbbmV3VmVyc2VUZXh0LCBuZXdUZXh0XSlcbiAgLy9cbiAgLy8gUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgLy8gICBpZiAobmV3VmVyc2VUZXh0ICE9PSBuZXdUZXh0KSB7XG4gIC8vICAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlUGFuZSAtIG5ldyB2ZXJzZSB0ZXh0IGRpdmVyZ2VkYCwgeyBuZXdWZXJzZVRleHQsIG5ld1RleHQgfSlcbiAgLy8gICB9IGVsc2Uge1xuICAvLyAgICAgY29uc29sZS5sb2coYFNjcmlwdHVyZVBhbmUgLSBuZXcgdmVyc2UgdGV4dCBjb252ZXJnZWRgLCB7IG5ld1ZlcnNlVGV4dCB9KVxuICAvLyAgIH1cbiAgLy8gfSwgW3ZlcnNlQ2hhbmdlZF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMgJiYgdXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzKHJlZmVyZW5jZSwgYWxpZ25lZClcbiAgfSwgW2FsaWduZWQsIGNoYXB0ZXIsIHZlcnNlLCBwcm9qZWN0SWRdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGFsaWduZXJEYXRhICYmICFkb2luZ0FsaWdubWVudCkge1xuICAgICAgc2V0V29yZEFsaWduZXJTdGF0dXMgJiYgc2V0V29yZEFsaWduZXJTdGF0dXMoX3NjcmlwdHVyZUFsaWdubWVudEVkaXQpXG4gICAgICBzZXRTdGF0ZSh7IGRvaW5nQWxpZ25tZW50OiB0cnVlIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghZG9pbmdBbGlnbm1lbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFNjcmlwdHVyZVBhbmUgLSBhbGlnbmVyRGF0YSB3ZW50IGZhbHNlIHVuZXhwZWN0ZWRgLCB7IGJhc2ljUmVmZXJlbmNlLCBhbGlnbmVyRGF0YSwgZG9pbmdBbGlnbm1lbnQgfSlcbiAgICAgIH1cblxuICAgICAgc2V0V29yZEFsaWduZXJTdGF0dXMgJiYgc2V0V29yZEFsaWduZXJTdGF0dXMoX3NjcmlwdHVyZUFsaWdubWVudEVkaXQpXG4gICAgICBzZXRTdGF0ZSh7IGRvaW5nQWxpZ25tZW50OiBmYWxzZSB9KVxuICAgICAgb25BbGlnbm1lbnRGaW5pc2ggJiYgb25BbGlnbm1lbnRGaW5pc2goKVxuICAgIH1cbiAgfSwgW19zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Py5zdGF0ZT8uYWxpZ25lckRhdGFdKVxuXG4gIC8vIGR5bmFtaWNhbGx5IGFkanVzdCBmb250IHNpemVcbiAgY29uc3QgY2FsY3VsYXRlZEZvbnRTaXplID0gUmVhY3QudXNlTWVtbygoKSA9PiAoXG4gICAgcGFyc2VGbG9hdChUZXh0QXJlYVN0eWxlLmZvbnRTaXplKSAqIGZvbnRTaXplIC8gMTAwICsgJ3B4J1xuICApLCBbZm9udFNpemVdKVxuXG4gIGNvbnN0IHRleHRBcmVhU3R5bGUgPSB7XG4gICAgLi4uY29udGVudFN0eWxlLFxuICAgIC4uLlRleHRBcmVhU3R5bGUsXG4gICAgZm9udFNpemU6IGNhbGN1bGF0ZWRGb250U2l6ZSxcbiAgfVxuXG4gIHVzZURlZXBDb21wYXJlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCB2ZXJzZVRleHQgPSBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLmdldFVzZm1Gb3JWZXJzZUNvbnRlbnQoeyB2ZXJzZU9iamVjdHM6IGluaXRpYWxWZXJzZU9iamVjdHMgfSlcbiAgICBjbGVhckNoYW5nZXMoKVxuICAgIHNldEluaXRpYWxWZXJzZVRleHQodmVyc2VUZXh0KVxuICAgIHNldFN0YXRlKHsgbmV3VGV4dDogbnVsbCB9KVxuICB9LCBbeyBiYXNpY1JlZmVyZW5jZSwgaW5pdGlhbFZlcnNlT2JqZWN0cyB9XSlcblxuICBmdW5jdGlvbiBvblRleHRDaGFuZ2UoZXZlbnQ6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KSB7XG4gICAgY29uc3QgbmV3VmVyc2VUZXh0ID0gZXZlbnQ/LnRhcmdldD8udmFsdWVcbiAgICBjb25zdCBjaGFuZ2VkID0gbmV3VmVyc2VUZXh0ICE9PSBpbml0aWFsVmVyc2VUZXh0XG4gICAgLy8gY29uc29sZS5sb2coYFNQLm9uVGV4dENoYW5nZWAsIHsgY2hhbmdlZCwgbmV3VGV4dDogbmV3VmVyc2VUZXh0LCBpbml0aWFsVmVyc2VUZXh0IH0pXG4gICAgc2V0VmVyc2VDaGFuZ2VkKGNoYW5nZWQsIG5ld1ZlcnNlVGV4dCwgaW5pdGlhbFZlcnNlVGV4dClcbiAgICBzZXRTdGF0ZSh7IG5ld1RleHQ6IG5ld1ZlcnNlVGV4dCB9KVxuICB9XG5cbiAgZnVuY3Rpb24gb25CbHVyKGV2ZW50OiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MVGV4dEFyZWFFbGVtZW50Pikge1xuICAgIHNldEVkaXRpbmcoZmFsc2UsIG5ld1RleHQpXG4gIH1cblxuICBjb25zdCB2ZXJzZU9iamVjdHMgPSBjdXJyZW50VmVyc2VPYmplY3RzIHx8IGluaXRpYWxWZXJzZU9iamVjdHNcbiAgY29uc3Qgbm9Xb3JkcyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gIWhhc1dvcmRzKHZlcnNlT2JqZWN0cyksIFtjdXJyZW50VmVyc2VPYmplY3RzLCBpbml0aWFsVmVyc2VPYmplY3RzXSlcblxuICAvKipcbiAgICogZGV0ZXJtaW5lIHdoYXQgdG8gc2hvdyBiYXNlZCBvbiB2YXJpYWJsZXNcbiAgICogQHBhcmFtIHtib29sZWFufSBlZGl0aW5nIC0gaWYgdHJ1ZSBzaG93IGVkaXQgbW9kZVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVuYWJsZUVkaXQgLSBpZiB0cnVlIHRoZW4gZWRpdCBpcyBlbmFibGVkXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gbm9Xb3JkcyAtIGlmIHRydWUgdGhlbiB0aGVyZSBhcmUgbm8gZGlzcGxheWFibGUgd29yZHNcbiAgICovXG4gIGZ1bmN0aW9uIHZlcnNlQ29udGVudChlZGl0aW5nLCBlbmFibGVFZGl0LCBub1dvcmRzKSB7XG4gICAgaWYgKG5vV29yZHMgJiYgZW5hYmxlRWRpdCkge1xuICAgICAgcmV0dXJuIDxFbXB0eUNvbnRlbnQ+XG4gICAgICAgIENsaWNrIHRvIEVkaXRcbiAgICAgIDwvRW1wdHlDb250ZW50PlxuICAgIH1cblxuICAgIGlmIChlZGl0aW5nKSB7XG4gICAgICByZXR1cm4gPHRleHRhcmVhXG4gICAgICAgIGRlZmF1bHRWYWx1ZT17bmV3VmVyc2VUZXh0IHx8IGluaXRpYWxWZXJzZVRleHR9XG4gICAgICAgIG9uQ2hhbmdlPXtvblRleHRDaGFuZ2V9XG4gICAgICAgIG9uQmx1cj17b25CbHVyfVxuICAgICAgICBzdHlsZT17dGV4dEFyZWFTdHlsZX1cbiAgICAgICAgYXV0b0ZvY3VzXG4gICAgICAvPlxuICAgIH1cblxuICAgIHJldHVybiA8VmVyc2VPYmplY3RzXG4gICAgICB2ZXJzZUtleT17YCR7cmVmZXJlbmNlLmNoYXB0ZXJ9OiR7cmVmZXJlbmNlLnZlcnNlfWB9XG4gICAgICB2ZXJzZU9iamVjdHM9e3ZlcnNlT2JqZWN0c31cbiAgICAgIGRpc2FibGVXb3JkUG9wb3Zlcj17ZGlzYWJsZVdvcmRQb3BvdmVyfVxuICAgICAgZ2V0TGV4aWNvbkRhdGE9e2dldExleGljb25EYXRhfVxuICAgICAgdHJhbnNsYXRlPXt0cmFuc2xhdGV9XG4gICAgLz5cbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lciBzdHlsZT17eyBkaXJlY3Rpb24sIHdpZHRoOiAnMTAwJScsIHBhZGRpbmdCb3R0b206ICcwLjVlbScgfX0+XG4gICAgICB7cmVzb3VyY2VNZXNzYWdlID9cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICA8ZGl2IHN0eWxlPXtNZXNzYWdlU3R5bGV9PlxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZm9udFNpemU6IGAke2ZvbnRTaXplfSVgIH19PiB7cmVzb3VyY2VNZXNzYWdlfSA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDpcbiAgICAgICAgPENvbnRlbnQ+XG4gICAgICAgICAgPHNwYW4gc3R5bGU9e3JlZlN0eWxlfT4ge2NoYXB0ZXJ9Ont2ZXJzZX0mbmJzcDs8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gc3R5bGU9e2NvbnRlbnRTdHlsZX0gb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgc2V0RWRpdGluZyAmJiBzZXRFZGl0aW5nKHRydWUpXG4gICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dmVyc2VDb250ZW50KGVkaXRpbmcsIGVuYWJsZUVkaXQsIG5vV29yZHMpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L0NvbnRlbnQ+XG4gICAgICB9XG4gICAgPC9Db250YWluZXI+XG4gIClcbn1cblxuU2NyaXB0dXJlUGFuZS5kZWZhdWx0UHJvcHMgPSB7IHZlcnNlT2JqZWN0czogW10gfVxuXG5leHBvcnQgZGVmYXVsdCBTY3JpcHR1cmVQYW5lXG4iXX0=
|
|
@@ -2,9 +2,19 @@ import "core-js/modules/es.array.slice.js";
|
|
|
2
2
|
import "core-js/modules/es.object.define-properties.js";
|
|
3
3
|
import "core-js/modules/es.object.freeze.js";
|
|
4
4
|
|
|
5
|
-
function
|
|
5
|
+
function _templateObject5() {
|
|
6
6
|
var data = _taggedTemplateLiteral(["\n font-size: 12px;\n"]);
|
|
7
7
|
|
|
8
|
+
_templateObject5 = function _templateObject5() {
|
|
9
|
+
return data;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
return data;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function _templateObject4() {
|
|
16
|
+
var data = _taggedTemplateLiteral(["\n font-size: 16px;\n letter-spacing: 0.25px;\n font-family: Noto Sans;\n font-weight: normal;\n line-height: 20px;\n background-color: lightgray;\n"]);
|
|
17
|
+
|
|
8
18
|
_templateObject4 = function _templateObject4() {
|
|
9
19
|
return data;
|
|
10
20
|
};
|
|
@@ -48,5 +58,6 @@ import styled from 'styled-components';
|
|
|
48
58
|
export var Container = styled.div(_templateObject());
|
|
49
59
|
export var Title = styled.div(_templateObject2());
|
|
50
60
|
export var Content = styled.span(_templateObject3());
|
|
51
|
-
export var
|
|
52
|
-
|
|
61
|
+
export var EmptyContent = styled.span(_templateObject4());
|
|
62
|
+
export var ChapterVerse = styled.span(_templateObject5());
|
|
63
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZVBhbmUvc3R5bGVkLnRzIl0sIm5hbWVzIjpbInN0eWxlZCIsIkNvbnRhaW5lciIsImRpdiIsIlRpdGxlIiwiQ29udGVudCIsInNwYW4iLCJFbXB0eUNvbnRlbnQiLCJDaGFwdGVyVmVyc2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBT0EsTUFBUCxNQUFtQixtQkFBbkI7QUFFQSxPQUFPLElBQU1DLFNBQVMsR0FBR0QsTUFBTSxDQUFDRSxHQUFWLG1CQUFmO0FBZVAsT0FBTyxJQUFNQyxLQUFLLEdBQUdILE1BQU0sQ0FBQ0UsR0FBVixvQkFBWDtBQVVQLE9BQU8sSUFBTUUsT0FBTyxHQUFHSixNQUFNLENBQUNLLElBQVYsb0JBQWI7QUFRUCxPQUFPLElBQU1DLFlBQVksR0FBR04sTUFBTSxDQUFDSyxJQUFWLG9CQUFsQjtBQVNQLE9BQU8sSUFBTUUsWUFBWSxHQUFHUCxNQUFNLENBQUNLLElBQVYsb0JBQWxCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cydcblxuZXhwb3J0IGNvbnN0IENvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG5wYWRkaW5nOiAwIC41ZW07XG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiTm90byBTYW5zXCI7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIHNyYzogdXJsKFwiLi4vLi4vLi4vc3RhdGljL05vdG9TYW5zLVJlZ3VsYXIudHRmXCIpO1xufVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiTm90byBTYW5zXCI7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIHNyYzogdXJsKFwiLi4vLi4vLi4vc3RhdGljL05vdG9TYW5zLUJvbGQudHRmXCIpO1xufVxuXG5gXG5leHBvcnQgY29uc3QgVGl0bGUgPSBzdHlsZWQuZGl2YFxuICBmb250LWZhbWlseTogTm90byBTYW5zO1xuICBmb250LXNpemU6IDE2cHg7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGNvbG9yOiAjNDI0MjQyO1xuICBsZXR0ZXItc3BhY2luZzogMGNoO1xuICBsaW5lLWhlaWdodDogMTRweDtcbmBcblxuZXhwb3J0IGNvbnN0IENvbnRlbnQgPSBzdHlsZWQuc3BhbmBcbiAgZm9udC1zaXplOiAxNnB4O1xuICBsZXR0ZXItc3BhY2luZzogMC4yNXB4O1xuICBmb250LWZhbWlseTogTm90byBTYW5zO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogMjBweDtcbmBcblxuZXhwb3J0IGNvbnN0IEVtcHR5Q29udGVudCA9IHN0eWxlZC5zcGFuYFxuICBmb250LXNpemU6IDE2cHg7XG4gIGxldHRlci1zcGFjaW5nOiAwLjI1cHg7XG4gIGZvbnQtZmFtaWx5OiBOb3RvIFNhbnM7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyYXk7XG5gXG5cbmV4cG9ydCBjb25zdCBDaGFwdGVyVmVyc2UgPSBzdHlsZWQuc3BhbmBcbiAgZm9udC1zaXplOiAxMnB4O1xuYFxuIl19
|
|
@@ -244,10 +244,10 @@ export function useScripture(_ref2) {
|
|
|
244
244
|
_fetchBook = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(fetchParams) {
|
|
245
245
|
var ignoreSha,
|
|
246
246
|
_fetchParams$referenc2,
|
|
247
|
-
_resourceState$resour,
|
|
248
247
|
_resource$project,
|
|
249
248
|
_resource$project2,
|
|
250
249
|
fetchLink,
|
|
250
|
+
_resourceState$resour,
|
|
251
251
|
shaToBeIgnored,
|
|
252
252
|
_resourceState$resour2,
|
|
253
253
|
_fetchCount,
|
|
@@ -270,10 +270,16 @@ export function useScripture(_ref2) {
|
|
|
270
270
|
ignoreSha = _args.length > 1 && _args[1] !== undefined ? _args[1] : null;
|
|
271
271
|
_context.prev = 1;
|
|
272
272
|
fetchLink = "".concat(fetchParams === null || fetchParams === void 0 ? void 0 : fetchParams.resourceLink, "/").concat(fetchParams === null || fetchParams === void 0 ? void 0 : (_fetchParams$referenc2 = fetchParams.reference) === null || _fetchParams$referenc2 === void 0 ? void 0 : _fetchParams$referenc2.projectId);
|
|
273
|
+
|
|
274
|
+
if (!ignoreSha) {
|
|
275
|
+
_context.next = 8;
|
|
276
|
+
break;
|
|
277
|
+
}
|
|
278
|
+
|
|
273
279
|
shaToBeIgnored = ignoreSha && ignoreSha === (resourceState === null || resourceState === void 0 ? void 0 : resourceState.sha); // we will reload if ignoreSha given and it matches current sha
|
|
274
280
|
|
|
275
281
|
if (!(fetchLink === (resourceState === null || resourceState === void 0 ? void 0 : (_resourceState$resour = resourceState.resource) === null || _resourceState$resour === void 0 ? void 0 : _resourceState$resour.resourceLink) && !shaToBeIgnored)) {
|
|
276
|
-
_context.next =
|
|
282
|
+
_context.next = 8;
|
|
277
283
|
break;
|
|
278
284
|
}
|
|
279
285
|
|
|
@@ -281,7 +287,7 @@ export function useScripture(_ref2) {
|
|
|
281
287
|
console.log("useScripture.fetchBook() - Already fetching resourceLink ".concat(resourceState === null || resourceState === void 0 ? void 0 : (_resourceState$resour2 = resourceState.resource) === null || _resourceState$resour2 === void 0 ? void 0 : _resourceState$resour2.resourceLink, " and ignoreSha=").concat(ignoreSha), fetchParams);
|
|
282
288
|
return _context.abrupt("return");
|
|
283
289
|
|
|
284
|
-
case
|
|
290
|
+
case 8:
|
|
285
291
|
_fetchCount = fetchCount + 1;
|
|
286
292
|
console.log("useScripture.fetchBook() - FETCHING bible ".concat(resource_ === null || resource_ === void 0 ? void 0 : resource_.projectId, " resourceLink is now ").concat(fetchParams === null || fetchParams === void 0 ? void 0 : fetchParams.resourceLink, " and ignoreSha=").concat(ignoreSha), fetchParams);
|
|
287
293
|
setState({
|
|
@@ -293,18 +299,18 @@ export function useScripture(_ref2) {
|
|
|
293
299
|
}
|
|
294
300
|
}); // fetch manifest data
|
|
295
301
|
|
|
296
|
-
_context.next =
|
|
302
|
+
_context.next = 13;
|
|
297
303
|
return delay(100);
|
|
298
304
|
|
|
299
|
-
case
|
|
300
|
-
_context.next =
|
|
305
|
+
case 13:
|
|
306
|
+
_context.next = 15;
|
|
301
307
|
return core.resourceFromResourceLink(fetchParams);
|
|
302
308
|
|
|
303
|
-
case
|
|
309
|
+
case 15:
|
|
304
310
|
_resource = _context.sent;
|
|
305
311
|
|
|
306
312
|
if (!(!(_resource !== null && _resource !== void 0 && _resource.manifest) || !(_resource !== null && _resource !== void 0 && (_resource$project = _resource.project) !== null && _resource$project !== void 0 && _resource$project.file))) {
|
|
307
|
-
_context.next =
|
|
313
|
+
_context.next = 21;
|
|
308
314
|
break;
|
|
309
315
|
}
|
|
310
316
|
|
|
@@ -318,27 +324,27 @@ export function useScripture(_ref2) {
|
|
|
318
324
|
});
|
|
319
325
|
return _context.abrupt("return");
|
|
320
326
|
|
|
321
|
-
case
|
|
327
|
+
case 21:
|
|
322
328
|
console.log("useScripture.fetchBook() - LOADED bible manifest, fetching book ".concat(resource_ === null || resource_ === void 0 ? void 0 : resource_.projectId, " resourceLink is now ").concat(fetchParams === null || fetchParams === void 0 ? void 0 : fetchParams.resourceLink, " and resourceLink_=").concat(fetchParams === null || fetchParams === void 0 ? void 0 : fetchParams.resourceLink_), fetchParams);
|
|
323
|
-
_context.next =
|
|
329
|
+
_context.next = 24;
|
|
324
330
|
return delay(100);
|
|
325
331
|
|
|
326
|
-
case
|
|
327
|
-
_context.next =
|
|
332
|
+
case 24:
|
|
333
|
+
_context.next = 26;
|
|
328
334
|
return _resource === null || _resource === void 0 ? void 0 : (_resource$project2 = _resource.project) === null || _resource$project2 === void 0 ? void 0 : _resource$project2.file();
|
|
329
335
|
|
|
330
|
-
case
|
|
336
|
+
case 26:
|
|
331
337
|
response = _context.sent;
|
|
332
338
|
// parse book usfm
|
|
333
339
|
_bibleUsfm = response && core.getResponseData(response);
|
|
334
|
-
_context.next =
|
|
340
|
+
_context.next = 30;
|
|
335
341
|
return delay(100);
|
|
336
342
|
|
|
337
|
-
case
|
|
343
|
+
case 30:
|
|
338
344
|
_bookObjects3 = _bibleUsfm && usfmjs.toJSON(_bibleUsfm); // convert to bible objects
|
|
339
345
|
|
|
340
346
|
if (_bookObjects3) {
|
|
341
|
-
_context.next =
|
|
347
|
+
_context.next = 36;
|
|
342
348
|
break;
|
|
343
349
|
}
|
|
344
350
|
|
|
@@ -352,7 +358,7 @@ export function useScripture(_ref2) {
|
|
|
352
358
|
});
|
|
353
359
|
return _context.abrupt("return");
|
|
354
360
|
|
|
355
|
-
case
|
|
361
|
+
case 36:
|
|
356
362
|
_ref5 = (response === null || response === void 0 ? void 0 : response.data) || {}, name = _ref5.name, sha = _ref5.sha, url = _ref5.url;
|
|
357
363
|
console.log("useScripture.fetchBook() - LOADED bible book ".concat(resource_ === null || resource_ === void 0 ? void 0 : resource_.projectId, " resourceLink is now ").concat(fetchParams === null || fetchParams === void 0 ? void 0 : fetchParams.resourceLink, " and resourceLink_=").concat(fetchParams === null || fetchParams === void 0 ? void 0 : fetchParams.resourceLink_), fetchParams);
|
|
358
364
|
setState({
|
|
@@ -369,11 +375,11 @@ export function useScripture(_ref2) {
|
|
|
369
375
|
})
|
|
370
376
|
}
|
|
371
377
|
});
|
|
372
|
-
_context.next =
|
|
378
|
+
_context.next = 45;
|
|
373
379
|
break;
|
|
374
380
|
|
|
375
|
-
case
|
|
376
|
-
_context.prev =
|
|
381
|
+
case 41:
|
|
382
|
+
_context.prev = 41;
|
|
377
383
|
_context.t0 = _context["catch"](1);
|
|
378
384
|
console.error("useScripture.fetchBook() - hard error loading resource", fetchParams, _context.t0);
|
|
379
385
|
setState({
|
|
@@ -383,12 +389,12 @@ export function useScripture(_ref2) {
|
|
|
383
389
|
}
|
|
384
390
|
});
|
|
385
391
|
|
|
386
|
-
case
|
|
392
|
+
case 45:
|
|
387
393
|
case "end":
|
|
388
394
|
return _context.stop();
|
|
389
395
|
}
|
|
390
396
|
}
|
|
391
|
-
}, _callee, null, [[1,
|
|
397
|
+
}, _callee, null, [[1, 41]]);
|
|
392
398
|
}));
|
|
393
399
|
return _fetchBook.apply(this, arguments);
|
|
394
400
|
}
|
|
@@ -666,4 +672,4 @@ export function useScripture(_ref2) {
|
|
|
666
672
|
versesForRef: versesForRef
|
|
667
673
|
};
|
|
668
674
|
}
|
|
669
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VTY3JpcHR1cmUudHN4Il0sIm5hbWVzIjpbInVzZUVmZmVjdCIsInVzZVN0YXRlIiwiY29yZSIsInVzZm1qcyIsIkNPTlRFTlRfTk9UX0ZPVU5EX0VSUk9SIiwiRVJST1JfU1RBVEUiLCJJTklUSUFMSVpFRF9TVEFURSIsIklOVkFMSURfTUFOSUZFU1RfRVJST1IiLCJMT0FESU5HX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlNDUklQVFVSRV9OT1RfTE9BREVEX0VSUk9SIiwidXNlRGVlcENvbXBhcmVFZmZlY3QiLCJnZXRWZXJzZXMiLCJpc0VxdWFsIiwiZGVsYXkiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lIiwiZ2V0UmVzb3VyY2VMaW5rIiwicGFyc2VSZXNvdXJjZUxpbmsiLCJTZXJ2ZXJDb25maWciLCJTY3JpcHR1cmVSZXNvdXJjZSIsIlNjcmlwdHVyZVJlZmVyZW5jZSIsInBhcnNlUmVzb3VyY2VNYW5pZmVzdCIsImdldEJyYW5jaE5hbWUiLCJyZXNvdXJjZUxpbmsiLCJicmFuY2giLCJwYXJ0cyIsInNwbGl0IiwibGVuZ3RoIiwiX3BhcnRzIiwiZ2V0VmVyc2VzRm9yUmVmU3RyIiwicmVmU3RyIiwiYm9va09iamVjdHMiLCJsYW5ndWFnZUlkIiwidmVyc2VzIiwiY2hhcHRlcnMiLCJtYXAiLCJ2ZXJzZSIsInZlcnNlRGF0YSIsInZlcnNlT2JqZWN0cyIsInZlcnNlT2JqZWN0c18iLCJvY2N1cnJlbmNlSW5qZWN0VmVyc2VPYmplY3RzIiwiZ2V0VmVyc2VzRm9yUmVmIiwicmVmZXJlbmNlIiwiY2hhcHRlciIsInVzZVNjcmlwdHVyZSIsImNvbmZpZyIsInJlYWR5Rm9yRmV0Y2giLCJyZXNvdXJjZV8iLCJyZXNvdXJjZSIsInJlc291cmNlTGlua18iLCJ3aG9sZUJvb2siLCJiaWJsZVVzZm0iLCJmZXRjaENvdW50IiwiZmV0Y2hlZCIsImZldGNoZWRCb29rIiwiZmV0Y2hQYXJhbXMiLCJpZ25vcmVTaGEiLCJpbml0aWFsaXplZCIsInJlc291cmNlU3RhdGUiLCJjb250ZW50IiwiZmV0Y2hSZXNwb25zZSIsImZldGNoZWRSZXNvdXJjZXMiLCJsb2FkaW5nUmVzb3VyY2UiLCJsb2FkaW5nQ29udGVudCIsInNoYSIsInVybCIsInZlcnNlc0ZvclJlZiIsInN0YXRlIiwic2V0U3RhdGVfIiwib3duZXIiLCJyZWYiLCJib29rSWQiLCJwcm9qZWN0SWQiLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwicHJldlN0YXRlIiwiaW5pdGlhdGVCb29rRmV0Y2giLCJjb25zb2xlIiwibG9nIiwicmVmXyIsInJlc291cmNlSWQiLCJib29rUmVmIiwibmV3RmV0Y2hQYXJhbXMiLCJmZXRjaEJvb2siLCJmZXRjaExpbmsiLCJzaGFUb0JlSWdub3JlZCIsIl9mZXRjaENvdW50IiwicmVzb3VyY2VGcm9tUmVzb3VyY2VMaW5rIiwiX3Jlc291cmNlIiwibWFuaWZlc3QiLCJwcm9qZWN0IiwiZmlsZSIsImVycm9yTXNnIiwid2FybiIsInJlc3BvbnNlIiwiZ2V0UmVzcG9uc2VEYXRhIiwidG9KU09OIiwiZGF0YSIsIm5hbWUiLCJlcnJvciIsInZhbGlkYXRlUmVzcG9uc2UiLCJpc1NhbWVCb29rIiwiZXhwZWN0ZWRCb29rSWQiLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwiZmV0Y2hlZEJyYW5jaCIsImZldGNoaW5nQnJhbmNoIiwiYmlibGVVc2ZtXyIsImZldGNoVmVyc2VzRm9yUmVmIiwidGhlbiIsInRpdGxlIiwidmVyc2lvbiIsImxvYWRpbmciLCJjb250ZW50Tm90Rm91bmRFcnJvciIsInNjcmlwdHVyZU5vdExvYWRlZEVycm9yIiwibWFuaWZlc3ROb3RGb3VuZEVycm9yIiwiaW52YWxpZE1hbmlmZXN0RXJyb3IiLCJyZXNvdXJjZVN0YXR1cyIsImludGlhbGl6ZWQiLCJfZ2V0VmVyc2VzRm9yUmVmIiwiY29udGVudF8iLCJ1cGRhdGVWZXJzZSIsImJvb2tPYmplY3RzXyIsIl9ib29rT2JqZWN0cyIsIm5ld1ZlcnNlc0ZvclJlZiIsInJlbG9hZFJlc291cmNlIiwiX2ZldGNoUGFyYW1zIiwiX3JlZiIsIl9yZXNvdXJjZUxpbmsiLCJjdXJyZW50Qm9va1JlZiIsImZldGNoZWRCb29rU2FtZSIsIl92ZXJzZXNGb3JSZWYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBLFNBQ0VBLFNBREYsRUFFRUMsUUFGRixRQUdPLE9BSFA7QUFJQSxTQUFTQyxJQUFULFFBQXFCLHlCQUFyQjtBQUNBLE9BQU9DLE1BQVAsTUFBbUIsU0FBbkI7QUFDQSxTQUNFQyx1QkFERixFQUVFQyxXQUZGLEVBR0VDLGlCQUhGLEVBSUVDLHNCQUpGLEVBS0VDLGFBTEYsRUFNRUMseUJBTkYsRUFPRUMsMEJBUEYsUUFRTyx1QkFSUDtBQVNBLE9BQU9DLG9CQUFQLE1BQWlDLHlCQUFqQztBQUNBLFNBQVNDLFNBQVQsUUFBMEIsdUJBQTFCO0FBQ0EsT0FBTyxLQUFLQyxPQUFaLE1BQXlCLFlBQXpCO0FBQ0EsU0FBU0MsS0FBVCxRQUFzQixVQUF0QjtBQUNBLFNBQ0VDLG1CQURGLEVBRUVDLDJCQUZGLEVBR0VDLGVBSEYsRUFJRUMsaUJBSkYsUUFLTyw0QkFMUDtBQU1BLFNBQ0VDLFlBREYsRUFFRUMsaUJBRkYsRUFHRUMsa0JBSEYsUUFJTyxVQUpQO0FBS0EsU0FBU0MscUJBQVQsUUFBc0MseUJBQXRDOztBQWlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNDLGFBQVQsQ0FBdUJDLFlBQXZCLEVBQTZDO0FBQzNDLE1BQUlDLE1BQU0sR0FBRyxJQUFiO0FBQ0FELEVBQUFBLFlBQVksR0FBR0EsWUFBWSxJQUFJLEVBQS9CO0FBQ0EsTUFBTUUsS0FBSyxHQUFHRixZQUFZLENBQUNHLEtBQWIsQ0FBbUIsT0FBbkIsQ0FBZDs7QUFFQSxNQUFJRCxLQUFLLENBQUNFLE1BQU4sR0FBZSxDQUFuQixFQUFzQjtBQUFFO0FBQ3RCSCxJQUFBQSxNQUFNLEdBQUdD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QXNCLENBQ3BCO0FBQ0E7QUFDQTtBQUNELEtBSkQsTUFJTztBQUNMLFVBQU1QLFlBQVksR0FBR08sZUFBZSxHQUFHbkcsV0FBSCxHQUFpQixJQUFyRDs7QUFDQW9HLE1BQUFBLGFBQWEsR0FBR3ZCLGlCQUFpQixDQUFDZSxZQUFELENBQWpDLENBRkssQ0FHTDtBQUNEOztBQUVELFFBQUksQ0FBQy9HLE9BQU8sQ0FBQ3VILGFBQUQsRUFBZ0JqRSxZQUFoQixDQUFaLEVBQTJDO0FBQ3pDTyxNQUFBQSxRQUFRLENBQUM7QUFBRVAsUUFBQUEsWUFBWSxFQUFFaUU7QUFBaEIsT0FBRCxDQUFSO0FBQ0Q7QUFDRixHQWxCUSxFQWtCTixDQUFDekYsU0FBRCxDQWxCTSxDQUFUO0FBb0JBLFNBQU87QUFDTFMsSUFBQUEsU0FBUyxFQUFUQSxTQURLO0FBRUxwQixJQUFBQSxXQUFXLEVBQVhBLFdBRks7QUFHTFUsSUFBQUEsZUFBZSxFQUFFOEUsZ0JBSFo7QUFJTDdFLElBQUFBLFNBQVMsRUFBRWEsV0FBRixhQUFFQSxXQUFGLHVCQUFFQSxXQUFXLENBQUViLFNBSm5CO0FBS0xtRixJQUFBQSxjQUFjLEVBQWRBLGNBTEs7QUFNTHRHLElBQUFBLFlBQVksRUFBRWdDLFdBQUYsYUFBRUEsV0FBRix1QkFBRUEsV0FBVyxDQUFFaEMsWUFOdEI7QUFPTG1DLElBQUFBLGFBQWEsRUFBYkEsYUFQSztBQU9VO0FBQ2YyRCxJQUFBQSxjQUFjLEVBQWRBLGNBUks7QUFRVztBQUNoQlAsSUFBQUEsS0FBSyxFQUFMQSxLQVRLO0FBVUxXLElBQUFBLFdBQVcsRUFBWEEsV0FWSztBQVdMVixJQUFBQSxPQUFPLEVBQVBBLE9BWEs7QUFZTDdDLElBQUFBLFlBQVksRUFBWkE7QUFaSyxHQUFQO0FBY0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtaWdub3JlXG5pbXBvcnQge1xuICB1c2VFZmZlY3QsXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNvcmUgfSBmcm9tICdzY3JpcHR1cmUtcmVzb3VyY2VzLXJjbCdcbmltcG9ydCB1c2ZtanMgZnJvbSAndXNmbS1qcydcbmltcG9ydCB7XG4gIENPTlRFTlRfTk9UX0ZPVU5EX0VSUk9SLFxuICBFUlJPUl9TVEFURSxcbiAgSU5JVElBTElaRURfU1RBVEUsXG4gIElOVkFMSURfTUFOSUZFU1RfRVJST1IsXG4gIExPQURJTkdfU1RBVEUsXG4gIE1BTklGRVNUX05PVF9MT0FERURfRVJST1IsXG4gIFNDUklQVFVSRV9OT1RfTE9BREVEX0VSUk9SLFxufSBmcm9tICd0cmFuc2xhdGlvbi1oZWxwcy1yY2wnXG5pbXBvcnQgdXNlRGVlcENvbXBhcmVFZmZlY3QgZnJvbSAndXNlLWRlZXAtY29tcGFyZS1lZmZlY3QnXG5pbXBvcnQgeyBnZXRWZXJzZXMgfSBmcm9tICdiaWJsZS1yZWZlcmVuY2UtcmFuZ2UnXG5pbXBvcnQgKiBhcyBpc0VxdWFsIGZyb20gJ2RlZXAtZXF1YWwnXG5pbXBvcnQgeyBkZWxheSB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IHtcbiAgY2xlYW51cFZlcnNlT2JqZWN0cyxcbiAgZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lLFxuICBnZXRSZXNvdXJjZUxpbmssXG4gIHBhcnNlUmVzb3VyY2VMaW5rLFxufSBmcm9tICcuLi91dGlscy9TY3JpcHR1cmVTZXR0aW5ncydcbmltcG9ydCB7XG4gIFNlcnZlckNvbmZpZyxcbiAgU2NyaXB0dXJlUmVzb3VyY2UsXG4gIFNjcmlwdHVyZVJlZmVyZW5jZSxcbn0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyBwYXJzZVJlc291cmNlTWFuaWZlc3QgfSBmcm9tICcuL3BhcnNlUmVzb3VyY2VNYW5pZmVzdCdcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgLyoqIHJlZmVyZW5jZSBmb3Igc2NyaXB0dXJlICoqL1xuICByZWZlcmVuY2U6IFNjcmlwdHVyZVJlZmVyZW5jZTtcbiAgLyoqIHdoZXJlIHRvIGdldCBkYXRhICoqL1xuICBjb25maWc6IFNlcnZlckNvbmZpZztcbiAgLyoqIG9wdGlvbmFsIGRpcmVjdCBwYXRoIHRvIGJpYmxlIHJlc291cmNlLCBpbiBmb3JtYXQgJHtvd25lcn0vJHtsYW5ndWFnZUlkfS8ke3Byb2plY3RJZH0vJHticmFuY2h9ICoqL1xuICByZXNvdXJjZUxpbms6IHN0cmluZ3x1bmRlZmluZWQ7XG4gIC8qKiBvcHRpb25hbCByZXNvdXJjZSBvYmplY3QgdG8gdXNlIHRvIGJ1aWxkIHJlc291cmNlTGluayAqKi9cbiAgcmVzb3VyY2U6IFNjcmlwdHVyZVJlc291cmNlfHVuZGVmaW5lZDtcbiAgLyoqIGlmIHRydWUgdGhlbiBmZXRjaCB0aGUgZW50aXJlIGJvb2sgKi9cbiAgd2hvbGVCb29rOiBib29sZWFuO1xuICAvKiogaWYgdHJ1ZSB0aGVuIHNldHRpbmdzIGFyZSByZWFkeSBmb3IgZmV0Y2hpbmcgZGF0YSAqL1xuICByZWFkeUZvckZldGNoOiBib29sZWFuO1xufVxuXG4vKipcbiAqIGV4dHJhY3QgYnJhbmNoIGZyb20gcmVzb3VyY2UgbGlua1xuICogQHBhcmFtIHJlc291cmNlTGlua1xuICovXG5mdW5jdGlvbiBnZXRCcmFuY2hOYW1lKHJlc291cmNlTGluazogc3RyaW5nKSB7XG4gIGxldCBicmFuY2ggPSBudWxsXG4gIHJlc291cmNlTGluayA9IHJlc291cmNlTGluayB8fCAnJ1xuICBjb25zdCBwYXJ0cyA9IHJlc291cmNlTGluay5zcGxpdCgnP3JlZj0nKVxuXG4gIGlmIChwYXJ0cy5sZW5ndGggPiAxKSB7IC8vIGlmIHJlZiBwYXJhbWV0ZXIgZm91bmQsIGdldCBicmFuY2ggbmFtZSBhZnRlclxuICAgIGJyYW5jaCA9IHBhcnRzPy5bMV1cbiAgfSBlbHNlIHsgLy8gZmFsbCBiYWNrIHRvIHVzaW5nIHVzZVJzcmMgZm9ybWF0IHN1Y2ggYXMgXCJ1bmZvbGRpbmdXb3JkL2VuL3VzdC9tYXN0ZXJcIlxuICAgIGNvbnN0IF9wYXJ0cyA9IHJlc291cmNlTGluay5zcGxpdCgnLycpXG4gICAgYnJhbmNoID0gX3BhcnRzPy5bM11cbiAgfVxuICByZXR1cm4gYnJhbmNoXG59XG5cbi8qKlxuICogZ2V0IHRoZSB2ZXJzZSBvYmplY3RzIGZvciB0aGUgcmVmZXJlbmNlIHN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IHJlZlN0ciAtIGluIGZvcm1hdCA8Y2hhcHRlcj46PHZlcnNlPlxuICogQHBhcmFtIHtvYmplY3R9IGJvb2tPYmplY3RzIC0gcGFyc2VkIHVzZm0gZm9yIGJvb2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBsYW5ndWFnZUlkXG4gKiBAcmV0dXJuIHthcnJheXxudWxsfSAtIG9mIHZlcnNlT2JqZWN0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmVyc2VzRm9yUmVmU3RyKHJlZlN0ciwgYm9va09iamVjdHMsIGxhbmd1YWdlSWQpIHtcbiAgaWYgKGJvb2tPYmplY3RzKSB7XG4gICAgbGV0IHZlcnNlcyA9IGdldFZlcnNlcyhib29rT2JqZWN0cy5jaGFwdGVycywgcmVmU3RyKVxuXG4gICAgaWYgKGxhbmd1YWdlSWQgPT09ICdlbC14LWtvaW5lJyB8fCBsYW5ndWFnZUlkID09PSAnaGJvJykge1xuICAgICAgdmVyc2VzID0gdmVyc2VzLm1hcCh2ZXJzZSA9PiB7XG4gICAgICAgIGlmICggdmVyc2U/LnZlcnNlRGF0YT8udmVyc2VPYmplY3RzKSB7XG4gICAgICAgICAgbGV0IHZlcnNlT2JqZWN0c18gPSBjb3JlLm9jY3VycmVuY2VJbmplY3RWZXJzZU9iamVjdHMoIHZlcnNlLnZlcnNlRGF0YS52ZXJzZU9iamVjdHMpXG4gICAgICAgICAgdmVyc2VPYmplY3RzXyA9IGNsZWFudXBWZXJzZU9iamVjdHModmVyc2VPYmplY3RzXylcbiAgICAgICAgICB2ZXJzZS52ZXJzZURhdGEudmVyc2VPYmplY3RzID0gdmVyc2VPYmplY3RzX1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2ZXJzZVxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyc2VzXG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuLyoqXG4gKiBnZXQgdGhlIHZlcnNlIG9iamVjdHMgZm9yIHRoZSByZWZlcmVuY2Ugb2JqZWN0XG4gKiBAcGFyYW0ge29iamVjdH0gcmVmZXJlbmNlXG4gKiBAcGFyYW0ge29iamVjdH0gYm9va09iamVjdHMgLSBwYXJzZWQgdXNmbSBmb3IgYm9va1xuICogQHBhcmFtIHtzdHJpbmd9IGxhbmd1YWdlSWRcbiAqIEByZXR1cm4ge2FycmF5fG51bGx9IC0gb2YgdmVyc2VPYmplY3RzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWZXJzZXNGb3JSZWYocmVmZXJlbmNlLCBib29rT2JqZWN0cywgbGFuZ3VhZ2VJZCkge1xuICBjb25zdCByZWZTdHIgPSBgJHtyZWZlcmVuY2UuY2hhcHRlcn06JHtyZWZlcmVuY2UudmVyc2V9YFxuICByZXR1cm4gZ2V0VmVyc2VzRm9yUmVmU3RyKHJlZlN0ciwgYm9va09iamVjdHMsIGxhbmd1YWdlSWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTY3JpcHR1cmUoeyAvLyBob29rIGZvciBmZXRjaGluZyBzY3JpcHR1cmVcbiAgY29uZmlnLFxuICByZWFkeUZvckZldGNoLFxuICByZWZlcmVuY2UsXG4gIHJlc291cmNlOiByZXNvdXJjZV8sXG4gIHJlc291cmNlTGluazogcmVzb3VyY2VMaW5rXyxcbiAgd2hvbGVCb29rID0gZmFsc2UsXG59IDogUHJvcHMpIHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV9dID0gdXNlU3RhdGUoe1xuICAgIGJpYmxlVXNmbTogbnVsbCxcbiAgICBib29rT2JqZWN0czogbnVsbCxcbiAgICBmZXRjaENvdW50OiAwLFxuICAgIGZldGNoZWQ6IGZhbHNlLFxuICAgIGZldGNoZWRCb29rOiAnJyxcbiAgICBmZXRjaFBhcmFtczoge1xuICAgICAgY29uZmlnOiB7fSxcbiAgICAgIHJlZmVyZW5jZToge30sXG4gICAgICByZXNvdXJjZUxpbms6ICcnLFxuICAgIH0sXG4gICAgaWdub3JlU2hhOiBudWxsLFxuICAgIGluaXRpYWxpemVkOiBmYWxzZSxcbiAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICBib29rT2JqZWN0czogbnVsbCxcbiAgICAgIGJpYmxlVXNmbTogbnVsbCxcbiAgICAgIGNvbnRlbnQ6IG51bGwsXG4gICAgICBmZXRjaFJlc3BvbnNlOiBudWxsLFxuICAgICAgZmV0Y2hlZFJlc291cmNlczogbnVsbCxcbiAgICAgIGxvYWRpbmdSZXNvdXJjZTogZmFsc2UsXG4gICAgICBsb2FkaW5nQ29udGVudDogZmFsc2UsXG4gICAgICByZXNvdXJjZTogbnVsbCxcbiAgICAgIHNoYTogbnVsbCxcbiAgICAgIHVybDogbnVsbCxcbiAgICB9LFxuICAgIHZlcnNlc0ZvclJlZjogW10sXG4gIH0pXG5cbiAgY29uc3Qge1xuICAgIG93bmVyLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgYnJhbmNoID0gJ21hc3RlcicsXG4gICAgcmVmID0gbnVsbCxcbiAgfSA9IHJlc291cmNlXyB8fCB7fVxuXG4gIGNvbnN0IHsgcHJvamVjdElkOiBib29rSWR9ID0gcmVmZXJlbmNlIHx8IHt9XG5cbiAgY29uc3Qge1xuICAgIGJpYmxlVXNmbSxcbiAgICBib29rT2JqZWN0cyxcbiAgICBmZXRjaENvdW50LFxuICAgIGZldGNoZWQsXG4gICAgZmV0Y2hlZEJvb2ssXG4gICAgZmV0Y2hQYXJhbXMsXG4gICAgaWdub3JlU2hhLFxuICAgIGluaXRpYWxpemVkLFxuICAgIHJlc291cmNlU3RhdGUsXG4gICAgdmVyc2VzRm9yUmVmLFxuICB9ID0gc3RhdGVcbiAgY29uc3QgZmV0Y2hlZFJlc291cmNlcyA9IHJlc291cmNlU3RhdGU/LmZldGNoZWRSZXNvdXJjZXNcblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXdTdGF0ZSkge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlYWR5Rm9yRmV0Y2gpIHtcbiAgICAgIGluaXRpYXRlQm9va0ZldGNoKClcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbml0aWF0ZUJvb2tGZXRjaCgpIHtcbiAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgLSByZWFkeUZvckZldGNoIHRydWUsIGluaXRpYWxpemluZ2ApXG4gICAgICBsZXQgcmVzb3VyY2VMaW5rID0gcmVhZHlGb3JGZXRjaCAmJiByZXNvdXJjZUxpbmtfXG5cbiAgICAgIGlmICghcmVzb3VyY2VMaW5rXyAmJiByZXNvdXJjZV8pIHtcbiAgICAgICAgY29uc3QgcmVmXyA9IHJlZiB8fCBicmFuY2hcblxuICAgICAgICByZXNvdXJjZUxpbmsgPSBnZXRSZXNvdXJjZUxpbmsoe1xuICAgICAgICAgIG93bmVyLFxuICAgICAgICAgIGxhbmd1YWdlSWQsXG4gICAgICAgICAgcmVzb3VyY2VJZDogYm9va0lkLFxuICAgICAgICAgIHJlZjogcmVmXyxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgYm9va1JlZiA9IHsgLi4ucmVmZXJlbmNlIH1cblxuICAgICAgaWYgKHdob2xlQm9vaykge1xuICAgICAgICBkZWxldGUgYm9va1JlZi5jaGFwdGVyIC8vIHJlbW92ZSB0aGUgY2hhcHRlciBhbmQgdmVyc2Ugc28gdGhlIHdob2xlIGJvb2sgaXMgZmV0Y2hlZFxuICAgICAgICBkZWxldGUgYm9va1JlZi52ZXJzZVxuICAgICAgfVxuXG4gICAgICBpZiAocmVzb3VyY2VMaW5rICE9PSBmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgLSBmb3IgJHtyZXNvdXJjZV8/LnByb2plY3RJZH0gcmVzb3VyY2VMaW5rIGlzIG5vdyAke3Jlc291cmNlTGlua30gYW5kIHJlc291cmNlTGlua189JHtyZXNvdXJjZUxpbmtffWApXG4gICAgICB9IGVsc2UgaWYgKGJvb2tSZWYgIT09IGZldGNoUGFyYW1zPy5yZWZlcmVuY2UpIHtcbiAgICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSAtIGJvb2sgY2hhbmdlZCB0byAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZXNvdXJjZUxpbmsgaXMgbm93ICR7cmVzb3VyY2VMaW5rfWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5ld0ZldGNoUGFyYW1zID0ge1xuICAgICAgICBjb25maWcsXG4gICAgICAgIHJlZmVyZW5jZTogYm9va1JlZixcbiAgICAgICAgcmVzb3VyY2VMaW5rLFxuICAgICAgfVxuXG4gICAgICBpZiAoIWlzRXF1YWwobmV3RmV0Y2hQYXJhbXMsIGZldGNoUGFyYW1zKSkge1xuICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgZmV0Y2hQYXJhbXM6IG5ld0ZldGNoUGFyYW1zLFxuICAgICAgICAgIGZldGNoZWQ6IGZhbHNlLFxuICAgICAgICAgIGluaXRpYWxpemVkOiB0cnVlLFxuICAgICAgICB9KVxuXG4gICAgICAgIGZldGNoQm9vayhuZXdGZXRjaFBhcmFtcylcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICByZWFkeUZvckZldGNoLFxuICAgIG93bmVyLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgYm9va0lkLFxuICAgIGJyYW5jaCxcbiAgICByZWYsXG4gIF0pXG5cbiAgLyoqXG4gICAqIGRvIGEgZmV0Y2ggb2YgbWFuaWZlc3QgYW5kIGJvb2sgb2YgdGhlIGJpYmxlIHNwZWNpZmllZCBpbiBmZXRjaFBhcmFtc1xuICAgKiBAcGFyYW0ge29iamVjdH0gZmV0Y2hQYXJhbXNcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlnbm9yZVNoYSAtIG9wdGlvbmFsIHByZXZpb3VzIHNoYSAtIGlnbm9yZSByZXNwb25zZXMgdGhhdCBjYW1lIGJhY2sgZm9yIHRoaXMgcHJldmlvdXMgYm9vayBjb21taXRcbiAgICovXG4gIGFzeW5jIGZ1bmN0aW9uIGZldGNoQm9vayhmZXRjaFBhcmFtcywgaWdub3JlU2hhID0gbnVsbCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBmZXRjaExpbmsgPSBgJHtmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rfS8ke2ZldGNoUGFyYW1zPy5yZWZlcmVuY2U/LnByb2plY3RJZH1gXG4gICAgICBjb25zdCBzaGFUb0JlSWdub3JlZCA9IGlnbm9yZVNoYSAmJiBpZ25vcmVTaGEgPT09IHJlc291cmNlU3RhdGU/LnNoYSAvLyB3ZSB3aWxsIHJlbG9hZCBpZiBpZ25vcmVTaGEgZ2l2ZW4gYW5kIGl0IG1hdGNoZXMgY3VycmVudCBzaGFcblxuICAgICAgaWYgKChmZXRjaExpbmsgPT09IHJlc291cmNlU3RhdGU/LnJlc291cmNlPy5yZXNvdXJjZUxpbmspICYmICFzaGFUb0JlSWdub3JlZCkgeyAvLyBzZWUgaWYgd2UgYWxyZWFkeSBmZXRjaGVkIHRoaXNcbiAgICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS5mZXRjaEJvb2soKSAtIEFscmVhZHkgZmV0Y2hpbmcgcmVzb3VyY2VMaW5rICR7cmVzb3VyY2VTdGF0ZT8ucmVzb3VyY2U/LnJlc291cmNlTGlua30gYW5kIGlnbm9yZVNoYT0ke2lnbm9yZVNoYX1gLCBmZXRjaFBhcmFtcylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IF9mZXRjaENvdW50ID0gZmV0Y2hDb3VudCArIDFcbiAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUuZmV0Y2hCb29rKCkgLSBGRVRDSElORyBiaWJsZSAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZXNvdXJjZUxpbmsgaXMgbm93ICR7ZmV0Y2hQYXJhbXM/LnJlc291cmNlTGlua30gYW5kIGlnbm9yZVNoYT0ke2lnbm9yZVNoYX1gLCBmZXRjaFBhcmFtcylcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgZmV0Y2hDb3VudDogX2ZldGNoQ291bnQsXG4gICAgICAgIGZldGNoZWQ6IGZhbHNlLFxuICAgICAgICBpZ25vcmVTaGEsXG4gICAgICAgIHJlc291cmNlU3RhdGU6IHsgbG9hZGluZ1Jlc291cmNlOiB0cnVlIH0sXG4gICAgICB9KVxuXG4gICAgICAvLyBmZXRjaCBtYW5pZmVzdCBkYXRhXG4gICAgICBhd2FpdCBkZWxheSgxMDApXG4gICAgICBjb25zdCBfcmVzb3VyY2UgPSBhd2FpdCBjb3JlLnJlc291cmNlRnJvbVJlc291cmNlTGluayhmZXRjaFBhcmFtcylcblxuICAgICAgaWYgKCFfcmVzb3VyY2U/Lm1hbmlmZXN0IHx8ICFfcmVzb3VyY2U/LnByb2plY3Q/LmZpbGUpIHtcbiAgICAgICAgY29uc3QgZXJyb3JNc2cgPSBfcmVzb3VyY2U/Lm1hbmlmZXN0ID8gJ3BhcnNpbmcgcmVzb3VyY2UgbWFuaWZlc3QnIDogJ2xvYWRpbmcgcmVzb3VyY2UgbWFuaWZlc3QnXG4gICAgICAgIGNvbnNvbGUud2FybihgdXNlU2NyaXB0dXJlLmZldGNoQm9vaygpIC0gZXJyb3IgJHtlcnJvck1zZ31gLCBmZXRjaFBhcmFtcyApXG4gICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICAgICAgICBsb2FkaW5nUmVzb3VyY2U6IGZhbHNlLFxuICAgICAgICAgICAgcmVzb3VyY2U6IF9yZXNvdXJjZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS5mZXRjaEJvb2soKSAtIExPQURFRCBiaWJsZSBtYW5pZmVzdCwgZmV0Y2hpbmcgYm9vayAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZXNvdXJjZUxpbmsgaXMgbm93ICR7ZmV0Y2hQYXJhbXM/LnJlc291cmNlTGlua30gYW5kIHJlc291cmNlTGlua189JHtmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rX31gLCBmZXRjaFBhcmFtcylcbiAgICAgIGF3YWl0IGRlbGF5KDEwMClcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgX3Jlc291cmNlPy5wcm9qZWN0Py5maWxlKClcbiAgICAgIC8vIHBhcnNlIGJvb2sgdXNmbVxuICAgICAgY29uc3QgYmlibGVVc2ZtID0gcmVzcG9uc2UgJiYgY29yZS5nZXRSZXNwb25zZURhdGEocmVzcG9uc2UpXG4gICAgICBhd2FpdCBkZWxheSgxMDApXG4gICAgICBjb25zdCBib29rT2JqZWN0cyA9IGJpYmxlVXNmbSAmJiB1c2ZtanMudG9KU09OKGJpYmxlVXNmbSkgLy8gY29udmVydCB0byBiaWJsZSBvYmplY3RzXG5cbiAgICAgIGlmICghYm9va09iamVjdHMpIHtcbiAgICAgICAgY29uc3QgZXJyb3JNc2cgPSBiaWJsZVVzZm0gPyAnZmV0Y2hpbmcgYm9vayBvZiB0aGUgYmlibGUnIDogJ3BhcnNpbmcgYm9vayBvZiB0aGUgYmlibGUnXG4gICAgICAgIGNvbnNvbGUud2FybihgdXNlU2NyaXB0dXJlLmZldGNoQm9vaygpIC0gZXJyb3IgJHtlcnJvck1zZ31gLCBmZXRjaFBhcmFtcyApXG4gICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICAgICAgICBsb2FkaW5nUmVzb3VyY2U6IGZhbHNlLFxuICAgICAgICAgICAgcmVzb3VyY2U6IF9yZXNvdXJjZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBuYW1lLCBzaGEsIHVybCB9ID0gcmVzcG9uc2U/LmRhdGEgfHwge31cblxuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS5mZXRjaEJvb2soKSAtIExPQURFRCBiaWJsZSBib29rICR7cmVzb3VyY2VfPy5wcm9qZWN0SWR9IHJlc291cmNlTGluayBpcyBub3cgJHtmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rfSBhbmQgcmVzb3VyY2VMaW5rXz0ke2ZldGNoUGFyYW1zPy5yZXNvdXJjZUxpbmtffWAsIGZldGNoUGFyYW1zKVxuICAgICAgc2V0U3RhdGUoXG4gICAgICAgIHtcbiAgICAgICAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICAgICAgICBsb2FkaW5nUmVzb3VyY2U6IGZhbHNlLFxuICAgICAgICAgICAgZmV0Y2hlZFJlc291cmNlczoge1xuICAgICAgICAgICAgICAuLi5fcmVzb3VyY2UsXG4gICAgICAgICAgICAgIGJpYmxlVXNmbSxcbiAgICAgICAgICAgICAgYm9va09iamVjdHMsXG4gICAgICAgICAgICAgIGZldGNoQ291bnQ6IF9mZXRjaENvdW50LFxuICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICByZWZlcmVuY2U6IGZldGNoUGFyYW1zPy5yZWZlcmVuY2UsXG4gICAgICAgICAgICAgIHNoYSxcbiAgICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYHVzZVNjcmlwdHVyZS5mZXRjaEJvb2soKSAtIGhhcmQgZXJyb3IgbG9hZGluZyByZXNvdXJjZWAsIGZldGNoUGFyYW1zLCBlIClcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgcmVzb3VyY2VTdGF0ZToge1xuICAgICAgICAgIGxvYWRpbmdSZXNvdXJjZTogZmFsc2UsXG4gICAgICAgICAgcmVzb3VyY2U6IG51bGwsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSAtIGZvciAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZWFkeUZvckZldGNoIGlzIG5vdyAke3JlYWR5Rm9yRmV0Y2h9YClcbiAgfSwgW3JlYWR5Rm9yRmV0Y2hdKVxuXG4gIC8qKlxuICAgKiBtYWtlIHN1cmUgbGFzdCBmZXRjaCByZXNwb25zZSBpcyBmb3IgY3VycmVudCBib29rL2JyYW5jaFxuICAgKi9cbiAgZnVuY3Rpb24gdmFsaWRhdGVSZXNwb25zZSgpIHtcbiAgICBsZXQgaXNTYW1lQm9vayA9IGZhbHNlXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGV4cGVjdGVkQm9va0lkID0gYm9va0lkIHx8ICd6enonXG4gICAgY29uc3QgZmV0Y2hlZEJvb2sgPSBnZXRCb29rTmFtZUZyb21Vc2ZtRmlsZU5hbWUoZmV0Y2hlZFJlc291cmNlcz8ubmFtZSlcbiAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLnZhbGlkYXRlUmVzcG9uc2UoKSAtIEN1cnJlbnQgYm9va0lkIGlzICR7Ym9va0lkfSBhbmQgc2VlaW5nICR7ZmV0Y2hlZEJvb2t9IGluIFVTRk1gKVxuICAgIGlzU2FtZUJvb2sgPSBmZXRjaGVkQm9vaz8udG9Mb3dlckNhc2UoKT8uaW5jbHVkZXMoYm9va0lkKVxuXG4gICAgY29uc3Qgc2hhID0gZmV0Y2hlZFJlc291cmNlcz8uc2hhIHx8IG51bGxcbiAgICBjb25zdCB1cmwgPSBmZXRjaGVkUmVzb3VyY2VzPy51cmwgfHwgbnVsbFxuXG4gICAgaWYgKGlzU2FtZUJvb2spIHsgLy8gYWxzbyBtYWtlIHN1cmUgaXQgaXMgdGhlIHNhbWUgYnJhbmNoXG4gICAgICBjb25zdCBmZXRjaGVkQnJhbmNoID0gZ2V0QnJhbmNoTmFtZSh1cmwpXG4gICAgICBjb25zdCBmZXRjaGluZ0JyYW5jaCA9IGdldEJyYW5jaE5hbWUoZmV0Y2hQYXJhbXM/LnJlc291cmNlTGluaylcblxuICAgICAgaWYgKGZldGNoZWRCcmFuY2ggIT09IGZldGNoaW5nQnJhbmNoKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUudmFsaWRhdGVSZXNwb25zZSgpIGludmFsaWQgYnJhbmNoLCBleHBlY3RlZCBicmFuY2ggaXMgJHtmZXRjaGluZ0JyYW5jaH0sIGJ1dCBmZXRjaGVkQnJhbmNoIGlzICR7ZmV0Y2hlZEJyYW5jaH1gLCB7IHNoYSwgdXJsIH0pXG4gICAgICAgIGlzU2FtZUJvb2sgPSBmYWxzZVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLnZhbGlkYXRlUmVzcG9uc2UoKSAtICBpbnZhbGlkIGJvb2ssIGV4cGVjdGVkQm9va0lkIGlzICR7ZXhwZWN0ZWRCb29rSWR9LCBidXQgcmVjZWl2ZWQgYm9vayBuYW1lICR7ZmV0Y2hlZEJvb2t9YCwgeyBzaGEsIHVybCB9KVxuICAgIH1cblxuICAgIGlmIChpZ25vcmVTaGEgPT09IHNoYSkge1xuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS52YWxpZGF0ZVJlc3BvbnNlKCkgLSB0aGUgc2hhIGlzIHRoZSBzYW1lIGFzIHRoZSBpZ25vcmUgc2hhICR7c2hhfWAsIHsgc2hhLCB1cmwgfSlcbiAgICAgIGlzU2FtZUJvb2sgPSBmYWxzZVxuICAgIH1cblxuICAgIGlmIChpc1NhbWVCb29rKSB7XG4gICAgICBjb25zdCBiaWJsZVVzZm1fID0gZmV0Y2hlZFJlc291cmNlcz8uYmlibGVVc2ZtXG4gICAgICBjb25zdCBib29rT2JqZWN0cyA9IGZldGNoZWRSZXNvdXJjZXM/LmJvb2tPYmplY3RzXG4gICAgICBjb25zdCB2ZXJzZXNGb3JSZWYgPSBmZXRjaFZlcnNlc0ZvclJlZihib29rT2JqZWN0cylcblxuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS52YWxpZGF0ZVJlc3BvbnNlKCkgLSBjb3JyZWN0IGJvb2ssIGV4cGVjdGVkQm9va0lkIGlzICR7ZXhwZWN0ZWRCb29rSWR9YCwgeyBzaGEsIHVybCB9KVxuICAgICAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgICAgIGJpYmxlVXNmbTogYmlibGVVc2ZtXyxcbiAgICAgICAgYm9va09iamVjdHMsXG4gICAgICAgIGZldGNoZWQ6IHRydWUsXG4gICAgICAgIGZldGNoZWRCb29rOiBleHBlY3RlZEJvb2tJZCxcbiAgICAgICAgaWdub3JlU2hhOiBudWxsLFxuICAgICAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICAgICAgYm9va09iamVjdHMsXG4gICAgICAgICAgYmlibGVVc2ZtOiBiaWJsZVVzZm1fLFxuICAgICAgICAgIGxvYWRpbmdSZXNvdXJjZTogZmFsc2UsXG4gICAgICAgICAgbG9hZGluZ0NvbnRlbnQ6IGZhbHNlLFxuICAgICAgICAgIHJlc291cmNlOiBmZXRjaGVkUmVzb3VyY2VzLFxuICAgICAgICAgIHNoYSxcbiAgICAgICAgICB1cmwsXG4gICAgICAgIH0sXG4gICAgICAgIHZlcnNlc0ZvclJlZixcbiAgICAgIH1cblxuICAgICAgc2V0U3RhdGUobmV3U3RhdGUpXG4gICAgfVxuICB9XG5cbiAgdXNlRGVlcENvbXBhcmVFZmZlY3QoKCkgPT4geyAvLyB2YWxpZGF0ZSByZXNwb25zZSB0byBtYWtlIHN1cmUgZnJvbSBsYXRlc3QgcmVxdWVzdFxuICAgIGlmIChyZWFkeUZvckZldGNoICYmIGZldGNoZWRSZXNvdXJjZXMpIHtcbiAgICAgIGlmICghZmV0Y2hlZCAmJiBmZXRjaGVkUmVzb3VyY2VzPy5mZXRjaENvdW50ID09PSBmZXRjaENvdW50KSB7XG4gICAgICAgIGRlbGF5KDUwMCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgdmFsaWRhdGVSZXNwb25zZSgpXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9LCBbeyByZWFkeUZvckZldGNoLCBmZXRjaGVkUmVzb3VyY2VzIH1dKVxuXG4gIGNvbnN0IHJlc291cmNlID0gcmVzb3VyY2VTdGF0ZT8ucmVzb3VyY2VcbiAgY29uc3QgeyB0aXRsZSwgdmVyc2lvbiB9ID0gcGFyc2VSZXNvdXJjZU1hbmlmZXN0KHJlc291cmNlKVxuICBjb25zdCBsb2FkaW5nID0gcmVzb3VyY2VTdGF0ZT8ubG9hZGluZ1Jlc291cmNlIHx8IHJlc291cmNlU3RhdGU/LmxvYWRpbmdDb250ZW50IHx8ICFyZWFkeUZvckZldGNoXG4gIGNvbnN0IGNvbnRlbnROb3RGb3VuZEVycm9yID0gIXJlc291cmNlU3RhdGU/LmJpYmxlVXNmbVxuICBjb25zdCBzY3JpcHR1cmVOb3RMb2FkZWRFcnJvciA9ICFyZXNvdXJjZVN0YXRlPy5ib29rT2JqZWN0c1xuICBjb25zdCBtYW5pZmVzdE5vdEZvdW5kRXJyb3IgPSAhcmVzb3VyY2U/Lm1hbmlmZXN0XG4gIGNvbnN0IGludmFsaWRNYW5pZmVzdEVycm9yID0gIXRpdGxlIHx8ICF2ZXJzaW9uIHx8ICFsYW5ndWFnZUlkXG4gIGNvbnN0IGVycm9yID0gcmVhZHlGb3JGZXRjaCAmJiBpbml0aWFsaXplZCAmJiAhbG9hZGluZyAmJlxuICAgIChjb250ZW50Tm90Rm91bmRFcnJvciB8fCBzY3JpcHR1cmVOb3RMb2FkZWRFcnJvciB8fCBtYW5pZmVzdE5vdEZvdW5kRXJyb3IgfHwgaW52YWxpZE1hbmlmZXN0RXJyb3IpXG4gIGNvbnN0IHJlc291cmNlU3RhdHVzID0ge1xuICAgIFtMT0FESU5HX1NUQVRFXTogbG9hZGluZyxcbiAgICBbQ09OVEVOVF9OT1RfRk9VTkRfRVJST1JdOiBjb250ZW50Tm90Rm91bmRFcnJvcixcbiAgICBbU0NSSVBUVVJFX05PVF9MT0FERURfRVJST1JdOiBzY3JpcHR1cmVOb3RMb2FkZWRFcnJvcixcbiAgICBbTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUl06IG1hbmlmZXN0Tm90Rm91bmRFcnJvcixcbiAgICBbSU5WQUxJRF9NQU5JRkVTVF9FUlJPUl06IGludmFsaWRNYW5pZmVzdEVycm9yLFxuICAgIFtFUlJPUl9TVEFURV06IGVycm9yLFxuICAgIFtJTklUSUFMSVpFRF9TVEFURV06IGluaXRpYWxpemVkLFxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXJlYWR5Rm9yRmV0Y2gpIHtcbiAgICAgIGlmIChpbml0aWFsaXplZCkge1xuICAgICAgICBzZXRTdGF0ZSh7IGludGlhbGl6ZWQ6IGZhbHNlIH0pXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghaW5pdGlhbGl6ZWQpIHtcbiAgICAgIGlmIChsb2FkaW5nKSB7IC8vIG9uY2UgZmlyc3QgbG9hZCBoYXMgYmVndW4sIHdlIGFyZSBpbml0aWFsaXplZFxuICAgICAgICBzZXRTdGF0ZSh7IGludGlhbGl6ZWQ6IHRydWUgfSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtsb2FkaW5nLCByZWFkeUZvckZldGNoXSlcblxuICAvKipcbiAgICogZ2V0IHZlcnNlcyBmb3IgcmVmXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWZTdHJcbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRlbnRfXG4gICAqL1xuICBmdW5jdGlvbiBfZ2V0VmVyc2VzRm9yUmVmKHJlZlN0ciwgY29udGVudF8gPSBib29rT2JqZWN0cykge1xuICAgIGlmIChjb250ZW50Xykge1xuICAgICAgcmV0dXJuIGdldFZlcnNlc0ZvclJlZlN0cihyZWZTdHIsIGNvbnRlbnRfLCBsYW5ndWFnZUlkKVxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIHVwZGF0ZSB2ZXJzZSBkYXRhIGZvciBjdXJyZW50IGJvb2tcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNoYXB0ZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZlcnNlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSB2ZXJzZURhdGFcbiAgICovXG4gIGZ1bmN0aW9uIHVwZGF0ZVZlcnNlKGNoYXB0ZXIsIHZlcnNlLCB2ZXJzZURhdGEpIHtcbiAgICBpZiAoYm9va09iamVjdHMpIHtcbiAgICAgIGNvbnN0IGJvb2tPYmplY3RzXyA9IHsgLi4uYm9va09iamVjdHMgfSAvLyBzaGFsbG93IGNvcHlcblxuICAgICAgaWYgKGJvb2tPYmplY3RzXz8uY2hhcHRlcnMpIHtcbiAgICAgICAgYm9va09iamVjdHNfLmNoYXB0ZXJzID0geyAuLi5ib29rT2JqZWN0c18uY2hhcHRlcnMgfSAvLyBzaGFsbG93IGNvcHkgY2hhcHRlcnNcblxuICAgICAgICBpZiAoYm9va09iamVjdHNfLmNoYXB0ZXJzW2NoYXB0ZXJdKSB7XG4gICAgICAgICAgYm9va09iamVjdHNfLmNoYXB0ZXJzW2NoYXB0ZXJdID0geyAuLi5ib29rT2JqZWN0c18uY2hhcHRlcnNbY2hhcHRlcl0gfSAvLyBzaGFsbG93IGNvcHkgdmVyc2VzXG4gICAgICAgICAgYm9va09iamVjdHNfLmNoYXB0ZXJzW2NoYXB0ZXJdW3ZlcnNlXSA9IHZlcnNlRGF0YVxuICAgICAgICAgIHNldFN0YXRlKHsgYm9va09iamVjdHM6IGJvb2tPYmplY3RzXyB9KVxuICAgICAgICAgIHJldHVybiBib29rT2JqZWN0c19cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIGdldCB0aGUgdmVyc2VzIGZvciBjdXJyZW50IHJlZmVyZW5jZSBvciByZWZlcmVuY2UgcmFuZ2VcbiAgICogQHBhcmFtIHtvYmplY3R9IF9ib29rT2JqZWN0c1xuICAgKi9cbiAgZnVuY3Rpb24gZmV0Y2hWZXJzZXNGb3JSZWYoX2Jvb2tPYmplY3RzID0gYm9va09iamVjdHMpIHtcbiAgICBsZXQgbmV3VmVyc2VzRm9yUmVmID0gW11cblxuICAgIGlmIChfYm9va09iamVjdHMpIHtcbiAgICAgIG5ld1ZlcnNlc0ZvclJlZiA9IGdldFZlcnNlc0ZvclJlZihyZWZlcmVuY2UsIF9ib29rT2JqZWN0cywgbGFuZ3VhZ2VJZClcbiAgICAgIHJldHVybiBuZXdWZXJzZXNGb3JSZWZcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIGZvcmNlIHJlbG9hZCBvZiByZXNvdXJjZVxuICAgKiBAcGFyYW0ge3N0cmluZ3x1bmRlZmluZWR9IGlnbm9yZVNoYSAtIG9wdGlvbmFsIHNoYSB0byBpZ25vcmVcbiAgICogQHBhcmFtIHtzdHJpbmd8dW5kZWZpbmVkfSByZWYgLSBvcHRpb25hbCByZWZlcmVuY2UgdG8gZmV0Y2hcbiAgICovXG4gIGZ1bmN0aW9uIHJlbG9hZFJlc291cmNlKGlnbm9yZVNoYSA9IG51bGwsIHJlZiA9IG51bGwpIHtcbiAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLnJlbG9hZFJlc291cmNlKCkgaWdub3JlU2hhOiAke2lnbm9yZVNoYX1gIClcbiAgICBjb25zdCBfZmV0Y2hQYXJhbXMgPSB7IC4uLmZldGNoUGFyYW1zIH1cblxuICAgIGlmIChyZWYgJiYgZmV0Y2hQYXJhbXM/LnJlc291cmNlTGluaykge1xuICAgICAgY29uc3Qge1xuICAgICAgICBvd25lcixcbiAgICAgICAgbGFuZ3VhZ2VJZCxcbiAgICAgICAgcmVzb3VyY2VJZCxcbiAgICAgICAgcmVmOiBfcmVmLFxuICAgICAgfSA9IHBhcnNlUmVzb3VyY2VMaW5rKGZldGNoUGFyYW1zLnJlc291cmNlTGluaylcblxuICAgICAgaWYgKHJlZiAhPT0gX3JlZikgeyAvLyBpZiByZWYgY2hhbmdlZCwgdXBkYXRlIHJlc291cmNlbGlua1xuICAgICAgICBjb25zdCBfcmVzb3VyY2VMaW5rID0gZ2V0UmVzb3VyY2VMaW5rKHtcbiAgICAgICAgICBvd25lcixcbiAgICAgICAgICBsYW5ndWFnZUlkLFxuICAgICAgICAgIHJlc291cmNlSWQsXG4gICAgICAgICAgcmVmLFxuICAgICAgICB9KVxuICAgICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLnJlbG9hZFJlc291cmNlKCkgb2xkIHJlZiBpcyBkaWZmZXJlbnQgJHtfcmVmfSwgc3dpdGNoaW5nIHRvIGxvYWQgcmVmOiAke3JlZn0sIG5ldyByZXNvdXJjZUxpbms6ICR7X3Jlc291cmNlTGlua31gIClcbiAgICAgICAgX2ZldGNoUGFyYW1zLnJlc291cmNlTGluayA9IF9yZXNvdXJjZUxpbmtcbiAgICAgIH1cbiAgICB9XG4gICAgZmV0Y2hCb29rKF9mZXRjaFBhcmFtcywgaWdub3JlU2hhKVxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBjdXJyZW50Qm9va1JlZiA9IGZldGNoUGFyYW1zPy5yZWZlcmVuY2U/LnByb2plY3RJZFxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGN1cnJlbnRCb29rUmVmKSB7XG4gICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIGZldGNoZWQgYm9vayBjaGFuZ2VkIHRvICR7Y3VycmVudEJvb2tSZWZ9LCAke3Jlc291cmNlTGlua199YCwgZmV0Y2hQYXJhbXMgKVxuICAgICAgc2V0U3RhdGUoeyBib29rT2JqZWN0czogbnVsbCwgYmlibGVVc2ZtOiBudWxsIH0pXG4gICAgfVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgfSwgW2N1cnJlbnRCb29rUmVmXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgYm9vayByZWYgY2hhbmdlZCB0byAke2Jvb2tJZH0sICR7cmVzb3VyY2VMaW5rX31gKVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgfSwgW2Jvb2tJZF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBleHBlY3RlZEJvb2tJZCA9IGJvb2tJZCB8fCAnJ1xuICAgIGNvbnN0IGZldGNoZWRCb29rU2FtZSA9IGZldGNoZWRCb29rICYmIChmZXRjaGVkQm9vayA9PT0gZXhwZWN0ZWRCb29rSWQpXG4gICAgbGV0IF92ZXJzZXNGb3JSZWYgPSBbXVxuXG4gICAgaWYgKCFmZXRjaGVkQm9va1NhbWUpIHtcbiAgICAgIC8vIGlmIChleHBlY3RlZEJvb2tJZCAmJiBmZXRjaGVkQm9vaykge1xuICAgICAgLy8gICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIGV4cGVjdGVkIGJvb2sgJHtleHBlY3RlZEJvb2tJZH0gYnV0IGZldGNoZWQgYm9vayB3YXMgJHtmZXRjaGVkQm9va30gLSBjbGVhcmluZ2ApXG4gICAgICAvLyB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IF9ib29rT2JqZWN0cyA9IGZldGNoZWRCb29rU2FtZSA/IGJvb2tPYmplY3RzIDogbnVsbFxuICAgICAgX3ZlcnNlc0ZvclJlZiA9IGZldGNoVmVyc2VzRm9yUmVmKF9ib29rT2JqZWN0cylcbiAgICAgIC8vIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgX2Jvb2tPYmplY3RzIGlzICR7ISFfYm9va09iamVjdHN9IGFuZCBib29rcyBhcmUgdGhlIHNhbWUgJHtmZXRjaGVkQm9va31gLCB7IGNvbnRlbnQsIGZldGNoUGFyYW1zIH0pXG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKF92ZXJzZXNGb3JSZWYsIHZlcnNlc0ZvclJlZikpIHtcbiAgICAgIHNldFN0YXRlKHsgdmVyc2VzRm9yUmVmOiBfdmVyc2VzRm9yUmVmIH0pXG4gICAgfVxuICB9LCBbcmVmZXJlbmNlXSlcblxuICByZXR1cm4ge1xuICAgIGJpYmxlVXNmbSxcbiAgICBib29rT2JqZWN0cyxcbiAgICBnZXRWZXJzZXNGb3JSZWY6IF9nZXRWZXJzZXNGb3JSZWYsXG4gICAgcmVmZXJlbmNlOiBmZXRjaFBhcmFtcz8ucmVmZXJlbmNlLFxuICAgIHJlbG9hZFJlc291cmNlLFxuICAgIHJlc291cmNlTGluazogZmV0Y2hQYXJhbXM/LnJlc291cmNlTGluayxcbiAgICByZXNvdXJjZVN0YXRlLCAvLyBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgbGF0ZXN0IGZldGNoZWQgcmVzb3VyY2VcbiAgICByZXNvdXJjZVN0YXR1cywgLy8gc3RhdHVzIGZsYWdzIGZvciBmZXRjaGVkIHJlc291cmNlXG4gICAgdGl0bGUsXG4gICAgdXBkYXRlVmVyc2UsXG4gICAgdmVyc2lvbixcbiAgICB2ZXJzZXNGb3JSZWYsXG4gIH1cbn1cbiJdfQ==
|
|
675
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VTY3JpcHR1cmUudHN4Il0sIm5hbWVzIjpbInVzZUVmZmVjdCIsInVzZVN0YXRlIiwiY29yZSIsInVzZm1qcyIsIkNPTlRFTlRfTk9UX0ZPVU5EX0VSUk9SIiwiRVJST1JfU1RBVEUiLCJJTklUSUFMSVpFRF9TVEFURSIsIklOVkFMSURfTUFOSUZFU1RfRVJST1IiLCJMT0FESU5HX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlNDUklQVFVSRV9OT1RfTE9BREVEX0VSUk9SIiwidXNlRGVlcENvbXBhcmVFZmZlY3QiLCJnZXRWZXJzZXMiLCJpc0VxdWFsIiwiZGVsYXkiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lIiwiZ2V0UmVzb3VyY2VMaW5rIiwicGFyc2VSZXNvdXJjZUxpbmsiLCJTZXJ2ZXJDb25maWciLCJTY3JpcHR1cmVSZXNvdXJjZSIsIlNjcmlwdHVyZVJlZmVyZW5jZSIsInBhcnNlUmVzb3VyY2VNYW5pZmVzdCIsImdldEJyYW5jaE5hbWUiLCJyZXNvdXJjZUxpbmsiLCJicmFuY2giLCJwYXJ0cyIsInNwbGl0IiwibGVuZ3RoIiwiX3BhcnRzIiwiZ2V0VmVyc2VzRm9yUmVmU3RyIiwicmVmU3RyIiwiYm9va09iamVjdHMiLCJsYW5ndWFnZUlkIiwidmVyc2VzIiwiY2hhcHRlcnMiLCJtYXAiLCJ2ZXJzZSIsInZlcnNlRGF0YSIsInZlcnNlT2JqZWN0cyIsInZlcnNlT2JqZWN0c18iLCJvY2N1cnJlbmNlSW5qZWN0VmVyc2VPYmplY3RzIiwiZ2V0VmVyc2VzRm9yUmVmIiwicmVmZXJlbmNlIiwiY2hhcHRlciIsInVzZVNjcmlwdHVyZSIsImNvbmZpZyIsInJlYWR5Rm9yRmV0Y2giLCJyZXNvdXJjZV8iLCJyZXNvdXJjZSIsInJlc291cmNlTGlua18iLCJ3aG9sZUJvb2siLCJiaWJsZVVzZm0iLCJmZXRjaENvdW50IiwiZmV0Y2hlZCIsImZldGNoZWRCb29rIiwiZmV0Y2hQYXJhbXMiLCJpZ25vcmVTaGEiLCJpbml0aWFsaXplZCIsInJlc291cmNlU3RhdGUiLCJjb250ZW50IiwiZmV0Y2hSZXNwb25zZSIsImZldGNoZWRSZXNvdXJjZXMiLCJsb2FkaW5nUmVzb3VyY2UiLCJsb2FkaW5nQ29udGVudCIsInNoYSIsInVybCIsInZlcnNlc0ZvclJlZiIsInN0YXRlIiwic2V0U3RhdGVfIiwib3duZXIiLCJyZWYiLCJib29rSWQiLCJwcm9qZWN0SWQiLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwicHJldlN0YXRlIiwiaW5pdGlhdGVCb29rRmV0Y2giLCJjb25zb2xlIiwibG9nIiwicmVmXyIsInJlc291cmNlSWQiLCJib29rUmVmIiwibmV3RmV0Y2hQYXJhbXMiLCJmZXRjaEJvb2siLCJmZXRjaExpbmsiLCJzaGFUb0JlSWdub3JlZCIsIl9mZXRjaENvdW50IiwicmVzb3VyY2VGcm9tUmVzb3VyY2VMaW5rIiwiX3Jlc291cmNlIiwibWFuaWZlc3QiLCJwcm9qZWN0IiwiZmlsZSIsImVycm9yTXNnIiwid2FybiIsInJlc3BvbnNlIiwiZ2V0UmVzcG9uc2VEYXRhIiwidG9KU09OIiwiZGF0YSIsIm5hbWUiLCJlcnJvciIsInZhbGlkYXRlUmVzcG9uc2UiLCJpc1NhbWVCb29rIiwiZXhwZWN0ZWRCb29rSWQiLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwiZmV0Y2hlZEJyYW5jaCIsImZldGNoaW5nQnJhbmNoIiwiYmlibGVVc2ZtXyIsImZldGNoVmVyc2VzRm9yUmVmIiwidGhlbiIsInRpdGxlIiwidmVyc2lvbiIsImxvYWRpbmciLCJjb250ZW50Tm90Rm91bmRFcnJvciIsInNjcmlwdHVyZU5vdExvYWRlZEVycm9yIiwibWFuaWZlc3ROb3RGb3VuZEVycm9yIiwiaW52YWxpZE1hbmlmZXN0RXJyb3IiLCJyZXNvdXJjZVN0YXR1cyIsImludGlhbGl6ZWQiLCJfZ2V0VmVyc2VzRm9yUmVmIiwiY29udGVudF8iLCJ1cGRhdGVWZXJzZSIsImJvb2tPYmplY3RzXyIsIl9ib29rT2JqZWN0cyIsIm5ld1ZlcnNlc0ZvclJlZiIsInJlbG9hZFJlc291cmNlIiwiX2ZldGNoUGFyYW1zIiwiX3JlZiIsIl9yZXNvdXJjZUxpbmsiLCJjdXJyZW50Qm9va1JlZiIsImZldGNoZWRCb29rU2FtZSIsIl92ZXJzZXNGb3JSZWYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBLFNBQ0VBLFNBREYsRUFFRUMsUUFGRixRQUdPLE9BSFA7QUFJQSxTQUFTQyxJQUFULFFBQXFCLHlCQUFyQjtBQUNBLE9BQU9DLE1BQVAsTUFBbUIsU0FBbkI7QUFDQSxTQUNFQyx1QkFERixFQUVFQyxXQUZGLEVBR0VDLGlCQUhGLEVBSUVDLHNCQUpGLEVBS0VDLGFBTEYsRUFNRUMseUJBTkYsRUFPRUMsMEJBUEYsUUFRTyx1QkFSUDtBQVNBLE9BQU9DLG9CQUFQLE1BQWlDLHlCQUFqQztBQUNBLFNBQVNDLFNBQVQsUUFBMEIsdUJBQTFCO0FBQ0EsT0FBTyxLQUFLQyxPQUFaLE1BQXlCLFlBQXpCO0FBQ0EsU0FBU0MsS0FBVCxRQUFzQixVQUF0QjtBQUNBLFNBQ0VDLG1CQURGLEVBRUVDLDJCQUZGLEVBR0VDLGVBSEYsRUFJRUMsaUJBSkYsUUFLTyw0QkFMUDtBQU1BLFNBQ0VDLFlBREYsRUFFRUMsaUJBRkYsRUFHRUMsa0JBSEYsUUFJTyxVQUpQO0FBS0EsU0FBU0MscUJBQVQsUUFBc0MseUJBQXRDOztBQWlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNDLGFBQVQsQ0FBdUJDLFlBQXZCLEVBQTZDO0FBQzNDLE1BQUlDLE1BQU0sR0FBRyxJQUFiO0FBQ0FELEVBQUFBLFlBQVksR0FBR0EsWUFBWSxJQUFJLEVBQS9CO0FBQ0EsTUFBTUUsS0FBSyxHQUFHRixZQUFZLENBQUNHLEtBQWIsQ0FBbUIsT0FBbkIsQ0FBZDs7QUFFQSxNQUFJRCxLQUFLLENBQUNFLE1BQU4sR0FBZSxDQUFuQixFQUFzQjtBQUFFO0FBQ3RCSCxJQUFBQSxNQUFNLEdBQUdD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LEdBQUcsRUFBcEI7O0FBRUEsUUFBSSxDQUFDRCxlQUFMLEVBQXNCLENBQ3BCO0FBQ0E7QUFDQTtBQUNELEtBSkQsTUFJTztBQUNMLFVBQU1QLFlBQVksR0FBR08sZUFBZSxHQUFHbkcsV0FBSCxHQUFpQixJQUFyRDs7QUFDQW9HLE1BQUFBLGFBQWEsR0FBR3ZCLGlCQUFpQixDQUFDZSxZQUFELENBQWpDLENBRkssQ0FHTDtBQUNEOztBQUVELFFBQUksQ0FBQy9HLE9BQU8sQ0FBQ3VILGFBQUQsRUFBZ0JqRSxZQUFoQixDQUFaLEVBQTJDO0FBQ3pDTyxNQUFBQSxRQUFRLENBQUM7QUFBRVAsUUFBQUEsWUFBWSxFQUFFaUU7QUFBaEIsT0FBRCxDQUFSO0FBQ0Q7QUFDRixHQWxCUSxFQWtCTixDQUFDekYsU0FBRCxDQWxCTSxDQUFUO0FBb0JBLFNBQU87QUFDTFMsSUFBQUEsU0FBUyxFQUFUQSxTQURLO0FBRUxwQixJQUFBQSxXQUFXLEVBQVhBLFdBRks7QUFHTFUsSUFBQUEsZUFBZSxFQUFFOEUsZ0JBSFo7QUFJTDdFLElBQUFBLFNBQVMsRUFBRWEsV0FBRixhQUFFQSxXQUFGLHVCQUFFQSxXQUFXLENBQUViLFNBSm5CO0FBS0xtRixJQUFBQSxjQUFjLEVBQWRBLGNBTEs7QUFNTHRHLElBQUFBLFlBQVksRUFBRWdDLFdBQUYsYUFBRUEsV0FBRix1QkFBRUEsV0FBVyxDQUFFaEMsWUFOdEI7QUFPTG1DLElBQUFBLGFBQWEsRUFBYkEsYUFQSztBQU9VO0FBQ2YyRCxJQUFBQSxjQUFjLEVBQWRBLGNBUks7QUFRVztBQUNoQlAsSUFBQUEsS0FBSyxFQUFMQSxLQVRLO0FBVUxXLElBQUFBLFdBQVcsRUFBWEEsV0FWSztBQVdMVixJQUFBQSxPQUFPLEVBQVBBLE9BWEs7QUFZTDdDLElBQUFBLFlBQVksRUFBWkE7QUFaSyxHQUFQO0FBY0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtaWdub3JlXG5pbXBvcnQge1xuICB1c2VFZmZlY3QsXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNvcmUgfSBmcm9tICdzY3JpcHR1cmUtcmVzb3VyY2VzLXJjbCdcbmltcG9ydCB1c2ZtanMgZnJvbSAndXNmbS1qcydcbmltcG9ydCB7XG4gIENPTlRFTlRfTk9UX0ZPVU5EX0VSUk9SLFxuICBFUlJPUl9TVEFURSxcbiAgSU5JVElBTElaRURfU1RBVEUsXG4gIElOVkFMSURfTUFOSUZFU1RfRVJST1IsXG4gIExPQURJTkdfU1RBVEUsXG4gIE1BTklGRVNUX05PVF9MT0FERURfRVJST1IsXG4gIFNDUklQVFVSRV9OT1RfTE9BREVEX0VSUk9SLFxufSBmcm9tICd0cmFuc2xhdGlvbi1oZWxwcy1yY2wnXG5pbXBvcnQgdXNlRGVlcENvbXBhcmVFZmZlY3QgZnJvbSAndXNlLWRlZXAtY29tcGFyZS1lZmZlY3QnXG5pbXBvcnQgeyBnZXRWZXJzZXMgfSBmcm9tICdiaWJsZS1yZWZlcmVuY2UtcmFuZ2UnXG5pbXBvcnQgKiBhcyBpc0VxdWFsIGZyb20gJ2RlZXAtZXF1YWwnXG5pbXBvcnQgeyBkZWxheSB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IHtcbiAgY2xlYW51cFZlcnNlT2JqZWN0cyxcbiAgZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lLFxuICBnZXRSZXNvdXJjZUxpbmssXG4gIHBhcnNlUmVzb3VyY2VMaW5rLFxufSBmcm9tICcuLi91dGlscy9TY3JpcHR1cmVTZXR0aW5ncydcbmltcG9ydCB7XG4gIFNlcnZlckNvbmZpZyxcbiAgU2NyaXB0dXJlUmVzb3VyY2UsXG4gIFNjcmlwdHVyZVJlZmVyZW5jZSxcbn0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyBwYXJzZVJlc291cmNlTWFuaWZlc3QgfSBmcm9tICcuL3BhcnNlUmVzb3VyY2VNYW5pZmVzdCdcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgLyoqIHJlZmVyZW5jZSBmb3Igc2NyaXB0dXJlICoqL1xuICByZWZlcmVuY2U6IFNjcmlwdHVyZVJlZmVyZW5jZTtcbiAgLyoqIHdoZXJlIHRvIGdldCBkYXRhICoqL1xuICBjb25maWc6IFNlcnZlckNvbmZpZztcbiAgLyoqIG9wdGlvbmFsIGRpcmVjdCBwYXRoIHRvIGJpYmxlIHJlc291cmNlLCBpbiBmb3JtYXQgJHtvd25lcn0vJHtsYW5ndWFnZUlkfS8ke3Byb2plY3RJZH0vJHticmFuY2h9ICoqL1xuICByZXNvdXJjZUxpbms6IHN0cmluZ3x1bmRlZmluZWQ7XG4gIC8qKiBvcHRpb25hbCByZXNvdXJjZSBvYmplY3QgdG8gdXNlIHRvIGJ1aWxkIHJlc291cmNlTGluayAqKi9cbiAgcmVzb3VyY2U6IFNjcmlwdHVyZVJlc291cmNlfHVuZGVmaW5lZDtcbiAgLyoqIGlmIHRydWUgdGhlbiBmZXRjaCB0aGUgZW50aXJlIGJvb2sgKi9cbiAgd2hvbGVCb29rOiBib29sZWFuO1xuICAvKiogaWYgdHJ1ZSB0aGVuIHNldHRpbmdzIGFyZSByZWFkeSBmb3IgZmV0Y2hpbmcgZGF0YSAqL1xuICByZWFkeUZvckZldGNoOiBib29sZWFuO1xufVxuXG4vKipcbiAqIGV4dHJhY3QgYnJhbmNoIGZyb20gcmVzb3VyY2UgbGlua1xuICogQHBhcmFtIHJlc291cmNlTGlua1xuICovXG5mdW5jdGlvbiBnZXRCcmFuY2hOYW1lKHJlc291cmNlTGluazogc3RyaW5nKSB7XG4gIGxldCBicmFuY2ggPSBudWxsXG4gIHJlc291cmNlTGluayA9IHJlc291cmNlTGluayB8fCAnJ1xuICBjb25zdCBwYXJ0cyA9IHJlc291cmNlTGluay5zcGxpdCgnP3JlZj0nKVxuXG4gIGlmIChwYXJ0cy5sZW5ndGggPiAxKSB7IC8vIGlmIHJlZiBwYXJhbWV0ZXIgZm91bmQsIGdldCBicmFuY2ggbmFtZSBhZnRlclxuICAgIGJyYW5jaCA9IHBhcnRzPy5bMV1cbiAgfSBlbHNlIHsgLy8gZmFsbCBiYWNrIHRvIHVzaW5nIHVzZVJzcmMgZm9ybWF0IHN1Y2ggYXMgXCJ1bmZvbGRpbmdXb3JkL2VuL3VzdC9tYXN0ZXJcIlxuICAgIGNvbnN0IF9wYXJ0cyA9IHJlc291cmNlTGluay5zcGxpdCgnLycpXG4gICAgYnJhbmNoID0gX3BhcnRzPy5bM11cbiAgfVxuICByZXR1cm4gYnJhbmNoXG59XG5cbi8qKlxuICogZ2V0IHRoZSB2ZXJzZSBvYmplY3RzIGZvciB0aGUgcmVmZXJlbmNlIHN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IHJlZlN0ciAtIGluIGZvcm1hdCA8Y2hhcHRlcj46PHZlcnNlPlxuICogQHBhcmFtIHtvYmplY3R9IGJvb2tPYmplY3RzIC0gcGFyc2VkIHVzZm0gZm9yIGJvb2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBsYW5ndWFnZUlkXG4gKiBAcmV0dXJuIHthcnJheXxudWxsfSAtIG9mIHZlcnNlT2JqZWN0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmVyc2VzRm9yUmVmU3RyKHJlZlN0ciwgYm9va09iamVjdHMsIGxhbmd1YWdlSWQpIHtcbiAgaWYgKGJvb2tPYmplY3RzKSB7XG4gICAgbGV0IHZlcnNlcyA9IGdldFZlcnNlcyhib29rT2JqZWN0cy5jaGFwdGVycywgcmVmU3RyKVxuXG4gICAgaWYgKGxhbmd1YWdlSWQgPT09ICdlbC14LWtvaW5lJyB8fCBsYW5ndWFnZUlkID09PSAnaGJvJykge1xuICAgICAgdmVyc2VzID0gdmVyc2VzLm1hcCh2ZXJzZSA9PiB7XG4gICAgICAgIGlmICggdmVyc2U/LnZlcnNlRGF0YT8udmVyc2VPYmplY3RzKSB7XG4gICAgICAgICAgbGV0IHZlcnNlT2JqZWN0c18gPSBjb3JlLm9jY3VycmVuY2VJbmplY3RWZXJzZU9iamVjdHMoIHZlcnNlLnZlcnNlRGF0YS52ZXJzZU9iamVjdHMpXG4gICAgICAgICAgdmVyc2VPYmplY3RzXyA9IGNsZWFudXBWZXJzZU9iamVjdHModmVyc2VPYmplY3RzXylcbiAgICAgICAgICB2ZXJzZS52ZXJzZURhdGEudmVyc2VPYmplY3RzID0gdmVyc2VPYmplY3RzX1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2ZXJzZVxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyc2VzXG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuLyoqXG4gKiBnZXQgdGhlIHZlcnNlIG9iamVjdHMgZm9yIHRoZSByZWZlcmVuY2Ugb2JqZWN0XG4gKiBAcGFyYW0ge29iamVjdH0gcmVmZXJlbmNlXG4gKiBAcGFyYW0ge29iamVjdH0gYm9va09iamVjdHMgLSBwYXJzZWQgdXNmbSBmb3IgYm9va1xuICogQHBhcmFtIHtzdHJpbmd9IGxhbmd1YWdlSWRcbiAqIEByZXR1cm4ge2FycmF5fG51bGx9IC0gb2YgdmVyc2VPYmplY3RzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWZXJzZXNGb3JSZWYocmVmZXJlbmNlLCBib29rT2JqZWN0cywgbGFuZ3VhZ2VJZCkge1xuICBjb25zdCByZWZTdHIgPSBgJHtyZWZlcmVuY2UuY2hhcHRlcn06JHtyZWZlcmVuY2UudmVyc2V9YFxuICByZXR1cm4gZ2V0VmVyc2VzRm9yUmVmU3RyKHJlZlN0ciwgYm9va09iamVjdHMsIGxhbmd1YWdlSWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTY3JpcHR1cmUoeyAvLyBob29rIGZvciBmZXRjaGluZyBzY3JpcHR1cmVcbiAgY29uZmlnLFxuICByZWFkeUZvckZldGNoLFxuICByZWZlcmVuY2UsXG4gIHJlc291cmNlOiByZXNvdXJjZV8sXG4gIHJlc291cmNlTGluazogcmVzb3VyY2VMaW5rXyxcbiAgd2hvbGVCb29rID0gZmFsc2UsXG59IDogUHJvcHMpIHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV9dID0gdXNlU3RhdGUoe1xuICAgIGJpYmxlVXNmbTogbnVsbCxcbiAgICBib29rT2JqZWN0czogbnVsbCxcbiAgICBmZXRjaENvdW50OiAwLFxuICAgIGZldGNoZWQ6IGZhbHNlLFxuICAgIGZldGNoZWRCb29rOiAnJyxcbiAgICBmZXRjaFBhcmFtczoge1xuICAgICAgY29uZmlnOiB7fSxcbiAgICAgIHJlZmVyZW5jZToge30sXG4gICAgICByZXNvdXJjZUxpbms6ICcnLFxuICAgIH0sXG4gICAgaWdub3JlU2hhOiBudWxsLFxuICAgIGluaXRpYWxpemVkOiBmYWxzZSxcbiAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICBib29rT2JqZWN0czogbnVsbCxcbiAgICAgIGJpYmxlVXNmbTogbnVsbCxcbiAgICAgIGNvbnRlbnQ6IG51bGwsXG4gICAgICBmZXRjaFJlc3BvbnNlOiBudWxsLFxuICAgICAgZmV0Y2hlZFJlc291cmNlczogbnVsbCxcbiAgICAgIGxvYWRpbmdSZXNvdXJjZTogZmFsc2UsXG4gICAgICBsb2FkaW5nQ29udGVudDogZmFsc2UsXG4gICAgICByZXNvdXJjZTogbnVsbCxcbiAgICAgIHNoYTogbnVsbCxcbiAgICAgIHVybDogbnVsbCxcbiAgICB9LFxuICAgIHZlcnNlc0ZvclJlZjogW10sXG4gIH0pXG5cbiAgY29uc3Qge1xuICAgIG93bmVyLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgYnJhbmNoID0gJ21hc3RlcicsXG4gICAgcmVmID0gbnVsbCxcbiAgfSA9IHJlc291cmNlXyB8fCB7fVxuXG4gIGNvbnN0IHsgcHJvamVjdElkOiBib29rSWR9ID0gcmVmZXJlbmNlIHx8IHt9XG5cbiAgY29uc3Qge1xuICAgIGJpYmxlVXNmbSxcbiAgICBib29rT2JqZWN0cyxcbiAgICBmZXRjaENvdW50LFxuICAgIGZldGNoZWQsXG4gICAgZmV0Y2hlZEJvb2ssXG4gICAgZmV0Y2hQYXJhbXMsXG4gICAgaWdub3JlU2hhLFxuICAgIGluaXRpYWxpemVkLFxuICAgIHJlc291cmNlU3RhdGUsXG4gICAgdmVyc2VzRm9yUmVmLFxuICB9ID0gc3RhdGVcbiAgY29uc3QgZmV0Y2hlZFJlc291cmNlcyA9IHJlc291cmNlU3RhdGU/LmZldGNoZWRSZXNvdXJjZXNcblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXdTdGF0ZSkge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlYWR5Rm9yRmV0Y2gpIHtcbiAgICAgIGluaXRpYXRlQm9va0ZldGNoKClcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbml0aWF0ZUJvb2tGZXRjaCgpIHtcbiAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgLSByZWFkeUZvckZldGNoIHRydWUsIGluaXRpYWxpemluZ2ApXG4gICAgICBsZXQgcmVzb3VyY2VMaW5rID0gcmVhZHlGb3JGZXRjaCAmJiByZXNvdXJjZUxpbmtfXG5cbiAgICAgIGlmICghcmVzb3VyY2VMaW5rXyAmJiByZXNvdXJjZV8pIHtcbiAgICAgICAgY29uc3QgcmVmXyA9IHJlZiB8fCBicmFuY2hcblxuICAgICAgICByZXNvdXJjZUxpbmsgPSBnZXRSZXNvdXJjZUxpbmsoe1xuICAgICAgICAgIG93bmVyLFxuICAgICAgICAgIGxhbmd1YWdlSWQsXG4gICAgICAgICAgcmVzb3VyY2VJZDogYm9va0lkLFxuICAgICAgICAgIHJlZjogcmVmXyxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgYm9va1JlZiA9IHsgLi4ucmVmZXJlbmNlIH1cblxuICAgICAgaWYgKHdob2xlQm9vaykge1xuICAgICAgICBkZWxldGUgYm9va1JlZi5jaGFwdGVyIC8vIHJlbW92ZSB0aGUgY2hhcHRlciBhbmQgdmVyc2Ugc28gdGhlIHdob2xlIGJvb2sgaXMgZmV0Y2hlZFxuICAgICAgICBkZWxldGUgYm9va1JlZi52ZXJzZVxuICAgICAgfVxuXG4gICAgICBpZiAocmVzb3VyY2VMaW5rICE9PSBmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgLSBmb3IgJHtyZXNvdXJjZV8/LnByb2plY3RJZH0gcmVzb3VyY2VMaW5rIGlzIG5vdyAke3Jlc291cmNlTGlua30gYW5kIHJlc291cmNlTGlua189JHtyZXNvdXJjZUxpbmtffWApXG4gICAgICB9IGVsc2UgaWYgKGJvb2tSZWYgIT09IGZldGNoUGFyYW1zPy5yZWZlcmVuY2UpIHtcbiAgICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSAtIGJvb2sgY2hhbmdlZCB0byAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZXNvdXJjZUxpbmsgaXMgbm93ICR7cmVzb3VyY2VMaW5rfWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5ld0ZldGNoUGFyYW1zID0ge1xuICAgICAgICBjb25maWcsXG4gICAgICAgIHJlZmVyZW5jZTogYm9va1JlZixcbiAgICAgICAgcmVzb3VyY2VMaW5rLFxuICAgICAgfVxuXG4gICAgICBpZiAoIWlzRXF1YWwobmV3RmV0Y2hQYXJhbXMsIGZldGNoUGFyYW1zKSkge1xuICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgZmV0Y2hQYXJhbXM6IG5ld0ZldGNoUGFyYW1zLFxuICAgICAgICAgIGZldGNoZWQ6IGZhbHNlLFxuICAgICAgICAgIGluaXRpYWxpemVkOiB0cnVlLFxuICAgICAgICB9KVxuXG4gICAgICAgIGZldGNoQm9vayhuZXdGZXRjaFBhcmFtcylcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICByZWFkeUZvckZldGNoLFxuICAgIG93bmVyLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgYm9va0lkLFxuICAgIGJyYW5jaCxcbiAgICByZWYsXG4gIF0pXG5cbiAgLyoqXG4gICAqIGRvIGEgZmV0Y2ggb2YgbWFuaWZlc3QgYW5kIGJvb2sgb2YgdGhlIGJpYmxlIHNwZWNpZmllZCBpbiBmZXRjaFBhcmFtc1xuICAgKiBAcGFyYW0ge29iamVjdH0gZmV0Y2hQYXJhbXNcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlnbm9yZVNoYSAtIG9wdGlvbmFsIHByZXZpb3VzIHNoYSAtIGlnbm9yZSByZXNwb25zZXMgdGhhdCBjYW1lIGJhY2sgZm9yIHRoaXMgcHJldmlvdXMgYm9vayBjb21taXRcbiAgICovXG4gIGFzeW5jIGZ1bmN0aW9uIGZldGNoQm9vayhmZXRjaFBhcmFtcywgaWdub3JlU2hhID0gbnVsbCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBmZXRjaExpbmsgPSBgJHtmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rfS8ke2ZldGNoUGFyYW1zPy5yZWZlcmVuY2U/LnByb2plY3RJZH1gXG5cbiAgICAgIGlmIChpZ25vcmVTaGEpIHtcbiAgICAgICAgY29uc3Qgc2hhVG9CZUlnbm9yZWQgPSBpZ25vcmVTaGEgJiYgaWdub3JlU2hhID09PSByZXNvdXJjZVN0YXRlPy5zaGEgLy8gd2Ugd2lsbCByZWxvYWQgaWYgaWdub3JlU2hhIGdpdmVuIGFuZCBpdCBtYXRjaGVzIGN1cnJlbnQgc2hhXG4gICAgICAgIGlmICgoZmV0Y2hMaW5rID09PSByZXNvdXJjZVN0YXRlPy5yZXNvdXJjZT8ucmVzb3VyY2VMaW5rKSAmJiAhc2hhVG9CZUlnbm9yZWQpIHsgLy8gc2VlIGlmIHdlIGFscmVhZHkgZmV0Y2hlZCB0aGlzXG4gICAgICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS5mZXRjaEJvb2soKSAtIEFscmVhZHkgZmV0Y2hpbmcgcmVzb3VyY2VMaW5rICR7cmVzb3VyY2VTdGF0ZT8ucmVzb3VyY2U/LnJlc291cmNlTGlua30gYW5kIGlnbm9yZVNoYT0ke2lnbm9yZVNoYX1gLCBmZXRjaFBhcmFtcylcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBfZmV0Y2hDb3VudCA9IGZldGNoQ291bnQgKyAxXG4gICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLmZldGNoQm9vaygpIC0gRkVUQ0hJTkcgYmlibGUgJHtyZXNvdXJjZV8/LnByb2plY3RJZH0gcmVzb3VyY2VMaW5rIGlzIG5vdyAke2ZldGNoUGFyYW1zPy5yZXNvdXJjZUxpbmt9IGFuZCBpZ25vcmVTaGE9JHtpZ25vcmVTaGF9YCwgZmV0Y2hQYXJhbXMpXG4gICAgICBzZXRTdGF0ZSh7XG4gICAgICAgIGZldGNoQ291bnQ6IF9mZXRjaENvdW50LFxuICAgICAgICBmZXRjaGVkOiBmYWxzZSxcbiAgICAgICAgaWdub3JlU2hhLFxuICAgICAgICByZXNvdXJjZVN0YXRlOiB7IGxvYWRpbmdSZXNvdXJjZTogdHJ1ZSB9LFxuICAgICAgfSlcblxuICAgICAgLy8gZmV0Y2ggbWFuaWZlc3QgZGF0YVxuICAgICAgYXdhaXQgZGVsYXkoMTAwKVxuICAgICAgY29uc3QgX3Jlc291cmNlID0gYXdhaXQgY29yZS5yZXNvdXJjZUZyb21SZXNvdXJjZUxpbmsoZmV0Y2hQYXJhbXMpXG5cbiAgICAgIGlmICghX3Jlc291cmNlPy5tYW5pZmVzdCB8fCAhX3Jlc291cmNlPy5wcm9qZWN0Py5maWxlKSB7XG4gICAgICAgIGNvbnN0IGVycm9yTXNnID0gX3Jlc291cmNlPy5tYW5pZmVzdCA/ICdwYXJzaW5nIHJlc291cmNlIG1hbmlmZXN0JyA6ICdsb2FkaW5nIHJlc291cmNlIG1hbmlmZXN0J1xuICAgICAgICBjb25zb2xlLndhcm4oYHVzZVNjcmlwdHVyZS5mZXRjaEJvb2soKSAtIGVycm9yICR7ZXJyb3JNc2d9YCwgZmV0Y2hQYXJhbXMgKVxuICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgcmVzb3VyY2VTdGF0ZToge1xuICAgICAgICAgICAgbG9hZGluZ1Jlc291cmNlOiBmYWxzZSxcbiAgICAgICAgICAgIHJlc291cmNlOiBfcmVzb3VyY2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUuZmV0Y2hCb29rKCkgLSBMT0FERUQgYmlibGUgbWFuaWZlc3QsIGZldGNoaW5nIGJvb2sgJHtyZXNvdXJjZV8/LnByb2plY3RJZH0gcmVzb3VyY2VMaW5rIGlzIG5vdyAke2ZldGNoUGFyYW1zPy5yZXNvdXJjZUxpbmt9IGFuZCByZXNvdXJjZUxpbmtfPSR7ZmV0Y2hQYXJhbXM/LnJlc291cmNlTGlua199YCwgZmV0Y2hQYXJhbXMpXG4gICAgICBhd2FpdCBkZWxheSgxMDApXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IF9yZXNvdXJjZT8ucHJvamVjdD8uZmlsZSgpXG4gICAgICAvLyBwYXJzZSBib29rIHVzZm1cbiAgICAgIGNvbnN0IGJpYmxlVXNmbSA9IHJlc3BvbnNlICYmIGNvcmUuZ2V0UmVzcG9uc2VEYXRhKHJlc3BvbnNlKVxuICAgICAgYXdhaXQgZGVsYXkoMTAwKVxuICAgICAgY29uc3QgYm9va09iamVjdHMgPSBiaWJsZVVzZm0gJiYgdXNmbWpzLnRvSlNPTihiaWJsZVVzZm0pIC8vIGNvbnZlcnQgdG8gYmlibGUgb2JqZWN0c1xuXG4gICAgICBpZiAoIWJvb2tPYmplY3RzKSB7XG4gICAgICAgIGNvbnN0IGVycm9yTXNnID0gYmlibGVVc2ZtID8gJ2ZldGNoaW5nIGJvb2sgb2YgdGhlIGJpYmxlJyA6ICdwYXJzaW5nIGJvb2sgb2YgdGhlIGJpYmxlJ1xuICAgICAgICBjb25zb2xlLndhcm4oYHVzZVNjcmlwdHVyZS5mZXRjaEJvb2soKSAtIGVycm9yICR7ZXJyb3JNc2d9YCwgZmV0Y2hQYXJhbXMgKVxuICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgcmVzb3VyY2VTdGF0ZToge1xuICAgICAgICAgICAgbG9hZGluZ1Jlc291cmNlOiBmYWxzZSxcbiAgICAgICAgICAgIHJlc291cmNlOiBfcmVzb3VyY2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgbmFtZSwgc2hhLCB1cmwgfSA9IHJlc3BvbnNlPy5kYXRhIHx8IHt9XG5cbiAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUuZmV0Y2hCb29rKCkgLSBMT0FERUQgYmlibGUgYm9vayAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZXNvdXJjZUxpbmsgaXMgbm93ICR7ZmV0Y2hQYXJhbXM/LnJlc291cmNlTGlua30gYW5kIHJlc291cmNlTGlua189JHtmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rX31gLCBmZXRjaFBhcmFtcylcbiAgICAgIHNldFN0YXRlKFxuICAgICAgICB7XG4gICAgICAgICAgcmVzb3VyY2VTdGF0ZToge1xuICAgICAgICAgICAgbG9hZGluZ1Jlc291cmNlOiBmYWxzZSxcbiAgICAgICAgICAgIGZldGNoZWRSZXNvdXJjZXM6IHtcbiAgICAgICAgICAgICAgLi4uX3Jlc291cmNlLFxuICAgICAgICAgICAgICBiaWJsZVVzZm0sXG4gICAgICAgICAgICAgIGJvb2tPYmplY3RzLFxuICAgICAgICAgICAgICBmZXRjaENvdW50OiBfZmV0Y2hDb3VudCxcbiAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgcmVmZXJlbmNlOiBmZXRjaFBhcmFtcz8ucmVmZXJlbmNlLFxuICAgICAgICAgICAgICBzaGEsXG4gICAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIClcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGB1c2VTY3JpcHR1cmUuZmV0Y2hCb29rKCkgLSBoYXJkIGVycm9yIGxvYWRpbmcgcmVzb3VyY2VgLCBmZXRjaFBhcmFtcywgZSApXG4gICAgICBzZXRTdGF0ZSh7XG4gICAgICAgIHJlc291cmNlU3RhdGU6IHtcbiAgICAgICAgICBsb2FkaW5nUmVzb3VyY2U6IGZhbHNlLFxuICAgICAgICAgIHJlc291cmNlOiBudWxsLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgLSBmb3IgJHtyZXNvdXJjZV8/LnByb2plY3RJZH0gcmVhZHlGb3JGZXRjaCBpcyBub3cgJHtyZWFkeUZvckZldGNofWApXG4gIH0sIFtyZWFkeUZvckZldGNoXSlcblxuICAvKipcbiAgICogbWFrZSBzdXJlIGxhc3QgZmV0Y2ggcmVzcG9uc2UgaXMgZm9yIGN1cnJlbnQgYm9vay9icmFuY2hcbiAgICovXG4gIGZ1bmN0aW9uIHZhbGlkYXRlUmVzcG9uc2UoKSB7XG4gICAgbGV0IGlzU2FtZUJvb2sgPSBmYWxzZVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBleHBlY3RlZEJvb2tJZCA9IGJvb2tJZCB8fCAnenp6J1xuICAgIGNvbnN0IGZldGNoZWRCb29rID0gZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lKGZldGNoZWRSZXNvdXJjZXM/Lm5hbWUpXG4gICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS52YWxpZGF0ZVJlc3BvbnNlKCkgLSBDdXJyZW50IGJvb2tJZCBpcyAke2Jvb2tJZH0gYW5kIHNlZWluZyAke2ZldGNoZWRCb29rfSBpbiBVU0ZNYClcbiAgICBpc1NhbWVCb29rID0gZmV0Y2hlZEJvb2s/LnRvTG93ZXJDYXNlKCk/LmluY2x1ZGVzKGJvb2tJZClcblxuICAgIGNvbnN0IHNoYSA9IGZldGNoZWRSZXNvdXJjZXM/LnNoYSB8fCBudWxsXG4gICAgY29uc3QgdXJsID0gZmV0Y2hlZFJlc291cmNlcz8udXJsIHx8IG51bGxcblxuICAgIGlmIChpc1NhbWVCb29rKSB7IC8vIGFsc28gbWFrZSBzdXJlIGl0IGlzIHRoZSBzYW1lIGJyYW5jaFxuICAgICAgY29uc3QgZmV0Y2hlZEJyYW5jaCA9IGdldEJyYW5jaE5hbWUodXJsKVxuICAgICAgY29uc3QgZmV0Y2hpbmdCcmFuY2ggPSBnZXRCcmFuY2hOYW1lKGZldGNoUGFyYW1zPy5yZXNvdXJjZUxpbmspXG5cbiAgICAgIGlmIChmZXRjaGVkQnJhbmNoICE9PSBmZXRjaGluZ0JyYW5jaCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLnZhbGlkYXRlUmVzcG9uc2UoKSBpbnZhbGlkIGJyYW5jaCwgZXhwZWN0ZWQgYnJhbmNoIGlzICR7ZmV0Y2hpbmdCcmFuY2h9LCBidXQgZmV0Y2hlZEJyYW5jaCBpcyAke2ZldGNoZWRCcmFuY2h9YCwgeyBzaGEsIHVybCB9KVxuICAgICAgICBpc1NhbWVCb29rID0gZmFsc2VcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS52YWxpZGF0ZVJlc3BvbnNlKCkgLSAgaW52YWxpZCBib29rLCBleHBlY3RlZEJvb2tJZCBpcyAke2V4cGVjdGVkQm9va0lkfSwgYnV0IHJlY2VpdmVkIGJvb2sgbmFtZSAke2ZldGNoZWRCb29rfWAsIHsgc2hhLCB1cmwgfSlcbiAgICB9XG5cbiAgICBpZiAoaWdub3JlU2hhID09PSBzaGEpIHtcbiAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUudmFsaWRhdGVSZXNwb25zZSgpIC0gdGhlIHNoYSBpcyB0aGUgc2FtZSBhcyB0aGUgaWdub3JlIHNoYSAke3NoYX1gLCB7IHNoYSwgdXJsIH0pXG4gICAgICBpc1NhbWVCb29rID0gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoaXNTYW1lQm9vaykge1xuICAgICAgY29uc3QgYmlibGVVc2ZtXyA9IGZldGNoZWRSZXNvdXJjZXM/LmJpYmxlVXNmbVxuICAgICAgY29uc3QgYm9va09iamVjdHMgPSBmZXRjaGVkUmVzb3VyY2VzPy5ib29rT2JqZWN0c1xuICAgICAgY29uc3QgdmVyc2VzRm9yUmVmID0gZmV0Y2hWZXJzZXNGb3JSZWYoYm9va09iamVjdHMpXG5cbiAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUudmFsaWRhdGVSZXNwb25zZSgpIC0gY29ycmVjdCBib29rLCBleHBlY3RlZEJvb2tJZCBpcyAke2V4cGVjdGVkQm9va0lkfWAsIHsgc2hhLCB1cmwgfSlcbiAgICAgIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgICAgICBiaWJsZVVzZm06IGJpYmxlVXNmbV8sXG4gICAgICAgIGJvb2tPYmplY3RzLFxuICAgICAgICBmZXRjaGVkOiB0cnVlLFxuICAgICAgICBmZXRjaGVkQm9vazogZXhwZWN0ZWRCb29rSWQsXG4gICAgICAgIGlnbm9yZVNoYTogbnVsbCxcbiAgICAgICAgcmVzb3VyY2VTdGF0ZToge1xuICAgICAgICAgIGJvb2tPYmplY3RzLFxuICAgICAgICAgIGJpYmxlVXNmbTogYmlibGVVc2ZtXyxcbiAgICAgICAgICBsb2FkaW5nUmVzb3VyY2U6IGZhbHNlLFxuICAgICAgICAgIGxvYWRpbmdDb250ZW50OiBmYWxzZSxcbiAgICAgICAgICByZXNvdXJjZTogZmV0Y2hlZFJlc291cmNlcyxcbiAgICAgICAgICBzaGEsXG4gICAgICAgICAgdXJsLFxuICAgICAgICB9LFxuICAgICAgICB2ZXJzZXNGb3JSZWYsXG4gICAgICB9XG5cbiAgICAgIHNldFN0YXRlKG5ld1N0YXRlKVxuICAgIH1cbiAgfVxuXG4gIHVzZURlZXBDb21wYXJlRWZmZWN0KCgpID0+IHsgLy8gdmFsaWRhdGUgcmVzcG9uc2UgdG8gbWFrZSBzdXJlIGZyb20gbGF0ZXN0IHJlcXVlc3RcbiAgICBpZiAocmVhZHlGb3JGZXRjaCAmJiBmZXRjaGVkUmVzb3VyY2VzKSB7XG4gICAgICBpZiAoIWZldGNoZWQgJiYgZmV0Y2hlZFJlc291cmNlcz8uZmV0Y2hDb3VudCA9PT0gZmV0Y2hDb3VudCkge1xuICAgICAgICBkZWxheSg1MDApLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHZhbGlkYXRlUmVzcG9uc2UoKVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW3sgcmVhZHlGb3JGZXRjaCwgZmV0Y2hlZFJlc291cmNlcyB9XSlcblxuICBjb25zdCByZXNvdXJjZSA9IHJlc291cmNlU3RhdGU/LnJlc291cmNlXG4gIGNvbnN0IHsgdGl0bGUsIHZlcnNpb24gfSA9IHBhcnNlUmVzb3VyY2VNYW5pZmVzdChyZXNvdXJjZSlcbiAgY29uc3QgbG9hZGluZyA9IHJlc291cmNlU3RhdGU/LmxvYWRpbmdSZXNvdXJjZSB8fCByZXNvdXJjZVN0YXRlPy5sb2FkaW5nQ29udGVudCB8fCAhcmVhZHlGb3JGZXRjaFxuICBjb25zdCBjb250ZW50Tm90Rm91bmRFcnJvciA9ICFyZXNvdXJjZVN0YXRlPy5iaWJsZVVzZm1cbiAgY29uc3Qgc2NyaXB0dXJlTm90TG9hZGVkRXJyb3IgPSAhcmVzb3VyY2VTdGF0ZT8uYm9va09iamVjdHNcbiAgY29uc3QgbWFuaWZlc3ROb3RGb3VuZEVycm9yID0gIXJlc291cmNlPy5tYW5pZmVzdFxuICBjb25zdCBpbnZhbGlkTWFuaWZlc3RFcnJvciA9ICF0aXRsZSB8fCAhdmVyc2lvbiB8fCAhbGFuZ3VhZ2VJZFxuICBjb25zdCBlcnJvciA9IHJlYWR5Rm9yRmV0Y2ggJiYgaW5pdGlhbGl6ZWQgJiYgIWxvYWRpbmcgJiZcbiAgICAoY29udGVudE5vdEZvdW5kRXJyb3IgfHwgc2NyaXB0dXJlTm90TG9hZGVkRXJyb3IgfHwgbWFuaWZlc3ROb3RGb3VuZEVycm9yIHx8IGludmFsaWRNYW5pZmVzdEVycm9yKVxuICBjb25zdCByZXNvdXJjZVN0YXR1cyA9IHtcbiAgICBbTE9BRElOR19TVEFURV06IGxvYWRpbmcsXG4gICAgW0NPTlRFTlRfTk9UX0ZPVU5EX0VSUk9SXTogY29udGVudE5vdEZvdW5kRXJyb3IsXG4gICAgW1NDUklQVFVSRV9OT1RfTE9BREVEX0VSUk9SXTogc2NyaXB0dXJlTm90TG9hZGVkRXJyb3IsXG4gICAgW01BTklGRVNUX05PVF9MT0FERURfRVJST1JdOiBtYW5pZmVzdE5vdEZvdW5kRXJyb3IsXG4gICAgW0lOVkFMSURfTUFOSUZFU1RfRVJST1JdOiBpbnZhbGlkTWFuaWZlc3RFcnJvcixcbiAgICBbRVJST1JfU1RBVEVdOiBlcnJvcixcbiAgICBbSU5JVElBTElaRURfU1RBVEVdOiBpbml0aWFsaXplZCxcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFyZWFkeUZvckZldGNoKSB7XG4gICAgICBpZiAoaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgc2V0U3RhdGUoeyBpbnRpYWxpemVkOiBmYWxzZSB9KVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIWluaXRpYWxpemVkKSB7XG4gICAgICBpZiAobG9hZGluZykgeyAvLyBvbmNlIGZpcnN0IGxvYWQgaGFzIGJlZ3VuLCB3ZSBhcmUgaW5pdGlhbGl6ZWRcbiAgICAgICAgc2V0U3RhdGUoeyBpbnRpYWxpemVkOiB0cnVlIH0pXG4gICAgICB9XG4gICAgfVxuICB9LCBbbG9hZGluZywgcmVhZHlGb3JGZXRjaF0pXG5cbiAgLyoqXG4gICAqIGdldCB2ZXJzZXMgZm9yIHJlZlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVmU3RyXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZW50X1xuICAgKi9cbiAgZnVuY3Rpb24gX2dldFZlcnNlc0ZvclJlZihyZWZTdHIsIGNvbnRlbnRfID0gYm9va09iamVjdHMpIHtcbiAgICBpZiAoY29udGVudF8pIHtcbiAgICAgIHJldHVybiBnZXRWZXJzZXNGb3JSZWZTdHIocmVmU3RyLCBjb250ZW50XywgbGFuZ3VhZ2VJZClcbiAgICB9XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIC8qKlxuICAgKiB1cGRhdGUgdmVyc2UgZGF0YSBmb3IgY3VycmVudCBib29rXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaGFwdGVyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2ZXJzZVxuICAgKiBAcGFyYW0ge29iamVjdH0gdmVyc2VEYXRhXG4gICAqL1xuICBmdW5jdGlvbiB1cGRhdGVWZXJzZShjaGFwdGVyLCB2ZXJzZSwgdmVyc2VEYXRhKSB7XG4gICAgaWYgKGJvb2tPYmplY3RzKSB7XG4gICAgICBjb25zdCBib29rT2JqZWN0c18gPSB7IC4uLmJvb2tPYmplY3RzIH0gLy8gc2hhbGxvdyBjb3B5XG5cbiAgICAgIGlmIChib29rT2JqZWN0c18/LmNoYXB0ZXJzKSB7XG4gICAgICAgIGJvb2tPYmplY3RzXy5jaGFwdGVycyA9IHsgLi4uYm9va09iamVjdHNfLmNoYXB0ZXJzIH0gLy8gc2hhbGxvdyBjb3B5IGNoYXB0ZXJzXG5cbiAgICAgICAgaWYgKGJvb2tPYmplY3RzXy5jaGFwdGVyc1tjaGFwdGVyXSkge1xuICAgICAgICAgIGJvb2tPYmplY3RzXy5jaGFwdGVyc1tjaGFwdGVyXSA9IHsgLi4uYm9va09iamVjdHNfLmNoYXB0ZXJzW2NoYXB0ZXJdIH0gLy8gc2hhbGxvdyBjb3B5IHZlcnNlc1xuICAgICAgICAgIGJvb2tPYmplY3RzXy5jaGFwdGVyc1tjaGFwdGVyXVt2ZXJzZV0gPSB2ZXJzZURhdGFcbiAgICAgICAgICBzZXRTdGF0ZSh7IGJvb2tPYmplY3RzOiBib29rT2JqZWN0c18gfSlcbiAgICAgICAgICByZXR1cm4gYm9va09iamVjdHNfXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgdGhlIHZlcnNlcyBmb3IgY3VycmVudCByZWZlcmVuY2Ugb3IgcmVmZXJlbmNlIHJhbmdlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBfYm9va09iamVjdHNcbiAgICovXG4gIGZ1bmN0aW9uIGZldGNoVmVyc2VzRm9yUmVmKF9ib29rT2JqZWN0cyA9IGJvb2tPYmplY3RzKSB7XG4gICAgbGV0IG5ld1ZlcnNlc0ZvclJlZiA9IFtdXG5cbiAgICBpZiAoX2Jvb2tPYmplY3RzKSB7XG4gICAgICBuZXdWZXJzZXNGb3JSZWYgPSBnZXRWZXJzZXNGb3JSZWYocmVmZXJlbmNlLCBfYm9va09iamVjdHMsIGxhbmd1YWdlSWQpXG4gICAgICByZXR1cm4gbmV3VmVyc2VzRm9yUmVmXG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIC8qKlxuICAgKiBmb3JjZSByZWxvYWQgb2YgcmVzb3VyY2VcbiAgICogQHBhcmFtIHtzdHJpbmd8dW5kZWZpbmVkfSBpZ25vcmVTaGEgLSBvcHRpb25hbCBzaGEgdG8gaWdub3JlXG4gICAqIEBwYXJhbSB7c3RyaW5nfHVuZGVmaW5lZH0gcmVmIC0gb3B0aW9uYWwgcmVmZXJlbmNlIHRvIGZldGNoXG4gICAqL1xuICBmdW5jdGlvbiByZWxvYWRSZXNvdXJjZShpZ25vcmVTaGEgPSBudWxsLCByZWYgPSBudWxsKSB7XG4gICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS5yZWxvYWRSZXNvdXJjZSgpIGlnbm9yZVNoYTogJHtpZ25vcmVTaGF9YCApXG4gICAgY29uc3QgX2ZldGNoUGFyYW1zID0geyAuLi5mZXRjaFBhcmFtcyB9XG5cbiAgICBpZiAocmVmICYmIGZldGNoUGFyYW1zPy5yZXNvdXJjZUxpbmspIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgb3duZXIsXG4gICAgICAgIGxhbmd1YWdlSWQsXG4gICAgICAgIHJlc291cmNlSWQsXG4gICAgICAgIHJlZjogX3JlZixcbiAgICAgIH0gPSBwYXJzZVJlc291cmNlTGluayhmZXRjaFBhcmFtcy5yZXNvdXJjZUxpbmspXG5cbiAgICAgIGlmIChyZWYgIT09IF9yZWYpIHsgLy8gaWYgcmVmIGNoYW5nZWQsIHVwZGF0ZSByZXNvdXJjZWxpbmtcbiAgICAgICAgY29uc3QgX3Jlc291cmNlTGluayA9IGdldFJlc291cmNlTGluayh7XG4gICAgICAgICAgb3duZXIsXG4gICAgICAgICAgbGFuZ3VhZ2VJZCxcbiAgICAgICAgICByZXNvdXJjZUlkLFxuICAgICAgICAgIHJlZixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS5yZWxvYWRSZXNvdXJjZSgpIG9sZCByZWYgaXMgZGlmZmVyZW50ICR7X3JlZn0sIHN3aXRjaGluZyB0byBsb2FkIHJlZjogJHtyZWZ9LCBuZXcgcmVzb3VyY2VMaW5rOiAke19yZXNvdXJjZUxpbmt9YCApXG4gICAgICAgIF9mZXRjaFBhcmFtcy5yZXNvdXJjZUxpbmsgPSBfcmVzb3VyY2VMaW5rXG4gICAgICB9XG4gICAgfVxuICAgIGZldGNoQm9vayhfZmV0Y2hQYXJhbXMsIGlnbm9yZVNoYSlcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgY3VycmVudEJvb2tSZWYgPSBmZXRjaFBhcmFtcz8ucmVmZXJlbmNlPy5wcm9qZWN0SWRcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjdXJyZW50Qm9va1JlZikge1xuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSBmZXRjaGVkIGJvb2sgY2hhbmdlZCB0byAke2N1cnJlbnRCb29rUmVmfSwgJHtyZXNvdXJjZUxpbmtffWAsIGZldGNoUGFyYW1zIClcbiAgICAgIHNldFN0YXRlKHsgYm9va09iamVjdHM6IG51bGwsIGJpYmxlVXNmbTogbnVsbCB9KVxuICAgIH1cbiAgICAvLyBAdHMtaWdub3JlXG4gIH0sIFtjdXJyZW50Qm9va1JlZl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIGJvb2sgcmVmIGNoYW5nZWQgdG8gJHtib29rSWR9LCAke3Jlc291cmNlTGlua199YClcbiAgICAvLyBAdHMtaWdub3JlXG4gIH0sIFtib29rSWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZXhwZWN0ZWRCb29rSWQgPSBib29rSWQgfHwgJydcbiAgICBjb25zdCBmZXRjaGVkQm9va1NhbWUgPSBmZXRjaGVkQm9vayAmJiAoZmV0Y2hlZEJvb2sgPT09IGV4cGVjdGVkQm9va0lkKVxuICAgIGxldCBfdmVyc2VzRm9yUmVmID0gW11cblxuICAgIGlmICghZmV0Y2hlZEJvb2tTYW1lKSB7XG4gICAgICAvLyBpZiAoZXhwZWN0ZWRCb29rSWQgJiYgZmV0Y2hlZEJvb2spIHtcbiAgICAgIC8vICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSBleHBlY3RlZCBib29rICR7ZXhwZWN0ZWRCb29rSWR9IGJ1dCBmZXRjaGVkIGJvb2sgd2FzICR7ZmV0Y2hlZEJvb2t9IC0gY2xlYXJpbmdgKVxuICAgICAgLy8gfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBfYm9va09iamVjdHMgPSBmZXRjaGVkQm9va1NhbWUgPyBib29rT2JqZWN0cyA6IG51bGxcbiAgICAgIF92ZXJzZXNGb3JSZWYgPSBmZXRjaFZlcnNlc0ZvclJlZihfYm9va09iamVjdHMpXG4gICAgICAvLyBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIF9ib29rT2JqZWN0cyBpcyAkeyEhX2Jvb2tPYmplY3RzfSBhbmQgYm9va3MgYXJlIHRoZSBzYW1lICR7ZmV0Y2hlZEJvb2t9YCwgeyBjb250ZW50LCBmZXRjaFBhcmFtcyB9KVxuICAgIH1cblxuICAgIGlmICghaXNFcXVhbChfdmVyc2VzRm9yUmVmLCB2ZXJzZXNGb3JSZWYpKSB7XG4gICAgICBzZXRTdGF0ZSh7IHZlcnNlc0ZvclJlZjogX3ZlcnNlc0ZvclJlZiB9KVxuICAgIH1cbiAgfSwgW3JlZmVyZW5jZV0pXG5cbiAgcmV0dXJuIHtcbiAgICBiaWJsZVVzZm0sXG4gICAgYm9va09iamVjdHMsXG4gICAgZ2V0VmVyc2VzRm9yUmVmOiBfZ2V0VmVyc2VzRm9yUmVmLFxuICAgIHJlZmVyZW5jZTogZmV0Y2hQYXJhbXM/LnJlZmVyZW5jZSxcbiAgICByZWxvYWRSZXNvdXJjZSxcbiAgICByZXNvdXJjZUxpbms6IGZldGNoUGFyYW1zPy5yZXNvdXJjZUxpbmssXG4gICAgcmVzb3VyY2VTdGF0ZSwgLy8gc3RhdGUgaW5mb3JtYXRpb24gZm9yIGxhdGVzdCBmZXRjaGVkIHJlc291cmNlXG4gICAgcmVzb3VyY2VTdGF0dXMsIC8vIHN0YXR1cyBmbGFncyBmb3IgZmV0Y2hlZCByZXNvdXJjZVxuICAgIHRpdGxlLFxuICAgIHVwZGF0ZVZlcnNlLFxuICAgIHZlcnNpb24sXG4gICAgdmVyc2VzRm9yUmVmLFxuICB9XG59XG4iXX0=
|
|
@@ -573,6 +573,8 @@ export function useScriptureAlignmentEdit(_ref) {
|
|
|
573
573
|
alignerData: alignerData,
|
|
574
574
|
currentVerseObjects: currentVerseObjects,
|
|
575
575
|
editing: editing,
|
|
576
|
+
enableEdit: enableEdit,
|
|
577
|
+
enableAlignment: enableAlignment,
|
|
576
578
|
initialVerseText: initialVerseText,
|
|
577
579
|
initialVerseObjects: initialVerseObjects,
|
|
578
580
|
newVerseText: newVerseText,
|
|
@@ -585,4 +587,4 @@ export function useScriptureAlignmentEdit(_ref) {
|
|
|
585
587
|
}
|
|
586
588
|
};
|
|
587
589
|
}
|
|
588
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0LnRzeCJdLCJuYW1lcyI6WyJSZWFjdCIsIkFsaWdubWVudEhlbHBlcnMiLCJVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIiwidXNmbUhlbHBlcnMiLCJpc0VxdWFsIiwiU2NyaXB0dXJlQ29uZmlnIiwiU2NyaXB0dXJlUmVmZXJlbmNlIiwiU2VydmVyQ29uZmlnIiwiZ2V0U2NyaXB0dXJlUmVzb3VyY2VTZXR0aW5ncyIsIk9SSUdJTkFMX1NPVVJDRSIsImdldFZlcnNlc0ZvclJlZiIsImlzVXNmbUFsaWduZWQiLCJ0YXJnZXRWZXJzZVVTRk0iLCJvcmlnaW5hbFZlcnNlT2JqZWN0cyIsImxlbmd0aCIsImV4dHJhY3RBbGlnbm1lbnRzRnJvbVRhcmdldFZlcnNlIiwiYWxpZ25tZW50cyIsIndvcmRCYW5rIiwiYXJlQWxnbm1lbnRzQ29tcGxldGUiLCJnZXRDdXJyZW50VmVyc2VVc2ZtIiwidXBkYXRlZFZlcnNlT2JqZWN0cyIsImluaXRpYWxWZXJzZU9iamVjdHMiLCJ2ZXJzZVRleHRDaGFuZ2VkIiwibmV3VmVyc2VUZXh0IiwiY3VycmVudFZlcnNlT2JqZWN0c18iLCJ1cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSIsInRhcmdldFZlcnNlVGV4dCIsImNvbnZlcnRWZXJzZURhdGFUb1VTRk0iLCJ1c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0IiwiY3VycmVudEluZGV4IiwiZW5hYmxlRWRpdCIsImVuYWJsZUFsaWdubWVudCIsImh0dHBDb25maWciLCJpbml0aWFsVmVyc2VUZXh0IiwiaXNOZXdUZXN0YW1lbnQiLCJvcmlnaW5hbExhbmd1YWdlT3duZXIiLCJvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzIiwib3JpZ2luYWxSZXBvVXJsIiwicmVmZXJlbmNlIiwic2NyaXB0dXJlQ29uZmlnIiwic2NyaXB0dXJlU2V0dGluZ3MiLCJzZXRTYXZlZENoYW5nZXMiLCJzb3VyY2VMYW5ndWFnZSIsInN0YXJ0RWRpdEJyYW5jaCIsInRhcmdldExhbmd1YWdlIiwidGl0bGUiLCJ3b3JraW5nUmVzb3VyY2VCcmFuY2giLCJ1c2VTdGF0ZSIsImFsaWduZWQiLCJhbGlnbmVyRGF0YSIsImVkaXRpbmciLCJuZXdBbGlnbm1lbnRzIiwic3RhdGUiLCJzZXRTdGF0ZV8iLCJjaGFwdGVyIiwidmVyc2UiLCJwcm9qZWN0SWQiLCJiYXNpY1JlZmVyZW5jZSIsInNldFN0YXRlIiwibmV3U3RhdGUiLCJwcmV2U3RhdGUiLCJjbGVhckNoYW5nZXMiLCJjb25zb2xlIiwibG9nIiwiSlNPTiIsInN0cmluZ2lmeSIsImNsZWFyU3RhdGUiLCJvcmlnaW5hbFNjcmlwdHVyZVNldHRpbmdzXyIsInJlc291cmNlSWQiLCJib29rSWQiLCJvcmlnaW5hbFNjcmlwdHVyZVNldHRpbmdzIiwicmVzb3VyY2VMaW5rIiwidXNlTWVtbyIsInZlcnNlT2JqZWN0cyIsInZlcnNlcyIsImxhbmd1YWdlSWQiLCJ2ZXJzZVJlZmVyZW5jZSIsIm9yaWdWZXJzZU9iamVjdHMiLCJ2ZXJzZURhdGEiLCJBcnJheSIsInByb3RvdHlwZSIsInB1c2giLCJhcHBseSIsInVzZUVmZmVjdCIsIm5vdEVtcHR5IiwiYWxpZ25lZF8iLCJyZXN1bHRzIiwiZ2V0Q2hhbmdlcyIsIl9uZXdTdGF0ZSIsInVwZGF0ZWRWZXJzZU9iamVjdHNfIiwidXBkYXRlVmVyc2VXaXRoTmV3QWxpZ25tZW50cyIsInRhcmdldFZlcnNlT2JqZWN0cyIsInJlZiIsInZlcnNlc0ZvclJlZiIsImhhbmRsZUFsaWdubWVudENsaWNrIiwiX2FsaWduZXJEYXRhIiwib3JpZ2luYWxWZXJzZVVzZm0iLCJwYXJzZVVzZm1Ub1dvcmRBbGlnbmVyRGF0YSIsInRhcmdldFdvcmRzIiwidmVyc2VBbGlnbm1lbnRzIiwiX25ld0FsaWdubWVudHMiLCJ2ZXJzZVVzZm0iLCJhZGRBbGlnbm1lbnRzVG9WZXJzZVVTRk0iLCJhbGlnbmVkVmVyc2VPYmplY3RzIiwidXNmbVZlcnNlVG9Kc29uIiwic2F2ZUFsaWdubWVudCIsImNhbGxTZXRTYXZlZFN0YXRlIiwiY2FuY2VsQWxpZ25tZW50Iiwic2V0RWRpdGluZyIsImVkaXRpbmdfIiwiX25ld1ZlcnNlVGV4dCIsIl91cGRhdGVkVmVyc2VPYmplY3RzIiwidmVyc2VUZXh0IiwiZ2V0VXNmbUZvclZlcnNlQ29udGVudCIsImN1cnJlbnRWZXJzZU9iamVjdHMiLCJfYWxpZ25tZW50c0NoYW5nZWQiLCJzZXRWZXJzZUNoYW5nZWQiLCJjaGFuZ2VkIiwiX2luaXRpYWxWZXJzZVRleHQiLCJ1bnNhdmVkQ2hhbmdlcyIsInVuc2F2ZWRDaGFuZ2VzXyIsIm9uQWxpZ25tZW50c0NoYW5nZSIsImFsaWdubWVudENvbXBsZXRlIiwiYWN0aW9ucyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQSxPQUFPLEtBQUtBLEtBQVosTUFBdUIsT0FBdkI7QUFDQSxTQUNFQyxnQkFERixFQUVFQyx5QkFGRixFQUdFQyxXQUhGLFFBSU8sa0JBSlA7QUFLQSxPQUFPLEtBQUtDLE9BQVosTUFBeUIsWUFBekI7QUFDQSxTQUNFQyxlQURGLEVBRUVDLGtCQUZGLEVBR0VDLFlBSEYsUUFJTyxVQUpQO0FBS0EsU0FBU0MsNEJBQVQsUUFBNkMsNEJBQTdDO0FBQ0EsU0FBU0MsZUFBVCxRQUFnQyxVQUFoQztBQUNBLFNBQVNDLGVBQVQsUUFBZ0MsZ0JBQWhDOztBQXFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0MsYUFBVCxDQUF1QkMsZUFBdkIsRUFBd0NDLG9CQUF4QyxFQUE4RDtBQUFBOztBQUM1REEsRUFBQUEsb0JBQW9CLEdBQUcseUJBQUFBLG9CQUFvQixVQUFwQiw4REFBc0JDLE1BQXRCLEdBQStCRCxvQkFBL0IsR0FBc0QsSUFBN0UsQ0FENEQsQ0FDc0I7O0FBRHRCLDhCQUUzQlosZ0JBQWdCLENBQUNjLGdDQUFqQixDQUFrREgsZUFBbEQsRUFBbUVDLG9CQUFuRSxDQUYyQjtBQUFBLE1BRXBERyxVQUZvRCx5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QVhBLFdBRks7QUFHTGlFLE1BQUFBLG1CQUFtQixFQUFuQkEsbUJBSEs7QUFJTGhFLE1BQUFBLE9BQU8sRUFBUEEsT0FKSztBQUtMakIsTUFBQUEsZ0JBQWdCLEVBQWhCQSxnQkFMSztBQU1MWixNQUFBQSxtQkFBbUIsRUFBbkJBLG1CQU5LO0FBT0xFLE1BQUFBLFlBQVksRUFBWkEsWUFQSztBQVFMZSxNQUFBQSxTQUFTLEVBQUVtQixjQVJOO0FBU0xmLE1BQUFBLGNBQWMsRUFBZEEsY0FUSztBQVVMRSxNQUFBQSxjQUFjLEVBQWRBLGNBVks7QUFXTEMsTUFBQUEsS0FBSyxFQUFMQSxLQVhLO0FBWUwwRSxNQUFBQSxjQUFjLEVBQWRBLGNBWks7QUFhTGpHLE1BQUFBLGdCQUFnQixFQUFoQkE7QUFiSztBQVhGLEdBQVA7QUEyQkQiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtaWdub3JlXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7XG4gIEFsaWdubWVudEhlbHBlcnMsXG4gIFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMsXG4gIHVzZm1IZWxwZXJzLFxufSBmcm9tICd3b3JkLWFsaWduZXItcmNsJ1xuaW1wb3J0ICogYXMgaXNFcXVhbCBmcm9tICdkZWVwLWVxdWFsJ1xuaW1wb3J0IHtcbiAgU2NyaXB0dXJlQ29uZmlnLFxuICBTY3JpcHR1cmVSZWZlcmVuY2UsXG4gIFNlcnZlckNvbmZpZyxcbn0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyBnZXRTY3JpcHR1cmVSZXNvdXJjZVNldHRpbmdzIH0gZnJvbSAnLi4vdXRpbHMvU2NyaXB0dXJlU2V0dGluZ3MnXG5pbXBvcnQgeyBPUklHSU5BTF9TT1VSQ0UgfSBmcm9tICcuLi91dGlscydcbmltcG9ydCB7IGdldFZlcnNlc0ZvclJlZiB9IGZyb20gJy4vdXNlU2NyaXB0dXJlJ1xuXG5pbnRlcmZhY2UgU3RhcnRFZGl0IHtcbiAgKCk6IFByb21pc2U8c3RyaW5nPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY3JpcHR1cmVBTGlnbm1lbnRFZGl0UHJvcHMge1xuICAvLyBpbmRleCB0byB1c2UgZm9yIGJvb2sgKGUuZy4gYDAxYCBmb3IgYEdFTmApXG4gIGJvb2tJbmRleDogc3RyaW5nLFxuICAvLyBjdXJyZW50IHZlcnNlIHNlbGVjdGVkIGZyb20gaW5pdGlhbFZlcnNlT2JqZWN0c1tdXG4gIGN1cnJlbnRJbmRleDogbnVtYmVyLFxuICAvLyByZWZlcmVuY2UgZm9yIHZlcnNlIHNlbGVjdGVkIGZvciBhbGlnbm1lbnRcbiAgY3VycmVudFZlcnNlUmVmOiBTY3JpcHR1cmVSZWZlcmVuY2UsXG4gIC8vIGlmIHRydWUgdGhlbiBlZGl0aW5nIGlzIGFsbG93ZWRcbiAgZW5hYmxlRWRpdDogYm9vbGVhbixcbiAgLy8gaWYgdHJ1ZSB0aGVuIGFsaWdubWVudCBpcyBhbGxvd2VkXG4gIGVuYWJsZUFsaWdubWVudDogYm9vbGVhbixcbiAgLy8gY29uZmlndXJhdGlvbiB0byB1c2UgZm9yIGh0dHAgY29tbXVuaWNhdGlvblxuICBodHRwQ29uZmlnOiBTZXJ2ZXJDb25maWcsXG4gIC8vIGFycmF5IG9mIGVhY2ggdmVyc2UgZm9yIGluIHJlZmVyZW5jZSByYW5nZVxuICBpbml0aWFsVmVyc2VPYmplY3RzOiBbXSxcbiAgLy8gaW5pdGlhbCB0ZXh0IGZvciB2ZXJzZVxuICBpbml0aWFsVmVyc2VUZXh0OiBzdHJpbmcsXG4gIC8vIGZsYWcgdGhhdCB3ZSBhcmUgd29ya2luZyBvbiBOVCBib29rXG4gIGlzTmV3VGVzdGFtZW50OiBib29sZWFuLFxuICAvLyB1c2VyIG5hbWUgb2YgbG9nZ2VkIGluIHVzZXJcbiAgbG9nZ2VkSW5Vc2VyOiBzdHJpbmcsXG4gIC8vIG93bmVyIHRvIHVzZSB3aGVuIGZldGNoaW5nIG9yaWdpbmFsIGxhbmd1YWdlIHJlc291cmNlc1xuICBvcmlnaW5hbExhbmd1YWdlT3duZXI6IHN0cmluZyxcbiAgLy8gdXJsIGZvciB0aGUgb3JpZ2luYWwgbGFuZ3VhZ2UgcmVwb1xuICBvcmlnaW5hbFJlcG9Vcmw6IHN0cmluZyxcbiAgLy8gb3JpZ2luYWwgc2NyaXB0dXJlIGJvb2tPYmplY3RzIGZvciBjdXJyZW50IGJvb2tcbiAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0czogb2JqZWN0LFxuICAvKiogY3VycmVudCByZWZlcmVuY2UgKiovXG4gIHJlZmVyZW5jZTogU2NyaXB0dXJlUmVmZXJlbmNlO1xuICAvLyBkZXRhaWxzIGFib3V0IHRoZSBjdXJyZW50IHNjcmlwdHVyZSBsb2FkZWRcbiAgc2NyaXB0dXJlQ29uZmlnOiBTY3JpcHR1cmVDb25maWcsXG4gIC8vIHNldHRpbmdzIHRvIGJlIHVzZWQgZm9yIHNjcmlwdHVyZVxuICBzY3JpcHR1cmVTZXR0aW5nczogeyB9LFxuICAvLyBjYWxsYmFjayB0byBzYXZlIGN1cnJlbnQgdmVyc2UgZWRpdCBhbmQgYWxpZ25tZW50IGNoYW5nZXNcbiAgc2V0U2F2ZWRDaGFuZ2VzOiBGdW5jdGlvbixcbiAgLy8gc291cmNlIGxhbmd1YWdlXG4gIHNvdXJjZUxhbmd1YWdlOiBzdHJpbmcsXG4gIC8vIGNhbGxiYWNrIHRvIGNyZWF0ZSBhIHVzZXIgYnJhbmNoIGZvciBzYXZpbmcgZWRpdCBkYXRhXG4gIHN0YXJ0RWRpdEJyYW5jaDogU3RhcnRFZGl0LFxuICAvLyBjdXJyZW50IHRhcmdldCBsYW5ndWFnZVxuICB0YXJnZXRMYW5ndWFnZTogb2JqZWN0LFxuICAvLyB0aXRsZSB0byBzaG93IGluIGFsaWdubWVudFxuICB0aXRsZTogc3RyaW5nLFxuICAgLy8gYnJhbmNoIG5hbWUgY3VycmVudGx5IGJlaW5nIHVzZWQgKGUuZy4gYG1hc3RlcmAgb3IgdXNlciBicmFuY2gpXG4gIHdvcmtpbmdSZXNvdXJjZUJyYW5jaDogc3RyaW5nLFxufVxuXG4vKipcbiAqIGRldGVybWluZXMgaWYgYWxpZ25tZW50IGlzIGNvbXBsZXRlIGJhc2VkIG9uIHRhcmdldCBVU0ZNIGFuZCBvcmlnaW5hbCBsYW5ndWFnZSB2ZXJzZSBvYmplY3RzXG4gKiBAcGFyYW0ge3N0cmluZ30gdGFyZ2V0VmVyc2VVU0ZNXG4gKiBAcGFyYW0ge29iamVjdFtdfSBvcmlnaW5hbFZlcnNlT2JqZWN0c1xuICovXG5mdW5jdGlvbiBpc1VzZm1BbGlnbmVkKHRhcmdldFZlcnNlVVNGTSwgb3JpZ2luYWxWZXJzZU9iamVjdHMpIHtcbiAgb3JpZ2luYWxWZXJzZU9iamVjdHMgPSBvcmlnaW5hbFZlcnNlT2JqZWN0cz8ubGVuZ3RoID8gb3JpZ2luYWxWZXJzZU9iamVjdHMgOiBudWxsIC8vIG1ha2Ugc3VyZSBub3QgcGFzc2luZyBlbXB0eSBBcnJheVxuICBjb25zdCB7IGFsaWdubWVudHMsIHdvcmRCYW5rIH0gPSBBbGlnbm1lbnRIZWxwZXJzLmV4dHJhY3RBbGlnbm1lbnRzRnJvbVRhcmdldFZlcnNlKHRhcmdldFZlcnNlVVNGTSwgb3JpZ2luYWxWZXJzZU9iamVjdHMpXG4gIHJldHVybiBBbGlnbm1lbnRIZWxwZXJzLmFyZUFsZ25tZW50c0NvbXBsZXRlKHdvcmRCYW5rLCBhbGlnbm1lbnRzKVxufVxuXG4vKipcbiAqIGdldCB0aGUgdXBkYXRlZCBVU0ZNIGZvciB0YXJnZXQgdmVyc2UgZnJvbSB0aGUgdXBkYXRlZCB2ZXJzZSBvYmplY3RzIGFuZCBsYXRlc3QgdGV4dFxuICogQHBhcmFtIHtvYmplY3RbXX0gdXBkYXRlZFZlcnNlT2JqZWN0c1xuICogQHBhcmFtIHtvYmplY3RbXX0gaW5pdGlhbFZlcnNlT2JqZWN0c1xuICogQHBhcmFtIHtib29sZWFufSB2ZXJzZVRleHRDaGFuZ2VkXG4gKiBAcGFyYW0ge3N0cmluZ30gbmV3VmVyc2VUZXh0XG4gKi9cbmZ1bmN0aW9uIGdldEN1cnJlbnRWZXJzZVVzZm0odXBkYXRlZFZlcnNlT2JqZWN0cywgaW5pdGlhbFZlcnNlT2JqZWN0cywgdmVyc2VUZXh0Q2hhbmdlZDogYm9vbGVhbiwgbmV3VmVyc2VUZXh0KSB7XG4gIGxldCB0YXJnZXRWZXJzZVVTRk0gPSBudWxsXG4gIGNvbnN0IGN1cnJlbnRWZXJzZU9iamVjdHNfID0gdXBkYXRlZFZlcnNlT2JqZWN0cyB8fCBpbml0aWFsVmVyc2VPYmplY3RzXG5cbiAgaWYgKHZlcnNlVGV4dENoYW5nZWQgJiYgbmV3VmVyc2VUZXh0KSB7XG4gICAgY29uc3QgeyB0YXJnZXRWZXJzZVRleHQgfSA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UoY3VycmVudFZlcnNlT2JqZWN0c18sIG5ld1ZlcnNlVGV4dClcbiAgICB0YXJnZXRWZXJzZVVTRk0gPSB0YXJnZXRWZXJzZVRleHRcbiAgfSBlbHNlIHtcbiAgICB0YXJnZXRWZXJzZVVTRk0gPSBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLmNvbnZlcnRWZXJzZURhdGFUb1VTRk0oY3VycmVudFZlcnNlT2JqZWN0c18pXG4gIH1cbiAgcmV0dXJuIHRhcmdldFZlcnNlVVNGTVxufVxuXG4vLyBtYW5hZ2UgdmVyc2UgZWRpdCBhbmQgYWxpZ25tZW50IHN0YXRlc1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVNjcmlwdHVyZUFsaWdubWVudEVkaXQoe1xuICBjdXJyZW50SW5kZXgsXG4gIGVuYWJsZUVkaXQsXG4gIGVuYWJsZUFsaWdubWVudCxcbiAgaHR0cENvbmZpZyxcbiAgaW5pdGlhbFZlcnNlT2JqZWN0cyxcbiAgaW5pdGlhbFZlcnNlVGV4dCxcbiAgaXNOZXdUZXN0YW1lbnQsXG4gIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcixcbiAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyxcbiAgb3JpZ2luYWxSZXBvVXJsLFxuICByZWZlcmVuY2UsXG4gIHNjcmlwdHVyZUNvbmZpZyxcbiAgc2NyaXB0dXJlU2V0dGluZ3MsXG4gIHNldFNhdmVkQ2hhbmdlcyxcbiAgc291cmNlTGFuZ3VhZ2UsXG4gIHN0YXJ0RWRpdEJyYW5jaCxcbiAgdGFyZ2V0TGFuZ3VhZ2UsXG4gIHRpdGxlLFxuICB3b3JraW5nUmVzb3VyY2VCcmFuY2gsXG59IDogU2NyaXB0dXJlQUxpZ25tZW50RWRpdFByb3BzKSB7XG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVfXSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICBhbGlnbmVkOiBmYWxzZSxcbiAgICBhbGlnbmVyRGF0YTogbnVsbCxcbiAgICBlZGl0aW5nOiBmYWxzZSxcbiAgICBuZXdBbGlnbm1lbnRzOiBudWxsLFxuICAgIG5ld1ZlcnNlVGV4dDogbnVsbCxcbiAgICB1cGRhdGVkVmVyc2VPYmplY3RzOiBudWxsLFxuICAgIHZlcnNlVGV4dENoYW5nZWQ6IGZhbHNlLFxuICB9KVxuXG4gIGNvbnN0IHtcbiAgICBhbGlnbmVkLFxuICAgIGFsaWduZXJEYXRhLFxuICAgIGVkaXRpbmcsXG4gICAgbmV3QWxpZ25tZW50cyxcbiAgICBuZXdWZXJzZVRleHQsXG4gICAgdXBkYXRlZFZlcnNlT2JqZWN0cyxcbiAgICB2ZXJzZVRleHRDaGFuZ2VkLFxuICB9ID0gc3RhdGVcbiAgY29uc3QgY2hhcHRlciA9IHJlZmVyZW5jZT8uY2hhcHRlclxuICBjb25zdCB2ZXJzZSA9IHJlZmVyZW5jZT8udmVyc2VcbiAgY29uc3QgcHJvamVjdElkID0gcmVmZXJlbmNlPy5wcm9qZWN0SWRcbiAgY29uc3QgYmFzaWNSZWZlcmVuY2UgPSB7IC8vIG9ubHkgaGFzIHRoZSB0aHJlZSBiYXNpYyBmaWVsZHNcbiAgICBjaGFwdGVyLFxuICAgIHZlcnNlLFxuICAgIHByb2plY3RJZCxcbiAgfVxuXG4gIGZ1bmN0aW9uIHNldFN0YXRlKG5ld1N0YXRlKSB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoeyAuLi5wcmV2U3RhdGUsIC4uLm5ld1N0YXRlIH0pKVxuICB9XG5cbiAgZnVuY3Rpb24gY2xlYXJDaGFuZ2VzKCkge1xuICAgIGNvbnNvbGUubG9nKGBjbGVhckNoYW5nZXMoKSAtICR7SlNPTi5zdHJpbmdpZnkoYmFzaWNSZWZlcmVuY2UpfWApXG4gICAgY29uc3QgY2xlYXJTdGF0ZSA9IHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgYWxpZ25lckRhdGE6IG51bGwsXG4gICAgICBlZGl0aW5nOiBmYWxzZSxcbiAgICAgIG5ld0FsaWdubWVudHM6IG51bGwsXG4gICAgICBuZXdWZXJzZVRleHQ6IG51bGwsXG4gICAgICB1cGRhdGVkVmVyc2VPYmplY3RzOiBudWxsLFxuICAgICAgdmVyc2VUZXh0Q2hhbmdlZDogZmFsc2UsXG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKHN0YXRlLCBjbGVhclN0YXRlKSkge1xuICAgICAgY29uc29sZS5sb2coYGNsZWFyQ2hhbmdlcygpIC0gcmVmZXJlbmNlIGNoYW5nZWQsIHJlc2V0IGVkaXQvYWxpZ25tZW50IHN0YXRlIHZhcmlhYmxlc2ApXG4gICAgICBzZXRTdGF0ZShjbGVhclN0YXRlKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG9yaWdpbmFsU2NyaXB0dXJlU2V0dGluZ3NfID0ge1xuICAgIC4uLnNjcmlwdHVyZVNldHRpbmdzLFxuICAgIHJlc291cmNlSWQ6IE9SSUdJTkFMX1NPVVJDRSxcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgaHR0cENvbmZpZyA9IGh0dHBDb25maWcgfHwge31cbiAgY29uc3QgYm9va0lkID0gcHJvamVjdElkXG4gIGNvbnN0IG9yaWdpbmFsU2NyaXB0dXJlU2V0dGluZ3MgPSBnZXRTY3JpcHR1cmVSZXNvdXJjZVNldHRpbmdzKFxuICAgIGJvb2tJZCwgb3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5nc18sIGlzTmV3VGVzdGFtZW50LCBvcmlnaW5hbFJlcG9VcmwsXG4gIClcblxuICBpZiAoIWVuYWJsZUFsaWdubWVudCkgeyAvLyBpZiBub3QgZW5hYmxlZCwgdGhlbiB3ZSBkb24ndCBmZXRjaCByZXNvdXJjZVxuICAgIG9yaWdpbmFsU2NyaXB0dXJlU2V0dGluZ3MucmVzb3VyY2VMaW5rID0gbnVsbFxuICB9XG5cbiAgY29uc3Qgb3JpZ2luYWxWZXJzZU9iamVjdHMgPSBSZWFjdC51c2VNZW1vKCgpID0+IHsgLy8gZ2V0IHRoZSBvcmlnaW5hbCBsYW5ndWFnZSB2ZXJzZU9iamVjdHNcbiAgICBjb25zdCB2ZXJzZU9iamVjdHMgPSBbXVxuXG4gICAgaWYgKG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IHZlcnNlcyA9IGdldFZlcnNlc0ZvclJlZihiYXNpY1JlZmVyZW5jZSwgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cywgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cz8ubGFuZ3VhZ2VJZClcblxuICAgICAgaWYgKHZlcnNlcz8ubGVuZ3RoKSB7XG4gICAgICAgIGZvciAoY29uc3QgdmVyc2VSZWZlcmVuY2Ugb2YgdmVyc2VzKSB7XG4gICAgICAgICAgY29uc3Qgb3JpZ1ZlcnNlT2JqZWN0cyA9IHZlcnNlUmVmZXJlbmNlPy52ZXJzZURhdGE/LnZlcnNlT2JqZWN0c1xuXG4gICAgICAgICAgaWYgKG9yaWdWZXJzZU9iamVjdHMpIHtcbiAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KHZlcnNlT2JqZWN0cywgb3JpZ1ZlcnNlT2JqZWN0cylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZlcnNlT2JqZWN0c1xuICB9LCBbb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cywgY2hhcHRlciwgdmVyc2UsIHByb2plY3RJZF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gdXBkYXRlIGFsaWdubWVudCBzdGF0dXMgd2hlbiBhbGlnbmVyIGlzIGhpZGRlblxuICAgIGNvbnN0IG5vdEVtcHR5ID0gISFpbml0aWFsVmVyc2VPYmplY3RzXG4gICAgbGV0IGFsaWduZWRfID0gZmFsc2VcblxuICAgIGlmICghYWxpZ25lckRhdGEpIHsgLy8gc2tpcCBpZiBhbGlnbmVyIGlzIGJlaW5nIHNob3duXG4gICAgICBpZiAobm90RW1wdHkpIHsgLy8gc2tpcCBpZiBlbXB0eVxuICAgICAgICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHMgfHwgaW5pdGlhbFZlcnNlT2JqZWN0c1xuXG4gICAgICAgIGlmICghZW5hYmxlQWxpZ25tZW50KSB7XG4gICAgICAgICAgYWxpZ25lZF8gPSB0cnVlXG4gICAgICAgIH0gZWxzZSBpZiAobmV3VmVyc2VUZXh0ICYmIChuZXdWZXJzZVRleHQgIT09IGluaXRpYWxWZXJzZVRleHQpKSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0cyA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UoY3VycmVudFZlcnNlT2JqZWN0c18sIG5ld1ZlcnNlVGV4dClcbiAgICAgICAgICBhbGlnbmVkXyA9IGlzVXNmbUFsaWduZWQocmVzdWx0cz8udGFyZ2V0VmVyc2VUZXh0LCBvcmlnaW5hbFZlcnNlT2JqZWN0cylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB0YXJnZXRWZXJzZVVTRk0gPSBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLmNvbnZlcnRWZXJzZURhdGFUb1VTRk0oY3VycmVudFZlcnNlT2JqZWN0c18pXG4gICAgICAgICAgYWxpZ25lZF8gPSBpc1VzZm1BbGlnbmVkKHRhcmdldFZlcnNlVVNGTSwgb3JpZ2luYWxWZXJzZU9iamVjdHMpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGFsaWduZWQgIT09IGFsaWduZWRfKSB7XG4gICAgICAgIHNldFN0YXRlKHsgYWxpZ25lZDogYWxpZ25lZF8gfSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtpbml0aWFsVmVyc2VPYmplY3RzLCBhbGlnbmVyRGF0YSwgbmV3VmVyc2VUZXh0LCBpbml0aWFsVmVyc2VUZXh0LCBlbmFibGVBbGlnbm1lbnQsIG9yaWdpbmFsVmVyc2VPYmplY3RzXSlcblxuICAvKipcbiAgICogZ2V0IGNoYW5nZXMgZm9yIHNhdmluZ1xuICAgKiBAcGFyYW0ge29iamVjdH0gbmV3U3RhdGUgLSBvcHRpb25hbGx5IHBhc3MgaW4gbmV3IHN0YXRlICh0byBvdmVycmlkZSBzdGF0ZSlcbiAgICovXG4gIGZ1bmN0aW9uIGdldENoYW5nZXMobmV3U3RhdGUgPSB7fSkge1xuICAgIGNvbnNvbGUubG9nKGBnZXRDaGFuZ2VzIC0gc3RhcnRlZCAke2N1cnJlbnRJbmRleH0gLSBwYXNzZWQgc3RhdGVgLCBuZXdTdGF0ZSlcbiAgICBjb25zdCBfbmV3U3RhdGUgPSB7XG4gICAgICBzdGF0ZSxcbiAgICAgIC4uLm5ld1N0YXRlLFxuICAgIH1cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3Qge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgbmV3QWxpZ25tZW50cyxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG5ld1ZlcnNlVGV4dCxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB2ZXJzZVRleHRDaGFuZ2VkLFxuICAgIH0gPSBfbmV3U3RhdGVcbiAgICBsZXQgdXBkYXRlZFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzXG5cbiAgICBpZiAobmV3QWxpZ25tZW50cykgeyAvLyBpZiB1bnNhdmVkIGFsaWdubWVudCBjaGFuZ2VzLCBhcHBseSB0aGVtXG4gICAgICBjb25zb2xlLmxvZyhgZ2V0Q2hhbmdlcyAtIGFwcGx5aW5nIHVuc2F2ZWQgYWxpZ25tZW50c31gKVxuICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0c18gPSB1cGRhdGVWZXJzZVdpdGhOZXdBbGlnbm1lbnRzKClcbiAgICB9XG5cbiAgICBpZiAodmVyc2VUZXh0Q2hhbmdlZCAmJiBuZXdWZXJzZVRleHQpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBnZXRDaGFuZ2VzIC0gYXBwbHlpbmcgbmV3IHRleHQ6YCwgbmV3VmVyc2VUZXh0KVxuICAgICAgY29uc3QgY3VycmVudFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzXyB8fCBpbml0aWFsVmVyc2VPYmplY3RzXG4gICAgICB1cGRhdGVkVmVyc2VPYmplY3RzXyAmJiBjb25zb2xlLmxvZyhgZ2V0Q2hhbmdlcyAtIGFwcGx5aW5nIHVwZGF0ZWQgYWxpZ25tZW50c2ApXG4gICAgICBjb25zdCB7IHRhcmdldFZlcnNlT2JqZWN0cyB9ID0gQWxpZ25tZW50SGVscGVycy51cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZShjdXJyZW50VmVyc2VPYmplY3RzXywgbmV3VmVyc2VUZXh0KVxuICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0c18gPSB0YXJnZXRWZXJzZU9iamVjdHNcbiAgICB9IGVsc2UgeyAvLyBvbmx5IGFsaWdubWVudCBjaGFuZ2VzIHRvIHVwbG9hZFxuICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0c18gJiYgY29uc29sZS5sb2coYGdldENoYW5nZXMgLSBhcHBseWluZyB1cGRhdGVkIGFsaWdubWVudHNgLCB7IG5ld1ZlcnNlVGV4dCwgdXBkYXRlZFZlcnNlT2JqZWN0c18gfSlcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHNfID0gdXBkYXRlZFZlcnNlT2JqZWN0c18gfHwgaW5pdGlhbFZlcnNlT2JqZWN0c1xuICAgIH1cblxuICAgIGlmICh1cGRhdGVkVmVyc2VPYmplY3RzXykge1xuICAgICAgY29uc3QgcmVmID0gc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWY/LltjdXJyZW50SW5kZXhdXG4gICAgICByZXR1cm4ge1xuICAgICAgICBuZXdWZXJzZVRleHQsXG4gICAgICAgIHJlZixcbiAgICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0czogdXBkYXRlZFZlcnNlT2JqZWN0c18sXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHt9XG4gIH1cblxuICAvKipcbiAgICogY2FsbGJhY2sgZm9yIHdoZW4gdXNlciBjbGlja2VkIG9uIGFsaWdubWVudCBidXR0b24gLSB3aWxsIHNob3cgaWYgbm90IGFscmVhZHkgc2hvd25cbiAgICovXG4gIGFzeW5jIGZ1bmN0aW9uIGhhbmRsZUFsaWdubWVudENsaWNrKCkge1xuICAgIGlmIChlbmFibGVBbGlnbm1lbnQpIHtcbiAgICAgIGxldCBfYWxpZ25lckRhdGEgPSBudWxsXG4gICAgICBhd2FpdCBzdGFydEVkaXRCcmFuY2goKVxuXG4gICAgICBpZiAoIWFsaWduZXJEYXRhKSB7IC8vIGlmIHdvcmQgYWxpZ25lciBub3Qgc2hvd25cbiAgICAgICAgY29uc29sZS5sb2coYGhhbmRsZUFsaWdubWVudENsaWNrIC0gdG9nZ2xlIE9OIGFsaWdubWVudGApXG4gICAgICAgIGNvbnN0IHRhcmdldFZlcnNlVVNGTSA9IGdldEN1cnJlbnRWZXJzZVVzZm0odXBkYXRlZFZlcnNlT2JqZWN0cywgaW5pdGlhbFZlcnNlT2JqZWN0cywgdmVyc2VUZXh0Q2hhbmdlZCwgbmV3VmVyc2VUZXh0KVxuICAgICAgICBsZXQgb3JpZ2luYWxWZXJzZVVzZm0gPSBudWxsXG5cbiAgICAgICAgaWYgKG9yaWdpbmFsVmVyc2VPYmplY3RzKSB7XG4gICAgICAgICAgb3JpZ2luYWxWZXJzZVVzZm0gPSBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLmNvbnZlcnRWZXJzZURhdGFUb1VTRk0ob3JpZ2luYWxWZXJzZU9iamVjdHMpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgdGFyZ2V0V29yZHM6IHdvcmRCYW5rLFxuICAgICAgICAgIHZlcnNlQWxpZ25tZW50czogYWxpZ25tZW50cyxcbiAgICAgICAgfSA9IEFsaWdubWVudEhlbHBlcnMucGFyc2VVc2ZtVG9Xb3JkQWxpZ25lckRhdGEodGFyZ2V0VmVyc2VVU0ZNLCBvcmlnaW5hbFZlcnNlVXNmbSlcbiAgICAgICAgX2FsaWduZXJEYXRhID0geyB3b3JkQmFuaywgYWxpZ25tZW50cyB9XG4gICAgICB9IGVsc2UgeyAvLyB3b3JkIGFsaWduZXIgY3VycmVudGx5IHNob3duXG4gICAgICAgIGNvbnNvbGUubG9nKGBoYW5kbGVBbGlnbm1lbnRDbGljayAtIGFsaWdubWVudCBhbHJlYWR5IHNob3duYClcbiAgICAgICAgX2FsaWduZXJEYXRhID0gYWxpZ25lckRhdGFcbiAgICAgIH1cbiAgICAgIHNldFN0YXRlKHsgYWxpZ25lckRhdGE6IF9hbGlnbmVyRGF0YSB9KVxuICAgICAgY29uc29sZS5sb2coX2FsaWduZXJEYXRhKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgdXBkYXRlZCB2ZXJzZSBvYmplY3RzIGFmdGVyIGFsaWdubWVudHMgY2hhbmdlZFxuICAgKiBAcGFyYW0ge29iamVjdH0gX25ld0FsaWdubWVudHMgLSByZXN1bHRzIG9mIGFsaWduZXJcbiAgICovXG4gIGZ1bmN0aW9uIHVwZGF0ZVZlcnNlV2l0aE5ld0FsaWdubWVudHMoX25ld0FsaWdubWVudHMgPSBuZXdBbGlnbm1lbnRzKSB7XG4gICAgY29uc3QgY3VycmVudFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzIHx8IGluaXRpYWxWZXJzZU9iamVjdHNcbiAgICBjb25zdCB0YXJnZXRWZXJzZVRleHQgPSBuZXdWZXJzZVRleHQgfHwgVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKGN1cnJlbnRWZXJzZU9iamVjdHNfKVxuICAgIGNvbnN0IHZlcnNlVXNmbSA9IEFsaWdubWVudEhlbHBlcnMuYWRkQWxpZ25tZW50c1RvVmVyc2VVU0ZNKF9uZXdBbGlnbm1lbnRzLnRhcmdldFdvcmRzLCBfbmV3QWxpZ25tZW50cy52ZXJzZUFsaWdubWVudHMsIHRhcmdldFZlcnNlVGV4dClcbiAgICBjb25zdCBhbGlnbmVkVmVyc2VPYmplY3RzID0gdXNmbUhlbHBlcnMudXNmbVZlcnNlVG9Kc29uKHZlcnNlVXNmbSlcbiAgICByZXR1cm4gYWxpZ25lZFZlcnNlT2JqZWN0c1xuICB9XG5cbiAgLyoqXG4gICAqIGNhbGxiYWNrIGZvciB3aGVuIHVzZXIgY2xpY2tlZCBvbiBidXR0b24gdG8gc2F2ZSBjdXJyZW50IGFsaWdubWVudHMgaW4gd29yZCBhbGlnbmVyLiAgR2VuZXJhdGVzIG5ldyB2ZXJzZSBjb250ZW50IGFuZCBzYXZlcyBpbiBzdGF0ZS4gQ2xvc2VzIGFsaWduZXIgZGlzcGxheVxuICAgKiBAcGFyYW0ge29iamVjdH0gX25ld0FsaWdubWVudHMgLSByZXN1bHRzIG9mIGFsaWduZXJcbiAgICovXG4gIGZ1bmN0aW9uIHNhdmVBbGlnbm1lbnQoX25ld0FsaWdubWVudHMgPSBuZXdBbGlnbm1lbnRzKSB7XG4gICAgY29uc29sZS5sb2coYHNhdmVBbGlnbm1lbnQoKSAtIG5ld0FsaWdubWVudHNgLCBfbmV3QWxpZ25tZW50cylcblxuICAgIGlmIChfbmV3QWxpZ25tZW50cykge1xuICAgICAgY29uc3QgYWxpZ25lZFZlcnNlT2JqZWN0cyA9IHVwZGF0ZVZlcnNlV2l0aE5ld0FsaWdubWVudHMoX25ld0FsaWdubWVudHMpXG4gICAgICBjb25zb2xlLmxvZyhgc2F2ZUFsaWdubWVudCgpIC0gYWxpZ25lZFZlcnNlT2JqZWN0c2AsIGFsaWduZWRWZXJzZU9iamVjdHMpXG4gICAgICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAgICAgYWxpZ25lckRhdGE6IG51bGwsXG4gICAgICAgIGVkaXRpbmc6IGZhbHNlLFxuICAgICAgICBuZXdBbGlnbm1lbnRzOiBudWxsLFxuICAgICAgICB1cGRhdGVkVmVyc2VPYmplY3RzOiBhbGlnbmVkVmVyc2VPYmplY3RzLFxuICAgICAgfVxuICAgICAgc2V0U3RhdGUobmV3U3RhdGUpXG4gICAgICBjYWxsU2V0U2F2ZWRTdGF0ZSh0cnVlLCBuZXdTdGF0ZSApXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKGBzYXZlQWxpZ25tZW50KCkgLSBubyBhbGlnbm1lbnQgY2hhbmdlc2ApXG4gICAgICBzZXRTdGF0ZSh7XG4gICAgICAgIGFsaWduZXJEYXRhOiBudWxsLFxuICAgICAgICBlZGl0aW5nOiBmYWxzZSxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGNhbGxiYWNrIGZvciB3aGVuIHVzZXIgY2xpY2tlZCBvbiBidXR0b24gdG8gY2FuY2VsIHdvcmsgaW4gd29yZCBhbGlnbmVyLiAgQ2FsY3VsYXRlcyBhbmQgZGlzcGxheXMgY3VycmVudCBhbGlnbm1lbnQgdmFsaWQgc3RhdGUuIENsb3NlcyBhbGlnbmVyIGRpc3BsYXlcbiAgICovXG4gIGZ1bmN0aW9uIGNhbmNlbEFsaWdubWVudCgpIHtcbiAgICBjb25zb2xlLmxvZyhgY2FuY2VsQWxpZ25tZW50KClgKVxuICAgIGNvbnN0IHRhcmdldFZlcnNlVVNGTSA9IGdldEN1cnJlbnRWZXJzZVVzZm0odXBkYXRlZFZlcnNlT2JqZWN0cywgaW5pdGlhbFZlcnNlT2JqZWN0cywgdmVyc2VUZXh0Q2hhbmdlZCwgbmV3VmVyc2VUZXh0KVxuICAgIGNvbnN0IGFsaWduZWQgPSBpc1VzZm1BbGlnbmVkKHRhcmdldFZlcnNlVVNGTSwgb3JpZ2luYWxWZXJzZU9iamVjdHMpXG4gICAgc2V0U3RhdGUoeyBhbGlnbmVyRGF0YTogbnVsbCwgYWxpZ25lZCB9KVxuICB9XG5cbiAgLyoqXG4gICAqIGNhbGxiYWNrIGZvciBidXR0b24gdG8gc2V0IGVkaXRpbmcgc3RhdGVcbiAgICogQHBhcmFtIHtib29sZWFufSBlZGl0aW5nXyAtIGlmIHRydWUsIGVkaXRvciBpcyBzaG93biwgb3RoZXJ3aXNlIGVkaXRvciBpcyBoaWRkZW5cbiAgICogQHBhcmFtIHtzdHJpbmd9IF9uZXdWZXJzZVRleHQgLSBvcHRpb25hbCB2ZXJzZSB0ZXh0XG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVxdWlyZS1hd2FpdFxuICBhc3luYyBmdW5jdGlvbiBzZXRFZGl0aW5nKGVkaXRpbmdfLCBfbmV3VmVyc2VUZXh0ID0gbmV3VmVyc2VUZXh0KSB7XG4gICAgaWYgKGVuYWJsZUVkaXQpIHtcbiAgICAgIGlmIChlZGl0aW5nXyAhPT0gZWRpdGluZykge1xuICAgICAgICBfbmV3VmVyc2VUZXh0ID0gX25ld1ZlcnNlVGV4dCB8fCBpbml0aWFsVmVyc2VUZXh0XG4gICAgICAgIGxldCBfdXBkYXRlZFZlcnNlT2JqZWN0cyA9IHVwZGF0ZWRWZXJzZU9iamVjdHNcbiAgICAgICAgY29uc3QgdmVyc2VUZXh0Q2hhbmdlZCA9IF9uZXdWZXJzZVRleHQgIT09IGluaXRpYWxWZXJzZVRleHRcbiAgICAgICAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgICAgICAgZWRpdGluZzogZWRpdGluZ18sXG4gICAgICAgICAgbmV3VmVyc2VUZXh0OiBfbmV3VmVyc2VUZXh0LFxuICAgICAgICAgIHZlcnNlVGV4dENoYW5nZWQsXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXZlcnNlVGV4dENoYW5nZWQpIHtcbiAgICAgICAgICAvLyBmYWxsYmFjayB0byBtYWtlIHN1cmUgdGV4dCBmcm9tIHZlcnNlT2JqZWN0cyBtYXRjaGVzIGN1cnJlbnQgdGV4dFxuICAgICAgICAgIGNvbnN0IHZlcnNlVGV4dCA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuZ2V0VXNmbUZvclZlcnNlQ29udGVudCh7IHZlcnNlT2JqZWN0czogY3VycmVudFZlcnNlT2JqZWN0cyB9IClcblxuICAgICAgICAgIGlmICh2ZXJzZVRleHQgIT09IF9uZXdWZXJzZVRleHQpIHsgLy8gaWYgdGV4dCBmcm9tIHZlcnNlIG9iamVjdHMgZG9lcyBub3QgbWF0Y2ggbGF0ZXN0IHRleHRcbiAgICAgICAgICAgIC8vIGFwcGx5IGFsaWdubWVudCB0byBjdXJyZW50IHRleHRcbiAgICAgICAgICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VPYmplY3RzIH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKGN1cnJlbnRWZXJzZU9iamVjdHMsIF9uZXdWZXJzZVRleHQpXG4gICAgICAgICAgICBfdXBkYXRlZFZlcnNlT2JqZWN0cyA9IHRhcmdldFZlcnNlT2JqZWN0cyAvLyB1cGRhdGUgdmVyc2VPYmplY3RzIHRvIG1hdGNoIGN1cnJlbnQgdGV4dFxuICAgICAgICAgICAgbmV3U3RhdGVbJ3VwZGF0ZWRWZXJzZU9iamVjdHMnXSA9IF91cGRhdGVkVmVyc2VPYmplY3RzXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc2V0U3RhdGUobmV3U3RhdGUpXG4gICAgICAgIGNvbnN0IF9hbGlnbm1lbnRzQ2hhbmdlZCA9IChfdXBkYXRlZFZlcnNlT2JqZWN0cyAmJiAhaXNFcXVhbChpbml0aWFsVmVyc2VPYmplY3RzLCBfdXBkYXRlZFZlcnNlT2JqZWN0cykpXG4gICAgICAgIGNhbGxTZXRTYXZlZFN0YXRlKHZlcnNlVGV4dENoYW5nZWQgfHwgX2FsaWdubWVudHNDaGFuZ2VkLCBuZXdTdGF0ZSApXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGNhbGxiYWNrIGZyb20gdGhlIGVkaXQgb25DaGFuZ2UgZXZlbnQgdG8gdXBkYXRlIGVkaXQgc3RhdGUgdmFyaWFibGVzXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gY2hhbmdlZCAtIHRydWUgaWYgdGhlIG5ld1ZlcnNlVGV4dCBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgaW5pdGlhbFZlcnNlVGV4dFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmV3VmVyc2VUZXh0IC0gY3VycmVudCBjaGFuZ2VkIHZlcnNlIHRleHRcbiAgICogQHBhcmFtIHtzdHJpbmd9IF9pbml0aWFsVmVyc2VUZXh0IC0gaW5pdGlhbCB2ZXJzZSB0ZXh0XG4gICAqL1xuICBmdW5jdGlvbiBzZXRWZXJzZUNoYW5nZWQoY2hhbmdlZCwgbmV3VmVyc2VUZXh0LCBfaW5pdGlhbFZlcnNlVGV4dCkge1xuICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VUZXh0IH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKGN1cnJlbnRWZXJzZU9iamVjdHMsIG5ld1ZlcnNlVGV4dClcbiAgICBjb25zdCBhbGlnbmVkID0gaXNVc2ZtQWxpZ25lZCh0YXJnZXRWZXJzZVRleHQsIG9yaWdpbmFsVmVyc2VPYmplY3RzKVxuICAgIGNvbnN0IHZlcnNlVGV4dENoYW5nZWQgPSBuZXdWZXJzZVRleHQgIT09IGluaXRpYWxWZXJzZVRleHRcblxuICAgIHNldFN0YXRlKHtcbiAgICAgIHZlcnNlVGV4dENoYW5nZWQsXG4gICAgICBuZXdWZXJzZVRleHQsXG4gICAgICBhbGlnbmVkLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzID0gUmVhY3QudXNlTWVtbyggKCkgPT4geyAvLyBpZiB2ZXJzZSBoYXMgYmVlbiBlZGl0ZWQgb3IgYWxpZ25tZW50IGNoYW5nZWQsIHRoZW4gZ2VuZXJhdGUgbmV3IHZlcnNlT2JqZWN0cyB0byBkaXNwbGF5IGluIFNjcmlwdHVyZVBhbmVcbiAgICBpZiAoaW5pdGlhbFZlcnNlT2JqZWN0cykge1xuICAgICAgY29uc3QgdGFyZ2V0VmVyc2VVU0ZNID0gZ2V0Q3VycmVudFZlcnNlVXNmbSh1cGRhdGVkVmVyc2VPYmplY3RzLCBpbml0aWFsVmVyc2VPYmplY3RzLCB2ZXJzZVRleHRDaGFuZ2VkLCBuZXdWZXJzZVRleHQpXG4gICAgICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzXyA9IHVzZm1IZWxwZXJzLnVzZm1WZXJzZVRvSnNvbih0YXJnZXRWZXJzZVVTRk0pXG4gICAgICByZXR1cm4gY3VycmVudFZlcnNlT2JqZWN0c19cbiAgICB9XG4gICAgcmV0dXJuIGluaXRpYWxWZXJzZU9iamVjdHNcbiAgfSwgW3VwZGF0ZWRWZXJzZU9iamVjdHMsIGluaXRpYWxWZXJzZU9iamVjdHMsIHZlcnNlVGV4dENoYW5nZWQsIG5ld1ZlcnNlVGV4dF0pXG5cbiAgY29uc3QgdW5zYXZlZENoYW5nZXM6Ym9vbGVhbiA9IFJlYWN0LnVzZU1lbW8oICgpID0+IHsgLy8gaWYgdmVyc2UgaGFzIGJlZW4gZWRpdGVkIG9yIGFsaWdubWVudCBjaGFuZ2VkLCB0aGVuIGluZGljYXRlIHdlIGhhdmUgdW5zYXZlZCBjaGFuZ2VzXG4gICAgY29uc3QgY2hhbmdlZCA9IHZlcnNlVGV4dENoYW5nZWQgfHwgKHVwZGF0ZWRWZXJzZU9iamVjdHMgJiYgIWlzRXF1YWwoaW5pdGlhbFZlcnNlT2JqZWN0cywgdXBkYXRlZFZlcnNlT2JqZWN0cykpXG4gICAgcmV0dXJuIGNoYW5nZWRcbiAgfSwgW3VwZGF0ZWRWZXJzZU9iamVjdHMsIGluaXRpYWxWZXJzZU9iamVjdHMsIHZlcnNlVGV4dENoYW5nZWRdKVxuXG4gIC8qKlxuICAgKiBjYWxsYmFjayB0byBzY3JpcHR1cmUgY2FyZCB0byB1cGRhdGVkIHdpdGggbGF0ZXN0IHN0YXRlIGZvciBzYXZpbmdcbiAgICogQHBhcmFtIHtib29sZWFufSB1bnNhdmVkQ2hhbmdlc19cbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld1N0YXRlXG4gICAqL1xuICBmdW5jdGlvbiBjYWxsU2V0U2F2ZWRTdGF0ZSh1bnNhdmVkQ2hhbmdlc18sIG5ld1N0YXRlID0geyB9ICkge1xuICAgIGNvbnN0IF9uZXdTdGF0ZSA9IHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgLi4ubmV3U3RhdGUsXG4gICAgfVxuXG4gICAgLy8gY29uc29sZS5sb2coYGNhbGxTZXRTYXZlZFN0YXRlIC0gbmV3IHN0YXRlYCwgX25ld1N0YXRlKVxuICAgIHNldFNhdmVkQ2hhbmdlcyAmJiBzZXRTYXZlZENoYW5nZXMoY3VycmVudEluZGV4LCAhdW5zYXZlZENoYW5nZXNfLCB7XG4gICAgICBnZXRDaGFuZ2VzLFxuICAgICAgY2xlYXJDaGFuZ2VzLFxuICAgICAgc3RhdGU6IF9uZXdTdGF0ZSxcbiAgICB9KVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gc2V0IHNhdmVkIGNoYW5nZXMgd2hlbmV2ZXIgdXNlciBlZGl0cyB2ZXJzZSB0ZXh0IG9yIGFsaWdubWVudHMgb3IgaWYgYWxpZ25tZW50cyBhcmUgb3BlblxuICAgIGNvbnN0IHVuc2F2ZWRDaGFuZ2VzXyA9IHVuc2F2ZWRDaGFuZ2VzIHx8IGFsaWduZXJEYXRhXG4gICAgY2FsbFNldFNhdmVkU3RhdGUodW5zYXZlZENoYW5nZXNfKVxuICB9LCBbdW5zYXZlZENoYW5nZXMsIGFsaWduZXJEYXRhXSlcblxuICAvKipcbiAgICogY2FsbGJhY2sgZm9yIHdoZW4gYWxpZ25tZW50cyBhcmUgYmVpbmcgY2hhbmdlZFxuICAgKiBAcGFyYW0ge29iamVjdH0gcmVzdWx0c1xuICAgKiBAcmV0dXJuIHtib29sZWFufSB0cnVlIGlmIGFsaWdubWVudCBpcyBjb21wbGV0ZVxuICAgKi9cbiAgZnVuY3Rpb24gb25BbGlnbm1lbnRzQ2hhbmdlKHJlc3VsdHMpIHtcbiAgICBjb25zb2xlLmxvZyhgb25BbGlnbm1lbnRzQ2hhbmdlKCkgLSBhbGlnbm1lbnQgY2hhbmdlZCwgcmVzdWx0c2AsIHJlc3VsdHMpIC8vIG1lcmdlIGFsaWdubWVudHMgaW50byB0YXJnZXQgdmVyc2UgYW5kIGNvbnZlcnQgdG8gVVNGTVxuICAgIGNvbnN0IHsgdGFyZ2V0V29yZHMsIHZlcnNlQWxpZ25tZW50cyB9ID0gcmVzdWx0c1xuICAgIGNvbnN0IGFsaWdubWVudENvbXBsZXRlID0gQWxpZ25tZW50SGVscGVycy5hcmVBbGdubWVudHNDb21wbGV0ZSh0YXJnZXRXb3JkcywgdmVyc2VBbGlnbm1lbnRzKVxuICAgIGNvbnNvbGUubG9nKGBBbGlnbm1lbnRzIGFyZSAke2FsaWdubWVudENvbXBsZXRlID8gJ0NPTVBMRVRFIScgOiAnaW5jb21wbGV0ZSd9YClcbiAgICBzZXRTdGF0ZSh7IG5ld0FsaWdubWVudHM6IHJlc3VsdHMsIGFsaWduZWQ6IGFsaWdubWVudENvbXBsZXRlIH0pXG4gICAgcmV0dXJuIGFsaWdubWVudENvbXBsZXRlXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjdGlvbnM6IHtcbiAgICAgIGNhbmNlbEFsaWdubWVudCxcbiAgICAgIGNsZWFyQ2hhbmdlcyxcbiAgICAgIGdldENoYW5nZXMsXG4gICAgICBoYW5kbGVBbGlnbm1lbnRDbGljayxcbiAgICAgIG9uQWxpZ25tZW50c0NoYW5nZSxcbiAgICAgIHNhdmVBbGlnbm1lbnQsXG4gICAgICBzZXRFZGl0aW5nLFxuICAgICAgc2V0VmVyc2VDaGFuZ2VkLFxuICAgIH0sXG4gICAgc3RhdGU6IHtcbiAgICAgIGFsaWduZWQsXG4gICAgICBhbGlnbmVyRGF0YSxcbiAgICAgIGN1cnJlbnRWZXJzZU9iamVjdHMsXG4gICAgICBlZGl0aW5nLFxuICAgICAgaW5pdGlhbFZlcnNlVGV4dCxcbiAgICAgIGluaXRpYWxWZXJzZU9iamVjdHMsXG4gICAgICBuZXdWZXJzZVRleHQsXG4gICAgICByZWZlcmVuY2U6IGJhc2ljUmVmZXJlbmNlLFxuICAgICAgc291cmNlTGFuZ3VhZ2UsXG4gICAgICB0YXJnZXRMYW5ndWFnZSxcbiAgICAgIHRpdGxlLFxuICAgICAgdW5zYXZlZENoYW5nZXMsXG4gICAgICB2ZXJzZVRleHRDaGFuZ2VkLFxuICAgIH0sXG4gIH1cbn1cbiJdfQ==
|
|
590
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0LnRzeCJdLCJuYW1lcyI6WyJSZWFjdCIsIkFsaWdubWVudEhlbHBlcnMiLCJVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIiwidXNmbUhlbHBlcnMiLCJpc0VxdWFsIiwiU2NyaXB0dXJlQ29uZmlnIiwiU2NyaXB0dXJlUmVmZXJlbmNlIiwiU2VydmVyQ29uZmlnIiwiZ2V0U2NyaXB0dXJlUmVzb3VyY2VTZXR0aW5ncyIsIk9SSUdJTkFMX1NPVVJDRSIsImdldFZlcnNlc0ZvclJlZiIsImlzVXNmbUFsaWduZWQiLCJ0YXJnZXRWZXJzZVVTRk0iLCJvcmlnaW5hbFZlcnNlT2JqZWN0cyIsImxlbmd0aCIsImV4dHJhY3RBbGlnbm1lbnRzRnJvbVRhcmdldFZlcnNlIiwiYWxpZ25tZW50cyIsIndvcmRCYW5rIiwiYXJlQWxnbm1lbnRzQ29tcGxldGUiLCJnZXRDdXJyZW50VmVyc2VVc2ZtIiwidXBkYXRlZFZlcnNlT2JqZWN0cyIsImluaXRpYWxWZXJzZU9iamVjdHMiLCJ2ZXJzZVRleHRDaGFuZ2VkIiwibmV3VmVyc2VUZXh0IiwiY3VycmVudFZlcnNlT2JqZWN0c18iLCJ1cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSIsInRhcmdldFZlcnNlVGV4dCIsImNvbnZlcnRWZXJzZURhdGFUb1VTRk0iLCJ1c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0IiwiY3VycmVudEluZGV4IiwiZW5hYmxlRWRpdCIsImVuYWJsZUFsaWdubWVudCIsImh0dHBDb25maWciLCJpbml0aWFsVmVyc2VUZXh0IiwiaXNOZXdUZXN0YW1lbnQiLCJvcmlnaW5hbExhbmd1YWdlT3duZXIiLCJvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzIiwib3JpZ2luYWxSZXBvVXJsIiwicmVmZXJlbmNlIiwic2NyaXB0dXJlQ29uZmlnIiwic2NyaXB0dXJlU2V0dGluZ3MiLCJzZXRTYXZlZENoYW5nZXMiLCJzb3VyY2VMYW5ndWFnZSIsInN0YXJ0RWRpdEJyYW5jaCIsInRhcmdldExhbmd1YWdlIiwidGl0bGUiLCJ3b3JraW5nUmVzb3VyY2VCcmFuY2giLCJ1c2VTdGF0ZSIsImFsaWduZWQiLCJhbGlnbmVyRGF0YSIsImVkaXRpbmciLCJuZXdBbGlnbm1lbnRzIiwic3RhdGUiLCJzZXRTdGF0ZV8iLCJjaGFwdGVyIiwidmVyc2UiLCJwcm9qZWN0SWQiLCJiYXNpY1JlZmVyZW5jZSIsInNldFN0YXRlIiwibmV3U3RhdGUiLCJwcmV2U3RhdGUiLCJjbGVhckNoYW5nZXMiLCJjb25zb2xlIiwibG9nIiwiSlNPTiIsInN0cmluZ2lmeSIsImNsZWFyU3RhdGUiLCJvcmlnaW5hbFNjcmlwdHVyZVNldHRpbmdzXyIsInJlc291cmNlSWQiLCJib29rSWQiLCJvcmlnaW5hbFNjcmlwdHVyZVNldHRpbmdzIiwicmVzb3VyY2VMaW5rIiwidXNlTWVtbyIsInZlcnNlT2JqZWN0cyIsInZlcnNlcyIsImxhbmd1YWdlSWQiLCJ2ZXJzZVJlZmVyZW5jZSIsIm9yaWdWZXJzZU9iamVjdHMiLCJ2ZXJzZURhdGEiLCJBcnJheSIsInByb3RvdHlwZSIsInB1c2giLCJhcHBseSIsInVzZUVmZmVjdCIsIm5vdEVtcHR5IiwiYWxpZ25lZF8iLCJyZXN1bHRzIiwiZ2V0Q2hhbmdlcyIsIl9uZXdTdGF0ZSIsInVwZGF0ZWRWZXJzZU9iamVjdHNfIiwidXBkYXRlVmVyc2VXaXRoTmV3QWxpZ25tZW50cyIsInRhcmdldFZlcnNlT2JqZWN0cyIsInJlZiIsInZlcnNlc0ZvclJlZiIsImhhbmRsZUFsaWdubWVudENsaWNrIiwiX2FsaWduZXJEYXRhIiwib3JpZ2luYWxWZXJzZVVzZm0iLCJwYXJzZVVzZm1Ub1dvcmRBbGlnbmVyRGF0YSIsInRhcmdldFdvcmRzIiwidmVyc2VBbGlnbm1lbnRzIiwiX25ld0FsaWdubWVudHMiLCJ2ZXJzZVVzZm0iLCJhZGRBbGlnbm1lbnRzVG9WZXJzZVVTRk0iLCJhbGlnbmVkVmVyc2VPYmplY3RzIiwidXNmbVZlcnNlVG9Kc29uIiwic2F2ZUFsaWdubWVudCIsImNhbGxTZXRTYXZlZFN0YXRlIiwiY2FuY2VsQWxpZ25tZW50Iiwic2V0RWRpdGluZyIsImVkaXRpbmdfIiwiX25ld1ZlcnNlVGV4dCIsIl91cGRhdGVkVmVyc2VPYmplY3RzIiwidmVyc2VUZXh0IiwiZ2V0VXNmbUZvclZlcnNlQ29udGVudCIsImN1cnJlbnRWZXJzZU9iamVjdHMiLCJfYWxpZ25tZW50c0NoYW5nZWQiLCJzZXRWZXJzZUNoYW5nZWQiLCJjaGFuZ2VkIiwiX2luaXRpYWxWZXJzZVRleHQiLCJ1bnNhdmVkQ2hhbmdlcyIsInVuc2F2ZWRDaGFuZ2VzXyIsIm9uQWxpZ25tZW50c0NoYW5nZSIsImFsaWdubWVudENvbXBsZXRlIiwiYWN0aW9ucyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQSxPQUFPLEtBQUtBLEtBQVosTUFBdUIsT0FBdkI7QUFDQSxTQUNFQyxnQkFERixFQUVFQyx5QkFGRixFQUdFQyxXQUhGLFFBSU8sa0JBSlA7QUFLQSxPQUFPLEtBQUtDLE9BQVosTUFBeUIsWUFBekI7QUFDQSxTQUNFQyxlQURGLEVBRUVDLGtCQUZGLEVBR0VDLFlBSEYsUUFJTyxVQUpQO0FBS0EsU0FBU0MsNEJBQVQsUUFBNkMsNEJBQTdDO0FBQ0EsU0FBU0MsZUFBVCxRQUFnQyxVQUFoQztBQUNBLFNBQVNDLGVBQVQsUUFBZ0MsZ0JBQWhDOztBQXFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0MsYUFBVCxDQUF1QkMsZUFBdkIsRUFBd0NDLG9CQUF4QyxFQUE4RDtBQUFBOztBQUM1REEsRUFBQUEsb0JBQW9CLEdBQUcseUJBQUFBLG9CQUFvQixVQUFwQiw4REFBc0JDLE1BQXRCLEdBQStCRCxvQkFBL0IsR0FBc0QsSUFBN0UsQ0FENEQsQ0FDc0I7O0FBRHRCLDhCQUUzQlosZ0JBQWdCLENBQUNjLGdDQUFqQixDQUFrREgsZUFBbEQsRUFBbUVDLG9CQUFuRSxDQUYyQjtBQUFBLE1BRXBERyxVQUZvRCx5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QVhBLFdBRks7QUFHTGlFLE1BQUFBLG1CQUFtQixFQUFuQkEsbUJBSEs7QUFJTGhFLE1BQUFBLE9BQU8sRUFBUEEsT0FKSztBQUtMcEIsTUFBQUEsVUFBVSxFQUFWQSxVQUxLO0FBTUxDLE1BQUFBLGVBQWUsRUFBZkEsZUFOSztBQU9MRSxNQUFBQSxnQkFBZ0IsRUFBaEJBLGdCQVBLO0FBUUxaLE1BQUFBLG1CQUFtQixFQUFuQkEsbUJBUks7QUFTTEUsTUFBQUEsWUFBWSxFQUFaQSxZQVRLO0FBVUxlLE1BQUFBLFNBQVMsRUFBRW1CLGNBVk47QUFXTGYsTUFBQUEsY0FBYyxFQUFkQSxjQVhLO0FBWUxFLE1BQUFBLGNBQWMsRUFBZEEsY0FaSztBQWFMQyxNQUFBQSxLQUFLLEVBQUxBLEtBYks7QUFjTDBFLE1BQUFBLGNBQWMsRUFBZEEsY0FkSztBQWVMakcsTUFBQUEsZ0JBQWdCLEVBQWhCQTtBQWZLO0FBWEYsR0FBUDtBQTZCRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1pZ25vcmVcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtcbiAgQWxpZ25tZW50SGVscGVycyxcbiAgVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycyxcbiAgdXNmbUhlbHBlcnMsXG59IGZyb20gJ3dvcmQtYWxpZ25lci1yY2wnXG5pbXBvcnQgKiBhcyBpc0VxdWFsIGZyb20gJ2RlZXAtZXF1YWwnXG5pbXBvcnQge1xuICBTY3JpcHR1cmVDb25maWcsXG4gIFNjcmlwdHVyZVJlZmVyZW5jZSxcbiAgU2VydmVyQ29uZmlnLFxufSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB7IGdldFNjcmlwdHVyZVJlc291cmNlU2V0dGluZ3MgfSBmcm9tICcuLi91dGlscy9TY3JpcHR1cmVTZXR0aW5ncydcbmltcG9ydCB7IE9SSUdJTkFMX1NPVVJDRSB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IHsgZ2V0VmVyc2VzRm9yUmVmIH0gZnJvbSAnLi91c2VTY3JpcHR1cmUnXG5cbmludGVyZmFjZSBTdGFydEVkaXQge1xuICAoKTogUHJvbWlzZTxzdHJpbmc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjcmlwdHVyZUFMaWdubWVudEVkaXRQcm9wcyB7XG4gIC8vIGluZGV4IHRvIHVzZSBmb3IgYm9vayAoZS5nLiBgMDFgIGZvciBgR0VOYClcbiAgYm9va0luZGV4OiBzdHJpbmcsXG4gIC8vIGN1cnJlbnQgdmVyc2Ugc2VsZWN0ZWQgZnJvbSBpbml0aWFsVmVyc2VPYmplY3RzW11cbiAgY3VycmVudEluZGV4OiBudW1iZXIsXG4gIC8vIHJlZmVyZW5jZSBmb3IgdmVyc2Ugc2VsZWN0ZWQgZm9yIGFsaWdubWVudFxuICBjdXJyZW50VmVyc2VSZWY6IFNjcmlwdHVyZVJlZmVyZW5jZSxcbiAgLy8gaWYgdHJ1ZSB0aGVuIGVkaXRpbmcgaXMgYWxsb3dlZFxuICBlbmFibGVFZGl0OiBib29sZWFuLFxuICAvLyBpZiB0cnVlIHRoZW4gYWxpZ25tZW50IGlzIGFsbG93ZWRcbiAgZW5hYmxlQWxpZ25tZW50OiBib29sZWFuLFxuICAvLyBjb25maWd1cmF0aW9uIHRvIHVzZSBmb3IgaHR0cCBjb21tdW5pY2F0aW9uXG4gIGh0dHBDb25maWc6IFNlcnZlckNvbmZpZyxcbiAgLy8gYXJyYXkgb2YgZWFjaCB2ZXJzZSBmb3IgaW4gcmVmZXJlbmNlIHJhbmdlXG4gIGluaXRpYWxWZXJzZU9iamVjdHM6IFtdLFxuICAvLyBpbml0aWFsIHRleHQgZm9yIHZlcnNlXG4gIGluaXRpYWxWZXJzZVRleHQ6IHN0cmluZyxcbiAgLy8gZmxhZyB0aGF0IHdlIGFyZSB3b3JraW5nIG9uIE5UIGJvb2tcbiAgaXNOZXdUZXN0YW1lbnQ6IGJvb2xlYW4sXG4gIC8vIHVzZXIgbmFtZSBvZiBsb2dnZWQgaW4gdXNlclxuICBsb2dnZWRJblVzZXI6IHN0cmluZyxcbiAgLy8gb3duZXIgdG8gdXNlIHdoZW4gZmV0Y2hpbmcgb3JpZ2luYWwgbGFuZ3VhZ2UgcmVzb3VyY2VzXG4gIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcjogc3RyaW5nLFxuICAvLyB1cmwgZm9yIHRoZSBvcmlnaW5hbCBsYW5ndWFnZSByZXBvXG4gIG9yaWdpbmFsUmVwb1VybDogc3RyaW5nLFxuICAvLyBvcmlnaW5hbCBzY3JpcHR1cmUgYm9va09iamVjdHMgZm9yIGN1cnJlbnQgYm9va1xuICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzOiBvYmplY3QsXG4gIC8qKiBjdXJyZW50IHJlZmVyZW5jZSAqKi9cbiAgcmVmZXJlbmNlOiBTY3JpcHR1cmVSZWZlcmVuY2U7XG4gIC8vIGRldGFpbHMgYWJvdXQgdGhlIGN1cnJlbnQgc2NyaXB0dXJlIGxvYWRlZFxuICBzY3JpcHR1cmVDb25maWc6IFNjcmlwdHVyZUNvbmZpZyxcbiAgLy8gc2V0dGluZ3MgdG8gYmUgdXNlZCBmb3Igc2NyaXB0dXJlXG4gIHNjcmlwdHVyZVNldHRpbmdzOiB7IH0sXG4gIC8vIGNhbGxiYWNrIHRvIHNhdmUgY3VycmVudCB2ZXJzZSBlZGl0IGFuZCBhbGlnbm1lbnQgY2hhbmdlc1xuICBzZXRTYXZlZENoYW5nZXM6IEZ1bmN0aW9uLFxuICAvLyBzb3VyY2UgbGFuZ3VhZ2VcbiAgc291cmNlTGFuZ3VhZ2U6IHN0cmluZyxcbiAgLy8gY2FsbGJhY2sgdG8gY3JlYXRlIGEgdXNlciBicmFuY2ggZm9yIHNhdmluZyBlZGl0IGRhdGFcbiAgc3RhcnRFZGl0QnJhbmNoOiBTdGFydEVkaXQsXG4gIC8vIGN1cnJlbnQgdGFyZ2V0IGxhbmd1YWdlXG4gIHRhcmdldExhbmd1YWdlOiBvYmplY3QsXG4gIC8vIHRpdGxlIHRvIHNob3cgaW4gYWxpZ25tZW50XG4gIHRpdGxlOiBzdHJpbmcsXG4gICAvLyBicmFuY2ggbmFtZSBjdXJyZW50bHkgYmVpbmcgdXNlZCAoZS5nLiBgbWFzdGVyYCBvciB1c2VyIGJyYW5jaClcbiAgd29ya2luZ1Jlc291cmNlQnJhbmNoOiBzdHJpbmcsXG59XG5cbi8qKlxuICogZGV0ZXJtaW5lcyBpZiBhbGlnbm1lbnQgaXMgY29tcGxldGUgYmFzZWQgb24gdGFyZ2V0IFVTRk0gYW5kIG9yaWdpbmFsIGxhbmd1YWdlIHZlcnNlIG9iamVjdHNcbiAqIEBwYXJhbSB7c3RyaW5nfSB0YXJnZXRWZXJzZVVTRk1cbiAqIEBwYXJhbSB7b2JqZWN0W119IG9yaWdpbmFsVmVyc2VPYmplY3RzXG4gKi9cbmZ1bmN0aW9uIGlzVXNmbUFsaWduZWQodGFyZ2V0VmVyc2VVU0ZNLCBvcmlnaW5hbFZlcnNlT2JqZWN0cykge1xuICBvcmlnaW5hbFZlcnNlT2JqZWN0cyA9IG9yaWdpbmFsVmVyc2VPYmplY3RzPy5sZW5ndGggPyBvcmlnaW5hbFZlcnNlT2JqZWN0cyA6IG51bGwgLy8gbWFrZSBzdXJlIG5vdCBwYXNzaW5nIGVtcHR5IEFycmF5XG4gIGNvbnN0IHsgYWxpZ25tZW50cywgd29yZEJhbmsgfSA9IEFsaWdubWVudEhlbHBlcnMuZXh0cmFjdEFsaWdubWVudHNGcm9tVGFyZ2V0VmVyc2UodGFyZ2V0VmVyc2VVU0ZNLCBvcmlnaW5hbFZlcnNlT2JqZWN0cylcbiAgcmV0dXJuIEFsaWdubWVudEhlbHBlcnMuYXJlQWxnbm1lbnRzQ29tcGxldGUod29yZEJhbmssIGFsaWdubWVudHMpXG59XG5cbi8qKlxuICogZ2V0IHRoZSB1cGRhdGVkIFVTRk0gZm9yIHRhcmdldCB2ZXJzZSBmcm9tIHRoZSB1cGRhdGVkIHZlcnNlIG9iamVjdHMgYW5kIGxhdGVzdCB0ZXh0XG4gKiBAcGFyYW0ge29iamVjdFtdfSB1cGRhdGVkVmVyc2VPYmplY3RzXG4gKiBAcGFyYW0ge29iamVjdFtdfSBpbml0aWFsVmVyc2VPYmplY3RzXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHZlcnNlVGV4dENoYW5nZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBuZXdWZXJzZVRleHRcbiAqL1xuZnVuY3Rpb24gZ2V0Q3VycmVudFZlcnNlVXNmbSh1cGRhdGVkVmVyc2VPYmplY3RzLCBpbml0aWFsVmVyc2VPYmplY3RzLCB2ZXJzZVRleHRDaGFuZ2VkOiBib29sZWFuLCBuZXdWZXJzZVRleHQpIHtcbiAgbGV0IHRhcmdldFZlcnNlVVNGTSA9IG51bGxcbiAgY29uc3QgY3VycmVudFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzIHx8IGluaXRpYWxWZXJzZU9iamVjdHNcblxuICBpZiAodmVyc2VUZXh0Q2hhbmdlZCAmJiBuZXdWZXJzZVRleHQpIHtcbiAgICBjb25zdCB7IHRhcmdldFZlcnNlVGV4dCB9ID0gQWxpZ25tZW50SGVscGVycy51cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZShjdXJyZW50VmVyc2VPYmplY3RzXywgbmV3VmVyc2VUZXh0KVxuICAgIHRhcmdldFZlcnNlVVNGTSA9IHRhcmdldFZlcnNlVGV4dFxuICB9IGVsc2Uge1xuICAgIHRhcmdldFZlcnNlVVNGTSA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTShjdXJyZW50VmVyc2VPYmplY3RzXylcbiAgfVxuICByZXR1cm4gdGFyZ2V0VmVyc2VVU0ZNXG59XG5cbi8vIG1hbmFnZSB2ZXJzZSBlZGl0IGFuZCBhbGlnbm1lbnQgc3RhdGVzXG5leHBvcnQgZnVuY3Rpb24gdXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdCh7XG4gIGN1cnJlbnRJbmRleCxcbiAgZW5hYmxlRWRpdCxcbiAgZW5hYmxlQWxpZ25tZW50LFxuICBodHRwQ29uZmlnLFxuICBpbml0aWFsVmVyc2VPYmplY3RzLFxuICBpbml0aWFsVmVyc2VUZXh0LFxuICBpc05ld1Rlc3RhbWVudCxcbiAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLFxuICBvcmlnaW5hbFJlcG9VcmwsXG4gIHJlZmVyZW5jZSxcbiAgc2NyaXB0dXJlQ29uZmlnLFxuICBzY3JpcHR1cmVTZXR0aW5ncyxcbiAgc2V0U2F2ZWRDaGFuZ2VzLFxuICBzb3VyY2VMYW5ndWFnZSxcbiAgc3RhcnRFZGl0QnJhbmNoLFxuICB0YXJnZXRMYW5ndWFnZSxcbiAgdGl0bGUsXG4gIHdvcmtpbmdSZXNvdXJjZUJyYW5jaCxcbn0gOiBTY3JpcHR1cmVBTGlnbm1lbnRFZGl0UHJvcHMpIHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV9dID0gUmVhY3QudXNlU3RhdGUoe1xuICAgIGFsaWduZWQ6IGZhbHNlLFxuICAgIGFsaWduZXJEYXRhOiBudWxsLFxuICAgIGVkaXRpbmc6IGZhbHNlLFxuICAgIG5ld0FsaWdubWVudHM6IG51bGwsXG4gICAgbmV3VmVyc2VUZXh0OiBudWxsLFxuICAgIHVwZGF0ZWRWZXJzZU9iamVjdHM6IG51bGwsXG4gICAgdmVyc2VUZXh0Q2hhbmdlZDogZmFsc2UsXG4gIH0pXG5cbiAgY29uc3Qge1xuICAgIGFsaWduZWQsXG4gICAgYWxpZ25lckRhdGEsXG4gICAgZWRpdGluZyxcbiAgICBuZXdBbGlnbm1lbnRzLFxuICAgIG5ld1ZlcnNlVGV4dCxcbiAgICB1cGRhdGVkVmVyc2VPYmplY3RzLFxuICAgIHZlcnNlVGV4dENoYW5nZWQsXG4gIH0gPSBzdGF0ZVxuICBjb25zdCBjaGFwdGVyID0gcmVmZXJlbmNlPy5jaGFwdGVyXG4gIGNvbnN0IHZlcnNlID0gcmVmZXJlbmNlPy52ZXJzZVxuICBjb25zdCBwcm9qZWN0SWQgPSByZWZlcmVuY2U/LnByb2plY3RJZFxuICBjb25zdCBiYXNpY1JlZmVyZW5jZSA9IHsgLy8gb25seSBoYXMgdGhlIHRocmVlIGJhc2ljIGZpZWxkc1xuICAgIGNoYXB0ZXIsXG4gICAgdmVyc2UsXG4gICAgcHJvamVjdElkLFxuICB9XG5cbiAgZnVuY3Rpb24gc2V0U3RhdGUobmV3U3RhdGUpIHtcbiAgICBzZXRTdGF0ZV8ocHJldlN0YXRlID0+ICh7IC4uLnByZXZTdGF0ZSwgLi4ubmV3U3RhdGUgfSkpXG4gIH1cblxuICBmdW5jdGlvbiBjbGVhckNoYW5nZXMoKSB7XG4gICAgY29uc29sZS5sb2coYGNsZWFyQ2hhbmdlcygpIC0gJHtKU09OLnN0cmluZ2lmeShiYXNpY1JlZmVyZW5jZSl9YClcbiAgICBjb25zdCBjbGVhclN0YXRlID0ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBhbGlnbmVyRGF0YTogbnVsbCxcbiAgICAgIGVkaXRpbmc6IGZhbHNlLFxuICAgICAgbmV3QWxpZ25tZW50czogbnVsbCxcbiAgICAgIG5ld1ZlcnNlVGV4dDogbnVsbCxcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHM6IG51bGwsXG4gICAgICB2ZXJzZVRleHRDaGFuZ2VkOiBmYWxzZSxcbiAgICB9XG5cbiAgICBpZiAoIWlzRXF1YWwoc3RhdGUsIGNsZWFyU3RhdGUpKSB7XG4gICAgICBjb25zb2xlLmxvZyhgY2xlYXJDaGFuZ2VzKCkgLSByZWZlcmVuY2UgY2hhbmdlZCwgcmVzZXQgZWRpdC9hbGlnbm1lbnQgc3RhdGUgdmFyaWFibGVzYClcbiAgICAgIHNldFN0YXRlKGNsZWFyU3RhdGUpXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgb3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5nc18gPSB7XG4gICAgLi4uc2NyaXB0dXJlU2V0dGluZ3MsXG4gICAgcmVzb3VyY2VJZDogT1JJR0lOQUxfU09VUkNFLFxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBodHRwQ29uZmlnID0gaHR0cENvbmZpZyB8fCB7fVxuICBjb25zdCBib29rSWQgPSBwcm9qZWN0SWRcbiAgY29uc3Qgb3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5ncyA9IGdldFNjcmlwdHVyZVJlc291cmNlU2V0dGluZ3MoXG4gICAgYm9va0lkLCBvcmlnaW5hbFNjcmlwdHVyZVNldHRpbmdzXywgaXNOZXdUZXN0YW1lbnQsIG9yaWdpbmFsUmVwb1VybCxcbiAgKVxuXG4gIGlmICghZW5hYmxlQWxpZ25tZW50KSB7IC8vIGlmIG5vdCBlbmFibGVkLCB0aGVuIHdlIGRvbid0IGZldGNoIHJlc291cmNlXG4gICAgb3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5ncy5yZXNvdXJjZUxpbmsgPSBudWxsXG4gIH1cblxuICBjb25zdCBvcmlnaW5hbFZlcnNlT2JqZWN0cyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4geyAvLyBnZXQgdGhlIG9yaWdpbmFsIGxhbmd1YWdlIHZlcnNlT2JqZWN0c1xuICAgIGNvbnN0IHZlcnNlT2JqZWN0cyA9IFtdXG5cbiAgICBpZiAob3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cykge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgdmVyc2VzID0gZ2V0VmVyc2VzRm9yUmVmKGJhc2ljUmVmZXJlbmNlLCBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLCBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPy5sYW5ndWFnZUlkKVxuXG4gICAgICBpZiAodmVyc2VzPy5sZW5ndGgpIHtcbiAgICAgICAgZm9yIChjb25zdCB2ZXJzZVJlZmVyZW5jZSBvZiB2ZXJzZXMpIHtcbiAgICAgICAgICBjb25zdCBvcmlnVmVyc2VPYmplY3RzID0gdmVyc2VSZWZlcmVuY2U/LnZlcnNlRGF0YT8udmVyc2VPYmplY3RzXG5cbiAgICAgICAgICBpZiAob3JpZ1ZlcnNlT2JqZWN0cykge1xuICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkodmVyc2VPYmplY3RzLCBvcmlnVmVyc2VPYmplY3RzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmVyc2VPYmplY3RzXG4gIH0sIFtvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLCBjaGFwdGVyLCB2ZXJzZSwgcHJvamVjdElkXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB1cGRhdGUgYWxpZ25tZW50IHN0YXR1cyB3aGVuIGFsaWduZXIgaXMgaGlkZGVuXG4gICAgY29uc3Qgbm90RW1wdHkgPSAhIWluaXRpYWxWZXJzZU9iamVjdHNcbiAgICBsZXQgYWxpZ25lZF8gPSBmYWxzZVxuXG4gICAgaWYgKCFhbGlnbmVyRGF0YSkgeyAvLyBza2lwIGlmIGFsaWduZXIgaXMgYmVpbmcgc2hvd25cbiAgICAgIGlmIChub3RFbXB0eSkgeyAvLyBza2lwIGlmIGVtcHR5XG4gICAgICAgIGNvbnN0IGN1cnJlbnRWZXJzZU9iamVjdHNfID0gdXBkYXRlZFZlcnNlT2JqZWN0cyB8fCBpbml0aWFsVmVyc2VPYmplY3RzXG5cbiAgICAgICAgaWYgKCFlbmFibGVBbGlnbm1lbnQpIHtcbiAgICAgICAgICBhbGlnbmVkXyA9IHRydWVcbiAgICAgICAgfSBlbHNlIGlmIChuZXdWZXJzZVRleHQgJiYgKG5ld1ZlcnNlVGV4dCAhPT0gaW5pdGlhbFZlcnNlVGV4dCkpIHtcbiAgICAgICAgICBjb25zdCByZXN1bHRzID0gQWxpZ25tZW50SGVscGVycy51cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZShjdXJyZW50VmVyc2VPYmplY3RzXywgbmV3VmVyc2VUZXh0KVxuICAgICAgICAgIGFsaWduZWRfID0gaXNVc2ZtQWxpZ25lZChyZXN1bHRzPy50YXJnZXRWZXJzZVRleHQsIG9yaWdpbmFsVmVyc2VPYmplY3RzKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHRhcmdldFZlcnNlVVNGTSA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTShjdXJyZW50VmVyc2VPYmplY3RzXylcbiAgICAgICAgICBhbGlnbmVkXyA9IGlzVXNmbUFsaWduZWQodGFyZ2V0VmVyc2VVU0ZNLCBvcmlnaW5hbFZlcnNlT2JqZWN0cylcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoYWxpZ25lZCAhPT0gYWxpZ25lZF8pIHtcbiAgICAgICAgc2V0U3RhdGUoeyBhbGlnbmVkOiBhbGlnbmVkXyB9KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2luaXRpYWxWZXJzZU9iamVjdHMsIGFsaWduZXJEYXRhLCBuZXdWZXJzZVRleHQsIGluaXRpYWxWZXJzZVRleHQsIGVuYWJsZUFsaWdubWVudCwgb3JpZ2luYWxWZXJzZU9iamVjdHNdKVxuXG4gIC8qKlxuICAgKiBnZXQgY2hhbmdlcyBmb3Igc2F2aW5nXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdTdGF0ZSAtIG9wdGlvbmFsbHkgcGFzcyBpbiBuZXcgc3RhdGUgKHRvIG92ZXJyaWRlIHN0YXRlKVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0Q2hhbmdlcyhuZXdTdGF0ZSA9IHt9KSB7XG4gICAgY29uc29sZS5sb2coYGdldENoYW5nZXMgLSBzdGFydGVkICR7Y3VycmVudEluZGV4fSAtIHBhc3NlZCBzdGF0ZWAsIG5ld1N0YXRlKVxuICAgIGNvbnN0IF9uZXdTdGF0ZSA9IHtcbiAgICAgIHN0YXRlLFxuICAgICAgLi4ubmV3U3RhdGUsXG4gICAgfVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBuZXdBbGlnbm1lbnRzLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgbmV3VmVyc2VUZXh0LFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0cyxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHZlcnNlVGV4dENoYW5nZWQsXG4gICAgfSA9IF9uZXdTdGF0ZVxuICAgIGxldCB1cGRhdGVkVmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHNcblxuICAgIGlmIChuZXdBbGlnbm1lbnRzKSB7IC8vIGlmIHVuc2F2ZWQgYWxpZ25tZW50IGNoYW5nZXMsIGFwcGx5IHRoZW1cbiAgICAgIGNvbnNvbGUubG9nKGBnZXRDaGFuZ2VzIC0gYXBwbHlpbmcgdW5zYXZlZCBhbGlnbm1lbnRzfWApXG4gICAgICB1cGRhdGVkVmVyc2VPYmplY3RzXyA9IHVwZGF0ZVZlcnNlV2l0aE5ld0FsaWdubWVudHMoKVxuICAgIH1cblxuICAgIGlmICh2ZXJzZVRleHRDaGFuZ2VkICYmIG5ld1ZlcnNlVGV4dCkge1xuICAgICAgY29uc29sZS5sb2coYGdldENoYW5nZXMgLSBhcHBseWluZyBuZXcgdGV4dDpgLCBuZXdWZXJzZVRleHQpXG4gICAgICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHNfIHx8IGluaXRpYWxWZXJzZU9iamVjdHNcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHNfICYmIGNvbnNvbGUubG9nKGBnZXRDaGFuZ2VzIC0gYXBwbHlpbmcgdXBkYXRlZCBhbGlnbm1lbnRzYClcbiAgICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VPYmplY3RzIH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKGN1cnJlbnRWZXJzZU9iamVjdHNfLCBuZXdWZXJzZVRleHQpXG4gICAgICB1cGRhdGVkVmVyc2VPYmplY3RzXyA9IHRhcmdldFZlcnNlT2JqZWN0c1xuICAgIH0gZWxzZSB7IC8vIG9ubHkgYWxpZ25tZW50IGNoYW5nZXMgdG8gdXBsb2FkXG4gICAgICB1cGRhdGVkVmVyc2VPYmplY3RzXyAmJiBjb25zb2xlLmxvZyhgZ2V0Q2hhbmdlcyAtIGFwcGx5aW5nIHVwZGF0ZWQgYWxpZ25tZW50c2AsIHsgbmV3VmVyc2VUZXh0LCB1cGRhdGVkVmVyc2VPYmplY3RzXyB9KVxuICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzXyB8fCBpbml0aWFsVmVyc2VPYmplY3RzXG4gICAgfVxuXG4gICAgaWYgKHVwZGF0ZWRWZXJzZU9iamVjdHNfKSB7XG4gICAgICBjb25zdCByZWYgPSBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZj8uW2N1cnJlbnRJbmRleF1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5ld1ZlcnNlVGV4dCxcbiAgICAgICAgcmVmLFxuICAgICAgICB1cGRhdGVkVmVyc2VPYmplY3RzOiB1cGRhdGVkVmVyc2VPYmplY3RzXyxcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge31cbiAgfVxuXG4gIC8qKlxuICAgKiBjYWxsYmFjayBmb3Igd2hlbiB1c2VyIGNsaWNrZWQgb24gYWxpZ25tZW50IGJ1dHRvbiAtIHdpbGwgc2hvdyBpZiBub3QgYWxyZWFkeSBzaG93blxuICAgKi9cbiAgYXN5bmMgZnVuY3Rpb24gaGFuZGxlQWxpZ25tZW50Q2xpY2soKSB7XG4gICAgaWYgKGVuYWJsZUFsaWdubWVudCkge1xuICAgICAgbGV0IF9hbGlnbmVyRGF0YSA9IG51bGxcbiAgICAgIGF3YWl0IHN0YXJ0RWRpdEJyYW5jaCgpXG5cbiAgICAgIGlmICghYWxpZ25lckRhdGEpIHsgLy8gaWYgd29yZCBhbGlnbmVyIG5vdCBzaG93blxuICAgICAgICBjb25zb2xlLmxvZyhgaGFuZGxlQWxpZ25tZW50Q2xpY2sgLSB0b2dnbGUgT04gYWxpZ25tZW50YClcbiAgICAgICAgY29uc3QgdGFyZ2V0VmVyc2VVU0ZNID0gZ2V0Q3VycmVudFZlcnNlVXNmbSh1cGRhdGVkVmVyc2VPYmplY3RzLCBpbml0aWFsVmVyc2VPYmplY3RzLCB2ZXJzZVRleHRDaGFuZ2VkLCBuZXdWZXJzZVRleHQpXG4gICAgICAgIGxldCBvcmlnaW5hbFZlcnNlVXNmbSA9IG51bGxcblxuICAgICAgICBpZiAob3JpZ2luYWxWZXJzZU9iamVjdHMpIHtcbiAgICAgICAgICBvcmlnaW5hbFZlcnNlVXNmbSA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTShvcmlnaW5hbFZlcnNlT2JqZWN0cylcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICB0YXJnZXRXb3Jkczogd29yZEJhbmssXG4gICAgICAgICAgdmVyc2VBbGlnbm1lbnRzOiBhbGlnbm1lbnRzLFxuICAgICAgICB9ID0gQWxpZ25tZW50SGVscGVycy5wYXJzZVVzZm1Ub1dvcmRBbGlnbmVyRGF0YSh0YXJnZXRWZXJzZVVTRk0sIG9yaWdpbmFsVmVyc2VVc2ZtKVxuICAgICAgICBfYWxpZ25lckRhdGEgPSB7IHdvcmRCYW5rLCBhbGlnbm1lbnRzIH1cbiAgICAgIH0gZWxzZSB7IC8vIHdvcmQgYWxpZ25lciBjdXJyZW50bHkgc2hvd25cbiAgICAgICAgY29uc29sZS5sb2coYGhhbmRsZUFsaWdubWVudENsaWNrIC0gYWxpZ25tZW50IGFscmVhZHkgc2hvd25gKVxuICAgICAgICBfYWxpZ25lckRhdGEgPSBhbGlnbmVyRGF0YVxuICAgICAgfVxuICAgICAgc2V0U3RhdGUoeyBhbGlnbmVyRGF0YTogX2FsaWduZXJEYXRhIH0pXG4gICAgICBjb25zb2xlLmxvZyhfYWxpZ25lckRhdGEpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGdldCB1cGRhdGVkIHZlcnNlIG9iamVjdHMgYWZ0ZXIgYWxpZ25tZW50cyBjaGFuZ2VkXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBfbmV3QWxpZ25tZW50cyAtIHJlc3VsdHMgb2YgYWxpZ25lclxuICAgKi9cbiAgZnVuY3Rpb24gdXBkYXRlVmVyc2VXaXRoTmV3QWxpZ25tZW50cyhfbmV3QWxpZ25tZW50cyA9IG5ld0FsaWdubWVudHMpIHtcbiAgICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHMgfHwgaW5pdGlhbFZlcnNlT2JqZWN0c1xuICAgIGNvbnN0IHRhcmdldFZlcnNlVGV4dCA9IG5ld1ZlcnNlVGV4dCB8fCBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLmNvbnZlcnRWZXJzZURhdGFUb1VTRk0oY3VycmVudFZlcnNlT2JqZWN0c18pXG4gICAgY29uc3QgdmVyc2VVc2ZtID0gQWxpZ25tZW50SGVscGVycy5hZGRBbGlnbm1lbnRzVG9WZXJzZVVTRk0oX25ld0FsaWdubWVudHMudGFyZ2V0V29yZHMsIF9uZXdBbGlnbm1lbnRzLnZlcnNlQWxpZ25tZW50cywgdGFyZ2V0VmVyc2VUZXh0KVxuICAgIGNvbnN0IGFsaWduZWRWZXJzZU9iamVjdHMgPSB1c2ZtSGVscGVycy51c2ZtVmVyc2VUb0pzb24odmVyc2VVc2ZtKVxuICAgIHJldHVybiBhbGlnbmVkVmVyc2VPYmplY3RzXG4gIH1cblxuICAvKipcbiAgICogY2FsbGJhY2sgZm9yIHdoZW4gdXNlciBjbGlja2VkIG9uIGJ1dHRvbiB0byBzYXZlIGN1cnJlbnQgYWxpZ25tZW50cyBpbiB3b3JkIGFsaWduZXIuICBHZW5lcmF0ZXMgbmV3IHZlcnNlIGNvbnRlbnQgYW5kIHNhdmVzIGluIHN0YXRlLiBDbG9zZXMgYWxpZ25lciBkaXNwbGF5XG4gICAqIEBwYXJhbSB7b2JqZWN0fSBfbmV3QWxpZ25tZW50cyAtIHJlc3VsdHMgb2YgYWxpZ25lclxuICAgKi9cbiAgZnVuY3Rpb24gc2F2ZUFsaWdubWVudChfbmV3QWxpZ25tZW50cyA9IG5ld0FsaWdubWVudHMpIHtcbiAgICBjb25zb2xlLmxvZyhgc2F2ZUFsaWdubWVudCgpIC0gbmV3QWxpZ25tZW50c2AsIF9uZXdBbGlnbm1lbnRzKVxuXG4gICAgaWYgKF9uZXdBbGlnbm1lbnRzKSB7XG4gICAgICBjb25zdCBhbGlnbmVkVmVyc2VPYmplY3RzID0gdXBkYXRlVmVyc2VXaXRoTmV3QWxpZ25tZW50cyhfbmV3QWxpZ25tZW50cylcbiAgICAgIGNvbnNvbGUubG9nKGBzYXZlQWxpZ25tZW50KCkgLSBhbGlnbmVkVmVyc2VPYmplY3RzYCwgYWxpZ25lZFZlcnNlT2JqZWN0cylcbiAgICAgIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgICAgICBhbGlnbmVyRGF0YTogbnVsbCxcbiAgICAgICAgZWRpdGluZzogZmFsc2UsXG4gICAgICAgIG5ld0FsaWdubWVudHM6IG51bGwsXG4gICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHM6IGFsaWduZWRWZXJzZU9iamVjdHMsXG4gICAgICB9XG4gICAgICBzZXRTdGF0ZShuZXdTdGF0ZSlcbiAgICAgIGNhbGxTZXRTYXZlZFN0YXRlKHRydWUsIG5ld1N0YXRlIClcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coYHNhdmVBbGlnbm1lbnQoKSAtIG5vIGFsaWdubWVudCBjaGFuZ2VzYClcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgYWxpZ25lckRhdGE6IG51bGwsXG4gICAgICAgIGVkaXRpbmc6IGZhbHNlLFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogY2FsbGJhY2sgZm9yIHdoZW4gdXNlciBjbGlja2VkIG9uIGJ1dHRvbiB0byBjYW5jZWwgd29yayBpbiB3b3JkIGFsaWduZXIuICBDYWxjdWxhdGVzIGFuZCBkaXNwbGF5cyBjdXJyZW50IGFsaWdubWVudCB2YWxpZCBzdGF0ZS4gQ2xvc2VzIGFsaWduZXIgZGlzcGxheVxuICAgKi9cbiAgZnVuY3Rpb24gY2FuY2VsQWxpZ25tZW50KCkge1xuICAgIGNvbnNvbGUubG9nKGBjYW5jZWxBbGlnbm1lbnQoKWApXG4gICAgY29uc3QgdGFyZ2V0VmVyc2VVU0ZNID0gZ2V0Q3VycmVudFZlcnNlVXNmbSh1cGRhdGVkVmVyc2VPYmplY3RzLCBpbml0aWFsVmVyc2VPYmplY3RzLCB2ZXJzZVRleHRDaGFuZ2VkLCBuZXdWZXJzZVRleHQpXG4gICAgY29uc3QgYWxpZ25lZCA9IGlzVXNmbUFsaWduZWQodGFyZ2V0VmVyc2VVU0ZNLCBvcmlnaW5hbFZlcnNlT2JqZWN0cylcbiAgICBzZXRTdGF0ZSh7IGFsaWduZXJEYXRhOiBudWxsLCBhbGlnbmVkIH0pXG4gIH1cblxuICAvKipcbiAgICogY2FsbGJhY2sgZm9yIGJ1dHRvbiB0byBzZXQgZWRpdGluZyBzdGF0ZVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVkaXRpbmdfIC0gaWYgdHJ1ZSwgZWRpdG9yIGlzIHNob3duLCBvdGhlcndpc2UgZWRpdG9yIGlzIGhpZGRlblxuICAgKiBAcGFyYW0ge3N0cmluZ30gX25ld1ZlcnNlVGV4dCAtIG9wdGlvbmFsIHZlcnNlIHRleHRcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZXF1aXJlLWF3YWl0XG4gIGFzeW5jIGZ1bmN0aW9uIHNldEVkaXRpbmcoZWRpdGluZ18sIF9uZXdWZXJzZVRleHQgPSBuZXdWZXJzZVRleHQpIHtcbiAgICBpZiAoZW5hYmxlRWRpdCkge1xuICAgICAgaWYgKGVkaXRpbmdfICE9PSBlZGl0aW5nKSB7XG4gICAgICAgIF9uZXdWZXJzZVRleHQgPSBfbmV3VmVyc2VUZXh0IHx8IGluaXRpYWxWZXJzZVRleHRcbiAgICAgICAgbGV0IF91cGRhdGVkVmVyc2VPYmplY3RzID0gdXBkYXRlZFZlcnNlT2JqZWN0c1xuICAgICAgICBjb25zdCB2ZXJzZVRleHRDaGFuZ2VkID0gX25ld1ZlcnNlVGV4dCAhPT0gaW5pdGlhbFZlcnNlVGV4dFxuICAgICAgICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAgICAgICBlZGl0aW5nOiBlZGl0aW5nXyxcbiAgICAgICAgICBuZXdWZXJzZVRleHQ6IF9uZXdWZXJzZVRleHQsXG4gICAgICAgICAgdmVyc2VUZXh0Q2hhbmdlZCxcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdmVyc2VUZXh0Q2hhbmdlZCkge1xuICAgICAgICAgIC8vIGZhbGxiYWNrIHRvIG1ha2Ugc3VyZSB0ZXh0IGZyb20gdmVyc2VPYmplY3RzIG1hdGNoZXMgY3VycmVudCB0ZXh0XG4gICAgICAgICAgY29uc3QgdmVyc2VUZXh0ID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5nZXRVc2ZtRm9yVmVyc2VDb250ZW50KHsgdmVyc2VPYmplY3RzOiBjdXJyZW50VmVyc2VPYmplY3RzIH0gKVxuXG4gICAgICAgICAgaWYgKHZlcnNlVGV4dCAhPT0gX25ld1ZlcnNlVGV4dCkgeyAvLyBpZiB0ZXh0IGZyb20gdmVyc2Ugb2JqZWN0cyBkb2VzIG5vdCBtYXRjaCBsYXRlc3QgdGV4dFxuICAgICAgICAgICAgLy8gYXBwbHkgYWxpZ25tZW50IHRvIGN1cnJlbnQgdGV4dFxuICAgICAgICAgICAgY29uc3QgeyB0YXJnZXRWZXJzZU9iamVjdHMgfSA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UoY3VycmVudFZlcnNlT2JqZWN0cywgX25ld1ZlcnNlVGV4dClcbiAgICAgICAgICAgIF91cGRhdGVkVmVyc2VPYmplY3RzID0gdGFyZ2V0VmVyc2VPYmplY3RzIC8vIHVwZGF0ZSB2ZXJzZU9iamVjdHMgdG8gbWF0Y2ggY3VycmVudCB0ZXh0XG4gICAgICAgICAgICBuZXdTdGF0ZVsndXBkYXRlZFZlcnNlT2JqZWN0cyddID0gX3VwZGF0ZWRWZXJzZU9iamVjdHNcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzZXRTdGF0ZShuZXdTdGF0ZSlcbiAgICAgICAgY29uc3QgX2FsaWdubWVudHNDaGFuZ2VkID0gKF91cGRhdGVkVmVyc2VPYmplY3RzICYmICFpc0VxdWFsKGluaXRpYWxWZXJzZU9iamVjdHMsIF91cGRhdGVkVmVyc2VPYmplY3RzKSlcbiAgICAgICAgY2FsbFNldFNhdmVkU3RhdGUodmVyc2VUZXh0Q2hhbmdlZCB8fCBfYWxpZ25tZW50c0NoYW5nZWQsIG5ld1N0YXRlIClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogY2FsbGJhY2sgZnJvbSB0aGUgZWRpdCBvbkNoYW5nZSBldmVudCB0byB1cGRhdGUgZWRpdCBzdGF0ZSB2YXJpYWJsZXNcbiAgICogQHBhcmFtIHtib29sZWFufSBjaGFuZ2VkIC0gdHJ1ZSBpZiB0aGUgbmV3VmVyc2VUZXh0IGlzIGRpZmZlcmVudCB0aGFuIHRoZSBpbml0aWFsVmVyc2VUZXh0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuZXdWZXJzZVRleHQgLSBjdXJyZW50IGNoYW5nZWQgdmVyc2UgdGV4dFxuICAgKiBAcGFyYW0ge3N0cmluZ30gX2luaXRpYWxWZXJzZVRleHQgLSBpbml0aWFsIHZlcnNlIHRleHRcbiAgICovXG4gIGZ1bmN0aW9uIHNldFZlcnNlQ2hhbmdlZChjaGFuZ2VkLCBuZXdWZXJzZVRleHQsIF9pbml0aWFsVmVyc2VUZXh0KSB7XG4gICAgY29uc3QgeyB0YXJnZXRWZXJzZVRleHQgfSA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UoY3VycmVudFZlcnNlT2JqZWN0cywgbmV3VmVyc2VUZXh0KVxuICAgIGNvbnN0IGFsaWduZWQgPSBpc1VzZm1BbGlnbmVkKHRhcmdldFZlcnNlVGV4dCwgb3JpZ2luYWxWZXJzZU9iamVjdHMpXG4gICAgY29uc3QgdmVyc2VUZXh0Q2hhbmdlZCA9IG5ld1ZlcnNlVGV4dCAhPT0gaW5pdGlhbFZlcnNlVGV4dFxuXG4gICAgc2V0U3RhdGUoe1xuICAgICAgdmVyc2VUZXh0Q2hhbmdlZCxcbiAgICAgIG5ld1ZlcnNlVGV4dCxcbiAgICAgIGFsaWduZWQsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGN1cnJlbnRWZXJzZU9iamVjdHMgPSBSZWFjdC51c2VNZW1vKCAoKSA9PiB7IC8vIGlmIHZlcnNlIGhhcyBiZWVuIGVkaXRlZCBvciBhbGlnbm1lbnQgY2hhbmdlZCwgdGhlbiBnZW5lcmF0ZSBuZXcgdmVyc2VPYmplY3RzIHRvIGRpc3BsYXkgaW4gU2NyaXB0dXJlUGFuZVxuICAgIGlmIChpbml0aWFsVmVyc2VPYmplY3RzKSB7XG4gICAgICBjb25zdCB0YXJnZXRWZXJzZVVTRk0gPSBnZXRDdXJyZW50VmVyc2VVc2ZtKHVwZGF0ZWRWZXJzZU9iamVjdHMsIGluaXRpYWxWZXJzZU9iamVjdHMsIHZlcnNlVGV4dENoYW5nZWQsIG5ld1ZlcnNlVGV4dClcbiAgICAgIGNvbnN0IGN1cnJlbnRWZXJzZU9iamVjdHNfID0gdXNmbUhlbHBlcnMudXNmbVZlcnNlVG9Kc29uKHRhcmdldFZlcnNlVVNGTSlcbiAgICAgIHJldHVybiBjdXJyZW50VmVyc2VPYmplY3RzX1xuICAgIH1cbiAgICByZXR1cm4gaW5pdGlhbFZlcnNlT2JqZWN0c1xuICB9LCBbdXBkYXRlZFZlcnNlT2JqZWN0cywgaW5pdGlhbFZlcnNlT2JqZWN0cywgdmVyc2VUZXh0Q2hhbmdlZCwgbmV3VmVyc2VUZXh0XSlcblxuICBjb25zdCB1bnNhdmVkQ2hhbmdlczpib29sZWFuID0gUmVhY3QudXNlTWVtbyggKCkgPT4geyAvLyBpZiB2ZXJzZSBoYXMgYmVlbiBlZGl0ZWQgb3IgYWxpZ25tZW50IGNoYW5nZWQsIHRoZW4gaW5kaWNhdGUgd2UgaGF2ZSB1bnNhdmVkIGNoYW5nZXNcbiAgICBjb25zdCBjaGFuZ2VkID0gdmVyc2VUZXh0Q2hhbmdlZCB8fCAodXBkYXRlZFZlcnNlT2JqZWN0cyAmJiAhaXNFcXVhbChpbml0aWFsVmVyc2VPYmplY3RzLCB1cGRhdGVkVmVyc2VPYmplY3RzKSlcbiAgICByZXR1cm4gY2hhbmdlZFxuICB9LCBbdXBkYXRlZFZlcnNlT2JqZWN0cywgaW5pdGlhbFZlcnNlT2JqZWN0cywgdmVyc2VUZXh0Q2hhbmdlZF0pXG5cbiAgLyoqXG4gICAqIGNhbGxiYWNrIHRvIHNjcmlwdHVyZSBjYXJkIHRvIHVwZGF0ZWQgd2l0aCBsYXRlc3Qgc3RhdGUgZm9yIHNhdmluZ1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHVuc2F2ZWRDaGFuZ2VzX1xuICAgKiBAcGFyYW0ge29iamVjdH0gbmV3U3RhdGVcbiAgICovXG4gIGZ1bmN0aW9uIGNhbGxTZXRTYXZlZFN0YXRlKHVuc2F2ZWRDaGFuZ2VzXywgbmV3U3RhdGUgPSB7IH0gKSB7XG4gICAgY29uc3QgX25ld1N0YXRlID0ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICAuLi5uZXdTdGF0ZSxcbiAgICB9XG5cbiAgICAvLyBjb25zb2xlLmxvZyhgY2FsbFNldFNhdmVkU3RhdGUgLSBuZXcgc3RhdGVgLCBfbmV3U3RhdGUpXG4gICAgc2V0U2F2ZWRDaGFuZ2VzICYmIHNldFNhdmVkQ2hhbmdlcyhjdXJyZW50SW5kZXgsICF1bnNhdmVkQ2hhbmdlc18sIHtcbiAgICAgIGdldENoYW5nZXMsXG4gICAgICBjbGVhckNoYW5nZXMsXG4gICAgICBzdGF0ZTogX25ld1N0YXRlLFxuICAgIH0pXG4gIH1cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBzZXQgc2F2ZWQgY2hhbmdlcyB3aGVuZXZlciB1c2VyIGVkaXRzIHZlcnNlIHRleHQgb3IgYWxpZ25tZW50cyBvciBpZiBhbGlnbm1lbnRzIGFyZSBvcGVuXG4gICAgY29uc3QgdW5zYXZlZENoYW5nZXNfID0gdW5zYXZlZENoYW5nZXMgfHwgYWxpZ25lckRhdGFcbiAgICBjYWxsU2V0U2F2ZWRTdGF0ZSh1bnNhdmVkQ2hhbmdlc18pXG4gIH0sIFt1bnNhdmVkQ2hhbmdlcywgYWxpZ25lckRhdGFdKVxuXG4gIC8qKlxuICAgKiBjYWxsYmFjayBmb3Igd2hlbiBhbGlnbm1lbnRzIGFyZSBiZWluZyBjaGFuZ2VkXG4gICAqIEBwYXJhbSB7b2JqZWN0fSByZXN1bHRzXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IHRydWUgaWYgYWxpZ25tZW50IGlzIGNvbXBsZXRlXG4gICAqL1xuICBmdW5jdGlvbiBvbkFsaWdubWVudHNDaGFuZ2UocmVzdWx0cykge1xuICAgIGNvbnNvbGUubG9nKGBvbkFsaWdubWVudHNDaGFuZ2UoKSAtIGFsaWdubWVudCBjaGFuZ2VkLCByZXN1bHRzYCwgcmVzdWx0cykgLy8gbWVyZ2UgYWxpZ25tZW50cyBpbnRvIHRhcmdldCB2ZXJzZSBhbmQgY29udmVydCB0byBVU0ZNXG4gICAgY29uc3QgeyB0YXJnZXRXb3JkcywgdmVyc2VBbGlnbm1lbnRzIH0gPSByZXN1bHRzXG4gICAgY29uc3QgYWxpZ25tZW50Q29tcGxldGUgPSBBbGlnbm1lbnRIZWxwZXJzLmFyZUFsZ25tZW50c0NvbXBsZXRlKHRhcmdldFdvcmRzLCB2ZXJzZUFsaWdubWVudHMpXG4gICAgY29uc29sZS5sb2coYEFsaWdubWVudHMgYXJlICR7YWxpZ25tZW50Q29tcGxldGUgPyAnQ09NUExFVEUhJyA6ICdpbmNvbXBsZXRlJ31gKVxuICAgIHNldFN0YXRlKHsgbmV3QWxpZ25tZW50czogcmVzdWx0cywgYWxpZ25lZDogYWxpZ25tZW50Q29tcGxldGUgfSlcbiAgICByZXR1cm4gYWxpZ25tZW50Q29tcGxldGVcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYWN0aW9uczoge1xuICAgICAgY2FuY2VsQWxpZ25tZW50LFxuICAgICAgY2xlYXJDaGFuZ2VzLFxuICAgICAgZ2V0Q2hhbmdlcyxcbiAgICAgIGhhbmRsZUFsaWdubWVudENsaWNrLFxuICAgICAgb25BbGlnbm1lbnRzQ2hhbmdlLFxuICAgICAgc2F2ZUFsaWdubWVudCxcbiAgICAgIHNldEVkaXRpbmcsXG4gICAgICBzZXRWZXJzZUNoYW5nZWQsXG4gICAgfSxcbiAgICBzdGF0ZToge1xuICAgICAgYWxpZ25lZCxcbiAgICAgIGFsaWduZXJEYXRhLFxuICAgICAgY3VycmVudFZlcnNlT2JqZWN0cyxcbiAgICAgIGVkaXRpbmcsXG4gICAgICBlbmFibGVFZGl0LFxuICAgICAgZW5hYmxlQWxpZ25tZW50LFxuICAgICAgaW5pdGlhbFZlcnNlVGV4dCxcbiAgICAgIGluaXRpYWxWZXJzZU9iamVjdHMsXG4gICAgICBuZXdWZXJzZVRleHQsXG4gICAgICByZWZlcmVuY2U6IGJhc2ljUmVmZXJlbmNlLFxuICAgICAgc291cmNlTGFuZ3VhZ2UsXG4gICAgICB0YXJnZXRMYW5ndWFnZSxcbiAgICAgIHRpdGxlLFxuICAgICAgdW5zYXZlZENoYW5nZXMsXG4gICAgICB2ZXJzZVRleHRDaGFuZ2VkLFxuICAgIH0sXG4gIH1cbn1cbiJdfQ==
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "single-scripture-rcl",
|
|
3
3
|
"description": "A React Component Library for Rendering a Single Scripture Resource.",
|
|
4
|
-
"version": "3.4.
|
|
4
|
+
"version": "3.4.11-beta.7",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/unfoldingWord/single-scripture-rcl.git"
|