occam-verify-cli 0.0.1111 → 0.0.1112
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/combinator/bracketed.js +15 -65
- package/lib/combinator.js +4 -8
- package/lib/constructor/bracketed.js +24 -101
- package/lib/constructor.js +4 -8
- package/lib/context/file.js +41 -12
- package/lib/context/local.js +45 -25
- package/lib/context/release.js +2 -2
- package/lib/dom/assertion/contained.js +246 -0
- package/lib/dom/assertion/defined.js +266 -0
- package/lib/dom/assertion/subproof.js +210 -0
- package/lib/dom/assertion/type.js +240 -0
- package/lib/{axiom.js → dom/axiom.js} +18 -8
- package/lib/dom/conclusion.js +171 -0
- package/lib/{conjecture.js → dom/conjecture.js} +18 -8
- package/lib/dom/consequent.js +171 -0
- package/lib/dom/declaration/combinator.js +105 -0
- package/lib/dom/declaration/constructor.js +140 -0
- package/lib/dom/declaration/metavariable.js +154 -0
- package/lib/dom/declaration/type.js +140 -0
- package/lib/dom/declaration/variable.js +155 -0
- package/lib/{declaration.js → dom/declaration.js} +62 -18
- package/lib/dom/derivation.js +137 -0
- package/lib/dom/equality.js +260 -0
- package/lib/dom/error.js +85 -0
- package/lib/dom/frame.js +372 -0
- package/lib/dom/judgement.js +198 -0
- package/lib/dom/label.js +190 -0
- package/lib/{lemma.js → dom/lemma.js} +19 -9
- package/lib/{metaLemma.js → dom/metaLemma.js} +19 -9
- package/lib/dom/metaType.js +261 -0
- package/lib/dom/metatheorem.js +273 -0
- package/lib/dom/metavariable.js +463 -0
- package/lib/dom/premise.js +221 -0
- package/lib/dom/proof.js +154 -0
- package/lib/dom/proofStep.js +239 -0
- package/lib/dom/reference.js +218 -0
- package/lib/dom/rule.js +311 -0
- package/lib/dom/statement.js +379 -0
- package/lib/dom/subDerivation.js +137 -0
- package/lib/dom/subproof.js +211 -0
- package/lib/dom/supposition.js +221 -0
- package/lib/dom/term.js +354 -0
- package/lib/{theorem.js → dom/theorem.js} +18 -8
- package/lib/dom/topLevelAssertion.js +306 -0
- package/lib/dom/type.js +327 -0
- package/lib/dom/variable.js +328 -0
- package/lib/dom.js +27 -0
- package/lib/equivalences.js +307 -0
- package/lib/index.js +40 -35
- package/lib/mixins/proofStep/unify.js +86 -0
- package/lib/mixins/statement/verify.js +27 -2
- package/lib/mixins/term/verify.js +24 -4
- package/lib/substitution/frame.js +3 -3
- package/lib/substitution/statement.js +17 -16
- package/lib/substitution/term.js +10 -7
- package/lib/substitution.js +4 -31
- package/lib/substitutions.js +24 -56
- package/lib/unifier/equality.js +2 -3
- package/lib/unifier/label.js +3 -3
- package/lib/unifier/metaLevel.js +9 -8
- package/lib/unifier/metavariable.js +3 -3
- package/lib/unifier/statementWithCombinator.js +5 -5
- package/lib/unifier/termWithConstructor.js +3 -3
- package/lib/utilities/json.js +26 -40
- package/lib/utilities/string.js +6 -8
- package/lib/utilities/subproof.js +2 -2
- package/lib/utilities/substitutions.js +7 -6
- package/lib/utilities/verification.js +22 -14
- package/lib/verifier/combinator.js +4 -4
- package/lib/verifier/constructor.js +3 -3
- package/lib/verifier/topLevel.js +15 -21
- package/package.json +1 -1
- package/src/combinator/bracketed.js +11 -4
- package/src/combinator.js +3 -10
- package/src/constructor/bracketed.js +17 -5
- package/src/constructor.js +3 -9
- package/src/context/file.js +42 -11
- package/src/context/local.js +26 -34
- package/src/context/release.js +1 -1
- package/src/{assertion → dom/assertion}/contained.js +10 -8
- package/src/{assertion → dom/assertion}/defined.js +14 -11
- package/src/{assertion → dom/assertion}/subproof.js +11 -62
- package/src/{assertion → dom/assertion}/type.js +11 -8
- package/src/{axiom.js → dom/axiom.js} +6 -9
- package/src/dom/conclusion.js +95 -0
- package/src/{conjecture.js → dom/conjecture.js} +5 -8
- package/src/dom/consequent.js +95 -0
- package/src/{declaration → dom/declaration}/combinator.js +8 -5
- package/src/{declaration → dom/declaration}/constructor.js +8 -4
- package/src/{declaration → dom/declaration}/metavariable.js +8 -5
- package/src/{declaration → dom/declaration}/type.js +8 -4
- package/src/{declaration → dom/declaration}/variable.js +9 -6
- package/src/{declaration.js → dom/declaration.js} +11 -16
- package/src/{derivation.js → dom/derivation.js} +9 -12
- package/src/{equality.js → dom/equality.js} +11 -14
- package/src/{error.js → dom/error.js} +6 -3
- package/src/{frame.js → dom/frame.js} +14 -23
- package/src/{judgement.js → dom/judgement.js} +8 -11
- package/src/{label.js → dom/label.js} +9 -16
- package/src/{lemma.js → dom/lemma.js} +5 -9
- package/src/{metaLemma.js → dom/metaLemma.js} +6 -9
- package/src/{metaType.js → dom/metaType.js} +7 -10
- package/src/{metatheorem.js → dom/metatheorem.js} +6 -10
- package/src/{metavariable.js → dom/metavariable.js} +79 -77
- package/src/dom/premise.js +173 -0
- package/src/{proof.js → dom/proof.js} +8 -11
- package/src/dom/proofStep.js +173 -0
- package/src/{reference.js → dom/reference.js} +48 -20
- package/src/{rule.js → dom/rule.js} +13 -17
- package/src/{statement.js → dom/statement.js} +142 -71
- package/src/{subDerivation.js → dom/subDerivation.js} +9 -12
- package/src/{subproof.js → dom/subproof.js} +14 -47
- package/src/dom/supposition.js +173 -0
- package/src/{term.js → dom/term.js} +24 -45
- package/src/{theorem.js → dom/theorem.js} +5 -8
- package/src/{topLevelAssertion.js → dom/topLevelAssertion.js} +12 -14
- package/src/{type.js → dom/type.js} +9 -12
- package/src/{variable.js → dom/variable.js} +20 -28
- package/src/dom.js +13 -0
- package/src/equivalences.js +278 -0
- package/src/index.js +39 -34
- package/src/mixins/proofStep/unify.js +115 -0
- package/src/mixins/statement/verify.js +33 -1
- package/src/mixins/term/verify.js +33 -3
- package/src/substitution/frame.js +2 -2
- package/src/substitution/statement.js +20 -18
- package/src/substitution/term.js +12 -5
- package/src/substitution.js +4 -29
- package/src/substitutions.js +35 -73
- package/src/unifier/equality.js +1 -2
- package/src/unifier/label.js +2 -2
- package/src/unifier/metaLevel.js +9 -7
- package/src/unifier/metavariable.js +2 -2
- package/src/unifier/statementWithCombinator.js +4 -4
- package/src/unifier/termWithConstructor.js +2 -2
- package/src/utilities/json.js +23 -42
- package/src/utilities/string.js +8 -6
- package/src/utilities/subproof.js +2 -2
- package/src/utilities/substitutions.js +7 -5
- package/src/utilities/verification.js +29 -13
- package/src/verifier/combinator.js +3 -3
- package/src/verifier/constructor.js +3 -3
- package/src/verifier/topLevel.js +20 -21
- package/lib/assertion/contained.js +0 -232
- package/lib/assertion/defined.js +0 -211
- package/lib/assertion/subproof.js +0 -203
- package/lib/assertion/type.js +0 -185
- package/lib/conclusion.js +0 -130
- package/lib/consequent.js +0 -130
- package/lib/declaration/combinator.js +0 -90
- package/lib/declaration/constructor.js +0 -90
- package/lib/declaration/metavariable.js +0 -104
- package/lib/declaration/type.js +0 -90
- package/lib/declaration/variable.js +0 -105
- package/lib/derivation.js +0 -91
- package/lib/equality.js +0 -209
- package/lib/error.js +0 -70
- package/lib/frame.js +0 -331
- package/lib/judgement.js +0 -147
- package/lib/label.js +0 -141
- package/lib/metaType.js +0 -255
- package/lib/metatheorem.js +0 -263
- package/lib/metavariable.js +0 -399
- package/lib/mixins/statement/qualified/unify.js +0 -69
- package/lib/mixins/statement/unify.js +0 -42
- package/lib/mixins/statement/unifyIndependenntly.js +0 -46
- package/lib/mixins/term/unify.js +0 -40
- package/lib/premise.js +0 -184
- package/lib/proof.js +0 -103
- package/lib/proofStep.js +0 -179
- package/lib/reference.js +0 -145
- package/lib/rule.js +0 -259
- package/lib/shim.js +0 -14
- package/lib/statement/qualified.js +0 -152
- package/lib/statement/unqualified.js +0 -175
- package/lib/statement.js +0 -270
- package/lib/subDerivation.js +0 -91
- package/lib/subproof.js +0 -181
- package/lib/supposition.js +0 -184
- package/lib/term.js +0 -318
- package/lib/topLevelAssertion.js +0 -305
- package/lib/type.js +0 -321
- package/lib/utilities/equivalences.js +0 -178
- package/lib/variable.js +0 -281
- package/src/conclusion.js +0 -96
- package/src/consequent.js +0 -96
- package/src/mixins/statement/qualified/unify.js +0 -103
- package/src/mixins/statement/unify.js +0 -41
- package/src/mixins/statement/unifyIndependenntly.js +0 -58
- package/src/mixins/term/unify.js +0 -36
- package/src/premise.js +0 -183
- package/src/proofStep.js +0 -181
- package/src/shim.js +0 -5
- package/src/statement/qualified.js +0 -133
- package/src/statement/unqualified.js +0 -166
- package/src/supposition.js +0 -183
- package/src/utilities/equivalences.js +0 -183
package/lib/metavariable.js
DELETED
|
@@ -1,399 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "default", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return _default;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
var _shim = /*#__PURE__*/ _interop_require_default(require("./shim"));
|
|
12
|
-
var _local = /*#__PURE__*/ _interop_require_default(require("./context/local"));
|
|
13
|
-
var _frame = /*#__PURE__*/ _interop_require_default(require("./substitution/frame"));
|
|
14
|
-
var _statement = /*#__PURE__*/ _interop_require_default(require("./substitution/statement"));
|
|
15
|
-
var _metavariable = /*#__PURE__*/ _interop_require_default(require("./nodeAndTokens/metavariable"));
|
|
16
|
-
var _query = require("./utilities/query");
|
|
17
|
-
var _type = require("./type");
|
|
18
|
-
var _constants = require("./constants");
|
|
19
|
-
var _unification = require("./utilities/unification");
|
|
20
|
-
var _json = require("./utilities/json");
|
|
21
|
-
var _name = require("./utilities/name");
|
|
22
|
-
function _class_call_check(instance, Constructor) {
|
|
23
|
-
if (!(instance instanceof Constructor)) {
|
|
24
|
-
throw new TypeError("Cannot call a class as a function");
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
function _defineProperties(target, props) {
|
|
28
|
-
for(var i = 0; i < props.length; i++){
|
|
29
|
-
var descriptor = props[i];
|
|
30
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
|
31
|
-
descriptor.configurable = true;
|
|
32
|
-
if ("value" in descriptor) descriptor.writable = true;
|
|
33
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
function _create_class(Constructor, protoProps, staticProps) {
|
|
37
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
38
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
39
|
-
return Constructor;
|
|
40
|
-
}
|
|
41
|
-
function _interop_require_default(obj) {
|
|
42
|
-
return obj && obj.__esModule ? obj : {
|
|
43
|
-
default: obj
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
var termNodeQuery = (0, _query.nodeQuery)("/metavariable/argument/term"), metavariableNodeQuery = (0, _query.nodeQuery)("/metavariableDeclaration/metavariable"), frameMetavariableNodeQuery = (0, _query.nodeQuery)("/frame/metavariable!"), statementMetavariableNodeQuery = (0, _query.nodeQuery)("/statement/metavariable!");
|
|
47
|
-
var Metavariable = /*#__PURE__*/ function() {
|
|
48
|
-
function Metavariable(string, node, tokens, name, type, metaType) {
|
|
49
|
-
_class_call_check(this, Metavariable);
|
|
50
|
-
this.string = string;
|
|
51
|
-
this.node = node;
|
|
52
|
-
this.tokens = tokens;
|
|
53
|
-
this.name = name;
|
|
54
|
-
this.type = type;
|
|
55
|
-
this.metaType = metaType;
|
|
56
|
-
}
|
|
57
|
-
_create_class(Metavariable, [
|
|
58
|
-
{
|
|
59
|
-
key: "getString",
|
|
60
|
-
value: function getString() {
|
|
61
|
-
return this.string;
|
|
62
|
-
}
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
key: "getNode",
|
|
66
|
-
value: function getNode() {
|
|
67
|
-
return this.node;
|
|
68
|
-
}
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
key: "getTokens",
|
|
72
|
-
value: function getTokens() {
|
|
73
|
-
return this.tokens;
|
|
74
|
-
}
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
key: "getName",
|
|
78
|
-
value: function getName() {
|
|
79
|
-
return this.name;
|
|
80
|
-
}
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
key: "getType",
|
|
84
|
-
value: function getType() {
|
|
85
|
-
return this.type;
|
|
86
|
-
}
|
|
87
|
-
},
|
|
88
|
-
{
|
|
89
|
-
key: "getMetaType",
|
|
90
|
-
value: function getMetaType() {
|
|
91
|
-
return this.metaType;
|
|
92
|
-
}
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
key: "matchMetavariableName",
|
|
96
|
-
value: function matchMetavariableName(metavariableName) {
|
|
97
|
-
var metavariableNameMatches = metavariableName === this.name;
|
|
98
|
-
return metavariableNameMatches;
|
|
99
|
-
}
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
key: "matchMetavariableNode",
|
|
103
|
-
value: function matchMetavariableNode(metavariableNode) {
|
|
104
|
-
var metavariableNodeMatches = metavariableNode.match(this.node);
|
|
105
|
-
return metavariableNodeMatches;
|
|
106
|
-
}
|
|
107
|
-
},
|
|
108
|
-
{
|
|
109
|
-
key: "isEqualTo",
|
|
110
|
-
value: function isEqualTo(metavariable) {
|
|
111
|
-
var equalTo = false;
|
|
112
|
-
if (metavariable !== null) {
|
|
113
|
-
var metavariableString = metavariable.getString();
|
|
114
|
-
equalTo = metavariableString === this.string;
|
|
115
|
-
}
|
|
116
|
-
return equalTo;
|
|
117
|
-
}
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
key: "isMetaTypeEqualTo",
|
|
121
|
-
value: function isMetaTypeEqualTo(metaType) {
|
|
122
|
-
return this.metaType.isEqualTo(metaType);
|
|
123
|
-
}
|
|
124
|
-
},
|
|
125
|
-
{
|
|
126
|
-
key: "isEssentiallyEqualToFrame",
|
|
127
|
-
value: function isEssentiallyEqualToFrame(frame, generalContext, specificContext) {
|
|
128
|
-
var essentiallyEqualToFrame = false;
|
|
129
|
-
var generalContextFilePath = generalContext.getFilePath(), specificContextFilePath = specificContext.getFilePath();
|
|
130
|
-
if (generalContextFilePath === specificContextFilePath) {
|
|
131
|
-
var frameString = frame.getString();
|
|
132
|
-
if (frameString === this.string) {
|
|
133
|
-
essentiallyEqualToFrame = true;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
return essentiallyEqualToFrame;
|
|
137
|
-
}
|
|
138
|
-
},
|
|
139
|
-
{
|
|
140
|
-
key: "isEssentiallyEqualToStatement",
|
|
141
|
-
value: function isEssentiallyEqualToStatement(statement, generalContext, specificContext) {
|
|
142
|
-
var essentiallyEqualToStatement = false;
|
|
143
|
-
var generalContextFilePath = generalContext.getFilePath(), specificContextFilePath = specificContext.getFilePath();
|
|
144
|
-
if (generalContextFilePath === specificContextFilePath) {
|
|
145
|
-
var statementString = statement.getString();
|
|
146
|
-
if (statementString === this.string) {
|
|
147
|
-
essentiallyEqualToStatement = true;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
return essentiallyEqualToStatement;
|
|
151
|
-
}
|
|
152
|
-
},
|
|
153
|
-
{
|
|
154
|
-
key: "unifyFrame",
|
|
155
|
-
value: function unifyFrame(frame, substitutions, generalContext, specificContext) {
|
|
156
|
-
var frameUnified = false;
|
|
157
|
-
var frameString = frame.getString(), metavariableString = this.string; ///
|
|
158
|
-
specificContext.trace("Unifying the '".concat(frameString, "' frame with the '").concat(metavariableString, "' metavariable..."));
|
|
159
|
-
var essentiallyEqualToFrame = this.isEssentiallyEqualToFrame(frame, generalContext, specificContext);
|
|
160
|
-
if (essentiallyEqualToFrame) {
|
|
161
|
-
frameUnified = true;
|
|
162
|
-
} else {
|
|
163
|
-
var metavariable = this, simpleSubstitutionPresent = substitutions.isSimpleSubstitutionPresentByMetavariable(metavariable);
|
|
164
|
-
if (simpleSubstitutionPresent) {
|
|
165
|
-
var simpleSubstitution = substitutions.findSimpleSubstitutionByMetavariable(metavariable), substitution = simpleSubstitution, substitutionFrameEqualToFrame = substitution.isFrameEqualTo(frame);
|
|
166
|
-
if (substitutionFrameEqualToFrame) {
|
|
167
|
-
frameUnified = true;
|
|
168
|
-
}
|
|
169
|
-
} else {
|
|
170
|
-
var context = specificContext, metavariable1 = this, frameSubstitution = _frame.default.fromFrameAndMetavariable(frame, metavariable1, context), substitution1 = frameSubstitution; ///
|
|
171
|
-
substitutions.addSubstitution(substitution1, context);
|
|
172
|
-
frameUnified = true;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
if (frameUnified) {
|
|
176
|
-
specificContext.debug("...unified the '".concat(frameString, "' frame with the '").concat(metavariableString, "' metavariable."));
|
|
177
|
-
}
|
|
178
|
-
return frameUnified;
|
|
179
|
-
}
|
|
180
|
-
},
|
|
181
|
-
{
|
|
182
|
-
key: "unifyStatement",
|
|
183
|
-
value: function unifyStatement(statement, substitution, substitutions, generalContext, specificContext) {
|
|
184
|
-
var statementUnified = false;
|
|
185
|
-
var statementString = statement.getString(), metavariableString = this.string, substitutionString = substitution !== null ? substitution.getString() : _constants.EMPTY_STRING;
|
|
186
|
-
specificContext.trace("Unifying the '".concat(statementString, "' statement with the '").concat(metavariableString).concat(substitutionString, "' metavariable..."));
|
|
187
|
-
var essentiallyEqualToStatement = this.isEssentiallyEqualToStatement(statement, generalContext, specificContext);
|
|
188
|
-
if (essentiallyEqualToStatement) {
|
|
189
|
-
statementUnified = true;
|
|
190
|
-
} else {
|
|
191
|
-
var metavariable = this, substitutionPresent = substitutions.isSubstitutionPresentByMetavariableAndSubstitution(metavariable, substitution);
|
|
192
|
-
if (substitutionPresent) {
|
|
193
|
-
substitution = substitutions.findSubstitutionByMetavariableAndSubstitution(metavariable, substitution); ///
|
|
194
|
-
var substitutionStatementEqualToStatement = substitution.isStatementEqualTo(statement);
|
|
195
|
-
if (substitutionStatementEqualToStatement) {
|
|
196
|
-
statementUnified = true;
|
|
197
|
-
}
|
|
198
|
-
} else {
|
|
199
|
-
var context = specificContext, metavariable1 = this, statementSubstitution = _statement.default.fromStatementMetavariableAndSubstitution(statement, metavariable1, substitution, context);
|
|
200
|
-
substitution = statementSubstitution; ///
|
|
201
|
-
substitutions.addSubstitution(substitution, context);
|
|
202
|
-
statementUnified = true;
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
if (statementUnified) {
|
|
206
|
-
specificContext.debug("...unified the '".concat(statementString, "' statement with the '").concat(metavariableString).concat(substitutionString, "' metavariable."));
|
|
207
|
-
}
|
|
208
|
-
return statementUnified;
|
|
209
|
-
}
|
|
210
|
-
},
|
|
211
|
-
{
|
|
212
|
-
key: "unifyMetavariable",
|
|
213
|
-
value: function unifyMetavariable(metavariable, generalContext, specificContext) {
|
|
214
|
-
var metavariableUnified;
|
|
215
|
-
var generalMetavariable = this, specificMetavariable = metavariable, generalMetavariableString = generalMetavariable.getString(), specificMetavariableString = specificMetavariable.getString();
|
|
216
|
-
specificContext.trace("Unifying the '".concat(specificMetavariableString, "' metavariable against the '").concat(generalMetavariableString, "' metavariable..."));
|
|
217
|
-
metavariableUnified = (0, _unification.unifyMetavariable)(generalMetavariable, specificMetavariable, generalContext, specificContext);
|
|
218
|
-
if (metavariableUnified) {
|
|
219
|
-
specificContext.debug("...unified the '".concat(specificMetavariableString, "' metavariable against the '").concat(generalMetavariableString, "' metavariable."));
|
|
220
|
-
}
|
|
221
|
-
return metavariableUnified;
|
|
222
|
-
}
|
|
223
|
-
},
|
|
224
|
-
{
|
|
225
|
-
key: "unifySubstitution",
|
|
226
|
-
value: function unifySubstitution(substitution, context) {
|
|
227
|
-
var substitutionUnified = false;
|
|
228
|
-
var metavariableString = this.string, substitutionString = substitution.getString();
|
|
229
|
-
context.trace("Unifying the '".concat(substitutionString, "' substitution with the '").concat(metavariableString, "' metavariable..."));
|
|
230
|
-
var metavariable = this, judgement = context.findJudgementByMetavariable(metavariable);
|
|
231
|
-
if (judgement !== null) {
|
|
232
|
-
var declaration = judgement.getDeclaration();
|
|
233
|
-
substitutionUnified = declaration.unifySubstitution(substitution, context);
|
|
234
|
-
}
|
|
235
|
-
if (substitutionUnified) {
|
|
236
|
-
context.debug("...unified the '".concat(substitutionString, "' substitution with the '").concat(metavariableString, "' metavariable."));
|
|
237
|
-
}
|
|
238
|
-
return substitutionUnified;
|
|
239
|
-
}
|
|
240
|
-
},
|
|
241
|
-
{
|
|
242
|
-
key: "verify",
|
|
243
|
-
value: function verify(context) {
|
|
244
|
-
var verified;
|
|
245
|
-
var metavariableString = this.string; ///
|
|
246
|
-
context.trace("Verifying the '".concat(metavariableString, "' metavariable..."));
|
|
247
|
-
var metavariable = this, generalContext = context, specificContext = context, metavariablePresent = generalContext.isMetavariablePresent(metavariable, generalContext, specificContext);
|
|
248
|
-
verified = metavariablePresent; ///
|
|
249
|
-
if (verified) {
|
|
250
|
-
context.debug("...verified the '".concat(metavariableString, "' metavariable."));
|
|
251
|
-
}
|
|
252
|
-
return verified;
|
|
253
|
-
}
|
|
254
|
-
},
|
|
255
|
-
{
|
|
256
|
-
key: "verifyType",
|
|
257
|
-
value: function verifyType(fileContext) {
|
|
258
|
-
var typeVerified;
|
|
259
|
-
if (this.type === null) {
|
|
260
|
-
typeVerified = true;
|
|
261
|
-
} else {
|
|
262
|
-
if (this.type === _type.objectType) {
|
|
263
|
-
typeVerified = true;
|
|
264
|
-
} else {
|
|
265
|
-
var typeName = this.type.getName();
|
|
266
|
-
fileContext.trace("Verifying the '".concat(typeName, "' type..."));
|
|
267
|
-
var type = fileContext.findTypeByTypeName(typeName);
|
|
268
|
-
if (type === null) {
|
|
269
|
-
fileContext.debug("The '".concat(typeName, "' type is missing."));
|
|
270
|
-
} else {
|
|
271
|
-
this.type = type; ///
|
|
272
|
-
typeVerified = true;
|
|
273
|
-
}
|
|
274
|
-
if (typeVerified) {
|
|
275
|
-
fileContext.debug("...verified the '".concat(typeName, "' type."));
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
return typeVerified;
|
|
280
|
-
}
|
|
281
|
-
},
|
|
282
|
-
{
|
|
283
|
-
key: "verifyWhenDeclared",
|
|
284
|
-
value: function verifyWhenDeclared(fileContext) {
|
|
285
|
-
var verifiedWhenDeclared = false;
|
|
286
|
-
var metavariableString = this.string; ///
|
|
287
|
-
fileContext.trace("Verifying the '".concat(metavariableString, "' metavariable when declared..."));
|
|
288
|
-
var metavariableNode = this.node, termNode = termNodeQuery(metavariableNode);
|
|
289
|
-
if (termNode !== null) {
|
|
290
|
-
fileContext.debug("A term was found in the '".concat(metavariableString, "' metavariable when a type should have been present."));
|
|
291
|
-
} else {
|
|
292
|
-
var metavariableName = this.name, metavariablePresent = fileContext.isMetavariablePresentByMetavariableName(metavariableName);
|
|
293
|
-
if (metavariablePresent) {
|
|
294
|
-
fileContext.debug("The '".concat(metavariableName, "' metavariable is already present."));
|
|
295
|
-
} else {
|
|
296
|
-
var variableName = this.name, variablePresent = fileContext.isVariablePresentByVariableName(variableName);
|
|
297
|
-
if (variablePresent) {
|
|
298
|
-
fileContext.debug("A '".concat(metavariableName, "' variable is already present."));
|
|
299
|
-
} else {
|
|
300
|
-
var typeVerified = this.verifyType(fileContext);
|
|
301
|
-
verifiedWhenDeclared = typeVerified;
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
if (verifiedWhenDeclared) {
|
|
306
|
-
fileContext.debug("...verified the '".concat(metavariableString, "' metavariable when declared."));
|
|
307
|
-
}
|
|
308
|
-
return verifiedWhenDeclared;
|
|
309
|
-
}
|
|
310
|
-
},
|
|
311
|
-
{
|
|
312
|
-
key: "verifyGivenMetaType",
|
|
313
|
-
value: function verifyGivenMetaType(metaType, context) {
|
|
314
|
-
var verifiedGivenMetaType = false;
|
|
315
|
-
var metavariableString = this.string, metaTypeString = metaType.getString();
|
|
316
|
-
context.trace("Verifying the '".concat(metavariableString, "' metavariable given the '").concat(metaTypeString, "' meta-type..."));
|
|
317
|
-
var metavariable = this; ///
|
|
318
|
-
var specificContext = context, generalContext = context; ///
|
|
319
|
-
metavariable = generalContext.findMetavariable(metavariable, generalContext, specificContext);
|
|
320
|
-
if (metavariable !== null) {
|
|
321
|
-
var metavariableMetaTypeEqualToMetaType = metavariable.isMetaTypeEqualTo(metaType);
|
|
322
|
-
verifiedGivenMetaType = metavariableMetaTypeEqualToMetaType; ///
|
|
323
|
-
}
|
|
324
|
-
if (verifiedGivenMetaType) {
|
|
325
|
-
context.debug("...verified the '".concat(metavariableString, "' metavariable given the '").concat(metaTypeString, "' meta-type."));
|
|
326
|
-
}
|
|
327
|
-
return verifiedGivenMetaType;
|
|
328
|
-
}
|
|
329
|
-
},
|
|
330
|
-
{
|
|
331
|
-
key: "toJSON",
|
|
332
|
-
value: function toJSON() {
|
|
333
|
-
var metaTypeJSON = (0, _json.metaTypeToMetaTypeJSON)(this.metaType), typeJSON = (0, _json.typeToTypeJSON)(this.type), type = typeJSON, metaType = metaTypeJSON, string = this.string, json = {
|
|
334
|
-
string: string,
|
|
335
|
-
type: type,
|
|
336
|
-
metaType: metaType
|
|
337
|
-
};
|
|
338
|
-
return json;
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
], [
|
|
342
|
-
{
|
|
343
|
-
key: "fromJSON",
|
|
344
|
-
value: function fromJSON(json, fileContext) {
|
|
345
|
-
var string = json.string, context = fileContext, metavariableNodeAndTokens = _metavariable.default.fromString(string, context), metavariableTokens = metavariableNodeAndTokens.getMetavariableTokens(), metavariableNode = metavariableNodeAndTokens.getMetavariableNode(), metavariableName = (0, _name.metavariableNameFromMetavariableNode)(metavariableNode), name = metavariableName, node = metavariableNode, tokens = metavariableTokens, type = (0, _json.typeFromJSON)(json, fileContext), metaType = (0, _json.metaTypeFromJSON)(json, fileContext), metavariable = new Metavariable(string, node, tokens, name, type, metaType);
|
|
346
|
-
return metavariable;
|
|
347
|
-
}
|
|
348
|
-
},
|
|
349
|
-
{
|
|
350
|
-
key: "fromFrameNode",
|
|
351
|
-
value: function fromFrameNode(frameNode, context) {
|
|
352
|
-
var metavariable = null;
|
|
353
|
-
var frameMetavariableNode = frameMetavariableNodeQuery(frameNode);
|
|
354
|
-
if (frameMetavariableNode !== null) {
|
|
355
|
-
var metavariableNode = frameMetavariableNode, metavariableName = (0, _name.metavariableNameFromMetavariableNode)(metavariableNode), name = metavariableName, node = metavariableNode, string = context.nodeAsString(node), tokens = context.nodeAsTokens(node), type = null, metaType = null;
|
|
356
|
-
metavariable = new Metavariable(string, node, tokens, name, type, metaType);
|
|
357
|
-
}
|
|
358
|
-
return metavariable;
|
|
359
|
-
}
|
|
360
|
-
},
|
|
361
|
-
{
|
|
362
|
-
key: "fromStatementNode",
|
|
363
|
-
value: function fromStatementNode(statementNode, context) {
|
|
364
|
-
var metavariable = null;
|
|
365
|
-
var statementMetavariableNode = statementMetavariableNodeQuery(statementNode);
|
|
366
|
-
if (statementMetavariableNode !== null) {
|
|
367
|
-
var metavariableNode = statementMetavariableNode, metavariableName = (0, _name.metavariableNameFromMetavariableNode)(metavariableNode), name = metavariableName, node = metavariableNode, string = context.nodeAsString(node), tokens = context.nodeAsTokens(node), type = null, metaType = null;
|
|
368
|
-
metavariable = new Metavariable(string, node, tokens, name, type, metaType);
|
|
369
|
-
}
|
|
370
|
-
return metavariable;
|
|
371
|
-
}
|
|
372
|
-
},
|
|
373
|
-
{
|
|
374
|
-
key: "fromMetavariableNode",
|
|
375
|
-
value: function fromMetavariableNode(metavariableNode, context) {
|
|
376
|
-
var metavariable = null;
|
|
377
|
-
if (metavariableNode !== null) {
|
|
378
|
-
var metavariableName = (0, _name.metavariableNameFromMetavariableNode)(metavariableNode), name = metavariableName, node = metavariableNode, string = context.nodeAsString(node), tokens = context.nodeAsTokens(node), type = null, metaType = null;
|
|
379
|
-
metavariable = new Metavariable(string, node, tokens, name, type, metaType);
|
|
380
|
-
}
|
|
381
|
-
return metavariable;
|
|
382
|
-
}
|
|
383
|
-
},
|
|
384
|
-
{
|
|
385
|
-
key: "fromMetavariableDeclarationNode",
|
|
386
|
-
value: function fromMetavariableDeclarationNode(metavariableDeclarationNode, fileContext) {
|
|
387
|
-
var Type = _shim.default.Type, MetaType = _shim.default.MetaType, localContext = _local.default.fromFileContext(fileContext), context = localContext, metavariableNode = metavariableNodeQuery(metavariableDeclarationNode), node = metavariableNode, string = fileContext.nodeAsString(node), tokens = fileContext.nodeAsTokens(node), metavariableName = (0, _name.metavariableNameFromMetavariableNode)(metavariableNode), name = metavariableName, type = Type.fromMetavariableDeclarationNode(metavariableDeclarationNode, context), metaType = MetaType.fromMetavariableDeclarationNode(metavariableDeclarationNode, context), metavariable = new Metavariable(string, node, tokens, name, type, metaType);
|
|
388
|
-
return metavariable;
|
|
389
|
-
}
|
|
390
|
-
}
|
|
391
|
-
]);
|
|
392
|
-
return Metavariable;
|
|
393
|
-
}();
|
|
394
|
-
Object.assign(_shim.default, {
|
|
395
|
-
Metavariable: Metavariable
|
|
396
|
-
});
|
|
397
|
-
var _default = Metavariable;
|
|
398
|
-
|
|
399
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tZXRhdmFyaWFibGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBzaGltIGZyb20gXCIuL3NoaW1cIjtcbmltcG9ydCBMb2NhbENvbnRleHQgZnJvbSBcIi4vY29udGV4dC9sb2NhbFwiO1xuaW1wb3J0IEZyYW1lU3Vic3RpdHV0aW9uIGZyb20gXCIuL3N1YnN0aXR1dGlvbi9mcmFtZVwiO1xuaW1wb3J0IFN0YXRlbWVudFN1YnN0aXR1dGlvbiBmcm9tIFwiLi9zdWJzdGl0dXRpb24vc3RhdGVtZW50XCI7XG5pbXBvcnQgTWV0YXZhcmlhYmxlTm9kZUFuZFRva2VucyBmcm9tIFwiLi9ub2RlQW5kVG9rZW5zL21ldGF2YXJpYWJsZVwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi91dGlsaXRpZXMvcXVlcnlcIjtcbmltcG9ydCB7IG9iamVjdFR5cGUgfSBmcm9tIFwiLi90eXBlXCI7XG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHVuaWZ5TWV0YXZhcmlhYmxlIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3VuaWZpY2F0aW9uXCI7XG5pbXBvcnQgeyB0eXBlRnJvbUpTT04sIHR5cGVUb1R5cGVKU09OIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2pzb25cIjtcbmltcG9ydCB7IG1ldGF2YXJpYWJsZU5hbWVGcm9tTWV0YXZhcmlhYmxlTm9kZSB9IGZyb20gXCIuL3V0aWxpdGllcy9uYW1lXCI7XG5pbXBvcnQgeyBtZXRhVHlwZUZyb21KU09OLCBtZXRhVHlwZVRvTWV0YVR5cGVKU09OIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2pzb25cIjtcblxuY29uc3QgdGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9tZXRhdmFyaWFibGUvYXJndW1lbnQvdGVybVwiKSxcbiAgICAgIG1ldGF2YXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9tZXRhdmFyaWFibGVEZWNsYXJhdGlvbi9tZXRhdmFyaWFibGVcIiksXG4gICAgICBmcmFtZU1ldGF2YXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9mcmFtZS9tZXRhdmFyaWFibGUhXCIpLFxuICAgICAgc3RhdGVtZW50TWV0YXZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3N0YXRlbWVudC9tZXRhdmFyaWFibGUhXCIpO1xuXG5jbGFzcyBNZXRhdmFyaWFibGUge1xuICBjb25zdHJ1Y3RvcihzdHJpbmcsIG5vZGUsIHRva2VucywgbmFtZSwgdHlwZSwgbWV0YVR5cGUpIHtcbiAgICB0aGlzLnN0cmluZyA9IHN0cmluZztcbiAgICB0aGlzLm5vZGUgPSBub2RlO1xuICAgIHRoaXMudG9rZW5zID0gdG9rZW5zO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLm1ldGFUeXBlID0gbWV0YVR5cGU7XG4gIH1cblxuICBnZXRTdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RyaW5nO1xuICB9XG5cbiAgZ2V0Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlO1xuICB9XG5cbiAgZ2V0VG9rZW5zKCkge1xuICAgIHJldHVybiB0aGlzLnRva2VucztcbiAgfVxuXG4gIGdldE5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgfVxuXG4gIGdldFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZTtcbiAgfVxuXG4gIGdldE1ldGFUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLm1ldGFUeXBlO1xuICB9XG5cbiAgbWF0Y2hNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpIHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGVOYW1lTWF0Y2hlcyA9IChtZXRhdmFyaWFibGVOYW1lID09PSB0aGlzLm5hbWUpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZU5hbWVNYXRjaGVzO1xuICB9XG5cbiAgbWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IG1ldGF2YXJpYWJsZU5vZGUubWF0Y2godGhpcy5ub2RlKTtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcztcbiAgfVxuXG4gIGlzRXF1YWxUbyhtZXRhdmFyaWFibGUpIHtcbiAgICBsZXQgZXF1YWxUbyA9IGZhbHNlO1xuXG4gICAgaWYgKG1ldGF2YXJpYWJsZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgbWV0YXZhcmlhYmxlU3RyaW5nID0gbWV0YXZhcmlhYmxlLmdldFN0cmluZygpO1xuXG4gICAgICBlcXVhbFRvID0gKG1ldGF2YXJpYWJsZVN0cmluZyA9PT0gdGhpcy5zdHJpbmcpO1xuICAgIH1cblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgaXNNZXRhVHlwZUVxdWFsVG8obWV0YVR5cGUpIHsgcmV0dXJuIHRoaXMubWV0YVR5cGUuaXNFcXVhbFRvKG1ldGFUeXBlKTsgfVxuXG4gIGlzRXNzZW50aWFsbHlFcXVhbFRvRnJhbWUoZnJhbWUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpIHtcbiAgICBsZXQgZXNzZW50aWFsbHlFcXVhbFRvRnJhbWUgPSBmYWxzZTtcblxuICAgIGNvbnN0IGdlbmVyYWxDb250ZXh0RmlsZVBhdGggPSBnZW5lcmFsQ29udGV4dC5nZXRGaWxlUGF0aCgpLFxuICAgICAgICAgIHNwZWNpZmljQ29udGV4dEZpbGVQYXRoID0gc3BlY2lmaWNDb250ZXh0LmdldEZpbGVQYXRoKCk7XG5cbiAgICBpZiAoZ2VuZXJhbENvbnRleHRGaWxlUGF0aCA9PT0gc3BlY2lmaWNDb250ZXh0RmlsZVBhdGgpIHtcbiAgICAgIGNvbnN0IGZyYW1lU3RyaW5nID0gZnJhbWUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGlmIChmcmFtZVN0cmluZyA9PT0gdGhpcy5zdHJpbmcpIHtcbiAgICAgICAgZXNzZW50aWFsbHlFcXVhbFRvRnJhbWUgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBlc3NlbnRpYWxseUVxdWFsVG9GcmFtZTtcbiAgfVxuXG4gIGlzRXNzZW50aWFsbHlFcXVhbFRvU3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkge1xuICAgIGxldCBlc3NlbnRpYWxseUVxdWFsVG9TdGF0ZW1lbnQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGdlbmVyYWxDb250ZXh0RmlsZVBhdGggPSBnZW5lcmFsQ29udGV4dC5nZXRGaWxlUGF0aCgpLFxuICAgICAgICAgIHNwZWNpZmljQ29udGV4dEZpbGVQYXRoID0gc3BlY2lmaWNDb250ZXh0LmdldEZpbGVQYXRoKCk7XG5cbiAgICBpZiAoZ2VuZXJhbENvbnRleHRGaWxlUGF0aCA9PT0gc3BlY2lmaWNDb250ZXh0RmlsZVBhdGgpIHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgICAgaWYgKHN0YXRlbWVudFN0cmluZyA9PT0gdGhpcy5zdHJpbmcpIHtcbiAgICAgICAgZXNzZW50aWFsbHlFcXVhbFRvU3RhdGVtZW50ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZXNzZW50aWFsbHlFcXVhbFRvU3RhdGVtZW50O1xuICB9XG5cbiAgdW5pZnlGcmFtZShmcmFtZSwgc3Vic3RpdHV0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkge1xuICAgIGxldCBmcmFtZVVuaWZpZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGZyYW1lU3RyaW5nID0gZnJhbWUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gdGhpcy5zdHJpbmc7IC8vL1xuXG4gICAgc3BlY2lmaWNDb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7ZnJhbWVTdHJpbmd9JyBmcmFtZSB3aXRoIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBtZXRhdmFyaWFibGUuLi5gKTtcblxuICAgIGNvbnN0IGVzc2VudGlhbGx5RXF1YWxUb0ZyYW1lID0gdGhpcy5pc0Vzc2VudGlhbGx5RXF1YWxUb0ZyYW1lKGZyYW1lLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgIGlmIChlc3NlbnRpYWxseUVxdWFsVG9GcmFtZSkge1xuICAgICAgZnJhbWVVbmlmaWVkID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbWV0YXZhcmlhYmxlID0gdGhpcywgLy8vXG4gICAgICAgICAgICBzaW1wbGVTdWJzdGl0dXRpb25QcmVzZW50ID0gc3Vic3RpdHV0aW9ucy5pc1NpbXBsZVN1YnN0aXR1dGlvblByZXNlbnRCeU1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUpO1xuXG4gICAgICBpZiAoc2ltcGxlU3Vic3RpdHV0aW9uUHJlc2VudCkge1xuICAgICAgICBjb25zdCBzaW1wbGVTdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb25zLmZpbmRTaW1wbGVTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUpLFxuICAgICAgICAgICAgICBzdWJzdGl0dXRpb24gPSBzaW1wbGVTdWJzdGl0dXRpb24sICAvLy9cbiAgICAgICAgICAgICAgc3Vic3RpdHV0aW9uRnJhbWVFcXVhbFRvRnJhbWUgPSBzdWJzdGl0dXRpb24uaXNGcmFtZUVxdWFsVG8oZnJhbWUpO1xuXG4gICAgICAgIGlmIChzdWJzdGl0dXRpb25GcmFtZUVxdWFsVG9GcmFtZSkge1xuICAgICAgICAgIGZyYW1lVW5pZmllZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICAgICAgbWV0YXZhcmlhYmxlID0gdGhpcywgIC8vL1xuICAgICAgICAgICAgICBmcmFtZVN1YnN0aXR1dGlvbiA9IEZyYW1lU3Vic3RpdHV0aW9uLmZyb21GcmFtZUFuZE1ldGF2YXJpYWJsZShmcmFtZSwgbWV0YXZhcmlhYmxlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgc3Vic3RpdHV0aW9uID0gZnJhbWVTdWJzdGl0dXRpb247ICAvLy9cblxuICAgICAgICBzdWJzdGl0dXRpb25zLmFkZFN1YnN0aXR1dGlvbihzdWJzdGl0dXRpb24sIGNvbnRleHQpO1xuXG4gICAgICAgIGZyYW1lVW5pZmllZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGZyYW1lVW5pZmllZCkge1xuICAgICAgc3BlY2lmaWNDb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtmcmFtZVN0cmluZ30nIGZyYW1lIHdpdGggdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIG1ldGF2YXJpYWJsZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnJhbWVVbmlmaWVkO1xuICB9XG5cbiAgdW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBzdWJzdGl0dXRpb24sIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpIHtcbiAgICBsZXQgc3RhdGVtZW50VW5pZmllZCA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZVN0cmluZyA9IHRoaXMuc3RyaW5nLCAvLy9cbiAgICAgICAgICBzdWJzdGl0dXRpb25TdHJpbmcgPSAoc3Vic3RpdHV0aW9uICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic3RpdHV0aW9uLmdldFN0cmluZygpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNUFRZX1NUUklORztcblxuICAgIHNwZWNpZmljQ29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JHtzdWJzdGl0dXRpb25TdHJpbmd9JyBtZXRhdmFyaWFibGUuLi5gKTtcblxuICAgIGNvbnN0IGVzc2VudGlhbGx5RXF1YWxUb1N0YXRlbWVudCA9IHRoaXMuaXNFc3NlbnRpYWxseUVxdWFsVG9TdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgIGlmIChlc3NlbnRpYWxseUVxdWFsVG9TdGF0ZW1lbnQpIHtcbiAgICAgIHN0YXRlbWVudFVuaWZpZWQgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBtZXRhdmFyaWFibGUgPSB0aGlzLCAvLy9cbiAgICAgICAgICAgIHN1YnN0aXR1dGlvblByZXNlbnQgPSBzdWJzdGl0dXRpb25zLmlzU3Vic3RpdHV0aW9uUHJlc2VudEJ5TWV0YXZhcmlhYmxlQW5kU3Vic3RpdHV0aW9uKG1ldGF2YXJpYWJsZSwgc3Vic3RpdHV0aW9uKTtcblxuICAgICAgaWYgKHN1YnN0aXR1dGlvblByZXNlbnQpIHtcbiAgICAgICAgc3Vic3RpdHV0aW9uID0gc3Vic3RpdHV0aW9ucy5maW5kU3Vic3RpdHV0aW9uQnlNZXRhdmFyaWFibGVBbmRTdWJzdGl0dXRpb24obWV0YXZhcmlhYmxlLCBzdWJzdGl0dXRpb24pOyAvLy9cblxuICAgICAgICBjb25zdCBzdWJzdGl0dXRpb25TdGF0ZW1lbnRFcXVhbFRvU3RhdGVtZW50ID0gc3Vic3RpdHV0aW9uLmlzU3RhdGVtZW50RXF1YWxUbyhzdGF0ZW1lbnQpO1xuXG4gICAgICAgIGlmIChzdWJzdGl0dXRpb25TdGF0ZW1lbnRFcXVhbFRvU3RhdGVtZW50KSB7XG4gICAgICAgICAgc3RhdGVtZW50VW5pZmllZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICAgICAgbWV0YXZhcmlhYmxlID0gdGhpcyxcbiAgICAgICAgICAgICAgc3RhdGVtZW50U3Vic3RpdHV0aW9uID0gU3RhdGVtZW50U3Vic3RpdHV0aW9uLmZyb21TdGF0ZW1lbnRNZXRhdmFyaWFibGVBbmRTdWJzdGl0dXRpb24oc3RhdGVtZW50LCBtZXRhdmFyaWFibGUsIHN1YnN0aXR1dGlvbiwgY29udGV4dCk7XG5cbiAgICAgICAgc3Vic3RpdHV0aW9uID0gc3RhdGVtZW50U3Vic3RpdHV0aW9uOyAgLy8vXG5cbiAgICAgICAgc3Vic3RpdHV0aW9ucy5hZGRTdWJzdGl0dXRpb24oc3Vic3RpdHV0aW9uLCBjb250ZXh0KTtcblxuICAgICAgICBzdGF0ZW1lbnRVbmlmaWVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3RhdGVtZW50VW5pZmllZCkge1xuICAgICAgc3BlY2lmaWNDb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfSR7c3Vic3RpdHV0aW9uU3RyaW5nfScgbWV0YXZhcmlhYmxlLmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZW1lbnRVbmlmaWVkO1xuICB9XG5cbiAgdW5pZnlNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gICAgbGV0IG1ldGF2YXJpYWJsZVVuaWZpZWQ7XG5cbiAgICBjb25zdCBnZW5lcmFsTWV0YXZhcmlhYmxlID0gdGhpcywgLy8vXG4gICAgICAgICAgc3BlY2lmaWNNZXRhdmFyaWFibGUgPSBtZXRhdmFyaWFibGUsICAvLy9cbiAgICAgICAgICBnZW5lcmFsTWV0YXZhcmlhYmxlU3RyaW5nID0gZ2VuZXJhbE1ldGF2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzcGVjaWZpY01ldGF2YXJpYWJsZVN0cmluZyA9IHNwZWNpZmljTWV0YXZhcmlhYmxlLmdldFN0cmluZygpO1xuXG4gICAgc3BlY2lmaWNDb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3BlY2lmaWNNZXRhdmFyaWFibGVTdHJpbmd9JyBtZXRhdmFyaWFibGUgYWdhaW5zdCB0aGUgJyR7Z2VuZXJhbE1ldGF2YXJpYWJsZVN0cmluZ30nIG1ldGF2YXJpYWJsZS4uLmApO1xuXG4gICAgbWV0YXZhcmlhYmxlVW5pZmllZCA9IHVuaWZ5TWV0YXZhcmlhYmxlKGdlbmVyYWxNZXRhdmFyaWFibGUsIHNwZWNpZmljTWV0YXZhcmlhYmxlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgIGlmIChtZXRhdmFyaWFibGVVbmlmaWVkKSB7XG4gICAgICBzcGVjaWZpY0NvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3NwZWNpZmljTWV0YXZhcmlhYmxlU3RyaW5nfScgbWV0YXZhcmlhYmxlIGFnYWluc3QgdGhlICcke2dlbmVyYWxNZXRhdmFyaWFibGVTdHJpbmd9JyBtZXRhdmFyaWFibGUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZVVuaWZpZWQ7XG4gIH1cblxuICB1bmlmeVN1YnN0aXR1dGlvbihzdWJzdGl0dXRpb24sIGNvbnRleHQpIHtcbiAgICBsZXQgc3Vic3RpdHV0aW9uVW5pZmllZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgbWV0YXZhcmlhYmxlU3RyaW5nID0gdGhpcy5zdHJpbmcsICAvLy9cbiAgICAgICAgICBzdWJzdGl0dXRpb25TdHJpbmcgPSBzdWJzdGl0dXRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3Vic3RpdHV0aW9uU3RyaW5nfScgc3Vic3RpdHV0aW9uIHdpdGggdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIG1ldGF2YXJpYWJsZS4uLmApO1xuXG4gICAgY29uc3QgbWV0YXZhcmlhYmxlID0gdGhpcywgLy8vXG4gICAgICAgICAganVkZ2VtZW50ID0gY29udGV4dC5maW5kSnVkZ2VtZW50QnlNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlKTtcblxuICAgIGlmIChqdWRnZW1lbnQgIT09IG51bGwpe1xuICAgICAgY29uc3QgZGVjbGFyYXRpb24gPSBqdWRnZW1lbnQuZ2V0RGVjbGFyYXRpb24oKTtcblxuICAgICAgc3Vic3RpdHV0aW9uVW5pZmllZCA9IGRlY2xhcmF0aW9uLnVuaWZ5U3Vic3RpdHV0aW9uKHN1YnN0aXR1dGlvbiwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgaWYgKHN1YnN0aXR1dGlvblVuaWZpZWQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N1YnN0aXR1dGlvblN0cmluZ30nIHN1YnN0aXR1dGlvbiB3aXRoIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBtZXRhdmFyaWFibGUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvblVuaWZpZWQ7XG4gIH1cblxuICB2ZXJpZnkoY29udGV4dCkge1xuICAgIGxldCB2ZXJpZmllZDtcblxuICAgIGNvbnN0IG1ldGF2YXJpYWJsZVN0cmluZyA9IHRoaXMuc3RyaW5nOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgbWV0YXZhcmlhYmxlLi4uYCk7XG5cbiAgICBjb25zdCBtZXRhdmFyaWFibGUgPSB0aGlzLCAvLy9cbiAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IGNvbnRleHQsICAvLy9cbiAgICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0LCAgLy8vXG4gICAgICAgICAgbWV0YXZhcmlhYmxlUHJlc2VudCA9IGdlbmVyYWxDb250ZXh0LmlzTWV0YXZhcmlhYmxlUHJlc2VudChtZXRhdmFyaWFibGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgdmVyaWZpZWQgPSBtZXRhdmFyaWFibGVQcmVzZW50OyAvLy9cblxuICAgIGlmICh2ZXJpZmllZCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIG1ldGF2YXJpYWJsZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyaWZpZWQ7XG4gIH1cblxuICB2ZXJpZnlUeXBlKGZpbGVDb250ZXh0KSB7XG4gICAgbGV0IHR5cGVWZXJpZmllZDtcblxuICAgIGlmICh0aGlzLnR5cGUgPT09IG51bGwpIHtcbiAgICAgIHR5cGVWZXJpZmllZCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLnR5cGUgPT09IG9iamVjdFR5cGUpIHtcbiAgICAgICAgdHlwZVZlcmlmaWVkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHR5cGVOYW1lID0gdGhpcy50eXBlLmdldE5hbWUoKTtcblxuICAgICAgICBmaWxlQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0eXBlTmFtZX0nIHR5cGUuLi5gKTtcblxuICAgICAgICBjb25zdCB0eXBlID0gZmlsZUNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKHR5cGVOYW1lKTtcblxuICAgICAgICBpZiAodHlwZSA9PT0gbnVsbCkge1xuICAgICAgICAgIGZpbGVDb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZU5hbWV9JyB0eXBlIGlzIG1pc3NpbmcuYCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy50eXBlID0gdHlwZTsgLy8vXG5cbiAgICAgICAgICB0eXBlVmVyaWZpZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVWZXJpZmllZCkge1xuICAgICAgICAgIGZpbGVDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dHlwZU5hbWV9JyB0eXBlLmApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVWZXJpZmllZDtcbiAgfVxuXG4gIHZlcmlmeVdoZW5EZWNsYXJlZChmaWxlQ29udGV4dCkge1xuICAgIGxldCB2ZXJpZmllZFdoZW5EZWNsYXJlZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgbWV0YXZhcmlhYmxlU3RyaW5nID0gdGhpcy5zdHJpbmc7IC8vL1xuXG4gICAgZmlsZUNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgbWV0YXZhcmlhYmxlIHdoZW4gZGVjbGFyZWQuLi5gKTtcblxuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGUgPSB0aGlzLm5vZGUsIC8vL1xuICAgICAgICAgIHRlcm1Ob2RlID0gdGVybU5vZGVRdWVyeShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgIGlmICh0ZXJtTm9kZSAhPT0gbnVsbCkge1xuICAgICAgZmlsZUNvbnRleHQuZGVidWcoYEEgdGVybSB3YXMgZm91bmQgaW4gdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIG1ldGF2YXJpYWJsZSB3aGVuIGEgdHlwZSBzaG91bGQgaGF2ZSBiZWVuIHByZXNlbnQuYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5hbWUgPSB0aGlzLm5hbWUsIC8vL1xuICAgICAgICAgICAgbWV0YXZhcmlhYmxlUHJlc2VudCA9IGZpbGVDb250ZXh0LmlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKTtcblxuICAgICAgaWYgKG1ldGF2YXJpYWJsZVByZXNlbnQpIHtcbiAgICAgICAgZmlsZUNvbnRleHQuZGVidWcoYFRoZSAnJHttZXRhdmFyaWFibGVOYW1lfScgbWV0YXZhcmlhYmxlIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHZhcmlhYmxlTmFtZSA9IHRoaXMubmFtZSwgLy8vXG4gICAgICAgICAgICAgIHZhcmlhYmxlUHJlc2VudCA9IGZpbGVDb250ZXh0LmlzVmFyaWFibGVQcmVzZW50QnlWYXJpYWJsZU5hbWUodmFyaWFibGVOYW1lKTtcblxuICAgICAgICBpZiAodmFyaWFibGVQcmVzZW50KSB7XG4gICAgICAgICAgZmlsZUNvbnRleHQuZGVidWcoYEEgJyR7bWV0YXZhcmlhYmxlTmFtZX0nIHZhcmlhYmxlIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB0eXBlVmVyaWZpZWQgPSB0aGlzLnZlcmlmeVR5cGUoZmlsZUNvbnRleHQpO1xuXG4gICAgICAgICAgdmVyaWZpZWRXaGVuRGVjbGFyZWQgPSB0eXBlVmVyaWZpZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmVyaWZpZWRXaGVuRGVjbGFyZWQpIHtcbiAgICAgIGZpbGVDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgbWV0YXZhcmlhYmxlIHdoZW4gZGVjbGFyZWQuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcmlmaWVkV2hlbkRlY2xhcmVkO1xuICB9XG5cbiAgdmVyaWZ5R2l2ZW5NZXRhVHlwZShtZXRhVHlwZSwgY29udGV4dCkge1xuICAgIGxldCB2ZXJpZmllZEdpdmVuTWV0YVR5cGUgPSBmYWxzZTtcblxuICAgIGNvbnN0IG1ldGF2YXJpYWJsZVN0cmluZyA9IHRoaXMuc3RyaW5nLCAgLy8vXG4gICAgICAgICAgbWV0YVR5cGVTdHJpbmcgPSBtZXRhVHlwZS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgbWV0YXZhcmlhYmxlIGdpdmVuIHRoZSAnJHttZXRhVHlwZVN0cmluZ30nIG1ldGEtdHlwZS4uLmApO1xuXG4gICAgbGV0IG1ldGF2YXJpYWJsZSA9IHRoaXM7ICAvLy9cblxuICAgIGNvbnN0IHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQsICAvLy9cbiAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gICAgbWV0YXZhcmlhYmxlID0gZ2VuZXJhbENvbnRleHQuZmluZE1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgaWYgKG1ldGF2YXJpYWJsZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgbWV0YXZhcmlhYmxlTWV0YVR5cGVFcXVhbFRvTWV0YVR5cGUgPSBtZXRhdmFyaWFibGUuaXNNZXRhVHlwZUVxdWFsVG8obWV0YVR5cGUpO1xuXG4gICAgICB2ZXJpZmllZEdpdmVuTWV0YVR5cGUgPSBtZXRhdmFyaWFibGVNZXRhVHlwZUVxdWFsVG9NZXRhVHlwZTsgIC8vL1xuICAgIH1cblxuICAgIGlmICh2ZXJpZmllZEdpdmVuTWV0YVR5cGUpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBtZXRhdmFyaWFibGUgZ2l2ZW4gdGhlICcke21ldGFUeXBlU3RyaW5nfScgbWV0YS10eXBlLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJpZmllZEdpdmVuTWV0YVR5cGU7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgbWV0YVR5cGVKU09OID0gbWV0YVR5cGVUb01ldGFUeXBlSlNPTih0aGlzLm1ldGFUeXBlKSxcbiAgICAgICAgICB0eXBlSlNPTiA9IHR5cGVUb1R5cGVKU09OKHRoaXMudHlwZSksXG4gICAgICAgICAgdHlwZSA9IHR5cGVKU09OLCAgLy8vXG4gICAgICAgICAgbWV0YVR5cGUgPSBtZXRhVHlwZUpTT04sICAvLy9cbiAgICAgICAgICBzdHJpbmcgPSB0aGlzLnN0cmluZyxcbiAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIG1ldGFUeXBlXG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgY29udGV4dCA9IGZpbGVDb250ZXh0LCAgLy8vXG4gICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZUFuZFRva2VucyA9IE1ldGF2YXJpYWJsZU5vZGVBbmRUb2tlbnMuZnJvbVN0cmluZyhzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZVRva2VucyA9IG1ldGF2YXJpYWJsZU5vZGVBbmRUb2tlbnMuZ2V0TWV0YXZhcmlhYmxlVG9rZW5zKCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IG1ldGF2YXJpYWJsZU5vZGVBbmRUb2tlbnMuZ2V0TWV0YXZhcmlhYmxlTm9kZSgpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZU5hbWUgPSBtZXRhdmFyaWFibGVOYW1lRnJvbU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgbmFtZSA9IG1ldGF2YXJpYWJsZU5hbWUsICAvLy9cbiAgICAgICAgICBub2RlID0gbWV0YXZhcmlhYmxlTm9kZSwgIC8vL1xuICAgICAgICAgIHRva2VucyA9IG1ldGF2YXJpYWJsZVRva2VucywgLy8vXG4gICAgICAgICAgdHlwZSA9IHR5cGVGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCksXG4gICAgICAgICAgbWV0YVR5cGUgPSBtZXRhVHlwZUZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSxcbiAgICAgICAgICBtZXRhdmFyaWFibGUgPSBuZXcgTWV0YXZhcmlhYmxlKHN0cmluZywgbm9kZSwgdG9rZW5zLCBuYW1lLCB0eXBlLCBtZXRhVHlwZSk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlO1xuICB9XG5cbiAgc3RhdGljIGZyb21GcmFtZU5vZGUoZnJhbWVOb2RlLCBjb250ZXh0KSB7XG4gICAgbGV0IG1ldGF2YXJpYWJsZSA9IG51bGw7XG5cbiAgICBjb25zdCBmcmFtZU1ldGF2YXJpYWJsZU5vZGUgPSBmcmFtZU1ldGF2YXJpYWJsZU5vZGVRdWVyeShmcmFtZU5vZGUpO1xuXG4gICAgaWYgKGZyYW1lTWV0YXZhcmlhYmxlTm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZSA9IGZyYW1lTWV0YXZhcmlhYmxlTm9kZSwgLy8vXG4gICAgICAgICAgICBtZXRhdmFyaWFibGVOYW1lID0gbWV0YXZhcmlhYmxlTmFtZUZyb21NZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgICAgbmFtZSA9IG1ldGF2YXJpYWJsZU5hbWUsICAvLy9cbiAgICAgICAgICAgIG5vZGUgPSBtZXRhdmFyaWFibGVOb2RlLCAgLy8vXG4gICAgICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgICAgIHRva2VucyA9IGNvbnRleHQubm9kZUFzVG9rZW5zKG5vZGUpLFxuICAgICAgICAgICAgdHlwZSA9IG51bGwsXG4gICAgICAgICAgICBtZXRhVHlwZSA9IG51bGw7XG5cbiAgICAgIG1ldGF2YXJpYWJsZSA9IG5ldyBNZXRhdmFyaWFibGUoc3RyaW5nLCBub2RlLCB0b2tlbnMsIG5hbWUsIHR5cGUsIG1ldGFUeXBlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpIHtcbiAgICBsZXQgbWV0YXZhcmlhYmxlID0gbnVsbDtcblxuICAgIGNvbnN0IHN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGUgPSBzdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlUXVlcnkoc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBpZiAoc3RhdGVtZW50TWV0YXZhcmlhYmxlTm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZSA9IHN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGUsIC8vL1xuICAgICAgICAgICAgbWV0YXZhcmlhYmxlTmFtZSA9IG1ldGF2YXJpYWJsZU5hbWVGcm9tTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSxcbiAgICAgICAgICAgIG5hbWUgPSBtZXRhdmFyaWFibGVOYW1lLCAgLy8vXG4gICAgICAgICAgICBub2RlID0gbWV0YXZhcmlhYmxlTm9kZSwgIC8vL1xuICAgICAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgICAgICB0b2tlbnMgPSBjb250ZXh0Lm5vZGVBc1Rva2Vucyhub2RlKSxcbiAgICAgICAgICAgIHR5cGUgPSBudWxsLFxuICAgICAgICAgICAgbWV0YVR5cGUgPSBudWxsO1xuXG4gICAgICBtZXRhdmFyaWFibGUgPSBuZXcgTWV0YXZhcmlhYmxlKHN0cmluZywgbm9kZSwgdG9rZW5zLCBuYW1lLCB0eXBlLCBtZXRhVHlwZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlLCBjb250ZXh0KSB7XG4gICAgbGV0IG1ldGF2YXJpYWJsZSA9IG51bGw7XG5cbiAgICBpZiAobWV0YXZhcmlhYmxlTm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgbWV0YXZhcmlhYmxlTmFtZSA9IG1ldGF2YXJpYWJsZU5hbWVGcm9tTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSxcbiAgICAgICAgICAgIG5hbWUgPSBtZXRhdmFyaWFibGVOYW1lLCAgLy8vXG4gICAgICAgICAgICBub2RlID0gbWV0YXZhcmlhYmxlTm9kZSwgIC8vL1xuICAgICAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgICAgICB0b2tlbnMgPSBjb250ZXh0Lm5vZGVBc1Rva2Vucyhub2RlKSxcbiAgICAgICAgICAgIHR5cGUgPSBudWxsLFxuICAgICAgICAgICAgbWV0YVR5cGUgPSBudWxsO1xuXG4gICAgICBtZXRhdmFyaWFibGUgPSBuZXcgTWV0YXZhcmlhYmxlKHN0cmluZywgbm9kZSwgdG9rZW5zLCBuYW1lLCB0eXBlLCBtZXRhVHlwZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlKG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSwgZmlsZUNvbnRleHQpIHtcbiAgICBjb25zdCB7IFR5cGUsIE1ldGFUeXBlIH0gPSBzaGltLFxuICAgICAgICAgIGxvY2FsQ29udGV4dCA9IExvY2FsQ29udGV4dC5mcm9tRmlsZUNvbnRleHQoZmlsZUNvbnRleHQpLFxuICAgICAgICAgIGNvbnRleHQgPSBsb2NhbENvbnRleHQsIC8vL1xuICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSBtZXRhdmFyaWFibGVOb2RlUXVlcnkobWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlKSxcbiAgICAgICAgICBub2RlID0gbWV0YXZhcmlhYmxlTm9kZSwgIC8vL1xuICAgICAgICAgIHN0cmluZyA9IGZpbGVDb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgICB0b2tlbnMgPSBmaWxlQ29udGV4dC5ub2RlQXNUb2tlbnMobm9kZSksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlTmFtZSA9IG1ldGF2YXJpYWJsZU5hbWVGcm9tTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSxcbiAgICAgICAgICBuYW1lID0gbWV0YXZhcmlhYmxlTmFtZSwgIC8vL1xuICAgICAgICAgIHR5cGUgPSBUeXBlLmZyb21NZXRhdmFyaWFibGVEZWNsYXJhdGlvbk5vZGUobWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICBtZXRhVHlwZSA9IE1ldGFUeXBlLmZyb21NZXRhdmFyaWFibGVEZWNsYXJhdGlvbk5vZGUobWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICBtZXRhdmFyaWFibGUgPSBuZXcgTWV0YXZhcmlhYmxlKHN0cmluZywgbm9kZSwgdG9rZW5zLCBuYW1lLCB0eXBlLCBtZXRhVHlwZSk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlO1xuICB9XG59XG5cbk9iamVjdC5hc3NpZ24oc2hpbSwge1xuICBNZXRhdmFyaWFibGVcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBNZXRhdmFyaWFibGU7XG4iXSwibmFtZXMiOlsidGVybU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsIm1ldGF2YXJpYWJsZU5vZGVRdWVyeSIsImZyYW1lTWV0YXZhcmlhYmxlTm9kZVF1ZXJ5Iiwic3RhdGVtZW50TWV0YXZhcmlhYmxlTm9kZVF1ZXJ5IiwiTWV0YXZhcmlhYmxlIiwic3RyaW5nIiwibm9kZSIsInRva2VucyIsIm5hbWUiLCJ0eXBlIiwibWV0YVR5cGUiLCJnZXRTdHJpbmciLCJnZXROb2RlIiwiZ2V0VG9rZW5zIiwiZ2V0TmFtZSIsImdldFR5cGUiLCJnZXRNZXRhVHlwZSIsIm1hdGNoTWV0YXZhcmlhYmxlTmFtZSIsIm1ldGF2YXJpYWJsZU5hbWUiLCJtZXRhdmFyaWFibGVOYW1lTWF0Y2hlcyIsIm1hdGNoTWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyIsIm1hdGNoIiwiaXNFcXVhbFRvIiwibWV0YXZhcmlhYmxlIiwiZXF1YWxUbyIsIm1ldGF2YXJpYWJsZVN0cmluZyIsImlzTWV0YVR5cGVFcXVhbFRvIiwiaXNFc3NlbnRpYWxseUVxdWFsVG9GcmFtZSIsImZyYW1lIiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJlc3NlbnRpYWxseUVxdWFsVG9GcmFtZSIsImdlbmVyYWxDb250ZXh0RmlsZVBhdGgiLCJnZXRGaWxlUGF0aCIsInNwZWNpZmljQ29udGV4dEZpbGVQYXRoIiwiZnJhbWVTdHJpbmciLCJpc0Vzc2VudGlhbGx5RXF1YWxUb1N0YXRlbWVudCIsInN0YXRlbWVudCIsImVzc2VudGlhbGx5RXF1YWxUb1N0YXRlbWVudCIsInN0YXRlbWVudFN0cmluZyIsInVuaWZ5RnJhbWUiLCJzdWJzdGl0dXRpb25zIiwiZnJhbWVVbmlmaWVkIiwidHJhY2UiLCJzaW1wbGVTdWJzdGl0dXRpb25QcmVzZW50IiwiaXNTaW1wbGVTdWJzdGl0dXRpb25QcmVzZW50QnlNZXRhdmFyaWFibGUiLCJzaW1wbGVTdWJzdGl0dXRpb24iLCJmaW5kU2ltcGxlU3Vic3RpdHV0aW9uQnlNZXRhdmFyaWFibGUiLCJzdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb25GcmFtZUVxdWFsVG9GcmFtZSIsImlzRnJhbWVFcXVhbFRvIiwiY29udGV4dCIsImZyYW1lU3Vic3RpdHV0aW9uIiwiRnJhbWVTdWJzdGl0dXRpb24iLCJmcm9tRnJhbWVBbmRNZXRhdmFyaWFibGUiLCJhZGRTdWJzdGl0dXRpb24iLCJkZWJ1ZyIsInVuaWZ5U3RhdGVtZW50Iiwic3RhdGVtZW50VW5pZmllZCIsInN1YnN0aXR1dGlvblN0cmluZyIsIkVNUFRZX1NUUklORyIsInN1YnN0aXR1dGlvblByZXNlbnQiLCJpc1N1YnN0aXR1dGlvblByZXNlbnRCeU1ldGF2YXJpYWJsZUFuZFN1YnN0aXR1dGlvbiIsImZpbmRTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZUFuZFN1YnN0aXR1dGlvbiIsInN1YnN0aXR1dGlvblN0YXRlbWVudEVxdWFsVG9TdGF0ZW1lbnQiLCJpc1N0YXRlbWVudEVxdWFsVG8iLCJzdGF0ZW1lbnRTdWJzdGl0dXRpb24iLCJTdGF0ZW1lbnRTdWJzdGl0dXRpb24iLCJmcm9tU3RhdGVtZW50TWV0YXZhcmlhYmxlQW5kU3Vic3RpdHV0aW9uIiwidW5pZnlNZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGVVbmlmaWVkIiwiZ2VuZXJhbE1ldGF2YXJpYWJsZSIsInNwZWNpZmljTWV0YXZhcmlhYmxlIiwiZ2VuZXJhbE1ldGF2YXJpYWJsZVN0cmluZyIsInNwZWNpZmljTWV0YXZhcmlhYmxlU3RyaW5nIiwidW5pZnlTdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb25VbmlmaWVkIiwianVkZ2VtZW50IiwiZmluZEp1ZGdlbWVudEJ5TWV0YXZhcmlhYmxlIiwiZGVjbGFyYXRpb24iLCJnZXREZWNsYXJhdGlvbiIsInZlcmlmeSIsInZlcmlmaWVkIiwibWV0YXZhcmlhYmxlUHJlc2VudCIsImlzTWV0YXZhcmlhYmxlUHJlc2VudCIsInZlcmlmeVR5cGUiLCJmaWxlQ29udGV4dCIsInR5cGVWZXJpZmllZCIsIm9iamVjdFR5cGUiLCJ0eXBlTmFtZSIsImZpbmRUeXBlQnlUeXBlTmFtZSIsInZlcmlmeVdoZW5EZWNsYXJlZCIsInZlcmlmaWVkV2hlbkRlY2xhcmVkIiwidGVybU5vZGUiLCJpc01ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5hbWUiLCJ2YXJpYWJsZU5hbWUiLCJ2YXJpYWJsZVByZXNlbnQiLCJpc1ZhcmlhYmxlUHJlc2VudEJ5VmFyaWFibGVOYW1lIiwidmVyaWZ5R2l2ZW5NZXRhVHlwZSIsInZlcmlmaWVkR2l2ZW5NZXRhVHlwZSIsIm1ldGFUeXBlU3RyaW5nIiwiZmluZE1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZU1ldGFUeXBlRXF1YWxUb01ldGFUeXBlIiwidG9KU09OIiwibWV0YVR5cGVKU09OIiwibWV0YVR5cGVUb01ldGFUeXBlSlNPTiIsInR5cGVKU09OIiwidHlwZVRvVHlwZUpTT04iLCJqc29uIiwiZnJvbUpTT04iLCJtZXRhdmFyaWFibGVOb2RlQW5kVG9rZW5zIiwiTWV0YXZhcmlhYmxlTm9kZUFuZFRva2VucyIsImZyb21TdHJpbmciLCJtZXRhdmFyaWFibGVUb2tlbnMiLCJnZXRNZXRhdmFyaWFibGVUb2tlbnMiLCJnZXRNZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlTmFtZUZyb21NZXRhdmFyaWFibGVOb2RlIiwidHlwZUZyb21KU09OIiwibWV0YVR5cGVGcm9tSlNPTiIsImZyb21GcmFtZU5vZGUiLCJmcmFtZU5vZGUiLCJmcmFtZU1ldGF2YXJpYWJsZU5vZGUiLCJub2RlQXNTdHJpbmciLCJub2RlQXNUb2tlbnMiLCJmcm9tU3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlIiwiZnJvbU1ldGF2YXJpYWJsZU5vZGUiLCJmcm9tTWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlIiwibWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlIiwiVHlwZSIsInNoaW0iLCJNZXRhVHlwZSIsImxvY2FsQ29udGV4dCIsIkxvY2FsQ29udGV4dCIsImZyb21GaWxlQ29udGV4dCIsIk9iamVjdCIsImFzc2lnbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBa2VBOzs7ZUFBQTs7OzJEQWhlaUI7NERBQ1E7NERBQ0s7Z0VBQ0k7bUVBQ0k7cUJBRVo7b0JBQ0M7eUJBQ0U7MkJBQ0s7b0JBQ1c7b0JBQ1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHckQsSUFBTUEsZ0JBQWdCQyxJQUFBQSxnQkFBUyxFQUFDLGdDQUMxQkMsd0JBQXdCRCxJQUFBQSxnQkFBUyxFQUFDLDBDQUNsQ0UsNkJBQTZCRixJQUFBQSxnQkFBUyxFQUFDLHlCQUN2Q0csaUNBQWlDSCxJQUFBQSxnQkFBUyxFQUFDO0FBRWpELElBQUEsQUFBTUksNkJBQU47YUFBTUEsYUFDUUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxJQUFJLEVBQUVDLFFBQVE7Z0NBRGxETjtRQUVGLElBQUksQ0FBQ0MsTUFBTSxHQUFHQTtRQUNkLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsTUFBTSxHQUFHQTtRQUNkLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsUUFBUSxHQUFHQTs7a0JBUGROOztZQVVKTyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNOLE1BQU07WUFDcEI7OztZQUVBTyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FB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
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "default", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return _default;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
var _statement = /*#__PURE__*/ _interop_require_default(require("../../../substitution/statement"));
|
|
12
|
-
var _string = require("../../../utilities/string");
|
|
13
|
-
function _interop_require_default(obj) {
|
|
14
|
-
return obj && obj.__esModule ? obj : {
|
|
15
|
-
default: obj
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
function unifyAWithRule(qualifiedStatement, substitutions, context) {
|
|
19
|
-
var unifiedWithRule = false;
|
|
20
|
-
var reference = qualifiedStatement.getReference(), rule = context.findRuleByReference(reference);
|
|
21
|
-
if (rule !== null) {
|
|
22
|
-
var ruleString = rule.getString(), qualifiedStatementString = (0, _string.trim)(qualifiedStatement.getString()); ///
|
|
23
|
-
context.trace("Unifying the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(ruleString, "' rule..."));
|
|
24
|
-
var statement = qualifiedStatement.getStatement(), proofSteps = context.getProofSteps(), statementAndProofStepsUnified = rule.unifyStatementAndProofSteps(statement, proofSteps, context);
|
|
25
|
-
unifiedWithRule = statementAndProofStepsUnified; ///
|
|
26
|
-
if (unifiedWithRule) {
|
|
27
|
-
context.debug("...unified the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(ruleString, "' rule."));
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
return unifiedWithRule;
|
|
31
|
-
}
|
|
32
|
-
function unifyAWithReference(qualifiedStatement, substitutions, context) {
|
|
33
|
-
var unifiedWithReference;
|
|
34
|
-
var statement = qualifiedStatement.getStatement(), reference = qualifiedStatement.getReference(), statementString = statement.getString(), referenceString = reference.getString();
|
|
35
|
-
context.trace("Unifying the '".concat(statementString, "' qualified statement with the '").concat(referenceString, "' reference..."));
|
|
36
|
-
var metavariable = reference.getMetavariable(), statementSubstitution = _statement.default.fromStatementAndMetavariable(statement, metavariable, context), substitution = statementSubstitution; ///
|
|
37
|
-
substitutions.addSubstitution(substitution, context);
|
|
38
|
-
unifiedWithReference = true;
|
|
39
|
-
if (unifiedWithReference) {
|
|
40
|
-
context.debug("...unified the '".concat(statementString, "' qualified statement with the '").concat(referenceString, "' reference."));
|
|
41
|
-
}
|
|
42
|
-
return unifiedWithReference;
|
|
43
|
-
}
|
|
44
|
-
function unifyAWithAxiomLemmaTheoremOrConjecture(qualifiedStatement, substitutions, context) {
|
|
45
|
-
var unifiedWithAxiomLemmaTheoremOrConjecture = false;
|
|
46
|
-
var reference = qualifiedStatement.getReference(), axiom = context.findAxiomByReference(reference), lemma = context.findLemmaByReference(reference), theorem = context.findTheoremByReference(reference), conjecture = context.findConjectureByReference(reference), axiomLemmaTheoremConjecture = axiom || lemma || theorem || conjecture;
|
|
47
|
-
if (axiomLemmaTheoremConjecture !== null) {
|
|
48
|
-
var qualifiedStatementString = (0, _string.trim)(qualifiedStatement.getString()), axiomLemmaTheoremConjectureString = reference.getString();
|
|
49
|
-
context.trace("Unifying the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(axiomLemmaTheoremConjectureString, "' axiom, lemma, theorem or conjecture..."));
|
|
50
|
-
var statement = qualifiedStatement.getStatement(), proofSteps = context.getProofSteps(), statementAndProofStepsUnified = axiomLemmaTheoremConjecture.unifyStatementAndProofSteps(statement, proofSteps, context);
|
|
51
|
-
if (statementAndProofStepsUnified) {
|
|
52
|
-
var metavariable = reference.getMetavariable(), statementSubstitution = _statement.default.fromStatementAndMetavariable(statement, metavariable, context), substitution = statementSubstitution; ///
|
|
53
|
-
substitutions.addSubstitution(substitution, context);
|
|
54
|
-
unifiedWithAxiomLemmaTheoremOrConjecture = true;
|
|
55
|
-
}
|
|
56
|
-
if (unifiedWithAxiomLemmaTheoremOrConjecture) {
|
|
57
|
-
context.debug("...unified the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(axiomLemmaTheoremConjectureString, "' axiom, lemma, theorem or conjecture."));
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
return unifiedWithAxiomLemmaTheoremOrConjecture;
|
|
61
|
-
}
|
|
62
|
-
var unifyMixins = [
|
|
63
|
-
unifyAWithRule,
|
|
64
|
-
unifyAWithReference,
|
|
65
|
-
unifyAWithAxiomLemmaTheoremOrConjecture
|
|
66
|
-
];
|
|
67
|
-
var _default = unifyMixins;
|
|
68
|
-
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9taXhpbnMvc3RhdGVtZW50L3F1YWxpZmllZC91bmlmeS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IFN0YXRlbWVudFN1YnN0aXR1dGlvbiBmcm9tIFwiLi4vLi4vLi4vc3Vic3RpdHV0aW9uL3N0YXRlbWVudFwiO1xuXG5pbXBvcnQgeyB0cmltIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxpdGllcy9zdHJpbmdcIjtcblxuZnVuY3Rpb24gdW5pZnlBV2l0aFJ1bGUocXVhbGlmaWVkU3RhdGVtZW50LCBzdWJzdGl0dXRpb25zLCBjb250ZXh0KSB7XG4gIGxldCB1bmlmaWVkV2l0aFJ1bGUgPSBmYWxzZTtcblxuICBjb25zdCByZWZlcmVuY2UgPSBxdWFsaWZpZWRTdGF0ZW1lbnQuZ2V0UmVmZXJlbmNlKCksXG4gICAgICAgIHJ1bGUgPSBjb250ZXh0LmZpbmRSdWxlQnlSZWZlcmVuY2UocmVmZXJlbmNlKTtcblxuICBpZiAocnVsZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHJ1bGVTdHJpbmcgPSBydWxlLmdldFN0cmluZygpLFxuICAgICAgICAgIHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IHRyaW0ocXVhbGlmaWVkU3RhdGVtZW50LmdldFN0cmluZygpKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7cnVsZVN0cmluZ30nIHJ1bGUuLi5gKTtcblxuICAgIGNvbnN0IHN0YXRlbWVudCA9IHF1YWxpZmllZFN0YXRlbWVudC5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICBwcm9vZlN0ZXBzID0gY29udGV4dC5nZXRQcm9vZlN0ZXBzKCksXG4gICAgICAgICAgc3RhdGVtZW50QW5kUHJvb2ZTdGVwc1VuaWZpZWQgPSBydWxlLnVuaWZ5U3RhdGVtZW50QW5kUHJvb2ZTdGVwcyhzdGF0ZW1lbnQsIHByb29mU3RlcHMsIGNvbnRleHQpO1xuXG4gICAgdW5pZmllZFdpdGhSdWxlID0gc3RhdGVtZW50QW5kUHJvb2ZTdGVwc1VuaWZpZWQ7ICAvLy9cblxuICAgIGlmICh1bmlmaWVkV2l0aFJ1bGUpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7cnVsZVN0cmluZ30nIHJ1bGUuYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuaWZpZWRXaXRoUnVsZTtcbn1cblxuZnVuY3Rpb24gdW5pZnlBV2l0aFJlZmVyZW5jZShxdWFsaWZpZWRTdGF0ZW1lbnQsIHN1YnN0aXR1dGlvbnMsIGNvbnRleHQpIHtcbiAgbGV0IHVuaWZpZWRXaXRoUmVmZXJlbmNlO1xuXG4gIGNvbnN0IHN0YXRlbWVudCA9IHF1YWxpZmllZFN0YXRlbWVudC5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgcmVmZXJlbmNlID0gcXVhbGlmaWVkU3RhdGVtZW50LmdldFJlZmVyZW5jZSgpLFxuICAgICAgICBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCksXG4gICAgICAgIHJlZmVyZW5jZVN0cmluZyA9IHJlZmVyZW5jZS5nZXRTdHJpbmcoKTtcblxuICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyByZWZlcmVuY2UuLi5gKTtcblxuICBjb25zdCBtZXRhdmFyaWFibGUgPSByZWZlcmVuY2UuZ2V0TWV0YXZhcmlhYmxlKCksXG4gICAgICAgIHN0YXRlbWVudFN1YnN0aXR1dGlvbiA9IFN0YXRlbWVudFN1YnN0aXR1dGlvbi5mcm9tU3RhdGVtZW50QW5kTWV0YXZhcmlhYmxlKHN0YXRlbWVudCwgbWV0YXZhcmlhYmxlLCBjb250ZXh0KSxcbiAgICAgICAgc3Vic3RpdHV0aW9uID0gc3RhdGVtZW50U3Vic3RpdHV0aW9uOyAvLy9cblxuICBzdWJzdGl0dXRpb25zLmFkZFN1YnN0aXR1dGlvbihzdWJzdGl0dXRpb24sIGNvbnRleHQpO1xuXG4gIHVuaWZpZWRXaXRoUmVmZXJlbmNlID0gdHJ1ZTtcblxuICBpZiAodW5pZmllZFdpdGhSZWZlcmVuY2UpIHtcbiAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IHdpdGggdGhlICcke3JlZmVyZW5jZVN0cmluZ30nIHJlZmVyZW5jZS5gKTtcbiAgfVxuXG4gIHJldHVybiB1bmlmaWVkV2l0aFJlZmVyZW5jZTtcbn1cblxuZnVuY3Rpb24gdW5pZnlBV2l0aEF4aW9tTGVtbWFUaGVvcmVtT3JDb25qZWN0dXJlKHF1YWxpZmllZFN0YXRlbWVudCwgc3Vic3RpdHV0aW9ucywgY29udGV4dCkge1xuICBsZXQgdW5pZmllZFdpdGhBeGlvbUxlbW1hVGhlb3JlbU9yQ29uamVjdHVyZSA9IGZhbHNlO1xuXG4gIGNvbnN0IHJlZmVyZW5jZSA9IHF1YWxpZmllZFN0YXRlbWVudC5nZXRSZWZlcmVuY2UoKSxcbiAgICAgICAgYXhpb20gPSBjb250ZXh0LmZpbmRBeGlvbUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSksXG4gICAgICAgIGxlbW1hID0gY29udGV4dC5maW5kTGVtbWFCeVJlZmVyZW5jZShyZWZlcmVuY2UpLFxuICAgICAgICB0aGVvcmVtID0gY29udGV4dC5maW5kVGhlb3JlbUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSksXG4gICAgICAgIGNvbmplY3R1cmUgPSBjb250ZXh0LmZpbmRDb25qZWN0dXJlQnlSZWZlcmVuY2UocmVmZXJlbmNlKSxcbiAgICAgICAgYXhpb21MZW1tYVRoZW9yZW1Db25qZWN0dXJlID0gKGF4aW9tIHx8IGxlbW1hIHx8IHRoZW9yZW0gfHwgY29uamVjdHVyZSk7XG5cbiAgaWYgKGF4aW9tTGVtbWFUaGVvcmVtQ29uamVjdHVyZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IHRyaW0ocXVhbGlmaWVkU3RhdGVtZW50LmdldFN0cmluZygpKSwgIC8vL1xuICAgICAgICAgIGF4aW9tTGVtbWFUaGVvcmVtQ29uamVjdHVyZVN0cmluZyA9IHJlZmVyZW5jZS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IHdpdGggdGhlICcke2F4aW9tTGVtbWFUaGVvcmVtQ29uamVjdHVyZVN0cmluZ30nIGF4aW9tLCBsZW1tYSwgdGhlb3JlbSBvciBjb25qZWN0dXJlLi4uYCk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnQgPSBxdWFsaWZpZWRTdGF0ZW1lbnQuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgcHJvb2ZTdGVwcyA9IGNvbnRleHQuZ2V0UHJvb2ZTdGVwcygpLFxuICAgICAgICAgIHN0YXRlbWVudEFuZFByb29mU3RlcHNVbmlmaWVkID0gYXhpb21MZW1tYVRoZW9yZW1Db25qZWN0dXJlLnVuaWZ5U3RhdGVtZW50QW5kUHJvb2ZTdGVwcyhzdGF0ZW1lbnQsIHByb29mU3RlcHMsIGNvbnRleHQpO1xuXG4gICAgaWYgKHN0YXRlbWVudEFuZFByb29mU3RlcHNVbmlmaWVkKSB7XG4gICAgICBjb25zdCBtZXRhdmFyaWFibGUgPSByZWZlcmVuY2UuZ2V0TWV0YXZhcmlhYmxlKCksXG4gICAgICAgICAgICBzdGF0ZW1lbnRTdWJzdGl0dXRpb24gPSBTdGF0ZW1lbnRTdWJzdGl0dXRpb24uZnJvbVN0YXRlbWVudEFuZE1ldGF2YXJpYWJsZShzdGF0ZW1lbnQsIG1ldGF2YXJpYWJsZSwgY29udGV4dCksXG4gICAgICAgICAgICBzdWJzdGl0dXRpb24gPSBzdGF0ZW1lbnRTdWJzdGl0dXRpb247IC8vL1xuXG4gICAgICBzdWJzdGl0dXRpb25zLmFkZFN1YnN0aXR1dGlvbihzdWJzdGl0dXRpb24sIGNvbnRleHQpO1xuXG4gICAgICB1bmlmaWVkV2l0aEF4aW9tTGVtbWFUaGVvcmVtT3JDb25qZWN0dXJlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodW5pZmllZFdpdGhBeGlvbUxlbW1hVGhlb3JlbU9yQ29uamVjdHVyZSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtheGlvbUxlbW1hVGhlb3JlbUNvbmplY3R1cmVTdHJpbmd9JyBheGlvbSwgbGVtbWEsIHRoZW9yZW0gb3IgY29uamVjdHVyZS5gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5pZmllZFdpdGhBeGlvbUxlbW1hVGhlb3JlbU9yQ29uamVjdHVyZTtcbn1cblxuY29uc3QgdW5pZnlNaXhpbnMgPSBbXG4gIHVuaWZ5QVdpdGhSdWxlLFxuICB1bmlmeUFXaXRoUmVmZXJlbmNlLFxuICB1bmlmeUFXaXRoQXhpb21MZW1tYVRoZW9yZW1PckNvbmplY3R1cmVcbl07XG5cbmV4cG9ydCBkZWZhdWx0IHVuaWZ5TWl4aW5zO1xuXG4iXSwibmFtZXMiOlsidW5pZnlBV2l0aFJ1bGUiLCJxdWFsaWZpZWRTdGF0ZW1lbnQiLCJzdWJzdGl0dXRpb25zIiwiY29udGV4dCIsInVuaWZpZWRXaXRoUnVsZSIsInJlZmVyZW5jZSIsImdldFJlZmVyZW5jZSIsInJ1bGUiLCJmaW5kUnVsZUJ5UmVmZXJlbmNlIiwicnVsZVN0cmluZyIsImdldFN0cmluZyIsInF1YWxpZmllZFN0YXRlbWVudFN0cmluZyIsInRyaW0iLCJ0cmFjZSIsInN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsInByb29mU3RlcHMiLCJnZXRQcm9vZlN0ZXBzIiwic3RhdGVtZW50QW5kUHJvb2ZTdGVwc1VuaWZpZWQiLCJ1bmlmeVN0YXRlbWVudEFuZFByb29mU3RlcHMiLCJkZWJ1ZyIsInVuaWZ5QVdpdGhSZWZlcmVuY2UiLCJ1bmlmaWVkV2l0aFJlZmVyZW5jZSIsInN0YXRlbWVudFN0cmluZyIsInJlZmVyZW5jZVN0cmluZyIsIm1ldGF2YXJpYWJsZSIsImdldE1ldGF2YXJpYWJsZSIsInN0YXRlbWVudFN1YnN0aXR1dGlvbiIsIlN0YXRlbWVudFN1YnN0aXR1dGlvbiIsImZyb21TdGF0ZW1lbnRBbmRNZXRhdmFyaWFibGUiLCJzdWJzdGl0dXRpb24iLCJhZGRTdWJzdGl0dXRpb24iLCJ1bmlmeUFXaXRoQXhpb21MZW1tYVRoZW9yZW1PckNvbmplY3R1cmUiLCJ1bmlmaWVkV2l0aEF4aW9tTGVtbWFUaGVvcmVtT3JDb25qZWN0dXJlIiwiYXhpb20iLCJmaW5kQXhpb21CeVJlZmVyZW5jZSIsImxlbW1hIiwiZmluZExlbW1hQnlSZWZlcmVuY2UiLCJ0aGVvcmVtIiwiZmluZFRoZW9yZW1CeVJlZmVyZW5jZSIsImNvbmplY3R1cmUiLCJmaW5kQ29uamVjdHVyZUJ5UmVmZXJlbmNlIiwiYXhpb21MZW1tYVRoZW9yZW1Db25qZWN0dXJlIiwiYXhpb21MZW1tYVRoZW9yZW1Db25qZWN0dXJlU3RyaW5nIiwidW5pZnlNaXhpbnMiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQXFHQTs7O2VBQUE7OztnRUFuR2tDO3NCQUViOzs7Ozs7QUFFckIsU0FBU0EsZUFBZUMsa0JBQWtCLEVBQUVDLGFBQWEsRUFBRUMsT0FBTztJQUNoRSxJQUFJQyxrQkFBa0I7SUFFdEIsSUFBTUMsWUFBWUosbUJBQW1CSyxZQUFZLElBQzNDQyxPQUFPSixRQUFRSyxtQkFBbUIsQ0FBQ0g7SUFFekMsSUFBSUUsU0FBUyxNQUFNO1FBQ2pCLElBQU1FLGFBQWFGLEtBQUtHLFNBQVMsSUFDM0JDLDJCQUEyQkMsSUFBQUEsWUFBSSxFQUFDWCxtQkFBbUJTLFNBQVMsS0FBTSxHQUFHO1FBRTNFUCxRQUFRVSxLQUFLLENBQUMsQUFBQyxpQkFBMkVKLE9BQTNERSwwQkFBeUIsb0NBQTZDLE9BQVhGLFlBQVc7UUFFckcsSUFBTUssWUFBWWIsbUJBQW1CYyxZQUFZLElBQzNDQyxhQUFhYixRQUFRYyxhQUFhLElBQ2xDQyxnQ0FBZ0NYLEtBQUtZLDJCQUEyQixDQUFDTCxXQUFXRSxZQUFZYjtRQUU5RkMsa0JBQWtCYywrQkFBZ0MsR0FBRztRQUVyRCxJQUFJZCxpQkFBaUI7WUFDbkJELFFBQVFpQixLQUFLLENBQUMsQUFBQyxtQkFBNkVYLE9BQTNERSwwQkFBeUIsb0NBQTZDLE9BQVhGLFlBQVc7UUFDekc7SUFDRjtJQUVBLE9BQU9MO0FBQ1Q7QUFFQSxTQUFTaUIsb0JBQW9CcEIsa0JBQWtCLEVBQUVDLGFBQWEsRUFBRUMsT0FBTztJQUNyRSxJQUFJbUI7SUFFSixJQUFNUixZQUFZYixtQkFBbUJjLFlBQVksSUFDM0NWLFlBQVlKLG1CQUFtQkssWUFBWSxJQUMzQ2lCLGtCQUFrQlQsVUFBVUosU0FBUyxJQUNyQ2Msa0JBQWtCbkIsVUFBVUssU0FBUztJQUUzQ1AsUUFBUVUsS0FBSyxDQUFDLEFBQUMsaUJBQWtFVyxPQUFsREQsaUJBQWdCLG9DQUFrRCxPQUFoQkMsaUJBQWdCO0lBRWpHLElBQU1DLGVBQWVwQixVQUFVcUIsZUFBZSxJQUN4Q0Msd0JBQXdCQyxrQkFBcUIsQ0FBQ0MsNEJBQTRCLENBQUNmLFdBQVdXLGNBQWN0QixVQUNwRzJCLGVBQWVILHVCQUF1QixHQUFHO0lBRS9DekIsY0FBYzZCLGVBQWUsQ0FBQ0QsY0FBYzNCO0lBRTVDbUIsdUJBQXVCO0lBRXZCLElBQUlBLHNCQUFzQjtRQUN4Qm5CLFFBQVFpQixLQUFLLENBQUMsQUFBQyxtQkFBb0VJLE9BQWxERCxpQkFBZ0Isb0NBQWtELE9BQWhCQyxpQkFBZ0I7SUFDckc7SUFFQSxPQUFPRjtBQUNUO0FBRUEsU0FBU1Usd0NBQXdDL0Isa0JBQWtCLEVBQUVDLGFBQWEsRUFBRUMsT0FBTztJQUN6RixJQUFJOEIsMkNBQTJDO0lBRS9DLElBQU01QixZQUFZSixtQkFBbUJLLFlBQVksSUFDM0M0QixRQUFRL0IsUUFBUWdDLG9CQUFvQixDQUFDOUIsWUFDckMrQixRQUFRakMsUUFBUWtDLG9CQUFvQixDQUFDaEMsWUFDckNpQyxVQUFVbkMsUUFBUW9DLHNCQUFzQixDQUFDbEMsWUFDekNtQyxhQUFhckMsUUFBUXNDLHlCQUF5QixDQUFDcEMsWUFDL0NxQyw4QkFBK0JSLFNBQVNFLFNBQVNFLFdBQVdFO0lBRWxFLElBQUlFLGdDQUFnQyxNQUFNO1FBQ3hDLElBQU0vQiwyQkFBMkJDLElBQUFBLFlBQUksRUFBQ1gsbUJBQW1CUyxTQUFTLEtBQzVEaUMsb0NBQW9DdEMsVUFBVUssU0FBUztRQUU3RFAsUUFBUVUsS0FBSyxDQUFDLEFBQUMsaUJBQTJFOEIsT0FBM0RoQywwQkFBeUIsb0NBQW9FLE9BQWxDZ0MsbUNBQWtDO1FBRTVILElBQU03QixZQUFZYixtQkFBbUJjLFlBQVksSUFDM0NDLGFBQWFiLFFBQVFjLGFBQWEsSUFDbENDLGdDQUFnQ3dCLDRCQUE0QnZCLDJCQUEyQixDQUFDTCxXQUFXRSxZQUFZYjtRQUVySCxJQUFJZSwrQkFBK0I7WUFDakMsSUFBTU8sZUFBZXBCLFVBQVVxQixlQUFlLElBQ3hDQyx3QkFBd0JDLGtCQUFxQixDQUFDQyw0QkFBNEIsQ0FBQ2YsV0FBV1csY0FBY3RCLFVBQ3BHMkIsZUFBZUgsdUJBQXVCLEdBQUc7WUFFL0N6QixjQUFjNkIsZUFBZSxDQUFDRCxjQUFjM0I7WUFFNUM4QiwyQ0FBMkM7UUFDN0M7UUFFQSxJQUFJQSwwQ0FBMEM7WUFDNUM5QixRQUFRaUIsS0FBSyxDQUFDLEFBQUMsbUJBQTZFdUIsT0FBM0RoQywwQkFBeUIsb0NBQW9FLE9BQWxDZ0MsbUNBQWtDO1FBQ2hJO0lBQ0Y7SUFFQSxPQUFPVjtBQUNUO0FBRUEsSUFBTVcsY0FBYztJQUNsQjVDO0lBQ0FxQjtJQUNBVztDQUNEO0lBRUQsV0FBZVkifQ==
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "default", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return _default;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
var _bracketed = /*#__PURE__*/ _interop_require_default(require("../../combinator/bracketed"));
|
|
12
|
-
function _interop_require_default(obj) {
|
|
13
|
-
return obj && obj.__esModule ? obj : {
|
|
14
|
-
default: obj
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
function unifyWithBracketedCombinator(statement, assignments, stated, context) {
|
|
18
|
-
var unifiedWithBracketedCombinator;
|
|
19
|
-
var bracketedCombinator = _bracketed.default.fromNothing();
|
|
20
|
-
unifiedWithBracketedCombinator = bracketedCombinator.unifyStatement(statement, assignments, stated, context);
|
|
21
|
-
return unifiedWithBracketedCombinator;
|
|
22
|
-
}
|
|
23
|
-
function unifyWithCombinators(statement, assignments, stated, context) {
|
|
24
|
-
var unifiedWithCombinators;
|
|
25
|
-
var combinators = context.getCombinators();
|
|
26
|
-
stated = true; ///
|
|
27
|
-
assignments = null; ///
|
|
28
|
-
unifiedWithCombinators = combinators.some(function(combinator) {
|
|
29
|
-
var unifiedWithCombinator = combinator.unifyStatement(statement, assignments, stated, context);
|
|
30
|
-
if (unifiedWithCombinator) {
|
|
31
|
-
return true;
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
return unifiedWithCombinators;
|
|
35
|
-
}
|
|
36
|
-
var unifyMixins = [
|
|
37
|
-
unifyWithBracketedCombinator,
|
|
38
|
-
unifyWithCombinators
|
|
39
|
-
];
|
|
40
|
-
var _default = unifyMixins;
|
|
41
|
-
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9taXhpbnMvc3RhdGVtZW50L3VuaWZ5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgQnJhY2tldGVkQ29tYmluYXRvciBmcm9tIFwiLi4vLi4vY29tYmluYXRvci9icmFja2V0ZWRcIjtcblxuZnVuY3Rpb24gdW5pZnlXaXRoQnJhY2tldGVkQ29tYmluYXRvcihzdGF0ZW1lbnQsIGFzc2lnbm1lbnRzLCBzdGF0ZWQsIGNvbnRleHQpIHtcbiAgbGV0IHVuaWZpZWRXaXRoQnJhY2tldGVkQ29tYmluYXRvcjtcblxuICBjb25zdCBicmFja2V0ZWRDb21iaW5hdG9yID0gQnJhY2tldGVkQ29tYmluYXRvci5mcm9tTm90aGluZygpO1xuXG4gIHVuaWZpZWRXaXRoQnJhY2tldGVkQ29tYmluYXRvciA9IGJyYWNrZXRlZENvbWJpbmF0b3IudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBhc3NpZ25tZW50cywgc3RhdGVkLCBjb250ZXh0KTtcblxuICByZXR1cm4gdW5pZmllZFdpdGhCcmFja2V0ZWRDb21iaW5hdG9yO1xufVxuXG5mdW5jdGlvbiB1bmlmeVdpdGhDb21iaW5hdG9ycyhzdGF0ZW1lbnQsIGFzc2lnbm1lbnRzLCBzdGF0ZWQsIGNvbnRleHQpIHtcbiAgbGV0IHVuaWZpZWRXaXRoQ29tYmluYXRvcnM7XG5cbiAgY29uc3QgY29tYmluYXRvcnMgPSBjb250ZXh0LmdldENvbWJpbmF0b3JzKCk7XG5cbiAgc3RhdGVkID0gdHJ1ZTsgIC8vL1xuXG4gIGFzc2lnbm1lbnRzID0gbnVsbDsgLy8vXG5cbiAgdW5pZmllZFdpdGhDb21iaW5hdG9ycyA9IGNvbWJpbmF0b3JzLnNvbWUoKGNvbWJpbmF0b3IpID0+IHtcbiAgICBjb25zdCB1bmlmaWVkV2l0aENvbWJpbmF0b3IgPSBjb21iaW5hdG9yLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCk7XG5cbiAgICBpZiAodW5pZmllZFdpdGhDb21iaW5hdG9yKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB1bmlmaWVkV2l0aENvbWJpbmF0b3JzO1xufVxuXG5cbmNvbnN0IHVuaWZ5TWl4aW5zID0gW1xuICB1bmlmeVdpdGhCcmFja2V0ZWRDb21iaW5hdG9yLFxuICB1bmlmeVdpdGhDb21iaW5hdG9yc1xuXTtcblxuZXhwb3J0IGRlZmF1bHQgdW5pZnlNaXhpbnM7XG4iXSwibmFtZXMiOlsidW5pZnlXaXRoQnJhY2tldGVkQ29tYmluYXRvciIsInN0YXRlbWVudCIsImFzc2lnbm1lbnRzIiwic3RhdGVkIiwiY29udGV4dCIsInVuaWZpZWRXaXRoQnJhY2tldGVkQ29tYmluYXRvciIsImJyYWNrZXRlZENvbWJpbmF0b3IiLCJCcmFja2V0ZWRDb21iaW5hdG9yIiwiZnJvbU5vdGhpbmciLCJ1bmlmeVN0YXRlbWVudCIsInVuaWZ5V2l0aENvbWJpbmF0b3JzIiwidW5pZmllZFdpdGhDb21iaW5hdG9ycyIsImNvbWJpbmF0b3JzIiwiZ2V0Q29tYmluYXRvcnMiLCJzb21lIiwiY29tYmluYXRvciIsInVuaWZpZWRXaXRoQ29tYmluYXRvciIsInVuaWZ5TWl4aW5zIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkF3Q0E7OztlQUFBOzs7Z0VBdENnQzs7Ozs7O0FBRWhDLFNBQVNBLDZCQUE2QkMsU0FBUyxFQUFFQyxXQUFXLEVBQUVDLE1BQU0sRUFBRUMsT0FBTztJQUMzRSxJQUFJQztJQUVKLElBQU1DLHNCQUFzQkMsa0JBQW1CLENBQUNDLFdBQVc7SUFFM0RILGlDQUFpQ0Msb0JBQW9CRyxjQUFjLENBQUNSLFdBQVdDLGFBQWFDLFFBQVFDO0lBRXBHLE9BQU9DO0FBQ1Q7QUFFQSxTQUFTSyxxQkFBcUJULFNBQVMsRUFBRUMsV0FBVyxFQUFFQyxNQUFNLEVBQUVDLE9BQU87SUFDbkUsSUFBSU87SUFFSixJQUFNQyxjQUFjUixRQUFRUyxjQUFjO0lBRTFDVixTQUFTLE1BQU8sR0FBRztJQUVuQkQsY0FBYyxNQUFNLEdBQUc7SUFFdkJTLHlCQUF5QkMsWUFBWUUsSUFBSSxDQUFDLFNBQUNDO1FBQ3pDLElBQU1DLHdCQUF3QkQsV0FBV04sY0FBYyxDQUFDUixXQUFXQyxhQUFhQyxRQUFRQztRQUV4RixJQUFJWSx1QkFBdUI7WUFDekIsT0FBTztRQUNUO0lBQ0Y7SUFFQSxPQUFPTDtBQUNUO0FBR0EsSUFBTU0sY0FBYztJQUNsQmpCO0lBQ0FVO0NBQ0Q7SUFFRCxXQUFlTyJ9
|