occam-verify-cli 0.0.272 → 0.0.274
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/.swcrc +5 -0
- package/bin/abbreviations.js +4 -2
- package/bin/context/{package → release}/fileSystem.js +38 -25
- package/bin/fileNames.js +7 -7
- package/bin/loadReleaseContexts.js +52 -0
- package/bin/main.js +8 -9
- package/bin/options.js +2 -2
- package/bin/utilities/fileSystem.js +13 -15
- package/lib/assertion.js +140 -0
- package/lib/axiom.js +90 -0
- package/lib/browser.js +27 -0
- package/lib/combinator.js +58 -0
- package/lib/conclusion.js +140 -0
- package/lib/constants.js +42 -0
- package/lib/constructor.js +76 -0
- package/lib/context/file.js +342 -0
- package/lib/context/metaproof.js +232 -0
- package/lib/context/proof.js +211 -0
- package/lib/context/release.js +303 -0
- package/lib/main.js +27 -0
- package/lib/metaAssertion.js +200 -0
- package/lib/metaSubstitution.js +123 -0
- package/lib/permutationsMatrix.js +466136 -0
- package/lib/premise.js +168 -0
- package/lib/rule.js +139 -0
- package/lib/ruleNames.js +46 -0
- package/lib/type.js +153 -0
- package/lib/utilities/array.js +99 -0
- package/lib/utilities/metastatement.js +45 -0
- package/lib/utilities/permutations.js +114 -0
- package/lib/utilities/query.js +81 -0
- package/lib/utilities/string.js +54 -0
- package/lib/variable.js +94 -0
- package/lib/verify/IndicativeConditional.js +29 -0
- package/lib/verify/assertion/type.js +52 -0
- package/lib/verify/axiom.js +52 -0
- package/lib/verify/conclusion.js +34 -0
- package/lib/verify/conditinalInference.js +30 -0
- package/lib/verify/declaration/combinator.js +24 -0
- package/lib/verify/declaration/constructor.js +24 -0
- package/lib/verify/declaration/topLevel.js +51 -0
- package/lib/verify/declaration/type.js +24 -0
- package/lib/verify/declaration/variable.js +24 -0
- package/lib/verify/equality.js +45 -0
- package/lib/verify/file.js +39 -0
- package/lib/verify/files.js +48 -0
- package/lib/verify/label.js +24 -0
- package/lib/verify/labels.js +27 -0
- package/lib/verify/metaDerivation.js +94 -0
- package/lib/verify/metaproof.js +81 -0
- package/lib/verify/metastatement/qualified.js +31 -0
- package/lib/verify/metastatement/unqualified.js +39 -0
- package/lib/verify/premiseOrPremises.js +39 -0
- package/lib/verify/release.js +61 -0
- package/lib/verify/rule.js +61 -0
- package/lib/verify/statement/qualified.js +24 -0
- package/lib/verify/statement/unqualified.js +32 -0
- package/lib/verify/statement.js +43 -0
- package/lib/verify/statementAsCombinator.js +102 -0
- package/lib/verify/supposition.js +29 -0
- package/lib/verify/term.js +121 -0
- package/lib/verify/termAsConstructor.js +126 -0
- package/lib/verify/termAsVariable.js +31 -0
- package/lib/verify/type.js +45 -0
- package/lib/verify/unconditionalInference.js +31 -0
- package/lib/verify/variable.js +48 -0
- package/package.json +21 -5
- package/{bin → src}/assertion.js +2 -4
- package/src/axiom.js +49 -0
- package/src/browser.js +4 -0
- package/{bin → src}/combinator.js +2 -4
- package/{bin → src}/conclusion.js +4 -6
- package/src/constants.js +9 -0
- package/{bin → src}/constructor.js +2 -4
- package/{bin → src}/context/file.js +34 -24
- package/{bin → src}/context/metaproof.js +13 -3
- package/{bin → src}/context/proof.js +13 -3
- package/src/context/release.js +219 -0
- package/src/main.js +4 -0
- package/{bin → src}/metaAssertion.js +4 -6
- package/{bin → src}/metaSubstitution.js +11 -4
- package/{bin → src}/permutationsMatrix.js +1 -1
- package/{bin → src}/premise.js +6 -8
- package/{bin → src}/rule.js +24 -15
- package/src/ruleNames.js +10 -0
- package/{bin → src}/type.js +1 -3
- package/{bin → src}/utilities/array.js +19 -24
- package/{bin → src}/utilities/metastatement.js +18 -12
- package/{bin → src}/utilities/permutations.js +4 -4
- package/{bin → src}/utilities/query.js +8 -18
- package/{bin → src}/utilities/string.js +4 -10
- package/{bin → src}/variable.js +1 -3
- package/src/verify/IndicativeConditional.js +20 -0
- package/{bin → src}/verify/assertion/type.js +8 -14
- package/src/verify/axiom.js +68 -0
- package/{bin → src}/verify/conclusion.js +4 -6
- package/src/verify/conditinalInference.js +25 -0
- package/{bin → src}/verify/declaration/combinator.js +3 -5
- package/{bin → src}/verify/declaration/constructor.js +3 -5
- package/{bin → src}/verify/declaration/topLevel.js +8 -10
- package/{bin → src}/verify/declaration/type.js +3 -5
- package/{bin → src}/verify/declaration/variable.js +3 -5
- package/{bin → src}/verify/equality.js +4 -6
- package/{bin → src}/verify/file.js +9 -15
- package/{bin → src}/verify/files.js +5 -7
- package/{bin → src}/verify/label.js +3 -9
- package/{bin → src}/verify/labels.js +2 -4
- package/{bin → src}/verify/metaDerivation.js +25 -19
- package/{bin → src}/verify/metaproof.js +6 -7
- package/{bin → src}/verify/metastatement/qualified.js +4 -10
- package/{bin → src}/verify/metastatement/unqualified.js +5 -11
- package/{bin → src}/verify/premiseOrPremises.js +9 -10
- package/src/verify/release.js +70 -0
- package/{bin → src}/verify/rule.js +17 -20
- package/{bin → src}/verify/statement/qualified.js +3 -5
- package/{bin → src}/verify/statement/unqualified.js +3 -5
- package/{bin → src}/verify/statement.js +7 -13
- package/{bin → src}/verify/statementAsCombinator.js +8 -14
- package/{bin → src}/verify/supposition.js +4 -6
- package/{bin → src}/verify/term.js +7 -13
- package/{bin → src}/verify/termAsConstructor.js +13 -19
- package/{bin → src}/verify/termAsVariable.js +3 -9
- package/{bin → src}/verify/type.js +7 -13
- package/{bin → src}/verify/unconditionalInference.js +4 -11
- package/{bin → src}/verify/variable.js +6 -12
- package/bin/axiom.js +0 -52
- package/bin/consequent.js +0 -19
- package/bin/constants.js +0 -19
- package/bin/context/package.js +0 -221
- package/bin/loadPackageContexts.js +0 -53
- package/bin/permutations.js +0 -3
- package/bin/ruleNames.js +0 -23
- package/bin/verify/axiom/IndicativeConditional.js +0 -54
- package/bin/verify/axiom/unqualifiedStatement.js +0 -40
- package/bin/verify/axiom.js +0 -37
- package/bin/verify/conditinalInference.js +0 -42
- package/bin/verify/consequent.js +0 -32
- package/bin/verify/metaConsequent.js +0 -23
- package/bin/verify/metaSupposition.js +0 -24
- package/bin/verify/package.js +0 -81
- package/index.js +0 -9
package/lib/premise.js
ADDED
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return Premise;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _metaSubstitution = /*#__PURE__*/ _interopRequireDefault(require("./metaSubstitution"));
|
|
12
|
+
var _array = require("./utilities/array");
|
|
13
|
+
var _query = require("./utilities/query");
|
|
14
|
+
var _ruleNames = require("./ruleNames");
|
|
15
|
+
function _classCallCheck(instance, Constructor) {
|
|
16
|
+
if (!(instance instanceof Constructor)) {
|
|
17
|
+
throw new TypeError("Cannot call a class as a function");
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function _defineProperties(target, props) {
|
|
21
|
+
for(var i = 0; i < props.length; i++){
|
|
22
|
+
var descriptor = props[i];
|
|
23
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
|
24
|
+
descriptor.configurable = true;
|
|
25
|
+
if ("value" in descriptor) descriptor.writable = true;
|
|
26
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function _createClass(Constructor, protoProps, staticProps) {
|
|
30
|
+
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
31
|
+
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
32
|
+
return Constructor;
|
|
33
|
+
}
|
|
34
|
+
function _interopRequireDefault(obj) {
|
|
35
|
+
return obj && obj.__esModule ? obj : {
|
|
36
|
+
default: obj
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
var metastatementNodesQuery = (0, _query.nodesQuery)("/metaSubproofAssertion/metastatement"), metaSubproofAssertionNodeQuery = (0, _query.nodeQuery)("/metastatement/metaSubproofAssertion!"), qualifiedOrUnqualifiedMetastatementMetastatementNodesQuery = (0, _query.nodesQuery)("/metaSubproof/qualifiedMetastatement|unqualifiedMetastatement/metastatement!");
|
|
40
|
+
var Premise = /*#__PURE__*/ function() {
|
|
41
|
+
function Premise(metastatementNode) {
|
|
42
|
+
_classCallCheck(this, Premise);
|
|
43
|
+
this.metastatementNode = metastatementNode;
|
|
44
|
+
}
|
|
45
|
+
_createClass(Premise, [
|
|
46
|
+
{
|
|
47
|
+
key: "getMetastatementNode",
|
|
48
|
+
value: function getMetastatementNode() {
|
|
49
|
+
return this.metastatementNode;
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
key: "matchMetaSubproofNode",
|
|
54
|
+
value: function matchMetaSubproofNode(metaSubproofNode, metaSubstitutions) {
|
|
55
|
+
var metaSubproofNodeMatches = false;
|
|
56
|
+
var metaSubproofAssertionNode = metaSubproofAssertionNodeQuery(this.metastatementNode);
|
|
57
|
+
if (metaSubproofAssertionNode !== null) {
|
|
58
|
+
var metaSubproofAssertionMetastatementNodes = metastatementNodesQuery(metaSubproofAssertionNode), firstMetaSubproofAssertionMetastatementNode = (0, _array.first)(metaSubproofAssertionMetastatementNodes), qualifiedOrUnqualifiedMetastatementMetastatementNodes = qualifiedOrUnqualifiedMetastatementMetastatementNodesQuery(metaSubproofNode), firstQualifiedOrUnqualifiedMetastatementMetastatementNode = (0, _array.first)(qualifiedOrUnqualifiedMetastatementMetastatementNodes);
|
|
59
|
+
var nonTerminalNode = firstQualifiedOrUnqualifiedMetastatementMetastatementNode, premiseNonTerminalNode = firstMetaSubproofAssertionMetastatementNode, premiseNonTerminalNodeMatches = matchPremiseNonTerminalNode(premiseNonTerminalNode, nonTerminalNode, metaSubstitutions);
|
|
60
|
+
if (premiseNonTerminalNodeMatches) {
|
|
61
|
+
var secondMetaSubproofAssertionMetastatementNode = (0, _array.second)(metaSubproofAssertionMetastatementNodes), secondQualifiedOrUnqualifiedMetastatementMetastatementNode = (0, _array.second)(qualifiedOrUnqualifiedMetastatementMetastatementNodes);
|
|
62
|
+
var nonTerminalNode1 = secondQualifiedOrUnqualifiedMetastatementMetastatementNode, premiseNonTerminalNode1 = secondMetaSubproofAssertionMetastatementNode, premiseNonTerminalNodeMatches1 = matchPremiseNonTerminalNode(premiseNonTerminalNode1, nonTerminalNode1, metaSubstitutions);
|
|
63
|
+
metaSubproofNodeMatches = premiseNonTerminalNodeMatches1; ///
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return metaSubproofNodeMatches;
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
key: "matchMetastatementNode",
|
|
71
|
+
value: function matchMetastatementNode(metastatementNode, metaSubstitutions) {
|
|
72
|
+
var nonTerminalNode = metastatementNode, premiseNonTerminalNode = this.metastatementNode, premiseNonTerminalNodeMatches = matchPremiseNonTerminalNode(premiseNonTerminalNode, nonTerminalNode, metaSubstitutions), metastatementNodeMatches = premiseNonTerminalNodeMatches; ///
|
|
73
|
+
return metastatementNodeMatches;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
], [
|
|
77
|
+
{
|
|
78
|
+
key: "fromMetastatementNode",
|
|
79
|
+
value: function fromMetastatementNode(metastatementNode) {
|
|
80
|
+
var premise = new Premise(metastatementNode);
|
|
81
|
+
return premise;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
]);
|
|
85
|
+
return Premise;
|
|
86
|
+
}();
|
|
87
|
+
function matchPremiseNode(premiseNode, node, metaSubstitutions) {
|
|
88
|
+
var premiseNodeMatches = false;
|
|
89
|
+
var nodeTerminalNode = node.isTerminalNode(), ruleNodeTerminalNode = premiseNode.isTerminalNode();
|
|
90
|
+
if (nodeTerminalNode === ruleNodeTerminalNode) {
|
|
91
|
+
if (nodeTerminalNode) {
|
|
92
|
+
var terminalNode = node, premiseTerminalNode = premiseNode, premiseTerminalNodeMatches = matchPremiseTerminalNode(premiseTerminalNode, terminalNode, metaSubstitutions);
|
|
93
|
+
premiseNodeMatches = premiseTerminalNodeMatches; ///
|
|
94
|
+
} else {
|
|
95
|
+
var nonTerminalNode = node, premiseNonTerminalNode = premiseNode, premiseNonTerminalNodeMatches = matchPremiseNonTerminalNode(premiseNonTerminalNode, nonTerminalNode, metaSubstitutions);
|
|
96
|
+
premiseNodeMatches = premiseNonTerminalNodeMatches; ///
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return premiseNodeMatches;
|
|
100
|
+
}
|
|
101
|
+
function matchPremiseNodes(premiseNodes, nodes, metaSubstitutions) {
|
|
102
|
+
var premiseNodesMatches = false;
|
|
103
|
+
var nodesLength = nodes.length, premiseNodesLength = premiseNodes.length;
|
|
104
|
+
if (nodesLength === premiseNodesLength) {
|
|
105
|
+
premiseNodesMatches = nodes.every(function(node, index) {
|
|
106
|
+
var premiseNode = premiseNodes[index], premiseNodeMatches = matchPremiseNode(premiseNode, node, metaSubstitutions);
|
|
107
|
+
if (premiseNodeMatches) {
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
return premiseNodesMatches;
|
|
113
|
+
}
|
|
114
|
+
function matchPremiseMetavariable(premiseMetavariableNode, nodes, metaSubstitutions) {
|
|
115
|
+
var premiseMetavariableMatches;
|
|
116
|
+
var premiseMetavariableName = (0, _query.metavariableNameFromMetavariableNode)(premiseMetavariableNode), metaSubstitution = metaSubstitutions.find(function(metaSubstitution) {
|
|
117
|
+
var metavariableName = metaSubstitution.getMetavariableName();
|
|
118
|
+
if (metavariableName === premiseMetavariableName) {
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
}) || null;
|
|
122
|
+
if (metaSubstitution !== null) {
|
|
123
|
+
var metaSubstitutionNodesMatch = metaSubstitution.matchNodes(nodes);
|
|
124
|
+
premiseMetavariableMatches = metaSubstitutionNodesMatch; ///
|
|
125
|
+
} else {
|
|
126
|
+
var metavariableName = premiseMetavariableName, metaSubstitution1 = _metaSubstitution.default.fromMetavariableNameAndNodes(metavariableName, nodes);
|
|
127
|
+
metaSubstitutions.push(metaSubstitution1);
|
|
128
|
+
premiseMetavariableMatches = true;
|
|
129
|
+
}
|
|
130
|
+
return premiseMetavariableMatches;
|
|
131
|
+
}
|
|
132
|
+
function matchPremiseTerminalNode(premiseTerminalNode, terminalNode, metaSubstitutions) {
|
|
133
|
+
var matches = premiseTerminalNode.match(terminalNode), premiseTerminalNodeMatches = matches;
|
|
134
|
+
return premiseTerminalNodeMatches;
|
|
135
|
+
}
|
|
136
|
+
function matchPremiseNonTerminalNode(premiseNonTerminalNode, nonTerminalNode, metaSubstitutions) {
|
|
137
|
+
var premiseNonTerminalNodeMatches = false;
|
|
138
|
+
var ruleName = nonTerminalNode.getRuleName(), premiseRuleName = premiseNonTerminalNode.getRuleName(); ///
|
|
139
|
+
if (ruleName === premiseRuleName) {
|
|
140
|
+
var childNodes = nonTerminalNode.getChildNodes(), premiseChildNodes = premiseNonTerminalNode.getChildNodes(), nodes = childNodes, premiseNodes = premiseChildNodes, premiseChildNodesMatches = matchPremiseNodes(premiseNodes, nodes, metaSubstitutions);
|
|
141
|
+
premiseNonTerminalNodeMatches = premiseChildNodesMatches; ///
|
|
142
|
+
if (!premiseNonTerminalNodeMatches) {
|
|
143
|
+
var ruleNameMetastatementRuleName = ruleName === _ruleNames.METASTATEMENT_RULE_NAME;
|
|
144
|
+
if (ruleNameMetastatementRuleName) {
|
|
145
|
+
var metastatementNode = nonTerminalNode, premiseMetastatementNode = premiseNonTerminalNode, premiseMetastatementNodeMatches = matchPremiseMetastatementNode(premiseMetastatementNode, metastatementNode, metaSubstitutions);
|
|
146
|
+
premiseNonTerminalNodeMatches = premiseMetastatementNodeMatches; ///
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return premiseNonTerminalNodeMatches;
|
|
151
|
+
}
|
|
152
|
+
function matchPremiseMetastatementNode(premiseMetastatementNode, metastatementNode, metaSubstitutions) {
|
|
153
|
+
var premiseMetastatementNodeMatches = false;
|
|
154
|
+
var premiseNonTerminalNode = premiseMetastatementNode, premiseChildNodes = premiseNonTerminalNode.getChildNodes(), premiseChildNodesLength = premiseChildNodes.length;
|
|
155
|
+
if (premiseChildNodesLength === 1) {
|
|
156
|
+
var firstPremiseChildNode = (0, _array.first)(premiseChildNodes), premiseChildNode = firstPremiseChildNode, premiseChildNodeNonTerminalNode = premiseChildNode.isNonTerminalNode();
|
|
157
|
+
if (premiseChildNodeNonTerminalNode) {
|
|
158
|
+
var premiseNonTerminalChildNode = premiseChildNode, premiseNonTerminalChildNodeRuleName = premiseNonTerminalChildNode.getRuleName(), premiseNonTerminalChildNodeRuleNameMetavariableRuleName = premiseNonTerminalChildNodeRuleName === _ruleNames.METAVARIABLE_RULE_NAME;
|
|
159
|
+
if (premiseNonTerminalChildNodeRuleNameMetavariableRuleName) {
|
|
160
|
+
var premiseMetavariableNode = premiseNonTerminalChildNode, nonTerminalNode = metastatementNode, childNodes = nonTerminalNode.getChildNodes(), nodes = childNodes, premiseMetaVariableMatches = matchPremiseMetavariable(premiseMetavariableNode, nodes, metaSubstitutions);
|
|
161
|
+
premiseMetastatementNodeMatches = premiseMetaVariableMatches; ///
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return premiseMetastatementNodeMatches;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wcmVtaXNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgTWV0YVN1YnN0aXR1dGlvbiBmcm9tIFwiLi9tZXRhU3Vic3RpdHV0aW9uXCI7XG5cbmltcG9ydCB7IGZpcnN0LCBzZWNvbmQgfSBmcm9tIFwiLi91dGlsaXRpZXMvYXJyYXlcIjtcbmltcG9ydCB7IG5vZGVRdWVyeSwgbm9kZXNRdWVyeSB9IGZyb20gXCIuL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgbWV0YXZhcmlhYmxlTmFtZUZyb21NZXRhdmFyaWFibGVOb2RlIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBNRVRBVkFSSUFCTEVfUlVMRV9OQU1FLCBNRVRBU1RBVEVNRU5UX1JVTEVfTkFNRSB9IGZyb20gXCIuL3J1bGVOYW1lc1wiO1xuXG5jb25zdCBtZXRhc3RhdGVtZW50Tm9kZXNRdWVyeSA9IG5vZGVzUXVlcnkoXCIvbWV0YVN1YnByb29mQXNzZXJ0aW9uL21ldGFzdGF0ZW1lbnRcIiksXG4gICAgICBtZXRhU3VicHJvb2ZBc3NlcnRpb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvbWV0YXN0YXRlbWVudC9tZXRhU3VicHJvb2ZBc3NlcnRpb24hXCIpLFxuICAgICAgcXVhbGlmaWVkT3JVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRNZXRhc3RhdGVtZW50Tm9kZXNRdWVyeSA9IG5vZGVzUXVlcnkoXCIvbWV0YVN1YnByb29mL3F1YWxpZmllZE1ldGFzdGF0ZW1lbnR8dW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50L21ldGFzdGF0ZW1lbnQhXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQcmVtaXNlIHtcbiAgY29uc3RydWN0b3IobWV0YXN0YXRlbWVudE5vZGUpIHtcbiAgICB0aGlzLm1ldGFzdGF0ZW1lbnROb2RlID0gbWV0YXN0YXRlbWVudE5vZGU7XG4gIH1cblxuICBnZXRNZXRhc3RhdGVtZW50Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRhc3RhdGVtZW50Tm9kZTtcbiAgfVxuXG4gIG1hdGNoTWV0YVN1YnByb29mTm9kZShtZXRhU3VicHJvb2ZOb2RlLCBtZXRhU3Vic3RpdHV0aW9ucykge1xuICAgIGxldCBtZXRhU3VicHJvb2ZOb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgbWV0YVN1YnByb29mQXNzZXJ0aW9uTm9kZSA9IG1ldGFTdWJwcm9vZkFzc2VydGlvbk5vZGVRdWVyeSh0aGlzLm1ldGFzdGF0ZW1lbnROb2RlKTtcblxuICAgIGlmIChtZXRhU3VicHJvb2ZBc3NlcnRpb25Ob2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBtZXRhU3VicHJvb2ZBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZXMgPSBtZXRhc3RhdGVtZW50Tm9kZXNRdWVyeShtZXRhU3VicHJvb2ZBc3NlcnRpb25Ob2RlKSxcbiAgICAgICAgICAgIGZpcnN0TWV0YVN1YnByb29mQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUgPSBmaXJzdChtZXRhU3VicHJvb2ZBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZXMpLFxuICAgICAgICAgICAgcXVhbGlmaWVkT3JVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRNZXRhc3RhdGVtZW50Tm9kZXMgPSBxdWFsaWZpZWRPclVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE1ldGFzdGF0ZW1lbnROb2Rlc1F1ZXJ5KG1ldGFTdWJwcm9vZk5vZGUpLFxuICAgICAgICAgICAgZmlyc3RRdWFsaWZpZWRPclVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE1ldGFzdGF0ZW1lbnROb2RlID0gZmlyc3QocXVhbGlmaWVkT3JVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRNZXRhc3RhdGVtZW50Tm9kZXMpO1xuXG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBmaXJzdFF1YWxpZmllZE9yVW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50TWV0YXN0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICAgICAgcHJlbWlzZU5vblRlcm1pbmFsTm9kZSA9IGZpcnN0TWV0YVN1YnByb29mQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICAgIHByZW1pc2VOb25UZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hQcmVtaXNlTm9uVGVybWluYWxOb2RlKHByZW1pc2VOb25UZXJtaW5hbE5vZGUsIG5vblRlcm1pbmFsTm9kZSwgbWV0YVN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICBpZiAocHJlbWlzZU5vblRlcm1pbmFsTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgY29uc3Qgc2Vjb25kTWV0YVN1YnByb29mQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUgPSBzZWNvbmQobWV0YVN1YnByb29mQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGVzKSxcbiAgICAgICAgICAgICAgc2Vjb25kUXVhbGlmaWVkT3JVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRNZXRhc3RhdGVtZW50Tm9kZSA9IHNlY29uZChxdWFsaWZpZWRPclVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE1ldGFzdGF0ZW1lbnROb2Rlcyk7XG5cbiAgICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gc2Vjb25kUXVhbGlmaWVkT3JVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRNZXRhc3RhdGVtZW50Tm9kZSwgLy8vXG4gICAgICAgICAgICAgIHByZW1pc2VOb25UZXJtaW5hbE5vZGUgPSBzZWNvbmRNZXRhU3VicHJvb2ZBc3NlcnRpb25NZXRhc3RhdGVtZW50Tm9kZSwgLy8vXG4gICAgICAgICAgICAgIHByZW1pc2VOb25UZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hQcmVtaXNlTm9uVGVybWluYWxOb2RlKHByZW1pc2VOb25UZXJtaW5hbE5vZGUsIG5vblRlcm1pbmFsTm9kZSwgbWV0YVN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICAgIG1ldGFTdWJwcm9vZk5vZGVNYXRjaGVzID0gcHJlbWlzZU5vblRlcm1pbmFsTm9kZU1hdGNoZXM7IC8vL1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtZXRhU3VicHJvb2ZOb2RlTWF0Y2hlcztcbiAgfVxuXG4gIG1hdGNoTWV0YXN0YXRlbWVudE5vZGUobWV0YXN0YXRlbWVudE5vZGUsIG1ldGFTdWJzdGl0dXRpb25zKSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbWV0YXN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICBwcmVtaXNlTm9uVGVybWluYWxOb2RlID0gdGhpcy5tZXRhc3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICAgIHByZW1pc2VOb25UZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hQcmVtaXNlTm9uVGVybWluYWxOb2RlKHByZW1pc2VOb25UZXJtaW5hbE5vZGUsIG5vblRlcm1pbmFsTm9kZSwgbWV0YVN1YnN0aXR1dGlvbnMpLFxuICAgICAgICAgIG1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IHByZW1pc2VOb25UZXJtaW5hbE5vZGVNYXRjaGVzOyAvLy9cblxuICAgIHJldHVybiBtZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXM7XG4gIH1cblxuICBzdGF0aWMgZnJvbU1ldGFzdGF0ZW1lbnROb2RlKG1ldGFzdGF0ZW1lbnROb2RlKSB7XG4gICAgY29uc3QgcHJlbWlzZSA9IG5ldyBQcmVtaXNlKG1ldGFzdGF0ZW1lbnROb2RlKTtcblxuICAgIHJldHVybiBwcmVtaXNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1hdGNoUHJlbWlzZU5vZGUocHJlbWlzZU5vZGUsIG5vZGUsIG1ldGFTdWJzdGl0dXRpb25zKSB7XG4gIGxldCBwcmVtaXNlTm9kZU1hdGNoZXMgPSBmYWxzZTtcblxuICBjb25zdCBub2RlVGVybWluYWxOb2RlID0gbm9kZS5pc1Rlcm1pbmFsTm9kZSgpLFxuICAgICAgICBydWxlTm9kZVRlcm1pbmFsTm9kZSA9IHByZW1pc2VOb2RlLmlzVGVybWluYWxOb2RlKCk7XG5cbiAgaWYgKG5vZGVUZXJtaW5hbE5vZGUgPT09IHJ1bGVOb2RlVGVybWluYWxOb2RlKSB7XG4gICAgaWYgKG5vZGVUZXJtaW5hbE5vZGUpIHtcbiAgICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IG5vZGUsICAvLy9cbiAgICAgICAgICAgIHByZW1pc2VUZXJtaW5hbE5vZGUgPSBwcmVtaXNlTm9kZSwgIC8vL1xuICAgICAgICAgICAgcHJlbWlzZVRlcm1pbmFsTm9kZU1hdGNoZXMgPSBtYXRjaFByZW1pc2VUZXJtaW5hbE5vZGUocHJlbWlzZVRlcm1pbmFsTm9kZSwgdGVybWluYWxOb2RlLCBtZXRhU3Vic3RpdHV0aW9ucyk7XG5cbiAgICAgIHByZW1pc2VOb2RlTWF0Y2hlcyA9IHByZW1pc2VUZXJtaW5hbE5vZGVNYXRjaGVzOyAgLy8vXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG5vZGUsIC8vL1xuICAgICAgICAgICAgcHJlbWlzZU5vblRlcm1pbmFsTm9kZSA9IHByZW1pc2VOb2RlLCAgLy8vXG4gICAgICAgICAgICBwcmVtaXNlTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IG1hdGNoUHJlbWlzZU5vblRlcm1pbmFsTm9kZShwcmVtaXNlTm9uVGVybWluYWxOb2RlLCBub25UZXJtaW5hbE5vZGUsIG1ldGFTdWJzdGl0dXRpb25zKTtcblxuICAgICAgcHJlbWlzZU5vZGVNYXRjaGVzID0gcHJlbWlzZU5vblRlcm1pbmFsTm9kZU1hdGNoZXM7IC8vL1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwcmVtaXNlTm9kZU1hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1hdGNoUHJlbWlzZU5vZGVzKHByZW1pc2VOb2Rlcywgbm9kZXMsIG1ldGFTdWJzdGl0dXRpb25zKSB7XG4gIGxldCBwcmVtaXNlTm9kZXNNYXRjaGVzID0gZmFsc2U7XG5cbiAgY29uc3Qgbm9kZXNMZW5ndGggPSBub2Rlcy5sZW5ndGgsXG4gICAgICAgIHByZW1pc2VOb2Rlc0xlbmd0aCA9IHByZW1pc2VOb2Rlcy5sZW5ndGg7XG5cbiAgaWYgKG5vZGVzTGVuZ3RoID09PSBwcmVtaXNlTm9kZXNMZW5ndGgpIHtcbiAgICBwcmVtaXNlTm9kZXNNYXRjaGVzID0gbm9kZXMuZXZlcnkoKG5vZGUsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBwcmVtaXNlTm9kZSA9IHByZW1pc2VOb2Rlc1tpbmRleF0sXG4gICAgICAgICAgICBwcmVtaXNlTm9kZU1hdGNoZXMgPSBtYXRjaFByZW1pc2VOb2RlKHByZW1pc2VOb2RlLCBub2RlLCBtZXRhU3Vic3RpdHV0aW9ucyk7XG5cbiAgICAgIGlmIChwcmVtaXNlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcHJlbWlzZU5vZGVzTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWF0Y2hQcmVtaXNlTWV0YXZhcmlhYmxlKHByZW1pc2VNZXRhdmFyaWFibGVOb2RlLCBub2RlcywgbWV0YVN1YnN0aXR1dGlvbnMpIHtcbiAgbGV0IHByZW1pc2VNZXRhdmFyaWFibGVNYXRjaGVzO1xuXG4gIGNvbnN0IHByZW1pc2VNZXRhdmFyaWFibGVOYW1lID0gbWV0YXZhcmlhYmxlTmFtZUZyb21NZXRhdmFyaWFibGVOb2RlKHByZW1pc2VNZXRhdmFyaWFibGVOb2RlKSxcbiAgICAgICAgbWV0YVN1YnN0aXR1dGlvbiA9IG1ldGFTdWJzdGl0dXRpb25zLmZpbmQoKG1ldGFTdWJzdGl0dXRpb24pID0+IHtcbiAgICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVOYW1lID0gbWV0YVN1YnN0aXR1dGlvbi5nZXRNZXRhdmFyaWFibGVOYW1lKCk7XG5cbiAgICAgICAgICBpZiAobWV0YXZhcmlhYmxlTmFtZSA9PT0gcHJlbWlzZU1ldGF2YXJpYWJsZU5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSkgfHwgbnVsbDtcblxuICBpZiAobWV0YVN1YnN0aXR1dGlvbiAhPT0gbnVsbCkge1xuICAgIGNvbnN0IG1ldGFTdWJzdGl0dXRpb25Ob2Rlc01hdGNoID0gbWV0YVN1YnN0aXR1dGlvbi5tYXRjaE5vZGVzKG5vZGVzKTtcblxuICAgIHByZW1pc2VNZXRhdmFyaWFibGVNYXRjaGVzID0gbWV0YVN1YnN0aXR1dGlvbk5vZGVzTWF0Y2g7ICAvLy9cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGVOYW1lID0gcHJlbWlzZU1ldGF2YXJpYWJsZU5hbWUsIC8vL1xuICAgICAgICAgIG1ldGFTdWJzdGl0dXRpb24gPSBNZXRhU3Vic3RpdHV0aW9uLmZyb21NZXRhdmFyaWFibGVOYW1lQW5kTm9kZXMobWV0YXZhcmlhYmxlTmFtZSwgbm9kZXMpO1xuXG4gICAgbWV0YVN1YnN0aXR1dGlvbnMucHVzaChtZXRhU3Vic3RpdHV0aW9uKTtcblxuICAgIHByZW1pc2VNZXRhdmFyaWFibGVNYXRjaGVzID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBwcmVtaXNlTWV0YXZhcmlhYmxlTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWF0Y2hQcmVtaXNlVGVybWluYWxOb2RlKHByZW1pc2VUZXJtaW5hbE5vZGUsIHRlcm1pbmFsTm9kZSwgbWV0YVN1YnN0aXR1dGlvbnMpIHtcbiAgY29uc3QgbWF0Y2hlcyA9IHByZW1pc2VUZXJtaW5hbE5vZGUubWF0Y2godGVybWluYWxOb2RlKSxcbiAgICAgICAgcHJlbWlzZVRlcm1pbmFsTm9kZU1hdGNoZXMgPSBtYXRjaGVzO1xuXG4gIHJldHVybiBwcmVtaXNlVGVybWluYWxOb2RlTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWF0Y2hQcmVtaXNlTm9uVGVybWluYWxOb2RlKHByZW1pc2VOb25UZXJtaW5hbE5vZGUsIG5vblRlcm1pbmFsTm9kZSwgbWV0YVN1YnN0aXR1dGlvbnMpIHtcbiAgbGV0IHByZW1pc2VOb25UZXJtaW5hbE5vZGVNYXRjaGVzID0gZmFsc2U7XG5cbiAgY29uc3QgcnVsZU5hbWUgPSBub25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKSxcbiAgICAgICAgcHJlbWlzZVJ1bGVOYW1lID0gcHJlbWlzZU5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpOyAvLy9cblxuICBpZiAocnVsZU5hbWUgPT09IHByZW1pc2VSdWxlTmFtZSkge1xuICAgIGNvbnN0IGNoaWxkTm9kZXMgPSBub25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgIHByZW1pc2VDaGlsZE5vZGVzID0gcHJlbWlzZU5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgbm9kZXMgPSBjaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICBwcmVtaXNlTm9kZXMgPSBwcmVtaXNlQ2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgcHJlbWlzZUNoaWxkTm9kZXNNYXRjaGVzID0gbWF0Y2hQcmVtaXNlTm9kZXMocHJlbWlzZU5vZGVzLCBub2RlcywgbWV0YVN1YnN0aXR1dGlvbnMpO1xuXG4gICAgcHJlbWlzZU5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBwcmVtaXNlQ2hpbGROb2Rlc01hdGNoZXM7IC8vL1xuXG4gICAgaWYgKCFwcmVtaXNlTm9uVGVybWluYWxOb2RlTWF0Y2hlcykge1xuICAgICAgY29uc3QgcnVsZU5hbWVNZXRhc3RhdGVtZW50UnVsZU5hbWUgPSAocnVsZU5hbWUgPT09IE1FVEFTVEFURU1FTlRfUlVMRV9OQU1FKTtcblxuICAgICAgaWYgKHJ1bGVOYW1lTWV0YXN0YXRlbWVudFJ1bGVOYW1lKSB7XG4gICAgICAgIGNvbnN0IG1ldGFzdGF0ZW1lbnROb2RlID0gbm9uVGVybWluYWxOb2RlLCAgLy8vXG4gICAgICAgICAgICAgIHByZW1pc2VNZXRhc3RhdGVtZW50Tm9kZSA9IHByZW1pc2VOb25UZXJtaW5hbE5vZGUsICAvLy9cbiAgICAgICAgICAgICAgcHJlbWlzZU1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IG1hdGNoUHJlbWlzZU1ldGFzdGF0ZW1lbnROb2RlKHByZW1pc2VNZXRhc3RhdGVtZW50Tm9kZSwgbWV0YXN0YXRlbWVudE5vZGUsIG1ldGFTdWJzdGl0dXRpb25zKTtcblxuICAgICAgICBwcmVtaXNlTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IHByZW1pc2VNZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXM7IC8vL1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwcmVtaXNlTm9uVGVybWluYWxOb2RlTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWF0Y2hQcmVtaXNlTWV0YXN0YXRlbWVudE5vZGUocHJlbWlzZU1ldGFzdGF0ZW1lbnROb2RlLCBtZXRhc3RhdGVtZW50Tm9kZSwgbWV0YVN1YnN0aXR1dGlvbnMpIHtcbiAgbGV0IHByZW1pc2VNZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXMgPSBmYWxzZTtcblxuICBjb25zdCBwcmVtaXNlTm9uVGVybWluYWxOb2RlID0gcHJlbWlzZU1ldGFzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgIHByZW1pc2VDaGlsZE5vZGVzID0gcHJlbWlzZU5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgIHByZW1pc2VDaGlsZE5vZGVzTGVuZ3RoID0gcHJlbWlzZUNoaWxkTm9kZXMubGVuZ3RoO1xuXG4gIGlmIChwcmVtaXNlQ2hpbGROb2Rlc0xlbmd0aCA9PT0gMSkge1xuICAgIGNvbnN0IGZpcnN0UHJlbWlzZUNoaWxkTm9kZSA9IGZpcnN0KHByZW1pc2VDaGlsZE5vZGVzKSxcbiAgICAgICAgICBwcmVtaXNlQ2hpbGROb2RlID0gZmlyc3RQcmVtaXNlQ2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgcHJlbWlzZUNoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSA9IHByZW1pc2VDaGlsZE5vZGUuaXNOb25UZXJtaW5hbE5vZGUoKTtcblxuICAgIGlmIChwcmVtaXNlQ2hpbGROb2RlTm9uVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCBwcmVtaXNlTm9uVGVybWluYWxDaGlsZE5vZGUgPSBwcmVtaXNlQ2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICBwcmVtaXNlTm9uVGVybWluYWxDaGlsZE5vZGVSdWxlTmFtZSA9IHByZW1pc2VOb25UZXJtaW5hbENoaWxkTm9kZS5nZXRSdWxlTmFtZSgpLFxuICAgICAgICAgICAgcHJlbWlzZU5vblRlcm1pbmFsQ2hpbGROb2RlUnVsZU5hbWVNZXRhdmFyaWFibGVSdWxlTmFtZSA9IChwcmVtaXNlTm9uVGVybWluYWxDaGlsZE5vZGVSdWxlTmFtZSA9PT0gTUVUQVZBUklBQkxFX1JVTEVfTkFNRSk7XG5cbiAgICAgIGlmIChwcmVtaXNlTm9uVGVybWluYWxDaGlsZE5vZGVSdWxlTmFtZU1ldGF2YXJpYWJsZVJ1bGVOYW1lKSB7XG4gICAgICAgIGNvbnN0IHByZW1pc2VNZXRhdmFyaWFibGVOb2RlID0gcHJlbWlzZU5vblRlcm1pbmFsQ2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZSA9IG1ldGFzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgICAgIGNoaWxkTm9kZXMgPSBub25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgICAgICBub2RlcyA9IGNoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgICAgICBwcmVtaXNlTWV0YVZhcmlhYmxlTWF0Y2hlcyA9IG1hdGNoUHJlbWlzZU1ldGF2YXJpYWJsZShwcmVtaXNlTWV0YXZhcmlhYmxlTm9kZSwgbm9kZXMsIG1ldGFTdWJzdGl0dXRpb25zKTtcblxuICAgICAgICBwcmVtaXNlTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzID0gcHJlbWlzZU1ldGFWYXJpYWJsZU1hdGNoZXM7IC8vL1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwcmVtaXNlTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzO1xufVxuIl0sIm5hbWVzIjpbIlByZW1pc2UiLCJtZXRhc3RhdGVtZW50Tm9kZXNRdWVyeSIsIm5vZGVzUXVlcnkiLCJtZXRhU3VicHJvb2ZBc3NlcnRpb25Ob2RlUXVlcnkiLCJub2RlUXVlcnkiLCJxdWFsaWZpZWRPclVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE1ldGFzdGF0ZW1lbnROb2Rlc1F1ZXJ5IiwibWV0YXN0YXRlbWVudE5vZGUiLCJnZXRNZXRhc3RhdGVtZW50Tm9kZSIsIm1hdGNoTWV0YVN1YnByb29mTm9kZSIsIm1ldGFTdWJwcm9vZk5vZGUiLCJtZXRhU3Vic3RpdHV0aW9ucyIsIm1ldGFTdWJwcm9vZk5vZGVNYXRjaGVzIiwibWV0YVN1YnByb29mQXNzZXJ0aW9uTm9kZSIsIm1ldGFTdWJwcm9vZkFzc2VydGlvbk1ldGFzdGF0ZW1lbnROb2RlcyIsImZpcnN0TWV0YVN1YnByb29mQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUiLCJmaXJzdCIsInF1YWxpZmllZE9yVW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50TWV0YXN0YXRlbWVudE5vZGVzIiwiZmlyc3RRdWFsaWZpZWRPclVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE1ldGFzdGF0ZW1lbnROb2RlIiwibm9uVGVybWluYWxOb2RlIiwicHJlbWlzZU5vblRlcm1pbmFsTm9kZSIsInByZW1pc2VOb25UZXJtaW5hbE5vZGVNYXRjaGVzIiwibWF0Y2hQcmVtaXNlTm9uVGVybWluYWxOb2RlIiwic2Vjb25kTWV0YVN1YnByb29mQXNzZXJ0aW9uTWV0YXN0YXRlbWVudE5vZGUiLCJzZWNvbmQiLCJzZWNvbmRRdWFsaWZpZWRPclVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE1ldGFzdGF0ZW1lbnROb2RlIiwibWF0Y2hNZXRhc3RhdGVtZW50Tm9kZSIsIm1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyIsImZyb21NZXRhc3RhdGVtZW50Tm9kZSIsInByZW1pc2UiLCJtYXRjaFByZW1pc2VOb2RlIiwicHJlbWlzZU5vZGUiLCJub2RlIiwicHJlbWlzZU5vZGVNYXRjaGVzIiwibm9kZVRlcm1pbmFsTm9kZSIsImlzVGVybWluYWxOb2RlIiwicnVsZU5vZGVUZXJtaW5hbE5vZGUiLCJ0ZXJtaW5hbE5vZGUiLCJwcmVtaXNlVGVybWluYWxOb2RlIiwicHJlbWlzZVRlcm1pbmFsTm9kZU1hdGNoZXMiLCJtYXRjaFByZW1pc2VUZXJtaW5hbE5vZGUiLCJtYXRjaFByZW1pc2VOb2RlcyIsInByZW1pc2VOb2RlcyIsIm5vZGVzIiwicHJlbWlzZU5vZGVzTWF0Y2hlcyIsIm5vZGVzTGVuZ3RoIiwibGVuZ3RoIiwicHJlbWlzZU5vZGVzTGVuZ3RoIiwiZXZlcnkiLCJpbmRleCIsIm1hdGNoUHJlbWlzZU1ldGF2YXJpYWJsZSIsInByZW1pc2VNZXRhdmFyaWFibGVOb2RlIiwicHJlbWlzZU1ldGF2YXJpYWJsZU1hdGNoZXMiLCJwcmVtaXNlTWV0YXZhcmlhYmxlTmFtZSIsIm1ldGF2YXJpYWJsZU5hbWVGcm9tTWV0YXZhcmlhYmxlTm9kZSIsIm1ldGFTdWJzdGl0dXRpb24iLCJmaW5kIiwibWV0YXZhcmlhYmxlTmFtZSIsImdldE1ldGF2YXJpYWJsZU5hbWUiLCJtZXRhU3Vic3RpdHV0aW9uTm9kZXNNYXRjaCIsIm1hdGNoTm9kZXMiLCJNZXRhU3Vic3RpdHV0aW9uIiwiZnJvbU1ldGF2YXJpYWJsZU5hbWVBbmROb2RlcyIsInB1c2giLCJtYXRjaGVzIiwibWF0Y2giLCJydWxlTmFtZSIsImdldFJ1bGVOYW1lIiwicHJlbWlzZVJ1bGVOYW1lIiwiY2hpbGROb2RlcyIsImdldENoaWxkTm9kZXMiLCJwcmVtaXNlQ2hpbGROb2RlcyIsInByZW1pc2VDaGlsZE5vZGVzTWF0Y2hlcyIsInJ1bGVOYW1lTWV0YXN0YXRlbWVudFJ1bGVOYW1lIiwiTUVUQVNUQVRFTUVOVF9SVUxFX05BTUUiLCJwcmVtaXNlTWV0YXN0YXRlbWVudE5vZGUiLCJwcmVtaXNlTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzIiwibWF0Y2hQcmVtaXNlTWV0YXN0YXRlbWVudE5vZGUiLCJwcmVtaXNlQ2hpbGROb2Rlc0xlbmd0aCIsImZpcnN0UHJlbWlzZUNoaWxkTm9kZSIsInByZW1pc2VDaGlsZE5vZGUiLCJwcmVtaXNlQ2hpbGROb2RlTm9uVGVybWluYWxOb2RlIiwiaXNOb25UZXJtaW5hbE5vZGUiLCJwcmVtaXNlTm9uVGVybWluYWxDaGlsZE5vZGUiLCJwcmVtaXNlTm9uVGVybWluYWxDaGlsZE5vZGVSdWxlTmFtZSIsInByZW1pc2VOb25UZXJtaW5hbENoaWxkTm9kZVJ1bGVOYW1lTWV0YXZhcmlhYmxlUnVsZU5hbWUiLCJNRVRBVkFSSUFCTEVfUlVMRV9OQU1FIiwicHJlbWlzZU1ldGFWYXJpYWJsZU1hdGNoZXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBYXFCQTs7O3FFQVhRO3FCQUVDO3FCQUNRO3lCQUUwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVoRSxJQUFNQywwQkFBMEJDLElBQUFBLGlCQUFVLEVBQUMseUNBQ3JDQyxpQ0FBaUNDLElBQUFBLGdCQUFTLEVBQUMsMENBQzNDQyw2REFBNkRILElBQUFBLGlCQUFVLEVBQUM7QUFFL0QsSUFBQSxBQUFNRix3QkF1RGxCLEFBdkRZO2FBQU1BLFFBQ1BNLGlCQUFpQjs4QkFEVk47UUFFakIsSUFBSSxDQUFDTSxpQkFBaUIsR0FBR0E7O2lCQUZSTjs7WUFLbkJPLEtBQUFBO21CQUFBQSxTQUFBQSx1QkFBdUI7Z0JBQ3JCLE9BQU8sSUFBSSxDQUFDRCxpQkFBaUI7WUFDL0I7OztZQUVBRSxLQUFBQTttQkFBQUEsU0FBQUEsc0JBQXNCQyxnQkFBZ0IsRUFBRUMsaUJBQWlCLEVBQUU7Z0JBQ3pELElBQUlDLDBCQUEwQixLQUFLO2dCQUVuQyxJQUFNQyw0QkFBNEJULCtCQUErQixJQUFJLENBQUNHLGlCQUFpQjtnQkFFdkYsSUFBSU0sOEJBQThCLElBQUksRUFBRTtvQkFDdEMsSUFBTUMsMENBQTBDWix3QkFBd0JXLDRCQUNsRUUsOENBQThDQyxJQUFBQSxZQUFLLEVBQUNGLDBDQUNwREcsd0RBQXdEWCwyREFBMkRJLG1CQUNuSFEsNERBQTRERixJQUFBQSxZQUFLLEVBQUNDO29CQUV4RSxJQUFNRSxrQkFBa0JELDJEQUNsQkUseUJBQXlCTCw2Q0FDekJNLGdDQUFnQ0MsNEJBQTRCRix3QkFBd0JELGlCQUFpQlI7b0JBRTNHLElBQUlVLCtCQUErQjt3QkFDakMs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
|
package/lib/rule.js
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return Rule;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _array = require("./utilities/array");
|
|
12
|
+
var _string = require("./utilities/string");
|
|
13
|
+
function _classCallCheck(instance, Constructor) {
|
|
14
|
+
if (!(instance instanceof Constructor)) {
|
|
15
|
+
throw new TypeError("Cannot call a class as a function");
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function _defineProperties(target, props) {
|
|
19
|
+
for(var i = 0; i < props.length; i++){
|
|
20
|
+
var descriptor = props[i];
|
|
21
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
|
22
|
+
descriptor.configurable = true;
|
|
23
|
+
if ("value" in descriptor) descriptor.writable = true;
|
|
24
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function _createClass(Constructor, protoProps, staticProps) {
|
|
28
|
+
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
29
|
+
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
30
|
+
return Constructor;
|
|
31
|
+
}
|
|
32
|
+
var Rule = /*#__PURE__*/ function() {
|
|
33
|
+
function Rule(labels, premises, conclusion) {
|
|
34
|
+
_classCallCheck(this, Rule);
|
|
35
|
+
this.labels = labels;
|
|
36
|
+
this.premises = premises;
|
|
37
|
+
this.conclusion = conclusion;
|
|
38
|
+
}
|
|
39
|
+
_createClass(Rule, [
|
|
40
|
+
{
|
|
41
|
+
key: "getLabels",
|
|
42
|
+
value: function getLabels() {
|
|
43
|
+
return this.labels;
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
key: "getPremises",
|
|
48
|
+
value: function getPremises() {
|
|
49
|
+
return this.premises;
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
key: "getConclusion",
|
|
54
|
+
value: function getConclusion() {
|
|
55
|
+
return this.conclusion;
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
key: "matchMetastatement",
|
|
60
|
+
value: function matchMetastatement(metastatementNode, context) {
|
|
61
|
+
var _this = this;
|
|
62
|
+
var metastatementNatches;
|
|
63
|
+
var premisesLength = this.premises.length;
|
|
64
|
+
if (premisesLength === 0) {
|
|
65
|
+
var metaSubstitutions = [], conclusionMatches = matchConclusion(this.conclusion, metastatementNode, metaSubstitutions);
|
|
66
|
+
metastatementNatches = conclusionMatches; ///
|
|
67
|
+
} else {
|
|
68
|
+
var metaAssertions = context.getMetaAssertions();
|
|
69
|
+
metastatementNatches = (0, _array.someSubArray)(metaAssertions, premisesLength, function(metaAssertions) {
|
|
70
|
+
var premisesMatchConclusion = matchPremisesAndConclusion(_this.premises, _this.conclusion, metaAssertions, metastatementNode);
|
|
71
|
+
if (premisesMatchConclusion) {
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
return metastatementNatches;
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
key: "asString",
|
|
81
|
+
value: function asString() {
|
|
82
|
+
var string = (0, _string.labelsAsString)(this.labels);
|
|
83
|
+
return string;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
], [
|
|
87
|
+
{
|
|
88
|
+
key: "fromPremisesConclusionAndLabels",
|
|
89
|
+
value: function fromPremisesConclusionAndLabels(premises, conclusion, labels) {
|
|
90
|
+
var rule = new Rule(labels, premises, conclusion);
|
|
91
|
+
return rule;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
]);
|
|
95
|
+
return Rule;
|
|
96
|
+
}();
|
|
97
|
+
function matchPremise(premise, metaAssertions, metaSubstitutions) {
|
|
98
|
+
var metaAssertion = (0, _array.prune)(metaAssertions, function(metaAssertion) {
|
|
99
|
+
var metaSubproofNode = metaAssertion.getMetaSubproofNode(), metastatementNode = metaAssertion.getMetastatementNode();
|
|
100
|
+
if (metaSubproofNode !== null) {
|
|
101
|
+
var metaSubProofMatches = premise.matchMetaSubproofNode(metaSubproofNode, metaSubstitutions);
|
|
102
|
+
if (!metaSubProofMatches) {
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
if (metastatementNode !== null) {
|
|
107
|
+
var metastatementMatches = premise.matchMetastatementNode(metastatementNode, metaSubstitutions);
|
|
108
|
+
if (!metastatementMatches) {
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}) || null;
|
|
113
|
+
var premiseMatches = metaAssertion !== null;
|
|
114
|
+
return premiseMatches;
|
|
115
|
+
}
|
|
116
|
+
function matchPremises(premise, metaAssertions, metaSubstitutions) {
|
|
117
|
+
var premisesMatches = premise.every(function(premise) {
|
|
118
|
+
var premiseMatches = matchPremise(premise, metaAssertions, metaSubstitutions);
|
|
119
|
+
if (premiseMatches) {
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
return premisesMatches;
|
|
124
|
+
}
|
|
125
|
+
function matchConclusion(conclusion, metastatementNode, metaSubstitutions) {
|
|
126
|
+
var nonTerminalNodeMatches = conclusion.matchMetastatementNode(metastatementNode, metaSubstitutions), conclusionMatches = nonTerminalNodeMatches; ///
|
|
127
|
+
return conclusionMatches;
|
|
128
|
+
}
|
|
129
|
+
function matchPremisesAndConclusion(premises, conclusion, metaAssertions, metastatementNode) {
|
|
130
|
+
var premisesMatchConclusion = false;
|
|
131
|
+
var metaSubstitutions = [], premisesMatches = matchPremises(premises, metaAssertions, metaSubstitutions);
|
|
132
|
+
if (premisesMatches) {
|
|
133
|
+
var conclusionMatches = matchConclusion(conclusion, metastatementNode, metaSubstitutions);
|
|
134
|
+
premisesMatchConclusion = conclusionMatches; ///
|
|
135
|
+
}
|
|
136
|
+
return premisesMatchConclusion;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9ydWxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBwcnVuZSB9IGZyb20gXCIuL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgc29tZVN1YkFycmF5IH0gZnJvbSBcIi4vdXRpbGl0aWVzL2FycmF5XCI7XG5pbXBvcnQgeyBsYWJlbHNBc1N0cmluZyB9IGZyb20gXCIuL3V0aWxpdGllcy9zdHJpbmdcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUnVsZSB7XG4gIGNvbnN0cnVjdG9yKGxhYmVscywgcHJlbWlzZXMsIGNvbmNsdXNpb24pIHtcbiAgICB0aGlzLmxhYmVscyA9IGxhYmVscztcbiAgICB0aGlzLnByZW1pc2VzID0gcHJlbWlzZXM7XG4gICAgdGhpcy5jb25jbHVzaW9uID0gY29uY2x1c2lvbjtcbiAgfVxuXG4gIGdldExhYmVscygpIHtcbiAgICByZXR1cm4gdGhpcy5sYWJlbHM7XG4gIH1cblxuICBnZXRQcmVtaXNlcygpIHtcbiAgICByZXR1cm4gdGhpcy5wcmVtaXNlcztcbiAgfVxuXG4gIGdldENvbmNsdXNpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uY2x1c2lvbjtcbiAgfVxuXG4gIG1hdGNoTWV0YXN0YXRlbWVudChtZXRhc3RhdGVtZW50Tm9kZSwgY29udGV4dCkge1xuICAgIGxldCBtZXRhc3RhdGVtZW50TmF0Y2hlcztcblxuICAgIGNvbnN0IHByZW1pc2VzTGVuZ3RoID0gdGhpcy5wcmVtaXNlcy5sZW5ndGg7XG5cbiAgICBpZiAocHJlbWlzZXNMZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnN0IG1ldGFTdWJzdGl0dXRpb25zID0gW10sXG4gICAgICAgICAgICBjb25jbHVzaW9uTWF0Y2hlcyA9IG1hdGNoQ29uY2x1c2lvbih0aGlzLmNvbmNsdXNpb24sIG1ldGFzdGF0ZW1lbnROb2RlLCBtZXRhU3Vic3RpdHV0aW9ucyk7XG5cbiAgICAgIG1ldGFzdGF0ZW1lbnROYXRjaGVzID0gY29uY2x1c2lvbk1hdGNoZXM7IC8vL1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBtZXRhQXNzZXJ0aW9ucyA9IGNvbnRleHQuZ2V0TWV0YUFzc2VydGlvbnMoKTtcblxuICAgICAgbWV0YXN0YXRlbWVudE5hdGNoZXMgPSBzb21lU3ViQXJyYXkobWV0YUFzc2VydGlvbnMsIHByZW1pc2VzTGVuZ3RoLCAobWV0YUFzc2VydGlvbnMpID0+IHtcbiAgICAgICAgY29uc3QgcHJlbWlzZXNNYXRjaENvbmNsdXNpb24gPSBtYXRjaFByZW1pc2VzQW5kQ29uY2x1c2lvbih0aGlzLnByZW1pc2VzLCB0aGlzLmNvbmNsdXNpb24sIG1ldGFBc3NlcnRpb25zLCBtZXRhc3RhdGVtZW50Tm9kZSk7XG5cbiAgICAgICAgaWYgKHByZW1pc2VzTWF0Y2hDb25jbHVzaW9uKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBtZXRhc3RhdGVtZW50TmF0Y2hlcztcbiAgfVxuXG4gIGFzU3RyaW5nKCkge1xuICAgIGNvbnN0IHN0cmluZyA9IGxhYmVsc0FzU3RyaW5nKHRoaXMubGFiZWxzKTtcblxuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cblxuICBzdGF0aWMgZnJvbVByZW1pc2VzQ29uY2x1c2lvbkFuZExhYmVscyhwcmVtaXNlcywgY29uY2x1c2lvbiwgbGFiZWxzKSB7XG4gICAgY29uc3QgcnVsZSA9IG5ldyBSdWxlKGxhYmVscywgcHJlbWlzZXMsIGNvbmNsdXNpb24pO1xuXG4gICAgcmV0dXJuIHJ1bGU7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWF0Y2hQcmVtaXNlKHByZW1pc2UsIG1ldGFBc3NlcnRpb25zLCBtZXRhU3Vic3RpdHV0aW9ucykge1xuICBjb25zdCBtZXRhQXNzZXJ0aW9uID0gcHJ1bmUobWV0YUFzc2VydGlvbnMsIChtZXRhQXNzZXJ0aW9uKSA9PiB7XG4gICAgY29uc3QgbWV0YVN1YnByb29mTm9kZSA9IG1ldGFBc3NlcnRpb24uZ2V0TWV0YVN1YnByb29mTm9kZSgpLFxuICAgICAgICAgIG1ldGFzdGF0ZW1lbnROb2RlID0gbWV0YUFzc2VydGlvbi5nZXRNZXRhc3RhdGVtZW50Tm9kZSgpXG5cbiAgICBpZiAobWV0YVN1YnByb29mTm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgbWV0YVN1YlByb29mTWF0Y2hlcyA9IHByZW1pc2UubWF0Y2hNZXRhU3VicHJvb2ZOb2RlKG1ldGFTdWJwcm9vZk5vZGUsIG1ldGFTdWJzdGl0dXRpb25zKTtcblxuICAgICAgaWYgKCFtZXRhU3ViUHJvb2ZNYXRjaGVzKSB7ICAvLy9cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1ldGFzdGF0ZW1lbnROb2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBtZXRhc3RhdGVtZW50TWF0Y2hlcyA9IHByZW1pc2UubWF0Y2hNZXRhc3RhdGVtZW50Tm9kZShtZXRhc3RhdGVtZW50Tm9kZSwgbWV0YVN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICBpZiAoIW1ldGFzdGF0ZW1lbnRNYXRjaGVzKSB7ICAvLy9cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gIH0pIHx8IG51bGw7XG5cbiAgY29uc3QgcHJlbWlzZU1hdGNoZXMgPSAobWV0YUFzc2VydGlvbiAhPT0gbnVsbCk7XG5cbiAgcmV0dXJuIHByZW1pc2VNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaFByZW1pc2VzKHByZW1pc2UsIG1ldGFBc3NlcnRpb25zLCBtZXRhU3Vic3RpdHV0aW9ucykge1xuICBjb25zdCBwcmVtaXNlc01hdGNoZXMgPSBwcmVtaXNlLmV2ZXJ5KChwcmVtaXNlKSA9PiB7XG4gICAgY29uc3QgcHJlbWlzZU1hdGNoZXMgPSBtYXRjaFByZW1pc2UocHJlbWlzZSwgbWV0YUFzc2VydGlvbnMsIG1ldGFTdWJzdGl0dXRpb25zKTtcblxuICAgIGlmIChwcmVtaXNlTWF0Y2hlcykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gcHJlbWlzZXNNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaENvbmNsdXNpb24oY29uY2x1c2lvbiwgbWV0YXN0YXRlbWVudE5vZGUsIG1ldGFTdWJzdGl0dXRpb25zKSB7XG4gIGNvbnN0IG5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBjb25jbHVzaW9uLm1hdGNoTWV0YXN0YXRlbWVudE5vZGUobWV0YXN0YXRlbWVudE5vZGUsIG1ldGFTdWJzdGl0dXRpb25zKSxcbiAgICAgICAgY29uY2x1c2lvbk1hdGNoZXMgPSBub25UZXJtaW5hbE5vZGVNYXRjaGVzOyAvLy9cblxuICByZXR1cm4gY29uY2x1c2lvbk1hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1hdGNoUHJlbWlzZXNBbmRDb25jbHVzaW9uKHByZW1pc2VzLCBjb25jbHVzaW9uLCBtZXRhQXNzZXJ0aW9ucywgbWV0YXN0YXRlbWVudE5vZGUpIHtcbiAgbGV0IHByZW1pc2VzTWF0Y2hDb25jbHVzaW9uID0gZmFsc2U7XG5cbiAgY29uc3QgbWV0YVN1YnN0aXR1dGlvbnMgPSBbXSxcbiAgICAgICAgcHJlbWlzZXNNYXRjaGVzID0gbWF0Y2hQcmVtaXNlcyhwcmVtaXNlcywgbWV0YUFzc2VydGlvbnMsIG1ldGFTdWJzdGl0dXRpb25zKTtcblxuICBpZiAocHJlbWlzZXNNYXRjaGVzKSB7XG4gICAgY29uc3QgY29uY2x1c2lvbk1hdGNoZXMgPSBtYXRjaENvbmNsdXNpb24oY29uY2x1c2lvbiwgbWV0YXN0YXRlbWVudE5vZGUsIG1ldGFTdWJzdGl0dXRpb25zKTtcblxuICAgIHByZW1pc2VzTWF0Y2hDb25jbHVzaW9uID0gY29uY2x1c2lvbk1hdGNoZXM7ICAvLy9cbiAgfVxuXG4gIHJldHVybiBwcmVtaXNlc01hdGNoQ29uY2x1c2lvbjtcbn1cbiJdLCJuYW1lcyI6WyJSdWxlIiwibGFiZWxzIiwicHJlbWlzZXMiLCJjb25jbHVzaW9uIiwiZ2V0TGFiZWxzIiwiZ2V0UHJlbWlzZXMiLCJnZXRDb25jbHVzaW9uIiwibWF0Y2hNZXRhc3RhdGVtZW50IiwibWV0YXN0YXRlbWVudE5vZGUiLCJjb250ZXh0IiwibWV0YXN0YXRlbWVudE5hdGNoZXMiLCJwcmVtaXNlc0xlbmd0aCIsImxlbmd0aCIsIm1ldGFTdWJzdGl0dXRpb25zIiwiY29uY2x1c2lvbk1hdGNoZXMiLCJtYXRjaENvbmNsdXNpb24iLCJtZXRhQXNzZXJ0aW9ucyIsImdldE1ldGFBc3NlcnRpb25zIiwic29tZVN1YkFycmF5IiwicHJlbWlzZXNNYXRjaENvbmNsdXNpb24iLCJtYXRjaFByZW1pc2VzQW5kQ29uY2x1c2lvbiIsImFzU3RyaW5nIiwic3RyaW5nIiwibGFiZWxzQXNTdHJpbmciLCJmcm9tUHJlbWlzZXNDb25jbHVzaW9uQW5kTGFiZWxzIiwicnVsZSIsIm1hdGNoUHJlbWlzZSIsInByZW1pc2UiLCJtZXRhQXNzZXJ0aW9uIiwicHJ1bmUiLCJtZXRhU3VicHJvb2ZOb2RlIiwiZ2V0TWV0YVN1YnByb29mTm9kZSIsImdldE1ldGFzdGF0ZW1lbnROb2RlIiwibWV0YVN1YlByb29mTWF0Y2hlcyIsIm1hdGNoTWV0YVN1YnByb29mTm9kZSIsIm1ldGFzdGF0ZW1lbnRNYXRjaGVzIiwibWF0Y2hNZXRhc3RhdGVtZW50Tm9kZSIsInByZW1pc2VNYXRjaGVzIiwibWF0Y2hQcmVtaXNlcyIsInByZW1pc2VzTWF0Y2hlcyIsImV2ZXJ5Iiwibm9uVGVybWluYWxOb2RlTWF0Y2hlcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFNcUJBOzs7cUJBSkM7c0JBRVM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRWhCLElBQUEsQUFBTUEscUJBeURsQixBQXpEWTthQUFNQSxLQUNQQyxNQUFNLEVBQUVDLFFBQVEsRUFBRUMsVUFBVTs4QkFEckJIO1FBRWpCLElBQUksQ0FBQ0MsTUFBTSxHQUFHQTtRQUNkLElBQUksQ0FBQ0MsUUFBUSxHQUFHQTtRQUNoQixJQUFJLENBQUNDLFVBQVUsR0FBR0E7O2lCQUpE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
|
package/lib/ruleNames.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
TERM_RULE_NAME: function() {
|
|
13
|
+
return TERM_RULE_NAME;
|
|
14
|
+
},
|
|
15
|
+
TYPE_RULE_NAME: function() {
|
|
16
|
+
return TYPE_RULE_NAME;
|
|
17
|
+
},
|
|
18
|
+
ARGUMENT_RULE_NAME: function() {
|
|
19
|
+
return ARGUMENT_RULE_NAME;
|
|
20
|
+
},
|
|
21
|
+
METAVARIABLE_RULE_NAME: function() {
|
|
22
|
+
return METAVARIABLE_RULE_NAME;
|
|
23
|
+
},
|
|
24
|
+
METASTATEMENT_RULE_NAME: function() {
|
|
25
|
+
return METASTATEMENT_RULE_NAME;
|
|
26
|
+
},
|
|
27
|
+
META_SUBPROOF_RULE_NAME: function() {
|
|
28
|
+
return META_SUBPROOF_RULE_NAME;
|
|
29
|
+
},
|
|
30
|
+
QUALIFIED_METASTATEMENT_RULE_NAME: function() {
|
|
31
|
+
return QUALIFIED_METASTATEMENT_RULE_NAME;
|
|
32
|
+
},
|
|
33
|
+
UNQUALIFIED_METASTATEMENT_RULE_NAME: function() {
|
|
34
|
+
return UNQUALIFIED_METASTATEMENT_RULE_NAME;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
var TERM_RULE_NAME = "term";
|
|
38
|
+
var TYPE_RULE_NAME = "type";
|
|
39
|
+
var ARGUMENT_RULE_NAME = "argument";
|
|
40
|
+
var METAVARIABLE_RULE_NAME = "metavariable";
|
|
41
|
+
var METASTATEMENT_RULE_NAME = "metastatement";
|
|
42
|
+
var META_SUBPROOF_RULE_NAME = "metaSubproof";
|
|
43
|
+
var QUALIFIED_METASTATEMENT_RULE_NAME = "qualifiedMetastatement";
|
|
44
|
+
var UNQUALIFIED_METASTATEMENT_RULE_NAME = "unqualifiedMetastatement";
|
|
45
|
+
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9ydWxlTmFtZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCBURVJNX1JVTEVfTkFNRSA9IFwidGVybVwiO1xuZXhwb3J0IGNvbnN0IFRZUEVfUlVMRV9OQU1FID0gXCJ0eXBlXCI7XG5leHBvcnQgY29uc3QgQVJHVU1FTlRfUlVMRV9OQU1FID0gXCJhcmd1bWVudFwiO1xuZXhwb3J0IGNvbnN0IE1FVEFWQVJJQUJMRV9SVUxFX05BTUUgPSBcIm1ldGF2YXJpYWJsZVwiO1xuZXhwb3J0IGNvbnN0IE1FVEFTVEFURU1FTlRfUlVMRV9OQU1FID0gXCJtZXRhc3RhdGVtZW50XCI7XG5leHBvcnQgY29uc3QgTUVUQV9TVUJQUk9PRl9SVUxFX05BTUUgPSBcIm1ldGFTdWJwcm9vZlwiO1xuZXhwb3J0IGNvbnN0IFFVQUxJRklFRF9NRVRBU1RBVEVNRU5UX1JVTEVfTkFNRSA9IFwicXVhbGlmaWVkTWV0YXN0YXRlbWVudFwiO1xuZXhwb3J0IGNvbnN0IFVOUVVBTElGSUVEX01FVEFTVEFURU1FTlRfUlVMRV9OQU1FID0gXCJ1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRcIjtcbiJdLCJuYW1lcyI6WyJURVJNX1JVTEVfTkFNRSIsIlRZUEVfUlVMRV9OQU1FIiwiQVJHVU1FTlRfUlVMRV9OQU1FIiwiTUVUQVZBUklBQkxFX1JVTEVfTkFNRSIsIk1FVEFTVEFURU1FTlRfUlVMRV9OQU1FIiwiTUVUQV9TVUJQUk9PRl9SVUxFX05BTUUiLCJRVUFMSUZJRURfTUVUQVNUQVRFTUVOVF9SVUxFX05BTUUiLCJVTlFVQUxJRklFRF9NRVRBU1RBVEVNRU5UX1JVTEVfTkFNRSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBRWFBLGNBQWM7ZUFBZEE7O0lBQ0FDLGNBQWM7ZUFBZEE7O0lBQ0FDLGtCQUFrQjtlQUFsQkE7O0lBQ0FDLHNCQUFzQjtlQUF0QkE7O0lBQ0FDLHVCQUF1QjtlQUF2QkE7O0lBQ0FDLHVCQUF1QjtlQUF2QkE7O0lBQ0FDLGlDQUFpQztlQUFqQ0E7O0lBQ0FDLG1DQUFtQztlQUFuQ0E7OztBQVBOLElBQU1QLGlCQUFpQjtBQUN2QixJQUFNQyxpQkFBaUI7QUFDdkIsSUFBTUMscUJBQXFCO0FBQzNCLElBQU1DLHlCQUF5QjtBQUMvQixJQUFNQywwQkFBMEI7QUFDaEMsSUFBTUMsMEJBQTBCO0FBQ2hDLElBQU1DLG9DQUFvQztBQUMxQyxJQUFNQyxzQ0FBc0MifQ==
|
package/lib/type.js
ADDED
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return Type;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
function _classCallCheck(instance, Constructor) {
|
|
12
|
+
if (!(instance instanceof Constructor)) {
|
|
13
|
+
throw new TypeError("Cannot call a class as a function");
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
function _defineProperties(target, props) {
|
|
17
|
+
for(var i = 0; i < props.length; i++){
|
|
18
|
+
var descriptor = props[i];
|
|
19
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
|
20
|
+
descriptor.configurable = true;
|
|
21
|
+
if ("value" in descriptor) descriptor.writable = true;
|
|
22
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function _createClass(Constructor, protoProps, staticProps) {
|
|
26
|
+
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
27
|
+
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
28
|
+
return Constructor;
|
|
29
|
+
}
|
|
30
|
+
var Type = /*#__PURE__*/ function() {
|
|
31
|
+
function Type(name, superType) {
|
|
32
|
+
_classCallCheck(this, Type);
|
|
33
|
+
this.name = name;
|
|
34
|
+
this.superType = superType;
|
|
35
|
+
}
|
|
36
|
+
_createClass(Type, [
|
|
37
|
+
{
|
|
38
|
+
key: "getName",
|
|
39
|
+
value: function getName() {
|
|
40
|
+
return this.name;
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
key: "getSuperType",
|
|
45
|
+
value: function getSuperType() {
|
|
46
|
+
return this.superType;
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
key: "isEqualTo",
|
|
51
|
+
value: function isEqualTo(type) {
|
|
52
|
+
var equalToType = this === type;
|
|
53
|
+
return equalToType;
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
key: "isSubTypeOf",
|
|
58
|
+
value: function isSubTypeOf(type) {
|
|
59
|
+
var subTypeOfType = false;
|
|
60
|
+
if (this.superType === type) {
|
|
61
|
+
subTypeOfType = true;
|
|
62
|
+
} else {
|
|
63
|
+
if (this.superType !== null) {
|
|
64
|
+
subTypeOfType = this.superType.isSubTypeOf(type);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return subTypeOfType;
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
key: "isSuperTypeOf",
|
|
72
|
+
value: function isSuperTypeOf(type) {
|
|
73
|
+
var superTypeOfType = false;
|
|
74
|
+
var superType = type.getSuperType();
|
|
75
|
+
if (superType === this) {
|
|
76
|
+
superTypeOfType = true;
|
|
77
|
+
} else {
|
|
78
|
+
if (superType !== null) {
|
|
79
|
+
superTypeOfType = superType.isSuperTypeOf(this);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return superTypeOfType;
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
key: "isEqualToOrSubTypeOf",
|
|
87
|
+
value: function isEqualToOrSubTypeOf(type) {
|
|
88
|
+
var equalToType = this.isEqualTo(type), subTypeOfType = this.isSubTypeOf(type), equalToTypeOrSubTypeOf = equalToType || subTypeOfType;
|
|
89
|
+
return equalToTypeOrSubTypeOf;
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
key: "isEqualToOrSuperTypeOf",
|
|
94
|
+
value: function isEqualToOrSuperTypeOf(type) {
|
|
95
|
+
var equalToType = this.isEqualTo(type), superTypeOfType = this.isSuperTypeOf(type), equalToTypeOrSuperTypeOf = equalToType || superTypeOfType;
|
|
96
|
+
return equalToTypeOrSuperTypeOf;
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
key: "isEqualToSubTypeOfOrSuperTypeOf",
|
|
101
|
+
value: function isEqualToSubTypeOfOrSuperTypeOf(type) {
|
|
102
|
+
var equalToType = this.isEqualTo(type), subTypeOfType = this.isSubTypeOf(type), superTypeOfType = this.isSuperTypeOf(type), equalToTypeSubTypeOfOrSuperTypeOf = equalToType || subTypeOfType || superTypeOfType;
|
|
103
|
+
return equalToTypeSubTypeOfOrSuperTypeOf;
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
key: "matchName",
|
|
108
|
+
value: function matchName(name) {
|
|
109
|
+
var matchesName = this.name === name;
|
|
110
|
+
return matchesName;
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
key: "matchTypeName",
|
|
115
|
+
value: function matchTypeName(typeName) {
|
|
116
|
+
var matchesTypeName = this.name === typeName;
|
|
117
|
+
return matchesTypeName;
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
key: "asString",
|
|
122
|
+
value: function asString() {
|
|
123
|
+
var noSuperType = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : this.superType === null;
|
|
124
|
+
var string;
|
|
125
|
+
if (noSuperType) {
|
|
126
|
+
string = "".concat(this.name);
|
|
127
|
+
} else {
|
|
128
|
+
var superTypeName = this.superType.getName();
|
|
129
|
+
string = "".concat(this.name, ":").concat(superTypeName);
|
|
130
|
+
}
|
|
131
|
+
return string;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
], [
|
|
135
|
+
{
|
|
136
|
+
key: "fromTypeName",
|
|
137
|
+
value: function fromTypeName(typeName) {
|
|
138
|
+
var name = typeName, superType = null, type = new Type(name, superType);
|
|
139
|
+
return type;
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
key: "fromTypeNameAndSuperType",
|
|
144
|
+
value: function fromTypeNameAndSuperType(typeName, superType) {
|
|
145
|
+
var name = typeName, type = new Type(name, superType);
|
|
146
|
+
return type;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
]);
|
|
150
|
+
return Type;
|
|
151
|
+
}();
|
|
152
|
+
|
|
153
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy90eXBlLmpzIiwiPDxqc3gtY29uZmlnLXByYWdtYS5qcz4+Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUeXBlIHtcbiAgY29uc3RydWN0b3IobmFtZSwgc3VwZXJUeXBlKSB7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnN1cGVyVHlwZSA9IHN1cGVyVHlwZTtcbiAgfVxuXG4gIGdldE5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgfVxuXG4gIGdldFN1cGVyVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdXBlclR5cGU7XG4gIH1cblxuICBpc0VxdWFsVG8odHlwZSkge1xuICAgIGNvbnN0IGVxdWFsVG9UeXBlID0gKHRoaXMgPT09IHR5cGUpO1xuXG4gICAgcmV0dXJuIGVxdWFsVG9UeXBlO1xuICB9XG5cbiAgaXNTdWJUeXBlT2YodHlwZSkge1xuICAgIGxldCBzdWJUeXBlT2ZUeXBlID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5zdXBlclR5cGUgPT09IHR5cGUpIHtcbiAgICAgIHN1YlR5cGVPZlR5cGUgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5zdXBlclR5cGUgIT09IG51bGwpIHtcbiAgICAgICAgc3ViVHlwZU9mVHlwZSA9IHRoaXMuc3VwZXJUeXBlLmlzU3ViVHlwZU9mKHR5cGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdWJUeXBlT2ZUeXBlO1xuICB9XG5cbiAgaXNTdXBlclR5cGVPZih0eXBlKSB7XG4gICAgbGV0IHN1cGVyVHlwZU9mVHlwZSA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3VwZXJUeXBlID0gdHlwZS5nZXRTdXBlclR5cGUoKTtcblxuICAgIGlmIChzdXBlclR5cGUgPT09IHRoaXMpIHtcbiAgICAgIHN1cGVyVHlwZU9mVHlwZSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzdXBlclR5cGUgIT09IG51bGwpIHtcbiAgICAgICAgc3VwZXJUeXBlT2ZUeXBlID0gc3VwZXJUeXBlLmlzU3VwZXJUeXBlT2YodGhpcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cGVyVHlwZU9mVHlwZTtcbiAgfVxuXG4gIGlzRXF1YWxUb09yU3ViVHlwZU9mKHR5cGUpIHtcbiAgICBjb25zdCBlcXVhbFRvVHlwZSA9IHRoaXMuaXNFcXVhbFRvKHR5cGUpLFxuICAgICAgICAgIHN1YlR5cGVPZlR5cGUgPSB0aGlzLmlzU3ViVHlwZU9mKHR5cGUpLFxuICAgICAgICAgIGVxdWFsVG9UeXBlT3JTdWJUeXBlT2YgPSAoZXF1YWxUb1R5cGUgfHwgc3ViVHlwZU9mVHlwZSk7XG5cbiAgICByZXR1cm4gZXF1YWxUb1R5cGVPclN1YlR5cGVPZjtcbiAgfVxuXG4gIGlzRXF1YWxUb09yU3VwZXJUeXBlT2YodHlwZSkge1xuICAgIGNvbnN0IGVxdWFsVG9UeXBlID0gdGhpcy5pc0VxdWFsVG8odHlwZSksXG4gICAgICAgICAgc3VwZXJUeXBlT2ZUeXBlID0gdGhpcy5pc1N1cGVyVHlwZU9mKHR5cGUpLFxuICAgICAgICAgIGVxdWFsVG9UeXBlT3JTdXBlclR5cGVPZiA9IChlcXVhbFRvVHlwZSB8fCBzdXBlclR5cGVPZlR5cGUpO1xuXG4gICAgcmV0dXJuIGVxdWFsVG9UeXBlT3JTdXBlclR5cGVPZjtcbiAgfVxuXG4gIGlzRXF1YWxUb1N1YlR5cGVPZk9yU3VwZXJUeXBlT2YodHlwZSkge1xuICAgIGNvbnN0IGVxdWFsVG9UeXBlID0gdGhpcy5pc0VxdWFsVG8odHlwZSksXG4gICAgICAgICAgc3ViVHlwZU9mVHlwZSA9IHRoaXMuaXNTdWJUeXBlT2YodHlwZSksXG4gICAgICAgICAgc3VwZXJUeXBlT2ZUeXBlID0gdGhpcy5pc1N1cGVyVHlwZU9mKHR5cGUpLFxuICAgICAgICAgIGVxdWFsVG9UeXBlU3ViVHlwZU9mT3JTdXBlclR5cGVPZiA9IChlcXVhbFRvVHlwZSB8fCBzdWJUeXBlT2ZUeXBlIHx8IHN1cGVyVHlwZU9mVHlwZSk7XG5cbiAgICByZXR1cm4gZXF1YWxUb1R5cGVTdWJUeXBlT2ZPclN1cGVyVHlwZU9mO1xuICB9XG5cbiAgbWF0Y2hOYW1lKG5hbWUpIHtcbiAgICBjb25zdCBtYXRjaGVzTmFtZSA9ICh0aGlzLm5hbWUgPT09IG5hbWUpO1xuXG4gICAgcmV0dXJuIG1hdGNoZXNOYW1lO1xuICB9XG5cbiAgbWF0Y2hUeXBlTmFtZSh0eXBlTmFtZSkge1xuICAgIGNvbnN0IG1hdGNoZXNUeXBlTmFtZSA9ICh0aGlzLm5hbWUgPT09IHR5cGVOYW1lKTtcblxuICAgIHJldHVybiBtYXRjaGVzVHlwZU5hbWU7XG4gIH1cblxuICBhc1N0cmluZyhub1N1cGVyVHlwZSA9ICh0aGlzLnN1cGVyVHlwZSA9PT0gbnVsbCkpIHtcbiAgICBsZXQgc3RyaW5nO1xuXG4gICAgaWYgKG5vU3VwZXJUeXBlKSB7XG4gICAgICBzdHJpbmcgPSBgJHt0aGlzLm5hbWV9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc3VwZXJUeXBlTmFtZSA9IHRoaXMuc3VwZXJUeXBlLmdldE5hbWUoKTtcblxuICAgICAgc3RyaW5nID0gYCR7dGhpcy5uYW1lfToke3N1cGVyVHlwZU5hbWV9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG5cbiAgc3RhdGljIGZyb21UeXBlTmFtZSh0eXBlTmFtZSkge1xuICAgIGNvbnN0IG5hbWUgPSB0eXBlTmFtZSwgIC8vL1xuICAgICAgICAgIHN1cGVyVHlwZSA9IG51bGwsXG4gICAgICAgICAgdHlwZSA9IG5ldyBUeXBlKG5hbWUsIHN1cGVyVHlwZSk7XG5cbiAgICByZXR1cm4gdHlwZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tVHlwZU5hbWVBbmRTdXBlclR5cGUodHlwZU5hbWUsIHN1cGVyVHlwZSkge1xuICAgIGNvbnN0IG5hbWUgPSB0eXBlTmFtZSwgIC8vL1xuICAgICAgICAgIHR5cGUgPSBuZXcgVHlwZShuYW1lLCBzdXBlclR5cGUpO1xuXG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cbn1cbiIsIlJlYWN0LmNyZWF0ZUVsZW1lbnQiXSwibmFtZXMiOlsiVHlwZSIsIm5hbWUiLCJzdXBlclR5cGUiLCJnZXROYW1lIiwiZ2V0U3VwZXJUeXBlIiwiaXNFcXVhbFRvIiwidHlwZSIsImVxdWFsVG9UeXBlIiwiaXNTdWJUeXBlT2YiLCJzdWJUeXBlT2ZUeXBlIiwiaXNTdXBlclR5cGVPZiIsInN1cGVyVHlwZU9mVHlwZSIsImlzRXF1YWxUb09yU3ViVHlwZU9mIiwiZXF1YWxUb1R5cGVPclN1YlR5cGVPZiIsImlzRXF1YWxUb09yU3VwZXJUeXBlT2YiLCJlcXVhbFRvVHlwZU9yU3VwZXJUeXBlT2YiLCJpc0VxdWFsVG9TdWJUeXBlT2ZPclN1cGVyVHlwZU9mIiwiZXF1YWxUb1R5cGVTdWJUeXBlT2ZPclN1cGVyVHlwZU9mIiwibWF0Y2hOYW1lIiwibWF0Y2hlc05hbWUiLCJtYXRjaFR5cGVOYW1lIiwidHlwZU5hbWUiLCJtYXRjaGVzVHlwZU5hbWUiLCJhc1N0cmluZyIsIm5vU3VwZXJUeXBlIiwic3RyaW5nIiwic3VwZXJUeXBlTmFtZSIsImZyb21UeXBlTmFtZSIsImZyb21UeXBlTmFtZUFuZFN1cGVyVHlwZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFFcUJBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQU4sSUFBQSxBQUFNQSxxQkFBTjthQUFNQSxLQUNQQyxJQUFJLEVBQUVDLFNBQVM7OEJBRFJGO1FBRWpCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsU0FBUyxHQUFHQTs7aUJBSEFGOztZQU1uQkcsS0FBQUE7bUJBQUFBLFNBQUFBLFVBQVU7Z0JBQ1IsT0FBTyxJQUFJLENBQUNGLElBQUk7WUFDbEI7OztZQUVBRyxLQUFBQTttQkFBQUEsU0FBQUEsZUFBZTtnQkFDYixPQUFPLElBQUksQ0FBQ0YsU0FBUztZQUN2Qjs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQSxVQUFVQyxJQUFJLEVBQUU7Z0JBQ2Qs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
|