occam-verify-cli 0.0.870 → 0.0.871
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/axiomLemmaTheoremConjecture.js +13 -13
- package/lib/context/file.js +77 -73
- package/lib/label.js +5 -6
- package/lib/metaLemmaMetatheorem.js +13 -13
- package/lib/mixins/context.js +28 -28
- package/lib/rule.js +13 -13
- package/lib/ruleNames.js +4 -4
- package/lib/utilities/name.js +8 -8
- package/lib/utilities/node.js +14 -14
- package/lib/utilities/query.js +4 -9
- package/lib/utilities/tokens.js +6 -6
- package/lib/verify/axiom.js +4 -4
- package/lib/verify/conjecture.js +4 -4
- package/lib/verify/label.js +8 -9
- package/lib/verify/labels.js +15 -8
- package/lib/verify/lemma.js +4 -4
- package/lib/verify/metaLemma.js +4 -4
- package/lib/verify/metastatement/qualified.js +3 -3
- package/lib/verify/metatheorem.js +4 -4
- package/lib/verify/rule.js +4 -4
- package/lib/verify/statement/qualified.js +29 -29
- package/lib/verify/theorem.js +4 -4
- package/package.json +1 -1
- package/src/axiomLemmaTheoremConjecture.js +13 -13
- package/src/context/file.js +79 -73
- package/src/label.js +6 -7
- package/src/metaLemmaMetatheorem.js +13 -13
- package/src/mixins/context.js +17 -17
- package/src/rule.js +13 -13
- package/src/ruleNames.js +1 -1
- package/src/utilities/name.js +7 -7
- package/src/utilities/node.js +13 -13
- package/src/utilities/query.js +3 -9
- package/src/utilities/tokens.js +4 -4
- package/src/verify/axiom.js +4 -4
- package/src/verify/conjecture.js +4 -4
- package/src/verify/label.js +8 -9
- package/src/verify/labels.js +17 -7
- package/src/verify/lemma.js +4 -4
- package/src/verify/metaLemma.js +4 -4
- package/src/verify/metastatement/qualified.js +5 -4
- package/src/verify/metatheorem.js +4 -4
- package/src/verify/rule.js +4 -4
- package/src/verify/statement/qualified.js +35 -30
- package/src/verify/theorem.js +4 -4
|
@@ -16,14 +16,14 @@ function _interop_require_default(obj) {
|
|
|
16
16
|
default: obj
|
|
17
17
|
};
|
|
18
18
|
}
|
|
19
|
-
var
|
|
19
|
+
var equalityNodeQuery = (0, _query.nodeQuery)("/qualifiedStatement/statement/equality!"), statementNodeQuery = (0, _query.nodeQuery)("/qualifiedStatement/statement!"), typeAssertionNodeQuery = (0, _query.nodeQuery)("/qualifiedStatement/statement/typeAssertion!"), referenceMetavariableNodeQuery = (0, _query.nodeQuery)("/qualifiedStatement/reference!/metavariable!");
|
|
20
20
|
function verifyQualifiedStatement(qualifiedStatementNode, assignments, derived, localContext) {
|
|
21
21
|
var qualifiedStatementVerified = false;
|
|
22
22
|
var statementNode = statementNodeQuery(qualifiedStatementNode);
|
|
23
23
|
if (statementNode !== null) {
|
|
24
24
|
var qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
25
25
|
localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement..."), qualifiedStatementNode);
|
|
26
|
-
var
|
|
26
|
+
var referenceMetavariableNode = referenceMetavariableNodeQuery(qualifiedStatementNode), verifyQualifiedStatementFunctions = [
|
|
27
27
|
verifyQualifiedStatementAAgainstRule,
|
|
28
28
|
verifyQualifiedStatementAAgainstAxiom,
|
|
29
29
|
verifyQualifiedStatementAAgainstLemma,
|
|
@@ -31,7 +31,7 @@ function verifyQualifiedStatement(qualifiedStatementNode, assignments, derived,
|
|
|
31
31
|
verifyQualifiedStatementAAgainstConjecture
|
|
32
32
|
];
|
|
33
33
|
qualifiedStatementVerified = verifyQualifiedStatementFunctions.some(function(verifyQualifiedStatementFunction) {
|
|
34
|
-
var qualifiedStatementVerified = verifyQualifiedStatementFunction(qualifiedStatementNode,
|
|
34
|
+
var qualifiedStatementVerified = verifyQualifiedStatementFunction(qualifiedStatementNode, referenceMetavariableNode, localContext);
|
|
35
35
|
if (qualifiedStatementVerified) {
|
|
36
36
|
return true;
|
|
37
37
|
}
|
|
@@ -58,72 +58,72 @@ function verifyQualifiedStatement(qualifiedStatementNode, assignments, derived,
|
|
|
58
58
|
}
|
|
59
59
|
return qualifiedStatementVerified;
|
|
60
60
|
}
|
|
61
|
-
function verifyQualifiedStatementAAgainstRule(qualifiedStatementNode,
|
|
61
|
+
function verifyQualifiedStatementAAgainstRule(qualifiedStatementNode, referenceMetavariableNode, localContext) {
|
|
62
62
|
var qualifiedStatementVerifiedAgainstRule = false;
|
|
63
|
-
var rule = localContext.
|
|
63
|
+
var labelMetavariableNode = referenceMetavariableNode, rule = localContext.findRuleByLabelMetavariableNode(labelMetavariableNode);
|
|
64
64
|
if (rule !== null) {
|
|
65
|
-
var
|
|
66
|
-
localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(
|
|
65
|
+
var referenceMetavariableString = localContext.nodeAsString(referenceMetavariableNode), statementNode = statementNodeQuery(qualifiedStatementNode), statementLocalContext = localContext, qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
66
|
+
localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceMetavariableString, "' rule..."), statementNode);
|
|
67
67
|
var ruleMatchesStatement = rule.matchStatement(statementNode, statementLocalContext);
|
|
68
68
|
qualifiedStatementVerifiedAgainstRule = ruleMatchesStatement; ///
|
|
69
69
|
if (qualifiedStatementVerifiedAgainstRule) {
|
|
70
|
-
localContext.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(
|
|
70
|
+
localContext.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceMetavariableString, "' rule."), statementNode);
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
return qualifiedStatementVerifiedAgainstRule;
|
|
74
74
|
}
|
|
75
|
-
function verifyQualifiedStatementAAgainstAxiom(qualifiedStatementNode,
|
|
75
|
+
function verifyQualifiedStatementAAgainstAxiom(qualifiedStatementNode, referenceMetavariableNode, localContext) {
|
|
76
76
|
var qualifiedStatementVerifiedAgainstAxiom = false;
|
|
77
|
-
var axiom = localContext.
|
|
77
|
+
var labelMetavariableNode = referenceMetavariableNode, axiom = localContext.findAxiomByLabelMetavariableNode(labelMetavariableNode);
|
|
78
78
|
if (axiom !== null) {
|
|
79
|
-
var
|
|
80
|
-
localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(
|
|
79
|
+
var referenceMetavariableString = localContext.nodeAsString(referenceMetavariableNode), statementNode = statementNodeQuery(qualifiedStatementNode), statementLocalContext = localContext, qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
80
|
+
localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceMetavariableString, "' axiom..."), statementNode);
|
|
81
81
|
var axiomMatchesStatement = axiom.matchStatement(statementNode, statementLocalContext);
|
|
82
82
|
qualifiedStatementVerifiedAgainstAxiom = axiomMatchesStatement; ///
|
|
83
83
|
if (qualifiedStatementVerifiedAgainstAxiom) {
|
|
84
|
-
localContext.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(
|
|
84
|
+
localContext.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceMetavariableString, "' axiom."), statementNode);
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
return qualifiedStatementVerifiedAgainstAxiom;
|
|
88
88
|
}
|
|
89
|
-
function verifyQualifiedStatementAAgainstLemma(qualifiedStatementNode,
|
|
89
|
+
function verifyQualifiedStatementAAgainstLemma(qualifiedStatementNode, referenceMetavariableNode, localContext) {
|
|
90
90
|
var qualifiedStatementVerifiedAgainstLemma = false;
|
|
91
|
-
var lemma = localContext.
|
|
91
|
+
var labelMetavariableNode = referenceMetavariableNode, lemma = localContext.findLemmaByLabelMetavariableNode(labelMetavariableNode);
|
|
92
92
|
if (lemma !== null) {
|
|
93
|
-
var
|
|
94
|
-
localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(
|
|
93
|
+
var referenceMetavariableString = localContext.nodeAsString(referenceMetavariableNode), statementNode = statementNodeQuery(qualifiedStatementNode), statementLocalContext = localContext, qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
94
|
+
localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceMetavariableString, "' lemma..."), statementNode);
|
|
95
95
|
var lemmaMatchesStatement = lemma.matchStatement(statementNode, statementLocalContext);
|
|
96
96
|
qualifiedStatementVerifiedAgainstLemma = lemmaMatchesStatement; ///
|
|
97
97
|
if (qualifiedStatementVerifiedAgainstLemma) {
|
|
98
|
-
localContext.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(
|
|
98
|
+
localContext.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceMetavariableString, "' lemma."), statementNode);
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
101
|
return qualifiedStatementVerifiedAgainstLemma;
|
|
102
102
|
}
|
|
103
|
-
function verifyQualifiedStatementAAgainstTheorem(qualifiedStatementNode,
|
|
103
|
+
function verifyQualifiedStatementAAgainstTheorem(qualifiedStatementNode, referenceMetavariableNode, localContext) {
|
|
104
104
|
var qualifiedStatementVerifiedAgainstTheorem = false;
|
|
105
|
-
var theorem = localContext.
|
|
105
|
+
var labelMetavariableNode = referenceMetavariableNode, theorem = localContext.findTheoremByLabelMetavariableNode(labelMetavariableNode);
|
|
106
106
|
if (theorem !== null) {
|
|
107
|
-
var
|
|
108
|
-
localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(
|
|
107
|
+
var referenceMetavariableString = localContext.nodeAsString(referenceMetavariableNode), statementNode = statementNodeQuery(qualifiedStatementNode), statementLocalContext = localContext, qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
108
|
+
localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceMetavariableString, "' theorem..."), statementNode);
|
|
109
109
|
var theoremMatchesStatement = theorem.matchStatement(statementNode, statementLocalContext);
|
|
110
110
|
qualifiedStatementVerifiedAgainstTheorem = theoremMatchesStatement; ///
|
|
111
111
|
if (qualifiedStatementVerifiedAgainstTheorem) {
|
|
112
|
-
localContext.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(
|
|
112
|
+
localContext.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceMetavariableString, "' theorem."), statementNode);
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
115
|
return qualifiedStatementVerifiedAgainstTheorem;
|
|
116
116
|
}
|
|
117
|
-
function verifyQualifiedStatementAAgainstConjecture(qualifiedStatementNode,
|
|
117
|
+
function verifyQualifiedStatementAAgainstConjecture(qualifiedStatementNode, referenceMetavariableNode, localContext) {
|
|
118
118
|
var qualifiedStatementVerifiedAgainstConjecture = false;
|
|
119
|
-
var conjecture = localContext.
|
|
119
|
+
var labelMetavariableNode = referenceMetavariableNode, conjecture = localContext.findConjectureByLabelMetavariableNode(labelMetavariableNode);
|
|
120
120
|
if (conjecture !== null) {
|
|
121
|
-
var
|
|
122
|
-
localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(
|
|
121
|
+
var referenceMetavariableString = localContext.nodeAsString(referenceMetavariableNode), statementNode = statementNodeQuery(qualifiedStatementNode), statementLocalContext = localContext, qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
122
|
+
localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceMetavariableString, "' conjecture..."), statementNode);
|
|
123
123
|
var conjectureMatchesStatement = conjecture.matchStatement(statementNode, statementLocalContext);
|
|
124
124
|
qualifiedStatementVerifiedAgainstConjecture = conjectureMatchesStatement; ///
|
|
125
125
|
if (qualifiedStatementVerifiedAgainstConjecture) {
|
|
126
|
-
localContext.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(
|
|
126
|
+
localContext.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceMetavariableString, "' conjecture."), statementNode);
|
|
127
127
|
}
|
|
128
128
|
}
|
|
129
129
|
return qualifiedStatementVerifiedAgainstConjecture;
|
|
@@ -157,4 +157,4 @@ function verifyQualifiedStatementAsTypeAssertion(qualifiedStatementNode, assignm
|
|
|
157
157
|
return statementVerifiedAsTypeAssertion;
|
|
158
158
|
}
|
|
159
159
|
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50L3F1YWxpZmllZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHZlcmlmeUVxdWFsaXR5IGZyb20gXCIuLi9lcXVhbGl0eVwiO1xuaW1wb3J0IHZlcmlmeVR5cGVBc3NlcnRpb24gZnJvbSBcIi4uL3R5cGVBc3NlcnRpb25cIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCBsYWJlbE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9xdWFsaWZpZWRTdGF0ZW1lbnQvcXVhbGlmaWNhdGlvbiEvbGFiZWwhXCIpLFxuICAgICAgZXF1YWxpdHlOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvcXVhbGlmaWVkU3RhdGVtZW50L3N0YXRlbWVudC9lcXVhbGl0eSFcIiksXG4gICAgICBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvcXVhbGlmaWVkU3RhdGVtZW50L3N0YXRlbWVudCFcIiksXG4gICAgICB0eXBlQXNzZXJ0aW9uTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3F1YWxpZmllZFN0YXRlbWVudC9zdGF0ZW1lbnQvdHlwZUFzc2VydGlvbiFcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudChxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgaWYgKHN0YXRlbWVudE5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQuLi5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IGxhYmVsTm9kZSA9IGxhYmVsTm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9ucyA9IFtcbiAgICAgICAgICAgIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFBZ2FpbnN0UnVsZSxcbiAgICAgICAgICAgIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFBZ2FpbnN0QXhpb20sXG4gICAgICAgICAgICB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdExlbW1hLFxuICAgICAgICAgICAgdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RUaGVvcmVtLFxuICAgICAgICAgICAgdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RDb25qZWN0dXJlXG4gICAgICAgICAgXTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb25zLnNvbWUoKHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9uKSA9PiB7ICAvLy9cbiAgICAgIGNvbnN0IHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb24ocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgbGFiZWxOb2RlLCBsb2NhbENvbnRleHQpO1xuXG4gICAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICAgIGRlcml2ZWQgPSBmYWxzZTsgIC8vL1xuXG4gICAgICBjb25zdCB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbnMgPSBbXG4gICAgICAgICAgICAgIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFzRXF1YWxpdHksXG4gICAgICAgICAgICAgIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFzVHlwZUFzc2VydGlvblxuICAgICAgICAgICAgXTtcblxuICAgICAgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbnMuZXZlcnkoKHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9uKSA9PiB7IC8vL1xuICAgICAgICBjb25zdCBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9uKHF1YWxpZmllZFN0YXRlbWVudE5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQsICgpID0+IHtcbiAgICAgICAgICBjb25zdCB2ZXJpZmllZEFoZWFkID0gdHJ1ZTtcblxuICAgICAgICAgIHJldHVybiB2ZXJpZmllZEFoZWFkO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50LmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RSdWxlKHF1YWxpZmllZFN0YXRlbWVudE5vZGUsIGxhYmVsTm9kZSwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RSdWxlID0gZmFsc2U7XG5cbiAgY29uc3QgcnVsZSA9IGxvY2FsQ29udGV4dC5maW5kUnVsZUJ5TGFiZWxOb2RlKGxhYmVsTm9kZSk7XG5cbiAgaWYgKHJ1bGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBsYWJlbFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcobGFiZWxOb2RlKSxcbiAgICAgICAgICBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHN0YXRlbWVudExvY2FsQ29udGV4dCA9IGxvY2FsQ29udGV4dCwgLy8vXG4gICAgICAgICAgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFnYWluc3QgdGhlICcke2xhYmVsU3RyaW5nfScgcnVsZS4uLmAsIHN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3QgcnVsZU1hdGNoZXNTdGF0ZW1lbnQgPSBydWxlLm1hdGNoU3RhdGVtZW50KHN0YXRlbWVudE5vZGUsIHN0YXRlbWVudExvY2FsQ29udGV4dCk7XG5cbiAgICBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RSdWxlID0gcnVsZU1hdGNoZXNTdGF0ZW1lbnQ7ICAvLy9cblxuICAgIGlmIChxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RSdWxlKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFnYWluc3QgdGhlICcke2xhYmVsU3RyaW5nfScgcnVsZS5gLCBzdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0UnVsZTtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RBeGlvbShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBsYWJlbE5vZGUsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0QXhpb20gPSBmYWxzZTtcblxuICBjb25zdCBheGlvbSA9IGxvY2FsQ29udGV4dC5maW5kQXhpb21CeUxhYmVsTm9kZShsYWJlbE5vZGUpO1xuXG4gIGlmIChheGlvbSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGxhYmVsU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhsYWJlbE5vZGUpLFxuICAgICAgICAgIHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgc3RhdGVtZW50TG9jYWxDb250ZXh0ID0gbG9jYWxDb250ZXh0LCAvLy9cbiAgICAgICAgICBxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgYWdhaW5zdCB0aGUgJyR7bGFiZWxTdHJpbmd9JyBheGlvbS4uLmAsIHN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3QgYXhpb21NYXRjaGVzU3RhdGVtZW50ID0gYXhpb20ubWF0Y2hTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50TG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdEF4aW9tID0gYXhpb21NYXRjaGVzU3RhdGVtZW50OyAvLy9cblxuICAgIGlmIChxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RBeGlvbSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtsYWJlbFN0cmluZ30nIGF4aW9tLmAsIHN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RBeGlvbTtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RMZW1tYShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBsYWJlbE5vZGUsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0TGVtbWEgPSBmYWxzZTtcblxuICBjb25zdCBsZW1tYSA9IGxvY2FsQ29udGV4dC5maW5kTGVtbWFCeUxhYmVsTm9kZShsYWJlbE5vZGUpO1xuXG4gIGlmIChsZW1tYSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGxhYmVsU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhsYWJlbE5vZGUpLFxuICAgICAgICAgIHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgc3RhdGVtZW50TG9jYWxDb250ZXh0ID0gbG9jYWxDb250ZXh0LCAvLy9cbiAgICAgICAgICBxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgYWdhaW5zdCB0aGUgJyR7bGFiZWxTdHJpbmd9JyBsZW1tYS4uLmAsIHN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3QgbGVtbWFNYXRjaGVzU3RhdGVtZW50ID0gbGVtbWEubWF0Y2hTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50TG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdExlbW1hID0gbGVtbWFNYXRjaGVzU3RhdGVtZW50OyAvLy9cblxuICAgIGlmIChxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RMZW1tYSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtsYWJlbFN0cmluZ30nIGxlbW1hLmAsIHN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RMZW1tYTtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RUaGVvcmVtKHF1YWxpZmllZFN0YXRlbWVudE5vZGUsIGxhYmVsTm9kZSwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RUaGVvcmVtID0gZmFsc2U7XG5cbiAgY29uc3QgdGhlb3JlbSA9IGxvY2FsQ29udGV4dC5maW5kVGhlb3JlbUJ5TGFiZWxOb2RlKGxhYmVsTm9kZSk7XG5cbiAgaWYgKHRoZW9yZW0gIT09IG51bGwpIHtcbiAgICBjb25zdCBsYWJlbFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcobGFiZWxOb2RlKSxcbiAgICAgICAgICBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHN0YXRlbWVudExvY2FsQ29udGV4dCA9IGxvY2FsQ29udGV4dCwgLy8vXG4gICAgICAgICAgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFnYWluc3QgdGhlICcke2xhYmVsU3RyaW5nfScgdGhlb3JlbS4uLmAsIHN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3QgdGhlb3JlbU1hdGNoZXNTdGF0ZW1lbnQgPSB0aGVvcmVtLm1hdGNoU3RhdGVtZW50KHN0YXRlbWVudE5vZGUsIHN0YXRlbWVudExvY2FsQ29udGV4dCk7XG5cbiAgICBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RUaGVvcmVtID0gdGhlb3JlbU1hdGNoZXNTdGF0ZW1lbnQ7IC8vL1xuXG4gICAgaWYgKHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdFRoZW9yZW0pIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgYWdhaW5zdCB0aGUgJyR7bGFiZWxTdHJpbmd9JyB0aGVvcmVtLmAsIHN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RUaGVvcmVtO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdENvbmplY3R1cmUocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgbGFiZWxOb2RlLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdENvbmplY3R1cmUgPSBmYWxzZTtcblxuICBjb25zdCBjb25qZWN0dXJlID0gbG9jYWxDb250ZXh0LmZpbmRDb25qZWN0dXJlQnlMYWJlbE5vZGUobGFiZWxOb2RlKTtcblxuICBpZiAoY29uamVjdHVyZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGxhYmVsU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhsYWJlbE5vZGUpLFxuICAgICAgICAgIHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgc3RhdGVtZW50TG9jYWxDb250ZXh0ID0gbG9jYWxDb250ZXh0LCAvLy9cbiAgICAgICAgICBxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgYWdhaW5zdCB0aGUgJyR7bGFiZWxTdHJpbmd9JyBjb25qZWN0dXJlLi4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCBjb25qZWN0dXJlTWF0Y2hlc1N0YXRlbWVudCA9IGNvbmplY3R1cmUubWF0Y2hTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50TG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdENvbmplY3R1cmUgPSBjb25qZWN0dXJlTWF0Y2hlc1N0YXRlbWVudDsgLy8vXG5cbiAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29uamVjdHVyZSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtsYWJlbFN0cmluZ30nIGNvbmplY3R1cmUuYCwgc3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdENvbmplY3R1cmU7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFzRXF1YWxpdHkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCwgdmVyaWZ5QWhlYWQpIHtcbiAgbGV0IHN0YXRlbWVudFZlcmlmaWVkQXNFcXVhbGl0eSA9IHRydWU7IC8vL1xuXG4gIGNvbnN0IGVxdWFsaXR5Tm9kZSA9IGVxdWFsaXR5Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gIGlmIChlcXVhbGl0eU5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgYXMgYW4gZXF1YWxpdHkuLi5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IGVxdWFsaXR5VmVyaWZpZWQgPSB2ZXJpZnlFcXVhbGl0eShlcXVhbGl0eU5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKTtcblxuICAgIHN0YXRlbWVudFZlcmlmaWVkQXNFcXVhbGl0eSA9IGVxdWFsaXR5VmVyaWZpZWQ7IC8vL1xuXG4gICAgaWYgKHN0YXRlbWVudFZlcmlmaWVkQXNFcXVhbGl0eSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhcyBhbiBlcXVhbGl0eS5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50VmVyaWZpZWRBc0VxdWFsaXR5O1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBc1R5cGVBc3NlcnRpb24ocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCwgdmVyaWZ5QWhlYWQpIHtcbiAgbGV0IHN0YXRlbWVudFZlcmlmaWVkQXNUeXBlQXNzZXJ0aW9uID0gdHJ1ZTsgIC8vL1xuXG4gIGNvbnN0IHR5cGVBc3NlcnRpb25Ob2RlID0gdHlwZUFzc2VydGlvbk5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICBpZiAodHlwZUFzc2VydGlvbk5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgYXMgYSB0eXBlIGFzc2VydGlvbi4uLmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3QgdHlwZUFzc2VydGlvblZlcmlmaWVkID0gdmVyaWZ5VHlwZUFzc2VydGlvbih0eXBlQXNzZXJ0aW9uTm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCwgdmVyaWZ5QWhlYWQpO1xuXG4gICAgc3RhdGVtZW50VmVyaWZpZWRBc1R5cGVBc3NlcnRpb24gPSB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQ7IC8vL1xuXG4gICAgaWYgKHN0YXRlbWVudFZlcmlmaWVkQXNUeXBlQXNzZXJ0aW9uKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFzIGEgdHlwZSBhc3NlcnRpb24uYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFZlcmlmaWVkQXNUeXBlQXNzZXJ0aW9uO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeVF1YWxpZmllZFN0YXRlbWVudCIsImxhYmVsTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwiZXF1YWxpdHlOb2RlUXVlcnkiLCJzdGF0ZW1lbnROb2RlUXVlcnkiLCJ0eXBlQXNzZXJ0aW9uTm9kZVF1ZXJ5IiwicXVhbGlmaWVkU3RhdGVtZW50Tm9kZSIsImFzc2lnbm1lbnRzIiwiZGVyaXZlZCIsImxvY2FsQ29udGV4dCIsInF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkIiwic3RhdGVtZW50Tm9kZSIsInF1YWxpZmllZFN0YXRlbWVudFN0cmluZyIsIm5vZGVBc1N0cmluZyIsInRyYWNlIiwibGFiZWxOb2RlIiwidmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb25zIiwidmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RSdWxlIiwidmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RBeGlvbSIsInZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFBZ2FpbnN0TGVtbWEiLCJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdFRoZW9yZW0iLCJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdENvbmplY3R1cmUiLCJzb21lIiwidmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb24iLCJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBc0VxdWFsaXR5IiwidmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QXNUeXBlQXNzZXJ0aW9uIiwiZXZlcnkiLCJ2ZXJpZmllZEFoZWFkIiwiZGVidWciLCJxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RSdWxlIiwicnVsZSIsImZpbmRSdWxlQnlMYWJlbE5vZGUiLCJsYWJlbFN0cmluZyIsInN0YXRlbWVudExvY2FsQ29udGV4dCIsInJ1bGVNYXRjaGVzU3RhdGVtZW50IiwibWF0Y2hTdGF0ZW1lbnQiLCJxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RBeGlvbSIsImF4aW9tIiwiZmluZEF4aW9tQnlMYWJlbE5vZGUiLCJheGlvbU1hdGNoZXNTdGF0ZW1lbnQiLCJxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RMZW1tYSIsImxlbW1hIiwiZmluZExlbW1hQnlMYWJlbE5vZGUiLCJsZW1tYU1hdGNoZXNTdGF0ZW1lbnQiLCJxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RUaGVvcmVtIiwidGhlb3JlbSIsImZpbmRUaGVvcmVtQnlMYWJlbE5vZGUiLCJ0aGVvcmVtTWF0Y2hlc1N0YXRlbWVudCIsInF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdENvbmplY3R1cmUiLCJjb25qZWN0dXJlIiwiZmluZENvbmplY3R1cmVCeUxhYmVsTm9kZSIsImNvbmplY3R1cmVNYXRjaGVzU3RhdGVtZW50IiwidmVyaWZ5QWhlYWQiLCJzdGF0ZW1lbnRWZXJpZmllZEFzRXF1YWxpdHkiLCJlcXVhbGl0eU5vZGUiLCJlcXVhbGl0eVZlcmlmaWVkIiwidmVyaWZ5RXF1YWxpdHkiLCJzdGF0ZW1lbnRWZXJpZmllZEFzVHlwZUFzc2VydGlvbiIsInR5cGVBc3NlcnRpb25Ob2RlIiwidHlwZUFzc2VydGlvblZlcmlmaWVkIiwidmVyaWZ5VHlwZUFzc2VydGlvbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBWUE7OztlQUF3QkE7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
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50L3F1YWxpZmllZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHZlcmlmeUVxdWFsaXR5IGZyb20gXCIuLi9lcXVhbGl0eVwiO1xuaW1wb3J0IHZlcmlmeVR5cGVBc3NlcnRpb24gZnJvbSBcIi4uL3R5cGVBc3NlcnRpb25cIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCBlcXVhbGl0eU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9xdWFsaWZpZWRTdGF0ZW1lbnQvc3RhdGVtZW50L2VxdWFsaXR5IVwiKSxcbiAgICAgIHN0YXRlbWVudE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9xdWFsaWZpZWRTdGF0ZW1lbnQvc3RhdGVtZW50IVwiKSxcbiAgICAgIHR5cGVBc3NlcnRpb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvcXVhbGlmaWVkU3RhdGVtZW50L3N0YXRlbWVudC90eXBlQXNzZXJ0aW9uIVwiKSxcbiAgICAgIHJlZmVyZW5jZU1ldGF2YXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9xdWFsaWZpZWRTdGF0ZW1lbnQvcmVmZXJlbmNlIS9tZXRhdmFyaWFibGUhXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnQocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gIGlmIChzdGF0ZW1lbnROb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3QgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50Li4uYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCByZWZlcmVuY2VNZXRhdmFyaWFibGVOb2RlID0gcmVmZXJlbmNlTWV0YXZhcmlhYmxlTm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9ucyA9IFtcbiAgICAgICAgICAgIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFBZ2FpbnN0UnVsZSxcbiAgICAgICAgICAgIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFBZ2FpbnN0QXhpb20sXG4gICAgICAgICAgICB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdExlbW1hLFxuICAgICAgICAgICAgdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RUaGVvcmVtLFxuICAgICAgICAgICAgdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RDb25qZWN0dXJlXG4gICAgICAgICAgXTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb25zLnNvbWUoKHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9uKSA9PiB7ICAvLy9cbiAgICAgIGNvbnN0IHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb24ocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgcmVmZXJlbmNlTWV0YXZhcmlhYmxlTm9kZSwgbG9jYWxDb250ZXh0KTtcblxuICAgICAgaWYgKHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgICBkZXJpdmVkID0gZmFsc2U7ICAvLy9cblxuICAgICAgY29uc3QgdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb25zID0gW1xuICAgICAgICAgICAgICB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBc0VxdWFsaXR5LFxuICAgICAgICAgICAgICB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBc1R5cGVBc3NlcnRpb25cbiAgICAgICAgICAgIF07XG5cbiAgICAgIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb25zLmV2ZXJ5KCh2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbikgPT4geyAvLy9cbiAgICAgICAgY29uc3QgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbihxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0LCAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgdmVyaWZpZWRBaGVhZCA9IHRydWU7XG5cbiAgICAgICAgICByZXR1cm4gdmVyaWZpZWRBaGVhZDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudC5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFBZ2FpbnN0UnVsZShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCByZWZlcmVuY2VNZXRhdmFyaWFibGVOb2RlLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdFJ1bGUgPSBmYWxzZTtcblxuICBjb25zdCBsYWJlbE1ldGF2YXJpYWJsZU5vZGUgPSByZWZlcmVuY2VNZXRhdmFyaWFibGVOb2RlLCAgLy8vXG4gICAgICAgIHJ1bGUgPSBsb2NhbENvbnRleHQuZmluZFJ1bGVCeUxhYmVsTWV0YXZhcmlhYmxlTm9kZShsYWJlbE1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gIGlmIChydWxlICE9PSBudWxsKSB7XG4gICAgY29uc3QgcmVmZXJlbmNlTWV0YXZhcmlhYmxlU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhyZWZlcmVuY2VNZXRhdmFyaWFibGVOb2RlKSxcbiAgICAgICAgICBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHN0YXRlbWVudExvY2FsQ29udGV4dCA9IGxvY2FsQ29udGV4dCwgLy8vXG4gICAgICAgICAgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFnYWluc3QgdGhlICcke3JlZmVyZW5jZU1ldGF2YXJpYWJsZVN0cmluZ30nIHJ1bGUuLi5gLCBzdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IHJ1bGVNYXRjaGVzU3RhdGVtZW50ID0gcnVsZS5tYXRjaFN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBzdGF0ZW1lbnRMb2NhbENvbnRleHQpO1xuXG4gICAgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0UnVsZSA9IHJ1bGVNYXRjaGVzU3RhdGVtZW50OyAgLy8vXG5cbiAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0UnVsZSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtyZWZlcmVuY2VNZXRhdmFyaWFibGVTdHJpbmd9JyBydWxlLmAsIHN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RSdWxlO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdEF4aW9tKHF1YWxpZmllZFN0YXRlbWVudE5vZGUsIHJlZmVyZW5jZU1ldGF2YXJpYWJsZU5vZGUsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0QXhpb20gPSBmYWxzZTtcblxuICBjb25zdCBsYWJlbE1ldGF2YXJpYWJsZU5vZGUgPSByZWZlcmVuY2VNZXRhdmFyaWFibGVOb2RlLCAgLy8vXG4gICAgICAgIGF4aW9tID0gbG9jYWxDb250ZXh0LmZpbmRBeGlvbUJ5TGFiZWxNZXRhdmFyaWFibGVOb2RlKGxhYmVsTWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgaWYgKGF4aW9tICE9PSBudWxsKSB7XG4gICAgY29uc3QgcmVmZXJlbmNlTWV0YXZhcmlhYmxlU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhyZWZlcmVuY2VNZXRhdmFyaWFibGVOb2RlKSxcbiAgICAgICAgICBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHN0YXRlbWVudExvY2FsQ29udGV4dCA9IGxvY2FsQ29udGV4dCwgLy8vXG4gICAgICAgICAgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFnYWluc3QgdGhlICcke3JlZmVyZW5jZU1ldGF2YXJpYWJsZVN0cmluZ30nIGF4aW9tLi4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCBheGlvbU1hdGNoZXNTdGF0ZW1lbnQgPSBheGlvbS5tYXRjaFN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBzdGF0ZW1lbnRMb2NhbENvbnRleHQpO1xuXG4gICAgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0QXhpb20gPSBheGlvbU1hdGNoZXNTdGF0ZW1lbnQ7IC8vL1xuXG4gICAgaWYgKHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdEF4aW9tKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFnYWluc3QgdGhlICcke3JlZmVyZW5jZU1ldGF2YXJpYWJsZVN0cmluZ30nIGF4aW9tLmAsIHN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RBeGlvbTtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RMZW1tYShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCByZWZlcmVuY2VNZXRhdmFyaWFibGVOb2RlLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdExlbW1hID0gZmFsc2U7XG5cbiAgY29uc3QgbGFiZWxNZXRhdmFyaWFibGVOb2RlID0gcmVmZXJlbmNlTWV0YXZhcmlhYmxlTm9kZSwgIC8vL1xuICAgICAgICBsZW1tYSA9IGxvY2FsQ29udGV4dC5maW5kTGVtbWFCeUxhYmVsTWV0YXZhcmlhYmxlTm9kZShsYWJlbE1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gIGlmIChsZW1tYSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHJlZmVyZW5jZU1ldGF2YXJpYWJsZVN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocmVmZXJlbmNlTWV0YXZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBzdGF0ZW1lbnRMb2NhbENvbnRleHQgPSBsb2NhbENvbnRleHQsIC8vL1xuICAgICAgICAgIHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtyZWZlcmVuY2VNZXRhdmFyaWFibGVTdHJpbmd9JyBsZW1tYS4uLmAsIHN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3QgbGVtbWFNYXRjaGVzU3RhdGVtZW50ID0gbGVtbWEubWF0Y2hTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50TG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdExlbW1hID0gbGVtbWFNYXRjaGVzU3RhdGVtZW50OyAvLy9cblxuICAgIGlmIChxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RMZW1tYSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtyZWZlcmVuY2VNZXRhdmFyaWFibGVTdHJpbmd9JyBsZW1tYS5gLCBzdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0TGVtbWE7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFBZ2FpbnN0VGhlb3JlbShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCByZWZlcmVuY2VNZXRhdmFyaWFibGVOb2RlLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdFRoZW9yZW0gPSBmYWxzZTtcblxuICBjb25zdCBsYWJlbE1ldGF2YXJpYWJsZU5vZGUgPSByZWZlcmVuY2VNZXRhdmFyaWFibGVOb2RlLCAgLy8vXG4gICAgICAgIHRoZW9yZW0gPSBsb2NhbENvbnRleHQuZmluZFRoZW9yZW1CeUxhYmVsTWV0YXZhcmlhYmxlTm9kZShsYWJlbE1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gIGlmICh0aGVvcmVtICE9PSBudWxsKSB7XG4gICAgY29uc3QgcmVmZXJlbmNlTWV0YXZhcmlhYmxlU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhyZWZlcmVuY2VNZXRhdmFyaWFibGVOb2RlKSxcbiAgICAgICAgICBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHN0YXRlbWVudExvY2FsQ29udGV4dCA9IGxvY2FsQ29udGV4dCwgLy8vXG4gICAgICAgICAgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFnYWluc3QgdGhlICcke3JlZmVyZW5jZU1ldGF2YXJpYWJsZVN0cmluZ30nIHRoZW9yZW0uLi5gLCBzdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IHRoZW9yZW1NYXRjaGVzU3RhdGVtZW50ID0gdGhlb3JlbS5tYXRjaFN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBzdGF0ZW1lbnRMb2NhbENvbnRleHQpO1xuXG4gICAgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0VGhlb3JlbSA9IHRoZW9yZW1NYXRjaGVzU3RhdGVtZW50OyAvLy9cblxuICAgIGlmIChxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RUaGVvcmVtKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFnYWluc3QgdGhlICcke3JlZmVyZW5jZU1ldGF2YXJpYWJsZVN0cmluZ30nIHRoZW9yZW0uYCwgc3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdFRoZW9yZW07XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFBZ2FpbnN0Q29uamVjdHVyZShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCByZWZlcmVuY2VNZXRhdmFyaWFibGVOb2RlLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdENvbmplY3R1cmUgPSBmYWxzZTtcblxuICBjb25zdCBsYWJlbE1ldGF2YXJpYWJsZU5vZGUgPSByZWZlcmVuY2VNZXRhdmFyaWFibGVOb2RlLCAgLy8vXG4gICAgICAgIGNvbmplY3R1cmUgPSBsb2NhbENvbnRleHQuZmluZENvbmplY3R1cmVCeUxhYmVsTWV0YXZhcmlhYmxlTm9kZShsYWJlbE1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gIGlmIChjb25qZWN0dXJlICE9PSBudWxsKSB7XG4gICAgY29uc3QgcmVmZXJlbmNlTWV0YXZhcmlhYmxlU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhyZWZlcmVuY2VNZXRhdmFyaWFibGVOb2RlKSxcbiAgICAgICAgICBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHN0YXRlbWVudExvY2FsQ29udGV4dCA9IGxvY2FsQ29udGV4dCwgLy8vXG4gICAgICAgICAgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFnYWluc3QgdGhlICcke3JlZmVyZW5jZU1ldGF2YXJpYWJsZVN0cmluZ30nIGNvbmplY3R1cmUuLi5gLCBzdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IGNvbmplY3R1cmVNYXRjaGVzU3RhdGVtZW50ID0gY29uamVjdHVyZS5tYXRjaFN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBzdGF0ZW1lbnRMb2NhbENvbnRleHQpO1xuXG4gICAgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29uamVjdHVyZSA9IGNvbmplY3R1cmVNYXRjaGVzU3RhdGVtZW50OyAvLy9cblxuICAgIGlmIChxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RDb25qZWN0dXJlKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFnYWluc3QgdGhlICcke3JlZmVyZW5jZU1ldGF2YXJpYWJsZVN0cmluZ30nIGNvbmplY3R1cmUuYCwgc3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdENvbmplY3R1cmU7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFzRXF1YWxpdHkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCwgdmVyaWZ5QWhlYWQpIHtcbiAgbGV0IHN0YXRlbWVudFZlcmlmaWVkQXNFcXVhbGl0eSA9IHRydWU7IC8vL1xuXG4gIGNvbnN0IGVxdWFsaXR5Tm9kZSA9IGVxdWFsaXR5Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gIGlmIChlcXVhbGl0eU5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgYXMgYW4gZXF1YWxpdHkuLi5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IGVxdWFsaXR5VmVyaWZpZWQgPSB2ZXJpZnlFcXVhbGl0eShlcXVhbGl0eU5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKTtcblxuICAgIHN0YXRlbWVudFZlcmlmaWVkQXNFcXVhbGl0eSA9IGVxdWFsaXR5VmVyaWZpZWQ7IC8vL1xuXG4gICAgaWYgKHN0YXRlbWVudFZlcmlmaWVkQXNFcXVhbGl0eSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhcyBhbiBlcXVhbGl0eS5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50VmVyaWZpZWRBc0VxdWFsaXR5O1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBc1R5cGVBc3NlcnRpb24ocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCwgdmVyaWZ5QWhlYWQpIHtcbiAgbGV0IHN0YXRlbWVudFZlcmlmaWVkQXNUeXBlQXNzZXJ0aW9uID0gdHJ1ZTsgIC8vL1xuXG4gIGNvbnN0IHR5cGVBc3NlcnRpb25Ob2RlID0gdHlwZUFzc2VydGlvbk5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICBpZiAodHlwZUFzc2VydGlvbk5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgYXMgYSB0eXBlIGFzc2VydGlvbi4uLmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3QgdHlwZUFzc2VydGlvblZlcmlmaWVkID0gdmVyaWZ5VHlwZUFzc2VydGlvbih0eXBlQXNzZXJ0aW9uTm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCwgdmVyaWZ5QWhlYWQpO1xuXG4gICAgc3RhdGVtZW50VmVyaWZpZWRBc1R5cGVBc3NlcnRpb24gPSB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQ7IC8vL1xuXG4gICAgaWYgKHN0YXRlbWVudFZlcmlmaWVkQXNUeXBlQXNzZXJ0aW9uKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFzIGEgdHlwZSBhc3NlcnRpb24uYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFZlcmlmaWVkQXNUeXBlQXNzZXJ0aW9uO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeVF1YWxpZmllZFN0YXRlbWVudCIsImVxdWFsaXR5Tm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5Iiwic3RhdGVtZW50Tm9kZVF1ZXJ5IiwidHlwZUFzc2VydGlvbk5vZGVRdWVyeSIsInJlZmVyZW5jZU1ldGF2YXJpYWJsZU5vZGVRdWVyeSIsInF1YWxpZmllZFN0YXRlbWVudE5vZGUiLCJhc3NpZ25tZW50cyIsImRlcml2ZWQiLCJsb2NhbENvbnRleHQiLCJxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCIsInN0YXRlbWVudE5vZGUiLCJxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmciLCJub2RlQXNTdHJpbmciLCJ0cmFjZSIsInJlZmVyZW5jZU1ldGF2YXJpYWJsZU5vZGUiLCJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbnMiLCJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdFJ1bGUiLCJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdEF4aW9tIiwidmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RMZW1tYSIsInZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFBZ2FpbnN0VGhlb3JlbSIsInZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFBZ2FpbnN0Q29uamVjdHVyZSIsInNvbWUiLCJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbiIsInZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFzRXF1YWxpdHkiLCJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBc1R5cGVBc3NlcnRpb24iLCJldmVyeSIsInZlcmlmaWVkQWhlYWQiLCJkZWJ1ZyIsInF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdFJ1bGUiLCJsYWJlbE1ldGF2YXJpYWJsZU5vZGUiLCJydWxlIiwiZmluZFJ1bGVCeUxhYmVsTWV0YXZhcmlhYmxlTm9kZSIsInJlZmVyZW5jZU1ldGF2YXJpYWJsZVN0cmluZyIsInN0YXRlbWVudExvY2FsQ29udGV4dCIsInJ1bGVNYXRjaGVzU3RhdGVtZW50IiwibWF0Y2hTdGF0ZW1lbnQiLCJxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RBeGlvbSIsImF4aW9tIiwiZmluZEF4aW9tQnlMYWJlbE1ldGF2YXJpYWJsZU5vZGUiLCJheGlvbU1hdGNoZXNTdGF0ZW1lbnQiLCJxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RMZW1tYSIsImxlbW1hIiwiZmluZExlbW1hQnlMYWJlbE1ldGF2YXJpYWJsZU5vZGUiLCJsZW1tYU1hdGNoZXNTdGF0ZW1lbnQiLCJxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RUaGVvcmVtIiwidGhlb3JlbSIsImZpbmRUaGVvcmVtQnlMYWJlbE1ldGF2YXJpYWJsZU5vZGUiLCJ0aGVvcmVtTWF0Y2hlc1N0YXRlbWVudCIsInF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdENvbmplY3R1cmUiLCJjb25qZWN0dXJlIiwiZmluZENvbmplY3R1cmVCeUxhYmVsTWV0YXZhcmlhYmxlTm9kZSIsImNvbmplY3R1cmVNYXRjaGVzU3RhdGVtZW50IiwidmVyaWZ5QWhlYWQiLCJzdGF0ZW1lbnRWZXJpZmllZEFzRXF1YWxpdHkiLCJlcXVhbGl0eU5vZGUiLCJlcXVhbGl0eVZlcmlmaWVkIiwidmVyaWZ5RXF1YWxpdHkiLCJzdGF0ZW1lbnRWZXJpZmllZEFzVHlwZUFzc2VydGlvbiIsInR5cGVBc3NlcnRpb25Ob2RlIiwidHlwZUFzc2VydGlvblZlcmlmaWVkIiwidmVyaWZ5VHlwZUFzc2VydGlvbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBWUE7OztlQUF3QkE7OzsrREFWRztvRUFDSztxQkFFTjs7Ozs7O0FBRTFCLElBQU1DLG9CQUFvQkMsSUFBQUEsZ0JBQVMsRUFBQyw0Q0FDOUJDLHFCQUFxQkQsSUFBQUEsZ0JBQVMsRUFBQyxtQ0FDL0JFLHlCQUF5QkYsSUFBQUEsZ0JBQVMsRUFBQyxpREFDbkNHLGlDQUFpQ0gsSUFBQUEsZ0JBQVMsRUFBQztBQUVsQyxTQUFTRix5QkFBeUJNLHNCQUFzQixFQUFFQyxXQUFXLEVBQUVDLE9BQU8sRUFBRUMsWUFBWTtJQUN6RyxJQUFJQyw2QkFBNkI7SUFFakMsSUFBTUMsZ0JBQWdCUixtQkFBbUJHO0lBRXpDLElBQUlLLGtCQUFrQixNQUFNO1FBQzFCLElBQU1DLDJCQUEyQkgsYUFBYUksWUFBWSxDQUFDUDtRQUUzREcsYUFBYUssS0FBSyxDQUFDLEFBQUMsa0JBQTBDLE9BQXpCRiwwQkFBeUIsNkJBQTJCTjtRQUV6RixJQUFNUyw0QkFBNEJWLCtCQUErQkMseUJBQzNEVSxvQ0FBb0M7WUFDbENDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1NBQ0Q7UUFFUFgsNkJBQTZCTSxrQ0FBa0NNLElBQUksQ0FBQyxTQUFDQztZQUNuRSxJQUFNYiw2QkFBNkJhLGlDQUFpQ2pCLHdCQUF3QlMsMkJBQTJCTjtZQUV2SCxJQUFJQyw0QkFBNEI7Z0JBQzlCLE9BQU87WUFDVDtRQUNGO1FBRUEsSUFBSUEsNEJBQTRCO1lBQzlCRixVQUFVLE9BQVEsR0FBRztZQUVyQixJQUFNUSxxQ0FBb0M7Z0JBQ2xDUTtnQkFDQUM7YUFDRDtZQUVQZiw2QkFBNkJNLG1DQUFrQ1UsS0FBSyxDQUFDLFNBQUNIO2dCQUNwRSxJQUFNYiw2QkFBNkJhLGlDQUFpQ2pCLHdCQUF3QkMsYUFBYUMsU0FBU0Ms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
|
package/lib/verify/theorem.js
CHANGED
|
@@ -21,12 +21,12 @@ function _interop_require_default(obj) {
|
|
|
21
21
|
default: obj
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
|
-
var proofNodeQuery = (0, _query.nodeQuery)("/theorem/proof!"),
|
|
24
|
+
var proofNodeQuery = (0, _query.nodeQuery)("/theorem/proof!"), labelsNodeQuery = (0, _query.nodeQuery)("/theorem/labels!"), consequentNodeQuery = (0, _query.nodeQuery)("/theorem/consequent!"), suppositionsNodeQuery = (0, _query.nodesQuery)("/theorem/supposition");
|
|
25
25
|
function verifyTheorem(theoremNode, fileContext) {
|
|
26
26
|
var theoremVerified = false;
|
|
27
|
-
var
|
|
27
|
+
var labelsNode = labelsNodeQuery(theoremNode), labelsString = fileContext.nodeAsString(labelsNode), localContext = _local.default.fromFileContext(fileContext);
|
|
28
28
|
fileContext.trace("Verifying the '".concat(labelsString, "' theorem..."), theoremNode);
|
|
29
|
-
var labels = [], labelsVerified = (0, _labels.default)(
|
|
29
|
+
var labels = [], labelsVerified = (0, _labels.default)(labelsNode, labels, fileContext);
|
|
30
30
|
if (labelsVerified) {
|
|
31
31
|
var suppositions = [], suppositionNodes = suppositionsNodeQuery(theoremNode), suppositionsVerified = (0, _suppositions.default)(suppositionNodes, suppositions, localContext);
|
|
32
32
|
if (suppositionsVerified) {
|
|
@@ -47,4 +47,4 @@ function verifyTheorem(theoremNode, fileContext) {
|
|
|
47
47
|
return theoremVerified;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGhlb3JlbS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IFRoZW9yZW0gZnJvbSBcIi4uL3RoZW9yZW1cIjtcbmltcG9ydCB2ZXJpZnlQcm9vZiBmcm9tIFwiLi4vdmVyaWZ5L3Byb29mXCI7XG5pbXBvcnQgTG9jYWxDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L2xvY2FsXCI7XG5pbXBvcnQgdmVyaWZ5TGFiZWxzIGZyb20gXCIuLi92ZXJpZnkvbGFiZWxzXCI7XG5pbXBvcnQgdmVyaWZ5Q29uc2VxdWVudCBmcm9tIFwiLi4vdmVyaWZ5L2NvbnNlcXVlbnRcIjtcbmltcG9ydCB2ZXJpZnlTdXBwb3NpdGlvbnMgZnJvbSBcIi4uL3ZlcmlmeS9zdXBwb3NpdGlvbnNcIjtcblxuaW1wb3J0IHsgZmlyc3QgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2FycmF5XCI7XG5pbXBvcnQgeyBub2RlUXVlcnksIG5vZGVzUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IHByb29mTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3RoZW9yZW0vcHJvb2YhXCIpLFxuICAgICAgbGFiZWxzTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3RoZW9yZW0vbGFiZWxzIVwiKSxcbiAgICAgIGNvbnNlcXVlbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdGhlb3JlbS9jb25zZXF1ZW50IVwiKSxcbiAgICAgIHN1cHBvc2l0aW9uc05vZGVRdWVyeSA9IG5vZGVzUXVlcnkoXCIvdGhlb3JlbS9zdXBwb3NpdGlvblwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5VGhlb3JlbSh0aGVvcmVtTm9kZSwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHRoZW9yZW1WZXJpZmllZCA9IGZhbHNlO1xuXG4gIGNvbnN0IGxhYmVsc05vZGUgPSBsYWJlbHNOb2RlUXVlcnkodGhlb3JlbU5vZGUpLFxuICAgICAgICBsYWJlbHNTdHJpbmcgPSBmaWxlQ29udGV4dC5ub2RlQXNTdHJpbmcobGFiZWxzTm9kZSksXG4gICAgICAgIGxvY2FsQ29udGV4dCA9IExvY2FsQ29udGV4dC5mcm9tRmlsZUNvbnRleHQoZmlsZUNvbnRleHQpO1xuXG4gIGZpbGVDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2xhYmVsc1N0cmluZ30nIHRoZW9yZW0uLi5gLCB0aGVvcmVtTm9kZSk7XG5cbiAgY29uc3QgbGFiZWxzID0gW10sXG4gICAgICAgIGxhYmVsc1ZlcmlmaWVkID0gdmVyaWZ5TGFiZWxzKGxhYmVsc05vZGUsIGxhYmVscywgZmlsZUNvbnRleHQpO1xuXG4gIGlmIChsYWJlbHNWZXJpZmllZCkge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9ucyA9IFtdLFxuICAgICAgICAgIHN1cHBvc2l0aW9uTm9kZXMgPSBzdXBwb3NpdGlvbnNOb2RlUXVlcnkodGhlb3JlbU5vZGUpLFxuICAgICAgICAgIHN1cHBvc2l0aW9uc1ZlcmlmaWVkID0gdmVyaWZ5U3VwcG9zaXRpb25zKHN1cHBvc2l0aW9uTm9kZXMsIHN1cHBvc2l0aW9ucywgbG9jYWxDb250ZXh0KTtcblxuICAgIGlmIChzdXBwb3NpdGlvbnNWZXJpZmllZCkge1xuICAgICAgY29uc3QgY29uc2VxdWVudHMgPSBbXSxcbiAgICAgICAgICAgIGNvbnNlcXVlbnROb2RlID0gY29uc2VxdWVudE5vZGVRdWVyeSh0aGVvcmVtTm9kZSksXG4gICAgICAgICAgICBjb25zZXF1ZW50VmVyaWZpZWQgPSB2ZXJpZnlDb25zZXF1ZW50KGNvbnNlcXVlbnROb2RlLCBjb25zZXF1ZW50cywgbG9jYWxDb250ZXh0KTtcblxuICAgICAgaWYgKGNvbnNlcXVlbnRWZXJpZmllZCkge1xuICAgICAgICBjb25zdCBwcm9vZk5vZGUgPSBwcm9vZk5vZGVRdWVyeSh0aGVvcmVtTm9kZSksXG4gICAgICAgICAgICAgIGZpcnN0Q29uc2VxdWVudCA9IGZpcnN0KGNvbnNlcXVlbnRzKSxcbiAgICAgICAgICAgICAgY29uc2VxdWVudCA9IGZpcnN0Q29uc2VxdWVudCwgLy8vXG4gICAgICAgICAgICAgIHByb29mVmVyaWZpZWQgPSB2ZXJpZnlQcm9vZihwcm9vZk5vZGUsIGNvbnNlcXVlbnQsIGxvY2FsQ29udGV4dCk7XG5cbiAgICAgICAgaWYgKHByb29mVmVyaWZpZWQpIHtcbiAgICAgICAgICBjb25zdCB0aGVvcmVtID0gVGhlb3JlbS5mcm9tTGFiZWxzU3VwcG9zaXRpb25zQ29uc2VxdWVudEFuZExvY2FsQ29udGV4dChsYWJlbHMsIHN1cHBvc2l0aW9ucywgY29uc2VxdWVudCwgbG9jYWxDb250ZXh0KTtcblxuICAgICAgICAgIGZpbGVDb250ZXh0LmFkZFRoZW9yZW0odGhlb3JlbSk7XG5cbiAgICAgICAgICB0aGVvcmVtVmVyaWZpZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHRoZW9yZW1WZXJpZmllZCkge1xuICAgIGZpbGVDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7bGFiZWxzU3RyaW5nfScgdGhlb3JlbS5gLCB0aGVvcmVtTm9kZSk7XG4gIH1cblxuICByZXR1cm4gdGhlb3JlbVZlcmlmaWVkO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeVRoZW9yZW0iLCJwcm9vZk5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsImxhYmVsc05vZGVRdWVyeSIsImNvbnNlcXVlbnROb2RlUXVlcnkiLCJzdXBwb3NpdGlvbnNOb2RlUXVlcnkiLCJub2Rlc1F1ZXJ5IiwidGhlb3JlbU5vZGUiLCJmaWxlQ29udGV4dCIsInRoZW9yZW1WZXJpZmllZCIsImxhYmVsc05vZGUiLCJsYWJlbHNTdHJpbmciLCJub2RlQXNTdHJpbmciLCJsb2NhbENvbnRleHQiLCJMb2NhbENvbnRleHQiLCJmcm9tRmlsZUNvbnRleHQiLCJ0cmFjZSIsImxhYmVscyIsImxhYmVsc1ZlcmlmaWVkIiwidmVyaWZ5TGFiZWxzIiwic3VwcG9zaXRpb25zIiwic3VwcG9zaXRpb25Ob2RlcyIsInN1cHBvc2l0aW9uc1ZlcmlmaWVkIiwidmVyaWZ5U3VwcG9zaXRpb25zIiwiY29uc2VxdWVudHMiLCJjb25zZXF1ZW50Tm9kZSIsImNvbnNlcXVlbnRWZXJpZmllZCIsInZlcmlmeUNvbnNlcXVlbnQiLCJwcm9vZk5vZGUiLCJmaXJzdENvbnNlcXVlbnQiLCJmaXJzdCIsImNvbnNlcXVlbnQiLCJwcm9vZlZlcmlmaWVkIiwidmVyaWZ5UHJvb2YiLCJ0aGVvcmVtIiwiVGhlb3JlbSIsImZyb21MYWJlbHNTdXBwb3NpdGlvbnNDb25zZXF1ZW50QW5kTG9jYWxDb250ZXh0IiwiYWRkVGhlb3JlbSIsImRlYnVnIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFpQkE7OztlQUF3QkE7Ozs4REFmSjs0REFDSTs0REFDQzs2REFDQTtpRUFDSTttRUFDRTtxQkFFVDtxQkFDZ0I7Ozs7OztBQUV0QyxJQUFNQyxpQkFBaUJDLElBQUFBLGdCQUFTLEVBQUMsb0JBQzNCQyxrQkFBa0JELElBQUFBLGdCQUFTLEVBQUMscUJBQzVCRSxzQkFBc0JGLElBQUFBLGdCQUFTLEVBQUMseUJBQ2hDRyx3QkFBd0JDLElBQUFBLGlCQUFVLEVBQUM7QUFFMUIsU0FBU04sY0FBY08sV0FBVyxFQUFFQyxXQUFXO0lBQzVELElBQUlDLGtCQUFrQjtJQUV0QixJQUFNQyxhQUFhUCxnQkFBZ0JJLGNBQzdCSSxlQUFlSCxZQUFZSSxZQUFZLENBQUNGLGFBQ3hDRyxlQUFlQyxjQUFZLENBQUNDLGVBQWUsQ0FBQ1A7SUFFbERBLFlBQVlRLEtBQUssQ0FBQyxBQUFDLGtCQUE4QixPQUFiTCxjQUFhLGlCQUFlSjtJQUVoRSxJQUFNVSxTQUFTLEVBQUUsRUFDWEMsaUJBQWlCQyxJQUFBQSxlQUFZLEVBQUNULFlBQVlPLFFBQVFUO0lBRXhELElBQUlVLGdCQUFnQjtRQUNsQixJQUFNRSxlQUFlLEVBQUUsRUFDakJDLG1CQUFtQmhCLHNCQUFzQkUsY0FDekNlLHVCQUF1QkMsSUFBQUEscUJBQWtCLEVBQUNGLGtCQUFrQkQsY0FBY1A7UUFFaEYsSUFBSVMsc0JBQXNCO1lBQ3hCLElBQU1FLGNBQWMsRUFBRSxFQUNoQkMsaUJBQWlCckIsb0JBQW9CRyxjQUNyQ21CLHFCQUFxQkMsSUFBQUEsbUJBQWdCLEVBQUNGLGdCQUFnQkQsYUFBYVg7WUFFekUsSUFBSWEsb0JBQW9CO2dCQUN0QixJQUFNRSxZQUFZM0IsZUFBZU0sY0FDM0JzQixrQkFBa0JDLElBQUFBLFlBQUssRUFBQ04sY0FDeEJPLGFBQWFGLGlCQUNiRyxnQkFBZ0JDLElBQUFBLGNBQVcsRUFBQ0wsV0FBV0csWUFBWWxCO2dCQUV6RCxJQUFJbUIsZUFBZTtvQkFDakIsSUFBTUUsVUFBVUMsZ0JBQU8sQ0FBQ0MsK0NBQStDLENBQUNuQixRQUFRRyxjQUFjVyxZQUFZbEI7b0JBRTFHTCxZQUFZNkIsVUFBVSxDQUFDSDtvQkFFdkJ6QixrQkFBa0I7Z0JBQ3BCO1lBQ0Y7UUFDRjtJQUNGO0lBRUEsSUFBSUEsaUJBQWlCO1FBQ25CRCxZQUFZOEIsS0FBSyxDQUFDLEFBQUMsb0JBQWdDLE9BQWIzQixjQUFhLGVBQWFKO0lBQ2xFO0lBRUEsT0FBT0U7QUFDVCJ9
|
package/package.json
CHANGED
|
@@ -32,19 +32,6 @@ export default class AxiomLemmaTheoremConjecture {
|
|
|
32
32
|
return this.localContext;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
matchLabelNode(labelNode) {
|
|
36
|
-
const labelNodeMatches = this.labels.some((label) => {
|
|
37
|
-
const node = labelNode, ///
|
|
38
|
-
labelMatchesNode = label.matchNode(node);
|
|
39
|
-
|
|
40
|
-
if (labelMatchesNode) {
|
|
41
|
-
return true;
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
return labelNodeMatches;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
35
|
matchStatement(statementNode, statementLocalContext) {
|
|
49
36
|
let statementNatches;
|
|
50
37
|
|
|
@@ -79,6 +66,19 @@ export default class AxiomLemmaTheoremConjecture {
|
|
|
79
66
|
return statementNatches;
|
|
80
67
|
}
|
|
81
68
|
|
|
69
|
+
matchLabelMetavariableNode(labelMetavariableNode) {
|
|
70
|
+
const labelMetavariableNodeMatches = this.labels.some((label) => {
|
|
71
|
+
const node = labelMetavariableNode, ///
|
|
72
|
+
labelMatchesNode = label.matchNode(node);
|
|
73
|
+
|
|
74
|
+
if (labelMatchesNode) {
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
return labelMetavariableNodeMatches;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
82
|
toJSON(tokens) {
|
|
83
83
|
const labelsJSON = this.labels.map((label) => {
|
|
84
84
|
const labelJSON = label.toJSON(tokens);
|
package/src/context/file.js
CHANGED
|
@@ -115,6 +115,12 @@ export default class FileContext {
|
|
|
115
115
|
push(labels, conjectureLabels);
|
|
116
116
|
});
|
|
117
117
|
|
|
118
|
+
this.metatheorems.forEach((metatheorem) => {
|
|
119
|
+
const metatheoremLabels = metatheorem.getLabels();
|
|
120
|
+
|
|
121
|
+
push(labels, metatheoremLabels);
|
|
122
|
+
});
|
|
123
|
+
|
|
118
124
|
if (includeRelease) {
|
|
119
125
|
const releaseContextLabels = this.releaseContext.getLabels();
|
|
120
126
|
|
|
@@ -308,8 +314,49 @@ export default class FileContext {
|
|
|
308
314
|
return type;
|
|
309
315
|
}
|
|
310
316
|
|
|
311
|
-
|
|
312
|
-
const
|
|
317
|
+
findVariableByVariableNode(variableNode) {
|
|
318
|
+
const node = variableNode, ///
|
|
319
|
+
variables = this.getVariables(),
|
|
320
|
+
variable = variables.find((variable) => {
|
|
321
|
+
const nodeMatches = variable.matchNode(node);
|
|
322
|
+
|
|
323
|
+
if (nodeMatches) {
|
|
324
|
+
return true;
|
|
325
|
+
}
|
|
326
|
+
}) || null;
|
|
327
|
+
|
|
328
|
+
return variable;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
findMetaTypeByMetaTypeNode(metaTypeNode) {
|
|
332
|
+
const metaTypes = this.getMetaTypes(),
|
|
333
|
+
metaType = metaTypes.find((metaType) => {
|
|
334
|
+
const matches = metaType.matchMetaTypeNode(metaTypeNode);
|
|
335
|
+
|
|
336
|
+
if (matches) {
|
|
337
|
+
return true;
|
|
338
|
+
}
|
|
339
|
+
}) || null;
|
|
340
|
+
|
|
341
|
+
return metaType;
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
findMetavariableByMetavariableNode(metavariableNode) {
|
|
345
|
+
const node = metavariableNode, ///
|
|
346
|
+
metavariables = this.getMetavariables(),
|
|
347
|
+
metavariable = metavariables.find((metavariable) => {
|
|
348
|
+
const matches = metavariable.matchNode(node);
|
|
349
|
+
|
|
350
|
+
if (matches) {
|
|
351
|
+
return true;
|
|
352
|
+
}
|
|
353
|
+
}) || null;
|
|
354
|
+
|
|
355
|
+
return metavariable;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
findLabelByLabelMetavariableNode(labelMetavariableNode) {
|
|
359
|
+
const name = labelMetavariableNode, ///
|
|
313
360
|
labels = this.getLabels(),
|
|
314
361
|
label = labels.find((label) => {
|
|
315
362
|
const matches = label.matchNode(name);
|
|
@@ -322,12 +369,12 @@ export default class FileContext {
|
|
|
322
369
|
return label;
|
|
323
370
|
}
|
|
324
371
|
|
|
325
|
-
|
|
372
|
+
findRuleByLabelMetavariableNode(labelMetavariableNode) {
|
|
326
373
|
const rules = this.getRules(),
|
|
327
374
|
rule = rules.find((rule) => {
|
|
328
|
-
const
|
|
375
|
+
const ruleMatchesLabelMetavariableNode = rule.matchLabelMetavariableNode(labelMetavariableNode);
|
|
329
376
|
|
|
330
|
-
if (
|
|
377
|
+
if (ruleMatchesLabelMetavariableNode) {
|
|
331
378
|
return true;
|
|
332
379
|
}
|
|
333
380
|
}) || null;
|
|
@@ -335,12 +382,12 @@ export default class FileContext {
|
|
|
335
382
|
return rule;
|
|
336
383
|
}
|
|
337
384
|
|
|
338
|
-
|
|
385
|
+
findAxiomByLabelMetavariableNode(labelMetavariableNode) {
|
|
339
386
|
const axioms = this.getAxioms(),
|
|
340
387
|
axiom = axioms.find((axiom) => {
|
|
341
|
-
const
|
|
388
|
+
const axiomMatchesLabelMetavariableNode = axiom.matchLabelMetavariableNode(labelMetavariableNode);
|
|
342
389
|
|
|
343
|
-
if (
|
|
390
|
+
if (axiomMatchesLabelMetavariableNode) {
|
|
344
391
|
return true;
|
|
345
392
|
}
|
|
346
393
|
}) || null;
|
|
@@ -348,12 +395,12 @@ export default class FileContext {
|
|
|
348
395
|
return axiom;
|
|
349
396
|
}
|
|
350
397
|
|
|
351
|
-
|
|
398
|
+
findLemmaByLabelMetavariableNode(labelMetavariableNode) {
|
|
352
399
|
const lemmas = this.getLemmas(),
|
|
353
400
|
lemma = lemmas.find((lemma) => {
|
|
354
|
-
const
|
|
401
|
+
const lemmaMatchesLabelMetavariableNode = lemma.matchLabelMetavariableNode(labelMetavariableNode);
|
|
355
402
|
|
|
356
|
-
if (
|
|
403
|
+
if (lemmaMatchesLabelMetavariableNode) {
|
|
357
404
|
return true;
|
|
358
405
|
}
|
|
359
406
|
}) || null;
|
|
@@ -361,12 +408,12 @@ export default class FileContext {
|
|
|
361
408
|
return lemma;
|
|
362
409
|
}
|
|
363
410
|
|
|
364
|
-
|
|
411
|
+
findTheoremByLabelMetavariableNode(labelMetavariableNode) {
|
|
365
412
|
const theorems = this.getTheorems(),
|
|
366
413
|
theorem = theorems.find((theorem) => {
|
|
367
|
-
const
|
|
414
|
+
const theoremMatchesLabelMetavariableNode = theorem.matchLabelMetavariableNode(labelMetavariableNode);
|
|
368
415
|
|
|
369
|
-
if (
|
|
416
|
+
if (theoremMatchesLabelMetavariableNode) {
|
|
370
417
|
return true;
|
|
371
418
|
}
|
|
372
419
|
}) || null;
|
|
@@ -374,12 +421,12 @@ export default class FileContext {
|
|
|
374
421
|
return theorem;
|
|
375
422
|
}
|
|
376
423
|
|
|
377
|
-
|
|
424
|
+
findMetaLemmaByLabelMetavariableNode(labelMetavariableNode) {
|
|
378
425
|
const metaLemmas = this.getMetaLemmas(),
|
|
379
426
|
metaLemma = metaLemmas.find((metaLemma) => {
|
|
380
|
-
const
|
|
427
|
+
const metaLemmaMatchesLabelMetavariableNode = metaLemma.matchLabelMetavariableNode(labelMetavariableNode);
|
|
381
428
|
|
|
382
|
-
if (
|
|
429
|
+
if (metaLemmaMatchesLabelMetavariableNode) {
|
|
383
430
|
return true;
|
|
384
431
|
}
|
|
385
432
|
}) || null;
|
|
@@ -387,39 +434,12 @@ export default class FileContext {
|
|
|
387
434
|
return metaLemma;
|
|
388
435
|
}
|
|
389
436
|
|
|
390
|
-
|
|
391
|
-
const node = variableNode, ///
|
|
392
|
-
variables = this.getVariables(),
|
|
393
|
-
variable = variables.find((variable) => {
|
|
394
|
-
const nodeMatches = variable.matchNode(node);
|
|
395
|
-
|
|
396
|
-
if (nodeMatches) {
|
|
397
|
-
return true;
|
|
398
|
-
}
|
|
399
|
-
}) || null;
|
|
400
|
-
|
|
401
|
-
return variable;
|
|
402
|
-
}
|
|
403
|
-
|
|
404
|
-
findMetaTypeByMetaTypeNode(metaTypeNode) {
|
|
405
|
-
const metaTypes = this.getMetaTypes(),
|
|
406
|
-
metaType = metaTypes.find((metaType) => {
|
|
407
|
-
const matches = metaType.matchMetaTypeNode(metaTypeNode);
|
|
408
|
-
|
|
409
|
-
if (matches) {
|
|
410
|
-
return true;
|
|
411
|
-
}
|
|
412
|
-
}) || null;
|
|
413
|
-
|
|
414
|
-
return metaType;
|
|
415
|
-
}
|
|
416
|
-
|
|
417
|
-
findConjectureByLabelNode(labelNode) {
|
|
437
|
+
findConjectureByLabelMetavariableNode(labelMetavariableNode) {
|
|
418
438
|
const conjectures = this.getConjectures(),
|
|
419
439
|
conjecture = conjectures.find((conjecture) => {
|
|
420
|
-
const
|
|
440
|
+
const conjectureMatchesLabelMetavariableNode = conjecture.matchLabelMetavariableNode(labelMetavariableNode);
|
|
421
441
|
|
|
422
|
-
if (
|
|
442
|
+
if (conjectureMatchesLabelMetavariableNode) {
|
|
423
443
|
return true;
|
|
424
444
|
}
|
|
425
445
|
}) || null;
|
|
@@ -427,26 +447,12 @@ export default class FileContext {
|
|
|
427
447
|
return conjecture;
|
|
428
448
|
}
|
|
429
449
|
|
|
430
|
-
|
|
431
|
-
const node = metavariableNode, ///
|
|
432
|
-
metavariables = this.getMetavariables(),
|
|
433
|
-
metavariable = metavariables.find((metavariable) => {
|
|
434
|
-
const matches = metavariable.matchNode(node);
|
|
435
|
-
|
|
436
|
-
if (matches) {
|
|
437
|
-
return true;
|
|
438
|
-
}
|
|
439
|
-
}) || null;
|
|
440
|
-
|
|
441
|
-
return metavariable;
|
|
442
|
-
}
|
|
443
|
-
|
|
444
|
-
findMetatheoremByLabelNode(labelNode) {
|
|
450
|
+
findMetatheoremByLabelMetavariableNode(labelMetavariableNode) {
|
|
445
451
|
const metatheorems = this.getMetatheorems(),
|
|
446
452
|
metatheorem = metatheorems.find((metatheorem) => {
|
|
447
|
-
const
|
|
453
|
+
const metatheoremMatchesLabelMetavariableNode = metatheorem.matchLabelMetavariableNode(labelMetavariableNode);
|
|
448
454
|
|
|
449
|
-
if (
|
|
455
|
+
if (metatheoremMatchesLabelMetavariableNode) {
|
|
450
456
|
return true;
|
|
451
457
|
}
|
|
452
458
|
}) || null;
|
|
@@ -468,13 +474,6 @@ export default class FileContext {
|
|
|
468
474
|
return typePresent;
|
|
469
475
|
}
|
|
470
476
|
|
|
471
|
-
isLabelPresentByLabelNode(labelNode) {
|
|
472
|
-
const label = this.findLabelByLabelNode(labelNode),
|
|
473
|
-
labelPresent = (label !== null);
|
|
474
|
-
|
|
475
|
-
return labelPresent;
|
|
476
|
-
}
|
|
477
|
-
|
|
478
477
|
isVariablePresentByVariableNode(variableNode) {
|
|
479
478
|
const variable = this.findVariableByVariableNode(variableNode),
|
|
480
479
|
variablePresent = (variable !== null);
|
|
@@ -482,6 +481,13 @@ export default class FileContext {
|
|
|
482
481
|
return variablePresent;
|
|
483
482
|
}
|
|
484
483
|
|
|
484
|
+
isLabelPresentByLabelMetavariableNode(labelMetavariableNode) {
|
|
485
|
+
const label = this.findLabelByLabelMetavariableNode(labelMetavariableNode),
|
|
486
|
+
labelPresent = (label !== null);
|
|
487
|
+
|
|
488
|
+
return labelPresent;
|
|
489
|
+
}
|
|
490
|
+
|
|
485
491
|
isMetavariablePresentByMetavariableNode(metavariableNode) {
|
|
486
492
|
const metavariable = this.findMetavariableByMetavariableNode(metavariableNode),
|
|
487
493
|
metavariablePresent = (metavariable !== null);
|
|
@@ -727,11 +733,11 @@ export default class FileContext {
|
|
|
727
733
|
lemmasJSON = lemmas, ///
|
|
728
734
|
theoremsJSON = theorems, ///
|
|
729
735
|
variablesJSON = variables, ///
|
|
730
|
-
metaLemmasJSON = metaLemmas
|
|
736
|
+
metaLemmasJSON = metaLemmas, ///
|
|
731
737
|
conjecturesJSON = conjectures, ///
|
|
732
738
|
combinatorsJSON = combinators, ///
|
|
733
739
|
constructorsJSON = constructors, ///
|
|
734
|
-
metatheoremsJSON = metatheorems
|
|
740
|
+
metatheoremsJSON = metatheorems, ///
|
|
735
741
|
metavariablesJSON = metavariables; ///
|
|
736
742
|
|
|
737
743
|
typesJSON.forEach((typeJSON) => {
|
package/src/label.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { nodeAsString } from "./utilities/string";
|
|
4
|
-
import {
|
|
5
|
-
import { labelNodeFromLabelString } from "./utilities/node";
|
|
4
|
+
import { metavariableNodeFromMetavariableString } from "./utilities/node";
|
|
6
5
|
|
|
7
6
|
export default class Label {
|
|
8
7
|
constructor(node) {
|
|
@@ -32,19 +31,19 @@ export default class Label {
|
|
|
32
31
|
return json;
|
|
33
32
|
}
|
|
34
33
|
|
|
35
|
-
static
|
|
36
|
-
const node =
|
|
34
|
+
static fromMetavariableNode(metavariableNode) {
|
|
35
|
+
const node = metavariableNode, ///
|
|
37
36
|
variable = new Label(node);
|
|
38
37
|
|
|
39
38
|
return variable;
|
|
40
39
|
}
|
|
41
40
|
|
|
42
41
|
static fromJSONAndFileContext(json, fileContext) {
|
|
43
|
-
const
|
|
42
|
+
const metavariableString = json, ///
|
|
44
43
|
lexer = fileContext.getLexer(),
|
|
45
44
|
parser = fileContext.getParser(),
|
|
46
|
-
|
|
47
|
-
node =
|
|
45
|
+
metavariableNode = metavariableNodeFromMetavariableString(metavariableString, lexer, parser),
|
|
46
|
+
node = metavariableNode, ///
|
|
48
47
|
label = new Label(node);
|
|
49
48
|
|
|
50
49
|
return label;
|