occam-nominal 1.0.533 → 1.0.537
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/element/assertion/signature.js +33 -50
- package/lib/element/claim/theorem.js +2 -2
- package/lib/element/declaration/constructor.js +12 -17
- package/lib/element/declaration/cotype.js +59 -66
- package/lib/element/declaration/generator.js +22 -29
- package/lib/element/declaration/property.js +13 -20
- package/lib/element/declaration/type.js +18 -29
- package/lib/element/declaration/typePrefix.js +7 -10
- package/lib/element/generator.js +56 -81
- package/lib/element/property.js +46 -52
- package/lib/element/typePrefix.js +15 -19
- package/package.json +2 -2
- package/src/element/assertion/signature.js +30 -61
- package/src/element/claim/theorem.js +1 -1
- package/src/element/declaration/constructor.js +19 -21
- package/src/element/declaration/cotype.js +78 -79
- package/src/element/declaration/generator.js +30 -34
- package/src/element/declaration/property.js +14 -22
- package/src/element/declaration/type.js +26 -34
- package/src/element/declaration/typePrefix.js +6 -10
- package/src/element/generator.js +66 -106
- package/src/element/property.js +56 -72
- package/src/element/typePrefix.js +23 -23
|
@@ -66,32 +66,40 @@ const _default = (0, _elements.define)(class SignatureAssertion extends _asserti
|
|
|
66
66
|
validate(state, context, forward, back) {
|
|
67
67
|
const signatureAssertionString = this.getString(); ///
|
|
68
68
|
context.trace(`Validating the '${signatureAssertionString}' signature assertion...`);
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
})
|
|
81
|
-
if (validates) {
|
|
69
|
+
return isolate((state, context, forward, back)=>{
|
|
70
|
+
return (0, _context.attempt)((context)=>{
|
|
71
|
+
const validateLink = this.validateLink.bind(this), validateTerms = this.validateTerms.bind(this);
|
|
72
|
+
return all([
|
|
73
|
+
validateLink,
|
|
74
|
+
validateTerms
|
|
75
|
+
], state, context, (state, context, back)=>{
|
|
76
|
+
this.commit(context);
|
|
77
|
+
return forward(back);
|
|
78
|
+
}, back);
|
|
79
|
+
}, context);
|
|
80
|
+
}, state, context, (state, context, back)=>{
|
|
82
81
|
context.debug(`...validated the '${signatureAssertionString}' signature assertion.`);
|
|
83
|
-
|
|
84
|
-
|
|
82
|
+
return forward(context, back);
|
|
83
|
+
}, back);
|
|
84
|
+
}
|
|
85
|
+
validateLink(state, context, forward, back) {
|
|
86
|
+
const signatureAssertionString = this.getString(); ///
|
|
87
|
+
context.trace(`Validating the '${signatureAssertionString}' signature assertion's link...`);
|
|
88
|
+
return this.link.validate(state, context, (link, context, back)=>{
|
|
89
|
+
this.link = link;
|
|
90
|
+
context.debug(`...validated the '${signatureAssertionString}' signature assertion's link.`);
|
|
91
|
+
return forward(state, context, back);
|
|
92
|
+
}, back);
|
|
85
93
|
}
|
|
86
94
|
validateTerm(term, terms, state, context, forward, back) {
|
|
87
95
|
let termValidates;
|
|
88
96
|
const termString = term.getString(), signatureAssertionString = this.getString(); ///
|
|
89
97
|
context.trace(`Validating the '${signatureAssertionString}' signature assertion's '${termString}' term...`);
|
|
90
98
|
termValidates = term.validate(state, context, (term, context)=>{
|
|
91
|
-
let
|
|
99
|
+
let validates;
|
|
92
100
|
terms.push(term);
|
|
93
|
-
|
|
94
|
-
return
|
|
101
|
+
validates = continuation(terms, state, context);
|
|
102
|
+
return validates;
|
|
95
103
|
});
|
|
96
104
|
if (termValidates) {
|
|
97
105
|
context.debug(`...validated the '${signatureAssertionString}' signature assertion's '${termString}' term.`);
|
|
@@ -99,47 +107,22 @@ const _default = (0, _elements.define)(class SignatureAssertion extends _asserti
|
|
|
99
107
|
return termValidates;
|
|
100
108
|
}
|
|
101
109
|
validateTerms(state, context, forward, back) {
|
|
102
|
-
let termsValidate;
|
|
103
110
|
const signatureAssertionString = this.getString(); ///
|
|
104
111
|
context.trace(`Validating the '${signatureAssertionString}' signature assertion's terms...`);
|
|
105
|
-
const terms = []
|
|
106
|
-
|
|
107
|
-
let
|
|
108
|
-
|
|
109
|
-
if (
|
|
112
|
+
const terms = [];
|
|
113
|
+
return every(this.terms, validateTerm, terms, state, context, (terms, state, context)=>{
|
|
114
|
+
let termsValidate1;
|
|
115
|
+
termsValidate1 = continuation(state, context);
|
|
116
|
+
if (termsValidate1) {
|
|
110
117
|
this.terms = terms;
|
|
111
118
|
}
|
|
112
|
-
return
|
|
119
|
+
return termsValidate1;
|
|
113
120
|
});
|
|
114
121
|
if (termsValidate) {
|
|
115
122
|
context.debug(`...validated the '${signatureAssertionString}' signature assertion's terms.`);
|
|
116
123
|
}
|
|
117
124
|
return termsValidate;
|
|
118
125
|
}
|
|
119
|
-
validateLink(state, context, forward, back) {
|
|
120
|
-
let linkValidates;
|
|
121
|
-
const signatureAssertionString = this.getString(); ///
|
|
122
|
-
context.trace(`Validating the '${signatureAssertionString}' signature assertion's link...`);
|
|
123
|
-
linkValidates = this.link.validate(state, context, (link, context)=>{
|
|
124
|
-
let validates1 = false;
|
|
125
|
-
const axiom = context.findAxiomByLink(link);
|
|
126
|
-
if (axiom !== null) {
|
|
127
|
-
const axiomSatisfiable = axiom.isSatisfiable();
|
|
128
|
-
if (axiomSatisfiable) {
|
|
129
|
-
validates1 = true;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
if (validates1) {
|
|
133
|
-
this.link = link;
|
|
134
|
-
validates1 = continuation(state, context);
|
|
135
|
-
}
|
|
136
|
-
return validates1;
|
|
137
|
-
});
|
|
138
|
-
if (linkValidates) {
|
|
139
|
-
context.debug(`...validated the '${signatureAssertionString}' signature assertion's link.`);
|
|
140
|
-
}
|
|
141
|
-
return linkValidates;
|
|
142
|
-
}
|
|
143
126
|
unifyClaim(claim, context, forward, back) {
|
|
144
127
|
const claimString = claim.getString(), signatureAssertionString = this.getString();
|
|
145
128
|
context.trace(`Unifying the '${claimString}' claim with the '${signatureAssertionString}' signature assertion...`);
|
|
@@ -173,4 +156,4 @@ const _default = (0, _elements.define)(class SignatureAssertion extends _asserti
|
|
|
173
156
|
}
|
|
174
157
|
});
|
|
175
158
|
|
|
176
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zaWduYXR1cmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZGVjbGFyZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7IHJlY29uY2lsZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgc2lnbmF0dXJlQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcblxuY29uc3QgeyBjdXQgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgdW5icmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBTaWduYXR1cmVBc3NlcnRpb24gZXh0ZW5kcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxpbmssIHRlcm1zKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMubGluayA9IGxpbms7XG4gICAgdGhpcy50ZXJtcyA9IHRlcm1zO1xuICB9XG5cbiAgZ2V0VGVybXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudGVybXM7XG4gIH1cblxuICBnZXRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmxpbms7XG4gIH1cblxuICBnZXRTaWduYXR1cmVBc3NlcnRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25Ob2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZUFzc2VydGlvbk5vZGU7XG4gIH1cblxuICB2ZXJpZnkgPSB1bmJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChzaWduYXR1cmVBc3NlcnRpb24sIGNvbnRleHQgLCBiYWNrKSA9PiB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGFwcGx5ID0gdW5icmVha2FibGUoZnVuY3Rpb24gKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgbGV0IHN0ZXBBbmRGYWN0T3JTdWJwcm9vZnNVbmlmeSA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgQXBwbHlpbmcgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGF4aW9tID0gY29udGV4dC5maW5kQXhpb21CeUxpbmsodGhpcy5saW5rKSxcbiAgICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvbiA9IHRoaXM7ICAvLy9cblxuICAgICAgcmV0dXJuIGF4aW9tLnVuaWZ5U2lnbmF0dXJlQXNzZXJ0aW9uKHNpZ25hdHVyZUFzc2VydGlvbiwgY29udGV4dCwgKHNpZ25hdHVyZUFzc2VydGlvblVuaWZpZXMpID0+IHtcbiAgICAgICAgaWYgKCFzaWduYXR1cmVBc3NlcnRpb25VbmlmaWVzKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgYXBwbGllZCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi5gKTtcblxuICAgICAgICBheGlvbS51bmlmeVN0ZXBBbmRGYWN0T3JTdWJwcm9vZnMoc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgICAgIH0pO1xuICAgIH0sIGNvbnRleHQpO1xuICB9KTtcblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHNpZ25hdHVyZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIGFzc2VydGlvbiA9IHRoaXM7IC8vL1xuXG4gICAgY29uc3QgdmFsaWRhdGVUZXJtcyA9IHRoaXMudmFsaWRhdGVUZXJtcy5iaW5kKHRoaXMpLFxuICAgICAgICAgIHZhbGlkYXRlTGluayA9IHRoaXMudmFsaWRhdGVMaW5rLmJpbmQodGhpcyk7XG5cbiAgICB2YWxpZGF0ZXMgPSBhbGwoW1xuICAgICAgdmFsaWRhdGVUZXJtcyxcbiAgICAgIHZhbGlkYXRlTGlua1xuICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQpID0+IHtcbiAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgIGNvbnRleHQuYWRkQXNzZXJ0aW9uKGFzc2VydGlvbik7XG5cbiAgICAgIGNvbnN0IHNpZ25hdHVyZUFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzaWduYXR1cmVBc3NlcnRpb24sIGNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgIH0pO1xuXG4gICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm0odGVybSwgdGVybXMsIHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IHRlcm1WYWxpZGF0ZXM7XG5cbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgJyR7dGVybVN0cmluZ30nIHRlcm0uLi5gKTtcblxuICAgIHRlcm1WYWxpZGF0ZXMgPSB0ZXJtLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgdGVybXMucHVzaCh0ZXJtKTtcblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHRlcm1zLCBzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgfSk7XG5cbiAgICBpZiAodGVybVZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgJyR7dGVybVN0cmluZ30nIHRlcm0uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlcm1WYWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm1zKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IHRlcm1zVmFsaWRhdGU7XG5cbiAgICBjb25zdCBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgdGVybXMuLi5gKTtcblxuICAgIGNvbnN0IHRlcm1zID0gW10sXG4gICAgICAgICAgdmFsaWRhdGVUZXJtID0gdGhpcy52YWxpZGF0ZVRlcm0uYmluZCh0aGlzKTtcblxuICAgIHRlcm1zVmFsaWRhdGUgPSBldmVyeSh0aGlzLnRlcm1zLCB2YWxpZGF0ZVRlcm0sIHRlcm1zLCBzdGF0ZSwgY29udGV4dCwgKHRlcm1zLCBzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHRlcm1zVmFsaWRhdGU7XG5cbiAgICAgIHRlcm1zVmFsaWRhdGUgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuXG4gICAgICBpZiAodGVybXNWYWxpZGF0ZSkge1xuICAgICAgICB0aGlzLnRlcm1zID0gdGVybXM7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0ZXJtc1ZhbGlkYXRlO1xuICAgIH0pO1xuXG4gICAgaWYgKHRlcm1zVmFsaWRhdGUpe1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgdGVybXMuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlcm1zVmFsaWRhdGVcbiAgfVxuXG4gIHZhbGlkYXRlTGluayhzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBsaW5rVmFsaWRhdGVzO1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbidzIGxpbmsuLi5gKTtcblxuICAgIGxpbmtWYWxpZGF0ZXMgPSB0aGlzLmxpbmsudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChsaW5rLCBjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdmFsaWRhdGVzID0gZmFsc2U7XG5cbiAgICAgIGNvbnN0IGF4aW9tID0gY29udGV4dC5maW5kQXhpb21CeUxpbmsobGluayk7XG5cbiAgICAgIGlmIChheGlvbSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBheGlvbVNhdGlzZmlhYmxlID0gYXhpb20uaXNTYXRpc2ZpYWJsZSgpO1xuXG4gICAgICAgIGlmIChheGlvbVNhdGlzZmlhYmxlKSB7XG4gICAgICAgICAgdmFsaWRhdGVzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICAgIHRoaXMubGluayA9IGxpbms7XG5cbiAgICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICB9KTtcblxuICAgIGlmIChsaW5rVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24ncyBsaW5rLmApO1xuICAgIH1cblxuICAgIHJldHVybiBsaW5rVmFsaWRhdGVzO1xuICB9XG5cbiAgdW5pZnlDbGFpbShjbGFpbSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNsYWltU3RyaW5nID0gY2xhaW0uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltIHdpdGggdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGF4aW9tID0gY29udGV4dC5maW5kQXhpb21CeUxpbmsodGhpcy5saW5rKTtcblxuICAgICAgcmV0dXJuIGF4aW9tLnVuaWZ5VGVybXModGhpcy50ZXJtcywgY29udGV4dCwgKHRlcm1zVW5pZnkpID0+IHtcbiAgICAgICAgaWYgKCF0ZXJtc1VuaWZ5KSB7XG4gICAgICAgICAgY29uc3QgY2xhaW1VbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKGNsYWltVW5pZmllcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXhpb20udW5pZnlDbGFpbShjbGFpbSwgY29udGV4dCwgKGNsYWltVW5pZmllcykgPT4ge1xuICAgICAgICAgIGlmIChjbGFpbVVuaWZpZXMpIHtcbiAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0gd2l0aCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi5gKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoY2xhaW1VbmlmaWVzKSB7XG4gICAgICAgICAgICBjb250ZXh0LmNvbW1pdCgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oY2xhaW1VbmlmaWVzKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTaWduYXR1cmVBc3NlcnRpb25cIjtcblxuICBzdGF0aWMgZnJvbVN0ZXAoc3RlcCwgY29udGV4dCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGVwLmdldFN0YXRlbWVudE5vZGUoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb24gPSBzaWduYXR1cmVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzaWduYXR1cmVBc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb24gPSBzaWduYXR1cmVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzaWduYXR1cmVBc3NlcnRpb247XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbImN1dCIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsInVuYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIlNpZ25hdHVyZUFzc2VydGlvbiIsIkFzc2VydGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsImxpbmsiLCJ0ZXJtcyIsImdldFRlcm1zIiwiZ2V0TGluayIsImdldFNpZ25hdHVyZUFzc2VydGlvbk5vZGUiLCJnZXROb2RlIiwic2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSIsInZlcmlmeSIsImZvcndhcmQiLCJiYWNrIiwic2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZWNsYXJlIiwic3RhdGUiLCJ2YWxpZGF0ZSIsInNpZ25hdHVyZUFzc2VydGlvbiIsImRlYnVnIiwiYXBwbHkiLCJzdGVwIiwiZmFjdE9yU3VicHJvb2ZzIiwic3RlcEFuZEZhY3RPclN1YnByb29mc1VuaWZ5IiwicmVjb25jaWxlIiwiYXhpb20iLCJmaW5kQXhpb21CeUxpbmsiLCJ1bmlmeVNpZ25hdHVyZUFzc2VydGlvbiIsInNpZ25hdHVyZUFzc2VydGlvblVuaWZpZXMiLCJjb250aW51YXRpb24iLCJ1bmlmeVN0ZXBBbmRGYWN0T3JTdWJwcm9vZnMiLCJhc3NlcnRpb24iLCJ2YWxpZGF0ZVRlcm1zIiwiYmluZCIsInZhbGlkYXRlTGluayIsInZhbGlkYXRlcyIsImFsbCIsImFkZEFzc2VydGlvbiIsInZhbGlkYXRlVGVybSIsInRlcm0iLCJ0ZXJtVmFsaWRhdGVzIiwidGVybVN0cmluZyIsInB1c2giLCJ0ZXJtc1ZhbGlkYXRlIiwiZXZlcnkiLCJsaW5rVmFsaWRhdGVzIiwiYXhpb21TYXRpc2ZpYWJsZSIsImlzU2F0aXNmaWFibGUiLCJ1bmlmeUNsYWltIiwiY2xhaW0iLCJjbGFpbVN0cmluZyIsInVuaWZ5VGVybXMiLCJ0ZXJtc1VuaWZ5IiwiY2xhaW1VbmlmaWVzIiwiY29tbWl0IiwibmFtZSIsImZyb21TdGVwIiwic3RhdGVtZW50Tm9kZSIsImdldFN0YXRlbWVudE5vZGUiLCJzaWduYXR1cmVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSIsImZyb21TdGF0ZW1lbnQiLCJzdGF0ZW1lbnQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWNBOzs7ZUFBQTs7O2dDQVoyRDtrRUFFckM7MEJBRUM7dUJBQ0M7eUJBQ0U7eUJBQzBCOzs7Ozs7QUFFcEQsTUFBTSxFQUFFQSxHQUFHLEVBQUUsR0FBR0MscUNBQXFCLEVBQy9CLEVBQUVDLFdBQVcsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFM0MsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQywyQkFBMkJDLGtCQUFTO0lBQzlELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsSUFBSSxFQUFFQyxLQUFLLENBQUU7UUFDMUQsS0FBSyxDQUFDTCxTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLEtBQUssR0FBR0E7SUFDZjtJQUVBQyxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUNELEtBQUs7SUFDbkI7SUFFQUUsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDSCxJQUFJO0lBQ2xCO0lBRUFJLDRCQUE0QjtRQUMxQixNQUFNTixPQUFPLElBQUksQ0FBQ08sT0FBTyxJQUNuQkMseUJBQXlCUixNQUFPLEdBQUc7UUFFekMsT0FBT1E7SUFDVDtJQUVBQyxTQUFTaEIsWUFBWSxTQUFVSyxPQUFPLEVBQUVZLE9BQU8sRUFBRUMsSUFBSTtRQUNuREQsVUFBVW5CLElBQUltQixTQUFTQyxPQUFPLEdBQUc7UUFFakMsTUFBTUMsMkJBQTJCLElBQUksQ0FBQ0MsU0FBUyxJQUFJLEdBQUc7UUFFdERmLFFBQVFnQixLQUFLLENBQUMsQ0FBQyxlQUFlLEVBQUVGLHlCQUF5Qix3QkFBd0IsQ0FBQztRQUVsRixPQUFPRyxJQUFBQSxjQUFPLEVBQUMsQ0FBQ0M7WUFDZCxPQUFPLElBQUksQ0FB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
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zaWduYXR1cmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZGVjbGFyZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7YXR0ZW1wdCwgcmVjb25jaWxlfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IHNpZ25hdHVyZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5cbmNvbnN0IHsgY3V0IH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IHVuYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgU2lnbmF0dXJlQXNzZXJ0aW9uIGV4dGVuZHMgQXNzZXJ0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBsaW5rLCB0ZXJtcykge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLmxpbmsgPSBsaW5rO1xuICAgIHRoaXMudGVybXMgPSB0ZXJtcztcbiAgfVxuXG4gIGdldFRlcm1zKCkge1xuICAgIHJldHVybiB0aGlzLnRlcm1zO1xuICB9XG5cbiAgZ2V0TGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5saW5rO1xuICB9XG5cbiAgZ2V0U2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgc2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBzaWduYXR1cmVBc3NlcnRpb25Ob2RlO1xuICB9XG5cbiAgdmVyaWZ5ID0gdW5icmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IHNpZ25hdHVyZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gZGVjbGFyZSgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoc2lnbmF0dXJlQXNzZXJ0aW9uLCBjb250ZXh0ICwgYmFjaykgPT4ge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0pO1xuICB9KTtcblxuICBhcHBseSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGxldCBzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkgPSBmYWxzZTtcblxuICAgIGNvbnN0IHNpZ25hdHVyZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYEFwcGx5aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gcmVjb25jaWxlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBheGlvbSA9IGNvbnRleHQuZmluZEF4aW9tQnlMaW5rKHRoaXMubGluayksXG4gICAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb24gPSB0aGlzOyAgLy8vXG5cbiAgICAgIHJldHVybiBheGlvbS51bmlmeVNpZ25hdHVyZUFzc2VydGlvbihzaWduYXR1cmVBc3NlcnRpb24sIGNvbnRleHQsIChzaWduYXR1cmVBc3NlcnRpb25VbmlmaWVzKSA9PiB7XG4gICAgICAgIGlmICghc2lnbmF0dXJlQXNzZXJ0aW9uVW5pZmllcykge1xuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc3RlcEFuZEZhY3RPclN1YnByb29mc1VuaWZ5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYGFwcGxpZWQgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uYCk7XG5cbiAgICAgICAgYXhpb20udW5pZnlTdGVwQW5kRmFjdE9yU3VicHJvb2ZzKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgICB9KTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfSk7XG5cbiAgdmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiBhdHRlbXB0KChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRlTGluayA9IHRoaXMudmFsaWRhdGVMaW5rLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZhbGlkYXRlVGVybXMgPSB0aGlzLnZhbGlkYXRlVGVybXMuYmluZCh0aGlzKTtcblxuICAgICAgICByZXR1cm4gYWxsKFtcbiAgICAgICAgICB2YWxpZGF0ZUxpbmssXG4gICAgICAgICAgdmFsaWRhdGVUZXJtc1xuICAgICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgdGhpcy5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9LCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVMaW5rKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbidzIGxpbmsuLi5gKTtcblxuICAgIHJldHVybiB0aGlzLmxpbmsudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChsaW5rLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLmxpbmsgPSBsaW5rO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24ncyBsaW5rLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm0odGVybSwgdGVybXMsIHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IHRlcm1WYWxpZGF0ZXM7XG5cbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgJyR7dGVybVN0cmluZ30nIHRlcm0uLi5gKTtcblxuICAgIHRlcm1WYWxpZGF0ZXMgPSB0ZXJtLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgdGVybXMucHVzaCh0ZXJtKTtcblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHRlcm1zLCBzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgfSk7XG5cbiAgICBpZiAodGVybVZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgJyR7dGVybVN0cmluZ30nIHRlcm0uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlcm1WYWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm1zKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbidzIHRlcm1zLi4uYCk7XG5cbiAgICBjb25zdCB0ZXJtcyA9IFtdO1xuXG4gICAgcmV0dXJuIGV2ZXJ5KHRoaXMudGVybXMsIHZhbGlkYXRlVGVybSwgdGVybXMsIHN0YXRlLCBjb250ZXh0LCAodGVybXMsIHN0YXRlLCBjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdGVybXNWYWxpZGF0ZTtcblxuICAgICAgdGVybXNWYWxpZGF0ZSA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIGlmICh0ZXJtc1ZhbGlkYXRlKSB7XG4gICAgICAgIHRoaXMudGVybXMgPSB0ZXJtcztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRlcm1zVmFsaWRhdGU7XG4gICAgfSk7XG5cbiAgICBpZiAodGVybXNWYWxpZGF0ZSl7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24ncyB0ZXJtcy5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVybXNWYWxpZGF0ZVxuICB9XG5cbiAgdW5pZnlDbGFpbShjbGFpbSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNsYWltU3RyaW5nID0gY2xhaW0uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltIHdpdGggdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGF4aW9tID0gY29udGV4dC5maW5kQXhpb21CeUxpbmsodGhpcy5saW5rKTtcblxuICAgICAgcmV0dXJuIGF4aW9tLnVuaWZ5VGVybXModGhpcy50ZXJtcywgY29udGV4dCwgKHRlcm1zVW5pZnkpID0+IHtcbiAgICAgICAgaWYgKCF0ZXJtc1VuaWZ5KSB7XG4gICAgICAgICAgY29uc3QgY2xhaW1VbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKGNsYWltVW5pZmllcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXhpb20udW5pZnlDbGFpbShjbGFpbSwgY29udGV4dCwgKGNsYWltVW5pZmllcykgPT4ge1xuICAgICAgICAgIGlmIChjbGFpbVVuaWZpZXMpIHtcbiAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0gd2l0aCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi5gKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoY2xhaW1VbmlmaWVzKSB7XG4gICAgICAgICAgICBjb250ZXh0LmNvbW1pdCgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oY2xhaW1VbmlmaWVzKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTaWduYXR1cmVBc3NlcnRpb25cIjtcblxuICBzdGF0aWMgZnJvbVN0ZXAoc3RlcCwgY29udGV4dCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGVwLmdldFN0YXRlbWVudE5vZGUoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb24gPSBzaWduYXR1cmVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzaWduYXR1cmVBc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb24gPSBzaWduYXR1cmVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzaWduYXR1cmVBc3NlcnRpb247XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbImN1dCIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsInVuYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIlNpZ25hdHVyZUFzc2VydGlvbiIsIkFzc2VydGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsImxpbmsiLCJ0ZXJtcyIsImdldFRlcm1zIiwiZ2V0TGluayIsImdldFNpZ25hdHVyZUFzc2VydGlvbk5vZGUiLCJnZXROb2RlIiwic2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSIsInZlcmlmeSIsImZvcndhcmQiLCJiYWNrIiwic2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZWNsYXJlIiwic3RhdGUiLCJ2YWxpZGF0ZSIsInNpZ25hdHVyZUFzc2VydGlvbiIsImRlYnVnIiwiYXBwbHkiLCJzdGVwIiwiZmFjdE9yU3VicHJvb2ZzIiwic3RlcEFuZEZhY3RPclN1YnByb29mc1VuaWZ5IiwicmVjb25jaWxlIiwiYXhpb20iLCJmaW5kQXhpb21CeUxpbmsiLCJ1bmlmeVNpZ25hdHVyZUFzc2VydGlvbiIsInNpZ25hdHVyZUFzc2VydGlvblVuaWZpZXMiLCJjb250aW51YXRpb24iLCJ1bmlmeVN0ZXBBbmRGYWN0T3JTdWJwcm9vZnMiLCJpc29sYXRlIiwiYXR0ZW1wdCIsInZhbGlkYXRlTGluayIsImJpbmQiLCJ2YWxpZGF0ZVRlcm1zIiwiYWxsIiwiY29tbWl0IiwidmFsaWRhdGVUZXJtIiwidGVybSIsInRlcm1WYWxpZGF0ZXMiLCJ0ZXJtU3RyaW5nIiwidmFsaWRhdGVzIiwicHVzaCIsImV2ZXJ5IiwidGVybXNWYWxpZGF0ZSIsInVuaWZ5Q2xhaW0iLCJjbGFpbSIsImNsYWltU3RyaW5nIiwidW5pZnlUZXJtcyIsInRlcm1zVW5pZnkiLCJjbGFpbVVuaWZpZXMiLCJuYW1lIiwiZnJvbVN0ZXAiLCJzdGF0ZW1lbnROb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsInNpZ25hdHVyZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIiwiZnJvbVN0YXRlbWVudCIsInN0YXRlbWVudCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBY0E7OztlQUFBOzs7Z0NBWjJEO2tFQUVyQzswQkFFQzt1QkFDQzt5QkFDUzt5QkFDbUI7Ozs7OztBQUVwRCxNQUFNLEVBQUVBLEdBQUcsRUFBRSxHQUFHQyxxQ0FBcUIsRUFDL0IsRUFBRUMsV0FBVyxFQUFFLEdBQUdDLG1DQUFtQjtNQUUzQyxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLDJCQUEyQkMsa0JBQVM7SUFDOUQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxJQUFJLEVBQUVDLEtBQUssQ0FBRTtRQUMxRCxLQUFLLENBQUNMLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsS0FBSyxHQUFHQTtJQUNmO0lBRUFDLFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQ0QsS0FBSztJ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
|
|
@@ -78,7 +78,7 @@ const _default = (0, _elements.define)(class Theorem extends _claim.default {
|
|
|
78
78
|
if (exception) {
|
|
79
79
|
return back(exception);
|
|
80
80
|
}
|
|
81
|
-
context.trace(`Unable to apply the '${
|
|
81
|
+
context.trace(`Unable to apply the '${theoremString}' theorem.`);
|
|
82
82
|
return back();
|
|
83
83
|
});
|
|
84
84
|
});
|
|
@@ -88,4 +88,4 @@ const _default = (0, _elements.define)(class Theorem extends _claim.default {
|
|
|
88
88
|
}
|
|
89
89
|
});
|
|
90
90
|
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2NsYWltL3RoZW9yZW0uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IENsYWltIGZyb20gXCIuLi9jbGFpbVwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGVuY2xvc2UgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcblxuY29uc3QgeyBicmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXMsXG4gICAgICB7IGN1dCwgYWxsLCBpc29sYXRlIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBUaGVvcmVtIGV4dGVuZHMgQ2xhaW0ge1xuICBnZXRUaG9lcmVtTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgdGhlb3JlbU5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiB0aGVvcmVtTm9kZTtcbiAgfVxuXG4gIHZlcmlmeSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3QgdGhlb3JlbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dGhlb3JlbVN0cmluZ30nIHRoZW9yZW0uLi5gKTtcblxuICAgIHJldHVybiBpc29sYXRlKChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gZW5jbG9zZSgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB2ZXJpZnlQcm9vZiA9IHRoaXMudmVyaWZ5UHJvb2YuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgdmVyaWZ5TGFiZWxzID0gdGhpcy52ZXJpZnlMYWJlbHMuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgdmVyaWZ5RGVkdWN0aW9uID0gdGhpcy52ZXJpZnlEZWR1Y3Rpb24uYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgdmVyaWZ5U3VwcG9zaXRpb25zID0gdGhpcy52ZXJpZnlTdXBwb3NpdGlvbnMuYmluZCh0aGlzKTtcblxuICAgICAgICByZXR1cm4gYWxsKFtcbiAgICAgICAgICB2ZXJpZnlMYWJlbHMsXG4gICAgICAgICAgdmVyaWZ5U3VwcG9zaXRpb25zLFxuICAgICAgICAgIHZlcmlmeURlZHVjdGlvbixcbiAgICAgICAgICB2ZXJpZnlQcm9vZlxuICAgICAgICBdLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCB0aGVvcmVtID0gdGhpczsgLy8vXG5cbiAgICAgIGNvbnRleHQuYWRkVGhlb3JlbSh0aGVvcmVtKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3RoZW9yZW1TdHJpbmd9JyB0aGVvcmVtLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCAoZXhjZXB0aW9uKSA9PiB7XG4gICAgICBpZiAoZXhjZXB0aW9uKSB7XG4gICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke3RoZW9yZW1TdHJpbmd9JyB0aGVvcmVtLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH0pO1xuICB9KTtcblxuICBhcHBseSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCB0aGVvcmVtU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgQXBwbHlpbmcgdGhlICcke3RoZW9yZW1TdHJpbmd9JyB0aGVvcmVtLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCBhcHBseURlZHVjdGlvbiA9IHRoaXMuYXBwbHlEZWR1Y3Rpb24uYmluZCh0aGlzKSxcbiAgICAgICAgICAgIGFwcGx5U3VwcG9zaXRpb25zID0gdGhpcy5hcHBseVN1cHBvc2l0aW9ucy5iaW5kKHRoaXMpO1xuXG4gICAgICByZXR1cm4gcmVjb25jaWxlKChjb250ZXh0KSA9PiB7XG4gICAgICAgIHJldHVybiBhbGwoW1xuICAgICAgICAgIGFwcGx5RGVkdWN0aW9uLFxuICAgICAgICAgIGFwcGx5U3VwcG9zaXRpb25zXG4gICAgICAgIF0sIHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvbXBsZXhTdWJzdGl0dXRpb25zVW5zb2x2ZWQgPSBjb250ZXh0LmFyZUNvbXBsZXhTdWJzdGl0dXRpb25zVW5zb2x2ZWQoKTtcblxuICAgICAgICAgIGlmIChjb21wbGV4U3Vic3RpdHV0aW9uc1Vuc29sdmVkKSB7XG4gICAgICAgICAgICBjb250ZXh0LmRlYnVnKGBUaGVyZSBhcmUgdW5zb2x2ZWQgY29tcGxleCBzdWJzdGl0dXRpb25zLmApO1xuXG4gICAgICAgICAgICByZXR1cm4gYmFjaygpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIGNvbnRleHQpXG4gICAgfSwgc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCAoc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi5hcHBsaWVkIHRoZSAnJHt0aGVvcmVtU3RyaW5nfScgdGhlb3JlbS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmFibGUgdG8gYXBwbHkgdGhlICcke3RoZW9yZW1TdHJpbmd9JyB0aGVvcmVtLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH0pO1xuICB9KTtcblxuICBzdGF0aWMgbmFtZSA9IFwiVGhlb3JlbVwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7IHJldHVybiBDbGFpbS5mcm9tSlNPTihUaGVvcmVtLCBqc29uLCBjb250ZXh0KTsgfVxufSk7XG4iXSwibmFtZXMiOlsiYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImN1dCIsImFsbCIsImlzb2xhdGUiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJkZWZpbmUiLCJUaGVvcmVtIiwiQ2xhaW0iLCJnZXRUaG9lcmVtTm9kZSIsIm5vZGUiLCJnZXROb2RlIiwidGhlb3JlbU5vZGUiLCJ2ZXJpZnkiLCJjb250ZXh0IiwiZm9yd2FyZCIsImJhY2siLCJ0aGVvcmVtU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJlbmNsb3NlIiwidmVyaWZ5UHJvb2YiLCJiaW5kIiwidmVyaWZ5TGFiZWxzIiwidmVyaWZ5RGVkdWN0aW9uIiwidmVyaWZ5U3VwcG9zaXRpb25zIiwidGhlb3JlbSIsImFkZFRoZW9yZW0iLCJkZWJ1ZyIsImV4Y2VwdGlvbiIsImFwcGx5Iiwic3RlcCIsImZhY3RPclN1YnByb29mcyIsImFwcGx5RGVkdWN0aW9uIiwiYXBwbHlTdXBwb3NpdGlvbnMiLCJyZWNvbmNpbGUiLCJjb21wbGV4U3Vic3RpdHV0aW9uc1Vuc29sdmVkIiwiYXJlQ29tcGxleFN1YnN0aXR1dGlvbnNVbnNvbHZlZCIsIm5hbWUiLCJmcm9tSlNPTiIsImpzb24iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVlBOzs7ZUFBQTs7O2dDQVYyRDs4REFFekM7MEJBRUs7eUJBQ0M7Ozs7OztBQUV4QixNQUFNLEVBQUVBLFNBQVMsRUFBRSxHQUFHQyxtQ0FBbUIsRUFDbkMsRUFBRUMsR0FBRyxFQUFFQyxHQUFHLEVBQUVDLE9BQU8sRUFBRSxHQUFHQyxxQ0FBcUI7TUFFbkQsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxnQkFBZ0JDLGNBQUs7SUFDL0NDLGlCQUFpQjtRQUNmLE1BQU1DLE9BQU8sSUFBSSxDQUFDQyxPQUFPLElBQ25CQyxjQUFjRixNQUFNLEdBQUc7UUFFN0IsT0FBT0U7SUFDVDtJQUVBQyxTQUFTYixVQUFVLFNBQVVjLE9BQU8sRUFBRUMsT0FBTyxFQUFFQyxJQUFJO1FBQ2pERCxVQUFVYixJQUFJYSxTQUFTQyxPQUFPLEdBQUc7UUFFakMsTUFBTUMsZ0JBQWdCLElBQUksQ0FBQ0MsU0FBUyxJQUFLLEdBQUc7UUFFNUNKLFFBQVFLLEtBQUssQ0FBQyxDQUFDLGVBQWUsRUFBRUYsY0FBYyxZQUFZLENBQUM7UUFFM0QsT0FBT2IsUUFBUSxDQUFDVSxTQUFTQyxTQUFTQztZQUNoQyxPQUFPSSxJQUFBQSxnQkFBTyxFQUFDLENBQUNOO2dCQUNkLE1BQU1PLGNBQWMsSUFBSSxDQUFDQSxXQUFXLENBQUNDLElBQUksQ0FBQyxJQUFJLEdBQ3hDQyxlQUFlLElBQUks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
|
|
@@ -71,29 +71,24 @@ const _default = (0, _elements.define)(class ConstructorDeclaration extends _dec
|
|
|
71
71
|
});
|
|
72
72
|
});
|
|
73
73
|
verifyType(context, forward, back) {
|
|
74
|
-
let typeVerifies = false;
|
|
75
74
|
const constructorDeclarationString = this.getString(); ///
|
|
76
75
|
context.trace(`Verifying the '${constructorDeclarationString}' constructor declaration's type...`);
|
|
77
76
|
const nominalTypeName = this.type.getNominalTypeName(), typeString = this.type.getString(), type = context.findTypeByNominalTypeName(nominalTypeName);
|
|
78
|
-
if (type
|
|
79
|
-
const typeCotype = type.isCotype();
|
|
80
|
-
if (!typeCotype) {
|
|
81
|
-
const provisional = this.isProvisional(), typeComparesToProvisional = type.compareProvisional(provisional);
|
|
82
|
-
if (!typeComparesToProvisional) {
|
|
83
|
-
provisional ? context.debug(`The '${typeString}' type is present but not provisional.`) : context.debug(`The '${typeString}' type is present but provisional.`);
|
|
84
|
-
} else {
|
|
85
|
-
this.type = type;
|
|
86
|
-
typeVerifies = true;
|
|
87
|
-
}
|
|
88
|
-
} else {
|
|
89
|
-
context.debug(`The '${typeString}' type is a cotype.`);
|
|
90
|
-
}
|
|
91
|
-
} else {
|
|
77
|
+
if (type === null) {
|
|
92
78
|
context.debug(`The '${typeString}' type is not present.`);
|
|
79
|
+
return back();
|
|
93
80
|
}
|
|
94
|
-
|
|
81
|
+
const typeCotype = type.isCotype();
|
|
82
|
+
if (typeCotype) {
|
|
83
|
+
context.debug(`The '${typeString}' type is a cotype.`);
|
|
95
84
|
return back();
|
|
96
85
|
}
|
|
86
|
+
const provisional = this.isProvisional(), typeComparesToProvisional = type.compareProvisional(provisional);
|
|
87
|
+
if (!typeComparesToProvisional) {
|
|
88
|
+
provisional ? context.debug(`The '${typeString}' type is present but not provisional.`) : context.debug(`The '${typeString}' type is present but provisional.`);
|
|
89
|
+
return back();
|
|
90
|
+
}
|
|
91
|
+
this.type = type;
|
|
97
92
|
context.debug(`...verified the '${constructorDeclarationString}' constructor declaration's type.`);
|
|
98
93
|
return forward(context, back);
|
|
99
94
|
}
|
|
@@ -108,4 +103,4 @@ const _default = (0, _elements.define)(class ConstructorDeclaration extends _dec
|
|
|
108
103
|
static name = "ConstructorDeclaration";
|
|
109
104
|
});
|
|
110
105
|
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL2NvbnN0cnVjdG9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBEZWNsYXJhdGlvbiBmcm9tIFwiLi4vZGVjbGFyYXRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5cbmNvbnN0IHsgY3V0LCBhbGwgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgQ29uc3RydWN0b3JEZWNsYXJhdGlvbiBleHRlbmRzIERlY2xhcmF0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0eXBlLCBwcm92aXNpb25hbCwgY29uc3RydWN0b3IpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLnByb3Zpc2lvbmFsID0gcHJvdmlzaW9uYWw7XG4gICAgdGhpcy5jb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgaXNQcm92aXNpb25hbCgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm92aXNpb25hbDtcbiAgfVxuXG4gIGdldENvbnN0cnVjdG9yKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdG9yO1xuICB9XG5cbiAgZ2V0Q29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ob2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gY29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGU7XG4gIH1cblxuICBpc01hbGZvcm1lZCgpIHtcbiAgICBjb25zdCBjb25zdHJ1Y3RvckRlY2xhcmF0aW9uTm9kZSA9IHRoaXMuZ2V0Q29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGUoKSxcbiAgICAgICAgICBtYWxmb3JtZWQgPSBjb25zdHJ1Y3RvckRlY2xhcmF0aW9uTm9kZS5pc01hbGZvcm1lZCgpO1xuXG4gICAgcmV0dXJuIG1hbGZvcm1lZDtcbiAgfVxuXG4gIHNldEh5cG90aGVzZXMoaHlwb3RoZXNlcykgeyB0aGlzLmNvbnN0cnVjdG9yLnNldEh5cG90aGVzZXMoaHlwb3RoZXNlcyk7IH1cblxuICB2ZXJpZnkgPSBicmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IGNvbnN0cnVjdG9yRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvbnN0cnVjdG9yRGVjbGFyYXRpb25TdHJpbmd9JyBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbi4uLmApO1xuXG4gICAgY29uc3QgbWFsZm9ybWVkID0gdGhpcy5pc01hbGZvcm1lZCgpO1xuXG4gICAgaWYgKG1hbGZvcm1lZCkge1xuICAgICAgY29udGV4dC50cmFjZShgVW5hYmxlIHRvIHZlcmlmeSB0aGUgJyR7Y29uc3RydWN0b3JEZWNsYXJhdGlvblN0cmluZ30nIGNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uIGJlY2F1c2UgaXQgaXMgbWFsZm9ybWVkLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnN0IHZlcmlmeVR5cGUgPSB0aGlzLnZlcmlmeVR5cGUuYmluZCh0aGlzKSxcbiAgICAgICAgICB2ZXJpZnlDb25zdHJ1Y3RvciA9IHRoaXMudmVyaWZ5Q29uc3RydWN0b3IuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdmVyaWZ5VHlwZSxcbiAgICAgIHZlcmlmeUNvbnN0cnVjdG9yXG4gICAgXSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHRoaXMuY29uc3RydWN0b3Iuc2V0VHlwZSh0aGlzLnR5cGUpO1xuXG4gICAgICBjb250ZXh0LmFkZENvbnN0cnVjdG9yKHRoaXMuY29uc3RydWN0b3IpO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y29uc3RydWN0b3JEZWNsYXJhdGlvblN0cmluZ30nIGNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCAoZXhjZXB0aW9uKSA9PiB7XG4gICAgICBpZiAoZXhjZXB0aW9uKSB7XG4gICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke2NvbnN0cnVjdG9yRGVjbGFyYXRpb25TdHJpbmd9JyBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgdmVyaWZ5VHlwZShjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IHR5cGVWZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29uc3RydWN0b3JEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y29uc3RydWN0b3JEZWNsYXJhdGlvblN0cmluZ30nIGNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uJ3MgdHlwZS4uLmApO1xuXG4gICAgY29uc3Qgbm9taW5hbFR5cGVOYW1lID0gdGhpcy50eXBlLmdldE5vbWluYWxUeXBlTmFtZSgpLFxuICAgICAgICAgIHR5cGVTdHJpbmcgPSB0aGlzLnR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgaWYgKHR5cGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHR5cGVDb3R5cGUgPSB0eXBlLmlzQ290eXBlKCk7XG5cbiAgICAgIGlmICghdHlwZUNvdHlwZSkge1xuICAgICAgICBjb25zdCBwcm92aXNpb25hbCA9IHRoaXMuaXNQcm92aXNpb25hbCgpLFxuICAgICAgICAgICAgICB0eXBlQ29tcGFyZXNUb1Byb3Zpc2lvbmFsID0gdHlwZS5jb21wYXJlUHJvdmlzaW9uYWwocHJvdmlzaW9uYWwpO1xuXG4gICAgICAgIGlmICghdHlwZUNvbXBhcmVzVG9Qcm92aXNpb25hbCkge1xuICAgICAgICAgIHByb3Zpc2lvbmFsID9cbiAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBwcmVzZW50IGJ1dCBub3QgcHJvdmlzaW9uYWwuYCkgOlxuICAgICAgICAgICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgcHJlc2VudCBidXQgcHJvdmlzaW9uYWwuYCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy50eXBlID0gdHlwZTtcblxuICAgICAgICAgIHR5cGVWZXJpZmllcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBhIGNvdHlwZS5gKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIG5vdCBwcmVzZW50LmApO1xuICAgIH1cblxuICAgIGlmICghdHlwZVZlcmlmaWVzKSB7XG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb25zdHJ1Y3RvckRlY2xhcmF0aW9uU3RyaW5nfScgY29uc3RydWN0b3IgZGVjbGFyYXRpb24ncyB0eXBlLmApO1xuXG4gICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gIH1cblxuICB2ZXJpZnlDb25zdHJ1Y3Rvcihjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICBjb25zdHJ1Y3RvclN0cmluZyA9IHRoaXMuY29uc3RydWN0b3IuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKSxcbiAgICAgICAgICBjb25zdHJ1Y3RvckRlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjb25zdHJ1Y3RvckRlY2xhcmF0aW9uU3RyaW5nfScgY29uc3RydWN0b3IgZGVjbGFyYXRpb24ncyAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci52ZXJpZnkoY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb25zdHJ1Y3RvckRlY2xhcmF0aW9uU3RyaW5nfScgY29uc3RydWN0b3IgZGVjbGFyYXRpb24ncyAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJDb25zdHJ1Y3RvckRlY2xhcmF0aW9uXCI7XG59KTtcbiJdLCJuYW1lcyI6WyJjdXQiLCJhbGwiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJicmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiQ29uc3RydWN0b3JEZWNsYXJhdGlvbiIsIkRlY2xhcmF0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidHlwZSIsInByb3Zpc2lvbmFsIiwiY29uc3RydWN0b3IiLCJnZXRUeXBlIiwiaXNQcm92aXNpb25hbCIsImdldENvbnN0cnVjdG9yIiwiZ2V0Q29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGUiLCJnZXROb2RlIiwiY29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGUiLCJpc01hbGZvcm1lZCIsIm1hbGZvcm1lZCIsInNldEh5cG90aGVzZXMiLCJoeXBvdGhlc2VzIiwidmVyaWZ5IiwiZm9yd2FyZCIsImJhY2siLCJjb25zdHJ1Y3RvckRlY2xhcmF0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJ2ZXJpZnlUeXBlIiwiYmluZCIsInZlcmlmeUNvbnN0cnVjdG9yIiwic2V0VHlwZSIsImFkZENvbnN0cnVjdG9yIiwiZGVidWciLCJleGNlcHRpb24iLCJ0eXBlVmVyaWZpZXMiLCJub21pbmFsVHlwZU5hbWUiLCJnZXROb21pbmFsVHlwZU5hbWUiLCJ0eXBlU3RyaW5nIiwiZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZSIsInR5cGVDb3R5cGUiLCJpc0NvdHlwZSIsInR5cGVDb21wYXJlc1RvUHJvdmlzaW9uYWwiLCJjb21wYXJlUHJvdmlzaW9uYWwiLCJpbmNsdWRlVHlwZSIsImNvbnN0cnVjdG9yU3RyaW5nIiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBV0E7OztlQUFBOzs7Z0NBVDJEO29FQUVuQzswQkFFRDs7Ozs7O0FBRXZCLE1BQU0sRUFBRUEsR0FBRyxFQUFFQyxHQUFHLEVBQUUsR0FBR0MscUNBQXFCLEVBQ3BD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
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL2NvbnN0cnVjdG9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBEZWNsYXJhdGlvbiBmcm9tIFwiLi4vZGVjbGFyYXRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5cbmNvbnN0IHsgY3V0LCBhbGwgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgQ29uc3RydWN0b3JEZWNsYXJhdGlvbiBleHRlbmRzIERlY2xhcmF0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0eXBlLCBwcm92aXNpb25hbCwgY29uc3RydWN0b3IpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLnByb3Zpc2lvbmFsID0gcHJvdmlzaW9uYWw7XG4gICAgdGhpcy5jb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgaXNQcm92aXNpb25hbCgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm92aXNpb25hbDtcbiAgfVxuXG4gIGdldENvbnN0cnVjdG9yKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdG9yO1xuICB9XG5cbiAgZ2V0Q29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ob2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gY29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGU7XG4gIH1cblxuICBpc01hbGZvcm1lZCgpIHtcbiAgICBjb25zdCBjb25zdHJ1Y3RvckRlY2xhcmF0aW9uTm9kZSA9IHRoaXMuZ2V0Q29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGUoKSxcbiAgICAgICAgICBtYWxmb3JtZWQgPSBjb25zdHJ1Y3RvckRlY2xhcmF0aW9uTm9kZS5pc01hbGZvcm1lZCgpO1xuXG4gICAgcmV0dXJuIG1hbGZvcm1lZDtcbiAgfVxuXG4gIHNldEh5cG90aGVzZXMoaHlwb3RoZXNlcykgeyB0aGlzLmNvbnN0cnVjdG9yLnNldEh5cG90aGVzZXMoaHlwb3RoZXNlcyk7IH1cblxuICB2ZXJpZnkgPSBicmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IGNvbnN0cnVjdG9yRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvbnN0cnVjdG9yRGVjbGFyYXRpb25TdHJpbmd9JyBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbi4uLmApO1xuXG4gICAgY29uc3QgbWFsZm9ybWVkID0gdGhpcy5pc01hbGZvcm1lZCgpO1xuXG4gICAgaWYgKG1hbGZvcm1lZCkge1xuICAgICAgY29udGV4dC50cmFjZShgVW5hYmxlIHRvIHZlcmlmeSB0aGUgJyR7Y29uc3RydWN0b3JEZWNsYXJhdGlvblN0cmluZ30nIGNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uIGJlY2F1c2UgaXQgaXMgbWFsZm9ybWVkLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnN0IHZlcmlmeVR5cGUgPSB0aGlzLnZlcmlmeVR5cGUuYmluZCh0aGlzKSxcbiAgICAgICAgICB2ZXJpZnlDb25zdHJ1Y3RvciA9IHRoaXMudmVyaWZ5Q29uc3RydWN0b3IuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdmVyaWZ5VHlwZSxcbiAgICAgIHZlcmlmeUNvbnN0cnVjdG9yXG4gICAgXSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHRoaXMuY29uc3RydWN0b3Iuc2V0VHlwZSh0aGlzLnR5cGUpO1xuXG4gICAgICBjb250ZXh0LmFkZENvbnN0cnVjdG9yKHRoaXMuY29uc3RydWN0b3IpO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y29uc3RydWN0b3JEZWNsYXJhdGlvblN0cmluZ30nIGNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCAoZXhjZXB0aW9uKSA9PiB7XG4gICAgICBpZiAoZXhjZXB0aW9uKSB7XG4gICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke2NvbnN0cnVjdG9yRGVjbGFyYXRpb25TdHJpbmd9JyBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgdmVyaWZ5VHlwZShjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3JEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y29uc3RydWN0b3JEZWNsYXJhdGlvblN0cmluZ30nIGNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uJ3MgdHlwZS4uLmApO1xuXG4gICAgY29uc3Qgbm9taW5hbFR5cGVOYW1lID0gdGhpcy50eXBlLmdldE5vbWluYWxUeXBlTmFtZSgpLFxuICAgICAgICAgIHR5cGVTdHJpbmcgPSB0aGlzLnR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgaWYgKHR5cGUgPT09IG51bGwpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBub3QgcHJlc2VudC5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlQ290eXBlID0gdHlwZS5pc0NvdHlwZSgpO1xuXG4gICAgaWYgKHR5cGVDb3R5cGUpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBhIGNvdHlwZS5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCBwcm92aXNpb25hbCA9IHRoaXMuaXNQcm92aXNpb25hbCgpLFxuICAgICAgICAgIHR5cGVDb21wYXJlc1RvUHJvdmlzaW9uYWwgPSB0eXBlLmNvbXBhcmVQcm92aXNpb25hbChwcm92aXNpb25hbCk7XG5cbiAgICBpZiAoIXR5cGVDb21wYXJlc1RvUHJvdmlzaW9uYWwpIHtcbiAgICAgIHByb3Zpc2lvbmFsID9cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIHByZXNlbnQgYnV0IG5vdCBwcm92aXNpb25hbC5gKSA6XG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIHByZXNlbnQgYnV0IHByb3Zpc2lvbmFsLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIHRoaXMudHlwZSA9IHR5cGU7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y29uc3RydWN0b3JEZWNsYXJhdGlvblN0cmluZ30nIGNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uJ3MgdHlwZS5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5Q29uc3RydWN0b3IoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgY29uc3RydWN0b3JTdHJpbmcgPSB0aGlzLmNvbnN0cnVjdG9yLmdldFN0cmluZyhpbmNsdWRlVHlwZSksXG4gICAgICAgICAgY29uc3RydWN0b3JEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y29uc3RydWN0b3JEZWNsYXJhdGlvblN0cmluZ30nIGNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uJ3MgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMuY29uc3RydWN0b3IudmVyaWZ5KGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y29uc3RydWN0b3JEZWNsYXJhdGlvblN0cmluZ30nIGNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uJ3MgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQ29uc3RydWN0b3JEZWNsYXJhdGlvblwiO1xufSk7XG4iXSwibmFtZXMiOlsiY3V0IiwiYWxsIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIkNvbnN0cnVjdG9yRGVjbGFyYXRpb24iLCJEZWNsYXJhdGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInR5cGUiLCJwcm92aXNpb25hbCIsImNvbnN0cnVjdG9yIiwiZ2V0VHlwZSIsImlzUHJvdmlzaW9uYWwiLCJnZXRDb25zdHJ1Y3RvciIsImdldENvbnN0cnVjdG9yRGVjbGFyYXRpb25Ob2RlIiwiZ2V0Tm9kZSIsImNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ob2RlIiwiaXNNYWxmb3JtZWQiLCJtYWxmb3JtZWQiLCJzZXRIeXBvdGhlc2VzIiwiaHlwb3RoZXNlcyIsInZlcmlmeSIsImZvcndhcmQiLCJiYWNrIiwiY29uc3RydWN0b3JEZWNsYXJhdGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwidmVyaWZ5VHlwZSIsImJpbmQiLCJ2ZXJpZnlDb25zdHJ1Y3RvciIsInNldFR5cGUiLCJhZGRDb25zdHJ1Y3RvciIsImRlYnVnIiwiZXhjZXB0aW9uIiwibm9taW5hbFR5cGVOYW1lIiwiZ2V0Tm9taW5hbFR5cGVOYW1lIiwidHlwZVN0cmluZyIsImZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUiLCJ0eXBlQ290eXBlIiwiaXNDb3R5cGUiLCJ0eXBlQ29tcGFyZXNUb1Byb3Zpc2lvbmFsIiwiY29tcGFyZVByb3Zpc2lvbmFsIiwiaW5jbHVkZVR5cGUiLCJjb25zdHJ1Y3RvclN0cmluZyIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVdBOzs7ZUFBQTs7O2dDQVQyRDtvRUFFbkM7MEJBRUQ7Ozs7OztBQUV2QixNQUFNLEVBQUVBLEdBQUcsRUFBRUMsR0FBRyxFQUFFLEdBQUdDLHFDQUFxQixFQUNwQyxFQUFFQyxTQUFTLEVBQUUsR0FBR0MsbUNBQW1CO01BRXpDLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsK0JBQStCQyxvQkFBVztJQUNwRSxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLElBQUksRUFBRUMsV0FBVyxF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
|
|
@@ -13,12 +13,13 @@ const _declaration = /*#__PURE__*/ _interop_require_default(require("../declarat
|
|
|
13
13
|
const _elements = require("../../elements");
|
|
14
14
|
const _context = require("../../utilities/context");
|
|
15
15
|
const _type = require("../../utilities/type");
|
|
16
|
+
const _continuation = require("occam-languages/lib/utilities/continuation");
|
|
16
17
|
function _interop_require_default(obj) {
|
|
17
18
|
return obj && obj.__esModule ? obj : {
|
|
18
19
|
default: obj
|
|
19
20
|
};
|
|
20
21
|
}
|
|
21
|
-
const { breakable } = _occamlanguages.breakPointUtilities, { cut, all, every } = _occamlanguages.continuationUtilities;
|
|
22
|
+
const { breakable } = _occamlanguages.breakPointUtilities, { cut, all, every, isolate } = _occamlanguages.continuationUtilities;
|
|
22
23
|
const _default = (0, _elements.define)(class CotypeDeclaration extends _declaration.default {
|
|
23
24
|
constructor(context, string, node, breakPoint, type, superTypes, provisional, propertyDeclarations){
|
|
24
25
|
super(context, string, node, breakPoint);
|
|
@@ -76,97 +77,89 @@ const _default = (0, _elements.define)(class CotypeDeclaration extends _declarat
|
|
|
76
77
|
return back();
|
|
77
78
|
});
|
|
78
79
|
});
|
|
79
|
-
verifyType(context,
|
|
80
|
-
let typeVerifies = false;
|
|
80
|
+
verifyType(context, forward, back) {
|
|
81
81
|
const typeString = this.type.getString(), cotypeDeclarationString = this.getString(); ///
|
|
82
82
|
context.trace(`Verifying the '${cotypeDeclarationString}' cotype declaration's '${typeString}' type...`);
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
this.type.setProvisional(this.provisional);
|
|
88
|
-
typeVerifies = true;
|
|
89
|
-
} else {
|
|
90
|
-
context.debug(`The '${typeString}' type is already present.`);
|
|
91
|
-
}
|
|
92
|
-
} else {
|
|
83
|
+
let typePresent;
|
|
84
|
+
const typeName = this.type.getName(), includeRelease = false;
|
|
85
|
+
typePresent = context.isTypePresentByTypeName(typeName, includeRelease);
|
|
86
|
+
if (typePresent) {
|
|
93
87
|
context.debug(`The '${typeString}' type is already present.`);
|
|
88
|
+
return back();
|
|
94
89
|
}
|
|
95
|
-
|
|
96
|
-
|
|
90
|
+
const prefixedTypeName = typeName; ///
|
|
91
|
+
typePresent = context.isTypePresentByPrefixedTypeName(prefixedTypeName);
|
|
92
|
+
if (typePresent) {
|
|
93
|
+
context.debug(`The '${typeString}' type is already present.`);
|
|
94
|
+
return back();
|
|
97
95
|
}
|
|
98
|
-
|
|
96
|
+
this.type.setProvisional(this.provisional);
|
|
97
|
+
context.debug(`...verified the '${cotypeDeclarationString}' cotype declaration's '${typeString}' type`);
|
|
98
|
+
return forward(context, back);
|
|
99
99
|
}
|
|
100
|
-
verifyTypePrefix(context,
|
|
101
|
-
let typePrefixVerifies = false;
|
|
100
|
+
verifyTypePrefix(context, forward, back) {
|
|
102
101
|
const typeString = this.type.getString(), cotypeDeclarationString = this.getString(); ///
|
|
103
102
|
context.trace(`Verifying the '${cotypeDeclarationString}' cotype declaration's '${typeString}' type's prefix...`);
|
|
104
103
|
const typePrefixed = this.type.isPrefixed();
|
|
105
|
-
if (
|
|
106
|
-
typePrefixVerifies = true;
|
|
107
|
-
} else {
|
|
104
|
+
if (typePrefixed) {
|
|
108
105
|
context.debug(`The '${cotypeDeclarationString}' cotype declaration's '${typeString}' type is prefixed.`);
|
|
106
|
+
return back();
|
|
109
107
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
}
|
|
113
|
-
return continuation(typePrefixVerifies, context);
|
|
108
|
+
context.debug(`...verified the '${cotypeDeclarationString}' cotype declaration's '${typeString}' type's prefix.`);
|
|
109
|
+
return forward(context, back);
|
|
114
110
|
}
|
|
115
|
-
verifySuperTypes(context,
|
|
111
|
+
verifySuperTypes(context, forward, back) {
|
|
116
112
|
const cotypeDeclarationString = this.getString(); ///
|
|
117
113
|
context.trace(`Verifying the '${cotypeDeclarationString}' cotype declaration's super-types...`);
|
|
114
|
+
const superTypesLength = this.superTypes.length;
|
|
115
|
+
if (superTypesLength === 0) {
|
|
116
|
+
const baseType = (0, _type.baseTypeFromNothing)(), superTyupe = baseType; ///
|
|
117
|
+
this.type.setSuperType(superTyupe);
|
|
118
|
+
return forward(context, back);
|
|
119
|
+
}
|
|
118
120
|
const superTypes = []; ///
|
|
119
|
-
return every(this.superTypes, (superType, context,
|
|
120
|
-
return this.verifySuperType(superType, superTypes, context,
|
|
121
|
-
}, context, (
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
superTypes.push(superTyupe);
|
|
127
|
-
}
|
|
128
|
-
this.type.setSuperTypes(superTypes);
|
|
129
|
-
context.debug(`...verified the '${cotypeDeclarationString}' cotype declaration's super-types.`);
|
|
130
|
-
}
|
|
131
|
-
return continuation(superTypesVerify, context);
|
|
132
|
-
});
|
|
121
|
+
return every(this.superTypes, (superType, context, forward, back)=>{
|
|
122
|
+
return this.verifySuperType(superType, superTypes, context, forward, back);
|
|
123
|
+
}, context, (context, back)=>{
|
|
124
|
+
this.type.setSuperTypes(superTypes);
|
|
125
|
+
context.debug(`...verified the '${cotypeDeclarationString}' cotype declaration's super-types.`);
|
|
126
|
+
return forward(context, back);
|
|
127
|
+
}, back);
|
|
133
128
|
}
|
|
134
|
-
verifySuperType(superType, superTypes, context,
|
|
135
|
-
let superTypeVerifies = false;
|
|
129
|
+
verifySuperType(superType, superTypes, context, forward, back) {
|
|
136
130
|
const superTypeString = superType.getString(), cotypeDeclarationString = this.getString(); ///
|
|
137
131
|
context.trace(`Verifying the '${cotypeDeclarationString}' cotype declaration's '${superTypeString}' super-type...`);
|
|
138
132
|
const nominalTypeName = superType.getNominalTypeName(), typeName = nominalTypeName, typeComparesToTypeName = this.type.compareTypeName(typeName);
|
|
139
|
-
if (
|
|
140
|
-
superType = context.findTypeByNominalTypeName(nominalTypeName);
|
|
141
|
-
if (superType !== null) {
|
|
142
|
-
superTypes.push(superType);
|
|
143
|
-
superTypeVerifies = true;
|
|
144
|
-
} else {
|
|
145
|
-
context.debug(`The '${superTypeString}' super-type is not present.`);
|
|
146
|
-
}
|
|
147
|
-
} else {
|
|
133
|
+
if (typeComparesToTypeName) {
|
|
148
134
|
context.debug(`The '${superTypeString}' super-type's name compares to the ${typeName}' type's name.`);
|
|
135
|
+
return back();
|
|
149
136
|
}
|
|
150
|
-
|
|
151
|
-
|
|
137
|
+
superType = context.findTypeByNominalTypeName(nominalTypeName);
|
|
138
|
+
if (superType === null) {
|
|
139
|
+
context.debug(`The '${superTypeString}' super-type is not present.`);
|
|
140
|
+
return back();
|
|
152
141
|
}
|
|
153
|
-
|
|
142
|
+
superTypes.push(superType);
|
|
143
|
+
context.debug(`...verified the '${cotypeDeclarationString}' cotype declaration's '${superTypeString}' super-type.`);
|
|
144
|
+
return forward(context, back);
|
|
154
145
|
}
|
|
155
|
-
verifyPropertyDeclaratisons(context,
|
|
146
|
+
verifyPropertyDeclaratisons(context, forward, back) {
|
|
156
147
|
const typeString = this.type.getString(), cotypeDeclarationString = this.getString(); ///
|
|
157
148
|
context.trace(`Verifying the '${cotypeDeclarationString}' cotype declaration's '${typeString}' type's property declarations...`);
|
|
158
|
-
return (0,
|
|
159
|
-
return
|
|
160
|
-
return
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
149
|
+
return (0, _continuation.isolate)((context, forward, back)=>{
|
|
150
|
+
return (0, _context.anticipate)((context)=>{
|
|
151
|
+
return every(this.propertyDeclarations, (propertyDeclaration, context, forward, back)=>{
|
|
152
|
+
return propertyDeclaration.verify(context, forward, back);
|
|
153
|
+
}, context, (context, back)=>{
|
|
154
|
+
return forward(back);
|
|
155
|
+
}, back);
|
|
156
|
+
}, this.type, context);
|
|
157
|
+
}, context, (context, back)=>{
|
|
158
|
+
context.debug(`...verified the '${cotypeDeclarationString}' cotype declaration's '${typeString}' type's property declarations.`);
|
|
159
|
+
return forward(context, back);
|
|
160
|
+
}, back);
|
|
168
161
|
}
|
|
169
162
|
static name = "CotypeDeclaration";
|
|
170
163
|
});
|
|
171
164
|
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL2NvdHlwZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYnJlYWtQb2ludFV0aWxpdGllcywgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgRGVjbGFyYXRpb24gZnJvbSBcIi4uL2RlY2xhcmF0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgYW50aWNpcGF0ZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgYmFzZVR5cGVGcm9tTm90aGluZyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvdHlwZVwiO1xuXG5jb25zdCB7IGJyZWFrYWJsZSB9ID0gYnJlYWtQb2ludFV0aWxpdGllcyxcbiAgICAgIHsgY3V0LCBhbGwsIGV2ZXJ5IH0gPSBjb250aW51YXRpb25VdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBDb3R5cGVEZWNsYXJhdGlvbiBleHRlbmRzIERlY2xhcmF0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0eXBlLCBzdXBlclR5cGVzLCBwcm92aXNpb25hbCwgcHJvcGVydHlEZWNsYXJhdGlvbnMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLnN1cGVyVHlwZXMgPSBzdXBlclR5cGVzO1xuICAgIHRoaXMucHJvdmlzaW9uYWwgPSBwcm92aXNpb25hbDtcbiAgICB0aGlzLnByb3BlcnR5RGVjbGFyYXRpb25zID0gcHJvcGVydHlEZWNsYXJhdGlvbnM7XG4gIH1cblxuICBnZXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRTdXBlclR5cGVzKCkge1xuICAgIHJldHVybiB0aGlzLnN1cGVyVHlwZXM7XG4gIH1cblxuICBpc1Byb3Zpc2lvbmFsKCkge1xuICAgIHJldHVybiB0aGlzLnByb3Zpc2lvbmFsO1xuICB9XG5cbiAgZ2V0UHJvcGVydHlEZWNsYXJhdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlEZWNsYXJhdGlvbnM7XG4gIH1cblxuICBnZXRDb3R5cGVEZWNsYXJhdGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvdHlwZURlY2xhcmF0aW9uTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIGNvdHlwZURlY2xhcmF0aW9uTm9kZTtcbiAgfVxuXG4gIGdldFByb3BlcnRpZXMoKSB7XG4gICAgY29uc3QgcHJvcGVydGllcyA9IHRoaXMucHJvcGVydHlEZWNsYXJhdGlvbnMubWFwKChwcm9wZXJ0eURlY2xhcmF0aW9uKSA9PiB7XG4gICAgICBjb25zdCBwcm9wZXJ0eSA9IHByb3BlcnR5RGVjbGFyYXRpb24uZ2V0UHJvcGVydHkoKTtcblxuICAgICAgcmV0dXJuIHByb3BlcnR5O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHByb3BlcnRpZXM7XG4gIH1cblxuICB2ZXJpZnkgPSBicmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IGNvdHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbi4uLmApO1xuXG4gICAgY29uc3QgdmVyaWZ5VHlwZSA9IHRoaXMudmVyaWZ5VHlwZS5iaW5kKHRoaXMpLFxuICAgICAgICAgIHZlcmlmeVN1cGVyVHlwZXMgPSB0aGlzLnZlcmlmeVN1cGVyVHlwZXMuYmluZCh0aGlzKSxcbiAgICAgICAgICB2ZXJpZnlUeXBlUHJlZml4ID0gdGhpcy52ZXJpZnlUeXBlUHJlZml4LmJpbmQodGhpcyksXG4gICAgICAgICAgdmVyaWZ5UHJvcGVydHlEZWNsYXJhdGlzb25zID0gdGhpcy52ZXJpZnlQcm9wZXJ0eURlY2xhcmF0aXNvbnMuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdmVyaWZ5VHlwZSxcbiAgICAgIHZlcmlmeVN1cGVyVHlwZXMsXG4gICAgICB2ZXJpZnlUeXBlUHJlZml4LFxuICAgICAgdmVyaWZ5UHJvcGVydHlEZWNsYXJhdGlzb25zXG4gICAgXSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLmdldFByb3BlcnRpZXMoKSxcbiAgICAgICAgICAgIHR5cGVQcmVmaXggPSBjb250ZXh0LmdldFR5cGVQcmVmaXgoKSxcbiAgICAgICAgICAgIHByZWZpeE5hbWUgPSAodHlwZVByZWZpeCAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZVByZWZpeC5nZXRQcmVmaXhOYW1lKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gICAgICB0aGlzLnR5cGUuc2V0UHJvdmlzaW9uYWwodGhpcy5wcm92aXNpb25hbCk7XG5cbiAgICAgIHRoaXMudHlwZS5zZXRQcm9wZXJ0aWVzKHByb3BlcnRpZXMpO1xuXG4gICAgICB0aGlzLnR5cGUuc2V0UHJlZml4TmFtZShwcmVmaXhOYW1lKTtcblxuICAgICAgY29udGV4dC5hZGRUeXBlKHRoaXMudHlwZSk7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmFibGUgdG8gdmVyaWZ5IHRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgdmVyaWZ5VHlwZShjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdHlwZVZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpLFxuICAgICAgICAgIGNvdHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvdHlwZURlY2xhcmF0aW9uU3RyaW5nfScgY290eXBlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGUuLi5gKTtcblxuICAgIGNvbnN0IHR5cGVOYW1lID0gdGhpcy50eXBlLmdldE5hbWUoKSxcbiAgICAgICAgICBpbmNsdWRlUmVsZWFzZSA9IGZhbHNlLFxuICAgICAgICAgIHR5cGVQcmVzZW50ID0gY29udGV4dC5pc1R5cGVQcmVzZW50QnlUeXBlTmFtZSh0eXBlTmFtZSwgaW5jbHVkZVJlbGVhc2UpO1xuXG4gICAgaWYgKCF0eXBlUHJlc2VudCkge1xuICAgICAgY29uc3QgcHJlZml4ZWRUeXBlTmFtZSA9IHR5cGVOYW1lLCAvLy9cbiAgICAgICAgICAgIHR5cGVQcmVzZW50ID0gY29udGV4dC5pc1R5cGVQcmVzZW50QnlQcmVmaXhlZFR5cGVOYW1lKHByZWZpeGVkVHlwZU5hbWUpO1xuXG4gICAgICBpZiAoIXR5cGVQcmVzZW50KSB7XG4gICAgICAgIHRoaXMudHlwZS5zZXRQcm92aXNpb25hbCh0aGlzLnByb3Zpc2lvbmFsKTtcblxuICAgICAgICB0eXBlVmVyaWZpZXMgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZVZlcmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y290eXBlRGVjbGFyYXRpb25TdHJpbmd9JyBjb3R5cGUgZGVjbGFyYXRpb24ncyAnJHt0eXBlU3RyaW5nfScgdHlwZWApO1xuICAgIH1cblxuICAgIHJldHVybiBjb250aW51YXRpb24odHlwZVZlcmlmaWVzICxjb250ZXh0KTtcbiAgfVxuXG4gIHZlcmlmeVR5cGVQcmVmaXgoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHR5cGVQcmVmaXhWZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgdHlwZVN0cmluZyA9IHRoaXMudHlwZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBjb3R5cGVEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlJ3MgcHJlZml4Li4uYCk7XG5cbiAgICBjb25zdCB0eXBlUHJlZml4ZWQgPSB0aGlzLnR5cGUuaXNQcmVmaXhlZCgpO1xuXG4gICAgaWYgKCF0eXBlUHJlZml4ZWQpIHtcbiAgICAgIHR5cGVQcmVmaXhWZXJpZmllcyA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIHByZWZpeGVkLmApO1xuICAgIH1cblxuICAgIGlmICh0eXBlUHJlZml4VmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlJ3MgcHJlZml4LmApO1xuICAgIH1cblxuICAgIHJldHVybiBjb250aW51YXRpb24odHlwZVByZWZpeFZlcmlmaWVzLCBjb250ZXh0KTtcbiAgfVxuXG4gIHZlcmlmeVN1cGVyVHlwZXMoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgY290eXBlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y290eXBlRGVjbGFyYXRpb25TdHJpbmd9JyBjb3R5cGUgZGVjbGFyYXRpb24ncyBzdXBlci10eXBlcy4uLmApO1xuXG4gICAgY29uc3Qgc3VwZXJUeXBlcyA9IFtdOyAvLy9cblxuICAgIHJldHVybiBldmVyeSh0aGlzLnN1cGVyVHlwZXMsIChzdXBlclR5cGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudmVyaWZ5U3VwZXJUeXBlKHN1cGVyVHlwZSwgc3VwZXJUeXBlcywgY29udGV4dCwgY29udGludWF0aW9uKTtcbiAgICB9LCBjb250ZXh0LCAoc3VwZXJUeXBlc1ZlcmlmeSwgY29udGV4dCkgPT4ge1xuICAgICAgaWYgKHN1cGVyVHlwZXNWZXJpZnkpIHtcbiAgICAgICAgY29uc3Qgc3VwZXJUeXBlc0xlbmd0aCA9IHN1cGVyVHlwZXMubGVuZ3RoO1xuXG4gICAgICAgIGlmIChzdXBlclR5cGVzTGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgY29uc3QgYmFzZVR5cGUgPSBiYXNlVHlwZUZyb21Ob3RoaW5nKCksXG4gICAgICAgICAgICBzdXBlclR5dXBlID0gYmFzZVR5cGU7ICAvLy9cblxuICAgICAgICAgIHN1cGVyVHlwZXMucHVzaChzdXBlclR5dXBlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudHlwZS5zZXRTdXBlclR5cGVzKHN1cGVyVHlwZXMpO1xuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbidzIHN1cGVyLXR5cGVzLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHN1cGVyVHlwZXNWZXJpZnksIGNvbnRleHQpO1xuICAgIH0pO1xuICB9XG5cbiAgdmVyaWZ5U3VwZXJUeXBlKHN1cGVyVHlwZSwgc3VwZXJUeXBlcywgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHN1cGVyVHlwZVZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBzdXBlclR5cGVTdHJpbmcgPSBzdXBlclR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICBjb3R5cGVEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbidzICcke3N1cGVyVHlwZVN0cmluZ30nIHN1cGVyLXR5cGUuLi5gKTtcblxuICAgIGNvbnN0IG5vbWluYWxUeXBlTmFtZSA9IHN1cGVyVHlwZS5nZXROb21pbmFsVHlwZU5hbWUoKSxcbiAgICAgIHR5cGVOYW1lID0gbm9taW5hbFR5cGVOYW1lLCAvLy9cbiAgICAgIHR5cGVDb21wYXJlc1RvVHlwZU5hbWUgPSB0aGlzLnR5cGUuY29tcGFyZVR5cGVOYW1lKHR5cGVOYW1lKTtcblxuICAgIGlmICghdHlwZUNvbXBhcmVzVG9UeXBlTmFtZSkge1xuICAgICAgc3VwZXJUeXBlID0gY29udGV4dC5maW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICAgIGlmIChzdXBlclR5cGUgIT09IG51bGwpIHtcbiAgICAgICAgc3VwZXJUeXBlcy5wdXNoKHN1cGVyVHlwZSk7XG5cbiAgICAgICAgc3VwZXJUeXBlVmVyaWZpZXMgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3N1cGVyVHlwZVN0cmluZ30nIHN1cGVyLXR5cGUgaXMgbm90IHByZXNlbnQuYCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtzdXBlclR5cGVTdHJpbmd9JyBzdXBlci10eXBlJ3MgbmFtZSBjb21wYXJlcyB0byB0aGUgJHt0eXBlTmFtZX0nIHR5cGUncyBuYW1lLmApO1xuICAgIH1cblxuICAgIGlmIChzdXBlclR5cGVWZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NvdHlwZURlY2xhcmF0aW9uU3RyaW5nfScgY290eXBlIGRlY2xhcmF0aW9uJ3MgJyR7c3VwZXJUeXBlU3RyaW5nfScgc3VwZXItdHlwZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGludWF0aW9uKHN1cGVyVHlwZVZlcmlmaWVzLCBjb250ZXh0KTtcbiAgfVxuXG4gIHZlcmlmeVByb3BlcnR5RGVjbGFyYXRpc29ucyhjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpLFxuICAgICAgICAgIGNvdHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvdHlwZURlY2xhcmF0aW9uU3RyaW5nfScgY290eXBlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGUncyBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMuLi5gKTtcblxuICAgIHJldHVybiBhbnRpY2lwYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gZXZlcnkodGhpcy5wcm9wZXJ0eURlY2xhcmF0aW9ucywgKHByb3BlcnR5RGVjbGFyYXRpb24sIGNvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgICByZXR1cm4gcHJvcGVydHlEZWNsYXJhdGlvbi52ZXJpZnkoY29udGV4dCwgY29udGludWF0aW9uKTtcbiAgICAgIH0sIGNvbnRleHQsIChwcm9wZXJ0eURlY2xhcmF0aW9uc1ZlcmlmeSwgY29udGV4dCkgPT4ge1xuICAgICAgICBpZiAocHJvcGVydHlEZWNsYXJhdGlvbnNWZXJpZnkpIHtcbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y290eXBlRGVjbGFyYXRpb25TdHJpbmd9JyBjb3R5cGUgZGVjbGFyYXRpb24ncyAnJHt0eXBlU3RyaW5nfScgdHlwZSdzIHByb3BlcnR5IGRlY2xhcmF0aW9ucy5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250aW51YXRpb24ocHJvcGVydHlEZWNsYXJhdGlvbnNWZXJpZnksIGNvbnRleHQpO1xuICAgICAgfSk7XG4gICAgfSwgdGhpcy50eXBlLCBjb250ZXh0KTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJDb3R5cGVEZWNsYXJhdGlvblwiO1xufSk7XG4iXSwibmFtZXMiOlsiYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImN1dCIsImFsbCIsImV2ZXJ5IiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiQ290eXBlRGVjbGFyYXRpb24iLCJEZWNsYXJhdGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInR5cGUiLCJzdXBlclR5cGVzIiwicHJvdmlzaW9uYWwiLCJwcm9wZXJ0eURlY2xhcmF0aW9ucyIsImdldFR5cGUiLCJnZXRTdXBlclR5cGVzIiwiaXNQcm92aXNpb25hbCIsImdldFByb3BlcnR5RGVjbGFyYXRpb25zIiwiZ2V0Q290eXBlRGVjbGFyYXRpb25Ob2RlIiwiZ2V0Tm9kZSIsImNvdHlwZURlY2xhcmF0aW9uTm9kZSIsImdldFByb3BlcnRpZXMiLCJwcm9wZXJ0aWVzIiwibWFwIiwicHJvcGVydHlEZWNsYXJhdGlvbiIsInByb3BlcnR5IiwiZ2V0UHJvcGVydHkiLCJ2ZXJpZnkiLCJmb3J3YXJkIiwiYmFjayIsImNvdHlwZURlY2xhcmF0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJ2ZXJpZnlUeXBlIiwiYmluZCIsInZlcmlmeVN1cGVyVHlwZXMiLCJ2ZXJpZnlUeXBlUHJlZml4IiwidmVyaWZ5UHJvcGVydHlEZWNsYXJhdGlzb25zIiwidHlwZVByZWZpeCIsImdldFR5cGVQcmVmaXgiLCJwcmVmaXhOYW1lIiwiZ2V0UHJlZml4TmFtZSIsInNldFByb3Zpc2lvbmFsIiwic2V0UHJvcGVydGllcyIsInNldFByZWZpeE5hbWUiLCJhZGRUeXBlIiwiZGVidWciLCJleGNlcHRpb24iLCJjb250aW51YXRpb24iLCJ0eXBlVmVyaWZpZXMiLCJ0eXBlU3RyaW5nIiwidHlwZU5hbWUiLCJnZXROYW1lIiwiaW5jbHVkZVJlbGVhc2UiLCJ0eXBlUHJlc2VudCIsImlzVHlwZVByZXNlbnRCeVR5cGVOYW1lIiwicHJlZml4ZWRUeXBlTmFtZSIsImlzVHlwZVByZXNlbnRCeVByZWZpeGVkVHlwZU5hbWUiLCJ0eXBlUHJlZml4VmVyaWZpZXMiLCJ0eXBlUHJlZml4ZWQiLCJpc1ByZWZpeGVkIiwic3VwZXJUeXBlIiwidmVyaWZ5U3VwZXJUeXBlIiwic3VwZXJUeXBlc1ZlcmlmeSIsInN1cGVyVHlwZXNMZW5ndGgiLCJsZW5ndGgiLCJiYXNlVHlwZSIsImJhc2VUeXBlRnJvbU5vdGhpbmciLCJzdXBlclR5dXBlIiwicHVzaCIsInNldFN1cGVyVHlwZXMiLCJzdXBlclR5cGVWZXJpZmllcyIsInN1cGVyVHlwZVN0cmluZyIsIm5vbWluYWxUeXBlTmFtZSIsImdldE5vbWluYWxUeXBlTmFtZSIsInR5cGVDb21wYXJlc1RvVHlwZU5hbWUiLCJjb21wYXJlVHlwZU5hbWUiLCJmaW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lIiwiYW50aWNpcGF0ZSIsInByb3BlcnR5RGVjbGFyYXRpb25zVmVyaWZ5IiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBYUE7OztlQUFBOzs7Z0NBWDJEO29FQUVuQzswQkFFRDt5QkFDSTtzQkFDUzs7Ozs7O0FBRXBDLE1BQU0sRUFBRUEsU0FBUyxFQUFFLEdBQUdDLG1DQUFtQixFQUNuQyxFQUFFQyxHQUFHLEVBQUVDLEdBQUcsRUFBRUMsS0FBSyxFQUFFLEdBQUdDLHFDQUFxQjtNQUVqRCxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLDBCQUEwQkMsb0JBQVc7SUFDL0QsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsV0FBVyxFQUFFQyxvQkFBb0IsQ0FBRTtRQUNsRyxLQUFLLENBQUNQLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtRQUNsQixJQUFJLENBQUNDLFdBQVcsR0FBR0E7UUFDbkIsSUFBSSxDQUFDQyxvQkFBb0IsR0FBR0E7SUFDOUI7SUFFQUMsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDSixJQUFJO0lBQ2xCO0lBRUFLLGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDSixVQUFVO0lBQ3hCO0lBRUFLLGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDSixXQUFXO0lBQ3pCO0lBRUFLLDBCQUEwQjtRQUN4QixPQUFPLElBQUksQ0FBQ0osb0JBQW9CO0lBQ2xDO0lB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
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL2NvdHlwZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYnJlYWtQb2ludFV0aWxpdGllcywgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgRGVjbGFyYXRpb24gZnJvbSBcIi4uL2RlY2xhcmF0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgYW50aWNpcGF0ZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgYmFzZVR5cGVGcm9tTm90aGluZyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvdHlwZVwiO1xuaW1wb3J0IHtpc29sYXRlfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzL2xpYi91dGlsaXRpZXMvY29udGludWF0aW9uXCI7XG5cbmNvbnN0IHsgYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBjdXQsIGFsbCwgZXZlcnksIGlzb2xhdGUgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIENvdHlwZURlY2xhcmF0aW9uIGV4dGVuZHMgRGVjbGFyYXRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHR5cGUsIHN1cGVyVHlwZXMsIHByb3Zpc2lvbmFsLCBwcm9wZXJ0eURlY2xhcmF0aW9ucykge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMuc3VwZXJUeXBlcyA9IHN1cGVyVHlwZXM7XG4gICAgdGhpcy5wcm92aXNpb25hbCA9IHByb3Zpc2lvbmFsO1xuICAgIHRoaXMucHJvcGVydHlEZWNsYXJhdGlvbnMgPSBwcm9wZXJ0eURlY2xhcmF0aW9ucztcbiAgfVxuXG4gIGdldFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZTtcbiAgfVxuXG4gIGdldFN1cGVyVHlwZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3VwZXJUeXBlcztcbiAgfVxuXG4gIGlzUHJvdmlzaW9uYWwoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvdmlzaW9uYWw7XG4gIH1cblxuICBnZXRQcm9wZXJ0eURlY2xhcmF0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wZXJ0eURlY2xhcmF0aW9ucztcbiAgfVxuXG4gIGdldENvdHlwZURlY2xhcmF0aW9uTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgY290eXBlRGVjbGFyYXRpb25Ob2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gY290eXBlRGVjbGFyYXRpb25Ob2RlO1xuICB9XG5cbiAgZ2V0UHJvcGVydGllcygpIHtcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5wcm9wZXJ0eURlY2xhcmF0aW9ucy5tYXAoKHByb3BlcnR5RGVjbGFyYXRpb24pID0+IHtcbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gcHJvcGVydHlEZWNsYXJhdGlvbi5nZXRQcm9wZXJ0eSgpO1xuXG4gICAgICByZXR1cm4gcHJvcGVydHk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcHJvcGVydGllcztcbiAgfVxuXG4gIHZlcmlmeSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3QgY290eXBlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvdHlwZURlY2xhcmF0aW9uU3RyaW5nfScgY290eXBlIGRlY2xhcmF0aW9uLi4uYCk7XG5cbiAgICBjb25zdCB2ZXJpZnlUeXBlID0gdGhpcy52ZXJpZnlUeXBlLmJpbmQodGhpcyksXG4gICAgICAgICAgdmVyaWZ5U3VwZXJUeXBlcyA9IHRoaXMudmVyaWZ5U3VwZXJUeXBlcy5iaW5kKHRoaXMpLFxuICAgICAgICAgIHZlcmlmeVR5cGVQcmVmaXggPSB0aGlzLnZlcmlmeVR5cGVQcmVmaXguYmluZCh0aGlzKSxcbiAgICAgICAgICB2ZXJpZnlQcm9wZXJ0eURlY2xhcmF0aXNvbnMgPSB0aGlzLnZlcmlmeVByb3BlcnR5RGVjbGFyYXRpc29ucy5iaW5kKHRoaXMpO1xuXG4gICAgcmV0dXJuIGFsbChbXG4gICAgICB2ZXJpZnlUeXBlLFxuICAgICAgdmVyaWZ5U3VwZXJUeXBlcyxcbiAgICAgIHZlcmlmeVR5cGVQcmVmaXgsXG4gICAgICB2ZXJpZnlQcm9wZXJ0eURlY2xhcmF0aXNvbnNcbiAgICBdLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgcHJvcGVydGllcyA9IHRoaXMuZ2V0UHJvcGVydGllcygpLFxuICAgICAgICAgICAgdHlwZVByZWZpeCA9IGNvbnRleHQuZ2V0VHlwZVByZWZpeCgpLFxuICAgICAgICAgICAgcHJlZml4TmFtZSA9ICh0eXBlUHJlZml4ICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlUHJlZml4LmdldFByZWZpeE5hbWUoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgICAgIHRoaXMudHlwZS5zZXRQcm92aXNpb25hbCh0aGlzLnByb3Zpc2lvbmFsKTtcblxuICAgICAgdGhpcy50eXBlLnNldFByb3BlcnRpZXMocHJvcGVydGllcyk7XG5cbiAgICAgIHRoaXMudHlwZS5zZXRQcmVmaXhOYW1lKHByZWZpeE5hbWUpO1xuXG4gICAgICBjb250ZXh0LmFkZFR5cGUodGhpcy50eXBlKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NvdHlwZURlY2xhcmF0aW9uU3RyaW5nfScgY290eXBlIGRlY2xhcmF0aW9uLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCAoZXhjZXB0aW9uKSA9PiB7XG4gICAgICBpZiAoZXhjZXB0aW9uKSB7XG4gICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke2NvdHlwZURlY2xhcmF0aW9uU3RyaW5nfScgY290eXBlIGRlY2xhcmF0aW9uLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH0pO1xuICB9KTtcblxuICB2ZXJpZnlUeXBlKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpLFxuICAgICAgICAgIGNvdHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvdHlwZURlY2xhcmF0aW9uU3RyaW5nfScgY290eXBlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGUuLi5gKTtcblxuICAgIGxldCB0eXBlUHJlc2VudDtcblxuICAgIGNvbnN0IHR5cGVOYW1lID0gdGhpcy50eXBlLmdldE5hbWUoKSxcbiAgICAgICAgICBpbmNsdWRlUmVsZWFzZSA9IGZhbHNlO1xuXG4gICAgdHlwZVByZXNlbnQgPSBjb250ZXh0LmlzVHlwZVByZXNlbnRCeVR5cGVOYW1lKHR5cGVOYW1lLCBpbmNsdWRlUmVsZWFzZSk7XG5cbiAgICBpZiAodHlwZVByZXNlbnQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgcHJlZml4ZWRUeXBlTmFtZSA9IHR5cGVOYW1lOyAvLy9cblxuICAgIHR5cGVQcmVzZW50ID0gY29udGV4dC5pc1R5cGVQcmVzZW50QnlQcmVmaXhlZFR5cGVOYW1lKHByZWZpeGVkVHlwZU5hbWUpO1xuXG4gICAgaWYgKHR5cGVQcmVzZW50KSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIHRoaXMudHlwZS5zZXRQcm92aXNpb25hbCh0aGlzLnByb3Zpc2lvbmFsKTtcblxuICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlYCk7XG5cbiAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgfVxuXG4gIHZlcmlmeVR5cGVQcmVmaXgoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHR5cGVTdHJpbmcgPSB0aGlzLnR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgY290eXBlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y290eXBlRGVjbGFyYXRpb25TdHJpbmd9JyBjb3R5cGUgZGVjbGFyYXRpb24ncyAnJHt0eXBlU3RyaW5nfScgdHlwZSdzIHByZWZpeC4uLmApO1xuXG4gICAgY29uc3QgdHlwZVByZWZpeGVkID0gdGhpcy50eXBlLmlzUHJlZml4ZWQoKTtcblxuICAgIGlmICh0eXBlUHJlZml4ZWQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIHByZWZpeGVkLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlJ3MgcHJlZml4LmApO1xuXG4gICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gIH1cblxuICB2ZXJpZnlTdXBlclR5cGVzKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb3R5cGVEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbidzIHN1cGVyLXR5cGVzLi4uYCk7XG5cbiAgICBjb25zdCBzdXBlclR5cGVzTGVuZ3RoID0gdGhpcy5zdXBlclR5cGVzLmxlbmd0aDtcblxuICAgIGlmIChzdXBlclR5cGVzTGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCBiYXNlVHlwZSA9IGJhc2VUeXBlRnJvbU5vdGhpbmcoKSxcbiAgICAgICAgc3VwZXJUeXVwZSA9IGJhc2VUeXBlOyAgLy8vXG5cbiAgICAgIHRoaXMudHlwZS5zZXRTdXBlclR5cGUoc3VwZXJUeXVwZSk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IHN1cGVyVHlwZXMgPSBbXTsgLy8vXG5cbiAgICByZXR1cm4gZXZlcnkodGhpcy5zdXBlclR5cGVzLCAoc3VwZXJUeXBlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy52ZXJpZnlTdXBlclR5cGUoc3VwZXJUeXBlLCBzdXBlclR5cGVzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgICB9LCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy50eXBlLnNldFN1cGVyVHlwZXMoc3VwZXJUeXBlcyk7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb3R5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvdHlwZSBkZWNsYXJhdGlvbidzIHN1cGVyLXR5cGVzLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZlcmlmeVN1cGVyVHlwZShzdXBlclR5cGUsIHN1cGVyVHlwZXMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzdXBlclR5cGVTdHJpbmcgPSBzdXBlclR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgY290eXBlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y290eXBlRGVjbGFyYXRpb25TdHJpbmd9JyBjb3R5cGUgZGVjbGFyYXRpb24ncyAnJHtzdXBlclR5cGVTdHJpbmd9JyBzdXBlci10eXBlLi4uYCk7XG5cbiAgICBjb25zdCBub21pbmFsVHlwZU5hbWUgPSBzdXBlclR5cGUuZ2V0Tm9taW5hbFR5cGVOYW1lKCksXG4gICAgICAgICAgdHlwZU5hbWUgPSBub21pbmFsVHlwZU5hbWUsIC8vL1xuICAgICAgICAgIHR5cGVDb21wYXJlc1RvVHlwZU5hbWUgPSB0aGlzLnR5cGUuY29tcGFyZVR5cGVOYW1lKHR5cGVOYW1lKTtcblxuICAgIGlmICh0eXBlQ29tcGFyZXNUb1R5cGVOYW1lKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7c3VwZXJUeXBlU3RyaW5nfScgc3VwZXItdHlwZSdzIG5hbWUgY29tcGFyZXMgdG8gdGhlICR7dHlwZU5hbWV9JyB0eXBlJ3MgbmFtZS5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBzdXBlclR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKTtcblxuICAgIGlmIChzdXBlclR5cGUgPT09IG51bGwpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtzdXBlclR5cGVTdHJpbmd9JyBzdXBlci10eXBlIGlzIG5vdCBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIHN1cGVyVHlwZXMucHVzaChzdXBlclR5cGUpO1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NvdHlwZURlY2xhcmF0aW9uU3RyaW5nfScgY290eXBlIGRlY2xhcmF0aW9uJ3MgJyR7c3VwZXJUeXBlU3RyaW5nfScgc3VwZXItdHlwZS5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICB9XG5cbiAgdmVyaWZ5UHJvcGVydHlEZWNsYXJhdGlzb25zKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpLFxuICAgICAgICAgIGNvdHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvdHlwZURlY2xhcmF0aW9uU3RyaW5nfScgY290eXBlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGUncyBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMuLi5gKTtcblxuICAgIHJldHVybiBpc29sYXRlKChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gYW50aWNpcGF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgICByZXR1cm4gZXZlcnkodGhpcy5wcm9wZXJ0eURlY2xhcmF0aW9ucywgKHByb3BlcnR5RGVjbGFyYXRpb24sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgICAgICByZXR1cm4gcHJvcGVydHlEZWNsYXJhdGlvbi52ZXJpZnkoY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgICAgIH0sIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgdGhpcy50eXBlLCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NvdHlwZURlY2xhcmF0aW9uU3RyaW5nfScgY290eXBlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGUncyBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkNvdHlwZURlY2xhcmF0aW9uXCI7XG59KTtcbiJdLCJuYW1lcyI6WyJicmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiY3V0IiwiYWxsIiwiZXZlcnkiLCJpc29sYXRlIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiQ290eXBlRGVjbGFyYXRpb24iLCJEZWNsYXJhdGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInR5cGUiLCJzdXBlclR5cGVzIiwicHJvdmlzaW9uYWwiLCJwcm9wZXJ0eURlY2xhcmF0aW9ucyIsImdldFR5cGUiLCJnZXRTdXBlclR5cGVzIiwiaXNQcm92aXNpb25hbCIsImdldFByb3BlcnR5RGVjbGFyYXRpb25zIiwiZ2V0Q290eXBlRGVjbGFyYXRpb25Ob2RlIiwiZ2V0Tm9kZSIsImNvdHlwZURlY2xhcmF0aW9uTm9kZSIsImdldFByb3BlcnRpZXMiLCJwcm9wZXJ0aWVzIiwibWFwIiwicHJvcGVydHlEZWNsYXJhdGlvbiIsInByb3BlcnR5IiwiZ2V0UHJvcGVydHkiLCJ2ZXJpZnkiLCJmb3J3YXJkIiwiYmFjayIsImNvdHlwZURlY2xhcmF0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJ2ZXJpZnlUeXBlIiwiYmluZCIsInZlcmlmeVN1cGVyVHlwZXMiLCJ2ZXJpZnlUeXBlUHJlZml4IiwidmVyaWZ5UHJvcGVydHlEZWNsYXJhdGlzb25zIiwidHlwZVByZWZpeCIsImdldFR5cGVQcmVmaXgiLCJwcmVmaXhOYW1lIiwiZ2V0UHJlZml4TmFtZSIsInNldFByb3Zpc2lvbmFsIiwic2V0UHJvcGVydGllcyIsInNldFByZWZpeE5hbWUiLCJhZGRUeXBlIiwiZGVidWciLCJleGNlcHRpb24iLCJ0eXBlU3RyaW5nIiwidHlwZVByZXNlbnQiLCJ0eXBlTmFtZSIsImdldE5hbWUiLCJpbmNsdWRlUmVsZWFzZSIsImlzVHlwZVByZXNlbnRCeVR5cGVOYW1lIiwicHJlZml4ZWRUeXBlTmFtZSIsImlzVHlwZVByZXNlbnRCeVByZWZpeGVkVHlwZU5hbWUiLCJ0eXBlUHJlZml4ZWQiLCJpc1ByZWZpeGVkIiwic3VwZXJUeXBlc0xlbmd0aCIsImxlbmd0aCIsImJhc2VUeXBlIiwiYmFzZVR5cGVGcm9tTm90aGluZyIsInN1cGVyVHl1cGUiLCJzZXRTdXBlclR5cGUiLCJzdXBlclR5cGUiLCJ2ZXJpZnlTdXBlclR5cGUiLCJzZXRTdXBlclR5cGVzIiwic3VwZXJUeXBlU3RyaW5nIiwibm9taW5hbFR5cGVOYW1lIiwiZ2V0Tm9taW5hbFR5cGVOYW1lIiwidHlwZUNvbXBhcmVzVG9UeXBlTmFtZSIsImNvbXBhcmVUeXBlTmFtZSIsImZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUiLCJwdXNoIiwiYW50aWNpcGF0ZSIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWNBOzs7ZUFBQTs7O2dDQVoyRDtvRUFFbkM7MEJBRUQ7eUJBQ0k7c0JBQ1M7OEJBQ2Q7Ozs7OztB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
|