occam-verify-cli 0.0.1065 → 0.0.1067
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/assertion/contained.js +2 -1
- package/lib/assertion/defined.js +2 -1
- package/lib/combinator/bracketed.js +135 -0
- package/lib/conclusion.js +6 -2
- package/lib/consequent.js +6 -2
- package/lib/constants.js +3 -3
- package/lib/constructor/bracketed.js +30 -11
- package/lib/context/file.js +45 -9
- package/lib/context/local.js +67 -28
- package/lib/metavariable.js +15 -54
- package/lib/mixins/statement/unify.js +18 -3
- package/lib/mixins/statement/verify.js +2 -11
- package/lib/premise.js +6 -2
- package/lib/proofStep.js +22 -13
- package/lib/rule.js +6 -2
- package/lib/ruleNames.js +1 -5
- package/lib/statement/qualified.js +30 -17
- package/lib/statement/unqualified.js +5 -5
- package/lib/statement.js +41 -24
- package/lib/subproof.js +1 -1
- package/lib/substitution/frameForMetavariable.js +44 -21
- package/lib/substitution/statementForMetavariable.js +93 -54
- package/lib/substitution/termForVariable.js +38 -21
- package/lib/substitution.js +48 -13
- package/lib/substitutions.js +22 -19
- package/lib/supposition.js +6 -2
- package/lib/unifier/metaLevel.js +14 -12
- package/lib/unify/metavariableWithFrame.js +2 -2
- package/lib/utilities/brackets.js +5 -10
- package/lib/utilities/node.js +29 -15
- package/lib/utilities/string.js +34 -16
- package/lib/utilities/tokens.js +16 -8
- package/lib/variable.js +10 -10
- package/package.json +2 -2
- package/src/assertion/contained.js +2 -0
- package/src/assertion/defined.js +2 -0
- package/src/combinator/bracketed.js +49 -0
- package/src/conclusion.js +8 -1
- package/src/consequent.js +8 -1
- package/src/constants.js +2 -2
- package/src/constructor/bracketed.js +32 -9
- package/src/context/file.js +41 -13
- package/src/context/local.js +71 -35
- package/src/metavariable.js +24 -74
- package/src/mixins/statement/unify.js +25 -2
- package/src/mixins/statement/verify.js +1 -14
- package/src/premise.js +8 -1
- package/src/proofStep.js +28 -12
- package/src/rule.js +7 -1
- package/src/ruleNames.js +0 -1
- package/src/statement/qualified.js +38 -21
- package/src/statement/unqualified.js +4 -4
- package/src/statement.js +62 -41
- package/src/subproof.js +0 -1
- package/src/substitution/frameForMetavariable.js +62 -32
- package/src/substitution/statementForMetavariable.js +102 -61
- package/src/substitution/termForVariable.js +52 -32
- package/src/substitution.js +40 -11
- package/src/substitutions.js +32 -25
- package/src/supposition.js +8 -1
- package/src/unifier/metaLevel.js +23 -18
- package/src/unify/metavariableWithFrame.js +2 -2
- package/src/utilities/brackets.js +2 -3
- package/src/utilities/node.js +30 -22
- package/src/utilities/string.js +39 -23
- package/src/utilities/tokens.js +17 -8
- package/src/variable.js +7 -7
- package/lib/node/statement/bracketed.js +0 -16
- package/lib/node/statement/combinator/bracketed.js +0 -25
- package/lib/node/term/bracketed.js +0 -16
- package/lib/node/term/constructor/bracketed.js +0 -25
- package/lib/ocmbinator/bracketed.js +0 -157
- package/lib/resolve/complexSubstitutionAgainstSimpleSubstitution.js +0 -62
- package/lib/resolve/substitution.js +0 -27
- package/lib/resolve/substitutions.js +0 -37
- package/lib/substitution/statement.js +0 -163
- package/lib/verifier/substitution.js +0 -161
- package/src/node/statement/bracketed.js +0 -9
- package/src/node/statement/combinator/bracketed.js +0 -10
- package/src/node/term/bracketed.js +0 -9
- package/src/node/term/constructor/bracketed.js +0 -10
- package/src/ocmbinator/bracketed.js +0 -26
- package/src/resolve/complexSubstitutionAgainstSimpleSubstitution.js +0 -79
- package/src/resolve/substitution.js +0 -19
- package/src/resolve/substitutions.js +0 -31
- package/src/substitution/statement.js +0 -81
- package/src/verifier/substitution.js +0 -75
package/lib/utilities/string.js
CHANGED
|
@@ -12,9 +12,15 @@ _export(exports, {
|
|
|
12
12
|
nodeAsString: function() {
|
|
13
13
|
return nodeAsString;
|
|
14
14
|
},
|
|
15
|
+
nodeAsTokens: function() {
|
|
16
|
+
return nodeAsTokens;
|
|
17
|
+
},
|
|
15
18
|
nodesAsString: function() {
|
|
16
19
|
return nodesAsString;
|
|
17
20
|
},
|
|
21
|
+
tokensAsString: function() {
|
|
22
|
+
return tokensAsString;
|
|
23
|
+
},
|
|
18
24
|
trim: function() {
|
|
19
25
|
return trim;
|
|
20
26
|
}
|
|
@@ -26,14 +32,8 @@ function trim(string) {
|
|
|
26
32
|
}
|
|
27
33
|
function nodeAsString(node, tokens) {
|
|
28
34
|
var string;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
var terminalNode = node; ///
|
|
32
|
-
string = terminalNodeAsString(terminalNode);
|
|
33
|
-
} else {
|
|
34
|
-
var nonTerminalNode = node; ///
|
|
35
|
-
string = nonTerminalNodeAsString(nonTerminalNode, tokens);
|
|
36
|
-
}
|
|
35
|
+
tokens = nodeAsTokens(node, tokens); ///
|
|
36
|
+
string = tokensAsString(tokens);
|
|
37
37
|
return string;
|
|
38
38
|
}
|
|
39
39
|
function nodesAsString(nodes, tokens) {
|
|
@@ -44,13 +44,7 @@ function nodesAsString(nodes, tokens) {
|
|
|
44
44
|
}, _constants.EMPTY_STRING);
|
|
45
45
|
return string;
|
|
46
46
|
}
|
|
47
|
-
function
|
|
48
|
-
var content = terminalNode.getContent(), string = content; ///
|
|
49
|
-
return string;
|
|
50
|
-
}
|
|
51
|
-
function nonTerminalNodeAsString(nonTerminalNode, tokens) {
|
|
52
|
-
var lastSignificantTokenIndex = nonTerminalNode.getLastSignificantTokenIndex(tokens), firstSignificantTokenIndex = nonTerminalNode.getFirstSignificantTokenIndex(tokens), start = firstSignificantTokenIndex, end = lastSignificantTokenIndex + 1;
|
|
53
|
-
tokens = tokens.slice(start, end); ///
|
|
47
|
+
function tokensAsString(tokens) {
|
|
54
48
|
var string = tokens.reduce(function(string, token) {
|
|
55
49
|
var content = token.getContent();
|
|
56
50
|
string = "".concat(string).concat(content);
|
|
@@ -58,5 +52,29 @@ function nonTerminalNodeAsString(nonTerminalNode, tokens) {
|
|
|
58
52
|
}, _constants.EMPTY_STRING);
|
|
59
53
|
return string;
|
|
60
54
|
}
|
|
55
|
+
function nodeAsTokens(node, tokens) {
|
|
56
|
+
var nodeTerminalNode = node.isTerminalNode();
|
|
57
|
+
if (nodeTerminalNode) {
|
|
58
|
+
z;
|
|
59
|
+
var terminalNode = node; ///
|
|
60
|
+
tokens = terminalNodeAsTokens(terminalNode, tokens);
|
|
61
|
+
} else {
|
|
62
|
+
var nonTerminalNode = node; ///
|
|
63
|
+
tokens = nonTerminalNodeAsTokens(nonTerminalNode, tokens);
|
|
64
|
+
}
|
|
65
|
+
return tokens;
|
|
66
|
+
}
|
|
67
|
+
function terminalNodeAsTokens(terminalNode, tokens) {
|
|
68
|
+
var significantToken = terminalNode.getSignificantToken(), token = significantToken; ///
|
|
69
|
+
tokens = [
|
|
70
|
+
token
|
|
71
|
+
];
|
|
72
|
+
return tokens;
|
|
73
|
+
}
|
|
74
|
+
function nonTerminalNodeAsTokens(nonTerminalNode, tokens) {
|
|
75
|
+
var lastSignificantTokenIndex = nonTerminalNode.getLastSignificantTokenIndex(tokens), firstSignificantTokenIndex = nonTerminalNode.getFirstSignificantTokenIndex(tokens), start = firstSignificantTokenIndex, end = lastSignificantTokenIndex + 1;
|
|
76
|
+
tokens = tokens.slice(start, end); ///
|
|
77
|
+
return tokens;
|
|
78
|
+
}
|
|
61
79
|
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3RyaW5nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBDT01NQSwgRU1QVFlfU1RSSU5HIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gdHJpbShzdHJpbmcpIHtcbiAgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UoL1xccyskLywgRU1QVFlfU1RSSU5HKTsgIC8vL1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub2RlQXNTdHJpbmcobm9kZSwgdG9rZW5zKSB7XG4gIGxldCBzdHJpbmc7XG5cbiAgdG9rZW5zID0gbm9kZUFzVG9rZW5zKG5vZGUsIHRva2Vucyk7ICAvLy9cblxuICBzdHJpbmcgPSB0b2tlbnNBc1N0cmluZyh0b2tlbnMpO1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub2Rlc0FzU3RyaW5nKG5vZGVzLCB0b2tlbnMpIHtcbiAgY29uc3Qgc3RyaW5nID0gbm9kZXMucmVkdWNlKChzdHJpbmcsIG5vZGUpID0+IHtcbiAgICBjb25zdCBub2RlU3RyaW5nID0gbm9kZUFzU3RyaW5nKG5vZGUsIHRva2Vucyk7XG5cbiAgICBzdHJpbmcgPSAoc3RyaW5nID09PSBFTVBUWV9TVFJJTkcpID9cbiAgICAgICAgICAgICAgIG5vZGVTdHJpbmcgOlxuICAgICAgICAgICAgICAgIGAke3N0cmluZ30ke0NPTU1BfSR7bm9kZVN0cmluZ31gO1xuXG4gICAgcmV0dXJuIHN0cmluZztcbiAgfSwgRU1QVFlfU1RSSU5HKTtcblxuICByZXR1cm4gc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9rZW5zQXNTdHJpbmcodG9rZW5zKSB7XG4gIGNvbnN0IHN0cmluZyA9IHRva2Vucy5yZWR1Y2UoKHN0cmluZywgdG9rZW4pID0+IHtcbiAgICBjb25zdCBjb250ZW50ID0gdG9rZW4uZ2V0Q29udGVudCgpO1xuXG4gICAgc3RyaW5nID0gYCR7c3RyaW5nfSR7Y29udGVudH1gO1xuXG4gICAgcmV0dXJuIHN0cmluZztcbiAgfSwgRU1QVFlfU1RSSU5HKTtcblxuICByZXR1cm4gc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9kZUFzVG9rZW5zKG5vZGUsIHRva2Vucykge1xuICBjb25zdCBub2RlVGVybWluYWxOb2RlID0gbm9kZS5pc1Rlcm1pbmFsTm9kZSgpO1xuXG4gIGlmIChub2RlVGVybWluYWxOb2RlKSB7elxuICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHRva2VucyA9IHRlcm1pbmFsTm9kZUFzVG9rZW5zKHRlcm1pbmFsTm9kZSwgdG9rZW5zKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBub2RlOyAvLy9cblxuICAgIHRva2VucyA9IG5vblRlcm1pbmFsTm9kZUFzVG9rZW5zKG5vblRlcm1pbmFsTm9kZSwgdG9rZW5zKTtcbiAgfVxuXG4gIHJldHVybiB0b2tlbnM7XG59XG5cbmZ1bmN0aW9uIHRlcm1pbmFsTm9kZUFzVG9rZW5zKHRlcm1pbmFsTm9kZSwgdG9rZW5zKSB7XG4gIGNvbnN0IHNpZ25pZmljYW50VG9rZW4gPSB0ZXJtaW5hbE5vZGUuZ2V0U2lnbmlmaWNhbnRUb2tlbigpLFxuICAgICAgICB0b2tlbiA9IHNpZ25pZmljYW50VG9rZW47IC8vL1xuXG4gIHRva2VucyA9IFsgIC8vL1xuICAgIHRva2VuXG4gIF07XG5cbiAgcmV0dXJuIHRva2Vucztcbn1cblxuZnVuY3Rpb24gbm9uVGVybWluYWxOb2RlQXNUb2tlbnMobm9uVGVybWluYWxOb2RlLCB0b2tlbnMpIHtcbiAgY29uc3QgbGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IG5vblRlcm1pbmFsTm9kZS5nZXRMYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2VucyksXG4gICAgICAgIGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ID0gbm9uVGVybWluYWxOb2RlLmdldEZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2VucyksXG4gICAgICAgIHN0YXJ0ID0gZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgsIC8vL1xuICAgICAgICBlbmQgPSBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ICsgMTtcblxuICB0b2tlbnMgPSB0b2tlbnMuc2xpY2Uoc3RhcnQsIGVuZCk7ICAvLy9cblxuICByZXR1cm4gdG9rZW5zO1xufVxuIl0sIm5hbWVzIjpbIm5vZGVBc1N0cmluZyIsIm5vZGVBc1Rva2VucyIsIm5vZGVzQXNTdHJpbmciLCJ0b2tlbnNBc1N0cmluZyIsInRyaW0iLCJzdHJpbmciLCJyZXBsYWNlIiwiRU1QVFlfU1RSSU5HIiwibm9kZSIsInRva2VucyIsIm5vZGVzIiwicmVkdWNlIiwibm9kZVN0cmluZyIsIkNPTU1BIiwidG9rZW4iLCJjb250ZW50IiwiZ2V0Q29udGVudCIsIm5vZGVUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsInoiLCJ0ZXJtaW5hbE5vZGUiLCJ0ZXJtaW5hbE5vZGVBc1Rva2VucyIsIm5vblRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZUFzVG9rZW5zIiwic2lnbmlmaWNhbnRUb2tlbiIsImdldFNpZ25pZmljYW50VG9rZW4iLCJsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwiZ2V0TGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsImZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwiZ2V0Rmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJzdGFydCIsImVuZCIsInNsaWNlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFVZ0JBLFlBQVk7ZUFBWkE7O0lBb0NBQyxZQUFZO2VBQVpBOztJQTFCQUMsYUFBYTtlQUFiQTs7SUFjQUMsY0FBYztlQUFkQTs7SUE5QkFDLElBQUk7ZUFBSkE7Ozt5QkFGb0I7QUFFN0IsU0FBU0EsS0FBS0MsTUFBTTtJQUN6QkEsU0FBU0EsT0FBT0MsT0FBTyxDQUFDLFFBQVFDLHVCQUFZLEdBQUksR0FBRztJQUVuRCxPQUFPRjtBQUNUO0FBRU8sU0FBU0wsYUFBYVEsSUFBSSxFQUFFQyxNQUFNO0lBQ3ZDLElBQUlKO0lBRUpJLFNBQVNSLGFBQWFPLE1BQU1DLFNBQVUsR0FBRztJQUV6Q0osU0FBU0YsZUFBZU07SUFFeEIsT0FBT0o7QUFDVDtBQUVPLFNBQVNILGNBQWNRLEtBQUssRUFBRUQsTUFBTTtJQUN6QyxJQUFNSixTQUFTSyxNQUFNQyxNQUFNLENBQUMsU0FBQ04sUUFBUUc7UUFDbkMsSUFBTUksYUFBYVosYUFBYVEsTUFBTUM7UUFFdENKLFNBQVMsQUFBQ0EsV0FBV0UsdUJBQVksR0FDdEJLLGFBQ0MsQUFBQyxHQUFXQyxPQUFUUixRQUFpQk8sT0FBUkMsZ0JBQUssRUFBYyxPQUFYRDtRQUVoQyxPQUFPUDtJQUNULEdBQUdFLHVCQUFZO0lBRWYsT0FBT0Y7QUFDVDtBQUVPLFNBQVNGLGVBQWVNLE1BQU07SUFDbkMsSUFBTUosU0FBU0ksT0FBT0UsTUFBTSxDQUFDLFNBQUNOLFFBQVFTO1FBQ3BDLElBQU1DLFVBQVVELE1BQU1FLFVBQVU7UUFFaENYLFNBQVMsQUFBQyxHQUFXVSxPQUFUVixRQUFpQixPQUFSVTtRQUVyQixPQUFPVjtJQUNULEdBQUdFLHVCQUFZO0lBRWYsT0FBT0Y7QUFDVDtBQUVPLFNBQVNKLGFBQWFPLElBQUksRUFBRUMsTUFBTTtJQUN2QyxJQUFNUSxtQkFBbUJULEtBQUtVLGNBQWM7SUFFNUMsSUFBSUQsa0JBQWtCO1FBQUNFO1FBQ3JCLElBQU1DLGVBQWVaLE1BQU8sR0FBRztRQUUvQkMsU0FBU1kscUJBQXFCRCxjQUFjWDtJQUM5QyxPQUFPO1FBQ0wsSUFBTWEsa0JBQWtCZCxNQUFNLEdBQUc7UUFFakNDLFNBQVNjLHdCQUF3QkQsaUJBQWlCYjtJQUNwRDtJQUVBLE9BQU9BO0FBQ1Q7QUFFQSxTQUFTWSxxQkFBcUJELFlBQVksRUFBRVgsTUFBTTtJQUNoRCxJQUFNZSxtQkFBbUJKLGFBQWFLLG1CQUFtQixJQUNuRFgsUUFBUVUsa0JBQWtCLEdBQUc7SUFFbkNmLFNBQVM7UUFDUEs7S0FDRDtJQUVELE9BQU9MO0FBQ1Q7QUFFQSxTQUFTYyx3QkFBd0JELGVBQWUsRUFBRWIsTUFBTTtJQUN0RCxJQUFNaUIsNEJBQTRCSixnQkFBZ0JLLDRCQUE0QixDQUFDbEIsU0FDekVtQiw2QkFBNkJOLGdCQUFnQk8sNkJBQTZCLENBQUNwQixTQUMzRXFCLFFBQVFGLDRCQUNSRyxNQUFNTCw0QkFBNEI7SUFFeENqQixTQUFTQSxPQUFPdUIsS0FBSyxDQUFDRixPQUFPQyxNQUFPLEdBQUc7SUFFdkMsT0FBT3RCO0FBQ1QifQ==
|
package/lib/utilities/tokens.js
CHANGED
|
@@ -15,8 +15,11 @@ _export(exports, {
|
|
|
15
15
|
metavariableTokensFromMetavariableString: function() {
|
|
16
16
|
return metavariableTokensFromMetavariableString;
|
|
17
17
|
},
|
|
18
|
-
|
|
19
|
-
return
|
|
18
|
+
statementTokensFromUnqualifiedStatementTokens: function() {
|
|
19
|
+
return statementTokensFromUnqualifiedStatementTokens;
|
|
20
|
+
},
|
|
21
|
+
termTokensFromConstructorDeclarationTokens: function() {
|
|
22
|
+
return termTokensFromConstructorDeclarationTokens;
|
|
20
23
|
},
|
|
21
24
|
unqualifiedStatementTokensFromUnqualifiedStatementString: function() {
|
|
22
25
|
return unqualifiedStatementTokensFromUnqualifiedStatementString;
|
|
@@ -25,9 +28,10 @@ _export(exports, {
|
|
|
25
28
|
return variableTokensFromVariableString;
|
|
26
29
|
}
|
|
27
30
|
});
|
|
31
|
+
var _necessary = require("necessary");
|
|
28
32
|
var _occamcustomgrammars = require("occam-custom-grammars");
|
|
29
33
|
var _customGrammar = require("./customGrammar");
|
|
30
|
-
var nominalLexerFromCombinedCustomGrammar = _occamcustomgrammars.lexersUtilities.nominalLexerFromCombinedCustomGrammar;
|
|
34
|
+
var front = _necessary.arrayUtilities.front, nominalLexerFromCombinedCustomGrammar = _occamcustomgrammars.lexersUtilities.nominalLexerFromCombinedCustomGrammar;
|
|
31
35
|
var combinedCustomGrammar = (0, _customGrammar.combinedCustomGrammarFromNothing)(), nominalLexer = nominalLexerFromCombinedCustomGrammar(combinedCustomGrammar);
|
|
32
36
|
function variableTokensFromVariableString(variableString, lexer) {
|
|
33
37
|
var variableContent = "".concat(variableString), variableTokens = tokensFromContentAndLexer(variableContent, lexer);
|
|
@@ -37,10 +41,6 @@ function metavariableTokensFromMetavariableString(metavariableString, lexer) {
|
|
|
37
41
|
var metavariableContent = "".concat(metavariableString), metavariableTokens = tokensFromContentAndLexer(metavariableContent, lexer);
|
|
38
42
|
return metavariableTokens;
|
|
39
43
|
}
|
|
40
|
-
function substitutionTokensFromSubstitutionString(substitutionString, lexer) {
|
|
41
|
-
var substitutionContent = "".concat(substitutionString), substitutionTokens = tokensFromContentAndLexer(substitutionContent, lexer);
|
|
42
|
-
return substitutionTokens;
|
|
43
|
-
}
|
|
44
44
|
function unqualifiedStatementTokensFromUnqualifiedStatementString(unqualifiedStatementString, lexer) {
|
|
45
45
|
var content = unqualifiedStatementString, unqualifiedStatementTokens = tokensFromContentAndLexer(content, lexer);
|
|
46
46
|
return unqualifiedStatementTokens;
|
|
@@ -49,10 +49,18 @@ function constructorDeclarationTokensFromConstructorDeclarationString(constructo
|
|
|
49
49
|
var content = constructorDeclarationString, constructorDeclarationTokens = tokensFromContentAndLexer(content, lexer);
|
|
50
50
|
return constructorDeclarationTokens;
|
|
51
51
|
}
|
|
52
|
+
function termTokensFromConstructorDeclarationTokens(constructorDeclarationTokens) {
|
|
53
|
+
var frontConstructorDeclarationTokens = front(constructorDeclarationTokens), termTokens = frontConstructorDeclarationTokens; ///
|
|
54
|
+
return termTokens;
|
|
55
|
+
}
|
|
56
|
+
function statementTokensFromUnqualifiedStatementTokens(unqualifiedStatementTokens) {
|
|
57
|
+
var frontUnqualifiedStatementTokens = front(unqualifiedStatementTokens), statementTokens = frontUnqualifiedStatementTokens; ///
|
|
58
|
+
return statementTokens;
|
|
59
|
+
}
|
|
52
60
|
function tokensFromContentAndLexer(content) {
|
|
53
61
|
var lexer = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : nominalLexer;
|
|
54
62
|
var tokens = lexer.tokenise(content);
|
|
55
63
|
return tokens;
|
|
56
64
|
}
|
|
57
65
|
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdG9rZW5zLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IGxleGVyc1V0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1jdXN0b20tZ3JhbW1hcnNcIjtcblxuaW1wb3J0IHsgY29tYmluZWRDdXN0b21HcmFtbWFyRnJvbU5vdGhpbmcgfSBmcm9tIFwiLi9jdXN0b21HcmFtbWFyXCI7XG5cbmNvbnN0IHsgZnJvbnQgfSA9IGFycmF5VXRpbGl0aWVzLFxuICAgICAgeyBub21pbmFsTGV4ZXJGcm9tQ29tYmluZWRDdXN0b21HcmFtbWFyIH0gPSBsZXhlcnNVdGlsaXRpZXM7XG5cbmNvbnN0IGNvbWJpbmVkQ3VzdG9tR3JhbW1hciA9IGNvbWJpbmVkQ3VzdG9tR3JhbW1hckZyb21Ob3RoaW5nKCksXG4gICAgICBub21pbmFsTGV4ZXIgPSBub21pbmFsTGV4ZXJGcm9tQ29tYmluZWRDdXN0b21HcmFtbWFyKGNvbWJpbmVkQ3VzdG9tR3JhbW1hcik7XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZVRva2Vuc0Zyb21WYXJpYWJsZVN0cmluZyh2YXJpYWJsZVN0cmluZywgbGV4ZXIpIHtcbiAgY29uc3QgdmFyaWFibGVDb250ZW50ID0gYCR7dmFyaWFibGVTdHJpbmd9YCxcbiAgICAgICAgdmFyaWFibGVUb2tlbnMgPSB0b2tlbnNGcm9tQ29udGVudEFuZExleGVyKHZhcmlhYmxlQ29udGVudCwgbGV4ZXIpO1xuXG4gIHJldHVybiB2YXJpYWJsZVRva2Vucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZVRva2Vuc0Zyb21NZXRhdmFyaWFibGVTdHJpbmcobWV0YXZhcmlhYmxlU3RyaW5nLCBsZXhlcikge1xuICBjb25zdCBtZXRhdmFyaWFibGVDb250ZW50ID0gYCR7bWV0YXZhcmlhYmxlU3RyaW5nfWAsXG4gICAgICAgIG1ldGF2YXJpYWJsZVRva2VucyA9IHRva2Vuc0Zyb21Db250ZW50QW5kTGV4ZXIobWV0YXZhcmlhYmxlQ29udGVudCwgbGV4ZXIpO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGVUb2tlbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bnF1YWxpZmllZFN0YXRlbWVudFRva2Vuc0Zyb21VbnF1YWxpZmllZFN0YXRlbWVudFN0cmluZyh1bnF1YWxpZmllZFN0YXRlbWVudFN0cmluZywgbGV4ZXIpIHtcbiAgY29uc3QgY29udGVudCA9IHVucXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nLCAgLy8vXG4gICAgICAgIHVucXVhbGlmaWVkU3RhdGVtZW50VG9rZW5zID0gdG9rZW5zRnJvbUNvbnRlbnRBbmRMZXhlcihjb250ZW50LCBsZXhlcik7XG5cbiAgcmV0dXJuIHVucXVhbGlmaWVkU3RhdGVtZW50VG9rZW5zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0b3JEZWNsYXJhdGlvblRva2Vuc0Zyb21Db25zdHJ1Y3RvckRlY2xhcmF0aW9uU3RyaW5nKGNvbnN0cnVjdG9yRGVjbGFyYXRpb25TdHJpbmcsIGxleGVyKSB7XG4gIGNvbnN0IGNvbnRlbnQgPSBjb25zdHJ1Y3RvckRlY2xhcmF0aW9uU3RyaW5nLCAgLy8vXG4gICAgICAgIGNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ub2tlbnMgPSB0b2tlbnNGcm9tQ29udGVudEFuZExleGVyKGNvbnRlbnQsIGxleGVyKTtcblxuICByZXR1cm4gY29uc3RydWN0b3JEZWNsYXJhdGlvblRva2Vucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1Ub2tlbnNGcm9tQ29uc3RydWN0b3JEZWNsYXJhdGlvblRva2Vucyhjb25zdHJ1Y3RvckRlY2xhcmF0aW9uVG9rZW5zKSB7XG4gIGNvbnN0IGZyb250Q29uc3RydWN0b3JEZWNsYXJhdGlvblRva2VucyA9IGZyb250KGNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ub2tlbnMpLFxuICAgICAgICB0ZXJtVG9rZW5zID0gZnJvbnRDb25zdHJ1Y3RvckRlY2xhcmF0aW9uVG9rZW5zOyAgLy8vXG5cbiAgcmV0dXJuIHRlcm1Ub2tlbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRUb2tlbnNGcm9tVW5xdWFsaWZpZWRTdGF0ZW1lbnRUb2tlbnModW5xdWFsaWZpZWRTdGF0ZW1lbnRUb2tlbnMpIHtcbiAgY29uc3QgZnJvbnRVbnF1YWxpZmllZFN0YXRlbWVudFRva2VucyA9IGZyb250KHVucXVhbGlmaWVkU3RhdGVtZW50VG9rZW5zKSxcbiAgICAgICAgc3RhdGVtZW50VG9rZW5zID0gZnJvbnRVbnF1YWxpZmllZFN0YXRlbWVudFRva2VuczsgIC8vL1xuXG4gIHJldHVybiBzdGF0ZW1lbnRUb2tlbnM7XG59XG5cbmZ1bmN0aW9uIHRva2Vuc0Zyb21Db250ZW50QW5kTGV4ZXIoY29udGVudCwgbGV4ZXIgPSBub21pbmFsTGV4ZXIpIHtcbiAgY29uc3QgdG9rZW5zID0gbGV4ZXIudG9rZW5pc2UoY29udGVudCk7XG5cbiAgcmV0dXJuIHRva2Vucztcbn1cbiJdLCJuYW1lcyI6WyJjb25zdHJ1Y3RvckRlY2xhcmF0aW9uVG9rZW5zRnJvbUNvbnN0cnVjdG9yRGVjbGFyYXRpb25TdHJpbmciLCJtZXRhdmFyaWFibGVUb2tlbnNGcm9tTWV0YXZhcmlhYmxlU3RyaW5nIiwic3RhdGVtZW50VG9rZW5zRnJvbVVucXVhbGlmaWVkU3RhdGVtZW50VG9rZW5zIiwidGVybVRva2Vuc0Zyb21Db25zdHJ1Y3RvckRlY2xhcmF0aW9uVG9rZW5zIiwidW5xdWFsaWZpZWRTdGF0ZW1lbnRUb2tlbnNGcm9tVW5xdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmciLCJ2YXJpYWJsZVRva2Vuc0Zyb21WYXJpYWJsZVN0cmluZyIsImZyb250IiwiYXJyYXlVdGlsaXRpZXMiLCJub21pbmFsTGV4ZXJGcm9tQ29tYmluZWRDdXN0b21HcmFtbWFyIiwibGV4ZXJzVXRpbGl0aWVzIiwiY29tYmluZWRDdXN0b21HcmFtbWFyIiwiY29tYmluZWRDdXN0b21HcmFtbWFyRnJvbU5vdGhpbmciLCJub21pbmFsTGV4ZXIiLCJ2YXJpYWJsZVN0cmluZyIsImxleGVyIiwidmFyaWFibGVDb250ZW50IiwidmFyaWFibGVUb2tlbnMiLCJ0b2tlbnNGcm9tQ29udGVudEFuZExleGVyIiwibWV0YXZhcmlhYmxlU3RyaW5nIiwibWV0YXZhcmlhYmxlQ29udGVudCIsIm1ldGF2YXJpYWJsZVRva2VucyIsInVucXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nIiwiY29udGVudCIsInVucXVhbGlmaWVkU3RhdGVtZW50VG9rZW5zIiwiY29uc3RydWN0b3JEZWNsYXJhdGlvblN0cmluZyIsImNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ub2tlbnMiLCJmcm9udENvbnN0cnVjdG9yRGVjbGFyYXRpb25Ub2tlbnMiLCJ0ZXJtVG9rZW5zIiwiZnJvbnRVbnF1YWxpZmllZFN0YXRlbWVudFRva2VucyIsInN0YXRlbWVudFRva2VucyIsInRva2VucyIsInRva2VuaXNlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFrQ2dCQSw0REFBNEQ7ZUFBNURBOztJQWRBQyx3Q0FBd0M7ZUFBeENBOztJQTRCQUMsNkNBQTZDO2VBQTdDQTs7SUFQQUMsMENBQTBDO2VBQTFDQTs7SUFkQUMsd0RBQXdEO2VBQXhEQTs7SUFkQUMsZ0NBQWdDO2VBQWhDQTs7O3lCQVhlO21DQUNDOzZCQUVpQjtBQUVqRCxJQUFNLEFBQUVDLFFBQVVDLHlCQUFjLENBQXhCRCxPQUNGLEFBQUVFLHdDQUEwQ0Msb0NBQWUsQ0FBekREO0FBRVIsSUFBTUUsd0JBQXdCQyxJQUFBQSwrQ0FBZ0MsS0FDeERDLGVBQWVKLHNDQUFzQ0U7QUFFcEQsU0FBU0wsaUNBQWlDUSxjQUFjLEVBQUVDLEtBQUs7SUFDcEUsSUFBTUMsa0JBQWtCLEFBQUMsR0FBaUIsT0FBZkYsaUJBQ3JCRyxpQkFBaUJDLDBCQUEwQkYsaUJBQWlCRDtJQUVsRSxPQUFPRTtBQUNUO0FBRU8sU0FBU2YseUNBQXlDaUIsa0JBQWtCLEVBQUVKLEtBQUs7SUFDaEYsSUFBTUssc0JBQXNCLEFBQUMsR0FBcUIsT0FBbkJELHFCQUN6QkUscUJBQXFCSCwwQkFBMEJFLHFCQUFxQkw7SUFFMUUsT0FBT007QUFDVDtBQUVPLFNBQVNoQix5REFBeURpQiwwQkFBMEIsRUFBRVAsS0FBSztJQUN4RyxJQUFNUSxVQUFVRCw0QkFDVkUsNkJBQTZCTiwwQkFBMEJLLFNBQVNSO0lBRXRFLE9BQU9TO0FBQ1Q7QUFFTyxTQUFTdkIsNkRBQTZEd0IsNEJBQTRCLEVBQUVWLEtBQUs7SUFDOUcsSUFBTVEsVUFBVUUsOEJBQ1ZDLCtCQUErQlIsMEJBQTBCSyxTQUFTUjtJQUV4RSxPQUFPVztBQUNUO0FBRU8sU0FBU3RCLDJDQUEyQ3NCLDRCQUE0QjtJQUNyRixJQUFNQyxvQ0FBb0NwQixNQUFNbUIsK0JBQzFDRSxhQUFhRCxtQ0FBb0MsR0FBRztJQUUxRCxPQUFPQztBQUNUO0FBRU8sU0FBU3pCLDhDQUE4Q3FCLDBCQUEwQjtJQUN0RixJQUFNSyxrQ0FBa0N0QixNQUFNaUIsNkJBQ3hDTSxrQkFBa0JELGlDQUFrQyxHQUFHO0lBRTdELE9BQU9DO0FBQ1Q7QUFFQSxTQUFTWiwwQkFBMEJLLE9BQU87UUFBRVIsUUFBQUEsaUVBQVFGO0lBQ2xELElBQU1rQixTQUFTaEIsTUFBTWlCLFFBQVEsQ0FBQ1Q7SUFFOUIsT0FBT1E7QUFDVCJ9
|
package/lib/variable.js
CHANGED
|
@@ -87,17 +87,17 @@ var Variable = /*#__PURE__*/ function() {
|
|
|
87
87
|
}
|
|
88
88
|
},
|
|
89
89
|
{
|
|
90
|
-
key: "
|
|
91
|
-
value: function
|
|
92
|
-
var
|
|
93
|
-
return
|
|
90
|
+
key: "matchVariableName",
|
|
91
|
+
value: function matchVariableName(variableName) {
|
|
92
|
+
var variableNameMatches = this.name === variableName;
|
|
93
|
+
return variableNameMatches;
|
|
94
94
|
}
|
|
95
95
|
},
|
|
96
96
|
{
|
|
97
|
-
key: "
|
|
98
|
-
value: function
|
|
99
|
-
var
|
|
100
|
-
return
|
|
97
|
+
key: "matchVariableNode",
|
|
98
|
+
value: function matchVariableNode(variableNode) {
|
|
99
|
+
var variableNodeMatches = this.node.match(variableNode);
|
|
100
|
+
return variableNodeMatches;
|
|
101
101
|
}
|
|
102
102
|
},
|
|
103
103
|
{
|
|
@@ -179,7 +179,7 @@ var Variable = /*#__PURE__*/ function() {
|
|
|
179
179
|
if (termVariable === variable) {
|
|
180
180
|
termUnified = true;
|
|
181
181
|
} else {
|
|
182
|
-
var termForVariableSubstitution = _termForVariable.default.fromTernAndVariable(term, variable), substitution1 = termForVariableSubstitution; ///
|
|
182
|
+
var termForVariableSubstitution = _termForVariable.default.fromTernAndVariable(term, variable, localContext), substitution1 = termForVariableSubstitution; ///
|
|
183
183
|
substitutions.addSubstitution(substitution1, localContext);
|
|
184
184
|
termUnified = true;
|
|
185
185
|
}
|
|
@@ -268,4 +268,4 @@ function termVariableFromTermNode(termNode, localContext) {
|
|
|
268
268
|
return termVariable;
|
|
269
269
|
}
|
|
270
270
|
|
|
271
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy92YXJpYWJsZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHNoaW0gZnJvbSBcIi4vc2hpbVwiO1xuaW1wb3J0IExvY2FsQ29udGV4dCBmcm9tIFwiLi9jb250ZXh0L2xvY2FsXCI7XG5pbXBvcnQgVGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uIGZyb20gXCIuL3N1YnN0aXR1dGlvbi90ZXJtRm9yVmFyaWFibGVcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBvYmplY3RUeXBlIH0gZnJvbSBcIi4vdHlwZVwiO1xuaW1wb3J0IHsgdmFyaWFibGVOYW1lRnJvbVZhcmlhYmxlTm9kZX0gZnJvbSBcIi4vdXRpbGl0aWVzL25hbWVcIjtcbmltcG9ydCB7IHZhcmlhYmxlTm9kZUZyb21WYXJpYWJsZVN0cmluZyB9IGZyb20gXCIuL3V0aWxpdGllcy9ub2RlXCI7XG5cbmNvbnN0IHR5cGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdmFyaWFibGVEZWNsYXJhdGlvbi90eXBlXCIpLFxuICAgICAgdmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdmFyaWFibGVEZWNsYXJhdGlvbi92YXJpYWJsZVwiKSxcbiAgICAgIHRlcm1WYXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90ZXJtL3ZhcmlhYmxlXCIpO1xuXG5jbGFzcyBWYXJpYWJsZSB7XG4gIGNvbnN0cnVjdG9yKGxvY2FsQ29udGV4dCwgc3RyaW5nLCBub2RlLCBuYW1lLCB0eXBlKSB7XG4gICAgdGhpcy5sb2NhbENvbnRleHQgPSBsb2NhbENvbnRleHQ7IC8vL1xuICAgIHRoaXMuc3RyaW5nID0gc3RyaW5nO1xuICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICB9XG5cbiAgZ2V0TG9jYWxDb250ZXh0KCkge1xuICAgIHJldHVybiB0aGlzLmxvY2FsQ29udGV4dDtcbiAgfVxuXG4gIGdldFN0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmc7XG4gIH1cblxuICBnZXROb2RlKCkge1xuICAgIHJldHVybiB0aGlzLm5vZGU7XG4gIH1cblxuICBnZXROYW1lKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH1cblxuICBnZXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBzZXRUeXBlKHR5cGUpIHtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICB9XG5cbiAgbWF0Y2hOb2RlKG5vZGUpIHtcbiAgICBjb25zdCBub2RlTWF0Y2hlcyA9IHRoaXMubm9kZS5tYXRjaChub2RlKTtcblxuICAgIHJldHVybiBub2RlTWF0Y2hlcztcbiAgfVxuXG4gIG1hdGNoTmFtZShuYW1lKSB7XG4gICAgY29uc3QgbmFtZU1hdGNoZXMgPSAodGhpcy5uYW1lID09PSBuYW1lKTtcblxuICAgIHJldHVybiBuYW1lTWF0Y2hlcztcbiAgfVxuXG4gIHZlcmlmeShsb2NhbENvbnRleHQpIHtcbiAgICBsZXQgdmVyaWZpZWQ7XG5cbiAgICBjb25zdCB2YXJpYWJsZVN0cmluZyA9IHRoaXMuc3RyaW5nOyAvLy9cblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt2YXJpYWJsZVN0cmluZ30nIHZhcmlhYmxlLi4uYCk7XG5cbiAgICBjb25zdCB2YXJpYWJsZU5vZGUgPSB0aGlzLm5vZGUsIC8vL1xuICAgICAgICAgIHZhcmlhYmxlTmFtZSA9IHZhcmlhYmxlTmFtZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKSxcbiAgICAgICAgICB2YXJpYWJsZSA9IGxvY2FsQ29udGV4dC5maW5kVmFyaWFibGVCeVZhcmlhYmxlTmFtZSh2YXJpYWJsZU5hbWUpO1xuXG4gICAgaWYgKHZhcmlhYmxlID09PSBudWxsKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYFRoZSAnJHt2YXJpYWJsZVN0cmluZ30nIHZhcmlhYmxlIGlzIG5vdCBwcmVzZW50LmApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0eXBlID0gdmFyaWFibGUuZ2V0VHlwZSgpO1xuXG4gICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuXG4gICAgICB2ZXJpZmllZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHZlcmlmaWVkKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt2YXJpYWJsZVN0cmluZ30nIHZhcmlhYmxlLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJpZmllZDtcbiAgfVxuXG4gIHZlcmlmeVR5cGUoZmlsZUNvbnRleHQpIHtcbiAgICBsZXQgdHlwZVZlcmlmaWVkO1xuXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gb2JqZWN0VHlwZSkge1xuICAgICAgdHlwZVZlcmlmaWVkID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHlwZU5hbWUgPSB0aGlzLnR5cGUuZ2V0TmFtZSgpO1xuXG4gICAgICBmaWxlQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0eXBlTmFtZX0nIHR5cGUuLi5gKTtcblxuICAgICAgY29uc3QgdHlwZSA9IGZpbGVDb250ZXh0LmZpbmRUeXBlQnlUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgICAgIGlmICh0eXBlID09PSBudWxsKSB7XG4gICAgICAgIGZpbGVDb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZU5hbWV9JyB0eXBlIGlzIG1pc3NpbmcuYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlOyAvLy9cblxuICAgICAgICB0eXBlVmVyaWZpZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZVZlcmlmaWVkKSB7XG4gICAgICAgIGZpbGVDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dHlwZU5hbWV9JyB0eXBlLmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0eXBlVmVyaWZpZWQ7XG4gIH1cblxuICB2ZXJpZnlBdFRvcExldmVsKGZpbGVDb250ZXh0KSB7XG4gICAgbGV0IHZlcmlmaWVkQXRUb3BMZXZlbDtcblxuICAgIGNvbnN0IHZhcmlhYmxlU3RyaW5nID0gdGhpcy5zdHJpbmc7IC8vL1xuXG4gICAgZmlsZUNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dmFyaWFibGVTdHJpbmd9JyB2YXJpYWJsZSBhdCB0b3AgbGV2ZWwuLi5gKTtcblxuICAgIGNvbnN0IHZhcmlhYmxlTm9kZSA9IHRoaXMubm9kZSwgLy8vXG4gICAgICAgICAgdmFyaWFibGVOYW1lID0gdmFyaWFibGVOYW1lRnJvbVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgIHZhcmlhYmxlUHJlc2VudCA9IGZpbGVDb250ZXh0LmlzVmFyaWFibGVQcmVzZW50QnlWYXJpYWJsZU5hbWUodmFyaWFibGVOYW1lKTtcblxuICAgIGlmICh2YXJpYWJsZVByZXNlbnQpIHtcbiAgICAgIGZpbGVDb250ZXh0LmRlYnVnKGBUaGUgJyR7dmFyaWFibGVTdHJpbmd9JyB2YXJpYWJsZSBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHR5cGVWZXJpZmllZCA9IHRoaXMudmVyaWZ5VHlwZShmaWxlQ29udGV4dCk7XG5cbiAgICAgIHZlcmlmaWVkQXRUb3BMZXZlbCA9IHR5cGVWZXJpZmllZDsgIC8vL1xuICAgIH1cblxuICAgIGlmICh2ZXJpZmllZEF0VG9wTGV2ZWwpIHtcbiAgICAgIGZpbGVDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dmFyaWFibGVTdHJpbmd9JyB2YXJpYWJsZSBhdCB0b3AgbGV2ZWwuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcmlmaWVkQXRUb3BMZXZlbDtcbiAgfVxuXG4gIHVuaWZ5VGVybSh0ZXJtLCBzdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHQpIHtcbiAgICBsZXQgdGVybVVuaWZpZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIHZhcmlhYmxlU3RyaW5nID0gdGhpcy5zdHJpbmc7IC8vL1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gd2l0aCB0aGUgJyR7dmFyaWFibGVTdHJpbmd9JyB2YXJpYWJsZS4uLmApO1xuXG4gICAgY29uc3QgdGVybU5vZGUgPSB0ZXJtLmdldE5vZGUoKSxcbiAgICAgICAgICB2YXJpYWJsZU5vZGUgPSB0aGlzLm5vZGUsIC8vL1xuICAgICAgICAgIHN1YnN0aXR1dGlvbiA9IHN1YnN0aXR1dGlvbnMuZmluZFN1YnN0aXR1dGlvbkJ5VmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSk7XG5cbiAgICBpZiAoc3Vic3RpdHV0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB0ZXJtTm9kZU1hdGNoZXMgPSBzdWJzdGl0dXRpb24ubWF0Y2hUZXJtTm9kZSh0ZXJtTm9kZSk7XG5cbiAgICAgIGlmICh0ZXJtTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgdGVybVVuaWZpZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB2YXJpYWJsZSA9IHRoaXMsICAvLy9cbiAgICAgICAgICAgIHRlcm1WYXJpYWJsZSA9IHRlcm1WYXJpYWJsZUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgbG9jYWxDb250ZXh0KTtcblxuICAgICAgaWYgKHRlcm1WYXJpYWJsZSA9PT0gdmFyaWFibGUpIHtcbiAgICAgICAgdGVybVVuaWZpZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uID0gVGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uLmZyb21UZXJuQW5kVmFyaWFibGUodGVybSwgdmFyaWFibGUpLFxuICAgICAgICAgICAgICBzdWJzdGl0dXRpb24gPSB0ZXJtRm9yVmFyaWFibGVTdWJzdGl0dXRpb247ICAvLy9cblxuICAgICAgICBzdWJzdGl0dXRpb25zLmFkZFN1YnN0aXR1dGlvbihzdWJzdGl0dXRpb24sIGxvY2FsQ29udGV4dCk7XG5cbiAgICAgICAgdGVybVVuaWZpZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0ZXJtVW5pZmllZCkge1xuICAgICAgbG9jYWxDb250ZXh0LnRyYWNlKGAuLi51bmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHRoZSAnJHt2YXJpYWJsZVN0cmluZ30nIHZhcmlhYmxlLmApO1xuICAgIH1cblxuICAgIHJldHVybiB0ZXJtVW5pZmllZDtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCB0eXBlSlNPTiA9IHRoaXMudHlwZS50b0pTT04oKSxcbiAgICAgICAgICBzdHJpbmcgPSB0aGlzLnN0cmluZyxcbiAgICAgICAgICB0eXBlID0gdHlwZUpTT04sICAvLy9cbiAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgdHlwZVxuICAgICAgICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCkge1xuICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgIGxleGVyICA9IGZpbGVDb250ZXh0LmdldExleGVyKCksXG4gICAgICAgICAgcGFyc2VyID0gZmlsZUNvbnRleHQuZ2V0UGFyc2VyKCksXG4gICAgICAgICAgdmFyaWFibGVTdHJpbmcgPSBzdHJpbmcsICAvLy9cbiAgICAgICAgICB2YXJpYWJsZU5vZGUgPSB2YXJpYWJsZU5vZGVGcm9tVmFyaWFibGVTdHJpbmcodmFyaWFibGVTdHJpbmcsIGxleGVyLCBwYXJzZXIpLFxuICAgICAgICAgIHZhcmlhYmxlTmFtZSA9IHZhcmlhYmxlTmFtZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKSxcbiAgICAgICAgICBsb2NhbENvbnRleHQgPSBMb2NhbENvbnRleHQuZnJvbUZpbGVDb250ZXh0KGZpbGVDb250ZXh0KSxcbiAgICAgICAgICBub2RlID0gdmFyaWFibGVOb2RlLFxuICAgICAgICAgIG5hbWUgPSB2YXJpYWJsZU5hbWUsICAvLy9cbiAgICAgICAgICB0eXBlID0gdHlwZUZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSxcbiAgICAgICAgICB2YXJpYWJsZSA9IG5ldyBWYXJpYWJsZShsb2NhbENvbnRleHQsIHN0cmluZywgbm9kZSwgbmFtZSwgdHlwZSk7XG5cbiAgICByZXR1cm4gdmFyaWFibGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBsb2NhbENvbnRleHQpIHtcbiAgICBsZXQgdmFyaWFibGUgPSBudWxsO1xuXG4gICAgY29uc3QgdGVybVZhcmlhYmxlTm9kZSA9IHRlcm1WYXJpYWJsZU5vZGVRdWVyeSh0ZXJtTm9kZSk7XG5cbiAgICBpZiAodGVybVZhcmlhYmxlTm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgdmFyaWFibGVOb2RlID0gdGVybVZhcmlhYmxlTm9kZSwgIC8vL1xuICAgICAgICAgICAgdmFyaWFibGVOYW1lID0gdmFyaWFibGVOYW1lRnJvbVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgICAgbm9kZSA9IHZhcmlhYmxlTm9kZSwgIC8vL1xuICAgICAgICAgICAgc3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgICAgIG5hbWUgPSB2YXJpYWJsZU5hbWUsICAvLy9cbiAgICAgICAgICAgIHR5cGUgPSBudWxsO1xuXG4gICAgICB2YXJpYWJsZSA9IG5ldyBWYXJpYWJsZShsb2NhbENvbnRleHQsIHN0cmluZywgbm9kZSwgbmFtZSwgdHlwZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhcmlhYmxlO1xuICB9XG5cbiAgc3RhdGljIGZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlLCBsb2NhbENvbnRleHQpIHtcbiAgICBsZXQgdmFyaWFibGUgPSBudWxsO1xuXG4gICAgaWYgKHZhcmlhYmxlTm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgbm9kZSA9IHZhcmlhYmxlTm9kZSwgIC8vL1xuICAgICAgICAgICAgdmFyaWFibGVOYW1lID0gdmFyaWFibGVOYW1lRnJvbVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgICAgc3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgICAgIG5hbWUgPSB2YXJpYWJsZU5hbWUsICAvLy9cbiAgICAgICAgICAgIHR5cGUgPSBudWxsO1xuXG4gICAgICB2YXJpYWJsZSA9IG5ldyBWYXJpYWJsZShsb2NhbENvbnRleHQsIHN0cmluZywgbm9kZSwgbmFtZSwgdHlwZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhcmlhYmxlO1xuICB9XG5cbiAgc3RhdGljIGZyb21WYXJpYWJsZU5vZGVBbmRUeXBlKHZhcmlhYmxlTm9kZSwgdHlwZSwgbG9jYWxDb250ZXh0KSB7XG4gICAgY29uc3Qgbm9kZSA9IHZhcmlhYmxlTm9kZSwgIC8vL1xuICAgICAgICAgIHZhcmlhYmxlTmFtZSA9IHZhcmlhYmxlTmFtZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKSxcbiAgICAgICAgICBzdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICAgIG5hbWUgPSB2YXJpYWJsZU5hbWUsICAvLy9cbiAgICAgICAgICB2YXJpYWJsZSA9IG5ldyBWYXJpYWJsZShsb2NhbENvbnRleHQsIHN0cmluZywgbm9kZSwgbmFtZSwgdHlwZSk7XG5cbiAgICByZXR1cm4gdmFyaWFibGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbVZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlKHZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlLCBmaWxlQ29udGV4dCkge1xuICAgIGNvbnN0IHsgVHlwZSB9ID0gc2hpbSxcbiAgICAgICAgICB0eXBlTm9kZSA9IHR5cGVOb2RlUXVlcnkodmFyaWFibGVEZWNsYXJhdGlvbk5vZGUpLFxuICAgICAgICAgIHZhcmlhYmxlTm9kZSA9IHZhcmlhYmxlTm9kZVF1ZXJ5KHZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlKSxcbiAgICAgICAgICB2YXJpYWJsZU5hbWUgPSB2YXJpYWJsZU5hbWVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgbG9jYWxDb250ZXh0ID0gTG9jYWxDb250ZXh0LmZyb21GaWxlQ29udGV4dChmaWxlQ29udGV4dCksXG4gICAgICAgICAgdmFyaWFibGVTdHJpbmcgPSBmaWxlQ29udGV4dC5ub2RlQXNTdHJpbmcodmFyaWFibGVOb2RlKSxcbiAgICAgICAgICBzdHJpbmcgPSB2YXJpYWJsZVN0cmluZywgIC8vL1xuICAgICAgICAgIG5vZGUgPSB2YXJpYWJsZU5vZGUsICAvLy9cbiAgICAgICAgICBuYW1lID0gdmFyaWFibGVOYW1lLCAgLy8vXG4gICAgICAgICAgdHlwZSA9IFR5cGUuZnJvbVR5cGVOb2RlKHR5cGVOb2RlLCBsb2NhbENvbnRleHQpLFxuICAgICAgICAgIHZhcmlhYmxlID0gbmV3IFZhcmlhYmxlKGxvY2FsQ29udGV4dCwgc3RyaW5nLCBub2RlLCBuYW1lLCB0eXBlKTtcblxuICAgIHJldHVybiB2YXJpYWJsZTtcbiAgfVxufVxuXG5PYmplY3QuYXNzaWduKHNoaW0sIHtcbiAgVmFyaWFibGVcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBWYXJpYWJsZTtcblxuZnVuY3Rpb24gdHlwZUZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IHR5cGUgfSA9IGpzb247XG5cbiAgY29uc3QgeyBuYW1lIH0gPSB0eXBlLFxuICAgICAgICB0eXBlTmFtZSA9IG5hbWU7ICAvLy9cblxuICB0eXBlID0gZmlsZUNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKHR5cGVOYW1lKTtcblxuICByZXR1cm4gdHlwZTtcbn1cblxuZnVuY3Rpb24gdGVybVZhcmlhYmxlRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IHRlcm1WYXJpYWJsZSA9IG51bGw7XG5cbiAgY29uc3QgdGVybVZhcmlhYmxlTm9kZSA9IHRlcm1WYXJpYWJsZU5vZGVRdWVyeSh0ZXJtTm9kZSk7XG5cbiAgaWYgKHRlcm1WYXJpYWJsZU5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCB0ZXJtVmFyaWFibGVOYW1lID0gdmFyaWFibGVOYW1lRnJvbVZhcmlhYmxlTm9kZSh0ZXJtVmFyaWFibGVOb2RlKTtcblxuICAgIHRlcm1WYXJpYWJsZSA9IGxvY2FsQ29udGV4dC5maW5kVmFyaWFibGVCeVZhcmlhYmxlTmFtZSh0ZXJtVmFyaWFibGVOYW1lKTtcbiAgfVxuXG4gIHJldHVybiB0ZXJtVmFyaWFibGU7XG59Il0sIm5hbWVzIjpbInR5cGVOb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ2YXJpYWJsZU5vZGVRdWVyeSIsInRlcm1WYXJpYWJsZU5vZGVRdWVyeSIsIlZhcmlhYmxlIiwibG9jYWxDb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsIm5hbWUiLCJ0eXBlIiwiZ2V0TG9jYWxDb250ZXh0IiwiZ2V0U3RyaW5nIiwiZ2V0Tm9kZSIsImdldE5hbWUiLCJnZXRUeXBlIiwic2V0VHlwZSIsIm1hdGNoTm9kZSIsIm5vZGVNYXRjaGVzIiwibWF0Y2giLCJtYXRjaE5hbWUiLCJuYW1lTWF0Y2hlcyIsInZlcmlmeSIsInZlcmlmaWVkIiwidmFyaWFibGVTdHJpbmciLCJ0cmFjZSIsInZhcmlhYmxlTm9kZSIsInZhcmlhYmxlTmFtZSIsInZhcmlhYmxlTmFtZUZyb21WYXJpYWJsZU5vZGUiLCJ2YXJpYWJsZSIsImZpbmRWYXJpYWJsZUJ5VmFyaWFibGVOYW1lIiwiZGVidWciLCJ2ZXJpZnlUeXBlIiwiZmlsZUNvbnRleHQiLCJ0eXBlVmVyaWZpZWQiLCJvYmplY3RUeXBlIiwidHlwZU5hbWUiLCJmaW5kVHlwZUJ5VHlwZU5hbWUiLCJ2ZXJpZnlBdFRvcExldmVsIiwidmVyaWZpZWRBdFRvcExldmVsIiwidmFyaWFibGVQcmVzZW50IiwiaXNWYXJpYWJsZVByZXNlbnRCeVZhcmlhYmxlTmFtZSIsInVuaWZ5VGVybSIsInRlcm0iLCJzdWJzdGl0dXRpb25zIiwidGVybVVuaWZpZWQiLCJ0ZXJtU3RyaW5nIiwidGVybU5vZGUiLCJzdWJzdGl0dXRpb24iLCJmaW5kU3Vic3RpdHV0aW9uQnlWYXJpYWJsZU5vZGUiLCJ0ZXJtTm9kZU1hdGNoZXMiLCJtYXRjaFRlcm1Ob2RlIiwidGVybVZhcmlhYmxlIiwidGVybVZhcmlhYmxlRnJvbVRlcm1Ob2RlIiwidGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uIiwiVGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uIiwiZnJvbVRlcm5BbmRWYXJpYWJsZSIsImFkZFN1YnN0aXR1dGlvbiIsInRvSlNPTiIsInR5cGVKU09OIiwianNvbiIsImZyb21KU09OIiwibGV4ZXIiLCJnZXRMZXhlciIsInBhcnNlciIsImdldFBhcnNlciIsInZhcmlhYmxlTm9kZUZyb21WYXJpYWJsZVN0cmluZyIsIkxvY2FsQ29udGV4dCIsImZyb21GaWxlQ29udGV4dCIsInR5cGVGcm9tSlNPTiIsImZyb21UZXJtTm9kZSIsInRlcm1WYXJpYWJsZU5vZGUiLCJub2RlQXNTdHJpbmciLCJmcm9tVmFyaWFibGVOb2RlIiwiZnJvbVZhcmlhYmxlTm9kZUFuZFR5cGUiLCJmcm9tVmFyaWFibGVEZWNsYXJhdGlvbk5vZGUiLCJ2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSIsIlR5cGUiLCJzaGltIiwidHlwZU5vZGUiLCJmcm9tVHlwZU5vZGUiLCJPYmplY3QiLCJhc3NpZ24iLCJ0ZXJtVmFyaWFibGVOYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFxUkE7OztlQUFBOzs7MkRBblJpQjs0REFDUTtzRUFDZTtxQkFFZDtvQkFDQztvQkFDaUI7b0JBQ0c7Ozs7Ozs7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
|
|
271
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy92YXJpYWJsZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHNoaW0gZnJvbSBcIi4vc2hpbVwiO1xuaW1wb3J0IExvY2FsQ29udGV4dCBmcm9tIFwiLi9jb250ZXh0L2xvY2FsXCI7XG5pbXBvcnQgVGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uIGZyb20gXCIuL3N1YnN0aXR1dGlvbi90ZXJtRm9yVmFyaWFibGVcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBvYmplY3RUeXBlIH0gZnJvbSBcIi4vdHlwZVwiO1xuaW1wb3J0IHsgdmFyaWFibGVOYW1lRnJvbVZhcmlhYmxlTm9kZX0gZnJvbSBcIi4vdXRpbGl0aWVzL25hbWVcIjtcbmltcG9ydCB7IHZhcmlhYmxlTm9kZUZyb21WYXJpYWJsZVN0cmluZyB9IGZyb20gXCIuL3V0aWxpdGllcy9ub2RlXCI7XG5cbmNvbnN0IHR5cGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdmFyaWFibGVEZWNsYXJhdGlvbi90eXBlXCIpLFxuICAgICAgdmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdmFyaWFibGVEZWNsYXJhdGlvbi92YXJpYWJsZVwiKSxcbiAgICAgIHRlcm1WYXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90ZXJtL3ZhcmlhYmxlXCIpO1xuXG5jbGFzcyBWYXJpYWJsZSB7XG4gIGNvbnN0cnVjdG9yKGxvY2FsQ29udGV4dCwgc3RyaW5nLCBub2RlLCBuYW1lLCB0eXBlKSB7XG4gICAgdGhpcy5sb2NhbENvbnRleHQgPSBsb2NhbENvbnRleHQ7IC8vL1xuICAgIHRoaXMuc3RyaW5nID0gc3RyaW5nO1xuICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICB9XG5cbiAgZ2V0TG9jYWxDb250ZXh0KCkge1xuICAgIHJldHVybiB0aGlzLmxvY2FsQ29udGV4dDtcbiAgfVxuXG4gIGdldFN0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmc7XG4gIH1cblxuICBnZXROb2RlKCkge1xuICAgIHJldHVybiB0aGlzLm5vZGU7XG4gIH1cblxuICBnZXROYW1lKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH1cblxuICBnZXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBzZXRUeXBlKHR5cGUpIHtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICB9XG5cbiAgbWF0Y2hWYXJpYWJsZU5hbWUodmFyaWFibGVOYW1lKSB7XG4gICAgY29uc3QgdmFyaWFibGVOYW1lTWF0Y2hlcyA9ICh0aGlzLm5hbWUgPT09IHZhcmlhYmxlTmFtZSk7XG5cbiAgICByZXR1cm4gdmFyaWFibGVOYW1lTWF0Y2hlcztcbiAgfVxuXG4gIG1hdGNoVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IHZhcmlhYmxlTm9kZU1hdGNoZXMgPSB0aGlzLm5vZGUubWF0Y2godmFyaWFibGVOb2RlKTtcblxuICAgIHJldHVybiB2YXJpYWJsZU5vZGVNYXRjaGVzO1xuICB9XG5cbiAgdmVyaWZ5KGxvY2FsQ29udGV4dCkge1xuICAgIGxldCB2ZXJpZmllZDtcblxuICAgIGNvbnN0IHZhcmlhYmxlU3RyaW5nID0gdGhpcy5zdHJpbmc7IC8vL1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3ZhcmlhYmxlU3RyaW5nfScgdmFyaWFibGUuLi5gKTtcblxuICAgIGNvbnN0IHZhcmlhYmxlTm9kZSA9IHRoaXMubm9kZSwgLy8vXG4gICAgICAgICAgdmFyaWFibGVOYW1lID0gdmFyaWFibGVOYW1lRnJvbVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgIHZhcmlhYmxlID0gbG9jYWxDb250ZXh0LmZpbmRWYXJpYWJsZUJ5VmFyaWFibGVOYW1lKHZhcmlhYmxlTmFtZSk7XG5cbiAgICBpZiAodmFyaWFibGUgPT09IG51bGwpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgVGhlICcke3ZhcmlhYmxlU3RyaW5nfScgdmFyaWFibGUgaXMgbm90IHByZXNlbnQuYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHR5cGUgPSB2YXJpYWJsZS5nZXRUeXBlKCk7XG5cbiAgICAgIHRoaXMudHlwZSA9IHR5cGU7XG5cbiAgICAgIHZlcmlmaWVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodmVyaWZpZWQpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3ZhcmlhYmxlU3RyaW5nfScgdmFyaWFibGUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcmlmaWVkO1xuICB9XG5cbiAgdmVyaWZ5VHlwZShmaWxlQ29udGV4dCkge1xuICAgIGxldCB0eXBlVmVyaWZpZWQ7XG5cbiAgICBpZiAodGhpcy50eXBlID09PSBvYmplY3RUeXBlKSB7XG4gICAgICB0eXBlVmVyaWZpZWQgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0eXBlTmFtZSA9IHRoaXMudHlwZS5nZXROYW1lKCk7XG5cbiAgICAgIGZpbGVDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3R5cGVOYW1lfScgdHlwZS4uLmApO1xuXG4gICAgICBjb25zdCB0eXBlID0gZmlsZUNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKHR5cGVOYW1lKTtcblxuICAgICAgaWYgKHR5cGUgPT09IG51bGwpIHtcbiAgICAgICAgZmlsZUNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlTmFtZX0nIHR5cGUgaXMgbWlzc2luZy5gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudHlwZSA9IHR5cGU7IC8vL1xuXG4gICAgICAgIHR5cGVWZXJpZmllZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlVmVyaWZpZWQpIHtcbiAgICAgICAgZmlsZUNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0eXBlTmFtZX0nIHR5cGUuYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVWZXJpZmllZDtcbiAgfVxuXG4gIHZlcmlmeUF0VG9wTGV2ZWwoZmlsZUNvbnRleHQpIHtcbiAgICBsZXQgdmVyaWZpZWRBdFRvcExldmVsO1xuXG4gICAgY29uc3QgdmFyaWFibGVTdHJpbmcgPSB0aGlzLnN0cmluZzsgLy8vXG5cbiAgICBmaWxlQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt2YXJpYWJsZVN0cmluZ30nIHZhcmlhYmxlIGF0IHRvcCBsZXZlbC4uLmApO1xuXG4gICAgY29uc3QgdmFyaWFibGVOb2RlID0gdGhpcy5ub2RlLCAvLy9cbiAgICAgICAgICB2YXJpYWJsZU5hbWUgPSB2YXJpYWJsZU5hbWVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgdmFyaWFibGVQcmVzZW50ID0gZmlsZUNvbnRleHQuaXNWYXJpYWJsZVByZXNlbnRCeVZhcmlhYmxlTmFtZSh2YXJpYWJsZU5hbWUpO1xuXG4gICAgaWYgKHZhcmlhYmxlUHJlc2VudCkge1xuICAgICAgZmlsZUNvbnRleHQuZGVidWcoYFRoZSAnJHt2YXJpYWJsZVN0cmluZ30nIHZhcmlhYmxlIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHlwZVZlcmlmaWVkID0gdGhpcy52ZXJpZnlUeXBlKGZpbGVDb250ZXh0KTtcblxuICAgICAgdmVyaWZpZWRBdFRvcExldmVsID0gdHlwZVZlcmlmaWVkOyAgLy8vXG4gICAgfVxuXG4gICAgaWYgKHZlcmlmaWVkQXRUb3BMZXZlbCkge1xuICAgICAgZmlsZUNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt2YXJpYWJsZVN0cmluZ30nIHZhcmlhYmxlIGF0IHRvcCBsZXZlbC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyaWZpZWRBdFRvcExldmVsO1xuICB9XG5cbiAgdW5pZnlUZXJtKHRlcm0sIHN1YnN0aXR1dGlvbnMsIGxvY2FsQ29udGV4dCkge1xuICAgIGxldCB0ZXJtVW5pZmllZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgdmFyaWFibGVTdHJpbmcgPSB0aGlzLnN0cmluZzsgLy8vXG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHRoZSAnJHt2YXJpYWJsZVN0cmluZ30nIHZhcmlhYmxlLi4uYCk7XG5cbiAgICBjb25zdCB0ZXJtTm9kZSA9IHRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICAgIHZhcmlhYmxlTm9kZSA9IHRoaXMubm9kZSwgLy8vXG4gICAgICAgICAgc3Vic3RpdHV0aW9uID0gc3Vic3RpdHV0aW9ucy5maW5kU3Vic3RpdHV0aW9uQnlWYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKTtcblxuICAgIGlmIChzdWJzdGl0dXRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHRlcm1Ob2RlTWF0Y2hlcyA9IHN1YnN0aXR1dGlvbi5tYXRjaFRlcm1Ob2RlKHRlcm1Ob2RlKTtcblxuICAgICAgaWYgKHRlcm1Ob2RlTWF0Y2hlcykge1xuICAgICAgICB0ZXJtVW5pZmllZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHZhcmlhYmxlID0gdGhpcywgIC8vL1xuICAgICAgICAgICAgdGVybVZhcmlhYmxlID0gdGVybVZhcmlhYmxlRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBsb2NhbENvbnRleHQpO1xuXG4gICAgICBpZiAodGVybVZhcmlhYmxlID09PSB2YXJpYWJsZSkge1xuICAgICAgICB0ZXJtVW5pZmllZCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB0ZXJtRm9yVmFyaWFibGVTdWJzdGl0dXRpb24gPSBUZXJtRm9yVmFyaWFibGVTdWJzdGl0dXRpb24uZnJvbVRlcm5BbmRWYXJpYWJsZSh0ZXJtLCB2YXJpYWJsZSwgbG9jYWxDb250ZXh0KSxcbiAgICAgICAgICAgICAgc3Vic3RpdHV0aW9uID0gdGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uOyAgLy8vXG5cbiAgICAgICAgc3Vic3RpdHV0aW9ucy5hZGRTdWJzdGl0dXRpb24oc3Vic3RpdHV0aW9uLCBsb2NhbENvbnRleHQpO1xuXG4gICAgICAgIHRlcm1VbmlmaWVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGVybVVuaWZpZWQpIHtcbiAgICAgIGxvY2FsQ29udGV4dC50cmFjZShgLi4udW5pZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gd2l0aCB0aGUgJyR7dmFyaWFibGVTdHJpbmd9JyB2YXJpYWJsZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVybVVuaWZpZWQ7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgdHlwZUpTT04gPSB0aGlzLnR5cGUudG9KU09OKCksXG4gICAgICAgICAgc3RyaW5nID0gdGhpcy5zdHJpbmcsXG4gICAgICAgICAgdHlwZSA9IHR5cGVKU09OLCAgLy8vXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgIHR5cGVcbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICBsZXhlciAgPSBmaWxlQ29udGV4dC5nZXRMZXhlcigpLFxuICAgICAgICAgIHBhcnNlciA9IGZpbGVDb250ZXh0LmdldFBhcnNlcigpLFxuICAgICAgICAgIHZhcmlhYmxlU3RyaW5nID0gc3RyaW5nLCAgLy8vXG4gICAgICAgICAgdmFyaWFibGVOb2RlID0gdmFyaWFibGVOb2RlRnJvbVZhcmlhYmxlU3RyaW5nKHZhcmlhYmxlU3RyaW5nLCBsZXhlciwgcGFyc2VyKSxcbiAgICAgICAgICB2YXJpYWJsZU5hbWUgPSB2YXJpYWJsZU5hbWVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgbG9jYWxDb250ZXh0ID0gTG9jYWxDb250ZXh0LmZyb21GaWxlQ29udGV4dChmaWxlQ29udGV4dCksXG4gICAgICAgICAgbm9kZSA9IHZhcmlhYmxlTm9kZSxcbiAgICAgICAgICBuYW1lID0gdmFyaWFibGVOYW1lLCAgLy8vXG4gICAgICAgICAgdHlwZSA9IHR5cGVGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCksXG4gICAgICAgICAgdmFyaWFibGUgPSBuZXcgVmFyaWFibGUobG9jYWxDb250ZXh0LCBzdHJpbmcsIG5vZGUsIG5hbWUsIHR5cGUpO1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlO1xuICB9XG5cbiAgc3RhdGljIGZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgbG9jYWxDb250ZXh0KSB7XG4gICAgbGV0IHZhcmlhYmxlID0gbnVsbDtcblxuICAgIGNvbnN0IHRlcm1WYXJpYWJsZU5vZGUgPSB0ZXJtVmFyaWFibGVOb2RlUXVlcnkodGVybU5vZGUpO1xuXG4gICAgaWYgKHRlcm1WYXJpYWJsZU5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHZhcmlhYmxlTm9kZSA9IHRlcm1WYXJpYWJsZU5vZGUsICAvLy9cbiAgICAgICAgICAgIHZhcmlhYmxlTmFtZSA9IHZhcmlhYmxlTmFtZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKSxcbiAgICAgICAgICAgIG5vZGUgPSB2YXJpYWJsZU5vZGUsICAvLy9cbiAgICAgICAgICAgIHN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgICAgICBuYW1lID0gdmFyaWFibGVOYW1lLCAgLy8vXG4gICAgICAgICAgICB0eXBlID0gbnVsbDtcblxuICAgICAgdmFyaWFibGUgPSBuZXcgVmFyaWFibGUobG9jYWxDb250ZXh0LCBzdHJpbmcsIG5vZGUsIG5hbWUsIHR5cGUpO1xuICAgIH1cblxuICAgIHJldHVybiB2YXJpYWJsZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSwgbG9jYWxDb250ZXh0KSB7XG4gICAgbGV0IHZhcmlhYmxlID0gbnVsbDtcblxuICAgIGlmICh2YXJpYWJsZU5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSB2YXJpYWJsZU5vZGUsICAvLy9cbiAgICAgICAgICAgIHZhcmlhYmxlTmFtZSA9IHZhcmlhYmxlTmFtZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKSxcbiAgICAgICAgICAgIHN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgICAgICBuYW1lID0gdmFyaWFibGVOYW1lLCAgLy8vXG4gICAgICAgICAgICB0eXBlID0gbnVsbDtcblxuICAgICAgdmFyaWFibGUgPSBuZXcgVmFyaWFibGUobG9jYWxDb250ZXh0LCBzdHJpbmcsIG5vZGUsIG5hbWUsIHR5cGUpO1xuICAgIH1cblxuICAgIHJldHVybiB2YXJpYWJsZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tVmFyaWFibGVOb2RlQW5kVHlwZSh2YXJpYWJsZU5vZGUsIHR5cGUsIGxvY2FsQ29udGV4dCkge1xuICAgIGNvbnN0IG5vZGUgPSB2YXJpYWJsZU5vZGUsICAvLy9cbiAgICAgICAgICB2YXJpYWJsZU5hbWUgPSB2YXJpYWJsZU5hbWVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgc3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgICBuYW1lID0gdmFyaWFibGVOYW1lLCAgLy8vXG4gICAgICAgICAgdmFyaWFibGUgPSBuZXcgVmFyaWFibGUobG9jYWxDb250ZXh0LCBzdHJpbmcsIG5vZGUsIG5hbWUsIHR5cGUpO1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlO1xuICB9XG5cbiAgc3RhdGljIGZyb21WYXJpYWJsZURlY2xhcmF0aW9uTm9kZSh2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSwgZmlsZUNvbnRleHQpIHtcbiAgICBjb25zdCB7IFR5cGUgfSA9IHNoaW0sXG4gICAgICAgICAgdHlwZU5vZGUgPSB0eXBlTm9kZVF1ZXJ5KHZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlKSxcbiAgICAgICAgICB2YXJpYWJsZU5vZGUgPSB2YXJpYWJsZU5vZGVRdWVyeSh2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSksXG4gICAgICAgICAgdmFyaWFibGVOYW1lID0gdmFyaWFibGVOYW1lRnJvbVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgIGxvY2FsQ29udGV4dCA9IExvY2FsQ29udGV4dC5mcm9tRmlsZUNvbnRleHQoZmlsZUNvbnRleHQpLFxuICAgICAgICAgIHZhcmlhYmxlU3RyaW5nID0gZmlsZUNvbnRleHQubm9kZUFzU3RyaW5nKHZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgc3RyaW5nID0gdmFyaWFibGVTdHJpbmcsICAvLy9cbiAgICAgICAgICBub2RlID0gdmFyaWFibGVOb2RlLCAgLy8vXG4gICAgICAgICAgbmFtZSA9IHZhcmlhYmxlTmFtZSwgIC8vL1xuICAgICAgICAgIHR5cGUgPSBUeXBlLmZyb21UeXBlTm9kZSh0eXBlTm9kZSwgbG9jYWxDb250ZXh0KSxcbiAgICAgICAgICB2YXJpYWJsZSA9IG5ldyBWYXJpYWJsZShsb2NhbENvbnRleHQsIHN0cmluZywgbm9kZSwgbmFtZSwgdHlwZSk7XG5cbiAgICByZXR1cm4gdmFyaWFibGU7XG4gIH1cbn1cblxuT2JqZWN0LmFzc2lnbihzaGltLCB7XG4gIFZhcmlhYmxlXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgVmFyaWFibGU7XG5cbmZ1bmN0aW9uIHR5cGVGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCkge1xuICBsZXQgeyB0eXBlIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgbmFtZSB9ID0gdHlwZSxcbiAgICAgICAgdHlwZU5hbWUgPSBuYW1lOyAgLy8vXG5cbiAgdHlwZSA9IGZpbGVDb250ZXh0LmZpbmRUeXBlQnlUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgcmV0dXJuIHR5cGU7XG59XG5cbmZ1bmN0aW9uIHRlcm1WYXJpYWJsZUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCB0ZXJtVmFyaWFibGUgPSBudWxsO1xuXG4gIGNvbnN0IHRlcm1WYXJpYWJsZU5vZGUgPSB0ZXJtVmFyaWFibGVOb2RlUXVlcnkodGVybU5vZGUpO1xuXG4gIGlmICh0ZXJtVmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3QgdGVybVZhcmlhYmxlTmFtZSA9IHZhcmlhYmxlTmFtZUZyb21WYXJpYWJsZU5vZGUodGVybVZhcmlhYmxlTm9kZSk7XG5cbiAgICB0ZXJtVmFyaWFibGUgPSBsb2NhbENvbnRleHQuZmluZFZhcmlhYmxlQnlWYXJpYWJsZU5hbWUodGVybVZhcmlhYmxlTmFtZSk7XG4gIH1cblxuICByZXR1cm4gdGVybVZhcmlhYmxlO1xufSJdLCJuYW1lcyI6WyJ0eXBlTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwidmFyaWFibGVOb2RlUXVlcnkiLCJ0ZXJtVmFyaWFibGVOb2RlUXVlcnkiLCJWYXJpYWJsZSIsImxvY2FsQ29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJuYW1lIiwidHlwZSIsImdldExvY2FsQ29udGV4dCIsImdldFN0cmluZyIsImdldE5vZGUiLCJnZXROYW1lIiwiZ2V0VHlwZSIsInNldFR5cGUiLCJtYXRjaFZhcmlhYmxlTmFtZSIsInZhcmlhYmxlTmFtZSIsInZhcmlhYmxlTmFtZU1hdGNoZXMiLCJtYXRjaFZhcmlhYmxlTm9kZSIsInZhcmlhYmxlTm9kZSIsInZhcmlhYmxlTm9kZU1hdGNoZXMiLCJtYXRjaCIsInZlcmlmeSIsInZlcmlmaWVkIiwidmFyaWFibGVTdHJpbmciLCJ0cmFjZSIsInZhcmlhYmxlTmFtZUZyb21WYXJpYWJsZU5vZGUiLCJ2YXJpYWJsZSIsImZpbmRWYXJpYWJsZUJ5VmFyaWFibGVOYW1lIiwiZGVidWciLCJ2ZXJpZnlUeXBlIiwiZmlsZUNvbnRleHQiLCJ0eXBlVmVyaWZpZWQiLCJvYmplY3RUeXBlIiwidHlwZU5hbWUiLCJmaW5kVHlwZUJ5VHlwZU5hbWUiLCJ2ZXJpZnlBdFRvcExldmVsIiwidmVyaWZpZWRBdFRvcExldmVsIiwidmFyaWFibGVQcmVzZW50IiwiaXNWYXJpYWJsZVByZXNlbnRCeVZhcmlhYmxlTmFtZSIsInVuaWZ5VGVybSIsInRlcm0iLCJzdWJzdGl0dXRpb25zIiwidGVybVVuaWZpZWQiLCJ0ZXJtU3RyaW5nIiwidGVybU5vZGUiLCJzdWJzdGl0dXRpb24iLCJmaW5kU3Vic3RpdHV0aW9uQnlWYXJpYWJsZU5vZGUiLCJ0ZXJtTm9kZU1hdGNoZXMiLCJtYXRjaFRlcm1Ob2RlIiwidGVybVZhcmlhYmxlIiwidGVybVZhcmlhYmxlRnJvbVRlcm1Ob2RlIiwidGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uIiwiVGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uIiwiZnJvbVRlcm5BbmRWYXJpYWJsZSIsImFkZFN1YnN0aXR1dGlvbiIsInRvSlNPTiIsInR5cGVKU09OIiwianNvbiIsImZyb21KU09OIiwibGV4ZXIiLCJnZXRMZXhlciIsInBhcnNlciIsImdldFBhcnNlciIsInZhcmlhYmxlTm9kZUZyb21WYXJpYWJsZVN0cmluZyIsIkxvY2FsQ29udGV4dCIsImZyb21GaWxlQ29udGV4dCIsInR5cGVGcm9tSlNPTiIsImZyb21UZXJtTm9kZSIsInRlcm1WYXJpYWJsZU5vZGUiLCJub2RlQXNTdHJpbmciLCJmcm9tVmFyaWFibGVOb2RlIiwiZnJvbVZhcmlhYmxlTm9kZUFuZFR5cGUiLCJmcm9tVmFyaWFibGVEZWNsYXJhdGlvbk5vZGUiLCJ2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSIsIlR5cGUiLCJzaGltIiwidHlwZU5vZGUiLCJmcm9tVHlwZU5vZGUi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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "occam-verify-cli",
|
|
3
3
|
"author": "James Smith",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.1067",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/occam-verify-cli",
|
|
7
7
|
"description": "Occam's Verifier",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"argumentative": "^2.0.32",
|
|
14
14
|
"necessary": "^14.2.1",
|
|
15
|
-
"occam-custom-grammars": "^5.0.
|
|
15
|
+
"occam-custom-grammars": "^5.0.887",
|
|
16
16
|
"occam-entities": "^1.0.176",
|
|
17
17
|
"occam-file-system": "^6.0.214",
|
|
18
18
|
"occam-grammar-utilities": "^8.0.220",
|
package/src/assertion/defined.js
CHANGED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import shim from "../shim";
|
|
4
|
+
import Combinator from "../combinator";
|
|
5
|
+
|
|
6
|
+
import { STATEMENT_META_TYPE_NAME } from "../metaTypeNames";
|
|
7
|
+
import { statementTokensFromUnqualifiedStatementTokens, unqualifiedStatementTokensFromUnqualifiedStatementString } from "../utilities/tokens";
|
|
8
|
+
import { statementNodeFromUnqualifiedStatementNode,
|
|
9
|
+
unqualifiedStatementStringFromStatementString,
|
|
10
|
+
unqualifiedStatementNodeFromUnqualifiedStatementTokens } from "../utilities/node";
|
|
11
|
+
|
|
12
|
+
const statementString = `(${STATEMENT_META_TYPE_NAME})`,
|
|
13
|
+
unqualifiedStatementString = unqualifiedStatementStringFromStatementString(statementString),
|
|
14
|
+
unqualifiedStatementTokens = unqualifiedStatementTokensFromUnqualifiedStatementString(unqualifiedStatementString),
|
|
15
|
+
unqualifiedStatementNode = unqualifiedStatementNodeFromUnqualifiedStatementTokens(unqualifiedStatementTokens),
|
|
16
|
+
statementTokens = statementTokensFromUnqualifiedStatementTokens(unqualifiedStatementTokens),
|
|
17
|
+
statementNode = statementNodeFromUnqualifiedStatementNode(unqualifiedStatementNode),
|
|
18
|
+
nodeAsTokens = (node) => {
|
|
19
|
+
const tokens = statementTokens; ///
|
|
20
|
+
|
|
21
|
+
return tokens;
|
|
22
|
+
},
|
|
23
|
+
nodeAsString = (node) => {
|
|
24
|
+
const string = statementString; ///
|
|
25
|
+
|
|
26
|
+
return string;
|
|
27
|
+
},
|
|
28
|
+
tokensAsString = (tokens) => {
|
|
29
|
+
const string = statementNode; ///
|
|
30
|
+
|
|
31
|
+
return string;
|
|
32
|
+
},
|
|
33
|
+
localContext = {
|
|
34
|
+
nodeAsTokens,
|
|
35
|
+
nodeAsString,
|
|
36
|
+
tokensAsString
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export const bracketedStatementNode = statementNode; ///
|
|
40
|
+
|
|
41
|
+
export default class BracketedCombinator extends Combinator {
|
|
42
|
+
static fromNothing() {
|
|
43
|
+
const { Statement } = shim,
|
|
44
|
+
statement = Statement.fromStatementNode(statementNode, localContext),
|
|
45
|
+
bracketedCombinator = new BracketedCombinator(statement);
|
|
46
|
+
|
|
47
|
+
return bracketedCombinator;
|
|
48
|
+
}
|
|
49
|
+
}
|
package/src/conclusion.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import LocalContext from "./context/local";
|
|
3
4
|
import UnqualifiedStatement from "./statement/unqualified";
|
|
4
5
|
|
|
5
6
|
import { nodeQuery } from "./utilities/query";
|
|
@@ -32,7 +33,13 @@ export default class Conclusion {
|
|
|
32
33
|
|
|
33
34
|
localContext.trace(`Unifying the '${statementString}' statement with the '${conclusionString}' conclusion...`);
|
|
34
35
|
|
|
35
|
-
|
|
36
|
+
const localContextB = localContext;
|
|
37
|
+
|
|
38
|
+
localContext = LocalContext.fromFileContext(this.fileContext);
|
|
39
|
+
|
|
40
|
+
const localContextA = localContext; ///
|
|
41
|
+
|
|
42
|
+
statementUnified = this.unqualifiedStatement.unifyStatement(statement, substitutions, localContextA, localContextB);
|
|
36
43
|
|
|
37
44
|
if (statementUnified) {
|
|
38
45
|
localContext.debug(`...unified the '${statementString}' statement with the '${conclusionString}' conclusion.`);
|
package/src/consequent.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import LocalContext from "./context/local";
|
|
3
4
|
import UnqualifiedStatement from "./statement/unqualified";
|
|
4
5
|
|
|
5
6
|
import { nodeQuery } from "./utilities/query";
|
|
@@ -32,7 +33,13 @@ export default class Consequent {
|
|
|
32
33
|
|
|
33
34
|
localContext.trace(`Unifying the '${statementString}' statement with the '${consequentString}' consequent...`);
|
|
34
35
|
|
|
35
|
-
|
|
36
|
+
const localContextB = localContext;
|
|
37
|
+
|
|
38
|
+
localContext = LocalContext.fromFileContext(this.fileContext);
|
|
39
|
+
|
|
40
|
+
const localContextA = localContext; ///
|
|
41
|
+
|
|
42
|
+
statementUnified = this.unqualifiedStatement.unifyStatement(statement, substitutions, localContextA, localContextB);
|
|
36
43
|
|
|
37
44
|
if (statementUnified) {
|
|
38
45
|
localContext.debug(`...unified the '${statementString}' statement with the '${consequentString}' consequent.`);
|
package/src/constants.js
CHANGED
|
@@ -4,5 +4,5 @@ export const NOT = "not";
|
|
|
4
4
|
export const COMMA = ",";
|
|
5
5
|
export const FUNCTION = "function";
|
|
6
6
|
export const EMPTY_STRING = "";
|
|
7
|
-
export const BRACKETED_TERM_DEPTH =
|
|
8
|
-
export const BRACKETED_STATEMENT_DEPTH =
|
|
7
|
+
export const BRACKETED_TERM_DEPTH = 2;
|
|
8
|
+
export const BRACKETED_STATEMENT_DEPTH = 2;
|
|
@@ -2,23 +2,46 @@
|
|
|
2
2
|
|
|
3
3
|
import shim from "../shim";
|
|
4
4
|
import Constructor from "../constructor";
|
|
5
|
-
import bracketedConstructorTermNode from "../node/term/constructor/bracketed";
|
|
6
5
|
|
|
6
|
+
import { OBJECT_TYPE_NAME } from "../typeNames";
|
|
7
7
|
import { stringFromTermAndType } from "../constructor";
|
|
8
|
-
import {
|
|
8
|
+
import { termTokensFromConstructorDeclarationTokens, constructorDeclarationTokensFromConstructorDeclarationString } from "../utilities/tokens";
|
|
9
|
+
import { termNodeFromConstructorDeclarationNode,
|
|
10
|
+
constructorDeclarationStringFromTermString,
|
|
11
|
+
constructorDeclarationNodeFromConstructorDeclarationTokens } from "../utilities/node";
|
|
9
12
|
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
+
const termString = `(${OBJECT_TYPE_NAME})`, ///
|
|
14
|
+
constructorDeclarationString = constructorDeclarationStringFromTermString(termString),
|
|
15
|
+
constructorDeclarationTokens = constructorDeclarationTokensFromConstructorDeclarationString(constructorDeclarationString),
|
|
16
|
+
constructorDeclarationNode = constructorDeclarationNodeFromConstructorDeclarationTokens(constructorDeclarationTokens),
|
|
17
|
+
termNode = termNodeFromConstructorDeclarationNode(constructorDeclarationNode),
|
|
18
|
+
termTokens = termTokensFromConstructorDeclarationTokens(constructorDeclarationTokens),
|
|
19
|
+
nodeAsTokens = (node) => {
|
|
20
|
+
const tokens = termTokens; ///
|
|
13
21
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
22
|
+
return tokens;
|
|
23
|
+
},
|
|
24
|
+
nodeAsString = (node) => {
|
|
25
|
+
const string = termString; ///
|
|
26
|
+
|
|
27
|
+
return string;
|
|
28
|
+
},
|
|
29
|
+
tokensAsString = (tokens) => {
|
|
30
|
+
const string = termNode; ///
|
|
31
|
+
|
|
32
|
+
return string;
|
|
33
|
+
},
|
|
34
|
+
localContext = {
|
|
35
|
+
nodeAsTokens,
|
|
36
|
+
nodeAsString,
|
|
37
|
+
tokensAsString
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export const bracketedTermNode = termNode; ///
|
|
17
41
|
|
|
18
42
|
export default class BracketedConstructor extends Constructor {
|
|
19
43
|
static fromNothing() {
|
|
20
44
|
const { Term } = shim,
|
|
21
|
-
termNode = bracketedConstructorTermNode, ///
|
|
22
45
|
term = Term.fromTermNode(termNode, localContext),
|
|
23
46
|
type = null,
|
|
24
47
|
string = stringFromTermAndType(term, type),
|
package/src/context/file.js
CHANGED
|
@@ -17,7 +17,7 @@ import Metatheorem from "../metatheorem";
|
|
|
17
17
|
import Metavariable from "../metavariable";
|
|
18
18
|
|
|
19
19
|
import { objectType } from "../type";
|
|
20
|
-
import { nodeAsString, nodesAsString } from "../utilities/string";
|
|
20
|
+
import { nodeAsTokens, nodeAsString, nodesAsString, tokensAsString } from "../utilities/string";
|
|
21
21
|
|
|
22
22
|
const { push } = arrayUtilities;
|
|
23
23
|
|
|
@@ -520,10 +520,9 @@ export default class FileContext {
|
|
|
520
520
|
}
|
|
521
521
|
|
|
522
522
|
findVariableByVariableName(variableName) {
|
|
523
|
-
const
|
|
524
|
-
variables = this.getVariables(),
|
|
523
|
+
const variables = this.getVariables(),
|
|
525
524
|
variable = variables.find((variable) => {
|
|
526
|
-
const nameMatches = variable.
|
|
525
|
+
const nameMatches = variable.matchVariableName(variableName);
|
|
527
526
|
|
|
528
527
|
if (nameMatches) {
|
|
529
528
|
return true;
|
|
@@ -547,10 +546,9 @@ export default class FileContext {
|
|
|
547
546
|
}
|
|
548
547
|
|
|
549
548
|
findMetavariableByMetavariableName(metavariableName) {
|
|
550
|
-
const
|
|
551
|
-
metavariables = this.getMetavariables(),
|
|
549
|
+
const metavariables = this.getMetavariables(),
|
|
552
550
|
metavariable = metavariables.find((metavariable) => {
|
|
553
|
-
const nameMatches = metavariable.
|
|
551
|
+
const nameMatches = metavariable.matchMetavariableName(metavariableName);
|
|
554
552
|
|
|
555
553
|
if (nameMatches) {
|
|
556
554
|
return true;
|
|
@@ -560,18 +558,48 @@ export default class FileContext {
|
|
|
560
558
|
return metavariable;
|
|
561
559
|
}
|
|
562
560
|
|
|
563
|
-
nodeAsString(node) {
|
|
564
|
-
|
|
561
|
+
nodeAsString(node, tokens = null) {
|
|
562
|
+
if (tokens === null) {
|
|
563
|
+
tokens = this.tokens;
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
const string = nodeAsString(node, tokens);
|
|
565
567
|
|
|
566
568
|
return string;
|
|
567
569
|
}
|
|
568
570
|
|
|
569
|
-
nodesAsString(node) {
|
|
570
|
-
|
|
571
|
+
nodesAsString(node, tokens = null) {
|
|
572
|
+
if (tokens === null) {
|
|
573
|
+
tokens = this.tokens;
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
const string = nodesAsString(node, tokens);
|
|
571
577
|
|
|
572
578
|
return string;
|
|
573
579
|
}
|
|
574
580
|
|
|
581
|
+
nodeAsTokens(node, tokens = null) {
|
|
582
|
+
if (tokens === null) {
|
|
583
|
+
tokens = this.tokens;
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
tokens = nodeAsTokens(node, tokens); ///
|
|
587
|
+
|
|
588
|
+
return tokens;
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
nodesAsTokens(node, tokens = null) {
|
|
592
|
+
if (tokens === null) {
|
|
593
|
+
tokens = this.tokens;
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
tokens = nodesAsTokens(node, tokens); ///
|
|
597
|
+
|
|
598
|
+
return tokens;
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
tokensAsString(tokens) { return tokensAsString(tokens); }
|
|
602
|
+
|
|
575
603
|
addType(type) {
|
|
576
604
|
this.types.push(type);
|
|
577
605
|
}
|
|
@@ -595,9 +623,9 @@ export default class FileContext {
|
|
|
595
623
|
addVariable(variable) {
|
|
596
624
|
let variableAdded = false;
|
|
597
625
|
|
|
598
|
-
const
|
|
626
|
+
const variableNode = variable.getNode(),
|
|
599
627
|
variablePresent = this.variables.some((variable) => {
|
|
600
|
-
const variableMatchesNode = variable.
|
|
628
|
+
const variableMatchesNode = variable.matchVariableNode(variableNode);
|
|
601
629
|
|
|
602
630
|
if (variableMatchesNode) {
|
|
603
631
|
return true;
|