occam-verify-cli 1.0.387 → 1.0.396

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 (119) hide show
  1. package/lib/action/verify.js +3 -3
  2. package/lib/context/file.js +8 -7
  3. package/lib/context/local.js +23 -57
  4. package/lib/context/temporary.js +705 -0
  5. package/lib/mixins/statement/verify.js +38 -16
  6. package/lib/mixins/step/unify.js +3 -3
  7. package/lib/node/substitution/frame.js +23 -1
  8. package/lib/node/substitution/term.js +23 -1
  9. package/lib/ontology/assertion/contained.js +77 -35
  10. package/lib/ontology/assertion/defined.js +76 -34
  11. package/lib/ontology/assertion/property.js +71 -29
  12. package/lib/ontology/assertion/satisfies.js +70 -22
  13. package/lib/ontology/assertion/subproof.js +95 -41
  14. package/lib/ontology/assertion/type.js +74 -18
  15. package/lib/ontology/assertion.js +66 -0
  16. package/lib/ontology/axiom.js +8 -11
  17. package/lib/ontology/combinator/bracketed.js +17 -3
  18. package/lib/ontology/combinator.js +17 -3
  19. package/lib/ontology/conclusion.js +38 -9
  20. package/lib/ontology/constructor/bracketed.js +17 -3
  21. package/lib/ontology/constructor.js +17 -3
  22. package/lib/ontology/declaration.js +27 -2
  23. package/lib/ontology/deduction.js +38 -9
  24. package/lib/ontology/frame.js +50 -13
  25. package/lib/ontology/hypothesis.js +11 -11
  26. package/lib/ontology/judgement.js +1 -1
  27. package/lib/ontology/label.js +5 -6
  28. package/lib/ontology/metavariable.js +11 -12
  29. package/lib/ontology/premise.js +47 -17
  30. package/lib/ontology/procedureCall.js +15 -15
  31. package/lib/ontology/procedureReference.js +1 -1
  32. package/lib/ontology/proof.js +2 -2
  33. package/lib/ontology/reference.js +4 -5
  34. package/lib/ontology/rule.js +68 -69
  35. package/lib/ontology/section.js +2 -2
  36. package/lib/ontology/signature.js +2 -2
  37. package/lib/ontology/statement.js +9 -1
  38. package/lib/ontology/step.js +37 -24
  39. package/lib/ontology/subproof.js +11 -11
  40. package/lib/ontology/substitution/frame.js +69 -21
  41. package/lib/ontology/substitution/reference.js +24 -9
  42. package/lib/ontology/substitution/statement.js +99 -79
  43. package/lib/ontology/substitution/term.js +89 -29
  44. package/lib/ontology/substitution.js +37 -30
  45. package/lib/ontology/supposition.js +56 -25
  46. package/lib/ontology/term.js +4 -3
  47. package/lib/ontology/topLevelAssertion.js +15 -15
  48. package/lib/ontology/topLevelMetaAssertion.js +2 -2
  49. package/lib/ontology/variable.js +42 -14
  50. package/lib/substitutions.js +25 -25
  51. package/lib/unifier/intrinsicLevel.js +14 -7
  52. package/lib/unifier/metaLevel.js +25 -17
  53. package/lib/utilities/brackets.js +4 -21
  54. package/lib/utilities/context.js +6 -6
  55. package/lib/utilities/json.js +24 -1
  56. package/lib/utilities/metavariable.js +18 -0
  57. package/lib/utilities/substitutions.js +3 -3
  58. package/lib/utilities/unification.js +10 -16
  59. package/lib/utilities/variable.js +30 -0
  60. package/package.json +2 -2
  61. package/src/action/verify.js +2 -2
  62. package/src/context/file.js +8 -7
  63. package/src/context/local.js +13 -61
  64. package/src/context/temporary.js +394 -0
  65. package/src/mixins/statement/verify.js +60 -23
  66. package/src/mixins/step/unify.js +2 -2
  67. package/src/node/substitution/frame.js +26 -0
  68. package/src/node/substitution/term.js +26 -0
  69. package/src/ontology/assertion/contained.js +12 -23
  70. package/src/ontology/assertion/defined.js +12 -23
  71. package/src/ontology/assertion/property.js +7 -20
  72. package/src/ontology/assertion/satisfies.js +7 -16
  73. package/src/ontology/assertion/subproof.js +36 -42
  74. package/src/ontology/assertion/type.js +10 -11
  75. package/src/ontology/assertion.js +23 -0
  76. package/src/ontology/axiom.js +7 -16
  77. package/src/ontology/combinator/bracketed.js +2 -0
  78. package/src/ontology/combinator.js +2 -0
  79. package/src/ontology/conclusion.js +51 -10
  80. package/src/ontology/constructor/bracketed.js +2 -0
  81. package/src/ontology/constructor.js +2 -0
  82. package/src/ontology/declaration.js +34 -1
  83. package/src/ontology/deduction.js +51 -10
  84. package/src/ontology/frame.js +58 -21
  85. package/src/ontology/hypothesis.js +8 -8
  86. package/src/ontology/judgement.js +1 -1
  87. package/src/ontology/label.js +2 -7
  88. package/src/ontology/metavariable.js +12 -15
  89. package/src/ontology/premise.js +64 -21
  90. package/src/ontology/procedureCall.js +14 -14
  91. package/src/ontology/procedureReference.js +2 -2
  92. package/src/ontology/proof.js +1 -1
  93. package/src/ontology/reference.js +1 -6
  94. package/src/ontology/rule.js +76 -80
  95. package/src/ontology/section.js +1 -1
  96. package/src/ontology/signature.js +1 -1
  97. package/src/ontology/statement.js +6 -0
  98. package/src/ontology/step.js +43 -26
  99. package/src/ontology/subproof.js +8 -8
  100. package/src/ontology/substitution/frame.js +72 -26
  101. package/src/ontology/substitution/reference.js +8 -6
  102. package/src/ontology/substitution/statement.js +93 -77
  103. package/src/ontology/substitution/term.js +108 -42
  104. package/src/ontology/substitution.js +27 -22
  105. package/src/ontology/supposition.js +70 -24
  106. package/src/ontology/term.js +5 -5
  107. package/src/ontology/topLevelAssertion.js +14 -16
  108. package/src/ontology/topLevelMetaAssertion.js +1 -1
  109. package/src/ontology/variable.js +64 -17
  110. package/src/substitutions.js +25 -25
  111. package/src/unifier/intrinsicLevel.js +18 -8
  112. package/src/unifier/metaLevel.js +35 -21
  113. package/src/utilities/brackets.js +3 -29
  114. package/src/utilities/context.js +5 -5
  115. package/src/utilities/json.js +28 -0
  116. package/src/utilities/metavariable.js +13 -0
  117. package/src/utilities/substitutions.js +2 -4
  118. package/src/utilities/unification.js +8 -24
  119. package/src/utilities/variable.js +22 -0
@@ -0,0 +1,705 @@
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 TemporaryContext;
9
+ }
10
+ });
11
+ var _necessary = require("necessary");
12
+ function _class_call_check(instance, Constructor) {
13
+ if (!(instance instanceof Constructor)) {
14
+ throw new TypeError("Cannot call a class as a function");
15
+ }
16
+ }
17
+ function _defineProperties(target, props) {
18
+ for(var i = 0; i < props.length; i++){
19
+ var descriptor = props[i];
20
+ descriptor.enumerable = descriptor.enumerable || false;
21
+ descriptor.configurable = true;
22
+ if ("value" in descriptor) descriptor.writable = true;
23
+ Object.defineProperty(target, descriptor.key, descriptor);
24
+ }
25
+ }
26
+ function _create_class(Constructor, protoProps, staticProps) {
27
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
28
+ if (staticProps) _defineProperties(Constructor, staticProps);
29
+ return Constructor;
30
+ }
31
+ var first = _necessary.arrayUtilities.first, extract = _necessary.arrayUtilities.extract;
32
+ var TemporaryContext = /*#__PURE__*/ function() {
33
+ function TemporaryContext(context, tokens1, terms, frames, statements, assertions, reference, substitution) {
34
+ _class_call_check(this, TemporaryContext);
35
+ this.context = context;
36
+ this.tokens = tokens1;
37
+ this.terms = terms;
38
+ this.frames = frames;
39
+ this.statements = statements;
40
+ this.assertions = assertions;
41
+ this.reference = reference;
42
+ this.substitution = substitution;
43
+ }
44
+ _create_class(TemporaryContext, [
45
+ {
46
+ key: "getContext",
47
+ value: function getContext() {
48
+ return this.context;
49
+ }
50
+ },
51
+ {
52
+ key: "getTokens",
53
+ value: function getTokens() {
54
+ return tokens;
55
+ }
56
+ },
57
+ {
58
+ key: "getTerms",
59
+ value: function getTerms() {
60
+ return this.terms;
61
+ }
62
+ },
63
+ {
64
+ key: "getFrames",
65
+ value: function getFrames() {
66
+ return this.frames;
67
+ }
68
+ },
69
+ {
70
+ key: "getStatements",
71
+ value: function getStatements() {
72
+ return this.statements;
73
+ }
74
+ },
75
+ {
76
+ key: "getAssertions",
77
+ value: function getAssertions() {
78
+ return this.assertions;
79
+ }
80
+ },
81
+ {
82
+ key: "getReferences",
83
+ value: function getReferences() {
84
+ return this.reference;
85
+ }
86
+ },
87
+ {
88
+ key: "getSubstitution",
89
+ value: function getSubstitution() {
90
+ return this.substitution;
91
+ }
92
+ },
93
+ {
94
+ key: "addTerm",
95
+ value: function addTerm(term) {
96
+ var termNode = term.getNode();
97
+ extract(this.terms, function(term) {
98
+ var termMatchesTermNode = term.matchTermNode(termNode);
99
+ if (termMatchesTermNode) {
100
+ return true;
101
+ }
102
+ });
103
+ this.terms.push(term);
104
+ }
105
+ },
106
+ {
107
+ key: "addFrame",
108
+ value: function addFrame(frame) {
109
+ var frameNode = frame.getNode();
110
+ extract(this.frames, function(frame) {
111
+ var frameMatchesFrameNode = frame.matchFrameNode(frameNode);
112
+ if (frameMatchesFrameNode) {
113
+ return true;
114
+ }
115
+ });
116
+ this.frames.push(frame);
117
+ }
118
+ },
119
+ {
120
+ key: "removeFrame",
121
+ value: function removeFrame(frame) {
122
+ var index = this.frames.indexOf(frame), start = index, deleteCount = 1;
123
+ this.frames.splice(start, deleteCount);
124
+ }
125
+ },
126
+ {
127
+ key: "addStatement",
128
+ value: function addStatement(statement) {
129
+ var statementNode = statement.getNode();
130
+ extract(this.statements, function(statement) {
131
+ var statementMatchesFrameNode = statement.matchStatementNode(statementNode);
132
+ if (statementMatchesFrameNode) {
133
+ return true;
134
+ }
135
+ });
136
+ this.statements.push(statement);
137
+ }
138
+ },
139
+ {
140
+ key: "addAssertion",
141
+ value: function addAssertion(assertion) {
142
+ var assertionNode = assertion.getNode();
143
+ extract(this.assertions, function(assertion) {
144
+ var assertionMatchesFrameNode = assertion.matchAssertionNode(assertionNode);
145
+ if (assertionMatchesFrameNode) {
146
+ return true;
147
+ }
148
+ });
149
+ this.assertions.push(assertion);
150
+ }
151
+ },
152
+ {
153
+ key: "addReference",
154
+ value: function addReference(reference) {
155
+ this.reference = reference;
156
+ }
157
+ },
158
+ {
159
+ key: "addSubstitution",
160
+ value: function addSubstitution(substitution) {
161
+ this.substitution = substitution;
162
+ }
163
+ },
164
+ {
165
+ key: "findTermByTermNode",
166
+ value: function findTermByTermNode(termNode) {
167
+ var term = this.terms.find(function(term) {
168
+ var termMatchesTermNode = term.matchTermNode(termNode);
169
+ if (termMatchesTermNode) {
170
+ return true;
171
+ }
172
+ }) || null;
173
+ return term;
174
+ }
175
+ },
176
+ {
177
+ key: "findFrameByFrameNode",
178
+ value: function findFrameByFrameNode(frameNode) {
179
+ var frame = this.frames.find(function(frame) {
180
+ var frameMatchesFrameNode = frame.matchFrameNode(frameNode);
181
+ if (frameMatchesFrameNode) {
182
+ return true;
183
+ }
184
+ }) || null;
185
+ return frame;
186
+ }
187
+ },
188
+ {
189
+ key: "findStatementByStatementNode",
190
+ value: function findStatementByStatementNode(statementNode) {
191
+ var statement = this.statements.find(function(statement) {
192
+ var statementMatchesStatementNode = statement.matchStatementNode(statementNode);
193
+ if (statementMatchesStatementNode) {
194
+ return true;
195
+ }
196
+ }) || null;
197
+ return statement;
198
+ }
199
+ },
200
+ {
201
+ key: "findReferenceByMetavariableName",
202
+ value: function findReferenceByMetavariableName(metavariableName) {
203
+ var reference = null;
204
+ var referenceMatchesMetavariableName = this.reference.matchMetavariableName(metavariableName);
205
+ if (referenceMatchesMetavariableName) {
206
+ reference = this.reference;
207
+ }
208
+ return reference;
209
+ }
210
+ },
211
+ {
212
+ key: "getFrame",
213
+ value: function getFrame() {
214
+ var frame = null;
215
+ var framesLengtrh = this.frames.length;
216
+ if (framesLengtrh === 1) {
217
+ var firstFrame = first(this.frames);
218
+ frame = firstFrame; ///
219
+ }
220
+ return frame;
221
+ }
222
+ },
223
+ {
224
+ key: "getVariables",
225
+ value: function getVariables() {
226
+ var nested = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true;
227
+ return this.context.getVariables(nested);
228
+ }
229
+ },
230
+ {
231
+ key: "getJudgements",
232
+ value: function getJudgements() {
233
+ return this.context.getJudgements();
234
+ }
235
+ },
236
+ {
237
+ key: "getEquivalences",
238
+ value: function getEquivalences() {
239
+ return this.context.getEquivalences();
240
+ }
241
+ },
242
+ {
243
+ key: "getSteps",
244
+ value: function getSteps() {
245
+ return this.context.getSteps();
246
+ }
247
+ },
248
+ {
249
+ key: "getLastStep",
250
+ value: function getLastStep() {
251
+ return this.context.getLastStep();
252
+ }
253
+ },
254
+ {
255
+ key: "getStepsOrSubproofs",
256
+ value: function getStepsOrSubproofs() {
257
+ return this.context.getStepsOrSubproofs();
258
+ }
259
+ },
260
+ {
261
+ key: "getFilePath",
262
+ value: function getFilePath() {
263
+ return this.context.getFilePath();
264
+ }
265
+ },
266
+ {
267
+ key: "getLexer",
268
+ value: function getLexer() {
269
+ return this.context.getLexer();
270
+ }
271
+ },
272
+ {
273
+ key: "getParser",
274
+ value: function getParser() {
275
+ return this.context.getParser();
276
+ }
277
+ },
278
+ {
279
+ key: "getAxioms",
280
+ value: function getAxioms() {
281
+ return this.context.getAxioms();
282
+ }
283
+ },
284
+ {
285
+ key: "getLemmas",
286
+ value: function getLemmas() {
287
+ return this.context.getLemmas();
288
+ }
289
+ },
290
+ {
291
+ key: "getTheorems",
292
+ value: function getTheorems() {
293
+ return this.context.getTheorems();
294
+ }
295
+ },
296
+ {
297
+ key: "getConjectures",
298
+ value: function getConjectures() {
299
+ return this.context.getConjectures();
300
+ }
301
+ },
302
+ {
303
+ key: "getCombinators",
304
+ value: function getCombinators() {
305
+ return this.context.getCombinators();
306
+ }
307
+ },
308
+ {
309
+ key: "getConstructors",
310
+ value: function getConstructors() {
311
+ return this.context.getConstructors();
312
+ }
313
+ },
314
+ {
315
+ key: "getTypePrefix",
316
+ value: function getTypePrefix() {
317
+ return this.context.getTypePrefix();
318
+ }
319
+ },
320
+ {
321
+ key: "addAxiom",
322
+ value: function addAxiom(axiom) {
323
+ this.context.addAxiom(axiom);
324
+ }
325
+ },
326
+ {
327
+ key: "addLemma",
328
+ value: function addLemma(lemma) {
329
+ this.context.addLemma(lemma);
330
+ }
331
+ },
332
+ {
333
+ key: "addTheorem",
334
+ value: function addTheorem(theorem) {
335
+ this.context.addTheorem(theorem);
336
+ }
337
+ },
338
+ {
339
+ key: "addEquality",
340
+ value: function addEquality(equality, context) {
341
+ return this.context.addEquality(equality, context);
342
+ }
343
+ },
344
+ {
345
+ key: "addVariable",
346
+ value: function addVariable(variable) {
347
+ var nested = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;
348
+ return this.context.addVariable(variable, nested);
349
+ }
350
+ },
351
+ {
352
+ key: "addJudgement",
353
+ value: function addJudgement(judgement) {
354
+ return this.context.addJudgement(judgement);
355
+ }
356
+ },
357
+ {
358
+ key: "addStepOrSubproof",
359
+ value: function addStepOrSubproof(stepOrSubproof) {
360
+ this.context.addStepOrSubproof(stepOrSubproof);
361
+ }
362
+ },
363
+ {
364
+ key: "findProcedureByName",
365
+ value: function findProcedureByName(name) {
366
+ return this.context.findProcedureByName(name);
367
+ }
368
+ },
369
+ {
370
+ key: "findLabelByReference",
371
+ value: function findLabelByReference(reference, context) {
372
+ return this.context.findLabelByReference(reference, context);
373
+ }
374
+ },
375
+ {
376
+ key: "findRuleByReference",
377
+ value: function findRuleByReference(reference) {
378
+ return this.context.findRuleByReference(reference);
379
+ }
380
+ },
381
+ {
382
+ key: "findAxiomByReference",
383
+ value: function findAxiomByReference(reference) {
384
+ return this.context.findAxiomByReference(reference);
385
+ }
386
+ },
387
+ {
388
+ key: "findLemmaByReference",
389
+ value: function findLemmaByReference(reference) {
390
+ return this.context.findLemmaByReference(reference);
391
+ }
392
+ },
393
+ {
394
+ key: "findTheoremByReference",
395
+ value: function findTheoremByReference(reference) {
396
+ return this.context.findTheoremByReference(reference);
397
+ }
398
+ },
399
+ {
400
+ key: "findConjectureByReference",
401
+ value: function findConjectureByReference(reference) {
402
+ return this.context.findConjectureByReference(reference);
403
+ }
404
+ },
405
+ {
406
+ key: "findMetaLemmasByReference",
407
+ value: function findMetaLemmasByReference(reference) {
408
+ return this.context.findMetaLemmasByReference(reference);
409
+ }
410
+ },
411
+ {
412
+ key: "findMetatheoremsByReference",
413
+ value: function findMetatheoremsByReference(reference) {
414
+ return this.context.findMetatheoremsByReference(reference);
415
+ }
416
+ },
417
+ {
418
+ key: "findMetaLemmaMetatheoremByReference",
419
+ value: function findMetaLemmaMetatheoremByReference(reference) {
420
+ return this.context.findMetaLemmaMetatheoremByReference(reference);
421
+ }
422
+ },
423
+ {
424
+ key: "findMetaLemmaMetatheoremsByReference",
425
+ value: function findMetaLemmaMetatheoremsByReference(reference) {
426
+ return this.context.findMetaLemmaMetatheoremsByReference(reference);
427
+ }
428
+ },
429
+ {
430
+ key: "findVariableByVariableIdentifier",
431
+ value: function findVariableByVariableIdentifier(variableIdentifier) {
432
+ var nested = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;
433
+ return this.context.findVariableByVariableIdentifier(variableIdentifier, nested);
434
+ }
435
+ },
436
+ {
437
+ key: "findJudgementByMetavariable",
438
+ value: function findJudgementByMetavariable(metavariable) {
439
+ return this.context.findJudgementByMetavariable(metavariable);
440
+ }
441
+ },
442
+ {
443
+ key: "findEquivalenceByTerm",
444
+ value: function findEquivalenceByTerm(term) {
445
+ return this.context.findEquivalenceByTerm(term);
446
+ }
447
+ },
448
+ {
449
+ key: "findMetavariable",
450
+ value: function findMetavariable(metavariable) {
451
+ return this.context.findMetavariable(metavariable);
452
+ }
453
+ },
454
+ {
455
+ key: "findLabelByMetavariable",
456
+ value: function findLabelByMetavariable(metavariable) {
457
+ return this.context.findLabelByMetavariable(metavariable);
458
+ }
459
+ },
460
+ {
461
+ key: "findTypeByNominalTypeName",
462
+ value: function findTypeByNominalTypeName(nominalTypeName) {
463
+ return this.context.findTypeByNominalTypeName(nominalTypeName);
464
+ }
465
+ },
466
+ {
467
+ key: "findMetaTypeByMetaTypeName",
468
+ value: function findMetaTypeByMetaTypeName(metaTypeName) {
469
+ return this.context.findMetaTypeByMetaTypeName(metaTypeName);
470
+ }
471
+ },
472
+ {
473
+ key: "findMetavariableByMetavariableName",
474
+ value: function findMetavariableByMetavariableName(metavariableName) {
475
+ return this.context.findMetavariableByMetavariableName(metavariableName);
476
+ }
477
+ },
478
+ {
479
+ key: "isProcedurePresentByName",
480
+ value: function isProcedurePresentByName(name) {
481
+ return this.context.isProcedurePresentByName(name);
482
+ }
483
+ },
484
+ {
485
+ key: "isLabelPresentByReference",
486
+ value: function isLabelPresentByReference(reference) {
487
+ return this.context.isLabelPresentByReference(reference);
488
+ }
489
+ },
490
+ {
491
+ key: "isMetavariablePresentByReference",
492
+ value: function isMetavariablePresentByReference(reference) {
493
+ return this.context.isMetavariablePresentByReference(reference);
494
+ }
495
+ },
496
+ {
497
+ key: "isMetaLemmaMetatheoremPresentByReference",
498
+ value: function isMetaLemmaMetatheoremPresentByReference(reference) {
499
+ return this.context.isMetaLemmaMetatheoremPresentByReference(reference);
500
+ }
501
+ },
502
+ {
503
+ key: "findAxiomLemmaTheoremOrConjectureByReference",
504
+ value: function findAxiomLemmaTheoremOrConjectureByReference(reference) {
505
+ return this.context.findAxiomLemmaTheoremOrConjectureByReference(reference);
506
+ }
507
+ },
508
+ {
509
+ key: "isMetavariablePresent",
510
+ value: function isMetavariablePresent(metavariable) {
511
+ return this.context.isMetavariablePresent(metavariable);
512
+ }
513
+ },
514
+ {
515
+ key: "isTypePresentByTypeName",
516
+ value: function isTypePresentByTypeName(typeName) {
517
+ var includeRelease = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true, includeDependencies = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : true;
518
+ return this.context.isTypePresentByTypeName(typeName, includeRelease, includeDependencies);
519
+ }
520
+ },
521
+ {
522
+ key: "isTypePresentByNominalTypeName",
523
+ value: function isTypePresentByNominalTypeName(nominalTypeName) {
524
+ return this.context.isTypePresentByNominalTypeName(nominalTypeName);
525
+ }
526
+ },
527
+ {
528
+ key: "isTypePresentByPrefixedTypeName",
529
+ value: function isTypePresentByPrefixedTypeName(prefixedTypeName) {
530
+ return this.context.isTypePresentByPrefixedTypeName(prefixedTypeName);
531
+ }
532
+ },
533
+ {
534
+ key: "isTypePrefixPresentByTypePrefixName",
535
+ value: function isTypePrefixPresentByTypePrefixName(typePrefixName) {
536
+ return this.context.isTypePrefixPresentByTypePrefixName(typePrefixName);
537
+ }
538
+ },
539
+ {
540
+ key: "isVariablePresentByVariableIdentifier",
541
+ value: function isVariablePresentByVariableIdentifier(variableIdentifier) {
542
+ var nested = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;
543
+ return this.context.findVariableByVariableIdentifier(variableIdentifier, nested);
544
+ }
545
+ },
546
+ {
547
+ key: "isLabelPresentByMetavariableName",
548
+ value: function isLabelPresentByMetavariableName(metavariableName) {
549
+ return this.context.isLabelPresentByMetavariableName(metavariableName);
550
+ }
551
+ },
552
+ {
553
+ key: "isLabelPresentByMetavariable",
554
+ value: function isLabelPresentByMetavariable(metavariable) {
555
+ return this.context.isLabelPresentByMetavariable(metavariable);
556
+ }
557
+ },
558
+ {
559
+ key: "isMetavariablePresentByMetavariableName",
560
+ value: function isMetavariablePresentByMetavariableName(metavariableNode) {
561
+ return this.context.isMetavariablePresentByMetavariableName(metavariableNode);
562
+ }
563
+ },
564
+ {
565
+ key: "isJudgementPresentByMetavariable",
566
+ value: function isJudgementPresentByMetavariable(metavariable) {
567
+ return this.context.isJudgementPresentByMetavariable(metavariable);
568
+ }
569
+ },
570
+ {
571
+ key: "isTermGrounded",
572
+ value: function isTermGrounded(term) {
573
+ return this.context.isTermGrounded(term);
574
+ }
575
+ },
576
+ {
577
+ key: "isVariableDefined",
578
+ value: function isVariableDefined(variable) {
579
+ return this.context.isVariableDefined(variable);
580
+ }
581
+ },
582
+ {
583
+ key: "isMetavariableDefined",
584
+ value: function isMetavariableDefined(metavariable) {
585
+ return this.context.isMetavariableDefined(metavariable);
586
+ }
587
+ },
588
+ {
589
+ key: "matchTermAndPropertyRelation",
590
+ value: function matchTermAndPropertyRelation(term, propertyRelation) {
591
+ return this.context.matchTermAndPropertyRelation(term, propertyRelation);
592
+ }
593
+ },
594
+ {
595
+ key: "nodeAsString",
596
+ value: function nodeAsString(node) {
597
+ var tokens1 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null;
598
+ if (tokens1 === null) {
599
+ tokens1 = this.tokens;
600
+ }
601
+ var string = this.context.nodeAsString(node, tokens1);
602
+ return string;
603
+ }
604
+ },
605
+ {
606
+ key: "nodesAsString",
607
+ value: function nodesAsString(node) {
608
+ var tokens1 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null;
609
+ if (tokens1 === null) {
610
+ tokens1 = this.tokens;
611
+ }
612
+ var string = this.context.nodesAsString(node, tokens1);
613
+ return string;
614
+ }
615
+ },
616
+ {
617
+ key: "nodeAsTokens",
618
+ value: function nodeAsTokens(node) {
619
+ var tokens1 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null;
620
+ if (tokens1 === null) {
621
+ tokens1 = this.tokens;
622
+ }
623
+ tokens1 = this.context.nodeAsTokens(node, tokens1); ///
624
+ return tokens1;
625
+ }
626
+ },
627
+ {
628
+ key: "nodesAsTokens",
629
+ value: function nodesAsTokens(node) {
630
+ var tokens1 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null;
631
+ if (tokens1 === null) {
632
+ tokens1 = this.tokens;
633
+ }
634
+ tokens1 = this.context.nodesAsTokens(node, tokens1); ///
635
+ return tokens1;
636
+ }
637
+ },
638
+ {
639
+ key: "tokensAsString",
640
+ value: function tokensAsString(tokens1) {
641
+ return this.context.tokensAsString(tokens1);
642
+ }
643
+ },
644
+ {
645
+ key: "trace",
646
+ value: function trace(message) {
647
+ var node = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null;
648
+ this.context.trace(message, node);
649
+ }
650
+ },
651
+ {
652
+ key: "debug",
653
+ value: function debug(message) {
654
+ var node = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null;
655
+ this.context.debug(message, node);
656
+ }
657
+ },
658
+ {
659
+ key: "info",
660
+ value: function info(message) {
661
+ var node = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null;
662
+ this.context.info(message, node);
663
+ }
664
+ },
665
+ {
666
+ key: "warning",
667
+ value: function warning(message) {
668
+ var node = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null;
669
+ this.context.warning(message, node);
670
+ }
671
+ },
672
+ {
673
+ key: "error",
674
+ value: function error(message) {
675
+ var node = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null;
676
+ this.context.error(message, node);
677
+ }
678
+ }
679
+ ], [
680
+ {
681
+ key: "fromNothing",
682
+ value: function fromNothing(context) {
683
+ var terms = [], frames = [], tokens1 = null, statements = [], assertions = [], reference = null, substitution = null, temporaryContext = new TemporaryContext(context, tokens1, terms, frames, statements, assertions, reference, substitution);
684
+ return temporaryContext;
685
+ }
686
+ },
687
+ {
688
+ key: "fromTermsAndFrames",
689
+ value: function fromTermsAndFrames(terms, frames, context) {
690
+ var tokens1 = null, statements = [], assertions = [], reference = null, substitution = null, temporaryContext = new TemporaryContext(context, tokens1, terms, frames, statements, assertions, reference, substitution);
691
+ return temporaryContext;
692
+ }
693
+ },
694
+ {
695
+ key: "fromContextAndTokens",
696
+ value: function fromContextAndTokens(context, tokens1) {
697
+ var terms = [], frames = [], statements = [], assertions = [], reference = null, substitution = null, temporaryContext = new TemporaryContext(context, tokens1, terms, frames, statements, assertions, reference, substitution);
698
+ return temporaryContext;
699
+ }
700
+ }
701
+ ]);
702
+ return TemporaryContext;
703
+ }();
704
+
705
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L3RlbXBvcmFyeS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmNvbnN0IHsgZmlyc3QsIGV4dHJhY3QgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZW1wb3JhcnlDb250ZXh0IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgdG9rZW5zLCB0ZXJtcywgZnJhbWVzLCBzdGF0ZW1lbnRzLCBhc3NlcnRpb25zLCByZWZlcmVuY2UsIHN1YnN0aXR1dGlvbikge1xuICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gICAgdGhpcy50b2tlbnMgPSB0b2tlbnM7XG4gICAgdGhpcy50ZXJtcyA9IHRlcm1zO1xuICAgIHRoaXMuZnJhbWVzID0gZnJhbWVzO1xuICAgIHRoaXMuc3RhdGVtZW50cyA9IHN0YXRlbWVudHM7XG4gICAgdGhpcy5hc3NlcnRpb25zID0gYXNzZXJ0aW9ucztcbiAgICB0aGlzLnJlZmVyZW5jZSA9IHJlZmVyZW5jZTtcbiAgICB0aGlzLnN1YnN0aXR1dGlvbiA9IHN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIGdldENvbnRleHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dDtcbiAgfVxuXG4gIGdldFRva2VucygpIHtcbiAgICByZXR1cm4gdG9rZW5zO1xuICB9XG5cbiAgZ2V0VGVybXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudGVybXM7XG4gIH1cblxuICBnZXRGcmFtZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWVzO1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnRzO1xuICB9XG5cbiAgZ2V0QXNzZXJ0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5hc3NlcnRpb25zO1xuICB9XG5cbiAgZ2V0UmVmZXJlbmNlcygpIHtcbiAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2U7XG4gIH1cblxuICBnZXRTdWJzdGl0dXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgYWRkVGVybSh0ZXJtKSB7XG4gICAgY29uc3QgdGVybU5vZGUgPSB0ZXJtLmdldE5vZGUoKTtcblxuICAgIGV4dHJhY3QodGhpcy50ZXJtcywgKHRlcm0pID0+IHtcbiAgICAgIGNvbnN0IHRlcm1NYXRjaGVzVGVybU5vZGUgPSB0ZXJtLm1hdGNoVGVybU5vZGUodGVybU5vZGUpO1xuXG4gICAgICBpZiAodGVybU1hdGNoZXNUZXJtTm9kZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMudGVybXMucHVzaCh0ZXJtKTtcbiAgfVxuXG4gIGFkZEZyYW1lKGZyYW1lKSB7XG4gICAgY29uc3QgZnJhbWVOb2RlID0gZnJhbWUuZ2V0Tm9kZSgpO1xuXG4gICAgZXh0cmFjdCh0aGlzLmZyYW1lcywgKGZyYW1lKSA9PiB7XG4gICAgICBjb25zdCBmcmFtZU1hdGNoZXNGcmFtZU5vZGUgPSBmcmFtZS5tYXRjaEZyYW1lTm9kZShmcmFtZU5vZGUpO1xuXG4gICAgICBpZiAoZnJhbWVNYXRjaGVzRnJhbWVOb2RlKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5mcmFtZXMucHVzaChmcmFtZSk7XG4gIH1cblxuICByZW1vdmVGcmFtZShmcmFtZSkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5mcmFtZXMuaW5kZXhPZihmcmFtZSksXG4gICAgICAgICAgc3RhcnQgPSBpbmRleCwgIC8vL1xuICAgICAgICAgIGRlbGV0ZUNvdW50ID0gMTtcblxuICAgIHRoaXMuZnJhbWVzLnNwbGljZShzdGFydCwgZGVsZXRlQ291bnQpO1xuICB9XG5cbiAgYWRkU3RhdGVtZW50KHN0YXRlbWVudCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpO1xuXG4gICAgZXh0cmFjdCh0aGlzLnN0YXRlbWVudHMsIChzdGF0ZW1lbnQpID0+IHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudE1hdGNoZXNGcmFtZU5vZGUgPSBzdGF0ZW1lbnQubWF0Y2hTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gICAgICBpZiAoc3RhdGVtZW50TWF0Y2hlc0ZyYW1lTm9kZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuc3RhdGVtZW50cy5wdXNoKHN0YXRlbWVudCk7XG4gIH1cblxuICBhZGRBc3NlcnRpb24oYXNzZXJ0aW9uKSB7XG4gICAgY29uc3QgYXNzZXJ0aW9uTm9kZSA9IGFzc2VydGlvbi5nZXROb2RlKCk7XG5cbiAgICBleHRyYWN0KHRoaXMuYXNzZXJ0aW9ucywgKGFzc2VydGlvbikgPT4ge1xuICAgICAgY29uc3QgYXNzZXJ0aW9uTWF0Y2hlc0ZyYW1lTm9kZSA9IGFzc2VydGlvbi5tYXRjaEFzc2VydGlvbk5vZGUoYXNzZXJ0aW9uTm9kZSk7XG5cbiAgICAgIGlmIChhc3NlcnRpb25NYXRjaGVzRnJhbWVOb2RlKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5hc3NlcnRpb25zLnB1c2goYXNzZXJ0aW9uKTtcbiAgfVxuXG4gIGFkZFJlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICB0aGlzLnJlZmVyZW5jZSA9IHJlZmVyZW5jZTtcbiAgfVxuXG4gIGFkZFN1YnN0aXR1dGlvbihzdWJzdGl0dXRpb24pIHtcbiAgICB0aGlzLnN1YnN0aXR1dGlvbiA9IHN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIGZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSkge1xuICAgIGNvbnN0IHRlcm0gPSB0aGlzLnRlcm1zLmZpbmQoKHRlcm0pID0+IHtcbiAgICAgIGNvbnN0IHRlcm1NYXRjaGVzVGVybU5vZGUgPSB0ZXJtLm1hdGNoVGVybU5vZGUodGVybU5vZGUpO1xuXG4gICAgICBpZiAodGVybU1hdGNoZXNUZXJtTm9kZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHRlcm07XG4gIH1cblxuICBmaW5kRnJhbWVCeUZyYW1lTm9kZShmcmFtZU5vZGUpIHtcbiAgICBjb25zdCBmcmFtZSA9IHRoaXMuZnJhbWVzLmZpbmQoKGZyYW1lKSA9PiB7XG4gICAgICBjb25zdCBmcmFtZU1hdGNoZXNGcmFtZU5vZGUgPSBmcmFtZS5tYXRjaEZyYW1lTm9kZShmcmFtZU5vZGUpO1xuXG4gICAgICBpZiAoZnJhbWVNYXRjaGVzRnJhbWVOb2RlKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gZnJhbWU7XG4gIH1cblxuICBmaW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnQgPSB0aGlzLnN0YXRlbWVudHMuZmluZCgoc3RhdGVtZW50KSA9PiB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnRNYXRjaGVzU3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5tYXRjaFN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSk7XG5cbiAgICAgIGlmIChzdGF0ZW1lbnRNYXRjaGVzU3RhdGVtZW50Tm9kZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudDtcbiAgfVxuXG4gIGZpbmRSZWZlcmVuY2VCeU1ldGF2YXJpYWJsZU5hbWUobWV0YXZhcmlhYmxlTmFtZSkge1xuICAgIGxldCByZWZlcmVuY2UgPSBudWxsO1xuXG4gICAgY29uc3QgcmVmZXJlbmNlTWF0Y2hlc01ldGF2YXJpYWJsZU5hbWUgPSB0aGlzLnJlZmVyZW5jZS5tYXRjaE1ldGF2YXJpYWJsZU5hbWUobWV0YXZhcmlhYmxlTmFtZSk7XG5cbiAgICBpZiAocmVmZXJlbmNlTWF0Y2hlc01ldGF2YXJpYWJsZU5hbWUpIHtcbiAgICAgIHJlZmVyZW5jZSA9IHRoaXMucmVmZXJlbmNlO1xuICAgIH1cblxuICAgIHJldHVybiByZWZlcmVuY2U7XG4gIH1cblxuICBnZXRGcmFtZSgpIHtcbiAgICBsZXQgZnJhbWUgPSBudWxsO1xuXG4gICAgY29uc3QgZnJhbWVzTGVuZ3RyaCA9IHRoaXMuZnJhbWVzLmxlbmd0aDtcblxuICAgIGlmIChmcmFtZXNMZW5ndHJoID09PSAxKSB7XG4gICAgICBjb25zdCBmaXJzdEZyYW1lID0gZmlyc3QodGhpcy5mcmFtZXMpO1xuXG4gICAgICBmcmFtZSA9IGZpcnN0RnJhbWU7IC8vL1xuICAgIH1cblxuICAgIHJldHVybiBmcmFtZTtcbiAgfVxuXG4gIGdldFZhcmlhYmxlcyhuZXN0ZWQgPSB0cnVlKSB7IHJldHVybiB0aGlzLmNvbnRleHQuZ2V0VmFyaWFibGVzKG5lc3RlZCk7IH1cblxuICBnZXRKdWRnZW1lbnRzKCkgeyByZXR1cm4gdGhpcy5jb250ZXh0LmdldEp1ZGdlbWVudHMoKTsgfVxuXG4gIGdldEVxdWl2YWxlbmNlcygpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5nZXRFcXVpdmFsZW5jZXMoKTsgfVxuXG4gIGdldFN0ZXBzKCkgeyByZXR1cm4gdGhpcy5jb250ZXh0LmdldFN0ZXBzKCk7IH1cblxuICBnZXRMYXN0U3RlcCgpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5nZXRMYXN0U3RlcCgpOyB9XG5cbiAgZ2V0U3RlcHNPclN1YnByb29mcygpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5nZXRTdGVwc09yU3VicHJvb2ZzKCk7IH1cblxuICBnZXRGaWxlUGF0aCgpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5nZXRGaWxlUGF0aCgpOyB9XG5cbiAgZ2V0TGV4ZXIoKSB7IHJldHVybiB0aGlzLmNvbnRleHQuZ2V0TGV4ZXIoKTsgfVxuXG4gIGdldFBhcnNlcigpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5nZXRQYXJzZXIoKTsgfVxuXG4gIGdldEF4aW9tcygpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5nZXRBeGlvbXMoKTsgfVxuXG4gIGdldExlbW1hcygpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5nZXRMZW1tYXMoKTsgfVxuXG4gIGdldFRoZW9yZW1zKCkgeyByZXR1cm4gdGhpcy5jb250ZXh0LmdldFRoZW9yZW1zKCk7IH1cblxuICBnZXRDb25qZWN0dXJlcygpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5nZXRDb25qZWN0dXJlcygpOyB9XG5cbiAgZ2V0Q29tYmluYXRvcnMoKSB7IHJldHVybiB0aGlzLmNvbnRleHQuZ2V0Q29tYmluYXRvcnMoKTsgfVxuXG4gIGdldENvbnN0cnVjdG9ycygpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5nZXRDb25zdHJ1Y3RvcnMoKTsgfVxuXG4gIGdldFR5cGVQcmVmaXgoKSB7IHJldHVybiB0aGlzLmNvbnRleHQuZ2V0VHlwZVByZWZpeCgpOyB9XG5cbiAgYWRkQXhpb20oYXhpb20pIHsgdGhpcy5jb250ZXh0LmFkZEF4aW9tKGF4aW9tKTsgfVxuXG4gIGFkZExlbW1hKGxlbW1hKSB7IHRoaXMuY29udGV4dC5hZGRMZW1tYShsZW1tYSk7IH1cblxuICBhZGRUaGVvcmVtKHRoZW9yZW0pIHsgdGhpcy5jb250ZXh0LmFkZFRoZW9yZW0odGhlb3JlbSk7IH1cblxuICBhZGRFcXVhbGl0eShlcXVhbGl0eSwgY29udGV4dCkgeyByZXR1cm4gdGhpcy5jb250ZXh0LmFkZEVxdWFsaXR5KGVxdWFsaXR5LCBjb250ZXh0KTsgfVxuXG4gIGFkZFZhcmlhYmxlKHZhcmlhYmxlLCBuZXN0ZWQgPSB0cnVlKSB7IHJldHVybiB0aGlzLmNvbnRleHQuYWRkVmFyaWFibGUodmFyaWFibGUsIG5lc3RlZCk7IH1cblxuICBhZGRKdWRnZW1lbnQoanVkZ2VtZW50KSB7IHJldHVybiB0aGlzLmNvbnRleHQuYWRkSnVkZ2VtZW50KGp1ZGdlbWVudCk7IH1cblxuICBhZGRTdGVwT3JTdWJwcm9vZihzdGVwT3JTdWJwcm9vZikgeyB0aGlzLmNvbnRleHQuYWRkU3RlcE9yU3VicHJvb2Yoc3RlcE9yU3VicHJvb2YpOyB9XG5cbiAgZmluZFByb2NlZHVyZUJ5TmFtZShuYW1lKSB7IHJldHVybiB0aGlzLmNvbnRleHQuZmluZFByb2NlZHVyZUJ5TmFtZShuYW1lKTsgfVxuXG4gIGZpbmRMYWJlbEJ5UmVmZXJlbmNlKHJlZmVyZW5jZSwgY29udGV4dCkgeyByZXR1cm4gdGhpcy5jb250ZXh0LmZpbmRMYWJlbEJ5UmVmZXJlbmNlKHJlZmVyZW5jZSwgY29udGV4dCk7IH1cblxuICBmaW5kUnVsZUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSkgeyByZXR1cm4gdGhpcy5jb250ZXh0LmZpbmRSdWxlQnlSZWZlcmVuY2UocmVmZXJlbmNlKTsgfVxuXG4gIGZpbmRBeGlvbUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSkgeyByZXR1cm4gdGhpcy5jb250ZXh0LmZpbmRBeGlvbUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSk7IH1cblxuICBmaW5kTGVtbWFCeVJlZmVyZW5jZShyZWZlcmVuY2UpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5maW5kTGVtbWFCeVJlZmVyZW5jZShyZWZlcmVuY2UpOyB9XG5cbiAgZmluZFRoZW9yZW1CeVJlZmVyZW5jZShyZWZlcmVuY2UpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5maW5kVGhlb3JlbUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSk7IH1cblxuICBmaW5kQ29uamVjdHVyZUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSkgeyByZXR1cm4gdGhpcy5jb250ZXh0LmZpbmRDb25qZWN0dXJlQnlSZWZlcmVuY2UocmVmZXJlbmNlKTsgfVxuXG4gIGZpbmRNZXRhTGVtbWFzQnlSZWZlcmVuY2UocmVmZXJlbmNlKSB7IHJldHVybiB0aGlzLmNvbnRleHQuZmluZE1ldGFMZW1tYXNCeVJlZmVyZW5jZShyZWZlcmVuY2UpOyB9XG5cbiAgZmluZE1ldGF0aGVvcmVtc0J5UmVmZXJlbmNlKHJlZmVyZW5jZSkgeyByZXR1cm4gdGhpcy5jb250ZXh0LmZpbmRNZXRhdGhlb3JlbXNCeVJlZmVyZW5jZShyZWZlcmVuY2UpOyB9XG5cbiAgZmluZE1ldGFMZW1tYU1ldGF0aGVvcmVtQnlSZWZlcmVuY2UocmVmZXJlbmNlKSB7IHJldHVybiB0aGlzLmNvbnRleHQuZmluZE1ldGFMZW1tYU1ldGF0aGVvcmVtQnlSZWZlcmVuY2UocmVmZXJlbmNlKTsgfVxuXG4gIGZpbmRNZXRhTGVtbWFNZXRhdGhlb3JlbXNCeVJlZmVyZW5jZShyZWZlcmVuY2UpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5maW5kTWV0YUxlbW1hTWV0YXRoZW9yZW1zQnlSZWZlcmVuY2UocmVmZXJlbmNlKTsgfVxuXG4gIGZpbmRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllciwgbmVzdGVkID0gdHJ1ZSkgeyByZXR1cm4gdGhpcy5jb250ZXh0LmZpbmRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllciwgbmVzdGVkKTsgfVxuXG4gIGZpbmRKdWRnZW1lbnRCeU1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5maW5kSnVkZ2VtZW50QnlNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlKTsgfVxuXG4gIGZpbmRFcXVpdmFsZW5jZUJ5VGVybSh0ZXJtKSB7IHJldHVybiB0aGlzLmNvbnRleHQuZmluZEVxdWl2YWxlbmNlQnlUZXJtKHRlcm0pOyB9XG5cbiAgZmluZE1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5maW5kTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSk7IH1cblxuICBmaW5kTGFiZWxCeU1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5maW5kTGFiZWxCeU1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUpOyB9XG5cbiAgZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5maW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7IH1cblxuICBmaW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZShtZXRhVHlwZU5hbWUpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5maW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZShtZXRhVHlwZU5hbWUpOyB9XG5cbiAgZmluZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKSB7IHJldHVybiB0aGlzLmNvbnRleHQuZmluZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKTsgfVxuXG4gIGlzUHJvY2VkdXJlUHJlc2VudEJ5TmFtZShuYW1lKSB7IHJldHVybiB0aGlzLmNvbnRleHQuaXNQcm9jZWR1cmVQcmVzZW50QnlOYW1lKG5hbWUpOyB9XG5cbiAgaXNMYWJlbFByZXNlbnRCeVJlZmVyZW5jZShyZWZlcmVuY2UpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5pc0xhYmVsUHJlc2VudEJ5UmVmZXJlbmNlKHJlZmVyZW5jZSk7IH1cblxuICBpc01ldGF2YXJpYWJsZVByZXNlbnRCeVJlZmVyZW5jZShyZWZlcmVuY2UpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5pc01ldGF2YXJpYWJsZVByZXNlbnRCeVJlZmVyZW5jZShyZWZlcmVuY2UpOyB9XG5cbiAgaXNNZXRhTGVtbWFNZXRhdGhlb3JlbVByZXNlbnRCeVJlZmVyZW5jZShyZWZlcmVuY2UpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5pc01ldGFMZW1tYU1ldGF0aGVvcmVtUHJlc2VudEJ5UmVmZXJlbmNlKHJlZmVyZW5jZSk7IH1cblxuICBmaW5kQXhpb21MZW1tYVRoZW9yZW1PckNvbmplY3R1cmVCeVJlZmVyZW5jZShyZWZlcmVuY2UpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5maW5kQXhpb21MZW1tYVRoZW9yZW1PckNvbmplY3R1cmVCeVJlZmVyZW5jZShyZWZlcmVuY2UpOyB9XG5cbiAgaXNNZXRhdmFyaWFibGVQcmVzZW50KG1ldGF2YXJpYWJsZSkgeyByZXR1cm4gdGhpcy5jb250ZXh0LmlzTWV0YXZhcmlhYmxlUHJlc2VudChtZXRhdmFyaWFibGUpOyB9XG5cbiAgaXNUeXBlUHJlc2VudEJ5VHlwZU5hbWUodHlwZU5hbWUsIGluY2x1ZGVSZWxlYXNlID0gdHJ1ZSwgaW5jbHVkZURlcGVuZGVuY2llcyA9IHRydWUpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5pc1R5cGVQcmVzZW50QnlUeXBlTmFtZSh0eXBlTmFtZSwgaW5jbHVkZVJlbGVhc2UsIGluY2x1ZGVEZXBlbmRlbmNpZXMpOyB9XG5cbiAgaXNUeXBlUHJlc2VudEJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSkgeyByZXR1cm4gdGhpcy5jb250ZXh0LmlzVHlwZVByZXNlbnRCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpOyB9XG5cbiAgaXNUeXBlUHJlc2VudEJ5UHJlZml4ZWRUeXBlTmFtZShwcmVmaXhlZFR5cGVOYW1lKSB7IHJldHVybiB0aGlzLmNvbnRleHQuaXNUeXBlUHJlc2VudEJ5UHJlZml4ZWRUeXBlTmFtZShwcmVmaXhlZFR5cGVOYW1lKTsgfVxuXG4gIGlzVHlwZVByZWZpeFByZXNlbnRCeVR5cGVQcmVmaXhOYW1lKHR5cGVQcmVmaXhOYW1lKSB7IHJldHVybiB0aGlzLmNvbnRleHQuaXNUeXBlUHJlZml4UHJlc2VudEJ5VHlwZVByZWZpeE5hbWUodHlwZVByZWZpeE5hbWUpOyB9XG5cbiAgaXNWYXJpYWJsZVByZXNlbnRCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIsIG5lc3RlZCA9IHRydWUpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5maW5kVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIsIG5lc3RlZCk7IH1cblxuICBpc0xhYmVsUHJlc2VudEJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKSB7IHJldHVybiB0aGlzLmNvbnRleHQuaXNMYWJlbFByZXNlbnRCeU1ldGF2YXJpYWJsZU5hbWUobWV0YXZhcmlhYmxlTmFtZSk7IH1cblxuICBpc0xhYmVsUHJlc2VudEJ5TWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSkgeyByZXR1cm4gdGhpcy5jb250ZXh0LmlzTGFiZWxQcmVzZW50QnlNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlKTsgfVxuXG4gIGlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOb2RlKSB7IHJldHVybiB0aGlzLmNvbnRleHQuaXNNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5vZGUpOyB9XG5cbiAgaXNKdWRnZW1lbnRQcmVzZW50QnlNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlKSB7IHJldHVybiB0aGlzLmNvbnRleHQuaXNKdWRnZW1lbnRQcmVzZW50QnlNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlKTsgfVxuXG4gIGlzVGVybUdyb3VuZGVkKHRlcm0pIHsgcmV0dXJuIHRoaXMuY29udGV4dC5pc1Rlcm1Hcm91bmRlZCh0ZXJtKTsgfVxuXG4gIGlzVmFyaWFibGVEZWZpbmVkKHZhcmlhYmxlKSB7IHJldHVybiB0aGlzLmNvbnRleHQuaXNWYXJpYWJsZURlZmluZWQodmFyaWFibGUpOyB9XG5cbiAgaXNNZXRhdmFyaWFibGVEZWZpbmVkKG1ldGF2YXJpYWJsZSkgeyByZXR1cm4gdGhpcy5jb250ZXh0LmlzTWV0YXZhcmlhYmxlRGVmaW5lZChtZXRhdmFyaWFibGUpOyB9XG5cbiAgbWF0Y2hUZXJtQW5kUHJvcGVydHlSZWxhdGlvbih0ZXJtLCBwcm9wZXJ0eVJlbGF0aW9uKSB7IHJldHVybiB0aGlzLmNvbnRleHQubWF0Y2hUZXJtQW5kUHJvcGVydHlSZWxhdGlvbih0ZXJtLCBwcm9wZXJ0eVJlbGF0aW9uKTsgfVxuXG4gIG5vZGVBc1N0cmluZyhub2RlLCB0b2tlbnMgPSBudWxsKSB7XG4gICAgaWYgKHRva2VucyA9PT0gbnVsbCkge1xuICAgICAgdG9rZW5zID0gdGhpcy50b2tlbnM7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RyaW5nID0gdGhpcy5jb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlLCB0b2tlbnMpO1xuXG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxuXG4gIG5vZGVzQXNTdHJpbmcobm9kZSwgdG9rZW5zID0gbnVsbCkge1xuICAgIGlmICh0b2tlbnMgPT09IG51bGwpIHtcbiAgICAgIHRva2VucyA9IHRoaXMudG9rZW5zO1xuICAgIH1cblxuICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuY29udGV4dC5ub2Rlc0FzU3RyaW5nKG5vZGUsIHRva2Vucyk7XG5cbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG5cbiAgbm9kZUFzVG9rZW5zKG5vZGUsIHRva2VucyA9IG51bGwpIHtcbiAgICBpZiAodG9rZW5zID09PSBudWxsKSB7XG4gICAgICB0b2tlbnMgPSB0aGlzLnRva2VucztcbiAgICB9XG5cbiAgICB0b2tlbnMgPSB0aGlzLmNvbnRleHQubm9kZUFzVG9rZW5zKG5vZGUsIHRva2Vucyk7IC8vL1xuXG4gICAgcmV0dXJuIHRva2VucztcbiAgfVxuXG4gIG5vZGVzQXNUb2tlbnMobm9kZSwgdG9rZW5zID0gbnVsbCkge1xuICAgIGlmICh0b2tlbnMgPT09IG51bGwpIHtcbiAgICAgIHRva2VucyA9IHRoaXMudG9rZW5zO1xuICAgIH1cblxuICAgIHRva2VucyA9IHRoaXMuY29udGV4dC5ub2Rlc0FzVG9rZW5zKG5vZGUsIHRva2Vucyk7ICAvLy9cblxuICAgIHJldHVybiB0b2tlbnM7XG4gIH1cblxuICB0b2tlbnNBc1N0cmluZyh0b2tlbnMpIHsgcmV0dXJuIHRoaXMuY29udGV4dC50b2tlbnNBc1N0cmluZyh0b2tlbnMpOyB9XG5cbiAgdHJhY2UobWVzc2FnZSwgbm9kZSA9IG51bGwpIHsgdGhpcy5jb250ZXh0LnRyYWNlKG1lc3NhZ2UsIG5vZGUpOyB9XG5cbiAgZGVidWcobWVzc2FnZSwgbm9kZSA9IG51bGwpIHsgdGhpcy5jb250ZXh0LmRlYnVnKG1lc3NhZ2UsIG5vZGUpOyB9XG5cbiAgaW5mbyhtZXNzYWdlLCBub2RlID0gbnVsbCkgeyB0aGlzLmNvbnRleHQuaW5mbyhtZXNzYWdlLCBub2RlKTsgfVxuXG4gIHdhcm5pbmcobWVzc2FnZSwgbm9kZSA9IG51bGwpIHsgdGhpcy5jb250ZXh0Lndhcm5pbmcobWVzc2FnZSwgbm9kZSk7IH1cblxuICBlcnJvcihtZXNzYWdlLCBub2RlID0gbnVsbCkgeyB0aGlzLmNvbnRleHQuZXJyb3IobWVzc2FnZSwgbm9kZSk7IH1cblxuICBzdGF0aWMgZnJvbU5vdGhpbmcoY29udGV4dCkge1xuICAgIGNvbnN0IHRlcm1zID0gW10sXG4gICAgICAgICAgZnJhbWVzID0gW10sXG4gICAgICAgICAgdG9rZW5zID0gbnVsbCxcbiAgICAgICAgICBzdGF0ZW1lbnRzID0gW10sXG4gICAgICAgICAgYXNzZXJ0aW9ucyA9IFtdLFxuICAgICAgICAgIHJlZmVyZW5jZSA9IG51bGwsXG4gICAgICAgICAgc3Vic3RpdHV0aW9uID0gbnVsbCxcbiAgICAgICAgICB0ZW1wb3JhcnlDb250ZXh0ID0gbmV3IFRlbXBvcmFyeUNvbnRleHQoY29udGV4dCwgdG9rZW5zLCB0ZXJtcywgZnJhbWVzLCBzdGF0ZW1lbnRzLCBhc3NlcnRpb25zLCByZWZlcmVuY2UsIHN1YnN0aXR1dGlvbik7XG5cbiAgICByZXR1cm4gdGVtcG9yYXJ5Q29udGV4dDtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tVGVybXNBbmRGcmFtZXModGVybXMsIGZyYW1lcywgY29udGV4dCkge1xuICAgIGNvbnN0IHRva2VucyA9IG51bGwsXG4gICAgICAgICAgc3RhdGVtZW50cyA9IFtdLFxuICAgICAgICAgIGFzc2VydGlvbnMgPSBbXSxcbiAgICAgICAgICByZWZlcmVuY2UgPSBudWxsLFxuICAgICAgICAgIHN1YnN0aXR1dGlvbiA9IG51bGwsXG4gICAgICAgICAgdGVtcG9yYXJ5Q29udGV4dCA9IG5ldyBUZW1wb3JhcnlDb250ZXh0KGNvbnRleHQsIHRva2VucywgdGVybXMsIGZyYW1lcywgc3RhdGVtZW50cywgYXNzZXJ0aW9ucywgcmVmZXJlbmNlLCBzdWJzdGl0dXRpb24pO1xuXG4gICAgcmV0dXJuIHRlbXBvcmFyeUNvbnRleHQ7XG4gIH1cblxuICBzdGF0aWMgZnJvbUNvbnRleHRBbmRUb2tlbnMoY29udGV4dCwgdG9rZW5zKSB7XG4gICAgY29uc3QgdGVybXMgPSBbXSxcbiAgICAgICAgICBmcmFtZXMgPSBbXSxcbiAgICAgICAgICBzdGF0ZW1lbnRzID0gW10sXG4gICAgICAgICAgYXNzZXJ0aW9ucyA9IFtdLFxuICAgICAgICAgIHJlZmVyZW5jZSA9IG51bGwsXG4gICAgICAgICAgc3Vic3RpdHV0aW9uID0gbnVsbCxcbiAgICAgICAgICB0ZW1wb3JhcnlDb250ZXh0ID0gbmV3IFRlbXBvcmFyeUNvbnRleHQoY29udGV4dCwgdG9rZW5zLCB0ZXJtcywgZnJhbWVzLCBzdGF0ZW1lbnRzLCBhc3NlcnRpb25zLCByZWZlcmVuY2UsIHN1YnN0aXR1dGlvbik7XG5cbiAgICByZXR1cm4gdGVtcG9yYXJ5Q29udGV4dDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIlRlbXBvcmFyeUNvbnRleHQiLCJmaXJzdCIsImFycmF5VXRpbGl0aWVzIiwiZXh0cmFjdCIsImNvbnRleHQiLCJ0b2tlbnMiLCJ0ZXJtcyIsImZyYW1lcyIsInN0YXRlbWVudHMiLCJhc3NlcnRpb25zIiwicmVmZXJlbmNlIiwic3Vic3RpdHV0aW9uIiwiZ2V0Q29udGV4dCIsImdldFRva2VucyIsImdldFRlcm1zIiwiZ2V0RnJhbWVzIiwiZ2V0U3RhdGVtZW50cyIsImdldEFzc2VydGlvbnMiLCJnZXRSZWZlcmVuY2VzIiwiZ2V0U3Vic3RpdHV0aW9uIiwiYWRkVGVybSIsInRlcm0iLCJ0ZXJtTm9kZSIsImdldE5vZGUiLCJ0ZXJtTWF0Y2hlc1Rlcm1Ob2RlIiwibWF0Y2hUZXJtTm9kZSIsInB1c2giLCJhZGRGcmFtZSIsImZyYW1lIiwiZnJhbWVOb2RlIiwiZnJhbWVNYXRjaGVzRnJhbWVOb2RlIiwibWF0Y2hGcmFtZU5vZGUiLCJyZW1vdmVGcmFtZSIsImluZGV4IiwiaW5kZXhPZiIsInN0YXJ0IiwiZGVsZXRlQ291bnQiLCJzcGxpY2UiLCJhZGRTdGF0ZW1lbnQiLCJzdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50TWF0Y2hlc0ZyYW1lTm9kZSIsIm1hdGNoU3RhdGVtZW50Tm9kZSIsImFkZEFzc2VydGlvbiIsImFzc2VydGlvbiIsImFzc2VydGlvbk5vZGUiLCJhc3NlcnRpb25NYXRjaGVzRnJhbWVOb2RlIiwibWF0Y2hBc3NlcnRpb25Ob2RlIiwiYWRkUmVmZXJlbmNlIiwiYWRkU3Vic3RpdHV0aW9uIiwiZmluZFRlcm1CeVRlcm1Ob2RlIiwiZmluZCIsImZpbmRGcmFtZUJ5RnJhbWVOb2RlIiwiZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudE1hdGNoZXNTdGF0ZW1lbnROb2RlIiwiZmluZFJlZmVyZW5jZUJ5TWV0YXZhcmlhYmxlTmFtZSIsIm1ldGF2YXJpYWJsZU5hbWUiLCJyZWZlcmVuY2VNYXRjaGVzTWV0YXZhcmlhYmxlTmFtZSIsIm1hdGNoTWV0YXZhcmlhYmxlTmFtZSIsImdldEZyYW1lIiwiZnJhbWVzTGVuZ3RyaCIsImxlbmd0aCIsImZpcnN0RnJhbWUiLCJnZXRWYXJpYWJsZXMiLCJuZXN0ZWQiLCJnZXRKdWRnZW1lbnRzIiwiZ2V0RXF1aXZhbGVuY2VzIiwiZ2V0U3RlcHMiLCJnZXRMYXN0U3RlcCIsImdldFN0ZXBzT3JTdWJwcm9vZnMiLCJnZXRGaWxlUGF0aCIsImdldExleGVyIiwiZ2V0UGFyc2VyIiwiZ2V0QXhpb21zIiwiZ2V0TGVtbWFzIiwiZ2V0VGhlb3JlbXMiLCJnZXRDb25qZWN0dXJlcyIsImdldENvbWJpbmF0b3JzIiwiZ2V0Q29uc3RydWN0b3JzIiwiZ2V0VHlwZVByZWZpeCIsImFkZEF4aW9tIiwiYXhpb20iLCJhZGRMZW1tYSIsImxlbW1hIiwiYWRkVGhlb3JlbSIsInRoZW9yZW0iLCJhZGRFcXVhbGl0eSIsImVxdWFsaXR5IiwiYWRkVmFyaWFibGUiLCJ2YXJpYWJsZSIsImFkZEp1ZGdlbWVudCIsImp1ZGdlbWVudCIsImFkZFN0ZXBPclN1YnByb29mIiwic3RlcE9yU3VicHJvb2YiLCJmaW5kUHJvY2VkdXJlQnlOYW1lIiwibmFtZSIsImZpbmRMYWJlbEJ5UmVmZXJlbmNlIiwiZmluZFJ1bGVCeVJlZmVyZW5jZSIsImZpbmRBeGlvbUJ5UmVmZXJlbmNlIiwiZmluZExlbW1hQnlSZWZlcmVuY2UiLCJmaW5kVGhlb3JlbUJ5UmVmZXJlbmNlIiwiZmluZENvbmplY3R1cmVCeVJlZmVyZW5jZSIsImZpbmRNZXRhTGVtbWFzQnlSZWZlcmVuY2UiLCJmaW5kTWV0YXRoZW9yZW1zQnlSZWZlcmVuY2UiLCJmaW5kTWV0YUxlbW1hTWV0YXRoZW9yZW1CeVJlZmVyZW5jZSIsImZpbmRNZXRhTGVtbWFNZXRhdGhlb3JlbXNCeVJlZmVyZW5jZSIsImZpbmRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyIiwidmFyaWFibGVJZGVudGlmaWVyIiwiZmluZEp1ZGdlbWVudEJ5TWV0YXZhcmlhYmxlIiwibWV0YXZhcmlhYmxlIiwiZmluZEVxdWl2YWxlbmNlQnlUZXJtIiwiZmluZE1ldGF2YXJpYWJsZSIsImZpbmRMYWJlbEJ5TWV0YXZhcmlhYmxlIiwiZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZSIsIm5vbWluYWxUeXBlTmFtZSIsImZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lIiwibWV0YVR5cGVOYW1lIiwiZmluZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTmFtZSIsImlzUHJvY2VkdXJlUHJlc2VudEJ5TmFtZSIsImlzTGFiZWxQcmVzZW50QnlSZWZlcmVuY2UiLCJpc01ldGF2YXJpYWJsZVByZXNlbnRCeVJlZmVyZW5jZSIsImlzTWV0YUxlbW1hTWV0YXRoZW9yZW1QcmVzZW50QnlSZWZlcmVuY2UiLCJmaW5kQXhpb21MZW1tYVRoZW9yZW1PckNvbmplY3R1cmVCeVJlZmVyZW5jZSIsImlzTWV0YXZhcmlhYmxlUHJlc2VudCIsImlzVHlwZVByZXNlbnRCeVR5cGVOYW1lIiwidHlwZU5hbWUiLCJpbmNsdWRlUmVsZWFzZSIsImluY2x1ZGVEZXBlbmRlbmNpZXMiLCJpc1R5cGVQcmVzZW50QnlOb21pbmFsVHlwZU5hbWUiLCJpc1R5cGVQcmVzZW50QnlQcmVmaXhlZFR5cGVOYW1lIiwicHJlZml4ZWRUeXBlTmFtZSIsImlzVHlwZVByZWZpeFByZXNlbnRCeVR5cGVQcmVmaXhOYW1lIiwidHlwZVByZWZpeE5hbWUiLCJpc1ZhcmlhYmxlUHJlc2VudEJ5VmFyaWFibGVJZGVudGlmaWVyIiwiaXNMYWJlbFByZXNlbnRCeU1ldGF2YXJpYWJsZU5hbWUiLCJpc0xhYmVsUHJlc2VudEJ5TWV0YXZhcmlhYmxlIiwiaXNNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOYW1lIiwibWV0YXZhcmlhYmxlTm9kZSIsImlzSnVkZ2VtZW50UHJlc2VudEJ5TWV0YXZhcmlhYmxlIiwiaXNUZXJtR3JvdW5kZWQiLCJpc1ZhcmlhYmxlRGVmaW5lZCIsImlzTWV0YXZhcmlhYmxlRGVmaW5lZCIsIm1hdGNoVGVybUFuZFByb3BlcnR5UmVsYXRpb24iLCJwcm9wZXJ0eVJlbGF0aW9uIiwibm9kZUFzU3RyaW5nIiwibm9kZSIsInN0cmluZyIsIm5vZGVzQXNTdHJpbmciLCJub2RlQXNUb2tlbnMiLCJub2Rlc0FzVG9rZW5zIiwidG9rZW5zQXNTdHJpbmciLCJ0cmFjZSIsIm1lc3NhZ2UiLCJkZWJ1ZyIsImluZm8iLCJ3YXJuaW5nIiwiZXJyb3IiLCJmcm9tTm90aGluZyIsInRlbXBvcmFyeUNvbnRleHQiLCJmcm9tVGVybXNBbmRGcmFtZXMiLCJmcm9tQ29udGV4dEFuZFRva2VucyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFNcUJBOzs7eUJBSlU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRS9CLElBQVFD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