occam-nominal 1.0.409 → 1.0.417
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/subproof.js +17 -54
- package/lib/element/assumption/implicit.js +44 -60
- package/lib/element/binding/assumption.js +145 -0
- package/lib/element/binding/goal.js +145 -0
- package/lib/element/binding.js +180 -0
- package/lib/element/constraint.js +53 -13
- package/lib/element/frame.js +19 -7
- package/lib/element/judgement.js +29 -28
- package/lib/element/label.js +22 -17
- package/lib/element/schema.js +87 -143
- package/lib/element/substitution/frame.js +15 -15
- package/lib/element/substitution/reference.js +19 -26
- package/lib/element/substitution/statement.js +2 -2
- package/lib/element/substitution/term.js +15 -15
- package/lib/element/substitution.js +4 -1
- package/lib/node/binding/assumption.js +23 -0
- package/lib/node/binding/goal.js +23 -0
- package/lib/node/binding.js +27 -0
- package/lib/nonTerminalNodeMap.js +3 -3
- package/lib/preamble.js +3 -3
- package/lib/process/unification.js +11 -37
- package/lib/process/unify.js +1 -1
- package/lib/utilities/context.js +1 -16
- package/lib/utilities/continuation.js +18 -1
- package/package.json +5 -5
- package/src/element/assertion/subproof.js +18 -84
- package/src/element/assumption/implicit.js +51 -73
- package/src/element/binding/assumption.js +207 -0
- package/src/element/binding/goal.js +207 -0
- package/src/element/binding.js +265 -0
- package/src/element/constraint.js +76 -17
- package/src/element/frame.js +26 -7
- package/src/element/judgement.js +29 -41
- package/src/element/label.js +21 -15
- package/src/element/schema.js +99 -132
- package/src/element/substitution/frame.js +15 -19
- package/src/element/substitution/reference.js +18 -32
- package/src/element/substitution/statement.js +1 -1
- package/src/element/substitution/term.js +24 -19
- package/src/element/substitution.js +6 -0
- package/src/node/binding/assumption.js +7 -0
- package/src/node/binding/goal.js +7 -0
- package/src/node/{goal.js → binding.js} +2 -2
- package/src/nonTerminalNodeMap.js +2 -2
- package/src/preamble.js +2 -2
- package/src/process/unification.js +12 -52
- package/src/process/unify.js +1 -1
- package/src/utilities/context.js +1 -19
- package/src/utilities/continuation.js +23 -0
- package/lib/element/assumption.js +0 -310
- package/lib/element/goal.js +0 -307
- package/lib/node/assumption.js +0 -27
- package/lib/node/goal.js +0 -27
- package/src/element/assumption.js +0 -403
- package/src/element/goal.js +0 -397
- package/src/node/assumption.js +0 -23
|
@@ -35,10 +35,6 @@ const _default = (0, _elements.define)(class SubproofAssertion extends _assertio
|
|
|
35
35
|
const lastStatement = last(this.statements), deducedStatement = lastStatement; ///
|
|
36
36
|
return deducedStatement;
|
|
37
37
|
}
|
|
38
|
-
getSupposedStatement(index) {
|
|
39
|
-
const statement = this.statements[index], supposedStatement = statement; ///
|
|
40
|
-
return supposedStatement;
|
|
41
|
-
}
|
|
42
38
|
getSupposedStatements() {
|
|
43
39
|
const frontStatements = front(this.statements), supposedStatements = frontStatements; ///
|
|
44
40
|
return supposedStatements;
|
|
@@ -49,14 +45,14 @@ const _default = (0, _elements.define)(class SubproofAssertion extends _assertio
|
|
|
49
45
|
}
|
|
50
46
|
validate(state, context, continuation) {
|
|
51
47
|
let validates;
|
|
52
|
-
const
|
|
53
|
-
context.trace(`Validating the '${
|
|
48
|
+
const subproofAssertionString = this.getString(); ///
|
|
49
|
+
context.trace(`Validating the '${subproofAssertionString}' subproof assertion...`);
|
|
54
50
|
let assertion;
|
|
55
51
|
assertion = this.findAssertion(context);
|
|
56
52
|
if (assertion !== null) {
|
|
57
|
-
const
|
|
58
|
-
context.debug(`The '${
|
|
59
|
-
validates = continuation(
|
|
53
|
+
const subproofAssertion = assertion; ///
|
|
54
|
+
context.debug(`The '${subproofAssertionString}' subproof assertion is already present.`);
|
|
55
|
+
validates = continuation(subproofAssertion, context);
|
|
60
56
|
} else {
|
|
61
57
|
assertion = this; ///
|
|
62
58
|
const validateStatements = this.validateStatements.bind(this);
|
|
@@ -71,15 +67,15 @@ const _default = (0, _elements.define)(class SubproofAssertion extends _assertio
|
|
|
71
67
|
], state, context, (state, context)=>{
|
|
72
68
|
let validates;
|
|
73
69
|
context.addAssertion(assertion);
|
|
74
|
-
const
|
|
75
|
-
validates = continuation(
|
|
70
|
+
const subproofAssertion = assertion; ///
|
|
71
|
+
validates = continuation(subproofAssertion, context);
|
|
76
72
|
return validates;
|
|
77
73
|
});
|
|
78
74
|
return validates;
|
|
79
75
|
});
|
|
80
76
|
}
|
|
81
77
|
if (validates) {
|
|
82
|
-
context.debug(`...validated the '${
|
|
78
|
+
context.debug(`...validated the '${subproofAssertionString}' subproof assertion.`);
|
|
83
79
|
}
|
|
84
80
|
return validates;
|
|
85
81
|
}
|
|
@@ -134,22 +130,6 @@ const _default = (0, _elements.define)(class SubproofAssertion extends _assertio
|
|
|
134
130
|
}
|
|
135
131
|
return validatesWhenDerived;
|
|
136
132
|
}
|
|
137
|
-
unifySchema(schema, generalContext, specificContext) {
|
|
138
|
-
let schemaUnifies = false;
|
|
139
|
-
const context = specificContext, schemaString = schema.getString(), subproofAssertionString = this.getString();
|
|
140
|
-
context.trace(`Unifying the '${schemaString}' schema with the '${subproofAssertionString}' subproof assertion...`);
|
|
141
|
-
const deduction = schema.getDeduction(), deductionUnifies = this.unifyDeduction(deduction, generalContext, specificContext);
|
|
142
|
-
if (deductionUnifies) {
|
|
143
|
-
const suppositions = schema.getSuppositions(), suppositionsUnify = this.unifySuppositions(suppositions, generalContext, specificContext);
|
|
144
|
-
if (suppositionsUnify) {
|
|
145
|
-
schemaUnifies = true;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
if (schemaUnifies) {
|
|
149
|
-
context.debug(`...unified the '${schemaString}' schema with the '${subproofAssertionString}' subproof assertion.`);
|
|
150
|
-
}
|
|
151
|
-
return schemaUnifies;
|
|
152
|
-
}
|
|
153
133
|
unifySubproof(subproof, generalContext, specificContext, continuation) {
|
|
154
134
|
const context = specificContext, subproofString = subproof.getString(), subproofAssertionString = this.getString(); ///
|
|
155
135
|
context.trace(`Unifying the '${subproofString}' subproof with the '${subproofAssertionString}' subproof assertion...`);
|
|
@@ -182,8 +162,8 @@ const _default = (0, _elements.define)(class SubproofAssertion extends _assertio
|
|
|
182
162
|
return deducedStatement.unifyStatement(lastStepStatement, generalContext, specificContext, (lastStepStatementUnifies)=>{
|
|
183
163
|
let lastStepUnifies = false;
|
|
184
164
|
if (lastStepStatementUnifies) {
|
|
185
|
-
lastStepUnifies = true;
|
|
186
165
|
specificContext.commit(context);
|
|
166
|
+
lastStepUnifies = true;
|
|
187
167
|
}
|
|
188
168
|
if (lastStepUnifies) {
|
|
189
169
|
context.debug(`...unified the '${lastStepString}' last step with the '${deducedStatementString}' deduced statement.`);
|
|
@@ -193,26 +173,8 @@ const _default = (0, _elements.define)(class SubproofAssertion extends _assertio
|
|
|
193
173
|
}, specificContext);
|
|
194
174
|
}, specificContext, context);
|
|
195
175
|
}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
const context = specificContext, deductionString = deduction.getString(), deducedStatement = this.getDeducedStatement(), deducedStatementString = deducedStatement.getString();
|
|
199
|
-
context.trace(`Unifying the '${deductionString}' deduction with the '${deducedStatementString}' deduced statement...`);
|
|
200
|
-
const deductionContext = deduction.getContext();
|
|
201
|
-
specificContext = deductionContext; ///
|
|
202
|
-
return (0, _context.reconcile)((specificContext)=>{
|
|
203
|
-
const deductionStatement = deduction.getStatement(), deductionStatementUnifies = deducedStatement.unifyStatement(deductionStatement, generalContext, specificContext);
|
|
204
|
-
if (deductionStatementUnifies) {
|
|
205
|
-
deductionUnifies = true;
|
|
206
|
-
specificContext.commit(context);
|
|
207
|
-
}
|
|
208
|
-
}, specificContext);
|
|
209
|
-
if (deductionUnifies) {
|
|
210
|
-
context.debug(`...unified the '${deductionString}' deduction with the '${deducedStatementString}' deduced statement.`);
|
|
211
|
-
}
|
|
212
|
-
return deductionUnifies;
|
|
213
|
-
}
|
|
214
|
-
unifySupposition(supposition, index, generalContext, specificContext, continuation) {
|
|
215
|
-
const context = specificContext, supposedStatement = this.getSupposedStatement(index), suppositionString = supposition.getString(), supposedStatementString = supposedStatement.getString();
|
|
176
|
+
unifySupposition(supposition, supposedStatement, generalContext, specificContext, continuation) {
|
|
177
|
+
const context = specificContext, suppositionString = supposition.getString(), supposedStatementString = supposedStatement.getString();
|
|
216
178
|
context.trace(`Unifying the '${suppositionString}' supposition with the '${supposedStatementString}' supposed statement...`);
|
|
217
179
|
const suppositionContext = supposition.getContext();
|
|
218
180
|
specificContext = suppositionContext; ///
|
|
@@ -222,8 +184,8 @@ const _default = (0, _elements.define)(class SubproofAssertion extends _assertio
|
|
|
222
184
|
return supposedStatement.unifyStatement(suppositionStatement, generalContext, specificContext, (suppositionStatementUnifies)=>{
|
|
223
185
|
let suppositionUnifies = false;
|
|
224
186
|
if (suppositionStatementUnifies) {
|
|
225
|
-
suppositionUnifies = true;
|
|
226
187
|
specificContext.commit(context);
|
|
188
|
+
suppositionUnifies = true;
|
|
227
189
|
}
|
|
228
190
|
if (suppositionUnifies) {
|
|
229
191
|
context.debug(`...unified the '${suppositionString}' supposition with the '${supposedStatementString}' supposed statement.`);
|
|
@@ -239,10 +201,11 @@ const _default = (0, _elements.define)(class SubproofAssertion extends _assertio
|
|
|
239
201
|
const suppositionsUnify = false;
|
|
240
202
|
return continuation(suppositionsUnify);
|
|
241
203
|
}
|
|
242
|
-
let index =
|
|
204
|
+
let index = suppositionsLength; ///
|
|
243
205
|
return asynchronousBackwardsEvery(suppositions, (supposition, continuation)=>{
|
|
244
|
-
index
|
|
245
|
-
|
|
206
|
+
index--;
|
|
207
|
+
const supposedStatement = supposedStatements[index];
|
|
208
|
+
return this.unifySupposition(supposition, supposedStatement, generalContext, specificContext, continuation);
|
|
246
209
|
}, continuation);
|
|
247
210
|
}
|
|
248
211
|
static name = "SubproofAssertion";
|
|
@@ -271,4 +234,4 @@ function statementsFromSubproofAssertionNode(subproofAssertionNode, context) {
|
|
|
271
234
|
return statements;
|
|
272
235
|
}
|
|
273
236
|
|
|
274
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zdWJwcm9vZi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGFsbCwgZXZlcnksIGV4aXN0cyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGludWF0aW9uXCI7XG5pbXBvcnQgeyBqb2luLCByZWNvbmNpbGUsIGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZVN1YnByb29mQXNzZXJ0aW9uIH0gZnJvbSBcIi4uLy4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IGRlY2xhcmUsIGlzRGVyaXZlZCwgaXNEZWNsYXJlZCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7IHN1YnByb29mQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcblxuY29uc3QgeyBsYXN0LCBmcm9udCB9ID0gYXJyYXlVdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrUG9pbnRGcm9tSlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcyxcbiAgICAgIHsgYXN5bmNocm9ub3VzQmFja3dhcmRzRXZlcnkgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFN1YnByb29mQXNzZXJ0aW9uIGV4dGVuZHMgQXNzZXJ0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBzdGF0ZW1lbnRzKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMuc3RhdGVtZW50cyA9IHN0YXRlbWVudHM7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnRzKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudHM7XG4gIH1cblxuICBnZXREZWR1Y2VkU3RhdGVtZW50KCkge1xuICAgIGNvbnN0IGxhc3RTdGF0ZW1lbnQgPSBsYXN0KHRoaXMuc3RhdGVtZW50cyksXG4gICAgICAgICAgZGVkdWNlZFN0YXRlbWVudCA9IGxhc3RTdGF0ZW1lbnQ7IC8vL1xuXG4gICAgcmV0dXJuIGRlZHVjZWRTdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRTdXBwb3NlZFN0YXRlbWVudChpbmRleCkge1xuICAgIGNvbnN0IHN0YXRlbWVudCA9IHRoaXMuc3RhdGVtZW50c1tpbmRleF0sXG4gICAgICAgICAgc3VwcG9zZWRTdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7ICAvLy9cblxuICAgIHJldHVybiBzdXBwb3NlZFN0YXRlbWVudDtcbiAgfVxuXG4gIGdldFN1cHBvc2VkU3RhdGVtZW50cygpIHtcbiAgICBjb25zdCBmcm9udFN0YXRlbWVudHMgPSBmcm9udCh0aGlzLnN0YXRlbWVudHMpLFxuICAgICAgICAgIHN1cHBvc2VkU3RhdGVtZW50cyA9IGZyb250U3RhdGVtZW50czsgIC8vL1xuXG4gICAgcmV0dXJuIHN1cHBvc2VkU3RhdGVtZW50cztcbiAgfVxuXG4gIGdldFN1YnByb29mQXNzZXJ0aW9uTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgc3VicHJvb2ZBc3NlcnRpb25Ob2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gc3VicHJvb2ZBc3NlcnRpb25Ob2RlO1xuICB9XG5cbiAgdmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICBjb25zdCBzdWJwcnBvb2ZBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzdWJwcnBvb2ZBc3NlcnRpb25TdHJpbmd9JyBzdWJwcnBvb2YgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBsZXQgYXNzZXJ0aW9uO1xuXG4gICAgYXNzZXJ0aW9uID0gdGhpcy5maW5kQXNzZXJ0aW9uKGNvbnRleHQpO1xuXG4gICAgaWYgKGFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3VicHJwb29mQXNzZXJ0aW9uID0gYXNzZXJ0aW9uOyAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3N1YnBycG9vZkFzc2VydGlvblN0cmluZ30nIHN1YnBycG9vZiBhc3NlcnRpb24gaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3VicHJwb29mQXNzZXJ0aW9uLCBjb250ZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0aW9uID0gdGhpczsgLy8vXG5cbiAgICAgIGNvbnN0IHZhbGlkYXRlU3RhdGVtZW50cyA9IHRoaXMudmFsaWRhdGVTdGF0ZW1lbnRzLmJpbmQodGhpcyk7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGFsbChbXG4gICAgICAgIHZhbGlkYXRlU3RhdGVtZW50c1xuICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICAgIGNvbnN0IHZhbGlkYXRlV2hlbkRlY2xhcmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZWNsYXJlZC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZXJpdmVkLmJpbmQodGhpcyk7XG5cbiAgICAgICAgdmFsaWRhdGVzID0gZXhpc3RzKFtcbiAgICAgICAgICB2YWxpZGF0ZVdoZW5EZWNsYXJlZCxcbiAgICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkXG4gICAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQpID0+IHtcbiAgICAgICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcblxuICAgICAgICAgIGNvbnN0IHN1YnBycG9vZkFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3VicHJwb29mQXNzZXJ0aW9uLCBjb250ZXh0KTtcblxuICAgICAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N1YnBycG9vZkFzc2VydGlvblN0cmluZ30nIHN1YnBycG9vZiBhc3NlcnRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlU3RhdGVtZW50cyhzdGF0ZSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHN0YXRlbWVudHNWYWxpZGF0ZTtcblxuICAgIGNvbnN0IHN1YnByb29mQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3VicHJvb2ZBc3NlcnRpb25TdHJpbmd9JyBzdWJwcm9vZiBhc3NlcnRpb24ncyBzdGF0ZW1lbnRzLi4uYCk7XG5cbiAgICBzdGF0ZW1lbnRzVmFsaWRhdGUgPSBldmVyeSh0aGlzLnN0YXRlbWVudHMsIChzdGF0ZW1lbnQsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgbGV0IHN0YXRlbWVudFZhbGlkYXRlcztcblxuICAgICAgZGVjbGFyZSgoc3RhdGUpID0+IHtcbiAgICAgICAgc3RhdGVtZW50VmFsaWRhdGVzID0gc3RhdGVtZW50LnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoc3RhdGVtZW50LCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihjb250ZXh0KTtcblxuICAgICAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBzdGF0ZW1lbnRWYWxpZGF0ZXM7XG4gICAgfSwgY29udGV4dCwgKGNvbnRleHQpID0+IHtcbiAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgfSk7XG5cbiAgICBpZiAoc3RhdGVtZW50c1ZhbGlkYXRlKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N1YnByb29mQXNzZXJ0aW9uU3RyaW5nfScgc3VicHJvb2YgYXNzZXJ0aW9uJ3Mgc3RhdGVtZW50cy5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGVtZW50c1ZhbGlkYXRlO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuRGVjbGFyZWQoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2YWxpZGF0ZXNXaGVuRGVjbGFyZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGRlY2xhcmVkID0gaXNEZWNsYXJlZChzdGF0ZSk7XG5cbiAgICBpZiAoZGVjbGFyZWQpIHtcbiAgICAgIGNvbnN0IHN1YnByb29mQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3N1YnByb29mQXNzZXJ0aW9uU3RyaW5nfScgZGVjbGFyZWQgc3VicHJvb2YgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICAgIHZhbGlkYXRlc1doZW5EZWNsYXJlZCA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIGlmICh2YWxpZGF0ZXNXaGVuRGVjbGFyZWQpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzdWJwcm9vZkFzc2VydGlvblN0cmluZ30nIGRlY2xhcmVkIHN1YnByb29mIGFzc2VydGlvbi5gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzV2hlbkRlY2xhcmVkO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuRGVyaXZlZChzdGF0ZSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHZhbGlkYXRlc1doZW5EZXJpdmVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBkZXJpdmVkID0gaXNEZXJpdmVkKHN0YXRlKTtcblxuICAgIGlmIChkZXJpdmVkKSB7XG4gICAgICBjb25zdCBzdWJwcm9vZkFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzdWJwcm9vZkFzc2VydGlvblN0cmluZ30nIGRlcml2ZWQgc3VicHJvb2YgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcblxuICAgICAgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuXG4gICAgICBpZiAodmFsaWRhdGVzV2hlbkRlcml2ZWQpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzdWJwcm9vZkFzc2VydGlvblN0cmluZ30nIGRlcml2ZWQgc3VicHJvb2YgYXNzZXJ0aW9uLmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXNXaGVuRGVyaXZlZDtcbiAgfVxuXG4gIHVuaWZ5U2NoZW1hKHNjaGVtYSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkge1xuICAgIGxldCBzY2hlbWFVbmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAgLy8vXG4gICAgICAgICAgc2NoZW1hU3RyaW5nID0gc2NoZW1hLmdldFN0cmluZygpLFxuICAgICAgICAgIHN1YnByb29mQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzY2hlbWFTdHJpbmd9JyBzY2hlbWEgd2l0aCB0aGUgJyR7c3VicHJvb2ZBc3NlcnRpb25TdHJpbmd9JyBzdWJwcm9vZiBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnN0IGRlZHVjdGlvbiA9IHNjaGVtYS5nZXREZWR1Y3Rpb24oKSxcbiAgICAgICAgICBkZWR1Y3Rpb25VbmlmaWVzID0gdGhpcy51bmlmeURlZHVjdGlvbihkZWR1Y3Rpb24sIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgaWYgKGRlZHVjdGlvblVuaWZpZXMpIHtcbiAgICAgIGNvbnN0IHN1cHBvc2l0aW9ucyA9IHNjaGVtYS5nZXRTdXBwb3NpdGlvbnMoKSxcbiAgICAgICAgICAgIHN1cHBvc2l0aW9uc1VuaWZ5ID0gdGhpcy51bmlmeVN1cHBvc2l0aW9ucyhzdXBwb3NpdGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICBpZiAoc3VwcG9zaXRpb25zVW5pZnkpIHtcbiAgICAgICAgc2NoZW1hVW5pZmllcyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHNjaGVtYVVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYSB3aXRoIHRoZSAnJHtzdWJwcm9vZkFzc2VydGlvblN0cmluZ30nIHN1YnByb29mIGFzc2VydGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2NoZW1hVW5pZmllcztcbiAgfVxuXG4gIHVuaWZ5U3VicHJvb2Yoc3VicHJvb2YsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICBzdWJwcm9vZlN0cmluZyA9IHN1YnByb29mLmdldFN0cmluZygpLFxuICAgICAgICAgIHN1YnByb29mQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3VicHJvb2ZTdHJpbmd9JyBzdWJwcm9vZiB3aXRoIHRoZSAnJHtzdWJwcm9vZkFzc2VydGlvblN0cmluZ30nIHN1YnByb29mIGFzc2VydGlvbi4uLmApO1xuXG4gICAgY29uc3QgbGFzdFN0ZXAgPSBzdWJwcm9vZi5nZXRMYXN0U3RlcCgpO1xuXG4gICAgcmV0dXJuIHRoaXMudW5pZnlMYXN0U3RlcChsYXN0U3RlcCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKGxhc3RTdGVwVW5pZmllcykgPT4ge1xuICAgICAgbGV0IHN1YnByb29mVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgICBpZiAoIWxhc3RTdGVwVW5pZmllcykge1xuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1YnByb29mVW5pZmllcyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHN1cHBvc2l0aW9ucyA9IHN1YnByb29mLmdldFN1cHBvc2l0aW9ucygpO1xuXG4gICAgICByZXR1cm4gdGhpcy51bmlmeVN1cHBvc2l0aW9ucyhzdXBwb3NpdGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChzdXBwb3NpdGlvbnNVbmlmeSkgPT4ge1xuICAgICAgICBpZiAoc3VwcG9zaXRpb25zVW5pZnkpIHtcbiAgICAgICAgICBzdWJwcm9vZlVuaWZpZXMgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN1YnByb29mVW5pZmllcykge1xuICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N1YnByb29mU3RyaW5nfScgc3VicHJvb2Ygd2l0aCB0aGUgJyR7c3VicHJvb2ZBc3NlcnRpb25TdHJpbmd9JyBzdWJwcm9vZiBhc3NlcnRpb24uYCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1YnByb29mVW5pZmllcyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHVuaWZ5TGFzdFN0ZXAobGFzdFN0ZXAsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICBsYXN0U3RlcFN0cmluZyA9IGxhc3RTdGVwLmdldFN0cmluZygpLFxuICAgICAgICAgIGRlZHVjZWRTdGF0ZW1lbnQgPSB0aGlzLmdldERlZHVjZWRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICBkZWR1Y2VkU3RhdGVtZW50U3RyaW5nID0gZGVkdWNlZFN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtsYXN0U3RlcFN0cmluZ30nIGxhc3Qgc3RlcCB3aXRoIHRoZSAnJHtkZWR1Y2VkU3RhdGVtZW50U3RyaW5nfScgZGVkdWNlZCBzdGF0ZW1lbnQuLi5gKVxuXG4gICAgY29uc3QgbGFzdFN0ZXBDb250ZXh0ID0gbGFzdFN0ZXAuZ2V0Q29udGV4dCgpO1xuXG4gICAgc3BlY2lmaWNDb250ZXh0ID0gbGFzdFN0ZXBDb250ZXh0OyAgLy8vXG5cbiAgICByZXR1cm4gam9pbigoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gcmVjb25jaWxlKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgbGFzdFN0ZXBTdGF0ZW1lbnQgPSBsYXN0U3RlcC5nZXRTdGF0ZW1lbnQoKTtcblxuICAgICAgICByZXR1cm4gZGVkdWNlZFN0YXRlbWVudC51bmlmeVN0YXRlbWVudChsYXN0U3RlcFN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKGxhc3RTdGVwU3RhdGVtZW50VW5pZmllcykgPT4ge1xuICAgICAgICAgIGxldCBsYXN0U3RlcFVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICAgIGlmIChsYXN0U3RlcFN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgICAgIGxhc3RTdGVwVW5pZmllcyA9IHRydWU7XG5cbiAgICAgICAgICAgIHNwZWNpZmljQ29udGV4dC5jb21taXQoY29udGV4dCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGxhc3RTdGVwVW5pZmllcykge1xuICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7bGFzdFN0ZXBTdHJpbmd9JyBsYXN0IHN0ZXAgd2l0aCB0aGUgJyR7ZGVkdWNlZFN0YXRlbWVudFN0cmluZ30nIGRlZHVjZWQgc3RhdGVtZW50LmApXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihsYXN0U3RlcFVuaWZpZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH0sIHNwZWNpZmljQ29udGV4dCk7XG4gICAgfSwgc3BlY2lmaWNDb250ZXh0LCBjb250ZXh0KTtcbiB9XG5cbiAgdW5pZnlEZWR1Y3Rpb24oZGVkdWN0aW9uLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gICAgbGV0IGRlZHVjdGlvblVuaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICBkZWR1Y3Rpb25TdHJpbmcgPSBkZWR1Y3Rpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgZGVkdWNlZFN0YXRlbWVudCA9IHRoaXMuZ2V0RGVkdWNlZFN0YXRlbWVudCgpLFxuICAgICAgICAgIGRlZHVjZWRTdGF0ZW1lbnRTdHJpbmcgPSBkZWR1Y2VkU3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbiB3aXRoIHRoZSAnJHtkZWR1Y2VkU3RhdGVtZW50U3RyaW5nfScgZGVkdWNlZCBzdGF0ZW1lbnQuLi5gKVxuXG4gICAgY29uc3QgZGVkdWN0aW9uQ29udGV4dCA9IGRlZHVjdGlvbi5nZXRDb250ZXh0KCk7XG5cbiAgICBzcGVjaWZpY0NvbnRleHQgPSBkZWR1Y3Rpb25Db250ZXh0OyAgLy8vXG5cbiAgICByZXR1cm4gcmVjb25jaWxlKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGRlZHVjdGlvblN0YXRlbWVudCA9IGRlZHVjdGlvbi5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICAgIGRlZHVjdGlvblN0YXRlbWVudFVuaWZpZXMgPSBkZWR1Y2VkU3RhdGVtZW50LnVuaWZ5U3RhdGVtZW50KGRlZHVjdGlvblN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICAgIGlmIChkZWR1Y3Rpb25TdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgIGRlZHVjdGlvblVuaWZpZXMgPSB0cnVlO1xuXG4gICAgICAgIHNwZWNpZmljQ29udGV4dC5jb21taXQoY29udGV4dCk7XG4gICAgICB9XG4gICAgfSwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgIGlmIChkZWR1Y3Rpb25VbmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24gd2l0aCB0aGUgJyR7ZGVkdWNlZFN0YXRlbWVudFN0cmluZ30nIGRlZHVjZWQgc3RhdGVtZW50LmApXG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZHVjdGlvblVuaWZpZXM7XG4gIH1cblxuICB1bmlmeVN1cHBvc2l0aW9uKHN1cHBvc2l0aW9uLCBpbmRleCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIHN1cHBvc2VkU3RhdGVtZW50ID0gdGhpcy5nZXRTdXBwb3NlZFN0YXRlbWVudChpbmRleCksXG4gICAgICAgICAgc3VwcG9zaXRpb25TdHJpbmcgPSBzdXBwb3NpdGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzdXBwb3NlZFN0YXRlbWVudFN0cmluZyA9IHN1cHBvc2VkU3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24gd2l0aCB0aGUgJyR7c3VwcG9zZWRTdGF0ZW1lbnRTdHJpbmd9JyBzdXBwb3NlZCBzdGF0ZW1lbnQuLi5gKVxuXG4gICAgY29uc3Qgc3VwcG9zaXRpb25Db250ZXh0ID0gc3VwcG9zaXRpb24uZ2V0Q29udGV4dCgpO1xuXG4gICAgc3BlY2lmaWNDb250ZXh0ID0gc3VwcG9zaXRpb25Db250ZXh0OyAgLy8vXG5cbiAgICByZXR1cm4gam9pbigoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gcmVjb25jaWxlKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3Qgc3VwcG9zaXRpb25TdGF0ZW1lbnQgPSBzdXBwb3NpdGlvbi5nZXRTdGF0ZW1lbnQoKTtcblxuICAgICAgICByZXR1cm4gc3VwcG9zZWRTdGF0ZW1lbnQudW5pZnlTdGF0ZW1lbnQoc3VwcG9zaXRpb25TdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChzdXBwb3NpdGlvblN0YXRlbWVudFVuaWZpZXMpID0+IHtcbiAgICAgICAgICBsZXQgc3VwcG9zaXRpb25VbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoc3VwcG9zaXRpb25TdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgICAgICBzdXBwb3NpdGlvblVuaWZpZXMgPSB0cnVlO1xuXG4gICAgICAgICAgICBzcGVjaWZpY0NvbnRleHQuY29tbWl0KGNvbnRleHQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChzdXBwb3NpdGlvblVuaWZpZXMpIHtcbiAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24gd2l0aCB0aGUgJyR7c3VwcG9zZWRTdGF0ZW1lbnRTdHJpbmd9JyBzdXBwb3NlZCBzdGF0ZW1lbnQuYClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1cHBvc2l0aW9uVW5pZmllcyk7XG4gICAgICAgIH0pO1xuICAgICAgfSwgc3BlY2lmaWNDb250ZXh0KTtcbiAgICB9LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRleHQpO1xuICB9XG5cbiAgdW5pZnlTdXBwb3NpdGlvbnMoc3VwcG9zaXRpb25zLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBzdXBwb3NlZFN0YXRlbWVudHMgPSB0aGlzLmdldFN1cHBvc2VkU3RhdGVtZW50cygpLFxuICAgICAgICAgIHN1cHBvc2l0aW9uc0xlbmd0aCA9IHN1cHBvc2l0aW9ucy5sZW5ndGgsXG4gICAgICAgICAgc3VwcG9zZWRTdGF0ZW1lbnRzTGVuZ3RoID0gc3VwcG9zZWRTdGF0ZW1lbnRzLmxlbmd0aDtcblxuICAgIGlmIChzdXBwb3NpdGlvbnNMZW5ndGggIT09IHN1cHBvc2VkU3RhdGVtZW50c0xlbmd0aCkge1xuICAgICAgY29uc3Qgc3VwcG9zaXRpb25zVW5pZnkgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdXBwb3NpdGlvbnNVbmlmeSk7XG4gICAgfVxuXG4gICAgbGV0IGluZGV4ID0gLTE7XG5cbiAgICByZXR1cm4gYXN5bmNocm9ub3VzQmFja3dhcmRzRXZlcnkoc3VwcG9zaXRpb25zLCAoc3VwcG9zaXRpb24sIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgaW5kZXgrKztcblxuICAgICAgcmV0dXJuIHRoaXMudW5pZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbiwgaW5kZXgsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbik7XG4gICAgfSwgY29udGludWF0aW9uKTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTdWJwcm9vZkFzc2VydGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IHN1YnByb29yQXNzZXJ0aW9uID0gbnVsbDtcblxuICAgIGNvbnN0IHsgbmFtZSB9ID0ganNvbjtcblxuICAgIGlmICh0aGlzLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgICBzdWJwcm9vZkFzc2VydGlvbk5vZGUgPSBpbnN0YW50aWF0ZVN1YnByb29mQXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBzdWJwcm9vZkFzc2VydGlvbk5vZGUsICAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgICAgc3RhdGVtZW50cyA9IHN0YXRlbWVudHNGcm9tU3VicHJvb2ZBc3NlcnRpb25Ob2RlKHN1YnByb29mQXNzZXJ0aW9uTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dCA9IG51bGw7XG5cbiAgICAgICAgc3VicHJvb3JBc3NlcnRpb24gPSBuZXcgU3VicHJvb2ZBc3NlcnRpb24oY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBzdGF0ZW1lbnRzKTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiBzdWJwcm9vckFzc2VydGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHN1YnByb29mQXNzZXJ0aW9uID0gc3VicHJvb2ZBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzdWJwcm9vZkFzc2VydGlvbjtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIHN0YXRlbWVudHNGcm9tU3VicHJvb2ZBc3NlcnRpb25Ob2RlKHN1YnByb29mQXNzZXJ0aW9uTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBzdGF0ZW1lbnROb2RlcyA9IHN1YnByb29mQXNzZXJ0aW9uTm9kZS5nZXRTdGF0ZW1lbnROb2RlcygpLFxuICAgICAgICBzdGF0ZW1lbnRzID0gc3RhdGVtZW50Tm9kZXMubWFwKChzdGF0ZW1ldE5vZGUpID0+IHtcbiAgICAgICAgICBjb25zdCBzdGF0ZW1lbnQgPSBjb250ZXh0LmZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUoc3RhdGVtZXROb2RlKTtcblxuICAgICAgICAgIHJldHVybiBzdGF0ZW1lbnQ7XG4gICAgICAgIH0pO1xuXG4gIHJldHVybiBzdGF0ZW1lbnRzO1xufVxuIl0sIm5hbWVzIjpbImxhc3QiLCJmcm9udCIsImFycmF5VXRpbGl0aWVzIiwiYnJlYWtQb2ludEZyb21KU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImFzeW5jaHJvbm91c0JhY2t3YXJkc0V2ZXJ5IiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiU3VicHJvb2ZBc3NlcnRpb24iLCJBc3NlcnRpb24iLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJzdGF0ZW1lbnRzIiwiZ2V0U3RhdGVtZW50cyIsImdldERlZHVjZWRTdGF0ZW1lbnQiLCJsYXN0U3RhdGVtZW50IiwiZGVkdWNlZFN0YXRlbWVudCIsImdldFN1cHBvc2VkU3RhdGVtZW50IiwiaW5kZXgiLCJzdGF0ZW1lbnQiLCJzdXBwb3NlZFN0YXRlbWVudCIsImdldFN1cHBvc2VkU3RhdGVtZW50cyIsImZyb250U3RhdGVtZW50cyIsInN1cHBvc2VkU3RhdGVtZW50cyIsImdldFN1YnByb29mQXNzZXJ0aW9uTm9kZSIsImdldE5vZGUiLCJzdWJwcm9vZkFzc2VydGlvbk5vZGUiLCJ2YWxpZGF0ZSIsInN0YXRlIiwiY29udGludWF0aW9uIiwidmFsaWRhdGVzIiwic3VicHJwb29mQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJhc3NlcnRpb24iLCJmaW5kQXNzZXJ0aW9uIiwic3VicHJwb29mQXNzZXJ0aW9uIiwiZGVidWciLCJ2YWxpZGF0ZVN0YXRlbWVudHMiLCJiaW5kIiwiYWxsIiwidmFsaWRhdGVXaGVuRGVjbGFyZWQiLCJ2YWxpZGF0ZVdoZW5EZXJpdmVkIiwiZXhpc3RzIiwiYWRkQXNzZXJ0aW9uIiwic3RhdGVtZW50c1ZhbGlkYXRlIiwic3VicHJvb2ZBc3NlcnRpb25TdHJpbmciLCJldmVyeSIsInN0YXRlbWVudFZhbGlkYXRlcyIsImRlY2xhcmUiLCJ2YWxpZGF0ZXNXaGVuRGVjbGFyZWQiLCJkZWNsYXJlZCIsImlzRGVjbGFyZWQiLCJ2YWxpZGF0ZXNXaGVuRGVyaXZlZCIsImRlcml2ZWQiLCJpc0Rlcml2ZWQiLCJ1bmlmeVNjaGVtYSIsInNjaGVtYSIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0Iiwic2NoZW1hVW5pZmllcyIsInNjaGVtYVN0cmluZyIsImRlZHVjdGlvbiIsImdldERlZHVjdGlvbiIsImRlZHVjdGlvblVuaWZpZXMiLCJ1bmlmeURlZHVjdGlvbiIsInN1cHBvc2l0aW9ucyIsImdldFN1cHBvc2l0aW9ucyIsInN1cHBvc2l0aW9uc1VuaWZ5IiwidW5pZnlTdXBwb3NpdGlvbnMiLCJ1bmlmeVN1YnByb29mIiwic3VicHJvb2YiLCJzdWJwcm9vZlN0cmluZyIsImxhc3RTdGVwIiwiZ2V0TGFzdFN0ZXAiLCJ1bmlmeUxhc3RTdGVwIiwibGFzdFN0ZXBVbmlmaWVzIiwic3VicHJvb2ZVbmlmaWVzIiwibGFzdFN0ZXBTdHJpbmciLCJkZWR1Y2VkU3RhdGVtZW50U3RyaW5nIiwibGFzdFN0ZXBDb250ZXh0IiwiZ2V0Q29udGV4dCIsImpvaW4iLCJyZWNvbmNpbGUiLCJsYXN0U3RlcFN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsInVuaWZ5U3RhdGVtZW50IiwibGFzdFN0ZXBTdGF0ZW1lbnRVbmlmaWVzIiwiY29tbWl0IiwiZGVkdWN0aW9uU3RyaW5nIiwiZGVkdWN0aW9uQ29udGV4dCIsImRlZHVjdGlvblN0YXRlbWVudCIsImRlZHVjdGlvblN0YXRlbWVudFVuaWZpZXMiLCJ1bmlmeVN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb24iLCJzdXBwb3NpdGlvblN0cmluZyIsInN1cHBvc2VkU3RhdGVtZW50U3RyaW5nIiwic3VwcG9zaXRpb25Db250ZXh0Iiwic3VwcG9zaXRpb25TdGF0ZW1lbnQiLCJzdXBwb3NpdGlvblN0YXRlbWVudFVuaWZpZXMiLCJzdXBwb3NpdGlvblVuaWZpZXMiLCJzdXBwb3NpdGlvbnNMZW5ndGgiLCJsZW5ndGgiLCJzdXBwb3NlZFN0YXRlbWVudHNMZW5ndGgiLCJuYW1lIiwiZnJvbUpTT04iLCJqc29uIiwic3VicHJvb3JBc3NlcnRpb24iLCJpbnN0YW50aWF0ZSIsImluc3RhbnRpYXRlU3VicHJvb2ZBc3NlcnRpb24iLCJzdGF0ZW1lbnRzRnJvbVN1YnByb29mQXNzZXJ0aW9uTm9kZSIsImZyb21TdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlIiwic3VicHJvb2ZBc3NlcnRpb24iLCJzdWJwcm9vZkFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Tm9kZXMiLCJnZXRTdGF0ZW1lbnROb2RlcyIsIm1hcCIsInN0YXRlbWV0Tm9kZSIsImZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWtCQTs7O2VBQUE7OzsyQkFoQitCO2dDQUM0QjtrRUFFckM7MEJBRUM7OEJBQ1k7eUJBQ1U7NkJBQ0E7dUJBQ0U7eUJBQ0k7Ozs7OztBQUVuRCxNQUFNLEVBQUVBLElBQUksRUFBRUMsS0FBSyxFQUFFLEdBQUdDLHlCQUFjLEVBQ2hDLEVBQUVDLGtCQUFrQixFQUFFLEdBQUdDLG1DQUFtQixFQUM1QyxFQUFFQywwQkFBMEIsRUFBRSxHQUFHQyxxQ0FBcUI7TUFFNUQsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQywwQkFBMEJDLGtCQUFTO0lBQzdELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsVUFBVSxDQUFFO1FBQ3pELEtBQUssQ0FBQ0osU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDQyxVQUFVLEdBQUdBO0lBQ3BCO0lBRUFDLGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDRCxVQUFVO0lBQ3hCO0lBRUFFLHNCQUFzQjtRQUNwQixNQUFNQyxnQkFBZ0JqQixLQUFLLElBQUksQ0FBQ2MsVUFBVSxHQUNwQ0ksbUJBQW1CRCxlQUFlLEdBQUc7UUFFM0MsT0FBT0M7SUFDVDtJQUVBQyxxQkFBcUJDLEtBQUssRUFBRTtRQUMxQixNQUFNQyxZQUFZLElBQUksQ0FBQ1AsVUFBVSxDQUFDTSxNQUFNLEVBQ2xDRSxvQkFBb0JELFdBQVksR0FBRztRQUV6QyxPQUFPQztJQUNUO0lBRUFDLHdCQUF3QjtRQUN0QixNQUFNQyxrQkFBa0J2QixNQUFN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
|
|
237
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zdWJwcm9vZi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGFsbCwgZXZlcnksIGV4aXN0cyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGludWF0aW9uXCI7XG5pbXBvcnQgeyBqb2luLCByZWNvbmNpbGUsIGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZVN1YnByb29mQXNzZXJ0aW9uIH0gZnJvbSBcIi4uLy4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IGRlY2xhcmUsIGlzRGVyaXZlZCwgaXNEZWNsYXJlZCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7IHN1YnByb29mQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcblxuY29uc3QgeyBsYXN0LCBmcm9udCB9ID0gYXJyYXlVdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrUG9pbnRGcm9tSlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcyxcbiAgICAgIHsgYXN5bmNocm9ub3VzQmFja3dhcmRzRXZlcnkgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFN1YnByb29mQXNzZXJ0aW9uIGV4dGVuZHMgQXNzZXJ0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBzdGF0ZW1lbnRzKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMuc3RhdGVtZW50cyA9IHN0YXRlbWVudHM7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnRzKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudHM7XG4gIH1cblxuICBnZXREZWR1Y2VkU3RhdGVtZW50KCkge1xuICAgIGNvbnN0IGxhc3RTdGF0ZW1lbnQgPSBsYXN0KHRoaXMuc3RhdGVtZW50cyksXG4gICAgICAgICAgZGVkdWNlZFN0YXRlbWVudCA9IGxhc3RTdGF0ZW1lbnQ7IC8vL1xuXG4gICAgcmV0dXJuIGRlZHVjZWRTdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRTdXBwb3NlZFN0YXRlbWVudHMoKSB7XG4gICAgY29uc3QgZnJvbnRTdGF0ZW1lbnRzID0gZnJvbnQodGhpcy5zdGF0ZW1lbnRzKSxcbiAgICAgICAgICBzdXBwb3NlZFN0YXRlbWVudHMgPSBmcm9udFN0YXRlbWVudHM7ICAvLy9cblxuICAgIHJldHVybiBzdXBwb3NlZFN0YXRlbWVudHM7XG4gIH1cblxuICBnZXRTdWJwcm9vZkFzc2VydGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHN1YnByb29mQXNzZXJ0aW9uTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIHN1YnByb29mQXNzZXJ0aW9uTm9kZTtcbiAgfVxuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgY29uc3Qgc3VicHJvb2ZBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzdWJwcm9vZkFzc2VydGlvblN0cmluZ30nIHN1YnByb29mIGFzc2VydGlvbi4uLmApO1xuXG4gICAgbGV0IGFzc2VydGlvbjtcblxuICAgIGFzc2VydGlvbiA9IHRoaXMuZmluZEFzc2VydGlvbihjb250ZXh0KTtcblxuICAgIGlmIChhc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN1YnByb29mQXNzZXJ0aW9uID0gYXNzZXJ0aW9uOyAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3N1YnByb29mQXNzZXJ0aW9uU3RyaW5nfScgc3VicHJvb2YgYXNzZXJ0aW9uIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHN1YnByb29mQXNzZXJ0aW9uLCBjb250ZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0aW9uID0gdGhpczsgLy8vXG5cbiAgICAgIGNvbnN0IHZhbGlkYXRlU3RhdGVtZW50cyA9IHRoaXMudmFsaWRhdGVTdGF0ZW1lbnRzLmJpbmQodGhpcyk7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGFsbChbXG4gICAgICAgIHZhbGlkYXRlU3RhdGVtZW50c1xuICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICAgIGNvbnN0IHZhbGlkYXRlV2hlbkRlY2xhcmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZWNsYXJlZC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkID0gdGhpcy52YWxpZGF0ZVdoZW5EZXJpdmVkLmJpbmQodGhpcyk7XG5cbiAgICAgICAgdmFsaWRhdGVzID0gZXhpc3RzKFtcbiAgICAgICAgICB2YWxpZGF0ZVdoZW5EZWNsYXJlZCxcbiAgICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkXG4gICAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQpID0+IHtcbiAgICAgICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcblxuICAgICAgICAgIGNvbnN0IHN1YnByb29mQXNzZXJ0aW9uID0gYXNzZXJ0aW9uOyAvLy9cblxuICAgICAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzdWJwcm9vZkFzc2VydGlvbiwgY29udGV4dCk7XG5cbiAgICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzdWJwcm9vZkFzc2VydGlvblN0cmluZ30nIHN1YnByb29mIGFzc2VydGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVTdGF0ZW1lbnRzKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgc3RhdGVtZW50c1ZhbGlkYXRlO1xuXG4gICAgY29uc3Qgc3VicHJvb2ZBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzdWJwcm9vZkFzc2VydGlvblN0cmluZ30nIHN1YnByb29mIGFzc2VydGlvbidzIHN0YXRlbWVudHMuLi5gKTtcblxuICAgIHN0YXRlbWVudHNWYWxpZGF0ZSA9IGV2ZXJ5KHRoaXMuc3RhdGVtZW50cywgKHN0YXRlbWVudCwgY29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICBsZXQgc3RhdGVtZW50VmFsaWRhdGVzO1xuXG4gICAgICBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgICBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSBzdGF0ZW1lbnQudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChzdGF0ZW1lbnQsIGNvbnRleHQpID0+IHtcbiAgICAgICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHN0YXRlbWVudFZhbGlkYXRlcztcbiAgICB9LCBjb250ZXh0LCAoY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICB9KTtcblxuICAgIGlmIChzdGF0ZW1lbnRzVmFsaWRhdGUpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c3VicHJvb2ZBc3NlcnRpb25TdHJpbmd9JyBzdWJwcm9vZiBhc3NlcnRpb24ncyBzdGF0ZW1lbnRzLmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZW1lbnRzVmFsaWRhdGU7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5EZWNsYXJlZChzdGF0ZSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHZhbGlkYXRlc1doZW5EZWNsYXJlZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgZGVjbGFyZWQgPSBpc0RlY2xhcmVkKHN0YXRlKTtcblxuICAgIGlmIChkZWNsYXJlZCkge1xuICAgICAgY29uc3Qgc3VicHJvb2ZBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3VicHJvb2ZBc3NlcnRpb25TdHJpbmd9JyBkZWNsYXJlZCBzdWJwcm9vZiBhc3NlcnRpb24uLi5gKTtcblxuICAgICAgdmFsaWRhdGVzV2hlbkRlY2xhcmVkID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHZhbGlkYXRlc1doZW5EZWNsYXJlZCkge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N1YnByb29mQXNzZXJ0aW9uU3RyaW5nfScgZGVjbGFyZWQgc3VicHJvb2YgYXNzZXJ0aW9uLmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXNXaGVuRGVjbGFyZWQ7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5EZXJpdmVkKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGRlcml2ZWQgPSBpc0Rlcml2ZWQoc3RhdGUpO1xuXG4gICAgaWYgKGRlcml2ZWQpIHtcbiAgICAgIGNvbnN0IHN1YnByb29mQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3N1YnByb29mQXNzZXJ0aW9uU3RyaW5nfScgZGVyaXZlZCBzdWJwcm9vZiBhc3NlcnRpb24uLi5gKTtcblxuICAgICAgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSB0cnVlO1xuXG4gICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIGlmICh2YWxpZGF0ZXNXaGVuRGVyaXZlZCkge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N1YnByb29mQXNzZXJ0aW9uU3RyaW5nfScgZGVyaXZlZCBzdWJwcm9vZiBhc3NlcnRpb24uYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlc1doZW5EZXJpdmVkO1xuICB9XG5cbiAgdW5pZnlTdWJwcm9vZihzdWJwcm9vZiwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIHN1YnByb29mU3RyaW5nID0gc3VicHJvb2YuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc3VicHJvb2ZBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdWJwcm9vZlN0cmluZ30nIHN1YnByb29mIHdpdGggdGhlICcke3N1YnByb29mQXNzZXJ0aW9uU3RyaW5nfScgc3VicHJvb2YgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBsYXN0U3RlcCA9IHN1YnByb29mLmdldExhc3RTdGVwKCk7XG5cbiAgICByZXR1cm4gdGhpcy51bmlmeUxhc3RTdGVwKGxhc3RTdGVwLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAobGFzdFN0ZXBVbmlmaWVzKSA9PiB7XG4gICAgICBsZXQgc3VicHJvb2ZVbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgIGlmICghbGFzdFN0ZXBVbmlmaWVzKSB7XG4gICAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VicHJvb2ZVbmlmaWVzKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc3VwcG9zaXRpb25zID0gc3VicHJvb2YuZ2V0U3VwcG9zaXRpb25zKCk7XG5cbiAgICAgIHJldHVybiB0aGlzLnVuaWZ5U3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKHN1cHBvc2l0aW9uc1VuaWZ5KSA9PiB7XG4gICAgICAgIGlmIChzdXBwb3NpdGlvbnNVbmlmeSkge1xuICAgICAgICAgIHN1YnByb29mVW5pZmllcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3VicHJvb2ZVbmlmaWVzKSB7XG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3VicHJvb2ZTdHJpbmd9JyBzdWJwcm9vZiB3aXRoIHRoZSAnJHtzdWJwcm9vZkFzc2VydGlvblN0cmluZ30nIHN1YnByb29mIGFzc2VydGlvbi5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VicHJvb2ZVbmlmaWVzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgdW5pZnlMYXN0U3RlcChsYXN0U3RlcCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIGxhc3RTdGVwU3RyaW5nID0gbGFzdFN0ZXAuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgZGVkdWNlZFN0YXRlbWVudCA9IHRoaXMuZ2V0RGVkdWNlZFN0YXRlbWVudCgpLFxuICAgICAgICAgIGRlZHVjZWRTdGF0ZW1lbnRTdHJpbmcgPSBkZWR1Y2VkU3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2xhc3RTdGVwU3RyaW5nfScgbGFzdCBzdGVwIHdpdGggdGhlICcke2RlZHVjZWRTdGF0ZW1lbnRTdHJpbmd9JyBkZWR1Y2VkIHN0YXRlbWVudC4uLmApXG5cbiAgICBjb25zdCBsYXN0U3RlcENvbnRleHQgPSBsYXN0U3RlcC5nZXRDb250ZXh0KCk7XG5cbiAgICBzcGVjaWZpY0NvbnRleHQgPSBsYXN0U3RlcENvbnRleHQ7ICAvLy9cblxuICAgIHJldHVybiBqb2luKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgIHJldHVybiByZWNvbmNpbGUoKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBsYXN0U3RlcFN0YXRlbWVudCA9IGxhc3RTdGVwLmdldFN0YXRlbWVudCgpO1xuXG4gICAgICAgIHJldHVybiBkZWR1Y2VkU3RhdGVtZW50LnVuaWZ5U3RhdGVtZW50KGxhc3RTdGVwU3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAobGFzdFN0ZXBTdGF0ZW1lbnRVbmlmaWVzKSA9PiB7XG4gICAgICAgICAgbGV0IGxhc3RTdGVwVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKGxhc3RTdGVwU3RhdGVtZW50VW5pZmllcykge1xuICAgICAgICAgICAgc3BlY2lmaWNDb250ZXh0LmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICAgICAgbGFzdFN0ZXBVbmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAobGFzdFN0ZXBVbmlmaWVzKSB7XG4gICAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtsYXN0U3RlcFN0cmluZ30nIGxhc3Qgc3RlcCB3aXRoIHRoZSAnJHtkZWR1Y2VkU3RhdGVtZW50U3RyaW5nfScgZGVkdWNlZCBzdGF0ZW1lbnQuYClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKGxhc3RTdGVwVW5pZmllcyk7XG4gICAgICAgIH0pO1xuICAgICAgfSwgc3BlY2lmaWNDb250ZXh0KTtcbiAgICB9LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRleHQpO1xuIH1cblxuICB1bmlmeVN1cHBvc2l0aW9uKHN1cHBvc2l0aW9uLCBzdXBwb3NlZFN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIHN1cHBvc2l0aW9uU3RyaW5nID0gc3VwcG9zaXRpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc3VwcG9zZWRTdGF0ZW1lbnRTdHJpbmcgPSBzdXBwb3NlZFN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uIHdpdGggdGhlICcke3N1cHBvc2VkU3RhdGVtZW50U3RyaW5nfScgc3VwcG9zZWQgc3RhdGVtZW50Li4uYClcblxuICAgIGNvbnN0IHN1cHBvc2l0aW9uQ29udGV4dCA9IHN1cHBvc2l0aW9uLmdldENvbnRleHQoKTtcblxuICAgIHNwZWNpZmljQ29udGV4dCA9IHN1cHBvc2l0aW9uQ29udGV4dDsgIC8vL1xuXG4gICAgcmV0dXJuIGpvaW4oKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgcmV0dXJuIHJlY29uY2lsZSgoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHN1cHBvc2l0aW9uU3RhdGVtZW50ID0gc3VwcG9zaXRpb24uZ2V0U3RhdGVtZW50KCk7XG5cbiAgICAgICAgcmV0dXJuIHN1cHBvc2VkU3RhdGVtZW50LnVuaWZ5U3RhdGVtZW50KHN1cHBvc2l0aW9uU3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoc3VwcG9zaXRpb25TdGF0ZW1lbnRVbmlmaWVzKSA9PiB7XG4gICAgICAgICAgbGV0IHN1cHBvc2l0aW9uVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKHN1cHBvc2l0aW9uU3RhdGVtZW50VW5pZmllcykge1xuICAgICAgICAgICAgc3BlY2lmaWNDb250ZXh0LmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICAgICAgc3VwcG9zaXRpb25VbmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc3VwcG9zaXRpb25VbmlmaWVzKSB7XG4gICAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uIHdpdGggdGhlICcke3N1cHBvc2VkU3RhdGVtZW50U3RyaW5nfScgc3VwcG9zZWQgc3RhdGVtZW50LmApXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdXBwb3NpdGlvblVuaWZpZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH0sIHNwZWNpZmljQ29udGV4dCk7XG4gICAgfSwgc3BlY2lmaWNDb250ZXh0LCBjb250ZXh0KTtcbiAgfVxuXG4gIHVuaWZ5U3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3Qgc3VwcG9zZWRTdGF0ZW1lbnRzID0gdGhpcy5nZXRTdXBwb3NlZFN0YXRlbWVudHMoKSxcbiAgICAgICAgICBzdXBwb3NpdGlvbnNMZW5ndGggPSBzdXBwb3NpdGlvbnMubGVuZ3RoLFxuICAgICAgICAgIHN1cHBvc2VkU3RhdGVtZW50c0xlbmd0aCA9IHN1cHBvc2VkU3RhdGVtZW50cy5sZW5ndGg7XG5cbiAgICBpZiAoc3VwcG9zaXRpb25zTGVuZ3RoICE9PSBzdXBwb3NlZFN0YXRlbWVudHNMZW5ndGgpIHtcbiAgICAgIGNvbnN0IHN1cHBvc2l0aW9uc1VuaWZ5ID0gZmFsc2U7XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VwcG9zaXRpb25zVW5pZnkpO1xuICAgIH1cblxuICAgIGxldCBpbmRleCA9IHN1cHBvc2l0aW9uc0xlbmd0aDsgLy8vXG5cbiAgICByZXR1cm4gYXN5bmNocm9ub3VzQmFja3dhcmRzRXZlcnkoc3VwcG9zaXRpb25zLCAoc3VwcG9zaXRpb24sIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgaW5kZXgtLTtcblxuICAgICAgY29uc3Qgc3VwcG9zZWRTdGF0ZW1lbnQgPSBzdXBwb3NlZFN0YXRlbWVudHNbaW5kZXhdO1xuXG4gICAgICByZXR1cm4gdGhpcy51bmlmeVN1cHBvc2l0aW9uKHN1cHBvc2l0aW9uLCBzdXBwb3NlZFN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKTtcbiAgICB9LCBjb250aW51YXRpb24pO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlN1YnByb29mQXNzZXJ0aW9uXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgc3VicHJvb3JBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uO1xuXG4gICAgaWYgKHRoaXMubmFtZSA9PT0gbmFtZSkge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIHN1YnByb29mQXNzZXJ0aW9uTm9kZSA9IGluc3RhbnRpYXRlU3VicHJvb2ZBc3NlcnRpb24oc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IHN1YnByb29mQXNzZXJ0aW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgICAgICBzdGF0ZW1lbnRzID0gc3RhdGVtZW50c0Zyb21TdWJwcm9vZkFzc2VydGlvbk5vZGUoc3VicHJvb2ZBc3NlcnRpb25Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgICAgICBzdWJwcm9vckFzc2VydGlvbiA9IG5ldyBTdWJwcm9vZkFzc2VydGlvbihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudHMpO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YnByb29yQXNzZXJ0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgICAgc3VicHJvb2ZBc3NlcnRpb24gPSBzdWJwcm9vZkFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHN1YnByb29mQXNzZXJ0aW9uO1xuICB9XG59KTtcblxuZnVuY3Rpb24gc3RhdGVtZW50c0Zyb21TdWJwcm9vZkFzc2VydGlvbk5vZGUoc3VicHJvb2ZBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0YXRlbWVudE5vZGVzID0gc3VicHJvb2ZBc3NlcnRpb25Ob2RlLmdldFN0YXRlbWVudE5vZGVzKCksXG4gICAgICAgIHN0YXRlbWVudHMgPSBzdGF0ZW1lbnROb2Rlcy5tYXAoKHN0YXRlbWV0Tm9kZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHN0YXRlbWVudCA9IGNvbnRleHQuZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZShzdGF0ZW1ldE5vZGUpO1xuXG4gICAgICAgICAgcmV0dXJuIHN0YXRlbWVudDtcbiAgICAgICAgfSk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudHM7XG59XG4iXSwibmFtZXMiOlsibGFzdCIsImZyb250IiwiYXJyYXlVdGlsaXRpZXMiLCJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiYXN5bmNocm9ub3VzQmFja3dhcmRzRXZlcnkiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJkZWZpbmUiLCJTdWJwcm9vZkFzc2VydGlvbiIsIkFzc2VydGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInN0YXRlbWVudHMiLCJnZXRTdGF0ZW1lbnRzIiwiZ2V0RGVkdWNlZFN0YXRlbWVudCIsImxhc3RTdGF0ZW1lbnQiLCJkZWR1Y2VkU3RhdGVtZW50IiwiZ2V0U3VwcG9zZWRTdGF0ZW1lbnRzIiwiZnJvbnRTdGF0ZW1lbnRzIiwic3VwcG9zZWRTdGF0ZW1lbnRzIiwiZ2V0U3VicHJvb2ZBc3NlcnRpb25Ob2RlIiwiZ2V0Tm9kZSIsInN1YnByb29mQXNzZXJ0aW9uTm9kZSIsInZhbGlkYXRlIiwic3RhdGUiLCJjb250aW51YXRpb24iLCJ2YWxpZGF0ZXMiLCJzdWJwcm9vZkFzc2VydGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiYXNzZXJ0aW9uIiwiZmluZEFzc2VydGlvbiIsInN1YnByb29mQXNzZXJ0aW9uIiwiZGVidWciLCJ2YWxpZGF0ZVN0YXRlbWVudHMiLCJiaW5kIiwiYWxsIiwidmFsaWRhdGVXaGVuRGVjbGFyZWQiLCJ2YWxpZGF0ZVdoZW5EZXJpdmVkIiwiZXhpc3RzIiwiYWRkQXNzZXJ0aW9uIiwic3RhdGVtZW50c1ZhbGlkYXRlIiwiZXZlcnkiLCJzdGF0ZW1lbnQiLCJzdGF0ZW1lbnRWYWxpZGF0ZXMiLCJkZWNsYXJlIiwidmFsaWRhdGVzV2hlbkRlY2xhcmVkIiwiZGVjbGFyZWQiLCJpc0RlY2xhcmVkIiwidmFsaWRhdGVzV2hlbkRlcml2ZWQiLCJkZXJpdmVkIiwiaXNEZXJpdmVkIiwidW5pZnlTdWJwcm9vZiIsInN1YnByb29mIiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJzdWJwcm9vZlN0cmluZyIsImxhc3RTdGVwIiwiZ2V0TGFzdFN0ZXAiLCJ1bmlmeUxhc3RTdGVwIiwibGFzdFN0ZXBVbmlmaWVzIiwic3VicHJvb2ZVbmlmaWVzIiwic3VwcG9zaXRpb25zIiwiZ2V0U3VwcG9zaXRpb25zIiwidW5pZnlTdXBwb3NpdGlvbnMiLCJzdXBwb3NpdGlvbnNVbmlmeSIsImxhc3RTdGVwU3RyaW5nIiwiZGVkdWNlZFN0YXRlbWVudFN0cmluZyIsImxhc3RTdGVwQ29udGV4dCIsImdldENvbnRleHQiLCJqb2luIiwicmVjb25jaWxlIiwibGFzdFN0ZXBTdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJ1bmlmeVN0YXRlbWVudCIsImxhc3RTdGVwU3RhdGVtZW50VW5pZmllcyIsImNvbW1pdCIsInVuaWZ5U3VwcG9zaXRpb24iLCJzdXBwb3NpdGlvbiIsInN1cHBvc2VkU3RhdGVtZW50Iiwic3VwcG9zaXRpb25TdHJpbmciLCJzdXBwb3NlZFN0YXRlbWVudFN0cmluZyIsInN1cHBvc2l0aW9uQ29udGV4dCIsInN1cHBvc2l0aW9uU3RhdGVtZW50Iiwic3VwcG9zaXRpb25TdGF0ZW1lbnRVbmlmaWVzIiwic3VwcG9zaXRpb25VbmlmaWVzIiwic3VwcG9zaXRpb25zTGVuZ3RoIiwibGVuZ3RoIiwic3VwcG9zZWRTdGF0ZW1lbnRzTGVuZ3RoIiwiaW5kZXgiLCJuYW1lIiwiZnJvbUpTT04iLCJqc29uIiwic3VicHJvb3JBc3NlcnRpb24iLCJpbnN0YW50aWF0ZSIsImluc3RhbnRpYXRlU3VicHJvb2ZBc3NlcnRpb24iLCJzdGF0ZW1lbnRzRnJvbVN1YnByb29mQXNzZXJ0aW9uTm9kZSIsImZyb21TdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlIiwic3VicHJvb2ZBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudE5vZGVzIiwiZ2V0U3RhdGVtZW50Tm9kZXMiLCJtYXAiLCJzdGF0ZW1ldE5vZGUiLCJmaW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFrQkE7OztlQUFBOzs7MkJBaEIrQjtnQ0FDNEI7a0VBRXJDOzBCQUVDOzhCQUNZO3lCQUNVOzZCQUNBO3VCQUNFO3lCQUNJOzs7Ozs7QUFFbkQsTUFBTSxFQUFFQSxJQUFJLEVBQUVDLEtBQUssRUFBRSxHQUFHQyx5QkFBYyxFQUNoQyxFQUFFQyxrQkFBa0IsRUFBRSxHQUFHQyxtQ0FBbUIsRUFDNUMsRUFBRUMsMEJBQTBCLEVBQUUsR0FBR0MscUNBQXFCO01BRTVELFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsMEJBQTBCQyxrQkFBUztJQUM3RCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLFVBQVUsQ0FBRTtRQUN6RCxLQUFLLENBQUNKLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtJQUNwQjtJQUVBQyxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQ0QsVUFBVTtJQUN4QjtJQUVBRSxzQkFBc0I7UUFDcEIsTUFBTUMsZ0JBQWdCakIsS0FBSyxJQUFJLENBQUNjLFVBQVUsR0FDcENJLG1CQUFtQkQsZUFBZSxHQUFHO1FBRTNDLE9BQU9DO0lBQ1Q7SUFFQUMsd0JBQXdCO1FBQ3RCLE1BQU1DLGtCQUFrQm5CLE1BQU0sSUFBSSxDQUFDYSxVQUFVLEdBQ3ZDTyxxQkFBcUJELGlCQUFrQixHQUFHO1FBRWhELE9BQU9DO0lBQ1Q7SUFFQUMsMkJBQTJCO1FBQ3pCLE1BQU1WLE9BQU8sSUFBSSxDQUFDVyxPQUFPLElBQ25CQyx3QkFBd0JaLE1BQU0sR0FBRztRQUV2QyxPQUFPWTtJQUNUO0lBRUFDLFNBQVNDLEtBQUssRUFBRWhCLE9BQU8sRUFBRWlCLFlBQVksRUFBRTtRQUNyQyxJQUFJQztRQUVKLE1BQU1DLDBCQUEwQixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRXREcEIsUUFBUXFCLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFRix3QkFBd0IsdUJBQXVCLENBQUM7UUFFakYsSUFBSUc7UUFFSkEsWUFBWSxJQUFJLENBQUNDLGFBQWEsQ0FBQ3ZCO1FBRS9CLElBQUlzQixjQUFjLE1BQU07WUFDdEIsTUFBTUUsb0JBQW9CRixXQUFXLEdBQUc7WUFFeEN0QixRQUFReUIsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFTix3QkFBd0Isd0NBQXdDLENBQUM7WUFFdkZELFlBQVlELGFBQWFPLG1CQUFtQnhCO1FBQzlDLE9BQU87WUFDTHNCLFlBQVksSUFBSSxFQUFFLEdBQUc7WUFFckIsTUFBTUkscUJBQXFCLElBQUksQ0FBQ0Esa0JBQWtCLENBQUNDLElBQUksQ0FBQyxJQUFJO1lBRTVEVCxZQUFZVSxJQUFBQSxpQkFBRyxFQUFDO2dCQUNkRjthQUNELEVBQUVWLE9BQU9oQixTQUFTLENBQUNnQixPQUFPaEI7Z0JBQ3pCLElBQUlrQjtnQkFFSixNQUFNVyx1QkFBdUIsSUFBSSxDQUFDQSxvQkFBb0IsQ0FBQ0YsSUFBSSxDQUFDLElBQUksR0FDMURHLHNCQUFzQixJQUFJLENBQUNBLG1CQUFtQixDQUFDSCxJQUFJLENBQUMsSUFBSTtnQkFFOURULFlBQVlhLElBQUFBLG9CQUFNLEVBQUM7b0JBQ2pCRjtvQkFDQUM7aUJBQ0QsRUFBRWQsT0FBT2hCLFNBQVMsQ0FBQ2dCLE9BQU9oQjtvQkFDekIsSUFBSWtCO29CQUVKbEIsUUFBUWdDLFlBQVksQ0FBQ1Y7b0JBRXJCLE1BQU1FLG9CQUFvQkYsV0FBVyxHQUFHO29CQUV4Q0osWUFBWUQsYUFBYU8sbUJBQW1CeEI7b0JBRTVDLE9BQU9rQjtnQkFDVDtnQkFFQSxPQUFPQTtZQUNUO1FBQ0Y7UUFFQSxJQUFJQSxXQUFXO1lBQ2JsQixRQUFReUIsS0FBSyxDQUFDLENBQUMsa0JBQWtCLEVBQUVOLHdCQUF3QixxQkFBcUIsQ0FBQztRQUNuRjtRQUVBLE9BQU9EO0lBQ1Q7SUFFQVEsbUJBQW1CVixLQUFLLEVBQUVoQixPQUFPLEVBQUVpQixZQUFZLEVBQUU7UUFDL0MsSUFBSWdCO1FBRUosTUFBTWQsMEJBQTBCLElBQUksQ0FBQ0MsU0FBUyxJQUFLLEdBQUc7UUFFdERwQixRQUFRcUIsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLEVBQUVGLHdCQUF3QixvQ0FBb0MsQ0FBQztRQUU5RmMscUJBQXFCQyxJQUFBQSxtQkFBSyxFQUFDLElBQUksQ0FBQzlCLFVBQVUsRUFBRSxDQUFDK0IsV0FBV25DLFNBQVNpQjtZQUMvRCxJQUFJbUI7WUFFSkMsSUFBQUEsY0FBTyxFQUFDLENBQUNyQjtnQkFDUG9CLHFCQUFxQkQsVUFBVXBCLFFBQVEsQ0FBQ0MsT0FBT2hCLFNBQVMsQ0FBQ21DLFdBQVduQztvQkFDbEUsSUFBSWtCO29CQUVKQSxZQUFZRCxhQUFhakI7b0JBRXpCLE9BQU9rQjtnQkFDVDtZQUNGO1lBRUEsT0FBT2tCO1FBQ1QsR0FBR3BDLFNBQVMsQ0FBQ0E7WUFDWCxJQUFJa0I7WUFFSkEsWUFBWUQsYUFBYUQsT0FBT2hCO1lBRWhDLE9BQU9rQjtRQUNUO1FBRUEsSUFBSWUsb0JBQW9CO1lBQ3RCakMsUUFBUXlCLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixFQUFFTix3QkFBd0Isa0NBQWtDLENBQUM7UUFDaEc7UUFFQSxPQUFPYztJQUNUO0lBRUFKLHFCQUFxQmIsS0FBSyxFQUFFaEIsT0FBTyxFQUFFaUIsWUFBWSxFQUFFO1FBQ2pELElBQUlxQix3QkFBd0I7UUFFNUIsTUFBTUMsV0FBV0MsSUFBQUEsaUJBQVUsRUFBQ3hCO1FBRTVCLElBQUl1QixVQUFVO1lBQ1osTUFBTXBCLDBCQUEwQixJQUFJLENBQUNDLFNBQVMsSUFBSSxHQUFHO1lBRXJEcEIsUUFBUXFCLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFRix3QkFBd0IsZ0NBQWdDLENBQUM7WUFFMUZtQix3QkFBd0JyQixhQUFhRCxPQUFPaEI7WUFFNUMsSUFBSXNDLHVCQUF1QjtnQkFDekJ0QyxRQUFReUIsS0FBSyxDQUFDLENBQUMsa0JBQWtCLEVBQUVOLHdCQUF3Qiw4QkFBOEIsQ0FBQztZQUM1RjtRQUNGO1FBRUEsT0FBT21CO0lBQ1Q7SUFFQVIsb0JBQW9CZCxLQUFLLEVBQUVoQixPQUFPLEVBQUVpQixZQUFZLEVBQUU7UUFDaEQsSUFBSXdCLHVCQUF1QjtRQUUzQixNQUFNQyxVQUFVQyxJQUFBQSxnQkFBUyxFQUFDM0I7UUFFMUIsSUFBSTBCLFNBQVM7WUFDWCxNQUFNdkIsMEJBQTBCLElBQUksQ0FBQ0MsU0FBUyxJQUFJLEdBQUc7WUFFckRwQixRQUFRcUIsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLEVBQUVGLHdCQUF3QiwrQkFBK0IsQ0FBQztZQUV6RnNCLHVCQUF1QjtZQUV2QkEsdUJBQXVCeEIsYUFBYUQsT0FBT2hCO1lBRTNDLElBQUl5QyxzQkFBc0I7Z0JBQ3hCekMsUUFBUXlCLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixFQUFFTix3QkFBd0IsNkJBQTZCLENBQUM7WUFDM0Y7UUFDRjtRQUVBLE9BQU9zQjtJQUNUO0lBRUFHLGNBQWNDLFFBQVEsRUFBRUMsY0FBYyxFQUFFQyxlQUFlLEVBQUU5QixZQUFZLEVBQUU7UUFDckUsTUFBTWpCLFVBQVUrQyxpQkFDVkMsaUJBQWlCSCxTQUFTekIsU0FBUyxJQUNuQ0QsMEJBQTBCLElBQUksQ0FBQ0MsU0FBUyxJQUFJLEdBQUc7UUFFckRwQixRQUFRcUIsS0FBSyxDQUFDLENBQUMsY0FBYyxFQUFFMkIsZUFBZSxxQkFBcUIsRUFBRTdCLHdCQUF3Qix1QkFBdUIsQ0FBQztRQUVySCxNQUFNOEIsV0FBV0osU0FBU0ssV0FBVztRQUVyQyxPQUFPLElBQUksQ0FBQ0MsYUFBYSxDQUFDRixVQUFVSCxnQkFBZ0JDLGlCQUFpQixDQUFDSztZQUNwRSxJQUFJQyxrQkFBa0I7WUFFdEIsSUFBSSxDQUFDRCxpQkFBaUI7Z0JBQ3BCLE9BQU9uQyxhQUFhb0M7WUFDdEI7WUFFQSxNQUFNQyxlQUFlVCxTQUFTVSxlQUFlO1lBRTdDLE9BQU8sSUFBSSxDQUFDQyxpQkFBaUIsQ0FBQ0YsY0FBY1IsZ0JBQWdCQyxpQkFBaUIsQ0FBQ1U7Z0JBQzVFLElBQUlBLG1CQUFtQjtvQkFDckJKLGtCQUFrQjtnQkFDcEI7Z0JBRUEsSUFBSUEsaUJBQWlCO29CQUNuQnJELFFBQVF5QixLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRXVCLGVBQWUscUJBQXFCLEVBQUU3Qix3QkFBd0IscUJBQXFCLENBQUM7Z0JBQ3ZIO2dCQUVBLE9BQU9GLGFBQWFvQztZQUN0QjtRQUNGO0lBQ0Y7SUFFQUYsY0FBY0YsUUFBUSxFQUFFSCxjQUFjLEVBQUVDLGVBQWUsRUFBRTlCLFlBQVksRUFBRTtRQUNyRSxNQUFNakIsVUFBVStDLGlCQUNWVyxpQkFBaUJULFNBQVM3QixTQUFTLElBQ25DWixtQkFBbUIsSUFBSSxDQUFDRixtQkFBbUIsSUFDM0NxRCx5QkFBeUJuRCxpQkFBaUJZLFNBQVM7UUFFekRwQixRQUFRcUIsS0FBSyxDQUFDLENBQUMsY0FBYyxFQUFFcUMsZUFBZSxzQkFBc0IsRUFBRUMsdUJBQXVCLHNCQUFzQixDQUFDO1FBRXBILE1BQU1DLGtCQUFrQlgsU0FBU1ksVUFBVTtRQUUzQ2Qsa0JBQWtCYSxpQkFBa0IsR0FBRztRQUV2QyxPQUFPRSxJQUFBQSxhQUFJLEVBQUMsQ0FBQ2Y7WUFDWCxPQUFPZ0IsSUFBQUEsa0JBQVMsRUFBQyxDQUFDaEI7Z0JBQ2hCLE1BQU1pQixvQkFBb0JmLFNBQVNnQixZQUFZO2dCQUUvQyxPQUFPekQsaUJBQWlCMEQsY0FBYyxDQUFDRixtQkFBbUJsQixnQkFBZ0JDLGlCQUFpQixDQUFDb0I7b0JBQzFGLElBQUlmLGtCQUFrQjtvQkFFdEIsSUFBSWUsMEJBQTBCO3dCQUM1QnBCLGdCQUFnQnFCLE1BQU0sQ0FBQ3BFO3dCQUV2Qm9ELGtCQUFrQjtvQkFDcEI7b0JBRUEsSUFBSUEsaUJBQWlCO3dCQUNuQnBELFFBQVF5QixLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRWlDLGVBQWUsc0JBQXNCLEVBQUVDLHVCQUF1QixvQkFBb0IsQ0FBQztvQkFDdEg7b0JBRUEsT0FBTzFDLGFBQWFtQztnQkFDdEI7WUFDRixHQUFHTDtRQUNMLEdBQUdBLGlCQUFpQi9DO0lBQ3ZCO0lBRUNxRSxpQkFBaUJDLFdBQVcsRUFBRUMsaUJBQWlCLEVBQUV6QixjQUFjLEVBQUVDLGVBQWUsRUFBRTlCLFlBQVksRUFBRTtRQUM5RixNQUFNakIsVUFBVStDLGlCQUNWeUIsb0JBQW9CRixZQUFZbEQsU0FBUyxJQUN6Q3FELDBCQUEwQkYsa0JBQWtCbkQsU0FBUztRQUUzRHBCLFFBQVFxQixLQUFLLENBQUMsQ0FBQyxjQUFjLEVBQUVtRCxrQkFBa0Isd0JBQXdCLEVBQUVDLHdCQUF3Qix1QkFBdUIsQ0FBQztRQUUzSCxNQUFNQyxxQkFBcUJKLFlBQVlULFVBQVU7UUFFakRkLGtCQUFrQjJCLG9CQUFxQixHQUFHO1FBRTFDLE9BQU9aLElBQUFBLGFBQUksRUFBQyxDQUFDZjtZQUNYLE9BQU9nQixJQUFBQSxrQkFBUyxFQUFDLENBQUNoQjtnQkFDaEIsTUFBTTRCLHVCQUF1QkwsWUFBWUwsWUFBWTtnQkFFckQsT0FBT00sa0JBQWtCTCxjQUFjLENBQUNTLHNCQUFzQjdCLGdCQUFnQkMsaUJBQWlCLENBQUM2QjtvQkFDOUYsSUFBSUMscUJBQXFCO29CQUV6QixJQUFJRCw2QkFBNkI7d0JBQy9CN0IsZ0JBQWdCcUIsTUFBTSxDQUFDcEU7d0JBRXZCNkUscUJBQXFCO29CQUN2QjtvQkFFQSxJQUFJQSxvQkFBb0I7d0JBQ3RCN0UsUUFBUXlCLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFK0Msa0JBQWtCLHdCQUF3QixFQUFFQyx3QkFBd0IscUJBQXFCLENBQUM7b0JBQzdIO29CQUVBLE9BQU94RCxhQUFhNEQ7Z0JBQ3RCO1lBQ0YsR0FBRzlCO1FBQ0wsR0FBR0EsaUJBQWlCL0M7SUFDdEI7SUFFQXdELGtCQUFrQkYsWUFBWSxFQUFFUixjQUFjLEVBQUVDLGVBQWUsRUFBRTlCLFlBQVksRUFBRTtRQUM3RSxNQUFNTixxQkFBcUIsSUFBSSxDQUFDRixxQkFBcUIsSUFDL0NxRSxxQkFBcUJ4QixhQUFheUIsTUFBTSxFQUN4Q0MsMkJBQTJCckUsbUJBQW1Cb0UsTUFBTTtRQUUxRCxJQUFJRCx1QkFBdUJFLDBCQUEwQjtZQUNuRCxNQUFNdkIsb0JBQW9CO1lBRTFCLE9BQU94QyxhQUFhd0M7UUFDdEI7UUFFQSxJQUFJd0IsUUFBUUgsb0JBQW9CLEdBQUc7UUFFbkMsT0FBT25GLDJCQUEyQjJELGNBQWMsQ0FBQ2dCLGFBQWFyRDtZQUM1RGdFO1lBRUEsTUFBTVYsb0JBQW9CNUQsa0JBQWtCLENBQUNzRSxNQUFNO1lBRW5ELE9BQU8sSUFBSSxDQUFDWixnQkFBZ0IsQ0FBQ0MsYUFBYUMsbUJBQW1CekIsZ0JBQWdCQyxpQkFBaUI5QjtRQUNoRyxHQUFHQTtJQUNMO0lBRUEsT0FBT2lFLE9BQU8sb0JBQW9CO0lBRWxDLE9BQU9DLFNBQVNDLElBQUksRUFBRXBGLE9BQU8sRUFBRTtRQUM3QixJQUFJcUYsb0JBQW9CO1FBRXhCLE1BQU0sRUFBRUgsSUFBSSxFQUFFLEdBQUdFO1FBRWpCLElBQUksSUFBSSxDQUFDRixJQUFJLEtBQUtBLE1BQU07WUFDdEJJLElBQUFBLG9CQUFXLEVBQUMsQ0FBQ3RGO2dCQUNYLE1BQU0sRUFBRUMsTUFBTSxFQUFFLEdBQUdtRixNQUNidEUsd0JBQXdCeUUsSUFBQUEseUNBQTRCLEVBQUN0RixRQUFRRCxVQUM3REUsT0FBT1ksdUJBQ1BYLGFBQWFWLG1CQUFtQjJGLE9BQ2hDaEYsYUFBYW9GLG9DQUFvQzFFLHVCQUF1QmQ7Z0JBRTlFQSxVQUFVO2dCQUVWcUYsb0JBQW9CLElBQUl2RixrQkFBa0JFLFNBQVNDLFFBQVFDLE1BQU1DLFlBQVlDO1lBQy9FLEdBQUdKO1FBQ0w7UUFFQSxPQUFPcUY7SUFDVDtJQUVBLE9BQU9JLGNBQWN0RCxTQUFTLEVBQUVuQyxPQUFPLEVBQUU7UUFDdkMsTUFBTTBGLGdCQUFnQnZELFVBQVV0QixPQUFPLElBQ2pDVyxvQkFBb0JtRSxJQUFBQSwyQ0FBa0MsRUFBQ0QsZUFBZTFGO1FBRTVFLE9BQU93QjtJQUNUO0FBQ0Y7QUFFQSxTQUFTZ0Usb0NBQW9DMUUscUJBQXFCLEVBQUVkLE9BQU87SUFDekUsTUFBTTRGLGlCQUFpQjlFLHNCQUFzQitFLGlCQUFpQixJQUN4RHpGLGFBQWF3RixlQUFlRSxHQUFHLENBQUMsQ0FBQ0M7UUFDL0IsTUFBTTVELFlBQVluQyxRQUFRZ0csNEJBQTRCLENBQUNEO1FBRXZELE9BQU81RDtJQUNUO0lBRU4sT0FBTy9CO0FBQ1QifQ==
|
|
@@ -9,12 +9,12 @@ Object.defineProperty(exports, "default", {
|
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
11
|
const _occamlanguages = require("occam-languages");
|
|
12
|
+
const _continuation = require("../../utilities/continuation");
|
|
12
13
|
const _elements = require("../../elements");
|
|
13
14
|
const _context = require("../../utilities/context");
|
|
14
15
|
const _instantiate = require("../../process/instantiate");
|
|
15
16
|
const _string = require("../../utilities/string");
|
|
16
17
|
const _element = require("../../utilities/element");
|
|
17
|
-
const _state = require("../../utilities/state");
|
|
18
18
|
const _default = (0, _elements.define)(class ImplicitAssumption extends _occamlanguages.Element {
|
|
19
19
|
constructor(context, string, node, breakPoint, statement){
|
|
20
20
|
super(context, string, node, breakPoint);
|
|
@@ -54,80 +54,64 @@ const _default = (0, _elements.define)(class ImplicitAssumption extends _occamla
|
|
|
54
54
|
const implicitAssumptionNode = this.getImplicitAssumptionNode(), assumptionNode = implicitAssumptionNode, assumption = context.findAssumptionByAssumptionNode(assumptionNode);
|
|
55
55
|
return assumption;
|
|
56
56
|
}
|
|
57
|
-
|
|
58
|
-
let
|
|
59
|
-
const implicitAssumptionString = this.getString(); ///
|
|
60
|
-
context.trace(`Validating the '${implicitAssumptionString}' implicit
|
|
61
|
-
let
|
|
62
|
-
|
|
57
|
+
validate(state, context, continuation) {
|
|
58
|
+
let validates;
|
|
59
|
+
const specificContext = context, implicitAssumptionString = this.getString(); ///
|
|
60
|
+
context.trace(`Validating the '${implicitAssumptionString}' implicit assumption...`);
|
|
61
|
+
let assumption;
|
|
62
|
+
assumption = this.findAssumption(context);
|
|
63
63
|
if (assumption !== null) {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
64
|
+
const implicitAssumption = assumption; ///
|
|
65
|
+
context.debug(`The '${implicitAssumptionString}' implicitA asumption is already present.`);
|
|
66
|
+
validates = continuation(implicitAssumption, context);
|
|
67
67
|
} else {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
validates =
|
|
68
|
+
assumption = this; ///
|
|
69
|
+
context = this.getContext();
|
|
70
|
+
(0, _context.attempt)((context)=>{
|
|
71
|
+
const validateStatement = this.validateStatement.bind(this);
|
|
72
|
+
validates = (0, _continuation.all)([
|
|
73
|
+
validateStatement
|
|
74
|
+
], state, context, (state, context)=>{
|
|
75
|
+
let validates;
|
|
76
|
+
this.commit(context);
|
|
77
|
+
const implicitAssumption = assumption; ///
|
|
78
|
+
context = specificContext; ///
|
|
79
|
+
validates = continuation(implicitAssumption, context);
|
|
80
|
+
return validates;
|
|
81
|
+
});
|
|
82
|
+
if (validates) {
|
|
83
|
+
context = specificContext; ///
|
|
84
|
+
context.addAssumption(assumption);
|
|
80
85
|
}
|
|
81
|
-
}
|
|
82
|
-
if (validates) {
|
|
83
|
-
implicitAssumption = this; ///
|
|
84
|
-
const assumption = implicitAssumption; ///
|
|
85
|
-
context.addAssumption(assumption);
|
|
86
|
-
}
|
|
86
|
+
}, context);
|
|
87
87
|
}
|
|
88
|
+
context = specificContext; ///
|
|
88
89
|
if (validates) {
|
|
89
|
-
context.debug(`...validated the '${implicitAssumptionString}'
|
|
90
|
+
context.debug(`...validated the '${implicitAssumptionString}' implicit assumption.`);
|
|
90
91
|
}
|
|
91
|
-
return
|
|
92
|
+
return validates;
|
|
92
93
|
}
|
|
93
|
-
|
|
94
|
-
let statementValidates
|
|
94
|
+
validateStatement(state, context, continuation) {
|
|
95
|
+
let statementValidates;
|
|
95
96
|
const implicitAssumptionString = this.getString(); ///
|
|
96
97
|
context.trace(`Validating the '${implicitAssumptionString}' implicit assumption's statement...`);
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
98
|
+
statementValidates = this.statement.validate(state, context, (statement, context)=>{
|
|
99
|
+
let validates;
|
|
100
|
+
this.statement = statement;
|
|
101
|
+
validates = continuation(state, context);
|
|
102
|
+
return validates;
|
|
103
|
+
});
|
|
101
104
|
if (statementValidates) {
|
|
102
105
|
context.debug(`...validated the '${implicitAssumptionString}' implicit assumption's statement.`);
|
|
103
106
|
}
|
|
104
107
|
return statementValidates;
|
|
105
108
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
const implicitAssumptionString = this.getString(); ///
|
|
109
|
-
context.trace(`Validating the '${implicitAssumptionString}' declared implicitAssumption...`);
|
|
110
|
-
validateWhenDeclared = true;
|
|
111
|
-
if (validateWhenDeclared) {
|
|
112
|
-
context.debug(`...validated the '${implicitAssumptionString}' declared implicitAssumption.`);
|
|
113
|
-
}
|
|
114
|
-
return validateWhenDeclared;
|
|
115
|
-
}
|
|
116
|
-
validateWhenDerived(context) {
|
|
117
|
-
let validatesWhenDerived;
|
|
118
|
-
const implicitAssumptionString = this.getString(); ///
|
|
119
|
-
context.trace(`Validating the '${implicitAssumptionString}' derived implicitAssumption...`);
|
|
120
|
-
validatesWhenDerived = true;
|
|
121
|
-
if (validatesWhenDerived) {
|
|
122
|
-
context.debug(`...validated the '${implicitAssumptionString}' derived implicitAssumption.`);
|
|
123
|
-
}
|
|
124
|
-
return validatesWhenDerived;
|
|
125
|
-
}
|
|
126
|
-
async unifyStatement(statement, generalContext, specificContext) {
|
|
109
|
+
unifyStatement(statement, generalContext, specificContext) {
|
|
110
|
+
debugger;
|
|
127
111
|
let statementUnifies;
|
|
128
112
|
const context = specificContext, statementString = statement.getString(), proofAssertionString = this.getString(); ///
|
|
129
113
|
context.trace(`Unifying the '${statementString}' statement with the '${proofAssertionString}' implicitAssumption's statement...`);
|
|
130
|
-
statementUnifies =
|
|
114
|
+
statementUnifies = this.statement.unifyStatement(statement, generalContext, specificContext);
|
|
131
115
|
if (statementUnifies) {
|
|
132
116
|
context.debug(`...unified the '${statementString}' statement with the '${proofAssertionString}' implicitAssumption's statement.`);
|
|
133
117
|
}
|
|
@@ -136,7 +120,7 @@ const _default = (0, _elements.define)(class ImplicitAssumption extends _occamla
|
|
|
136
120
|
static name = "ImplicitAssumption";
|
|
137
121
|
static fromStatement(statement, context) {
|
|
138
122
|
let implicitAssumption;
|
|
139
|
-
(0, _context.
|
|
123
|
+
(0, _context.ablate)((context)=>{
|
|
140
124
|
(0, _context.instantiate)((context)=>{
|
|
141
125
|
const implicitAssumptionString = (0, _string.implicitAssumptionStringFromStatement)(statement), string = implicitAssumptionString, implicitAssumptionNode = (0, _instantiate.instantiateImplicitAssumption)(string, context);
|
|
142
126
|
implicitAssumption = (0, _element.implicitAssumptionFromImplicitAssumptionNode)(implicitAssumptionNode, context);
|
|
@@ -146,4 +130,4 @@ const _default = (0, _elements.define)(class ImplicitAssumption extends _occamla
|
|
|
146
130
|
}
|
|
147
131
|
});
|
|
148
132
|
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc3VtcHRpb24vaW1wbGljaXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgcGFyZSwgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlSW1wbGljaXRBc3N1bXB0aW9uIH0gZnJvbSBcIi4uLy4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IGltcGxpY2l0QXNzdW1wdGlvblN0cmluZ0Zyb21TdGF0ZW1lbnQgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgaW1wbGljaXRBc3N1bXB0aW9uRnJvbUltcGxpY2l0QXNzdW1wdGlvbk5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcbmltcG9ydCB7aXNEZWNsYXJlZH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgSW1wbGljaXRBc3N1bXB0aW9uIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgc3RhdGVtZW50KSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudDtcbiAgfVxuXG4gIGdldEltcGxpY2l0QXNzdW1wdGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGltcGxpY2l0QXNzdW1wdGlvbk5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gaW1wbGljaXRBc3N1bXB0aW9uTm9kZTtcbiAgfVxuXG4gIGdldFN0YXRlbWVudE5vZGUoKSB7IHJldHVybiB0aGlzLnN0YXRlbWVudC5nZXRTdGF0ZW1lbnROb2RlKCk7IH1cblxuICBnZXRSZWZlcmVuY2UoKSB7XG4gICAgY29uc3QgcmVmZXJlbmNlID0gbnVsbDtcblxuICAgIHJldHVybiByZWZlcmVuY2U7XG4gIH1cblxuICBpc0VxdWFsVG8oaW1wbGljaXRBc3N1bXB0aW9uKSB7XG4gICAgY29uc3QgaW1wbGljaXRBc3N1bXB0aW9uTm9kZSA9IGltcGxpY2l0QXNzdW1wdGlvbi5nZXROb2RlKCksXG4gICAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9uTm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoSW1wbGljaXRBc3N1bXB0aW9uTm9kZShpbXBsaWNpdEFzc3VtcHRpb25Ob2RlKSxcbiAgICAgICAgICBlcXVhbFRvID0gaW1wbGljaXRBc3N1bXB0aW9uTm9kZU1hdGNoZXM7ICAvLy9cblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgbWF0Y2hJbXBsaWNpdEFzc3VtcHRpb25Ob2RlKGltcGxpY2l0QXNzdW1wdGlvbk5vZGUpIHtcbiAgICBjb25zdCBub2RlID0gaW1wbGljaXRBc3N1bXB0aW9uTm9kZSwgLy8vXG4gICAgICAgICAgbm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoTm9kZShub2RlKSxcbiAgICAgICAgICBpbXBsaWNpdEFzc3VtcHRpb25Ob2RlTWF0Y2hlcyA9IG5vZGVNYXRjaGVzOyAvLy9cblxuICAgIHJldHVybiBpbXBsaWNpdEFzc3VtcHRpb25Ob2RlTWF0Y2hlcztcbiAgfVxuXG4gIGZpbmRTdWJwcm9vZkFzc2VydGlvbihjb250ZXh0KSB7XG4gICAgbGV0IHN1YnByb29mQXNzZXJ0aW9uID0gbnVsbDtcblxuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSB0aGlzLmdldFN0YXRlbWVudE5vZGUoKSxcbiAgICAgICAgICBzdWJwcm9vZkFzc2VydGlvbk5vZGUgPSBzdGF0ZW1lbnROb2RlLmdldFN1YnByb29mQXNzZXJ0aW9uTm9kZSgpO1xuXG4gICAgaWYgKHN1YnByb29mQXNzZXJ0aW9uTm9kZSAhPT0gbnVsbCkge1xuICAgICAgc3VicHJvb2ZBc3NlcnRpb24gPSBjb250ZXh0LmZpbmRBc3NlcnRpb25CeUFzc2VydGlvbk5vZGUoc3VicHJvb2ZBc3NlcnRpb25Ob2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VicHJvb2ZBc3NlcnRpb247XG4gIH1cblxuICBmaW5kQXNzdW1wdGlvbihjb250ZXh0KSB7XG4gICAgY29uc3QgaW1wbGljaXRBc3N1bXB0aW9uTm9kZSA9IHRoaXMuZ2V0SW1wbGljaXRBc3N1bXB0aW9uTm9kZSgpLFxuICAgICAgICAgIGFzc3VtcHRpb25Ob2RlID0gaW1wbGljaXRBc3N1bXB0aW9uTm9kZSwgIC8vL1xuICAgICAgICAgIGFzc3VtcHRpb24gPSBjb250ZXh0LmZpbmRBc3N1bXB0aW9uQnlBc3N1bXB0aW9uTm9kZShhc3N1bXB0aW9uTm9kZSk7XG5cbiAgICByZXR1cm4gYXNzdW1wdGlvbjtcbiAgfVxuXG4gIGFzeW5jIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0KSB7XG4gICAgbGV0IGltcGxpY2l0QXNzdW1wdGlvbiA9IG51bGw7XG5cbiAgICBjb25zdCBpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmd9JyBpbXBsaWNpdCBxc3N1bXB0aW9uLi4uYCk7XG5cbiAgICBsZXQgdmFsaWRhdGVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBhc3N1bXB0aW9uID0gdGhpcy5maW5kQXNzdW1wdGlvbihjb250ZXh0KTtcblxuICAgIGlmIChhc3N1bXB0aW9uICE9PSBudWxsKSB7XG4gICAgICB2YWxpZGF0ZXMgPSB0cnVlO1xuXG4gICAgICBpbXBsaWNpdEFzc3VtcHRpb24gPSBhc3N1bXB0aW9uOyAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udGhlICcke2ltcGxpY2l0QXNzdW1wdGlvblN0cmluZ30nIGltcGxpY2l0IHFzc3VtcHRpb24gaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSBhd2FpdCB0aGlzLnZhbGlkYXRlU3RhdGVtZW50KGNvbnRleHQpO1xuXG4gICAgICBpZiAoc3RhdGVtZW50VmFsaWRhdGVzKSB7XG4gICAgICAgIGRlYnVnZ2VyXG5cbiAgICAgICAgbGV0IHZhbGlkYXRlV2hlbkRlY2xhcmVkID0gZmFsc2UsXG4gICAgICAgICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IGRlY2xhcmVkID0gaXNEZWNsYXJlZChzdGF0ZSk7XG5cbiAgICAgICAgaWYgKGRlY2xhcmVkKSB7XG4gICAgICAgICAgdmFsaWRhdGVXaGVuRGVjbGFyZWQgPSB0aGlzLnZhbGlkYXRlV2hlblN0YXRlZChjb250ZXh0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRoaXMudmFsaWRhdGVXaGVuRGVyaXZlZChjb250ZXh0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWxpZGF0ZVdoZW5EZWNsYXJlZCB8fCB2YWxpZGF0ZXNXaGVuRGVyaXZlZCkge1xuICAgICAgICAgIHZhbGlkYXRlcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgICBpbXBsaWNpdEFzc3VtcHRpb24gPSB0aGlzOyAgLy8vXG5cbiAgICAgICAgY29uc3QgYXNzdW1wdGlvbiA9IGltcGxpY2l0QXNzdW1wdGlvbjsgIC8vL1xuXG4gICAgICAgIGNvbnRleHQuYWRkQXNzdW1wdGlvbihhc3N1bXB0aW9uKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2ltcGxpY2l0QXNzdW1wdGlvblN0cmluZ30nIGltcGxpY2l0QXNzdW1wdGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW1wbGljaXRBc3N1bXB0aW9uO1xuICB9XG5cbiAgYXN5bmMgdmFsaWRhdGVTdGF0ZW1lbnQoY29udGV4dCkge1xuICAgIGxldCBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGltcGxpY2l0QXNzdW1wdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2ltcGxpY2l0QXNzdW1wdGlvblN0cmluZ30nIGltcGxpY2l0IGFzc3VtcHRpb24ncyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIGNvbnN0IHN0YXRlbWVudCA9IGF3YWl0IHRoaXMuc3RhdGVtZW50LnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBjb250ZXh0KTtcblxuICAgIGlmIChzdGF0ZW1lbnQgIT09IG51bGwpIHtcbiAgICAgIHN0YXRlbWVudFZhbGlkYXRlcyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHN0YXRlbWVudFZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmd9JyBpbXBsaWNpdCBhc3N1bXB0aW9uJ3Mgc3RhdGVtZW50LmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZW1lbnRWYWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5TdGF0ZWQoY29udGV4dCkge1xuICAgIGxldCB2YWxpZGF0ZVdoZW5EZWNsYXJlZDtcblxuICAgIGNvbnN0IGltcGxpY2l0QXNzdW1wdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2ltcGxpY2l0QXNzdW1wdGlvblN0cmluZ30nIGRlY2xhcmVkIGltcGxpY2l0QXNzdW1wdGlvbi4uLmApO1xuXG4gICAgdmFsaWRhdGVXaGVuRGVjbGFyZWQgPSB0cnVlXG5cbiAgICBpZiAodmFsaWRhdGVXaGVuRGVjbGFyZWQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7aW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nfScgZGVjbGFyZWQgaW1wbGljaXRBc3N1bXB0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZVdoZW5EZWNsYXJlZDtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlcml2ZWQoY29udGV4dCkge1xuICAgIGxldCB2YWxpZGF0ZXNXaGVuRGVyaXZlZDtcblxuICAgIGNvbnN0IGltcGxpY2l0QXNzdW1wdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2ltcGxpY2l0QXNzdW1wdGlvblN0cmluZ30nIGRlcml2ZWQgaW1wbGljaXRBc3N1bXB0aW9uLi4uYCk7XG5cbiAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRydWVcblxuICAgIGlmICh2YWxpZGF0ZXNXaGVuRGVyaXZlZCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmd9JyBkZXJpdmVkIGltcGxpY2l0QXNzdW1wdGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzV2hlbkRlcml2ZWQ7XG4gIH1cblxuICBhc3luYyB1bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpIHtcbiAgICBsZXQgc3RhdGVtZW50VW5pZmllcztcblxuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsIC8vL1xuICAgICAgICAgIHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBwcm9vZkFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7cHJvb2ZBc3NlcnRpb25TdHJpbmd9JyBpbXBsaWNpdEFzc3VtcHRpb24ncyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIHN0YXRlbWVudFVuaWZpZXMgPSBhd2FpdCB0aGlzLnN0YXRlbWVudC51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtwcm9vZkFzc2VydGlvblN0cmluZ30nIGltcGxpY2l0QXNzdW1wdGlvbidzIHN0YXRlbWVudC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGVtZW50VW5pZmllcztcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJJbXBsaWNpdEFzc3VtcHRpb25cIjtcblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBsZXQgaW1wbGljaXRBc3N1bXB0aW9uO1xuXG4gICAgcGFyZSgoY29udGV4dCkgPT4ge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgaW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nID0gaW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nRnJvbVN0YXRlbWVudChzdGF0ZW1lbnQpLFxuICAgICAgICAgICAgICBzdHJpbmcgPSBpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmcsICAvLy9cbiAgICAgICAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9uTm9kZSA9IGluc3RhbnRpYXRlSW1wbGljaXRBc3N1bXB0aW9uKHN0cmluZywgY29udGV4dCk7XG5cbiAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9uID0gaW1wbGljaXRBc3N1bXB0aW9uRnJvbUltcGxpY2l0QXNzdW1wdGlvbk5vZGUoaW1wbGljaXRBc3N1bXB0aW9uTm9kZSwgY29udGV4dCk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBpbXBsaWNpdEFzc3VtcHRpb247XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbImRlZmluZSIsIkltcGxpY2l0QXNzdW1wdGlvbiIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJzdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJnZXRJbXBsaWNpdEFzc3VtcHRpb25Ob2RlIiwiZ2V0Tm9kZSIsImltcGxpY2l0QXNzdW1wdGlvbk5vZGUiLCJnZXRTdGF0ZW1lbnROb2RlIiwiZ2V0UmVmZXJlbmNlIiwicmVmZXJlbmNlIiwiaXNFcXVhbFRvIiwiaW1wbGljaXRBc3N1bXB0aW9uIiwiaW1wbGljaXRBc3N1bXB0aW9uTm9kZU1hdGNoZXMiLCJtYXRjaEltcGxpY2l0QXNzdW1wdGlvbk5vZGUiLCJlcXVhbFRvIiwibm9kZU1hdGNoZXMiLCJtYXRjaE5vZGUiLCJmaW5kU3VicHJvb2ZBc3NlcnRpb24iLCJzdWJwcm9vZkFzc2VydGlvbiIsInN0YXRlbWVudE5vZGUiLCJzdWJwcm9vZkFzc2VydGlvbk5vZGUiLCJnZXRTdWJwcm9vZkFzc2VydGlvbk5vZGUiLCJmaW5kQXNzZXJ0aW9uQnlBc3NlcnRpb25Ob2RlIiwiZmluZEFzc3VtcHRpb24iLCJhc3N1bXB0aW9uTm9kZSIsImFzc3VtcHRpb24iLCJmaW5kQXNzdW1wdGlvbkJ5QXNzdW1wdGlvbk5vZGUiLCJ2YWxpZGF0ZSIsInN0YXRlIiwiaW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJ2YWxpZGF0ZXMiLCJkZWJ1ZyIsInN0YXRlbWVudFZhbGlkYXRlcyIsInZhbGlkYXRlU3RhdGVtZW50IiwidmFsaWRhdGVXaGVuRGVjbGFyZWQiLCJ2YWxpZGF0ZXNXaGVuRGVyaXZlZCIsImRlY2xhcmVkIiwiaXNEZWNsYXJlZCIsInZhbGlkYXRlV2hlblN0YXRlZCIsInZhbGlkYXRlV2hlbkRlcml2ZWQiLCJhZGRBc3N1bXB0aW9uIiwidW5pZnlTdGF0ZW1lbnQiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInN0YXRlbWVudFVuaWZpZXMiLCJzdGF0ZW1lbnRTdHJpbmciLCJwcm9vZkFzc2VydGlvblN0cmluZyIsIm5hbWUiLCJmcm9tU3RhdGVtZW50IiwicGFyZSIsImluc3RhbnRpYXRlIiwiaW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nRnJvbVN0YXRlbWVudCIsImluc3RhbnRpYXRlSW1wbGljaXRBc3N1bXB0aW9uIiwiaW1wbGljaXRBc3N1bXB0aW9uRnJvbUltcGxpY2l0QXNzdW1wdGlvbk5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVdBOzs7ZUFBQTs7O2dDQVR3QjswQkFFRDt5QkFDVzs2QkFDWTt3QkFDUTt5QkFDTzt1QkFDcEM7TUFFekIsV0FBZUEsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQywyQkFBMkJDLHVCQUFPO0lBQzVELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsU0FBUyxDQUFFO1FBQ3hELEtBQUssQ0FBQ0osU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDQyxTQUFTLEdBQUdBO0lBQ25CO0lBRUFDLGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQ0QsU0FBUztJQUN2QjtJQUVBRSw0QkFBNEI7UUFDMUIsTUFBTUosT0FBTyxJQUFJLENBQUNLLE9BQU8sSUFDbkJDLHlCQUF5Qk4sTUFBTyxHQUFHO1FBRXpD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
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc3VtcHRpb24vaW1wbGljaXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGFsbCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGludWF0aW9uXCI7XG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGFibGF0ZSwgYXR0ZW1wdCwgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlSW1wbGljaXRBc3N1bXB0aW9uIH0gZnJvbSBcIi4uLy4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IGltcGxpY2l0QXNzdW1wdGlvblN0cmluZ0Zyb21TdGF0ZW1lbnQgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgaW1wbGljaXRBc3N1bXB0aW9uRnJvbUltcGxpY2l0QXNzdW1wdGlvbk5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIEltcGxpY2l0QXNzdW1wdGlvbiBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgfVxuXG4gIGdldFN0YXRlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRJbXBsaWNpdEFzc3VtcHRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBpbXBsaWNpdEFzc3VtcHRpb25Ob2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGltcGxpY2l0QXNzdW1wdGlvbk5vZGU7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnROb2RlKCkgeyByZXR1cm4gdGhpcy5zdGF0ZW1lbnQuZ2V0U3RhdGVtZW50Tm9kZSgpOyB9XG5cbiAgZ2V0UmVmZXJlbmNlKCkge1xuICAgIGNvbnN0IHJlZmVyZW5jZSA9IG51bGw7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlO1xuICB9XG5cbiAgaXNFcXVhbFRvKGltcGxpY2l0QXNzdW1wdGlvbikge1xuICAgIGNvbnN0IGltcGxpY2l0QXNzdW1wdGlvbk5vZGUgPSBpbXBsaWNpdEFzc3VtcHRpb24uZ2V0Tm9kZSgpLFxuICAgICAgICAgIGltcGxpY2l0QXNzdW1wdGlvbk5vZGVNYXRjaGVzID0gdGhpcy5tYXRjaEltcGxpY2l0QXNzdW1wdGlvbk5vZGUoaW1wbGljaXRBc3N1bXB0aW9uTm9kZSksXG4gICAgICAgICAgZXF1YWxUbyA9IGltcGxpY2l0QXNzdW1wdGlvbk5vZGVNYXRjaGVzOyAgLy8vXG5cbiAgICByZXR1cm4gZXF1YWxUbztcbiAgfVxuXG4gIG1hdGNoSW1wbGljaXRBc3N1bXB0aW9uTm9kZShpbXBsaWNpdEFzc3VtcHRpb25Ob2RlKSB7XG4gICAgY29uc3Qgbm9kZSA9IGltcGxpY2l0QXNzdW1wdGlvbk5vZGUsIC8vL1xuICAgICAgICAgIG5vZGVNYXRjaGVzID0gdGhpcy5tYXRjaE5vZGUobm9kZSksXG4gICAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9uTm9kZU1hdGNoZXMgPSBub2RlTWF0Y2hlczsgLy8vXG5cbiAgICByZXR1cm4gaW1wbGljaXRBc3N1bXB0aW9uTm9kZU1hdGNoZXM7XG4gIH1cblxuICBmaW5kU3VicHJvb2ZBc3NlcnRpb24oY29udGV4dCkge1xuICAgIGxldCBzdWJwcm9vZkFzc2VydGlvbiA9IG51bGw7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gdGhpcy5nZXRTdGF0ZW1lbnROb2RlKCksXG4gICAgICAgICAgc3VicHJvb2ZBc3NlcnRpb25Ob2RlID0gc3RhdGVtZW50Tm9kZS5nZXRTdWJwcm9vZkFzc2VydGlvbk5vZGUoKTtcblxuICAgIGlmIChzdWJwcm9vZkFzc2VydGlvbk5vZGUgIT09IG51bGwpIHtcbiAgICAgIHN1YnByb29mQXNzZXJ0aW9uID0gY29udGV4dC5maW5kQXNzZXJ0aW9uQnlBc3NlcnRpb25Ob2RlKHN1YnByb29mQXNzZXJ0aW9uTm9kZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YnByb29mQXNzZXJ0aW9uO1xuICB9XG5cbiAgZmluZEFzc3VtcHRpb24oY29udGV4dCkge1xuICAgIGNvbnN0IGltcGxpY2l0QXNzdW1wdGlvbk5vZGUgPSB0aGlzLmdldEltcGxpY2l0QXNzdW1wdGlvbk5vZGUoKSxcbiAgICAgICAgICBhc3N1bXB0aW9uTm9kZSA9IGltcGxpY2l0QXNzdW1wdGlvbk5vZGUsICAvLy9cbiAgICAgICAgICBhc3N1bXB0aW9uID0gY29udGV4dC5maW5kQXNzdW1wdGlvbkJ5QXNzdW1wdGlvbk5vZGUoYXNzdW1wdGlvbk5vZGUpO1xuXG4gICAgcmV0dXJuIGFzc3VtcHRpb247XG4gIH1cblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHZhbGlkYXRlcztcblxuICAgIGNvbnN0IHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQsICAvLy9cbiAgICAgICAgICBpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmd9JyBpbXBsaWNpdCBhc3N1bXB0aW9uLi4uYCk7XG5cbiAgICBsZXQgYXNzdW1wdGlvbjtcblxuICAgIGFzc3VtcHRpb24gPSB0aGlzLmZpbmRBc3N1bXB0aW9uKGNvbnRleHQpO1xuXG4gICAgaWYgKGFzc3VtcHRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGltcGxpY2l0QXNzdW1wdGlvbiA9IGFzc3VtcHRpb247ICAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke2ltcGxpY2l0QXNzdW1wdGlvblN0cmluZ30nIGltcGxpY2l0QSBhc3VtcHRpb24gaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oaW1wbGljaXRBc3N1bXB0aW9uLCBjb250ZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzdW1wdGlvbiA9IHRoaXM7ICAvLy9cblxuICAgICAgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgICBhdHRlbXB0KChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRlU3RhdGVtZW50ID0gdGhpcy52YWxpZGF0ZVN0YXRlbWVudC5iaW5kKHRoaXMpO1xuXG4gICAgICAgIHZhbGlkYXRlcyA9IGFsbChbXG4gICAgICAgICAgdmFsaWRhdGVTdGF0ZW1lbnRcbiAgICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgICB0aGlzLmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICAgIGNvbnN0IGltcGxpY2l0QXNzdW1wdGlvbiA9IGFzc3VtcHRpb247ICAvLy9cblxuICAgICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihpbXBsaWNpdEFzc3VtcHRpb24sIGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICAgIGNvbnRleHQuYWRkQXNzdW1wdGlvbihhc3N1bXB0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfSwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmd9JyBpbXBsaWNpdCBhc3N1bXB0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVN0YXRlbWVudChzdGF0ZSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHN0YXRlbWVudFZhbGlkYXRlcztcblxuICAgIGNvbnN0IGltcGxpY2l0QXNzdW1wdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2ltcGxpY2l0QXNzdW1wdGlvblN0cmluZ30nIGltcGxpY2l0IGFzc3VtcHRpb24ncyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIHN0YXRlbWVudFZhbGlkYXRlcyA9IHRoaXMuc3RhdGVtZW50LnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoc3RhdGVtZW50LCBjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICB9KTtcblxuICAgIGlmIChzdGF0ZW1lbnRWYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7aW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nfScgaW1wbGljaXQgYXNzdW1wdGlvbidzIHN0YXRlbWVudC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGVtZW50VmFsaWRhdGVzO1xuICB9XG5cbiAgdW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gICAgZGVidWdnZXJcblxuICAgIGxldCBzdGF0ZW1lbnRVbmlmaWVzO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgLy8vXG4gICAgICAgICAgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICAgIHByb29mQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtwcm9vZkFzc2VydGlvblN0cmluZ30nIGltcGxpY2l0QXNzdW1wdGlvbidzIHN0YXRlbWVudC4uLmApO1xuXG4gICAgc3RhdGVtZW50VW5pZmllcyA9IHRoaXMuc3RhdGVtZW50LnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICBpZiAoc3RhdGVtZW50VW5pZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHdpdGggdGhlICcke3Byb29mQXNzZXJ0aW9uU3RyaW5nfScgaW1wbGljaXRBc3N1bXB0aW9uJ3Mgc3RhdGVtZW50LmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZW1lbnRVbmlmaWVzO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkltcGxpY2l0QXNzdW1wdGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICAgIGxldCBpbXBsaWNpdEFzc3VtcHRpb247XG5cbiAgICBhYmxhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IGltcGxpY2l0QXNzdW1wdGlvblN0cmluZyA9IGltcGxpY2l0QXNzdW1wdGlvblN0cmluZ0Zyb21TdGF0ZW1lbnQoc3RhdGVtZW50KSxcbiAgICAgICAgICAgICAgc3RyaW5nID0gaW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nLCAgLy8vXG4gICAgICAgICAgICAgIGltcGxpY2l0QXNzdW1wdGlvbk5vZGUgPSBpbnN0YW50aWF0ZUltcGxpY2l0QXNzdW1wdGlvbihzdHJpbmcsIGNvbnRleHQpO1xuXG4gICAgICAgIGltcGxpY2l0QXNzdW1wdGlvbiA9IGltcGxpY2l0QXNzdW1wdGlvbkZyb21JbXBsaWNpdEFzc3VtcHRpb25Ob2RlKGltcGxpY2l0QXNzdW1wdGlvbk5vZGUsIGNvbnRleHQpO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gaW1wbGljaXRBc3N1bXB0aW9uO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJkZWZpbmUiLCJJbXBsaWNpdEFzc3VtcHRpb24iLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50Iiwic3RhdGVtZW50IiwiZ2V0U3RhdGVtZW50IiwiZ2V0SW1wbGljaXRBc3N1bXB0aW9uTm9kZSIsImdldE5vZGUiLCJpbXBsaWNpdEFzc3VtcHRpb25Ob2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsImdldFJlZmVyZW5jZSIsInJlZmVyZW5jZSIsImlzRXF1YWxUbyIsImltcGxpY2l0QXNzdW1wdGlvbiIsImltcGxpY2l0QXNzdW1wdGlvbk5vZGVNYXRjaGVzIiwibWF0Y2hJbXBsaWNpdEFzc3VtcHRpb25Ob2RlIiwiZXF1YWxUbyIsIm5vZGVNYXRjaGVzIiwibWF0Y2hOb2RlIiwiZmluZFN1YnByb29mQXNzZXJ0aW9uIiwic3VicHJvb2ZBc3NlcnRpb24iLCJzdGF0ZW1lbnROb2RlIiwic3VicHJvb2ZBc3NlcnRpb25Ob2RlIiwiZ2V0U3VicHJvb2ZBc3NlcnRpb25Ob2RlIiwiZmluZEFzc2VydGlvbkJ5QXNzZXJ0aW9uTm9kZSIsImZpbmRBc3N1bXB0aW9uIiwiYXNzdW1wdGlvbk5vZGUiLCJhc3N1bXB0aW9uIiwiZmluZEFzc3VtcHRpb25CeUFzc3VtcHRpb25Ob2RlIiwidmFsaWRhdGUiLCJzdGF0ZSIsImNvbnRpbnVhdGlvbiIsInZhbGlkYXRlcyIsInNwZWNpZmljQ29udGV4dCIsImltcGxpY2l0QXNzdW1wdGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZGVidWciLCJnZXRDb250ZXh0IiwiYXR0ZW1wdCIsInZhbGlkYXRlU3RhdGVtZW50IiwiYmluZCIsImFsbCIsImNvbW1pdCIsImFkZEFzc3VtcHRpb24iLCJzdGF0ZW1lbnRWYWxpZGF0ZXMiLCJ1bmlmeVN0YXRlbWVudCIsImdlbmVyYWxDb250ZXh0Iiwic3RhdGVtZW50VW5pZmllcyIsInN0YXRlbWVudFN0cmluZyIsInByb29mQXNzZXJ0aW9uU3RyaW5nIiwibmFtZSIsImZyb21TdGF0ZW1lbnQiLCJhYmxhdGUiLCJpbnN0YW50aWF0ZSIsImltcGxpY2l0QXNzdW1wdGlvblN0cmluZ0Zyb21TdGF0ZW1lbnQiLCJpbnN0YW50aWF0ZUltcGxpY2l0QXNzdW1wdGlvbiIsImltcGxpY2l0QXNzdW1wdGlvbkZyb21JbXBsaWNpdEFzc3VtcHRpb25Ob2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFXQTs7O2VBQUE7OztnQ0FUd0I7OEJBRUo7MEJBQ0c7eUJBQ3NCOzZCQUNDO3dCQUNRO3lCQUNPO01BRTdELFdBQWVBLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsMkJBQTJCQyx1QkFBTztJQUM1RCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLFNBQVMsQ0FBRTtRQUN4RCxLQUFLLENBQUNKLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsU0FBUyxHQUFHQTtJQUNuQjtJ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
|