occam-nominal 1.0.427 → 1.0.428

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.
@@ -51,10 +51,9 @@ const _default = (0, _elements.define)(class Axiom extends _claim.default {
51
51
  const signatureVerifies = true; ///
52
52
  return continuation(signatureVerifies);
53
53
  }
54
- const axiomString = this.getString(); ///
54
+ const signature = this.getSignature(), axiomString = this.getString(); ///
55
55
  context.trace(`Verifying the '${axiomString}' axiom's signature...`);
56
- const signature = this.getSignature();
57
- signature.verify(context, (signatureVerifies)=>{
56
+ return signature.verify(context, (signatureVerifies)=>{
58
57
  if (signatureVerifies) {
59
58
  context.trace(`...verified the '${axiomString}' axiom's signature.`);
60
59
  }
@@ -158,4 +157,4 @@ const _default = (0, _elements.define)(class Axiom extends _claim.default {
158
157
  }
159
158
  });
160
159
 
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2NsYWltL2F4aW9tLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBDbGFpbSBmcm9tIFwiLi4vY2xhaW1cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyByZWNvbmNpbGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcblxuY29uc3QgeyBicmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXMsXG4gICAgICB7IGFzeW5jaHJvbm91c01hdGNoIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBBeGlvbSBleHRlbmRzIENsYWltIHtcbiAgZ2V0QXhpb21Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBheGlvbU5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBheGlvbU5vZGU7XG4gIH1cblxuICBpc1NhdGlzZmlhYmxlKCkge1xuICAgIGNvbnN0IHNpZ25hdHVyZSA9IHRoaXMuZ2V0U2lnbmF0dXJlKCksXG4gICAgICAgICAgc2F0aXNmaWFibGUgPSAoc2lnbmF0dXJlICE9PSBudWxsKTtcblxuICAgIHJldHVybiBzYXRpc2ZpYWJsZTtcbiAgfVxuXG4gIHZlcmlmeSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgYXhpb21TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbS4uLmApO1xuXG4gICAgdGhpcy52ZXJpZnlTaWduYXR1cmUoY29udGV4dCwgKHNpZ25hdHVyZVZlcmlmaWVzKSA9PiB7XG4gICAgICBpZiAoIXNpZ25hdHVyZVZlcmlmaWVzKSB7XG4gICAgICAgIGNvbnN0IHZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih2ZXJpZmllcyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLnZlcmlmeUV4KGNvbnRleHQsICh2ZXJpZmllcykgPT4ge1xuICAgICAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgICAgICBjb25zdCBheGlvbSA9IHRoaXM7IC8vL1xuXG4gICAgICAgICAgY29udGV4dC5hZGRBeGlvbShheGlvbSk7XG5cbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbS5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250aW51YXRpb24odmVyaWZpZXMsIGNvbnRleHQpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHZlcmlmeVNpZ25hdHVyZShjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBzYXRpc2ZpYWJsZSA9IHRoaXMuaXNTYXRpc2ZpYWJsZSgpO1xuXG4gICAgaWYgKCFzYXRpc2ZpYWJsZSkge1xuICAgICAgY29uc3Qgc2lnbmF0dXJlVmVyaWZpZXMgPSB0cnVlOyAvLy9cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzaWduYXR1cmVWZXJpZmllcyk7XG4gICAgfVxuXG4gICAgY29uc3QgYXhpb21TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbSdzIHNpZ25hdHVyZS4uLmApO1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlID0gdGhpcy5nZXRTaWduYXR1cmUoKTtcblxuICAgIHNpZ25hdHVyZS52ZXJpZnkoY29udGV4dCwgKHNpZ25hdHVyZVZlcmlmaWVzKSA9PiB7XG4gICAgICBpZiAoc2lnbmF0dXJlVmVyaWZpZXMpIHtcbiAgICAgICAgY29udGV4dC50cmFjZShgLi4udmVyaWZpZWQgdGhlICcke2F4aW9tU3RyaW5nfScgYXhpb20ncyBzaWduYXR1cmUuYCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oc2lnbmF0dXJlVmVyaWZpZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgdW5pZnlTaWduYXR1cmUoc2lnbmF0dXJlLCBjb250ZXh0KSB7XG4gICAgbGV0IHNpZ25hdHVyZVVuaWZpZXM7XG5cbiAgICBjb25zdCBheGlvbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIHNpZ25hdHVyZVN0cmluZyA9IHNpZ25hdHVyZS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzaWduYXR1cmVTdHJpbmd9JyBzaWduYXR1cmUgd2l0aCB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbS4uLmApO1xuXG4gICAgY29uc3Qgc3BlY2lmaWNTaWduYXR1cmUgPSBzaWduYXR1cmU7ICAvLy9cblxuICAgIHNpZ25hdHVyZSA9IHRoaXMuZ2V0U2lnbmF0dXJlKCk7XG5cbiAgICBjb25zdCBnZW5lcmFsU2lnbmF0dXJlID0gc2lnbmF0dXJlOyAvLy9cblxuICAgIHNpZ25hdHVyZVVuaWZpZXMgPSBnZW5lcmFsU2lnbmF0dXJlLnVuaWZ5U2lnbmF0dXJlKHNwZWNpZmljU2lnbmF0dXJlLCBjb250ZXh0KTtcblxuICAgIGlmIChzaWduYXR1cmVVbmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzaWduYXR1cmVTdHJpbmd9JyBzaWduYXR1cmUgd2l0aCB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2lnbmF0dXJlVW5pZmllcztcbiAgfVxuXG4gIHVuaWZ5RGVkdWN0aW9uKGRlZHVjdGlvbiwgY29udGV4dCkge1xuICAgIGxldCBkZWR1Y3Rpb25VbmlmaWVzO1xuXG4gICAgY29uc3QgYXhpb21TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICBnZW5lcmFsRGVkdWN0aW9uID0gdGhpcy5kZWR1Y3Rpb24sICAvLy9cbiAgICAgICAgICBzcGVjaWZpY0RlZHVjdGlvbiA9IGRlZHVjdGlvbiwgIC8vL1xuICAgICAgICAgIGdlbmVyYWxEZWR1Y3Rpb25TdHJpbmcgPSBnZW5lcmFsRGVkdWN0aW9uLmdldFN0cmluZygpLFxuICAgICAgICAgIHNwZWNpZmljRGVkdWN0aW9uU3RyaW5nID0gc3BlY2lmaWNEZWR1Y3Rpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3BlY2lmaWNEZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24gd2l0aCB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbSdzICcke2dlbmVyYWxEZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uLi5gKTtcblxuICAgIGNvbnN0IGdlbmVyYWxEZWR1Y3Rpb25Db250ZXh0ID0gZ2VuZXJhbERlZHVjdGlvbi5nZXRDb250ZXh0KCksXG4gICAgICAgICAgc3BlY2lmaWNEZWR1Y3Rpb25Db250ZXh0ID0gc3BlY2lmaWNEZWR1Y3Rpb24uZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gZ2VuZXJhbERlZHVjdGlvbkNvbnRleHQsIC8vL1xuICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IHNwZWNpZmljRGVkdWN0aW9uQ29udGV4dDsgLy8vXG5cbiAgICBkZWJ1Z2dlclxuXG4gICAgcmV0dXJuIHJlY29uY2lsZSgoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICBsZXQgc3RhdGVtZW50O1xuXG4gICAgICBzdGF0ZW1lbnQgPSBzcGVjaWZpY0RlZHVjdGlvbi5nZXRTdGF0ZW1lbnQoKTtcblxuICAgICAgY29uc3Qgc3BlY2lmaWNTdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7ICAvLy9cblxuICAgICAgc3RhdGVtZW50ID0gZ2VuZXJhbERlZHVjdGlvbi5nZXRTdGF0ZW1lbnQoKTtcblxuICAgICAgY29uc3QgZ2VuZXJhbFN0YXRlbWVudCA9IHN0YXRlbWVudCwgLy8vXG4gICAgICAgICAgICBzdGF0ZW1lbnRVbmlmaWVzID0gZ2VuZXJhbFN0YXRlbWVudC51bmlmeVN0YXRlbWVudChzcGVjaWZpY1N0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgIHNwZWNpZmljQ29udGV4dC5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgZGVkdWN0aW9uVW5pZmllcyA9IHRydWU7XG4gICAgICB9XG4gICAgfSwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgIGlmIChkZWR1Y3Rpb25VbmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzcGVjaWZpY0RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbiB3aXRoIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tJ3MgJyR7Z2VuZXJhbERlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVkdWN0aW9uVW5pZmllcztcbiAgfVxuXG4gIHVuaWZ5U3VwcG9zaXRpb24oc3VwcG9zaXRpb24sIGluZGV4LCBjb250ZXh0KSB7XG4gICAgbGV0IHN1cHBvc2l0aW9uVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3BlY2lmaWNTdXBwb3NpdGlvbiA9IHN1cHBvc2l0aW9uOyAgLy8vXG5cbiAgICBzdXBwb3NpdGlvbiA9IHRoaXMuZ2V0U3VwcG9zaXRpb24oaW5kZXgpO1xuXG4gICAgY29uc3QgYXhpb21TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICBnZW5lcmFsU3VwcG9zaXRpb24gPSBzdXBwb3NpdGlvbiwgIC8vL1xuICAgICAgICAgIGdlbmVyYWxTdXBwb3NpdGlvblN0cmluZyA9IGdlbmVyYWxTdXBwb3NpdGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzcGVjaWZpY1N1cHBvc2l0aW9uU3RyaW5nID0gc3BlY2lmaWNTdXBwb3NpdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzcGVjaWZpY1N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24gd2l0aCB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbSdzICcke2dlbmVyYWxTdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBnZW5lcmFsU3VwcG9zaXRpb25Db250ZXh0ID0gZ2VuZXJhbFN1cHBvc2l0aW9uLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzcGVjaWZpY1N1cHBvc2l0aW9uQ29udGV4dCA9IHNwZWNpZmljU3VwcG9zaXRpb24uZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gZ2VuZXJhbFN1cHBvc2l0aW9uQ29udGV4dCwgLy8vXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gc3BlY2lmaWNTdXBwb3NpdGlvbkNvbnRleHQ7IC8vL1xuXG4gICAgZGVidWdnZXJcblxuICAgIHJldHVybiByZWNvbmNpbGUoKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgbGV0IHN0YXRlbWVudDtcblxuICAgICAgc3RhdGVtZW50ID0gc3BlY2lmaWNTdXBwb3NpdGlvbi5nZXRTdGF0ZW1lbnQoKTtcblxuICAgICAgY29uc3Qgc3BlY2lmaWNTdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7ICAvLy9cblxuICAgICAgc3RhdGVtZW50ID0gZ2VuZXJhbFN1cHBvc2l0aW9uLmdldFN0YXRlbWVudCgpO1xuXG4gICAgICBjb25zdCBnZW5lcmFsU3RhdGVtZW50ID0gc3RhdGVtZW50LCAvLy9cbiAgICAgICAgICAgIHN0YXRlbWVudFVuaWZpZXMgPSBnZW5lcmFsU3RhdGVtZW50LnVuaWZ5U3RhdGVtZW50KHNwZWNpZmljU3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgc3BlY2lmaWNDb250ZXh0LmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICBzdXBwb3NpdGlvblVuaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH0sIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICBpZiAoc3VwcG9zaXRpb25VbmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzcGVjaWZpY1N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24gd2l0aCB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbSdzICcke2dlbmVyYWxTdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLi4uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uVW5pZmllcztcbiAgfVxuXG4gIHVuaWZ5U3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucywgY29udGV4dCkge1xuICAgIGxldCBzdXBwb3NpdGlvbnNVbmlmeTtcblxuICAgIGNvbnN0IHNwZWNpZmljU3VwcG9zaXRpb25zID0gc3VwcG9zaXRpb25zOyAgLy8vXG5cbiAgICBzdXBwb3NpdGlvbnMgPSB0aGlzLmdldFN1cHBvc2l0aW9ucygpO1xuXG4gICAgY29uc3QgZ2VuZXJhbFN1cHBvc2l0aW9ucyA9IHN1cHBvc2l0aW9uczsgLy8vXG5cbiAgICBzdXBwb3NpdGlvbnNVbmlmeSA9IGFzeW5jaHJvbm91c01hdGNoKGdlbmVyYWxTdXBwb3NpdGlvbnMsIHNwZWNpZmljU3VwcG9zaXRpb25zLCAoZ2VuZXJhbFN1cHBvc2l0aW9uLCBzcGVjaWZpY1N1cHBvc2l0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3Qgc3VwcG9zaXRpb24gPSBzcGVjaWZpY1N1cHBvc2l0aW9uLCAgLy8vXG4gICAgICAgICAgICBzdXBwb3NpdGlvblVuaWZpZXMgPSB0aGlzLnVuaWZ5U3VwcG9zaXRpb24oc3VwcG9zaXRpb24sIGluZGV4LCBjb250ZXh0KTtcblxuICAgICAgaWYgKHN1cHBvc2l0aW9uVW5pZmllcykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBzdXBwb3NpdGlvbnNVbmlmeTtcbiAgfVxuXG4gIHVuaWZ5Q2xhaW0oY2xhaW0sIGNvbnRleHQpIHtcbiAgICBsZXQgY2xhaW1VbmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBheGlvbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIGNsYWltU3RyaW5nID0gY2xhaW0uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSB3aXRoIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tLi4uYCk7XG5cbiAgICBjb25zdCBkZWR1Y3Rpb24gPSBjbGFpbS5nZXREZWR1Y3Rpb24oKSxcbiAgICAgICAgICBkZWR1Y3Rpb25VbmlmaWVzID0gdGhpcy51bmlmeURlZHVjdGlvbihkZWR1Y3Rpb24sIGNvbnRleHQpO1xuXG4gICAgaWYgKGRlZHVjdGlvblVuaWZpZXMpIHtcbiAgICAgIGNvbnN0IGh5cG90aGVzZXNEaXNjaGFyZ2VzID0gY2xhaW0uZGlzY2hhcmdlSHlwb3RoZXNlcyhjb250ZXh0KTtcblxuICAgICAgaWYgKGh5cG90aGVzZXNEaXNjaGFyZ2VzKSB7XG4gICAgICAgIGNvbnN0IHN1cHBvc2l0aW9ucyA9IGNsYWltLmdldFN1cHBvc2l0aW9ucygpLFxuICAgICAgICAgICAgICBzdXBwb3NpdGlvbnNVbmlmeSA9IHRoaXMudW5pZnlTdXBwb3NpdGlvbnMoc3VwcG9zaXRpb25zLCBjb250ZXh0KTtcblxuICAgICAgICBpZiAoc3VwcG9zaXRpb25zVW5pZnkpIHtcbiAgICAgICAgICBjbGFpbVVuaWZpZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNsYWltVW5pZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSB3aXRoIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tLmApO1xuICAgIH1cblxuICAgIHJldHVybiBjbGFpbVVuaWZpZXM7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQXhpb21cIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkgeyByZXR1cm4gQ2xhaW0uZnJvbUpTT04oQXhpb20sIGpzb24sIGNvbnRleHQpOyB9XG59KTtcbiJdLCJuYW1lcyI6WyJicmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiYXN5bmNocm9ub3VzTWF0Y2giLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJkZWZpbmUiLCJBeGlvbSIsIkNsYWltIiwiZ2V0QXhpb21Ob2RlIiwibm9kZSIsImdldE5vZGUiLCJheGlvbU5vZGUiLCJpc1NhdGlzZmlhYmxlIiwic2lnbmF0dXJlIiwiZ2V0U2lnbmF0dXJlIiwic2F0aXNmaWFibGUiLCJ2ZXJpZnkiLCJjb250ZXh0IiwiY29udGludWF0aW9uIiwiYXhpb21TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInZlcmlmeVNpZ25hdHVyZSIsInNpZ25hdHVyZVZlcmlmaWVzIiwidmVyaWZpZXMiLCJ2ZXJpZnlFeCIsImF4aW9tIiwiYWRkQXhpb20iLCJkZWJ1ZyIsInVuaWZ5U2lnbmF0dXJlIiwic2lnbmF0dXJlVW5pZmllcyIsInNpZ25hdHVyZVN0cmluZyIsInNwZWNpZmljU2lnbmF0dXJlIiwiZ2VuZXJhbFNpZ25hdHVyZSIsInVuaWZ5RGVkdWN0aW9uIiwiZGVkdWN0aW9uIiwiZGVkdWN0aW9uVW5pZmllcyIsImdlbmVyYWxEZWR1Y3Rpb24iLCJzcGVjaWZpY0RlZHVjdGlvbiIsImdlbmVyYWxEZWR1Y3Rpb25TdHJpbmciLCJzcGVjaWZpY0RlZHVjdGlvblN0cmluZyIsImdlbmVyYWxEZWR1Y3Rpb25Db250ZXh0IiwiZ2V0Q29udGV4dCIsInNwZWNpZmljRGVkdWN0aW9uQ29udGV4dCIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0IiwicmVjb25jaWxlIiwic3RhdGVtZW50IiwiZ2V0U3RhdGVtZW50Iiwic3BlY2lmaWNTdGF0ZW1lbnQiLCJnZW5lcmFsU3RhdGVtZW50Iiwic3RhdGVtZW50VW5pZmllcyIsInVuaWZ5U3RhdGVtZW50IiwiY29tbWl0IiwidW5pZnlTdXBwb3NpdGlvbiIsInN1cHBvc2l0aW9uIiwiaW5kZXgiLCJzdXBwb3NpdGlvblVuaWZpZXMiLCJzcGVjaWZpY1N1cHBvc2l0aW9uIiwiZ2V0U3VwcG9zaXRpb24iLCJnZW5lcmFsU3VwcG9zaXRpb24iLCJnZW5lcmFsU3VwcG9zaXRpb25TdHJpbmciLCJzcGVjaWZpY1N1cHBvc2l0aW9uU3RyaW5nIiwiZ2VuZXJhbFN1cHBvc2l0aW9uQ29udGV4dCIsInNwZWNpZmljU3VwcG9zaXRpb25Db250ZXh0IiwidW5pZnlTdXBwb3NpdGlvbnMiLCJzdXBwb3NpdGlvbnMiLCJzdXBwb3NpdGlvbnNVbmlmeSIsInNwZWNpZmljU3VwcG9zaXRpb25zIiwiZ2V0U3VwcG9zaXRpb25zIiwiZ2VuZXJhbFN1cHBvc2l0aW9ucyIsInVuaWZ5Q2xhaW0iLCJjbGFpbSIsImNsYWltVW5pZmllcyIsImNsYWltU3RyaW5nIiwiZ2V0RGVkdWN0aW9uIiwiaHlwb3RoZXNlc0Rpc2NoYXJnZXMiLCJkaXNjaGFyZ2VIeXBvdGhlc2VzIiwibmFtZSIsImZyb21KU09OIiwianNvbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBWUE7OztlQUFBOzs7Z0NBVjJEOzhEQUV6QzswQkFFSzt5QkFDRzs7Ozs7O0FBRTFCLE1BQU0sRUFBRUEsU0FBUyxFQUFFLEdBQUdDLG1DQUFtQixFQUNuQyxFQUFFQyxpQkFB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
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2NsYWltL2F4aW9tLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBDbGFpbSBmcm9tIFwiLi4vY2xhaW1cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyByZWNvbmNpbGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcblxuY29uc3QgeyBicmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXMsXG4gICAgICB7IGFzeW5jaHJvbm91c01hdGNoIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBBeGlvbSBleHRlbmRzIENsYWltIHtcbiAgZ2V0QXhpb21Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBheGlvbU5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBheGlvbU5vZGU7XG4gIH1cblxuICBpc1NhdGlzZmlhYmxlKCkge1xuICAgIGNvbnN0IHNpZ25hdHVyZSA9IHRoaXMuZ2V0U2lnbmF0dXJlKCksXG4gICAgICAgICAgc2F0aXNmaWFibGUgPSAoc2lnbmF0dXJlICE9PSBudWxsKTtcblxuICAgIHJldHVybiBzYXRpc2ZpYWJsZTtcbiAgfVxuXG4gIHZlcmlmeSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgYXhpb21TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbS4uLmApO1xuXG4gICAgdGhpcy52ZXJpZnlTaWduYXR1cmUoY29udGV4dCwgKHNpZ25hdHVyZVZlcmlmaWVzKSA9PiB7XG4gICAgICBpZiAoIXNpZ25hdHVyZVZlcmlmaWVzKSB7XG4gICAgICAgIGNvbnN0IHZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih2ZXJpZmllcyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLnZlcmlmeUV4KGNvbnRleHQsICh2ZXJpZmllcykgPT4ge1xuICAgICAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgICAgICBjb25zdCBheGlvbSA9IHRoaXM7IC8vL1xuXG4gICAgICAgICAgY29udGV4dC5hZGRBeGlvbShheGlvbSk7XG5cbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbS5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250aW51YXRpb24odmVyaWZpZXMsIGNvbnRleHQpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHZlcmlmeVNpZ25hdHVyZShjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBzYXRpc2ZpYWJsZSA9IHRoaXMuaXNTYXRpc2ZpYWJsZSgpO1xuXG4gICAgaWYgKCFzYXRpc2ZpYWJsZSkge1xuICAgICAgY29uc3Qgc2lnbmF0dXJlVmVyaWZpZXMgPSB0cnVlOyAvLy9cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzaWduYXR1cmVWZXJpZmllcyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2lnbmF0dXJlID0gdGhpcy5nZXRTaWduYXR1cmUoKSxcbiAgICAgICAgICBheGlvbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tJ3Mgc2lnbmF0dXJlLi4uYCk7XG5cbiAgICByZXR1cm4gc2lnbmF0dXJlLnZlcmlmeShjb250ZXh0LCAoc2lnbmF0dXJlVmVyaWZpZXMpID0+IHtcbiAgICAgIGlmIChzaWduYXR1cmVWZXJpZmllcykge1xuICAgICAgICBjb250ZXh0LnRyYWNlKGAuLi52ZXJpZmllZCB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbSdzIHNpZ25hdHVyZS5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzaWduYXR1cmVWZXJpZmllcyk7XG4gICAgfSk7XG4gIH1cblxuICB1bmlmeVNpZ25hdHVyZShzaWduYXR1cmUsIGNvbnRleHQpIHtcbiAgICBsZXQgc2lnbmF0dXJlVW5pZmllcztcblxuICAgIGNvbnN0IGF4aW9tU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAgc2lnbmF0dXJlU3RyaW5nID0gc2lnbmF0dXJlLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3NpZ25hdHVyZVN0cmluZ30nIHNpZ25hdHVyZSB3aXRoIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tLi4uYCk7XG5cbiAgICBjb25zdCBzcGVjaWZpY1NpZ25hdHVyZSA9IHNpZ25hdHVyZTsgIC8vL1xuXG4gICAgc2lnbmF0dXJlID0gdGhpcy5nZXRTaWduYXR1cmUoKTtcblxuICAgIGNvbnN0IGdlbmVyYWxTaWduYXR1cmUgPSBzaWduYXR1cmU7IC8vL1xuXG4gICAgc2lnbmF0dXJlVW5pZmllcyA9IGdlbmVyYWxTaWduYXR1cmUudW5pZnlTaWduYXR1cmUoc3BlY2lmaWNTaWduYXR1cmUsIGNvbnRleHQpO1xuXG4gICAgaWYgKHNpZ25hdHVyZVVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3NpZ25hdHVyZVN0cmluZ30nIHNpZ25hdHVyZSB3aXRoIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tLmApO1xuICAgIH1cblxuICAgIHJldHVybiBzaWduYXR1cmVVbmlmaWVzO1xuICB9XG5cbiAgdW5pZnlEZWR1Y3Rpb24oZGVkdWN0aW9uLCBjb250ZXh0KSB7XG4gICAgbGV0IGRlZHVjdGlvblVuaWZpZXM7XG5cbiAgICBjb25zdCBheGlvbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIGdlbmVyYWxEZWR1Y3Rpb24gPSB0aGlzLmRlZHVjdGlvbiwgIC8vL1xuICAgICAgICAgIHNwZWNpZmljRGVkdWN0aW9uID0gZGVkdWN0aW9uLCAgLy8vXG4gICAgICAgICAgZ2VuZXJhbERlZHVjdGlvblN0cmluZyA9IGdlbmVyYWxEZWR1Y3Rpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc3BlY2lmaWNEZWR1Y3Rpb25TdHJpbmcgPSBzcGVjaWZpY0RlZHVjdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzcGVjaWZpY0RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbiB3aXRoIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tJ3MgJyR7Z2VuZXJhbERlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi4uLmApO1xuXG4gICAgY29uc3QgZ2VuZXJhbERlZHVjdGlvbkNvbnRleHQgPSBnZW5lcmFsRGVkdWN0aW9uLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzcGVjaWZpY0RlZHVjdGlvbkNvbnRleHQgPSBzcGVjaWZpY0RlZHVjdGlvbi5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSBnZW5lcmFsRGVkdWN0aW9uQ29udGV4dCwgLy8vXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gc3BlY2lmaWNEZWR1Y3Rpb25Db250ZXh0OyAvLy9cblxuICAgIGRlYnVnZ2VyXG5cbiAgICByZXR1cm4gcmVjb25jaWxlKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgIGxldCBzdGF0ZW1lbnQ7XG5cbiAgICAgIHN0YXRlbWVudCA9IHNwZWNpZmljRGVkdWN0aW9uLmdldFN0YXRlbWVudCgpO1xuXG4gICAgICBjb25zdCBzcGVjaWZpY1N0YXRlbWVudCA9IHN0YXRlbWVudDsgIC8vL1xuXG4gICAgICBzdGF0ZW1lbnQgPSBnZW5lcmFsRGVkdWN0aW9uLmdldFN0YXRlbWVudCgpO1xuXG4gICAgICBjb25zdCBnZW5lcmFsU3RhdGVtZW50ID0gc3RhdGVtZW50LCAvLy9cbiAgICAgICAgICAgIHN0YXRlbWVudFVuaWZpZXMgPSBnZW5lcmFsU3RhdGVtZW50LnVuaWZ5U3RhdGVtZW50KHNwZWNpZmljU3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgc3BlY2lmaWNDb250ZXh0LmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICBkZWR1Y3Rpb25VbmlmaWVzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgaWYgKGRlZHVjdGlvblVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3NwZWNpZmljRGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uIHdpdGggdGhlICcke2F4aW9tU3RyaW5nfScgYXhpb20ncyAnJHtnZW5lcmFsRGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiBkZWR1Y3Rpb25VbmlmaWVzO1xuICB9XG5cbiAgdW5pZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbiwgaW5kZXgsIGNvbnRleHQpIHtcbiAgICBsZXQgc3VwcG9zaXRpb25VbmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBzcGVjaWZpY1N1cHBvc2l0aW9uID0gc3VwcG9zaXRpb247ICAvLy9cblxuICAgIHN1cHBvc2l0aW9uID0gdGhpcy5nZXRTdXBwb3NpdGlvbihpbmRleCk7XG5cbiAgICBjb25zdCBheGlvbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIGdlbmVyYWxTdXBwb3NpdGlvbiA9IHN1cHBvc2l0aW9uLCAgLy8vXG4gICAgICAgICAgZ2VuZXJhbFN1cHBvc2l0aW9uU3RyaW5nID0gZ2VuZXJhbFN1cHBvc2l0aW9uLmdldFN0cmluZygpLFxuICAgICAgICAgIHNwZWNpZmljU3VwcG9zaXRpb25TdHJpbmcgPSBzcGVjaWZpY1N1cHBvc2l0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3NwZWNpZmljU3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbiB3aXRoIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tJ3MgJyR7Z2VuZXJhbFN1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uLi5gKTtcblxuICAgIGNvbnN0IGdlbmVyYWxTdXBwb3NpdGlvbkNvbnRleHQgPSBnZW5lcmFsU3VwcG9zaXRpb24uZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHNwZWNpZmljU3VwcG9zaXRpb25Db250ZXh0ID0gc3BlY2lmaWNTdXBwb3NpdGlvbi5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSBnZW5lcmFsU3VwcG9zaXRpb25Db250ZXh0LCAvLy9cbiAgICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBzcGVjaWZpY1N1cHBvc2l0aW9uQ29udGV4dDsgLy8vXG5cbiAgICBkZWJ1Z2dlclxuXG4gICAgcmV0dXJuIHJlY29uY2lsZSgoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICBsZXQgc3RhdGVtZW50O1xuXG4gICAgICBzdGF0ZW1lbnQgPSBzcGVjaWZpY1N1cHBvc2l0aW9uLmdldFN0YXRlbWVudCgpO1xuXG4gICAgICBjb25zdCBzcGVjaWZpY1N0YXRlbWVudCA9IHN0YXRlbWVudDsgIC8vL1xuXG4gICAgICBzdGF0ZW1lbnQgPSBnZW5lcmFsU3VwcG9zaXRpb24uZ2V0U3RhdGVtZW50KCk7XG5cbiAgICAgIGNvbnN0IGdlbmVyYWxTdGF0ZW1lbnQgPSBzdGF0ZW1lbnQsIC8vL1xuICAgICAgICAgICAgc3RhdGVtZW50VW5pZmllcyA9IGdlbmVyYWxTdGF0ZW1lbnQudW5pZnlTdGF0ZW1lbnQoc3BlY2lmaWNTdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICBpZiAoc3RhdGVtZW50VW5pZmllcykge1xuICAgICAgICBzcGVjaWZpY0NvbnRleHQuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgIHN1cHBvc2l0aW9uVW5pZmllcyA9IHRydWU7XG4gICAgICB9XG4gICAgfSwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgIGlmIChzdXBwb3NpdGlvblVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3NwZWNpZmljU3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbiB3aXRoIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tJ3MgJyR7Z2VuZXJhbFN1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uLi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb25VbmlmaWVzO1xuICB9XG5cbiAgdW5pZnlTdXBwb3NpdGlvbnMoc3VwcG9zaXRpb25zLCBjb250ZXh0KSB7XG4gICAgbGV0IHN1cHBvc2l0aW9uc1VuaWZ5O1xuXG4gICAgY29uc3Qgc3BlY2lmaWNTdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnM7ICAvLy9cblxuICAgIHN1cHBvc2l0aW9ucyA9IHRoaXMuZ2V0U3VwcG9zaXRpb25zKCk7XG5cbiAgICBjb25zdCBnZW5lcmFsU3VwcG9zaXRpb25zID0gc3VwcG9zaXRpb25zOyAvLy9cblxuICAgIHN1cHBvc2l0aW9uc1VuaWZ5ID0gYXN5bmNocm9ub3VzTWF0Y2goZ2VuZXJhbFN1cHBvc2l0aW9ucywgc3BlY2lmaWNTdXBwb3NpdGlvbnMsIChnZW5lcmFsU3VwcG9zaXRpb24sIHNwZWNpZmljU3VwcG9zaXRpb24sIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBzdXBwb3NpdGlvbiA9IHNwZWNpZmljU3VwcG9zaXRpb24sICAvLy9cbiAgICAgICAgICAgIHN1cHBvc2l0aW9uVW5pZmllcyA9IHRoaXMudW5pZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbiwgaW5kZXgsIGNvbnRleHQpO1xuXG4gICAgICBpZiAoc3VwcG9zaXRpb25VbmlmaWVzKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uc1VuaWZ5O1xuICB9XG5cbiAgdW5pZnlDbGFpbShjbGFpbSwgY29udGV4dCkge1xuICAgIGxldCBjbGFpbVVuaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGF4aW9tU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAgY2xhaW1TdHJpbmcgPSBjbGFpbS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltIHdpdGggdGhlICcke2F4aW9tU3RyaW5nfScgYXhpb20uLi5gKTtcblxuICAgIGNvbnN0IGRlZHVjdGlvbiA9IGNsYWltLmdldERlZHVjdGlvbigpLFxuICAgICAgICAgIGRlZHVjdGlvblVuaWZpZXMgPSB0aGlzLnVuaWZ5RGVkdWN0aW9uKGRlZHVjdGlvbiwgY29udGV4dCk7XG5cbiAgICBpZiAoZGVkdWN0aW9uVW5pZmllcykge1xuICAgICAgY29uc3QgaHlwb3RoZXNlc0Rpc2NoYXJnZXMgPSBjbGFpbS5kaXNjaGFyZ2VIeXBvdGhlc2VzKGNvbnRleHQpO1xuXG4gICAgICBpZiAoaHlwb3RoZXNlc0Rpc2NoYXJnZXMpIHtcbiAgICAgICAgY29uc3Qgc3VwcG9zaXRpb25zID0gY2xhaW0uZ2V0U3VwcG9zaXRpb25zKCksXG4gICAgICAgICAgICAgIHN1cHBvc2l0aW9uc1VuaWZ5ID0gdGhpcy51bmlmeVN1cHBvc2l0aW9ucyhzdXBwb3NpdGlvbnMsIGNvbnRleHQpO1xuXG4gICAgICAgIGlmIChzdXBwb3NpdGlvbnNVbmlmeSkge1xuICAgICAgICAgIGNsYWltVW5pZmllcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2xhaW1VbmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltIHdpdGggdGhlICcke2F4aW9tU3RyaW5nfScgYXhpb20uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsYWltVW5pZmllcztcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJBeGlvbVwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7IHJldHVybiBDbGFpbS5mcm9tSlNPTihBeGlvbSwganNvbiwgY29udGV4dCk7IH1cbn0pO1xuIl0sIm5hbWVzIjpbImJyZWFrYWJsZSIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJhc3luY2hyb25vdXNNYXRjaCIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImRlZmluZSIsIkF4aW9tIiwiQ2xhaW0iLCJnZXRBeGlvbU5vZGUiLCJub2RlIiwiZ2V0Tm9kZSIsImF4aW9tTm9kZSIsImlzU2F0aXNmaWFibGUiLCJzaWduYXR1cmUiLCJnZXRTaWduYXR1cmUiLCJzYXRpc2ZpYWJsZSIsInZlcmlmeSIsImNvbnRleHQiLCJjb250aW51YXRpb24iLCJheGlvbVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwidmVyaWZ5U2lnbmF0dXJlIiwic2lnbmF0dXJlVmVyaWZpZXMiLCJ2ZXJpZmllcyIsInZlcmlmeUV4IiwiYXhpb20iLCJhZGRBeGlvbSIsImRlYnVnIiwidW5pZnlTaWduYXR1cmUiLCJzaWduYXR1cmVVbmlmaWVzIiwic2lnbmF0dXJlU3RyaW5nIiwic3BlY2lmaWNTaWduYXR1cmUiLCJnZW5lcmFsU2lnbmF0dXJlIiwidW5pZnlEZWR1Y3Rpb24iLCJkZWR1Y3Rpb24iLCJkZWR1Y3Rpb25VbmlmaWVzIiwiZ2VuZXJhbERlZHVjdGlvbiIsInNwZWNpZmljRGVkdWN0aW9uIiwiZ2VuZXJhbERlZHVjdGlvblN0cmluZyIsInNwZWNpZmljRGVkdWN0aW9uU3RyaW5nIiwiZ2VuZXJhbERlZHVjdGlvbkNvbnRleHQiLCJnZXRDb250ZXh0Iiwic3BlY2lmaWNEZWR1Y3Rpb25Db250ZXh0IiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJyZWNvbmNpbGUiLCJzdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJzcGVjaWZpY1N0YXRlbWVudCIsImdlbmVyYWxTdGF0ZW1lbnQiLCJzdGF0ZW1lbnRVbmlmaWVzIiwidW5pZnlTdGF0ZW1lbnQiLCJjb21taXQiLCJ1bmlmeVN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb24iLCJpbmRleCIsInN1cHBvc2l0aW9uVW5pZmllcyIsInNwZWNpZmljU3VwcG9zaXRpb24iLCJnZXRTdXBwb3NpdGlvbiIsImdlbmVyYWxTdXBwb3NpdGlvbiIsImdlbmVyYWxTdXBwb3NpdGlvblN0cmluZyIsInNwZWNpZmljU3VwcG9zaXRpb25TdHJpbmciLCJnZW5lcmFsU3VwcG9zaXRpb25Db250ZXh0Iiwic3BlY2lmaWNTdXBwb3NpdGlvbkNvbnRleHQiLCJ1bmlmeVN1cHBvc2l0aW9ucyIsInN1cHBvc2l0aW9ucyIsInN1cHBvc2l0aW9uc1VuaWZ5Iiwic3BlY2lmaWNTdXBwb3NpdGlvbnMiLCJnZXRTdXBwb3NpdGlvbnMiLCJnZW5lcmFsU3VwcG9zaXRpb25zIiwidW5pZnlDbGFpbSIsImNsYWltIiwiY2xhaW1VbmlmaWVzIiwiY2xhaW1TdHJpbmciLCJnZXREZWR1Y3Rpb24iLCJoeXBvdGhlc2VzRGlzY2hhcmdlcyIsImRpc2NoYXJnZUh5cG90aGVzZXMiLCJuYW1lIiwiZnJvbUpTT04iLCJqc29uIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFZQTs7O2VBQUE7OztnQ0FWMkQ7OERBRXpDOzBCQUVLO3lCQUNHOzs7Ozs7QUFFMUIsTUFBTSxFQUFFQSxTQUFTLEVBQUUsR0FBR0MsbUNBQW1CLEVBQ25DLEVBQUVD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
@@ -11,10 +11,11 @@ Object.defineProperty(exports, "default", {
11
11
  const _necessary = require("necessary");
12
12
  const _occamlanguages = require("occam-languages");
13
13
  const _elements = require("../elements");
14
+ const _state = require("../utilities/state");
15
+ const _continuation = require("../utilities/continuation");
14
16
  const _instantiate = require("../process/instantiate");
15
17
  const _element = require("../utilities/element");
16
18
  const _context = require("../utilities/context");
17
- const _continuation = require("../utilities/continuation");
18
19
  const { match } = _necessary.arrayUtilities, { asynchronousEvery } = _occamlanguages.continuationUtilities, { breakPointFromJSON, breakPointToBreakPointJSON } = _occamlanguages.breakPointUtilities;
19
20
  const _default = (0, _elements.define)(class Signature extends _occamlanguages.Element {
20
21
  constructor(context, string, node, breakPoint, terms){
@@ -48,33 +49,31 @@ const _default = (0, _elements.define)(class Signature extends _occamlanguages.E
48
49
  const signatureNode = this.getSignatureNode(), signature = context.findSignatureBySignatureNode(signatureNode);
49
50
  return signature;
50
51
  }
51
- verify(context) {
52
+ verify(context, continuation) {
52
53
  let verifies = false;
53
54
  const signatureString = this.getString(); ///
54
55
  context.trace(`Verifying the '${signatureString}' signature...`);
55
- debugger;
56
- const termsValidate = this.validateTerms(context);
57
- if (termsValidate !== null) {
58
- verifies = true;
59
- }
60
- if (verifies) {
61
- this.commit(context);
62
- }
56
+ (0, _state.declare)((state)=>{
57
+ const validates = this.validate(state, context, (conclusion, context)=>true);
58
+ if (validates) {
59
+ verifies = true;
60
+ }
61
+ });
63
62
  if (verifies) {
64
- context.debug(`...validated the '${signatureString}' signature.`);
63
+ context.debug(`...verified the '${signatureString}' signature.`);
65
64
  }
66
- return verifies;
65
+ return continuation(verifies, context);
67
66
  }
68
- validate(state1, context, continuation) {
67
+ validate(state, context, continuation) {
69
68
  let validates;
70
- const specificContext = context, signatureString = this.getString(); ///
69
+ const specificContext = context, signatureString = this.getString();
71
70
  context.trace(`Validating the '${signatureString}' signature...`);
72
71
  const signature = this; ///
73
72
  (0, _context.attempt)((context)=>{
74
73
  const validateTerms = this.validateTerms.bind(this);
75
74
  validates = (0, _continuation.all)([
76
75
  validateTerms
77
- ], state1, context, (state1, context)=>{
76
+ ], state, context, (state, context)=>{
78
77
  let validates;
79
78
  this.commit(context);
80
79
  context = specificContext; ///
@@ -88,31 +87,44 @@ const _default = (0, _elements.define)(class Signature extends _occamlanguages.E
88
87
  }
89
88
  return validates;
90
89
  }
91
- validateTerms(context) {
90
+ validateTerms(state, context, continuation) {
92
91
  let termsValidate;
93
92
  const signatureString = this.getString(); ///
94
93
  context.trace(`Validating the '${signatureString}' signature's terms...`);
95
- const terms = [];
96
- termsValidate = asynchronousEvery(this.terms, (term)=>{
97
- term = term.validate(state, context, (term, context)=>{
98
- const validatesForwards = true;
99
- return validatesForwards;
100
- });
101
- if (term !== null) {
102
- terms.push(term);
103
- return true;
94
+ const terms = [], validateTerm = this.validateTerm.bind(this);
95
+ termsValidate = (0, _continuation.every)(this.terms, validateTerm, terms, state, context, (state, context)=>{
96
+ let termsValidate;
97
+ termsValidate = continuation(state, context);
98
+ if (termsValidate) {
99
+ this.terms = terms;
104
100
  }
101
+ return termsValidate;
105
102
  });
106
- if (termsValidate) {
107
- this.terms = terms;
108
- }
109
103
  if (termsValidate) {
110
104
  context.debug(`...validated the '${signatureString}' signature's terms.`);
111
105
  }
112
106
  return termsValidate;
113
107
  }
108
+ validateTerm(term, terms, state, context, continuation) {
109
+ let termValidates;
110
+ const termString = term.getString(), signatureString = this.getString(); ///
111
+ context.trace(`Validating the '${signatureString}' signature's '${termString}' term...`);
112
+ termValidates = term.validate(state, context, (term, context)=>{
113
+ let validates;
114
+ validates = continuation(terms, state, context);
115
+ if (validates) {
116
+ terms.push(term);
117
+ }
118
+ return validates;
119
+ });
120
+ if (termValidates) {
121
+ context.debug(`...validated the '${signatureString}' signature's '${termString}' term.`);
122
+ }
123
+ return termValidates;
124
+ }
114
125
  unifySignature(signature, context) {
115
126
  let signatureUnifies;
127
+ debugger;
116
128
  const generalSignature = this, specificSignature = signature, generalSignatureString = generalSignature.getString(), specificSignatureString = specificSignature.getString();
117
129
  context.trace(`Unifying the '${specificSignatureString}' signature with the '${generalSignatureString}' signature...`);
118
130
  const generalSignatureTerms = generalSignature.getTerms(), specificSignatureTerms = specificSignature.getTerms(), generalSignatureContext = generalSignature.getContext(), specificSignatureContext = specificSignature.getContext(), generalTerms = generalSignatureTerms, specificTerms = specificSignatureTerms, generalContext = generalSignatureContext, specificContext = specificSignatureContext; ///
@@ -180,4 +192,4 @@ function termsFromSignatureNode(signatureNode, context) {
180
192
  return terms;
181
193
  }
182
194
 
183
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3NpZ25hdHVyZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVTaWduYXR1cmUgfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgc2lnbmF0dXJlRnJvbVNpZ25hdHVyZU5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcbmltcG9ydCB7IGFibGF0ZSwgYXR0ZW1wdCwgcmVjb25jaWxlLCBzZXJpYWxpc2UsIHVuc2VyaWFsaXNlLCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHthbGx9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGludWF0aW9uXCI7XG5cbmNvbnN0IHsgbWF0Y2ggfSA9IGFycmF5VXRpbGl0aWVzLFxuICAgICAgeyBhc3luY2hyb25vdXNFdmVyeSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyBicmVha1BvaW50RnJvbUpTT04sIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgU2lnbmF0dXJlIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybXMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy50ZXJtcyA9IHRlcm1zO1xuICB9XG5cbiAgZ2V0VGVybXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudGVybXM7XG4gIH1cblxuICBnZXRTaWduYXR1cmVOb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBzaWduYXR1cmVOb2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gc2lnbmF0dXJlTm9kZTtcbiAgfVxuXG4gIGdldExlbmd0aCgpIHtcbiAgICBjb25zdCB0ZXJtc0xlbmd0aCA9IHRoaXMudGVybXMubGVuZ3RoLFxuICAgICAgICAgIGxlbmd0aCA9IHRlcm1zTGVuZ3RoOyAvLy9cblxuICAgIHJldHVybiBsZW5ndGg7XG4gIH1cblxuICBnZXRUZXJtKGluZGV4KSB7XG4gICAgY29uc3QgdGVybSA9IHRoaXMudGVybXNbaW5kZXhdO1xuXG4gICAgcmV0dXJuIHRlcm07XG4gIH1cblxuICBpc0VxdWFsVG8oc2lnbmF0dXJlKSB7XG4gICAgY29uc3Qgc2lnbmF0dXJlTm9kZSA9IHNpZ25hdHVyZS5nZXROb2RlKCksXG4gICAgICAgICAgc2lnbmF0dXJlTm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoU2lnbmF0dXJlTm9kZShzaWduYXR1cmVOb2RlKSxcbiAgICAgICAgICBlcXVhbFRvID0gc2lnbmF0dXJlTm9kZU1hdGNoZXM7ICAvLy9cblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgbWF0Y2hTaWduYXR1cmVOb2RlKHNpZ25hdHVyZU5vZGUpIHtcbiAgICBjb25zdCBub2RlID0gc2lnbmF0dXJlTm9kZSwgLy8vXG4gICAgICAgICAgbm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoTm9kZShub2RlKSxcbiAgICAgICAgICBzaWduYXR1cmVOb2RlTWF0Y2hlcyA9IG5vZGVNYXRjaGVzOyAvLy9cblxuICAgIHJldHVybiBzaWduYXR1cmVOb2RlTWF0Y2hlcztcbiAgfVxuXG4gIGZpbmRTaWduYXR1cmUoY29udGV4dCkge1xuICAgIGNvbnN0IHNpZ25hdHVyZU5vZGUgPSB0aGlzLmdldFNpZ25hdHVyZU5vZGUoKSxcbiAgICAgICAgICBzaWduYXR1cmUgPSBjb250ZXh0LmZpbmRTaWduYXR1cmVCeVNpZ25hdHVyZU5vZGUoc2lnbmF0dXJlTm9kZSk7XG5cbiAgICByZXR1cm4gc2lnbmF0dXJlO1xuICB9XG5cbiAgdmVyaWZ5KGNvbnRleHQpIHtcbiAgICBsZXQgdmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHNpZ25hdHVyZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlLi4uYCk7XG5cbiAgICBkZWJ1Z2dlclxuXG4gICAgY29uc3QgdGVybXNWYWxpZGF0ZSA9IHRoaXMudmFsaWRhdGVUZXJtcyhjb250ZXh0KTtcblxuICAgIGlmICh0ZXJtc1ZhbGlkYXRlICE9PSBudWxsKSB7XG4gICAgICB2ZXJpZmllcyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHZlcmlmaWVzKSB7XG4gICAgICB0aGlzLmNvbW1pdChjb250ZXh0KTtcbiAgICB9XG5cbiAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJpZmllcztcbiAgfVxuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgY29uc3Qgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dCwgIC8vL1xuICAgICAgICAgIHNpZ25hdHVyZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlLi4uYCk7XG5cbiAgICBjb25zdCBzaWduYXR1cmUgPSB0aGlzOyAgLy8vXG5cbiAgICBhdHRlbXB0KChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0ZVRlcm1zID0gdGhpcy52YWxpZGF0ZVRlcm1zLmJpbmQodGhpcyk7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGFsbChbXG4gICAgICAgIHZhbGlkYXRlVGVybXNcbiAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgICB0aGlzLmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHNpZ25hdHVyZSwgY29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICAgIH0pO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzaWduYXR1cmVTdHJpbmd9JyBzaWduYXR1cmUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlVGVybXMoY29udGV4dCkge1xuICAgIGxldCB0ZXJtc1ZhbGlkYXRlO1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlJ3MgdGVybXMuLi5gKTtcblxuICAgIGNvbnN0IHRlcm1zID0gW107XG5cbiAgICB0ZXJtc1ZhbGlkYXRlID0gYXN5bmNocm9ub3VzRXZlcnkodGhpcy50ZXJtcywgKHRlcm0pID0+IHtcbiAgICAgIHRlcm0gPSB0ZXJtLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCkgPT4geyAvLy9cbiAgICAgICAgY29uc3QgdmFsaWRhdGVzRm9yd2FyZHMgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiB2YWxpZGF0ZXNGb3J3YXJkcztcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGVybSAhPT0gbnVsbCkge1xuICAgICAgICB0ZXJtcy5wdXNoKHRlcm0pO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHRlcm1zVmFsaWRhdGUpIHtcbiAgICAgIHRoaXMudGVybXMgPSB0ZXJtcztcbiAgICB9XG5cbiAgICBpZiAodGVybXNWYWxpZGF0ZSl7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NpZ25hdHVyZVN0cmluZ30nIHNpZ25hdHVyZSdzIHRlcm1zLmApO1xuICAgIH1cblxuICAgIHJldHVybiB0ZXJtc1ZhbGlkYXRlXG4gIH1cblxuICB1bmlmeVNpZ25hdHVyZShzaWduYXR1cmUsIGNvbnRleHQpIHtcbiAgICBsZXQgc2lnbmF0dXJlVW5pZmllcztcblxuICAgIGNvbnN0IGdlbmVyYWxTaWduYXR1cmUgPSB0aGlzLCAgLy8vXG4gICAgICAgICAgc3BlY2lmaWNTaWduYXR1cmUgPSBzaWduYXR1cmUsICAvLy9cbiAgICAgICAgICBnZW5lcmFsU2lnbmF0dXJlU3RyaW5nID0gZ2VuZXJhbFNpZ25hdHVyZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzcGVjaWZpY1NpZ25hdHVyZVN0cmluZyA9IHNwZWNpZmljU2lnbmF0dXJlLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3NwZWNpZmljU2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlIHdpdGggdGhlICcke2dlbmVyYWxTaWduYXR1cmVTdHJpbmd9JyBzaWduYXR1cmUuLi5gKTtcblxuICAgIGNvbnN0IGdlbmVyYWxTaWduYXR1cmVUZXJtcyA9IGdlbmVyYWxTaWduYXR1cmUuZ2V0VGVybXMoKSxcbiAgICAgICAgICBzcGVjaWZpY1NpZ25hdHVyZVRlcm1zID0gc3BlY2lmaWNTaWduYXR1cmUuZ2V0VGVybXMoKSxcbiAgICAgICAgICBnZW5lcmFsU2lnbmF0dXJlQ29udGV4dCA9IGdlbmVyYWxTaWduYXR1cmUuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHNwZWNpZmljU2lnbmF0dXJlQ29udGV4dCA9IHNwZWNpZmljU2lnbmF0dXJlLmdldENvbnRleHQoKSxcbiAgICAgICAgICBnZW5lcmFsVGVybXMgPSBnZW5lcmFsU2lnbmF0dXJlVGVybXMsICAvLy9cbiAgICAgICAgICBzcGVjaWZpY1Rlcm1zID0gc3BlY2lmaWNTaWduYXR1cmVUZXJtcywgLy8vXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSBnZW5lcmFsU2lnbmF0dXJlQ29udGV4dCwgLy8vXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gc3BlY2lmaWNTaWduYXR1cmVDb250ZXh0OyAgLy8vXG5cbiAgICBkZWJ1Z2dlclxuXG4gICAgc2lnbmF0dXJlVW5pZmllcyA9IHJlY29uY2lsZSgoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICBtYXRjaChnZW5lcmFsVGVybXMsIHNwZWNpZmljVGVybXMsIChnZW5lcmFsVGVybSwgc3BlY2lmaWNUZXJtKSA9PiB7XG4gICAgICAgIGxldCB0ZXJtVW5pZmllcztcblxuICAgICAgICB0ZXJtVW5pZmllcyA9IGdlbmVyYWxUZXJtLnVuaWZ5VGVybShzcGVjaWZpY1Rlcm0sIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICAgIGlmICh0ZXJtVW5pZmllcykge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKHNpZ25hdHVyZVVuaWZpZXMpIHtcbiAgICAgICAgc3BlY2lmaWNDb250ZXh0LmNvbW1pdChjb250ZXh0KTtcbiAgICAgIH1cbiAgICB9LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgaWYgKHNpZ25hdHVyZVVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3NwZWNpZmljU2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlIHdpdGggdGhlICcke2dlbmVyYWxTaWduYXR1cmVTdHJpbmd9JyBzaWduYXR1cmUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNpZ25hdHVyZVVuaWZpZXM7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgcmV0dXJuIHNlcmlhbGlzZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3Qgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSB0aGlzLmdldEJyZWFrUG9pbnQoKTtcblxuICAgICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICAgIGNvbnN0IGpzb24gPSB7XG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIHN0cmluZyxcbiAgICAgICAgYnJlYWtQb2ludFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGpzb247XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiU2lnbmF0dXJlXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgc2lnbmF0dXJlO1xuXG4gICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIHVuc2VyaWFsaXNlKChqc29uLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgICBzaWduYXR1cmVOb2RlID0gaW5zdGFudGlhdGVTaWduYXR1cmUoc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IHNpZ25hdHVyZU5vZGUsICAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgICAgdGVybXMgPSB0ZXJtc0Zyb21TaWduYXR1cmVOb2RlKHNpZ25hdHVyZU5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIHNpZ25hdHVyZSA9IG5ldyBTaWduYXR1cmUoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtcyk7XG4gICAgICB9LCBqc29uLCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzaWduYXR1cmU7XG4gIH1cblxuICBzdGF0aWMgZnJvbVNpZ25hdHVyZVN0cmluZyhzaWduYXR1cmVTdHJpbmcsIGNvbnRleHQpIHtcbiAgICBsZXQgc2lnbmF0dXJlO1xuXG4gICAgYWJsYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBzdHJpbmcgPSBzaWduYXR1cmVTdHJpbmcsICAvLy9cbiAgICAgICAgICAgICAgc2lnbmF0dXJlTm9kZSA9IGluc3RhbnRpYXRlU2lnbmF0dXJlKHN0cmluZywgY29udGV4dCk7XG5cbiAgICAgICAgc2lnbmF0dXJlID0gc2lnbmF0dXJlRnJvbVNpZ25hdHVyZU5vZGUoc2lnbmF0dXJlTm9kZSwgY29udGV4dCk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzaWduYXR1cmU7XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiB0ZXJtc0Zyb21TaWduYXR1cmVOb2RlKHNpZ25hdHVyZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdGVybU5vZGVzID0gc2lnbmF0dXJlTm9kZS5nZXRUZXJtTm9kZXMoKSxcbiAgICAgICAgdGVybXMgPSB0ZXJtTm9kZXMubWFwKCh0ZXJtTm9kZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRlcm0gPSBjb250ZXh0LmZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSk7XG5cbiAgICAgICAgICByZXR1cm4gdGVybTtcbiAgICAgICAgfSk7XG5cbiAgcmV0dXJuIHRlcm1zO1xufVxuIl0sIm5hbWVzIjpbIm1hdGNoIiwiYXJyYXlVdGlsaXRpZXMiLCJhc3luY2hyb25vdXNFdmVyeSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIlNpZ25hdHVyZSIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJ0ZXJtcyIsImdldFRlcm1zIiwiZ2V0U2lnbmF0dXJlTm9kZSIsImdldE5vZGUiLCJzaWduYXR1cmVOb2RlIiwiZ2V0TGVuZ3RoIiwidGVybXNMZW5ndGgiLCJsZW5ndGgiLCJnZXRUZXJtIiwiaW5kZXgiLCJ0ZXJtIiwiaXNFcXVhbFRvIiwic2lnbmF0dXJlIiwic2lnbmF0dXJlTm9kZU1hdGNoZXMiLCJtYXRjaFNpZ25hdHVyZU5vZGUiLCJlcXVhbFRvIiwibm9kZU1hdGNoZXMiLCJtYXRjaE5vZGUiLCJmaW5kU2lnbmF0dXJlIiwiZmluZFNpZ25hdHVyZUJ5U2lnbmF0dXJlTm9kZSIsInZlcmlmeSIsInZlcmlmaWVzIiwic2lnbmF0dXJlU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJ0ZXJtc1ZhbGlkYXRlIiwidmFsaWRhdGVUZXJtcyIsImNvbW1pdCIsImRlYnVnIiwidmFsaWRhdGUiLCJzdGF0ZSIsImNvbnRpbnVhdGlvbiIsInZhbGlkYXRlcyIsInNwZWNpZmljQ29udGV4dCIsImF0dGVtcHQiLCJiaW5kIiwiYWxsIiwidmFsaWRhdGVzRm9yd2FyZHMiLCJwdXNoIiwidW5pZnlTaWduYXR1cmUiLCJzaWduYXR1cmVVbmlmaWVzIiwiZ2VuZXJhbFNpZ25hdHVyZSIsInNwZWNpZmljU2lnbmF0dXJlIiwiZ2VuZXJhbFNpZ25hdHVyZVN0cmluZyIsInNwZWNpZmljU2lnbmF0dXJlU3RyaW5nIiwiZ2VuZXJhbFNpZ25hdHVyZVRlcm1zIiwic3BlY2lmaWNTaWduYXR1cmVUZXJtcyIsImdlbmVyYWxTaWduYXR1cmVDb250ZXh0IiwiZ2V0Q29udGV4dCIsInNwZWNpZmljU2lnbmF0dXJlQ29udGV4dCIsImdlbmVyYWxUZXJtcyIsInNwZWNpZmljVGVybXMiLCJnZW5lcmFsQ29udGV4dCIsInJlY29uY2lsZSIsImdlbmVyYWxUZXJtIiwic3BlY2lmaWNUZXJtIiwidGVybVVuaWZpZXMiLCJ1bmlmeVRlcm0iLCJ0b0pTT04iLCJzZXJpYWxpc2UiLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJqc29uIiwibmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJ1bnNlcmlhbGlzZSIsImluc3RhbnRpYXRlU2lnbmF0dXJlIiwidGVybXNGcm9tU2lnbmF0dXJlTm9kZSIsImZyb21TaWduYXR1cmVTdHJpbmciLCJhYmxhdGUiLCJzaWduYXR1cmVGcm9tU2lnbmF0dXJlTm9kZSIsInRlcm1Ob2RlcyIsImdldFRlcm1Ob2RlcyIsIm1hcCIsInRlcm1Ob2RlIiwiZmluZFRlcm1CeVRlcm1Ob2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFlQTs7O2VBQUE7OzsyQkFiK0I7Z0NBQ3FDOzBCQUU3Qzs2QkFDYzt5QkFDTTt5QkFDcUM7OEJBQzlEO0FBRWxCLE1BQU0sRUFBRUEsS0FBSyxFQUFFLEdBQUdDLHlCQUFjLEVBQzFCLEVBQUVDLGlCQUFpQixFQUFFLEdBQUdDLHFDQUFxQixFQUM3QyxFQUFFQyxrQkFBa0IsRUFBRUMsMEJBQTBCLEVBQUUsR0FBR0MsbUNBQW1CO01BRTlFLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsa0JBQWtCQyx1QkFBTztJQUNuRCxZQUFZQyxP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
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3NpZ25hdHVyZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZGVjbGFyZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7IGFsbCwgZXZlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRpbnVhdGlvblwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVTaWduYXR1cmUgfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgc2lnbmF0dXJlRnJvbVNpZ25hdHVyZU5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcbmltcG9ydCB7IGFibGF0ZSwgYXR0ZW1wdCwgcmVjb25jaWxlLCBzZXJpYWxpc2UsIHVuc2VyaWFsaXNlLCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5jb25zdCB7IG1hdGNoIH0gPSBhcnJheVV0aWxpdGllcyxcbiAgICAgIHsgYXN5bmNocm9ub3VzRXZlcnkgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgYnJlYWtQb2ludEZyb21KU09OLCBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFNpZ25hdHVyZSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm1zKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMudGVybXMgPSB0ZXJtcztcbiAgfVxuXG4gIGdldFRlcm1zKCkge1xuICAgIHJldHVybiB0aGlzLnRlcm1zO1xuICB9XG5cbiAgZ2V0U2lnbmF0dXJlTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgc2lnbmF0dXJlTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZU5vZGU7XG4gIH1cblxuICBnZXRMZW5ndGgoKSB7XG4gICAgY29uc3QgdGVybXNMZW5ndGggPSB0aGlzLnRlcm1zLmxlbmd0aCxcbiAgICAgICAgICBsZW5ndGggPSB0ZXJtc0xlbmd0aDsgLy8vXG5cbiAgICByZXR1cm4gbGVuZ3RoO1xuICB9XG5cbiAgZ2V0VGVybShpbmRleCkge1xuICAgIGNvbnN0IHRlcm0gPSB0aGlzLnRlcm1zW2luZGV4XTtcblxuICAgIHJldHVybiB0ZXJtO1xuICB9XG5cbiAgaXNFcXVhbFRvKHNpZ25hdHVyZSkge1xuICAgIGNvbnN0IHNpZ25hdHVyZU5vZGUgPSBzaWduYXR1cmUuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHNpZ25hdHVyZU5vZGVNYXRjaGVzID0gdGhpcy5tYXRjaFNpZ25hdHVyZU5vZGUoc2lnbmF0dXJlTm9kZSksXG4gICAgICAgICAgZXF1YWxUbyA9IHNpZ25hdHVyZU5vZGVNYXRjaGVzOyAgLy8vXG5cbiAgICByZXR1cm4gZXF1YWxUbztcbiAgfVxuXG4gIG1hdGNoU2lnbmF0dXJlTm9kZShzaWduYXR1cmVOb2RlKSB7XG4gICAgY29uc3Qgbm9kZSA9IHNpZ25hdHVyZU5vZGUsIC8vL1xuICAgICAgICAgIG5vZGVNYXRjaGVzID0gdGhpcy5tYXRjaE5vZGUobm9kZSksXG4gICAgICAgICAgc2lnbmF0dXJlTm9kZU1hdGNoZXMgPSBub2RlTWF0Y2hlczsgLy8vXG5cbiAgICByZXR1cm4gc2lnbmF0dXJlTm9kZU1hdGNoZXM7XG4gIH1cblxuICBmaW5kU2lnbmF0dXJlKGNvbnRleHQpIHtcbiAgICBjb25zdCBzaWduYXR1cmVOb2RlID0gdGhpcy5nZXRTaWduYXR1cmVOb2RlKCksXG4gICAgICAgICAgc2lnbmF0dXJlID0gY29udGV4dC5maW5kU2lnbmF0dXJlQnlTaWduYXR1cmVOb2RlKHNpZ25hdHVyZU5vZGUpO1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZTtcbiAgfVxuXG4gIHZlcmlmeShjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHNpZ25hdHVyZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzaWduYXR1cmVTdHJpbmd9JyBzaWduYXR1cmUuLi5gKTtcblxuICAgIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0ZXMgPSB0aGlzLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoY29uY2x1c2lvbiwgY29udGV4dCkgPT4gdHJ1ZSk7XG5cbiAgICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgICAgdmVyaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHZlcmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlLmApO1xuICAgIH1cblxuICAgIHJldHVybiBjb250aW51YXRpb24odmVyaWZpZXMsIGNvbnRleHQpO1xuICB9XG5cbiAgdmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICBjb25zdCBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0LCAgLy8vXG4gICAgICAgICAgc2lnbmF0dXJlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NpZ25hdHVyZVN0cmluZ30nIHNpZ25hdHVyZS4uLmApO1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlID0gdGhpczsgIC8vL1xuXG4gICAgYXR0ZW1wdCgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdGVUZXJtcyA9IHRoaXMudmFsaWRhdGVUZXJtcy5iaW5kKHRoaXMpO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBhbGwoW1xuICAgICAgICB2YWxpZGF0ZVRlcm1zXG4gICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgdGhpcy5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzaWduYXR1cmUsIGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgICB9KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm1zKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdGVybXNWYWxpZGF0ZTtcblxuICAgIGNvbnN0IHNpZ25hdHVyZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NpZ25hdHVyZVN0cmluZ30nIHNpZ25hdHVyZSdzIHRlcm1zLi4uYCk7XG5cbiAgICBjb25zdCB0ZXJtcyA9IFtdLFxuICAgICAgICAgIHZhbGlkYXRlVGVybSA9IHRoaXMudmFsaWRhdGVUZXJtLmJpbmQodGhpcyk7XG5cbiAgICB0ZXJtc1ZhbGlkYXRlID0gZXZlcnkodGhpcy50ZXJtcywgdmFsaWRhdGVUZXJtLCB0ZXJtcywgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHRlcm1zVmFsaWRhdGU7XG5cbiAgICAgIHRlcm1zVmFsaWRhdGUgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuXG4gICAgICBpZiAodGVybXNWYWxpZGF0ZSkge1xuICAgICAgICB0aGlzLnRlcm1zID0gdGVybXM7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0ZXJtc1ZhbGlkYXRlO1xuICAgIH0pO1xuXG4gICAgaWYgKHRlcm1zVmFsaWRhdGUpe1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzaWduYXR1cmVTdHJpbmd9JyBzaWduYXR1cmUncyB0ZXJtcy5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVybXNWYWxpZGF0ZVxuICB9XG5cbiAgdmFsaWRhdGVUZXJtKHRlcm0sIHRlcm1zLCBzdGF0ZSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHRlcm1WYWxpZGF0ZXM7XG5cbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzaWduYXR1cmVTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVTdHJpbmd9JyBzaWduYXR1cmUncyAnJHt0ZXJtU3RyaW5nfScgdGVybS4uLmApO1xuXG4gICAgdGVybVZhbGlkYXRlcyA9IHRlcm0udmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24odGVybXMsIHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgICB0ZXJtcy5wdXNoKHRlcm0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgIH0pO1xuXG4gICAgaWYgKHRlcm1WYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlJ3MgJyR7dGVybVN0cmluZ30nIHRlcm0uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlcm1WYWxpZGF0ZXM7XG4gIH1cblxuICB1bmlmeVNpZ25hdHVyZShzaWduYXR1cmUsIGNvbnRleHQpIHtcbiAgICBsZXQgc2lnbmF0dXJlVW5pZmllcztcblxuICAgIGRlYnVnZ2VyXG5cbiAgICBjb25zdCBnZW5lcmFsU2lnbmF0dXJlID0gdGhpcywgIC8vL1xuICAgICAgICAgIHNwZWNpZmljU2lnbmF0dXJlID0gc2lnbmF0dXJlLCAgLy8vXG4gICAgICAgICAgZ2VuZXJhbFNpZ25hdHVyZVN0cmluZyA9IGdlbmVyYWxTaWduYXR1cmUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc3BlY2lmaWNTaWduYXR1cmVTdHJpbmcgPSBzcGVjaWZpY1NpZ25hdHVyZS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzcGVjaWZpY1NpZ25hdHVyZVN0cmluZ30nIHNpZ25hdHVyZSB3aXRoIHRoZSAnJHtnZW5lcmFsU2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlLi4uYCk7XG5cbiAgICBjb25zdCBnZW5lcmFsU2lnbmF0dXJlVGVybXMgPSBnZW5lcmFsU2lnbmF0dXJlLmdldFRlcm1zKCksXG4gICAgICAgICAgc3BlY2lmaWNTaWduYXR1cmVUZXJtcyA9IHNwZWNpZmljU2lnbmF0dXJlLmdldFRlcm1zKCksXG4gICAgICAgICAgZ2VuZXJhbFNpZ25hdHVyZUNvbnRleHQgPSBnZW5lcmFsU2lnbmF0dXJlLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzcGVjaWZpY1NpZ25hdHVyZUNvbnRleHQgPSBzcGVjaWZpY1NpZ25hdHVyZS5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZ2VuZXJhbFRlcm1zID0gZ2VuZXJhbFNpZ25hdHVyZVRlcm1zLCAgLy8vXG4gICAgICAgICAgc3BlY2lmaWNUZXJtcyA9IHNwZWNpZmljU2lnbmF0dXJlVGVybXMsIC8vL1xuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gZ2VuZXJhbFNpZ25hdHVyZUNvbnRleHQsIC8vL1xuICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IHNwZWNpZmljU2lnbmF0dXJlQ29udGV4dDsgIC8vL1xuXG4gICAgZGVidWdnZXJcblxuICAgIHNpZ25hdHVyZVVuaWZpZXMgPSByZWNvbmNpbGUoKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgbWF0Y2goZ2VuZXJhbFRlcm1zLCBzcGVjaWZpY1Rlcm1zLCAoZ2VuZXJhbFRlcm0sIHNwZWNpZmljVGVybSkgPT4ge1xuICAgICAgICBsZXQgdGVybVVuaWZpZXM7XG5cbiAgICAgICAgdGVybVVuaWZpZXMgPSBnZW5lcmFsVGVybS51bmlmeVRlcm0oc3BlY2lmaWNUZXJtLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgICBpZiAodGVybVVuaWZpZXMpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChzaWduYXR1cmVVbmlmaWVzKSB7XG4gICAgICAgIHNwZWNpZmljQ29udGV4dC5jb21taXQoY29udGV4dCk7XG4gICAgICB9XG4gICAgfSwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgIGlmIChzaWduYXR1cmVVbmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzcGVjaWZpY1NpZ25hdHVyZVN0cmluZ30nIHNpZ25hdHVyZSB3aXRoIHRoZSAnJHtnZW5lcmFsU2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlLmApO1xuICAgIH1cblxuICAgIHJldHVybiBzaWduYXR1cmVVbmlmaWVzO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHJldHVybiBzZXJpYWxpc2UoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgICBicmVha1BvaW50ID0gdGhpcy5nZXRCcmVha1BvaW50KCk7XG5cbiAgICAgIGNvbnN0IGJyZWFrUG9pbnRKU09OID0gYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04oYnJlYWtQb2ludCk7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgICBjb25zdCBqc29uID0ge1xuICAgICAgICBjb250ZXh0LFxuICAgICAgICBzdHJpbmcsXG4gICAgICAgIGJyZWFrUG9pbnRcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBqc29uO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlNpZ25hdHVyZVwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IHNpZ25hdHVyZTtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICB1bnNlcmlhbGlzZSgoanNvbiwgY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgc2lnbmF0dXJlTm9kZSA9IGluc3RhbnRpYXRlU2lnbmF0dXJlKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBzaWduYXR1cmVOb2RlLCAgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgICAgIHRlcm1zID0gdGVybXNGcm9tU2lnbmF0dXJlTm9kZShzaWduYXR1cmVOb2RlLCBjb250ZXh0KTtcblxuICAgICAgICBzaWduYXR1cmUgPSBuZXcgU2lnbmF0dXJlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybXMpO1xuICAgICAgfSwganNvbiwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc2lnbmF0dXJlO1xuICB9XG5cbiAgc3RhdGljIGZyb21TaWduYXR1cmVTdHJpbmcoc2lnbmF0dXJlU3RyaW5nLCBjb250ZXh0KSB7XG4gICAgbGV0IHNpZ25hdHVyZTtcblxuICAgIGFibGF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3Qgc3RyaW5nID0gc2lnbmF0dXJlU3RyaW5nLCAgLy8vXG4gICAgICAgICAgICAgIHNpZ25hdHVyZU5vZGUgPSBpbnN0YW50aWF0ZVNpZ25hdHVyZShzdHJpbmcsIGNvbnRleHQpO1xuXG4gICAgICAgIHNpZ25hdHVyZSA9IHNpZ25hdHVyZUZyb21TaWduYXR1cmVOb2RlKHNpZ25hdHVyZU5vZGUsIGNvbnRleHQpO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc2lnbmF0dXJlO1xuICB9XG59KTtcblxuZnVuY3Rpb24gdGVybXNGcm9tU2lnbmF0dXJlTm9kZShzaWduYXR1cmVOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHRlcm1Ob2RlcyA9IHNpZ25hdHVyZU5vZGUuZ2V0VGVybU5vZGVzKCksXG4gICAgICAgIHRlcm1zID0gdGVybU5vZGVzLm1hcCgodGVybU5vZGUpID0+IHtcbiAgICAgICAgICBjb25zdCB0ZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpO1xuXG4gICAgICAgICAgcmV0dXJuIHRlcm07XG4gICAgICAgIH0pO1xuXG4gIHJldHVybiB0ZXJtcztcbn1cbiJdLCJuYW1lcyI6WyJtYXRjaCIsImFycmF5VXRpbGl0aWVzIiwiYXN5bmNocm9ub3VzRXZlcnkiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJTaWduYXR1cmUiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidGVybXMiLCJnZXRUZXJtcyIsImdldFNpZ25hdHVyZU5vZGUiLCJnZXROb2RlIiwic2lnbmF0dXJlTm9kZSIsImdldExlbmd0aCIsInRlcm1zTGVuZ3RoIiwibGVuZ3RoIiwiZ2V0VGVybSIsImluZGV4IiwidGVybSIsImlzRXF1YWxUbyIsInNpZ25hdHVyZSIsInNpZ25hdHVyZU5vZGVNYXRjaGVzIiwibWF0Y2hTaWduYXR1cmVOb2RlIiwiZXF1YWxUbyIsIm5vZGVNYXRjaGVzIiwibWF0Y2hOb2RlIiwiZmluZFNpZ25hdHVyZSIsImZpbmRTaWduYXR1cmVCeVNpZ25hdHVyZU5vZGUiLCJ2ZXJpZnkiLCJjb250aW51YXRpb24iLCJ2ZXJpZmllcyIsInNpZ25hdHVyZVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZGVjbGFyZSIsInN0YXRlIiwidmFsaWRhdGVzIiwidmFsaWRhdGUiLCJjb25jbHVzaW9uIiwiZGVidWciLCJzcGVjaWZpY0NvbnRleHQiLCJhdHRlbXB0IiwidmFsaWRhdGVUZXJtcyIsImJpbmQiLCJhbGwiLCJjb21taXQiLCJ0ZXJtc1ZhbGlkYXRlIiwidmFsaWRhdGVUZXJtIiwiZXZlcnkiLCJ0ZXJtVmFsaWRhdGVzIiwidGVybVN0cmluZyIsInB1c2giLCJ1bmlmeVNpZ25hdHVyZSIsInNpZ25hdHVyZVVuaWZpZXMiLCJnZW5lcmFsU2lnbmF0dXJlIiwic3BlY2lmaWNTaWduYXR1cmUiLCJnZW5lcmFsU2lnbmF0dXJlU3RyaW5nIiwic3BlY2lmaWNTaWduYXR1cmVTdHJpbmciLCJnZW5lcmFsU2lnbmF0dXJlVGVybXMiLCJzcGVjaWZpY1NpZ25hdHVyZVRlcm1zIiwiZ2VuZXJhbFNpZ25hdHVyZUNvbnRleHQiLCJnZXRDb250ZXh0Iiwic3BlY2lmaWNTaWduYXR1cmVDb250ZXh0IiwiZ2VuZXJhbFRlcm1zIiwic3BlY2lmaWNUZXJtcyIsImdlbmVyYWxDb250ZXh0IiwicmVjb25jaWxlIiwiZ2VuZXJhbFRlcm0iLCJzcGVjaWZpY1Rlcm0iLCJ0ZXJtVW5pZmllcyIsInVuaWZ5VGVybSIsInRvSlNPTiIsInNlcmlhbGlzZSIsImdldEJyZWFrUG9pbnQiLCJicmVha1BvaW50SlNPTiIsImpzb24iLCJuYW1lIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsInVuc2VyaWFsaXNlIiwiaW5zdGFudGlhdGVTaWduYXR1cmUiLCJ0ZXJtc0Zyb21TaWduYXR1cmVOb2RlIiwiZnJvbVNpZ25hdHVyZVN0cmluZyIsImFibGF0ZSIsInNpZ25hdHVyZUZyb21TaWduYXR1cmVOb2RlIiwidGVybU5vZGVzIiwiZ2V0VGVybU5vZGVzIiwibWFwIiwidGVybU5vZGUiLCJmaW5kVGVybUJ5VGVybU5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWdCQTs7O2VBQUE7OzsyQkFkK0I7Z0NBQ3FDOzBCQUU3Qzt1QkFDQzs4QkFDRzs2QkFDVTt5QkFDTTt5QkFDcUM7QUFFaEYsTUFBTSxFQUFFQSxLQUFLLEVBQUUsR0FBR0MseUJBQWMsRUFDMUIsRUFBRUMsaUJBQWlCLEVBQUUsR0FBR0MscUNBQXFCLEVBQzdDLEVBQUVDLGtCQUFrQixFQUFFQywwQkFBMEIsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFOUUsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxrQkFBa0JDLHVCQUFPO0lBQ25ELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsS0FBSyxDQUFFO1FBQ3BELEtBQUssQ0FBQ0osU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDQyxLQUFLLEdBQUdBO0lBQ2Y7SUFFQUMsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDRCxLQUFLO0lBQ25CO0lBRUFFLG1CQUFtQjtRQUNqQixNQUFNSixPQUFPLElBQUksQ0FBQ0ssT0FBTyxJQUNuQkMsZ0JBQWdCTixNQUFNLEdBQUc7UUFFL0IsT0FBT007SUFDVDtJQUVBQyxZQUFZO1FBQ1YsTUFBTUMsY0FBYyxJQUFJLENBQUNOLEtBQUssQ0FBQ08sTUFBTSxFQUMvQkEsU0FBU0QsYUFBYSxHQUFHO1FBRS9CLE9BQU9DO0lBQ1Q7SUFFQUMsUUFBUUMsS0FBSyxFQUFFO1FBQ2IsTUFBTUMsT0FBTyxJQUFJLENBQUNWLEtBQUssQ0FBQ1MsTUFBTTtRQUU5QixPQUFPQztJQUNUO0lBRUFDLFVBQVVDLFNBQVMsRUFBRTtRQUNuQixNQUFNUixnQkFBZ0JRLFVBQVVULE9BQU8sSUFDakNVLHVCQUF1QixJQUFJLENBQUNDLGtCQUFrQixDQUFDVixnQkFDL0NXLFVBQVVGLHNCQUF1QixHQUFHO1FBRTFDLE9BQU9FO0lBQ1Q7SUFFQUQsbUJBQW1CVixhQUFhLEVBQUU7UUFDaEMsTUFBTU4sT0FBT00sZUFDUFksY0FBYyxJQUFJLENBQUNDLFNBQVMsQ0FBQ25CLE9BQzdCZSx1QkFBdUJHLGFBQWEsR0FBRztRQUU3QyxPQUFPSDtJQUNUO0lBRUFLLGNBQWN0QixPQUFPLEVBQUU7UUFDckIsTUFBTVEsZ0JBQWdCLElBQUksQ0FBQ0YsZ0JBQWdCLElBQ3JDVSxZQUFZaEIsUUFBUXVCLDRCQUE0QixDQUFDZjtRQUV2RCxPQUFPUTtJQUNUO0lBRUFRLE9BQU94QixPQUFPLEVBQUV5QixZQUFZLEVBQUU7UUFDNUIsSUFBSUMsV0FBVztRQUVmLE1BQU1DLGtCQUFrQixJQUFJLENBQUNDLFNBQVMsSUFBSSxHQUFHO1FBRTdDNUIsUUFBUTZCLEtBQUssQ0FBQyxDQUFDLGVBQWUsRUFBRUYsZ0JBQWdCLGNBQWMsQ0FBQztRQUUvREcsSUFBQUEsY0FBTyxFQUFDLENBQUNDO1lBQ1AsTUFBTUMsWUFBWSxJQUFJLENBQUNDLFFBQVEsQ0FBQ0YsT0FBTy9CLFNBQVMsQ0FBQ2tDLFlBQVlsQyxVQUFZO1lBRXpFLElBQUlnQyxXQUFXO2dCQUNiTixXQUFXO1lBQ2I7UUFDRjtRQUVBLElBQUlBLFVBQVU7WUFDWjFCLFFBQVFtQyxLQUFLLENBQUMsQ0FBQyxpQkFBaUIsRUFBRVIsZ0JBQWdCLFlBQVksQ0FBQztRQUNqRTtRQUVBLE9BQU9GLGFBQWFDLFVBQVUxQjtJQUNoQztJQUVBaUMsU0FBU0YsS0FBSyxFQUFFL0IsT0FBTyxFQUFFeUIsWUFBWSxFQUFFO1FBQ3JDLElBQUlPO1FBRUosTUFBTUksa0JBQWtCcEMsU0FDbEIyQixrQkFBa0IsSUFBSSxDQUFDQyxTQUFTO1FBRXRDNUIsUUFBUTZCLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFRixnQkFBZ0IsY0FBYyxDQUFDO1FBRWhFLE1BQU1YLFlBQVksSUFBSSxFQUFHLEdBQUc7UUFFNUJxQixJQUFBQSxnQkFBTyxFQUFDLENBQUNyQztZQUNQLE1BQU1zQyxnQkFBZ0IsSUFBSSxDQUFDQSxhQUFhLENBQUNDLElBQUksQ0FBQyxJQUFJO1lBRWxEUCxZQUFZUSxJQUFBQSxpQkFBRyxFQUFDO2dCQUNkRjthQUNELEVBQUVQLE9BQU8vQixTQUFTLENBQUMrQixPQUFPL0I7Z0JBQ3pCLElBQUlnQztnQkFFSixJQUFJLENBQUNTLE1BQU0sQ0FBQ3pDO2dCQUVaQSxVQUFVb0MsaUJBQWtCLEdBQUc7Z0JBRS9CSixZQUFZUCxhQUFhVCxXQUFXaEI7Z0JBRXBDLE9BQU9nQztZQUNUO1FBQ0YsR0FBR2hDO1FBRUhBLFVBQVVvQyxpQkFBa0IsR0FBRztRQUUvQixJQUFJSixXQUFXO1lBQ2JoQyxRQUFRbUMsS0FBSyxDQUFDLENBQUMsa0JBQWtCLEVBQUVSLGdCQUFnQixZQUFZLENBQUM7UUFDbEU7UUFFQSxPQUFPSztJQUNUO0lBRUFNLGNBQWNQLEtBQUssRUFBRS9CLE9BQU8sRUFBRXlCLFlBQVksRUFBRTtRQUMxQyxJQUFJaUI7UUFFSixNQUFNZixrQkFBa0IsSUFBSSxDQUFDQyxTQUFTLElBQUssR0FBRztRQUU5QzVCLFFBQVE2QixLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRUYsZ0JBQWdCLHNCQUFzQixDQUFDO1FBRXhFLE1BQU12QixRQUFRLEVBQUUsRUFDVnVDLGVBQWUsSUFBSSxDQUFDQSxZQUFZLENBQUNKLElBQUksQ0FBQyxJQUFJO1FBRWhERyxnQkFBZ0JFLElBQUFBLG1CQUFLLEVBQUMsSUFBSSxDQUFDeEMsS0FBSyxFQUFFdUMsY0FBY3ZDLE9BQU8yQixPQUFPL0IsU0FBUyxDQUFDK0IsT0FBTy9CO1lBQzdFLElBQUkwQztZQUVKQSxnQkFBZ0JqQixhQUFhTSxPQUFPL0I7WUFFcEMsSUFBSTBDLGVBQWU7Z0JBQ2pCLElBQUksQ0FBQ3RDLEtBQUssR0FBR0E7WUFDZjtZQUVBLE9BQU9zQztRQUNUO1FBRUEsSUFBSUEsZUFBYztZQUNoQjFDLFFBQVFtQyxLQUFLLENBQUMsQ0FBQyxrQkFBa0IsRUFBRVIsZ0JBQWdCLG9CQUFvQixDQUFDO1FBQzFFO1FBRUEsT0FBT2U7SUFDVDtJQUVBQyxhQUFhN0IsSUFBSSxFQUFFVixLQUFLLEVBQUUyQixLQUFLLEVBQUUvQixPQUFPLEVBQUV5QixZQUFZLEVBQUU7UUFDdEQsSUFBSW9CO1FBRUosTUFBTUMsYUFBYWhDLEtBQUtjLFNBQVMsSUFDM0JELGtCQUFrQixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRTlDNUIsUUFBUTZCLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFRixnQkFBZ0IsZUFBZSxFQUFFbUIsV0FBVyxTQUFTLENBQUM7UUFFdkZELGdCQUFnQi9CLEtBQUttQixRQUFRLENBQUNGLE9BQU8vQixTQUFTLENBQUNjLE1BQU1kO1lBQ25ELElBQUlnQztZQUVKQSxZQUFZUCxhQUFhckIsT0FBTzJCLE9BQU8vQjtZQUV2QyxJQUFJZ0MsV0FBVztnQkFDYjVCLE1BQU0yQyxJQUFJLENBQUNqQztZQUNiO1lBRUEsT0FBT2tCO1FBQ1Q7UUFFQSxJQUFJYSxlQUFlO1lBQ2pCN0MsUUFBUW1DLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixFQUFFUixnQkFBZ0IsZUFBZSxFQUFFbUIsV0FBVyxPQUFPLENBQUM7UUFDekY7UUFFQSxPQUFPRDtJQUNUO0lBRUFHLGVBQWVoQyxTQUFTLEVBQUVoQixPQUFPLEVBQUU7UUFDakMsSUFBSWlEO1FBRUosUUFBUTtRQUVSLE1BQU1DLG1CQUFtQixJQUFJLEVBQ3ZCQyxvQkFBb0JuQyxXQUNwQm9DLHlCQUF5QkYsaUJBQWlCdEIsU0FBUyxJQUNuRHlCLDBCQUEwQkYsa0JBQWtCdkIsU0FBUztRQUUzRDVCLFFBQVE2QixLQUFLLENBQUMsQ0FBQyxjQUFjLEVBQUV3Qix3QkFBd0Isc0JBQXNCLEVBQUVELHVCQUF1QixjQUFjLENBQUM7UUFFckgsTUFBTUUsd0JBQXdCSixpQkFBaUI3QyxRQUFRLElBQ2pEa0QseUJBQXlCSixrQkFBa0I5QyxRQUFRLElBQ25EbUQsMEJBQTBCTixpQkFBaUJPLFVBQVUsSUFDckRDLDJCQUEyQlAsa0JBQWtCTSxVQUFVLElBQ3ZERSxlQUFlTCx1QkFDZk0sZ0JBQWdCTCx3QkFDaEJNLGlCQUFpQkwseUJBQ2pCcEIsa0JBQWtCc0IsMEJBQTJCLEdBQUc7UUFFdEQsUUFBUTtRQUVSVCxtQkFBbUJhLElBQUFBLGtCQUFTLEVBQUMsQ0FBQzFCO1lBQzVCOUMsTUFBTXFFLGNBQWNDLGVBQWUsQ0FBQ0csYUFBYUM7Z0JBQy9DLElBQUlDO2dCQUVKQSxjQUFjRixZQUFZRyxTQUFTLENBQUNGLGNBQWNILGdCQUFnQnpCO2dCQUVsRSxJQUFJNkIsYUFBYTtvQkFDZixPQUFPO2dCQUNUO1lBQ0Y7WUFFQSxJQUFJaEIsa0JBQWtCO2dCQUNwQmIsZ0JBQWdCSyxNQUFNLENBQUN6QztZQUN6QjtRQUNGLEdBQUdvQztRQUVILElBQUlhLGtCQUFrQjtZQUNwQmpELFFBQVFtQyxLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRWtCLHdCQUF3QixzQkFBc0IsRUFBRUQsdUJBQXVCLFlBQVksQ0FBQztRQUN2SDtRQUVBLE9BQU9IO0lBQ1Q7SUFFQWtCLFNBQVM7UUFDUCxNQUFNbkUsVUFBVSxJQUFJLENBQUN5RCxVQUFVO1FBRS9CLE9BQU9XLElBQUFBLGtCQUFTLEVBQUMsQ0FBQ3BFO1lBQ2hCLE1BQU1DLFNBQVMsSUFBSSxDQUFDMkIsU0FBUztZQUU3QixJQUFJekI7WUFFSkEsYUFBYSxJQUFJLENBQUNrRSxhQUFhO1lBRS9CLE1BQU1DLGlCQUFpQjNFLDJCQUEyQlE7WUFFbERBLGFBQWFtRSxnQkFBaUIsR0FBRztZQUVqQyxNQUFNQyxPQUFPO2dCQUNYdkU7Z0JBQ0FDO2dCQUNBRTtZQUNGO1lBRUEsT0FBT29FO1FBQ1QsR0FBR3ZFO0lBQ0w7SUFFQSxPQUFPd0UsT0FBTyxZQUFZO0lBRTFCLE9BQU9DLFNBQVNGLElBQUksRUFBRXZFLE9BQU8sRUFBRTtRQUM3QixJQUFJZ0I7UUFFSjBELElBQUFBLG9CQUFXLEVBQUMsQ0FBQzFFO1lBQ1gyRSxJQUFBQSxvQkFBVyxFQUFDLENBQUNKLE1BQU12RTtnQkFDakIsTUFBTSxFQUFFQyxNQUFNLEVBQUUsR0FBR3NFLE1BQ2IvRCxnQkFBZ0JvRSxJQUFBQSxpQ0FBb0IsRUFBQzNFLFFBQVFELFVBQzdDRSxPQUFPTSxlQUNQTCxhQUFhVCxtQkFBbUI2RSxPQUNoQ25FLFFBQVF5RSx1QkFBdUJyRSxlQUFlUjtnQkFFcERnQixZQUFZLElBQUlsQixVQUFVRSxTQUFTQyxRQUFRQyxNQUFNQyxZQUFZQztZQUMvRCxHQUFHbUUsTUFBTXZFO1FBQ1gsR0FBR0E7UUFFSCxPQUFPZ0I7SUFDVDtJQUVBLE9BQU84RCxvQkFBb0JuRCxlQUFlLEVBQUUzQixPQUFPLEVBQUU7UUFDbkQsSUFBSWdCO1FBRUorRCxJQUFBQSxlQUFNLEVBQUMsQ0FBQy9FO1lBQ04wRSxJQUFBQSxvQkFBVyxFQUFDLENBQUMxRTtnQkFDWCxNQUFNQyxTQUFTMEIsaUJBQ1RuQixnQkFBZ0JvRSxJQUFBQSxpQ0FBb0IsRUFBQzNFLFFBQVFEO2dCQUVuRGdCLFlBQVlnRSxJQUFBQSxtQ0FBMEIsRUFBQ3hFLGVBQWVSO1lBQ3hELEdBQUdBO1FBQ0wsR0FBR0E7UUFFSCxPQUFPZ0I7SUFDVDtBQUNGO0FBRUEsU0FBUzZELHVCQUF1QnJFLGFBQWEsRUFBRVIsT0FBTztJQUNwRCxNQUFNaUYsWUFBWXpFLGNBQWMwRSxZQUFZLElBQ3RDOUUsUUFBUTZFLFVBQVVFLEdBQUcsQ0FBQyxDQUFDQztRQUNyQixNQUFNdEUsT0FBT2QsUUFBUXFGLGtCQUFrQixDQUFDRDtRQUV4QyxPQUFPdEU7SUFDVDtJQUVOLE9BQU9WO0FBQ1QifQ==
@@ -12,9 +12,6 @@ _export(exports, {
12
12
  get all () {
13
13
  return all;
14
14
  },
15
- get any () {
16
- return any;
17
- },
18
15
  get each () {
19
16
  return each;
20
17
  },
@@ -34,20 +31,6 @@ _export(exports, {
34
31
  return some;
35
32
  }
36
33
  });
37
- function any(array, callback, ...initialArguments) {
38
- let success = false;
39
- const continuation = initialArguments.pop(), length = array.length;
40
- let count = 0;
41
- for(let index = 0; index < length; index++){
42
- const element = array[index];
43
- success = callback(element, ...initialArguments, continuation);
44
- if (success) {
45
- count++;
46
- }
47
- }
48
- success = count >= 1;
49
- return success;
50
- }
51
34
  function one(array, callback, ...initialArguments) {
52
35
  let success = false;
53
36
  const continuation = initialArguments.pop(), length = array.length;
@@ -146,4 +129,4 @@ function exists(callbacks, ...initialArguments) {
146
129
  }, ...initialArguments);
147
130
  }
148
131
 
149
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29udGludWF0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gYW55KGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBsZXQgY291bnQgPSAwO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgc3VjY2VzcyA9IGNhbGxiYWNrKGVsZW1lbnQsIC4uLmluaXRpYWxBcmd1bWVudHMsIGNvbnRpbnVhdGlvbik7XG5cbiAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgY291bnQrKztcbiAgICB9XG4gIH1cblxuICBzdWNjZXNzID0gKGNvdW50ID49IDEpO1xuXG4gIHJldHVybiBzdWNjZXNzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb25lKGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBsZXQgY291bnQgPSAwO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgc3VjY2VzcyA9IGNhbGxiYWNrKGVsZW1lbnQsIC4uLmluaXRpYWxBcmd1bWVudHMsIGNvbnRpbnVhdGlvbik7XG5cbiAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgY291bnQrKztcblxuICAgICAgaWYgKGNvdW50ID4gMSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzdWNjZXNzID0gKGNvdW50ID09PSAxKTtcblxuICByZXR1cm4gc3VjY2Vzcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNvbWUoYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgY29uc3QgY29udGludWF0aW9uID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgc3VjY2VzcyA9IGNhbGxiYWNrKGVsZW1lbnQsIC4uLmluaXRpYWxBcmd1bWVudHMsIGNvbnRpbnVhdGlvbik7XG5cbiAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN1Y2Nlc3M7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlYWNoKGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgaWYgKGxlbmd0aCA9PT0gMCkge1xuICAgIGNvbnN0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgIHJldHVybiBzdWNjZXNzO1xuICB9XG5cbiAgY29uc3QgY29udGludWF0aW9uID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgY2FsbGJhY2tBcmd1bWVudHMgPSBpbml0aWFsQXJndW1lbnRzLCAvLy9cbiAgICAgICAgaW5kZXggPSAwO1xuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgsIC4uLmNhbGxiYWNrQXJndW1lbnRzKSB7XG4gICAgbGV0IHN1Y2Nlc3M7XG5cbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgc3VjY2VzcyA9IGNvbnRpbnVhdGlvbiguLi5jYWxsYmFja0FyZ3VtZW50cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICAgIHN1Y2Nlc3MgPSBjYWxsYmFjayhlbGVtZW50LCAuLi5jYWxsYmFja0FyZ3VtZW50cywgKC4uLmNhbGxiYWNrQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1Y2Nlc3M7XG4gIH1cblxuICByZXR1cm4gbmV4dChpbmRleCwgLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXZlcnkoYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGNhbGxiYWNrQXJndW1lbnRzID0gaW5pdGlhbEFyZ3VtZW50cywgLy8vXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgaW5kZXggPSAwO1xuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgsIC4uLmNhbGxiYWNrQXJndW1lbnRzKSB7XG4gICAgbGV0IHN1Y2Nlc3M7XG5cbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgc3VjY2VzcyA9ICBjb250aW51YXRpb24oLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgICBzdWNjZXNzID0gY2FsbGJhY2soZWxlbWVudCwgLi4uY2FsbGJhY2tBcmd1bWVudHMsICguLi5jYWxsYmFja0FyZ3VtZW50cykgPT4ge1xuICAgICAgICByZXR1cm4gbmV4dChpbmRleCArIDEsIC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBzdWNjZXNzO1xuICB9XG5cbiAgcmV0dXJuIG5leHQoaW5kZXgsIC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoKGFycmF5QSwgYXJyYXlCLCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBhcnJheUFMZW5ndGggPSBhcnJheUEubGVuZ3RoLFxuICAgICAgICBhcnJheUJMZW5ndGggPSBhcnJheUIubGVuZ3RoO1xuXG4gIGlmIChhcnJheUFMZW5ndGggIT09IGFycmF5Qkxlbmd0aCkge1xuICAgIGNvbnN0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgIHJldHVybiBzdWNjZXNzO1xuICB9XG5cbiAgY29uc3QgY29udGludWF0aW9uID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgY2FsbGJhY2tBcmd1bWVudHMgPSBpbml0aWFsQXJndW1lbnRzLCAvLy9cbiAgICAgICAgbGVuZ3RoID0gYXJyYXlBTGVuZ3RoLCAgLy8vXG4gICAgICAgIGluZGV4ID0gMDtcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4LCAuLi5jYWxsYmFja0FyZ3VtZW50cykge1xuICAgIGxldCBzdWNjZXNzO1xuXG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIHN1Y2Nlc3MgPSBjb250aW51YXRpb24oLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBlbGVtZW50QSA9IGFycmF5QVtpbmRleF0sXG4gICAgICAgICAgICBlbGVtZW50QiA9IGFycmF5QltpbmRleF07XG5cbiAgICAgIHN1Y2Nlc3MgPSBjYWxsYmFjayhlbGVtZW50QSwgZWxlbWVudEIsIC4uLmNhbGxiYWNrQXJndW1lbnRzLCAoLi4uY2FsbGJhY2tBcmd1bWVudHMpID0+IHtcbiAgICAgICAgcmV0dXJuIG5leHQoaW5kZXggKyAxLCAuLi5jYWxsYmFja0FyZ3VtZW50cyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VjY2VzcztcbiAgfVxuXG4gIHJldHVybiBuZXh0KGluZGV4LCAuLi5jYWxsYmFja0FyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbGwoY2FsbGJhY2tzLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIHJldHVybiBldmVyeShjYWxsYmFja3MsIChjYWxsYmFjaywgLi4uY2FsbGJhY2tBcmd1bWVudHMpID0+IHtcbiAgICByZXR1cm4gY2FsbGJhY2soLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICB9LCAuLi5pbml0aWFsQXJndW1lbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4aXN0cyhjYWxsYmFja3MsIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgcmV0dXJuIHNvbWUoY2FsbGJhY2tzLCAoY2FsbGJhY2ssIC4uLmNhbGxiYWNrQXJndW1lbnRzKSA9PiB7XG4gICAgcmV0dXJuIGNhbGxiYWNrKC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbiAgfSwgLi4uaW5pdGlhbEFyZ3VtZW50cyk7XG59XG4iXSwibmFtZXMiOlsiYWxsIiwiYW55IiwiZWFjaCIsImV2ZXJ5IiwiZXhpc3RzIiwibWF0Y2giLCJvbmUiLCJzb21lIiwiYXJyYXkiLCJjYWxsYmFjayIsImluaXRpYWxBcmd1bWVudHMiLCJzdWNjZXNzIiwiY29udGludWF0aW9uIiwicG9wIiwibGVuZ3RoIiwiY291bnQiLCJpbmRleCIsImVsZW1lbnQiLCJjYWxsYmFja0FyZ3VtZW50cyIsIm5leHQiLCJhcnJheUEiLCJhcnJheUIiLCJhcnJheUFMZW5ndGgiLCJhcnJheUJMZW5ndGgiLCJlbGVtZW50QSIsImVsZW1lbnRCIiwiY2FsbGJhY2tzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFtS2dCQTtlQUFBQTs7UUFqS0FDO2VBQUFBOztRQXFFQUM7ZUFBQUE7O1FB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
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29udGludWF0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gb25lKGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBsZXQgY291bnQgPSAwO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgc3VjY2VzcyA9IGNhbGxiYWNrKGVsZW1lbnQsIC4uLmluaXRpYWxBcmd1bWVudHMsIGNvbnRpbnVhdGlvbik7XG5cbiAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgY291bnQrKztcblxuICAgICAgaWYgKGNvdW50ID4gMSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzdWNjZXNzID0gKGNvdW50ID09PSAxKTtcblxuICByZXR1cm4gc3VjY2Vzcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNvbWUoYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgY29uc3QgY29udGludWF0aW9uID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgc3VjY2VzcyA9IGNhbGxiYWNrKGVsZW1lbnQsIC4uLmluaXRpYWxBcmd1bWVudHMsIGNvbnRpbnVhdGlvbik7XG5cbiAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN1Y2Nlc3M7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlYWNoKGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgaWYgKGxlbmd0aCA9PT0gMCkge1xuICAgIGNvbnN0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgIHJldHVybiBzdWNjZXNzO1xuICB9XG5cbiAgY29uc3QgY29udGludWF0aW9uID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgY2FsbGJhY2tBcmd1bWVudHMgPSBpbml0aWFsQXJndW1lbnRzLCAvLy9cbiAgICAgICAgaW5kZXggPSAwO1xuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgsIC4uLmNhbGxiYWNrQXJndW1lbnRzKSB7XG4gICAgbGV0IHN1Y2Nlc3M7XG5cbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgc3VjY2VzcyA9IGNvbnRpbnVhdGlvbiguLi5jYWxsYmFja0FyZ3VtZW50cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICAgIHN1Y2Nlc3MgPSBjYWxsYmFjayhlbGVtZW50LCAuLi5jYWxsYmFja0FyZ3VtZW50cywgKC4uLmNhbGxiYWNrQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1Y2Nlc3M7XG4gIH1cblxuICByZXR1cm4gbmV4dChpbmRleCwgLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXZlcnkoYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGNhbGxiYWNrQXJndW1lbnRzID0gaW5pdGlhbEFyZ3VtZW50cywgLy8vXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgaW5kZXggPSAwO1xuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgsIC4uLmNhbGxiYWNrQXJndW1lbnRzKSB7XG4gICAgbGV0IHN1Y2Nlc3M7XG5cbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgc3VjY2VzcyA9ICBjb250aW51YXRpb24oLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgICBzdWNjZXNzID0gY2FsbGJhY2soZWxlbWVudCwgLi4uY2FsbGJhY2tBcmd1bWVudHMsICguLi5jYWxsYmFja0FyZ3VtZW50cykgPT4ge1xuICAgICAgICByZXR1cm4gbmV4dChpbmRleCArIDEsIC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBzdWNjZXNzO1xuICB9XG5cbiAgcmV0dXJuIG5leHQoaW5kZXgsIC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoKGFycmF5QSwgYXJyYXlCLCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBhcnJheUFMZW5ndGggPSBhcnJheUEubGVuZ3RoLFxuICAgICAgICBhcnJheUJMZW5ndGggPSBhcnJheUIubGVuZ3RoO1xuXG4gIGlmIChhcnJheUFMZW5ndGggIT09IGFycmF5Qkxlbmd0aCkge1xuICAgIGNvbnN0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgIHJldHVybiBzdWNjZXNzO1xuICB9XG5cbiAgY29uc3QgY29udGludWF0aW9uID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgY2FsbGJhY2tBcmd1bWVudHMgPSBpbml0aWFsQXJndW1lbnRzLCAvLy9cbiAgICAgICAgbGVuZ3RoID0gYXJyYXlBTGVuZ3RoLCAgLy8vXG4gICAgICAgIGluZGV4ID0gMDtcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4LCAuLi5jYWxsYmFja0FyZ3VtZW50cykge1xuICAgIGxldCBzdWNjZXNzO1xuXG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIHN1Y2Nlc3MgPSBjb250aW51YXRpb24oLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBlbGVtZW50QSA9IGFycmF5QVtpbmRleF0sXG4gICAgICAgICAgICBlbGVtZW50QiA9IGFycmF5QltpbmRleF07XG5cbiAgICAgIHN1Y2Nlc3MgPSBjYWxsYmFjayhlbGVtZW50QSwgZWxlbWVudEIsIC4uLmNhbGxiYWNrQXJndW1lbnRzLCAoLi4uY2FsbGJhY2tBcmd1bWVudHMpID0+IHtcbiAgICAgICAgcmV0dXJuIG5leHQoaW5kZXggKyAxLCAuLi5jYWxsYmFja0FyZ3VtZW50cyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VjY2VzcztcbiAgfVxuXG4gIHJldHVybiBuZXh0KGluZGV4LCAuLi5jYWxsYmFja0FyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbGwoY2FsbGJhY2tzLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIHJldHVybiBldmVyeShjYWxsYmFja3MsIChjYWxsYmFjaywgLi4uY2FsbGJhY2tBcmd1bWVudHMpID0+IHtcbiAgICByZXR1cm4gY2FsbGJhY2soLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICB9LCAuLi5pbml0aWFsQXJndW1lbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4aXN0cyhjYWxsYmFja3MsIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgcmV0dXJuIHNvbWUoY2FsbGJhY2tzLCAoY2FsbGJhY2ssIC4uLmNhbGxiYWNrQXJndW1lbnRzKSA9PiB7XG4gICAgcmV0dXJuIGNhbGxiYWNrKC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbiAgfSwgLi4uaW5pdGlhbEFyZ3VtZW50cyk7XG59XG4iXSwibmFtZXMiOlsiYWxsIiwiZWFjaCIsImV2ZXJ5IiwiZXhpc3RzIiwibWF0Y2giLCJvbmUiLCJzb21lIiwiYXJyYXkiLCJjYWxsYmFjayIsImluaXRpYWxBcmd1bWVudHMiLCJzdWNjZXNzIiwiY29udGludWF0aW9uIiwicG9wIiwibGVuZ3RoIiwiY291bnQiLCJpbmRleCIsImVsZW1lbnQiLCJjYWxsYmFja0FyZ3VtZW50cyIsIm5leHQiLCJhcnJheUEiLCJhcnJheUIiLCJhcnJheUFMZW5ndGgiLCJhcnJheUJMZW5ndGgiLCJlbGVtZW50QSIsImVsZW1lbnRCIiwiY2FsbGJhY2tzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUE0SWdCQTtlQUFBQTs7UUE1RkFDO2VBQUFBOztRQWdDQUM7ZUFBQUE7O1FBa0VBQztlQUFBQTs7UUF6Q0FDO2VBQUFBOztRQXZHQUM7ZUFBQUE7O1FBMkJBQztlQUFBQTs7O0FBM0JULFNBQVNELElBQUlFLEtBQUssRUFBRUMsUUFBUSxFQUFFLEdBQUdDLGdCQUFnQjtJQUN0RCxJQUFJQyxVQUFVO0lBRWQsTUFBTUMsZUFBZUYsaUJBQWlCRyxHQUFHLElBQ25DQyxTQUFTTixNQUFNTSxNQUFNO0lBRTNCLElBQUlDLFFBQVE7SUFFWixJQUFLLElBQUlDLFFBQVEsR0FBR0EsUUFBUUYsUUFBUUUsUUFBUztRQUMzQyxNQUFNQyxVQUFVVCxLQUFLLENBQUNRLE1BQU07UUFFNUJMLFVBQVVGLFNBQVNRLFlBQVlQLGtCQUFrQkU7UUFFakQsSUFBSUQsU0FBUztZQUNYSTtZQUVBLElBQUlBLFFBQVEsR0FBRztnQkFDYjtZQUNGO1FBQ0Y7SUFDRjtJQUVBSixVQUFXSSxVQUFVO0lBRXJCLE9BQU9KO0FBQ1Q7QUFFTyxTQUFTSixLQUFLQyxLQUFLLEVBQUVDLFFBQVEsRUFBRSxHQUFHQyxnQkFBZ0I7SUFDdkQsSUFBSUMsVUFBVTtJQUVkLE1BQU1DLGVBQWVGLGlCQUFpQkcsR0FBRyxJQUNuQ0MsU0FBU04sTUFBTU0sTUFBTTtJQUUzQixJQUFLLElBQUlFLFFBQVEsR0FBR0EsUUFBUUYsUUFBUUUsUUFBUztRQUMzQyxNQUFNQyxVQUFVVCxLQUFLLENBQUNRLE1BQU07UUFFNUJMLFVBQVVGLFNBQVNRLFlBQVlQLGtCQUFrQkU7UUFFakQsSUFBSUQsU0FBUztZQUNYO1FBQ0Y7SUFDRjtJQUVBLE9BQU9BO0FBQ1Q7QUFFTyxTQUFTVCxLQUFLTSxLQUFLLEVBQUVDLFFBQVEsRUFBRSxHQUFHQyxnQkFBZ0I7SUFDdkQsTUFBTUksU0FBU04sTUFBTU0sTUFBTTtJQUUzQixJQUFJQSxXQUFXLEdBQUc7UUFDaEIsTUFBTUgsVUFBVTtRQUVoQixPQUFPQTtJQUNUO0lBRUEsTUFBTUMsZUFBZUYsaUJBQWlCRyxHQUFHLElBQ25DSyxvQkFBb0JSLGtCQUNwQk0sUUFBUTtJQUVkLFNBQVNHLEtBQUtILEtBQUssRUFBRSxHQUFHRSxpQkFBaUI7UUFDdkMsSUFBSVA7UUFFSixJQUFJSyxVQUFVRixRQUFRO1lBQ3BCSCxVQUFVQyxnQkFBZ0JNO1FBQzVCLE9BQU87WUFDTCxNQUFNRCxVQUFVVCxLQUFLLENBQUNRLE1BQU07WUFFNUJMLFVBQVVGLFNBQVNRLFlBQVlDLG1CQUFtQixDQUFDLEdBQUdBO2dCQUNwRCxPQUFPQyxLQUFLSCxRQUFRLE1BQU1FO1lBQzVCO1FBQ0Y7UUFFQSxPQUFPUDtJQUNUO0lBRUEsT0FBT1EsS0FBS0gsVUFBVUU7QUFDeEI7QUFFTyxTQUFTZixNQUFNSyxLQUFLLEVBQUVDLFFBQVEsRUFBRSxHQUFHQyxnQkFBZ0I7SUFDeEQsTUFBTUUsZUFBZUYsaUJBQWlCRyxHQUFHLElBQ25DSyxvQkFBb0JSLGtCQUNwQkksU0FBU04sTUFBTU0sTUFBTSxFQUNyQkUsUUFBUTtJQUVkLFNBQVNHLEtBQUtILEtBQUssRUFBRSxHQUFHRSxpQkFBaUI7UUFDdkMsSUFBSVA7UUFFSixJQUFJSyxVQUFVRixRQUFRO1lBQ3BCSCxVQUFXQyxnQkFBZ0JNO1FBQzdCLE9BQU87WUFDTCxNQUFNRCxVQUFVVCxLQUFLLENBQUNRLE1BQU07WUFFNUJMLFVBQVVGLFNBQVNRLFlBQVlDLG1CQUFtQixDQUFDLEdBQUdBO2dCQUNwRCxPQUFPQyxLQUFLSCxRQUFRLE1BQU1FO1lBQzVCO1FBQ0Y7UUFFQSxPQUFPUDtJQUNUO0lBRUEsT0FBT1EsS0FBS0gsVUFBVUU7QUFDeEI7QUFFTyxTQUFTYixNQUFNZSxNQUFNLEVBQUVDLE1BQU0sRUFBRVosUUFBUSxFQUFFLEdBQUdDLGdCQUFnQjtJQUNqRSxNQUFNWSxlQUFlRixPQUFPTixNQUFNLEVBQzVCUyxlQUFlRixPQUFPUCxNQUFNO0lBRWxDLElBQUlRLGlCQUFpQkMsY0FBYztRQUNqQyxNQUFNWixVQUFVO1FBRWhCLE9BQU9BO0lBQ1Q7SUFFQSxNQUFNQyxlQUFlRixpQkFBaUJHLEdBQUcsSUFDbkNLLG9CQUFvQlIsa0JBQ3BCSSxTQUFTUSxjQUNUTixRQUFRO0lBRWQsU0FBU0csS0FBS0gsS0FBSyxFQUFFLEdBQUdFLGlCQUFpQjtRQUN2QyxJQUFJUDtRQUVKLElBQUlLLFVBQVVGLFFBQVE7WUFDcEJILFVBQVVDLGdCQUFnQk07UUFDNUIsT0FBTztZQUNMLE1BQU1NLFdBQVdKLE1BQU0sQ0FBQ0osTUFBTSxFQUN4QlMsV0FBV0osTUFBTSxDQUFDTCxNQUFNO1lBRTlCTCxVQUFVRixTQUFTZSxVQUFVQyxhQUFhUCxtQkFBbUIsQ0FBQyxHQUFHQTtnQkFDL0QsT0FBT0MsS0FBS0gsUUFBUSxNQUFNRTtZQUM1QjtRQUNGO1FBRUEsT0FBT1A7SUFDVDtJQUVBLE9BQU9RLEtBQUtILFVBQVVFO0FBQ3hCO0FBRU8sU0FBU2pCLElBQUl5QixTQUFTLEVBQUUsR0FBR2hCLGdCQUFnQjtJQUNoRCxPQUFPUCxNQUFNdUIsV0FBVyxDQUFDakIsVUFBVSxHQUFHUztRQUNwQyxPQUFPVCxZQUFZUztJQUNyQixNQUFNUjtBQUNSO0FBRU8sU0FBU04sT0FBT3NCLFNBQVMsRUFBRSxHQUFHaEIsZ0JBQWdCO0lBQ25ELE9BQU9ILEtBQUttQixXQUFXLENBQUNqQixVQUFVLEdBQUdTO1FBQ25DLE9BQU9ULFlBQVlTO0lBQ3JCLE1BQU1SO0FBQ1IifQ==
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-nominal",
3
3
  "author": "James Smith",
4
- "version": "1.0.427",
4
+ "version": "1.0.428",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-nominal",
7
7
  "description": "Occam's Nominal language.",
@@ -11,16 +11,16 @@
11
11
  },
12
12
  "dependencies": {
13
13
  "necessary": "^17.6.3",
14
- "occam-furtle": "^3.0.436",
14
+ "occam-furtle": "^3.0.437",
15
15
  "occam-grammar-utilities": "^8.1.22",
16
- "occam-languages": "^2.2.53",
16
+ "occam-languages": "^2.2.54",
17
17
  "occam-query": "^4.1.203"
18
18
  },
19
19
  "devDependencies": {
20
20
  "@swc/core": "1.13.20",
21
21
  "decaf-cli": "^1.0.37",
22
- "occam-model": "^1.0.570",
23
- "occam-server": "^7.0.70",
22
+ "occam-model": "^1.0.571",
23
+ "occam-server": "^7.0.71",
24
24
  "watchful-cli": "^1.7.102"
25
25
  },
26
26
  "scripts": {
@@ -60,13 +60,12 @@ export default define(class Axiom extends Claim {
60
60
  return continuation(signatureVerifies);
61
61
  }
62
62
 
63
- const axiomString = this.getString(); ///
63
+ const signature = this.getSignature(),
64
+ axiomString = this.getString(); ///
64
65
 
65
66
  context.trace(`Verifying the '${axiomString}' axiom's signature...`);
66
67
 
67
- const signature = this.getSignature();
68
-
69
- signature.verify(context, (signatureVerifies) => {
68
+ return signature.verify(context, (signatureVerifies) => {
70
69
  if (signatureVerifies) {
71
70
  context.trace(`...verified the '${axiomString}' axiom's signature.`);
72
71
  }
@@ -4,10 +4,11 @@ import { arrayUtilities } from "necessary";
4
4
  import { Element, breakPointUtilities, continuationUtilities } from "occam-languages";
5
5
 
6
6
  import { define } from "../elements";
7
+ import { declare } from "../utilities/state";
8
+ import { all, every } from "../utilities/continuation";
7
9
  import { instantiateSignature } from "../process/instantiate";
8
10
  import { signatureFromSignatureNode } from "../utilities/element";
9
11
  import { ablate, attempt, reconcile, serialise, unserialise, instantiate } from "../utilities/context";
10
- import {all} from "../utilities/continuation";
11
12
 
12
13
  const { match } = arrayUtilities,
13
14
  { asynchronousEvery } = continuationUtilities,
@@ -67,37 +68,33 @@ export default define(class Signature extends Element {
67
68
  return signature;
68
69
  }
69
70
 
70
- verify(context) {
71
+ verify(context, continuation) {
71
72
  let verifies = false;
72
73
 
73
- const signatureString = this.getString(); ///
74
+ const signatureString = this.getString(); ///
74
75
 
75
76
  context.trace(`Verifying the '${signatureString}' signature...`);
76
77
 
77
- debugger
78
-
79
- const termsValidate = this.validateTerms(context);
80
-
81
- if (termsValidate !== null) {
82
- verifies = true;
83
- }
78
+ declare((state) => {
79
+ const validates = this.validate(state, context, (conclusion, context) => true);
84
80
 
85
- if (verifies) {
86
- this.commit(context);
87
- }
81
+ if (validates) {
82
+ verifies = true;
83
+ }
84
+ });
88
85
 
89
86
  if (verifies) {
90
- context.debug(`...validated the '${signatureString}' signature.`);
87
+ context.debug(`...verified the '${signatureString}' signature.`);
91
88
  }
92
89
 
93
- return verifies;
90
+ return continuation(verifies, context);
94
91
  }
95
92
 
96
93
  validate(state, context, continuation) {
97
94
  let validates;
98
95
 
99
96
  const specificContext = context, ///
100
- signatureString = this.getString(); ///
97
+ signatureString = this.getString();
101
98
 
102
99
  context.trace(`Validating the '${signatureString}' signature...`);
103
100
 
@@ -130,32 +127,27 @@ export default define(class Signature extends Element {
130
127
  return validates;
131
128
  }
132
129
 
133
- validateTerms(context) {
130
+ validateTerms(state, context, continuation) {
134
131
  let termsValidate;
135
132
 
136
133
  const signatureString = this.getString(); ///
137
134
 
138
135
  context.trace(`Validating the '${signatureString}' signature's terms...`);
139
136
 
140
- const terms = [];
137
+ const terms = [],
138
+ validateTerm = this.validateTerm.bind(this);
141
139
 
142
- termsValidate = asynchronousEvery(this.terms, (term) => {
143
- term = term.validate(state, context, (term, context) => { ///
144
- const validatesForwards = true;
145
-
146
- return validatesForwards;
147
- });
140
+ termsValidate = every(this.terms, validateTerm, terms, state, context, (state, context) => {
141
+ let termsValidate;
148
142
 
149
- if (term !== null) {
150
- terms.push(term);
143
+ termsValidate = continuation(state, context);
151
144
 
152
- return true;
145
+ if (termsValidate) {
146
+ this.terms = terms;
153
147
  }
154
- });
155
148
 
156
- if (termsValidate) {
157
- this.terms = terms;
158
- }
149
+ return termsValidate;
150
+ });
159
151
 
160
152
  if (termsValidate){
161
153
  context.debug(`...validated the '${signatureString}' signature's terms.`);
@@ -164,9 +156,38 @@ export default define(class Signature extends Element {
164
156
  return termsValidate
165
157
  }
166
158
 
159
+ validateTerm(term, terms, state, context, continuation) {
160
+ let termValidates;
161
+
162
+ const termString = term.getString(),
163
+ signatureString = this.getString(); ///
164
+
165
+ context.trace(`Validating the '${signatureString}' signature's '${termString}' term...`);
166
+
167
+ termValidates = term.validate(state, context, (term, context) => {
168
+ let validates;
169
+
170
+ validates = continuation(terms, state, context);
171
+
172
+ if (validates) {
173
+ terms.push(term);
174
+ }
175
+
176
+ return validates;
177
+ });
178
+
179
+ if (termValidates) {
180
+ context.debug(`...validated the '${signatureString}' signature's '${termString}' term.`);
181
+ }
182
+
183
+ return termValidates;
184
+ }
185
+
167
186
  unifySignature(signature, context) {
168
187
  let signatureUnifies;
169
188
 
189
+ debugger
190
+
170
191
  const generalSignature = this, ///
171
192
  specificSignature = signature, ///
172
193
  generalSignatureString = generalSignature.getString(),
@@ -1,28 +1,5 @@
1
1
  "use strict";
2
2
 
3
- export function any(array, callback, ...initialArguments) {
4
- let success = false;
5
-
6
- const continuation = initialArguments.pop(),
7
- length = array.length;
8
-
9
- let count = 0;
10
-
11
- for (let index = 0; index < length; index++) {
12
- const element = array[index];
13
-
14
- success = callback(element, ...initialArguments, continuation);
15
-
16
- if (success) {
17
- count++;
18
- }
19
- }
20
-
21
- success = (count >= 1);
22
-
23
- return success;
24
- }
25
-
26
3
  export function one(array, callback, ...initialArguments) {
27
4
  let success = false;
28
5