occam-verify-cli 1.0.857 → 1.0.859
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/context/file/nominal.js +13 -1
- package/lib/context/liminal.js +4 -4
- package/lib/context/mnemic.js +4 -1
- package/lib/context/synoptic.js +16 -3
- package/lib/context.js +5 -1
- package/lib/element/assumption/metaLevel.js +48 -2
- package/lib/element/assumption.js +3 -27
- package/lib/element/judgement.js +27 -27
- package/lib/element/metavariable.js +7 -1
- package/lib/element/substitution/statement.js +3 -17
- package/lib/element/variable.js +3 -1
- package/lib/process/unify.js +2 -54
- package/lib/utilities/element.js +10 -9
- package/lib/utilities/string.js +11 -4
- package/package.json +1 -1
- package/src/context/file/nominal.js +18 -0
- package/src/context/liminal.js +3 -3
- package/src/context/mnemic.js +4 -0
- package/src/context/synoptic.js +22 -2
- package/src/context.js +6 -0
- package/src/element/assumption/metaLevel.js +86 -5
- package/src/element/assumption.js +2 -44
- package/src/element/judgement.js +32 -32
- package/src/element/metavariable.js +12 -0
- package/src/element/substitution/statement.js +2 -20
- package/src/element/variable.js +4 -0
- package/src/process/unify.js +0 -83
- package/src/utilities/element.js +16 -15
- package/src/utilities/string.js +9 -1
package/lib/utilities/string.js
CHANGED
|
@@ -9,6 +9,9 @@ function _export(target, all) {
|
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
+
get assumptionStringFromReferenceAndStatement () {
|
|
13
|
+
return assumptionStringFromReferenceAndStatement;
|
|
14
|
+
},
|
|
12
15
|
get equivalenceStringFromTerms () {
|
|
13
16
|
return equivalenceStringFromTerms;
|
|
14
17
|
},
|
|
@@ -21,8 +24,8 @@ _export(exports, {
|
|
|
21
24
|
get labelsStringFromLabels () {
|
|
22
25
|
return labelsStringFromLabels;
|
|
23
26
|
},
|
|
24
|
-
get
|
|
25
|
-
return
|
|
27
|
+
get metaLevelAssumptionStringFromReferenceAndStatement () {
|
|
28
|
+
return metaLevelAssumptionStringFromReferenceAndStatement;
|
|
26
29
|
},
|
|
27
30
|
get parametersStringFromParameters () {
|
|
28
31
|
return parametersStringFromParameters;
|
|
@@ -151,6 +154,10 @@ function termSubstitutionStringFromTermAndVariable(term, variable) {
|
|
|
151
154
|
const termString = term.getString(), variableString = variable.getString(), termSubstitutionString = `[${termString} for ${variableString}]`;
|
|
152
155
|
return termSubstitutionString;
|
|
153
156
|
}
|
|
157
|
+
function assumptionStringFromReferenceAndStatement(reference, statement) {
|
|
158
|
+
const referenceString = reference.getString(), statementString = statement.getString(), assumptionString = `${referenceString} :: ${statementString}`;
|
|
159
|
+
return assumptionString;
|
|
160
|
+
}
|
|
154
161
|
function rulsStringFromLabelsPremisesAndConclusion(labels, premises, conclusion) {
|
|
155
162
|
const conclusionString = conclusion.getString(), premisesString = premisesStringFromPremises(premises), labelsString = labelsStringFromLabels(labels), ruleString = premisesString !== null ? `${labelsString} :: [${premisesString}]...${conclusionString}` : `${labelsString} :: ${conclusionString}`;
|
|
156
163
|
return ruleString;
|
|
@@ -167,7 +174,7 @@ function frameSubstitutionStringFromFrameAndMetavariable(frame, metavariable) {
|
|
|
167
174
|
const frameString = frame.getString(), metavariableString = metavariable.getString(), string = `[${frameString} for [${metavariableString}]]`;
|
|
168
175
|
return string;
|
|
169
176
|
}
|
|
170
|
-
function
|
|
177
|
+
function metaLevelAssumptionStringFromReferenceAndStatement(reference, statement) {
|
|
171
178
|
const statementString = statement.getString(), referneceString = reference.getString(), metaLevelAssumptionString = `${referneceString} :: ${statementString}`;
|
|
172
179
|
return metaLevelAssumptionString;
|
|
173
180
|
}
|
|
@@ -202,4 +209,4 @@ function statementSubstitutionStringFromStatementMetavariableAndSubstitution(sta
|
|
|
202
209
|
return statementSubstitutionString;
|
|
203
210
|
}
|
|
204
211
|
|
|
205
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3RyaW5nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBiYXNlVHlwZUZyb21Ob3RoaW5nIH0gZnJvbSBcIi4uL3V0aWxpdGllcy90eXBlXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtc1N0cmluZ0Zyb21UZXJtcyh0ZXJtcykge1xuICBjb25zdCB0ZXJtc1N0cmluZyA9IHRlcm1zLnJlZHVjZSgodGVybXNTdHJpbmcsIHRlcm0pID0+IHtcbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKTtcblxuICAgIHRlcm1zU3RyaW5nID0gKHRlcm1zU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgYCR7dGVybXNTdHJpbmd9LCAke3Rlcm1TdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgdGVybVN0cmluZztcblxuICAgIHJldHVybiB0ZXJtc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIHRlcm1zU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxzU3RyaW5nRnJvbUxhYmVscyhsYWJlbHMpIHtcbiAgY29uc3QgbGFiZWxzU3RyaW5nID0gbGFiZWxzLnJlZHVjZSgobGFiZWxzU3RyaW5nLCBsYWJlbCkgPT4ge1xuICAgIGNvbnN0IGxhYmVsU3RyaW5nID0gbGFiZWwuZ2V0U3RyaW5nKCk7XG5cbiAgICBsYWJlbHNTdHJpbmcgPSAobGFiZWxzU3RyaW5nID09PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICBsYWJlbFN0cmluZzogLy8vXG4gICAgICAgICAgICAgICAgICAgICAgYCR7bGFiZWxzU3RyaW5nfSwgJHtsYWJlbFN0cmluZ31gO1xuXG4gICAgcmV0dXJuIGxhYmVsc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIGxhYmVsc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZW1pc2VzU3RyaW5nRnJvbVByZW1pc2VzKHByZW1pc2VzKSB7XG4gIGNvbnN0IHByZW1pc2VzU3RyaW5nID0gcHJlbWlzZXMucmVkdWNlKChwcmVtaXNlc1N0cmluZywgcHJlbWlzZSkgPT4ge1xuICAgIGNvbnN0IHByZW1pc2VTdHJpbmcgPSBwcmVtaXNlLmdldFN0cmluZygpO1xuXG4gICAgcHJlbWlzZXNTdHJpbmcgPSAocHJlbWlzZXNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgYCR7cHJlbWlzZXNTdHJpbmd9LCAke3ByZW1pc2VTdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgcHJlbWlzZVN0cmluZzsgIC8vL1xuXG4gICAgcmV0dXJuIHByZW1pc2VzU3RyaW5nO1xuICB9LCBudWxsKTtcblxuICByZXR1cm4gcHJlbWlzZXNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoeXBvdGhlc2VzU3RyaW5nRnJvbUh5cG90aGVzZXMoaHlwb3RoZXNlcykge1xuICBjb25zdCBoeXBvdGhlc2VzU3RyaW5nID0gaHlwb3RoZXNlcy5yZWR1Y2UoKGh5cG90aGVzZXNTdHJpbmcsIGh5cG90aGVzaXMpID0+IHtcbiAgICBjb25zdCBoeXBvdGhlc2lzU3RyaW5nID0gaHlwb3RoZXNpcy5nZXRTdHJpbmcoKTtcblxuICAgIGh5cG90aGVzZXNTdHJpbmcgPSAoaHlwb3RoZXNlc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtoeXBvdGhlc2VzU3RyaW5nfSwgJHtoeXBvdGhlc2lzU3RyaW5nfWAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh5cG90aGVzaXNTdHJpbmc7ICAvLy9cblxuICAgIHJldHVybiBoeXBvdGhlc2VzU3RyaW5nO1xuICB9LCBudWxsKTtcblxuICByZXR1cm4gaHlwb3RoZXNlc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cGVyVHlwZXNTdHJpbmdGcm9tU3VwZXJUeXBlcyhzdXBlclR5cGVzKSB7XG4gIGNvbnN0IGJhc2VUeXBlID0gYmFzZVR5cGVGcm9tTm90aGluZygpLFxuICAgICAgICBzdXBlclR5cGVzU3RyaW5nID0gc3VwZXJUeXBlcy5yZWR1Y2UoKHN1cGVyVHlwZXNTdHJpbmcsIHN1cGVyVHlwZSkgPT4ge1xuICAgICAgICAgIGlmIChzdXBlclR5cGUgIT09IGJhc2VUeXBlKSB7XG4gICAgICAgICAgICBjb25zdCBzdXBlclR5cGVTdHJpbmcgPSBzdXBlclR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgICAgICAgIHN1cGVyVHlwZXNTdHJpbmcgPSAoc3VwZXJUeXBlc1N0cmluZyA9PT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCcke3N1cGVyVHlwZVN0cmluZ30nYCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke3N1cGVyVHlwZXNTdHJpbmd9LCAnJHtzdXBlclR5cGVTdHJpbmd9J2A7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHN1cGVyVHlwZXNTdHJpbmc7XG4gICAgICAgIH0sIG51bGwpO1xuXG4gIHJldHVybiBzdXBlclR5cGVzU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyYW1ldGVyc1N0cmluZ0Zyb21QYXJhbWV0ZXJzKHBhcmFtZXRlcnMpIHtcbiAgY29uc3QgcGFyYW1ldGVyc1N0cmluZyA9IHBhcmFtZXRlcnMucmVkdWNlKChwYXJhbWV0ZXJzU3RyaW5nLCBwYXJhbWV0ZXIpID0+IHtcbiAgICBjb25zdCBwYXJhbWV0ZXJTdHJpbmcgPSBwYXJhbWV0ZXIuZ2V0U3RyaW5nKCk7XG5cbiAgICBwYXJhbWV0ZXJzU3RyaW5nID0gKHBhcmFtZXRlcnNTdHJpbmcgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJTdHJpbmcgOiAvLy9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7cGFyYW1ldGVyc1N0cmluZ30sICR7cGFyYW1ldGVyU3RyaW5nfWA7XG5cbiAgICByZXR1cm4gcGFyYW1ldGVyc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIHBhcmFtZXRlcnNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBwb3NpdGlvbnNTdHJpbmdGcm9tU3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucykge1xuICBjb25zdCBzdXBwb3NpdGlvbnNTdHJpbmcgPSBzdXBwb3NpdGlvbnMucmVkdWNlKChzdXBwb3NpdGlvbnNTdHJpbmcsIHN1cHBvc2l0aW9uKSA9PiB7XG4gICAgY29uc3Qgc3VwcG9zaXRpb25TdHJpbmcgPSBzdXBwb3NpdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIHN1cHBvc2l0aW9uc1N0cmluZyA9IChzdXBwb3NpdGlvbnNTdHJpbmcgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3NpdGlvblN0cmluZzogLy8vXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke3N1cHBvc2l0aW9uc1N0cmluZ30sICR7c3VwcG9zaXRpb25TdHJpbmd9YDtcblxuICAgIHJldHVybiBzdXBwb3NpdGlvbnNTdHJpbmc7XG4gIH0sIG51bGwpO1xuXG4gIHJldHVybiBzdXBwb3NpdGlvbnNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaWduYXR1cmVTdHJpbmdGcm9tVGVybXModGVybXMpIHtcbiAgY29uc3QgdGVybXNTdHJpbmcgPSB0ZXJtc1N0cmluZ0Zyb21UZXJtcyh0ZXJtcyksXG4gICAgICAgIHNpZ25hdHVyZVN0cmluZyA9IGBbJHt0ZXJtc1N0cmluZ31dYDtcblxuICByZXR1cm4gc2lnbmF0dXJlU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXF1aXZhbGVuY2VTdHJpbmdGcm9tVGVybXModGVybXMpIHtcbiAgY29uc3QgdGVybXNTdHJpbmcgPSB0ZXJtc1N0cmluZ0Zyb21UZXJtcyh0ZXJtcyksXG4gICAgICAgIGVxdWl2YWxlbmNlU3RyaW5nID0gYFske3Rlcm1zU3RyaW5nfV1gO1xuXG4gIHJldHVybiBlcXVpdmFsZW5jZVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVTdHJpbmdGcm9tTm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSkge1xuICBjb25zdCB0eXBlU3RyaW5nID0gbm9taW5hbFR5cGVOYW1lOyAgLy8vXG5cbiAgcmV0dXJuIHR5cGVTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtU3Vic3RpdHV0aW9uU3RyaW5nRnJvbVRlcm1BbmRWYXJpYWJsZSh0ZXJtLCB2YXJpYWJsZSkge1xuICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgdmFyaWFibGVTdHJpbmcgPSB2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgdGVybVN1YnN0aXR1dGlvblN0cmluZyA9IGBbJHt0ZXJtU3RyaW5nfSBmb3IgJHt2YXJpYWJsZVN0cmluZ31dYDtcblxuICByZXR1cm4gdGVybVN1YnN0aXR1dGlvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bHNTdHJpbmdGcm9tTGFiZWxzUHJlbWlzZXNBbmRDb25jbHVzaW9uKGxhYmVscywgcHJlbWlzZXMsIGNvbmNsdXNpb24pIHtcbiAgY29uc3QgY29uY2x1c2lvblN0cmluZyA9IGNvbmNsdXNpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgIHByZW1pc2VzU3RyaW5nID0gcHJlbWlzZXNTdHJpbmdGcm9tUHJlbWlzZXMocHJlbWlzZXMpLFxuICAgICAgICBsYWJlbHNTdHJpbmcgPSBsYWJlbHNTdHJpbmdGcm9tTGFiZWxzKGxhYmVscyksXG4gICAgICAgIHJ1bGVTdHJpbmcgPSAocHJlbWlzZXNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgYCR7bGFiZWxzU3RyaW5nfSA6OiBbJHtwcmVtaXNlc1N0cmluZ31dLi4uJHtjb25jbHVzaW9uU3RyaW5nfWAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgIGAke2xhYmVsc1N0cmluZ30gOjogJHtjb25jbHVzaW9uU3RyaW5nfWA7XG5cbiAgcmV0dXJuIHJ1bGVTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWN0aW9uU3RyaW5nRnJvbUh5cG90aGVzZXNUb3BMZXZlbEFzc2VydGlvbihoeXBvdGhlc2VzLCBheGlvbSwgbGVtbWEsIHRoZW9yZW0sIGNvbmplY3R1cmUpIHtcbiAgY29uc3QgdG9wTGV2ZWxBc3NlcnRpb24gPSAoYXhpb20gfHwgbGVtbWEgfHwgdGhlb3JlbSB8fCBjb25qZWN0dXJlKSxcbiAgICAgICAgdG9wTGV2ZWxBc3NlcnRpb25TdHJpbmcgPSB0b3BMZXZlbEFzc2VydGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgaHlwb3RoZXNlc1N0cmluZyA9IGh5cG90aGVzZXNTdHJpbmdGcm9tSHlwb3RoZXNlcyhoeXBvdGhlc2VzKSxcbiAgICAgICAgc2VjdGlvblN0cmluZyA9ICh0b3BMZXZlbEFzc2VydGlvblN0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgWyR7aHlwb3RoZXNlc1N0cmluZ31dOjo6ICR7dG9wTGV2ZWxBc3NlcnRpb25TdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYFske2h5cG90aGVzZXNTdHJpbmd9XTo6OiBgO1xuXG4gIHJldHVybiBzZWN0aW9uU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VicHJvb2ZTdHJpbmdGcm9tU3VwcG9zaXRpb25zQW5kU3ViRGVyaXZhdGlvbihzdXBwb3NpdGlvbnMsIHN1YkRlcml2YXRpb24pIHtcbiAgY29uc3QgbGFzdFN0ZXAgPSBzdWJEZXJpdmF0aW9uLmdldExhc3RTdGVwKCksXG4gICAgICAgIHN1cHBvc2l0aW9uc1N0cmluZyA9IHN1cHBvc2l0aW9uc1N0cmluZ0Zyb21TdXBwb3NpdGlvbnMoc3VwcG9zaXRpb25zKSxcbiAgICAgICAgbGFzdFN0ZXBTdHJpbmcgPSBsYXN0U3RlcC5nZXRTdHJpbmcoKSxcbiAgICAgICAgc3VicHJvb2ZTdHJpbmcgPSBgWyR7c3VwcG9zaXRpb25zU3RyaW5nfV0uLi4ke2xhc3RTdGVwU3RyaW5nfWA7XG5cbiAgcmV0dXJuIHN1YnByb29mU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJhbWVTdWJzdGl0dXRpb25TdHJpbmdGcm9tRnJhbWVBbmRNZXRhdmFyaWFibGUoZnJhbWUsIG1ldGF2YXJpYWJsZSkge1xuICBjb25zdCBmcmFtZVN0cmluZyA9IGZyYW1lLmdldFN0cmluZygpLFxuICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBtZXRhdmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHN0cmluZyA9IGBbJHtmcmFtZVN0cmluZ30gZm9yIFske21ldGF2YXJpYWJsZVN0cmluZ31dXWA7XG5cbiAgcmV0dXJuIHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGFMZXZlbEFzc3VtcHRpb25TdHJpbmdGcm9tU3RhdGVtZW50QW5kUmVmZXJlbmNlKHN0YXRlbWVudCwgcmVmZXJlbmNlKSB7XG4gIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKSxcbiAgICAgICAgcmVmZXJuZWNlU3RyaW5nID0gcmVmZXJlbmNlLmdldFN0cmluZygpLFxuICAgICAgICBtZXRhTGV2ZWxBc3N1bXB0aW9uU3RyaW5nID0gYCR7cmVmZXJuZWNlU3RyaW5nfSA6OiAke3N0YXRlbWVudFN0cmluZ31gO1xuXG4gIHJldHVybiBtZXRhTGV2ZWxBc3N1bXB0aW9uU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2VkdXJlQ2FsbFN0cmluZ0Zyb21Qcm9jZWR1cmVSZWZlcmVuY2VBbmRQYXJhbWV0ZXJzKHByb2NlZHVyZVJlZmVyZW5jZSwgcGFyYW1ldGVycykge1xuICBjb25zdCBwcm9jZWR1cmVSZWZlcmVuY2VOYW1lID0gcHJvY2VkdXJlUmVmZXJlbmNlLmdldE5hbWUoKSxcbiAgICAgICAgcGFyYW1ldGVyc1N0cmluZyA9IHBhcmFtZXRlcnNTdHJpbmdGcm9tUGFyYW1ldGVycyhwYXJhbWV0ZXJzKSxcbiAgICAgICAgcHJvY2VkdXJlQ2FsbFN0cmluZyA9IGBAJHtwcm9jZWR1cmVSZWZlcmVuY2VOYW1lfSgke3BhcmFtZXRlcnNTdHJpbmd9KWA7XG5cbiAgcmV0dXJuIHByb2NlZHVyZUNhbGxTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmdGcm9tU3RhdGVtZW50QW5kTWV0YXZhcmlhYmxlKHN0YXRlbWVudCwgbWV0YXZhcmlhYmxlKSB7XG4gIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbWV0YXZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICBzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmcgPSBgWyR7c3RhdGVtZW50U3RyaW5nfSBmb3IgJHttZXRhdmFyaWFibGVTdHJpbmd9XWA7XG5cbiAgcmV0dXJuIHN0YXRlbWVudFN1YnN0aXR1dGlvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZVN1YnN0aXR1dGlvblN0cmluZ0Zyb21SZWZlcmVuY2VBbmRNZXRhdmFyaWFibGUocmVmZXJlbmNlLCBtZXRhdmFyaWFibGUpIHtcbiAgY29uc3QgcmVmZXJlbmNlU3RyaW5nID0gcmVmZXJlbmNlLmdldFN0cmluZygpLFxuICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBtZXRhdmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHJlZmVyZW5jZVN1YnN0aXR1dGlvblN0cmluZyA9IGBbJHtyZWZlcmVuY2VTdHJpbmd9IGZvciAke21ldGF2YXJpYWJsZVN0cmluZ31dYDtcblxuICByZXR1cm4gcmVmZXJlbmNlU3Vic3RpdHV0aW9uU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9wTGV2ZWxBc3NlcnRpb25TdHJpbmdGcm9tTGFiZWxzU3VwcG9zaXRpb25zQW5kRGVkdWN0aW9uKGxhYmVscywgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24pIHtcbiAgbGV0IHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nO1xuXG4gIGNvbnN0IHN1cHBvc2l0aW9uc1N0cmluZyA9IHN1cHBvc2l0aW9uc1N0cmluZ0Zyb21TdXBwb3NpdGlvbnMoc3VwcG9zaXRpb25zKSxcbiAgICAgICAgZGVkdWN0aW9uU3RyaW5nID0gZGVkdWN0aW9uLmdldFN0cmluZygpLFxuICAgICAgICBsYWJlbHNTdHJpbmcgPSBsYWJlbHNTdHJpbmdGcm9tTGFiZWxzKGxhYmVscyk7XG5cbiAgaWYgKGxhYmVsc1N0cmluZyAhPT0gbnVsbCkge1xuICAgIHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nID0gKHN1cHBvc2l0aW9uc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke2xhYmVsc1N0cmluZ30gOjogWyR7c3VwcG9zaXRpb25zU3RyaW5nfV0uLi4ke2RlZHVjdGlvblN0cmluZ31gIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke2xhYmVsc1N0cmluZ30gOjogJHtkZWR1Y3Rpb25TdHJpbmd9YDtcbiAgfSBlbHNlIHtcbiAgICB0b3BMZXZlbEFzc2VydGlvblN0cmluZyA9IChzdXBwb3NpdGlvbnNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgWyR7c3VwcG9zaXRpb25zU3RyaW5nfV0uLi4ke2RlZHVjdGlvblN0cmluZ31gIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWR1Y3Rpb25TdHJpbmc7XG4gIH1cblxuICByZXR1cm4gdG9wTGV2ZWxBc3NlcnRpb25TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b3BMZXZlbE1ldGFBc3NlcnRpb25TdHJpbmdGcm9tTGFiZWxTdXBwb3NpdGlvbnNBbmREZWR1Y3Rpb24obGFiZWwsIHN1cHBvc2l0aW9ucywgZGVkdWN0aW9uKSB7XG4gIGNvbnN0IGxhYmVsU3RyaW5nID0gbGFiZWwuZ2V0U3RyaW5nKCksXG4gICAgICAgIGRlZHVjdGlvblN0cmluZyA9IGRlZHVjdGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgc3VwcG9zaXRpb25zU3RyaW5nID0gc3VwcG9zaXRpb25zU3RyaW5nRnJvbVN1cHBvc2l0aW9ucyhzdXBwb3NpdGlvbnMpLFxuICAgICAgICB0b3BMZXZlbE1ldGFBc3NlcnRpb25TdHJpbmcgPSAoc3VwcG9zaXRpb25zU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtsYWJlbFN0cmluZ30gOjogWyR7c3VwcG9zaXRpb25zU3RyaW5nfV0uLi4ke2RlZHVjdGlvblN0cmluZ31gIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7bGFiZWxTdHJpbmd9IDo6ICR7ZGVkdWN0aW9uU3RyaW5nfWA7XG5cbiAgcmV0dXJuIHRvcExldmVsTWV0YUFzc2VydGlvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudFN1YnN0aXR1dGlvblN0cmluZ0Zyb21TdGF0ZW1lbnRNZXRhdmFyaWFibGVBbmRTdWJzdGl0dXRpb24oc3RhdGVtZW50LCBtZXRhdmFyaWFibGUsIHN1YnN0aXR1dGlvbikge1xuICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCksXG4gICAgICAgIG1ldGF2YXJpYWJsZVN0cmluZyA9IG1ldGF2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgc3Vic3RpdHV0aW9uU3RyaW5nID0gc3Vic3RpdHV0aW9uLmdldFN0cmluZygpLFxuICAgICAgICBzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmcgPSBgWyR7c3RhdGVtZW50U3RyaW5nfSBmb3IgJHttZXRhdmFyaWFibGVTdHJpbmd9JHtzdWJzdGl0dXRpb25TdHJpbmd9XWA7XG5cbiAgcmV0dXJuIHN0YXRlbWVudFN1YnN0aXR1dGlvblN0cmluZztcbn1cbiJdLCJuYW1lcyI6WyJlcXVpdmFsZW5jZVN0cmluZ0Zyb21UZXJtcyIsImZyYW1lU3Vic3RpdHV0aW9uU3RyaW5nRnJvbUZyYW1lQW5kTWV0YXZhcmlhYmxlIiwiaHlwb3RoZXNlc1N0cmluZ0Zyb21IeXBvdGhlc2VzIiwibGFiZWxzU3RyaW5nRnJvbUxhYmVscyIsIm1ldGFMZXZlbEFzc3VtcHRpb25TdHJpbmdGcm9tU3RhdGVtZW50QW5kUmVmZXJlbmNlIiwicGFyYW1ldGVyc1N0cmluZ0Zyb21QYXJhbWV0ZXJzIiwicHJlbWlzZXNTdHJpbmdGcm9tUHJlbWlzZXMiLCJwcm9jZWR1cmVDYWxsU3RyaW5nRnJvbVByb2NlZHVyZVJlZmVyZW5jZUFuZFBhcmFtZXRlcnMiLCJyZWZlcmVuY2VTdWJzdGl0dXRpb25TdHJpbmdGcm9tUmVmZXJlbmNlQW5kTWV0YXZhcmlhYmxlIiwicnVsc1N0cmluZ0Zyb21MYWJlbHNQcmVtaXNlc0FuZENvbmNsdXNpb24iLCJzZWN0aW9uU3RyaW5nRnJvbUh5cG90aGVzZXNUb3BMZXZlbEFzc2VydGlvbiIsInNpZ25hdHVyZVN0cmluZ0Zyb21UZXJtcyIsInN0YXRlbWVudFN1YnN0aXR1dGlvblN0cmluZ0Zyb21TdGF0ZW1lbnRBbmRNZXRhdmFyaWFibGUiLCJzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmdGcm9tU3RhdGVtZW50TWV0YXZhcmlhYmxlQW5kU3Vic3RpdHV0aW9uIiwic3VicHJvb2ZTdHJpbmdGcm9tU3VwcG9zaXRpb25zQW5kU3ViRGVyaXZhdGlvbiIsInN1cGVyVHlwZXNTdHJpbmdGcm9tU3VwZXJUeXBlcyIsInN1cHBvc2l0aW9uc1N0cmluZ0Zyb21TdXBwb3NpdGlvbnMiLCJ0ZXJtU3Vic3RpdHV0aW9uU3RyaW5nRnJvbVRlcm1BbmRWYXJpYWJsZSIsInRlcm1zU3RyaW5nRnJvbVRlcm1zIiwidG9wTGV2ZWxBc3NlcnRpb25TdHJpbmdGcm9tTGFiZWxzU3VwcG9zaXRpb25zQW5kRGVkdWN0aW9uIiwidG9wTGV2ZWxNZXRhQXNzZXJ0aW9uU3RyaW5nRnJvbUxhYmVsU3VwcG9zaXRpb25zQW5kRGVkdWN0aW9uIiwidHlwZVN0cmluZ0Zyb21Ob21pbmFsVHlwZU5hbWUiLCJ0ZXJtcyIsInRlcm1zU3RyaW5nIiwicmVkdWNlIiwidGVybSIsInRlcm1TdHJpbmciLCJnZXRTdHJpbmciLCJsYWJlbHMiLCJsYWJlbHNTdHJpbmciLCJsYWJlbCIsImxhYmVsU3RyaW5nIiwicHJlbWlzZXMiLCJwcmVtaXNlc1N0cmluZyIsInByZW1pc2UiLCJwcmVtaXNlU3RyaW5nIiwiaHlwb3RoZXNlcyIsImh5cG90aGVzZXNTdHJpbmciLCJoeXBvdGhlc2lzIiwiaHlwb3RoZXNpc1N0cmluZyIsInN1cGVyVHlwZXMiLCJiYXNlVHlwZSIsImJhc2VUeXBlRnJvbU5vdGhpbmciLCJzdXBlclR5cGVzU3RyaW5nIiwic3VwZXJUeXBlIiwic3VwZXJUeXBlU3RyaW5nIiwicGFyYW1ldGVycyIsInBhcmFtZXRlcnNTdHJpbmciLCJwYXJhbWV0ZXIiLCJwYXJhbWV0ZXJTdHJpbmciLCJzdXBwb3NpdGlvbnMiLCJzdXBwb3NpdGlvbnNTdHJpbmciLCJzdXBwb3NpdGlvbiIsInN1cHBvc2l0aW9uU3RyaW5nIiwic2lnbmF0dXJlU3RyaW5nIiwiZXF1aXZhbGVuY2VTdHJpbmciLCJub21pbmFsVHlwZU5hbWUiLCJ0eXBlU3RyaW5nIiwidmFyaWFibGUiLCJ2YXJpYWJsZVN0cmluZyIsInRlcm1TdWJzdGl0dXRpb25TdHJpbmciLCJjb25jbHVzaW9uIiwiY29uY2x1c2lvblN0cmluZyIsInJ1bGVTdHJpbmciLCJheGlvbSIsImxlbW1hIiwidGhlb3JlbSIsImNvbmplY3R1cmUiLCJ0b3BMZXZlbEFzc2VydGlvbiIsInRvcExldmVsQXNzZXJ0aW9uU3RyaW5nIiwic2VjdGlvblN0cmluZyIsInN1YkRlcml2YXRpb24iLCJsYXN0U3RlcCIsImdldExhc3RTdGVwIiwibGFzdFN0ZXBTdHJpbmciLCJzdWJwcm9vZlN0cmluZyIsImZyYW1lIiwibWV0YXZhcmlhYmxlIiwiZnJhbWVTdHJpbmciLCJtZXRhdmFyaWFibGVTdHJpbmciLCJzdHJpbmciLCJzdGF0ZW1lbnQiLCJyZWZlcmVuY2UiLCJzdGF0ZW1lbnRTdHJpbmciLCJyZWZlcm5lY2VTdHJpbmciLCJtZXRhTGV2ZWxBc3N1bXB0aW9uU3RyaW5nIiwicHJvY2VkdXJlUmVmZXJlbmNlIiwicHJvY2VkdXJlUmVmZXJlbmNlTmFtZSIsImdldE5hbWUiLCJwcm9jZWR1cmVDYWxsU3RyaW5nIiwic3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nIiwicmVmZXJlbmNlU3RyaW5nIiwicmVmZXJlbmNlU3Vic3RpdHV0aW9uU3RyaW5nIiwiZGVkdWN0aW9uIiwiZGVkdWN0aW9uU3RyaW5nIiwidG9wTGV2ZWxNZXRhQXNzZXJ0aW9uU3RyaW5nIiwic3Vic3RpdHV0aW9uIiwic3Vic3RpdHV0aW9uU3RyaW5nIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFnSGdCQTtlQUFBQTs7UUFvREFDO2VBQUFBOztRQXRIQUM7ZUFBQUE7O1FBNUJBQztlQUFBQTs7UUEwSkFDO2VBQUFBOztRQS9GQUM7ZUFBQUE7O1FBN0NBQztlQUFBQTs7UUFvSkFDO2VBQUFBOztRQWdCQUM7ZUFBQUE7O1FBL0RBQztlQUFBQTs7UUFXQUM7ZUFBQUE7O1FBdkNBQztlQUFBQTs7UUFtRkFDO2VBQUFBOztRQStDQUM7ZUFBQUE7O1FBaEZBQztlQUFBQTs7UUEvRkFDO2VBQUFBOztRQStCQUM7ZUFBQUE7O1FBa0NBQztlQUFBQTs7UUF6SEFDO2VBQUFBOztRQXdNQUM7ZUFBQUE7O1FBb0JBQztlQUFBQTs7UUF6R0FDO2VBQUFBOzs7c0JBckhvQjtBQUU3QixTQUFTSCxxQkFBcUJJLEtBQUs7SUFDeEMsTUFBTUMsY0FBY0QsTUFBTUUsTUFBTSxDQUFDLENBQUNELGFBQWFFO1FBQzdDLE1BQU1DLGFBQWFELEtBQUtFLFNBQVM7UUFFakNKLGNBQWMsQUFBQ0EsZ0JBQWdCLE9BQ2hCLEdBQUdBLFlB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
|
|
212
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3RyaW5nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBiYXNlVHlwZUZyb21Ob3RoaW5nIH0gZnJvbSBcIi4uL3V0aWxpdGllcy90eXBlXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtc1N0cmluZ0Zyb21UZXJtcyh0ZXJtcykge1xuICBjb25zdCB0ZXJtc1N0cmluZyA9IHRlcm1zLnJlZHVjZSgodGVybXNTdHJpbmcsIHRlcm0pID0+IHtcbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKTtcblxuICAgIHRlcm1zU3RyaW5nID0gKHRlcm1zU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgYCR7dGVybXNTdHJpbmd9LCAke3Rlcm1TdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgdGVybVN0cmluZztcblxuICAgIHJldHVybiB0ZXJtc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIHRlcm1zU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxzU3RyaW5nRnJvbUxhYmVscyhsYWJlbHMpIHtcbiAgY29uc3QgbGFiZWxzU3RyaW5nID0gbGFiZWxzLnJlZHVjZSgobGFiZWxzU3RyaW5nLCBsYWJlbCkgPT4ge1xuICAgIGNvbnN0IGxhYmVsU3RyaW5nID0gbGFiZWwuZ2V0U3RyaW5nKCk7XG5cbiAgICBsYWJlbHNTdHJpbmcgPSAobGFiZWxzU3RyaW5nID09PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICBsYWJlbFN0cmluZzogLy8vXG4gICAgICAgICAgICAgICAgICAgICAgYCR7bGFiZWxzU3RyaW5nfSwgJHtsYWJlbFN0cmluZ31gO1xuXG4gICAgcmV0dXJuIGxhYmVsc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIGxhYmVsc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZW1pc2VzU3RyaW5nRnJvbVByZW1pc2VzKHByZW1pc2VzKSB7XG4gIGNvbnN0IHByZW1pc2VzU3RyaW5nID0gcHJlbWlzZXMucmVkdWNlKChwcmVtaXNlc1N0cmluZywgcHJlbWlzZSkgPT4ge1xuICAgIGNvbnN0IHByZW1pc2VTdHJpbmcgPSBwcmVtaXNlLmdldFN0cmluZygpO1xuXG4gICAgcHJlbWlzZXNTdHJpbmcgPSAocHJlbWlzZXNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgYCR7cHJlbWlzZXNTdHJpbmd9LCAke3ByZW1pc2VTdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgcHJlbWlzZVN0cmluZzsgIC8vL1xuXG4gICAgcmV0dXJuIHByZW1pc2VzU3RyaW5nO1xuICB9LCBudWxsKTtcblxuICByZXR1cm4gcHJlbWlzZXNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoeXBvdGhlc2VzU3RyaW5nRnJvbUh5cG90aGVzZXMoaHlwb3RoZXNlcykge1xuICBjb25zdCBoeXBvdGhlc2VzU3RyaW5nID0gaHlwb3RoZXNlcy5yZWR1Y2UoKGh5cG90aGVzZXNTdHJpbmcsIGh5cG90aGVzaXMpID0+IHtcbiAgICBjb25zdCBoeXBvdGhlc2lzU3RyaW5nID0gaHlwb3RoZXNpcy5nZXRTdHJpbmcoKTtcblxuICAgIGh5cG90aGVzZXNTdHJpbmcgPSAoaHlwb3RoZXNlc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtoeXBvdGhlc2VzU3RyaW5nfSwgJHtoeXBvdGhlc2lzU3RyaW5nfWAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh5cG90aGVzaXNTdHJpbmc7ICAvLy9cblxuICAgIHJldHVybiBoeXBvdGhlc2VzU3RyaW5nO1xuICB9LCBudWxsKTtcblxuICByZXR1cm4gaHlwb3RoZXNlc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cGVyVHlwZXNTdHJpbmdGcm9tU3VwZXJUeXBlcyhzdXBlclR5cGVzKSB7XG4gIGNvbnN0IGJhc2VUeXBlID0gYmFzZVR5cGVGcm9tTm90aGluZygpLFxuICAgICAgICBzdXBlclR5cGVzU3RyaW5nID0gc3VwZXJUeXBlcy5yZWR1Y2UoKHN1cGVyVHlwZXNTdHJpbmcsIHN1cGVyVHlwZSkgPT4ge1xuICAgICAgICAgIGlmIChzdXBlclR5cGUgIT09IGJhc2VUeXBlKSB7XG4gICAgICAgICAgICBjb25zdCBzdXBlclR5cGVTdHJpbmcgPSBzdXBlclR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgICAgICAgIHN1cGVyVHlwZXNTdHJpbmcgPSAoc3VwZXJUeXBlc1N0cmluZyA9PT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCcke3N1cGVyVHlwZVN0cmluZ30nYCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke3N1cGVyVHlwZXNTdHJpbmd9LCAnJHtzdXBlclR5cGVTdHJpbmd9J2A7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHN1cGVyVHlwZXNTdHJpbmc7XG4gICAgICAgIH0sIG51bGwpO1xuXG4gIHJldHVybiBzdXBlclR5cGVzU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyYW1ldGVyc1N0cmluZ0Zyb21QYXJhbWV0ZXJzKHBhcmFtZXRlcnMpIHtcbiAgY29uc3QgcGFyYW1ldGVyc1N0cmluZyA9IHBhcmFtZXRlcnMucmVkdWNlKChwYXJhbWV0ZXJzU3RyaW5nLCBwYXJhbWV0ZXIpID0+IHtcbiAgICBjb25zdCBwYXJhbWV0ZXJTdHJpbmcgPSBwYXJhbWV0ZXIuZ2V0U3RyaW5nKCk7XG5cbiAgICBwYXJhbWV0ZXJzU3RyaW5nID0gKHBhcmFtZXRlcnNTdHJpbmcgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJTdHJpbmcgOiAvLy9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7cGFyYW1ldGVyc1N0cmluZ30sICR7cGFyYW1ldGVyU3RyaW5nfWA7XG5cbiAgICByZXR1cm4gcGFyYW1ldGVyc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIHBhcmFtZXRlcnNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBwb3NpdGlvbnNTdHJpbmdGcm9tU3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucykge1xuICBjb25zdCBzdXBwb3NpdGlvbnNTdHJpbmcgPSBzdXBwb3NpdGlvbnMucmVkdWNlKChzdXBwb3NpdGlvbnNTdHJpbmcsIHN1cHBvc2l0aW9uKSA9PiB7XG4gICAgY29uc3Qgc3VwcG9zaXRpb25TdHJpbmcgPSBzdXBwb3NpdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIHN1cHBvc2l0aW9uc1N0cmluZyA9IChzdXBwb3NpdGlvbnNTdHJpbmcgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3NpdGlvblN0cmluZzogLy8vXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke3N1cHBvc2l0aW9uc1N0cmluZ30sICR7c3VwcG9zaXRpb25TdHJpbmd9YDtcblxuICAgIHJldHVybiBzdXBwb3NpdGlvbnNTdHJpbmc7XG4gIH0sIG51bGwpO1xuXG4gIHJldHVybiBzdXBwb3NpdGlvbnNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaWduYXR1cmVTdHJpbmdGcm9tVGVybXModGVybXMpIHtcbiAgY29uc3QgdGVybXNTdHJpbmcgPSB0ZXJtc1N0cmluZ0Zyb21UZXJtcyh0ZXJtcyksXG4gICAgICAgIHNpZ25hdHVyZVN0cmluZyA9IGBbJHt0ZXJtc1N0cmluZ31dYDtcblxuICByZXR1cm4gc2lnbmF0dXJlU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXF1aXZhbGVuY2VTdHJpbmdGcm9tVGVybXModGVybXMpIHtcbiAgY29uc3QgdGVybXNTdHJpbmcgPSB0ZXJtc1N0cmluZ0Zyb21UZXJtcyh0ZXJtcyksXG4gICAgICAgIGVxdWl2YWxlbmNlU3RyaW5nID0gYFske3Rlcm1zU3RyaW5nfV1gO1xuXG4gIHJldHVybiBlcXVpdmFsZW5jZVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVTdHJpbmdGcm9tTm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSkge1xuICBjb25zdCB0eXBlU3RyaW5nID0gbm9taW5hbFR5cGVOYW1lOyAgLy8vXG5cbiAgcmV0dXJuIHR5cGVTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtU3Vic3RpdHV0aW9uU3RyaW5nRnJvbVRlcm1BbmRWYXJpYWJsZSh0ZXJtLCB2YXJpYWJsZSkge1xuICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgdmFyaWFibGVTdHJpbmcgPSB2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgdGVybVN1YnN0aXR1dGlvblN0cmluZyA9IGBbJHt0ZXJtU3RyaW5nfSBmb3IgJHt2YXJpYWJsZVN0cmluZ31dYDtcblxuICByZXR1cm4gdGVybVN1YnN0aXR1dGlvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc3VtcHRpb25TdHJpbmdGcm9tUmVmZXJlbmNlQW5kU3RhdGVtZW50KHJlZmVyZW5jZSwgc3RhdGVtZW50KSB7XG4gIGNvbnN0IHJlZmVyZW5jZVN0cmluZyA9IHJlZmVyZW5jZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICBhc3N1bXB0aW9uU3RyaW5nID0gYCR7cmVmZXJlbmNlU3RyaW5nfSA6OiAke3N0YXRlbWVudFN0cmluZ31gO1xuXG4gIHJldHVybiBhc3N1bXB0aW9uU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVsc1N0cmluZ0Zyb21MYWJlbHNQcmVtaXNlc0FuZENvbmNsdXNpb24obGFiZWxzLCBwcmVtaXNlcywgY29uY2x1c2lvbikge1xuICBjb25zdCBjb25jbHVzaW9uU3RyaW5nID0gY29uY2x1c2lvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgcHJlbWlzZXNTdHJpbmcgPSBwcmVtaXNlc1N0cmluZ0Zyb21QcmVtaXNlcyhwcmVtaXNlcyksXG4gICAgICAgIGxhYmVsc1N0cmluZyA9IGxhYmVsc1N0cmluZ0Zyb21MYWJlbHMobGFiZWxzKSxcbiAgICAgICAgcnVsZVN0cmluZyA9IChwcmVtaXNlc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICBgJHtsYWJlbHNTdHJpbmd9IDo6IFske3ByZW1pc2VzU3RyaW5nfV0uLi4ke2NvbmNsdXNpb25TdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgYCR7bGFiZWxzU3RyaW5nfSA6OiAke2NvbmNsdXNpb25TdHJpbmd9YDtcblxuICByZXR1cm4gcnVsZVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlY3Rpb25TdHJpbmdGcm9tSHlwb3RoZXNlc1RvcExldmVsQXNzZXJ0aW9uKGh5cG90aGVzZXMsIGF4aW9tLCBsZW1tYSwgdGhlb3JlbSwgY29uamVjdHVyZSkge1xuICBjb25zdCB0b3BMZXZlbEFzc2VydGlvbiA9IChheGlvbSB8fCBsZW1tYSB8fCB0aGVvcmVtIHx8IGNvbmplY3R1cmUpLFxuICAgICAgICB0b3BMZXZlbEFzc2VydGlvblN0cmluZyA9IHRvcExldmVsQXNzZXJ0aW9uLmdldFN0cmluZygpLFxuICAgICAgICBoeXBvdGhlc2VzU3RyaW5nID0gaHlwb3RoZXNlc1N0cmluZ0Zyb21IeXBvdGhlc2VzKGh5cG90aGVzZXMpLFxuICAgICAgICBzZWN0aW9uU3RyaW5nID0gKHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBbJHtoeXBvdGhlc2VzU3RyaW5nfV06OjogJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ31gIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgWyR7aHlwb3RoZXNlc1N0cmluZ31dOjo6IGA7XG5cbiAgcmV0dXJuIHNlY3Rpb25TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJwcm9vZlN0cmluZ0Zyb21TdXBwb3NpdGlvbnNBbmRTdWJEZXJpdmF0aW9uKHN1cHBvc2l0aW9ucywgc3ViRGVyaXZhdGlvbikge1xuICBjb25zdCBsYXN0U3RlcCA9IHN1YkRlcml2YXRpb24uZ2V0TGFzdFN0ZXAoKSxcbiAgICAgICAgc3VwcG9zaXRpb25zU3RyaW5nID0gc3VwcG9zaXRpb25zU3RyaW5nRnJvbVN1cHBvc2l0aW9ucyhzdXBwb3NpdGlvbnMpLFxuICAgICAgICBsYXN0U3RlcFN0cmluZyA9IGxhc3RTdGVwLmdldFN0cmluZygpLFxuICAgICAgICBzdWJwcm9vZlN0cmluZyA9IGBbJHtzdXBwb3NpdGlvbnNTdHJpbmd9XS4uLiR7bGFzdFN0ZXBTdHJpbmd9YDtcblxuICByZXR1cm4gc3VicHJvb2ZTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmcmFtZVN1YnN0aXR1dGlvblN0cmluZ0Zyb21GcmFtZUFuZE1ldGF2YXJpYWJsZShmcmFtZSwgbWV0YXZhcmlhYmxlKSB7XG4gIGNvbnN0IGZyYW1lU3RyaW5nID0gZnJhbWUuZ2V0U3RyaW5nKCksXG4gICAgICAgIG1ldGF2YXJpYWJsZVN0cmluZyA9IG1ldGF2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgc3RyaW5nID0gYFske2ZyYW1lU3RyaW5nfSBmb3IgWyR7bWV0YXZhcmlhYmxlU3RyaW5nfV1dYDtcblxuICByZXR1cm4gc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YUxldmVsQXNzdW1wdGlvblN0cmluZ0Zyb21SZWZlcmVuY2VBbmRTdGF0ZW1lbnQocmVmZXJlbmNlLCBzdGF0ZW1lbnQpIHtcbiAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICByZWZlcm5lY2VTdHJpbmcgPSByZWZlcmVuY2UuZ2V0U3RyaW5nKCksXG4gICAgICAgIG1ldGFMZXZlbEFzc3VtcHRpb25TdHJpbmcgPSBgJHtyZWZlcm5lY2VTdHJpbmd9IDo6ICR7c3RhdGVtZW50U3RyaW5nfWA7XG5cbiAgcmV0dXJuIG1ldGFMZXZlbEFzc3VtcHRpb25TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVDYWxsU3RyaW5nRnJvbVByb2NlZHVyZVJlZmVyZW5jZUFuZFBhcmFtZXRlcnMocHJvY2VkdXJlUmVmZXJlbmNlLCBwYXJhbWV0ZXJzKSB7XG4gIGNvbnN0IHByb2NlZHVyZVJlZmVyZW5jZU5hbWUgPSBwcm9jZWR1cmVSZWZlcmVuY2UuZ2V0TmFtZSgpLFxuICAgICAgICBwYXJhbWV0ZXJzU3RyaW5nID0gcGFyYW1ldGVyc1N0cmluZ0Zyb21QYXJhbWV0ZXJzKHBhcmFtZXRlcnMpLFxuICAgICAgICBwcm9jZWR1cmVDYWxsU3RyaW5nID0gYEAke3Byb2NlZHVyZVJlZmVyZW5jZU5hbWV9KCR7cGFyYW1ldGVyc1N0cmluZ30pYDtcblxuICByZXR1cm4gcHJvY2VkdXJlQ2FsbFN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudFN1YnN0aXR1dGlvblN0cmluZ0Zyb21TdGF0ZW1lbnRBbmRNZXRhdmFyaWFibGUoc3RhdGVtZW50LCBtZXRhdmFyaWFibGUpIHtcbiAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBtZXRhdmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHN0YXRlbWVudFN1YnN0aXR1dGlvblN0cmluZyA9IGBbJHtzdGF0ZW1lbnRTdHJpbmd9IGZvciAke21ldGF2YXJpYWJsZVN0cmluZ31dYDtcblxuICByZXR1cm4gc3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVmZXJlbmNlU3Vic3RpdHV0aW9uU3RyaW5nRnJvbVJlZmVyZW5jZUFuZE1ldGF2YXJpYWJsZShyZWZlcmVuY2UsIG1ldGF2YXJpYWJsZSkge1xuICBjb25zdCByZWZlcmVuY2VTdHJpbmcgPSByZWZlcmVuY2UuZ2V0U3RyaW5nKCksXG4gICAgICAgIG1ldGF2YXJpYWJsZVN0cmluZyA9IG1ldGF2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgcmVmZXJlbmNlU3Vic3RpdHV0aW9uU3RyaW5nID0gYFske3JlZmVyZW5jZVN0cmluZ30gZm9yICR7bWV0YXZhcmlhYmxlU3RyaW5nfV1gO1xuXG4gIHJldHVybiByZWZlcmVuY2VTdWJzdGl0dXRpb25TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b3BMZXZlbEFzc2VydGlvblN0cmluZ0Zyb21MYWJlbHNTdXBwb3NpdGlvbnNBbmREZWR1Y3Rpb24obGFiZWxzLCBzdXBwb3NpdGlvbnMsIGRlZHVjdGlvbikge1xuICBsZXQgdG9wTGV2ZWxBc3NlcnRpb25TdHJpbmc7XG5cbiAgY29uc3Qgc3VwcG9zaXRpb25zU3RyaW5nID0gc3VwcG9zaXRpb25zU3RyaW5nRnJvbVN1cHBvc2l0aW9ucyhzdXBwb3NpdGlvbnMpLFxuICAgICAgICBkZWR1Y3Rpb25TdHJpbmcgPSBkZWR1Y3Rpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgIGxhYmVsc1N0cmluZyA9IGxhYmVsc1N0cmluZ0Zyb21MYWJlbHMobGFiZWxzKTtcblxuICBpZiAobGFiZWxzU3RyaW5nICE9PSBudWxsKSB7XG4gICAgdG9wTGV2ZWxBc3NlcnRpb25TdHJpbmcgPSAoc3VwcG9zaXRpb25zU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7bGFiZWxzU3RyaW5nfSA6OiBbJHtzdXBwb3NpdGlvbnNTdHJpbmd9XS4uLiR7ZGVkdWN0aW9uU3RyaW5nfWAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7bGFiZWxzU3RyaW5nfSA6OiAke2RlZHVjdGlvblN0cmluZ31gO1xuICB9IGVsc2Uge1xuICAgIHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nID0gKHN1cHBvc2l0aW9uc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBbJHtzdXBwb3NpdGlvbnNTdHJpbmd9XS4uLiR7ZGVkdWN0aW9uU3RyaW5nfWAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZHVjdGlvblN0cmluZztcbiAgfVxuXG4gIHJldHVybiB0b3BMZXZlbEFzc2VydGlvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvcExldmVsTWV0YUFzc2VydGlvblN0cmluZ0Zyb21MYWJlbFN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbihsYWJlbCwgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24pIHtcbiAgY29uc3QgbGFiZWxTdHJpbmcgPSBsYWJlbC5nZXRTdHJpbmcoKSxcbiAgICAgICAgZGVkdWN0aW9uU3RyaW5nID0gZGVkdWN0aW9uLmdldFN0cmluZygpLFxuICAgICAgICBzdXBwb3NpdGlvbnNTdHJpbmcgPSBzdXBwb3NpdGlvbnNTdHJpbmdGcm9tU3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucyksXG4gICAgICAgIHRvcExldmVsTWV0YUFzc2VydGlvblN0cmluZyA9IChzdXBwb3NpdGlvbnNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke2xhYmVsU3RyaW5nfSA6OiBbJHtzdXBwb3NpdGlvbnNTdHJpbmd9XS4uLiR7ZGVkdWN0aW9uU3RyaW5nfWAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtsYWJlbFN0cmluZ30gOjogJHtkZWR1Y3Rpb25TdHJpbmd9YDtcblxuICByZXR1cm4gdG9wTGV2ZWxNZXRhQXNzZXJ0aW9uU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nRnJvbVN0YXRlbWVudE1ldGF2YXJpYWJsZUFuZFN1YnN0aXR1dGlvbihzdGF0ZW1lbnQsIG1ldGF2YXJpYWJsZSwgc3Vic3RpdHV0aW9uKSB7XG4gIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbWV0YXZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICBzdWJzdGl0dXRpb25TdHJpbmcgPSBzdWJzdGl0dXRpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgIHN0YXRlbWVudFN1YnN0aXR1dGlvblN0cmluZyA9IGBbJHtzdGF0ZW1lbnRTdHJpbmd9IGZvciAke21ldGF2YXJpYWJsZVN0cmluZ30ke3N1YnN0aXR1dGlvblN0cmluZ31dYDtcblxuICByZXR1cm4gc3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nO1xufVxuIl0sIm5hbWVzIjpbImFzc3VtcHRpb25TdHJpbmdGcm9tUmVmZXJlbmNlQW5kU3RhdGVtZW50IiwiZXF1aXZhbGVuY2VTdHJpbmdGcm9tVGVybXMiLCJmcmFtZVN1YnN0aXR1dGlvblN0cmluZ0Zyb21GcmFtZUFuZE1ldGF2YXJpYWJsZSIsImh5cG90aGVzZXNTdHJpbmdGcm9tSHlwb3RoZXNlcyIsImxhYmVsc1N0cmluZ0Zyb21MYWJlbHMiLCJtZXRhTGV2ZWxBc3N1bXB0aW9uU3RyaW5nRnJvbVJlZmVyZW5jZUFuZFN0YXRlbWVudCIsInBhcmFtZXRlcnNTdHJpbmdGcm9tUGFyYW1ldGVycyIsInByZW1pc2VzU3RyaW5nRnJvbVByZW1pc2VzIiwicHJvY2VkdXJlQ2FsbFN0cmluZ0Zyb21Qcm9jZWR1cmVSZWZlcmVuY2VBbmRQYXJhbWV0ZXJzIiwicmVmZXJlbmNlU3Vic3RpdHV0aW9uU3RyaW5nRnJvbVJlZmVyZW5jZUFuZE1ldGF2YXJpYWJsZSIsInJ1bHNTdHJpbmdGcm9tTGFiZWxzUHJlbWlzZXNBbmRDb25jbHVzaW9uIiwic2VjdGlvblN0cmluZ0Zyb21IeXBvdGhlc2VzVG9wTGV2ZWxBc3NlcnRpb24iLCJzaWduYXR1cmVTdHJpbmdGcm9tVGVybXMiLCJzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmdGcm9tU3RhdGVtZW50QW5kTWV0YXZhcmlhYmxlIiwic3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nRnJvbVN0YXRlbWVudE1ldGF2YXJpYWJsZUFuZFN1YnN0aXR1dGlvbiIsInN1YnByb29mU3RyaW5nRnJvbVN1cHBvc2l0aW9uc0FuZFN1YkRlcml2YXRpb24iLCJzdXBlclR5cGVzU3RyaW5nRnJvbVN1cGVyVHlwZXMiLCJzdXBwb3NpdGlvbnNTdHJpbmdGcm9tU3VwcG9zaXRpb25zIiwidGVybVN1YnN0aXR1dGlvblN0cmluZ0Zyb21UZXJtQW5kVmFyaWFibGUiLCJ0ZXJtc1N0cmluZ0Zyb21UZXJtcyIsInRvcExldmVsQXNzZXJ0aW9uU3RyaW5nRnJvbUxhYmVsc1N1cHBvc2l0aW9uc0FuZERlZHVjdGlvbiIsInRvcExldmVsTWV0YUFzc2VydGlvblN0cmluZ0Zyb21MYWJlbFN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbiIsInR5cGVTdHJpbmdGcm9tTm9taW5hbFR5cGVOYW1lIiwidGVybXMiLCJ0ZXJtc1N0cmluZyIsInJlZHVjZSIsInRlcm0iLCJ0ZXJtU3RyaW5nIiwiZ2V0U3RyaW5nIiwibGFiZWxzIiwibGFiZWxzU3RyaW5nIiwibGFiZWwiLCJsYWJlbFN0cmluZyIsInByZW1pc2VzIiwicHJlbWlzZXNTdHJpbmciLCJwcmVtaXNlIiwicHJlbWlzZVN0cmluZyIsImh5cG90aGVzZXMiLCJoeXBvdGhlc2VzU3RyaW5nIiwiaHlwb3RoZXNpcyIsImh5cG90aGVzaXNTdHJpbmciLCJzdXBlclR5cGVzIiwiYmFzZVR5cGUiLCJiYXNlVHlwZUZyb21Ob3RoaW5nIiwic3VwZXJUeXBlc1N0cmluZyIsInN1cGVyVHlwZSIsInN1cGVyVHlwZVN0cmluZyIsInBhcmFtZXRlcnMiLCJwYXJhbWV0ZXJzU3RyaW5nIiwicGFyYW1ldGVyIiwicGFyYW1ldGVyU3RyaW5nIiwic3VwcG9zaXRpb25zIiwic3VwcG9zaXRpb25zU3RyaW5nIiwic3VwcG9zaXRpb24iLCJzdXBwb3NpdGlvblN0cmluZyIsInNpZ25hdHVyZVN0cmluZyIsImVxdWl2YWxlbmNlU3RyaW5nIiwibm9taW5hbFR5cGVOYW1lIiwidHlwZVN0cmluZyIsInZhcmlhYmxlIiwidmFyaWFibGVTdHJpbmciLCJ0ZXJtU3Vic3RpdHV0aW9uU3RyaW5nIiwicmVmZXJlbmNlIiwic3RhdGVtZW50IiwicmVmZXJlbmNlU3RyaW5nIiwic3RhdGVtZW50U3RyaW5nIiwiYXNzdW1wdGlvblN0cmluZyIsImNvbmNsdXNpb24iLCJjb25jbHVzaW9uU3RyaW5nIiwicnVsZVN0cmluZyIsImF4aW9tIiwibGVtbWEiLCJ0aGVvcmVtIiwiY29uamVjdHVyZSIsInRvcExldmVsQXNzZXJ0aW9uIiwidG9wTGV2ZWxBc3NlcnRpb25TdHJpbmciLCJzZWN0aW9uU3RyaW5nIiwic3ViRGVyaXZhdGlvbiIsImxhc3RTdGVwIiwiZ2V0TGFzdFN0ZXAiLCJsYXN0U3RlcFN0cmluZyIsInN1YnByb29mU3RyaW5nIiwiZnJhbWUiLCJtZXRhdmFyaWFibGUiLCJmcmFtZVN0cmluZyIsIm1ldGF2YXJpYWJsZVN0cmluZyIsInN0cmluZyIsInJlZmVybmVjZVN0cmluZyIsIm1ldGFMZXZlbEFzc3VtcHRpb25TdHJpbmciLCJwcm9jZWR1cmVSZWZlcmVuY2UiLCJwcm9jZWR1cmVSZWZlcmVuY2VOYW1lIiwiZ2V0TmFtZSIsInByb2NlZHVyZUNhbGxTdHJpbmciLCJzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmciLCJyZWZlcmVuY2VTdWJzdGl0dXRpb25TdHJpbmciLCJkZWR1Y3Rpb24iLCJkZWR1Y3Rpb25TdHJpbmciLCJ0b3BMZXZlbE1ldGFBc3NlcnRpb25TdHJpbmciLCJzdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb25TdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQXFJZ0JBO2VBQUFBOztRQXJCQUM7ZUFBQUE7O1FBNERBQztlQUFBQTs7UUE5SEFDO2VBQUFBOztRQTVCQUM7ZUFBQUE7O1FBa0tBQztlQUFBQTs7UUF2R0FDO2VBQUFBOztRQTdD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
|
package/package.json
CHANGED
|
@@ -646,12 +646,30 @@ export default class NominalFileContext extends FileContext {
|
|
|
646
646
|
return declaredMetavariable;
|
|
647
647
|
}
|
|
648
648
|
|
|
649
|
+
findTermByTermNode(termNode) {
|
|
650
|
+
const term = null;
|
|
651
|
+
|
|
652
|
+
return term;
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
findStatementByStatementNode(statementNode) {
|
|
656
|
+
const statement = null;
|
|
657
|
+
|
|
658
|
+
return statement;
|
|
659
|
+
}
|
|
660
|
+
|
|
649
661
|
findSubstitutionByVariableNode(variableNode) {
|
|
650
662
|
const substitution = null;
|
|
651
663
|
|
|
652
664
|
return substitution;
|
|
653
665
|
}
|
|
654
666
|
|
|
667
|
+
findMetavariableByMetavariableNode(metavariableNode) {
|
|
668
|
+
const metavariable = null;
|
|
669
|
+
|
|
670
|
+
return metavariable;
|
|
671
|
+
}
|
|
672
|
+
|
|
655
673
|
findSubstitutionByMetavariableNode(metavariableNode) {
|
|
656
674
|
const substitution = null;
|
|
657
675
|
|
package/src/context/liminal.js
CHANGED
|
@@ -70,7 +70,7 @@ export default class LiminalContext extends Context {
|
|
|
70
70
|
derivedSubstitutionA = derivedSubstitution, ///
|
|
71
71
|
derivedSubstitutionString = derivedSubstitution.getString();
|
|
72
72
|
|
|
73
|
-
context.trace(`Adding the '${derivedSubstitutionString}'
|
|
73
|
+
context.trace(`Adding the '${derivedSubstitutionString}' derived substitution to the liminal context...`);
|
|
74
74
|
|
|
75
75
|
const derivedSubstitutionB = this.derivedSubstitutions.find((derivedSubstitution) => {
|
|
76
76
|
const derivedSubstitutionB = derivedSubstitution, ///
|
|
@@ -82,12 +82,12 @@ export default class LiminalContext extends Context {
|
|
|
82
82
|
}) || null;
|
|
83
83
|
|
|
84
84
|
if (derivedSubstitutionB !== null) {
|
|
85
|
-
context.debug(`The '${derivedSubstitutionString}'
|
|
85
|
+
context.debug(`The '${derivedSubstitutionString}' derived substitution has already been added to the liminal context.`);
|
|
86
86
|
} else {
|
|
87
87
|
this.derivedSubstitutions.push(derivedSubstitution);
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
-
context.debug(`...added the '${derivedSubstitutionString}'
|
|
90
|
+
context.debug(`...added the '${derivedSubstitutionString}' derived substitution to the liminal context.`);
|
|
91
91
|
}
|
|
92
92
|
|
|
93
93
|
addDerivedSubstitutions(derivedSubstitutions) {
|
package/src/context/mnemic.js
CHANGED
|
@@ -491,6 +491,10 @@ export default class MnemicContext extends Context {
|
|
|
491
491
|
///
|
|
492
492
|
}
|
|
493
493
|
|
|
494
|
+
addDerivedSubstitutions(derivedSubstitutions) {
|
|
495
|
+
///
|
|
496
|
+
}
|
|
497
|
+
|
|
494
498
|
findVariableByVariableNode(variableNode) {
|
|
495
499
|
const variableIdentifier = variableNode.getVariableIdentifier(),
|
|
496
500
|
declaredVariable = this.findDeclaredVariableByVariableIdentifier(variableIdentifier),
|
package/src/context/synoptic.js
CHANGED
|
@@ -18,7 +18,7 @@ import { compressTerms,
|
|
|
18
18
|
const { push } = arrayUtilities;
|
|
19
19
|
|
|
20
20
|
export default class SynopticContext extends Context {
|
|
21
|
-
constructor(context, terms, frames, equalities, judgements, assertions, statements, references, assumptions, metavariables, substitutions) {
|
|
21
|
+
constructor(context, terms, frames, equalities, judgements, assertions, statements, references, assumptions, metavariables, substitutions, derivedSubstitutions) {
|
|
22
22
|
super(context);
|
|
23
23
|
|
|
24
24
|
this.terms = terms;
|
|
@@ -31,6 +31,7 @@ export default class SynopticContext extends Context {
|
|
|
31
31
|
this.assumptions = assumptions;
|
|
32
32
|
this.metavariables = metavariables;
|
|
33
33
|
this.substitutions = substitutions;
|
|
34
|
+
this.derivedSubstitutions = derivedSubstitutions;
|
|
34
35
|
}
|
|
35
36
|
|
|
36
37
|
getTerms(terms = []) {
|
|
@@ -133,6 +134,14 @@ export default class SynopticContext extends Context {
|
|
|
133
134
|
return substitutions;
|
|
134
135
|
}
|
|
135
136
|
|
|
137
|
+
getDerivedSubstitutions(derivedSubstitutions = []) {
|
|
138
|
+
push(derivedSubstitutions, this.derivedSubstitutions);
|
|
139
|
+
|
|
140
|
+
this.context.getDerivedSubstitutions(derivedSubstitutions);
|
|
141
|
+
|
|
142
|
+
return derivedSubstitutions;
|
|
143
|
+
}
|
|
144
|
+
|
|
136
145
|
findTermByTermNode(termNode) {
|
|
137
146
|
const terms = this.getTerms(),
|
|
138
147
|
term = terms.find((term) => {
|
|
@@ -288,7 +297,8 @@ export default class SynopticContext extends Context {
|
|
|
288
297
|
assumptions = assumptionsFromContexts(contexts),
|
|
289
298
|
metavariables = metavariablesFromContexts(contexts),
|
|
290
299
|
substitutions = substitutionsFromContexts(contexts),
|
|
291
|
-
|
|
300
|
+
derivedSubstitutions = derivedSubstitutionsFromContexts(contexts),
|
|
301
|
+
synopticContext = new SynopticContext(context, terms, frames, equalities, judgements, assertions, statements, references, assumptions, metavariables, substitutions, derivedSubstitutions);
|
|
292
302
|
|
|
293
303
|
return synopticContext;
|
|
294
304
|
}
|
|
@@ -413,3 +423,13 @@ function substitutionsFromContexts(contexts) {
|
|
|
413
423
|
|
|
414
424
|
return substitutions;
|
|
415
425
|
}
|
|
426
|
+
|
|
427
|
+
function derivedSubstitutionsFromContexts(contexts) {
|
|
428
|
+
const derivedSubstitutions = [];
|
|
429
|
+
|
|
430
|
+
contexts.forEach((context) => {
|
|
431
|
+
context.getDerivedSubstitutions(derivedSubstitutions);
|
|
432
|
+
});
|
|
433
|
+
|
|
434
|
+
return derivedSubstitutions;
|
|
435
|
+
}
|
package/src/context.js
CHANGED
|
@@ -600,6 +600,12 @@ export default class Context extends ContextBase {
|
|
|
600
600
|
context.addSubstitutions(substitutions);
|
|
601
601
|
}
|
|
602
602
|
|
|
603
|
+
addDerivedSubstitutions(derivedSubstitutions) {
|
|
604
|
+
const context = this.getContext();
|
|
605
|
+
|
|
606
|
+
context.addDerivedSubstitutions(derivedSubstitutions);
|
|
607
|
+
}
|
|
608
|
+
|
|
603
609
|
addTerm(term) {
|
|
604
610
|
const context = this.getContext();
|
|
605
611
|
|
|
@@ -3,10 +3,12 @@
|
|
|
3
3
|
import { Element } from "occam-languages";
|
|
4
4
|
|
|
5
5
|
import { define } from "../../elements";
|
|
6
|
+
import { unifyStatement } from "../../process/unify";
|
|
7
|
+
import { stripBracketsFromStatement } from "../../utilities/brackets";
|
|
6
8
|
import { instantiateMetaLevelAssumption } from "../../process/instantiate";
|
|
7
9
|
import { metaLevelAssumptionFromMetaLevelAssumptionNode } from "../../utilities/element";
|
|
8
|
-
import {
|
|
9
|
-
import { ablate, attempt, descend, serialise, unserialise, instantiate } from "../../utilities/context";
|
|
10
|
+
import { metaLevelAssumptionStringFromReferenceAndStatement } from "../../utilities/string";
|
|
11
|
+
import { join, ablate, attempt, descend, reconcile, serialise, unserialise, instantiate } from "../../utilities/context";
|
|
10
12
|
|
|
11
13
|
export default define(class MetaLevelAssumption extends Element {
|
|
12
14
|
constructor(context, string, node, lineIndex, reference, statement) {
|
|
@@ -198,6 +200,85 @@ export default define(class MetaLevelAssumption extends Element {
|
|
|
198
200
|
return validatesWhenDerived;
|
|
199
201
|
}
|
|
200
202
|
|
|
203
|
+
unifyAssumption(assumption, context) {
|
|
204
|
+
let assumptionUnifies;
|
|
205
|
+
|
|
206
|
+
const assumptionString = assumption.getString(), ///
|
|
207
|
+
metaLevelAssumptionString = this.getString();
|
|
208
|
+
|
|
209
|
+
context.trace(`Unifying the '${assumptionString}' assumption with the '${metaLevelAssumptionString}' meta-level assumption...`);
|
|
210
|
+
|
|
211
|
+
const metaLevelAssumptionContext = this.getContext(), ///
|
|
212
|
+
assumptionContext = assumption.getContext(),
|
|
213
|
+
specificContext = assumptionContext, ///
|
|
214
|
+
generalContext = metaLevelAssumptionContext; ///
|
|
215
|
+
|
|
216
|
+
join((specificContext) => {
|
|
217
|
+
reconcile((specificContext) => {
|
|
218
|
+
const reference = assumption.getReference(),
|
|
219
|
+
referneceUnifies = this.unifyReference(reference, generalContext, specificContext);
|
|
220
|
+
|
|
221
|
+
if (referneceUnifies) {
|
|
222
|
+
const statement = assumption.getStatement(),
|
|
223
|
+
statementUnifieds = this.unifyStatement(statement, generalContext, specificContext);
|
|
224
|
+
|
|
225
|
+
if (statementUnifieds) {
|
|
226
|
+
specificContext.commit(context);
|
|
227
|
+
|
|
228
|
+
assumptionUnifies = true;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}, specificContext);
|
|
232
|
+
}, specificContext, context);
|
|
233
|
+
|
|
234
|
+
if (assumptionUnifies) {
|
|
235
|
+
context.debug(`...unified the '${assumptionString}' assumption with the '${metaLevelAssumptionString}' meta-level assumption...`);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
return assumptionUnifies;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
unifyReference(reference, generalContext, specificContext) {
|
|
242
|
+
let referenceUnifies;
|
|
243
|
+
|
|
244
|
+
const context = specificContext, ///
|
|
245
|
+
referenceString = reference.getString(),
|
|
246
|
+
metaLevelAssumptionString = this.getString(); ///
|
|
247
|
+
|
|
248
|
+
context.trace(`Unifying the '${referenceString}' reference with the '${metaLevelAssumptionString}' meta-level assumption's reference...`);
|
|
249
|
+
|
|
250
|
+
const metavariable = this.getMetavariable();
|
|
251
|
+
|
|
252
|
+
referenceUnifies = metavariable.unifyReference(reference, generalContext, specificContext);
|
|
253
|
+
|
|
254
|
+
if (referenceUnifies) {
|
|
255
|
+
context.debug(`..unified the '${referenceString}' with the '${metaLevelAssumptionString}' meta-level assumption's reference.`);
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
return referenceUnifies;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
unifyStatement(statement, generalContext, specificContext) {
|
|
262
|
+
let statementUnifies;
|
|
263
|
+
|
|
264
|
+
const context = specificContext, ///
|
|
265
|
+
statementString = statement.getString(),
|
|
266
|
+
metaLevelAssumptionString = this.getString(); ///
|
|
267
|
+
|
|
268
|
+
context.trace(`Unifying the '${statementString}' statement with the '${metaLevelAssumptionString}' meta-level assumption's statement...`);
|
|
269
|
+
|
|
270
|
+
const generalStatement = stripBracketsFromStatement(this.statement, context), ///
|
|
271
|
+
specificStatement = stripBracketsFromStatement(statement, context); ///
|
|
272
|
+
|
|
273
|
+
statementUnifies = unifyStatement(generalStatement, specificStatement, generalContext, specificContext);
|
|
274
|
+
|
|
275
|
+
if (statementUnifies) {
|
|
276
|
+
context.debug(`...unified the '${statementString}' statement with the '${metaLevelAssumptionString}' meta-level assumption's statement.`);
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
return statementUnifies;
|
|
280
|
+
}
|
|
281
|
+
|
|
201
282
|
toJSON() {
|
|
202
283
|
const context = this.getContext();
|
|
203
284
|
|
|
@@ -239,9 +320,9 @@ export default define(class MetaLevelAssumption extends Element {
|
|
|
239
320
|
|
|
240
321
|
ablate((context) => {
|
|
241
322
|
instantiate((context) => {
|
|
242
|
-
const
|
|
243
|
-
|
|
244
|
-
metaLevelAssumptionString =
|
|
323
|
+
const reference = step.getReference(),
|
|
324
|
+
statement = step.getStatement(),
|
|
325
|
+
metaLevelAssumptionString = metaLevelAssumptionStringFromReferenceAndStatement(reference, statement),
|
|
245
326
|
string = metaLevelAssumptionString, ///
|
|
246
327
|
metaLevelAssumptionNode = instantiateMetaLevelAssumption(string, context);
|
|
247
328
|
|
|
@@ -3,9 +3,8 @@
|
|
|
3
3
|
import { Element } from "occam-languages";
|
|
4
4
|
|
|
5
5
|
import { define } from "../elements";
|
|
6
|
-
import {
|
|
6
|
+
import { instantiate } from "../utilities/context";
|
|
7
7
|
import { instantiateAssumption } from "../process/instantiate";
|
|
8
|
-
import { join, reconcile, instantiate } from "../utilities/context";
|
|
9
8
|
|
|
10
9
|
export default define(class Assumption extends Element {
|
|
11
10
|
constructor(context, string, node, lineIndex, reference, statement) {
|
|
@@ -202,45 +201,6 @@ export default define(class Assumption extends Element {
|
|
|
202
201
|
return validatesWhenDerived;
|
|
203
202
|
}
|
|
204
203
|
|
|
205
|
-
unifyMetaLevelAssumption(metaLevelAssumption, context) {
|
|
206
|
-
let metaLevelAssumptionUnifies;
|
|
207
|
-
|
|
208
|
-
const assumptionString = this.getString(), ///
|
|
209
|
-
metaLevelAssumptionString = metaLevelAssumption.getString();
|
|
210
|
-
|
|
211
|
-
context.trace(`Unifying the '${metaLevelAssumptionString}' meta-level assumption with the '${assumptionString}' assumption...`);
|
|
212
|
-
|
|
213
|
-
const metaLevelAssumptionContext = metaLevelAssumption.getContext(),
|
|
214
|
-
assumptionContext = this.getContext(),
|
|
215
|
-
generalContext = assumptionContext, ///
|
|
216
|
-
specificContext = metaLevelAssumptionContext; ///
|
|
217
|
-
|
|
218
|
-
join((specificContext) => {
|
|
219
|
-
reconcile((specificContext) => {
|
|
220
|
-
const generalAssumption = this, ///
|
|
221
|
-
specificAssumption = metaLevelAssumption, ///
|
|
222
|
-
assumptionUnifies = unifyAssumption(generalAssumption, specificAssumption, generalContext, specificContext);
|
|
223
|
-
|
|
224
|
-
if (assumptionUnifies) {
|
|
225
|
-
const assumption = this, ///
|
|
226
|
-
specificContextQualifies = specificContext.qualify(assumption, metaLevelAssumption);
|
|
227
|
-
|
|
228
|
-
if (specificContextQualifies) {
|
|
229
|
-
specificContext.commit(context);
|
|
230
|
-
|
|
231
|
-
metaLevelAssumptionUnifies = true;
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
}, specificContext);
|
|
235
|
-
}, specificContext, context);
|
|
236
|
-
|
|
237
|
-
if (metaLevelAssumptionUnifies) {
|
|
238
|
-
context.debug(`...unified the '${metaLevelAssumptionString}' meta-level assumption with the '${assumptionString}' assumption.`);
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
return metaLevelAssumptionUnifies;
|
|
242
|
-
}
|
|
243
|
-
|
|
244
204
|
unifyTopLevelMetaAssertion(topLevelMetaAssertion, context) {
|
|
245
205
|
let topLevelMetaAssertionUnifies;
|
|
246
206
|
|
|
@@ -292,7 +252,7 @@ export default define(class Assumption extends Element {
|
|
|
292
252
|
}
|
|
293
253
|
|
|
294
254
|
static fromJSON(json, context) {
|
|
295
|
-
|
|
255
|
+
return instantiate((context) => {
|
|
296
256
|
const { string, lineIndex } = json,
|
|
297
257
|
assumptionNode = instantiateAssumption(string, context),
|
|
298
258
|
node = assumptionNode, ///
|
|
@@ -302,8 +262,6 @@ export default define(class Assumption extends Element {
|
|
|
302
262
|
|
|
303
263
|
return assumption;
|
|
304
264
|
}, context);
|
|
305
|
-
|
|
306
|
-
return assumption;
|
|
307
265
|
}
|
|
308
266
|
});
|
|
309
267
|
|
package/src/element/judgement.js
CHANGED
|
@@ -90,30 +90,28 @@ export default define(class Judgement extends Element {
|
|
|
90
90
|
} else {
|
|
91
91
|
let validates = false;
|
|
92
92
|
|
|
93
|
-
|
|
94
|
-
const frameValidates = this.validateFrame(context);
|
|
93
|
+
const frameValidates = this.validateFrame(context);
|
|
95
94
|
|
|
96
|
-
|
|
97
|
-
|
|
95
|
+
if (frameValidates) {
|
|
96
|
+
const assumptionValidates = this.validateAssumption(context);
|
|
98
97
|
|
|
99
|
-
|
|
100
|
-
|
|
98
|
+
if (assumptionValidates) {
|
|
99
|
+
const stated = context.isStated();
|
|
101
100
|
|
|
102
|
-
|
|
103
|
-
|
|
101
|
+
let validatesWhenStated = false,
|
|
102
|
+
validatesWhenDerived = false;
|
|
104
103
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
104
|
+
if (stated) {
|
|
105
|
+
validatesWhenStated = this.validateWhenStated(context);
|
|
106
|
+
} else {
|
|
107
|
+
validatesWhenDerived = this.validateWhenDerived(context);
|
|
108
|
+
}
|
|
110
109
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
}
|
|
110
|
+
if (validatesWhenStated || validatesWhenDerived) {
|
|
111
|
+
validates = true;
|
|
114
112
|
}
|
|
115
113
|
}
|
|
116
|
-
}
|
|
114
|
+
}
|
|
117
115
|
|
|
118
116
|
if (validates) {
|
|
119
117
|
judgement = this; ///
|
|
@@ -196,26 +194,28 @@ export default define(class Judgement extends Element {
|
|
|
196
194
|
|
|
197
195
|
context.trace(`Validating the '${judgementString}' derived judgement...`);
|
|
198
196
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
const
|
|
197
|
+
reconcile((context) => {
|
|
198
|
+
const assumptions = this.getAssumptions(),
|
|
199
|
+
topLevelMetaAssertion = this.getTopLevelMetaAssertion(),
|
|
200
|
+
metaLevelAssumptions = topLevelMetaAssertion.getMetaLevelAssumptions(),
|
|
201
|
+
metaLevelAssumptionsUnify = metaLevelAssumptions.every((metaLevelAssumption) => {
|
|
202
|
+
const assumptionUnifies = assumptions.some((assumption) => {
|
|
203
|
+
const assumptionUnifies = metaLevelAssumption.unifyAssumption(assumption, context);
|
|
205
204
|
|
|
206
|
-
|
|
205
|
+
if (assumptionUnifies) {
|
|
206
|
+
return true;
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
if (assumptionUnifies) {
|
|
207
211
|
return true;
|
|
208
212
|
}
|
|
209
213
|
});
|
|
210
214
|
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
if (metaLevelAssumptionsUnify) {
|
|
217
|
-
validatesWhenDerived = true;
|
|
218
|
-
}
|
|
215
|
+
if (metaLevelAssumptionsUnify) {
|
|
216
|
+
validatesWhenDerived = true;
|
|
217
|
+
}
|
|
218
|
+
}, context);
|
|
219
219
|
|
|
220
220
|
if (validatesWhenDerived) {
|
|
221
221
|
context.debug(`...validated the '${judgementString}' derived judgement.`);
|
|
@@ -355,6 +355,10 @@ export default define(class Metavariable extends Element {
|
|
|
355
355
|
|
|
356
356
|
frameSubstitution.validate(generalContext, specificContext);
|
|
357
357
|
|
|
358
|
+
const derivedSubstitution = frameSubstitution; ///
|
|
359
|
+
|
|
360
|
+
specificContext.addDerivedSubstitution(derivedSubstitution);
|
|
361
|
+
|
|
358
362
|
frameUnifies = true;
|
|
359
363
|
}
|
|
360
364
|
}
|
|
@@ -407,6 +411,10 @@ export default define(class Metavariable extends Element {
|
|
|
407
411
|
|
|
408
412
|
statementSubstitution.validate(substitution, generalContext, specificContext);
|
|
409
413
|
|
|
414
|
+
const derivedSubstitution = statementSubstitution; ///
|
|
415
|
+
|
|
416
|
+
specificContext.addDerivedSubstitution(derivedSubstitution);
|
|
417
|
+
|
|
410
418
|
statementUnifies = true;
|
|
411
419
|
}
|
|
412
420
|
}
|
|
@@ -452,6 +460,10 @@ export default define(class Metavariable extends Element {
|
|
|
452
460
|
|
|
453
461
|
referenceSubstitution.validate(generalContext, specificContext);
|
|
454
462
|
|
|
463
|
+
const derivedSubstitution = referenceSubstitution; ///
|
|
464
|
+
|
|
465
|
+
specificContext.addDerivedSubstitution(derivedSubstitution);
|
|
466
|
+
|
|
455
467
|
referenceUnifies = true;
|
|
456
468
|
}
|
|
457
469
|
}
|
|
@@ -83,24 +83,6 @@ export default define(class StatementSubstitution extends Substitution {
|
|
|
83
83
|
return comparesToParameter;
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
-
compareSubstitution(substitution) {
|
|
87
|
-
let comparesToSubstitution = false;
|
|
88
|
-
|
|
89
|
-
if (false) {
|
|
90
|
-
///
|
|
91
|
-
} else if ((this.substitution === null) && (substitution === null)){
|
|
92
|
-
comparesToSubstitution = true;
|
|
93
|
-
} else if ((this.substitution !== null) && (substitution !== null)){
|
|
94
|
-
const substitutionEqualToSubstituion = this.substitution.isEqualTo(substitution);
|
|
95
|
-
|
|
96
|
-
if (substitutionEqualToSubstituion) {
|
|
97
|
-
comparesToSubstitution = true;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
return comparesToSubstitution;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
86
|
validate(substitution, generalContext, specificContext) {
|
|
105
87
|
let statementSubstitution = null;
|
|
106
88
|
|
|
@@ -292,9 +274,9 @@ export default define(class StatementSubstitution extends Substitution {
|
|
|
292
274
|
if (replacementStatementUnifies) {
|
|
293
275
|
const nested = false,
|
|
294
276
|
context = specificContext, ///
|
|
295
|
-
|
|
277
|
+
soleNonTrivialDerivedSubstitution = context.getSoleNonTrivialDerivedSubstitution(nested);
|
|
296
278
|
|
|
297
|
-
substitution =
|
|
279
|
+
substitution = soleNonTrivialDerivedSubstitution; ///
|
|
298
280
|
}
|
|
299
281
|
}, specificContext);
|
|
300
282
|
|
package/src/element/variable.js
CHANGED
|
@@ -156,6 +156,10 @@ export default define(class Variable extends Element {
|
|
|
156
156
|
|
|
157
157
|
termSubstitution.validate(generalContext, specificContext);
|
|
158
158
|
|
|
159
|
+
const derivedSubstitution = termSubstitution; ///
|
|
160
|
+
|
|
161
|
+
specificContext.addDerivedSubstitution(derivedSubstitution);
|
|
162
|
+
|
|
159
163
|
termUnifies = true;
|
|
160
164
|
}
|
|
161
165
|
}
|