@tricoteuses/assemblee 1.0.6 → 1.1.0

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 (135) hide show
  1. package/lib/api.js +3 -9
  2. package/lib/api.mjs +4 -5
  3. package/lib/bugs/acteur-00010/plugin.test.js +3 -50
  4. package/lib/bugs/acteur-00010/plugin.test.mjs +1 -1
  5. package/lib/bugs/acteur-00010.js +2 -57
  6. package/lib/bugs/acteur-00010.mjs +1 -6
  7. package/lib/bugs/agenda-00002/plugin.test.js +3 -53
  8. package/lib/bugs/agenda-00002/plugin.test.mjs +1 -3
  9. package/lib/bugs/agenda-00002.js +3 -148
  10. package/lib/bugs/agenda-00002.mjs +1 -28
  11. package/lib/bugs/agenda-00008/plugin.test.js +3 -52
  12. package/lib/bugs/agenda-00008/plugin.test.mjs +1 -1
  13. package/lib/bugs/agenda-00008.js +2 -61
  14. package/lib/bugs/agenda-00008.mjs +1 -5
  15. package/lib/bugs/agenda-00011/plugin.test.js +5 -99
  16. package/lib/bugs/agenda-00011/plugin.test.mjs +3 -3
  17. package/lib/bugs/agenda-00011.js +4 -105
  18. package/lib/bugs/agenda-00011.mjs +3 -29
  19. package/lib/bugs.js +3 -164
  20. package/lib/bugs.mjs +1 -26
  21. package/lib/cleaners/actes_legislatifs.js +11 -115
  22. package/lib/cleaners/actes_legislatifs.mjs +7 -82
  23. package/lib/cleaners/acteurs.js +12 -92
  24. package/lib/cleaners/acteurs.mjs +7 -38
  25. package/lib/cleaners/amendements.js +10 -103
  26. package/lib/cleaners/amendements.mjs +4 -58
  27. package/lib/cleaners/documents.js +5 -67
  28. package/lib/cleaners/documents.mjs +1 -37
  29. package/lib/cleaners/dossiers_legislatifs.js +5 -61
  30. package/lib/cleaners/dossiers_legislatifs.mjs +1 -29
  31. package/lib/cleaners/index.js +1 -9
  32. package/lib/cleaners/index.mjs +1 -1
  33. package/lib/cleaners/organes.js +1 -33
  34. package/lib/cleaners/organes.mjs +1 -17
  35. package/lib/cleaners/reunions.js +4 -119
  36. package/lib/cleaners/reunions.mjs +1 -64
  37. package/lib/cleaners/scrutins.js +10 -102
  38. package/lib/cleaners/scrutins.mjs +1 -48
  39. package/lib/cleaners/xml.js +8 -42
  40. package/lib/cleaners/xml.mjs +6 -8
  41. package/lib/datasets.js +14 -113
  42. package/lib/datasets.mjs +6 -46
  43. package/lib/dates.js +7 -37
  44. package/lib/dates.mjs +9 -14
  45. package/lib/dossiers_legislatifs.js +6 -68
  46. package/lib/dossiers_legislatifs.mjs +5 -36
  47. package/lib/file_systems.js +56 -139
  48. package/lib/file_systems.mjs +1 -9
  49. package/lib/git.js +4 -53
  50. package/lib/git.mjs +1 -12
  51. package/lib/index.js +1 -15
  52. package/lib/index.mjs +1 -1
  53. package/lib/inserters.js +23 -146
  54. package/lib/inserters.mjs +6 -87
  55. package/lib/loaders.js +44 -316
  56. package/lib/loaders.mjs +12 -135
  57. package/lib/organes.js +1 -7
  58. package/lib/organes.mjs +1 -4
  59. package/lib/parsers/documents.js +22 -151
  60. package/lib/parsers/documents.mjs +19 -81
  61. package/lib/parsers/index.js +1 -4
  62. package/lib/parsers/index.mjs +1 -1
  63. package/lib/parsers/recherche_amendements.js +302 -527
  64. package/lib/parsers/recherche_amendements.mjs +8 -31
  65. package/lib/raw_types/acteurs_et_organes.d.ts +1 -30
  66. package/lib/raw_types/acteurs_et_organes.js +5 -124
  67. package/lib/raw_types/acteurs_et_organes.mjs +5 -105
  68. package/lib/raw_types/agendas.js +6 -89
  69. package/lib/raw_types/agendas.mjs +9 -65
  70. package/lib/raw_types/amendements.d.ts +2 -0
  71. package/lib/raw_types/amendements.js +10 -90
  72. package/lib/raw_types/amendements.mjs +11 -69
  73. package/lib/raw_types/dossiers_legislatifs.d.ts +16 -115
  74. package/lib/raw_types/dossiers_legislatifs.js +26 -435
  75. package/lib/raw_types/dossiers_legislatifs.mjs +26 -412
  76. package/lib/raw_types/scrutins.js +6 -81
  77. package/lib/raw_types/scrutins.mjs +9 -57
  78. package/lib/scripts/bugs_helper.js +2 -181
  79. package/lib/scripts/bugs_helper.mjs +2 -39
  80. package/lib/scripts/clean_data.js +27 -143
  81. package/lib/scripts/clean_data.mjs +15 -34
  82. package/lib/scripts/clean_reorganized_data.js +76 -240
  83. package/lib/scripts/clean_reorganized_data.mjs +36 -99
  84. package/lib/scripts/diff_amendements.js +19 -79
  85. package/lib/scripts/diff_amendements.mjs +17 -35
  86. package/lib/scripts/document_dossiers_legislatifs.js +17 -142
  87. package/lib/scripts/document_dossiers_legislatifs.mjs +6 -90
  88. package/lib/scripts/get_today_reunions.js +4 -22
  89. package/lib/scripts/get_today_reunions.mjs +1 -7
  90. package/lib/scripts/merge_scrutins.js +3 -47
  91. package/lib/scripts/merge_scrutins.mjs +1 -9
  92. package/lib/scripts/parse_textes_lois.js +15 -44
  93. package/lib/scripts/parse_textes_lois.mjs +18 -19
  94. package/lib/scripts/raw_types_from_amendements.js +3 -95
  95. package/lib/scripts/raw_types_from_amendements.mjs +1 -16
  96. package/lib/scripts/reorganize_data.js +74 -294
  97. package/lib/scripts/reorganize_data.mjs +22 -133
  98. package/lib/scripts/retrieve_deputes_photos.js +6 -119
  99. package/lib/scripts/retrieve_deputes_photos.mjs +7 -33
  100. package/lib/scripts/retrieve_documents.js +4 -192
  101. package/lib/scripts/retrieve_documents.mjs +2 -50
  102. package/lib/scripts/retrieve_open_data.js +44 -116
  103. package/lib/scripts/retrieve_open_data.mjs +14 -19
  104. package/lib/scripts/retrieve_pending_amendments.js +4 -98
  105. package/lib/scripts/retrieve_pending_amendments.mjs +1 -14
  106. package/lib/scripts/retrieve_senateurs_photos.js +18 -114
  107. package/lib/scripts/retrieve_senateurs_photos.mjs +20 -48
  108. package/lib/scripts/retrieve_textes_lois.js +3 -122
  109. package/lib/scripts/retrieve_textes_lois.mjs +3 -21
  110. package/lib/scripts/test_load.js +2 -10
  111. package/lib/scripts/test_load.mjs +2 -1
  112. package/lib/scripts/test_load_big_files.js +2 -10
  113. package/lib/scripts/test_load_big_files.mjs +2 -1
  114. package/lib/scripts/validate_json.js +4 -119
  115. package/lib/scripts/validate_json.mjs +2 -36
  116. package/lib/shared_types/codes_actes.js +1 -24
  117. package/lib/shared_types/codes_actes.mjs +3 -10
  118. package/lib/strings.js +1 -5
  119. package/lib/strings.mjs +1 -1
  120. package/lib/types/acteurs_et_organes.js +9 -84
  121. package/lib/types/acteurs_et_organes.mjs +10 -63
  122. package/lib/types/agendas.js +8 -90
  123. package/lib/types/agendas.mjs +11 -66
  124. package/lib/types/amendements.d.ts +2 -0
  125. package/lib/types/amendements.js +12 -92
  126. package/lib/types/amendements.mjs +15 -70
  127. package/lib/types/dossiers_legislatifs.js +8 -96
  128. package/lib/types/dossiers_legislatifs.mjs +10 -72
  129. package/lib/types/legislatures.js +1 -3
  130. package/lib/types/legislatures.mjs +1 -2
  131. package/lib/types/scrutins.js +8 -82
  132. package/lib/types/scrutins.mjs +11 -58
  133. package/lib/urls.js +3 -27
  134. package/lib/urls.mjs +3 -21
  135. package/package.json +1 -1
@@ -1,118 +1,62 @@
1
1
  "use strict";
2
2
 
3
3
  function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
-
5
4
  require("core-js/modules/es.object.define-property.js");
6
-
7
5
  require("core-js/modules/es.object.to-string.js");
8
-
9
6
  require("core-js/modules/es.function.name.js");
10
-
11
7
  require("core-js/modules/es.array.from.js");
12
-
13
8
  require("core-js/modules/es.string.iterator.js");
14
-
15
9
  require("core-js/modules/es.symbol.js");
16
-
17
10
  require("core-js/modules/es.symbol.description.js");
18
-
19
11
  require("core-js/modules/es.symbol.iterator.js");
20
-
21
12
  require("core-js/modules/es.array.iterator.js");
22
-
23
13
  require("core-js/modules/web.dom-collections.iterator.js");
24
-
25
14
  require("core-js/modules/es.array.is-array.js");
26
-
27
15
  require("core-js/modules/es.promise.js");
28
-
29
16
  require("core-js/modules/es.symbol.async-iterator.js");
30
-
31
17
  require("core-js/modules/es.symbol.to-string-tag.js");
32
-
33
18
  require("core-js/modules/es.json.to-string-tag.js");
34
-
35
19
  require("core-js/modules/es.math.to-string-tag.js");
36
-
37
20
  require("core-js/modules/es.object.create.js");
38
-
39
21
  require("core-js/modules/es.object.get-prototype-of.js");
40
-
41
22
  require("core-js/modules/es.array.for-each.js");
42
-
43
23
  require("core-js/modules/web.dom-collections.for-each.js");
44
-
45
24
  require("core-js/modules/es.object.set-prototype-of.js");
46
-
47
25
  require("core-js/modules/es.array.reverse.js");
48
-
49
26
  require("core-js/modules/es.weak-map.js");
50
-
51
27
  require("core-js/modules/es.object.get-own-property-descriptor.js");
52
-
53
28
  require("core-js/modules/es.array.includes.js");
54
-
55
29
  require("core-js/modules/es.string.includes.js");
56
-
57
30
  require("core-js/modules/es.array.join.js");
58
-
59
31
  require("core-js/modules/es.array.concat.js");
60
-
61
32
  require("core-js/modules/es.array.slice.js");
62
-
63
33
  require("core-js/modules/es.regexp.exec.js");
64
-
65
34
  require("core-js/modules/es.string.replace.js");
66
-
67
35
  require("core-js/modules/es.string.ends-with.js");
68
-
69
36
  var _ajv = _interopRequireDefault(require("ajv"));
70
-
71
37
  var _commandLineArgs = _interopRequireDefault(require("command-line-args"));
72
-
73
38
  var _commandLineUsage = _interopRequireDefault(require("command-line-usage"));
74
-
75
39
  var _file_systems = require("../file_systems");
76
-
77
40
  var git = _interopRequireWildcard(require("../git"));
78
-
79
41
  var _temp = _interopRequireDefault(require("temp"));
80
-
81
42
  var _fsExtra = _interopRequireDefault(require("fs-extra"));
82
-
83
43
  var _path = _interopRequireDefault(require("path"));
84
-
85
44
  var _datasets = require("../../src/datasets");
86
-
87
45
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
88
-
89
46
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
90
-
91
47
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
92
-
93
- function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return generator._invoke = function (innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; }(innerFn, self, context), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; this._invoke = function (method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); }; } function maybeInvokeDelegate(delegate, context) { var method = delegate.iterator[context.method]; if (undefined === method) { if (context.delegate = null, "throw" === context.method) { if (delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method)) return ContinueSentinel; context.method = "throw", context.arg = new TypeError("The iterator does not provide a 'throw' method"); } return ContinueSentinel; } var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, "constructor", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (object) { var keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
94
-
48
+ function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var method = delegate.iterator[context.method]; if (undefined === method) { if (context.delegate = null, "throw" === context.method) { if (delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method)) return ContinueSentinel; context.method = "throw", context.arg = new TypeError("The iterator does not provide a 'throw' method"); } return ContinueSentinel; } var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
95
49
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
96
-
97
50
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
98
-
99
51
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
100
-
101
52
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
102
-
103
53
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
104
-
105
54
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
106
-
107
55
  function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
108
-
109
56
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
110
-
111
57
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
112
-
113
58
  // Automatically track and cleanup files at exit
114
59
  _temp["default"].track();
115
-
116
60
  function parseArgs(argv) {
117
61
  var optionsDefinitions = [{
118
62
  description: "pathname to the directory containing the dataset",
@@ -154,45 +98,35 @@ function parseArgs(argv) {
154
98
  var options = (0, _commandLineArgs["default"])(optionsDefinitions, {
155
99
  argv: argv
156
100
  });
157
-
158
101
  if (options.dataset) {
159
102
  if (!(0, _datasets.validDataset)(options.dataset)) {
160
103
  console.error("--dataset ".concat(options.dataset));
161
104
  options.help = true;
162
105
  }
163
106
  }
164
-
165
107
  if (options.schema) {
166
108
  if (!(0, _datasets.getSchemas)().includes(options.schema)) {
167
109
  console.error("--schema ".concat(options.schema));
168
110
  options.help = true;
169
111
  }
170
112
  }
171
-
172
113
  if ("help" in options) {
173
114
  var usage = (0, _commandLineUsage["default"])(sections);
174
115
  console.warn(usage);
175
116
  return null;
176
117
  }
177
-
178
118
  return options;
179
119
  }
180
-
181
120
  var Validate = /*#__PURE__*/function () {
182
121
  function Validate(options) {
183
122
  _classCallCheck(this, Validate);
184
-
185
123
  _defineProperty(this, "options", void 0);
186
-
187
124
  _defineProperty(this, "version2schema", void 0);
188
-
189
125
  _defineProperty(this, "tmpDir", void 0);
190
-
191
126
  this.options = options;
192
127
  this.version2schema = {};
193
128
  this.tmpDir = _temp["default"].mkdirSync("validation");
194
129
  }
195
-
196
130
  _createClass(Validate, [{
197
131
  key: "getSchemaDir",
198
132
  value: function getSchemaDir(tag) {
@@ -200,21 +134,15 @@ var Validate = /*#__PURE__*/function () {
200
134
  if (this.options.verbose) console.log("--dev: use src/schemas");
201
135
  return "src/schemas";
202
136
  }
203
-
204
137
  var repositoryDir = _path["default"].join(this.tmpDir, "tricoteuses-assemblee");
205
-
206
138
  var tagDir = _path["default"].join(this.tmpDir, tag);
207
-
208
139
  if (!_fsExtra["default"].existsSync(tagDir)) {
209
140
  if (!_fsExtra["default"].existsSync(repositoryDir)) {
210
141
  git.run(this.tmpDir, "clone --quiet ".concat(this.options.repository, " ").concat(repositoryDir));
211
142
  }
212
-
213
143
  git.run(repositoryDir, "checkout tags/".concat(tag, " -- src/schemas > /dev/null 2>&1"));
214
-
215
144
  _fsExtra["default"].renameSync(_path["default"].join(repositoryDir, "src/schemas"), tagDir);
216
145
  }
217
-
218
146
  return tagDir;
219
147
  }
220
148
  }, {
@@ -224,10 +152,8 @@ var Validate = /*#__PURE__*/function () {
224
152
  var ajv = new _ajv["default"]();
225
153
  var dir = this.getSchemaDir("schema-".concat(version));
226
154
  var references = [];
227
-
228
155
  var _iterator = _createForOfIteratorHelper((0, _file_systems.getFiles)(["".concat(dir, "/").concat(this.options.schema, "/*.json")])),
229
- _step;
230
-
156
+ _step;
231
157
  try {
232
158
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
233
159
  var reference = _step.value;
@@ -238,10 +164,8 @@ var Validate = /*#__PURE__*/function () {
238
164
  } finally {
239
165
  _iterator.f();
240
166
  }
241
-
242
167
  var _iterator2 = _createForOfIteratorHelper((0, _file_systems.getFiles)(references)),
243
- _step2;
244
-
168
+ _step2;
245
169
  try {
246
170
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
247
171
  var file = _step2.value;
@@ -253,14 +177,12 @@ var Validate = /*#__PURE__*/function () {
253
177
  } finally {
254
178
  _iterator2.f();
255
179
  }
256
-
257
180
  var schema = this.options.schema;
258
181
  var Schema = schema.charAt(0).toUpperCase() + schema.slice(1);
259
182
  var s = "".concat(dir, "/").concat(schema, "/").concat(Schema, ".json");
260
183
  if (this.options.verbose) console.log("schema ".concat(s));
261
184
  this.version2schema[version] = ajv.compile((0, _file_systems.load)(s));
262
185
  }
263
-
264
186
  return this.version2schema[version];
265
187
  }
266
188
  }, {
@@ -288,7 +210,6 @@ var Validate = /*#__PURE__*/function () {
288
210
  var validator = this.getValidator(tag);
289
211
  var valid = validator(content);
290
212
  var schemaURL = this.getSchemaURL(tag);
291
-
292
213
  if (!valid) {
293
214
  console.error("".concat(schemaURL, " finds ").concat(filename, " is invalid"));
294
215
  console.error(validator.errors);
@@ -303,14 +224,12 @@ var Validate = /*#__PURE__*/function () {
303
224
  value: function () {
304
225
  var _process = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
305
226
  var status, _iterator3, _step3, file, content;
306
-
307
227
  return _regeneratorRuntime().wrap(function _callee$(_context) {
308
228
  while (1) {
309
229
  switch (_context.prev = _context.next) {
310
230
  case 0:
311
231
  status = 0;
312
232
  _iterator3 = _createForOfIteratorHelper((0, _file_systems.getFiles)([this.options.data]));
313
-
314
233
  try {
315
234
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
316
235
  file = _step3.value;
@@ -322,9 +241,7 @@ var Validate = /*#__PURE__*/function () {
322
241
  } finally {
323
242
  _iterator3.f();
324
243
  }
325
-
326
244
  return _context.abrupt("return", status);
327
-
328
245
  case 4:
329
246
  case "end":
330
247
  return _context.stop();
@@ -332,79 +249,60 @@ var Validate = /*#__PURE__*/function () {
332
249
  }
333
250
  }, _callee, this);
334
251
  }));
335
-
336
252
  function process() {
337
253
  return _process.apply(this, arguments);
338
254
  }
339
-
340
255
  return process;
341
256
  }()
342
257
  }]);
343
-
344
258
  return Validate;
345
259
  }();
346
-
347
260
  function main(_x) {
348
261
  return _main.apply(this, arguments);
349
262
  }
350
263
  /* istanbul ignore if */
351
-
352
-
353
264
  function _main() {
354
265
  _main = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(argv) {
355
266
  var options, directorySchema, _iterator4, _step4, d, validate, status;
356
-
357
267
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
358
268
  while (1) {
359
269
  switch (_context2.prev = _context2.next) {
360
270
  case 0:
361
271
  options = parseArgs(argv);
362
-
363
272
  if (!(options === null)) {
364
273
  _context2.next = 3;
365
274
  break;
366
275
  }
367
-
368
276
  return _context2.abrupt("return", 1);
369
-
370
277
  case 3:
371
278
  directorySchema = [];
372
-
373
279
  if (!options.schema) {
374
280
  _context2.next = 8;
375
281
  break;
376
282
  }
377
-
378
283
  directorySchema = [[options.data, options.schema]];
379
284
  _context2.next = 14;
380
285
  break;
381
-
382
286
  case 8:
383
287
  if (!options.dataset) {
384
288
  _context2.next = 12;
385
289
  break;
386
290
  }
387
-
388
291
  directorySchema = (0, _datasets.datasetDirectorySchema)(options.dataset);
389
292
  _context2.next = 14;
390
293
  break;
391
-
392
294
  case 12:
393
295
  console.error("either --schema or --dataset is required");
394
296
  return _context2.abrupt("return", 1);
395
-
396
297
  case 14:
397
298
  _iterator4 = _createForOfIteratorHelper(directorySchema);
398
299
  _context2.prev = 15;
399
-
400
300
  _iterator4.s();
401
-
402
301
  case 17:
403
302
  if ((_step4 = _iterator4.n()).done) {
404
303
  _context2.next = 30;
405
304
  break;
406
305
  }
407
-
408
306
  d = _step4.value;
409
307
  options.schema = d[1];
410
308
  options.data = d[0];
@@ -412,41 +310,29 @@ function _main() {
412
310
  validate = new Validate(options);
413
311
  _context2.next = 25;
414
312
  return validate.process();
415
-
416
313
  case 25:
417
314
  status = _context2.sent;
418
-
419
315
  if (!(status != 0)) {
420
316
  _context2.next = 28;
421
317
  break;
422
318
  }
423
-
424
319
  return _context2.abrupt("return", status);
425
-
426
320
  case 28:
427
321
  _context2.next = 17;
428
322
  break;
429
-
430
323
  case 30:
431
324
  _context2.next = 35;
432
325
  break;
433
-
434
326
  case 32:
435
327
  _context2.prev = 32;
436
328
  _context2.t0 = _context2["catch"](15);
437
-
438
329
  _iterator4.e(_context2.t0);
439
-
440
330
  case 35:
441
331
  _context2.prev = 35;
442
-
443
332
  _iterator4.f();
444
-
445
333
  return _context2.finish(35);
446
-
447
334
  case 38:
448
335
  return _context2.abrupt("return", 0);
449
-
450
336
  case 39:
451
337
  case "end":
452
338
  return _context2.stop();
@@ -456,11 +342,10 @@ function _main() {
456
342
  }));
457
343
  return _main.apply(this, arguments);
458
344
  }
459
-
460
345
  if (process.argv[1].endsWith("validate_json.ts")) main(process.argv).then(function (status) {
461
346
  process.exit(status);
462
347
  })["catch"](function (error) {
463
348
  console.error(error);
464
349
  process.exit(1);
465
350
  });
466
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ0ZW1wIiwidHJhY2siLCJwYXJzZUFyZ3MiLCJhcmd2Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiZGVzY3JpcHRpb24iLCJkZWZhdWx0T3B0aW9uIiwibmFtZSIsInR5cGUiLCJTdHJpbmciLCJkZWZhdWx0VmFsdWUiLCJnZXREYXRhc2V0cyIsImdldFNjaGVtYXMiLCJCb29sZWFuIiwic2VjdGlvbnMiLCJoZWFkZXIiLCJjb250ZW50Iiwib3B0aW9uTGlzdCIsIm9wdGlvbnMiLCJjb21tYW5kTGluZUFyZ3MiLCJkYXRhc2V0IiwidmFsaWREYXRhc2V0IiwiY29uc29sZSIsImVycm9yIiwiaGVscCIsInNjaGVtYSIsImluY2x1ZGVzIiwidXNhZ2UiLCJjb21tYW5kTGluZVVzYWdlIiwid2FybiIsIlZhbGlkYXRlIiwidmVyc2lvbjJzY2hlbWEiLCJ0bXBEaXIiLCJta2RpclN5bmMiLCJ0YWciLCJkZXYiLCJ2ZXJib3NlIiwibG9nIiwicmVwb3NpdG9yeURpciIsInBhdGgiLCJqb2luIiwidGFnRGlyIiwiZnMiLCJleGlzdHNTeW5jIiwiZ2l0IiwicnVuIiwicmVwb3NpdG9yeSIsInJlbmFtZVN5bmMiLCJ2ZXJzaW9uIiwiYWp2IiwiQWp2IiwiZGlyIiwiZ2V0U2NoZW1hRGlyIiwicmVmZXJlbmNlcyIsImdldEZpbGVzIiwicmVmZXJlbmNlIiwicHVzaCIsImZpbGUiLCJhZGRTY2hlbWEiLCJsb2FkIiwiU2NoZW1hIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsInMiLCJjb21waWxlIiwic2NoZW1hVmVyc2lvbiIsInVuZGVmaW5lZCIsInJlcGxhY2UiLCJmaWxlbmFtZSIsImdldFZlcnNpb24iLCJ2YWxpZGF0b3IiLCJnZXRWYWxpZGF0b3IiLCJ2YWxpZCIsInNjaGVtYVVSTCIsImdldFNjaGVtYVVSTCIsImVycm9ycyIsInN0YXR1cyIsImRhdGEiLCJ2YWxpZGF0ZSIsIm1haW4iLCJkaXJlY3RvcnlTY2hlbWEiLCJkYXRhc2V0RGlyZWN0b3J5U2NoZW1hIiwiZCIsInByb2Nlc3MiLCJlbmRzV2l0aCIsInRoZW4iLCJleGl0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvdmFsaWRhdGVfanNvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQWp2IGZyb20gXCJhanZcIlxuaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGNvbW1hbmRMaW5lVXNhZ2UgZnJvbSBcImNvbW1hbmQtbGluZS11c2FnZVwiXG5pbXBvcnQgeyBsb2FkLCBnZXRGaWxlcyB9IGZyb20gXCIuLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0ICogYXMgZ2l0IGZyb20gXCIuLi9naXRcIlxuaW1wb3J0IHRlbXAgZnJvbSBcInRlbXBcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQge1xuICB2YWxpZERhdGFzZXQsXG4gIGdldERhdGFzZXRzLFxuICBnZXRTY2hlbWFzLFxuICBkYXRhc2V0RGlyZWN0b3J5U2NoZW1hLFxufSBmcm9tIFwiLi4vLi4vc3JjL2RhdGFzZXRzXCJcblxuLy8gQXV0b21hdGljYWxseSB0cmFjayBhbmQgY2xlYW51cCBmaWxlcyBhdCBleGl0XG50ZW1wLnRyYWNrKClcblxuZnVuY3Rpb24gcGFyc2VBcmdzKGFyZ3Y6IHN0cmluZ1tdKTogYW55IHtcbiAgY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcInBhdGhuYW1lIHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZGF0YXNldFwiLFxuICAgICAgZGVmYXVsdE9wdGlvbjogdHJ1ZSxcbiAgICAgIG5hbWU6IFwiZGF0YVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IFwiVVJMIG9yIHBhdGggdG8gdGhlIHRyaWNvdGV1c2VzLWFzc2VtYmxlZSBnaXQgcmVwb3NpdG9yeVwiLFxuICAgICAgZGVmYXVsdFZhbHVlOlxuICAgICAgICBcImh0dHBzOi8vZ2l0LmVuLXJvb3Qub3JnL3RyaWNvdGV1c2VzL3RyaWNvdGV1c2VzLWFzc2VtYmxlZS5naXRcIixcbiAgICAgIG5hbWU6IFwicmVwb3NpdG9yeVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IGBkYXRhc2V0IChwb3NzaWJsZSB2YWx1ZXMgbXVzdCBpbmNsdWRlIGV4YWN0bHkgb25lIG9mICR7Z2V0RGF0YXNldHMoKX0pYCxcbiAgICAgIG5hbWU6IFwiZGF0YXNldFwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IGBzY2hlbWEgKHBvc3NpYmxlIHZhbHVlcyBhcmUgJHtnZXRTY2hlbWFzKCl9KWAsXG4gICAgICBuYW1lOiBcInNjaGVtYVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiaWdub3JlIHNjaGVtYVZlcnNpb24gZnJvbSBKU09OIGZpbGVzIGFuZCB1c2UgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGluc3RlYWQgb2YgdGhlIC0tcmVwb3NpdG9yeVwiLFxuICAgICAgbmFtZTogXCJkZXZcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJpbmNyZWFzZSB2ZXJib3NpdHlcIixcbiAgICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IFwiaGVscFwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiUHJpbnQgdGhpcyB1c2FnZSBndWlkZS5cIixcbiAgICB9LFxuICBdXG4gIGNvbnN0IHNlY3Rpb25zID0gW1xuICAgIHtcbiAgICAgIGhlYWRlcjogXCJWYWxpZGF0ZSBKU09OIGZpbGVzXCIsXG4gICAgICBjb250ZW50OiBcIlZhbGlkYXRlIEpTT04gZmlsZXNcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGhlYWRlcjogXCJPcHRpb25zXCIsXG4gICAgICBvcHRpb25MaXN0OiBvcHRpb25zRGVmaW5pdGlvbnMsXG4gICAgfSxcbiAgXVxuICBjb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucywge1xuICAgIGFyZ3Y6IGFyZ3YsXG4gIH0pXG5cbiAgaWYgKG9wdGlvbnMuZGF0YXNldCkge1xuICAgIGlmICghdmFsaWREYXRhc2V0KG9wdGlvbnMuZGF0YXNldCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYC0tZGF0YXNldCAke29wdGlvbnMuZGF0YXNldH1gKVxuICAgICAgb3B0aW9ucy5oZWxwID0gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRpb25zLnNjaGVtYSkge1xuICAgIGlmICghZ2V0U2NoZW1hcygpLmluY2x1ZGVzKG9wdGlvbnMuc2NoZW1hKSkge1xuICAgICAgY29uc29sZS5lcnJvcihgLS1zY2hlbWEgJHtvcHRpb25zLnNjaGVtYX1gKVxuICAgICAgb3B0aW9ucy5oZWxwID0gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIGlmIChcImhlbHBcIiBpbiBvcHRpb25zKSB7XG4gICAgY29uc3QgdXNhZ2UgPSBjb21tYW5kTGluZVVzYWdlKHNlY3Rpb25zKVxuICAgIGNvbnNvbGUud2Fybih1c2FnZSlcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIHJldHVybiBvcHRpb25zXG59XG5cbmNsYXNzIFZhbGlkYXRlIHtcbiAgb3B0aW9uczogYW55XG4gIHZlcnNpb24yc2NoZW1hOiBhbnlcbiAgdG1wRGlyOiBzdHJpbmdcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBhbnkpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zXG4gICAgdGhpcy52ZXJzaW9uMnNjaGVtYSA9IHt9XG4gICAgdGhpcy50bXBEaXIgPSB0ZW1wLm1rZGlyU3luYyhcInZhbGlkYXRpb25cIilcbiAgfVxuXG4gIGdldFNjaGVtYURpcih0YWc6IHN0cmluZykge1xuICAgIGlmICh0aGlzLm9wdGlvbnMuZGV2ID09IHRydWUpIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMudmVyYm9zZSkgY29uc29sZS5sb2coXCItLWRldjogdXNlIHNyYy9zY2hlbWFzXCIpXG4gICAgICByZXR1cm4gXCJzcmMvc2NoZW1hc1wiXG4gICAgfVxuICAgIGNvbnN0IHJlcG9zaXRvcnlEaXIgPSBwYXRoLmpvaW4odGhpcy50bXBEaXIsIFwidHJpY290ZXVzZXMtYXNzZW1ibGVlXCIpXG4gICAgY29uc3QgdGFnRGlyID0gcGF0aC5qb2luKHRoaXMudG1wRGlyLCB0YWcpXG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKHRhZ0RpcikpIHtcbiAgICAgIGlmICghZnMuZXhpc3RzU3luYyhyZXBvc2l0b3J5RGlyKSkge1xuICAgICAgICBnaXQucnVuKFxuICAgICAgICAgIHRoaXMudG1wRGlyLFxuICAgICAgICAgIGBjbG9uZSAtLXF1aWV0ICR7dGhpcy5vcHRpb25zLnJlcG9zaXRvcnl9ICR7cmVwb3NpdG9yeURpcn1gLFxuICAgICAgICApXG4gICAgICB9XG4gICAgICBnaXQucnVuKFxuICAgICAgICByZXBvc2l0b3J5RGlyLFxuICAgICAgICBgY2hlY2tvdXQgdGFncy8ke3RhZ30gLS0gc3JjL3NjaGVtYXMgPiAvZGV2L251bGwgMj4mMWAsXG4gICAgICApXG4gICAgICBmcy5yZW5hbWVTeW5jKHBhdGguam9pbihyZXBvc2l0b3J5RGlyLCBcInNyYy9zY2hlbWFzXCIpLCB0YWdEaXIpXG4gICAgfVxuICAgIHJldHVybiB0YWdEaXJcbiAgfVxuXG4gIGdldFZhbGlkYXRvcih2ZXJzaW9uOiBzdHJpbmcpOiBhbnkge1xuICAgIGlmICghKHZlcnNpb24gaW4gdGhpcy52ZXJzaW9uMnNjaGVtYSkpIHtcbiAgICAgIGNvbnN0IGFqdiA9IG5ldyBBanYoKVxuICAgICAgY29uc3QgZGlyID0gdGhpcy5nZXRTY2hlbWFEaXIoYHNjaGVtYS0ke3ZlcnNpb259YClcbiAgICAgIGxldCByZWZlcmVuY2VzID0gW11cbiAgICAgIGZvciAoY29uc3QgcmVmZXJlbmNlIG9mIGdldEZpbGVzKFtcbiAgICAgICAgYCR7ZGlyfS8ke3RoaXMub3B0aW9ucy5zY2hlbWF9LyouanNvbmAsXG4gICAgICBdKSlcbiAgICAgICAgcmVmZXJlbmNlcy5wdXNoKHJlZmVyZW5jZSlcbiAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBnZXRGaWxlcyhyZWZlcmVuY2VzKSkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnZlcmJvc2UpIGNvbnNvbGUubG9nKGByZWZlcmVuY2U6ICR7ZmlsZX1gKVxuICAgICAgICBhanYuYWRkU2NoZW1hKGxvYWQoZmlsZSkpXG4gICAgICB9XG4gICAgICBjb25zdCBzY2hlbWEgPSB0aGlzLm9wdGlvbnMuc2NoZW1hXG4gICAgICBjb25zdCBTY2hlbWEgPSBzY2hlbWEuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzY2hlbWEuc2xpY2UoMSlcbiAgICAgIGNvbnN0IHMgPSBgJHtkaXJ9LyR7c2NoZW1hfS8ke1NjaGVtYX0uanNvbmBcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMudmVyYm9zZSkgY29uc29sZS5sb2coYHNjaGVtYSAke3N9YClcbiAgICAgIHRoaXMudmVyc2lvbjJzY2hlbWFbdmVyc2lvbl0gPSBhanYuY29tcGlsZShsb2FkKHMpKVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy52ZXJzaW9uMnNjaGVtYVt2ZXJzaW9uXVxuICB9XG5cbiAgZ2V0VmVyc2lvbihjb250ZW50OiBhbnkpOiBzdHJpbmcge1xuICAgIGlmIChjb250ZW50LnNjaGVtYVZlcnNpb24gIT0gdW5kZWZpbmVkKSByZXR1cm4gY29udGVudC5zY2hlbWFWZXJzaW9uXG4gICAgcmV0dXJuIGAke3RoaXMub3B0aW9ucy5zY2hlbWF9LTEuMGBcbiAgfVxuXG4gIGdldFNjaGVtYVVSTCh2ZXJzaW9uOiBzdHJpbmcpOiBhbnkge1xuICAgIGlmICh0aGlzLm9wdGlvbnMuZGV2ID09IHRydWUpIHJldHVybiBcInNyYy9zY2hlbWFzXCJcbiAgICBlbHNlIHtcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRoaXMub3B0aW9ucy5yZXBvc2l0b3J5KSkge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5vcHRpb25zLnJlcG9zaXRvcnl9L3NyYy9zY2hlbWFzIGF0IHRhZyBzY2hlbWEtJHt2ZXJzaW9ufWBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJlcG9zaXRvcnkgPSB0aGlzLm9wdGlvbnMucmVwb3NpdG9yeS5yZXBsYWNlKC9cXC5naXQkLywgXCJcIilcbiAgICAgICAgcmV0dXJuIGAke3JlcG9zaXRvcnl9L3RyZWUvc2NoZW1hLSR7dmVyc2lvbn0vc3JjL3NjaGVtYXNgXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGUoY29udGVudDogYW55LCBmaWxlbmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBjb25zdCB0YWcgPSB0aGlzLmdldFZlcnNpb24oY29udGVudClcbiAgICBjb25zdCB2YWxpZGF0b3IgPSB0aGlzLmdldFZhbGlkYXRvcih0YWcpXG4gICAgY29uc3QgdmFsaWQgPSB2YWxpZGF0b3IoY29udGVudClcbiAgICBjb25zdCBzY2hlbWFVUkwgPSB0aGlzLmdldFNjaGVtYVVSTCh0YWcpXG4gICAgaWYgKCF2YWxpZCkge1xuICAgICAgY29uc29sZS5lcnJvcihgJHtzY2hlbWFVUkx9IGZpbmRzICR7ZmlsZW5hbWV9IGlzIGludmFsaWRgKVxuICAgICAgY29uc29sZS5lcnJvcih2YWxpZGF0b3IuZXJyb3JzKVxuICAgICAgcmV0dXJuIDFcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy52ZXJib3NlKVxuICAgICAgICBjb25zb2xlLmxvZyhgJHtzY2hlbWFVUkx9IGZpbmRzICR7ZmlsZW5hbWV9IGlzIHZhbGlkYClcbiAgICAgIHJldHVybiAwXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcHJvY2VzcygpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGxldCBzdGF0dXMgPSAwXG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGdldEZpbGVzKFt0aGlzLm9wdGlvbnMuZGF0YV0pKSB7XG4gICAgICBjb25zdCBjb250ZW50ID0gbG9hZChmaWxlKVxuICAgICAgc3RhdHVzIHw9IHRoaXMudmFsaWRhdGUoY29udGVudCwgZmlsZSlcbiAgICB9XG4gICAgcmV0dXJuIHN0YXR1c1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIG1haW4oYXJndjogYW55KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IHBhcnNlQXJncyhhcmd2KVxuICBpZiAob3B0aW9ucyA9PT0gbnVsbCkgcmV0dXJuIDFcbiAgbGV0IGRpcmVjdG9yeVNjaGVtYSA9IFtdXG4gIGlmIChvcHRpb25zLnNjaGVtYSkge1xuICAgIGRpcmVjdG9yeVNjaGVtYSA9IFtbb3B0aW9ucy5kYXRhLCBvcHRpb25zLnNjaGVtYV1dXG4gIH0gZWxzZSBpZiAob3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgZGlyZWN0b3J5U2NoZW1hID0gZGF0YXNldERpcmVjdG9yeVNjaGVtYShvcHRpb25zLmRhdGFzZXQpXG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5lcnJvcihcImVpdGhlciAtLXNjaGVtYSBvciAtLWRhdGFzZXQgaXMgcmVxdWlyZWRcIilcbiAgICByZXR1cm4gMVxuICB9XG4gIGZvciAoY29uc3QgZCBvZiBkaXJlY3RvcnlTY2hlbWEpIHtcbiAgICBvcHRpb25zLnNjaGVtYSA9IGRbMV1cbiAgICBvcHRpb25zLmRhdGEgPSBkWzBdXG4gICAgaWYgKG9wdGlvbnMudmVyYm9zZSlcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgd29ya2luZyBvbiBmaWxlcyAke29wdGlvbnMuZGF0YX0gd2l0aCBzY2hlbWEgJHtvcHRpb25zLnNjaGVtYX1gLFxuICAgICAgKVxuICAgIGNvbnN0IHZhbGlkYXRlID0gbmV3IFZhbGlkYXRlKG9wdGlvbnMpXG4gICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdmFsaWRhdGUucHJvY2VzcygpXG4gICAgaWYgKHN0YXR1cyAhPSAwKSByZXR1cm4gc3RhdHVzXG4gIH1cbiAgcmV0dXJuIDBcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAocHJvY2Vzcy5hcmd2WzFdLmVuZHNXaXRoKFwidmFsaWRhdGVfanNvbi50c1wiKSlcbiAgbWFpbihwcm9jZXNzLmFyZ3YpXG4gICAgLnRoZW4oKHN0YXR1cykgPT4ge1xuICAgICAgcHJvY2Vzcy5leGl0KHN0YXR1cylcbiAgICB9KVxuICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXG4gICAgICBwcm9jZXNzLmV4aXQoMSlcbiAgICB9KVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7OzsrQ0FQQSxvSjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFjQTtBQUNBQSxnQkFBQSxDQUFLQyxLQUFMOztBQUVBLFNBQVNDLFNBQVQsQ0FBbUJDLElBQW5CLEVBQXdDO0VBQ3RDLElBQU1DLGtCQUFrQixHQUFHLENBQ3pCO0lBQ0VDLFdBQVcsRUFBRSxrREFEZjtJQUVFQyxhQUFhLEVBQUUsSUFGakI7SUFHRUMsSUFBSSxFQUFFLE1BSFI7SUFJRUMsSUFBSSxFQUFFQztFQUpSLENBRHlCLEVBT3pCO0lBQ0VKLFdBQVcsRUFBRSx5REFEZjtJQUVFSyxZQUFZLEVBQ1YsK0RBSEo7SUFJRUgsSUFBSSxFQUFFLFlBSlI7SUFLRUMsSUFBSSxFQUFFQztFQUxSLENBUHlCLEVBY3pCO0lBQ0VKLFdBQVcsaUVBQTBELElBQUFNLHFCQUFBLEdBQTFELE1BRGI7SUFFRUosSUFBSSxFQUFFLFNBRlI7SUFHRUMsSUFB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
351
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ0ZW1wIiwidHJhY2siLCJwYXJzZUFyZ3MiLCJhcmd2Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiZGVzY3JpcHRpb24iLCJkZWZhdWx0T3B0aW9uIiwibmFtZSIsInR5cGUiLCJTdHJpbmciLCJkZWZhdWx0VmFsdWUiLCJnZXREYXRhc2V0cyIsImdldFNjaGVtYXMiLCJCb29sZWFuIiwic2VjdGlvbnMiLCJoZWFkZXIiLCJjb250ZW50Iiwib3B0aW9uTGlzdCIsIm9wdGlvbnMiLCJjb21tYW5kTGluZUFyZ3MiLCJkYXRhc2V0IiwidmFsaWREYXRhc2V0IiwiY29uc29sZSIsImVycm9yIiwiaGVscCIsInNjaGVtYSIsImluY2x1ZGVzIiwidXNhZ2UiLCJjb21tYW5kTGluZVVzYWdlIiwid2FybiIsIlZhbGlkYXRlIiwidmVyc2lvbjJzY2hlbWEiLCJ0bXBEaXIiLCJta2RpclN5bmMiLCJ0YWciLCJkZXYiLCJ2ZXJib3NlIiwibG9nIiwicmVwb3NpdG9yeURpciIsInBhdGgiLCJqb2luIiwidGFnRGlyIiwiZnMiLCJleGlzdHNTeW5jIiwiZ2l0IiwicnVuIiwicmVwb3NpdG9yeSIsInJlbmFtZVN5bmMiLCJ2ZXJzaW9uIiwiYWp2IiwiQWp2IiwiZGlyIiwiZ2V0U2NoZW1hRGlyIiwicmVmZXJlbmNlcyIsImdldEZpbGVzIiwicmVmZXJlbmNlIiwicHVzaCIsImZpbGUiLCJhZGRTY2hlbWEiLCJsb2FkIiwiU2NoZW1hIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsInMiLCJjb21waWxlIiwic2NoZW1hVmVyc2lvbiIsInVuZGVmaW5lZCIsInJlcGxhY2UiLCJmaWxlbmFtZSIsImdldFZlcnNpb24iLCJ2YWxpZGF0b3IiLCJnZXRWYWxpZGF0b3IiLCJ2YWxpZCIsInNjaGVtYVVSTCIsImdldFNjaGVtYVVSTCIsImVycm9ycyIsInN0YXR1cyIsImRhdGEiLCJ2YWxpZGF0ZSIsIm1haW4iLCJkaXJlY3RvcnlTY2hlbWEiLCJkYXRhc2V0RGlyZWN0b3J5U2NoZW1hIiwiZCIsInByb2Nlc3MiLCJlbmRzV2l0aCIsInRoZW4iLCJleGl0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvdmFsaWRhdGVfanNvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQWp2IGZyb20gXCJhanZcIlxuaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGNvbW1hbmRMaW5lVXNhZ2UgZnJvbSBcImNvbW1hbmQtbGluZS11c2FnZVwiXG5pbXBvcnQgeyBsb2FkLCBnZXRGaWxlcyB9IGZyb20gXCIuLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0ICogYXMgZ2l0IGZyb20gXCIuLi9naXRcIlxuaW1wb3J0IHRlbXAgZnJvbSBcInRlbXBcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQge1xuICB2YWxpZERhdGFzZXQsXG4gIGdldERhdGFzZXRzLFxuICBnZXRTY2hlbWFzLFxuICBkYXRhc2V0RGlyZWN0b3J5U2NoZW1hLFxufSBmcm9tIFwiLi4vLi4vc3JjL2RhdGFzZXRzXCJcblxuLy8gQXV0b21hdGljYWxseSB0cmFjayBhbmQgY2xlYW51cCBmaWxlcyBhdCBleGl0XG50ZW1wLnRyYWNrKClcblxuZnVuY3Rpb24gcGFyc2VBcmdzKGFyZ3Y6IHN0cmluZ1tdKTogYW55IHtcbiAgY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcInBhdGhuYW1lIHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZGF0YXNldFwiLFxuICAgICAgZGVmYXVsdE9wdGlvbjogdHJ1ZSxcbiAgICAgIG5hbWU6IFwiZGF0YVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IFwiVVJMIG9yIHBhdGggdG8gdGhlIHRyaWNvdGV1c2VzLWFzc2VtYmxlZSBnaXQgcmVwb3NpdG9yeVwiLFxuICAgICAgZGVmYXVsdFZhbHVlOlxuICAgICAgICBcImh0dHBzOi8vZ2l0LmVuLXJvb3Qub3JnL3RyaWNvdGV1c2VzL3RyaWNvdGV1c2VzLWFzc2VtYmxlZS5naXRcIixcbiAgICAgIG5hbWU6IFwicmVwb3NpdG9yeVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IGBkYXRhc2V0IChwb3NzaWJsZSB2YWx1ZXMgbXVzdCBpbmNsdWRlIGV4YWN0bHkgb25lIG9mICR7Z2V0RGF0YXNldHMoKX0pYCxcbiAgICAgIG5hbWU6IFwiZGF0YXNldFwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IGBzY2hlbWEgKHBvc3NpYmxlIHZhbHVlcyBhcmUgJHtnZXRTY2hlbWFzKCl9KWAsXG4gICAgICBuYW1lOiBcInNjaGVtYVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiaWdub3JlIHNjaGVtYVZlcnNpb24gZnJvbSBKU09OIGZpbGVzIGFuZCB1c2UgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGluc3RlYWQgb2YgdGhlIC0tcmVwb3NpdG9yeVwiLFxuICAgICAgbmFtZTogXCJkZXZcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJpbmNyZWFzZSB2ZXJib3NpdHlcIixcbiAgICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IFwiaGVscFwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiUHJpbnQgdGhpcyB1c2FnZSBndWlkZS5cIixcbiAgICB9LFxuICBdXG4gIGNvbnN0IHNlY3Rpb25zID0gW1xuICAgIHtcbiAgICAgIGhlYWRlcjogXCJWYWxpZGF0ZSBKU09OIGZpbGVzXCIsXG4gICAgICBjb250ZW50OiBcIlZhbGlkYXRlIEpTT04gZmlsZXNcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGhlYWRlcjogXCJPcHRpb25zXCIsXG4gICAgICBvcHRpb25MaXN0OiBvcHRpb25zRGVmaW5pdGlvbnMsXG4gICAgfSxcbiAgXVxuICBjb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucywge1xuICAgIGFyZ3Y6IGFyZ3YsXG4gIH0pXG5cbiAgaWYgKG9wdGlvbnMuZGF0YXNldCkge1xuICAgIGlmICghdmFsaWREYXRhc2V0KG9wdGlvbnMuZGF0YXNldCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYC0tZGF0YXNldCAke29wdGlvbnMuZGF0YXNldH1gKVxuICAgICAgb3B0aW9ucy5oZWxwID0gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRpb25zLnNjaGVtYSkge1xuICAgIGlmICghZ2V0U2NoZW1hcygpLmluY2x1ZGVzKG9wdGlvbnMuc2NoZW1hKSkge1xuICAgICAgY29uc29sZS5lcnJvcihgLS1zY2hlbWEgJHtvcHRpb25zLnNjaGVtYX1gKVxuICAgICAgb3B0aW9ucy5oZWxwID0gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIGlmIChcImhlbHBcIiBpbiBvcHRpb25zKSB7XG4gICAgY29uc3QgdXNhZ2UgPSBjb21tYW5kTGluZVVzYWdlKHNlY3Rpb25zKVxuICAgIGNvbnNvbGUud2Fybih1c2FnZSlcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIHJldHVybiBvcHRpb25zXG59XG5cbmNsYXNzIFZhbGlkYXRlIHtcbiAgb3B0aW9uczogYW55XG4gIHZlcnNpb24yc2NoZW1hOiBhbnlcbiAgdG1wRGlyOiBzdHJpbmdcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBhbnkpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zXG4gICAgdGhpcy52ZXJzaW9uMnNjaGVtYSA9IHt9XG4gICAgdGhpcy50bXBEaXIgPSB0ZW1wLm1rZGlyU3luYyhcInZhbGlkYXRpb25cIilcbiAgfVxuXG4gIGdldFNjaGVtYURpcih0YWc6IHN0cmluZykge1xuICAgIGlmICh0aGlzLm9wdGlvbnMuZGV2ID09IHRydWUpIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMudmVyYm9zZSkgY29uc29sZS5sb2coXCItLWRldjogdXNlIHNyYy9zY2hlbWFzXCIpXG4gICAgICByZXR1cm4gXCJzcmMvc2NoZW1hc1wiXG4gICAgfVxuICAgIGNvbnN0IHJlcG9zaXRvcnlEaXIgPSBwYXRoLmpvaW4odGhpcy50bXBEaXIsIFwidHJpY290ZXVzZXMtYXNzZW1ibGVlXCIpXG4gICAgY29uc3QgdGFnRGlyID0gcGF0aC5qb2luKHRoaXMudG1wRGlyLCB0YWcpXG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKHRhZ0RpcikpIHtcbiAgICAgIGlmICghZnMuZXhpc3RzU3luYyhyZXBvc2l0b3J5RGlyKSkge1xuICAgICAgICBnaXQucnVuKFxuICAgICAgICAgIHRoaXMudG1wRGlyLFxuICAgICAgICAgIGBjbG9uZSAtLXF1aWV0ICR7dGhpcy5vcHRpb25zLnJlcG9zaXRvcnl9ICR7cmVwb3NpdG9yeURpcn1gLFxuICAgICAgICApXG4gICAgICB9XG4gICAgICBnaXQucnVuKFxuICAgICAgICByZXBvc2l0b3J5RGlyLFxuICAgICAgICBgY2hlY2tvdXQgdGFncy8ke3RhZ30gLS0gc3JjL3NjaGVtYXMgPiAvZGV2L251bGwgMj4mMWAsXG4gICAgICApXG4gICAgICBmcy5yZW5hbWVTeW5jKHBhdGguam9pbihyZXBvc2l0b3J5RGlyLCBcInNyYy9zY2hlbWFzXCIpLCB0YWdEaXIpXG4gICAgfVxuICAgIHJldHVybiB0YWdEaXJcbiAgfVxuXG4gIGdldFZhbGlkYXRvcih2ZXJzaW9uOiBzdHJpbmcpOiBhbnkge1xuICAgIGlmICghKHZlcnNpb24gaW4gdGhpcy52ZXJzaW9uMnNjaGVtYSkpIHtcbiAgICAgIGNvbnN0IGFqdiA9IG5ldyBBanYoKVxuICAgICAgY29uc3QgZGlyID0gdGhpcy5nZXRTY2hlbWFEaXIoYHNjaGVtYS0ke3ZlcnNpb259YClcbiAgICAgIGxldCByZWZlcmVuY2VzID0gW11cbiAgICAgIGZvciAoY29uc3QgcmVmZXJlbmNlIG9mIGdldEZpbGVzKFtcbiAgICAgICAgYCR7ZGlyfS8ke3RoaXMub3B0aW9ucy5zY2hlbWF9LyouanNvbmAsXG4gICAgICBdKSlcbiAgICAgICAgcmVmZXJlbmNlcy5wdXNoKHJlZmVyZW5jZSlcbiAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBnZXRGaWxlcyhyZWZlcmVuY2VzKSkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnZlcmJvc2UpIGNvbnNvbGUubG9nKGByZWZlcmVuY2U6ICR7ZmlsZX1gKVxuICAgICAgICBhanYuYWRkU2NoZW1hKGxvYWQoZmlsZSkpXG4gICAgICB9XG4gICAgICBjb25zdCBzY2hlbWEgPSB0aGlzLm9wdGlvbnMuc2NoZW1hXG4gICAgICBjb25zdCBTY2hlbWEgPSBzY2hlbWEuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzY2hlbWEuc2xpY2UoMSlcbiAgICAgIGNvbnN0IHMgPSBgJHtkaXJ9LyR7c2NoZW1hfS8ke1NjaGVtYX0uanNvbmBcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMudmVyYm9zZSkgY29uc29sZS5sb2coYHNjaGVtYSAke3N9YClcbiAgICAgIHRoaXMudmVyc2lvbjJzY2hlbWFbdmVyc2lvbl0gPSBhanYuY29tcGlsZShsb2FkKHMpKVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy52ZXJzaW9uMnNjaGVtYVt2ZXJzaW9uXVxuICB9XG5cbiAgZ2V0VmVyc2lvbihjb250ZW50OiBhbnkpOiBzdHJpbmcge1xuICAgIGlmIChjb250ZW50LnNjaGVtYVZlcnNpb24gIT0gdW5kZWZpbmVkKSByZXR1cm4gY29udGVudC5zY2hlbWFWZXJzaW9uXG4gICAgcmV0dXJuIGAke3RoaXMub3B0aW9ucy5zY2hlbWF9LTEuMGBcbiAgfVxuXG4gIGdldFNjaGVtYVVSTCh2ZXJzaW9uOiBzdHJpbmcpOiBhbnkge1xuICAgIGlmICh0aGlzLm9wdGlvbnMuZGV2ID09IHRydWUpIHJldHVybiBcInNyYy9zY2hlbWFzXCJcbiAgICBlbHNlIHtcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRoaXMub3B0aW9ucy5yZXBvc2l0b3J5KSkge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5vcHRpb25zLnJlcG9zaXRvcnl9L3NyYy9zY2hlbWFzIGF0IHRhZyBzY2hlbWEtJHt2ZXJzaW9ufWBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJlcG9zaXRvcnkgPSB0aGlzLm9wdGlvbnMucmVwb3NpdG9yeS5yZXBsYWNlKC9cXC5naXQkLywgXCJcIilcbiAgICAgICAgcmV0dXJuIGAke3JlcG9zaXRvcnl9L3RyZWUvc2NoZW1hLSR7dmVyc2lvbn0vc3JjL3NjaGVtYXNgXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGUoY29udGVudDogYW55LCBmaWxlbmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBjb25zdCB0YWcgPSB0aGlzLmdldFZlcnNpb24oY29udGVudClcbiAgICBjb25zdCB2YWxpZGF0b3IgPSB0aGlzLmdldFZhbGlkYXRvcih0YWcpXG4gICAgY29uc3QgdmFsaWQgPSB2YWxpZGF0b3IoY29udGVudClcbiAgICBjb25zdCBzY2hlbWFVUkwgPSB0aGlzLmdldFNjaGVtYVVSTCh0YWcpXG4gICAgaWYgKCF2YWxpZCkge1xuICAgICAgY29uc29sZS5lcnJvcihgJHtzY2hlbWFVUkx9IGZpbmRzICR7ZmlsZW5hbWV9IGlzIGludmFsaWRgKVxuICAgICAgY29uc29sZS5lcnJvcih2YWxpZGF0b3IuZXJyb3JzKVxuICAgICAgcmV0dXJuIDFcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy52ZXJib3NlKVxuICAgICAgICBjb25zb2xlLmxvZyhgJHtzY2hlbWFVUkx9IGZpbmRzICR7ZmlsZW5hbWV9IGlzIHZhbGlkYClcbiAgICAgIHJldHVybiAwXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcHJvY2VzcygpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGxldCBzdGF0dXMgPSAwXG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGdldEZpbGVzKFt0aGlzLm9wdGlvbnMuZGF0YV0pKSB7XG4gICAgICBjb25zdCBjb250ZW50ID0gbG9hZChmaWxlKVxuICAgICAgc3RhdHVzIHw9IHRoaXMudmFsaWRhdGUoY29udGVudCwgZmlsZSlcbiAgICB9XG4gICAgcmV0dXJuIHN0YXR1c1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIG1haW4oYXJndjogYW55KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IHBhcnNlQXJncyhhcmd2KVxuICBpZiAob3B0aW9ucyA9PT0gbnVsbCkgcmV0dXJuIDFcbiAgbGV0IGRpcmVjdG9yeVNjaGVtYSA9IFtdXG4gIGlmIChvcHRpb25zLnNjaGVtYSkge1xuICAgIGRpcmVjdG9yeVNjaGVtYSA9IFtbb3B0aW9ucy5kYXRhLCBvcHRpb25zLnNjaGVtYV1dXG4gIH0gZWxzZSBpZiAob3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgZGlyZWN0b3J5U2NoZW1hID0gZGF0YXNldERpcmVjdG9yeVNjaGVtYShvcHRpb25zLmRhdGFzZXQpXG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5lcnJvcihcImVpdGhlciAtLXNjaGVtYSBvciAtLWRhdGFzZXQgaXMgcmVxdWlyZWRcIilcbiAgICByZXR1cm4gMVxuICB9XG4gIGZvciAoY29uc3QgZCBvZiBkaXJlY3RvcnlTY2hlbWEpIHtcbiAgICBvcHRpb25zLnNjaGVtYSA9IGRbMV1cbiAgICBvcHRpb25zLmRhdGEgPSBkWzBdXG4gICAgaWYgKG9wdGlvbnMudmVyYm9zZSlcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgd29ya2luZyBvbiBmaWxlcyAke29wdGlvbnMuZGF0YX0gd2l0aCBzY2hlbWEgJHtvcHRpb25zLnNjaGVtYX1gLFxuICAgICAgKVxuICAgIGNvbnN0IHZhbGlkYXRlID0gbmV3IFZhbGlkYXRlKG9wdGlvbnMpXG4gICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdmFsaWRhdGUucHJvY2VzcygpXG4gICAgaWYgKHN0YXR1cyAhPSAwKSByZXR1cm4gc3RhdHVzXG4gIH1cbiAgcmV0dXJuIDBcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAocHJvY2Vzcy5hcmd2WzFdLmVuZHNXaXRoKFwidmFsaWRhdGVfanNvbi50c1wiKSlcbiAgbWFpbihwcm9jZXNzLmFyZ3YpXG4gICAgLnRoZW4oKHN0YXR1cykgPT4ge1xuICAgICAgcHJvY2Vzcy5leGl0KHN0YXR1cylcbiAgICB9KVxuICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXG4gICAgICBwcm9jZXNzLmV4aXQoMSlcbiAgICB9KVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUsyQjtBQUFBO0FBQUE7QUFBQSwrQ0FaM0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFjQTtBQUNBQSxnQkFBSSxDQUFDQyxLQUFLLEVBQUU7QUFFWixTQUFTQyxTQUFTLENBQUNDLElBQWMsRUFBTztFQUN0QyxJQUFNQyxrQkFBa0IsR0FBRyxDQUN6QjtJQUNFQyxXQUFXLEVBQUUsa0RBQWtEO0lBQy9EQyxhQUFhLEVBQUUsSUFBSTtJQUNuQkMsSUFBSSxFQUFFLE1BQU07SUFDWkMsSUFBSSxFQUFFQztFQUNSLENBQUMsRUFDRDtJQUNFSixXQUFXLEVBQUUseURBQXlEO0lBQ3RFSyxZQUFZLEVBQ1YsK0RBQStEO0lBQ2pFSCxJQUFJLEVBQUUsWUFBWTtJQUNsQkMsSUFBSSxFQUFFQztFQUNSLENBQUMsRUFDRDtJQUNFSixXQUFXLGlFQUEwRCxJQUFBTSxxQkFBVyxHQUFFLE1BQUc7SUFDckZKLElBQUksRUFBRSxTQUFTO0lBQ2ZDLElB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