occam-verify-cli 0.0.924 → 0.0.925
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/mixins/nodesVerifier/metaLevel.js +2 -2
- package/lib/premise.js +6 -6
- package/lib/verifier/nodes/intrinsicLevel.js +3 -3
- package/lib/verifier/nodes/intrinsicLevelAgainstMetaLevel.js +3 -3
- package/lib/verifier/nodes/metaLevel.js +16 -16
- package/lib/verify/assertion/contained.js +91 -0
- package/lib/verify/assertion/defined.js +114 -0
- package/lib/verify/assertion/subproof.js +65 -0
- package/lib/verify/assertion/type.js +112 -0
- package/lib/verify/declaration.js +2 -5
- package/lib/verify/equality.js +3 -3
- package/lib/verify/metastatement.js +1 -2
- package/lib/verify/statement/qualified.js +2 -5
- package/lib/verify/statement.js +30 -14
- package/package.json +2 -2
- package/src/mixins/nodesVerifier/metaLevel.js +1 -1
- package/src/premise.js +6 -6
- package/src/verifier/nodes/intrinsicLevel.js +2 -2
- package/src/verifier/nodes/intrinsicLevelAgainstMetaLevel.js +3 -3
- package/src/verifier/nodes/metaLevel.js +18 -19
- package/src/verify/{containedAssertion.js → assertion/contained.js} +3 -3
- package/src/verify/{definedAssertion.js → assertion/defined.js} +5 -6
- package/src/verify/assertion/subproof.js +77 -0
- package/src/verify/{typeAssertion.js → assertion/type.js} +15 -15
- package/src/verify/declaration.js +1 -5
- package/src/verify/equality.js +2 -2
- package/src/verify/metastatement.js +0 -1
- package/src/verify/statement/qualified.js +1 -5
- package/src/verify/statement.js +36 -9
- package/lib/verify/containedAssertion.js +0 -91
- package/lib/verify/definedAssertion.js +0 -115
- package/lib/verify/typeAssertion.js +0 -112
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { nodesQuery } from "../../utilities/query";
|
|
4
|
+
import { STATEMENT_META_TYPE_NAME } from "../../metaTypeNames";
|
|
5
|
+
|
|
6
|
+
const metavariableNodesQuery = nodesQuery("/subproofAssertion/statement/metavariable!");
|
|
7
|
+
|
|
8
|
+
export default function verifySubproofAssertion(subproofAssertionNode, assignments, derived, localContext) {
|
|
9
|
+
let subproofAssertionVerified;
|
|
10
|
+
|
|
11
|
+
const subproofAssertionString = localContext.nodeAsString(subproofAssertionNode);
|
|
12
|
+
|
|
13
|
+
localContext.trace(`Verifying the '${subproofAssertionString}' subproof assertion...`, subproofAssertionNode);
|
|
14
|
+
|
|
15
|
+
const verifySubproofAssertionFunctions = [
|
|
16
|
+
verifyDerivedSubproofAssertion,
|
|
17
|
+
verifyStatedSubproofAssertion
|
|
18
|
+
];
|
|
19
|
+
|
|
20
|
+
subproofAssertionVerified = verifySubproofAssertionFunctions.some((verifySubproofAssertionFunction) => {
|
|
21
|
+
const subproofAssertionVerified = verifySubproofAssertionFunction(subproofAssertionNode, assignments, derived, localContext);
|
|
22
|
+
|
|
23
|
+
if (subproofAssertionVerified) {
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
if (subproofAssertionVerified) {
|
|
29
|
+
localContext.debug(`...verified the '${subproofAssertionString}' subproof assertion.`, subproofAssertionNode);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return subproofAssertionVerified;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function verifyDerivedSubproofAssertion(subproofAssertionNode, assignments, derived, localContext) {
|
|
36
|
+
let derivedSubproofAssertionVerified = false;
|
|
37
|
+
|
|
38
|
+
if (derived) {
|
|
39
|
+
const subproofAssertionString = localContext.nodeAsString(subproofAssertionNode);
|
|
40
|
+
|
|
41
|
+
if (derivedSubproofAssertionVerified) {
|
|
42
|
+
localContext.debug(`The '${subproofAssertionString}' derived subproof assertion cannot be verified.`, subproofAssertionNode);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return derivedSubproofAssertionVerified;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function verifyStatedSubproofAssertion(subproofAssertionNode, assignments, derived, localContext) {
|
|
50
|
+
let statedSubproofAssertionVerified = false;
|
|
51
|
+
|
|
52
|
+
if (!derived) {
|
|
53
|
+
const subproofAssertionString = localContext.nodeAsString(subproofAssertionNode);
|
|
54
|
+
|
|
55
|
+
localContext.trace(`Verifying the '${subproofAssertionString}' stated subproof assertion...`, subproofAssertionNode);
|
|
56
|
+
|
|
57
|
+
const metavariableNodes = metavariableNodesQuery(subproofAssertionNode);
|
|
58
|
+
|
|
59
|
+
statedSubproofAssertionVerified = metavariableNodes.every((metavariableNode) => {
|
|
60
|
+
const metavariable = localContext.findMetavariableByMetavariableNode(metavariableNode);
|
|
61
|
+
|
|
62
|
+
if (metavariable !== null) {
|
|
63
|
+
const metaTypeName = metavariable.getMetaTypeName();
|
|
64
|
+
|
|
65
|
+
if (metaTypeName === STATEMENT_META_TYPE_NAME) {
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
if (statedSubproofAssertionVerified) {
|
|
72
|
+
localContext.debug(`...verified the '${subproofAssertionString}' stated subproof assertion.`, subproofAssertionNode);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return statedSubproofAssertionVerified;
|
|
77
|
+
}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import Variable from "
|
|
4
|
-
import verifyTerm from "
|
|
5
|
-
import VariableAssignment from "
|
|
3
|
+
import Variable from "../../variable";
|
|
4
|
+
import verifyTerm from "../../verify/term";
|
|
5
|
+
import VariableAssignment from "../../assignment/variable";
|
|
6
6
|
|
|
7
|
-
import { first } from "
|
|
8
|
-
import { nodeQuery } from "
|
|
7
|
+
import { first } from "../../utilities/array";
|
|
8
|
+
import { nodeQuery } from "../../utilities/query";
|
|
9
9
|
|
|
10
10
|
const termNodeQuery = nodeQuery("/typeAssertion/term!"),
|
|
11
11
|
typeNodeQuery = nodeQuery("/typeAssertion/type!"),
|
|
12
12
|
variableNodeQuery = nodeQuery("/term/variable!");
|
|
13
13
|
|
|
14
|
-
export default function verifyTypeAssertion(typeAssertionNode, assignments, derived, localContext
|
|
14
|
+
export default function verifyTypeAssertion(typeAssertionNode, assignments, derived, localContext) {
|
|
15
15
|
let typeAssertionVerified;
|
|
16
16
|
|
|
17
17
|
const typeAssertionString = localContext.nodeAsString(typeAssertionNode);
|
|
@@ -24,7 +24,7 @@ export default function verifyTypeAssertion(typeAssertionNode, assignments, deri
|
|
|
24
24
|
];
|
|
25
25
|
|
|
26
26
|
typeAssertionVerified = verifyTypeAssertionFunctions.some((verifyTypeAssertionFunction) => {
|
|
27
|
-
const typeAssertionVerified = verifyTypeAssertionFunction(typeAssertionNode, assignments, derived, localContext
|
|
27
|
+
const typeAssertionVerified = verifyTypeAssertionFunction(typeAssertionNode, assignments, derived, localContext);
|
|
28
28
|
|
|
29
29
|
if (typeAssertionVerified) {
|
|
30
30
|
return true;
|
|
@@ -38,7 +38,7 @@ export default function verifyTypeAssertion(typeAssertionNode, assignments, deri
|
|
|
38
38
|
return typeAssertionVerified;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
function verifyDerivedTypeAssertion(typeAssertionNode, assignments, derived, localContext
|
|
41
|
+
function verifyDerivedTypeAssertion(typeAssertionNode, assignments, derived, localContext) {
|
|
42
42
|
let derivedTypeAssertionVerified = false;
|
|
43
43
|
|
|
44
44
|
if (derived) {
|
|
@@ -64,7 +64,7 @@ function verifyDerivedTypeAssertion(typeAssertionNode, assignments, derived, loc
|
|
|
64
64
|
const variableNode = variableNodeQuery(termNode);
|
|
65
65
|
|
|
66
66
|
if (variableNode === null) {
|
|
67
|
-
verifiedAhead =
|
|
67
|
+
verifiedAhead = true;
|
|
68
68
|
} else {
|
|
69
69
|
let variable = localContext.findVariableByVariableNode(variableNode);
|
|
70
70
|
|
|
@@ -75,7 +75,7 @@ function verifyDerivedTypeAssertion(typeAssertionNode, assignments, derived, loc
|
|
|
75
75
|
|
|
76
76
|
assignments.push(assignment);
|
|
77
77
|
|
|
78
|
-
verifiedAhead =
|
|
78
|
+
verifiedAhead = true;
|
|
79
79
|
|
|
80
80
|
if (!verifiedAhead) {
|
|
81
81
|
assignments.pop();
|
|
@@ -90,14 +90,14 @@ function verifyDerivedTypeAssertion(typeAssertionNode, assignments, derived, loc
|
|
|
90
90
|
derivedTypeAssertionVerified = termVerified; ///
|
|
91
91
|
|
|
92
92
|
if (derivedTypeAssertionVerified) {
|
|
93
|
-
localContext.
|
|
93
|
+
localContext.debug(`...verified the '${typeAssertionString}' derived type assertion.`, typeAssertionNode);
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
96
|
|
|
97
97
|
return derivedTypeAssertionVerified;
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
-
function verifyStatedTypeAssertion(typeAssertionNode, assignments, derived, localContext
|
|
100
|
+
function verifyStatedTypeAssertion(typeAssertionNode, assignments, derived, localContext) {
|
|
101
101
|
let statedTypeAssertionVerified = false;
|
|
102
102
|
|
|
103
103
|
if (!derived) {
|
|
@@ -123,7 +123,7 @@ function verifyStatedTypeAssertion(typeAssertionNode, assignments, derived, loca
|
|
|
123
123
|
const variableNode = variableNodeQuery(termNode);
|
|
124
124
|
|
|
125
125
|
if (variableNode === null) {
|
|
126
|
-
verifiedAhead =
|
|
126
|
+
verifiedAhead = true;
|
|
127
127
|
} else {
|
|
128
128
|
let variable = localContext.findVariableByVariableNode(variableNode);
|
|
129
129
|
|
|
@@ -134,7 +134,7 @@ function verifyStatedTypeAssertion(typeAssertionNode, assignments, derived, loca
|
|
|
134
134
|
|
|
135
135
|
assignments.push(assignment);
|
|
136
136
|
|
|
137
|
-
verifiedAhead =
|
|
137
|
+
verifiedAhead = true;
|
|
138
138
|
|
|
139
139
|
if (!verifiedAhead) {
|
|
140
140
|
assignments.pop();
|
|
@@ -149,7 +149,7 @@ function verifyStatedTypeAssertion(typeAssertionNode, assignments, derived, loca
|
|
|
149
149
|
statedTypeAssertionVerified = termVerified; ///
|
|
150
150
|
|
|
151
151
|
if (statedTypeAssertionVerified) {
|
|
152
|
-
localContext.
|
|
152
|
+
localContext.debug(`...verified the '${typeAssertionString}' stated type assertion.`, typeAssertionNode);
|
|
153
153
|
}
|
|
154
154
|
}
|
|
155
155
|
|
|
@@ -26,11 +26,7 @@ export default function verifyDeclaration(declarationNode, declarations, localCo
|
|
|
26
26
|
const { verifyStatement } = metaLevelNodeVerifier,
|
|
27
27
|
derived = false,
|
|
28
28
|
assignments = [],
|
|
29
|
-
statementVerified = verifyStatement(statementNode, assignments, derived, localContext
|
|
30
|
-
const verifiedAhead = true;
|
|
31
|
-
|
|
32
|
-
return verifiedAhead;
|
|
33
|
-
});
|
|
29
|
+
statementVerified = verifyStatement(statementNode, assignments, derived, localContext);
|
|
34
30
|
|
|
35
31
|
if (statementVerified) {
|
|
36
32
|
const metavariableNode = metavariableNodeQuery(referenceNode),
|
package/src/verify/equality.js
CHANGED
|
@@ -84,7 +84,7 @@ function verifyDerivedEquality(equalityNode, assignments, derived, localContext,
|
|
|
84
84
|
derivedEqualityVerified = termsVerified; ///
|
|
85
85
|
|
|
86
86
|
if (derivedEqualityVerified) {
|
|
87
|
-
localContext.
|
|
87
|
+
localContext.debug(`...verified the '${equalityString}' derived equality.`, equalityNode);
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
90
|
|
|
@@ -134,7 +134,7 @@ function verifyStatedEquality(equalityNode, assignments, derived, localContext,
|
|
|
134
134
|
statedEqualityVerified = termsVerified; ///
|
|
135
135
|
|
|
136
136
|
if (statedEqualityVerified) {
|
|
137
|
-
localContext.
|
|
137
|
+
localContext.debug(`...verified the '${equalityString}' stated equality.`, equalityNode);
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
140
|
|
|
@@ -184,11 +184,7 @@ function verifyQualifiedStatementAAgainstReference(qualifiedStatementNode, subst
|
|
|
184
184
|
|
|
185
185
|
if (metavariablePresent) {
|
|
186
186
|
const statementNode = statementNodeQuery(qualifiedStatementNode),
|
|
187
|
-
metavariableVerifiedAgainstStatement = verifyMetavariableAgainstStatement(
|
|
188
|
-
const verifiedAhead = true;
|
|
189
|
-
|
|
190
|
-
return verifiedAhead;
|
|
191
|
-
});
|
|
187
|
+
metavariableVerifiedAgainstStatement = verifyMetavariableAgainstStatement(metavariableNodeA, statementNodeB, substitutionNode, substitutions, localContextA, localContextB, verifyAhead);
|
|
192
188
|
|
|
193
189
|
qualifiedStatementVerifiedAgainstReference = metavariableVerifiedAgainstStatement; ///
|
|
194
190
|
}
|
package/src/verify/statement.js
CHANGED
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
import verifyEquality from "../verify/equality";
|
|
4
4
|
import verifyJudgement from "../verify/judgement";
|
|
5
|
-
import verifyTypeAssertion from "../verify/
|
|
6
|
-
import verifyDefinedAssertion from "
|
|
7
|
-
import
|
|
5
|
+
import verifyTypeAssertion from "../verify/assertion/type";
|
|
6
|
+
import verifyDefinedAssertion from "../verify/assertion/defined";
|
|
7
|
+
import verifySubproofAssertion from "../verify/assertion/subproof";
|
|
8
|
+
import verifyContainedAssertion from "../verify/assertion/contained";
|
|
8
9
|
import statementAgainstCombinatorNodesVerifier from "../verifier/nodes/statementAgainstCombinator";
|
|
9
10
|
|
|
10
11
|
import { nodeQuery } from "../utilities/query";
|
|
@@ -15,6 +16,7 @@ const equalityNodeQuery = nodeQuery("/statement/equality!"),
|
|
|
15
16
|
metavariableNodeQuery = nodeQuery("/statement/metavariable!"),
|
|
16
17
|
typeAssertionNodeQuery = nodeQuery("/statement/typeAssertion!"),
|
|
17
18
|
definedAssertionNodeQuery = nodeQuery("/statement/definedAssertion!"),
|
|
19
|
+
subproofAssertionNodeQuery = nodeQuery("/statement/subproofAssertion!"),
|
|
18
20
|
containedAssertionNodeQuery = nodeQuery("/statement/containedAssertion!");
|
|
19
21
|
|
|
20
22
|
function verifyStatement(statementNode, assignments, derived, localContext) {
|
|
@@ -30,6 +32,7 @@ function verifyStatement(statementNode, assignments, derived, localContext) {
|
|
|
30
32
|
verifyStatementAsJudgement,
|
|
31
33
|
verifyStatementAsTypeAssertion,
|
|
32
34
|
verifyStatementAsDefinedAssertion,
|
|
35
|
+
verifyStatementAsSubproofAssertion,
|
|
33
36
|
verifyStatementAsContainedAssertion,
|
|
34
37
|
verifyStatementAgainstCombinators
|
|
35
38
|
];
|
|
@@ -58,7 +61,7 @@ export function verifyStandaloneStatement(statementNode, localContext, verifyAhe
|
|
|
58
61
|
|
|
59
62
|
const derived = false,
|
|
60
63
|
assignments = [],
|
|
61
|
-
statementVerified = verifyStatement(statementNode, assignments, derived);
|
|
64
|
+
statementVerified = verifyStatement(statementNode, assignments, derived, localContext);
|
|
62
65
|
|
|
63
66
|
if (statementVerified) {
|
|
64
67
|
const verifiedAhead = verifyAhead();
|
|
@@ -115,11 +118,7 @@ export function verifyStatementAsTypeAssertion(statementNode, assignments, deriv
|
|
|
115
118
|
|
|
116
119
|
localContext.trace(`Verifying the '${statementString}' statement as a type assertion...`, statementNode);
|
|
117
120
|
|
|
118
|
-
const typeAssertionVerified = verifyTypeAssertion(typeAssertionNode, assignments, derived, localContext
|
|
119
|
-
const verifiedAhead = true;
|
|
120
|
-
|
|
121
|
-
return verifiedAhead;
|
|
122
|
-
});
|
|
121
|
+
const typeAssertionVerified = verifyTypeAssertion(typeAssertionNode, assignments, derived, localContext);
|
|
123
122
|
|
|
124
123
|
statementVerifiedAsTypeAssertion = typeAssertionVerified; ///
|
|
125
124
|
|
|
@@ -207,6 +206,32 @@ function verifyStatementAsDefinedAssertion(statementNode, assignments, derived,
|
|
|
207
206
|
return statementVerifiedAsDefinedAssertion;
|
|
208
207
|
}
|
|
209
208
|
|
|
209
|
+
function verifyStatementAsSubproofAssertion(statementNode, assignments, derived, localContext) {
|
|
210
|
+
let statementVerifiedAsSubproofAssertion = false;
|
|
211
|
+
|
|
212
|
+
const subproofAssertionNode = subproofAssertionNodeQuery(statementNode);
|
|
213
|
+
|
|
214
|
+
if (subproofAssertionNode !== null) {
|
|
215
|
+
const statementString = localContext.nodeAsString(statementNode);
|
|
216
|
+
|
|
217
|
+
localContext.trace(`Verifying the '${statementString}' statement as a subproof assertion...`, statementNode);
|
|
218
|
+
|
|
219
|
+
const subproofAssertionVerified = verifySubproofAssertion(subproofAssertionNode, assignments, derived, localContext, () => {
|
|
220
|
+
const verifiedAhead = true;
|
|
221
|
+
|
|
222
|
+
return verifiedAhead;
|
|
223
|
+
});
|
|
224
|
+
|
|
225
|
+
statementVerifiedAsSubproofAssertion = subproofAssertionVerified; ///
|
|
226
|
+
|
|
227
|
+
if (statementVerifiedAsSubproofAssertion) {
|
|
228
|
+
localContext.debug(`...verified the '${statementString}' statement as a defined assertion.`, statementNode);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
return statementVerifiedAsSubproofAssertion;
|
|
233
|
+
}
|
|
234
|
+
|
|
210
235
|
function verifyStatementAsContainedAssertion(statementNode, assignments, derived, localContext) {
|
|
211
236
|
let statementVerifiedAsContainedAssertion = false;
|
|
212
237
|
|
|
@@ -241,6 +266,7 @@ function verifyStatementAgainstCombinators(statementNode, assignments, derived,
|
|
|
241
266
|
metavariableNode = metavariableNodeQuery(statementNode),
|
|
242
267
|
typeAssertionNode = typeAssertionNodeQuery(statementNode),
|
|
243
268
|
definedAssertionNode = definedAssertionNodeQuery(statementNode),
|
|
269
|
+
subproofAssertionNode = subproofAssertionNodeQuery(statementNode),
|
|
244
270
|
containedAssertionNode = containedAssertionNodeQuery(statementNode);
|
|
245
271
|
|
|
246
272
|
if ( (equalityNode === null) &&
|
|
@@ -248,6 +274,7 @@ function verifyStatementAgainstCombinators(statementNode, assignments, derived,
|
|
|
248
274
|
(metavariableNode === null) &&
|
|
249
275
|
(typeAssertionNode === null) &&
|
|
250
276
|
(definedAssertionNode === null) &&
|
|
277
|
+
(subproofAssertionNode === null) &&
|
|
251
278
|
(containedAssertionNode === null) ) {
|
|
252
279
|
|
|
253
280
|
const combinators = localContext.getCombinators();
|
|
@@ -1,91 +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 verifyContainedAssertion;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
var _metaLevel = /*#__PURE__*/ _interop_require_default(require("../verifier/node/metaLevel"));
|
|
12
|
-
var _verify = require("../utilities/verify");
|
|
13
|
-
var _query = require("../utilities/query");
|
|
14
|
-
function _interop_require_default(obj) {
|
|
15
|
-
return obj && obj.__esModule ? obj : {
|
|
16
|
-
default: obj
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
var termNodeQuery = (0, _query.nodeQuery)("/statement/term!"), statementTermNodesQuery = (0, _query.nodesQuery)("/statement/metaArgument/statement//term");
|
|
20
|
-
function verifyContainedAssertion(containedAssertionNode, assignments, derived, localContext) {
|
|
21
|
-
var statementVerifiedAsContainedAssertion;
|
|
22
|
-
var statementContainedAssertion = isStatementContainedAssertion(containedAssertionNode);
|
|
23
|
-
if (statementContainedAssertion) {
|
|
24
|
-
var containedAssertionString = localContext.nodeAsString(containedAssertionNode);
|
|
25
|
-
localContext.trace("Verifying the '".concat(containedAssertionString, "' statement as a contained assertion..."), containedAssertionNode);
|
|
26
|
-
var statementFunctions = [
|
|
27
|
-
verifyStatementAsDerivedContainedAssertion,
|
|
28
|
-
verifyStatementAsStatedContainedAssertion
|
|
29
|
-
];
|
|
30
|
-
statementVerifiedAsContainedAssertion = statementFunctions.some(function(statementFunction) {
|
|
31
|
-
var statementVerifiedAsContainedAssertion = statementFunction(containedAssertionNode, assignments, derived, localContext);
|
|
32
|
-
if (statementVerifiedAsContainedAssertion) {
|
|
33
|
-
return true;
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
if (statementVerifiedAsContainedAssertion) {
|
|
37
|
-
localContext.debug("...verified the '".concat(containedAssertionString, "' statement as a contained assertion."), containedAssertionNode);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
return statementVerifiedAsContainedAssertion;
|
|
41
|
-
}
|
|
42
|
-
function verifyStatementAsDerivedContainedAssertion(containedAssertionNode, assignments, derived, localContext) {
|
|
43
|
-
var statementVerifiedAsDefinedContainedAssertion = false;
|
|
44
|
-
if (derived) {
|
|
45
|
-
var containedAssertionString = localContext.nodeAsString(containedAssertionNode);
|
|
46
|
-
localContext.trace("Verifying the '".concat(containedAssertionString, "' derived statement as a contained assertion..."), containedAssertionNode);
|
|
47
|
-
var statementNegated = (0, _verify.isStatementNegated)(containedAssertionNode), termNode = termNodeQuery(containedAssertionNode), negated = statementNegated, statementTermNodes = statementTermNodesQuery(containedAssertionNode), termNodeMatchesMetaArgumentVariableNode = statementTermNodes.some(function(statementTermNode) {
|
|
48
|
-
var termNodeMatchesMetaArgumentVariableNode = termNode.match(statementTermNode);
|
|
49
|
-
if (termNodeMatchesMetaArgumentVariableNode) {
|
|
50
|
-
return true;
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
if (!negated) {
|
|
54
|
-
if (termNodeMatchesMetaArgumentVariableNode) {
|
|
55
|
-
statementVerifiedAsDefinedContainedAssertion = true;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
if (negated) {
|
|
59
|
-
if (!termNodeMatchesMetaArgumentVariableNode) {
|
|
60
|
-
statementVerifiedAsDefinedContainedAssertion = true;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
if (statementVerifiedAsDefinedContainedAssertion) {
|
|
64
|
-
localContext.debug("...verified the '".concat(containedAssertionString, "' derived statement as a contained assertion."), containedAssertionNode);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
return statementVerifiedAsDefinedContainedAssertion;
|
|
68
|
-
}
|
|
69
|
-
function verifyStatementAsStatedContainedAssertion(containedAssertionNode, assignments, derived, localContext) {
|
|
70
|
-
var statementVerifiedAsStatedContainedAssertion = false;
|
|
71
|
-
if (!derived) {
|
|
72
|
-
var containedAssertionString = localContext.nodeAsString(containedAssertionNode);
|
|
73
|
-
localContext.trace("Verifying the '".concat(containedAssertionString, "' stated statement as a contained assertion..."), containedAssertionNode);
|
|
74
|
-
var intrinsicLevel = localContext.isIntrinsicLevel();
|
|
75
|
-
if (intrinsicLevel) {
|
|
76
|
-
localContext.debug("The '".concat(containedAssertionString, "' stated statement as a contained assertion cannot be verified at intrinsic level."), containedAssertionNode);
|
|
77
|
-
} else {
|
|
78
|
-
var nonTerminalNode = containedAssertionNode, nonTerminalNodeVerified = _metaLevel.default.verifyNonTerminalNode(nonTerminalNode, localContext, function() {
|
|
79
|
-
var verifiedAhead = true;
|
|
80
|
-
return verifiedAhead;
|
|
81
|
-
});
|
|
82
|
-
statementVerifiedAsStatedContainedAssertion = nonTerminalNodeVerified; ///
|
|
83
|
-
}
|
|
84
|
-
if (statementVerifiedAsStatedContainedAssertion) {
|
|
85
|
-
localContext.debug("...verified the '".concat(containedAssertionString, "' stated statement as a contained assertion."), containedAssertionNode);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
return statementVerifiedAsStatedContainedAssertion;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvY29udGFpbmVkQXNzZXJ0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgbWV0YUxldmVsTm9kZVZlcmlmaWVyIGZyb20gXCIuLi92ZXJpZmllci9ub2RlL21ldGFMZXZlbFwiO1xuXG5pbXBvcnQgeyBpc1N0YXRlbWVudE5lZ2F0ZWQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3ZlcmlmeVwiO1xuaW1wb3J0IHsgbm9kZVF1ZXJ5LCBub2Rlc1F1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCB0ZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3N0YXRlbWVudC90ZXJtIVwiKSxcbiAgICAgIHN0YXRlbWVudFRlcm1Ob2Rlc1F1ZXJ5ID0gbm9kZXNRdWVyeShcIi9zdGF0ZW1lbnQvbWV0YUFyZ3VtZW50L3N0YXRlbWVudC8vdGVybVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5Q29udGFpbmVkQXNzZXJ0aW9uKGNvbnRhaW5lZEFzc2VydGlvbk5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IHN0YXRlbWVudFZlcmlmaWVkQXNDb250YWluZWRBc3NlcnRpb247XG5cbiAgY29uc3Qgc3RhdGVtZW50Q29udGFpbmVkQXNzZXJ0aW9uID0gaXNTdGF0ZW1lbnRDb250YWluZWRBc3NlcnRpb24oY29udGFpbmVkQXNzZXJ0aW9uTm9kZSk7XG5cbiAgaWYgKHN0YXRlbWVudENvbnRhaW5lZEFzc2VydGlvbikge1xuICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcoY29udGFpbmVkQXNzZXJ0aW9uTm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgc3RhdGVtZW50IGFzIGEgY29udGFpbmVkIGFzc2VydGlvbi4uLmAsIGNvbnRhaW5lZEFzc2VydGlvbk5vZGUpO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50RnVuY3Rpb25zID0gW1xuICAgICAgdmVyaWZ5U3RhdGVtZW50QXNEZXJpdmVkQ29udGFpbmVkQXNzZXJ0aW9uLFxuICAgICAgdmVyaWZ5U3RhdGVtZW50QXNTdGF0ZWRDb250YWluZWRBc3NlcnRpb25cbiAgICBdO1xuXG4gICAgc3RhdGVtZW50VmVyaWZpZWRBc0NvbnRhaW5lZEFzc2VydGlvbiA9IHN0YXRlbWVudEZ1bmN0aW9ucy5zb21lKChzdGF0ZW1lbnRGdW5jdGlvbikgPT4ge1xuICAgICAgY29uc3Qgc3RhdGVtZW50VmVyaWZpZWRBc0NvbnRhaW5lZEFzc2VydGlvbiA9IHN0YXRlbWVudEZ1bmN0aW9uKGNvbnRhaW5lZEFzc2VydGlvbk5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQpO1xuXG4gICAgICBpZiAoc3RhdGVtZW50VmVyaWZpZWRBc0NvbnRhaW5lZEFzc2VydGlvbikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChzdGF0ZW1lbnRWZXJpZmllZEFzQ29udGFpbmVkQXNzZXJ0aW9uKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBjb250YWluZWQgYXNzZXJ0aW9uLmAsIGNvbnRhaW5lZEFzc2VydGlvbk5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnRWZXJpZmllZEFzQ29udGFpbmVkQXNzZXJ0aW9uO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlTdGF0ZW1lbnRBc0Rlcml2ZWRDb250YWluZWRBc3NlcnRpb24oY29udGFpbmVkQXNzZXJ0aW9uTm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgc3RhdGVtZW50VmVyaWZpZWRBc0RlZmluZWRDb250YWluZWRBc3NlcnRpb24gPSBmYWxzZTtcblxuICBpZiAoZGVyaXZlZCkge1xuICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcoY29udGFpbmVkQXNzZXJ0aW9uTm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVyaXZlZCBzdGF0ZW1lbnQgYXMgYSBjb250YWluZWQgYXNzZXJ0aW9uLi4uYCwgY29udGFpbmVkQXNzZXJ0aW9uTm9kZSk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnROZWdhdGVkID0gaXNTdGF0ZW1lbnROZWdhdGVkKGNvbnRhaW5lZEFzc2VydGlvbk5vZGUpLFxuICAgICAgICAgIHRlcm1Ob2RlID0gdGVybU5vZGVRdWVyeShjb250YWluZWRBc3NlcnRpb25Ob2RlKSxcbiAgICAgICAgICBuZWdhdGVkID0gc3RhdGVtZW50TmVnYXRlZCwgLy8vXG4gICAgICAgICAgc3RhdGVtZW50VGVybU5vZGVzID0gc3RhdGVtZW50VGVybU5vZGVzUXVlcnkoY29udGFpbmVkQXNzZXJ0aW9uTm9kZSksXG4gICAgICAgICAgdGVybU5vZGVNYXRjaGVzTWV0YUFyZ3VtZW50VmFyaWFibGVOb2RlID0gc3RhdGVtZW50VGVybU5vZGVzLnNvbWUoKHN0YXRlbWVudFRlcm1Ob2RlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0ZXJtTm9kZU1hdGNoZXNNZXRhQXJndW1lbnRWYXJpYWJsZU5vZGUgPSB0ZXJtTm9kZS5tYXRjaChzdGF0ZW1lbnRUZXJtTm9kZSk7XG5cbiAgICAgICAgICAgIGlmICh0ZXJtTm9kZU1hdGNoZXNNZXRhQXJndW1lbnRWYXJpYWJsZU5vZGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICBpZiAoIW5lZ2F0ZWQpIHtcbiAgICAgIGlmICh0ZXJtTm9kZU1hdGNoZXNNZXRhQXJndW1lbnRWYXJpYWJsZU5vZGUpIHtcbiAgICAgICAgc3RhdGVtZW50VmVyaWZpZWRBc0RlZmluZWRDb250YWluZWRBc3NlcnRpb24gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChuZWdhdGVkKSB7XG4gICAgICBpZiAoIXRlcm1Ob2RlTWF0Y2hlc01ldGFBcmd1bWVudFZhcmlhYmxlTm9kZSkge1xuICAgICAgICBzdGF0ZW1lbnRWZXJpZmllZEFzRGVmaW5lZENvbnRhaW5lZEFzc2VydGlvbiA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHN0YXRlbWVudFZlcmlmaWVkQXNEZWZpbmVkQ29udGFpbmVkQXNzZXJ0aW9uKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIHN0YXRlbWVudCBhcyBhIGNvbnRhaW5lZCBhc3NlcnRpb24uYCwgY29udGFpbmVkQXNzZXJ0aW9uTm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFZlcmlmaWVkQXNEZWZpbmVkQ29udGFpbmVkQXNzZXJ0aW9uO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlTdGF0ZW1lbnRBc1N0YXRlZENvbnRhaW5lZEFzc2VydGlvbihjb250YWluZWRBc3NlcnRpb25Ob2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBzdGF0ZW1lbnRWZXJpZmllZEFzU3RhdGVkQ29udGFpbmVkQXNzZXJ0aW9uID0gZmFsc2U7XG5cbiAgaWYgKCFkZXJpdmVkKSB7XG4gICAgY29uc3QgY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhjb250YWluZWRBc3NlcnRpb25Ob2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBzdGF0ZWQgc3RhdGVtZW50IGFzIGEgY29udGFpbmVkIGFzc2VydGlvbi4uLmAsIGNvbnRhaW5lZEFzc2VydGlvbk5vZGUpO1xuXG4gICAgY29uc3QgaW50cmluc2ljTGV2ZWwgPSBsb2NhbENvbnRleHQuaXNJbnRyaW5zaWNMZXZlbCgpO1xuXG4gICAgaWYgKGludHJpbnNpY0xldmVsKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYFRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBzdGF0ZWQgc3RhdGVtZW50IGFzIGEgY29udGFpbmVkIGFzc2VydGlvbiBjYW5ub3QgYmUgdmVyaWZpZWQgYXQgaW50cmluc2ljIGxldmVsLmAsIGNvbnRhaW5lZEFzc2VydGlvbk5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBjb250YWluZWRBc3NlcnRpb25Ob2RlLCAvLy9cbiAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gbWV0YUxldmVsTm9kZVZlcmlmaWVyLnZlcmlmeU5vblRlcm1pbmFsTm9kZShub25UZXJtaW5hbE5vZGUsIGxvY2FsQ29udGV4dCwgKCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB2ZXJpZmllZEFoZWFkID0gdHJ1ZTtcblxuICAgICAgICAgICAgICByZXR1cm4gdmVyaWZpZWRBaGVhZDtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICBzdGF0ZW1lbnRWZXJpZmllZEFzU3RhdGVkQ29udGFpbmVkQXNzZXJ0aW9uID0gbm9uVGVybWluYWxOb2RlVmVyaWZpZWQ7IC8vL1xuICAgIH1cblxuICAgIGlmIChzdGF0ZW1lbnRWZXJpZmllZEFzU3RhdGVkQ29udGFpbmVkQXNzZXJ0aW9uKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBzdGF0ZWQgc3RhdGVtZW50IGFzIGEgY29udGFpbmVkIGFzc2VydGlvbi5gLCBjb250YWluZWRBc3NlcnRpb25Ob2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50VmVyaWZpZWRBc1N0YXRlZENvbnRhaW5lZEFzc2VydGlvbjtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlDb250YWluZWRBc3NlcnRpb24iLCJ0ZXJtTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5Iiwic3RhdGVtZW50VGVybU5vZGVzUXVlcnkiLCJub2Rlc1F1ZXJ5IiwiY29udGFpbmVkQXNzZXJ0aW9uTm9kZSIsImFzc2lnbm1lbnRzIiwiZGVyaXZlZCIsImxvY2FsQ29udGV4dCIsInN0YXRlbWVudFZlcmlmaWVkQXNDb250YWluZWRBc3NlcnRpb24iLCJzdGF0ZW1lbnRDb250YWluZWRBc3NlcnRpb24iLCJpc1N0YXRlbWVudENvbnRhaW5lZEFzc2VydGlvbiIsImNvbnRhaW5lZEFzc2VydGlvblN0cmluZyIsIm5vZGVBc1N0cmluZyIsInRyYWNlIiwic3RhdGVtZW50RnVuY3Rpb25zIiwidmVyaWZ5U3RhdGVtZW50QXNEZXJpdmVkQ29udGFpbmVkQXNzZXJ0aW9uIiwidmVyaWZ5U3RhdGVtZW50QXNTdGF0ZWRDb250YWluZWRBc3NlcnRpb24iLCJzb21lIiwic3RhdGVtZW50RnVuY3Rpb24iLCJkZWJ1ZyIsInN0YXRlbWVudFZlcmlmaWVkQXNEZWZpbmVkQ29udGFpbmVkQXNzZXJ0aW9uIiwic3RhdGVtZW50TmVnYXRlZCIsImlzU3RhdGVtZW50TmVnYXRlZCIsInRlcm1Ob2RlIiwibmVnYXRlZCIsInN0YXRlbWVudFRlcm1Ob2RlcyIsInRlcm1Ob2RlTWF0Y2hlc01ldGFBcmd1bWVudFZhcmlhYmxlTm9kZSIsInN0YXRlbWVudFRlcm1Ob2RlIiwibWF0Y2giLCJzdGF0ZW1lbnRWZXJpZmllZEFzU3RhdGVkQ29udGFpbmVkQXNzZXJ0aW9uIiwiaW50cmluc2ljTGV2ZWwiLCJpc0ludHJpbnNpY0xldmVsIiwibm9uVGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlVmVyaWZpZWQiLCJtZXRhTGV2ZWxOb2RlVmVyaWZpZXIiLCJ2ZXJpZnlOb25UZXJtaW5hbE5vZGUiLCJ2ZXJpZmllZEFoZWFkIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFVQTs7O2VBQXdCQTs7O2dFQVJVO3NCQUVDO3FCQUNHOzs7Ozs7QUFFdEMsSUFBTUMsZ0JBQWdCQyxJQUFBQSxnQkFBUyxFQUFDLHFCQUMxQkMsMEJBQTBCQyxJQUFBQSxpQkFBVSxFQUFDO0FBRTVCLFNBQVNKLHlCQUF5Qkssc0JBQXNCLEVBQUVDLFdBQVcsRUFBRUMsT0FBTyxFQUFFQyxZQUFZO0lBQ3pHLElBQUlDO0lBRUosSUFBTUMsOEJBQThCQyw4QkFBOEJOO0lBRWxFLElBQUlLLDZCQUE2QjtRQUMvQixJQUFNRSwyQkFBMkJKLGFBQWFLLFlBQVksQ0FBQ1I7UUFFM0RHLGFBQWFNLEtBQUssQ0FBQyxBQUFDLGtCQUEwQyxPQUF6QkYsMEJBQXlCLDRDQUEwQ1A7UUFFeEcsSUFBTVUscUJBQXFCO1lBQ3pCQztZQUNBQztTQUNEO1FBRURSLHdDQUF3Q00sbUJBQW1CRyxJQUFJLENBQUMsU0FBQ0M7WUFDL0QsSUFBTVYsd0NBQXdDVSxrQkFBa0JkLHdCQUF3QkMsYUFBYUMsU0FBU0M7WUFFOUcsSUFBSUMsdUNBQXVDO2dCQUN6QyxPQUFPO1lBQ1Q7UUFDRjtRQUVBLElBQUlBLHVDQUF1QztZQUN6Q0QsYUFBYVksS0FBSyxDQUFDLEFBQUMsb0JBQTRDLE9BQXpCUiwwQkFBeUIsMENBQXdDUDtRQUMxRztJQUNGO0lBRUEsT0FBT0k7QUFDVDtBQUVBLFNBQVNPLDJDQUEyQ1gsc0JBQXNCLEVBQUVDLFdBQVcsRUFBRUMsT0FBTyxFQUFFQyxZQUFZO0lBQzVHLElBQUlhLCtDQUErQztJQUVuRCxJQUFJZCxTQUFTO1FBQ1gsSUFBTUssMkJBQTJCSixhQUFhSyxZQUFZLENBQUNSO1FBRTNERyxhQUFhTSxLQUFLLENBQUMsQUFBQyxrQkFBMEMsT0FBekJGLDBCQUF5QixvREFBa0RQO1FBRWhILElBQU1pQixtQkFBbUJDLElBQUFBLDBCQUFrQixFQUFDbEIseUJBQ3RDbUIsV0FBV3ZCLGNBQWNJLHlCQUN6Qm9CLFVBQVVILGtCQUNWSSxxQkFBcUJ2Qix3QkFBd0JFLHlCQUM3Q3NCLDBDQUEwQ0QsbUJBQW1CUixJQUFJLENBQUMsU0FBQ1U7WUFDakUsSUFBTUQsMENBQTBDSCxTQUFTSyxLQUFLLENBQUNEO1lBRS9ELElBQUlELHlDQUF5QztnQkFDM0MsT0FBTztZQUNUO1FBQ0Y7UUFFTixJQUFJLENBQUNGLFNBQVM7WUFDWixJQUFJRSx5Q0FBeUM7Z0JBQzNDTiwrQ0FBK0M7WUFDakQ7UUFDRjtRQUVBLElBQUlJLFNBQVM7WUFDWCxJQUFJLENBQUNFLHlDQUF5QztnQkFDNUNOLCtDQUErQztZQUNqRDtRQUNGO1FBRUEsSUFBSUEsOENBQThDO1lBQ2hEYixhQUFhWSxLQUFLLENBQUMsQUFBQyxvQkFBNEMsT0FBekJSLDBCQUF5QixrREFBZ0RQO1FBQ2xIO0lBQ0Y7SUFFQSxPQUFPZ0I7QUFDVDtBQUVBLFNBQVNKLDBDQUEwQ1osc0JBQXNCLEVBQUVDLFdBQVcsRUFBRUMsT0FBTyxFQUFFQyxZQUFZO0lBQzNHLElBQUlzQiw4Q0FBOEM7SUFFbEQsSUFBSSxDQUFDdkIsU0FBUztRQUNaLElBQU1LLDJCQUEyQkosYUFBYUssWUFBWSxDQUFDUjtRQUUzREcsYUFBYU0sS0FBSyxDQUFDLEFBQUMsa0JBQTBDLE9BQXpCRiwwQkFBeUIsbURBQWlEUDtRQUUvRyxJQUFNMEIsaUJBQWlCdkIsYUFBYXdCLGdCQUFnQjtRQUVwRCxJQUFJRCxnQkFBZ0I7WUFDbEJ2QixhQUFhWSxLQUFLLENBQUMsQUFBQyxRQUFnQyxPQUF6QlIsMEJBQXlCLHVGQUFxRlA7UUFDM0ksT0FBTztZQUNMLElBQU00QixrQkFBa0I1Qix3QkFDbEI2QiwwQkFBMEJDLGtCQUFxQixDQUFDQyxxQkFBcUIsQ0FBQ0gsaUJBQWlCekIsY0FBYztnQkFDbkcsSUFBTTZCLGdCQUFnQjtnQkFFdEIsT0FBT0E7WUFDVDtZQUVOUCw4Q0FBOENJLHlCQUF5QixHQUFHO1FBQzVFO1FBRUEsSUFBSUosNkNBQTZDO1lBQy9DdEIsYUFBYVksS0FBSyxDQUFDLEFBQUMsb0JBQTRDLE9BQXpCUiwwQkFBeUIsaURBQStDUDtRQUNqSDtJQUNGO0lBRUEsT0FBT3lCO0FBQ1QifQ==
|
|
@@ -1,115 +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 verifyDefinedAssertion;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
var _term = /*#__PURE__*/ _interop_require_default(require("./term"));
|
|
12
|
-
var _metaLevel = /*#__PURE__*/ _interop_require_default(require("../verifier/node/metaLevel"));
|
|
13
|
-
var _array = require("../utilities/array");
|
|
14
|
-
var _constants = require("../constants");
|
|
15
|
-
var _query = require("../utilities/query");
|
|
16
|
-
var _verify = require("../utilities/verify");
|
|
17
|
-
function _interop_require_default(obj) {
|
|
18
|
-
return obj && obj.__esModule ? obj : {
|
|
19
|
-
default: obj
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
var termNodeQuery = (0, _query.nodeQuery)("/statement/term!"), variableNodeQuery = (0, _query.nodeQuery)("/statement/term/variable!");
|
|
23
|
-
function verifyDefinedAssertion(definedAssertionNode, assignments, derived, localContext) {
|
|
24
|
-
var statementVerifiedAsDefinedAssertion = false;
|
|
25
|
-
var statementDefinedAssertion = isStatementDefinedAssertion(definedAssertionNode);
|
|
26
|
-
if (statementDefinedAssertion) {
|
|
27
|
-
var definedAssertionString = localContext.nodeAsString(definedAssertionNode);
|
|
28
|
-
localContext.trace("Verifying the '".concat(definedAssertionString, "' statement as a defined assertion..."), definedAssertionNode);
|
|
29
|
-
var definedAssertionFunctions = [
|
|
30
|
-
verifyDerivedStatementAsDefinedAssertion,
|
|
31
|
-
verifyStatedStatementAsDefinedAssertion
|
|
32
|
-
];
|
|
33
|
-
statementVerifiedAsDefinedAssertion = definedAssertionFunctions.some(function(definedAssertionFunction) {
|
|
34
|
-
var statementVerifiedAsDefinedAssertion = definedAssertionFunction(definedAssertionNode, assignments, derived, localContext);
|
|
35
|
-
if (statementVerifiedAsDefinedAssertion) {
|
|
36
|
-
return true;
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
if (statementVerifiedAsDefinedAssertion) {
|
|
40
|
-
localContext.debug("...verified the '".concat(definedAssertionString, "' statement as a defined assertion."), definedAssertionNode);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
return statementVerifiedAsDefinedAssertion;
|
|
44
|
-
}
|
|
45
|
-
function verifyDerivedStatementAsDefinedAssertion(definedAssertionNode, assignments, derived, localContext) {
|
|
46
|
-
var derivedStatementVerifiedAsDefeindAssertion = false;
|
|
47
|
-
if (derived) {
|
|
48
|
-
var definedAssertionString = localContext.nodeAsString(definedAssertionNode);
|
|
49
|
-
localContext.trace("Verifying the '".concat(definedAssertionString, "' derived statement as a defined assertion..."), definedAssertionNode);
|
|
50
|
-
var statementNegated = (0, _verify.isAssertionNegated)(definedAssertionNode), variableNode = variableNodeQuery(definedAssertionNode), termNode = termNodeQuery(definedAssertionNode);
|
|
51
|
-
if (false) {
|
|
52
|
-
///
|
|
53
|
-
} else if (variableNode !== null) {
|
|
54
|
-
var variable = localContext.findVariableByVariableNode(variableNode);
|
|
55
|
-
if (variable !== null) {
|
|
56
|
-
var variableDefined = localContext.isVariableDefined(variable);
|
|
57
|
-
if (!statementNegated) {
|
|
58
|
-
if (variableDefined) {
|
|
59
|
-
derivedStatementVerifiedAsDefeindAssertion = true;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
if (statementNegated) {
|
|
63
|
-
if (!variableDefined) {
|
|
64
|
-
derivedStatementVerifiedAsDefeindAssertion = true;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
} else if (termNode !== null) {
|
|
69
|
-
var terms = [], termVerified = (0, _term.default)(termNode, terms, localContext, function() {
|
|
70
|
-
var verifiedAhead = true;
|
|
71
|
-
return verifiedAhead;
|
|
72
|
-
});
|
|
73
|
-
if (termVerified) {
|
|
74
|
-
var firstTerm = (0, _array.first)(terms), term = firstTerm, termGrounded = localContext.isTermGrounded(term);
|
|
75
|
-
if (!statementNegated) {
|
|
76
|
-
if (termGrounded) {
|
|
77
|
-
derivedStatementVerifiedAsDefeindAssertion = true;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
if (statementNegated) {
|
|
81
|
-
if (!termGrounded) {
|
|
82
|
-
derivedStatementVerifiedAsDefeindAssertion = true;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
if (derivedStatementVerifiedAsDefeindAssertion) {
|
|
88
|
-
localContext.debug("...verified the '".concat(definedAssertionString, "' derived statement as a defined assertion."), definedAssertionNode);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
return derivedStatementVerifiedAsDefeindAssertion;
|
|
92
|
-
}
|
|
93
|
-
function verifyStatedStatementAsDefinedAssertion(definedAssertionNode, assignments, derived, localContext) {
|
|
94
|
-
var statedStatementVerifiedAsDefinedAssertion = false;
|
|
95
|
-
if (!derived) {
|
|
96
|
-
var definedAssertionString = localContext.nodeAsString(definedAssertionNode);
|
|
97
|
-
localContext.trace("Verifying the '".concat(definedAssertionString, "' stated statement as a defined assertion..."), definedAssertionNode);
|
|
98
|
-
var intrinsicLevel = localContext.isIntrinsicLevel();
|
|
99
|
-
if (intrinsicLevel) {
|
|
100
|
-
localContext.debug("The '".concat(definedAssertionString, "' stated statement as a defined assertion cannot be verified at intrinsic level."), definedAssertionNode);
|
|
101
|
-
} else {
|
|
102
|
-
var nonTerminalNode = definedAssertionNode, nonTerminalNodeVerified = _metaLevel.default.verifyNonTerminalNode(nonTerminalNode, localContext, function() {
|
|
103
|
-
var verifiedAhead = true;
|
|
104
|
-
return verifiedAhead;
|
|
105
|
-
});
|
|
106
|
-
statedStatementVerifiedAsDefinedAssertion = nonTerminalNodeVerified; ///
|
|
107
|
-
}
|
|
108
|
-
if (statedStatementVerifiedAsDefinedAssertion) {
|
|
109
|
-
localContext.debug("...verified the '".concat(definedAssertionString, "' stated statement as a defined assertion."), definedAssertionNode);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
return statedStatementVerifiedAsDefinedAssertion;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvZGVmaW5lZEFzc2VydGlvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHZlcmlmeVRlcm0gZnJvbSBcIi4vdGVybVwiO1xuaW1wb3J0IG1ldGFMZXZlbE5vZGVWZXJpZmllciBmcm9tIFwiLi4vdmVyaWZpZXIvbm9kZS9tZXRhTGV2ZWxcIjtcblxuaW1wb3J0IHsgZmlyc3QgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2FycmF5XCI7XG5pbXBvcnQgeyBERUZJTkVEIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgaXNBc3NlcnRpb25OZWdhdGVkIH0gZnJvbSBcIi4uL3V0aWxpdGllcy92ZXJpZnlcIjtcblxuY29uc3QgdGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvdGVybSFcIiksXG4gICAgICB2YXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvdGVybS92YXJpYWJsZSFcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeURlZmluZWRBc3NlcnRpb24oZGVmaW5lZEFzc2VydGlvbk5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IHN0YXRlbWVudFZlcmlmaWVkQXNEZWZpbmVkQXNzZXJ0aW9uID0gZmFsc2U7XG5cbiAgY29uc3Qgc3RhdGVtZW50RGVmaW5lZEFzc2VydGlvbiA9IGlzU3RhdGVtZW50RGVmaW5lZEFzc2VydGlvbihkZWZpbmVkQXNzZXJ0aW9uTm9kZSk7XG5cbiAgaWYgKHN0YXRlbWVudERlZmluZWRBc3NlcnRpb24pIHtcbiAgICBjb25zdCBkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhkZWZpbmVkQXNzZXJ0aW9uTm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7ZGVmaW5lZEFzc2VydGlvblN0cmluZ30nIHN0YXRlbWVudCBhcyBhIGRlZmluZWQgYXNzZXJ0aW9uLi4uYCwgZGVmaW5lZEFzc2VydGlvbk5vZGUpO1xuXG4gICAgY29uc3QgZGVmaW5lZEFzc2VydGlvbkZ1bmN0aW9ucyA9IFtcbiAgICAgIHZlcmlmeURlcml2ZWRTdGF0ZW1lbnRBc0RlZmluZWRBc3NlcnRpb24sXG4gICAgICB2ZXJpZnlTdGF0ZWRTdGF0ZW1lbnRBc0RlZmluZWRBc3NlcnRpb25cbiAgICBdO1xuXG4gICAgc3RhdGVtZW50VmVyaWZpZWRBc0RlZmluZWRBc3NlcnRpb24gPSBkZWZpbmVkQXNzZXJ0aW9uRnVuY3Rpb25zLnNvbWUoKGRlZmluZWRBc3NlcnRpb25GdW5jdGlvbikgPT4ge1xuICAgICAgY29uc3Qgc3RhdGVtZW50VmVyaWZpZWRBc0RlZmluZWRBc3NlcnRpb24gPSBkZWZpbmVkQXNzZXJ0aW9uRnVuY3Rpb24oZGVmaW5lZEFzc2VydGlvbk5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQpO1xuXG4gICAgICBpZiAoc3RhdGVtZW50VmVyaWZpZWRBc0RlZmluZWRBc3NlcnRpb24pIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoc3RhdGVtZW50VmVyaWZpZWRBc0RlZmluZWRBc3NlcnRpb24pIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBkZWZpbmVkIGFzc2VydGlvbi5gLCBkZWZpbmVkQXNzZXJ0aW9uTm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFZlcmlmaWVkQXNEZWZpbmVkQXNzZXJ0aW9uO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlEZXJpdmVkU3RhdGVtZW50QXNEZWZpbmVkQXNzZXJ0aW9uKGRlZmluZWRBc3NlcnRpb25Ob2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBkZXJpdmVkU3RhdGVtZW50VmVyaWZpZWRBc0RlZmVpbmRBc3NlcnRpb24gPSBmYWxzZTtcblxuICBpZiAoZGVyaXZlZCkge1xuICAgIGNvbnN0IGRlZmluZWRBc3NlcnRpb25TdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKGRlZmluZWRBc3NlcnRpb25Ob2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVyaXZlZCBzdGF0ZW1lbnQgYXMgYSBkZWZpbmVkIGFzc2VydGlvbi4uLmAsIGRlZmluZWRBc3NlcnRpb25Ob2RlKTtcblxuICAgIGNvbnN0IHN0YXRlbWVudE5lZ2F0ZWQgPSBpc0Fzc2VydGlvbk5lZ2F0ZWQoZGVmaW5lZEFzc2VydGlvbk5vZGUpLFxuICAgICAgICAgIHZhcmlhYmxlTm9kZSA9IHZhcmlhYmxlTm9kZVF1ZXJ5KGRlZmluZWRBc3NlcnRpb25Ob2RlKSxcbiAgICAgICAgICB0ZXJtTm9kZSA9IHRlcm1Ob2RlUXVlcnkoZGVmaW5lZEFzc2VydGlvbk5vZGUpO1xuXG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICAvLy9cbiAgICB9IGVsc2UgaWYgKHZhcmlhYmxlTm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgdmFyaWFibGUgPSBsb2NhbENvbnRleHQuZmluZFZhcmlhYmxlQnlWYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKTtcblxuICAgICAgaWYgKHZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHZhcmlhYmxlRGVmaW5lZCA9IGxvY2FsQ29udGV4dC5pc1ZhcmlhYmxlRGVmaW5lZCh2YXJpYWJsZSk7XG5cbiAgICAgICAgaWYgKCFzdGF0ZW1lbnROZWdhdGVkKSB7XG4gICAgICAgICAgaWYgKHZhcmlhYmxlRGVmaW5lZCkge1xuICAgICAgICAgICAgZGVyaXZlZFN0YXRlbWVudFZlcmlmaWVkQXNEZWZlaW5kQXNzZXJ0aW9uID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RhdGVtZW50TmVnYXRlZCkge1xuICAgICAgICAgIGlmICghdmFyaWFibGVEZWZpbmVkKSB7XG4gICAgICAgICAgICBkZXJpdmVkU3RhdGVtZW50VmVyaWZpZWRBc0RlZmVpbmRBc3NlcnRpb24gPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGVybU5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHRlcm1zID0gW10sXG4gICAgICAgICAgICB0ZXJtVmVyaWZpZWQgPSB2ZXJpZnlUZXJtKHRlcm1Ob2RlLCB0ZXJtcywgbG9jYWxDb250ZXh0LCAoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHZlcmlmaWVkQWhlYWQgPSB0cnVlO1xuXG4gICAgICAgICAgICAgIHJldHVybiB2ZXJpZmllZEFoZWFkO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgIGlmICh0ZXJtVmVyaWZpZWQpIHtcbiAgICAgICAgY29uc3QgZmlyc3RUZXJtID0gZmlyc3QodGVybXMpLFxuICAgICAgICAgICAgICB0ZXJtID0gZmlyc3RUZXJtLCAvLy9cbiAgICAgICAgICAgICAgdGVybUdyb3VuZGVkID0gbG9jYWxDb250ZXh0LmlzVGVybUdyb3VuZGVkKHRlcm0pO1xuXG4gICAgICAgIGlmICghc3RhdGVtZW50TmVnYXRlZCkge1xuICAgICAgICAgIGlmICh0ZXJtR3JvdW5kZWQpIHtcbiAgICAgICAgICAgIGRlcml2ZWRTdGF0ZW1lbnRWZXJpZmllZEFzRGVmZWluZEFzc2VydGlvbiA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0YXRlbWVudE5lZ2F0ZWQpIHtcbiAgICAgICAgICBpZiAoIXRlcm1Hcm91bmRlZCkge1xuICAgICAgICAgICAgZGVyaXZlZFN0YXRlbWVudFZlcmlmaWVkQXNEZWZlaW5kQXNzZXJ0aW9uID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGVyaXZlZFN0YXRlbWVudFZlcmlmaWVkQXNEZWZlaW5kQXNzZXJ0aW9uKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVyaXZlZCBzdGF0ZW1lbnQgYXMgYSBkZWZpbmVkIGFzc2VydGlvbi5gLCBkZWZpbmVkQXNzZXJ0aW9uTm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRlcml2ZWRTdGF0ZW1lbnRWZXJpZmllZEFzRGVmZWluZEFzc2VydGlvbjtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5U3RhdGVkU3RhdGVtZW50QXNEZWZpbmVkQXNzZXJ0aW9uKGRlZmluZWRBc3NlcnRpb25Ob2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBzdGF0ZWRTdGF0ZW1lbnRWZXJpZmllZEFzRGVmaW5lZEFzc2VydGlvbiA9IGZhbHNlO1xuXG4gIGlmICghZGVyaXZlZCkge1xuICAgIGNvbnN0IGRlZmluZWRBc3NlcnRpb25TdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKGRlZmluZWRBc3NlcnRpb25Ob2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgc3RhdGVkIHN0YXRlbWVudCBhcyBhIGRlZmluZWQgYXNzZXJ0aW9uLi4uYCwgZGVmaW5lZEFzc2VydGlvbk5vZGUpO1xuXG4gICAgY29uc3QgaW50cmluc2ljTGV2ZWwgPSBsb2NhbENvbnRleHQuaXNJbnRyaW5zaWNMZXZlbCgpO1xuXG4gICAgaWYgKGludHJpbnNpY0xldmVsKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYFRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgc3RhdGVkIHN0YXRlbWVudCBhcyBhIGRlZmluZWQgYXNzZXJ0aW9uIGNhbm5vdCBiZSB2ZXJpZmllZCBhdCBpbnRyaW5zaWMgbGV2ZWwuYCwgZGVmaW5lZEFzc2VydGlvbk5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBkZWZpbmVkQXNzZXJ0aW9uTm9kZSwgLy8vXG4gICAgICAgICAgICBub25UZXJtaW5hbE5vZGVWZXJpZmllZCA9IG1ldGFMZXZlbE5vZGVWZXJpZmllci52ZXJpZnlOb25UZXJtaW5hbE5vZGUobm9uVGVybWluYWxOb2RlLCBsb2NhbENvbnRleHQsICgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgdmVyaWZpZWRBaGVhZCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHZlcmlmaWVkQWhlYWQ7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgc3RhdGVkU3RhdGVtZW50VmVyaWZpZWRBc0RlZmluZWRBc3NlcnRpb24gPSBub25UZXJtaW5hbE5vZGVWZXJpZmllZDsgLy8vXG4gICAgfVxuXG4gICAgaWYgKHN0YXRlZFN0YXRlbWVudFZlcmlmaWVkQXNEZWZpbmVkQXNzZXJ0aW9uKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgc3RhdGVkIHN0YXRlbWVudCBhcyBhIGRlZmluZWQgYXNzZXJ0aW9uLmAsIGRlZmluZWRBc3NlcnRpb25Ob2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RhdGVkU3RhdGVtZW50VmVyaWZpZWRBc0RlZmluZWRBc3NlcnRpb247XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5RGVmaW5lZEFzc2VydGlvbiIsInRlcm1Ob2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ2YXJpYWJsZU5vZGVRdWVyeSIsImRlZmluZWRBc3NlcnRpb25Ob2RlIiwiYXNzaWdubWVudHMiLCJkZXJpdmVkIiwibG9jYWxDb250ZXh0Iiwic3RhdGVtZW50VmVyaWZpZWRBc0RlZmluZWRBc3NlcnRpb24iLCJzdGF0ZW1lbnREZWZpbmVkQXNzZXJ0aW9uIiwiaXNTdGF0ZW1lbnREZWZpbmVkQXNzZXJ0aW9uIiwiZGVmaW5lZEFzc2VydGlvblN0cmluZyIsIm5vZGVBc1N0cmluZyIsInRyYWNlIiwiZGVmaW5lZEFzc2VydGlvbkZ1bmN0aW9ucyIsInZlcmlmeURlcml2ZWRTdGF0ZW1lbnRBc0RlZmluZWRBc3NlcnRpb24iLCJ2ZXJpZnlTdGF0ZWRTdGF0ZW1lbnRBc0RlZmluZWRBc3NlcnRpb24iLCJzb21lIiwiZGVmaW5lZEFzc2VydGlvbkZ1bmN0aW9uIiwiZGVidWciLCJkZXJpdmVkU3RhdGVtZW50VmVyaWZpZWRBc0RlZmVpbmRBc3NlcnRpb24iLCJzdGF0ZW1lbnROZWdhdGVkIiwiaXNBc3NlcnRpb25OZWdhdGVkIiwidmFyaWFibGVOb2RlIiwidGVybU5vZGUiLCJ2YXJpYWJsZSIsImZpbmRWYXJpYWJsZUJ5VmFyaWFibGVOb2RlIiwidmFyaWFibGVEZWZpbmVkIiwiaXNWYXJpYWJsZURlZmluZWQiLCJ0ZXJtcyIsInRlcm1WZXJpZmllZCIsInZlcmlmeVRlcm0iLCJ2ZXJpZmllZEFoZWFkIiwiZmlyc3RUZXJtIiwiZmlyc3QiLCJ0ZXJtIiwidGVybUdyb3VuZGVkIiwiaXNUZXJtR3JvdW5kZWQiLCJzdGF0ZWRTdGF0ZW1lbnRWZXJpZmllZEFzRGVmaW5lZEFzc2VydGlvbiIsImludHJpbnNpY0xldmVsIiwiaXNJbnRyaW5zaWNMZXZlbCIsIm5vblRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZVZlcmlmaWVkIiwibWV0YUxldmVsTm9kZVZlcmlmaWVyIiwidmVyaWZ5Tm9uVGVybWluYWxOb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFhQTs7O2VBQXdCQTs7OzJEQVhEO2dFQUNXO3FCQUVaO3lCQUNFO3FCQUNFO3NCQUNTOzs7Ozs7QUFFbkMsSUFBTUMsZ0JBQWdCQyxJ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
|