occam-nominal 1.0.286 → 1.0.288

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.
@@ -11,7 +11,6 @@ Object.defineProperty(exports, "default", {
11
11
  const _occamlanguages = require("occam-languages");
12
12
  const _elements = /*#__PURE__*/ _interop_require_wildcard(require("../elements"));
13
13
  const _context = require("../utilities/context");
14
- const _breakPoint = require("../utilities/breakPoint");
15
14
  const _string = require("../utilities/string");
16
15
  const _json = require("../utilities/json");
17
16
  function _getRequireWildcardCache(nodeInterop) {
@@ -55,7 +54,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
55
54
  }
56
55
  return newObj;
57
56
  }
58
- const { asyncForwardsEvery } = _occamlanguages.asynchronousUtilities;
57
+ const { asyncForwardsEvery } = _occamlanguages.asynchronousUtilities, { breakPointFromJSON, breakPointToBreakPointJSON } = _occamlanguages.breakPointUtilities;
59
58
  const _default = (0, _elements.define)(class Schema extends _occamlanguages.Element {
60
59
  constructor(context, string, node, breakPoint, label, suppositions, deduction, proof, constraints){
61
60
  super(context, string, node, breakPoint);
@@ -295,7 +294,7 @@ const _default = (0, _elements.define)(class Schema extends _occamlanguages.Elem
295
294
  const labelJSON = (0, _json.labelToLabelJSON)(this.label), deductionJSON = (0, _json.deductionToDeductionJSON)(this.deduction), suppositionsJSON = (0, _json.suppositionsToSuppositionsJSON)(this.suppositions), constraintsJSON = (0, _json.constraintsToConstraintsJSON)(this.constraints), string = this.getString();
296
295
  let breakPoint;
297
296
  breakPoint = this.getBreakPoint();
298
- const breakPointJSON = (0, _breakPoint.breakPointToBreakPointJSON)(breakPoint);
297
+ const breakPointJSON = breakPointToBreakPointJSON(breakPoint);
299
298
  breakPoint = breakPointJSON; ///
300
299
  const label = labelJSON, deduction = deductionJSON, suppositions = suppositionsJSON, constraints = constraintsJSON, json = {
301
300
  string,
@@ -309,7 +308,7 @@ const _default = (0, _elements.define)(class Schema extends _occamlanguages.Elem
309
308
  }
310
309
  static name = "Schema";
311
310
  static fromJSON(json, context) {
312
- const label = (0, _json.labelFromJSON)(json, context), deduction = (0, _json.deductionFromJSON)(json, context), suppositions = (0, _json.suppositionsFromJSON)(json, context), constraints = (0, _json.constraintsFromJSON)(json, context), string = (0, _string.schemaStringFromLabelSuppositionsAndDeduction)(label, suppositions, deduction), node = null, breakPoint = (0, _breakPoint.breakPointFromJSON)(json), proof = null, schema = new Schema(context, string, node, breakPoint, label, suppositions, deduction, proof, constraints);
311
+ const label = (0, _json.labelFromJSON)(json, context), deduction = (0, _json.deductionFromJSON)(json, context), suppositions = (0, _json.suppositionsFromJSON)(json, context), constraints = (0, _json.constraintsFromJSON)(json, context), string = (0, _string.schemaStringFromLabelSuppositionsAndDeduction)(label, suppositions, deduction), node = null, breakPoint = breakPointFromJSON(json), proof = null, schema = new Schema(context, string, node, breakPoint, label, suppositions, deduction, proof, constraints);
313
312
  return schema;
314
313
  }
315
314
  });
@@ -323,4 +322,4 @@ function subproofAssertionFromStatement(statement, context) {
323
322
  return subproofAssertion;
324
323
  }
325
324
 
326
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3NjaGVtYS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgRWxlbWVudCwgYnJlYWtQb2ludFV0aWxpdGllcywgYXN5bmNocm9ub3VzVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgZWxlbWVudHMgZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgcmVjb25jaWxlLCBlbmNhcHN1bGF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgYnJlYWtQb2ludEZyb21KU09OLCBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvYnJlYWtQb2ludFwiO1xuaW1wb3J0IHsgc2NoZW1hU3RyaW5nRnJvbUxhYmVsU3VwcG9zaXRpb25zQW5kRGVkdWN0aW9uIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdHJpbmdcIjtcbmltcG9ydCB7IGxhYmVsRnJvbUpTT04sXG4gICAgICAgICBsYWJlbFRvTGFiZWxKU09OLFxuICAgICAgICAgZGVkdWN0aW9uRnJvbUpTT04sXG4gICAgICAgICBjb25zdHJhaW50c0Zyb21KU09OLFxuICAgICAgICAgc3VwcG9zaXRpb25zRnJvbUpTT04sXG4gICAgICAgICBkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04sXG4gICAgICAgICBjb25zdHJhaW50c1RvQ29uc3RyYWludHNKU09OLFxuICAgICAgICAgc3VwcG9zaXRpb25zVG9TdXBwb3NpdGlvbnNKU09OIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9qc29uXCI7XG5cbmNvbnN0IHsgYXN5bmNGb3J3YXJkc0V2ZXJ5IH0gPSBhc3luY2hyb25vdXNVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBTY2hlbWEgZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBsYWJlbCwgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24sIHByb29mLCBjb25zdHJhaW50cykge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLmxhYmVsID0gbGFiZWw7XG4gICAgdGhpcy5zdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnM7XG4gICAgdGhpcy5kZWR1Y3Rpb24gPSBkZWR1Y3Rpb247XG4gICAgdGhpcy5wcm9vZiA9IHByb29mO1xuICAgIHRoaXMuY29uc3RyYWludHMgPSBjb25zdHJhaW50cztcbiAgfVxuXG4gIGdldExhYmVsKCkge1xuICAgIHJldHVybiB0aGlzLmxhYmVsO1xuICB9XG5cbiAgZ2V0U3VwcG9zaXRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLnN1cHBvc2l0aW9ucztcbiAgfVxuXG4gIGdldERlZHVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5kZWR1Y3Rpb247XG4gIH1cblxuICBnZXRQcm9vZigpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9vZjtcbiAgfVxuXG4gIGdldE1Db25zdHJhaW50KCkge1xuICAgIHJldHVybiB0aGlzLmNvbnN0cmFpbnRzO1xuICB9XG5cbiAgZ2V0U3VwcG9zaXRpb24oaW5kZXgpIHtcbiAgICBjb25zdCBzdXBwb3NpdGlvbiA9IHRoaXMuc3VwcG9zaXRpb25zW2luZGV4XSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uO1xuICB9XG5cbiAgaXNDb25kaXRpb25hbCgpIHtcbiAgICBjb25zdCBzdXBwb3NpdGlvbnNMZW5ndGggPSB0aGlzLnN1cHBvc2l0aW9ucy5sZW5ndGgsXG4gICAgICAgICAgY29uZGl0aW9uYWwgPSAoc3VwcG9zaXRpb25zTGVuZ3RoID4gMCk7XG5cbiAgICByZXR1cm4gY29uZGl0aW9uYWw7XG4gIH1cblxuICBjb21wYXJlUmVmZXJlbmNlKHJlZmVyZW5jZSkge1xuICAgIGNvbnN0IGxhYmVsID0gdGhpcy5nZXRMYWJlbCgpLFxuICAgICAgICAgIGxhYmVsQ29tcGFyZXNUb1JlZmZlcmVuY2UgPSBsYWJlbC5jb21wYXJlUmVmZXJlbmNlKHJlZmVyZW5jZSksXG4gICAgICAgICAgY29tcGFyZXNUb1JlZmVyZW5jZSA9IGxhYmVsQ29tcGFyZXNUb1JlZmZlcmVuY2U7ICAvLy9cblxuICAgIHJldHVybiBjb21wYXJlc1RvUmVmZXJlbmNlO1xuICB9XG5cbiAgYXN5bmMgdmVyaWZ5KGNvbnRleHQpIHtcbiAgICBsZXQgdmVyaWZpZXM7XG5cbiAgICBhd2FpdCB0aGlzLmJyZWFrKGNvbnRleHQpO1xuXG4gICAgY29uc3Qgc2NoZW1hU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYS4uLmApO1xuXG4gICAgYXdhaXQgZW5jYXBzdWxhdGUoYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGxhYmVsVmVyaWZpZXMgPSB0aGlzLnZlcmlmeUxhYmVsKGNvbnRleHQpO1xuXG4gICAgICBpZiAobGFiZWxWZXJpZmllcykge1xuICAgICAgICBjb25zdCBzdXBwb3NpdGlvbnNWZXJpZnkgPSBhd2FpdCB0aGlzLnZlcmlmeVN1cHBvc2l0aW9ucyhjb250ZXh0KTtcblxuICAgICAgICBpZiAoc3VwcG9zaXRpb25zVmVyaWZ5KSB7XG4gICAgICAgICAgY29uc3QgZGVkdWN0aW9uVmVyaWZpZXMgPSBhd2FpdCB0aGlzLnZlcmlmeURlZHVjdGlvbihjb250ZXh0KTtcblxuICAgICAgICAgIGlmIChkZWR1Y3Rpb25WZXJpZmllcykge1xuICAgICAgICAgICAgY29uc3QgcHJvb2ZWZXJpZmllcyA9IGF3YWl0IHRoaXMudmVyaWZ5UHJvb2YoY29udGV4dCk7XG5cbiAgICAgICAgICAgIGlmIChwcm9vZlZlcmlmaWVzKSB7XG4gICAgICAgICAgICAgIHZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCB0aGlzLmNvbnN0cmFpbnRzLCBjb250ZXh0KTtcblxuICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgY29uc3Qgc2NoZW1hID0gdGhpczsgLy8vXG5cbiAgICAgIGNvbnRleHQuYWRkU2NoZW1hKHNjaGVtYSk7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzY2hlbWFTdHJpbmd9JyBzY2hlbWEuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcmlmaWVzO1xuICB9XG5cbiAgdmVyaWZ5TGFiZWwoY29udGV4dCkge1xuICAgIGxldCBsYWJlbFZlcmlmaWVzO1xuXG4gICAgY29uc3Qgc2NoZW1hU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgIC8vL1xuICAgICAgICAgIGxhYmVsU3RyaW5nID0gdGhpcy5sYWJlbC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c2NoZW1hU3RyaW5nfScgc2NoZW1hJ3MgJyR7bGFiZWxTdHJpbmd9JyBsYWJlbC4uLmApO1xuXG4gICAgbGFiZWxWZXJpZmllcyA9IHRoaXMubGFiZWwudmVyaWZ5KCk7XG5cbiAgICBpZiAobGFiZWxWZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYSdzICcke2xhYmVsU3RyaW5nfScgbGFiZWwuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhYmVsVmVyaWZpZXM7XG4gIH1cblxuICBhc3luYyB2ZXJpZnlQcm9vZihjb250ZXh0KSB7XG4gICAgbGV0IHByb29mVmVyaWZpZXM7XG5cbiAgICBjb25zdCBzY2hlbWFTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYSdzIHByb29mLi4uYCk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnQgPSB0aGlzLmRlZHVjdGlvbi5nZXRTdGF0ZW1lbnQoKTtcblxuICAgIHByb29mVmVyaWZpZXMgPSBhd2FpdCB0aGlzLnByb29mLnZlcmlmeShzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gICAgaWYgKHByb29mVmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzY2hlbWFTdHJpbmd9JyBzY2hlbWEncyBwcm9vZi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvb2ZWZXJpZmllcztcbiAgfVxuXG4gIGFzeW5jIHZlcmlmeURlZHVjdGlvbihjb250ZXh0KSB7XG4gICAgbGV0IGRlZHVjdGlvblZlcmlmaWVzO1xuXG4gICAgY29uc3Qgc2NoZW1hU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgIC8vXG4gICAgICAgICAgZGVkdWN0aW9uU3RyaW5nID0gdGhpcy5kZWR1Y3Rpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3NjaGVtYVN0cmluZ30nIHRvcCBsZXZlbCBtZXRhIGFzc2VydGlvbidzICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi4uLmApO1xuXG4gICAgZGVkdWN0aW9uVmVyaWZpZXMgPSBhd2FpdCB0aGlzLmRlZHVjdGlvbi52ZXJpZnkoY29udGV4dCk7XG5cbiAgICBpZiAoZGVkdWN0aW9uVmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzY2hlbWFTdHJpbmd9JyB0b3AgbGV2ZWwgbWV0YSBhc3NlcnRpb24ncyAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZHVjdGlvblZlcmlmaWVzO1xuICB9XG5cbiAgYXN5bmMgdmVyaWZ5U3VwcG9zaXRpb24oc3VwcG9zaXRpb24sIGNvbnRleHQpIHtcbiAgICBsZXQgc3VwcG9zaXRpb25WZXJpZmllcztcblxuICAgIGNvbnN0IHNjaGVtYVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksICAvLy9cbiAgICAgICAgICBzdXBwb3NpdGlvblN0cmluZyA9IHN1cHBvc2l0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzY2hlbWFTdHJpbmd9JyBzY2hlbWEncyAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLi4uYCk7XG5cbiAgICBzdXBwb3NpdGlvblZlcmlmaWVzID0gYXdhaXQgc3VwcG9zaXRpb24udmVyaWZ5KGNvbnRleHQpXG5cbiAgICBpZiAoc3VwcG9zaXRpb25WZXJpZmllcykge1xuICAgICAgY29uc3Qgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uID0gc3VwcG9zaXRpb247ICAvLy8vXG5cbiAgICAgIGNvbnRleHQuYXNzaWduQXNzaWdubWVudHMoKTtcblxuICAgICAgY29udGV4dC5hZGRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb24oc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAoc3VwcG9zaXRpb25WZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYSdzICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uVmVyaWZpZXM7XG4gIH1cblxuICBhc3luYyB2ZXJpZnlTdXBwb3NpdGlvbnMoY29udGV4dCkge1xuICAgIGxldCBzdXBwb3NpdGlvbnNWZXJpZnk7XG5cbiAgICBjb25zdCBzY2hlbWFTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYSdzIHN1cHBvc2l0aW9ucy4uLmApO1xuXG4gICAgc3VwcG9zaXRpb25zVmVyaWZ5ID0gYXdhaXQgYXN5bmNGb3J3YXJkc0V2ZXJ5KHRoaXMuc3VwcG9zaXRpb25zLCBhc3luYyAoc3VwcG9zaXRpb24pID0+IHtcbiAgICAgIGNvbnN0IHN1cHBvc2l0aW9uVmVyaWZpZXMgPSBhd2FpdCB0aGlzLnZlcmlmeVN1cHBvc2l0aW9uKHN1cHBvc2l0aW9uLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHN1cHBvc2l0aW9uVmVyaWZpZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoc3VwcG9zaXRpb25zVmVyaWZ5KSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c2NoZW1hU3RyaW5nfScgc2NoZW1hJ3Mgc3VwcG9zaXRpb25zLmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdXBwb3NpdGlvbnNWZXJpZnk7XG4gIH1cblxuICB1bmlmeUp1ZGdlbWVudChqdWRnZW1lbnQsIGNvbnRleHQpIHtcbiAgICBsZXQganVkZ2VtZW50VW5pZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc2NoZW1hU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgIC8vL1xuICAgICAgICAgIGp1ZGdlbWVudFN0cmluZyA9IGp1ZGdlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtqdWRnZW1lbnRTdHJpbmd9JyBqdWRnZW1lbnQgd2l0aCB0aGUgJyR7c2NoZW1hU3RyaW5nfScgc2NoZW1hLi4uYCk7XG5cbiAgICByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHJlZmVyZW5jZSA9IGp1ZGdlbWVudC5nZXRSZWZlcmVuY2UoKSxcbiAgICAgICAgICAgIHJlZmVyZW5jZVVuaWZpZXMgPSB0aGlzLnVuaWZ5UmVmZXJlbmNlKHJlZmVyZW5jZSwgY29udGV4dCk7XG5cbiAgICAgIGlmIChyZWZlcmVuY2VVbmlmaWVzKSB7XG4gICAgICAgIGxldCBzdGF0ZW1lbnRVbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3Qgc3RhdGVtZW50ID0ganVkZ2VtZW50LmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgICAgICBjb25kaXRpb25hbCA9IHRoaXMuaXNDb25kaXRpb25hbCgpLFxuICAgICAgICAgICAgICBzdWJwcm9vZkFzc2VydGlvbiA9IHN1YnByb29mQXNzZXJ0aW9uRnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gICAgICAgIGlmIChjb25kaXRpb25hbCkge1xuICAgICAgICAgIGlmIChzdWJwcm9vZkFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3Qgc3VicHJvb2Zhc3NlcnRpb25VbmlmaWVzID0gdGhpcy51bmlmeVN1YnByb29mQXNzZXJ0aW9uKHN1YnByb29mQXNzZXJ0aW9uLCBjb250ZXh0KTtcblxuICAgICAgICAgICAgaWYgKHN1YnByb29mYXNzZXJ0aW9uVW5pZmllcykge1xuICAgICAgICAgICAgICBzdGF0ZW1lbnRVbmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHN1YnByb29mQXNzZXJ0aW9uID09PSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCBkZWR1Y2VkU3RhdG1lbnQgPSBzdGF0ZW1lbnQsICAvLy9cbiAgICAgICAgICAgICAgICAgIGRlZHVjZWRTdGF0bWVudFVuZmlmaWVzID0gdGhpcy51bmlmeURlZHVjZWRTdGF0ZW1lbnQoZGVkdWNlZFN0YXRtZW50LCBjb250ZXh0KTtcblxuICAgICAgICAgICAgaWYgKGRlZHVjZWRTdGF0bWVudFVuZmlmaWVzKSB7XG4gICAgICAgICAgICAgIHN0YXRlbWVudFVuaWZpZXMgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgICAgY29uc3QgYXNzdW1wdGlvbnMgPSBqdWRnZW1lbnQuZ2V0QXNzdW1wdGlvbnMoY29udGV4dCksXG4gICAgICAgICAgICAgICAgYXNzdW1wdGlvbnNVbmlmeSA9IHRoaXMudW5pZnlBc3N1bXB0aW9ucyhhc3N1bXB0aW9ucywgY29udGV4dCk7XG5cbiAgICAgICAgICBpZiAoYXNzdW1wdGlvbnNVbmlmeSkge1xuICAgICAgICAgICAganVkZ2VtZW50VW5pZmllcyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICBpZiAoanVkZ2VtZW50VW5pZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7anVkZ2VtZW50U3RyaW5nfScganVkZ2VtZW50IHdpdGggdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4ganVkZ2VtZW50VW5pZmllcztcbiAgfVxuXG4gIHVuaWZ5UmVmZXJlbmNlKHJlZmVyZW5jZSwgY29udGV4dCkge1xuICAgIGxldCByZWZlcmVuY2VVbmlmaWVzO1xuXG4gICAgY29uc3Qgc2NoZW1hU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgIC8vL1xuICAgICAgICAgIHJlZmVyZW5jZVN0cmluZyA9IHJlZmVyZW5jZS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyByZWZlcmVuY2Ugd2l0aCB0aGUgJyR7c2NoZW1hU3RyaW5nfScgc2NoZW1hLi4uYCk7XG5cbiAgICByZWZlcmVuY2VVbmlmaWVzID0gdGhpcy5sYWJlbC51bmlmeVJlZmVyZW5jZShyZWZlcmVuY2UsIGNvbnRleHQpO1xuXG4gICAgaWYgKHJlZmVyZW5jZVVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3JlZmVyZW5jZVN0cmluZ30nIHJlZmVyZW5jZSB3aXRoIHRoZSAnJHtzY2hlbWFTdHJpbmd9JyBzY2hlbWEuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlZmVyZW5jZVVuaWZpZXM7XG4gIH1cblxuICB1bmlmeUFzc3VtcHRpb25zKGFzc3VtcHRpb25zLCBjb250ZXh0KSB7XG4gICAgY29uc3QgYXNzdW1wdGlvbnNVbmlmeSA9IHRoaXMuY29uc3RyYWludHMuZXZlcnkoKGNvbnN0cmFpbnQpID0+IHtcbiAgICAgIGNvbnN0IGFzc3VtcHRpb25zVW5pZnkgPSBjb25zdHJhaW50LnVuaWZ5QXNzdW1wdGlvbnMoYXNzdW1wdGlvbnMsIGNvbnRleHQpO1xuXG4gICAgICBpZiAoYXNzdW1wdGlvbnNVbmlmeSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBhc3N1bXB0aW9uc1VuaWZ5O1xuICB9XG5cbiAgdW5pZnlEZWR1Y2VkU3RhdGVtZW50KGRlZHVjZWRTdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBsZXQgZGVkdWNlZFN0YXRlbWVudFVuaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGRlZHVjdGlvblN0cmluZyA9IHRoaXMuZGVkdWN0aW9uLmdldFN0cmluZygpLFxuICAgICAgICAgIGRlZHVjZWRTdGF0ZW1lbnRTdHJpbmcgPSBkZWR1Y2VkU3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2RlZHVjZWRTdGF0ZW1lbnRTdHJpbmd9JyBkZWR1Y2VkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpbm8uLi5gKTtcblxuICAgIGNvbnN0IGRlZHVjdGlvbkNvbnRleHQgPSB0aGlzLmRlZHVjdGlvbi5nZXRDb250ZXh0KCksIC8vL1xuICAgICAgICAgIHN0YXRlbWVudCA9IGRlZHVjZWRTdGF0ZW1lbnQsIC8vL1xuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gZGVkdWN0aW9uQ29udGV4dCwgLy8vXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dCwgIC8vL1xuICAgICAgICAgIHN0YXRlbWVudFVuaWZpZXMgPSB0aGlzLmRlZHVjdGlvbi51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgIGRlZHVjZWRTdGF0ZW1lbnRVbmlmaWVzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoZGVkdWNlZFN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke2RlZHVjZWRTdGF0ZW1lbnRTdHJpbmd9JyBkZWR1Y2VkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb25gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVkdWNlZFN0YXRlbWVudFVuaWZpZXM7XG4gIH1cblxuICB1bmlmeVN1YnByb29mQXNzZXJ0aW9uKHN1YnByb29mQXNzZXJ0aW9uLCBjb250ZXh0KSB7XG4gICAgbGV0IHN1YnByb29mQXNzZXJ0aW9uVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc2NoZW1hU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgIC8vL1xuICAgICAgICAgIHN1YnByb29mQXNzZXJ0aW9uU3RyaW5nID0gc3VicHJvb2ZBc3NlcnRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3VicHJvb2ZBc3NlcnRpb25TdHJpbmd9JyBzdWJwcm9vZiBhc3NlcnRpb24gd2l0aCB0aGUgJyR7c2NoZW1hU3RyaW5nfScgc2NoZW1hLi4uYCk7XG5cbiAgICBjb25zdCBkZWR1Y2VkU3RhdGVtZW50ID0gc3VicHJvb2ZBc3NlcnRpb24uZ2V0RGVkdWNlZFN0YXRlbWVudCgpLFxuICAgICAgICAgIGRlZHVjZWRTdGF0ZW1lbnRVbmlmaWVzID0gdGhpcy51bmlmeURlZHVjZWRTdGF0ZW1lbnQoZGVkdWNlZFN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgICBpZiAoZGVkdWNlZFN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgIGNvbnN0IHN1cHBvc2VkU3RhdGVtZW50cyA9IHN1YnByb29mQXNzZXJ0aW9uLmdldFN1cHBvc2VkU3RhdGVtZW50cygpLFxuICAgICAgICAgICAgc3VwcG9zZWRTdGF0ZW1lbnRzVW5pZnkgPSB0aGlzLnVuaWZ5U3VwcG9zZWRTdGF0ZW1lbnRzKHN1cHBvc2VkU3RhdGVtZW50cywgY29udGV4dCk7XG5cbiAgICAgIGlmIChzdXBwb3NlZFN0YXRlbWVudHNVbmlmeSkge1xuICAgICAgICBzdWJwcm9vZkFzc2VydGlvblVuaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdWJwcm9vZkFzc2VydGlvblVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N1YnByb29mQXNzZXJ0aW9uU3RyaW5nfScgc3VicHJvb2YgYXNzZXJ0aW9uIHdpdGggdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VicHJvb2ZBc3NlcnRpb25VbmlmaWVzO1xuICB9XG5cbiAgdW5pZnlTdXBwb3NlZFN0YXRlbWVudChzdXBwb3NlZFN0YXRlbWVudCwgaW5kZXgsIGNvbnRleHQpIHtcbiAgICBsZXQgc3VwcG9zZWRTdGF0ZW1lbnRVbmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBzdXBwb3NpdGlvbiA9IHRoaXMuZ2V0U3VwcG9zaXRpb24oaW5kZXgpLFxuICAgICAgICAgIHN1cHBvc2l0aW9uU3RyaW5nID0gc3VwcG9zaXRpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc3VwcG9zZWRTdGF0ZW1lbnRTdHJpbmcgPSBzdXBwb3NlZFN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdXBwb3NlZFN0YXRlbWVudFN0cmluZ30nIHN1cHBvc2VkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBzdXBwb3NpdGlvbkNvbnRleHQgPSBzdXBwb3NpdGlvbi5nZXRDb250ZXh0KCksIC8vL1xuICAgICAgICAgIHN0YXRlbWVudCA9IHN1cHBvc2VkU3RhdGVtZW50LCAvLy9cbiAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IHN1cHBvc2l0aW9uQ29udGV4dCwgLy8vXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dCwgIC8vL1xuICAgICAgICAgIHN0YXRlbWVudFVuaWZpZXMgPSBzdXBwb3NpdGlvbi51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgIHN1cHBvc2VkU3RhdGVtZW50VW5pZmllcyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHN1cHBvc2VkU3RhdGVtZW50VW5pZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3VwcG9zZWRTdGF0ZW1lbnRTdHJpbmd9JyBzdXBwb3NlZCBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdXBwb3NlZFN0YXRlbWVudFVuaWZpZXM7XG4gIH1cblxuICB1bmlmeVN1cHBvc2VkU3RhdGVtZW50cyhzdXBwb3NlZFN0YXRlbWVudHMsIGNvbnRleHQpIHtcbiAgICBsZXQgc3VwcG9zZWRTdGF0ZW1lbnRzVW5pZnkgPSBmYWxzZTtcblxuICAgIGNvbnN0IHN1cHBvc2l0aW9uc0xlbmd0aCA9IHRoaXMuc3VwcG9zaXRpb25zLmxlbmd0aCxcbiAgICAgICAgICBzdXBwb3NlZFN0YXRlbWVudHNMZW5ndGggPSBzdXBwb3NlZFN0YXRlbWVudHMubGVuZ3RoO1xuXG4gICAgaWYgKHN1cHBvc2l0aW9uc0xlbmd0aCA9PT0gc3VwcG9zZWRTdGF0ZW1lbnRzTGVuZ3RoKSB7XG4gICAgICBzdXBwb3NlZFN0YXRlbWVudHNVbmlmeSA9IHN1cHBvc2VkU3RhdGVtZW50cy5ldmVyeSgoc3VwcG9zZWRTdGF0ZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IHN1cHBvc2VkU3RhdGVtZW50VW5pZmllcyA9IHRoaXMudW5pZnlTdXBwb3NlZFN0YXRlbWVudChzdXBwb3NlZFN0YXRlbWVudCwgaW5kZXgsIGNvbnRleHQpO1xuXG4gICAgICAgIGlmIChzdXBwb3NlZFN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cHBvc2VkU3RhdGVtZW50c1VuaWZ5O1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IGxhYmVsSlNPTiA9IGxhYmVsVG9MYWJlbEpTT04odGhpcy5sYWJlbCksXG4gICAgICAgICAgZGVkdWN0aW9uSlNPTiA9IGRlZHVjdGlvblRvRGVkdWN0aW9uSlNPTih0aGlzLmRlZHVjdGlvbiksXG4gICAgICAgICAgc3VwcG9zaXRpb25zSlNPTiA9IHN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTih0aGlzLnN1cHBvc2l0aW9ucyksXG4gICAgICAgICAgY29uc3RyYWludHNKU09OID0gY29uc3RyYWludHNUb0NvbnN0cmFpbnRzSlNPTih0aGlzLmNvbnN0cmFpbnRzKSxcbiAgICAgICAgICBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICBicmVha1BvaW50ID0gdGhpcy5nZXRCcmVha1BvaW50KCk7XG5cbiAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICBjb25zdCBsYWJlbCA9IGxhYmVsSlNPTiwgIC8vL1xuICAgICAgICAgIGRlZHVjdGlvbiA9IGRlZHVjdGlvbkpTT04sICAvLy9cbiAgICAgICAgICBzdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnNKU09OLCAgLy8vXG4gICAgICAgICAgY29uc3RyYWludHMgPSBjb25zdHJhaW50c0pTT04sICAvLy9cbiAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgYnJlYWtQb2ludCxcbiAgICAgICAgICAgIGxhYmVsLFxuICAgICAgICAgICAgZGVkdWN0aW9uLFxuICAgICAgICAgICAgc3VwcG9zaXRpb25zLFxuICAgICAgICAgICAgY29uc3RyYWludHNcbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiU2NoZW1hXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBjb25zdCBsYWJlbCA9IGxhYmVsRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgZGVkdWN0aW9uID0gZGVkdWN0aW9uRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgc3VwcG9zaXRpb25zID0gc3VwcG9zaXRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgY29uc3RyYWludHMgPSBjb25zdHJhaW50c0Zyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIHN0cmluZyA9IHNjaGVtYVN0cmluZ0Zyb21MYWJlbFN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbihsYWJlbCwgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24pLFxuICAgICAgICAgIG5vZGUgPSBudWxsLFxuICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgcHJvb2YgPSBudWxsLFxuICAgICAgICAgIHNjaGVtYSA9IG5ldyBTY2hlbWEoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBsYWJlbCwgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24sIHByb29mLCBjb25zdHJhaW50cyk7XG5cbiAgICByZXR1cm4gc2NoZW1hO1xuICB9XG59KTtcblxuZnVuY3Rpb24gc3VicHJvb2ZBc3NlcnRpb25Gcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICBsZXQgc3VicHJvb2ZBc3NlcnRpb247XG5cbiAgY29uc3QgeyBTdWJwcm9vZkFzc2VydGlvbiB9ID0gZWxlbWVudHM7XG5cbiAgc3VicHJvb2ZBc3NlcnRpb24gPSBTdWJwcm9vZkFzc2VydGlvbi5mcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgaWYgKHN1YnByb29mQXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgc3VicHJvb2ZBc3NlcnRpb24gPSBzdWJwcm9vZkFzc2VydGlvbi52YWxpZGF0ZShjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBzdWJwcm9vZkFzc2VydGlvbjtcblxufVxuIl0sIm5hbWVzIjpbImFzeW5jRm9yd2FyZHNFdmVyeSIsImFzeW5jaHJvbm91c1V0aWxpdGllcyIsImRlZmluZSIsIlNjaGVtYSIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJsYWJlbCIsInN1cHBvc2l0aW9ucyIsImRlZHVjdGlvbiIsInByb29mIiwiY29uc3RyYWludHMiLCJnZXRMYWJlbCIsImdldFN1cHBvc2l0aW9ucyIsImdldERlZHVjdGlvbiIsImdldFByb29mIiwiZ2V0TUNvbnN0cmFpbnQiLCJnZXRTdXBwb3NpdGlvbiIsImluZGV4Iiwic3VwcG9zaXRpb24iLCJpc0NvbmRpdGlvbmFsIiwic3VwcG9zaXRpb25zTGVuZ3RoIiwibGVuZ3RoIiwiY29uZGl0aW9uYWwiLCJjb21wYXJlUmVmZXJlbmNlIiwicmVmZXJlbmNlIiwibGFiZWxDb21wYXJlc1RvUmVmZmVyZW5jZSIsImNvbXBhcmVzVG9SZWZlcmVuY2UiLCJ2ZXJpZnkiLCJ2ZXJpZmllcyIsImJyZWFrIiwic2NoZW1hU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJlbmNhcHN1bGF0ZSIsImxhYmVsVmVyaWZpZXMiLCJ2ZXJpZnlMYWJlbCIsInN1cHBvc2l0aW9uc1ZlcmlmeSIsInZlcmlmeVN1cHBvc2l0aW9ucyIsImRlZHVjdGlvblZlcmlmaWVzIiwidmVyaWZ5RGVkdWN0aW9uIiwicHJvb2ZWZXJpZmllcyIsInZlcmlmeVByb29mIiwic2NoZW1hIiwiYWRkU2NoZW1hIiwiZGVidWciLCJsYWJlbFN0cmluZyIsInN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsImRlZHVjdGlvblN0cmluZyIsInZlcmlmeVN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb25WZXJpZmllcyIsInN1cHBvc2l0aW9uU3RyaW5nIiwic3VicHJvb2ZPclByb29mQXNzZXJ0aW9uIiwiYXNzaWduQXNzaWdubWVudHMiLCJhZGRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb24iLCJ1bmlmeUp1ZGdlbWVudCIsImp1ZGdlbWVudCIsImp1ZGdlbWVudFVuaWZpZXMiLCJqdWRnZW1lbnRTdHJpbmciLCJyZWNvbmNpbGUiLCJnZXRSZWZlcmVuY2UiLCJyZWZlcmVuY2VVbmlmaWVzIiwidW5pZnlSZWZlcmVuY2UiLCJzdGF0ZW1lbnRVbmlmaWVzIiwic3VicHJvb2ZBc3NlcnRpb24iLCJzdWJwcm9vZkFzc2VydGlvbkZyb21TdGF0ZW1lbnQiLCJzdWJwcm9vZmFzc2VydGlvblVuaWZpZXMiLCJ1bmlmeVN1YnByb29mQXNzZXJ0aW9uIiwiZGVkdWNlZFN0YXRtZW50IiwiZGVkdWNlZFN0YXRtZW50VW5maWZpZXMiLCJ1bmlmeURlZHVjZWRTdGF0ZW1lbnQiLCJhc3N1bXB0aW9ucyIsImdldEFzc3VtcHRpb25zIiwiYXNzdW1wdGlvbnNVbmlmeSIsInVuaWZ5QXNzdW1wdGlvbnMiLCJyZWZlcmVuY2VTdHJpbmciLCJldmVyeSIsImNvbnN0cmFpbnQiLCJkZWR1Y2VkU3RhdGVtZW50IiwiZGVkdWNlZFN0YXRlbWVudFVuaWZpZXMiLCJkZWR1Y2VkU3RhdGVtZW50U3RyaW5nIiwiZGVkdWN0aW9uQ29udGV4dCIsImdldENvbnRleHQiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInVuaWZ5U3RhdGVtZW50Iiwic3VicHJvb2ZBc3NlcnRpb25VbmlmaWVzIiwic3VicHJvb2ZBc3NlcnRpb25TdHJpbmciLCJnZXREZWR1Y2VkU3RhdGVtZW50Iiwic3VwcG9zZWRTdGF0ZW1lbnRzIiwiZ2V0U3VwcG9zZWRTdGF0ZW1lbnRzIiwic3VwcG9zZWRTdGF0ZW1lbnRzVW5pZnkiLCJ1bmlmeVN1cHBvc2VkU3RhdGVtZW50cyIsInVuaWZ5U3VwcG9zZWRTdGF0ZW1lbnQiLCJzdXBwb3NlZFN0YXRlbWVudCIsInN1cHBvc2VkU3RhdGVtZW50VW5pZmllcyIsInN1cHBvc2VkU3RhdGVtZW50U3RyaW5nIiwic3VwcG9zaXRpb25Db250ZXh0Iiwic3VwcG9zZWRTdGF0ZW1lbnRzTGVuZ3RoIiwidG9KU09OIiwibGFiZWxKU09OIiwibGFiZWxUb0xhYmVsSlNPTiIsImRlZHVjdGlvbkpTT04iLCJkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04iLCJzdXBwb3NpdGlvbnNKU09OIiwic3VwcG9zaXRpb25zVG9TdXBwb3NpdGlvbnNKU09OIiwiY29uc3RyYWludHNKU09OIiwiY29uc3RyYWludHNUb0NvbnN0cmFpbnRzSlNPTiIsImdldEJyZWFrUG9pbnQiLCJicmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwianNvbiIsIm5hbWUiLCJmcm9tSlNPTiIsImxhYmVsRnJvbUpTT04iLCJkZWR1Y3Rpb25Gcm9tSlNPTiIsInN1cHBvc2l0aW9uc0Zyb21KU09OIiwiY29uc3RyYWludHNGcm9tSlNPTiIsInNjaGVtYVN0cmluZ0Zyb21MYWJlbFN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbiIsImJyZWFrUG9pbnRGcm9tSlNPTiIsIlN1YnByb29mQXNzZXJ0aW9uIiwiZWxlbWVudHMiLCJmcm9tU3RhdGVtZW50IiwidmFsaWRhdGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQXFCQTs7O2VBQUE7OztnQ0FuQm9FO2tFQUUvQzt5QkFHa0I7NEJBQ3dCO3dCQUNEO3NCQVFmOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFL0MsTUFBTSxFQUFFQSxrQkFBa0IsRUFBRSxHQUFHQyxxQ0FBcUI7TUFFcEQsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxlQUFlQyx1QkFBTztJQUNoRCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLEtBQUssRUFBRUMsWUFBWSxFQUFFQyxTQUFTLEVBQUVDLEtBQUssRUFBRUMsV0FBVyxDQUFFO1FBQ2pHLEtBQUssQ0FBQ1IsU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDQyxLQUFLLEdBQUdBO1FBQ2IsSUFBSSxDQUFDQyxZQUFZLEdBQUdBO1FBQ3BCLElBQUksQ0FBQ0MsU0FBUyxHQUFHQTtRQUNqQixJQUFJLENBQUNDLEtBQUssR0FBR0E7UUFDYixJQUFJLENBQUNDLFdBQVcsR0FBR0E7SUFDckI7SUFFQUMsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDTCxLQUFLO0lBQ25CO0lBRUFNLGtCQUFrQjtRQUNoQixPQUFPLElBQUksQ0FBQ0wsWUFBWTtJQUMxQjtJQUVBTSxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUNMLFNBQVM7SUFDdkI7SUFFQU0sV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDTCxLQUFLO0lBQ25CO0lBRUFNLGlCQUFpQjtRQUNmLE9BQU8sSUFBSSxDQUFDTCxXQUFXO0lBQ3pCO0lBRUFNLGVBQWVDLEtBQUssRUFBRTtRQUNwQixNQUFNQyxjQUFjLElBQUksQ0FBQ1gsWUFBWSxDQUFDVSxNQUFNLElBQUk7UUFFaEQsT0FBT0M7SUFDVDtJ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
325
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3NjaGVtYS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgRWxlbWVudCwgYnJlYWtQb2ludFV0aWxpdGllcywgYXN5bmNocm9ub3VzVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgZWxlbWVudHMgZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgcmVjb25jaWxlLCBlbmNhcHN1bGF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgc2NoZW1hU3RyaW5nRnJvbUxhYmVsU3VwcG9zaXRpb25zQW5kRGVkdWN0aW9uIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdHJpbmdcIjtcbmltcG9ydCB7IGxhYmVsRnJvbUpTT04sXG4gICAgICAgICBsYWJlbFRvTGFiZWxKU09OLFxuICAgICAgICAgZGVkdWN0aW9uRnJvbUpTT04sXG4gICAgICAgICBjb25zdHJhaW50c0Zyb21KU09OLFxuICAgICAgICAgc3VwcG9zaXRpb25zRnJvbUpTT04sXG4gICAgICAgICBkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04sXG4gICAgICAgICBjb25zdHJhaW50c1RvQ29uc3RyYWludHNKU09OLFxuICAgICAgICAgc3VwcG9zaXRpb25zVG9TdXBwb3NpdGlvbnNKU09OIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9qc29uXCI7XG5cbmNvbnN0IHsgYXN5bmNGb3J3YXJkc0V2ZXJ5IH0gPSBhc3luY2hyb25vdXNVdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBTY2hlbWEgZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBsYWJlbCwgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24sIHByb29mLCBjb25zdHJhaW50cykge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLmxhYmVsID0gbGFiZWw7XG4gICAgdGhpcy5zdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnM7XG4gICAgdGhpcy5kZWR1Y3Rpb24gPSBkZWR1Y3Rpb247XG4gICAgdGhpcy5wcm9vZiA9IHByb29mO1xuICAgIHRoaXMuY29uc3RyYWludHMgPSBjb25zdHJhaW50cztcbiAgfVxuXG4gIGdldExhYmVsKCkge1xuICAgIHJldHVybiB0aGlzLmxhYmVsO1xuICB9XG5cbiAgZ2V0U3VwcG9zaXRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLnN1cHBvc2l0aW9ucztcbiAgfVxuXG4gIGdldERlZHVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5kZWR1Y3Rpb247XG4gIH1cblxuICBnZXRQcm9vZigpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9vZjtcbiAgfVxuXG4gIGdldE1Db25zdHJhaW50KCkge1xuICAgIHJldHVybiB0aGlzLmNvbnN0cmFpbnRzO1xuICB9XG5cbiAgZ2V0U3VwcG9zaXRpb24oaW5kZXgpIHtcbiAgICBjb25zdCBzdXBwb3NpdGlvbiA9IHRoaXMuc3VwcG9zaXRpb25zW2luZGV4XSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uO1xuICB9XG5cbiAgaXNDb25kaXRpb25hbCgpIHtcbiAgICBjb25zdCBzdXBwb3NpdGlvbnNMZW5ndGggPSB0aGlzLnN1cHBvc2l0aW9ucy5sZW5ndGgsXG4gICAgICAgICAgY29uZGl0aW9uYWwgPSAoc3VwcG9zaXRpb25zTGVuZ3RoID4gMCk7XG5cbiAgICByZXR1cm4gY29uZGl0aW9uYWw7XG4gIH1cblxuICBjb21wYXJlUmVmZXJlbmNlKHJlZmVyZW5jZSkge1xuICAgIGNvbnN0IGxhYmVsID0gdGhpcy5nZXRMYWJlbCgpLFxuICAgICAgICAgIGxhYmVsQ29tcGFyZXNUb1JlZmZlcmVuY2UgPSBsYWJlbC5jb21wYXJlUmVmZXJlbmNlKHJlZmVyZW5jZSksXG4gICAgICAgICAgY29tcGFyZXNUb1JlZmVyZW5jZSA9IGxhYmVsQ29tcGFyZXNUb1JlZmZlcmVuY2U7ICAvLy9cblxuICAgIHJldHVybiBjb21wYXJlc1RvUmVmZXJlbmNlO1xuICB9XG5cbiAgYXN5bmMgdmVyaWZ5KGNvbnRleHQpIHtcbiAgICBsZXQgdmVyaWZpZXM7XG5cbiAgICBhd2FpdCB0aGlzLmJyZWFrKGNvbnRleHQpO1xuXG4gICAgY29uc3Qgc2NoZW1hU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYS4uLmApO1xuXG4gICAgYXdhaXQgZW5jYXBzdWxhdGUoYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGxhYmVsVmVyaWZpZXMgPSB0aGlzLnZlcmlmeUxhYmVsKGNvbnRleHQpO1xuXG4gICAgICBpZiAobGFiZWxWZXJpZmllcykge1xuICAgICAgICBjb25zdCBzdXBwb3NpdGlvbnNWZXJpZnkgPSBhd2FpdCB0aGlzLnZlcmlmeVN1cHBvc2l0aW9ucyhjb250ZXh0KTtcblxuICAgICAgICBpZiAoc3VwcG9zaXRpb25zVmVyaWZ5KSB7XG4gICAgICAgICAgY29uc3QgZGVkdWN0aW9uVmVyaWZpZXMgPSBhd2FpdCB0aGlzLnZlcmlmeURlZHVjdGlvbihjb250ZXh0KTtcblxuICAgICAgICAgIGlmIChkZWR1Y3Rpb25WZXJpZmllcykge1xuICAgICAgICAgICAgY29uc3QgcHJvb2ZWZXJpZmllcyA9IGF3YWl0IHRoaXMudmVyaWZ5UHJvb2YoY29udGV4dCk7XG5cbiAgICAgICAgICAgIGlmIChwcm9vZlZlcmlmaWVzKSB7XG4gICAgICAgICAgICAgIHZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCB0aGlzLmNvbnN0cmFpbnRzLCBjb250ZXh0KTtcblxuICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgY29uc3Qgc2NoZW1hID0gdGhpczsgLy8vXG5cbiAgICAgIGNvbnRleHQuYWRkU2NoZW1hKHNjaGVtYSk7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzY2hlbWFTdHJpbmd9JyBzY2hlbWEuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcmlmaWVzO1xuICB9XG5cbiAgdmVyaWZ5TGFiZWwoY29udGV4dCkge1xuICAgIGxldCBsYWJlbFZlcmlmaWVzO1xuXG4gICAgY29uc3Qgc2NoZW1hU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgIC8vL1xuICAgICAgICAgIGxhYmVsU3RyaW5nID0gdGhpcy5sYWJlbC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c2NoZW1hU3RyaW5nfScgc2NoZW1hJ3MgJyR7bGFiZWxTdHJpbmd9JyBsYWJlbC4uLmApO1xuXG4gICAgbGFiZWxWZXJpZmllcyA9IHRoaXMubGFiZWwudmVyaWZ5KCk7XG5cbiAgICBpZiAobGFiZWxWZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYSdzICcke2xhYmVsU3RyaW5nfScgbGFiZWwuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhYmVsVmVyaWZpZXM7XG4gIH1cblxuICBhc3luYyB2ZXJpZnlQcm9vZihjb250ZXh0KSB7XG4gICAgbGV0IHByb29mVmVyaWZpZXM7XG5cbiAgICBjb25zdCBzY2hlbWFTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYSdzIHByb29mLi4uYCk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnQgPSB0aGlzLmRlZHVjdGlvbi5nZXRTdGF0ZW1lbnQoKTtcblxuICAgIHByb29mVmVyaWZpZXMgPSBhd2FpdCB0aGlzLnByb29mLnZlcmlmeShzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gICAgaWYgKHByb29mVmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzY2hlbWFTdHJpbmd9JyBzY2hlbWEncyBwcm9vZi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvb2ZWZXJpZmllcztcbiAgfVxuXG4gIGFzeW5jIHZlcmlmeURlZHVjdGlvbihjb250ZXh0KSB7XG4gICAgbGV0IGRlZHVjdGlvblZlcmlmaWVzO1xuXG4gICAgY29uc3Qgc2NoZW1hU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgIC8vXG4gICAgICAgICAgZGVkdWN0aW9uU3RyaW5nID0gdGhpcy5kZWR1Y3Rpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3NjaGVtYVN0cmluZ30nIHRvcCBsZXZlbCBtZXRhIGFzc2VydGlvbidzICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi4uLmApO1xuXG4gICAgZGVkdWN0aW9uVmVyaWZpZXMgPSBhd2FpdCB0aGlzLmRlZHVjdGlvbi52ZXJpZnkoY29udGV4dCk7XG5cbiAgICBpZiAoZGVkdWN0aW9uVmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzY2hlbWFTdHJpbmd9JyB0b3AgbGV2ZWwgbWV0YSBhc3NlcnRpb24ncyAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZHVjdGlvblZlcmlmaWVzO1xuICB9XG5cbiAgYXN5bmMgdmVyaWZ5U3VwcG9zaXRpb24oc3VwcG9zaXRpb24sIGNvbnRleHQpIHtcbiAgICBsZXQgc3VwcG9zaXRpb25WZXJpZmllcztcblxuICAgIGNvbnN0IHNjaGVtYVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksICAvLy9cbiAgICAgICAgICBzdXBwb3NpdGlvblN0cmluZyA9IHN1cHBvc2l0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzY2hlbWFTdHJpbmd9JyBzY2hlbWEncyAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLi4uYCk7XG5cbiAgICBzdXBwb3NpdGlvblZlcmlmaWVzID0gYXdhaXQgc3VwcG9zaXRpb24udmVyaWZ5KGNvbnRleHQpXG5cbiAgICBpZiAoc3VwcG9zaXRpb25WZXJpZmllcykge1xuICAgICAgY29uc3Qgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uID0gc3VwcG9zaXRpb247ICAvLy8vXG5cbiAgICAgIGNvbnRleHQuYXNzaWduQXNzaWdubWVudHMoKTtcblxuICAgICAgY29udGV4dC5hZGRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb24oc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAoc3VwcG9zaXRpb25WZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYSdzICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uVmVyaWZpZXM7XG4gIH1cblxuICBhc3luYyB2ZXJpZnlTdXBwb3NpdGlvbnMoY29udGV4dCkge1xuICAgIGxldCBzdXBwb3NpdGlvbnNWZXJpZnk7XG5cbiAgICBjb25zdCBzY2hlbWFTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYSdzIHN1cHBvc2l0aW9ucy4uLmApO1xuXG4gICAgc3VwcG9zaXRpb25zVmVyaWZ5ID0gYXdhaXQgYXN5bmNGb3J3YXJkc0V2ZXJ5KHRoaXMuc3VwcG9zaXRpb25zLCBhc3luYyAoc3VwcG9zaXRpb24pID0+IHtcbiAgICAgIGNvbnN0IHN1cHBvc2l0aW9uVmVyaWZpZXMgPSBhd2FpdCB0aGlzLnZlcmlmeVN1cHBvc2l0aW9uKHN1cHBvc2l0aW9uLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHN1cHBvc2l0aW9uVmVyaWZpZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoc3VwcG9zaXRpb25zVmVyaWZ5KSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c2NoZW1hU3RyaW5nfScgc2NoZW1hJ3Mgc3VwcG9zaXRpb25zLmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdXBwb3NpdGlvbnNWZXJpZnk7XG4gIH1cblxuICB1bmlmeUp1ZGdlbWVudChqdWRnZW1lbnQsIGNvbnRleHQpIHtcbiAgICBsZXQganVkZ2VtZW50VW5pZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc2NoZW1hU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgIC8vL1xuICAgICAgICAgIGp1ZGdlbWVudFN0cmluZyA9IGp1ZGdlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtqdWRnZW1lbnRTdHJpbmd9JyBqdWRnZW1lbnQgd2l0aCB0aGUgJyR7c2NoZW1hU3RyaW5nfScgc2NoZW1hLi4uYCk7XG5cbiAgICByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHJlZmVyZW5jZSA9IGp1ZGdlbWVudC5nZXRSZWZlcmVuY2UoKSxcbiAgICAgICAgICAgIHJlZmVyZW5jZVVuaWZpZXMgPSB0aGlzLnVuaWZ5UmVmZXJlbmNlKHJlZmVyZW5jZSwgY29udGV4dCk7XG5cbiAgICAgIGlmIChyZWZlcmVuY2VVbmlmaWVzKSB7XG4gICAgICAgIGxldCBzdGF0ZW1lbnRVbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3Qgc3RhdGVtZW50ID0ganVkZ2VtZW50LmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgICAgICBjb25kaXRpb25hbCA9IHRoaXMuaXNDb25kaXRpb25hbCgpLFxuICAgICAgICAgICAgICBzdWJwcm9vZkFzc2VydGlvbiA9IHN1YnByb29mQXNzZXJ0aW9uRnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gICAgICAgIGlmIChjb25kaXRpb25hbCkge1xuICAgICAgICAgIGlmIChzdWJwcm9vZkFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3Qgc3VicHJvb2Zhc3NlcnRpb25VbmlmaWVzID0gdGhpcy51bmlmeVN1YnByb29mQXNzZXJ0aW9uKHN1YnByb29mQXNzZXJ0aW9uLCBjb250ZXh0KTtcblxuICAgICAgICAgICAgaWYgKHN1YnByb29mYXNzZXJ0aW9uVW5pZmllcykge1xuICAgICAgICAgICAgICBzdGF0ZW1lbnRVbmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHN1YnByb29mQXNzZXJ0aW9uID09PSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCBkZWR1Y2VkU3RhdG1lbnQgPSBzdGF0ZW1lbnQsICAvLy9cbiAgICAgICAgICAgICAgICAgIGRlZHVjZWRTdGF0bWVudFVuZmlmaWVzID0gdGhpcy51bmlmeURlZHVjZWRTdGF0ZW1lbnQoZGVkdWNlZFN0YXRtZW50LCBjb250ZXh0KTtcblxuICAgICAgICAgICAgaWYgKGRlZHVjZWRTdGF0bWVudFVuZmlmaWVzKSB7XG4gICAgICAgICAgICAgIHN0YXRlbWVudFVuaWZpZXMgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgICAgY29uc3QgYXNzdW1wdGlvbnMgPSBqdWRnZW1lbnQuZ2V0QXNzdW1wdGlvbnMoY29udGV4dCksXG4gICAgICAgICAgICAgICAgYXNzdW1wdGlvbnNVbmlmeSA9IHRoaXMudW5pZnlBc3N1bXB0aW9ucyhhc3N1bXB0aW9ucywgY29udGV4dCk7XG5cbiAgICAgICAgICBpZiAoYXNzdW1wdGlvbnNVbmlmeSkge1xuICAgICAgICAgICAganVkZ2VtZW50VW5pZmllcyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICBpZiAoanVkZ2VtZW50VW5pZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7anVkZ2VtZW50U3RyaW5nfScganVkZ2VtZW50IHdpdGggdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4ganVkZ2VtZW50VW5pZmllcztcbiAgfVxuXG4gIHVuaWZ5UmVmZXJlbmNlKHJlZmVyZW5jZSwgY29udGV4dCkge1xuICAgIGxldCByZWZlcmVuY2VVbmlmaWVzO1xuXG4gICAgY29uc3Qgc2NoZW1hU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgIC8vL1xuICAgICAgICAgIHJlZmVyZW5jZVN0cmluZyA9IHJlZmVyZW5jZS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyByZWZlcmVuY2Ugd2l0aCB0aGUgJyR7c2NoZW1hU3RyaW5nfScgc2NoZW1hLi4uYCk7XG5cbiAgICByZWZlcmVuY2VVbmlmaWVzID0gdGhpcy5sYWJlbC51bmlmeVJlZmVyZW5jZShyZWZlcmVuY2UsIGNvbnRleHQpO1xuXG4gICAgaWYgKHJlZmVyZW5jZVVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3JlZmVyZW5jZVN0cmluZ30nIHJlZmVyZW5jZSB3aXRoIHRoZSAnJHtzY2hlbWFTdHJpbmd9JyBzY2hlbWEuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlZmVyZW5jZVVuaWZpZXM7XG4gIH1cblxuICB1bmlmeUFzc3VtcHRpb25zKGFzc3VtcHRpb25zLCBjb250ZXh0KSB7XG4gICAgY29uc3QgYXNzdW1wdGlvbnNVbmlmeSA9IHRoaXMuY29uc3RyYWludHMuZXZlcnkoKGNvbnN0cmFpbnQpID0+IHtcbiAgICAgIGNvbnN0IGFzc3VtcHRpb25zVW5pZnkgPSBjb25zdHJhaW50LnVuaWZ5QXNzdW1wdGlvbnMoYXNzdW1wdGlvbnMsIGNvbnRleHQpO1xuXG4gICAgICBpZiAoYXNzdW1wdGlvbnNVbmlmeSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBhc3N1bXB0aW9uc1VuaWZ5O1xuICB9XG5cbiAgdW5pZnlEZWR1Y2VkU3RhdGVtZW50KGRlZHVjZWRTdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBsZXQgZGVkdWNlZFN0YXRlbWVudFVuaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGRlZHVjdGlvblN0cmluZyA9IHRoaXMuZGVkdWN0aW9uLmdldFN0cmluZygpLFxuICAgICAgICAgIGRlZHVjZWRTdGF0ZW1lbnRTdHJpbmcgPSBkZWR1Y2VkU3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2RlZHVjZWRTdGF0ZW1lbnRTdHJpbmd9JyBkZWR1Y2VkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpbm8uLi5gKTtcblxuICAgIGNvbnN0IGRlZHVjdGlvbkNvbnRleHQgPSB0aGlzLmRlZHVjdGlvbi5nZXRDb250ZXh0KCksIC8vL1xuICAgICAgICAgIHN0YXRlbWVudCA9IGRlZHVjZWRTdGF0ZW1lbnQsIC8vL1xuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gZGVkdWN0aW9uQ29udGV4dCwgLy8vXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dCwgIC8vL1xuICAgICAgICAgIHN0YXRlbWVudFVuaWZpZXMgPSB0aGlzLmRlZHVjdGlvbi51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgIGRlZHVjZWRTdGF0ZW1lbnRVbmlmaWVzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoZGVkdWNlZFN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke2RlZHVjZWRTdGF0ZW1lbnRTdHJpbmd9JyBkZWR1Y2VkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb25gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVkdWNlZFN0YXRlbWVudFVuaWZpZXM7XG4gIH1cblxuICB1bmlmeVN1YnByb29mQXNzZXJ0aW9uKHN1YnByb29mQXNzZXJ0aW9uLCBjb250ZXh0KSB7XG4gICAgbGV0IHN1YnByb29mQXNzZXJ0aW9uVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc2NoZW1hU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgIC8vL1xuICAgICAgICAgIHN1YnByb29mQXNzZXJ0aW9uU3RyaW5nID0gc3VicHJvb2ZBc3NlcnRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3VicHJvb2ZBc3NlcnRpb25TdHJpbmd9JyBzdWJwcm9vZiBhc3NlcnRpb24gd2l0aCB0aGUgJyR7c2NoZW1hU3RyaW5nfScgc2NoZW1hLi4uYCk7XG5cbiAgICBjb25zdCBkZWR1Y2VkU3RhdGVtZW50ID0gc3VicHJvb2ZBc3NlcnRpb24uZ2V0RGVkdWNlZFN0YXRlbWVudCgpLFxuICAgICAgICAgIGRlZHVjZWRTdGF0ZW1lbnRVbmlmaWVzID0gdGhpcy51bmlmeURlZHVjZWRTdGF0ZW1lbnQoZGVkdWNlZFN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgICBpZiAoZGVkdWNlZFN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgIGNvbnN0IHN1cHBvc2VkU3RhdGVtZW50cyA9IHN1YnByb29mQXNzZXJ0aW9uLmdldFN1cHBvc2VkU3RhdGVtZW50cygpLFxuICAgICAgICAgICAgc3VwcG9zZWRTdGF0ZW1lbnRzVW5pZnkgPSB0aGlzLnVuaWZ5U3VwcG9zZWRTdGF0ZW1lbnRzKHN1cHBvc2VkU3RhdGVtZW50cywgY29udGV4dCk7XG5cbiAgICAgIGlmIChzdXBwb3NlZFN0YXRlbWVudHNVbmlmeSkge1xuICAgICAgICBzdWJwcm9vZkFzc2VydGlvblVuaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdWJwcm9vZkFzc2VydGlvblVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N1YnByb29mQXNzZXJ0aW9uU3RyaW5nfScgc3VicHJvb2YgYXNzZXJ0aW9uIHdpdGggdGhlICcke3NjaGVtYVN0cmluZ30nIHNjaGVtYS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VicHJvb2ZBc3NlcnRpb25VbmlmaWVzO1xuICB9XG5cbiAgdW5pZnlTdXBwb3NlZFN0YXRlbWVudChzdXBwb3NlZFN0YXRlbWVudCwgaW5kZXgsIGNvbnRleHQpIHtcbiAgICBsZXQgc3VwcG9zZWRTdGF0ZW1lbnRVbmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBzdXBwb3NpdGlvbiA9IHRoaXMuZ2V0U3VwcG9zaXRpb24oaW5kZXgpLFxuICAgICAgICAgIHN1cHBvc2l0aW9uU3RyaW5nID0gc3VwcG9zaXRpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc3VwcG9zZWRTdGF0ZW1lbnRTdHJpbmcgPSBzdXBwb3NlZFN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdXBwb3NlZFN0YXRlbWVudFN0cmluZ30nIHN1cHBvc2VkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBzdXBwb3NpdGlvbkNvbnRleHQgPSBzdXBwb3NpdGlvbi5nZXRDb250ZXh0KCksIC8vL1xuICAgICAgICAgIHN0YXRlbWVudCA9IHN1cHBvc2VkU3RhdGVtZW50LCAvLy9cbiAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IHN1cHBvc2l0aW9uQ29udGV4dCwgLy8vXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dCwgIC8vL1xuICAgICAgICAgIHN0YXRlbWVudFVuaWZpZXMgPSBzdXBwb3NpdGlvbi51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgIHN1cHBvc2VkU3RhdGVtZW50VW5pZmllcyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHN1cHBvc2VkU3RhdGVtZW50VW5pZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3VwcG9zZWRTdGF0ZW1lbnRTdHJpbmd9JyBzdXBwb3NlZCBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdXBwb3NlZFN0YXRlbWVudFVuaWZpZXM7XG4gIH1cblxuICB1bmlmeVN1cHBvc2VkU3RhdGVtZW50cyhzdXBwb3NlZFN0YXRlbWVudHMsIGNvbnRleHQpIHtcbiAgICBsZXQgc3VwcG9zZWRTdGF0ZW1lbnRzVW5pZnkgPSBmYWxzZTtcblxuICAgIGNvbnN0IHN1cHBvc2l0aW9uc0xlbmd0aCA9IHRoaXMuc3VwcG9zaXRpb25zLmxlbmd0aCxcbiAgICAgICAgICBzdXBwb3NlZFN0YXRlbWVudHNMZW5ndGggPSBzdXBwb3NlZFN0YXRlbWVudHMubGVuZ3RoO1xuXG4gICAgaWYgKHN1cHBvc2l0aW9uc0xlbmd0aCA9PT0gc3VwcG9zZWRTdGF0ZW1lbnRzTGVuZ3RoKSB7XG4gICAgICBzdXBwb3NlZFN0YXRlbWVudHNVbmlmeSA9IHN1cHBvc2VkU3RhdGVtZW50cy5ldmVyeSgoc3VwcG9zZWRTdGF0ZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IHN1cHBvc2VkU3RhdGVtZW50VW5pZmllcyA9IHRoaXMudW5pZnlTdXBwb3NlZFN0YXRlbWVudChzdXBwb3NlZFN0YXRlbWVudCwgaW5kZXgsIGNvbnRleHQpO1xuXG4gICAgICAgIGlmIChzdXBwb3NlZFN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cHBvc2VkU3RhdGVtZW50c1VuaWZ5O1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IGxhYmVsSlNPTiA9IGxhYmVsVG9MYWJlbEpTT04odGhpcy5sYWJlbCksXG4gICAgICAgICAgZGVkdWN0aW9uSlNPTiA9IGRlZHVjdGlvblRvRGVkdWN0aW9uSlNPTih0aGlzLmRlZHVjdGlvbiksXG4gICAgICAgICAgc3VwcG9zaXRpb25zSlNPTiA9IHN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTih0aGlzLnN1cHBvc2l0aW9ucyksXG4gICAgICAgICAgY29uc3RyYWludHNKU09OID0gY29uc3RyYWludHNUb0NvbnN0cmFpbnRzSlNPTih0aGlzLmNvbnN0cmFpbnRzKSxcbiAgICAgICAgICBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICBicmVha1BvaW50ID0gdGhpcy5nZXRCcmVha1BvaW50KCk7XG5cbiAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICBjb25zdCBsYWJlbCA9IGxhYmVsSlNPTiwgIC8vL1xuICAgICAgICAgIGRlZHVjdGlvbiA9IGRlZHVjdGlvbkpTT04sICAvLy9cbiAgICAgICAgICBzdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnNKU09OLCAgLy8vXG4gICAgICAgICAgY29uc3RyYWludHMgPSBjb25zdHJhaW50c0pTT04sICAvLy9cbiAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgYnJlYWtQb2ludCxcbiAgICAgICAgICAgIGxhYmVsLFxuICAgICAgICAgICAgZGVkdWN0aW9uLFxuICAgICAgICAgICAgc3VwcG9zaXRpb25zLFxuICAgICAgICAgICAgY29uc3RyYWludHNcbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiU2NoZW1hXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBjb25zdCBsYWJlbCA9IGxhYmVsRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgZGVkdWN0aW9uID0gZGVkdWN0aW9uRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgc3VwcG9zaXRpb25zID0gc3VwcG9zaXRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgY29uc3RyYWludHMgPSBjb25zdHJhaW50c0Zyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIHN0cmluZyA9IHNjaGVtYVN0cmluZ0Zyb21MYWJlbFN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbihsYWJlbCwgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24pLFxuICAgICAgICAgIG5vZGUgPSBudWxsLFxuICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgcHJvb2YgPSBudWxsLFxuICAgICAgICAgIHNjaGVtYSA9IG5ldyBTY2hlbWEoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBsYWJlbCwgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24sIHByb29mLCBjb25zdHJhaW50cyk7XG5cbiAgICByZXR1cm4gc2NoZW1hO1xuICB9XG59KTtcblxuZnVuY3Rpb24gc3VicHJvb2ZBc3NlcnRpb25Gcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICBsZXQgc3VicHJvb2ZBc3NlcnRpb247XG5cbiAgY29uc3QgeyBTdWJwcm9vZkFzc2VydGlvbiB9ID0gZWxlbWVudHM7XG5cbiAgc3VicHJvb2ZBc3NlcnRpb24gPSBTdWJwcm9vZkFzc2VydGlvbi5mcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgaWYgKHN1YnByb29mQXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgc3VicHJvb2ZBc3NlcnRpb24gPSBzdWJwcm9vZkFzc2VydGlvbi52YWxpZGF0ZShjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBzdWJwcm9vZkFzc2VydGlvbjtcblxufVxuIl0sIm5hbWVzIjpbImFzeW5jRm9yd2FyZHNFdmVyeSIsImFzeW5jaHJvbm91c1V0aWxpdGllcyIsImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIlNjaGVtYSIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJsYWJlbCIsInN1cHBvc2l0aW9ucyIsImRlZHVjdGlvbiIsInByb29mIiwiY29uc3RyYWludHMiLCJnZXRMYWJlbCIsImdldFN1cHBvc2l0aW9ucyIsImdldERlZHVjdGlvbiIsImdldFByb29mIiwiZ2V0TUNvbnN0cmFpbnQiLCJnZXRTdXBwb3NpdGlvbiIsImluZGV4Iiwic3VwcG9zaXRpb24iLCJpc0NvbmRpdGlvbmFsIiwic3VwcG9zaXRpb25zTGVuZ3RoIiwibGVuZ3RoIiwiY29uZGl0aW9uYWwiLCJjb21wYXJlUmVmZXJlbmNlIiwicmVmZXJlbmNlIiwibGFiZWxDb21wYXJlc1RvUmVmZmVyZW5jZSIsImNvbXBhcmVzVG9SZWZlcmVuY2UiLCJ2ZXJpZnkiLCJ2ZXJpZmllcyIsImJyZWFrIiwic2NoZW1hU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJlbmNhcHN1bGF0ZSIsImxhYmVsVmVyaWZpZXMiLCJ2ZXJpZnlMYWJlbCIsInN1cHBvc2l0aW9uc1ZlcmlmeSIsInZlcmlmeVN1cHBvc2l0aW9ucyIsImRlZHVjdGlvblZlcmlmaWVzIiwidmVyaWZ5RGVkdWN0aW9uIiwicHJvb2ZWZXJpZmllcyIsInZlcmlmeVByb29mIiwic2NoZW1hIiwiYWRkU2NoZW1hIiwiZGVidWciLCJsYWJlbFN0cmluZyIsInN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsImRlZHVjdGlvblN0cmluZyIsInZlcmlmeVN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb25WZXJpZmllcyIsInN1cHBvc2l0aW9uU3RyaW5nIiwic3VicHJvb2ZPclByb29mQXNzZXJ0aW9uIiwiYXNzaWduQXNzaWdubWVudHMiLCJhZGRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb24iLCJ1bmlmeUp1ZGdlbWVudCIsImp1ZGdlbWVudCIsImp1ZGdlbWVudFVuaWZpZXMiLCJqdWRnZW1lbnRTdHJpbmciLCJyZWNvbmNpbGUiLCJnZXRSZWZlcmVuY2UiLCJyZWZlcmVuY2VVbmlmaWVzIiwidW5pZnlSZWZlcmVuY2UiLCJzdGF0ZW1lbnRVbmlmaWVzIiwic3VicHJvb2ZBc3NlcnRpb24iLCJzdWJwcm9vZkFzc2VydGlvbkZyb21TdGF0ZW1lbnQiLCJzdWJwcm9vZmFzc2VydGlvblVuaWZpZXMiLCJ1bmlmeVN1YnByb29mQXNzZXJ0aW9uIiwiZGVkdWNlZFN0YXRtZW50IiwiZGVkdWNlZFN0YXRtZW50VW5maWZpZXMiLCJ1bmlmeURlZHVjZWRTdGF0ZW1lbnQiLCJhc3N1bXB0aW9ucyIsImdldEFzc3VtcHRpb25zIiwiYXNzdW1wdGlvbnNVbmlmeSIsInVuaWZ5QXNzdW1wdGlvbnMiLCJyZWZlcmVuY2VTdHJpbmciLCJldmVyeSIsImNvbnN0cmFpbnQiLCJkZWR1Y2VkU3RhdGVtZW50IiwiZGVkdWNlZFN0YXRlbWVudFVuaWZpZXMiLCJkZWR1Y2VkU3RhdGVtZW50U3RyaW5nIiwiZGVkdWN0aW9uQ29udGV4dCIsImdldENvbnRleHQiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInVuaWZ5U3RhdGVtZW50Iiwic3VicHJvb2ZBc3NlcnRpb25VbmlmaWVzIiwic3VicHJvb2ZBc3NlcnRpb25TdHJpbmciLCJnZXREZWR1Y2VkU3RhdGVtZW50Iiwic3VwcG9zZWRTdGF0ZW1lbnRzIiwiZ2V0U3VwcG9zZWRTdGF0ZW1lbnRzIiwic3VwcG9zZWRTdGF0ZW1lbnRzVW5pZnkiLCJ1bmlmeVN1cHBvc2VkU3RhdGVtZW50cyIsInVuaWZ5U3VwcG9zZWRTdGF0ZW1lbnQiLCJzdXBwb3NlZFN0YXRlbWVudCIsInN1cHBvc2VkU3RhdGVtZW50VW5pZmllcyIsInN1cHBvc2VkU3RhdGVtZW50U3RyaW5nIiwic3VwcG9zaXRpb25Db250ZXh0Iiwic3VwcG9zZWRTdGF0ZW1lbnRzTGVuZ3RoIiwidG9KU09OIiwibGFiZWxKU09OIiwibGFiZWxUb0xhYmVsSlNPTiIsImRlZHVjdGlvbkpTT04iLCJkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04iLCJzdXBwb3NpdGlvbnNKU09OIiwic3VwcG9zaXRpb25zVG9TdXBwb3NpdGlvbnNKU09OIiwiY29uc3RyYWludHNKU09OIiwiY29uc3RyYWludHNUb0NvbnN0cmFpbnRzSlNPTiIsImdldEJyZWFrUG9pbnQiLCJicmVha1BvaW50SlNPTiIsImpzb24iLCJuYW1lIiwiZnJvbUpTT04iLCJsYWJlbEZyb21KU09OIiwiZGVkdWN0aW9uRnJvbUpTT04iLCJzdXBwb3NpdGlvbnNGcm9tSlNPTiIsImNvbnN0cmFpbnRzRnJvbUpTT04iLCJzY2hlbWFTdHJpbmdGcm9tTGFiZWxTdXBwb3NpdGlvbnNBbmREZWR1Y3Rpb24iLCJTdWJwcm9vZkFzc2VydGlvbiIsImVsZW1lbnRzIiwiZnJvbVN0YXRlbWVudCIsInZhbGlkYXRlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFxQkE7OztlQUFBOzs7Z0NBbkJvRTtrRUFFL0M7eUJBR2tCO3dCQUN1QjtzQkFRZjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRS9DLE1BQU0sRUFBRUEsa0JBQWtCLEVBQUUsR0FBR0MscUNBQXFCLEVBQzlDLEVBQUVDLGtCQUFrQixFQUFFQywwQkFBMEIsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFOUUsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxlQUFlQyx1QkFBTztJQUNoRCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLEtBQUssRUFBRUMsWUFBWSxFQUFFQyxTQUFTLEVBQUVDLEtBQUssRUFBRUMsV0FBVyxDQUFFO1FBQ2pHLEtBQUssQ0FBQ1IsU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDQyxLQUFLLEdBQUdBO1FBQ2IsSUFBSSxDQUFDQyxZQUFZLEdBQUdBO1FBQ3BCLElBQUksQ0FBQ0MsU0FBUyxHQUFHQTtRQUNqQixJQUFJLENBQUNDLEtBQUssR0FBR0E7UUFDYixJQUFJLENBQUNDLFdBQVcsR0FBR0E7SUFDckI7SUFFQUMsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDTCxLQUFLO0lBQ25CO0lBRUFNLGtCQUFrQjtRQUNoQixPQUFPLElBQUksQ0FBQ0wsWUFBWTtJQUMxQjtJQUVBTSxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUNMLFNBQVM7SUFDdkI7SUFFQU0sV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDTCxLQUFLO0lBQ25CO0lBRUFNLGlCQUFpQjtRQUNmLE9BQU8sSUFBSSxDQUFDTCxXQUFXO0lBQ3pCO0lBRUFNLGVBQWVDLEtBQUssRUFBRTtRQUNwQixNQUFNQyxj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
@@ -120,7 +120,7 @@ _export(exports, {
120
120
  });
121
121
  const _occamlanguages = require("occam-languages");
122
122
  const _ruleNames = require("../ruleNames");
123
- const { ruleFromRuleName } = _occamlanguages.bnfUtilities;
123
+ const { instantiate, ruleFromRuleName } = _occamlanguages.bnfUtilities;
124
124
  const termPlaceholderRule = ruleFromRuleName(_ruleNames.TERM_RULE_NAME), typePlaceholderRule = ruleFromRuleName(_ruleNames.TYPE_RULE_NAME), framePlaceholderRule = ruleFromRuleName(_ruleNames.FRAME_RULE_NAME), labelPlaceholderRule = ruleFromRuleName(_ruleNames.LABEL_RULE_NAME), premisePlaceholderRule = ruleFromRuleName(_ruleNames.PREMISE_RULE_NAME), variablePlaceholderRule = ruleFromRuleName(_ruleNames.VARIABLE_RULE_NAME), equalityPlaceholderRule = ruleFromRuleName(_ruleNames.EQUALITY_RULE_NAME), propertyPlaceholderRule = ruleFromRuleName(_ruleNames.PROPERTY_RULE_NAME), judgementPlaceholderRule = ruleFromRuleName(_ruleNames.JUDGEMENT_RULE_NAME), generatorPlaceholderRule = ruleFromRuleName(_ruleNames.GENERATOR_RULE_NAME), deductionPlaceholderRule = ruleFromRuleName(_ruleNames.DEDUCTION_RULE_NAME), parameterPlaceholderRule = ruleFromRuleName(_ruleNames.PARAMETER_RULE_NAME), statementPlaceholderRule = ruleFromRuleName(_ruleNames.STATEMENT_RULE_NAME), referencePlaceholderRule = ruleFromRuleName(_ruleNames.REFERENCE_RULE_NAME), signaturePlaceholderRule = ruleFromRuleName(_ruleNames.SIGNATURE_RULE_NAME), constraintPlaceholderRule = ruleFromRuleName(_ruleNames.CONSTRAINT_RULE_NAME), combinatorPlaceholderRule = ruleFromRuleName(_ruleNames.COMBINATOR_RULE_NAME), conclusionPlaceholderRule = ruleFromRuleName(_ruleNames.CONCLUSION_RULE_NAME), hypothesisPlaceholderRule = ruleFromRuleName(_ruleNames.HYPOTHESIS_RULE_NAME), typePrefixPlaceholderRule = ruleFromRuleName(_ruleNames.TYPE_PREFIX_RULE_NAME), suppositionPlaceholderRule = ruleFromRuleName(_ruleNames.SUPPOSITION_RULE_NAME), constructorPlaceholderRule = ruleFromRuleName(_ruleNames.CONSTRUCTOR_RULE_NAME), equivalencePlaceholderRule = ruleFromRuleName(_ruleNames.EQUIVALENCE_RULE_NAME), metavariablePlaceholderRule = ruleFromRuleName(_ruleNames.METAVARIABLE_RULE_NAME), typeAssertionPlaceholderRule = ruleFromRuleName(_ruleNames.TYPE_ASSERTION_RULE_NAME), definedAssertionPlaceholderRule = ruleFromRuleName(_ruleNames.DEFINED_ASSERTION_RULE_NAME), termSubstitutionPlaceholderRule = ruleFromRuleName(_ruleNames.TERM_SUBSTITUTION_RULE_NAME), subproofAssertionlaceholderRule = ruleFromRuleName(_ruleNames.SUBPROOF_ASSERTION_RULE_NAME), propertyAssertionPlaceholderRule = ruleFromRuleName(_ruleNames.PROPERTY_ASSERTION_RULE_NAME), frameSubstitutionPlaceholderRule = ruleFromRuleName(_ruleNames.FRAME_SUBSTITUTION_RULE_NAME), procedureReferencelaceholderRule = ruleFromRuleName(_ruleNames.PROCEDURE_REFERENCE_RULE_NAME), containedAssertionPlaceholderRule = ruleFromRuleName(_ruleNames.CONTAINED_ASSERTION_RULE_NAME), signatureAssertionPlaceholderRule = ruleFromRuleName(_ruleNames.SIGNATURE_ASSERTION_RULE_NAME), implicitAssumptionPlaceholderRule = ruleFromRuleName(_ruleNames.IMPLICIT_ASSUMPTION_RULE_NAME), statementSubstitutionPlaceholderRule = ruleFromRuleName(_ruleNames.STATEMENT_SUBSTITUTION_RULE_NAME), referenceSubstitutionPlaceholderRule = ruleFromRuleName(_ruleNames.REFERENCE_SUBSTITUTION_RULE_NAME);
125
125
  function instantiatePremise(string, context) {
126
126
  string = `${string}
@@ -238,19 +238,5 @@ function instantiateStatementSubstitution(string, context) {
238
238
  function instantiateReferenceSubstitution(string, context) {
239
239
  return instantiate(referenceSubstitutionPlaceholderRule, string, context);
240
240
  }
241
- function instantiate(placeholderRule, string, context) {
242
- let node;
243
- const lexer = context.getLexer(), parser = context.getParser(), content = `${string}
244
- `, tokens = lexer.tokenise(content);
245
- context.setTokens(tokens);
246
- const startRule = placeholderRule; ///
247
- node = parser.parse(tokens, startRule);
248
- const nonTerminalNode = node; ///
249
- nonTerminalNode.someChildNode((childNode)=>{
250
- node = childNode; ///
251
- return true;
252
- });
253
- return node;
254
- }
255
241
 
256
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9jZXNzL2luc3RhbnRpYXRlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBibmZVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IFRFUk1fUlVMRV9OQU1FLFxuICAgICAgICAgVFlQRV9SVUxFX05BTUUsXG4gICAgICAgICBGUkFNRV9SVUxFX05BTUUsXG4gICAgICAgICBMQUJFTF9SVUxFX05BTUUsXG4gICAgICAgICBQUkVNSVNFX1JVTEVfTkFNRSxcbiAgICAgICAgIFZBUklBQkxFX1JVTEVfTkFNRSxcbiAgICAgICAgIEVRVUFMSVRZX1JVTEVfTkFNRSxcbiAgICAgICAgIFBST1BFUlRZX1JVTEVfTkFNRSxcbiAgICAgICAgIEpVREdFTUVOVF9SVUxFX05BTUUsXG4gICAgICAgICBERURVQ1RJT05fUlVMRV9OQU1FLFxuICAgICAgICAgUEFSQU1FVEVSX1JVTEVfTkFNRSxcbiAgICAgICAgIFNUQVRFTUVOVF9SVUxFX05BTUUsXG4gICAgICAgICBSRUZFUkVOQ0VfUlVMRV9OQU1FLFxuICAgICAgICAgU0lHTkFUVVJFX1JVTEVfTkFNRSxcbiAgICAgICAgIEdFTkVSQVRPUl9SVUxFX05BTUUsXG4gICAgICAgICBDT01CSU5BVE9SX1JVTEVfTkFNRSxcbiAgICAgICAgIENPTkNMVVNJT05fUlVMRV9OQU1FLFxuICAgICAgICAgSFlQT1RIRVNJU19SVUxFX05BTUUsXG4gICAgICAgICBDT05TVFJBSU5UX1JVTEVfTkFNRSxcbiAgICAgICAgIFRZUEVfUFJFRklYX1JVTEVfTkFNRSxcbiAgICAgICAgIFNVUFBPU0lUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIENPTlNUUlVDVE9SX1JVTEVfTkFNRSxcbiAgICAgICAgIEVRVUlWQUxFTkNFX1JVTEVfTkFNRSxcbiAgICAgICAgIE1FVEFWQVJJQUJMRV9SVUxFX05BTUUsXG4gICAgICAgICBUWVBFX0FTU0VSVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBERUZJTkVEX0FTU0VSVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBURVJNX1NVQlNUSVRVVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBQUk9QRVJUWV9BU1NFUlRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgU1VCUFJPT0ZfQVNTRVJUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIEZSQU1FX1NVQlNUSVRVVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBQUk9DRURVUkVfUkVGRVJFTkNFX1JVTEVfTkFNRSxcbiAgICAgICAgIENPTlRBSU5FRF9BU1NFUlRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgU0lHTkFUVVJFX0FTU0VSVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBJTVBMSUNJVF9BU1NVTVBUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIFNUQVRFTUVOVF9TVUJTVElUVVRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgUkVGRVJFTkNFX1NVQlNUSVRVVElPTl9SVUxFX05BTUUgfSBmcm9tIFwiLi4vcnVsZU5hbWVzXCI7XG5cbmNvbnN0IHsgcnVsZUZyb21SdWxlTmFtZSB9ID0gYm5mVXRpbGl0aWVzO1xuXG5jb25zdCB0ZXJtUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShURVJNX1JVTEVfTkFNRSksXG4gICAgICB0eXBlUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShUWVBFX1JVTEVfTkFNRSksXG4gICAgICBmcmFtZVBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoRlJBTUVfUlVMRV9OQU1FKSxcbiAgICAgIGxhYmVsUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShMQUJFTF9SVUxFX05BTUUpLFxuICAgICAgcHJlbWlzZVBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoUFJFTUlTRV9SVUxFX05BTUUpLFxuICAgICAgdmFyaWFibGVQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFZBUklBQkxFX1JVTEVfTkFNRSksXG4gICAgICBlcXVhbGl0eVBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoRVFVQUxJVFlfUlVMRV9OQU1FKSxcbiAgICAgIHByb3BlcnR5UGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShQUk9QRVJUWV9SVUxFX05BTUUpLFxuICAgICAganVkZ2VtZW50UGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShKVURHRU1FTlRfUlVMRV9OQU1FKSxcbiAgICAgIGdlbmVyYXRvclBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoR0VORVJBVE9SX1JVTEVfTkFNRSksXG4gICAgICBkZWR1Y3Rpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKERFRFVDVElPTl9SVUxFX05BTUUpLFxuICAgICAgcGFyYW1ldGVyUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShQQVJBTUVURVJfUlVMRV9OQU1FKSxcbiAgICAgIHN0YXRlbWVudFBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoU1RBVEVNRU5UX1JVTEVfTkFNRSksXG4gICAgICByZWZlcmVuY2VQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFJFRkVSRU5DRV9SVUxFX05BTUUpLFxuICAgICAgc2lnbmF0dXJlUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShTSUdOQVRVUkVfUlVMRV9OQU1FKSxcbiAgICAgIGNvbnN0cmFpbnRQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKENPTlNUUkFJTlRfUlVMRV9OQU1FKSxcbiAgICAgIGNvbWJpbmF0b3JQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKENPTUJJTkFUT1JfUlVMRV9OQU1FKSxcbiAgICAgIGNvbmNsdXNpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKENPTkNMVVNJT05fUlVMRV9OQU1FKSxcbiAgICAgIGh5cG90aGVzaXNQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKEhZUE9USEVTSVNfUlVMRV9OQU1FKSxcbiAgICAgIHR5cGVQcmVmaXhQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFRZUEVfUFJFRklYX1JVTEVfTkFNRSksXG4gICAgICBzdXBwb3NpdGlvblBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoU1VQUE9TSVRJT05fUlVMRV9OQU1FKSxcbiAgICAgIGNvbnN0cnVjdG9yUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShDT05TVFJVQ1RPUl9SVUxFX05BTUUpLFxuICAgICAgZXF1aXZhbGVuY2VQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKEVRVUlWQUxFTkNFX1JVTEVfTkFNRSksXG4gICAgICBtZXRhdmFyaWFibGVQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKE1FVEFWQVJJQUJMRV9SVUxFX05BTUUpLFxuICAgICAgdHlwZUFzc2VydGlvblBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoVFlQRV9BU1NFUlRJT05fUlVMRV9OQU1FKSxcbiAgICAgIGRlZmluZWRBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKERFRklORURfQVNTRVJUSU9OX1JVTEVfTkFNRSksXG4gICAgICB0ZXJtU3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShURVJNX1NVQlNUSVRVVElPTl9SVUxFX05BTUUpLFxuICAgICAgc3VicHJvb2ZBc3NlcnRpb25sYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoU1VCUFJPT0ZfQVNTRVJUSU9OX1JVTEVfTkFNRSksXG4gICAgICBwcm9wZXJ0eUFzc2VydGlvblBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoUFJPUEVSVFlfQVNTRVJUSU9OX1JVTEVfTkFNRSksXG4gICAgICBmcmFtZVN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoRlJBTUVfU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSksXG4gICAgICBwcm9jZWR1cmVSZWZlcmVuY2VsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoUFJPQ0VEVVJFX1JFRkVSRU5DRV9SVUxFX05BTUUpLFxuICAgICAgY29udGFpbmVkQXNzZXJ0aW9uUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShDT05UQUlORURfQVNTRVJUSU9OX1JVTEVfTkFNRSksXG4gICAgICBzaWduYXR1cmVBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFNJR05BVFVSRV9BU1NFUlRJT05fUlVMRV9OQU1FKSxcbiAgICAgIGltcGxpY2l0QXNzdW1wdGlvblBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoSU1QTElDSVRfQVNTVU1QVElPTl9SVUxFX05BTUUpLFxuICAgICAgc3RhdGVtZW50U3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShTVEFURU1FTlRfU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSksXG4gICAgICByZWZlcmVuY2VTdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFJFRkVSRU5DRV9TVUJTVElUVVRJT05fUlVMRV9OQU1FKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlUHJlbWlzZShzdHJpbmcsIGNvbnRleHQpIHtcbiAgc3RyaW5nID0gYCR7c3RyaW5nfVxuYDsgIC8vL1xuXG4gIHJldHVybiBpbnN0YW50aWF0ZShwcmVtaXNlUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVEZWR1Y3Rpb24oc3RyaW5nLCBjb250ZXh0KSB7XG4gIHN0cmluZyA9IGAke3N0cmluZ31cbmA7ICAvLy9cblxuICByZXR1cm4gaW5zdGFudGlhdGUoZGVkdWN0aW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVDb25jbHVzaW9uKHN0cmluZywgY29udGV4dCkge1xuICBzdHJpbmcgPSBgJHtzdHJpbmd9XG5gOyAgLy8vXG5cbiAgcmV0dXJuIGluc3RhbnRpYXRlKGNvbmNsdXNpb25QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVN1cHBvc2l0aW9uKHN0cmluZywgY29udGV4dCkge1xuICBzdHJpbmcgPSBgJHtzdHJpbmd9XG5gOyAgLy8vXG5cbiAgcmV0dXJuIGluc3RhbnRpYXRlKHN1cHBvc2l0aW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVUZXJtKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUodGVybVBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVUeXBlKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUodHlwZVBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVGcmFtZShzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGZyYW1lUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUxhYmVsKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUobGFiZWxQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlVmFyaWFibGUoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZSh2YXJpYWJsZVBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVFcXVhbGl0eShzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGVxdWFsaXR5UGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVByb3BlcnR5KHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUocHJvcGVydHlQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlR2VuZXJhdG9yKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoZ2VuZXJhdG9yUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUp1ZGdlbWVudChzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGp1ZGdlbWVudFBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVQYXJhbWV0ZXIoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShwYXJhbWV0ZXJQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlU3RhdGVtZW50KHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoc3RhdGVtZW50UGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVJlZmVyZW5jZShzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHJlZmVyZW5jZVBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVTaWduYXR1cmUoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShzaWduYXR1cmVQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlQ29tYmluYXRvcihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGNvbWJpbmF0b3JQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlSHlwb3RoZXNpcyhzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGh5cG90aGVzaXNQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlQ29uc3RyYWludChzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGNvbnN0cmFpbnRQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlVHlwZVByZWZpeChzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHR5cGVQcmVmaXhQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlQ29uc3RydWN0b3Ioc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShjb25zdHJ1Y3RvclBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVFcXVpdmFsZW5jZShzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGVxdWl2YWxlbmNlUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZU1ldGF2YXJpYWJsZShzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKG1ldGF2YXJpYWJsZVBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVUeXBlQXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUodHlwZUFzc2VydGlvblBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVEZWZpbmVkQXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoZGVmaW5lZEFzc2VydGlvblBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVUZXJtU3Vic3RpdHV0aW9uKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUodGVybVN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVTdWJwcm9vZkFzc2VydGlvbihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHN1YnByb29mQXNzZXJ0aW9ubGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlUHJvcGVydHlBc3NlcnRpb24oc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShwcm9wZXJ0eUFzc2VydGlvblBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVGcmFtZVN1YnN0aXR1dGlvbihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGZyYW1lU3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVByb2NlZHVyZVJlZmVyZW5jZShzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHByb2NlZHVyZVJlZmVyZW5jZWxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUNvbnRhaW5lZEFzc2VydGlvbihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGNvbnRhaW5lZEFzc2VydGlvblBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVTaWduYXR1cmVBc3NlcnRpb24oc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShzaWduYXR1cmVBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlSW1wbGljaXRBc3N1bXB0aW9uKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoaW1wbGljaXRBc3N1bXB0aW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVN0YXRlbWVudFN1YnN0aXR1dGlvbihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHN0YXRlbWVudFN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVSZWZlcmVuY2VTdWJzdGl0dXRpb24oc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShyZWZlcmVuY2VTdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZnVuY3Rpb24gaW5zdGFudGlhdGUocGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpIHtcbiAgbGV0IG5vZGU7XG5cbiAgY29uc3QgbGV4ZXIgPSBjb250ZXh0LmdldExleGVyKCksXG4gICAgICAgIHBhcnNlciA9IGNvbnRleHQuZ2V0UGFyc2VyKCksXG4gICAgICAgIGNvbnRlbnQgPSBgJHtzdHJpbmd9XG5gLFxuICAgICAgICB0b2tlbnMgPSBsZXhlci50b2tlbmlzZShjb250ZW50KTtcblxuICBjb250ZXh0LnNldFRva2Vucyh0b2tlbnMpO1xuXG4gIGNvbnN0IHN0YXJ0UnVsZSA9IHBsYWNlaG9sZGVyUnVsZTsgIC8vL1xuXG4gIG5vZGUgPSBwYXJzZXIucGFyc2UodG9rZW5zLCBzdGFydFJ1bGUpO1xuXG4gIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG5vZGU7IC8vL1xuXG4gIG5vblRlcm1pbmFsTm9kZS5zb21lQ2hpbGROb2RlKChjaGlsZE5vZGUpID0+IHtcbiAgICBub2RlID0gY2hpbGROb2RlOyAvLy9cblxuICAgIHJldHVybiB0cnVlO1xuICB9KTtcblxuICByZXR1cm4gbm9kZTtcbn1cbiJdLCJuYW1lcyI6WyJpbnN0YW50aWF0ZUNvbWJpbmF0b3IiLCJpbnN0YW50aWF0ZUNvbmNsdXNpb24iLCJpbnN0YW50aWF0ZUNvbnN0cmFpbnQiLCJpbnN0YW50aWF0ZUNvbnN0cnVjdG9yIiwiaW5zdGFudGlhdGVDb250YWluZWRBc3NlcnRpb24iLCJpbnN0YW50aWF0ZURlZHVjdGlvbiIsImluc3RhbnRpYXRlRGVmaW5lZEFzc2VydGlvbiIsImluc3RhbnRpYXRlRXF1YWxpdHkiLCJpbnN0YW50aWF0ZUVxdWl2YWxlbmNlIiwiaW5zdGFudGlhdGVGcmFtZSIsImluc3RhbnRpYXRlRnJhbWVTdWJzdGl0dXRpb24iLCJpbnN0YW50aWF0ZUdlbmVyYXRvciIsImluc3RhbnRpYXRlSHlwb3RoZXNpcyIsImluc3RhbnRpYXRlSW1wbGljaXRBc3N1bXB0aW9uIiwiaW5zdGFudGlhdGVKdWRnZW1lbnQiLCJpbnN0YW50aWF0ZUxhYmVsIiwiaW5zdGFudGlhdGVNZXRhdmFyaWFibGUiLCJpbnN0YW50aWF0ZVBhcmFtZXRlciIsImluc3RhbnRpYXRlUHJlbWlzZSIsImluc3RhbnRpYXRlUHJvY2VkdXJlUmVmZXJlbmNlIiwiaW5zdGFudGlhdGVQcm9wZXJ0eSIsImluc3RhbnRpYXRlUHJvcGVydHlBc3NlcnRpb24iLCJpbnN0YW50aWF0ZVJlZmVyZW5jZSIsImluc3RhbnRpYXRlUmVmZXJlbmNlU3Vic3RpdHV0aW9uIiwiaW5zdGFudGlhdGVTaWduYXR1cmUiLCJpbnN0YW50aWF0ZVNpZ25hdHVyZUFzc2VydGlvbiIsImluc3RhbnRpYXRlU3RhdGVtZW50IiwiaW5zdGFudGlhdGVTdGF0ZW1lbnRTdWJzdGl0dXRpb24iLCJpbnN0YW50aWF0ZVN1YnByb29mQXNzZXJ0aW9uIiwiaW5zdGFudGlhdGVTdXBwb3NpdGlvbiIsImluc3RhbnRpYXRlVGVybSIsImluc3RhbnRpYXRlVGVybVN1YnN0aXR1dGlvbiIsImluc3RhbnRpYXRlVHlwZSIsImluc3RhbnRpYXRlVHlwZUFzc2VydGlvbiIsImluc3RhbnRpYXRlVHlwZVByZWZpeCIsImluc3RhbnRpYXRlVmFyaWFibGUiLCJydWxlRnJvbVJ1bGVOYW1lIiwiYm5mVXRpbGl0aWVzIiwidGVybVBsYWNlaG9sZGVyUnVsZSIsIlRFUk1fUlVMRV9OQU1FIiwidHlwZVBsYWNlaG9sZGVyUnVsZSIsIlRZUEVfUlVMRV9OQU1FIiwiZnJhbWVQbGFjZWhvbGRlclJ1bGUiLCJGUkFNRV9SVUxFX05BTUUiLCJsYWJlbFBsYWNlaG9sZGVyUnVsZSIsIkxBQkVMX1JVTEVfTkFNRSIsInByZW1pc2VQbGFjZWhvbGRlclJ1bGUiLCJQUkVNSVNFX1JVTEVfTkFNRSIsInZhcmlhYmxlUGxhY2Vob2xkZXJSdWxlIiwiVkFSSUFCTEVfUlVMRV9OQU1FIiwiZXF1YWxpdHlQbGFjZWhvbGRlclJ1bGUiLCJFUVVBTElUWV9SVUxFX05BTUUiLCJwcm9wZXJ0eVBsYWNlaG9sZGVyUnVsZSIsIlBST1BFUlRZX1JVTEVfTkFNRSIsImp1ZGdlbWVudFBsYWNlaG9sZGVyUnVsZSIsIkpVREdFTUVOVF9SVUxFX05BTUUiLCJnZW5lcmF0b3JQbGFjZWhvbGRlclJ1bGUiLCJHRU5FUkFUT1JfUlVMRV9OQU1FIiwiZGVkdWN0aW9uUGxhY2Vob2xkZXJSdWxlIiwiREVEVUNUSU9OX1JVTEVfTkFNRSIsInBhcmFtZXRlclBsYWNlaG9sZGVyUnVsZSIsIlBBUkFNRVRFUl9SVUxFX05BTUUiLCJzdGF0ZW1lbnRQbGFjZWhvbGRlclJ1bGUiLCJTVEFURU1FTlRfUlVMRV9OQU1FIiwicmVmZXJlbmNlUGxhY2Vob2xkZXJSdWxlIiwiUkVGRVJFTkNFX1JVTEVfTkFNRSIsInNpZ25hdHVyZVBsYWNlaG9sZGVyUnVsZSIsIlNJR05BVFVSRV9SVUxFX05BTUUiLCJjb25zdHJhaW50UGxhY2Vob2xkZXJSdWxlIiwiQ09OU1RSQUlOVF9SVUxFX05BTUUiLCJjb21iaW5hdG9yUGxhY2Vob2xkZXJSdWxlIiwiQ09NQklOQVRPUl9SVUxFX05BTUUiLCJjb25jbHVzaW9uUGxhY2Vob2xkZXJSdWxlIiwiQ09OQ0xVU0lPTl9SVUxFX05BTUUiLCJoeXBvdGhlc2lzUGxhY2Vob2xkZXJSdWxlIiwiSFlQT1RIRVNJU19SVUxFX05BTUUiLCJ0eXBlUHJlZml4UGxhY2Vob2xkZXJSdWxlIiwiVFlQRV9QUkVGSVhfUlVMRV9OQU1FIiwic3VwcG9zaXRpb25QbGFjZWhvbGRlclJ1bGUiLCJTVVBQT1NJVElPTl9SVUxFX05BTUUiLCJjb25zdHJ1Y3RvclBsYWNlaG9sZGVyUnVsZSIsIkNPTlNUUlVDVE9SX1JVTEVfTkFNRSIsImVxdWl2YWxlbmNlUGxhY2Vob2xkZXJSdWxlIiwiRVFVSVZBTEVOQ0VfUlVMRV9OQU1FIiwibWV0YXZhcmlhYmxlUGxhY2Vob2xkZXJSdWxlIiwiTUVUQVZBUklBQkxFX1JVTEVfTkFNRSIsInR5cGVBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUiLCJUWVBFX0FTU0VSVElPTl9SVUxFX05BTUUiLCJkZWZpbmVkQXNzZXJ0aW9uUGxhY2Vob2xkZXJSdWxlIiwiREVGSU5FRF9BU1NFUlRJT05fUlVMRV9OQU1FIiwidGVybVN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSIsIlRFUk1fU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSIsInN1YnByb29mQXNzZXJ0aW9ubGFjZWhvbGRlclJ1bGUiLCJTVUJQUk9PRl9BU1NFUlRJT05fUlVMRV9OQU1FIiwicHJvcGVydHlBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUiLCJQUk9QRVJUWV9BU1NFUlRJT05fUlVMRV9OQU1FIiwiZnJhbWVTdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUiLCJGUkFNRV9TVUJTVElUVVRJT05fUlVMRV9OQU1FIiwicHJvY2VkdXJlUmVmZXJlbmNlbGFjZWhvbGRlclJ1bGUiLCJQUk9DRURVUkVfUkVGRVJFTkNFX1JVTEVfTkFNRSIsImNvbnRhaW5lZEFzc2VydGlvblBsYWNlaG9sZGVyUnVsZSIsIkNPTlRBSU5FRF9BU1NFUlRJT05fUlVMRV9OQU1FIiwic2lnbmF0dXJlQXNzZXJ0aW9uUGxhY2Vob2xkZXJSdWxlIiwiU0lHTkFUVVJFX0FTU0VSVElPTl9SVUxFX05BTUUiLCJpbXBsaWNpdEFzc3VtcHRpb25QbGFjZWhvbGRlclJ1bGUiLCJJTVBMSUNJVF9BU1NVTVBUSU9OX1JVTEVfTkFNRSIsInN0YXRlbWVudFN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSIsIlNUQVRFTUVOVF9TVUJTVElUVVRJT05fUlVMRV9OQU1FIiwicmVmZXJlbmNlU3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlIiwiUkVGRVJFTkNFX1NVQlNUSVRVVElPTl9SVUxFX05BTUUiLCJzdHJpbmciLCJjb250ZXh0IiwiaW5zdGFudGlhdGUiLCJwbGFjZWhvbGRlclJ1bGUiLCJub2RlIiwibGV4ZXIiLCJnZXRMZXhlciIsInBhcnNlciIsImdldFBhcnNlciIsImNvbnRlbnQiLCJ0b2tlbnMiLCJ0b2tlbmlzZSIsInNldFRva2VucyIsInN0YXJ0UnVsZSIsInBhcnNlIiwibm9uVGVybWluYWxOb2RlIiwic29tZUNoaWxkTm9kZSIsImNoaWxkTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBc0lnQkE7ZUFBQUE7O1FBeENBQztlQUFBQTs7UUE0Q0FDO2VBQUFBOztRQUlBQztlQUFBQTs7UUFvQkFDO2VBQUFBOztRQTNFQUM7ZUFBQUE7O1FBK0RBQztlQUFBQTs7UUFoQ0FDO2VBQUFBOztRQTBCQUM7ZUFBQUE7O1FBaENBQztlQUFBQTs7UUE4Q0FDO2VBQUFBOztRQXBDQUM7ZUFBQUE7O1FBY0FDO2VBQUFBOztRQThCQUM7ZUFBQUE7O1FBMUNBQztlQUFBQTs7UUFWQUM7ZUFBQUE7O1FBZ0NBQztlQUFBQTs7UUFwQkFDO2VBQUFBOztRQTlDQUM7ZUFBQUE7O1FBZ0ZBQztlQUFBQTs7UUF4Q0FDO2VBQUFBOztRQW9DQUM7ZUFBQUE7O1FBMUJBQztlQUFBQTs7UUF3Q0FDO2VBQUFBOztRQXRDQUM7ZUFBQUE7O1FBZ0NBQztlQUFBQTs7UUFwQ0FDO2VBQUFBOztRQXdDQUM7ZUFBQUE7O1FBZEFDO2VBQUFBOztRQXJEQUM7ZUFBQUE7O1FBT0FDO2VBQUFBOztRQTRDQUM7ZUFBQUE7O1FBMUNBQztlQUFBQTs7UUFzQ0FDO2VBQUFBOztRQVJBQztlQUFBQTs7UUF4QkFDO2VBQUFBOzs7Z0NBbEhhOzJCQXFDb0I7QUFFakQsTUFBTSxFQUFFQyxnQkFBZ0IsRUFBRSxHQUFHQyw0QkFBWTtBQUV6QyxNQUFNQyxzQkFBc0JGLGlCQUFpQkcseUJBQWMsR0FDckRDLHNCQUFzQkosaUJBQWlCSyx5QkFBYyxHQUNyREMsdUJBQXVCTixpQkFBaUJPLDBCQUFlLEdBQ3ZEQyx1QkFBdUJSLGlCQUFpQlMsMEJBQWUsR0FDdkRDLHlCQUF5QlYsaUJBQWlCVyw0QkFBaUIsR0FDM0RDLDBCQUEwQlosaUJBQWlCYSw2QkFBa0IsR0FDN0RDLDBCQUEwQmQs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
242
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9jZXNzL2luc3RhbnRpYXRlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBibmZVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IFRFUk1fUlVMRV9OQU1FLFxuICAgICAgICAgVFlQRV9SVUxFX05BTUUsXG4gICAgICAgICBGUkFNRV9SVUxFX05BTUUsXG4gICAgICAgICBMQUJFTF9SVUxFX05BTUUsXG4gICAgICAgICBQUkVNSVNFX1JVTEVfTkFNRSxcbiAgICAgICAgIFZBUklBQkxFX1JVTEVfTkFNRSxcbiAgICAgICAgIEVRVUFMSVRZX1JVTEVfTkFNRSxcbiAgICAgICAgIFBST1BFUlRZX1JVTEVfTkFNRSxcbiAgICAgICAgIEpVREdFTUVOVF9SVUxFX05BTUUsXG4gICAgICAgICBERURVQ1RJT05fUlVMRV9OQU1FLFxuICAgICAgICAgUEFSQU1FVEVSX1JVTEVfTkFNRSxcbiAgICAgICAgIFNUQVRFTUVOVF9SVUxFX05BTUUsXG4gICAgICAgICBSRUZFUkVOQ0VfUlVMRV9OQU1FLFxuICAgICAgICAgU0lHTkFUVVJFX1JVTEVfTkFNRSxcbiAgICAgICAgIEdFTkVSQVRPUl9SVUxFX05BTUUsXG4gICAgICAgICBDT01CSU5BVE9SX1JVTEVfTkFNRSxcbiAgICAgICAgIENPTkNMVVNJT05fUlVMRV9OQU1FLFxuICAgICAgICAgSFlQT1RIRVNJU19SVUxFX05BTUUsXG4gICAgICAgICBDT05TVFJBSU5UX1JVTEVfTkFNRSxcbiAgICAgICAgIFRZUEVfUFJFRklYX1JVTEVfTkFNRSxcbiAgICAgICAgIFNVUFBPU0lUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIENPTlNUUlVDVE9SX1JVTEVfTkFNRSxcbiAgICAgICAgIEVRVUlWQUxFTkNFX1JVTEVfTkFNRSxcbiAgICAgICAgIE1FVEFWQVJJQUJMRV9SVUxFX05BTUUsXG4gICAgICAgICBUWVBFX0FTU0VSVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBERUZJTkVEX0FTU0VSVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBURVJNX1NVQlNUSVRVVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBQUk9QRVJUWV9BU1NFUlRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgU1VCUFJPT0ZfQVNTRVJUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIEZSQU1FX1NVQlNUSVRVVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBQUk9DRURVUkVfUkVGRVJFTkNFX1JVTEVfTkFNRSxcbiAgICAgICAgIENPTlRBSU5FRF9BU1NFUlRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgU0lHTkFUVVJFX0FTU0VSVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBJTVBMSUNJVF9BU1NVTVBUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIFNUQVRFTUVOVF9TVUJTVElUVVRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgUkVGRVJFTkNFX1NVQlNUSVRVVElPTl9SVUxFX05BTUUgfSBmcm9tIFwiLi4vcnVsZU5hbWVzXCI7XG5cbmNvbnN0IHsgaW5zdGFudGlhdGUsIHJ1bGVGcm9tUnVsZU5hbWUgfSA9IGJuZlV0aWxpdGllcztcblxuY29uc3QgdGVybVBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoVEVSTV9SVUxFX05BTUUpLFxuICAgICAgdHlwZVBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoVFlQRV9SVUxFX05BTUUpLFxuICAgICAgZnJhbWVQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKEZSQU1FX1JVTEVfTkFNRSksXG4gICAgICBsYWJlbFBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoTEFCRUxfUlVMRV9OQU1FKSxcbiAgICAgIHByZW1pc2VQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFBSRU1JU0VfUlVMRV9OQU1FKSxcbiAgICAgIHZhcmlhYmxlUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShWQVJJQUJMRV9SVUxFX05BTUUpLFxuICAgICAgZXF1YWxpdHlQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKEVRVUFMSVRZX1JVTEVfTkFNRSksXG4gICAgICBwcm9wZXJ0eVBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoUFJPUEVSVFlfUlVMRV9OQU1FKSxcbiAgICAgIGp1ZGdlbWVudFBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoSlVER0VNRU5UX1JVTEVfTkFNRSksXG4gICAgICBnZW5lcmF0b3JQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKEdFTkVSQVRPUl9SVUxFX05BTUUpLFxuICAgICAgZGVkdWN0aW9uUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShERURVQ1RJT05fUlVMRV9OQU1FKSxcbiAgICAgIHBhcmFtZXRlclBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoUEFSQU1FVEVSX1JVTEVfTkFNRSksXG4gICAgICBzdGF0ZW1lbnRQbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFNUQVRFTUVOVF9SVUxFX05BTUUpLFxuICAgICAgcmVmZXJlbmNlUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShSRUZFUkVOQ0VfUlVMRV9OQU1FKSxcbiAgICAgIHNpZ25hdHVyZVBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoU0lHTkFUVVJFX1JVTEVfTkFNRSksXG4gICAgICBjb25zdHJhaW50UGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShDT05TVFJBSU5UX1JVTEVfTkFNRSksXG4gICAgICBjb21iaW5hdG9yUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShDT01CSU5BVE9SX1JVTEVfTkFNRSksXG4gICAgICBjb25jbHVzaW9uUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShDT05DTFVTSU9OX1JVTEVfTkFNRSksXG4gICAgICBoeXBvdGhlc2lzUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShIWVBPVEhFU0lTX1JVTEVfTkFNRSksXG4gICAgICB0eXBlUHJlZml4UGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShUWVBFX1BSRUZJWF9SVUxFX05BTUUpLFxuICAgICAgc3VwcG9zaXRpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFNVUFBPU0lUSU9OX1JVTEVfTkFNRSksXG4gICAgICBjb25zdHJ1Y3RvclBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoQ09OU1RSVUNUT1JfUlVMRV9OQU1FKSxcbiAgICAgIGVxdWl2YWxlbmNlUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShFUVVJVkFMRU5DRV9SVUxFX05BTUUpLFxuICAgICAgbWV0YXZhcmlhYmxlUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShNRVRBVkFSSUFCTEVfUlVMRV9OQU1FKSxcbiAgICAgIHR5cGVBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFRZUEVfQVNTRVJUSU9OX1JVTEVfTkFNRSksXG4gICAgICBkZWZpbmVkQXNzZXJ0aW9uUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShERUZJTkVEX0FTU0VSVElPTl9SVUxFX05BTUUpLFxuICAgICAgdGVybVN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoVEVSTV9TVUJTVElUVVRJT05fUlVMRV9OQU1FKSxcbiAgICAgIHN1YnByb29mQXNzZXJ0aW9ubGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFNVQlBST09GX0FTU0VSVElPTl9SVUxFX05BTUUpLFxuICAgICAgcHJvcGVydHlBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFBST1BFUlRZX0FTU0VSVElPTl9SVUxFX05BTUUpLFxuICAgICAgZnJhbWVTdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKEZSQU1FX1NVQlNUSVRVVElPTl9SVUxFX05BTUUpLFxuICAgICAgcHJvY2VkdXJlUmVmZXJlbmNlbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKFBST0NFRFVSRV9SRUZFUkVOQ0VfUlVMRV9OQU1FKSxcbiAgICAgIGNvbnRhaW5lZEFzc2VydGlvblBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoQ09OVEFJTkVEX0FTU0VSVElPTl9SVUxFX05BTUUpLFxuICAgICAgc2lnbmF0dXJlQXNzZXJ0aW9uUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShTSUdOQVRVUkVfQVNTRVJUSU9OX1JVTEVfTkFNRSksXG4gICAgICBpbXBsaWNpdEFzc3VtcHRpb25QbGFjZWhvbGRlclJ1bGUgPSBydWxlRnJvbVJ1bGVOYW1lKElNUExJQ0lUX0FTU1VNUFRJT05fUlVMRV9OQU1FKSxcbiAgICAgIHN0YXRlbWVudFN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSA9IHJ1bGVGcm9tUnVsZU5hbWUoU1RBVEVNRU5UX1NVQlNUSVRVVElPTl9SVUxFX05BTUUpLFxuICAgICAgcmVmZXJlbmNlU3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlID0gcnVsZUZyb21SdWxlTmFtZShSRUZFUkVOQ0VfU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVByZW1pc2Uoc3RyaW5nLCBjb250ZXh0KSB7XG4gIHN0cmluZyA9IGAke3N0cmluZ31cbmA7ICAvLy9cblxuICByZXR1cm4gaW5zdGFudGlhdGUocHJlbWlzZVBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlRGVkdWN0aW9uKHN0cmluZywgY29udGV4dCkge1xuICBzdHJpbmcgPSBgJHtzdHJpbmd9XG5gOyAgLy8vXG5cbiAgcmV0dXJuIGluc3RhbnRpYXRlKGRlZHVjdGlvblBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlQ29uY2x1c2lvbihzdHJpbmcsIGNvbnRleHQpIHtcbiAgc3RyaW5nID0gYCR7c3RyaW5nfVxuYDsgIC8vL1xuXG4gIHJldHVybiBpbnN0YW50aWF0ZShjb25jbHVzaW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVTdXBwb3NpdGlvbihzdHJpbmcsIGNvbnRleHQpIHtcbiAgc3RyaW5nID0gYCR7c3RyaW5nfVxuYDsgIC8vL1xuXG4gIHJldHVybiBpbnN0YW50aWF0ZShzdXBwb3NpdGlvblBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlVGVybShzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHRlcm1QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlVHlwZShzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHR5cGVQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlRnJhbWUoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShmcmFtZVBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVMYWJlbChzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGxhYmVsUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVZhcmlhYmxlKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUodmFyaWFibGVQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlRXF1YWxpdHkoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShlcXVhbGl0eVBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVQcm9wZXJ0eShzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHByb3BlcnR5UGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUdlbmVyYXRvcihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGdlbmVyYXRvclBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVKdWRnZW1lbnQoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShqdWRnZW1lbnRQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlUGFyYW1ldGVyKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUocGFyYW1ldGVyUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVN0YXRlbWVudChzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHN0YXRlbWVudFBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVSZWZlcmVuY2Uoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShyZWZlcmVuY2VQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlU2lnbmF0dXJlKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoc2lnbmF0dXJlUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUNvbWJpbmF0b3Ioc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShjb21iaW5hdG9yUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUh5cG90aGVzaXMoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShoeXBvdGhlc2lzUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUNvbnN0cmFpbnQoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShjb25zdHJhaW50UGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVR5cGVQcmVmaXgoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZSh0eXBlUHJlZml4UGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUNvbnN0cnVjdG9yKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoY29uc3RydWN0b3JQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlRXF1aXZhbGVuY2Uoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShlcXVpdmFsZW5jZVBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVNZXRhdmFyaWFibGUoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShtZXRhdmFyaWFibGVQbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlVHlwZUFzc2VydGlvbihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHR5cGVBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlRGVmaW5lZEFzc2VydGlvbihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGRlZmluZWRBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlVGVybVN1YnN0aXR1dGlvbihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKHRlcm1TdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlU3VicHJvb2ZBc3NlcnRpb24oc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShzdWJwcm9vZkFzc2VydGlvbmxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVByb3BlcnR5QXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUocHJvcGVydHlBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlRnJhbWVTdWJzdGl0dXRpb24oc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShmcmFtZVN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVQcm9jZWR1cmVSZWZlcmVuY2Uoc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShwcm9jZWR1cmVSZWZlcmVuY2VsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVDb250YWluZWRBc3NlcnRpb24oc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShjb250YWluZWRBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlU2lnbmF0dXJlQXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUoc2lnbmF0dXJlQXNzZXJ0aW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZUltcGxpY2l0QXNzdW1wdGlvbihzdHJpbmcsIGNvbnRleHQpIHsgcmV0dXJuIGluc3RhbnRpYXRlKGltcGxpY2l0QXNzdW1wdGlvblBsYWNlaG9sZGVyUnVsZSwgc3RyaW5nLCBjb250ZXh0KTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGVTdGF0ZW1lbnRTdWJzdGl0dXRpb24oc3RyaW5nLCBjb250ZXh0KSB7IHJldHVybiBpbnN0YW50aWF0ZShzdGF0ZW1lbnRTdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUsIHN0cmluZywgY29udGV4dCk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlUmVmZXJlbmNlU3Vic3RpdHV0aW9uKHN0cmluZywgY29udGV4dCkgeyByZXR1cm4gaW5zdGFudGlhdGUocmVmZXJlbmNlU3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlLCBzdHJpbmcsIGNvbnRleHQpOyB9XG4iXSwibmFtZXMiOlsiaW5zdGFudGlhdGVDb21iaW5hdG9yIiwiaW5zdGFudGlhdGVDb25jbHVzaW9uIiwiaW5zdGFudGlhdGVDb25zdHJhaW50IiwiaW5zdGFudGlhdGVDb25zdHJ1Y3RvciIsImluc3RhbnRpYXRlQ29udGFpbmVkQXNzZXJ0aW9uIiwiaW5zdGFudGlhdGVEZWR1Y3Rpb24iLCJpbnN0YW50aWF0ZURlZmluZWRBc3NlcnRpb24iLCJpbnN0YW50aWF0ZUVxdWFsaXR5IiwiaW5zdGFudGlhdGVFcXVpdmFsZW5jZSIsImluc3RhbnRpYXRlRnJhbWUiLCJpbnN0YW50aWF0ZUZyYW1lU3Vic3RpdHV0aW9uIiwiaW5zdGFudGlhdGVHZW5lcmF0b3IiLCJpbnN0YW50aWF0ZUh5cG90aGVzaXMiLCJpbnN0YW50aWF0ZUltcGxpY2l0QXNzdW1wdGlvbiIsImluc3RhbnRpYXRlSnVkZ2VtZW50IiwiaW5zdGFudGlhdGVMYWJlbCIsImluc3RhbnRpYXRlTWV0YXZhcmlhYmxlIiwiaW5zdGFudGlhdGVQYXJhbWV0ZXIiLCJpbnN0YW50aWF0ZVByZW1pc2UiLCJpbnN0YW50aWF0ZVByb2NlZHVyZVJlZmVyZW5jZSIsImluc3RhbnRpYXRlUHJvcGVydHkiLCJpbnN0YW50aWF0ZVByb3BlcnR5QXNzZXJ0aW9uIiwiaW5zdGFudGlhdGVSZWZlcmVuY2UiLCJpbnN0YW50aWF0ZVJlZmVyZW5jZVN1YnN0aXR1dGlvbiIsImluc3RhbnRpYXRlU2lnbmF0dXJlIiwiaW5zdGFudGlhdGVTaWduYXR1cmVBc3NlcnRpb24iLCJpbnN0YW50aWF0ZVN0YXRlbWVudCIsImluc3RhbnRpYXRlU3RhdGVtZW50U3Vic3RpdHV0aW9uIiwiaW5zdGFudGlhdGVTdWJwcm9vZkFzc2VydGlvbiIsImluc3RhbnRpYXRlU3VwcG9zaXRpb24iLCJpbnN0YW50aWF0ZVRlcm0iLCJpbnN0YW50aWF0ZVRlcm1TdWJzdGl0dXRpb24iLCJpbnN0YW50aWF0ZVR5cGUiLCJpbnN0YW50aWF0ZVR5cGVBc3NlcnRpb24iLCJpbnN0YW50aWF0ZVR5cGVQcmVmaXgiLCJpbnN0YW50aWF0ZVZhcmlhYmxlIiwiaW5zdGFudGlhdGUiLCJydWxlRnJvbVJ1bGVOYW1lIiwiYm5mVXRpbGl0aWVzIiwidGVybVBsYWNlaG9sZGVyUnVsZSIsIlRFUk1fUlVMRV9OQU1FIiwidHlwZVBsYWNlaG9sZGVyUnVsZSIsIlRZUEVfUlVMRV9OQU1FIiwiZnJhbWVQbGFjZWhvbGRlclJ1bGUiLCJGUkFNRV9SVUxFX05BTUUiLCJsYWJlbFBsYWNlaG9sZGVyUnVsZSIsIkxBQkVMX1JVTEVfTkFNRSIsInByZW1pc2VQbGFjZWhvbGRlclJ1bGUiLCJQUkVNSVNFX1JVTEVfTkFNRSIsInZhcmlhYmxlUGxhY2Vob2xkZXJSdWxlIiwiVkFSSUFCTEVfUlVMRV9OQU1FIiwiZXF1YWxpdHlQbGFjZWhvbGRlclJ1bGUiLCJFUVVBTElUWV9SVUxFX05BTUUiLCJwcm9wZXJ0eVBsYWNlaG9sZGVyUnVsZSIsIlBST1BFUlRZX1JVTEVfTkFNRSIsImp1ZGdlbWVudFBsYWNlaG9sZGVyUnVsZSIsIkpVREdFTUVOVF9SVUxFX05BTUUiLCJnZW5lcmF0b3JQbGFjZWhvbGRlclJ1bGUiLCJHRU5FUkFUT1JfUlVMRV9OQU1FIiwiZGVkdWN0aW9uUGxhY2Vob2xkZXJSdWxlIiwiREVEVUNUSU9OX1JVTEVfTkFNRSIsInBhcmFtZXRlclBsYWNlaG9sZGVyUnVsZSIsIlBBUkFNRVRFUl9SVUxFX05BTUUiLCJzdGF0ZW1lbnRQbGFjZWhvbGRlclJ1bGUiLCJTVEFURU1FTlRfUlVMRV9OQU1FIiwicmVmZXJlbmNlUGxhY2Vob2xkZXJSdWxlIiwiUkVGRVJFTkNFX1JVTEVfTkFNRSIsInNpZ25hdHVyZVBsYWNlaG9sZGVyUnVsZSIsIlNJR05BVFVSRV9SVUxFX05BTUUiLCJjb25zdHJhaW50UGxhY2Vob2xkZXJSdWxlIiwiQ09OU1RSQUlOVF9SVUxFX05BTUUiLCJjb21iaW5hdG9yUGxhY2Vob2xkZXJSdWxlIiwiQ09NQklOQVRPUl9SVUxFX05BTUUiLCJjb25jbHVzaW9uUGxhY2Vob2xkZXJSdWxlIiwiQ09OQ0xVU0lPTl9SVUxFX05BTUUiLCJoeXBvdGhlc2lzUGxhY2Vob2xkZXJSdWxlIiwiSFlQT1RIRVNJU19SVUxFX05BTUUiLCJ0eXBlUHJlZml4UGxhY2Vob2xkZXJSdWxlIiwiVFlQRV9QUkVGSVhfUlVMRV9OQU1FIiwic3VwcG9zaXRpb25QbGFjZWhvbGRlclJ1bGUiLCJTVVBQT1NJVElPTl9SVUxFX05BTUUiLCJjb25zdHJ1Y3RvclBsYWNlaG9sZGVyUnVsZSIsIkNPTlNUUlVDVE9SX1JVTEVfTkFNRSIsImVxdWl2YWxlbmNlUGxhY2Vob2xkZXJSdWxlIiwiRVFVSVZBTEVOQ0VfUlVMRV9OQU1FIiwibWV0YXZhcmlhYmxlUGxhY2Vob2xkZXJSdWxlIiwiTUVUQVZBUklBQkxFX1JVTEVfTkFNRSIsInR5cGVBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUiLCJUWVBFX0FTU0VSVElPTl9SVUxFX05BTUUiLCJkZWZpbmVkQXNzZXJ0aW9uUGxhY2Vob2xkZXJSdWxlIiwiREVGSU5FRF9BU1NFUlRJT05fUlVMRV9OQU1FIiwidGVybVN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSIsIlRFUk1fU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSIsInN1YnByb29mQXNzZXJ0aW9ubGFjZWhvbGRlclJ1bGUiLCJTVUJQUk9PRl9BU1NFUlRJT05fUlVMRV9OQU1FIiwicHJvcGVydHlBc3NlcnRpb25QbGFjZWhvbGRlclJ1bGUiLCJQUk9QRVJUWV9BU1NFUlRJT05fUlVMRV9OQU1FIiwiZnJhbWVTdWJzdGl0dXRpb25QbGFjZWhvbGRlclJ1bGUiLCJGUkFNRV9TVUJTVElUVVRJT05fUlVMRV9OQU1FIiwicHJvY2VkdXJlUmVmZXJlbmNlbGFjZWhvbGRlclJ1bGUiLCJQUk9DRURVUkVfUkVGRVJFTkNFX1JVTEVfTkFNRSIsImNvbnRhaW5lZEFzc2VydGlvblBsYWNlaG9sZGVyUnVsZSIsIkNPTlRBSU5FRF9BU1NFUlRJT05fUlVMRV9OQU1FIiwic2lnbmF0dXJlQXNzZXJ0aW9uUGxhY2Vob2xkZXJSdWxlIiwiU0lHTkFUVVJFX0FTU0VSVElPTl9SVUxFX05BTUUiLCJpbXBsaWNpdEFzc3VtcHRpb25QbGFjZWhvbGRlclJ1bGUiLCJJTVBMSUNJVF9BU1NVTVBUSU9OX1JVTEVfTkFNRSIsInN0YXRlbWVudFN1YnN0aXR1dGlvblBsYWNlaG9sZGVyUnVsZSIsIlNUQVRFTUVOVF9TVUJTVElUVVRJT05fUlVMRV9OQU1FIiwicmVmZXJlbmNlU3Vic3RpdHV0aW9uUGxhY2Vob2xkZXJSdWxlIiwiUkVGRVJFTkNFX1NVQlNUSVRVVElPTl9SVUxFX05BTUUiLCJzdHJpbmciLCJjb250ZXh0Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFzSWdCQTtlQUFBQTs7UUF4Q0FDO2VBQUFBOztRQTRDQUM7ZUFBQUE7O1FBSUFDO2VBQUFBOztRQW9CQUM7ZUFBQUE7O1FBM0VBQztlQUFBQTs7UUErREFDO2VBQUFBOztRQWhDQUM7ZUFBQUE7O1FBMEJBQztlQUFBQTs7UUFoQ0FDO2VBQUFBOztRQThDQUM7ZUFBQUE7O1FBcENBQztlQUFBQTs7UUFjQUM7ZUFBQUE7O1FBOEJBQztlQUFBQTs7UUExQ0FDO2VBQUFBOztRQVZBQztlQUFBQTs7UUFnQ0FDO2VBQUFBOztRQXBCQUM7ZUFBQUE7O1FBOUNBQztlQUFBQTs7UUFnRkFDO2VBQUFBOztRQXhDQUM7ZUFBQUE7O1FBb0NBQztlQUFBQTs7UUExQkFDO2VBQUFBOztRQXdDQUM7ZUFBQUE7O1FBdENBQztlQUFBQTs7UUFnQ0FDO2VBQUFBOztRQXBDQUM7ZUFBQUE7O1FBd0NBQztlQUFBQTs7UUFkQUM7ZUFBQUE7O1FBckRBQztlQUFBQTs7UUFPQUM7ZUFBQUE7O1FBNENBQztlQUFBQTs7UUExQ0FDO2VBQUFBOztRQXNDQUM7ZUFBQUE7O1FBUkFDO2VBQUFBOztRQXhCQUM7ZUFBQUE7OztnQ0FsSGE7MkJBcUNvQjtBQUVqRCxNQUFNLEVB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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-nominal",
3
3
  "author": "James Smith",
4
- "version": "1.0.286",
4
+ "version": "1.0.288",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-nominal",
7
7
  "description": "Occam's Nominal language.",
@@ -11,9 +11,9 @@
11
11
  },
12
12
  "dependencies": {
13
13
  "necessary": "^17.5.2",
14
- "occam-furtle": "^3.0.370",
14
+ "occam-furtle": "^3.0.371",
15
15
  "occam-grammar-utilities": "^8.1.17",
16
- "occam-languages": "^1.0.28",
16
+ "occam-languages": "^1.0.30",
17
17
  "occam-query": "^4.1.198"
18
18
  },
19
19
  "devDependencies": {
@@ -6,7 +6,6 @@ import elements from "../elements";
6
6
 
7
7
  import { define } from "../elements";
8
8
  import { reconcile, encapsulate } from "../utilities/context";
9
- import { breakPointFromJSON, breakPointToBreakPointJSON } from "../utilities/breakPoint";
10
9
  import { schemaStringFromLabelSuppositionsAndDeduction } from "../utilities/string";
11
10
  import { labelFromJSON,
12
11
  labelToLabelJSON,
@@ -17,7 +16,8 @@ import { labelFromJSON,
17
16
  constraintsToConstraintsJSON,
18
17
  suppositionsToSuppositionsJSON } from "../utilities/json";
19
18
 
20
- const { asyncForwardsEvery } = asynchronousUtilities;
19
+ const { asyncForwardsEvery } = asynchronousUtilities,
20
+ { breakPointFromJSON, breakPointToBreakPointJSON } = breakPointUtilities;
21
21
 
22
22
  export default define(class Schema extends Element {
23
23
  constructor(context, string, node, breakPoint, label, suppositions, deduction, proof, constraints) {
@@ -39,7 +39,7 @@ import { TERM_RULE_NAME,
39
39
  STATEMENT_SUBSTITUTION_RULE_NAME,
40
40
  REFERENCE_SUBSTITUTION_RULE_NAME } from "../ruleNames";
41
41
 
42
- const { ruleFromRuleName } = bnfUtilities;
42
+ const { instantiate, ruleFromRuleName } = bnfUtilities;
43
43
 
44
44
  const termPlaceholderRule = ruleFromRuleName(TERM_RULE_NAME),
45
45
  typePlaceholderRule = ruleFromRuleName(TYPE_RULE_NAME),
@@ -169,29 +169,3 @@ export function instantiateImplicitAssumption(string, context) { return instanti
169
169
  export function instantiateStatementSubstitution(string, context) { return instantiate(statementSubstitutionPlaceholderRule, string, context); }
170
170
 
171
171
  export function instantiateReferenceSubstitution(string, context) { return instantiate(referenceSubstitutionPlaceholderRule, string, context); }
172
-
173
- function instantiate(placeholderRule, string, context) {
174
- let node;
175
-
176
- const lexer = context.getLexer(),
177
- parser = context.getParser(),
178
- content = `${string}
179
- `,
180
- tokens = lexer.tokenise(content);
181
-
182
- context.setTokens(tokens);
183
-
184
- const startRule = placeholderRule; ///
185
-
186
- node = parser.parse(tokens, startRule);
187
-
188
- const nonTerminalNode = node; ///
189
-
190
- nonTerminalNode.someChildNode((childNode) => {
191
- node = childNode; ///
192
-
193
- return true;
194
- });
195
-
196
- return node;
197
- }