occam-verify-cli 0.0.478 → 0.0.479
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/conclusion.js +113 -29
- package/lib/metaSubstitution.js +5 -5
- package/lib/premise.js +145 -39
- package/lib/rule.js +74 -16
- package/lib/ruleNames.js +13 -9
- package/lib/substitution.js +12 -12
- package/lib/type.js +22 -21
- package/lib/variable.js +12 -19
- package/lib/verify/assertion/type.js +3 -2
- package/lib/verify/equality.js +85 -20
- package/lib/verify/statement/qualified.js +6 -3
- package/lib/verify/statement.js +7 -4
- package/package.json +3 -3
- package/src/conclusion.js +181 -32
- package/src/metaSubstitution.js +2 -2
- package/src/premise.js +233 -45
- package/src/rule.js +96 -16
- package/src/ruleNames.js +3 -2
- package/src/substitution.js +8 -8
- package/src/type.js +26 -20
- package/src/variable.js +10 -16
- package/src/verify/assertion/type.js +5 -2
- package/src/verify/equality.js +79 -35
- package/src/verify/statement/qualified.js +7 -2
- package/src/verify/statement.js +6 -4
package/lib/conclusion.js
CHANGED
|
@@ -43,10 +43,17 @@ var Conclusion = /*#__PURE__*/ function() {
|
|
|
43
43
|
return this.metastatementNode;
|
|
44
44
|
}
|
|
45
45
|
},
|
|
46
|
+
{
|
|
47
|
+
key: "matchStatementNode",
|
|
48
|
+
value: function matchStatementNode(statementNode, substitutions) {
|
|
49
|
+
var nonTerminalNode = statementNode, conclusionNonTerminalNode = this.metastatementNode, conclusionNonTerminalNodeMatches = matchConclusionNonTerminalNode(conclusionNonTerminalNode, nonTerminalNode, substitutions), statementNodeMatches = conclusionNonTerminalNodeMatches; ///
|
|
50
|
+
return statementNodeMatches;
|
|
51
|
+
}
|
|
52
|
+
},
|
|
46
53
|
{
|
|
47
54
|
key: "matchMetastatementNode",
|
|
48
55
|
value: function matchMetastatementNode(metastatementNode, metaSubstitutions) {
|
|
49
|
-
var nonTerminalNode = metastatementNode, conclusionNonTerminalNode = this.metastatementNode, conclusionNonTerminalNodeMatches =
|
|
56
|
+
var nonTerminalNode = metastatementNode, conclusionNonTerminalNode = this.metastatementNode, conclusionNonTerminalNodeMatches = metaMatchConclusionNonTerminalNode(conclusionNonTerminalNode, nonTerminalNode, metaSubstitutions), metastatementNodeMatches = conclusionNonTerminalNodeMatches; ///
|
|
50
57
|
return metastatementNodeMatches;
|
|
51
58
|
}
|
|
52
59
|
},
|
|
@@ -77,81 +84,158 @@ var Conclusion = /*#__PURE__*/ function() {
|
|
|
77
84
|
]);
|
|
78
85
|
return Conclusion;
|
|
79
86
|
}();
|
|
80
|
-
function matchConclusionNode(conclusionNode, node,
|
|
87
|
+
function matchConclusionNode(conclusionNode, node, substitutions) {
|
|
81
88
|
var conclusionNodeMatches = false;
|
|
82
89
|
var nodeTerminalNode = node.isTerminalNode(), ruleNodeTerminalNode = conclusionNode.isTerminalNode();
|
|
83
90
|
if (nodeTerminalNode === ruleNodeTerminalNode) {
|
|
84
91
|
if (nodeTerminalNode) {
|
|
85
|
-
var terminalNode = node, conclusionTerminalNode = conclusionNode, conclusionTerminalNodeMatches = matchConclusionTerminalNode(conclusionTerminalNode, terminalNode,
|
|
92
|
+
var terminalNode = node, conclusionTerminalNode = conclusionNode, conclusionTerminalNodeMatches = matchConclusionTerminalNode(conclusionTerminalNode, terminalNode, substitutions);
|
|
86
93
|
conclusionNodeMatches = conclusionTerminalNodeMatches; ///
|
|
87
94
|
} else {
|
|
88
|
-
var nonTerminalNode = node, conclusionNonTerminalNode = conclusionNode, conclusionNonTerminalNodeMatches = matchConclusionNonTerminalNode(conclusionNonTerminalNode, nonTerminalNode,
|
|
95
|
+
var nonTerminalNode = node, conclusionNonTerminalNode = conclusionNode, conclusionNonTerminalNodeMatches = matchConclusionNonTerminalNode(conclusionNonTerminalNode, nonTerminalNode, substitutions);
|
|
89
96
|
conclusionNodeMatches = conclusionNonTerminalNodeMatches; ///
|
|
90
97
|
}
|
|
91
98
|
}
|
|
92
99
|
return conclusionNodeMatches;
|
|
93
100
|
}
|
|
94
101
|
function matchConclusionNodes(conclusionNodes, nodes, metaSubstitutions) {
|
|
95
|
-
var
|
|
102
|
+
var conclusionNodesMatch = false;
|
|
96
103
|
var nodesLength = nodes.length, conclusionNodesLength = conclusionNodes.length;
|
|
97
104
|
if (nodesLength === conclusionNodesLength) {
|
|
98
|
-
|
|
105
|
+
conclusionNodesMatch = nodes.every(function(node, index) {
|
|
99
106
|
var conclusionNode = conclusionNodes[index], conclusionNodeMatches = matchConclusionNode(conclusionNode, node, metaSubstitutions);
|
|
100
107
|
if (conclusionNodeMatches) {
|
|
101
108
|
return true;
|
|
102
109
|
}
|
|
103
110
|
});
|
|
104
111
|
}
|
|
105
|
-
return
|
|
112
|
+
return conclusionNodesMatch;
|
|
106
113
|
}
|
|
107
|
-
function
|
|
108
|
-
var
|
|
109
|
-
|
|
110
|
-
|
|
114
|
+
function matchConclusionTerminalNode(conclusionTerminalNode, terminalNode, substitutions) {
|
|
115
|
+
var matches = conclusionTerminalNode.match(terminalNode), conclusionTerminalNodeMatches = matches; ///
|
|
116
|
+
return conclusionTerminalNodeMatches;
|
|
117
|
+
}
|
|
118
|
+
function matchConclusionNonTerminalNode(conclusionNonTerminalNode, nonTerminalNode, substitutions) {
|
|
119
|
+
var conclusionNonTerminalNodeMatches = false;
|
|
120
|
+
var ruleName = nonTerminalNode.getRuleName(), childNodes = nonTerminalNode.getChildNodes(), conclusionNonTerminalNodeRuleName = conclusionNonTerminalNode.getRuleName(), conclusionNonTerminalNodeChildNodes = conclusionNonTerminalNode.getChildNodes(), ruleNameStatementRuleName = ruleName === _ruleNames.STATEMENT_RULE_NAME, conclusionNonTerminalNodeRuleNameMetastatementRuleName = conclusionNonTerminalNodeRuleName === _ruleNames.METASTATEMENT_RULE_NAME;
|
|
121
|
+
if (ruleNameStatementRuleName && conclusionNonTerminalNodeRuleNameMetastatementRuleName) {
|
|
122
|
+
var statementNode = nonTerminalNode, conclusionMetastatementNode = conclusionNonTerminalNode, conclusionMetastatementNodeMatches = matchConclusionMetastatementNode(conclusionMetastatementNode, statementNode, substitutions);
|
|
123
|
+
if (conclusionMetastatementNodeMatches) {
|
|
124
|
+
conclusionNonTerminalNodeMatches = true; ///
|
|
125
|
+
} else {
|
|
126
|
+
var nodes = childNodes, conclusionNodes = conclusionNonTerminalNodeChildNodes, conclusionNonTerminalNodeChildNodesMatches = matchConclusionNodes(conclusionNodes, nodes, substitutions);
|
|
127
|
+
conclusionNonTerminalNodeMatches = conclusionNonTerminalNodeChildNodesMatches; ///
|
|
128
|
+
}
|
|
129
|
+
} else if (ruleName === conclusionNonTerminalNodeRuleName) {
|
|
130
|
+
var nodes1 = childNodes, conclusionNodes1 = conclusionNonTerminalNodeChildNodes, conclusionNonTerminalNodeChildNodesMatches1 = matchConclusionNodes(conclusionNodes1, nodes1, substitutions);
|
|
131
|
+
conclusionNonTerminalNodeMatches = conclusionNonTerminalNodeChildNodesMatches1; ///
|
|
132
|
+
}
|
|
133
|
+
return conclusionNonTerminalNodeMatches;
|
|
134
|
+
}
|
|
135
|
+
function matchConclusionMetavariableNode(conclusionMetavariableNode, nodes, substitutions) {
|
|
136
|
+
var conclusionMetavariableNodeMatches = true;
|
|
137
|
+
var conclusionMetavariableName = (0, _query.metavariableNameFromMetavariableNode)(conclusionMetavariableNode), substitution = substitutions.find(function(substitution) {
|
|
138
|
+
var metavariableName = substitution.getMetavariableName();
|
|
111
139
|
if (metavariableName === conclusionMetavariableName) {
|
|
112
140
|
return true;
|
|
113
141
|
}
|
|
114
142
|
}) || null;
|
|
115
|
-
if (
|
|
116
|
-
var
|
|
117
|
-
|
|
143
|
+
if (substitution !== null) {
|
|
144
|
+
var substitutionNodesMatch = substitution.matchNodes(nodes);
|
|
145
|
+
conclusionMetavariableNodeMatches = substitutionNodesMatch; ///
|
|
146
|
+
}
|
|
147
|
+
return conclusionMetavariableNodeMatches;
|
|
148
|
+
}
|
|
149
|
+
function matchConclusionMetastatementNode(conclusionMetastatementNode, statementNode, substitutions) {
|
|
150
|
+
var conclusionMetastatementNodeMatches = false;
|
|
151
|
+
var conclusionNonTerminalNode = conclusionMetastatementNode, conclusionNonTerminalNodeChildNodes = conclusionNonTerminalNode.getChildNodes(), conclusionNonTerminalNodeChildNodesLength = conclusionNonTerminalNodeChildNodes.length;
|
|
152
|
+
if (conclusionNonTerminalNodeChildNodesLength === 1) {
|
|
153
|
+
var firstConclusionChildNode = (0, _array.first)(conclusionNonTerminalNodeChildNodes), conclusionChildNode = firstConclusionChildNode, conclusionChildNodeNonTerminalNode = conclusionChildNode.isNonTerminalNode();
|
|
154
|
+
if (conclusionChildNodeNonTerminalNode) {
|
|
155
|
+
var conclusionNonTerminalChildNode = conclusionChildNode, conclusionNonTerminalChildNodeRuleName = conclusionNonTerminalChildNode.getRuleName(), conclusionNonTerminalChildNodeRuleNameMetavariableRuleName = conclusionNonTerminalChildNodeRuleName === _ruleNames.METAVARIABLE_RULE_NAME;
|
|
156
|
+
if (conclusionNonTerminalChildNodeRuleNameMetavariableRuleName) {
|
|
157
|
+
var conclusionMetavariableNode = conclusionNonTerminalChildNode, nonTerminalNode = statementNode, childNodes = nonTerminalNode.getChildNodes(), nodes = childNodes, conclusionMetavariableNodeMatches = matchConclusionMetavariableNode(conclusionMetavariableNode, nodes, substitutions);
|
|
158
|
+
conclusionMetastatementNodeMatches = conclusionMetavariableNodeMatches; ///
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return conclusionMetastatementNodeMatches;
|
|
163
|
+
}
|
|
164
|
+
function metaMatchConclusionNode(conclusionNode, node, metaSubstitutions) {
|
|
165
|
+
var conclusionNodeMatches = false;
|
|
166
|
+
var nodeTerminalNode = node.isTerminalNode(), ruleNodeTerminalNode = conclusionNode.isTerminalNode();
|
|
167
|
+
if (nodeTerminalNode === ruleNodeTerminalNode) {
|
|
168
|
+
if (nodeTerminalNode) {
|
|
169
|
+
var terminalNode = node, conclusionTerminalNode = conclusionNode, conclusionTerminalNodeMatches = metaMatchConclusionTerminalNode(conclusionTerminalNode, terminalNode, metaSubstitutions);
|
|
170
|
+
conclusionNodeMatches = conclusionTerminalNodeMatches; ///
|
|
171
|
+
} else {
|
|
172
|
+
var nonTerminalNode = node, conclusionNonTerminalNode = conclusionNode, conclusionNonTerminalNodeMatches = metaMatchConclusionNonTerminalNode(conclusionNonTerminalNode, nonTerminalNode, metaSubstitutions);
|
|
173
|
+
conclusionNodeMatches = conclusionNonTerminalNodeMatches; ///
|
|
174
|
+
}
|
|
118
175
|
}
|
|
119
|
-
return
|
|
176
|
+
return conclusionNodeMatches;
|
|
120
177
|
}
|
|
121
|
-
function
|
|
178
|
+
function metaMatchConclusionNodes(conclusionNodes, nodes, metaSubstitutions) {
|
|
179
|
+
var conclusionNodesMatch = false;
|
|
180
|
+
var nodesLength = nodes.length, conclusionNodesLength = conclusionNodes.length;
|
|
181
|
+
if (nodesLength === conclusionNodesLength) {
|
|
182
|
+
conclusionNodesMatch = nodes.every(function(node, index) {
|
|
183
|
+
var conclusionNode = conclusionNodes[index], conclusionNodeMatches = metaMatchConclusionNode(conclusionNode, node, metaSubstitutions);
|
|
184
|
+
if (conclusionNodeMatches) {
|
|
185
|
+
return true;
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
return conclusionNodesMatch;
|
|
190
|
+
}
|
|
191
|
+
function metaMatchConclusionTerminalNode(conclusionTerminalNode, terminalNode, metaSubstitutions) {
|
|
122
192
|
var matches = conclusionTerminalNode.match(terminalNode), conclusionTerminalNodeMatches = matches; ///
|
|
123
193
|
return conclusionTerminalNodeMatches;
|
|
124
194
|
}
|
|
125
|
-
function
|
|
195
|
+
function metaMatchConclusionNonTerminalNode(conclusionNonTerminalNode, nonTerminalNode, metaSubstitutions) {
|
|
126
196
|
var conclusionNonTerminalNodeMatches = false;
|
|
127
|
-
var ruleName = nonTerminalNode.getRuleName(),
|
|
128
|
-
if (ruleName ===
|
|
129
|
-
var childNodes = nonTerminalNode.getChildNodes(),
|
|
130
|
-
conclusionNonTerminalNodeMatches =
|
|
197
|
+
var ruleName = nonTerminalNode.getRuleName(), conclusionNonTerminalNodeRuleName = conclusionNonTerminalNode.getRuleName();
|
|
198
|
+
if (ruleName === conclusionNonTerminalNodeRuleName) {
|
|
199
|
+
var childNodes = nonTerminalNode.getChildNodes(), conclusionNonTerminalNodeChildNodes = conclusionNonTerminalNode.getChildNodes(), nodes = childNodes, conclusionNodes = conclusionNonTerminalNodeChildNodes, conclusionNonTerminalNodeChildNodesMatches = metaMatchConclusionNodes(conclusionNodes, nodes, metaSubstitutions);
|
|
200
|
+
conclusionNonTerminalNodeMatches = conclusionNonTerminalNodeChildNodesMatches; ///
|
|
131
201
|
if (!conclusionNonTerminalNodeMatches) {
|
|
132
202
|
var ruleNameMetastatementRuleName = ruleName === _ruleNames.METASTATEMENT_RULE_NAME;
|
|
133
203
|
if (ruleNameMetastatementRuleName) {
|
|
134
|
-
var metastatementNode = nonTerminalNode, conclusionMetastatementNode = conclusionNonTerminalNode, conclusionMetastatementNodeMatches =
|
|
204
|
+
var metastatementNode = nonTerminalNode, conclusionMetastatementNode = conclusionNonTerminalNode, conclusionMetastatementNodeMatches = metaMatchConclusionMetastatementNode(conclusionMetastatementNode, metastatementNode, metaSubstitutions);
|
|
135
205
|
conclusionNonTerminalNodeMatches = conclusionMetastatementNodeMatches; ///
|
|
136
206
|
}
|
|
137
207
|
}
|
|
138
208
|
}
|
|
139
209
|
return conclusionNonTerminalNodeMatches;
|
|
140
210
|
}
|
|
141
|
-
function
|
|
211
|
+
function metaMatchConclusionMetavariableNode(conclusionMetavariableNode, nodes, metaSubstitutions) {
|
|
212
|
+
var conclusionMetavariableNodeMatches = true;
|
|
213
|
+
var conclusionMetavariableName = (0, _query.metavariableNameFromMetavariableNode)(conclusionMetavariableNode), metaSubstitution = metaSubstitutions.find(function(metaSubstitution) {
|
|
214
|
+
var metavariableName = metaSubstitution.getMetavariableName();
|
|
215
|
+
if (metavariableName === conclusionMetavariableName) {
|
|
216
|
+
return true;
|
|
217
|
+
}
|
|
218
|
+
}) || null;
|
|
219
|
+
if (metaSubstitution !== null) {
|
|
220
|
+
var metaSubstitutionNodesMatch = metaSubstitution.matchNodes(nodes);
|
|
221
|
+
conclusionMetavariableNodeMatches = metaSubstitutionNodesMatch; ///
|
|
222
|
+
}
|
|
223
|
+
return conclusionMetavariableNodeMatches;
|
|
224
|
+
}
|
|
225
|
+
function metaMatchConclusionMetastatementNode(conclusionMetastatementNode, metastatementNode, metaSubstitutions) {
|
|
142
226
|
var conclusionMetastatementNodeMatches = false;
|
|
143
|
-
var conclusionNonTerminalNode = conclusionMetastatementNode,
|
|
144
|
-
if (
|
|
145
|
-
var firstConclusionChildNode = (0, _array.first)(
|
|
227
|
+
var conclusionNonTerminalNode = conclusionMetastatementNode, conclusionNonTerminalNodeChildNodes = conclusionNonTerminalNode.getChildNodes(), conclusionNonTerminalNodeChildNodesLength = conclusionNonTerminalNodeChildNodes.length;
|
|
228
|
+
if (conclusionNonTerminalNodeChildNodesLength === 1) {
|
|
229
|
+
var firstConclusionChildNode = (0, _array.first)(conclusionNonTerminalNodeChildNodes), conclusionChildNode = firstConclusionChildNode, conclusionChildNodeNonTerminalNode = conclusionChildNode.isNonTerminalNode();
|
|
146
230
|
if (conclusionChildNodeNonTerminalNode) {
|
|
147
231
|
var conclusionNonTerminalChildNode = conclusionChildNode, conclusionNonTerminalChildNodeRuleName = conclusionNonTerminalChildNode.getRuleName(), conclusionNonTerminalChildNodeRuleNameMetavariableRuleName = conclusionNonTerminalChildNodeRuleName === _ruleNames.METAVARIABLE_RULE_NAME;
|
|
148
232
|
if (conclusionNonTerminalChildNodeRuleNameMetavariableRuleName) {
|
|
149
|
-
var conclusionMetavariableNode = conclusionNonTerminalChildNode, nonTerminalNode = metastatementNode, childNodes = nonTerminalNode.getChildNodes(), nodes = childNodes,
|
|
150
|
-
conclusionMetastatementNodeMatches =
|
|
233
|
+
var conclusionMetavariableNode = conclusionNonTerminalChildNode, nonTerminalNode = metastatementNode, childNodes = nonTerminalNode.getChildNodes(), nodes = childNodes, conclusionMetavariableNodeMatches = metaMatchConclusionMetavariableNode(conclusionMetavariableNode, nodes, metaSubstitutions);
|
|
234
|
+
conclusionMetastatementNodeMatches = conclusionMetavariableNodeMatches; ///
|
|
151
235
|
}
|
|
152
236
|
}
|
|
153
237
|
}
|
|
154
238
|
return conclusionMetastatementNodeMatches;
|
|
155
239
|
}
|
|
156
240
|
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25jbHVzaW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCIuL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgbm9kZUFzU3RyaW5nIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgbWV0YXZhcmlhYmxlTmFtZUZyb21NZXRhdmFyaWFibGVOb2RlIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBtZXRhc3RhdGVtZW50Tm9kZUZyb21NZXRhc3RhdGVtZW50U3RyaW5nIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgTUVUQVZBUklBQkxFX1JVTEVfTkFNRSwgTUVUQVNUQVRFTUVOVF9SVUxFX05BTUUgfSBmcm9tIFwiLi9ydWxlTmFtZXNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29uY2x1c2lvbiB7XG4gIGNvbnN0cnVjdG9yKG1ldGFzdGF0ZW1lbnROb2RlKSB7XG4gICAgdGhpcy5tZXRhc3RhdGVtZW50Tm9kZSA9IG1ldGFzdGF0ZW1lbnROb2RlO1xuICB9XG5cbiAgZ2V0TWV0YXN0YXRlbWVudE5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0YXN0YXRlbWVudE5vZGU7XG4gIH1cblxuICBtYXRjaE1ldGFzdGF0ZW1lbnROb2RlKG1ldGFzdGF0ZW1lbnROb2RlLCBtZXRhU3Vic3RpdHV0aW9ucykge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG1ldGFzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZSA9IHRoaXMubWV0YXN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IG1hdGNoQ29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZShjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlLCBub25UZXJtaW5hbE5vZGUsIG1ldGFTdWJzdGl0dXRpb25zKSxcbiAgICAgICAgICBtZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXMgPSBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlczsgLy8vXG5cbiAgICByZXR1cm4gbWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IG1ldGFzdGF0ZW1lbnRTdHJpbmcgPSBub2RlQXNTdHJpbmcodGhpcy5tZXRhc3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgbWV0YXN0YXRlbWVudCA9IG1ldGFzdGF0ZW1lbnRTdHJpbmcsICAvLy9cbiAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAgbWV0YXN0YXRlbWVudFxuICAgICAgICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCByZWxlYXNlQ29udGV4dCkge1xuICAgIGNvbnN0IHsgbWV0YXN0YXRlbWVudCB9ID0ganNvbixcbiAgICAgICAgICBtZXRhc3RhdGVtZW50U3RyaW5nID0gbWV0YXN0YXRlbWVudCwgIC8vL1xuICAgICAgICAgIG1ldGFzdGF0ZW1lbnROb2RlID0gbWV0YXN0YXRlbWVudE5vZGVGcm9tTWV0YXN0YXRlbWVudFN0cmluZyhtZXRhc3RhdGVtZW50U3RyaW5nLCByZWxlYXNlQ29udGV4dCksXG4gICAgICAgICAgY29uY2x1c2lvbiA9IG5ldyBDb25jbHVzaW9uKG1ldGFzdGF0ZW1lbnROb2RlKTtcblxuICAgIHJldHVybiBjb25jbHVzaW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21NZXRhc3RhdGVtZW50Tm9kZShtZXRhc3RhdGVtZW50Tm9kZSkge1xuICAgIGNvbnN0IGNvbmNsdXNpb24gPSBuZXcgQ29uY2x1c2lvbihtZXRhc3RhdGVtZW50Tm9kZSk7XG5cbiAgICByZXR1cm4gY29uY2x1c2lvbjtcbiAgfVxufVxuXG5mdW5jdGlvbiBtYXRjaENvbmNsdXNpb25Ob2RlKGNvbmNsdXNpb25Ob2RlLCBub2RlLCBtZXRhU3Vic3RpdHV0aW9ucykge1xuICBsZXQgY29uY2x1c2lvbk5vZGVNYXRjaGVzID0gZmFsc2U7XG5cbiAgY29uc3Qgbm9kZVRlcm1pbmFsTm9kZSA9IG5vZGUuaXNUZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgcnVsZU5vZGVUZXJtaW5hbE5vZGUgPSBjb25jbHVzaW9uTm9kZS5pc1Rlcm1pbmFsTm9kZSgpO1xuXG4gIGlmIChub2RlVGVybWluYWxOb2RlID09PSBydWxlTm9kZVRlcm1pbmFsTm9kZSkge1xuICAgIGlmIChub2RlVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCB0ZXJtaW5hbE5vZGUgPSBub2RlLCAgLy8vXG4gICAgICAgICAgICBjb25jbHVzaW9uVGVybWluYWxOb2RlID0gY29uY2x1c2lvbk5vZGUsICAvLy9cbiAgICAgICAgICAgIGNvbmNsdXNpb25UZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hDb25jbHVzaW9uVGVybWluYWxOb2RlKGNvbmNsdXNpb25UZXJtaW5hbE5vZGUsIHRlcm1pbmFsTm9kZSwgbWV0YVN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICBjb25jbHVzaW9uTm9kZU1hdGNoZXMgPSBjb25jbHVzaW9uVGVybWluYWxOb2RlTWF0Y2hlczsgIC8vL1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBub2RlLCAvLy9cbiAgICAgICAgICAgIGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUgPSBjb25jbHVzaW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBtYXRjaENvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUoY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZSwgbm9uVGVybWluYWxOb2RlLCBtZXRhU3Vic3RpdHV0aW9ucyk7XG5cbiAgICAgIGNvbmNsdXNpb25Ob2RlTWF0Y2hlcyA9IGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVNYXRjaGVzOyAvLy9cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29uY2x1c2lvbk5vZGVNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaENvbmNsdXNpb25Ob2Rlcyhjb25jbHVzaW9uTm9kZXMsIG5vZGVzLCBtZXRhU3Vic3RpdHV0aW9ucykge1xuICBsZXQgY29uY2x1c2lvbk5vZGVzTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vZGVzTGVuZ3RoID0gbm9kZXMubGVuZ3RoLFxuICAgICAgICBjb25jbHVzaW9uTm9kZXNMZW5ndGggPSBjb25jbHVzaW9uTm9kZXMubGVuZ3RoO1xuXG4gIGlmIChub2Rlc0xlbmd0aCA9PT0gY29uY2x1c2lvbk5vZGVzTGVuZ3RoKSB7XG4gICAgY29uY2x1c2lvbk5vZGVzTWF0Y2hlcyA9IG5vZGVzLmV2ZXJ5KChub2RlLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgY29uY2x1c2lvbk5vZGUgPSBjb25jbHVzaW9uTm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgY29uY2x1c2lvbk5vZGVNYXRjaGVzID0gbWF0Y2hDb25jbHVzaW9uTm9kZShjb25jbHVzaW9uTm9kZSwgbm9kZSwgbWV0YVN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICBpZiAoY29uY2x1c2lvbk5vZGVNYXRjaGVzKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGNvbmNsdXNpb25Ob2Rlc01hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1hdGNoQ29uY2x1c2lvbk1ldGF2YXJpYWJsZShjb25jbHVzaW9uTWV0YXZhcmlhYmxlTm9kZSwgbm9kZXMsIG1ldGFTdWJzdGl0dXRpb25zKSB7XG4gIGxldCBjb25jbHVzaW9uTWV0YXZhcmlhYmxlTWF0Y2hlcyA9IHRydWU7XG5cbiAgY29uc3QgY29uY2x1c2lvbk1ldGF2YXJpYWJsZU5hbWUgPSBtZXRhdmFyaWFibGVOYW1lRnJvbU1ldGF2YXJpYWJsZU5vZGUoY29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICBtZXRhU3Vic3RpdHV0aW9uID0gbWV0YVN1YnN0aXR1dGlvbnMuZmluZCgobWV0YVN1YnN0aXR1dGlvbikgPT4ge1xuICAgICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5hbWUgPSBtZXRhU3Vic3RpdHV0aW9uLmdldE1ldGF2YXJpYWJsZU5hbWUoKTtcblxuICAgICAgICAgIGlmIChtZXRhdmFyaWFibGVOYW1lID09PSBjb25jbHVzaW9uTWV0YXZhcmlhYmxlTmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KSB8fCBudWxsO1xuXG4gIGlmIChtZXRhU3Vic3RpdHV0aW9uICE9PSBudWxsKSB7XG4gICAgY29uc3QgbWV0YVN1YnN0aXR1dGlvbk5vZGVzTWF0Y2ggPSBtZXRhU3Vic3RpdHV0aW9uLm1hdGNoTm9kZXMobm9kZXMpO1xuXG4gICAgY29uY2x1c2lvbk1ldGF2YXJpYWJsZU1hdGNoZXMgPSBtZXRhU3Vic3RpdHV0aW9uTm9kZXNNYXRjaDsgIC8vL1xuICB9XG5cbiAgcmV0dXJuIGNvbmNsdXNpb25NZXRhdmFyaWFibGVNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaENvbmNsdXNpb25UZXJtaW5hbE5vZGUoY29uY2x1c2lvblRlcm1pbmFsTm9kZSwgdGVybWluYWxOb2RlLCBtZXRhU3Vic3RpdHV0aW9ucykge1xuICBjb25zdCBtYXRjaGVzID0gY29uY2x1c2lvblRlcm1pbmFsTm9kZS5tYXRjaCh0ZXJtaW5hbE5vZGUpLFxuICAgICAgICBjb25jbHVzaW9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IG1hdGNoZXM7ICAvLy9cblxuICByZXR1cm4gY29uY2x1c2lvblRlcm1pbmFsTm9kZU1hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1hdGNoQ29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZShjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlLCBub25UZXJtaW5hbE5vZGUsIG1ldGFTdWJzdGl0dXRpb25zKSB7XG4gIGxldCBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IHJ1bGVOYW1lID0gbm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCksXG4gICAgICAgIGNvbmNsdXNpb25SdWxlTmFtZSA9IGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKTsgLy8vXG5cbiAgaWYgKHJ1bGVOYW1lID09PSBjb25jbHVzaW9uUnVsZU5hbWUpIHtcbiAgICBjb25zdCBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICBjb25jbHVzaW9uQ2hpbGROb2RlcyA9IGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgIG5vZGVzID0gY2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgY29uY2x1c2lvbk5vZGVzID0gY29uY2x1c2lvbkNoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgIGNvbmNsdXNpb25DaGlsZE5vZGVzTWF0Y2hlcyA9IG1hdGNoQ29uY2x1c2lvbk5vZGVzKGNvbmNsdXNpb25Ob2Rlcywgbm9kZXMsIG1ldGFTdWJzdGl0dXRpb25zKTtcblxuICAgIGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVNYXRjaGVzID0gY29uY2x1c2lvbkNoaWxkTm9kZXNNYXRjaGVzOyAvLy9cblxuICAgIGlmICghY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMpIHtcbiAgICAgIGNvbnN0IHJ1bGVOYW1lTWV0YXN0YXRlbWVudFJ1bGVOYW1lID0gKHJ1bGVOYW1lID09PSBNRVRBU1RBVEVNRU5UX1JVTEVfTkFNRSk7XG5cbiAgICAgIGlmIChydWxlTmFtZU1ldGFzdGF0ZW1lbnRSdWxlTmFtZSkge1xuICAgICAgICBjb25zdCBtZXRhc3RhdGVtZW50Tm9kZSA9IG5vblRlcm1pbmFsTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBjb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGUgPSBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlLCAgLy8vXG4gICAgICAgICAgICAgIGNvbmNsdXNpb25NZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXMgPSBtYXRjaENvbmNsdXNpb25NZXRhc3RhdGVtZW50Tm9kZShjb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGUsIG1ldGFzdGF0ZW1lbnROb2RlLCBtZXRhU3Vic3RpdHV0aW9ucyk7XG5cbiAgICAgICAgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBjb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzOyAvLy9cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1hdGNoQ29uY2x1c2lvbk1ldGFzdGF0ZW1lbnROb2RlKGNvbmNsdXNpb25NZXRhc3RhdGVtZW50Tm9kZSwgbWV0YXN0YXRlbWVudE5vZGUsIG1ldGFTdWJzdGl0dXRpb25zKSB7XG4gIGxldCBjb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzID0gZmFsc2U7XG5cbiAgY29uc3QgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZSA9IGNvbmNsdXNpb25NZXRhc3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICBjb25jbHVzaW9uQ2hpbGROb2RlcyA9IGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICBjb25jbHVzaW9uQ2hpbGROb2Rlc0xlbmd0aCA9IGNvbmNsdXNpb25DaGlsZE5vZGVzLmxlbmd0aDtcblxuICBpZiAoY29uY2x1c2lvbkNoaWxkTm9kZXNMZW5ndGggPT09IDEpIHtcbiAgICBjb25zdCBmaXJzdENvbmNsdXNpb25DaGlsZE5vZGUgPSBmaXJzdChjb25jbHVzaW9uQ2hpbGROb2RlcyksXG4gICAgICAgICAgY29uY2x1c2lvbkNoaWxkTm9kZSA9IGZpcnN0Q29uY2x1c2lvbkNoaWxkTm9kZSwgIC8vL1xuICAgICAgICAgIGNvbmNsdXNpb25DaGlsZE5vZGVOb25UZXJtaW5hbE5vZGUgPSBjb25jbHVzaW9uQ2hpbGROb2RlLmlzTm9uVGVybWluYWxOb2RlKCk7XG5cbiAgICBpZiAoY29uY2x1c2lvbkNoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3QgY29uY2x1c2lvbk5vblRlcm1pbmFsQ2hpbGROb2RlID0gY29uY2x1c2lvbkNoaWxkTm9kZSwgIC8vL1xuICAgICAgICAgICAgY29uY2x1c2lvbk5vblRlcm1pbmFsQ2hpbGROb2RlUnVsZU5hbWUgPSBjb25jbHVzaW9uTm9uVGVybWluYWxDaGlsZE5vZGUuZ2V0UnVsZU5hbWUoKSxcbiAgICAgICAgICAgIGNvbmNsdXNpb25Ob25UZXJtaW5hbENoaWxkTm9kZVJ1bGVOYW1lTWV0YXZhcmlhYmxlUnVsZU5hbWUgPSAoY29uY2x1c2lvbk5vblRlcm1pbmFsQ2hpbGROb2RlUnVsZU5hbWUgPT09IE1FVEFWQVJJQUJMRV9SVUxFX05BTUUpO1xuXG4gICAgICBpZiAoY29uY2x1c2lvbk5vblRlcm1pbmFsQ2hpbGROb2RlUnVsZU5hbWVNZXRhdmFyaWFibGVSdWxlTmFtZSkge1xuICAgICAgICBjb25zdCBjb25jbHVzaW9uTWV0YXZhcmlhYmxlTm9kZSA9IGNvbmNsdXNpb25Ob25UZXJtaW5hbENoaWxkTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBub25UZXJtaW5hbE5vZGUgPSBtZXRhc3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICAgICAgICBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgICAgbm9kZXMgPSBjaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICAgICAgY29uY2x1c2lvbk1ldGFWYXJpYWJsZU1hdGNoZXMgPSBtYXRjaENvbmNsdXNpb25NZXRhdmFyaWFibGUoY29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGUsIG5vZGVzLCBtZXRhU3Vic3RpdHV0aW9ucyk7XG5cbiAgICAgICAgY29uY2x1c2lvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IGNvbmNsdXNpb25NZXRhVmFyaWFibGVNYXRjaGVzOyAvLy9cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29uY2x1c2lvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcztcbn1cbiJdLCJuYW1lcyI6WyJDb25jbHVzaW9uIiwibWV0YXN0YXRlbWVudE5vZGUiLCJnZXRNZXRhc3RhdGVtZW50Tm9kZSIsIm1hdGNoTWV0YXN0YXRlbWVudE5vZGUiLCJtZXRhU3Vic3RpdHV0aW9ucyIsIm5vblRlcm1pbmFsTm9kZSIsImNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUiLCJjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyIsIm1hdGNoQ29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZSIsIm1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyIsInRvSlNPTiIsIm1ldGFzdGF0ZW1lbnRTdHJpbmciLCJub2RlQXNTdHJpbmciLCJtZXRhc3RhdGVtZW50IiwianNvbiIsImZyb21KU09OIiwicmVsZWFzZUNvbnRleHQiLCJtZXRhc3RhdGVtZW50Tm9kZUZyb21NZXRhc3RhdGVtZW50U3RyaW5nIiwiY29uY2x1c2lvbiIsImZyb21NZXRhc3RhdGVtZW50Tm9kZSIsIm1hdGNoQ29uY2x1c2lvbk5vZGUiLCJjb25jbHVzaW9uTm9kZSIsIm5vZGUiLCJjb25jbHVzaW9uTm9kZU1hdGNoZXMiLCJub2RlVGVybWluYWxOb2RlIiwiaXNUZXJtaW5hbE5vZGUiLCJydWxlTm9kZVRlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZSIsImNvbmNsdXNpb25UZXJtaW5hbE5vZGUiLCJjb25jbHVzaW9uVGVybWluYWxOb2RlTWF0Y2hlcyIsIm1hdGNoQ29uY2x1c2lvblRlcm1pbmFsTm9kZSIsIm1hdGNoQ29uY2x1c2lvbk5vZGVzIiwiY29uY2x1c2lvbk5vZGVzIiwibm9kZXMiLCJjb25jbHVzaW9uTm9kZXNNYXRjaGVzIiwibm9kZXNMZW5ndGgiLCJsZW5ndGgiLCJjb25jbHVzaW9uTm9kZXNMZW5ndGgiLCJldmVyeSIsImluZGV4IiwibWF0Y2hDb25jbHVzaW9uTWV0YXZhcmlhYmxlIiwiY29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGUiLCJjb25jbHVzaW9uTWV0YXZhcmlhYmxlTWF0Y2hlcyIsImNvbmNsdXNpb25NZXRhdmFyaWFibGVOYW1lIiwibWV0YXZhcmlhYmxlTmFtZUZyb21NZXRhdmFyaWFibGVOb2RlIiwibWV0YVN1YnN0aXR1dGlvbiIsImZpbmQiLCJtZXRhdmFyaWFibGVOYW1lIiwiZ2V0TWV0YXZhcmlhYmxlTmFtZSIsIm1ldGFTdWJzdGl0dXRpb25Ob2Rlc01hdGNoIiwibWF0Y2hOb2RlcyIsIm1hdGNoZXMiLCJtYXRjaCIsInJ1bGVOYW1lIiwiZ2V0UnVsZU5hbWUiLCJjb25jbHVzaW9uUnVsZU5hbWUiLCJjaGlsZE5vZGVzIiwiZ2V0Q2hpbGROb2RlcyIsImNvbmNsdXNpb25DaGlsZE5vZGVzIiwiY29uY2x1c2lvbkNoaWxkTm9kZXNNYXRjaGVzIiwicnVsZU5hbWVNZXRhc3RhdGVtZW50UnVsZU5hbWUiLCJNRVRBU1RBVEVNRU5UX1JVTEVfTkFNRSIsImNvbmNsdXNpb25NZXRhc3RhdGVtZW50Tm9kZSIsImNvbmNsdXNpb25NZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXMiLCJtYXRjaENvbmNsdXNpb25NZXRhc3RhdGVtZW50Tm9kZSIsImNvbmNsdXNpb25DaGlsZE5vZGVzTGVuZ3RoIiwiZmlyc3RDb25jbHVzaW9uQ2hpbGROb2RlIiwiZmlyc3QiLCJjb25jbHVzaW9uQ2hpbGROb2RlIiwiY29uY2x1c2lvbkNoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSIsImlzTm9uVGVybWluYWxOb2RlIiwiY29uY2x1c2lvbk5vblRlcm1pbmFsQ2hpbGROb2RlIiwiY29uY2x1c2lvbk5vblRlcm1pbmFsQ2hpbGROb2RlUnVsZU5hbWUiLCJjb25jbHVzaW9uTm9uVGVybWluYWxDaGlsZE5vZGVSdWxlTmFtZU1ldGF2YXJpYWJsZVJ1bGVOYW1lIiwiTUVUQVZBUklBQkxFX1JVTEVfTkFNRSIsImNvbmNsdXNpb25NZXRhVmFyaWFibGVNYXRjaGVzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQVFxQkE7OztxQkFOQztzQkFDTztxQkFDd0I7eUJBRVc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRWpELElBQUEsQUFBTUEsMkJBNENsQixBQTVDWTthQUFNQSxXQUNQQyxpQkFBaUI7OEJBRFZEO1FBRWpCLElBQUksQ0FBQ0MsaUJBQWlCLEdBQUdBOztpQkFGUkQ7O1lBS25CRSxLQUFBQTttQkFBQUEsU0FBQUEsdUJBQXVCO2dCQUNyQixPQUFPLElBQUksQ0FBQ0QsaUJBQWlCO1lBQy9COzs7WUFFQUUsS0FBQUE7bUJBQUFBLFNBQUFBLHVCQUF1QkYsaUJBQWlCLEVBQUVHLGlCQUFpQixFQUFFO2dCQUMzRCxJQUFNQyxrQkFBa0JKLG1CQUNsQkssNEJBQTRCLElBQUksQ0FBQ0wsaUJBQWlCLEVBQ2xETSxtQ0FBbUNDLCtCQUErQkYsMkJBQTJCRCxpQkFBaUJELG9CQUM5R0ssMkJBQTJCRixrQ0FBa0MsR0FBRztnQkFFdEUsT0FBT0U7WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQSxTQUFTO2dCQUNQLElBQU1DLHNCQUFzQkMsSUFBQUEsb0JBQVksRUFBQyxJQUFJLENBQUNYLGlCQUFpQixHQUN6RFksZ0JBQWdCRixxQkFDaEJHLE9BQU87b0JBQ0xELGVBQUFBO2dCQUNGO2dCQUVOLE9BQU9DO1lBQ1Q7Ozs7WUFFT0MsS0FBQUE7bUJBQVAsU0FBT0EsU0FBU0QsSUFBSSxFQUFFRSxjQUFjLEVBQUU7Z0JBQ3BDLElBQU0sQUFBRUgsZ0JBQWtCQyxLQUFsQkQsZUFDRkYsc0JBQXNCRSxlQUN0Qlosb0JBQW9CZ0IsSUFBQUEsZ0RBQXdDLEVBQUNOLHFCQUFxQkssaUJBQ2xGRSxhQUFhLElBaENGbEIsV0FnQ2lCQztnQkFFbEMsT0FBT2lCO1lBQ1Q7OztZQUVPQyxLQUFBQTttQkFBUCxTQUFPQSxzQkFBc0JsQixpQkFBaUIs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
|
|
241
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25jbHVzaW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCIuL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgbm9kZUFzU3RyaW5nIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgbWV0YXZhcmlhYmxlTmFtZUZyb21NZXRhdmFyaWFibGVOb2RlIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBtZXRhc3RhdGVtZW50Tm9kZUZyb21NZXRhc3RhdGVtZW50U3RyaW5nIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgU1RBVEVNRU5UX1JVTEVfTkFNRSwgTUVUQVNUQVRFTUVOVF9SVUxFX05BTUUsIE1FVEFWQVJJQUJMRV9SVUxFX05BTUUgfSBmcm9tIFwiLi9ydWxlTmFtZXNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29uY2x1c2lvbiB7XG4gIGNvbnN0cnVjdG9yKG1ldGFzdGF0ZW1lbnROb2RlKSB7XG4gICAgdGhpcy5tZXRhc3RhdGVtZW50Tm9kZSA9IG1ldGFzdGF0ZW1lbnROb2RlO1xuICB9XG5cbiAgZ2V0TWV0YXN0YXRlbWVudE5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0YXN0YXRlbWVudE5vZGU7XG4gIH1cblxuICBtYXRjaFN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucykge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlID0gdGhpcy5tZXRhc3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICAgIGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hDb25jbHVzaW9uTm9uVGVybWluYWxOb2RlKGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUsIG5vblRlcm1pbmFsTm9kZSwgc3Vic3RpdHV0aW9ucyksXG4gICAgICAgICAgc3RhdGVtZW50Tm9kZU1hdGNoZXMgPSBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlczsgLy8vXG5cbiAgICByZXR1cm4gc3RhdGVtZW50Tm9kZU1hdGNoZXM7XG4gIH1cblxuICBtYXRjaE1ldGFzdGF0ZW1lbnROb2RlKG1ldGFzdGF0ZW1lbnROb2RlLCBtZXRhU3Vic3RpdHV0aW9ucykge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG1ldGFzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZSA9IHRoaXMubWV0YXN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IG1ldGFNYXRjaENvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUoY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZSwgbm9uVGVybWluYWxOb2RlLCBtZXRhU3Vic3RpdHV0aW9ucyksXG4gICAgICAgICAgbWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzID0gY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXM7IC8vL1xuXG4gICAgcmV0dXJuIG1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcztcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBtZXRhc3RhdGVtZW50U3RyaW5nID0gbm9kZUFzU3RyaW5nKHRoaXMubWV0YXN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIG1ldGFzdGF0ZW1lbnQgPSBtZXRhc3RhdGVtZW50U3RyaW5nLCAgLy8vXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIG1ldGFzdGF0ZW1lbnRcbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgcmVsZWFzZUNvbnRleHQpIHtcbiAgICBjb25zdCB7IG1ldGFzdGF0ZW1lbnQgfSA9IGpzb24sXG4gICAgICAgICAgbWV0YXN0YXRlbWVudFN0cmluZyA9IG1ldGFzdGF0ZW1lbnQsICAvLy9cbiAgICAgICAgICBtZXRhc3RhdGVtZW50Tm9kZSA9IG1ldGFzdGF0ZW1lbnROb2RlRnJvbU1ldGFzdGF0ZW1lbnRTdHJpbmcobWV0YXN0YXRlbWVudFN0cmluZywgcmVsZWFzZUNvbnRleHQpLFxuICAgICAgICAgIGNvbmNsdXNpb24gPSBuZXcgQ29uY2x1c2lvbihtZXRhc3RhdGVtZW50Tm9kZSk7XG5cbiAgICByZXR1cm4gY29uY2x1c2lvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTWV0YXN0YXRlbWVudE5vZGUobWV0YXN0YXRlbWVudE5vZGUpIHtcbiAgICBjb25zdCBjb25jbHVzaW9uID0gbmV3IENvbmNsdXNpb24obWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgcmV0dXJuIGNvbmNsdXNpb247XG4gIH1cbn1cblxuZnVuY3Rpb24gbWF0Y2hDb25jbHVzaW9uTm9kZShjb25jbHVzaW9uTm9kZSwgbm9kZSwgc3Vic3RpdHV0aW9ucykge1xuICBsZXQgY29uY2x1c2lvbk5vZGVNYXRjaGVzID0gZmFsc2U7XG5cbiAgY29uc3Qgbm9kZVRlcm1pbmFsTm9kZSA9IG5vZGUuaXNUZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgcnVsZU5vZGVUZXJtaW5hbE5vZGUgPSBjb25jbHVzaW9uTm9kZS5pc1Rlcm1pbmFsTm9kZSgpO1xuXG4gIGlmIChub2RlVGVybWluYWxOb2RlID09PSBydWxlTm9kZVRlcm1pbmFsTm9kZSkge1xuICAgIGlmIChub2RlVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCB0ZXJtaW5hbE5vZGUgPSBub2RlLCAgLy8vXG4gICAgICAgICAgICBjb25jbHVzaW9uVGVybWluYWxOb2RlID0gY29uY2x1c2lvbk5vZGUsICAvLy9cbiAgICAgICAgICAgIGNvbmNsdXNpb25UZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hDb25jbHVzaW9uVGVybWluYWxOb2RlKGNvbmNsdXNpb25UZXJtaW5hbE5vZGUsIHRlcm1pbmFsTm9kZSwgc3Vic3RpdHV0aW9ucyk7XG5cbiAgICAgIGNvbmNsdXNpb25Ob2RlTWF0Y2hlcyA9IGNvbmNsdXNpb25UZXJtaW5hbE5vZGVNYXRjaGVzOyAgLy8vXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG5vZGUsIC8vL1xuICAgICAgICAgICAgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZSA9IGNvbmNsdXNpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IG1hdGNoQ29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZShjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlLCBub25UZXJtaW5hbE5vZGUsIHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICBjb25jbHVzaW9uTm9kZU1hdGNoZXMgPSBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlczsgLy8vXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNvbmNsdXNpb25Ob2RlTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWF0Y2hDb25jbHVzaW9uTm9kZXMoY29uY2x1c2lvbk5vZGVzLCBub2RlcywgbWV0YVN1YnN0aXR1dGlvbnMpIHtcbiAgbGV0IGNvbmNsdXNpb25Ob2Rlc01hdGNoID0gZmFsc2U7XG5cbiAgY29uc3Qgbm9kZXNMZW5ndGggPSBub2Rlcy5sZW5ndGgsXG4gICAgICAgIGNvbmNsdXNpb25Ob2Rlc0xlbmd0aCA9IGNvbmNsdXNpb25Ob2Rlcy5sZW5ndGg7XG5cbiAgaWYgKG5vZGVzTGVuZ3RoID09PSBjb25jbHVzaW9uTm9kZXNMZW5ndGgpIHtcbiAgICBjb25jbHVzaW9uTm9kZXNNYXRjaCA9IG5vZGVzLmV2ZXJ5KChub2RlLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgY29uY2x1c2lvbk5vZGUgPSBjb25jbHVzaW9uTm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgY29uY2x1c2lvbk5vZGVNYXRjaGVzID0gbWF0Y2hDb25jbHVzaW9uTm9kZShjb25jbHVzaW9uTm9kZSwgbm9kZSwgbWV0YVN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICBpZiAoY29uY2x1c2lvbk5vZGVNYXRjaGVzKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGNvbmNsdXNpb25Ob2Rlc01hdGNoO1xufVxuXG5mdW5jdGlvbiBtYXRjaENvbmNsdXNpb25UZXJtaW5hbE5vZGUoY29uY2x1c2lvblRlcm1pbmFsTm9kZSwgdGVybWluYWxOb2RlLCBzdWJzdGl0dXRpb25zKSB7XG4gIGNvbnN0IG1hdGNoZXMgPSBjb25jbHVzaW9uVGVybWluYWxOb2RlLm1hdGNoKHRlcm1pbmFsTm9kZSksXG4gICAgICAgIGNvbmNsdXNpb25UZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hlczsgIC8vL1xuXG4gIHJldHVybiBjb25jbHVzaW9uVGVybWluYWxOb2RlTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWF0Y2hDb25jbHVzaW9uTm9uVGVybWluYWxOb2RlKGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUsIG5vblRlcm1pbmFsTm9kZSwgc3Vic3RpdHV0aW9ucykge1xuICBsZXQgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBmYWxzZTtcblxuICBjb25zdCBydWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpLFxuICAgICAgICBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lID0gY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpLFxuICAgICAgICBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyA9IGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICBydWxlTmFtZVN0YXRlbWVudFJ1bGVOYW1lID0gKHJ1bGVOYW1lID09PSBTVEFURU1FTlRfUlVMRV9OQU1FKSxcbiAgICAgICAgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lTWV0YXN0YXRlbWVudFJ1bGVOYW1lID0gKGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9PT0gTUVUQVNUQVRFTUVOVF9SVUxFX05BTUUpO1xuXG4gIGlmIChydWxlTmFtZVN0YXRlbWVudFJ1bGVOYW1lICYmIGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVSdWxlTmFtZU1ldGFzdGF0ZW1lbnRSdWxlTmFtZSkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBub25UZXJtaW5hbE5vZGUsICAvLy9cbiAgICAgICAgICBjb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGUgPSBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlLCAgLy8vXG4gICAgICAgICAgY29uY2x1c2lvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IG1hdGNoQ29uY2x1c2lvbk1ldGFzdGF0ZW1lbnROb2RlKGNvbmNsdXNpb25NZXRhc3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucyk7XG5cbiAgICBpZiAoY29uY2x1c2lvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcykge1xuICAgICAgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSB0cnVlOyAvLy9cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgbm9kZXMgPSBjaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICAgIGNvbmNsdXNpb25Ob2RlcyA9IGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICAgIGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzTWF0Y2hlcyA9IG1hdGNoQ29uY2x1c2lvbk5vZGVzKGNvbmNsdXNpb25Ob2Rlcywgbm9kZXMsIHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzTWF0Y2hlczsgLy8vXG4gICAgfVxuICB9IGVsc2UgaWYgKHJ1bGVOYW1lID09PSBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlUnVsZU5hbWUpIHtcbiAgICBjb25zdCBub2RlcyA9IGNoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgIGNvbmNsdXNpb25Ob2RlcyA9IGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlQ2hpbGROb2Rlc01hdGNoZXMgPSBtYXRjaENvbmNsdXNpb25Ob2Rlcyhjb25jbHVzaW9uTm9kZXMsIG5vZGVzLCBzdWJzdGl0dXRpb25zKTtcblxuICAgIGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVNYXRjaGVzID0gY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXNNYXRjaGVzOyAvLy9cbiAgfVxuXG4gIHJldHVybiBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWF0Y2hDb25jbHVzaW9uTWV0YXZhcmlhYmxlTm9kZShjb25jbHVzaW9uTWV0YXZhcmlhYmxlTm9kZSwgbm9kZXMsIHN1YnN0aXR1dGlvbnMpIHtcbiAgbGV0IGNvbmNsdXNpb25NZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IHRydWU7XG5cbiAgY29uc3QgY29uY2x1c2lvbk1ldGF2YXJpYWJsZU5hbWUgPSBtZXRhdmFyaWFibGVOYW1lRnJvbU1ldGF2YXJpYWJsZU5vZGUoY29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICBzdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb25zLmZpbmQoKHN1YnN0aXR1dGlvbikgPT4ge1xuICAgICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5hbWUgPSBzdWJzdGl0dXRpb24uZ2V0TWV0YXZhcmlhYmxlTmFtZSgpO1xuXG4gICAgICAgICAgaWYgKG1ldGF2YXJpYWJsZU5hbWUgPT09IGNvbmNsdXNpb25NZXRhdmFyaWFibGVOYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pIHx8IG51bGw7XG5cbiAgaWYgKHN1YnN0aXR1dGlvbiAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN1YnN0aXR1dGlvbk5vZGVzTWF0Y2ggPSBzdWJzdGl0dXRpb24ubWF0Y2hOb2Rlcyhub2Rlcyk7XG5cbiAgICBjb25jbHVzaW9uTWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMgPSBzdWJzdGl0dXRpb25Ob2Rlc01hdGNoOyAgLy8vXG4gIH1cblxuICByZXR1cm4gY29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaENvbmNsdXNpb25NZXRhc3RhdGVtZW50Tm9kZShjb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGUsIHN0YXRlbWVudE5vZGUsIHN1YnN0aXR1dGlvbnMpIHtcbiAgbGV0IGNvbmNsdXNpb25NZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXMgPSBmYWxzZTtcblxuICBjb25zdCBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlID0gY29uY2x1c2lvbk1ldGFzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgIGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzID0gY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgIGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzTGVuZ3RoID0gY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMubGVuZ3RoO1xuXG4gIGlmIChjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlQ2hpbGROb2Rlc0xlbmd0aCA9PT0gMSkge1xuICAgIGNvbnN0IGZpcnN0Q29uY2x1c2lvbkNoaWxkTm9kZSA9IGZpcnN0KGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzKSxcbiAgICAgICAgICBjb25jbHVzaW9uQ2hpbGROb2RlID0gZmlyc3RDb25jbHVzaW9uQ2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgY29uY2x1c2lvbkNoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSA9IGNvbmNsdXNpb25DaGlsZE5vZGUuaXNOb25UZXJtaW5hbE5vZGUoKTtcblxuICAgIGlmIChjb25jbHVzaW9uQ2hpbGROb2RlTm9uVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCBjb25jbHVzaW9uTm9uVGVybWluYWxDaGlsZE5vZGUgPSBjb25jbHVzaW9uQ2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICBjb25jbHVzaW9uTm9uVGVybWluYWxDaGlsZE5vZGVSdWxlTmFtZSA9IGNvbmNsdXNpb25Ob25UZXJtaW5hbENoaWxkTm9kZS5nZXRSdWxlTmFtZSgpLFxuICAgICAgICAgICAgY29uY2x1c2lvbk5vblRlcm1pbmFsQ2hpbGROb2RlUnVsZU5hbWVNZXRhdmFyaWFibGVSdWxlTmFtZSA9IChjb25jbHVzaW9uTm9uVGVybWluYWxDaGlsZE5vZGVSdWxlTmFtZSA9PT0gTUVUQVZBUklBQkxFX1JVTEVfTkFNRSk7XG5cbiAgICAgIGlmIChjb25jbHVzaW9uTm9uVGVybWluYWxDaGlsZE5vZGVSdWxlTmFtZU1ldGF2YXJpYWJsZVJ1bGVOYW1lKSB7XG4gICAgICAgIGNvbnN0IGNvbmNsdXNpb25NZXRhdmFyaWFibGVOb2RlID0gY29uY2x1c2lvbk5vblRlcm1pbmFsQ2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZSA9IHN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICAgICAgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgICAgIG5vZGVzID0gY2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgICAgIGNvbmNsdXNpb25NZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IG1hdGNoQ29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGUoY29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGUsIG5vZGVzLCBzdWJzdGl0dXRpb25zKTtcblxuICAgICAgICBjb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzID0gY29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzOyAvLy9cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29uY2x1c2lvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWV0YU1hdGNoQ29uY2x1c2lvbk5vZGUoY29uY2x1c2lvbk5vZGUsIG5vZGUsIG1ldGFTdWJzdGl0dXRpb25zKSB7XG4gIGxldCBjb25jbHVzaW9uTm9kZU1hdGNoZXMgPSBmYWxzZTtcblxuICBjb25zdCBub2RlVGVybWluYWxOb2RlID0gbm9kZS5pc1Rlcm1pbmFsTm9kZSgpLFxuICAgICAgICBydWxlTm9kZVRlcm1pbmFsTm9kZSA9IGNvbmNsdXNpb25Ob2RlLmlzVGVybWluYWxOb2RlKCk7XG5cbiAgaWYgKG5vZGVUZXJtaW5hbE5vZGUgPT09IHJ1bGVOb2RlVGVybWluYWxOb2RlKSB7XG4gICAgaWYgKG5vZGVUZXJtaW5hbE5vZGUpIHtcbiAgICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IG5vZGUsICAvLy9cbiAgICAgICAgICAgIGNvbmNsdXNpb25UZXJtaW5hbE5vZGUgPSBjb25jbHVzaW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgY29uY2x1c2lvblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBtZXRhTWF0Y2hDb25jbHVzaW9uVGVybWluYWxOb2RlKGNvbmNsdXNpb25UZXJtaW5hbE5vZGUsIHRlcm1pbmFsTm9kZSwgbWV0YVN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICBjb25jbHVzaW9uTm9kZU1hdGNoZXMgPSBjb25jbHVzaW9uVGVybWluYWxOb2RlTWF0Y2hlczsgIC8vL1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBub2RlLCAvLy9cbiAgICAgICAgICAgIGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUgPSBjb25jbHVzaW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBtZXRhTWF0Y2hDb25jbHVzaW9uTm9uVGVybWluYWxOb2RlKGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUsIG5vblRlcm1pbmFsTm9kZSwgbWV0YVN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICBjb25jbHVzaW9uTm9kZU1hdGNoZXMgPSBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlczsgLy8vXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNvbmNsdXNpb25Ob2RlTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWV0YU1hdGNoQ29uY2x1c2lvbk5vZGVzKGNvbmNsdXNpb25Ob2Rlcywgbm9kZXMsIG1ldGFTdWJzdGl0dXRpb25zKSB7XG4gIGxldCBjb25jbHVzaW9uTm9kZXNNYXRjaCA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vZGVzTGVuZ3RoID0gbm9kZXMubGVuZ3RoLFxuICAgICAgICBjb25jbHVzaW9uTm9kZXNMZW5ndGggPSBjb25jbHVzaW9uTm9kZXMubGVuZ3RoO1xuXG4gIGlmIChub2Rlc0xlbmd0aCA9PT0gY29uY2x1c2lvbk5vZGVzTGVuZ3RoKSB7XG4gICAgY29uY2x1c2lvbk5vZGVzTWF0Y2ggPSBub2Rlcy5ldmVyeSgobm9kZSwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGNvbmNsdXNpb25Ob2RlID0gY29uY2x1c2lvbk5vZGVzW2luZGV4XSxcbiAgICAgICAgICAgIGNvbmNsdXNpb25Ob2RlTWF0Y2hlcyA9IG1ldGFNYXRjaENvbmNsdXNpb25Ob2RlKGNvbmNsdXNpb25Ob2RlLCBub2RlLCBtZXRhU3Vic3RpdHV0aW9ucyk7XG5cbiAgICAgIGlmIChjb25jbHVzaW9uTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gY29uY2x1c2lvbk5vZGVzTWF0Y2g7XG59XG5cbmZ1bmN0aW9uIG1ldGFNYXRjaENvbmNsdXNpb25UZXJtaW5hbE5vZGUoY29uY2x1c2lvblRlcm1pbmFsTm9kZSwgdGVybWluYWxOb2RlLCBtZXRhU3Vic3RpdHV0aW9ucykge1xuICBjb25zdCBtYXRjaGVzID0gY29uY2x1c2lvblRlcm1pbmFsTm9kZS5tYXRjaCh0ZXJtaW5hbE5vZGUpLFxuICAgICAgICBjb25jbHVzaW9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IG1hdGNoZXM7ICAvLy9cblxuICByZXR1cm4gY29uY2x1c2lvblRlcm1pbmFsTm9kZU1hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1ldGFNYXRjaENvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUoY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZSwgbm9uVGVybWluYWxOb2RlLCBtZXRhU3Vic3RpdHV0aW9ucykge1xuICBsZXQgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBmYWxzZTtcblxuICBjb25zdCBydWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpLFxuICAgICAgICBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPSBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCk7XG5cbiAgaWYgKHJ1bGVOYW1lID09PSBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlUnVsZU5hbWUpIHtcbiAgICBjb25zdCBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyA9IGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgIG5vZGVzID0gY2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgY29uY2x1c2lvbk5vZGVzID0gY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgIGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzTWF0Y2hlcyA9IG1ldGFNYXRjaENvbmNsdXNpb25Ob2Rlcyhjb25jbHVzaW9uTm9kZXMsIG5vZGVzLCBtZXRhU3Vic3RpdHV0aW9ucyk7XG5cbiAgICBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzTWF0Y2hlczsgLy8vXG5cbiAgICBpZiAoIWNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVNYXRjaGVzKSB7XG4gICAgICBjb25zdCBydWxlTmFtZU1ldGFzdGF0ZW1lbnRSdWxlTmFtZSA9IChydWxlTmFtZSA9PT0gTUVUQVNUQVRFTUVOVF9SVUxFX05BTUUpO1xuXG4gICAgICBpZiAocnVsZU5hbWVNZXRhc3RhdGVtZW50UnVsZU5hbWUpIHtcbiAgICAgICAgY29uc3QgbWV0YXN0YXRlbWVudE5vZGUgPSBub25UZXJtaW5hbE5vZGUsICAvLy9cbiAgICAgICAgICAgICAgY29uY2x1c2lvbk1ldGFzdGF0ZW1lbnROb2RlID0gY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBjb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzID0gbWV0YU1hdGNoQ29uY2x1c2lvbk1ldGFzdGF0ZW1lbnROb2RlKGNvbmNsdXNpb25NZXRhc3RhdGVtZW50Tm9kZSwgbWV0YXN0YXRlbWVudE5vZGUsIG1ldGFTdWJzdGl0dXRpb25zKTtcblxuICAgICAgICBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IGNvbmNsdXNpb25NZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXM7IC8vL1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWV0YU1hdGNoQ29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGUoY29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGUsIG5vZGVzLCBtZXRhU3Vic3RpdHV0aW9ucykge1xuICBsZXQgY29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gdHJ1ZTtcblxuICBjb25zdCBjb25jbHVzaW9uTWV0YXZhcmlhYmxlTmFtZSA9IG1ldGF2YXJpYWJsZU5hbWVGcm9tTWV0YXZhcmlhYmxlTm9kZShjb25jbHVzaW9uTWV0YXZhcmlhYmxlTm9kZSksXG4gICAgICAgIG1ldGFTdWJzdGl0dXRpb24gPSBtZXRhU3Vic3RpdHV0aW9ucy5maW5kKChtZXRhU3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgICBjb25zdCBtZXRhdmFyaWFibGVOYW1lID0gbWV0YVN1YnN0aXR1dGlvbi5nZXRNZXRhdmFyaWFibGVOYW1lKCk7XG5cbiAgICAgIGlmIChtZXRhdmFyaWFibGVOYW1lID09PSBjb25jbHVzaW9uTWV0YXZhcmlhYmxlTmFtZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KSB8fCBudWxsO1xuXG4gIGlmIChtZXRhU3Vic3RpdHV0aW9uICE9PSBudWxsKSB7XG4gICAgY29uc3QgbWV0YVN1YnN0aXR1dGlvbk5vZGVzTWF0Y2ggPSBtZXRhU3Vic3RpdHV0aW9uLm1hdGNoTm9kZXMobm9kZXMpO1xuXG4gICAgY29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gbWV0YVN1YnN0aXR1dGlvbk5vZGVzTWF0Y2g7ICAvLy9cbiAgfVxuXG4gIHJldHVybiBjb25jbHVzaW9uTWV0YXZhcmlhYmxlTm9kZU1hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1ldGFNYXRjaENvbmNsdXNpb25NZXRhc3RhdGVtZW50Tm9kZShjb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGUsIG1ldGFzdGF0ZW1lbnROb2RlLCBtZXRhU3Vic3RpdHV0aW9ucykge1xuICBsZXQgY29uY2x1c2lvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUgPSBjb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMgPSBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXNMZW5ndGggPSBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlQ2hpbGROb2Rlcy5sZW5ndGg7XG5cbiAgaWYgKGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzTGVuZ3RoID09PSAxKSB7XG4gICAgY29uc3QgZmlyc3RDb25jbHVzaW9uQ2hpbGROb2RlID0gZmlyc3QoY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMpLFxuICAgICAgICAgIGNvbmNsdXNpb25DaGlsZE5vZGUgPSBmaXJzdENvbmNsdXNpb25DaGlsZE5vZGUsICAvLy9cbiAgICAgICAgICBjb25jbHVzaW9uQ2hpbGROb2RlTm9uVGVybWluYWxOb2RlID0gY29uY2x1c2lvbkNoaWxkTm9kZS5pc05vblRlcm1pbmFsTm9kZSgpO1xuXG4gICAgaWYgKGNvbmNsdXNpb25DaGlsZE5vZGVOb25UZXJtaW5hbE5vZGUpIHtcbiAgICAgIGNvbnN0IGNvbmNsdXNpb25Ob25UZXJtaW5hbENoaWxkTm9kZSA9IGNvbmNsdXNpb25DaGlsZE5vZGUsICAvLy9cbiAgICAgICAgICAgIGNvbmNsdXNpb25Ob25UZXJtaW5hbENoaWxkTm9kZVJ1bGVOYW1lID0gY29uY2x1c2lvbk5vblRlcm1pbmFsQ2hpbGROb2RlLmdldFJ1bGVOYW1lKCksXG4gICAgICAgICAgICBjb25jbHVzaW9uTm9uVGVybWluYWxDaGlsZE5vZGVSdWxlTmFtZU1ldGF2YXJpYWJsZVJ1bGVOYW1lID0gKGNvbmNsdXNpb25Ob25UZXJtaW5hbENoaWxkTm9kZVJ1bGVOYW1lID09PSBNRVRBVkFSSUFCTEVfUlVMRV9OQU1FKTtcblxuICAgICAgaWYgKGNvbmNsdXNpb25Ob25UZXJtaW5hbENoaWxkTm9kZVJ1bGVOYW1lTWV0YXZhcmlhYmxlUnVsZU5hbWUpIHtcbiAgICAgICAgY29uc3QgY29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGUgPSBjb25jbHVzaW9uTm9uVGVybWluYWxDaGlsZE5vZGUsICAvLy9cbiAgICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlID0gbWV0YXN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICAgICAgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgICAgIG5vZGVzID0gY2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgICAgIGNvbmNsdXNpb25NZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IG1ldGFNYXRjaENvbmNsdXNpb25NZXRhdmFyaWFibGVOb2RlKGNvbmNsdXNpb25NZXRhdmFyaWFibGVOb2RlLCBub2RlcywgbWV0YVN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICAgIGNvbmNsdXNpb25NZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXMgPSBjb25jbHVzaW9uTWV0YXZhcmlhYmxlTm9kZU1hdGNoZXM7IC8vL1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzO1xufVxuIl0sIm5hbWVzIjpbIkNvbmNsdXNpb24iLCJtZXRhc3RhdGVtZW50Tm9kZSIsImdldE1ldGFzdGF0ZW1lbnROb2RlIiwibWF0Y2hTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Tm9kZSIsInN1YnN0aXR1dGlvbnMiLCJub25UZXJtaW5hbE5vZGUiLCJjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlIiwiY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMiLCJtYXRjaENvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUiLCJzdGF0ZW1lbnROb2RlTWF0Y2hlcyIsIm1hdGNoTWV0YXN0YXRlbWVudE5vZGUiLCJtZXRhU3Vic3RpdHV0aW9ucyIsIm1ldGFNYXRjaENvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUiLCJtZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXMiLCJ0b0pTT04iLCJtZXRhc3RhdGVtZW50U3RyaW5nIiwibm9kZUFzU3RyaW5nIiwibWV0YXN0YXRlbWVudCIsImpzb24iLCJmcm9tSlNPTiIsInJlbGVhc2VDb250ZXh0IiwibWV0YXN0YXRlbWVudE5vZGVGcm9tTWV0YXN0YXRlbWVudFN0cmluZyIsImNvbmNsdXNpb24iLCJmcm9tTWV0YXN0YXRlbWVudE5vZGUiLCJtYXRjaENvbmNsdXNpb25Ob2RlIiwiY29uY2x1c2lvbk5vZGUiLCJub2RlIiwiY29uY2x1c2lvbk5vZGVNYXRjaGVzIiwibm9kZVRlcm1pbmFsTm9kZSIsImlzVGVybWluYWxOb2RlIiwicnVsZU5vZGVUZXJtaW5hbE5vZGUiLCJ0ZXJtaW5hbE5vZGUiLCJjb25jbHVzaW9uVGVybWluYWxOb2RlIiwiY29uY2x1c2lvblRlcm1pbmFsTm9kZU1hdGNoZXMiLCJtYXRjaENvbmNsdXNpb25UZXJtaW5hbE5vZGUiLCJtYXRjaENvbmNsdXNpb25Ob2RlcyIsImNvbmNsdXNpb25Ob2RlcyIsIm5vZGVzIiwiY29uY2x1c2lvbk5vZGVzTWF0Y2giLCJub2Rlc0xlbmd0aCIsImxlbmd0aCIsImNvbmNsdXNpb25Ob2Rlc0xlbmd0aCIsImV2ZXJ5IiwiaW5kZXgiLCJtYXRjaGVzIiwibWF0Y2giLCJydWxlTmFtZSIsImdldFJ1bGVOYW1lIiwiY2hpbGROb2RlcyIsImdldENoaWxkTm9kZXMiLCJjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlUnVsZU5hbWUiLCJjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyIsInJ1bGVOYW1lU3RhdGVtZW50UnVsZU5hbWUiLCJTVEFURU1FTlRfUlVMRV9OQU1FIiwiY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lTWV0YXN0YXRlbWVudFJ1bGVOYW1lIiwiTUVUQVNUQVRFTUVOVF9SVUxFX05BTUUiLCJjb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGUiLCJjb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzIiwibWF0Y2hDb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGUiLCJjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlQ2hpbGROb2Rlc01hdGNoZXMiLCJtYXRjaENvbmNsdXNpb25NZXRhdmFyaWFibGVOb2RlIiwiY29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGUiLCJjb25jbHVzaW9uTWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMiLCJjb25jbHVzaW9uTWV0YXZhcmlhYmxlTmFtZSIsIm1ldGF2YXJpYWJsZU5hbWVGcm9tTWV0YXZhcmlhYmxlTm9kZSIsInN1YnN0aXR1dGlvbiIsImZpbmQiLCJtZXRhdmFyaWFibGVOYW1lIiwiZ2V0TWV0YXZhcmlhYmxlTmFtZSIsInN1YnN0aXR1dGlvbk5vZGVzTWF0Y2giLCJtYXRjaE5vZGVzIiwiY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXNMZW5ndGgiLCJmaXJzdENvbmNsdXNpb25DaGlsZE5vZGUiLCJmaXJzdCIsImNvbmNsdXNpb25DaGlsZE5vZGUiLCJjb25jbHVzaW9uQ2hpbGROb2RlTm9uVGVybWluYWxOb2RlIiwiaXNOb25UZXJtaW5hbE5vZGUiLCJjb25jbHVzaW9uTm9uVGVybWluYWxDaGlsZE5vZGUiLCJjb25jbHVzaW9uTm9uVGVybWluYWxDaGlsZE5vZGVSdWxlTmFtZSIsImNvbmNsdXNpb25Ob25UZXJtaW5hbENoaWxkTm9kZVJ1bGVOYW1lTWV0YXZhcmlhYmxlUnVsZU5hbWUiLCJNRVRBVkFSSUFCTEVfUlVMRV9OQU1FIiwibWV0YU1hdGNoQ29uY2x1c2lvbk5vZGUiLCJtZXRhTWF0Y2hDb25jbHVzaW9uVGVybWluYWxOb2RlIiwibWV0YU1hdGNoQ29uY2x1c2lvbk5vZGVzIiwicnVsZU5hbWVNZXRhc3RhdGVtZW50UnVsZU5hbWUiLCJtZXRhTWF0Y2hDb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGUiLCJtZXRhTWF0Y2hDb25jbHVzaW9uTWV0YXZhcmlhYmxlTm9kZSIsIm1ldGFTdWJzdGl0dXRpb24iLCJtZXRhU3Vic3RpdHV0aW9uTm9kZXNNYXRjaCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFRcUJBOzs7cUJBTkM7c0JBQ087cUJBQ3dCO3lCQUVnQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFdEUsSUFBQSxBQUFNQSwyQkFxRGxCLEFBckRZO2FBQU1BLFdBQ1BDLGlCQUFpQjs4QkFEVkQ7UUFFakIsSUFBSSxDQUFDQyxpQkFBaUIsR0FBR0E7O2lCQUZSRDs7WUFLbkJFLEtBQUFBO21CQUFBQSxTQUFBQSx1QkFBdUI7Z0JBQ3JCLE9BQU8sSUFBSSxDQUFDRCxpQkFBaUI7WUFDL0I7OztZQUVBRSxLQUFBQTttQkFBQUEsU0FBQUEsbUJBQW1CQyxhQUFhLEVBQUVDLGFBQWEsRUFBRTtnQkFDL0MsSUFBTUMsa0JBQWtCRixlQUNsQkcsNEJBQTRCLElBQUksQ0FBQ04saUJBQWlCLEVBQ2xETyxtQ0FBbUNDLCtCQUErQkYsMkJBQTJCRCxpQkFBaUJELGdCQUM5R0ssdUJBQXVCRixrQ0FBa0MsR0FBRztnQkFFbEUsT0FBT0U7WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQSx1QkFBdUJWLGlCQUFpQixFQUFFVyxpQkFBaUIsRUFBRTtnQkFDM0QsSUFBTU4sa0JBQWtCTCxtQkFDbEJNLDRCQUE0QixJQUFJLENBQUNOLGlCQUFpQixFQUNsRE8sbUNBQW1DSyxtQ0FBbUNOLDJCQUEyQkQsaUJBQWlCTSxvQkFDbEhFLDJCQUEyQk4sa0NBQWtDLEdBQUc7Z0JBRXRFLE9BQU9NO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsU0FBUztnQkFDUCxJQUFNQyxzQkFBc0JDLElBQUFBLG9CQUFZLEVBQUMsSUFBSSxDQUFDaEIsaUJBQWlCLEdBQ3pEaUIsZ0JBQWdCRixxQkFDaEJHLE9BQU87b0JBQ0xELGVBQUFBO2dCQUNGO2dCQUVOLE9BQU9D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
|
package/lib/metaSubstitution.js
CHANGED
|
@@ -51,13 +51,13 @@ var MetaSubstitution = /*#__PURE__*/ function() {
|
|
|
51
51
|
key: "matchNodes",
|
|
52
52
|
value: function matchNodes(nodes) {
|
|
53
53
|
var matches;
|
|
54
|
-
var nodesA = this.nodes, nodesB = nodes,
|
|
55
|
-
matches =
|
|
54
|
+
var nodesA = this.nodes, nodesB = nodes, nodesMatch = (0, _node.matchNodes)(nodesA, nodesB);
|
|
55
|
+
matches = nodesMatch; ///
|
|
56
56
|
if (!matches) {
|
|
57
57
|
var childNodes = nodes, bracketedChildNode = (0, _node.bracketedChildNodeFromChildNodes)(childNodes);
|
|
58
58
|
if (bracketedChildNode !== null) {
|
|
59
|
-
var nonTerminalNode = bracketedChildNode, childNodes1 = nonTerminalNode.getChildNodes(), nodesB1 = childNodes1,
|
|
60
|
-
matches =
|
|
59
|
+
var nonTerminalNode = bracketedChildNode, childNodes1 = nonTerminalNode.getChildNodes(), nodesB1 = childNodes1, nodesMatch1 = (0, _node.matchNodes)(nodesA, nodesB1);
|
|
60
|
+
matches = nodesMatch1; ///
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
return matches;
|
|
@@ -80,4 +80,4 @@ var MetaSubstitution = /*#__PURE__*/ function() {
|
|
|
80
80
|
return MetaSubstitution;
|
|
81
81
|
}();
|
|
82
82
|
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tZXRhU3Vic3RpdHV0aW9uLmpzIiwiPDxqc3gtY29uZmlnLXByYWdtYS5qcz4+
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tZXRhU3Vic3RpdHV0aW9uLmpzIiwiPDxqc3gtY29uZmlnLXByYWdtYS5qcz4+Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBtYXRjaE5vZGVzLCBicmFja2V0ZWRDaGlsZE5vZGVGcm9tQ2hpbGROb2RlcyB9IGZyb20gXCIuL3V0aWxpdGllcy9ub2RlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldGFTdWJzdGl0dXRpb24ge1xuICBjb25zdHJ1Y3RvcihtZXRhdmFyaWFibGVOYW1lLCBub2Rlcykge1xuICAgIHRoaXMubWV0YXZhcmlhYmxlTmFtZSA9IG1ldGF2YXJpYWJsZU5hbWU7XG4gICAgdGhpcy5ub2RlcyA9IG5vZGVzO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlTmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRhdmFyaWFibGVOYW1lO1xuICB9XG5cbiAgZ2V0Tm9kZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZXM7XG4gIH1cblxuICBtYXRjaE5vZGVzKG5vZGVzKSB7XG4gICAgbGV0IG1hdGNoZXM7XG5cbiAgICBjb25zdCBub2Rlc0EgPSB0aGlzLm5vZGVzLCAgLy8vXG4gICAgICAgICAgbm9kZXNCID0gbm9kZXMsXG4gICAgICAgICAgbm9kZXNNYXRjaCA9IG1hdGNoTm9kZXMobm9kZXNBLCBub2Rlc0IpO1xuXG4gICAgbWF0Y2hlcyA9IG5vZGVzTWF0Y2g7ICAvLy9cblxuICAgIGlmICghbWF0Y2hlcykge1xuICAgICAgY29uc3QgY2hpbGROb2RlcyA9IG5vZGVzLCAvLy9cbiAgICAgICAgICAgIGJyYWNrZXRlZENoaWxkTm9kZSA9IGJyYWNrZXRlZENoaWxkTm9kZUZyb21DaGlsZE5vZGVzKGNoaWxkTm9kZXMpO1xuXG4gICAgICBpZiAoYnJhY2tldGVkQ2hpbGROb2RlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IGJyYWNrZXRlZENoaWxkTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgICAgbm9kZXNCID0gY2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgICAgIG5vZGVzTWF0Y2ggPSBtYXRjaE5vZGVzKG5vZGVzQSwgbm9kZXNCKTtcblxuICAgICAgICBtYXRjaGVzID0gbm9kZXNNYXRjaDsgLy8vXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hdGNoZXM7XG4gIH1cblxuICBzdGF0aWMgZnJvbU1ldGF2YXJpYWJsZU5hbWVBbmROb2RlcyhtZXRhdmFyaWFibGVOYW1lLCBub2Rlcykge1xuICAgIGNvbnN0IGJyYWNrZXRlZENoaWxkTm9kZSA9IGJyYWNrZXRlZENoaWxkTm9kZUZyb21DaGlsZE5vZGVzKG5vZGVzKTtcblxuICAgIGlmIChicmFja2V0ZWRDaGlsZE5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IGJyYWNrZXRlZENoaWxkTm9kZSwgIC8vL1xuICAgICAgICAgICAgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCk7XG5cbiAgICAgIG5vZGVzID0gY2hpbGROb2RlczsgLy8vXG4gICAgfVxuXG4gICAgY29uc3QgbWV0YVN1YnN0aXR1dGlvbiA9IG5ldyBNZXRhU3Vic3RpdHV0aW9uKG1ldGF2YXJpYWJsZU5hbWUsIG5vZGVzKTtcblxuICAgIHJldHVybiBtZXRhU3Vic3RpdHV0aW9uO1xuICB9XG59XG4iLCJSZWFjdC5jcmVhdGVFbGVtZW50Il0sIm5hbWVzIjpbIk1ldGFTdWJzdGl0dXRpb24iLCJtZXRhdmFyaWFibGVOYW1lIiwibm9kZXMiLCJnZXRNZXRhdmFyaWFibGVOYW1lIiwiZ2V0Tm9kZXMiLCJtYXRjaE5vZGVzIiwibWF0Y2hlcyIsIm5vZGVzQSIsIm5vZGVzQiIsIm5vZGVzTWF0Y2giLCJjaGlsZE5vZGVzIiwiYnJhY2tldGVkQ2hpbGROb2RlIiwiYnJhY2tldGVkQ2hpbGROb2RlRnJvbUNoaWxkTm9kZXMiLCJub25UZXJtaW5hbE5vZGUiLCJnZXRDaGlsZE5vZGVzIiwiZnJvbU1ldGF2YXJpYWJsZU5hbWVBbmROb2RlcyIsIm1ldGFTdWJzdGl0dXRpb24iXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBSXFCQTs7O29CQUZ3Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFOUMsSUFBQSxBQUFNQSxpQ0FBTjthQUFNQSxpQkFDUEMsZ0JBQWdCLEVBQUVDLEtBQUs7OEJBRGhCRjtRQUVqQixJQUFJLENBQUNDLGdCQUFnQixHQUFHQTtRQUN4QixJQUFJLENBQUNDLEtBQUssR0FBR0E7O2lCQUhJRjs7WUFNbkJHLEtBQUFBO21CQUFBQSxTQUFBQSxzQkFBc0I7Z0JBQ3BCLE9BQU8sSUFBSSxDQUFDRixnQkFBZ0I7WUFDOUI7OztZQUVBRyxLQUFBQTttQkFBQUEsU0FBQUEsV0FBVztnQkFDVCxPQUFPLElBQUksQ0FBQ0YsS0FBSztZQUNuQjs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQSxXQUFXSCxLQUFLLEVBQUU7Z0JBQ2hCLElBQUlJO2dCQUVKLElBQU1DLFNBQVMsSUFBSSxDQUFDTCxLQUFLLEVBQ25CTSxTQUFTTixPQUNUTyxhQUFhSixJQUFBQSxnQkFBVSxFQUFDRSxRQUFRQztnQkFFdENGLFVBQVVHLFlBQWEsR0FBRztnQkFFMUIsSUFBSSxDQUFDSCxTQUFTO29CQUNaLElBQU1JLGFBQWFSLE9BQ2JTLHFCQUFxQkMsSUFBQUEsc0NBQWdDLEVBQUNGO29CQUU1RCxJQUFJQyx1QkFBdUIsSUFBSSxFQUFFO3dCQUMvQixJQUFNRSxrQkFBa0JGLG9CQUNsQkQsY0FBYUcsZ0JBQWdCQyxhQUFhLElBQzFDTixVQUFTRSxhQUNURCxjQUFhSixJQUFBQSxnQkFBVSxFQUFDRSxRQUFRQzt3QkFFdENGLFVBQVVHLGFBQVksR0FBRztvQkFDM0IsQ0FBQztnQkFDSCxDQUFDO2dCQUVELE9BQU9IO1lBQ1Q7Ozs7WUFFT1MsS0FBQUE7bUJBQVAsU0FBT0EsNkJBQTZCZCxnQkFBZ0IsRUFBRUMsS0FBSyxFQUFFO2dCQUMzRCxJQUFNUyxxQkFBcUJDLElBQUFBLHNDQUFnQyxFQUFDVjtnQkFFNUQsSUFBSVMsdUJBQXVCLElBQUksRUFBRTtvQkFDL0IsSUFBTUUsa0JBQWtCRixvQkFDbEJELGFBQWFHLGdCQUFnQkMsYUFBYTtvQkFFaERaLFFBQVFRLFlBQVksR0FBRztnQkFDekIsQ0FBQztnQkFFRCxJQUFNTSxtQkFBbUIsSUFsRFJoQixpQkFrRDZCQyxrQkFBa0JDO2dCQUVoRSxPQUFPYztZQUNUOzs7V0FyRG1CaEIifQ==
|