occam-verify-cli 1.0.123 → 1.0.124

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.
@@ -1,229 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return _default;
9
- }
10
- });
11
- var _dom = /*#__PURE__*/ _interop_require_wildcard(require("../../dom"));
12
- var _query = require("../../utilities/query");
13
- function _class_call_check(instance, Constructor) {
14
- if (!(instance instanceof Constructor)) {
15
- throw new TypeError("Cannot call a class as a function");
16
- }
17
- }
18
- function _defineProperties(target, props) {
19
- for(var i = 0; i < props.length; i++){
20
- var descriptor = props[i];
21
- descriptor.enumerable = descriptor.enumerable || false;
22
- descriptor.configurable = true;
23
- if ("value" in descriptor) descriptor.writable = true;
24
- Object.defineProperty(target, descriptor.key, descriptor);
25
- }
26
- }
27
- function _create_class(Constructor, protoProps, staticProps) {
28
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
29
- if (staticProps) _defineProperties(Constructor, staticProps);
30
- return Constructor;
31
- }
32
- function _define_property(obj, key, value) {
33
- if (key in obj) {
34
- Object.defineProperty(obj, key, {
35
- value: value,
36
- enumerable: true,
37
- configurable: true,
38
- writable: true
39
- });
40
- } else {
41
- obj[key] = value;
42
- }
43
- return obj;
44
- }
45
- function _getRequireWildcardCache(nodeInterop) {
46
- if (typeof WeakMap !== "function") return null;
47
- var cacheBabelInterop = new WeakMap();
48
- var cacheNodeInterop = new WeakMap();
49
- return (_getRequireWildcardCache = function(nodeInterop) {
50
- return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
51
- })(nodeInterop);
52
- }
53
- function _interop_require_wildcard(obj, nodeInterop) {
54
- if (!nodeInterop && obj && obj.__esModule) {
55
- return obj;
56
- }
57
- if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
58
- return {
59
- default: obj
60
- };
61
- }
62
- var cache = _getRequireWildcardCache(nodeInterop);
63
- if (cache && cache.has(obj)) {
64
- return cache.get(obj);
65
- }
66
- var newObj = {
67
- __proto__: null
68
- };
69
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
70
- for(var key in obj){
71
- if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
72
- var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
73
- if (desc && (desc.get || desc.set)) {
74
- Object.defineProperty(newObj, key, desc);
75
- } else {
76
- newObj[key] = obj[key];
77
- }
78
- }
79
- }
80
- newObj.default = obj;
81
- if (cache) {
82
- cache.set(obj, newObj);
83
- }
84
- return newObj;
85
- }
86
- var _SatisfyingAssertion;
87
- var termNodesQuery = (0, _query.nodesQuery)("/satisfyingAssertion/term"), satisfyingAssertionNodeQuery = (0, _query.nodeQuery)("/statement/satisfyingAssertion");
88
- var _default = (0, _dom.domAssigned)((_SatisfyingAssertion = /*#__PURE__*/ function() {
89
- function SatisfyingAssertion(string, node, tokens, terms, reference) {
90
- _class_call_check(this, SatisfyingAssertion);
91
- this.string = string;
92
- this.node = node;
93
- this.tokens = tokens;
94
- this.terms = terms;
95
- this.reference = reference;
96
- }
97
- _create_class(SatisfyingAssertion, [
98
- {
99
- key: "getString",
100
- value: function getString() {
101
- return this.string;
102
- }
103
- },
104
- {
105
- key: "getNode",
106
- value: function getNode() {
107
- return this.node;
108
- }
109
- },
110
- {
111
- key: "getTokens",
112
- value: function getTokens() {
113
- return this.tokens;
114
- }
115
- },
116
- {
117
- key: "getTerms",
118
- value: function getTerms() {
119
- return this.terms;
120
- }
121
- },
122
- {
123
- key: "getReference",
124
- value: function getReference() {
125
- return this.reference;
126
- }
127
- },
128
- {
129
- key: "matchSubstitutions",
130
- value: function matchSubstitutions(substitutions, context) {
131
- var substitutionsMatch;
132
- var termsString = termsStringFromTerms(this.terms), substitutionsString = substitutions.asString(), satisfyingAssertionString = this.string; ///
133
- context.trace("Matching the '".concat(substitutionsString, "' substitutions against the '").concat(satisfyingAssertionString, "' satisfying assertion's ").concat(termsString, " terms..."));
134
- var termsEquate = substitutions.matchTerms(this.terms);
135
- substitutionsMatch = termsEquate; ///
136
- if (substitutionsMatch) {
137
- context.debug("...matched the '".concat(substitutionsString, "' substitutions against the '").concat(satisfyingAssertionString, "' satisfying assertion's ").concat(termsString, " terms."));
138
- }
139
- return substitutionsMatch;
140
- }
141
- },
142
- {
143
- key: "verify",
144
- value: function verify(assignments, stated, context) {
145
- var verified = false;
146
- var satisfyingAssertionString = this.string; ///
147
- context.trace("Verifying the '".concat(satisfyingAssertionString, "' satisfying assertion..."));
148
- var termsVerified = this.verifyTerms(assignments, stated, context);
149
- if (termsVerified) {
150
- var referenceVerified = this.verifyReference(assignments, stated, context);
151
- verified = referenceVerified; ///
152
- }
153
- if (verified) {
154
- context.debug("...verified the '".concat(satisfyingAssertionString, "' satisfying assertion."));
155
- }
156
- return verified;
157
- }
158
- },
159
- {
160
- key: "verifyTerms",
161
- value: function verifyTerms(assignments, stated, context) {
162
- var termsVerified;
163
- var termsString = termsStringFromTerms(this.terms), satisfyingAssertionString = this.string; ///
164
- context.trace("Verifying the '".concat(satisfyingAssertionString, "' satisfying assertion's ").concat(termsString, " terms..."));
165
- termsVerified = this.terms.every(function(term) {
166
- var termVerified = term.verify(context, function() {
167
- var verifiedAhead = true;
168
- return verifiedAhead;
169
- });
170
- return termVerified;
171
- });
172
- if (termsVerified) {
173
- context.debug("...verified the '".concat(satisfyingAssertionString, "' satisfying assertion's ").concat(termsString, " terms."));
174
- }
175
- return termsVerified;
176
- }
177
- },
178
- {
179
- key: "verifyReference",
180
- value: function verifyReference(assignments, stated, context) {
181
- var referenceVerified = false;
182
- var referenceString = this.reference.getString(), satisfyingAssertionString = this.string; ///
183
- context.trace("Verifying the '".concat(satisfyingAssertionString, "' satisfying assertion's '").concat(referenceString, "' reference..."));
184
- var axiom = context.findAxiomByReference(this.reference, context);
185
- if (axiom !== null) {
186
- var axiomSatisfying = axiom.isSatisfying();
187
- if (axiomSatisfying) {
188
- referenceVerified = true;
189
- }
190
- }
191
- if (referenceVerified) {
192
- context.debug("...verified the '".concat(satisfyingAssertionString, "' satisfying assertion's '").concat(referenceString, "' reference."));
193
- }
194
- return referenceVerified;
195
- }
196
- }
197
- ], [
198
- {
199
- key: "fromStatementNode",
200
- value: function fromStatementNode(statementNode, context) {
201
- var satisfyingAssertion = null;
202
- var satisfyingAssertionNode = satisfyingAssertionNodeQuery(statementNode);
203
- if (satisfyingAssertionNode !== null) {
204
- var Reference = _dom.default.Reference, node = satisfyingAssertionNode, string = context.nodeAsString(node), tokens = context.nodeAsTokens(node), terms = termsFromSatisfyingAssertionNode(satisfyingAssertionNode, context), reference = Reference.fromSatisfyingAssertionNode(satisfyingAssertionNode, context);
205
- satisfyingAssertion = new SatisfyingAssertion(string, node, tokens, terms, reference);
206
- }
207
- return satisfyingAssertion;
208
- }
209
- }
210
- ]);
211
- return SatisfyingAssertion;
212
- }(), _define_property(_SatisfyingAssertion, "name", "SatisfyingAssertion"), _SatisfyingAssertion));
213
- function termsStringFromTerms(terms) {
214
- var termsString = terms.reduce(function(termsString, term) {
215
- var termString = term.getString();
216
- termsString = termsString === null ? "'".concat(termString, "'") : "".concat(termsString, ", '").concat(termString, "'");
217
- return termsString;
218
- }, null);
219
- return termsString;
220
- }
221
- function termsFromSatisfyingAssertionNode(satisfyingAssertionNode, context) {
222
- var termNodes = termNodesQuery(satisfyingAssertionNode), terms = termNodes.map(function(termNode) {
223
- var Term = _dom.default.Term, term = Term.fromTermNode(termNode, context);
224
- return term;
225
- });
226
- return terms;
227
- }
228
-
229
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kb20vYXNzZXJ0aW9uL3NhdGlzZnlpbmcuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBkb20gZnJvbSBcIi4uLy4uL2RvbVwiO1xuXG5pbXBvcnQgeyBkb21Bc3NpZ25lZCB9IGZyb20gXCIuLi8uLi9kb21cIjtcbmltcG9ydCB7IG5vZGVRdWVyeSwgbm9kZXNRdWVyeSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgdGVybU5vZGVzUXVlcnkgPSBub2Rlc1F1ZXJ5KFwiL3NhdGlzZnlpbmdBc3NlcnRpb24vdGVybVwiKSxcbiAgICAgIHNhdGlzZnlpbmdBc3NlcnRpb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50L3NhdGlzZnlpbmdBc3NlcnRpb25cIik7XG5cbmV4cG9ydCBkZWZhdWx0IGRvbUFzc2lnbmVkKGNsYXNzIFNhdGlzZnlpbmdBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3RvcihzdHJpbmcsIG5vZGUsIHRva2VucywgdGVybXMsIHJlZmVyZW5jZSkge1xuICAgIHRoaXMuc3RyaW5nID0gc3RyaW5nO1xuICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gICAgdGhpcy50b2tlbnMgPSB0b2tlbnM7XG4gICAgdGhpcy50ZXJtcyA9IHRlcm1zO1xuICAgIHRoaXMucmVmZXJlbmNlID0gcmVmZXJlbmNlO1xuICB9XG5cbiAgZ2V0U3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLnN0cmluZztcbiAgfVxuXG4gIGdldE5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZTtcbiAgfVxuXG4gIGdldFRva2VucygpIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbnM7XG4gIH1cblxuICBnZXRUZXJtcygpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtcztcbiAgfVxuXG4gIGdldFJlZmVyZW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2U7XG4gIH1cblxuICBtYXRjaFN1YnN0aXR1dGlvbnMoc3Vic3RpdHV0aW9ucywgY29udGV4dCkge1xuICAgIGxldCBzdWJzdGl0dXRpb25zTWF0Y2g7XG5cbiAgICBjb25zdCB0ZXJtc1N0cmluZyA9IHRlcm1zU3RyaW5nRnJvbVRlcm1zKHRoaXMudGVybXMpLFxuICAgICAgICAgIHN1YnN0aXR1dGlvbnNTdHJpbmcgPSBzdWJzdGl0dXRpb25zLmFzU3RyaW5nKCksXG4gICAgICAgICAgc2F0aXNmeWluZ0Fzc2VydGlvblN0cmluZyA9IHRoaXMuc3RyaW5nOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYE1hdGNoaW5nIHRoZSAnJHtzdWJzdGl0dXRpb25zU3RyaW5nfScgc3Vic3RpdHV0aW9ucyBhZ2FpbnN0IHRoZSAnJHtzYXRpc2Z5aW5nQXNzZXJ0aW9uU3RyaW5nfScgc2F0aXNmeWluZyBhc3NlcnRpb24ncyAke3Rlcm1zU3RyaW5nfSB0ZXJtcy4uLmApO1xuXG4gICAgY29uc3QgdGVybXNFcXVhdGUgPSBzdWJzdGl0dXRpb25zLm1hdGNoVGVybXModGhpcy50ZXJtcyk7XG5cbiAgICBzdWJzdGl0dXRpb25zTWF0Y2ggPSB0ZXJtc0VxdWF0ZTsgIC8vL1xuXG4gICAgaWYgKHN1YnN0aXR1dGlvbnNNYXRjaCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4ubWF0Y2hlZCB0aGUgJyR7c3Vic3RpdHV0aW9uc1N0cmluZ30nIHN1YnN0aXR1dGlvbnMgYWdhaW5zdCB0aGUgJyR7c2F0aXNmeWluZ0Fzc2VydGlvblN0cmluZ30nIHNhdGlzZnlpbmcgYXNzZXJ0aW9uJ3MgJHt0ZXJtc1N0cmluZ30gdGVybXMuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNNYXRjaDtcbiAgfVxuXG4gIHZlcmlmeShhc3NpZ25tZW50cywgc3RhdGVkLCBjb250ZXh0KSB7XG4gICAgbGV0IHZlcmlmaWVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBzYXRpc2Z5aW5nQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5zdHJpbmc7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzYXRpc2Z5aW5nQXNzZXJ0aW9uU3RyaW5nfScgc2F0aXNmeWluZyBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnN0IHRlcm1zVmVyaWZpZWQgPSB0aGlzLnZlcmlmeVRlcm1zKGFzc2lnbm1lbnRzLCBzdGF0ZWQsIGNvbnRleHQpO1xuXG4gICAgaWYgKHRlcm1zVmVyaWZpZWQpIHtcbiAgICAgIGNvbnN0IHJlZmVyZW5jZVZlcmlmaWVkID0gdGhpcy52ZXJpZnlSZWZlcmVuY2UoYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCk7XG5cbiAgICAgIHZlcmlmaWVkID0gcmVmZXJlbmNlVmVyaWZpZWQ7IC8vL1xuICAgIH1cblxuICAgIGlmICh2ZXJpZmllZCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3NhdGlzZnlpbmdBc3NlcnRpb25TdHJpbmd9JyBzYXRpc2Z5aW5nIGFzc2VydGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyaWZpZWQ7XG4gIH1cblxuICB2ZXJpZnlUZXJtcyhhc3NpZ25tZW50cywgc3RhdGVkLCBjb250ZXh0KSB7XG4gICAgbGV0IHRlcm1zVmVyaWZpZWQ7XG5cbiAgICBjb25zdCB0ZXJtc1N0cmluZyA9IHRlcm1zU3RyaW5nRnJvbVRlcm1zKHRoaXMudGVybXMpLFxuICAgICAgICAgIHNhdGlzZnlpbmdBc3NlcnRpb25TdHJpbmcgPSB0aGlzLnN0cmluZzsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3NhdGlzZnlpbmdBc3NlcnRpb25TdHJpbmd9JyBzYXRpc2Z5aW5nIGFzc2VydGlvbidzICR7dGVybXNTdHJpbmd9IHRlcm1zLi4uYCk7XG5cbiAgICB0ZXJtc1ZlcmlmaWVkID0gdGhpcy50ZXJtcy5ldmVyeSgodGVybSkgPT4ge1xuICAgICAgY29uc3QgdGVybVZlcmlmaWVkID0gdGVybS52ZXJpZnkoY29udGV4dCwgKCkgPT4ge1xuICAgICAgICBjb25zdCB2ZXJpZmllZEFoZWFkID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gdmVyaWZpZWRBaGVhZDtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gdGVybVZlcmlmaWVkO1xuICAgIH0pO1xuXG4gICAgaWYgKHRlcm1zVmVyaWZpZWQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzYXRpc2Z5aW5nQXNzZXJ0aW9uU3RyaW5nfScgc2F0aXNmeWluZyBhc3NlcnRpb24ncyAke3Rlcm1zU3RyaW5nfSB0ZXJtcy5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVybXNWZXJpZmllZDtcbiAgfVxuXG4gIHZlcmlmeVJlZmVyZW5jZShhc3NpZ25tZW50cywgc3RhdGVkLCBjb250ZXh0KSB7XG4gICAgbGV0IHJlZmVyZW5jZVZlcmlmaWVkID0gZmFsc2U7XG5cbiAgICBjb25zdCByZWZlcmVuY2VTdHJpbmcgPSB0aGlzLnJlZmVyZW5jZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzYXRpc2Z5aW5nQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5zdHJpbmc7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzYXRpc2Z5aW5nQXNzZXJ0aW9uU3RyaW5nfScgc2F0aXNmeWluZyBhc3NlcnRpb24ncyAnJHtyZWZlcmVuY2VTdHJpbmd9JyByZWZlcmVuY2UuLi5gKTtcblxuICAgIGNvbnN0IGF4aW9tID0gY29udGV4dC5maW5kQXhpb21CeVJlZmVyZW5jZSh0aGlzLnJlZmVyZW5jZSwgY29udGV4dCk7XG5cbiAgICBpZiAoYXhpb20gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGF4aW9tU2F0aXNmeWluZyA9IGF4aW9tLmlzU2F0aXNmeWluZygpO1xuXG4gICAgICBpZiAoYXhpb21TYXRpc2Z5aW5nKSB7XG4gICAgICAgIHJlZmVyZW5jZVZlcmlmaWVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocmVmZXJlbmNlVmVyaWZpZWQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzYXRpc2Z5aW5nQXNzZXJ0aW9uU3RyaW5nfScgc2F0aXNmeWluZyBhc3NlcnRpb24ncyAnJHtyZWZlcmVuY2VTdHJpbmd9JyByZWZlcmVuY2UuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlZmVyZW5jZVZlcmlmaWVkO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlNhdGlzZnlpbmdBc3NlcnRpb25cIjtcblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCkge1xuICAgIGxldCBzYXRpc2Z5aW5nQXNzZXJ0aW9uID0gbnVsbDtcblxuICAgIGNvbnN0IHNhdGlzZnlpbmdBc3NlcnRpb25Ob2RlID0gc2F0aXNmeWluZ0Fzc2VydGlvbk5vZGVRdWVyeShzdGF0ZW1lbnROb2RlKTtcblxuICAgIGlmIChzYXRpc2Z5aW5nQXNzZXJ0aW9uTm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgeyBSZWZlcmVuY2UgfSA9IGRvbSxcbiAgICAgICAgICAgIG5vZGUgPSBzYXRpc2Z5aW5nQXNzZXJ0aW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgICAgICB0b2tlbnMgPSBjb250ZXh0Lm5vZGVBc1Rva2Vucyhub2RlKSxcbiAgICAgICAgICAgIHRlcm1zID0gdGVybXNGcm9tU2F0aXNmeWluZ0Fzc2VydGlvbk5vZGUoc2F0aXNmeWluZ0Fzc2VydGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgcmVmZXJlbmNlID0gUmVmZXJlbmNlLmZyb21TYXRpc2Z5aW5nQXNzZXJ0aW9uTm9kZShzYXRpc2Z5aW5nQXNzZXJ0aW9uTm9kZSwgY29udGV4dCk7XG5cbiAgICAgIHNhdGlzZnlpbmdBc3NlcnRpb24gPSBuZXcgU2F0aXNmeWluZ0Fzc2VydGlvbihzdHJpbmcsIG5vZGUsIHRva2VucywgdGVybXMsIHJlZmVyZW5jZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNhdGlzZnlpbmdBc3NlcnRpb247XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiB0ZXJtc1N0cmluZ0Zyb21UZXJtcyh0ZXJtcykge1xuICBjb25zdCB0ZXJtc1N0cmluZyA9IHRlcm1zLnJlZHVjZSgodGVybXNTdHJpbmcsIHRlcm0pID0+IHtcbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKTtcblxuICAgIHRlcm1zU3RyaW5nID0gKHRlcm1zU3RyaW5nID09PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgYCcke3Rlcm1TdHJpbmd9J2AgOiAgLy8vXG4gICAgICAgICAgICAgICAgICAgICBgJHt0ZXJtc1N0cmluZ30sICcke3Rlcm1TdHJpbmd9J2A7XG5cbiAgICByZXR1cm4gdGVybXNTdHJpbmc7XG4gIH0sIG51bGwpO1xuXG4gIHJldHVybiB0ZXJtc1N0cmluZztcbn1cblxuZnVuY3Rpb24gdGVybXNGcm9tU2F0aXNmeWluZ0Fzc2VydGlvbk5vZGUoc2F0aXNmeWluZ0Fzc2VydGlvbk5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdGVybU5vZGVzID0gdGVybU5vZGVzUXVlcnkoc2F0aXNmeWluZ0Fzc2VydGlvbk5vZGUpLFxuICAgICAgICB0ZXJtcyA9IHRlcm1Ob2Rlcy5tYXAoKHRlcm1Ob2RlKSA9PiB7XG4gICAgICAgICAgY29uc3QgeyBUZXJtIH0gPSBkb20sXG4gICAgICAgICAgICAgICAgdGVybSA9IFRlcm0uZnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICAgIHJldHVybiB0ZXJtO1xuICAgICAgICB9KTtcblxuICByZXR1cm4gdGVybXM7XG59XG4iXSwibmFtZXMiOlsidGVybU5vZGVzUXVlcnkiLCJub2Rlc1F1ZXJ5Iiwic2F0aXNmeWluZ0Fzc2VydGlvbk5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsImRvbUFzc2lnbmVkIiwiU2F0aXNmeWluZ0Fzc2VydGlvbiIsInN0cmluZyIsIm5vZGUiLCJ0b2tlbnMiLCJ0ZXJtcyIsInJlZmVyZW5jZSIsImdldFN0cmluZyIsImdldE5vZGUiLCJnZXRUb2tlbnMiLCJnZXRUZXJtcyIsImdldFJlZmVyZW5jZSIsIm1hdGNoU3Vic3RpdHV0aW9ucyIsInN1YnN0aXR1dGlvbnMiLCJjb250ZXh0Iiwic3Vic3RpdHV0aW9uc01hdGNoIiwidGVybXNTdHJpbmciLCJ0ZXJtc1N0cmluZ0Zyb21UZXJtcyIsInN1YnN0aXR1dGlvbnNTdHJpbmciLCJhc1N0cmluZyIsInNhdGlzZnlpbmdBc3NlcnRpb25TdHJpbmciLCJ0cmFjZSIsInRlcm1zRXF1YXRlIiwibWF0Y2hUZXJtcyIsImRlYnVnIiwidmVyaWZ5IiwiYXNzaWdubWVudHMiLCJzdGF0ZWQiLCJ2ZXJpZmllZCIsInRlcm1zVmVyaWZpZWQiLCJ2ZXJpZnlUZXJtcyIsInJlZmVyZW5jZVZlcmlmaWVkIiwidmVyaWZ5UmVmZXJlbmNlIiwiZXZlcnkiLCJ0ZXJtIiwidGVybVZlcmlmaWVkIiwidmVyaWZpZWRBaGVhZCIsInJlZmVyZW5jZVN0cmluZyIsImF4aW9tIiwiZmluZEF4aW9tQnlSZWZlcmVuY2UiLCJheGlvbVNhdGlzZnlpbmciLCJpc1NhdGlzZnlpbmciLCJmcm9tU3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudE5vZGUiLCJzYXRpc2Z5aW5nQXNzZXJ0aW9uIiwic2F0aXNmeWluZ0Fzc2VydGlvbk5vZGUiLCJSZWZlcmVuY2UiLCJkb20iLCJub2RlQXNTdHJpbmciLCJub2RlQXNUb2tlbnMiLCJ0ZXJtc0Zyb21TYXRpc2Z5aW5nQXNzZXJ0aW9uTm9kZSIsImZyb21TYXRpc2Z5aW5nQXNzZXJ0aW9uTm9kZSIsIm5hbWUiLCJyZWR1Y2UiLCJ0ZXJtU3RyaW5nIiwidGVybU5vZGVzIiwibWFwIiwidGVybU5vZGUiLCJUZXJtIiwiZnJvbVRlcm1Ob2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFVQTs7O2VBQUE7OzsyREFSZ0I7cUJBR3NCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFdEMsSUFBTUEsaUJBQWlCQyxJQUFBQSxpQkFBVSxFQUFDLDhCQUM1QkMsK0JBQStCQyxJQUFBQSxnQkFBUyxFQUFDO0lBRS9DLFdBQWVDLElBQUFBLGdCQUFXLHdDQUFDO2FBQU1DLG9CQUNuQkMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLE1BQU0sRUFBRUMsS0FBSyxFQUFFQyxTQUFTO2dDQURuQkw7UUFFN0IsSUFBSSxDQUFDQyxNQUFNLEdBQUdBO1FBQ2QsSUFBSSxDQUFDQyxJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDQyxNQUFNLEdBQUdBO1FBQ2QsSUFBSSxDQUFDQyxLQUFLLEdBQUdBO1FBQ2IsSUFBSSxDQUFDQyxTQUFTLEdBQUdBOzs7O1lBR25CQyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNMLE1BQU07WUFDcEI7OztZQUVBTSxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNMLElBQUk7WUFDbEI7OztZQUVBTSxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNMLE1BQU07WUFDcEI7OztZQUVBTSxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNMLEtBQUs7WUFDbkI7OztZQUVBTSxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNMLFNBQVM7WUFDdkI7OztZQUVBTSxLQUFBQTttQkFBQUEsU0FBQUEsbUJBQW1CQyxhQUFhLEVBQUVDLE9BQU87Z0JBQ3ZDLElBQUlDO2dCQUVKLElBQU1DLGNBQWNDLHFCQUFxQixJQUFJLENBQUNaLEtBQUssR0FDN0NhLHNCQUFzQkwsY0FBY00sUUFBUSxJQUM1Q0MsNEJBQTRCLElBQUksQ0FBQ2xCLE1BQU0sRUFBRSxHQUFHO2dCQUVsRFksUUFBUU8sS0FBSyxDQUFDLEFBQUMsaUJBQW1FRCxPQUFuREYscUJBQW9CLGlDQUFvRkYsT0FBckRJLDJCQUEwQiw2QkFBdUMsT0FBWkosYUFBWTtnQkFFbkosSUFBTU0sY0FBY1QsY0FBY1UsVUFBVSxDQUFDLElBQUksQ0FBQ2xCLEtBQUs7Z0JBRXZEVSxxQkFBcUJPLGFBQWMsR0FBRztnQkFFdEMsSUFBSVAsb0JBQW9CO29CQUN0QkQsUUFBUVUsS0FBSyxDQUFDLEFBQUMsbUJBQXFFSixPQUFuREYscUJBQW9CLGlDQUFvRkYsT0FBckRJLDJCQUEwQiw2QkFBdUMsT0FBWkosYUFBWTtnQkFDdko7Z0JBRUEsT0FBT0Q7WUFDVDs7O1lBRUFVLEtBQUFBO21CQUFBQSxTQUFBQSxPQUFPQyxXQUFXLEVBQUVDLE1BQU0sRUFBRWIsT0FBTztnQkFDakMsSUFBSWMsV0FBVztnQkFFZixJQUFNUiw0QkFBNEIsSUFBSSxDQUFDbEIsTUFBTSxFQUFFLEdBQUc7Z0JBRWxEWSxRQUFRTyxLQUFLLENBQUMsQUFBQyxrQkFBMkMsT0FBMUJELDJCQUEwQjtnQkFFMUQsSUFBTVMsZ0JBQWdCLElBQUksQ0FBQ0MsV0FBVyxDQUFDSixhQUFhQyxRQUFRYjtnQkFFNUQsSUFBSWUsZUFBZTtvQkFDakIsSUFBTUUsb0JBQW9CLElBQUksQ0FBQ0MsZUFBZSxDQUFDTixhQUFhQyxRQUFRYjtvQkFFcEVjLFdBQVdHLG1CQUFtQixHQUFHO2dCQUNuQztnQkFFQSxJQUFJSCxVQUFVO29CQUNaZCxRQUFRVSxLQUFLLENBQUMsQUFBQyxvQkFBNkMsT0FBMUJKLDJCQUEwQjtnQkFDOUQ7Z0JBRUEsT0FBT1E7WUFDVDs7O1lBRUFFLEtBQUFBO21CQUFBQSxTQUFBQSxZQUFZSixXQUFXLEVBQUVDLE1BQU0sRUFBRWIsT0FBTztnQkFDdEMsSUFBSWU7Z0JBRUosSUFBTWIsY0FBY0MscUJBQXFCLElBQUksQ0FBQ1osS0FBSyxHQUM3Q2UsNEJBQTRCLElBQUksQ0FBQ2xCLE1BQU0sRUFBRSxHQUFHO2dCQUVsRFksUUFBUU8sS0FBSyxDQUFDLEFBQUMsa0JBQXNFTCxPQUFyREksMkJBQTBCLDZCQUF1QyxPQUFaSixhQUFZO2dCQUVqR2EsZ0JBQWdCLElBQUksQ0FBQ3hCLEtBQUssQ0FBQzRCLEtBQUssQ0FBQyxTQUFDQztvQkFDaEMsSUFBTUMsZUFBZUQsS0FBS1QsTUFBTSxDQUFDWCxTQUFTO3dCQUN4QyxJQUFNc0IsZ0JBQWdCO3dCQUV0QixPQUFPQTtvQkFDVDtvQkFFQSxPQUFPRDtnQkFDVDtnQkFFQSxJQUFJTixlQUFlO29CQUNqQmYsUUFBUVUsS0FBSyxDQUFDLEFBQUMsb0JBQXdFUixPQUFyREksMkJBQTBCLDZCQUF1QyxPQUFaSixhQUFZO2dCQUNyRztnQkFFQSxPQUFPYTtZQUNUOzs7WUFFQUcsS0FBQUE7bUJBQUFBLFNBQUFBLGdCQUFnQk4sV0FBVyxFQUFFQyxNQUFNLEVBQUViLE9BQU87Z0JBQzFDLElBQUlpQixvQkFBb0I7Z0JBRXhCLElBQU1NLGtCQUFrQixJQUFJLENBQUMvQixTQUFTLENBQUNDLFNBQVMsSUFDMUNhLDRCQUE0QixJQUFJLENBQUNsQixNQUFNLEVBQUUsR0FBRztnQkFFbERZLFFBQVFPLEtBQUssQ0FBQyxBQUFDLGtCQUF1RWdCLE9BQXREakIsMkJBQTBCLDhCQUE0QyxPQUFoQmlCLGlCQUFnQjtnQkFFdEcsSUFBTUMsUUFBUXhCLFFBQVF5QixvQkFBb0IsQ0FBQyxJQUFJLENBQUNqQyxTQUFTLEVBQUVRO2dCQUUzRCxJQUFJd0IsVUFBVSxNQUFNO29CQUNsQixJQUFNRSxrQkFBa0JGLE1BQU1HLFlBQVk7b0JBRTFDLElBQUlELGlCQUFpQjt3QkFDbkJULG9CQUFvQjtvQkFDdEI7Z0JBQ0Y7Z0JBRUEsSUFBSUEsbUJBQW1CO29CQUNyQmpCLFFBQVFVLEtBQUssQ0FBQyxBQUFDLG9CQUF5RWEsT0FBdERqQiwyQkFBMEIsOEJBQTRDLE9BQWhCaUIsaUJBQWdCO2dCQUMxRztnQkFFQSxPQUFPTjtZQUNUOzs7O1lBSU9XLEtBQUFBO21CQUFQLFNBQU9BLGtCQUFrQkMsYUFBYSxFQUFFN0IsT0FBTztnQkFDN0MsSUFBSThCLHNCQUFzQjtnQkFFMUIsSUFBTUMsMEJBQTBCL0MsNkJBQTZCNkM7Z0JBRTdELElBQUlFLDRCQUE0QixNQUFNO29CQUNwQyxJQUFNLEFBQUVDLFlBQWNDLFlBQUcsQ0FBakJELFdBQ0YzQyxPQUFPMEMseUJBQ1AzQyxTQUFTWSxRQUFRa0MsWUFBWSxDQUFDN0MsT0FDOUJDLFNBQVNVLFFBQVFtQyxZQUFZLENBQUM5QyxPQUM5QkUsUUFBUTZDLGlDQUFpQ0wseUJBQXlCL0IsVUFDbEVSLFlBQVl3QyxVQUFVSywyQkFBMkIsQ0FBQ04seUJBQXlCL0I7b0JBRWpGOEIsc0JBQXNCLElBQUkzQyxvQkFBb0JDLFFBQVFDLE1BQU1DLFFBQVFDLE9BQU9DO2dCQUM3RTtnQkFFQSxPQUFPc0M7WUFDVDs7OztLQW5CQSx1Q0FBT1EsUUFBTztBQXNCaEIsU0FBU25DLHFCQUFxQlosS0FBSztJQUNqQyxJQUFNVyxjQUFjWCxNQUFNZ0QsTUFBTSxDQUFDLFNBQUNyQyxhQUFha0I7UUFDN0MsSUFBTW9CLGFBQWFwQixLQUFLM0IsU0FBUztRQUVqQ1MsY0FBYyxBQUFDQSxnQkFBZ0IsT0FDaEIsQUFBQyxJQUFjLE9BQVhzQyxZQUFXLE9BQ2IsQUFBQyxHQUFtQkEsT0FBakJ0QyxhQUFZLE9BQWdCLE9BQVhzQyxZQUFXO1FBRWhELE9BQU90QztJQUNULEdBQUc7SUFFSCxPQUFPQTtBQUNUO0FBRUEsU0FBU2tDLGlDQUFpQ0wsdUJBQXVCLEVBQUUvQixPQUFPO0lBQ3hFLElBQU15QyxZQUFZM0QsZUFBZWlELDBCQUMzQnhDLFFBQVFrRCxVQUFVQyxHQUFHLENBQUMsU0FBQ0M7UUFDckIsSUFBTSxBQUFFQyxPQUFTWCxZQUFHLENBQVpXLE1BQ0Z4QixPQUFPd0IsS0FBS0MsWUFBWSxDQUFDRixVQUFVM0M7UUFFekMsT0FBT29CO0lBQ1Q7SUFFTixPQUFPN0I7QUFDVCJ9