occam-verify-cli 1.0.686 → 1.0.688

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.
@@ -201,14 +201,14 @@ const _default = (0, _elements.define)(class Supposition extends _proofAssertion
201
201
  }
202
202
  static name = "Supposition";
203
203
  static fromJSON(json, context) {
204
- const premise = (0, _context.literally)((context)=>{
204
+ const supposition = (0, _context.literally)((context)=>{
205
205
  const { string } = json, suppositionNode = (0, _instantiate.instantiateSupposition)(string, context), node = suppositionNode, statement = (0, _json.statementFromJSON)(json, context), procedureCall = (0, _json.procedureCallFromJSON)(json, context), ephemeralContext = (0, _json.ephemeralContextFromJSON)(json, context);
206
206
  context = ephemeralContext; ///
207
- const premise = new Supposition(context, string, node, statement, procedureCall);
208
- return premise;
207
+ const supposition = new Supposition(context, string, node, statement, procedureCall);
208
+ return supposition;
209
209
  }, context);
210
- return premise;
210
+ return supposition;
211
211
  }
212
212
  });
213
213
 
214
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L3Byb29mQXNzZXJ0aW9uL3N1cHBvc2l0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgUHJvb2ZBc3NlcnRpb24gZnJvbSBcIi4uL3Byb29mQXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVTdXBwb3NpdGlvbiB9IGZyb20gXCIuLi8uLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyBhdHRlbXB0LCBsaW1pbmFsbHksIGxpdGVyYWxseSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgc3RhdGVtZW50RnJvbUpTT04sIHByb2NlZHVyZUNhbGxGcm9tSlNPTiwgc3RhdGVtZW50VG9TdGF0ZW1lbnRKU09OLCBlcGhlbWVyYWxDb250ZXh0RnJvbUpTT04sIHByb2NlZHVyZUNhbGxUb1Byb2NlZHVyZUNhbGxKU09OIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9qc29uXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBTdXBwb3NpdGlvbiBleHRlbmRzIFByb29mQXNzZXJ0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBzdGF0ZW1lbnQsIHByb2NlZHVyZUNhbGwpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIHN0YXRlbWVudCk7XG5cbiAgICB0aGlzLnByb2NlZHVyZUNhbGwgPSBwcm9jZWR1cmVDYWxsO1xuICB9XG5cbiAgZ2V0UHJvY2VkdXJlQ2FsbCgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9jZWR1cmVDYWxsO1xuICB9XG5cbiAgZ2V0U3VwcG9zaXRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBzdXBwb3NpdGlvbk5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBzdXBwb3NpdGlvbk5vZGU7XG4gIH1cblxuICBpc1N0YXRlZCgpIHtcbiAgICBjb25zdCBzdGF0ZWQgPSB0cnVlOyAvLy9cblxuICAgIHJldHVybiBzdGF0ZWQ7XG4gIH1cblxuICBhc3luYyB2ZXJpZnkoY29udGV4dCkge1xuICAgIGxldCB2ZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgYXdhaXQgdGhpcy5icmVhayhjb250ZXh0KTtcblxuICAgIGNvbnN0IHN1cHBvc2l0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uLi5gKTtcblxuICAgIGF0dGVtcHQoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlcyA9IHRoaXMudmFsaWRhdGUoY29udGV4dCk7XG5cbiAgICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgICAgdGhpcy5zZXRDb250ZXh0KGNvbnRleHQpO1xuXG4gICAgICAgIHZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9LCBjb250ZXh0KTtcblxuICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcmlmaWVzO1xuICB9XG5cbiAgdmFsaWRhdGUoY29udGV4dCkge1xuICAgIGxldCB2YWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHN1cHBvc2l0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0dGluZyB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi4uLmApO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50ID0gdGhpcy5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICBwcm9jZWR1cmVDYWxsID0gdGhpcy5nZXRQcm9jZWR1cmVDYWxsKCk7XG5cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIC8vL1xuICAgIH0gZWxzZSBpZiAoc3RhdGVtZW50ICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSB0aGlzLnZhbGlkYXRlU3RhdGVtZW50KGNvbnRleHQpO1xuXG4gICAgICBpZiAoc3RhdGVtZW50VmFsaWRhdGVzKSB7XG4gICAgICAgIHZhbGlkYXRlcyA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChwcm9jZWR1cmVDYWxsICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBwcm9jZWR1cmVDYWxsVmFsaWRhdGVzID0gdGhpcy52YWxpZGF0ZVByb2NlZHVyZUNhbGwoY29udGV4dCk7XG5cbiAgICAgIGlmIChwcm9jZWR1cmVDYWxsVmFsaWRhdGVzKSB7XG4gICAgICAgIHZhbGlkYXRlcyA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFVuYWJsZSB0byB2YWxpZGF0ZSB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbiBiZWNhdXNlIGl0IGlzIG5vbnNlbnNlLmApO1xuICAgIH1cblxuICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVQcm9jZWR1cmVDYWxsKGNvbnRleHQpIHtcbiAgICBsZXQgcHJvY2VkdXJlQ2FsbFZhbGlkYXRlcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3VwcG9zaXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICBwcm9jZWR1cmVDYWxsU3RyaW5nID0gdGhpcy5wcm9jZWR1cmVDYWxsLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdHRpbmcgdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24ncyAnJHtwcm9jZWR1cmVDYWxsU3RyaW5nfScgcHJvY2VkdXJlIGNhbGwuLi5gKTtcblxuICAgIHByb2NlZHVyZUNhbGxWYWxpZGF0ZXMgPSB0aGlzLnByb2NlZHVyZUNhbGwudmFsaWRhdGUoY29udGV4dCk7XG5cbiAgICBpZiAocHJvY2VkdXJlQ2FsbFZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uJ3MgJyR7cHJvY2VkdXJlQ2FsbFN0cmluZ30nIHByb2NlZHVyZSBjYWxsLmApO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9jZWR1cmVDYWxsVmFsaWRhdGVzO1xuICB9XG5cbiAgdW5pZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbiwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkge1xuICAgIGxldCBzdXBwb3NpdGlvblVuaWZpZXM7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAgLy8vXG4gICAgICBzcGVjaWZpY1N1cHBvc2l0aW9uID0gc3VwcG9zaXRpb24sICAvLy9cbiAgICAgIGdlbmVyYWxTdXBwb3NpdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgc3BlY2lmaWNTdXBwb3NpdGlvblN0cmluZyA9IHNwZWNpZmljU3VwcG9zaXRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3BlY2lmaWNTdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uIHdpdGggdGhlICcke2dlbmVyYWxTdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnQgPSBzcGVjaWZpY1N1cHBvc2l0aW9uLmdldFN0YXRlbWVudCgpLFxuICAgICAgc3RhdGVtZW50VW5pZmllcyA9IHRoaXMudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgIHN1cHBvc2l0aW9uVW5pZmllcyA9IHN0YXRlbWVudFVuaWZpZXM7ICAvLy9cblxuICAgIGlmIChzdXBwb3NpdGlvblVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3NwZWNpZmljU3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbiB3aXRoIHRoZSAnJHtnZW5lcmFsU3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb25VbmlmaWVzO1xuICB9XG5cbiAgdW5pZnlTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb24oc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uLCBjb250ZXh0KSB7XG4gICAgbGV0IHN1YnByb29mT3JQcm9vZkFzc2VydGlvblVuaWZpZXM7XG5cbiAgICBjb25zdCBzdXBwb3NpdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIHN1YnByb29mT3JQcm9vZkFzc2VydGlvblN0cmluZyA9IHN1YnByb29mT3JQcm9vZkFzc2VydGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25TdHJpbmd9JyBzdWJwcm9vZiBvciBwcm9vZiBhc3NlcnRpb24gd2l0aCB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi4uLmApO1xuXG4gICAgY29uc3Qgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uUHJvb2ZBc3NlcnRpb24gPSBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb24uaXNQcm9vZkFzc2VydGlvbigpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvb2ZBc3NlcnRpb24gPSBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25Qcm9vZkFzc2VydGlvbiA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJwcm9vZiA9IHN1YnByb29mT3JQcm9vZkFzc2VydGlvblByb29mQXNzZXJ0aW9uID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnByb29mT3JQcm9vZkFzc2VydGlvbjtcblxuICAgIGlmIChwcm9vZkFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgcHJvb2ZBc3NlcnRpb25VbmlmaWVzID0gdGhpcy51bmlmeVByb29mQXNzZXJ0aW9uKHByb29mQXNzZXJ0aW9uLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHByb29mQXNzZXJ0aW9uVW5pZmllcykge1xuICAgICAgICBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25VbmlmaWVzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3VicHJvb2YgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN1YnByb29mVW5pZmllcyA9IHRoaXMudW5pZnlTdWJwcm9vZihzdWJwcm9vZiwgY29udGV4dCk7XG5cbiAgICAgIGlmIChzdWJwcm9vZlVuaWZpZXMpIHtcbiAgICAgICAgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uVW5pZmllcyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHN1YnByb29mT3JQcm9vZkFzc2VydGlvblVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N1YnByb29mT3JQcm9vZkFzc2VydGlvblN0cmluZ30nIHN1YnByb29mIG9yIHByb29mIGFzc2VydGlvbiB3aXRoIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25VbmlmaWVzO1xuICB9XG5cbiAgdW5pZnlQcm9vZkFzc2VydGlvbihwcm9vZkFzc2VydGlvbiwgY29udGV4dCkge1xuICAgIGxldCBwcm9vZkFzc2VydGlvblVuaWZpZXM7XG5cbiAgICBjb25zdCBzdXBwb3NpdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIHByb29mQXNzZXJ0aW9uU3RyaW5nID0gcHJvb2ZBc3NlcnRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7cHJvb2ZBc3NlcnRpb25TdHJpbmd9JyBwcm9vZiBhc3NlcnRpb24gd2l0aCB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi4uLmApO1xuXG4gICAgY29uc3QgcHJvb2ZBc3NlcnRpb25Db250ZXh0ID0gcHJvb2ZBc3NlcnRpb24uZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHN1cHBvc2l0aW9uQ29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gc3VwcG9zaXRpb25Db250ZXh0LCAvLy9cbiAgICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBwcm9vZkFzc2VydGlvbkNvbnRleHQ7IC8vL1xuXG4gICAgcHJvb2ZBc3NlcnRpb25VbmlmaWVzID0gbGltaW5hbGx5KChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudCA9IHByb29mQXNzZXJ0aW9uLmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgICAgc3RhdGVtZW50VW5pZmllcyA9IHRoaXMudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgc3BlY2lmaWNDb250ZXh0LmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgaWYgKHByb29mQXNzZXJ0aW9uVW5pZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7cHJvb2ZBc3NlcnRpb25TdHJpbmd9JyBwcm9vZiBhc3NlcnRpb24gd2l0aCB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvb2ZBc3NlcnRpb25VbmlmaWVzO1xuICB9XG5cbiAgdW5pZnlTdWJwcm9vZihzdWJwcm9vZiwgY29udGV4dCkge1xuICAgIGxldCBzdWJwcm9vZlVuaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHN1cHBvc2l0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzdWJwcm9vZlN0cmluZyA9IHN1YnByb29mLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N1YnByb29mU3RyaW5nfScgc3VicHJvb2Ygd2l0aCB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi4uLmApO1xuXG4gICAgY29uc3Qgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29uc3QgZ2VuZXJhbENvbnRleHQgPSBjb250ZXh0OyAvLy9cblxuICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgIGNvbnN0IHN0YXRlbWVudCA9IHRoaXMuZ2V0U3RhdGVtZW50KCk7XG5cbiAgICBpZiAoc3RhdGVtZW50ICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgICAgIHN1YnByb29mQXNzZXJ0aW9uTm9kZSA9IHN0YXRlbWVudE5vZGUuZ2V0U3VicHJvb2ZBc3NlcnRpb25Ob2RlKCk7XG5cbiAgICAgIGlmIChzdWJwcm9vZkFzc2VydGlvbk5vZGUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0LCAvLy9cbiAgICAgICAgICAgICAgYXNzZXJ0aW9uTm9kZSA9IHN1YnByb29mQXNzZXJ0aW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBhc3NlcnRpb24gPSBjb250ZXh0LmZpbmRBc3NlcnRpb25CeUFzc2VydGlvbk5vZGUoYXNzZXJ0aW9uTm9kZSlcblxuICAgICAgICBpZiAoYXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICAgICAgY29uc3Qgc3VicHJvb2ZBc3NlcnRpb24gPSBhc3NlcnRpb247ICAvLy9cblxuICAgICAgICAgIHN1YnByb29mVW5pZmllcyA9IHN1YnByb29mQXNzZXJ0aW9uLnVuaWZ5U3VicHJvb2Yoc3VicHJvb2YsIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHN1YnByb29mVW5pZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3VicHJvb2ZTdHJpbmd9JyBzdWJwcm9vZiB3aXRoIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdWJwcm9vZlVuaWZpZXM7XG4gIH1cblxuICBhc3luYyB1bmlmeUluZGVwZW5kZW50bHkoY29udGV4dCkge1xuICAgIGxldCB1bmlmaWVzSW5kZXBlbmRlbnRseSA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3VwcG9zaXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uIGluZGVwZW5kZW50bHkuLi5gKTtcblxuICAgIGNvbnN0IHN0YXRlbWVudCA9IHRoaXMuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgcHJvY2VkdXJlQ2FsbCA9IHRoaXMuZ2V0UHJvY2VkdXJlQ2FsbCgpO1xuXG4gICAgaWYgKHN0YXRlbWVudCAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgICBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICAgIGNvbnN0IGdlbmVyYWxDb250ZXh0ID0gY29udGV4dDsgLy8vXG5cbiAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgY29uc3Qgc3RhdGVtZW50VW5pZmllc0luZGVwZW5kZW50bHkgPSBzdGF0ZW1lbnQudW5pZnlJbmRlcGVuZGVudGx5KGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICBpZiAoc3RhdGVtZW50VW5pZmllc0luZGVwZW5kZW50bHkpIHtcbiAgICAgICAgdW5pZmllc0luZGVwZW5kZW50bHkgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwcm9jZWR1cmVDYWxsICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBwcm9jZWR1cmVDYWxsUmVzb2x2ZWRJbmRlcGVuZGVudGx5ID0gYXdhaXQgcHJvY2VkdXJlQ2FsbC51bmlmeUluZGVwZW5kZW50bHkoY29udGV4dCk7XG5cbiAgICAgIGlmIChwcm9jZWR1cmVDYWxsUmVzb2x2ZWRJbmRlcGVuZGVudGx5KSB7XG4gICAgICAgIHVuaWZpZXNJbmRlcGVuZGVudGx5ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodW5pZmllc0luZGVwZW5kZW50bHkpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24gaW5kZXBlbmRlbmx5LmApO1xuICAgIH1cblxuICAgIHJldHVybiB1bmlmaWVzSW5kZXBlbmRlbnRseTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBsZXQgY29udGV4dDtcblxuICAgIGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnN0IGNvbnRleHRKU09OID0gY29udGV4dC50b0pTT04oKTtcblxuICAgIGNvbnRleHQgPSBjb250ZXh0SlNPTjsgIC8vL1xuXG4gICAgY29uc3QgcHJvY2VkdXJlQ2FsbEpTT04gPSBwcm9jZWR1cmVDYWxsVG9Qcm9jZWR1cmVDYWxsSlNPTih0aGlzLnByb2NlZHVyZUNhbGwpLFxuICAgICAgICAgIHN0YXRlbWVudEpTT04gPSBzdGF0ZW1lbnRUb1N0YXRlbWVudEpTT04odGhpcy5zdGF0ZW1lbnQpLFxuICAgICAgICAgIHByb2NlZHVyZUNhbGwgPSBwcm9jZWR1cmVDYWxsSlNPTiwgIC8vL1xuICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudEpTT04sICAvLy9cbiAgICAgICAgICBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLFxuICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgc3RhdGVtZW50LFxuICAgICAgICAgICAgcHJvY2VkdXJlQ2FsbFxuICAgICAgICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTdXBwb3NpdGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgY29uc3QgcHJlbWlzZSA9IGxpdGVyYWxseSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICBzdXBwb3NpdGlvbk5vZGUgPSBpbnN0YW50aWF0ZVN1cHBvc2l0aW9uKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICBub2RlID0gc3VwcG9zaXRpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICAgIHByb2NlZHVyZUNhbGwgPSBwcm9jZWR1cmVDYWxsRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgICBlcGhlbWVyYWxDb250ZXh0ID0gZXBoZW1lcmFsQ29udGV4dEZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgICBjb250ZXh0ID0gZXBoZW1lcmFsQ29udGV4dDsgLy8vXG5cbiAgICAgIGNvbnN0IHByZW1pc2UgPSBuZXcgU3VwcG9zaXRpb24oY29udGV4dCwgc3RyaW5nLCBub2RlLCBzdGF0ZW1lbnQsIHByb2NlZHVyZUNhbGwpO1xuXG4gICAgICByZXR1cm4gcHJlbWlzZTtcblxuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByZW1pc2U7XG4gIH1cbn0pO1xuXG4iXSwibmFtZXMiOlsiZGVmaW5lIiwiU3VwcG9zaXRpb24iLCJQcm9vZkFzc2VydGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwic3RhdGVtZW50IiwicHJvY2VkdXJlQ2FsbCIsImdldFByb2NlZHVyZUNhbGwiLCJnZXRTdXBwb3NpdGlvbk5vZGUiLCJnZXROb2RlIiwic3VwcG9zaXRpb25Ob2RlIiwiaXNTdGF0ZWQiLCJzdGF0ZWQiLCJ2ZXJpZnkiLCJ2ZXJpZmllcyIsImJyZWFrIiwic3VwcG9zaXRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImF0dGVtcHQiLCJ2YWxpZGF0ZXMiLCJ2YWxpZGF0ZSIsInNldENvbnRleHQiLCJkZWJ1ZyIsImdldFN0YXRlbWVudCIsInN0YXRlbWVudFZhbGlkYXRlcyIsInZhbGlkYXRlU3RhdGVtZW50IiwicHJvY2VkdXJlQ2FsbFZhbGlkYXRlcyIsInZhbGlkYXRlUHJvY2VkdXJlQ2FsbCIsInByb2NlZHVyZUNhbGxTdHJpbmciLCJ1bmlmeVN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb24iLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInN1cHBvc2l0aW9uVW5pZmllcyIsInNwZWNpZmljU3VwcG9zaXRpb24iLCJnZW5lcmFsU3VwcG9zaXRpb25TdHJpbmciLCJzcGVjaWZpY1N1cHBvc2l0aW9uU3RyaW5nIiwic3RhdGVtZW50VW5pZmllcyIsInVuaWZ5U3RhdGVtZW50IiwidW5pZnlTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb24iLCJzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb24iLCJzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25VbmlmaWVzIiwic3VicHJvb2ZPclByb29mQXNzZXJ0aW9uU3RyaW5nIiwic3VicHJvb2ZPclByb29mQXNzZXJ0aW9uUHJvb2ZBc3NlcnRpb24iLCJpc1Byb29mQXNzZXJ0aW9uIiwicHJvb2ZBc3NlcnRpb24iLCJzdWJwcm9vZiIsInByb29mQXNzZXJ0aW9uVW5pZmllcyIsInVuaWZ5UHJvb2ZBc3NlcnRpb24iLCJzdWJwcm9vZlVuaWZpZXMiLCJ1bmlmeVN1YnByb29mIiwicHJvb2ZBc3NlcnRpb25TdHJpbmciLCJwcm9vZkFzc2VydGlvbkNvbnRleHQiLCJnZXRDb250ZXh0Iiwic3VwcG9zaXRpb25Db250ZXh0IiwibGltaW5hbGx5IiwiY29tbWl0Iiwic3VicHJvb2ZTdHJpbmciLCJzdGF0ZW1lbnROb2RlIiwic3VicHJvb2ZBc3NlcnRpb25Ob2RlIiwiZ2V0U3VicHJvb2ZBc3NlcnRpb25Ob2RlIiwiYXNzZXJ0aW9uTm9kZSIsImFzc2VydGlvbiIsImZpbmRBc3NlcnRpb25CeUFzc2VydGlvbk5vZGUiLCJzdWJwcm9vZkFzc2VydGlvbiIsInN1YnN0aXR1dGlvbnMiLCJ1bmlmeUluZGVwZW5kZW50bHkiLCJ1bmlmaWVzSW5kZXBlbmRlbnRseSIsInN0YXRlbWVudFVuaWZpZXNJbmRlcGVuZGVudGx5IiwicHJvY2VkdXJlQ2FsbFJlc29sdmVkSW5kZXBlbmRlbnRseSIsInRvSlNPTiIsImNvbnRleHRKU09OIiwicHJvY2VkdXJlQ2FsbEpTT04iLCJwcm9jZWR1cmVDYWxsVG9Qcm9jZWR1cmVDYWxsSlNPTiIsInN0YXRlbWVudEpTT04iLCJzdGF0ZW1lbnRUb1N0YXRlbWVudEpTT04iLCJqc29uIiwibmFtZSIsImZyb21KU09OIiwicHJlbWlzZSIsImxpdGVyYWxseSIsImluc3RhbnRpYXRlU3VwcG9zaXRpb24iLCJzdGF0ZW1lbnRGcm9tSlNPTiIsInByb2NlZHVyZUNhbGxGcm9tSlNPTiIsImVwaGVtZXJhbENvbnRleHQiLCJlcGhlbWVyYWxDb250ZXh0RnJvbUpTT04iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVNBOzs7ZUFBQTs7O3VFQVAyQjswQkFFSjs2QkFDZ0I7eUJBQ087c0JBQ2lHOzs7Ozs7TUFFL0ksV0FBZUEsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxvQkFBb0JDLHVCQUFjO0lBQzVELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFNBQVMsRUFBRUMsYUFBYSxDQUFFO1FBQzNELEtBQUssQ0FBQ0osU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDQyxhQUFhLEdBQUdBO0lBQ3ZCO0lBRUFDLG1CQUFtQjtRQUNqQixPQUFPLElBQUksQ0FBQ0QsYUFBYTtJQUMzQjtJQUVBRSxxQkFBcUI7UUFDbkIsTUFBTUosT0FBTyxJQUFJLENBQUNLLE9BQU8sSUFDbkJDLGtCQUFrQk4sTUFBTSxHQUFHO1FBRWpDLE9BQU9NO0lBQ1Q7SUFFQUMs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
214
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L3Byb29mQXNzZXJ0aW9uL3N1cHBvc2l0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgUHJvb2ZBc3NlcnRpb24gZnJvbSBcIi4uL3Byb29mQXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVTdXBwb3NpdGlvbiB9IGZyb20gXCIuLi8uLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyBhdHRlbXB0LCBsaW1pbmFsbHksIGxpdGVyYWxseSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgc3RhdGVtZW50RnJvbUpTT04sIHByb2NlZHVyZUNhbGxGcm9tSlNPTiwgc3RhdGVtZW50VG9TdGF0ZW1lbnRKU09OLCBlcGhlbWVyYWxDb250ZXh0RnJvbUpTT04sIHByb2NlZHVyZUNhbGxUb1Byb2NlZHVyZUNhbGxKU09OIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9qc29uXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBTdXBwb3NpdGlvbiBleHRlbmRzIFByb29mQXNzZXJ0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBzdGF0ZW1lbnQsIHByb2NlZHVyZUNhbGwpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIHN0YXRlbWVudCk7XG5cbiAgICB0aGlzLnByb2NlZHVyZUNhbGwgPSBwcm9jZWR1cmVDYWxsO1xuICB9XG5cbiAgZ2V0UHJvY2VkdXJlQ2FsbCgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9jZWR1cmVDYWxsO1xuICB9XG5cbiAgZ2V0U3VwcG9zaXRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBzdXBwb3NpdGlvbk5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBzdXBwb3NpdGlvbk5vZGU7XG4gIH1cblxuICBpc1N0YXRlZCgpIHtcbiAgICBjb25zdCBzdGF0ZWQgPSB0cnVlOyAvLy9cblxuICAgIHJldHVybiBzdGF0ZWQ7XG4gIH1cblxuICBhc3luYyB2ZXJpZnkoY29udGV4dCkge1xuICAgIGxldCB2ZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgYXdhaXQgdGhpcy5icmVhayhjb250ZXh0KTtcblxuICAgIGNvbnN0IHN1cHBvc2l0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uLi5gKTtcblxuICAgIGF0dGVtcHQoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlcyA9IHRoaXMudmFsaWRhdGUoY29udGV4dCk7XG5cbiAgICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgICAgdGhpcy5zZXRDb250ZXh0KGNvbnRleHQpO1xuXG4gICAgICAgIHZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9LCBjb250ZXh0KTtcblxuICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcmlmaWVzO1xuICB9XG5cbiAgdmFsaWRhdGUoY29udGV4dCkge1xuICAgIGxldCB2YWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHN1cHBvc2l0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0dGluZyB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi4uLmApO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50ID0gdGhpcy5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICBwcm9jZWR1cmVDYWxsID0gdGhpcy5nZXRQcm9jZWR1cmVDYWxsKCk7XG5cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIC8vL1xuICAgIH0gZWxzZSBpZiAoc3RhdGVtZW50ICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSB0aGlzLnZhbGlkYXRlU3RhdGVtZW50KGNvbnRleHQpO1xuXG4gICAgICBpZiAoc3RhdGVtZW50VmFsaWRhdGVzKSB7XG4gICAgICAgIHZhbGlkYXRlcyA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChwcm9jZWR1cmVDYWxsICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBwcm9jZWR1cmVDYWxsVmFsaWRhdGVzID0gdGhpcy52YWxpZGF0ZVByb2NlZHVyZUNhbGwoY29udGV4dCk7XG5cbiAgICAgIGlmIChwcm9jZWR1cmVDYWxsVmFsaWRhdGVzKSB7XG4gICAgICAgIHZhbGlkYXRlcyA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFVuYWJsZSB0byB2YWxpZGF0ZSB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbiBiZWNhdXNlIGl0IGlzIG5vbnNlbnNlLmApO1xuICAgIH1cblxuICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVQcm9jZWR1cmVDYWxsKGNvbnRleHQpIHtcbiAgICBsZXQgcHJvY2VkdXJlQ2FsbFZhbGlkYXRlcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3VwcG9zaXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICBwcm9jZWR1cmVDYWxsU3RyaW5nID0gdGhpcy5wcm9jZWR1cmVDYWxsLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdHRpbmcgdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24ncyAnJHtwcm9jZWR1cmVDYWxsU3RyaW5nfScgcHJvY2VkdXJlIGNhbGwuLi5gKTtcblxuICAgIHByb2NlZHVyZUNhbGxWYWxpZGF0ZXMgPSB0aGlzLnByb2NlZHVyZUNhbGwudmFsaWRhdGUoY29udGV4dCk7XG5cbiAgICBpZiAocHJvY2VkdXJlQ2FsbFZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uJ3MgJyR7cHJvY2VkdXJlQ2FsbFN0cmluZ30nIHByb2NlZHVyZSBjYWxsLmApO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9jZWR1cmVDYWxsVmFsaWRhdGVzO1xuICB9XG5cbiAgdW5pZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbiwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkge1xuICAgIGxldCBzdXBwb3NpdGlvblVuaWZpZXM7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAgLy8vXG4gICAgICBzcGVjaWZpY1N1cHBvc2l0aW9uID0gc3VwcG9zaXRpb24sICAvLy9cbiAgICAgIGdlbmVyYWxTdXBwb3NpdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgc3BlY2lmaWNTdXBwb3NpdGlvblN0cmluZyA9IHNwZWNpZmljU3VwcG9zaXRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3BlY2lmaWNTdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uIHdpdGggdGhlICcke2dlbmVyYWxTdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnQgPSBzcGVjaWZpY1N1cHBvc2l0aW9uLmdldFN0YXRlbWVudCgpLFxuICAgICAgc3RhdGVtZW50VW5pZmllcyA9IHRoaXMudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgIHN1cHBvc2l0aW9uVW5pZmllcyA9IHN0YXRlbWVudFVuaWZpZXM7ICAvLy9cblxuICAgIGlmIChzdXBwb3NpdGlvblVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3NwZWNpZmljU3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbiB3aXRoIHRoZSAnJHtnZW5lcmFsU3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb25VbmlmaWVzO1xuICB9XG5cbiAgdW5pZnlTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb24oc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uLCBjb250ZXh0KSB7XG4gICAgbGV0IHN1YnByb29mT3JQcm9vZkFzc2VydGlvblVuaWZpZXM7XG5cbiAgICBjb25zdCBzdXBwb3NpdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIHN1YnByb29mT3JQcm9vZkFzc2VydGlvblN0cmluZyA9IHN1YnByb29mT3JQcm9vZkFzc2VydGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25TdHJpbmd9JyBzdWJwcm9vZiBvciBwcm9vZiBhc3NlcnRpb24gd2l0aCB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi4uLmApO1xuXG4gICAgY29uc3Qgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uUHJvb2ZBc3NlcnRpb24gPSBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb24uaXNQcm9vZkFzc2VydGlvbigpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvb2ZBc3NlcnRpb24gPSBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25Qcm9vZkFzc2VydGlvbiA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJwcm9vZiA9IHN1YnByb29mT3JQcm9vZkFzc2VydGlvblByb29mQXNzZXJ0aW9uID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnByb29mT3JQcm9vZkFzc2VydGlvbjtcblxuICAgIGlmIChwcm9vZkFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgcHJvb2ZBc3NlcnRpb25VbmlmaWVzID0gdGhpcy51bmlmeVByb29mQXNzZXJ0aW9uKHByb29mQXNzZXJ0aW9uLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHByb29mQXNzZXJ0aW9uVW5pZmllcykge1xuICAgICAgICBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25VbmlmaWVzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3VicHJvb2YgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN1YnByb29mVW5pZmllcyA9IHRoaXMudW5pZnlTdWJwcm9vZihzdWJwcm9vZiwgY29udGV4dCk7XG5cbiAgICAgIGlmIChzdWJwcm9vZlVuaWZpZXMpIHtcbiAgICAgICAgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uVW5pZmllcyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHN1YnByb29mT3JQcm9vZkFzc2VydGlvblVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N1YnByb29mT3JQcm9vZkFzc2VydGlvblN0cmluZ30nIHN1YnByb29mIG9yIHByb29mIGFzc2VydGlvbiB3aXRoIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25VbmlmaWVzO1xuICB9XG5cbiAgdW5pZnlQcm9vZkFzc2VydGlvbihwcm9vZkFzc2VydGlvbiwgY29udGV4dCkge1xuICAgIGxldCBwcm9vZkFzc2VydGlvblVuaWZpZXM7XG5cbiAgICBjb25zdCBzdXBwb3NpdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIHByb29mQXNzZXJ0aW9uU3RyaW5nID0gcHJvb2ZBc3NlcnRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7cHJvb2ZBc3NlcnRpb25TdHJpbmd9JyBwcm9vZiBhc3NlcnRpb24gd2l0aCB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi4uLmApO1xuXG4gICAgY29uc3QgcHJvb2ZBc3NlcnRpb25Db250ZXh0ID0gcHJvb2ZBc3NlcnRpb24uZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHN1cHBvc2l0aW9uQ29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gc3VwcG9zaXRpb25Db250ZXh0LCAvLy9cbiAgICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBwcm9vZkFzc2VydGlvbkNvbnRleHQ7IC8vL1xuXG4gICAgcHJvb2ZBc3NlcnRpb25VbmlmaWVzID0gbGltaW5hbGx5KChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudCA9IHByb29mQXNzZXJ0aW9uLmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgICAgc3RhdGVtZW50VW5pZmllcyA9IHRoaXMudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgc3BlY2lmaWNDb250ZXh0LmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgaWYgKHByb29mQXNzZXJ0aW9uVW5pZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7cHJvb2ZBc3NlcnRpb25TdHJpbmd9JyBwcm9vZiBhc3NlcnRpb24gd2l0aCB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvb2ZBc3NlcnRpb25VbmlmaWVzO1xuICB9XG5cbiAgdW5pZnlTdWJwcm9vZihzdWJwcm9vZiwgY29udGV4dCkge1xuICAgIGxldCBzdWJwcm9vZlVuaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHN1cHBvc2l0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzdWJwcm9vZlN0cmluZyA9IHN1YnByb29mLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N1YnByb29mU3RyaW5nfScgc3VicHJvb2Ygd2l0aCB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi4uLmApO1xuXG4gICAgY29uc3Qgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29uc3QgZ2VuZXJhbENvbnRleHQgPSBjb250ZXh0OyAvLy9cblxuICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgIGNvbnN0IHN0YXRlbWVudCA9IHRoaXMuZ2V0U3RhdGVtZW50KCk7XG5cbiAgICBpZiAoc3RhdGVtZW50ICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgICAgIHN1YnByb29mQXNzZXJ0aW9uTm9kZSA9IHN0YXRlbWVudE5vZGUuZ2V0U3VicHJvb2ZBc3NlcnRpb25Ob2RlKCk7XG5cbiAgICAgIGlmIChzdWJwcm9vZkFzc2VydGlvbk5vZGUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0LCAvLy9cbiAgICAgICAgICAgICAgYXNzZXJ0aW9uTm9kZSA9IHN1YnByb29mQXNzZXJ0aW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBhc3NlcnRpb24gPSBjb250ZXh0LmZpbmRBc3NlcnRpb25CeUFzc2VydGlvbk5vZGUoYXNzZXJ0aW9uTm9kZSlcblxuICAgICAgICBpZiAoYXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICAgICAgY29uc3Qgc3VicHJvb2ZBc3NlcnRpb24gPSBhc3NlcnRpb247ICAvLy9cblxuICAgICAgICAgIHN1YnByb29mVW5pZmllcyA9IHN1YnByb29mQXNzZXJ0aW9uLnVuaWZ5U3VicHJvb2Yoc3VicHJvb2YsIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHN1YnByb29mVW5pZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3VicHJvb2ZTdHJpbmd9JyBzdWJwcm9vZiB3aXRoIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdWJwcm9vZlVuaWZpZXM7XG4gIH1cblxuICBhc3luYyB1bmlmeUluZGVwZW5kZW50bHkoY29udGV4dCkge1xuICAgIGxldCB1bmlmaWVzSW5kZXBlbmRlbnRseSA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3VwcG9zaXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uIGluZGVwZW5kZW50bHkuLi5gKTtcblxuICAgIGNvbnN0IHN0YXRlbWVudCA9IHRoaXMuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgcHJvY2VkdXJlQ2FsbCA9IHRoaXMuZ2V0UHJvY2VkdXJlQ2FsbCgpO1xuXG4gICAgaWYgKHN0YXRlbWVudCAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgICBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICAgIGNvbnN0IGdlbmVyYWxDb250ZXh0ID0gY29udGV4dDsgLy8vXG5cbiAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgY29uc3Qgc3RhdGVtZW50VW5pZmllc0luZGVwZW5kZW50bHkgPSBzdGF0ZW1lbnQudW5pZnlJbmRlcGVuZGVudGx5KGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICBpZiAoc3RhdGVtZW50VW5pZmllc0luZGVwZW5kZW50bHkpIHtcbiAgICAgICAgdW5pZmllc0luZGVwZW5kZW50bHkgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwcm9jZWR1cmVDYWxsICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBwcm9jZWR1cmVDYWxsUmVzb2x2ZWRJbmRlcGVuZGVudGx5ID0gYXdhaXQgcHJvY2VkdXJlQ2FsbC51bmlmeUluZGVwZW5kZW50bHkoY29udGV4dCk7XG5cbiAgICAgIGlmIChwcm9jZWR1cmVDYWxsUmVzb2x2ZWRJbmRlcGVuZGVudGx5KSB7XG4gICAgICAgIHVuaWZpZXNJbmRlcGVuZGVudGx5ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodW5pZmllc0luZGVwZW5kZW50bHkpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24gaW5kZXBlbmRlbmx5LmApO1xuICAgIH1cblxuICAgIHJldHVybiB1bmlmaWVzSW5kZXBlbmRlbnRseTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBsZXQgY29udGV4dDtcblxuICAgIGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnN0IGNvbnRleHRKU09OID0gY29udGV4dC50b0pTT04oKTtcblxuICAgIGNvbnRleHQgPSBjb250ZXh0SlNPTjsgIC8vL1xuXG4gICAgY29uc3QgcHJvY2VkdXJlQ2FsbEpTT04gPSBwcm9jZWR1cmVDYWxsVG9Qcm9jZWR1cmVDYWxsSlNPTih0aGlzLnByb2NlZHVyZUNhbGwpLFxuICAgICAgICAgIHN0YXRlbWVudEpTT04gPSBzdGF0ZW1lbnRUb1N0YXRlbWVudEpTT04odGhpcy5zdGF0ZW1lbnQpLFxuICAgICAgICAgIHByb2NlZHVyZUNhbGwgPSBwcm9jZWR1cmVDYWxsSlNPTiwgIC8vL1xuICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudEpTT04sICAvLy9cbiAgICAgICAgICBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLFxuICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgc3RhdGVtZW50LFxuICAgICAgICAgICAgcHJvY2VkdXJlQ2FsbFxuICAgICAgICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTdXBwb3NpdGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3VwcG9zaXRpb24gPSBsaXRlcmFsbHkoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgc3VwcG9zaXRpb25Ob2RlID0gaW5zdGFudGlhdGVTdXBwb3NpdGlvbihzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgbm9kZSA9IHN1cHBvc2l0aW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgICBwcm9jZWR1cmVDYWxsID0gcHJvY2VkdXJlQ2FsbEZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgICAgZXBoZW1lcmFsQ29udGV4dCA9IGVwaGVtZXJhbENvbnRleHRGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgICAgY29udGV4dCA9IGVwaGVtZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICBjb25zdCBzdXBwb3NpdGlvbiA9IG5ldyBTdXBwb3NpdGlvbihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIHN0YXRlbWVudCwgcHJvY2VkdXJlQ2FsbCk7XG5cbiAgICAgIHJldHVybiBzdXBwb3NpdGlvbjtcblxuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uO1xuICB9XG59KTtcblxuIl0sIm5hbWVzIjpbImRlZmluZSIsIlN1cHBvc2l0aW9uIiwiUHJvb2ZBc3NlcnRpb24iLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsInN0YXRlbWVudCIsInByb2NlZHVyZUNhbGwiLCJnZXRQcm9jZWR1cmVDYWxsIiwiZ2V0U3VwcG9zaXRpb25Ob2RlIiwiZ2V0Tm9kZSIsInN1cHBvc2l0aW9uTm9kZSIsImlzU3RhdGVkIiwic3RhdGVkIiwidmVyaWZ5IiwidmVyaWZpZXMiLCJicmVhayIsInN1cHBvc2l0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJhdHRlbXB0IiwidmFsaWRhdGVzIiwidmFsaWRhdGUiLCJzZXRDb250ZXh0IiwiZGVidWciLCJnZXRTdGF0ZW1lbnQiLCJzdGF0ZW1lbnRWYWxpZGF0ZXMiLCJ2YWxpZGF0ZVN0YXRlbWVudCIsInByb2NlZHVyZUNhbGxWYWxpZGF0ZXMiLCJ2YWxpZGF0ZVByb2NlZHVyZUNhbGwiLCJwcm9jZWR1cmVDYWxsU3RyaW5nIiwidW5pZnlTdXBwb3NpdGlvbiIsInN1cHBvc2l0aW9uIiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJzdXBwb3NpdGlvblVuaWZpZXMiLCJzcGVjaWZpY1N1cHBvc2l0aW9uIiwiZ2VuZXJhbFN1cHBvc2l0aW9uU3RyaW5nIiwic3BlY2lmaWNTdXBwb3NpdGlvblN0cmluZyIsInN0YXRlbWVudFVuaWZpZXMiLCJ1bmlmeVN0YXRlbWVudCIsInVuaWZ5U3VicHJvb2ZPclByb29mQXNzZXJ0aW9uIiwic3VicHJvb2ZPclByb29mQXNzZXJ0aW9uIiwic3VicHJvb2ZPclByb29mQXNzZXJ0aW9uVW5pZmllcyIsInN1YnByb29mT3JQcm9vZkFzc2VydGlvblN0cmluZyIsInN1YnByb29mT3JQcm9vZkFzc2VydGlvblByb29mQXNzZXJ0aW9uIiwiaXNQcm9vZkFzc2VydGlvbiIsInByb29mQXNzZXJ0aW9uIiwic3VicHJvb2YiLCJwcm9vZkFzc2VydGlvblVuaWZpZXMiLCJ1bmlmeVByb29mQXNzZXJ0aW9uIiwic3VicHJvb2ZVbmlmaWVzIiwidW5pZnlTdWJwcm9vZiIsInByb29mQXNzZXJ0aW9uU3RyaW5nIiwicHJvb2ZBc3NlcnRpb25Db250ZXh0IiwiZ2V0Q29udGV4dCIsInN1cHBvc2l0aW9uQ29udGV4dCIsImxpbWluYWxseSIsImNvbW1pdCIsInN1YnByb29mU3RyaW5nIiwic3RhdGVtZW50Tm9kZSIsInN1YnByb29mQXNzZXJ0aW9uTm9kZSIsImdldFN1YnByb29mQXNzZXJ0aW9uTm9kZSIsImFzc2VydGlvbk5vZGUiLCJhc3NlcnRpb24iLCJmaW5kQXNzZXJ0aW9uQnlBc3NlcnRpb25Ob2RlIiwic3VicHJvb2ZBc3NlcnRpb24iLCJzdWJzdGl0dXRpb25zIiwidW5pZnlJbmRlcGVuZGVudGx5IiwidW5pZmllc0luZGVwZW5kZW50bHkiLCJzdGF0ZW1lbnRVbmlmaWVzSW5kZXBlbmRlbnRseSIsInByb2NlZHVyZUNhbGxSZXNvbHZlZEluZGVwZW5kZW50bHkiLCJ0b0pTT04iLCJjb250ZXh0SlNPTiIsInByb2NlZHVyZUNhbGxKU09OIiwicHJvY2VkdXJlQ2FsbFRvUHJvY2VkdXJlQ2FsbEpTT04iLCJzdGF0ZW1lbnRKU09OIiwic3RhdGVtZW50VG9TdGF0ZW1lbnRKU09OIiwianNvbiIsIm5hbWUiLCJmcm9tSlNPTiIsImxpdGVyYWxseSIsImluc3RhbnRpYXRlU3VwcG9zaXRpb24iLCJzdGF0ZW1lbnRGcm9tSlNPTiIsInByb2NlZHVyZUNhbGxGcm9tSlNPTiIsImVwaGVtZXJhbENvbnRleHQiLCJlcGhlbWVyYWxDb250ZXh0RnJvbUpTT04iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVNBOzs7ZUFBQTs7O3VFQVAyQjswQkFFSjs2QkFDZ0I7eUJBQ087c0JBQ2lHOzs7Ozs7TUFFL0ksV0FBZUEsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxvQkFBb0JDLHVCQUFjO0lBQzVELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFNBQVMsRUFBRUMsYUFBYSxDQUFFO1FBQzNELEtBQUssQ0FBQ0osU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDQyxhQUFhLEdBQUdBO0lBQ3ZCO0lBRUFDLG1CQUFtQjtRQUNqQixPQUFPLElBQUksQ0FBQ0QsYUFBYTtJQUMzQjtJQUVBRSxxQkFBcUI7UUFDbkIsTUFBTUosT0FBTyxJQUFJLENBQUNLLE9BQU8sSUFDbkJDLGtCQUFrQk4sTUFBTSxHQUFHO1FBRWpDLE9BQU9NO0lBQ1Q7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
@@ -164,4 +164,4 @@ const _default = (0, _elements.define)(class Term extends _occamlanguages.Elemen
164
164
  }
165
165
  });
166
166
 
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3Rlcm0uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBsaXRlcmFsbHkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IHZhbGlkYXRlVGVybXMgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3ZhbGlkYXRpb25cIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlVGVybSB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyB2YXJpYWJsZXNGcm9tVGVybSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZXF1aXZhbGVuY2VcIjtcbmltcG9ydCB7IHR5cGVGcm9tSlNPTiwgdHlwZVRvVHlwZUpTT04gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2pzb25cIjtcblxuY29uc3QgeyBmaWx0ZXIgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgVGVybSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIHR5cGUpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUpO1xuXG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgfVxuXG4gIGdldFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZTtcbiAgfVxuXG4gIHNldFR5cGUodHlwZSkge1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gIH1cblxuICBnZXRUZXJtTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgdGVybU5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gdGVybU5vZGU7XG4gIH1cblxuICBnZXRWYXJpYWJsZUlkZW50aWZpZXIoKSB7XG4gICAgY29uc3QgdGVybU5vZGUgPSB0aGlzLmdldFRlcm1Ob2RlKCksXG4gICAgICAgICAgdmFyaWFibGVJZGVudGlmaWVyID0gdGVybU5vZGUuZ2V0VmFyaWFibGVJZGVudGlmaWVyKCk7XG5cbiAgICByZXR1cm4gdmFyaWFibGVJZGVudGlmaWVyO1xuICB9XG5cbiAgbWF0Y2hUZXJtTm9kZSh0ZXJtTm9kZSkge1xuICAgIGNvbnN0IHRlcm1Ob2RlQSA9IHRlcm1Ob2RlOyAvLy9cblxuICAgIHRlcm1Ob2RlID0gdGhpcy5nZXRUZXJtTm9kZSgpO1xuXG4gICAgY29uc3QgdGVybU5vZGVCID0gdGVybU5vZGUsIC8vL1xuICAgICAgICAgIHRlcm1Ob2RlQUFNYXRjaGVzVGVybUJOb2RlQiA9IHRlcm1Ob2RlQS5tYXRjaCh0ZXJtTm9kZUIpLFxuICAgICAgICAgIGVxdWFsVG8gPSB0ZXJtTm9kZUFBTWF0Y2hlc1Rlcm1CTm9kZUI7IC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBjb21wYXJlVmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgIGxldCBjb21wYXJlc1RvVmFyaWFibGVJZGVudGlmaWVyID0gZmFsc2U7XG5cbiAgICBjb25zdCBzaW5ndWxhciA9IHRoaXMuaXNTaW5ndWxhcigpO1xuXG4gICAgaWYgKHNpbmd1bGFyKSB7XG4gICAgICBjb25zdCB2YXJpYWJsZUlkZW50aWZpZXJBID0gdmFyaWFibGVJZGVudGlmaWVyOyAvLy9cblxuICAgICAgdmFyaWFibGVJZGVudGlmaWVyID0gdGhpcy5nZXRWYXJpYWJsZUlkZW50aWZpZXIoKTtcblxuICAgICAgY29uc3QgdmFyaWFibGVJZGVudGlmaWVyQiA9IHZhcmlhYmxlSWRlbnRpZmllcjtcblxuICAgICAgY29tcGFyZXNUb1ZhcmlhYmxlSWRlbnRpZmllciA9ICh2YXJpYWJsZUlkZW50aWZpZXJBID09PSB2YXJpYWJsZUlkZW50aWZpZXJCKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29tcGFyZXNUb1ZhcmlhYmxlSWRlbnRpZmllcjtcbiAgfVxuXG4gIGZpbmRWYWxpZFRlcm0oY29udGV4dCkge1xuICAgIGNvbnN0IHRlcm1Ob2RlID0gdGhpcy5nZXRUZXJtTm9kZSgpLFxuICAgICAgICAgIHRlcm0gPSBjb250ZXh0LmZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSksXG4gICAgICAgICAgdmFsaWRUZXJtID0gdGVybTsgLy8vXG5cbiAgICByZXR1cm4gdmFsaWRUZXJtO1xuICB9XG5cbiAgaXNFcXVhbFRvKHRlcm0pIHtcbiAgICBjb25zdCB0ZXJtTm9kZSA9IHRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICAgIHRlcm1Ob2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hUZXJtTm9kZSh0ZXJtTm9kZSksXG4gICAgICAgICAgZXF1YWxUbyA9IHRlcm1Ob2RlTWF0Y2hlczsgIC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBpc0dyb3VuZGVkKGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpIHtcbiAgICBjb25zdCB0ZXJtICA9IHRoaXMsIC8vL1xuICAgICAgICAgIHZhcmlhYmxlcyA9IHZhcmlhYmxlc0Zyb21UZXJtKHRlcm0sIGNvbnRleHQpO1xuXG4gICAgZmlsdGVyKHZhcmlhYmxlcywgKHZhcmlhYmxlKSA9PiB7XG4gICAgICBjb25zdCBkZWZpbmVkVmFyaWFibGVzSW5jbHVkZXNWYXJpYWJsZSA9IGRlZmluZWRWYXJpYWJsZXMuaW5jbHVkZXModmFyaWFibGUpO1xuXG4gICAgICBpZiAoIWRlZmluZWRWYXJpYWJsZXNJbmNsdWRlc1ZhcmlhYmxlKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgdW5kZWZpbmVkVmFyaWFibGVzID0gdmFyaWFibGVzLCAvLy9cbiAgICAgICAgICB1bmRlZmluZWRWYXJpYWJsZXNMZW5ndGggPSB1bmRlZmluZWRWYXJpYWJsZXMubGVuZ3RoLFxuICAgICAgICAgIGdyb3VuZGVkID0gKHVuZGVmaW5lZFZhcmlhYmxlc0xlbmd0aCA8PSAxKTtcblxuICAgIHJldHVybiBncm91bmRlZDtcbiAgfVxuXG4gIGlzU2luZ3VsYXIoKSB7XG4gICAgY29uc3QgdGVybU5vZGUgPSB0aGlzLmdldFRlcm1Ob2RlKCksXG4gICAgICAgICAgc2luZ3VsYXIgPSB0ZXJtTm9kZS5pc1Npbmd1bGFyKCk7XG5cbiAgICByZXR1cm4gc2luZ3VsYXI7XG4gIH1cblxuICBpc1Byb3Zpc2lvbmFsKCkgeyByZXR1cm4gdGhpcy50eXBlLmlzUHJvdmlzaW9uYWwoKTsgfVxuXG4gIGlzSW5pdGlhbGx5R3JvdW5kZWQoY29udGV4dCkge1xuICAgIGNvbnN0IHRlcm0gID0gdGhpcywgLy8vXG4gICAgICAgICAgdmFyaWFibGVzID0gdmFyaWFibGVzRnJvbVRlcm0odGVybSwgY29udGV4dCksXG4gICAgICAgICAgdmFyaWFibGVzTGVuZ3RoID0gdmFyaWFibGVzLmxlbmd0aCxcbiAgICAgICAgICBpbml0aWFsbHlHcm91bmRlZCA9ICh2YXJpYWJsZXNMZW5ndGggPT09IDApO1xuXG4gICAgcmV0dXJuIGluaXRpYWxseUdyb3VuZGVkO1xuICB9XG5cbiAgaXNJbXBsaWNpdGx5R3JvdW5kZWQoZGVmaW5lZFZhcmlhYmxlcywgY29udGV4dCkge1xuICAgIGNvbnN0IGdyb3VuZGVkID0gdGhpcy5pc0dyb3VuZGVkKGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpLFxuICAgICAgICAgIGltcGxpY2l0bHlHcm91bmRlZCA9IGdyb3VuZGVkOyAgLy8vXG5cbiAgICByZXR1cm4gaW1wbGljaXRseUdyb3VuZGVkO1xuICB9XG5cbiAgY29tcGFyZVBhcmFtZXRlcihwYXJhbWV0ZXIpIHtcbiAgICBsZXQgY29tcGFyZXNUb1BhcmFtdGVyID0gZmFsc2U7XG5cbiAgICBjb25zdCBzaW5ndWxhciA9IHRoaXMuaXNTaW5ndWxhcigpO1xuXG4gICAgaWYgKHNpbmd1bGFyKSB7XG4gICAgICBjb25zdCBwYXJhbWV0ZXJJZGVudGlmaWVyID0gcGFyYW1ldGVyLmdldElkZW50aWZpZXIoKTtcblxuICAgICAgaWYgKHBhcmFtZXRlcklkZW50aWZpZXIgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgdmFyaWFibGVJZGVudGlmaWVyID0gdGhpcy5nZXRWYXJpYWJsZUlkZW50aWZpZXIoKTtcblxuICAgICAgICBpZiAocGFyYW1ldGVySWRlbnRpZmllciA9PT0gdmFyaWFibGVJZGVudGlmaWVyKSB7XG4gICAgICAgICAgY29tcGFyZXNUb1BhcmFtdGVyID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjb21wYXJlc1RvUGFyYW10ZXI7XG4gIH1cblxuICB2YWxpZGF0ZShjb250ZXh0LCB2YWxpZGF0ZUZvcndhcmRzKSB7XG4gICAgbGV0IHRlcm0gPSBudWxsO1xuXG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLi4uYCk7XG5cbiAgICBjb25zdCB2YWxpZFRlcm0gPSB0aGlzLmZpbmRWYWxpZFRlcm0oY29udGV4dCksXG4gICAgICAgICAgdmFsaWQgPSAodmFsaWRUZXJtICE9PSBudWxsKTtcblxuICAgIGlmICh2YWxpZCkge1xuICAgICAgY29uc3QgdmFsaWRhdGVzRm9yd2FyZCA9IHZhbGlkYXRlRm9yd2FyZHMoKTtcblxuICAgICAgaWYgKHZhbGlkYXRlc0ZvcndhcmQpIHtcbiAgICAgICAgdGVybSA9IHZhbGlkVGVybTsgLy8vXG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGlzIGFscmVhZHkgdmFsaWQuYCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlcyA9IHZhbGlkYXRlVGVybXMuc29tZSgodmFsaWRhdGVUZXJtKSA9PiB7ICAvLy9cbiAgICAgICAgY29uc3QgdGVybSA9IHRoaXMsICAvLy9cbiAgICAgICAgICAgICAgdGVybVZhbGlkYXRlcyA9IHZhbGlkYXRlVGVybSh0ZXJtLCBjb250ZXh0LCB2YWxpZGF0ZUZvcndhcmRzKTtcblxuICAgICAgICBpZiAodGVybVZhbGlkYXRlcykge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgICB0ZXJtID0gdGhpczsgIC8vL1xuXG4gICAgICAgIGNvbnRleHQuYWRkVGVybSh0ZXJtKTtcblxuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0ZXJtO1xuICB9XG5cbiAgdmFsaWRhdGVHaXZlblR5cGUodHlwZSwgY29udGV4dCkge1xuICAgIGxldCB2YWxpZGF0ZXNHaXZlblR5cGUgPSBmYWxzZTtcblxuICAgIGNvbnN0IHR5cGVTdHJpbmcgPSB0eXBlLmdldFN0cmluZygpLFxuICAgICAgICAgIHRlcm1TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBnaXZlbiB0aGUgJyR7dHlwZVN0cmluZ30nIHR5cGUuLi5gKTtcblxuICAgIGNvbnN0IHZhbGlkYXRlcyA9IHRoaXMudmFsaWRhdGUoY29udGV4dCwgKCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlc0ZvcndhcmRzO1xuXG4gICAgICBjb25zdCB0eXBlRXF1YWxUb09yU3ViVHlwZU9mR2l2ZW5UeXBlVHlwZSA9IHRoaXMudHlwZS5pc0VxdWFsVG9PclN1YlR5cGVPZih0eXBlKTtcblxuICAgICAgaWYgKHR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZHaXZlblR5cGVUeXBlKSB7XG4gICAgICAgIHZhbGlkYXRlc0ZvcndhcmRzID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHZhbGlkYXRlc0ZvcndhcmRzO1xuICAgIH0pO1xuXG4gICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgdmFsaWRhdGVzR2l2ZW5UeXBlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGVzR2l2ZW5UeXBlKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGdpdmVuIHRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzR2l2ZW5UeXBlO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IHR5cGVKU09OID0gdHlwZVRvVHlwZUpTT04odGhpcy50eXBlKSxcbiAgICAgICAgICBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICB0eXBlID0gdHlwZUpTT04sICAvLy9cbiAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJUZXJtXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBjb25zdCB0ZXJtID0gbGl0ZXJhbGx5KChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgIHRlcm1Ob2RlID0gaW5zdGFudGlhdGVUZXJtKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICBub2RlID0gdGVybU5vZGUsICAvLy9cbiAgICAgICAgICAgIHR5cGUgPSB0eXBlRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgICB0ZXJtID0gbmV3IFRlcm0oY29udGV4dCwgc3RyaW5nLCBub2RlLCB0eXBlKTtcblxuICAgICAgcmV0dXJuIHRlcm07XG5cbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiB0ZXJtO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJmaWx0ZXIiLCJhcnJheVV0aWxpdGllcyIsImRlZmluZSIsIlRlcm0iLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJ0eXBlIiwiZ2V0VHlwZSIsInNldFR5cGUiLCJnZXRUZXJtTm9kZSIsImdldE5vZGUiLCJ0ZXJtTm9kZSIsImdldFZhcmlhYmxlSWRlbnRpZmllciIsInZhcmlhYmxlSWRlbnRpZmllciIsIm1hdGNoVGVybU5vZGUiLCJ0ZXJtTm9kZUEiLCJ0ZXJtTm9kZUIiLCJ0ZXJtTm9kZUFBTWF0Y2hlc1Rlcm1CTm9kZUIiLCJtYXRjaCIsImVxdWFsVG8iLCJjb21wYXJlVmFyaWFibGVJZGVudGlmaWVyIiwiY29tcGFyZXNUb1ZhcmlhYmxlSWRlbnRpZmllciIsInNpbmd1bGFyIiwiaXNTaW5ndWxhciIsInZhcmlhYmxlSWRlbnRpZmllckEiLCJ2YXJpYWJsZUlkZW50aWZpZXJCIiwiZmluZFZhbGlkVGVybSIsInRlcm0iLCJmaW5kVGVybUJ5VGVybU5vZGUiLCJ2YWxpZFRlcm0iLCJpc0VxdWFsVG8iLCJ0ZXJtTm9kZU1hdGNoZXMiLCJpc0dyb3VuZGVkIiwiZGVmaW5lZFZhcmlhYmxlcyIsInZhcmlhYmxlcyIsInZhcmlhYmxlc0Zyb21UZXJtIiwidmFyaWFibGUiLCJkZWZpbmVkVmFyaWFibGVzSW5jbHVkZXNWYXJpYWJsZSIsImluY2x1ZGVzIiwidW5kZWZpbmVkVmFyaWFibGVzIiwidW5kZWZpbmVkVmFyaWFibGVzTGVuZ3RoIiwibGVuZ3RoIiwiZ3JvdW5kZWQiLCJpc1Byb3Zpc2lvbmFsIiwiaXNJbml0aWFsbHlHcm91bmRlZCIsInZhcmlhYmxlc0xlbmd0aCIsImluaXRpYWxseUdyb3VuZGVkIiwiaXNJbXBsaWNpdGx5R3JvdW5kZWQiLCJpbXBsaWNpdGx5R3JvdW5kZWQiLCJjb21wYXJlUGFyYW1ldGVyIiwicGFyYW1ldGVyIiwiY29tcGFyZXNUb1BhcmFtdGVyIiwicGFyYW1ldGVySWRlbnRpZmllciIsImdldElkZW50aWZpZXIiLCJ2YWxpZGF0ZSIsInZhbGlkYXRlRm9yd2FyZHMiLCJ0ZXJtU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJ2YWxpZCIsInZhbGlkYXRlc0ZvcndhcmQiLCJkZWJ1ZyIsInZhbGlkYXRlcyIsInZhbGlkYXRlVGVybXMiLCJzb21lIiwidmFsaWRhdGVUZXJtIiwidGVybVZhbGlkYXRlcyIsImFkZFRlcm0iLCJ2YWxpZGF0ZUdpdmVuVHlwZSIsInZhbGlkYXRlc0dpdmVuVHlwZSIsInR5cGVTdHJpbmciLCJ2YWxpZGF0ZXNGb3J3YXJkcyIsInR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZHaXZlblR5cGVUeXBlIiwiaXNFcXVhbFRvT3JTdWJUeXBlT2YiLCJ0b0pTT04iLCJ0eXBlSlNPTiIsInR5cGVUb1R5cGVKU09OIiwianNvbiIsIm5hbWUiLCJmcm9tSlNPTiIsImxpdGVyYWxseSIsImluc3RhbnRpYXRlVGVybSIsInR5cGVGcm9tSlNPTiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBY0E7OztlQUFBOzs7Z0NBWndCOzJCQUNPOzBCQUVSO3lCQUNHOzRCQUNJOzZCQUNFOzZCQUNFO3NCQUNXO0FBRTdDLE1BQU0sRUFBRUEsTUFBTSxFQUFFLEdBQUdDLHlCQUFjO01BRWpDLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsYUFBYUMsdUJBQU87SUFDOUMsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsSUFBSSxDQUFFO1FBQ3ZDLEtBQUssQ0FBQ0gsU0FBU0MsUUFBUUM7UUFFdkIsSUFBSSxDQUFDQyxJQUFJLEdBQUdBO0lBQ2Q7SUFFQUMsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDRCxJQUFJO0lBQ2xCO0lBRUFFLFFBQVFGLElBQUksRUFBRTtRQUNaLElBQUksQ0FBQ0EsSUFBSSxHQUFH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
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3Rlcm0uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBsaXRlcmFsbHkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IHZhbGlkYXRlVGVybXMgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3ZhbGlkYXRpb25cIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlVGVybSB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyB2YXJpYWJsZXNGcm9tVGVybSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZXF1aXZhbGVuY2VcIjtcbmltcG9ydCB7IHR5cGVGcm9tSlNPTiwgdHlwZVRvVHlwZUpTT04gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2pzb25cIjtcblxuY29uc3QgeyBmaWx0ZXIgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgVGVybSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIHR5cGUpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUpO1xuXG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgfVxuXG4gIGdldFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZTtcbiAgfVxuXG4gIHNldFR5cGUodHlwZSkge1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gIH1cblxuICBnZXRUZXJtTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgdGVybU5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gdGVybU5vZGU7XG4gIH1cblxuICBnZXRWYXJpYWJsZUlkZW50aWZpZXIoKSB7XG4gICAgY29uc3QgdGVybU5vZGUgPSB0aGlzLmdldFRlcm1Ob2RlKCksXG4gICAgICAgICAgdmFyaWFibGVJZGVudGlmaWVyID0gdGVybU5vZGUuZ2V0VmFyaWFibGVJZGVudGlmaWVyKCk7XG5cbiAgICByZXR1cm4gdmFyaWFibGVJZGVudGlmaWVyO1xuICB9XG5cbiAgbWF0Y2hUZXJtTm9kZSh0ZXJtTm9kZSkge1xuICAgIGNvbnN0IHRlcm1Ob2RlQSA9IHRlcm1Ob2RlOyAvLy9cblxuICAgIHRlcm1Ob2RlID0gdGhpcy5nZXRUZXJtTm9kZSgpO1xuXG4gICAgY29uc3QgdGVybU5vZGVCID0gdGVybU5vZGUsIC8vL1xuICAgICAgICAgIHRlcm1Ob2RlQUFNYXRjaGVzVGVybUJOb2RlQiA9IHRlcm1Ob2RlQS5tYXRjaCh0ZXJtTm9kZUIpLFxuICAgICAgICAgIGVxdWFsVG8gPSB0ZXJtTm9kZUFBTWF0Y2hlc1Rlcm1CTm9kZUI7IC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBjb21wYXJlVmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgIGxldCBjb21wYXJlc1RvVmFyaWFibGVJZGVudGlmaWVyID0gZmFsc2U7XG5cbiAgICBjb25zdCBzaW5ndWxhciA9IHRoaXMuaXNTaW5ndWxhcigpO1xuXG4gICAgaWYgKHNpbmd1bGFyKSB7XG4gICAgICBjb25zdCB2YXJpYWJsZUlkZW50aWZpZXJBID0gdmFyaWFibGVJZGVudGlmaWVyOyAvLy9cblxuICAgICAgdmFyaWFibGVJZGVudGlmaWVyID0gdGhpcy5nZXRWYXJpYWJsZUlkZW50aWZpZXIoKTtcblxuICAgICAgY29uc3QgdmFyaWFibGVJZGVudGlmaWVyQiA9IHZhcmlhYmxlSWRlbnRpZmllcjtcblxuICAgICAgY29tcGFyZXNUb1ZhcmlhYmxlSWRlbnRpZmllciA9ICh2YXJpYWJsZUlkZW50aWZpZXJBID09PSB2YXJpYWJsZUlkZW50aWZpZXJCKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29tcGFyZXNUb1ZhcmlhYmxlSWRlbnRpZmllcjtcbiAgfVxuXG4gIGZpbmRWYWxpZFRlcm0oY29udGV4dCkge1xuICAgIGNvbnN0IHRlcm1Ob2RlID0gdGhpcy5nZXRUZXJtTm9kZSgpLFxuICAgICAgICAgIHRlcm0gPSBjb250ZXh0LmZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSksXG4gICAgICAgICAgdmFsaWRUZXJtID0gdGVybTsgLy8vXG5cbiAgICByZXR1cm4gdmFsaWRUZXJtO1xuICB9XG5cbiAgaXNFcXVhbFRvKHRlcm0pIHtcbiAgICBjb25zdCB0ZXJtTm9kZSA9IHRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICAgIHRlcm1Ob2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hUZXJtTm9kZSh0ZXJtTm9kZSksXG4gICAgICAgICAgZXF1YWxUbyA9IHRlcm1Ob2RlTWF0Y2hlczsgIC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBpc0dyb3VuZGVkKGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpIHtcbiAgICBjb25zdCB0ZXJtICA9IHRoaXMsIC8vL1xuICAgICAgICAgIHZhcmlhYmxlcyA9IHZhcmlhYmxlc0Zyb21UZXJtKHRlcm0sIGNvbnRleHQpO1xuXG4gICAgZmlsdGVyKHZhcmlhYmxlcywgKHZhcmlhYmxlKSA9PiB7XG4gICAgICBjb25zdCBkZWZpbmVkVmFyaWFibGVzSW5jbHVkZXNWYXJpYWJsZSA9IGRlZmluZWRWYXJpYWJsZXMuaW5jbHVkZXModmFyaWFibGUpO1xuXG4gICAgICBpZiAoIWRlZmluZWRWYXJpYWJsZXNJbmNsdWRlc1ZhcmlhYmxlKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgdW5kZWZpbmVkVmFyaWFibGVzID0gdmFyaWFibGVzLCAvLy9cbiAgICAgICAgICB1bmRlZmluZWRWYXJpYWJsZXNMZW5ndGggPSB1bmRlZmluZWRWYXJpYWJsZXMubGVuZ3RoLFxuICAgICAgICAgIGdyb3VuZGVkID0gKHVuZGVmaW5lZFZhcmlhYmxlc0xlbmd0aCA8PSAxKTtcblxuICAgIHJldHVybiBncm91bmRlZDtcbiAgfVxuXG4gIGlzU2luZ3VsYXIoKSB7XG4gICAgY29uc3QgdGVybU5vZGUgPSB0aGlzLmdldFRlcm1Ob2RlKCksXG4gICAgICAgICAgc2luZ3VsYXIgPSB0ZXJtTm9kZS5pc1Npbmd1bGFyKCk7XG5cbiAgICByZXR1cm4gc2luZ3VsYXI7XG4gIH1cblxuICBpc1Byb3Zpc2lvbmFsKCkgeyByZXR1cm4gdGhpcy50eXBlLmlzUHJvdmlzaW9uYWwoKTsgfVxuXG4gIGlzSW5pdGlhbGx5R3JvdW5kZWQoY29udGV4dCkge1xuICAgIGNvbnN0IHRlcm0gID0gdGhpcywgLy8vXG4gICAgICAgICAgdmFyaWFibGVzID0gdmFyaWFibGVzRnJvbVRlcm0odGVybSwgY29udGV4dCksXG4gICAgICAgICAgdmFyaWFibGVzTGVuZ3RoID0gdmFyaWFibGVzLmxlbmd0aCxcbiAgICAgICAgICBpbml0aWFsbHlHcm91bmRlZCA9ICh2YXJpYWJsZXNMZW5ndGggPT09IDApO1xuXG4gICAgcmV0dXJuIGluaXRpYWxseUdyb3VuZGVkO1xuICB9XG5cbiAgaXNJbXBsaWNpdGx5R3JvdW5kZWQoZGVmaW5lZFZhcmlhYmxlcywgY29udGV4dCkge1xuICAgIGNvbnN0IGdyb3VuZGVkID0gdGhpcy5pc0dyb3VuZGVkKGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpLFxuICAgICAgICAgIGltcGxpY2l0bHlHcm91bmRlZCA9IGdyb3VuZGVkOyAgLy8vXG5cbiAgICByZXR1cm4gaW1wbGljaXRseUdyb3VuZGVkO1xuICB9XG5cbiAgY29tcGFyZVBhcmFtZXRlcihwYXJhbWV0ZXIpIHtcbiAgICBsZXQgY29tcGFyZXNUb1BhcmFtdGVyID0gZmFsc2U7XG5cbiAgICBjb25zdCBzaW5ndWxhciA9IHRoaXMuaXNTaW5ndWxhcigpO1xuXG4gICAgaWYgKHNpbmd1bGFyKSB7XG4gICAgICBjb25zdCBwYXJhbWV0ZXJJZGVudGlmaWVyID0gcGFyYW1ldGVyLmdldElkZW50aWZpZXIoKTtcblxuICAgICAgaWYgKHBhcmFtZXRlcklkZW50aWZpZXIgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgdmFyaWFibGVJZGVudGlmaWVyID0gdGhpcy5nZXRWYXJpYWJsZUlkZW50aWZpZXIoKTtcblxuICAgICAgICBpZiAocGFyYW1ldGVySWRlbnRpZmllciA9PT0gdmFyaWFibGVJZGVudGlmaWVyKSB7XG4gICAgICAgICAgY29tcGFyZXNUb1BhcmFtdGVyID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjb21wYXJlc1RvUGFyYW10ZXI7XG4gIH1cblxuICB2YWxpZGF0ZShjb250ZXh0LCB2YWxpZGF0ZUZvcndhcmRzKSB7XG4gICAgbGV0IHRlcm0gPSBudWxsO1xuXG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLi4uYCk7XG5cbiAgICBjb25zdCB2YWxpZFRlcm0gPSB0aGlzLmZpbmRWYWxpZFRlcm0oY29udGV4dCksXG4gICAgICAgICAgdmFsaWQgPSAodmFsaWRUZXJtICE9PSBudWxsKTtcblxuICAgIGlmICh2YWxpZCkge1xuICAgICAgY29uc3QgdmFsaWRhdGVzRm9yd2FyZCA9IHZhbGlkYXRlRm9yd2FyZHMoKTtcblxuICAgICAgaWYgKHZhbGlkYXRlc0ZvcndhcmQpIHtcbiAgICAgICAgdGVybSA9IHZhbGlkVGVybTsgLy8vXG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGlzIGFscmVhZHkgdmFsaWQuYCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlcyA9IHZhbGlkYXRlVGVybXMuc29tZSgodmFsaWRhdGVUZXJtKSA9PiB7ICAvLy9cbiAgICAgICAgY29uc3QgdGVybSA9IHRoaXMsICAvLy9cbiAgICAgICAgICAgICAgdGVybVZhbGlkYXRlcyA9IHZhbGlkYXRlVGVybSh0ZXJtLCBjb250ZXh0LCB2YWxpZGF0ZUZvcndhcmRzKTtcblxuICAgICAgICBpZiAodGVybVZhbGlkYXRlcykge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgICB0ZXJtID0gdGhpczsgIC8vL1xuXG4gICAgICAgIGNvbnRleHQuYWRkVGVybSh0ZXJtKTtcblxuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0ZXJtO1xuICB9XG5cbiAgdmFsaWRhdGVHaXZlblR5cGUodHlwZSwgY29udGV4dCkge1xuICAgIGxldCB2YWxpZGF0ZXNHaXZlblR5cGUgPSBmYWxzZTtcblxuICAgIGNvbnN0IHR5cGVTdHJpbmcgPSB0eXBlLmdldFN0cmluZygpLFxuICAgICAgICAgIHRlcm1TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBnaXZlbiB0aGUgJyR7dHlwZVN0cmluZ30nIHR5cGUuLi5gKTtcblxuICAgIGNvbnN0IHZhbGlkYXRlcyA9IHRoaXMudmFsaWRhdGUoY29udGV4dCwgKCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlc0ZvcndhcmRzO1xuXG4gICAgICBjb25zdCB0eXBlRXF1YWxUb09yU3ViVHlwZU9mR2l2ZW5UeXBlVHlwZSA9IHRoaXMudHlwZS5pc0VxdWFsVG9PclN1YlR5cGVPZih0eXBlKTtcblxuICAgICAgaWYgKHR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZHaXZlblR5cGVUeXBlKSB7XG4gICAgICAgIHZhbGlkYXRlc0ZvcndhcmRzID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHZhbGlkYXRlc0ZvcndhcmRzO1xuICAgIH0pO1xuXG4gICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgdmFsaWRhdGVzR2l2ZW5UeXBlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGVzR2l2ZW5UeXBlKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGdpdmVuIHRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzR2l2ZW5UeXBlO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IHR5cGVKU09OID0gdHlwZVRvVHlwZUpTT04odGhpcy50eXBlKSxcbiAgICAgICAgICBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICB0eXBlID0gdHlwZUpTT04sICAvLy9cbiAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJUZXJtXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBjb25zdCB0ZXJtID0gbGl0ZXJhbGx5KChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgIHRlcm1Ob2RlID0gaW5zdGFudGlhdGVUZXJtKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICBub2RlID0gdGVybU5vZGUsICAvLy9cbiAgICAgICAgICAgIHR5cGUgPSB0eXBlRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgICB0ZXJtID0gbmV3IFRlcm0oY29udGV4dCwgc3RyaW5nLCBub2RlLCB0eXBlKTtcblxuICAgICAgcmV0dXJuIHRlcm07XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdGVybTtcbiAgfVxufSk7XG4iXSwibmFtZXMiOlsiZmlsdGVyIiwiYXJyYXlVdGlsaXRpZXMiLCJkZWZpbmUiLCJUZXJtIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwidHlwZSIsImdldFR5cGUiLCJzZXRUeXBlIiwiZ2V0VGVybU5vZGUiLCJnZXROb2RlIiwidGVybU5vZGUiLCJnZXRWYXJpYWJsZUlkZW50aWZpZXIiLCJ2YXJpYWJsZUlkZW50aWZpZXIiLCJtYXRjaFRlcm1Ob2RlIiwidGVybU5vZGVBIiwidGVybU5vZGVCIiwidGVybU5vZGVBQU1hdGNoZXNUZXJtQk5vZGVCIiwibWF0Y2giLCJlcXVhbFRvIiwiY29tcGFyZVZhcmlhYmxlSWRlbnRpZmllciIsImNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aWZpZXIiLCJzaW5ndWxhciIsImlzU2luZ3VsYXIiLCJ2YXJpYWJsZUlkZW50aWZpZXJBIiwidmFyaWFibGVJZGVudGlmaWVyQiIsImZpbmRWYWxpZFRlcm0iLCJ0ZXJtIiwiZmluZFRlcm1CeVRlcm1Ob2RlIiwidmFsaWRUZXJtIiwiaXNFcXVhbFRvIiwidGVybU5vZGVNYXRjaGVzIiwiaXNHcm91bmRlZCIsImRlZmluZWRWYXJpYWJsZXMiLCJ2YXJpYWJsZXMiLCJ2YXJpYWJsZXNGcm9tVGVybSIsInZhcmlhYmxlIiwiZGVmaW5lZFZhcmlhYmxlc0luY2x1ZGVzVmFyaWFibGUiLCJpbmNsdWRlcyIsInVuZGVmaW5lZFZhcmlhYmxlcyIsInVuZGVmaW5lZFZhcmlhYmxlc0xlbmd0aCIsImxlbmd0aCIsImdyb3VuZGVkIiwiaXNQcm92aXNpb25hbCIsImlzSW5pdGlhbGx5R3JvdW5kZWQiLCJ2YXJpYWJsZXNMZW5ndGgiLCJpbml0aWFsbHlHcm91bmRlZCIsImlzSW1wbGljaXRseUdyb3VuZGVkIiwiaW1wbGljaXRseUdyb3VuZGVkIiwiY29tcGFyZVBhcmFtZXRlciIsInBhcmFtZXRlciIsImNvbXBhcmVzVG9QYXJhbXRlciIsInBhcmFtZXRlcklkZW50aWZpZXIiLCJnZXRJZGVudGlmaWVyIiwidmFsaWRhdGUiLCJ2YWxpZGF0ZUZvcndhcmRzIiwidGVybVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwidmFsaWQiLCJ2YWxpZGF0ZXNGb3J3YXJkIiwiZGVidWciLCJ2YWxpZGF0ZXMiLCJ2YWxpZGF0ZVRlcm1zIiwic29tZSIsInZhbGlkYXRlVGVybSIsInRlcm1WYWxpZGF0ZXMiLCJhZGRUZXJtIiwidmFsaWRhdGVHaXZlblR5cGUiLCJ2YWxpZGF0ZXNHaXZlblR5cGUiLCJ0eXBlU3RyaW5nIiwidmFsaWRhdGVzRm9yd2FyZHMiLCJ0eXBlRXF1YWxUb09yU3ViVHlwZU9mR2l2ZW5UeXBlVHlwZSIsImlzRXF1YWxUb09yU3ViVHlwZU9mIiwidG9KU09OIiwidHlwZUpTT04iLCJ0eXBlVG9UeXBlSlNPTiIsImpzb24iLCJuYW1lIiwiZnJvbUpTT04iLCJsaXRlcmFsbHkiLCJpbnN0YW50aWF0ZVRlcm0iLCJ0eXBlRnJvbUpTT04iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWNBOzs7ZUFBQTs7O2dDQVp3QjsyQkFDTzswQkFFUjt5QkFDRzs0QkFDSTs2QkFDRTs2QkFDRTtzQkFDVztBQUU3QyxNQUFNLEVBQUVBLE1BQU0sRUFBRSxHQUFHQyx5QkFBYztNQUVqQyxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLGFBQWFDLHVCQUFPO0lBQzlDLFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLElBQUksQ0FBRTtRQUN2QyxLQUFLLENBQUNILFNBQVNDLFFBQVFDO1FBRXZCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtJQUNkO0lBRUFDLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQ0QsSUFBSTtJQUNsQjtJQUVBRSxRQUFRRixJQUFJLEVBQUU7UUFDWixJQUFJLENBQUNBLElBQUksR0FBR0E7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
@@ -10,6 +10,8 @@ Object.defineProperty(exports, "default", {
10
10
  });
11
11
  const _occamlanguages = require("occam-languages");
12
12
  const _elements = /*#__PURE__*/ _interop_require_wildcard(require("../elements"));
13
+ const _context = require("../utilities/context");
14
+ const _instantiate = require("../process/instantiate");
13
15
  const _json = require("../utilities/json");
14
16
  function _getRequireWildcardCache(nodeInterop) {
15
17
  if (typeof WeakMap !== "function") return null;
@@ -175,8 +177,12 @@ const _default = (0, _elements.define)(class Variable extends _occamlanguages.El
175
177
  }
176
178
  static name = "Variable";
177
179
  static fromJSON(json, context) {
178
- debugger;
180
+ const variable = (0, _context.literally)((context)=>{
181
+ const { string } = json, variableNode = (0, _instantiate.instantiateVariable)(string, context), node = variableNode, type = (0, _json.typeFromJSON)(json, context), identifier = (0, _json.identifierFromJSON)(json, context), propertyRelations = (0, _json.propertyRelationsFromJSON)(json, context), variable = new Variable(context, string, node, type, identifier, propertyRelations);
182
+ return variable;
183
+ }, context);
184
+ return variable;
179
185
  }
180
186
  });
181
187
 
182
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3ZhcmlhYmxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgZWxlbWVudHMgZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgdHlwZVRvVHlwZUpTT04sIGlkZW50aWZpZXJUb0lkZW50aWZpZXJKU09OLCBwcm9wZXJ0eVJlbGF0aW9uc1RvUHJvcGVydHlSZWxhdGlvbnNKU09OIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9qc29uXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBWYXJpYWJsZSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIHR5cGUsIGlkZW50aWZpZXIsIHByb3BlcnR5UmVsYXRpb25zKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlKTtcblxuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5pZGVudGlmaWVyID0gaWRlbnRpZmllcjtcbiAgICB0aGlzLnByb3BlcnR5UmVsYXRpb25zID0gcHJvcGVydHlSZWxhdGlvbnM7XG4gIH1cblxuICBnZXRJZGVudGlmaWVyKCkge1xuICAgIHJldHVybiB0aGlzLmlkZW50aWZpZXI7XG4gIH1cblxuICBnZXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRQcm9wZXJ0eVJlbGF0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wZXJ0eVJlbGF0aW9ucztcbiAgfVxuXG4gIHNldFR5cGUodHlwZSkge1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gIH1cblxuICBnZXRWYXJpYWJsZU5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHZhcmlhYmxlTm9kZSA9IG5vZGU7ICAvL1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlTm9kZTtcbiAgfVxuXG4gIGdldFR5cGVTdHJpbmcoKSB7IHJldHVybiB0aGlzLnR5cGUuZ2V0U3RyaW5nKCk7IH1cblxuICBpc0lkZW50aWZpZXJFcXVhbFRvKGlkZW50aWZpZXIpIHtcbiAgICBjb25zdCBpZGVudGlmaWVyRXF1YWxUbyA9ICh0aGlzLmlkZW50aWZpZXIgPT09IGlkZW50aWZpZXIpO1xuXG4gICAgcmV0dXJuIGlkZW50aWZpZXJFcXVhbFRvO1xuICB9XG5cbiAgY29tcGFyZSh2YXJpYWJsZSkge1xuICAgIGNvbnN0IHZhcmlhYmxlSWRlbnRpZmllciA9IHZhcmlhYmxlLmdldElkZW50aWZpZXIoKSxcbiAgICAgICAgICBjb21wYXJlc1RvID0gKHRoaXMuaWRlbnRpZmllciA9PT0gdmFyaWFibGVJZGVudGlmaWVyKTtcblxuICAgIHJldHVybiBjb21wYXJlc1RvO1xuICB9XG5cbiAgY29tcGFyZVBhcmFtdGVyKHBhcmFtZXRlcikge1xuICAgIGNvbnN0IGlkZW50aWZpZXIgPSBwYXJhbWV0ZXIuZ2V0SWRlbnRpZmllcigpLFxuICAgICAgICAgIGlkZW50aWZpZXJFcXVhbFRvID0gdGhpcy5pc0lkZW50aWZpZXJFcXVhbFRvKGlkZW50aWZpZXIpLFxuICAgICAgICAgIGNvbXBhcmVzVG9QYXJhbXRlciA9IGlkZW50aWZpZXJFcXVhbFRvOyAvLy9cblxuICAgIHJldHVybiBjb21wYXJlc1RvUGFyYW10ZXI7XG4gIH1cblxuICBjb21wYXJlVmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgIGNvbnN0IGlkZW50aWZpZXIgPSB2YXJpYWJsZUlkZW50aWZpZXIsIC8vL1xuICAgICAgICAgIGlkZW50aWZpZXJFcXVhbFRvID0gdGhpcy5pc0lkZW50aWZpZXJFcXVhbFRvKGlkZW50aWZpZXIpLFxuICAgICAgICAgIGNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aWZpZXIgPSBpZGVudGlmaWVyRXF1YWxUbzsgLy8vXG5cbiAgICByZXR1cm4gY29tcGFyZXNUb1ZhcmlhYmxlSWRlbnRpZmllcjtcbiAgfVxuXG4gIHZhbGlkYXRlKGNvbnRleHQpIHtcbiAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgY29uc3QgdmFyaWFibGVTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3ZhcmlhYmxlU3RyaW5nfScgdmFyaWFibGUuLi5gKTtcblxuICAgIGNvbnN0IHZhcmlhYmxlSWRlbnRpZmllciA9IHRoaXMuaWRlbnRpZmllcixcbiAgICAgICAgICB2YXJpYWJsZSA9IGNvbnRleHQuZmluZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKTtcblxuICAgIGlmICh2YXJpYWJsZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgdHlwZSA9IHZhcmlhYmxlLmdldFR5cGUoKTtcblxuICAgICAgdGhpcy50eXBlID0gdHlwZTtcblxuICAgICAgdmFsaWRhdGVzID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3ZhcmlhYmxlU3RyaW5nfScgdmFyaWFibGUgaXMgbm90IHByZXNlbnQuYCk7XG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHt2YXJpYWJsZVN0cmluZ30nIHZhcmlhYmxlLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVR5cGUoY29udGV4dCkge1xuICAgIGxldCB0eXBlVmFsaWRhdGVzID0gZmFsc2U7XG5cbiAgICBjb25zdCB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7dHlwZVN0cmluZ30nIHR5cGUuLi5gKTtcblxuICAgIGNvbnN0IHByZWZpeGVkVHlwZU5hbWUgPSB0aGlzLnR5cGUuZ2V0UHJlZml4ZWROYW1lKCksXG4gICAgICAgICAgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeVByZWZpeGVkVHlwZU5hbWUocHJlZml4ZWRUeXBlTmFtZSk7XG5cbiAgICBpZiAodHlwZSA9PT0gbnVsbCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIG5vdCBwcmVzZW50LmApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnR5cGUgPSB0eXBlOyAvLy9cblxuICAgICAgdHlwZVZhbGlkYXRlcyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVWYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7dHlwZVN0cmluZ30nIHR5cGUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVWYWxpZGF0ZXM7XG4gIH1cblxuICB1bmlmeVRlcm0odGVybSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkge1xuICAgIGxldCB0ZXJtVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIHZhcmlhYmxlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gd2l0aCB0aGUgJyR7dmFyaWFibGVTdHJpbmd9JyB2YXJpYWJsZS4uLmApO1xuXG4gICAgbGV0IHZhcmlhYmxlLFxuICAgICAgICBzdWJzdGl0dXRpb247XG5cbiAgICB2YXJpYWJsZSA9IHRoaXM7IC8vL1xuXG4gICAgY29uc3QgdmFyaWFibGVJZGVudGlmaWVyID0gdmFyaWFibGUuZ2V0SWRlbnRpZmllcigpO1xuXG4gICAgc3Vic3RpdHV0aW9uID0gY29udGV4dC5maW5kU3Vic3RpdHV0aW9uQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKTtcblxuICAgIGlmIChzdWJzdGl0dXRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbkNvbXBhcmVzVG9UZXJtID0gc3Vic3RpdHV0aW9uLmNvbXBhcmVUZXJtKHRlcm0sIGNvbnRleHQpO1xuXG4gICAgICBpZiAoc3Vic3RpdHV0aW9uQ29tcGFyZXNUb1Rlcm0pIHtcbiAgICAgICAgdGVybVVuaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgY29udGV4dDtcblxuICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAgLy8vXG5cbiAgICAgIGNvbnN0IHZhcmlhYmxlSWRlbnRpZmllciA9IHZhcmlhYmxlLmdldElkZW50aWZpZXIoKTtcblxuICAgICAgdmFyaWFibGUgPSBjb250ZXh0LmZpbmRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcik7XG5cbiAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgY29uc3QgdGVybU5vZGUgPSB0ZXJtLmdldE5vZGUoKTtcblxuICAgICAgdGVybSA9IGNvbnRleHQuZmluZFRlcm1CeVRlcm1Ob2RlKHRlcm1Ob2RlKTtcblxuICAgICAgY29uc3QgdGVybVR5cGUgPSB0ZXJtLmdldFR5cGUoKSxcbiAgICAgICAgICAgIHZhcmlhYmxlVHlwZSA9IHZhcmlhYmxlLmdldFR5cGUoKSxcbiAgICAgICAgICAgIHRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mVmFyaWFibGVUeXBlID0gdGVybVR5cGUuaXNFcXVhbFRvT3JTdWJUeXBlT2YodmFyaWFibGVUeXBlKTtcblxuICAgICAgaWYgKHRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mVmFyaWFibGVUeXBlKSB7XG4gICAgICAgIGNvbnN0IHsgVGVybVN1YnN0aXR1dGlvbiB9ID0gZWxlbWVudHM7XG5cbiAgICAgICAgbGV0IHRlcm1TdWJzdGl0dXRpb247XG5cbiAgICAgICAgdGVybVN1YnN0aXR1dGlvbiA9IFRlcm1TdWJzdGl0dXRpb24uZnJvbVRlcm1BbmRWYXJpYWJsZSh0ZXJtLCB2YXJpYWJsZSwgY29udGV4dCk7XG5cbiAgICAgICAgdGVybVN1YnN0aXR1dGlvbiA9IHRlcm1TdWJzdGl0dXRpb24udmFsaWRhdGUoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7ICAvLy9cblxuICAgICAgICBpZiAodGVybVN1YnN0aXR1dGlvbiAhPT0gbnVsbCkge1xuICAgICAgICAgIHRlcm1VbmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0ZXJtVW5pZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gd2l0aCB0aGUgJyR7dmFyaWFibGVTdHJpbmd9JyB2YXJpYWJsZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVybVVuaWZpZXM7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgdHlwZUpTT04gPSB0eXBlVG9UeXBlSlNPTih0aGlzLnR5cGUpLFxuICAgICAgICAgIGlkZW50aWZpZXJKU09OID0gaWRlbnRpZmllclRvSWRlbnRpZmllckpTT04odGhpcy5pZGVudGlmaWVyKSxcbiAgICAgICAgICBwcm9wZXJ0eVJlbGF0aW9uc0pTT04gPSBwcm9wZXJ0eVJlbGF0aW9uc1RvUHJvcGVydHlSZWxhdGlvbnNKU09OKHRoaXMucHJvcGVydHlSZWxhdGlvbnMpLFxuICAgICAgICAgIHR5cGUgPSB0eXBlSlNPTiwgIC8vL1xuICAgICAgICAgIGlkZW50aWZpZXIgPSBpZGVudGlmaWVySlNPTiwgIC8vL1xuICAgICAgICAgIHByb3BlcnR5UmVsYXRpb25zID0gcHJvcGVydHlSZWxhdGlvbnNKU09OLCAgLy8vXG4gICAgICAgICAgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBpZGVudGlmaWVyLFxuICAgICAgICAgICAgcHJvcGVydHlSZWxhdGlvbnNcbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiVmFyaWFibGVcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGRlYnVnZ2VyXG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbImRlZmluZSIsIlZhcmlhYmxlIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwidHlwZSIsImlkZW50aWZpZXIiLCJwcm9wZXJ0eVJlbGF0aW9ucyIsImdldElkZW50aWZpZXIiLCJnZXRUeXBlIiwiZ2V0UHJvcGVydHlSZWxhdGlvbnMiLCJzZXRUeXBlIiwiZ2V0VmFyaWFibGVOb2RlIiwiZ2V0Tm9kZSIsInZhcmlhYmxlTm9kZSIsImdldFR5cGVTdHJpbmciLCJnZXRTdHJpbmciLCJpc0lkZW50aWZpZXJFcXVhbFRvIiwiaWRlbnRpZmllckVxdWFsVG8iLCJjb21wYXJlIiwidmFyaWFibGUiLCJ2YXJpYWJsZUlkZW50aWZpZXIiLCJjb21wYXJlc1RvIiwiY29tcGFyZVBhcmFtdGVyIiwicGFyYW1ldGVyIiwiY29tcGFyZXNUb1BhcmFtdGVyIiwiY29tcGFyZVZhcmlhYmxlSWRlbnRpZmllciIsImNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aWZpZXIiLCJ2YWxpZGF0ZSIsInZhbGlkYXRlcyIsInZhcmlhYmxlU3RyaW5nIiwidHJhY2UiLCJmaW5kVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllciIsImRlYnVnIiwidmFsaWRhdGVUeXBlIiwidHlwZVZhbGlkYXRlcyIsInR5cGVTdHJpbmciLCJwcmVmaXhlZFR5cGVOYW1lIiwiZ2V0UHJlZml4ZWROYW1lIiwiZmluZFR5cGVCeVByZWZpeGVkVHlwZU5hbWUiLCJ1bmlmeVRlcm0iLCJ0ZXJtIiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJ0ZXJtVW5pZmllcyIsInRlcm1TdHJpbmciLCJzdWJzdGl0dXRpb24iLCJmaW5kU3Vic3RpdHV0aW9uQnlWYXJpYWJsZUlkZW50aWZpZXIiLCJzdWJzdGl0dXRpb25Db21wYXJlc1RvVGVybSIsImNvbXBhcmVUZXJtIiwidGVybU5vZGUiLCJmaW5kVGVybUJ5VGVybU5vZGUiLCJ0ZXJtVHlwZSIsInZhcmlhYmxlVHlwZSIsInRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mVmFyaWFibGVUeXBlIiwiaXNFcXVhbFRvT3JTdWJUeXBlT2YiLCJUZXJtU3Vic3RpdHV0aW9uIiwiZWxlbWVudHMiLCJ0ZXJtU3Vic3RpdHV0aW9uIiwiZnJvbVRlcm1BbmRWYXJpYWJsZSIsInRvSlNPTiIsInR5cGVKU09OIiwidHlwZVRvVHlwZUpTT04iLCJpZGVudGlmaWVySlNPTiIsImlkZW50aWZpZXJUb0lkZW50aWZpZXJKU09OIiwicHJvcGVydHlSZWxhdGlvbnNKU09OIiwicHJvcGVydHlSZWxhdGlvbnNUb1Byb3BlcnR5UmVsYXRpb25zSlNPTiIsImpzb24iLCJuYW1lIiwiZnJvbUpTT04iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVNBOzs7ZUFBQTs7O2dDQVB3QjtrRUFFSDtzQkFHZ0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQUVyRyxXQUFlQSxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLGlCQUFpQkMsdUJBQU87SUFDbEQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLGlCQUFpQixDQUFFO1FBQ3RFLEtBQUssQ0FBQ0wsU0FBU0MsUUFBUUM7UUFFdkIsSUFBSSxDQUFDQyxJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFD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
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3ZhcmlhYmxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgZWxlbWVudHMgZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgbGl0ZXJhbGx5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZVZhcmlhYmxlIH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IHR5cGVGcm9tSlNPTixcbiAgICAgICAgIHR5cGVUb1R5cGVKU09OLFxuICAgICAgICAgaWRlbnRpZmllckZyb21KU09OLFxuICAgICAgICAgcHJvcGVydHlSZWxhdGlvbnNGcm9tSlNPTixcbiAgICAgICAgIGlkZW50aWZpZXJUb0lkZW50aWZpZXJKU09OLFxuICAgICAgICAgcHJvcGVydHlSZWxhdGlvbnNUb1Byb3BlcnR5UmVsYXRpb25zSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgVmFyaWFibGUgZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCB0eXBlLCBpZGVudGlmaWVyLCBwcm9wZXJ0eVJlbGF0aW9ucykge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSk7XG5cbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMuaWRlbnRpZmllciA9IGlkZW50aWZpZXI7XG4gICAgdGhpcy5wcm9wZXJ0eVJlbGF0aW9ucyA9IHByb3BlcnR5UmVsYXRpb25zO1xuICB9XG5cbiAgZ2V0SWRlbnRpZmllcigpIHtcbiAgICByZXR1cm4gdGhpcy5pZGVudGlmaWVyO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgZ2V0UHJvcGVydHlSZWxhdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlSZWxhdGlvbnM7XG4gIH1cblxuICBzZXRUeXBlKHR5cGUpIHtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICB9XG5cbiAgZ2V0VmFyaWFibGVOb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICB2YXJpYWJsZU5vZGUgPSBub2RlOyAgLy9cblxuICAgIHJldHVybiB2YXJpYWJsZU5vZGU7XG4gIH1cblxuICBnZXRUeXBlU3RyaW5nKCkgeyByZXR1cm4gdGhpcy50eXBlLmdldFN0cmluZygpOyB9XG5cbiAgaXNJZGVudGlmaWVyRXF1YWxUbyhpZGVudGlmaWVyKSB7XG4gICAgY29uc3QgaWRlbnRpZmllckVxdWFsVG8gPSAodGhpcy5pZGVudGlmaWVyID09PSBpZGVudGlmaWVyKTtcblxuICAgIHJldHVybiBpZGVudGlmaWVyRXF1YWxUbztcbiAgfVxuXG4gIGNvbXBhcmUodmFyaWFibGUpIHtcbiAgICBjb25zdCB2YXJpYWJsZUlkZW50aWZpZXIgPSB2YXJpYWJsZS5nZXRJZGVudGlmaWVyKCksXG4gICAgICAgICAgY29tcGFyZXNUbyA9ICh0aGlzLmlkZW50aWZpZXIgPT09IHZhcmlhYmxlSWRlbnRpZmllcik7XG5cbiAgICByZXR1cm4gY29tcGFyZXNUbztcbiAgfVxuXG4gIGNvbXBhcmVQYXJhbXRlcihwYXJhbWV0ZXIpIHtcbiAgICBjb25zdCBpZGVudGlmaWVyID0gcGFyYW1ldGVyLmdldElkZW50aWZpZXIoKSxcbiAgICAgICAgICBpZGVudGlmaWVyRXF1YWxUbyA9IHRoaXMuaXNJZGVudGlmaWVyRXF1YWxUbyhpZGVudGlmaWVyKSxcbiAgICAgICAgICBjb21wYXJlc1RvUGFyYW10ZXIgPSBpZGVudGlmaWVyRXF1YWxUbzsgLy8vXG5cbiAgICByZXR1cm4gY29tcGFyZXNUb1BhcmFtdGVyO1xuICB9XG5cbiAgY29tcGFyZVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpIHtcbiAgICBjb25zdCBpZGVudGlmaWVyID0gdmFyaWFibGVJZGVudGlmaWVyLCAvLy9cbiAgICAgICAgICBpZGVudGlmaWVyRXF1YWxUbyA9IHRoaXMuaXNJZGVudGlmaWVyRXF1YWxUbyhpZGVudGlmaWVyKSxcbiAgICAgICAgICBjb21wYXJlc1RvVmFyaWFibGVJZGVudGlmaWVyID0gaWRlbnRpZmllckVxdWFsVG87IC8vL1xuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aWZpZXI7XG4gIH1cblxuICB2YWxpZGF0ZShjb250ZXh0KSB7XG4gICAgbGV0IHZhbGlkYXRlcztcblxuICAgIGNvbnN0IHZhcmlhYmxlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHt2YXJpYWJsZVN0cmluZ30nIHZhcmlhYmxlLi4uYCk7XG5cbiAgICBjb25zdCB2YXJpYWJsZUlkZW50aWZpZXIgPSB0aGlzLmlkZW50aWZpZXIsXG4gICAgICAgICAgdmFyaWFibGUgPSBjb250ZXh0LmZpbmRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcik7XG5cbiAgICBpZiAodmFyaWFibGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHR5cGUgPSB2YXJpYWJsZS5nZXRUeXBlKCk7XG5cbiAgICAgIHRoaXMudHlwZSA9IHR5cGU7XG5cbiAgICAgIHZhbGlkYXRlcyA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt2YXJpYWJsZVN0cmluZ30nIHZhcmlhYmxlIGlzIG5vdCBwcmVzZW50LmApO1xuICAgIH1cblxuICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7dmFyaWFibGVTdHJpbmd9JyB2YXJpYWJsZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVUeXBlKGNvbnRleHQpIHtcbiAgICBsZXQgdHlwZVZhbGlkYXRlcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgdHlwZVN0cmluZyA9IHRoaXMudHlwZS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3R5cGVTdHJpbmd9JyB0eXBlLi4uYCk7XG5cbiAgICBjb25zdCBwcmVmaXhlZFR5cGVOYW1lID0gdGhpcy50eXBlLmdldFByZWZpeGVkTmFtZSgpLFxuICAgICAgICAgIHR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlQcmVmaXhlZFR5cGVOYW1lKHByZWZpeGVkVHlwZU5hbWUpO1xuXG4gICAgaWYgKHR5cGUgPT09IG51bGwpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBub3QgcHJlc2VudC5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50eXBlID0gdHlwZTsgLy8vXG5cbiAgICAgIHR5cGVWYWxpZGF0ZXMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0eXBlVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3R5cGVTdHJpbmd9JyB0eXBlLmApO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlVmFsaWRhdGVzO1xuICB9XG5cbiAgdW5pZnlUZXJtKHRlcm0sIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpIHtcbiAgICBsZXQgdGVybVVuaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICB2YXJpYWJsZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIHdpdGggdGhlICcke3ZhcmlhYmxlU3RyaW5nfScgdmFyaWFibGUuLi5gKTtcblxuICAgIGxldCB2YXJpYWJsZSxcbiAgICAgICAgc3Vic3RpdHV0aW9uO1xuXG4gICAgdmFyaWFibGUgPSB0aGlzOyAvLy9cblxuICAgIGNvbnN0IHZhcmlhYmxlSWRlbnRpZmllciA9IHZhcmlhYmxlLmdldElkZW50aWZpZXIoKTtcblxuICAgIHN1YnN0aXR1dGlvbiA9IGNvbnRleHQuZmluZFN1YnN0aXR1dGlvbkJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcik7XG5cbiAgICBpZiAoc3Vic3RpdHV0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25Db21wYXJlc1RvVGVybSA9IHN1YnN0aXR1dGlvbi5jb21wYXJlVGVybSh0ZXJtLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHN1YnN0aXR1dGlvbkNvbXBhcmVzVG9UZXJtKSB7XG4gICAgICAgIHRlcm1VbmlmaWVzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGNvbnRleHQ7XG5cbiAgICAgIGNvbnRleHQgPSBnZW5lcmFsQ29udGV4dDsgIC8vL1xuXG4gICAgICBjb25zdCB2YXJpYWJsZUlkZW50aWZpZXIgPSB2YXJpYWJsZS5nZXRJZGVudGlmaWVyKCk7XG5cbiAgICAgIHZhcmlhYmxlID0gY29udGV4dC5maW5kVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpO1xuXG4gICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgIGNvbnN0IHRlcm1Ob2RlID0gdGVybS5nZXROb2RlKCk7XG5cbiAgICAgIHRlcm0gPSBjb250ZXh0LmZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSk7XG5cbiAgICAgIGNvbnN0IHRlcm1UeXBlID0gdGVybS5nZXRUeXBlKCksXG4gICAgICAgICAgICB2YXJpYWJsZVR5cGUgPSB2YXJpYWJsZS5nZXRUeXBlKCksXG4gICAgICAgICAgICB0ZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZlZhcmlhYmxlVHlwZSA9IHRlcm1UeXBlLmlzRXF1YWxUb09yU3ViVHlwZU9mKHZhcmlhYmxlVHlwZSk7XG5cbiAgICAgIGlmICh0ZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZlZhcmlhYmxlVHlwZSkge1xuICAgICAgICBjb25zdCB7IFRlcm1TdWJzdGl0dXRpb24gfSA9IGVsZW1lbnRzO1xuXG4gICAgICAgIGxldCB0ZXJtU3Vic3RpdHV0aW9uO1xuXG4gICAgICAgIHRlcm1TdWJzdGl0dXRpb24gPSBUZXJtU3Vic3RpdHV0aW9uLmZyb21UZXJtQW5kVmFyaWFibGUodGVybSwgdmFyaWFibGUsIGNvbnRleHQpO1xuXG4gICAgICAgIHRlcm1TdWJzdGl0dXRpb24gPSB0ZXJtU3Vic3RpdHV0aW9uLnZhbGlkYXRlKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpOyAgLy8vXG5cbiAgICAgICAgaWYgKHRlcm1TdWJzdGl0dXRpb24gIT09IG51bGwpIHtcbiAgICAgICAgICB0ZXJtVW5pZmllcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGVybVVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIHdpdGggdGhlICcke3ZhcmlhYmxlU3RyaW5nfScgdmFyaWFibGUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlcm1VbmlmaWVzO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IHR5cGVKU09OID0gdHlwZVRvVHlwZUpTT04odGhpcy50eXBlKSxcbiAgICAgICAgICBpZGVudGlmaWVySlNPTiA9IGlkZW50aWZpZXJUb0lkZW50aWZpZXJKU09OKHRoaXMuaWRlbnRpZmllciksXG4gICAgICAgICAgcHJvcGVydHlSZWxhdGlvbnNKU09OID0gcHJvcGVydHlSZWxhdGlvbnNUb1Byb3BlcnR5UmVsYXRpb25zSlNPTih0aGlzLnByb3BlcnR5UmVsYXRpb25zKSxcbiAgICAgICAgICB0eXBlID0gdHlwZUpTT04sICAvLy9cbiAgICAgICAgICBpZGVudGlmaWVyID0gaWRlbnRpZmllckpTT04sICAvLy9cbiAgICAgICAgICBwcm9wZXJ0eVJlbGF0aW9ucyA9IHByb3BlcnR5UmVsYXRpb25zSlNPTiwgIC8vL1xuICAgICAgICAgIHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgaWRlbnRpZmllcixcbiAgICAgICAgICAgIHByb3BlcnR5UmVsYXRpb25zXG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlZhcmlhYmxlXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBjb25zdCB2YXJpYWJsZSA9IGxpdGVyYWxseSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICB2YXJpYWJsZU5vZGUgPSBpbnN0YW50aWF0ZVZhcmlhYmxlKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICBub2RlID0gdmFyaWFibGVOb2RlLCAgLy8vXG4gICAgICAgICAgICB0eXBlID0gdHlwZUZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgICAgaWRlbnRpZmllciA9IGlkZW50aWZpZXJGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICAgIHByb3BlcnR5UmVsYXRpb25zID0gcHJvcGVydHlSZWxhdGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICAgIHZhcmlhYmxlID0gbmV3IFZhcmlhYmxlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgdHlwZSwgaWRlbnRpZmllciwgcHJvcGVydHlSZWxhdGlvbnMpO1xuXG4gICAgICByZXR1cm4gdmFyaWFibGU7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdmFyaWFibGU7XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbImRlZmluZSIsIlZhcmlhYmxlIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwidHlwZSIsImlkZW50aWZpZXIiLCJwcm9wZXJ0eVJlbGF0aW9ucyIsImdldElkZW50aWZpZXIiLCJnZXRUeXBlIiwiZ2V0UHJvcGVydHlSZWxhdGlvbnMiLCJzZXRUeXBlIiwiZ2V0VmFyaWFibGVOb2RlIiwiZ2V0Tm9kZSIsInZhcmlhYmxlTm9kZSIsImdldFR5cGVTdHJpbmciLCJnZXRTdHJpbmciLCJpc0lkZW50aWZpZXJFcXVhbFRvIiwiaWRlbnRpZmllckVxdWFsVG8iLCJjb21wYXJlIiwidmFyaWFibGUiLCJ2YXJpYWJsZUlkZW50aWZpZXIiLCJjb21wYXJlc1RvIiwiY29tcGFyZVBhcmFtdGVyIiwicGFyYW1ldGVyIiwiY29tcGFyZXNUb1BhcmFtdGVyIiwiY29tcGFyZVZhcmlhYmxlSWRlbnRpZmllciIsImNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aWZpZXIiLCJ2YWxpZGF0ZSIsInZhbGlkYXRlcyIsInZhcmlhYmxlU3RyaW5nIiwidHJhY2UiLCJmaW5kVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllciIsImRlYnVnIiwidmFsaWRhdGVUeXBlIiwidHlwZVZhbGlkYXRlcyIsInR5cGVTdHJpbmciLCJwcmVmaXhlZFR5cGVOYW1lIiwiZ2V0UHJlZml4ZWROYW1lIiwiZmluZFR5cGVCeVByZWZpeGVkVHlwZU5hbWUiLCJ1bmlmeVRlcm0iLCJ0ZXJtIiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJ0ZXJtVW5pZmllcyIsInRlcm1TdHJpbmciLCJzdWJzdGl0dXRpb24iLCJmaW5kU3Vic3RpdHV0aW9uQnlWYXJpYWJsZUlkZW50aWZpZXIiLCJzdWJzdGl0dXRpb25Db21wYXJlc1RvVGVybSIsImNvbXBhcmVUZXJtIiwidGVybU5vZGUiLCJmaW5kVGVybUJ5VGVybU5vZGUiLCJ0ZXJtVHlwZSIsInZhcmlhYmxlVHlwZSIsInRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mVmFyaWFibGVUeXBlIiwiaXNFcXVhbFRvT3JTdWJUeXBlT2YiLCJUZXJtU3Vic3RpdHV0aW9uIiwiZWxlbWVudHMiLCJ0ZXJtU3Vic3RpdHV0aW9uIiwiZnJvbVRlcm1BbmRWYXJpYWJsZSIsInRvSlNPTiIsInR5cGVKU09OIiwidHlwZVRvVHlwZUpTT04iLCJpZGVudGlmaWVySlNPTiIsImlkZW50aWZpZXJUb0lkZW50aWZpZXJKU09OIiwicHJvcGVydHlSZWxhdGlvbnNKU09OIiwicHJvcGVydHlSZWxhdGlvbnNUb1Byb3BlcnR5UmVsYXRpb25zSlNPTiIsImpzb24iLCJuYW1lIiwiZnJvbUpTT04iLCJsaXRlcmFsbHkiLCJpbnN0YW50aWF0ZVZhcmlhYmxlIiwidHlwZUZyb21KU09OIiwiaWRlbnRpZmllckZyb21KU09OIiwicHJvcGVydHlSZWxhdGlvbnNGcm9tSlNPTiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBZ0JBOzs7ZUFBQTs7O2dDQWR3QjtrRUFFSDt5QkFHSzs2QkFDVTtzQkFNcUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQUV6RCxXQUFlQSxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLGlCQUFpQkMsdUJBQU87SUFDbEQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLGlCQUFpQixDQUFFO1FBQ3RFLEtBQUssQ0FBQ0wsU0FBU0MsUUFBUUM7UUFFdkIsSUFBSSxDQUFDQyxJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDQyxVQUFVLEdBQUdBO1FBQ2xCLElBQUksQ0FBQ0MsaUJBQWlCLEdB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
@@ -18,9 +18,18 @@ _export(exports, {
18
18
  get instantiateConstructor () {
19
19
  return instantiateConstructor;
20
20
  },
21
+ get instantiateContainedAssertion () {
22
+ return instantiateContainedAssertion;
23
+ },
24
+ get instantiateDefinedAssertion () {
25
+ return instantiateDefinedAssertion;
26
+ },
21
27
  get instantiateEquivalence () {
22
28
  return instantiateEquivalence;
23
29
  },
30
+ get instantiateFrame () {
31
+ return instantiateFrame;
32
+ },
24
33
  get instantiateFrameSubstitution () {
25
34
  return instantiateFrameSubstitution;
26
35
  },
@@ -30,9 +39,18 @@ _export(exports, {
30
39
  get instantiateMetavariable () {
31
40
  return instantiateMetavariable;
32
41
  },
42
+ get instantiateParameter () {
43
+ return instantiateParameter;
44
+ },
33
45
  get instantiatePremise () {
34
46
  return instantiatePremise;
35
47
  },
48
+ get instantiateProcedureCall () {
49
+ return instantiateProcedureCall;
50
+ },
51
+ get instantiateProcedureReference () {
52
+ return instantiateProcedureReference;
53
+ },
36
54
  get instantiateReference () {
37
55
  return instantiateReference;
38
56
  },
@@ -48,13 +66,25 @@ _export(exports, {
48
66
  get instantiateSubproofAssertion () {
49
67
  return instantiateSubproofAssertion;
50
68
  },
69
+ get instantiateTerm () {
70
+ return instantiateTerm;
71
+ },
51
72
  get instantiateTermSubstitution () {
52
73
  return instantiateTermSubstitution;
74
+ },
75
+ get instantiateVariable () {
76
+ return instantiateVariable;
53
77
  }
54
78
  });
55
79
  const _bnf = require("../utilities/bnf");
56
80
  const _ruleNames = require("../ruleNames");
57
- const labelPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.LABEL_RULE_NAME), premisePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.PREMISE_RULE_NAME), statementPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.STATEMENT_RULE_NAME), referencePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.REFERENCE_RULE_NAME), combinatorPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.COMBINATOR_RULE_NAME), conclusionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.CONCLUSION_RULE_NAME), constructorPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.CONSTRUCTOR_RULE_NAME), equivalencePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.EQUIVALENCE_RULE_NAME), metavariablePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.METAVARIABLE_RULE_NAME), subproofAssertionlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.SUBPROOF_ASSERTION_RULE_NAME), termSubstitutionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.TERM_SUBSTITUTION_RULE_NAME), frameSubstitutionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.FRAME_SUBSTITUTION_RULE_NAME), statementSubstitutionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.STATEMENT_SUBSTITUTION_RULE_NAME), referenceSubstitutionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.REFERENCE_SUBSTITUTION_RULE_NAME);
81
+ const termPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.TERM_RULE_NAME), framePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.FRAME_RULE_NAME), labelPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.LABEL_RULE_NAME), premisePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.PREMISE_RULE_NAME), variablePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.VARIABLE_RULE_NAME), parameterPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.PARAMETER_RULE_NAME), statementPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.STATEMENT_RULE_NAME), referencePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.REFERENCE_RULE_NAME), combinatorPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.COMBINATOR_RULE_NAME), conclusionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.CONCLUSION_RULE_NAME), constructorPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.CONSTRUCTOR_RULE_NAME), equivalencePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.EQUIVALENCE_RULE_NAME), metavariablePlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.METAVARIABLE_RULE_NAME), procedureCalllaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.PROCEDURE_CALL_RULE_NAME), definedAssertionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.DEFINED_ASSERTION_RULE_NAME), termSubstitutionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.TERM_SUBSTITUTION_RULE_NAME), subproofAssertionlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.SUBPROOF_ASSERTION_RULE_NAME), frameSubstitutionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.FRAME_SUBSTITUTION_RULE_NAME), procedureReferencelaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.PROCEDURE_REFERENCE_RULE_NAME), containedAssertionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.CONTAINED_ASSERTION_RULE_NAME), statementSubstitutionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.STATEMENT_SUBSTITUTION_RULE_NAME), referenceSubstitutionPlaceholderRule = (0, _bnf.ruleFromRuleName)(_ruleNames.REFERENCE_SUBSTITUTION_RULE_NAME);
82
+ function instantiateTerm(string, context) {
83
+ return instantiate(termPlaceholderRule, string, context);
84
+ }
85
+ function instantiateFrame(string, context) {
86
+ return instantiate(framePlaceholderRule, string, context);
87
+ }
58
88
  function instantiateLabel(string, context) {
59
89
  return instantiate(labelPlaceholderRule, string, context);
60
90
  }
@@ -63,6 +93,12 @@ function instantiatePremise(string, context) {
63
93
  `; ///
64
94
  return instantiate(premisePlaceholderRule, string, context);
65
95
  }
96
+ function instantiateVariable(string, context) {
97
+ return instantiate(variablePlaceholderRule, string, context);
98
+ }
99
+ function instantiateParameter(string, context) {
100
+ return instantiate(parameterPlaceholderRule, string, context);
101
+ }
66
102
  function instantiateStatement(string, context) {
67
103
  return instantiate(statementPlaceholderRule, string, context);
68
104
  }
@@ -86,6 +122,12 @@ function instantiateEquivalence(string, context) {
86
122
  function instantiateMetavariable(string, context) {
87
123
  return instantiate(metavariablePlaceholderRule, string, context);
88
124
  }
125
+ function instantiateProcedureCall(string, context) {
126
+ return instantiate(procedureCalllaceholderRule, string, context);
127
+ }
128
+ function instantiateDefinedAssertion(string, context) {
129
+ return instantiate(definedAssertionPlaceholderRule, string, context);
130
+ }
89
131
  function instantiateTermSubstitution(string, context) {
90
132
  return instantiate(termSubstitutionPlaceholderRule, string, context);
91
133
  }
@@ -95,6 +137,12 @@ function instantiateSubproofAssertion(string, context) {
95
137
  function instantiateFrameSubstitution(string, context) {
96
138
  return instantiate(frameSubstitutionPlaceholderRule, string, context);
97
139
  }
140
+ function instantiateProcedureReference(string, context) {
141
+ return instantiate(procedureReferencelaceholderRule, string, context);
142
+ }
143
+ function instantiateContainedAssertion(string, context) {
144
+ return instantiate(containedAssertionPlaceholderRule, string, context);
145
+ }
98
146
  function instantiateStatementSubstitution(string, context) {
99
147
  return instantiate(statementSubstitutionPlaceholderRule, string, context);
100
148
  }
@@ -116,4 +164,4 @@ function instantiate(placeholderRule, string, context) {
116
164
  return node;
117
165
  }
118
166
 
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9jZXNzL2luc3RhbnRpYXRlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBydWxlRnJvbVJ1bGVOYW1lIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9ibmZcIjtcbmltcG9ydCB7IExBQkVMX1JVTEVfTkFNRSxcbiAgICAgICAgIFBSRU1JU0VfUlVMRV9OQU1FLFxuICAgICAgICAgU1RBVEVNRU5UX1JVTEVfTkFNRSxcbiAgICAgICAgIFJFRkVSRU5DRV9SVUxFX05BTUUsXG4gICAgICAgICBDT01CSU5BVE9SX1JVTEVfTkFNRSxcbiAgICAgICAgIENPTkNMVVNJT05fUlVMRV9OQU1FLFxuICAgICAgICAgQ09OU1RSVUNUT1JfUlVMRV9OQU1FLFxuICAgICAgICAgRVFVSVZBTEVOQ0VfUlVMRV9OQU1FLFxuICAgICAgICAgTUVUQVZBUklBQkxFX1JVTEVfTkFNRSxcbiAgICAgICAgIFRFUk1fU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIEZSQU1FX1NVQlNUSVRVVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBTVUJQUk9PRl9BU1NFUlRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgU1RBVEVNRU5UX1NVQlNUSVRVVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBSRUZFUkVOQ0VfU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSB9IGZyb20gXCIuLi9ydWxlTmFtZXNcIjtcblxuY29uc3QgbGFiZWxQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKExBQkVMX1JVTEVfTkFNRSksXG4gICAgICBwcmVtaXNlUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShQUkVNSVNFX1JVTEVfTkFNRSksXG4gICAgICBzdGF0ZW1lbnRQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFNUQVRFTUVOVF9SVUxFX05BTUUpLFxuICAgICAgcmVmZXJlbmNlUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShSRUZFUkVOQ0VfUlVMRV9OQU1FKSxcbiAgICAgIGNvbWJpbmF0b3JQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKENPTUJJTkFUT1JfUlVMRV9OQU1FKSxcbiAgICAgIGNvbmNsdXNpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKENPTkNMVVNJT05fUlVMRV9OQU1FKSxcbiAgICAgIGNvbnN0cnVjdG9yUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShDT05TVFJVQ1RPUl9SVUxFX05BTUUpLFxuICAgICAgZXF1aXZhbGVuY2VQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKEVRVUlWQUxFTkNFX1JVTEVfTkFNRSksXG4gICAgICBtZXRhdmFyaWFibGVQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKE1FVEFWQVJJQUJMRV9SVUxFX05BTUUpLFxuICAgICAgc3VicHJvb2ZBc3NlcnRpb25sYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoU1VCUFJPT0ZfQVNTRVJUSU9OX1JVTEVfTkFNRSksXG4gICAgICB0ZXJtU3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShURVJNX1NVQlNUSVRVVElPTl9SVUxFX05BTUUpLFxuICAgICAgZnJhbWVTdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKEZSQU1FX1NVQlNUSVRVVElPTl9SVUxFX05BTUUpLFxuICAgICAgc3RhdGVtZW50U3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShTVEFURU1FTlRfU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSksXG4gICAgICByZWZlcmVuY2VTdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFJFRkVSRU5DRV9TVUJTVElUVVRJT05fUlVMRV9OQU1FKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlTGFiZWwoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShsYWJlbFBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVQcmVtaXNlKHN0cmluZywgY29udGV4dCkge1xuICBzdHJpbmcgPSBgJHtzdHJpbmd9XG5gOyAgLy8vXG5cbiAgcmV0dXJuIGluc3RhbnRpYXRlKHByZW1pc2VQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVN0YXRlbWVudChzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHN0YXRlbWVudFBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVSZWZlcmVuY2Uoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShyZWZlcmVuY2VQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlQ29tYmluYXRvcihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGNvbWJpbmF0b3JQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlQ29uY2x1c2lvbihzdHJpbmcsIGNvbnRleHQpIHtcbiAgc3RyaW5nID0gYCR7c3RyaW5nfVxuYDsgIC8vL1xuXG4gIHJldHVybiBpbnN0YW50aWF0ZShjb25jbHVzaW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVDb25zdHJ1Y3RvcihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGNvbnN0cnVjdG9yUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUVxdWl2YWxlbmNlKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoZXF1aXZhbGVuY2VQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlTWV0YXZhcmlhYmxlKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUobWV0YXZhcmlhYmxlUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVRlcm1TdWJzdGl0dXRpb24oc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZSh0ZXJtU3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVN1YnByb29mQXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoc3VicHJvb2ZBc3NlcnRpb25sYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVGcmFtZVN1YnN0aXR1dGlvbihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGZyYW1lU3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVN0YXRlbWVudFN1YnN0aXR1dGlvbihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHN0YXRlbWVudFN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVSZWZlcmVuY2VTdWJzdGl0dXRpb24oc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShyZWZlcmVuY2VTdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZnVuY3Rpb24gaW5zdGFudGlhdGUocGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpIHtcbiAgbGV0IG5vZGU7XG5cbiAgY29uc3QgbGV4ZXIgPSBjb250ZXh0LmdldExleGVyKCksXG4gICAgICAgIHBhcnNlciA9IGNvbnRleHQuZ2V0UGFyc2VyKCksXG4gICAgICAgIGNvbnRlbnQgPSBgJHtzdHJpbmd9XG5gLFxuICAgICAgICB0b2tlbnMgPSBsZXhlci50b2tlbmlzZShjb250ZW50KTtcblxuICBjb250ZXh0LnNldFRva2Vucyh0b2tlbnMpO1xuXG4gIGNvbnN0IHN0YXJ0UnVsZSA9IHBsYWNlaG9sZGVyUnVsZTsgIC8vL1xuXG4gIG5vZGUgPSBwYXJzZXIucGFyc2UodG9rZW5zLCBzdGFydFJ1bGUpO1xuXG4gIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG5vZGU7IC8vL1xuXG4gIG5vblRlcm1pbmFsTm9kZS5zb21lQ2hpbGROb2RlKChjaGlsZE5vZGUpID0+IHtcbiAgICBub2RlID0gY2hpbGROb2RlOyAvLy9cblxuICAgIHJldHVybiB0cnVlO1xuICB9KTtcblxuICByZXR1cm4gbm9kZTtcbn1cbiJdLCJuYW1lcyI6WyJpbnN0YW50aWF0ZUNvbWJpbmF0b3IiLCJpbnN0YW50aWF0ZUNvbmNsdXNpb24iLCJpbnN0YW50aWF0ZUNvbnN0cnVjdG9yIiwiaW5zdGFudGlhdGVFcXVpdmFsZW5jZSIsImluc3RhbnRpYXRlRnJhbWVTdWJzdGl0dXRpb24iLCJpbnN0YW50aWF0ZUxhYmVsIiwiaW5zdGFudGlhdGVNZXRhdmFyaWFibGUiLCJpbnN0YW50aWF0ZVByZW1pc2UiLCJpbnN0YW50aWF0ZVJlZmVyZW5jZSIsImluc3RhbnRpYXRlUmVmZXJlbmNlU3Vic3RpdHV0aW9uIiwiaW5zdGFudGlhdGVTdGF0ZW1lbnQiLCJpbnN0YW50aWF0ZVN0YXRlbWVudFN1YnN0aXR1dGlvbiIsImluc3RhbnRpYXRlU3VicHJvb2ZBc3NlcnRpb24iLCJpbnN0YW50aWF0ZVRlcm1TdWJzdGl0dXRpb24iLCJsYWJlbFBsYWNlaG9sZGVyUnVsZSIsInJ1bGVGcm9tUnVsZU5hbWUiLCJMQUJFTF9SVUxFX05BTUUiLCJwcmVtaXNlUGxhY2Vob2xkZXJSdWxlIiwiUFJFTUlTRV9SVUxFX05BTUUiLCJzdGF0ZW1lbnRQbGFjZWhvbGRlclJ1bGUiLCJTVEFURU1FTlRfUlVMRV9OQU1FIiwicmVmZXJlbmNlUGxhY2Vob2xkZXJSdWxlIiwiUkVGRVJFTkNFX1JVTEVfTkFNRSIsImNvbWJpbmF0b3JQbGFjZWhvbGRlclJ1bGUiLCJDT01CSU5BVE9SX1JVTEVfTkFNRSIsImNvbmNsdXNpb25QbGFjZWhvbGRlclJ1bGUiLCJDT05DTFVTSU9OX1JVTEVfTkFNRSIsImNvbnN0cnVjdG9yUGxhY2Vob2xkZXJSdWxlIiwiQ09OU1RSVUNUT1JfUlVMRV9OQU1FIiwiZXF1aXZhbGVuY2VQbGFjZWhvbGRlclJ1bGUiLCJFUVVJVkFMRU5DRV9SVUxFX05BTUUiLCJtZXRhdmFyaWFibGVQbGFjZWhvbGRlclJ1bGUiLCJNRVRBVkFSSUFCTEVfUlVMRV9OQU1FIiwic3VicHJvb2ZBc3NlcnRpb25sYWNlaG9sZGVyUnVsZSIsIlNVQlBST09GX0FTU0VSVElPTl9SVUxFX05BTUUiLCJ0ZXJtU3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlIiwiVEVSTV9TVUJTVElUVVRJT05fUlVMRV9OQU1FIiwiZnJhbWVTdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUiLCJGUkFNRV9TVUJTVElUVVRJT05fUlVMRV9OQU1FIiwic3RhdGVtZW50U3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlIiwiU1RBVEVNRU5UX1NVQlNUSVRVVElPTl9SVUxFX05BTUUiLCJyZWZlcmVuY2VTdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUiLCJSRUZFUkVOQ0VfU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSIsInN0cmluZyIsImNvbnRleHQiLCJpbnN0YW50aWF0ZSIsInBsYWNlaG9sZGVyUnVsZSIsIm5vZGUiLCJsZXhlciIsImdldExleGVyIiwicGFyc2VyIiwiZ2V0UGFyc2VyIiwiY29udGVudCIsInRva2VucyIsInRva2VuaXNlIiwic2V0VG9rZW5zIiwic3RhcnRSdWxlIiwicGFyc2UiLCJub25UZXJtaW5hbE5vZGUiLCJzb21lQ2hpbGROb2RlIiwiY2hpbGROb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUE4Q2dCQTtlQUFBQTs7UUFFQUM7ZUFBQUE7O1FBT0FDO2VBQUFBOztRQUVBQztlQUFBQTs7UUFRQUM7ZUFBQUE7O1FBaENBQztlQUFBQTs7UUEwQkFDO2VBQUFBOztRQXhCQUM7ZUFBQUE7O1FBU0FDO2VBQUFBOztRQXlCQUM7ZUFBQUE7O1FBM0JBQztlQUFBQTs7UUF5QkFDO2VBQUFBOztRQUpBQztlQUFBQTs7UUFGQUM7ZUFBQUE7OztxQkEzRGlCOzJCQWNnQjtBQUVqRCxNQUFNQyx1QkFBdUJDLElBQUFBLHFCQUFnQixFQUFDQywwQkFBZSxHQUN2REMseUJBQXlCRixJQUFBQSxxQkFBZ0IsRUFBQ0csNEJBQWlCLEdBQzNEQywyQkFBMkJKLElBQUFBLHFCQUFnQixFQUFDSyw4QkFBbUIsR0FDL0RDLDJCQUEyQk4sSUFBQUEscUJBQWdCLEVBQUNPLDhCQUFtQixHQUMvREMsNEJBQTRCUixJQUFBQSxxQkFBZ0IsRUFBQ1MsK0JBQW9CLEdBQ2pFQyw0QkFBNEJWLElBQUFBLHFCQUFnQixFQUFDVywrQkFBb0IsR0FDakVDLDZCQUE2QlosSUFBQUEscUJBQWdCLEVBQUNhLGdDQUFxQixHQUNuRUMsNkJBQTZCZCxJQUFBQSxxQkFBZ0IsRUFBQ2UsZ0NBQXFCLEdBQ25FQyw4QkFBOEJoQixJQUFBQSxxQkFBZ0IsRUFBQ2lCLGlDQUFzQixHQUNyRUMsa0NBQWtDbEIsSUFBQUEscUJBQWdCLEVBQUNtQix1Q0FBNEIsR0FDL0VDLGtDQUFrQ3BCLElBQUFBLHFCQUFn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
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9jZXNzL2luc3RhbnRpYXRlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBydWxlRnJvbVJ1bGVOYW1lIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9ibmZcIjtcbmltcG9ydCB7IFRFUk1fUlVMRV9OQU1FLFxuICAgICAgICAgRlJBTUVfUlVMRV9OQU1FLFxuICAgICAgICAgTEFCRUxfUlVMRV9OQU1FLFxuICAgICAgICAgUFJFTUlTRV9SVUxFX05BTUUsXG4gICAgICAgICBWQVJJQUJMRV9SVUxFX05BTUUsXG4gICAgICAgICBQQVJBTUVURVJfUlVMRV9OQU1FLFxuICAgICAgICAgU1RBVEVNRU5UX1JVTEVfTkFNRSxcbiAgICAgICAgIFJFRkVSRU5DRV9SVUxFX05BTUUsXG4gICAgICAgICBDT01CSU5BVE9SX1JVTEVfTkFNRSxcbiAgICAgICAgIENPTkNMVVNJT05fUlVMRV9OQU1FLFxuICAgICAgICAgQ09OU1RSVUNUT1JfUlVMRV9OQU1FLFxuICAgICAgICAgRVFVSVZBTEVOQ0VfUlVMRV9OQU1FLFxuICAgICAgICAgTUVUQVZBUklBQkxFX1JVTEVfTkFNRSxcbiAgICAgICAgIFBST0NFRFVSRV9DQUxMX1JVTEVfTkFNRSxcbiAgICAgICAgIERFRklORURfQVNTRVJUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIFRFUk1fU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIFNVQlBST09GX0FTU0VSVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBGUkFNRV9TVUJTVElUVVRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgUFJPQ0VEVVJFX1JFRkVSRU5DRV9SVUxFX05BTUUsXG4gICAgICAgICBDT05UQUlORURfQVNTRVJUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIFNUQVRFTUVOVF9TVUJTVElUVVRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgUkVGRVJFTkNFX1NVQlNUSVRVVElPTl9SVUxFX05BTUUgfSBmcm9tIFwiLi4vcnVsZU5hbWVzXCI7XG5cbmNvbnN0IHRlcm1QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFRFUk1fUlVMRV9OQU1FKSxcbiAgICAgIGZyYW1lUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShGUkFNRV9SVUxFX05BTUUpLFxuICAgICAgbGFiZWxQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKExBQkVMX1JVTEVfTkFNRSksXG4gICAgICBwcmVtaXNlUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShQUkVNSVNFX1JVTEVfTkFNRSksXG4gICAgICB2YXJpYWJsZVBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoVkFSSUFCTEVfUlVMRV9OQU1FKSxcbiAgICAgIHBhcmFtZXRlclBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoUEFSQU1FVEVSX1JVTEVfTkFNRSksXG4gICAgICBzdGF0ZW1lbnRQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFNUQVRFTUVOVF9SVUxFX05BTUUpLFxuICAgICAgcmVmZXJlbmNlUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShSRUZFUkVOQ0VfUlVMRV9OQU1FKSxcbiAgICAgIGNvbWJpbmF0b3JQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKENPTUJJTkFUT1JfUlVMRV9OQU1FKSxcbiAgICAgIGNvbmNsdXNpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKENPTkNMVVNJT05fUlVMRV9OQU1FKSxcbiAgICAgIGNvbnN0cnVjdG9yUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShDT05TVFJVQ1RPUl9SVUxFX05BTUUpLFxuICAgICAgZXF1aXZhbGVuY2VQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKEVRVUlWQUxFTkNFX1JVTEVfTkFNRSksXG4gICAgICBtZXRhdmFyaWFibGVQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKE1FVEFWQVJJQUJMRV9SVUxFX05BTUUpLFxuICAgICAgcHJvY2VkdXJlQ2FsbGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShQUk9DRURVUkVfQ0FMTF9SVUxFX05BTUUpLFxuICAgICAgZGVmaW5lZEFzc2VydGlvblBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoREVGSU5FRF9BU1NFUlRJT05fUlVMRV9OQU1FKSxcbiAgICAgIHRlcm1TdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFRFUk1fU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSksXG4gICAgICBzdWJwcm9vZkFzc2VydGlvbmxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShTVUJQUk9PRl9BU1NFUlRJT05fUlVMRV9OQU1FKSxcbiAgICAgIGZyYW1lU3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShGUkFNRV9TVUJTVElUVVRJT05fUlVMRV9OQU1FKSxcbiAgICAgIHByb2NlZHVyZVJlZmVyZW5jZWxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShQUk9DRURVUkVfUkVGRVJFTkNFX1JVTEVfTkFNRSksXG4gICAgICBjb250YWluZWRBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKENPTlRBSU5FRF9BU1NFUlRJT05fUlVMRV9OQU1FKSxcbiAgICAgIHN0YXRlbWVudFN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoU1RBVEVNRU5UX1NVQlNUSVRVVElPTl9SVUxFX05BTUUpLFxuICAgICAgcmVmZXJlbmNlU3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShSRUZFUkVOQ0VfU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVRlcm0oc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZSh0ZXJtUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUZyYW1lKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoZnJhbWVQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlTGFiZWwoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShsYWJlbFBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVQcmVtaXNlKHN0cmluZywgY29udGV4dCkge1xuICBzdHJpbmcgPSBgJHtzdHJpbmd9XG5gOyAgLy8vXG5cbiAgcmV0dXJuIGluc3RhbnRpYXRlKHByZW1pc2VQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVZhcmlhYmxlKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUodmFyaWFibGVQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlUGFyYW1ldGVyKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUocGFyYW1ldGVyUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVN0YXRlbWVudChzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHN0YXRlbWVudFBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVSZWZlcmVuY2Uoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShyZWZlcmVuY2VQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlQ29tYmluYXRvcihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGNvbWJpbmF0b3JQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlQ29uY2x1c2lvbihzdHJpbmcsIGNvbnRleHQpIHtcbiAgc3RyaW5nID0gYCR7c3RyaW5nfVxuYDsgIC8vL1xuXG4gIHJldHVybiBpbnN0YW50aWF0ZShjb25jbHVzaW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVDb25zdHJ1Y3RvcihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGNvbnN0cnVjdG9yUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUVxdWl2YWxlbmNlKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoZXF1aXZhbGVuY2VQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlTWV0YXZhcmlhYmxlKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUobWV0YXZhcmlhYmxlUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVByb2NlZHVyZUNhbGwoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShwcm9jZWR1cmVDYWxsbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlRGVmaW5lZEFzc2VydGlvbihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGRlZmluZWRBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlVGVybVN1YnN0aXR1dGlvbihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHRlcm1TdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlU3VicHJvb2ZBc3NlcnRpb24oc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShzdWJwcm9vZkFzc2VydGlvbmxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUZyYW1lU3Vic3RpdHV0aW9uKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoZnJhbWVTdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlUHJvY2VkdXJlUmVmZXJlbmNlKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUocHJvY2VkdXJlUmVmZXJlbmNlbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlQ29udGFpbmVkQXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoY29udGFpbmVkQXNzZXJ0aW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVN0YXRlbWVudFN1YnN0aXR1dGlvbihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHN0YXRlbWVudFN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVSZWZlcmVuY2VTdWJzdGl0dXRpb24oc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShyZWZlcmVuY2VTdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZnVuY3Rpb24gaW5zdGFudGlhdGUocGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpIHtcbiAgbGV0IG5vZGU7XG5cbiAgY29uc3QgbGV4ZXIgPSBjb250ZXh0LmdldExleGVyKCksXG4gICAgICAgIHBhcnNlciA9IGNvbnRleHQuZ2V0UGFyc2VyKCksXG4gICAgICAgIGNvbnRlbnQgPSBgJHtzdHJpbmd9XG5gLFxuICAgICAgICB0b2tlbnMgPSBsZXhlci50b2tlbmlzZShjb250ZW50KTtcblxuICBjb250ZXh0LnNldFRva2Vucyh0b2tlbnMpO1xuXG4gIGNvbnN0IHN0YXJ0UnVsZSA9IHBsYWNlaG9sZGVyUnVsZTsgIC8vL1xuXG4gIG5vZGUgPSBwYXJzZXIucGFyc2UodG9rZW5zLCBzdGFydFJ1bGUpO1xuXG4gIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG5vZGU7IC8vL1xuXG4gIG5vblRlcm1pbmFsTm9kZS5zb21lQ2hpbGROb2RlKChjaGlsZE5vZGUpID0+IHtcbiAgICBub2RlID0gY2hpbGROb2RlOyAvLy9cblxuICAgIHJldHVybiB0cnVlO1xuICB9KTtcblxuICByZXR1cm4gbm9kZTtcbn1cbiJdLCJuYW1lcyI6WyJpbnN0YW50aWF0ZUNvbWJpbmF0b3IiLCJpbnN0YW50aWF0ZUNvbmNsdXNpb24iLCJpbnN0YW50aWF0ZUNvbnN0cnVjdG9yIiwiaW5zdGFudGlhdGVDb250YWluZWRBc3NlcnRpb24iLCJpbnN0YW50aWF0ZURlZmluZWRBc3NlcnRpb24iLCJpbnN0YW50aWF0ZUVxdWl2YWxlbmNlIiwiaW5zdGFudGlhdGVGcmFtZSIsImluc3RhbnRpYXRlRnJhbWVTdWJzdGl0dXRpb24iLCJpbnN0YW50aWF0ZUxhYmVsIiwiaW5zdGFudGlhdGVNZXRhdmFyaWFibGUiLCJpbnN0YW50aWF0ZVBhcmFtZXRlciIsImluc3RhbnRpYXRlUHJlbWlzZSIsImluc3RhbnRpYXRlUHJvY2VkdXJlQ2FsbCIsImluc3RhbnRpYXRlUHJvY2VkdXJlUmVmZXJlbmNlIiwiaW5zdGFudGlhdGVSZWZlcmVuY2UiLCJpbnN0YW50aWF0ZVJlZmVyZW5jZVN1YnN0aXR1dGlvbiIsImluc3RhbnRpYXRlU3RhdGVtZW50IiwiaW5zdGFudGlhdGVTdGF0ZW1lbnRTdWJzdGl0dXRpb24iLCJpbnN0YW50aWF0ZVN1YnByb29mQXNzZXJ0aW9uIiwiaW5zdGFudGlhdGVUZXJtIiwiaW5zdGFudGlhdGVUZXJtU3Vic3RpdHV0aW9uIiwiaW5zdGFudGlhdGVWYXJpYWJsZSIsInRlcm1QbGFjZWhvbGRlclJ1bGUiLCJydWxlRnJvbVJ1bGVOYW1lIiwiVEVSTV9SVUxFX05BTUUiLCJmcmFtZVBsYWNlaG9sZGVyUnVsZSIsIkZSQU1FX1JVTEVfTkFNRSIsImxhYmVsUGxhY2Vob2xkZXJSdWxlIiwiTEFCRUxfUlVMRV9OQU1FIiwicHJlbWlzZVBsYWNlaG9sZGVyUnVsZSIsIlBSRU1JU0VfUlVMRV9OQU1FIiwidmFyaWFibGVQbGFjZWhvbGRlclJ1bGUiLCJWQVJJQUJMRV9SVUxFX05BTUUiLCJwYXJhbWV0ZXJQbGFjZWhvbGRlclJ1bGUiLCJQQVJBTUVURVJfUlVMRV9OQU1FIiwic3RhdGVtZW50UGxhY2Vob2xkZXJSdWxlIiwiU1RBVEVNRU5UX1JVTEVfTkFNRSIsInJlZmVyZW5jZVBsYWNlaG9sZGVyUnVsZSIsIlJFRkVSRU5DRV9SVUxFX05BTUUiLCJjb21iaW5hdG9yUGxhY2Vob2xkZXJSdWxlIiwiQ09NQklOQVRPUl9SVUxFX05BTUUiLCJjb25jbHVzaW9uUGxhY2Vob2xkZXJSdWxlIiwiQ09OQ0xVU0lPTl9SVUxFX05BTUUiLCJjb25zdHJ1Y3RvclBsYWNlaG9sZGVyUnVsZSIsIkNPTlNUUlVDVE9SX1JVTEVfTkFNRSIsImVxdWl2YWxlbmNlUGxhY2Vob2xkZXJSdWxlIiwiRVFVSVZBTEVOQ0VfUlVMRV9OQU1FIiwibWV0YXZhcmlhYmxlUGxhY2Vob2xkZXJSdWxlIiwiTUVUQVZBUklBQkxFX1JVTEVfTkFNRSIsInByb2NlZHVyZUNhbGxsYWNlaG9sZGVyUnVsZSIsIlBST0NFRFVSRV9DQUxMX1JVTEVfTkFNRSIsImRlZmluZWRBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUiLCJERUZJTkVEX0FTU0VSVElPTl9SVUxFX05BTUUiLCJ0ZXJtU3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlIiwiVEVSTV9TVUJTVElUVVRJT05fUlVMRV9OQU1FIiwic3VicHJvb2ZBc3NlcnRpb25sYWNlaG9sZGVyUnVsZSIsIlNVQlBST09GX0FTU0VSVElPTl9SVUxFX05BTUUiLCJmcmFtZVN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSIsIkZSQU1FX1NVQlNUSVRVVElPTl9SVUxFX05BTUUiLCJwcm9jZWR1cmVSZWZlcmVuY2VsYWNlaG9sZGVyUnVsZSIsIlBST0NFRFVSRV9SRUZFUkVOQ0VfUlVMRV9OQU1FIiwiY29udGFpbmVkQXNzZXJ0aW9uUGxhY2Vob2xkZXJSdWxlIiwiQ09OVEFJTkVEX0FTU0VSVElPTl9SVUxFX05BTUUiLCJzdGF0ZW1lbnRTdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUiLCJTVEFURU1FTlRfU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSIsInJlZmVyZW5jZVN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSIsIlJFRkVSRU5DRV9TVUJTVElUVVRJT05fUlVMRV9OQU1FIiwic3RyaW5nIiwiY29udGV4dCIsImluc3RhbnRpYXRlIiwicGxhY2Vob2xkZXJSdWxlIiwibm9kZSIsImxleGVyIiwiZ2V0TGV4ZXIiLCJwYXJzZXIiLCJnZXRQYXJzZXIiLCJjb250ZW50IiwidG9rZW5zIiwidG9rZW5pc2UiLCJzZXRUb2tlbnMiLCJzdGFydFJ1bGUiLCJwYXJzZSIsIm5vblRlcm1pbmFsTm9kZSIsInNvbWVDaGlsZE5vZGUiLCJjaGlsZE5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQXNFZ0JBO2VBQUFBOztRQUVBQztlQUFBQTs7UUFPQUM7ZUFBQUE7O1FBa0JBQztlQUFBQTs7UUFWQUM7ZUFBQUE7O1FBTkFDO2VBQUFBOztRQTlCQUM7ZUFBQUE7O1FBMENBQztlQUFBQTs7UUF4Q0FDO2VBQUFBOztRQThCQUM7ZUFBQUE7O1FBbkJBQztlQUFBQTs7UUFUQUM7ZUFBQUE7O1FBOEJBQztlQUFBQTs7UUFVQUM7ZUFBQUE7O1FBM0JBQztlQUFBQTs7UUFpQ0FDO2VBQUFBOztRQW5DQUM7ZUFBQUE7O1FBaUNBQztlQUFBQTs7UUFSQUM7ZUFBQUE7O1FBMUNBQztlQUFBQTs7UUF3Q0FDO2VBQUFBOztRQTNCQUM7ZUFBQUE7OztxQkE1RGlCOzJCQXNCZ0I7QUFFakQsTUFBTUMsc0JBQXNCQyxJQUFBQSxxQkFBZ0IsRUFBQ0MseUJBQWMsR0FDckRDLHVCQUF1QkYsSUFBQUEscUJBQWdCLEVBQUNHLDBCQUFlLEdBQ3ZEQyx1QkFBdUJKLElBQUFBLHFCQUFnQixFQUFDSywwQkFBZSxHQUN2REMseUJBQXlCTixJQUFBQSxxQkFBZ0IsRUFBQ08sNEJBQWlCLEdBQzNEQywwQkFBMEJSLElBQUFBLHFCQUFnQixFQUFDUyw2QkFBa0IsR0FDN0RDLDJCQUEyQlYsSUFBQUEscUJBQWdCLEVBQUNXLDhCQUFtQixHQUMvREMsMkJBQTJCWixJQUFBQSxxQkFBZ0IsRUFBQ2EsOEJBQW1CLEdBQy9EQywyQkFBMkJkLElBQUFBLHFCQUFnQixFQUFDZSw4QkFBbUIsR0FDL0RDLDRCQUE0QmhCLElBQUFBLHFCQUFnQixFQUFDaUIsK0JBQW9CLEdBQ2pFQyw0QkFBNEJsQixJQUFBQSxxQkFBZ0IsRUFBQ21CLCtCQUFvQixHQUNqRUMsNkJBQTZCcEIsSUFBQUEscUJBQWdCLEVBQUNxQixnQ0FBcUIsR0FDbkVDLDZCQUE2QnRC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