@tricoteuses/senat 1.1.1 → 1.3.1

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 (259) hide show
  1. package/README.md +53 -15
  2. package/lib/aggregates.d.ts +4 -6
  3. package/lib/aggregates.mjs +908 -780
  4. package/lib/aggregates.ts +8 -122
  5. package/lib/data/legislatures.json +38 -0
  6. package/lib/databases.d.ts +9 -0
  7. package/lib/databases.js +41 -11
  8. package/lib/databases.mjs +32 -1
  9. package/lib/databases.ts +40 -1
  10. package/lib/fields.mjs +64 -18
  11. package/lib/index.d.ts +5 -6
  12. package/lib/index.js +8 -99
  13. package/lib/index.mjs +4 -6
  14. package/lib/index.ts +9 -26
  15. package/lib/inserters.d.ts +0 -4
  16. package/lib/inserters.mjs +461 -337
  17. package/lib/inserters.ts +0 -24
  18. package/lib/legislatures.json +38 -0
  19. package/lib/loaders.d.ts +64 -0
  20. package/lib/loaders.js +682 -0
  21. package/lib/loaders.mjs +158 -0
  22. package/lib/loaders.ts +271 -0
  23. package/lib/model/ameli.d.ts +105 -4
  24. package/lib/model/ameli.js +20 -160
  25. package/lib/model/ameli.mjs +84 -57
  26. package/lib/model/ameli.ts +94 -80
  27. package/lib/model/debats.d.ts +0 -4
  28. package/lib/model/debats.js +1 -122
  29. package/lib/model/debats.mjs +1 -43
  30. package/lib/model/debats.ts +0 -68
  31. package/lib/model/dosleg.d.ts +227 -29
  32. package/lib/model/dosleg.js +92 -832
  33. package/lib/model/dosleg.mjs +196 -337
  34. package/lib/model/dosleg.ts +213 -531
  35. package/lib/model/index.d.ts +4 -5
  36. package/lib/model/index.js +14 -15
  37. package/lib/model/index.mjs +4 -5
  38. package/lib/model/index.ts +8 -5
  39. package/lib/model/questions.d.ts +88 -2
  40. package/lib/model/questions.js +40 -45
  41. package/lib/model/questions.mjs +71 -8
  42. package/lib/model/questions.ts +90 -11
  43. package/lib/model/sens.d.ts +524 -2
  44. package/lib/model/sens.js +172 -49
  45. package/lib/model/sens.mjs +415 -9
  46. package/lib/model/sens.ts +514 -16
  47. package/lib/model/texte.d.ts +7 -0
  48. package/lib/model/texte.js +321 -0
  49. package/lib/model/texte.mjs +208 -0
  50. package/lib/model/texte.ts +229 -0
  51. package/lib/model/util.d.ts +7 -1
  52. package/lib/model/util.js +37 -53
  53. package/lib/model/util.mjs +19 -10
  54. package/lib/model/util.ts +30 -14
  55. package/lib/raw_types/ameli.d.ts +912 -538
  56. package/lib/raw_types/ameli.js +1 -39
  57. package/lib/raw_types/ameli.mjs +4 -1
  58. package/lib/raw_types/ameli.ts +947 -597
  59. package/lib/raw_types/debats.d.ts +204 -124
  60. package/lib/raw_types/debats.js +1 -18
  61. package/lib/raw_types/debats.mjs +4 -1
  62. package/lib/raw_types/debats.ts +218 -141
  63. package/lib/raw_types/dosleg.d.ts +3533 -2024
  64. package/lib/raw_types/dosleg.js +1 -92
  65. package/lib/raw_types/dosleg.mjs +4 -1
  66. package/lib/raw_types/dosleg.ts +3621 -2189
  67. package/lib/raw_types/questions.d.ts +404 -220
  68. package/lib/raw_types/questions.js +1 -18
  69. package/lib/raw_types/questions.mjs +4 -1
  70. package/lib/raw_types/questions.ts +404 -226
  71. package/lib/raw_types/sens.d.ts +4391 -2706
  72. package/lib/raw_types/sens.js +1 -108
  73. package/lib/raw_types/sens.mjs +4 -1
  74. package/lib/raw_types/sens.ts +4495 -2903
  75. package/lib/raw_types_kysely/ameli.d.ts +6 -0
  76. package/lib/raw_types_kysely/ameli.mjs +7 -0
  77. package/lib/raw_types_kysely/ameli.ts +6 -0
  78. package/lib/raw_types_kysely/debats.d.ts +6 -0
  79. package/lib/raw_types_kysely/debats.mjs +7 -0
  80. package/lib/raw_types_kysely/debats.ts +6 -0
  81. package/lib/raw_types_kysely/dosleg.d.ts +6 -0
  82. package/lib/raw_types_kysely/dosleg.mjs +7 -0
  83. package/lib/raw_types_kysely/dosleg.ts +6 -0
  84. package/lib/raw_types_kysely/questions.d.ts +6 -0
  85. package/lib/raw_types_kysely/questions.mjs +7 -0
  86. package/lib/raw_types_kysely/questions.ts +6 -0
  87. package/lib/raw_types_kysely/sens.d.ts +6 -0
  88. package/lib/raw_types_kysely/sens.mjs +7 -0
  89. package/lib/raw_types_kysely/sens.ts +6 -0
  90. package/lib/raw_types_kysely/texte.d.ts +45 -0
  91. package/lib/raw_types_kysely/texte.mjs +7 -0
  92. package/lib/raw_types_kysely/texte.ts +53 -0
  93. package/lib/raw_types_schemats/ameli.d.ts +541 -0
  94. package/lib/raw_types_schemats/ameli.js +45 -0
  95. package/lib/raw_types_schemats/ameli.mjs +2 -0
  96. package/lib/raw_types_schemats/ameli.ts +601 -0
  97. package/lib/raw_types_schemats/debats.d.ts +127 -0
  98. package/lib/raw_types_schemats/debats.js +24 -0
  99. package/lib/raw_types_schemats/debats.mjs +2 -0
  100. package/lib/raw_types_schemats/debats.ts +145 -0
  101. package/lib/raw_types_schemats/dosleg.d.ts +2029 -0
  102. package/lib/raw_types_schemats/dosleg.js +98 -0
  103. package/lib/raw_types_schemats/dosleg.mjs +2 -0
  104. package/lib/raw_types_schemats/dosleg.ts +2195 -0
  105. package/lib/raw_types_schemats/questions.d.ts +233 -0
  106. package/lib/raw_types_schemats/questions.js +24 -0
  107. package/lib/raw_types_schemats/questions.mjs +2 -0
  108. package/lib/raw_types_schemats/questions.ts +251 -0
  109. package/lib/raw_types_schemats/sens.d.ts +2709 -0
  110. package/lib/raw_types_schemats/sens.js +114 -0
  111. package/lib/raw_types_schemats/sens.mjs +2 -0
  112. package/lib/raw_types_schemats/sens.ts +2907 -0
  113. package/lib/scripts/convert_data.js +574 -215
  114. package/lib/scripts/convert_data.mjs +134 -99
  115. package/lib/scripts/convert_data.ts +173 -112
  116. package/lib/scripts/datautil.d.ts +5 -0
  117. package/lib/scripts/datautil.js +64 -0
  118. package/lib/scripts/datautil.mjs +16 -0
  119. package/lib/scripts/datautil.ts +19 -0
  120. package/lib/scripts/parse_textes.js +132 -0
  121. package/lib/scripts/parse_textes.mjs +46 -0
  122. package/lib/scripts/parse_textes.ts +65 -0
  123. package/lib/scripts/retrieve_documents.d.ts +1 -0
  124. package/lib/scripts/retrieve_documents.js +521 -0
  125. package/lib/scripts/retrieve_documents.mjs +249 -0
  126. package/lib/scripts/retrieve_documents.ts +298 -0
  127. package/lib/scripts/retrieve_open_data.js +77 -69
  128. package/lib/scripts/retrieve_open_data.mjs +48 -49
  129. package/lib/scripts/retrieve_open_data.ts +74 -58
  130. package/lib/scripts/retrieve_senateurs_photos.js +45 -63
  131. package/lib/scripts/retrieve_senateurs_photos.mjs +4 -21
  132. package/lib/scripts/retrieve_senateurs_photos.ts +6 -29
  133. package/lib/scripts/retrieve_textes.mjs +325 -74
  134. package/lib/scripts/retrieve_textes.ts +111 -63
  135. package/lib/scripts/shared/cli_helpers.d.ts +44 -0
  136. package/lib/scripts/shared/cli_helpers.js +35 -0
  137. package/lib/scripts/shared/cli_helpers.ts +36 -0
  138. package/lib/scripts/shared/util.d.ts +3 -0
  139. package/lib/scripts/shared/util.js +102 -0
  140. package/lib/scripts/shared/util.ts +33 -0
  141. package/lib/src/aggregates.d.ts +52 -0
  142. package/lib/src/aggregates.mjs +726 -0
  143. package/lib/src/config.d.ts +2 -0
  144. package/lib/src/config.mjs +16 -0
  145. package/lib/src/databases.d.ts +18 -0
  146. package/lib/src/databases.mjs +55 -0
  147. package/lib/src/datasets.d.ts +28 -0
  148. package/lib/src/datasets.mjs +78 -0
  149. package/lib/src/fields.d.ts +10 -0
  150. package/lib/src/fields.mjs +22 -0
  151. package/lib/src/index.d.ts +8 -0
  152. package/lib/src/index.mjs +7 -0
  153. package/lib/src/inserters.d.ts +98 -0
  154. package/lib/src/inserters.mjs +360 -0
  155. package/lib/src/loaders.d.ts +36 -0
  156. package/lib/src/loaders.mjs +107 -0
  157. package/lib/src/model/ameli.d.ts +4 -0
  158. package/lib/src/model/ameli.js +57 -0
  159. package/lib/src/model/debats.d.ts +4 -0
  160. package/lib/src/model/debats.js +43 -0
  161. package/lib/src/model/dosleg.d.ts +197 -0
  162. package/lib/src/model/dosleg.js +169 -0
  163. package/lib/src/model/index.d.ts +4 -0
  164. package/lib/src/model/index.js +4 -0
  165. package/lib/src/model/questions.d.ts +89 -0
  166. package/lib/src/model/questions.js +76 -0
  167. package/lib/src/model/sens.d.ts +390 -0
  168. package/lib/src/model/sens.js +339 -0
  169. package/lib/src/model/texte.d.ts +7 -0
  170. package/lib/src/model/texte.js +183 -0
  171. package/lib/src/raw_types_kysely/ameli.d.ts +915 -0
  172. package/lib/src/raw_types_kysely/ameli.js +5 -0
  173. package/lib/src/raw_types_kysely/debats.d.ts +207 -0
  174. package/lib/src/raw_types_kysely/debats.js +5 -0
  175. package/lib/src/raw_types_kysely/dosleg.d.ts +3532 -0
  176. package/lib/src/raw_types_kysely/dosleg.js +5 -0
  177. package/lib/src/raw_types_kysely/questions.d.ts +414 -0
  178. package/lib/src/raw_types_kysely/questions.js +5 -0
  179. package/lib/src/raw_types_kysely/sens.d.ts +4394 -0
  180. package/lib/src/raw_types_kysely/sens.js +5 -0
  181. package/lib/src/raw_types_schemats/ameli.d.ts +541 -0
  182. package/lib/src/raw_types_schemats/ameli.js +2 -0
  183. package/lib/src/raw_types_schemats/debats.d.ts +127 -0
  184. package/lib/src/raw_types_schemats/debats.js +2 -0
  185. package/lib/src/raw_types_schemats/dosleg.d.ts +2027 -0
  186. package/lib/src/raw_types_schemats/dosleg.js +2 -0
  187. package/lib/src/raw_types_schemats/questions.d.ts +231 -0
  188. package/lib/src/raw_types_schemats/questions.js +2 -0
  189. package/lib/src/raw_types_schemats/sens.d.ts +2709 -0
  190. package/lib/src/raw_types_schemats/sens.js +2 -0
  191. package/lib/src/scripts/convert_data.d.ts +1 -0
  192. package/lib/src/scripts/convert_data.js +95 -0
  193. package/lib/src/scripts/datautil.d.ts +5 -0
  194. package/lib/src/scripts/datautil.js +16 -0
  195. package/lib/src/scripts/parse_textes.d.ts +1 -0
  196. package/lib/src/scripts/parse_textes.js +47 -0
  197. package/lib/src/scripts/retrieve_documents.d.ts +1 -0
  198. package/lib/src/scripts/retrieve_documents.js +258 -0
  199. package/lib/src/scripts/retrieve_open_data.d.ts +1 -0
  200. package/lib/src/scripts/retrieve_open_data.js +214 -0
  201. package/lib/src/scripts/retrieve_senateurs_photos.d.ts +1 -0
  202. package/lib/src/scripts/retrieve_senateurs_photos.js +147 -0
  203. package/lib/src/scripts/shared/cli_helpers.d.ts +44 -0
  204. package/lib/src/scripts/shared/cli_helpers.js +32 -0
  205. package/lib/src/scripts/shared/util.d.ts +3 -0
  206. package/lib/src/scripts/shared/util.js +28 -0
  207. package/lib/src/strings.d.ts +1 -0
  208. package/lib/src/strings.mjs +18 -0
  209. package/lib/src/types/ameli.d.ts +10 -0
  210. package/lib/src/types/ameli.js +13 -0
  211. package/lib/src/types/debats.d.ts +4 -0
  212. package/lib/src/types/debats.js +2 -0
  213. package/lib/src/types/dosleg.d.ts +98 -0
  214. package/lib/src/types/dosleg.js +151 -0
  215. package/lib/src/types/questions.d.ts +2 -0
  216. package/lib/src/types/questions.js +1 -0
  217. package/lib/src/types/sens.d.ts +10 -0
  218. package/lib/src/types/sens.js +1 -0
  219. package/lib/src/types/sessions.d.ts +42 -0
  220. package/lib/src/types/sessions.js +43 -0
  221. package/lib/src/types/texte.d.ts +61 -0
  222. package/lib/src/types/texte.js +16 -0
  223. package/lib/src/validators/config.d.ts +1 -0
  224. package/lib/src/validators/config.js +54 -0
  225. package/lib/src/validators/senat.d.ts +0 -0
  226. package/lib/src/validators/senat.js +24 -0
  227. package/lib/types/ameli.d.ts +1 -1
  228. package/lib/types/ameli.js +2 -2
  229. package/lib/types/ameli.ts +1 -1
  230. package/lib/types/debats.d.ts +1 -1
  231. package/lib/types/debats.js +2 -2
  232. package/lib/types/debats.ts +1 -1
  233. package/lib/types/dosleg.d.ts +2 -2
  234. package/lib/types/dosleg.js +2 -2
  235. package/lib/types/dosleg.ts +2 -2
  236. package/lib/types/questions.d.ts +1 -1
  237. package/lib/types/questions.js +2 -2
  238. package/lib/types/questions.ts +1 -1
  239. package/lib/types/sens.d.ts +1 -3
  240. package/lib/types/sens.js +2 -5
  241. package/lib/types/sens.mjs +1 -23
  242. package/lib/types/sens.ts +1 -25
  243. package/lib/types/sessions.d.ts +42 -0
  244. package/lib/types/sessions.js +51 -0
  245. package/lib/types/sessions.mjs +43 -0
  246. package/lib/types/sessions.ts +42 -0
  247. package/lib/types/texte.d.ts +65 -0
  248. package/lib/types/texte.js +24 -0
  249. package/lib/types/texte.mjs +16 -0
  250. package/lib/types/texte.ts +76 -0
  251. package/package.json +35 -10
  252. package/lib/aggregates.js +0 -1122
  253. package/lib/fields.js +0 -68
  254. package/lib/inserters.js +0 -518
  255. package/lib/scripts/fix_db.js +0 -144
  256. package/lib/scripts/fix_db.mjs +0 -64
  257. package/lib/scripts/fix_db.ts +0 -75
  258. package/lib/scripts/retrieve_textes.js +0 -179
  259. /package/lib/scripts/{fix_db.d.ts → parse_textes.d.ts} +0 -0
@@ -0,0 +1,521 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ require("core-js/modules/es.symbol.js");
5
+ require("core-js/modules/es.symbol.description.js");
6
+ require("core-js/modules/es.symbol.iterator.js");
7
+ require("core-js/modules/es.array.for-each.js");
8
+ require("core-js/modules/es.array.from.js");
9
+ require("core-js/modules/es.array.is-array.js");
10
+ require("core-js/modules/es.array.iterator.js");
11
+ require("core-js/modules/es.array.slice.js");
12
+ require("core-js/modules/es.object.create.js");
13
+ require("core-js/modules/es.object.define-property.js");
14
+ require("core-js/modules/es.object.get-prototype-of.js");
15
+ require("core-js/modules/es.object.set-prototype-of.js");
16
+ require("core-js/modules/es.promise.js");
17
+ require("core-js/modules/es.regexp.exec.js");
18
+ require("core-js/modules/es.string.iterator.js");
19
+ require("core-js/modules/web.dom-collections.for-each.js");
20
+ require("core-js/modules/web.dom-collections.iterator.js");
21
+ require("core-js/modules/es.array.concat.js");
22
+ require("core-js/modules/es.array.join.js");
23
+ require("core-js/modules/es.date.to-string.js");
24
+ require("core-js/modules/es.function.name.js");
25
+ require("core-js/modules/es.object.to-string.js");
26
+ require("core-js/modules/es.regexp.to-string.js");
27
+ var _assert = _interopRequireDefault(require("assert"));
28
+ var _commandLineArgs = _interopRequireDefault(require("command-line-args"));
29
+ var _fsExtra = _interopRequireDefault(require("fs-extra"));
30
+ var _path = _interopRequireDefault(require("path"));
31
+ var _loaders = require("../loaders");
32
+ var _texte = require("../model/texte");
33
+ var _datautil = require("./datautil");
34
+ var _cli_helpers = require("./shared/cli_helpers");
35
+ var _util = require("./shared/util");
36
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
37
+ 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; } } }; }
38
+ function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return r; }; var t, r = {}, e = Object.prototype, n = e.hasOwnProperty, o = "function" == typeof Symbol ? Symbol : {}, i = o.iterator || "@@iterator", a = o.asyncIterator || "@@asyncIterator", u = o.toStringTag || "@@toStringTag"; function c(t, r, e, n) { Object.defineProperty(t, r, { value: e, enumerable: !n, configurable: !n, writable: !n }); } try { c({}, ""); } catch (t) { c = function c(t, r, e) { return t[r] = e; }; } function h(r, e, n, o) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype); return c(a, "_invoke", function (r, e, n) { var o = 1; return function (i, a) { if (3 === o) throw Error("Generator is already running"); if (4 === o) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var u = n.delegate; if (u) { var c = d(u, n); if (c) { if (c === f) continue; return c; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (1 === o) throw o = 4, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = 3; var h = s(r, e, n); if ("normal" === h.type) { if (o = n.done ? 4 : 2, h.arg === f) continue; return { value: h.arg, done: n.done }; } "throw" === h.type && (o = 4, n.method = "throw", n.arg = h.arg); } }; }(r, n, new Context(o || [])), !0), a; } function s(t, r, e) { try { return { type: "normal", arg: t.call(r, e) }; } catch (t) { return { type: "throw", arg: t }; } } r.wrap = h; var f = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var l = {}; c(l, i, function () { return this; }); var p = Object.getPrototypeOf, y = p && p(p(x([]))); y && y !== e && n.call(y, i) && (l = y); var v = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(l); function g(t) { ["next", "throw", "return"].forEach(function (r) { c(t, r, function (t) { return this._invoke(r, t); }); }); } function AsyncIterator(t, r) { function e(o, i, a, u) { var c = s(t[o], t, i); if ("throw" !== c.type) { var h = c.arg, f = h.value; return f && "object" == _typeof(f) && n.call(f, "__await") ? r.resolve(f.__await).then(function (t) { e("next", t, a, u); }, function (t) { e("throw", t, a, u); }) : r.resolve(f).then(function (t) { h.value = t, a(h); }, function (t) { return e("throw", t, a, u); }); } u(c.arg); } var o; c(this, "_invoke", function (t, n) { function i() { return new r(function (r, o) { e(t, n, r, o); }); } return o = o ? o.then(i, i) : i(); }, !0); } function d(r, e) { var n = e.method, o = r.i[n]; if (o === t) return e.delegate = null, "throw" === n && r.i["return"] && (e.method = "return", e.arg = t, d(r, e), "throw" === e.method) || "return" !== n && (e.method = "throw", e.arg = new TypeError("The iterator does not provide a '" + n + "' method")), f; var i = s(o, r.i, e.arg); if ("throw" === i.type) return e.method = "throw", e.arg = i.arg, e.delegate = null, f; var a = i.arg; return a ? a.done ? (e[r.r] = a.value, e.next = r.n, "return" !== e.method && (e.method = "next", e.arg = t), e.delegate = null, f) : a : (e.method = "throw", e.arg = new TypeError("iterator result is not an object"), e.delegate = null, f); } function w(t) { this.tryEntries.push(t); } function m(r) { var e = r[4] || {}; e.type = "normal", e.arg = t, r[4] = e; } function Context(t) { this.tryEntries = [[-1]], t.forEach(w, this), this.reset(!0); } function x(r) { if (null != r) { var e = r[i]; if (e) return e.call(r); if ("function" == typeof r.next) return r; if (!isNaN(r.length)) { var o = -1, a = function e() { for (; ++o < r.length;) if (n.call(r, o)) return e.value = r[o], e.done = !1, e; return e.value = t, e.done = !0, e; }; return a.next = a; } } throw new TypeError(_typeof(r) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, c(v, "constructor", GeneratorFunctionPrototype), c(GeneratorFunctionPrototype, "constructor", GeneratorFunction), c(GeneratorFunctionPrototype, u, GeneratorFunction.displayName = "GeneratorFunction"), r.isGeneratorFunction = function (t) { var r = "function" == typeof t && t.constructor; return !!r && (r === GeneratorFunction || "GeneratorFunction" === (r.displayName || r.name)); }, r.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, c(t, u, "GeneratorFunction")), t.prototype = Object.create(v), t; }, r.awrap = function (t) { return { __await: t }; }, g(AsyncIterator.prototype), c(AsyncIterator.prototype, a, function () { return this; }), r.AsyncIterator = AsyncIterator, r.async = function (t, e, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(h(t, e, n, o), i); return r.isGeneratorFunction(e) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, g(v), c(v, u, "Generator"), c(v, i, function () { return this; }), c(v, "toString", function () { return "[object Generator]"; }), r.keys = function (t) { var r = Object(t), e = []; for (var n in r) e.unshift(n); return function t() { for (; e.length;) if ((n = e.pop()) in r) return t.value = n, t.done = !1, t; return t.done = !0, t; }; }, r.values = x, Context.prototype = { constructor: Context, reset: function reset(r) { if (this.prev = this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(m), !r) for (var e in this) "t" === e.charAt(0) && n.call(this, e) && !isNaN(+e.slice(1)) && (this[e] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0][4]; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(r) { if (this.done) throw r; var e = this; function n(t) { a.type = "throw", a.arg = r, e.next = t; } for (var o = e.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i[4], u = this.prev, c = i[1], h = i[2]; if (-1 === i[0]) return n("end"), !1; if (!c && !h) throw Error("try statement without catch or finally"); if (null != i[0] && i[0] <= u) { if (u < c) return this.method = "next", this.arg = t, n(c), !0; if (u < h) return n(h), !1; } } }, abrupt: function abrupt(t, r) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var n = this.tryEntries[e]; if (n[0] > -1 && n[0] <= this.prev && this.prev < n[2]) { var o = n; break; } } o && ("break" === t || "continue" === t) && o[0] <= r && r <= o[2] && (o = null); var i = o ? o[4] : {}; return i.type = t, i.arg = r, o ? (this.method = "next", this.next = o[2], f) : this.complete(i); }, complete: function complete(t, r) { 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 && r && (this.next = r), f; }, finish: function finish(t) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var e = this.tryEntries[r]; if (e[2] === t) return this.complete(e[4], e[3]), m(e), f; } }, "catch": function _catch(t) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var e = this.tryEntries[r]; if (e[0] === t) { var n = e[4]; if ("throw" === n.type) { var o = n.arg; m(e); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(r, e, n) { return this.delegate = { i: x(r), r: e, n: n }, "next" === this.method && (this.arg = t), f; } }, r; }
39
+ 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); }
40
+ 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); }); }; }
41
+ function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
42
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
43
+ 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; } }
44
+ function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
45
+ function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
46
+ 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; }
47
+ var optionsDefinitions = [].concat(_toConsumableArray(_cli_helpers.commonOptions), [{
48
+ help: "sessions of textes to retrieve; leave empty for all",
49
+ multiple: true,
50
+ name: "sessions",
51
+ type: String
52
+ }, {
53
+ help: "parse and convert documents into JSON (textes only for now, requires format xml)",
54
+ name: "parseDocuments",
55
+ type: Boolean
56
+ }, {
57
+ alias: "F",
58
+ help: "formats of documents to retrieve (xml/html/pdf for textes, html/pdf for rapports); leave empty for all",
59
+ multiple: true,
60
+ name: "formats",
61
+ type: String
62
+ }, {
63
+ help: "types of documents to retrieve (textes/rapports); leave empty for all",
64
+ multiple: true,
65
+ name: "types",
66
+ type: String
67
+ }, {
68
+ help: "force retrieve all documents, even already retrieved ones",
69
+ name: "force",
70
+ type: Boolean
71
+ }]);
72
+ var options = (0, _commandLineArgs["default"])(optionsDefinitions);
73
+ var textDecoder = new TextDecoder("utf8");
74
+ function retrieveDocument(_x) {
75
+ return _retrieveDocument.apply(this, arguments);
76
+ }
77
+ function _retrieveDocument() {
78
+ _retrieveDocument = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(documentUrl) {
79
+ var response;
80
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
81
+ while (1) switch (_context.prev = _context.next) {
82
+ case 0:
83
+ if (!options.silent) {
84
+ console.log("Retrieving document ".concat(documentUrl, "\u2026"));
85
+ }
86
+ _context.prev = 1;
87
+ _context.next = 4;
88
+ return (0, _util.fetchWithRetry)(documentUrl);
89
+ case 4:
90
+ response = _context.sent;
91
+ if (response.ok) {
92
+ _context.next = 8;
93
+ break;
94
+ }
95
+ if (response.status === 404) {
96
+ console.warn("Texte ".concat(documentUrl, " not found"));
97
+ } else {
98
+ console.error("An error occurred while retrieving texte ".concat(documentUrl, ": ").concat(response.status));
99
+ }
100
+ return _context.abrupt("return", null);
101
+ case 8:
102
+ return _context.abrupt("return", response.arrayBuffer());
103
+ case 11:
104
+ _context.prev = 11;
105
+ _context.t0 = _context["catch"](1);
106
+ console.error(_context.t0.message);
107
+ return _context.abrupt("return", null);
108
+ case 15:
109
+ case "end":
110
+ return _context.stop();
111
+ }
112
+ }, _callee, null, [[1, 11]]);
113
+ }));
114
+ return _retrieveDocument.apply(this, arguments);
115
+ }
116
+ function retrieveTextes(_x2) {
117
+ return _retrieveTextes.apply(this, arguments);
118
+ }
119
+ function _retrieveTextes() {
120
+ _retrieveTextes = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(dataDir) {
121
+ var textesDir, originalTextesDir, transformedTextesDir, retrievedTextesCount, texteUrlsNotFoundOrError, texteUrlsParseError, _iterator, _step, session, _iterator2, _step2, _texteMetadata$sessio, texteMetadata, texteDir, exposeDesMotifsContent, exposeDesMotifsPath, textePath, texteBuffer, _texteMetadata$sessio2, parsedTexte, texteXml, exposeDesMotifsHtml, transformedTexteDir, _textePath, _texteBuffer, _textePath2, _texteBuffer2;
122
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
123
+ while (1) switch (_context2.prev = _context2.next) {
124
+ case 0:
125
+ textesDir = _path["default"].join(dataDir, _loaders.TEXTE_FOLDER);
126
+ _fsExtra["default"].ensureDirSync(textesDir);
127
+ originalTextesDir = _path["default"].join(textesDir, _loaders.TEXTE_ORIGINAL_FOLDER);
128
+ transformedTextesDir = _path["default"].join(textesDir, _loaders.TEXTE_TRANSFORMED_FOLDER);
129
+ if (options.parseDocuments) {
130
+ (0, _util.ensureAndClearDir)(transformedTextesDir);
131
+ }
132
+ retrievedTextesCount = 0;
133
+ texteUrlsNotFoundOrError = [];
134
+ texteUrlsParseError = [];
135
+ _iterator = _createForOfIteratorHelper(options.sessions);
136
+ _context2.prev = 9;
137
+ _iterator.s();
138
+ case 11:
139
+ if ((_step = _iterator.n()).done) {
140
+ _context2.next = 103;
141
+ break;
142
+ }
143
+ session = _step.value;
144
+ _iterator2 = _createForOfIteratorHelper((0, _loaders.iterLoadSenatDossiersLegislatifsTexteUrls)(dataDir, session));
145
+ _context2.prev = 14;
146
+ _iterator2.s();
147
+ case 16:
148
+ if ((_step2 = _iterator2.n()).done) {
149
+ _context2.next = 93;
150
+ break;
151
+ }
152
+ texteMetadata = _step2.value.item;
153
+ texteDir = _path["default"].join(originalTextesDir, "".concat((_texteMetadata$sessio = texteMetadata.session) !== null && _texteMetadata$sessio !== void 0 ? _texteMetadata$sessio : _datautil.UNDEFINED_SESSION), texteMetadata.name);
154
+ _fsExtra["default"].ensureDirSync(texteDir);
155
+ exposeDesMotifsContent = null;
156
+ if (!texteMetadata.url_expose_des_motifs) {
157
+ _context2.next = 30;
158
+ break;
159
+ }
160
+ if (!options.silent) {
161
+ console.log("Retrieving exposé des motifs…");
162
+ }
163
+ exposeDesMotifsPath = _path["default"].join(texteDir, "".concat(texteMetadata.name, "-expose.html"));
164
+ _context2.next = 26;
165
+ return retrieveDocument(texteMetadata.url_expose_des_motifs.toString());
166
+ case 26:
167
+ exposeDesMotifsContent = _context2.sent;
168
+ if (exposeDesMotifsContent) {
169
+ _context2.next = 29;
170
+ break;
171
+ }
172
+ return _context2.abrupt("continue", 91);
173
+ case 29:
174
+ _fsExtra["default"].writeFileSync(exposeDesMotifsPath, Buffer.from(exposeDesMotifsContent));
175
+ case 30:
176
+ if (!(0, _util.isOptionEmptyOrHasValue)(options.formats, "xml")) {
177
+ _context2.next = 63;
178
+ break;
179
+ }
180
+ textePath = _path["default"].join(texteDir, "".concat(texteMetadata.name, ".xml"));
181
+ texteBuffer = null;
182
+ if (!(!options.force && _fsExtra["default"].existsSync(textePath))) {
183
+ _context2.next = 37;
184
+ break;
185
+ }
186
+ if (!options.silent) {
187
+ console.info("Already retrieved texte ".concat(textePath, "\u2026"));
188
+ }
189
+ _context2.next = 45;
190
+ break;
191
+ case 37:
192
+ _context2.next = 39;
193
+ return retrieveDocument(texteMetadata.url_xml.toString());
194
+ case 39:
195
+ texteBuffer = _context2.sent;
196
+ if (texteBuffer) {
197
+ _context2.next = 43;
198
+ break;
199
+ }
200
+ texteUrlsNotFoundOrError.push(texteMetadata.url_xml);
201
+ return _context2.abrupt("continue", 91);
202
+ case 43:
203
+ _fsExtra["default"].writeFileSync(textePath, Buffer.from(texteBuffer));
204
+ retrievedTextesCount++;
205
+ case 45:
206
+ if (!options.parseDocuments) {
207
+ _context2.next = 63;
208
+ break;
209
+ }
210
+ if (!options.silent) {
211
+ console.log("Parsing texte ".concat(texteMetadata.name, ".xml\u2026"));
212
+ }
213
+ parsedTexte = null;
214
+ if (!texteBuffer) {
215
+ _context2.next = 53;
216
+ break;
217
+ }
218
+ texteXml = textDecoder.decode(texteBuffer);
219
+ parsedTexte = (0, _texte.parseTexte)(texteXml);
220
+ _context2.next = 56;
221
+ break;
222
+ case 53:
223
+ _context2.next = 55;
224
+ return (0, _texte.parseTexteFromFile)(textePath);
225
+ case 55:
226
+ parsedTexte = _context2.sent;
227
+ case 56:
228
+ if (parsedTexte) {
229
+ _context2.next = 59;
230
+ break;
231
+ }
232
+ texteUrlsParseError.push(texteMetadata.url_xml);
233
+ return _context2.abrupt("continue", 91);
234
+ case 59:
235
+ if (exposeDesMotifsContent) {
236
+ if (!options.silent) {
237
+ console.log("Parsing exposé des motifs…");
238
+ }
239
+ exposeDesMotifsHtml = textDecoder.decode(exposeDesMotifsContent);
240
+ parsedTexte.exposeDesMotifs = (0, _texte.parseExposeDesMotifs)(exposeDesMotifsHtml);
241
+ }
242
+ transformedTexteDir = _path["default"].join(transformedTextesDir, "".concat((_texteMetadata$sessio2 = texteMetadata.session) !== null && _texteMetadata$sessio2 !== void 0 ? _texteMetadata$sessio2 : _datautil.UNDEFINED_SESSION), texteMetadata.name);
243
+ _fsExtra["default"].ensureDirSync(transformedTexteDir);
244
+ _fsExtra["default"].writeJSONSync(_path["default"].join(transformedTexteDir, "".concat(texteMetadata.name, ".json")), parsedTexte, {
245
+ spaces: 2
246
+ });
247
+ case 63:
248
+ if (!(0, _util.isOptionEmptyOrHasValue)(options.formats, "html")) {
249
+ _context2.next = 77;
250
+ break;
251
+ }
252
+ _textePath = _path["default"].join(texteDir, "".concat(texteMetadata.name, ".html"));
253
+ if (!(!options.force && _fsExtra["default"].existsSync(_textePath))) {
254
+ _context2.next = 69;
255
+ break;
256
+ }
257
+ if (!options.silent) {
258
+ console.info("Already retrieved texte ".concat(_textePath, "\u2026"));
259
+ }
260
+ _context2.next = 77;
261
+ break;
262
+ case 69:
263
+ _context2.next = 71;
264
+ return retrieveDocument(texteMetadata.url_html.toString());
265
+ case 71:
266
+ _texteBuffer = _context2.sent;
267
+ if (_texteBuffer) {
268
+ _context2.next = 75;
269
+ break;
270
+ }
271
+ texteUrlsNotFoundOrError.push(texteMetadata.url_html);
272
+ return _context2.abrupt("continue", 91);
273
+ case 75:
274
+ _fsExtra["default"].writeFileSync(_textePath, Buffer.from(_texteBuffer));
275
+ retrievedTextesCount++;
276
+ case 77:
277
+ if (!(0, _util.isOptionEmptyOrHasValue)(options.formats, "pdf")) {
278
+ _context2.next = 91;
279
+ break;
280
+ }
281
+ _textePath2 = _path["default"].join(texteDir, "".concat(texteMetadata.name, ".pdf"));
282
+ if (!(!options.force && _fsExtra["default"].existsSync(_textePath2))) {
283
+ _context2.next = 83;
284
+ break;
285
+ }
286
+ if (!options.silent) {
287
+ console.info("Already retrieved texte ".concat(_textePath2, "\u2026"));
288
+ }
289
+ _context2.next = 91;
290
+ break;
291
+ case 83:
292
+ _context2.next = 85;
293
+ return retrieveDocument(texteMetadata.url_pdf.toString());
294
+ case 85:
295
+ _texteBuffer2 = _context2.sent;
296
+ if (_texteBuffer2) {
297
+ _context2.next = 89;
298
+ break;
299
+ }
300
+ texteUrlsNotFoundOrError.push(texteMetadata.url_pdf);
301
+ return _context2.abrupt("continue", 91);
302
+ case 89:
303
+ _fsExtra["default"].writeFileSync(_textePath2, Buffer.from(_texteBuffer2));
304
+ retrievedTextesCount++;
305
+ case 91:
306
+ _context2.next = 16;
307
+ break;
308
+ case 93:
309
+ _context2.next = 98;
310
+ break;
311
+ case 95:
312
+ _context2.prev = 95;
313
+ _context2.t0 = _context2["catch"](14);
314
+ _iterator2.e(_context2.t0);
315
+ case 98:
316
+ _context2.prev = 98;
317
+ _iterator2.f();
318
+ return _context2.finish(98);
319
+ case 101:
320
+ _context2.next = 11;
321
+ break;
322
+ case 103:
323
+ _context2.next = 108;
324
+ break;
325
+ case 105:
326
+ _context2.prev = 105;
327
+ _context2.t1 = _context2["catch"](9);
328
+ _iterator.e(_context2.t1);
329
+ case 108:
330
+ _context2.prev = 108;
331
+ _iterator.f();
332
+ return _context2.finish(108);
333
+ case 111:
334
+ if (options.verbose) {
335
+ console.log("".concat(retrievedTextesCount, " textes retrieved"));
336
+ console.log("".concat(texteUrlsNotFoundOrError.length, " textes failed to be retrieved with URLs ").concat(texteUrlsNotFoundOrError.join(", ")));
337
+ if (options.parseDocuments) {
338
+ console.log("".concat(texteUrlsParseError.length, " textes failed to be parsed with URLs ").concat(texteUrlsParseError.join(", ")));
339
+ }
340
+ }
341
+ case 112:
342
+ case "end":
343
+ return _context2.stop();
344
+ }
345
+ }, _callee2, null, [[9, 105, 108, 111], [14, 95, 98, 101]]);
346
+ }));
347
+ return _retrieveTextes.apply(this, arguments);
348
+ }
349
+ function retrieveRapports(_x3) {
350
+ return _retrieveRapports.apply(this, arguments);
351
+ }
352
+ function _retrieveRapports() {
353
+ _retrieveRapports = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(dataDir) {
354
+ var rapportsDir, retrievedRapportsCount, rapportUrlsNotFoundOrError, _iterator3, _step3, session, _iterator4, _step4, _rapportMetadata$sess, rapportMetadata, rapportDir, rapportPath, rapportBuffer, _rapportPath, _rapportBuffer;
355
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
356
+ while (1) switch (_context3.prev = _context3.next) {
357
+ case 0:
358
+ rapportsDir = _path["default"].join(dataDir, _loaders.RAPPORT_FOLDER);
359
+ _fsExtra["default"].ensureDirSync(rapportsDir);
360
+ retrievedRapportsCount = 0;
361
+ rapportUrlsNotFoundOrError = [];
362
+ _iterator3 = _createForOfIteratorHelper(options.sessions);
363
+ _context3.prev = 5;
364
+ _iterator3.s();
365
+ case 7:
366
+ if ((_step3 = _iterator3.n()).done) {
367
+ _context3.next = 54;
368
+ break;
369
+ }
370
+ session = _step3.value;
371
+ _iterator4 = _createForOfIteratorHelper((0, _loaders.iterLoadSenatDossiersLegislatifsRapportUrls)(dataDir, session));
372
+ _context3.prev = 10;
373
+ _iterator4.s();
374
+ case 12:
375
+ if ((_step4 = _iterator4.n()).done) {
376
+ _context3.next = 44;
377
+ break;
378
+ }
379
+ rapportMetadata = _step4.value.item;
380
+ rapportDir = _path["default"].join(rapportsDir, "".concat((_rapportMetadata$sess = rapportMetadata.session) !== null && _rapportMetadata$sess !== void 0 ? _rapportMetadata$sess : _datautil.UNDEFINED_SESSION), rapportMetadata.name);
381
+ _fsExtra["default"].ensureDirSync(rapportDir);
382
+ if (!(0, _util.isOptionEmptyOrHasValue)(options.formats, "html")) {
383
+ _context3.next = 29;
384
+ break;
385
+ }
386
+ rapportPath = _path["default"].join(rapportDir, "".concat(rapportMetadata.name, ".html"));
387
+ if (!(!options.force && _fsExtra["default"].existsSync(rapportPath))) {
388
+ _context3.next = 21;
389
+ break;
390
+ }
391
+ if (!options.silent) {
392
+ console.info("Already retrieved rapport ".concat(rapportPath, "\u2026"));
393
+ }
394
+ return _context3.abrupt("continue", 42);
395
+ case 21:
396
+ _context3.next = 23;
397
+ return retrieveDocument(rapportMetadata.url_html.toString());
398
+ case 23:
399
+ rapportBuffer = _context3.sent;
400
+ if (rapportBuffer) {
401
+ _context3.next = 27;
402
+ break;
403
+ }
404
+ rapportUrlsNotFoundOrError.push(rapportMetadata.url_html);
405
+ return _context3.abrupt("continue", 42);
406
+ case 27:
407
+ _fsExtra["default"].writeFileSync(rapportPath, Buffer.from(rapportBuffer));
408
+ retrievedRapportsCount++;
409
+ case 29:
410
+ if (!(0, _util.isOptionEmptyOrHasValue)(options.formats, "pdf")) {
411
+ _context3.next = 42;
412
+ break;
413
+ }
414
+ _rapportPath = _path["default"].join(rapportDir, "".concat(rapportMetadata.name, ".pdf"));
415
+ if (!(!options.force && _fsExtra["default"].existsSync(_rapportPath))) {
416
+ _context3.next = 34;
417
+ break;
418
+ }
419
+ if (!options.silent) {
420
+ console.info("Already retrieved rapport ".concat(_rapportPath, "\u2026"));
421
+ }
422
+ return _context3.abrupt("continue", 42);
423
+ case 34:
424
+ _context3.next = 36;
425
+ return retrieveDocument(rapportMetadata.url_pdf.toString());
426
+ case 36:
427
+ _rapportBuffer = _context3.sent;
428
+ if (_rapportBuffer) {
429
+ _context3.next = 40;
430
+ break;
431
+ }
432
+ rapportUrlsNotFoundOrError.push(rapportMetadata.url_pdf);
433
+ return _context3.abrupt("continue", 42);
434
+ case 40:
435
+ _fsExtra["default"].writeFileSync(_rapportPath, Buffer.from(_rapportBuffer));
436
+ retrievedRapportsCount++;
437
+ case 42:
438
+ _context3.next = 12;
439
+ break;
440
+ case 44:
441
+ _context3.next = 49;
442
+ break;
443
+ case 46:
444
+ _context3.prev = 46;
445
+ _context3.t0 = _context3["catch"](10);
446
+ _iterator4.e(_context3.t0);
447
+ case 49:
448
+ _context3.prev = 49;
449
+ _iterator4.f();
450
+ return _context3.finish(49);
451
+ case 52:
452
+ _context3.next = 7;
453
+ break;
454
+ case 54:
455
+ _context3.next = 59;
456
+ break;
457
+ case 56:
458
+ _context3.prev = 56;
459
+ _context3.t1 = _context3["catch"](5);
460
+ _iterator3.e(_context3.t1);
461
+ case 59:
462
+ _context3.prev = 59;
463
+ _iterator3.f();
464
+ return _context3.finish(59);
465
+ case 62:
466
+ if (options.verbose) {
467
+ console.log("".concat(retrievedRapportsCount, " rapports retrieved"));
468
+ console.log("".concat(rapportUrlsNotFoundOrError.length, " rapports failed with URLs ").concat(rapportUrlsNotFoundOrError.join(", ")));
469
+ }
470
+ case 63:
471
+ case "end":
472
+ return _context3.stop();
473
+ }
474
+ }, _callee3, null, [[5, 56, 59, 62], [10, 46, 49, 52]]);
475
+ }));
476
+ return _retrieveRapports.apply(this, arguments);
477
+ }
478
+ function main() {
479
+ return _main.apply(this, arguments);
480
+ }
481
+ function _main() {
482
+ _main = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
483
+ var dataDir;
484
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
485
+ while (1) switch (_context4.prev = _context4.next) {
486
+ case 0:
487
+ dataDir = options.dataDir;
488
+ (0, _assert["default"])(dataDir, "Missing argument: data directory");
489
+ console.time("documents processing time");
490
+ if (!(0, _util.isOptionEmptyOrHasValue)(options.types, "textes")) {
491
+ _context4.next = 6;
492
+ break;
493
+ }
494
+ _context4.next = 6;
495
+ return retrieveTextes(dataDir);
496
+ case 6:
497
+ if (!(0, _util.isOptionEmptyOrHasValue)(options.types, "rapports")) {
498
+ _context4.next = 9;
499
+ break;
500
+ }
501
+ _context4.next = 9;
502
+ return retrieveRapports(dataDir);
503
+ case 9:
504
+ if (!options.silent) {
505
+ console.timeEnd("documents processing time");
506
+ }
507
+ case 10:
508
+ case "end":
509
+ return _context4.stop();
510
+ }
511
+ }, _callee4);
512
+ }));
513
+ return _main.apply(this, arguments);
514
+ }
515
+ main().then(function () {
516
+ return process.exit(0);
517
+ })["catch"](function (error) {
518
+ console.log(error);
519
+ process.exit(1);
520
+ });
521
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29tbWFuZExpbmVBcmdzIiwiX2ZzRXh0cmEiLCJfcGF0aCIsIl9sb2FkZXJzIiwiX3RleHRlIiwiX2RhdGF1dGlsIiwiX2NsaV9oZWxwZXJzIiwiX3V0aWwiLCJlIiwiX19lc01vZHVsZSIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiciIsInQiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJuIiwiZG9uZSIsInZhbHVlIiwiZiIsIlR5cGVFcnJvciIsIm8iLCJhIiwidSIsImNhbGwiLCJuZXh0IiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiaSIsImFzeW5jSXRlcmF0b3IiLCJ0b1N0cmluZ1RhZyIsImMiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImgiLCJHZW5lcmF0b3IiLCJjcmVhdGUiLCJFcnJvciIsIm1ldGhvZCIsImFyZyIsImRlbGVnYXRlIiwiZCIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwidHlwZSIsIkNvbnRleHQiLCJ3cmFwIiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsImwiLCJwIiwiZ2V0UHJvdG90eXBlT2YiLCJ5IiwieCIsInYiLCJnIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsInciLCJ0cnlFbnRyaWVzIiwicHVzaCIsIm0iLCJyZXNldCIsImlzTmFOIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwidW5zaGlmdCIsInBvcCIsInZhbHVlcyIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJhcmd1bWVudHMiLCJhcHBseSIsIl9uZXh0IiwiX3Rocm93IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIl9hcnJheUxpa2VUb0FycmF5IiwidG9TdHJpbmciLCJmcm9tIiwidGVzdCIsIm9wdGlvbnNEZWZpbml0aW9ucyIsImNvbmNhdCIsImNvbW1vbk9wdGlvbnMiLCJoZWxwIiwibXVsdGlwbGUiLCJTdHJpbmciLCJCb29sZWFuIiwiYWxpYXMiLCJvcHRpb25zIiwiY29tbWFuZExpbmVBcmdzIiwidGV4dERlY29kZXIiLCJUZXh0RGVjb2RlciIsInJldHJpZXZlRG9jdW1lbnQiLCJfeCIsIl9yZXRyaWV2ZURvY3VtZW50IiwiX2NhbGxlZSIsImRvY3VtZW50VXJsIiwicmVzcG9uc2UiLCJfY2FsbGVlJCIsIl9jb250ZXh0Iiwic2lsZW50IiwiY29uc29sZSIsImxvZyIsImZldGNoV2l0aFJldHJ5Iiwib2siLCJzdGF0dXMiLCJ3YXJuIiwiZXJyb3IiLCJhcnJheUJ1ZmZlciIsInQwIiwibWVzc2FnZSIsInJldHJpZXZlVGV4dGVzIiwiX3gyIiwiX3JldHJpZXZlVGV4dGVzIiwiX2NhbGxlZTIiLCJkYXRhRGlyIiwidGV4dGVzRGlyIiwib3JpZ2luYWxUZXh0ZXNEaXIiLCJ0cmFuc2Zvcm1lZFRleHRlc0RpciIsInJldHJpZXZlZFRleHRlc0NvdW50IiwidGV4dGVVcmxzTm90Rm91bmRPckVycm9yIiwidGV4dGVVcmxzUGFyc2VFcnJvciIsIl9pdGVyYXRvciIsIl9zdGVwIiwic2Vzc2lvbiIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJfdGV4dGVNZXRhZGF0YSRzZXNzaW8iLCJ0ZXh0ZU1ldGFkYXRhIiwidGV4dGVEaXIiLCJleHBvc2VEZXNNb3RpZnNDb250ZW50IiwiZXhwb3NlRGVzTW90aWZzUGF0aCIsInRleHRlUGF0aCIsInRleHRlQnVmZmVyIiwiX3RleHRlTWV0YWRhdGEkc2Vzc2lvMiIsInBhcnNlZFRleHRlIiwidGV4dGVYbWwiLCJleHBvc2VEZXNNb3RpZnNIdG1sIiwidHJhbnNmb3JtZWRUZXh0ZURpciIsIl90ZXh0ZVBhdGgiLCJfdGV4dGVCdWZmZXIiLCJfdGV4dGVQYXRoMiIsIl90ZXh0ZUJ1ZmZlcjIiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJwYXRoIiwiam9pbiIsIlRFWFRFX0ZPTERFUiIsImZzIiwiZW5zdXJlRGlyU3luYyIsIlRFWFRFX09SSUdJTkFMX0ZPTERFUiIsIlRFWFRFX1RSQU5TRk9STUVEX0ZPTERFUiIsInBhcnNlRG9jdW1lbnRzIiwiZW5zdXJlQW5kQ2xlYXJEaXIiLCJzZXNzaW9ucyIsIml0ZXJMb2FkU2VuYXREb3NzaWVyc0xlZ2lzbGF0aWZzVGV4dGVVcmxzIiwiaXRlbSIsIlVOREVGSU5FRF9TRVNTSU9OIiwidXJsX2V4cG9zZV9kZXNfbW90aWZzIiwid3JpdGVGaWxlU3luYyIsIkJ1ZmZlciIsImlzT3B0aW9uRW1wdHlPckhhc1ZhbHVlIiwiZm9ybWF0cyIsImZvcmNlIiwiZXhpc3RzU3luYyIsImluZm8iLCJ1cmxfeG1sIiwiZGVjb2RlIiwicGFyc2VUZXh0ZSIsInBhcnNlVGV4dGVGcm9tRmlsZSIsImV4cG9zZURlc01vdGlmcyIsInBhcnNlRXhwb3NlRGVzTW90aWZzIiwid3JpdGVKU09OU3luYyIsInNwYWNlcyIsInVybF9odG1sIiwidXJsX3BkZiIsInQxIiwidmVyYm9zZSIsInJldHJpZXZlUmFwcG9ydHMiLCJfeDMiLCJfcmV0cmlldmVSYXBwb3J0cyIsIl9jYWxsZWUzIiwicmFwcG9ydHNEaXIiLCJyZXRyaWV2ZWRSYXBwb3J0c0NvdW50IiwicmFwcG9ydFVybHNOb3RGb3VuZE9yRXJyb3IiLCJfaXRlcmF0b3IzIiwiX3N0ZXAzIiwiX2l0ZXJhdG9yNCIsIl9zdGVwNCIsIl9yYXBwb3J0TWV0YWRhdGEkc2VzcyIsInJhcHBvcnRNZXRhZGF0YSIsInJhcHBvcnREaXIiLCJyYXBwb3J0UGF0aCIsInJhcHBvcnRCdWZmZXIiLCJfcmFwcG9ydFBhdGgiLCJfcmFwcG9ydEJ1ZmZlciIsIl9jYWxsZWUzJCIsIl9jb250ZXh0MyIsIlJBUFBPUlRfRk9MREVSIiwiaXRlckxvYWRTZW5hdERvc3NpZXJzTGVnaXNsYXRpZnNSYXBwb3J0VXJscyIsIm1haW4iLCJfbWFpbiIsIl9jYWxsZWU0IiwiX2NhbGxlZTQkIiwiX2NvbnRleHQ0IiwiYXNzZXJ0IiwidGltZSIsInR5cGVzIiwidGltZUVuZCIsInByb2Nlc3MiLCJleGl0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvcmV0cmlldmVfZG9jdW1lbnRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiXG5pbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcblxuaW1wb3J0IHtcbiAgaXRlckxvYWRTZW5hdERvc3NpZXJzTGVnaXNsYXRpZnNSYXBwb3J0VXJscyxcbiAgaXRlckxvYWRTZW5hdERvc3NpZXJzTGVnaXNsYXRpZnNUZXh0ZVVybHMsXG4gIFJBUFBPUlRfRk9MREVSLFxuICBURVhURV9GT0xERVIsXG4gIFRFWFRFX09SSUdJTkFMX0ZPTERFUixcbiAgVEVYVEVfVFJBTlNGT1JNRURfRk9MREVSLFxufSBmcm9tIFwiLi4vbG9hZGVyc1wiXG5pbXBvcnQgeyBwYXJzZUV4cG9zZURlc01vdGlmcywgcGFyc2VUZXh0ZSwgcGFyc2VUZXh0ZUZyb21GaWxlIH0gZnJvbSBcIi4uL21vZGVsL3RleHRlXCJcbmltcG9ydCB7IFVOREVGSU5FRF9TRVNTSU9OIH0gZnJvbSBcIi4vZGF0YXV0aWxcIlxuaW1wb3J0IHsgY29tbW9uT3B0aW9ucyB9IGZyb20gXCIuL3NoYXJlZC9jbGlfaGVscGVyc1wiXG5pbXBvcnQgeyBlbnN1cmVBbmRDbGVhckRpciwgZmV0Y2hXaXRoUmV0cnksIGlzT3B0aW9uRW1wdHlPckhhc1ZhbHVlIH0gZnJvbSBcIi4vc2hhcmVkL3V0aWxcIlxuXG5jb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gIC4uLmNvbW1vbk9wdGlvbnMsXG4gIHtcbiAgICBoZWxwOiBcInNlc3Npb25zIG9mIHRleHRlcyB0byByZXRyaWV2ZTsgbGVhdmUgZW1wdHkgZm9yIGFsbFwiLFxuICAgIG11bHRpcGxlOiB0cnVlLFxuICAgIG5hbWU6IFwic2Vzc2lvbnNcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBoZWxwOiBcInBhcnNlIGFuZCBjb252ZXJ0IGRvY3VtZW50cyBpbnRvIEpTT04gKHRleHRlcyBvbmx5IGZvciBub3csIHJlcXVpcmVzIGZvcm1hdCB4bWwpXCIsXG4gICAgbmFtZTogXCJwYXJzZURvY3VtZW50c1wiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJGXCIsXG4gICAgaGVscDogXCJmb3JtYXRzIG9mIGRvY3VtZW50cyB0byByZXRyaWV2ZSAoeG1sL2h0bWwvcGRmIGZvciB0ZXh0ZXMsIGh0bWwvcGRmIGZvciByYXBwb3J0cyk7IGxlYXZlIGVtcHR5IGZvciBhbGxcIixcbiAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICBuYW1lOiBcImZvcm1hdHNcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBoZWxwOiBcInR5cGVzIG9mIGRvY3VtZW50cyB0byByZXRyaWV2ZSAodGV4dGVzL3JhcHBvcnRzKTsgbGVhdmUgZW1wdHkgZm9yIGFsbFwiLFxuICAgIG11bHRpcGxlOiB0cnVlLFxuICAgIG5hbWU6IFwidHlwZXNcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBoZWxwOiBcImZvcmNlIHJldHJpZXZlIGFsbCBkb2N1bWVudHMsIGV2ZW4gYWxyZWFkeSByZXRyaWV2ZWQgb25lc1wiLFxuICAgIG5hbWU6IFwiZm9yY2VcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuXVxuY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMpXG5cbmNvbnN0IHRleHREZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKFwidXRmOFwiKVxuXG5hc3luYyBmdW5jdGlvbiByZXRyaWV2ZURvY3VtZW50IChkb2N1bWVudFVybDogc3RyaW5nKTogUHJvbWlzZTxBcnJheUJ1ZmZlciB8IG51bGw+IHtcbiAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgIGNvbnNvbGUubG9nKGBSZXRyaWV2aW5nIGRvY3VtZW50ICR7ZG9jdW1lbnRVcmx94oCmYClcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaFdpdGhSZXRyeShkb2N1bWVudFVybClcbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBUZXh0ZSAke2RvY3VtZW50VXJsfSBub3QgZm91bmRgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgcmV0cmlldmluZyB0ZXh0ZSAke2RvY3VtZW50VXJsfTogJHtyZXNwb25zZS5zdGF0dXN9YClcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiByZXNwb25zZS5hcnJheUJ1ZmZlcigpXG4gIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICBjb25zb2xlLmVycm9yKGVycm9yLm1lc3NhZ2UpXG4gICAgcmV0dXJuIG51bGxcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiByZXRyaWV2ZVRleHRlcyAoZGF0YURpcjogc3RyaW5nKSB7XG4gIGNvbnN0IHRleHRlc0RpciA9IHBhdGguam9pbihkYXRhRGlyLCBURVhURV9GT0xERVIpXG4gIGZzLmVuc3VyZURpclN5bmModGV4dGVzRGlyKVxuXG4gIGNvbnN0IG9yaWdpbmFsVGV4dGVzRGlyID0gcGF0aC5qb2luKHRleHRlc0RpciwgVEVYVEVfT1JJR0lOQUxfRk9MREVSKVxuICBjb25zdCB0cmFuc2Zvcm1lZFRleHRlc0RpciA9IHBhdGguam9pbih0ZXh0ZXNEaXIsIFRFWFRFX1RSQU5TRk9STUVEX0ZPTERFUilcbiAgaWYgKG9wdGlvbnMucGFyc2VEb2N1bWVudHMpIHtcbiAgICBlbnN1cmVBbmRDbGVhckRpcih0cmFuc2Zvcm1lZFRleHRlc0RpcilcbiAgfVxuXG4gIGxldCByZXRyaWV2ZWRUZXh0ZXNDb3VudCA9IDBcbiAgY29uc3QgdGV4dGVVcmxzTm90Rm91bmRPckVycm9yID0gW11cbiAgY29uc3QgdGV4dGVVcmxzUGFyc2VFcnJvciA9IFtdXG5cbiAgZm9yIChjb25zdCBzZXNzaW9uIG9mIG9wdGlvbnMuc2Vzc2lvbnMpIHtcbiAgICBmb3IgKGNvbnN0IHsgaXRlbTogdGV4dGVNZXRhZGF0YSB9IG9mIGl0ZXJMb2FkU2VuYXREb3NzaWVyc0xlZ2lzbGF0aWZzVGV4dGVVcmxzKGRhdGFEaXIsIHNlc3Npb24pKSB7XG4gICAgICBjb25zdCB0ZXh0ZURpciA9IHBhdGguam9pbihvcmlnaW5hbFRleHRlc0RpciwgYCR7dGV4dGVNZXRhZGF0YS5zZXNzaW9uID8/IFVOREVGSU5FRF9TRVNTSU9OfWAsIHRleHRlTWV0YWRhdGEubmFtZSlcbiAgICAgIGZzLmVuc3VyZURpclN5bmModGV4dGVEaXIpXG5cbiAgICAgIGxldCBleHBvc2VEZXNNb3RpZnNDb250ZW50ID0gbnVsbFxuICAgICAgaWYgKHRleHRlTWV0YWRhdGEudXJsX2V4cG9zZV9kZXNfbW90aWZzKSB7XG4gICAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIlJldHJpZXZpbmcgZXhwb3PDqSBkZXMgbW90aWZz4oCmXCIpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBleHBvc2VEZXNNb3RpZnNQYXRoID0gcGF0aC5qb2luKHRleHRlRGlyLCBgJHt0ZXh0ZU1ldGFkYXRhLm5hbWV9LWV4cG9zZS5odG1sYClcblxuICAgICAgICBleHBvc2VEZXNNb3RpZnNDb250ZW50ID0gYXdhaXQgcmV0cmlldmVEb2N1bWVudCh0ZXh0ZU1ldGFkYXRhLnVybF9leHBvc2VfZGVzX21vdGlmcy50b1N0cmluZygpKVxuICAgICAgICBpZiAoIWV4cG9zZURlc01vdGlmc0NvbnRlbnQpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoZXhwb3NlRGVzTW90aWZzUGF0aCwgQnVmZmVyLmZyb20oZXhwb3NlRGVzTW90aWZzQ29udGVudCkpXG4gICAgICB9XG5cbiAgICAgIGlmIChpc09wdGlvbkVtcHR5T3JIYXNWYWx1ZShvcHRpb25zLmZvcm1hdHMsIFwieG1sXCIpKSB7XG4gICAgICAgIGNvbnN0IHRleHRlUGF0aCA9IHBhdGguam9pbih0ZXh0ZURpciwgYCR7dGV4dGVNZXRhZGF0YS5uYW1lfS54bWxgKVxuICAgICAgICBsZXQgdGV4dGVCdWZmZXIgPSBudWxsXG5cbiAgICAgICAgaWYgKCFvcHRpb25zLmZvcmNlICYmIGZzLmV4aXN0c1N5bmModGV4dGVQYXRoKSkge1xuICAgICAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuaW5mbyhgQWxyZWFkeSByZXRyaWV2ZWQgdGV4dGUgJHt0ZXh0ZVBhdGh94oCmYClcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGV4dGVCdWZmZXIgPSBhd2FpdCByZXRyaWV2ZURvY3VtZW50KHRleHRlTWV0YWRhdGEudXJsX3htbC50b1N0cmluZygpKVxuICAgICAgICAgIGlmICghdGV4dGVCdWZmZXIpIHtcbiAgICAgICAgICAgIHRleHRlVXJsc05vdEZvdW5kT3JFcnJvci5wdXNoKHRleHRlTWV0YWRhdGEudXJsX3htbClcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfVxuICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmModGV4dGVQYXRoLCBCdWZmZXIuZnJvbSh0ZXh0ZUJ1ZmZlcikpXG4gICAgICAgICAgcmV0cmlldmVkVGV4dGVzQ291bnQrK1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMucGFyc2VEb2N1bWVudHMpIHtcbiAgICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgUGFyc2luZyB0ZXh0ZSAke3RleHRlTWV0YWRhdGEubmFtZX0ueG1s4oCmYClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgcGFyc2VkVGV4dGUgPSBudWxsXG4gICAgICAgICAgaWYgKHRleHRlQnVmZmVyKSB7XG4gICAgICAgICAgICBjb25zdCB0ZXh0ZVhtbCA9IHRleHREZWNvZGVyLmRlY29kZSh0ZXh0ZUJ1ZmZlcilcbiAgICAgICAgICAgIHBhcnNlZFRleHRlID0gcGFyc2VUZXh0ZSh0ZXh0ZVhtbClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFyc2VkVGV4dGUgPSBhd2FpdCBwYXJzZVRleHRlRnJvbUZpbGUodGV4dGVQYXRoKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghcGFyc2VkVGV4dGUpIHtcbiAgICAgICAgICAgIHRleHRlVXJsc1BhcnNlRXJyb3IucHVzaCh0ZXh0ZU1ldGFkYXRhLnVybF94bWwpXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChleHBvc2VEZXNNb3RpZnNDb250ZW50KSB7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiUGFyc2luZyBleHBvc8OpIGRlcyBtb3RpZnPigKZcIilcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZXhwb3NlRGVzTW90aWZzSHRtbCA9IHRleHREZWNvZGVyLmRlY29kZShleHBvc2VEZXNNb3RpZnNDb250ZW50KVxuICAgICAgICAgICAgcGFyc2VkVGV4dGUuZXhwb3NlRGVzTW90aWZzID0gcGFyc2VFeHBvc2VEZXNNb3RpZnMoZXhwb3NlRGVzTW90aWZzSHRtbClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZFRleHRlRGlyXG4gICAgICAgICAgICA9IHBhdGguam9pbih0cmFuc2Zvcm1lZFRleHRlc0RpciwgYCR7dGV4dGVNZXRhZGF0YS5zZXNzaW9uID8/IFVOREVGSU5FRF9TRVNTSU9OfWAsIHRleHRlTWV0YWRhdGEubmFtZSlcbiAgICAgICAgICBmcy5lbnN1cmVEaXJTeW5jKHRyYW5zZm9ybWVkVGV4dGVEaXIpXG5cbiAgICAgICAgICBmcy53cml0ZUpTT05TeW5jKHBhdGguam9pbih0cmFuc2Zvcm1lZFRleHRlRGlyLCBgJHt0ZXh0ZU1ldGFkYXRhLm5hbWV9Lmpzb25gKSwgcGFyc2VkVGV4dGUsIHsgc3BhY2VzOiAyIH0pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGlzT3B0aW9uRW1wdHlPckhhc1ZhbHVlKG9wdGlvbnMuZm9ybWF0cywgXCJodG1sXCIpKSB7XG4gICAgICAgIGNvbnN0IHRleHRlUGF0aCA9IHBhdGguam9pbih0ZXh0ZURpciwgYCR7dGV4dGVNZXRhZGF0YS5uYW1lfS5odG1sYClcblxuICAgICAgICBpZiAoIW9wdGlvbnMuZm9yY2UgJiYgZnMuZXhpc3RzU3luYyh0ZXh0ZVBhdGgpKSB7XG4gICAgICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICAgICAgY29uc29sZS5pbmZvKGBBbHJlYWR5IHJldHJpZXZlZCB0ZXh0ZSAke3RleHRlUGF0aH3igKZgKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgIGNvbnN0IHRleHRlQnVmZmVyID0gYXdhaXQgcmV0cmlldmVEb2N1bWVudCh0ZXh0ZU1ldGFkYXRhLnVybF9odG1sLnRvU3RyaW5nKCkpXG4gICAgICAgICAgaWYgKCF0ZXh0ZUJ1ZmZlcikge1xuICAgICAgICAgICAgdGV4dGVVcmxzTm90Rm91bmRPckVycm9yLnB1c2godGV4dGVNZXRhZGF0YS51cmxfaHRtbClcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfVxuICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmModGV4dGVQYXRoLCBCdWZmZXIuZnJvbSh0ZXh0ZUJ1ZmZlcikpXG4gICAgICAgICAgcmV0cmlldmVkVGV4dGVzQ291bnQrK1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChpc09wdGlvbkVtcHR5T3JIYXNWYWx1ZShvcHRpb25zLmZvcm1hdHMsIFwicGRmXCIpKSB7XG4gICAgICAgIGNvbnN0IHRleHRlUGF0aCA9IHBhdGguam9pbih0ZXh0ZURpciwgYCR7dGV4dGVNZXRhZGF0YS5uYW1lfS5wZGZgKVxuXG4gICAgICAgIGlmICghb3B0aW9ucy5mb3JjZSAmJiBmcy5leGlzdHNTeW5jKHRleHRlUGF0aCkpIHtcbiAgICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgICBjb25zb2xlLmluZm8oYEFscmVhZHkgcmV0cmlldmVkIHRleHRlICR7dGV4dGVQYXRofeKApmApXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgY29uc3QgdGV4dGVCdWZmZXIgPSBhd2FpdCByZXRyaWV2ZURvY3VtZW50KHRleHRlTWV0YWRhdGEudXJsX3BkZi50b1N0cmluZygpKVxuICAgICAgICAgIGlmICghdGV4dGVCdWZmZXIpIHtcbiAgICAgICAgICAgIHRleHRlVXJsc05vdEZvdW5kT3JFcnJvci5wdXNoKHRleHRlTWV0YWRhdGEudXJsX3BkZilcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfVxuICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmModGV4dGVQYXRoLCBCdWZmZXIuZnJvbSh0ZXh0ZUJ1ZmZlcikpXG4gICAgICAgICAgcmV0cmlldmVkVGV4dGVzQ291bnQrK1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgIGNvbnNvbGUubG9nKGAke3JldHJpZXZlZFRleHRlc0NvdW50fSB0ZXh0ZXMgcmV0cmlldmVkYClcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGAke3RleHRlVXJsc05vdEZvdW5kT3JFcnJvci5sZW5ndGh9IHRleHRlcyBmYWlsZWQgdG8gYmUgcmV0cmlldmVkIHdpdGggVVJMcyAke3RleHRlVXJsc05vdEZvdW5kT3JFcnJvci5qb2luKFwiLCBcIil9YFxuICAgIClcbiAgICBpZiAob3B0aW9ucy5wYXJzZURvY3VtZW50cykge1xuICAgICAgY29uc29sZS5sb2coYCR7dGV4dGVVcmxzUGFyc2VFcnJvci5sZW5ndGh9IHRleHRlcyBmYWlsZWQgdG8gYmUgcGFyc2VkIHdpdGggVVJMcyAke3RleHRlVXJsc1BhcnNlRXJyb3Iuam9pbihcIiwgXCIpfWApXG4gICAgfVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJldHJpZXZlUmFwcG9ydHMgKGRhdGFEaXI6IHN0cmluZykge1xuICBjb25zdCByYXBwb3J0c0RpciA9IHBhdGguam9pbihkYXRhRGlyLCBSQVBQT1JUX0ZPTERFUilcbiAgZnMuZW5zdXJlRGlyU3luYyhyYXBwb3J0c0RpcilcblxuICBsZXQgcmV0cmlldmVkUmFwcG9ydHNDb3VudCA9IDBcbiAgY29uc3QgcmFwcG9ydFVybHNOb3RGb3VuZE9yRXJyb3IgPSBbXVxuXG4gIGZvciAoY29uc3Qgc2Vzc2lvbiBvZiBvcHRpb25zLnNlc3Npb25zKSB7XG4gICAgZm9yIChjb25zdCB7IGl0ZW06IHJhcHBvcnRNZXRhZGF0YSB9IG9mIGl0ZXJMb2FkU2VuYXREb3NzaWVyc0xlZ2lzbGF0aWZzUmFwcG9ydFVybHMoZGF0YURpciwgc2Vzc2lvbikpIHtcbiAgICAgIGNvbnN0IHJhcHBvcnREaXIgPSBwYXRoLmpvaW4ocmFwcG9ydHNEaXIsIGAke3JhcHBvcnRNZXRhZGF0YS5zZXNzaW9uID8/IFVOREVGSU5FRF9TRVNTSU9OfWAsIHJhcHBvcnRNZXRhZGF0YS5uYW1lKVxuICAgICAgZnMuZW5zdXJlRGlyU3luYyhyYXBwb3J0RGlyKVxuXG4gICAgICBpZiAoaXNPcHRpb25FbXB0eU9ySGFzVmFsdWUob3B0aW9ucy5mb3JtYXRzLCBcImh0bWxcIikpIHtcbiAgICAgICAgY29uc3QgcmFwcG9ydFBhdGggPSBwYXRoLmpvaW4ocmFwcG9ydERpciwgYCR7cmFwcG9ydE1ldGFkYXRhLm5hbWV9Lmh0bWxgKVxuXG4gICAgICAgIGlmICghb3B0aW9ucy5mb3JjZSAmJiBmcy5leGlzdHNTeW5jKHJhcHBvcnRQYXRoKSkge1xuICAgICAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuaW5mbyhgQWxyZWFkeSByZXRyaWV2ZWQgcmFwcG9ydCAke3JhcHBvcnRQYXRofeKApmApXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByYXBwb3J0QnVmZmVyID0gYXdhaXQgcmV0cmlldmVEb2N1bWVudChyYXBwb3J0TWV0YWRhdGEudXJsX2h0bWwudG9TdHJpbmcoKSlcbiAgICAgICAgaWYgKCFyYXBwb3J0QnVmZmVyKSB7XG4gICAgICAgICAgcmFwcG9ydFVybHNOb3RGb3VuZE9yRXJyb3IucHVzaChyYXBwb3J0TWV0YWRhdGEudXJsX2h0bWwpXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHJhcHBvcnRQYXRoLCBCdWZmZXIuZnJvbShyYXBwb3J0QnVmZmVyKSlcbiAgICAgICAgcmV0cmlldmVkUmFwcG9ydHNDb3VudCsrXG4gICAgICB9XG5cbiAgICAgIGlmIChpc09wdGlvbkVtcHR5T3JIYXNWYWx1ZShvcHRpb25zLmZvcm1hdHMsIFwicGRmXCIpKSB7XG4gICAgICAgIGNvbnN0IHJhcHBvcnRQYXRoID0gcGF0aC5qb2luKHJhcHBvcnREaXIsIGAke3JhcHBvcnRNZXRhZGF0YS5uYW1lfS5wZGZgKVxuXG4gICAgICAgIGlmICghb3B0aW9ucy5mb3JjZSAmJiBmcy5leGlzdHNTeW5jKHJhcHBvcnRQYXRoKSkge1xuICAgICAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuaW5mbyhgQWxyZWFkeSByZXRyaWV2ZWQgcmFwcG9ydCAke3JhcHBvcnRQYXRofeKApmApXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByYXBwb3J0QnVmZmVyID0gYXdhaXQgcmV0cmlldmVEb2N1bWVudChyYXBwb3J0TWV0YWRhdGEudXJsX3BkZi50b1N0cmluZygpKVxuICAgICAgICBpZiAoIXJhcHBvcnRCdWZmZXIpIHtcbiAgICAgICAgICByYXBwb3J0VXJsc05vdEZvdW5kT3JFcnJvci5wdXNoKHJhcHBvcnRNZXRhZGF0YS51cmxfcGRmKVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhyYXBwb3J0UGF0aCwgQnVmZmVyLmZyb20ocmFwcG9ydEJ1ZmZlcikpXG4gICAgICAgIHJldHJpZXZlZFJhcHBvcnRzQ291bnQrK1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICBjb25zb2xlLmxvZyhgJHtyZXRyaWV2ZWRSYXBwb3J0c0NvdW50fSByYXBwb3J0cyByZXRyaWV2ZWRgKVxuICAgIGNvbnNvbGUubG9nKFxuICAgICAgYCR7cmFwcG9ydFVybHNOb3RGb3VuZE9yRXJyb3IubGVuZ3RofSByYXBwb3J0cyBmYWlsZWQgd2l0aCBVUkxzICR7cmFwcG9ydFVybHNOb3RGb3VuZE9yRXJyb3Iuam9pbihcIiwgXCIpfWBcbiAgICApXG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gbWFpbigpIHtcbiAgY29uc3QgZGF0YURpciA9IG9wdGlvbnMuZGF0YURpclxuICBhc3NlcnQoZGF0YURpciwgXCJNaXNzaW5nIGFyZ3VtZW50OiBkYXRhIGRpcmVjdG9yeVwiKVxuXG4gIGNvbnNvbGUudGltZShcImRvY3VtZW50cyBwcm9jZXNzaW5nIHRpbWVcIilcblxuICBpZiAoaXNPcHRpb25FbXB0eU9ySGFzVmFsdWUob3B0aW9ucy50eXBlcywgXCJ0ZXh0ZXNcIikpIHtcbiAgICBhd2FpdCByZXRyaWV2ZVRleHRlcyhkYXRhRGlyKVxuICB9XG4gIGlmIChpc09wdGlvbkVtcHR5T3JIYXNWYWx1ZShvcHRpb25zLnR5cGVzLCBcInJhcHBvcnRzXCIpKSB7XG4gICAgYXdhaXQgcmV0cmlldmVSYXBwb3J0cyhkYXRhRGlyKVxuICB9XG5cbiAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS50aW1lRW5kKFwiZG9jdW1lbnRzIHByb2Nlc3NpbmcgdGltZVwiKVxuICB9XG59XG5cbm1haW4oKVxuICAudGhlbigoKSA9PiBwcm9jZXNzLmV4aXQoMCkpXG4gIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICBjb25zb2xlLmxvZyhlcnJvcilcbiAgICBwcm9jZXNzLmV4aXQoMSlcbiAgfSlcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxnQkFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsUUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsS0FBQSxHQUFBSixzQkFBQSxDQUFBQyxP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