occam-verify-cli 0.0.502 → 0.0.503
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/axiom.js +4 -4
- package/lib/axiomLemmaTheorem.js +58 -58
- package/lib/consequence.js +157 -0
- package/lib/lemma.js +4 -4
- package/lib/metaSupposition.js +214 -0
- package/lib/supposition.js +214 -0
- package/lib/theorem.js +4 -4
- package/lib/verify/axiom.js +11 -11
- package/lib/verify/consequence.js +35 -0
- package/lib/verify/derivation.js +7 -7
- package/lib/verify/lemma.js +12 -12
- package/lib/verify/metaDerivation.js +7 -7
- package/lib/verify/metaSupposition.js +41 -0
- package/lib/verify/supposition.js +41 -0
- package/lib/verify/theorem.js +12 -12
- package/package.json +1 -1
- package/src/axiom.js +1 -1
- package/src/axiomLemmaTheorem.js +57 -57
- package/src/consequence.js +187 -0
- package/src/lemma.js +1 -1
- package/src/metaSupposition.js +235 -0
- package/src/supposition.js +235 -0
- package/src/theorem.js +1 -1
- package/src/verify/axiom.js +17 -17
- package/src/verify/consequence.js +34 -0
- package/src/verify/derivation.js +8 -8
- package/src/verify/lemma.js +18 -18
- package/src/verify/metaDerivation.js +8 -8
- package/src/verify/metaSupposition.js +44 -0
- package/src/verify/supposition.js +44 -0
- package/src/verify/theorem.js +18 -18
- package/lib/antecedent.js +0 -214
- package/lib/consequent.js +0 -157
- package/lib/metaAntecedent.js +0 -214
- package/lib/verify/antecedent.js +0 -41
- package/lib/verify/consequent.js +0 -35
- package/lib/verify/metaAntecedent.js +0 -41
- package/src/antecedent.js +0 -235
- package/src/consequent.js +0 -187
- package/src/metaAntecedent.js +0 -235
- package/src/verify/antecedent.js +0 -44
- package/src/verify/consequent.js +0 -34
- package/src/verify/metaAntecedent.js +0 -44
package/lib/antecedent.js
DELETED
|
@@ -1,214 +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 Antecedent;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
var _substitution = /*#__PURE__*/ _interopRequireDefault(require("./substitution"));
|
|
12
|
-
var _array = require("./utilities/array");
|
|
13
|
-
var _string = require("./utilities/string");
|
|
14
|
-
var _query = require("./utilities/query");
|
|
15
|
-
var _ruleNames = require("./ruleNames");
|
|
16
|
-
function _arrayLikeToArray(arr, len) {
|
|
17
|
-
if (len == null || len > arr.length) len = arr.length;
|
|
18
|
-
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
19
|
-
return arr2;
|
|
20
|
-
}
|
|
21
|
-
function _arrayWithoutHoles(arr) {
|
|
22
|
-
if (Array.isArray(arr)) return _arrayLikeToArray(arr);
|
|
23
|
-
}
|
|
24
|
-
function _classCallCheck(instance, Constructor) {
|
|
25
|
-
if (!(instance instanceof Constructor)) {
|
|
26
|
-
throw new TypeError("Cannot call a class as a function");
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
function _defineProperties(target, props) {
|
|
30
|
-
for(var i = 0; i < props.length; i++){
|
|
31
|
-
var descriptor = props[i];
|
|
32
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
|
33
|
-
descriptor.configurable = true;
|
|
34
|
-
if ("value" in descriptor) descriptor.writable = true;
|
|
35
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
function _createClass(Constructor, protoProps, staticProps) {
|
|
39
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
40
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
41
|
-
return Constructor;
|
|
42
|
-
}
|
|
43
|
-
function _interopRequireDefault(obj) {
|
|
44
|
-
return obj && obj.__esModule ? obj : {
|
|
45
|
-
default: obj
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
function _iterableToArray(iter) {
|
|
49
|
-
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
50
|
-
}
|
|
51
|
-
function _nonIterableSpread() {
|
|
52
|
-
throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
53
|
-
}
|
|
54
|
-
function _toConsumableArray(arr) {
|
|
55
|
-
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
|
|
56
|
-
}
|
|
57
|
-
function _unsupportedIterableToArray(o, minLen) {
|
|
58
|
-
if (!o) return;
|
|
59
|
-
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
60
|
-
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
61
|
-
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
62
|
-
if (n === "Map" || n === "Set") return Array.from(n);
|
|
63
|
-
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
64
|
-
}
|
|
65
|
-
var statementNodesQuery = (0, _query.nodesQuery)("/subproofAssertion/statement"), subproofAssertionNodeQuery = (0, _query.nodeQuery)("/statement/subproofAssertion!"), unqualifiedStatementStatementNodesQuery = (0, _query.nodesQuery)("/subproof/unqualifiedStatement/statement!"), qualifiedOrUnqualifiedStatementStatementNodeQuery = (0, _query.nodeQuery)("/subproof/subDerivation/qualifiedStatement|unqualifiedStatement[-1]/statement!");
|
|
66
|
-
var Antecedent = /*#__PURE__*/ function() {
|
|
67
|
-
function Antecedent(statementNode) {
|
|
68
|
-
_classCallCheck(this, Antecedent);
|
|
69
|
-
this.statementNode = statementNode;
|
|
70
|
-
}
|
|
71
|
-
_createClass(Antecedent, [
|
|
72
|
-
{
|
|
73
|
-
key: "getStatementNode",
|
|
74
|
-
value: function getStatementNode() {
|
|
75
|
-
return this.statementNode;
|
|
76
|
-
}
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
key: "matchSubproofNode",
|
|
80
|
-
value: function matchSubproofNode(subproofNode, substitutions) {
|
|
81
|
-
var subproofNodeMatches = false;
|
|
82
|
-
var subproofAssertionNode = subproofAssertionNodeQuery(this.statementNode);
|
|
83
|
-
if (subproofAssertionNode !== null) {
|
|
84
|
-
var subproofAssertionStatementNodes = statementNodesQuery(subproofAssertionNode), unqualifiedStatementStatementNodes = unqualifiedStatementStatementNodesQuery(subproofNode), qualifiedOrUnqualifiedStatementStatementNode = qualifiedOrUnqualifiedStatementStatementNodeQuery(subproofNode), statementNodes = _toConsumableArray(unqualifiedStatementStatementNodes).concat([
|
|
85
|
-
qualifiedOrUnqualifiedStatementStatementNode
|
|
86
|
-
]), statementNodesLength = statementNodes.length, subproofAssertionStatementNodesLength = subproofAssertionStatementNodes.length;
|
|
87
|
-
if (statementNodesLength === subproofAssertionStatementNodesLength) {
|
|
88
|
-
subproofNodeMatches = subproofAssertionStatementNodes.every(function(subproofAssertionStatementNode, index) {
|
|
89
|
-
var statementNode = statementNodes[index], nonTerminalNode = statementNode, antecedentNonTerminalNode = subproofAssertionStatementNode, antecedentNonTerminalNodeMatches = matchAntecedentNonTerminalNode(antecedentNonTerminalNode, nonTerminalNode, substitutions);
|
|
90
|
-
if (antecedentNonTerminalNodeMatches) {
|
|
91
|
-
return true;
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
return subproofNodeMatches;
|
|
97
|
-
}
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
key: "matchStatementNode",
|
|
101
|
-
value: function matchStatementNode(statementNode, substitutions) {
|
|
102
|
-
var nonTerminalNode = statementNode, antecedentNonTerminalNode = this.statementNode, antecedentNonTerminalNodeMatches = matchAntecedentNonTerminalNode(antecedentNonTerminalNode, nonTerminalNode, substitutions), statementNodeMatches = antecedentNonTerminalNodeMatches; ///
|
|
103
|
-
return statementNodeMatches;
|
|
104
|
-
}
|
|
105
|
-
},
|
|
106
|
-
{
|
|
107
|
-
key: "toJSON",
|
|
108
|
-
value: function toJSON() {
|
|
109
|
-
var statementString = (0, _string.nodeAsString)(this.statementNode), statement = statementString, json = {
|
|
110
|
-
statement: statement
|
|
111
|
-
};
|
|
112
|
-
return json;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
], [
|
|
116
|
-
{
|
|
117
|
-
key: "fromJSON",
|
|
118
|
-
value: function fromJSON(json, releaseContext) {
|
|
119
|
-
var statement = json.statement, statementString = statement, statementNode = (0, _string.statementNodeFromStatementString)(statementString, releaseContext), antecedent = new Antecedent(statementNode);
|
|
120
|
-
return antecedent;
|
|
121
|
-
}
|
|
122
|
-
},
|
|
123
|
-
{
|
|
124
|
-
key: "fromStatementNode",
|
|
125
|
-
value: function fromStatementNode(statementNode) {
|
|
126
|
-
var antecedent = new Antecedent(statementNode);
|
|
127
|
-
return antecedent;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
]);
|
|
131
|
-
return Antecedent;
|
|
132
|
-
}();
|
|
133
|
-
function matchAntecedentNode(antecedentNode, node, substitutions) {
|
|
134
|
-
var antecedentNodeMatches = false;
|
|
135
|
-
var nodeTerminalNode = node.isTerminalNode(), ruleNodeTerminalNode = antecedentNode.isTerminalNode();
|
|
136
|
-
if (nodeTerminalNode === ruleNodeTerminalNode) {
|
|
137
|
-
if (nodeTerminalNode) {
|
|
138
|
-
var terminalNode = node, antecedentTerminalNode = antecedentNode, antecedentTerminalNodeMatches = matchAntecedentTerminalNode(antecedentTerminalNode, terminalNode, substitutions);
|
|
139
|
-
antecedentNodeMatches = antecedentTerminalNodeMatches; ///
|
|
140
|
-
} else {
|
|
141
|
-
var nonTerminalNode = node, antecedentNonTerminalNode = antecedentNode, antecedentNonTerminalNodeMatches = matchAntecedentNonTerminalNode(antecedentNonTerminalNode, nonTerminalNode, substitutions);
|
|
142
|
-
antecedentNodeMatches = antecedentNonTerminalNodeMatches; ///
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
return antecedentNodeMatches;
|
|
146
|
-
}
|
|
147
|
-
function matchAntecedentNodes(antecedentNodes, nodes, substitutions) {
|
|
148
|
-
var antecedentNodesMatches = false;
|
|
149
|
-
var nodesLength = nodes.length, antecedentNodesLength = antecedentNodes.length;
|
|
150
|
-
if (nodesLength === antecedentNodesLength) {
|
|
151
|
-
antecedentNodesMatches = nodes.every(function(node, index) {
|
|
152
|
-
var antecedentNode = antecedentNodes[index], antecedentNodeMatches = matchAntecedentNode(antecedentNode, node, substitutions);
|
|
153
|
-
if (antecedentNodeMatches) {
|
|
154
|
-
return true;
|
|
155
|
-
}
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
return antecedentNodesMatches;
|
|
159
|
-
}
|
|
160
|
-
function matchAntecedentVariable(antecedentVariableNode, nodes, substitutions) {
|
|
161
|
-
var antecedentVariableMatches;
|
|
162
|
-
var antecedentVariableName = (0, _query.variableNameFromVariableNode)(antecedentVariableNode), substitution = substitutions.find(function(substitution) {
|
|
163
|
-
var variableName = substitution.getVariableName();
|
|
164
|
-
if (variableName === antecedentVariableName) {
|
|
165
|
-
return true;
|
|
166
|
-
}
|
|
167
|
-
}) || null;
|
|
168
|
-
if (substitution !== null) {
|
|
169
|
-
var substitutionNodesMatch = substitution.matchNodes(nodes);
|
|
170
|
-
antecedentVariableMatches = substitutionNodesMatch; ///
|
|
171
|
-
} else {
|
|
172
|
-
var variableName = antecedentVariableName, substitution1 = _substitution.default.fromVariableNameAndNodes(variableName, nodes);
|
|
173
|
-
substitutions.push(substitution1);
|
|
174
|
-
antecedentVariableMatches = true;
|
|
175
|
-
}
|
|
176
|
-
return antecedentVariableMatches;
|
|
177
|
-
}
|
|
178
|
-
function matchAntecedentTerminalNode(antecedentTerminalNode, terminalNode, substitutions) {
|
|
179
|
-
var matches = antecedentTerminalNode.match(terminalNode), antecedentTerminalNodeMatches = matches;
|
|
180
|
-
return antecedentTerminalNodeMatches;
|
|
181
|
-
}
|
|
182
|
-
function matchAntecedentNonTerminalNode(antecedentNonTerminalNode, nonTerminalNode, substitutions) {
|
|
183
|
-
var antecedentNonTerminalNodeMatches = false;
|
|
184
|
-
var ruleName = nonTerminalNode.getRuleName(), antecedentRuleName = antecedentNonTerminalNode.getRuleName(); ///
|
|
185
|
-
if (ruleName === antecedentRuleName) {
|
|
186
|
-
var childNodes = nonTerminalNode.getChildNodes(), antecedentChildNodes = antecedentNonTerminalNode.getChildNodes(), nodes = childNodes, antecedentNodes = antecedentChildNodes, antecedentChildNodesMatches = matchAntecedentNodes(antecedentNodes, nodes, substitutions);
|
|
187
|
-
antecedentNonTerminalNodeMatches = antecedentChildNodesMatches; ///
|
|
188
|
-
if (!antecedentNonTerminalNodeMatches) {
|
|
189
|
-
var ruleNameStatementRuleName = ruleName === _ruleNames.STATEMENT_RULE_NAME;
|
|
190
|
-
if (ruleNameStatementRuleName) {
|
|
191
|
-
var statementNode = nonTerminalNode, antecedentStatementNode = antecedentNonTerminalNode, antecedentStatementNodeMatches = matchAntecedentStatementNode(antecedentStatementNode, statementNode, substitutions);
|
|
192
|
-
antecedentNonTerminalNodeMatches = antecedentStatementNodeMatches; ///
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
return antecedentNonTerminalNodeMatches;
|
|
197
|
-
}
|
|
198
|
-
function matchAntecedentStatementNode(antecedentStatementNode, statementNode, substitutions) {
|
|
199
|
-
var antecedentStatementNodeMatches = false;
|
|
200
|
-
var antecedentNonTerminalNode = antecedentStatementNode, antecedentChildNodes = antecedentNonTerminalNode.getChildNodes(), antecedentChildNodesLength = antecedentChildNodes.length;
|
|
201
|
-
if (antecedentChildNodesLength === 1) {
|
|
202
|
-
var firstAntecedentChildNode = (0, _array.first)(antecedentChildNodes), antecedentChildNode = firstAntecedentChildNode, antecedentChildNodeNonTerminalNode = antecedentChildNode.isNonTerminalNode();
|
|
203
|
-
if (antecedentChildNodeNonTerminalNode) {
|
|
204
|
-
var antecedentNonTerminalChildNode = antecedentChildNode, antecedentNonTerminalChildNodeRuleName = antecedentNonTerminalChildNode.getRuleName(), antecedentNonTerminalChildNodeRuleNameVariableRuleName = antecedentNonTerminalChildNodeRuleName === _ruleNames.VARIABLE_RULE_NAME;
|
|
205
|
-
if (antecedentNonTerminalChildNodeRuleNameVariableRuleName) {
|
|
206
|
-
var antecedentVariableNode = antecedentNonTerminalChildNode, nonTerminalNode = statementNode, childNodes = nonTerminalNode.getChildNodes(), nodes = childNodes, antecedentVariableMatches = matchAntecedentVariable(antecedentVariableNode, nodes, substitutions);
|
|
207
|
-
antecedentStatementNodeMatches = antecedentVariableMatches; ///
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
return antecedentStatementNodeMatches;
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hbnRlY2VkZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgU3Vic3RpdHV0aW9uIGZyb20gXCIuL3N1YnN0aXR1dGlvblwiO1xuXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCIuL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgbm9kZUFzU3RyaW5nIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgbm9kZVF1ZXJ5LCBub2Rlc1F1ZXJ5IH0gZnJvbSBcIi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyB2YXJpYWJsZU5hbWVGcm9tVmFyaWFibGVOb2RlIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBzdGF0ZW1lbnROb2RlRnJvbVN0YXRlbWVudFN0cmluZyB9IGZyb20gXCIuL3V0aWxpdGllcy9zdHJpbmdcIjtcbmltcG9ydCB7IFZBUklBQkxFX1JVTEVfTkFNRSwgU1RBVEVNRU5UX1JVTEVfTkFNRSB9IGZyb20gXCIuL3J1bGVOYW1lc1wiO1xuXG5jb25zdCBzdGF0ZW1lbnROb2Rlc1F1ZXJ5ID0gbm9kZXNRdWVyeShcIi9zdWJwcm9vZkFzc2VydGlvbi9zdGF0ZW1lbnRcIiksXG4gICAgICBzdWJwcm9vZkFzc2VydGlvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvc3VicHJvb2ZBc3NlcnRpb24hXCIpLFxuICAgICAgdW5xdWFsaWZpZWRTdGF0ZW1lbnRTdGF0ZW1lbnROb2Rlc1F1ZXJ5ID0gbm9kZXNRdWVyeShcIi9zdWJwcm9vZi91bnF1YWxpZmllZFN0YXRlbWVudC9zdGF0ZW1lbnQhXCIpLFxuICAgICAgcXVhbGlmaWVkT3JVbnF1YWxpZmllZFN0YXRlbWVudFN0YXRlbWVudE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdWJwcm9vZi9zdWJEZXJpdmF0aW9uL3F1YWxpZmllZFN0YXRlbWVudHx1bnF1YWxpZmllZFN0YXRlbWVudFstMV0vc3RhdGVtZW50IVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQW50ZWNlZGVudCB7XG4gIGNvbnN0cnVjdG9yKHN0YXRlbWVudE5vZGUpIHtcbiAgICB0aGlzLnN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlO1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnROb2RlO1xuICB9XG5cbiAgbWF0Y2hTdWJwcm9vZk5vZGUoc3VicHJvb2ZOb2RlLCBzdWJzdGl0dXRpb25zKSB7XG4gICAgbGV0IHN1YnByb29mTm9kZU1hdGNoZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHN1YnByb29mQXNzZXJ0aW9uTm9kZSA9IHN1YnByb29mQXNzZXJ0aW9uTm9kZVF1ZXJ5KHRoaXMuc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBpZiAoc3VicHJvb2ZBc3NlcnRpb25Ob2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdWJwcm9vZkFzc2VydGlvblN0YXRlbWVudE5vZGVzID0gc3RhdGVtZW50Tm9kZXNRdWVyeShzdWJwcm9vZkFzc2VydGlvbk5vZGUpLFxuICAgICAgICAgICAgdW5xdWFsaWZpZWRTdGF0ZW1lbnRTdGF0ZW1lbnROb2RlcyA9IHVucXVhbGlmaWVkU3RhdGVtZW50U3RhdGVtZW50Tm9kZXNRdWVyeShzdWJwcm9vZk5vZGUpLFxuICAgICAgICAgICAgcXVhbGlmaWVkT3JVbnF1YWxpZmllZFN0YXRlbWVudFN0YXRlbWVudE5vZGUgPSBxdWFsaWZpZWRPclVucXVhbGlmaWVkU3RhdGVtZW50U3RhdGVtZW50Tm9kZVF1ZXJ5KHN1YnByb29mTm9kZSksXG4gICAgICAgICAgICBzdGF0ZW1lbnROb2RlcyA9IFtcbiAgICAgICAgICAgICAgLi4udW5xdWFsaWZpZWRTdGF0ZW1lbnRTdGF0ZW1lbnROb2RlcyxcbiAgICAgICAgICAgICAgcXVhbGlmaWVkT3JVbnF1YWxpZmllZFN0YXRlbWVudFN0YXRlbWVudE5vZGVcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBzdGF0ZW1lbnROb2Rlc0xlbmd0aCA9IHN0YXRlbWVudE5vZGVzLmxlbmd0aCxcbiAgICAgICAgICAgIHN1YnByb29mQXNzZXJ0aW9uU3RhdGVtZW50Tm9kZXNMZW5ndGggPSBzdWJwcm9vZkFzc2VydGlvblN0YXRlbWVudE5vZGVzLmxlbmd0aDtcblxuICAgICAgaWYgKHN0YXRlbWVudE5vZGVzTGVuZ3RoID09PSBzdWJwcm9vZkFzc2VydGlvblN0YXRlbWVudE5vZGVzTGVuZ3RoKSB7XG4gICAgICAgIHN1YnByb29mTm9kZU1hdGNoZXMgPSBzdWJwcm9vZkFzc2VydGlvblN0YXRlbWVudE5vZGVzLmV2ZXJ5KChzdWJwcm9vZkFzc2VydGlvblN0YXRlbWVudE5vZGUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlID0gc3RhdGVtZW50Tm9kZSwgLy8vXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnRlY2VkZW50Tm9uVGVybWluYWxOb2RlID0gc3VicHJvb2ZBc3NlcnRpb25TdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnRlY2VkZW50Tm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IG1hdGNoQW50ZWNlZGVudE5vblRlcm1pbmFsTm9kZShhbnRlY2VkZW50Tm9uVGVybWluYWxOb2RlLCBub25UZXJtaW5hbE5vZGUsIHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYW50ZWNlZGVudE5vblRlcm1pbmFsTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YnByb29mTm9kZU1hdGNoZXM7XG4gIH1cblxuICBtYXRjaFN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucykge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICBhbnRlY2VkZW50Tm9uVGVybWluYWxOb2RlID0gdGhpcy5zdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgYW50ZWNlZGVudE5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBtYXRjaEFudGVjZWRlbnROb25UZXJtaW5hbE5vZGUoYW50ZWNlZGVudE5vblRlcm1pbmFsTm9kZSwgbm9uVGVybWluYWxOb2RlLCBzdWJzdGl0dXRpb25zKSxcbiAgICAgICAgICBzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IGFudGVjZWRlbnROb25UZXJtaW5hbE5vZGVNYXRjaGVzOyAvLy9cblxuICAgIHJldHVybiBzdGF0ZW1lbnROb2RlTWF0Y2hlcztcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBub2RlQXNTdHJpbmcodGhpcy5zdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRTdHJpbmcsIC8vL1xuICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICBzdGF0ZW1lbnRcbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgcmVsZWFzZUNvbnRleHQpIHtcbiAgICBjb25zdCB7IHN0YXRlbWVudCB9ID0ganNvbixcbiAgICAgICAgICBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQsICAvLy9cbiAgICAgICAgICBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZUZyb21TdGF0ZW1lbnRTdHJpbmcoc3RhdGVtZW50U3RyaW5nLCByZWxlYXNlQ29udGV4dCksXG4gICAgICAgICAgYW50ZWNlZGVudCA9IG5ldyBBbnRlY2VkZW50KHN0YXRlbWVudE5vZGUpO1xuXG4gICAgcmV0dXJuIGFudGVjZWRlbnQ7XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSkge1xuICAgIGNvbnN0IGFudGVjZWRlbnQgPSBuZXcgQW50ZWNlZGVudChzdGF0ZW1lbnROb2RlKTtcblxuICAgIHJldHVybiBhbnRlY2VkZW50O1xuICB9XG59XG5cbmZ1bmN0aW9uIG1hdGNoQW50ZWNlZGVudE5vZGUoYW50ZWNlZGVudE5vZGUsIG5vZGUsIHN1YnN0aXR1dGlvbnMpIHtcbiAgbGV0IGFudGVjZWRlbnROb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vZGVUZXJtaW5hbE5vZGUgPSBub2RlLmlzVGVybWluYWxOb2RlKCksXG4gICAgICAgIHJ1bGVOb2RlVGVybWluYWxOb2RlID0gYW50ZWNlZGVudE5vZGUuaXNUZXJtaW5hbE5vZGUoKTtcblxuICBpZiAobm9kZVRlcm1pbmFsTm9kZSA9PT0gcnVsZU5vZGVUZXJtaW5hbE5vZGUpIHtcbiAgICBpZiAobm9kZVRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3QgdGVybWluYWxOb2RlID0gbm9kZSwgIC8vL1xuICAgICAgICAgICAgYW50ZWNlZGVudFRlcm1pbmFsTm9kZSA9IGFudGVjZWRlbnROb2RlLCAgLy8vXG4gICAgICAgICAgICBhbnRlY2VkZW50VGVybWluYWxOb2RlTWF0Y2hlcyA9IG1hdGNoQW50ZWNlZGVudFRlcm1pbmFsTm9kZShhbnRlY2VkZW50VGVybWluYWxOb2RlLCB0ZXJtaW5hbE5vZGUsIHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICBhbnRlY2VkZW50Tm9kZU1hdGNoZXMgPSBhbnRlY2VkZW50VGVybWluYWxOb2RlTWF0Y2hlczsgIC8vL1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBub2RlLCAvLy9cbiAgICAgICAgICAgIGFudGVjZWRlbnROb25UZXJtaW5hbE5vZGUgPSBhbnRlY2VkZW50Tm9kZSwgIC8vL1xuICAgICAgICAgICAgYW50ZWNlZGVudE5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBtYXRjaEFudGVjZWRlbnROb25UZXJtaW5hbE5vZGUoYW50ZWNlZGVudE5vblRlcm1pbmFsTm9kZSwgbm9uVGVybWluYWxOb2RlLCBzdWJzdGl0dXRpb25zKTtcblxuICAgICAgYW50ZWNlZGVudE5vZGVNYXRjaGVzID0gYW50ZWNlZGVudE5vblRlcm1pbmFsTm9kZU1hdGNoZXM7IC8vL1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhbnRlY2VkZW50Tm9kZU1hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1hdGNoQW50ZWNlZGVudE5vZGVzKGFudGVjZWRlbnROb2Rlcywgbm9kZXMsIHN1YnN0aXR1dGlvbnMpIHtcbiAgbGV0IGFudGVjZWRlbnROb2Rlc01hdGNoZXMgPSBmYWxzZTtcblxuICBjb25zdCBub2Rlc0xlbmd0aCA9IG5vZGVzLmxlbmd0aCxcbiAgICAgICAgYW50ZWNlZGVudE5vZGVzTGVuZ3RoID0gYW50ZWNlZGVudE5vZGVzLmxlbmd0aDtcblxuICBpZiAobm9kZXNMZW5ndGggPT09IGFudGVjZWRlbnROb2Rlc0xlbmd0aCkge1xuICAgIGFudGVjZWRlbnROb2Rlc01hdGNoZXMgPSBub2Rlcy5ldmVyeSgobm9kZSwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGFudGVjZWRlbnROb2RlID0gYW50ZWNlZGVudE5vZGVzW2luZGV4XSxcbiAgICAgICAgICAgIGFudGVjZWRlbnROb2RlTWF0Y2hlcyA9IG1hdGNoQW50ZWNlZGVudE5vZGUoYW50ZWNlZGVudE5vZGUsIG5vZGUsIHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICBpZiAoYW50ZWNlZGVudE5vZGVNYXRjaGVzKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGFudGVjZWRlbnROb2Rlc01hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1hdGNoQW50ZWNlZGVudFZhcmlhYmxlKGFudGVjZWRlbnRWYXJpYWJsZU5vZGUsIG5vZGVzLCBzdWJzdGl0dXRpb25zKSB7XG4gIGxldCBhbnRlY2VkZW50VmFyaWFibGVNYXRjaGVzO1xuXG4gIGNvbnN0IGFudGVjZWRlbnRWYXJpYWJsZU5hbWUgPSB2YXJpYWJsZU5hbWVGcm9tVmFyaWFibGVOb2RlKGFudGVjZWRlbnRWYXJpYWJsZU5vZGUpLFxuICAgICAgICBzdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb25zLmZpbmQoKHN1YnN0aXR1dGlvbikgPT4ge1xuICAgICAgICAgIGNvbnN0IHZhcmlhYmxlTmFtZSA9IHN1YnN0aXR1dGlvbi5nZXRWYXJpYWJsZU5hbWUoKTtcblxuICAgICAgICAgIGlmICh2YXJpYWJsZU5hbWUgPT09IGFudGVjZWRlbnRWYXJpYWJsZU5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSkgfHwgbnVsbDtcblxuICBpZiAoc3Vic3RpdHV0aW9uICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3Vic3RpdHV0aW9uTm9kZXNNYXRjaCA9IHN1YnN0aXR1dGlvbi5tYXRjaE5vZGVzKG5vZGVzKTtcblxuICAgIGFudGVjZWRlbnRWYXJpYWJsZU1hdGNoZXMgPSBzdWJzdGl0dXRpb25Ob2Rlc01hdGNoOyAgLy8vXG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdmFyaWFibGVOYW1lID0gYW50ZWNlZGVudFZhcmlhYmxlTmFtZSwgLy8vXG4gICAgICAgICAgc3Vic3RpdHV0aW9uID0gU3Vic3RpdHV0aW9uLmZyb21WYXJpYWJsZU5hbWVBbmROb2Rlcyh2YXJpYWJsZU5hbWUsIG5vZGVzKTtcblxuICAgIHN1YnN0aXR1dGlvbnMucHVzaChzdWJzdGl0dXRpb24pO1xuXG4gICAgYW50ZWNlZGVudFZhcmlhYmxlTWF0Y2hlcyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gYW50ZWNlZGVudFZhcmlhYmxlTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWF0Y2hBbnRlY2VkZW50VGVybWluYWxOb2RlKGFudGVjZWRlbnRUZXJtaW5hbE5vZGUsIHRlcm1pbmFsTm9kZSwgc3Vic3RpdHV0aW9ucykge1xuICBjb25zdCBtYXRjaGVzID0gYW50ZWNlZGVudFRlcm1pbmFsTm9kZS5tYXRjaCh0ZXJtaW5hbE5vZGUpLFxuICAgICAgICBhbnRlY2VkZW50VGVybWluYWxOb2RlTWF0Y2hlcyA9IG1hdGNoZXM7XG5cbiAgcmV0dXJuIGFudGVjZWRlbnRUZXJtaW5hbE5vZGVNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaEFudGVjZWRlbnROb25UZXJtaW5hbE5vZGUoYW50ZWNlZGVudE5vblRlcm1pbmFsTm9kZSwgbm9uVGVybWluYWxOb2RlLCBzdWJzdGl0dXRpb25zKSB7XG4gIGxldCBhbnRlY2VkZW50Tm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IHJ1bGVOYW1lID0gbm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCksXG4gICAgICAgIGFudGVjZWRlbnRSdWxlTmFtZSA9IGFudGVjZWRlbnROb25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKTsgLy8vXG5cbiAgaWYgKHJ1bGVOYW1lID09PSBhbnRlY2VkZW50UnVsZU5hbWUpIHtcbiAgICBjb25zdCBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICBhbnRlY2VkZW50Q2hpbGROb2RlcyA9IGFudGVjZWRlbnROb25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgIG5vZGVzID0gY2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgYW50ZWNlZGVudE5vZGVzID0gYW50ZWNlZGVudENoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgIGFudGVjZWRlbnRDaGlsZE5vZGVzTWF0Y2hlcyA9IG1hdGNoQW50ZWNlZGVudE5vZGVzKGFudGVjZWRlbnROb2Rlcywgbm9kZXMsIHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgYW50ZWNlZGVudE5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBhbnRlY2VkZW50Q2hpbGROb2Rlc01hdGNoZXM7IC8vL1xuXG4gICAgaWYgKCFhbnRlY2VkZW50Tm9uVGVybWluYWxOb2RlTWF0Y2hlcykge1xuICAgICAgY29uc3QgcnVsZU5hbWVTdGF0ZW1lbnRSdWxlTmFtZSA9IChydWxlTmFtZSA9PT0gU1RBVEVNRU5UX1JVTEVfTkFNRSk7XG5cbiAgICAgIGlmIChydWxlTmFtZVN0YXRlbWVudFJ1bGVOYW1lKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBub25UZXJtaW5hbE5vZGUsICAvLy9cbiAgICAgICAgICAgICAgYW50ZWNlZGVudFN0YXRlbWVudE5vZGUgPSBhbnRlY2VkZW50Tm9uVGVybWluYWxOb2RlLCAgLy8vXG4gICAgICAgICAgICAgIGFudGVjZWRlbnRTdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IG1hdGNoQW50ZWNlZGVudFN0YXRlbWVudE5vZGUoYW50ZWNlZGVudFN0YXRlbWVudE5vZGUsIHN0YXRlbWVudE5vZGUsIHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICAgIGFudGVjZWRlbnROb25UZXJtaW5hbE5vZGVNYXRjaGVzID0gYW50ZWNlZGVudFN0YXRlbWVudE5vZGVNYXRjaGVzOyAvLy9cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYW50ZWNlZGVudE5vblRlcm1pbmFsTm9kZU1hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1hdGNoQW50ZWNlZGVudFN0YXRlbWVudE5vZGUoYW50ZWNlZGVudFN0YXRlbWVudE5vZGUsIHN0YXRlbWVudE5vZGUsIHN1YnN0aXR1dGlvbnMpIHtcbiAgbGV0IGFudGVjZWRlbnRTdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IGFudGVjZWRlbnROb25UZXJtaW5hbE5vZGUgPSBhbnRlY2VkZW50U3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICBhbnRlY2VkZW50Q2hpbGROb2RlcyA9IGFudGVjZWRlbnROb25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICBhbnRlY2VkZW50Q2hpbGROb2Rlc0xlbmd0aCA9IGFudGVjZWRlbnRDaGlsZE5vZGVzLmxlbmd0aDtcblxuICBpZiAoYW50ZWNlZGVudENoaWxkTm9kZXNMZW5ndGggPT09IDEpIHtcbiAgICBjb25zdCBmaXJzdEFudGVjZWRlbnRDaGlsZE5vZGUgPSBmaXJzdChhbnRlY2VkZW50Q2hpbGROb2RlcyksXG4gICAgICAgICAgYW50ZWNlZGVudENoaWxkTm9kZSA9IGZpcnN0QW50ZWNlZGVudENoaWxkTm9kZSwgIC8vL1xuICAgICAgICAgIGFudGVjZWRlbnRDaGlsZE5vZGVOb25UZXJtaW5hbE5vZGUgPSBhbnRlY2VkZW50Q2hpbGROb2RlLmlzTm9uVGVybWluYWxOb2RlKCk7XG5cbiAgICBpZiAoYW50ZWNlZGVudENoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3QgYW50ZWNlZGVudE5vblRlcm1pbmFsQ2hpbGROb2RlID0gYW50ZWNlZGVudENoaWxkTm9kZSwgIC8vL1xuICAgICAgICAgICAgYW50ZWNlZGVudE5vblRlcm1pbmFsQ2hpbGROb2RlUnVsZU5hbWUgPSBhbnRlY2VkZW50Tm9uVGVybWluYWxDaGlsZE5vZGUuZ2V0UnVsZU5hbWUoKSxcbiAgICAgICAgICAgIGFudGVjZWRlbnROb25UZXJtaW5hbENoaWxkTm9kZVJ1bGVOYW1lVmFyaWFibGVSdWxlTmFtZSA9IChhbnRlY2VkZW50Tm9uVGVybWluYWxDaGlsZE5vZGVSdWxlTmFtZSA9PT0gVkFSSUFCTEVfUlVMRV9OQU1FKTtcblxuICAgICAgaWYgKGFudGVjZWRlbnROb25UZXJtaW5hbENoaWxkTm9kZVJ1bGVOYW1lVmFyaWFibGVSdWxlTmFtZSkge1xuICAgICAgICBjb25zdCBhbnRlY2VkZW50VmFyaWFibGVOb2RlID0gYW50ZWNlZGVudE5vblRlcm1pbmFsQ2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZSA9IHN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICAgICAgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgICAgIG5vZGVzID0gY2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgICAgIGFudGVjZWRlbnRWYXJpYWJsZU1hdGNoZXMgPSBtYXRjaEFudGVjZWRlbnRWYXJpYWJsZShhbnRlY2VkZW50VmFyaWFibGVOb2RlLCBub2Rlcywgc3Vic3RpdHV0aW9ucyk7XG5cbiAgICAgICAgYW50ZWNlZGVudFN0YXRlbWVudE5vZGVNYXRjaGVzID0gYW50ZWNlZGVudFZhcmlhYmxlTWF0Y2hlczsgLy8vXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFudGVjZWRlbnRTdGF0ZW1lbnROb2RlTWF0Y2hlcztcbn1cbiJdLCJuYW1lcyI6WyJBbnRlY2VkZW50Iiwic3RhdGVtZW50Tm9kZXNRdWVyeSIsIm5vZGVzUXVlcnkiLCJzdWJwcm9vZkFzc2VydGlvbk5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInVucXVhbGlmaWVkU3RhdGVtZW50U3RhdGVtZW50Tm9kZXNRdWVyeSIsInF1YWxpZmllZE9yVW5xdWFsaWZpZWRTdGF0ZW1lbnRTdGF0ZW1lbnROb2RlUXVlcnkiLCJzdGF0ZW1lbnROb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsIm1hdGNoU3VicHJvb2ZOb2RlIiwic3VicHJvb2ZOb2RlIiwic3Vic3RpdHV0aW9ucyIsInN1YnByb29mTm9kZU1hdGNoZXMiLCJzdWJwcm9vZkFzc2VydGlvbk5vZGUiLCJzdWJwcm9vZkFzc2VydGlvblN0YXRlbWVudE5vZGVzIiwidW5xdWFsaWZpZWRTdGF0ZW1lbnRTdGF0ZW1lbnROb2RlcyIsInF1YWxpZmllZE9yVW5xdWFsaWZpZWRTdGF0ZW1lbnRTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Tm9kZXMiLCJzdGF0ZW1lbnROb2Rlc0xlbmd0aCIsImxlbmd0aCIsInN1YnByb29mQXNzZXJ0aW9uU3RhdGVtZW50Tm9kZXNMZW5ndGgiLCJldmVyeSIsInN1YnByb29mQXNzZXJ0aW9uU3RhdGVtZW50Tm9kZSIsImluZGV4Iiwibm9uVGVybWluYWxOb2RlIiwiYW50ZWNlZGVudE5vblRlcm1pbmFsTm9kZSIsImFudGVjZWRlbnROb25UZXJtaW5hbE5vZGVNYXRjaGVzIiwibWF0Y2hBbnRlY2VkZW50Tm9uVGVybWluYWxOb2RlIiwibWF0Y2hTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Tm9kZU1hdGNoZXMiLCJ0b0pTT04iLCJzdGF0ZW1lbnRTdHJpbmciLCJub2RlQXNTdHJpbmciLCJzdGF0ZW1lbnQiLCJqc29uIiwiZnJvbUpTT04iLCJyZWxlYXNlQ29udGV4dCIsInN0YXRlbWVudE5vZGVGcm9tU3RhdGVtZW50U3RyaW5nIiwiYW50ZWNlZGVudCIsImZyb21TdGF0ZW1lbnROb2RlIiwibWF0Y2hBbnRlY2VkZW50Tm9kZSIsImFudGVjZWRlbnROb2RlIiwibm9kZSIsImFudGVjZWRlbnROb2RlTWF0Y2hlcyIsIm5vZGVUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsInJ1bGVOb2RlVGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlIiwiYW50ZWNlZGVudFRlcm1pbmFsTm9kZSIsImFudGVjZWRlbnRUZXJtaW5hbE5vZGVNYXRjaGVzIiwibWF0Y2hBbnRlY2VkZW50VGVybWluYWxOb2RlIiwibWF0Y2hBbnRlY2VkZW50Tm9kZXMiLCJhbnRlY2VkZW50Tm9kZXMiLCJub2RlcyIsImFudGVjZWRlbnROb2Rlc01hdGNoZXMiLCJub2Rlc0xlbmd0aCIsImFudGVjZWRlbnROb2Rlc0xlbmd0aCIsIm1hdGNoQW50ZWNlZGVudFZhcmlhYmxlIiwiYW50ZWNlZGVudFZhcmlhYmxlTm9kZSIsImFudGVjZWRlbnRWYXJpYWJsZU1hdGNoZXMiLCJhbnRlY2VkZW50VmFyaWFibGVOYW1lIiwidmFyaWFibGVOYW1lRnJvbVZhcmlhYmxlTm9kZSIsInN1YnN0aXR1dGlvbiIsImZpbmQiLCJ2YXJpYWJsZU5hbWUiLCJnZXRWYXJpYWJsZU5hbWUiLCJzdWJzdGl0dXRpb25Ob2Rlc01hdGNoIiwibWF0Y2hOb2RlcyIsIlN1YnN0aXR1dGlvbiIsImZyb21WYXJpYWJsZU5hbWVBbmROb2RlcyIsInB1c2giLCJtYXRjaGVzIiwibWF0Y2giLCJydWxlTmFtZSIsImdldFJ1bGVOYW1lIiwiYW50ZWNlZGVudFJ1bGVOYW1lIiwiY2hpbGROb2RlcyIsImdldENoaWxkTm9kZXMiLCJhbnRlY2VkZW50Q2hpbGROb2RlcyIsImFudGVjZWRlbnRDaGlsZE5vZGVzTWF0Y2hlcyIsInJ1bGVOYW1lU3RhdGVtZW50UnVsZU5hbWUiLCJTVEFURU1FTlRfUlVMRV9OQU1FIiwiYW50ZWNlZGVudFN0YXRlbWVudE5vZGUiLCJhbnRlY2VkZW50U3RhdGVtZW50Tm9kZU1hdGNoZXMiLCJtYXRjaEFudGVjZWRlbnRTdGF0ZW1lbnROb2RlIiwiYW50ZWNlZGVudENoaWxkTm9kZXNMZW5ndGgiLCJmaXJzdEFudGVjZWRlbnRDaGlsZE5vZGUiLCJmaXJzdCIsImFudGVjZWRlbnRDaGlsZE5vZGUiLCJhbnRlY2VkZW50Q2hpbGROb2RlTm9uVGVybWluYWxOb2RlIiwiaXNOb25UZXJtaW5hbE5vZGUiLCJhbnRlY2VkZW50Tm9uVGVybWluYWxDaGlsZE5vZGUiLCJhbnRlY2VkZW50Tm9uVGVybWluYWxDaGlsZE5vZGVSdWxlTmFtZSIsImFudGVjZWRlbnROb25UZXJtaW5hbENoaWxkTm9kZVJ1bGVOYW1lVmFyaWFibGVSdWxlTmFtZSIsIlZBUklBQkxFX1JVTEVfTkFNRSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFnQnFCQTs7O2lFQWRJO3FCQUVIO3NCQUNPO3FCQUNTO3lCQUdrQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
package/lib/consequent.js
DELETED
|
@@ -1,157 +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 Consequent;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
var _array = require("./utilities/array");
|
|
12
|
-
var _string = require("./utilities/string");
|
|
13
|
-
var _query = require("./utilities/query");
|
|
14
|
-
var _ruleNames = require("./ruleNames");
|
|
15
|
-
function _classCallCheck(instance, Constructor) {
|
|
16
|
-
if (!(instance instanceof Constructor)) {
|
|
17
|
-
throw new TypeError("Cannot call a class as a function");
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
function _defineProperties(target, props) {
|
|
21
|
-
for(var i = 0; i < props.length; i++){
|
|
22
|
-
var descriptor = props[i];
|
|
23
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
|
24
|
-
descriptor.configurable = true;
|
|
25
|
-
if ("value" in descriptor) descriptor.writable = true;
|
|
26
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
function _createClass(Constructor, protoProps, staticProps) {
|
|
30
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
31
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
32
|
-
return Constructor;
|
|
33
|
-
}
|
|
34
|
-
var Consequent = /*#__PURE__*/ function() {
|
|
35
|
-
function Consequent(statementNode) {
|
|
36
|
-
_classCallCheck(this, Consequent);
|
|
37
|
-
this.statementNode = statementNode;
|
|
38
|
-
}
|
|
39
|
-
_createClass(Consequent, [
|
|
40
|
-
{
|
|
41
|
-
key: "getStatementNode",
|
|
42
|
-
value: function getStatementNode() {
|
|
43
|
-
return this.statementNode;
|
|
44
|
-
}
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
key: "matchStatementNode",
|
|
48
|
-
value: function matchStatementNode(statementNode, metaSubstitutions) {
|
|
49
|
-
var nonTerminalNode = statementNode, consequentNonTerminalNode = this.statementNode, consequentNonTerminalNodeMatches = matchConsequentNonTerminalNode(consequentNonTerminalNode, nonTerminalNode, metaSubstitutions), statementNodeMatches = consequentNonTerminalNodeMatches; ///
|
|
50
|
-
return statementNodeMatches;
|
|
51
|
-
}
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
key: "toJSON",
|
|
55
|
-
value: function toJSON() {
|
|
56
|
-
var statementString = (0, _string.nodeAsString)(this.statementNode), statement = statementString, json = {
|
|
57
|
-
statement: statement
|
|
58
|
-
};
|
|
59
|
-
return json;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
], [
|
|
63
|
-
{
|
|
64
|
-
key: "fromJSON",
|
|
65
|
-
value: function fromJSON(json, releaseContext) {
|
|
66
|
-
var statement = json.statement, statementString = statement, statementNode = (0, _string.statementNodeFromStatementString)(statementString, releaseContext), consequent = new Consequent(statementNode);
|
|
67
|
-
return consequent;
|
|
68
|
-
}
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
key: "fromStatementNode",
|
|
72
|
-
value: function fromStatementNode(statementNode) {
|
|
73
|
-
var consequent = new Consequent(statementNode);
|
|
74
|
-
return consequent;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
]);
|
|
78
|
-
return Consequent;
|
|
79
|
-
}();
|
|
80
|
-
function matchConsequentNode(consequentNode, node, metaSubstitutions) {
|
|
81
|
-
var consequentNodeMatches = false;
|
|
82
|
-
var nodeTerminalNode = node.isTerminalNode(), ruleNodeTerminalNode = consequentNode.isTerminalNode();
|
|
83
|
-
if (nodeTerminalNode === ruleNodeTerminalNode) {
|
|
84
|
-
if (nodeTerminalNode) {
|
|
85
|
-
var terminalNode = node, consequentTerminalNode = consequentNode, consequentTerminalNodeMatches = matchConsequentTerminalNode(consequentTerminalNode, terminalNode, metaSubstitutions);
|
|
86
|
-
consequentNodeMatches = consequentTerminalNodeMatches; ///
|
|
87
|
-
} else {
|
|
88
|
-
var nonTerminalNode = node, consequentNonTerminalNode = consequentNode, consequentNonTerminalNodeMatches = matchConsequentNonTerminalNode(consequentNonTerminalNode, nonTerminalNode, metaSubstitutions);
|
|
89
|
-
consequentNodeMatches = consequentNonTerminalNodeMatches; ///
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
return consequentNodeMatches;
|
|
93
|
-
}
|
|
94
|
-
function matchConsequentNodes(consequentNodes, nodes, metaSubstitutions) {
|
|
95
|
-
var consequentNodesMatches = false;
|
|
96
|
-
var nodesLength = nodes.length, consequentNodesLength = consequentNodes.length;
|
|
97
|
-
if (nodesLength === consequentNodesLength) {
|
|
98
|
-
consequentNodesMatches = nodes.every(function(node, index) {
|
|
99
|
-
var consequentNode = consequentNodes[index], consequentNodeMatches = matchConsequentNode(consequentNode, node, metaSubstitutions);
|
|
100
|
-
if (consequentNodeMatches) {
|
|
101
|
-
return true;
|
|
102
|
-
}
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
return consequentNodesMatches;
|
|
106
|
-
}
|
|
107
|
-
function matchConsequentVariable(consequentVariableNode, nodes, metaSubstitutions) {
|
|
108
|
-
var consequentVariableMatches = true;
|
|
109
|
-
var consequentVariableName = (0, _query.variableNameFromVariableNode)(consequentVariableNode), metaSubstitution = metaSubstitutions.find(function(metaSubstitution) {
|
|
110
|
-
var variableName = metaSubstitution.getVariableName();
|
|
111
|
-
if (variableName === consequentVariableName) {
|
|
112
|
-
return true;
|
|
113
|
-
}
|
|
114
|
-
}) || null;
|
|
115
|
-
if (metaSubstitution !== null) {
|
|
116
|
-
var metaSubstitutionNodesMatch = metaSubstitution.matchNodes(nodes);
|
|
117
|
-
consequentVariableMatches = metaSubstitutionNodesMatch; ///
|
|
118
|
-
}
|
|
119
|
-
return consequentVariableMatches;
|
|
120
|
-
}
|
|
121
|
-
function matchConsequentTerminalNode(consequentTerminalNode, terminalNode, metaSubstitutions) {
|
|
122
|
-
var matches = consequentTerminalNode.match(terminalNode), consequentTerminalNodeMatches = matches; ///
|
|
123
|
-
return consequentTerminalNodeMatches;
|
|
124
|
-
}
|
|
125
|
-
function matchConsequentNonTerminalNode(consequentNonTerminalNode, nonTerminalNode, metaSubstitutions) {
|
|
126
|
-
var consequentNonTerminalNodeMatches = false;
|
|
127
|
-
var ruleName = nonTerminalNode.getRuleName(), consequentRuleName = consequentNonTerminalNode.getRuleName(); ///
|
|
128
|
-
if (ruleName === consequentRuleName) {
|
|
129
|
-
var childNodes = nonTerminalNode.getChildNodes(), consequentChildNodes = consequentNonTerminalNode.getChildNodes(), nodes = childNodes, consequentNodes = consequentChildNodes, consequentChildNodesMatches = matchConsequentNodes(consequentNodes, nodes, metaSubstitutions);
|
|
130
|
-
consequentNonTerminalNodeMatches = consequentChildNodesMatches; ///
|
|
131
|
-
if (!consequentNonTerminalNodeMatches) {
|
|
132
|
-
var ruleNameStatementRuleName = ruleName === _ruleNames.STATEMENT_RULE_NAME;
|
|
133
|
-
if (ruleNameStatementRuleName) {
|
|
134
|
-
var statementNode = nonTerminalNode, consequentStatementNode = consequentNonTerminalNode, consequentStatementNodeMatches = matchConsequentStatementNode(consequentStatementNode, statementNode, metaSubstitutions);
|
|
135
|
-
consequentNonTerminalNodeMatches = consequentStatementNodeMatches; ///
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
return consequentNonTerminalNodeMatches;
|
|
140
|
-
}
|
|
141
|
-
function matchConsequentStatementNode(consequentStatementNode, statementNode, metaSubstitutions) {
|
|
142
|
-
var consequentStatementNodeMatches = false;
|
|
143
|
-
var consequentNonTerminalNode = consequentStatementNode, consequentChildNodes = consequentNonTerminalNode.getChildNodes(), consequentChildNodesLength = consequentChildNodes.length;
|
|
144
|
-
if (consequentChildNodesLength === 1) {
|
|
145
|
-
var firstConsequentChildNode = (0, _array.first)(consequentChildNodes), consequentChildNode = firstConsequentChildNode, consequentChildNodeNonTerminalNode = consequentChildNode.isNonTerminalNode();
|
|
146
|
-
if (consequentChildNodeNonTerminalNode) {
|
|
147
|
-
var consequentNonTerminalChildNode = consequentChildNode, consequentNonTerminalChildNodeRuleName = consequentNonTerminalChildNode.getRuleName(), consequentNonTerminalChildNodeRuleNameVariableRuleName = consequentNonTerminalChildNodeRuleName === _ruleNames.VARIABLE_RULE_NAME;
|
|
148
|
-
if (consequentNonTerminalChildNodeRuleNameVariableRuleName) {
|
|
149
|
-
var consequentVariableNode = consequentNonTerminalChildNode, nonTerminalNode = statementNode, childNodes = nonTerminalNode.getChildNodes(), nodes = childNodes, consequentMetaVariableMatches = matchConsequentVariable(consequentVariableNode, nodes, metaSubstitutions);
|
|
150
|
-
consequentStatementNodeMatches = consequentMetaVariableMatches; ///
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
return consequentStatementNodeMatches;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zZXF1ZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCIuL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgbm9kZUFzU3RyaW5nIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgdmFyaWFibGVOYW1lRnJvbVZhcmlhYmxlTm9kZSB9IGZyb20gXCIuL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgc3RhdGVtZW50Tm9kZUZyb21TdGF0ZW1lbnRTdHJpbmcgfSBmcm9tIFwiLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBWQVJJQUJMRV9SVUxFX05BTUUsIFNUQVRFTUVOVF9SVUxFX05BTUUgfSBmcm9tIFwiLi9ydWxlTmFtZXNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29uc2VxdWVudCB7XG4gIGNvbnN0cnVjdG9yKHN0YXRlbWVudE5vZGUpIHtcbiAgICB0aGlzLnN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlO1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnROb2RlO1xuICB9XG5cbiAgbWF0Y2hTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIG1ldGFTdWJzdGl0dXRpb25zKSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gc3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICAgIGNvbnNlcXVlbnROb25UZXJtaW5hbE5vZGUgPSB0aGlzLnN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICBjb25zZXF1ZW50Tm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IG1hdGNoQ29uc2VxdWVudE5vblRlcm1pbmFsTm9kZShjb25zZXF1ZW50Tm9uVGVybWluYWxOb2RlLCBub25UZXJtaW5hbE5vZGUsIG1ldGFTdWJzdGl0dXRpb25zKSxcbiAgICAgICAgICBzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IGNvbnNlcXVlbnROb25UZXJtaW5hbE5vZGVNYXRjaGVzOyAvLy9cblxuICAgIHJldHVybiBzdGF0ZW1lbnROb2RlTWF0Y2hlcztcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBub2RlQXNTdHJpbmcodGhpcy5zdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRTdHJpbmcsICAvLy9cbiAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAgc3RhdGVtZW50XG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIHJlbGVhc2VDb250ZXh0KSB7XG4gICAgY29uc3QgeyBzdGF0ZW1lbnQgfSA9IGpzb24sXG4gICAgICAgICAgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LCAgLy8vXG4gICAgICAgICAgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVGcm9tU3RhdGVtZW50U3RyaW5nKHN0YXRlbWVudFN0cmluZywgcmVsZWFzZUNvbnRleHQpLFxuICAgICAgICAgIGNvbnNlcXVlbnQgPSBuZXcgQ29uc2VxdWVudChzdGF0ZW1lbnROb2RlKTtcblxuICAgIHJldHVybiBjb25zZXF1ZW50O1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpIHtcbiAgICBjb25zdCBjb25zZXF1ZW50ID0gbmV3IENvbnNlcXVlbnQoc3RhdGVtZW50Tm9kZSk7XG5cbiAgICByZXR1cm4gY29uc2VxdWVudDtcbiAgfVxufVxuXG5mdW5jdGlvbiBtYXRjaENvbnNlcXVlbnROb2RlKGNvbnNlcXVlbnROb2RlLCBub2RlLCBtZXRhU3Vic3RpdHV0aW9ucykge1xuICBsZXQgY29uc2VxdWVudE5vZGVNYXRjaGVzID0gZmFsc2U7XG5cbiAgY29uc3Qgbm9kZVRlcm1pbmFsTm9kZSA9IG5vZGUuaXNUZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgcnVsZU5vZGVUZXJtaW5hbE5vZGUgPSBjb25zZXF1ZW50Tm9kZS5pc1Rlcm1pbmFsTm9kZSgpO1xuXG4gIGlmIChub2RlVGVybWluYWxOb2RlID09PSBydWxlTm9kZVRlcm1pbmFsTm9kZSkge1xuICAgIGlmIChub2RlVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCB0ZXJtaW5hbE5vZGUgPSBub2RlLCAgLy8vXG4gICAgICAgICAgICBjb25zZXF1ZW50VGVybWluYWxOb2RlID0gY29uc2VxdWVudE5vZGUsICAvLy9cbiAgICAgICAgICAgIGNvbnNlcXVlbnRUZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hDb25zZXF1ZW50VGVybWluYWxOb2RlKGNvbnNlcXVlbnRUZXJtaW5hbE5vZGUsIHRlcm1pbmFsTm9kZSwgbWV0YVN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICBjb25zZXF1ZW50Tm9kZU1hdGNoZXMgPSBjb25zZXF1ZW50VGVybWluYWxOb2RlTWF0Y2hlczsgIC8vL1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBub2RlLCAvLy9cbiAgICAgICAgICAgIGNvbnNlcXVlbnROb25UZXJtaW5hbE5vZGUgPSBjb25zZXF1ZW50Tm9kZSwgIC8vL1xuICAgICAgICAgICAgY29uc2VxdWVudE5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBtYXRjaENvbnNlcXVlbnROb25UZXJtaW5hbE5vZGUoY29uc2VxdWVudE5vblRlcm1pbmFsTm9kZSwgbm9uVGVybWluYWxOb2RlLCBtZXRhU3Vic3RpdHV0aW9ucyk7XG5cbiAgICAgIGNvbnNlcXVlbnROb2RlTWF0Y2hlcyA9IGNvbnNlcXVlbnROb25UZXJtaW5hbE5vZGVNYXRjaGVzOyAvLy9cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29uc2VxdWVudE5vZGVNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaENvbnNlcXVlbnROb2Rlcyhjb25zZXF1ZW50Tm9kZXMsIG5vZGVzLCBtZXRhU3Vic3RpdHV0aW9ucykge1xuICBsZXQgY29uc2VxdWVudE5vZGVzTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vZGVzTGVuZ3RoID0gbm9kZXMubGVuZ3RoLFxuICAgICAgICBjb25zZXF1ZW50Tm9kZXNMZW5ndGggPSBjb25zZXF1ZW50Tm9kZXMubGVuZ3RoO1xuXG4gIGlmIChub2Rlc0xlbmd0aCA9PT0gY29uc2VxdWVudE5vZGVzTGVuZ3RoKSB7XG4gICAgY29uc2VxdWVudE5vZGVzTWF0Y2hlcyA9IG5vZGVzLmV2ZXJ5KChub2RlLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgY29uc2VxdWVudE5vZGUgPSBjb25zZXF1ZW50Tm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgY29uc2VxdWVudE5vZGVNYXRjaGVzID0gbWF0Y2hDb25zZXF1ZW50Tm9kZShjb25zZXF1ZW50Tm9kZSwgbm9kZSwgbWV0YVN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICBpZiAoY29uc2VxdWVudE5vZGVNYXRjaGVzKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGNvbnNlcXVlbnROb2Rlc01hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1hdGNoQ29uc2VxdWVudFZhcmlhYmxlKGNvbnNlcXVlbnRWYXJpYWJsZU5vZGUsIG5vZGVzLCBtZXRhU3Vic3RpdHV0aW9ucykge1xuICBsZXQgY29uc2VxdWVudFZhcmlhYmxlTWF0Y2hlcyA9IHRydWU7XG5cbiAgY29uc3QgY29uc2VxdWVudFZhcmlhYmxlTmFtZSA9IHZhcmlhYmxlTmFtZUZyb21WYXJpYWJsZU5vZGUoY29uc2VxdWVudFZhcmlhYmxlTm9kZSksXG4gICAgICAgIG1ldGFTdWJzdGl0dXRpb24gPSBtZXRhU3Vic3RpdHV0aW9ucy5maW5kKChtZXRhU3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgICAgICAgY29uc3QgdmFyaWFibGVOYW1lID0gbWV0YVN1YnN0aXR1dGlvbi5nZXRWYXJpYWJsZU5hbWUoKTtcblxuICAgICAgICAgIGlmICh2YXJpYWJsZU5hbWUgPT09IGNvbnNlcXVlbnRWYXJpYWJsZU5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSkgfHwgbnVsbDtcblxuICBpZiAobWV0YVN1YnN0aXR1dGlvbiAhPT0gbnVsbCkge1xuICAgIGNvbnN0IG1ldGFTdWJzdGl0dXRpb25Ob2Rlc01hdGNoID0gbWV0YVN1YnN0aXR1dGlvbi5tYXRjaE5vZGVzKG5vZGVzKTtcblxuICAgIGNvbnNlcXVlbnRWYXJpYWJsZU1hdGNoZXMgPSBtZXRhU3Vic3RpdHV0aW9uTm9kZXNNYXRjaDsgIC8vL1xuICB9XG5cbiAgcmV0dXJuIGNvbnNlcXVlbnRWYXJpYWJsZU1hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1hdGNoQ29uc2VxdWVudFRlcm1pbmFsTm9kZShjb25zZXF1ZW50VGVybWluYWxOb2RlLCB0ZXJtaW5hbE5vZGUsIG1ldGFTdWJzdGl0dXRpb25zKSB7XG4gIGNvbnN0IG1hdGNoZXMgPSBjb25zZXF1ZW50VGVybWluYWxOb2RlLm1hdGNoKHRlcm1pbmFsTm9kZSksXG4gICAgICAgIGNvbnNlcXVlbnRUZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hlczsgIC8vL1xuXG4gIHJldHVybiBjb25zZXF1ZW50VGVybWluYWxOb2RlTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWF0Y2hDb25zZXF1ZW50Tm9uVGVybWluYWxOb2RlKGNvbnNlcXVlbnROb25UZXJtaW5hbE5vZGUsIG5vblRlcm1pbmFsTm9kZSwgbWV0YVN1YnN0aXR1dGlvbnMpIHtcbiAgbGV0IGNvbnNlcXVlbnROb25UZXJtaW5hbE5vZGVNYXRjaGVzID0gZmFsc2U7XG5cbiAgY29uc3QgcnVsZU5hbWUgPSBub25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKSxcbiAgICAgICAgY29uc2VxdWVudFJ1bGVOYW1lID0gY29uc2VxdWVudE5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpOyAvLy9cblxuICBpZiAocnVsZU5hbWUgPT09IGNvbnNlcXVlbnRSdWxlTmFtZSkge1xuICAgIGNvbnN0IGNoaWxkTm9kZXMgPSBub25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgIGNvbnNlcXVlbnRDaGlsZE5vZGVzID0gY29uc2VxdWVudE5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgbm9kZXMgPSBjaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICBjb25zZXF1ZW50Tm9kZXMgPSBjb25zZXF1ZW50Q2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgY29uc2VxdWVudENoaWxkTm9kZXNNYXRjaGVzID0gbWF0Y2hDb25zZXF1ZW50Tm9kZXMoY29uc2VxdWVudE5vZGVzLCBub2RlcywgbWV0YVN1YnN0aXR1dGlvbnMpO1xuXG4gICAgY29uc2VxdWVudE5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBjb25zZXF1ZW50Q2hpbGROb2Rlc01hdGNoZXM7IC8vL1xuXG4gICAgaWYgKCFjb25zZXF1ZW50Tm9uVGVybWluYWxOb2RlTWF0Y2hlcykge1xuICAgICAgY29uc3QgcnVsZU5hbWVTdGF0ZW1lbnRSdWxlTmFtZSA9IChydWxlTmFtZSA9PT0gU1RBVEVNRU5UX1JVTEVfTkFNRSk7XG5cbiAgICAgIGlmIChydWxlTmFtZVN0YXRlbWVudFJ1bGVOYW1lKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBub25UZXJtaW5hbE5vZGUsICAvLy9cbiAgICAgICAgICAgICAgY29uc2VxdWVudFN0YXRlbWVudE5vZGUgPSBjb25zZXF1ZW50Tm9uVGVybWluYWxOb2RlLCAgLy8vXG4gICAgICAgICAgICAgIGNvbnNlcXVlbnRTdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IG1hdGNoQ29uc2VxdWVudFN0YXRlbWVudE5vZGUoY29uc2VxdWVudFN0YXRlbWVudE5vZGUsIHN0YXRlbWVudE5vZGUsIG1ldGFTdWJzdGl0dXRpb25zKTtcblxuICAgICAgICBjb25zZXF1ZW50Tm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IGNvbnNlcXVlbnRTdGF0ZW1lbnROb2RlTWF0Y2hlczsgLy8vXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNvbnNlcXVlbnROb25UZXJtaW5hbE5vZGVNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaENvbnNlcXVlbnRTdGF0ZW1lbnROb2RlKGNvbnNlcXVlbnRTdGF0ZW1lbnROb2RlLCBzdGF0ZW1lbnROb2RlLCBtZXRhU3Vic3RpdHV0aW9ucykge1xuICBsZXQgY29uc2VxdWVudFN0YXRlbWVudE5vZGVNYXRjaGVzID0gZmFsc2U7XG5cbiAgY29uc3QgY29uc2VxdWVudE5vblRlcm1pbmFsTm9kZSA9IGNvbnNlcXVlbnRTdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgIGNvbnNlcXVlbnRDaGlsZE5vZGVzID0gY29uc2VxdWVudE5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgIGNvbnNlcXVlbnRDaGlsZE5vZGVzTGVuZ3RoID0gY29uc2VxdWVudENoaWxkTm9kZXMubGVuZ3RoO1xuXG4gIGlmIChjb25zZXF1ZW50Q2hpbGROb2Rlc0xlbmd0aCA9PT0gMSkge1xuICAgIGNvbnN0IGZpcnN0Q29uc2VxdWVudENoaWxkTm9kZSA9IGZpcnN0KGNvbnNlcXVlbnRDaGlsZE5vZGVzKSxcbiAgICAgICAgICBjb25zZXF1ZW50Q2hpbGROb2RlID0gZmlyc3RDb25zZXF1ZW50Q2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgY29uc2VxdWVudENoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSA9IGNvbnNlcXVlbnRDaGlsZE5vZGUuaXNOb25UZXJtaW5hbE5vZGUoKTtcblxuICAgIGlmIChjb25zZXF1ZW50Q2hpbGROb2RlTm9uVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCBjb25zZXF1ZW50Tm9uVGVybWluYWxDaGlsZE5vZGUgPSBjb25zZXF1ZW50Q2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICBjb25zZXF1ZW50Tm9uVGVybWluYWxDaGlsZE5vZGVSdWxlTmFtZSA9IGNvbnNlcXVlbnROb25UZXJtaW5hbENoaWxkTm9kZS5nZXRSdWxlTmFtZSgpLFxuICAgICAgICAgICAgY29uc2VxdWVudE5vblRlcm1pbmFsQ2hpbGROb2RlUnVsZU5hbWVWYXJpYWJsZVJ1bGVOYW1lID0gKGNvbnNlcXVlbnROb25UZXJtaW5hbENoaWxkTm9kZVJ1bGVOYW1lID09PSBWQVJJQUJMRV9SVUxFX05BTUUpO1xuXG4gICAgICBpZiAoY29uc2VxdWVudE5vblRlcm1pbmFsQ2hpbGROb2RlUnVsZU5hbWVWYXJpYWJsZVJ1bGVOYW1lKSB7XG4gICAgICAgIGNvbnN0IGNvbnNlcXVlbnRWYXJpYWJsZU5vZGUgPSBjb25zZXF1ZW50Tm9uVGVybWluYWxDaGlsZE5vZGUsICAvLy9cbiAgICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlID0gc3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICAgICAgICBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgICAgbm9kZXMgPSBjaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICAgICAgY29uc2VxdWVudE1ldGFWYXJpYWJsZU1hdGNoZXMgPSBtYXRjaENvbnNlcXVlbnRWYXJpYWJsZShjb25zZXF1ZW50VmFyaWFibGVOb2RlLCBub2RlcywgbWV0YVN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICAgIGNvbnNlcXVlbnRTdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IGNvbnNlcXVlbnRNZXRhVmFyaWFibGVNYXRjaGVzOyAvLy9cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29uc2VxdWVudFN0YXRlbWVudE5vZGVNYXRjaGVzO1xufVxuIl0sIm5hbWVzIjpbIkNvbnNlcXVlbnQiLCJzdGF0ZW1lbnROb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsIm1hdGNoU3RhdGVtZW50Tm9kZSIsIm1ldGFTdWJzdGl0dXRpb25zIiwibm9uVGVybWluYWxOb2RlIiwiY29uc2VxdWVudE5vblRlcm1pbmFsTm9kZSIsImNvbnNlcXVlbnROb25UZXJtaW5hbE5vZGVNYXRjaGVzIiwibWF0Y2hDb25zZXF1ZW50Tm9uVGVybWluYWxOb2RlIiwic3RhdGVtZW50Tm9kZU1hdGNoZXMiLCJ0b0pTT04iLCJzdGF0ZW1lbnRTdHJpbmciLCJub2RlQXNTdHJpbmciLCJzdGF0ZW1lbnQiLCJqc29uIiwiZnJvbUpTT04iLCJyZWxlYXNlQ29udGV4dCIsInN0YXRlbWVudE5vZGVGcm9tU3RhdGVtZW50U3RyaW5nIiwiY29uc2VxdWVudCIsImZyb21TdGF0ZW1lbnROb2RlIiwibWF0Y2hDb25zZXF1ZW50Tm9kZSIsImNvbnNlcXVlbnROb2RlIiwibm9kZSIsImNvbnNlcXVlbnROb2RlTWF0Y2hlcyIsIm5vZGVUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsInJ1bGVOb2RlVGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlIiwiY29uc2VxdWVudFRlcm1pbmFsTm9kZSIsImNvbnNlcXVlbnRUZXJtaW5hbE5vZGVNYXRjaGVzIiwibWF0Y2hDb25zZXF1ZW50VGVybWluYWxOb2RlIiwibWF0Y2hDb25zZXF1ZW50Tm9kZXMiLCJjb25zZXF1ZW50Tm9kZXMiLCJub2RlcyIsImNvbnNlcXVlbnROb2Rlc01hdGNoZXMiLCJub2Rlc0xlbmd0aCIsImxlbmd0aCIsImNvbnNlcXVlbnROb2Rlc0xlbmd0aCIsImV2ZXJ5IiwiaW5kZXgiLCJtYXRjaENvbnNlcXVlbnRWYXJpYWJsZSIsImNvbnNlcXVlbnRWYXJpYWJsZU5vZGUiLCJjb25zZXF1ZW50VmFyaWFibGVNYXRjaGVzIiwiY29uc2VxdWVudFZhcmlhYmxlTmFtZSIsInZhcmlhYmxlTmFtZUZyb21WYXJpYWJsZU5vZGUiLCJtZXRhU3Vic3RpdHV0aW9uIiwiZmluZCIsInZhcmlhYmxlTmFtZSIsImdldFZhcmlhYmxlTmFtZSIsIm1ldGFTdWJzdGl0dXRpb25Ob2Rlc01hdGNoIiwibWF0Y2hOb2RlcyIsIm1hdGNoZXMiLCJtYXRjaCIsInJ1bGVOYW1lIiwiZ2V0UnVsZU5hbWUiLCJjb25zZXF1ZW50UnVsZU5hbWUiLCJjaGlsZE5vZGVzIiwiZ2V0Q2hpbGROb2RlcyIsImNvbnNlcXVlbnRDaGlsZE5vZGVzIiwiY29uc2VxdWVudENoaWxkTm9kZXNNYXRjaGVzIiwicnVsZU5hbWVTdGF0ZW1lbnRSdWxlTmFtZSIsIlNUQVRFTUVOVF9SVUxFX05BTUUiLCJjb25zZXF1ZW50U3RhdGVtZW50Tm9kZSIsImNvbnNlcXVlbnRTdGF0ZW1lbnROb2RlTWF0Y2hlcyIsIm1hdGNoQ29uc2VxdWVudFN0YXRlbWVudE5vZGUiLCJjb25zZXF1ZW50Q2hpbGROb2Rlc0xlbmd0aCIsImZpcnN0Q29uc2VxdWVudENoaWxkTm9kZSIsImZpcnN0IiwiY29uc2VxdWVudENoaWxkTm9kZSIsImNvbnNlcXVlbnRDaGlsZE5vZGVOb25UZXJtaW5hbE5vZGUiLCJpc05vblRlcm1pbmFsTm9kZSIsImNvbnNlcXVlbnROb25UZXJtaW5hbENoaWxkTm9kZSIsImNvbnNlcXVlbnROb25UZXJtaW5hbENoaWxkTm9kZVJ1bGVOYW1lIiwiY29uc2VxdWVudE5vblRlcm1pbmFsQ2hpbGROb2RlUnVsZU5hbWVWYXJpYWJsZVJ1bGVOYW1lIiwiVkFSSUFCTEVfUlVMRV9OQU1FIiwiY29uc2VxdWVudE1ldGFWYXJpYWJsZU1hdGNoZXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBUXFCQTs7O3FCQU5DO3NCQUNPO3FCQUNnQjt5QkFFVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFekMsSUFBQSxBQUFNQSwyQkE0Q2xCLEFBNUNZO2FBQU1BLFdBQ1BDLGFBQWE7OEJBRE5EO1FBRWpCLElBQUksQ0FBQ0MsYUFBYSxHQUFHQTs7aUJBRkpEOztZQUtuQkUsS0FBQUE7bUJBQUFBLFNBQUFBLG1CQUFtQjtnQkFDakIsT0FBTyxJQUFJLENBQUNELGFBQWE7WUFDM0I7OztZQUVBRSxLQUFBQTttQkFBQUEsU0FBQUEsbUJBQW1CRixhQUFhLEVBQUVHLGlCQUFpQixFQUFFO2dCQUNuRCxJ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
|