@tricoteuses/assemblee 1.7.0 → 1.7.2

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 (127) hide show
  1. package/README.md +9 -27
  2. package/lib/bugs/acteur-00010/plugin.test.js +4 -4
  3. package/lib/bugs/acteur-00010/plugin.test.mjs +1 -1
  4. package/lib/bugs/acteur-00010.js +15 -16
  5. package/lib/bugs/acteur-00010.mjs +1 -1
  6. package/lib/bugs/agenda-00002/plugin.test.js +4 -4
  7. package/lib/bugs/agenda-00002/plugin.test.mjs +1 -1
  8. package/lib/bugs/agenda-00002.js +27 -28
  9. package/lib/bugs/agenda-00002.mjs +3 -3
  10. package/lib/bugs/agenda-00008/plugin.test.js +4 -4
  11. package/lib/bugs/agenda-00008/plugin.test.mjs +1 -1
  12. package/lib/bugs/agenda-00008.js +15 -16
  13. package/lib/bugs/agenda-00008.mjs +1 -1
  14. package/lib/bugs/agenda-00011/plugin.test.js +5 -5
  15. package/lib/bugs/agenda-00011/plugin.test.mjs +1 -1
  16. package/lib/bugs/agenda-00011.js +21 -22
  17. package/lib/bugs/agenda-00011.mjs +3 -3
  18. package/lib/bugs.js +17 -19
  19. package/lib/bugs.mjs +3 -3
  20. package/lib/cleaners/actes_legislatifs.js +5 -5
  21. package/lib/cleaners/acteurs.js +5 -5
  22. package/lib/cleaners/acteurs.mjs +1 -1
  23. package/lib/cleaners/amendements.js +5 -5
  24. package/lib/cleaners/documents.js +5 -5
  25. package/lib/cleaners/dossiers_legislatifs.js +5 -5
  26. package/lib/cleaners/organes.js +2 -2
  27. package/lib/cleaners/reunions.js +5 -5
  28. package/lib/cleaners/scrutins.js +8 -8
  29. package/lib/cleaners/xml.js +8 -8
  30. package/lib/cleaners/xml.mjs +1 -1
  31. package/lib/datasets.d.ts +2 -2
  32. package/lib/datasets.js +53 -132
  33. package/lib/datasets.mjs +40 -118
  34. package/lib/dates.js +1 -2
  35. package/lib/dossiers_legislatifs.js +8 -8
  36. package/lib/file_systems.js +18 -16
  37. package/lib/file_systems.mjs +6 -5
  38. package/lib/git.d.ts +1 -0
  39. package/lib/git.js +21 -5
  40. package/lib/git.mjs +16 -1
  41. package/lib/inserters.js +3 -3
  42. package/lib/loaders.d.ts +14 -40
  43. package/lib/loaders.js +580 -1086
  44. package/lib/loaders.mjs +110 -353
  45. package/lib/parsers/documents.js +10 -10
  46. package/lib/parsers/documents.mjs +1 -1
  47. package/lib/parsers/recherche_amendements.js +17 -15
  48. package/lib/parsers/recherche_amendements.mjs +1 -1
  49. package/lib/raw_types/acteurs_et_organes.js +9 -9
  50. package/lib/raw_types/acteurs_et_organes.mjs +1 -1
  51. package/lib/raw_types/agendas.js +9 -9
  52. package/lib/raw_types/agendas.mjs +1 -1
  53. package/lib/raw_types/amendements.js +9 -9
  54. package/lib/raw_types/amendements.mjs +1 -1
  55. package/lib/raw_types/debats.d.ts +26 -78
  56. package/lib/raw_types/debats.js +49 -242
  57. package/lib/raw_types/debats.mjs +41 -234
  58. package/lib/raw_types/dossiers_legislatifs.js +9 -9
  59. package/lib/raw_types/dossiers_legislatifs.mjs +1 -1
  60. package/lib/raw_types/questions.js +9 -9
  61. package/lib/raw_types/questions.mjs +1 -1
  62. package/lib/raw_types/scrutins.js +9 -9
  63. package/lib/raw_types/scrutins.mjs +1 -1
  64. package/lib/scripts/bugs_helper.js +17 -18
  65. package/lib/scripts/bugs_helper.mjs +3 -3
  66. package/lib/scripts/clean_reorganized_data.js +183 -561
  67. package/lib/scripts/clean_reorganized_data.mjs +111 -410
  68. package/lib/scripts/diff_amendements.js +11 -24
  69. package/lib/scripts/diff_amendements.mjs +3 -17
  70. package/lib/scripts/document_dossiers_legislatifs.js +24 -27
  71. package/lib/scripts/document_dossiers_legislatifs.mjs +3 -3
  72. package/lib/scripts/get_today_reunions.js +5 -8
  73. package/lib/scripts/get_today_reunions.mjs +3 -7
  74. package/lib/scripts/merge_scrutins.js +11 -24
  75. package/lib/scripts/merge_scrutins.mjs +3 -17
  76. package/lib/scripts/parse_textes_lois.js +8 -38
  77. package/lib/scripts/parse_textes_lois.mjs +3 -33
  78. package/lib/scripts/raw_types_from_amendements.js +14 -27
  79. package/lib/scripts/raw_types_from_amendements.mjs +3 -17
  80. package/lib/scripts/reorganize_data.js +204 -456
  81. package/lib/scripts/reorganize_data.mjs +68 -260
  82. package/lib/scripts/retrieve_deputes_photos.d.ts +3 -1
  83. package/lib/scripts/retrieve_deputes_photos.js +146 -172
  84. package/lib/scripts/retrieve_deputes_photos.mjs +74 -98
  85. package/lib/scripts/retrieve_documents.js +207 -156
  86. package/lib/scripts/retrieve_documents.mjs +116 -128
  87. package/lib/scripts/retrieve_open_data.js +272 -249
  88. package/lib/scripts/retrieve_open_data.mjs +109 -123
  89. package/lib/scripts/retrieve_pending_amendments.js +16 -67
  90. package/lib/scripts/retrieve_pending_amendments.mjs +4 -55
  91. package/lib/scripts/retrieve_senateurs_photos.js +20 -77
  92. package/lib/scripts/retrieve_senateurs_photos.mjs +5 -61
  93. package/lib/scripts/retrieve_textes_lois.js +18 -46
  94. package/lib/scripts/retrieve_textes_lois.mjs +3 -33
  95. package/lib/scripts/shared/cli_helpers.d.ts +66 -0
  96. package/lib/scripts/shared/cli_helpers.js +90 -0
  97. package/lib/scripts/shared/cli_helpers.mjs +72 -0
  98. package/lib/scripts/test_iter_load.d.ts +1 -0
  99. package/lib/scripts/test_iter_load.js +154 -0
  100. package/lib/scripts/test_iter_load.mjs +71 -0
  101. package/lib/scripts/test_load.js +4 -15
  102. package/lib/scripts/test_load.mjs +3 -14
  103. package/lib/scripts/test_load_big_files.js +4 -15
  104. package/lib/scripts/test_load_big_files.mjs +3 -14
  105. package/lib/scripts/validate_json.js +15 -16
  106. package/lib/scripts/validate_json.mjs +3 -3
  107. package/lib/types/acteurs_et_organes.js +9 -9
  108. package/lib/types/acteurs_et_organes.mjs +1 -1
  109. package/lib/types/agendas.js +9 -9
  110. package/lib/types/agendas.mjs +1 -1
  111. package/lib/types/amendements.js +9 -9
  112. package/lib/types/amendements.mjs +1 -1
  113. package/lib/types/debats.d.ts +27 -79
  114. package/lib/types/debats.js +48 -241
  115. package/lib/types/debats.mjs +40 -233
  116. package/lib/types/dossiers_legislatifs.js +9 -9
  117. package/lib/types/dossiers_legislatifs.mjs +1 -1
  118. package/lib/types/legislatures.d.ts +4 -4
  119. package/lib/types/legislatures.js +5 -5
  120. package/lib/types/legislatures.mjs +5 -5
  121. package/lib/types/questions.js +9 -9
  122. package/lib/types/questions.mjs +1 -1
  123. package/lib/types/scrutins.js +9 -9
  124. package/lib/types/scrutins.mjs +1 -1
  125. package/lib/urls.js +2 -2
  126. package/lib/urls.mjs +1 -1
  127. package/package.json +9 -7
@@ -29,13 +29,12 @@ require("core-js/modules/es.array.iterator.js");
29
29
  require("core-js/modules/es.array.join.js");
30
30
  require("core-js/modules/es.array.slice.js");
31
31
  require("core-js/modules/es.array.sort.js");
32
+ require("core-js/modules/es.date.to-json.js");
32
33
  require("core-js/modules/es.object.to-string.js");
33
34
  require("core-js/modules/es.object.values.js");
34
35
  require("core-js/modules/es.promise.js");
35
36
  require("core-js/modules/es.regexp.exec.js");
36
37
  require("core-js/modules/es.string.match.js");
37
- require("core-js/modules/es.string.replace.js");
38
- require("core-js/modules/es.string.trim.js");
39
38
  require("core-js/modules/web.dom-collections.iterator.js");
40
39
  var _child_process = require("child_process");
41
40
  var _commandLineArgs = _interopRequireDefault(require("command-line-args"));
@@ -44,58 +43,24 @@ var _path = _interopRequireDefault(require("path"));
44
43
  var _datasets = require("../datasets");
45
44
  var git = _interopRequireWildcard(require("../git"));
46
45
  var _loaders = require("../loaders");
46
+ var _retrieve_deputes_photos = require("./retrieve_deputes_photos");
47
47
  var _acteurs_et_organes = require("../types/acteurs_et_organes");
48
+ var _cli_helpers = require("./shared/cli_helpers");
48
49
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
49
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
50
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
51
- 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 e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
52
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
50
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
51
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
52
+ 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 e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
53
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
53
54
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
54
55
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
55
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
56
- 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; } } }; }
57
- 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); }
58
- 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; }
59
- 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); } }
60
- 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); }); }; } // import stream from "stream"
56
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
57
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, 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 o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
58
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
59
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
60
+ function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
61
+ function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; } // import stream from "stream"
61
62
  // import util from "util"
62
- var optionsDefinitions = [{
63
- alias: "C",
64
- help: "clone repositories from given group (or organization) git URL",
65
- name: "clone",
66
- type: String
67
- }, {
68
- alias: "c",
69
- help: "commit photos",
70
- name: "commit",
71
- type: Boolean
72
- }, {
73
- alias: "f",
74
- help: "fetch sénateurs' pictures instead of retrieving them from files",
75
- name: "fetch",
76
- type: Boolean
77
- }, {
78
- alias: "p",
79
- help: "pull repositories before proceeding",
80
- name: "pull",
81
- type: Boolean
82
- }, {
83
- alias: "r",
84
- help: "push commit to given remote",
85
- multiple: true,
86
- name: "remote",
87
- type: String
88
- }, {
89
- alias: "s",
90
- help: "don't log anything",
91
- name: "silent",
92
- type: Boolean
93
- }, {
94
- defaultOption: true,
95
- help: "directory containing Assemblée open data files",
96
- name: "dataDir",
97
- type: String
98
- }];
63
+ var optionsDefinitions = [_cli_helpers.cloneOption, _cli_helpers.commitOption, _cli_helpers.pullOption, _cli_helpers.remoteOption, _cli_helpers.silentOption, _cli_helpers.dataDirDefaultOption, _cli_helpers.fetchOption];
99
64
  var options = (0, _commandLineArgs["default"])(optionsDefinitions);
100
65
  // const pipeline = util.promisify(stream.pipeline)
101
66
  function retrievePhotosSenateurs() {
@@ -103,7 +68,7 @@ function retrievePhotosSenateurs() {
103
68
  }
104
69
  function _retrievePhotosSenateurs() {
105
70
  _retrievePhotosSenateurs = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
106
- var dataDir, _loadAssembleeData, acteurByUid, senateurs, gitGroupUrl, photosDirName, photosDir, missingPhotoFilePath, _iterator3, _step3, senateur, ident, senateurStem, photoFilename, photoFilePath, photoTempFilename, photoTempFilePath, urlPhoto, _iterator4, _step4, _senateur2, _ident, _senateurStem2, photoByIdSenateur, rowsFilenames, senateurIndex, rowIndex, row, photosFilenames, _iterator5, _step5, _step5$value, columnIndex, _senateur, _senateurStem, _photoFilename, rowFilename, _i, _rowsFilenames, _rowFilename, jsonFilePath;
71
+ var dataDir, _loadAssembleeData, acteurByUid, senateurs, photosDirName, photosDir, missingPhotoFilePath, _iterator3, _step3, senateur, ident, senateurStem, photoFilename, photoFilePath, photoTempFilename, photoTempFilePath, urlPhoto, _iterator4, _step4, _senateur2, _ident, _senateurStem2, photoByIdSenateur, rowsFilenames, senateurIndex, rowIndex, row, photosFilenames, _iterator5, _step5, _step5$value, columnIndex, _senateur, _senateurStem, _photoFilename, rowFilename, _i, _rowsFilenames, _rowFilename, jsonFilePath;
107
72
  return _regeneratorRuntime().wrap(function _callee$(_context) {
108
73
  while (1) switch (_context.prev = _context.next) {
109
74
  case 0:
@@ -145,31 +110,9 @@ function _retrievePhotosSenateurs() {
145
110
  }).sort(function (a, b) {
146
111
  return a.uid.length === b.uid.length ? a.uid.localeCompare(b.uid) : a.uid.length - b.uid.length;
147
112
  });
148
- gitGroupUrl = options.clone ? options.clone.trim().replace(/\/+$/, "") : undefined;
149
113
  photosDirName = "photos_senateurs";
150
- if (gitGroupUrl !== undefined) {
151
- (0, _child_process.execSync)("git clone ".concat(gitGroupUrl, "/").concat(photosDirName, ".git"), {
152
- cwd: dataDir,
153
- env: process.env,
154
- encoding: "utf-8",
155
- stdio: ["ignore", "ignore", "pipe"]
156
- });
157
- }
158
114
  photosDir = _path["default"].join(dataDir, photosDirName);
159
- if (options.pull) {
160
- (0, _child_process.execSync)("git reset --hard origin/master", {
161
- cwd: photosDir,
162
- env: process.env,
163
- encoding: "utf-8",
164
- stdio: ["ignore", "ignore", "pipe"]
165
- });
166
- (0, _child_process.execSync)("git pull --rebase", {
167
- cwd: photosDir,
168
- env: process.env,
169
- encoding: "utf-8",
170
- stdio: ["ignore", "ignore", "pipe"]
171
- });
172
- }
115
+ (0, _retrieve_deputes_photos.cloneAndUpdateGitRepository)(photosDirName, options);
173
116
 
174
117
  // Download photos.
175
118
  _fsExtra["default"].ensureDirSync(photosDir);
@@ -297,13 +240,13 @@ function _retrievePhotosSenateurs() {
297
240
  jsonFilePath = _path["default"].join(photosDir, "senateurs.json");
298
241
  _fsExtra["default"].writeFileSync(jsonFilePath, JSON.stringify(photoByIdSenateur, null, 2));
299
242
  if (!options.commit) {
300
- _context.next = 21;
243
+ _context.next = 19;
301
244
  break;
302
245
  }
303
246
  return _context.abrupt("return", git.commitAndPush(photosDir, "Nouvelle moisson", options.remote));
304
- case 21:
247
+ case 19:
305
248
  return _context.abrupt("return", 0);
306
- case 22:
249
+ case 20:
307
250
  case "end":
308
251
  return _context.stop();
309
252
  }
@@ -338,4 +281,4 @@ retrievePhotosSenateurs().then(function (exitCode) {
338
281
  console.log(error);
339
282
  process.exit(1);
340
283
  });
341
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2hpbGRfcHJvY2VzcyIsInJlcXVpcmUiLCJfY29tbWFuZExpbmVBcmdzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9mc0V4dHJhIiwiX3BhdGgiLCJfZGF0YXNldHMiLCJnaXQiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9sb2FkZXJzIiwiX2FjdGV1cnNfZXRfb3JnYW5lcyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm9iaiIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJvIiwidmFsdWUiLCJTeW1ib2wiLCJpdGVyYXRvciIsImMiLCJhc3luY0l0ZXJhdG9yIiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJoIiwibCIsImYiLCJzIiwieSIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJwIiwiZCIsImdldFByb3RvdHlwZU9mIiwidiIsInZhbHVlcyIsImciLCJkZWZpbmVJdGVyYXRvck1ldGhvZHMiLCJmb3JFYWNoIiwiX2ludm9rZSIsIkFzeW5jSXRlcmF0b3IiLCJpbnZva2UiLCJyZXNvbHZlIiwiX19hd2FpdCIsInRoZW4iLCJjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyIsIkVycm9yIiwiZG9uZSIsIm1ldGhvZCIsImRlbGVnYXRlIiwibWF5YmVJbnZva2VEZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwiVHlwZUVycm9yIiwicmVzdWx0TmFtZSIsIm5leHQiLCJuZXh0TG9jIiwicHVzaFRyeUVudHJ5IiwidHJ5TG9jIiwiY2F0Y2hMb2MiLCJmaW5hbGx5TG9jIiwiYWZ0ZXJMb2MiLCJ0cnlFbnRyaWVzIiwicHVzaCIsInJlc2V0VHJ5RW50cnkiLCJjb21wbGV0aW9uIiwicmVzZXQiLCJpc05hTiIsImxlbmd0aCIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsImNvbnN0cnVjdG9yIiwibmFtZSIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsImF3cmFwIiwiYXN5bmMiLCJQcm9taXNlIiwia2V5cyIsInJldmVyc2UiLCJwb3AiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicnZhbCIsImhhbmRsZSIsImNvbXBsZXRlIiwiZmluaXNoIiwiX2NhdGNoIiwiZGVsZWdhdGVZaWVsZCIsIl9zbGljZWRUb0FycmF5IiwiYXJyIiwiX2FycmF5V2l0aEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlUmVzdCIsIkFycmF5IiwiaXNBcnJheSIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsIkYiLCJfZSIsIm5vcm1hbENvbXBsZXRpb24iLCJkaWRFcnIiLCJlcnIiLCJzdGVwIiwiX2UyIiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsImZyb20iLCJ0ZXN0IiwibGVuIiwiYXJyMiIsImFzeW5jR2VuZXJhdG9yU3RlcCIsImdlbiIsInJlamVjdCIsIl9uZXh0IiwiX3Rocm93Iiwia2V5IiwiaW5mbyIsImVycm9yIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJmbiIsInNlbGYiLCJhcmdzIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJ1bmRlZmluZWQiLCJvcHRpb25zRGVmaW5pdGlvbnMiLCJhbGlhcyIsImhlbHAiLCJTdHJpbmciLCJCb29sZWFuIiwibXVsdGlwbGUiLCJkZWZhdWx0T3B0aW9uIiwib3B0aW9ucyIsImNvbW1hbmRMaW5lQXJncyIsInJldHJpZXZlUGhvdG9zU2VuYXRldXJzIiwiX3JldHJpZXZlUGhvdG9zU2VuYXRldXJzIiwiX2NhbGxlZSIsImRhdGFEaXIiLCJfbG9hZEFzc2VtYmxlZURhdGEiLCJhY3RldXJCeVVpZCIsInNlbmF0ZXVycyIsImdpdEdyb3VwVXJsIiwicGhvdG9zRGlyTmFtZSIsInBob3Rvc0RpciIsIm1pc3NpbmdQaG90b0ZpbGVQYXRoIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsInNlbmF0ZXVyIiwiaWRlbnQiLCJzZW5hdGV1clN0ZW0iLCJwaG90b0ZpbGVuYW1lIiwicGhvdG9GaWxlUGF0aCIsInBob3RvVGVtcEZpbGVuYW1lIiwicGhvdG9UZW1wRmlsZVBhdGgiLCJ1cmxQaG90byIsIl9pdGVyYXRvcjQiLCJfc3RlcDQiLCJfc2VuYXRldXIyIiwiX2lkZW50IiwiX3NlbmF0ZXVyU3RlbTIiLCJwaG90b0J5SWRTZW5hdGV1ciIsInJvd3NGaWxlbmFtZXMiLCJzZW5hdGV1ckluZGV4Iiwicm93SW5kZXgiLCJyb3ciLCJwaG90b3NGaWxlbmFtZXMiLCJfaXRlcmF0b3I1IiwiX3N0ZXA1IiwiX3N0ZXA1JHZhbHVlIiwiY29sdW1uSW5kZXgiLCJfc2VuYXRldXIiLCJfc2VuYXRldXJTdGVtIiwiX3Bob3RvRmlsZW5hbWUiLCJyb3dGaWxlbmFtZSIsIl9pIiwiX3Jvd3NGaWxlbmFtZXMiLCJfcm93RmlsZW5hbWUiLCJqc29uRmlsZVBhdGgiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwibG9hZEFzc2VtYmxlZURhdGEiLCJFbmFibGVkRGF0YXNldHMiLCJBY3RldXJzRXRPcmdhbmVzIiwibGVnaXNsYXR1cmUiLCJmaWx0ZXIiLCJhY3RldXIiLCJtYW5kYXRzIiwibWFuZGF0U2VuYXRldXIiLCJtYW5kYXQiLCJ4c2lUeXBlIiwiVHlwZU1hbmRhdCIsIk1hbmRhdFBhcmxlbWVudGFpcmVUeXBlIiwidHlwZU9yZ2FuZSIsIkNvZGVUeXBlT3JnYW5lIiwiU2VuYXQiLCJhZHJlc3NlcyIsInVybCIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJhZHJlc3NlIiwidHlwZUxpYmVsbGUiLCJ2YWxFbGVjIiwic29ydCIsImIiLCJ1aWQiLCJsb2NhbGVDb21wYXJlIiwiY2xvbmUiLCJ0cmltIiwicmVwbGFjZSIsImV4ZWNTeW5jIiwiY29uY2F0IiwiY3dkIiwiZW52IiwicHJvY2VzcyIsImVuY29kaW5nIiwic3RkaW8iLCJwYXRoIiwiam9pbiIsInB1bGwiLCJmcyIsImVuc3VyZURpclN5bmMiLCJmZXRjaCIsImV0YXRDaXZpbCIsInN0ZW1Gcm9tU2VuYXRldXIiLCJzaWxlbnQiLCJjb25zb2xlIiwibG9nIiwicHJlbm9tIiwibm9tIiwicmVuYW1lU3luYyIsImV4aXN0c1N5bmMiLCJ3YXJuIiwiY29weUZpbGVTeW5jIiwiZW50cmllcyIsImNoZW1pbiIsImNoZW1pbk1vc2FpcXVlIiwiaGF1dGV1ciIsImxhcmdldXIiLCJ4TW9zYWlxdWUiLCJ5TW9zYWlxdWUiLCJ1bmxpbmtTeW5jIiwid3JpdGVGaWxlU3luYyIsIkpTT04iLCJzdHJpbmdpZnkiLCJjb21taXQiLCJjb21taXRBbmRQdXNoIiwicmVtb3RlIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJtYXRjaCIsImV4aXRDb2RlIiwiZXhpdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL3JldHJpZXZlX3NlbmF0ZXVyc19waG90b3MudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhlY1N5bmMgfSBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiXG5pbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcbi8vIGltcG9ydCBzdHJlYW0gZnJvbSBcInN0cmVhbVwiXG4vLyBpbXBvcnQgdXRpbCBmcm9tIFwidXRpbFwiXG5cbmltcG9ydCB7IEVuYWJsZWREYXRhc2V0cyB9IGZyb20gXCIuLi9kYXRhc2V0c1wiXG5pbXBvcnQgKiBhcyBnaXQgZnJvbSBcIi4uL2dpdFwiXG5pbXBvcnQgeyBsb2FkQXNzZW1ibGVlRGF0YSB9IGZyb20gXCIuLi9sb2FkZXJzXCJcbmltcG9ydCB7XG4gIEFjdGV1cixcbiAgQ29kZVR5cGVPcmdhbmUsXG4gIE1hbmRhdCxcbiAgUGhvdG8sXG4gIFR5cGVNYW5kYXQsXG59IGZyb20gXCIuLi90eXBlcy9hY3RldXJzX2V0X29yZ2FuZXNcIlxuXG5jb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gIHtcbiAgICBhbGlhczogXCJDXCIsXG4gICAgaGVscDogXCJjbG9uZSByZXBvc2l0b3JpZXMgZnJvbSBnaXZlbiBncm91cCAob3Igb3JnYW5pemF0aW9uKSBnaXQgVVJMXCIsXG4gICAgbmFtZTogXCJjbG9uZVwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcImNcIixcbiAgICBoZWxwOiBcImNvbW1pdCBwaG90b3NcIixcbiAgICBuYW1lOiBcImNvbW1pdFwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJmXCIsXG4gICAgaGVscDogXCJmZXRjaCBzw6luYXRldXJzJyBwaWN0dXJlcyBpbnN0ZWFkIG9mIHJldHJpZXZpbmcgdGhlbSBmcm9tIGZpbGVzXCIsXG4gICAgbmFtZTogXCJmZXRjaFwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJwXCIsXG4gICAgaGVscDogXCJwdWxsIHJlcG9zaXRvcmllcyBiZWZvcmUgcHJvY2VlZGluZ1wiLFxuICAgIG5hbWU6IFwicHVsbFwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJyXCIsXG4gICAgaGVscDogXCJwdXNoIGNvbW1pdCB0byBnaXZlbiByZW1vdGVcIixcbiAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICBuYW1lOiBcInJlbW90ZVwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInNcIixcbiAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGRlZmF1bHRPcHRpb246IHRydWUsXG4gICAgaGVscDogXCJkaXJlY3RvcnkgY29udGFpbmluZyBBc3NlbWJsw6llIG9wZW4gZGF0YSBmaWxlc1wiLFxuICAgIG5hbWU6IFwiZGF0YURpclwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbl1cbmNvbnN0IG9wdGlvbnMgPSBjb21tYW5kTGluZUFyZ3Mob3B0aW9uc0RlZmluaXRpb25zKVxuLy8gY29uc3QgcGlwZWxpbmUgPSB1dGlsLnByb21pc2lmeShzdHJlYW0ucGlwZWxpbmUpXG5cbmFzeW5jIGZ1bmN0aW9uIHJldHJpZXZlUGhvdG9zU2VuYXRldXJzKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gIGNvbnN0IGRhdGFEaXIgPSBvcHRpb25zLmRhdGFEaXJcbiAgY29uc3QgeyBhY3RldXJCeVVpZCB9ID0gbG9hZEFzc2VtYmxlZURhdGEoXG4gICAgZGF0YURpcixcbiAgICBFbmFibGVkRGF0YXNldHMuQWN0ZXVyc0V0T3JnYW5lcyxcbiAgICBvcHRpb25zLmxlZ2lzbGF0dXJlLFxuICApXG4gIGNvbnN0IHNlbmF0ZXVycyA9IE9iamVjdC52YWx1ZXMoYWN0ZXVyQnlVaWQpXG4gICAgLmZpbHRlcigoYWN0ZXVyKSA9PiB7XG4gICAgICBjb25zdCB7IG1hbmRhdHMgfSA9IGFjdGV1clxuICAgICAgaWYgKCFtYW5kYXRzKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgY29uc3QgbWFuZGF0U2VuYXRldXIgPSBtYW5kYXRzLmZpbHRlcihcbiAgICAgICAgKG1hbmRhdDogTWFuZGF0KSA9PlxuICAgICAgICAgIG1hbmRhdC54c2lUeXBlID09PSBUeXBlTWFuZGF0Lk1hbmRhdFBhcmxlbWVudGFpcmVUeXBlICYmXG4gICAgICAgICAgLy8gbWFuZGF0LmxlZ2lzbGF0dXJlID09PSBvcHRpb25zLmxlZ2lzbGF0dXJlICYmXG4gICAgICAgICAgbWFuZGF0LnR5cGVPcmdhbmUgPT09IENvZGVUeXBlT3JnYW5lLlNlbmF0LFxuICAgICAgKVswXVxuICAgICAgaWYgKG1hbmRhdFNlbmF0ZXVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICBjb25zdCB7IGFkcmVzc2VzIH0gPSBhY3RldXJcbiAgICAgIGlmIChhZHJlc3NlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgbGV0IHVybCA9IG51bGxcbiAgICAgIGZvciAoY29uc3QgYWRyZXNzZSBvZiBhZHJlc3Nlcykge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgYWRyZXNzZS54c2lUeXBlID09PSBcIkFkcmVzc2VTaXRlV2ViX1R5cGVcIiAmJlxuICAgICAgICAgIGFkcmVzc2UudHlwZUxpYmVsbGUgPT09IFwiVXJsIHPDqW5hdGV1clwiXG4gICAgICAgICkge1xuICAgICAgICAgIHVybCA9IGFkcmVzc2UudmFsRWxlY1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gQm9vbGVhbih1cmwpXG4gICAgfSlcbiAgICAuc29ydCgoYSwgYikgPT5cbiAgICAgIGEudWlkLmxlbmd0aCA9PT0gYi51aWQubGVuZ3RoXG4gICAgICAgID8gYS51aWQubG9jYWxlQ29tcGFyZShiLnVpZClcbiAgICAgICAgOiBhLnVpZC5sZW5ndGggLSBiLnVpZC5sZW5ndGgsXG4gICAgKVxuXG4gIGNvbnN0IGdpdEdyb3VwVXJsID0gb3B0aW9ucy5jbG9uZVxuICAgID8gb3B0aW9ucy5jbG9uZS50cmltKCkucmVwbGFjZSgvXFwvKyQvLCBcIlwiKVxuICAgIDogdW5kZWZpbmVkXG4gIGNvbnN0IHBob3Rvc0Rpck5hbWUgPSBcInBob3Rvc19zZW5hdGV1cnNcIlxuICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtwaG90b3NEaXJOYW1lfS5naXRgLCB7XG4gICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgIH0pXG4gIH1cbiAgY29uc3QgcGhvdG9zRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIHBob3Rvc0Rpck5hbWUpXG4gIGlmIChvcHRpb25zLnB1bGwpIHtcbiAgICBleGVjU3luYyhgZ2l0IHJlc2V0IC0taGFyZCBvcmlnaW4vbWFzdGVyYCwge1xuICAgICAgY3dkOiBwaG90b3NEaXIsXG4gICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgIH0pXG4gICAgZXhlY1N5bmMoYGdpdCBwdWxsIC0tcmViYXNlYCwge1xuICAgICAgY3dkOiBwaG90b3NEaXIsXG4gICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgIH0pXG4gIH1cblxuICAvLyBEb3dubG9hZCBwaG90b3MuXG4gIGZzLmVuc3VyZURpclN5bmMocGhvdG9zRGlyKVxuICBpZiAob3B0aW9ucy5mZXRjaCkge1xuICAgIGNvbnN0IG1pc3NpbmdQaG90b0ZpbGVQYXRoID0gXCJpbWFnZXMvdHJhbnNwYXJlbnRfMTU1eDIyNS5qcGdcIlxuICAgIGZvciAoY29uc3Qgc2VuYXRldXIgb2Ygc2VuYXRldXJzKSB7XG4gICAgICBjb25zdCBpZGVudCA9IHNlbmF0ZXVyLmV0YXRDaXZpbC5pZGVudFxuICAgICAgY29uc3Qgc2VuYXRldXJTdGVtID0gc3RlbUZyb21TZW5hdGV1cihzZW5hdGV1cilcbiAgICAgIGNvbnN0IHBob3RvRmlsZW5hbWUgPSBgJHtzZW5hdGV1clN0ZW19LmpwZ2BcbiAgICAgIGNvbnN0IHBob3RvRmlsZVBhdGggPSBwYXRoLmpvaW4ocGhvdG9zRGlyLCBwaG90b0ZpbGVuYW1lKVxuICAgICAgY29uc3QgcGhvdG9UZW1wRmlsZW5hbWUgPSBgJHtzZW5hdGV1clN0ZW19X3RlbXAuanBnYFxuICAgICAgY29uc3QgcGhvdG9UZW1wRmlsZVBhdGggPSBwYXRoLmpvaW4ocGhvdG9zRGlyLCBwaG90b1RlbXBGaWxlbmFtZSlcbiAgICAgIGNvbnN0IHVybFBob3RvID0gYGh0dHBzOi8vd3d3LnNlbmF0LmZyL3NlbmltZy8ke3Bob3RvRmlsZW5hbWV9YFxuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICBgTG9hZGluZyBwaG90byAke3VybFBob3RvfSBmb3IgJHtpZGVudC5wcmVub219ICR7aWRlbnQubm9tfeKApmAsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIC8vIGZvciAobGV0IHJldHJpZXMgPSAwOyByZXRyaWVzIDwgMzsgcmV0cmllcysrKSB7XG4gICAgICAvLyAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsUGhvdG8pXG4gICAgICAvLyAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgLy8gICAgIGF3YWl0IHBpcGVsaW5lKHJlc3BvbnNlLmJvZHkgYXMgdW5rbm93biBhcyBOb2RlSlMuUmVhZGFibGVTdHJlYW0sIGZzLmNyZWF0ZVdyaXRlU3RyZWFtKHBob3RvVGVtcEZpbGVQYXRoKSlcbiAgICAgIC8vICAgICBmcy5yZW5hbWVTeW5jKHBob3RvVGVtcEZpbGVQYXRoLCBwaG90b0ZpbGVQYXRoKVxuICAgICAgLy8gICAgIGJyZWFrXG4gICAgICAvLyAgIH1cbiAgICAgIC8vICAgaWYgKHJldHJpZXMgPj0gMikge1xuICAgICAgLy8gICAgIGNvbnNvbGUud2FybihgRmV0Y2ggZmFpbGVkOiAke3VybFBob3RvfSAoJHtpZGVudC5wcmVub219ICR7aWRlbnQubm9tfSlgKVxuICAgICAgLy8gICAgIGNvbnNvbGUud2FybihyZXNwb25zZS5zdGF0dXMsIHJlc3BvbnNlLnN0YXR1c1RleHQpXG4gICAgICAvLyAgICAgY29uc29sZS53YXJuKGF3YWl0IHJlc3BvbnNlLnRleHQoKSlcbiAgICAgIC8vICAgICBpZiAoZnMuZXhpc3RzU3luYyhwaG90b0ZpbGVQYXRoKSkge1xuICAgICAgLy8gICAgICAgY29uc29sZS53YXJuKFwiICA9PiBSZXVzaW5nIGV4aXN0aW5nIGltYWdlXCIpXG4gICAgICAvLyAgICAgfSBlbHNlIHtcbiAgICAgIC8vICAgICAgIGNvbnNvbGUud2FybihcIiAgPT4gVXNpbmcgYmxhbmsgaW1hZ2VcIilcbiAgICAgIC8vICAgICAgIGZzLmNvcHlGaWxlU3luYyhtaXNzaW5nUGhvdG9GaWxlUGF0aCwgcGhvdG9GaWxlUGF0aClcbiAgICAgIC8vICAgICB9XG4gICAgICAvLyAgICAgYnJlYWtcbiAgICAgIC8vICAgfVxuICAgICAgLy8gfVxuICAgICAgdHJ5IHtcbiAgICAgICAgZXhlY1N5bmMoYHdnZXQgLS1xdWlldCAtTyAke3Bob3RvVGVtcEZpbGVuYW1lfSAke3VybFBob3RvfWAsIHtcbiAgICAgICAgICBjd2Q6IHBob3Rvc0RpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgLy8gc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICAgIGZzLnJlbmFtZVN5bmMocGhvdG9UZW1wRmlsZVBhdGgsIHBob3RvRmlsZVBhdGgpXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyhwaG90b0ZpbGVQYXRoKSkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcIiAgPT4gUmV1c2luZyBleGlzdGluZyBpbWFnZVwiKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcIiAgPT4gVXNpbmcgYmxhbmsgaW1hZ2VcIilcbiAgICAgICAgICBmcy5jb3B5RmlsZVN5bmMobWlzc2luZ1Bob3RvRmlsZVBhdGgsIHBob3RvRmlsZVBhdGgpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBSZXNpemUgcGhvdG9zIHRvIDE1NXgyMjUsIGJlY2F1c2Ugc29tZSBoYXZlbid0IGV4YWN0bHkgdGhpcyBzaXplLlxuICBmb3IgKGNvbnN0IHNlbmF0ZXVyIG9mIHNlbmF0ZXVycykge1xuICAgIGNvbnN0IGlkZW50ID0gc2VuYXRldXIuZXRhdENpdmlsLmlkZW50XG4gICAgY29uc3Qgc2VuYXRldXJTdGVtID0gc3RlbUZyb21TZW5hdGV1cihzZW5hdGV1cilcbiAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYFJlc2l6aW5nIHBob3RvICR7c2VuYXRldXJTdGVtfSBmb3IgJHtpZGVudC5wcmVub219ICR7aWRlbnQubm9tfeKApmAsXG4gICAgICApXG4gICAgfVxuICAgIGV4ZWNTeW5jKFxuICAgICAgYGdtIGNvbnZlcnQgLXJlc2l6ZSAxNTV4MjI1ISAke3NlbmF0ZXVyU3RlbX0uanBnICR7c2VuYXRldXJTdGVtfV8xNTV4MjI1LmpwZ2AsXG4gICAgICB7XG4gICAgICAgIGN3ZDogcGhvdG9zRGlyLFxuICAgICAgfSxcbiAgICApXG4gIH1cblxuICAvLyBDcmVhdGUgYSBtb3NhaWMgb2YgcGhvdG9zLlxuICBjb25zdCBwaG90b0J5SWRTZW5hdGV1cjogeyBbdWlkOiBzdHJpbmddOiBQaG90byB9ID0ge31cbiAgY29uc3Qgcm93c0ZpbGVuYW1lczogc3RyaW5nW10gPSBbXVxuICBmb3IgKFxuICAgIGxldCBzZW5hdGV1ckluZGV4ID0gMCwgcm93SW5kZXggPSAwO1xuICAgIHNlbmF0ZXVySW5kZXggPCBzZW5hdGV1cnMubGVuZ3RoO1xuICAgIHNlbmF0ZXVySW5kZXggKz0gMjUsIHJvd0luZGV4KytcbiAgKSB7XG4gICAgY29uc3Qgcm93ID0gc2VuYXRldXJzLnNsaWNlKHNlbmF0ZXVySW5kZXgsIHNlbmF0ZXVySW5kZXggKyAyNSlcbiAgICBjb25zdCBwaG90b3NGaWxlbmFtZXM6IHN0cmluZ1tdID0gW11cbiAgICBmb3IgKGNvbnN0IFtjb2x1bW5JbmRleCwgc2VuYXRldXJdIG9mIHJvdy5lbnRyaWVzKCkpIHtcbiAgICAgIGNvbnN0IHNlbmF0ZXVyU3RlbSA9IHN0ZW1Gcm9tU2VuYXRldXIoc2VuYXRldXIpXG4gICAgICBjb25zdCBwaG90b0ZpbGVuYW1lID0gYCR7c2VuYXRldXJTdGVtfV8xNTV4MjI1LmpwZ2BcbiAgICAgIHBob3Rvc0ZpbGVuYW1lcy5wdXNoKHBob3RvRmlsZW5hbWUpXG4gICAgICBwaG90b0J5SWRTZW5hdGV1cltzZW5hdGV1ci51aWRdID0ge1xuICAgICAgICBjaGVtaW46IGBwaG90b3Nfc2VuYXRldXJzLyR7cGhvdG9GaWxlbmFtZX1gLFxuICAgICAgICBjaGVtaW5Nb3NhaXF1ZTogYHBob3Rvc19zZW5hdGV1cnMvc2VuYXRldXJzLmpwZ2AsXG4gICAgICAgIGhhdXRldXI6IDIyNSxcbiAgICAgICAgbGFyZ2V1cjogMTU1LFxuICAgICAgICB4TW9zYWlxdWU6IGNvbHVtbkluZGV4ICogMTU1LFxuICAgICAgICB5TW9zYWlxdWU6IHJvd0luZGV4ICogMjI1LFxuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCByb3dGaWxlbmFtZSA9IGByb3ctJHtyb3dJbmRleH0uanBnYFxuICAgIGV4ZWNTeW5jKGBnbSBjb252ZXJ0ICR7cGhvdG9zRmlsZW5hbWVzLmpvaW4oXCIgXCIpfSArYXBwZW5kICR7cm93RmlsZW5hbWV9YCwge1xuICAgICAgY3dkOiBwaG90b3NEaXIsXG4gICAgfSlcbiAgICByb3dzRmlsZW5hbWVzLnB1c2gocm93RmlsZW5hbWUpXG4gIH1cbiAgZXhlY1N5bmMoYGdtIGNvbnZlcnQgJHtyb3dzRmlsZW5hbWVzLmpvaW4oXCIgXCIpfSAtYXBwZW5kIHNlbmF0ZXVycy5qcGdgLCB7XG4gICAgY3dkOiBwaG90b3NEaXIsXG4gIH0pXG4gIGZvciAoY29uc3Qgcm93RmlsZW5hbWUgb2Ygcm93c0ZpbGVuYW1lcykge1xuICAgIGZzLnVubGlua1N5bmMocGF0aC5qb2luKHBob3Rvc0Rpciwgcm93RmlsZW5hbWUpKVxuICB9XG5cbiAgY29uc3QganNvbkZpbGVQYXRoID0gcGF0aC5qb2luKHBob3Rvc0RpciwgXCJzZW5hdGV1cnMuanNvblwiKVxuICBmcy53cml0ZUZpbGVTeW5jKGpzb25GaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkocGhvdG9CeUlkU2VuYXRldXIsIG51bGwsIDIpKVxuXG4gIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgIHJldHVybiBnaXQuY29tbWl0QW5kUHVzaChwaG90b3NEaXIsIFwiTm91dmVsbGUgbW9pc3NvblwiLCBvcHRpb25zLnJlbW90ZSlcbiAgfVxuICByZXR1cm4gMFxufVxuXG5mdW5jdGlvbiBzdGVtRnJvbVNlbmF0ZXVyKHNlbmF0ZXVyOiBBY3RldXIpIHtcbiAgY29uc3QgeyBhZHJlc3NlcyB9ID0gc2VuYXRldXJcbiAgbGV0IHVybCA9IG51bGxcbiAgZm9yIChjb25zdCBhZHJlc3NlIG9mIGFkcmVzc2VzISkge1xuICAgIGlmIChcbiAgICAgIGFkcmVzc2UueHNpVHlwZSA9PT0gXCJBZHJlc3NlU2l0ZVdlYl9UeXBlXCIgJiZcbiAgICAgIGFkcmVzc2UudHlwZUxpYmVsbGUgPT09IFwiVXJsIHPDqW5hdGV1clwiXG4gICAgKSB7XG4gICAgICB1cmwgPSBhZHJlc3NlLnZhbEVsZWNcbiAgICB9XG4gIH1cbiAgY29uc3QgbWF0Y2ggPSB1cmwhLm1hdGNoKC9eaHR0cHM6XFwvXFwvd3d3XFwuc2VuYXRcXC5mclxcL3NlbmF0ZXVyXFwvKC4qKVxcLmh0bWwkLylcbiAgY29uc3Qgc2VuYXRldXJTdGVtID0gbWF0Y2ghWzFdXG4gIHJldHVybiBzZW5hdGV1clN0ZW1cbn1cblxucmV0cmlldmVQaG90b3NTZW5hdGV1cnMoKVxuICAudGhlbigoZXhpdENvZGUpID0+IHByb2Nlc3MuZXhpdChleGl0Q29kZSkpXG4gIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICBjb25zb2xlLmxvZyhlcnJvcilcbiAgICBwcm9jZXNzLmV4aXQoMSlcbiAgfSlcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsY0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsZ0JBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLFFBQUEsR0FBQUQsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFJLEtBQUEsR0FBQUYsc0JBQUEsQ0FBQUYsT0FBQTtBQUlBLElBQUFLLFNBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLEdBQUEsR0FBQUMsdUJBQUEsQ0FBQVAsT0FBQTtBQUNBLElBQUFRLFFBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLG1CQUFBLEdBQUFULE9BQUE7QUFNb0MsU0FBQVUseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFKLHdCQUFBSSxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENB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
284
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2hpbGRfcHJvY2VzcyIsInJlcXVpcmUiLCJfY29tbWFuZExpbmVBcmdzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9mc0V4dHJhIiwiX3BhdGgiLCJfZGF0YXNldHMiLCJnaXQiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9sb2FkZXJzIiwiX3JldHJpZXZlX2RlcHV0ZXNfcGhvdG9zIiwiX2FjdGV1cnNfZXRfb3JnYW5lcyIsIl9jbGlfaGVscGVycyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJwcm90b3R5cGUiLCJvIiwidmFsdWUiLCJTeW1ib2wiLCJpdGVyYXRvciIsImMiLCJhc3luY0l0ZXJhdG9yIiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJoIiwibCIsImYiLCJzIiwieSIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJwIiwiZCIsImdldFByb3RvdHlwZU9mIiwidiIsInZhbHVlcyIsImciLCJkZWZpbmVJdGVyYXRvck1ldGhvZHMiLCJmb3JFYWNoIiwiX2ludm9rZSIsIkFzeW5jSXRlcmF0b3IiLCJpbnZva2UiLCJyZXNvbHZlIiwiX19hd2FpdCIsInRoZW4iLCJjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyIsIkVycm9yIiwiZG9uZSIsIm1ldGhvZCIsImRlbGVnYXRlIiwibWF5YmVJbnZva2VEZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwiVHlwZUVycm9yIiwicmVzdWx0TmFtZSIsIm5leHQiLCJuZXh0TG9jIiwicHVzaFRyeUVudHJ5IiwidHJ5TG9jIiwiY2F0Y2hMb2MiLCJmaW5hbGx5TG9jIiwiYWZ0ZXJMb2MiLCJ0cnlFbnRyaWVzIiwicHVzaCIsInJlc2V0VHJ5RW50cnkiLCJjb21wbGV0aW9uIiwicmVzZXQiLCJpc05hTiIsImxlbmd0aCIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsImNvbnN0cnVjdG9yIiwibmFtZSIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsImF3cmFwIiwiYXN5bmMiLCJQcm9taXNlIiwia2V5cyIsInJldmVyc2UiLCJwb3AiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicnZhbCIsImhhbmRsZSIsImNvbXBsZXRlIiwiZmluaXNoIiwiX2NhdGNoIiwiZGVsZWdhdGVZaWVsZCIsIl9zbGljZWRUb0FycmF5IiwiX2FycmF5V2l0aEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlUmVzdCIsIkFycmF5IiwiaXNBcnJheSIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX24iLCJGIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsImZyb20iLCJ0ZXN0IiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJhcmd1bWVudHMiLCJhcHBseSIsIl9uZXh0IiwiX3Rocm93Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiY2xvbmVPcHRpb24iLCJjb21taXRPcHRpb24iLCJwdWxsT3B0aW9uIiwicmVtb3RlT3B0aW9uIiwic2lsZW50T3B0aW9uIiwiZGF0YURpckRlZmF1bHRPcHRpb24iLCJmZXRjaE9wdGlvbiIsIm9wdGlvbnMiLCJjb21tYW5kTGluZUFyZ3MiLCJyZXRyaWV2ZVBob3Rvc1NlbmF0ZXVycyIsIl9yZXRyaWV2ZVBob3Rvc1NlbmF0ZXVycyIsIl9jYWxsZWUiLCJkYXRhRGlyIiwiX2xvYWRBc3NlbWJsZWVEYXRhIiwiYWN0ZXVyQnlVaWQiLCJzZW5hdGV1cnMiLCJwaG90b3NEaXJOYW1lIiwicGhvdG9zRGlyIiwibWlzc2luZ1Bob3RvRmlsZVBhdGgiLCJfaXRlcmF0b3IzIiwiX3N0ZXAzIiwic2VuYXRldXIiLCJpZGVudCIsInNlbmF0ZXVyU3RlbSIsInBob3RvRmlsZW5hbWUiLCJwaG90b0ZpbGVQYXRoIiwicGhvdG9UZW1wRmlsZW5hbWUiLCJwaG90b1RlbXBGaWxlUGF0aCIsInVybFBob3RvIiwiX2l0ZXJhdG9yNCIsIl9zdGVwNCIsIl9zZW5hdGV1cjIiLCJfaWRlbnQiLCJfc2VuYXRldXJTdGVtMiIsInBob3RvQnlJZFNlbmF0ZXVyIiwicm93c0ZpbGVuYW1lcyIsInNlbmF0ZXVySW5kZXgiLCJyb3dJbmRleCIsInJvdyIsInBob3Rvc0ZpbGVuYW1lcyIsIl9pdGVyYXRvcjUiLCJfc3RlcDUiLCJfc3RlcDUkdmFsdWUiLCJjb2x1bW5JbmRleCIsIl9zZW5hdGV1ciIsIl9zZW5hdGV1clN0ZW0iLCJfcGhvdG9GaWxlbmFtZSIsInJvd0ZpbGVuYW1lIiwiX2kiLCJfcm93c0ZpbGVuYW1lcyIsIl9yb3dGaWxlbmFtZSIsImpzb25GaWxlUGF0aCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJsb2FkQXNzZW1ibGVlRGF0YSIsIkVuYWJsZWREYXRhc2V0cyIsIkFjdGV1cnNFdE9yZ2FuZXMiLCJsZWdpc2xhdHVyZSIsImZpbHRlciIsImFjdGV1ciIsIm1hbmRhdHMiLCJtYW5kYXRTZW5hdGV1ciIsIm1hbmRhdCIsInhzaVR5cGUiLCJUeXBlTWFuZGF0IiwiTWFuZGF0UGFybGVtZW50YWlyZVR5cGUiLCJ0eXBlT3JnYW5lIiwiQ29kZVR5cGVPcmdhbmUiLCJTZW5hdCIsInVuZGVmaW5lZCIsImFkcmVzc2VzIiwidXJsIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsImFkcmVzc2UiLCJ0eXBlTGliZWxsZSIsInZhbEVsZWMiLCJlcnIiLCJCb29sZWFuIiwic29ydCIsImIiLCJ1aWQiLCJsb2NhbGVDb21wYXJlIiwicGF0aCIsImpvaW4iLCJjbG9uZUFuZFVwZGF0ZUdpdFJlcG9zaXRvcnkiLCJmcyIsImVuc3VyZURpclN5bmMiLCJmZXRjaCIsImV0YXRDaXZpbCIsInN0ZW1Gcm9tU2VuYXRldXIiLCJjb25jYXQiLCJzaWxlbnQiLCJjb25zb2xlIiwibG9nIiwicHJlbm9tIiwibm9tIiwiZXhlY1N5bmMiLCJjd2QiLCJlbnYiLCJwcm9jZXNzIiwiZW5jb2RpbmciLCJyZW5hbWVTeW5jIiwiZXJyb3IiLCJleGlzdHNTeW5jIiwid2FybiIsImNvcHlGaWxlU3luYyIsImVudHJpZXMiLCJjaGVtaW4iLCJjaGVtaW5Nb3NhaXF1ZSIsImhhdXRldXIiLCJsYXJnZXVyIiwieE1vc2FpcXVlIiwieU1vc2FpcXVlIiwidW5saW5rU3luYyIsIndyaXRlRmlsZVN5bmMiLCJKU09OIiwic3RyaW5naWZ5IiwiY29tbWl0IiwiY29tbWl0QW5kUHVzaCIsInJlbW90ZSIsIl9pdGVyYXRvciIsIl9zdGVwIiwibWF0Y2giLCJleGl0Q29kZSIsImV4aXQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyaXB0cy9yZXRyaWV2ZV9zZW5hdGV1cnNfcGhvdG9zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIlxuaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG4vLyBpbXBvcnQgc3RyZWFtIGZyb20gXCJzdHJlYW1cIlxuLy8gaW1wb3J0IHV0aWwgZnJvbSBcInV0aWxcIlxuXG5pbXBvcnQgeyBFbmFibGVkRGF0YXNldHMgfSBmcm9tIFwiLi4vZGF0YXNldHNcIlxuaW1wb3J0ICogYXMgZ2l0IGZyb20gXCIuLi9naXRcIlxuaW1wb3J0IHsgbG9hZEFzc2VtYmxlZURhdGEgfSBmcm9tIFwiLi4vbG9hZGVyc1wiXG5pbXBvcnQgeyBjbG9uZUFuZFVwZGF0ZUdpdFJlcG9zaXRvcnkgfSBmcm9tIFwiLi9yZXRyaWV2ZV9kZXB1dGVzX3Bob3Rvc1wiXG5pbXBvcnQge1xuICBBY3RldXIsXG4gIENvZGVUeXBlT3JnYW5lLFxuICBNYW5kYXQsXG4gIFBob3RvLFxuICBUeXBlTWFuZGF0LFxufSBmcm9tIFwiLi4vdHlwZXMvYWN0ZXVyc19ldF9vcmdhbmVzXCJcbmltcG9ydCB7XG4gIGNsb25lT3B0aW9uLFxuICBjb21taXRPcHRpb24sXG4gIGRhdGFEaXJEZWZhdWx0T3B0aW9uLFxuICBmZXRjaE9wdGlvbixcbiAgcHVsbE9wdGlvbixcbiAgcmVtb3RlT3B0aW9uLFxuICBzaWxlbnRPcHRpb24sXG59IGZyb20gXCIuL3NoYXJlZC9jbGlfaGVscGVyc1wiXG5cbmNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAgY2xvbmVPcHRpb24sXG4gIGNvbW1pdE9wdGlvbixcbiAgcHVsbE9wdGlvbixcbiAgcmVtb3RlT3B0aW9uLFxuICBzaWxlbnRPcHRpb24sXG4gIGRhdGFEaXJEZWZhdWx0T3B0aW9uLFxuICBmZXRjaE9wdGlvbixcbl1cbmNvbnN0IG9wdGlvbnMgPSBjb21tYW5kTGluZUFyZ3Mob3B0aW9uc0RlZmluaXRpb25zKVxuLy8gY29uc3QgcGlwZWxpbmUgPSB1dGlsLnByb21pc2lmeShzdHJlYW0ucGlwZWxpbmUpXG5cbmFzeW5jIGZ1bmN0aW9uIHJldHJpZXZlUGhvdG9zU2VuYXRldXJzKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gIGNvbnN0IGRhdGFEaXIgPSBvcHRpb25zLmRhdGFEaXJcbiAgY29uc3QgeyBhY3RldXJCeVVpZCB9ID0gbG9hZEFzc2VtYmxlZURhdGEoXG4gICAgZGF0YURpcixcbiAgICBFbmFibGVkRGF0YXNldHMuQWN0ZXVyc0V0T3JnYW5lcyxcbiAgICBvcHRpb25zLmxlZ2lzbGF0dXJlLFxuICApXG4gIGNvbnN0IHNlbmF0ZXVycyA9IE9iamVjdC52YWx1ZXMoYWN0ZXVyQnlVaWQpXG4gICAgLmZpbHRlcigoYWN0ZXVyKSA9PiB7XG4gICAgICBjb25zdCB7IG1hbmRhdHMgfSA9IGFjdGV1clxuICAgICAgaWYgKCFtYW5kYXRzKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgY29uc3QgbWFuZGF0U2VuYXRldXIgPSBtYW5kYXRzLmZpbHRlcihcbiAgICAgICAgKG1hbmRhdDogTWFuZGF0KSA9PlxuICAgICAgICAgIG1hbmRhdC54c2lUeXBlID09PSBUeXBlTWFuZGF0Lk1hbmRhdFBhcmxlbWVudGFpcmVUeXBlICYmXG4gICAgICAgICAgLy8gbWFuZGF0LmxlZ2lzbGF0dXJlID09PSBvcHRpb25zLmxlZ2lzbGF0dXJlICYmXG4gICAgICAgICAgbWFuZGF0LnR5cGVPcmdhbmUgPT09IENvZGVUeXBlT3JnYW5lLlNlbmF0LFxuICAgICAgKVswXVxuICAgICAgaWYgKG1hbmRhdFNlbmF0ZXVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICBjb25zdCB7IGFkcmVzc2VzIH0gPSBhY3RldXJcbiAgICAgIGlmIChhZHJlc3NlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgbGV0IHVybCA9IG51bGxcbiAgICAgIGZvciAoY29uc3QgYWRyZXNzZSBvZiBhZHJlc3Nlcykge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgYWRyZXNzZS54c2lUeXBlID09PSBcIkFkcmVzc2VTaXRlV2ViX1R5cGVcIiAmJlxuICAgICAgICAgIGFkcmVzc2UudHlwZUxpYmVsbGUgPT09IFwiVXJsIHPDqW5hdGV1clwiXG4gICAgICAgICkge1xuICAgICAgICAgIHVybCA9IGFkcmVzc2UudmFsRWxlY1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gQm9vbGVhbih1cmwpXG4gICAgfSlcbiAgICAuc29ydCgoYSwgYikgPT5cbiAgICAgIGEudWlkLmxlbmd0aCA9PT0gYi51aWQubGVuZ3RoXG4gICAgICAgID8gYS51aWQubG9jYWxlQ29tcGFyZShiLnVpZClcbiAgICAgICAgOiBhLnVpZC5sZW5ndGggLSBiLnVpZC5sZW5ndGgsXG4gICAgKVxuXG4gIGNvbnN0IHBob3Rvc0Rpck5hbWUgPSBcInBob3Rvc19zZW5hdGV1cnNcIlxuICBjb25zdCBwaG90b3NEaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgcGhvdG9zRGlyTmFtZSlcbiAgY2xvbmVBbmRVcGRhdGVHaXRSZXBvc2l0b3J5KHBob3Rvc0Rpck5hbWUsIG9wdGlvbnMpXG5cbiAgLy8gRG93bmxvYWQgcGhvdG9zLlxuICBmcy5lbnN1cmVEaXJTeW5jKHBob3Rvc0RpcilcbiAgaWYgKG9wdGlvbnMuZmV0Y2gpIHtcbiAgICBjb25zdCBtaXNzaW5nUGhvdG9GaWxlUGF0aCA9IFwiaW1hZ2VzL3RyYW5zcGFyZW50XzE1NXgyMjUuanBnXCJcbiAgICBmb3IgKGNvbnN0IHNlbmF0ZXVyIG9mIHNlbmF0ZXVycykge1xuICAgICAgY29uc3QgaWRlbnQgPSBzZW5hdGV1ci5ldGF0Q2l2aWwuaWRlbnRcbiAgICAgIGNvbnN0IHNlbmF0ZXVyU3RlbSA9IHN0ZW1Gcm9tU2VuYXRldXIoc2VuYXRldXIpXG4gICAgICBjb25zdCBwaG90b0ZpbGVuYW1lID0gYCR7c2VuYXRldXJTdGVtfS5qcGdgXG4gICAgICBjb25zdCBwaG90b0ZpbGVQYXRoID0gcGF0aC5qb2luKHBob3Rvc0RpciwgcGhvdG9GaWxlbmFtZSlcbiAgICAgIGNvbnN0IHBob3RvVGVtcEZpbGVuYW1lID0gYCR7c2VuYXRldXJTdGVtfV90ZW1wLmpwZ2BcbiAgICAgIGNvbnN0IHBob3RvVGVtcEZpbGVQYXRoID0gcGF0aC5qb2luKHBob3Rvc0RpciwgcGhvdG9UZW1wRmlsZW5hbWUpXG4gICAgICBjb25zdCB1cmxQaG90byA9IGBodHRwczovL3d3dy5zZW5hdC5mci9zZW5pbWcvJHtwaG90b0ZpbGVuYW1lfWBcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgYExvYWRpbmcgcGhvdG8gJHt1cmxQaG90b30gZm9yICR7aWRlbnQucHJlbm9tfSAke2lkZW50Lm5vbX3igKZgLFxuICAgICAgICApXG4gICAgICB9XG4gICAgICAvLyBmb3IgKGxldCByZXRyaWVzID0gMDsgcmV0cmllcyA8IDM7IHJldHJpZXMrKykge1xuICAgICAgLy8gICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybFBob3RvKVxuICAgICAgLy8gICBpZiAocmVzcG9uc2Uub2spIHtcbiAgICAgIC8vICAgICBhd2FpdCBwaXBlbGluZShyZXNwb25zZS5ib2R5IGFzIHVua25vd24gYXMgTm9kZUpTLlJlYWRhYmxlU3RyZWFtLCBmcy5jcmVhdGVXcml0ZVN0cmVhbShwaG90b1RlbXBGaWxlUGF0aCkpXG4gICAgICAvLyAgICAgZnMucmVuYW1lU3luYyhwaG90b1RlbXBGaWxlUGF0aCwgcGhvdG9GaWxlUGF0aClcbiAgICAgIC8vICAgICBicmVha1xuICAgICAgLy8gICB9XG4gICAgICAvLyAgIGlmIChyZXRyaWVzID49IDIpIHtcbiAgICAgIC8vICAgICBjb25zb2xlLndhcm4oYEZldGNoIGZhaWxlZDogJHt1cmxQaG90b30gKCR7aWRlbnQucHJlbm9tfSAke2lkZW50Lm5vbX0pYClcbiAgICAgIC8vICAgICBjb25zb2xlLndhcm4ocmVzcG9uc2Uuc3RhdHVzLCByZXNwb25zZS5zdGF0dXNUZXh0KVxuICAgICAgLy8gICAgIGNvbnNvbGUud2Fybihhd2FpdCByZXNwb25zZS50ZXh0KCkpXG4gICAgICAvLyAgICAgaWYgKGZzLmV4aXN0c1N5bmMocGhvdG9GaWxlUGF0aCkpIHtcbiAgICAgIC8vICAgICAgIGNvbnNvbGUud2FybihcIiAgPT4gUmV1c2luZyBleGlzdGluZyBpbWFnZVwiKVxuICAgICAgLy8gICAgIH0gZWxzZSB7XG4gICAgICAvLyAgICAgICBjb25zb2xlLndhcm4oXCIgID0+IFVzaW5nIGJsYW5rIGltYWdlXCIpXG4gICAgICAvLyAgICAgICBmcy5jb3B5RmlsZVN5bmMobWlzc2luZ1Bob3RvRmlsZVBhdGgsIHBob3RvRmlsZVBhdGgpXG4gICAgICAvLyAgICAgfVxuICAgICAgLy8gICAgIGJyZWFrXG4gICAgICAvLyAgIH1cbiAgICAgIC8vIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIGV4ZWNTeW5jKGB3Z2V0IC0tcXVpZXQgLU8gJHtwaG90b1RlbXBGaWxlbmFtZX0gJHt1cmxQaG90b31gLCB7XG4gICAgICAgICAgY3dkOiBwaG90b3NEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIC8vIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgICBmcy5yZW5hbWVTeW5jKHBob3RvVGVtcEZpbGVQYXRoLCBwaG90b0ZpbGVQYXRoKVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcilcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMocGhvdG9GaWxlUGF0aCkpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXCIgID0+IFJldXNpbmcgZXhpc3RpbmcgaW1hZ2VcIilcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXCIgID0+IFVzaW5nIGJsYW5rIGltYWdlXCIpXG4gICAgICAgICAgZnMuY29weUZpbGVTeW5jKG1pc3NpbmdQaG90b0ZpbGVQYXRoLCBwaG90b0ZpbGVQYXRoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUmVzaXplIHBob3RvcyB0byAxNTV4MjI1LCBiZWNhdXNlIHNvbWUgaGF2ZW4ndCBleGFjdGx5IHRoaXMgc2l6ZS5cbiAgZm9yIChjb25zdCBzZW5hdGV1ciBvZiBzZW5hdGV1cnMpIHtcbiAgICBjb25zdCBpZGVudCA9IHNlbmF0ZXVyLmV0YXRDaXZpbC5pZGVudFxuICAgIGNvbnN0IHNlbmF0ZXVyU3RlbSA9IHN0ZW1Gcm9tU2VuYXRldXIoc2VuYXRldXIpXG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGBSZXNpemluZyBwaG90byAke3NlbmF0ZXVyU3RlbX0gZm9yICR7aWRlbnQucHJlbm9tfSAke2lkZW50Lm5vbX3igKZgLFxuICAgICAgKVxuICAgIH1cbiAgICBleGVjU3luYyhcbiAgICAgIGBnbSBjb252ZXJ0IC1yZXNpemUgMTU1eDIyNSEgJHtzZW5hdGV1clN0ZW19LmpwZyAke3NlbmF0ZXVyU3RlbX1fMTU1eDIyNS5qcGdgLFxuICAgICAge1xuICAgICAgICBjd2Q6IHBob3Rvc0RpcixcbiAgICAgIH0sXG4gICAgKVxuICB9XG5cbiAgLy8gQ3JlYXRlIGEgbW9zYWljIG9mIHBob3Rvcy5cbiAgY29uc3QgcGhvdG9CeUlkU2VuYXRldXI6IHsgW3VpZDogc3RyaW5nXTogUGhvdG8gfSA9IHt9XG4gIGNvbnN0IHJvd3NGaWxlbmFtZXM6IHN0cmluZ1tdID0gW11cbiAgZm9yIChcbiAgICBsZXQgc2VuYXRldXJJbmRleCA9IDAsIHJvd0luZGV4ID0gMDtcbiAgICBzZW5hdGV1ckluZGV4IDwgc2VuYXRldXJzLmxlbmd0aDtcbiAgICBzZW5hdGV1ckluZGV4ICs9IDI1LCByb3dJbmRleCsrXG4gICkge1xuICAgIGNvbnN0IHJvdyA9IHNlbmF0ZXVycy5zbGljZShzZW5hdGV1ckluZGV4LCBzZW5hdGV1ckluZGV4ICsgMjUpXG4gICAgY29uc3QgcGhvdG9zRmlsZW5hbWVzOiBzdHJpbmdbXSA9IFtdXG4gICAgZm9yIChjb25zdCBbY29sdW1uSW5kZXgsIHNlbmF0ZXVyXSBvZiByb3cuZW50cmllcygpKSB7XG4gICAgICBjb25zdCBzZW5hdGV1clN0ZW0gPSBzdGVtRnJvbVNlbmF0ZXVyKHNlbmF0ZXVyKVxuICAgICAgY29uc3QgcGhvdG9GaWxlbmFtZSA9IGAke3NlbmF0ZXVyU3RlbX1fMTU1eDIyNS5qcGdgXG4gICAgICBwaG90b3NGaWxlbmFtZXMucHVzaChwaG90b0ZpbGVuYW1lKVxuICAgICAgcGhvdG9CeUlkU2VuYXRldXJbc2VuYXRldXIudWlkXSA9IHtcbiAgICAgICAgY2hlbWluOiBgcGhvdG9zX3NlbmF0ZXVycy8ke3Bob3RvRmlsZW5hbWV9YCxcbiAgICAgICAgY2hlbWluTW9zYWlxdWU6IGBwaG90b3Nfc2VuYXRldXJzL3NlbmF0ZXVycy5qcGdgLFxuICAgICAgICBoYXV0ZXVyOiAyMjUsXG4gICAgICAgIGxhcmdldXI6IDE1NSxcbiAgICAgICAgeE1vc2FpcXVlOiBjb2x1bW5JbmRleCAqIDE1NSxcbiAgICAgICAgeU1vc2FpcXVlOiByb3dJbmRleCAqIDIyNSxcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3Qgcm93RmlsZW5hbWUgPSBgcm93LSR7cm93SW5kZXh9LmpwZ2BcbiAgICBleGVjU3luYyhgZ20gY29udmVydCAke3Bob3Rvc0ZpbGVuYW1lcy5qb2luKFwiIFwiKX0gK2FwcGVuZCAke3Jvd0ZpbGVuYW1lfWAsIHtcbiAgICAgIGN3ZDogcGhvdG9zRGlyLFxuICAgIH0pXG4gICAgcm93c0ZpbGVuYW1lcy5wdXNoKHJvd0ZpbGVuYW1lKVxuICB9XG4gIGV4ZWNTeW5jKGBnbSBjb252ZXJ0ICR7cm93c0ZpbGVuYW1lcy5qb2luKFwiIFwiKX0gLWFwcGVuZCBzZW5hdGV1cnMuanBnYCwge1xuICAgIGN3ZDogcGhvdG9zRGlyLFxuICB9KVxuICBmb3IgKGNvbnN0IHJvd0ZpbGVuYW1lIG9mIHJvd3NGaWxlbmFtZXMpIHtcbiAgICBmcy51bmxpbmtTeW5jKHBhdGguam9pbihwaG90b3NEaXIsIHJvd0ZpbGVuYW1lKSlcbiAgfVxuXG4gIGNvbnN0IGpzb25GaWxlUGF0aCA9IHBhdGguam9pbihwaG90b3NEaXIsIFwic2VuYXRldXJzLmpzb25cIilcbiAgZnMud3JpdGVGaWxlU3luYyhqc29uRmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KHBob3RvQnlJZFNlbmF0ZXVyLCBudWxsLCAyKSlcblxuICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICByZXR1cm4gZ2l0LmNvbW1pdEFuZFB1c2gocGhvdG9zRGlyLCBcIk5vdXZlbGxlIG1vaXNzb25cIiwgb3B0aW9ucy5yZW1vdGUpXG4gIH1cbiAgcmV0dXJuIDBcbn1cblxuZnVuY3Rpb24gc3RlbUZyb21TZW5hdGV1cihzZW5hdGV1cjogQWN0ZXVyKSB7XG4gIGNvbnN0IHsgYWRyZXNzZXMgfSA9IHNlbmF0ZXVyXG4gIGxldCB1cmwgPSBudWxsXG4gIGZvciAoY29uc3QgYWRyZXNzZSBvZiBhZHJlc3NlcyEpIHtcbiAgICBpZiAoXG4gICAgICBhZHJlc3NlLnhzaVR5cGUgPT09IFwiQWRyZXNzZVNpdGVXZWJfVHlwZVwiICYmXG4gICAgICBhZHJlc3NlLnR5cGVMaWJlbGxlID09PSBcIlVybCBzw6luYXRldXJcIlxuICAgICkge1xuICAgICAgdXJsID0gYWRyZXNzZS52YWxFbGVjXG4gICAgfVxuICB9XG4gIGNvbnN0IG1hdGNoID0gdXJsIS5tYXRjaCgvXmh0dHBzOlxcL1xcL3d3d1xcLnNlbmF0XFwuZnJcXC9zZW5hdGV1clxcLyguKilcXC5odG1sJC8pXG4gIGNvbnN0IHNlbmF0ZXVyU3RlbSA9IG1hdGNoIVsxXVxuICByZXR1cm4gc2VuYXRldXJTdGVtXG59XG5cbnJldHJpZXZlUGhvdG9zU2VuYXRldXJzKClcbiAgLnRoZW4oKGV4aXRDb2RlKSA9PiBwcm9jZXNzLmV4aXQoZXhpdENvZGUpKVxuICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgY29uc29sZS5sb2coZXJyb3IpXG4gICAgcHJvY2Vzcy5leGl0KDEpXG4gIH0pXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEs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
@@ -7,44 +7,10 @@ import path from "path";
7
7
  import { EnabledDatasets } from "../datasets.mjs";
8
8
  import * as git from "../git.mjs";
9
9
  import { loadAssembleeData } from "../loaders.mjs";
10
+ import { cloneAndUpdateGitRepository } from "./retrieve_deputes_photos.mjs";
10
11
  import { CodeTypeOrgane, TypeMandat } from "../types/acteurs_et_organes.mjs";
11
- const optionsDefinitions = [{
12
- alias: "C",
13
- help: "clone repositories from given group (or organization) git URL",
14
- name: "clone",
15
- type: String
16
- }, {
17
- alias: "c",
18
- help: "commit photos",
19
- name: "commit",
20
- type: Boolean
21
- }, {
22
- alias: "f",
23
- help: "fetch sénateurs' pictures instead of retrieving them from files",
24
- name: "fetch",
25
- type: Boolean
26
- }, {
27
- alias: "p",
28
- help: "pull repositories before proceeding",
29
- name: "pull",
30
- type: Boolean
31
- }, {
32
- alias: "r",
33
- help: "push commit to given remote",
34
- multiple: true,
35
- name: "remote",
36
- type: String
37
- }, {
38
- alias: "s",
39
- help: "don't log anything",
40
- name: "silent",
41
- type: Boolean
42
- }, {
43
- defaultOption: true,
44
- help: "directory containing Assemblée open data files",
45
- name: "dataDir",
46
- type: String
47
- }];
12
+ import { cloneOption, commitOption, dataDirDefaultOption, fetchOption, pullOption, remoteOption, silentOption } from "./shared/cli_helpers.mjs";
13
+ const optionsDefinitions = [cloneOption, commitOption, pullOption, remoteOption, silentOption, dataDirDefaultOption, fetchOption];
48
14
  const options = commandLineArgs(optionsDefinitions);
49
15
  // const pipeline = util.promisify(stream.pipeline)
50
16
 
@@ -80,31 +46,9 @@ async function retrievePhotosSenateurs() {
80
46
  }
81
47
  return Boolean(url);
82
48
  }).sort((a, b) => a.uid.length === b.uid.length ? a.uid.localeCompare(b.uid) : a.uid.length - b.uid.length);
83
- const gitGroupUrl = options.clone ? options.clone.trim().replace(/\/+$/, "") : undefined;
84
49
  const photosDirName = "photos_senateurs";
85
- if (gitGroupUrl !== undefined) {
86
- execSync(`git clone ${gitGroupUrl}/${photosDirName}.git`, {
87
- cwd: dataDir,
88
- env: process.env,
89
- encoding: "utf-8",
90
- stdio: ["ignore", "ignore", "pipe"]
91
- });
92
- }
93
50
  const photosDir = path.join(dataDir, photosDirName);
94
- if (options.pull) {
95
- execSync(`git reset --hard origin/master`, {
96
- cwd: photosDir,
97
- env: process.env,
98
- encoding: "utf-8",
99
- stdio: ["ignore", "ignore", "pipe"]
100
- });
101
- execSync(`git pull --rebase`, {
102
- cwd: photosDir,
103
- env: process.env,
104
- encoding: "utf-8",
105
- stdio: ["ignore", "ignore", "pipe"]
106
- });
107
- }
51
+ cloneAndUpdateGitRepository(photosDirName, options);
108
52
 
109
53
  // Download photos.
110
54
  fs.ensureDirSync(photosDir);
@@ -229,4 +173,4 @@ retrievePhotosSenateurs().then(exitCode => process.exit(exitCode)).catch(error =
229
173
  console.log(error);
230
174
  process.exit(1);
231
175
  });
232
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJleGVjU3luYyIsImNvbW1hbmRMaW5lQXJncyIsImZzIiwicGF0aCIsIkVuYWJsZWREYXRhc2V0cyIsImdpdCIsImxvYWRBc3NlbWJsZWVEYXRhIiwiQ29kZVR5cGVPcmdhbmUiLCJUeXBlTWFuZGF0Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiYWxpYXMiLCJoZWxwIiwibmFtZSIsInR5cGUiLCJTdHJpbmciLCJCb29sZWFuIiwibXVsdGlwbGUiLCJkZWZhdWx0T3B0aW9uIiwib3B0aW9ucyIsInJldHJpZXZlUGhvdG9zU2VuYXRldXJzIiwiZGF0YURpciIsImFjdGV1ckJ5VWlkIiwiQWN0ZXVyc0V0T3JnYW5lcyIsImxlZ2lzbGF0dXJlIiwic2VuYXRldXJzIiwiT2JqZWN0IiwidmFsdWVzIiwiZmlsdGVyIiwiYWN0ZXVyIiwibWFuZGF0cyIsIm1hbmRhdFNlbmF0ZXVyIiwibWFuZGF0IiwieHNpVHlwZSIsIk1hbmRhdFBhcmxlbWVudGFpcmVUeXBlIiwidHlwZU9yZ2FuZSIsIlNlbmF0IiwidW5kZWZpbmVkIiwiYWRyZXNzZXMiLCJ1cmwiLCJhZHJlc3NlIiwidHlwZUxpYmVsbGUiLCJ2YWxFbGVjIiwic29ydCIsImEiLCJiIiwidWlkIiwibGVuZ3RoIiwibG9jYWxlQ29tcGFyZSIsImdpdEdyb3VwVXJsIiwiY2xvbmUiLCJ0cmltIiwicmVwbGFjZSIsInBob3Rvc0Rpck5hbWUiLCJjd2QiLCJlbnYiLCJwcm9jZXNzIiwiZW5jb2RpbmciLCJzdGRpbyIsInBob3Rvc0RpciIsImpvaW4iLCJwdWxsIiwiZW5zdXJlRGlyU3luYyIsImZldGNoIiwibWlzc2luZ1Bob3RvRmlsZVBhdGgiLCJzZW5hdGV1ciIsImlkZW50IiwiZXRhdENpdmlsIiwic2VuYXRldXJTdGVtIiwic3RlbUZyb21TZW5hdGV1ciIsInBob3RvRmlsZW5hbWUiLCJwaG90b0ZpbGVQYXRoIiwicGhvdG9UZW1wRmlsZW5hbWUiLCJwaG90b1RlbXBGaWxlUGF0aCIsInVybFBob3RvIiwic2lsZW50IiwiY29uc29sZSIsImxvZyIsInByZW5vbSIsIm5vbSIsInJlbmFtZVN5bmMiLCJlcnJvciIsImV4aXN0c1N5bmMiLCJ3YXJuIiwiY29weUZpbGVTeW5jIiwicGhvdG9CeUlkU2VuYXRldXIiLCJyb3dzRmlsZW5hbWVzIiwic2VuYXRldXJJbmRleCIsInJvd0luZGV4Iiwicm93Iiwic2xpY2UiLCJwaG90b3NGaWxlbmFtZXMiLCJjb2x1bW5JbmRleCIsImVudHJpZXMiLCJwdXNoIiwiY2hlbWluIiwiY2hlbWluTW9zYWlxdWUiLCJoYXV0ZXVyIiwibGFyZ2V1ciIsInhNb3NhaXF1ZSIsInlNb3NhaXF1ZSIsInJvd0ZpbGVuYW1lIiwidW5saW5rU3luYyIsImpzb25GaWxlUGF0aCIsIndyaXRlRmlsZVN5bmMiLCJKU09OIiwic3RyaW5naWZ5IiwiY29tbWl0IiwiY29tbWl0QW5kUHVzaCIsInJlbW90ZSIsIm1hdGNoIiwidGhlbiIsImV4aXRDb2RlIiwiZXhpdCIsImNhdGNoIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvcmV0cmlldmVfc2VuYXRldXJzX3Bob3Rvcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGVjU3luYyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCJcbmltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuLy8gaW1wb3J0IHN0cmVhbSBmcm9tIFwic3RyZWFtXCJcbi8vIGltcG9ydCB1dGlsIGZyb20gXCJ1dGlsXCJcblxuaW1wb3J0IHsgRW5hYmxlZERhdGFzZXRzIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCAqIGFzIGdpdCBmcm9tIFwiLi4vZ2l0XCJcbmltcG9ydCB7IGxvYWRBc3NlbWJsZWVEYXRhIH0gZnJvbSBcIi4uL2xvYWRlcnNcIlxuaW1wb3J0IHtcbiAgQWN0ZXVyLFxuICBDb2RlVHlwZU9yZ2FuZSxcbiAgTWFuZGF0LFxuICBQaG90byxcbiAgVHlwZU1hbmRhdCxcbn0gZnJvbSBcIi4uL3R5cGVzL2FjdGV1cnNfZXRfb3JnYW5lc1wiXG5cbmNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAge1xuICAgIGFsaWFzOiBcIkNcIixcbiAgICBoZWxwOiBcImNsb25lIHJlcG9zaXRvcmllcyBmcm9tIGdpdmVuIGdyb3VwIChvciBvcmdhbml6YXRpb24pIGdpdCBVUkxcIixcbiAgICBuYW1lOiBcImNsb25lXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwiY1wiLFxuICAgIGhlbHA6IFwiY29tbWl0IHBob3Rvc1wiLFxuICAgIG5hbWU6IFwiY29tbWl0XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcImZcIixcbiAgICBoZWxwOiBcImZldGNoIHPDqW5hdGV1cnMnIHBpY3R1cmVzIGluc3RlYWQgb2YgcmV0cmlldmluZyB0aGVtIGZyb20gZmlsZXNcIixcbiAgICBuYW1lOiBcImZldGNoXCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInBcIixcbiAgICBoZWxwOiBcInB1bGwgcmVwb3NpdG9yaWVzIGJlZm9yZSBwcm9jZWVkaW5nXCIsXG4gICAgbmFtZTogXCJwdWxsXCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInJcIixcbiAgICBoZWxwOiBcInB1c2ggY29tbWl0IHRvIGdpdmVuIHJlbW90ZVwiLFxuICAgIG11bHRpcGxlOiB0cnVlLFxuICAgIG5hbWU6IFwicmVtb3RlXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwic1wiLFxuICAgIGhlbHA6IFwiZG9uJ3QgbG9nIGFueXRoaW5nXCIsXG4gICAgbmFtZTogXCJzaWxlbnRcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgZGVmYXVsdE9wdGlvbjogdHJ1ZSxcbiAgICBoZWxwOiBcImRpcmVjdG9yeSBjb250YWluaW5nIEFzc2VtYmzDqWUgb3BlbiBkYXRhIGZpbGVzXCIsXG4gICAgbmFtZTogXCJkYXRhRGlyXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuXVxuY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMpXG4vLyBjb25zdCBwaXBlbGluZSA9IHV0aWwucHJvbWlzaWZ5KHN0cmVhbS5waXBlbGluZSlcblxuYXN5bmMgZnVuY3Rpb24gcmV0cmlldmVQaG90b3NTZW5hdGV1cnMoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgY29uc3QgZGF0YURpciA9IG9wdGlvbnMuZGF0YURpclxuICBjb25zdCB7IGFjdGV1ckJ5VWlkIH0gPSBsb2FkQXNzZW1ibGVlRGF0YShcbiAgICBkYXRhRGlyLFxuICAgIEVuYWJsZWREYXRhc2V0cy5BY3RldXJzRXRPcmdhbmVzLFxuICAgIG9wdGlvbnMubGVnaXNsYXR1cmUsXG4gIClcbiAgY29uc3Qgc2VuYXRldXJzID0gT2JqZWN0LnZhbHVlcyhhY3RldXJCeVVpZClcbiAgICAuZmlsdGVyKChhY3RldXIpID0+IHtcbiAgICAgIGNvbnN0IHsgbWFuZGF0cyB9ID0gYWN0ZXVyXG4gICAgICBpZiAoIW1hbmRhdHMpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICBjb25zdCBtYW5kYXRTZW5hdGV1ciA9IG1hbmRhdHMuZmlsdGVyKFxuICAgICAgICAobWFuZGF0OiBNYW5kYXQpID0+XG4gICAgICAgICAgbWFuZGF0LnhzaVR5cGUgPT09IFR5cGVNYW5kYXQuTWFuZGF0UGFybGVtZW50YWlyZVR5cGUgJiZcbiAgICAgICAgICAvLyBtYW5kYXQubGVnaXNsYXR1cmUgPT09IG9wdGlvbnMubGVnaXNsYXR1cmUgJiZcbiAgICAgICAgICBtYW5kYXQudHlwZU9yZ2FuZSA9PT0gQ29kZVR5cGVPcmdhbmUuU2VuYXQsXG4gICAgICApWzBdXG4gICAgICBpZiAobWFuZGF0U2VuYXRldXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgYWRyZXNzZXMgfSA9IGFjdGV1clxuICAgICAgaWYgKGFkcmVzc2VzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICBsZXQgdXJsID0gbnVsbFxuICAgICAgZm9yIChjb25zdCBhZHJlc3NlIG9mIGFkcmVzc2VzKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBhZHJlc3NlLnhzaVR5cGUgPT09IFwiQWRyZXNzZVNpdGVXZWJfVHlwZVwiICYmXG4gICAgICAgICAgYWRyZXNzZS50eXBlTGliZWxsZSA9PT0gXCJVcmwgc8OpbmF0ZXVyXCJcbiAgICAgICAgKSB7XG4gICAgICAgICAgdXJsID0gYWRyZXNzZS52YWxFbGVjXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBCb29sZWFuKHVybClcbiAgICB9KVxuICAgIC5zb3J0KChhLCBiKSA9PlxuICAgICAgYS51aWQubGVuZ3RoID09PSBiLnVpZC5sZW5ndGhcbiAgICAgICAgPyBhLnVpZC5sb2NhbGVDb21wYXJlKGIudWlkKVxuICAgICAgICA6IGEudWlkLmxlbmd0aCAtIGIudWlkLmxlbmd0aCxcbiAgICApXG5cbiAgY29uc3QgZ2l0R3JvdXBVcmwgPSBvcHRpb25zLmNsb25lXG4gICAgPyBvcHRpb25zLmNsb25lLnRyaW0oKS5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpXG4gICAgOiB1bmRlZmluZWRcbiAgY29uc3QgcGhvdG9zRGlyTmFtZSA9IFwicGhvdG9zX3NlbmF0ZXVyc1wiXG4gIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke3Bob3Rvc0Rpck5hbWV9LmdpdGAsIHtcbiAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgfSlcbiAgfVxuICBjb25zdCBwaG90b3NEaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgcGhvdG9zRGlyTmFtZSlcbiAgaWYgKG9wdGlvbnMucHVsbCkge1xuICAgIGV4ZWNTeW5jKGBnaXQgcmVzZXQgLS1oYXJkIG9yaWdpbi9tYXN0ZXJgLCB7XG4gICAgICBjd2Q6IHBob3Rvc0RpcixcbiAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgfSlcbiAgICBleGVjU3luYyhgZ2l0IHB1bGwgLS1yZWJhc2VgLCB7XG4gICAgICBjd2Q6IHBob3Rvc0RpcixcbiAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgfSlcbiAgfVxuXG4gIC8vIERvd25sb2FkIHBob3Rvcy5cbiAgZnMuZW5zdXJlRGlyU3luYyhwaG90b3NEaXIpXG4gIGlmIChvcHRpb25zLmZldGNoKSB7XG4gICAgY29uc3QgbWlzc2luZ1Bob3RvRmlsZVBhdGggPSBcImltYWdlcy90cmFuc3BhcmVudF8xNTV4MjI1LmpwZ1wiXG4gICAgZm9yIChjb25zdCBzZW5hdGV1ciBvZiBzZW5hdGV1cnMpIHtcbiAgICAgIGNvbnN0IGlkZW50ID0gc2VuYXRldXIuZXRhdENpdmlsLmlkZW50XG4gICAgICBjb25zdCBzZW5hdGV1clN0ZW0gPSBzdGVtRnJvbVNlbmF0ZXVyKHNlbmF0ZXVyKVxuICAgICAgY29uc3QgcGhvdG9GaWxlbmFtZSA9IGAke3NlbmF0ZXVyU3RlbX0uanBnYFxuICAgICAgY29uc3QgcGhvdG9GaWxlUGF0aCA9IHBhdGguam9pbihwaG90b3NEaXIsIHBob3RvRmlsZW5hbWUpXG4gICAgICBjb25zdCBwaG90b1RlbXBGaWxlbmFtZSA9IGAke3NlbmF0ZXVyU3RlbX1fdGVtcC5qcGdgXG4gICAgICBjb25zdCBwaG90b1RlbXBGaWxlUGF0aCA9IHBhdGguam9pbihwaG90b3NEaXIsIHBob3RvVGVtcEZpbGVuYW1lKVxuICAgICAgY29uc3QgdXJsUGhvdG8gPSBgaHR0cHM6Ly93d3cuc2VuYXQuZnIvc2VuaW1nLyR7cGhvdG9GaWxlbmFtZX1gXG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGBMb2FkaW5nIHBob3RvICR7dXJsUGhvdG99IGZvciAke2lkZW50LnByZW5vbX0gJHtpZGVudC5ub2194oCmYCxcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgLy8gZm9yIChsZXQgcmV0cmllcyA9IDA7IHJldHJpZXMgPCAzOyByZXRyaWVzKyspIHtcbiAgICAgIC8vICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmxQaG90bylcbiAgICAgIC8vICAgaWYgKHJlc3BvbnNlLm9rKSB7XG4gICAgICAvLyAgICAgYXdhaXQgcGlwZWxpbmUocmVzcG9uc2UuYm9keSBhcyB1bmtub3duIGFzIE5vZGVKUy5SZWFkYWJsZVN0cmVhbSwgZnMuY3JlYXRlV3JpdGVTdHJlYW0ocGhvdG9UZW1wRmlsZVBhdGgpKVxuICAgICAgLy8gICAgIGZzLnJlbmFtZVN5bmMocGhvdG9UZW1wRmlsZVBhdGgsIHBob3RvRmlsZVBhdGgpXG4gICAgICAvLyAgICAgYnJlYWtcbiAgICAgIC8vICAgfVxuICAgICAgLy8gICBpZiAocmV0cmllcyA+PSAyKSB7XG4gICAgICAvLyAgICAgY29uc29sZS53YXJuKGBGZXRjaCBmYWlsZWQ6ICR7dXJsUGhvdG99ICgke2lkZW50LnByZW5vbX0gJHtpZGVudC5ub219KWApXG4gICAgICAvLyAgICAgY29uc29sZS53YXJuKHJlc3BvbnNlLnN0YXR1cywgcmVzcG9uc2Uuc3RhdHVzVGV4dClcbiAgICAgIC8vICAgICBjb25zb2xlLndhcm4oYXdhaXQgcmVzcG9uc2UudGV4dCgpKVxuICAgICAgLy8gICAgIGlmIChmcy5leGlzdHNTeW5jKHBob3RvRmlsZVBhdGgpKSB7XG4gICAgICAvLyAgICAgICBjb25zb2xlLndhcm4oXCIgID0+IFJldXNpbmcgZXhpc3RpbmcgaW1hZ2VcIilcbiAgICAgIC8vICAgICB9IGVsc2Uge1xuICAgICAgLy8gICAgICAgY29uc29sZS53YXJuKFwiICA9PiBVc2luZyBibGFuayBpbWFnZVwiKVxuICAgICAgLy8gICAgICAgZnMuY29weUZpbGVTeW5jKG1pc3NpbmdQaG90b0ZpbGVQYXRoLCBwaG90b0ZpbGVQYXRoKVxuICAgICAgLy8gICAgIH1cbiAgICAgIC8vICAgICBicmVha1xuICAgICAgLy8gICB9XG4gICAgICAvLyB9XG4gICAgICB0cnkge1xuICAgICAgICBleGVjU3luYyhgd2dldCAtLXF1aWV0IC1PICR7cGhvdG9UZW1wRmlsZW5hbWV9ICR7dXJsUGhvdG99YCwge1xuICAgICAgICAgIGN3ZDogcGhvdG9zRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICAvLyBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgICAgZnMucmVuYW1lU3luYyhwaG90b1RlbXBGaWxlUGF0aCwgcGhvdG9GaWxlUGF0aClcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHBob3RvRmlsZVBhdGgpKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFwiICA9PiBSZXVzaW5nIGV4aXN0aW5nIGltYWdlXCIpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFwiICA9PiBVc2luZyBibGFuayBpbWFnZVwiKVxuICAgICAgICAgIGZzLmNvcHlGaWxlU3luYyhtaXNzaW5nUGhvdG9GaWxlUGF0aCwgcGhvdG9GaWxlUGF0aClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlc2l6ZSBwaG90b3MgdG8gMTU1eDIyNSwgYmVjYXVzZSBzb21lIGhhdmVuJ3QgZXhhY3RseSB0aGlzIHNpemUuXG4gIGZvciAoY29uc3Qgc2VuYXRldXIgb2Ygc2VuYXRldXJzKSB7XG4gICAgY29uc3QgaWRlbnQgPSBzZW5hdGV1ci5ldGF0Q2l2aWwuaWRlbnRcbiAgICBjb25zdCBzZW5hdGV1clN0ZW0gPSBzdGVtRnJvbVNlbmF0ZXVyKHNlbmF0ZXVyKVxuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgUmVzaXppbmcgcGhvdG8gJHtzZW5hdGV1clN0ZW19IGZvciAke2lkZW50LnByZW5vbX0gJHtpZGVudC5ub2194oCmYCxcbiAgICAgIClcbiAgICB9XG4gICAgZXhlY1N5bmMoXG4gICAgICBgZ20gY29udmVydCAtcmVzaXplIDE1NXgyMjUhICR7c2VuYXRldXJTdGVtfS5qcGcgJHtzZW5hdGV1clN0ZW19XzE1NXgyMjUuanBnYCxcbiAgICAgIHtcbiAgICAgICAgY3dkOiBwaG90b3NEaXIsXG4gICAgICB9LFxuICAgIClcbiAgfVxuXG4gIC8vIENyZWF0ZSBhIG1vc2FpYyBvZiBwaG90b3MuXG4gIGNvbnN0IHBob3RvQnlJZFNlbmF0ZXVyOiB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH0gPSB7fVxuICBjb25zdCByb3dzRmlsZW5hbWVzOiBzdHJpbmdbXSA9IFtdXG4gIGZvciAoXG4gICAgbGV0IHNlbmF0ZXVySW5kZXggPSAwLCByb3dJbmRleCA9IDA7XG4gICAgc2VuYXRldXJJbmRleCA8IHNlbmF0ZXVycy5sZW5ndGg7XG4gICAgc2VuYXRldXJJbmRleCArPSAyNSwgcm93SW5kZXgrK1xuICApIHtcbiAgICBjb25zdCByb3cgPSBzZW5hdGV1cnMuc2xpY2Uoc2VuYXRldXJJbmRleCwgc2VuYXRldXJJbmRleCArIDI1KVxuICAgIGNvbnN0IHBob3Rvc0ZpbGVuYW1lczogc3RyaW5nW10gPSBbXVxuICAgIGZvciAoY29uc3QgW2NvbHVtbkluZGV4LCBzZW5hdGV1cl0gb2Ygcm93LmVudHJpZXMoKSkge1xuICAgICAgY29uc3Qgc2VuYXRldXJTdGVtID0gc3RlbUZyb21TZW5hdGV1cihzZW5hdGV1cilcbiAgICAgIGNvbnN0IHBob3RvRmlsZW5hbWUgPSBgJHtzZW5hdGV1clN0ZW19XzE1NXgyMjUuanBnYFxuICAgICAgcGhvdG9zRmlsZW5hbWVzLnB1c2gocGhvdG9GaWxlbmFtZSlcbiAgICAgIHBob3RvQnlJZFNlbmF0ZXVyW3NlbmF0ZXVyLnVpZF0gPSB7XG4gICAgICAgIGNoZW1pbjogYHBob3Rvc19zZW5hdGV1cnMvJHtwaG90b0ZpbGVuYW1lfWAsXG4gICAgICAgIGNoZW1pbk1vc2FpcXVlOiBgcGhvdG9zX3NlbmF0ZXVycy9zZW5hdGV1cnMuanBnYCxcbiAgICAgICAgaGF1dGV1cjogMjI1LFxuICAgICAgICBsYXJnZXVyOiAxNTUsXG4gICAgICAgIHhNb3NhaXF1ZTogY29sdW1uSW5kZXggKiAxNTUsXG4gICAgICAgIHlNb3NhaXF1ZTogcm93SW5kZXggKiAyMjUsXG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHJvd0ZpbGVuYW1lID0gYHJvdy0ke3Jvd0luZGV4fS5qcGdgXG4gICAgZXhlY1N5bmMoYGdtIGNvbnZlcnQgJHtwaG90b3NGaWxlbmFtZXMuam9pbihcIiBcIil9ICthcHBlbmQgJHtyb3dGaWxlbmFtZX1gLCB7XG4gICAgICBjd2Q6IHBob3Rvc0RpcixcbiAgICB9KVxuICAgIHJvd3NGaWxlbmFtZXMucHVzaChyb3dGaWxlbmFtZSlcbiAgfVxuICBleGVjU3luYyhgZ20gY29udmVydCAke3Jvd3NGaWxlbmFtZXMuam9pbihcIiBcIil9IC1hcHBlbmQgc2VuYXRldXJzLmpwZ2AsIHtcbiAgICBjd2Q6IHBob3Rvc0RpcixcbiAgfSlcbiAgZm9yIChjb25zdCByb3dGaWxlbmFtZSBvZiByb3dzRmlsZW5hbWVzKSB7XG4gICAgZnMudW5saW5rU3luYyhwYXRoLmpvaW4ocGhvdG9zRGlyLCByb3dGaWxlbmFtZSkpXG4gIH1cblxuICBjb25zdCBqc29uRmlsZVBhdGggPSBwYXRoLmpvaW4ocGhvdG9zRGlyLCBcInNlbmF0ZXVycy5qc29uXCIpXG4gIGZzLndyaXRlRmlsZVN5bmMoanNvbkZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShwaG90b0J5SWRTZW5hdGV1ciwgbnVsbCwgMikpXG5cbiAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgcmV0dXJuIGdpdC5jb21taXRBbmRQdXNoKHBob3Rvc0RpciwgXCJOb3V2ZWxsZSBtb2lzc29uXCIsIG9wdGlvbnMucmVtb3RlKVxuICB9XG4gIHJldHVybiAwXG59XG5cbmZ1bmN0aW9uIHN0ZW1Gcm9tU2VuYXRldXIoc2VuYXRldXI6IEFjdGV1cikge1xuICBjb25zdCB7IGFkcmVzc2VzIH0gPSBzZW5hdGV1clxuICBsZXQgdXJsID0gbnVsbFxuICBmb3IgKGNvbnN0IGFkcmVzc2Ugb2YgYWRyZXNzZXMhKSB7XG4gICAgaWYgKFxuICAgICAgYWRyZXNzZS54c2lUeXBlID09PSBcIkFkcmVzc2VTaXRlV2ViX1R5cGVcIiAmJlxuICAgICAgYWRyZXNzZS50eXBlTGliZWxsZSA9PT0gXCJVcmwgc8OpbmF0ZXVyXCJcbiAgICApIHtcbiAgICAgIHVybCA9IGFkcmVzc2UudmFsRWxlY1xuICAgIH1cbiAgfVxuICBjb25zdCBtYXRjaCA9IHVybCEubWF0Y2goL15odHRwczpcXC9cXC93d3dcXC5zZW5hdFxcLmZyXFwvc2VuYXRldXJcXC8oLiopXFwuaHRtbCQvKVxuICBjb25zdCBzZW5hdGV1clN0ZW0gPSBtYXRjaCFbMV1cbiAgcmV0dXJuIHNlbmF0ZXVyU3RlbVxufVxuXG5yZXRyaWV2ZVBob3Rvc1NlbmF0ZXVycygpXG4gIC50aGVuKChleGl0Q29kZSkgPT4gcHJvY2Vzcy5leGl0KGV4aXRDb2RlKSlcbiAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgIGNvbnNvbGUubG9nKGVycm9yKVxuICAgIHByb2Nlc3MuZXhpdCgxKVxuICB9KVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxRQUFRLFFBQVEsZUFBZTtBQUN4QyxPQUFPQyxlQUFlLE1BQU0sbUJBQW1CO0FBQy9DLE9BQU9DLEVBQUUsTUFBTSxVQUFVO0FBQ3pCLE9BQU9DLElBQUksTUFBTSxNQUFNO0FBQ3ZCO0FBQ0E7QUFBQSxTQUVTQyxlQUFlO0FBQUEsT0FDakIsS0FBS0MsR0FBRztBQUFBLFNBQ05DLGlCQUFpQjtBQUFBLFNBR3hCQyxjQUFjLEVBR2RDLFVBQVU7QUFHWixNQUFNQyxrQkFBa0IsR0FBRyxDQUN6QjtFQUNFQyxLQUFLLEVBQUUsR0FBRztFQUNWQyxJQUFJLEVBQUUsK0RBQStEO0VBQ3JFQyxJQUFJLEVBQUUsT0FBTztFQUNiQyxJQUFJLEVBQUVDO0FBQ1IsQ0FBQyxFQUNEO0VBQ0VKLEtBQUssRUFBRSxHQUFHO0VBQ1ZDLElBQUksRUFBRSxlQUFlO0VBQ3JCQyxJQUFJLEVBQUUsUUFBUTtFQUNkQyxJQUFJLEVBQUVFO0FBQ1IsQ0FBQyxFQUNEO0VBQ0VMLEtBQUssRUFBRSxHQUFHO0VBQ1ZDLElBQUksRUFBRSxpRUFBaUU7RUFDdkVDLElBQUksRUFBRSxPQUFPO0VBQ2JDLElBQUksRUFBRUU7QUFDUixDQUFDLEVBQ0Q7RUFDRUwsS0FBSyxFQUFFLEdBQUc7RUFDVkMsSUFBSSxFQUFFLHFDQUFxQztFQUMzQ0MsSUFBSSxFQUFFLE1BQU07RUFDWkMsSUFBSSxFQUFFRTtBQUNSLENBQUMsRUFDRDtFQUNFTCxLQUFLLEVBQUUsR0FBRztFQUNWQyxJQUFJLEVBQUUsNkJBQTZCO0VBQ25DSyxRQUFRLEVBQUUsSUFBSTtFQUNkSixJQUFJLEVBQUUsUUFBUTtFQUNkQyxJQUFJLEVBQUVDO0FBQ1IsQ0FBQyxFQUNEO0VBQ0VKLEtBQUssRUFBRSxHQUFHO0VBQ1ZDLElB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
176
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJleGVjU3luYyIsImNvbW1hbmRMaW5lQXJncyIsImZzIiwicGF0aCIsIkVuYWJsZWREYXRhc2V0cyIsImdpdCIsImxvYWRBc3NlbWJsZWVEYXRhIiwiY2xvbmVBbmRVcGRhdGVHaXRSZXBvc2l0b3J5IiwiQ29kZVR5cGVPcmdhbmUiLCJUeXBlTWFuZGF0IiwiY2xvbmVPcHRpb24iLCJjb21taXRPcHRpb24iLCJkYXRhRGlyRGVmYXVsdE9wdGlvbiIsImZldGNoT3B0aW9uIiwicHVsbE9wdGlvbiIsInJlbW90ZU9wdGlvbiIsInNpbGVudE9wdGlvbiIsIm9wdGlvbnNEZWZpbml0aW9ucyIsIm9wdGlvbnMiLCJyZXRyaWV2ZVBob3Rvc1NlbmF0ZXVycyIsImRhdGFEaXIiLCJhY3RldXJCeVVpZCIsIkFjdGV1cnNFdE9yZ2FuZXMiLCJsZWdpc2xhdHVyZSIsInNlbmF0ZXVycyIsIk9iamVjdCIsInZhbHVlcyIsImZpbHRlciIsImFjdGV1ciIsIm1hbmRhdHMiLCJtYW5kYXRTZW5hdGV1ciIsIm1hbmRhdCIsInhzaVR5cGUiLCJNYW5kYXRQYXJsZW1lbnRhaXJlVHlwZSIsInR5cGVPcmdhbmUiLCJTZW5hdCIsInVuZGVmaW5lZCIsImFkcmVzc2VzIiwidXJsIiwiYWRyZXNzZSIsInR5cGVMaWJlbGxlIiwidmFsRWxlYyIsIkJvb2xlYW4iLCJzb3J0IiwiYSIsImIiLCJ1aWQiLCJsZW5ndGgiLCJsb2NhbGVDb21wYXJlIiwicGhvdG9zRGlyTmFtZSIsInBob3Rvc0RpciIsImpvaW4iLCJlbnN1cmVEaXJTeW5jIiwiZmV0Y2giLCJtaXNzaW5nUGhvdG9GaWxlUGF0aCIsInNlbmF0ZXVyIiwiaWRlbnQiLCJldGF0Q2l2aWwiLCJzZW5hdGV1clN0ZW0iLCJzdGVtRnJvbVNlbmF0ZXVyIiwicGhvdG9GaWxlbmFtZSIsInBob3RvRmlsZVBhdGgiLCJwaG90b1RlbXBGaWxlbmFtZSIsInBob3RvVGVtcEZpbGVQYXRoIiwidXJsUGhvdG8iLCJzaWxlbnQiLCJjb25zb2xlIiwibG9nIiwicHJlbm9tIiwibm9tIiwiY3dkIiwiZW52IiwicHJvY2VzcyIsImVuY29kaW5nIiwicmVuYW1lU3luYyIsImVycm9yIiwiZXhpc3RzU3luYyIsIndhcm4iLCJjb3B5RmlsZVN5bmMiLCJwaG90b0J5SWRTZW5hdGV1ciIsInJvd3NGaWxlbmFtZXMiLCJzZW5hdGV1ckluZGV4Iiwicm93SW5kZXgiLCJyb3ciLCJzbGljZSIsInBob3Rvc0ZpbGVuYW1lcyIsImNvbHVtbkluZGV4IiwiZW50cmllcyIsInB1c2giLCJjaGVtaW4iLCJjaGVtaW5Nb3NhaXF1ZSIsImhhdXRldXIiLCJsYXJnZXVyIiwieE1vc2FpcXVlIiwieU1vc2FpcXVlIiwicm93RmlsZW5hbWUiLCJ1bmxpbmtTeW5jIiwianNvbkZpbGVQYXRoIiwid3JpdGVGaWxlU3luYyIsIkpTT04iLCJzdHJpbmdpZnkiLCJjb21taXQiLCJjb21taXRBbmRQdXNoIiwicmVtb3RlIiwibWF0Y2giLCJ0aGVuIiwiZXhpdENvZGUiLCJleGl0IiwiY2F0Y2giXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyaXB0cy9yZXRyaWV2ZV9zZW5hdGV1cnNfcGhvdG9zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIlxuaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG4vLyBpbXBvcnQgc3RyZWFtIGZyb20gXCJzdHJlYW1cIlxuLy8gaW1wb3J0IHV0aWwgZnJvbSBcInV0aWxcIlxuXG5pbXBvcnQgeyBFbmFibGVkRGF0YXNldHMgfSBmcm9tIFwiLi4vZGF0YXNldHNcIlxuaW1wb3J0ICogYXMgZ2l0IGZyb20gXCIuLi9naXRcIlxuaW1wb3J0IHsgbG9hZEFzc2VtYmxlZURhdGEgfSBmcm9tIFwiLi4vbG9hZGVyc1wiXG5pbXBvcnQgeyBjbG9uZUFuZFVwZGF0ZUdpdFJlcG9zaXRvcnkgfSBmcm9tIFwiLi9yZXRyaWV2ZV9kZXB1dGVzX3Bob3Rvc1wiXG5pbXBvcnQge1xuICBBY3RldXIsXG4gIENvZGVUeXBlT3JnYW5lLFxuICBNYW5kYXQsXG4gIFBob3RvLFxuICBUeXBlTWFuZGF0LFxufSBmcm9tIFwiLi4vdHlwZXMvYWN0ZXVyc19ldF9vcmdhbmVzXCJcbmltcG9ydCB7XG4gIGNsb25lT3B0aW9uLFxuICBjb21taXRPcHRpb24sXG4gIGRhdGFEaXJEZWZhdWx0T3B0aW9uLFxuICBmZXRjaE9wdGlvbixcbiAgcHVsbE9wdGlvbixcbiAgcmVtb3RlT3B0aW9uLFxuICBzaWxlbnRPcHRpb24sXG59IGZyb20gXCIuL3NoYXJlZC9jbGlfaGVscGVyc1wiXG5cbmNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAgY2xvbmVPcHRpb24sXG4gIGNvbW1pdE9wdGlvbixcbiAgcHVsbE9wdGlvbixcbiAgcmVtb3RlT3B0aW9uLFxuICBzaWxlbnRPcHRpb24sXG4gIGRhdGFEaXJEZWZhdWx0T3B0aW9uLFxuICBmZXRjaE9wdGlvbixcbl1cbmNvbnN0IG9wdGlvbnMgPSBjb21tYW5kTGluZUFyZ3Mob3B0aW9uc0RlZmluaXRpb25zKVxuLy8gY29uc3QgcGlwZWxpbmUgPSB1dGlsLnByb21pc2lmeShzdHJlYW0ucGlwZWxpbmUpXG5cbmFzeW5jIGZ1bmN0aW9uIHJldHJpZXZlUGhvdG9zU2VuYXRldXJzKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gIGNvbnN0IGRhdGFEaXIgPSBvcHRpb25zLmRhdGFEaXJcbiAgY29uc3QgeyBhY3RldXJCeVVpZCB9ID0gbG9hZEFzc2VtYmxlZURhdGEoXG4gICAgZGF0YURpcixcbiAgICBFbmFibGVkRGF0YXNldHMuQWN0ZXVyc0V0T3JnYW5lcyxcbiAgICBvcHRpb25zLmxlZ2lzbGF0dXJlLFxuICApXG4gIGNvbnN0IHNlbmF0ZXVycyA9IE9iamVjdC52YWx1ZXMoYWN0ZXVyQnlVaWQpXG4gICAgLmZpbHRlcigoYWN0ZXVyKSA9PiB7XG4gICAgICBjb25zdCB7IG1hbmRhdHMgfSA9IGFjdGV1clxuICAgICAgaWYgKCFtYW5kYXRzKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgY29uc3QgbWFuZGF0U2VuYXRldXIgPSBtYW5kYXRzLmZpbHRlcihcbiAgICAgICAgKG1hbmRhdDogTWFuZGF0KSA9PlxuICAgICAgICAgIG1hbmRhdC54c2lUeXBlID09PSBUeXBlTWFuZGF0Lk1hbmRhdFBhcmxlbWVudGFpcmVUeXBlICYmXG4gICAgICAgICAgLy8gbWFuZGF0LmxlZ2lzbGF0dXJlID09PSBvcHRpb25zLmxlZ2lzbGF0dXJlICYmXG4gICAgICAgICAgbWFuZGF0LnR5cGVPcmdhbmUgPT09IENvZGVUeXBlT3JnYW5lLlNlbmF0LFxuICAgICAgKVswXVxuICAgICAgaWYgKG1hbmRhdFNlbmF0ZXVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICBjb25zdCB7IGFkcmVzc2VzIH0gPSBhY3RldXJcbiAgICAgIGlmIChhZHJlc3NlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgbGV0IHVybCA9IG51bGxcbiAgICAgIGZvciAoY29uc3QgYWRyZXNzZSBvZiBhZHJlc3Nlcykge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgYWRyZXNzZS54c2lUeXBlID09PSBcIkFkcmVzc2VTaXRlV2ViX1R5cGVcIiAmJlxuICAgICAgICAgIGFkcmVzc2UudHlwZUxpYmVsbGUgPT09IFwiVXJsIHPDqW5hdGV1clwiXG4gICAgICAgICkge1xuICAgICAgICAgIHVybCA9IGFkcmVzc2UudmFsRWxlY1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gQm9vbGVhbih1cmwpXG4gICAgfSlcbiAgICAuc29ydCgoYSwgYikgPT5cbiAgICAgIGEudWlkLmxlbmd0aCA9PT0gYi51aWQubGVuZ3RoXG4gICAgICAgID8gYS51aWQubG9jYWxlQ29tcGFyZShiLnVpZClcbiAgICAgICAgOiBhLnVpZC5sZW5ndGggLSBiLnVpZC5sZW5ndGgsXG4gICAgKVxuXG4gIGNvbnN0IHBob3Rvc0Rpck5hbWUgPSBcInBob3Rvc19zZW5hdGV1cnNcIlxuICBjb25zdCBwaG90b3NEaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgcGhvdG9zRGlyTmFtZSlcbiAgY2xvbmVBbmRVcGRhdGVHaXRSZXBvc2l0b3J5KHBob3Rvc0Rpck5hbWUsIG9wdGlvbnMpXG5cbiAgLy8gRG93bmxvYWQgcGhvdG9zLlxuICBmcy5lbnN1cmVEaXJTeW5jKHBob3Rvc0RpcilcbiAgaWYgKG9wdGlvbnMuZmV0Y2gpIHtcbiAgICBjb25zdCBtaXNzaW5nUGhvdG9GaWxlUGF0aCA9IFwiaW1hZ2VzL3RyYW5zcGFyZW50XzE1NXgyMjUuanBnXCJcbiAgICBmb3IgKGNvbnN0IHNlbmF0ZXVyIG9mIHNlbmF0ZXVycykge1xuICAgICAgY29uc3QgaWRlbnQgPSBzZW5hdGV1ci5ldGF0Q2l2aWwuaWRlbnRcbiAgICAgIGNvbnN0IHNlbmF0ZXVyU3RlbSA9IHN0ZW1Gcm9tU2VuYXRldXIoc2VuYXRldXIpXG4gICAgICBjb25zdCBwaG90b0ZpbGVuYW1lID0gYCR7c2VuYXRldXJTdGVtfS5qcGdgXG4gICAgICBjb25zdCBwaG90b0ZpbGVQYXRoID0gcGF0aC5qb2luKHBob3Rvc0RpciwgcGhvdG9GaWxlbmFtZSlcbiAgICAgIGNvbnN0IHBob3RvVGVtcEZpbGVuYW1lID0gYCR7c2VuYXRldXJTdGVtfV90ZW1wLmpwZ2BcbiAgICAgIGNvbnN0IHBob3RvVGVtcEZpbGVQYXRoID0gcGF0aC5qb2luKHBob3Rvc0RpciwgcGhvdG9UZW1wRmlsZW5hbWUpXG4gICAgICBjb25zdCB1cmxQaG90byA9IGBodHRwczovL3d3dy5zZW5hdC5mci9zZW5pbWcvJHtwaG90b0ZpbGVuYW1lfWBcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgYExvYWRpbmcgcGhvdG8gJHt1cmxQaG90b30gZm9yICR7aWRlbnQucHJlbm9tfSAke2lkZW50Lm5vbX3igKZgLFxuICAgICAgICApXG4gICAgICB9XG4gICAgICAvLyBmb3IgKGxldCByZXRyaWVzID0gMDsgcmV0cmllcyA8IDM7IHJldHJpZXMrKykge1xuICAgICAgLy8gICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybFBob3RvKVxuICAgICAgLy8gICBpZiAocmVzcG9uc2Uub2spIHtcbiAgICAgIC8vICAgICBhd2FpdCBwaXBlbGluZShyZXNwb25zZS5ib2R5IGFzIHVua25vd24gYXMgTm9kZUpTLlJlYWRhYmxlU3RyZWFtLCBmcy5jcmVhdGVXcml0ZVN0cmVhbShwaG90b1RlbXBGaWxlUGF0aCkpXG4gICAgICAvLyAgICAgZnMucmVuYW1lU3luYyhwaG90b1RlbXBGaWxlUGF0aCwgcGhvdG9GaWxlUGF0aClcbiAgICAgIC8vICAgICBicmVha1xuICAgICAgLy8gICB9XG4gICAgICAvLyAgIGlmIChyZXRyaWVzID49IDIpIHtcbiAgICAgIC8vICAgICBjb25zb2xlLndhcm4oYEZldGNoIGZhaWxlZDogJHt1cmxQaG90b30gKCR7aWRlbnQucHJlbm9tfSAke2lkZW50Lm5vbX0pYClcbiAgICAgIC8vICAgICBjb25zb2xlLndhcm4ocmVzcG9uc2Uuc3RhdHVzLCByZXNwb25zZS5zdGF0dXNUZXh0KVxuICAgICAgLy8gICAgIGNvbnNvbGUud2Fybihhd2FpdCByZXNwb25zZS50ZXh0KCkpXG4gICAgICAvLyAgICAgaWYgKGZzLmV4aXN0c1N5bmMocGhvdG9GaWxlUGF0aCkpIHtcbiAgICAgIC8vICAgICAgIGNvbnNvbGUud2FybihcIiAgPT4gUmV1c2luZyBleGlzdGluZyBpbWFnZVwiKVxuICAgICAgLy8gICAgIH0gZWxzZSB7XG4gICAgICAvLyAgICAgICBjb25zb2xlLndhcm4oXCIgID0+IFVzaW5nIGJsYW5rIGltYWdlXCIpXG4gICAgICAvLyAgICAgICBmcy5jb3B5RmlsZVN5bmMobWlzc2luZ1Bob3RvRmlsZVBhdGgsIHBob3RvRmlsZVBhdGgpXG4gICAgICAvLyAgICAgfVxuICAgICAgLy8gICAgIGJyZWFrXG4gICAgICAvLyAgIH1cbiAgICAgIC8vIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIGV4ZWNTeW5jKGB3Z2V0IC0tcXVpZXQgLU8gJHtwaG90b1RlbXBGaWxlbmFtZX0gJHt1cmxQaG90b31gLCB7XG4gICAgICAgICAgY3dkOiBwaG90b3NEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIC8vIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgICBmcy5yZW5hbWVTeW5jKHBob3RvVGVtcEZpbGVQYXRoLCBwaG90b0ZpbGVQYXRoKVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcilcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMocGhvdG9GaWxlUGF0aCkpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXCIgID0+IFJldXNpbmcgZXhpc3RpbmcgaW1hZ2VcIilcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXCIgID0+IFVzaW5nIGJsYW5rIGltYWdlXCIpXG4gICAgICAgICAgZnMuY29weUZpbGVTeW5jKG1pc3NpbmdQaG90b0ZpbGVQYXRoLCBwaG90b0ZpbGVQYXRoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUmVzaXplIHBob3RvcyB0byAxNTV4MjI1LCBiZWNhdXNlIHNvbWUgaGF2ZW4ndCBleGFjdGx5IHRoaXMgc2l6ZS5cbiAgZm9yIChjb25zdCBzZW5hdGV1ciBvZiBzZW5hdGV1cnMpIHtcbiAgICBjb25zdCBpZGVudCA9IHNlbmF0ZXVyLmV0YXRDaXZpbC5pZGVudFxuICAgIGNvbnN0IHNlbmF0ZXVyU3RlbSA9IHN0ZW1Gcm9tU2VuYXRldXIoc2VuYXRldXIpXG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGBSZXNpemluZyBwaG90byAke3NlbmF0ZXVyU3RlbX0gZm9yICR7aWRlbnQucHJlbm9tfSAke2lkZW50Lm5vbX3igKZgLFxuICAgICAgKVxuICAgIH1cbiAgICBleGVjU3luYyhcbiAgICAgIGBnbSBjb252ZXJ0IC1yZXNpemUgMTU1eDIyNSEgJHtzZW5hdGV1clN0ZW19LmpwZyAke3NlbmF0ZXVyU3RlbX1fMTU1eDIyNS5qcGdgLFxuICAgICAge1xuICAgICAgICBjd2Q6IHBob3Rvc0RpcixcbiAgICAgIH0sXG4gICAgKVxuICB9XG5cbiAgLy8gQ3JlYXRlIGEgbW9zYWljIG9mIHBob3Rvcy5cbiAgY29uc3QgcGhvdG9CeUlkU2VuYXRldXI6IHsgW3VpZDogc3RyaW5nXTogUGhvdG8gfSA9IHt9XG4gIGNvbnN0IHJvd3NGaWxlbmFtZXM6IHN0cmluZ1tdID0gW11cbiAgZm9yIChcbiAgICBsZXQgc2VuYXRldXJJbmRleCA9IDAsIHJvd0luZGV4ID0gMDtcbiAgICBzZW5hdGV1ckluZGV4IDwgc2VuYXRldXJzLmxlbmd0aDtcbiAgICBzZW5hdGV1ckluZGV4ICs9IDI1LCByb3dJbmRleCsrXG4gICkge1xuICAgIGNvbnN0IHJvdyA9IHNlbmF0ZXVycy5zbGljZShzZW5hdGV1ckluZGV4LCBzZW5hdGV1ckluZGV4ICsgMjUpXG4gICAgY29uc3QgcGhvdG9zRmlsZW5hbWVzOiBzdHJpbmdbXSA9IFtdXG4gICAgZm9yIChjb25zdCBbY29sdW1uSW5kZXgsIHNlbmF0ZXVyXSBvZiByb3cuZW50cmllcygpKSB7XG4gICAgICBjb25zdCBzZW5hdGV1clN0ZW0gPSBzdGVtRnJvbVNlbmF0ZXVyKHNlbmF0ZXVyKVxuICAgICAgY29uc3QgcGhvdG9GaWxlbmFtZSA9IGAke3NlbmF0ZXVyU3RlbX1fMTU1eDIyNS5qcGdgXG4gICAgICBwaG90b3NGaWxlbmFtZXMucHVzaChwaG90b0ZpbGVuYW1lKVxuICAgICAgcGhvdG9CeUlkU2VuYXRldXJbc2VuYXRldXIudWlkXSA9IHtcbiAgICAgICAgY2hlbWluOiBgcGhvdG9zX3NlbmF0ZXVycy8ke3Bob3RvRmlsZW5hbWV9YCxcbiAgICAgICAgY2hlbWluTW9zYWlxdWU6IGBwaG90b3Nfc2VuYXRldXJzL3NlbmF0ZXVycy5qcGdgLFxuICAgICAgICBoYXV0ZXVyOiAyMjUsXG4gICAgICAgIGxhcmdldXI6IDE1NSxcbiAgICAgICAgeE1vc2FpcXVlOiBjb2x1bW5JbmRleCAqIDE1NSxcbiAgICAgICAgeU1vc2FpcXVlOiByb3dJbmRleCAqIDIyNSxcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3Qgcm93RmlsZW5hbWUgPSBgcm93LSR7cm93SW5kZXh9LmpwZ2BcbiAgICBleGVjU3luYyhgZ20gY29udmVydCAke3Bob3Rvc0ZpbGVuYW1lcy5qb2luKFwiIFwiKX0gK2FwcGVuZCAke3Jvd0ZpbGVuYW1lfWAsIHtcbiAgICAgIGN3ZDogcGhvdG9zRGlyLFxuICAgIH0pXG4gICAgcm93c0ZpbGVuYW1lcy5wdXNoKHJvd0ZpbGVuYW1lKVxuICB9XG4gIGV4ZWNTeW5jKGBnbSBjb252ZXJ0ICR7cm93c0ZpbGVuYW1lcy5qb2luKFwiIFwiKX0gLWFwcGVuZCBzZW5hdGV1cnMuanBnYCwge1xuICAgIGN3ZDogcGhvdG9zRGlyLFxuICB9KVxuICBmb3IgKGNvbnN0IHJvd0ZpbGVuYW1lIG9mIHJvd3NGaWxlbmFtZXMpIHtcbiAgICBmcy51bmxpbmtTeW5jKHBhdGguam9pbihwaG90b3NEaXIsIHJvd0ZpbGVuYW1lKSlcbiAgfVxuXG4gIGNvbnN0IGpzb25GaWxlUGF0aCA9IHBhdGguam9pbihwaG90b3NEaXIsIFwic2VuYXRldXJzLmpzb25cIilcbiAgZnMud3JpdGVGaWxlU3luYyhqc29uRmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KHBob3RvQnlJZFNlbmF0ZXVyLCBudWxsLCAyKSlcblxuICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICByZXR1cm4gZ2l0LmNvbW1pdEFuZFB1c2gocGhvdG9zRGlyLCBcIk5vdXZlbGxlIG1vaXNzb25cIiwgb3B0aW9ucy5yZW1vdGUpXG4gIH1cbiAgcmV0dXJuIDBcbn1cblxuZnVuY3Rpb24gc3RlbUZyb21TZW5hdGV1cihzZW5hdGV1cjogQWN0ZXVyKSB7XG4gIGNvbnN0IHsgYWRyZXNzZXMgfSA9IHNlbmF0ZXVyXG4gIGxldCB1cmwgPSBudWxsXG4gIGZvciAoY29uc3QgYWRyZXNzZSBvZiBhZHJlc3NlcyEpIHtcbiAgICBpZiAoXG4gICAgICBhZHJlc3NlLnhzaVR5cGUgPT09IFwiQWRyZXNzZVNpdGVXZWJfVHlwZVwiICYmXG4gICAgICBhZHJlc3NlLnR5cGVMaWJlbGxlID09PSBcIlVybCBzw6luYXRldXJcIlxuICAgICkge1xuICAgICAgdXJsID0gYWRyZXNzZS52YWxFbGVjXG4gICAgfVxuICB9XG4gIGNvbnN0IG1hdGNoID0gdXJsIS5tYXRjaCgvXmh0dHBzOlxcL1xcL3d3d1xcLnNlbmF0XFwuZnJcXC9zZW5hdGV1clxcLyguKilcXC5odG1sJC8pXG4gIGNvbnN0IHNlbmF0ZXVyU3RlbSA9IG1hdGNoIVsxXVxuICByZXR1cm4gc2VuYXRldXJTdGVtXG59XG5cbnJldHJpZXZlUGhvdG9zU2VuYXRldXJzKClcbiAgLnRoZW4oKGV4aXRDb2RlKSA9PiBwcm9jZXNzLmV4aXQoZXhpdENvZGUpKVxuICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgY29uc29sZS5sb2coZXJyb3IpXG4gICAgcHJvY2Vzcy5leGl0KDEpXG4gIH0pXG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFFBQVEsUUFBUSxlQUFlO0FBQ3hDLE9BQU9DLGVBQWUsTUFBTSxtQkFBbUI7QUFDL0MsT0FBT0MsRUFBRSxNQUFNLFVBQVU7QUFDekIsT0FBT0MsSUFBSSxNQUFNLE1BQU07QUFDdkI7QUFDQTtBQUFBLFNBRVNDLGVBQWU7QUFBQSxPQUNqQixLQUFLQyxHQUFHO0FBQUEsU0FDTkMsaUJBQWlC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