occam-nominal 1.0.427 → 1.0.430

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.
@@ -11,11 +11,11 @@ Object.defineProperty(exports, "default", {
11
11
  const _necessary = require("necessary");
12
12
  const _occamlanguages = require("occam-languages");
13
13
  const _elements = require("../elements");
14
+ const _state = require("../utilities/state");
15
+ const _continuation = require("../utilities/continuation");
14
16
  const _instantiate = require("../process/instantiate");
15
- const _element = require("../utilities/element");
16
17
  const _context = require("../utilities/context");
17
- const _continuation = require("../utilities/continuation");
18
- const { match } = _necessary.arrayUtilities, { asynchronousEvery } = _occamlanguages.continuationUtilities, { breakPointFromJSON, breakPointToBreakPointJSON } = _occamlanguages.breakPointUtilities;
18
+ const { match } = _necessary.arrayUtilities, { breakPointFromJSON, breakPointToBreakPointJSON } = _occamlanguages.breakPointUtilities;
19
19
  const _default = (0, _elements.define)(class Signature extends _occamlanguages.Element {
20
20
  constructor(context, string, node, breakPoint, terms){
21
21
  super(context, string, node, breakPoint);
@@ -36,49 +36,43 @@ const _default = (0, _elements.define)(class Signature extends _occamlanguages.E
36
36
  const term = this.terms[index];
37
37
  return term;
38
38
  }
39
- isEqualTo(signature) {
40
- const signatureNode = signature.getNode(), signatureNodeMatches = this.matchSignatureNode(signatureNode), equalTo = signatureNodeMatches; ///
39
+ isEqualTo(signature1) {
40
+ const signatureNode = signature1.getNode(), signatureNodeMatches = this.matchSignatureNode(signatureNode), equalTo = signatureNodeMatches; ///
41
41
  return equalTo;
42
42
  }
43
43
  matchSignatureNode(signatureNode) {
44
44
  const node = signatureNode, nodeMatches = this.matchNode(node), signatureNodeMatches = nodeMatches; ///
45
45
  return signatureNodeMatches;
46
46
  }
47
- findSignature(context) {
48
- const signatureNode = this.getSignatureNode(), signature = context.findSignatureBySignatureNode(signatureNode);
49
- return signature;
50
- }
51
- verify(context) {
47
+ verify(context, continuation) {
52
48
  let verifies = false;
53
49
  const signatureString = this.getString(); ///
54
50
  context.trace(`Verifying the '${signatureString}' signature...`);
55
- debugger;
56
- const termsValidate = this.validateTerms(context);
57
- if (termsValidate !== null) {
58
- verifies = true;
59
- }
60
- if (verifies) {
61
- this.commit(context);
62
- }
51
+ (0, _state.declare)((state)=>{
52
+ const validates = this.validate(state, context, (conclusion, context)=>true);
53
+ if (validates) {
54
+ verifies = true;
55
+ }
56
+ });
63
57
  if (verifies) {
64
- context.debug(`...validated the '${signatureString}' signature.`);
58
+ context.debug(`...verified the '${signatureString}' signature.`);
65
59
  }
66
- return verifies;
60
+ return continuation(verifies, context);
67
61
  }
68
- validate(state1, context, continuation) {
62
+ validate(state, context, continuation) {
69
63
  let validates;
70
- const specificContext = context, signatureString = this.getString(); ///
64
+ const specificContext = context, signatureString = this.getString();
71
65
  context.trace(`Validating the '${signatureString}' signature...`);
72
- const signature = this; ///
66
+ const signature1 = this; ///
73
67
  (0, _context.attempt)((context)=>{
74
68
  const validateTerms = this.validateTerms.bind(this);
75
69
  validates = (0, _continuation.all)([
76
70
  validateTerms
77
- ], state1, context, (state1, context)=>{
71
+ ], state, context, (state, context)=>{
78
72
  let validates;
79
73
  this.commit(context);
80
74
  context = specificContext; ///
81
- validates = continuation(signature, context);
75
+ validates = continuation(signature1, context);
82
76
  return validates;
83
77
  });
84
78
  }, context);
@@ -88,36 +82,47 @@ const _default = (0, _elements.define)(class Signature extends _occamlanguages.E
88
82
  }
89
83
  return validates;
90
84
  }
91
- validateTerms(context) {
85
+ validateTerm(term, terms, state, context, continuation) {
86
+ let termValidates;
87
+ const termString = term.getString(), signatureString = this.getString(); ///
88
+ context.trace(`Validating the '${signatureString}' signature's '${termString}' term...`);
89
+ termValidates = term.validate(state, context, (term, context)=>{
90
+ let validates;
91
+ terms.push(term);
92
+ validates = continuation(terms, state, context);
93
+ return validates;
94
+ });
95
+ if (termValidates) {
96
+ context.debug(`...validated the '${signatureString}' signature's '${termString}' term.`);
97
+ }
98
+ return termValidates;
99
+ }
100
+ validateTerms(state, context, continuation) {
92
101
  let termsValidate;
93
102
  const signatureString = this.getString(); ///
94
103
  context.trace(`Validating the '${signatureString}' signature's terms...`);
95
- const terms = [];
96
- termsValidate = asynchronousEvery(this.terms, (term)=>{
97
- term = term.validate(state, context, (term, context)=>{
98
- const validatesForwards = true;
99
- return validatesForwards;
100
- });
101
- if (term !== null) {
102
- terms.push(term);
103
- return true;
104
+ const terms = [], validateTerm = this.validateTerm.bind(this);
105
+ termsValidate = (0, _continuation.every)(this.terms, validateTerm, terms, state, context, (terms, state, context)=>{
106
+ let termsValidate;
107
+ termsValidate = continuation(state, context);
108
+ if (termsValidate) {
109
+ this.terms = terms;
104
110
  }
111
+ return termsValidate;
105
112
  });
106
- if (termsValidate) {
107
- this.terms = terms;
108
- }
109
113
  if (termsValidate) {
110
114
  context.debug(`...validated the '${signatureString}' signature's terms.`);
111
115
  }
112
116
  return termsValidate;
113
117
  }
114
- unifySignature(signature, context) {
115
- let signatureUnifies;
118
+ unifyTerms(terms, context, continuation) {
119
+ let termsUnify;
120
+ debugger;
116
121
  const generalSignature = this, specificSignature = signature, generalSignatureString = generalSignature.getString(), specificSignatureString = specificSignature.getString();
117
122
  context.trace(`Unifying the '${specificSignatureString}' signature with the '${generalSignatureString}' signature...`);
118
123
  const generalSignatureTerms = generalSignature.getTerms(), specificSignatureTerms = specificSignature.getTerms(), generalSignatureContext = generalSignature.getContext(), specificSignatureContext = specificSignature.getContext(), generalTerms = generalSignatureTerms, specificTerms = specificSignatureTerms, generalContext = generalSignatureContext, specificContext = specificSignatureContext; ///
119
124
  debugger;
120
- signatureUnifies = (0, _context.reconcile)((specificContext)=>{
125
+ termsUnify = (0, _context.reconcile)((specificContext)=>{
121
126
  match(generalTerms, specificTerms, (generalTerm, specificTerm)=>{
122
127
  let termUnifies;
123
128
  termUnifies = generalTerm.unifyTerm(specificTerm, generalContext, specificContext);
@@ -125,14 +130,14 @@ const _default = (0, _elements.define)(class Signature extends _occamlanguages.E
125
130
  return true;
126
131
  }
127
132
  });
128
- if (signatureUnifies) {
133
+ if (termsUnify) {
129
134
  specificContext.commit(context);
130
135
  }
131
136
  }, specificContext);
132
- if (signatureUnifies) {
137
+ if (termsUnify) {
133
138
  context.debug(`...unified the '${specificSignatureString}' signature with the '${generalSignatureString}' signature.`);
134
139
  }
135
- return signatureUnifies;
140
+ return termsUnify;
136
141
  }
137
142
  toJSON() {
138
143
  const context = this.getContext();
@@ -152,24 +157,14 @@ const _default = (0, _elements.define)(class Signature extends _occamlanguages.E
152
157
  }
153
158
  static name = "Signature";
154
159
  static fromJSON(json, context) {
155
- let signature;
160
+ let signature1;
156
161
  (0, _context.instantiate)((context)=>{
157
162
  (0, _context.unserialise)((json, context)=>{
158
163
  const { string } = json, signatureNode = (0, _instantiate.instantiateSignature)(string, context), node = signatureNode, breakPoint = breakPointFromJSON(json), terms = termsFromSignatureNode(signatureNode, context);
159
- signature = new Signature(context, string, node, breakPoint, terms);
164
+ signature1 = new Signature(context, string, node, breakPoint, terms);
160
165
  }, json, context);
161
166
  }, context);
162
- return signature;
163
- }
164
- static fromSignatureString(signatureString, context) {
165
- let signature;
166
- (0, _context.ablate)((context)=>{
167
- (0, _context.instantiate)((context)=>{
168
- const string = signatureString, signatureNode = (0, _instantiate.instantiateSignature)(string, context);
169
- signature = (0, _element.signatureFromSignatureNode)(signatureNode, context);
170
- }, context);
171
- }, context);
172
- return signature;
167
+ return signature1;
173
168
  }
174
169
  });
175
170
  function termsFromSignatureNode(signatureNode, context) {
@@ -180,4 +175,4 @@ function termsFromSignatureNode(signatureNode, context) {
180
175
  return terms;
181
176
  }
182
177
 
183
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3NpZ25hdHVyZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVTaWduYXR1cmUgfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgc2lnbmF0dXJlRnJvbVNpZ25hdHVyZU5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcbmltcG9ydCB7IGFibGF0ZSwgYXR0ZW1wdCwgcmVjb25jaWxlLCBzZXJpYWxpc2UsIHVuc2VyaWFsaXNlLCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHthbGx9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGludWF0aW9uXCI7XG5cbmNvbnN0IHsgbWF0Y2ggfSA9IGFycmF5VXRpbGl0aWVzLFxuICAgICAgeyBhc3luY2hyb25vdXNFdmVyeSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyBicmVha1BvaW50RnJvbUpTT04sIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgU2lnbmF0dXJlIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybXMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy50ZXJtcyA9IHRlcm1zO1xuICB9XG5cbiAgZ2V0VGVybXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudGVybXM7XG4gIH1cblxuICBnZXRTaWduYXR1cmVOb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBzaWduYXR1cmVOb2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gc2lnbmF0dXJlTm9kZTtcbiAgfVxuXG4gIGdldExlbmd0aCgpIHtcbiAgICBjb25zdCB0ZXJtc0xlbmd0aCA9IHRoaXMudGVybXMubGVuZ3RoLFxuICAgICAgICAgIGxlbmd0aCA9IHRlcm1zTGVuZ3RoOyAvLy9cblxuICAgIHJldHVybiBsZW5ndGg7XG4gIH1cblxuICBnZXRUZXJtKGluZGV4KSB7XG4gICAgY29uc3QgdGVybSA9IHRoaXMudGVybXNbaW5kZXhdO1xuXG4gICAgcmV0dXJuIHRlcm07XG4gIH1cblxuICBpc0VxdWFsVG8oc2lnbmF0dXJlKSB7XG4gICAgY29uc3Qgc2lnbmF0dXJlTm9kZSA9IHNpZ25hdHVyZS5nZXROb2RlKCksXG4gICAgICAgICAgc2lnbmF0dXJlTm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoU2lnbmF0dXJlTm9kZShzaWduYXR1cmVOb2RlKSxcbiAgICAgICAgICBlcXVhbFRvID0gc2lnbmF0dXJlTm9kZU1hdGNoZXM7ICAvLy9cblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgbWF0Y2hTaWduYXR1cmVOb2RlKHNpZ25hdHVyZU5vZGUpIHtcbiAgICBjb25zdCBub2RlID0gc2lnbmF0dXJlTm9kZSwgLy8vXG4gICAgICAgICAgbm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoTm9kZShub2RlKSxcbiAgICAgICAgICBzaWduYXR1cmVOb2RlTWF0Y2hlcyA9IG5vZGVNYXRjaGVzOyAvLy9cblxuICAgIHJldHVybiBzaWduYXR1cmVOb2RlTWF0Y2hlcztcbiAgfVxuXG4gIGZpbmRTaWduYXR1cmUoY29udGV4dCkge1xuICAgIGNvbnN0IHNpZ25hdHVyZU5vZGUgPSB0aGlzLmdldFNpZ25hdHVyZU5vZGUoKSxcbiAgICAgICAgICBzaWduYXR1cmUgPSBjb250ZXh0LmZpbmRTaWduYXR1cmVCeVNpZ25hdHVyZU5vZGUoc2lnbmF0dXJlTm9kZSk7XG5cbiAgICByZXR1cm4gc2lnbmF0dXJlO1xuICB9XG5cbiAgdmVyaWZ5KGNvbnRleHQpIHtcbiAgICBsZXQgdmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHNpZ25hdHVyZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlLi4uYCk7XG5cbiAgICBkZWJ1Z2dlclxuXG4gICAgY29uc3QgdGVybXNWYWxpZGF0ZSA9IHRoaXMudmFsaWRhdGVUZXJtcyhjb250ZXh0KTtcblxuICAgIGlmICh0ZXJtc1ZhbGlkYXRlICE9PSBudWxsKSB7XG4gICAgICB2ZXJpZmllcyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHZlcmlmaWVzKSB7XG4gICAgICB0aGlzLmNvbW1pdChjb250ZXh0KTtcbiAgICB9XG5cbiAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJpZmllcztcbiAgfVxuXG4gIHZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBsZXQgdmFsaWRhdGVzO1xuXG4gICAgY29uc3Qgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dCwgIC8vL1xuICAgICAgICAgIHNpZ25hdHVyZVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlLi4uYCk7XG5cbiAgICBjb25zdCBzaWduYXR1cmUgPSB0aGlzOyAgLy8vXG5cbiAgICBhdHRlbXB0KChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0ZVRlcm1zID0gdGhpcy52YWxpZGF0ZVRlcm1zLmJpbmQodGhpcyk7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGFsbChbXG4gICAgICAgIHZhbGlkYXRlVGVybXNcbiAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgICB0aGlzLmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHNpZ25hdHVyZSwgY29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICAgIH0pO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzaWduYXR1cmVTdHJpbmd9JyBzaWduYXR1cmUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlVGVybXMoY29udGV4dCkge1xuICAgIGxldCB0ZXJtc1ZhbGlkYXRlO1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlJ3MgdGVybXMuLi5gKTtcblxuICAgIGNvbnN0IHRlcm1zID0gW107XG5cbiAgICB0ZXJtc1ZhbGlkYXRlID0gYXN5bmNocm9ub3VzRXZlcnkodGhpcy50ZXJtcywgKHRlcm0pID0+IHtcbiAgICAgIHRlcm0gPSB0ZXJtLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCkgPT4geyAvLy9cbiAgICAgICAgY29uc3QgdmFsaWRhdGVzRm9yd2FyZHMgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiB2YWxpZGF0ZXNGb3J3YXJkcztcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGVybSAhPT0gbnVsbCkge1xuICAgICAgICB0ZXJtcy5wdXNoKHRlcm0pO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHRlcm1zVmFsaWRhdGUpIHtcbiAgICAgIHRoaXMudGVybXMgPSB0ZXJtcztcbiAgICB9XG5cbiAgICBpZiAodGVybXNWYWxpZGF0ZSl7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3NpZ25hdHVyZVN0cmluZ30nIHNpZ25hdHVyZSdzIHRlcm1zLmApO1xuICAgIH1cblxuICAgIHJldHVybiB0ZXJtc1ZhbGlkYXRlXG4gIH1cblxuICB1bmlmeVNpZ25hdHVyZShzaWduYXR1cmUsIGNvbnRleHQpIHtcbiAgICBsZXQgc2lnbmF0dXJlVW5pZmllcztcblxuICAgIGNvbnN0IGdlbmVyYWxTaWduYXR1cmUgPSB0aGlzLCAgLy8vXG4gICAgICAgICAgc3BlY2lmaWNTaWduYXR1cmUgPSBzaWduYXR1cmUsICAvLy9cbiAgICAgICAgICBnZW5lcmFsU2lnbmF0dXJlU3RyaW5nID0gZ2VuZXJhbFNpZ25hdHVyZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzcGVjaWZpY1NpZ25hdHVyZVN0cmluZyA9IHNwZWNpZmljU2lnbmF0dXJlLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3NwZWNpZmljU2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlIHdpdGggdGhlICcke2dlbmVyYWxTaWduYXR1cmVTdHJpbmd9JyBzaWduYXR1cmUuLi5gKTtcblxuICAgIGNvbnN0IGdlbmVyYWxTaWduYXR1cmVUZXJtcyA9IGdlbmVyYWxTaWduYXR1cmUuZ2V0VGVybXMoKSxcbiAgICAgICAgICBzcGVjaWZpY1NpZ25hdHVyZVRlcm1zID0gc3BlY2lmaWNTaWduYXR1cmUuZ2V0VGVybXMoKSxcbiAgICAgICAgICBnZW5lcmFsU2lnbmF0dXJlQ29udGV4dCA9IGdlbmVyYWxTaWduYXR1cmUuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIHNwZWNpZmljU2lnbmF0dXJlQ29udGV4dCA9IHNwZWNpZmljU2lnbmF0dXJlLmdldENvbnRleHQoKSxcbiAgICAgICAgICBnZW5lcmFsVGVybXMgPSBnZW5lcmFsU2lnbmF0dXJlVGVybXMsICAvLy9cbiAgICAgICAgICBzcGVjaWZpY1Rlcm1zID0gc3BlY2lmaWNTaWduYXR1cmVUZXJtcywgLy8vXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSBnZW5lcmFsU2lnbmF0dXJlQ29udGV4dCwgLy8vXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gc3BlY2lmaWNTaWduYXR1cmVDb250ZXh0OyAgLy8vXG5cbiAgICBkZWJ1Z2dlclxuXG4gICAgc2lnbmF0dXJlVW5pZmllcyA9IHJlY29uY2lsZSgoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICBtYXRjaChnZW5lcmFsVGVybXMsIHNwZWNpZmljVGVybXMsIChnZW5lcmFsVGVybSwgc3BlY2lmaWNUZXJtKSA9PiB7XG4gICAgICAgIGxldCB0ZXJtVW5pZmllcztcblxuICAgICAgICB0ZXJtVW5pZmllcyA9IGdlbmVyYWxUZXJtLnVuaWZ5VGVybShzcGVjaWZpY1Rlcm0sIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICAgIGlmICh0ZXJtVW5pZmllcykge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKHNpZ25hdHVyZVVuaWZpZXMpIHtcbiAgICAgICAgc3BlY2lmaWNDb250ZXh0LmNvbW1pdChjb250ZXh0KTtcbiAgICAgIH1cbiAgICB9LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgaWYgKHNpZ25hdHVyZVVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3NwZWNpZmljU2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlIHdpdGggdGhlICcke2dlbmVyYWxTaWduYXR1cmVTdHJpbmd9JyBzaWduYXR1cmUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNpZ25hdHVyZVVuaWZpZXM7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgcmV0dXJuIHNlcmlhbGlzZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3Qgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSB0aGlzLmdldEJyZWFrUG9pbnQoKTtcblxuICAgICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICAgIGNvbnN0IGpzb24gPSB7XG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIHN0cmluZyxcbiAgICAgICAgYnJlYWtQb2ludFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGpzb247XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiU2lnbmF0dXJlXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgc2lnbmF0dXJlO1xuXG4gICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIHVuc2VyaWFsaXNlKChqc29uLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgICBzaWduYXR1cmVOb2RlID0gaW5zdGFudGlhdGVTaWduYXR1cmUoc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IHNpZ25hdHVyZU5vZGUsICAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgICAgdGVybXMgPSB0ZXJtc0Zyb21TaWduYXR1cmVOb2RlKHNpZ25hdHVyZU5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIHNpZ25hdHVyZSA9IG5ldyBTaWduYXR1cmUoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtcyk7XG4gICAgICB9LCBqc29uLCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzaWduYXR1cmU7XG4gIH1cblxuICBzdGF0aWMgZnJvbVNpZ25hdHVyZVN0cmluZyhzaWduYXR1cmVTdHJpbmcsIGNvbnRleHQpIHtcbiAgICBsZXQgc2lnbmF0dXJlO1xuXG4gICAgYWJsYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBzdHJpbmcgPSBzaWduYXR1cmVTdHJpbmcsICAvLy9cbiAgICAgICAgICAgICAgc2lnbmF0dXJlTm9kZSA9IGluc3RhbnRpYXRlU2lnbmF0dXJlKHN0cmluZywgY29udGV4dCk7XG5cbiAgICAgICAgc2lnbmF0dXJlID0gc2lnbmF0dXJlRnJvbVNpZ25hdHVyZU5vZGUoc2lnbmF0dXJlTm9kZSwgY29udGV4dCk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzaWduYXR1cmU7XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiB0ZXJtc0Zyb21TaWduYXR1cmVOb2RlKHNpZ25hdHVyZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdGVybU5vZGVzID0gc2lnbmF0dXJlTm9kZS5nZXRUZXJtTm9kZXMoKSxcbiAgICAgICAgdGVybXMgPSB0ZXJtTm9kZXMubWFwKCh0ZXJtTm9kZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRlcm0gPSBjb250ZXh0LmZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSk7XG5cbiAgICAgICAgICByZXR1cm4gdGVybTtcbiAgICAgICAgfSk7XG5cbiAgcmV0dXJuIHRlcm1zO1xufVxuIl0sIm5hbWVzIjpbIm1hdGNoIiwiYXJyYXlVdGlsaXRpZXMiLCJhc3luY2hyb25vdXNFdmVyeSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIlNpZ25hdHVyZSIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJ0ZXJtcyIsImdldFRlcm1zIiwiZ2V0U2lnbmF0dXJlTm9kZSIsImdldE5vZGUiLCJzaWduYXR1cmVOb2RlIiwiZ2V0TGVuZ3RoIiwidGVybXNMZW5ndGgiLCJsZW5ndGgiLCJnZXRUZXJtIiwiaW5kZXgiLCJ0ZXJtIiwiaXNFcXVhbFRvIiwic2lnbmF0dXJlIiwic2lnbmF0dXJlTm9kZU1hdGNoZXMiLCJtYXRjaFNpZ25hdHVyZU5vZGUiLCJlcXVhbFRvIiwibm9kZU1hdGNoZXMiLCJtYXRjaE5vZGUiLCJmaW5kU2lnbmF0dXJlIiwiZmluZFNpZ25hdHVyZUJ5U2lnbmF0dXJlTm9kZSIsInZlcmlmeSIsInZlcmlmaWVzIiwic2lnbmF0dXJlU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJ0ZXJtc1ZhbGlkYXRlIiwidmFsaWRhdGVUZXJtcyIsImNvbW1pdCIsImRlYnVnIiwidmFsaWRhdGUiLCJzdGF0ZSIsImNvbnRpbnVhdGlvbiIsInZhbGlkYXRlcyIsInNwZWNpZmljQ29udGV4dCIsImF0dGVtcHQiLCJiaW5kIiwiYWxsIiwidmFsaWRhdGVzRm9yd2FyZHMiLCJwdXNoIiwidW5pZnlTaWduYXR1cmUiLCJzaWduYXR1cmVVbmlmaWVzIiwiZ2VuZXJhbFNpZ25hdHVyZSIsInNwZWNpZmljU2lnbmF0dXJlIiwiZ2VuZXJhbFNpZ25hdHVyZVN0cmluZyIsInNwZWNpZmljU2lnbmF0dXJlU3RyaW5nIiwiZ2VuZXJhbFNpZ25hdHVyZVRlcm1zIiwic3BlY2lmaWNTaWduYXR1cmVUZXJtcyIsImdlbmVyYWxTaWduYXR1cmVDb250ZXh0IiwiZ2V0Q29udGV4dCIsInNwZWNpZmljU2lnbmF0dXJlQ29udGV4dCIsImdlbmVyYWxUZXJtcyIsInNwZWNpZmljVGVybXMiLCJnZW5lcmFsQ29udGV4dCIsInJlY29uY2lsZSIsImdlbmVyYWxUZXJtIiwic3BlY2lmaWNUZXJtIiwidGVybVVuaWZpZXMiLCJ1bmlmeVRlcm0iLCJ0b0pTT04iLCJzZXJpYWxpc2UiLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJqc29uIiwibmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJ1bnNlcmlhbGlzZSIsImluc3RhbnRpYXRlU2lnbmF0dXJlIiwidGVybXNGcm9tU2lnbmF0dXJlTm9kZSIsImZyb21TaWduYXR1cmVTdHJpbmciLCJhYmxhdGUiLCJzaWduYXR1cmVGcm9tU2lnbmF0dXJlTm9kZSIsInRlcm1Ob2RlcyIsImdldFRlcm1Ob2RlcyIsIm1hcCIsInRlcm1Ob2RlIiwiZmluZFRlcm1CeVRlcm1Ob2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFlQTs7O2VBQUE7OzsyQkFiK0I7Z0NBQ3FDOzBCQUU3Qzs2QkFDYzt5QkFDTTt5QkFDcUM7OEJBQzlEO0FBRWxCLE1BQU0sRUFBRUEsS0FBSyxFQUFFLEdBQUdDLHlCQUFjLEVBQzFCLEVBQUVDLGlCQUFpQixFQUFFLEdBQUdDLHFDQUFxQixFQUM3QyxFQUFFQyxrQkFBa0IsRUFBRUMsMEJBQTBCLEVBQUUsR0FBR0MsbUNBQW1CO01BRTlFLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsa0JBQWtCQyx1QkFBTztJQUNuRCxZQUFZQyxP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
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3NpZ25hdHVyZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5pbXBvcnQgeyBFbGVtZW50LCBicmVha1BvaW50VXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGRlY2xhcmUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5pbXBvcnQgeyBhbGwsIGV2ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250aW51YXRpb25cIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlU2lnbmF0dXJlIH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IGF0dGVtcHQsIHJlY29uY2lsZSwgc2VyaWFsaXNlLCB1bnNlcmlhbGlzZSwgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcblxuY29uc3QgeyBtYXRjaCB9ID0gYXJyYXlVdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBTaWduYXR1cmUgZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtcykge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnRlcm1zID0gdGVybXM7XG4gIH1cblxuICBnZXRUZXJtcygpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtcztcbiAgfVxuXG4gIGdldFNpZ25hdHVyZU5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHNpZ25hdHVyZU5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBzaWduYXR1cmVOb2RlO1xuICB9XG5cbiAgZ2V0TGVuZ3RoKCkge1xuICAgIGNvbnN0IHRlcm1zTGVuZ3RoID0gdGhpcy50ZXJtcy5sZW5ndGgsXG4gICAgICAgICAgbGVuZ3RoID0gdGVybXNMZW5ndGg7IC8vL1xuXG4gICAgcmV0dXJuIGxlbmd0aDtcbiAgfVxuXG4gIGdldFRlcm0oaW5kZXgpIHtcbiAgICBjb25zdCB0ZXJtID0gdGhpcy50ZXJtc1tpbmRleF07XG5cbiAgICByZXR1cm4gdGVybTtcbiAgfVxuXG4gIGlzRXF1YWxUbyhzaWduYXR1cmUpIHtcbiAgICBjb25zdCBzaWduYXR1cmVOb2RlID0gc2lnbmF0dXJlLmdldE5vZGUoKSxcbiAgICAgICAgICBzaWduYXR1cmVOb2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hTaWduYXR1cmVOb2RlKHNpZ25hdHVyZU5vZGUpLFxuICAgICAgICAgIGVxdWFsVG8gPSBzaWduYXR1cmVOb2RlTWF0Y2hlczsgIC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBtYXRjaFNpZ25hdHVyZU5vZGUoc2lnbmF0dXJlTm9kZSkge1xuICAgIGNvbnN0IG5vZGUgPSBzaWduYXR1cmVOb2RlLCAvLy9cbiAgICAgICAgICBub2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hOb2RlKG5vZGUpLFxuICAgICAgICAgIHNpZ25hdHVyZU5vZGVNYXRjaGVzID0gbm9kZU1hdGNoZXM7IC8vL1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZU5vZGVNYXRjaGVzO1xuICB9XG5cbiAgdmVyaWZ5KGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB2ZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3NpZ25hdHVyZVN0cmluZ30nIHNpZ25hdHVyZS4uLmApO1xuXG4gICAgZGVjbGFyZSgoc3RhdGUpID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlcyA9IHRoaXMudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChjb25jbHVzaW9uLCBjb250ZXh0KSA9PiB0cnVlKTtcblxuICAgICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgICB2ZXJpZmllcyA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzaWduYXR1cmVTdHJpbmd9JyBzaWduYXR1cmUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbih2ZXJpZmllcywgY29udGV4dCk7XG4gIH1cblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHZhbGlkYXRlcztcblxuICAgIGNvbnN0IHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQsICAvLy9cbiAgICAgICAgICBzaWduYXR1cmVTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlLi4uYCk7XG5cbiAgICBjb25zdCBzaWduYXR1cmUgPSB0aGlzOyAgLy8vXG5cbiAgICBhdHRlbXB0KChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0ZVRlcm1zID0gdGhpcy52YWxpZGF0ZVRlcm1zLmJpbmQodGhpcyk7XG5cbiAgICAgIHZhbGlkYXRlcyA9IGFsbChbXG4gICAgICAgIHZhbGlkYXRlVGVybXNcbiAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgICB0aGlzLmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHNpZ25hdHVyZSwgY29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgICAgIH0pO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzaWduYXR1cmVTdHJpbmd9JyBzaWduYXR1cmUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlVGVybSh0ZXJtLCB0ZXJtcywgc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB0ZXJtVmFsaWRhdGVzO1xuXG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc2lnbmF0dXJlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlJ3MgJyR7dGVybVN0cmluZ30nIHRlcm0uLi5gKTtcblxuICAgIHRlcm1WYWxpZGF0ZXMgPSB0ZXJtLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHZhbGlkYXRlcztcblxuICAgICAgdGVybXMucHVzaCh0ZXJtKTtcblxuICAgICAgdmFsaWRhdGVzID0gY29udGludWF0aW9uKHRlcm1zLCBzdGF0ZSwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZXM7XG4gICAgfSk7XG5cbiAgICBpZiAodGVybVZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzaWduYXR1cmVTdHJpbmd9JyBzaWduYXR1cmUncyAnJHt0ZXJtU3RyaW5nfScgdGVybS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVybVZhbGlkYXRlcztcbiAgfVxuXG4gIHZhbGlkYXRlVGVybXMoc3RhdGUsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGxldCB0ZXJtc1ZhbGlkYXRlO1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlJ3MgdGVybXMuLi5gKTtcblxuICAgIGNvbnN0IHRlcm1zID0gW10sXG4gICAgICAgICAgdmFsaWRhdGVUZXJtID0gdGhpcy52YWxpZGF0ZVRlcm0uYmluZCh0aGlzKTtcblxuICAgIHRlcm1zVmFsaWRhdGUgPSBldmVyeSh0aGlzLnRlcm1zLCB2YWxpZGF0ZVRlcm0sIHRlcm1zLCBzdGF0ZSwgY29udGV4dCwgKHRlcm1zLCBzdGF0ZSwgY29udGV4dCkgPT4ge1xuICAgICAgbGV0IHRlcm1zVmFsaWRhdGU7XG5cbiAgICAgIHRlcm1zVmFsaWRhdGUgPSBjb250aW51YXRpb24oc3RhdGUsIGNvbnRleHQpO1xuXG4gICAgICBpZiAodGVybXNWYWxpZGF0ZSkge1xuICAgICAgICB0aGlzLnRlcm1zID0gdGVybXM7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0ZXJtc1ZhbGlkYXRlO1xuICAgIH0pO1xuXG4gICAgaWYgKHRlcm1zVmFsaWRhdGUpe1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzaWduYXR1cmVTdHJpbmd9JyBzaWduYXR1cmUncyB0ZXJtcy5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVybXNWYWxpZGF0ZVxuICB9XG5cbiAgdW5pZnlUZXJtcyh0ZXJtcywgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHRlcm1zVW5pZnk7XG5cbiAgICBkZWJ1Z2dlclxuXG4gICAgY29uc3QgZ2VuZXJhbFNpZ25hdHVyZSA9IHRoaXMsICAvLy9cbiAgICAgICAgICBzcGVjaWZpY1NpZ25hdHVyZSA9IHNpZ25hdHVyZSwgIC8vL1xuICAgICAgICAgIGdlbmVyYWxTaWduYXR1cmVTdHJpbmcgPSBnZW5lcmFsU2lnbmF0dXJlLmdldFN0cmluZygpLFxuICAgICAgICAgIHNwZWNpZmljU2lnbmF0dXJlU3RyaW5nID0gc3BlY2lmaWNTaWduYXR1cmUuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3BlY2lmaWNTaWduYXR1cmVTdHJpbmd9JyBzaWduYXR1cmUgd2l0aCB0aGUgJyR7Z2VuZXJhbFNpZ25hdHVyZVN0cmluZ30nIHNpZ25hdHVyZS4uLmApO1xuXG4gICAgY29uc3QgZ2VuZXJhbFNpZ25hdHVyZVRlcm1zID0gZ2VuZXJhbFNpZ25hdHVyZS5nZXRUZXJtcygpLFxuICAgICAgICAgIHNwZWNpZmljU2lnbmF0dXJlVGVybXMgPSBzcGVjaWZpY1NpZ25hdHVyZS5nZXRUZXJtcygpLFxuICAgICAgICAgIGdlbmVyYWxTaWduYXR1cmVDb250ZXh0ID0gZ2VuZXJhbFNpZ25hdHVyZS5nZXRDb250ZXh0KCksXG4gICAgICAgICAgc3BlY2lmaWNTaWduYXR1cmVDb250ZXh0ID0gc3BlY2lmaWNTaWduYXR1cmUuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGdlbmVyYWxUZXJtcyA9IGdlbmVyYWxTaWduYXR1cmVUZXJtcywgIC8vL1xuICAgICAgICAgIHNwZWNpZmljVGVybXMgPSBzcGVjaWZpY1NpZ25hdHVyZVRlcm1zLCAvLy9cbiAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IGdlbmVyYWxTaWduYXR1cmVDb250ZXh0LCAvLy9cbiAgICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBzcGVjaWZpY1NpZ25hdHVyZUNvbnRleHQ7ICAvLy9cblxuICAgIGRlYnVnZ2VyXG5cbiAgICB0ZXJtc1VuaWZ5ID0gcmVjb25jaWxlKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgIG1hdGNoKGdlbmVyYWxUZXJtcywgc3BlY2lmaWNUZXJtcywgKGdlbmVyYWxUZXJtLCBzcGVjaWZpY1Rlcm0pID0+IHtcbiAgICAgICAgbGV0IHRlcm1VbmlmaWVzO1xuXG4gICAgICAgIHRlcm1VbmlmaWVzID0gZ2VuZXJhbFRlcm0udW5pZnlUZXJtKHNwZWNpZmljVGVybSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICAgICAgaWYgKHRlcm1VbmlmaWVzKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGVybXNVbmlmeSkge1xuICAgICAgICBzcGVjaWZpY0NvbnRleHQuY29tbWl0KGNvbnRleHQpO1xuICAgICAgfVxuICAgIH0sIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICBpZiAodGVybXNVbmlmeSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3BlY2lmaWNTaWduYXR1cmVTdHJpbmd9JyBzaWduYXR1cmUgd2l0aCB0aGUgJyR7Z2VuZXJhbFNpZ25hdHVyZVN0cmluZ30nIHNpZ25hdHVyZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVybXNVbmlmeTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICByZXR1cm4gc2VyaWFsaXNlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgICBsZXQgYnJlYWtQb2ludDtcblxuICAgICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEpTT047ICAvLy9cblxuICAgICAgY29uc3QganNvbiA9IHtcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgc3RyaW5nLFxuICAgICAgICBicmVha1BvaW50XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4ganNvbjtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTaWduYXR1cmVcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBzaWduYXR1cmU7XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgdW5zZXJpYWxpc2UoKGpzb24sIGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIHNpZ25hdHVyZU5vZGUgPSBpbnN0YW50aWF0ZVNpZ25hdHVyZShzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gc2lnbmF0dXJlTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgICAgICB0ZXJtcyA9IHRlcm1zRnJvbVNpZ25hdHVyZU5vZGUoc2lnbmF0dXJlTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgc2lnbmF0dXJlID0gbmV3IFNpZ25hdHVyZShjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHRlcm1zKTtcbiAgICAgIH0sIGpzb24sIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIHRlcm1zRnJvbVNpZ25hdHVyZU5vZGUoc2lnbmF0dXJlTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB0ZXJtTm9kZXMgPSBzaWduYXR1cmVOb2RlLmdldFRlcm1Ob2RlcygpLFxuICAgICAgICB0ZXJtcyA9IHRlcm1Ob2Rlcy5tYXAoKHRlcm1Ob2RlKSA9PiB7XG4gICAgICAgICAgY29uc3QgdGVybSA9IGNvbnRleHQuZmluZFRlcm1CeVRlcm1Ob2RlKHRlcm1Ob2RlKTtcblxuICAgICAgICAgIHJldHVybiB0ZXJtO1xuICAgICAgICB9KTtcblxuICByZXR1cm4gdGVybXM7XG59XG4iXSwibmFtZXMiOlsibWF0Y2giLCJhcnJheVV0aWxpdGllcyIsImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIlNpZ25hdHVyZSIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJ0ZXJtcyIsImdldFRlcm1zIiwiZ2V0U2lnbmF0dXJlTm9kZSIsImdldE5vZGUiLCJzaWduYXR1cmVOb2RlIiwiZ2V0TGVuZ3RoIiwidGVybXNMZW5ndGgiLCJsZW5ndGgiLCJnZXRUZXJtIiwiaW5kZXgiLCJ0ZXJtIiwiaXNFcXVhbFRvIiwic2lnbmF0dXJlIiwic2lnbmF0dXJlTm9kZU1hdGNoZXMiLCJtYXRjaFNpZ25hdHVyZU5vZGUiLCJlcXVhbFRvIiwibm9kZU1hdGNoZXMiLCJtYXRjaE5vZGUiLCJ2ZXJpZnkiLCJjb250aW51YXRpb24iLCJ2ZXJpZmllcyIsInNpZ25hdHVyZVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZGVjbGFyZSIsInN0YXRlIiwidmFsaWRhdGVzIiwidmFsaWRhdGUiLCJjb25jbHVzaW9uIiwiZGVidWciLCJzcGVjaWZpY0NvbnRleHQiLCJhdHRlbXB0IiwidmFsaWRhdGVUZXJtcyIsImJpbmQiLCJhbGwiLCJjb21taXQiLCJ2YWxpZGF0ZVRlcm0iLCJ0ZXJtVmFsaWRhdGVzIiwidGVybVN0cmluZyIsInB1c2giLCJ0ZXJtc1ZhbGlkYXRlIiwiZXZlcnkiLCJ1bmlmeVRlcm1zIiwidGVybXNVbmlmeSIsImdlbmVyYWxTaWduYXR1cmUiLCJzcGVjaWZpY1NpZ25hdHVyZSIsImdlbmVyYWxTaWduYXR1cmVTdHJpbmciLCJzcGVjaWZpY1NpZ25hdHVyZVN0cmluZyIsImdlbmVyYWxTaWduYXR1cmVUZXJtcyIsInNwZWNpZmljU2lnbmF0dXJlVGVybXMiLCJnZW5lcmFsU2lnbmF0dXJlQ29udGV4dCIsImdldENvbnRleHQiLCJzcGVjaWZpY1NpZ25hdHVyZUNvbnRleHQiLCJnZW5lcmFsVGVybXMiLCJzcGVjaWZpY1Rlcm1zIiwiZ2VuZXJhbENvbnRleHQiLCJyZWNvbmNpbGUiLCJnZW5lcmFsVGVybSIsInNwZWNpZmljVGVybSIsInRlcm1VbmlmaWVzIiwidW5pZnlUZXJtIiwidG9KU09OIiwic2VyaWFsaXNlIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwianNvbiIsIm5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwidW5zZXJpYWxpc2UiLCJpbnN0YW50aWF0ZVNpZ25hdHVyZSIsInRlcm1zRnJvbVNpZ25hdHVyZU5vZGUiLCJ0ZXJtTm9kZXMiLCJnZXRUZXJtTm9kZXMiLCJtYXAiLCJ0ZXJtTm9kZSIsImZpbmRUZXJtQnlUZXJtTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBY0E7OztlQUFBOzs7MkJBWitCO2dDQUNjOzBCQUV0Qjt1QkFDQzs4QkFDRzs2QkFDVTt5QkFDbUM7QUFFeEUsTUFBTSxFQUFFQSxLQUFLLEVBQUUsR0FBR0MseUJBQWMsRUFDMUIsRUFBRUMsa0JBQWtCLEVBQUVDLDBCQUEwQixFQUFFLEdBQUdDLG1DQUFtQjtNQUU5RSxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLGtCQUFrQkMsdUJBQU87SUFDbkQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxLQUFLLENBQUU7UUFDcEQsS0FBSyxDQUFDSixTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLEtBQUssR0FBR0E7SUFDZjtJQUVBQyxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUNELEtBQUs7SUFDbkI7SUFFQUUsbUJB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
@@ -16,9 +16,9 @@ function _interop_require_default(obj) {
16
16
  };
17
17
  }
18
18
  class SignatureAssertionNode extends _assertion.default {
19
- getSignatureNode() {
20
- const ruleName = _ruleNames.SIGNATURE_RULE_NAME, signatureNode = this.getNodeByRuleName(ruleName);
21
- return signatureNode;
19
+ getTermNodes() {
20
+ const ruleName = _ruleNames.TERM_RULE_NAME, termNodes = this.getNodesByRuleName(ruleName);
21
+ return termNodes;
22
22
  }
23
23
  getMetavariableNode() {
24
24
  const ruleName = _ruleNames.METAVARIABLE_RULE_NAME, metavariableNode = this.getNodeByRuleName(ruleName);
@@ -29,4 +29,4 @@ class SignatureAssertionNode extends _assertion.default {
29
29
  }
30
30
  }
31
31
 
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ub2RlL2Fzc2VydGlvbi9zaWduYXR1cmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBBc3NlcnRpb25Ob2RlIGZyb20gXCIuLi8uLi9ub2RlL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBTSUdOQVRVUkVfUlVMRV9OQU1FLCBNRVRBVkFSSUFCTEVfUlVMRV9OQU1FIH0gZnJvbSBcIi4uLy4uL3J1bGVOYW1lc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTaWduYXR1cmVBc3NlcnRpb25Ob2RlIGV4dGVuZHMgQXNzZXJ0aW9uTm9kZSB7XG4gIGdldFNpZ25hdHVyZU5vZGUoKSB7XG4gICAgY29uc3QgcnVsZU5hbWUgPSBTSUdOQVRVUkVfUlVMRV9OQU1FLFxuICAgICAgICAgIHNpZ25hdHVyZU5vZGUgPSB0aGlzLmdldE5vZGVCeVJ1bGVOYW1lKHJ1bGVOYW1lKTtcblxuICAgIHJldHVybiBzaWduYXR1cmVOb2RlO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlTm9kZSgpIHtcbiAgICBjb25zdCBydWxlTmFtZSA9IE1FVEFWQVJJQUJMRV9SVUxFX05BTUUsXG4gICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IHRoaXMuZ2V0Tm9kZUJ5UnVsZU5hbWUocnVsZU5hbWUpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZU5vZGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbVJ1bGVOYW1lQ2hpbGROb2Rlc09wYWNpdHlBbmRQcmVjZWRlbmNlKHJ1bGVOYW1lLCBjaGlsZE5vZGVzLCBvcGFjaXR5LCBwcmVjZWRlbmNlKSB7IHJldHVybiBBc3NlcnRpb25Ob2RlLmZyb21SdWxlTmFtZUNoaWxkTm9kZXNPcGFjaXR5QW5kUHJlY2VkZW5jZShTaWduYXR1cmVBc3NlcnRpb25Ob2RlLCBydWxlTmFtZSwgY2hpbGROb2Rlcywgb3BhY2l0eSwgcHJlY2VkZW5jZSk7IH1cbn1cbiJdLCJuYW1lcyI6WyJTaWduYXR1cmVBc3NlcnRpb25Ob2RlIiwiQXNzZXJ0aW9uTm9kZSIsImdldFNpZ25hdHVyZU5vZGUiLCJydWxlTmFtZSIsIlNJR05BVFVSRV9SVUxFX05BTUUiLCJzaWduYXR1cmVOb2RlIiwiZ2V0Tm9kZUJ5UnVsZU5hbWUiLCJnZXRNZXRhdmFyaWFibGVOb2RlIiwiTUVUQVZBUklBQkxFX1JVTEVfTkFNRSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJmcm9tUnVsZU5hbWVDaGlsZE5vZGVzT3BhY2l0eUFuZFByZWNlZGVuY2UiLCJjaGlsZE5vZGVzIiwib3BhY2l0eSIsInByZWNlZGVuY2UiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQU1BOzs7ZUFBcUJBOzs7a0VBSks7MkJBRWtDOzs7Ozs7QUFFN0MsTUFBTUEsK0JBQStCQyxrQkFBYTtJQUMvREMsbUJBQW1CO1FBQ2pCLE1BQU1DLFdBQVdDLDhCQUFtQixFQUM5QkMsZ0JBQWdCLElBQUksQ0FBQ0MsaUJBQWlCLENBQUNIO1FBRTdDLE9BQU9FO0lBQ1Q7SUFFQUUsc0JBQXNCO1FBQ3BCLE1BQU1KLFdBQVdLLGlDQUFzQixFQUNqQ0MsbUJBQW1CLElBQUksQ0FBQ0gsaUJBQWlCLENBQUNIO1FBRWhELE9BQU9NO0lBQ1Q7SUFFQSxPQUFPQywyQ0FBMkNQLFFBQVEsRUFBRVEsVUFBVSxFQUFFQyxPQUFPLEVBQUVDLFVBQVUsRUFBRTtRQUFFLE9BQU9aLGtCQUFhLENBQUNTLDBDQUEwQyxDQUFDVix3QkFBd0JHLFVBQVVRLFlBQVlDLFNBQVNDO0lBQWE7QUFDck8ifQ==
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ub2RlL2Fzc2VydGlvbi9zaWduYXR1cmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBBc3NlcnRpb25Ob2RlIGZyb20gXCIuLi8uLi9ub2RlL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBURVJNX1JVTEVfTkFNRSwgTUVUQVZBUklBQkxFX1JVTEVfTkFNRSB9IGZyb20gXCIuLi8uLi9ydWxlTmFtZXNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSBleHRlbmRzIEFzc2VydGlvbk5vZGUge1xuICBnZXRUZXJtTm9kZXMoKSB7XG4gICAgY29uc3QgcnVsZU5hbWUgPSBURVJNX1JVTEVfTkFNRSxcbiAgICAgICAgICB0ZXJtTm9kZXMgPSB0aGlzLmdldE5vZGVzQnlSdWxlTmFtZShydWxlTmFtZSk7XG5cbiAgICByZXR1cm4gdGVybU5vZGVzO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlTm9kZSgpIHtcbiAgICBjb25zdCBydWxlTmFtZSA9IE1FVEFWQVJJQUJMRV9SVUxFX05BTUUsXG4gICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IHRoaXMuZ2V0Tm9kZUJ5UnVsZU5hbWUocnVsZU5hbWUpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZU5vZGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbVJ1bGVOYW1lQ2hpbGROb2Rlc09wYWNpdHlBbmRQcmVjZWRlbmNlKHJ1bGVOYW1lLCBjaGlsZE5vZGVzLCBvcGFjaXR5LCBwcmVjZWRlbmNlKSB7IHJldHVybiBBc3NlcnRpb25Ob2RlLmZyb21SdWxlTmFtZUNoaWxkTm9kZXNPcGFjaXR5QW5kUHJlY2VkZW5jZShTaWduYXR1cmVBc3NlcnRpb25Ob2RlLCBydWxlTmFtZSwgY2hpbGROb2Rlcywgb3BhY2l0eSwgcHJlY2VkZW5jZSk7IH1cbn1cbiJdLCJuYW1lcyI6WyJTaWduYXR1cmVBc3NlcnRpb25Ob2RlIiwiQXNzZXJ0aW9uTm9kZSIsImdldFRlcm1Ob2RlcyIsInJ1bGVOYW1lIiwiVEVSTV9SVUxFX05BTUUiLCJ0ZXJtTm9kZXMiLCJnZXROb2Rlc0J5UnVsZU5hbWUiLCJnZXRNZXRhdmFyaWFibGVOb2RlIiwiTUVUQVZBUklBQkxFX1JVTEVfTkFNRSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJnZXROb2RlQnlSdWxlTmFtZSIsImZyb21SdWxlTmFtZUNoaWxkTm9kZXNPcGFjaXR5QW5kUHJlY2VkZW5jZSIsImNoaWxkTm9kZXMiLCJvcGFjaXR5IiwicHJlY2VkZW5jZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBTUE7OztlQUFxQkE7OztrRUFKSzsyQkFFNkI7Ozs7OztBQUV4QyxNQUFNQSwrQkFBK0JDLGtCQUFhO0lBQy9EQyxlQUFlO1FBQ2IsTUFBTUMsV0FBV0MseUJBQWMsRUFDekJDLFlBQVksSUFBSSxDQUFDQyxrQkFBa0IsQ0FBQ0g7UUFFMUMsT0FBT0U7SUFDVDtJQUVBRSxzQkFBc0I7UUFDcEIsTUFBTUosV0FBV0ssaUNBQXNCLEVBQ2pDQyxtQkFBbUIsSUFBSSxDQUFDQyxpQkFBaUIsQ0FBQ1A7UUFFaEQsT0FBT007SUFDVDtJQUVBLE9BQU9FLDJDQUEyQ1IsUUFBUSxFQUFFUyxVQUFVLEVBQUVDLE9BQU8sRUFBRUMsVUFBVSxFQUFFO1FBQUUsT0FBT2Isa0JBQWEsQ0FBQ1UsMENBQTBDLENBQUNYLHdCQUF3QkcsVUFBVVMsWUFBWUMsU0FBU0M7SUFBYTtBQUNyTyJ9
@@ -28,7 +28,7 @@ class HeaderNode extends _occamlanguages.NonTerminalNode {
28
28
  return labelNode;
29
29
  }
30
30
  getSignatureNode() {
31
- const ruleName = _ruleNames.SIGNATURE_RULE_NAME, signatureNode = this.getNodeByRuleName(ruleName);
31
+ const signatureNode = null;
32
32
  return signatureNode;
33
33
  }
34
34
  getParenthesisedLabelNode() {
@@ -44,4 +44,4 @@ class HeaderNode extends _occamlanguages.NonTerminalNode {
44
44
  }
45
45
  }
46
46
 
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub2RlL2hlYWRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgTm9uVGVybWluYWxOb2RlIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBTSUdOQVRVUkVfUlVMRV9OQU1FLCBQQVJFTlRIRVNJU0VEX0xBQkVMX1JVTEVfTkFNRSwgUEFSRU5USEVTSVNFRF9MQUJFTFNfUlVMRV9OQU1FIH0gZnJvbSBcIi4uL3J1bGVOYW1lc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBIZWFkZXJOb2RlIGV4dGVuZHMgTm9uVGVybWluYWxOb2RlIHtcbiAgZ2V0TGFiZWxOb2RlcygpIHtcbiAgICBsZXQgbGFiZWxOb2RlcyA9IFtdO1xuXG4gICAgY29uc3QgcGFyZW50aGVzaXNlZExhYmVsc05vZGUgPSB0aGlzLmdldFBhcmVudGhlc2lzZWRMYWJlbHNOb2RlKCk7XG5cbiAgICBpZiAocGFyZW50aGVzaXNlZExhYmVsc05vZGUgIT09IG51bGwpIHtcbiAgICAgIGxhYmVsTm9kZXMgPSBwYXJlbnRoZXNpc2VkTGFiZWxzTm9kZS5nZXRMYWJlbE5vZGVzKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhYmVsTm9kZXM7XG4gIH1cblxuICBnZXRMYWJlbE5vZGUoKSB7XG4gICAgbGV0IGxhYmVsTm9kZSA9IFtdO1xuXG4gICAgY29uc3QgcGFyZW50aGVzaXNlZExhYmVsTm9kZSA9IHRoaXMuZ2V0UGFyZW50aGVzaXNlZExhYmVsTm9kZSgpO1xuXG4gICAgaWYgKHBhcmVudGhlc2lzZWRMYWJlbE5vZGUgIT09IG51bGwpIHtcbiAgICAgIGxhYmVsTm9kZSA9IHBhcmVudGhlc2lzZWRMYWJlbE5vZGUuZ2V0TGFiZWxOb2RlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhYmVsTm9kZTtcbiAgfVxuXG4gIGdldFNpZ25hdHVyZU5vZGUoKSB7XG4gICAgY29uc3QgcnVsZU5hbWUgPSBTSUdOQVRVUkVfUlVMRV9OQU1FLFxuICAgICAgICAgIHNpZ25hdHVyZU5vZGUgPSB0aGlzLmdldE5vZGVCeVJ1bGVOYW1lKHJ1bGVOYW1lKTtcblxuICAgIHJldHVybiBzaWduYXR1cmVOb2RlO1xuICB9XG5cbiAgZ2V0UGFyZW50aGVzaXNlZExhYmVsTm9kZSgpIHtcbiAgICBjb25zdCBydWxlTmFtZSA9IFBBUkVOVEhFU0lTRURfTEFCRUxfUlVMRV9OQU1FLFxuICAgICAgICAgIHBhcmVudGhlc2lzZWRMYWJlbHNOb2RlID0gdGhpcy5nZXROb2RlQnlSdWxlTmFtZShydWxlTmFtZSk7XG5cbiAgICByZXR1cm4gcGFyZW50aGVzaXNlZExhYmVsc05vZGU7XG4gIH1cblxuICBnZXRQYXJlbnRoZXNpc2VkTGFiZWxzTm9kZSgpIHtcbiAgICBjb25zdCBydWxlTmFtZSA9IFBBUkVOVEhFU0lTRURfTEFCRUxTX1JVTEVfTkFNRSxcbiAgICAgICAgICBwYXJlbnRoZXNpc2VkTGFiZWxzTm9kZSA9IHRoaXMuZ2V0Tm9kZUJ5UnVsZU5hbWUocnVsZU5hbWUpO1xuXG4gICAgcmV0dXJuIHBhcmVudGhlc2lzZWRMYWJlbHNOb2RlO1xuICB9XG5cbiAgc3RhdGljIGZyb21SdWxlTmFtZUNoaWxkTm9kZXNPcGFjaXR5QW5kUHJlY2VkZW5jZShDbGFzcywgcnVsZU5hbWUsIGNoaWxkTm9kZXMsIG9wYWNpdHksIHByZWNlZGVuY2UpIHsgcmV0dXJuIE5vblRlcm1pbmFsTm9kZS5mcm9tUnVsZU5hbWVDaGlsZE5vZGVzT3BhY2l0eUFuZFByZWNlZGVuY2UoQ2xhc3MsIHJ1bGVOYW1lLCBjaGlsZE5vZGVzLCBvcGFjaXR5LCBwcmVjZWRlbmNlKTsgfVxufVxuIl0sIm5hbWVzIjpbIkhlYWRlck5vZGUiLCJOb25UZXJtaW5hbE5vZGUiLCJnZXRMYWJlbE5vZGVzIiwibGFiZWxOb2RlcyIsInBhcmVudGhlc2lzZWRMYWJlbHNOb2RlIiwiZ2V0UGFyZW50aGVzaXNlZExhYmVsc05vZGUiLCJnZXRMYWJlbE5vZGUiLCJsYWJlbE5vZGUiLCJwYXJlbnRoZXNpc2VkTGFiZWxOb2RlIiwiZ2V0UGFyZW50aGVzaXNlZExhYmVsTm9kZSIsImdldFNpZ25hdHVyZU5vZGUiLCJydWxlTmFtZSIsIlNJR05BVFVSRV9SVUxFX05BTUUiLCJzaWduYXR1cmVOb2RlIiwiZ2V0Tm9kZUJ5UnVsZU5hbWUiLCJQQVJFTlRIRVNJU0VEX0xBQkVMX1JVTEVfTkFNRSIsIlBBUkVOVEhFU0lTRURfTEFCRUxTX1JVTEVfTkFNRSIsImZyb21SdWxlTmFtZUNoaWxkTm9kZXNPcGFjaXR5QW5kUHJlY2VkZW5jZSIsIkNsYXNzIiwiY2hpbGROb2RlcyIsIm9wYWNpdHkiLCJwcmVjZWRlbmNlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFNQTs7O2VBQXFCQTs7O2dDQUpXOzJCQUVtRTtBQUVwRixNQUFNQSxtQkFBbUJDLCtCQUFlO0lBQ3JEQyxnQkFBZ0I7UUFDZCxJQUFJQyxhQUFhLEVBQUU7UUFFbkIsTUFBTUMsMEJBQTBCLElBQUksQ0FBQ0MsMEJBQTBCO1FBRS9ELElBQUlELDRCQUE0QixNQUFNO1lBQ3BDRCxhQUFhQyx3QkFBd0JGLGFBQWE7UUFDcEQ7UUFFQSxPQUFPQztJQUNUO0lBRUFHLGVBQWU7UUFDYixJQUFJQyxZQUFZLEVBQUU7UUFFbEIsTUFBTUMseUJBQXlCLElBQUksQ0FBQ0MseUJBQXlCO1FBRTdELElBQUlELDJCQUEyQixNQUFNO1lBQ25DRCxZQUFZQyx1QkFBdUJGLFlBQVk7UUFDakQ7UUFFQSxPQUFPQztJQUNUO0lBRUFHLG1CQUFtQjtRQUNqQixNQUFNQyxXQUFXQyw4QkFBbUIsRUFDOUJDLGdCQUFnQixJQUFJLENBQUNDLGlCQUFpQixDQUFDSDtRQUU3QyxPQUFPRTtJQUNUO0lBRUFKLDRCQUE0QjtRQUMxQixNQUFNRSxXQUFXSSx3Q0FBNkIsRUFDeENYLDBCQUEwQixJQUFJLENBQUNVLGlCQUFpQixDQUFDSDtRQUV2RCxPQUFPUDtJQUNUO0lBRUFDLDZCQUE2QjtRQUMzQixNQUFNTSxXQUFXSyx5Q0FBOEIsRUFDekNaLDBCQUEwQixJQUFJLENBQUNVLGlCQUFpQixDQUFDSDtRQUV2RCxPQUFPUDtJQUNUO0lBRUEsT0FBT2EsMkNBQTJDQyxLQUFLLEVBQUVQLFFBQVEsRUFBRVEsVUFBVSxFQUFFQyxPQUFPLEVBQUVDLFVBQVUsRUFBRTtRQUFFLE9BQU9wQiwrQkFBZSxDQUFDZ0IsMENBQTBDLENBQUNDLE9BQU9QLFVBQVVRLFlBQVlDLFNBQVNDO0lBQWE7QUFDN04ifQ==
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub2RlL2hlYWRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgTm9uVGVybWluYWxOb2RlIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgeyBQQVJFTlRIRVNJU0VEX0xBQkVMX1JVTEVfTkFNRSwgUEFSRU5USEVTSVNFRF9MQUJFTFNfUlVMRV9OQU1FIH0gZnJvbSBcIi4uL3J1bGVOYW1lc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBIZWFkZXJOb2RlIGV4dGVuZHMgTm9uVGVybWluYWxOb2RlIHtcbiAgZ2V0TGFiZWxOb2RlcygpIHtcbiAgICBsZXQgbGFiZWxOb2RlcyA9IFtdO1xuXG4gICAgY29uc3QgcGFyZW50aGVzaXNlZExhYmVsc05vZGUgPSB0aGlzLmdldFBhcmVudGhlc2lzZWRMYWJlbHNOb2RlKCk7XG5cbiAgICBpZiAocGFyZW50aGVzaXNlZExhYmVsc05vZGUgIT09IG51bGwpIHtcbiAgICAgIGxhYmVsTm9kZXMgPSBwYXJlbnRoZXNpc2VkTGFiZWxzTm9kZS5nZXRMYWJlbE5vZGVzKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhYmVsTm9kZXM7XG4gIH1cblxuICBnZXRMYWJlbE5vZGUoKSB7XG4gICAgbGV0IGxhYmVsTm9kZSA9IFtdO1xuXG4gICAgY29uc3QgcGFyZW50aGVzaXNlZExhYmVsTm9kZSA9IHRoaXMuZ2V0UGFyZW50aGVzaXNlZExhYmVsTm9kZSgpO1xuXG4gICAgaWYgKHBhcmVudGhlc2lzZWRMYWJlbE5vZGUgIT09IG51bGwpIHtcbiAgICAgIGxhYmVsTm9kZSA9IHBhcmVudGhlc2lzZWRMYWJlbE5vZGUuZ2V0TGFiZWxOb2RlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhYmVsTm9kZTtcbiAgfVxuXG4gIGdldFNpZ25hdHVyZU5vZGUoKSB7XG4gICAgY29uc3Qgc2lnbmF0dXJlTm9kZSA9IG51bGw7XG5cbiAgICByZXR1cm4gc2lnbmF0dXJlTm9kZTtcbiAgfVxuXG4gIGdldFBhcmVudGhlc2lzZWRMYWJlbE5vZGUoKSB7XG4gICAgY29uc3QgcnVsZU5hbWUgPSBQQVJFTlRIRVNJU0VEX0xBQkVMX1JVTEVfTkFNRSxcbiAgICAgICAgICBwYXJlbnRoZXNpc2VkTGFiZWxzTm9kZSA9IHRoaXMuZ2V0Tm9kZUJ5UnVsZU5hbWUocnVsZU5hbWUpO1xuXG4gICAgcmV0dXJuIHBhcmVudGhlc2lzZWRMYWJlbHNOb2RlO1xuICB9XG5cbiAgZ2V0UGFyZW50aGVzaXNlZExhYmVsc05vZGUoKSB7XG4gICAgY29uc3QgcnVsZU5hbWUgPSBQQVJFTlRIRVNJU0VEX0xBQkVMU19SVUxFX05BTUUsXG4gICAgICAgICAgcGFyZW50aGVzaXNlZExhYmVsc05vZGUgPSB0aGlzLmdldE5vZGVCeVJ1bGVOYW1lKHJ1bGVOYW1lKTtcblxuICAgIHJldHVybiBwYXJlbnRoZXNpc2VkTGFiZWxzTm9kZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tUnVsZU5hbWVDaGlsZE5vZGVzT3BhY2l0eUFuZFByZWNlZGVuY2UoQ2xhc3MsIHJ1bGVOYW1lLCBjaGlsZE5vZGVzLCBvcGFjaXR5LCBwcmVjZWRlbmNlKSB7IHJldHVybiBOb25UZXJtaW5hbE5vZGUuZnJvbVJ1bGVOYW1lQ2hpbGROb2Rlc09wYWNpdHlBbmRQcmVjZWRlbmNlKENsYXNzLCBydWxlTmFtZSwgY2hpbGROb2Rlcywgb3BhY2l0eSwgcHJlY2VkZW5jZSk7IH1cbn1cbiJdLCJuYW1lcyI6WyJIZWFkZXJOb2RlIiwiTm9uVGVybWluYWxOb2RlIiwiZ2V0TGFiZWxOb2RlcyIsImxhYmVsTm9kZXMiLCJwYXJlbnRoZXNpc2VkTGFiZWxzTm9kZSIsImdldFBhcmVudGhlc2lzZWRMYWJlbHNOb2RlIiwiZ2V0TGFiZWxOb2RlIiwibGFiZWxOb2RlIiwicGFyZW50aGVzaXNlZExhYmVsTm9kZSIsImdldFBhcmVudGhlc2lzZWRMYWJlbE5vZGUiLCJnZXRTaWduYXR1cmVOb2RlIiwic2lnbmF0dXJlTm9kZSIsInJ1bGVOYW1lIiwiUEFSRU5USEVTSVNFRF9MQUJFTF9SVUxFX05BTUUiLCJnZXROb2RlQnlSdWxlTmFtZSIsIlBBUkVOVEhFU0lTRURfTEFCRUxTX1JVTEVfTkFNRSIsImZyb21SdWxlTmFtZUNoaWxkTm9kZXNPcGFjaXR5QW5kUHJlY2VkZW5jZSIsIkNsYXNzIiwiY2hpbGROb2RlcyIsIm9wYWNpdHkiLCJwcmVjZWRlbmNlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFNQTs7O2VBQXFCQTs7O2dDQUpXOzJCQUU4QztBQUUvRCxNQUFNQSxtQkFBbUJDLCtCQUFlO0lBQ3JEQyxnQkFBZ0I7UUFDZCxJQUFJQyxhQUFhLEVBQUU7UUFFbkIsTUFBTUMsMEJBQTBCLElBQUksQ0FBQ0MsMEJBQTBCO1FBRS9ELElBQUlELDRCQUE0QixNQUFNO1lBQ3BDRCxhQUFhQyx3QkFBd0JGLGFBQWE7UUFDcEQ7UUFFQSxPQUFPQztJQUNUO0lBRUFHLGVBQWU7UUFDYixJQUFJQyxZQUFZLEVBQUU7UUFFbEIsTUFBTUMseUJBQXlCLElBQUksQ0FBQ0MseUJBQXlCO1FBRTdELElBQUlELDJCQUEyQixNQUFNO1lBQ25DRCxZQUFZQyx1QkFBdUJGLFlBQVk7UUFDakQ7UUFFQSxPQUFPQztJQUNUO0lBRUFHLG1CQUFtQjtRQUNqQixNQUFNQyxnQkFBZ0I7UUFFdEIsT0FBT0E7SUFDVDtJQUVBRiw0QkFBNEI7UUFDMUIsTUFBTUcsV0FBV0Msd0NBQTZCLEVBQ3hDVCwwQkFBMEIsSUFBSSxDQUFDVSxpQkFBaUIsQ0FBQ0Y7UUFFdkQsT0FBT1I7SUFDVDtJQUVBQyw2QkFBNkI7UUFDM0IsTUFBTU8sV0FBV0cseUNBQThCLEVBQ3pDWCwwQkFBMEIsSUFBSSxDQUFDVSxpQkFBaUIsQ0FBQ0Y7UUFFdkQsT0FBT1I7SUFDVDtJQUVBLE9BQU9ZLDJDQUEyQ0MsS0FBSyxFQUFFTCxRQUFRLEVBQUVNLFVBQVUsRUFBRUMsT0FBTyxFQUFFQyxVQUFVLEVBQUU7UUFBRSxPQUFPbkIsK0JBQWUsQ0FBQ2UsMENBQTBDLENBQUNDLE9BQU9MLFVBQVVNLFlBQVlDLFNBQVNDO0lBQWE7QUFDN04ifQ==
@@ -12,9 +12,6 @@ _export(exports, {
12
12
  get all () {
13
13
  return all;
14
14
  },
15
- get any () {
16
- return any;
17
- },
18
15
  get each () {
19
16
  return each;
20
17
  },
@@ -34,20 +31,6 @@ _export(exports, {
34
31
  return some;
35
32
  }
36
33
  });
37
- function any(array, callback, ...initialArguments) {
38
- let success = false;
39
- const continuation = initialArguments.pop(), length = array.length;
40
- let count = 0;
41
- for(let index = 0; index < length; index++){
42
- const element = array[index];
43
- success = callback(element, ...initialArguments, continuation);
44
- if (success) {
45
- count++;
46
- }
47
- }
48
- success = count >= 1;
49
- return success;
50
- }
51
34
  function one(array, callback, ...initialArguments) {
52
35
  let success = false;
53
36
  const continuation = initialArguments.pop(), length = array.length;
@@ -146,4 +129,4 @@ function exists(callbacks, ...initialArguments) {
146
129
  }, ...initialArguments);
147
130
  }
148
131
 
149
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29udGludWF0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gYW55KGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBsZXQgY291bnQgPSAwO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgc3VjY2VzcyA9IGNhbGxiYWNrKGVsZW1lbnQsIC4uLmluaXRpYWxBcmd1bWVudHMsIGNvbnRpbnVhdGlvbik7XG5cbiAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgY291bnQrKztcbiAgICB9XG4gIH1cblxuICBzdWNjZXNzID0gKGNvdW50ID49IDEpO1xuXG4gIHJldHVybiBzdWNjZXNzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb25lKGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBsZXQgY291bnQgPSAwO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgc3VjY2VzcyA9IGNhbGxiYWNrKGVsZW1lbnQsIC4uLmluaXRpYWxBcmd1bWVudHMsIGNvbnRpbnVhdGlvbik7XG5cbiAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgY291bnQrKztcblxuICAgICAgaWYgKGNvdW50ID4gMSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzdWNjZXNzID0gKGNvdW50ID09PSAxKTtcblxuICByZXR1cm4gc3VjY2Vzcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNvbWUoYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgY29uc3QgY29udGludWF0aW9uID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgc3VjY2VzcyA9IGNhbGxiYWNrKGVsZW1lbnQsIC4uLmluaXRpYWxBcmd1bWVudHMsIGNvbnRpbnVhdGlvbik7XG5cbiAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN1Y2Nlc3M7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlYWNoKGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgaWYgKGxlbmd0aCA9PT0gMCkge1xuICAgIGNvbnN0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgIHJldHVybiBzdWNjZXNzO1xuICB9XG5cbiAgY29uc3QgY29udGludWF0aW9uID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgY2FsbGJhY2tBcmd1bWVudHMgPSBpbml0aWFsQXJndW1lbnRzLCAvLy9cbiAgICAgICAgaW5kZXggPSAwO1xuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgsIC4uLmNhbGxiYWNrQXJndW1lbnRzKSB7XG4gICAgbGV0IHN1Y2Nlc3M7XG5cbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgc3VjY2VzcyA9IGNvbnRpbnVhdGlvbiguLi5jYWxsYmFja0FyZ3VtZW50cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICAgIHN1Y2Nlc3MgPSBjYWxsYmFjayhlbGVtZW50LCAuLi5jYWxsYmFja0FyZ3VtZW50cywgKC4uLmNhbGxiYWNrQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1Y2Nlc3M7XG4gIH1cblxuICByZXR1cm4gbmV4dChpbmRleCwgLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXZlcnkoYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGNhbGxiYWNrQXJndW1lbnRzID0gaW5pdGlhbEFyZ3VtZW50cywgLy8vXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgaW5kZXggPSAwO1xuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgsIC4uLmNhbGxiYWNrQXJndW1lbnRzKSB7XG4gICAgbGV0IHN1Y2Nlc3M7XG5cbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgc3VjY2VzcyA9ICBjb250aW51YXRpb24oLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgICBzdWNjZXNzID0gY2FsbGJhY2soZWxlbWVudCwgLi4uY2FsbGJhY2tBcmd1bWVudHMsICguLi5jYWxsYmFja0FyZ3VtZW50cykgPT4ge1xuICAgICAgICByZXR1cm4gbmV4dChpbmRleCArIDEsIC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBzdWNjZXNzO1xuICB9XG5cbiAgcmV0dXJuIG5leHQoaW5kZXgsIC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoKGFycmF5QSwgYXJyYXlCLCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBhcnJheUFMZW5ndGggPSBhcnJheUEubGVuZ3RoLFxuICAgICAgICBhcnJheUJMZW5ndGggPSBhcnJheUIubGVuZ3RoO1xuXG4gIGlmIChhcnJheUFMZW5ndGggIT09IGFycmF5Qkxlbmd0aCkge1xuICAgIGNvbnN0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgIHJldHVybiBzdWNjZXNzO1xuICB9XG5cbiAgY29uc3QgY29udGludWF0aW9uID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgY2FsbGJhY2tBcmd1bWVudHMgPSBpbml0aWFsQXJndW1lbnRzLCAvLy9cbiAgICAgICAgbGVuZ3RoID0gYXJyYXlBTGVuZ3RoLCAgLy8vXG4gICAgICAgIGluZGV4ID0gMDtcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4LCAuLi5jYWxsYmFja0FyZ3VtZW50cykge1xuICAgIGxldCBzdWNjZXNzO1xuXG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIHN1Y2Nlc3MgPSBjb250aW51YXRpb24oLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBlbGVtZW50QSA9IGFycmF5QVtpbmRleF0sXG4gICAgICAgICAgICBlbGVtZW50QiA9IGFycmF5QltpbmRleF07XG5cbiAgICAgIHN1Y2Nlc3MgPSBjYWxsYmFjayhlbGVtZW50QSwgZWxlbWVudEIsIC4uLmNhbGxiYWNrQXJndW1lbnRzLCAoLi4uY2FsbGJhY2tBcmd1bWVudHMpID0+IHtcbiAgICAgICAgcmV0dXJuIG5leHQoaW5kZXggKyAxLCAuLi5jYWxsYmFja0FyZ3VtZW50cyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VjY2VzcztcbiAgfVxuXG4gIHJldHVybiBuZXh0KGluZGV4LCAuLi5jYWxsYmFja0FyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbGwoY2FsbGJhY2tzLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIHJldHVybiBldmVyeShjYWxsYmFja3MsIChjYWxsYmFjaywgLi4uY2FsbGJhY2tBcmd1bWVudHMpID0+IHtcbiAgICByZXR1cm4gY2FsbGJhY2soLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICB9LCAuLi5pbml0aWFsQXJndW1lbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4aXN0cyhjYWxsYmFja3MsIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgcmV0dXJuIHNvbWUoY2FsbGJhY2tzLCAoY2FsbGJhY2ssIC4uLmNhbGxiYWNrQXJndW1lbnRzKSA9PiB7XG4gICAgcmV0dXJuIGNhbGxiYWNrKC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbiAgfSwgLi4uaW5pdGlhbEFyZ3VtZW50cyk7XG59XG4iXSwibmFtZXMiOlsiYWxsIiwiYW55IiwiZWFjaCIsImV2ZXJ5IiwiZXhpc3RzIiwibWF0Y2giLCJvbmUiLCJzb21lIiwiYXJyYXkiLCJjYWxsYmFjayIsImluaXRpYWxBcmd1bWVudHMiLCJzdWNjZXNzIiwiY29udGludWF0aW9uIiwicG9wIiwibGVuZ3RoIiwiY291bnQiLCJpbmRleCIsImVsZW1lbnQiLCJjYWxsYmFja0FyZ3VtZW50cyIsIm5leHQiLCJhcnJheUEiLCJhcnJheUIiLCJhcnJheUFMZW5ndGgiLCJhcnJheUJMZW5ndGgiLCJlbGVtZW50QSIsImVsZW1lbnRCIiwiY2FsbGJhY2tzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFtS2dCQTtlQUFBQTs7UUFqS0FDO2VBQUFBOztRQXFFQUM7ZUFBQUE7O1FB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
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29udGludWF0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gb25lKGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBsZXQgY291bnQgPSAwO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgc3VjY2VzcyA9IGNhbGxiYWNrKGVsZW1lbnQsIC4uLmluaXRpYWxBcmd1bWVudHMsIGNvbnRpbnVhdGlvbik7XG5cbiAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgY291bnQrKztcblxuICAgICAgaWYgKGNvdW50ID4gMSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzdWNjZXNzID0gKGNvdW50ID09PSAxKTtcblxuICByZXR1cm4gc3VjY2Vzcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNvbWUoYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgY29uc3QgY29udGludWF0aW9uID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgc3VjY2VzcyA9IGNhbGxiYWNrKGVsZW1lbnQsIC4uLmluaXRpYWxBcmd1bWVudHMsIGNvbnRpbnVhdGlvbik7XG5cbiAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN1Y2Nlc3M7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlYWNoKGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgaWYgKGxlbmd0aCA9PT0gMCkge1xuICAgIGNvbnN0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgIHJldHVybiBzdWNjZXNzO1xuICB9XG5cbiAgY29uc3QgY29udGludWF0aW9uID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgY2FsbGJhY2tBcmd1bWVudHMgPSBpbml0aWFsQXJndW1lbnRzLCAvLy9cbiAgICAgICAgaW5kZXggPSAwO1xuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgsIC4uLmNhbGxiYWNrQXJndW1lbnRzKSB7XG4gICAgbGV0IHN1Y2Nlc3M7XG5cbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgc3VjY2VzcyA9IGNvbnRpbnVhdGlvbiguLi5jYWxsYmFja0FyZ3VtZW50cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICAgIHN1Y2Nlc3MgPSBjYWxsYmFjayhlbGVtZW50LCAuLi5jYWxsYmFja0FyZ3VtZW50cywgKC4uLmNhbGxiYWNrQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1Y2Nlc3M7XG4gIH1cblxuICByZXR1cm4gbmV4dChpbmRleCwgLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXZlcnkoYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGNhbGxiYWNrQXJndW1lbnRzID0gaW5pdGlhbEFyZ3VtZW50cywgLy8vXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgaW5kZXggPSAwO1xuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgsIC4uLmNhbGxiYWNrQXJndW1lbnRzKSB7XG4gICAgbGV0IHN1Y2Nlc3M7XG5cbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgc3VjY2VzcyA9ICBjb250aW51YXRpb24oLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgICBzdWNjZXNzID0gY2FsbGJhY2soZWxlbWVudCwgLi4uY2FsbGJhY2tBcmd1bWVudHMsICguLi5jYWxsYmFja0FyZ3VtZW50cykgPT4ge1xuICAgICAgICByZXR1cm4gbmV4dChpbmRleCArIDEsIC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBzdWNjZXNzO1xuICB9XG5cbiAgcmV0dXJuIG5leHQoaW5kZXgsIC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoKGFycmF5QSwgYXJyYXlCLCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBhcnJheUFMZW5ndGggPSBhcnJheUEubGVuZ3RoLFxuICAgICAgICBhcnJheUJMZW5ndGggPSBhcnJheUIubGVuZ3RoO1xuXG4gIGlmIChhcnJheUFMZW5ndGggIT09IGFycmF5Qkxlbmd0aCkge1xuICAgIGNvbnN0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgIHJldHVybiBzdWNjZXNzO1xuICB9XG5cbiAgY29uc3QgY29udGludWF0aW9uID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgY2FsbGJhY2tBcmd1bWVudHMgPSBpbml0aWFsQXJndW1lbnRzLCAvLy9cbiAgICAgICAgbGVuZ3RoID0gYXJyYXlBTGVuZ3RoLCAgLy8vXG4gICAgICAgIGluZGV4ID0gMDtcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4LCAuLi5jYWxsYmFja0FyZ3VtZW50cykge1xuICAgIGxldCBzdWNjZXNzO1xuXG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIHN1Y2Nlc3MgPSBjb250aW51YXRpb24oLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBlbGVtZW50QSA9IGFycmF5QVtpbmRleF0sXG4gICAgICAgICAgICBlbGVtZW50QiA9IGFycmF5QltpbmRleF07XG5cbiAgICAgIHN1Y2Nlc3MgPSBjYWxsYmFjayhlbGVtZW50QSwgZWxlbWVudEIsIC4uLmNhbGxiYWNrQXJndW1lbnRzLCAoLi4uY2FsbGJhY2tBcmd1bWVudHMpID0+IHtcbiAgICAgICAgcmV0dXJuIG5leHQoaW5kZXggKyAxLCAuLi5jYWxsYmFja0FyZ3VtZW50cyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VjY2VzcztcbiAgfVxuXG4gIHJldHVybiBuZXh0KGluZGV4LCAuLi5jYWxsYmFja0FyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbGwoY2FsbGJhY2tzLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIHJldHVybiBldmVyeShjYWxsYmFja3MsIChjYWxsYmFjaywgLi4uY2FsbGJhY2tBcmd1bWVudHMpID0+IHtcbiAgICByZXR1cm4gY2FsbGJhY2soLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICB9LCAuLi5pbml0aWFsQXJndW1lbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4aXN0cyhjYWxsYmFja3MsIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgcmV0dXJuIHNvbWUoY2FsbGJhY2tzLCAoY2FsbGJhY2ssIC4uLmNhbGxiYWNrQXJndW1lbnRzKSA9PiB7XG4gICAgcmV0dXJuIGNhbGxiYWNrKC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbiAgfSwgLi4uaW5pdGlhbEFyZ3VtZW50cyk7XG59XG4iXSwibmFtZXMiOlsiYWxsIiwiZWFjaCIsImV2ZXJ5IiwiZXhpc3RzIiwibWF0Y2giLCJvbmUiLCJzb21lIiwiYXJyYXkiLCJjYWxsYmFjayIsImluaXRpYWxBcmd1bWVudHMiLCJzdWNjZXNzIiwiY29udGludWF0aW9uIiwicG9wIiwibGVuZ3RoIiwiY291bnQiLCJpbmRleCIsImVsZW1lbnQiLCJjYWxsYmFja0FyZ3VtZW50cyIsIm5leHQiLCJhcnJheUEiLCJhcnJheUIiLCJhcnJheUFMZW5ndGgiLCJhcnJheUJMZW5ndGgiLCJlbGVtZW50QSIsImVsZW1lbnRCIiwiY2FsbGJhY2tzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUE0SWdCQTtlQUFBQTs7UUE1RkFDO2VBQUFBOztRQWdDQUM7ZUFBQUE7O1FBa0VBQztlQUFBQTs7UUF6Q0FDO2VBQUFBOztRQXZHQUM7ZUFBQUE7O1FBMkJBQztlQUFBQTs7O0FBM0JULFNBQVNELElBQUlFLEtBQUssRUFBRUMsUUFBUSxFQUFFLEdBQUdDLGdCQUFnQjtJQUN0RCxJQUFJQyxVQUFVO0lBRWQsTUFBTUMsZUFBZUYsaUJBQWlCRyxHQUFHLElBQ25DQyxTQUFTTixNQUFNTSxNQUFNO0lBRTNCLElBQUlDLFFBQVE7SUFFWixJQUFLLElBQUlDLFFBQVEsR0FBR0EsUUFBUUYsUUFBUUUsUUFBUztRQUMzQyxNQUFNQyxVQUFVVCxLQUFLLENBQUNRLE1BQU07UUFFNUJMLFVBQVVGLFNBQVNRLFlBQVlQLGtCQUFrQkU7UUFFakQsSUFBSUQsU0FBUztZQUNYSTtZQUVBLElBQUlBLFFBQVEsR0FBRztnQkFDYjtZQUNGO1FBQ0Y7SUFDRjtJQUVBSixVQUFXSSxVQUFVO0lBRXJCLE9BQU9KO0FBQ1Q7QUFFTyxTQUFTSixLQUFLQyxLQUFLLEVBQUVDLFFBQVEsRUFBRSxHQUFHQyxnQkFBZ0I7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