occam-nominal 1.0.367 → 1.0.372

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.
Files changed (63) hide show
  1. package/lib/element/assertion/contained.js +114 -106
  2. package/lib/element/assertion/defined.js +91 -94
  3. package/lib/element/assertion/type.js +13 -8
  4. package/lib/element/assumption/implicit.js +7 -7
  5. package/lib/element/assumption.js +6 -7
  6. package/lib/element/claim.js +5 -5
  7. package/lib/element/combinator.js +36 -24
  8. package/lib/element/constraint.js +6 -7
  9. package/lib/element/constructor.js +5 -5
  10. package/lib/element/declaration/combinator.js +9 -8
  11. package/lib/element/declaration/metavariable.js +18 -18
  12. package/lib/element/declaration/variable.js +4 -4
  13. package/lib/element/equality.js +62 -70
  14. package/lib/element/fact/premise.js +1 -1
  15. package/lib/element/frame.js +86 -107
  16. package/lib/element/goal.js +108 -114
  17. package/lib/element/judgement.js +51 -57
  18. package/lib/element/metavariable.js +32 -29
  19. package/lib/element/property.js +3 -3
  20. package/lib/element/rule.js +30 -27
  21. package/lib/element/signature.js +15 -17
  22. package/lib/element/substitution/frame.js +52 -52
  23. package/lib/element/substitution/reference.js +55 -50
  24. package/lib/element/substitution/term.js +52 -52
  25. package/lib/element/variable.js +16 -16
  26. package/lib/pass/continuation.js +30 -17
  27. package/lib/pass/continuationZip.js +36 -25
  28. package/lib/pass/zip.js +7 -5
  29. package/lib/process/equate.js +7 -7
  30. package/lib/process/validation.js +12 -18
  31. package/lib/utilities/continuation.js +1 -16
  32. package/package.json +9 -9
  33. package/src/element/assertion/contained.js +126 -124
  34. package/src/element/assertion/defined.js +100 -112
  35. package/src/element/assertion/type.js +15 -7
  36. package/src/element/assumption/implicit.js +6 -7
  37. package/src/element/assumption.js +5 -8
  38. package/src/element/claim.js +4 -4
  39. package/src/element/combinator.js +46 -25
  40. package/src/element/constraint.js +5 -8
  41. package/src/element/constructor.js +4 -4
  42. package/src/element/declaration/combinator.js +10 -9
  43. package/src/element/declaration/metavariable.js +20 -21
  44. package/src/element/declaration/variable.js +4 -4
  45. package/src/element/equality.js +74 -87
  46. package/src/element/fact/premise.js +1 -1
  47. package/src/element/frame.js +100 -131
  48. package/src/element/goal.js +127 -134
  49. package/src/element/judgement.js +60 -67
  50. package/src/element/metavariable.js +38 -30
  51. package/src/element/property.js +2 -2
  52. package/src/element/rule.js +39 -32
  53. package/src/element/signature.js +14 -19
  54. package/src/element/substitution/frame.js +64 -61
  55. package/src/element/substitution/reference.js +67 -55
  56. package/src/element/substitution/term.js +64 -61
  57. package/src/element/variable.js +19 -17
  58. package/src/pass/continuation.js +45 -22
  59. package/src/pass/continuationZip.js +51 -33
  60. package/src/pass/zip.js +7 -4
  61. package/src/process/equate.js +10 -10
  62. package/src/process/validation.js +11 -21
  63. package/src/utilities/continuation.js +0 -23
@@ -45,16 +45,15 @@ const _default = (0, _elements.define)(class Constraint extends _occamlanguages.
45
45
  const node = constraintNode, nodeMatches = this.matchNode(node), constraintNodeMatches = nodeMatches; ///
46
46
  return constraintNodeMatches;
47
47
  }
48
- findValidConstraint(context) {
49
- const constraintNode = this.getConstraintNode(), constraint = context.findConstraintByConstraintNode(constraintNode), validConstraint = constraint; ///
50
- return validConstraint;
48
+ findConstraint(context) {
49
+ const constraintNode = this.getConstraintNode(), constraint = context.findConstraintByConstraintNode(constraintNode);
50
+ return constraint;
51
51
  }
52
52
  validate(context, continuation) {
53
53
  const constraintString = this.getString(); ///
54
54
  context.trace(`Validating the '${constraintString}' constraint...`);
55
- const validConstraint = this.findValidConstraint(context);
56
- if (validConstraint !== null) {
57
- const constraint = validConstraint; ///
55
+ const constraint = this.findConstraint(context);
56
+ if (constraint !== null) {
58
57
  context.debug(`...the '${constraintString}' constraint is already present.`);
59
58
  return continuation(constraint);
60
59
  } else {
@@ -261,4 +260,4 @@ function statementFromConstraintNode(constraintNode, context) {
261
260
  return statement;
262
261
  }
263
262
 
264
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbnN0cmFpbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBhbGwsIGV4aXN0cyB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGludWF0aW9uXCI7XG5pbXBvcnQgeyB1bmlmeVN0YXRlbWVudCB9IGZyb20gXCIuLi9wcm9jZXNzL3VuaWZ5XCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUNvbnN0cmFpbnQgfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgc3RyaXBCcmFja2V0c0Zyb21TdGF0ZW1lbnQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2JyYWNrZXRzXCI7XG5pbXBvcnQgeyBjb25zdHJhaW50RnJvbUNvbnN0cmFpbnROb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyBjb25zdHJhaW50U3RyaW5nRnJvbVJlZmVyZW5jZUFuZFN0YXRlbWVudCB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBhYmxhdGUsIGF0dGVtcHQsIGRlc2NlbmQsIHJlY29uY2lsZSwgc2VyaWFsaXNlLCB1bnNlcmlhbGlzZSwgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcblxuY29uc3QgeyBzb21lIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBDb25zdHJhaW50IGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgcmVmZXJlbmNlLCBzdGF0ZW1lbnQpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5yZWZlcmVuY2UgPSByZWZlcmVuY2U7XG4gICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRSZWZlcmVuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlO1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudDtcbiAgfVxuXG4gIGdldENvbnN0cmFpbnROb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBjb25zdHJhaW50Tm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBjb25zdHJhaW50Tm9kZTtcbiAgfVxuXG4gIGdldE1ldGF2YXJpYWJsZSgpIHsgcmV0dXJuIHRoaXMucmVmZXJlbmNlLmdldE1ldGF2YXJpYWJsZSgpOyB9XG5cbiAgaXNFcXVhbFRvKGNvbnN0cmFpbnQpIHtcbiAgICBjb25zdCBjb25zdHJhaW50Tm9kZSA9IGNvbnN0cmFpbnQuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbnN0cmFpbnROb2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hDb25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSksXG4gICAgICAgICAgZXF1YWxUbyA9IGNvbnN0cmFpbnROb2RlTWF0Y2hlczsgIC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBtYXRjaENvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlKSB7XG4gICAgY29uc3Qgbm9kZSA9IGNvbnN0cmFpbnROb2RlLCAvLy9cbiAgICAgICAgICBub2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hOb2RlKG5vZGUpLFxuICAgICAgICAgIGNvbnN0cmFpbnROb2RlTWF0Y2hlcyA9IG5vZGVNYXRjaGVzOyAvLy9cblxuICAgIHJldHVybiBjb25zdHJhaW50Tm9kZU1hdGNoZXM7XG4gIH1cblxuICBmaW5kVmFsaWRDb25zdHJhaW50KGNvbnRleHQpIHtcbiAgICBjb25zdCBjb25zdHJhaW50Tm9kZSA9IHRoaXMuZ2V0Q29uc3RyYWludE5vZGUoKSxcbiAgICAgICAgICBjb25zdHJhaW50ID0gY29udGV4dC5maW5kQ29uc3RyYWludEJ5Q29uc3RyYWludE5vZGUoY29uc3RyYWludE5vZGUpLFxuICAgICAgICAgIHZhbGlkQ29uc3RyYWludCA9IGNvbnN0cmFpbnQ7ICAvLy9cblxuICAgIHJldHVybiB2YWxpZENvbnN0cmFpbnQ7XG4gIH1cblxuICB2YWxpZGF0ZShjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBjb25zdHJhaW50U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQuLi5gKTtcblxuICAgIGNvbnN0IHZhbGlkQ29uc3RyYWludCA9IHRoaXMuZmluZFZhbGlkQ29uc3RyYWludChjb250ZXh0KTtcblxuICAgIGlmICh2YWxpZENvbnN0cmFpbnQgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGNvbnN0cmFpbnQgPSB2YWxpZENvbnN0cmFpbnQ7IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi50aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQgaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKGNvbnN0cmFpbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICAgIHJldHVybiBhdHRlbXB0KChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRlU3RhdGVtZW50ID0gdGhpcy52YWxpZGF0ZVN0YXRlbWVudC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICB2YWxpZGF0ZVJlZmVyZW5jZSA9IHRoaXMudmFsaWRhdGVSZWZlcmVuY2UuYmluZCh0aGlzKTtcblxuICAgICAgICByZXR1cm4gYWxsKFtcbiAgICAgICAgICB2YWxpZGF0ZVN0YXRlbWVudCxcbiAgICAgICAgICB2YWxpZGF0ZVJlZmVyZW5jZVxuICAgICAgICBdLCBjb250ZXh0LCAodmFsaWRhdGVzKSA9PiB7XG4gICAgICAgICAgaWYgKCF2YWxpZGF0ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnN0cmFpbnQgPSBudWxsO1xuXG4gICAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKGNvbnN0cmFpbnQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHZhbGlkYXRlV2hlblN0YXRlZCA9IHRoaXMudmFsaWRhdGVXaGVuU3RhdGVkLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZCA9IHRoaXMudmFsaWRhdGVXaGVuRGVyaXZlZC5iaW5kKHRoaXMpO1xuXG4gICAgICAgICAgcmV0dXJuIGV4aXN0cyhbXG4gICAgICAgICAgICB2YWxpZGF0ZVdoZW5TdGF0ZWQsXG4gICAgICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkXG4gICAgICAgICAgXSwgY29udGV4dCwgKHZhbGlkYXRlcykgPT4ge1xuICAgICAgICAgICAgbGV0IGNvbnN0cmFpbnQgPSBudWxsO1xuXG4gICAgICAgICAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICAgICAgICAgIGNvbnN0cmFpbnQgPSB0aGlzOyAgLy8vXG5cbiAgICAgICAgICAgICAgY29udGV4dC5hZGRDb25zdHJhaW50KGNvbnN0cmFpbnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICAgICAgICAgIHRoaXMuY29tbWl0KGNvbnRleHQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQuYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oY29uc3RyYWludCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVSZWZlcmVuY2UoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHJlZmVyZW5jZVZhbGlkYXRlcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29uc3RyYWludFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3MgcmVmZXJlbmNlLi4uYCk7XG5cbiAgICB0aGlzLnJlZmVyZW5jZS52YWxpZGF0ZShjb250ZXh0LCAocmVmZXJlbmNlKSA9PiB7XG4gICAgICBpZiAocmVmZXJlbmNlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZSA9IHRoaXMucmVmZXJlbmNlLmdldE1ldGF2YXJpYWJsZSgpLFxuICAgICAgICAgICAgICBtZXRhdmFyaWFibGVEZWNsYXJlZCA9IG1ldGF2YXJpYWJsZS5pc0RlY2xhcmVkKCk7XG5cbiAgICAgICAgaWYgKG1ldGF2YXJpYWJsZURlY2xhcmVkKSB7XG4gICAgICAgICAgdGhpcy5yZWZlcmVuY2UgPSByZWZlcmVuY2U7XG5cbiAgICAgICAgICByZWZlcmVuY2VWYWxpZGF0ZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChyZWZlcmVuY2VWYWxpZGF0ZXMpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludCdzIHJlZmVyZW5jZS5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihyZWZlcmVuY2VWYWxpZGF0ZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgdmFsaWRhdGVTdGF0ZW1lbnQoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgY29uc3RyYWludFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICByZXR1cm4gZGVzY2VuZCgoY29udGV4dCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50LnZhbGlkYXRlKGNvbnRleHQsIChzdGF0ZW1lbnQpID0+IHtcbiAgICAgICAgbGV0IHN0YXRlbWVudFZhbGlkYXRlcyA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChzdGF0ZW1lbnQgIT09IG51bGwpIHtcbiAgICAgICAgICBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0YXRlbWVudFZhbGlkYXRlcykge1xuICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQncyBzdGF0ZW1lbnQuYCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN0YXRlbWVudFZhbGlkYXRlcyk7XG4gICAgICB9KTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlblN0YXRlZChjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBzdGF0ZWQgPSBjb250ZXh0LmlzU3RhdGVkKCk7XG5cbiAgICBpZiAoIXN0YXRlZCkge1xuICAgICAgY29uc3QgdmFsaWRhdGVzV2hlblN0YXRlZCA9IGZhbHNlO1xuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHZhbGlkYXRlc1doZW5TdGF0ZWQpO1xuICAgIH1cblxuICAgIGxldCB2YWxpZGF0ZXNXaGVuU3RhdGVkO1xuXG4gICAgY29uc3QgY29uc3RyYWludFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBzdGF0ZWQgY29uc3RyYWludC4uLmApO1xuXG4gICAgdmFsaWRhdGVzV2hlblN0YXRlZCA9IHRydWVcblxuICAgIGlmICh2YWxpZGF0ZXNXaGVuU3RhdGVkKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBzdGF0ZWQgY29uc3RyYWludC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGludWF0aW9uKHZhbGlkYXRlc1doZW5TdGF0ZWQpO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuRGVyaXZlZChjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBzdGF0ZWQgPSBjb250ZXh0LmlzU3RhdGVkKCk7XG5cbiAgICBpZiAoc3RhdGVkKSB7XG4gICAgICBjb25zdCB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IGZhbHNlO1xuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHZhbGlkYXRlc1doZW5EZXJpdmVkKTtcbiAgICB9XG5cbiAgICBsZXQgdmFsaWRhdGVzV2hlbkRlcml2ZWQ7XG5cbiAgICBjb25zdCBjb25zdHJhaW50U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGRlcml2ZWQgY29uc3RyYWludC4uLmApO1xuXG4gICAgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSB0cnVlO1xuXG4gICAgaWYgKHZhbGlkYXRlc1doZW5EZXJpdmVkKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBkZXJpdmVkIGNvbnN0cmFpbnQuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbih2YWxpZGF0ZXNXaGVuRGVyaXZlZCk7XG4gIH1cblxuICB1bmlmeVJlZmVyZW5jZShyZWZlcmVuY2UsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGlmIChyZWZlcmVuY2UgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHJlZmVyZW5jZVVuaWZpZXMgPSB0cnVlOyAgLy8vXG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24ocmVmZXJlbmNlVW5pZmllcyk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIHJlZmVyZW5jZVN0cmluZyA9IHJlZmVyZW5jZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBjb25zdHJhaW50U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7cmVmZXJlbmNlU3RyaW5nfScgcmVmZXJlbmNlIHdpdGggdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3MgcmVmZXJlbmNlLi4uYCk7XG5cbiAgICBjb25zdCBtZXRhdmFyaWFibGUgPSB0aGlzLmdldE1ldGF2YXJpYWJsZSgpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZS51bmlmeVJlZmVyZW5jZShyZWZlcmVuY2UsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChyZWZlcmVuY2VVbmlmaWVzKSA9PiB7XG4gICAgICBpZiAocmVmZXJlbmNlVW5pZmllcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLnVuaWZpZWQgdGhlICcke3JlZmVyZW5jZVN0cmluZ30nIHdpdGggdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3MgcmVmZXJlbmNlLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHJlZmVyZW5jZVVuaWZpZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgdW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAgLy8vXG4gICAgICAgICAgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICAgIGNvbnN0cmFpbnRTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQncyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIGNvbnN0IGdlbmVyYWxTdGF0ZW1lbnQgPSB0aGlzLnN0YXRlbWVudCwgIC8vL1xuICAgICAgICAgIHNwZWNpZmljU3RhdGVtZW50ID0gc3RyaXBCcmFja2V0c0Zyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTsgIC8vL1xuXG4gICAgcmV0dXJuIHVuaWZ5U3RhdGVtZW50KGdlbmVyYWxTdGF0ZW1lbnQsIHNwZWNpZmljU3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoc3RhdGVtZW50VW5pZmllcykgPT4ge1xuICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHdpdGggdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3Mgc3RhdGVtZW50LmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHN0YXRlbWVudFVuaWZpZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgdW5pZnlBc3N1bXB0aW9uKGFzc3VtcHRpb24sIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IGFzc3VtcHRpb25TdHJpbmcgPSBhc3N1bXB0aW9uLmdldFN0cmluZygpLCAgLy8vXG4gICAgICAgICAgY29uc3RyYWludFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24gd2l0aCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQuLi5gKTtcblxuICAgIGNvbnN0IGNvbnN0cmFpbnRDb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksIC8vL1xuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gY29uc3RyYWludENvbnRleHQ7IC8vL1xuXG4gICAgcmV0dXJuIHJlY29uY2lsZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgcmVmZXJlbmNlID0gYXNzdW1wdGlvbi5nZXRSZWZlcmVuY2UoKSxcbiAgICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQ7ICAvLy9cblxuICAgICAgcmV0dXJuIHRoaXMudW5pZnlSZWZlcmVuY2UocmVmZXJlbmNlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAocmVmZXJuZWNlVW5pZmllcykgPT4ge1xuICAgICAgICBpZiAoIXJlZmVybmVjZVVuaWZpZXMpIHtcbiAgICAgICAgICBjb25zdCBhc3N1bXB0aW9uVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihhc3N1bXB0aW9uVW5pZmllcyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdGF0ZW1lbnQgPSBhc3N1bXB0aW9uLmdldFN0YXRlbWVudCgpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKHN0YXRlbWVudFVuaWZpZXMpID0+IHtcbiAgICAgICAgICBsZXQgYXNzdW1wdGlvblVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgICAgICBjb250ZXh0LmNvbW1pdCgpO1xuXG4gICAgICAgICAgICBhc3N1bXB0aW9uVW5pZmllcyA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGFzc3VtcHRpb25VbmlmaWVzKSB7XG4gICAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbiB3aXRoIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludC4uLmApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oYXNzdW1wdGlvblVuaWZpZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgdW5pZnlBc3N1bXB0aW9ucyhhc3N1bXB0aW9ucywgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgc29tZShhc3N1bXB0aW9ucywgKGFzc3VtcHRpb24sIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgdGhpcy51bmlmeUFzc3VtcHRpb24oYXNzdW1wdGlvbiwgY29udGV4dCwgY29udGludWF0aW9uKTtcbiAgICB9LCBjb250aW51YXRpb24pO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHJldHVybiBzZXJpYWxpc2UoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgICBicmVha1BvaW50ID0gdGhpcy5nZXRCcmVha1BvaW50KCk7XG5cbiAgICAgIGNvbnN0IGJyZWFrUG9pbnRKU09OID0gYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04oYnJlYWtQb2ludCk7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgICBjb25zdCBqc29uID0ge1xuICAgICAgICBjb250ZXh0LFxuICAgICAgICBzdHJpbmcsXG4gICAgICAgIGJyZWFrUG9pbnRcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBqc29uO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkNvbnN0cmFpbnRcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIHJldHVybiBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgcmV0dXJuIHVuc2VyaWFsaXNlKChqc29uLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgICBjb25zdHJhaW50Tm9kZSA9IGluc3RhbnRpYXRlQ29uc3RyYWludChzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gY29uc3RyYWludE5vZGUsICAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgICAgcmVmZXJlbmNlID0gcmVmZXJlbmNlRnJvbUNvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbUNvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgY29uc3RyYWludCA9IG5ldyBDb25zdHJhaW50KGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgcmVmZXJlbmNlLCBzdGF0ZW1lbnQpO1xuXG4gICAgICAgIHJldHVybiBjb25zdHJhaW50O1xuICAgICAgfSwganNvbiwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0ZXAoc3RlcCwgY29udGV4dCkge1xuICAgIGxldCBjb25zdHJhaW50O1xuXG4gICAgbGV0IHN0YXRlbWVudDtcblxuICAgIHN0YXRlbWVudCA9IHN0ZXAuZ2V0U3RhdGVtZW50KCk7XG5cbiAgICBzdGF0ZW1lbnQgPSBzdHJpcEJyYWNrZXRzRnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpOyAvLy9cblxuICAgIGNvbnN0IHJlZmVyZW5jZSA9IHN0ZXAuZ2V0UmVmZXJlbmNlKCk7XG5cbiAgICBjb25zdHJhaW50ID0gYWJsYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgY29uc3RyYWludFN0cmluZyA9IGNvbnN0cmFpbnRTdHJpbmdGcm9tUmVmZXJlbmNlQW5kU3RhdGVtZW50KHJlZmVyZW5jZSwgc3RhdGVtZW50KSxcbiAgICAgICAgICAgICAgc3RyaW5nID0gY29uc3RyYWludFN0cmluZywgIC8vL1xuICAgICAgICAgICAgICBjb25zdHJhaW50Tm9kZSA9IGluc3RhbnRpYXRlQ29uc3RyYWludChzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBjb25zdHJhaW50ID0gY29uc3RyYWludEZyb21Db25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIGNvbnN0cmFpbnQ7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb25zdHJhaW50O1xuICB9XG59KTtcblxuZnVuY3Rpb24gcmVmZXJlbmNlRnJvbUNvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHJlZmVyZW5jZU5vZGUgPSBjb25zdHJhaW50Tm9kZS5nZXRSZWZlcmVuY2VOb2RlKCksXG4gICAgICAgIHJlZmVybmVjZSA9IGNvbnRleHQuZmluZFJlZmVyZW5jZUJ5UmVmZXJlbmNlTm9kZShyZWZlcmVuY2VOb2RlKTtcblxuICByZXR1cm4gcmVmZXJuZWNlO1xufVxuXG5mdW5jdGlvbiBzdGF0ZW1lbnRGcm9tQ29uc3RyYWludE5vZGUoY29uc3RyYWludE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IGNvbnN0cmFpbnROb2RlLmdldFN0YXRlbWVudE5vZGUoKSxcbiAgICAgICAgc3RhdGVtZW50ID0gY29udGV4dC5maW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gIHJldHVybiBzdGF0ZW1lbnQ7XG59XG4iXSwibmFtZXMiOlsic29tZSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIkNvbnN0cmFpbnQiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwicmVmZXJlbmNlIiwic3RhdGVtZW50IiwiZ2V0UmVmZXJlbmNlIiwiZ2V0U3RhdGVtZW50IiwiZ2V0Q29uc3RyYWludE5vZGUiLCJnZXROb2RlIiwiY29uc3RyYWludE5vZGUiLCJnZXRNZXRhdmFyaWFibGUiLCJpc0VxdWFsVG8iLCJjb25zdHJhaW50IiwiY29uc3RyYWludE5vZGVNYXRjaGVzIiwibWF0Y2hDb25zdHJhaW50Tm9kZSIsImVxdWFsVG8iLCJub2RlTWF0Y2hlcyIsIm1hdGNoTm9kZSIsImZpbmRWYWxpZENvbnN0cmFpbnQiLCJmaW5kQ29uc3RyYWludEJ5Q29uc3RyYWludE5vZGUiLCJ2YWxpZENvbnN0cmFpbnQiLCJ2YWxpZGF0ZSIsImNvbnRpbnVhdGlvbiIsImNvbnN0cmFpbnRTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImRlYnVnIiwiZ2V0Q29udGV4dCIsImF0dGVtcHQiLCJ2YWxpZGF0ZVN0YXRlbWVudCIsImJpbmQiLCJ2YWxpZGF0ZVJlZmVyZW5jZSIsImFsbCIsInZhbGlkYXRlcyIsInZhbGlkYXRlV2hlblN0YXRlZCIsInZhbGlkYXRlV2hlbkRlcml2ZWQiLCJleGlzdHMiLCJhZGRDb25zdHJhaW50IiwiY29tbWl0IiwicmVmZXJlbmNlVmFsaWRhdGVzIiwibWV0YXZhcmlhYmxlIiwibWV0YXZhcmlhYmxlRGVjbGFyZWQiLCJpc0RlY2xhcmVkIiwiZGVzY2VuZCIsInN0YXRlbWVudFZhbGlkYXRlcyIsInN0YXRlZCIsImlzU3RhdGVkIiwidmFsaWRhdGVzV2hlblN0YXRlZCIsInZhbGlkYXRlc1doZW5EZXJpdmVkIiwidW5pZnlSZWZlcmVuY2UiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInJlZmVyZW5jZVVuaWZpZXMiLCJyZWZlcmVuY2VTdHJpbmciLCJ1bmlmeVN0YXRlbWVudCIsInN0YXRlbWVudFN0cmluZyIsImdlbmVyYWxTdGF0ZW1lbnQiLCJzcGVjaWZpY1N0YXRlbWVudCIsInN0cmlwQnJhY2tldHNGcm9tU3RhdGVtZW50Iiwic3RhdGVtZW50VW5pZmllcyIsInVuaWZ5QXNzdW1wdGlvbiIsImFzc3VtcHRpb24iLCJhc3N1bXB0aW9uU3RyaW5nIiwiY29uc3RyYWludENvbnRleHQiLCJyZWNvbmNpbGUiLCJyZWZlcm5lY2VVbmlmaWVzIiwiYXNzdW1wdGlvblVuaWZpZXMiLCJ1bmlmeUFzc3VtcHRpb25zIiwiYXNzdW1wdGlvbnMiLCJ0b0pTT04iLCJzZXJpYWxpc2UiLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJqc29uIiwibmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJ1bnNlcmlhbGlzZSIsImluc3RhbnRpYXRlQ29uc3RyYWludCIsInJlZmVyZW5jZUZyb21Db25zdHJhaW50Tm9kZSIsInN0YXRlbWVudEZyb21Db25zdHJhaW50Tm9kZSIsImZyb21TdGVwIiwic3RlcCIsImFibGF0ZSIsImNvbnN0cmFpbnRTdHJpbmdGcm9tUmVmZXJlbmNlQW5kU3RhdGVtZW50IiwiY29uc3RyYWludEZyb21Db25zdHJhaW50Tm9kZSIsInJlZmVyZW5jZU5vZGUiLCJnZXRSZWZlcmVuY2VOb2RlIiwicmVmZXJuZWNlIiwiZmluZFJlZmVyZW5jZUJ5UmVmZXJlbmNlTm9kZSIsInN0YXRlbWVudE5vZGUiLCJnZXRTdGF0ZW1lbnROb2RlIiwiZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBZ0JBOzs7ZUFBQTs7O2dDQWRvRTswQkFFN0M7OEJBQ0s7dUJBQ0c7NkJBQ087MEJBQ0s7eUJBQ0U7d0JBQ2E7eUJBQytCO0FBRXpGLE1BQU0sRUFBRUEsSUFBSSxFQUFFLEdBQUdDLHFDQUFxQixFQUNoQyxFQUFFQyxrQkFBa0IsRUFBRUMsMEJBQTBCLEVBQUUsR0FBR0MsbUNBQW1CO01BRTlFLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsbUJBQW1CQyx1QkFBTztJQUNwRCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLFNBQVMsRUFBRUMsU0FBUyxDQUFFO1FBQ25FLEtBQUssQ0FBQ0wsU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDQyxTQUFTLEdBQUdBO1FBQ2pCLElBQUksQ0FBQ0MsU0FBUyxHQUFHQTtJQUNuQjtJQUVBQyxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUNGLFNBQVM7SUFDdkI7SUFFQUcsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDRixTQUFTO0lBQ3ZCO0lBRUFHLG9CQUFvQjtRQUNsQixNQUFNTixPQUFPLElBQUksQ0FBQ08sT0FBTyxJQUNuQkMsaUJBQWlCUixNQUFPLEdBQUc7UUFFakMsT0FBT1E7SUFDVDtJQUVBQyxrQkFBa0I7UUFBRSxP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
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbnN0cmFpbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBhbGwsIGV4aXN0cyB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGludWF0aW9uXCI7XG5pbXBvcnQgeyB1bmlmeVN0YXRlbWVudCB9IGZyb20gXCIuLi9wcm9jZXNzL3VuaWZ5XCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUNvbnN0cmFpbnQgfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgc3RyaXBCcmFja2V0c0Zyb21TdGF0ZW1lbnQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2JyYWNrZXRzXCI7XG5pbXBvcnQgeyBjb25zdHJhaW50RnJvbUNvbnN0cmFpbnROb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyBjb25zdHJhaW50U3RyaW5nRnJvbVJlZmVyZW5jZUFuZFN0YXRlbWVudCB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBhYmxhdGUsIGF0dGVtcHQsIGRlc2NlbmQsIHJlY29uY2lsZSwgc2VyaWFsaXNlLCB1bnNlcmlhbGlzZSwgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcblxuY29uc3QgeyBzb21lIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBDb25zdHJhaW50IGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgcmVmZXJlbmNlLCBzdGF0ZW1lbnQpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5yZWZlcmVuY2UgPSByZWZlcmVuY2U7XG4gICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRSZWZlcmVuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlO1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudDtcbiAgfVxuXG4gIGdldENvbnN0cmFpbnROb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBjb25zdHJhaW50Tm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBjb25zdHJhaW50Tm9kZTtcbiAgfVxuXG4gIGdldE1ldGF2YXJpYWJsZSgpIHsgcmV0dXJuIHRoaXMucmVmZXJlbmNlLmdldE1ldGF2YXJpYWJsZSgpOyB9XG5cbiAgaXNFcXVhbFRvKGNvbnN0cmFpbnQpIHtcbiAgICBjb25zdCBjb25zdHJhaW50Tm9kZSA9IGNvbnN0cmFpbnQuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbnN0cmFpbnROb2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hDb25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSksXG4gICAgICAgICAgZXF1YWxUbyA9IGNvbnN0cmFpbnROb2RlTWF0Y2hlczsgIC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBtYXRjaENvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlKSB7XG4gICAgY29uc3Qgbm9kZSA9IGNvbnN0cmFpbnROb2RlLCAvLy9cbiAgICAgICAgICBub2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hOb2RlKG5vZGUpLFxuICAgICAgICAgIGNvbnN0cmFpbnROb2RlTWF0Y2hlcyA9IG5vZGVNYXRjaGVzOyAvLy9cblxuICAgIHJldHVybiBjb25zdHJhaW50Tm9kZU1hdGNoZXM7XG4gIH1cblxuICBmaW5kQ29uc3RyYWludChjb250ZXh0KSB7XG4gICAgY29uc3QgY29uc3RyYWludE5vZGUgPSB0aGlzLmdldENvbnN0cmFpbnROb2RlKCksXG4gICAgICAgICAgY29uc3RyYWludCA9IGNvbnRleHQuZmluZENvbnN0cmFpbnRCeUNvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlKTtcblxuICAgIHJldHVybiBjb25zdHJhaW50O1xuICB9XG5cbiAgdmFsaWRhdGUoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgY29uc3RyYWludFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50Li4uYCk7XG5cbiAgICBjb25zdCBjb25zdHJhaW50ID0gdGhpcy5maW5kQ29uc3RyYWludChjb250ZXh0KTtcblxuICAgIGlmIChjb25zdHJhaW50ICE9PSBudWxsKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi50aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQgaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKGNvbnN0cmFpbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICAgIHJldHVybiBhdHRlbXB0KChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRlU3RhdGVtZW50ID0gdGhpcy52YWxpZGF0ZVN0YXRlbWVudC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICB2YWxpZGF0ZVJlZmVyZW5jZSA9IHRoaXMudmFsaWRhdGVSZWZlcmVuY2UuYmluZCh0aGlzKTtcblxuICAgICAgICByZXR1cm4gYWxsKFtcbiAgICAgICAgICB2YWxpZGF0ZVN0YXRlbWVudCxcbiAgICAgICAgICB2YWxpZGF0ZVJlZmVyZW5jZVxuICAgICAgICBdLCBjb250ZXh0LCAodmFsaWRhdGVzKSA9PiB7XG4gICAgICAgICAgaWYgKCF2YWxpZGF0ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnN0cmFpbnQgPSBudWxsO1xuXG4gICAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKGNvbnN0cmFpbnQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHZhbGlkYXRlV2hlblN0YXRlZCA9IHRoaXMudmFsaWRhdGVXaGVuU3RhdGVkLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZCA9IHRoaXMudmFsaWRhdGVXaGVuRGVyaXZlZC5iaW5kKHRoaXMpO1xuXG4gICAgICAgICAgcmV0dXJuIGV4aXN0cyhbXG4gICAgICAgICAgICB2YWxpZGF0ZVdoZW5TdGF0ZWQsXG4gICAgICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkXG4gICAgICAgICAgXSwgY29udGV4dCwgKHZhbGlkYXRlcykgPT4ge1xuICAgICAgICAgICAgbGV0IGNvbnN0cmFpbnQgPSBudWxsO1xuXG4gICAgICAgICAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICAgICAgICAgIGNvbnN0cmFpbnQgPSB0aGlzOyAgLy8vXG5cbiAgICAgICAgICAgICAgY29udGV4dC5hZGRDb25zdHJhaW50KGNvbnN0cmFpbnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICAgICAgICAgIHRoaXMuY29tbWl0KGNvbnRleHQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQuYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oY29uc3RyYWludCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVSZWZlcmVuY2UoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHJlZmVyZW5jZVZhbGlkYXRlcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29uc3RyYWludFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3MgcmVmZXJlbmNlLi4uYCk7XG5cbiAgICB0aGlzLnJlZmVyZW5jZS52YWxpZGF0ZShjb250ZXh0LCAocmVmZXJlbmNlKSA9PiB7XG4gICAgICBpZiAocmVmZXJlbmNlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZSA9IHRoaXMucmVmZXJlbmNlLmdldE1ldGF2YXJpYWJsZSgpLFxuICAgICAgICAgICAgICBtZXRhdmFyaWFibGVEZWNsYXJlZCA9IG1ldGF2YXJpYWJsZS5pc0RlY2xhcmVkKCk7XG5cbiAgICAgICAgaWYgKG1ldGF2YXJpYWJsZURlY2xhcmVkKSB7XG4gICAgICAgICAgdGhpcy5yZWZlcmVuY2UgPSByZWZlcmVuY2U7XG5cbiAgICAgICAgICByZWZlcmVuY2VWYWxpZGF0ZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChyZWZlcmVuY2VWYWxpZGF0ZXMpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludCdzIHJlZmVyZW5jZS5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihyZWZlcmVuY2VWYWxpZGF0ZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgdmFsaWRhdGVTdGF0ZW1lbnQoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgY29uc3RyYWludFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICByZXR1cm4gZGVzY2VuZCgoY29udGV4dCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50LnZhbGlkYXRlKGNvbnRleHQsIChzdGF0ZW1lbnQpID0+IHtcbiAgICAgICAgbGV0IHN0YXRlbWVudFZhbGlkYXRlcyA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChzdGF0ZW1lbnQgIT09IG51bGwpIHtcbiAgICAgICAgICBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0YXRlbWVudFZhbGlkYXRlcykge1xuICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQncyBzdGF0ZW1lbnQuYCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN0YXRlbWVudFZhbGlkYXRlcyk7XG4gICAgICB9KTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlblN0YXRlZChjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBzdGF0ZWQgPSBjb250ZXh0LmlzU3RhdGVkKCk7XG5cbiAgICBpZiAoIXN0YXRlZCkge1xuICAgICAgY29uc3QgdmFsaWRhdGVzV2hlblN0YXRlZCA9IGZhbHNlO1xuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHZhbGlkYXRlc1doZW5TdGF0ZWQpO1xuICAgIH1cblxuICAgIGxldCB2YWxpZGF0ZXNXaGVuU3RhdGVkO1xuXG4gICAgY29uc3QgY29uc3RyYWludFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBzdGF0ZWQgY29uc3RyYWludC4uLmApO1xuXG4gICAgdmFsaWRhdGVzV2hlblN0YXRlZCA9IHRydWVcblxuICAgIGlmICh2YWxpZGF0ZXNXaGVuU3RhdGVkKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBzdGF0ZWQgY29uc3RyYWludC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGludWF0aW9uKHZhbGlkYXRlc1doZW5TdGF0ZWQpO1xuICB9XG5cbiAgdmFsaWRhdGVXaGVuRGVyaXZlZChjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBzdGF0ZWQgPSBjb250ZXh0LmlzU3RhdGVkKCk7XG5cbiAgICBpZiAoc3RhdGVkKSB7XG4gICAgICBjb25zdCB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IGZhbHNlO1xuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHZhbGlkYXRlc1doZW5EZXJpdmVkKTtcbiAgICB9XG5cbiAgICBsZXQgdmFsaWRhdGVzV2hlbkRlcml2ZWQ7XG5cbiAgICBjb25zdCBjb25zdHJhaW50U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGRlcml2ZWQgY29uc3RyYWludC4uLmApO1xuXG4gICAgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSB0cnVlO1xuXG4gICAgaWYgKHZhbGlkYXRlc1doZW5EZXJpdmVkKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBkZXJpdmVkIGNvbnN0cmFpbnQuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbih2YWxpZGF0ZXNXaGVuRGVyaXZlZCk7XG4gIH1cblxuICB1bmlmeVJlZmVyZW5jZShyZWZlcmVuY2UsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGlmIChyZWZlcmVuY2UgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHJlZmVyZW5jZVVuaWZpZXMgPSB0cnVlOyAgLy8vXG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24ocmVmZXJlbmNlVW5pZmllcyk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIHJlZmVyZW5jZVN0cmluZyA9IHJlZmVyZW5jZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBjb25zdHJhaW50U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7cmVmZXJlbmNlU3RyaW5nfScgcmVmZXJlbmNlIHdpdGggdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3MgcmVmZXJlbmNlLi4uYCk7XG5cbiAgICBjb25zdCBtZXRhdmFyaWFibGUgPSB0aGlzLmdldE1ldGF2YXJpYWJsZSgpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZS51bmlmeVJlZmVyZW5jZShyZWZlcmVuY2UsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChyZWZlcmVuY2VVbmlmaWVzKSA9PiB7XG4gICAgICBpZiAocmVmZXJlbmNlVW5pZmllcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLnVuaWZpZWQgdGhlICcke3JlZmVyZW5jZVN0cmluZ30nIHdpdGggdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3MgcmVmZXJlbmNlLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHJlZmVyZW5jZVVuaWZpZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgdW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAgLy8vXG4gICAgICAgICAgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICAgIGNvbnN0cmFpbnRTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQncyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIGNvbnN0IGdlbmVyYWxTdGF0ZW1lbnQgPSB0aGlzLnN0YXRlbWVudCwgIC8vL1xuICAgICAgICAgIHNwZWNpZmljU3RhdGVtZW50ID0gc3RyaXBCcmFja2V0c0Zyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTsgIC8vL1xuXG4gICAgcmV0dXJuIHVuaWZ5U3RhdGVtZW50KGdlbmVyYWxTdGF0ZW1lbnQsIHNwZWNpZmljU3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoc3RhdGVtZW50VW5pZmllcykgPT4ge1xuICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHdpdGggdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3Mgc3RhdGVtZW50LmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHN0YXRlbWVudFVuaWZpZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgdW5pZnlBc3N1bXB0aW9uKGFzc3VtcHRpb24sIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IGFzc3VtcHRpb25TdHJpbmcgPSBhc3N1bXB0aW9uLmdldFN0cmluZygpLCAgLy8vXG4gICAgICAgICAgY29uc3RyYWludFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGFzc3VtcHRpb24gd2l0aCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQuLi5gKTtcblxuICAgIGNvbnN0IGNvbnN0cmFpbnRDb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksIC8vL1xuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gY29uc3RyYWludENvbnRleHQ7IC8vL1xuXG4gICAgcmV0dXJuIHJlY29uY2lsZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgcmVmZXJlbmNlID0gYXNzdW1wdGlvbi5nZXRSZWZlcmVuY2UoKSxcbiAgICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQ7ICAvLy9cblxuICAgICAgcmV0dXJuIHRoaXMudW5pZnlSZWZlcmVuY2UocmVmZXJlbmNlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAocmVmZXJuZWNlVW5pZmllcykgPT4ge1xuICAgICAgICBpZiAoIXJlZmVybmVjZVVuaWZpZXMpIHtcbiAgICAgICAgICBjb25zdCBhc3N1bXB0aW9uVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihhc3N1bXB0aW9uVW5pZmllcyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdGF0ZW1lbnQgPSBhc3N1bXB0aW9uLmdldFN0YXRlbWVudCgpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKHN0YXRlbWVudFVuaWZpZXMpID0+IHtcbiAgICAgICAgICBsZXQgYXNzdW1wdGlvblVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgICAgICBjb250ZXh0LmNvbW1pdCgpO1xuXG4gICAgICAgICAgICBhc3N1bXB0aW9uVW5pZmllcyA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGFzc3VtcHRpb25VbmlmaWVzKSB7XG4gICAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbiB3aXRoIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludC4uLmApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oYXNzdW1wdGlvblVuaWZpZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgdW5pZnlBc3N1bXB0aW9ucyhhc3N1bXB0aW9ucywgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgc29tZShhc3N1bXB0aW9ucywgKGFzc3VtcHRpb24sIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgdGhpcy51bmlmeUFzc3VtcHRpb24oYXNzdW1wdGlvbiwgY29udGV4dCwgY29udGludWF0aW9uKTtcbiAgICB9LCBjb250aW51YXRpb24pO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHJldHVybiBzZXJpYWxpc2UoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgICBicmVha1BvaW50ID0gdGhpcy5nZXRCcmVha1BvaW50KCk7XG5cbiAgICAgIGNvbnN0IGJyZWFrUG9pbnRKU09OID0gYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04oYnJlYWtQb2ludCk7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgICBjb25zdCBqc29uID0ge1xuICAgICAgICBjb250ZXh0LFxuICAgICAgICBzdHJpbmcsXG4gICAgICAgIGJyZWFrUG9pbnRcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBqc29uO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkNvbnN0cmFpbnRcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIHJldHVybiBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgcmV0dXJuIHVuc2VyaWFsaXNlKChqc29uLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgICBjb25zdHJhaW50Tm9kZSA9IGluc3RhbnRpYXRlQ29uc3RyYWludChzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gY29uc3RyYWludE5vZGUsICAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgICAgcmVmZXJlbmNlID0gcmVmZXJlbmNlRnJvbUNvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbUNvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgY29uc3RyYWludCA9IG5ldyBDb25zdHJhaW50KGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgcmVmZXJlbmNlLCBzdGF0ZW1lbnQpO1xuXG4gICAgICAgIHJldHVybiBjb25zdHJhaW50O1xuICAgICAgfSwganNvbiwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0ZXAoc3RlcCwgY29udGV4dCkge1xuICAgIGxldCBjb25zdHJhaW50O1xuXG4gICAgbGV0IHN0YXRlbWVudDtcblxuICAgIHN0YXRlbWVudCA9IHN0ZXAuZ2V0U3RhdGVtZW50KCk7XG5cbiAgICBzdGF0ZW1lbnQgPSBzdHJpcEJyYWNrZXRzRnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpOyAvLy9cblxuICAgIGNvbnN0IHJlZmVyZW5jZSA9IHN0ZXAuZ2V0UmVmZXJlbmNlKCk7XG5cbiAgICBjb25zdHJhaW50ID0gYWJsYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgY29uc3RyYWludFN0cmluZyA9IGNvbnN0cmFpbnRTdHJpbmdGcm9tUmVmZXJlbmNlQW5kU3RhdGVtZW50KHJlZmVyZW5jZSwgc3RhdGVtZW50KSxcbiAgICAgICAgICAgICAgc3RyaW5nID0gY29uc3RyYWludFN0cmluZywgIC8vL1xuICAgICAgICAgICAgICBjb25zdHJhaW50Tm9kZSA9IGluc3RhbnRpYXRlQ29uc3RyYWludChzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBjb25zdHJhaW50ID0gY29uc3RyYWludEZyb21Db25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIGNvbnN0cmFpbnQ7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb25zdHJhaW50O1xuICB9XG59KTtcblxuZnVuY3Rpb24gcmVmZXJlbmNlRnJvbUNvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHJlZmVyZW5jZU5vZGUgPSBjb25zdHJhaW50Tm9kZS5nZXRSZWZlcmVuY2VOb2RlKCksXG4gICAgICAgIHJlZmVybmVjZSA9IGNvbnRleHQuZmluZFJlZmVyZW5jZUJ5UmVmZXJlbmNlTm9kZShyZWZlcmVuY2VOb2RlKTtcblxuICByZXR1cm4gcmVmZXJuZWNlO1xufVxuXG5mdW5jdGlvbiBzdGF0ZW1lbnRGcm9tQ29uc3RyYWludE5vZGUoY29uc3RyYWludE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IGNvbnN0cmFpbnROb2RlLmdldFN0YXRlbWVudE5vZGUoKSxcbiAgICAgICAgc3RhdGVtZW50ID0gY29udGV4dC5maW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gIHJldHVybiBzdGF0ZW1lbnQ7XG59XG4iXSwibmFtZXMiOlsic29tZSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIkNvbnN0cmFpbnQiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwicmVmZXJlbmNlIiwic3RhdGVtZW50IiwiZ2V0UmVmZXJlbmNlIiwiZ2V0U3RhdGVtZW50IiwiZ2V0Q29uc3RyYWludE5vZGUiLCJnZXROb2RlIiwiY29uc3RyYWludE5vZGUiLCJnZXRNZXRhdmFyaWFibGUiLCJpc0VxdWFsVG8iLCJjb25zdHJhaW50IiwiY29uc3RyYWludE5vZGVNYXRjaGVzIiwibWF0Y2hDb25zdHJhaW50Tm9kZSIsImVxdWFsVG8iLCJub2RlTWF0Y2hlcyIsIm1hdGNoTm9kZSIsImZpbmRDb25zdHJhaW50IiwiZmluZENvbnN0cmFpbnRCeUNvbnN0cmFpbnROb2RlIiwidmFsaWRhdGUiLCJjb250aW51YXRpb24iLCJjb25zdHJhaW50U3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZWJ1ZyIsImdldENvbnRleHQiLCJhdHRlbXB0IiwidmFsaWRhdGVTdGF0ZW1lbnQiLCJiaW5kIiwidmFsaWRhdGVSZWZlcmVuY2UiLCJhbGwiLCJ2YWxpZGF0ZXMiLCJ2YWxpZGF0ZVdoZW5TdGF0ZWQiLCJ2YWxpZGF0ZVdoZW5EZXJpdmVkIiwiZXhpc3RzIiwiYWRkQ29uc3RyYWludCIsImNvbW1pdCIsInJlZmVyZW5jZVZhbGlkYXRlcyIsIm1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZURlY2xhcmVkIiwiaXNEZWNsYXJlZCIsImRlc2NlbmQiLCJzdGF0ZW1lbnRWYWxpZGF0ZXMiLCJzdGF0ZWQiLCJpc1N0YXRlZCIsInZhbGlkYXRlc1doZW5TdGF0ZWQiLCJ2YWxpZGF0ZXNXaGVuRGVyaXZlZCIsInVuaWZ5UmVmZXJlbmNlIiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJyZWZlcmVuY2VVbmlmaWVzIiwicmVmZXJlbmNlU3RyaW5nIiwidW5pZnlTdGF0ZW1lbnQiLCJzdGF0ZW1lbnRTdHJpbmciLCJnZW5lcmFsU3RhdGVtZW50Iiwic3BlY2lmaWNTdGF0ZW1lbnQiLCJzdHJpcEJyYWNrZXRzRnJvbVN0YXRlbWVudCIsInN0YXRlbWVudFVuaWZpZXMiLCJ1bmlmeUFzc3VtcHRpb24iLCJhc3N1bXB0aW9uIiwiYXNzdW1wdGlvblN0cmluZyIsImNvbnN0cmFpbnRDb250ZXh0IiwicmVjb25jaWxlIiwicmVmZXJuZWNlVW5pZmllcyIsImFzc3VtcHRpb25VbmlmaWVzIiwidW5pZnlBc3N1bXB0aW9ucyIsImFzc3VtcHRpb25zIiwidG9KU09OIiwic2VyaWFsaXNlIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwianNvbiIsIm5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwidW5zZXJpYWxpc2UiLCJpbnN0YW50aWF0ZUNvbnN0cmFpbnQiLCJyZWZlcmVuY2VGcm9tQ29uc3RyYWludE5vZGUiLCJzdGF0ZW1lbnRGcm9tQ29uc3RyYWludE5vZGUiLCJmcm9tU3RlcCIsInN0ZXAiLCJhYmxhdGUiLCJjb25zdHJhaW50U3RyaW5nRnJvbVJlZmVyZW5jZUFuZFN0YXRlbWVudCIsImNvbnN0cmFpbnRGcm9tQ29uc3RyYWludE5vZGUiLCJyZWZlcmVuY2VOb2RlIiwiZ2V0UmVmZXJlbmNlTm9kZSIsInJlZmVybmVjZSIsImZpbmRSZWZlcmVuY2VCeVJlZmVyZW5jZU5vZGUiLCJzdGF0ZW1lbnROb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsImZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWdCQTs7O2VBQUE7OztnQ0Fkb0U7MEJBRTdDOzhCQUNLO3VCQUNHOzZCQUNPOzBCQUNLO3lCQUNFO3dCQUNhO3lCQUMrQjtBQUV6RixNQUFNLEVBQUVBLElBQUksRUFBRSxHQUFHQyxxQ0FBcUIsRUFDaEMsRUFBRUMsa0JBQWtCLEVBQUVDLDBCQUEwQixFQUFFLEdBQUdDLG1DQUFtQjtNQUU5RSxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLG1CQUFtQkMsdUJBQU87SUFDcEQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxTQUFTLEVBQUVDLFNBQVMsQ0FBRTtRQUNuRSxLQUFLLENBQUNMLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsU0FBUyxHQUFHQTtRQUNqQixJQUFJLENBQUNDLFNBQVMsR0FBR0E7SUFDbkI7SUFFQUMsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDRixTQUFTO0lBQ3ZCO0lBRUFHLGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQ0YsU0FBUztJQUN2QjtJQUVBRyxvQkFBb0I7UUFDbEIsTUFBTU4sT0FBTyxJQUFJLENBQUNPLE9BQU8sSUFDbkJDLGlCQUFpQlIsTUFBTyxHQUFHO1FBRWpDLE9BQU9RO0lBQ1Q7SUFFQUMsa0JBQWtCO1FBQUUsT0FBTyxJQUFJLENBQUNQLFNBQVMsQ0FBQ08sZUFBZTtJQUFJO0lBRTdEQyxVQUFVQyxVQUFVLEVBQUU7UUFDcEIsTUFBTUgsaUJBQWlCRyxXQUFXSixPQUFPLElBQ25DSyx3QkFBd0IsSUFBSSxDQUFDQyxtQkFBbUIsQ0FBQ0wsaUJBQ2pETSxVQUFVRix1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
@@ -62,7 +62,7 @@ const _default = (0, _elements.define)(class Constructor extends _occamlanguages
62
62
  }
63
63
  verify(context, continuation) {
64
64
  let verifies = false;
65
- const includeType = false, constructorString = this.getString(includeType);
65
+ const includeType = false, constructorString = this.getString(includeType); ///
66
66
  context.trace(`Verifying the '${constructorString}' constructor...`);
67
67
  (0, _context.attempt)((context)=>{
68
68
  const validates = this.validate(context, (constructor, context)=>true);
@@ -78,7 +78,7 @@ const _default = (0, _elements.define)(class Constructor extends _occamlanguages
78
78
  }
79
79
  validate(context, continuation) {
80
80
  let validates;
81
- const includeType = false, constructorString = this.getString(includeType);
81
+ const includeType = false, constructorString = this.getString(includeType); ///
82
82
  context.trace(`Validating the '${constructorString}' constructor...`);
83
83
  const validateTermAsVariable = this.validateTermAsVariable.bind(this), validateTermAsConstructor = this.validateTermAsConstructor.bind(this);
84
84
  validates = (0, _continuation.exists)([
@@ -97,7 +97,7 @@ const _default = (0, _elements.define)(class Constructor extends _occamlanguages
97
97
  let termValidatesAsVariable = false;
98
98
  const hypothetical = this.isHypothetical();
99
99
  if (!hypothetical) {
100
- const includeType = false, constructorString = this.getString(includeType);
100
+ const includeType = false, constructorString = this.getString(includeType); ///
101
101
  context.trace(`Validating the '${constructorString}' constructor's term as a variable...`);
102
102
  termValidatesAsVariable = (0, _validation.validateTermAsVariable)(this.term, context, (term, context)=>{
103
103
  let termValidatesAsVariable = false;
@@ -117,7 +117,7 @@ const _default = (0, _elements.define)(class Constructor extends _occamlanguages
117
117
  let termValidatesAsConstructor = false;
118
118
  const hypothetical = this.isHypothetical();
119
119
  if (!hypothetical) {
120
- const includeType = false, constructorString = this.getString(includeType);
120
+ const includeType = false, constructorString = this.getString(includeType); ///
121
121
  context.trace(`Validating the '${constructorString}' constructor's term...`);
122
122
  termValidatesAsConstructor = (0, _validate.validateTermAsConstructor)(this.term, context, continuation);
123
123
  if (termValidatesAsConstructor) {
@@ -207,4 +207,4 @@ const _default = (0, _elements.define)(class Constructor extends _occamlanguages
207
207
  }
208
208
  });
209
209
 
210
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbnN0cnVjdG9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZXZlcnksIGV4aXN0cyB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGludWF0aW9uXCI7XG5pbXBvcnQgeyBiYXNlVHlwZUZyb21Ob3RoaW5nIH0gZnJvbSBcIi4uL3V0aWxpdGllcy90eXBlXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUNvbnN0cnVjdG9yIH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IHZhbGlkYXRlVGVybUFzVmFyaWFibGUgfSBmcm9tIFwiLi4vcHJvY2Vzcy92YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbUNvbnN0cnVjdG9yTm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuaW1wb3J0IHsgdW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yIH0gZnJvbSBcIi4uL3Byb2Nlc3MvdW5pZnlcIjtcbmltcG9ydCB7IHZhbGlkYXRlVGVybUFzQ29uc3RydWN0b3IgfSBmcm9tIFwiLi4vcHJvY2Vzcy92YWxpZGF0ZVwiO1xuaW1wb3J0IHsgYXR0ZW1wdCwgc2VyaWFsaXNlLCB1bnNlcmlhbGlzZSwgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IHR5cGVGcm9tSlNPTiwgdHlwZVRvVHlwZUpTT04sIGh5cG90aGVzZXNGcm9tSlNPTiwgaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2pzb25cIjtcblxuY29uc3QgeyAgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgYnJlYWtQb2ludEZyb21KU09OLCBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIENvbnN0cnVjdG9yIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgdHlwZSwgaHlwb3RoZXNlcykge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5oeXBvdGhlc2VzID0gaHlwb3RoZXNlcztcbiAgfVxuXG4gIGdldFRlcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMudGVybTtcbiAgfVxuXG4gIGdldFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZTtcbiAgfVxuXG4gIGdldEh5cG90aGVzZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaHlwb3RoZXNlcztcbiAgfVxuXG4gIHNldEh5cG90aGVzZXMoaHlwb3RoZXNlcykge1xuICAgIHRoaXMuaHlwb3RoZXNlcyA9IGh5cG90aGVzZXM7XG4gIH1cblxuICBpc0h5cG90aGV0aWNhbCgpIHtcbiAgICBjb25zdCBoeXBvdGhlc2VzTGVuZ3RoID0gdGhpcy5oeXBvdGhlc2VzLmxlbmd0aCxcbiAgICAgICAgICBoeXBvdGhldGljYWwgPSAoaHlwb3RoZXNlc0xlbmd0aCA+IDApO1xuXG4gICAgcmV0dXJuIGh5cG90aGV0aWNhbDtcbiAgfVxuXG4gIGdldENvbnN0cnVjdG9yTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgY29uc3RydWN0b3JOb2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGNvbnN0cnVjdG9yTm9kZTtcbiAgfVxuXG4gIGdldFN0cmluZyhpbmNsdWRlVHlwZSA9IHRydWUpIHtcbiAgICBsZXQgc3RyaW5nO1xuXG4gICAgaWYgKGluY2x1ZGVUeXBlKSB7XG4gICAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGhpcy50ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgICAgdHlwZVN0cmluZyA9IHRoaXMudHlwZS5nZXRTdHJpbmcoKTtcblxuICAgICAgc3RyaW5nID0gYCR7dGVybVN0cmluZ30uJHt0eXBlU3RyaW5nfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0cmluZyA9IHN1cGVyLmdldFN0cmluZygpO1xuICAgIH1cblxuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cblxuICBzZXRUeXBlKHR5cGUpIHtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICB9XG5cbiAgdmVyaWZ5KGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2ZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICBjb25zdHJ1Y3RvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci4uLmApO1xuXG4gICAgYXR0ZW1wdCgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdGVzID0gdGhpcy52YWxpZGF0ZShjb250ZXh0LCAoY29uc3RydWN0b3IsIGNvbnRleHQpID0+IHRydWUpO1xuXG4gICAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICAgIHRoaXMuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgIHZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9LCBjb250ZXh0KTtcblxuICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbih2ZXJpZmllcywgY29udGV4dCk7XG4gIH1cblxuICB2YWxpZGF0ZShjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgY29uc3QgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICBjb25zdHJ1Y3RvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuLi5gKTtcblxuICAgIGNvbnN0IHZhbGlkYXRlVGVybUFzVmFyaWFibGUgPSB0aGlzLnZhbGlkYXRlVGVybUFzVmFyaWFibGUuYmluZCh0aGlzKSxcbiAgICAgICAgICB2YWxpZGF0ZVRlcm1Bc0NvbnN0cnVjdG9yID0gdGhpcy52YWxpZGF0ZVRlcm1Bc0NvbnN0cnVjdG9yLmJpbmQodGhpcyk7XG5cbiAgICB2YWxpZGF0ZXMgPSBleGlzdHMoW1xuICAgICAgdmFsaWRhdGVUZXJtQXNWYXJpYWJsZSxcbiAgICAgIHZhbGlkYXRlVGVybUFzQ29uc3RydWN0b3JcbiAgICBdLCBjb250ZXh0LCAoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgY29uc3RydWN0b3IgPSB0aGlzO1xuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKGNvbnN0cnVjdG9yLCBjb250ZXh0KTtcbiAgICB9KTtcblxuICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVUZXJtQXNWYXJpYWJsZShjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdGVybVZhbGlkYXRlc0FzVmFyaWFibGUgPSBmYWxzZTtcblxuICAgIGNvbnN0IGh5cG90aGV0aWNhbCA9IHRoaXMuaXNIeXBvdGhldGljYWwoKTtcblxuICAgIGlmICghaHlwb3RoZXRpY2FsKSB7XG4gICAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgICAgY29uc3RydWN0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IncyB0ZXJtIGFzIGEgdmFyaWFibGUuLi5gKTtcblxuICAgICAgdGVybVZhbGlkYXRlc0FzVmFyaWFibGUgPSB2YWxpZGF0ZVRlcm1Bc1ZhcmlhYmxlKHRoaXMudGVybSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHRlcm1WYWxpZGF0ZXNBc1ZhcmlhYmxlID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgdHlwZSA9IHRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICBiYXNlVHlwZSA9IGJhc2VUeXBlRnJvbU5vdGhpbmcoKTtcblxuICAgICAgICBpZiAodHlwZSA9PT0gYmFzZVR5cGUpIHtcbiAgICAgICAgICB0ZXJtVmFsaWRhdGVzQXNWYXJpYWJsZSA9IGNvbnRpbnVhdGlvbihjb250ZXh0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0ZXJtVmFsaWRhdGVzQXNWYXJpYWJsZTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGVybVZhbGlkYXRlc0FzVmFyaWFibGUpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yJ3MgdGVybSBhcyBhIHZhcmlhYmxlLmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0ZXJtVmFsaWRhdGVzQXNWYXJpYWJsZTtcbiAgfVxuXG4gIHZhbGlkYXRlVGVybUFzQ29uc3RydWN0b3IoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHRlcm1WYWxpZGF0ZXNBc0NvbnN0cnVjdG9yID0gZmFsc2U7XG5cbiAgICBjb25zdCBoeXBvdGhldGljYWwgPSB0aGlzLmlzSHlwb3RoZXRpY2FsKCk7XG5cbiAgICBpZiAoIWh5cG90aGV0aWNhbCkge1xuICAgICAgY29uc3QgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpO1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yJ3MgdGVybS4uLmApO1xuXG4gICAgICB0ZXJtVmFsaWRhdGVzQXNDb25zdHJ1Y3RvciA9IHZhbGlkYXRlVGVybUFzQ29uc3RydWN0b3IodGhpcy50ZXJtLCBjb250ZXh0LCBjb250aW51YXRpb24pO1xuXG4gICAgICBpZiAodGVybVZhbGlkYXRlc0FzQ29uc3RydWN0b3IpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yJ3MgdGVybS5gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGVybVZhbGlkYXRlc0FzQ29uc3RydWN0b3I7XG4gIH1cblxuICB1bmlmeVRlcm0odGVybSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHRlcm1VbmlmaWVzO1xuXG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgaW5jbHVkZVR5cGUgPSB0cnVlLFxuICAgICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gd2l0aCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci4uLmApO1xuXG4gICAgdGVybVVuaWZpZXMgPSB0aGlzLmRpc2NoYXJnZUh5cG90aGVzZXNHaXZlblRlcm0odGVybSwgY29udGV4dCwgKGNvbnRleHQpID0+IHtcbiAgICAgIGxldCB0ZXJtVW5pZmllc1dpdGhDb25zdHJ1Y3RvcjtcblxuICAgICAgY29uc3QgY29uc3RydWN0b3IgPSB0aGlzLCAvLy9cbiAgICAgICAgICAgIGNvbnN0cnVjdG9yQ29udGV4dCA9IGNvbnN0cnVjdG9yLmdldENvbnRleHQoKSxcbiAgICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gY29uc3RydWN0b3JDb250ZXh0LCAgLy8vXG4gICAgICAgICAgICBzcGVjaWZpQ29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gICAgICB0ZXJtVW5pZmllc1dpdGhDb25zdHJ1Y3RvciA9IHVuaWZ5VGVybVdpdGhDb25zdHJ1Y3Rvcih0ZXJtLCBjb25zdHJ1Y3RvciwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmlDb250ZXh0LCAoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmlDb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCB0ZXJtVW5pZmllc1dpdGhDb25zdHJ1Y3RvcjtcblxuICAgICAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaUNvbnRleHQsIC8vL1xuICAgICAgICAgICAgICBwcm92aXNpb25hbCA9IHRoaXMudHlwZS5pc1Byb3Zpc2lvbmFsKCk7XG5cbiAgICAgICAgdGVybS5zZXRQcm92aXNpb25hbChwcm92aXNpb25hbCk7XG5cbiAgICAgICAgdGVybS5zZXRUeXBlKHRoaXMudHlwZSk7XG5cbiAgICAgICAgdGVybVVuaWZpZXNXaXRoQ29uc3RydWN0b3IgPSBjb250aW51YXRpb24odGVybSwgY29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIHRlcm1VbmlmaWVzV2l0aENvbnN0cnVjdG9yO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB0ZXJtVW5pZmllc1dpdGhDb25zdHJ1Y3RvcjtcbiAgICB9KTtcblxuICAgIGlmICh0ZXJtVW5pZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gd2l0aCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVybVVuaWZpZXM7XG4gIH1cblxuICBkaXNjaGFyZ2VIeXBvdGhlc2VzR2l2ZW5UZXJtKHRlcm0sIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCBoeXBvdGhlc2VzRGlzY2hhcmdlc0dpdmVuVGVybTtcblxuICAgIGNvbnN0IGh5cG90aGV0aWNhbCA9IHRoaXMuaXNIeXBvdGhldGljYWwoKTtcblxuICAgIGlmKCFoeXBvdGhldGljYWwpIHtcbiAgICAgIGh5cG90aGVzZXNEaXNjaGFyZ2VzR2l2ZW5UZXJtID0gY29udGludWF0aW9uKGNvbnRleHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjb25zdHJ1Y3R4b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBEaXNjaGFyaW5nIHRoZSAnJHtjb25zdHJ1Y3R4b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzIGhoeXBvdGhlc2VzLi4uYCk7XG5cbiAgICAgIGh5cG90aGVzZXNEaXNjaGFyZ2VzR2l2ZW5UZXJtID0gZXZlcnkodGhpcy5oeXBvdGhlc2VzLCBjb250ZXh0LCAoaHlwb3RoZXNpcywgY29udGV4dCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICAgIGxldCBoeXBvdGhlc2lzRGlzY2hhcmdlc0dpdmVuVGVybTtcblxuICAgICAgICBoeXBvdGhlc2lzRGlzY2hhcmdlc0dpdmVuVGVybSA9IHRoaXMuZGlzY2hhcmdlSHlwb3RoZXNpc0dpdmVuVGVybShoeXBvdGhlc2lzLCB0ZXJtLCBjb250ZXh0LCBjb250aW51YXRpb24pO1xuXG4gICAgICAgIHJldHVybiBoeXBvdGhlc2lzRGlzY2hhcmdlc0dpdmVuVGVybTtcbiAgICAgIH0sIGNvbnRpbnVhdGlvbik7XG5cbiAgICAgIGlmIChoeXBvdGhlc2VzRGlzY2hhcmdlc0dpdmVuVGVybSkge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi5kaXNjaGFyZ2VkIHRoZSAnJHtjb25zdHJ1Y3R4b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzIGhoeXBvdGhlc2VzLmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBoeXBvdGhlc2VzRGlzY2hhcmdlc0dpdmVuVGVybTtcbiAgfVxuXG4gIGRpc2NoYXJnZUh5cG90aGVzaXNHaXZlblRlcm0oaHlwb3RoZXNpcywgdGVybSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IGh5cG90aGVzaXNEaXNjaGFyZ2VzR2l2ZW5UZXJtO1xuXG4gICAgZGVidWdnZXJcblxuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgIGh5cG90aGVzaXNTdHJpbmcgPSBoeXBvdGhlc2lzLmdldFN0cmluZygpLFxuICAgICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBEaXNjaGFyZGluZyB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzIGdpdmVuIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS4uLmApO1xuXG4gICAgaHlwb3RoZXNpc0Rpc2NoYXJnZXNHaXZlblRlcm0gPSBoeXBvdGhlc2lzLmRpc2NoYXJnZUdpdmVuVGVybSh0ZXJtLCBjb250ZXh0KTtcblxuICAgIGlmIChoeXBvdGhlc2lzRGlzY2hhcmdlc0dpdmVuVGVybSkge1xuICAgICAgY29udGV4dC50cmFjZShgLi4uZGlzY2hhcmdlcyB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3RvcidzICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzIGdpdmVuIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaHlwb3RoZXNpc0Rpc2NoYXJnZXNHaXZlblRlcm07XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgcmV0dXJuIHNlcmlhbGlzZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICAgIHR5cGVKU09OID0gdHlwZVRvVHlwZUpTT04odGhpcy50eXBlKSxcbiAgICAgICAgICAgIGh5cG90aGVzZXNKU09OID0gaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04odGhpcy5oeXBvdGhlc2VzKSxcbiAgICAgICAgICAgIHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTtcblxuICAgICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSB0aGlzLmdldEJyZWFrUG9pbnQoKTtcblxuICAgICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICAgIGNvbnN0IHR5cGUgPSB0eXBlSlNPTiwgIC8vL1xuICAgICAgICAgICAgaHlwb3RoZXNlcyA9IGh5cG90aGVzZXNKU09OLCAgLy8vXG4gICAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQsXG4gICAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICAgIGh5cG90aGVzZXNcbiAgICAgICAgICAgIH07XG5cbiAgICAgIHJldHVybiBqc29uO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkNvbnN0cnVjdG9yXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICByZXR1cm4gaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIHJldHVybiB1bnNlcmlhbGlzZSgoanNvbiwgY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgY29uc3RydWN0b3JOb2RlID0gaW5zdGFudGlhdGVDb25zdHJ1Y3RvcihzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gY29uc3RydWN0b3JOb2RlLCAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgICAgdGVybSA9IHRlcm1Gcm9tQ29uc3RydWN0b3JOb2RlKGNvbnN0cnVjdG9yTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHR5cGUgPSB0eXBlRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgICAgIGh5cG90aGVzZXMgPSBoeXBvdGhlc2VzRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgICAgIGNvbnN0cnVjdG9yID0gbmV3IENvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgdHlwZSwgaHlwb3RoZXNlcyk7XG5cbiAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yO1xuICAgICAgfSwganNvbiwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIkNvbnN0cnVjdG9yIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInRlcm0iLCJ0eXBlIiwiaHlwb3RoZXNlcyIsImdldFRlcm0iLCJnZXRUeXBlIiwiZ2V0SHlwb3RoZXNlcyIsInNldEh5cG90aGVzZXMiLCJpc0h5cG90aGV0aWNhbCIsImh5cG90aGVzZXNMZW5ndGgiLCJsZW5ndGgiLCJoeXBvdGhldGljYWwiLCJnZXRDb25zdHJ1Y3Rvck5vZGUiLCJnZXROb2RlIiwiY29uc3RydWN0b3JOb2RlIiwiZ2V0U3RyaW5nIiwiaW5jbHVkZVR5cGUiLCJ0ZXJtU3RyaW5nIiwidHlwZVN0cmluZyIsInNldFR5cGUiLCJ2ZXJpZnkiLCJjb250aW51YXRpb24iLCJ2ZXJpZmllcyIsImNvbnN0cnVjdG9yU3RyaW5nIiwidHJhY2UiLCJhdHRlbXB0IiwidmFsaWRhdGVzIiwidmFsaWRhdGUiLCJjb25zdHJ1Y3RvciIsImNvbW1pdCIsImRlYnVnIiwidmFsaWRhdGVUZXJtQXNWYXJpYWJsZSIsImJpbmQiLCJ2YWxpZGF0ZVRlcm1Bc0NvbnN0cnVjdG9yIiwiZXhpc3RzIiwidGVybVZhbGlkYXRlc0FzVmFyaWFibGUiLCJiYXNlVHlwZSIsImJhc2VUeXBlRnJvbU5vdGhpbmciLCJ0ZXJtVmFsaWRhdGVzQXNDb25zdHJ1Y3RvciIsInVuaWZ5VGVybSIsInRlcm1VbmlmaWVzIiwiZGlzY2hhcmdlSHlwb3RoZXNlc0dpdmVuVGVybSIsInRlcm1VbmlmaWVzV2l0aENvbnN0cnVjdG9yIiwiY29uc3RydWN0b3JDb250ZXh0IiwiZ2V0Q29udGV4dCIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaUNvbnRleHQiLCJ1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IiLCJwcm92aXNpb25hbCIsImlzUHJvdmlzaW9uYWwiLCJzZXRQcm92aXNpb25hbCIsImh5cG90aGVzZXNEaXNjaGFyZ2VzR2l2ZW5UZXJtIiwiY29uc3RydWN0eG9yU3RyaW5nIiwiZXZlcnkiLCJoeXBvdGhlc2lzIiwiaHlwb3RoZXNpc0Rpc2NoYXJnZXNHaXZlblRlcm0iLCJkaXNjaGFyZ2VIeXBvdGhlc2lzR2l2ZW5UZXJtIiwiaHlwb3RoZXNpc1N0cmluZyIsImRpc2NoYXJnZUdpdmVuVGVybSIsInRvSlNPTiIsInNlcmlhbGlzZSIsInR5cGVKU09OIiwidHlwZVRvVHlwZUpTT04iLCJoeXBvdGhlc2VzSlNPTiIsImh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwianNvbiIsIm5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwidW5zZXJpYWxpc2UiLCJpbnN0YW50aWF0ZUNvbnN0cnVjdG9yIiwidGVybUZyb21Db25zdHJ1Y3Rvck5vZGUiLCJ0eXBlRnJvbUpTT04iLCJoeXBvdGhlc2VzRnJvbUpTT04iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWtCQTs7O2VBQUE7OztnQ0FoQm9FOzBCQUU3Qzs4QkFDTztzQkFDTTs2QkFDRzs0QkFDQTt5QkFDQzt1QkFDQzswQkFDQzt5QkFDbUI7c0JBQ2dDO0FBRTdGLE1BQU0sRUFBSSxHQUFHQSxxQ0FBcUIsRUFDNUIsRUFBRUMsa0JBQWtCLEVBQUVDLDBCQUEwQixFQUFFLEdBQUdDLG1DQUFtQjtNQUU5RSxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLG9CQUFvQkMsdUJBQU87SUFDckQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxJQUFJLEVBQUVDLElBQUksRUFBRUMsVUFBVSxDQUFFO1FBQ3JFLEtBQUssQ0FBQ04sU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDQyxJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDQyxJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDQyxVQUFVLEdBQUdBO0lBQ3BCO0lBRUFDLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQ0gsSUFBSTtJQUNsQjtJQUVBSSxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUNILElBQUk7SUFDbEI7SUFFQUksZ0JBQWdCO1FBQ2QsT0FBTyxJ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
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbnN0cnVjdG9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgZXZlcnksIGV4aXN0cyB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGludWF0aW9uXCI7XG5pbXBvcnQgeyBiYXNlVHlwZUZyb21Ob3RoaW5nIH0gZnJvbSBcIi4uL3V0aWxpdGllcy90eXBlXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUNvbnN0cnVjdG9yIH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IHZhbGlkYXRlVGVybUFzVmFyaWFibGUgfSBmcm9tIFwiLi4vcHJvY2Vzcy92YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyB0ZXJtRnJvbUNvbnN0cnVjdG9yTm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuaW1wb3J0IHsgdW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yIH0gZnJvbSBcIi4uL3Byb2Nlc3MvdW5pZnlcIjtcbmltcG9ydCB7IHZhbGlkYXRlVGVybUFzQ29uc3RydWN0b3IgfSBmcm9tIFwiLi4vcHJvY2Vzcy92YWxpZGF0ZVwiO1xuaW1wb3J0IHsgYXR0ZW1wdCwgc2VyaWFsaXNlLCB1bnNlcmlhbGlzZSwgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IHR5cGVGcm9tSlNPTiwgdHlwZVRvVHlwZUpTT04sIGh5cG90aGVzZXNGcm9tSlNPTiwgaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2pzb25cIjtcblxuY29uc3QgeyAgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgYnJlYWtQb2ludEZyb21KU09OLCBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIENvbnN0cnVjdG9yIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgdHlwZSwgaHlwb3RoZXNlcykge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5oeXBvdGhlc2VzID0gaHlwb3RoZXNlcztcbiAgfVxuXG4gIGdldFRlcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMudGVybTtcbiAgfVxuXG4gIGdldFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZTtcbiAgfVxuXG4gIGdldEh5cG90aGVzZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaHlwb3RoZXNlcztcbiAgfVxuXG4gIHNldEh5cG90aGVzZXMoaHlwb3RoZXNlcykge1xuICAgIHRoaXMuaHlwb3RoZXNlcyA9IGh5cG90aGVzZXM7XG4gIH1cblxuICBpc0h5cG90aGV0aWNhbCgpIHtcbiAgICBjb25zdCBoeXBvdGhlc2VzTGVuZ3RoID0gdGhpcy5oeXBvdGhlc2VzLmxlbmd0aCxcbiAgICAgICAgICBoeXBvdGhldGljYWwgPSAoaHlwb3RoZXNlc0xlbmd0aCA+IDApO1xuXG4gICAgcmV0dXJuIGh5cG90aGV0aWNhbDtcbiAgfVxuXG4gIGdldENvbnN0cnVjdG9yTm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5nZXROb2RlKCksXG4gICAgICAgICAgY29uc3RydWN0b3JOb2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGNvbnN0cnVjdG9yTm9kZTtcbiAgfVxuXG4gIGdldFN0cmluZyhpbmNsdWRlVHlwZSA9IHRydWUpIHtcbiAgICBsZXQgc3RyaW5nO1xuXG4gICAgaWYgKGluY2x1ZGVUeXBlKSB7XG4gICAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGhpcy50ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgICAgdHlwZVN0cmluZyA9IHRoaXMudHlwZS5nZXRTdHJpbmcoKTtcblxuICAgICAgc3RyaW5nID0gYCR7dGVybVN0cmluZ30uJHt0eXBlU3RyaW5nfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0cmluZyA9IHN1cGVyLmdldFN0cmluZygpO1xuICAgIH1cblxuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cblxuICBzZXRUeXBlKHR5cGUpIHtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICB9XG5cbiAgdmVyaWZ5KGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2ZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICBjb25zdHJ1Y3RvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yLi4uYCk7XG5cbiAgICBhdHRlbXB0KChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0ZXMgPSB0aGlzLnZhbGlkYXRlKGNvbnRleHQsIChjb25zdHJ1Y3RvciwgY29udGV4dCkgPT4gdHJ1ZSk7XG5cbiAgICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgICAgdGhpcy5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgdmVyaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgaWYgKHZlcmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y29uc3RydWN0b3JTdHJpbmd9JyBjb25zdHJ1Y3Rvci5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGludWF0aW9uKHZlcmlmaWVzLCBjb250ZXh0KTtcbiAgfVxuXG4gIHZhbGlkYXRlKGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2YWxpZGF0ZXM7XG5cbiAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yLi4uYCk7XG5cbiAgICBjb25zdCB2YWxpZGF0ZVRlcm1Bc1ZhcmlhYmxlID0gdGhpcy52YWxpZGF0ZVRlcm1Bc1ZhcmlhYmxlLmJpbmQodGhpcyksXG4gICAgICAgICAgdmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3RvciA9IHRoaXMudmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3Rvci5iaW5kKHRoaXMpO1xuXG4gICAgdmFsaWRhdGVzID0gZXhpc3RzKFtcbiAgICAgIHZhbGlkYXRlVGVybUFzVmFyaWFibGUsXG4gICAgICB2YWxpZGF0ZVRlcm1Bc0NvbnN0cnVjdG9yXG4gICAgXSwgY29udGV4dCwgKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGNvbnN0cnVjdG9yID0gdGhpcztcblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihjb25zdHJ1Y3RvciwgY29udGV4dCk7XG4gICAgfSk7XG5cbiAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlVGVybUFzVmFyaWFibGUoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHRlcm1WYWxpZGF0ZXNBc1ZhcmlhYmxlID0gZmFsc2U7XG5cbiAgICBjb25zdCBoeXBvdGhldGljYWwgPSB0aGlzLmlzSHlwb3RoZXRpY2FsKCk7XG5cbiAgICBpZiAoIWh5cG90aGV0aWNhbCkge1xuICAgICAgY29uc3QgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpOyAgLy8vXG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IncyB0ZXJtIGFzIGEgdmFyaWFibGUuLi5gKTtcblxuICAgICAgdGVybVZhbGlkYXRlc0FzVmFyaWFibGUgPSB2YWxpZGF0ZVRlcm1Bc1ZhcmlhYmxlKHRoaXMudGVybSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHRlcm1WYWxpZGF0ZXNBc1ZhcmlhYmxlID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgdHlwZSA9IHRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICBiYXNlVHlwZSA9IGJhc2VUeXBlRnJvbU5vdGhpbmcoKTtcblxuICAgICAgICBpZiAodHlwZSA9PT0gYmFzZVR5cGUpIHtcbiAgICAgICAgICB0ZXJtVmFsaWRhdGVzQXNWYXJpYWJsZSA9IGNvbnRpbnVhdGlvbihjb250ZXh0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0ZXJtVmFsaWRhdGVzQXNWYXJpYWJsZTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGVybVZhbGlkYXRlc0FzVmFyaWFibGUpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yJ3MgdGVybSBhcyBhIHZhcmlhYmxlLmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0ZXJtVmFsaWRhdGVzQXNWYXJpYWJsZTtcbiAgfVxuXG4gIHZhbGlkYXRlVGVybUFzQ29uc3RydWN0b3IoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHRlcm1WYWxpZGF0ZXNBc0NvbnN0cnVjdG9yID0gZmFsc2U7XG5cbiAgICBjb25zdCBoeXBvdGhldGljYWwgPSB0aGlzLmlzSHlwb3RoZXRpY2FsKCk7XG5cbiAgICBpZiAoIWh5cG90aGV0aWNhbCkge1xuICAgICAgY29uc3QgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICAgIGNvbnN0cnVjdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpOyAgLy8vXG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IncyB0ZXJtLi4uYCk7XG5cbiAgICAgIHRlcm1WYWxpZGF0ZXNBc0NvbnN0cnVjdG9yID0gdmFsaWRhdGVUZXJtQXNDb25zdHJ1Y3Rvcih0aGlzLnRlcm0sIGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG5cbiAgICAgIGlmICh0ZXJtVmFsaWRhdGVzQXNDb25zdHJ1Y3Rvcikge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IncyB0ZXJtLmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0ZXJtVmFsaWRhdGVzQXNDb25zdHJ1Y3RvcjtcbiAgfVxuXG4gIHVuaWZ5VGVybSh0ZXJtLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdGVybVVuaWZpZXM7XG5cbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBpbmNsdWRlVHlwZSA9IHRydWUsXG4gICAgICAgICAgY29uc3RydWN0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yLi4uYCk7XG5cbiAgICB0ZXJtVW5pZmllcyA9IHRoaXMuZGlzY2hhcmdlSHlwb3RoZXNlc0dpdmVuVGVybSh0ZXJtLCBjb250ZXh0LCAoY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHRlcm1VbmlmaWVzV2l0aENvbnN0cnVjdG9yO1xuXG4gICAgICBjb25zdCBjb25zdHJ1Y3RvciA9IHRoaXMsIC8vL1xuICAgICAgICAgICAgY29uc3RydWN0b3JDb250ZXh0ID0gY29uc3RydWN0b3IuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSBjb25zdHJ1Y3RvckNvbnRleHQsICAvLy9cbiAgICAgICAgICAgIHNwZWNpZmlDb250ZXh0ID0gY29udGV4dDsgLy8vXG5cbiAgICAgIHRlcm1VbmlmaWVzV2l0aENvbnN0cnVjdG9yID0gdW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yKHRlcm0sIGNvbnN0cnVjdG9yLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaUNvbnRleHQsIChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaUNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHRlcm1VbmlmaWVzV2l0aENvbnN0cnVjdG9yO1xuXG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpQ29udGV4dCwgLy8vXG4gICAgICAgICAgICAgIHByb3Zpc2lvbmFsID0gdGhpcy50eXBlLmlzUHJvdmlzaW9uYWwoKTtcblxuICAgICAgICB0ZXJtLnNldFByb3Zpc2lvbmFsKHByb3Zpc2lvbmFsKTtcblxuICAgICAgICB0ZXJtLnNldFR5cGUodGhpcy50eXBlKTtcblxuICAgICAgICB0ZXJtVW5pZmllc1dpdGhDb25zdHJ1Y3RvciA9IGNvbnRpbnVhdGlvbih0ZXJtLCBjb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gdGVybVVuaWZpZXNXaXRoQ29uc3RydWN0b3I7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHRlcm1VbmlmaWVzV2l0aENvbnN0cnVjdG9yO1xuICAgIH0pO1xuXG4gICAgaWYgKHRlcm1VbmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yLmApO1xuICAgIH1cblxuICAgIHJldHVybiB0ZXJtVW5pZmllcztcbiAgfVxuXG4gIGRpc2NoYXJnZUh5cG90aGVzZXNHaXZlblRlcm0odGVybSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IGh5cG90aGVzZXNEaXNjaGFyZ2VzR2l2ZW5UZXJtO1xuXG4gICAgY29uc3QgaHlwb3RoZXRpY2FsID0gdGhpcy5pc0h5cG90aGV0aWNhbCgpO1xuXG4gICAgaWYoIWh5cG90aGV0aWNhbCkge1xuICAgICAgaHlwb3RoZXNlc0Rpc2NoYXJnZXNHaXZlblRlcm0gPSBjb250aW51YXRpb24oY29udGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNvbnN0cnVjdHhvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYERpc2NoYXJpbmcgdGhlICcke2NvbnN0cnVjdHhvclN0cmluZ30nIGNvbnN0cnVjdG9yJ3MgaGh5cG90aGVzZXMuLi5gKTtcblxuICAgICAgaHlwb3RoZXNlc0Rpc2NoYXJnZXNHaXZlblRlcm0gPSBldmVyeSh0aGlzLmh5cG90aGVzZXMsIGNvbnRleHQsIChoeXBvdGhlc2lzLCBjb250ZXh0LCBjb250aW51YXRpb24pID0+IHtcbiAgICAgICAgbGV0IGh5cG90aGVzaXNEaXNjaGFyZ2VzR2l2ZW5UZXJtO1xuXG4gICAgICAgIGh5cG90aGVzaXNEaXNjaGFyZ2VzR2l2ZW5UZXJtID0gdGhpcy5kaXNjaGFyZ2VIeXBvdGhlc2lzR2l2ZW5UZXJtKGh5cG90aGVzaXMsIHRlcm0sIGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG5cbiAgICAgICAgcmV0dXJuIGh5cG90aGVzaXNEaXNjaGFyZ2VzR2l2ZW5UZXJtO1xuICAgICAgfSwgY29udGludWF0aW9uKTtcblxuICAgICAgaWYgKGh5cG90aGVzZXNEaXNjaGFyZ2VzR2l2ZW5UZXJtKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLmRpc2NoYXJnZWQgdGhlICcke2NvbnN0cnVjdHhvclN0cmluZ30nIGNvbnN0cnVjdG9yJ3MgaGh5cG90aGVzZXMuYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGh5cG90aGVzZXNEaXNjaGFyZ2VzR2l2ZW5UZXJtO1xuICB9XG5cbiAgZGlzY2hhcmdlSHlwb3RoZXNpc0dpdmVuVGVybShoeXBvdGhlc2lzLCB0ZXJtLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgaHlwb3RoZXNpc0Rpc2NoYXJnZXNHaXZlblRlcm07XG5cbiAgICBkZWJ1Z2dlclxuXG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgaHlwb3RoZXNpc1N0cmluZyA9IGh5cG90aGVzaXMuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgY29uc3RydWN0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYERpc2NoYXJkaW5nIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yJ3MgJyR7aHlwb3RoZXNpc1N0cmluZ30nIGh5cG90aGVzaXMgZ2l2ZW4gdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLi4uYCk7XG5cbiAgICBoeXBvdGhlc2lzRGlzY2hhcmdlc0dpdmVuVGVybSA9IGh5cG90aGVzaXMuZGlzY2hhcmdlR2l2ZW5UZXJtKHRlcm0sIGNvbnRleHQpO1xuXG4gICAgaWYgKGh5cG90aGVzaXNEaXNjaGFyZ2VzR2l2ZW5UZXJtKSB7XG4gICAgICBjb250ZXh0LnRyYWNlKGAuLi5kaXNjaGFyZ2VzIHRoZSAnJHtjb25zdHJ1Y3RvclN0cmluZ30nIGNvbnN0cnVjdG9yJ3MgJyR7aHlwb3RoZXNpc1N0cmluZ30nIGh5cG90aGVzaXMgZ2l2ZW4gdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLmApO1xuICAgIH1cblxuICAgIHJldHVybiBoeXBvdGhlc2lzRGlzY2hhcmdlc0dpdmVuVGVybTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICByZXR1cm4gc2VyaWFsaXNlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgICAgdHlwZUpTT04gPSB0eXBlVG9UeXBlSlNPTih0aGlzLnR5cGUpLFxuICAgICAgICAgICAgaHlwb3RoZXNlc0pTT04gPSBoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTih0aGlzLmh5cG90aGVzZXMpLFxuICAgICAgICAgICAgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpO1xuXG4gICAgICBsZXQgYnJlYWtQb2ludDtcblxuICAgICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEpTT047ICAvLy9cblxuICAgICAgY29uc3QgdHlwZSA9IHR5cGVKU09OLCAgLy8vXG4gICAgICAgICAgICBoeXBvdGhlc2VzID0gaHlwb3RoZXNlc0pTT04sICAvLy9cbiAgICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgICAgYnJlYWtQb2ludCxcbiAgICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgICAgaHlwb3RoZXNlc1xuICAgICAgICAgICAgfTtcblxuICAgICAgcmV0dXJuIGpzb247XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQ29uc3RydWN0b3JcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIHJldHVybiBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgcmV0dXJuIHVuc2VyaWFsaXNlKChqc29uLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgICBjb25zdHJ1Y3Rvck5vZGUgPSBpbnN0YW50aWF0ZUNvbnN0cnVjdG9yKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBjb25zdHJ1Y3Rvck5vZGUsIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgICAgICB0ZXJtID0gdGVybUZyb21Db25zdHJ1Y3Rvck5vZGUoY29uc3RydWN0b3JOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgdHlwZSA9IHR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgaHlwb3RoZXNlcyA9IGh5cG90aGVzZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgY29uc3RydWN0b3IgPSBuZXcgQ29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtLCB0eXBlLCBoeXBvdGhlc2VzKTtcblxuICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7XG4gICAgICB9LCBqc29uLCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxufSk7XG4iXSwibmFtZXMiOlsiY29udGludWF0aW9uVXRpbGl0aWVzIiwiYnJlYWtQb2ludEZyb21KU09OIiwiYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiQ29uc3RydWN0b3IiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwidGVybSIsInR5cGUiLCJoeXBvdGhlc2VzIiwiZ2V0VGVybSIsImdldFR5cGUiLCJnZXRIeXBvdGhlc2VzIiwic2V0SHlwb3RoZXNlcyIsImlzSHlwb3RoZXRpY2FsIiwiaHlwb3RoZXNlc0xlbmd0aCIsImxlbmd0aCIsImh5cG90aGV0aWNhbCIsImdldENvbnN0cnVjdG9yTm9kZSIsImdldE5vZGUiLCJjb25zdHJ1Y3Rvck5vZGUiLCJnZXRTdHJpbmciLCJpbmNsdWRlVHlwZSIsInRlcm1TdHJpbmciLCJ0eXBlU3RyaW5nIiwic2V0VHlwZSIsInZlcmlmeSIsImNvbnRpbnVhdGlvbiIsInZlcmlmaWVzIiwiY29uc3RydWN0b3JTdHJpbmciLCJ0cmFjZSIsImF0dGVtcHQiLCJ2YWxpZGF0ZXMiLCJ2YWxpZGF0ZSIsImNvbnN0cnVjdG9yIiwiY29tbWl0IiwiZGVidWciLCJ2YWxpZGF0ZVRlcm1Bc1ZhcmlhYmxlIiwiYmluZCIsInZhbGlkYXRlVGVybUFzQ29uc3RydWN0b3IiLCJleGlzdHMiLCJ0ZXJtVmFsaWRhdGVzQXNWYXJpYWJsZSIsImJhc2VUeXBlIiwiYmFzZVR5cGVGcm9tTm90aGluZyIsInRlcm1WYWxpZGF0ZXNBc0NvbnN0cnVjdG9yIiwidW5pZnlUZXJtIiwidGVybVVuaWZpZXMiLCJkaXNjaGFyZ2VIeXBvdGhlc2VzR2l2ZW5UZXJtIiwidGVybVVuaWZpZXNXaXRoQ29uc3RydWN0b3IiLCJjb25zdHJ1Y3RvckNvbnRleHQiLCJnZXRDb250ZXh0IiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpQ29udGV4dCIsInVuaWZ5VGVybVdpdGhDb25zdHJ1Y3RvciIsInByb3Zpc2lvbmFsIiwiaXNQcm92aXNpb25hbCIsInNldFByb3Zpc2lvbmFsIiwiaHlwb3RoZXNlc0Rpc2NoYXJnZXNHaXZlblRlcm0iLCJjb25zdHJ1Y3R4b3JTdHJpbmciLCJldmVyeSIsImh5cG90aGVzaXMiLCJoeXBvdGhlc2lzRGlzY2hhcmdlc0dpdmVuVGVybSIsImRpc2NoYXJnZUh5cG90aGVzaXNHaXZlblRlcm0iLCJoeXBvdGhlc2lzU3RyaW5nIiwiZGlzY2hhcmdlR2l2ZW5UZXJtIiwidG9KU09OIiwic2VyaWFsaXNlIiwidHlwZUpTT04iLCJ0eXBlVG9UeXBlSlNPTiIsImh5cG90aGVzZXNKU09OIiwiaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04iLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJqc29uIiwibmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJ1bnNlcmlhbGlzZSIsImluc3RhbnRpYXRlQ29uc3RydWN0b3IiLCJ0ZXJtRnJvbUNvbnN0cnVjdG9yTm9kZSIsInR5cGVGcm9tSlNPTiIsImh5cG90aGVzZXNGcm9tSlNPTiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBa0JBOzs7ZUFBQTs7O2dDQWhCb0U7MEJBRTdDOzhCQUNPO3NCQUNNOzZCQUNHOzRCQUNBO3lCQUNDO3VCQUNDOzBCQUNDO3lCQUNtQjtzQkFDZ0M7QUFFN0YsTUFBTSxFQUFJLEdBQUdBLHFDQUFxQixFQUM1QixFQUFFQyxrQkFBa0IsRUFBRUMsMEJBQTBCLEVBQUUsR0FBR0MsbUNBQW1CO01BRTlFLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsb0JBQW9CQyx1QkFBTztJQUNyRCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLElBQUksRUFBRUMsSUFBSSxFQUFFQyxVQUFVLENBQUU7UUFDckUsS0FBSyxDQUFDTixTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLFVBQVUsR0FBR0E7SUFDcEI7SUFFQUMsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDSCxJQUFJO0lBQ2xCO0lBRUFJLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQ0gsSUFBSTtJQUNsQjtJQUVB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
@@ -16,7 +16,7 @@ function _interop_require_default(obj) {
16
16
  default: obj
17
17
  };
18
18
  }
19
- const { breakable } = _occamlanguages.breakPointUtilities;
19
+ const { all } = _occamlanguages.continuationUtilities, { breakable } = _occamlanguages.breakPointUtilities;
20
20
  const _default = (0, _elements.define)(class CombinatorDeclaration extends _declaration.default {
21
21
  constructor(context, string, node, breakPoint, combinator){
22
22
  super(context, string, node, breakPoint);
@@ -32,16 +32,17 @@ const _default = (0, _elements.define)(class CombinatorDeclaration extends _decl
32
32
  verify = breakable(function(context, continuation) {
33
33
  const combinatorDeclarationString = this.getString(); ///
34
34
  context.trace(`Verifying the '${combinatorDeclarationString}' combinator declaration...`);
35
- return this.verifyCombinator(context, (combinatorVerifies)=>{
36
- let verifies = false;
37
- if (combinatorVerifies) {
35
+ const verifyCombinator = this.verifyCombinator.bind(this);
36
+ return all([
37
+ verifyCombinator
38
+ ], context, (verifies, context)=>{
39
+ if (verifies) {
38
40
  context.addCombinator(this.combinator);
39
- verifies = true;
40
41
  }
41
42
  if (verifies) {
42
43
  context.debug(`...verified the '${combinatorDeclarationString}' combinator declaration.`);
43
44
  }
44
- return continuation(verifies);
45
+ return continuation(verifies, context);
45
46
  });
46
47
  });
47
48
  verifyCombinator(context, continuation) {
@@ -51,10 +52,10 @@ const _default = (0, _elements.define)(class CombinatorDeclaration extends _decl
51
52
  if (combinatorVerifies) {
52
53
  context.debug(`...verified the '${combinatorDeclarationString}' combinator declaration's combinator.`);
53
54
  }
54
- return continuation(combinatorVerifies);
55
+ return continuation(combinatorVerifies, context);
55
56
  });
56
57
  }
57
58
  static name = "CombinatorDeclaration";
58
59
  });
59
60
 
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL2NvbWJpbmF0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBEZWNsYXJhdGlvbiBmcm9tIFwiLi4vZGVjbGFyYXRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5cbmNvbnN0IHsgYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgQ29tYmluYXRvckRlY2xhcmF0aW9uIGV4dGVuZHMgRGVjbGFyYXRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGNvbWJpbmF0b3IpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5jb21iaW5hdG9yID0gY29tYmluYXRvcjtcbiAgfVxuXG4gIGdldENvbWJpbmF0b3IoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29tYmluYXRvcjtcbiAgfVxuXG4gIGdldENvbWJpbmF0b3JEZWNsYXJhdGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbWJpbmF0b3JEZWNsYXJhdGlvbk5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBjb21iaW5hdG9yRGVjbGFyYXRpb25Ob2RlO1xuICB9XG5cbiAgdmVyaWZ5ID0gYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBjb21iaW5hdG9yRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvbWJpbmF0b3JEZWNsYXJhdGlvblN0cmluZ30nIGNvbWJpbmF0b3IgZGVjbGFyYXRpb24uLi5gKTtcblxuICAgIHJldHVybiB0aGlzLnZlcmlmeUNvbWJpbmF0b3IoY29udGV4dCwgKGNvbWJpbmF0b3JWZXJpZmllcykgPT4ge1xuICAgICAgbGV0IHZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICAgIGlmIChjb21iaW5hdG9yVmVyaWZpZXMpIHtcbiAgICAgICAgY29udGV4dC5hZGRDb21iaW5hdG9yKHRoaXMuY29tYmluYXRvcik7XG5cbiAgICAgICAgdmVyaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NvbWJpbmF0b3JEZWNsYXJhdGlvblN0cmluZ30nIGNvbWJpbmF0b3IgZGVjbGFyYXRpb24uYCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24odmVyaWZpZXMpO1xuICAgIH0pO1xuICB9KTtcblxuICB2ZXJpZnlDb21iaW5hdG9yKGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IGNvbWJpbmF0b3JEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y29tYmluYXRvckRlY2xhcmF0aW9uU3RyaW5nfScgY29tYmluYXRvciBkZWNsYXJhdGlvbidzIGNvbWJpbmF0b3IuLi5gKTtcblxuICAgIHJldHVybiB0aGlzLmNvbWJpbmF0b3IudmVyaWZ5KGNvbnRleHQsIChjb21iaW5hdG9yVmVyaWZpZXMpID0+IHtcbiAgICAgIGlmIChjb21iaW5hdG9yVmVyaWZpZXMpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NvbWJpbmF0b3JEZWNsYXJhdGlvblN0cmluZ30nIGNvbWJpbmF0b3IgZGVjbGFyYXRpb24ncyBjb21iaW5hdG9yLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKGNvbWJpbmF0b3JWZXJpZmllcyk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQ29tYmluYXRvckRlY2xhcmF0aW9uXCI7XG59KTtcbiJdLCJuYW1lcyI6WyJicmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiQ29tYmluYXRvckRlY2xhcmF0aW9uIiwiRGVjbGFyYXRpb24iLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJjb21iaW5hdG9yIiwiZ2V0Q29tYmluYXRvciIsImdldENvbWJpbmF0b3JEZWNsYXJhdGlvbk5vZGUiLCJnZXROb2RlIiwiY29tYmluYXRvckRlY2xhcmF0aW9uTm9kZSIsInZlcmlmeSIsImNvbnRpbnVhdGlvbiIsImNvbWJpbmF0b3JEZWNsYXJhdGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwidmVyaWZ5Q29tYmluYXRvciIsImNvbWJpbmF0b3JWZXJpZmllcyIsInZlcmlmaWVzIiwiYWRkQ29tYmluYXRvciIsImRlYnVnIiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBVUE7OztlQUFBOzs7Z0NBUm9DO29FQUVaOzBCQUVEOzs7Ozs7QUFFdkIsTUFBTSxFQUFFQSxTQUFTLEVBQUUsR0FBR0MsbUNBQW1CO01BRXpDLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsOEJBQThCQyxvQkFBVztJQUNuRSxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLFVBQVUsQ0FBRTtRQUN6RCxLQUFLLENBQUNKLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtJQUNwQjtJQUVBQyxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQ0QsVUFBVTtJQUN4QjtJQUVBRSwrQkFBK0I7UUFDN0IsTUFBTUosT0FBTyxJQUFJLENBQUNLLE9BQU8sSUFDbkJDLDRCQUE0Qk4sTUFBTSxHQUFHO1FBRTNDLE9BQU9NO0lBQ1Q7SUFFQUMsU0FBU2QsVUFBVSxTQUFVSyxPQUFPLEVBQUVVLFlBQVk7UUFDaEQsTUFBTUMsOEJBQThCLElBQUksQ0FBQ0MsU0FBUyxJQUFLLEdBQUc7UUFFMURaLFFBQVFhLEtBQUssQ0FBQyxDQUFDLGVBQWUsRUFBRUYsNEJBQTRCLDJCQUEyQixDQUFDO1FBRXhGLE9BQU8sSUFBSSxDQUFDRyxnQkFBZ0IsQ0FBQ2QsU0FBUyxDQUFDZTtZQUNyQyxJQUFJQyxXQUFXO1lBRWYsSUFBSUQsb0JBQW9CO2dCQUN0QmYsUUFBUWlCLGFBQWEsQ0FBQyxJQUFJLENBQUNiLFVBQVU7Z0JBRXJDWSxXQUFXO1lBQ2I7WUFFQSxJQUFJQSxVQUFVO2dCQUNaaEIsUUFBUWtCLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFUCw0QkFBNEIseUJBQXlCLENBQUM7WUFDMUY7WUFFQSxPQUFPRCxhQUFhTTtRQUN0QjtJQUNGLEdBQUc7SUFFSEYsaUJBQWlCZCxPQUFPLEVBQUVVLFlBQVksRUFBRTtRQUN0QyxNQUFNQyw4QkFBOEIsSUFBSSxDQUFDQyxTQUFTLElBQUssR0FBRztRQUUxRFosUUFBUWEsS0FBSyxDQUFDLENBQUMsZUFBZSxFQUFFRiw0QkFBNEIsd0NBQXdDLENBQUM7UUFFckcsT0FBTyxJQUFJLENBQUNQLFVBQVUsQ0FBQ0ssTUFBTSxDQUFDVCxTQUFTLENBQUNlO1lBQ3RDLElBQUlBLG9CQUFvQjtnQkFDdEJmLFFBQVFrQixLQUFLLENBQUMsQ0FBQyxpQkFBaUIsRUFBRVAsNEJBQTRCLHNDQUFzQyxDQUFDO1lBQ3ZHO1lBRUEsT0FBT0QsYUFBYUs7UUFDdEI7SUFDRjtJQUVBLE9BQU9JLE9BQU8sd0JBQXdCO0FBQ3hDIn0=
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL2NvbWJpbmF0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IERlY2xhcmF0aW9uIGZyb20gXCIuLi9kZWNsYXJhdGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcblxuY29uc3QgeyBhbGwgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcyxcbiAgICAgIHsgYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgQ29tYmluYXRvckRlY2xhcmF0aW9uIGV4dGVuZHMgRGVjbGFyYXRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGNvbWJpbmF0b3IpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5jb21iaW5hdG9yID0gY29tYmluYXRvcjtcbiAgfVxuXG4gIGdldENvbWJpbmF0b3IoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29tYmluYXRvcjtcbiAgfVxuXG4gIGdldENvbWJpbmF0b3JEZWNsYXJhdGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbWJpbmF0b3JEZWNsYXJhdGlvbk5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBjb21iaW5hdG9yRGVjbGFyYXRpb25Ob2RlO1xuICB9XG5cbiAgdmVyaWZ5ID0gYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBjb21iaW5hdG9yRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvbWJpbmF0b3JEZWNsYXJhdGlvblN0cmluZ30nIGNvbWJpbmF0b3IgZGVjbGFyYXRpb24uLi5gKTtcblxuICAgIGNvbnN0IHZlcmlmeUNvbWJpbmF0b3IgPSB0aGlzLnZlcmlmeUNvbWJpbmF0b3IuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdmVyaWZ5Q29tYmluYXRvclxuICAgIF0sIGNvbnRleHQsICh2ZXJpZmllcywgY29udGV4dCkgPT4ge1xuICAgICAgaWYgKHZlcmlmaWVzKSB7XG4gICAgICAgIGNvbnRleHQuYWRkQ29tYmluYXRvcih0aGlzLmNvbWJpbmF0b3IpO1xuICAgICAgfVxuXG4gICAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NvbWJpbmF0b3JEZWNsYXJhdGlvblN0cmluZ30nIGNvbWJpbmF0b3IgZGVjbGFyYXRpb24uYCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24odmVyaWZpZXMsIGNvbnRleHQpO1xuICAgIH0pO1xuICB9KTtcblxuICB2ZXJpZnlDb21iaW5hdG9yKGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IGNvbWJpbmF0b3JEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y29tYmluYXRvckRlY2xhcmF0aW9uU3RyaW5nfScgY29tYmluYXRvciBkZWNsYXJhdGlvbidzIGNvbWJpbmF0b3IuLi5gKTtcblxuICAgIHJldHVybiB0aGlzLmNvbWJpbmF0b3IudmVyaWZ5KGNvbnRleHQsIChjb21iaW5hdG9yVmVyaWZpZXMpID0+IHtcbiAgICAgIGlmIChjb21iaW5hdG9yVmVyaWZpZXMpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NvbWJpbmF0b3JEZWNsYXJhdGlvblN0cmluZ30nIGNvbWJpbmF0b3IgZGVjbGFyYXRpb24ncyBjb21iaW5hdG9yLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKGNvbWJpbmF0b3JWZXJpZmllcywgY29udGV4dCk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQ29tYmluYXRvckRlY2xhcmF0aW9uXCI7XG59KTtcbiJdLCJuYW1lcyI6WyJhbGwiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJicmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiQ29tYmluYXRvckRlY2xhcmF0aW9uIiwiRGVjbGFyYXRpb24iLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJjb21iaW5hdG9yIiwiZ2V0Q29tYmluYXRvciIsImdldENvbWJpbmF0b3JEZWNsYXJhdGlvbk5vZGUiLCJnZXROb2RlIiwiY29tYmluYXRvckRlY2xhcmF0aW9uTm9kZSIsInZlcmlmeSIsImNvbnRpbnVhdGlvbiIsImNvbWJpbmF0b3JEZWNsYXJhdGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwidmVyaWZ5Q29tYmluYXRvciIsImJpbmQiLCJ2ZXJpZmllcyIsImFkZENvbWJpbmF0b3IiLCJkZWJ1ZyIsImNvbWJpbmF0b3JWZXJpZmllcyIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVdBOzs7ZUFBQTs7O2dDQVQyRDtvRUFFbkM7MEJBRUQ7Ozs7OztBQUV2QixNQUFNLEVBQUVBLEdBQUcsRUFBRSxHQUFHQyxxQ0FBcUIsRUFDL0IsRUFBRUMsU0FBUyxFQUFFLEdBQUdDLG1DQUFtQjtNQUV6QyxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLDhCQUE4QkMsb0JBQVc7SUFDbkUsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxVQUFVLENBQUU7UUFDekQsS0FBSyxDQUFDSixTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLFVBQVUsR0FBR0E7SUFDcEI7SUFFQUMsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUNELFVBQVU7SUFDeEI7SUFFQUUsK0JBQStCO1FBQzdCLE1BQU1KLE9BQU8sSUFBSSxDQUFDSyxPQUFPLElBQ25CQyw0QkFBNEJOLE1BQU0sR0FBRztRQUUzQyxPQUFPTTtJQUNUO0lBRUFDLFNBQVNkLFVBQVUsU0FBVUssT0FBTyxFQUFFVSxZQUFZO1FBQ2hELE1BQU1DLDhCQUE4QixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRTFEWixRQUFRYSxLQUFLLENBQUMsQ0FBQyxlQUFlLEVBQUVGLDRCQUE0QiwyQkFBMkIsQ0FBQztRQUV4RixNQUFNRyxtQkFBbUIsSUFBSSxDQUFDQSxnQkFBZ0IsQ0FBQ0MsSUFBSSxDQUFDLElBQUk7UUFFeEQsT0FBT3RCLElBQUk7WUFDVHFCO1NBQ0QsRUFBRWQsU0FBUyxDQUFDZ0IsVUFBVWhCO1lBQ3JCLElBQUlnQixVQUFVO2dCQUNaaEIsUUFBUWlCLGFBQWEsQ0FBQyxJQUFJLENBQUNiLFVBQVU7WUFDdkM7WUFFQSxJQUFJWSxVQUFVO2dCQUNaaEIsUUFBUWtCLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFUCw0QkFBNEIseUJBQXlCLENBQUM7WUFDMUY7WUFFQSxPQUFPRCxhQUFhTSxVQUFVaEI7UUFDaEM7SUFDRixHQUFHO0lBRUhjLGlCQUFpQmQsT0FBTyxFQUFFVSxZQUFZLEVBQUU7UUFDdEMsTUFBTUMsOEJBQThCLElBQUksQ0FBQ0MsU0FBUyxJQUFLLEdBQUc7UUFFMURaLFFBQVFhLEtBQUssQ0FBQyxDQUFDLGVBQWUsRUFBRUYsNEJBQTRCLHdDQUF3QyxDQUFDO1FBRXJHLE9BQU8sSUFBSSxDQUFDUCxVQUFVLENBQUNLLE1BQU0sQ0FBQ1QsU0FBUyxDQUFDbUI7WUFDdEMsSUFBSUEsb0JBQW9CO2dCQUN0Qm5CLFFBQVFrQixLQUFLLENBQUMsQ0FBQyxpQkFBaUIsRUFBRVAsNEJBQTRCLHNDQUFzQyxDQUFDO1lBQ3ZHO1lBRUEsT0FBT0QsYUFBYVMsb0JBQW9CbkI7UUFDMUM7SUFDRjtJQUVBLE9BQU9vQixPQUFPLHdCQUF3QjtBQUN4QyJ9
@@ -16,7 +16,7 @@ function _interop_require_default(obj) {
16
16
  default: obj
17
17
  };
18
18
  }
19
- const { breakable } = _occamlanguages.breakPointUtilities;
19
+ const { all } = _occamlanguages.continuationUtilities, { breakable } = _occamlanguages.breakPointUtilities;
20
20
  const _default = (0, _elements.define)(class MetavariableDeclaration extends _declaration.default {
21
21
  constructor(context, string, node, breakPoint, metaType, metavariable){
22
22
  super(context, string, node, breakPoint);
@@ -30,24 +30,24 @@ const _default = (0, _elements.define)(class MetavariableDeclaration extends _de
30
30
  return this.metavariable;
31
31
  }
32
32
  verify = breakable(function(context, continuation) {
33
- let verifies;
34
33
  const metavariableDeclarationString = this.getString(); ///
35
34
  context.trace(`Verifying the '${metavariableDeclarationString}' metavariable declaration...`);
36
- const metavariableVerifies = this.verifyMetavariable(context);
37
- if (metavariableVerifies) {
38
- const metaTypeVerifies = this.verifyMetaType(context);
39
- if (metaTypeVerifies) {
40
- const declaredMetavariable = this.metavariable; ///
35
+ const verifyMetaType = this.verifyMetaType.bind(this), verifyMetavariable = this.verifyMetavariable.bind(this);
36
+ return all([
37
+ verifyMetaType,
38
+ verifyMetavariable
39
+ ], context, (verifies)=>{
40
+ if (verifies) {
41
+ const declaredMetavariable = this.metavariable;
41
42
  context.addDeclaredMetavariable(declaredMetavariable);
42
- verifies = true;
43
43
  }
44
- }
45
- if (verifies) {
46
- context.debug(`...verified the '${metavariableDeclarationString}' metavariable declaration.`);
47
- }
48
- return continuation(verifies);
44
+ if (verifies) {
45
+ context.debug(`...verified the '${metavariableDeclarationString}' metavariable declaration.`);
46
+ }
47
+ return continuation(verifies, context);
48
+ });
49
49
  });
50
- verifyMetaType(context) {
50
+ verifyMetaType(context, continuation) {
51
51
  let metaTypeVerifies = true;
52
52
  const metaTypeDeclarationString = this.getString(); ///
53
53
  context.trace(`Verifying the '${metaTypeDeclarationString}' metavariable declaration's metaType...`);
@@ -55,9 +55,9 @@ const _default = (0, _elements.define)(class MetavariableDeclaration extends _de
55
55
  if (metaTypeVerifies) {
56
56
  context.debug(`...verified the '${metaTypeDeclarationString}' metavariable declaration's metaType.`);
57
57
  }
58
- return metaTypeVerifies;
58
+ return continuation(metaTypeVerifies, context);
59
59
  }
60
- verifyMetavariable(context) {
60
+ verifyMetavariable(context, continuation) {
61
61
  let metavariableVerifies = false;
62
62
  const metavariableDeclarationString = this.getString(); ///
63
63
  context.trace(`Verifying the '${metavariableDeclarationString}' metavariable declaration's metavariable...`);
@@ -70,9 +70,9 @@ const _default = (0, _elements.define)(class MetavariableDeclaration extends _de
70
70
  if (metavariableVerifies) {
71
71
  context.debug(`...verified the '${metavariableDeclarationString}' metavariable declaration's metavariable.`);
72
72
  }
73
- return metavariableVerifies;
73
+ return continuation(metavariableVerifies, context);
74
74
  }
75
75
  static name = "MetavariableDeclaration";
76
76
  });
77
77
 
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL21ldGF2YXJpYWJsZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYnJlYWtQb2ludFV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IERlY2xhcmF0aW9uIGZyb20gXCIuLi9kZWNsYXJhdGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcblxuY29uc3QgeyBicmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBNZXRhdmFyaWFibGVEZWNsYXJhdGlvbiBleHRlbmRzIERlY2xhcmF0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBtZXRhVHlwZSwgbWV0YXZhcmlhYmxlKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMubWV0YVR5cGUgPSBtZXRhVHlwZTtcbiAgICB0aGlzLm1ldGF2YXJpYWJsZSA9IG1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIGdldE1ldGFUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLm1ldGFUeXBlO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlKCkge1xuICAgIHJldHVybiB0aGlzLm1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIHZlcmlmeSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHZlcmlmaWVzO1xuXG4gICAgY29uc3QgbWV0YXZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7bWV0YXZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmd9JyBtZXRhdmFyaWFibGUgZGVjbGFyYXRpb24uLi5gKTtcblxuICAgIGNvbnN0IG1ldGF2YXJpYWJsZVZlcmlmaWVzID0gdGhpcy52ZXJpZnlNZXRhdmFyaWFibGUoY29udGV4dCk7XG5cbiAgICBpZiAobWV0YXZhcmlhYmxlVmVyaWZpZXMpIHtcbiAgICAgIGNvbnN0IG1ldGFUeXBlVmVyaWZpZXMgPSB0aGlzLnZlcmlmeU1ldGFUeXBlKGNvbnRleHQpO1xuXG4gICAgICBpZiAobWV0YVR5cGVWZXJpZmllcykge1xuICAgICAgICBjb25zdCBkZWNsYXJlZE1ldGF2YXJpYWJsZSA9IHRoaXMubWV0YXZhcmlhYmxlOyAvLy9cblxuICAgICAgICBjb250ZXh0LmFkZERlY2xhcmVkTWV0YXZhcmlhYmxlKGRlY2xhcmVkTWV0YXZhcmlhYmxlKTtcblxuICAgICAgICB2ZXJpZmllcyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHZlcmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7bWV0YXZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmd9JyBtZXRhdmFyaWFibGUgZGVjbGFyYXRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbih2ZXJpZmllcyk7XG4gIH0pO1xuXG4gIHZlcmlmeU1ldGFUeXBlKGNvbnRleHQpIHtcbiAgICBsZXQgbWV0YVR5cGVWZXJpZmllcyA9IHRydWU7XG5cbiAgICBjb25zdCBtZXRhVHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke21ldGFUeXBlRGVjbGFyYXRpb25TdHJpbmd9JyBtZXRhdmFyaWFibGUgZGVjbGFyYXRpb24ncyBtZXRhVHlwZS4uLmApO1xuXG4gICAgdGhpcy5tZXRhdmFyaWFibGUuc2V0TWV0YVR5cGUodGhpcy5tZXRhVHlwZSk7XG5cbiAgICBpZiAobWV0YVR5cGVWZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke21ldGFUeXBlRGVjbGFyYXRpb25TdHJpbmd9JyBtZXRhdmFyaWFibGUgZGVjbGFyYXRpb24ncyBtZXRhVHlwZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWV0YVR5cGVWZXJpZmllcztcbiAgfVxuXG4gIHZlcmlmeU1ldGF2YXJpYWJsZShjb250ZXh0KSB7XG4gICAgbGV0IG1ldGF2YXJpYWJsZVZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBtZXRhdmFyaWFibGVEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHttZXRhdmFyaWFibGVEZWNsYXJhdGlvblN0cmluZ30nIG1ldGF2YXJpYWJsZSBkZWNsYXJhdGlvbidzIG1ldGF2YXJpYWJsZS4uLmApO1xuXG4gICAgY29uc3QgbWV0YXZhcmlhYmxlTmFtZSA9IHRoaXMubWV0YXZhcmlhYmxlLmdldE5hbWUoKSxcbiAgICAgICAgICBkZWNsYXJlZE1ldGF2YXJpYWJsZVByZXNlbnQgPSBjb250ZXh0LmlzRGVjbGFyZWRNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpO1xuXG4gICAgaWYgKCFkZWNsYXJlZE1ldGF2YXJpYWJsZVByZXNlbnQpIHtcbiAgICAgIG1ldGF2YXJpYWJsZVZlcmlmaWVzID0gdGhpcy5tZXRhdmFyaWFibGUudmVyaWZ5KGNvbnRleHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7bWV0YXZhcmlhYmxlTmFtZX0nIGRlY2xhcmVkIG1ldGF2YXJpYWJsZSBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG4gICAgfVxuXG4gICAgaWYgKG1ldGF2YXJpYWJsZVZlcmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7bWV0YXZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmd9JyBtZXRhdmFyaWFibGUgZGVjbGFyYXRpb24ncyBtZXRhdmFyaWFibGUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZVZlcmlmaWVzO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIk1ldGF2YXJpYWJsZURlY2xhcmF0aW9uXCI7XG59KTtcbiJdLCJuYW1lcyI6WyJicmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiTWV0YXZhcmlhYmxlRGVjbGFyYXRpb24iLCJEZWNsYXJhdGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsIm1ldGFUeXBlIiwibWV0YXZhcmlhYmxlIiwiZ2V0TWV0YVR5cGUiLCJnZXRNZXRhdmFyaWFibGUiLCJ2ZXJpZnkiLCJjb250aW51YXRpb24iLCJ2ZXJpZmllcyIsIm1ldGF2YXJpYWJsZURlY2xhcmF0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJtZXRhdmFyaWFibGVWZXJpZmllcyIsInZlcmlmeU1ldGF2YXJpYWJsZSIsIm1ldGFUeXBlVmVyaWZpZXMiLCJ2ZXJpZnlNZXRhVHlwZSIsImRlY2xhcmVkTWV0YXZhcmlhYmxlIiwiYWRkRGVjbGFyZWRNZXRhdmFyaWFibGUiLCJkZWJ1ZyIsIm1ldGFUeXBlRGVjbGFyYXRpb25TdHJpbmciLCJzZXRNZXRhVHlwZSIsIm1ldGF2YXJpYWJsZU5hbWUiLCJnZXROYW1lIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVQcmVzZW50IiwiaXNEZWNsYXJlZE1ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5hbWUiLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFVQTs7O2VBQUE7OztnQ0FSb0M7b0VBRVo7MEJBRUQ7Ozs7OztBQUV2QixNQUFNLEVBQUVBLFNBQVMsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFekMsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxnQ0FBZ0NDLG9C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
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL21ldGF2YXJpYWJsZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYnJlYWtQb2ludFV0aWxpdGllcywgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgRGVjbGFyYXRpb24gZnJvbSBcIi4uL2RlY2xhcmF0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuXG5jb25zdCB7IGFsbCB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyBicmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBNZXRhdmFyaWFibGVEZWNsYXJhdGlvbiBleHRlbmRzIERlY2xhcmF0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBtZXRhVHlwZSwgbWV0YXZhcmlhYmxlKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMubWV0YVR5cGUgPSBtZXRhVHlwZTtcbiAgICB0aGlzLm1ldGF2YXJpYWJsZSA9IG1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIGdldE1ldGFUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLm1ldGFUeXBlO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlKCkge1xuICAgIHJldHVybiB0aGlzLm1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIHZlcmlmeSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgbWV0YXZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7bWV0YXZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmd9JyBtZXRhdmFyaWFibGUgZGVjbGFyYXRpb24uLi5gKTtcblxuICAgIGNvbnN0IHZlcmlmeU1ldGFUeXBlID0gdGhpcy52ZXJpZnlNZXRhVHlwZS5iaW5kKHRoaXMpLFxuICAgICAgICAgIHZlcmlmeU1ldGF2YXJpYWJsZSA9IHRoaXMudmVyaWZ5TWV0YXZhcmlhYmxlLmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gYWxsKFtcbiAgICAgIHZlcmlmeU1ldGFUeXBlLFxuICAgICAgdmVyaWZ5TWV0YXZhcmlhYmxlXG4gICAgXSwgIGNvbnRleHQsICh2ZXJpZmllcykgPT4ge1xuICAgICAgaWYgKHZlcmlmaWVzKSB7XG4gICAgICAgIGNvbnN0IGRlY2xhcmVkTWV0YXZhcmlhYmxlID0gdGhpcy5tZXRhdmFyaWFibGU7XG5cbiAgICAgICAgY29udGV4dC5hZGREZWNsYXJlZE1ldGF2YXJpYWJsZShkZWNsYXJlZE1ldGF2YXJpYWJsZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7bWV0YXZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmd9JyBtZXRhdmFyaWFibGUgZGVjbGFyYXRpb24uYCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24odmVyaWZpZXMsIGNvbnRleHQpO1xuICAgIH0pO1xuICB9KTtcblxuICB2ZXJpZnlNZXRhVHlwZShjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgbWV0YVR5cGVWZXJpZmllcyA9IHRydWU7XG5cbiAgICBjb25zdCBtZXRhVHlwZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke21ldGFUeXBlRGVjbGFyYXRpb25TdHJpbmd9JyBtZXRhdmFyaWFibGUgZGVjbGFyYXRpb24ncyBtZXRhVHlwZS4uLmApO1xuXG4gICAgdGhpcy5tZXRhdmFyaWFibGUuc2V0TWV0YVR5cGUodGhpcy5tZXRhVHlwZSk7XG5cbiAgICBpZiAobWV0YVR5cGVWZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke21ldGFUeXBlRGVjbGFyYXRpb25TdHJpbmd9JyBtZXRhdmFyaWFibGUgZGVjbGFyYXRpb24ncyBtZXRhVHlwZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGludWF0aW9uKG1ldGFUeXBlVmVyaWZpZXMsIGNvbnRleHQpO1xuICB9XG5cbiAgdmVyaWZ5TWV0YXZhcmlhYmxlKGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCBtZXRhdmFyaWFibGVWZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgbWV0YXZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7bWV0YXZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmd9JyBtZXRhdmFyaWFibGUgZGVjbGFyYXRpb24ncyBtZXRhdmFyaWFibGUuLi5gKTtcblxuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5hbWUgPSB0aGlzLm1ldGF2YXJpYWJsZS5nZXROYW1lKCksXG4gICAgICAgICAgZGVjbGFyZWRNZXRhdmFyaWFibGVQcmVzZW50ID0gY29udGV4dC5pc0RlY2xhcmVkTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKTtcblxuICAgIGlmICghZGVjbGFyZWRNZXRhdmFyaWFibGVQcmVzZW50KSB7XG4gICAgICBtZXRhdmFyaWFibGVWZXJpZmllcyA9IHRoaXMubWV0YXZhcmlhYmxlLnZlcmlmeShjb250ZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke21ldGF2YXJpYWJsZU5hbWV9JyBkZWNsYXJlZCBtZXRhdmFyaWFibGUgaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuICAgIH1cblxuICAgIGlmIChtZXRhdmFyaWFibGVWZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke21ldGF2YXJpYWJsZURlY2xhcmF0aW9uU3RyaW5nfScgbWV0YXZhcmlhYmxlIGRlY2xhcmF0aW9uJ3MgbWV0YXZhcmlhYmxlLmApO1xuICAgIH1cblxuICAgIHJldHVybiBjb250aW51YXRpb24obWV0YXZhcmlhYmxlVmVyaWZpZXMsIGNvbnRleHQpO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIk1ldGF2YXJpYWJsZURlY2xhcmF0aW9uXCI7XG59KTtcbiJdLCJuYW1lcyI6WyJhbGwiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJicmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiTWV0YXZhcmlhYmxlRGVjbGFyYXRpb24iLCJEZWNsYXJhdGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsIm1ldGFUeXBlIiwibWV0YXZhcmlhYmxlIiwiZ2V0TWV0YVR5cGUiLCJnZXRNZXRhdmFyaWFibGUiLCJ2ZXJpZnkiLCJjb250aW51YXRpb24iLCJtZXRhdmFyaWFibGVEZWNsYXJhdGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwidmVyaWZ5TWV0YVR5cGUiLCJiaW5kIiwidmVyaWZ5TWV0YXZhcmlhYmxlIiwidmVyaWZpZXMiLCJkZWNsYXJlZE1ldGF2YXJpYWJsZSIsImFkZERlY2xhcmVkTWV0YXZhcmlhYmxlIiwiZGVidWciLCJtZXRhVHlwZVZlcmlmaWVzIiwibWV0YVR5cGVEZWNsYXJhdGlvblN0cmluZyIsInNldE1ldGFUeXBlIiwibWV0YXZhcmlhYmxlVmVyaWZpZXMiLCJtZXRhdmFyaWFibGVOYW1lIiwiZ2V0TmFtZSIsImRlY2xhcmVkTWV0YXZhcmlhYmxlUHJlc2VudCIsImlzRGVj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
@@ -40,10 +40,10 @@ const _default = (0, _elements.define)(class VariableDeclaration extends _declar
40
40
  verify = breakable(function(context, continuation) {
41
41
  const variableDeclarationString = this.getString(); ///
42
42
  context.trace(`Verifying the '${variableDeclarationString}' variable declaration...`);
43
- const typeVerifies = this.verifyType.bind(this), variableVerifies = this.verifyVariable.bind(this);
43
+ const verifyType = this.verifyType.bind(this), verifyVariable = this.verifyVariable.bind(this);
44
44
  return all([
45
- typeVerifies,
46
- variableVerifies
45
+ verifyType,
46
+ verifyVariable
47
47
  ], context, (verifies)=>{
48
48
  if (verifies) {
49
49
  const declaredVariable = this.variable;
@@ -97,4 +97,4 @@ const _default = (0, _elements.define)(class VariableDeclaration extends _declar
97
97
  static name = "VariableDeclaration";
98
98
  });
99
99
 
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL3ZhcmlhYmxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBEZWNsYXJhdGlvbiBmcm9tIFwiLi4vZGVjbGFyYXRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5cbmNvbnN0IHsgYWxsIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrYWJsZSB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFZhcmlhYmxlRGVjbGFyYXRpb24gZXh0ZW5kcyBEZWNsYXJhdGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdHlwZSwgdmFyaWFibGUsIHByb3Zpc2lvbmFsKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy52YXJpYWJsZSA9IHZhcmlhYmxlO1xuICAgIHRoaXMucHJvdmlzaW9uYWwgPSBwcm92aXNpb25hbDtcbiAgfVxuXG4gIGdldFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZTtcbiAgfVxuXG4gIGdldFZhcmlhYmxlKCkge1xuICAgIHJldHVybiB0aGlzLnZhcmlhYmxlO1xuICB9XG5cbiAgaXNQcm92aXNpb25hbCgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm92aXNpb25hbDtcbiAgfVxuXG4gIGdldFZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICB2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlO1xuICB9XG5cbiAgdmVyaWZ5ID0gYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCB2YXJpYWJsZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3ZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmd9JyB2YXJpYWJsZSBkZWNsYXJhdGlvbi4uLmApO1xuXG4gICAgY29uc3QgdHlwZVZlcmlmaWVzID0gdGhpcy52ZXJpZnlUeXBlLmJpbmQodGhpcyksXG4gICAgICAgICAgdmFyaWFibGVWZXJpZmllcyA9IHRoaXMudmVyaWZ5VmFyaWFibGUuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBhbGwoW1xuICAgICAgdHlwZVZlcmlmaWVzLFxuICAgICAgdmFyaWFibGVWZXJpZmllc1xuICAgIF0sICBjb250ZXh0LCAodmVyaWZpZXMpID0+IHtcbiAgICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgICBjb25zdCBkZWNsYXJlZFZhcmlhYmxlID0gdGhpcy52YXJpYWJsZTtcblxuICAgICAgICBjb250ZXh0LmFkZERlY2xhcmVkVmFyaWFibGUoZGVjbGFyZWRWYXJpYWJsZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dmFyaWFibGVEZWNsYXJhdGlvblN0cmluZ30nIHZhcmlhYmxlIGRlY2xhcmF0aW9uLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHZlcmlmaWVzLCBjb250ZXh0KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgdmVyaWZ5VHlwZShjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdHlwZVZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCB2YXJpYWJsZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3ZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmd9JyB2YXJpYWJsZSBkZWNsYXJhdGlvbidzIHR5cGUuLi5gKTtcblxuICAgIGNvbnN0IG5vbWluYWxUeXBlTmFtZSA9IHRoaXMudHlwZS5nZXROb21pbmFsVHlwZU5hbWUoKSxcbiAgICAgICAgICB0eXBlID0gY29udGV4dC5maW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSksXG4gICAgICAgICAgdHlwZVByZXNlbnQgPSAodHlwZSAhPT0gbnVsbClcblxuICAgIGlmICghdHlwZVByZXNlbnQpIHtcbiAgICAgIGNvbnN0IHR5cGVTdHJpbmcgPSB0aGlzLnR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBub3QgcHJlc2VudC5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHlwZUNvbXBhcmVzVG9Qcm92aXNpb25hbCA9IHR5cGUuY29tcGFyZVByb3Zpc2lvbmFsKHRoaXMucHJvdmlzaW9uYWwpO1xuXG4gICAgICBpZiAoIXR5cGVDb21wYXJlc1RvUHJvdmlzaW9uYWwpIHtcbiAgICAgICAgY29uc3QgdHlwZVN0cmluZyA9IHRoaXMudHlwZS5nZXRTdHJpbmcoKTtcblxuICAgICAgICB0aGlzLnByb3Zpc2lvbmFsID9cbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dmFyaWFibGVEZWNsYXJhdGlvblN0cmluZ30nIHZhcmlhYmxlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgcHJlc2VudCBidXQgbm90IHByb3Zpc2lvbmFsLmApIDpcbiAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt2YXJpYWJsZURlY2xhcmF0aW9uU3RyaW5nfScgdmFyaWFibGUgZGVjbGFyYXRpb24ncyAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBwcmVzZW50IGJ1dCBwcm92aXNpb25hbC5gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudmFyaWFibGUuc2V0VHlwZSh0eXBlKTtcblxuICAgICAgICB0aGlzLnZhcmlhYmxlLnNldFByb3Zpc2lvbmFsKHRoaXMucHJvdmlzaW9uYWwpO1xuXG4gICAgICAgIHR5cGVWZXJpZmllcyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVWZXJpZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3ZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmd9JyB2YXJpYWJsZSBkZWNsYXJhdGlvbidzIHR5cGUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbih0eXBlVmVyaWZpZXMsIGNvbnRleHQpO1xuICB9XG5cbiAgdmVyaWZ5VmFyaWFibGUoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0ICB2YXJpYWJsZVZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCB2YXJpYWJsZVN0cmluZyA9IHRoaXMudmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgdmFyaWFibGVEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt2YXJpYWJsZURlY2xhcmF0aW9uU3RyaW5nfScgdmFyaWFibGUgZGVjbGFyYXRpb24ncyAnJHt2YXJpYWJsZVN0cmluZ30nIHZhcmlhYmxlLi4uYCk7XG5cbiAgICBjb25zdCB2YXJpYWJsZUlkZW50aWZpZXIgPSB0aGlzLnZhcmlhYmxlLmdldElkZW50aWZpZXIoKSxcbiAgICAgICAgICBkZWNsYXJlZFZhcmlhYmxlUHJlc2VudCA9IGNvbnRleHQuaXNEZWNsYXJlZFZhcmlhYmxlUHJlc2VudEJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcik7XG5cbiAgICBpZiAoZGVjbGFyZWRWYXJpYWJsZVByZXNlbnQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt2YXJpYWJsZVN0cmluZ30nIGRlY2xhcmVkIHZhcmlhYmxlIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyaWFibGVWZXJpZmllcyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHZhcmlhYmxlVmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt2YXJpYWJsZURlY2xhcmF0aW9uU3RyaW5nfScgdmFyaWFibGUgZGVjbGFyYXRpb24ncyAnJHt2YXJpYWJsZVN0cmluZ30nIHZhcmlhYmxlLmApO1xuICAgIH1cblxuICAgIHJldHVybiBjb250aW51YXRpb24odmFyaWFibGVWZXJpZmllcywgY29udGV4dCk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiVmFyaWFibGVEZWNsYXJhdGlvblwiO1xufSk7XG4iXSwibmFtZXMiOlsiYWxsIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIlZhcmlhYmxlRGVjbGFyYXRpb24iLCJEZWNsYXJhdGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInR5cGUiLCJ2YXJpYWJsZSIsInByb3Zpc2lvbmFsIiwiZ2V0VHlwZSIsImdldFZhcmlhYmxlIiwiaXNQcm92aXNpb25hbCIsImdldFZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlIiwiZ2V0Tm9kZSIsInZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlIiwidmVyaWZ5IiwiY29udGludWF0aW9uIiwidmFyaWFibGVEZWNsYXJhdGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwidHlwZVZlcmlmaWVzIiwidmVyaWZ5VHlwZSIsImJpbmQiLCJ2YXJpYWJsZVZlcmlmaWVzIiwidmVyaWZ5VmFyaWFibGUiLCJ2ZXJpZmllcyIsImRlY2xhcmVkVmFyaWFibGUiLCJhZGREZWNsYXJlZFZhcmlhYmxlIiwiZGVidWciLCJub21pbmFsVHlwZU5hbWUiLCJnZXROb21pbmFsVHlwZU5hbWUiLCJmaW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lIiwidHlwZVByZXNlbnQiLCJ0eXBlU3RyaW5nIiwidHlwZUNvbXBhcmVzVG9Qcm92aXNpb25hbCIsImNvbXBhcmVQcm92aXNpb25hbCIsInNldFR5cGUiLCJzZXRQcm92aXNpb25hbCIsInZhcmlhYmxlU3RyaW5nIiwidmFyaWFibGVJZGVudGlmaWVyIiwiZ2V0SWRlbnRpZmllciIsImRlY2xhcmVkVmFyaWFibGVQcmVzZW50IiwiaXNEZWNsYXJlZFZhcmlhYmxlUHJlc2VudEJ5VmFyaWFibGVJZGVudGlmaWVyIiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBV0E7OztlQUFBOzs7Z0NBVDJEO29FQUVuQzswQkFFRDs7Ozs7O0FBRXZCLE1BQU0sRUFBRUEsR0FBRyxFQUFFLEdBQUdDLHFDQUFxQixFQUMvQixFQUFFQyxTQUFTLEVBQUUsR0FBR0MsbUNBQW1CO01BRXpDLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsNEJBQTRCQyxvQkFBVztJQUNqRSxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLElBQUksRUFBRUMsUUFBUSxFQUFFQyxXQUFXLENBQUU7UUFDMUUsS0FBSyxDQUFDTixTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLFFBQVEsR0FBR0E7UUFDaEIsSUFBSSxDQUFDQyxXQUFXLEdBQUdBO0lBQ3JCO0lBRUFDLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQ0gsSUFBSTtJQUNsQjtJQUVBSSxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUNILFFBQVE7SUFDdEI7SUFF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
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2RlY2xhcmF0aW9uL3ZhcmlhYmxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBEZWNsYXJhdGlvbiBmcm9tIFwiLi4vZGVjbGFyYXRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5cbmNvbnN0IHsgYWxsIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrYWJsZSB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIFZhcmlhYmxlRGVjbGFyYXRpb24gZXh0ZW5kcyBEZWNsYXJhdGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdHlwZSwgdmFyaWFibGUsIHByb3Zpc2lvbmFsKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy52YXJpYWJsZSA9IHZhcmlhYmxlO1xuICAgIHRoaXMucHJvdmlzaW9uYWwgPSBwcm92aXNpb25hbDtcbiAgfVxuXG4gIGdldFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZTtcbiAgfVxuXG4gIGdldFZhcmlhYmxlKCkge1xuICAgIHJldHVybiB0aGlzLnZhcmlhYmxlO1xuICB9XG5cbiAgaXNQcm92aXNpb25hbCgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm92aXNpb25hbDtcbiAgfVxuXG4gIGdldFZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICB2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlO1xuICB9XG5cbiAgdmVyaWZ5ID0gYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCB2YXJpYWJsZURlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3ZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmd9JyB2YXJpYWJsZSBkZWNsYXJhdGlvbi4uLmApO1xuXG4gICAgY29uc3QgdmVyaWZ5VHlwZSA9IHRoaXMudmVyaWZ5VHlwZS5iaW5kKHRoaXMpLFxuICAgICAgICAgIHZlcmlmeVZhcmlhYmxlID0gdGhpcy52ZXJpZnlWYXJpYWJsZS5iaW5kKHRoaXMpO1xuXG4gICAgcmV0dXJuIGFsbChbXG4gICAgICB2ZXJpZnlUeXBlLFxuICAgICAgdmVyaWZ5VmFyaWFibGVcbiAgICBdLCAgY29udGV4dCwgKHZlcmlmaWVzKSA9PiB7XG4gICAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgICAgY29uc3QgZGVjbGFyZWRWYXJpYWJsZSA9IHRoaXMudmFyaWFibGU7XG5cbiAgICAgICAgY29udGV4dC5hZGREZWNsYXJlZFZhcmlhYmxlKGRlY2xhcmVkVmFyaWFibGUpO1xuICAgICAgfVxuXG4gICAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3ZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmd9JyB2YXJpYWJsZSBkZWNsYXJhdGlvbi5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih2ZXJpZmllcywgY29udGV4dCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHZlcmlmeVR5cGUoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHR5cGVWZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgdmFyaWFibGVEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt2YXJpYWJsZURlY2xhcmF0aW9uU3RyaW5nfScgdmFyaWFibGUgZGVjbGFyYXRpb24ncyB0eXBlLi4uYCk7XG5cbiAgICBjb25zdCBub21pbmFsVHlwZU5hbWUgPSB0aGlzLnR5cGUuZ2V0Tm9taW5hbFR5cGVOYW1lKCksXG4gICAgICAgICAgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpLFxuICAgICAgICAgIHR5cGVQcmVzZW50ID0gKHR5cGUgIT09IG51bGwpXG5cbiAgICBpZiAoIXR5cGVQcmVzZW50KSB7XG4gICAgICBjb25zdCB0eXBlU3RyaW5nID0gdGhpcy50eXBlLmdldFN0cmluZygpO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgbm90IHByZXNlbnQuYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHR5cGVDb21wYXJlc1RvUHJvdmlzaW9uYWwgPSB0eXBlLmNvbXBhcmVQcm92aXNpb25hbCh0aGlzLnByb3Zpc2lvbmFsKTtcblxuICAgICAgaWYgKCF0eXBlQ29tcGFyZXNUb1Byb3Zpc2lvbmFsKSB7XG4gICAgICAgIGNvbnN0IHR5cGVTdHJpbmcgPSB0aGlzLnR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgICAgdGhpcy5wcm92aXNpb25hbCA/XG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3ZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmd9JyB2YXJpYWJsZSBkZWNsYXJhdGlvbidzICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIHByZXNlbnQgYnV0IG5vdCBwcm92aXNpb25hbC5gKSA6XG4gICAgICAgICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dmFyaWFibGVEZWNsYXJhdGlvblN0cmluZ30nIHZhcmlhYmxlIGRlY2xhcmF0aW9uJ3MgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgcHJlc2VudCBidXQgcHJvdmlzaW9uYWwuYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnZhcmlhYmxlLnNldFR5cGUodHlwZSk7XG5cbiAgICAgICAgdGhpcy52YXJpYWJsZS5zZXRQcm92aXNpb25hbCh0aGlzLnByb3Zpc2lvbmFsKTtcblxuICAgICAgICB0eXBlVmVyaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlVmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt2YXJpYWJsZURlY2xhcmF0aW9uU3RyaW5nfScgdmFyaWFibGUgZGVjbGFyYXRpb24ncyB0eXBlLmApO1xuICAgIH1cblxuICAgIHJldHVybiBjb250aW51YXRpb24odHlwZVZlcmlmaWVzLCBjb250ZXh0KTtcbiAgfVxuXG4gIHZlcmlmeVZhcmlhYmxlKGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCAgdmFyaWFibGVWZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgdmFyaWFibGVTdHJpbmcgPSB0aGlzLnZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICAgIHZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dmFyaWFibGVEZWNsYXJhdGlvblN0cmluZ30nIHZhcmlhYmxlIGRlY2xhcmF0aW9uJ3MgJyR7dmFyaWFibGVTdHJpbmd9JyB2YXJpYWJsZS4uLmApO1xuXG4gICAgY29uc3QgdmFyaWFibGVJZGVudGlmaWVyID0gdGhpcy52YXJpYWJsZS5nZXRJZGVudGlmaWVyKCksXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZVByZXNlbnQgPSBjb250ZXh0LmlzRGVjbGFyZWRWYXJpYWJsZVByZXNlbnRCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpO1xuXG4gICAgaWYgKGRlY2xhcmVkVmFyaWFibGVQcmVzZW50KSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dmFyaWFibGVTdHJpbmd9JyBkZWNsYXJlZCB2YXJpYWJsZSBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhcmlhYmxlVmVyaWZpZXMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh2YXJpYWJsZVZlcmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dmFyaWFibGVEZWNsYXJhdGlvblN0cmluZ30nIHZhcmlhYmxlIGRlY2xhcmF0aW9uJ3MgJyR7dmFyaWFibGVTdHJpbmd9JyB2YXJpYWJsZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGludWF0aW9uKHZhcmlhYmxlVmVyaWZpZXMsIGNvbnRleHQpO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlZhcmlhYmxlRGVjbGFyYXRpb25cIjtcbn0pO1xuIl0sIm5hbWVzIjpbImFsbCIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImJyZWFrYWJsZSIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJWYXJpYWJsZURlY2xhcmF0aW9uIiwiRGVjbGFyYXRpb24iLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJ0eXBlIiwidmFyaWFibGUiLCJwcm92aXNpb25hbCIsImdldFR5cGUiLCJnZXRWYXJpYWJsZSIsImlzUHJvdmlzaW9uYWwiLCJnZXRWYXJpYWJsZURlY2xhcmF0aW9uTm9kZSIsImdldE5vZGUiLCJ2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSIsInZlcmlmeSIsImNvbnRpbnVhdGlvbiIsInZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInZlcmlmeVR5cGUiLCJiaW5kIiwidmVyaWZ5VmFyaWFibGUiLCJ2ZXJpZmllcyIsImRlY2xhcmVkVmFyaWFibGUiLCJhZGREZWNsYXJlZFZhcmlhYmxlIiwiZGVidWciLCJ0eXBlVmVyaWZpZXMiLCJub21pbmFsVHlwZU5hbWUiLCJnZXROb21pbmFsVHlwZU5hbWUiLCJmaW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lIiwidHlwZVByZXNlbnQiLCJ0eXBlU3RyaW5nIiwidHlwZUNvbXBhcmVzVG9Qcm92aXNpb25hbCIsImNvbXBhcmVQcm92aXNpb25hbCIsInNldFR5cGUiLCJzZXRQcm92aXNpb25hbCIsInZhcmlhYmxlVmVyaWZpZXMiLCJ2YXJpYWJsZVN0cmluZyIsInZhcmlhYmxlSWRlbnRpZmllciIsImdldElkZW50aWZpZXIiLCJkZWNsYXJlZFZhcmlhYmxlUHJlc2VudCIsImlzRGVjbGFyZWRWYXJpYWJsZVByZXNlbnRCeVZhcmlhYmxlSWRlbnRpZmllciIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVdBOzs7ZUFBQTs7O2dDQVQyRDtvRUFFbkM7MEJBRUQ7Ozs7OztBQUV2QixNQUFNLEVBQUVBLEdBQUcsRUFBRSxHQUFHQyxxQ0FBcUIsRUFDL0IsRUFBRUMsU0FBUyxFQUFFLEdBQUdDLG1DQUFtQjtNQUV6QyxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLDRCQUE0QkMsb0JBQVc7SUFDakUsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxJQUFJLEVBQUVDLFFBQVEsRUFBRUMsV0FBVyxDQUFFO1FBQzFFLEtBQUssQ0FBQ04sU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDQyxJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDQyxRQUFRLEdBQUdBO1FBQ2hCLElBQUksQ0FBQ0MsV0FBVyxHQUFHQTtJQUNyQjtJQUVBQyxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUNILElBQUk7SUFDbEI7SUFFQUksY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDSCxRQUFRO0lBQ3RCO0lBRUFJLGdCQUFn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