highmark-markdown 1.1.99 → 1.1.100
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/package.json +1 -1
- package/lib/attributeNames.js +0 -38
- package/lib/constants.js +0 -90
- package/lib/defaultMarkdownStyle.js +0 -14
- package/lib/example/constants.js +0 -38
- package/lib/example/customEventTypes.js +0 -46
- package/lib/example/importer.js +0 -56
- package/lib/example/indexOptions.js +0 -45
- package/lib/example/view/button/page.js +0 -155
- package/lib/example/view/button/tab/css.js +0 -133
- package/lib/example/view/button/tab/html.js +0 -133
- package/lib/example/view/button/tab/markdown.js +0 -133
- package/lib/example/view/button/tab/markdownStyle.js +0 -133
- package/lib/example/view/button/tab/plainText.js +0 -133
- package/lib/example/view/button/tab/preview.js +0 -133
- package/lib/example/view/button/tab.js +0 -156
- package/lib/example/view/div/container/css.js +0 -173
- package/lib/example/view/div/container/html.js +0 -175
- package/lib/example/view/div/container/markdown.js +0 -208
- package/lib/example/view/div/container/markdownStyle.js +0 -209
- package/lib/example/view/div/container/plainText.js +0 -173
- package/lib/example/view/div/container/preview.js +0 -193
- package/lib/example/view/div/container.js +0 -175
- package/lib/example/view/div/html.js +0 -192
- package/lib/example/view/div/pageButtons.js +0 -259
- package/lib/example/view/div/preview.js +0 -293
- package/lib/example/view/div/sizeable/left.js +0 -122
- package/lib/example/view/div/tabButtons/left.js +0 -180
- package/lib/example/view/div/tabButtons/right.js +0 -218
- package/lib/example/view/div/tabButtons.js +0 -191
- package/lib/example/view/textarea/css.js +0 -165
- package/lib/example/view/textarea/markdown.js +0 -163
- package/lib/example/view/textarea/markdownStyle.js +0 -163
- package/lib/example/view/textarea/parseTree/css.js +0 -150
- package/lib/example/view/textarea/parseTree/html.js +0 -150
- package/lib/example/view/textarea/parseTree/markdown.js +0 -148
- package/lib/example/view/textarea/parseTree/markdownStyle.js +0 -148
- package/lib/example/view/textarea/parseTree.js +0 -155
- package/lib/example/view/textarea/plainText.js +0 -171
- package/lib/example/view/textarea.js +0 -39
- package/lib/example/view/xmp.js +0 -207
- package/lib/example/view.js +0 -551
- package/lib/example.js +0 -27
- package/lib/index/item.js +0 -102
- package/lib/index/list.js +0 -88
- package/lib/index/match.js +0 -76
- package/lib/index.js +0 -139
- package/lib/letters.js +0 -41
- package/lib/map/className.js +0 -19
- package/lib/map/node/css.js +0 -67
- package/lib/map/node/html.js +0 -98
- package/lib/map/nonTerminalNode/markdown.js +0 -55
- package/lib/map/nonTerminalNode/markdownStyle.js +0 -54
- package/lib/map/tagName.js +0 -19
- package/lib/markdown/bnf.js +0 -14
- package/lib/markdown/entries.js +0 -75
- package/lib/markdown/lexer.js +0 -144
- package/lib/markdown/parser.js +0 -139
- package/lib/markdownStyle/bnf.js +0 -14
- package/lib/markdownStyle/entries.js +0 -50
- package/lib/markdownStyle/lexer.js +0 -144
- package/lib/markdownStyle/parser.js +0 -139
- package/lib/mixins/node.js +0 -145
- package/lib/node/css/amount.js +0 -128
- package/lib/node/css/argument.js +0 -113
- package/lib/node/css/arguments.js +0 -146
- package/lib/node/css/class.js +0 -146
- package/lib/node/css/colour.js +0 -128
- package/lib/node/css/declaration.js +0 -127
- package/lib/node/css/identifier.js +0 -128
- package/lib/node/css/name.js +0 -146
- package/lib/node/css/pseudoClass.js +0 -146
- package/lib/node/css/ruleName.js +0 -159
- package/lib/node/css/ruleSet.js +0 -159
- package/lib/node/css/selector.js +0 -113
- package/lib/node/css/selectors.js +0 -125
- package/lib/node/css/selectorsList.js +0 -133
- package/lib/node/css/string.js +0 -128
- package/lib/node/css/topmost.js +0 -158
- package/lib/node/css/value.js +0 -145
- package/lib/node/css/values.js +0 -125
- package/lib/node/css.js +0 -282
- package/lib/node/html/anchor.js +0 -183
- package/lib/node/html/directive/contents.js +0 -113
- package/lib/node/html/directive/footnotes.js +0 -113
- package/lib/node/html/directive/index.js +0 -113
- package/lib/node/html/directive/pageNumber.js +0 -113
- package/lib/node/html/directive.js +0 -141
- package/lib/node/html/division.js +0 -294
- package/lib/node/html/error.js +0 -197
- package/lib/node/html/footnote.js +0 -167
- package/lib/node/html/heading/index.js +0 -192
- package/lib/node/html/heading/primary.js +0 -130
- package/lib/node/html/heading/quaternary.js +0 -130
- package/lib/node/html/heading/secondary.js +0 -130
- package/lib/node/html/heading/tertiary.js +0 -130
- package/lib/node/html/heading.js +0 -165
- package/lib/node/html/image.js +0 -219
- package/lib/node/html/item/contents.js +0 -142
- package/lib/node/html/item/footnote.js +0 -144
- package/lib/node/html/item/index.js +0 -152
- package/lib/node/html/item/ordered.js +0 -151
- package/lib/node/html/item/unordered.js +0 -128
- package/lib/node/html/line/block.js +0 -144
- package/lib/node/html/line.js +0 -243
- package/lib/node/html/link/contents.js +0 -171
- package/lib/node/html/link/email.js +0 -258
- package/lib/node/html/link/footnote.js +0 -265
- package/lib/node/html/link/hyper.js +0 -258
- package/lib/node/html/link/index.js +0 -236
- package/lib/node/html/list/contents.js +0 -142
- package/lib/node/html/list/footnotes.js +0 -178
- package/lib/node/html/list/index.js +0 -142
- package/lib/node/html/list/ordered.js +0 -128
- package/lib/node/html/list/unordered.js +0 -128
- package/lib/node/html/listing/block.js +0 -195
- package/lib/node/html/listing/inline.js +0 -197
- package/lib/node/html/pageNumber.js +0 -226
- package/lib/node/html/paragraph.js +0 -128
- package/lib/node/html/reference.js +0 -128
- package/lib/node/html/table.js +0 -128
- package/lib/node/html/tableBody.js +0 -128
- package/lib/node/html/tableBodyCell.js +0 -128
- package/lib/node/html/tableBodyRow.js +0 -128
- package/lib/node/html/tableHead.js +0 -128
- package/lib/node/html/tableHeadCell.js +0 -128
- package/lib/node/html/tableHeadRow.js +0 -128
- package/lib/node/html/text/block.js +0 -128
- package/lib/node/html/text/comma.js +0 -146
- package/lib/node/html/text/emphasised.js +0 -128
- package/lib/node/html/text/index.js +0 -161
- package/lib/node/html/text/inline.js +0 -197
- package/lib/node/html/text/plain.js +0 -128
- package/lib/node/html/text/strong.js +0 -128
- package/lib/node/html/text/stronglyEmphasised.js +0 -222
- package/lib/node/html/text.js +0 -180
- package/lib/node/html/topmost.js +0 -250
- package/lib/node/html.js +0 -574
- package/lib/node/markdown/blockEnd.js +0 -107
- package/lib/node/markdown/blockStart.js +0 -131
- package/lib/node/markdown/className.js +0 -118
- package/lib/node/markdown/directive/embed.js +0 -158
- package/lib/node/markdown/directive/include.js +0 -158
- package/lib/node/markdown/division.js +0 -237
- package/lib/node/markdown/error.js +0 -118
- package/lib/node/markdown/footnote.js +0 -118
- package/lib/node/markdown/hyperlink.js +0 -155
- package/lib/node/markdown/image.js +0 -118
- package/lib/node/markdown/item/ordered.js +0 -124
- package/lib/node/markdown/link/email.js +0 -155
- package/lib/node/markdown/link/footnote.js +0 -120
- package/lib/node/markdown/listng/block.js +0 -118
- package/lib/node/markdown/listng/inline.js +0 -124
- package/lib/node/markdown/path.js +0 -118
- package/lib/node/markdown/reference.js +0 -124
- package/lib/node/markdown/subDivision.js +0 -144
- package/lib/node/markdown/text/block.js +0 -107
- package/lib/node/markdown/text/plain.js +0 -107
- package/lib/node/markdown/text.js +0 -142
- package/lib/node/markdown/topmost.js +0 -165
- package/lib/node/markdown.js +0 -188
- package/lib/node/markdownStyle/amount.js +0 -119
- package/lib/node/markdownStyle/argument.js +0 -107
- package/lib/node/markdownStyle/arguments.js +0 -107
- package/lib/node/markdownStyle/colour.js +0 -118
- package/lib/node/markdownStyle/declaration.js +0 -107
- package/lib/node/markdownStyle/error.js +0 -107
- package/lib/node/markdownStyle/identifier.js +0 -119
- package/lib/node/markdownStyle/name.js +0 -107
- package/lib/node/markdownStyle/nonsense.js +0 -107
- package/lib/node/markdownStyle/pseudoClass.js +0 -107
- package/lib/node/markdownStyle/ruleName.js +0 -118
- package/lib/node/markdownStyle/ruleSet.js +0 -107
- package/lib/node/markdownStyle/selector.js +0 -107
- package/lib/node/markdownStyle/selectors.js +0 -107
- package/lib/node/markdownStyle/selectorsList.js +0 -107
- package/lib/node/markdownStyle/string.js +0 -118
- package/lib/node/markdownStyle/topmost.js +0 -107
- package/lib/node/markdownStyle/value.js +0 -107
- package/lib/node/markdownStyle/values.js +0 -107
- package/lib/node/markdownStyle.js +0 -153
- package/lib/prepends.js +0 -26
- package/lib/queries/markdown.js +0 -20
- package/lib/queries/markdownStyle.js +0 -20
- package/lib/ruleNames/markdown.js +0 -370
- package/lib/ruleNames/markdownStyle.js +0 -125
- package/lib/styleElement/markdown/default.js +0 -150
- package/lib/styleElement/markdown.js +0 -207
- package/lib/styleElement.js +0 -95
- package/lib/tokenTypes.js +0 -110
- package/lib/transform/css/ruleSet.js +0 -124
- package/lib/transform/css/selectors.js +0 -126
- package/lib/transform/css/selectorsList.js +0 -144
- package/lib/transform/css.js +0 -161
- package/lib/transform/html/division.js +0 -130
- package/lib/transform/html/footnote.js +0 -140
- package/lib/transform/html/heading/index.js +0 -109
- package/lib/transform/html/index.js +0 -159
- package/lib/transform/html/indexAnchor.js +0 -118
- package/lib/transform/html/item/contents.js +0 -130
- package/lib/transform/html/item/footnote.js +0 -117
- package/lib/transform/html/item/index.js +0 -117
- package/lib/transform/html/line.js +0 -116
- package/lib/transform/html/link/contents.js +0 -130
- package/lib/transform/html/link/footnote.js +0 -158
- package/lib/transform/html/list/contents.js +0 -180
- package/lib/transform/html/list/footnotes.js +0 -129
- package/lib/transform/html/list/index.js +0 -118
- package/lib/transform/html/pageNumber.js +0 -124
- package/lib/transform/html.js +0 -148
- package/lib/transform/markdown/directive/embed.js +0 -139
- package/lib/transform/markdown/directive/ignore.js +0 -108
- package/lib/transform/markdown/directive/include.js +0 -148
- package/lib/transform/markdown/subDivision.js +0 -108
- package/lib/transform/markdown.js +0 -148
- package/lib/utilities/contents.js +0 -172
- package/lib/utilities/css.js +0 -57
- package/lib/utilities/division.js +0 -121
- package/lib/utilities/dom.js +0 -58
- package/lib/utilities/element.js +0 -26
- package/lib/utilities/entities.js +0 -17
- package/lib/utilities/entries.js +0 -24
- package/lib/utilities/grammar.js +0 -131
- package/lib/utilities/html.js +0 -99
- package/lib/utilities/index.js +0 -265
- package/lib/utilities/markdown.js +0 -81
- package/lib/utilities/markdownStyle.js +0 -13
- package/lib/utilities/object.js +0 -65
- package/lib/utilities/query.js +0 -65
- package/lib/utilities/string.js +0 -45
package/lib/node/html.js
DELETED
|
@@ -1,574 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "default", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return _default;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
var _occamdom = require("occam-dom");
|
|
12
|
-
var _node = /*#__PURE__*/ _interop_require_default(require("../mixins/node"));
|
|
13
|
-
var _constants = require("../constants");
|
|
14
|
-
var _dom = require("../utilities/dom");
|
|
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
|
-
}
|
|
88
|
-
function _interop_require_default(obj) {
|
|
89
|
-
return obj && obj.__esModule ? obj : {
|
|
90
|
-
default: obj
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
function _is_native_function(fn) {
|
|
94
|
-
return Function.toString.call(fn).indexOf("[native code]") !== -1;
|
|
95
|
-
}
|
|
96
|
-
function _iterable_to_array(iter) {
|
|
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;
|
|
105
|
-
}
|
|
106
|
-
return _assert_this_initialized(self);
|
|
107
|
-
}
|
|
108
|
-
function _set_prototype_of(o, p) {
|
|
109
|
-
_set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {
|
|
110
|
-
o.__proto__ = p;
|
|
111
|
-
return o;
|
|
112
|
-
};
|
|
113
|
-
return _set_prototype_of(o, p);
|
|
114
|
-
}
|
|
115
|
-
function _to_consumable_array(arr) {
|
|
116
|
-
return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
|
|
117
|
-
}
|
|
118
|
-
function _type_of(obj) {
|
|
119
|
-
"@swc/helpers - typeof";
|
|
120
|
-
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
121
|
-
}
|
|
122
|
-
function _unsupported_iterable_to_array(o, minLen) {
|
|
123
|
-
if (!o) return;
|
|
124
|
-
if (typeof o === "string") return _array_like_to_array(o, minLen);
|
|
125
|
-
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
126
|
-
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
127
|
-
if (n === "Map" || n === "Set") return Array.from(n);
|
|
128
|
-
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
129
|
-
}
|
|
130
|
-
function _wrap_native_super(Class) {
|
|
131
|
-
var _cache = typeof Map === "function" ? new Map() : undefined;
|
|
132
|
-
_wrap_native_super = function wrapNativeSuper(Class) {
|
|
133
|
-
if (Class === null || !_is_native_function(Class)) return Class;
|
|
134
|
-
if (typeof Class !== "function") {
|
|
135
|
-
throw new TypeError("Super expression must either be null or a function");
|
|
136
|
-
}
|
|
137
|
-
if (typeof _cache !== "undefined") {
|
|
138
|
-
if (_cache.has(Class)) return _cache.get(Class);
|
|
139
|
-
_cache.set(Class, Wrapper);
|
|
140
|
-
}
|
|
141
|
-
function Wrapper() {
|
|
142
|
-
return _construct(Class, arguments, _get_prototype_of(this).constructor);
|
|
143
|
-
}
|
|
144
|
-
Wrapper.prototype = Object.create(Class.prototype, {
|
|
145
|
-
constructor: {
|
|
146
|
-
value: Wrapper,
|
|
147
|
-
enumerable: false,
|
|
148
|
-
writable: true,
|
|
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);
|
|
249
|
-
}
|
|
250
|
-
},
|
|
251
|
-
{
|
|
252
|
-
key: "someAncestorHTMLNode",
|
|
253
|
-
value: function someAncestorHTMLNode(callback) {
|
|
254
|
-
return this.someAncestorNode(callback);
|
|
255
|
-
}
|
|
256
|
-
},
|
|
257
|
-
{
|
|
258
|
-
key: "removeChildHTMLNodes",
|
|
259
|
-
value: function removeChildHTMLNodes() {
|
|
260
|
-
var removedChildHTMLNodes = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : null;
|
|
261
|
-
var childHTMLNodes;
|
|
262
|
-
childHTMLNodes = this.getChildHTMLNodes();
|
|
263
|
-
if (removedChildHTMLNodes !== null) {
|
|
264
|
-
childHTMLNodes = childHTMLNodes.filter(function(childHTMLNode) {
|
|
265
|
-
var markdownNode = childHTMLNode.getMarkdownNode(), index = removedChildHTMLNodes.findIndex(function(removedChildHTMLNode) {
|
|
266
|
-
var markdownNodeMatches = removedChildHTMLNode.matchMarkdownNode(markdownNode);
|
|
267
|
-
if (markdownNodeMatches) {
|
|
268
|
-
return true;
|
|
269
|
-
}
|
|
270
|
-
});
|
|
271
|
-
if (index !== -1) {
|
|
272
|
-
return true;
|
|
273
|
-
}
|
|
274
|
-
});
|
|
275
|
-
}
|
|
276
|
-
var removedChildNodes = childHTMLNodes; ///
|
|
277
|
-
removedChildNodes = this.removeChildNodes(removedChildNodes);
|
|
278
|
-
removedChildHTMLNodes = removedChildNodes; ///
|
|
279
|
-
return removedChildHTMLNodes;
|
|
280
|
-
}
|
|
281
|
-
},
|
|
282
|
-
{
|
|
283
|
-
key: "matchMarkdownNode",
|
|
284
|
-
value: function matchMarkdownNode(markdownNode) {
|
|
285
|
-
var outerNode = markdownNode, outerNodeMatches = this.matchOuterNode(outerNode), markdownNodeMatches = outerNodeMatches; ///
|
|
286
|
-
return markdownNodeMatches;
|
|
287
|
-
}
|
|
288
|
-
},
|
|
289
|
-
{
|
|
290
|
-
key: "retrieveHTMLNode",
|
|
291
|
-
value: function retrieveHTMLNode(callback) {
|
|
292
|
-
var htmlNode = null;
|
|
293
|
-
if (htmlNode === null) {
|
|
294
|
-
var childHTMLNodes = this.getChildHTMLNodes();
|
|
295
|
-
childHTMLNodes.some(function(childHTMLNode) {
|
|
296
|
-
htmlNode = childHTMLNode.retrieveHTMLNode(callback);
|
|
297
|
-
if (htmlNode !== null) {
|
|
298
|
-
return true;
|
|
299
|
-
}
|
|
300
|
-
});
|
|
301
|
-
}
|
|
302
|
-
if (htmlNode === null) {
|
|
303
|
-
htmlNode = this;
|
|
304
|
-
var result = callback(htmlNode);
|
|
305
|
-
if (!result) {
|
|
306
|
-
htmlNode = null;
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
return htmlNode;
|
|
310
|
-
}
|
|
311
|
-
},
|
|
312
|
-
{
|
|
313
|
-
key: "addChildHTMLNodes",
|
|
314
|
-
value: function addChildHTMLNodes(addedChildHTMLNodes, startHTNLIndex) {
|
|
315
|
-
var addedChildNodes = addedChildHTMLNodes, startIndex = startHTNLIndex; ///
|
|
316
|
-
this.addChildNodes(addedChildNodes, startIndex);
|
|
317
|
-
}
|
|
318
|
-
},
|
|
319
|
-
{
|
|
320
|
-
key: "adjustIndent",
|
|
321
|
-
value: function adjustIndent(indent) {
|
|
322
|
-
indent = indent === null ? _constants.EMPTY_STRING : "".concat(_constants.DOUBLE_SPACE).concat(indent);
|
|
323
|
-
return indent;
|
|
324
|
-
}
|
|
325
|
-
},
|
|
326
|
-
{
|
|
327
|
-
key: "lines",
|
|
328
|
-
value: function lines(context) {
|
|
329
|
-
var lines;
|
|
330
|
-
var ref, ref1;
|
|
331
|
-
ref = this.constructor, ref1 = ref.lines, lines = ref1 === void 0 ? null : ref1, ref;
|
|
332
|
-
if (lines === null) {
|
|
333
|
-
lines = this.reduceChildNode(function(lines, childNode) {
|
|
334
|
-
var childNodeLines = childNode.lines(context);
|
|
335
|
-
lines += childNodeLines;
|
|
336
|
-
return lines;
|
|
337
|
-
}, 0);
|
|
338
|
-
}
|
|
339
|
-
return lines;
|
|
340
|
-
}
|
|
341
|
-
},
|
|
342
|
-
{
|
|
343
|
-
key: "tagName",
|
|
344
|
-
value: function tagName(context) {
|
|
345
|
-
var tagName = this.constructor.tagName;
|
|
346
|
-
return tagName;
|
|
347
|
-
}
|
|
348
|
-
},
|
|
349
|
-
{
|
|
350
|
-
key: "depth",
|
|
351
|
-
value: function depth() {
|
|
352
|
-
var _this_constructor = this.constructor, _this_constructor_depth = _this_constructor.depth, depth = _this_constructor_depth === void 0 ? null : _this_constructor_depth;
|
|
353
|
-
return depth;
|
|
354
|
-
}
|
|
355
|
-
},
|
|
356
|
-
{
|
|
357
|
-
key: "className",
|
|
358
|
-
value: function className(context) {
|
|
359
|
-
var className = this.constructor.className;
|
|
360
|
-
return className;
|
|
361
|
-
}
|
|
362
|
-
},
|
|
363
|
-
{
|
|
364
|
-
key: "closingTag",
|
|
365
|
-
value: function closingTag(context) {
|
|
366
|
-
var tagName = this.tagName(context), closingTag = "</".concat(tagName, ">");
|
|
367
|
-
return closingTag;
|
|
368
|
-
}
|
|
369
|
-
},
|
|
370
|
-
{
|
|
371
|
-
key: "startingTag",
|
|
372
|
-
value: function startingTag(context) {
|
|
373
|
-
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, ">");
|
|
374
|
-
return startingTag;
|
|
375
|
-
}
|
|
376
|
-
},
|
|
377
|
-
{
|
|
378
|
-
key: "selfClosingTag",
|
|
379
|
-
value: function selfClosingTag(context) {
|
|
380
|
-
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, selfClosingTag = "<".concat(tagName).concat(classHTML).concat(attributeHTML, "/>");
|
|
381
|
-
return selfClosingTag;
|
|
382
|
-
}
|
|
383
|
-
},
|
|
384
|
-
{
|
|
385
|
-
key: "attributeName",
|
|
386
|
-
value: function attributeName(context) {
|
|
387
|
-
var attributeName = null;
|
|
388
|
-
return attributeName;
|
|
389
|
-
}
|
|
390
|
-
},
|
|
391
|
-
{
|
|
392
|
-
key: "attributeValue",
|
|
393
|
-
value: function attributeValue(context) {
|
|
394
|
-
var attributeValue = null;
|
|
395
|
-
return attributeValue;
|
|
396
|
-
}
|
|
397
|
-
},
|
|
398
|
-
{
|
|
399
|
-
key: "createDOMElement",
|
|
400
|
-
value: function createDOMElement(context) {
|
|
401
|
-
var domElement;
|
|
402
|
-
var tagName = this.tagName(context);
|
|
403
|
-
domElement = document.createElement(tagName);
|
|
404
|
-
var className = this.className(context), attributeName = this.attributeName(context), attributeValue = this.attributeValue(context);
|
|
405
|
-
if (className !== null) {
|
|
406
|
-
Object.assign(domElement, {
|
|
407
|
-
className: className
|
|
408
|
-
});
|
|
409
|
-
}
|
|
410
|
-
if (attributeName !== null && attributeValue !== null) {
|
|
411
|
-
domElement.setAttribute(attributeName, attributeValue);
|
|
412
|
-
}
|
|
413
|
-
return domElement;
|
|
414
|
-
}
|
|
415
|
-
},
|
|
416
|
-
{
|
|
417
|
-
key: "mount",
|
|
418
|
-
value: function mount(parentDOMElement, siblingDOMElement, context) {
|
|
419
|
-
this.domElement = this.createDOMElement(context);
|
|
420
|
-
siblingDOMElement !== null ? (0, _dom.insertAfter)(this.domElement, parentDOMElement, siblingDOMElement) : (0, _dom.insertBeforehand)(this.domElement, parentDOMElement);
|
|
421
|
-
parentDOMElement = this.domElement; ///
|
|
422
|
-
siblingDOMElement = null;
|
|
423
|
-
this.childNodes.forEach(function(childNode) {
|
|
424
|
-
siblingDOMElement = childNode.mount(parentDOMElement, siblingDOMElement, context);
|
|
425
|
-
});
|
|
426
|
-
siblingDOMElement = this.domElement; ///
|
|
427
|
-
return siblingDOMElement;
|
|
428
|
-
}
|
|
429
|
-
},
|
|
430
|
-
{
|
|
431
|
-
key: "unmount",
|
|
432
|
-
value: function unmount(parentDOMElement) {
|
|
433
|
-
{
|
|
434
|
-
var _$parentDOMElement = this.domElement; ///
|
|
435
|
-
this.childNodes.forEach(function(childNode) {
|
|
436
|
-
childNode.unmount(_$parentDOMElement);
|
|
437
|
-
});
|
|
438
|
-
}
|
|
439
|
-
(0, _dom.remove)(this.domElement, parentDOMElement);
|
|
440
|
-
this.domElement = null;
|
|
441
|
-
}
|
|
442
|
-
},
|
|
443
|
-
{
|
|
444
|
-
key: "asHTML",
|
|
445
|
-
value: function asHTML(indent, context) {
|
|
446
|
-
if (context === undefined) {
|
|
447
|
-
context = indent; ///
|
|
448
|
-
indent = _constants.EMPTY_STRING;
|
|
449
|
-
}
|
|
450
|
-
var html;
|
|
451
|
-
indent = this.adjustIndent(indent);
|
|
452
|
-
var childNodesHTML = this.childNodesAsHTML(indent, context);
|
|
453
|
-
if (childNodesHTML !== _constants.EMPTY_STRING) {
|
|
454
|
-
var startingTag = this.startingTag(context), closingTag = this.closingTag(context);
|
|
455
|
-
html = "".concat(indent).concat(startingTag, "\n").concat(childNodesHTML).concat(indent).concat(closingTag, "\n");
|
|
456
|
-
} else {
|
|
457
|
-
var selfClosingTag = this.selfClosingTag(context);
|
|
458
|
-
html = "".concat(indent).concat(selfClosingTag, "\n");
|
|
459
|
-
}
|
|
460
|
-
return html;
|
|
461
|
-
}
|
|
462
|
-
},
|
|
463
|
-
{
|
|
464
|
-
key: "asPlainText",
|
|
465
|
-
value: function asPlainText(context) {
|
|
466
|
-
var plainText;
|
|
467
|
-
var childNodesPlainText = this.childNodesAsPlainText(context);
|
|
468
|
-
plainText = childNodesPlainText; ///
|
|
469
|
-
return plainText;
|
|
470
|
-
}
|
|
471
|
-
},
|
|
472
|
-
{
|
|
473
|
-
key: "childNodesAsHTML",
|
|
474
|
-
value: function childNodesAsHTML(indent, context) {
|
|
475
|
-
var childNodesHTML = this.reduceChildNode(function(childNodesHTML, childNode) {
|
|
476
|
-
var childNodeHTML = childNode.asHTML(indent, context);
|
|
477
|
-
childNodesHTML = "".concat(childNodesHTML).concat(childNodeHTML);
|
|
478
|
-
return childNodesHTML;
|
|
479
|
-
}, _constants.EMPTY_STRING);
|
|
480
|
-
return childNodesHTML;
|
|
481
|
-
}
|
|
482
|
-
},
|
|
483
|
-
{
|
|
484
|
-
key: "childNodesAsPlainText",
|
|
485
|
-
value: function childNodesAsPlainText(context) {
|
|
486
|
-
var childNodesPlainText = this.reduceChildNode(function(childNodesPlainText, childNode) {
|
|
487
|
-
var childNodePlainText = childNode.asPlainText(context);
|
|
488
|
-
childNodesPlainText = "".concat(childNodesPlainText, "\n").concat(childNodePlainText);
|
|
489
|
-
return childNodesPlainText;
|
|
490
|
-
}, _constants.EMPTY_STRING);
|
|
491
|
-
return childNodesPlainText;
|
|
492
|
-
}
|
|
493
|
-
}
|
|
494
|
-
], [
|
|
495
|
-
{
|
|
496
|
-
key: "fromNothing",
|
|
497
|
-
value: function fromNothing(Class) {
|
|
498
|
-
for(var _len = arguments.length, remainingArguments = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
|
|
499
|
-
remainingArguments[_key - 1] = arguments[_key];
|
|
500
|
-
}
|
|
501
|
-
var _Node;
|
|
502
|
-
if (Class === undefined) {
|
|
503
|
-
Class = HTMLNode; ///
|
|
504
|
-
}
|
|
505
|
-
var domElement = null, htmlNode = (_Node = _occamdom.Node).fromNothing.apply(_Node, [
|
|
506
|
-
Class,
|
|
507
|
-
domElement
|
|
508
|
-
].concat(_to_consumable_array(remainingArguments)));
|
|
509
|
-
return htmlNode;
|
|
510
|
-
}
|
|
511
|
-
},
|
|
512
|
-
{
|
|
513
|
-
key: "fromOuterNode",
|
|
514
|
-
value: function fromOuterNode(Class, outerNode) {
|
|
515
|
-
for(var _len = arguments.length, remainingArguments = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++){
|
|
516
|
-
remainingArguments[_key - 2] = arguments[_key];
|
|
517
|
-
}
|
|
518
|
-
var _Node;
|
|
519
|
-
if (outerNode === undefined) {
|
|
520
|
-
outerNode = Class; ///
|
|
521
|
-
Class = HTMLNode; ///
|
|
522
|
-
}
|
|
523
|
-
var domElement = null, htmlNode = (_Node = _occamdom.Node).fromOuterNode.apply(_Node, [
|
|
524
|
-
Class,
|
|
525
|
-
outerNode,
|
|
526
|
-
domElement
|
|
527
|
-
].concat(_to_consumable_array(remainingArguments)));
|
|
528
|
-
return htmlNode;
|
|
529
|
-
}
|
|
530
|
-
},
|
|
531
|
-
{
|
|
532
|
-
key: "fromDOMElement",
|
|
533
|
-
value: function fromDOMElement(Class, domElement) {
|
|
534
|
-
for(var _len = arguments.length, remainingArguments = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++){
|
|
535
|
-
remainingArguments[_key - 2] = arguments[_key];
|
|
536
|
-
}
|
|
537
|
-
var _Node;
|
|
538
|
-
if (domElement === undefined) {
|
|
539
|
-
domElement = Class; ///
|
|
540
|
-
Class = HTMLNode; ///
|
|
541
|
-
}
|
|
542
|
-
var htmlNode = (_Node = _occamdom.Node).fromNothing.apply(_Node, [
|
|
543
|
-
Class,
|
|
544
|
-
domElement
|
|
545
|
-
].concat(_to_consumable_array(remainingArguments)));
|
|
546
|
-
return htmlNode;
|
|
547
|
-
}
|
|
548
|
-
},
|
|
549
|
-
{
|
|
550
|
-
key: "fromChildHTMLNodes",
|
|
551
|
-
value: function fromChildHTMLNodes(Class, childHTMLNodes) {
|
|
552
|
-
for(var _len = arguments.length, remainingArguments = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++){
|
|
553
|
-
remainingArguments[_key - 2] = arguments[_key];
|
|
554
|
-
}
|
|
555
|
-
var _Node;
|
|
556
|
-
if (childHTMLNodes === undefined) {
|
|
557
|
-
childHTMLNodes = Class; ///
|
|
558
|
-
Class = HTMLNode; ///
|
|
559
|
-
}
|
|
560
|
-
var childNodes = childHTMLNodes, domElement = null, htmlNode = (_Node = _occamdom.Node).fromChildNodes.apply(_Node, [
|
|
561
|
-
Class,
|
|
562
|
-
childNodes,
|
|
563
|
-
domElement
|
|
564
|
-
].concat(_to_consumable_array(remainingArguments)));
|
|
565
|
-
return htmlNode;
|
|
566
|
-
}
|
|
567
|
-
}
|
|
568
|
-
]);
|
|
569
|
-
return HTMLNode;
|
|
570
|
-
}(_wrap_native_super(_occamdom.Node));
|
|
571
|
-
Object.assign(HTMLNode.prototype, _node.default);
|
|
572
|
-
var _default = HTMLNode;
|
|
573
|
-
|
|
574
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub2RlL2h0bWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IE5vZGUgfSBmcm9tIFwib2NjYW0tZG9tXCI7XG5cbmltcG9ydCBub2RlTWl4aW5zIGZyb20gXCIuLi9taXhpbnMvbm9kZVwiO1xuXG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcsIERPVUJMRV9TUEFDRSB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHJlbW92ZSwgaW5zZXJ0QWZ0ZXIsIGluc2VydEJlZm9yZWhhbmQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2RvbVwiO1xuXG5jbGFzcyBIVE1MTm9kZSBleHRlbmRzIE5vZGUge1xuICBjb25zdHJ1Y3RvcihvdXRlck5vZGUsIHBhcmVudE5vZGUsIGNoaWxkTm9kZXMsIGRvbUVsZW1lbnQpIHtcbiAgICBzdXBlcihvdXRlck5vZGUsIHBhcmVudE5vZGUsIGNoaWxkTm9kZXMpO1xuXG4gICAgdGhpcy5kb21FbGVtZW50ID0gZG9tRWxlbWVudDtcbiAgfVxuXG4gIGdldERPTUVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZG9tRWxlbWVudDtcbiAgfVxuXG4gIHNldERPTUVsZW1lbnQoZG9tRWxlbWVudCkge1xuICAgIHRoaXMuZG9tRWxlbWVudCA9IGRvbUVsZW1lbnQ7XG4gIH1cblxuICByZXNldERPTUVsZW1lbnQoKSB7XG4gICAgdGhpcy5kb21FbGVtZW50ID0gbnVsbDtcbiAgfVxuXG4gIGdldFJ1bGVOYW1lKCkge1xuICAgIGNvbnN0IG1hcmtkb3duTm9kZSA9IHRoaXMuZ2V0TWFya2Rvd25Ob2RlKCksXG4gICAgICAgICAgcnVsZU5hbWUgPSBtYXJrZG93bk5vZGUuZ2V0UnVsZU5hbWUoKTtcblxuICAgIHJldHVybiBydWxlTmFtZTtcbiAgfVxuXG4gIGlzVGVybWluYWxOb2RlKCkge1xuICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIHRlcm1pbmFsTm9kZTtcbiAgfVxuXG4gIGlzTm9uVGVybWluYWxOb2RlKCkge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHRydWU7XG5cbiAgICByZXR1cm4gbm9uVGVybWluYWxOb2RlO1xuICB9XG5cbiAgZ2V0TWFya2Rvd25Ob2RlKCkge1xuICAgIGNvbnN0IG91dGVyTm9kZSA9IHRoaXMuZ2V0T3V0ZXJOb2RlKCksXG4gICAgICAgICAgbWFya2Rvd25Ob2RlID0gb3V0ZXJOb2RlOyAvLy9cblxuICAgIHJldHVybiBtYXJrZG93bk5vZGU7XG4gIH1cblxuICBnZXRQYXJlbnRIVE1MTm9kZSgpIHtcbiAgICBjb25zdCBwYXJlbnROb2RlID0gdGhpcy5nZXRQYXJlbnROb2RlKCksXG4gICAgICAgICAgcGFyZW50SFRNTE5vZGUgPSBwYXJlbnROb2RlOyAgLy8vXG5cbiAgICByZXR1cm4gcGFyZW50SFRNTE5vZGU7XG4gIH1cblxuICBnZXRDaGlsZEhUTUxOb2RlcygpIHtcbiAgICBjb25zdCBjaGlsZE5vZGVzID0gdGhpcy5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgY2hpbGRIVE1MTm9kZXMgPSBjaGlsZE5vZGVzOyAgLy8vXG5cbiAgICByZXR1cm4gY2hpbGRIVE1MTm9kZXM7XG4gIH1cblxuICBnZXRBbmNlc3RvckhUTUxOb2RlcygpIHtcbiAgICBjb25zdCBhbmNlc3Rvck5vZGVzID0gdGhpcy5nZXRBbmNlc3Rvck5vZGVzKCksXG4gICAgICAgICAgYW5jZXN0b3JIVE1MTm9kZXMgPSBhbmNlc3Rvck5vZGVzOyAgLy8vXG5cbiAgICByZXR1cm4gYW5jZXN0b3JIVE1MTm9kZXM7XG4gIH1cblxuICByZWR1Y2VDaGlsZEhUTUxOb2RlKGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpIHsgcmV0dXJuIHRoaXMucmVkdWNlQ2hpbGROb2RlKGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpOyB9XG5cbiAgc29tZUFuY2VzdG9ySFRNTE5vZGUoY2FsbGJhY2spIHsgcmV0dXJuIHRoaXMuc29tZUFuY2VzdG9yTm9kZShjYWxsYmFjayk7IH1cblxuICByZW1vdmVDaGlsZEhUTUxOb2RlcyhyZW1vdmVkQ2hpbGRIVE1MTm9kZXMgPSBudWxsKSB7XG4gICAgbGV0IGNoaWxkSFRNTE5vZGVzO1xuXG4gICAgY2hpbGRIVE1MTm9kZXMgPSB0aGlzLmdldENoaWxkSFRNTE5vZGVzKCk7XG5cbiAgICBpZiAocmVtb3ZlZENoaWxkSFRNTE5vZGVzICE9PSBudWxsKSB7XG4gICAgICBjaGlsZEhUTUxOb2RlcyA9IGNoaWxkSFRNTE5vZGVzLmZpbHRlcigoY2hpbGRIVE1MTm9kZSkgPT4geyAvLy9cbiAgICAgICAgY29uc3QgbWFya2Rvd25Ob2RlID0gY2hpbGRIVE1MTm9kZS5nZXRNYXJrZG93bk5vZGUoKSxcbiAgICAgICAgICAgICAgaW5kZXggPSByZW1vdmVkQ2hpbGRIVE1MTm9kZXMuZmluZEluZGV4KChyZW1vdmVkQ2hpbGRIVE1MTm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1hcmtkb3duTm9kZU1hdGNoZXMgPSByZW1vdmVkQ2hpbGRIVE1MTm9kZS5tYXRjaE1hcmtkb3duTm9kZShtYXJrZG93bk5vZGUpO1xuXG4gICAgICAgICAgICAgICAgaWYgKG1hcmtkb3duTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBsZXQgcmVtb3ZlZENoaWxkTm9kZXMgPSBjaGlsZEhUTUxOb2RlczsgIC8vL1xuXG4gICAgcmVtb3ZlZENoaWxkTm9kZXMgPSB0aGlzLnJlbW92ZUNoaWxkTm9kZXMocmVtb3ZlZENoaWxkTm9kZXMpO1xuXG4gICAgcmVtb3ZlZENoaWxkSFRNTE5vZGVzID0gcmVtb3ZlZENoaWxkTm9kZXM7ICAvLy9cblxuICAgIHJldHVybiByZW1vdmVkQ2hpbGRIVE1MTm9kZXM7XG4gIH1cblxuICBtYXRjaE1hcmtkb3duTm9kZShtYXJrZG93bk5vZGUpIHtcbiAgICBjb25zdCBvdXRlck5vZGUgPSBtYXJrZG93bk5vZGUsIC8vL1xuICAgICAgICAgIG91dGVyTm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoT3V0ZXJOb2RlKG91dGVyTm9kZSksXG4gICAgICAgICAgbWFya2Rvd25Ob2RlTWF0Y2hlcyA9IG91dGVyTm9kZU1hdGNoZXM7IC8vL1xuXG4gICAgcmV0dXJuIG1hcmtkb3duTm9kZU1hdGNoZXM7XG4gIH1cblxuICByZXRyaWV2ZUhUTUxOb2RlKGNhbGxiYWNrKSB7XG4gICAgbGV0IGh0bWxOb2RlID0gbnVsbDtcblxuICAgIGlmIChodG1sTm9kZSA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgY2hpbGRIVE1MTm9kZXMgPSB0aGlzLmdldENoaWxkSFRNTE5vZGVzKCk7XG5cbiAgICAgIGNoaWxkSFRNTE5vZGVzLnNvbWUoKGNoaWxkSFRNTE5vZGUpID0+IHtcbiAgICAgICAgaHRtbE5vZGUgPSBjaGlsZEhUTUxOb2RlLnJldHJpZXZlSFRNTE5vZGUoY2FsbGJhY2spO1xuXG4gICAgICAgIGlmIChodG1sTm9kZSAhPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoaHRtbE5vZGUgPT09IG51bGwpIHtcbiAgICAgIGh0bWxOb2RlID0gdGhpcztcblxuICAgICAgY29uc3QgcmVzdWx0ID0gY2FsbGJhY2soaHRtbE5vZGUpO1xuXG4gICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICBodG1sTm9kZSA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGh0bWxOb2RlO1xuICB9XG5cbiAgYWRkQ2hpbGRIVE1MTm9kZXMoYWRkZWRDaGlsZEhUTUxOb2Rlcywgc3RhcnRIVE5MSW5kZXgpIHtcbiAgICBjb25zdCBhZGRlZENoaWxkTm9kZXMgPSBhZGRlZENoaWxkSFRNTE5vZGVzLCAgLy8vXG4gICAgICAgICAgc3RhcnRJbmRleCA9IHN0YXJ0SFROTEluZGV4OyAgLy8vXG5cbiAgICB0aGlzLmFkZENoaWxkTm9kZXMoYWRkZWRDaGlsZE5vZGVzLCBzdGFydEluZGV4KTtcbiAgfVxuXG4gIGFkanVzdEluZGVudChpbmRlbnQpIHtcbiAgICBpbmRlbnQgPSAoaW5kZW50ID09PSBudWxsKSA/XG4gICAgICAgICAgICAgICBFTVBUWV9TVFJJTkcgOlxuICAgICAgICAgICAgICAgIGAke0RPVUJMRV9TUEFDRX0ke2luZGVudH1gO1xuXG4gICAgcmV0dXJuIGluZGVudDtcbiAgfVxuXG4gIGxpbmVzKGNvbnRleHQpIHtcbiAgICBsZXQgbGluZXM7XG5cbiAgICAoeyBsaW5lcyA9IG51bGwgfSA9IHRoaXMuY29uc3RydWN0b3IpO1xuXG4gICAgaWYgKGxpbmVzID09PSBudWxsKSB7XG4gICAgICBsaW5lcyA9IHRoaXMucmVkdWNlQ2hpbGROb2RlKChsaW5lcywgY2hpbGROb2RlKSA9PiB7XG4gICAgICAgIGNvbnN0IGNoaWxkTm9kZUxpbmVzID0gY2hpbGROb2RlLmxpbmVzKGNvbnRleHQpO1xuXG4gICAgICAgIGxpbmVzICs9IGNoaWxkTm9kZUxpbmVzO1xuXG4gICAgICAgIHJldHVybiBsaW5lcztcbiAgICAgIH0sIDApO1xuICAgIH1cblxuICAgIHJldHVybiBsaW5lcztcbiAgfVxuXG4gIHRhZ05hbWUoY29udGV4dCkge1xuICAgIGNvbnN0IHsgdGFnTmFtZSB9ID0gdGhpcy5jb25zdHJ1Y3RvcjtcblxuICAgIHJldHVybiB0YWdOYW1lO1xuICB9XG5cbiAgZGVwdGgoKSB7XG4gICAgY29uc3QgeyBkZXB0aCA9IG51bGwgfSA9IHRoaXMuY29uc3RydWN0b3I7XG5cbiAgICByZXR1cm4gZGVwdGg7XG4gIH1cblxuICBjbGFzc05hbWUoY29udGV4dCkge1xuICAgIGNvbnN0IHsgY2xhc3NOYW1lIH0gPSB0aGlzLmNvbnN0cnVjdG9yO1xuXG4gICAgcmV0dXJuIGNsYXNzTmFtZTtcbiAgfVxuXG4gIGNsb3NpbmdUYWcoY29udGV4dCkge1xuICAgIGNvbnN0IHRhZ05hbWUgPSB0aGlzLnRhZ05hbWUoY29udGV4dCksXG4gICAgICAgICAgY2xvc2luZ1RhZyA9IGA8LyR7dGFnTmFtZX0+YDtcblxuICAgIHJldHVybiBjbG9zaW5nVGFnO1xuICB9XG5cbiAgc3RhcnRpbmdUYWcoY29udGV4dCkge1xuICAgIGNvbnN0IHRhZ05hbWUgPSB0aGlzLnRhZ05hbWUoY29udGV4dCksXG4gICAgICAgICAgY2xhc3NOYW1lID0gdGhpcy5jbGFzc05hbWUoY29udGV4dCksXG4gICAgICAgICAgYXR0cmlidXRlTmFtZSA9IHRoaXMuYXR0cmlidXRlTmFtZShjb250ZXh0KSxcbiAgICAgICAgICBhdHRyaWJ1dGVWYWx1ZSA9IHRoaXMuYXR0cmlidXRlVmFsdWUoY29udGV4dCksXG4gICAgICAgICAgY2xhc3NIVE1MID0gKGNsYXNzTmFtZSAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICBgIGNsYXNzPVwiJHtjbGFzc05hbWV9XCJgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgRU1QVFlfU1RSSU5HLFxuICAgICAgICAgIGF0dHJpYnV0ZUhUTUwgPSAoKGF0dHJpYnV0ZU5hbWUgIT09IG51bGwpICYmIChhdHRyaWJ1dGVWYWx1ZSAhPT0gbnVsbCkpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGAgJHthdHRyaWJ1dGVOYW1lfT1cIiR7YXR0cmlidXRlVmFsdWV9XCJgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNUFRZX1NUUklORyxcbiAgICAgICAgICBzdGFydGluZ1RhZyA9IGA8JHt0YWdOYW1lfSR7Y2xhc3NIVE1MfSR7YXR0cmlidXRlSFRNTH0+YDtcblxuICAgIHJldHVybiBzdGFydGluZ1RhZztcbiAgfVxuXG4gIHNlbGZDbG9zaW5nVGFnKGNvbnRleHQpIHtcbiAgICBjb25zdCB0YWdOYW1lID0gdGhpcy50YWdOYW1lKGNvbnRleHQpLFxuICAgICAgICAgIGNsYXNzTmFtZSA9IHRoaXMuY2xhc3NOYW1lKGNvbnRleHQpLFxuICAgICAgICAgIGF0dHJpYnV0ZU5hbWUgPSB0aGlzLmF0dHJpYnV0ZU5hbWUoY29udGV4dCksXG4gICAgICAgICAgYXR0cmlidXRlVmFsdWUgPSB0aGlzLmF0dHJpYnV0ZVZhbHVlKGNvbnRleHQpLFxuICAgICAgICAgIGNsYXNzSFRNTCA9IChjbGFzc05hbWUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgYCBjbGFzcz1cIiR7Y2xhc3NOYW1lfVwiYCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEVNUFRZX1NUUklORyxcbiAgICAgICAgICBhdHRyaWJ1dGVIVE1MID0gKChhdHRyaWJ1dGVOYW1lICE9PSBudWxsKSAmJiAoYXR0cmlidXRlVmFsdWUgIT09IG51bGwpKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBgICR7YXR0cmlidXRlTmFtZX09XCIke2F0dHJpYnV0ZVZhbHVlfVwiYCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTVBUWV9TVFJJTkcsXG4gICAgICAgICAgc2VsZkNsb3NpbmdUYWcgPSBgPCR7dGFnTmFtZX0ke2NsYXNzSFRNTH0ke2F0dHJpYnV0ZUhUTUx9Lz5gO1xuXG4gICAgcmV0dXJuIHNlbGZDbG9zaW5nVGFnO1xuICB9XG5cbiAgYXR0cmlidXRlTmFtZShjb250ZXh0KSB7XG4gICAgY29uc3QgYXR0cmlidXRlTmFtZSA9IG51bGw7XG5cbiAgICByZXR1cm4gYXR0cmlidXRlTmFtZTtcbiAgfVxuXG4gIGF0dHJpYnV0ZVZhbHVlKGNvbnRleHQpIHtcbiAgICBjb25zdCBhdHRyaWJ1dGVWYWx1ZSA9IG51bGw7XG5cbiAgICByZXR1cm4gYXR0cmlidXRlVmFsdWU7XG4gIH1cblxuICBjcmVhdGVET01FbGVtZW50KGNvbnRleHQpIHtcbiAgICBsZXQgZG9tRWxlbWVudDtcblxuICAgIGNvbnN0IHRhZ05hbWUgPSB0aGlzLnRhZ05hbWUoY29udGV4dCk7XG5cbiAgICBkb21FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWdOYW1lKTtcblxuICAgIGNvbnN0IGNsYXNzTmFtZSA9IHRoaXMuY2xhc3NOYW1lKGNvbnRleHQpLFxuICAgICAgICAgIGF0dHJpYnV0ZU5hbWUgPSB0aGlzLmF0dHJpYnV0ZU5hbWUoY29udGV4dCksXG4gICAgICAgICAgYXR0cmlidXRlVmFsdWUgPSB0aGlzLmF0dHJpYnV0ZVZhbHVlKGNvbnRleHQpO1xuXG4gICAgaWYgKGNsYXNzTmFtZSAhPT0gbnVsbCkge1xuICAgICAgT2JqZWN0LmFzc2lnbihkb21FbGVtZW50LCB7XG4gICAgICAgIGNsYXNzTmFtZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKChhdHRyaWJ1dGVOYW1lICE9PSBudWxsKSAmJiAoYXR0cmlidXRlVmFsdWUgIT09IG51bGwpKSB7XG4gICAgICBkb21FbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCBhdHRyaWJ1dGVWYWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRvbUVsZW1lbnQ7XG4gIH1cblxuICBtb3VudChwYXJlbnRET01FbGVtZW50LCBzaWJsaW5nRE9NRWxlbWVudCwgY29udGV4dCkge1xuICAgIHRoaXMuZG9tRWxlbWVudCA9IHRoaXMuY3JlYXRlRE9NRWxlbWVudChjb250ZXh0KTtcblxuICAgIChzaWJsaW5nRE9NRWxlbWVudCAhPT0gbnVsbCkgP1xuICAgICAgaW5zZXJ0QWZ0ZXIodGhpcy5kb21FbGVtZW50LCBwYXJlbnRET01FbGVtZW50LCBzaWJsaW5nRE9NRWxlbWVudCkgOlxuICAgICAgICBpbnNlcnRCZWZvcmVoYW5kKHRoaXMuZG9tRWxlbWVudCwgcGFyZW50RE9NRWxlbWVudCk7XG5cbiAgICBwYXJlbnRET01FbGVtZW50ID0gdGhpcy5kb21FbGVtZW50OyAvLy9cblxuICAgIHNpYmxpbmdET01FbGVtZW50ID0gbnVsbDtcblxuICAgIHRoaXMuY2hpbGROb2Rlcy5mb3JFYWNoKChjaGlsZE5vZGUpID0+IHtcbiAgICAgIHNpYmxpbmdET01FbGVtZW50ID0gY2hpbGROb2RlLm1vdW50KHBhcmVudERPTUVsZW1lbnQsIHNpYmxpbmdET01FbGVtZW50LCBjb250ZXh0KTtcbiAgICB9KTtcblxuICAgIHNpYmxpbmdET01FbGVtZW50ID0gdGhpcy5kb21FbGVtZW50OyAgLy8vXG5cbiAgICByZXR1cm4gc2libGluZ0RPTUVsZW1lbnQ7XG4gIH1cblxuICB1bm1vdW50KHBhcmVudERPTUVsZW1lbnQpIHtcbiAgICB7XG4gICAgICBjb25zdCBwYXJlbnRET01FbGVtZW50ID0gdGhpcy5kb21FbGVtZW50OyAvLy9cblxuICAgICAgdGhpcy5jaGlsZE5vZGVzLmZvckVhY2goKGNoaWxkTm9kZSkgPT4ge1xuICAgICAgICBjaGlsZE5vZGUudW5tb3VudChwYXJlbnRET01FbGVtZW50KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlbW92ZSh0aGlzLmRvbUVsZW1lbnQsIHBhcmVudERPTUVsZW1lbnQpO1xuXG4gICAgdGhpcy5kb21FbGVtZW50ID0gbnVsbDtcbiAgfVxuXG4gIGFzSFRNTChpbmRlbnQsIGNvbnRleHQpIHtcbiAgICBpZiAoY29udGV4dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb250ZXh0ID0gaW5kZW50OyAvLy9cblxuICAgICAgaW5kZW50ID0gRU1QVFlfU1RSSU5HO1xuICAgIH1cblxuICAgIGxldCBodG1sO1xuXG4gICAgaW5kZW50ID0gdGhpcy5hZGp1c3RJbmRlbnQoaW5kZW50KTtcblxuICAgIGNvbnN0IGNoaWxkTm9kZXNIVE1MID0gdGhpcy5jaGlsZE5vZGVzQXNIVE1MKGluZGVudCwgY29udGV4dCk7XG5cbiAgICBpZiAoY2hpbGROb2Rlc0hUTUwgIT09IEVNUFRZX1NUUklORykge1xuICAgICAgY29uc3Qgc3RhcnRpbmdUYWcgPSB0aGlzLnN0YXJ0aW5nVGFnKGNvbnRleHQpLFxuICAgICAgICAgICAgY2xvc2luZ1RhZyA9IHRoaXMuY2xvc2luZ1RhZyhjb250ZXh0KTtcblxuICAgICAgaHRtbCA9IGAke2luZGVudH0ke3N0YXJ0aW5nVGFnfVxuJHtjaGlsZE5vZGVzSFRNTH0ke2luZGVudH0ke2Nsb3NpbmdUYWd9XG5gO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzZWxmQ2xvc2luZ1RhZyA9IHRoaXMuc2VsZkNsb3NpbmdUYWcoY29udGV4dCk7XG5cbiAgICAgIGh0bWwgPSBgJHtpbmRlbnR9JHtzZWxmQ2xvc2luZ1RhZ31cbmA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGh0bWw7XG4gIH1cblxuICBhc1BsYWluVGV4dChjb250ZXh0KSB7XG4gICAgbGV0IHBsYWluVGV4dDtcblxuICAgIGNvbnN0IGNoaWxkTm9kZXNQbGFpblRleHQgPSB0aGlzLmNoaWxkTm9kZXNBc1BsYWluVGV4dChjb250ZXh0KTtcblxuICAgIHBsYWluVGV4dCA9IGNoaWxkTm9kZXNQbGFpblRleHQ7ICAvLy9cblxuICAgIHJldHVybiBwbGFpblRleHQ7XG4gIH1cblxuICBjaGlsZE5vZGVzQXNIVE1MKGluZGVudCwgY29udGV4dCkge1xuICAgIGNvbnN0IGNoaWxkTm9kZXNIVE1MID0gdGhpcy5yZWR1Y2VDaGlsZE5vZGUoKGNoaWxkTm9kZXNIVE1MLCBjaGlsZE5vZGUpID0+IHtcbiAgICAgIGNvbnN0IGNoaWxkTm9kZUhUTUwgPSBjaGlsZE5vZGUuYXNIVE1MKGluZGVudCwgY29udGV4dCk7XG5cbiAgICAgIGNoaWxkTm9kZXNIVE1MID0gYCR7Y2hpbGROb2Rlc0hUTUx9JHtjaGlsZE5vZGVIVE1MfWA7XG5cbiAgICAgIHJldHVybiBjaGlsZE5vZGVzSFRNTDtcbiAgICB9LCBFTVBUWV9TVFJJTkcpO1xuXG4gICAgcmV0dXJuIGNoaWxkTm9kZXNIVE1MO1xuICB9XG5cbiAgY2hpbGROb2Rlc0FzUGxhaW5UZXh0KGNvbnRleHQpIHtcbiAgICBjb25zdCBjaGlsZE5vZGVzUGxhaW5UZXh0ID0gdGhpcy5yZWR1Y2VDaGlsZE5vZGUoKGNoaWxkTm9kZXNQbGFpblRleHQsIGNoaWxkTm9kZSkgPT4ge1xuICAgICAgY29uc3QgY2hpbGROb2RlUGxhaW5UZXh0ID0gY2hpbGROb2RlLmFzUGxhaW5UZXh0KGNvbnRleHQpO1xuXG4gICAgICBjaGlsZE5vZGVzUGxhaW5UZXh0ID0gYCR7Y2hpbGROb2Rlc1BsYWluVGV4dH1cbiR7Y2hpbGROb2RlUGxhaW5UZXh0fWA7XG5cbiAgICAgIHJldHVybiBjaGlsZE5vZGVzUGxhaW5UZXh0O1xuICAgIH0sIEVNUFRZX1NUUklORyk7XG5cbiAgICByZXR1cm4gY2hpbGROb2Rlc1BsYWluVGV4dDtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTm90aGluZyhDbGFzcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgaWYgKENsYXNzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIENsYXNzID0gSFRNTE5vZGU7IC8vL1xuICAgIH1cblxuICAgIGNvbnN0IGRvbUVsZW1lbnQgPSBudWxsLFxuICAgICAgICAgIGh0bWxOb2RlID0gTm9kZS5mcm9tTm90aGluZyhDbGFzcywgZG9tRWxlbWVudCwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgIHJldHVybiBodG1sTm9kZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tT3V0ZXJOb2RlKENsYXNzLCBvdXRlck5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGlmIChvdXRlck5vZGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgb3V0ZXJOb2RlID0gQ2xhc3M7ICAvLy9cblxuICAgICAgQ2xhc3MgPSBIVE1MTm9kZTsgLy8vXG4gICAgfVxuXG4gICAgY29uc3QgZG9tRWxlbWVudCA9IG51bGwsXG4gICAgICAgICAgaHRtbE5vZGUgPSBOb2RlLmZyb21PdXRlck5vZGUoQ2xhc3MsIG91dGVyTm9kZSwgZG9tRWxlbWVudCwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgIHJldHVybiBodG1sTm9kZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tRE9NRWxlbWVudChDbGFzcywgZG9tRWxlbWVudCwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgaWYgKGRvbUVsZW1lbnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZG9tRWxlbWVudCA9IENsYXNzOyAvLy9cblxuICAgICAgQ2xhc3MgPSBIVE1MTm9kZTsgLy8vXG4gICAgfVxuXG4gICAgY29uc3QgaHRtbE5vZGUgPSBOb2RlLmZyb21Ob3RoaW5nKENsYXNzLCBkb21FbGVtZW50LCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgcmV0dXJuIGh0bWxOb2RlO1xuICB9XG5cbiAgc3RhdGljIGZyb21DaGlsZEhUTUxOb2RlcyhDbGFzcywgY2hpbGRIVE1MTm9kZXMsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGlmIChjaGlsZEhUTUxOb2RlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjaGlsZEhUTUxOb2RlcyA9IENsYXNzOyAgLy8vXG5cbiAgICAgIENsYXNzID0gSFRNTE5vZGU7IC8vL1xuICAgIH1cblxuICAgIGNvbnN0IGNoaWxkTm9kZXMgPSBjaGlsZEhUTUxOb2RlcywgIC8vL1xuICAgICAgICAgIGRvbUVsZW1lbnQgPSBudWxsLFxuICAgICAgICAgIGh0bWxOb2RlID0gTm9kZS5mcm9tQ2hpbGROb2RlcyhDbGFzcywgY2hpbGROb2RlcywgZG9tRWxlbWVudCwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgIHJldHVybiBodG1sTm9kZTtcbiAgfVxufVxuXG5PYmplY3QuYXNzaWduKEhUTUxOb2RlLnByb3RvdHlwZSwgbm9kZU1peGlucyk7XG5cbmV4cG9ydCBkZWZhdWx0IEhUTUxOb2RlO1xuIl0sIm5hbWVzIjpbIkhUTUxOb2RlIiwib3V0ZXJOb2RlIiwicGFyZW50Tm9kZSIsImNoaWxkTm9kZXMiLCJkb21FbGVtZW50IiwiZ2V0RE9NRWxlbWVudCIsInNldERPTUVsZW1lbnQiLCJyZXNldERPTUVsZW1lbnQiLCJnZXRSdWxlTmFtZSIsIm1hcmtkb3duTm9kZSIsImdldE1hcmtkb3duTm9kZSIsInJ1bGVOYW1lIiwiaXNUZXJtaW5hbE5vZGUiLCJ0ZXJtaW5hbE5vZGUiLCJpc05vblRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZSIsImdldE91dGVyTm9kZSIsImdldFBhcmVudEhUTUxOb2RlIiwiZ2V0UGFyZW50Tm9kZSIsInBhcmVudEhUTUxOb2RlIiwiZ2V0Q2hpbGRIVE1MTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwiY2hpbGRIVE1MTm9kZXMiLCJnZXRBbmNlc3RvckhUTUxOb2RlcyIsImFuY2VzdG9yTm9kZXMiLCJnZXRBbmNlc3Rvck5vZGVzIiwiYW5jZXN0b3JIVE1MTm9kZXMiLCJyZWR1Y2VDaGlsZEhUTUxOb2RlIiwiY2FsbGJhY2siLCJpbml0aWFsVmFsdWUiLCJyZWR1Y2VDaGlsZE5vZGUiLCJzb21lQW5jZXN0b3JIVE1MTm9kZSIsInNvbWVBbmNlc3Rvck5vZGUiLCJyZW1vdmVDaGlsZEhUTUxOb2RlcyIsInJlbW92ZWRDaGlsZEhUTUxOb2RlcyIsImZpbHRlciIsImNoaWxkSFRNTE5vZGUiLCJpbmRleCIsImZpbmRJbmRleCIsInJlbW92ZWRDaGlsZEhUTUxOb2RlIiwibWFya2Rvd25Ob2RlTWF0Y2hlcyIsIm1hdGNoTWFya2Rvd25Ob2RlIiwicmVtb3ZlZENoaWxkTm9kZXMiLCJyZW1vdmVDaGlsZE5vZGVzIiwib3V0ZXJOb2RlTWF0Y2hlcyIsIm1hdGNoT3V0ZXJOb2RlIiwicmV0cmlldmVIVE1MTm9kZSIsImh0bWxOb2RlIiwic29tZSIsInJlc3VsdCIsImFkZENoaWxkSFRNTE5vZGVzIiwiYWRkZWRDaGlsZEhUTUxOb2RlcyIsInN0YXJ0SFROTEluZGV4IiwiYWRkZWRDaGlsZE5vZGVzIiwic3RhcnRJbmRleCIsImFkZENoaWxkTm9kZXMiLCJhZGp1c3RJbmRlbnQiLCJpbmRlbnQiLCJFTVBUWV9TVFJJTkciLCJET1VCTEVfU1BBQ0UiLCJsaW5lcyIsImNvbnRleHQiLCJjaGlsZE5vZGUiLCJjaGlsZE5vZGVMaW5lcyIsInRhZ05hbWUiLCJkZXB0aCIsImNsYXNzTmFtZSIsImNsb3NpbmdUYWciLCJzdGFydGluZ1RhZyIsImF0dHJpYnV0ZU5hbWUiLCJhdHRyaWJ1dGVWYWx1ZSIsImNsYXNzSFRNTCIsImF0dHJpYnV0ZUhUTUwiLCJzZWxmQ2xvc2luZ1RhZyIsImNyZWF0ZURPTUVsZW1lbnQiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJPYmplY3QiLCJhc3NpZ24iLCJzZXRBdHRyaWJ1dGUiLCJtb3VudCIsInBhcmVudERPTUVsZW1lbnQiLCJzaWJsaW5nRE9NRWxlbWVudCIsImluc2VydEFmdGVyIiwiaW5zZXJ0QmVmb3JlaGFuZCIsImZvckVhY2giLCJ1bm1vdW50IiwicmVtb3ZlIiwiYXNIVE1MIiwidW5kZWZpbmVkIiwiaHRtbCIsImNoaWxkTm9kZXNIVE1MIiwiY2hpbGROb2Rlc0FzSFRNTCIsImFzUGxhaW5UZXh0IiwicGxhaW5UZXh0IiwiY2hpbGROb2Rlc1BsYWluVGV4dCIsImNoaWxkTm9kZXNBc1BsYWluVGV4dCIsImNoaWxkTm9kZUhUTUwiLCJjaGlsZE5vZGVQbGFpblRleHQiLCJmcm9tTm90aGluZyIsIkNsYXNzIiwicmVtYWluaW5nQXJndW1lbnRzIiwiTm9kZSIsImZyb21PdXRlck5vZGUiLCJmcm9tRE9NRWxlbWVudCIsImZyb21DaGlsZEhUTUxOb2RlcyIsImZyb21DaGlsZE5vZGVzIiwicHJvdG90eXBlIiwibm9kZU1peGlucyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBd2FBOzs7ZUFBQTs7O3dCQXRhcUI7MkRBRUU7eUJBRW9CO21CQUNXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFdEQsSUFBQSxBQUFNQSx5QkFBTjtjQUFNQTthQUFBQSxTQUNRQyxTQUFT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
|