occam-nominal 1.0.527 → 1.0.528

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.
@@ -199,11 +199,14 @@ const _default = (0, _elements.define)(class Constraint extends _occamlanguages.
199
199
  static name = "Constraint";
200
200
  toJSON() {
201
201
  let json;
202
- const name = this.getName(), string = this.getString();
203
- json = {
204
- name,
205
- string
206
- };
202
+ const context = this.getContext();
203
+ (0, _context.serialise)((context)=>{
204
+ const string = this.getString();
205
+ json = {
206
+ context,
207
+ string
208
+ };
209
+ }, context);
207
210
  return json;
208
211
  }
209
212
  static fromJSON(json, context) {
@@ -240,4 +243,4 @@ function statementFromConstraintNode(constraintNode, context) {
240
243
  return statement;
241
244
  }
242
245
 
243
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbnN0cmFpbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBkZWNsYXJlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgdW5pZnlTdGF0ZW1lbnQgfSBmcm9tIFwiLi4vcHJvY2Vzcy91bmlmeVwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVDb25zdHJhaW50IH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IHN0cmlwQnJhY2tldHNGcm9tU3RhdGVtZW50IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9icmFja2V0c1wiO1xuaW1wb3J0IHsgY29uc3RyYWludEZyb21Db25zdHJhaW50Tm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuaW1wb3J0IHsgcGFyZSwgam9pbiwgYWJsYXRlLCBhdHRlbXB0LCByZWNvbmNpbGUsIHVuc2VyaWFsaXNlLCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgYXNzdW1wdGlvbnNTdHJpbmdGcm9tQXNzdW1wdGlvbnMsIGNvbnN0cmFpbnRTdHJpbmdGcm9tUmVmZXJlbmNlQW5kU3RhdGVtZW50LCBpbXBsaWNpdEFzc3VtcHRpb25zU3RyaW5nRnJvbUltcGxpY2l0QXNzdW1wdGlvbnMgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuXG5jb25zdCB7IHVuYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBjdXQsIGFsbCwgc29tZSwgaXNvbGF0ZSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgQ29uc3RyYWludCBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHJlZmVyZW5jZSwgc3RhdGVtZW50KSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMucmVmZXJlbmNlID0gcmVmZXJlbmNlO1xuICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0UmVmZXJlbmNlKCkge1xuICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZTtcbiAgfVxuXG4gIGdldFN0YXRlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRDb25zdHJhaW50Tm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgY29uc3RyYWludE5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gY29uc3RyYWludE5vZGU7XG4gIH1cblxuICBnZXRNZXRhdmFyaWFibGUoKSB7IHJldHVybiB0aGlzLnJlZmVyZW5jZS5nZXRNZXRhdmFyaWFibGUoKTsgfVxuXG4gIGlzRXF1YWxUbyhjb25zdHJhaW50KSB7XG4gICAgY29uc3QgY29uc3RyYWludE5vZGUgPSBjb25zdHJhaW50LmdldE5vZGUoKSxcbiAgICAgICAgICBjb25zdHJhaW50Tm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoQ29uc3RyYWludE5vZGUoY29uc3RyYWludE5vZGUpLFxuICAgICAgICAgIGVxdWFsVG8gPSBjb25zdHJhaW50Tm9kZU1hdGNoZXM7ICAvLy9cblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgbWF0Y2hDb25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSkge1xuICAgIGNvbnN0IG5vZGUgPSBjb25zdHJhaW50Tm9kZSwgLy8vXG4gICAgICAgICAgbm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoTm9kZShub2RlKSxcbiAgICAgICAgICBjb25zdHJhaW50Tm9kZU1hdGNoZXMgPSBub2RlTWF0Y2hlczsgLy8vXG5cbiAgICByZXR1cm4gY29uc3RyYWludE5vZGVNYXRjaGVzO1xuICB9XG5cbiAgZmluZENvbnN0cmFpbnQoY29udGV4dCkge1xuICAgIGNvbnN0IGNvbnN0cmFpbnROb2RlID0gdGhpcy5nZXRDb25zdHJhaW50Tm9kZSgpLFxuICAgICAgICAgIGNvbnN0cmFpbnQgPSBjb250ZXh0LmZpbmRDb25zdHJhaW50QnlDb25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSk7XG5cbiAgICByZXR1cm4gY29uc3RyYWludDtcbiAgfVxuXG4gIHZlcmlmeSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCBjb25zdHJhaW50U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50Li4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHBhcmUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgcmV0dXJuIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChjb25zdHJhaW50LCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZm9yd2FyZChiYWNrKTtcbiAgICAgICAgICB9LCBiYWNrKTtcbiAgICAgICAgfSk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfSk7XG5cbiAgdmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgY29uc3RyYWludDtcblxuICAgIGNvbnN0IGNvbnN0cmFpbnRTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludC4uLmApO1xuXG4gICAgY29uc3RyYWludCA9IHRoaXMuZmluZENvbnN0cmFpbnQoY29udGV4dCk7XG5cbiAgICBpZiAoY29uc3RyYWludCAhPT0gbnVsbCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50IGlzIGFscmVhZHkgcHJlc2VudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29uc3RyYWludCwgY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzb2xhdGUoKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICBjb25zdHJhaW50ID0gdGhpczsgIC8vL1xuXG4gICAgICBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICAgIHJldHVybiBhdHRlbXB0KChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRlU3RhdGVtZW50ID0gdGhpcy52YWxpZGF0ZVN0YXRlbWVudC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICB2YWxpZGF0ZVJlZmVyZW5jZSA9IHRoaXMudmFsaWRhdGVSZWZlcmVuY2UuYmluZCh0aGlzKTtcblxuICAgICAgICByZXR1cm4gYWxsKFtcbiAgICAgICAgICB2YWxpZGF0ZVN0YXRlbWVudCxcbiAgICAgICAgICB2YWxpZGF0ZVJlZmVyZW5jZVxuICAgICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgdGhpcy5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9LCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmFkZENvbnN0cmFpbnQoY29uc3RyYWludCk7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnN0cmFpbnQsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVSZWZlcmVuY2Uoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb25zdHJhaW50U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQncyByZWZlcmVuY2UuLi5gKTtcblxuICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHJlZmVyZW5jZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy5yZWZlcmVuY2UgPSByZWZlcmVuY2U7XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQncyByZWZlcmVuY2UuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlU3RhdGVtZW50KHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY29uc3RyYWludFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChzdGF0ZW1lbnQsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3Mgc3RhdGVtZW50LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB1bmlmeVJlZmVyZW5jZShyZWZlcmVuY2UsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAgLy8vXG4gICAgICAgICAgcmVmZXJlbmNlU3RyaW5nID0gcmVmZXJlbmNlLmdldFN0cmluZygpLFxuICAgICAgICAgIGNvbnN0cmFpbnRTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyByZWZlcmVuY2Ugd2l0aCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQncyBtZXRhdmFyYWlhYmxlLi4uYCk7XG5cbiAgICBjb25zdCBtZXRhdmFyaWFibGUgPSB0aGlzLmdldE1ldGF2YXJpYWJsZSgpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZS51bmlmeVJlZmVyZW5jZShyZWZlcmVuY2UsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChyZWZlcmVuY2VVbmlmaWVzKSA9PiB7XG4gICAgICBpZiAocmVmZXJlbmNlVW5pZmllcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLnVuaWZpZWQgdGhlICcke3JlZmVyZW5jZVN0cmluZ30nIHdpdGggdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3MgbWV0YXZhcmlhYmxlLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHJlZmVyZW5jZVVuaWZpZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgdW5pZnlMaW5rKGxpbmssIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAgLy8vXG4gICAgICAgICAgbGlua1N0cmluZyA9IGxpbmsuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgY29uc3RyYWludFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2xpbmtTdHJpbmd9JyBsaW5rIHdpdGggdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3MgcmVmZXJlbmNlLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2UudW5pZnlMaW5rKGxpbmssIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtsaW5rU3RyaW5nfScgbGluayB3aXRoIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludCdzIHJlZmVyZW5jZS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB1bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAgLy8vXG4gICAgICAgICAgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICAgIGNvbnN0cmFpbnRTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQncyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIGxldCBzcGVjaWZpY1N0YXRlbWVudDtcblxuICAgIHNwZWNpZmljU3RhdGVtZW50ID0gc3RhdGVtZW50OyAgLy8vXG5cbiAgICBzcGVjaWZpY1N0YXRlbWVudCA9IHN0cmlwQnJhY2tldHNGcm9tU3RhdGVtZW50KHNwZWNpZmljU3RhdGVtZW50LCBjb250ZXh0KTsgIC8vL1xuXG4gICAgY29uc3QgZ2VuZXJhbFN0YXRlbWVudCA9IHRoaXMuc3RhdGVtZW50OyAgLy8vXG5cbiAgICByZXR1cm4gdW5pZnlTdGF0ZW1lbnQoZ2VuZXJhbFN0YXRlbWVudCwgc3BlY2lmaWNTdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQncyBzdGF0ZW1lbnQuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdW5pZnlBc3N1bXB0aW9uKGFzdW1wdGlvbiwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICBhc3VtcHRpb25TdHJpbmcgPSBhc3VtcHRpb24uZ2V0U3RyaW5nKCksICAvLy9cbiAgICAgICAgICBjb25zdHJhaW50U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2FzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24gd2l0aCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQuLi5gKTtcblxuICAgIGNvbnN0IGxpbmsgPSBhc3VtcHRpb24uZ2V0TGluaygpLFxuICAgICAgICAgIHN0YXRlbWVudCA9IGFzdW1wdGlvbi5nZXRTdGF0ZW1lbnQoKTtcblxuICAgIHJldHVybiB0aGlzLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnVuaWZ5TGluayhsaW5rLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHthc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uIHdpdGggdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50Li4uYCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHVuaWZ5SW1wbGljaXRBc3N1bXB0aW9uKGltcGxpY2l0QXNzdW1wdGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnN0cmFpbnRTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAgLy8vXG4gICAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nID0gaW1wbGljaXRBc3N1bXB0aW9uLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7aW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nfScgaW1wbGljaXQgYXNzdW1wdGlvbiB3aXRoIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludC4uLmApO1xuXG4gICAgY29uc3QgY29uc3RyYWludENvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSwgLy8vXG4gICAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9uQ29udGV4dCA9IGltcGxpY2l0QXNzdW1wdGlvbi5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSBjb25zdHJhaW50Q29udGV4dCwgLy8vXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gaW1wbGljaXRBc3N1bXB0aW9uQ29udGV4dDsgIC8vL1xuXG4gICAgcmV0dXJuIGpvaW4oKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgcmV0dXJuIHJlY29uY2lsZSgoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHN0YXRlbWVudCA9IGltcGxpY2l0QXNzdW1wdGlvbi5nZXRTdGF0ZW1lbnQoKTtcblxuICAgICAgICByZXR1cm4gdGhpcy51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0LmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke2ltcGxpY2l0QXNzdW1wdGlvblN0cmluZ30nIGltcGxpY2l0IGFzc3VtcHRpb24gd2l0aCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQuLi5gKTtcblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIHNwZWNpZmljQ29udGV4dCk7XG4gICAgfSwgc3BlY2lmaWNDb250ZXh0LCBjb250ZXh0KTtcbiAgfVxuXG4gIHVuaWZ5SW1wbGljaXRBc3N1bXB0aW9ucyhpbXBsaWNpdEFzc3VtcHRpb25zLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY29uc3RyYWludFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksICAvLy9cbiAgICAgICAgICBpbXBsaWNpdEFzc2VydGlvbnNTdHJpbmcgPSBpbXBsaWNpdEFzc3VtcHRpb25zU3RyaW5nRnJvbUltcGxpY2l0QXNzdW1wdGlvbnMoaW1wbGljaXRBc3N1bXB0aW9ucyk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJHtpbXBsaWNpdEFzc2VydGlvbnNTdHJpbmd9IGltcGxpY2l0IGFzc3VtcHRpb25zIHdpdGggdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50Li4uYCk7XG5cbiAgICByZXR1cm4gc29tZShpbXBsaWNpdEFzc3VtcHRpb25zLCAoaW1wbGljaXRBc3N1bXB0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLnVuaWZ5SW1wbGljaXRBc3N1bXB0aW9uKGltcGxpY2l0QXNzdW1wdGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgfSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICR7aW1wbGljaXRBc3NlcnRpb25zU3RyaW5nfSBpbXBsaWNpdCBhc3N1bXB0aW9ucyB3aXRoIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB1bmlmeVNjaGVtYUFzc2VydGlvbkFzc3VtcHRpb25zKHNjaGVtYUFzc2VydGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnN0cmFpbnRTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAgLy8vXG4gICAgICAgICAgc2NoZW1hQXNzZXJ0aW9uU3RyaW5nID0gc2NoZW1hQXNzZXJ0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3NjaGVtYUFzc2VydGlvblN0cmluZ30nIHNjaGVtYSBhc3NlcnRpb24ncyBhc3N1bXB0aW9ucyB3aXRoIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludC4uLmApO1xuXG4gICAgY29uc3QgY29uc3RyYWludENvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSwgLy8vXG4gICAgICAgICAgc2NoZW1hQXNzZXJ0aW9uQ29udGV4dCA9IHNjaGVtYUFzc2VydGlvbi5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSBjb25zdHJhaW50Q29udGV4dCwgIC8vL1xuICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IHNjaGVtYUFzc2VydGlvbkNvbnRleHQ7IC8vL1xuXG4gICAgcmV0dXJuIGpvaW4oKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgcmV0dXJuIHJlY29uY2lsZSgoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IGFzc3VtcHRpb25zID0gc2NoZW1hQXNzZXJ0aW9uLmdldEFzc3VtcHRpb25zKCk7XG5cbiAgICAgICAgcmV0dXJuIHNvbWUoYXNzdW1wdGlvbnMsIChhc3N1bXB0aW9uLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMudW5pZnlBc3N1bXB0aW9uKGFzc3VtcHRpb24sIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgICAgICB9LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIHNwZWNpZmljQ29udGV4dC5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzY2hlbWFBc3NlcnRpb25TdHJpbmd9JyBzY2hlbWEgYXNzZXJ0aW9uJ3MgYXNzdW1wdGlvbnMgd2l0aCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQuYCk7XG5cbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG5cbiAgICAgIH0sIHNwZWNpZmljQ29udGV4dCk7XG4gICAgfSwgc3BlY2lmaWNDb250ZXh0LCBjb250ZXh0KTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJDb25zdHJhaW50XCI7XG5cbiAgdG9KU09OKCkge1xuICAgIGxldCBqc29uO1xuXG4gICAgY29uc3QgbmFtZSA9IHRoaXMuZ2V0TmFtZSgpLFxuICAgICAgICAgIHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBqc29uID0ge1xuICAgICAgbmFtZSxcbiAgICAgIHN0cmluZ1xuICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IGNvbnN0cmFpbnQ7XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgdW5zZXJpYWxpc2UoKGpzb24sIGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIGNvbnN0cmFpbnROb2RlID0gaW5zdGFudGlhdGVDb25zdHJhaW50KHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBjb25zdHJhaW50Tm9kZSwgIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgICAgICAgcmVmZXJlbmNlID0gcmVmZXJlbmNlRnJvbUNvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbUNvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlLCBjb250ZXh0KTtcblxuICAgICAgICBjb25zdHJhaW50ID0gbmV3IENvbnN0cmFpbnQoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCByZWZlcmVuY2UsIHN0YXRlbWVudCk7XG4gICAgICB9LCBqc29uLCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb25zdHJhaW50O1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGVwKHN0ZXAsIGNvbnRleHQpIHtcbiAgICBsZXQgY29uc3RyYWludDtcblxuICAgIGxldCBzdGF0ZW1lbnQ7XG5cbiAgICBzdGF0ZW1lbnQgPSBzdGVwLmdldFN0YXRlbWVudCgpO1xuXG4gICAgc3RhdGVtZW50ID0gc3RyaXBCcmFja2V0c0Zyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTsgLy8vXG5cbiAgICBjb25zdCByZWZlcmVuY2UgPSBzdGVwLmdldFJlZmVyZW5jZSgpO1xuXG4gICAgYWJsYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBjb25zdHJhaW50U3RyaW5nID0gY29uc3RyYWludFN0cmluZ0Zyb21SZWZlcmVuY2VBbmRTdGF0ZW1lbnQocmVmZXJlbmNlLCBzdGF0ZW1lbnQpLFxuICAgICAgICAgICAgICBzdHJpbmcgPSBjb25zdHJhaW50U3RyaW5nLCAgLy8vXG4gICAgICAgICAgICAgIGNvbnN0cmFpbnROb2RlID0gaW5zdGFudGlhdGVDb25zdHJhaW50KHN0cmluZywgY29udGV4dCk7XG5cbiAgICAgICAgY29uc3RyYWludCA9IGNvbnN0cmFpbnRGcm9tQ29uc3RyYWludE5vZGUoY29uc3RyYWludE5vZGUsIGNvbnRleHQpO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29uc3RyYWludDtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIHJlZmVyZW5jZUZyb21Db25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCByZWZlcmVuY2VOb2RlID0gY29uc3RyYWludE5vZGUuZ2V0UmVmZXJlbmNlTm9kZSgpLFxuICAgICAgICByZWZlcm5lY2UgPSBjb250ZXh0LmZpbmRSZWZlcmVuY2VCeVJlZmVyZW5jZU5vZGUocmVmZXJlbmNlTm9kZSk7XG5cbiAgcmV0dXJuIHJlZmVybmVjZTtcbn1cblxuZnVuY3Rpb24gc3RhdGVtZW50RnJvbUNvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBjb25zdHJhaW50Tm9kZS5nZXRTdGF0ZW1lbnROb2RlKCksXG4gICAgICAgIHN0YXRlbWVudCA9IGNvbnRleHQuZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKTtcblxuICByZXR1cm4gc3RhdGVtZW50O1xufVxuIl0sIm5hbWVzIjpbInVuYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImN1dCIsImFsbCIsInNvbWUiLCJpc29sYXRlIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiQ29uc3RyYWludCIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJyZWZlcmVuY2UiLCJzdGF0ZW1lbnQiLCJnZXRSZWZlcmVuY2UiLCJnZXRTdGF0ZW1lbnQiLCJnZXRDb25zdHJhaW50Tm9kZSIsImdldE5vZGUiLCJjb25zdHJhaW50Tm9kZSIsImdldE1ldGF2YXJpYWJsZSIsImlzRXF1YWxUbyIsImNvbnN0cmFpbnQiLCJjb25zdHJhaW50Tm9kZU1hdGNoZXMiLCJtYXRjaENvbnN0cmFpbnROb2RlIiwiZXF1YWxUbyIsIm5vZGVNYXRjaGVzIiwibWF0Y2hOb2RlIiwiZmluZENvbnN0cmFpbnQiLCJmaW5kQ29uc3RyYWludEJ5Q29uc3RyYWludE5vZGUiLCJ2ZXJpZnkiLCJmb3J3YXJkIiwiYmFjayIsImNvbnN0cmFpbnRTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInBhcmUiLCJkZWNsYXJlIiwic3RhdGUiLCJ2YWxpZGF0ZSIsImRlYnVnIiwiZ2V0Q29udGV4dCIsImF0dGVtcHQiLCJ2YWxpZGF0ZVN0YXRlbWVudCIsImJpbmQiLCJ2YWxpZGF0ZVJlZmVyZW5jZSIsImNvbW1pdCIsImFkZENvbnN0cmFpbnQiLCJ1bmlmeVJlZmVyZW5jZSIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0IiwicmVmZXJlbmNlU3RyaW5nIiwibWV0YXZhcmlhYmxlIiwicmVmZXJlbmNlVW5pZmllcyIsImNvbnRpbnVhdGlvbiIsInVuaWZ5TGluayIsImxpbmsiLCJsaW5rU3RyaW5nIiwidW5pZnlTdGF0ZW1lbnQiLCJzdGF0ZW1lbnRTdHJpbmciLCJzcGVjaWZpY1N0YXRlbWVudCIsInN0cmlwQnJhY2tldHNGcm9tU3RhdGVtZW50IiwiZ2VuZXJhbFN0YXRlbWVudCIsInVuaWZ5QXNzdW1wdGlvbiIsImFzdW1wdGlvbiIsImFzdW1wdGlvblN0cmluZyIsImdldExpbmsiLCJ1bmlmeUltcGxpY2l0QXNzdW1wdGlvbiIsImltcGxpY2l0QXNzdW1wdGlvbiIsImltcGxpY2l0QXNzdW1wdGlvblN0cmluZyIsImNvbnN0cmFpbnRDb250ZXh0IiwiaW1wbGljaXRBc3N1bXB0aW9uQ29udGV4dCIsImpvaW4iLCJyZWNvbmNpbGUiLCJ1bmlmeUltcGxpY2l0QXNzdW1wdGlvbnMiLCJpbXBsaWNpdEFzc3VtcHRpb25zIiwiaW1wbGljaXRBc3NlcnRpb25zU3RyaW5nIiwiaW1wbGljaXRBc3N1bXB0aW9uc1N0cmluZ0Zyb21JbXBsaWNpdEFzc3VtcHRpb25zIiwidW5pZnlTY2hlbWFBc3NlcnRpb25Bc3N1bXB0aW9ucyIsInNjaGVtYUFzc2VydGlvbiIsInNjaGVtYUFzc2VydGlvblN0cmluZyIsInNjaGVtYUFzc2VydGlvbkNvbnRleHQiLCJhc3N1bXB0aW9ucyIsImdldEFzc3VtcHRpb25zIiwiYXNzdW1wdGlvbiIsIm5hbWUiLCJ0b0pTT04iLCJqc29uIiwiZ2V0TmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJ1bnNlcmlhbGlzZSIsImluc3RhbnRpYXRlQ29uc3RyYWludCIsInJlZmVyZW5jZUZyb21Db25zdHJhaW50Tm9kZSIsInN0YXRlbWVudEZyb21Db25zdHJhaW50Tm9kZSIsImZyb21TdGVwIiwic3RlcCIsImFibGF0ZSIsImNvbnN0cmFpbnRTdHJpbmdGcm9tUmVmZXJlbmNlQW5kU3RhdGVtZW50IiwiY29uc3RyYWludEZyb21Db25zdHJhaW50Tm9kZSIsInJlZmVyZW5jZU5vZGUiLCJnZXRSZWZlcmVuY2VOb2RlIiwicmVmZXJuZWNlIiwiZmluZFJlZmVyZW5jZUJ5UmVmZXJlbmNlTm9kZSIsInN0YXRlbWVudE5vZGUiLCJnZXRTdGF0ZW1lbnROb2RlIiwiZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBZ0JBOzs7ZUFBQTs7O2dDQWRvRTswQkFFN0M7dUJBQ0M7dUJBQ087NkJBQ087MEJBQ0s7eUJBQ0U7eUJBQ29DO3dCQUM2RDtBQUU5SSxNQUFNLEVBQUVBLFdBQVcsRUFBRSxHQUFHQyxtQ0FBbUIsRUFDckMsRUFBRUMsR0FBRyxFQUFFQyxHQUFHLEVBQUVDLElBQUksRUFBRUMsT0FBTyxFQUFFLEdBQUdDLHFDQUFxQjtNQUV6RCxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLG1CQUFtQkMsdUJBQU87SUFDcEQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxTQUFTLEVBQUVDLFNBQVMsQ0FBRTtRQUNuRSxLQUFLLENBQUNMLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsU0FBUyxHQUFHQTtRQUNqQixJQUFJLENBQUNDLFNBQVMsR0FBR0E7SUFDbkI7SUFFQUMsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDRixTQUFTO0lBQ3ZCO0lBRUFHLGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQ0YsU0FBUztJQUN2QjtJQUVBRyxvQkFBb0I7UUFDbEIsTUFBTU4sT0FBTyxJQUFJLENBQUNPLE9BQU8sSUFDbkJDLGlCQUFpQlIsTUFBTyxHQUFHO1FBRWpDLE9BQU9RO0lBQ1Q7SUFFQUMsa0JBQWtCO1FBQUUsT0FBTyxJQUFJLENBQUNQLFNBQVMsQ0FBQ08sZUFBZTtJQUFJO0lBRTdEQyxVQUFVQyxVQUFVLEVBQUU7UUFDcEIsTUFBTUgsaUJBQWlCRyxXQUFXSixPQUFPLElBQ25DSyx3QkFBd0IsSUFBSSxDQUFDQyxtQkFBbUIsQ0FBQ0wsaUJBQ2pETSxVQUFVRix1QkFBd0IsR0FBRztRQUUzQyxPQUFPRTtJQUNUO0lBRUFELG9CQUFvQkwsY0FBYyxFQUFFO1FBQ2xDLE1BQU1SLE9BQU9RLGdCQUNQTyxjQUFjLElBQUksQ0FBQ0MsU0FBUyxDQUFDaEIsT0FDN0JZLHdCQUF3QkcsYUFBYSxHQUFHO1FBRTlDLE9BQU9IO0lBQ1Q7SUFFQUssZUFBZW5CLE9BQU8sRUFBRTtRQUN0QixNQUFNVSxpQkFBaUIsSUFBSSxDQUFDRixpQkFBaUIsSUFDdkNLLGFBQWFiLFFBQVFvQiw4QkFBOEIsQ0FBQ1Y7UUFFMUQsT0FBT0c7SUFDVDtJQUVBUSxTQUFTL0IsWUFBWSxTQUFVVSxPQUFPLEVBQUVzQixPQUFPLEVBQUVDLElBQUk7UUFDbkRELFVBQVU5QixJQUFJOEIsU0FBU0MsT0FBTyxHQUFHO1FBRWpDLE1BQU1DLG1CQUFtQixJQUFJLENBQUNDLFNBQVMsSUFBSSxHQUFHO1FBRTlDekIsUUFBUTBCLEtBQUssQ0FBQyxDQUFDLGVBQWUsRUFBRUYsaUJBQWlCLGVBQWUsQ0FBQztRQUVqRSxPQUFPN0IsUUFBUSxDQUFDSyxTQUFTc0IsU0FBU0M7WUFDaEMsT0FBT0ksSUFBQUEsYUFBSSxFQUFDLENBQUMzQjtnQkFDWCxPQUFPNEIsSUFBQUEsY0FBTyxFQUFDLENBQUNDO29CQUNkLE9BQU8sSUFBSSxDQUFDQyxRQUFRLENBQUNELE9BQU83QixTQUFTLENBQUNhLFlBQVliLFNBQVN1Qjt3QkFDekQsT0FBT0QsUUFBUUM7b0JBQ2pCLEdBQUdBO2dCQUNMO1lBQ0YsR0FBR3ZCO1FBQ0wsR0FBR0EsU0FBUyxDQUFDQSxTQUFTdUI7WUFDcEJ2QixRQUFRK0IsS0FBSyxDQUFDLENBQUMsaUJBQWlCLEVBQUVQLGlCQUFpQixhQUFhLENBQUM7WUFFakUsT0FBT0YsUUFBUXRCLFNBQVN1QjtRQUMxQixHQUFHQTtJQUNMLEdBQUc7SUFFSE8sU0FBU0QsS0FBSyxFQUFFN0IsT0FBTyxFQUFFc0IsT0FBTyxFQUFFQyxJQUFJLEVBQUU7UUFDdEMsSUFBSVY7UUFFSixNQUFNVyxtQkFBbUIsSUFBSSxDQUFDQyxTQUFTLElBQUssR0FBRztRQUUvQ3pCLFFBQVEwQixLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRUYsaUJBQWlCLGVBQWUsQ0FBQztRQUVsRVgsYUFBYSxJQUFJLENBQUNNLGNBQWMsQ0FBQ25CO1FBRWpDLElBQUlhLGVBQWUsTUFBTTtZQUN2QmIsUUFBUStCLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRVAsaUJBQWlCLGdDQUFnQyxDQUFDO1lBRXhFLE9BQU9GLFFBQVFULFlBQVliLFNBQVN1QjtRQUN0QztRQUVBLE9BQU81QixRQUFRLENBQUNrQyxPQUFPN0IsU0FBU3NCLFNBQVNDO1lBQ3ZDVixhQUFhLElBQUksRUFBRyxHQUFHO1lBRXZCYixVQUFVLElBQUksQ0FBQ2dDLFVBQVU7WUFFekIsT0FBT0MsSUFBQUEsZ0JBQU8sRUFBQyxDQUFDakM7Z0JBQ2QsTUFBTWtDLG9CQUFvQixJQUFJLENBQUNBLGlCQUFpQixDQUFDQyxJQUFJLENBQUMsSUFBSSxHQUNwREMsb0JBQW9CLElBQUksQ0FBQ0EsaUJBQWlCLENBQUNELElBQUksQ0FBQyxJQUFJO2dCQUUxRCxPQUFPMUMsSUFBSTtvQkFDVHlDO29CQUNBRTtpQkFDRCxFQUFFUCxPQUFPN0IsU0FBUyxDQUFDNkIsT0FBTzdCLFNBQVN1QjtvQkFDbEMsSUFBSSxDQUFDYyxNQUFNLENBQUNyQztvQkFFWixPQUFPc0IsUUFBUUM7Z0JBQ2pCLEdBQUdBO1lBQ0wsR0FBR3ZCO1FBQ0wsR0FBRzZCLE9BQU83QixTQUFTLENBQUM2QixPQUFPN0IsU0FBU3VCO1lBQ2xDdkIsUUFBUXNDLGFBQWEsQ0FBQ3pCO1lBRXRCYixRQUFRK0IsS0FBSyxDQUFDLENBQUMsa0JBQWtCLEVBQUVQLGlCQUFpQixhQUFhLENBQUM7WUFFbEUsT0FBT0YsUUFBUVQsWUFBWWIsU0FBU3VCO1FBQ3RDLEdBQUdBO0lBQ0w7SUFFQWEsa0JBQWtCUCxLQUFLLEVBQUU3QixPQUFPLEVBQUVzQixPQUFPLEVBQUVDLElBQUksRUFBRTtRQUMvQyxNQUFNQyxtQkFBbUIsSUFBSSxDQUFDQyxTQUFTLElBQUssR0FBRztRQUUvQ3pCLFFBQVEwQixLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRUYsaUJBQWlCLDJCQUEyQixDQUFDO1FBRTlFLE9BQU8sSUFBSSxDQUFDcEIsU0FBUyxDQUFDMEIsUUFBUSxDQUFDRCxPQUFPN0IsU0FBUyxDQUFDSSxXQUFXSixTQUFTdUI7WUFDbEUsSUFBSSxDQUFDbkIsU0FBUyxHQUFHQTtZQUVqQkosUUFBUTBCLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixFQUFFRixpQkFBaUIseUJBQXlCLENBQUM7WUFFOUUsT0FBT0YsUUFBUU8sT0FBTzdCLFNBQVN1QjtRQUNqQyxHQUFHQTtJQUNMO0lBRUFXLGtCQUFrQkwsS0FBSyxFQUFFN0IsT0FBTyxFQUFFc0IsT0FBTyxFQUFFQyxJQUFJLEVBQUU7UUFDL0MsTUFBTUMsbUJBQW1CLElBQUksQ0FBQ0MsU0FBUyxJQUFLLEdBQUc7UUFFL0N6QixRQUFRMEIsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLEVBQUVGLGlCQUFpQiwyQkFBMkIsQ0FBQztRQUU5RSxPQUFPLElBQUksQ0FBQ25CLFNBQVMsQ0FBQ3lCLFFBQVEsQ0FBQ0QsT0FBTzdCLFNBQVMsQ0FBQ0ssV0FBV0wsU0FBU3VCO1lBQ2xFLElBQUksQ0FBQ2xCLFNBQVMsR0FBR0E7WUFFakJMLFFBQVEwQixLQUFLLENBQUMsQ0FBQyxrQkFBa0IsRUFBRUYsaUJBQWlCLHlCQUF5QixDQUFDO1lBRTlFLE9BQU9GLFFBQVFPLE9BQU83QixTQUFTdUI7UUFDakMsR0FBR0E7SUFDTDtJQUVBZ0IsZUFBZW5DLFNBQVMsRUFBRW9DLGNBQWMsRUFBRUMsZUFBZSxFQUFFbkIsT0FBTyxFQUFFQyxJQUFJLEVBQUU7UUFDeEUsTUFBTXZCLFVBQVV5QyxpQkFDVkMsa0JBQWtCdEMsVUFBVXFCLFNBQVMsSUFDckNELG1CQUFtQixJQUFJLENBQUNDLFNBQVMsSUFBSSxHQUFHO1FBRTlDekIsUUFBUTBCLEtBQUssQ0FBQyxDQUFDLGNBQWMsRUFBRWdCLGdCQUFnQixzQkFBc0IsRUFBRWxCLGlCQUFpQiwrQkFBK0IsQ0FBQztRQUV4SCxNQUFNbUIsZUFBZSxJQUFJLENBQUNoQyxlQUFlO1FBRXpDLE9BQU9nQyxhQUFhSixjQUFjLENBQUNuQyxXQUFXb0MsZ0JBQWdCQyxpQkFBaUIsQ0FBQ0c7WUFDOUUsSUFBSUEsa0JBQWtCO2dCQUNwQjVDLFFBQVErQixLQUFLLENBQUMsQ0FBQyxlQUFlLEVBQUVXLGdCQUFnQixZQUFZLEVBQUVsQixpQkFBaUIsNEJBQTRCLENBQUM7WUFDOUc7WUFFQSxPQUFPcUIsYUFBYUQ7UUFDdEI7SUFDRjtJQUVBRSxVQUFVQyxJQUFJLEVBQUVQLGNBQWMsRUFBRUMsZUFBZSxFQUFFbkIsT0FBTyxFQUFFQyxJQUFJLEVBQUU7UUFDOUQsTUFBTXZCLFVBQVV5QyxpQkFDVk8sYUFBYUQsS0FBS3RCLFNBQVMsSUFDM0JELG1CQUFtQixJQUFJLENBQUNDLFNBQVMsSUFBSSxHQUFHO1FBRTlDekIsUUFBUTBCLEtBQUssQ0FBQyxDQUFDLGNBQWMsRUFBRXNCLFdBQVcsaUJBQWlCLEVBQUV4QixpQkFBaUIsMkJBQTJCLENBQUM7UUFFMUcsT0FBTyxJQUFJLENBQUNwQixTQUFTLENBQUMwQyxTQUFTLENBQUNDLE1BQU1QLGdCQUFnQkMsaUJBQWlCLENBQUNELGdCQUFnQkMsaUJBQWlCbEI7WUFDdkd2QixRQUFRK0IsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLEVBQUVpQixXQUFXLGlCQUFpQixFQUFFeEIsaUJBQWlCLHlCQUF5QixDQUFDO1lBRTFHLE9BQU9GLFFBQVFrQixnQkFBZ0JDLGlCQUFpQmxCO1FBQ2xELEdBQUdBO0lBQ0w7SUFFQTBCLGVBQWU1QyxTQUFTLEVBQUVtQyxjQUFjLEVBQUVDLGVBQWUsRUFBRW5CLE9BQU8sRUFBRUMsSUFBSSxFQUFFO1FBQ3hFLE1BQU12QixVQUFVeUMsaUJBQ1ZTLGtCQUFrQjdDLFVBQVVvQixTQUFTLElBQ3JDRCxtQkFBbUIsSUFBSSxDQUFDQyxTQUFTLElBQUksR0FBRztRQUU5Q3pCLFFBQVEwQixLQUFLLENBQUMsQ0FBQyxjQUFjLEVBQUV3QixnQkFBZ0Isc0JBQXNCLEVBQUUxQixpQkFBaUIsMkJBQTJCLENBQUM7UUFFcEgsSUFBSTJCO1FBRUpBLG9CQUFvQjlDLFdBQVksR0FBRztRQUVuQzhDLG9CQUFvQkMsSUFBQUEsb0NBQTBCLEVBQUNELG1CQUFtQm5ELFVBQVcsR0FBRztRQUVoRixNQUFNcUQsbUJBQW1CLElBQUksQ0FBQ2hELFNBQVMsRUFBRyxHQUFHO1FBRTdDLE9BQU80QyxJQUFBQSxxQkFBYyxFQUFDSSxrQkFBa0JGLG1CQUFtQlgsZ0JBQWdCQyxpQkFBaUIsQ0FBQ0QsZ0JBQWdCQyxpQkFBaUJsQjtZQUM1SHZCLFFBQVErQixLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRW1CLGdCQUFnQixzQkFBc0IsRUFBRTFCLGlCQUFpQix5QkFBeUIsQ0FBQztZQUVwSCxPQUFPRixRQUFRa0IsZ0JBQWdCQyxpQkFBaUJsQjtRQUNsRCxHQUFHQTtJQUNMO0lBRUErQixnQkFBZ0JDLFNBQVMsRUFBRWYsY0FBYyxFQUFFQyxlQUFlLEVBQUVuQixPQUFPLEVBQUVDLElBQUksRUFBRTtRQUN6RSxNQUFNdkIsVUFBVXlDLGlCQUNWZSxrQkFBa0JELFVBQVU5QixTQUFTLElBQ3JDRCxtQkFBbUIsSUFBSSxDQUFDQyxTQUFTLElBQUssR0FBRztRQUUvQ3pCLFFBQVEwQixLQUFLLENBQUMsQ0FBQyxjQUFjLEVBQUU4QixnQkFBZ0IsdUJBQXVCLEVBQUVoQyxpQkFBaUIsZUFBZSxDQUFDO1FBRXpHLE1BQU11QixPQUFPUSxVQUFVRSxPQUFPLElBQ3hCcEQsWUFBWWtELFVBQVVoRCxZQUFZO1FBRXhDLE9BQU8sSUFBSSxDQUFDMEMsY0FBYyxDQUFDNUMsV0FBV21DLGdCQUFnQkMsaUJBQWlCLENBQUNELGdCQUFnQkMsaUJBQWlCbEI7WUFDdkcsT0FBTyxJQUFJLENBQUN1QixTQUFTLENBQUNDLE1BQU1QLGdCQUFnQkMsaUJBQWlCLENBQUNELGdCQUFnQkMsaUJBQWlCbEI7Z0JBQzdGdkIsUUFBUStCLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFeUIsZ0JBQWdCLHVCQUF1QixFQUFFaEMsaUJBQWlCLGVBQWUsQ0FBQztnQkFFM0csT0FBT0YsUUFBUWtCLGdCQUFnQkMsaUJBQWlCbEI7WUFDbEQsR0FBR0E7UUFDTCxHQUFHQTtJQUNMO0lBRUFtQyx3QkFBd0JDLGtCQUFrQixFQUFFM0QsT0FBTyxFQUFFc0IsT0FBTyxFQUFFQyxJQUFJLEVBQUU7UUFDbEUsTUFBTUMsbUJBQW1CLElBQUksQ0FBQ0MsU0FBUyxJQUNqQ21DLDJCQUEyQkQsbUJBQW1CbEMsU0FBUyxJQUFLLEdBQUc7UUFFckV6QixRQUFRMEIsS0FBSyxDQUFDLENBQUMsY0FBYyxFQUFFa0MseUJBQXlCLGdDQUFnQyxFQUFFcEMsaUJBQWlCLGVBQWUsQ0FBQztRQUUzSCxNQUFNcUMsb0JBQW9CLElBQUksQ0FBQzdCLFVBQVUsSUFDbkM4Qiw0QkFBNEJILG1CQUFtQjNCLFVBQVUsSUFDekRRLGlCQUFpQnFCLG1CQUNqQnBCLGtCQUFrQnFCLDJCQUE0QixHQUFHO1FBRXZELE9BQU9DLElBQUFBLGFBQUksRUFBQyxDQUFDdEI7WUFDWCxPQUFPdUIsSUFBQUEsa0JBQVMsRUFBQyxDQUFDdkI7Z0JBQ2hCLE1BQU1wQyxZQUFZc0QsbUJBQW1CcEQsWUFBWTtnQkFFakQsT0FBTyxJQUFJLENBQUMwQyxjQUFjLENBQUM1QyxXQUFXbUMsZ0JBQWdCQyxpQkFBaUIsQ0FBQ0QsZ0JBQWdCQyxpQkFBaUJsQjtvQkFDdkdrQixnQkFBZ0JKLE1BQU0sQ0FBQ3JDO29CQUV2QkEsUUFBUStCLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFNkIseUJBQXlCLGdDQUFnQyxFQUFFcEMsaUJBQWlCLGVBQWUsQ0FBQztvQkFFN0gsT0FBT0YsUUFBUXRCLFNBQVN1QjtnQkFDMUIsR0FBR0E7WUFDTCxHQUFHa0I7UUFDTCxHQUFHQSxpQkFBaUJ6QztJQUN0QjtJQUVBaUUseUJBQXlCQyxtQkFBbUIsRUFBRWxFLE9BQU8sRUFBRXNCLE9BQU8sRUFBRUMsSUFBSSxFQUFFO1FBQ3BFLE1BQU1DLG1CQUFtQixJQUFJLENBQUNDLFNBQVMsSUFDakMwQywyQkFBMkJDLElBQUFBLHdEQUFnRCxFQUFDRjtRQUVsRmxFLFFBQVEwQixLQUFLLENBQUMsQ0FBQyxhQUFhLEVBQUV5Qyx5QkFBeUIsZ0NBQWdDLEVBQUUzQyxpQkFBaUIsZUFBZSxDQUFDO1FBRTFILE9BQU85QixLQUFLd0UscUJBQXFCLENBQUNQLG9CQUFvQjNELFNBQVNzQixTQUFTQztZQUN0RSxJQUFJLENBQUNtQyx1QkFBdUIsQ0FBQ0Msb0JBQW9CM0QsU0FBU3NCLFNBQVNDO1FBQ3JFLEdBQUd2QixTQUFTLENBQUNBLFNBQVN1QjtZQUNwQnZCLFFBQVErQixLQUFLLENBQUMsQ0FBQyxlQUFlLEVBQUVvQyx5QkFBeUIsZ0NBQWdDLEVBQUUzQyxpQkFBaUIsYUFBYSxDQUFDO1lBRTFILE9BQU9GLFFBQVF0QixTQUFTdUI7UUFDMUIsR0FBR0E7SUFDTDtJQUVBOEMsZ0NBQWdDQyxlQUFlLEVBQUV0RSxPQUFPLEVBQUVzQixPQUFPLEVBQUVDLElBQUksRUFBRTtRQUN2RSxNQUFNQyxtQkFBbUIsSUFBSSxDQUFDQyxTQUFTLElBQ2pDOEMsd0JBQXdCRCxnQkFBZ0I3QyxTQUFTO1FBRXZEekIsUUFBUTBCLEtBQUssQ0FBQyxDQUFDLGNBQWMsRUFBRTZDLHNCQUFzQiwyQ0FBMkMsRUFBRS9DLGlCQUFpQixlQUFlLENBQUM7UUFFbkksTUFBTXFDLG9CQUFvQixJQUFJLENBQUM3QixVQUFVLElBQ25Dd0MseUJBQXlCRixnQkFBZ0J0QyxVQUFVLElBQ25EUSxpQkFBaUJxQixtQkFDakJwQixrQkFBa0IrQix3QkFBd0IsR0FBRztRQUVuRCxPQUFPVCxJQUFBQSxhQUFJLEVBQUMsQ0FBQ3RCO1lBQ1gsT0FBT3VCLElBQUFBLGtCQUFTLEVBQUMsQ0FBQ3ZCO2dCQUNoQixNQUFNZ0MsY0FBY0gsZ0JBQWdCSSxjQUFjO2dCQUVsRCxPQUFPaEYsS0FBSytFLGFBQWEsQ0FBQ0UsWUFBWW5DLGdCQUFnQkMsaUJBQWlCbkIsU0FBU0M7b0JBQzlFLE9BQU8sSUFBSSxDQUFDK0IsZUFBZSxDQUFDcUIsWUFBWW5DLGdCQUFnQkMsaUJBQWlCbkIsU0FBU0M7Z0JBQ3BGLEdBQUdpQixnQkFBZ0JDLGlCQUFpQixDQUFDRCxnQkFBZ0JDLGlCQUFpQmxCO29CQUNwRWtCLGdCQUFnQkosTUFBTSxDQUFDckM7b0JBRXZCQSxRQUFRK0IsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLEVBQUV3QyxzQkFBc0IsMkNBQTJDLEVBQUUvQyxpQkFBaUIsYUFBYSxDQUFDO29CQUVuSSxPQUFPRixRQUFRdEIsU0FBU3VCO2dCQUMxQixHQUFHQTtZQUVMLEdBQUdrQjtRQUNMLEdBQUdBLGlCQUFpQnpDO0lBQ3RCO0lBRUEsT0FBTzRFLE9BQU8sYUFBYTtJQUUzQkMsU0FBUztRQUNQLElBQUlDO1FBRUosTUFBTUYsT0FBTyxJQUFJLENBQUNHLE9BQU8sSUFDbkI5RSxTQUFTLElBQUksQ0FBQ3dCLFNBQVM7UUFFN0JxRCxPQUFPO1lBQ0xGO1lBQ0EzRTtRQUNGO1FBRUEsT0FBTzZFO0lBQ1Q7SUFFQSxPQUFPRSxTQUFTRixJQUFJLEVBQUU5RSxPQUFPLEVBQUU7UUFDN0IsSUFBSWE7UUFFSm9FLElBQUFBLG9CQUFXLEVBQUMsQ0FBQ2pGO1lBQ1hrRixJQUFBQSxvQkFBVyxFQUFDLENBQUNKLE1BQU05RTtnQkFDakIsTUFBTSxFQUFFQyxNQUFNLEVBQUUsR0FBRzZFLE1BQ2JwRSxpQkFBaUJ5RSxJQUFBQSxrQ0FBcUIsRUFBQ2xGLFFBQVFELFVBQy9DRSxPQUFPUSxnQkFDUFAsYUFBYSxNQUNiQyxZQUFZZ0YsNEJBQTRCMUUsZ0JBQWdCVixVQUN4REssWUFBWWdGLDRCQUE0QjNFLGdCQUFnQlY7Z0JBRTlEYSxhQUFhLElBQUlmLFdBQVdFLFNBQVNDLFFBQVFDLE1BQU1DLFlBQVlDLFdBQVdDO1lBQzVFLEdBQUd5RSxNQUFNOUU7UUFDWCxHQUFHQTtRQUVILE9BQU9hO0lBQ1Q7SUFFQSxPQUFPeUUsU0FBU0MsSUFBSSxFQUFFdkYsT0FBTyxFQUFFO1FBQzdCLElBQUlhO1FBRUosSUFBSVI7UUFFSkEsWUFBWWtGLEtBQUtoRixZQUFZO1FBRTdCRixZQUFZK0MsSUFBQUEsb0NBQTBCLEVBQUMvQyxXQUFXTCxVQUFVLEdBQUc7UUFFL0QsTUFBTUksWUFBWW1GLEtBQUtqRixZQUFZO1FBRW5Da0YsSUFBQUEsZUFBTSxFQUFDLENBQUN4RjtZQUNOaUYsSUFBQUEsb0JBQVcsRUFBQyxDQUFDakY7Z0JBQ1gsTUFBTXdCLG1CQUFtQmlFLElBQUFBLGlEQUF5QyxFQUFDckYsV0FBV0MsWUFDeEVKLFNBQVN1QixrQkFDVGQsaUJBQWlCeUUsSUFBQUEsa0NBQXFCLEVBQUNsRixRQUFRRDtnQkFFckRhLGFBQWE2RSxJQUFBQSxxQ0FBNEIsRUFBQ2hGLGdCQUFnQlY7WUFDNUQsR0FBR0E7UUFDTCxHQUFHQTtRQUVILE9BQU9hO0lBQ1Q7QUFDRjtBQUVBLFNBQVN1RSw0QkFBNEIxRSxjQUFjLEVBQUVWLE9BQU87SUFDMUQsTUFBTTJGLGdCQUFnQmpGLGVBQWVrRixnQkFBZ0IsSUFDL0NDLFlBQVk3RixRQUFROEYsNEJBQTRCLENBQUNIO0lBRXZELE9BQU9FO0FBQ1Q7QUFFQSxTQUFTUiw0QkFBNEIzRSxjQUFjLEVBQUVWLE9BQU87SUFDMUQsTUFBTStGLGdCQUFnQnJGLGVBQWVzRixnQkFBZ0IsSUFDL0MzRixZQUFZTCxRQUFRaUcsNEJBQTRCLENBQUNGO0lBRXZELE9BQU8xRjtBQUNUIn0=
246
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbnN0cmFpbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBkZWNsYXJlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgdW5pZnlTdGF0ZW1lbnQgfSBmcm9tIFwiLi4vcHJvY2Vzcy91bmlmeVwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVDb25zdHJhaW50IH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IHN0cmlwQnJhY2tldHNGcm9tU3RhdGVtZW50IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9icmFja2V0c1wiO1xuaW1wb3J0IHsgY29uc3RyYWludEZyb21Db25zdHJhaW50Tm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuaW1wb3J0IHsgcGFyZSwgam9pbiwgYWJsYXRlLCBhdHRlbXB0LCByZWNvbmNpbGUsIHNlcmlhbGlzZSwgdW5zZXJpYWxpc2UsIGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBjb25zdHJhaW50U3RyaW5nRnJvbVJlZmVyZW5jZUFuZFN0YXRlbWVudCwgaW1wbGljaXRBc3N1bXB0aW9uc1N0cmluZ0Zyb21JbXBsaWNpdEFzc3VtcHRpb25zIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdHJpbmdcIjtcblxuY29uc3QgeyB1bmJyZWFrYWJsZSB9ID0gYnJlYWtQb2ludFV0aWxpdGllcyxcbiAgICAgIHsgY3V0LCBhbGwsIHNvbWUsIGlzb2xhdGUgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIENvbnN0cmFpbnQgZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCByZWZlcmVuY2UsIHN0YXRlbWVudCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnJlZmVyZW5jZSA9IHJlZmVyZW5jZTtcbiAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgfVxuXG4gIGdldFJlZmVyZW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2U7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0Q29uc3RyYWludE5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbnN0cmFpbnROb2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGNvbnN0cmFpbnROb2RlO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlKCkgeyByZXR1cm4gdGhpcy5yZWZlcmVuY2UuZ2V0TWV0YXZhcmlhYmxlKCk7IH1cblxuICBpc0VxdWFsVG8oY29uc3RyYWludCkge1xuICAgIGNvbnN0IGNvbnN0cmFpbnROb2RlID0gY29uc3RyYWludC5nZXROb2RlKCksXG4gICAgICAgICAgY29uc3RyYWludE5vZGVNYXRjaGVzID0gdGhpcy5tYXRjaENvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlKSxcbiAgICAgICAgICBlcXVhbFRvID0gY29uc3RyYWludE5vZGVNYXRjaGVzOyAgLy8vXG5cbiAgICByZXR1cm4gZXF1YWxUbztcbiAgfVxuXG4gIG1hdGNoQ29uc3RyYWludE5vZGUoY29uc3RyYWludE5vZGUpIHtcbiAgICBjb25zdCBub2RlID0gY29uc3RyYWludE5vZGUsIC8vL1xuICAgICAgICAgIG5vZGVNYXRjaGVzID0gdGhpcy5tYXRjaE5vZGUobm9kZSksXG4gICAgICAgICAgY29uc3RyYWludE5vZGVNYXRjaGVzID0gbm9kZU1hdGNoZXM7IC8vL1xuXG4gICAgcmV0dXJuIGNvbnN0cmFpbnROb2RlTWF0Y2hlcztcbiAgfVxuXG4gIGZpbmRDb25zdHJhaW50KGNvbnRleHQpIHtcbiAgICBjb25zdCBjb25zdHJhaW50Tm9kZSA9IHRoaXMuZ2V0Q29uc3RyYWludE5vZGUoKSxcbiAgICAgICAgICBjb25zdHJhaW50ID0gY29udGV4dC5maW5kQ29uc3RyYWludEJ5Q29uc3RyYWludE5vZGUoY29uc3RyYWludE5vZGUpO1xuXG4gICAgcmV0dXJuIGNvbnN0cmFpbnQ7XG4gIH1cblxuICB2ZXJpZnkgPSB1bmJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3QgY29uc3RyYWludFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludC4uLmApO1xuXG4gICAgcmV0dXJuIGlzb2xhdGUoKGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiBwYXJlKChjb250ZXh0KSA9PiB7XG4gICAgICAgIHJldHVybiBkZWNsYXJlKChzdGF0ZSkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoY29uc3RyYWludCwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgICAgICAgfSwgYmFjayk7XG4gICAgICAgIH0pO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IGNvbnN0cmFpbnQ7XG5cbiAgICBjb25zdCBjb25zdHJhaW50U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQuLi5gKTtcblxuICAgIGNvbnN0cmFpbnQgPSB0aGlzLmZpbmRDb25zdHJhaW50KGNvbnRleHQpO1xuXG4gICAgaWYgKGNvbnN0cmFpbnQgIT09IG51bGwpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludCBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnN0cmFpbnQsIGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIHJldHVybiBpc29sYXRlKChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgY29uc3RyYWludCA9IHRoaXM7ICAvLy9cblxuICAgICAgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgICByZXR1cm4gYXR0ZW1wdCgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB2YWxpZGF0ZVN0YXRlbWVudCA9IHRoaXMudmFsaWRhdGVTdGF0ZW1lbnQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgdmFsaWRhdGVSZWZlcmVuY2UgPSB0aGlzLnZhbGlkYXRlUmVmZXJlbmNlLmJpbmQodGhpcyk7XG5cbiAgICAgICAgcmV0dXJuIGFsbChbXG4gICAgICAgICAgdmFsaWRhdGVTdGF0ZW1lbnQsXG4gICAgICAgICAgdmFsaWRhdGVSZWZlcmVuY2VcbiAgICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIHRoaXMuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5hZGRDb25zdHJhaW50KGNvbnN0cmFpbnQpO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb25zdHJhaW50LCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlUmVmZXJlbmNlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY29uc3RyYWludFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3MgcmVmZXJlbmNlLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2UudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChyZWZlcmVuY2UsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHRoaXMucmVmZXJlbmNlID0gcmVmZXJlbmNlO1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3MgcmVmZXJlbmNlLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVN0YXRlbWVudChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnN0cmFpbnRTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludCdzIHN0YXRlbWVudC4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50LnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoc3RhdGVtZW50LCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcblxuICAgICAgY29udGV4dC50cmFjZShgLi4udmFsaWRhdGVkIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludCdzIHN0YXRlbWVudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdW5pZnlSZWZlcmVuY2UocmVmZXJlbmNlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIHJlZmVyZW5jZVN0cmluZyA9IHJlZmVyZW5jZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBjb25zdHJhaW50U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7cmVmZXJlbmNlU3RyaW5nfScgcmVmZXJlbmNlIHdpdGggdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3MgbWV0YXZhcmFpYWJsZS4uLmApO1xuXG4gICAgY29uc3QgbWV0YXZhcmlhYmxlID0gdGhpcy5nZXRNZXRhdmFyaWFibGUoKTtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGUudW5pZnlSZWZlcmVuY2UocmVmZXJlbmNlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAocmVmZXJlbmNlVW5pZmllcykgPT4ge1xuICAgICAgaWYgKHJlZmVyZW5jZVVuaWZpZXMpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi51bmlmaWVkIHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyB3aXRoIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludCdzIG1ldGF2YXJpYWJsZS5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihyZWZlcmVuY2VVbmlmaWVzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHVuaWZ5TGluayhsaW5rLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIGxpbmtTdHJpbmcgPSBsaW5rLmdldFN0cmluZygpLFxuICAgICAgICAgIGNvbnN0cmFpbnRTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtsaW5rU3RyaW5nfScgbGluayB3aXRoIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludCdzIHJlZmVyZW5jZS4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlLnVuaWZ5TGluayhsaW5rLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7bGlua1N0cmluZ30nIGxpbmsgd2l0aCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQncyByZWZlcmVuY2UuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBjb25zdHJhaW50U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHdpdGggdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICBsZXQgc3BlY2lmaWNTdGF0ZW1lbnQ7XG5cbiAgICBzcGVjaWZpY1N0YXRlbWVudCA9IHN0YXRlbWVudDsgIC8vL1xuXG4gICAgc3BlY2lmaWNTdGF0ZW1lbnQgPSBzdHJpcEJyYWNrZXRzRnJvbVN0YXRlbWVudChzcGVjaWZpY1N0YXRlbWVudCwgY29udGV4dCk7ICAvLy9cblxuICAgIGNvbnN0IGdlbmVyYWxTdGF0ZW1lbnQgPSB0aGlzLnN0YXRlbWVudDsgIC8vL1xuXG4gICAgcmV0dXJuIHVuaWZ5U3RhdGVtZW50KGdlbmVyYWxTdGF0ZW1lbnQsIHNwZWNpZmljU3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHdpdGggdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3Mgc3RhdGVtZW50LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHVuaWZ5QXNzdW1wdGlvbihhc3VtcHRpb24sIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAgLy8vXG4gICAgICAgICAgYXN1bXB0aW9uU3RyaW5nID0gYXN1bXB0aW9uLmdldFN0cmluZygpLCAgLy8vXG4gICAgICAgICAgY29uc3RyYWludFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHthc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uIHdpdGggdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50Li4uYCk7XG5cbiAgICBjb25zdCBsaW5rID0gYXN1bXB0aW9uLmdldExpbmsoKSxcbiAgICAgICAgICBzdGF0ZW1lbnQgPSBhc3VtcHRpb24uZ2V0U3RhdGVtZW50KCk7XG5cbiAgICByZXR1cm4gdGhpcy51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy51bmlmeUxpbmsobGluaywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7YXN1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbiB3aXRoIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludC4uLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB1bmlmeUltcGxpY2l0QXNzdW1wdGlvbihpbXBsaWNpdEFzc3VtcHRpb24sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb25zdHJhaW50U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgIC8vL1xuICAgICAgICAgIGltcGxpY2l0QXNzdW1wdGlvblN0cmluZyA9IGltcGxpY2l0QXNzdW1wdGlvbi5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2ltcGxpY2l0QXNzdW1wdGlvblN0cmluZ30nIGltcGxpY2l0IGFzc3VtcHRpb24gd2l0aCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQuLi5gKTtcblxuICAgIGNvbnN0IGNvbnN0cmFpbnRDb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksIC8vL1xuICAgICAgICAgIGltcGxpY2l0QXNzdW1wdGlvbkNvbnRleHQgPSBpbXBsaWNpdEFzc3VtcHRpb24uZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gY29uc3RyYWludENvbnRleHQsIC8vL1xuICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IGltcGxpY2l0QXNzdW1wdGlvbkNvbnRleHQ7ICAvLy9cblxuICAgIHJldHVybiBqb2luKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgIHJldHVybiByZWNvbmNpbGUoKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBzdGF0ZW1lbnQgPSBpbXBsaWNpdEFzc3VtcHRpb24uZ2V0U3RhdGVtZW50KCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIHNwZWNpZmljQ29udGV4dC5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmd9JyBpbXBsaWNpdCBhc3N1bXB0aW9uIHdpdGggdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50Li4uYCk7XG5cbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCBzcGVjaWZpY0NvbnRleHQpO1xuICAgIH0sIHNwZWNpZmljQ29udGV4dCwgY29udGV4dCk7XG4gIH1cblxuICB1bmlmeUltcGxpY2l0QXNzdW1wdGlvbnMoaW1wbGljaXRBc3N1bXB0aW9ucywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnN0cmFpbnRTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAgLy8vXG4gICAgICAgICAgaW1wbGljaXRBc3NlcnRpb25zU3RyaW5nID0gaW1wbGljaXRBc3N1bXB0aW9uc1N0cmluZ0Zyb21JbXBsaWNpdEFzc3VtcHRpb25zKGltcGxpY2l0QXNzdW1wdGlvbnMpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICR7aW1wbGljaXRBc3NlcnRpb25zU3RyaW5nfSBpbXBsaWNpdCBhc3N1bXB0aW9ucyB3aXRoIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludC4uLmApO1xuXG4gICAgcmV0dXJuIHNvbWUoaW1wbGljaXRBc3N1bXB0aW9ucywgKGltcGxpY2l0QXNzdW1wdGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy51bmlmeUltcGxpY2l0QXNzdW1wdGlvbihpbXBsaWNpdEFzc3VtcHRpb24sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgIH0sIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAke2ltcGxpY2l0QXNzZXJ0aW9uc1N0cmluZ30gaW1wbGljaXQgYXNzdW1wdGlvbnMgd2l0aCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdW5pZnlTY2hlbWFBc3NlcnRpb25Bc3N1bXB0aW9ucyhzY2hlbWFBc3NlcnRpb24sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb25zdHJhaW50U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgIC8vL1xuICAgICAgICAgIHNjaGVtYUFzc2VydGlvblN0cmluZyA9IHNjaGVtYUFzc2VydGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzY2hlbWFBc3NlcnRpb25TdHJpbmd9JyBzY2hlbWEgYXNzZXJ0aW9uJ3MgYXNzdW1wdGlvbnMgd2l0aCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQuLi5gKTtcblxuICAgIGNvbnN0IGNvbnN0cmFpbnRDb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksIC8vL1xuICAgICAgICAgIHNjaGVtYUFzc2VydGlvbkNvbnRleHQgPSBzY2hlbWFBc3NlcnRpb24uZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gY29uc3RyYWludENvbnRleHQsICAvLy9cbiAgICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBzY2hlbWFBc3NlcnRpb25Db250ZXh0OyAvLy9cblxuICAgIHJldHVybiBqb2luKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgIHJldHVybiByZWNvbmNpbGUoKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBhc3N1bXB0aW9ucyA9IHNjaGVtYUFzc2VydGlvbi5nZXRBc3N1bXB0aW9ucygpO1xuXG4gICAgICAgIHJldHVybiBzb21lKGFzc3VtcHRpb25zLCAoYXNzdW1wdGlvbiwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLnVuaWZ5QXNzdW1wdGlvbihhc3N1bXB0aW9uLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgICAgICAgfSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICBzcGVjaWZpY0NvbnRleHQuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c2NoZW1hQXNzZXJ0aW9uU3RyaW5nfScgc2NoZW1hIGFzc2VydGlvbidzIGFzc3VtcHRpb25zIHdpdGggdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50LmApO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuXG4gICAgICB9LCBzcGVjaWZpY0NvbnRleHQpO1xuICAgIH0sIHNwZWNpZmljQ29udGV4dCwgY29udGV4dCk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQ29uc3RyYWludFwiO1xuXG4gIHRvSlNPTigpIHtcbiAgICBsZXQganNvbjtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHNlcmlhbGlzZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3Qgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgICAganNvbiA9IHtcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgc3RyaW5nXG4gICAgICB9O1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBjb25zdHJhaW50O1xuXG4gICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIHVuc2VyaWFsaXNlKChqc29uLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgICBjb25zdHJhaW50Tm9kZSA9IGluc3RhbnRpYXRlQ29uc3RyYWludChzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gY29uc3RyYWludE5vZGUsICAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgICAgICAgIHJlZmVyZW5jZSA9IHJlZmVyZW5jZUZyb21Db25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudEZyb21Db25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgY29uc3RyYWludCA9IG5ldyBDb25zdHJhaW50KGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgcmVmZXJlbmNlLCBzdGF0ZW1lbnQpO1xuICAgICAgfSwganNvbiwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29uc3RyYWludDtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3RlcChzdGVwLCBjb250ZXh0KSB7XG4gICAgbGV0IGNvbnN0cmFpbnQ7XG5cbiAgICBsZXQgc3RhdGVtZW50O1xuXG4gICAgc3RhdGVtZW50ID0gc3RlcC5nZXRTdGF0ZW1lbnQoKTtcblxuICAgIHN0YXRlbWVudCA9IHN0cmlwQnJhY2tldHNGcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7IC8vL1xuXG4gICAgY29uc3QgcmVmZXJlbmNlID0gc3RlcC5nZXRSZWZlcmVuY2UoKTtcblxuICAgIGFibGF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgY29uc3RyYWludFN0cmluZyA9IGNvbnN0cmFpbnRTdHJpbmdGcm9tUmVmZXJlbmNlQW5kU3RhdGVtZW50KHJlZmVyZW5jZSwgc3RhdGVtZW50KSxcbiAgICAgICAgICAgICAgc3RyaW5nID0gY29uc3RyYWludFN0cmluZywgIC8vL1xuICAgICAgICAgICAgICBjb25zdHJhaW50Tm9kZSA9IGluc3RhbnRpYXRlQ29uc3RyYWludChzdHJpbmcsIGNvbnRleHQpO1xuXG4gICAgICAgIGNvbnN0cmFpbnQgPSBjb25zdHJhaW50RnJvbUNvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlLCBjb250ZXh0KTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbnN0cmFpbnQ7XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiByZWZlcmVuY2VGcm9tQ29uc3RyYWludE5vZGUoY29uc3RyYWludE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgcmVmZXJlbmNlTm9kZSA9IGNvbnN0cmFpbnROb2RlLmdldFJlZmVyZW5jZU5vZGUoKSxcbiAgICAgICAgcmVmZXJuZWNlID0gY29udGV4dC5maW5kUmVmZXJlbmNlQnlSZWZlcmVuY2VOb2RlKHJlZmVyZW5jZU5vZGUpO1xuXG4gIHJldHVybiByZWZlcm5lY2U7XG59XG5cbmZ1bmN0aW9uIHN0YXRlbWVudEZyb21Db25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gY29uc3RyYWludE5vZGUuZ2V0U3RhdGVtZW50Tm9kZSgpLFxuICAgICAgICBzdGF0ZW1lbnQgPSBjb250ZXh0LmZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudDtcbn1cbiJdLCJuYW1lcyI6WyJ1bmJyZWFrYWJsZSIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJjdXQiLCJhbGwiLCJzb21lIiwiaXNvbGF0ZSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImRlZmluZSIsIkNvbnN0cmFpbnQiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwicmVmZXJlbmNlIiwic3RhdGVtZW50IiwiZ2V0UmVmZXJlbmNlIiwiZ2V0U3RhdGVtZW50IiwiZ2V0Q29uc3RyYWludE5vZGUiLCJnZXROb2RlIiwiY29uc3RyYWludE5vZGUiLCJnZXRNZXRhdmFyaWFibGUiLCJpc0VxdWFsVG8iLCJjb25zdHJhaW50IiwiY29uc3RyYWludE5vZGVNYXRjaGVzIiwibWF0Y2hDb25zdHJhaW50Tm9kZSIsImVxdWFsVG8iLCJub2RlTWF0Y2hlcyIsIm1hdGNoTm9kZSIsImZpbmRDb25zdHJhaW50IiwiZmluZENvbnN0cmFpbnRCeUNvbnN0cmFpbnROb2RlIiwidmVyaWZ5IiwiZm9yd2FyZCIsImJhY2siLCJjb25zdHJhaW50U3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJwYXJlIiwiZGVjbGFyZSIsInN0YXRlIiwidmFsaWRhdGUiLCJkZWJ1ZyIsImdldENvbnRleHQiLCJhdHRlbXB0IiwidmFsaWRhdGVTdGF0ZW1lbnQiLCJiaW5kIiwidmFsaWRhdGVSZWZlcmVuY2UiLCJjb21taXQiLCJhZGRDb25zdHJhaW50IiwidW5pZnlSZWZlcmVuY2UiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInJlZmVyZW5jZVN0cmluZyIsIm1ldGF2YXJpYWJsZSIsInJlZmVyZW5jZVVuaWZpZXMiLCJjb250aW51YXRpb24iLCJ1bmlmeUxpbmsiLCJsaW5rIiwibGlua1N0cmluZyIsInVuaWZ5U3RhdGVtZW50Iiwic3RhdGVtZW50U3RyaW5nIiwic3BlY2lmaWNTdGF0ZW1lbnQiLCJzdHJpcEJyYWNrZXRzRnJvbVN0YXRlbWVudCIsImdlbmVyYWxTdGF0ZW1lbnQiLCJ1bmlmeUFzc3VtcHRpb24iLCJhc3VtcHRpb24iLCJhc3VtcHRpb25TdHJpbmciLCJnZXRMaW5rIiwidW5pZnlJbXBsaWNpdEFzc3VtcHRpb24iLCJpbXBsaWNpdEFzc3VtcHRpb24iLCJpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmciLCJjb25zdHJhaW50Q29udGV4dCIsImltcGxpY2l0QXNzdW1wdGlvbkNvbnRleHQiLCJqb2luIiwicmVjb25jaWxlIiwidW5pZnlJbXBsaWNpdEFzc3VtcHRpb25zIiwiaW1wbGljaXRBc3N1bXB0aW9ucyIsImltcGxpY2l0QXNzZXJ0aW9uc1N0cmluZyIsImltcGxpY2l0QXNzdW1wdGlvbnNTdHJpbmdGcm9tSW1wbGljaXRBc3N1bXB0aW9ucyIsInVuaWZ5U2NoZW1hQXNzZXJ0aW9uQXNzdW1wdGlvbnMiLCJzY2hlbWFBc3NlcnRpb24iLCJzY2hlbWFBc3NlcnRpb25TdHJpbmciLCJzY2hlbWFBc3NlcnRpb25Db250ZXh0IiwiYXNzdW1wdGlvbnMiLCJnZXRBc3N1bXB0aW9ucyIsImFzc3VtcHRpb24iLCJuYW1lIiwidG9KU09OIiwianNvbiIsInNlcmlhbGlzZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJ1bnNlcmlhbGlzZSIsImluc3RhbnRpYXRlQ29uc3RyYWludCIsInJlZmVyZW5jZUZyb21Db25zdHJhaW50Tm9kZSIsInN0YXRlbWVudEZyb21Db25zdHJhaW50Tm9kZSIsImZyb21TdGVwIiwic3RlcCIsImFibGF0ZSIsImNvbnN0cmFpbnRTdHJpbmdGcm9tUmVmZXJlbmNlQW5kU3RhdGVtZW50IiwiY29uc3RyYWludEZyb21Db25zdHJhaW50Tm9kZSIsInJlZmVyZW5jZU5vZGUiLCJnZXRSZWZlcmVuY2VOb2RlIiwicmVmZXJuZWNlIiwiZmluZFJlZmVyZW5jZUJ5UmVmZXJlbmNlTm9kZSIsInN0YXRlbWVudE5vZGUiLCJnZXRTdGF0ZW1lbnROb2RlIiwiZmluZFN0YXRl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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-nominal",
3
3
  "author": "James Smith",
4
- "version": "1.0.527",
4
+ "version": "1.0.528",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-nominal",
7
7
  "description": "Occam's Nominal language.",
@@ -8,8 +8,8 @@ import { unifyStatement } from "../process/unify";
8
8
  import { instantiateConstraint } from "../process/instantiate";
9
9
  import { stripBracketsFromStatement } from "../utilities/brackets";
10
10
  import { constraintFromConstraintNode } from "../utilities/element";
11
- import { pare, join, ablate, attempt, reconcile, unserialise, instantiate } from "../utilities/context";
12
- import { assumptionsStringFromAssumptions, constraintStringFromReferenceAndStatement, implicitAssumptionsStringFromImplicitAssumptions } from "../utilities/string";
11
+ import { pare, join, ablate, attempt, reconcile, serialise, unserialise, instantiate } from "../utilities/context";
12
+ import { constraintStringFromReferenceAndStatement, implicitAssumptionsStringFromImplicitAssumptions } from "../utilities/string";
13
13
 
14
14
  const { unbreakable } = breakPointUtilities,
15
15
  { cut, all, some, isolate } = continuationUtilities;
@@ -302,13 +302,16 @@ export default define(class Constraint extends Element {
302
302
  toJSON() {
303
303
  let json;
304
304
 
305
- const name = this.getName(),
306
- string = this.getString();
305
+ const context = this.getContext();
307
306
 
308
- json = {
309
- name,
310
- string
311
- };
307
+ serialise((context) => {
308
+ const string = this.getString();
309
+
310
+ json = {
311
+ context,
312
+ string
313
+ };
314
+ }, context);
312
315
 
313
316
  return json;
314
317
  }