highmark-markdown 1.2.70 → 1.2.72
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.aiignore +7 -9
- package/.swcrc +4 -3
- package/example.js +11655 -33035
- package/lib/attributeNames.js +7 -7
- package/lib/constants.js +19 -19
- package/lib/example/constants.js +7 -7
- package/lib/example/customEventTypes.js +9 -9
- package/lib/example/importer.js +72 -28
- package/lib/example/indexOptions.js +3 -3
- package/lib/example/view/button/page.js +34 -135
- package/lib/example/view/button/tab/css.js +14 -114
- package/lib/example/view/button/tab/html.js +14 -114
- package/lib/example/view/button/tab/markdown.js +14 -114
- package/lib/example/view/button/tab/markdownStyle.js +14 -114
- package/lib/example/view/button/tab/plainText.js +14 -114
- package/lib/example/view/button/tab/preview.js +14 -114
- package/lib/example/view/button/tab.js +36 -136
- package/lib/example/view/div/container/css.js +15 -153
- package/lib/example/view/div/container/html.js +19 -157
- package/lib/example/view/div/container/markdown.js +38 -190
- package/lib/example/view/div/container/markdownStyle.js +39 -191
- package/lib/example/view/div/container/plainText.js +15 -153
- package/lib/example/view/div/container/preview.js +25 -177
- package/lib/example/view/div/container.js +20 -156
- package/lib/example/view/div/html.js +18 -173
- package/lib/example/view/div/pageButtons.js +63 -236
- package/lib/example/view/div/preview.js +58 -268
- package/lib/example/view/div/sizeable/left.js +13 -104
- package/lib/example/view/div/tabButtons/left.js +42 -161
- package/lib/example/view/div/tabButtons/right.js +75 -198
- package/lib/example/view/div/tabButtons.js +15 -172
- package/lib/example/view/textarea/css.js +29 -147
- package/lib/example/view/textarea/markdown.js +29 -145
- package/lib/example/view/textarea/markdownStyle.js +29 -145
- package/lib/example/view/textarea/parseTree/css.js +21 -132
- package/lib/example/view/textarea/parseTree/html.js +21 -132
- package/lib/example/view/textarea/parseTree/markdown.js +17 -129
- package/lib/example/view/textarea/parseTree/markdownStyle.js +17 -129
- package/lib/example/view/textarea/parseTree.js +20 -135
- package/lib/example/view/textarea/plainText.js +32 -153
- package/lib/example/view/textarea.js +16 -23
- package/lib/example/view/xmp.js +30 -187
- package/lib/example/view.js +281 -518
- package/lib/example.js +10 -10
- package/lib/index/item.js +25 -87
- package/lib/index/list.js +29 -62
- package/lib/index/match.js +23 -62
- package/lib/index.js +34 -34
- package/lib/letters.js +3 -3
- package/lib/map/className.js +6 -6
- package/lib/map/node/css.js +50 -42
- package/lib/map/node/html.js +108 -71
- package/lib/map/nonTerminalNode/markdown.js +49 -40
- package/lib/map/nonTerminalNode/markdownStyle.js +49 -40
- package/lib/map/tagName.js +6 -6
- package/lib/markdown/bnf.js +300 -3
- package/lib/markdown/entries.js +3 -3
- package/lib/markdown/lexer.js +23 -126
- package/lib/markdown/parser.js +18 -121
- package/lib/markdownStyle/bnf.js +80 -3
- package/lib/markdownStyle/entries.js +8 -8
- package/lib/markdownStyle/lexer.js +23 -126
- package/lib/markdownStyle/parser.js +18 -121
- package/lib/mixins/node.js +53 -53
- package/lib/mixins/token.js +13 -13
- package/lib/node/css/amount.js +16 -110
- package/lib/node/css/argument.js +8 -95
- package/lib/node/css/arguments.js +13 -127
- package/lib/node/css/class.js +13 -127
- package/lib/node/css/colour.js +16 -110
- package/lib/node/css/content.js +12 -103
- package/lib/node/css/declaration.js +19 -109
- package/lib/node/css/identifier.js +16 -110
- package/lib/node/css/name.js +13 -127
- package/lib/node/css/pseudoClass.js +13 -127
- package/lib/node/css/ruleName.js +43 -137
- package/lib/node/css/ruleSet.js +45 -139
- package/lib/node/css/selector.js +8 -95
- package/lib/node/css/selectors.js +19 -110
- package/lib/node/css/selectorsList.js +22 -115
- package/lib/node/css/string.js +16 -110
- package/lib/node/css/target.js +12 -103
- package/lib/node/css/topmost.js +70 -182
- package/lib/node/css/value.js +12 -126
- package/lib/node/css/values.js +16 -107
- package/lib/node/css/verbatim.js +35 -132
- package/lib/node/css.js +66 -275
- package/lib/node/html/anchor/contents.js +8 -92
- package/lib/node/html/anchor/footnote.js +8 -92
- package/lib/node/html/anchor/index.js +8 -92
- package/lib/node/html/anchor.js +38 -157
- package/lib/node/html/container.js +24 -154
- package/lib/node/html/directive/contents.js +8 -95
- package/lib/node/html/directive/footnotes.js +8 -95
- package/lib/node/html/directive/index.js +8 -95
- package/lib/node/html/directive/pageNumber.js +8 -95
- package/lib/node/html/directive.js +23 -123
- package/lib/node/html/division.js +127 -273
- package/lib/node/html/error.js +41 -179
- package/lib/node/html/footnote.js +40 -149
- package/lib/node/html/heading/index.js +61 -183
- package/lib/node/html/heading/primary.js +12 -112
- package/lib/node/html/heading/quaternary.js +12 -112
- package/lib/node/html/heading/secondary.js +12 -112
- package/lib/node/html/heading/tertiary.js +12 -112
- package/lib/node/html/heading.js +30 -147
- package/lib/node/html/image.js +76 -207
- package/lib/node/html/item/contents.js +20 -124
- package/lib/node/html/item/footnote.js +21 -125
- package/lib/node/html/item/index.js +39 -145
- package/lib/node/html/item/ordered.js +23 -133
- package/lib/node/html/item/unordered.js +10 -110
- package/lib/node/html/line/block.js +15 -119
- package/lib/node/html/line.js +89 -242
- package/lib/node/html/link/contents.js +36 -153
- package/lib/node/html/link/email.js +89 -243
- package/lib/node/html/link/footnote.js +94 -238
- package/lib/node/html/link/hyper.js +89 -243
- package/lib/node/html/link/index.js +67 -222
- package/lib/node/html/list/contents.js +20 -124
- package/lib/node/html/list/footnotes.js +40 -160
- package/lib/node/html/list/index.js +20 -124
- package/lib/node/html/list/ordered.js +10 -110
- package/lib/node/html/list/unordered.js +10 -110
- package/lib/node/html/listing/block.js +33 -177
- package/lib/node/html/listing/inline.js +35 -174
- package/lib/node/html/pageNumber.js +65 -216
- package/lib/node/html/paragraph.js +10 -110
- package/lib/node/html/reference.js +10 -110
- package/lib/node/html/table.js +10 -110
- package/lib/node/html/tableBody.js +10 -110
- package/lib/node/html/tableBodyCell.js +10 -110
- package/lib/node/html/tableBodyRow.js +10 -110
- package/lib/node/html/tableHead.js +10 -110
- package/lib/node/html/tableHeadCell.js +10 -110
- package/lib/node/html/tableHeadRow.js +10 -110
- package/lib/node/html/text/block.js +10 -110
- package/lib/node/html/text/comma.js +21 -128
- package/lib/node/html/text/emphasised.js +14 -118
- package/lib/node/html/text/index.js +28 -143
- package/lib/node/html/text/inline.js +34 -147
- package/lib/node/html/text/plain.js +10 -110
- package/lib/node/html/text/strong.js +14 -118
- package/lib/node/html/text/stronglyEmphasised.js +66 -208
- package/lib/node/html/text.js +24 -162
- package/lib/node/html/topmost.js +100 -240
- package/lib/node/html.js +256 -554
- package/lib/node/markdown/blockEnd.js +5 -89
- package/lib/node/markdown/blockStart.js +18 -113
- package/lib/node/markdown/className.js +12 -100
- package/lib/node/markdown/container.js +18 -113
- package/lib/node/markdown/directive/embed.js +39 -137
- package/lib/node/markdown/directive/include.js +39 -137
- package/lib/node/markdown/division.js +70 -216
- package/lib/node/markdown/document.js +44 -147
- package/lib/node/markdown/error.js +12 -100
- package/lib/node/markdown/footnote.js +12 -100
- package/lib/node/markdown/hyperlink.js +34 -131
- package/lib/node/markdown/image.js +12 -100
- package/lib/node/markdown/item/ordered.js +15 -103
- package/lib/node/markdown/link/email.js +34 -131
- package/lib/node/markdown/link/footnote.js +14 -102
- package/lib/node/markdown/listng/block.js +12 -100
- package/lib/node/markdown/listng/inline.js +18 -106
- package/lib/node/markdown/path.js +12 -100
- package/lib/node/markdown/reference.js +15 -103
- package/lib/node/markdown/subDivision.js +35 -126
- package/lib/node/markdown/text/block.js +5 -89
- package/lib/node/markdown/text/plain.js +5 -89
- package/lib/node/markdown/text.js +46 -134
- package/lib/node/markdown.js +34 -169
- package/lib/node/markdownStyle/amount.js +13 -101
- package/lib/node/markdownStyle/argument.js +5 -89
- package/lib/node/markdownStyle/arguments.js +5 -89
- package/lib/node/markdownStyle/colour.js +12 -100
- package/lib/node/markdownStyle/content.js +21 -109
- package/lib/node/markdownStyle/declaration.js +5 -89
- package/lib/node/markdownStyle/document.js +5 -89
- package/lib/node/markdownStyle/error.js +5 -89
- package/lib/node/markdownStyle/identifier.js +13 -101
- package/lib/node/markdownStyle/name.js +5 -89
- package/lib/node/markdownStyle/nonsense.js +5 -89
- package/lib/node/markdownStyle/pseudoClass.js +5 -89
- package/lib/node/markdownStyle/ruleName.js +12 -100
- package/lib/node/markdownStyle/ruleSet.js +5 -89
- package/lib/node/markdownStyle/selector.js +5 -89
- package/lib/node/markdownStyle/selectors.js +5 -89
- package/lib/node/markdownStyle/selectorsList.js +5 -89
- package/lib/node/markdownStyle/string.js +12 -100
- package/lib/node/markdownStyle/target.js +12 -100
- package/lib/node/markdownStyle/value.js +5 -89
- package/lib/node/markdownStyle/values.js +5 -89
- package/lib/node/markdownStyle/verbatim.js +5 -89
- package/lib/node/markdownStyle.js +16 -135
- package/lib/prepends.js +4 -4
- package/lib/queries/markdown.js +7 -7
- package/lib/queries/markdownStyle.js +7 -7
- package/lib/ruleNames/markdown.js +145 -145
- package/lib/ruleNames/markdownStyle.js +51 -51
- package/lib/style/defaultMarkdown.js +247 -3
- package/lib/style/font.js +54 -3
- package/lib/styleElement/markdown/default.js +17 -131
- package/lib/styleElement/markdown.js +30 -151
- package/lib/styleElement.js +30 -69
- package/lib/targets.js +3 -3
- package/lib/tokenTypes.js +39 -39
- package/lib/transform/css/ruleSet.js +15 -106
- package/lib/transform/css/selectors.js +17 -108
- package/lib/transform/css/selectorsList.js +28 -121
- package/lib/transform/css.js +35 -139
- package/lib/transform/html/anchor/index.js +11 -99
- package/lib/transform/html/division.js +18 -112
- package/lib/transform/html/footnote.js +25 -122
- package/lib/transform/html/heading/index.js +7 -91
- package/lib/transform/html/index.js +44 -139
- package/lib/transform/html/item/contents.js +23 -111
- package/lib/transform/html/item/footnote.js +11 -99
- package/lib/transform/html/item/index.js +11 -99
- package/lib/transform/html/line.js +10 -98
- package/lib/transform/html/link/contents.js +20 -111
- package/lib/transform/html/link/footnote.js +36 -140
- package/lib/transform/html/list/contents.js +37 -151
- package/lib/transform/html/list/footnotes.js +19 -110
- package/lib/transform/html/list/index.js +16 -100
- package/lib/transform/html/pageNumber.js +15 -106
- package/lib/transform/html.js +28 -132
- package/lib/transform/markdown/directive/embed.js +9 -120
- package/lib/transform/markdown/directive/ignore.js +6 -90
- package/lib/transform/markdown/directive/include.js +15 -129
- package/lib/transform/markdown/subDivision.js +6 -90
- package/lib/transform/markdown.js +7 -134
- package/lib/utilities/contents.js +74 -145
- package/lib/utilities/css.js +12 -16
- package/lib/utilities/dom.js +11 -11
- package/lib/utilities/entities.js +2 -2
- package/lib/utilities/entries.js +5 -5
- package/lib/utilities/grammar.js +57 -86
- package/lib/utilities/html.js +21 -25
- package/lib/utilities/index.js +76 -89
- package/lib/utilities/markdown.js +14 -17
- package/lib/utilities/markdownStyle.js +2 -2
- package/lib/utilities/object.js +16 -16
- package/lib/utilities/query.js +13 -14
- package/lib/utilities/string.js +2 -2
- package/package.json +3 -3
package/lib/node/html.js
CHANGED
|
@@ -8,573 +8,275 @@ Object.defineProperty(exports, "default", {
|
|
|
8
8
|
return _default;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
function _array_like_to_array(arr, len) {
|
|
16
|
-
if (len == null || len > arr.length) len = arr.length;
|
|
17
|
-
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
18
|
-
return arr2;
|
|
19
|
-
}
|
|
20
|
-
function _array_without_holes(arr) {
|
|
21
|
-
if (Array.isArray(arr)) return _array_like_to_array(arr);
|
|
22
|
-
}
|
|
23
|
-
function _assert_this_initialized(self) {
|
|
24
|
-
if (self === void 0) {
|
|
25
|
-
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
26
|
-
}
|
|
27
|
-
return self;
|
|
28
|
-
}
|
|
29
|
-
function _call_super(_this, derived, args) {
|
|
30
|
-
derived = _get_prototype_of(derived);
|
|
31
|
-
return _possible_constructor_return(_this, _is_native_reflect_construct() ? Reflect.construct(derived, args || [], _get_prototype_of(_this).constructor) : derived.apply(_this, args));
|
|
32
|
-
}
|
|
33
|
-
function _class_call_check(instance, Constructor) {
|
|
34
|
-
if (!(instance instanceof Constructor)) {
|
|
35
|
-
throw new TypeError("Cannot call a class as a function");
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
function _construct(Parent, args, Class) {
|
|
39
|
-
if (_is_native_reflect_construct()) {
|
|
40
|
-
_construct = Reflect.construct;
|
|
41
|
-
} else {
|
|
42
|
-
_construct = function construct(Parent, args, Class) {
|
|
43
|
-
var a = [
|
|
44
|
-
null
|
|
45
|
-
];
|
|
46
|
-
a.push.apply(a, args);
|
|
47
|
-
var Constructor = Function.bind.apply(Parent, a);
|
|
48
|
-
var instance = new Constructor();
|
|
49
|
-
if (Class) _set_prototype_of(instance, Class.prototype);
|
|
50
|
-
return instance;
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
return _construct.apply(null, arguments);
|
|
54
|
-
}
|
|
55
|
-
function _defineProperties(target, props) {
|
|
56
|
-
for(var i = 0; i < props.length; i++){
|
|
57
|
-
var descriptor = props[i];
|
|
58
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
|
59
|
-
descriptor.configurable = true;
|
|
60
|
-
if ("value" in descriptor) descriptor.writable = true;
|
|
61
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
function _create_class(Constructor, protoProps, staticProps) {
|
|
65
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
66
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
67
|
-
return Constructor;
|
|
68
|
-
}
|
|
69
|
-
function _get_prototype_of(o) {
|
|
70
|
-
_get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {
|
|
71
|
-
return o.__proto__ || Object.getPrototypeOf(o);
|
|
72
|
-
};
|
|
73
|
-
return _get_prototype_of(o);
|
|
74
|
-
}
|
|
75
|
-
function _inherits(subClass, superClass) {
|
|
76
|
-
if (typeof superClass !== "function" && superClass !== null) {
|
|
77
|
-
throw new TypeError("Super expression must either be null or a function");
|
|
78
|
-
}
|
|
79
|
-
subClass.prototype = Object.create(superClass && superClass.prototype, {
|
|
80
|
-
constructor: {
|
|
81
|
-
value: subClass,
|
|
82
|
-
writable: true,
|
|
83
|
-
configurable: true
|
|
84
|
-
}
|
|
85
|
-
});
|
|
86
|
-
if (superClass) _set_prototype_of(subClass, superClass);
|
|
87
|
-
}
|
|
11
|
+
const _occamdom = require("occam-dom");
|
|
12
|
+
const _node = /*#__PURE__*/ _interop_require_default(require("../mixins/node"));
|
|
13
|
+
const _constants = require("../constants");
|
|
14
|
+
const _dom = require("../utilities/dom");
|
|
88
15
|
function _interop_require_default(obj) {
|
|
89
16
|
return obj && obj.__esModule ? obj : {
|
|
90
17
|
default: obj
|
|
91
18
|
};
|
|
92
19
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
98
|
-
}
|
|
99
|
-
function _non_iterable_spread() {
|
|
100
|
-
throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
101
|
-
}
|
|
102
|
-
function _possible_constructor_return(self, call) {
|
|
103
|
-
if (call && (_type_of(call) === "object" || typeof call === "function")) {
|
|
104
|
-
return call;
|
|
20
|
+
class HTMLNode extends _occamdom.Node {
|
|
21
|
+
constructor(outerNode, parentNode, childNodes, domElement){
|
|
22
|
+
super(outerNode, parentNode, childNodes);
|
|
23
|
+
this.domElement = domElement;
|
|
105
24
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
25
|
+
getDOMElement() {
|
|
26
|
+
return this.domElement;
|
|
27
|
+
}
|
|
28
|
+
setDOMElement(domElement) {
|
|
29
|
+
this.domElement = domElement;
|
|
30
|
+
}
|
|
31
|
+
resetDOMElement() {
|
|
32
|
+
this.domElement = null;
|
|
33
|
+
}
|
|
34
|
+
getRuleName() {
|
|
35
|
+
const markdownNode = this.getMarkdownNode(), ruleName = markdownNode.getRuleName();
|
|
36
|
+
return ruleName;
|
|
37
|
+
}
|
|
38
|
+
isTerminalNode() {
|
|
39
|
+
const terminalNode = false;
|
|
40
|
+
return terminalNode;
|
|
41
|
+
}
|
|
42
|
+
isNonTerminalNode() {
|
|
43
|
+
const nonTerminalNode = true;
|
|
44
|
+
return nonTerminalNode;
|
|
45
|
+
}
|
|
46
|
+
getMarkdownNode() {
|
|
47
|
+
const outerNode = this.getOuterNode(), markdownNode = outerNode; ///
|
|
48
|
+
return markdownNode;
|
|
49
|
+
}
|
|
50
|
+
getParentHTMLNode() {
|
|
51
|
+
const parentNode = this.getParentNode(), parentHTMLNode = parentNode; ///
|
|
52
|
+
return parentHTMLNode;
|
|
53
|
+
}
|
|
54
|
+
getChildHTMLNodes() {
|
|
55
|
+
const childNodes = this.getChildNodes(), childHTMLNodes = childNodes; ///
|
|
56
|
+
return childHTMLNodes;
|
|
57
|
+
}
|
|
58
|
+
getAncestorHTMLNodes() {
|
|
59
|
+
const ancestorNodes = this.getAncestorNodes(), ancestorHTMLNodes = ancestorNodes; ///
|
|
60
|
+
return ancestorHTMLNodes;
|
|
61
|
+
}
|
|
62
|
+
reduceChildHTMLNode(callback, initialValue) {
|
|
63
|
+
return this.reduceChildNode(callback, initialValue);
|
|
64
|
+
}
|
|
65
|
+
someAncestorHTMLNode(callback) {
|
|
66
|
+
return this.someAncestorNode(callback);
|
|
67
|
+
}
|
|
68
|
+
someChildHTMLNode(callback) {
|
|
69
|
+
return this.someChildNode(callback);
|
|
70
|
+
}
|
|
71
|
+
retrieveHTMLNode(callback) {
|
|
72
|
+
let htmlNode = null;
|
|
73
|
+
if (htmlNode === null) {
|
|
74
|
+
const childHTMLNodes = this.getChildHTMLNodes();
|
|
75
|
+
childHTMLNodes.some((childHTMLNode)=>{
|
|
76
|
+
htmlNode = childHTMLNode.retrieveHTMLNode(callback);
|
|
77
|
+
if (htmlNode !== null) {
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
80
|
+
});
|
|
143
81
|
}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
configurable: true
|
|
150
|
-
}
|
|
151
|
-
});
|
|
152
|
-
return _set_prototype_of(Wrapper, Class);
|
|
153
|
-
};
|
|
154
|
-
return _wrap_native_super(Class);
|
|
155
|
-
}
|
|
156
|
-
function _is_native_reflect_construct() {
|
|
157
|
-
try {
|
|
158
|
-
var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
|
|
159
|
-
} catch (_) {}
|
|
160
|
-
return (_is_native_reflect_construct = function() {
|
|
161
|
-
return !!result;
|
|
162
|
-
})();
|
|
163
|
-
}
|
|
164
|
-
var HTMLNode = /*#__PURE__*/ function(Node) {
|
|
165
|
-
_inherits(HTMLNode, Node);
|
|
166
|
-
function HTMLNode(outerNode, parentNode, childNodes, domElement) {
|
|
167
|
-
_class_call_check(this, HTMLNode);
|
|
168
|
-
var _this;
|
|
169
|
-
_this = _call_super(this, HTMLNode, [
|
|
170
|
-
outerNode,
|
|
171
|
-
parentNode,
|
|
172
|
-
childNodes
|
|
173
|
-
]);
|
|
174
|
-
_this.domElement = domElement;
|
|
175
|
-
return _this;
|
|
176
|
-
}
|
|
177
|
-
_create_class(HTMLNode, [
|
|
178
|
-
{
|
|
179
|
-
key: "getDOMElement",
|
|
180
|
-
value: function getDOMElement() {
|
|
181
|
-
return this.domElement;
|
|
182
|
-
}
|
|
183
|
-
},
|
|
184
|
-
{
|
|
185
|
-
key: "setDOMElement",
|
|
186
|
-
value: function setDOMElement(domElement) {
|
|
187
|
-
this.domElement = domElement;
|
|
188
|
-
}
|
|
189
|
-
},
|
|
190
|
-
{
|
|
191
|
-
key: "resetDOMElement",
|
|
192
|
-
value: function resetDOMElement() {
|
|
193
|
-
this.domElement = null;
|
|
194
|
-
}
|
|
195
|
-
},
|
|
196
|
-
{
|
|
197
|
-
key: "getRuleName",
|
|
198
|
-
value: function getRuleName() {
|
|
199
|
-
var markdownNode = this.getMarkdownNode(), ruleName = markdownNode.getRuleName();
|
|
200
|
-
return ruleName;
|
|
201
|
-
}
|
|
202
|
-
},
|
|
203
|
-
{
|
|
204
|
-
key: "isTerminalNode",
|
|
205
|
-
value: function isTerminalNode() {
|
|
206
|
-
var terminalNode = false;
|
|
207
|
-
return terminalNode;
|
|
208
|
-
}
|
|
209
|
-
},
|
|
210
|
-
{
|
|
211
|
-
key: "isNonTerminalNode",
|
|
212
|
-
value: function isNonTerminalNode() {
|
|
213
|
-
var nonTerminalNode = true;
|
|
214
|
-
return nonTerminalNode;
|
|
215
|
-
}
|
|
216
|
-
},
|
|
217
|
-
{
|
|
218
|
-
key: "getMarkdownNode",
|
|
219
|
-
value: function getMarkdownNode() {
|
|
220
|
-
var outerNode = this.getOuterNode(), markdownNode = outerNode; ///
|
|
221
|
-
return markdownNode;
|
|
222
|
-
}
|
|
223
|
-
},
|
|
224
|
-
{
|
|
225
|
-
key: "getParentHTMLNode",
|
|
226
|
-
value: function getParentHTMLNode() {
|
|
227
|
-
var parentNode = this.getParentNode(), parentHTMLNode = parentNode; ///
|
|
228
|
-
return parentHTMLNode;
|
|
229
|
-
}
|
|
230
|
-
},
|
|
231
|
-
{
|
|
232
|
-
key: "getChildHTMLNodes",
|
|
233
|
-
value: function getChildHTMLNodes() {
|
|
234
|
-
var childNodes = this.getChildNodes(), childHTMLNodes = childNodes; ///
|
|
235
|
-
return childHTMLNodes;
|
|
236
|
-
}
|
|
237
|
-
},
|
|
238
|
-
{
|
|
239
|
-
key: "getAncestorHTMLNodes",
|
|
240
|
-
value: function getAncestorHTMLNodes() {
|
|
241
|
-
var ancestorNodes = this.getAncestorNodes(), ancestorHTMLNodes = ancestorNodes; ///
|
|
242
|
-
return ancestorHTMLNodes;
|
|
243
|
-
}
|
|
244
|
-
},
|
|
245
|
-
{
|
|
246
|
-
key: "reduceChildHTMLNode",
|
|
247
|
-
value: function reduceChildHTMLNode(callback, initialValue) {
|
|
248
|
-
return this.reduceChildNode(callback, initialValue);
|
|
82
|
+
if (htmlNode === null) {
|
|
83
|
+
htmlNode = this;
|
|
84
|
+
const result = callback(htmlNode);
|
|
85
|
+
if (!result) {
|
|
86
|
+
htmlNode = null;
|
|
249
87
|
}
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
},
|
|
263
|
-
{
|
|
264
|
-
key: "retrieveHTMLNode",
|
|
265
|
-
value: function retrieveHTMLNode(callback) {
|
|
266
|
-
var htmlNode = null;
|
|
267
|
-
if (htmlNode === null) {
|
|
268
|
-
var childHTMLNodes = this.getChildHTMLNodes();
|
|
269
|
-
childHTMLNodes.some(function(childHTMLNode) {
|
|
270
|
-
htmlNode = childHTMLNode.retrieveHTMLNode(callback);
|
|
271
|
-
if (htmlNode !== null) {
|
|
272
|
-
return true;
|
|
273
|
-
}
|
|
274
|
-
});
|
|
275
|
-
}
|
|
276
|
-
if (htmlNode === null) {
|
|
277
|
-
htmlNode = this;
|
|
278
|
-
var result = callback(htmlNode);
|
|
279
|
-
if (!result) {
|
|
280
|
-
htmlNode = null;
|
|
88
|
+
}
|
|
89
|
+
return htmlNode;
|
|
90
|
+
}
|
|
91
|
+
removeChildHTMLNodes(removedChildHTMLNodes = null) {
|
|
92
|
+
let childHTMLNodes;
|
|
93
|
+
childHTMLNodes = this.getChildHTMLNodes();
|
|
94
|
+
if (removedChildHTMLNodes !== null) {
|
|
95
|
+
childHTMLNodes = childHTMLNodes.filter((childHTMLNode)=>{
|
|
96
|
+
const markdownNode = childHTMLNode.getMarkdownNode(), index = removedChildHTMLNodes.findIndex((removedChildHTMLNode)=>{
|
|
97
|
+
const markdownNodeMatches = removedChildHTMLNode.matchMarkdownNode(markdownNode);
|
|
98
|
+
if (markdownNodeMatches) {
|
|
99
|
+
return true;
|
|
281
100
|
}
|
|
282
|
-
}
|
|
283
|
-
return htmlNode;
|
|
284
|
-
}
|
|
285
|
-
},
|
|
286
|
-
{
|
|
287
|
-
key: "removeChildHTMLNodes",
|
|
288
|
-
value: function removeChildHTMLNodes() {
|
|
289
|
-
var removedChildHTMLNodes = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : null;
|
|
290
|
-
var childHTMLNodes;
|
|
291
|
-
childHTMLNodes = this.getChildHTMLNodes();
|
|
292
|
-
if (removedChildHTMLNodes !== null) {
|
|
293
|
-
childHTMLNodes = childHTMLNodes.filter(function(childHTMLNode) {
|
|
294
|
-
var markdownNode = childHTMLNode.getMarkdownNode(), index = removedChildHTMLNodes.findIndex(function(removedChildHTMLNode) {
|
|
295
|
-
var markdownNodeMatches = removedChildHTMLNode.matchMarkdownNode(markdownNode);
|
|
296
|
-
if (markdownNodeMatches) {
|
|
297
|
-
return true;
|
|
298
|
-
}
|
|
299
|
-
});
|
|
300
|
-
if (index !== -1) {
|
|
301
|
-
return true;
|
|
302
|
-
}
|
|
303
|
-
});
|
|
304
|
-
}
|
|
305
|
-
var removedChildNodes = childHTMLNodes; ///
|
|
306
|
-
removedChildNodes = this.removeChildNodes(removedChildNodes);
|
|
307
|
-
removedChildHTMLNodes = removedChildNodes; ///
|
|
308
|
-
return removedChildHTMLNodes;
|
|
309
|
-
}
|
|
310
|
-
},
|
|
311
|
-
{
|
|
312
|
-
key: "matchMarkdownNode",
|
|
313
|
-
value: function matchMarkdownNode(markdownNode) {
|
|
314
|
-
var outerNode = markdownNode, outerNodeMatches = this.matchOuterNode(outerNode), markdownNodeMatches = outerNodeMatches; ///
|
|
315
|
-
return markdownNodeMatches;
|
|
316
|
-
}
|
|
317
|
-
},
|
|
318
|
-
{
|
|
319
|
-
key: "addChildHTMLNodes",
|
|
320
|
-
value: function addChildHTMLNodes(addedChildHTMLNodes, startHTNLIndex) {
|
|
321
|
-
var addedChildNodes = addedChildHTMLNodes, startIndex = startHTNLIndex; ///
|
|
322
|
-
this.addChildNodes(addedChildNodes, startIndex);
|
|
323
|
-
}
|
|
324
|
-
},
|
|
325
|
-
{
|
|
326
|
-
key: "adjustIndent",
|
|
327
|
-
value: function adjustIndent(indent) {
|
|
328
|
-
if (indent !== null) {
|
|
329
|
-
indent = "".concat(_constants.DOUBLE_SPACE).concat(indent);
|
|
330
|
-
}
|
|
331
|
-
return indent;
|
|
332
|
-
}
|
|
333
|
-
},
|
|
334
|
-
{
|
|
335
|
-
key: "lines",
|
|
336
|
-
value: function lines(context) {
|
|
337
|
-
var lines;
|
|
338
|
-
var ref, ref1;
|
|
339
|
-
ref = this.constructor, ref1 = ref.lines, lines = ref1 === void 0 ? null : ref1, ref;
|
|
340
|
-
if (lines === null) {
|
|
341
|
-
lines = this.reduceChildNode(function(lines, childNode) {
|
|
342
|
-
var childNodeLines = childNode.lines(context);
|
|
343
|
-
lines += childNodeLines;
|
|
344
|
-
return lines;
|
|
345
|
-
}, 0);
|
|
346
|
-
}
|
|
347
|
-
return lines;
|
|
348
|
-
}
|
|
349
|
-
},
|
|
350
|
-
{
|
|
351
|
-
key: "tagName",
|
|
352
|
-
value: function tagName(context) {
|
|
353
|
-
var tagName = this.constructor.tagName;
|
|
354
|
-
return tagName;
|
|
355
|
-
}
|
|
356
|
-
},
|
|
357
|
-
{
|
|
358
|
-
key: "depth",
|
|
359
|
-
value: function depth() {
|
|
360
|
-
var _this_constructor = this.constructor, _this_constructor_depth = _this_constructor.depth, depth = _this_constructor_depth === void 0 ? null : _this_constructor_depth;
|
|
361
|
-
return depth;
|
|
362
|
-
}
|
|
363
|
-
},
|
|
364
|
-
{
|
|
365
|
-
key: "className",
|
|
366
|
-
value: function className(context) {
|
|
367
|
-
var className = this.constructor.className;
|
|
368
|
-
return className;
|
|
369
|
-
}
|
|
370
|
-
},
|
|
371
|
-
{
|
|
372
|
-
key: "closingTag",
|
|
373
|
-
value: function closingTag(context) {
|
|
374
|
-
var tagName = this.tagName(context), closingTag = "</".concat(tagName, ">");
|
|
375
|
-
return closingTag;
|
|
376
|
-
}
|
|
377
|
-
},
|
|
378
|
-
{
|
|
379
|
-
key: "startingTag",
|
|
380
|
-
value: function startingTag(context) {
|
|
381
|
-
var tagName = this.tagName(context), className = this.className(context), attributeName = this.attributeName(context), attributeValue = this.attributeValue(context), classHTML = className !== null ? ' class="'.concat(className, '"') : _constants.EMPTY_STRING, attributeHTML = attributeName !== null && attributeValue !== null ? " ".concat(attributeName, '="').concat(attributeValue, '"') : _constants.EMPTY_STRING, startingTag = "<".concat(tagName).concat(classHTML).concat(attributeHTML, ">");
|
|
382
|
-
return startingTag;
|
|
383
|
-
}
|
|
384
|
-
},
|
|
385
|
-
{
|
|
386
|
-
key: "selfClosingTag",
|
|
387
|
-
value: function selfClosingTag(context) {
|
|
388
|
-
var tagName = this.tagName(context), selfClosingTag = "<".concat(tagName, "/>");
|
|
389
|
-
return selfClosingTag;
|
|
390
|
-
}
|
|
391
|
-
},
|
|
392
|
-
{
|
|
393
|
-
key: "attributeName",
|
|
394
|
-
value: function attributeName(context) {
|
|
395
|
-
var attributeName = null;
|
|
396
|
-
return attributeName;
|
|
397
|
-
}
|
|
398
|
-
},
|
|
399
|
-
{
|
|
400
|
-
key: "attributeValue",
|
|
401
|
-
value: function attributeValue(context) {
|
|
402
|
-
var attributeValue = null;
|
|
403
|
-
return attributeValue;
|
|
404
|
-
}
|
|
405
|
-
},
|
|
406
|
-
{
|
|
407
|
-
key: "createDOMElement",
|
|
408
|
-
value: function createDOMElement(context) {
|
|
409
|
-
var domElement;
|
|
410
|
-
var tagName = this.tagName(context);
|
|
411
|
-
domElement = document.createElement(tagName);
|
|
412
|
-
var className = this.className(context), attributeName = this.attributeName(context), attributeValue = this.attributeValue(context);
|
|
413
|
-
if (className !== null) {
|
|
414
|
-
Object.assign(domElement, {
|
|
415
|
-
className: className
|
|
416
|
-
});
|
|
417
|
-
}
|
|
418
|
-
if (attributeName !== null && attributeValue !== null) {
|
|
419
|
-
domElement.setAttribute(attributeName, attributeValue);
|
|
420
|
-
}
|
|
421
|
-
return domElement;
|
|
422
|
-
}
|
|
423
|
-
},
|
|
424
|
-
{
|
|
425
|
-
key: "mount",
|
|
426
|
-
value: function mount(parentDOMElement, siblingDOMElement, context) {
|
|
427
|
-
this.domElement = this.createDOMElement(context);
|
|
428
|
-
siblingDOMElement !== null ? (0, _dom.insertAfter)(this.domElement, parentDOMElement, siblingDOMElement) : (0, _dom.insertBeforehand)(this.domElement, parentDOMElement);
|
|
429
|
-
parentDOMElement = this.domElement; ///
|
|
430
|
-
siblingDOMElement = null;
|
|
431
|
-
this.childNodes.forEach(function(childNode) {
|
|
432
|
-
siblingDOMElement = childNode.mount(parentDOMElement, siblingDOMElement, context);
|
|
433
101
|
});
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
}
|
|
437
|
-
},
|
|
438
|
-
{
|
|
439
|
-
key: "unmount",
|
|
440
|
-
value: function unmount(parentDOMElement) {
|
|
441
|
-
{
|
|
442
|
-
var _$parentDOMElement = this.domElement; ///
|
|
443
|
-
this.childNodes.forEach(function(childNode) {
|
|
444
|
-
childNode.unmount(_$parentDOMElement);
|
|
445
|
-
});
|
|
446
|
-
}
|
|
447
|
-
(0, _dom.remove)(this.domElement, parentDOMElement);
|
|
448
|
-
this.domElement = null;
|
|
449
|
-
}
|
|
450
|
-
},
|
|
451
|
-
{
|
|
452
|
-
key: "asHTML",
|
|
453
|
-
value: function asHTML(indent, context) {
|
|
454
|
-
if (context === undefined) {
|
|
455
|
-
context = indent; ///
|
|
456
|
-
indent = _constants.EMPTY_STRING;
|
|
102
|
+
if (index !== -1) {
|
|
103
|
+
return true;
|
|
457
104
|
}
|
|
458
|
-
|
|
459
|
-
indent = this.adjustIndent(indent);
|
|
460
|
-
var className = this.className(context), attributeName = this.attributeName(context), childNodesHTML = this.childNodesAsHTML(indent, context);
|
|
461
|
-
if (childNodesHTML !== _constants.EMPTY_STRING || className !== null || attributeName !== null) {
|
|
462
|
-
var startingTag = this.startingTag(context), closingTag = this.closingTag(context);
|
|
463
|
-
html = indent === null ? "".concat(startingTag).concat(childNodesHTML).concat(closingTag) : "".concat(indent).concat(startingTag, "\n").concat(childNodesHTML).concat(indent).concat(closingTag, "\n");
|
|
464
|
-
} else {
|
|
465
|
-
var selfClosingTag = this.selfClosingTag(context);
|
|
466
|
-
html = indent === null ? "".concat(selfClosingTag) : "".concat(indent).concat(selfClosingTag, "\n");
|
|
467
|
-
}
|
|
468
|
-
return html;
|
|
469
|
-
}
|
|
470
|
-
},
|
|
471
|
-
{
|
|
472
|
-
key: "asPlainText",
|
|
473
|
-
value: function asPlainText(context) {
|
|
474
|
-
var childNodesPlainText = this.childNodesAsPlainText(context), plainText = childNodesPlainText; ///
|
|
475
|
-
return plainText;
|
|
476
|
-
}
|
|
477
|
-
},
|
|
478
|
-
{
|
|
479
|
-
key: "childNodesAsHTML",
|
|
480
|
-
value: function childNodesAsHTML(indent, context) {
|
|
481
|
-
var childNodesHTML = this.reduceChildNode(function(childNodesHTML, childNode) {
|
|
482
|
-
var childNodeHTML = childNode.asHTML(indent, context);
|
|
483
|
-
childNodesHTML = "".concat(childNodesHTML).concat(childNodeHTML);
|
|
484
|
-
return childNodesHTML;
|
|
485
|
-
}, _constants.EMPTY_STRING);
|
|
486
|
-
return childNodesHTML;
|
|
487
|
-
}
|
|
488
|
-
},
|
|
489
|
-
{
|
|
490
|
-
key: "childNodesAsPlainText",
|
|
491
|
-
value: function childNodesAsPlainText(context) {
|
|
492
|
-
var childNodesPlainText = this.reduceChildNode(function(childNodesPlainText, childNode) {
|
|
493
|
-
var childNodePlainText = childNode.asPlainText(context);
|
|
494
|
-
childNodesPlainText = "".concat(childNodesPlainText, "\n").concat(childNodePlainText);
|
|
495
|
-
return childNodesPlainText;
|
|
496
|
-
}, _constants.EMPTY_STRING);
|
|
497
|
-
return childNodesPlainText;
|
|
498
|
-
}
|
|
105
|
+
});
|
|
499
106
|
}
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
}
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
107
|
+
let removedChildNodes = childHTMLNodes; ///
|
|
108
|
+
removedChildNodes = this.removeChildNodes(removedChildNodes);
|
|
109
|
+
removedChildHTMLNodes = removedChildNodes; ///
|
|
110
|
+
return removedChildHTMLNodes;
|
|
111
|
+
}
|
|
112
|
+
matchMarkdownNode(markdownNode) {
|
|
113
|
+
const outerNode = markdownNode, outerNodeMatches = this.matchOuterNode(outerNode), markdownNodeMatches = outerNodeMatches; ///
|
|
114
|
+
return markdownNodeMatches;
|
|
115
|
+
}
|
|
116
|
+
addChildHTMLNodes(addedChildHTMLNodes, startHTNLIndex) {
|
|
117
|
+
const addedChildNodes = addedChildHTMLNodes, startIndex = startHTNLIndex; ///
|
|
118
|
+
this.addChildNodes(addedChildNodes, startIndex);
|
|
119
|
+
}
|
|
120
|
+
adjustIndent(indent) {
|
|
121
|
+
if (indent !== null) {
|
|
122
|
+
indent = `${_constants.DOUBLE_SPACE}${indent}`;
|
|
123
|
+
}
|
|
124
|
+
return indent;
|
|
125
|
+
}
|
|
126
|
+
lines(context) {
|
|
127
|
+
let lines;
|
|
128
|
+
({ lines = null } = this.constructor);
|
|
129
|
+
if (lines === null) {
|
|
130
|
+
lines = this.reduceChildNode((lines, childNode)=>{
|
|
131
|
+
const childNodeLines = childNode.lines(context);
|
|
132
|
+
lines += childNodeLines;
|
|
133
|
+
return lines;
|
|
134
|
+
}, 0);
|
|
135
|
+
}
|
|
136
|
+
return lines;
|
|
137
|
+
}
|
|
138
|
+
tagName(context) {
|
|
139
|
+
const { tagName } = this.constructor;
|
|
140
|
+
return tagName;
|
|
141
|
+
}
|
|
142
|
+
depth() {
|
|
143
|
+
const { depth = null } = this.constructor;
|
|
144
|
+
return depth;
|
|
145
|
+
}
|
|
146
|
+
className(context) {
|
|
147
|
+
const { className } = this.constructor;
|
|
148
|
+
return className;
|
|
149
|
+
}
|
|
150
|
+
closingTag(context) {
|
|
151
|
+
const tagName = this.tagName(context), closingTag = `</${tagName}>`;
|
|
152
|
+
return closingTag;
|
|
153
|
+
}
|
|
154
|
+
startingTag(context) {
|
|
155
|
+
const tagName = this.tagName(context), className = this.className(context), attributeName = this.attributeName(context), attributeValue = this.attributeValue(context), classHTML = className !== null ? ` class="${className}"` : _constants.EMPTY_STRING, attributeHTML = attributeName !== null && attributeValue !== null ? ` ${attributeName}="${attributeValue}"` : _constants.EMPTY_STRING, startingTag = `<${tagName}${classHTML}${attributeHTML}>`;
|
|
156
|
+
return startingTag;
|
|
157
|
+
}
|
|
158
|
+
selfClosingTag(context) {
|
|
159
|
+
const tagName = this.tagName(context), selfClosingTag = `<${tagName}/>`;
|
|
160
|
+
return selfClosingTag;
|
|
161
|
+
}
|
|
162
|
+
attributeName(context) {
|
|
163
|
+
const attributeName = null;
|
|
164
|
+
return attributeName;
|
|
165
|
+
}
|
|
166
|
+
attributeValue(context) {
|
|
167
|
+
const attributeValue = null;
|
|
168
|
+
return attributeValue;
|
|
169
|
+
}
|
|
170
|
+
createDOMElement(context) {
|
|
171
|
+
let domElement;
|
|
172
|
+
const tagName = this.tagName(context);
|
|
173
|
+
domElement = document.createElement(tagName);
|
|
174
|
+
const className = this.className(context), attributeName = this.attributeName(context), attributeValue = this.attributeValue(context);
|
|
175
|
+
if (className !== null) {
|
|
176
|
+
Object.assign(domElement, {
|
|
177
|
+
className
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
if (attributeName !== null && attributeValue !== null) {
|
|
181
|
+
domElement.setAttribute(attributeName, attributeValue);
|
|
182
|
+
}
|
|
183
|
+
return domElement;
|
|
184
|
+
}
|
|
185
|
+
mount(parentDOMElement, siblingDOMElement, context) {
|
|
186
|
+
this.domElement = this.createDOMElement(context);
|
|
187
|
+
siblingDOMElement !== null ? (0, _dom.insertAfter)(this.domElement, parentDOMElement, siblingDOMElement) : (0, _dom.insertBeforehand)(this.domElement, parentDOMElement);
|
|
188
|
+
parentDOMElement = this.domElement; ///
|
|
189
|
+
siblingDOMElement = null;
|
|
190
|
+
this.childNodes.forEach((childNode)=>{
|
|
191
|
+
siblingDOMElement = childNode.mount(parentDOMElement, siblingDOMElement, context);
|
|
192
|
+
});
|
|
193
|
+
siblingDOMElement = this.domElement; ///
|
|
194
|
+
return siblingDOMElement;
|
|
195
|
+
}
|
|
196
|
+
unmount(parentDOMElement) {
|
|
555
197
|
{
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
198
|
+
const parentDOMElement = this.domElement; ///
|
|
199
|
+
this.childNodes.forEach((childNode)=>{
|
|
200
|
+
childNode.unmount(parentDOMElement);
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
(0, _dom.remove)(this.domElement, parentDOMElement);
|
|
204
|
+
this.domElement = null;
|
|
205
|
+
}
|
|
206
|
+
asHTML(indent, context) {
|
|
207
|
+
if (context === undefined) {
|
|
208
|
+
context = indent; ///
|
|
209
|
+
indent = _constants.EMPTY_STRING;
|
|
210
|
+
}
|
|
211
|
+
let html;
|
|
212
|
+
indent = this.adjustIndent(indent);
|
|
213
|
+
const className = this.className(context), attributeName = this.attributeName(context), childNodesHTML = this.childNodesAsHTML(indent, context);
|
|
214
|
+
if (childNodesHTML !== _constants.EMPTY_STRING || className !== null || attributeName !== null) {
|
|
215
|
+
const startingTag = this.startingTag(context), closingTag = this.closingTag(context);
|
|
216
|
+
html = indent === null ? `${startingTag}${childNodesHTML}${closingTag}` : `${indent}${startingTag}
|
|
217
|
+
${childNodesHTML}${indent}${closingTag}
|
|
218
|
+
`;
|
|
219
|
+
} else {
|
|
220
|
+
const selfClosingTag = this.selfClosingTag(context);
|
|
221
|
+
html = indent === null ? `${selfClosingTag}` : `${indent}${selfClosingTag}
|
|
222
|
+
`;
|
|
223
|
+
}
|
|
224
|
+
return html;
|
|
225
|
+
}
|
|
226
|
+
asPlainText(context) {
|
|
227
|
+
const childNodesPlainText = this.childNodesAsPlainText(context), plainText = childNodesPlainText; ///
|
|
228
|
+
return plainText;
|
|
229
|
+
}
|
|
230
|
+
childNodesAsHTML(indent, context) {
|
|
231
|
+
const childNodesHTML = this.reduceChildNode((childNodesHTML, childNode)=>{
|
|
232
|
+
const childNodeHTML = childNode.asHTML(indent, context);
|
|
233
|
+
childNodesHTML = `${childNodesHTML}${childNodeHTML}`;
|
|
234
|
+
return childNodesHTML;
|
|
235
|
+
}, _constants.EMPTY_STRING);
|
|
236
|
+
return childNodesHTML;
|
|
237
|
+
}
|
|
238
|
+
childNodesAsPlainText(context) {
|
|
239
|
+
const childNodesPlainText = this.reduceChildNode((childNodesPlainText, childNode)=>{
|
|
240
|
+
const childNodePlainText = childNode.asPlainText(context);
|
|
241
|
+
childNodesPlainText = `${childNodesPlainText}
|
|
242
|
+
${childNodePlainText}`;
|
|
243
|
+
return childNodesPlainText;
|
|
244
|
+
}, _constants.EMPTY_STRING);
|
|
245
|
+
return childNodesPlainText;
|
|
246
|
+
}
|
|
247
|
+
static fromNothing(Class, ...remainingArguments) {
|
|
248
|
+
if (Class === undefined) {
|
|
249
|
+
Class = HTMLNode; ///
|
|
573
250
|
}
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
}
|
|
251
|
+
const domElement = null, htmlNode = _occamdom.Node.fromNothing(Class, domElement, ...remainingArguments);
|
|
252
|
+
return htmlNode;
|
|
253
|
+
}
|
|
254
|
+
static fromOuterNode(Class, outerNode, ...remainingArguments) {
|
|
255
|
+
if (outerNode === undefined) {
|
|
256
|
+
outerNode = Class; ///
|
|
257
|
+
Class = HTMLNode; ///
|
|
258
|
+
}
|
|
259
|
+
const domElement = null, htmlNode = _occamdom.Node.fromOuterNode(Class, outerNode, domElement, ...remainingArguments);
|
|
260
|
+
return htmlNode;
|
|
261
|
+
}
|
|
262
|
+
static fromDOMElement(Class, domElement, ...remainingArguments) {
|
|
263
|
+
if (domElement === undefined) {
|
|
264
|
+
domElement = Class; ///
|
|
265
|
+
Class = HTMLNode; ///
|
|
266
|
+
}
|
|
267
|
+
const htmlNode = _occamdom.Node.fromNothing(Class, domElement, ...remainingArguments);
|
|
268
|
+
return htmlNode;
|
|
269
|
+
}
|
|
270
|
+
static fromChildHTMLNodes(Class, childHTMLNodes, ...remainingArguments) {
|
|
271
|
+
if (childHTMLNodes === undefined) {
|
|
272
|
+
childHTMLNodes = Class; ///
|
|
273
|
+
Class = HTMLNode; ///
|
|
274
|
+
}
|
|
275
|
+
const childNodes = childHTMLNodes, domElement = null, htmlNode = _occamdom.Node.fromChildNodes(Class, childNodes, domElement, ...remainingArguments);
|
|
276
|
+
return htmlNode;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
577
279
|
Object.assign(HTMLNode.prototype, _node.default);
|
|
578
|
-
|
|
280
|
+
const _default = HTMLNode;
|
|
579
281
|
|
|
580
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub2RlL2h0bWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IE5vZGUgfSBmcm9tIFwib2NjYW0tZG9tXCI7XG5cbmltcG9ydCBub2RlTWl4aW5zIGZyb20gXCIuLi9taXhpbnMvbm9kZVwiO1xuXG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcsIERPVUJMRV9TUEFDRSB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHJlbW92ZSwgaW5zZXJ0QWZ0ZXIsIGluc2VydEJlZm9yZWhhbmQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2RvbVwiO1xuXG5jbGFzcyBIVE1MTm9kZSBleHRlbmRzIE5vZGUge1xuICBjb25zdHJ1Y3RvcihvdXRlck5vZGUsIHBhcmVudE5vZGUsIGNoaWxkTm9kZXMsIGRvbUVsZW1lbnQpIHtcbiAgICBzdXBlcihvdXRlck5vZGUsIHBhcmVudE5vZGUsIGNoaWxkTm9kZXMpO1xuXG4gICAgdGhpcy5kb21FbGVtZW50ID0gZG9tRWxlbWVudDtcbiAgfVxuXG4gIGdldERPTUVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZG9tRWxlbWVudDtcbiAgfVxuXG4gIHNldERPTUVsZW1lbnQoZG9tRWxlbWVudCkge1xuICAgIHRoaXMuZG9tRWxlbWVudCA9IGRvbUVsZW1lbnQ7XG4gIH1cblxuICByZXNldERPTUVsZW1lbnQoKSB7XG4gICAgdGhpcy5kb21FbGVtZW50ID0gbnVsbDtcbiAgfVxuXG4gIGdldFJ1bGVOYW1lKCkge1xuICAgIGNvbnN0IG1hcmtkb3duTm9kZSA9IHRoaXMuZ2V0TWFya2Rvd25Ob2RlKCksXG4gICAgICAgICAgcnVsZU5hbWUgPSBtYXJrZG93bk5vZGUuZ2V0UnVsZU5hbWUoKTtcblxuICAgIHJldHVybiBydWxlTmFtZTtcbiAgfVxuXG4gIGlzVGVybWluYWxOb2RlKCkge1xuICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIHRlcm1pbmFsTm9kZTtcbiAgfVxuXG4gIGlzTm9uVGVybWluYWxOb2RlKCkge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHRydWU7XG5cbiAgICByZXR1cm4gbm9uVGVybWluYWxOb2RlO1xuICB9XG5cbiAgZ2V0TWFya2Rvd25Ob2RlKCkge1xuICAgIGNvbnN0IG91dGVyTm9kZSA9IHRoaXMuZ2V0T3V0ZXJOb2RlKCksXG4gICAgICAgICAgbWFya2Rvd25Ob2RlID0gb3V0ZXJOb2RlOyAvLy9cblxuICAgIHJldHVybiBtYXJrZG93bk5vZGU7XG4gIH1cblxuICBnZXRQYXJlbnRIVE1MTm9kZSgpIHtcbiAgICBjb25zdCBwYXJlbnROb2RlID0gdGhpcy5nZXRQYXJlbnROb2RlKCksXG4gICAgICAgICAgcGFyZW50SFRNTE5vZGUgPSBwYXJlbnROb2RlOyAgLy8vXG5cbiAgICByZXR1cm4gcGFyZW50SFRNTE5vZGU7XG4gIH1cblxuICBnZXRDaGlsZEhUTUxOb2RlcygpIHtcbiAgICBjb25zdCBjaGlsZE5vZGVzID0gdGhpcy5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgY2hpbGRIVE1MTm9kZXMgPSBjaGlsZE5vZGVzOyAgLy8vXG5cbiAgICByZXR1cm4gY2hpbGRIVE1MTm9kZXM7XG4gIH1cblxuICBnZXRBbmNlc3RvckhUTUxOb2RlcygpIHtcbiAgICBjb25zdCBhbmNlc3Rvck5vZGVzID0gdGhpcy5nZXRBbmNlc3Rvck5vZGVzKCksXG4gICAgICAgICAgYW5jZXN0b3JIVE1MTm9kZXMgPSBhbmNlc3Rvck5vZGVzOyAgLy8vXG5cbiAgICByZXR1cm4gYW5jZXN0b3JIVE1MTm9kZXM7XG4gIH1cblxuICByZWR1Y2VDaGlsZEhUTUxOb2RlKGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpIHsgcmV0dXJuIHRoaXMucmVkdWNlQ2hpbGROb2RlKGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpOyB9XG5cbiAgc29tZUFuY2VzdG9ySFRNTE5vZGUoY2FsbGJhY2spIHsgcmV0dXJuIHRoaXMuc29tZUFuY2VzdG9yTm9kZShjYWxsYmFjayk7IH1cblxuICBzb21lQ2hpbGRIVE1MTm9kZShjYWxsYmFjaykgeyByZXR1cm4gdGhpcy5zb21lQ2hpbGROb2RlKGNhbGxiYWNrKTsgfVxuXG4gIHJldHJpZXZlSFRNTE5vZGUoY2FsbGJhY2spIHtcbiAgICBsZXQgaHRtbE5vZGUgPSBudWxsO1xuXG4gICAgaWYgKGh0bWxOb2RlID09PSBudWxsKSB7XG4gICAgICBjb25zdCBjaGlsZEhUTUxOb2RlcyA9IHRoaXMuZ2V0Q2hpbGRIVE1MTm9kZXMoKTtcblxuICAgICAgY2hpbGRIVE1MTm9kZXMuc29tZSgoY2hpbGRIVE1MTm9kZSkgPT4ge1xuICAgICAgICBodG1sTm9kZSA9IGNoaWxkSFRNTE5vZGUucmV0cmlldmVIVE1MTm9kZShjYWxsYmFjayk7XG5cbiAgICAgICAgaWYgKGh0bWxOb2RlICE9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChodG1sTm9kZSA9PT0gbnVsbCkge1xuICAgICAgaHRtbE5vZGUgPSB0aGlzO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBjYWxsYmFjayhodG1sTm9kZSk7XG5cbiAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgIGh0bWxOb2RlID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaHRtbE5vZGU7XG4gIH1cblxuICByZW1vdmVDaGlsZEhUTUxOb2RlcyhyZW1vdmVkQ2hpbGRIVE1MTm9kZXMgPSBudWxsKSB7XG4gICAgbGV0IGNoaWxkSFRNTE5vZGVzO1xuXG4gICAgY2hpbGRIVE1MTm9kZXMgPSB0aGlzLmdldENoaWxkSFRNTE5vZGVzKCk7XG5cbiAgICBpZiAocmVtb3ZlZENoaWxkSFRNTE5vZGVzICE9PSBudWxsKSB7XG4gICAgICBjaGlsZEhUTUxOb2RlcyA9IGNoaWxkSFRNTE5vZGVzLmZpbHRlcigoY2hpbGRIVE1MTm9kZSkgPT4geyAvLy9cbiAgICAgICAgY29uc3QgbWFya2Rvd25Ob2RlID0gY2hpbGRIVE1MTm9kZS5nZXRNYXJrZG93bk5vZGUoKSxcbiAgICAgICAgICAgICAgaW5kZXggPSByZW1vdmVkQ2hpbGRIVE1MTm9kZXMuZmluZEluZGV4KChyZW1vdmVkQ2hpbGRIVE1MTm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1hcmtkb3duTm9kZU1hdGNoZXMgPSByZW1vdmVkQ2hpbGRIVE1MTm9kZS5tYXRjaE1hcmtkb3duTm9kZShtYXJrZG93bk5vZGUpO1xuXG4gICAgICAgICAgICAgICAgaWYgKG1hcmtkb3duTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBsZXQgcmVtb3ZlZENoaWxkTm9kZXMgPSBjaGlsZEhUTUxOb2RlczsgIC8vL1xuXG4gICAgcmVtb3ZlZENoaWxkTm9kZXMgPSB0aGlzLnJlbW92ZUNoaWxkTm9kZXMocmVtb3ZlZENoaWxkTm9kZXMpO1xuXG4gICAgcmVtb3ZlZENoaWxkSFRNTE5vZGVzID0gcmVtb3ZlZENoaWxkTm9kZXM7ICAvLy9cblxuICAgIHJldHVybiByZW1vdmVkQ2hpbGRIVE1MTm9kZXM7XG4gIH1cblxuICBtYXRjaE1hcmtkb3duTm9kZShtYXJrZG93bk5vZGUpIHtcbiAgICBjb25zdCBvdXRlck5vZGUgPSBtYXJrZG93bk5vZGUsIC8vL1xuICAgICAgICAgIG91dGVyTm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoT3V0ZXJOb2RlKG91dGVyTm9kZSksXG4gICAgICAgICAgbWFya2Rvd25Ob2RlTWF0Y2hlcyA9IG91dGVyTm9kZU1hdGNoZXM7IC8vL1xuXG4gICAgcmV0dXJuIG1hcmtkb3duTm9kZU1hdGNoZXM7XG4gIH1cblxuICBhZGRDaGlsZEhUTUxOb2RlcyhhZGRlZENoaWxkSFRNTE5vZGVzLCBzdGFydEhUTkxJbmRleCkge1xuICAgIGNvbnN0IGFkZGVkQ2hpbGROb2RlcyA9IGFkZGVkQ2hpbGRIVE1MTm9kZXMsICAvLy9cbiAgICAgICAgICBzdGFydEluZGV4ID0gc3RhcnRIVE5MSW5kZXg7ICAvLy9cblxuICAgIHRoaXMuYWRkQ2hpbGROb2RlcyhhZGRlZENoaWxkTm9kZXMsIHN0YXJ0SW5kZXgpO1xuICB9XG5cbiAgYWRqdXN0SW5kZW50KGluZGVudCkge1xuICAgIGlmIChpbmRlbnQgIT09IG51bGwpIHtcbiAgICAgIGluZGVudCA9IGAke0RPVUJMRV9TUEFDRX0ke2luZGVudH1gO1xuICAgIH1cblxuICAgIHJldHVybiBpbmRlbnQ7XG4gIH1cblxuICBsaW5lcyhjb250ZXh0KSB7XG4gICAgbGV0IGxpbmVzO1xuXG4gICAgKHsgbGluZXMgPSBudWxsIH0gPSB0aGlzLmNvbnN0cnVjdG9yKTtcblxuICAgIGlmIChsaW5lcyA9PT0gbnVsbCkge1xuICAgICAgbGluZXMgPSB0aGlzLnJlZHVjZUNoaWxkTm9kZSgobGluZXMsIGNoaWxkTm9kZSkgPT4ge1xuICAgICAgICBjb25zdCBjaGlsZE5vZGVMaW5lcyA9IGNoaWxkTm9kZS5saW5lcyhjb250ZXh0KTtcblxuICAgICAgICBsaW5lcyArPSBjaGlsZE5vZGVMaW5lcztcblxuICAgICAgICByZXR1cm4gbGluZXM7XG4gICAgICB9LCAwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGluZXM7XG4gIH1cblxuICB0YWdOYW1lKGNvbnRleHQpIHtcbiAgICBjb25zdCB7IHRhZ05hbWUgfSA9IHRoaXMuY29uc3RydWN0b3I7XG5cbiAgICByZXR1cm4gdGFnTmFtZTtcbiAgfVxuXG4gIGRlcHRoKCkge1xuICAgIGNvbnN0IHsgZGVwdGggPSBudWxsIH0gPSB0aGlzLmNvbnN0cnVjdG9yO1xuXG4gICAgcmV0dXJuIGRlcHRoO1xuICB9XG5cbiAgY2xhc3NOYW1lKGNvbnRleHQpIHtcbiAgICBjb25zdCB7IGNsYXNzTmFtZSB9ID0gdGhpcy5jb25zdHJ1Y3RvcjtcblxuICAgIHJldHVybiBjbGFzc05hbWU7XG4gIH1cblxuICBjbG9zaW5nVGFnKGNvbnRleHQpIHtcbiAgICBjb25zdCB0YWdOYW1lID0gdGhpcy50YWdOYW1lKGNvbnRleHQpLFxuICAgICAgICAgIGNsb3NpbmdUYWcgPSBgPC8ke3RhZ05hbWV9PmA7XG5cbiAgICByZXR1cm4gY2xvc2luZ1RhZztcbiAgfVxuXG4gIHN0YXJ0aW5nVGFnKGNvbnRleHQpIHtcbiAgICBjb25zdCB0YWdOYW1lID0gdGhpcy50YWdOYW1lKGNvbnRleHQpLFxuICAgICAgICAgIGNsYXNzTmFtZSA9IHRoaXMuY2xhc3NOYW1lKGNvbnRleHQpLFxuICAgICAgICAgIGF0dHJpYnV0ZU5hbWUgPSB0aGlzLmF0dHJpYnV0ZU5hbWUoY29udGV4dCksXG4gICAgICAgICAgYXR0cmlidXRlVmFsdWUgPSB0aGlzLmF0dHJpYnV0ZVZhbHVlKGNvbnRleHQpLFxuICAgICAgICAgIGNsYXNzSFRNTCA9IChjbGFzc05hbWUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgYCBjbGFzcz1cIiR7Y2xhc3NOYW1lfVwiYCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEVNUFRZX1NUUklORyxcbiAgICAgICAgICBhdHRyaWJ1dGVIVE1MID0gKChhdHRyaWJ1dGVOYW1lICE9PSBudWxsKSAmJiAoYXR0cmlidXRlVmFsdWUgIT09IG51bGwpKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBgICR7YXR0cmlidXRlTmFtZX09XCIke2F0dHJpYnV0ZVZhbHVlfVwiYCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTVBUWV9TVFJJTkcsXG4gICAgICAgICAgc3RhcnRpbmdUYWcgPSBgPCR7dGFnTmFtZX0ke2NsYXNzSFRNTH0ke2F0dHJpYnV0ZUhUTUx9PmA7XG5cbiAgICByZXR1cm4gc3RhcnRpbmdUYWc7XG4gIH1cblxuICBzZWxmQ2xvc2luZ1RhZyhjb250ZXh0KSB7XG4gICAgY29uc3QgdGFnTmFtZSA9IHRoaXMudGFnTmFtZShjb250ZXh0KSxcbiAgICAgICAgICBzZWxmQ2xvc2luZ1RhZyA9IGA8JHt0YWdOYW1lfS8+YDtcblxuICAgIHJldHVybiBzZWxmQ2xvc2luZ1RhZztcbiAgfVxuXG4gIGF0dHJpYnV0ZU5hbWUoY29udGV4dCkge1xuICAgIGNvbnN0IGF0dHJpYnV0ZU5hbWUgPSBudWxsO1xuXG4gICAgcmV0dXJuIGF0dHJpYnV0ZU5hbWU7XG4gIH1cblxuICBhdHRyaWJ1dGVWYWx1ZShjb250ZXh0KSB7XG4gICAgY29uc3QgYXR0cmlidXRlVmFsdWUgPSBudWxsO1xuXG4gICAgcmV0dXJuIGF0dHJpYnV0ZVZhbHVlO1xuICB9XG5cbiAgY3JlYXRlRE9NRWxlbWVudChjb250ZXh0KSB7XG4gICAgbGV0IGRvbUVsZW1lbnQ7XG5cbiAgICBjb25zdCB0YWdOYW1lID0gdGhpcy50YWdOYW1lKGNvbnRleHQpO1xuXG4gICAgZG9tRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnTmFtZSk7XG5cbiAgICBjb25zdCBjbGFzc05hbWUgPSB0aGlzLmNsYXNzTmFtZShjb250ZXh0KSxcbiAgICAgICAgICBhdHRyaWJ1dGVOYW1lID0gdGhpcy5hdHRyaWJ1dGVOYW1lKGNvbnRleHQpLFxuICAgICAgICAgIGF0dHJpYnV0ZVZhbHVlID0gdGhpcy5hdHRyaWJ1dGVWYWx1ZShjb250ZXh0KTtcblxuICAgIGlmIChjbGFzc05hbWUgIT09IG51bGwpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24oZG9tRWxlbWVudCwge1xuICAgICAgICBjbGFzc05hbWVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICgoYXR0cmlidXRlTmFtZSAhPT0gbnVsbCkgJiYgKGF0dHJpYnV0ZVZhbHVlICE9PSBudWxsKSkge1xuICAgICAgZG9tRWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgYXR0cmlidXRlVmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiBkb21FbGVtZW50O1xuICB9XG5cbiAgbW91bnQocGFyZW50RE9NRWxlbWVudCwgc2libGluZ0RPTUVsZW1lbnQsIGNvbnRleHQpIHtcbiAgICB0aGlzLmRvbUVsZW1lbnQgPSB0aGlzLmNyZWF0ZURPTUVsZW1lbnQoY29udGV4dCk7XG5cbiAgICAoc2libGluZ0RPTUVsZW1lbnQgIT09IG51bGwpID9cbiAgICAgIGluc2VydEFmdGVyKHRoaXMuZG9tRWxlbWVudCwgcGFyZW50RE9NRWxlbWVudCwgc2libGluZ0RPTUVsZW1lbnQpIDpcbiAgICAgICAgaW5zZXJ0QmVmb3JlaGFuZCh0aGlzLmRvbUVsZW1lbnQsIHBhcmVudERPTUVsZW1lbnQpO1xuXG4gICAgcGFyZW50RE9NRWxlbWVudCA9IHRoaXMuZG9tRWxlbWVudDsgLy8vXG5cbiAgICBzaWJsaW5nRE9NRWxlbWVudCA9IG51bGw7XG5cbiAgICB0aGlzLmNoaWxkTm9kZXMuZm9yRWFjaCgoY2hpbGROb2RlKSA9PiB7XG4gICAgICBzaWJsaW5nRE9NRWxlbWVudCA9IGNoaWxkTm9kZS5tb3VudChwYXJlbnRET01FbGVtZW50LCBzaWJsaW5nRE9NRWxlbWVudCwgY29udGV4dCk7XG4gICAgfSk7XG5cbiAgICBzaWJsaW5nRE9NRWxlbWVudCA9IHRoaXMuZG9tRWxlbWVudDsgIC8vL1xuXG4gICAgcmV0dXJuIHNpYmxpbmdET01FbGVtZW50O1xuICB9XG5cbiAgdW5tb3VudChwYXJlbnRET01FbGVtZW50KSB7XG4gICAge1xuICAgICAgY29uc3QgcGFyZW50RE9NRWxlbWVudCA9IHRoaXMuZG9tRWxlbWVudDsgLy8vXG5cbiAgICAgIHRoaXMuY2hpbGROb2Rlcy5mb3JFYWNoKChjaGlsZE5vZGUpID0+IHtcbiAgICAgICAgY2hpbGROb2RlLnVubW91bnQocGFyZW50RE9NRWxlbWVudCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZW1vdmUodGhpcy5kb21FbGVtZW50LCBwYXJlbnRET01FbGVtZW50KTtcblxuICAgIHRoaXMuZG9tRWxlbWVudCA9IG51bGw7XG4gIH1cblxuICBhc0hUTUwoaW5kZW50LCBjb250ZXh0KSB7XG4gICAgaWYgKGNvbnRleHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY29udGV4dCA9IGluZGVudDsgLy8vXG5cbiAgICAgIGluZGVudCA9IEVNUFRZX1NUUklORztcbiAgICB9XG5cbiAgICBsZXQgaHRtbDtcblxuICAgIGluZGVudCA9IHRoaXMuYWRqdXN0SW5kZW50KGluZGVudCk7XG5cbiAgICBjb25zdCBjbGFzc05hbWUgPSB0aGlzLmNsYXNzTmFtZShjb250ZXh0KSxcbiAgICAgICAgICBhdHRyaWJ1dGVOYW1lID0gdGhpcy5hdHRyaWJ1dGVOYW1lKGNvbnRleHQpLFxuICAgICAgICAgIGNoaWxkTm9kZXNIVE1MID0gdGhpcy5jaGlsZE5vZGVzQXNIVE1MKGluZGVudCwgY29udGV4dCk7XG5cbiAgICBpZiAoKGNoaWxkTm9kZXNIVE1MICE9PSBFTVBUWV9TVFJJTkcpIHx8IChjbGFzc05hbWUgIT09IG51bGwpIHx8IChhdHRyaWJ1dGVOYW1lICE9PSBudWxsKSkge1xuICAgICAgY29uc3Qgc3RhcnRpbmdUYWcgPSB0aGlzLnN0YXJ0aW5nVGFnKGNvbnRleHQpLFxuICAgICAgICAgICAgY2xvc2luZ1RhZyA9IHRoaXMuY2xvc2luZ1RhZyhjb250ZXh0KTtcblxuICAgICAgaHRtbCA9IChpbmRlbnQgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgIGAke3N0YXJ0aW5nVGFnfSR7Y2hpbGROb2Rlc0hUTUx9JHtjbG9zaW5nVGFnfWAgOlxuICAgICAgICAgICAgICAgICBgJHtpbmRlbnR9JHtzdGFydGluZ1RhZ31cbiR7Y2hpbGROb2Rlc0hUTUx9JHtpbmRlbnR9JHtjbG9zaW5nVGFnfVxuYDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc2VsZkNsb3NpbmdUYWcgPSB0aGlzLnNlbGZDbG9zaW5nVGFnKGNvbnRleHQpO1xuXG4gICAgICBodG1sID0gKGluZGVudCA9PT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgYCR7c2VsZkNsb3NpbmdUYWd9YCA6XG4gICAgICAgICAgICAgICAgIGAke2luZGVudH0ke3NlbGZDbG9zaW5nVGFnfVxuYDtcbiAgICB9XG5cbiAgICByZXR1cm4gaHRtbDtcbiAgfVxuXG4gIGFzUGxhaW5UZXh0KGNvbnRleHQpIHtcbiAgICBjb25zdCBjaGlsZE5vZGVzUGxhaW5UZXh0ID0gdGhpcy5jaGlsZE5vZGVzQXNQbGFpblRleHQoY29udGV4dCksXG4gICAgICAgICAgcGxhaW5UZXh0ID0gY2hpbGROb2Rlc1BsYWluVGV4dDsgIC8vL1xuXG4gICAgcmV0dXJuIHBsYWluVGV4dDtcbiAgfVxuXG4gIGNoaWxkTm9kZXNBc0hUTUwoaW5kZW50LCBjb250ZXh0KSB7XG4gICAgY29uc3QgY2hpbGROb2Rlc0hUTUwgPSB0aGlzLnJlZHVjZUNoaWxkTm9kZSgoY2hpbGROb2Rlc0hUTUwsIGNoaWxkTm9kZSkgPT4ge1xuICAgICAgY29uc3QgY2hpbGROb2RlSFRNTCA9IGNoaWxkTm9kZS5hc0hUTUwoaW5kZW50LCBjb250ZXh0KTtcblxuICAgICAgY2hpbGROb2Rlc0hUTUwgPSBgJHtjaGlsZE5vZGVzSFRNTH0ke2NoaWxkTm9kZUhUTUx9YDtcblxuICAgICAgcmV0dXJuIGNoaWxkTm9kZXNIVE1MO1xuICAgIH0sIEVNUFRZX1NUUklORyk7XG5cbiAgICByZXR1cm4gY2hpbGROb2Rlc0hUTUw7XG4gIH1cblxuICBjaGlsZE5vZGVzQXNQbGFpblRleHQoY29udGV4dCkge1xuICAgIGNvbnN0IGNoaWxkTm9kZXNQbGFpblRleHQgPSB0aGlzLnJlZHVjZUNoaWxkTm9kZSgoY2hpbGROb2Rlc1BsYWluVGV4dCwgY2hpbGROb2RlKSA9PiB7XG4gICAgICBjb25zdCBjaGlsZE5vZGVQbGFpblRleHQgPSBjaGlsZE5vZGUuYXNQbGFpblRleHQoY29udGV4dCk7XG5cbiAgICAgIGNoaWxkTm9kZXNQbGFpblRleHQgPSBgJHtjaGlsZE5vZGVzUGxhaW5UZXh0fVxuJHtjaGlsZE5vZGVQbGFpblRleHR9YDtcblxuICAgICAgcmV0dXJuIGNoaWxkTm9kZXNQbGFpblRleHQ7XG4gICAgfSwgRU1QVFlfU1RSSU5HKTtcblxuICAgIHJldHVybiBjaGlsZE5vZGVzUGxhaW5UZXh0O1xuICB9XG5cbiAgc3RhdGljIGZyb21Ob3RoaW5nKENsYXNzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBpZiAoQ2xhc3MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgQ2xhc3MgPSBIVE1MTm9kZTsgLy8vXG4gICAgfVxuXG4gICAgY29uc3QgZG9tRWxlbWVudCA9IG51bGwsXG4gICAgICAgICAgaHRtbE5vZGUgPSBOb2RlLmZyb21Ob3RoaW5nKENsYXNzLCBkb21FbGVtZW50LCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgcmV0dXJuIGh0bWxOb2RlO1xuICB9XG5cbiAgc3RhdGljIGZyb21PdXRlck5vZGUoQ2xhc3MsIG91dGVyTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgaWYgKG91dGVyTm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBvdXRlck5vZGUgPSBDbGFzczsgIC8vL1xuXG4gICAgICBDbGFzcyA9IEhUTUxOb2RlOyAvLy9cbiAgICB9XG5cbiAgICBjb25zdCBkb21FbGVtZW50ID0gbnVsbCxcbiAgICAgICAgICBodG1sTm9kZSA9IE5vZGUuZnJvbU91dGVyTm9kZShDbGFzcywgb3V0ZXJOb2RlLCBkb21FbGVtZW50LCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgcmV0dXJuIGh0bWxOb2RlO1xuICB9XG5cbiAgc3RhdGljIGZyb21ET01FbGVtZW50KENsYXNzLCBkb21FbGVtZW50LCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBpZiAoZG9tRWxlbWVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBkb21FbGVtZW50ID0gQ2xhc3M7IC8vL1xuXG4gICAgICBDbGFzcyA9IEhUTUxOb2RlOyAvLy9cbiAgICB9XG5cbiAgICBjb25zdCBodG1sTm9kZSA9IE5vZGUuZnJvbU5vdGhpbmcoQ2xhc3MsIGRvbUVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICByZXR1cm4gaHRtbE5vZGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbUNoaWxkSFRNTE5vZGVzKENsYXNzLCBjaGlsZEhUTUxOb2RlcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgaWYgKGNoaWxkSFRNTE5vZGVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNoaWxkSFRNTE5vZGVzID0gQ2xhc3M7ICAvLy9cblxuICAgICAgQ2xhc3MgPSBIVE1MTm9kZTsgLy8vXG4gICAgfVxuXG4gICAgY29uc3QgY2hpbGROb2RlcyA9IGNoaWxkSFRNTE5vZGVzLCAgLy8vXG4gICAgICAgICAgZG9tRWxlbWVudCA9IG51bGwsXG4gICAgICAgICAgaHRtbE5vZGUgPSBOb2RlLmZyb21DaGlsZE5vZGVzKENsYXNzLCBjaGlsZE5vZGVzLCBkb21FbGVtZW50LCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgcmV0dXJuIGh0bWxOb2RlO1xuICB9XG59XG5cbk9iamVjdC5hc3NpZ24oSFRNTE5vZGUucHJvdG90eXBlLCBub2RlTWl4aW5zKTtcblxuZXhwb3J0IGRlZmF1bHQgSFRNTE5vZGU7XG4iXSwibmFtZXMiOlsiSFRNTE5vZGUiLCJvdXRlck5vZGUiLCJwYXJlbnROb2RlIiwiY2hpbGROb2RlcyIsImRvbUVsZW1lbnQiLCJnZXRET01FbGVtZW50Iiwic2V0RE9NRWxlbWVudCIsInJlc2V0RE9NRWxlbWVudCIsImdldFJ1bGVOYW1lIiwibWFya2Rvd25Ob2RlIiwiZ2V0TWFya2Rvd25Ob2RlIiwicnVsZU5hbWUiLCJpc1Rlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZSIsImlzTm9uVGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlIiwiZ2V0T3V0ZXJOb2RlIiwiZ2V0UGFyZW50SFRNTE5vZGUiLCJnZXRQYXJlbnROb2RlIiwicGFyZW50SFRNTE5vZGUiLCJnZXRDaGlsZEhUTUxOb2RlcyIsImdldENoaWxkTm9kZXMiLCJjaGlsZEhUTUxOb2RlcyIsImdldEFuY2VzdG9ySFRNTE5vZGVzIiwiYW5jZXN0b3JOb2RlcyIsImdldEFuY2VzdG9yTm9kZXMiLCJhbmNlc3RvckhUTUxOb2RlcyIsInJlZHVjZUNoaWxkSFRNTE5vZGUiLCJjYWxsYmFjayIsImluaXRpYWxWYWx1ZSIsInJlZHVjZUNoaWxkTm9kZSIsInNvbWVBbmNlc3RvckhUTUxOb2RlIiwic29tZUFuY2VzdG9yTm9kZSIsInNvbWVDaGlsZEhUTUxOb2RlIiwic29tZUNoaWxkTm9kZSIsInJldHJpZXZlSFRNTE5vZGUiLCJodG1sTm9kZSIsInNvbWUiLCJjaGlsZEhUTUxOb2RlIiwicmVzdWx0IiwicmVtb3ZlQ2hpbGRIVE1MTm9kZXMiLCJyZW1vdmVkQ2hpbGRIVE1MTm9kZXMiLCJmaWx0ZXIiLCJpbmRleCIsImZpbmRJbmRleCIsInJlbW92ZWRDaGlsZEhUTUxOb2RlIiwibWFya2Rvd25Ob2RlTWF0Y2hlcyIsIm1hdGNoTWFya2Rvd25Ob2RlIiwicmVtb3ZlZENoaWxkTm9kZXMiLCJyZW1vdmVDaGlsZE5vZGVzIiwib3V0ZXJOb2RlTWF0Y2hlcyIsIm1hdGNoT3V0ZXJOb2RlIiwiYWRkQ2hpbGRIVE1MTm9kZXMiLCJhZGRlZENoaWxkSFRNTE5vZGVzIiwic3RhcnRIVE5MSW5kZXgiLCJhZGRlZENoaWxkTm9kZXMiLCJzdGFydEluZGV4IiwiYWRkQ2hpbGROb2RlcyIsImFkanVzdEluZGVudCIsImluZGVudCIsIkRPVUJMRV9TUEFDRSIsImxpbmVzIiwiY29udGV4dCIsImNoaWxkTm9kZSIsImNoaWxkTm9kZUxpbmVzIiwidGFnTmFtZSIsImRlcHRoIiwiY2xhc3NOYW1lIiwiY2xvc2luZ1RhZyIsInN0YXJ0aW5nVGFnIiwiYXR0cmlidXRlTmFtZSIsImF0dHJpYnV0ZVZhbHVlIiwiY2xhc3NIVE1MIiwiRU1QVFlfU1RSSU5HIiwiYXR0cmlidXRlSFRNTCIsInNlbGZDbG9zaW5nVGFnIiwiY3JlYXRlRE9NRWxlbWVudCIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsIk9iamVjdCIsImFzc2lnbiIsInNldEF0dHJpYnV0ZSIsIm1vdW50IiwicGFyZW50RE9NRWxlbWVudCIsInNpYmxpbmdET01FbGVtZW50IiwiaW5zZXJ0QWZ0ZXIiLCJpbnNlcnRCZWZvcmVoYW5kIiwiZm9yRWFjaCIsInVubW91bnQiLCJyZW1vdmUiLCJhc0hUTUwiLCJ1bmRlZmluZWQiLCJodG1sIiwiY2hpbGROb2Rlc0hUTUwiLCJjaGlsZE5vZGVzQXNIVE1MIiwiYXNQbGFpblRleHQiLCJjaGlsZE5vZGVzUGxhaW5UZXh0IiwiY2hpbGROb2Rlc0FzUGxhaW5UZXh0IiwicGxhaW5UZXh0IiwiY2hpbGROb2RlSFRNTCIsImNoaWxkTm9kZVBsYWluVGV4dCIsImZyb21Ob3RoaW5nIiwiQ2xhc3MiLCJyZW1haW5pbmdBcmd1bWVudHMiLCJOb2RlIiwiZnJvbU91dGVyTm9kZSIsImZyb21ET01FbGVtZW50IiwiZnJvbUNoaWxkSFRNTE5vZGVzIiwiZnJvbUNoaWxkTm9kZXMiLCJwcm90b3R5cGUiLCJub2RlTWl4aW5zIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFvYUE7OztlQUFBOzs7d0JBbGFxQjsyREFFRTt5QkFFb0I7bUJBQ1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV0RCxJQUFBLEFBQU1BLHlCQUFOO2NBQU1BO2FBQUFBLFNBQ1FDLFNBQVMsRUFBRUMsVUFBVSxFQUFFQyxVQUFVLEVBQUVDLFVBQVU7Z0NBRHJESjs7Z0JBRUYsa0JBRkVBO1lBRUlDO1lBQVdDO1lBQVlDOztRQUU3QixNQUFLQyxVQUFVLEdBQUdBOzs7a0JBSmhCSjs7WUFPSkssS0FBQUE7bUJBQUFBLFNBQUFB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
|
|
282
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub2RlL2h0bWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IE5vZGUgfSBmcm9tIFwib2NjYW0tZG9tXCI7XG5cbmltcG9ydCBub2RlTWl4aW5zIGZyb20gXCIuLi9taXhpbnMvbm9kZVwiO1xuXG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcsIERPVUJMRV9TUEFDRSB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHJlbW92ZSwgaW5zZXJ0QWZ0ZXIsIGluc2VydEJlZm9yZWhhbmQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2RvbVwiO1xuXG5jbGFzcyBIVE1MTm9kZSBleHRlbmRzIE5vZGUge1xuICBjb25zdHJ1Y3RvcihvdXRlck5vZGUsIHBhcmVudE5vZGUsIGNoaWxkTm9kZXMsIGRvbUVsZW1lbnQpIHtcbiAgICBzdXBlcihvdXRlck5vZGUsIHBhcmVudE5vZGUsIGNoaWxkTm9kZXMpO1xuXG4gICAgdGhpcy5kb21FbGVtZW50ID0gZG9tRWxlbWVudDtcbiAgfVxuXG4gIGdldERPTUVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZG9tRWxlbWVudDtcbiAgfVxuXG4gIHNldERPTUVsZW1lbnQoZG9tRWxlbWVudCkge1xuICAgIHRoaXMuZG9tRWxlbWVudCA9IGRvbUVsZW1lbnQ7XG4gIH1cblxuICByZXNldERPTUVsZW1lbnQoKSB7XG4gICAgdGhpcy5kb21FbGVtZW50ID0gbnVsbDtcbiAgfVxuXG4gIGdldFJ1bGVOYW1lKCkge1xuICAgIGNvbnN0IG1hcmtkb3duTm9kZSA9IHRoaXMuZ2V0TWFya2Rvd25Ob2RlKCksXG4gICAgICAgICAgcnVsZU5hbWUgPSBtYXJrZG93bk5vZGUuZ2V0UnVsZU5hbWUoKTtcblxuICAgIHJldHVybiBydWxlTmFtZTtcbiAgfVxuXG4gIGlzVGVybWluYWxOb2RlKCkge1xuICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIHRlcm1pbmFsTm9kZTtcbiAgfVxuXG4gIGlzTm9uVGVybWluYWxOb2RlKCkge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHRydWU7XG5cbiAgICByZXR1cm4gbm9uVGVybWluYWxOb2RlO1xuICB9XG5cbiAgZ2V0TWFya2Rvd25Ob2RlKCkge1xuICAgIGNvbnN0IG91dGVyTm9kZSA9IHRoaXMuZ2V0T3V0ZXJOb2RlKCksXG4gICAgICAgICAgbWFya2Rvd25Ob2RlID0gb3V0ZXJOb2RlOyAvLy9cblxuICAgIHJldHVybiBtYXJrZG93bk5vZGU7XG4gIH1cblxuICBnZXRQYXJlbnRIVE1MTm9kZSgpIHtcbiAgICBjb25zdCBwYXJlbnROb2RlID0gdGhpcy5nZXRQYXJlbnROb2RlKCksXG4gICAgICAgICAgcGFyZW50SFRNTE5vZGUgPSBwYXJlbnROb2RlOyAgLy8vXG5cbiAgICByZXR1cm4gcGFyZW50SFRNTE5vZGU7XG4gIH1cblxuICBnZXRDaGlsZEhUTUxOb2RlcygpIHtcbiAgICBjb25zdCBjaGlsZE5vZGVzID0gdGhpcy5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgY2hpbGRIVE1MTm9kZXMgPSBjaGlsZE5vZGVzOyAgLy8vXG5cbiAgICByZXR1cm4gY2hpbGRIVE1MTm9kZXM7XG4gIH1cblxuICBnZXRBbmNlc3RvckhUTUxOb2RlcygpIHtcbiAgICBjb25zdCBhbmNlc3Rvck5vZGVzID0gdGhpcy5nZXRBbmNlc3Rvck5vZGVzKCksXG4gICAgICAgICAgYW5jZXN0b3JIVE1MTm9kZXMgPSBhbmNlc3Rvck5vZGVzOyAgLy8vXG5cbiAgICByZXR1cm4gYW5jZXN0b3JIVE1MTm9kZXM7XG4gIH1cblxuICByZWR1Y2VDaGlsZEhUTUxOb2RlKGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpIHsgcmV0dXJuIHRoaXMucmVkdWNlQ2hpbGROb2RlKGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpOyB9XG5cbiAgc29tZUFuY2VzdG9ySFRNTE5vZGUoY2FsbGJhY2spIHsgcmV0dXJuIHRoaXMuc29tZUFuY2VzdG9yTm9kZShjYWxsYmFjayk7IH1cblxuICBzb21lQ2hpbGRIVE1MTm9kZShjYWxsYmFjaykgeyByZXR1cm4gdGhpcy5zb21lQ2hpbGROb2RlKGNhbGxiYWNrKTsgfVxuXG4gIHJldHJpZXZlSFRNTE5vZGUoY2FsbGJhY2spIHtcbiAgICBsZXQgaHRtbE5vZGUgPSBudWxsO1xuXG4gICAgaWYgKGh0bWxOb2RlID09PSBudWxsKSB7XG4gICAgICBjb25zdCBjaGlsZEhUTUxOb2RlcyA9IHRoaXMuZ2V0Q2hpbGRIVE1MTm9kZXMoKTtcblxuICAgICAgY2hpbGRIVE1MTm9kZXMuc29tZSgoY2hpbGRIVE1MTm9kZSkgPT4ge1xuICAgICAgICBodG1sTm9kZSA9IGNoaWxkSFRNTE5vZGUucmV0cmlldmVIVE1MTm9kZShjYWxsYmFjayk7XG5cbiAgICAgICAgaWYgKGh0bWxOb2RlICE9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChodG1sTm9kZSA9PT0gbnVsbCkge1xuICAgICAgaHRtbE5vZGUgPSB0aGlzO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBjYWxsYmFjayhodG1sTm9kZSk7XG5cbiAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgIGh0bWxOb2RlID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaHRtbE5vZGU7XG4gIH1cblxuICByZW1vdmVDaGlsZEhUTUxOb2RlcyhyZW1vdmVkQ2hpbGRIVE1MTm9kZXMgPSBudWxsKSB7XG4gICAgbGV0IGNoaWxkSFRNTE5vZGVzO1xuXG4gICAgY2hpbGRIVE1MTm9kZXMgPSB0aGlzLmdldENoaWxkSFRNTE5vZGVzKCk7XG5cbiAgICBpZiAocmVtb3ZlZENoaWxkSFRNTE5vZGVzICE9PSBudWxsKSB7XG4gICAgICBjaGlsZEhUTUxOb2RlcyA9IGNoaWxkSFRNTE5vZGVzLmZpbHRlcigoY2hpbGRIVE1MTm9kZSkgPT4geyAvLy9cbiAgICAgICAgY29uc3QgbWFya2Rvd25Ob2RlID0gY2hpbGRIVE1MTm9kZS5nZXRNYXJrZG93bk5vZGUoKSxcbiAgICAgICAgICAgICAgaW5kZXggPSByZW1vdmVkQ2hpbGRIVE1MTm9kZXMuZmluZEluZGV4KChyZW1vdmVkQ2hpbGRIVE1MTm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1hcmtkb3duTm9kZU1hdGNoZXMgPSByZW1vdmVkQ2hpbGRIVE1MTm9kZS5tYXRjaE1hcmtkb3duTm9kZShtYXJrZG93bk5vZGUpO1xuXG4gICAgICAgICAgICAgICAgaWYgKG1hcmtkb3duTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBsZXQgcmVtb3ZlZENoaWxkTm9kZXMgPSBjaGlsZEhUTUxOb2RlczsgIC8vL1xuXG4gICAgcmVtb3ZlZENoaWxkTm9kZXMgPSB0aGlzLnJlbW92ZUNoaWxkTm9kZXMocmVtb3ZlZENoaWxkTm9kZXMpO1xuXG4gICAgcmVtb3ZlZENoaWxkSFRNTE5vZGVzID0gcmVtb3ZlZENoaWxkTm9kZXM7ICAvLy9cblxuICAgIHJldHVybiByZW1vdmVkQ2hpbGRIVE1MTm9kZXM7XG4gIH1cblxuICBtYXRjaE1hcmtkb3duTm9kZShtYXJrZG93bk5vZGUpIHtcbiAgICBjb25zdCBvdXRlck5vZGUgPSBtYXJrZG93bk5vZGUsIC8vL1xuICAgICAgICAgIG91dGVyTm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoT3V0ZXJOb2RlKG91dGVyTm9kZSksXG4gICAgICAgICAgbWFya2Rvd25Ob2RlTWF0Y2hlcyA9IG91dGVyTm9kZU1hdGNoZXM7IC8vL1xuXG4gICAgcmV0dXJuIG1hcmtkb3duTm9kZU1hdGNoZXM7XG4gIH1cblxuICBhZGRDaGlsZEhUTUxOb2RlcyhhZGRlZENoaWxkSFRNTE5vZGVzLCBzdGFydEhUTkxJbmRleCkge1xuICAgIGNvbnN0IGFkZGVkQ2hpbGROb2RlcyA9IGFkZGVkQ2hpbGRIVE1MTm9kZXMsICAvLy9cbiAgICAgICAgICBzdGFydEluZGV4ID0gc3RhcnRIVE5MSW5kZXg7ICAvLy9cblxuICAgIHRoaXMuYWRkQ2hpbGROb2RlcyhhZGRlZENoaWxkTm9kZXMsIHN0YXJ0SW5kZXgpO1xuICB9XG5cbiAgYWRqdXN0SW5kZW50KGluZGVudCkge1xuICAgIGlmIChpbmRlbnQgIT09IG51bGwpIHtcbiAgICAgIGluZGVudCA9IGAke0RPVUJMRV9TUEFDRX0ke2luZGVudH1gO1xuICAgIH1cblxuICAgIHJldHVybiBpbmRlbnQ7XG4gIH1cblxuICBsaW5lcyhjb250ZXh0KSB7XG4gICAgbGV0IGxpbmVzO1xuXG4gICAgKHsgbGluZXMgPSBudWxsIH0gPSB0aGlzLmNvbnN0cnVjdG9yKTtcblxuICAgIGlmIChsaW5lcyA9PT0gbnVsbCkge1xuICAgICAgbGluZXMgPSB0aGlzLnJlZHVjZUNoaWxkTm9kZSgobGluZXMsIGNoaWxkTm9kZSkgPT4ge1xuICAgICAgICBjb25zdCBjaGlsZE5vZGVMaW5lcyA9IGNoaWxkTm9kZS5saW5lcyhjb250ZXh0KTtcblxuICAgICAgICBsaW5lcyArPSBjaGlsZE5vZGVMaW5lcztcblxuICAgICAgICByZXR1cm4gbGluZXM7XG4gICAgICB9LCAwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGluZXM7XG4gIH1cblxuICB0YWdOYW1lKGNvbnRleHQpIHtcbiAgICBjb25zdCB7IHRhZ05hbWUgfSA9IHRoaXMuY29uc3RydWN0b3I7XG5cbiAgICByZXR1cm4gdGFnTmFtZTtcbiAgfVxuXG4gIGRlcHRoKCkge1xuICAgIGNvbnN0IHsgZGVwdGggPSBudWxsIH0gPSB0aGlzLmNvbnN0cnVjdG9yO1xuXG4gICAgcmV0dXJuIGRlcHRoO1xuICB9XG5cbiAgY2xhc3NOYW1lKGNvbnRleHQpIHtcbiAgICBjb25zdCB7IGNsYXNzTmFtZSB9ID0gdGhpcy5jb25zdHJ1Y3RvcjtcblxuICAgIHJldHVybiBjbGFzc05hbWU7XG4gIH1cblxuICBjbG9zaW5nVGFnKGNvbnRleHQpIHtcbiAgICBjb25zdCB0YWdOYW1lID0gdGhpcy50YWdOYW1lKGNvbnRleHQpLFxuICAgICAgICAgIGNsb3NpbmdUYWcgPSBgPC8ke3RhZ05hbWV9PmA7XG5cbiAgICByZXR1cm4gY2xvc2luZ1RhZztcbiAgfVxuXG4gIHN0YXJ0aW5nVGFnKGNvbnRleHQpIHtcbiAgICBjb25zdCB0YWdOYW1lID0gdGhpcy50YWdOYW1lKGNvbnRleHQpLFxuICAgICAgICAgIGNsYXNzTmFtZSA9IHRoaXMuY2xhc3NOYW1lKGNvbnRleHQpLFxuICAgICAgICAgIGF0dHJpYnV0ZU5hbWUgPSB0aGlzLmF0dHJpYnV0ZU5hbWUoY29udGV4dCksXG4gICAgICAgICAgYXR0cmlidXRlVmFsdWUgPSB0aGlzLmF0dHJpYnV0ZVZhbHVlKGNvbnRleHQpLFxuICAgICAgICAgIGNsYXNzSFRNTCA9IChjbGFzc05hbWUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgYCBjbGFzcz1cIiR7Y2xhc3NOYW1lfVwiYCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEVNUFRZX1NUUklORyxcbiAgICAgICAgICBhdHRyaWJ1dGVIVE1MID0gKChhdHRyaWJ1dGVOYW1lICE9PSBudWxsKSAmJiAoYXR0cmlidXRlVmFsdWUgIT09IG51bGwpKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBgICR7YXR0cmlidXRlTmFtZX09XCIke2F0dHJpYnV0ZVZhbHVlfVwiYCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTVBUWV9TVFJJTkcsXG4gICAgICAgICAgc3RhcnRpbmdUYWcgPSBgPCR7dGFnTmFtZX0ke2NsYXNzSFRNTH0ke2F0dHJpYnV0ZUhUTUx9PmA7XG5cbiAgICByZXR1cm4gc3RhcnRpbmdUYWc7XG4gIH1cblxuICBzZWxmQ2xvc2luZ1RhZyhjb250ZXh0KSB7XG4gICAgY29uc3QgdGFnTmFtZSA9IHRoaXMudGFnTmFtZShjb250ZXh0KSxcbiAgICAgICAgICBzZWxmQ2xvc2luZ1RhZyA9IGA8JHt0YWdOYW1lfS8+YDtcblxuICAgIHJldHVybiBzZWxmQ2xvc2luZ1RhZztcbiAgfVxuXG4gIGF0dHJpYnV0ZU5hbWUoY29udGV4dCkge1xuICAgIGNvbnN0IGF0dHJpYnV0ZU5hbWUgPSBudWxsO1xuXG4gICAgcmV0dXJuIGF0dHJpYnV0ZU5hbWU7XG4gIH1cblxuICBhdHRyaWJ1dGVWYWx1ZShjb250ZXh0KSB7XG4gICAgY29uc3QgYXR0cmlidXRlVmFsdWUgPSBudWxsO1xuXG4gICAgcmV0dXJuIGF0dHJpYnV0ZVZhbHVlO1xuICB9XG5cbiAgY3JlYXRlRE9NRWxlbWVudChjb250ZXh0KSB7XG4gICAgbGV0IGRvbUVsZW1lbnQ7XG5cbiAgICBjb25zdCB0YWdOYW1lID0gdGhpcy50YWdOYW1lKGNvbnRleHQpO1xuXG4gICAgZG9tRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnTmFtZSk7XG5cbiAgICBjb25zdCBjbGFzc05hbWUgPSB0aGlzLmNsYXNzTmFtZShjb250ZXh0KSxcbiAgICAgICAgICBhdHRyaWJ1dGVOYW1lID0gdGhpcy5hdHRyaWJ1dGVOYW1lKGNvbnRleHQpLFxuICAgICAgICAgIGF0dHJpYnV0ZVZhbHVlID0gdGhpcy5hdHRyaWJ1dGVWYWx1ZShjb250ZXh0KTtcblxuICAgIGlmIChjbGFzc05hbWUgIT09IG51bGwpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24oZG9tRWxlbWVudCwge1xuICAgICAgICBjbGFzc05hbWVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICgoYXR0cmlidXRlTmFtZSAhPT0gbnVsbCkgJiYgKGF0dHJpYnV0ZVZhbHVlICE9PSBudWxsKSkge1xuICAgICAgZG9tRWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgYXR0cmlidXRlVmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiBkb21FbGVtZW50O1xuICB9XG5cbiAgbW91bnQocGFyZW50RE9NRWxlbWVudCwgc2libGluZ0RPTUVsZW1lbnQsIGNvbnRleHQpIHtcbiAgICB0aGlzLmRvbUVsZW1lbnQgPSB0aGlzLmNyZWF0ZURPTUVsZW1lbnQoY29udGV4dCk7XG5cbiAgICAoc2libGluZ0RPTUVsZW1lbnQgIT09IG51bGwpID9cbiAgICAgIGluc2VydEFmdGVyKHRoaXMuZG9tRWxlbWVudCwgcGFyZW50RE9NRWxlbWVudCwgc2libGluZ0RPTUVsZW1lbnQpIDpcbiAgICAgICAgaW5zZXJ0QmVmb3JlaGFuZCh0aGlzLmRvbUVsZW1lbnQsIHBhcmVudERPTUVsZW1lbnQpO1xuXG4gICAgcGFyZW50RE9NRWxlbWVudCA9IHRoaXMuZG9tRWxlbWVudDsgLy8vXG5cbiAgICBzaWJsaW5nRE9NRWxlbWVudCA9IG51bGw7XG5cbiAgICB0aGlzLmNoaWxkTm9kZXMuZm9yRWFjaCgoY2hpbGROb2RlKSA9PiB7XG4gICAgICBzaWJsaW5nRE9NRWxlbWVudCA9IGNoaWxkTm9kZS5tb3VudChwYXJlbnRET01FbGVtZW50LCBzaWJsaW5nRE9NRWxlbWVudCwgY29udGV4dCk7XG4gICAgfSk7XG5cbiAgICBzaWJsaW5nRE9NRWxlbWVudCA9IHRoaXMuZG9tRWxlbWVudDsgIC8vL1xuXG4gICAgcmV0dXJuIHNpYmxpbmdET01FbGVtZW50O1xuICB9XG5cbiAgdW5tb3VudChwYXJlbnRET01FbGVtZW50KSB7XG4gICAge1xuICAgICAgY29uc3QgcGFyZW50RE9NRWxlbWVudCA9IHRoaXMuZG9tRWxlbWVudDsgLy8vXG5cbiAgICAgIHRoaXMuY2hpbGROb2Rlcy5mb3JFYWNoKChjaGlsZE5vZGUpID0+IHtcbiAgICAgICAgY2hpbGROb2RlLnVubW91bnQocGFyZW50RE9NRWxlbWVudCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZW1vdmUodGhpcy5kb21FbGVtZW50LCBwYXJlbnRET01FbGVtZW50KTtcblxuICAgIHRoaXMuZG9tRWxlbWVudCA9IG51bGw7XG4gIH1cblxuICBhc0hUTUwoaW5kZW50LCBjb250ZXh0KSB7XG4gICAgaWYgKGNvbnRleHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY29udGV4dCA9IGluZGVudDsgLy8vXG5cbiAgICAgIGluZGVudCA9IEVNUFRZX1NUUklORztcbiAgICB9XG5cbiAgICBsZXQgaHRtbDtcblxuICAgIGluZGVudCA9IHRoaXMuYWRqdXN0SW5kZW50KGluZGVudCk7XG5cbiAgICBjb25zdCBjbGFzc05hbWUgPSB0aGlzLmNsYXNzTmFtZShjb250ZXh0KSxcbiAgICAgICAgICBhdHRyaWJ1dGVOYW1lID0gdGhpcy5hdHRyaWJ1dGVOYW1lKGNvbnRleHQpLFxuICAgICAgICAgIGNoaWxkTm9kZXNIVE1MID0gdGhpcy5jaGlsZE5vZGVzQXNIVE1MKGluZGVudCwgY29udGV4dCk7XG5cbiAgICBpZiAoKGNoaWxkTm9kZXNIVE1MICE9PSBFTVBUWV9TVFJJTkcpIHx8IChjbGFzc05hbWUgIT09IG51bGwpIHx8IChhdHRyaWJ1dGVOYW1lICE9PSBudWxsKSkge1xuICAgICAgY29uc3Qgc3RhcnRpbmdUYWcgPSB0aGlzLnN0YXJ0aW5nVGFnKGNvbnRleHQpLFxuICAgICAgICAgICAgY2xvc2luZ1RhZyA9IHRoaXMuY2xvc2luZ1RhZyhjb250ZXh0KTtcblxuICAgICAgaHRtbCA9IChpbmRlbnQgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgIGAke3N0YXJ0aW5nVGFnfSR7Y2hpbGROb2Rlc0hUTUx9JHtjbG9zaW5nVGFnfWAgOlxuICAgICAgICAgICAgICAgICBgJHtpbmRlbnR9JHtzdGFydGluZ1RhZ31cbiR7Y2hpbGROb2Rlc0hUTUx9JHtpbmRlbnR9JHtjbG9zaW5nVGFnfVxuYDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc2VsZkNsb3NpbmdUYWcgPSB0aGlzLnNlbGZDbG9zaW5nVGFnKGNvbnRleHQpO1xuXG4gICAgICBodG1sID0gKGluZGVudCA9PT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgYCR7c2VsZkNsb3NpbmdUYWd9YCA6XG4gICAgICAgICAgICAgICAgIGAke2luZGVudH0ke3NlbGZDbG9zaW5nVGFnfVxuYDtcbiAgICB9XG5cbiAgICByZXR1cm4gaHRtbDtcbiAgfVxuXG4gIGFzUGxhaW5UZXh0KGNvbnRleHQpIHtcbiAgICBjb25zdCBjaGlsZE5vZGVzUGxhaW5UZXh0ID0gdGhpcy5jaGlsZE5vZGVzQXNQbGFpblRleHQoY29udGV4dCksXG4gICAgICAgICAgcGxhaW5UZXh0ID0gY2hpbGROb2Rlc1BsYWluVGV4dDsgIC8vL1xuXG4gICAgcmV0dXJuIHBsYWluVGV4dDtcbiAgfVxuXG4gIGNoaWxkTm9kZXNBc0hUTUwoaW5kZW50LCBjb250ZXh0KSB7XG4gICAgY29uc3QgY2hpbGROb2Rlc0hUTUwgPSB0aGlzLnJlZHVjZUNoaWxkTm9kZSgoY2hpbGROb2Rlc0hUTUwsIGNoaWxkTm9kZSkgPT4ge1xuICAgICAgY29uc3QgY2hpbGROb2RlSFRNTCA9IGNoaWxkTm9kZS5hc0hUTUwoaW5kZW50LCBjb250ZXh0KTtcblxuICAgICAgY2hpbGROb2Rlc0hUTUwgPSBgJHtjaGlsZE5vZGVzSFRNTH0ke2NoaWxkTm9kZUhUTUx9YDtcblxuICAgICAgcmV0dXJuIGNoaWxkTm9kZXNIVE1MO1xuICAgIH0sIEVNUFRZX1NUUklORyk7XG5cbiAgICByZXR1cm4gY2hpbGROb2Rlc0hUTUw7XG4gIH1cblxuICBjaGlsZE5vZGVzQXNQbGFpblRleHQoY29udGV4dCkge1xuICAgIGNvbnN0IGNoaWxkTm9kZXNQbGFpblRleHQgPSB0aGlzLnJlZHVjZUNoaWxkTm9kZSgoY2hpbGROb2Rlc1BsYWluVGV4dCwgY2hpbGROb2RlKSA9PiB7XG4gICAgICBjb25zdCBjaGlsZE5vZGVQbGFpblRleHQgPSBjaGlsZE5vZGUuYXNQbGFpblRleHQoY29udGV4dCk7XG5cbiAgICAgIGNoaWxkTm9kZXNQbGFpblRleHQgPSBgJHtjaGlsZE5vZGVzUGxhaW5UZXh0fVxuJHtjaGlsZE5vZGVQbGFpblRleHR9YDtcblxuICAgICAgcmV0dXJuIGNoaWxkTm9kZXNQbGFpblRleHQ7XG4gICAgfSwgRU1QVFlfU1RSSU5HKTtcblxuICAgIHJldHVybiBjaGlsZE5vZGVzUGxhaW5UZXh0O1xuICB9XG5cbiAgc3RhdGljIGZyb21Ob3RoaW5nKENsYXNzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBpZiAoQ2xhc3MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgQ2xhc3MgPSBIVE1MTm9kZTsgLy8vXG4gICAgfVxuXG4gICAgY29uc3QgZG9tRWxlbWVudCA9IG51bGwsXG4gICAgICAgICAgaHRtbE5vZGUgPSBOb2RlLmZyb21Ob3RoaW5nKENsYXNzLCBkb21FbGVtZW50LCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgcmV0dXJuIGh0bWxOb2RlO1xuICB9XG5cbiAgc3RhdGljIGZyb21PdXRlck5vZGUoQ2xhc3MsIG91dGVyTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgaWYgKG91dGVyTm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBvdXRlck5vZGUgPSBDbGFzczsgIC8vL1xuXG4gICAgICBDbGFzcyA9IEhUTUxOb2RlOyAvLy9cbiAgICB9XG5cbiAgICBjb25zdCBkb21FbGVtZW50ID0gbnVsbCxcbiAgICAgICAgICBodG1sTm9kZSA9IE5vZGUuZnJvbU91dGVyTm9kZShDbGFzcywgb3V0ZXJOb2RlLCBkb21FbGVtZW50LCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgcmV0dXJuIGh0bWxOb2RlO1xuICB9XG5cbiAgc3RhdGljIGZyb21ET01FbGVtZW50KENsYXNzLCBkb21FbGVtZW50LCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBpZiAoZG9tRWxlbWVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBkb21FbGVtZW50ID0gQ2xhc3M7IC8vL1xuXG4gICAgICBDbGFzcyA9IEhUTUxOb2RlOyAvLy9cbiAgICB9XG5cbiAgICBjb25zdCBodG1sTm9kZSA9IE5vZGUuZnJvbU5vdGhpbmcoQ2xhc3MsIGRvbUVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICByZXR1cm4gaHRtbE5vZGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbUNoaWxkSFRNTE5vZGVzKENsYXNzLCBjaGlsZEhUTUxOb2RlcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgaWYgKGNoaWxkSFRNTE5vZGVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNoaWxkSFRNTE5vZGVzID0gQ2xhc3M7ICAvLy9cblxuICAgICAgQ2xhc3MgPSBIVE1MTm9kZTsgLy8vXG4gICAgfVxuXG4gICAgY29uc3QgY2hpbGROb2RlcyA9IGNoaWxkSFRNTE5vZGVzLCAgLy8vXG4gICAgICAgICAgZG9tRWxlbWVudCA9IG51bGwsXG4gICAgICAgICAgaHRtbE5vZGUgPSBOb2RlLmZyb21DaGlsZE5vZGVzKENsYXNzLCBjaGlsZE5vZGVzLCBkb21FbGVtZW50LCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgcmV0dXJuIGh0bWxOb2RlO1xuICB9XG59XG5cbk9iamVjdC5hc3NpZ24oSFRNTE5vZGUucHJvdG90eXBlLCBub2RlTWl4aW5zKTtcblxuZXhwb3J0IGRlZmF1bHQgSFRNTE5vZGU7XG4iXSwibmFtZXMiOlsiSFRNTE5vZGUiLCJOb2RlIiwib3V0ZXJOb2RlIiwicGFyZW50Tm9kZSIsImNoaWxkTm9kZXMiLCJkb21FbGVtZW50IiwiZ2V0RE9NRWxlbWVudCIsInNldERPTUVsZW1lbnQiLCJyZXNldERPTUVsZW1lbnQiLCJnZXRSdWxlTmFtZSIsIm1hcmtkb3duTm9kZSIsImdldE1hcmtkb3duTm9kZSIsInJ1bGVOYW1lIiwiaXNUZXJtaW5hbE5vZGUiLCJ0ZXJtaW5hbE5vZGUiLCJpc05vblRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZSIsImdldE91dGVyTm9kZSIsImdldFBhcmVudEhUTUxOb2RlIiwiZ2V0UGFyZW50Tm9kZSIsInBhcmVudEhUTUxOb2RlIiwiZ2V0Q2hpbGRIVE1MTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwiY2hpbGRIVE1MTm9kZXMiLCJnZXRBbmNlc3RvckhUTUxOb2RlcyIsImFuY2VzdG9yTm9kZXMiLCJnZXRBbmNlc3Rvck5vZGVzIiwiYW5jZXN0b3JIVE1MTm9kZXMiLCJyZWR1Y2VDaGlsZEhUTUxOb2RlIiwiY2FsbGJhY2siLCJpbml0aWFsVmFsdWUiLCJyZWR1Y2VDaGlsZE5vZGUiLCJzb21lQW5jZXN0b3JIVE1MTm9kZSIsInNvbWVBbmNlc3Rvck5vZGUiLCJzb21lQ2hpbGRIVE1MTm9kZSIsInNvbWVDaGlsZE5vZGUiLCJyZXRyaWV2ZUhUTUxOb2RlIiwiaHRtbE5vZGUiLCJzb21lIiwiY2hpbGRIVE1MTm9kZSIsInJlc3VsdCIsInJlbW92ZUNoaWxkSFRNTE5vZGVzIiwicmVtb3ZlZENoaWxkSFRNTE5vZGVzIiwiZmlsdGVyIiwiaW5kZXgiLCJmaW5kSW5kZXgiLCJyZW1vdmVkQ2hpbGRIVE1MTm9kZSIsIm1hcmtkb3duTm9kZU1hdGNoZXMiLCJtYXRjaE1hcmtkb3duTm9kZSIsInJlbW92ZWRDaGlsZE5vZGVzIiwicmVtb3ZlQ2hpbGROb2RlcyIsIm91dGVyTm9kZU1hdGNoZXMiLCJtYXRjaE91dGVyTm9kZSIsImFkZENoaWxkSFRNTE5vZGVzIiwiYWRkZWRDaGlsZEhUTUxOb2RlcyIsInN0YXJ0SFROTEluZGV4IiwiYWRkZWRDaGlsZE5vZGVzIiwic3RhcnRJbmRleCIsImFkZENoaWxkTm9kZXMiLCJhZGp1c3RJbmRlbnQiLCJpbmRlbnQiLCJET1VCTEVfU1BBQ0UiLCJsaW5lcyIsImNvbnRleHQiLCJjaGlsZE5vZGUiLCJjaGlsZE5vZGVMaW5lcyIsInRhZ05hbWUiLCJkZXB0aCIsImNsYXNzTmFtZSIsImNsb3NpbmdUYWciLCJzdGFydGluZ1RhZyIsImF0dHJpYnV0ZU5hbWUiLCJhdHRyaWJ1dGVWYWx1ZSIsImNsYXNzSFRNTCIsIkVNUFRZX1NUUklORyIsImF0dHJpYnV0ZUhUTUwiLCJzZWxmQ2xvc2luZ1RhZyIsImNyZWF0ZURPTUVsZW1lbnQiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJPYmplY3QiLCJhc3NpZ24iLCJzZXRBdHRyaWJ1dGUiLCJtb3VudCIsInBhcmVudERPTUVsZW1lbnQiLCJzaWJsaW5nRE9NRWxlbWVudCIsImluc2VydEFmdGVyIiwiaW5zZXJ0QmVmb3JlaGFuZCIsImZvckVhY2giLCJ1bm1vdW50IiwicmVtb3ZlIiwiYXNIVE1MIiwidW5kZWZpbmVkIiwiaHRtbCIsImNoaWxkTm9kZXNIVE1MIiwiY2hpbGROb2Rlc0FzSFRNTCIsImFzUGxhaW5UZXh0IiwiY2hpbGROb2Rlc1BsYWluVGV4dCIsImNoaWxkTm9kZXNBc1BsYWluVGV4dCIsInBsYWluVGV4dCIsImNoaWxkTm9kZUhUTUwiLCJjaGlsZE5vZGVQbGFpblRleHQiLCJmcm9tTm90aGluZyIsIkNsYXNzIiwicmVtYWluaW5nQXJndW1lbnRzIiwiZnJvbU91dGVyTm9kZSIsImZyb21ET01FbGVtZW50IiwiZnJvbUNoaWxkSFRNTE5vZGVzIiwiZnJvbUNoaWxkTm9kZXMiLCJwcm90b3R5cGUiLCJub2RlTWl4aW5zIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFvYUE7OztlQUFBOzs7MEJBbGFxQjs2REFFRTsyQkFFb0I7cUJBQ1c7Ozs7OztBQUV0RCxNQUFNQSxpQkFBaUJDLGNBQUk7SUFDekIsWUFBWUMsU0FBUyxFQUFFQyxVQUFVLEVBQUVDLFVBQVUsRUFBRUMsVUFBVSxDQUFFO1FBQ3pELEtBQUssQ0FBQ0gsV0FBV0MsWUFBWUM7UUFFN0IsSUFBSSxDQUFDQyxVQUFVLEdBQUdBO0lBQ3BCO0lBRUFDLGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDRCxVQUFVO0lBQ3hCO0lBRUFFLGNBQWNGLFVBQVUsRUFBRTtRQUN4QixJQUFJLENBQUNBLFVBQVUsR0FBR0E7SUFDcEI7SUFFQUcsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQ0gsVUFBVSxHQUFHO0lBQ3BCO0lBRUFJLGNBQWM7UUFDWixNQUFNQyxlQUFlLElBQUks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
|