occam-nominal 1.0.430 → 1.0.431

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.
@@ -105,8 +105,14 @@ const _default = (0, _elements.define)(class SignatureAssertion extends _asserti
105
105
  context.trace(`Validating the '${signatureAssertionString}' signature assertion's reference...`);
106
106
  referenceValidates = this.reference.validate(state, context, (reference, context)=>{
107
107
  let validates = false;
108
- const asiomPresent = context.isAxiomPresentByReference(reference);
109
- if (asiomPresent) {
108
+ const axiom = context.findAxiomByReference(reference);
109
+ if (axiom !== null) {
110
+ const axiomSatisfiable = axiom.isSatisfiable();
111
+ if (axiomSatisfiable) {
112
+ validates = true;
113
+ }
114
+ }
115
+ if (validates) {
110
116
  this.reference = reference;
111
117
  validates = continuation(state, context);
112
118
  }
@@ -140,8 +146,7 @@ const _default = (0, _elements.define)(class SignatureAssertion extends _asserti
140
146
  if (!signatureAssertionUnifies) {
141
147
  return continuation(stepAndFactOrSubproofsUnify);
142
148
  }
143
- debugger;
144
- // stepAndFactOrSubproofsUnify = axiom.unifyStepAndFactOrSubproofs(step, factOrSubproofs, context);
149
+ axiom.unifyStepAndFactOrSubproofs(step, factOrSubproofs, context, continuation);
145
150
  });
146
151
  }, context);
147
152
  }
@@ -168,4 +173,4 @@ const _default = (0, _elements.define)(class SignatureAssertion extends _asserti
168
173
  }
169
174
  });
170
175
 
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zaWduYXR1cmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGFsbCwgZXZlcnkgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRpbnVhdGlvblwiO1xuaW1wb3J0IHsgcmVjb25jaWxlLCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVTaWduYXR1cmVBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgdGVybXNGcm9tU2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSwgcmVmZXJlbmNlRnJvbVNpZ25hdHVyZUFzc2VydGlvbk5vZGUsIHNpZ25hdHVyZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5cbmNvbnN0IHsgYnJlYWtQb2ludEZyb21KU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgU2lnbmF0dXJlQXNzZXJ0aW9uIGV4dGVuZHMgQXNzZXJ0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtcywgcmVmZXJlbmNlKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMudGVybXMgPSB0ZXJtcztcbiAgICB0aGlzLnJlZmVyZW5jZSA9IHJlZmVyZW5jZTtcbiAgfVxuXG4gIGdldFRlcm1zKCkge1xuICAgIHJldHVybiB0aGlzLnRlcm1zO1xuICB9XG5cbiAgZ2V0UmVmZXJlbmNlKCkge1xuICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZTtcbiAgfVxuXG4gIGdldFNpZ25hdHVyZUFzc2VydGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvbk5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gc2lnbmF0dXJlQXNzZXJ0aW9uTm9kZTtcbiAgfVxuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgbGV0IGFzc2VydGlvbjtcblxuICAgIGFzc2VydGlvbiA9IHRoaXMuZmluZEFzc2VydGlvbihjb250ZXh0KTtcblxuICAgIGlmIChhc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHNpZ25hdHVyZUFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHNpZ25hdHVyZUFzc2VydGlvbiwgY29udGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydGlvbiA9IHRoaXM7IC8vL1xuXG4gICAgICBjb25zdCB2YWxpZGF0ZVRlcm1zID0gdGhpcy52YWxpZGF0ZVRlcm1zLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZVJlZmVyZW5jZSA9IHRoaXMudmFsaWRhdGVSZWZlcmVuY2UuYmluZCh0aGlzKTtcblxuICAgICAgdmFsaWRhdGVzID0gYWxsKFtcbiAgICAgICAgdmFsaWRhdGVUZXJtcyxcbiAgICAgICAgdmFsaWRhdGVSZWZlcmVuY2VcbiAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgICBjb250ZXh0LmFkZEFzc2VydGlvbihhc3NlcnRpb24pO1xuXG4gICAgICAgIGNvbnN0IHNpZ25hdHVyZUFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHNpZ25hdHVyZUFzc2VydGlvbiwgY29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVUZXJtKHRlcm0sIHRlcm1zLCBzdGF0ZSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHRlcm1WYWxpZGF0ZXM7XG5cbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgJyR7dGVybVN0cmluZ30nIHRlcm0uLi5gKTtcblxuICAgIHRlcm1WYWxpZGF0ZXMgPSB0ZXJtLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgdGVybXMucHVzaCh0ZXJtKTtcblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHRlcm1zLCBzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgfSk7XG5cbiAgICBpZiAodGVybVZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgJyR7dGVybVN0cmluZ30nIHRlcm0uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlcm1WYWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm1zKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdGVybXNWYWxpZGF0ZTtcblxuICAgIGNvbnN0IHNpZ25hdHVyZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24ncyB0ZXJtcy4uLmApO1xuXG4gICAgY29uc3QgdGVybXMgPSBbXSxcbiAgICAgICAgICB2YWxpZGF0ZVRlcm0gPSB0aGlzLnZhbGlkYXRlVGVybS5iaW5kKHRoaXMpO1xuXG4gICAgdGVybXNWYWxpZGF0ZSA9IGV2ZXJ5KHRoaXMudGVybXMsIHZhbGlkYXRlVGVybSwgdGVybXMsIHN0YXRlLCBjb250ZXh0LCAodGVybXMsIHN0YXRlLCBjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdGVybXNWYWxpZGF0ZTtcblxuICAgICAgdGVybXNWYWxpZGF0ZSA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIGlmICh0ZXJtc1ZhbGlkYXRlKSB7XG4gICAgICAgIHRoaXMudGVybXMgPSB0ZXJtcztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRlcm1zVmFsaWRhdGU7XG4gICAgfSk7XG5cbiAgICBpZiAodGVybXNWYWxpZGF0ZSl7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24ncyB0ZXJtcy5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVybXNWYWxpZGF0ZVxuICB9XG5cbiAgdmFsaWRhdGVSZWZlcmVuY2Uoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCByZWZlcmVuY2VWYWxpZGF0ZXM7XG5cbiAgICBjb25zdCBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgcmVmZXJlbmNlLi4uYCk7XG5cbiAgICByZWZlcmVuY2VWYWxpZGF0ZXMgPSB0aGlzLnJlZmVyZW5jZS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHJlZmVyZW5jZSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcyA9IGZhbHNlO1xuXG4gICAgICBjb25zdCBhc2lvbVByZXNlbnQgPSBjb250ZXh0LmlzQXhpb21QcmVzZW50QnlSZWZlcmVuY2UocmVmZXJlbmNlKTtcblxuICAgICAgaWYgKGFzaW9tUHJlc2VudCkge1xuICAgICAgICB0aGlzLnJlZmVyZW5jZSA9IHJlZmVyZW5jZTtcblxuICAgICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgIH0pO1xuXG4gICAgaWYgKHJlZmVyZW5jZVZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgcmVmZXJlbmNlLmApO1xuICAgIH1cblxuICAgIHJldHVybiByZWZlcmVuY2VWYWxpZGF0ZXM7XG4gIH1cblxuICB1bmlmeUNsYWltKGNsYWltLCBjb250ZXh0KSB7XG4gICAgZGVidWdnZXJcblxuICAgIGxldCBjbGFpbVVuaWZpZXM7XG5cbiAgICBjb25zdCBjbGFpbVN0cmluZyA9IGNsYWltLmdldFN0cmluZygpLFxuICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSB3aXRoIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGF4aW9tID0gY29udGV4dC5maW5kQXhpb21CeVJlZmVyZW5jZSh0aGlzLnJlZmVyZW5jZSk7XG5cbiAgICAgIGF4aW9tLnVuaWZ5U2lnbmF0dXJlKHRoaXMuc2lnbmF0dXJlLCBjb250ZXh0KTtcblxuICAgICAgY2xhaW1VbmlmaWVzID0gYXhpb20udW5pZnlDbGFpbShjbGFpbSwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICBpZiAoY2xhaW1VbmlmaWVzKSB7XG4gICAgICBjb250ZXh0LnRyYWNlKGAuLi51bmlmaWVkIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltIHdpdGggdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uLi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2xhaW1VbmlmaWVzO1xuICB9XG5cbiAgdW5pZnlTdGVwQW5kRmFjdE9yU3VicHJvb2ZzKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHN0ZXBBbmRGYWN0T3JTdWJwcm9vZnNVbmlmeSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIHJlY29uY2lsZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgYXhpb20gPSBjb250ZXh0LmZpbmRBeGlvbUJ5UmVmZXJlbmNlKHRoaXMucmVmZXJlbmNlKSxcbiAgICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvbiA9IHRoaXM7ICAvLy9cblxuICAgICAgcmV0dXJuIGF4aW9tLnVuaWZ5U2lnbmF0dXJlQXNzZXJ0aW9uKHNpZ25hdHVyZUFzc2VydGlvbiwgY29udGV4dCwgKHNpZ25hdHVyZUFzc2VydGlvblVuaWZpZXMpID0+IHtcbiAgICAgICAgaWYgKCFzaWduYXR1cmVBc3NlcnRpb25VbmlmaWVzKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVidWdnZXJcblxuICAgICAgICAvLyBzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkgPSBheGlvbS51bmlmeVN0ZXBBbmRGYWN0T3JTdWJwcm9vZnMoc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0KTtcbiAgICAgIH0pO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlNpZ25hdHVyZUFzc2VydGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IHNpZ25hdHVyZUFzc2VydGlvbiA9IG51bGw7XG5cbiAgICBjb25zdCB7IG5hbWUgfSA9IGpzb247XG5cbiAgICBpZiAodGhpcy5uYW1lID09PSBuYW1lKSB7XG4gICAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgZGVmaW5lZEFzc2VydGlvbk5vZGUgPSBpbnN0YW50aWF0ZVNpZ25hdHVyZUFzc2VydGlvbihzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gZGVmaW5lZEFzc2VydGlvbk5vZGUsICAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgICAgdGVybXMgPSB0ZXJtc0Zyb21TaWduYXR1cmVBc3NlcnRpb25Ob2RlKGRlZmluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgcmVmZXJlbmNlID0gcmVmZXJlbmNlRnJvbVNpZ25hdHVyZUFzc2VydGlvbk5vZGUoZGVmaW5lZEFzc2VydGlvbk5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIGNvbnRleHQgPSBudWxsO1xuXG4gICAgICAgIHNpZ25hdHVyZUFzc2VydGlvbiA9IG5ldyBTaWduYXR1cmVBc3NlcnRpb24oY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtcywgcmVmZXJlbmNlKTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiBzaWduYXR1cmVBc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0ZXAoc3RlcCwgY29udGV4dCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGVwLmdldFN0YXRlbWVudE5vZGUoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb24gPSBzaWduYXR1cmVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzaWduYXR1cmVBc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb24gPSBzaWduYXR1cmVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzaWduYXR1cmVBc3NlcnRpb247XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJTaWduYXR1cmVBc3NlcnRpb24iLCJBc3NlcnRpb24iLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJ0ZXJtcyIsInJlZmVyZW5jZSIsImdldFRlcm1zIiwiZ2V0UmVmZXJlbmNlIiwiZ2V0U2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSIsImdldE5vZGUiLCJzaWduYXR1cmVBc3NlcnRpb25Ob2RlIiwidmFsaWRhdGUiLCJzdGF0ZSIsImNvbnRpbnVhdGlvbiIsInZhbGlkYXRlcyIsInNpZ25hdHVyZUFzc2VydGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiYXNzZXJ0aW9uIiwiZmluZEFzc2VydGlvbiIsInNpZ25hdHVyZUFzc2VydGlvbiIsImRlYnVnIiwidmFsaWRhdGVUZXJtcyIsImJpbmQiLCJ2YWxpZGF0ZVJlZmVyZW5jZSIsImFsbCIsImFkZEFzc2VydGlvbiIsInZhbGlkYXRlVGVybSIsInRlcm0iLCJ0ZXJtVmFsaWRhdGVzIiwidGVybVN0cmluZyIsInB1c2giLCJ0ZXJtc1ZhbGlkYXRlIiwiZXZlcnkiLCJyZWZlcmVuY2VWYWxpZGF0ZXMiLCJhc2lvbVByZXNlbnQiLCJpc0F4aW9tUHJlc2VudEJ5UmVmZXJlbmNlIiwidW5pZnlDbGFpbSIsImNsYWltIiwiY2xhaW1VbmlmaWVzIiwiY2xhaW1TdHJpbmciLCJyZWNvbmNpbGUiLCJheGlvbSIsImZpbmRBeGlvbUJ5UmVmZXJlbmNlIiwidW5pZnlTaWduYXR1cmUiLCJzaWduYXR1cmUiLCJ1bmlmeVN0ZXBBbmRGYWN0T3JTdWJwcm9vZnMiLCJzdGVwIiwiZmFjdE9yU3VicHJvb2ZzIiwic3RlcEFuZEZhY3RPclN1YnByb29mc1VuaWZ5IiwidW5pZnlTaWduYXR1cmVBc3NlcnRpb24iLCJzaWduYXR1cmVBc3NlcnRpb25VbmlmaWVzIiwibmFtZSIsImZyb21KU09OIiwianNvbiIsImluc3RhbnRpYXRlIiwiZGVmaW5lZEFzc2VydGlvbk5vZGUiLCJpbnN0YW50aWF0ZVNpZ25hdHVyZUFzc2VydGlvbiIsInRlcm1zRnJvbVNpZ25hdHVyZUFzc2VydGlvbk5vZGUiLCJyZWZlcmVuY2VGcm9tU2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSIsImZyb21TdGVwIiwic3RhdGVtZW50Tm9kZSIsImdldFN0YXRlbWVudE5vZGUiLCJzaWduYXR1cmVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSIsImZyb21TdGF0ZW1lbnQiLCJzdGF0ZW1lbnQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWNBOzs7ZUFBQTs7O2dDQVpvQztrRUFFZDswQkFFQzs4QkFDSTt5QkFDWTs2QkFDTzt5QkFDNEU7Ozs7OztBQUUxSCxNQUFNLEVBQUVBLGtCQUFrQixFQUFFLEdBQUdDLG1DQUFtQjtNQUVsRCxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLDJCQUEyQkMsa0JBQVM7SUFDOUQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxLQUFLLEVBQUVDLFNBQVMsQ0FBRTtRQUMvRCxLQUFLLENBQUNMLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsS0FBSyxHQUFHQTtRQUNiLElBQUksQ0FBQ0MsU0FBUyxHQUFHQTtJQUNuQjtJQUVBQyxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUNGLEtBQUs7SUFDbkI7SUFFQUcsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDRixTQUFTO0lBQ3ZCO0lBRUFHLDRCQUE0QjtRQUMxQixNQUFNTixPQUFPLElBQUksQ0FBQ08sT0FBTyxJQUNuQkMs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
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zaWduYXR1cmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGFsbCwgZXZlcnkgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRpbnVhdGlvblwiO1xuaW1wb3J0IHsgcmVjb25jaWxlLCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVTaWduYXR1cmVBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgdGVybXNGcm9tU2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSwgcmVmZXJlbmNlRnJvbVNpZ25hdHVyZUFzc2VydGlvbk5vZGUsIHNpZ25hdHVyZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5cbmNvbnN0IHsgYnJlYWtQb2ludEZyb21KU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgU2lnbmF0dXJlQXNzZXJ0aW9uIGV4dGVuZHMgQXNzZXJ0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtcywgcmVmZXJlbmNlKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMudGVybXMgPSB0ZXJtcztcbiAgICB0aGlzLnJlZmVyZW5jZSA9IHJlZmVyZW5jZTtcbiAgfVxuXG4gIGdldFRlcm1zKCkge1xuICAgIHJldHVybiB0aGlzLnRlcm1zO1xuICB9XG5cbiAgZ2V0UmVmZXJlbmNlKCkge1xuICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZTtcbiAgfVxuXG4gIGdldFNpZ25hdHVyZUFzc2VydGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvbk5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gc2lnbmF0dXJlQXNzZXJ0aW9uTm9kZTtcbiAgfVxuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgbGV0IGFzc2VydGlvbjtcblxuICAgIGFzc2VydGlvbiA9IHRoaXMuZmluZEFzc2VydGlvbihjb250ZXh0KTtcblxuICAgIGlmIChhc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHNpZ25hdHVyZUFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHNpZ25hdHVyZUFzc2VydGlvbiwgY29udGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydGlvbiA9IHRoaXM7IC8vL1xuXG4gICAgICBjb25zdCB2YWxpZGF0ZVRlcm1zID0gdGhpcy52YWxpZGF0ZVRlcm1zLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZVJlZmVyZW5jZSA9IHRoaXMudmFsaWRhdGVSZWZlcmVuY2UuYmluZCh0aGlzKTtcblxuICAgICAgdmFsaWRhdGVzID0gYWxsKFtcbiAgICAgICAgdmFsaWRhdGVUZXJtcyxcbiAgICAgICAgdmFsaWRhdGVSZWZlcmVuY2VcbiAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgICBjb250ZXh0LmFkZEFzc2VydGlvbihhc3NlcnRpb24pO1xuXG4gICAgICAgIGNvbnN0IHNpZ25hdHVyZUFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHNpZ25hdHVyZUFzc2VydGlvbiwgY29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVUZXJtKHRlcm0sIHRlcm1zLCBzdGF0ZSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHRlcm1WYWxpZGF0ZXM7XG5cbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgJyR7dGVybVN0cmluZ30nIHRlcm0uLi5gKTtcblxuICAgIHRlcm1WYWxpZGF0ZXMgPSB0ZXJtLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgdGVybXMucHVzaCh0ZXJtKTtcblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHRlcm1zLCBzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgfSk7XG5cbiAgICBpZiAodGVybVZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgJyR7dGVybVN0cmluZ30nIHRlcm0uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlcm1WYWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm1zKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdGVybXNWYWxpZGF0ZTtcblxuICAgIGNvbnN0IHNpZ25hdHVyZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24ncyB0ZXJtcy4uLmApO1xuXG4gICAgY29uc3QgdGVybXMgPSBbXSxcbiAgICAgICAgICB2YWxpZGF0ZVRlcm0gPSB0aGlzLnZhbGlkYXRlVGVybS5iaW5kKHRoaXMpO1xuXG4gICAgdGVybXNWYWxpZGF0ZSA9IGV2ZXJ5KHRoaXMudGVybXMsIHZhbGlkYXRlVGVybSwgdGVybXMsIHN0YXRlLCBjb250ZXh0LCAodGVybXMsIHN0YXRlLCBjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdGVybXNWYWxpZGF0ZTtcblxuICAgICAgdGVybXNWYWxpZGF0ZSA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIGlmICh0ZXJtc1ZhbGlkYXRlKSB7XG4gICAgICAgIHRoaXMudGVybXMgPSB0ZXJtcztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRlcm1zVmFsaWRhdGU7XG4gICAgfSk7XG5cbiAgICBpZiAodGVybXNWYWxpZGF0ZSl7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24ncyB0ZXJtcy5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVybXNWYWxpZGF0ZVxuICB9XG5cbiAgdmFsaWRhdGVSZWZlcmVuY2Uoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCByZWZlcmVuY2VWYWxpZGF0ZXM7XG5cbiAgICBjb25zdCBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uJ3MgcmVmZXJlbmNlLi4uYCk7XG5cbiAgICByZWZlcmVuY2VWYWxpZGF0ZXMgPSB0aGlzLnJlZmVyZW5jZS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHJlZmVyZW5jZSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcyA9IGZhbHNlO1xuXG4gICAgICBjb25zdCBheGlvbSA9IGNvbnRleHQuZmluZEF4aW9tQnlSZWZlcmVuY2UocmVmZXJlbmNlKTtcblxuICAgICAgaWYgKGF4aW9tICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGF4aW9tU2F0aXNmaWFibGUgPSBheGlvbS5pc1NhdGlzZmlhYmxlKCk7XG5cbiAgICAgICAgaWYgKGF4aW9tU2F0aXNmaWFibGUpIHtcbiAgICAgICAgICB2YWxpZGF0ZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgICAgdGhpcy5yZWZlcmVuY2UgPSByZWZlcmVuY2U7XG5cbiAgICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICB9KTtcblxuICAgIGlmIChyZWZlcmVuY2VWYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbidzIHJlZmVyZW5jZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlVmFsaWRhdGVzO1xuICB9XG5cbiAgdW5pZnlDbGFpbShjbGFpbSwgY29udGV4dCkge1xuICAgIGRlYnVnZ2VyXG5cbiAgICBsZXQgY2xhaW1VbmlmaWVzO1xuXG4gICAgY29uc3QgY2xhaW1TdHJpbmcgPSBjbGFpbS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0gd2l0aCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmVjb25jaWxlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBheGlvbSA9IGNvbnRleHQuZmluZEF4aW9tQnlSZWZlcmVuY2UodGhpcy5yZWZlcmVuY2UpO1xuXG4gICAgICBheGlvbS51bmlmeVNpZ25hdHVyZSh0aGlzLnNpZ25hdHVyZSwgY29udGV4dCk7XG5cbiAgICAgIGNsYWltVW5pZmllcyA9IGF4aW9tLnVuaWZ5Q2xhaW0oY2xhaW0sIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgaWYgKGNsYWltVW5pZmllcykge1xuICAgICAgY29udGV4dC50cmFjZShgLi4udW5pZmllZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSB3aXRoIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLi4uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsYWltVW5pZmllcztcbiAgfVxuXG4gIHVuaWZ5U3RlcEFuZEZhY3RPclN1YnByb29mcyhzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCBzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkgPSBmYWxzZTtcblxuICAgIHJldHVybiByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGF4aW9tID0gY29udGV4dC5maW5kQXhpb21CeVJlZmVyZW5jZSh0aGlzLnJlZmVyZW5jZSksXG4gICAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb24gPSB0aGlzOyAgLy8vXG5cbiAgICAgIHJldHVybiBheGlvbS51bmlmeVNpZ25hdHVyZUFzc2VydGlvbihzaWduYXR1cmVBc3NlcnRpb24sIGNvbnRleHQsIChzaWduYXR1cmVBc3NlcnRpb25VbmlmaWVzKSA9PiB7XG4gICAgICAgIGlmICghc2lnbmF0dXJlQXNzZXJ0aW9uVW5pZmllcykge1xuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc3RlcEFuZEZhY3RPclN1YnByb29mc1VuaWZ5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF4aW9tLnVuaWZ5U3RlcEFuZEZhY3RPclN1YnByb29mcyhzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG4gICAgICB9KTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTaWduYXR1cmVBc3NlcnRpb25cIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBzaWduYXR1cmVBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uO1xuXG4gICAgaWYgKHRoaXMubmFtZSA9PT0gbmFtZSkge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIGRlZmluZWRBc3NlcnRpb25Ob2RlID0gaW5zdGFudGlhdGVTaWduYXR1cmVBc3NlcnRpb24oc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IGRlZmluZWRBc3NlcnRpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgICAgIHRlcm1zID0gdGVybXNGcm9tU2lnbmF0dXJlQXNzZXJ0aW9uTm9kZShkZWZpbmVkQXNzZXJ0aW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHJlZmVyZW5jZSA9IHJlZmVyZW5jZUZyb21TaWduYXR1cmVBc3NlcnRpb25Ob2RlKGRlZmluZWRBc3NlcnRpb25Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgICAgICBzaWduYXR1cmVBc3NlcnRpb24gPSBuZXcgU2lnbmF0dXJlQXNzZXJ0aW9uKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybXMsIHJlZmVyZW5jZSk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2lnbmF0dXJlQXNzZXJ0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGVwKHN0ZXAsIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RlcC5nZXRTdGF0ZW1lbnROb2RlKCksXG4gICAgICAgICAgc2lnbmF0dXJlQXNzZXJ0aW9uID0gc2lnbmF0dXJlQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc2lnbmF0dXJlQXNzZXJ0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgICAgc2lnbmF0dXJlQXNzZXJ0aW9uID0gc2lnbmF0dXJlQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc2lnbmF0dXJlQXNzZXJ0aW9uO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiU2lnbmF0dXJlQXNzZXJ0aW9uIiwiQXNzZXJ0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidGVybXMiLCJyZWZlcmVuY2UiLCJnZXRUZXJtcyIsImdldFJlZmVyZW5jZSIsImdldFNpZ25hdHVyZUFzc2VydGlvbk5vZGUiLCJnZXROb2RlIiwic2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSIsInZhbGlkYXRlIiwic3RhdGUiLCJjb250aW51YXRpb24iLCJ2YWxpZGF0ZXMiLCJzaWduYXR1cmVBc3NlcnRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImFzc2VydGlvbiIsImZpbmRBc3NlcnRpb24iLCJzaWduYXR1cmVBc3NlcnRpb24iLCJkZWJ1ZyIsInZhbGlkYXRlVGVybXMiLCJiaW5kIiwidmFsaWRhdGVSZWZlcmVuY2UiLCJhbGwiLCJhZGRBc3NlcnRpb24iLCJ2YWxpZGF0ZVRlcm0iLCJ0ZXJtIiwidGVybVZhbGlkYXRlcyIsInRlcm1TdHJpbmciLCJwdXNoIiwidGVybXNWYWxpZGF0ZSIsImV2ZXJ5IiwicmVmZXJlbmNlVmFsaWRhdGVzIiwiYXhpb20iLCJmaW5kQXhpb21CeVJlZmVyZW5jZSIsImF4aW9tU2F0aXNmaWFibGUiLCJpc1NhdGlzZmlhYmxlIiwidW5pZnlDbGFpbSIsImNsYWltIiwiY2xhaW1VbmlmaWVzIiwiY2xhaW1TdHJpbmciLCJyZWNvbmNpbGUiLCJ1bmlmeVNpZ25hdHVyZSIsInNpZ25hdHVyZSIsInVuaWZ5U3RlcEFuZEZhY3RPclN1YnByb29mcyIsInN0ZXAiLCJmYWN0T3JTdWJwcm9vZnMiLCJzdGVwQW5kRmFjdE9yU3VicHJvb2ZzVW5pZnkiLCJ1bmlmeVNpZ25hdHVyZUFzc2VydGlvbiIsInNpZ25hdHVyZUFzc2VydGlvblVuaWZpZXMiLCJuYW1lIiwiZnJvbUpTT04iLCJqc29uIiwiaW5zdGFudGlhdGUiLCJkZWZpbmVkQXNzZXJ0aW9uTm9kZSIsImluc3RhbnRpYXRlU2lnbmF0dXJlQXNzZXJ0aW9uIiwidGVybXNGcm9tU2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSIsInJlZmVyZW5jZUZyb21TaWduYXR1cmVBc3NlcnRpb25Ob2RlIiwiZnJvbVN0ZXAiLCJzdGF0ZW1lbnROb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsInNpZ25hdHVyZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIiwiZnJvbVN0YXRlbWVudCIsInN0YXRlbWVudCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBY0E7OztlQUFBOzs7Z0NBWm9DO2tFQUVkOzBCQUVDOzhCQUNJO3lCQUNZOzZCQUNPO3lCQUM0RTs7Ozs7O0FBRTFILE1BQU0sRUFBRUEsa0JBQWtCLEVBQUUsR0FBR0MsbUNBQW1CO01BRWxELFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsMkJBQTJCQyxrQkFBUztJQUM5RCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLEtBQUssRUFBRUMsU0FBUyxDQUFFO1FBQy9ELEtBQUssQ0FBQ0wsU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDQyxLQUFLLEdBQUdBO1FBQ2IsSUFBSSxDQUFDQyxTQUFTLEdBQUdBO0lBQ25CO0lBRUFDLFdBQVc7UUFDVCxPQUFPLElBQUksQ0FB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
@@ -23,8 +23,6 @@ const _default = (0, _elements.define)(class BracketedConstructor extends _const
23
23
  }
24
24
  unifyTerm(term, state, context, continuation) {
25
25
  let termUnifiesWithBracketedConstructor;
26
- const termString = term.getString();
27
- context.trace(`Unifying the '${termString}' term with the bracketed constructor...`);
28
26
  termUnifiesWithBracketedConstructor = super.unifyTerm(term, context, (term, context)=>{
29
27
  let termUnifies = false;
30
28
  const termNode = term.getNode(), singularTermNode = termNode.getSingularTermNode();
@@ -43,12 +41,9 @@ const _default = (0, _elements.define)(class BracketedConstructor extends _const
43
41
  }
44
42
  return termUnifies;
45
43
  });
46
- if (termUnifiesWithBracketedConstructor) {
47
- context.debug(`...unified the '${termString}' term with the bracketed constructor.`);
48
- }
49
44
  return termUnifiesWithBracketedConstructor;
50
45
  }
51
46
  static name = "BracketedConstructor";
52
47
  });
53
48
 
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2NvbnN0cnVjdG9yL2JyYWNrZXRlZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IENvbnN0cnVjdG9yIGZyb20gXCIuLi9jb25zdHJ1Y3RvclwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IHRlcm1Gcm9tVGVybU5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIEJyYWNrZXRlZENvbnN0cnVjdG9yIGV4dGVuZHMgQ29uc3RydWN0b3Ige1xuICBnZXRCcmFja2V0ZWRDb25zdHJ1Y3Rvck5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGJyYWNrZXRlZENvbnN0cnVjdG9yTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBicmFja2V0ZWRDb25zdHJ1Y3Rvck5vZGU7XG4gIH1cblxuICB1bmlmeVRlcm0odGVybSwgc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB0ZXJtVW5pZmllc1dpdGhCcmFja2V0ZWRDb25zdHJ1Y3RvcjtcblxuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIHdpdGggdGhlIGJyYWNrZXRlZCBjb25zdHJ1Y3Rvci4uLmApO1xuXG4gICAgdGVybVVuaWZpZXNXaXRoQnJhY2tldGVkQ29uc3RydWN0b3IgPSBzdXBlci51bmlmeVRlcm0odGVybSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQpID0+IHtcbiAgICAgIGxldCB0ZXJtVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgICBjb25zdCB0ZXJtTm9kZSA9IHRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgICAgICAgc2luZ3VsYXJUZXJtTm9kZSA9IHRlcm1Ob2RlLmdldFNpbmd1bGFyVGVybU5vZGUoKTtcblxuICAgICAgaWYgKHNpbmd1bGFyVGVybU5vZGUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgYnJhY2tldGxlc3NUZXJtTm9kZSA9IHNpbmd1bGFyVGVybU5vZGUsIC8vL1xuICAgICAgICAgICAgICBicmFja2V0bGVzc1Rlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKGJyYWNrZXRsZXNzVGVybU5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBicmFja2V0bGVzc1Rlcm1WYWxpZGF0ZXMgPSBicmFja2V0bGVzc1Rlcm0udmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChicmFja2V0bGVzc1Rlcm0sIGNvbnRleHQpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdHlwZSA9IGJyYWNrZXRsZXNzVGVybS5nZXRUeXBlKCksXG4gICAgICAgICAgICAgICAgICAgICAgcHJvdmlzaW9uYWwgPSBicmFja2V0bGVzc1Rlcm0uaXNQcm92aXNpb25hbCgpO1xuXG4gICAgICAgICAgICAgICAgdGVybS5zZXRUeXBlKHR5cGUpO1xuXG4gICAgICAgICAgICAgICAgdGVybS5zZXRQcm92aXNpb25hbChwcm92aXNpb25hbCk7XG5cbiAgICAgICAgICAgICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24odGVybSwgY29udGV4dCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICBpZiAoYnJhY2tldGxlc3NUZXJtVmFsaWRhdGVzKSB7XG4gICAgICAgICAgdGVybVVuaWZpZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0ZXJtVW5pZmllcztcbiAgICB9KTtcblxuICAgIGlmICh0ZXJtVW5pZmllc1dpdGhCcmFja2V0ZWRDb25zdHJ1Y3Rvcikge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gd2l0aCB0aGUgYnJhY2tldGVkIGNvbnN0cnVjdG9yLmApO1xuICAgIH1cblxuICAgIHJldHVybiB0ZXJtVW5pZmllc1dpdGhCcmFja2V0ZWRDb25zdHJ1Y3RvcjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJCcmFja2V0ZWRDb25zdHJ1Y3RvclwiO1xufSk7XG4iXSwibmFtZXMiOlsiZGVmaW5lIiwiQnJhY2tldGVkQ29uc3RydWN0b3IiLCJDb25zdHJ1Y3RvciIsImdldEJyYWNrZXRlZENvbnN0cnVjdG9yTm9kZSIsIm5vZGUiLCJnZXROb2RlIiwiYnJhY2tldGVkQ29uc3RydWN0b3JOb2RlIiwidW5pZnlUZXJtIiwidGVybSIsInN0YXRlIiwiY29udGV4dCIsImNvbnRpbnVhdGlvbiIsInRlcm1VbmlmaWVzV2l0aEJyYWNrZXRlZENvbnN0cnVjdG9yIiwidGVybVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwidGVybVVuaWZpZXMiLCJ0ZXJtTm9kZSIsInNpbmd1bGFyVGVybU5vZGUiLCJnZXRTaW5ndWxhclRlcm1Ob2RlIiwiYnJhY2tldGxlc3NUZXJtTm9kZSIsImJyYWNrZXRsZXNzVGVybSIsInRlcm1Gcm9tVGVybU5vZGUiLCJicmFja2V0bGVzc1Rlcm1WYWxpZGF0ZXMiLCJ2YWxpZGF0ZSIsInZhbGlkYXRlcyIsInR5cGUiLCJnZXRUeXBlIiwicHJvdmlzaW9uYWwiLCJpc1Byb3Zpc2lvbmFsIiwic2V0VHlwZSIsInNldFByb3Zpc2lvbmFsIiwiZGVidWciLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFPQTs7O2VBQUE7OztvRUFMd0I7MEJBRUQ7eUJBQ1U7Ozs7OztNQUVqQyxXQUFlQSxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLDZCQUE2QkMsb0JBQVc7SUFDbEVDLDhCQUE4QjtRQUM1QixNQUFNQyxPQUFPLElBQUksQ0FBQ0MsT0FBTyxJQUNuQkMsMkJBQTJCRixNQUFPLEdBQUc7UUFFM0MsT0FBT0U7SUFDVDtJQUVBQyxVQUFVQyxJQUFJLEVBQUVDLEtBQUssRUFBRUMsT0FBTyxFQUFFQyxZQUFZLEVBQUU7UUFDNUMsSUFBSUM7UUFFSixNQUFNQyxhQUFhTCxLQUFLTSxTQUFTO1FBRWpDSixRQUFRSyxLQUFLLENBQUMsQ0FBQyxjQUFjLEVBQUVGLFdBQVcsd0NBQXdDLENBQUM7UUFFbkZELHNDQUFzQyxLQUFLLENBQUNMLFVBQVVDLE1BQU1FLFNBQVMsQ0FBQ0YsTUFBTUU7WUFDMUUsSUFBSU0sY0FBYztZQUVsQixNQUFNQyxXQUFXVCxLQUFLSCxPQUFPLElBQ3ZCYSxtQkFBbUJELFNBQVNFLG1CQUFtQjtZQUVyRCxJQUFJRCxxQkFBcUIsTUFBTTtnQkFDN0IsTUFBTUUsc0JBQXNCRixrQkFDdEJHLGtCQUFrQkMsSUFBQUEseUJBQWdCLEVBQUNGLHFCQUFxQlYsVUFDeERhLDJCQUEyQkYsZ0JBQWdCRyxRQUFRLENBQUNmLE9BQU9DLFNBQVMsQ0FBQ1csaUJBQWlCWDtvQkFDcEYsSUFBSWU7b0JBRUosTUFBTUMsT0FBT0wsZ0JBQWdCTSxPQUFPLElBQzlCQyxjQUFjUCxnQkFBZ0JRLGFBQWE7b0JBRWpEckIsS0FBS3NCLE9BQU8sQ0FBQ0o7b0JBRWJsQixLQUFLdUIsY0FBYyxDQUFDSDtvQkFFcEJILFlBQVlkLGFBQWFILE1BQU1FO29CQUUvQixPQUFPZTtnQkFDVDtnQkFFTixJQUFJRiwwQkFBMEI7b0JBQzVCUCxjQUFjO2dCQUNoQjtZQUNGO1lBRUEsT0FBT0E7UUFDVDtRQUVBLElBQUlKLHFDQUFxQztZQUN2Q0YsUUFBUXNCLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFbkIsV0FBVyxzQ0FBc0MsQ0FBQztRQUNyRjtRQUVBLE9BQU9EO0lBQ1Q7SUFFQSxPQUFPcUIsT0FBTyx1QkFBdUI7QUFDdkMifQ==
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2NvbnN0cnVjdG9yL2JyYWNrZXRlZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IENvbnN0cnVjdG9yIGZyb20gXCIuLi9jb25zdHJ1Y3RvclwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IHRlcm1Gcm9tVGVybU5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIEJyYWNrZXRlZENvbnN0cnVjdG9yIGV4dGVuZHMgQ29uc3RydWN0b3Ige1xuICBnZXRCcmFja2V0ZWRDb25zdHJ1Y3Rvck5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGJyYWNrZXRlZENvbnN0cnVjdG9yTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBicmFja2V0ZWRDb25zdHJ1Y3Rvck5vZGU7XG4gIH1cblxuICB1bmlmeVRlcm0odGVybSwgc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB0ZXJtVW5pZmllc1dpdGhCcmFja2V0ZWRDb25zdHJ1Y3RvcjtcblxuICAgIHRlcm1VbmlmaWVzV2l0aEJyYWNrZXRlZENvbnN0cnVjdG9yID0gc3VwZXIudW5pZnlUZXJtKHRlcm0sIGNvbnRleHQsICh0ZXJtLCBjb250ZXh0KSA9PiB7XG4gICAgICBsZXQgdGVybVVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgY29uc3QgdGVybU5vZGUgPSB0ZXJtLmdldE5vZGUoKSxcbiAgICAgICAgICAgIHNpbmd1bGFyVGVybU5vZGUgPSB0ZXJtTm9kZS5nZXRTaW5ndWxhclRlcm1Ob2RlKCk7XG5cbiAgICAgIGlmIChzaW5ndWxhclRlcm1Ob2RlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGJyYWNrZXRsZXNzVGVybU5vZGUgPSBzaW5ndWxhclRlcm1Ob2RlLCAvLy9cbiAgICAgICAgICAgICAgYnJhY2tldGxlc3NUZXJtID0gdGVybUZyb21UZXJtTm9kZShicmFja2V0bGVzc1Rlcm1Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgYnJhY2tldGxlc3NUZXJtVmFsaWRhdGVzID0gYnJhY2tldGxlc3NUZXJtLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoYnJhY2tldGxlc3NUZXJtLCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBicmFja2V0bGVzc1Rlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICAgICAgICAgIHByb3Zpc2lvbmFsID0gYnJhY2tldGxlc3NUZXJtLmlzUHJvdmlzaW9uYWwoKTtcblxuICAgICAgICAgICAgICAgIHRlcm0uc2V0VHlwZSh0eXBlKTtcblxuICAgICAgICAgICAgICAgIHRlcm0uc2V0UHJvdmlzaW9uYWwocHJvdmlzaW9uYWwpO1xuXG4gICAgICAgICAgICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHRlcm0sIGNvbnRleHQpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGJyYWNrZXRsZXNzVGVybVZhbGlkYXRlcykge1xuICAgICAgICAgIHRlcm1VbmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGVybVVuaWZpZXM7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGVybVVuaWZpZXNXaXRoQnJhY2tldGVkQ29uc3RydWN0b3I7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQnJhY2tldGVkQ29uc3RydWN0b3JcIjtcbn0pO1xuIl0sIm5hbWVzIjpbImRlZmluZSIsIkJyYWNrZXRlZENvbnN0cnVjdG9yIiwiQ29uc3RydWN0b3IiLCJnZXRCcmFja2V0ZWRDb25zdHJ1Y3Rvck5vZGUiLCJub2RlIiwiZ2V0Tm9kZSIsImJyYWNrZXRlZENvbnN0cnVjdG9yTm9kZSIsInVuaWZ5VGVybSIsInRlcm0iLCJzdGF0ZSIsImNvbnRleHQiLCJjb250aW51YXRpb24iLCJ0ZXJtVW5pZmllc1dpdGhCcmFja2V0ZWRDb25zdHJ1Y3RvciIsInRlcm1VbmlmaWVzIiwidGVybU5vZGUiLCJzaW5ndWxhclRlcm1Ob2RlIiwiZ2V0U2luZ3VsYXJUZXJtTm9kZSIsImJyYWNrZXRsZXNzVGVybU5vZGUiLCJicmFja2V0bGVzc1Rlcm0iLCJ0ZXJtRnJvbVRlcm1Ob2RlIiwiYnJhY2tldGxlc3NUZXJtVmFsaWRhdGVzIiwidmFsaWRhdGUiLCJ2YWxpZGF0ZXMiLCJ0eXBlIiwiZ2V0VHlwZSIsInByb3Zpc2lvbmFsIiwiaXNQcm92aXNpb25hbCIsInNldFR5cGUiLCJzZXRQcm92aXNpb25hbCIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQU9BOzs7ZUFBQTs7O29FQUx3QjswQkFFRDt5QkFDVTs7Ozs7O01BRWpDLFdBQWVBLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsNkJBQTZCQyxvQkFBVztJQUNsRUMsOEJBQThCO1FBQzVCLE1BQU1DLE9BQU8sSUFBSSxDQUFDQyxPQUFPLElBQ25CQywyQkFBMkJGLE1BQU8sR0FBRztRQUUzQyxPQUFPRTtJQUNUO0lBRUFDLFVBQVVDLElBQUksRUFBRUMsS0FBSyxFQUFFQyxPQUFPLEVBQUVDLFlBQVksRUFBRTtRQUM1QyxJQUFJQztRQUVKQSxzQ0FBc0MsS0FBSyxDQUFDTCxVQUFVQyxNQUFNRSxTQUFTLENBQUNGLE1BQU1FO1lBQzFFLElBQUlHLGNBQWM7WUFFbEIsTUFBTUMsV0FBV04sS0FBS0gsT0FBTyxJQUN2QlUsbUJBQW1CRCxTQUFTRSxtQkFBbUI7WUFFckQsSUFBSUQscUJBQXFCLE1BQU07Z0JBQzdCLE1BQU1FLHNCQUFzQkYsa0JBQ3RCRyxrQkFBa0JDLElBQUFBLHlCQUFnQixFQUFDRixxQkFBcUJQLFVBQ3hEVSwyQkFBMkJGLGdCQUFnQkcsUUFBUSxDQUFDWixPQUFPQyxTQUFTLENBQUNRLGlCQUFpQlI7b0JBQ3BGLElBQUlZO29CQUVKLE1BQU1DLE9BQU9MLGdCQUFnQk0sT0FBTyxJQUM5QkMsY0FBY1AsZ0JBQWdCUSxhQUFhO29CQUVqRGxCLEtBQUttQixPQUFPLENBQUNKO29CQUViZixLQUFLb0IsY0FBYyxDQUFDSDtvQkFFcEJILFlBQVlYLGFBQWFILE1BQU1FO29CQUUvQixPQUFPWTtnQkFDVDtnQkFFTixJQUFJRiwwQkFBMEI7b0JBQzVCUCxjQUFjO2dCQUNoQjtZQUNGO1lBRUEsT0FBT0E7UUFDVDtRQUVBLE9BQU9EO0lBQ1Q7SUFFQSxPQUFPaUIsT0FBTyx1QkFBdUI7QUFDdkMifQ==
@@ -152,7 +152,7 @@ const _default = (0, _elements.define)(class Step extends _fact.default {
152
152
  if (this.signatureAssertion !== null) {
153
153
  const stepString = this.getString(), signatureAssertionString = this.signatureAssertion.getString();
154
154
  context.trace(`Validating the '${stepString}' step's '${signatureAssertionString}' signature assertion...`);
155
- (0, _state.derive)((state)=>{
155
+ (0, _state.declare)((state)=>{
156
156
  signatureAssertionValidates = this.signatureAssertion.validate(state, context, (signatureAssertion, contwext)=>{
157
157
  let validates;
158
158
  this.signatureAssertion = signatureAssertion;
@@ -184,4 +184,4 @@ const _default = (0, _elements.define)(class Step extends _fact.default {
184
184
  static name = "Step";
185
185
  });
186
186
 
187
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2ZhY3Qvc3RlcC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBGYWN0IGZyb20gXCIuLi9mYWN0XCI7XG5cbmltcG9ydCB7IGFsbCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGludWF0aW9uXCI7XG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGF0dGVtcHQgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IHVuaWZ5U3RlcHMgfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy91bmlmaWNhdGlvblwiO1xuaW1wb3J0IHsgZGVyaXZlLCBkZWNsYXJlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuXG5jb25zdCB7IGJyZWFrYWJsZSB9ID0gYnJlYWtQb2ludFV0aWxpdGllcyxcbiAgICAgIHsgYmFja3dhcmRzU29tZSB9ID0gYXJyYXlVdGlsaXRpZXMsXG4gICAgICB7IGFzeW5jaHJvbm91c1NvbWUgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFN0ZXAgZXh0ZW5kcyBGYWN0IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBzdGF0ZW1lbnQsIHJlZmVyZW5jZSwgcHJvY2VkdXJlQ2FsbCwgc2NoZW1hQXNzZXJ0aW9uLCBzaWduYXR1cmVBc3NlcnRpb24pIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudCwgcmVmZXJlbmNlLCBwcm9jZWR1cmVDYWxsKTtcblxuICAgIHRoaXMuc2NoZW1hQXNzZXJ0aW9uID0gc2NoZW1hQXNzZXJ0aW9uO1xuICAgIHRoaXMuc2lnbmF0dXJlQXNzZXJ0aW9uID0gc2lnbmF0dXJlQXNzZXJ0aW9uO1xuICB9XG5cbiAgZ2V0U2NoZW1hQXNzZXJ0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnNjaGVtYUFzc2VydGlvbjtcbiAgfVxuXG4gIGdldFNpZ25hdHVyZUFzc2VydGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zaWduYXR1cmVBc3NlcnRpb247XG4gIH1cblxuICBnZXRTdGVwTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgc3RlcE5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gc3RlcE5vZGU7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnROb2RlKCkge1xuICAgIGNvbnN0IHN0YXRlbWVudCA9IHRoaXMuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCk7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50Tm9kZTtcbiAgfVxuXG4gIGlzU3RlcCgpIHtcbiAgICBjb25zdCBzdGVwID0gdHJ1ZTtcblxuICAgIHJldHVybiBzdGVwO1xuICB9XG5cbiAgaWREZWNsYXJlZCgpIHtcbiAgICBjb25zdCBxdWFsaWZpZWQgPSB0aGlzLmlzUXVhbGlmaWVkKCksXG4gICAgICAgICAgZGVjbGFyZWQgPSBxdWFsaWZpZWQ7IC8vL1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkO1xuICB9XG5cbiAgaXNRdWFsaWZpZWQoKSB7XG4gICAgY29uc3QgcXVhbGlmaWVkID0gKCh0aGlzLnJlZmVyZW5jZSAhPT0gbnVsbCkgfHwgKHRoaXMuc2NoZW1hQXNzZXJ0aW9uICE9PSBudWxsKSB8fCAodGhpcy5zaWduYXR1cmVBc3NlcnRpb24gIT09IG51bGwpKTtcblxuICAgIHJldHVybiBxdWFsaWZpZWQ7XG4gIH1cblxuICBpc1VucXVhbGlmaWVkKCkge1xuICAgIGNvbnN0IHF1YWxpZmllZCA9IHRoaXMuaXNRdWFsaWZpZWQoKSxcbiAgICAgICAgICB1bnF1YWxpZmllZCA9ICFxdWFsaWZpZWQ7XG5cbiAgICByZXR1cm4gdW5xdWFsaWZpZWQ7XG4gIH1cblxuICBpc05vbnNlbnNpY2FsKCkge1xuICAgIGNvbnN0IG5vbnNlbnNpY2FsID0gKHRoaXMuc3RhdGVtZW50ID09PSBudWxsKTtcblxuICAgIHJldHVybiBub25zZW5zaWNhbDtcbiAgfVxuXG4gIGNvbXBhcmVGYWN0T3JTdWJwcm9vZnMoZmFjdE9yU3VicHJvb2YsIGNvbnRleHQpIHtcbiAgICBsZXQgY29tcGFyZXNUb0ZhY3RPclN1YnByb29mcztcblxuICAgIGNvbnN0IHN0ZXAgPSB0aGlzOyAvLy9cblxuICAgIGNvbXBhcmVzVG9GYWN0T3JTdWJwcm9vZnMgPSBiYWNrd2FyZHNTb21lKGZhY3RPclN1YnByb29mLCAoZmFjdE9yU3VicHJvb2YpID0+IHtcbiAgICAgIGNvbnN0IGZhY3RPclN1YnByb29mQ29tcGFyZXNUb1N0YXRlbWVudCA9IGZhY3RPclN1YnByb29mLmNvbXBhcmVTdGVwKHN0ZXAsIGNvbnRleHQpO1xuXG4gICAgICBpZiAoZmFjdE9yU3VicHJvb2ZDb21wYXJlc1RvU3RhdGVtZW50KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9GYWN0T3JTdWJwcm9vZnM7XG4gIH1cblxuICB2ZXJpZnkgPSBicmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2ZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3RlcFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcC4uLmApO1xuXG4gICAgY29uc3Qgbm9uc2Vuc2ljYWwgPSB0aGlzLmlzTm9uc2Vuc2ljYWwoKTtcblxuICAgIGlmIChub25zZW5zaWNhbCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVW5hYmxlIHRvIHZlcmlmeSB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgYmVjYXVzZSBpdCBpcyBub25zZW5zZS5gKTtcblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih2ZXJpZmllcywgY29udGV4dCk7XG4gICAgfVxuXG4gICAgbGV0IHZhbGlkYXRlcztcblxuICAgIGNvbnN0IGRlY2xhcmVkID0gdGhpcy5pZERlY2xhcmVkKCk7XG5cbiAgICAoZGVjbGFyZWQgPyBkZWNsYXJlIDogZGVyaXZlKSgoc3RhdGUpID0+IHtcbiAgICAgIHZhbGlkYXRlcyA9IHRoaXMudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChzdGVwLCBjb250ZXh0KSA9PiB0cnVlKTtcbiAgICB9KTtcblxuICAgIGlmICghdmFsaWRhdGVzKSB7XG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHZlcmlmaWVzLCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy51bmlmeSgodW5pZmllcykgPT4ge1xuICAgICAgaWYgKHVuaWZpZXMpIHtcbiAgICAgICAgdmVyaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHZlcmlmaWVzLCBjb250ZXh0KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgdmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICBjb25zdCBzdGVwU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgIC8vL1xuICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQ7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwLi4uYCk7XG5cbiAgICBjb25zdCBzdGVwID0gdGhpczsgIC8vL1xuXG4gICAgYXR0ZW1wdCgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdGVTdGF0ZW1lbnQgPSB0aGlzLnZhbGlkYXRlU3RhdGVtZW50LmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZVJlZmVyZW5jZSA9IHRoaXMudmFsaWRhdGVSZWZlcmVuY2UuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHZhbGlkYXRlU2NoZW1hQXNzZXJ0aW9uID0gdGhpcy52YWxpZGF0ZVNjaGVtYUFzc2VydGlvbi5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmFsaWRhdGVTaWduYXR1cmVBc3NlcnRpb24gPSB0aGlzLnZhbGlkYXRlU2lnbmF0dXJlQXNzZXJ0aW9uLmJpbmQodGhpcyk7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGFsbChbXG4gICAgICAgIHZhbGlkYXRlU3RhdGVtZW50LFxuICAgICAgICB2YWxpZGF0ZVJlZmVyZW5jZSxcbiAgICAgICAgdmFsaWRhdGVTY2hlbWFBc3NlcnRpb24sXG4gICAgICAgIHZhbGlkYXRlU2lnbmF0dXJlQXNzZXJ0aW9uXG4gICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgdGhpcy5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzdGVwLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgfSk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVNjaGVtYUFzc2VydGlvbihzdGF0ZSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHNjaGVtYUFzc2VydGlvblZhbGlkYXRlcztcblxuICAgIGlmICh0aGlzLnNjaGVtYUFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3RlcFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksICAvLy9cbiAgICAgICAgICAgIHNjaGVtYUFzc2VydGlvblN0cmluZyA9IHRoaXMuc2NoZW1hQXNzZXJ0aW9uLmdldFN0cmluZygpO1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCdzICcke3NjaGVtYUFzc2VydGlvblN0cmluZ30nIHNjaGVtYSBhc3NlcnRpb24uLi5gKTtcblxuICAgICAgZGVyaXZlKChzdGF0ZSkgPT4ge1xuICAgICAgICBzY2hlbWFBc3NlcnRpb25WYWxpZGF0ZXMgPSB0aGlzLnNjaGVtYUFzc2VydGlvbi52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHNjaGVtYUFzc2VydGlvbiwgY29udGV4dCkgPT4ge1xuICAgICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgICB0aGlzLnNjaGVtYUFzc2VydGlvbiA9IHNjaGVtYUFzc2VydGlvbjtcblxuICAgICAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgICB9KTtcbiAgICAgIH0sIHN0YXRlKTtcblxuICAgICAgaWYgKHNjaGVtYUFzc2VydGlvblZhbGlkYXRlcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwJ3MgJyR7c2NoZW1hQXNzZXJ0aW9uU3RyaW5nfScgc2NoZW1hIGFzc2VydGlvbi5gKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2NoZW1hQXNzZXJ0aW9uVmFsaWRhdGVzID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2NoZW1hQXNzZXJ0aW9uVmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVTaWduYXR1cmVBc3NlcnRpb24oc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCBzaWduYXR1cmVBc3NlcnRpb25WYWxpZGF0ZXM7XG5cbiAgICBpZiAodGhpcy5zaWduYXR1cmVBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAgLy8vXG4gICAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLnNpZ25hdHVyZUFzc2VydGlvbi5nZXRTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAncyAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICAgIGRlcml2ZSgoc3RhdGUpID0+IHtcbiAgICAgICAgc2lnbmF0dXJlQXNzZXJ0aW9uVmFsaWRhdGVzID0gdGhpcy5zaWduYXR1cmVBc3NlcnRpb24udmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChzaWduYXR1cmVBc3NlcnRpb24sIGNvbnR3ZXh0KSA9PiB7XG4gICAgICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgICAgIHRoaXMuc2lnbmF0dXJlQXNzZXJ0aW9uID0gc2lnbmF0dXJlQXNzZXJ0aW9uO1xuXG4gICAgICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgICAgIH0pO1xuICAgICAgfSwgc3RhdGUpO1xuXG4gICAgICBpZiAoc2lnbmF0dXJlQXNzZXJ0aW9uVmFsaWRhdGVzKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAncyAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLmApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzaWduYXR1cmVBc3NlcnRpb25WYWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiBzaWduYXR1cmVBc3NlcnRpb25WYWxpZGF0ZXM7XG4gIH1cblxuICB1bmlmeShjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksXG4gICAgICAgICAgc3RlcFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwLi4uYCk7XG5cbiAgICBjb25zdCBzdGVwID0gdGhpczsgIC8vL1xuXG4gICAgcmV0dXJuIGFzeW5jaHJvbm91c1NvbWUodW5pZnlTdGVwcywgKHVuaWZ5U3RlcCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICByZXR1cm4gdW5pZnlTdGVwKHN0ZXAsIGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG4gICAgfSwgKHVuaWZpZXMpID0+IHtcbiAgICAgIGlmICh1bmlmaWVzKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHVuaWZpZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlN0ZXBcIjtcbn0pO1xuIl0sIm5hbWVzIjpbImJyZWFrYWJsZSIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJiYWNrd2FyZHNTb21lIiwiYXJyYXlVdGlsaXRpZXMiLCJhc3luY2hyb25vdXNTb21lIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiU3RlcCIsIkZhY3QiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJzdGF0ZW1lbnQiLCJyZWZlcmVuY2UiLCJwcm9jZWR1cmVDYWxsIiwic2NoZW1hQXNzZXJ0aW9uIiwic2lnbmF0dXJlQXNzZXJ0aW9uIiwiZ2V0U2NoZW1hQXNzZXJ0aW9uIiwiZ2V0U2lnbmF0dXJlQXNzZXJ0aW9uIiwiZ2V0U3RlcE5vZGUiLCJnZXROb2RlIiwic3RlcE5vZGUiLCJnZXRTdGF0ZW1lbnROb2RlIiwiZ2V0U3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZSIsImlzU3RlcCIsInN0ZXAiLCJpZERlY2xhcmVkIiwicXVhbGlmaWVkIiwiaXNRdWFsaWZpZWQiLCJkZWNsYXJlZCIsImlzVW5xdWFsaWZpZWQiLCJ1bnF1YWxpZmllZCIsImlzTm9uc2Vuc2ljYWwiLCJub25zZW5zaWNhbCIsImNvbXBhcmVGYWN0T3JTdWJwcm9vZnMiLCJmYWN0T3JTdWJwcm9vZiIsImNvbXBhcmVzVG9GYWN0T3JTdWJwcm9vZnMiLCJmYWN0T3JTdWJwcm9vZkNvbXBhcmVzVG9TdGF0ZW1lbnQiLCJjb21wYXJlU3RlcCIsInZlcmlmeSIsImNvbnRpbnVhdGlvbiIsInZlcmlmaWVzIiwic3RlcFN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZGVidWciLCJ2YWxpZGF0ZXMiLCJkZWNsYXJlIiwiZGVyaXZlIiwic3RhdGUiLCJ2YWxpZGF0ZSIsInVuaWZ5IiwidW5pZmllcyIsInNwZWNpZmljQ29udGV4dCIsImF0dGVtcHQiLCJ2YWxpZGF0ZVN0YXRlbWVudCIsImJpbmQiLCJ2YWxpZGF0ZVJlZmVyZW5jZSIsInZhbGlkYXRlU2NoZW1hQXNzZXJ0aW9uIiwidmFsaWRhdGVTaWduYXR1cmVBc3NlcnRpb24iLCJhbGwiLCJjb21taXQiLCJzY2hlbWFBc3NlcnRpb25WYWxpZGF0ZXMiLCJzY2hlbWFBc3NlcnRpb25TdHJpbmciLCJzaWduYXR1cmVBc3NlcnRpb25WYWxpZGF0ZXMiLCJzaWduYXR1cmVBc3NlcnRpb25TdHJpbmciLCJjb250d2V4dCIsImdldENvbnRleHQiLCJ1bmlmeVN0ZXBzIiwidW5pZnlTdGVwIiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBaUJBOzs7ZUFBQTs7OzJCQWYrQjtnQ0FDNEI7NkRBRTFDOzhCQUVHOzBCQUNHO3lCQUNDOzZCQUNHO3VCQUNLOzs7Ozs7QUFFaEMsTUFBTSxFQUFFQSxTQUFTLEVBQUUsR0FBR0MsbUNBQW1CLEVBQ25DLEVBQUVDLGFBQWEsRUFBRSxHQUFHQyx5QkFBYyxFQUNsQyxFQUFFQyxnQkFBZ0IsRUFBRSxHQUFHQyxxQ0FBcUI7TUFFbEQsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxhQUFhQyxhQUFJO0lBQzNDLFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsU0FBUyxFQUFFQyxTQUFTLEVBQUVDLGFBQWEsRUFBRUMsZUFBZSxFQUFFQyxrQkFBa0IsQ0FBRTtRQUN2SCxLQUFLLENBQUNSLFNBQVNDLFFBQVFDLE1BQU1DLFlBQVlDLFdBQVdDLFdBQVdDO1FBRS9ELElBQUksQ0FBQ0MsZUFBZSxHQUFHQTtRQUN2QixJQUFJLENBQUNDLGtCQUFrQixHQUFHQTtJQUM1QjtJQUVBQyxxQkFBcUI7UUFDbkIsT0FBTyxJQUFJLENBQUNGLGVBQWU7SUFDN0I7SUFFQUcsd0JBQXdCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDRixrQkFBa0I7SUFDaEM7SUFFQUcsY0FBYztRQUNaLE1BQU1ULE9BQU8sSUFBSSxDQUFDVSxPQUFPLElBQ25CQyxXQUFXWCxNQUFPLEdBQUc7UUFFM0IsT0FBT1c7SUFDVDtJQUVBQyxtQkFBbUI7UUFDakIsTUFBTVYsWUFBWSxJQUFJLENBQUNX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
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2ZhY3Qvc3RlcC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBGYWN0IGZyb20gXCIuLi9mYWN0XCI7XG5cbmltcG9ydCB7IGFsbCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGludWF0aW9uXCI7XG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGF0dGVtcHQgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IHVuaWZ5U3RlcHMgfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy91bmlmaWNhdGlvblwiO1xuaW1wb3J0IHsgZGVyaXZlLCBkZWNsYXJlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuXG5jb25zdCB7IGJyZWFrYWJsZSB9ID0gYnJlYWtQb2ludFV0aWxpdGllcyxcbiAgICAgIHsgYmFja3dhcmRzU29tZSB9ID0gYXJyYXlVdGlsaXRpZXMsXG4gICAgICB7IGFzeW5jaHJvbm91c1NvbWUgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFN0ZXAgZXh0ZW5kcyBGYWN0IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBzdGF0ZW1lbnQsIHJlZmVyZW5jZSwgcHJvY2VkdXJlQ2FsbCwgc2NoZW1hQXNzZXJ0aW9uLCBzaWduYXR1cmVBc3NlcnRpb24pIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudCwgcmVmZXJlbmNlLCBwcm9jZWR1cmVDYWxsKTtcblxuICAgIHRoaXMuc2NoZW1hQXNzZXJ0aW9uID0gc2NoZW1hQXNzZXJ0aW9uO1xuICAgIHRoaXMuc2lnbmF0dXJlQXNzZXJ0aW9uID0gc2lnbmF0dXJlQXNzZXJ0aW9uO1xuICB9XG5cbiAgZ2V0U2NoZW1hQXNzZXJ0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnNjaGVtYUFzc2VydGlvbjtcbiAgfVxuXG4gIGdldFNpZ25hdHVyZUFzc2VydGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zaWduYXR1cmVBc3NlcnRpb247XG4gIH1cblxuICBnZXRTdGVwTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgc3RlcE5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gc3RlcE5vZGU7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnROb2RlKCkge1xuICAgIGNvbnN0IHN0YXRlbWVudCA9IHRoaXMuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCk7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50Tm9kZTtcbiAgfVxuXG4gIGlzU3RlcCgpIHtcbiAgICBjb25zdCBzdGVwID0gdHJ1ZTtcblxuICAgIHJldHVybiBzdGVwO1xuICB9XG5cbiAgaWREZWNsYXJlZCgpIHtcbiAgICBjb25zdCBxdWFsaWZpZWQgPSB0aGlzLmlzUXVhbGlmaWVkKCksXG4gICAgICAgICAgZGVjbGFyZWQgPSBxdWFsaWZpZWQ7IC8vL1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkO1xuICB9XG5cbiAgaXNRdWFsaWZpZWQoKSB7XG4gICAgY29uc3QgcXVhbGlmaWVkID0gKCh0aGlzLnJlZmVyZW5jZSAhPT0gbnVsbCkgfHwgKHRoaXMuc2NoZW1hQXNzZXJ0aW9uICE9PSBudWxsKSB8fCAodGhpcy5zaWduYXR1cmVBc3NlcnRpb24gIT09IG51bGwpKTtcblxuICAgIHJldHVybiBxdWFsaWZpZWQ7XG4gIH1cblxuICBpc1VucXVhbGlmaWVkKCkge1xuICAgIGNvbnN0IHF1YWxpZmllZCA9IHRoaXMuaXNRdWFsaWZpZWQoKSxcbiAgICAgICAgICB1bnF1YWxpZmllZCA9ICFxdWFsaWZpZWQ7XG5cbiAgICByZXR1cm4gdW5xdWFsaWZpZWQ7XG4gIH1cblxuICBpc05vbnNlbnNpY2FsKCkge1xuICAgIGNvbnN0IG5vbnNlbnNpY2FsID0gKHRoaXMuc3RhdGVtZW50ID09PSBudWxsKTtcblxuICAgIHJldHVybiBub25zZW5zaWNhbDtcbiAgfVxuXG4gIGNvbXBhcmVGYWN0T3JTdWJwcm9vZnMoZmFjdE9yU3VicHJvb2YsIGNvbnRleHQpIHtcbiAgICBsZXQgY29tcGFyZXNUb0ZhY3RPclN1YnByb29mcztcblxuICAgIGNvbnN0IHN0ZXAgPSB0aGlzOyAvLy9cblxuICAgIGNvbXBhcmVzVG9GYWN0T3JTdWJwcm9vZnMgPSBiYWNrd2FyZHNTb21lKGZhY3RPclN1YnByb29mLCAoZmFjdE9yU3VicHJvb2YpID0+IHtcbiAgICAgIGNvbnN0IGZhY3RPclN1YnByb29mQ29tcGFyZXNUb1N0YXRlbWVudCA9IGZhY3RPclN1YnByb29mLmNvbXBhcmVTdGVwKHN0ZXAsIGNvbnRleHQpO1xuXG4gICAgICBpZiAoZmFjdE9yU3VicHJvb2ZDb21wYXJlc1RvU3RhdGVtZW50KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9GYWN0T3JTdWJwcm9vZnM7XG4gIH1cblxuICB2ZXJpZnkgPSBicmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2ZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3RlcFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcC4uLmApO1xuXG4gICAgY29uc3Qgbm9uc2Vuc2ljYWwgPSB0aGlzLmlzTm9uc2Vuc2ljYWwoKTtcblxuICAgIGlmIChub25zZW5zaWNhbCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVW5hYmxlIHRvIHZlcmlmeSB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgYmVjYXVzZSBpdCBpcyBub25zZW5zZS5gKTtcblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih2ZXJpZmllcywgY29udGV4dCk7XG4gICAgfVxuXG4gICAgbGV0IHZhbGlkYXRlcztcblxuICAgIGNvbnN0IGRlY2xhcmVkID0gdGhpcy5pZERlY2xhcmVkKCk7XG5cbiAgICAoZGVjbGFyZWQgPyBkZWNsYXJlIDogZGVyaXZlKSgoc3RhdGUpID0+IHtcbiAgICAgIHZhbGlkYXRlcyA9IHRoaXMudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChzdGVwLCBjb250ZXh0KSA9PiB0cnVlKTtcbiAgICB9KTtcblxuICAgIGlmICghdmFsaWRhdGVzKSB7XG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHZlcmlmaWVzLCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy51bmlmeSgodW5pZmllcykgPT4ge1xuICAgICAgaWYgKHVuaWZpZXMpIHtcbiAgICAgICAgdmVyaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHZlcmlmaWVzLCBjb250ZXh0KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgdmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICBjb25zdCBzdGVwU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgIC8vL1xuICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQ7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwLi4uYCk7XG5cbiAgICBjb25zdCBzdGVwID0gdGhpczsgIC8vL1xuXG4gICAgYXR0ZW1wdCgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdGVTdGF0ZW1lbnQgPSB0aGlzLnZhbGlkYXRlU3RhdGVtZW50LmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZVJlZmVyZW5jZSA9IHRoaXMudmFsaWRhdGVSZWZlcmVuY2UuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHZhbGlkYXRlU2NoZW1hQXNzZXJ0aW9uID0gdGhpcy52YWxpZGF0ZVNjaGVtYUFzc2VydGlvbi5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmFsaWRhdGVTaWduYXR1cmVBc3NlcnRpb24gPSB0aGlzLnZhbGlkYXRlU2lnbmF0dXJlQXNzZXJ0aW9uLmJpbmQodGhpcyk7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGFsbChbXG4gICAgICAgIHZhbGlkYXRlU3RhdGVtZW50LFxuICAgICAgICB2YWxpZGF0ZVJlZmVyZW5jZSxcbiAgICAgICAgdmFsaWRhdGVTY2hlbWFBc3NlcnRpb24sXG4gICAgICAgIHZhbGlkYXRlU2lnbmF0dXJlQXNzZXJ0aW9uXG4gICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgdGhpcy5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzdGVwLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgfSk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVNjaGVtYUFzc2VydGlvbihzdGF0ZSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHNjaGVtYUFzc2VydGlvblZhbGlkYXRlcztcblxuICAgIGlmICh0aGlzLnNjaGVtYUFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3RlcFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksICAvLy9cbiAgICAgICAgICAgIHNjaGVtYUFzc2VydGlvblN0cmluZyA9IHRoaXMuc2NoZW1hQXNzZXJ0aW9uLmdldFN0cmluZygpO1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCdzICcke3NjaGVtYUFzc2VydGlvblN0cmluZ30nIHNjaGVtYSBhc3NlcnRpb24uLi5gKTtcblxuICAgICAgZGVyaXZlKChzdGF0ZSkgPT4ge1xuICAgICAgICBzY2hlbWFBc3NlcnRpb25WYWxpZGF0ZXMgPSB0aGlzLnNjaGVtYUFzc2VydGlvbi52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHNjaGVtYUFzc2VydGlvbiwgY29udGV4dCkgPT4ge1xuICAgICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgICB0aGlzLnNjaGVtYUFzc2VydGlvbiA9IHNjaGVtYUFzc2VydGlvbjtcblxuICAgICAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgICB9KTtcbiAgICAgIH0sIHN0YXRlKTtcblxuICAgICAgaWYgKHNjaGVtYUFzc2VydGlvblZhbGlkYXRlcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwJ3MgJyR7c2NoZW1hQXNzZXJ0aW9uU3RyaW5nfScgc2NoZW1hIGFzc2VydGlvbi5gKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2NoZW1hQXNzZXJ0aW9uVmFsaWRhdGVzID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2NoZW1hQXNzZXJ0aW9uVmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVTaWduYXR1cmVBc3NlcnRpb24oc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCBzaWduYXR1cmVBc3NlcnRpb25WYWxpZGF0ZXM7XG5cbiAgICBpZiAodGhpcy5zaWduYXR1cmVBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAgLy8vXG4gICAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLnNpZ25hdHVyZUFzc2VydGlvbi5nZXRTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAncyAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICAgIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICAgIHNpZ25hdHVyZUFzc2VydGlvblZhbGlkYXRlcyA9IHRoaXMuc2lnbmF0dXJlQXNzZXJ0aW9uLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoc2lnbmF0dXJlQXNzZXJ0aW9uLCBjb250d2V4dCkgPT4ge1xuICAgICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgICB0aGlzLnNpZ25hdHVyZUFzc2VydGlvbiA9IHNpZ25hdHVyZUFzc2VydGlvbjtcblxuICAgICAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgICB9KTtcbiAgICAgIH0sIHN0YXRlKTtcblxuICAgICAgaWYgKHNpZ25hdHVyZUFzc2VydGlvblZhbGlkYXRlcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwJ3MgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi5gKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2lnbmF0dXJlQXNzZXJ0aW9uVmFsaWRhdGVzID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2lnbmF0dXJlQXNzZXJ0aW9uVmFsaWRhdGVzO1xuICB9XG5cbiAgdW5pZnkoY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHN0ZXBTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcC4uLmApO1xuXG4gICAgY29uc3Qgc3RlcCA9IHRoaXM7ICAvLy9cblxuICAgIHJldHVybiBhc3luY2hyb25vdXNTb21lKHVuaWZ5U3RlcHMsICh1bmlmeVN0ZXAsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgcmV0dXJuIHVuaWZ5U3RlcChzdGVwLCBjb250ZXh0LCBjb250aW51YXRpb24pO1xuICAgIH0sICh1bmlmaWVzKSA9PiB7XG4gICAgICBpZiAodW5pZmllcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcC5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih1bmlmaWVzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTdGVwXCI7XG59KTtcbiJdLCJuYW1lcyI6WyJicmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiYmFja3dhcmRzU29tZSIsImFycmF5VXRpbGl0aWVzIiwiYXN5bmNocm9ub3VzU29tZSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImRlZmluZSIsIlN0ZXAiLCJGYWN0IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50Iiwic3RhdGVtZW50IiwicmVmZXJlbmNlIiwicHJvY2VkdXJlQ2FsbCIsInNjaGVtYUFzc2VydGlvbiIsInNpZ25hdHVyZUFzc2VydGlvbiIsImdldFNjaGVtYUFzc2VydGlvbiIsImdldFNpZ25hdHVyZUFzc2VydGlvbiIsImdldFN0ZXBOb2RlIiwiZ2V0Tm9kZSIsInN0ZXBOb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsImdldFN0YXRlbWVudCIsInN0YXRlbWVudE5vZGUiLCJpc1N0ZXAiLCJzdGVwIiwiaWREZWNsYXJlZCIsInF1YWxpZmllZCIsImlzUXVhbGlmaWVkIiwiZGVjbGFyZWQiLCJpc1VucXVhbGlmaWVkIiwidW5xdWFsaWZpZWQiLCJpc05vbnNlbnNpY2FsIiwibm9uc2Vuc2ljYWwiLCJjb21wYXJlRmFjdE9yU3VicHJvb2ZzIiwiZmFjdE9yU3VicHJvb2YiLCJjb21wYXJlc1RvRmFjdE9yU3VicHJvb2ZzIiwiZmFjdE9yU3VicHJvb2ZDb21wYXJlc1RvU3RhdGVtZW50IiwiY29tcGFyZVN0ZXAiLCJ2ZXJpZnkiLCJjb250aW51YXRpb24iLCJ2ZXJpZmllcyIsInN0ZXBTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImRlYnVnIiwidmFsaWRhdGVzIiwiZGVjbGFyZSIsImRlcml2ZSIsInN0YXRlIiwidmFsaWRhdGUiLCJ1bmlmeSIsInVuaWZpZXMiLCJzcGVjaWZpY0NvbnRleHQiLCJhdHRlbXB0IiwidmFsaWRhdGVTdGF0ZW1lbnQiLCJiaW5kIiwidmFsaWRhdGVSZWZlcmVuY2UiLCJ2YWxpZGF0ZVNjaGVtYUFzc2VydGlvbiIsInZhbGlkYXRlU2lnbmF0dXJlQXNzZXJ0aW9uIiwiYWxsIiwiY29tbWl0Iiwic2NoZW1hQXNzZXJ0aW9uVmFsaWRhdGVzIiwic2NoZW1hQXNzZXJ0aW9uU3RyaW5nIiwic2lnbmF0dXJlQXNzZXJ0aW9uVmFsaWRhdGVzIiwic2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nIiwiY29udHdleHQiLCJnZXRDb250ZXh0IiwidW5pZnlTdGVwcyIsInVuaWZ5U3RlcCIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWlCQTs7O2VBQUE7OzsyQkFmK0I7Z0NBQzRCOzZEQUUxQzs4QkFFRzswQkFDRzt5QkFDQzs2QkFDRzt1QkFDSzs7Ozs7O0FBRWhDLE1BQU0sRUFBRUEsU0FBUyxFQUFFLEdBQUdDLG1DQUFtQixFQUNuQyxFQUFFQyxhQUFhLEVBQUUsR0FBR0MseUJBQWMsRUFDbEMsRUFBRUMsZ0JBQWdCLEVBQUUsR0FBR0MscUNBQXFCO01BRWxELFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsYUFBYUMsYUFBSTtJQUMzQyxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLFNBQVMsRUFBRUMsU0FBUyxFQUFFQyxhQUFhLEVBQUVDLGVBQWUsRUFBRUMsa0JBQWtCLENBQUU7UUFDdkgsS0FBSyxDQUFDUixTQUFTQyxRQUFRQyxNQUFNQyxZQUFZQyxXQUFXQyxXQUFXQztRQUUvRCxJQUFJLENBQUNDLGVBQWUsR0FBR0E7UUFDdkIsSUFBSSxDQUFDQyxrQkFBa0IsR0FBR0E7SUFDNUI7SUFFQUMscUJBQXFCO1FBQ25CLE9BQU8sSUFBSSxDQUFDRixlQUFlO0lBQzdCO0lBRUFHLHdCQUF3QjtRQUN0QixPQUFPLElBQUksQ0FBQ0Ysa0JBQWtCO0lBQ2hDO0lBRUFHLGNBQWM7UUFDWixNQUFNVCxPQUFPLElBQUksQ0FBQ1UsT0FBTyxJQUNuQkMsV0FBV1gsTUFBTyxHQUFHO1FBRTNCLE9BQU9XO0lBQ1Q7SUFFQUMsbUJBQW1CO1FBQ2pCLE1BQU1WLFlBQVksSUFBSSxDQUFD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
@@ -8,14 +8,14 @@ Object.defineProperty(exports, "default", {
8
8
  return _default;
9
9
  }
10
10
  });
11
- const _necessary = require("necessary");
12
11
  const _occamlanguages = require("occam-languages");
13
12
  const _elements = require("../elements");
14
13
  const _state = require("../utilities/state");
15
14
  const _continuation = require("../utilities/continuation");
15
+ const _string = require("../utilities/string");
16
16
  const _instantiate = require("../process/instantiate");
17
17
  const _context = require("../utilities/context");
18
- const { match } = _necessary.arrayUtilities, { breakPointFromJSON, breakPointToBreakPointJSON } = _occamlanguages.breakPointUtilities;
18
+ const { asynchronousEvery } = _occamlanguages.continuationUtilities, { breakPointFromJSON, breakPointToBreakPointJSON } = _occamlanguages.breakPointUtilities;
19
19
  const _default = (0, _elements.define)(class Signature extends _occamlanguages.Element {
20
20
  constructor(context, string, node, breakPoint, terms){
21
21
  super(context, string, node, breakPoint);
@@ -36,8 +36,8 @@ const _default = (0, _elements.define)(class Signature extends _occamlanguages.E
36
36
  const term = this.terms[index];
37
37
  return term;
38
38
  }
39
- isEqualTo(signature1) {
40
- const signatureNode = signature1.getNode(), signatureNodeMatches = this.matchSignatureNode(signatureNode), equalTo = signatureNodeMatches; ///
39
+ isEqualTo(signature) {
40
+ const signatureNode = signature.getNode(), signatureNodeMatches = this.matchSignatureNode(signatureNode), equalTo = signatureNodeMatches; ///
41
41
  return equalTo;
42
42
  }
43
43
  matchSignatureNode(signatureNode) {
@@ -63,7 +63,7 @@ const _default = (0, _elements.define)(class Signature extends _occamlanguages.E
63
63
  let validates;
64
64
  const specificContext = context, signatureString = this.getString();
65
65
  context.trace(`Validating the '${signatureString}' signature...`);
66
- const signature1 = this; ///
66
+ const signature = this; ///
67
67
  (0, _context.attempt)((context)=>{
68
68
  const validateTerms = this.validateTerms.bind(this);
69
69
  validates = (0, _continuation.all)([
@@ -72,7 +72,7 @@ const _default = (0, _elements.define)(class Signature extends _occamlanguages.E
72
72
  let validates;
73
73
  this.commit(context);
74
74
  context = specificContext; ///
75
- validates = continuation(signature1, context);
75
+ validates = continuation(signature, context);
76
76
  return validates;
77
77
  });
78
78
  }, context);
@@ -116,28 +116,32 @@ const _default = (0, _elements.define)(class Signature extends _occamlanguages.E
116
116
  return termsValidate;
117
117
  }
118
118
  unifyTerms(terms, context, continuation) {
119
- let termsUnify;
120
- debugger;
121
- const generalSignature = this, specificSignature = signature, generalSignatureString = generalSignature.getString(), specificSignatureString = specificSignature.getString();
122
- context.trace(`Unifying the '${specificSignatureString}' signature with the '${generalSignatureString}' signature...`);
123
- const generalSignatureTerms = generalSignature.getTerms(), specificSignatureTerms = specificSignature.getTerms(), generalSignatureContext = generalSignature.getContext(), specificSignatureContext = specificSignature.getContext(), generalTerms = generalSignatureTerms, specificTerms = specificSignatureTerms, generalContext = generalSignatureContext, specificContext = specificSignatureContext; ///
124
- debugger;
125
- termsUnify = (0, _context.reconcile)((specificContext)=>{
126
- match(generalTerms, specificTerms, (generalTerm, specificTerm)=>{
127
- let termUnifies;
128
- termUnifies = generalTerm.unifyTerm(specificTerm, generalContext, specificContext);
129
- if (termUnifies) {
130
- return true;
119
+ let termsUnify = false;
120
+ const quoted = true, termsString = (0, _string.termsStringFromTerms)(terms, quoted), signatureString = this.getString();
121
+ context.trace(`Unifying the ${termsString} terms with the '${signatureString}' signature...`);
122
+ const generalTerms = this.terms, specificTerms = terms, generalTermsLength = generalTerms.length, specificTermsLength = specificTerms.length;
123
+ if (generalTermsLength !== specificTermsLength) {
124
+ return continuation(termsUnify);
125
+ }
126
+ const specificContext = context; ///
127
+ context = this.getContext();
128
+ const generalContext = context; ///
129
+ let index = -1;
130
+ return (0, _context.reconcile)((specificContext)=>{
131
+ return asynchronousEvery(generalTerms, (generalTerm, continuation)=>{
132
+ index++;
133
+ const specificTerm = specificTerms[index];
134
+ generalTerm.unifyTerm(specificTerm, generalContext, specificContext, continuation);
135
+ }, (termsUnify)=>{
136
+ if (termsUnify) {
137
+ specificContext.commit();
138
+ }
139
+ if (termsUnify) {
140
+ context.debug(`...unified the ${termsString} terms with the '${signatureString}' signature.`);
131
141
  }
142
+ return continuation(termsUnify);
132
143
  });
133
- if (termsUnify) {
134
- specificContext.commit(context);
135
- }
136
144
  }, specificContext);
137
- if (termsUnify) {
138
- context.debug(`...unified the '${specificSignatureString}' signature with the '${generalSignatureString}' signature.`);
139
- }
140
- return termsUnify;
141
145
  }
142
146
  toJSON() {
143
147
  const context = this.getContext();
@@ -157,14 +161,14 @@ const _default = (0, _elements.define)(class Signature extends _occamlanguages.E
157
161
  }
158
162
  static name = "Signature";
159
163
  static fromJSON(json, context) {
160
- let signature1;
164
+ let signature;
161
165
  (0, _context.instantiate)((context)=>{
162
166
  (0, _context.unserialise)((json, context)=>{
163
167
  const { string } = json, signatureNode = (0, _instantiate.instantiateSignature)(string, context), node = signatureNode, breakPoint = breakPointFromJSON(json), terms = termsFromSignatureNode(signatureNode, context);
164
- signature1 = new Signature(context, string, node, breakPoint, terms);
168
+ signature = new Signature(context, string, node, breakPoint, terms);
165
169
  }, json, context);
166
170
  }, context);
167
- return signature1;
171
+ return signature;
168
172
  }
169
173
  });
170
174
  function termsFromSignatureNode(signatureNode, context) {
@@ -175,4 +179,4 @@ function termsFromSignatureNode(signatureNode, context) {
175
179
  return terms;
176
180
  }
177
181
 
178
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3NpZ25hdHVyZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGRlY2xhcmUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5pbXBvcnQgeyBhbGwsIGV2ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250aW51YXRpb25cIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlU2lnbmF0dXJlIH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IGF0dGVtcHQsIHJlY29uY2lsZSwgc2VyaWFsaXNlLCB1bnNlcmlhbGlzZSwgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcblxuY29uc3QgeyBtYXRjaCB9ID0gYXJyYXlVdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBTaWduYXR1cmUgZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtcykge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnRlcm1zID0gdGVybXM7XG4gIH1cblxuICBnZXRUZXJtcygpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtcztcbiAgfVxuXG4gIGdldFNpZ25hdHVyZU5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHNpZ25hdHVyZU5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBzaWduYXR1cmVOb2RlO1xuICB9XG5cbiAgZ2V0TGVuZ3RoKCkge1xuICAgIGNvbnN0IHRlcm1zTGVuZ3RoID0gdGhpcy50ZXJtcy5sZW5ndGgsXG4gICAgICAgICAgbGVuZ3RoID0gdGVybXNMZW5ndGg7IC8vL1xuXG4gICAgcmV0dXJuIGxlbmd0aDtcbiAgfVxuXG4gIGdldFRlcm0oaW5kZXgpIHtcbiAgICBjb25zdCB0ZXJtID0gdGhpcy50ZXJtc1tpbmRleF07XG5cbiAgICByZXR1cm4gdGVybTtcbiAgfVxuXG4gIGlzRXF1YWxUbyhzaWduYXR1cmUpIHtcbiAgICBjb25zdCBzaWduYXR1cmVOb2RlID0gc2lnbmF0dXJlLmdldE5vZGUoKSxcbiAgICAgICAgICBzaWduYXR1cmVOb2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hTaWduYXR1cmVOb2RlKHNpZ25hdHVyZU5vZGUpLFxuICAgICAgICAgIGVxdWFsVG8gPSBzaWduYXR1cmVOb2RlTWF0Y2hlczsgIC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBtYXRjaFNpZ25hdHVyZU5vZGUoc2lnbmF0dXJlTm9kZSkge1xuICAgIGNvbnN0IG5vZGUgPSBzaWduYXR1cmVOb2RlLCAvLy9cbiAgICAgICAgICBub2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hOb2RlKG5vZGUpLFxuICAgICAgICAgIHNpZ25hdHVyZU5vZGVNYXRjaGVzID0gbm9kZU1hdGNoZXM7IC8vL1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZU5vZGVNYXRjaGVzO1xuICB9XG5cbiAgdmVyaWZ5KGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2ZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3NpZ25hdHVyZVN0cmluZ30nIHNpZ25hdHVyZS4uLmApO1xuXG4gICAgZGVjbGFyZSgoc3RhdGUpID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlcyA9IHRoaXMudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChjb25jbHVzaW9uLCBjb250ZXh0KSA9PiB0cnVlKTtcblxuICAgICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgICB2ZXJpZmllcyA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzaWduYXR1cmVTdHJpbmd9JyBzaWduYXR1cmUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbih2ZXJpZmllcywgY29udGV4dCk7XG4gIH1cblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHZhbGlkYXRlcztcblxuICAgIGNvbnN0IHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQsICAvLy9cbiAgICAgICAgICBzaWduYXR1cmVTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlLi4uYCk7XG5cbiAgICBjb25zdCBzaWduYXR1cmUgPSB0aGlzOyAgLy8vXG5cbiAgICBhdHRlbXB0KChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0ZVRlcm1zID0gdGhpcy52YWxpZGF0ZVRlcm1zLmJpbmQodGhpcyk7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGFsbChbXG4gICAgICAgIHZhbGlkYXRlVGVybXNcbiAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgICB0aGlzLmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHNpZ25hdHVyZSwgY29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICAgIH0pO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzaWduYXR1cmVTdHJpbmd9JyBzaWduYXR1cmUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlVGVybSh0ZXJtLCB0ZXJtcywgc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB0ZXJtVmFsaWRhdGVzO1xuXG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc2lnbmF0dXJlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlJ3MgJyR7dGVybVN0cmluZ30nIHRlcm0uLi5gKTtcblxuICAgIHRlcm1WYWxpZGF0ZXMgPSB0ZXJtLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgdGVybXMucHVzaCh0ZXJtKTtcblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHRlcm1zLCBzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgfSk7XG5cbiAgICBpZiAodGVybVZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzaWduYXR1cmVTdHJpbmd9JyBzaWduYXR1cmUncyAnJHt0ZXJtU3RyaW5nfScgdGVybS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVybVZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlVGVybXMoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB0ZXJtc1ZhbGlkYXRlO1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlJ3MgdGVybXMuLi5gKTtcblxuICAgIGNvbnN0IHRlcm1zID0gW10sXG4gICAgICAgICAgdmFsaWRhdGVUZXJtID0gdGhpcy52YWxpZGF0ZVRlcm0uYmluZCh0aGlzKTtcblxuICAgIHRlcm1zVmFsaWRhdGUgPSBldmVyeSh0aGlzLnRlcm1zLCB2YWxpZGF0ZVRlcm0sIHRlcm1zLCBzdGF0ZSwgY29udGV4dCwgKHRlcm1zLCBzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHRlcm1zVmFsaWRhdGU7XG5cbiAgICAgIHRlcm1zVmFsaWRhdGUgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuXG4gICAgICBpZiAodGVybXNWYWxpZGF0ZSkge1xuICAgICAgICB0aGlzLnRlcm1zID0gdGVybXM7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0ZXJtc1ZhbGlkYXRlO1xuICAgIH0pO1xuXG4gICAgaWYgKHRlcm1zVmFsaWRhdGUpe1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzaWduYXR1cmVTdHJpbmd9JyBzaWduYXR1cmUncyB0ZXJtcy5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVybXNWYWxpZGF0ZVxuICB9XG5cbiAgdW5pZnlUZXJtcyh0ZXJtcywgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHRlcm1zVW5pZnk7XG5cbiAgICBkZWJ1Z2dlclxuXG4gICAgY29uc3QgZ2VuZXJhbFNpZ25hdHVyZSA9IHRoaXMsICAvLy9cbiAgICAgICAgICBzcGVjaWZpY1NpZ25hdHVyZSA9IHNpZ25hdHVyZSwgIC8vL1xuICAgICAgICAgIGdlbmVyYWxTaWduYXR1cmVTdHJpbmcgPSBnZW5lcmFsU2lnbmF0dXJlLmdldFN0cmluZygpLFxuICAgICAgICAgIHNwZWNpZmljU2lnbmF0dXJlU3RyaW5nID0gc3BlY2lmaWNTaWduYXR1cmUuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3BlY2lmaWNTaWduYXR1cmVTdHJpbmd9JyBzaWduYXR1cmUgd2l0aCB0aGUgJyR7Z2VuZXJhbFNpZ25hdHVyZVN0cmluZ30nIHNpZ25hdHVyZS4uLmApO1xuXG4gICAgY29uc3QgZ2VuZXJhbFNpZ25hdHVyZVRlcm1zID0gZ2VuZXJhbFNpZ25hdHVyZS5nZXRUZXJtcygpLFxuICAgICAgICAgIHNwZWNpZmljU2lnbmF0dXJlVGVybXMgPSBzcGVjaWZpY1NpZ25hdHVyZS5nZXRUZXJtcygpLFxuICAgICAgICAgIGdlbmVyYWxTaWduYXR1cmVDb250ZXh0ID0gZ2VuZXJhbFNpZ25hdHVyZS5nZXRDb250ZXh0KCksXG4gICAgICAgICAgc3BlY2lmaWNTaWduYXR1cmVDb250ZXh0ID0gc3BlY2lmaWNTaWduYXR1cmUuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGdlbmVyYWxUZXJtcyA9IGdlbmVyYWxTaWduYXR1cmVUZXJtcywgIC8vL1xuICAgICAgICAgIHNwZWNpZmljVGVybXMgPSBzcGVjaWZpY1NpZ25hdHVyZVRlcm1zLCAvLy9cbiAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IGdlbmVyYWxTaWduYXR1cmVDb250ZXh0LCAvLy9cbiAgICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBzcGVjaWZpY1NpZ25hdHVyZUNvbnRleHQ7ICAvLy9cblxuICAgIGRlYnVnZ2VyXG5cbiAgICB0ZXJtc1VuaWZ5ID0gcmVjb25jaWxlKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgIG1hdGNoKGdlbmVyYWxUZXJtcywgc3BlY2lmaWNUZXJtcywgKGdlbmVyYWxUZXJtLCBzcGVjaWZpY1Rlcm0pID0+IHtcbiAgICAgICAgbGV0IHRlcm1VbmlmaWVzO1xuXG4gICAgICAgIHRlcm1VbmlmaWVzID0gZ2VuZXJhbFRlcm0udW5pZnlUZXJtKHNwZWNpZmljVGVybSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICAgICAgaWYgKHRlcm1VbmlmaWVzKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGVybXNVbmlmeSkge1xuICAgICAgICBzcGVjaWZpY0NvbnRleHQuY29tbWl0KGNvbnRleHQpO1xuICAgICAgfVxuICAgIH0sIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICBpZiAodGVybXNVbmlmeSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3BlY2lmaWNTaWduYXR1cmVTdHJpbmd9JyBzaWduYXR1cmUgd2l0aCB0aGUgJyR7Z2VuZXJhbFNpZ25hdHVyZVN0cmluZ30nIHNpZ25hdHVyZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVybXNVbmlmeTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICByZXR1cm4gc2VyaWFsaXNlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgICBsZXQgYnJlYWtQb2ludDtcblxuICAgICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEpTT047ICAvLy9cblxuICAgICAgY29uc3QganNvbiA9IHtcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgc3RyaW5nLFxuICAgICAgICBicmVha1BvaW50XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4ganNvbjtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTaWduYXR1cmVcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBzaWduYXR1cmU7XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgdW5zZXJpYWxpc2UoKGpzb24sIGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIHNpZ25hdHVyZU5vZGUgPSBpbnN0YW50aWF0ZVNpZ25hdHVyZShzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gc2lnbmF0dXJlTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgICAgICB0ZXJtcyA9IHRlcm1zRnJvbVNpZ25hdHVyZU5vZGUoc2lnbmF0dXJlTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgc2lnbmF0dXJlID0gbmV3IFNpZ25hdHVyZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm1zKTtcbiAgICAgIH0sIGpzb24sIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIHRlcm1zRnJvbVNpZ25hdHVyZU5vZGUoc2lnbmF0dXJlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB0ZXJtTm9kZXMgPSBzaWduYXR1cmVOb2RlLmdldFRlcm1Ob2RlcygpLFxuICAgICAgICB0ZXJtcyA9IHRlcm1Ob2Rlcy5tYXAoKHRlcm1Ob2RlKSA9PiB7XG4gICAgICAgICAgY29uc3QgdGVybSA9IGNvbnRleHQuZmluZFRlcm1CeVRlcm1Ob2RlKHRlcm1Ob2RlKTtcblxuICAgICAgICAgIHJldHVybiB0ZXJtO1xuICAgICAgICB9KTtcblxuICByZXR1cm4gdGVybXM7XG59XG4iXSwibmFtZXMiOlsibWF0Y2giLCJhcnJheVV0aWxpdGllcyIsImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIlNpZ25hdHVyZSIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJ0ZXJtcyIsImdldFRlcm1zIiwiZ2V0U2lnbmF0dXJlTm9kZSIsImdldE5vZGUiLCJzaWduYXR1cmVOb2RlIiwiZ2V0TGVuZ3RoIiwidGVybXNMZW5ndGgiLCJsZW5ndGgiLCJnZXRUZXJtIiwiaW5kZXgiLCJ0ZXJtIiwiaXNFcXVhbFRvIiwic2lnbmF0dXJlIiwic2lnbmF0dXJlTm9kZU1hdGNoZXMiLCJtYXRjaFNpZ25hdHVyZU5vZGUiLCJlcXVhbFRvIiwibm9kZU1hdGNoZXMiLCJtYXRjaE5vZGUiLCJ2ZXJpZnkiLCJjb250aW51YXRpb24iLCJ2ZXJpZmllcyIsInNpZ25hdHVyZVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZGVjbGFyZSIsInN0YXRlIiwidmFsaWRhdGVzIiwidmFsaWRhdGUiLCJjb25jbHVzaW9uIiwiZGVidWciLCJzcGVjaWZpY0NvbnRleHQiLCJhdHRlbXB0IiwidmFsaWRhdGVUZXJtcyIsImJpbmQiLCJhbGwiLCJjb21taXQiLCJ2YWxpZGF0ZVRlcm0iLCJ0ZXJtVmFsaWRhdGVzIiwidGVybVN0cmluZyIsInB1c2giLCJ0ZXJtc1ZhbGlkYXRlIiwiZXZlcnkiLCJ1bmlmeVRlcm1zIiwidGVybXNVbmlmeSIsImdlbmVyYWxTaWduYXR1cmUiLCJzcGVjaWZpY1NpZ25hdHVyZSIsImdlbmVyYWxTaWduYXR1cmVTdHJpbmciLCJzcGVjaWZpY1NpZ25hdHVyZVN0cmluZyIsImdlbmVyYWxTaWduYXR1cmVUZXJtcyIsInNwZWNpZmljU2lnbmF0dXJlVGVybXMiLCJnZW5lcmFsU2lnbmF0dXJlQ29udGV4dCIsImdldENvbnRleHQiLCJzcGVjaWZpY1NpZ25hdHVyZUNvbnRleHQiLCJnZW5lcmFsVGVybXMiLCJzcGVjaWZpY1Rlcm1zIiwiZ2VuZXJhbENvbnRleHQiLCJyZWNvbmNpbGUiLCJnZW5lcmFsVGVybSIsInNwZWNpZmljVGVybSIsInRlcm1VbmlmaWVzIiwidW5pZnlUZXJtIiwidG9KU09OIiwic2VyaWFsaXNlIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwianNvbiIsIm5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwidW5zZXJpYWxpc2UiLCJpbnN0YW50aWF0ZVNpZ25hdHVyZSIsInRlcm1zRnJvbVNpZ25hdHVyZU5vZGUiLCJ0ZXJtTm9kZXMiLCJnZXRUZXJtTm9kZXMiLCJtYXAiLCJ0ZXJtTm9kZSIsImZpbmRUZXJtQnlUZXJtTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBY0E7OztlQUFBOzs7MkJBWitCO2dDQUNjOzBCQUV0Qjt1QkFDQzs4QkFDRzs2QkFDVTt5QkFDbUM7QUFFeEUsTUFBTSxFQUFFQSxLQUFLLEVBQUUsR0FBR0MseUJBQWMsRUFDMUIsRUFBRUMsa0JBQWtCLEVBQUVDLDBCQUEwQixFQUFFLEdBQUdDLG1DQUFtQjtNQUU5RSxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLGtCQUFrQkMsdUJBQU87SUFDbkQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxLQUFLLENBQUU7UUFDcEQsS0FBSyxDQUFDSixTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLEtBQUssR0FBR0E7SUFDZjtJQUVBQyxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUNELEtBQUs7SUFDbkI7SUFFQUUsbUJB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
182
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3NpZ25hdHVyZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgRWxlbWVudCwgYnJlYWtQb2ludFV0aWxpdGllcywgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGRlY2xhcmUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5pbXBvcnQgeyBhbGwsIGV2ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250aW51YXRpb25cIjtcbmltcG9ydCB7IHRlcm1zU3RyaW5nRnJvbVRlcm1zIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdHJpbmdcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlU2lnbmF0dXJlIH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IGF0dGVtcHQsIHJlY29uY2lsZSwgc2VyaWFsaXNlLCB1bnNlcmlhbGlzZSwgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcblxuY29uc3QgeyBhc3luY2hyb25vdXNFdmVyeSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyBicmVha1BvaW50RnJvbUpTT04sIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgU2lnbmF0dXJlIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybXMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy50ZXJtcyA9IHRlcm1zO1xuICB9XG5cbiAgZ2V0VGVybXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudGVybXM7XG4gIH1cblxuICBnZXRTaWduYXR1cmVOb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBzaWduYXR1cmVOb2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gc2lnbmF0dXJlTm9kZTtcbiAgfVxuXG4gIGdldExlbmd0aCgpIHtcbiAgICBjb25zdCB0ZXJtc0xlbmd0aCA9IHRoaXMudGVybXMubGVuZ3RoLFxuICAgICAgICAgIGxlbmd0aCA9IHRlcm1zTGVuZ3RoOyAvLy9cblxuICAgIHJldHVybiBsZW5ndGg7XG4gIH1cblxuICBnZXRUZXJtKGluZGV4KSB7XG4gICAgY29uc3QgdGVybSA9IHRoaXMudGVybXNbaW5kZXhdO1xuXG4gICAgcmV0dXJuIHRlcm07XG4gIH1cblxuICBpc0VxdWFsVG8oc2lnbmF0dXJlKSB7XG4gICAgY29uc3Qgc2lnbmF0dXJlTm9kZSA9IHNpZ25hdHVyZS5nZXROb2RlKCksXG4gICAgICAgICAgc2lnbmF0dXJlTm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoU2lnbmF0dXJlTm9kZShzaWduYXR1cmVOb2RlKSxcbiAgICAgICAgICBlcXVhbFRvID0gc2lnbmF0dXJlTm9kZU1hdGNoZXM7ICAvLy9cblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgbWF0Y2hTaWduYXR1cmVOb2RlKHNpZ25hdHVyZU5vZGUpIHtcbiAgICBjb25zdCBub2RlID0gc2lnbmF0dXJlTm9kZSwgLy8vXG4gICAgICAgICAgbm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoTm9kZShub2RlKSxcbiAgICAgICAgICBzaWduYXR1cmVOb2RlTWF0Y2hlcyA9IG5vZGVNYXRjaGVzOyAvLy9cblxuICAgIHJldHVybiBzaWduYXR1cmVOb2RlTWF0Y2hlcztcbiAgfVxuXG4gIHZlcmlmeShjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHNpZ25hdHVyZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzaWduYXR1cmVTdHJpbmd9JyBzaWduYXR1cmUuLi5gKTtcblxuICAgIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0ZXMgPSB0aGlzLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoY29uY2x1c2lvbiwgY29udGV4dCkgPT4gdHJ1ZSk7XG5cbiAgICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgICAgdmVyaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHZlcmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlLmApO1xuICAgIH1cblxuICAgIHJldHVybiBjb250aW51YXRpb24odmVyaWZpZXMsIGNvbnRleHQpO1xuICB9XG5cbiAgdmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICBjb25zdCBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0LCAgLy8vXG4gICAgICAgICAgc2lnbmF0dXJlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NpZ25hdHVyZVN0cmluZ30nIHNpZ25hdHVyZS4uLmApO1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlID0gdGhpczsgIC8vL1xuXG4gICAgYXR0ZW1wdCgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdGVUZXJtcyA9IHRoaXMudmFsaWRhdGVUZXJtcy5iaW5kKHRoaXMpO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBhbGwoW1xuICAgICAgICB2YWxpZGF0ZVRlcm1zXG4gICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgICAgdGhpcy5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbihzaWduYXR1cmUsIGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgICB9KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm0odGVybSwgdGVybXMsIHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdGVybVZhbGlkYXRlcztcblxuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIHNpZ25hdHVyZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NpZ25hdHVyZVN0cmluZ30nIHNpZ25hdHVyZSdzICcke3Rlcm1TdHJpbmd9JyB0ZXJtLi4uYCk7XG5cbiAgICB0ZXJtVmFsaWRhdGVzID0gdGVybS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQpID0+IHtcbiAgICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICAgIHRlcm1zLnB1c2godGVybSk7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbih0ZXJtcywgc3RhdGUsIGNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgIH0pO1xuXG4gICAgaWYgKHRlcm1WYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlJ3MgJyR7dGVybVN0cmluZ30nIHRlcm0uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlcm1WYWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVRlcm1zKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdGVybXNWYWxpZGF0ZTtcblxuICAgIGNvbnN0IHNpZ25hdHVyZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NpZ25hdHVyZVN0cmluZ30nIHNpZ25hdHVyZSdzIHRlcm1zLi4uYCk7XG5cbiAgICBjb25zdCB0ZXJtcyA9IFtdLFxuICAgICAgICAgIHZhbGlkYXRlVGVybSA9IHRoaXMudmFsaWRhdGVUZXJtLmJpbmQodGhpcyk7XG5cbiAgICB0ZXJtc1ZhbGlkYXRlID0gZXZlcnkodGhpcy50ZXJtcywgdmFsaWRhdGVUZXJtLCB0ZXJtcywgc3RhdGUsIGNvbnRleHQsICh0ZXJtcywgc3RhdGUsIGNvbnRleHQpID0+IHtcbiAgICAgIGxldCB0ZXJtc1ZhbGlkYXRlO1xuXG4gICAgICB0ZXJtc1ZhbGlkYXRlID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHRlcm1zVmFsaWRhdGUpIHtcbiAgICAgICAgdGhpcy50ZXJtcyA9IHRlcm1zO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGVybXNWYWxpZGF0ZTtcbiAgICB9KTtcblxuICAgIGlmICh0ZXJtc1ZhbGlkYXRlKXtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlJ3MgdGVybXMuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlcm1zVmFsaWRhdGVcbiAgfVxuXG4gIHVuaWZ5VGVybXModGVybXMsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB0ZXJtc1VuaWZ5ID0gZmFsc2U7XG5cbiAgICBjb25zdCBxdW90ZWQgPSB0cnVlLFxuICAgICAgICAgIHRlcm1zU3RyaW5nID0gdGVybXNTdHJpbmdGcm9tVGVybXModGVybXMsIHF1b3RlZCksXG4gICAgICAgICAgc2lnbmF0dXJlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAke3Rlcm1zU3RyaW5nfSB0ZXJtcyB3aXRoIHRoZSAnJHtzaWduYXR1cmVTdHJpbmd9JyBzaWduYXR1cmUuLi5gKTtcblxuICAgIGNvbnN0IGdlbmVyYWxUZXJtcyA9IHRoaXMudGVybXMsICAvLy9cbiAgICAgICAgICBzcGVjaWZpY1Rlcm1zID0gdGVybXMsICAvL1xuICAgICAgICAgIGdlbmVyYWxUZXJtc0xlbmd0aCA9IGdlbmVyYWxUZXJtcy5sZW5ndGgsXG4gICAgICAgICAgc3BlY2lmaWNUZXJtc0xlbmd0aCA9IHNwZWNpZmljVGVybXMubGVuZ3RoO1xuXG4gICAgaWYgKGdlbmVyYWxUZXJtc0xlbmd0aCAhPT0gc3BlY2lmaWNUZXJtc0xlbmd0aCkge1xuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih0ZXJtc1VuaWZ5KTtcbiAgICB9XG5cbiAgICBjb25zdCBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0OyAvLy9cblxuICAgIGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGNvbnN0IGdlbmVyYWxDb250ZXh0ID0gY29udGV4dDsgLy8vXG5cbiAgICBsZXQgaW5kZXggPSAtMTtcblxuICAgIHJldHVybiByZWNvbmNpbGUoKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgcmV0dXJuIGFzeW5jaHJvbm91c0V2ZXJ5KGdlbmVyYWxUZXJtcywgKGdlbmVyYWxUZXJtLCBjb250aW51YXRpb24pID0+IHtcbiAgICAgICAgaW5kZXgrKztcblxuICAgICAgICBjb25zdCBzcGVjaWZpY1Rlcm0gPSBzcGVjaWZpY1Rlcm1zW2luZGV4XTtcblxuICAgICAgICBnZW5lcmFsVGVybS51bmlmeVRlcm0oc3BlY2lmaWNUZXJtLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pO1xuICAgICAgfSwgKHRlcm1zVW5pZnkpID0+IHtcbiAgICAgICAgaWYgKHRlcm1zVW5pZnkpIHtcbiAgICAgICAgICBzcGVjaWZpY0NvbnRleHQuY29tbWl0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGVybXNVbmlmeSkge1xuICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICR7dGVybXNTdHJpbmd9IHRlcm1zIHdpdGggdGhlICcke3NpZ25hdHVyZVN0cmluZ30nIHNpZ25hdHVyZS5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250aW51YXRpb24odGVybXNVbmlmeSk7XG4gICAgICB9KTtcbiAgICB9LCBzcGVjaWZpY0NvbnRleHQpO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHJldHVybiBzZXJpYWxpc2UoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgICBicmVha1BvaW50ID0gdGhpcy5nZXRCcmVha1BvaW50KCk7XG5cbiAgICAgIGNvbnN0IGJyZWFrUG9pbnRKU09OID0gYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04oYnJlYWtQb2ludCk7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgICBjb25zdCBqc29uID0ge1xuICAgICAgICBjb250ZXh0LFxuICAgICAgICBzdHJpbmcsXG4gICAgICAgIGJyZWFrUG9pbnRcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBqc29uO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlNpZ25hdHVyZVwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IHNpZ25hdHVyZTtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICB1bnNlcmlhbGlzZSgoanNvbiwgY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgc2lnbmF0dXJlTm9kZSA9IGluc3RhbnRpYXRlU2lnbmF0dXJlKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBzaWduYXR1cmVOb2RlLCAgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgICAgIHRlcm1zID0gdGVybXNGcm9tU2lnbmF0dXJlTm9kZShzaWduYXR1cmVOb2RlLCBjb250ZXh0KTtcblxuICAgICAgICBzaWduYXR1cmUgPSBuZXcgU2lnbmF0dXJlKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybXMpO1xuICAgICAgfSwganNvbiwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc2lnbmF0dXJlO1xuICB9XG59KTtcblxuZnVuY3Rpb24gdGVybXNGcm9tU2lnbmF0dXJlTm9kZShzaWduYXR1cmVOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHRlcm1Ob2RlcyA9IHNpZ25hdHVyZU5vZGUuZ2V0VGVybU5vZGVzKCksXG4gICAgICAgIHRlcm1zID0gdGVybU5vZGVzLm1hcCgodGVybU5vZGUpID0+IHtcbiAgICAgICAgICBjb25zdCB0ZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpO1xuXG4gICAgICAgICAgcmV0dXJuIHRlcm07XG4gICAgICAgIH0pO1xuXG4gIHJldHVybiB0ZXJtcztcbn1cbiJdLCJuYW1lcyI6WyJhc3luY2hyb25vdXNFdmVyeSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIlNpZ25hdHVyZSIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJ0ZXJtcyIsImdldFRlcm1zIiwiZ2V0U2lnbmF0dXJlTm9kZSIsImdldE5vZGUiLCJzaWduYXR1cmVOb2RlIiwiZ2V0TGVuZ3RoIiwidGVybXNMZW5ndGgiLCJsZW5ndGgiLCJnZXRUZXJtIiwiaW5kZXgiLCJ0ZXJtIiwiaXNFcXVhbFRvIiwic2lnbmF0dXJlIiwic2lnbmF0dXJlTm9kZU1hdGNoZXMiLCJtYXRjaFNpZ25hdHVyZU5vZGUiLCJlcXVhbFRvIiwibm9kZU1hdGNoZXMiLCJtYXRjaE5vZGUiLCJ2ZXJpZnkiLCJjb250aW51YXRpb24iLCJ2ZXJpZmllcyIsInNpZ25hdHVyZVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZGVjbGFyZSIsInN0YXRlIiwidmFsaWRhdGVzIiwidmFsaWRhdGUiLCJjb25jbHVzaW9uIiwiZGVidWciLCJzcGVjaWZpY0NvbnRleHQiLCJhdHRlbXB0IiwidmFsaWRhdGVUZXJtcyIsImJpbmQiLCJhbGwiLCJjb21taXQiLCJ2YWxpZGF0ZVRlcm0iLCJ0ZXJtVmFsaWRhdGVzIiwidGVybVN0cmluZyIsInB1c2giLCJ0ZXJtc1ZhbGlkYXRlIiwiZXZlcnkiLCJ1bmlmeVRlcm1zIiwidGVybXNVbmlmeSIsInF1b3RlZCIsInRlcm1zU3RyaW5nIiwidGVybXNTdHJpbmdGcm9tVGVybXMiLCJnZW5lcmFsVGVybXMiLCJzcGVjaWZpY1Rlcm1zIiwiZ2VuZXJhbFRlcm1zTGVuZ3RoIiwic3BlY2lmaWNUZXJtc0xlbmd0aCIsImdldENvbnRleHQiLCJnZW5lcmFsQ29udGV4dCIsInJlY29uY2lsZSIsImdlbmVyYWxUZXJtIiwic3BlY2lmaWNUZXJtIiwidW5pZnlUZXJtIiwidG9KU09OIiwic2VyaWFsaXNlIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwianNvbiIsIm5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwidW5zZXJpYWxpc2UiLCJpbnN0YW50aWF0ZVNpZ25hdHVyZSIsInRlcm1zRnJvbVNpZ25hdHVyZU5vZGUiLCJ0ZXJtTm9kZXMiLCJnZXRUZXJtTm9kZXMiLCJtYXAiLCJ0ZXJtTm9kZSIsImZpbmRUZXJtQnlUZXJtTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBY0E7OztlQUFBOzs7Z0NBWm9FOzBCQUU3Qzt1QkFDQzs4QkFDRzt3QkFDVTs2QkFDQTt5QkFDbUM7QUFFeEUsTUFBTSxFQUFFQSxpQkFBaUIsRUFBRSxHQUFHQyxxQ0FBcUIsRUFDN0MsRUFBRUMsa0JBQWtCLEVBQUVDLDBCQUEwQixFQUFFLEdBQUdDLG1DQUFtQjtNQUU5RSxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLGtCQUFrQkMsdUJBQU87SUFDbkQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxLQUFLLENBQUU7UUFDcEQsS0FBSyxDQUFDSixTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLEtBQUssR0FBR0E7SUFDZjtJQUVBQyxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUNELEtBQUs7SUFDbkI7SUFFQUUsbUJBQW1CO1FBQ2pCLE1BQU1KLE9BQU8sSUFBSSxDQUFDSyxPQUFPLElBQ25CQyxnQkFBZ0JOLE1BQU0sR0FBRztRQUUvQixPQUFPTTtJQUNUO0lBRUFDLFlBQVk7UUFDVixNQUFNQyxjQUFjLElBQUksQ0FBQ04sS0FBSyxDQUFDTyxNQUFNLEVBQy9CQSxTQUFTRCxhQUFhLEdBQUc7UUFFL0IsT0FBT0M7SUFDVDtJQUVBQyxRQUFRQyxLQUFLLEVBQUU7UUFDYixNQUFNQyxPQUFPLElBQUksQ0FB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
@@ -240,19 +240,19 @@ const _default = (0, _elements.define)(class Term extends _occamlanguages.Elemen
240
240
  //
241
241
  // return term;
242
242
  // }
243
- unifyTerm(term, generalContext, specificContext) {
243
+ unifyTerm(term, generalContext, specificContext, continuation) {
244
244
  let termUnifies = false;
245
- debugger;
246
245
  const context = specificContext, generalTerm = this, specificTerm = term, generalTermString = generalTerm.getString(), specifixTermString = specificTerm.getString();
247
246
  context.trace(`Unifying the '${specifixTermString}' term with the '${generalTermString}' term...`);
248
- const termUnifiesIntrinsically = (0, _unify.unifyTermIntrinsically)(generalTerm, specificTerm, generalContext, specificContext);
249
- if (termUnifiesIntrinsically) {
250
- termUnifies = true;
251
- }
252
- if (termUnifies) {
253
- context.debug(`...unified the '${specifixTermString}' term with the '${generalTermString}' term.`);
254
- }
255
- return termUnifies;
247
+ return (0, _unify.unifyTermIntrinsically)(generalTerm, specificTerm, generalContext, specificContext, (termUnifiesIntrinsically)=>{
248
+ if (termUnifiesIntrinsically) {
249
+ termUnifies = true;
250
+ }
251
+ if (termUnifies) {
252
+ context.debug(`...unified the '${specifixTermString}' term with the '${generalTermString}' term.`);
253
+ }
254
+ return continuation(termUnifies);
255
+ });
256
256
  }
257
257
  toJSON() {
258
258
  const typeJSON = (0, _json.typeToTypeJSON)(this.type), provisionalJSON = (0, _json.provisionalToProvisionalJSON)(this.provisional), string = this.getString();
@@ -280,4 +280,4 @@ const _default = (0, _elements.define)(class Term extends _occamlanguages.Elemen
280
280
  }
281
281
  });
282
282
 
283
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3Rlcm0uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuaW1wb3J0IHsgRWxlbWVudCwgYnJlYWtQb2ludFV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBleGlzdHMgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRpbnVhdGlvblwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlVGVybSB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyB2YXJpYWJsZXNGcm9tVGVybSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZXF1aXZhbGVuY2VcIjtcbmltcG9ydCB7IHVuaWZ5VGVybUludHJpbnNpY2FsbHkgfSBmcm9tIFwiLi4vcHJvY2Vzcy91bmlmeVwiO1xuaW1wb3J0IHsgdmFsaWRhdGVUZXJtcywgdmFsaWRhdGVUZXJtQXNWYXJpYWJsZSB9IGZyb20gXCIuLi9wcm9jZXNzL3ZhbGlkYXRpb25cIjtcbmltcG9ydCB7IHR5cGVGcm9tSlNPTiwgdHlwZVRvVHlwZUpTT04sIHByb3Zpc2lvbmFsRnJvbUpTT04sIHByb3Zpc2lvbmFsVG9Qcm92aXNpb25hbEpTT04gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2pzb25cIjtcblxuY29uc3QgeyBmaWx0ZXIgfSA9IGFycmF5VXRpbGl0aWVzLFxuICAgICAgeyBicmVha1BvaW50RnJvbUpTT04sIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgVGVybSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHR5cGUsIHByb3Zpc2lvbmFsKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBwcm92aXNpb25hbCk7XG5cbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMucHJvdmlzaW9uYWwgPSBwcm92aXNpb25hbDtcbiAgfVxuXG4gIGdldFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZTtcbiAgfVxuXG4gIGlzUHJvdmlzaW9uYWwoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvdmlzaW9uYWw7XG4gIH1cblxuICBzZXRUeXBlKHR5cGUpIHtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICB9XG5cbiAgc2V0UHJvdmlzaW9uYWwocHJvdmlzaW9uYWwpIHtcbiAgICB0aGlzLnByb3Zpc2lvbmFsID0gcHJvdmlzaW9uYWw7XG4gIH1cblxuICBnZXRUZXJtTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgdGVybU5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gdGVybU5vZGU7XG4gIH1cblxuICBnZXRWYXJpYWJsZU5vZGUoKSB7XG4gICAgY29uc3QgdGVybU5vZGUgPSB0aGlzLmdldFRlcm1Ob2RlKCksXG4gICAgICAgICAgdmFyaWFibGVOb2RlID0gdGVybU5vZGUuZ2V0VmFyaWFibGVOb2RlKCk7XG5cbiAgICByZXR1cm4gdmFyaWFibGVOb2RlO1xuICB9XG5cbiAgZ2V0VmFyaWFibGVJZGVudGlmaWVyKCkge1xuICAgIGNvbnN0IHRlcm1Ob2RlID0gdGhpcy5nZXRUZXJtTm9kZSgpLFxuICAgICAgICAgIHZhcmlhYmxlSWRlbnRpZmllciA9IHRlcm1Ob2RlLmdldFZhcmlhYmxlSWRlbnRpZmllcigpO1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlSWRlbnRpZmllcjtcbiAgfVxuXG4gIGlzRXN0YWJsaXNoZWQoKSB7XG4gICAgY29uc3QgcHJvdmlzaW9uYWwgPSB0aGlzLmlzUHJvdmlzaW9uYWwoKSxcbiAgICAgICAgICBlc3RhYmxpc2hlZCA9ICFwcm92aXNpb25hbDtcblxuICAgIHJldHVybiBlc3RhYmxpc2hlZDtcbiAgfVxuXG4gIGlzRXF1YWxUbyh0ZXJtKSB7XG4gICAgY29uc3QgdGVybU5vZGUgPSB0ZXJtLmdldE5vZGUoKSxcbiAgICAgICAgICB0ZXJtTm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoVGVybU5vZGUodGVybU5vZGUpLFxuICAgICAgICAgIGVxdWFsVG8gPSB0ZXJtTm9kZU1hdGNoZXM7ICAvLy9cblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgaXNHcm91bmRlZChkZWZpbmVkVmFyaWFibGVzLCBjb250ZXh0KSB7XG4gICAgY29uc3QgdGVybSAgPSB0aGlzLCAvLy9cbiAgICAgICAgICB2YXJpYWJsZXMgPSB2YXJpYWJsZXNGcm9tVGVybSh0ZXJtLCBjb250ZXh0KTtcblxuICAgIGZpbHRlcih2YXJpYWJsZXMsICh2YXJpYWJsZSkgPT4ge1xuICAgICAgY29uc3QgZGVmaW5lZFZhcmlhYmxlc0luY2x1ZGVzVmFyaWFibGUgPSBkZWZpbmVkVmFyaWFibGVzLmluY2x1ZGVzKHZhcmlhYmxlKTtcblxuICAgICAgaWYgKCFkZWZpbmVkVmFyaWFibGVzSW5jbHVkZXNWYXJpYWJsZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IHVuZGVmaW5lZFZhcmlhYmxlcyA9IHZhcmlhYmxlcywgLy8vXG4gICAgICAgICAgdW5kZWZpbmVkVmFyaWFibGVzTGVuZ3RoID0gdW5kZWZpbmVkVmFyaWFibGVzLmxlbmd0aCxcbiAgICAgICAgICBncm91bmRlZCA9ICh1bmRlZmluZWRWYXJpYWJsZXNMZW5ndGggPD0gMSk7XG5cbiAgICByZXR1cm4gZ3JvdW5kZWQ7XG4gIH1cblxuICBpc1Npbmd1bGFyKCkge1xuICAgIGNvbnN0IHRlcm1Ob2RlID0gdGhpcy5nZXRUZXJtTm9kZSgpLFxuICAgICAgICAgIHNpbmd1bGFyID0gdGVybU5vZGUuaXNTaW5ndWxhcigpO1xuXG4gICAgcmV0dXJuIHNpbmd1bGFyO1xuICB9XG5cbiAgaXNJbml0aWFsbHlHcm91bmRlZChjb250ZXh0KSB7XG4gICAgY29uc3QgdGVybSAgPSB0aGlzLCAvLy9cbiAgICAgICAgICB2YXJpYWJsZXMgPSB2YXJpYWJsZXNGcm9tVGVybSh0ZXJtLCBjb250ZXh0KSxcbiAgICAgICAgICB2YXJpYWJsZXNMZW5ndGggPSB2YXJpYWJsZXMubGVuZ3RoLFxuICAgICAgICAgIGluaXRpYWxseUdyb3VuZGVkID0gKHZhcmlhYmxlc0xlbmd0aCA9PT0gMCk7XG5cbiAgICByZXR1cm4gaW5pdGlhbGx5R3JvdW5kZWQ7XG4gIH1cblxuICBpc0ltcGxpY2l0bHlHcm91bmRlZChkZWZpbmVkVmFyaWFibGVzLCBjb250ZXh0KSB7XG4gICAgY29uc3QgZ3JvdW5kZWQgPSB0aGlzLmlzR3JvdW5kZWQoZGVmaW5lZFZhcmlhYmxlcywgY29udGV4dCksXG4gICAgICAgICAgaW1wbGljaXRseUdyb3VuZGVkID0gZ3JvdW5kZWQ7ICAvLy9cblxuICAgIHJldHVybiBpbXBsaWNpdGx5R3JvdW5kZWQ7XG4gIH1cblxuICBtYXRjaFRlcm1Ob2RlKHRlcm1Ob2RlKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRlcm1Ob2RlLCAvLy9cbiAgICAgICAgICBub2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hOb2RlKG5vZGUpLFxuICAgICAgICAgIHRlcm1Ob2RlTWF0Y2hlcyA9IG5vZGVNYXRjaGVzOyAvLy9cblxuICAgIHJldHVybiB0ZXJtTm9kZU1hdGNoZXM7XG4gIH1cblxuICBtYXRjaFZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpIHtcbiAgICBsZXQgdmFyaWFibGVOb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc2luZ3VsYXIgPSB0aGlzLmlzU2luZ3VsYXIoKTtcblxuICAgIGlmIChzaW5ndWxhcikge1xuICAgICAgY29uc3QgdmFyaWFibGVOb2RlQSA9IHZhcmlhYmxlTm9kZTsgLy8vXG5cbiAgICAgIHZhcmlhYmxlTm9kZSA9IHRoaXMuZ2V0VmFyaWFibGVOb2RlKCk7XG5cbiAgICAgIGNvbnN0IHZhcmlhYmxlTm9kZUIgPSB2YXJpYWJsZU5vZGUsIC8vL1xuICAgICAgICAgICAgdmFyaWFibGVOb2RlQU1hdGNoZXNWYXJpYWJsZU5vZGVCID0gdmFyaWFibGVOb2RlQS5tYXRjaCh2YXJpYWJsZU5vZGVCKTtcblxuICAgICAgaWYgKHZhcmlhYmxlTm9kZUFNYXRjaGVzVmFyaWFibGVOb2RlQikge1xuICAgICAgICB2YXJpYWJsZU5vZGVNYXRjaGVzID0gdHJ1ZTsgLy8vXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhcmlhYmxlTm9kZU1hdGNoZXM7XG4gIH1cblxuICBjb21wYXJlVGVybSh0ZXJtKSB7XG4gICAgY29uc3QgdGVybU5vZGUgPSB0ZXJtLmdldE5vZGUoKSxcbiAgICAgICAgICB0ZXJtTm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoTm9kZSh0ZXJtTm9kZSksXG4gICAgICAgICAgY29tcGFyZXNUbyA9IHRlcm1Ob2RlTWF0Y2hlczsgLy8vXG5cbiAgICByZXR1cm4gY29tcGFyZXNUbztcbiAgfVxuXG4gIGNvbXBhcmVQYXJhbWV0ZXIocGFyYW1ldGVyKSB7XG4gICAgbGV0IGNvbXBhcmVzVG9QYXJhbXRlciA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc2luZ3VsYXIgPSB0aGlzLmlzU2luZ3VsYXIoKTtcblxuICAgIGlmIChzaW5ndWxhcikge1xuICAgICAgY29uc3QgcGFyYW1ldGVySWRlbnRpZmllciA9IHBhcmFtZXRlci5nZXRJZGVudGlmaWVyKCk7XG5cbiAgICAgIGlmIChwYXJhbWV0ZXJJZGVudGlmaWVyICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHZhcmlhYmxlSWRlbnRpZmllciA9IHRoaXMuZ2V0VmFyaWFibGVJZGVudGlmaWVyKCk7XG5cbiAgICAgICAgaWYgKHBhcmFtZXRlcklkZW50aWZpZXIgPT09IHZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgICAgICAgIGNvbXBhcmVzVG9QYXJhbXRlciA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY29tcGFyZXNUb1BhcmFtdGVyO1xuICB9XG5cbiAgZmluZFRlcm0oY29udGV4dCkge1xuICAgIGNvbnN0IHRlcm1Ob2RlID0gdGhpcy5nZXRUZXJtTm9kZSgpLFxuICAgICAgICAgIHRlcm0gPSBjb250ZXh0LmZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSk7XG5cbiAgICByZXR1cm4gdGVybTtcbiAgfVxuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLi4uYCk7XG5cbiAgICBsZXQgdGVybTtcblxuICAgIHRlcm0gPSB0aGlzLmZpbmRUZXJtKGNvbnRleHQpO1xuXG4gICAgaWYgKHRlcm0gIT09IG51bGwpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbih0ZXJtLCBjb250ZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGVybSA9IHRoaXM7ICAvLy9cblxuICAgICAgdmFsaWRhdGVzID0gZXhpc3RzKHZhbGlkYXRlVGVybXMsIHRlcm0sIHN0YXRlLCBjb250ZXh0LCAodGVybSwgc3RhdGUsIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgICBjb250ZXh0LmFkZFRlcm0odGVybSk7XG5cbiAgICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHRlcm0sIGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZUdpdmVuVHlwZShzdHJpY3QsIHR5cGUsIHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBpZiAoY29udGludWF0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnRpbnVhdGlvbiA9IGNvbnRleHQ7IC8vL1xuXG4gICAgICBjb250ZXh0ID0gc3RhdGU7IC8vL1xuXG4gICAgICBzdGF0ZSA9IHR5cGU7IC8vL1xuXG4gICAgICB0eXBlID0gc3RyaWN0OyAgLy8vXG5cbiAgICAgIHN0cmljdCA9IHRydWU7XG4gICAgfVxuXG4gICAgbGV0IHZhbGlkYXRlc0dpdmVuVHlwZSA9IGZhbHNlO1xuXG4gICAgY29uc3QgdHlwZVN0cmluZyA9IHR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgdGVybVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGdpdmVuIHRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZS4uLmApO1xuXG4gICAgY29uc3QgdmFsaWRhdGVzID0gdGhpcy52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQpID0+IHtcbiAgICAgIGxldCB2YWxpZGF0ZXNHaXZlblR5cGUgPSBmYWxzZTtcblxuICAgICAgY29uc3QgdGVybVR5cGUgPSB0ZXJtLmdldFR5cGUoKSxcbiAgICAgICAgICAgIHRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mVHlwZSA9IHRlcm1UeXBlLmlzRXF1YWxUb09yU3ViVHlwZU9mKHR5cGUpO1xuXG4gICAgICBpZiAodGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUeXBlKSB7XG4gICAgICAgIHZhbGlkYXRlc0dpdmVuVHlwZSA9IHRydWU7XG5cbiAgICAgICAgaWYgKHN0cmljdCkge1xuICAgICAgICAgIGNvbnN0IHR5cGVFc3RhYmxpc2hlZCA9IHR5cGUuaXNFc3RhYmxpc2hlZCgpLFxuICAgICAgICAgICAgICAgIHRlcm1Qcm92aXNpb25hbCA9IHRlcm0uaXNQcm92aXNpb25hbCgpO1xuXG4gICAgICAgICAgaWYgKHR5cGVFc3RhYmxpc2hlZCAmJiB0ZXJtUHJvdmlzaW9uYWwpIHtcbiAgICAgICAgICAgIHZhbGlkYXRlc0dpdmVuVHlwZSA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodmFsaWRhdGVzR2l2ZW5UeXBlKSB7XG4gICAgICAgIHZhbGlkYXRlc0dpdmVuVHlwZSA9IGNvbnRpbnVhdGlvbih0ZXJtLCBjb250ZXh0KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHZhbGlkYXRlc0dpdmVuVHlwZTtcbiAgICB9KTtcblxuICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgIHZhbGlkYXRlc0dpdmVuVHlwZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRlc0dpdmVuVHlwZSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBnaXZlbiB0aGUgJyR7dHlwZVN0cmluZ30nIHR5cGUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlc0dpdmVuVHlwZTtcbiAgfVxuXG4gIHZhbGlkYXRlQXNWYXJpYWJsZShzdGF0ZSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHZhbGlkYXRlc0FzVmFyaWFibGU7XG5cbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gYXMgYSB2YXJpYWJsZS4uLmApO1xuXG4gICAgY29uc3QgdGVybSA9IHRoaXM7ICAvLy9cblxuICAgIHZhbGlkYXRlc0FzVmFyaWFibGUgPSB2YWxpZGF0ZVRlcm1Bc1ZhcmlhYmxlKHRlcm0sIHN0YXRlLCBjb250ZXh0LCAodGVybSwgc3RhdGUsIGNvbnRleHQpID0+IHtcbiAgICAgIGxldCB2YWxpZGF0ZXNBc1ZhcmlhYmxlO1xuXG4gICAgICB2YWxpZGF0ZXNBc1ZhcmlhYmxlID0gY29udGludWF0aW9uKHRlcm0sIGNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gdmFsaWRhdGVzQXNWYXJpYWJsZTtcbiAgICB9KTtcblxuICAgIGlmICh2YWxpZGF0ZXNBc1ZhcmlhYmxlKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGFzIGEgdmFyaWFibGUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlc0FzVmFyaWFibGU7XG4gIH1cblxuICAvLyB2YWxpZGF0ZUFzUHJvcGVydHkoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gIC8vICAgbGV0IHRlcm07XG4gIC8vXG4gIC8vICAgY29uc3QgdGVybVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cbiAgLy9cbiAgLy8gICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBhcyBhIHByb3BlcnR5Li4uYCk7XG4gIC8vXG4gIC8vICAgZGVidWdnZXJcbiAgLy9cbiAgLy8gICBsZXQgdmFsaWRhdGVzQXNQcm9wZXJ0eSA9IGZhbHNlO1xuICAvL1xuICAvLyAgIGNvbnN0IHRlcm0gPSB0aGlzLmZpbmRUZXJtKGNvbnRleHQpO1xuICAvL1xuICAvLyAgIGlmICh0ZXJtICE9PSBudWxsKSB7XG4gIC8vICAgICB0ZXJtID0gdGVybTsgLy8vXG4gIC8vXG4gIC8vICAgICBjb25zdCB2YWxpZGF0ZXNGb3J3YXJkID0gY29udGludWF0aW9uKHRlcm0sIGNvbnRleHQpO1xuICAvL1xuICAvLyAgICAgaWYgKHZhbGlkYXRlc0ZvcndhcmQpIHtcbiAgLy8gICAgICAgdmFsaWRhdGVzQXNQcm9wZXJ0eSA9IHRydWU7XG4gIC8vXG4gIC8vICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBpcyBhbHJlYWR5IHZhbGlkLmApO1xuICAvLyAgICAgfSBlbHNlIHtcbiAgLy8gICAgICAgdGVybSA9IG51bGw7XG4gIC8vICAgICB9XG4gIC8vICAgfSBlbHNlIHtcbiAgLy8gICAgIHRlcm0gPSB0aGlzOyAgLy8vXG4gIC8vXG4gIC8vICAgICBjb25zdCB0ZXJtVW5pZmllc1dpdGhQcm9wZXJ0aWVzID0gdW5pZnlUZXJtV2l0aFByb3BlcnRpZXModGVybSwgY29udGV4dCwgY29udGludWF0aW9uKTtcbiAgLy9cbiAgLy8gICAgIGlmICh0ZXJtVW5pZmllc1dpdGhQcm9wZXJ0aWVzKSB7XG4gIC8vICAgICAgIHZhbGlkYXRlc0FzUHJvcGVydHkgPSB0cnVlO1xuICAvLyAgICAgfSBlbHNlIHtcbiAgLy8gICAgICAgdGVybSA9IG51bGw7XG4gIC8vICAgICB9XG4gIC8vXG4gIC8vICAgICBpZiAodmFsaWRhdGVzQXNQcm9wZXJ0eSkge1xuICAvLyAgICAgICBjb250ZXh0LmFkZFRlcm0odGVybSk7XG4gIC8vICAgICB9XG4gIC8vICAgfVxuICAvL1xuICAvLyAgIGlmICh2YWxpZGF0ZXNBc1Byb3BlcnR5KSB7XG4gIC8vICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGFzIGEgcHJvcGVydHkuYCk7XG4gIC8vICAgfVxuICAvL1xuICAvLyAgIHJldHVybiB0ZXJtO1xuICAvLyB9XG5cbiAgdW5pZnlUZXJtKHRlcm0sIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpIHtcbiAgICBsZXQgdGVybVVuaWZpZXMgPSBmYWxzZTtcblxuICAgIGRlYnVnZ2VyXG5cbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAgLy8vXG4gICAgICAgICAgZ2VuZXJhbFRlcm0gPSB0aGlzLCAvLy9cbiAgICAgICAgICBzcGVjaWZpY1Rlcm0gPSB0ZXJtLFxuICAgICAgICAgIGdlbmVyYWxUZXJtU3RyaW5nID0gZ2VuZXJhbFRlcm0uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc3BlY2lmaXhUZXJtU3RyaW5nID0gc3BlY2lmaWNUZXJtLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3NwZWNpZml4VGVybVN0cmluZ30nIHRlcm0gd2l0aCB0aGUgJyR7Z2VuZXJhbFRlcm1TdHJpbmd9JyB0ZXJtLi4uYCk7XG5cbiAgICBjb25zdCB0ZXJtVW5pZmllc0ludHJpbnNpY2FsbHkgPSB1bmlmeVRlcm1JbnRyaW5zaWNhbGx5KGdlbmVyYWxUZXJtLCBzcGVjaWZpY1Rlcm0sIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgaWYgKHRlcm1VbmlmaWVzSW50cmluc2ljYWxseSkge1xuICAgICAgdGVybVVuaWZpZXMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0ZXJtVW5pZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3BlY2lmaXhUZXJtU3RyaW5nfScgdGVybSB3aXRoIHRoZSAnJHtnZW5lcmFsVGVybVN0cmluZ30nIHRlcm0uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlcm1VbmlmaWVzO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IHR5cGVKU09OID0gdHlwZVRvVHlwZUpTT04odGhpcy50eXBlKSxcbiAgICAgICAgICBwcm92aXNpb25hbEpTT04gPSBwcm92aXNpb25hbFRvUHJvdmlzaW9uYWxKU09OKHRoaXMucHJvdmlzaW9uYWwpLFxuICAgICAgICAgIHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBsZXQgYnJlYWtQb2ludDtcblxuICAgIGJyZWFrUG9pbnQgPSB0aGlzLmdldEJyZWFrUG9pbnQoKTtcblxuICAgIGNvbnN0IGJyZWFrUG9pbnRKU09OID0gYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04oYnJlYWtQb2ludCk7XG5cbiAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEpTT047ICAvLy9cblxuICAgIGNvbnN0IHR5cGUgPSB0eXBlSlNPTiwgIC8vL1xuICAgICAgICAgIHByb3Zpc2lvbmFsID0gcHJvdmlzaW9uYWxKU09OLCAgLy8vXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgIGJyZWFrUG9pbnQsXG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgcHJvdmlzaW9uYWxcbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiVGVybVwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IHRlcm07XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICB0ZXJtTm9kZSA9IGluc3RhbnRpYXRlVGVybShzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgbm9kZSA9IHRlcm1Ob2RlLCAgLy8vXG4gICAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgICAgdHlwZSA9IHR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICAgIHByb3Zpc2lvbmFsID0gcHJvdmlzaW9uYWxGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgICAgY29udGV4dCA9IG51bGw7XG5cbiAgICAgIHRlcm0gPSBuZXcgVGVybShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHR5cGUsIHByb3Zpc2lvbmFsKTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiB0ZXJtO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJmaWx0ZXIiLCJhcnJheVV0aWxpdGllcyIsImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIlRlcm0iLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidHlwZSIsInByb3Zpc2lvbmFsIiwiZ2V0VHlwZSIsImlzUHJvdmlzaW9uYWwiLCJzZXRUeXBlIiwic2V0UHJvdmlzaW9uYWwiLCJnZXRUZXJtTm9kZSIsImdldE5vZGUiLCJ0ZXJtTm9kZSIsImdldFZhcmlhYmxlTm9kZSIsInZhcmlhYmxlTm9kZSIsImdldFZhcmlhYmxlSWRlbnRpZmllciIsInZhcmlhYmxlSWRlbnRpZmllciIsImlzRXN0YWJsaXNoZWQiLCJlc3RhYmxpc2hlZCIsImlzRXF1YWxUbyIsInRlcm0iLCJ0ZXJtTm9kZU1hdGNoZXMiLCJtYXRjaFRlcm1Ob2RlIiwiZXF1YWxUbyIsImlzR3JvdW5kZWQiLCJkZWZpbmVkVmFyaWFibGVzIiwidmFyaWFibGVzIiwidmFyaWFibGVzRnJvbVRlcm0iLCJ2YXJpYWJsZSIsImRlZmluZWRWYXJpYWJsZXNJbmNsdWRlc1ZhcmlhYmxlIiwiaW5jbHVkZXMiLCJ1bmRlZmluZWRWYXJpYWJsZXMiLCJ1bmRlZmluZWRWYXJpYWJsZXNMZW5ndGgiLCJsZW5ndGgiLCJncm91bmRlZCIsImlzU2luZ3VsYXIiLCJzaW5ndWxhciIsImlzSW5pdGlhbGx5R3JvdW5kZWQiLCJ2YXJpYWJsZXNMZW5ndGgiLCJpbml0aWFsbHlHcm91bmRlZCIsImlzSW1wbGljaXRseUdyb3VuZGVkIiwiaW1wbGljaXRseUdyb3VuZGVkIiwibm9kZU1hdGNoZXMiLCJtYXRjaE5vZGUiLCJtYXRjaFZhcmlhYmxlTm9kZSIsInZhcmlhYmxlTm9kZU1hdGNoZXMiLCJ2YXJpYWJsZU5vZGVBIiwidmFyaWFibGVOb2RlQiIsInZhcmlhYmxlTm9kZUFNYXRjaGVzVmFyaWFibGVOb2RlQiIsIm1hdGNoIiwiY29tcGFyZVRlcm0iLCJjb21wYXJlc1RvIiwiY29tcGFyZVBhcmFtZXRlciIsInBhcmFtZXRlciIsImNvbXBhcmVzVG9QYXJhbXRlciIsInBhcmFtZXRlcklkZW50aWZpZXIiLCJnZXRJZGVudGlmaWVyIiwiZmluZFRlcm0iLCJmaW5kVGVybUJ5VGVybU5vZGUiLCJ2YWxpZGF0ZSIsInN0YXRlIiwiY29udGludWF0aW9uIiwidmFsaWRhdGVzIiwidGVybVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZGVidWciLCJleGlzdHMiLCJ2YWxpZGF0ZVRlcm1zIiwiYWRkVGVybSIsInZhbGlkYXRlR2l2ZW5UeXBlIiwic3RyaWN0IiwidW5kZWZpbmVkIiwidmFsaWRhdGVzR2l2ZW5UeXBlIiwidHlwZVN0cmluZyIsInRlcm1UeXBlIiwidGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUeXBlIiwiaXNFcXVhbFRvT3JTdWJUeXBlT2YiLCJ0eXBlRXN0YWJsaXNoZWQiLCJ0ZXJtUHJvdmlzaW9uYWwiLCJ2YWxpZGF0ZUFzVmFyaWFibGUiLCJ2YWxpZGF0ZXNBc1ZhcmlhYmxlIiwidmFsaWRhdGVUZXJtQXNWYXJpYWJsZSIsInVuaWZ5VGVybSIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0IiwidGVybVVuaWZpZXMiLCJnZW5lcmFsVGVybSIsInNwZWNpZmljVGVybSIsImdlbmVyYWxUZXJtU3RyaW5nIiwic3BlY2lmaXhUZXJtU3RyaW5nIiwidGVybVVuaWZpZXNJbnRyaW5zaWNhbGx5IiwidW5pZnlUZXJtSW50cmluc2ljYWxseSIsInRvSlNPTiIsInR5cGVKU09OIiwidHlwZVRvVHlwZUpTT04iLCJwcm92aXNpb25hbEpTT04iLCJwcm92aXNpb25hbFRvUHJvdmlzaW9uYWxKU09OIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwianNvbiIsIm5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwiaW5zdGFudGlhdGVUZXJtIiwidHlwZUZyb21KU09OIiwicHJvdmlzaW9uYWxGcm9tSlNPTiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBaUJBOzs7ZUFBQTs7OzJCQWYrQjtnQ0FDYzswQkFFdEI7OEJBQ0E7eUJBQ0s7NkJBQ0k7NkJBQ0U7dUJBQ0s7NEJBQ2U7c0JBQzBDO0FBRWhHLE1BQU0sRUFBRUEsTUFBTSxFQUFFLEdBQUdDLHlCQUFjLEVBQzNCLEVBQUVDLGtCQUFrQixFQUFFQywwQkFBMEIsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFOUUsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxhQUFhQyx1QkFBTztJQUM5QyxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLElBQUksRUFBRUMsV0FBVyxDQUFFO1FBQ2hFLEtBQUssQ0FBQ0wsU0FBU0MsUUFBUUMsTUFBTUMsWUFBWUU7UUFFekMsSUFBSSxDQUFDRCxJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDQyxXQUFXLEdBQUdBO0lBQ3JCO0lBRUFDLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQ0YsSUFBSTtJQUNsQjtJQUVBRyxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQ0YsV0FBVztJQUN6QjtJQUVBRyxRQUFRSixJQUFJLEVBQUU7UUFDWixJQUFJLENBQUNBLElBQUksR0FBR0E7SUFDZDtJQUVBSyxlQUFlSixXQUFXLEVBQUU7UUFDMUIsSUFBSSxDQUFDQSxXQUFXLEdBQUdBO0lBQ3JCO0lBRUFLLGNBQWM7UUFDWixNQUFNUixPQUFPLElBQUksQ0FBQ1MsT0FBTyxJQUNuQkMsV0FBV1YsTUFBTyxHQUFHO1FBRTNCLE9BQU9VO0lBQ1Q7SUFFQUMsa0JBQWtCO1FBQ2hCLE1BQU1ELFdBQVcsSUFBSSxDQUFDRixXQUFXLElBQzNCSSxlQUFlRixTQUFTQyxlQUFl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
283
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3Rlcm0uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuaW1wb3J0IHsgRWxlbWVudCwgYnJlYWtQb2ludFV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBleGlzdHMgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRpbnVhdGlvblwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlVGVybSB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyB2YXJpYWJsZXNGcm9tVGVybSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZXF1aXZhbGVuY2VcIjtcbmltcG9ydCB7IHVuaWZ5VGVybUludHJpbnNpY2FsbHkgfSBmcm9tIFwiLi4vcHJvY2Vzcy91bmlmeVwiO1xuaW1wb3J0IHsgdmFsaWRhdGVUZXJtcywgdmFsaWRhdGVUZXJtQXNWYXJpYWJsZSB9IGZyb20gXCIuLi9wcm9jZXNzL3ZhbGlkYXRpb25cIjtcbmltcG9ydCB7IHR5cGVGcm9tSlNPTiwgdHlwZVRvVHlwZUpTT04sIHByb3Zpc2lvbmFsRnJvbUpTT04sIHByb3Zpc2lvbmFsVG9Qcm92aXNpb25hbEpTT04gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2pzb25cIjtcblxuY29uc3QgeyBmaWx0ZXIgfSA9IGFycmF5VXRpbGl0aWVzLFxuICAgICAgeyBicmVha1BvaW50RnJvbUpTT04sIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgVGVybSBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHR5cGUsIHByb3Zpc2lvbmFsKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBwcm92aXNpb25hbCk7XG5cbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMucHJvdmlzaW9uYWwgPSBwcm92aXNpb25hbDtcbiAgfVxuXG4gIGdldFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZTtcbiAgfVxuXG4gIGlzUHJvdmlzaW9uYWwoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvdmlzaW9uYWw7XG4gIH1cblxuICBzZXRUeXBlKHR5cGUpIHtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICB9XG5cbiAgc2V0UHJvdmlzaW9uYWwocHJvdmlzaW9uYWwpIHtcbiAgICB0aGlzLnByb3Zpc2lvbmFsID0gcHJvdmlzaW9uYWw7XG4gIH1cblxuICBnZXRUZXJtTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgdGVybU5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gdGVybU5vZGU7XG4gIH1cblxuICBnZXRWYXJpYWJsZU5vZGUoKSB7XG4gICAgY29uc3QgdGVybU5vZGUgPSB0aGlzLmdldFRlcm1Ob2RlKCksXG4gICAgICAgICAgdmFyaWFibGVOb2RlID0gdGVybU5vZGUuZ2V0VmFyaWFibGVOb2RlKCk7XG5cbiAgICByZXR1cm4gdmFyaWFibGVOb2RlO1xuICB9XG5cbiAgZ2V0VmFyaWFibGVJZGVudGlmaWVyKCkge1xuICAgIGNvbnN0IHRlcm1Ob2RlID0gdGhpcy5nZXRUZXJtTm9kZSgpLFxuICAgICAgICAgIHZhcmlhYmxlSWRlbnRpZmllciA9IHRlcm1Ob2RlLmdldFZhcmlhYmxlSWRlbnRpZmllcigpO1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlSWRlbnRpZmllcjtcbiAgfVxuXG4gIGlzRXN0YWJsaXNoZWQoKSB7XG4gICAgY29uc3QgcHJvdmlzaW9uYWwgPSB0aGlzLmlzUHJvdmlzaW9uYWwoKSxcbiAgICAgICAgICBlc3RhYmxpc2hlZCA9ICFwcm92aXNpb25hbDtcblxuICAgIHJldHVybiBlc3RhYmxpc2hlZDtcbiAgfVxuXG4gIGlzRXF1YWxUbyh0ZXJtKSB7XG4gICAgY29uc3QgdGVybU5vZGUgPSB0ZXJtLmdldE5vZGUoKSxcbiAgICAgICAgICB0ZXJtTm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoVGVybU5vZGUodGVybU5vZGUpLFxuICAgICAgICAgIGVxdWFsVG8gPSB0ZXJtTm9kZU1hdGNoZXM7ICAvLy9cblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgaXNHcm91bmRlZChkZWZpbmVkVmFyaWFibGVzLCBjb250ZXh0KSB7XG4gICAgY29uc3QgdGVybSAgPSB0aGlzLCAvLy9cbiAgICAgICAgICB2YXJpYWJsZXMgPSB2YXJpYWJsZXNGcm9tVGVybSh0ZXJtLCBjb250ZXh0KTtcblxuICAgIGZpbHRlcih2YXJpYWJsZXMsICh2YXJpYWJsZSkgPT4ge1xuICAgICAgY29uc3QgZGVmaW5lZFZhcmlhYmxlc0luY2x1ZGVzVmFyaWFibGUgPSBkZWZpbmVkVmFyaWFibGVzLmluY2x1ZGVzKHZhcmlhYmxlKTtcblxuICAgICAgaWYgKCFkZWZpbmVkVmFyaWFibGVzSW5jbHVkZXNWYXJpYWJsZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IHVuZGVmaW5lZFZhcmlhYmxlcyA9IHZhcmlhYmxlcywgLy8vXG4gICAgICAgICAgdW5kZWZpbmVkVmFyaWFibGVzTGVuZ3RoID0gdW5kZWZpbmVkVmFyaWFibGVzLmxlbmd0aCxcbiAgICAgICAgICBncm91bmRlZCA9ICh1bmRlZmluZWRWYXJpYWJsZXNMZW5ndGggPD0gMSk7XG5cbiAgICByZXR1cm4gZ3JvdW5kZWQ7XG4gIH1cblxuICBpc1Npbmd1bGFyKCkge1xuICAgIGNvbnN0IHRlcm1Ob2RlID0gdGhpcy5nZXRUZXJtTm9kZSgpLFxuICAgICAgICAgIHNpbmd1bGFyID0gdGVybU5vZGUuaXNTaW5ndWxhcigpO1xuXG4gICAgcmV0dXJuIHNpbmd1bGFyO1xuICB9XG5cbiAgaXNJbml0aWFsbHlHcm91bmRlZChjb250ZXh0KSB7XG4gICAgY29uc3QgdGVybSAgPSB0aGlzLCAvLy9cbiAgICAgICAgICB2YXJpYWJsZXMgPSB2YXJpYWJsZXNGcm9tVGVybSh0ZXJtLCBjb250ZXh0KSxcbiAgICAgICAgICB2YXJpYWJsZXNMZW5ndGggPSB2YXJpYWJsZXMubGVuZ3RoLFxuICAgICAgICAgIGluaXRpYWxseUdyb3VuZGVkID0gKHZhcmlhYmxlc0xlbmd0aCA9PT0gMCk7XG5cbiAgICByZXR1cm4gaW5pdGlhbGx5R3JvdW5kZWQ7XG4gIH1cblxuICBpc0ltcGxpY2l0bHlHcm91bmRlZChkZWZpbmVkVmFyaWFibGVzLCBjb250ZXh0KSB7XG4gICAgY29uc3QgZ3JvdW5kZWQgPSB0aGlzLmlzR3JvdW5kZWQoZGVmaW5lZFZhcmlhYmxlcywgY29udGV4dCksXG4gICAgICAgICAgaW1wbGljaXRseUdyb3VuZGVkID0gZ3JvdW5kZWQ7ICAvLy9cblxuICAgIHJldHVybiBpbXBsaWNpdGx5R3JvdW5kZWQ7XG4gIH1cblxuICBtYXRjaFRlcm1Ob2RlKHRlcm1Ob2RlKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRlcm1Ob2RlLCAvLy9cbiAgICAgICAgICBub2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hOb2RlKG5vZGUpLFxuICAgICAgICAgIHRlcm1Ob2RlTWF0Y2hlcyA9IG5vZGVNYXRjaGVzOyAvLy9cblxuICAgIHJldHVybiB0ZXJtTm9kZU1hdGNoZXM7XG4gIH1cblxuICBtYXRjaFZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpIHtcbiAgICBsZXQgdmFyaWFibGVOb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc2luZ3VsYXIgPSB0aGlzLmlzU2luZ3VsYXIoKTtcblxuICAgIGlmIChzaW5ndWxhcikge1xuICAgICAgY29uc3QgdmFyaWFibGVOb2RlQSA9IHZhcmlhYmxlTm9kZTsgLy8vXG5cbiAgICAgIHZhcmlhYmxlTm9kZSA9IHRoaXMuZ2V0VmFyaWFibGVOb2RlKCk7XG5cbiAgICAgIGNvbnN0IHZhcmlhYmxlTm9kZUIgPSB2YXJpYWJsZU5vZGUsIC8vL1xuICAgICAgICAgICAgdmFyaWFibGVOb2RlQU1hdGNoZXNWYXJpYWJsZU5vZGVCID0gdmFyaWFibGVOb2RlQS5tYXRjaCh2YXJpYWJsZU5vZGVCKTtcblxuICAgICAgaWYgKHZhcmlhYmxlTm9kZUFNYXRjaGVzVmFyaWFibGVOb2RlQikge1xuICAgICAgICB2YXJpYWJsZU5vZGVNYXRjaGVzID0gdHJ1ZTsgLy8vXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhcmlhYmxlTm9kZU1hdGNoZXM7XG4gIH1cblxuICBjb21wYXJlVGVybSh0ZXJtKSB7XG4gICAgY29uc3QgdGVybU5vZGUgPSB0ZXJtLmdldE5vZGUoKSxcbiAgICAgICAgICB0ZXJtTm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoTm9kZSh0ZXJtTm9kZSksXG4gICAgICAgICAgY29tcGFyZXNUbyA9IHRlcm1Ob2RlTWF0Y2hlczsgLy8vXG5cbiAgICByZXR1cm4gY29tcGFyZXNUbztcbiAgfVxuXG4gIGNvbXBhcmVQYXJhbWV0ZXIocGFyYW1ldGVyKSB7XG4gICAgbGV0IGNvbXBhcmVzVG9QYXJhbXRlciA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc2luZ3VsYXIgPSB0aGlzLmlzU2luZ3VsYXIoKTtcblxuICAgIGlmIChzaW5ndWxhcikge1xuICAgICAgY29uc3QgcGFyYW1ldGVySWRlbnRpZmllciA9IHBhcmFtZXRlci5nZXRJZGVudGlmaWVyKCk7XG5cbiAgICAgIGlmIChwYXJhbWV0ZXJJZGVudGlmaWVyICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHZhcmlhYmxlSWRlbnRpZmllciA9IHRoaXMuZ2V0VmFyaWFibGVJZGVudGlmaWVyKCk7XG5cbiAgICAgICAgaWYgKHBhcmFtZXRlcklkZW50aWZpZXIgPT09IHZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgICAgICAgIGNvbXBhcmVzVG9QYXJhbXRlciA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY29tcGFyZXNUb1BhcmFtdGVyO1xuICB9XG5cbiAgZmluZFRlcm0oY29udGV4dCkge1xuICAgIGNvbnN0IHRlcm1Ob2RlID0gdGhpcy5nZXRUZXJtTm9kZSgpLFxuICAgICAgICAgIHRlcm0gPSBjb250ZXh0LmZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSk7XG5cbiAgICByZXR1cm4gdGVybTtcbiAgfVxuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLi4uYCk7XG5cbiAgICBsZXQgdGVybTtcblxuICAgIHRlcm0gPSB0aGlzLmZpbmRUZXJtKGNvbnRleHQpO1xuXG4gICAgaWYgKHRlcm0gIT09IG51bGwpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGNvbnRpbnVhdGlvbih0ZXJtLCBjb250ZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGVybSA9IHRoaXM7ICAvLy9cblxuICAgICAgdmFsaWRhdGVzID0gZXhpc3RzKHZhbGlkYXRlVGVybXMsIHRlcm0sIHN0YXRlLCBjb250ZXh0LCAodGVybSwgc3RhdGUsIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgICBjb250ZXh0LmFkZFRlcm0odGVybSk7XG5cbiAgICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHRlcm0sIGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZUdpdmVuVHlwZShzdHJpY3QsIHR5cGUsIHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBpZiAoY29udGludWF0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnRpbnVhdGlvbiA9IGNvbnRleHQ7IC8vL1xuXG4gICAgICBjb250ZXh0ID0gc3RhdGU7IC8vL1xuXG4gICAgICBzdGF0ZSA9IHR5cGU7IC8vL1xuXG4gICAgICB0eXBlID0gc3RyaWN0OyAgLy8vXG5cbiAgICAgIHN0cmljdCA9IHRydWU7XG4gICAgfVxuXG4gICAgbGV0IHZhbGlkYXRlc0dpdmVuVHlwZSA9IGZhbHNlO1xuXG4gICAgY29uc3QgdHlwZVN0cmluZyA9IHR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgdGVybVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGdpdmVuIHRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZS4uLmApO1xuXG4gICAgY29uc3QgdmFsaWRhdGVzID0gdGhpcy52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQpID0+IHtcbiAgICAgIGxldCB2YWxpZGF0ZXNHaXZlblR5cGUgPSBmYWxzZTtcblxuICAgICAgY29uc3QgdGVybVR5cGUgPSB0ZXJtLmdldFR5cGUoKSxcbiAgICAgICAgICAgIHRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mVHlwZSA9IHRlcm1UeXBlLmlzRXF1YWxUb09yU3ViVHlwZU9mKHR5cGUpO1xuXG4gICAgICBpZiAodGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUeXBlKSB7XG4gICAgICAgIHZhbGlkYXRlc0dpdmVuVHlwZSA9IHRydWU7XG5cbiAgICAgICAgaWYgKHN0cmljdCkge1xuICAgICAgICAgIGNvbnN0IHR5cGVFc3RhYmxpc2hlZCA9IHR5cGUuaXNFc3RhYmxpc2hlZCgpLFxuICAgICAgICAgICAgICAgIHRlcm1Qcm92aXNpb25hbCA9IHRlcm0uaXNQcm92aXNpb25hbCgpO1xuXG4gICAgICAgICAgaWYgKHR5cGVFc3RhYmxpc2hlZCAmJiB0ZXJtUHJvdmlzaW9uYWwpIHtcbiAgICAgICAgICAgIHZhbGlkYXRlc0dpdmVuVHlwZSA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodmFsaWRhdGVzR2l2ZW5UeXBlKSB7XG4gICAgICAgIHZhbGlkYXRlc0dpdmVuVHlwZSA9IGNvbnRpbnVhdGlvbih0ZXJtLCBjb250ZXh0KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHZhbGlkYXRlc0dpdmVuVHlwZTtcbiAgICB9KTtcblxuICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgIHZhbGlkYXRlc0dpdmVuVHlwZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRlc0dpdmVuVHlwZSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBnaXZlbiB0aGUgJyR7dHlwZVN0cmluZ30nIHR5cGUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlc0dpdmVuVHlwZTtcbiAgfVxuXG4gIHZhbGlkYXRlQXNWYXJpYWJsZShzdGF0ZSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHZhbGlkYXRlc0FzVmFyaWFibGU7XG5cbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gYXMgYSB2YXJpYWJsZS4uLmApO1xuXG4gICAgY29uc3QgdGVybSA9IHRoaXM7ICAvLy9cblxuICAgIHZhbGlkYXRlc0FzVmFyaWFibGUgPSB2YWxpZGF0ZVRlcm1Bc1ZhcmlhYmxlKHRlcm0sIHN0YXRlLCBjb250ZXh0LCAodGVybSwgc3RhdGUsIGNvbnRleHQpID0+IHtcbiAgICAgIGxldCB2YWxpZGF0ZXNBc1ZhcmlhYmxlO1xuXG4gICAgICB2YWxpZGF0ZXNBc1ZhcmlhYmxlID0gY29udGludWF0aW9uKHRlcm0sIGNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gdmFsaWRhdGVzQXNWYXJpYWJsZTtcbiAgICB9KTtcblxuICAgIGlmICh2YWxpZGF0ZXNBc1ZhcmlhYmxlKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGFzIGEgdmFyaWFibGUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlc0FzVmFyaWFibGU7XG4gIH1cblxuICAvLyB2YWxpZGF0ZUFzUHJvcGVydHkoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gIC8vICAgbGV0IHRlcm07XG4gIC8vXG4gIC8vICAgY29uc3QgdGVybVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cbiAgLy9cbiAgLy8gICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBhcyBhIHByb3BlcnR5Li4uYCk7XG4gIC8vXG4gIC8vICAgZGVidWdnZXJcbiAgLy9cbiAgLy8gICBsZXQgdmFsaWRhdGVzQXNQcm9wZXJ0eSA9IGZhbHNlO1xuICAvL1xuICAvLyAgIGNvbnN0IHRlcm0gPSB0aGlzLmZpbmRUZXJtKGNvbnRleHQpO1xuICAvL1xuICAvLyAgIGlmICh0ZXJtICE9PSBudWxsKSB7XG4gIC8vICAgICB0ZXJtID0gdGVybTsgLy8vXG4gIC8vXG4gIC8vICAgICBjb25zdCB2YWxpZGF0ZXNGb3J3YXJkID0gY29udGludWF0aW9uKHRlcm0sIGNvbnRleHQpO1xuICAvL1xuICAvLyAgICAgaWYgKHZhbGlkYXRlc0ZvcndhcmQpIHtcbiAgLy8gICAgICAgdmFsaWRhdGVzQXNQcm9wZXJ0eSA9IHRydWU7XG4gIC8vXG4gIC8vICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBpcyBhbHJlYWR5IHZhbGlkLmApO1xuICAvLyAgICAgfSBlbHNlIHtcbiAgLy8gICAgICAgdGVybSA9IG51bGw7XG4gIC8vICAgICB9XG4gIC8vICAgfSBlbHNlIHtcbiAgLy8gICAgIHRlcm0gPSB0aGlzOyAgLy8vXG4gIC8vXG4gIC8vICAgICBjb25zdCB0ZXJtVW5pZmllc1dpdGhQcm9wZXJ0aWVzID0gdW5pZnlUZXJtV2l0aFByb3BlcnRpZXModGVybSwgY29udGV4dCwgY29udGludWF0aW9uKTtcbiAgLy9cbiAgLy8gICAgIGlmICh0ZXJtVW5pZmllc1dpdGhQcm9wZXJ0aWVzKSB7XG4gIC8vICAgICAgIHZhbGlkYXRlc0FzUHJvcGVydHkgPSB0cnVlO1xuICAvLyAgICAgfSBlbHNlIHtcbiAgLy8gICAgICAgdGVybSA9IG51bGw7XG4gIC8vICAgICB9XG4gIC8vXG4gIC8vICAgICBpZiAodmFsaWRhdGVzQXNQcm9wZXJ0eSkge1xuICAvLyAgICAgICBjb250ZXh0LmFkZFRlcm0odGVybSk7XG4gIC8vICAgICB9XG4gIC8vICAgfVxuICAvL1xuICAvLyAgIGlmICh2YWxpZGF0ZXNBc1Byb3BlcnR5KSB7XG4gIC8vICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGFzIGEgcHJvcGVydHkuYCk7XG4gIC8vICAgfVxuICAvL1xuICAvLyAgIHJldHVybiB0ZXJtO1xuICAvLyB9XG5cbiAgdW5pZnlUZXJtKHRlcm0sIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB0ZXJtVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIGdlbmVyYWxUZXJtID0gdGhpcywgLy8vXG4gICAgICAgICAgc3BlY2lmaWNUZXJtID0gdGVybSxcbiAgICAgICAgICBnZW5lcmFsVGVybVN0cmluZyA9IGdlbmVyYWxUZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIHNwZWNpZml4VGVybVN0cmluZyA9IHNwZWNpZmljVGVybS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzcGVjaWZpeFRlcm1TdHJpbmd9JyB0ZXJtIHdpdGggdGhlICcke2dlbmVyYWxUZXJtU3RyaW5nfScgdGVybS4uLmApO1xuXG4gICAgcmV0dXJuIHVuaWZ5VGVybUludHJpbnNpY2FsbHkoZ2VuZXJhbFRlcm0sIHNwZWNpZmljVGVybSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKHRlcm1VbmlmaWVzSW50cmluc2ljYWxseSkgPT4ge1xuICAgICAgaWYgKHRlcm1VbmlmaWVzSW50cmluc2ljYWxseSkge1xuICAgICAgICB0ZXJtVW5pZmllcyA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0ZXJtVW5pZmllcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzcGVjaWZpeFRlcm1TdHJpbmd9JyB0ZXJtIHdpdGggdGhlICcke2dlbmVyYWxUZXJtU3RyaW5nfScgdGVybS5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih0ZXJtVW5pZmllcyk7XG4gICAgfSk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgdHlwZUpTT04gPSB0eXBlVG9UeXBlSlNPTih0aGlzLnR5cGUpLFxuICAgICAgICAgIHByb3Zpc2lvbmFsSlNPTiA9IHByb3Zpc2lvbmFsVG9Qcm92aXNpb25hbEpTT04odGhpcy5wcm92aXNpb25hbCksXG4gICAgICAgICAgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgY29uc3QgdHlwZSA9IHR5cGVKU09OLCAgLy8vXG4gICAgICAgICAgcHJvdmlzaW9uYWwgPSBwcm92aXNpb25hbEpTT04sICAvLy9cbiAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgYnJlYWtQb2ludCxcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBwcm92aXNpb25hbFxuICAgICAgICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJUZXJtXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgdGVybTtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgIHRlcm1Ob2RlID0gaW5zdGFudGlhdGVUZXJtKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICBub2RlID0gdGVybU5vZGUsICAvLy9cbiAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgICB0eXBlID0gdHlwZUZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgICAgcHJvdmlzaW9uYWwgPSBwcm92aXNpb25hbEZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgICAgdGVybSA9IG5ldyBUZXJtKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdHlwZSwgcHJvdmlzaW9uYWwpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHRlcm07XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbImZpbHRlciIsImFycmF5VXRpbGl0aWVzIiwiYnJlYWtQb2ludEZyb21KU09OIiwiYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiVGVybSIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJ0eXBlIiwicHJvdmlzaW9uYWwiLCJnZXRUeXBlIiwiaXNQcm92aXNpb25hbCIsInNldFR5cGUiLCJzZXRQcm92aXNpb25hbCIsImdldFRlcm1Ob2RlIiwiZ2V0Tm9kZSIsInRlcm1Ob2RlIiwiZ2V0VmFyaWFibGVOb2RlIiwidmFyaWFibGVOb2RlIiwiZ2V0VmFyaWFibGVJZGVudGlmaWVyIiwidmFyaWFibGVJZGVudGlmaWVyIiwiaXNFc3RhYmxpc2hlZCIsImVzdGFibGlzaGVkIiwiaXNFcXVhbFRvIiwidGVybSIsInRlcm1Ob2RlTWF0Y2hlcyIsIm1hdGNoVGVybU5vZGUiLCJlcXVhbFRvIiwiaXNHcm91bmRlZCIsImRlZmluZWRWYXJpYWJsZXMiLCJ2YXJpYWJsZXMiLCJ2YXJpYWJsZXNGcm9tVGVybSIsInZhcmlhYmxlIiwiZGVmaW5lZFZhcmlhYmxlc0luY2x1ZGVzVmFyaWFibGUiLCJpbmNsdWRlcyIsInVuZGVmaW5lZFZhcmlhYmxlcyIsInVuZGVmaW5lZFZhcmlhYmxlc0xlbmd0aCIsImxlbmd0aCIsImdyb3VuZGVkIiwiaXNTaW5ndWxhciIsInNpbmd1bGFyIiwiaXNJbml0aWFsbHlHcm91bmRlZCIsInZhcmlhYmxlc0xlbmd0aCIsImluaXRpYWxseUdyb3VuZGVkIiwiaXNJbXBsaWNpdGx5R3JvdW5kZWQiLCJpbXBsaWNpdGx5R3JvdW5kZWQiLCJub2RlTWF0Y2hlcyIsIm1hdGNoTm9kZSIsIm1hdGNoVmFyaWFibGVOb2RlIiwidmFyaWFibGVOb2RlTWF0Y2hlcyIsInZhcmlhYmxlTm9kZUEiLCJ2YXJpYWJsZU5vZGVCIiwidmFyaWFibGVOb2RlQU1hdGNoZXNWYXJpYWJsZU5vZGVCIiwibWF0Y2giLCJjb21wYXJlVGVybSIsImNvbXBhcmVzVG8iLCJjb21wYXJlUGFyYW1ldGVyIiwicGFyYW1ldGVyIiwiY29tcGFyZXNUb1BhcmFtdGVyIiwicGFyYW1ldGVySWRlbnRpZmllciIsImdldElkZW50aWZpZXIiLCJmaW5kVGVybSIsImZpbmRUZXJtQnlUZXJtTm9kZSIsInZhbGlkYXRlIiwic3RhdGUiLCJjb250aW51YXRpb24iLCJ2YWxpZGF0ZXMiLCJ0ZXJtU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZWJ1ZyIsImV4aXN0cyIsInZhbGlkYXRlVGVybXMiLCJhZGRUZXJtIiwidmFsaWRhdGVHaXZlblR5cGUiLCJzdHJpY3QiLCJ1bmRlZmluZWQiLCJ2YWxpZGF0ZXNHaXZlblR5cGUiLCJ0eXBlU3RyaW5nIiwidGVybVR5cGUiLCJ0ZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZlR5cGUiLCJpc0VxdWFsVG9PclN1YlR5cGVPZiIsInR5cGVFc3RhYmxpc2hlZCIsInRlcm1Qcm92aXNpb25hbCIsInZhbGlkYXRlQXNWYXJpYWJsZSIsInZhbGlkYXRlc0FzVmFyaWFibGUiLCJ2YWxpZGF0ZVRlcm1Bc1ZhcmlhYmxlIiwidW5pZnlUZXJtIiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJ0ZXJtVW5pZmllcyIsImdlbmVyYWxUZXJtIiwic3BlY2lmaWNUZXJtIiwiZ2VuZXJhbFRlcm1TdHJpbmciLCJzcGVjaWZpeFRlcm1TdHJpbmciLCJ1bmlmeVRlcm1JbnRyaW5zaWNhbGx5IiwidGVybVVuaWZpZXNJbnRyaW5zaWNhbGx5IiwidG9KU09OIiwidHlwZUpTT04iLCJ0eXBlVG9UeXBlSlNPTiIsInByb3Zpc2lvbmFsSlNPTiIsInByb3Zpc2lvbmFsVG9Qcm92aXNpb25hbEpTT04iLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJqc29uIiwibmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJpbnN0YW50aWF0ZVRlcm0iLCJ0eXBlRnJvbUpTT04iLCJwcm92aXNpb25hbEZyb21KU09OIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFpQkE7OztlQUFBOzs7MkJBZitCO2dDQUNjOzBCQUV0Qjs4QkFDQTt5QkFDSzs2QkFDSTs2QkFDRTt1QkFDSzs0QkFDZTtzQkFDMEM7QUFFaEcsTUFBTSxFQUFFQSxNQUFNLEVBQUUsR0FBR0MseUJBQWMsRUFDM0IsRUFBRUMsa0JBQWtCLEVBQUVDLDBCQUEwQixFQUFFLEdBQUdDLG1DQUFtQjtNQUU5RSxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLGFBQWFDLHVCQUFPO0lBQzlDLFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsSUFBSSxFQUFFQyxXQUFXLENBQUU7UUFDaEUsS0FBSyxDQUFDTCxTQUFTQyxRQUFRQyxNQUFNQyxZQUFZRTtRQUV6QyxJQUFJLENBQUNELElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLFdBQVcsR0FBR0E7SUFDckI7SUFFQUMsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDRixJQUFJO0lBQ2xCO0lBRUFHLGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDRixXQUFXO0lBQ3pCO0lBRUFHLFFBQVFKLElBQUksRUFBRTtRQUNaLElBQUksQ0FBQ0EsSUFBSSxHQUFHQTtJQUNkO0lBRUFLLGVBQWVKLFdBQVcsRUFBRTtRQUMxQixJQUFJLENBQUNBLFdBQVcsR0FBR0E7SUFDckI7SUFFQUssY0FBYztRQUNaLE1BQU1SLE9BQU8sSUFBSSxDQUFDUyxPQUFPLElBQ25CQyxXQUFXVixNQUFPLEdBQUc7UUFFM0IsT0FBT1U7SUFDVDtJQUVBQyxrQkFBa0I7UUFDaEIsTUFBTUQsV0FBVyxJQUFJLENBQUNGLFdBQVcsSUFDM0JJLGVBQWVGLFNBQVNDLGVBQWU7UUFFN0MsT0FBT0M7SUFDVDtJQUVBQyx3QkFBd0I7UUFDdEIsTUFBTUgsV0FBVyxJQUFJLENBQUNGLFdBQVcsSUFDM0JNLHFCQUFxQkosU0FBU0cscUJBQXFCO1FBRXpELE9BQU9DO0lBQ1Q7SUFFQUMsZ0JBQWdCO1FBQ2QsTUFBTVosY0FBYyxJQUFJLENBQUNFLGFBQWEsSUFDaENXLGNBQWMsQ0FBQ2I7UUFFckIsT0FBT2E7SUFDVDtJQUVBQyxVQUFVQyxJQUFJLEVBQUU7UUFDZCxNQUFNUixXQUFXUSxLQUFLVCxPQUFPLElBQ3ZCVSxrQkFBa0IsSUFBSSxDQUFDQyxhQUFhLENBQUNWLFdBQ3JDVyxVQUFVRixpQkFBa0IsR0FBRztRQUVyQyxPQUFPRTtJQUNUO0lBRUFDLFdBQVdDLGdCQUFnQixFQUFFekIsT0FBTyxFQUFFO1FBQ3BDLE1BQU1vQixPQUFRLElBQUksRUFDWk0sWUFBWUMsSUFBQUEsOEJBQWlCLEVBQUNQLE1BQU1wQjtRQUUxQ1IsT0FBT2tDLFdBQVcsQ0FBQ0U7WUFDakIsTUFBTUMsbUNBQW1DSixpQkFBaUJLLFFBQVEsQ0FBQ0Y7WUFFbkUsSUFBSSxDQUFDQyxrQ0FBa0M7Z0JBQ3JDLE9BQU87WUFDVDtRQUNGO1FBRUEsTUFBTUUscUJBQXFCTCxXQUNyQk0sMkJBQTJCRCxtQkFBbUJFLE1BQU0sRUFDcERDLFdBQVlGLDRCQUE0QjtRQUU5QyxPQUFPRTtJQUNUO0lBRUFDLGFBQWE7UUFDWCxNQUFNdkIsV0FBVyxJQUFJLENBQUNGLFdBQVcsSUFDM0IwQixXQUFXeEIsU0FBU3VCLFVBQVU7UUFFcEMsT0FBT0M7SUFDVDtJQUVBQyxvQkFBb0JyQyxPQUFPLEVBQUU7UUFDM0IsTUFBTW9CLE9BQVEsSUFBSSxFQUNaTSxZQUFZQyxJQUFBQSw4QkFBaUIsRUFBQ1AsTUFBTXBCLFVBQ3BDc0Msa0JBQWtCWixVQUFVTyxNQUFNLEVBQ2xDTSxvQkFBcUJELG9CQUFvQjtRQUUvQyxPQUFPQztJQUNUO0lBRUFDLHFCQUFxQmYsZ0JBQWdCLEVBQUV6QixPQUFPLEVBQUU7UUFDOUMsTUFBTWtDLFdBQVcsSUFBSSxDQUFDVixVQUFVLENBQUNDLGtCQUFrQnpCLFVBQzdDeUMscUJBQXFCUCxVQUFXLEdBQUc7UUFFekMsT0FBT087SUFDVDtJQUVBbkIsY0FBY1YsUUFBUSxFQUFFO1FBQ3RCLE1BQU1WLE9BQU9VLFVBQ1A4QixjQUFjLElBQUksQ0FBQ0MsU0FBUyxDQUFDekMsT0FDN0JtQixrQkFBa0JxQixhQUFhLEdBQUc7UUFFeEMsT0FBT3JCO0lBQ1Q7SUFFQXVCLGtCQUFrQjlCLFlBQVksRUFBRTtRQUM5QixJQUFJK0Isc0JBQXNCO1FBRTFCLE1BQU1ULFdBQVcsSUFBSSxDQUFDRCxVQUFVO1FBRWhDLElBQUlDLFVBQVU7WUFDWixNQUFNVSxnQkFBZ0JoQyxjQUFjLEdBQUc7WUFFdkNBLGVBQWUsSUFBSSxDQUFDRCxlQUFlO1lBRW5DLE1BQU1rQyxnQkFBZ0JqQyxjQUNoQmtDLG9DQUFvQ0YsY0FBY0csS0FBSyxDQUFDRjtZQUU5RCxJQUFJQyxtQ0FBbUM7Z0JBQ3JDSCxzQkFBc0IsTUFBTSxHQUFHO1lBQ2pDO1FBQ0Y7UUFFQSxPQUFPQTtJQUNUO0lBRUFLLFlBQVk5QixJQUFJLEVBQUU7UUFDaEIsTUFBTVIsV0FBV1EsS0FBS1QsT0FBTyxJQUN2QlUsa0JBQWtCLElBQUksQ0FBQ3NCLFNBQVMsQ0FBQy9CLFdBQ2pDdUMsYUFBYTlCLGlCQUFpQixHQUFHO1FBRXZDLE9BQU84QjtJQUNUO0lBRUFDLGlCQUFpQkMsU0FBUyxFQUFFO1FBQzFCLElBQUlDLHFCQUFxQjtRQUV6QixNQUFNbEIsV0FBVyxJQUFJLENBQUNELFVBQVU7UUFFaEMsSUFBSUMsVUFBVTtZQUNaLE1BQU1tQixzQkFBc0JGLFVBQVVHLGFBQWE7WUFFbkQsSUFBSUQsd0JBQXdCLE1BQU07Z0JBQ2hDLE1BQU12QyxxQkFBcUIsSUFBSSxDQUFDRCxxQkFBcUI7Z0JBRXJELElBQUl3Qyx3QkFBd0J2QyxvQkFBb0I7b0JBQzlDc0MscUJBQXFCO2dCQUN2QjtZQUNGO1FBQ0Y7UUFFQSxPQUFPQTtJQUNUO0lBRUFHLFNBQVN6RCxPQUFPLEVBQUU7UUFDaEIsTUFBTVksV0FBVyxJQUFJLENBQUNGLFdBQVcsSUFDM0JVLE9BQU9wQixRQUFRMEQsa0JBQWtCLENBQUM5QztRQUV4QyxPQUFPUTtJQUNUO0lBRUF1QyxTQUFTQyxLQUFLLEVBQUU1RCxPQUFPLEVBQUU2RCxZQUFZLEVBQUU7UUFDckMsSUFBSUM7UUFFSixNQUFNQyxhQUFhLElBQUksQ0FBQ0MsU0FBUyxJQUFLLEdBQUc7UUFFekNoRSxRQUFRaUUsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLEVBQUVGLFdBQVcsU0FBUyxDQUFDO1FBRXRELElBQUkzQztRQUVKQSxPQUFPLElBQUksQ0FBQ3FDLFFBQVEsQ0FBQ3pEO1FBRXJCLElBQUlvQixTQUFTLE1BQU07WUFDakJwQixRQUFRa0UsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFSCxXQUFXLDBCQUEwQixDQUFDO1lBRS9ERCxZQUFZRCxhQUFhekMsTUFBTXBCO1FBQ2pDLE9BQU87WUFDTG9CLE9BQU8sSUFBSSxFQUFHLEdBQUc7WUFFakIwQyxZQUFZSyxJQUFBQSxvQkFBTSxFQUFDQyx5QkFBYSxFQUFFaEQsTUFBTXdDLE9BQU81RCxTQUFTLENBQUNvQixNQUFNd0MsT0FBTzVEO2dCQUNwRSxJQUFJOEQ7Z0JBRUo5RCxRQUFRcUUsT0FBTyxDQUFDakQ7Z0JBRWhCMEMsWUFBWUQsYUFBYXpDLE1BQU1wQjtnQkFFL0IsT0FBTzhEO1lBQ1Q7UUFDRjtRQUVBLElBQUlBLFdBQVc7WUFDYjlELFFBQVFrRSxLQUFLLENBQUMsQ0FBQyxrQkFBa0IsRUFBRUgsV0FBVyxPQUFPLENBQUM7UUFDeEQ7UUFFQSxPQUFPRDtJQUNUO0lBRUFRLGtCQUFrQkMsTUFBTSxFQUFFbkUsSUFBSSxFQUFFd0QsS0FBSyxFQUFFNUQsT0FBTyxFQUFFNkQsWUFBWSxFQUFFO1FBQzVELElBQUlBLGlCQUFpQlcsV0FBVztZQUM5QlgsZUFBZTdELFNBQVMsR0FBRztZQUUzQkEsVUFBVTRELE9BQU8sR0FBRztZQUVwQkEsUUFBUXhELE1BQU0sR0FBRztZQUVqQkEsT0FBT21FLFFBQVMsR0FBRztZQUVuQkEsU0FBUztRQUNYO1FBRUEsSUFBSUUscUJBQXFCO1FBRXpCLE1BQU1DLGFBQWF0RSxLQUFLNEQsU0FBUyxJQUMzQkQsYUFBYSxJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRXpDaEUsUUFBUWlFLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFRixXQUFXLGtCQUFrQixFQUFFVyxXQUFXLFNBQVMsQ0FBQztRQUVyRixNQUFNWixZQUFZLElBQUksQ0FBQ0gsUUFBUSxDQUFDQyxPQUFPNUQsU0FBUyxDQUFDb0IsTUFBTXBCO1lBQ3JELElBQUl5RSxxQkFBcUI7WUFFekIsTUFBTUUsV0FBV3ZELEtBQUtkLE9BQU8sSUFDdkJzRSxpQ0FBaUNELFNBQVNFLG9CQUFvQixDQUFDekU7WUFFckUsSUFBSXdFLGdDQUFnQztnQkFDbENILHFCQUFxQjtnQkFFckIsSUFBSUYsUUFBUTtvQkFDVixNQUFNTyxrQkFBa0IxRSxLQUFLYSxhQUFhLElBQ3BDOEQsa0JBQWtCM0QsS0FBS2IsYUFBYTtvQkFFMUMsSUFBSXVFLG1CQUFtQkMsaUJBQWlCO3dCQUN0Q04scUJBQXFCO29CQUN2QjtnQkFDRjtZQUNGO1lBRUEsSUFBSUEsb0JBQW9CO2dCQUN0QkEscUJBQXFCWixhQUFhekMsTUFBTXBCO1lBQzFDO1lBRUEsT0FBT3lFO1FBQ1Q7UUFFQSxJQUFJWCxXQUFXO1lBQ2JXLHFCQUFxQjtRQUN2QjtRQUVBLElBQUlBLG9CQUFvQjtZQUN0QnpFLFFBQVFrRSxLQUFLLENBQUMsQ0FBQyxrQkFBa0IsRUFBRUgsV0FBVyxrQkFBa0IsRUFBRVcsV0FBVyxPQUFPLENBQUM7UUFDdkY7UUFFQSxPQUFPRDtJQUNUO0lBRUFPLG1CQUFtQnBCLEtBQUssRUFBRTVELE9BQU8sRUFBRTZELFlBQVksRUFBRTtRQUMvQyxJQUFJb0I7UUFFSixNQUFNbEIsYUFBYSxJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRXpDaEUsUUFBUWlFLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFRixXQUFXLHVCQUF1QixDQUFDO1FBRXBFLE1BQU0zQyxPQUFPLElBQUksRUFBRyxHQUFHO1FBRXZCNkQsc0JBQXNCQyxJQUFBQSxrQ0FBc0IsRUFBQzlELE1BQU13QyxPQUFPNUQsU0FBUyxDQUFDb0IsTUFBTXdDLE9BQU81RDtZQUMvRSxJQUFJaUY7WUFFSkEsc0JBQXNCcEIsYUFBYXpDLE1BQU1wQjtZQUV6QyxPQUFPaUY7UUFDVDtRQUVBLElBQUlBLHFCQUFxQjtZQUN2QmpGLFFBQVFrRSxLQUFLLENBQUMsQ0FBQyxrQkFBa0IsRUFBRUgsV0FBVyxxQkFBcUIsQ0FBQztRQUN0RTtRQUVBLE9BQU9rQjtJQUNUO0lBRUEsOENBQThDO0lBQzlDLGNBQWM7SUFDZCxFQUFFO0lBQ0YsOENBQThDO0lBQzlDLEVBQUU7SUFDRiwyRUFBMkU7SUFDM0UsRUFBRTtJQUNGLGFBQWE7SUFDYixFQUFFO0lBQ0YscUNBQXFDO0lBQ3JDLEVBQUU7SUFDRix5Q0FBeUM7SUFDekMsRUFBRTtJQUNGLHlCQUF5QjtJQUN6Qix1QkFBdUI7SUFDdkIsRUFBRTtJQUNGLDREQUE0RDtJQUM1RCxFQUFFO0lBQ0YsOEJBQThCO0lBQzlCLG9DQUFvQztJQUNwQyxFQUFFO0lBQ0Ysd0VBQXdFO0lBQ3hFLGVBQWU7SUFDZixxQkFBcUI7SUFDckIsUUFBUTtJQUNSLGFBQWE7SUFDYix3QkFBd0I7SUFDeEIsRUFBRTtJQUNGLDhGQUE4RjtJQUM5RixFQUFFO0lBQ0YsdUNBQXVDO0lBQ3ZDLG9DQUFvQztJQUNwQyxlQUFlO0lBQ2YscUJBQXFCO0lBQ3JCLFFBQVE7SUFDUixFQUFFO0lBQ0YsaUNBQWlDO0lBQ2pDLCtCQUErQjtJQUMvQixRQUFRO0lBQ1IsTUFBTTtJQUNOLEVBQUU7SUFDRiwrQkFBK0I7SUFDL0IsNkVBQTZFO0lBQzdFLE1BQU07SUFDTixFQUFFO0lBQ0YsaUJBQWlCO0lBQ2pCLElBQUk7SUFFSkUsVUFBVS9ELElBQUksRUFBRWdFLGNBQWMsRUFBRUMsZUFBZSxFQUFFeEIsWUFBWSxFQUFFO1FBQzdELElBQUl5QixjQUFjO1FBRWxCLE1BQU10RixVQUFVcUYsaUJBQ1ZFLGNBQWMsSUFBSSxFQUNsQkMsZUFBZXBFLE1BQ2ZxRSxvQkFBb0JGLFlBQVl2QixTQUFTLElBQ3pDMEIscUJBQXFCRixhQUFheEIsU0FBUztRQUVqRGhFLFFBQVFpRSxLQUFLLENBQUMsQ0FBQyxjQUFjLEVBQUV5QixtQkFBbUIsaUJBQWlCLEVBQUVELGtCQUFrQixTQUFTLENBQUM7UUFFakcsT0FBT0UsSUFBQUEsNkJBQXNCLEVBQUNKLGFBQWFDLGNBQWNKLGdCQUFnQkMsaUJBQWlCLENBQUNPO1lBQ3pGLElBQUlBLDBCQUEwQjtnQkFDNUJOLGNBQWM7WUFDaEI7WUFFQSxJQUFJQSxhQUFhO2dCQUNmdEYsUUFBUWtFLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFd0IsbUJBQW1CLGlCQUFpQixFQUFFRCxrQkFBa0IsT0FBTyxDQUFDO1lBQ25HO1lBRUEsT0FBTzVCLGFBQWF5QjtRQUN0QjtJQUNGO0lBRUFPLFNBQVM7UUFDUCxNQUFNQyxXQUFXQyxJQUFBQSxvQkFBYyxFQUFDLElBQUksQ0FBQzNGLElBQUksR0FDbkM0RixrQkFBa0JDLElBQUFBLGtDQUE0QixFQUFDLElBQUksQ0FBQzVGLFdBQVcsR0FDL0RKLFNBQVMsSUFBSSxDQUFDK0QsU0FBUztRQUU3QixJQUFJN0Q7UUFFSkEsYUFBYSxJQUFJLENBQUMrRixhQUFhO1FBRS9CLE1BQU1DLGlCQUFpQnhHLDJCQUEyQlE7UUFFbERBLGFBQWFnRyxnQkFBaUIsR0FBRztRQUVqQyxNQUFNL0YsT0FBTzBGLFVBQ1B6RixjQUFjMkYsaUJBQ2RJLE9BQU87WUFDTG5HO1lBQ0FFO1lBQ0FDO1lBQ0FDO1FBQ0Y7UUFFTixPQUFPK0Y7SUFDVDtJQUVBLE9BQU9DLE9BQU8sT0FBTztJQUVyQixPQUFPQyxTQUFTRixJQUFJLEVBQUVwRyxPQUFPLEVBQUU7UUFDN0IsSUFBSW9CO1FBRUptRixJQUFBQSxvQkFBVyxFQUFDLENBQUN2RztZQUNYLE1BQU0sRUFBRUMsTUFBTSxFQUFFLEdBQUdtRyxNQUNieEYsV0FBVzRGLElBQUFBLDRCQUFlLEVBQUN2RyxRQUFRRCxVQUNuQ0UsT0FBT1UsVUFDUFQsYUFBYVQsbUJBQW1CMEcsT0FDaENoRyxPQUFPcUcsSUFBQUEsa0JBQVksRUFBQ0wsTUFBTXBHLFVBQzFCSyxjQUFjcUcsSUFBQUEseUJBQW1CLEVBQUNOLE1BQU1wRztZQUU5Q0EsVUFBVTtZQUVWb0IsT0FBTyxJQUFJdEIsS0FBS0UsU0FBU0MsUUFBUUMsTUFBTUMsWUFBWUMsTUFBTUM7UUFDM0QsR0FBR0w7UUFFSCxPQUFPb0I7SUFDVDtBQUNGIn0=