occam-nominal 1.0.519 → 1.0.522

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.
@@ -114,7 +114,8 @@ class TemenicContext extends _context.default {
114
114
  }
115
115
  addConstraint(constraint) {
116
116
  if (this.constraints === null) {
117
- super.addConstraint(constraint);
117
+ const context = this.getContext();
118
+ context.addConstraint(constraint);
118
119
  return;
119
120
  }
120
121
  const context = this, constraintA = constraint, constraintString = constraint.getString();
@@ -206,4 +207,4 @@ class TemenicContext extends _context.default {
206
207
  }
207
208
  const _default = TemenicContext;
208
209
 
209
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L3RlbWVuaWMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5pbXBvcnQgQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dFwiO1xuXG5pbXBvcnQgeyBtZXJnZUVxdWl2YWxlbmNlcywgc2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyB9IGZyb20gXCIuLi91dGlsaXRpZXMvZXF1aXZhbGVuY2VzXCI7XG5cbmNvbnN0IHsgbGFzdCwgcHVzaCwgY2xlYXIgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5jbGFzcyBUZW1lbmljQ29udGV4dCBleHRlbmRzIENvbnRleHQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBjb25zdHJhaW50cywgYXNzaWdubWVudHMsIGVxdWl2YWxlbmNlcywgZmFjdE9yU3VicHJvb2ZzLCBkZWNsYXJlZFZhcmlhYmxlcykge1xuICAgIHN1cGVyKGNvbnRleHQpO1xuXG4gICAgdGhpcy5jb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzO1xuICAgIHRoaXMuYXNzaWdubWVudHMgPSBhc3NpZ25tZW50cztcbiAgICB0aGlzLmVxdWl2YWxlbmNlcyA9IGVxdWl2YWxlbmNlcztcbiAgICB0aGlzLmZhY3RPclN1YnByb29mcyA9IGZhY3RPclN1YnByb29mcztcbiAgICB0aGlzLmRlY2xhcmVkVmFyaWFibGVzID0gZGVjbGFyZWRWYXJpYWJsZXM7XG4gIH1cblxuICBnZXRDb25zdHJhaW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5jb25zdHJhaW50cztcbiAgfVxuXG4gIGdldEFzc2lnbm1lbnRzKCkge1xuICAgIHJldHVybiB0aGlzLmFzc2lnbm1lbnRzO1xuICB9XG5cbiAgZ2V0RXF1aXZhbGVuY2VzKCkge1xuICAgIGxldCBlcXVpdmFsZW5jZXM7XG5cbiAgICBsZXQgY29udGV4dDtcblxuICAgIGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGVxdWl2YWxlbmNlcyA9IGNvbnRleHQuZ2V0RXF1aXZhbGVuY2VzKCk7XG5cbiAgICBjb250ZXh0ID0gdGhpczsgLy8vXG5cbiAgICBlcXVpdmFsZW5jZXMgPSBtZXJnZUVxdWl2YWxlbmNlcyh0aGlzLmVxdWl2YWxlbmNlcywgZXF1aXZhbGVuY2VzLCBjb250ZXh0KTsgIC8vL1xuXG4gICAgcmV0dXJuIGVxdWl2YWxlbmNlcztcbiAgfVxuXG4gIGdldEZhY3RPclN1YnByb29mcygpIHtcbiAgICBsZXQgZmFjdE9yU3VicHJvb2ZzO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgZmFjdE9yU3VicHJvb2ZzID0gY29udGV4dC5nZXRGYWN0T3JTdWJwcm9vZnMoKTtcblxuICAgIGZhY3RPclN1YnByb29mcyA9IFsgIC8vL1xuICAgICAgLi4uZmFjdE9yU3VicHJvb2ZzLFxuICAgICAgLi4udGhpcy5mYWN0T3JTdWJwcm9vZnNcbiAgICBdO1xuXG4gICAgcmV0dXJuIGZhY3RPclN1YnByb29mcztcbiAgfVxuXG4gIGdldERlY2xhcmVkVmFyaWFibGVzKGRlY2xhcmVkVmFyaWFibGVzID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBwdXNoKGRlY2xhcmVkVmFyaWFibGVzLCB0aGlzLmRlY2xhcmVkVmFyaWFibGVzKTtcblxuICAgIGNvbnRleHQuZ2V0RGVjbGFyZWRWYXJpYWJsZXMoZGVjbGFyZWRWYXJpYWJsZXMpO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVzO1xuICB9XG5cbiAgc2V0RXF1aXZhbGVuY2VzKGVxdWl2YWxlbmNlcykge1xuICAgIHRoaXMuZXF1aXZhbGVuY2VzID0gZXF1aXZhbGVuY2VzO1xuICB9XG5cbiAgZ2V0RmFjdHMoKSB7XG4gICAgY29uc3QgZmFjdE9yU3VicHJvb2ZzID0gdGhpcy5nZXRGYWN0T3JTdWJwcm9vZnMoKSxcbiAgICAgICAgICBmYWN0cyA9IGZhY3RPclN1YnByb29mcy5maWx0ZXIoKGZhY3RPclN1YnByb29mKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmYWN0T3JTdWJwcm9vZkZhY3QgPSBmYWN0T3JTdWJwcm9vZi5pc0ZhY3QoKTtcblxuICAgICAgICAgICAgaWYgKGZhY3RPclN1YnByb29mRmFjdCkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgIHJldHVybiBmYWN0cztcbiAgfVxuXG4gIGdldFN0ZXBzKCkge1xuICAgIGNvbnN0IGZhY3RzID0gdGhpcy5nZXRGYWN0cygpLFxuICAgICAgICAgIHN0ZXBzID0gZmFjdHMuZmlsdGVyKChmYWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmYWN0U3RlcCA9IGZhY3QuaXNTdGVwKCk7XG5cbiAgICAgICAgICAgIGlmIChmYWN0U3RlcCkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgIHJldHVybiBzdGVwcztcbiAgfVxuXG4gIGdldExhc3RTdGVwKCkge1xuICAgIGxldCBsYXN0U3RlcCA9IG51bGw7XG5cbiAgICBjb25zdCBzdGVwcyA9IHRoaXMuZ2V0U3RlcHMoKSxcbiAgICAgICAgICBzdGVwc0xlbmd0aCA9IHN0ZXBzLmxlbmd0aDtcblxuICAgIGlmIChzdGVwc0xlbmd0aCA+IDApIHtcbiAgICAgIGxhc3RTdGVwID0gbGFzdChzdGVwcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhc3RTdGVwO1xuICB9XG5cbiAgaXNNZXRhTGV2ZWwoKSB7XG4gICAgbGV0IG1ldGFMZXZlbDtcblxuICAgIGlmICh0aGlzLmNvbnN0cmFpbnRzICE9PSBudWxsKSB7XG4gICAgICBtZXRhTGV2ZWwgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICAgIG1ldGFMZXZlbCA9IGNvbnRleHQuaXNNZXRhTGV2ZWwoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWV0YUxldmVsO1xuICB9XG5cbiAgYWRkQXNzaWdubWVudChhc3NpZ25tZW50KSB7XG4gICAgdGhpcy5hc3NpZ25tZW50cy5wdXNoKGFzc2lnbm1lbnQpO1xuICB9XG5cbiAgYXNzaWduQXNzaWdubWVudHMoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXM7IC8vL1xuXG4gICAgdGhpcy5hc3NpZ25tZW50cy5mb3JFYWNoKChhc3NpZ25tZW50KSA9PiB7XG4gICAgICBhc3NpZ25tZW50KGNvbnRleHQpO1xuICAgIH0pO1xuXG4gICAgY2xlYXIodGhpcy5hc3NpZ25tZW50cyk7XG4gIH1cblxuICBhZGREZWNsYXJlZFZhcmlhYmxlKGRlY2xhcmVkVmFyaWFibGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZVN0cmluZyA9IGRlY2xhcmVkVmFyaWFibGUuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBBZGRpbmcgdGhlICcke2RlY2xhcmVkVmFyaWFibGVTdHJpbmd9JyBkZWNsYXJlZCB2YXJpYWJsZSB0byB0aGUgdGVtZXJpYyBjb250ZXh0Li4uYCk7XG5cbiAgICB0aGlzLmRlY2xhcmVkVmFyaWFibGVzLnB1c2goZGVjbGFyZWRWYXJpYWJsZSk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5hZGRlZCB0aGUgJyR7ZGVjbGFyZWRWYXJpYWJsZVN0cmluZ30nIGRlY2xhcmVkIHZhcmlhYmxlIHRvIHRoZSB0ZW1lcmljIGNvbnRleHQuYCk7XG4gIH1cblxuICBhZGRDb25zdHJhaW50KGNvbnN0cmFpbnQpIHtcbiAgICBpZiAodGhpcy5jb25zdHJhaW50cyA9PT0gbnVsbCkge1xuICAgICAgc3VwZXIuYWRkQ29uc3RyYWludChjb25zdHJhaW50KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLCAvLy9cbiAgICAgICAgICBjb25zdHJhaW50QSA9IGNvbnN0cmFpbnQsIC8vL1xuICAgICAgICAgIGNvbnN0cmFpbnRTdHJpbmcgPSBjb25zdHJhaW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgQWRkaW5nIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludCB0byB0aGUgdGVtZXJpYyBjb250ZXh0Li4uYCk7XG5cbiAgICBjb25zdCBjb25zdHJhaW50QiA9IHRoaXMuY29uc3RyYWludHMuZmluZCgoY29uc3RyYWludCkgPT4ge1xuICAgICAgY29uc3QgY29uc3RyYWludEIgPSBjb25zdHJhaW50LCAvLy9cbiAgICAgICAgICAgIGNvbnN0cmFpbnRBRXF1YWxUb0Fzc3VtcHRpb25CID0gY29uc3RyYWludEEuaXNFcXVhbFRvKGNvbnN0cmFpbnRCKTtcblxuICAgICAgaWYgKGNvbnN0cmFpbnRBRXF1YWxUb0Fzc3VtcHRpb25CKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pIHx8IG51bGw7XG5cbiAgICBpZiAoY29uc3RyYWludEIgIT09IG51bGwpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludCBoYXMgYWxyZWFkeSBiZWVuIGFkZGVkIHRvIHRoZSB0ZW1lcmljIGNvbnRleHQuYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29uc3RyYWludHMucHVzaChjb25zdHJhaW50KTtcbiAgICB9XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5hZGRlZCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQgdG8gdGhlIHRlbWVyaWMgY29udGV4dC5gKTtcbiAgfVxuXG4gIGFkZEdlbmVyYXRvcihnZW5lcmF0b3IpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZEdlbmVyYXRvcihnZW5lcmF0b3IpO1xuICB9XG5cbiAgYWRkQ29uc3RydWN0b3IoY29uc3RydWN0b3IpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb250ZXh0LmFkZENvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKTtcbiAgfVxuXG4gIGFkZEZhY3RPclN1YnByb29mKGZhY3RPclN1YnByb29mKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMsIC8vL1xuICAgICAgICAgIGZhY3RPclN1YnByb29mU3RyaW5nID0gZmFjdE9yU3VicHJvb2YuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBBZGRpbmcgdGhlICcke2ZhY3RPclN1YnByb29mU3RyaW5nfScgZmFjdCBvciBzdWJwcm9vZiB0byB0aGUgdGVtZXJpYyBjb250ZXh0Li4uYCk7XG5cbiAgICB0aGlzLmZhY3RPclN1YnByb29mcy5wdXNoKGZhY3RPclN1YnByb29mKTtcblxuICAgIGNvbnRleHQuZGVidWcoYC4uLmFkZGVkIHRoZSAnJHtmYWN0T3JTdWJwcm9vZlN0cmluZ30nIGZhY3Qgb3Igc3VicHJvb2YgdG8gdGhlIHRlbWVyaWMgY29udGV4dC5gKTtcbiAgfVxuXG4gIGZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKSB7XG4gICAgY29uc3QgZGVjbGFyZWRWYXJpYWJsZXMgPSB0aGlzLmdldERlY2xhcmVkVmFyaWFibGVzKCksXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZSA9IGRlY2xhcmVkVmFyaWFibGVzLmZpbmQoKGRlY2xhcmVkVmFyaWFibGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhcmlhYmxlQ29tcGFyZXNUb1ZhcmlhYmxlSWRlbnRpZmllciA9IGRlY2xhcmVkVmFyaWFibGUuY29tcGFyZVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpO1xuXG4gICAgICAgICAgICBpZiAodmFyaWFibGVDb21wYXJlc1RvVmFyaWFibGVJZGVudGlmaWVyKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gZGVjbGFyZWRWYXJpYWJsZTtcbiAgfVxuXG4gIGZpbmREZWNsYXJlZFZhcmlhYmxlc0J5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgIGxldCBkZWNsYXJlZFZhcmlhYmxlcztcblxuICAgIGRlY2xhcmVkVmFyaWFibGVzID0gdGhpcy5nZXREZWNsYXJlZFZhcmlhYmxlcygpO1xuXG4gICAgZGVjbGFyZWRWYXJpYWJsZXMgPSBkZWNsYXJlZFZhcmlhYmxlcy5maWx0ZXIoKGRlY2xhcmVkVmFyaWFibGUpID0+IHtcbiAgICAgIGNvbnN0IHZhcmlhYmxlQ29tcGFyZXNUb1ZhcmlhYmxlSWRlbnRpZmllciA9IGRlY2xhcmVkVmFyaWFibGUuY29tcGFyZVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpO1xuXG4gICAgICBpZiAodmFyaWFibGVDb21wYXJlc1RvVmFyaWFibGVJZGVudGlmaWVyKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVzO1xuICB9XG5cbiAgZmluZENvbnN0cmFpbnRCeUNvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlKSB7XG4gICAgbGV0IGNvbnN0cmFpbnQ7XG5cbiAgICBpZiAodGhpcy5jb25zdHJhaW50cyA9PT0gbnVsbCkge1xuICAgICAgY29uc3RyYWludCA9IHN1cGVyLmZpbmRDb25zdHJhaW50QnlDb25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0cmFpbnQgPSB0aGlzLmNvbnN0cmFpbnRzLmZpbmQoKGNvbnN0cmFpbnQpID0+IHtcbiAgICAgICAgY29uc3QgY29uc3RyYWludE5vZGVNYXRjaGVzID0gY29uc3RyYWludC5tYXRjaENvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlKTtcblxuICAgICAgICBpZiAoY29uc3RyYWludE5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pIHx8IG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnN0cmFpbnQ7XG4gIH1cblxuICBpc0RlY2xhcmVkVmFyaWFibGVQcmVzZW50QnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKSB7XG4gICAgY29uc3QgZGVjbGFyZWRWYXJpYWJsZSA9IHRoaXMuZmluZERlY2xhcmVkVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpLFxuICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGVQcmVzZW50ID0gKGRlY2xhcmVkVmFyaWFibGUgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVQcmVzZW50O1xuICB9XG5cbiAgaXNUZXJtR3JvdW5kZWQodGVybSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLCAvLy9cbiAgICAgICAgICBlcXVpdmFsZW5jZXMgPSB0aGlzLmdldEVxdWl2YWxlbmNlcygpLFxuICAgICAgICAgIGdyb3VuZGVkVGVybXMgPSBbXSxcbiAgICAgICAgICBkZWZpbmVkVmFyaWFibGVzID0gW107XG5cbiAgICBzZXBhcmF0ZUdyb3VuZGVkVGVybXNBbmREZWZpbmVkVmFyaWFibGVzKGVxdWl2YWxlbmNlcywgZ3JvdW5kZWRUZXJtcywgZGVmaW5lZFZhcmlhYmxlcywgY29udGV4dCk7XG5cbiAgICBjb25zdCB0ZXJtTWF0Y2hlc0dyb3VuZGVkVGVybSA9IGdyb3VuZGVkVGVybXMuc29tZSgoZ3JvdW5kZWRUZXJtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBncm91bmRlZFRlcm1Ob2RlID0gZ3JvdW5kZWRUZXJtLmdldE5vZGUoKSxcbiAgICAgICAgICAgICAgICAgIGdyb3VuZGVkVGVybU5vZGVNYXRjaGVzID0gdGVybS5tYXRjaFRlcm1Ob2RlKGdyb3VuZGVkVGVybU5vZGUpO1xuXG4gICAgICAgICAgICBpZiAoZ3JvdW5kZWRUZXJtTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgdGVybUdyb3VuZGVkID0gdGVybU1hdGNoZXNHcm91bmRlZFRlcm07IC8vL1xuXG4gICAgcmV0dXJuIHRlcm1Hcm91bmRlZDtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTm90aGluZyhjb250ZXh0KSB7XG4gICAgY29uc3QgYXNzaWdubWVudHMgPSBbXSxcbiAgICAgICAgICBlcXVpdmFsZW5jZXMgPSBbXSxcbiAgICAgICAgICBjb25zdHJhaW50cyA9IG51bGwsXG4gICAgICAgICAgZmFjdE9yU3VicHJvb2ZzID0gW10sXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZXMgPSBbXSxcbiAgICAgICAgICB0ZW1lbmljQ29udGV4dCA9IG5ldyBUZW1lbmljQ29udGV4dChjb250ZXh0LCBjb25zdHJhaW50cywgYXNzaWdubWVudHMsIGVxdWl2YWxlbmNlcywgZmFjdE9yU3VicHJvb2ZzLCBkZWNsYXJlZFZhcmlhYmxlcyk7XG5cbiAgICByZXR1cm4gdGVtZW5pY0NvbnRleHQ7XG4gIH1cblxuICBzdGF0aWMgZnJvbUNvbnN0cmFpbnRzKGNvbnN0cmFpbnRzLCBjb250ZXh0KSB7XG4gICAgY29uc3QgYXNzaWdubWVudHMgPSBbXSxcbiAgICAgICAgICBlcXVpdmFsZW5jZXMgPSBbXSxcbiAgICAgICAgICBmYWN0T3JTdWJwcm9vZnMgPSBbXSxcbiAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlcyA9IFtdLFxuICAgICAgICAgIHRlbWVuaWNDb250ZXh0ID0gbmV3IFRlbWVuaWNDb250ZXh0KGNvbnRleHQsIGNvbnN0cmFpbnRzLCBhc3NpZ25tZW50cywgZXF1aXZhbGVuY2VzLCBmYWN0T3JTdWJwcm9vZnMsIGRlY2xhcmVkVmFyaWFibGVzKTtcblxuICAgIHJldHVybiB0ZW1lbmljQ29udGV4dDtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBUZW1lbmljQ29udGV4dDsiXSwibmFtZXMiOlsibGFzdCIsInB1c2giLCJjbGVhciIsImFycmF5VXRpbGl0aWVzIiwiVGVtZW5pY0NvbnRleHQiLCJDb250ZXh0IiwiY29udGV4dCIsImNvbnN0cmFpbnRzIiwiYXNzaWdubWVudHMiLCJlcXVpdmFsZW5jZXMiLCJmYWN0T3JTdWJwcm9vZnMiLCJkZWNsYXJlZFZhcmlhYmxlcyIsImdldENvbnN0cmFpbnRzIiwiZ2V0QXNzaWdubWVudHMiLCJnZXRFcXVpdmFsZW5jZXMiLCJnZXRDb250ZXh0IiwibWVyZ2VFcXVpdmFsZW5jZXMiLCJnZXRGYWN0T3JTdWJwcm9vZnMiLCJnZXREZWNsYXJlZFZhcmlhYmxlcyIsInNldEVxdWl2YWxlbmNlcyIsImdldEZhY3RzIiwiZmFjdHMiLCJmaWx0ZXIiLCJmYWN0T3JTdWJwcm9vZiIsImZhY3RPclN1YnByb29mRmFjdCIsImlzRmFjdCIsImdldFN0ZXBzIiwic3RlcHMiLCJmYWN0IiwiZmFjdFN0ZXAiLCJpc1N0ZXAiLCJnZXRMYXN0U3RlcCIsImxhc3RTdGVwIiwic3RlcHNMZW5ndGgiLCJsZW5ndGgiLCJpc01ldGFMZXZlbCIsIm1ldGFMZXZlbCIsImFkZEFzc2lnbm1lbnQiLCJhc3NpZ25tZW50IiwiYXNzaWduQXNzaWdubWVudHMiLCJmb3JFYWNoIiwiYWRkRGVjbGFyZWRWYXJpYWJsZSIsImRlY2xhcmVkVmFyaWFibGUiLCJkZWNsYXJlZFZhcmlhYmxlU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZWJ1ZyIsImFkZENvbnN0cmFpbnQiLCJjb25zdHJhaW50IiwiY29uc3RyYWludEEiLCJjb25zdHJhaW50U3RyaW5nIiwiY29uc3RyYWludEIiLCJmaW5kIiwiY29uc3RyYWludEFFcXVhbFRvQXNzdW1wdGlvbkIiLCJpc0VxdWFsVG8iLCJhZGRHZW5lcmF0b3IiLCJnZW5lcmF0b3IiLCJhZGRDb25zdHJ1Y3RvciIsImNvbnN0cnVjdG9yIiwiYWRkRmFjdE9yU3VicHJvb2YiLCJmYWN0T3JTdWJwcm9vZlN0cmluZyIsImZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIiLCJ2YXJpYWJsZUlkZW50aWZpZXIiLCJ2YXJpYWJsZUNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aWZpZXIiLCJjb21wYXJlVmFyaWFibGVJZGVudGlmaWVyIiwiZmluZERlY2xhcmVkVmFyaWFibGVzQnlWYXJpYWJsZUlkZW50aWZpZXIiLCJmaW5kQ29uc3RyYWludEJ5Q29uc3RyYWludE5vZGUiLCJjb25zdHJhaW50Tm9kZSIsImNvbnN0cmFpbnROb2RlTWF0Y2hlcyIsIm1hdGNoQ29uc3RyYWludE5vZGUiLCJpc0RlY2xhcmVkVmFyaWFibGVQcmVzZW50QnlWYXJpYWJsZUlkZW50aWZpZXIiLCJkZWNsYXJlZFZhcmlhYmxlUHJlc2VudCIsImlzVGVybUdyb3VuZGVkIiwidGVybSIsImdyb3VuZGVkVGVybXMiLCJkZWZpbmVkVmFyaWFibGVzIiwic2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyIsInRlcm1NYXRjaGVzR3JvdW5kZWRUZXJtIiwic29tZSIsImdyb3VuZGVkVGVybSIsImdyb3VuZGVkVGVybU5vZGUiLCJnZXROb2RlIiwiZ3JvdW5kZWRUZXJtTm9kZU1hdGNoZXMiLCJtYXRjaFRlcm1Ob2RlIiwidGVybUdyb3VuZGVkIiwiZnJvbU5vdGhpbmciLCJ0ZW1lbmljQ29udGV4dCIsImZyb21Db25zdHJhaW50cyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBK1NBOzs7ZUFBQTs7OzJCQTdTK0I7Z0VBRVg7OEJBRXdEOzs7Ozs7QUFFNUUsTUFBTSxFQUFFQSxJQUFJLEVBQUVDLElBQUksRUFBRUMsS0FBSyxFQUFFLEdBQUdDLHlCQUFjO0FBRTVDLE1BQU1DLHVCQUF1QkMsZ0JBQU87SUFDbEMsWUFBWUMsT0FBTyxFQUFFQyxXQUFXLEVBQUVDLFdBQVcsRUFBRUMsWUFBWSxFQUFFQyxlQUFlLEVBQUVDLGlCQUFpQixDQUFFO1FBQy9GLEtBQUssQ0FBQ0w7UUFFTixJQUFJLENBQUNDLFdBQVcsR0FBR0E7UUFDbkIsSUFBSSxDQUFDQyxXQUFXLEdBQUdBO1FBQ25CLElBQUksQ0FBQ0MsWUFBWSxHQUFHQTtRQUNwQixJQUFJLENBQUNDLGVBQWUsR0FBR0E7UUFDdkIsSUFBSSxDQUFDQyxpQkFBaUIsR0FBR0E7SUFDM0I7SUFFQUMsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUNMLFdBQVc7SUFDekI7SUFFQU0saUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUNMLFdBQVc7SUFDekI7SUFFQU0sa0JBQWtCO1FBQ2hCLElBQUlMO1FBRUosSUFBSUg7UUFFSkEsVUFBVSxJQUFJLENBQUNTLFVBQVU7UUFFekJOLGVBQWVILFFBQVFRLGVBQWU7UUFFdENSLFVBQVUsSUFBSSxFQUFFLEdBQUc7UUFFbkJHLGVBQWVPLElBQUFBLCtCQUFpQixFQUFDLElBQUksQ0FBQ1AsWUFBWSxFQUFFQSxjQUFjSCxVQUFXLEdBQUc7UUFFaEYsT0FBT0c7SUFDVDtJQUVBUSxxQkFBcUI7UUFDbkIsSUFBSVA7UUFFSixNQUFNSixVQUFVLElBQUksQ0FBQ1MsVUFBVTtRQUUvQkwsa0JBQWtCSixRQUFRVyxrQkFBa0I7UUFFNUNQLGtCQUFrQjtlQUNiQTtlQUNBLElBQUksQ0FBQ0EsZUFBZTtTQUN4QjtRQUVELE9BQU9BO0lBQ1Q7SUFFQVEscUJBQXFCUCxvQkFBb0IsRUFBRSxFQUFFO1FBQzNDLE1BQU1MLFVBQVUsSUFBSSxDQUFDUyxVQUFVO1FBRS9CZCxLQUFLVSxtQkFBbUIsSUFBSSxDQUFDQSxpQkFBaUI7UUFFOUNMLFFBQVFZLG9CQUFvQixDQUFDUDtRQUU3QixPQUFPQTtJQUNUO0lBRUFRLGdCQUFnQlYsWUFBWSxFQUFFO1FBQzVCLElBQUksQ0FBQ0EsWUFBWSxHQUFHQTtJQUN0QjtJQUVBVyxXQUFXO1FBQ1QsTUFBTVYsa0JBQWtCLElBQUksQ0FBQ08sa0JBQWtCLElBQ3pDSSxRQUFRWCxnQkFBZ0JZLE1BQU0sQ0FBQyxDQUFDQztZQUM5QixNQUFNQyxxQkFBcUJELGVBQWVFLE1BQU07WUFFaEQsSUFBSUQsb0JBQW9CO2dCQUN0QixPQUFPO1lBQ1Q7UUFDRjtRQUVOLE9BQU9IO0lBQ1Q7SUFFQUssV0FBVztRQUNULE1BQU1MLFFBQVEsSUFBSSxDQUFDRCxRQUFRLElBQ3JCTyxRQUFRTixNQUFNQyxNQUFNLENBQUMsQ0FBQ007WUFDcEIsTUFBTUMsV0FBV0QsS0FBS0UsTUFBTTtZQUU1QixJQUFJRCxVQUFVO2dCQUNaLE9BQU87WUFDVDtRQUNGO1FBRU4sT0FBT0Y7SUFDVDtJQUVBSSxjQUFjO1FBQ1osSUFBSUMsV0FBVztRQUVmLE1BQU1MLFFBQVEsSUFBSSxDQUFDRCxRQUFRLElBQ3JCTyxjQUFjTixNQUFNTyxNQUFNO1FBRWhDLElBQUlELGNBQWMsR0FBRztZQUNuQkQsV0FBV2hDLEtBQUsyQjtRQUNsQjtRQUVBLE9BQU9LO0lBQ1Q7SUFFQUcsY0FBYztRQUNaLElBQUlDO1FBRUosSUFBSSxJQUFJLENBQUM3QixXQUFXLEtBQUssTUFBTTtZQUM3QjZCLFlBQVk7UUFDZCxPQUFPO1lBQ0wsTUFBTTlCLFVBQVUsSUFBSSxDQUFDUyxVQUFVO1lBRS9CcUIsWUFBWTlCLFFBQVE2QixXQUFXO1FBQ2pDO1FBRUEsT0FBT0M7SUFDVDtJQUVBQyxjQUFjQyxVQUFVLEVBQUU7UUFDeEIsSUFBSSxDQUFDOUIsV0FBVyxDQUFDUCxJQUFJLENBQUNxQztJQUN4QjtJQUVBQyxvQkFBb0I7UUFDbEIsTUFBTWpDLFVBQVUsSUFBSSxFQUFFLEdBQUc7UUFFekIsSUFBSSxDQUFDRSxXQUFXLENBQUNnQyxPQUFPLENBQUMsQ0FBQ0Y7WUFDeEJBLFdBQVdoQztRQUNiO1FBRUFKLE1BQU0sSUFBSSxDQUFDTSxXQUFXO0lBQ3hCO0lBRUFpQyxvQkFBb0JDLGdCQUFnQixFQUFFO1FBQ3BDLE1BQU1wQyxVQUFVLElBQUksRUFDZHFDLHlCQUF5QkQsaUJBQWlCRSxTQUFTO1FBRXpEdEMsUUFBUXVDLEtBQUssQ0FBQyxDQUFDLFlBQVksRUFBRUYsdUJBQXVCLDZDQUE2QyxDQUFDO1FBRWxHLElBQUksQ0FBQ2hDLGlCQUFpQixDQUFDVixJQUFJLENBQUN5QztRQUU1QnBDLFFBQVF3QyxLQUFLLENBQUMsQ0FBQyxjQUFjLEVBQUVILHVCQUF1QiwyQ0FBMkMsQ0FBQztJQUNwRztJQUVBSSxjQUFjQyxVQUFVLEVBQUU7UUFDeEIsSUFBSSxJQUFJLENBQUN6QyxXQUFXLEtBQUssTUFBTTtZQUM3QixLQUFLLENBQUN3QyxjQUFjQztZQUVwQjtRQUNGO1FBRUEsTUFBTTFDLFVBQVUsSUFBSSxFQUNkMkMsY0FBY0QsWUFDZEUsbUJBQW1CRixXQUFXSixTQUFTO1FBRTdDdEMsUUFBUXVDLEtBQUssQ0FBQyxDQUFDLFlBQVksRUFBRUssaUJBQWlCLHNDQUFzQyxDQUFDO1FBRXJGLE1BQU1DLGNBQWMsSUFBSSxDQUFDNUMsV0FBVyxDQUFDNkMsSUFBSSxDQUFDLENBQUNKO1lBQ3pDLE1BQU1HLGNBQWNILFlBQ2RLLGdDQUFnQ0osWUFBWUssU0FBUyxDQUFDSDtZQUU1RCxJQUFJRSwrQkFBK0I7Z0JBQ2pDLE9BQU87WUFDVDtRQUNGLE1BQU07UUFFTixJQUFJRixnQkFBZ0IsTUFBTTtZQUN4QjdDLFFBQVF3QyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUVJLGlCQUFpQiwyREFBMkQsQ0FBQztRQUNyRyxPQUFPO1lBQ0wsSUFBSSxDQUFDM0MsV0FBVyxDQUFDTixJQUFJLENBQUMrQztRQUN4QjtRQUVBMUMsUUFBUXdDLEtBQUssQ0FBQyxDQUFDLGNBQWMsRUFBRUksaUJBQWlCLG9DQUFvQyxDQUFDO0lBQ3ZGO0lBRUFLLGFBQWFDLFNBQVMsRUFBRTtRQUN0QixNQUFNbEQsVUFBVSxJQUFJLENBQUNTLFVBQVU7UUFFL0JULFFBQVFpRCxZQUFZLENBQUNDO0lBQ3ZCO0lBRUFDLGVBQWVDLFdBQVcsRUFBRTtRQUMxQixNQUFNcEQsVUFBVSxJQUFJLENBQUNTLFVBQVU7UUFFL0JULFFBQVFtRCxjQUFjLENBQUNDO0lBQ3pCO0lBRUFDLGtCQUFrQnBDLGNBQWMsRUFBRTtRQUNoQyxNQUFNakIsVUFBVSxJQUFJLEVBQ2RzRCx1QkFBdUJyQyxlQUFlcUIsU0FBUztRQUVyRHRDLFFBQVF1QyxLQUFLLENBQUMsQ0FBQyxZQUFZLEVBQUVlLHFCQUFxQiw0Q0FBNEMsQ0FBQztRQUUvRixJQUFJLENBQUNsRCxlQUFlLENBQUNULElBQUksQ0FBQ3NCO1FBRTFCakIsUUFBUXdDLEtBQUssQ0FBQyxDQUFDLGNBQWMsRUFBRWMscUJBQXFCLDBDQUEwQyxDQUFDO0lBQ2pHO0lBRUFDLHlDQUF5Q0Msa0JBQWtCLEVBQUU7UUFDM0QsTUFBTW5ELG9CQUFvQixJQUFJLENBQUNPLG9CQUFvQixJQUM3Q3dCLG1CQUFtQi9CLGtCQUFrQnlDLElBQUksQ0FBQyxDQUFDVjtZQUN6QyxNQUFNcUIsdUNBQXVDckIsaUJBQWlCc0IseUJBQXlCLENBQUNGO1lBRXhGLElBQUlDLHNDQUFzQztnQkFDeEMsT0FBTztZQUNUO1FBQ0YsTUFBTTtRQUVaLE9BQU9yQjtJQUNUO0lBRUF1QiwwQ0FBMENILGtCQUFrQixFQUFFO1FBQzVELElBQUluRDtRQUVKQSxvQkFBb0IsSUFBSSxDQUFDTyxvQkFBb0I7UUFFN0NQLG9CQUFvQkEsa0JBQWtCVyxNQUFNLENBQUMsQ0FBQ29CO1lBQzVDLE1BQU1xQix1Q0FBdUNyQixpQkFBaUJzQix5QkFBeUIsQ0FBQ0Y7WUFFeEYsSUFBSUMsc0NBQXNDO2dCQUN4QyxPQUFPO1lBQ1Q7UUFDRjtRQUVBLE9BQU9wRDtJQUNUO0lBRUF1RCwrQkFBK0JDLGNBQWMsRUFBRTtRQUM3QyxJQUFJbkI7UUFFSixJQUFJLElBQUksQ0FBQ3pDLFdBQVcsS0FBSyxNQUFNO1lBQzdCeUMsYUFBYSxLQUFLLENBQUNrQiwrQkFBK0JDO1FBQ3BELE9BQU87WUFDTG5CLGFBQWEsSUFBSSxDQUFDekMsV0FBVyxDQUFDNkMsSUFBSSxDQUFDLENBQUNKO2dCQUNsQyxNQUFNb0Isd0JBQXdCcEIsV0FBV3FCLG1CQUFtQixDQUFDRjtnQkFFN0QsSUFBSUMsdUJBQXVCO29CQUN6QixPQUFPO2dCQUNUO1lBQ0YsTUFBTTtRQUNSO1FBRUEsT0FBT3BCO0lBQ1Q7SUFFQXNCLDhDQUE4Q1Isa0JBQWtCLEVBQUU7UUFDaEUsTUFBTXBCLG1CQUFtQixJQUFJLENBQUNtQix3Q0FBd0MsQ0FBQ0MscUJBQ2pFUywwQkFBMkI3QixxQkFBcUI7UUFFdEQsT0FBTzZCO0lBQ1Q7SUFFQUMsZUFBZUMsSUFBSSxFQUFFO1FBQ25CLE1BQU1uRSxVQUFVLElBQUksRUFDZEcsZUFBZSxJQUFJLENBQUNLLGVBQWUsSUFDbkM0RCxnQkFBZ0IsRUFBRSxFQUNsQkMsbUJBQW1CLEVBQUU7UUFFM0JDLElBQUFBLHNEQUF3QyxFQUFDbkUsY0FBY2lFLGVBQWVDLGtCQUFrQnJFO1FBRXhGLE1BQU11RSwwQkFBMEJILGNBQWNJLElBQUksQ0FBQyxDQUFDQztZQUM1QyxNQUFNQyxtQkFBbUJELGFBQWFFLE9BQU8sSUFDdkNDLDBCQUEwQlQsS0FBS1UsYUFBYSxDQUFDSDtZQUVuRCxJQUFJRSx5QkFBeUI7Z0JBQzNCLE9BQU87WUFDVDtRQUNGLElBQ0FFLGVBQWVQLHlCQUF5QixHQUFHO1FBRWpELE9BQU9PO0lBQ1Q7SUFFQSxPQUFPQyxZQUFZL0UsT0FBTyxFQUFFO1FBQzFCLE1BQU1FLGNBQWMsRUFBRSxFQUNoQkMsZUFBZSxFQUFFLEVBQ2pCRixjQUFjLE1BQ2RHLGtCQUFrQixFQUFFLEVBQ3BCQyxvQkFBb0IsRUFBRSxFQUN0QjJFLGlCQUFpQixJQUFJbEYsZUFBZUUsU0FBU0MsYUFBYUMsYUFBYUMsY0FBY0MsaUJBQWlCQztRQUU1RyxPQUFPMkU7SUFDVDtJQUVBLE9BQU9DLGdCQUFnQmhGLFdBQVcsRUFBRUQsT0FBTyxFQUFFO1FBQzNDLE1BQU1FLGNBQWMsRUFBRSxFQUNoQkMsZUFBZSxFQUFFLEVBQ2pCQyxrQkFBa0IsRUFBRSxFQUNwQkMsb0JBQW9CLEVBQUUsRUFDdEIyRSxpQkFBaUIsSUFBSWxGLGVBQWVFLFNBQVNDLGFBQWFDLGFBQWFDLGNBQWNDLGlCQUFpQkM7UUFFNUcsT0FBTzJFO0lBQ1Q7QUFDRjtNQUVBLFdBQWVsRiJ9
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L3RlbWVuaWMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5pbXBvcnQgQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dFwiO1xuXG5pbXBvcnQgeyBtZXJnZUVxdWl2YWxlbmNlcywgc2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyB9IGZyb20gXCIuLi91dGlsaXRpZXMvZXF1aXZhbGVuY2VzXCI7XG5cbmNvbnN0IHsgbGFzdCwgcHVzaCwgY2xlYXIgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5jbGFzcyBUZW1lbmljQ29udGV4dCBleHRlbmRzIENvbnRleHQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBjb25zdHJhaW50cywgYXNzaWdubWVudHMsIGVxdWl2YWxlbmNlcywgZmFjdE9yU3VicHJvb2ZzLCBkZWNsYXJlZFZhcmlhYmxlcykge1xuICAgIHN1cGVyKGNvbnRleHQpO1xuXG4gICAgdGhpcy5jb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzO1xuICAgIHRoaXMuYXNzaWdubWVudHMgPSBhc3NpZ25tZW50cztcbiAgICB0aGlzLmVxdWl2YWxlbmNlcyA9IGVxdWl2YWxlbmNlcztcbiAgICB0aGlzLmZhY3RPclN1YnByb29mcyA9IGZhY3RPclN1YnByb29mcztcbiAgICB0aGlzLmRlY2xhcmVkVmFyaWFibGVzID0gZGVjbGFyZWRWYXJpYWJsZXM7XG4gIH1cblxuICBnZXRDb25zdHJhaW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5jb25zdHJhaW50cztcbiAgfVxuXG4gIGdldEFzc2lnbm1lbnRzKCkge1xuICAgIHJldHVybiB0aGlzLmFzc2lnbm1lbnRzO1xuICB9XG5cbiAgZ2V0RXF1aXZhbGVuY2VzKCkge1xuICAgIGxldCBlcXVpdmFsZW5jZXM7XG5cbiAgICBsZXQgY29udGV4dDtcblxuICAgIGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIGVxdWl2YWxlbmNlcyA9IGNvbnRleHQuZ2V0RXF1aXZhbGVuY2VzKCk7XG5cbiAgICBjb250ZXh0ID0gdGhpczsgLy8vXG5cbiAgICBlcXVpdmFsZW5jZXMgPSBtZXJnZUVxdWl2YWxlbmNlcyh0aGlzLmVxdWl2YWxlbmNlcywgZXF1aXZhbGVuY2VzLCBjb250ZXh0KTsgIC8vL1xuXG4gICAgcmV0dXJuIGVxdWl2YWxlbmNlcztcbiAgfVxuXG4gIGdldEZhY3RPclN1YnByb29mcygpIHtcbiAgICBsZXQgZmFjdE9yU3VicHJvb2ZzO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgZmFjdE9yU3VicHJvb2ZzID0gY29udGV4dC5nZXRGYWN0T3JTdWJwcm9vZnMoKTtcblxuICAgIGZhY3RPclN1YnByb29mcyA9IFsgIC8vL1xuICAgICAgLi4uZmFjdE9yU3VicHJvb2ZzLFxuICAgICAgLi4udGhpcy5mYWN0T3JTdWJwcm9vZnNcbiAgICBdO1xuXG4gICAgcmV0dXJuIGZhY3RPclN1YnByb29mcztcbiAgfVxuXG4gIGdldERlY2xhcmVkVmFyaWFibGVzKGRlY2xhcmVkVmFyaWFibGVzID0gW10pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBwdXNoKGRlY2xhcmVkVmFyaWFibGVzLCB0aGlzLmRlY2xhcmVkVmFyaWFibGVzKTtcblxuICAgIGNvbnRleHQuZ2V0RGVjbGFyZWRWYXJpYWJsZXMoZGVjbGFyZWRWYXJpYWJsZXMpO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVzO1xuICB9XG5cbiAgc2V0RXF1aXZhbGVuY2VzKGVxdWl2YWxlbmNlcykge1xuICAgIHRoaXMuZXF1aXZhbGVuY2VzID0gZXF1aXZhbGVuY2VzO1xuICB9XG5cbiAgZ2V0RmFjdHMoKSB7XG4gICAgY29uc3QgZmFjdE9yU3VicHJvb2ZzID0gdGhpcy5nZXRGYWN0T3JTdWJwcm9vZnMoKSxcbiAgICAgICAgICBmYWN0cyA9IGZhY3RPclN1YnByb29mcy5maWx0ZXIoKGZhY3RPclN1YnByb29mKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmYWN0T3JTdWJwcm9vZkZhY3QgPSBmYWN0T3JTdWJwcm9vZi5pc0ZhY3QoKTtcblxuICAgICAgICAgICAgaWYgKGZhY3RPclN1YnByb29mRmFjdCkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgIHJldHVybiBmYWN0cztcbiAgfVxuXG4gIGdldFN0ZXBzKCkge1xuICAgIGNvbnN0IGZhY3RzID0gdGhpcy5nZXRGYWN0cygpLFxuICAgICAgICAgIHN0ZXBzID0gZmFjdHMuZmlsdGVyKChmYWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmYWN0U3RlcCA9IGZhY3QuaXNTdGVwKCk7XG5cbiAgICAgICAgICAgIGlmIChmYWN0U3RlcCkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgIHJldHVybiBzdGVwcztcbiAgfVxuXG4gIGdldExhc3RTdGVwKCkge1xuICAgIGxldCBsYXN0U3RlcCA9IG51bGw7XG5cbiAgICBjb25zdCBzdGVwcyA9IHRoaXMuZ2V0U3RlcHMoKSxcbiAgICAgICAgICBzdGVwc0xlbmd0aCA9IHN0ZXBzLmxlbmd0aDtcblxuICAgIGlmIChzdGVwc0xlbmd0aCA+IDApIHtcbiAgICAgIGxhc3RTdGVwID0gbGFzdChzdGVwcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhc3RTdGVwO1xuICB9XG5cbiAgaXNNZXRhTGV2ZWwoKSB7XG4gICAgbGV0IG1ldGFMZXZlbDtcblxuICAgIGlmICh0aGlzLmNvbnN0cmFpbnRzICE9PSBudWxsKSB7XG4gICAgICBtZXRhTGV2ZWwgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICAgIG1ldGFMZXZlbCA9IGNvbnRleHQuaXNNZXRhTGV2ZWwoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWV0YUxldmVsO1xuICB9XG5cbiAgYWRkQXNzaWdubWVudChhc3NpZ25tZW50KSB7XG4gICAgdGhpcy5hc3NpZ25tZW50cy5wdXNoKGFzc2lnbm1lbnQpO1xuICB9XG5cbiAgYXNzaWduQXNzaWdubWVudHMoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXM7IC8vL1xuXG4gICAgdGhpcy5hc3NpZ25tZW50cy5mb3JFYWNoKChhc3NpZ25tZW50KSA9PiB7XG4gICAgICBhc3NpZ25tZW50KGNvbnRleHQpO1xuICAgIH0pO1xuXG4gICAgY2xlYXIodGhpcy5hc3NpZ25tZW50cyk7XG4gIH1cblxuICBhZGREZWNsYXJlZFZhcmlhYmxlKGRlY2xhcmVkVmFyaWFibGUpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZVN0cmluZyA9IGRlY2xhcmVkVmFyaWFibGUuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBBZGRpbmcgdGhlICcke2RlY2xhcmVkVmFyaWFibGVTdHJpbmd9JyBkZWNsYXJlZCB2YXJpYWJsZSB0byB0aGUgdGVtZXJpYyBjb250ZXh0Li4uYCk7XG5cbiAgICB0aGlzLmRlY2xhcmVkVmFyaWFibGVzLnB1c2goZGVjbGFyZWRWYXJpYWJsZSk7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5hZGRlZCB0aGUgJyR7ZGVjbGFyZWRWYXJpYWJsZVN0cmluZ30nIGRlY2xhcmVkIHZhcmlhYmxlIHRvIHRoZSB0ZW1lcmljIGNvbnRleHQuYCk7XG4gIH1cblxuICBhZGRDb25zdHJhaW50KGNvbnN0cmFpbnQpIHtcbiAgICBpZiAodGhpcy5jb25zdHJhaW50cyA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgICBjb250ZXh0LmFkZENvbnN0cmFpbnQoY29uc3RyYWludCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgY29uc3RyYWludEEgPSBjb25zdHJhaW50LCAvLy9cbiAgICAgICAgICBjb25zdHJhaW50U3RyaW5nID0gY29uc3RyYWludC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYEFkZGluZyB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQgdG8gdGhlIHRlbWVyaWMgY29udGV4dC4uLmApO1xuXG4gICAgY29uc3QgY29uc3RyYWludEIgPSB0aGlzLmNvbnN0cmFpbnRzLmZpbmQoKGNvbnN0cmFpbnQpID0+IHtcbiAgICAgIGNvbnN0IGNvbnN0cmFpbnRCID0gY29uc3RyYWludCwgLy8vXG4gICAgICAgICAgICBjb25zdHJhaW50QUVxdWFsVG9Bc3N1bXB0aW9uQiA9IGNvbnN0cmFpbnRBLmlzRXF1YWxUbyhjb25zdHJhaW50Qik7XG5cbiAgICAgIGlmIChjb25zdHJhaW50QUVxdWFsVG9Bc3N1bXB0aW9uQikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KSB8fCBudWxsO1xuXG4gICAgaWYgKGNvbnN0cmFpbnRCICE9PSBudWxsKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQgaGFzIGFscmVhZHkgYmVlbiBhZGRlZCB0byB0aGUgdGVtZXJpYyBjb250ZXh0LmApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbnN0cmFpbnRzLnB1c2goY29uc3RyYWludCk7XG4gICAgfVxuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4uYWRkZWQgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50IHRvIHRoZSB0ZW1lcmljIGNvbnRleHQuYCk7XG4gIH1cblxuICBhZGRHZW5lcmF0b3IoZ2VuZXJhdG9yKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRHZW5lcmF0b3IoZ2VuZXJhdG9yKTtcbiAgfVxuXG4gIGFkZENvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29udGV4dC5hZGRDb25zdHJ1Y3Rvcihjb25zdHJ1Y3Rvcik7XG4gIH1cblxuICBhZGRGYWN0T3JTdWJwcm9vZihmYWN0T3JTdWJwcm9vZikge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLCAvLy9cbiAgICAgICAgICBmYWN0T3JTdWJwcm9vZlN0cmluZyA9IGZhY3RPclN1YnByb29mLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgQWRkaW5nIHRoZSAnJHtmYWN0T3JTdWJwcm9vZlN0cmluZ30nIGZhY3Qgb3Igc3VicHJvb2YgdG8gdGhlIHRlbWVyaWMgY29udGV4dC4uLmApO1xuXG4gICAgdGhpcy5mYWN0T3JTdWJwcm9vZnMucHVzaChmYWN0T3JTdWJwcm9vZik7XG5cbiAgICBjb250ZXh0LmRlYnVnKGAuLi5hZGRlZCB0aGUgJyR7ZmFjdE9yU3VicHJvb2ZTdHJpbmd9JyBmYWN0IG9yIHN1YnByb29mIHRvIHRoZSB0ZW1lcmljIGNvbnRleHQuYCk7XG4gIH1cblxuICBmaW5kRGVjbGFyZWRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgIGNvbnN0IGRlY2xhcmVkVmFyaWFibGVzID0gdGhpcy5nZXREZWNsYXJlZFZhcmlhYmxlcygpLFxuICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGUgPSBkZWNsYXJlZFZhcmlhYmxlcy5maW5kKChkZWNsYXJlZFZhcmlhYmxlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YXJpYWJsZUNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aWZpZXIgPSBkZWNsYXJlZFZhcmlhYmxlLmNvbXBhcmVWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKTtcblxuICAgICAgICAgICAgaWYgKHZhcmlhYmxlQ29tcGFyZXNUb1ZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGU7XG4gIH1cblxuICBmaW5kRGVjbGFyZWRWYXJpYWJsZXNCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpIHtcbiAgICBsZXQgZGVjbGFyZWRWYXJpYWJsZXM7XG5cbiAgICBkZWNsYXJlZFZhcmlhYmxlcyA9IHRoaXMuZ2V0RGVjbGFyZWRWYXJpYWJsZXMoKTtcblxuICAgIGRlY2xhcmVkVmFyaWFibGVzID0gZGVjbGFyZWRWYXJpYWJsZXMuZmlsdGVyKChkZWNsYXJlZFZhcmlhYmxlKSA9PiB7XG4gICAgICBjb25zdCB2YXJpYWJsZUNvbXBhcmVzVG9WYXJpYWJsZUlkZW50aWZpZXIgPSBkZWNsYXJlZFZhcmlhYmxlLmNvbXBhcmVWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKTtcblxuICAgICAgaWYgKHZhcmlhYmxlQ29tcGFyZXNUb1ZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBkZWNsYXJlZFZhcmlhYmxlcztcbiAgfVxuXG4gIGZpbmRDb25zdHJhaW50QnlDb25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSkge1xuICAgIGxldCBjb25zdHJhaW50O1xuXG4gICAgaWYgKHRoaXMuY29uc3RyYWludHMgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0cmFpbnQgPSBzdXBlci5maW5kQ29uc3RyYWludEJ5Q29uc3RyYWludE5vZGUoY29uc3RyYWludE5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdHJhaW50ID0gdGhpcy5jb25zdHJhaW50cy5maW5kKChjb25zdHJhaW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnN0cmFpbnROb2RlTWF0Y2hlcyA9IGNvbnN0cmFpbnQubWF0Y2hDb25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSk7XG5cbiAgICAgICAgaWYgKGNvbnN0cmFpbnROb2RlTWF0Y2hlcykge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KSB8fCBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBjb25zdHJhaW50O1xuICB9XG5cbiAgaXNEZWNsYXJlZFZhcmlhYmxlUHJlc2VudEJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcikge1xuICAgIGNvbnN0IGRlY2xhcmVkVmFyaWFibGUgPSB0aGlzLmZpbmREZWNsYXJlZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKSxcbiAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlUHJlc2VudCA9IChkZWNsYXJlZFZhcmlhYmxlICE9PSBudWxsKTtcblxuICAgIHJldHVybiBkZWNsYXJlZFZhcmlhYmxlUHJlc2VudDtcbiAgfVxuXG4gIGlzVGVybUdyb3VuZGVkKHRlcm0pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcywgLy8vXG4gICAgICAgICAgZXF1aXZhbGVuY2VzID0gdGhpcy5nZXRFcXVpdmFsZW5jZXMoKSxcbiAgICAgICAgICBncm91bmRlZFRlcm1zID0gW10sXG4gICAgICAgICAgZGVmaW5lZFZhcmlhYmxlcyA9IFtdO1xuXG4gICAgc2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyhlcXVpdmFsZW5jZXMsIGdyb3VuZGVkVGVybXMsIGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gICAgY29uc3QgdGVybU1hdGNoZXNHcm91bmRlZFRlcm0gPSBncm91bmRlZFRlcm1zLnNvbWUoKGdyb3VuZGVkVGVybSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZ3JvdW5kZWRUZXJtTm9kZSA9IGdyb3VuZGVkVGVybS5nZXROb2RlKCksXG4gICAgICAgICAgICAgICAgICBncm91bmRlZFRlcm1Ob2RlTWF0Y2hlcyA9IHRlcm0ubWF0Y2hUZXJtTm9kZShncm91bmRlZFRlcm1Ob2RlKTtcblxuICAgICAgICAgICAgaWYgKGdyb3VuZGVkVGVybU5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHRlcm1Hcm91bmRlZCA9IHRlcm1NYXRjaGVzR3JvdW5kZWRUZXJtOyAvLy9cblxuICAgIHJldHVybiB0ZXJtR3JvdW5kZWQ7XG4gIH1cblxuICBzdGF0aWMgZnJvbU5vdGhpbmcoY29udGV4dCkge1xuICAgIGNvbnN0IGFzc2lnbm1lbnRzID0gW10sXG4gICAgICAgICAgZXF1aXZhbGVuY2VzID0gW10sXG4gICAgICAgICAgY29uc3RyYWludHMgPSBudWxsLFxuICAgICAgICAgIGZhY3RPclN1YnByb29mcyA9IFtdLFxuICAgICAgICAgIGRlY2xhcmVkVmFyaWFibGVzID0gW10sXG4gICAgICAgICAgdGVtZW5pY0NvbnRleHQgPSBuZXcgVGVtZW5pY0NvbnRleHQoY29udGV4dCwgY29uc3RyYWludHMsIGFzc2lnbm1lbnRzLCBlcXVpdmFsZW5jZXMsIGZhY3RPclN1YnByb29mcywgZGVjbGFyZWRWYXJpYWJsZXMpO1xuXG4gICAgcmV0dXJuIHRlbWVuaWNDb250ZXh0O1xuICB9XG5cbiAgc3RhdGljIGZyb21Db25zdHJhaW50cyhjb25zdHJhaW50cywgY29udGV4dCkge1xuICAgIGNvbnN0IGFzc2lnbm1lbnRzID0gW10sXG4gICAgICAgICAgZXF1aXZhbGVuY2VzID0gW10sXG4gICAgICAgICAgZmFjdE9yU3VicHJvb2ZzID0gW10sXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZXMgPSBbXSxcbiAgICAgICAgICB0ZW1lbmljQ29udGV4dCA9IG5ldyBUZW1lbmljQ29udGV4dChjb250ZXh0LCBjb25zdHJhaW50cywgYXNzaWdubWVudHMsIGVxdWl2YWxlbmNlcywgZmFjdE9yU3VicHJvb2ZzLCBkZWNsYXJlZFZhcmlhYmxlcyk7XG5cbiAgICByZXR1cm4gdGVtZW5pY0NvbnRleHQ7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVGVtZW5pY0NvbnRleHQ7Il0sIm5hbWVzIjpbImxhc3QiLCJwdXNoIiwiY2xlYXIiLCJhcnJheVV0aWxpdGllcyIsIlRlbWVuaWNDb250ZXh0IiwiQ29udGV4dCIsImNvbnRleHQiLCJjb25zdHJhaW50cyIsImFzc2lnbm1lbnRzIiwiZXF1aXZhbGVuY2VzIiwiZmFjdE9yU3VicHJvb2ZzIiwiZGVjbGFyZWRWYXJpYWJsZXMiLCJnZXRDb25zdHJhaW50cyIsImdldEFzc2lnbm1lbnRzIiwiZ2V0RXF1aXZhbGVuY2VzIiwiZ2V0Q29udGV4dCIsIm1lcmdlRXF1aXZhbGVuY2VzIiwiZ2V0RmFjdE9yU3VicHJvb2ZzIiwiZ2V0RGVjbGFyZWRWYXJpYWJsZXMiLCJzZXRFcXVpdmFsZW5jZXMiLCJnZXRGYWN0cyIsImZhY3RzIiwiZmlsdGVyIiwiZmFjdE9yU3VicHJvb2YiLCJmYWN0T3JTdWJwcm9vZkZhY3QiLCJpc0ZhY3QiLCJnZXRTdGVwcyIsInN0ZXBzIiwiZmFjdCIsImZhY3RTdGVwIiwiaXNTdGVwIiwiZ2V0TGFzdFN0ZXAiLCJsYXN0U3RlcCIsInN0ZXBzTGVuZ3RoIiwibGVuZ3RoIiwiaXNNZXRhTGV2ZWwiLCJtZXRhTGV2ZWwiLCJhZGRBc3NpZ25tZW50IiwiYXNzaWdubWVudCIsImFzc2lnbkFzc2lnbm1lbnRzIiwiZm9yRWFjaCIsImFkZERlY2xhcmVkVmFyaWFibGUiLCJkZWNsYXJlZFZhcmlhYmxlIiwiZGVjbGFyZWRWYXJpYWJsZVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZGVidWciLCJhZGRDb25zdHJhaW50IiwiY29uc3RyYWludCIsImNvbnN0cmFpbnRBIiwiY29uc3RyYWludFN0cmluZyIsImNvbnN0cmFpbnRCIiwiZmluZCIsImNvbnN0cmFpbnRBRXF1YWxUb0Fzc3VtcHRpb25CIiwiaXNFcXVhbFRvIiwiYWRkR2VuZXJhdG9yIiwiZ2VuZXJhdG9yIiwiYWRkQ29uc3RydWN0b3IiLCJjb25zdHJ1Y3RvciIsImFkZEZhY3RPclN1YnByb29mIiwiZmFjdE9yU3VicHJvb2ZTdHJpbmciLCJmaW5kRGVjbGFyZWRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyIiwidmFyaWFibGVJZGVudGlmaWVyIiwidmFyaWFibGVDb21wYXJlc1RvVmFyaWFibGVJZGVudGlmaWVyIiwiY29tcGFyZVZhcmlhYmxlSWRlbnRpZmllciIsImZpbmREZWNsYXJlZFZhcmlhYmxlc0J5VmFyaWFibGVJZGVudGlmaWVyIiwiZmluZENvbnN0cmFpbnRCeUNvbnN0cmFpbnROb2RlIiwiY29uc3RyYWludE5vZGUiLCJjb25zdHJhaW50Tm9kZU1hdGNoZXMiLCJtYXRjaENvbnN0cmFpbnROb2RlIiwiaXNEZWNsYXJlZFZhcmlhYmxlUHJlc2VudEJ5VmFyaWFibGVJZGVudGlmaWVyIiwiZGVjbGFyZWRWYXJpYWJsZVByZXNlbnQiLCJpc1Rlcm1Hcm91bmRlZCIsInRlcm0iLCJncm91bmRlZFRlcm1zIiwiZGVmaW5lZFZhcmlhYmxlcyIsInNlcGFyYXRlR3JvdW5kZWRUZXJtc0FuZERlZmluZWRWYXJpYWJsZXMiLCJ0ZXJtTWF0Y2hlc0dyb3VuZGVkVGVybSIsInNvbWUiLCJncm91bmRlZFRlcm0iLCJncm91bmRlZFRlcm1Ob2RlIiwiZ2V0Tm9kZSIsImdyb3VuZGVkVGVybU5vZGVNYXRjaGVzIiwibWF0Y2hUZXJtTm9kZSIsInRlcm1Hcm91bmRlZCIsImZyb21Ob3RoaW5nIiwidGVtZW5pY0NvbnRleHQiLCJmcm9tQ29uc3RyYWludHMiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWlUQTs7O2VBQUE7OzsyQkEvUytCO2dFQUVYOzhCQUV3RDs7Ozs7O0FBRTVFLE1BQU0sRUFBRUEsSUFBSSxFQUFFQyxJQUFJLEVBQUVDLEtBQUss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
@@ -12,6 +12,7 @@ const _occamlanguages = require("occam-languages");
12
12
  const _elements = /*#__PURE__*/ _interop_require_wildcard(require("../../elements"));
13
13
  const _assertion = /*#__PURE__*/ _interop_require_default(require("../assertion"));
14
14
  const _state = require("../../utilities/state");
15
+ const _context = require("../../utilities/context");
15
16
  function _interop_require_default(obj) {
16
17
  return obj && obj.__esModule ? obj : {
17
18
  default: obj
@@ -58,7 +59,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
58
59
  }
59
60
  return newObj;
60
61
  }
61
- const { cut, some } = _occamlanguages.continuationUtilities, { unbreakable } = _occamlanguages.breakPointUtilities;
62
+ const { unbreakable } = _occamlanguages.breakPointUtilities, { cut, all, some, isolate } = _occamlanguages.continuationUtilities;
62
63
  const _default = (0, _elements.define)(class SchemaAssertion extends _assertion.default {
63
64
  constructor(context, string, node, breakPoint, link, frame){
64
65
  super(context, string, node, breakPoint);
@@ -97,11 +98,21 @@ const _default = (0, _elements.define)(class SchemaAssertion extends _assertion.
97
98
  forward = cut(forward, back); ///
98
99
  const schemaAssertionString = this.getString(); ///
99
100
  context.trace(`Verifying the '${schemaAssertionString}' schema assertion...`);
100
- return (0, _state.declare)((state)=>{
101
- return this.validate(state, context, (schemaAssertion, context, back)=>{
102
- context.debug(`...verified the '${schemaAssertionString}' schema assertion.`);
103
- return forward(context, back);
104
- }, back);
101
+ return isolate((context, forward, back)=>{
102
+ return (0, _state.declare)((state)=>{
103
+ return this.validate(state, context, (schemaAssertion, context, back)=>{
104
+ return forward(back);
105
+ }, back);
106
+ });
107
+ }, context, (context, back)=>{
108
+ context.debug(`...verified the '${schemaAssertionString}' schema assertion.`);
109
+ return forward(context, back);
110
+ }, (exception)=>{
111
+ if (exception) {
112
+ return back(exception);
113
+ }
114
+ context.trace(`Unable to verify the '${schemaAssertionString}' schema assertion.`);
115
+ return back();
105
116
  });
106
117
  });
107
118
  apply = unbreakable(function(step, context, forward, back) {
@@ -116,64 +127,43 @@ const _default = (0, _elements.define)(class SchemaAssertion extends _assertion.
116
127
  }, forward, back);
117
128
  });
118
129
  validate(state, context, forward, back) {
119
- let validates;
120
- const schameAssertionString = this.getString(); ///
121
- context.trace(`Validating the '${schameAssertionString}' schame assertion...`);
122
- let assertion;
123
- assertion = this.findAssertion(context);
124
- if (assertion !== null) {
125
- const schameAssertion = assertion; ///
126
- context.debug(`The '${schameAssertionString}' schame assertion is already present.`);
127
- validates = continuation(schameAssertion, context);
128
- } else {
129
- assertion = this; ///
130
- const validateFrame = this.validateFrame.bind(this), validateLink = this.validateLink.bind(this);
131
- validates = all([
132
- validateFrame,
133
- validateLink
134
- ], state, context, (state, context)=>{
135
- let validates;
136
- const schameAssertion = assertion; ///
137
- validates = continuation(schameAssertion, context);
138
- return validates;
139
- });
140
- }
141
- if (validates) {
142
- context.debug(`...validated the '${schameAssertionString}' schame assertion.`);
143
- }
144
- return validates;
145
- }
146
- validateFrame(state, context, forward, back) {
147
- let frameValidates;
148
- const schameAssertionString = this.getString(); ///
149
- context.trace(`Validating the '${schameAssertionString}' schame assertion's frame...`);
150
- frameValidates = this.frame.validate(state, context, (frame, context)=>{
151
- let validates;
152
- this.frame = frame;
153
- validates = continuation(state, context);
154
- return validates;
155
- });
156
- if (frameValidates) {
157
- context.debug(`...validated the '${schameAssertionString}' schame assertion's frame.`);
158
- }
159
- return frameValidates;
130
+ const schemaAssertionString = this.getString(); ///
131
+ context.trace(`Validating the '${schemaAssertionString}' schema assertion...`);
132
+ return isolate((state, context, forward, back)=>{
133
+ return (0, _context.attempt)((context)=>{
134
+ const validateLink = this.validateLink.bind(this), validateFrame = this.validateFrame.bind(this);
135
+ return all([
136
+ validateLink,
137
+ validateFrame
138
+ ], state, context, (state, context, back)=>{
139
+ this.commit(context);
140
+ return forward(back);
141
+ }, back);
142
+ }, context);
143
+ }, state, context, (state, context, back)=>{
144
+ context.debug(`...validated the '${schemaAssertionString}' schema assertion.`);
145
+ return forward(context, back);
146
+ }, back);
160
147
  }
161
148
  validateLink(state, context, forward, back) {
162
- let linkValidates;
163
- const schameAssertionString = this.getString(); ///
164
- context.trace(`Validating the '${schameAssertionString}' schame assertion's link...`);
165
- linkValidates = this.link.validate(state, context, (link, context)=>{
166
- let validates;
149
+ const schemaAssertionString = this.getString(); ///
150
+ context.trace(`Validating the '${schemaAssertionString}' schema assertion's link...`);
151
+ return this.link.validate(state, context, (link, context, back)=>{
167
152
  this.link = link;
168
- validates = continuation(state, context);
169
- return validates;
170
- });
171
- if (linkValidates) {
172
- context.debug(`...validated the '${schameAssertionString}' schame assertion's link.`);
173
- }
174
- return linkValidates;
153
+ context.debug(`...validated the '${schemaAssertionString}' schema assertion's link.`);
154
+ return forward(state, context, back);
155
+ }, back);
156
+ }
157
+ validateFrame(state, context, forward, back) {
158
+ const schemaAssertionString = this.getString(); ///
159
+ context.trace(`Validating the '${schemaAssertionString}' schema assertion's frame...`);
160
+ return this.frame.validate(state, context, (frame, context, back)=>{
161
+ this.frame = frame;
162
+ context.debug(`...validated the '${schemaAssertionString}' schema assertion's frame.`);
163
+ return forward(state, context, back);
164
+ }, back);
175
165
  }
176
166
  static name = "SchemaAssertion";
177
167
  });
178
168
 
179
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zY2hlbWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZGVjbGFyZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RhdGVcIjtcblxuY29uc3QgeyBjdXQsIHNvbWUgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgdW5icmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBTY2hlbWFBc3NlcnRpb24gZXh0ZW5kcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxpbmssIGZyYW1lKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMubGluayA9IGxpbms7XG4gICAgdGhpcy5mcmFtZSA9IGZyYW1lO1xuICB9XG5cbiAgZ2V0TGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5saW5rO1xuICB9XG5cbiAgZ2V0RnJhbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWU7XG4gIH1cblxuICBnZXRTY2hlbWFBc3NlcnRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBzY2hlbWFBc3NlcnRpb25Ob2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIHNjaGVtYUFzc2VydGlvbk5vZGU7XG4gIH1cblxuICBnZXRBc3N1bXB0aW9ucygpIHsgcmV0dXJuIHRoaXMuZnJhbWUuZ2V0QXNzdW1wdGlvbnMoKTsgfVxuXG4gIGdldE1ldGF2YXJpYWJsZSgpIHsgcmV0dXJuIHRoaXMuZnJhbWUuZ2V0TWV0YXZhcmlhYmxlKCk7IH1cblxuICBnZXRJbXBsaWNpdEFzc3VtcHRpb25zKGNvbnRleHQpIHtcbiAgICBjb25zdCBpbXBsaWNpdEFzc3VtcHRpb25zID0gW10sXG4gICAgICAgICAgbWV0YXZhcmlhYmxlID0gdGhpcy5nZXRNZXRhdmFyaWFibGUoKTtcblxuICAgIGlmIChtZXRhdmFyaWFibGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHsgSW1wbGljaXRBc3N1bXB0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgICAgIGZhY3RzID0gY29udGV4dC5nZXRGYWN0cygpO1xuXG4gICAgICBmYWN0cy5mb3JFYWNoKChmYWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IHN0YXRlbWVudCA9IGZhY3QuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgICAgIGltcGxpY2l0QXNzdW1wdGlvbiA9IEltcGxpY2l0QXNzdW1wdGlvbi5mcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9uLnZlcmlmeShjb250ZXh0LCAoaW1wbGljaXRBc3N1bXB0aW9uLCBjb250ZXh0KSA9PiB0cnVlKSAgLy8vXG5cbiAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9ucy5wdXNoKGltcGxpY2l0QXNzdW1wdGlvbik7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW1wbGljaXRBc3N1bXB0aW9ucztcbiAgfVxuXG4gIHZlcmlmeSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCBzY2hlbWFBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c2NoZW1hQXNzZXJ0aW9uU3RyaW5nfScgc2NoZW1hIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHNjaGVtYUFzc2VydGlvbiwgY29udGV4dCAsIGJhY2spID0+IHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3NjaGVtYUFzc2VydGlvblN0cmluZ30nIHNjaGVtYSBhc3NlcnRpb24uYCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgYXBwbHkgPSB1bmJyZWFrYWJsZShmdW5jdGlvbiAoc3RlcCwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3Qgc2NoZW1hcyA9IGNvbnRleHQuZ2V0U2NoZW1hcygpLFxuICAgICAgICAgIHN0YXRlbWVudCA9IHN0ZXAuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgc2NoZW1hQXNzZXJ0aW9uID0gdGhpcywgLy8vXG4gICAgICAgICAgc2NoZW1hQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYEFwcGx5aW5nIHRoZSAnJHtzY2hlbWFBc3NlcnRpb25TdHJpbmd9JyBzY2hlbWEgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gc29tZShzY2hlbWFzLCAoc2NoZW1hLCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gc2NoZW1hLnVuaWZ5U3RhdGVtZW50QW5kU2NoZW1hQXNzZXJ0aW9uKHN0YXRlbWVudCwgc2NoZW1hQXNzZXJ0aW9uLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi5hcHBsaWVkIHRoZSAnJHtzY2hlbWFBc3NlcnRpb25TdHJpbmd9JyBzY2hlbWEgYXNzZXJ0aW9uLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgZm9yd2FyZCwgYmFjayk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IHZhbGlkYXRlcztcblxuICAgIGNvbnN0IHNjaGFtZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NjaGFtZUFzc2VydGlvblN0cmluZ30nIHNjaGFtZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIGxldCBhc3NlcnRpb247XG5cbiAgICBhc3NlcnRpb24gPSB0aGlzLmZpbmRBc3NlcnRpb24oY29udGV4dCk7XG5cbiAgICBpZiAoYXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzY2hhbWVBc3NlcnRpb24gPSBhc3NlcnRpb247ICAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3NjaGFtZUFzc2VydGlvblN0cmluZ30nIHNjaGFtZSBhc3NlcnRpb24gaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc2NoYW1lQXNzZXJ0aW9uLCBjb250ZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0aW9uID0gdGhpczsgIC8vL1xuXG4gICAgICBjb25zdCB2YWxpZGF0ZUZyYW1lID0gdGhpcy52YWxpZGF0ZUZyYW1lLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2YWxpZGF0ZUxpbmsgPSB0aGlzLnZhbGlkYXRlTGluay5iaW5kKHRoaXMpO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBhbGwoW1xuICAgICAgICB2YWxpZGF0ZUZyYW1lLFxuICAgICAgICB2YWxpZGF0ZUxpbmtcbiAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgICBjb25zdCBzY2hhbWVBc3NlcnRpb24gPSBhc3NlcnRpb247ICAvLy9cblxuICAgICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc2NoYW1lQXNzZXJ0aW9uLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzY2hhbWVBc3NlcnRpb25TdHJpbmd9JyBzY2hhbWUgYXNzZXJ0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZUZyYW1lKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IGZyYW1lVmFsaWRhdGVzO1xuXG4gICAgY29uc3Qgc2NoYW1lQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2NoYW1lQXNzZXJ0aW9uU3RyaW5nfScgc2NoYW1lIGFzc2VydGlvbidzIGZyYW1lLi4uYCk7XG5cbiAgICBmcmFtZVZhbGlkYXRlcyA9IHRoaXMuZnJhbWUudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChmcmFtZSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgdGhpcy5mcmFtZSA9IGZyYW1lO1xuXG4gICAgICB2YWxpZGF0ZXMgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gdmFsaWRhdGVzO1xuICAgIH0pO1xuXG4gICAgaWYgKGZyYW1lVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NjaGFtZUFzc2VydGlvblN0cmluZ30nIHNjaGFtZSBhc3NlcnRpb24ncyBmcmFtZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnJhbWVWYWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZUxpbmsoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgbGlua1ZhbGlkYXRlcztcblxuICAgIGNvbnN0IHNjaGFtZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NjaGFtZUFzc2VydGlvblN0cmluZ30nIHNjaGFtZSBhc3NlcnRpb24ncyBsaW5rLi4uYCk7XG5cbiAgICBsaW5rVmFsaWRhdGVzID0gdGhpcy5saW5rLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAobGluaywgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgdGhpcy5saW5rID0gbGluaztcblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICB9KTtcblxuICAgIGlmIChsaW5rVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NjaGFtZUFzc2VydGlvblN0cmluZ30nIHNjaGFtZSBhc3NlcnRpb24ncyBsaW5rLmApO1xuICAgIH1cblxuICAgIHJldHVybiBsaW5rVmFsaWRhdGVzO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlNjaGVtYUFzc2VydGlvblwiO1xufSk7XG4iXSwibmFtZXMiOlsiY3V0Iiwic29tZSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsInVuYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIlNjaGVtYUFzc2VydGlvbiIsIkFzc2VydGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsImxpbmsiLCJmcmFtZSIsImdldExpbmsiLCJnZXRGcmFtZSIsImdldFNjaGVtYUFzc2VydGlvbk5vZGUiLCJnZXROb2RlIiwic2NoZW1hQXNzZXJ0aW9uTm9kZSIsImdldEFzc3VtcHRpb25zIiwiZ2V0TWV0YXZhcmlhYmxlIiwiZ2V0SW1wbGljaXRBc3N1bXB0aW9ucyIsImltcGxpY2l0QXNzdW1wdGlvbnMiLCJtZXRhdmFyaWFibGUiLCJJbXBsaWNpdEFzc3VtcHRpb24iLCJlbGVtZW50cyIsImZhY3RzIiwiZ2V0RmFjdHMiLCJmb3JFYWNoIiwiZmFjdCIsInN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsImltcGxpY2l0QXNzdW1wdGlvbiIsImZyb21TdGF0ZW1lbnQiLCJ2ZXJpZnkiLCJwdXNoIiwiZm9yd2FyZCIsImJhY2siLCJzY2hlbWFBc3NlcnRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImRlY2xhcmUiLCJzdGF0ZSIsInZhbGlkYXRlIiwic2NoZW1hQXNzZXJ0aW9uIiwiZGVidWciLCJhcHBseSIsInN0ZXAiLCJzY2hlbWFzIiwiZ2V0U2NoZW1hcyIsInNjaGVtYSIsInVuaWZ5U3RhdGVtZW50QW5kU2NoZW1hQXNzZXJ0aW9uIiwidmFsaWRhdGVzIiwic2NoYW1lQXNzZXJ0aW9uU3RyaW5nIiwiYXNzZXJ0aW9uIiwiZmluZEFzc2VydGlvbiIsInNjaGFtZUFzc2VydGlvbiIsImNvbnRpbnVhdGlvbiIsInZhbGlkYXRlRnJhbWUiLCJiaW5kIiwidmFsaWRhdGVMaW5rIiwiYWxsIiwiZnJhbWVWYWxpZGF0ZXMiLCJsaW5rVmFsaWRhdGVzIiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBYUE7OztlQUFBOzs7Z0NBWDJEO2tFQUV0QztrRUFDQzt1QkFHRTs7Ozs7Ozs7Ozs7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
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi9zY2hlbWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IEFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZGVjbGFyZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RhdGVcIjtcbmltcG9ydCB7IGF0dGVtcHQgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcblxuY29uc3QgeyB1bmJyZWFrYWJsZSB9ID0gYnJlYWtQb2ludFV0aWxpdGllcyxcbiAgICAgIHsgY3V0LCBhbGwsIHNvbWUsIGlzb2xhdGUgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFNjaGVtYUFzc2VydGlvbiBleHRlbmRzIEFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbGluaywgZnJhbWUpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5saW5rID0gbGluaztcbiAgICB0aGlzLmZyYW1lID0gZnJhbWU7XG4gIH1cblxuICBnZXRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmxpbms7XG4gIH1cblxuICBnZXRGcmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZTtcbiAgfVxuXG4gIGdldFNjaGVtYUFzc2VydGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHNjaGVtYUFzc2VydGlvbk5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gc2NoZW1hQXNzZXJ0aW9uTm9kZTtcbiAgfVxuXG4gIGdldEFzc3VtcHRpb25zKCkgeyByZXR1cm4gdGhpcy5mcmFtZS5nZXRBc3N1bXB0aW9ucygpOyB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlKCkgeyByZXR1cm4gdGhpcy5mcmFtZS5nZXRNZXRhdmFyaWFibGUoKTsgfVxuXG4gIGdldEltcGxpY2l0QXNzdW1wdGlvbnMoY29udGV4dCkge1xuICAgIGNvbnN0IGltcGxpY2l0QXNzdW1wdGlvbnMgPSBbXSxcbiAgICAgICAgICBtZXRhdmFyaWFibGUgPSB0aGlzLmdldE1ldGF2YXJpYWJsZSgpO1xuXG4gICAgaWYgKG1ldGF2YXJpYWJsZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgeyBJbXBsaWNpdEFzc3VtcHRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICAgICAgZmFjdHMgPSBjb250ZXh0LmdldEZhY3RzKCk7XG5cbiAgICAgIGZhY3RzLmZvckVhY2goKGZhY3QpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhdGVtZW50ID0gZmFjdC5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9uID0gSW1wbGljaXRBc3N1bXB0aW9uLmZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICAgICAgICBpbXBsaWNpdEFzc3VtcHRpb24udmVyaWZ5KGNvbnRleHQsIChpbXBsaWNpdEFzc3VtcHRpb24sIGNvbnRleHQpID0+IHRydWUpICAvLy9cblxuICAgICAgICBpbXBsaWNpdEFzc3VtcHRpb25zLnB1c2goaW1wbGljaXRBc3N1bXB0aW9uKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBpbXBsaWNpdEFzc3VtcHRpb25zO1xuICB9XG5cbiAgdmVyaWZ5ID0gdW5icmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IHNjaGVtYUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzY2hlbWFBc3NlcnRpb25TdHJpbmd9JyBzY2hlbWEgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoc2NoZW1hQXNzZXJ0aW9uLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSk7XG4gICAgfSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzY2hlbWFBc3NlcnRpb25TdHJpbmd9JyBzY2hlbWEgYXNzZXJ0aW9uLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCAoZXhjZXB0aW9uKSA9PiB7XG4gICAgICBpZiAoZXhjZXB0aW9uKSB7XG4gICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke3NjaGVtYUFzc2VydGlvblN0cmluZ30nIHNjaGVtYSBhc3NlcnRpb24uYCk7XG5cbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGFwcGx5ID0gdW5icmVha2FibGUoZnVuY3Rpb24gKHN0ZXAsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IHNjaGVtYXMgPSBjb250ZXh0LmdldFNjaGVtYXMoKSxcbiAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGVwLmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgIHNjaGVtYUFzc2VydGlvbiA9IHRoaXMsIC8vL1xuICAgICAgICAgIHNjaGVtYUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBBcHBseWluZyB0aGUgJyR7c2NoZW1hQXNzZXJ0aW9uU3RyaW5nfScgc2NoZW1hIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHNvbWUoc2NoZW1hcywgKHNjaGVtYSwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHNjaGVtYS51bmlmeVN0YXRlbWVudEFuZFNjaGVtYUFzc2VydGlvbihzdGF0ZW1lbnQsIHNjaGVtYUFzc2VydGlvbiwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4uYXBwbGllZCB0aGUgJyR7c2NoZW1hQXNzZXJ0aW9uU3RyaW5nfScgc2NoZW1hIGFzc2VydGlvbi5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0sIGZvcndhcmQsIGJhY2spO1xuICB9KTtcblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHNjaGVtYUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3NjaGVtYUFzc2VydGlvblN0cmluZ30nIHNjaGVtYSBhc3NlcnRpb24uLi5gKTtcblxuICAgIHJldHVybiBpc29sYXRlKChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIGF0dGVtcHQoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgdmFsaWRhdGVMaW5rID0gdGhpcy52YWxpZGF0ZUxpbmsuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgdmFsaWRhdGVGcmFtZSA9IHRoaXMudmFsaWRhdGVGcmFtZS5iaW5kKHRoaXMpO1xuXG4gICAgICAgIHJldHVybiBhbGwoW1xuICAgICAgICAgIHZhbGlkYXRlTGluayxcbiAgICAgICAgICB2YWxpZGF0ZUZyYW1lXG4gICAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICB0aGlzLmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2NoZW1hQXNzZXJ0aW9uU3RyaW5nfScgc2NoZW1hIGFzc2VydGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZUxpbmsoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzY2hlbWFBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzY2hlbWFBc3NlcnRpb25TdHJpbmd9JyBzY2hlbWEgYXNzZXJ0aW9uJ3MgbGluay4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMubGluay52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGxpbmssIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHRoaXMubGluayA9IGxpbms7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2NoZW1hQXNzZXJ0aW9uU3RyaW5nfScgc2NoZW1hIGFzc2VydGlvbidzIGxpbmsuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlRnJhbWUoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzY2hlbWFBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzY2hlbWFBc3NlcnRpb25TdHJpbmd9JyBzY2hlbWEgYXNzZXJ0aW9uJ3MgZnJhbWUuLi5gKTtcblxuICAgIHJldHVybiB0aGlzLmZyYW1lLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoZnJhbWUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHRoaXMuZnJhbWUgPSBmcmFtZTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzY2hlbWFBc3NlcnRpb25TdHJpbmd9JyBzY2hlbWEgYXNzZXJ0aW9uJ3MgZnJhbWUuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTY2hlbWFBc3NlcnRpb25cIjtcbn0pO1xuIl0sIm5hbWVzIjpbInVuYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImN1dCIsImFsbCIsInNvbWUiLCJpc29sYXRlIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiU2NoZW1hQXNzZXJ0aW9uIiwiQXNzZXJ0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwibGluayIsImZyYW1lIiwiZ2V0TGluayIsImdldEZyYW1lIiwiZ2V0U2NoZW1hQXNzZXJ0aW9uTm9kZSIsImdldE5vZGUiLCJzY2hlbWFBc3NlcnRpb25Ob2RlIiwiZ2V0QXNzdW1wdGlvbnMiLCJnZXRNZXRhdmFyaWFibGUiLCJnZXRJbXBsaWNpdEFzc3VtcHRpb25zIiwiaW1wbGljaXRBc3N1bXB0aW9ucyIsIm1ldGF2YXJpYWJsZSIsIkltcGxpY2l0QXNzdW1wdGlvbiIsImVsZW1lbnRzIiwiZmFjdHMiLCJnZXRGYWN0cyIsImZvckVhY2giLCJmYWN0Iiwic3RhdGVtZW50IiwiZ2V0U3RhdGVtZW50IiwiaW1wbGljaXRBc3N1bXB0aW9uIiwiZnJvbVN0YXRlbWVudCIsInZlcmlmeSIsInB1c2giLCJmb3J3YXJkIiwiYmFjayIsInNjaGVtYUFzc2VydGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZGVjbGFyZSIsInN0YXRlIiwidmFsaWRhdGUiLCJzY2hlbWFBc3NlcnRpb24iLCJkZWJ1ZyIsImV4Y2VwdGlvbiIsImFwcGx5Iiwic3RlcCIsInNjaGVtYXMiLCJnZXRTY2hlbWFzIiwic2NoZW1hIiwidW5pZnlTdGF0ZW1lbnRBbmRTY2hlbWFBc3NlcnRpb24iLCJhdHRlbXB0IiwidmFsaWRhdGVMaW5rIiwiYmluZCIsInZhbGlkYXRlRnJhbWUiLCJjb21taXQiLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFjQTs7O2VBQUE7OztnQ0FaMkQ7a0VBRXRDO2tFQUNDO3VCQUdFO3lCQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV4QixNQUFNLEVBQUVBLFdBQVcsRUFBRSxHQUFHQyxtQ0FBbUIsRUFDckMsRUFBRUMsR0FBRyxFQUFFQyxHQUFHLEVBQUVDLElBQUksRUFBRUMsT0FBTyxFQUFFLEdBQUdDLHFDQUFxQjtNQUV6RCxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLHdCQUF3QkMsa0JBQVM7SUFDM0QsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxJ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
@@ -220,4 +220,4 @@ const _default = (0, _elements.define)(class Axiom extends _claim.default {
220
220
  }
221
221
  });
222
222
 
223
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2NsYWltL2F4aW9tLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBDbGFpbSBmcm9tIFwiLi4vY2xhaW1cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyB0ZXJtc1N0cmluZ0Zyb21UZXJtcyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBqb2luLCBlbmNsb3NlLCByZWNvbmNpbGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcblxuY29uc3QgeyBicmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXMsXG4gICAgICB7IGN1dCwgYWxsLCBpc29sYXRlLCBiYWNrd2FyZHNFdmVyeSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgQXhpb20gZXh0ZW5kcyBDbGFpbSB7XG4gIGdldEF4aW9tTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgYXhpb21Ob2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gYXhpb21Ob2RlO1xuICB9XG5cbiAgaXNTYXRpc2ZpYWJsZSgpIHtcbiAgICBjb25zdCBzaWduYXR1cmUgPSB0aGlzLmdldFNpZ25hdHVyZSgpLFxuICAgICAgICAgIHNhdGlzZmlhYmxlID0gKHNpZ25hdHVyZSAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gc2F0aXNmaWFibGU7XG4gIH1cblxuICB2ZXJpZnkgPSBicmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IGF4aW9tU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIGVuY2xvc2UoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgdmVyaWZ5UHJvb2YgPSB0aGlzLnZlcmlmeVByb29mLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZlcmlmeUxhYmVscyA9IHRoaXMudmVyaWZ5TGFiZWxzLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZlcmlmeVNpZ25hdHVyZSA9IHRoaXMudmVyaWZ5U2lnbmF0dXJlLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZlcmlmeURlZHVjdGlvbiA9IHRoaXMudmVyaWZ5RGVkdWN0aW9uLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZlcmlmeVN1cHBvc2l0aW9ucyA9IHRoaXMudmVyaWZ5U3VwcG9zaXRpb25zLmJpbmQodGhpcyk7XG5cbiAgICAgICAgcmV0dXJuIGFsbChbXG4gICAgICAgICAgdmVyaWZ5TGFiZWxzLFxuICAgICAgICAgIHZlcmlmeVNpZ25hdHVyZSxcbiAgICAgICAgICB2ZXJpZnlTdXBwb3NpdGlvbnMsXG4gICAgICAgICAgdmVyaWZ5RGVkdWN0aW9uLFxuICAgICAgICAgIHZlcmlmeVByb29mXG4gICAgICAgIF0sIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IGF4aW9tID0gdGhpczsgLy8vXG5cbiAgICAgIGNvbnRleHQuYWRkQXhpb20oYXhpb20pO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmFibGUgdG8gdmVyaWZ5IHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH0pO1xuICB9KTtcblxuICBhcHBseSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCBheGlvbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYEFwcGx5aW5nIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCBhcHBseURlZHVjdGlvbiA9IHRoaXMuYXBwbHlEZWR1Y3Rpb24uYmluZCh0aGlzKSxcbiAgICAgICAgYXBwbHlTdXBwb3NpdGlvbnMgPSB0aGlzLmFwcGx5U3VwcG9zaXRpb25zLmJpbmQodGhpcyk7XG5cbiAgICAgIHJldHVybiByZWNvbmNpbGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgcmV0dXJuIGFsbChbXG4gICAgICAgICAgYXBwbHlEZWR1Y3Rpb24sXG4gICAgICAgICAgYXBwbHlTdXBwb3NpdGlvbnNcbiAgICAgICAgXSwgc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCAoc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29tcGxleFN1YnN0aXR1dGlvbnNVbnNvbHZlZCA9IGNvbnRleHQuYXJlQ29tcGxleFN1YnN0aXR1dGlvbnNVbnNvbHZlZCgpO1xuXG4gICAgICAgICAgaWYgKGNvbXBsZXhTdWJzdGl0dXRpb25zVW5zb2x2ZWQpIHtcbiAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYFRoZXJlIGFyZSB1bnNvbHZlZCBjb21wbGV4IHN1YnN0aXR1dGlvbnMuYCk7XG5cbiAgICAgICAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgY29udGV4dClcbiAgICB9LCBzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIChzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLmFwcGxpZWQgdGhlICcke2F4aW9tU3RyaW5nfScgYXhpb20uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIChleGNlcHRpb24pID0+IHtcbiAgICAgIGlmIChleGNlcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIGJhY2soZXhjZXB0aW9uKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC50cmFjZShgVW5hYmxlIHRvIGFwcGx5IHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH0pO1xuICB9KTtcblxuICB2ZXJpZnlTaWduYXR1cmUoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHNhdGlzZmlhYmxlID0gdGhpcy5pc1NhdGlzZmlhYmxlKCk7XG5cbiAgICBpZiAoIXNhdGlzZmlhYmxlKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBzaWduYXR1cmUgPSB0aGlzLmdldFNpZ25hdHVyZSgpLFxuICAgICAgICAgIGF4aW9tU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2F4aW9tU3RyaW5nfScgYXhpb20ncyBzaWduYXR1cmUuLi5gKTtcblxuICAgIHJldHVybiBzaWduYXR1cmUudmVyaWZ5KGNvbnRleHQsIChiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LnRyYWNlKGAuLi52ZXJpZmllZCB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbSdzIHNpZ25hdHVyZS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB1bmlmeVRlcm1zKHRlcm1zLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgcXVvdGVkID0gdHJ1ZSxcbiAgICAgICAgICB0ZXJtc1N0cmluZyA9IHRlcm1zU3RyaW5nRnJvbVRlcm1zKHRlcm1zLCBxdW90ZWQpLFxuICAgICAgICAgIGF4aW9tU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJHt0ZXJtc1N0cmluZ30gdGVybXMgd2l0aCB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbS4uLmApO1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlID0gdGhpcy5nZXRTaWduYXR1cmUoKTtcblxuICAgIHJldHVybiBzaWduYXR1cmUudW5pZnlUZXJtcyh0ZXJtcywgY29udGV4dCwgKHRlcm1zVW5pZnkpID0+IHtcbiAgICAgIGlmICh0ZXJtc1VuaWZ5KSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICR7dGVybXNTdHJpbmd9IHRlcm1zIHdpdGggdGhlICcke2F4aW9tU3RyaW5nfScgYXhpb20uLi5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih0ZXJtc1VuaWZ5KTtcbiAgICB9KTtcbiAgfVxuXG4gIHVuaWZ5Q2xhaW0oY2xhaW0sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgY2xhaW1VbmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBheGlvbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIGNsYWltU3RyaW5nID0gY2xhaW0uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSB3aXRoIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tLi4uYCk7XG5cbiAgICByZXR1cm4gcmVjb25jaWxlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBkZWR1Y3Rpb24gPSBjbGFpbS5nZXREZWR1Y3Rpb24oKTtcblxuICAgICAgcmV0dXJuIHRoaXMudW5pZnlEZWR1Y3Rpb24oZGVkdWN0aW9uLCBjb250ZXh0LCAoZGVkdWN0aW9uVW5pZmllcykgPT4ge1xuICAgICAgICBpZiAoIWRlZHVjdGlvblVuaWZpZXMpIHtcbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKGNsYWltVW5pZmllcyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdXBwb3NpdGlvbnMgPSBjbGFpbS5nZXRTdXBwb3NpdGlvbnMoKTtcblxuICAgICAgICByZXR1cm4gdGhpcy51bmlmeVN1cHBvc2l0aW9ucyhzdXBwb3NpdGlvbnMsIGNvbnRleHQsIChzdXBwb3NpdGlvbnNVbmlmeSkgPT4ge1xuICAgICAgICAgIGlmIChzdXBwb3NpdGlvbnNVbmlmeSkge1xuICAgICAgICAgICAgY2xhaW1VbmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoY2xhaW1VbmlmaWVzKSB7XG4gICAgICAgICAgICBjb250ZXh0LmNvbW1pdCgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChjbGFpbVVuaWZpZXMpIHtcbiAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0gd2l0aCB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbS5gKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKGNsYWltVW5pZmllcyk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICB1bmlmeURlZHVjdGlvbihkZWR1Y3Rpb24sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgZGVkdWN0aW9uVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgZ2VuZXJhbERlZHVjdGlvbiA9IHRoaXMuZ2V0RGVkdWN0aW9uKCksIC8vL1xuICAgICAgICAgIHNwZWNpZmljRGVkdWN0aW9uID0gZGVkdWN0aW9uLCAgLy8vXG4gICAgICAgICAgZ2VuZXJhbERlZHVjdGlvblN0cmluZyA9IGdlbmVyYWxEZWR1Y3Rpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc3BlY2lmaWNEZWR1Y3Rpb25TdHJpbmcgPSBzcGVjaWZpY0RlZHVjdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzcGVjaWZpY0RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbiB3aXRoIHRoZSAnJHtnZW5lcmFsRGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBzcGVjaWZpY0RlZHVjdGlvbkNvbnRleHQgPSBzcGVjaWZpY0RlZHVjdGlvbi5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZ2VuZXJhbERlZHVjdGlvbkNvbnRleHQgPSBnZW5lcmFsRGVkdWN0aW9uLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBzcGVjaWZpY0RlZHVjdGlvbkNvbnRleHQsICAvLy9cbiAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IGdlbmVyYWxEZWR1Y3Rpb25Db250ZXh0OyAvLy9cblxuICAgIHJldHVybiBqb2luKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgIHJldHVybiByZWNvbmNpbGUoKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBzdGF0ZW1lbnQgPSBzcGVjaWZpY0RlZHVjdGlvbi5nZXRTdGF0ZW1lbnQoKTtcblxuICAgICAgICBkZWR1Y3Rpb24gPSBnZW5lcmFsRGVkdWN0aW9uOyAvLy9cblxuICAgICAgICByZXR1cm4gZGVkdWN0aW9uLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKHN0YXRlbWVudFVuaWZpZXMpID0+IHtcbiAgICAgICAgICBpZiAoc3RhdGVtZW50VW5pZmllcykge1xuICAgICAgICAgICAgZGVkdWN0aW9uVW5pZmllcyA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGRlZHVjdGlvblVuaWZpZXMpIHtcbiAgICAgICAgICAgIHNwZWNpZmljQ29udGV4dC5jb21taXQoY29udGV4dCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGRlZHVjdGlvblVuaWZpZXMpIHtcbiAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3NwZWNpZmljRGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uIHdpdGggdGhlICcke2dlbmVyYWxEZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihkZWR1Y3Rpb25VbmlmaWVzKTtcbiAgICAgICAgfSk7XG4gICAgICB9LCBzcGVjaWZpY0NvbnRleHQpO1xuICAgIH0sIHNwZWNpZmljQ29udGV4dCwgY29udGV4dCk7XG4gIH1cblxuICB1bmlmeVN1cHBvc2l0aW9uKHNwZWNpZmljU3VwcG9zaXRpb24sIGdlbmVyYWxTdXBwb3NpdGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBzdXBwb3NpdGlvblVuaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGdlbmVyYWxTdXBwb3NpdGlvblN0cmluZyA9IGdlbmVyYWxTdXBwb3NpdGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzcGVjaWZpY1N1cHBvc2l0aW9uU3RyaW5nID0gc3BlY2lmaWNTdXBwb3NpdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzcGVjaWZpY1N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24gd2l0aCB0aGUgJyR7Z2VuZXJhbFN1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uLi5gKTtcblxuICAgIGNvbnN0IHNwZWNpZmljU3VwcG9zaXRpb25Db250ZXh0ID0gc3BlY2lmaWNTdXBwb3NpdGlvbi5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZ2VuZXJhbFN1cHBvc2l0aW9uQ29udGV4dCA9IGdlbmVyYWxTdXBwb3NpdGlvbi5nZXRDb250ZXh0KCksXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gc3BlY2lmaWNTdXBwb3NpdGlvbkNvbnRleHQsICAvLy9cbiAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IGdlbmVyYWxTdXBwb3NpdGlvbkNvbnRleHQ7IC8vL1xuXG4gICAgcmV0dXJuIGpvaW4oKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgcmV0dXJuIHJlY29uY2lsZSgoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHN0YXRlbWVudCA9IHNwZWNpZmljU3VwcG9zaXRpb24uZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgICAgIHN1cHBvc2l0aW9uID0gZ2VuZXJhbFN1cHBvc2l0aW9uOyAvLy9cblxuICAgICAgICByZXR1cm4gc3VwcG9zaXRpb24udW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoc3RhdGVtZW50VW5pZmllcykgPT4ge1xuICAgICAgICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgICAgICBzdXBwb3NpdGlvblVuaWZpZXMgPSB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChzdXBwb3NpdGlvblVuaWZpZXMpIHtcbiAgICAgICAgICAgIHNwZWNpZmljQ29udGV4dC5jb21taXQoY29udGV4dCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHN1cHBvc2l0aW9uVW5pZmllcykge1xuICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3BlY2lmaWNTdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uIHdpdGggdGhlICcke2dlbmVyYWxTdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLmApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VwcG9zaXRpb25VbmlmaWVzKTtcbiAgICAgICAgfSk7XG4gICAgICB9LCBzcGVjaWZpY0NvbnRleHQpO1xuICAgIH0sIHNwZWNpZmljQ29udGV4dCwgY29udGV4dCk7XG4gIH1cblxuICB1bmlmeVN1cHBvc2l0aW9ucyhzdXBwb3NpdGlvbnMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgc3VwcG9zaXRpb25zVW5pZnkgPSBmYWxzZTtcblxuICAgIGNvbnN0IHNwZWNpZmljU3VwcG9zaXRpb25zID0gc3VwcG9zaXRpb25zLCAgLy8vXG4gICAgICAgICAgc3BlY2lmaWNTdXBwb3NpdGlvbnNMZW5ndGggPSBzcGVjaWZpY1N1cHBvc2l0aW9ucy5sZW5ndGg7XG5cbiAgICBzdXBwb3NpdGlvbnMgPSB0aGlzLmdldFN1cHBvc2l0aW9ucygpO1xuXG4gICAgY29uc3QgZ2VuZXJhbFN1cHBvc2l0aW9ucyA9IHN1cHBvc2l0aW9ucywgLy8vXG4gICAgICAgICAgZ2VuZXJhbFN1cHBvc2l0aW9uc0xlbmd0aCA9IGdlbmVyYWxTdXBwb3NpdGlvbnMubGVuZ3RoO1xuXG4gICAgaWYgKGdlbmVyYWxTdXBwb3NpdGlvbnNMZW5ndGggIT09IHNwZWNpZmljU3VwcG9zaXRpb25zTGVuZ3RoKSB7XG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHN1cHBvc2l0aW9uc1VuaWZ5KTtcbiAgICB9XG5cbiAgICBsZXQgaW5kZXggPSBzcGVjaWZpY1N1cHBvc2l0aW9uc0xlbmd0aDtcblxuICAgIHJldHVybiBiYWNrd2FyZHNFdmVyeShnZW5lcmFsU3VwcG9zaXRpb25zLCAoZ2VuZXJhbFN1cHBvc2l0aW9uLCBjb250aW51YXRpb24pID0+IHtcbiAgICAgIGluZGV4LS07XG5cbiAgICAgIGNvbnN0IHNwZWNpZmljU3VwcG9zaXRpb24gPSBzcGVjaWZpY1N1cHBvc2l0aW9uc1tpbmRleF07XG5cbiAgICAgIHJldHVybiB0aGlzLnVuaWZ5U3VwcG9zaXRpb24oc3BlY2lmaWNTdXBwb3NpdGlvbiwgZ2VuZXJhbFN1cHBvc2l0aW9uLCBjb250ZXh0LCBjb250aW51YXRpb24pO1xuICAgIH0sIGNvbnRpbnVhdGlvbik7XG4gIH1cblxuICB1bmlmeVNpZ25hdHVyZUFzc2VydGlvbihzaWduYXR1cmVBc3NlcnRpb24sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgc2lnbmF0dXJlQXNzZXJ0aW9uVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgYXhpb21TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSBzaWduYXR1cmVBc3NlcnRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbiB3aXRoIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tLi4uYCk7XG5cbiAgICBjb25zdCB0ZXJtcyA9IHNpZ25hdHVyZUFzc2VydGlvbi5nZXRUZXJtcygpLFxuICAgICAgICAgIHNpZ25hdHVyZSA9IHRoaXMuZ2V0U2lnbmF0dXJlKCk7XG5cbiAgICByZXR1cm4gc2lnbmF0dXJlLnVuaWZ5VGVybXModGVybXMsIGNvbnRleHQsICh0ZXJtc1VuaWZ5KSA9PiB7XG4gICAgICBpZiAodGVybXNVbmlmeSkge1xuICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25VbmlmaWVzID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNpZ25hdHVyZUFzc2VydGlvblVuaWZpZXMpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbiB3aXRoIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHNpZ25hdHVyZUFzc2VydGlvblVuaWZpZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkF4aW9tXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHsgcmV0dXJuIENsYWltLmZyb21KU09OKEF4aW9tLCBqc29uLCBjb250ZXh0KTsgfVxufSk7XG4iXSwibmFtZXMiOlsiYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImN1dCIsImFsbCIsImlzb2xhdGUiLCJiYWNrd2FyZHNFdmVyeSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImRlZmluZSIsIkF4aW9tIiwiQ2xhaW0iLCJnZXRBeGlvbU5vZGUiLCJub2RlIiwiZ2V0Tm9kZSIsImF4aW9tTm9kZSIsImlzU2F0aXNmaWFibGUiLCJzaWduYXR1cmUiLCJnZXRTaWduYXR1cmUiLCJzYXRpc2ZpYWJsZSIsInZlcmlmeSIsImNvbnRleHQiLCJmb3J3YXJkIiwiYmFjayIsImF4aW9tU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJlbmNsb3NlIiwidmVyaWZ5UHJvb2YiLCJiaW5kIiwidmVyaWZ5TGFiZWxzIiwidmVyaWZ5U2lnbmF0dXJlIiwidmVyaWZ5RGVkdWN0aW9uIiwidmVyaWZ5U3VwcG9zaXRpb25zIiwiYXhpb20iLCJhZGRBeGlvbSIsImRlYnVnIiwiZXhjZXB0aW9uIiwiYXBwbHkiLCJzdGVwIiwiZmFjdE9yU3VicHJvb2ZzIiwiYXBwbHlEZWR1Y3Rpb24iLCJhcHBseVN1cHBvc2l0aW9ucyIsInJlY29uY2lsZSIsImNvbXBsZXhTdWJzdGl0dXRpb25zVW5zb2x2ZWQiLCJhcmVDb21wbGV4U3Vic3RpdHV0aW9uc1Vuc29sdmVkIiwidW5pZnlUZXJtcyIsInRlcm1zIiwicXVvdGVkIiwidGVybXNTdHJpbmciLCJ0ZXJtc1N0cmluZ0Zyb21UZXJtcyIsInRlcm1zVW5pZnkiLCJjb250aW51YXRpb24iLCJ1bmlmeUNsYWltIiwiY2xhaW0iLCJjbGFpbVVuaWZpZXMiLCJjbGFpbVN0cmluZyIsImRlZHVjdGlvbiIsImdldERlZHVjdGlvbiIsInVuaWZ5RGVkdWN0aW9uIiwiZGVkdWN0aW9uVW5pZmllcyIsInN1cHBvc2l0aW9ucyIsImdldFN1cHBvc2l0aW9ucyIsInVuaWZ5U3VwcG9zaXRpb25zIiwic3VwcG9zaXRpb25zVW5pZnkiLCJjb21taXQiLCJnZW5lcmFsRGVkdWN0aW9uIiwic3BlY2lmaWNEZWR1Y3Rpb24iLCJnZW5lcmFsRGVkdWN0aW9uU3RyaW5nIiwic3BlY2lmaWNEZWR1Y3Rpb25TdHJpbmciLCJzcGVjaWZpY0RlZHVjdGlvbkNvbnRleHQiLCJnZXRDb250ZXh0IiwiZ2VuZXJhbERlZHVjdGlvbkNvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJnZW5lcmFsQ29udGV4dCIsImpvaW4iLCJzdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJ1bmlmeVN0YXRlbWVudCIsInN0YXRlbWVudFVuaWZpZXMiLCJ1bmlmeVN1cHBvc2l0aW9uIiwic3BlY2lmaWNTdXBwb3NpdGlvbiIsImdlbmVyYWxTdXBwb3NpdGlvbiIsInN1cHBvc2l0aW9uVW5pZmllcyIsImdlbmVyYWxTdXBwb3NpdGlvblN0cmluZyIsInNwZWNpZmljU3VwcG9zaXRpb25TdHJpbmciLCJzcGVjaWZpY1N1cHBvc2l0aW9uQ29udGV4dCIsImdlbmVyYWxTdXBwb3NpdGlvbkNvbnRleHQiLCJzdXBwb3NpdGlvbiIsInNwZWNpZmljU3VwcG9zaXRpb25zIiwic3BlY2lmaWNTdXBwb3NpdGlvbnNMZW5ndGgiLCJsZW5ndGgiLCJnZW5lcmFsU3VwcG9zaXRpb25zIiwiZ2VuZXJhbFN1cHBvc2l0aW9uc0xlbmd0aCIsImluZGV4IiwidW5pZnlTaWduYXR1cmVBc3NlcnRpb24iLCJzaWduYXR1cmVBc3NlcnRpb24iLCJzaWduYXR1cmVBc3NlcnRpb25VbmlmaWVzIiwic2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0VGVybXMiLCJuYW1lIiwiZnJvbUpTT04iLCJqc29uIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFhQTs7O2VBQUE7OztnQ0FYMkQ7OERBRXpDOzBCQUVLO3dCQUNjO3lCQUNJOzs7Ozs7QUFFekMsTUFBTSxFQUFFQSxTQUFTLEVBQUUsR0FBR0MsbUNBQW1CLEVBQ25DLEVBQUVDLEdBQUcsRUFBRUMsR0FBRyxFQUFFQyxPQUFPLEVBQUVDLGNBQWMsRUFBRSxHQUFHQyxxQ0FBcUI7TUFFbkUsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxjQUFjQyxjQUFLO0lBQzdDQyxlQUFlO1FBQ2IsTUFBTUMsT0FBTyxJQUFJLENBQUNDLE9BQU8sSUFDbkJDLFlBQVlGLE1BQU0sR0FBRztRQUUzQixPQUFPRTtJQUNUO0lBRUFDLGdCQUFnQjtRQUNkLE1BQU1DLFlBQVksSUFBSSxDQUFDQyxZQUFZLElBQzdCQyxjQUFlRixjQUFjO1FBRW5DLE9BQU9FO0lBQ1Q7SUFFQUMsU0FBU2xCLFVBQVUsU0FBVW1CLE9BQU8sRUFBRUMsT0FBTyxFQUFFQyxJQUFJO1FB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
223
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2NsYWltL2F4aW9tLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBDbGFpbSBmcm9tIFwiLi4vY2xhaW1cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyB0ZXJtc1N0cmluZ0Zyb21UZXJtcyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBqb2luLCBlbmNsb3NlLCByZWNvbmNpbGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcblxuY29uc3QgeyBicmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXMsXG4gICAgICB7IGN1dCwgYWxsLCBpc29sYXRlLCBiYWNrd2FyZHNFdmVyeSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgQXhpb20gZXh0ZW5kcyBDbGFpbSB7XG4gIGdldEF4aW9tTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgYXhpb21Ob2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gYXhpb21Ob2RlO1xuICB9XG5cbiAgaXNTYXRpc2ZpYWJsZSgpIHtcbiAgICBjb25zdCBzaWduYXR1cmUgPSB0aGlzLmdldFNpZ25hdHVyZSgpLFxuICAgICAgICAgIHNhdGlzZmlhYmxlID0gKHNpZ25hdHVyZSAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gc2F0aXNmaWFibGU7XG4gIH1cblxuICB2ZXJpZnkgPSBicmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IGF4aW9tU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIGVuY2xvc2UoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgdmVyaWZ5UHJvb2YgPSB0aGlzLnZlcmlmeVByb29mLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZlcmlmeUxhYmVscyA9IHRoaXMudmVyaWZ5TGFiZWxzLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZlcmlmeVNpZ25hdHVyZSA9IHRoaXMudmVyaWZ5U2lnbmF0dXJlLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZlcmlmeURlZHVjdGlvbiA9IHRoaXMudmVyaWZ5RGVkdWN0aW9uLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZlcmlmeVN1cHBvc2l0aW9ucyA9IHRoaXMudmVyaWZ5U3VwcG9zaXRpb25zLmJpbmQodGhpcyk7XG5cbiAgICAgICAgcmV0dXJuIGFsbChbXG4gICAgICAgICAgdmVyaWZ5TGFiZWxzLFxuICAgICAgICAgIHZlcmlmeVNpZ25hdHVyZSxcbiAgICAgICAgICB2ZXJpZnlTdXBwb3NpdGlvbnMsXG4gICAgICAgICAgdmVyaWZ5RGVkdWN0aW9uLFxuICAgICAgICAgIHZlcmlmeVByb29mXG4gICAgICAgIF0sIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IGF4aW9tID0gdGhpczsgLy8vXG5cbiAgICAgIGNvbnRleHQuYWRkQXhpb20oYXhpb20pO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmFibGUgdG8gdmVyaWZ5IHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tLmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH0pO1xuICB9KTtcblxuICBhcHBseSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCBheGlvbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYEFwcGx5aW5nIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCBhcHBseURlZHVjdGlvbiA9IHRoaXMuYXBwbHlEZWR1Y3Rpb24uYmluZCh0aGlzKSxcbiAgICAgICAgICAgIGFwcGx5U3VwcG9zaXRpb25zID0gdGhpcy5hcHBseVN1cHBvc2l0aW9ucy5iaW5kKHRoaXMpO1xuXG4gICAgICByZXR1cm4gcmVjb25jaWxlKChjb250ZXh0KSA9PiB7XG4gICAgICAgIHJldHVybiBhbGwoW1xuICAgICAgICAgIGFwcGx5RGVkdWN0aW9uLFxuICAgICAgICAgIGFwcGx5U3VwcG9zaXRpb25zXG4gICAgICAgIF0sIHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvbXBsZXhTdWJzdGl0dXRpb25zVW5zb2x2ZWQgPSBjb250ZXh0LmFyZUNvbXBsZXhTdWJzdGl0dXRpb25zVW5zb2x2ZWQoKTtcblxuICAgICAgICAgIGlmIChjb21wbGV4U3Vic3RpdHV0aW9uc1Vuc29sdmVkKSB7XG4gICAgICAgICAgICBjb250ZXh0LmRlYnVnKGBUaGVyZSBhcmUgdW5zb2x2ZWQgY29tcGxleCBzdWJzdGl0dXRpb25zLmApO1xuXG4gICAgICAgICAgICByZXR1cm4gYmFjaygpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIGNvbnRleHQpXG4gICAgfSwgc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCAoc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi5hcHBsaWVkIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCAoZXhjZXB0aW9uKSA9PiB7XG4gICAgICBpZiAoZXhjZXB0aW9uKSB7XG4gICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuYWJsZSB0byBhcHBseSB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbS5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgdmVyaWZ5U2lnbmF0dXJlKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzYXRpc2ZpYWJsZSA9IHRoaXMuaXNTYXRpc2ZpYWJsZSgpO1xuXG4gICAgaWYgKCFzYXRpc2ZpYWJsZSkge1xuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2lnbmF0dXJlID0gdGhpcy5nZXRTaWduYXR1cmUoKSxcbiAgICAgICAgICBheGlvbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tJ3Mgc2lnbmF0dXJlLi4uYCk7XG5cbiAgICByZXR1cm4gc2lnbmF0dXJlLnZlcmlmeShjb250ZXh0LCAoYmFjaykgPT4ge1xuICAgICAgY29udGV4dC50cmFjZShgLi4udmVyaWZpZWQgdGhlICcke2F4aW9tU3RyaW5nfScgYXhpb20ncyBzaWduYXR1cmUuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdW5pZnlUZXJtcyh0ZXJtcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHF1b3RlZCA9IHRydWUsXG4gICAgICAgICAgdGVybXNTdHJpbmcgPSB0ZXJtc1N0cmluZ0Zyb21UZXJtcyh0ZXJtcywgcXVvdGVkKSxcbiAgICAgICAgICBheGlvbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICR7dGVybXNTdHJpbmd9IHRlcm1zIHdpdGggdGhlICcke2F4aW9tU3RyaW5nfScgYXhpb20uLi5gKTtcblxuICAgIGNvbnN0IHNpZ25hdHVyZSA9IHRoaXMuZ2V0U2lnbmF0dXJlKCk7XG5cbiAgICByZXR1cm4gc2lnbmF0dXJlLnVuaWZ5VGVybXModGVybXMsIGNvbnRleHQsICh0ZXJtc1VuaWZ5KSA9PiB7XG4gICAgICBpZiAodGVybXNVbmlmeSkge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAke3Rlcm1zU3RyaW5nfSB0ZXJtcyB3aXRoIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tLi4uYCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24odGVybXNVbmlmeSk7XG4gICAgfSk7XG4gIH1cblxuICB1bmlmeUNsYWltKGNsYWltLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IGNsYWltVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgYXhpb21TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICBjbGFpbVN0cmluZyA9IGNsYWltLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0gd2l0aCB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbS4uLmApO1xuXG4gICAgcmV0dXJuIHJlY29uY2lsZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgZGVkdWN0aW9uID0gY2xhaW0uZ2V0RGVkdWN0aW9uKCk7XG5cbiAgICAgIHJldHVybiB0aGlzLnVuaWZ5RGVkdWN0aW9uKGRlZHVjdGlvbiwgY29udGV4dCwgKGRlZHVjdGlvblVuaWZpZXMpID0+IHtcbiAgICAgICAgaWYgKCFkZWR1Y3Rpb25VbmlmaWVzKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihjbGFpbVVuaWZpZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3VwcG9zaXRpb25zID0gY2xhaW0uZ2V0U3VwcG9zaXRpb25zKCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudW5pZnlTdXBwb3NpdGlvbnMoc3VwcG9zaXRpb25zLCBjb250ZXh0LCAoc3VwcG9zaXRpb25zVW5pZnkpID0+IHtcbiAgICAgICAgICBpZiAoc3VwcG9zaXRpb25zVW5pZnkpIHtcbiAgICAgICAgICAgIGNsYWltVW5pZmllcyA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGNsYWltVW5pZmllcykge1xuICAgICAgICAgICAgY29udGV4dC5jb21taXQoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoY2xhaW1VbmlmaWVzKSB7XG4gICAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltIHdpdGggdGhlICcke2F4aW9tU3RyaW5nfScgYXhpb20uYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihjbGFpbVVuaWZpZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgdW5pZnlEZWR1Y3Rpb24oZGVkdWN0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IGRlZHVjdGlvblVuaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGdlbmVyYWxEZWR1Y3Rpb24gPSB0aGlzLmdldERlZHVjdGlvbigpLCAvLy9cbiAgICAgICAgICBzcGVjaWZpY0RlZHVjdGlvbiA9IGRlZHVjdGlvbiwgIC8vL1xuICAgICAgICAgIGdlbmVyYWxEZWR1Y3Rpb25TdHJpbmcgPSBnZW5lcmFsRGVkdWN0aW9uLmdldFN0cmluZygpLFxuICAgICAgICAgIHNwZWNpZmljRGVkdWN0aW9uU3RyaW5nID0gc3BlY2lmaWNEZWR1Y3Rpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3BlY2lmaWNEZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24gd2l0aCB0aGUgJyR7Z2VuZXJhbERlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi4uLmApO1xuXG4gICAgY29uc3Qgc3BlY2lmaWNEZWR1Y3Rpb25Db250ZXh0ID0gc3BlY2lmaWNEZWR1Y3Rpb24uZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGdlbmVyYWxEZWR1Y3Rpb25Db250ZXh0ID0gZ2VuZXJhbERlZHVjdGlvbi5nZXRDb250ZXh0KCksXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gc3BlY2lmaWNEZWR1Y3Rpb25Db250ZXh0LCAgLy8vXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSBnZW5lcmFsRGVkdWN0aW9uQ29udGV4dDsgLy8vXG5cbiAgICByZXR1cm4gam9pbigoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gcmVjb25jaWxlKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhdGVtZW50ID0gc3BlY2lmaWNEZWR1Y3Rpb24uZ2V0U3RhdGVtZW50KCk7XG5cbiAgICAgICAgZGVkdWN0aW9uID0gZ2VuZXJhbERlZHVjdGlvbjsgLy8vXG5cbiAgICAgICAgcmV0dXJuIGRlZHVjdGlvbi51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChzdGF0ZW1lbnRVbmlmaWVzKSA9PiB7XG4gICAgICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgICAgIGRlZHVjdGlvblVuaWZpZXMgPSB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChkZWR1Y3Rpb25VbmlmaWVzKSB7XG4gICAgICAgICAgICBzcGVjaWZpY0NvbnRleHQuY29tbWl0KGNvbnRleHQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChkZWR1Y3Rpb25VbmlmaWVzKSB7XG4gICAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzcGVjaWZpY0RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbiB3aXRoIHRoZSAnJHtnZW5lcmFsRGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uLmApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oZGVkdWN0aW9uVW5pZmllcyk7XG4gICAgICAgIH0pO1xuICAgICAgfSwgc3BlY2lmaWNDb250ZXh0KTtcbiAgICB9LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRleHQpO1xuICB9XG5cbiAgdW5pZnlTdXBwb3NpdGlvbihzcGVjaWZpY1N1cHBvc2l0aW9uLCBnZW5lcmFsU3VwcG9zaXRpb24sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgc3VwcG9zaXRpb25VbmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBnZW5lcmFsU3VwcG9zaXRpb25TdHJpbmcgPSBnZW5lcmFsU3VwcG9zaXRpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc3BlY2lmaWNTdXBwb3NpdGlvblN0cmluZyA9IHNwZWNpZmljU3VwcG9zaXRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3BlY2lmaWNTdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uIHdpdGggdGhlICcke2dlbmVyYWxTdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBzcGVjaWZpY1N1cHBvc2l0aW9uQ29udGV4dCA9IHNwZWNpZmljU3VwcG9zaXRpb24uZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGdlbmVyYWxTdXBwb3NpdGlvbkNvbnRleHQgPSBnZW5lcmFsU3VwcG9zaXRpb24uZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IHNwZWNpZmljU3VwcG9zaXRpb25Db250ZXh0LCAgLy8vXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSBnZW5lcmFsU3VwcG9zaXRpb25Db250ZXh0OyAvLy9cblxuICAgIHJldHVybiBqb2luKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgIHJldHVybiByZWNvbmNpbGUoKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBzdGF0ZW1lbnQgPSBzcGVjaWZpY1N1cHBvc2l0aW9uLmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgICAgICBzdXBwb3NpdGlvbiA9IGdlbmVyYWxTdXBwb3NpdGlvbjsgLy8vXG5cbiAgICAgICAgcmV0dXJuIHN1cHBvc2l0aW9uLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKHN0YXRlbWVudFVuaWZpZXMpID0+IHtcbiAgICAgICAgICBpZiAoc3RhdGVtZW50VW5pZmllcykge1xuICAgICAgICAgICAgc3VwcG9zaXRpb25VbmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc3VwcG9zaXRpb25VbmlmaWVzKSB7XG4gICAgICAgICAgICBzcGVjaWZpY0NvbnRleHQuY29tbWl0KGNvbnRleHQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChzdXBwb3NpdGlvblVuaWZpZXMpIHtcbiAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3NwZWNpZmljU3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbiB3aXRoIHRoZSAnJHtnZW5lcmFsU3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi5gKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1cHBvc2l0aW9uVW5pZmllcyk7XG4gICAgICAgIH0pO1xuICAgICAgfSwgc3BlY2lmaWNDb250ZXh0KTtcbiAgICB9LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRleHQpO1xuICB9XG5cbiAgdW5pZnlTdXBwb3NpdGlvbnMoc3VwcG9zaXRpb25zLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IHN1cHBvc2l0aW9uc1VuaWZ5ID0gZmFsc2U7XG5cbiAgICBjb25zdCBzcGVjaWZpY1N1cHBvc2l0aW9ucyA9IHN1cHBvc2l0aW9ucywgIC8vL1xuICAgICAgICAgIHNwZWNpZmljU3VwcG9zaXRpb25zTGVuZ3RoID0gc3BlY2lmaWNTdXBwb3NpdGlvbnMubGVuZ3RoO1xuXG4gICAgc3VwcG9zaXRpb25zID0gdGhpcy5nZXRTdXBwb3NpdGlvbnMoKTtcblxuICAgIGNvbnN0IGdlbmVyYWxTdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnMsIC8vL1xuICAgICAgICAgIGdlbmVyYWxTdXBwb3NpdGlvbnNMZW5ndGggPSBnZW5lcmFsU3VwcG9zaXRpb25zLmxlbmd0aDtcblxuICAgIGlmIChnZW5lcmFsU3VwcG9zaXRpb25zTGVuZ3RoICE9PSBzcGVjaWZpY1N1cHBvc2l0aW9uc0xlbmd0aCkge1xuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdXBwb3NpdGlvbnNVbmlmeSk7XG4gICAgfVxuXG4gICAgbGV0IGluZGV4ID0gc3BlY2lmaWNTdXBwb3NpdGlvbnNMZW5ndGg7XG5cbiAgICByZXR1cm4gYmFja3dhcmRzRXZlcnkoZ2VuZXJhbFN1cHBvc2l0aW9ucywgKGdlbmVyYWxTdXBwb3NpdGlvbiwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICBpbmRleC0tO1xuXG4gICAgICBjb25zdCBzcGVjaWZpY1N1cHBvc2l0aW9uID0gc3BlY2lmaWNTdXBwb3NpdGlvbnNbaW5kZXhdO1xuXG4gICAgICByZXR1cm4gdGhpcy51bmlmeVN1cHBvc2l0aW9uKHNwZWNpZmljU3VwcG9zaXRpb24sIGdlbmVyYWxTdXBwb3NpdGlvbiwgY29udGV4dCwgY29udGludWF0aW9uKTtcbiAgICB9LCBjb250aW51YXRpb24pO1xuICB9XG5cbiAgdW5pZnlTaWduYXR1cmVBc3NlcnRpb24oc2lnbmF0dXJlQXNzZXJ0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgbGV0IHNpZ25hdHVyZUFzc2VydGlvblVuaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGF4aW9tU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAgc2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nID0gc2lnbmF0dXJlQXNzZXJ0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24gd2l0aCB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbS4uLmApO1xuXG4gICAgY29uc3QgdGVybXMgPSBzaWduYXR1cmVBc3NlcnRpb24uZ2V0VGVybXMoKSxcbiAgICAgICAgICBzaWduYXR1cmUgPSB0aGlzLmdldFNpZ25hdHVyZSgpO1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZS51bmlmeVRlcm1zKHRlcm1zLCBjb250ZXh0LCAodGVybXNVbmlmeSkgPT4ge1xuICAgICAgaWYgKHRlcm1zVW5pZnkpIHtcbiAgICAgICAgc2lnbmF0dXJlQXNzZXJ0aW9uVW5pZmllcyA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChzaWduYXR1cmVBc3NlcnRpb25VbmlmaWVzKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24gd2l0aCB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbS5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzaWduYXR1cmVBc3NlcnRpb25VbmlmaWVzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJBeGlvbVwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7IHJldHVybiBDbGFpbS5mcm9tSlNPTihBeGlvbSwganNvbiwgY29udGV4dCk7IH1cbn0pO1xuIl0sIm5hbWVzIjpbImJyZWFrYWJsZSIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJjdXQiLCJhbGwiLCJpc29sYXRlIiwiYmFja3dhcmRzRXZlcnkiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJkZWZpbmUiLCJBeGlvbSIsIkNsYWltIiwiZ2V0QXhpb21Ob2RlIiwibm9kZSIsImdldE5vZGUiLCJheGlvbU5vZGUiLCJpc1NhdGlzZmlhYmxlIiwic2lnbmF0dXJlIiwiZ2V0U2lnbmF0dXJlIiwic2F0aXNmaWFibGUiLCJ2ZXJpZnkiLCJjb250ZXh0IiwiZm9yd2FyZCIsImJhY2siLCJheGlvbVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZW5jbG9zZSIsInZlcmlmeVByb29mIiwiYmluZCIsInZlcmlmeUxhYmVscyIsInZlcmlmeVNpZ25hdHVyZSIsInZlcmlmeURlZHVjdGlvbiIsInZlcmlmeVN1cHBvc2l0aW9ucyIsImF4aW9tIiwiYWRkQXhpb20iLCJkZWJ1ZyIsImV4Y2VwdGlvbiIsImFwcGx5Iiwic3RlcCIsImZhY3RPclN1YnByb29mcyIsImFwcGx5RGVkdWN0aW9uIiwiYXBwbHlTdXBwb3NpdGlvbnMiLCJyZWNvbmNpbGUiLCJjb21wbGV4U3Vic3RpdHV0aW9uc1Vuc29sdmVkIiwiYXJlQ29tcGxleFN1YnN0aXR1dGlvbnNVbnNvbHZlZCIsInVuaWZ5VGVybXMiLCJ0ZXJtcyIsInF1b3RlZCIsInRlcm1zU3RyaW5nIiwidGVybXNTdHJpbmdGcm9tVGVybXMiLCJ0ZXJtc1VuaWZ5IiwiY29udGludWF0aW9uIiwidW5pZnlDbGFpbSIsImNsYWltIiwiY2xhaW1VbmlmaWVzIiwiY2xhaW1TdHJpbmciLCJkZWR1Y3Rpb24iLCJnZXREZWR1Y3Rpb24iLCJ1bmlmeURlZHVjdGlvbiIsImRlZHVjdGlvblVuaWZpZXMiLCJzdXBwb3NpdGlvbnMiLCJnZXRTdXBwb3NpdGlvbnMiLCJ1bmlmeVN1cHBvc2l0aW9ucyIsInN1cHBvc2l0aW9uc1VuaWZ5IiwiY29tbWl0IiwiZ2VuZXJhbERlZHVjdGlvbiIsInNwZWNpZmljRGVkdWN0aW9uIiwiZ2VuZXJhbERlZHVjdGlvblN0cmluZyIsInNwZWNpZmljRGVkdWN0aW9uU3RyaW5nIiwic3BlY2lmaWNEZWR1Y3Rpb25Db250ZXh0IiwiZ2V0Q29udGV4dCIsImdlbmVyYWxEZWR1Y3Rpb25Db250ZXh0Iiwic3BlY2lmaWNDb250ZXh0IiwiZ2VuZXJhbENvbnRleHQiLCJqb2luIiwic3RhdGVtZW50IiwiZ2V0U3RhdGVtZW50IiwidW5pZnlTdGF0ZW1lbnQiLCJzdGF0ZW1lbnRVbmlmaWVzIiwidW5pZnlTdXBwb3NpdGlvbiIsInNwZWNpZmljU3VwcG9zaXRpb24iLCJnZW5lcmFsU3VwcG9zaXRpb24iLCJzdXBwb3NpdGlvblVuaWZpZXMiLCJnZW5lcmFsU3VwcG9zaXRpb25TdHJpbmciLCJzcGVjaWZpY1N1cHBvc2l0aW9uU3RyaW5nIiwic3BlY2lmaWNTdXBwb3NpdGlvbkNvbnRleHQiLCJnZW5lcmFsU3VwcG9zaXRpb25Db250ZXh0Iiwic3VwcG9zaXRpb24iLCJzcGVjaWZpY1N1cHBvc2l0aW9ucyIsInNwZWNpZmljU3VwcG9zaXRpb25zTGVuZ3RoIiwibGVuZ3RoIiwiZ2VuZXJhbFN1cHBvc2l0aW9ucyIsImdlbmVyYWxTdXBwb3NpdGlvbnNMZW5ndGgiLCJpbmRleCIsInVuaWZ5U2lnbmF0dXJlQXNzZXJ0aW9uIiwic2lnbmF0dXJlQXNzZXJ0aW9uIiwic2lnbmF0dXJlQXNzZXJ0aW9uVW5pZmllcyIsInNpZ25hdHVyZUFzc2VydGlvblN0cmluZyIsImdldFRlcm1zIiwibmFtZSIsImZyb21KU09OIiwianNvbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBYUE7OztlQUFBOzs7Z0NBWDJEOzhEQUV6QzswQkFFSzt3QkFDYzt5QkFDSTs7Ozs7O0FBRXpDLE1BQU0sRUFBRUEsU0FBUyxFQUFFLEdBQUdDLG1DQUFtQixFQUNuQyxFQUFFQyxHQUFHLEVBQUVDLEdBQUcsRUFBRUMsT0FBTyxFQUFFQyxjQUFjLEVBQUUsR0FBR0MscUNBQXFCO01BRW5FLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsY0FBY0MsY0FBSztJQUM3Q0MsZUFBZTtRQUNiLE1BQU1DLE9BQU8sSUFBSSxDQUFDQyxPQUFPLElBQ25CQyxZQUFZRixNQUFNLEdBQUc7UUFFM0IsT0FBT0U7SUFDVDtJQUVBQyxnQkFBZ0I7UUFDZCxNQUFNQyxZQUFZLElBQUksQ0FBQ0MsWUFBWSxJQUM3QkMsY0FBZUYsY0FBYztRQUVuQyxPQUFPRTtJQUNUO0lBRUFDLFNBQVNsQixVQUFVLFNBQVVtQixPQUFPLEVBQUVDLE9BQU8sRUFBRUMsSUFB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