occam-nominal 1.0.378 → 1.0.382
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/liminal.js +4 -4
- package/lib/element/assertion/contained.js +10 -11
- package/lib/element/assertion/defined.js +10 -11
- package/lib/element/assertion/subproof.js +3 -3
- package/lib/element/frame.js +5 -5
- package/lib/element/substitution/frame.js +6 -9
- package/lib/element/substitution/statement.js +13 -11
- package/lib/element/substitution/term.js +6 -9
- package/package.json +5 -5
- package/src/context/liminal.js +3 -3
- package/src/element/assertion/contained.js +12 -12
- package/src/element/assertion/defined.js +12 -12
- package/src/element/assertion/subproof.js +2 -2
- package/src/element/frame.js +6 -6
- package/src/element/substitution/frame.js +5 -9
- package/src/element/substitution/statement.js +13 -11
- package/src/element/substitution/term.js +5 -9
package/lib/context/liminal.js
CHANGED
|
@@ -18,7 +18,7 @@ function _interop_require_default(obj) {
|
|
|
18
18
|
default: obj
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
|
-
const { push, find, first } = _necessary.arrayUtilities, {
|
|
21
|
+
const { push, find, first } = _necessary.arrayUtilities, { asynchronousForEach } = _occamlanguages.continuationUtilities;
|
|
22
22
|
class LiminalContext extends _context.default {
|
|
23
23
|
constructor(context, derivedSubstitutions){
|
|
24
24
|
super(context);
|
|
@@ -73,9 +73,9 @@ class LiminalContext extends _context.default {
|
|
|
73
73
|
}
|
|
74
74
|
resolveDerivedSubstitutions(continuation) {
|
|
75
75
|
const context = this, derivedSubstitutions = this.getDerivedSubstitutions(), metavariableNodes = (0, _substitutions.metavariableNodesFromDerivedSubstitutions)(derivedSubstitutions);
|
|
76
|
-
return
|
|
76
|
+
return asynchronousForEach(metavariableNodes, (metavariableNode, continuation)=>{
|
|
77
77
|
const complexDerivedSubstitutions = this.findComplexDerivedSubstitutionsByMetavariableNode(metavariableNode);
|
|
78
|
-
return
|
|
78
|
+
return asynchronousForEach(complexDerivedSubstitutions, (complexDerivedSubstitution, continuation)=>{
|
|
79
79
|
const derivedSubstitution = complexDerivedSubstitution, resolved = derivedSubstitution.isResolved();
|
|
80
80
|
if (resolved) {
|
|
81
81
|
return continuation();
|
|
@@ -198,4 +198,4 @@ class LiminalContext extends _context.default {
|
|
|
198
198
|
}
|
|
199
199
|
}
|
|
200
200
|
|
|
201
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L2xpbWluYWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuaW1wb3J0IHsgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dFwiO1xuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuXG5pbXBvcnQgeyBtZXRhdmFyaWFibGVOb2Rlc0Zyb21EZXJpdmVkU3Vic3RpdHV0aW9ucyB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3Vic3RpdHV0aW9uc1wiO1xuXG5jb25zdCB7IHB1c2gsIGZpbmQsIGZpcnN0IH0gPSBhcnJheVV0aWxpdGllcyxcbiAgICAgIHsgYXluY2hyb25vdXNGb3JFYWNoIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExpbWluYWxDb250ZXh0IGV4dGVuZHMgQ29udGV4dCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIGRlcml2ZWRTdWJzdGl0dXRpb25zKSB7XG4gICAgc3VwZXIoY29udGV4dCk7XG5cbiAgICB0aGlzLmRlcml2ZWRTdWJzdGl0dXRpb25zID0gZGVyaXZlZFN1YnN0aXR1dGlvbnM7XG4gIH1cblxuICBnZXREZXJpdmVkU3Vic3RpdHV0aW9ucyhkZXJpdmVkU3Vic3RpdHV0aW9ucyA9IFtdKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgcHVzaChkZXJpdmVkU3Vic3RpdHV0aW9ucywgdGhpcy5kZXJpdmVkU3Vic3RpdHV0aW9ucyk7XG5cbiAgICBjb250ZXh0LmdldERlcml2ZWRTdWJzdGl0dXRpb25zKGRlcml2ZWRTdWJzdGl0dXRpb25zKTtcblxuICAgIHJldHVybiBkZXJpdmVkU3Vic3RpdHV0aW9ucztcbiAgfVxuXG4gIGdldFNvbGVEZXJpdmVkU3Vic3RpdHV0aW9uKCkge1xuICAgIGxldCBzb2xlRGVyaXZlZFN1YnN0aXR1dGlvbiA9IG51bGw7XG5cbiAgICBjb25zdCBkZXJpdmVkU3Vic3RpdHV0aW9uc0xlbmd0aCA9IHRoaXMuZGVyaXZlZFN1YnN0aXR1dGlvbnMubGVuZ3RoO1xuXG4gICAgaWYgKGRlcml2ZWRTdWJzdGl0dXRpb25zTGVuZ3RoID09PSAxKSB7XG4gICAgICBjb25zdCBmaXJzdERlcml2ZWRTdWJzdGl0dXRpb24gPSBmaXJzdCh0aGlzLmRlcml2ZWRTdWJzdGl0dXRpb25zKTtcblxuICAgICAgc29sZURlcml2ZWRTdWJzdGl0dXRpb24gPSBmaXJzdERlcml2ZWRTdWJzdGl0dXRpb247IC8vL1xuICAgIH1cblxuICAgIHJldHVybiBzb2xlRGVyaXZlZFN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIGdldFNvbGVOb25Ucml2aWFsRGVyaXZlZFN1YnN0aXR1dGlvbigpIHtcbiAgICBsZXQgc29sZU5vblRyaXZpYWxEZXJpdmVkU3Vic3RpdHV0aW9uID0gbnVsbDtcblxuICAgIGNvbnN0IHNvbGVEZXJpdmVkU3Vic3RpdHV0aW9uID0gdGhpcy5nZXRTb2xlRGVyaXZlZFN1YnN0aXR1dGlvbigpO1xuXG4gICAgaWYgKHNvbGVEZXJpdmVkU3Vic3RpdHV0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzb2xlRGVyaXZlZFN1YnN0aXR1dGlvbk5vblRyaXZpYWwgPSBzb2xlRGVyaXZlZFN1YnN0aXR1dGlvbi5pc05vblRyaXZpYWwoKTtcblxuICAgICAgaWYgKHNvbGVEZXJpdmVkU3Vic3RpdHV0aW9uTm9uVHJpdmlhbCkge1xuICAgICAgICBzb2xlTm9uVHJpdmlhbERlcml2ZWRTdWJzdGl0dXRpb24gPSBzb2xlRGVyaXZlZFN1YnN0aXR1dGlvbjsgIC8vL1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzb2xlTm9uVHJpdmlhbERlcml2ZWRTdWJzdGl0dXRpb247XG4gIH1cblxuICBhZGREZXJpdmVkU3Vic3RpdHV0aW9uKGRlcml2ZWRTdWJzdGl0dXRpb24pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgZGVyaXZlZFN1YnN0aXR1dGlvbkEgPSBkZXJpdmVkU3Vic3RpdHV0aW9uLCAvLy9cbiAgICAgICAgICBkZXJpdmVkU3Vic3RpdHV0aW9uU3RyaW5nID0gZGVyaXZlZFN1YnN0aXR1dGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYEFkZGluZyB0aGUgJyR7ZGVyaXZlZFN1YnN0aXR1dGlvblN0cmluZ30nIGRlcml2ZWQgc3Vic3RpdHV0aW9uIHRvIHRoZSBsaW1pbmFsIGNvbnRleHQuLi5gKTtcblxuICAgIGNvbnN0IGRlcml2ZWRTdWJzdGl0dXRpb25CID0gdGhpcy5kZXJpdmVkU3Vic3RpdHV0aW9ucy5maW5kKChkZXJpdmVkU3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgICBjb25zdCBkZXJpdmVkU3Vic3RpdHV0aW9uQiA9IGRlcml2ZWRTdWJzdGl0dXRpb24sIC8vL1xuICAgICAgICAgICAgZGVyaXZlZFN1YnN0aXR1dGlvbkFFcXVhbFRvRGVyaXZlZFN1YnN0aXR1dGlvbkIgPSBkZXJpdmVkU3Vic3RpdHV0aW9uQS5pc0VxdWFsVG8oZGVyaXZlZFN1YnN0aXR1dGlvbkIpO1xuXG4gICAgICBpZiAoZGVyaXZlZFN1YnN0aXR1dGlvbkFFcXVhbFRvRGVyaXZlZFN1YnN0aXR1dGlvbkIpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSkgfHwgbnVsbDtcblxuICAgIGlmIChkZXJpdmVkU3Vic3RpdHV0aW9uQiAhPT0gbnVsbCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke2Rlcml2ZWRTdWJzdGl0dXRpb25TdHJpbmd9JyBkZXJpdmVkIHN1YnN0aXR1dGlvbiBoYXMgYWxyZWFkeSBiZWVuIGFkZGVkIHRvIHRoZSBsaW1pbmFsIGNvbnRleHQuYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVyaXZlZFN1YnN0aXR1dGlvbnMucHVzaChkZXJpdmVkU3Vic3RpdHV0aW9uKTtcbiAgICB9XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5hZGRlZCB0aGUgJyR7ZGVyaXZlZFN1YnN0aXR1dGlvblN0cmluZ30nIGRlcml2ZWQgc3Vic3RpdHV0aW9uIHRvIHRoZSBsaW1pbmFsIGNvbnRleHQuYCk7XG4gIH1cblxuICBhZGREZXJpdmVkU3Vic3RpdHV0aW9ucyhkZXJpdmVkU3Vic3RpdHV0aW9ucykge1xuICAgIGRlcml2ZWRTdWJzdGl0dXRpb25zLmZvckVhY2goKGRlcml2ZWRTdWJzdGl0dXRpb24pID0+IHtcbiAgICAgIHRoaXMuYWRkRGVyaXZlZFN1YnN0aXR1dGlvbihkZXJpdmVkU3Vic3RpdHV0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlc29sdmVEZXJpdmVkU3Vic3RpdHV0aW9ucyhjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgZGVyaXZlZFN1YnN0aXR1dGlvbnMgPSB0aGlzLmdldERlcml2ZWRTdWJzdGl0dXRpb25zKCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZXMgPSBtZXRhdmFyaWFibGVOb2Rlc0Zyb21EZXJpdmVkU3Vic3RpdHV0aW9ucyhkZXJpdmVkU3Vic3RpdHV0aW9ucyk7XG5cbiAgICByZXR1cm4gYXluY2hyb25vdXNGb3JFYWNoKG1ldGF2YXJpYWJsZU5vZGVzLCAobWV0YXZhcmlhYmxlTm9kZSwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICBjb25zdCBjb21wbGV4RGVyaXZlZFN1YnN0aXR1dGlvbnMgPSB0aGlzLmZpbmRDb21wbGV4RGVyaXZlZFN1YnN0aXR1dGlvbnNCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICAgIHJldHVybiBheW5jaHJvbm91c0ZvckVhY2goY29tcGxleERlcml2ZWRTdWJzdGl0dXRpb25zLCAoY29tcGxleERlcml2ZWRTdWJzdGl0dXRpb24sIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBjb25zdCBkZXJpdmVkU3Vic3RpdHV0aW9uID0gY29tcGxleERlcml2ZWRTdWJzdGl0dXRpb24sIC8vL1xuICAgICAgICAgICAgICByZXNvbHZlZCA9IGRlcml2ZWRTdWJzdGl0dXRpb24uaXNSZXNvbHZlZCgpO1xuXG4gICAgICAgIGlmIChyZXNvbHZlZCkge1xuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkZXJpdmVkU3Vic3RpdHV0aW9uLnJlc29sdmUoY29udGV4dCwgY29udGludWF0aW9uKTtcbiAgICAgIH0sIGNvbnRpbnVhdGlvbik7XG4gICAgfSwgY29udGludWF0aW9uKTtcbiAgfVxuXG4gIGFyZURlcml2ZWRTdWJzdGl0dXRpb25zUmVzb2x2ZWQoKSB7XG4gICAgY29uc3QgZGVyaXZlZFN1YnN0aXR1dGlvbnMgPSB0aGlzLmdldERlcml2ZWRTdWJzdGl0dXRpb25zKCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZXMgPSBtZXRhdmFyaWFibGVOb2Rlc0Zyb21EZXJpdmVkU3Vic3RpdHV0aW9ucyhkZXJpdmVkU3Vic3RpdHV0aW9ucyksXG4gICAgICAgICAgcmVzb2x2ZWQgPSBtZXRhdmFyaWFibGVOb2Rlcy5ldmVyeSgobWV0YXZhcmlhYmxlTm9kZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29tcGxleERlcml2ZWRTdWJzdGl0dXRpb25zID0gdGhpcy5maW5kQ29tcGxleERlcml2ZWRTdWJzdGl0dXRpb25zQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgICAgICAgICAgY29tcGxleERlcml2ZWRTdWJzdGl0dXRpb25zUmVzb2x2ZWQgPSBjb21wbGV4RGVyaXZlZFN1YnN0aXR1dGlvbnMuZXZlcnkoKGNvbXBsZXhEZXJpdmVkU3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBsZXhEZXJpdmVkU3Vic3RpdHV0aW9uUmVzb2x2ZWQgPSBjb21wbGV4RGVyaXZlZFN1YnN0aXR1dGlvbi5pc1Jlc29sdmVkKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBsZXhEZXJpdmVkU3Vic3RpdHV0aW9uUmVzb2x2ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChjb21wbGV4RGVyaXZlZFN1YnN0aXR1dGlvbnNSZXNvbHZlZCkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgIHJldHVybiByZXNvbHZlZDtcbiAgfVxuXG4gIGlzRW1wdHkoKSB7XG4gICAgY29uc3QgZGVyaXZlZFN1YnN0aXR1dGlvbnNMZW5ndGggPSB0aGlzLmRlcml2ZWRTdWJzdGl0dXRpb25zLmxlbmd0aCxcbiAgICAgICAgICBlbXB0eSA9IChkZXJpdmVkU3Vic3RpdHV0aW9uc0xlbmd0aCA9PT0gMCk7XG5cbiAgICByZXR1cm4gZW1wdHk7XG4gIH1cblxuICBxdWFsaWZ5KGFzc3VtcHRpb24sIGNvbnN0cmFpbnQpIHtcbiAgICBsZXQgcXVhbGlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBlbXB0eSA9IHRoaXMuaXNFbXB0eSgpO1xuXG4gICAgaWYgKGVtcHR5KSB7XG4gICAgICBxdWFsaWZpZXMgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzb2xlRGVyaXZlZFN1YnN0aXR1dGlvbiA9IHRoaXMuZ2V0U29sZURlcml2ZWRTdWJzdGl0dXRpb24oKTtcblxuICAgICAgaWYgKHNvbGVEZXJpdmVkU3Vic3RpdHV0aW9uICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHsgUmVmZXJlbmNlRGVyaXZlZFN1YnN0aXR1dGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgICAgIGNvbnRleHQgPSB0aGlzLCAvLy9cbiAgICAgICAgICAgICAgcmVmZXJlbmNlRGVyaXZlZFN1YnN0aXR1dGlvbiA9IFJlZmVyZW5jZURlcml2ZWRTdWJzdGl0dXRpb24uZnJvbUFzc3VtcHRpb25BbmRDb25zdHJhaW50KGFzc3VtcHRpb24sIGNvbnN0cmFpbnQsIGNvbnRleHQpLFxuICAgICAgICAgICAgICByZWZlcmVuY2VEZXJpdmVkU3Vic3RpdHV0aW9uQ29tcGFyZXNUb1Nzb2xlRGVyaXZlZFN1YnN0aXR1dGlvbiA9IHJlZmVyZW5jZURlcml2ZWRTdWJzdGl0dXRpb24uY29tcGFyZVN1YnN0aXR1dGlvbihzb2xlRGVyaXZlZFN1YnN0aXR1dGlvbik7XG5cbiAgICAgICAgaWYgKHJlZmVyZW5jZURlcml2ZWRTdWJzdGl0dXRpb25Db21wYXJlc1RvU3NvbGVEZXJpdmVkU3Vic3RpdHV0aW9uKSB7XG4gICAgICAgICAgcXVhbGlmaWVzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBxdWFsaWZpZXM7XG4gIH1cblxuICBjb21taXQoY29udGV4dCkge1xuICAgIGlmIChjb250ZXh0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcbiAgICB9XG5cbiAgICBjb250ZXh0LmRlYnVnKGBDb21taXR0aW5nIHRoZSBsaW1pbmFsIGNvbnRleHRgKTtcblxuICAgIGNvbnRleHQuYWRkRGVyaXZlZFN1YnN0aXR1dGlvbnModGhpcy5kZXJpdmVkU3Vic3RpdHV0aW9ucyk7XG4gIH1cblxuICBmaW5kRGVyaXZlZFN1YnN0aXR1dGlvbihjYWxsYmFjaykge1xuICAgIGNvbnN0IGRlcml2ZWRTdWJzdGl0dXRpb25zID0gdGhpcy5nZXREZXJpdmVkU3Vic3RpdHV0aW9ucygpLFxuICAgICAgICAgIGRlcml2ZWRTdWJzdGl0dXRpb24gPSBkZXJpdmVkU3Vic3RpdHV0aW9ucy5maW5kKGNhbGxiYWNrKTtcblxuICAgIHJldHVybiBkZXJpdmVkU3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgZmluZERlcml2ZWRTdWJzdGl0dXRpb25zKGNhbGxiYWNrKSB7XG4gICAgbGV0IGRlcml2ZWRTdWJzdGl0dXRpb25zO1xuXG4gICAgZGVyaXZlZFN1YnN0aXR1dGlvbnMgPSB0aGlzLmdldERlcml2ZWRTdWJzdGl0dXRpb25zKCk7XG5cbiAgICBkZXJpdmVkU3Vic3RpdHV0aW9ucyA9IGZpbmQoZGVyaXZlZFN1YnN0aXR1dGlvbnMsIGNhbGxiYWNrKTsgIC8vL1xuXG4gICAgcmV0dXJuIGRlcml2ZWRTdWJzdGl0dXRpb25zO1xuICB9XG5cbiAgZmluZERlcml2ZWRTdWJzdGl0dXRpb25CeVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBkZXJpdmVkU3Vic3RpdHV0aW9uID0gdGhpcy5maW5kRGVyaXZlZFN1YnN0aXR1dGlvbigoZGVyaXZlZFN1YnN0aXR1dGlvbikgPT4ge1xuICAgICAgY29uc3QgdmFyaWFibGVOb2RlTWF0Y2hlcyA9IGRlcml2ZWRTdWJzdGl0dXRpb24ubWF0Y2hWYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKTtcblxuICAgICAgaWYgKHZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBkZXJpdmVkU3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgZmluZERlcml2ZWRTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IHNpbXBsZURlcml2ZWRTdWJzdGl0dXRpb24gPSB0aGlzLmZpbmRTaW1wbGVEZXJpdmVkU3Vic3RpdHV0aW9uQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgIGRlcml2ZWRTdWJzdGl0dXRpb24gPSBzaW1wbGVEZXJpdmVkU3Vic3RpdHV0aW9uOyAgLy8vXG5cbiAgICByZXR1cm4gZGVyaXZlZFN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIGZpbmRTaW1wbGVEZXJpdmVkU3Vic3RpdHV0aW9uQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBzaW1wbGVEZXJpdmVkU3Vic3RpdHV0aW9uID0gdGhpcy5maW5kRGVyaXZlZFN1YnN0aXR1dGlvbigoZGVyaXZlZFN1YnN0aXR1dGlvbikgPT4ge1xuICAgICAgY29uc3QgZGVyaXZlZFN1YnN0aXR1dGlvblNpbXBsZSA9IGRlcml2ZWRTdWJzdGl0dXRpb24uaXNTaW1wbGUoKTtcblxuICAgICAgaWYgKGRlcml2ZWRTdWJzdGl0dXRpb25TaW1wbGUpIHtcbiAgICAgICAgY29uc3Qgc2ltcGxlRGVyaXZlZFN1YnN0aXR1dGlvbiA9IGRlcml2ZWRTdWJzdGl0dXRpb24sICAvLy9cbiAgICAgICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMgPSBzaW1wbGVEZXJpdmVkU3Vic3RpdHV0aW9uLm1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gc2ltcGxlRGVyaXZlZFN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIGZpbmRDb21wbGV4RGVyaXZlZFN1YnN0aXR1dGlvbnNCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IGNvbXBsZXhEZXJpdmVkU3Vic3RpdHV0aW9uID0gdGhpcy5maW5kRGVyaXZlZFN1YnN0aXR1dGlvbnMoKGRlcml2ZWRTdWJzdGl0dXRpb24pID0+IHtcbiAgICAgIGNvbnN0IGRlcml2ZWRTdWJzdGl0dXRpb25Db21wbGV4ID0gZGVyaXZlZFN1YnN0aXR1dGlvbi5pc0NvbXBsZXgoKTtcblxuICAgICAgaWYgKGRlcml2ZWRTdWJzdGl0dXRpb25Db21wbGV4KSB7XG4gICAgICAgIGNvbnN0IGNvbXBsZXhEZXJpdmVkU3Vic3RpdHV0aW9uID0gZGVyaXZlZFN1YnN0aXR1dGlvbiwgIC8vL1xuICAgICAgICAgICAgICBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IGNvbXBsZXhEZXJpdmVkU3Vic3RpdHV0aW9uLm1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gY29tcGxleERlcml2ZWRTdWJzdGl0dXRpb247XG4gIH1cblxuICBmaW5kRGVyaXZlZFN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlTm9kZUFuZFN1YnN0aXR1dGlvbk5vZGUobWV0YXZhcmlhYmxlTm9kZSwgc3Vic3RpdHV0aW9uTm9kZSkge1xuICAgIGNvbnN0IGRlcml2ZWRTdWJzdGl0dXRpb24gPSB0aGlzLmZpbmREZXJpdmVkU3Vic3RpdHV0aW9uKChkZXJpdmVkU3Vic3RpdHV0aW9uKSA9PiB7ICAvLy9cbiAgICAgICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gZGVyaXZlZFN1YnN0aXR1dGlvbi5tYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcykge1xuICAgICAgICAgICAgICBjb25zdCBzdWJzdGl0dXRpb25Ob2RlTWF0Y2hlcyA9IGRlcml2ZWRTdWJzdGl0dXRpb24ubWF0Y2hTdWJzdGl0dXRpb25Ob2RlKHN1YnN0aXR1dGlvbk5vZGUpO1xuXG4gICAgICAgICAgICAgIGlmIChzdWJzdGl0dXRpb25Ob2RlTWF0Y2hlcykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBkZXJpdmVkU3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgaXNEZXJpdmVkU3Vic3RpdHV0aW9uUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSB7XG4gICAgY29uc3QgZGVyaXZlZFN1YnN0aXR1dGlvbiA9IHRoaXMuZmluZERlcml2ZWRTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgZGVyaXZlZFN1YnN0aXR1dGlvblByZXNlbnQgPSAoZGVyaXZlZFN1YnN0aXR1dGlvbiAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gZGVyaXZlZFN1YnN0aXR1dGlvblByZXNlbnQ7XG4gIH1cblxuICBpc0Rlcml2ZWRTdWJzdGl0dXRpb25QcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlQW5kU3Vic3RpdHV0aW9uTm9kZShtZXRhdmFyaWFibGVOb2RlLCBzdWJzdGl0dXRpb25Ob2RlKSB7XG4gICAgY29uc3QgZGVyaXZlZFN1YnN0aXR1dGlvbiA9IHRoaXMuZmluZERlcml2ZWRTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZU5vZGVBbmRTdWJzdGl0dXRpb25Ob2RlKG1ldGF2YXJpYWJsZU5vZGUsIHN1YnN0aXR1dGlvbk5vZGUpLFxuICAgICAgICAgIGRlcml2ZWRTdWJzdGl0dXRpb25QcmVzZW50ID0gKGRlcml2ZWRTdWJzdGl0dXRpb24gIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIGRlcml2ZWRTdWJzdGl0dXRpb25QcmVzZW50O1xuICB9XG5cbiAgc3RhdGljIGZyb21Ob3RoaW5nKGNvbnRleHQpIHtcbiAgICBjb25zdCBkZXJpdmVkU3Vic3RpdHV0aW9ucyA9IFtdLFxuICAgICAgICAgIGxpbWluYWxDb250ZXh0ID0gbmV3IExpbWluYWxDb250ZXh0KGNvbnRleHQsIGRlcml2ZWRTdWJzdGl0dXRpb25zKTtcblxuICAgIHJldHVybiBsaW1pbmFsQ29udGV4dDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkxpbWluYWxDb250ZXh0IiwicHVzaCIsImZpbmQiLCJmaXJzdCIsImFycmF5VXRpbGl0aWVzIiwiYXluY2hyb25vdXNGb3JFYWNoIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiQ29udGV4dCIsImNvbnRleHQiLCJkZXJpdmVkU3Vic3RpdHV0aW9ucyIsImdldERlcml2ZWRTdWJzdGl0dXRpb25zIiwiZ2V0Q29udGV4dCIsImdldFNvbGVEZXJpdmVkU3Vic3RpdHV0aW9uIiwic29sZURlcml2ZWRTdWJzdGl0dXRpb24iLCJkZXJpdmVkU3Vic3RpdHV0aW9uc0xlbmd0aCIsImxlbmd0aCIsImZpcnN0RGVyaXZlZFN1YnN0aXR1dGlvbiIsImdldFNvbGVOb25Ucml2aWFsRGVyaXZlZFN1YnN0aXR1dGlvbiIsInNvbGVOb25Ucml2aWFsRGVyaXZlZFN1YnN0aXR1dGlvbiIsInNvbGVEZXJpdmVkU3Vic3RpdHV0aW9uTm9uVHJpdmlhbCIsImlzTm9uVHJpdmlhbCIsImFkZERlcml2ZWRTdWJzdGl0dXRpb24iLCJkZXJpdmVkU3Vic3RpdHV0aW9uIiwiZGVyaXZlZFN1YnN0aXR1dGlvbkEiLCJkZXJpdmVkU3Vic3RpdHV0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZXJpdmVkU3Vic3RpdHV0aW9uQiIsImRlcml2ZWRTdWJzdGl0dXRpb25BRXF1YWxUb0Rlcml2ZWRTdWJzdGl0dXRpb25CIiwiaXNFcXVhbFRvIiwiZGVidWciLCJhZGREZXJpdmVkU3Vic3RpdHV0aW9ucyIsImZvckVhY2giLCJyZXNvbHZlRGVyaXZlZFN1YnN0aXR1dGlvbnMiLCJjb250aW51YXRpb24iLCJtZXRhdmFyaWFibGVOb2RlcyIsIm1ldGF2YXJpYWJsZU5vZGVzRnJvbURlcml2ZWRTdWJzdGl0dXRpb25zIiwibWV0YXZhcmlhYmxlTm9kZSIsImNvbXBsZXhEZXJpdmVkU3Vic3RpdHV0aW9ucyIsImZpbmRDb21wbGV4RGVyaXZlZFN1YnN0aXR1dGlvbnNCeU1ldGF2YXJpYWJsZU5vZGUiLCJjb21wbGV4RGVyaXZlZFN1YnN0aXR1dGlvbiIsInJlc29sdmVkIiwiaXNSZXNvbHZlZCIsInJlc29sdmUiLCJhcmVEZXJpdmVkU3Vic3RpdHV0aW9uc1Jlc29sdmVkIiwiZXZlcnkiLCJjb21wbGV4RGVyaXZlZFN1YnN0aXR1dGlvbnNSZXNvbHZlZCIsImNvbXBsZXhEZXJpdmVkU3Vic3RpdHV0aW9uUmVzb2x2ZWQiLCJpc0VtcHR5IiwiZW1wdHkiLCJxdWFsaWZ5IiwiYXNzdW1wdGlvbiIsImNvbnN0cmFpbnQiLCJxdWFsaWZpZXMiLCJSZWZlcmVuY2VEZXJpdmVkU3Vic3RpdHV0aW9uIiwiZWxlbWVudHMiLCJyZWZlcmVuY2VEZXJpdmVkU3Vic3RpdHV0aW9uIiwiZnJvbUFzc3VtcHRpb25BbmRDb25zdHJhaW50IiwicmVmZXJlbmNlRGVyaXZlZFN1YnN0aXR1dGlvbkNvbXBhcmVzVG9Tc29sZURlcml2ZWRTdWJzdGl0dXRpb24iLCJjb21wYXJlU3Vic3RpdHV0aW9uIiwiY29tbWl0IiwidW5kZWZpbmVkIiwiZmluZERlcml2ZWRTdWJzdGl0dXRpb24iLCJjYWxsYmFjayIsImZpbmREZXJpdmVkU3Vic3RpdHV0aW9ucyIsImZpbmREZXJpdmVkU3Vic3RpdHV0aW9uQnlWYXJpYWJsZU5vZGUiLCJ2YXJpYWJsZU5vZGUiLCJ2YXJpYWJsZU5vZGVNYXRjaGVzIiwibWF0Y2hWYXJpYWJsZU5vZGUiLCJmaW5kRGVyaXZlZFN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlTm9kZSIsInNpbXBsZURlcml2ZWRTdWJzdGl0dXRpb24iLCJmaW5kU2ltcGxlRGVyaXZlZFN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlTm9kZSIsImRlcml2ZWRTdWJzdGl0dXRpb25TaW1wbGUiLCJpc1NpbXBsZSIsIm1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzIiwibWF0Y2hNZXRhdmFyaWFibGVOb2RlIiwiZGVyaXZlZFN1YnN0aXR1dGlvbkNvbXBsZXgiLCJpc0NvbXBsZXgiLCJmaW5kRGVyaXZlZFN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlTm9kZUFuZFN1YnN0aXR1dGlvbk5vZGUiLCJzdWJzdGl0dXRpb25Ob2RlIiwic3Vic3RpdHV0aW9uTm9kZU1hdGNoZXMiLCJtYXRjaFN1YnN0aXR1dGlvbk5vZGUiLCJpc0Rlcml2ZWRTdWJzdGl0dXRpb25QcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlIiwiZGVyaXZlZFN1YnN0aXR1dGlvblByZXNlbnQiLCJpc0Rlcml2ZWRTdWJzdGl0dXRpb25QcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlQW5kU3Vic3RpdHV0aW9uTm9kZSIsImZyb21Ob3RoaW5nIiwibGltaW5hbENvbnRleHQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWFBOzs7ZUFBcUJBOzs7MkJBWFU7Z0NBQ087Z0VBRWxCO2lFQUNDOytCQUVxQzs7Ozs7O0FBRTFELE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxJQUFJLEVBQUVDLEtBQUssRUFBRSxHQUFHQyx5QkFBYyxFQUN0QyxFQUFFQyxrQkFBa0IsRUFBRSxHQUFHQyxxQ0FBcUI7QUFFckMsTUFBTU4sdUJBQXVCTyxnQkFBTztJQUNqRCxZQUFZQyxPQUFPLEVBQUVDLG9CQUFvQixDQUFFO1FBQ3pDLEtBQUssQ0FBQ0Q7UUFFTixJQUFJLENBQUNDLG9CQUFvQixHQUFHQTtJQUM5QjtJQUVBQyx3QkFBd0JELHVCQUF1QixFQUFFLEVBQUU7UUFDakQsTUFBTUQsVUFBVSxJQUFJLENBQUNHLFVBQVU7UUFFL0JWLEtBQUtRLHNCQUFzQixJQUFJLENBQUNBLG9CQUFvQjtRQUVwREQsUUFBUUUsdUJBQXVCLENBQUNEO1FBRWhDLE9BQU9BO0lBQ1Q7SUFFQUcsNkJBQTZCO1FBQzNCLElBQUlDLDBCQUEwQjtRQUU5QixNQUFNQyw2QkFBNkIsSUFBSSxDQUFDTCxvQkFBb0IsQ0FBQ00sTUFBTTtRQUVuRSxJQUFJRCwrQkFBK0IsR0FBRztZQUNwQyxNQUFNRSwyQkFBMkJiLE1BQU0sSUFBSSxDQUFDTSxvQkFBb0I7WUFF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
|
|
201
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L2xpbWluYWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuaW1wb3J0IHsgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dFwiO1xuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuXG5pbXBvcnQgeyBtZXRhdmFyaWFibGVOb2Rlc0Zyb21EZXJpdmVkU3Vic3RpdHV0aW9ucyB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3Vic3RpdHV0aW9uc1wiO1xuXG5jb25zdCB7IHB1c2gsIGZpbmQsIGZpcnN0IH0gPSBhcnJheVV0aWxpdGllcyxcbiAgICAgIHsgYXN5bmNocm9ub3VzRm9yRWFjaCB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMaW1pbmFsQ29udGV4dCBleHRlbmRzIENvbnRleHQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBkZXJpdmVkU3Vic3RpdHV0aW9ucykge1xuICAgIHN1cGVyKGNvbnRleHQpO1xuXG4gICAgdGhpcy5kZXJpdmVkU3Vic3RpdHV0aW9ucyA9IGRlcml2ZWRTdWJzdGl0dXRpb25zO1xuICB9XG5cbiAgZ2V0RGVyaXZlZFN1YnN0aXR1dGlvbnMoZGVyaXZlZFN1YnN0aXR1dGlvbnMgPSBbXSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHB1c2goZGVyaXZlZFN1YnN0aXR1dGlvbnMsIHRoaXMuZGVyaXZlZFN1YnN0aXR1dGlvbnMpO1xuXG4gICAgY29udGV4dC5nZXREZXJpdmVkU3Vic3RpdHV0aW9ucyhkZXJpdmVkU3Vic3RpdHV0aW9ucyk7XG5cbiAgICByZXR1cm4gZGVyaXZlZFN1YnN0aXR1dGlvbnM7XG4gIH1cblxuICBnZXRTb2xlRGVyaXZlZFN1YnN0aXR1dGlvbigpIHtcbiAgICBsZXQgc29sZURlcml2ZWRTdWJzdGl0dXRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgZGVyaXZlZFN1YnN0aXR1dGlvbnNMZW5ndGggPSB0aGlzLmRlcml2ZWRTdWJzdGl0dXRpb25zLmxlbmd0aDtcblxuICAgIGlmIChkZXJpdmVkU3Vic3RpdHV0aW9uc0xlbmd0aCA9PT0gMSkge1xuICAgICAgY29uc3QgZmlyc3REZXJpdmVkU3Vic3RpdHV0aW9uID0gZmlyc3QodGhpcy5kZXJpdmVkU3Vic3RpdHV0aW9ucyk7XG5cbiAgICAgIHNvbGVEZXJpdmVkU3Vic3RpdHV0aW9uID0gZmlyc3REZXJpdmVkU3Vic3RpdHV0aW9uOyAvLy9cbiAgICB9XG5cbiAgICByZXR1cm4gc29sZURlcml2ZWRTdWJzdGl0dXRpb247XG4gIH1cblxuICBnZXRTb2xlTm9uVHJpdmlhbERlcml2ZWRTdWJzdGl0dXRpb24oKSB7XG4gICAgbGV0IHNvbGVOb25Ucml2aWFsRGVyaXZlZFN1YnN0aXR1dGlvbiA9IG51bGw7XG5cbiAgICBjb25zdCBzb2xlRGVyaXZlZFN1YnN0aXR1dGlvbiA9IHRoaXMuZ2V0U29sZURlcml2ZWRTdWJzdGl0dXRpb24oKTtcblxuICAgIGlmIChzb2xlRGVyaXZlZFN1YnN0aXR1dGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc29sZURlcml2ZWRTdWJzdGl0dXRpb25Ob25Ucml2aWFsID0gc29sZURlcml2ZWRTdWJzdGl0dXRpb24uaXNOb25Ucml2aWFsKCk7XG5cbiAgICAgIGlmIChzb2xlRGVyaXZlZFN1YnN0aXR1dGlvbk5vblRyaXZpYWwpIHtcbiAgICAgICAgc29sZU5vblRyaXZpYWxEZXJpdmVkU3Vic3RpdHV0aW9uID0gc29sZURlcml2ZWRTdWJzdGl0dXRpb247ICAvLy9cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc29sZU5vblRyaXZpYWxEZXJpdmVkU3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgYWRkRGVyaXZlZFN1YnN0aXR1dGlvbihkZXJpdmVkU3Vic3RpdHV0aW9uKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMsIC8vL1xuICAgICAgICAgIGRlcml2ZWRTdWJzdGl0dXRpb25BID0gZGVyaXZlZFN1YnN0aXR1dGlvbiwgLy8vXG4gICAgICAgICAgZGVyaXZlZFN1YnN0aXR1dGlvblN0cmluZyA9IGRlcml2ZWRTdWJzdGl0dXRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBBZGRpbmcgdGhlICcke2Rlcml2ZWRTdWJzdGl0dXRpb25TdHJpbmd9JyBkZXJpdmVkIHN1YnN0aXR1dGlvbiB0byB0aGUgbGltaW5hbCBjb250ZXh0Li4uYCk7XG5cbiAgICBjb25zdCBkZXJpdmVkU3Vic3RpdHV0aW9uQiA9IHRoaXMuZGVyaXZlZFN1YnN0aXR1dGlvbnMuZmluZCgoZGVyaXZlZFN1YnN0aXR1dGlvbikgPT4ge1xuICAgICAgY29uc3QgZGVyaXZlZFN1YnN0aXR1dGlvbkIgPSBkZXJpdmVkU3Vic3RpdHV0aW9uLCAvLy9cbiAgICAgICAgICAgIGRlcml2ZWRTdWJzdGl0dXRpb25BRXF1YWxUb0Rlcml2ZWRTdWJzdGl0dXRpb25CID0gZGVyaXZlZFN1YnN0aXR1dGlvbkEuaXNFcXVhbFRvKGRlcml2ZWRTdWJzdGl0dXRpb25CKTtcblxuICAgICAgaWYgKGRlcml2ZWRTdWJzdGl0dXRpb25BRXF1YWxUb0Rlcml2ZWRTdWJzdGl0dXRpb25CKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pIHx8IG51bGw7XG5cbiAgICBpZiAoZGVyaXZlZFN1YnN0aXR1dGlvbkIgIT09IG51bGwpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtkZXJpdmVkU3Vic3RpdHV0aW9uU3RyaW5nfScgZGVyaXZlZCBzdWJzdGl0dXRpb24gaGFzIGFscmVhZHkgYmVlbiBhZGRlZCB0byB0aGUgbGltaW5hbCBjb250ZXh0LmApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlcml2ZWRTdWJzdGl0dXRpb25zLnB1c2goZGVyaXZlZFN1YnN0aXR1dGlvbik7XG4gICAgfVxuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4uYWRkZWQgdGhlICcke2Rlcml2ZWRTdWJzdGl0dXRpb25TdHJpbmd9JyBkZXJpdmVkIHN1YnN0aXR1dGlvbiB0byB0aGUgbGltaW5hbCBjb250ZXh0LmApO1xuICB9XG5cbiAgYWRkRGVyaXZlZFN1YnN0aXR1dGlvbnMoZGVyaXZlZFN1YnN0aXR1dGlvbnMpIHtcbiAgICBkZXJpdmVkU3Vic3RpdHV0aW9ucy5mb3JFYWNoKChkZXJpdmVkU3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgICB0aGlzLmFkZERlcml2ZWRTdWJzdGl0dXRpb24oZGVyaXZlZFN1YnN0aXR1dGlvbik7XG4gICAgfSk7XG4gIH1cblxuICByZXNvbHZlRGVyaXZlZFN1YnN0aXR1dGlvbnMoY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMsIC8vL1xuICAgICAgICAgIGRlcml2ZWRTdWJzdGl0dXRpb25zID0gdGhpcy5nZXREZXJpdmVkU3Vic3RpdHV0aW9ucygpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGVzID0gbWV0YXZhcmlhYmxlTm9kZXNGcm9tRGVyaXZlZFN1YnN0aXR1dGlvbnMoZGVyaXZlZFN1YnN0aXR1dGlvbnMpO1xuXG4gICAgcmV0dXJuIGFzeW5jaHJvbm91c0ZvckVhY2gobWV0YXZhcmlhYmxlTm9kZXMsIChtZXRhdmFyaWFibGVOb2RlLCBjb250aW51YXRpb24pID0+IHtcbiAgICAgIGNvbnN0IGNvbXBsZXhEZXJpdmVkU3Vic3RpdHV0aW9ucyA9IHRoaXMuZmluZENvbXBsZXhEZXJpdmVkU3Vic3RpdHV0aW9uc0J5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgcmV0dXJuIGFzeW5jaHJvbm91c0ZvckVhY2goY29tcGxleERlcml2ZWRTdWJzdGl0dXRpb25zLCAoY29tcGxleERlcml2ZWRTdWJzdGl0dXRpb24sIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBjb25zdCBkZXJpdmVkU3Vic3RpdHV0aW9uID0gY29tcGxleERlcml2ZWRTdWJzdGl0dXRpb24sIC8vL1xuICAgICAgICAgICAgICByZXNvbHZlZCA9IGRlcml2ZWRTdWJzdGl0dXRpb24uaXNSZXNvbHZlZCgpO1xuXG4gICAgICAgIGlmIChyZXNvbHZlZCkge1xuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkZXJpdmVkU3Vic3RpdHV0aW9uLnJlc29sdmUoY29udGV4dCwgY29udGludWF0aW9uKTtcbiAgICAgIH0sIGNvbnRpbnVhdGlvbik7XG4gICAgfSwgY29udGludWF0aW9uKTtcbiAgfVxuXG4gIGFyZURlcml2ZWRTdWJzdGl0dXRpb25zUmVzb2x2ZWQoKSB7XG4gICAgY29uc3QgZGVyaXZlZFN1YnN0aXR1dGlvbnMgPSB0aGlzLmdldERlcml2ZWRTdWJzdGl0dXRpb25zKCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZXMgPSBtZXRhdmFyaWFibGVOb2Rlc0Zyb21EZXJpdmVkU3Vic3RpdHV0aW9ucyhkZXJpdmVkU3Vic3RpdHV0aW9ucyksXG4gICAgICAgICAgcmVzb2x2ZWQgPSBtZXRhdmFyaWFibGVOb2Rlcy5ldmVyeSgobWV0YXZhcmlhYmxlTm9kZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29tcGxleERlcml2ZWRTdWJzdGl0dXRpb25zID0gdGhpcy5maW5kQ29tcGxleERlcml2ZWRTdWJzdGl0dXRpb25zQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgICAgICAgICAgY29tcGxleERlcml2ZWRTdWJzdGl0dXRpb25zUmVzb2x2ZWQgPSBjb21wbGV4RGVyaXZlZFN1YnN0aXR1dGlvbnMuZXZlcnkoKGNvbXBsZXhEZXJpdmVkU3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBsZXhEZXJpdmVkU3Vic3RpdHV0aW9uUmVzb2x2ZWQgPSBjb21wbGV4RGVyaXZlZFN1YnN0aXR1dGlvbi5pc1Jlc29sdmVkKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBsZXhEZXJpdmVkU3Vic3RpdHV0aW9uUmVzb2x2ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChjb21wbGV4RGVyaXZlZFN1YnN0aXR1dGlvbnNSZXNvbHZlZCkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgIHJldHVybiByZXNvbHZlZDtcbiAgfVxuXG4gIGlzRW1wdHkoKSB7XG4gICAgY29uc3QgZGVyaXZlZFN1YnN0aXR1dGlvbnNMZW5ndGggPSB0aGlzLmRlcml2ZWRTdWJzdGl0dXRpb25zLmxlbmd0aCxcbiAgICAgICAgICBlbXB0eSA9IChkZXJpdmVkU3Vic3RpdHV0aW9uc0xlbmd0aCA9PT0gMCk7XG5cbiAgICByZXR1cm4gZW1wdHk7XG4gIH1cblxuICBxdWFsaWZ5KGFzc3VtcHRpb24sIGNvbnN0cmFpbnQpIHtcbiAgICBsZXQgcXVhbGlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBlbXB0eSA9IHRoaXMuaXNFbXB0eSgpO1xuXG4gICAgaWYgKGVtcHR5KSB7XG4gICAgICBxdWFsaWZpZXMgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzb2xlRGVyaXZlZFN1YnN0aXR1dGlvbiA9IHRoaXMuZ2V0U29sZURlcml2ZWRTdWJzdGl0dXRpb24oKTtcblxuICAgICAgaWYgKHNvbGVEZXJpdmVkU3Vic3RpdHV0aW9uICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHsgUmVmZXJlbmNlRGVyaXZlZFN1YnN0aXR1dGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgICAgIGNvbnRleHQgPSB0aGlzLCAvLy9cbiAgICAgICAgICAgICAgcmVmZXJlbmNlRGVyaXZlZFN1YnN0aXR1dGlvbiA9IFJlZmVyZW5jZURlcml2ZWRTdWJzdGl0dXRpb24uZnJvbUFzc3VtcHRpb25BbmRDb25zdHJhaW50KGFzc3VtcHRpb24sIGNvbnN0cmFpbnQsIGNvbnRleHQpLFxuICAgICAgICAgICAgICByZWZlcmVuY2VEZXJpdmVkU3Vic3RpdHV0aW9uQ29tcGFyZXNUb1Nzb2xlRGVyaXZlZFN1YnN0aXR1dGlvbiA9IHJlZmVyZW5jZURlcml2ZWRTdWJzdGl0dXRpb24uY29tcGFyZVN1YnN0aXR1dGlvbihzb2xlRGVyaXZlZFN1YnN0aXR1dGlvbik7XG5cbiAgICAgICAgaWYgKHJlZmVyZW5jZURlcml2ZWRTdWJzdGl0dXRpb25Db21wYXJlc1RvU3NvbGVEZXJpdmVkU3Vic3RpdHV0aW9uKSB7XG4gICAgICAgICAgcXVhbGlmaWVzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBxdWFsaWZpZXM7XG4gIH1cblxuICBjb21taXQoY29udGV4dCkge1xuICAgIGlmIChjb250ZXh0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcbiAgICB9XG5cbiAgICBjb250ZXh0LmRlYnVnKGBDb21taXR0aW5nIHRoZSBsaW1pbmFsIGNvbnRleHRgKTtcblxuICAgIGNvbnRleHQuYWRkRGVyaXZlZFN1YnN0aXR1dGlvbnModGhpcy5kZXJpdmVkU3Vic3RpdHV0aW9ucyk7XG4gIH1cblxuICBmaW5kRGVyaXZlZFN1YnN0aXR1dGlvbihjYWxsYmFjaykge1xuICAgIGNvbnN0IGRlcml2ZWRTdWJzdGl0dXRpb25zID0gdGhpcy5nZXREZXJpdmVkU3Vic3RpdHV0aW9ucygpLFxuICAgICAgICAgIGRlcml2ZWRTdWJzdGl0dXRpb24gPSBkZXJpdmVkU3Vic3RpdHV0aW9ucy5maW5kKGNhbGxiYWNrKTtcblxuICAgIHJldHVybiBkZXJpdmVkU3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgZmluZERlcml2ZWRTdWJzdGl0dXRpb25zKGNhbGxiYWNrKSB7XG4gICAgbGV0IGRlcml2ZWRTdWJzdGl0dXRpb25zO1xuXG4gICAgZGVyaXZlZFN1YnN0aXR1dGlvbnMgPSB0aGlzLmdldERlcml2ZWRTdWJzdGl0dXRpb25zKCk7XG5cbiAgICBkZXJpdmVkU3Vic3RpdHV0aW9ucyA9IGZpbmQoZGVyaXZlZFN1YnN0aXR1dGlvbnMsIGNhbGxiYWNrKTsgIC8vL1xuXG4gICAgcmV0dXJuIGRlcml2ZWRTdWJzdGl0dXRpb25zO1xuICB9XG5cbiAgZmluZERlcml2ZWRTdWJzdGl0dXRpb25CeVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBkZXJpdmVkU3Vic3RpdHV0aW9uID0gdGhpcy5maW5kRGVyaXZlZFN1YnN0aXR1dGlvbigoZGVyaXZlZFN1YnN0aXR1dGlvbikgPT4ge1xuICAgICAgY29uc3QgdmFyaWFibGVOb2RlTWF0Y2hlcyA9IGRlcml2ZWRTdWJzdGl0dXRpb24ubWF0Y2hWYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKTtcblxuICAgICAgaWYgKHZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBkZXJpdmVkU3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgZmluZERlcml2ZWRTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IHNpbXBsZURlcml2ZWRTdWJzdGl0dXRpb24gPSB0aGlzLmZpbmRTaW1wbGVEZXJpdmVkU3Vic3RpdHV0aW9uQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgIGRlcml2ZWRTdWJzdGl0dXRpb24gPSBzaW1wbGVEZXJpdmVkU3Vic3RpdHV0aW9uOyAgLy8vXG5cbiAgICByZXR1cm4gZGVyaXZlZFN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIGZpbmRTaW1wbGVEZXJpdmVkU3Vic3RpdHV0aW9uQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBzaW1wbGVEZXJpdmVkU3Vic3RpdHV0aW9uID0gdGhpcy5maW5kRGVyaXZlZFN1YnN0aXR1dGlvbigoZGVyaXZlZFN1YnN0aXR1dGlvbikgPT4ge1xuICAgICAgY29uc3QgZGVyaXZlZFN1YnN0aXR1dGlvblNpbXBsZSA9IGRlcml2ZWRTdWJzdGl0dXRpb24uaXNTaW1wbGUoKTtcblxuICAgICAgaWYgKGRlcml2ZWRTdWJzdGl0dXRpb25TaW1wbGUpIHtcbiAgICAgICAgY29uc3Qgc2ltcGxlRGVyaXZlZFN1YnN0aXR1dGlvbiA9IGRlcml2ZWRTdWJzdGl0dXRpb24sICAvLy9cbiAgICAgICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMgPSBzaW1wbGVEZXJpdmVkU3Vic3RpdHV0aW9uLm1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gc2ltcGxlRGVyaXZlZFN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIGZpbmRDb21wbGV4RGVyaXZlZFN1YnN0aXR1dGlvbnNCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IGNvbXBsZXhEZXJpdmVkU3Vic3RpdHV0aW9uID0gdGhpcy5maW5kRGVyaXZlZFN1YnN0aXR1dGlvbnMoKGRlcml2ZWRTdWJzdGl0dXRpb24pID0+IHtcbiAgICAgIGNvbnN0IGRlcml2ZWRTdWJzdGl0dXRpb25Db21wbGV4ID0gZGVyaXZlZFN1YnN0aXR1dGlvbi5pc0NvbXBsZXgoKTtcblxuICAgICAgaWYgKGRlcml2ZWRTdWJzdGl0dXRpb25Db21wbGV4KSB7XG4gICAgICAgIGNvbnN0IGNvbXBsZXhEZXJpdmVkU3Vic3RpdHV0aW9uID0gZGVyaXZlZFN1YnN0aXR1dGlvbiwgIC8vL1xuICAgICAgICAgICAgICBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IGNvbXBsZXhEZXJpdmVkU3Vic3RpdHV0aW9uLm1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gY29tcGxleERlcml2ZWRTdWJzdGl0dXRpb247XG4gIH1cblxuICBmaW5kRGVyaXZlZFN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlTm9kZUFuZFN1YnN0aXR1dGlvbk5vZGUobWV0YXZhcmlhYmxlTm9kZSwgc3Vic3RpdHV0aW9uTm9kZSkge1xuICAgIGNvbnN0IGRlcml2ZWRTdWJzdGl0dXRpb24gPSB0aGlzLmZpbmREZXJpdmVkU3Vic3RpdHV0aW9uKChkZXJpdmVkU3Vic3RpdHV0aW9uKSA9PiB7ICAvLy9cbiAgICAgICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gZGVyaXZlZFN1YnN0aXR1dGlvbi5tYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcykge1xuICAgICAgICAgICAgICBjb25zdCBzdWJzdGl0dXRpb25Ob2RlTWF0Y2hlcyA9IGRlcml2ZWRTdWJzdGl0dXRpb24ubWF0Y2hTdWJzdGl0dXRpb25Ob2RlKHN1YnN0aXR1dGlvbk5vZGUpO1xuXG4gICAgICAgICAgICAgIGlmIChzdWJzdGl0dXRpb25Ob2RlTWF0Y2hlcykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBkZXJpdmVkU3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgaXNEZXJpdmVkU3Vic3RpdHV0aW9uUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSB7XG4gICAgY29uc3QgZGVyaXZlZFN1YnN0aXR1dGlvbiA9IHRoaXMuZmluZERlcml2ZWRTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgZGVyaXZlZFN1YnN0aXR1dGlvblByZXNlbnQgPSAoZGVyaXZlZFN1YnN0aXR1dGlvbiAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gZGVyaXZlZFN1YnN0aXR1dGlvblByZXNlbnQ7XG4gIH1cblxuICBpc0Rlcml2ZWRTdWJzdGl0dXRpb25QcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlQW5kU3Vic3RpdHV0aW9uTm9kZShtZXRhdmFyaWFibGVOb2RlLCBzdWJzdGl0dXRpb25Ob2RlKSB7XG4gICAgY29uc3QgZGVyaXZlZFN1YnN0aXR1dGlvbiA9IHRoaXMuZmluZERlcml2ZWRTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZU5vZGVBbmRTdWJzdGl0dXRpb25Ob2RlKG1ldGF2YXJpYWJsZU5vZGUsIHN1YnN0aXR1dGlvbk5vZGUpLFxuICAgICAgICAgIGRlcml2ZWRTdWJzdGl0dXRpb25QcmVzZW50ID0gKGRlcml2ZWRTdWJzdGl0dXRpb24gIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIGRlcml2ZWRTdWJzdGl0dXRpb25QcmVzZW50O1xuICB9XG5cbiAgc3RhdGljIGZyb21Ob3RoaW5nKGNvbnRleHQpIHtcbiAgICBjb25zdCBkZXJpdmVkU3Vic3RpdHV0aW9ucyA9IFtdLFxuICAgICAgICAgIGxpbWluYWxDb250ZXh0ID0gbmV3IExpbWluYWxDb250ZXh0KGNvbnRleHQsIGRlcml2ZWRTdWJzdGl0dXRpb25zKTtcblxuICAgIHJldHVybiBsaW1pbmFsQ29udGV4dDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkxpbWluYWxDb250ZXh0IiwicHVzaCIsImZpbmQiLCJmaXJzdCIsImFycmF5VXRpbGl0aWVzIiwiYXN5bmNocm9ub3VzRm9yRWFjaCIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsIkNvbnRleHQiLCJjb250ZXh0IiwiZGVyaXZlZFN1YnN0aXR1dGlvbnMiLCJnZXREZXJpdmVkU3Vic3RpdHV0aW9ucyIsImdldENvbnRleHQiLCJnZXRTb2xlRGVyaXZlZFN1YnN0aXR1dGlvbiIsInNvbGVEZXJpdmVkU3Vic3RpdHV0aW9uIiwiZGVyaXZlZFN1YnN0aXR1dGlvbnNMZW5ndGgiLCJsZW5ndGgiLCJmaXJzdERlcml2ZWRTdWJzdGl0dXRpb24iLCJnZXRTb2xlTm9uVHJpdmlhbERlcml2ZWRTdWJzdGl0dXRpb24iLCJzb2xlTm9uVHJpdmlhbERlcml2ZWRTdWJzdGl0dXRpb24iLCJzb2xlRGVyaXZlZFN1YnN0aXR1dGlvbk5vblRyaXZpYWwiLCJpc05vblRyaXZpYWwiLCJhZGREZXJpdmVkU3Vic3RpdHV0aW9uIiwiZGVyaXZlZFN1YnN0aXR1dGlvbiIsImRlcml2ZWRTdWJzdGl0dXRpb25BIiwiZGVyaXZlZFN1YnN0aXR1dGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZGVyaXZlZFN1YnN0aXR1dGlvbkIiLCJkZXJpdmVkU3Vic3RpdHV0aW9uQUVxdWFsVG9EZXJpdmVkU3Vic3RpdHV0aW9uQiIsImlzRXF1YWxUbyIsImRlYnVnIiwiYWRkRGVyaXZlZFN1YnN0aXR1dGlvbnMiLCJmb3JFYWNoIiwicmVzb2x2ZURlcml2ZWRTdWJzdGl0dXRpb25zIiwiY29udGludWF0aW9uIiwibWV0YXZhcmlhYmxlTm9kZXMiLCJtZXRhdmFyaWFibGVOb2Rlc0Zyb21EZXJpdmVkU3Vic3RpdHV0aW9ucyIsIm1ldGF2YXJpYWJsZU5vZGUiLCJjb21wbGV4RGVyaXZlZFN1YnN0aXR1dGlvbnMiLCJmaW5kQ29tcGxleERlcml2ZWRTdWJzdGl0dXRpb25zQnlNZXRhdmFyaWFibGVOb2RlIiwiY29tcGxleERlcml2ZWRTdWJzdGl0dXRpb24iLCJyZXNvbHZlZCIsImlzUmVzb2x2ZWQiLCJyZXNvbHZlIiwiYXJlRGVyaXZlZFN1YnN0aXR1dGlvbnNSZXNvbHZlZCIsImV2ZXJ5IiwiY29tcGxleERlcml2ZWRTdWJzdGl0dXRpb25zUmVzb2x2ZWQiLCJjb21wbGV4RGVyaXZlZFN1YnN0aXR1dGlvblJlc29sdmVkIiwiaXNFbXB0eSIsImVtcHR5IiwicXVhbGlmeSIsImFzc3VtcHRpb24iLCJjb25zdHJhaW50IiwicXVhbGlmaWVzIiwiUmVmZXJlbmNlRGVyaXZlZFN1YnN0aXR1dGlvbiIsImVsZW1lbnRzIiwicmVmZXJlbmNlRGVyaXZlZFN1YnN0aXR1dGlvbiIsImZyb21Bc3N1bXB0aW9uQW5kQ29uc3RyYWludCIsInJlZmVyZW5jZURlcml2ZWRTdWJzdGl0dXRpb25Db21wYXJlc1RvU3NvbGVEZXJpdmVkU3Vic3RpdHV0aW9uIiwiY29tcGFyZVN1YnN0aXR1dGlvbiIsImNvbW1pdCIsInVuZGVmaW5lZCIsImZpbmREZXJpdmVkU3Vic3RpdHV0aW9uIiwiY2FsbGJhY2siLCJmaW5kRGVyaXZlZFN1YnN0aXR1dGlvbnMiLCJmaW5kRGVyaXZlZFN1YnN0aXR1dGlvbkJ5VmFyaWFibGVOb2RlIiwidmFyaWFibGVOb2RlIiwidmFyaWFibGVOb2RlTWF0Y2hlcyIsIm1hdGNoVmFyaWFibGVOb2RlIiwiZmluZERlcml2ZWRTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZU5vZGUiLCJzaW1wbGVEZXJpdmVkU3Vic3RpdHV0aW9uIiwiZmluZFNpbXBsZURlcml2ZWRTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZU5vZGUiLCJkZXJpdmVkU3Vic3RpdHV0aW9uU2ltcGxlIiwiaXNTaW1wbGUiLCJtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyIsIm1hdGNoTWV0YXZhcmlhYmxlTm9kZSIsImRlcml2ZWRTdWJzdGl0dXRpb25Db21wbGV4IiwiaXNDb21wbGV4IiwiZmluZERlcml2ZWRTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZU5vZGVBbmRTdWJzdGl0dXRpb25Ob2RlIiwic3Vic3RpdHV0aW9uTm9kZSIsInN1YnN0aXR1dGlvbk5vZGVNYXRjaGVzIiwibWF0Y2hTdWJzdGl0dXRpb25Ob2RlIiwiaXNEZXJpdmVkU3Vic3RpdHV0aW9uUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZSIsImRlcml2ZWRTdWJzdGl0dXRpb25QcmVzZW50IiwiaXNEZXJpdmVkU3Vic3RpdHV0aW9uUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZUFuZFN1YnN0aXR1dGlvbk5vZGUiLCJmcm9tTm90aGluZyIsImxpbWluYWxDb250ZXh0Il0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFhQTs7O2VBQXFCQTs7OzJCQVhVO2dDQUNPO2dFQUVsQjtpRUFDQzsrQkFFcUM7Ozs7OztBQUUxRCxNQUFNLEVBQUVDLElBQUksRUFBRUMsSUFBSSxFQUFFQyxLQUFLLEVBQUUsR0FBR0MseUJBQWMsRUFDdEMsRUFBRUMsbUJBQW1CLEVBQUUsR0FBR0MscUNBQXFCO0FBRXRDLE1BQU1OLHVCQUF1Qk8sZ0JBQU87SUFDakQsWUFBWUMsT0FBTyxFQUFFQyxvQkFBb0IsQ0FBRTtRQUN6QyxLQUFLLENBQUNEO1FBRU4sSUFBSSxDQUFDQyxvQkFBb0IsR0FBR0E7SUFDOUI7SUFFQUMsd0JBQXdCRCx1QkFBdUIsRUFBRSxFQUFFO1FBQ2pELE1BQU1ELFVBQVUsSUFBSSxDQUFDRyxVQUFVO1FBRS9CVixLQUFLUSxzQkFBc0IsSUFBSSxDQUFDQSxvQkFBb0I7UUFFcERELFFBQVFFLHVCQUF1QixDQUFDRDtRQUVoQyxPQUFPQTtJQUNUO0lBRUFHLDZCQUE2QjtRQUMzQixJQUFJQywwQkFBMEI7UUFFOUIsTUFBTUMsNkJBQTZCLElBQUksQ0FBQ0wsb0JBQW9CLENBQUNNLE1BQU07UUFFbkUsSUFBSUQsK0JBQStCLEdBQUc7WUFDcEMsTUFBTUUsMkJBQTJCYixNQUFNLElBQUksQ0FBQ00sb0JBQW9C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
|
|
@@ -184,20 +184,19 @@ const _default = (0, _elements.define)(class ContainedAssertion extends _asserti
|
|
|
184
184
|
return validatesWhenDerived;
|
|
185
185
|
}
|
|
186
186
|
unifyIndependently(generalContext, specificContext, continuation) {
|
|
187
|
+
let unifiesIndependently = false;
|
|
187
188
|
const context = specificContext, containedAssertionString = this.getString(); ///
|
|
188
189
|
context.trace(`Unifying the '${containedAssertionString}' contained assertion independently...`);
|
|
189
|
-
debugger;
|
|
190
190
|
const term = (0, _substitutions.termFromTermAndSubstitutions)(this.term, context), frame = (0, _substitutions.frameFromFrameAndSubstitutions)(this.frame, context), statement = (0, _substitutions.statementFromStatementAndSubstitutions)(this.statement, context);
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
}
|
|
196
|
-
if (unifiesIndependently) {
|
|
197
|
-
context.debug(`...unified the '${containedAssertionString}' contained assertion independently.`);
|
|
198
|
-
}
|
|
199
|
-
return continuation(unifiesIndependently);
|
|
191
|
+
validateWhenDerived(term, frame, statement, this.negated, context, (context)=>{
|
|
192
|
+
const validatesWhenDerived = true;
|
|
193
|
+
unifiesIndependently = true;
|
|
194
|
+
return validatesWhenDerived;
|
|
200
195
|
});
|
|
196
|
+
if (unifiesIndependently) {
|
|
197
|
+
context.debug(`...unified the '${containedAssertionString}' contained assertion independently.`);
|
|
198
|
+
}
|
|
199
|
+
return continuation(unifiesIndependently);
|
|
201
200
|
}
|
|
202
201
|
static name = "ContainedAssertion";
|
|
203
202
|
static fromJSON(json, context) {
|
|
@@ -245,4 +244,4 @@ function validateWhenDerived(term, frame, statement, negated, context, continuat
|
|
|
245
244
|
return validatesWhenDerived;
|
|
246
245
|
}
|
|
247
246
|
|
|
248
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9jb250YWluZWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBhbGwsIGV4aXN0cyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGludWF0aW9uXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUNvbnRhaW5lZEFzc2VydGlvbiB9IGZyb20gXCIuLi8uLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zLCBmcmFtZUZyb21GcmFtZUFuZFN1YnN0aXR1dGlvbnMsIHN0YXRlbWVudEZyb21TdGF0ZW1lbnRBbmRTdWJzdGl0dXRpb25zIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdWJzdGl0dXRpb25zXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUsXG4gICAgICAgICBmcmFtZUZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlLFxuICAgICAgICAgbmVnYXRlZEZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlLFxuICAgICAgICAgc3RhdGVtZW50RnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUsXG4gICAgICAgICBjb250YWluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuXG5jb25zdCB7IGJyZWFrUG9pbnRGcm9tSlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIENvbnRhaW5lZEFzc2VydGlvbiBleHRlbmRzIEFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgZnJhbWUsIG5lZ2F0ZWQsIHN0YXRlbWVudCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuICAgIHRoaXMuZnJhbWUgPSBmcmFtZTtcbiAgICB0aGlzLm5lZ2F0ZWQgPSBuZWdhdGVkO1xuICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0VGVybSgpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtO1xuICB9XG5cbiAgZ2V0RnJhbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWU7XG4gIH1cblxuICBpc05lZ2F0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRlZDtcbiAgfVxuXG4gIGdldFN0YXRlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRDb250YWluZWRBc3NlcnRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBjb250YWluZWRBc3NlcnRpb25Ob2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGNvbnRhaW5lZEFzc2VydGlvbk5vZGU7XG4gIH1cblxuICB2YWxpZGF0ZShjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgY29uc3QgY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbi4uLmApO1xuXG4gICAgbGV0IGNvbnRhaW5lZEFzc2VydGlvbjtcblxuICAgIGNvbnN0IGFzc2VydGlvbiA9IHRoaXMuZmluZEFzc2VydGlvbihjb250ZXh0KTtcblxuICAgIGlmIChhc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnRhaW5lZEFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKGNvbnRhaW5lZEFzc2VydGlvbiwgY29udGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRhaW5lZEFzc2VydGlvbiA9IHRoaXM7XG5cbiAgICAgIGNvbnN0IHZhbGlkYXRlVGVybSA9IHRoaXMudmFsaWRhdGVUZXJtLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZUZyYW1lID0gdGhpcy52YWxpZGF0ZUZyYW1lLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZVN0YXRlbWVudCA9IHRoaXMudmFsaWRhdGVTdGF0ZW1lbnQuYmluZCh0aGlzKTtcblxuICAgICAgdmFsaWRhdGVzID0gYWxsKFtcbiAgICAgICAgdmFsaWRhdGVUZXJtLFxuICAgICAgICB2YWxpZGF0ZUZyYW1lLFxuICAgICAgICB2YWxpZGF0ZVN0YXRlbWVudFxuICAgICAgXSwgY29udGV4dCwgKGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgICBjb25zdCB2YWxpZGF0ZVdoZW5TdGF0ZWQgPSB0aGlzLnZhbGlkYXRlV2hlblN0YXRlZC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZXJpdmVkLmJpbmQodGhpcyk7XG5cbiAgICAgICAgdmFsaWRhdGVzID0gZXhpc3RzKFtcbiAgICAgICAgICB2YWxpZGF0ZVdoZW5TdGF0ZWQsXG4gICAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZFxuICAgICAgICBdLCBjb250ZXh0LCAoY29udGV4dCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGFzc2VydGlvbiA9IGNvbnRhaW5lZEFzc2VydGlvbjsgIC8vL1xuXG4gICAgICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oY29udGFpbmVkQXNzZXJ0aW9uLCBjb250ZXh0KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVUZXJtKGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB0ZXJtVmFsaWRhdGVzO1xuXG4gICAgY29uc3QgY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbidzIHRlcm0uLi5gKTtcblxuICAgIGlmICh0aGlzLnRlcm0gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHRlcm1TaW5ndWxhciA9IHRoaXMudGVybS5pc1Npbmd1bGFyKCk7XG5cbiAgICAgIGlmICh0ZXJtU2luZ3VsYXIpIHtcbiAgICAgICAgdGVybVZhbGlkYXRlcyA9IHRoaXMudGVybS52YWxpZGF0ZShjb250ZXh0LCAodGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgICAgIHRoaXMudGVybSA9IHRlcm07XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKGNvbnRleHQpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0aGlzLnRlcm0uZ2V0U3RyaW5nKCkgLy8vXG5cbiAgICAgICAgdGVybVZhbGlkYXRlcyA9IGZhbHNlXG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGlzIG5vdCBzaW5ndWxhci5gKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGVybVZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihjb250ZXh0KTtcbiAgICB9XG5cbiAgICBpZiAodGVybVZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVzIHRoZScke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24ncyB0ZXJtLmApO1xuICAgIH1cblxuICAgIHJldHVybiB0ZXJtVmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVGcmFtZShjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgZnJhbWVWYWxpZGF0ZXM7XG5cbiAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uJ3MgZnJhbWUuLi5gKTtcblxuICAgIGlmICh0aGlzLmZyYW1lICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBmcmFtZVNpbmd1bGFyID0gdGhpcy5mcmFtZS5pc1Npbmd1bGFyKCk7XG5cbiAgICAgIGlmIChmcmFtZVNpbmd1bGFyKSB7XG4gICAgICAgIGZyYW1lVmFsaWRhdGVzID0gdGhpcy5mcmFtZS52YWxpZGF0ZShjb250ZXh0LCAoZnJhbWUsIGNvbnRleHQpID0+IHtcbiAgICAgICAgICB0aGlzLmZyYW1lID0gZnJhbWU7XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKGNvbnRleHQpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGZyYW1lU3RyaW5nID0gdGhpcy5mcmFtZS5nZXRTdHJpbmcoKSAvLy9cblxuICAgICAgICBmcmFtZVZhbGlkYXRlcyA9IGZhbHNlXG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke2ZyYW1lU3RyaW5nfScgZnJhbWUgaXMgbm90IHNpbmd1bGFyLmApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmcmFtZVZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihjb250ZXh0KTtcbiAgICB9XG5cbiAgICBpZiAoZnJhbWVWYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlcyB0aGUnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uJ3MgZnJhbWUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZyYW1lVmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVTdGF0ZW1lbnQoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHN0YXRlbWVudFZhbGlkYXRlcztcblxuICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24ncyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIGlmICh0aGlzLnN0YXRlbWVudCAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3RhdGVtZW50U2luZ3VsYXIgPSB0aGlzLnN0YXRlbWVudC5pc1Npbmd1bGFyKCk7XG5cbiAgICAgIGlmIChzdGF0ZW1lbnRTaW5ndWxhcikge1xuICAgICAgICBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSB0aGlzLnN0YXRlbWVudC52YWxpZGF0ZShjb250ZXh0LCAoc3RhdGVtZW50LCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKGNvbnRleHQpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHRoaXMuc3RhdGVtZW50LmdldFN0cmluZygpIC8vL1xuXG4gICAgICAgIHN0YXRlbWVudFZhbGlkYXRlcyA9IGZhbHNlXG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBpcyBub3Qgc2luZ3VsYXIuYCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlbWVudFZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihjb250ZXh0KTtcbiAgICB9XG5cbiAgICBpZiAoc3RhdGVtZW50VmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZXMgdGhlJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbidzIHN0YXRlbWVudC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGVtZW50VmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuU3RhdGVkKGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2YWxpZGF0ZXNXaGVuU3RhdGVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBzdGF0ZWQgPSBjb250ZXh0LmlzU3RhdGVkKCk7XG5cbiAgICBpZiAoc3RhdGVkKSB7XG4gICAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgc3RhdGVkIGNvbnRhaW5lZCBhc3NlcnRpb24uLi5gKTtcblxuICAgICAgdmFsaWRhdGVzV2hlblN0YXRlZCA9IGNvbnRpbnVhdGlvbihjb250ZXh0KTtcblxuICAgICAgaWYgKHZhbGlkYXRlc1doZW5TdGF0ZWQpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBzdGF0ZWQgY29udGFpbmVkIGFzc2VydGlvbi5gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzV2hlblN0YXRlZDtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlcml2ZWQoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHZhbGlkYXRlc1doZW5EZXJpdmVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBzdGF0ZWQgPSBjb250ZXh0LmlzU3RhdGVkKCk7XG5cbiAgICBpZiAoIXN0YXRlZCkge1xuICAgICAgY29uc3QgY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGRlcml2ZWQgY29udGFpbmVkIGFzc2VydGlvbi4uLmApO1xuXG4gICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHZhbGlkYXRlV2hlbkRlcml2ZWQodGhpcy50ZXJtLCB0aGlzLmZyYW1lLCB0aGlzLnN0YXRlbWVudCwgdGhpcy5uZWdhdGVkLCBjb250ZXh0LCBjb250aW51YXRpb24pO1xuXG4gICAgICBpZiAodmFsaWRhdGVzV2hlbkRlcml2ZWQpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIGNvbnRhaW5lZCBhc3NlcnRpb24uYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlc1doZW5EZXJpdmVkO1xuICB9XG5cbiAgdW5pZnlJbmRlcGVuZGVudGx5KGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICBjb250YWluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uIGluZGVwZW5kZW50bHkuLi5gKTtcblxuICAgIGRlYnVnZ2VyXG5cbiAgICBjb25zdCB0ZXJtID0gdGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyh0aGlzLnRlcm0sIGNvbnRleHQpLFxuICAgICAgICAgIGZyYW1lID0gZnJhbWVGcm9tRnJhbWVBbmRTdWJzdGl0dXRpb25zKHRoaXMuZnJhbWUsIGNvbnRleHQpLFxuICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudEZyb21TdGF0ZW1lbnRBbmRTdWJzdGl0dXRpb25zKHRoaXMuc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICAgIHJldHVybiB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRlcm0sIGZyYW1lLCBzdGF0ZW1lbnQsIHRoaXMubmVnYXRlZCwgY29udGV4dCwgKHZhbGlkYXRlc1doZW5EZXJpdmVkKSA9PiB7XG4gICAgICBsZXQgdW5pZmllc0luZGVwZW5kZW50bHkgPSBmYWxzZTtcblxuICAgICAgaWYgKHZhbGlkYXRlc1doZW5EZXJpdmVkKSB7XG4gICAgICAgIHVuaWZpZXNJbmRlcGVuZGVudGx5ID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHVuaWZpZXNJbmRlcGVuZGVudGx5KSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24gaW5kZXBlbmRlbnRseS5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih1bmlmaWVzSW5kZXBlbmRlbnRseSk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQ29udGFpbmVkQXNzZXJ0aW9uXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgY29udGFpbmVkQXNzZXJ0aW9uID0gbnVsbDtcblxuICAgIGNvbnN0IHsgbmFtZSB9ID0ganNvbjtcblxuICAgIGlmICh0aGlzLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgICBjb250YWluZWRBc3NlcnRpb25Ob2RlID0gaW5zdGFudGlhdGVDb250YWluZWRBc3NlcnRpb24oc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IGNvbnRhaW5lZEFzc2VydGlvbk5vZGUsICAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgICAgdGVybSA9IHRlcm1Gcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZShjb250YWluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgZnJhbWUgPSBmcmFtZUZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlKGNvbnRhaW5lZEFzc2VydGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBuZWdhdGVkID0gbmVnYXRlZEZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlKGNvbnRhaW5lZEFzc2VydGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZShjb250YWluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgICAgICBjb250YWluZWRBc3NlcnRpb24gPSBuZXcgQ29udGFpbmVkQXNzZXJ0aW9uKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgZnJhbWUsIG5lZ2F0ZWQsIHN0YXRlbWVudCk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGFpbmVkQXNzZXJ0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgICAgY29udGFpbmVkQXNzZXJ0aW9uID0gY29udGFpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29udGFpbmVkQXNzZXJ0aW9uO1xuICB9XG59KTtcblxuZnVuY3Rpb24gdmFsaWRhdGVXaGVuRGVyaXZlZCh0ZXJtLCBmcmFtZSwgc3RhdGVtZW50LCBuZWdhdGVkLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgbGV0IHZhbGlkYXRlc1doZW5EZXJpdmVkID0gZmFsc2U7XG5cbiAgaWYgKHN0YXRlbWVudCAhPT0gbnVsbCkge1xuICAgIGlmICh0ZXJtICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB0ZXJtQ29udGFpbmVkID0gc3RhdGVtZW50LmlzVGVybUNvbnRhaW5lZCh0ZXJtLCBjb250ZXh0KTtcblxuICAgICAgaWYgKCFuZWdhdGVkICYmIHRlcm1Db250YWluZWQpIHtcbiAgICAgICAgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAobmVnYXRlZCAmJiAhdGVybUNvbnRhaW5lZCkge1xuICAgICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGZyYW1lICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBmcmFtZUNvbnRhaW5lZCA9IHN0YXRlbWVudC5pc0ZyYW1lQ29udGFpbmVkKGZyYW1lLCBjb250ZXh0KTtcblxuICAgICAgaWYgKCFuZWdhdGVkICYmIGZyYW1lQ29udGFpbmVkKSB7XG4gICAgICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG5lZ2F0ZWQgJiYgIWZyYW1lQ29udGFpbmVkKSB7XG4gICAgICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAodmFsaWRhdGVzV2hlbkRlcml2ZWQpIHtcbiAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IGNvbnRpbnVhdGlvbihjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiB2YWxpZGF0ZXNXaGVuRGVyaXZlZDtcbn0iXSwibmFtZXMiOlsiYnJlYWtQb2ludEZyb21KU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIkNvbnRhaW5lZEFzc2VydGlvbiIsIkFzc2VydGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInRlcm0iLCJmcmFtZSIsIm5lZ2F0ZWQiLCJzdGF0ZW1lbnQiLCJnZXRUZXJtIiwiZ2V0RnJhbWUiLCJpc05lZ2F0ZWQiLCJnZXRTdGF0ZW1lbnQiLCJnZXRDb250YWluZWRBc3NlcnRpb25Ob2RlIiwiZ2V0Tm9kZSIsImNvbnRhaW5lZEFzc2VydGlvbk5vZGUiLCJ2YWxpZGF0ZSIsImNvbnRpbnVhdGlvbiIsInZhbGlkYXRlcyIsImNvbnRhaW5lZEFzc2VydGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiY29udGFpbmVkQXNzZXJ0aW9uIiwiYXNzZXJ0aW9uIiwiZmluZEFzc2VydGlvbiIsImRlYnVnIiwidmFsaWRhdGVUZXJtIiwiYmluZCIsInZhbGlkYXRlRnJhbWUiLCJ2YWxpZGF0ZVN0YXRlbWVudCIsImFsbCIsInZhbGlkYXRlV2hlblN0YXRlZCIsInZhbGlkYXRlV2hlbkRlcml2ZWQiLCJleGlzdHMiLCJhZGRBc3NlcnRpb24iLCJ0ZXJtVmFsaWRhdGVzIiwidGVybVNpbmd1bGFyIiwiaXNTaW5ndWxhciIsInRlcm1TdHJpbmciLCJmcmFtZVZhbGlkYXRlcyIsImZyYW1lU2luZ3VsYXIiLCJmcmFtZVN0cmluZyIsInN0YXRlbWVudFZhbGlkYXRlcyIsInN0YXRlbWVudFNpbmd1bGFyIiwic3RhdGVtZW50U3RyaW5nIiwidmFsaWRhdGVzV2hlblN0YXRlZCIsInN0YXRlZCIsImlzU3RhdGVkIiwidmFsaWRhdGVzV2hlbkRlcml2ZWQiLCJ1bmlmeUluZGVwZW5kZW50bHkiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnMiLCJmcmFtZUZyb21GcmFtZUFuZFN1YnN0aXR1dGlvbnMiLCJzdGF0ZW1lbnRGcm9tU3RhdGVtZW50QW5kU3Vic3RpdHV0aW9ucyIsInVuaWZpZXNJbmRlcGVuZGVudGx5IiwibmFtZSIsImZyb21KU09OIiwianNvbiIsImluc3RhbnRpYXRlIiwiaW5zdGFudGlhdGVDb250YWluZWRBc3NlcnRpb24iLCJ0ZXJtRnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUiLCJmcmFtZUZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlIiwibmVnYXRlZEZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlIiwic3RhdGVtZW50RnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUiLCJmcm9tU3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZSIsImNvbnRhaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIiwidGVybUNvbnRhaW5lZCIsImlzVGVybUNvbnRhaW5lZCIsImZyYW1lQ29udGFpbmVkIiwiaXNGcmFtZUNvbnRhaW5lZCJd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
|
|
247
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9jb250YWluZWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBhbGwsIGV4aXN0cyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGludWF0aW9uXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUNvbnRhaW5lZEFzc2VydGlvbiB9IGZyb20gXCIuLi8uLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zLCBmcmFtZUZyb21GcmFtZUFuZFN1YnN0aXR1dGlvbnMsIHN0YXRlbWVudEZyb21TdGF0ZW1lbnRBbmRTdWJzdGl0dXRpb25zIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdWJzdGl0dXRpb25zXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUsXG4gICAgICAgICBmcmFtZUZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlLFxuICAgICAgICAgbmVnYXRlZEZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlLFxuICAgICAgICAgc3RhdGVtZW50RnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUsXG4gICAgICAgICBjb250YWluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuXG5jb25zdCB7IGJyZWFrUG9pbnRGcm9tSlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIENvbnRhaW5lZEFzc2VydGlvbiBleHRlbmRzIEFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgZnJhbWUsIG5lZ2F0ZWQsIHN0YXRlbWVudCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuICAgIHRoaXMuZnJhbWUgPSBmcmFtZTtcbiAgICB0aGlzLm5lZ2F0ZWQgPSBuZWdhdGVkO1xuICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0VGVybSgpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtO1xuICB9XG5cbiAgZ2V0RnJhbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWU7XG4gIH1cblxuICBpc05lZ2F0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRlZDtcbiAgfVxuXG4gIGdldFN0YXRlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRDb250YWluZWRBc3NlcnRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBjb250YWluZWRBc3NlcnRpb25Ob2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGNvbnRhaW5lZEFzc2VydGlvbk5vZGU7XG4gIH1cblxuICB2YWxpZGF0ZShjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgY29uc3QgY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbi4uLmApO1xuXG4gICAgbGV0IGNvbnRhaW5lZEFzc2VydGlvbjtcblxuICAgIGNvbnN0IGFzc2VydGlvbiA9IHRoaXMuZmluZEFzc2VydGlvbihjb250ZXh0KTtcblxuICAgIGlmIChhc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnRhaW5lZEFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKGNvbnRhaW5lZEFzc2VydGlvbiwgY29udGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRhaW5lZEFzc2VydGlvbiA9IHRoaXM7XG5cbiAgICAgIGNvbnN0IHZhbGlkYXRlVGVybSA9IHRoaXMudmFsaWRhdGVUZXJtLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZUZyYW1lID0gdGhpcy52YWxpZGF0ZUZyYW1lLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZVN0YXRlbWVudCA9IHRoaXMudmFsaWRhdGVTdGF0ZW1lbnQuYmluZCh0aGlzKTtcblxuICAgICAgdmFsaWRhdGVzID0gYWxsKFtcbiAgICAgICAgdmFsaWRhdGVUZXJtLFxuICAgICAgICB2YWxpZGF0ZUZyYW1lLFxuICAgICAgICB2YWxpZGF0ZVN0YXRlbWVudFxuICAgICAgXSwgY29udGV4dCwgKGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgICBjb25zdCB2YWxpZGF0ZVdoZW5TdGF0ZWQgPSB0aGlzLnZhbGlkYXRlV2hlblN0YXRlZC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZXJpdmVkLmJpbmQodGhpcyk7XG5cbiAgICAgICAgdmFsaWRhdGVzID0gZXhpc3RzKFtcbiAgICAgICAgICB2YWxpZGF0ZVdoZW5TdGF0ZWQsXG4gICAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZFxuICAgICAgICBdLCBjb250ZXh0LCAoY29udGV4dCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGFzc2VydGlvbiA9IGNvbnRhaW5lZEFzc2VydGlvbjsgIC8vL1xuXG4gICAgICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oY29udGFpbmVkQXNzZXJ0aW9uLCBjb250ZXh0KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVUZXJtKGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB0ZXJtVmFsaWRhdGVzO1xuXG4gICAgY29uc3QgY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbidzIHRlcm0uLi5gKTtcblxuICAgIGlmICh0aGlzLnRlcm0gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHRlcm1TaW5ndWxhciA9IHRoaXMudGVybS5pc1Npbmd1bGFyKCk7XG5cbiAgICAgIGlmICh0ZXJtU2luZ3VsYXIpIHtcbiAgICAgICAgdGVybVZhbGlkYXRlcyA9IHRoaXMudGVybS52YWxpZGF0ZShjb250ZXh0LCAodGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgICAgIHRoaXMudGVybSA9IHRlcm07XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKGNvbnRleHQpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0aGlzLnRlcm0uZ2V0U3RyaW5nKCkgLy8vXG5cbiAgICAgICAgdGVybVZhbGlkYXRlcyA9IGZhbHNlXG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGlzIG5vdCBzaW5ndWxhci5gKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGVybVZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihjb250ZXh0KTtcbiAgICB9XG5cbiAgICBpZiAodGVybVZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVzIHRoZScke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24ncyB0ZXJtLmApO1xuICAgIH1cblxuICAgIHJldHVybiB0ZXJtVmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVGcmFtZShjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgZnJhbWVWYWxpZGF0ZXM7XG5cbiAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uJ3MgZnJhbWUuLi5gKTtcblxuICAgIGlmICh0aGlzLmZyYW1lICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBmcmFtZVNpbmd1bGFyID0gdGhpcy5mcmFtZS5pc1Npbmd1bGFyKCk7XG5cbiAgICAgIGlmIChmcmFtZVNpbmd1bGFyKSB7XG4gICAgICAgIGZyYW1lVmFsaWRhdGVzID0gdGhpcy5mcmFtZS52YWxpZGF0ZShjb250ZXh0LCAoZnJhbWUsIGNvbnRleHQpID0+IHtcbiAgICAgICAgICB0aGlzLmZyYW1lID0gZnJhbWU7XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKGNvbnRleHQpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGZyYW1lU3RyaW5nID0gdGhpcy5mcmFtZS5nZXRTdHJpbmcoKSAvLy9cblxuICAgICAgICBmcmFtZVZhbGlkYXRlcyA9IGZhbHNlXG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke2ZyYW1lU3RyaW5nfScgZnJhbWUgaXMgbm90IHNpbmd1bGFyLmApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmcmFtZVZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihjb250ZXh0KTtcbiAgICB9XG5cbiAgICBpZiAoZnJhbWVWYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlcyB0aGUnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBjb250YWluZWQgYXNzZXJ0aW9uJ3MgZnJhbWUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZyYW1lVmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVTdGF0ZW1lbnQoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHN0YXRlbWVudFZhbGlkYXRlcztcblxuICAgIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24ncyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIGlmICh0aGlzLnN0YXRlbWVudCAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3RhdGVtZW50U2luZ3VsYXIgPSB0aGlzLnN0YXRlbWVudC5pc1Npbmd1bGFyKCk7XG5cbiAgICAgIGlmIChzdGF0ZW1lbnRTaW5ndWxhcikge1xuICAgICAgICBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSB0aGlzLnN0YXRlbWVudC52YWxpZGF0ZShjb250ZXh0LCAoc3RhdGVtZW50LCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKGNvbnRleHQpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHRoaXMuc3RhdGVtZW50LmdldFN0cmluZygpIC8vL1xuXG4gICAgICAgIHN0YXRlbWVudFZhbGlkYXRlcyA9IGZhbHNlXG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBpcyBub3Qgc2luZ3VsYXIuYCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlbWVudFZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihjb250ZXh0KTtcbiAgICB9XG5cbiAgICBpZiAoc3RhdGVtZW50VmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZXMgdGhlJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgY29udGFpbmVkIGFzc2VydGlvbidzIHN0YXRlbWVudC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGVtZW50VmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuU3RhdGVkKGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2YWxpZGF0ZXNXaGVuU3RhdGVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBzdGF0ZWQgPSBjb250ZXh0LmlzU3RhdGVkKCk7XG5cbiAgICBpZiAoc3RhdGVkKSB7XG4gICAgICBjb25zdCBjb250YWluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nfScgc3RhdGVkIGNvbnRhaW5lZCBhc3NlcnRpb24uLi5gKTtcblxuICAgICAgdmFsaWRhdGVzV2hlblN0YXRlZCA9IGNvbnRpbnVhdGlvbihjb250ZXh0KTtcblxuICAgICAgaWYgKHZhbGlkYXRlc1doZW5TdGF0ZWQpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBzdGF0ZWQgY29udGFpbmVkIGFzc2VydGlvbi5gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzV2hlblN0YXRlZDtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlcml2ZWQoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHZhbGlkYXRlc1doZW5EZXJpdmVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBzdGF0ZWQgPSBjb250ZXh0LmlzU3RhdGVkKCk7XG5cbiAgICBpZiAoIXN0YXRlZCkge1xuICAgICAgY29uc3QgY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGRlcml2ZWQgY29udGFpbmVkIGFzc2VydGlvbi4uLmApO1xuXG4gICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHZhbGlkYXRlV2hlbkRlcml2ZWQodGhpcy50ZXJtLCB0aGlzLmZyYW1lLCB0aGlzLnN0YXRlbWVudCwgdGhpcy5uZWdhdGVkLCBjb250ZXh0LCBjb250aW51YXRpb24pO1xuXG4gICAgICBpZiAodmFsaWRhdGVzV2hlbkRlcml2ZWQpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb250YWluZWRBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIGNvbnRhaW5lZCBhc3NlcnRpb24uYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlc1doZW5EZXJpdmVkO1xuICB9XG5cbiAgdW5pZnlJbmRlcGVuZGVudGx5KGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB1bmlmaWVzSW5kZXBlbmRlbnRseSA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIGNvbnRhaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24gaW5kZXBlbmRlbnRseS4uLmApO1xuXG4gICAgY29uc3QgdGVybSA9IHRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnModGhpcy50ZXJtLCBjb250ZXh0KSxcbiAgICAgICAgICBmcmFtZSA9IGZyYW1lRnJvbUZyYW1lQW5kU3Vic3RpdHV0aW9ucyh0aGlzLmZyYW1lLCBjb250ZXh0KSxcbiAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tU3RhdGVtZW50QW5kU3Vic3RpdHV0aW9ucyh0aGlzLnN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRlcm0sIGZyYW1lLCBzdGF0ZW1lbnQsIHRoaXMubmVnYXRlZCwgY29udGV4dCwgKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcblxuICAgICAgdW5pZmllc0luZGVwZW5kZW50bHkgPSB0cnVlO1xuXG4gICAgICByZXR1cm4gdmFsaWRhdGVzV2hlbkRlcml2ZWQ7XG4gICAgfSk7XG5cbiAgICBpZiAodW5pZmllc0luZGVwZW5kZW50bHkpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke2NvbnRhaW5lZEFzc2VydGlvblN0cmluZ30nIGNvbnRhaW5lZCBhc3NlcnRpb24gaW5kZXBlbmRlbnRseS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGludWF0aW9uKHVuaWZpZXNJbmRlcGVuZGVudGx5KTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJDb250YWluZWRBc3NlcnRpb25cIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBjb250YWluZWRBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uO1xuXG4gICAgaWYgKHRoaXMubmFtZSA9PT0gbmFtZSkge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIGNvbnRhaW5lZEFzc2VydGlvbk5vZGUgPSBpbnN0YW50aWF0ZUNvbnRhaW5lZEFzc2VydGlvbihzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gY29udGFpbmVkQXNzZXJ0aW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgICAgICB0ZXJtID0gdGVybUZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlKGNvbnRhaW5lZEFzc2VydGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBmcmFtZSA9IGZyYW1lRnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUoY29udGFpbmVkQXNzZXJ0aW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIG5lZ2F0ZWQgPSBuZWdhdGVkRnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUoY29udGFpbmVkQXNzZXJ0aW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudEZyb21Db250YWluZWRBc3NlcnRpb25Ob2RlKGNvbnRhaW5lZEFzc2VydGlvbk5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIGNvbnRleHQgPSBudWxsO1xuXG4gICAgICAgIGNvbnRhaW5lZEFzc2VydGlvbiA9IG5ldyBDb250YWluZWRBc3NlcnRpb24oY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtLCBmcmFtZSwgbmVnYXRlZCwgc3RhdGVtZW50KTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiBjb250YWluZWRBc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgICBjb250YWluZWRBc3NlcnRpb24gPSBjb250YWluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb250YWluZWRBc3NlcnRpb247XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRlcm0sIGZyYW1lLCBzdGF0ZW1lbnQsIG5lZ2F0ZWQsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICBsZXQgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSBmYWxzZTtcblxuICBpZiAoc3RhdGVtZW50ICE9PSBudWxsKSB7XG4gICAgaWYgKHRlcm0gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHRlcm1Db250YWluZWQgPSBzdGF0ZW1lbnQuaXNUZXJtQ29udGFpbmVkKHRlcm0sIGNvbnRleHQpO1xuXG4gICAgICBpZiAoIW5lZ2F0ZWQgJiYgdGVybUNvbnRhaW5lZCkge1xuICAgICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChuZWdhdGVkICYmICF0ZXJtQ29udGFpbmVkKSB7XG4gICAgICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZnJhbWUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGZyYW1lQ29udGFpbmVkID0gc3RhdGVtZW50LmlzRnJhbWVDb250YWluZWQoZnJhbWUsIGNvbnRleHQpO1xuXG4gICAgICBpZiAoIW5lZ2F0ZWQgJiYgZnJhbWVDb250YWluZWQpIHtcbiAgICAgICAgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAobmVnYXRlZCAmJiAhZnJhbWVDb250YWluZWQpIHtcbiAgICAgICAgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICh2YWxpZGF0ZXNXaGVuRGVyaXZlZCkge1xuICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gY29udGludWF0aW9uKGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHZhbGlkYXRlc1doZW5EZXJpdmVkO1xufSJdLCJuYW1lcyI6WyJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiQ29udGFpbmVkQXNzZXJ0aW9uIiwiQXNzZXJ0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidGVybSIsImZyYW1lIiwibmVnYXRlZCIsInN0YXRlbWVudCIsImdldFRlcm0iLCJnZXRGcmFtZSIsImlzTmVnYXRlZCIsImdldFN0YXRlbWVudCIsImdldENvbnRhaW5lZEFzc2VydGlvbk5vZGUiLCJnZXROb2RlIiwiY29udGFpbmVkQXNzZXJ0aW9uTm9kZSIsInZhbGlkYXRlIiwiY29udGludWF0aW9uIiwidmFsaWRhdGVzIiwiY29udGFpbmVkQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJjb250YWluZWRBc3NlcnRpb24iLCJhc3NlcnRpb24iLCJmaW5kQXNzZXJ0aW9uIiwiZGVidWciLCJ2YWxpZGF0ZVRlcm0iLCJiaW5kIiwidmFsaWRhdGVGcmFtZSIsInZhbGlkYXRlU3RhdGVtZW50IiwiYWxsIiwidmFsaWRhdGVXaGVuU3RhdGVkIiwidmFsaWRhdGVXaGVuRGVyaXZlZCIsImV4aXN0cyIsImFkZEFzc2VydGlvbiIsInRlcm1WYWxpZGF0ZXMiLCJ0ZXJtU2luZ3VsYXIiLCJpc1Npbmd1bGFyIiwidGVybVN0cmluZyIsImZyYW1lVmFsaWRhdGVzIiwiZnJhbWVTaW5ndWxhciIsImZyYW1lU3RyaW5nIiwic3RhdGVtZW50VmFsaWRhdGVzIiwic3RhdGVtZW50U2luZ3VsYXIiLCJzdGF0ZW1lbnRTdHJpbmciLCJ2YWxpZGF0ZXNXaGVuU3RhdGVkIiwic3RhdGVkIiwiaXNTdGF0ZWQiLCJ2YWxpZGF0ZXNXaGVuRGVyaXZlZCIsInVuaWZ5SW5kZXBlbmRlbnRseSIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0IiwidW5pZmllc0luZGVwZW5kZW50bHkiLCJ0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zIiwiZnJhbWVGcm9tRnJhbWVBbmRTdWJzdGl0dXRpb25zIiwic3RhdGVtZW50RnJvbVN0YXRlbWVudEFuZFN1YnN0aXR1dGlvbnMiLCJuYW1lIiwiZnJvbUpTT04iLCJqc29uIiwiaW5zdGFudGlhdGUiLCJpbnN0YW50aWF0ZUNvbnRhaW5lZEFzc2VydGlvbiIsInRlcm1Gcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZSIsImZyYW1lRnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUiLCJuZWdhdGVkRnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUiLCJzdGF0ZW1lbnRGcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZSIsImZyb21TdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlIiwiY29udGFpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUiLCJ0ZXJtQ29udGFpbmVkIiwiaXNUZXJtQ29udGFpbmVkIiwiZnJhbWVDb250YWluZWQiLCJpc0ZyYW1lQ29udGFpbmVkIl0sIm1hcHBpbmdz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
|
|
@@ -155,20 +155,19 @@ const _default = (0, _elements.define)(class DefinedAssertion extends _assertion
|
|
|
155
155
|
return validatesWhenDerived;
|
|
156
156
|
}
|
|
157
157
|
unifyIndependently(generalContext, specificContext, continuation) {
|
|
158
|
+
let unifiesIndependently = false;
|
|
158
159
|
const context = specificContext, definedAssertionString = this.getString(); ///
|
|
159
160
|
context.trace(`Unifying the '${definedAssertionString}' defined assertion independently...`);
|
|
160
|
-
debugger;
|
|
161
161
|
const term = (0, _substitutions.termFromTermAndSubstitutions)(this.term, context), frame = (0, _substitutions.frameFromFrameAndSubstitutions)(this.frame, context);
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
}
|
|
167
|
-
if (unifiesIndependently) {
|
|
168
|
-
context.debug(`...unified the '${definedAssertionString}' defined assertion independently.`);
|
|
169
|
-
}
|
|
170
|
-
return continuation(unifiesIndependently);
|
|
162
|
+
validateWhenDerived(term, frame, this.negated, context, (context)=>{
|
|
163
|
+
const validatesWhenDerived = true;
|
|
164
|
+
unifiesIndependently = true;
|
|
165
|
+
return validatesWhenDerived;
|
|
171
166
|
});
|
|
167
|
+
if (unifiesIndependently) {
|
|
168
|
+
context.debug(`...unified the '${definedAssertionString}' defined assertion independently.`);
|
|
169
|
+
}
|
|
170
|
+
return continuation(unifiesIndependently);
|
|
172
171
|
}
|
|
173
172
|
static name = "DefinedAssertion";
|
|
174
173
|
static fromJSON(json, context) {
|
|
@@ -234,4 +233,4 @@ function validateWhenDerived(term, frame, negated, context, continuation) {
|
|
|
234
233
|
return validatesWhenDerived;
|
|
235
234
|
}
|
|
236
235
|
|
|
237
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9kZWZpbmVkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgQXNzZXJ0aW9uIGZyb20gXCIuLi9hc3NlcnRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgYWxsLCBleGlzdHMgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRpbnVhdGlvblwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVEZWZpbmVkQXNzZXJ0aW9uIH0gZnJvbSBcIi4uLy4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IHNlcGFyYXRlR3JvdW5kZWRUZXJtc0FuZERlZmluZWRWYXJpYWJsZXMgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2VxdWl2YWxlbmNlc1wiO1xuaW1wb3J0IHsgdGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucywgZnJhbWVGcm9tRnJhbWVBbmRTdWJzdGl0dXRpb25zIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdWJzdGl0dXRpb25zXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbUpEZWZpbmVkQXNzZXJ0aW9uTm9kZSwgZnJhbWVGcm9tSkRlZmluZWRBc3NlcnRpb25Ob2RlLCBuZWdhdGVkRnJvbUpEZWZpbmVkQXNzZXJ0aW9uTm9kZSwgZGVmaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5cbmNvbnN0IHsgYnJlYWtQb2ludEZyb21KU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgRGVmaW5lZEFzc2VydGlvbiBleHRlbmRzIEFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgZnJhbWUsIG5lZ2F0ZWQpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy50ZXJtID0gdGVybTtcbiAgICB0aGlzLmZyYW1lPSBmcmFtZTtcbiAgICB0aGlzLm5lZ2F0ZWQgPSBuZWdhdGVkO1xuICB9XG5cbiAgZ2V0VGVybSgpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtO1xuICB9XG5cbiAgZ2V0RnJhbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWU7XG4gIH1cblxuICBpc05lZ2F0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRlZDtcbiAgfVxuXG4gIGdldERlZmluZWRBc3NlcnRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBkZWZpbmVkQXNzZXJ0aW9uTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBkZWZpbmVkQXNzZXJ0aW9uTm9kZTtcbiAgfVxuXG4gIHZhbGlkYXRlKGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICBjb25zdCBkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZGVmaW5lZEFzc2VydGlvblN0cmluZ30nIGRlZmluZWQgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBsZXQgZGVmaW5lZEFzc2VydGlvbjtcblxuICAgIGNvbnN0IGFzc2VydGlvbiA9IHRoaXMuZmluZEFzc2VydGlvbihjb250ZXh0KTtcblxuICAgIGlmIChhc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGRlZmluZWRBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7ZGVmaW5lZEFzc2VydGlvblN0cmluZ30nIGRlZmluZWQgYXNzZXJ0aW9uIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKGRlZmluZWRBc3NlcnRpb24sIGNvbnRleHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWZpbmVkQXNzZXJ0aW9uID0gdGhpcztcblxuICAgICAgY29uc3QgdmFsaWRhdGVUZXJtID0gdGhpcy52YWxpZGF0ZVRlcm0uYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHZhbGlkYXRlRnJhbWUgPSB0aGlzLnZhbGlkYXRlRnJhbWUuYmluZCh0aGlzKTtcblxuICAgICAgdmFsaWRhdGVzID0gYWxsKFtcbiAgICAgICAgdmFsaWRhdGVUZXJtLFxuICAgICAgICB2YWxpZGF0ZUZyYW1lXG4gICAgICBdLCBjb250ZXh0LCAoY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICAgIGNvbnN0IHZhbGlkYXRlV2hlblN0YXRlZCA9IHRoaXMudmFsaWRhdGVXaGVuU3RhdGVkLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZhbGlkYXRlV2hlbkRlcml2ZWQgPSB0aGlzLnZhbGlkYXRlV2hlbkRlcml2ZWQuYmluZCh0aGlzKTtcblxuICAgICAgICB2YWxpZGF0ZXMgPSBleGlzdHMoW1xuICAgICAgICAgIHZhbGlkYXRlV2hlblN0YXRlZCxcbiAgICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkXG4gICAgICAgIF0sIGNvbnRleHQsIChjb250ZXh0KSA9PiB7XG4gICAgICAgICAgY29uc3QgYXNzZXJ0aW9uID0gZGVmaW5lZEFzc2VydGlvbjsgIC8vL1xuXG4gICAgICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oZGVmaW5lZEFzc2VydGlvbiwgY29udGV4dCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWZpbmVkIGFzc2VydGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVUZXJtKGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB0ZXJtVmFsaWRhdGVzO1xuXG4gICAgY29uc3QgZGVmaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWZpbmVkIGFzc2VydGlvbidzIHRlcm0uLi5gKTtcblxuICAgIGlmICh0aGlzLnRlcm0gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHRlcm1TaW5ndWxhciA9IHRoaXMudGVybS5pc1Npbmd1bGFyKCk7XG5cbiAgICAgIGlmICh0ZXJtU2luZ3VsYXIpIHtcbiAgICAgICAgdGVybVZhbGlkYXRlcyA9IHRoaXMudGVybS52YWxpZGF0ZShjb250ZXh0LCAodGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgICAgIHRoaXMudGVybSA9IHRlcm07XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKGNvbnRleHQpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0aGlzLnRlcm0uZ2V0U3RyaW5nKCkgLy8vXG5cbiAgICAgICAgdGVybVZhbGlkYXRlcyA9IGZhbHNlXG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGlzIG5vdCBzaW5ndWxhci5gKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGVybVZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihjb250ZXh0KTtcbiAgICB9XG5cbiAgICBpZiAodGVybVZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVzIHRoZScke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWZpbmVkIGFzc2VydGlvbidzIHRlcm0uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlcm1WYWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZUZyYW1lKGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCBmcmFtZVZhbGlkYXRlcztcblxuICAgIGNvbnN0IGRlZmluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVmaW5lZCBhc3NlcnRpb24ncyBmcmFtZS4uLmApO1xuXG4gICAgaWYgKHRoaXMuZnJhbWUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGZyYW1lU2luZ3VsYXIgPSB0aGlzLmZyYW1lLmlzU2luZ3VsYXIoKTtcblxuICAgICAgaWYgKGZyYW1lU2luZ3VsYXIpIHtcbiAgICAgICAgZnJhbWVWYWxpZGF0ZXMgPSB0aGlzLmZyYW1lLnZhbGlkYXRlKGNvbnRleHQsIChmcmFtZSwgY29udGV4dCkgPT4ge1xuICAgICAgICAgIHRoaXMuZnJhbWUgPSBmcmFtZTtcblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oY29udGV4dCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZnJhbWVTdHJpbmcgPSB0aGlzLmZyYW1lLmdldFN0cmluZygpIC8vL1xuXG4gICAgICAgIGZyYW1lVmFsaWRhdGVzID0gZmFsc2VcblxuICAgICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7ZnJhbWVTdHJpbmd9JyBmcmFtZSBpcyBub3Qgc2luZ3VsYXIuYCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZyYW1lVmFsaWRhdGVzID0gY29udGludWF0aW9uKGNvbnRleHQpO1xuICAgIH1cblxuICAgIGlmIChmcmFtZVZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVzIHRoZScke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWZpbmVkIGFzc2VydGlvbidzIGZyYW1lLmApO1xuICAgIH1cblxuICAgIHJldHVybiBmcmFtZVZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlV2hlblN0YXRlZChjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdmFsaWRhdGVzV2hlblN0YXRlZCA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3RhdGVkID0gY29udGV4dC5pc1N0YXRlZCgpO1xuXG4gICAgaWYgKHN0YXRlZCkge1xuICAgICAgY29uc3QgZGVmaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgc3RhdGVkIGRlZmluZWQgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICAgIHZhbGlkYXRlc1doZW5TdGF0ZWQgPSBjb250aW51YXRpb24oY29udGV4dCk7XG5cbiAgICAgIGlmICh2YWxpZGF0ZXNXaGVuU3RhdGVkKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7ZGVmaW5lZEFzc2VydGlvblN0cmluZ30nIHN0YXRlZCBkZWZpbmVkIGFzc2VydGlvbi5gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzV2hlblN0YXRlZDtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlcml2ZWQoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHZhbGlkYXRlc1doZW5EZXJpdmVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBzdGF0ZWQgPSBjb250ZXh0LmlzU3RhdGVkKCk7XG5cbiAgICBpZiAoIXN0YXRlZCkge1xuICAgICAgY29uc3QgZGVmaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVyaXZlZCBkZWZpbmVkIGFzc2VydGlvbi4uLmApO1xuXG4gICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHZhbGlkYXRlV2hlbkRlcml2ZWQodGhpcy50ZXJtLCB0aGlzLmZyYW1lLCB0aGlzLm5lZ2F0ZWQsIGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG5cbiAgICAgIGlmICh2YWxpZGF0ZXNXaGVuRGVyaXZlZCkge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIGRlZmluZWQgYXNzZXJ0aW9uLmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXNXaGVuRGVyaXZlZDtcbiAgfVxuXG4gIHVuaWZ5SW5kZXBlbmRlbnRseShnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAvLy9cbiAgICAgICAgICBkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7ZGVmaW5lZEFzc2VydGlvblN0cmluZ30nIGRlZmluZWQgYXNzZXJ0aW9uIGluZGVwZW5kZW50bHkuLi5gKTtcblxuICAgIGRlYnVnZ2VyXG5cbiAgICBjb25zdCB0ZXJtID0gdGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyh0aGlzLnRlcm0sIGNvbnRleHQpLFxuICAgICAgICAgIGZyYW1lID0gZnJhbWVGcm9tRnJhbWVBbmRTdWJzdGl0dXRpb25zKHRoaXMuZnJhbWUsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlV2hlbkRlcml2ZWQodGVybSwgZnJhbWUsIHRoaXMubmVnYXRlZCwgY29udGV4dCwgKHZhbGlkYXRlc1doZW5EZXJpdmVkKSA9PiB7XG4gICAgICBsZXQgdW5pZmllc0luZGVwZW5kZW50bHkgPSBmYWxzZTtcblxuICAgICAgaWYgKHZhbGlkYXRlc1doZW5EZXJpdmVkKSB7XG4gICAgICAgIHVuaWZpZXNJbmRlcGVuZGVudGx5ID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHVuaWZpZXNJbmRlcGVuZGVudGx5KSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWZpbmVkIGFzc2VydGlvbiBpbmRlcGVuZGVudGx5LmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHVuaWZpZXNJbmRlcGVuZGVudGx5KTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJEZWZpbmVkQXNzZXJ0aW9uXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgZGVmaW5lZEFzc2VydGlvbiA9IG51bGw7XG5cbiAgICBjb25zdCB7IG5hbWUgfSA9IGpzb247XG5cbiAgICBpZiAodGhpcy5uYW1lID09PSBuYW1lKSB7XG4gICAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgZGVmaW5lZEFzc2VydGlvbk5vZGUgPSBpbnN0YW50aWF0ZURlZmluZWRBc3NlcnRpb24oc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IGRlZmluZWRBc3NlcnRpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgICAgIHRlcm0gPSB0ZXJtRnJvbUpEZWZpbmVkQXNzZXJ0aW9uTm9kZShkZWZpbmVkQXNzZXJ0aW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIGZyYW1lID0gZnJhbWVGcm9tSkRlZmluZWRBc3NlcnRpb25Ob2RlKGRlZmluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbmVnYXRlZCA9IG5lZ2F0ZWRGcm9tSkRlZmluZWRBc3NlcnRpb25Ob2RlKGRlZmluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgICAgICBkZWZpbmVkQXNzZXJ0aW9uID0gbmV3IERlZmluZWRBc3NlcnRpb24oY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtLCBmcmFtZSwgbmVnYXRlZCk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVmaW5lZEFzc2VydGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGRlZmluZWRBc3NlcnRpb24gPSBkZWZpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZGVmaW5lZEFzc2VydGlvbjtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGlzVmFyaWFibGVEZWZpbmVkKHZhcmlhYmxlLCBjb250ZXh0KSB7XG4gIGNvbnN0IGVxdWl2YWxlbmNlcyA9IGNvbnRleHQuZ2V0RXF1aXZhbGVuY2VzKCksXG4gICAgICAgIGdyb3VuZGVkVGVybXMgPSBbXSxcbiAgICAgICAgZGVmaW5lZFZhcmlhYmxlcyA9IFtdO1xuXG4gIHNlcGFyYXRlR3JvdW5kZWRUZXJtc0FuZERlZmluZWRWYXJpYWJsZXMoZXF1aXZhbGVuY2VzLCBncm91bmRlZFRlcm1zLCBkZWZpbmVkVmFyaWFibGVzLCBjb250ZXh0KTtcblxuICBjb25zdCB2YXJpYWJsZU1hdGNoZXNEZWZpbmVkVmFyaWFibGUgPSBkZWZpbmVkVmFyaWFibGVzLnNvbWUoKGRlZmluZWRWYXJpYWJsZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGRlZmluZWRWYXJpYWJsZUNvbXBhcmVzVG9WYXJpYWJsZSA9IGRlZmluZWRWYXJpYWJsZS5jb21wYXJlVmFyaWFibGUodmFyaWFibGUpO1xuXG4gICAgICAgICAgaWYgKGRlZmluZWRWYXJpYWJsZUNvbXBhcmVzVG9WYXJpYWJsZSA9PT0gdmFyaWFibGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHZhcmlhYmxlRGVmaW5lZCA9IHZhcmlhYmxlTWF0Y2hlc0RlZmluZWRWYXJpYWJsZTsgLy8vXG5cbiAgcmV0dXJuIHZhcmlhYmxlRGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gaXNNZXRhdmFyaWFibGVEZWZpbmVkKG1ldGF2YXJpYWJsZSwgY29udGV4dCkge1xuICBjb25zdCBzdGVwcyA9IGNvbnRleHQuZ2V0U3RlcHMoKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlRGVmaW5lZCA9IHN0ZXBzLnNvbWUoKHN0ZXApID0+IHtcbiAgICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVEZWZpbmVkID0gc3RlcC5pc01ldGF2YXJpYWJsZURlZmluZWQobWV0YXZhcmlhYmxlLCBjb250ZXh0KTtcblxuICAgICAgICAgIGlmIChtZXRhdmFyaWFibGVEZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGVEZWZpbmVkO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVdoZW5EZXJpdmVkKHRlcm0sIGZyYW1lLCBuZWdhdGVkLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgbGV0IHZhbGlkYXRlc1doZW5EZXJpdmVkID0gZmFsc2U7XG5cbiAgaWYgKHRlcm0gIT09IG51bGwpIHtcbiAgICBjb25zdCB2YXJpYWJsZUlkZW50aWZpZXIgPSB0ZXJtLmdldFZhcmlhYmxlSWRlbnRpZmllcigpLFxuICAgICAgICAgIGRlY2xhcmVkRGFyaWFibGUgPSBjb250ZXh0LmZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKSxcbiAgICAgICAgICBkZWNsYXJlZERhcmlhYmxlRGVmaW5lZCA9IGlzVmFyaWFibGVEZWZpbmVkKGRlY2xhcmVkRGFyaWFibGUsIGNvbnRleHQpO1xuXG4gICAgaWYgKCFuZWdhdGVkICYmIGRlY2xhcmVkRGFyaWFibGVEZWZpbmVkKSB7XG4gICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKG5lZ2F0ZWQgJiYgIWRlY2xhcmVkRGFyaWFibGVEZWZpbmVkKSB7XG4gICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKGZyYW1lIT09IG51bGwpIHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGVOYW1lID0gZnJhbWUuZ2V0TWV0YXZhcmlhYmxlTmFtZSgpLFxuICAgICAgICAgIGRlY2xhcmVkTWV0YXZhcmlhYmxlID0gY29udGV4dC5maW5kRGVjbGFyZWRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5hbWUobWV0YXZhcmlhYmxlTmFtZSksXG4gICAgICAgICAgZGVjbGFyZWRNZXRhdmFyaWFibGVEZWZpbmVkID0gaXNNZXRhdmFyaWFibGVEZWZpbmVkKGRlY2xhcmVkTWV0YXZhcmlhYmxlLCBjb250ZXh0KTtcblxuICAgIGlmICghbmVnYXRlZCAmJiBkZWNsYXJlZE1ldGF2YXJpYWJsZURlZmluZWQpIHtcbiAgICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAobmVnYXRlZCAmJiAhZGVjbGFyZWRNZXRhdmFyaWFibGVEZWZpbmVkKSB7XG4gICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKHZhbGlkYXRlc1doZW5EZXJpdmVkKSB7XG4gICAgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSBjb250aW51YXRpb24oY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVzV2hlbkRlcml2ZWQ7XG59XG4iXSwibmFtZXMiOlsiYnJlYWtQb2ludEZyb21KU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIkRlZmluZWRBc3NlcnRpb24iLCJBc3NlcnRpb24iLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJ0ZXJtIiwiZnJhbWUiLCJuZWdhdGVkIiwiZ2V0VGVybSIsImdldEZyYW1lIiwiaXNOZWdhdGVkIiwiZ2V0RGVmaW5lZEFzc2VydGlvbk5vZGUiLCJnZXROb2RlIiwiZGVmaW5lZEFzc2VydGlvbk5vZGUiLCJ2YWxpZGF0ZSIsImNvbnRpbnVhdGlvbiIsInZhbGlkYXRlcyIsImRlZmluZWRBc3NlcnRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImRlZmluZWRBc3NlcnRpb24iLCJhc3NlcnRpb24iLCJmaW5kQXNzZXJ0aW9uIiwiZGVidWciLCJ2YWxpZGF0ZVRlcm0iLCJiaW5kIiwidmFsaWRhdGVGcmFtZSIsImFsbCIsInZhbGlkYXRlV2hlblN0YXRlZCIsInZhbGlkYXRlV2hlbkRlcml2ZWQiLCJleGlzdHMiLCJhZGRBc3NlcnRpb24iLCJ0ZXJtVmFsaWRhdGVzIiwidGVybVNpbmd1bGFyIiwiaXNTaW5ndWxhciIsInRlcm1TdHJpbmciLCJmcmFtZVZhbGlkYXRlcyIsImZyYW1lU2luZ3VsYXIiLCJmcmFtZVN0cmluZyIsInZhbGlkYXRlc1doZW5TdGF0ZWQiLCJzdGF0ZWQiLCJpc1N0YXRlZCIsInZhbGlkYXRlc1doZW5EZXJpdmVkIiwidW5pZnlJbmRlcGVuZGVudGx5IiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJ0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zIiwiZnJhbWVGcm9tRnJhbWVBbmRTdWJzdGl0dXRpb25zIiwidW5pZmllc0luZGVwZW5kZW50bHkiLCJuYW1lIiwiZnJvbUpTT04iLCJqc29uIiwiaW5zdGFudGlhdGUiLCJpbnN0YW50aWF0ZURlZmluZWRBc3NlcnRpb24iLCJ0ZXJtRnJvbUpEZWZpbmVkQXNzZXJ0aW9uTm9kZSIsImZyYW1lRnJvbUpEZWZpbmVkQXNzZXJ0aW9uTm9kZSIsIm5lZ2F0ZWRGcm9tSkRlZmluZWRBc3NlcnRpb25Ob2RlIiwiZnJvbVN0YXRlbWVudCIsInN0YXRlbWVudCIsInN0YXRlbWVudE5vZGUiLCJkZWZpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUiLCJpc1ZhcmlhYmxlRGVmaW5lZCIsInZhcmlhYmxlIiwiZXF1aXZhbGVuY2VzIiwiZ2V0RXF1aXZhbGVuY2VzIiwiZ3JvdW5kZWRUZXJtcyIsImRlZmluZWRWYXJpYWJsZXMiLCJzZXBhcmF0ZUdyb3VuZGVkVGVybXNBbmREZWZpbmVkVmFyaWFibGVzIiwidmFyaWFibGVNYXRjaGVzRGVmaW5lZFZhcmlhYmxlIiwic29tZSIsImRlZmluZWRWYXJpYWJsZSIsImRlZmluZWRWYXJpYWJsZUNvbXBhcmVzVG9WYXJpYWJsZSIsImNvbXBhcmVWYXJpYWJsZSIsInZhcmlhYmxlRGVmaW5lZCIsImlzTWV0YXZhcmlhYmxlRGVmaW5lZCIsIm1ldGF2YXJpYWJsZSIsInN0ZXBzIiwiZ2V0U3RlcHMiLCJtZXRhdmFyaWFibGVEZWZpbmVkIiwic3RlcCIsInZhcmlhYmxlSWRlbnRpZmllciIsImdldFZhcmlhYmxlSWRlbnRpZmllciIsImRlY2xhcmVkRGFyaWFibGUiLCJmaW5kRGVjbGFyZWRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyIiwiZGVjbGFyZWREYXJpYWJsZURlZmluZWQiLCJtZXRhdmFyaWFibGVOYW1lIiwiZ2V0TWV0YXZhcmlhYmxlTmFtZSIsImRlY2xhcmVkTWV0YXZhcmlhYmxlIiwiZmluZERlY2xhcmVkTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVEZWZpbmVkIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFnQkE7OztlQUFBOzs7Z0NBZG9DO2tFQUVkOzBCQUVDO3lCQUNLOzhCQUNBOzZCQUNnQjs4QkFDYTsrQkFDb0I7eUJBQ3NFOzs7Ozs7QUFFbkosTUFBTSxFQUFFQSxrQkFBa0IsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFbEQsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyx5QkFBeUJDLGtCQUFTO0lBQzVELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsSUFBSSxFQUFFQyxLQUFLLEVBQUVDLE9BQU8sQ0FBRTtRQUNuRSxLQUFLLENBQUNOLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsS0FBSyxHQUFFQTtRQUNaLElBQUksQ0FBQ0MsT0FBTyxHQUFHQTtJQUNqQjtJQUVBQyxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUNILElBQUk7SUFDbEI7SUFFQUksV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDSCxLQUFLO0lBQ25CO0lBRUFJLFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQ0gsT0FBTztJQUNyQjtJQUVBSSwwQkFBMEI7UUFDeEIsTUFBTVIsT0FBTyxJQUFJLENBQUNTLE9BQU8sSUFDbkJDLHVCQUF1QlYsTUFBTyxHQUFHO1FBRXZDLE9BQU9VO0lBQ1Q7SUFFQUMsU0FBU2IsT0FBTyxFQUFFYyxZQUFZLEVBQUU7UUFDOUIsSUFBSUM7UUFFSixNQUFNQyx5QkFBeUIsSUFBSSxDQUFDQyxTQUFTLElBQUssR0FBRztRQUVyRGpCLFFBQVFrQixLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRUYsdUJBQXVCLHNCQUFz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
|
|
236
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9kZWZpbmVkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgQXNzZXJ0aW9uIGZyb20gXCIuLi9hc3NlcnRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgYWxsLCBleGlzdHMgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRpbnVhdGlvblwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVEZWZpbmVkQXNzZXJ0aW9uIH0gZnJvbSBcIi4uLy4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IHNlcGFyYXRlR3JvdW5kZWRUZXJtc0FuZERlZmluZWRWYXJpYWJsZXMgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2VxdWl2YWxlbmNlc1wiO1xuaW1wb3J0IHsgdGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucywgZnJhbWVGcm9tRnJhbWVBbmRTdWJzdGl0dXRpb25zIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdWJzdGl0dXRpb25zXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbUpEZWZpbmVkQXNzZXJ0aW9uTm9kZSwgZnJhbWVGcm9tSkRlZmluZWRBc3NlcnRpb25Ob2RlLCBuZWdhdGVkRnJvbUpEZWZpbmVkQXNzZXJ0aW9uTm9kZSwgZGVmaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5cbmNvbnN0IHsgYnJlYWtQb2ludEZyb21KU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgRGVmaW5lZEFzc2VydGlvbiBleHRlbmRzIEFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgZnJhbWUsIG5lZ2F0ZWQpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy50ZXJtID0gdGVybTtcbiAgICB0aGlzLmZyYW1lPSBmcmFtZTtcbiAgICB0aGlzLm5lZ2F0ZWQgPSBuZWdhdGVkO1xuICB9XG5cbiAgZ2V0VGVybSgpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtO1xuICB9XG5cbiAgZ2V0RnJhbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWU7XG4gIH1cblxuICBpc05lZ2F0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRlZDtcbiAgfVxuXG4gIGdldERlZmluZWRBc3NlcnRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBkZWZpbmVkQXNzZXJ0aW9uTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBkZWZpbmVkQXNzZXJ0aW9uTm9kZTtcbiAgfVxuXG4gIHZhbGlkYXRlKGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICBjb25zdCBkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZGVmaW5lZEFzc2VydGlvblN0cmluZ30nIGRlZmluZWQgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBsZXQgZGVmaW5lZEFzc2VydGlvbjtcblxuICAgIGNvbnN0IGFzc2VydGlvbiA9IHRoaXMuZmluZEFzc2VydGlvbihjb250ZXh0KTtcblxuICAgIGlmIChhc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGRlZmluZWRBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7ZGVmaW5lZEFzc2VydGlvblN0cmluZ30nIGRlZmluZWQgYXNzZXJ0aW9uIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKGRlZmluZWRBc3NlcnRpb24sIGNvbnRleHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWZpbmVkQXNzZXJ0aW9uID0gdGhpcztcblxuICAgICAgY29uc3QgdmFsaWRhdGVUZXJtID0gdGhpcy52YWxpZGF0ZVRlcm0uYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHZhbGlkYXRlRnJhbWUgPSB0aGlzLnZhbGlkYXRlRnJhbWUuYmluZCh0aGlzKTtcblxuICAgICAgdmFsaWRhdGVzID0gYWxsKFtcbiAgICAgICAgdmFsaWRhdGVUZXJtLFxuICAgICAgICB2YWxpZGF0ZUZyYW1lXG4gICAgICBdLCBjb250ZXh0LCAoY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICAgIGNvbnN0IHZhbGlkYXRlV2hlblN0YXRlZCA9IHRoaXMudmFsaWRhdGVXaGVuU3RhdGVkLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZhbGlkYXRlV2hlbkRlcml2ZWQgPSB0aGlzLnZhbGlkYXRlV2hlbkRlcml2ZWQuYmluZCh0aGlzKTtcblxuICAgICAgICB2YWxpZGF0ZXMgPSBleGlzdHMoW1xuICAgICAgICAgIHZhbGlkYXRlV2hlblN0YXRlZCxcbiAgICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkXG4gICAgICAgIF0sIGNvbnRleHQsIChjb250ZXh0KSA9PiB7XG4gICAgICAgICAgY29uc3QgYXNzZXJ0aW9uID0gZGVmaW5lZEFzc2VydGlvbjsgIC8vL1xuXG4gICAgICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oZGVmaW5lZEFzc2VydGlvbiwgY29udGV4dCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWZpbmVkIGFzc2VydGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVUZXJtKGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB0ZXJtVmFsaWRhdGVzO1xuXG4gICAgY29uc3QgZGVmaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWZpbmVkIGFzc2VydGlvbidzIHRlcm0uLi5gKTtcblxuICAgIGlmICh0aGlzLnRlcm0gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHRlcm1TaW5ndWxhciA9IHRoaXMudGVybS5pc1Npbmd1bGFyKCk7XG5cbiAgICAgIGlmICh0ZXJtU2luZ3VsYXIpIHtcbiAgICAgICAgdGVybVZhbGlkYXRlcyA9IHRoaXMudGVybS52YWxpZGF0ZShjb250ZXh0LCAodGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgICAgIHRoaXMudGVybSA9IHRlcm07XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKGNvbnRleHQpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0aGlzLnRlcm0uZ2V0U3RyaW5nKCkgLy8vXG5cbiAgICAgICAgdGVybVZhbGlkYXRlcyA9IGZhbHNlXG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGlzIG5vdCBzaW5ndWxhci5gKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGVybVZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihjb250ZXh0KTtcbiAgICB9XG5cbiAgICBpZiAodGVybVZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVzIHRoZScke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWZpbmVkIGFzc2VydGlvbidzIHRlcm0uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlcm1WYWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZUZyYW1lKGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCBmcmFtZVZhbGlkYXRlcztcblxuICAgIGNvbnN0IGRlZmluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVmaW5lZCBhc3NlcnRpb24ncyBmcmFtZS4uLmApO1xuXG4gICAgaWYgKHRoaXMuZnJhbWUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGZyYW1lU2luZ3VsYXIgPSB0aGlzLmZyYW1lLmlzU2luZ3VsYXIoKTtcblxuICAgICAgaWYgKGZyYW1lU2luZ3VsYXIpIHtcbiAgICAgICAgZnJhbWVWYWxpZGF0ZXMgPSB0aGlzLmZyYW1lLnZhbGlkYXRlKGNvbnRleHQsIChmcmFtZSwgY29udGV4dCkgPT4ge1xuICAgICAgICAgIHRoaXMuZnJhbWUgPSBmcmFtZTtcblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oY29udGV4dCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZnJhbWVTdHJpbmcgPSB0aGlzLmZyYW1lLmdldFN0cmluZygpIC8vL1xuXG4gICAgICAgIGZyYW1lVmFsaWRhdGVzID0gZmFsc2VcblxuICAgICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7ZnJhbWVTdHJpbmd9JyBmcmFtZSBpcyBub3Qgc2luZ3VsYXIuYCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZyYW1lVmFsaWRhdGVzID0gY29udGludWF0aW9uKGNvbnRleHQpO1xuICAgIH1cblxuICAgIGlmIChmcmFtZVZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVzIHRoZScke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWZpbmVkIGFzc2VydGlvbidzIGZyYW1lLmApO1xuICAgIH1cblxuICAgIHJldHVybiBmcmFtZVZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlV2hlblN0YXRlZChjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdmFsaWRhdGVzV2hlblN0YXRlZCA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3RhdGVkID0gY29udGV4dC5pc1N0YXRlZCgpO1xuXG4gICAgaWYgKHN0YXRlZCkge1xuICAgICAgY29uc3QgZGVmaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgc3RhdGVkIGRlZmluZWQgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICAgIHZhbGlkYXRlc1doZW5TdGF0ZWQgPSBjb250aW51YXRpb24oY29udGV4dCk7XG5cbiAgICAgIGlmICh2YWxpZGF0ZXNXaGVuU3RhdGVkKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7ZGVmaW5lZEFzc2VydGlvblN0cmluZ30nIHN0YXRlZCBkZWZpbmVkIGFzc2VydGlvbi5gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzV2hlblN0YXRlZDtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlcml2ZWQoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHZhbGlkYXRlc1doZW5EZXJpdmVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBzdGF0ZWQgPSBjb250ZXh0LmlzU3RhdGVkKCk7XG5cbiAgICBpZiAoIXN0YXRlZCkge1xuICAgICAgY29uc3QgZGVmaW5lZEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVyaXZlZCBkZWZpbmVkIGFzc2VydGlvbi4uLmApO1xuXG4gICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHZhbGlkYXRlV2hlbkRlcml2ZWQodGhpcy50ZXJtLCB0aGlzLmZyYW1lLCB0aGlzLm5lZ2F0ZWQsIGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG5cbiAgICAgIGlmICh2YWxpZGF0ZXNXaGVuRGVyaXZlZCkge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIGRlZmluZWQgYXNzZXJ0aW9uLmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXNXaGVuRGVyaXZlZDtcbiAgfVxuXG4gIHVuaWZ5SW5kZXBlbmRlbnRseShnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdW5pZmllc0luZGVwZW5kZW50bHkgPSBmYWxzZTtcblxuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsIC8vL1xuICAgICAgICAgIGRlZmluZWRBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtkZWZpbmVkQXNzZXJ0aW9uU3RyaW5nfScgZGVmaW5lZCBhc3NlcnRpb24gaW5kZXBlbmRlbnRseS4uLmApO1xuXG4gICAgY29uc3QgdGVybSA9IHRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnModGhpcy50ZXJtLCBjb250ZXh0KSxcbiAgICAgICAgICBmcmFtZSA9IGZyYW1lRnJvbUZyYW1lQW5kU3Vic3RpdHV0aW9ucyh0aGlzLmZyYW1lLCBjb250ZXh0KTtcblxuICAgIHZhbGlkYXRlV2hlbkRlcml2ZWQodGVybSwgZnJhbWUsIHRoaXMubmVnYXRlZCwgY29udGV4dCwgKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcblxuICAgICAgdW5pZmllc0luZGVwZW5kZW50bHkgPSB0cnVlO1xuXG4gICAgICByZXR1cm4gdmFsaWRhdGVzV2hlbkRlcml2ZWQ7XG4gICAgfSk7XG5cbiAgICBpZiAodW5pZmllc0luZGVwZW5kZW50bHkpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke2RlZmluZWRBc3NlcnRpb25TdHJpbmd9JyBkZWZpbmVkIGFzc2VydGlvbiBpbmRlcGVuZGVudGx5LmApO1xuICAgIH1cblxuICAgIHJldHVybiBjb250aW51YXRpb24odW5pZmllc0luZGVwZW5kZW50bHkpO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkRlZmluZWRBc3NlcnRpb25cIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBkZWZpbmVkQXNzZXJ0aW9uID0gbnVsbDtcblxuICAgIGNvbnN0IHsgbmFtZSB9ID0ganNvbjtcblxuICAgIGlmICh0aGlzLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgICBkZWZpbmVkQXNzZXJ0aW9uTm9kZSA9IGluc3RhbnRpYXRlRGVmaW5lZEFzc2VydGlvbihzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gZGVmaW5lZEFzc2VydGlvbk5vZGUsICAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgICAgdGVybSA9IHRlcm1Gcm9tSkRlZmluZWRBc3NlcnRpb25Ob2RlKGRlZmluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgZnJhbWUgPSBmcmFtZUZyb21KRGVmaW5lZEFzc2VydGlvbk5vZGUoZGVmaW5lZEFzc2VydGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBuZWdhdGVkID0gbmVnYXRlZEZyb21KRGVmaW5lZEFzc2VydGlvbk5vZGUoZGVmaW5lZEFzc2VydGlvbk5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIGNvbnRleHQgPSBudWxsO1xuXG4gICAgICAgIGRlZmluZWRBc3NlcnRpb24gPSBuZXcgRGVmaW5lZEFzc2VydGlvbihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm0sIGZyYW1lLCBuZWdhdGVkKTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiBkZWZpbmVkQXNzZXJ0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgICAgZGVmaW5lZEFzc2VydGlvbiA9IGRlZmluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBkZWZpbmVkQXNzZXJ0aW9uO1xuICB9XG59KTtcblxuZnVuY3Rpb24gaXNWYXJpYWJsZURlZmluZWQodmFyaWFibGUsIGNvbnRleHQpIHtcbiAgY29uc3QgZXF1aXZhbGVuY2VzID0gY29udGV4dC5nZXRFcXVpdmFsZW5jZXMoKSxcbiAgICAgICAgZ3JvdW5kZWRUZXJtcyA9IFtdLFxuICAgICAgICBkZWZpbmVkVmFyaWFibGVzID0gW107XG5cbiAgc2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyhlcXVpdmFsZW5jZXMsIGdyb3VuZGVkVGVybXMsIGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gIGNvbnN0IHZhcmlhYmxlTWF0Y2hlc0RlZmluZWRWYXJpYWJsZSA9IGRlZmluZWRWYXJpYWJsZXMuc29tZSgoZGVmaW5lZFZhcmlhYmxlKSA9PiB7XG4gICAgICAgICAgY29uc3QgZGVmaW5lZFZhcmlhYmxlQ29tcGFyZXNUb1ZhcmlhYmxlID0gZGVmaW5lZFZhcmlhYmxlLmNvbXBhcmVWYXJpYWJsZSh2YXJpYWJsZSk7XG5cbiAgICAgICAgICBpZiAoZGVmaW5lZFZhcmlhYmxlQ29tcGFyZXNUb1ZhcmlhYmxlID09PSB2YXJpYWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgdmFyaWFibGVEZWZpbmVkID0gdmFyaWFibGVNYXRjaGVzRGVmaW5lZFZhcmlhYmxlOyAvLy9cblxuICByZXR1cm4gdmFyaWFibGVEZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBpc01ldGF2YXJpYWJsZURlZmluZWQobWV0YXZhcmlhYmxlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0ZXBzID0gY29udGV4dC5nZXRTdGVwcygpLFxuICAgICAgICBtZXRhdmFyaWFibGVEZWZpbmVkID0gc3RlcHMuc29tZSgoc3RlcCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZURlZmluZWQgPSBzdGVwLmlzTWV0YXZhcmlhYmxlRGVmaW5lZChtZXRhdmFyaWFibGUsIGNvbnRleHQpO1xuXG4gICAgICAgICAgaWYgKG1ldGF2YXJpYWJsZURlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZURlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlV2hlbkRlcml2ZWQodGVybSwgZnJhbWUsIG5lZ2F0ZWQsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICBsZXQgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSBmYWxzZTtcblxuICBpZiAodGVybSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHZhcmlhYmxlSWRlbnRpZmllciA9IHRlcm0uZ2V0VmFyaWFibGVJZGVudGlmaWVyKCksXG4gICAgICAgICAgZGVjbGFyZWREYXJpYWJsZSA9IGNvbnRleHQuZmluZERlY2xhcmVkVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpLFxuICAgICAgICAgIGRlY2xhcmVkRGFyaWFibGVEZWZpbmVkID0gaXNWYXJpYWJsZURlZmluZWQoZGVjbGFyZWREYXJpYWJsZSwgY29udGV4dCk7XG5cbiAgICBpZiAoIW5lZ2F0ZWQgJiYgZGVjbGFyZWREYXJpYWJsZURlZmluZWQpIHtcbiAgICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAobmVnYXRlZCAmJiAhZGVjbGFyZWREYXJpYWJsZURlZmluZWQpIHtcbiAgICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBpZiAoZnJhbWUhPT0gbnVsbCkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5hbWUgPSBmcmFtZS5nZXRNZXRhdmFyaWFibGVOYW1lKCksXG4gICAgICAgICAgZGVjbGFyZWRNZXRhdmFyaWFibGUgPSBjb250ZXh0LmZpbmREZWNsYXJlZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKSxcbiAgICAgICAgICBkZWNsYXJlZE1ldGF2YXJpYWJsZURlZmluZWQgPSBpc01ldGF2YXJpYWJsZURlZmluZWQoZGVjbGFyZWRNZXRhdmFyaWFibGUsIGNvbnRleHQpO1xuXG4gICAgaWYgKCFuZWdhdGVkICYmIGRlY2xhcmVkTWV0YXZhcmlhYmxlRGVmaW5lZCkge1xuICAgICAgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChuZWdhdGVkICYmICFkZWNsYXJlZE1ldGF2YXJpYWJsZURlZmluZWQpIHtcbiAgICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBpZiAodmFsaWRhdGVzV2hlbkRlcml2ZWQpIHtcbiAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IGNvbnRpbnVhdGlvbihjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiB2YWxpZGF0ZXNXaGVuRGVyaXZlZDtcbn1cbiJdLCJuYW1lcyI6WyJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiRGVmaW5lZEFzc2VydGlvbiIsIkFzc2VydGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInRlcm0iLCJmcmFtZSIsIm5lZ2F0ZWQiLCJnZXRUZXJtIiwiZ2V0RnJhbWUiLCJpc05lZ2F0ZWQiLCJnZXREZWZpbmVkQXNzZXJ0aW9uTm9kZSIsImdldE5vZGUiLCJkZWZpbmVkQXNzZXJ0aW9uTm9kZSIsInZhbGlkYXRlIiwiY29udGludWF0aW9uIiwidmFsaWRhdGVzIiwiZGVmaW5lZEFzc2VydGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZGVmaW5lZEFzc2VydGlvbiIsImFzc2VydGlvbiIsImZpbmRBc3NlcnRpb24iLCJkZWJ1ZyIsInZhbGlkYXRlVGVybSIsImJpbmQiLCJ2YWxpZGF0ZUZyYW1lIiwiYWxsIiwidmFsaWRhdGVXaGVuU3RhdGVkIiwidmFsaWRhdGVXaGVuRGVyaXZlZCIsImV4aXN0cyIsImFkZEFzc2VydGlvbiIsInRlcm1WYWxpZGF0ZXMiLCJ0ZXJtU2luZ3VsYXIiLCJpc1Npbmd1bGFyIiwidGVybVN0cmluZyIsImZyYW1lVmFsaWRhdGVzIiwiZnJhbWVTaW5ndWxhciIsImZyYW1lU3RyaW5nIiwidmFsaWRhdGVzV2hlblN0YXRlZCIsInN0YXRlZCIsImlzU3RhdGVkIiwidmFsaWRhdGVzV2hlbkRlcml2ZWQiLCJ1bmlmeUluZGVwZW5kZW50bHkiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInVuaWZpZXNJbmRlcGVuZGVudGx5IiwidGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyIsImZyYW1lRnJvbUZyYW1lQW5kU3Vic3RpdHV0aW9ucyIsIm5hbWUiLCJmcm9tSlNPTiIsImpzb24iLCJpbnN0YW50aWF0ZSIsImluc3RhbnRpYXRlRGVmaW5lZEFzc2VydGlvbiIsInRlcm1Gcm9tSkRlZmluZWRBc3NlcnRpb25Ob2RlIiwiZnJhbWVGcm9tSkRlZmluZWRBc3NlcnRpb25Ob2RlIiwibmVnYXRlZEZyb21KRGVmaW5lZEFzc2VydGlvbk5vZGUiLCJmcm9tU3RhdGVtZW50Iiwic3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZSIsImRlZmluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSIsImlzVmFyaWFibGVEZWZpbmVkIiwidmFyaWFibGUiLCJlcXVpdmFsZW5jZXMiLCJnZXRFcXVpdmFsZW5jZXMiLCJncm91bmRlZFRlcm1zIiwiZGVmaW5lZFZhcmlhYmxlcyIsInNlcGFyYXRlR3JvdW5kZWRUZXJtc0FuZERlZmluZWRWYXJpYWJsZXMiLCJ2YXJpYWJsZU1hdGNoZXNEZWZpbmVkVmFyaWFibGUiLCJzb21lIiwiZGVmaW5lZFZhcmlhYmxlIiwiZGVmaW5lZFZhcmlhYmxlQ29tcGFyZXNUb1ZhcmlhYmxlIiwiY29tcGFyZVZhcmlhYmxlIiwidmFyaWFibGVEZWZpbmVkIiwiaXNNZXRhdmFyaWFibGVEZWZpbmVkIiwibWV0YXZhcmlhYmxlIiwic3RlcHMiLCJnZXRTdGVwcyIsIm1ldGF2YXJpYWJsZURlZmluZWQiLCJzdGVwIiwidmFyaWFibGVJZGVudGlmaWVyIiwiZ2V0VmFyaWFibGVJZGVudGlmaWVyIiwiZGVjbGFyZWREYXJpYWJsZSIsImZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIiLCJkZWNsYXJlZERhcmlhYmxlRGVmaW5lZCIsIm1ldGF2YXJpYWJsZU5hbWUiLCJnZXRNZXRhdmFyaWFibGVOYW1lIiwiZGVjbGFyZWRNZXRhdmFyaWFibGUiLCJmaW5kRGVjbGFyZWRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5hbWUiLCJkZWNsYXJlZE1ldGF2YXJpYWJsZURlZmluZWQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWdCQTs7O2VBQUE7OztnQ0Fkb0M7a0VBRWQ7MEJBRUM7eUJBQ0s7OEJBQ0E7NkJBQ2dCOzhCQUNhOytCQUNvQjt5QkFDc0U7Ozs7OztBQUVuSixNQUFNLEVBQUVBLGtCQUFrQixFQUFFLEdBQUdDLG1DQUFtQjtNQUVsRCxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLHlCQUF5QkMsa0JBQVM7SUFDNUQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxJQUFJLEVBQUVDLEtBQUssRUFBRUMsT0FBTyxDQUFFO1FBQ25FLEtBQUssQ0FBQ04sU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDQyxJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDQyxLQUFLLEdBQUVBO1FBQ1osSUFBSSxDQUFDQyxPQUFPLEdBQUdBO0lBQ2pCO0lBRUFDLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQ0gsSUFBSTtJQUNsQjtJQUVBSSxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUNILEtBQUs7SUFDbkI7SUFFQUksWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDSCxPQUFPO0lBQ3JCO0lBRUFJLDBCQUEwQjtRQUN4QixNQUFNUixPQUFPLElBQUksQ0FBQ1MsT0FBTyxJQUNuQkMsdUJBQXVCVixNQUFPLEdBQUc7UUFFdkMsT0FBT1U7SUFDVDtJQUVBQyxTQUFTYixPQUFPLEVBQUVjLFlBQVksRUFBRTtRQUM5QixJQUFJQztRQUVKLE1BQU1DLHlCQUF5QixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRXJEakIsUUFBUWtCLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFRix1QkFBdUIsc0JBQXNCLENBQUM7UUFF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
|
|
@@ -21,7 +21,7 @@ function _interop_require_default(obj) {
|
|
|
21
21
|
default: obj
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
|
-
const { last, front } = _necessary.arrayUtilities, { breakPointFromJSON } = _occamlanguages.breakPointUtilities, {
|
|
24
|
+
const { last, front } = _necessary.arrayUtilities, { breakPointFromJSON } = _occamlanguages.breakPointUtilities, { asynchronousBackwardsEvery } = _occamlanguages.continuationUtilities;
|
|
25
25
|
const _default = (0, _elements.define)(class SubproofAssertion extends _assertion.default {
|
|
26
26
|
constructor(context, string, node, breakPoint, statements){
|
|
27
27
|
super(context, string, node, breakPoint);
|
|
@@ -187,7 +187,7 @@ const _default = (0, _elements.define)(class SubproofAssertion extends _assertio
|
|
|
187
187
|
return continuation(suppositionsUnify);
|
|
188
188
|
}
|
|
189
189
|
let index = -1;
|
|
190
|
-
return
|
|
190
|
+
return asynchronousBackwardsEvery(suppositions, (supposition, continuation)=>{
|
|
191
191
|
index++;
|
|
192
192
|
return this.unifySupposition(supposition, index, generalContext, specificContext, continuation);
|
|
193
193
|
}, continuation);
|
|
@@ -218,4 +218,4 @@ function statementsFromSubproofAssertionNode(subproofAssertionNode, context) {
|
|
|
218
218
|
return statements;
|
|
219
219
|
}
|
|
220
220
|
|
|
221
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zdWJwcm9vZi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBldmVyeSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGludWF0aW9uXCI7XG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlU3VicHJvb2ZBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgc3VicHJvb2ZBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuaW1wb3J0IHsgam9pbiwgZGVzY2VuZCwgcmVjb25jaWxlLCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5jb25zdCB7IGxhc3QsIGZyb250IH0gPSBhcnJheVV0aWxpdGllcyxcbiAgICAgIHsgYnJlYWtQb2ludEZyb21KU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBhc3luY2hyb25vdXJCYWNrd2FyZHNFdmVyeSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgU3VicHJvb2ZBc3NlcnRpb24gZXh0ZW5kcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudHMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5zdGF0ZW1lbnRzID0gc3RhdGVtZW50cztcbiAgfVxuXG4gIGdldFN0YXRlbWVudHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50cztcbiAgfVxuXG4gIGdldERlZHVjZWRTdGF0ZW1lbnQoKSB7XG4gICAgY29uc3QgbGFzdFN0YXRlbWVudCA9IGxhc3QodGhpcy5zdGF0ZW1lbnRzKSxcbiAgICAgICAgICBkZWR1Y2VkU3RhdGVtZW50ID0gbGFzdFN0YXRlbWVudDsgLy8vXG5cbiAgICByZXR1cm4gZGVkdWNlZFN0YXRlbWVudDtcbiAgfVxuXG4gIGdldFN1cHBvc2VkU3RhdGVtZW50KGluZGV4KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50ID0gdGhpcy5zdGF0ZW1lbnRzW2luZGV4XSxcbiAgICAgICAgICBzdXBwb3NlZFN0YXRlbWVudCA9IHN0YXRlbWVudDsgIC8vL1xuXG4gICAgcmV0dXJuIHN1cHBvc2VkU3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0U3VwcG9zZWRTdGF0ZW1lbnRzKCkge1xuICAgIGNvbnN0IGZyb250U3RhdGVtZW50cyA9IGZyb250KHRoaXMuc3RhdGVtZW50cyksXG4gICAgICAgICAgc3VwcG9zZWRTdGF0ZW1lbnRzID0gZnJvbnRTdGF0ZW1lbnRzOyAgLy8vXG5cbiAgICByZXR1cm4gc3VwcG9zZWRTdGF0ZW1lbnRzO1xuICB9XG5cbiAgZ2V0U3VicHJvb2ZBc3NlcnRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBzdWJwcm9vZkFzc2VydGlvbk5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBzdWJwcm9vZkFzc2VydGlvbk5vZGU7XG4gIH1cblxuICB2YWxpZGF0ZShjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgY29uc3Qgc3VicHJvb2ZBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzdWJwcm9vZkFzc2VydGlvblN0cmluZ30nIHN1YnByb29mIGFzc2VydGlvbi4uLmApO1xuXG4gICAgbGV0IHN1YnByb29mQXNzZXJ0aW9uO1xuXG4gICAgY29uc3QgYXNzZXJ0aW9uID0gdGhpcy5maW5kQXNzZXJ0aW9uKGNvbnRleHQpO1xuXG4gICAgaWYgKGFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgc3VicHJvb2ZBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7c3VicHJvb2ZBc3NlcnRpb25TdHJpbmd9JyBzdWJwcm9vZiBhc3NlcnRpb24gaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3VicHJvb2ZBc3NlcnRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdWJwcm9vZkFzc2VydGlvbiA9IHRoaXM7IC8vL1xuXG4gICAgICB2YWxpZGF0ZXMgPSB0aGlzLnZhbGlkYXRlU3RhdGVtZW50cyhjb250ZXh0LCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGFzc2VydGlvbiA9IHN1YnByb29mQXNzZXJ0aW9uOyAvLy9cblxuICAgICAgICBjb250ZXh0LmFkZEFzc2VydGlvbihhc3NlcnRpb24pO1xuXG4gICAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VicHJvb2ZBc3NlcnRpb24sIGNvbnRleHQpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzdWJwcm9vZkFzc2VydGlvblN0cmluZ30nIHN1YnByb29mIGFzc2VydGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVTdGF0ZW1lbnRzKGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCBzdGF0ZW1lbnRzVmFsaWRhdGU7XG5cbiAgICBkZXNjZW5kKChjb250ZXh0KSA9PiB7XG4gICAgICBzdGF0ZW1lbnRzVmFsaWRhdGUgPSBldmVyeSh0aGlzLnN0YXRlbWVudHMsIChzdGF0ZW1lbnQsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBjb25zdCBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSBzdGF0ZW1lbnQudmFsaWRhdGUoY29udGV4dCwgKHN0YXRlbWVudCwgY29udGV4dCkgPT4ge1xuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oY29udGV4dCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBzdGF0ZW1lbnRWYWxpZGF0ZXM7XG4gICAgICB9LCBjb250ZXh0LCBjb250aW51YXRpb24pO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudHNWYWxpZGF0ZTtcbiAgfVxuXG4gIHVuaWZ5U2NoZW1hKHNjaGVtYSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkge1xuICAgIGxldCBzY2hlbWFVbmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAgLy8vXG4gICAgICAgICAgc2NoZW1hU3RyaW5nID0gc2NoZW1hLmdldFN0cmluZygpLFxuICAgICAgICAgIHN1YnByb29mQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzY2hlbWFTdHJpbmd9JyBzY2hlbWEgd2l0aCB0aGUgJyR7c3VicHJvb2ZBc3NlcnRpb25TdHJpbmd9JyBzdWJwcm9vZiBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnN0IGRlZHVjdGlvbiA9IHNjaGVtYS5nZXREZWR1Y3Rpb24oKSxcbiAgICAgICAgICBkZWR1Y3Rpb25VbmlmaWVzID0gdGhpcy51bmlmeURlZHVjdGlvbihkZWR1Y3Rpb24sIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgaWYgKGRlZHVjdGlvblVuaWZpZXMpIHtcbiAgICAgIGNvbnN0IHN1cHBvc2l0aW9ucyA9IHNjaGVtYS5nZXRTdXBwb3NpdGlvbnMoKSxcbiAgICAgICAgICAgIHN1cHBvc2l0aW9uc1VuaWZ5ID0gdGhpcy51bmlmeVN1cHBvc2l0aW9ucyhzdXBwb3NpdGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICBpZiAoc3VwcG9zaXRpb25zVW5pZnkpIHtcbiAgICAgICAgc2NoZW1hVW5pZmllcyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHNjaGVtYVVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYSB3aXRoIHRoZSAnJHtzdWJwcm9vZkFzc2VydGlvblN0cmluZ30nIHN1YnByb29mIGFzc2VydGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2NoZW1hVW5pZmllcztcbiAgfVxuXG4gIHVuaWZ5U3VicHJvb2Yoc3VicHJvb2YsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICBzdWJwcm9vZlN0cmluZyA9IHN1YnByb29mLmdldFN0cmluZygpLFxuICAgICAgICAgIHN1YnByb29mQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3VicHJvb2ZTdHJpbmd9JyBzdWJwcm9vZiB3aXRoIHRoZSAnJHtzdWJwcm9vZkFzc2VydGlvblN0cmluZ30nIHN1YnByb29mIGFzc2VydGlvbi4uLmApO1xuXG4gICAgY29uc3QgbGFzdFN0ZXAgPSBzdWJwcm9vZi5nZXRMYXN0U3RlcCgpO1xuXG4gICAgcmV0dXJuIHRoaXMudW5pZnlMYXN0U3RlcChsYXN0U3RlcCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKGxhc3RTdGVwVW5pZmllcykgPT4ge1xuICAgICAgbGV0IHN1YnByb29mVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgICBpZiAoIWxhc3RTdGVwVW5pZmllcykge1xuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1YnByb29mVW5pZmllcyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHN1cHBvc2l0aW9ucyA9IHN1YnByb29mLmdldFN1cHBvc2l0aW9ucygpO1xuXG4gICAgICByZXR1cm4gdGhpcy51bmlmeVN1cHBvc2l0aW9ucyhzdXBwb3NpdGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChzdXBwb3NpdGlvbnNVbmlmeSkgPT4ge1xuICAgICAgICBpZiAoc3VwcG9zaXRpb25zVW5pZnkpIHtcbiAgICAgICAgICBzdWJwcm9vZlVuaWZpZXMgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN1YnByb29mVW5pZmllcykge1xuICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N1YnByb29mU3RyaW5nfScgc3VicHJvb2Ygd2l0aCB0aGUgJyR7c3VicHJvb2ZBc3NlcnRpb25TdHJpbmd9JyBzdWJwcm9vZiBhc3NlcnRpb24uYCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1YnByb29mVW5pZmllcyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHVuaWZ5TGFzdFN0ZXAobGFzdFN0ZXAsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICBsYXN0U3RlcFN0cmluZyA9IGxhc3RTdGVwLmdldFN0cmluZygpLFxuICAgICAgICAgIGRlZHVjZWRTdGF0ZW1lbnQgPSB0aGlzLmdldERlZHVjZWRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICBkZWR1Y2VkU3RhdGVtZW50U3RyaW5nID0gZGVkdWNlZFN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtsYXN0U3RlcFN0cmluZ30nIGxhc3Qgc3RlcCB3aXRoIHRoZSAnJHtkZWR1Y2VkU3RhdGVtZW50U3RyaW5nfScgZGVkdWNlZCBzdGF0ZW1lbnQuLi5gKVxuXG4gICAgY29uc3QgbGFzdFN0ZXBDb250ZXh0ID0gbGFzdFN0ZXAuZ2V0Q29udGV4dCgpO1xuXG4gICAgc3BlY2lmaWNDb250ZXh0ID0gbGFzdFN0ZXBDb250ZXh0OyAgLy8vXG5cbiAgICByZXR1cm4gam9pbigoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gcmVjb25jaWxlKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgbGFzdFN0ZXBTdGF0ZW1lbnQgPSBsYXN0U3RlcC5nZXRTdGF0ZW1lbnQoKTtcblxuICAgICAgICByZXR1cm4gZGVkdWNlZFN0YXRlbWVudC51bmlmeVN0YXRlbWVudChsYXN0U3RlcFN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKGxhc3RTdGVwU3RhdGVtZW50VW5pZmllcykgPT4ge1xuICAgICAgICAgIGxldCBsYXN0U3RlcFVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICAgIGlmIChsYXN0U3RlcFN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgICAgIGxhc3RTdGVwVW5pZmllcyA9IHRydWU7XG5cbiAgICAgICAgICAgIHNwZWNpZmljQ29udGV4dC5jb21taXQoY29udGV4dCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGxhc3RTdGVwVW5pZmllcykge1xuICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7bGFzdFN0ZXBTdHJpbmd9JyBsYXN0IHN0ZXAgd2l0aCB0aGUgJyR7ZGVkdWNlZFN0YXRlbWVudFN0cmluZ30nIGRlZHVjZWQgc3RhdGVtZW50LmApXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihsYXN0U3RlcFVuaWZpZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH0sIHNwZWNpZmljQ29udGV4dCk7XG4gICAgfSwgc3BlY2lmaWNDb250ZXh0LCBjb250ZXh0KTtcbiB9XG5cbiAgdW5pZnlEZWR1Y3Rpb24oZGVkdWN0aW9uLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gICAgbGV0IGRlZHVjdGlvblVuaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICBkZWR1Y3Rpb25TdHJpbmcgPSBkZWR1Y3Rpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgZGVkdWNlZFN0YXRlbWVudCA9IHRoaXMuZ2V0RGVkdWNlZFN0YXRlbWVudCgpLFxuICAgICAgICAgIGRlZHVjZWRTdGF0ZW1lbnRTdHJpbmcgPSBkZWR1Y2VkU3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbiB3aXRoIHRoZSAnJHtkZWR1Y2VkU3RhdGVtZW50U3RyaW5nfScgZGVkdWNlZCBzdGF0ZW1lbnQuLi5gKVxuXG4gICAgY29uc3QgZGVkdWN0aW9uQ29udGV4dCA9IGRlZHVjdGlvbi5nZXRDb250ZXh0KCk7XG5cbiAgICBzcGVjaWZpY0NvbnRleHQgPSBkZWR1Y3Rpb25Db250ZXh0OyAgLy8vXG5cbiAgICByZXR1cm4gcmVjb25jaWxlKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGRlZHVjdGlvblN0YXRlbWVudCA9IGRlZHVjdGlvbi5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICAgIGRlZHVjdGlvblN0YXRlbWVudFVuaWZpZXMgPSBkZWR1Y2VkU3RhdGVtZW50LnVuaWZ5U3RhdGVtZW50KGRlZHVjdGlvblN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICAgIGlmIChkZWR1Y3Rpb25TdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgIGRlZHVjdGlvblVuaWZpZXMgPSB0cnVlO1xuXG4gICAgICAgIHNwZWNpZmljQ29udGV4dC5jb21taXQoY29udGV4dCk7XG4gICAgICB9XG4gICAgfSwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgIGlmIChkZWR1Y3Rpb25VbmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24gd2l0aCB0aGUgJyR7ZGVkdWNlZFN0YXRlbWVudFN0cmluZ30nIGRlZHVjZWQgc3RhdGVtZW50LmApXG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZHVjdGlvblVuaWZpZXM7XG4gIH1cblxuICB1bmlmeVN1cHBvc2l0aW9uKHN1cHBvc2l0aW9uLCBpbmRleCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIHN1cHBvc2VkU3RhdGVtZW50ID0gdGhpcy5nZXRTdXBwb3NlZFN0YXRlbWVudChpbmRleCksXG4gICAgICAgICAgc3VwcG9zaXRpb25TdHJpbmcgPSBzdXBwb3NpdGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzdXBwb3NlZFN0YXRlbWVudFN0cmluZyA9IHN1cHBvc2VkU3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24gd2l0aCB0aGUgJyR7c3VwcG9zZWRTdGF0ZW1lbnRTdHJpbmd9JyBzdXBwb3NlZCBzdGF0ZW1lbnQuLi5gKVxuXG4gICAgY29uc3Qgc3VwcG9zaXRpb25Db250ZXh0ID0gc3VwcG9zaXRpb24uZ2V0Q29udGV4dCgpO1xuXG4gICAgc3BlY2lmaWNDb250ZXh0ID0gc3VwcG9zaXRpb25Db250ZXh0OyAgLy8vXG5cbiAgICByZXR1cm4gam9pbigoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gcmVjb25jaWxlKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3Qgc3VwcG9zaXRpb25TdGF0ZW1lbnQgPSBzdXBwb3NpdGlvbi5nZXRTdGF0ZW1lbnQoKTtcblxuICAgICAgICByZXR1cm4gc3VwcG9zZWRTdGF0ZW1lbnQudW5pZnlTdGF0ZW1lbnQoc3VwcG9zaXRpb25TdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChzdXBwb3NpdGlvblN0YXRlbWVudFVuaWZpZXMpID0+IHtcbiAgICAgICAgICBsZXQgc3VwcG9zaXRpb25VbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoc3VwcG9zaXRpb25TdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgICAgICBzdXBwb3NpdGlvblVuaWZpZXMgPSB0cnVlO1xuXG4gICAgICAgICAgICBzcGVjaWZpY0NvbnRleHQuY29tbWl0KGNvbnRleHQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChzdXBwb3NpdGlvblVuaWZpZXMpIHtcbiAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24gd2l0aCB0aGUgJyR7c3VwcG9zZWRTdGF0ZW1lbnRTdHJpbmd9JyBzdXBwb3NlZCBzdGF0ZW1lbnQuYClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1cHBvc2l0aW9uVW5pZmllcyk7XG4gICAgICAgIH0pO1xuICAgICAgfSwgc3BlY2lmaWNDb250ZXh0KTtcbiAgICB9LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRleHQpO1xuICB9XG5cbiAgdW5pZnlTdXBwb3NpdGlvbnMoc3VwcG9zaXRpb25zLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBzdXBwb3NlZFN0YXRlbWVudHMgPSB0aGlzLmdldFN1cHBvc2VkU3RhdGVtZW50cygpLFxuICAgICAgICAgIHN1cHBvc2l0aW9uc0xlbmd0aCA9IHN1cHBvc2l0aW9ucy5sZW5ndGgsXG4gICAgICAgICAgc3VwcG9zZWRTdGF0ZW1lbnRzTGVuZ3RoID0gc3VwcG9zZWRTdGF0ZW1lbnRzLmxlbmd0aDtcblxuICAgIGlmIChzdXBwb3NpdGlvbnNMZW5ndGggIT09IHN1cHBvc2VkU3RhdGVtZW50c0xlbmd0aCkge1xuICAgICAgY29uc3Qgc3VwcG9zaXRpb25zVW5pZnkgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdXBwb3NpdGlvbnNVbmlmeSk7XG4gICAgfVxuXG4gICAgbGV0IGluZGV4ID0gLTE7XG5cbiAgICByZXR1cm4gYXN5bmNocm9ub3VyQmFja3dhcmRzRXZlcnkoc3VwcG9zaXRpb25zLCAoc3VwcG9zaXRpb24sIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgaW5kZXgrKztcblxuICAgICAgcmV0dXJuIHRoaXMudW5pZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbiwgaW5kZXgsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbik7XG4gICAgfSwgY29udGludWF0aW9uKTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTdWJwcm9vZkFzc2VydGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uO1xuXG4gICAgaWYgKHRoaXMubmFtZSAhPT0gbmFtZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICBzdWJwcm9vZkFzc2VydGlvbk5vZGUgPSBpbnN0YW50aWF0ZVN1YnByb29mQXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICBub2RlID0gc3VicHJvb2ZBc3NlcnRpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgICAgc3RhdGVtZW50cyA9IHN0YXRlbWVudHNGcm9tU3VicHJvb2ZBc3NlcnRpb25Ob2RlKHN1YnByb29mQXNzZXJ0aW9uTm9kZSwgY29udGV4dCk7XG5cbiAgICAgIGNvbnRleHQgPSBudWxsO1xuXG4gICAgICBjb25zdCBzdWJwcm9vckFzc2VydGlvbiA9IG5ldyBTdWJwcm9vZkFzc2VydGlvbihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudHMpO1xuXG4gICAgICByZXR1cm4gc3VicHJvb3JBc3NlcnRpb247XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgICBzdWJwcm9vZkFzc2VydGlvbiA9IHN1YnByb29mQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc3VicHJvb2ZBc3NlcnRpb247XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBzdGF0ZW1lbnRzRnJvbVN1YnByb29mQXNzZXJ0aW9uTm9kZShzdWJwcm9vZkFzc2VydGlvbk5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3Qgc3RhdGVtZW50Tm9kZXMgPSBzdWJwcm9vZkFzc2VydGlvbk5vZGUuZ2V0U3RhdGVtZW50Tm9kZXMoKSxcbiAgICAgICAgc3RhdGVtZW50cyA9IHN0YXRlbWVudE5vZGVzLm1hcCgoc3RhdGVtZXROb2RlKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3RhdGVtZW50ID0gY29udGV4dC5maW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWV0Tm9kZSk7XG5cbiAgICAgICAgICByZXR1cm4gc3RhdGVtZW50O1xuICAgICAgICB9KTtcblxuICByZXR1cm4gc3RhdGVtZW50cztcbn1cbiJdLCJuYW1lcyI6WyJsYXN0IiwiZnJvbnQiLCJhcnJheVV0aWxpdGllcyIsImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJhc3luY2hyb25vdXJCYWNrd2FyZHNFdmVyeSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImRlZmluZSIsIlN1YnByb29mQXNzZXJ0aW9uIiwiQXNzZXJ0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50Iiwic3RhdGVtZW50cyIsImdldFN0YXRlbWVudHMiLCJnZXREZWR1Y2VkU3RhdGVtZW50IiwibGFzdFN0YXRlbWVudCIsImRlZHVjZWRTdGF0ZW1lbnQiLCJnZXRTdXBwb3NlZFN0YXRlbWVudCIsImluZGV4Iiwic3RhdGVtZW50Iiwic3VwcG9zZWRTdGF0ZW1lbnQiLCJnZXRTdXBwb3NlZFN0YXRlbWVudHMiLCJmcm9udFN0YXRlbWVudHMiLCJzdXBwb3NlZFN0YXRlbWVudHMiLCJnZXRTdWJwcm9vZkFzc2VydGlvbk5vZGUiLCJnZXROb2RlIiwic3VicHJvb2ZBc3NlcnRpb25Ob2RlIiwidmFsaWRhdGUiLCJjb250aW51YXRpb24iLCJ2YWxpZGF0ZXMiLCJzdWJwcm9vZkFzc2VydGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwic3VicHJvb2ZBc3NlcnRpb24iLCJhc3NlcnRpb24iLCJmaW5kQXNzZXJ0aW9uIiwiZGVidWciLCJ2YWxpZGF0ZVN0YXRlbWVudHMiLCJhZGRBc3NlcnRpb24iLCJzdGF0ZW1lbnRzVmFsaWRhdGUiLCJkZXNjZW5kIiwiZXZlcnkiLCJzdGF0ZW1lbnRWYWxpZGF0ZXMiLCJ1bmlmeVNjaGVtYSIsInNjaGVtYSIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0Iiwic2NoZW1hVW5pZmllcyIsInNjaGVtYVN0cmluZyIsImRlZHVjdGlvbiIsImdldERlZHVjdGlvbiIsImRlZHVjdGlvblVuaWZpZXMiLCJ1bmlmeURlZHVjdGlvbiIsInN1cHBvc2l0aW9ucyIsImdldFN1cHBvc2l0aW9ucyIsInN1cHBvc2l0aW9uc1VuaWZ5IiwidW5pZnlTdXBwb3NpdGlvbnMiLCJ1bmlmeVN1YnByb29mIiwic3VicHJvb2YiLCJzdWJwcm9vZlN0cmluZyIsImxhc3RTdGVwIiwiZ2V0TGFzdFN0ZXAiLCJ1bmlmeUxhc3RTdGVwIiwibGFzdFN0ZXBVbmlmaWVzIiwic3VicHJvb2ZVbmlmaWVzIiwibGFzdFN0ZXBTdHJpbmciLCJkZWR1Y2VkU3RhdGVtZW50U3RyaW5nIiwibGFzdFN0ZXBDb250ZXh0IiwiZ2V0Q29udGV4dCIsImpvaW4iLCJyZWNvbmNpbGUiLCJsYXN0U3RlcFN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsInVuaWZ5U3RhdGVtZW50IiwibGFzdFN0ZXBTdGF0ZW1lbnRVbmlmaWVzIiwiY29tbWl0IiwiZGVkdWN0aW9uU3RyaW5nIiwiZGVkdWN0aW9uQ29udGV4dCIsImRlZHVjdGlvblN0YXRlbWVudCIsImRlZHVjdGlvblN0YXRlbWVudFVuaWZpZXMiLCJ1bmlmeVN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb24iLCJzdXBwb3NpdGlvblN0cmluZyIsInN1cHBvc2VkU3RhdGVtZW50U3RyaW5nIiwic3VwcG9zaXRpb25Db250ZXh0Iiwic3VwcG9zaXRpb25TdGF0ZW1lbnQiLCJzdXBwb3NpdGlvblN0YXRlbWVudFVuaWZpZXMiLCJzdXBwb3NpdGlvblVuaWZpZXMiLCJzdXBwb3NpdGlvbnNMZW5ndGgiLCJsZW5ndGgiLCJzdXBwb3NlZFN0YXRlbWVudHNMZW5ndGgiLCJuYW1lIiwiZnJvbUpTT04iLCJqc29uIiwiaW5zdGFudGlhdGUiLCJpbnN0YW50aWF0ZVN1YnByb29mQXNzZXJ0aW9uIiwic3RhdGVtZW50c0Zyb21TdWJwcm9vZkFzc2VydGlvbk5vZGUiLCJzdWJwcm9vckFzc2VydGlvbiIsImZyb21TdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlIiwic3VicHJvb2ZBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudE5vZGVzIiwiZ2V0U3RhdGVtZW50Tm9kZXMiLCJtYXAiLCJzdGF0ZW1ldE5vZGUiLCJmaW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFpQkE7OztlQUFBOzs7MkJBZitCO2dDQUM0QjtrRUFFckM7OEJBRUE7MEJBQ0M7NkJBQ3NCO3lCQUNNO3lCQUNHOzs7Ozs7QUFFdEQsTUFBTSxFQUFFQSxJQUFJLEVBQUVDLEtBQUssRUFBRSxHQUFHQyx5QkFBYyxFQUNoQyxFQUFFQyxrQkFBa0IsRUFBRSxHQUFHQyxtQ0FBbUIsRUFDNUMsRUFBRUMsMEJBQTBCLEVBQUUsR0FBR0MscUNBQXFCO01BRTVELFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsMEJBQTBCQyxrQkFBUztJQUM3RCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLFVBQVUsQ0FBRTtRQUN6RCxLQUFLLENBQUNKLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtJQUNwQjtJQUVBQyxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQ0QsVUFBVTtJQUN4QjtJQUVBRSxzQkFBc0I7UUFDcEIsTUFBTUMsZ0JBQWdCakIsS0FBSyxJQUFJLENBQUNjLFVBQVUsR0FDcENJLG1CQUFtQkQsZUFBZSxHQUFHO1FBRTNDLE9BQU9DO0lBQ1Q7SUFFQUMscUJBQXFCQyxLQUFLLEVBQUU7UUFDMUIsTUFBTUMsWUFBWSxJQUFJ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
|
|
221
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zdWJwcm9vZi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBldmVyeSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGludWF0aW9uXCI7XG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlU3VicHJvb2ZBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgc3VicHJvb2ZBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuaW1wb3J0IHsgam9pbiwgZGVzY2VuZCwgcmVjb25jaWxlLCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5jb25zdCB7IGxhc3QsIGZyb250IH0gPSBhcnJheVV0aWxpdGllcyxcbiAgICAgIHsgYnJlYWtQb2ludEZyb21KU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBhc3luY2hyb25vdXNCYWNrd2FyZHNFdmVyeSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgU3VicHJvb2ZBc3NlcnRpb24gZXh0ZW5kcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudHMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5zdGF0ZW1lbnRzID0gc3RhdGVtZW50cztcbiAgfVxuXG4gIGdldFN0YXRlbWVudHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50cztcbiAgfVxuXG4gIGdldERlZHVjZWRTdGF0ZW1lbnQoKSB7XG4gICAgY29uc3QgbGFzdFN0YXRlbWVudCA9IGxhc3QodGhpcy5zdGF0ZW1lbnRzKSxcbiAgICAgICAgICBkZWR1Y2VkU3RhdGVtZW50ID0gbGFzdFN0YXRlbWVudDsgLy8vXG5cbiAgICByZXR1cm4gZGVkdWNlZFN0YXRlbWVudDtcbiAgfVxuXG4gIGdldFN1cHBvc2VkU3RhdGVtZW50KGluZGV4KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50ID0gdGhpcy5zdGF0ZW1lbnRzW2luZGV4XSxcbiAgICAgICAgICBzdXBwb3NlZFN0YXRlbWVudCA9IHN0YXRlbWVudDsgIC8vL1xuXG4gICAgcmV0dXJuIHN1cHBvc2VkU3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0U3VwcG9zZWRTdGF0ZW1lbnRzKCkge1xuICAgIGNvbnN0IGZyb250U3RhdGVtZW50cyA9IGZyb250KHRoaXMuc3RhdGVtZW50cyksXG4gICAgICAgICAgc3VwcG9zZWRTdGF0ZW1lbnRzID0gZnJvbnRTdGF0ZW1lbnRzOyAgLy8vXG5cbiAgICByZXR1cm4gc3VwcG9zZWRTdGF0ZW1lbnRzO1xuICB9XG5cbiAgZ2V0U3VicHJvb2ZBc3NlcnRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBzdWJwcm9vZkFzc2VydGlvbk5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBzdWJwcm9vZkFzc2VydGlvbk5vZGU7XG4gIH1cblxuICB2YWxpZGF0ZShjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgY29uc3Qgc3VicHJvb2ZBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzdWJwcm9vZkFzc2VydGlvblN0cmluZ30nIHN1YnByb29mIGFzc2VydGlvbi4uLmApO1xuXG4gICAgbGV0IHN1YnByb29mQXNzZXJ0aW9uO1xuXG4gICAgY29uc3QgYXNzZXJ0aW9uID0gdGhpcy5maW5kQXNzZXJ0aW9uKGNvbnRleHQpO1xuXG4gICAgaWYgKGFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgc3VicHJvb2ZBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7c3VicHJvb2ZBc3NlcnRpb25TdHJpbmd9JyBzdWJwcm9vZiBhc3NlcnRpb24gaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3VicHJvb2ZBc3NlcnRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdWJwcm9vZkFzc2VydGlvbiA9IHRoaXM7IC8vL1xuXG4gICAgICB2YWxpZGF0ZXMgPSB0aGlzLnZhbGlkYXRlU3RhdGVtZW50cyhjb250ZXh0LCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGFzc2VydGlvbiA9IHN1YnByb29mQXNzZXJ0aW9uOyAvLy9cblxuICAgICAgICBjb250ZXh0LmFkZEFzc2VydGlvbihhc3NlcnRpb24pO1xuXG4gICAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VicHJvb2ZBc3NlcnRpb24sIGNvbnRleHQpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzdWJwcm9vZkFzc2VydGlvblN0cmluZ30nIHN1YnByb29mIGFzc2VydGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVTdGF0ZW1lbnRzKGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCBzdGF0ZW1lbnRzVmFsaWRhdGU7XG5cbiAgICBkZXNjZW5kKChjb250ZXh0KSA9PiB7XG4gICAgICBzdGF0ZW1lbnRzVmFsaWRhdGUgPSBldmVyeSh0aGlzLnN0YXRlbWVudHMsIChzdGF0ZW1lbnQsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICBjb25zdCBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSBzdGF0ZW1lbnQudmFsaWRhdGUoY29udGV4dCwgKHN0YXRlbWVudCwgY29udGV4dCkgPT4ge1xuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oY29udGV4dCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBzdGF0ZW1lbnRWYWxpZGF0ZXM7XG4gICAgICB9LCBjb250ZXh0LCBjb250aW51YXRpb24pO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudHNWYWxpZGF0ZTtcbiAgfVxuXG4gIHVuaWZ5U2NoZW1hKHNjaGVtYSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkge1xuICAgIGxldCBzY2hlbWFVbmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAgLy8vXG4gICAgICAgICAgc2NoZW1hU3RyaW5nID0gc2NoZW1hLmdldFN0cmluZygpLFxuICAgICAgICAgIHN1YnByb29mQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzY2hlbWFTdHJpbmd9JyBzY2hlbWEgd2l0aCB0aGUgJyR7c3VicHJvb2ZBc3NlcnRpb25TdHJpbmd9JyBzdWJwcm9vZiBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnN0IGRlZHVjdGlvbiA9IHNjaGVtYS5nZXREZWR1Y3Rpb24oKSxcbiAgICAgICAgICBkZWR1Y3Rpb25VbmlmaWVzID0gdGhpcy51bmlmeURlZHVjdGlvbihkZWR1Y3Rpb24sIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgaWYgKGRlZHVjdGlvblVuaWZpZXMpIHtcbiAgICAgIGNvbnN0IHN1cHBvc2l0aW9ucyA9IHNjaGVtYS5nZXRTdXBwb3NpdGlvbnMoKSxcbiAgICAgICAgICAgIHN1cHBvc2l0aW9uc1VuaWZ5ID0gdGhpcy51bmlmeVN1cHBvc2l0aW9ucyhzdXBwb3NpdGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICBpZiAoc3VwcG9zaXRpb25zVW5pZnkpIHtcbiAgICAgICAgc2NoZW1hVW5pZmllcyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHNjaGVtYVVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYSB3aXRoIHRoZSAnJHtzdWJwcm9vZkFzc2VydGlvblN0cmluZ30nIHN1YnByb29mIGFzc2VydGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2NoZW1hVW5pZmllcztcbiAgfVxuXG4gIHVuaWZ5U3VicHJvb2Yoc3VicHJvb2YsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICBzdWJwcm9vZlN0cmluZyA9IHN1YnByb29mLmdldFN0cmluZygpLFxuICAgICAgICAgIHN1YnByb29mQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3VicHJvb2ZTdHJpbmd9JyBzdWJwcm9vZiB3aXRoIHRoZSAnJHtzdWJwcm9vZkFzc2VydGlvblN0cmluZ30nIHN1YnByb29mIGFzc2VydGlvbi4uLmApO1xuXG4gICAgY29uc3QgbGFzdFN0ZXAgPSBzdWJwcm9vZi5nZXRMYXN0U3RlcCgpO1xuXG4gICAgcmV0dXJuIHRoaXMudW5pZnlMYXN0U3RlcChsYXN0U3RlcCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKGxhc3RTdGVwVW5pZmllcykgPT4ge1xuICAgICAgbGV0IHN1YnByb29mVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgICBpZiAoIWxhc3RTdGVwVW5pZmllcykge1xuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1YnByb29mVW5pZmllcyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHN1cHBvc2l0aW9ucyA9IHN1YnByb29mLmdldFN1cHBvc2l0aW9ucygpO1xuXG4gICAgICByZXR1cm4gdGhpcy51bmlmeVN1cHBvc2l0aW9ucyhzdXBwb3NpdGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChzdXBwb3NpdGlvbnNVbmlmeSkgPT4ge1xuICAgICAgICBpZiAoc3VwcG9zaXRpb25zVW5pZnkpIHtcbiAgICAgICAgICBzdWJwcm9vZlVuaWZpZXMgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN1YnByb29mVW5pZmllcykge1xuICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N1YnByb29mU3RyaW5nfScgc3VicHJvb2Ygd2l0aCB0aGUgJyR7c3VicHJvb2ZBc3NlcnRpb25TdHJpbmd9JyBzdWJwcm9vZiBhc3NlcnRpb24uYCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1YnByb29mVW5pZmllcyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHVuaWZ5TGFzdFN0ZXAobGFzdFN0ZXAsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICBsYXN0U3RlcFN0cmluZyA9IGxhc3RTdGVwLmdldFN0cmluZygpLFxuICAgICAgICAgIGRlZHVjZWRTdGF0ZW1lbnQgPSB0aGlzLmdldERlZHVjZWRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICBkZWR1Y2VkU3RhdGVtZW50U3RyaW5nID0gZGVkdWNlZFN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtsYXN0U3RlcFN0cmluZ30nIGxhc3Qgc3RlcCB3aXRoIHRoZSAnJHtkZWR1Y2VkU3RhdGVtZW50U3RyaW5nfScgZGVkdWNlZCBzdGF0ZW1lbnQuLi5gKVxuXG4gICAgY29uc3QgbGFzdFN0ZXBDb250ZXh0ID0gbGFzdFN0ZXAuZ2V0Q29udGV4dCgpO1xuXG4gICAgc3BlY2lmaWNDb250ZXh0ID0gbGFzdFN0ZXBDb250ZXh0OyAgLy8vXG5cbiAgICByZXR1cm4gam9pbigoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gcmVjb25jaWxlKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgbGFzdFN0ZXBTdGF0ZW1lbnQgPSBsYXN0U3RlcC5nZXRTdGF0ZW1lbnQoKTtcblxuICAgICAgICByZXR1cm4gZGVkdWNlZFN0YXRlbWVudC51bmlmeVN0YXRlbWVudChsYXN0U3RlcFN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKGxhc3RTdGVwU3RhdGVtZW50VW5pZmllcykgPT4ge1xuICAgICAgICAgIGxldCBsYXN0U3RlcFVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICAgIGlmIChsYXN0U3RlcFN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgICAgIGxhc3RTdGVwVW5pZmllcyA9IHRydWU7XG5cbiAgICAgICAgICAgIHNwZWNpZmljQ29udGV4dC5jb21taXQoY29udGV4dCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGxhc3RTdGVwVW5pZmllcykge1xuICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7bGFzdFN0ZXBTdHJpbmd9JyBsYXN0IHN0ZXAgd2l0aCB0aGUgJyR7ZGVkdWNlZFN0YXRlbWVudFN0cmluZ30nIGRlZHVjZWQgc3RhdGVtZW50LmApXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihsYXN0U3RlcFVuaWZpZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH0sIHNwZWNpZmljQ29udGV4dCk7XG4gICAgfSwgc3BlY2lmaWNDb250ZXh0LCBjb250ZXh0KTtcbiB9XG5cbiAgdW5pZnlEZWR1Y3Rpb24oZGVkdWN0aW9uLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gICAgbGV0IGRlZHVjdGlvblVuaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICBkZWR1Y3Rpb25TdHJpbmcgPSBkZWR1Y3Rpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgZGVkdWNlZFN0YXRlbWVudCA9IHRoaXMuZ2V0RGVkdWNlZFN0YXRlbWVudCgpLFxuICAgICAgICAgIGRlZHVjZWRTdGF0ZW1lbnRTdHJpbmcgPSBkZWR1Y2VkU3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbiB3aXRoIHRoZSAnJHtkZWR1Y2VkU3RhdGVtZW50U3RyaW5nfScgZGVkdWNlZCBzdGF0ZW1lbnQuLi5gKVxuXG4gICAgY29uc3QgZGVkdWN0aW9uQ29udGV4dCA9IGRlZHVjdGlvbi5nZXRDb250ZXh0KCk7XG5cbiAgICBzcGVjaWZpY0NvbnRleHQgPSBkZWR1Y3Rpb25Db250ZXh0OyAgLy8vXG5cbiAgICByZXR1cm4gcmVjb25jaWxlKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGRlZHVjdGlvblN0YXRlbWVudCA9IGRlZHVjdGlvbi5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICAgIGRlZHVjdGlvblN0YXRlbWVudFVuaWZpZXMgPSBkZWR1Y2VkU3RhdGVtZW50LnVuaWZ5U3RhdGVtZW50KGRlZHVjdGlvblN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICAgIGlmIChkZWR1Y3Rpb25TdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgIGRlZHVjdGlvblVuaWZpZXMgPSB0cnVlO1xuXG4gICAgICAgIHNwZWNpZmljQ29udGV4dC5jb21taXQoY29udGV4dCk7XG4gICAgICB9XG4gICAgfSwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgIGlmIChkZWR1Y3Rpb25VbmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24gd2l0aCB0aGUgJyR7ZGVkdWNlZFN0YXRlbWVudFN0cmluZ30nIGRlZHVjZWQgc3RhdGVtZW50LmApXG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZHVjdGlvblVuaWZpZXM7XG4gIH1cblxuICB1bmlmeVN1cHBvc2l0aW9uKHN1cHBvc2l0aW9uLCBpbmRleCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIHN1cHBvc2VkU3RhdGVtZW50ID0gdGhpcy5nZXRTdXBwb3NlZFN0YXRlbWVudChpbmRleCksXG4gICAgICAgICAgc3VwcG9zaXRpb25TdHJpbmcgPSBzdXBwb3NpdGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzdXBwb3NlZFN0YXRlbWVudFN0cmluZyA9IHN1cHBvc2VkU3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24gd2l0aCB0aGUgJyR7c3VwcG9zZWRTdGF0ZW1lbnRTdHJpbmd9JyBzdXBwb3NlZCBzdGF0ZW1lbnQuLi5gKVxuXG4gICAgY29uc3Qgc3VwcG9zaXRpb25Db250ZXh0ID0gc3VwcG9zaXRpb24uZ2V0Q29udGV4dCgpO1xuXG4gICAgc3BlY2lmaWNDb250ZXh0ID0gc3VwcG9zaXRpb25Db250ZXh0OyAgLy8vXG5cbiAgICByZXR1cm4gam9pbigoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gcmVjb25jaWxlKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3Qgc3VwcG9zaXRpb25TdGF0ZW1lbnQgPSBzdXBwb3NpdGlvbi5nZXRTdGF0ZW1lbnQoKTtcblxuICAgICAgICByZXR1cm4gc3VwcG9zZWRTdGF0ZW1lbnQudW5pZnlTdGF0ZW1lbnQoc3VwcG9zaXRpb25TdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChzdXBwb3NpdGlvblN0YXRlbWVudFVuaWZpZXMpID0+IHtcbiAgICAgICAgICBsZXQgc3VwcG9zaXRpb25VbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoc3VwcG9zaXRpb25TdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgICAgICBzdXBwb3NpdGlvblVuaWZpZXMgPSB0cnVlO1xuXG4gICAgICAgICAgICBzcGVjaWZpY0NvbnRleHQuY29tbWl0KGNvbnRleHQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChzdXBwb3NpdGlvblVuaWZpZXMpIHtcbiAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24gd2l0aCB0aGUgJyR7c3VwcG9zZWRTdGF0ZW1lbnRTdHJpbmd9JyBzdXBwb3NlZCBzdGF0ZW1lbnQuYClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1cHBvc2l0aW9uVW5pZmllcyk7XG4gICAgICAgIH0pO1xuICAgICAgfSwgc3BlY2lmaWNDb250ZXh0KTtcbiAgICB9LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRleHQpO1xuICB9XG5cbiAgdW5pZnlTdXBwb3NpdGlvbnMoc3VwcG9zaXRpb25zLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBzdXBwb3NlZFN0YXRlbWVudHMgPSB0aGlzLmdldFN1cHBvc2VkU3RhdGVtZW50cygpLFxuICAgICAgICAgIHN1cHBvc2l0aW9uc0xlbmd0aCA9IHN1cHBvc2l0aW9ucy5sZW5ndGgsXG4gICAgICAgICAgc3VwcG9zZWRTdGF0ZW1lbnRzTGVuZ3RoID0gc3VwcG9zZWRTdGF0ZW1lbnRzLmxlbmd0aDtcblxuICAgIGlmIChzdXBwb3NpdGlvbnNMZW5ndGggIT09IHN1cHBvc2VkU3RhdGVtZW50c0xlbmd0aCkge1xuICAgICAgY29uc3Qgc3VwcG9zaXRpb25zVW5pZnkgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdXBwb3NpdGlvbnNVbmlmeSk7XG4gICAgfVxuXG4gICAgbGV0IGluZGV4ID0gLTE7XG5cbiAgICByZXR1cm4gYXN5bmNocm9ub3VzQmFja3dhcmRzRXZlcnkoc3VwcG9zaXRpb25zLCAoc3VwcG9zaXRpb24sIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgaW5kZXgrKztcblxuICAgICAgcmV0dXJuIHRoaXMudW5pZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbiwgaW5kZXgsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbik7XG4gICAgfSwgY29udGludWF0aW9uKTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTdWJwcm9vZkFzc2VydGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uO1xuXG4gICAgaWYgKHRoaXMubmFtZSAhPT0gbmFtZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICBzdWJwcm9vZkFzc2VydGlvbk5vZGUgPSBpbnN0YW50aWF0ZVN1YnByb29mQXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICBub2RlID0gc3VicHJvb2ZBc3NlcnRpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgICAgc3RhdGVtZW50cyA9IHN0YXRlbWVudHNGcm9tU3VicHJvb2ZBc3NlcnRpb25Ob2RlKHN1YnByb29mQXNzZXJ0aW9uTm9kZSwgY29udGV4dCk7XG5cbiAgICAgIGNvbnRleHQgPSBudWxsO1xuXG4gICAgICBjb25zdCBzdWJwcm9vckFzc2VydGlvbiA9IG5ldyBTdWJwcm9vZkFzc2VydGlvbihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudHMpO1xuXG4gICAgICByZXR1cm4gc3VicHJvb3JBc3NlcnRpb247XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgICBzdWJwcm9vZkFzc2VydGlvbiA9IHN1YnByb29mQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc3VicHJvb2ZBc3NlcnRpb247XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBzdGF0ZW1lbnRzRnJvbVN1YnByb29mQXNzZXJ0aW9uTm9kZShzdWJwcm9vZkFzc2VydGlvbk5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3Qgc3RhdGVtZW50Tm9kZXMgPSBzdWJwcm9vZkFzc2VydGlvbk5vZGUuZ2V0U3RhdGVtZW50Tm9kZXMoKSxcbiAgICAgICAgc3RhdGVtZW50cyA9IHN0YXRlbWVudE5vZGVzLm1hcCgoc3RhdGVtZXROb2RlKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3RhdGVtZW50ID0gY29udGV4dC5maW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWV0Tm9kZSk7XG5cbiAgICAgICAgICByZXR1cm4gc3RhdGVtZW50O1xuICAgICAgICB9KTtcblxuICByZXR1cm4gc3RhdGVtZW50cztcbn1cbiJdLCJuYW1lcyI6WyJsYXN0IiwiZnJvbnQiLCJhcnJheVV0aWxpdGllcyIsImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJhc3luY2hyb25vdXNCYWNrd2FyZHNFdmVyeSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImRlZmluZSIsIlN1YnByb29mQXNzZXJ0aW9uIiwiQXNzZXJ0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50Iiwic3RhdGVtZW50cyIsImdldFN0YXRlbWVudHMiLCJnZXREZWR1Y2VkU3RhdGVtZW50IiwibGFzdFN0YXRlbWVudCIsImRlZHVjZWRTdGF0ZW1lbnQiLCJnZXRTdXBwb3NlZFN0YXRlbWVudCIsImluZGV4Iiwic3RhdGVtZW50Iiwic3VwcG9zZWRTdGF0ZW1lbnQiLCJnZXRTdXBwb3NlZFN0YXRlbWVudHMiLCJmcm9udFN0YXRlbWVudHMiLCJzdXBwb3NlZFN0YXRlbWVudHMiLCJnZXRTdWJwcm9vZkFzc2VydGlvbk5vZGUiLCJnZXROb2RlIiwic3VicHJvb2ZBc3NlcnRpb25Ob2RlIiwidmFsaWRhdGUiLCJjb250aW51YXRpb24iLCJ2YWxpZGF0ZXMiLCJzdWJwcm9vZkFzc2VydGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwic3VicHJvb2ZBc3NlcnRpb24iLCJhc3NlcnRpb24iLCJmaW5kQXNzZXJ0aW9uIiwiZGVidWciLCJ2YWxpZGF0ZVN0YXRlbWVudHMiLCJhZGRBc3NlcnRpb24iLCJzdGF0ZW1lbnRzVmFsaWRhdGUiLCJkZXNjZW5kIiwiZXZlcnkiLCJzdGF0ZW1lbnRWYWxpZGF0ZXMiLCJ1bmlmeVNjaGVtYSIsInNjaGVtYSIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0Iiwic2NoZW1hVW5pZmllcyIsInNjaGVtYVN0cmluZyIsImRlZHVjdGlvbiIsImdldERlZHVjdGlvbiIsImRlZHVjdGlvblVuaWZpZXMiLCJ1bmlmeURlZHVjdGlvbiIsInN1cHBvc2l0aW9ucyIsImdldFN1cHBvc2l0aW9ucyIsInN1cHBvc2l0aW9uc1VuaWZ5IiwidW5pZnlTdXBwb3NpdGlvbnMiLCJ1bmlmeVN1YnByb29mIiwic3VicHJvb2YiLCJzdWJwcm9vZlN0cmluZyIsImxhc3RTdGVwIiwiZ2V0TGFzdFN0ZXAiLCJ1bmlmeUxhc3RTdGVwIiwibGFzdFN0ZXBVbmlmaWVzIiwic3VicHJvb2ZVbmlmaWVzIiwibGFzdFN0ZXBTdHJpbmciLCJkZWR1Y2VkU3RhdGVtZW50U3RyaW5nIiwibGFzdFN0ZXBDb250ZXh0IiwiZ2V0Q29udGV4dCIsImpvaW4iLCJyZWNvbmNpbGUiLCJsYXN0U3RlcFN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsInVuaWZ5U3RhdGVtZW50IiwibGFzdFN0ZXBTdGF0ZW1lbnRVbmlmaWVzIiwiY29tbWl0IiwiZGVkdWN0aW9uU3RyaW5nIiwiZGVkdWN0aW9uQ29udGV4dCIsImRlZHVjdGlvblN0YXRlbWVudCIsImRlZHVjdGlvblN0YXRlbWVudFVuaWZpZXMiLCJ1bmlmeVN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb24iLCJzdXBwb3NpdGlvblN0cmluZyIsInN1cHBvc2VkU3RhdGVtZW50U3RyaW5nIiwic3VwcG9zaXRpb25Db250ZXh0Iiwic3VwcG9zaXRpb25TdGF0ZW1lbnQiLCJzdXBwb3NpdGlvblN0YXRlbWVudFVuaWZpZXMiLCJzdXBwb3NpdGlvblVuaWZpZXMiLCJzdXBwb3NpdGlvbnNMZW5ndGgiLCJsZW5ndGgiLCJzdXBwb3NlZFN0YXRlbWVudHNMZW5ndGgiLCJuYW1lIiwiZnJvbUpTT04iLCJqc29uIiwiaW5zdGFudGlhdGUiLCJpbnN0YW50aWF0ZVN1YnByb29mQXNzZXJ0aW9uIiwic3RhdGVtZW50c0Zyb21TdWJwcm9vZkFzc2VydGlvbk5vZGUiLCJzdWJwcm9vckFzc2VydGlvbiIsImZyb21TdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlIiwic3VicHJvb2ZBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudE5vZGVzIiwiZ2V0U3RhdGVtZW50Tm9kZXMiLCJtYXAiLCJzdGF0ZW1ldE5vZGUiLCJmaW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFpQkE7OztlQUFBOzs7MkJBZitCO2dDQUM0QjtrRUFFckM7OEJBRUE7MEJBQ0M7NkJBQ3NCO3lCQUNNO3lCQUNHOzs7Ozs7QUFFdEQsTUFBTSxFQUFFQSxJQUFJLEVBQUVDLEtBQUssRUFBRSxHQUFHQyx5QkFBYyxFQUNoQyxFQUFFQyxrQkFBa0IsRUFBRSxHQUFHQyxtQ0FBbUIsRUFDNUMsRUFBRUMsMEJBQTBCLEVBQUUsR0FBR0MscUNBQXFCO01BRTVELFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsMEJBQTBCQyxrQkFBUztJQUM3RCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLFVBQVUsQ0FBRTtRQUN6RCxLQUFLLENBQUNKLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtJQUNwQjtJQUVBQyxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQ0QsVUFBVTtJQUN4QjtJQUVBRSxzQkFBc0I7UUFDcEIsTUFBTUMsZ0JBQWdCakIsS0FBSyxJQUFJLENBQUNjLFVBQVUsR0FDcENJLG1CQUFtQkQsZUFBZSxHQUFHO1FBRTNDLE9BQU9DO0lBQ1Q7SUFFQUMscUJBQXFCQyxLQUFLLEVBQUU7UUFDMUIsTUFBTUMsWUFBWSxJQUFJ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
|