@tricoteuses/assemblee 1.1.3 → 1.1.4

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 (48) hide show
  1. package/lib/bugs/acteur-00010/plugin.test.js +53 -55
  2. package/lib/bugs/acteur-00010.js +26 -30
  3. package/lib/bugs/agenda-00002/plugin.test.js +78 -82
  4. package/lib/bugs/agenda-00002.js +206 -214
  5. package/lib/bugs/agenda-00008/plugin.test.js +54 -56
  6. package/lib/bugs/agenda-00008.js +38 -42
  7. package/lib/bugs/agenda-00011/plugin.test.js +204 -214
  8. package/lib/bugs/agenda-00011.js +117 -131
  9. package/lib/bugs.js +212 -232
  10. package/lib/cleaners/actes_legislatifs.js +1 -1
  11. package/lib/cleaners/acteurs.js +2 -2
  12. package/lib/cleaners/amendements.js +1 -1
  13. package/lib/cleaners/documents.js +1 -1
  14. package/lib/cleaners/dossiers_legislatifs.js +1 -1
  15. package/lib/cleaners/reunions.js +1 -1
  16. package/lib/cleaners/scrutins.js +1 -1
  17. package/lib/cleaners/xml.js +2 -2
  18. package/lib/datasets.js +2 -2
  19. package/lib/dossiers_legislatifs.js +1 -1
  20. package/lib/file_systems.js +48 -50
  21. package/lib/git.js +1 -1
  22. package/lib/inserters.js +1 -1
  23. package/lib/loaders.js +1 -1
  24. package/lib/parsers/documents.js +29 -31
  25. package/lib/parsers/recherche_amendements.js +284 -288
  26. package/lib/raw_types/acteurs_et_organes.d.ts +1 -0
  27. package/lib/raw_types/acteurs_et_organes.js +3 -2
  28. package/lib/raw_types/acteurs_et_organes.mjs +3 -2
  29. package/lib/scripts/bugs_helper.js +301 -317
  30. package/lib/scripts/clean_data.js +1 -1
  31. package/lib/scripts/clean_reorganized_data.js +13 -15
  32. package/lib/scripts/diff_amendements.js +1 -1
  33. package/lib/scripts/document_dossiers_legislatifs.js +2 -2
  34. package/lib/scripts/merge_scrutins.js +1 -1
  35. package/lib/scripts/parse_textes_lois.js +1 -1
  36. package/lib/scripts/raw_types_from_amendements.js +133 -135
  37. package/lib/scripts/reorganize_data.js +13 -15
  38. package/lib/scripts/retrieve_deputes_photos.js +169 -171
  39. package/lib/scripts/retrieve_documents.js +266 -278
  40. package/lib/scripts/retrieve_open_data.js +140 -144
  41. package/lib/scripts/retrieve_pending_amendments.js +118 -120
  42. package/lib/scripts/retrieve_senateurs_photos.js +167 -169
  43. package/lib/scripts/retrieve_textes_lois.js +129 -131
  44. package/lib/scripts/validate_json.js +87 -91
  45. package/lib/types/acteurs_et_organes.d.ts +1 -0
  46. package/lib/types/acteurs_et_organes.js +3 -2
  47. package/lib/types/acteurs_et_organes.mjs +3 -2
  48. package/package.json +6 -6
@@ -37,14 +37,14 @@ var _quicktypeCore = require("quicktype-core");
37
37
  var _datasets = require("../datasets");
38
38
  var _file_systems = require("../file_systems");
39
39
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
40
- 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 methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), 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; }
40
+ 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 methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), 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; }
41
41
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
42
42
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
43
43
  function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
44
44
  function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
45
45
  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; } } }; }
46
46
  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); }
47
- 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; }
47
+ 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; }
48
48
  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); } }
49
49
  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); }); }; }
50
50
  var optionsDefinitions = [{
@@ -71,146 +71,144 @@ function _generateRawTypesFromAmendements() {
71
71
  _generateRawTypesFromAmendements = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(dataDir) {
72
72
  var _iterator, _step, dataset, originalJsonDir, amendementsOriginalFilesPathsByUidTextLegislatif, _iterator2, _step2, amendementSplitPath, amendementFilename, _uidTexteLegislatif, _amendementsOriginalFilesPaths, _amendementOriginalFilePath, uidsTextesLegislatifs, textesLegislatifsSamples, _i, _uidsTextesLegislatif, uidTexteLegislatif, amendementsOriginalFilesPaths, amendements, _iterator3, _step3, amendementOriginalFilePath, amendementOriginalJson, amendementOriginal, amendement, texteLegislatif, jsonInput, inputData, _yield$quicktype, lines, amendementsRawTypesFilePath;
73
73
  return _regeneratorRuntime().wrap(function _callee$(_context) {
74
- while (1) {
75
- switch (_context.prev = _context.next) {
76
- case 0:
77
- _iterator = _createForOfIteratorHelper(_datasets.datasets.amendements);
78
- _context.prev = 1;
79
- _iterator.s();
80
- case 3:
81
- if ((_step = _iterator.n()).done) {
82
- _context.next = 52;
83
- break;
84
- }
85
- dataset = _step.value;
86
- _context.t0 = dataset.structure;
87
- _context.next = _context.t0 === _datasets.DatasetStructure.SegmentedFiles ? 8 : 50;
74
+ while (1) switch (_context.prev = _context.next) {
75
+ case 0:
76
+ _iterator = _createForOfIteratorHelper(_datasets.datasets.amendements);
77
+ _context.prev = 1;
78
+ _iterator.s();
79
+ case 3:
80
+ if ((_step = _iterator.n()).done) {
81
+ _context.next = 52;
88
82
  break;
89
- case 8:
90
- originalJsonDir = _path["default"].join(dataDir, dataset.filename);
91
- if (!options.silent) {
92
- console.log("Generating raw types from ".concat(originalJsonDir, "\u2026"));
93
- }
94
- amendementsOriginalFilesPathsByUidTextLegislatif = {};
95
- _iterator2 = _createForOfIteratorHelper((0, _file_systems.walkDir)(originalJsonDir));
96
- _context.prev = 12;
97
- _iterator2.s();
98
- case 14:
99
- if ((_step2 = _iterator2.n()).done) {
100
- _context.next = 26;
101
- break;
102
- }
103
- amendementSplitPath = _step2.value;
104
- amendementFilename = amendementSplitPath[amendementSplitPath.length - 1];
105
- if (amendementFilename.endsWith(".json")) {
106
- _context.next = 19;
107
- break;
108
- }
109
- return _context.abrupt("continue", 24);
110
- case 19:
111
- _uidTexteLegislatif = amendementSplitPath[amendementSplitPath.length - 2];
112
- _amendementsOriginalFilesPaths = amendementsOriginalFilesPathsByUidTextLegislatif[_uidTexteLegislatif];
113
- if (_amendementsOriginalFilesPaths === undefined) {
114
- _amendementsOriginalFilesPaths = amendementsOriginalFilesPathsByUidTextLegislatif[_uidTexteLegislatif] = [];
115
- }
116
- _amendementOriginalFilePath = _path["default"].join.apply(_path["default"], [originalJsonDir].concat(_toConsumableArray(amendementSplitPath)));
117
- _amendementsOriginalFilesPaths.push(_amendementOriginalFilePath);
118
- case 24:
119
- _context.next = 14;
83
+ }
84
+ dataset = _step.value;
85
+ _context.t0 = dataset.structure;
86
+ _context.next = _context.t0 === _datasets.DatasetStructure.SegmentedFiles ? 8 : 50;
87
+ break;
88
+ case 8:
89
+ originalJsonDir = _path["default"].join(dataDir, dataset.filename);
90
+ if (!options.silent) {
91
+ console.log("Generating raw types from ".concat(originalJsonDir, "\u2026"));
92
+ }
93
+ amendementsOriginalFilesPathsByUidTextLegislatif = {};
94
+ _iterator2 = _createForOfIteratorHelper((0, _file_systems.walkDir)(originalJsonDir));
95
+ _context.prev = 12;
96
+ _iterator2.s();
97
+ case 14:
98
+ if ((_step2 = _iterator2.n()).done) {
99
+ _context.next = 26;
120
100
  break;
121
- case 26:
122
- _context.next = 31;
101
+ }
102
+ amendementSplitPath = _step2.value;
103
+ amendementFilename = amendementSplitPath[amendementSplitPath.length - 1];
104
+ if (amendementFilename.endsWith(".json")) {
105
+ _context.next = 19;
123
106
  break;
124
- case 28:
125
- _context.prev = 28;
126
- _context.t1 = _context["catch"](12);
127
- _iterator2.e(_context.t1);
128
- case 31:
129
- _context.prev = 31;
130
- _iterator2.f();
131
- return _context.finish(31);
132
- case 34:
133
- uidsTextesLegislatifs = Object.keys(amendementsOriginalFilesPathsByUidTextLegislatif);
134
- uidsTextesLegislatifs.sort(function (a, b) {
107
+ }
108
+ return _context.abrupt("continue", 24);
109
+ case 19:
110
+ _uidTexteLegislatif = amendementSplitPath[amendementSplitPath.length - 2];
111
+ _amendementsOriginalFilesPaths = amendementsOriginalFilesPathsByUidTextLegislatif[_uidTexteLegislatif];
112
+ if (_amendementsOriginalFilesPaths === undefined) {
113
+ _amendementsOriginalFilesPaths = amendementsOriginalFilesPathsByUidTextLegislatif[_uidTexteLegislatif] = [];
114
+ }
115
+ _amendementOriginalFilePath = _path["default"].join.apply(_path["default"], [originalJsonDir].concat(_toConsumableArray(amendementSplitPath)));
116
+ _amendementsOriginalFilesPaths.push(_amendementOriginalFilePath);
117
+ case 24:
118
+ _context.next = 14;
119
+ break;
120
+ case 26:
121
+ _context.next = 31;
122
+ break;
123
+ case 28:
124
+ _context.prev = 28;
125
+ _context.t1 = _context["catch"](12);
126
+ _iterator2.e(_context.t1);
127
+ case 31:
128
+ _context.prev = 31;
129
+ _iterator2.f();
130
+ return _context.finish(31);
131
+ case 34:
132
+ uidsTextesLegislatifs = Object.keys(amendementsOriginalFilesPathsByUidTextLegislatif);
133
+ uidsTextesLegislatifs.sort(function (a, b) {
134
+ return a.length === b.length ? a.localeCompare(b) : a.length - b.length;
135
+ });
136
+ textesLegislatifsSamples = [];
137
+ for (_i = 0, _uidsTextesLegislatif = uidsTextesLegislatifs; _i < _uidsTextesLegislatif.length; _i++) {
138
+ uidTexteLegislatif = _uidsTextesLegislatif[_i];
139
+ if (options.verbose) {
140
+ console.log(" Reading \"amendements du texte l\xE9gislatif\": ".concat(uidTexteLegislatif, "\u2026"));
141
+ }
142
+ amendementsOriginalFilesPaths = amendementsOriginalFilesPathsByUidTextLegislatif[uidTexteLegislatif];
143
+ amendementsOriginalFilesPaths.sort(function (a, b) {
135
144
  return a.length === b.length ? a.localeCompare(b) : a.length - b.length;
136
145
  });
137
- textesLegislatifsSamples = [];
138
- for (_i = 0, _uidsTextesLegislatif = uidsTextesLegislatifs; _i < _uidsTextesLegislatif.length; _i++) {
139
- uidTexteLegislatif = _uidsTextesLegislatif[_i];
140
- if (options.verbose) {
141
- console.log(" Reading \"amendements du texte l\xE9gislatif\": ".concat(uidTexteLegislatif, "\u2026"));
146
+ amendements = [];
147
+ _iterator3 = _createForOfIteratorHelper(amendementsOriginalFilesPaths);
148
+ try {
149
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
150
+ amendementOriginalFilePath = _step3.value;
151
+ amendementOriginalJson = _fsExtra["default"].readFileSync(amendementOriginalFilePath, {
152
+ encoding: "utf8"
153
+ });
154
+ amendementOriginal = JSON.parse(amendementOriginalJson);
155
+ amendement = amendementOriginal.amendement;
156
+ amendements.push(amendement);
142
157
  }
143
- amendementsOriginalFilesPaths = amendementsOriginalFilesPathsByUidTextLegislatif[uidTexteLegislatif];
144
- amendementsOriginalFilesPaths.sort(function (a, b) {
145
- return a.length === b.length ? a.localeCompare(b) : a.length - b.length;
146
- });
147
- amendements = [];
148
- _iterator3 = _createForOfIteratorHelper(amendementsOriginalFilesPaths);
149
- try {
150
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
151
- amendementOriginalFilePath = _step3.value;
152
- amendementOriginalJson = _fsExtra["default"].readFileSync(amendementOriginalFilePath, {
153
- encoding: "utf8"
154
- });
155
- amendementOriginal = JSON.parse(amendementOriginalJson);
156
- amendement = amendementOriginal.amendement;
157
- amendements.push(amendement);
158
- }
159
- } catch (err) {
160
- _iterator3.e(err);
161
- } finally {
162
- _iterator3.f();
163
- }
164
- texteLegislatif = {
165
- "@xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance",
166
- refTexteLegislatif: uidTexteLegislatif,
167
- amendements: {
168
- amendement: amendements
169
- }
170
- };
171
- textesLegislatifsSamples.push(JSON.stringify(texteLegislatif));
158
+ } catch (err) {
159
+ _iterator3.e(err);
160
+ } finally {
161
+ _iterator3.f();
172
162
  }
173
- jsonInput = (0, _quicktypeCore.jsonInputForTargetLanguage)("typescript");
174
- _context.next = 41;
175
- return jsonInput.addSource({
176
- name: "TexteLegislatif",
177
- samples: textesLegislatifsSamples
178
- });
179
- case 41:
180
- inputData = new _quicktypeCore.InputData();
181
- inputData.addInput(jsonInput);
182
- _context.next = 45;
183
- return (0, _quicktypeCore.quicktype)({
184
- inputData: inputData,
185
- lang: "typescript",
186
- rendererOptions: {
187
- acronymStyle: "camel"
163
+ texteLegislatif = {
164
+ "@xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance",
165
+ refTexteLegislatif: uidTexteLegislatif,
166
+ amendements: {
167
+ amendement: amendements
188
168
  }
189
- });
190
- case 45:
191
- _yield$quicktype = _context.sent;
192
- lines = _yield$quicktype.lines;
193
- amendementsRawTypesFilePath = _path["default"].join("src", "raw_types", "amendements.ts");
194
- _fsExtra["default"].writeFileSync(amendementsRawTypesFilePath, lines.join("\n"));
195
- return _context.abrupt("break", 50);
196
- case 50:
197
- _context.next = 3;
198
- break;
199
- case 52:
200
- _context.next = 57;
201
- break;
202
- case 54:
203
- _context.prev = 54;
204
- _context.t2 = _context["catch"](1);
205
- _iterator.e(_context.t2);
206
- case 57:
207
- _context.prev = 57;
208
- _iterator.f();
209
- return _context.finish(57);
210
- case 60:
211
- case "end":
212
- return _context.stop();
213
- }
169
+ };
170
+ textesLegislatifsSamples.push(JSON.stringify(texteLegislatif));
171
+ }
172
+ jsonInput = (0, _quicktypeCore.jsonInputForTargetLanguage)("typescript");
173
+ _context.next = 41;
174
+ return jsonInput.addSource({
175
+ name: "TexteLegislatif",
176
+ samples: textesLegislatifsSamples
177
+ });
178
+ case 41:
179
+ inputData = new _quicktypeCore.InputData();
180
+ inputData.addInput(jsonInput);
181
+ _context.next = 45;
182
+ return (0, _quicktypeCore.quicktype)({
183
+ inputData: inputData,
184
+ lang: "typescript",
185
+ rendererOptions: {
186
+ acronymStyle: "camel"
187
+ }
188
+ });
189
+ case 45:
190
+ _yield$quicktype = _context.sent;
191
+ lines = _yield$quicktype.lines;
192
+ amendementsRawTypesFilePath = _path["default"].join("src", "raw_types", "amendements.ts");
193
+ _fsExtra["default"].writeFileSync(amendementsRawTypesFilePath, lines.join("\n"));
194
+ return _context.abrupt("break", 50);
195
+ case 50:
196
+ _context.next = 3;
197
+ break;
198
+ case 52:
199
+ _context.next = 57;
200
+ break;
201
+ case 54:
202
+ _context.prev = 54;
203
+ _context.t2 = _context["catch"](1);
204
+ _iterator.e(_context.t2);
205
+ case 57:
206
+ _context.prev = 57;
207
+ _iterator.f();
208
+ return _context.finish(57);
209
+ case 60:
210
+ case "end":
211
+ return _context.stop();
214
212
  }
215
213
  }, _callee, null, [[1, 54, 57, 60], [12, 28, 31, 34]]);
216
214
  }));
@@ -222,4 +220,4 @@ generateRawTypesFromAmendements(options.dataDir).then(function () {
222
220
  console.error(error);
223
221
  process.exit(1);
224
222
  });
225
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJvcHRpb25zRGVmaW5pdGlvbnMiLCJhbGlhcyIsImhlbHAiLCJuYW1lIiwidHlwZSIsIkJvb2xlYW4iLCJkZWZhdWx0T3B0aW9uIiwiU3RyaW5nIiwib3B0aW9ucyIsImNvbW1hbmRMaW5lQXJncyIsImdlbmVyYXRlUmF3VHlwZXNGcm9tQW1lbmRlbWVudHMiLCJkYXRhRGlyIiwiZGF0YXNldHMiLCJhbWVuZGVtZW50cyIsImRhdGFzZXQiLCJzdHJ1Y3R1cmUiLCJEYXRhc2V0U3RydWN0dXJlIiwiU2VnbWVudGVkRmlsZXMiLCJvcmlnaW5hbEpzb25EaXIiLCJwYXRoIiwiam9pbiIsImZpbGVuYW1lIiwic2lsZW50IiwiY29uc29sZSIsImxvZyIsImFtZW5kZW1lbnRzT3JpZ2luYWxGaWxlc1BhdGhzQnlVaWRUZXh0TGVnaXNsYXRpZiIsIndhbGtEaXIiLCJhbWVuZGVtZW50U3BsaXRQYXRoIiwiYW1lbmRlbWVudEZpbGVuYW1lIiwibGVuZ3RoIiwiZW5kc1dpdGgiLCJ1aWRUZXh0ZUxlZ2lzbGF0aWYiLCJhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRocyIsInVuZGVmaW5lZCIsImFtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRoIiwicHVzaCIsInVpZHNUZXh0ZXNMZWdpc2xhdGlmcyIsIk9iamVjdCIsImtleXMiLCJzb3J0IiwiYSIsImIiLCJsb2NhbGVDb21wYXJlIiwidGV4dGVzTGVnaXNsYXRpZnNTYW1wbGVzIiwidmVyYm9zZSIsImFtZW5kZW1lbnRPcmlnaW5hbEpzb24iLCJmcyIsInJlYWRGaWxlU3luYyIsImVuY29kaW5nIiwiYW1lbmRlbWVudE9yaWdpbmFsIiwiSlNPTiIsInBhcnNlIiwiYW1lbmRlbWVudCIsInRleHRlTGVnaXNsYXRpZiIsInJlZlRleHRlTGVnaXNsYXRpZiIsInN0cmluZ2lmeSIsImpzb25JbnB1dCIsImpzb25JbnB1dEZvclRhcmdldExhbmd1YWdlIiwiYWRkU291cmNlIiwic2FtcGxlcyIsImlucHV0RGF0YSIsIklucHV0RGF0YSIsImFkZElucHV0IiwicXVpY2t0eXBlIiwibGFuZyIsInJlbmRlcmVyT3B0aW9ucyIsImFjcm9ueW1TdHlsZSIsImxpbmVzIiwiYW1lbmRlbWVudHNSYXdUeXBlc0ZpbGVQYXRoIiwid3JpdGVGaWxlU3luYyIsInRoZW4iLCJwcm9jZXNzIiwiZXhpdCIsImVycm9yIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvcmF3X3R5cGVzX2Zyb21fYW1lbmRlbWVudHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQge1xuICBxdWlja3R5cGUsXG4gIElucHV0RGF0YSxcbiAganNvbklucHV0Rm9yVGFyZ2V0TGFuZ3VhZ2UsXG59IGZyb20gXCJxdWlja3R5cGUtY29yZVwiXG5cbmltcG9ydCB7IGRhdGFzZXRzLCBEYXRhc2V0U3RydWN0dXJlIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcblxuY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICB7XG4gICAgYWxpYXM6IFwic1wiLFxuICAgIGhlbHA6IFwiZG9uJ3QgbG9nIGFueXRoaW5nXCIsXG4gICAgbmFtZTogXCJzaWxlbnRcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwidlwiLFxuICAgIGhlbHA6IFwidmVyYm9zZSBsb2dzXCIsXG4gICAgbmFtZTogXCJ2ZXJib3NlXCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGRlZmF1bHRPcHRpb246IHRydWUsXG4gICAgaGVscDogXCJkaXJlY3RvcnkgY29udGFpbmluZyBBc3NlbWJsw6llIG9wZW4gZGF0YSBmaWxlc1wiLFxuICAgIG5hbWU6IFwiZGF0YURpclwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbl1cbmNvbnN0IG9wdGlvbnMgPSBjb21tYW5kTGluZUFyZ3Mob3B0aW9uc0RlZmluaXRpb25zKVxuXG5hc3luYyBmdW5jdGlvbiBnZW5lcmF0ZVJhd1R5cGVzRnJvbUFtZW5kZW1lbnRzKGRhdGFEaXI6IHN0cmluZykge1xuICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgIHtcbiAgICAgICAgICBjb25zdCBvcmlnaW5hbEpzb25EaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBHZW5lcmF0aW5nIHJhdyB0eXBlcyBmcm9tICR7b3JpZ2luYWxKc29uRGlyfeKApmApXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgYW1lbmRlbWVudHNPcmlnaW5hbEZpbGVzUGF0aHNCeVVpZFRleHRMZWdpc2xhdGlmOiB7XG4gICAgICAgICAgICBbdWlkOiBzdHJpbmddOiBzdHJpbmdbXVxuICAgICAgICAgIH0gPSB7fVxuICAgICAgICAgIGZvciAoY29uc3QgYW1lbmRlbWVudFNwbGl0UGF0aCBvZiB3YWxrRGlyKG9yaWdpbmFsSnNvbkRpcikpIHtcbiAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRGaWxlbmFtZSA9XG4gICAgICAgICAgICAgIGFtZW5kZW1lbnRTcGxpdFBhdGhbYW1lbmRlbWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgaWYgKCFhbWVuZGVtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdWlkVGV4dGVMZWdpc2xhdGlmID1cbiAgICAgICAgICAgICAgYW1lbmRlbWVudFNwbGl0UGF0aFthbWVuZGVtZW50U3BsaXRQYXRoLmxlbmd0aCAtIDJdXG4gICAgICAgICAgICBsZXQgYW1lbmRlbWVudHNPcmlnaW5hbEZpbGVzUGF0aHMgPVxuICAgICAgICAgICAgICBhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRoc0J5VWlkVGV4dExlZ2lzbGF0aWZbXG4gICAgICAgICAgICAgICAgdWlkVGV4dGVMZWdpc2xhdGlmXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIGlmIChhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRocyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGFtZW5kZW1lbnRzT3JpZ2luYWxGaWxlc1BhdGhzID1cbiAgICAgICAgICAgICAgICBhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRoc0J5VWlkVGV4dExlZ2lzbGF0aWZbXG4gICAgICAgICAgICAgICAgICB1aWRUZXh0ZUxlZ2lzbGF0aWZcbiAgICAgICAgICAgICAgICBdID0gW11cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXIsXG4gICAgICAgICAgICAgIC4uLmFtZW5kZW1lbnRTcGxpdFBhdGgsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRocy5wdXNoKGFtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRoKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHVpZHNUZXh0ZXNMZWdpc2xhdGlmcyA9IE9iamVjdC5rZXlzKFxuICAgICAgICAgICAgYW1lbmRlbWVudHNPcmlnaW5hbEZpbGVzUGF0aHNCeVVpZFRleHRMZWdpc2xhdGlmLFxuICAgICAgICAgIClcbiAgICAgICAgICB1aWRzVGV4dGVzTGVnaXNsYXRpZnMuc29ydCgoYTogc3RyaW5nLCBiOiBzdHJpbmcpID0+XG4gICAgICAgICAgICBhLmxlbmd0aCA9PT0gYi5sZW5ndGggPyBhLmxvY2FsZUNvbXBhcmUoYikgOiBhLmxlbmd0aCAtIGIubGVuZ3RoLFxuICAgICAgICAgIClcbiAgICAgICAgICBjb25zdCB0ZXh0ZXNMZWdpc2xhdGlmc1NhbXBsZXMgPSBbXVxuICAgICAgICAgIGZvciAoY29uc3QgdWlkVGV4dGVMZWdpc2xhdGlmIG9mIHVpZHNUZXh0ZXNMZWdpc2xhdGlmcykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICBgICBSZWFkaW5nIFwiYW1lbmRlbWVudHMgZHUgdGV4dGUgbMOpZ2lzbGF0aWZcIjogJHt1aWRUZXh0ZUxlZ2lzbGF0aWZ94oCmYCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudHNPcmlnaW5hbEZpbGVzUGF0aHMgPVxuICAgICAgICAgICAgICBhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRoc0J5VWlkVGV4dExlZ2lzbGF0aWZbXG4gICAgICAgICAgICAgICAgdWlkVGV4dGVMZWdpc2xhdGlmXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIGFtZW5kZW1lbnRzT3JpZ2luYWxGaWxlc1BhdGhzLnNvcnQoKGE6IHN0cmluZywgYjogc3RyaW5nKSA9PlxuICAgICAgICAgICAgICBhLmxlbmd0aCA9PT0gYi5sZW5ndGggPyBhLmxvY2FsZUNvbXBhcmUoYikgOiBhLmxlbmd0aCAtIGIubGVuZ3RoLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudHMgPSBbXVxuICAgICAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50T3JpZ2luYWxGaWxlUGF0aCBvZiBhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRocykge1xuICAgICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50T3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgYW1lbmRlbWVudE9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudE9yaWdpbmFsOiBhbnkgPSBKU09OLnBhcnNlKGFtZW5kZW1lbnRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnQgPSBhbWVuZGVtZW50T3JpZ2luYWwuYW1lbmRlbWVudFxuICAgICAgICAgICAgICBhbWVuZGVtZW50cy5wdXNoKGFtZW5kZW1lbnQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB0ZXh0ZUxlZ2lzbGF0aWYgPSB7XG4gICAgICAgICAgICAgIFwiQHhtbG5zOnhzaVwiOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlXCIsXG4gICAgICAgICAgICAgIHJlZlRleHRlTGVnaXNsYXRpZjogdWlkVGV4dGVMZWdpc2xhdGlmLFxuICAgICAgICAgICAgICBhbWVuZGVtZW50czogeyBhbWVuZGVtZW50OiBhbWVuZGVtZW50cyB9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGV4dGVzTGVnaXNsYXRpZnNTYW1wbGVzLnB1c2goSlNPTi5zdHJpbmdpZnkodGV4dGVMZWdpc2xhdGlmKSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBqc29uSW5wdXQgPSBqc29uSW5wdXRGb3JUYXJnZXRMYW5ndWFnZShcInR5cGVzY3JpcHRcIilcbiAgICAgICAgICBhd2FpdCBqc29uSW5wdXQuYWRkU291cmNlKHtcbiAgICAgICAgICAgIG5hbWU6IFwiVGV4dGVMZWdpc2xhdGlmXCIsXG4gICAgICAgICAgICBzYW1wbGVzOiB0ZXh0ZXNMZWdpc2xhdGlmc1NhbXBsZXMsXG4gICAgICAgICAgfSlcbiAgICAgICAgICBjb25zdCBpbnB1dERhdGEgPSBuZXcgSW5wdXREYXRhKClcbiAgICAgICAgICBpbnB1dERhdGEuYWRkSW5wdXQoanNvbklucHV0KVxuICAgICAgICAgIGNvbnN0IHsgbGluZXMgfSA9IGF3YWl0IHF1aWNrdHlwZSh7XG4gICAgICAgICAgICBpbnB1dERhdGEsXG4gICAgICAgICAgICBsYW5nOiBcInR5cGVzY3JpcHRcIixcbiAgICAgICAgICAgIHJlbmRlcmVyT3B0aW9uczogeyBhY3JvbnltU3R5bGU6IFwiY2FtZWxcIiB9LFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBjb25zdCBhbWVuZGVtZW50c1Jhd1R5cGVzRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICBcInNyY1wiLFxuICAgICAgICAgICAgXCJyYXdfdHlwZXNcIixcbiAgICAgICAgICAgIFwiYW1lbmRlbWVudHMudHNcIixcbiAgICAgICAgICApXG4gICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhhbWVuZGVtZW50c1Jhd1R5cGVzRmlsZVBhdGgsIGxpbmVzLmpvaW4oXCJcXG5cIikpXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICB9XG4gIH1cbn1cblxuZ2VuZXJhdGVSYXdUeXBlc0Zyb21BbWVuZGVtZW50cyhvcHRpb25zLmRhdGFEaXIpXG4gIC50aGVuKCgpID0+IHtcbiAgICBwcm9jZXNzLmV4aXQoMClcbiAgfSlcbiAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXG4gICAgcHJvY2Vzcy5leGl0KDEpXG4gIH0pXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQXlDO0FBQUEsK0NBVHpDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBV0EsSUFBTUEsa0JBQWtCLEdBQUcsQ0FDekI7RUFDRUMsS0FBSyxFQUFFLEdBQUc7RUFDVkMsSUFBSSxFQUFFLG9CQUFvQjtFQUMxQkMsSUFBSSxFQUFFLFFBQVE7RUFDZEMsSUFBSSxFQUFFQztBQUNSLENBQUMsRUFDRDtFQUNFSixLQUFLLEVBQUUsR0FBRztFQUNWQyxJQUFJLEVBQUUsY0FBYztFQUNwQkMsSUFBSSxFQUFFLFNBQVM7RUFDZkMsSUFBSSxFQUFFQztBQUNSLENBQUMsRUFDRDtFQUNFQyxhQUFhLEVBQUUsSUFBSTtFQUNuQkosSUFBSSxFQUFFLGdEQUFnRDtFQUN0REMsSUFBSSxFQUFFLFNBQVM7RUFDZkMsSUFBSSxFQUFFRztBQUNSLENBQUMsQ0FDRjtBQUNELElBQU1DLE9BQU8sR0FBRyxJQUFBQywyQkFBZSxFQUFDVCxrQkFBa0IsQ0FBQztBQUFBLFNBRXBDVSwrQkFBK0I7RUFBQTtBQUFBO0FBQUE7RUFBQSw4RkFBOUMsaUJBQStDQyxPQUFlO0lBQUE7SUFBQTtNQUFBO1FBQUE7VUFBQTtZQUFBLHVDQUN0Q0Msa0JBQVEsQ0FBQ0MsV0FBVztZQUFBO1lBQUE7VUFBQTtZQUFBO2NBQUE7Y0FBQTtZQUFBO1lBQS9CQyxPQUFPO1lBQUEsY0FDUkEsT0FBTyxDQUFDQyxTQUFTO1lBQUEsZ0NBQ2xCQywwQkFBZ0IsQ0FBQ0MsY0FBYztZQUFBO1VBQUE7WUFFMUJDLGVBQXVCLEdBQUdDLGdCQUFJLENBQUNDLElBQUksQ0FBQ1QsT0FBTyxFQUFFRyxPQUFPLENBQUNPLFFBQVEsQ0FBQztZQUNwRSxJQUFJLENBQUNiLE9BQU8sQ0FBQ2MsTUFBTSxFQUFFO2NBQ25CQyxPQUFPLENBQUNDLEdBQUcscUNBQThCTixlQUFlLFlBQUk7WUFDOUQ7WUFFTU8sZ0RBRUwsR0FBRyxDQUFDLENBQUM7WUFBQSx3Q0FDNEIsSUFBQUMscUJBQU8sRUFBQ1IsZUFBZSxDQUFDO1lBQUE7WUFBQTtVQUFBO1lBQUE7Y0FBQTtjQUFBO1lBQUE7WUFBL0NTLG1CQUFtQjtZQUN0QkMsa0JBQWtCLEdBQ3RCRCxtQkFBbUIsQ0FBQ0EsbUJBQW1CLENBQUNFLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFBQSxJQUNoREQsa0JBQWtCLENBQUNFLFFBQVEsQ0FBQyxPQUFPLENBQUM7Y0FBQTtjQUFBO1lBQUE7WUFBQTtVQUFBO1lBR25DQyxtQkFBa0IsR0FDdEJKLG1CQUFtQixDQUFDQSxtQkFBbUIsQ0FBQ0UsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNqREcsOEJBQTZCLEdBQy9CUCxnREFBZ0QsQ0FDOUNNLG1CQUFrQixDQUNuQjtZQUNILElBQUlDLDhCQUE2QixLQUFLQyxTQUFTLEVBQUU7Y0FDL0NELDhCQUE2QixHQUMzQlAsZ0RBQWdELENBQzlDTSxtQkFBa0IsQ0FDbkIsR0FBRyxFQUFFO1lBQ1Y7WUFDTUcsMkJBQTBCLEdBQUdmLGdCQUFJLENBQUNDLElBQUksT0FBVEQsZ0JBQUksR0FDckNELGVBQWUsNEJBQ1pTLG1CQUFtQixHQUN2QjtZQUNESyw4QkFBNkIsQ0FBQ0csSUFBSSxDQUFDRCwyQkFBMEIsQ0FBQztVQUFBO1lBQUE7WUFBQTtVQUFBO1lBQUE7WUFBQTtVQUFBO1lBQUE7WUFBQTtZQUFBO1VBQUE7WUFBQTtZQUFBO1lBQUE7VUFBQTtZQUcxREUscUJBQXFCLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBSSxDQUN2Q2IsZ0RBQWdELENBQ2pEO1lBQ0RXLHFCQUFxQixDQUFDRyxJQUFJLENBQUMsVUFBQ0MsQ0FBUyxFQUFFQyxDQUFTO2NBQUEsT0FDOUNELENBQUMsQ0FBQ1gsTUFBTSxLQUFLWSxDQUFDLENBQUNaLE1BQU0sR0FBR1csQ0FBQyxDQUFDRSxhQUFhLENBQUNELENBQUMsQ0FBQyxHQUFHRCxDQUFDLENBQUNYLE1BQU0sR0FBR1ksQ0FBQyxDQUFDWixNQUFNO1lBQUEsRUFDakU7WUFDS2Msd0JBQXdCLEdBQUcsRUFBRTtZQUNuQyxxQ0FBaUNQLHFCQUFxQiwyQ0FBRTtjQUE3Q0wsa0JBQWtCO2NBQzNCLElBQUl2QixPQUFPLENBQUNvQyxPQUFPLEVBQUU7Z0JBQ25CckIsT0FBTyxDQUFDQyxHQUFHLDZEQUN1Q08sa0JBQWtCLFlBQ25FO2NBQ0g7Y0FDTUMsNkJBQTZCLEdBQ2pDUCxnREFBZ0QsQ0FDOUNNLGtCQUFrQixDQUNuQjtjQUNIQyw2QkFBNkIsQ0FBQ08sSUFBSSxDQUFDLFVBQUNDLENBQVMsRUFBRUMsQ0FBUztnQkFBQSxPQUN0REQsQ0FBQyxDQUFDWCxNQUFNLEtBQUtZLENBQUMsQ0FBQ1osTUFBTSxHQUFHVyxDQUFDLENBQUNFLGFBQWEsQ0FBQ0QsQ0FBQyxDQUFDLEdBQUdELENBQUMsQ0FBQ1gsTUFBTSxHQUFHWSxDQUFDLENBQUNaLE1BQU07Y0FBQSxFQUNqRTtjQUNLaEIsV0FBVyxHQUFHLEVBQUU7Y0FBQSx3Q0FDbUJtQiw2QkFBNkI7Y0FBQTtnQkFBdEUsdURBQXdFO2tCQUE3REUsMEJBQTBCO2tCQUM3Qlcsc0JBQThCLEdBQUdDLG1CQUFFLENBQUNDLFlBQVksQ0FDcERiLDBCQUEwQixFQUMxQjtvQkFDRWMsUUFBUSxFQUFFO2tCQUNaLENBQUMsQ0FDRjtrQkFDS0Msa0JBQXVCLEdBQUdDLElBQUksQ0FBQ0MsS0FBSyxDQUFDTixzQkFBc0IsQ0FBQztrQkFDNURPLFVBQVUsR0FBR0gsa0JBQWtCLENBQUNHLFVBQVU7a0JBQ2hEdkMsV0FBVyxDQUFDc0IsSUFBSSxDQUFDaUIsVUFBVSxDQUFDO2dCQUM5QjtjQUFDO2dCQUFBO2NBQUE7Z0JBQUE7Y0FBQTtjQUNLQyxlQUFlLEdBQUc7Z0JBQ3RCLFlBQVksRUFBRSwyQ0FBMkM7Z0JBQ3pEQyxrQkFBa0IsRUFBRXZCLGtCQUFrQjtnQkFDdENsQixXQUFXLEVBQUU7a0JBQUV1QyxVQUFVLEVBQUV2QztnQkFBWTtjQUN6QyxDQUFDO2NBQ0Q4Qix3QkFBd0IsQ0FBQ1IsSUFBSSxDQUFDZSxJQUFJLENBQUNLLFNBQVMsQ0FBQ0YsZUFBZSxDQUFDLENBQUM7WUFDaEU7WUFFTUcsU0FBUyxHQUFHLElBQUFDLHlDQUEwQixFQUFDLFlBQVksQ0FBQztZQUFBO1lBQUEsT0FDcERELFNBQVMsQ0FBQ0UsU0FBUyxDQUFDO2NBQ3hCdkQsSUFBSSxFQUFFLGlCQUFpQjtjQUN2QndELE9BQU8sRUFBRWhCO1lBQ1gsQ0FBQyxDQUFDO1VBQUE7WUFDSWlCLFNBQVMsR0FBRyxJQUFJQyx3QkFBUyxFQUFFO1lBQ2pDRCxTQUFTLENBQUNFLFFBQVEsQ0FBQ04sU0FBUyxDQUFDO1lBQUE7WUFBQSxPQUNMLElBQUFPLHdCQUFTLEVBQUM7Y0FDaENILFNBQVMsRUFBVEEsU0FBUztjQUNUSSxJQUFJLEVBQUUsWUFBWTtjQUNsQkMsZUFBZSxFQUFFO2dCQUFFQyxZQUFZLEVBQUU7Y0FBUTtZQUMzQyxDQUFDLENBQUM7VUFBQTtZQUFBO1lBSk1DLEtBQUssb0JBQUxBLEtBQUs7WUFNUEMsMkJBQTJCLEdBQUdqRCxnQkFBSSxDQUFDQyxJQUFJLENBQzNDLEtBQUssRUFDTCxXQUFXLEVBQ1gsZ0JBQWdCLENBQ2pCO1lBQ0QwQixtQkFBRSxDQUFDdUIsYUFBYSxDQUFDRCwyQkFBMkIsRUFBRUQsS0FBSyxDQUFDL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQUE7VUFBQTtZQUFBO1lBQUE7VUFBQTtZQUFBO1lBQUE7VUFBQTtZQUFBO1lBQUE7WUFBQTtVQUFBO1lBQUE7WUFBQTtZQUFBO1VBQUE7VUFBQTtZQUFBO1FBQUE7TUFBQTtJQUFBO0VBQUEsQ0FLeEU7RUFBQTtBQUFBO0FBRURWLCtCQUErQixDQUFDRixPQUFPLENBQUNHLE9BQU8sQ0FBQyxDQUM3QzJELElBQUksQ0FBQyxZQUFNO0VBQ1ZDLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNqQixDQUFDLENBQUMsU0FDSSxDQUFDLFVBQUNDLEtBQUssRUFBSztFQUNoQmxELE9BQU8sQ0FBQ2tELEtBQUssQ0FBQ0EsS0FBSyxDQUFDO0VBQ3BCRixPQUFPLENBQUNDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDakIsQ0FBQyxDQUFDIn0=
223
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJvcHRpb25zRGVmaW5pdGlvbnMiLCJhbGlhcyIsImhlbHAiLCJuYW1lIiwidHlwZSIsIkJvb2xlYW4iLCJkZWZhdWx0T3B0aW9uIiwiU3RyaW5nIiwib3B0aW9ucyIsImNvbW1hbmRMaW5lQXJncyIsImdlbmVyYXRlUmF3VHlwZXNGcm9tQW1lbmRlbWVudHMiLCJkYXRhRGlyIiwiZGF0YXNldHMiLCJhbWVuZGVtZW50cyIsImRhdGFzZXQiLCJzdHJ1Y3R1cmUiLCJEYXRhc2V0U3RydWN0dXJlIiwiU2VnbWVudGVkRmlsZXMiLCJvcmlnaW5hbEpzb25EaXIiLCJwYXRoIiwiam9pbiIsImZpbGVuYW1lIiwic2lsZW50IiwiY29uc29sZSIsImxvZyIsImFtZW5kZW1lbnRzT3JpZ2luYWxGaWxlc1BhdGhzQnlVaWRUZXh0TGVnaXNsYXRpZiIsIndhbGtEaXIiLCJhbWVuZGVtZW50U3BsaXRQYXRoIiwiYW1lbmRlbWVudEZpbGVuYW1lIiwibGVuZ3RoIiwiZW5kc1dpdGgiLCJ1aWRUZXh0ZUxlZ2lzbGF0aWYiLCJhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRocyIsInVuZGVmaW5lZCIsImFtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRoIiwicHVzaCIsInVpZHNUZXh0ZXNMZWdpc2xhdGlmcyIsIk9iamVjdCIsImtleXMiLCJzb3J0IiwiYSIsImIiLCJsb2NhbGVDb21wYXJlIiwidGV4dGVzTGVnaXNsYXRpZnNTYW1wbGVzIiwidmVyYm9zZSIsImFtZW5kZW1lbnRPcmlnaW5hbEpzb24iLCJmcyIsInJlYWRGaWxlU3luYyIsImVuY29kaW5nIiwiYW1lbmRlbWVudE9yaWdpbmFsIiwiSlNPTiIsInBhcnNlIiwiYW1lbmRlbWVudCIsInRleHRlTGVnaXNsYXRpZiIsInJlZlRleHRlTGVnaXNsYXRpZiIsInN0cmluZ2lmeSIsImpzb25JbnB1dCIsImpzb25JbnB1dEZvclRhcmdldExhbmd1YWdlIiwiYWRkU291cmNlIiwic2FtcGxlcyIsImlucHV0RGF0YSIsIklucHV0RGF0YSIsImFkZElucHV0IiwicXVpY2t0eXBlIiwibGFuZyIsInJlbmRlcmVyT3B0aW9ucyIsImFjcm9ueW1TdHlsZSIsImxpbmVzIiwiYW1lbmRlbWVudHNSYXdUeXBlc0ZpbGVQYXRoIiwid3JpdGVGaWxlU3luYyIsInRoZW4iLCJwcm9jZXNzIiwiZXhpdCIsImVycm9yIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvcmF3X3R5cGVzX2Zyb21fYW1lbmRlbWVudHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQge1xuICBxdWlja3R5cGUsXG4gIElucHV0RGF0YSxcbiAganNvbklucHV0Rm9yVGFyZ2V0TGFuZ3VhZ2UsXG59IGZyb20gXCJxdWlja3R5cGUtY29yZVwiXG5cbmltcG9ydCB7IGRhdGFzZXRzLCBEYXRhc2V0U3RydWN0dXJlIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcblxuY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICB7XG4gICAgYWxpYXM6IFwic1wiLFxuICAgIGhlbHA6IFwiZG9uJ3QgbG9nIGFueXRoaW5nXCIsXG4gICAgbmFtZTogXCJzaWxlbnRcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwidlwiLFxuICAgIGhlbHA6IFwidmVyYm9zZSBsb2dzXCIsXG4gICAgbmFtZTogXCJ2ZXJib3NlXCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGRlZmF1bHRPcHRpb246IHRydWUsXG4gICAgaGVscDogXCJkaXJlY3RvcnkgY29udGFpbmluZyBBc3NlbWJsw6llIG9wZW4gZGF0YSBmaWxlc1wiLFxuICAgIG5hbWU6IFwiZGF0YURpclwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbl1cbmNvbnN0IG9wdGlvbnMgPSBjb21tYW5kTGluZUFyZ3Mob3B0aW9uc0RlZmluaXRpb25zKVxuXG5hc3luYyBmdW5jdGlvbiBnZW5lcmF0ZVJhd1R5cGVzRnJvbUFtZW5kZW1lbnRzKGRhdGFEaXI6IHN0cmluZykge1xuICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgIHtcbiAgICAgICAgICBjb25zdCBvcmlnaW5hbEpzb25EaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBHZW5lcmF0aW5nIHJhdyB0eXBlcyBmcm9tICR7b3JpZ2luYWxKc29uRGlyfeKApmApXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgYW1lbmRlbWVudHNPcmlnaW5hbEZpbGVzUGF0aHNCeVVpZFRleHRMZWdpc2xhdGlmOiB7XG4gICAgICAgICAgICBbdWlkOiBzdHJpbmddOiBzdHJpbmdbXVxuICAgICAgICAgIH0gPSB7fVxuICAgICAgICAgIGZvciAoY29uc3QgYW1lbmRlbWVudFNwbGl0UGF0aCBvZiB3YWxrRGlyKG9yaWdpbmFsSnNvbkRpcikpIHtcbiAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRGaWxlbmFtZSA9XG4gICAgICAgICAgICAgIGFtZW5kZW1lbnRTcGxpdFBhdGhbYW1lbmRlbWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgaWYgKCFhbWVuZGVtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdWlkVGV4dGVMZWdpc2xhdGlmID1cbiAgICAgICAgICAgICAgYW1lbmRlbWVudFNwbGl0UGF0aFthbWVuZGVtZW50U3BsaXRQYXRoLmxlbmd0aCAtIDJdXG4gICAgICAgICAgICBsZXQgYW1lbmRlbWVudHNPcmlnaW5hbEZpbGVzUGF0aHMgPVxuICAgICAgICAgICAgICBhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRoc0J5VWlkVGV4dExlZ2lzbGF0aWZbXG4gICAgICAgICAgICAgICAgdWlkVGV4dGVMZWdpc2xhdGlmXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIGlmIChhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRocyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGFtZW5kZW1lbnRzT3JpZ2luYWxGaWxlc1BhdGhzID1cbiAgICAgICAgICAgICAgICBhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRoc0J5VWlkVGV4dExlZ2lzbGF0aWZbXG4gICAgICAgICAgICAgICAgICB1aWRUZXh0ZUxlZ2lzbGF0aWZcbiAgICAgICAgICAgICAgICBdID0gW11cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXIsXG4gICAgICAgICAgICAgIC4uLmFtZW5kZW1lbnRTcGxpdFBhdGgsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRocy5wdXNoKGFtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRoKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHVpZHNUZXh0ZXNMZWdpc2xhdGlmcyA9IE9iamVjdC5rZXlzKFxuICAgICAgICAgICAgYW1lbmRlbWVudHNPcmlnaW5hbEZpbGVzUGF0aHNCeVVpZFRleHRMZWdpc2xhdGlmLFxuICAgICAgICAgIClcbiAgICAgICAgICB1aWRzVGV4dGVzTGVnaXNsYXRpZnMuc29ydCgoYTogc3RyaW5nLCBiOiBzdHJpbmcpID0+XG4gICAgICAgICAgICBhLmxlbmd0aCA9PT0gYi5sZW5ndGggPyBhLmxvY2FsZUNvbXBhcmUoYikgOiBhLmxlbmd0aCAtIGIubGVuZ3RoLFxuICAgICAgICAgIClcbiAgICAgICAgICBjb25zdCB0ZXh0ZXNMZWdpc2xhdGlmc1NhbXBsZXMgPSBbXVxuICAgICAgICAgIGZvciAoY29uc3QgdWlkVGV4dGVMZWdpc2xhdGlmIG9mIHVpZHNUZXh0ZXNMZWdpc2xhdGlmcykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICBgICBSZWFkaW5nIFwiYW1lbmRlbWVudHMgZHUgdGV4dGUgbMOpZ2lzbGF0aWZcIjogJHt1aWRUZXh0ZUxlZ2lzbGF0aWZ94oCmYCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudHNPcmlnaW5hbEZpbGVzUGF0aHMgPVxuICAgICAgICAgICAgICBhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRoc0J5VWlkVGV4dExlZ2lzbGF0aWZbXG4gICAgICAgICAgICAgICAgdWlkVGV4dGVMZWdpc2xhdGlmXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIGFtZW5kZW1lbnRzT3JpZ2luYWxGaWxlc1BhdGhzLnNvcnQoKGE6IHN0cmluZywgYjogc3RyaW5nKSA9PlxuICAgICAgICAgICAgICBhLmxlbmd0aCA9PT0gYi5sZW5ndGggPyBhLmxvY2FsZUNvbXBhcmUoYikgOiBhLmxlbmd0aCAtIGIubGVuZ3RoLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudHMgPSBbXVxuICAgICAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50T3JpZ2luYWxGaWxlUGF0aCBvZiBhbWVuZGVtZW50c09yaWdpbmFsRmlsZXNQYXRocykge1xuICAgICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50T3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgYW1lbmRlbWVudE9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudE9yaWdpbmFsOiBhbnkgPSBKU09OLnBhcnNlKGFtZW5kZW1lbnRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnQgPSBhbWVuZGVtZW50T3JpZ2luYWwuYW1lbmRlbWVudFxuICAgICAgICAgICAgICBhbWVuZGVtZW50cy5wdXNoKGFtZW5kZW1lbnQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB0ZXh0ZUxlZ2lzbGF0aWYgPSB7XG4gICAgICAgICAgICAgIFwiQHhtbG5zOnhzaVwiOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlXCIsXG4gICAgICAgICAgICAgIHJlZlRleHRlTGVnaXNsYXRpZjogdWlkVGV4dGVMZWdpc2xhdGlmLFxuICAgICAgICAgICAgICBhbWVuZGVtZW50czogeyBhbWVuZGVtZW50OiBhbWVuZGVtZW50cyB9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGV4dGVzTGVnaXNsYXRpZnNTYW1wbGVzLnB1c2goSlNPTi5zdHJpbmdpZnkodGV4dGVMZWdpc2xhdGlmKSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBqc29uSW5wdXQgPSBqc29uSW5wdXRGb3JUYXJnZXRMYW5ndWFnZShcInR5cGVzY3JpcHRcIilcbiAgICAgICAgICBhd2FpdCBqc29uSW5wdXQuYWRkU291cmNlKHtcbiAgICAgICAgICAgIG5hbWU6IFwiVGV4dGVMZWdpc2xhdGlmXCIsXG4gICAgICAgICAgICBzYW1wbGVzOiB0ZXh0ZXNMZWdpc2xhdGlmc1NhbXBsZXMsXG4gICAgICAgICAgfSlcbiAgICAgICAgICBjb25zdCBpbnB1dERhdGEgPSBuZXcgSW5wdXREYXRhKClcbiAgICAgICAgICBpbnB1dERhdGEuYWRkSW5wdXQoanNvbklucHV0KVxuICAgICAgICAgIGNvbnN0IHsgbGluZXMgfSA9IGF3YWl0IHF1aWNrdHlwZSh7XG4gICAgICAgICAgICBpbnB1dERhdGEsXG4gICAgICAgICAgICBsYW5nOiBcInR5cGVzY3JpcHRcIixcbiAgICAgICAgICAgIHJlbmRlcmVyT3B0aW9uczogeyBhY3JvbnltU3R5bGU6IFwiY2FtZWxcIiB9LFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBjb25zdCBhbWVuZGVtZW50c1Jhd1R5cGVzRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICBcInNyY1wiLFxuICAgICAgICAgICAgXCJyYXdfdHlwZXNcIixcbiAgICAgICAgICAgIFwiYW1lbmRlbWVudHMudHNcIixcbiAgICAgICAgICApXG4gICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhhbWVuZGVtZW50c1Jhd1R5cGVzRmlsZVBhdGgsIGxpbmVzLmpvaW4oXCJcXG5cIikpXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICB9XG4gIH1cbn1cblxuZ2VuZXJhdGVSYXdUeXBlc0Zyb21BbWVuZGVtZW50cyhvcHRpb25zLmRhdGFEaXIpXG4gIC50aGVuKCgpID0+IHtcbiAgICBwcm9jZXNzLmV4aXQoMClcbiAgfSlcbiAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXG4gICAgcHJvY2Vzcy5leGl0KDEpXG4gIH0pXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQXlDO0FBQUEsK0NBVHpDO0FBQUE7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