@tricoteuses/assemblee 1.10.5 → 2.0.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 (400) hide show
  1. package/README.md +8 -1
  2. package/lib/amendements-CN7bRFdP.js +259 -0
  3. package/lib/amendements-CN7bRFdP.js.map +1 -0
  4. package/lib/amendements-Cg1lyCBp.js +735 -0
  5. package/lib/amendements-Cg1lyCBp.js.map +1 -0
  6. package/lib/api.d.ts +1 -0
  7. package/lib/api.d.ts.map +1 -0
  8. package/lib/cleaners/actes_legislatifs.d.ts +1 -0
  9. package/lib/cleaners/actes_legislatifs.d.ts.map +1 -0
  10. package/lib/cleaners/acteurs.d.ts +1 -0
  11. package/lib/cleaners/acteurs.d.ts.map +1 -0
  12. package/lib/cleaners/amendements.d.ts +1 -0
  13. package/lib/cleaners/amendements.d.ts.map +1 -0
  14. package/lib/cleaners/debats.d.ts +1 -0
  15. package/lib/cleaners/debats.d.ts.map +1 -0
  16. package/lib/cleaners/documents.d.ts +1 -0
  17. package/lib/cleaners/documents.d.ts.map +1 -0
  18. package/lib/cleaners/dossiers_legislatifs.d.ts +1 -0
  19. package/lib/cleaners/dossiers_legislatifs.d.ts.map +1 -0
  20. package/lib/cleaners/index.d.ts +10 -9
  21. package/lib/cleaners/index.d.ts.map +1 -0
  22. package/lib/cleaners/organes.d.ts +1 -0
  23. package/lib/cleaners/organes.d.ts.map +1 -0
  24. package/lib/cleaners/questions.d.ts +1 -0
  25. package/lib/cleaners/questions.d.ts.map +1 -0
  26. package/lib/cleaners/reunions.d.ts +1 -0
  27. package/lib/cleaners/reunions.d.ts.map +1 -0
  28. package/lib/cleaners/scrutins.d.ts +1 -0
  29. package/lib/cleaners/scrutins.d.ts.map +1 -0
  30. package/lib/cleaners/xml.d.ts +1 -0
  31. package/lib/cleaners/xml.d.ts.map +1 -0
  32. package/lib/cleaners.js +1138 -0
  33. package/lib/cleaners.js.map +1 -0
  34. package/lib/datasets.d.ts +4 -3
  35. package/lib/datasets.d.ts.map +1 -0
  36. package/lib/dates.d.ts +1 -0
  37. package/lib/dates.d.ts.map +1 -0
  38. package/lib/debats-BwZYgzXe.js +3978 -0
  39. package/lib/debats-BwZYgzXe.js.map +1 -0
  40. package/lib/dossiers_legislatifs.d.ts +3 -2
  41. package/lib/dossiers_legislatifs.d.ts.map +1 -0
  42. package/lib/file_systems.d.ts +1 -0
  43. package/lib/file_systems.d.ts.map +1 -0
  44. package/lib/git.d.ts +1 -0
  45. package/lib/git.d.ts.map +1 -0
  46. package/lib/index.d.ts +18 -22
  47. package/lib/index.d.ts.map +1 -0
  48. package/lib/index.js +1916 -285
  49. package/lib/index.js.map +1 -0
  50. package/lib/inserters.d.ts +6 -5
  51. package/lib/inserters.d.ts.map +1 -0
  52. package/lib/loaders.d.ts +13 -12
  53. package/lib/loaders.d.ts.map +1 -0
  54. package/lib/loaders.js +812 -1516
  55. package/lib/loaders.js.map +1 -0
  56. package/lib/logger.d.ts +1 -0
  57. package/lib/logger.d.ts.map +1 -0
  58. package/lib/organes.d.ts +2 -1
  59. package/lib/organes.d.ts.map +1 -0
  60. package/lib/parse-CzW8NHW5.js +2850 -0
  61. package/lib/parse-CzW8NHW5.js.map +1 -0
  62. package/lib/parsers/index.d.ts +3 -3
  63. package/lib/parsers/index.d.ts.map +1 -0
  64. package/lib/parsers/plf.d.ts +2 -0
  65. package/lib/parsers/plf.d.ts.map +1 -0
  66. package/lib/parsers/recherche_amendements.d.ts +3 -2
  67. package/lib/parsers/recherche_amendements.d.ts.map +1 -0
  68. package/lib/parsers/textes_lois.d.ts +2 -23
  69. package/lib/parsers/textes_lois.d.ts.map +1 -0
  70. package/lib/parsers.js +393 -0
  71. package/lib/parsers.js.map +1 -0
  72. package/lib/raw_types/acteurs_et_organes.d.ts +1 -0
  73. package/lib/raw_types/acteurs_et_organes.d.ts.map +1 -0
  74. package/lib/raw_types/agendas.d.ts +1 -0
  75. package/lib/raw_types/agendas.d.ts.map +1 -0
  76. package/lib/raw_types/amendements.d.ts +1 -0
  77. package/lib/raw_types/amendements.d.ts.map +1 -0
  78. package/lib/raw_types/debats.d.ts +3 -2
  79. package/lib/raw_types/debats.d.ts.map +1 -0
  80. package/lib/raw_types/dossiers_legislatifs.d.ts +2 -1
  81. package/lib/raw_types/dossiers_legislatifs.d.ts.map +1 -0
  82. package/lib/raw_types/questions.d.ts +1 -0
  83. package/lib/raw_types/questions.d.ts.map +1 -0
  84. package/lib/raw_types/scrutins.d.ts +1 -0
  85. package/lib/raw_types/scrutins.d.ts.map +1 -0
  86. package/lib/schemas/acteurs_et_organes.d.json +982 -0
  87. package/lib/schemas/acteurs_et_organes.json +1166 -0
  88. package/lib/schemas/agendas.d.json +1561 -0
  89. package/lib/schemas/agendas.json +1745 -0
  90. package/lib/schemas/amendements.d.json +1901 -0
  91. package/lib/schemas/amendements.json +2085 -0
  92. package/lib/schemas/debats.d.json +623 -0
  93. package/lib/schemas/debats.json +842 -0
  94. package/lib/schemas/dossiers_legislatifs.d.json +3690 -0
  95. package/lib/schemas/dossiers_legislatifs.json +3874 -0
  96. package/lib/schemas/legislatures.d.json +17 -0
  97. package/lib/schemas/legislatures.json +17 -0
  98. package/lib/schemas/questions.d.json +520 -0
  99. package/lib/schemas/questions.json +704 -0
  100. package/lib/schemas/scrutins.d.json +517 -0
  101. package/lib/schemas/scrutins.json +701 -0
  102. package/lib/scripts/add_links_to_documents.d.ts +2 -0
  103. package/lib/scripts/add_links_to_documents.d.ts.map +1 -0
  104. package/lib/scripts/clean_reorganized_data.d.ts +1 -0
  105. package/lib/scripts/clean_reorganized_data.d.ts.map +1 -0
  106. package/lib/scripts/copy-schemas.d.ts +2 -0
  107. package/lib/scripts/copy-schemas.d.ts.map +1 -0
  108. package/lib/scripts/diff_amendements.d.ts +1 -0
  109. package/lib/scripts/diff_amendements.d.ts.map +1 -0
  110. package/lib/scripts/document_dossiers_legislatifs.d.ts +1 -0
  111. package/lib/scripts/document_dossiers_legislatifs.d.ts.map +1 -0
  112. package/lib/scripts/generate-json-schemas.d.ts +2 -0
  113. package/lib/scripts/generate-json-schemas.d.ts.map +1 -0
  114. package/lib/scripts/get_today_reunions.d.ts +1 -0
  115. package/lib/scripts/get_today_reunions.d.ts.map +1 -0
  116. package/lib/scripts/merge_scrutins.d.ts +1 -0
  117. package/lib/scripts/merge_scrutins.d.ts.map +1 -0
  118. package/lib/scripts/process_open_dataset.d.ts +1 -0
  119. package/lib/scripts/process_open_dataset.d.ts.map +1 -0
  120. package/lib/scripts/raw_types_from_amendements.d.ts +1 -0
  121. package/lib/scripts/raw_types_from_amendements.d.ts.map +1 -0
  122. package/lib/scripts/reorganize_data.d.ts +1 -0
  123. package/lib/scripts/reorganize_data.d.ts.map +1 -0
  124. package/lib/scripts/retrieve_deputes_photos.d.ts +2 -1
  125. package/lib/scripts/retrieve_deputes_photos.d.ts.map +1 -0
  126. package/lib/scripts/retrieve_documents.d.ts +1 -0
  127. package/lib/scripts/retrieve_documents.d.ts.map +1 -0
  128. package/lib/scripts/retrieve_open_data.d.ts +1 -0
  129. package/lib/scripts/retrieve_open_data.d.ts.map +1 -0
  130. package/lib/scripts/retrieve_pending_amendments.d.ts +1 -0
  131. package/lib/scripts/retrieve_pending_amendments.d.ts.map +1 -0
  132. package/lib/scripts/retrieve_senateurs_photos.d.ts +1 -0
  133. package/lib/scripts/retrieve_senateurs_photos.d.ts.map +1 -0
  134. package/lib/scripts/shared/cli_helpers.d.ts +1 -0
  135. package/lib/scripts/shared/cli_helpers.d.ts.map +1 -0
  136. package/lib/scripts/test_iter_load.d.ts +1 -0
  137. package/lib/scripts/test_iter_load.d.ts.map +1 -0
  138. package/lib/scripts/test_load.d.ts +1 -0
  139. package/lib/scripts/test_load.d.ts.map +1 -0
  140. package/lib/scripts/test_load_big_files.d.ts +1 -0
  141. package/lib/scripts/test_load_big_files.d.ts.map +1 -0
  142. package/lib/scripts/validate_json.d.ts +1 -0
  143. package/lib/scripts/validate_json.d.ts.map +1 -0
  144. package/lib/shared_types/codes_actes.d.ts +1 -0
  145. package/lib/shared_types/codes_actes.d.ts.map +1 -0
  146. package/lib/strings.d.ts +1 -0
  147. package/lib/strings.d.ts.map +1 -0
  148. package/lib/types/acteurs_et_organes.d.ts +341 -0
  149. package/lib/types/acteurs_et_organes.d.ts.map +1 -0
  150. package/lib/types/agendas.d.ts +237 -10
  151. package/lib/types/agendas.d.ts.map +1 -0
  152. package/lib/types/amendements.d.ts +277 -1
  153. package/lib/types/amendements.d.ts.map +1 -0
  154. package/lib/types/debats.d.ts +53 -2
  155. package/lib/types/debats.d.ts.map +1 -0
  156. package/lib/types/dossiers_legislatifs.d.ts +404 -9
  157. package/lib/types/dossiers_legislatifs.d.ts.map +1 -0
  158. package/lib/types/legislatures.d.ts +1 -0
  159. package/lib/types/legislatures.d.ts.map +1 -0
  160. package/lib/types/questions.d.ts +100 -2
  161. package/lib/types/questions.d.ts.map +1 -0
  162. package/lib/types/scrutins.d.ts +102 -0
  163. package/lib/types/scrutins.d.ts.map +1 -0
  164. package/lib/urls.d.ts +3 -2
  165. package/lib/urls.d.ts.map +1 -0
  166. package/package.json +31 -95
  167. package/lib/api.js +0 -52
  168. package/lib/api.mjs +0 -45
  169. package/lib/bugs/acteur-00010/plugin.test.d.ts +0 -1
  170. package/lib/bugs/acteur-00010/plugin.test.js +0 -90
  171. package/lib/bugs/acteur-00010/plugin.test.mjs +0 -33
  172. package/lib/bugs/acteur-00010.d.ts +0 -7
  173. package/lib/bugs/acteur-00010.js +0 -116
  174. package/lib/bugs/acteur-00010.mjs +0 -26
  175. package/lib/bugs/agenda-00002/plugin.test.d.ts +0 -1
  176. package/lib/bugs/agenda-00002/plugin.test.js +0 -124
  177. package/lib/bugs/agenda-00002/plugin.test.mjs +0 -50
  178. package/lib/bugs/agenda-00002.d.ts +0 -15
  179. package/lib/bugs/agenda-00002.js +0 -406
  180. package/lib/bugs/agenda-00002.mjs +0 -172
  181. package/lib/bugs/agenda-00008/plugin.test.d.ts +0 -1
  182. package/lib/bugs/agenda-00008/plugin.test.js +0 -92
  183. package/lib/bugs/agenda-00008/plugin.test.mjs +0 -31
  184. package/lib/bugs/agenda-00008.d.ts +0 -7
  185. package/lib/bugs/agenda-00008.js +0 -123
  186. package/lib/bugs/agenda-00008.mjs +0 -26
  187. package/lib/bugs/agenda-00011/plugin.test.d.ts +0 -1
  188. package/lib/bugs/agenda-00011/plugin.test.js +0 -263
  189. package/lib/bugs/agenda-00011/plugin.test.mjs +0 -152
  190. package/lib/bugs/agenda-00011.d.ts +0 -16
  191. package/lib/bugs/agenda-00011.js +0 -333
  192. package/lib/bugs/agenda-00011.mjs +0 -125
  193. package/lib/bugs.d.ts +0 -21
  194. package/lib/bugs.js +0 -452
  195. package/lib/bugs.mjs +0 -70
  196. package/lib/cleaners/actes_legislatifs.js +0 -315
  197. package/lib/cleaners/actes_legislatifs.mjs +0 -253
  198. package/lib/cleaners/acteurs.js +0 -265
  199. package/lib/cleaners/acteurs.mjs +0 -180
  200. package/lib/cleaners/amendements.js +0 -294
  201. package/lib/cleaners/amendements.mjs +0 -227
  202. package/lib/cleaners/debats.js +0 -12
  203. package/lib/cleaners/debats.mjs +0 -5
  204. package/lib/cleaners/documents.js +0 -205
  205. package/lib/cleaners/documents.mjs +0 -133
  206. package/lib/cleaners/dossiers_legislatifs.js +0 -131
  207. package/lib/cleaners/dossiers_legislatifs.mjs +0 -70
  208. package/lib/cleaners/index.js +0 -70
  209. package/lib/cleaners/index.mjs +0 -10
  210. package/lib/cleaners/organes.js +0 -65
  211. package/lib/cleaners/organes.mjs +0 -48
  212. package/lib/cleaners/questions.js +0 -12
  213. package/lib/cleaners/questions.mjs +0 -5
  214. package/lib/cleaners/reunions.js +0 -312
  215. package/lib/cleaners/reunions.mjs +0 -255
  216. package/lib/cleaners/scrutins.js +0 -340
  217. package/lib/cleaners/scrutins.mjs +0 -221
  218. package/lib/cleaners/xml.js +0 -74
  219. package/lib/cleaners/xml.mjs +0 -59
  220. package/lib/datasets.js +0 -837
  221. package/lib/datasets.mjs +0 -755
  222. package/lib/dates.js +0 -124
  223. package/lib/dates.mjs +0 -100
  224. package/lib/dossiers_legislatifs.js +0 -346
  225. package/lib/dossiers_legislatifs.mjs +0 -208
  226. package/lib/file_systems.js +0 -162
  227. package/lib/file_systems.mjs +0 -62
  228. package/lib/git.js +0 -223
  229. package/lib/git.mjs +0 -151
  230. package/lib/index.mjs +0 -17
  231. package/lib/inserters.js +0 -521
  232. package/lib/inserters.mjs +0 -337
  233. package/lib/loaders.mjs +0 -886
  234. package/lib/logger.js +0 -35
  235. package/lib/logger.mjs +0 -26
  236. package/lib/organes.js +0 -22
  237. package/lib/organes.mjs +0 -15
  238. package/lib/parsers/documents.d.ts +0 -62
  239. package/lib/parsers/documents.js +0 -453
  240. package/lib/parsers/documents.mjs +0 -370
  241. package/lib/parsers/index.js +0 -40
  242. package/lib/parsers/index.mjs +0 -4
  243. package/lib/parsers/recherche_amendements.js +0 -403
  244. package/lib/parsers/recherche_amendements.mjs +0 -167
  245. package/lib/parsers/textes_lois.js +0 -307
  246. package/lib/parsers/textes_lois.mjs +0 -264
  247. package/lib/raw_types/acteurs_et_organes.js +0 -1215
  248. package/lib/raw_types/acteurs_et_organes.mjs +0 -1148
  249. package/lib/raw_types/agendas.js +0 -777
  250. package/lib/raw_types/agendas.mjs +0 -724
  251. package/lib/raw_types/amendements.js +0 -1052
  252. package/lib/raw_types/amendements.mjs +0 -993
  253. package/lib/raw_types/debats.js +0 -630
  254. package/lib/raw_types/debats.mjs +0 -573
  255. package/lib/raw_types/dossiers_legislatifs.js +0 -1529
  256. package/lib/raw_types/dossiers_legislatifs.mjs +0 -1471
  257. package/lib/raw_types/questions.js +0 -469
  258. package/lib/raw_types/questions.mjs +0 -416
  259. package/lib/raw_types/scrutins.js +0 -651
  260. package/lib/raw_types/scrutins.mjs +0 -598
  261. package/lib/schemas/acteur/Acteur.json +0 -56
  262. package/lib/schemas/acteur/AdresseElectronique.json +0 -52
  263. package/lib/schemas/acteur/AdressePostale.json +0 -75
  264. package/lib/schemas/acteur/Civ.json +0 -14
  265. package/lib/schemas/acteur/Collaborateur.json +0 -29
  266. package/lib/schemas/acteur/EtatCivil.json +0 -51
  267. package/lib/schemas/acteur/Ident.json +0 -40
  268. package/lib/schemas/acteur/Lieu.json +0 -66
  269. package/lib/schemas/acteur/Mandat.json +0 -192
  270. package/lib/schemas/acteur/Profession.json +0 -46
  271. package/lib/schemas/agenda/Agenda.json +0 -318
  272. package/lib/schemas/agenda/CycleDeVie.json +0 -45
  273. package/lib/schemas/agenda/PointOdj.json +0 -82
  274. package/lib/schemas/amendement/Amendement.json +0 -246
  275. package/lib/schemas/amendement/Diff.json +0 -25
  276. package/lib/schemas/amendement/DispositifAmdtCredit.json +0 -85
  277. package/lib/schemas/amendement/Identifiant.json +0 -62
  278. package/lib/schemas/amendement/PointeurFragmentTexte.json +0 -127
  279. package/lib/schemas/amendement/Representation.json +0 -67
  280. package/lib/schemas/amendement/Total.json +0 -26
  281. package/lib/schemas/converted_from_type/acteurs_et_organes.json +0 -666
  282. package/lib/schemas/converted_from_type/agendas.json +0 -1100
  283. package/lib/schemas/converted_from_type/amendements.json +0 -3191
  284. package/lib/schemas/converted_from_type/debats.json +0 -682
  285. package/lib/schemas/converted_from_type/deputes.json +0 -26
  286. package/lib/schemas/converted_from_type/dossiers_legislatifs.json +0 -2918
  287. package/lib/schemas/converted_from_type/legislatures.json +0 -16
  288. package/lib/schemas/converted_from_type/questions.json +0 -328
  289. package/lib/schemas/converted_from_type/scrutins.json +0 -393
  290. package/lib/schemas/debat/Contenu.json +0 -75
  291. package/lib/schemas/debat/Debat.json +0 -40
  292. package/lib/schemas/debat/Metadonnees.json +0 -75
  293. package/lib/schemas/debat/Orateur.json +0 -60
  294. package/lib/schemas/debat/Point.json +0 -169
  295. package/lib/schemas/debat/Sommaire.json +0 -71
  296. package/lib/schemas/debat/SommaireElement.json +0 -108
  297. package/lib/schemas/debat/Texte.json +0 -34
  298. package/lib/schemas/document/CodeLibelle.json +0 -25
  299. package/lib/schemas/document/Document.json +0 -385
  300. package/lib/schemas/document/Indexation.json +0 -38
  301. package/lib/schemas/dossier/ActeLegislatif.json +0 -211
  302. package/lib/schemas/dossier/ActeLegislatifBase.json +0 -62
  303. package/lib/schemas/dossier/Agenda.json +0 -23
  304. package/lib/schemas/dossier/ConseilConstitutionnel.json +0 -35
  305. package/lib/schemas/dossier/Decision.json +0 -25
  306. package/lib/schemas/dossier/Dossier.json +0 -124
  307. package/lib/schemas/dossier/EtudeImpact.json +0 -29
  308. package/lib/schemas/dossier/EtudePlf.json +0 -105
  309. package/lib/schemas/dossier/Europe.json +0 -42
  310. package/lib/schemas/dossier/FamCodeLibelle.json +0 -25
  311. package/lib/schemas/dossier/InfoJO.json +0 -23
  312. package/lib/schemas/dossier/Initiateur.json +0 -36
  313. package/lib/schemas/dossier/Motion.json +0 -27
  314. package/lib/schemas/dossier/Promulgation.json +0 -62
  315. package/lib/schemas/dossier/Rapporteur.json +0 -36
  316. package/lib/schemas/dossier/Texte.json +0 -47
  317. package/lib/schemas/organe/CodeTypeOrgane.json +0 -43
  318. package/lib/schemas/organe/Organe.json +0 -136
  319. package/lib/schemas/organe/ViMoDe.json +0 -28
  320. package/lib/schemas/question/Auteur.json +0 -58
  321. package/lib/schemas/question/Cloture.json +0 -28
  322. package/lib/schemas/question/InfoJO.json +0 -40
  323. package/lib/schemas/question/MinAttribElement.json +0 -30
  324. package/lib/schemas/question/Question.json +0 -172
  325. package/lib/schemas/question/Renouvellement.json +0 -17
  326. package/lib/schemas/question/Signalement.json +0 -21
  327. package/lib/schemas/question/Texte.json +0 -24
  328. package/lib/schemas/scrutin/DecompteVoix.json +0 -35
  329. package/lib/schemas/scrutin/Dysfonctionnement.json +0 -50
  330. package/lib/schemas/scrutin/MiseAuPoint.json +0 -53
  331. package/lib/schemas/scrutin/OrganeVotant.json +0 -88
  332. package/lib/schemas/scrutin/Scrutin.json +0 -187
  333. package/lib/schemas/scrutin/Votant.json +0 -37
  334. package/lib/scripts/bugs_helper.d.ts +0 -13
  335. package/lib/scripts/bugs_helper.js +0 -595
  336. package/lib/scripts/bugs_helper.mjs +0 -251
  337. package/lib/scripts/clean_reorganized_data.js +0 -613
  338. package/lib/scripts/clean_reorganized_data.mjs +0 -276
  339. package/lib/scripts/diff_amendements.js +0 -249
  340. package/lib/scripts/diff_amendements.mjs +0 -202
  341. package/lib/scripts/document_dossiers_legislatifs.js +0 -655
  342. package/lib/scripts/document_dossiers_legislatifs.mjs +0 -414
  343. package/lib/scripts/get_today_reunions.js +0 -37
  344. package/lib/scripts/get_today_reunions.mjs +0 -31
  345. package/lib/scripts/merge_scrutins.js +0 -97
  346. package/lib/scripts/merge_scrutins.mjs +0 -47
  347. package/lib/scripts/parse_textes_lois.d.ts +0 -1
  348. package/lib/scripts/parse_textes_lois.js +0 -171
  349. package/lib/scripts/parse_textes_lois.mjs +0 -140
  350. package/lib/scripts/process_open_dataset.js +0 -301
  351. package/lib/scripts/process_open_dataset.mjs +0 -134
  352. package/lib/scripts/raw_types_from_amendements.js +0 -135
  353. package/lib/scripts/raw_types_from_amendements.mjs +0 -134
  354. package/lib/scripts/reorganize_data.js +0 -805
  355. package/lib/scripts/reorganize_data.mjs +0 -517
  356. package/lib/scripts/retrieve_deputes_photos.js +0 -310
  357. package/lib/scripts/retrieve_deputes_photos.mjs +0 -158
  358. package/lib/scripts/retrieve_documents.js +0 -547
  359. package/lib/scripts/retrieve_documents.mjs +0 -242
  360. package/lib/scripts/retrieve_open_data.js +0 -107
  361. package/lib/scripts/retrieve_open_data.mjs +0 -26
  362. package/lib/scripts/retrieve_pending_amendments.js +0 -206
  363. package/lib/scripts/retrieve_pending_amendments.mjs +0 -57
  364. package/lib/scripts/retrieve_senateurs_photos.js +0 -234
  365. package/lib/scripts/retrieve_senateurs_photos.mjs +0 -116
  366. package/lib/scripts/retrieve_textes_lois.d.ts +0 -1
  367. package/lib/scripts/retrieve_textes_lois.js +0 -240
  368. package/lib/scripts/retrieve_textes_lois.mjs +0 -85
  369. package/lib/scripts/shared/cli_helpers.js +0 -89
  370. package/lib/scripts/shared/cli_helpers.mjs +0 -81
  371. package/lib/scripts/test_iter_load.js +0 -155
  372. package/lib/scripts/test_iter_load.mjs +0 -72
  373. package/lib/scripts/test_load.js +0 -26
  374. package/lib/scripts/test_load.mjs +0 -16
  375. package/lib/scripts/test_load_big_files.js +0 -26
  376. package/lib/scripts/test_load_big_files.mjs +0 -16
  377. package/lib/scripts/validate_json.js +0 -353
  378. package/lib/scripts/validate_json.mjs +0 -184
  379. package/lib/shared_types/codes_actes.js +0 -231
  380. package/lib/shared_types/codes_actes.mjs +0 -224
  381. package/lib/strings.js +0 -16
  382. package/lib/strings.mjs +0 -7
  383. package/lib/types/acteurs_et_organes.js +0 -965
  384. package/lib/types/acteurs_et_organes.mjs +0 -906
  385. package/lib/types/agendas.js +0 -628
  386. package/lib/types/agendas.mjs +0 -575
  387. package/lib/types/amendements.js +0 -899
  388. package/lib/types/amendements.mjs +0 -842
  389. package/lib/types/debats.js +0 -619
  390. package/lib/types/debats.mjs +0 -562
  391. package/lib/types/dossiers_legislatifs.js +0 -1188
  392. package/lib/types/dossiers_legislatifs.mjs +0 -1130
  393. package/lib/types/legislatures.js +0 -17
  394. package/lib/types/legislatures.mjs +0 -10
  395. package/lib/types/questions.js +0 -454
  396. package/lib/types/questions.mjs +0 -401
  397. package/lib/types/scrutins.js +0 -556
  398. package/lib/types/scrutins.mjs +0 -503
  399. package/lib/urls.js +0 -325
  400. package/lib/urls.mjs +0 -258
package/lib/urls.mjs DELETED
@@ -1,258 +0,0 @@
1
- export let DocumentUrlFormat = /*#__PURE__*/function (DocumentUrlFormat) {
2
- DocumentUrlFormat["Html"] = "html";
3
- DocumentUrlFormat["Pdf"] = "pdf";
4
- DocumentUrlFormat["RawHtml"] = "raw-html"; // The version of the document that can be parsed to extract divisions & articles
5
- return DocumentUrlFormat;
6
- }({});
7
- const documentUrlFragmentsByType = {
8
- ACIN: {
9
- directory: "projets",
10
- prefix: "pl",
11
- suffix: "-ai"
12
- },
13
- AVCEPRJLOI: {
14
- directory: "projets",
15
- prefix: "pl",
16
- suffix: "-ace"
17
- },
18
- AVCELETTRE: {
19
- directory: "projets",
20
- prefix: "pl",
21
- suffix: "-ace"
22
- },
23
- AVCEPIONLOI: {
24
- directory: "propositions",
25
- prefix: "pion",
26
- suffix: "-ace"
27
- },
28
- AVIS: {
29
- directory: "rapports",
30
- prefix: "r",
31
- suffix: ""
32
- },
33
- ETDI: {
34
- directory: "projets",
35
- prefix: "pl",
36
- suffix: "-ei"
37
- },
38
- LETT: {
39
- directory: "projets",
40
- prefix: "pl",
41
- suffix: "-l"
42
- },
43
- PION: {
44
- directory: "propositions",
45
- prefix: "pion",
46
- suffix: ""
47
- },
48
- PNRE: {
49
- directory: "propositions",
50
- prefix: "pion",
51
- suffix: ""
52
- },
53
- PNREAPPART341: {
54
- directory: "propositions",
55
- prefix: "pion",
56
- suffix: ""
57
- },
58
- PNRECOMENQ: {
59
- directory: "propositions",
60
- prefix: "pion",
61
- suffix: ""
62
- },
63
- PNREMODREGLTAN: {
64
- directory: "propositions",
65
- prefix: "pion",
66
- suffix: ""
67
- },
68
- PNRETVXINSTITEUROP: {
69
- directory: "europe/resolutions",
70
- prefix: "ppe",
71
- suffix: ""
72
- },
73
- PRJL: {
74
- directory: "projets",
75
- prefix: "pl",
76
- suffix: ""
77
- },
78
- RAPP: {
79
- directory: "rapports",
80
- prefix: "r",
81
- suffix: ""
82
- },
83
- RINF: {
84
- directory: "rap-info",
85
- prefix: "i",
86
- suffix: ""
87
- },
88
- RION: {
89
- directory: "",
90
- prefix: "",
91
- suffix: ""
92
- },
93
- TADO: {
94
- directory: "ta",
95
- prefix: "ta",
96
- suffix: ""
97
- },
98
- TCOM: {
99
- directory: "ta-commission",
100
- prefix: "r",
101
- suffix: "-a0"
102
- },
103
- TCOMCOMENQ: {
104
- directory: "ta-commission",
105
- prefix: "r",
106
- suffix: "-a0"
107
- },
108
- TCOMMODREGLTAN: {
109
- directory: "ta-commission",
110
- prefix: "r",
111
- suffix: "-a0"
112
- },
113
- TCOMTVXINSTITEUROP: {
114
- directory: "ta-commission",
115
- prefix: "r",
116
- suffix: "-a0"
117
- }
118
- };
119
- function extensionFromDocumentUrlFormat(format) {
120
- switch (format) {
121
- case DocumentUrlFormat.Html:
122
- return ".asp";
123
- case DocumentUrlFormat.Pdf:
124
- return ".pdf";
125
- case DocumentUrlFormat.RawHtml:
126
- return ".asp";
127
- }
128
- }
129
- export function* iterDocumentOrDivisionUrls(documentOrDivision, format = undefined) {
130
- // Raw HTML
131
- if (format === undefined || format === DocumentUrlFormat.RawHtml) {
132
- // Note: Both URLs should work and return the same result.
133
- yield {
134
- format: DocumentUrlFormat.RawHtml,
135
- type: "dyn-opendata",
136
- url: `https://www.assemblee-nationale.fr/dyn/opendata/${documentOrDivision.uid}.html`
137
- };
138
- yield {
139
- format: DocumentUrlFormat.RawHtml,
140
- type: "dyn-docs",
141
- url: `https://www.assemblee-nationale.fr/dyn/docs/${documentOrDivision.uid}.raw`
142
- };
143
- const urlInfos = urlInfosFromDocumentOrDivision(documentOrDivision, DocumentUrlFormat.RawHtml);
144
- if (urlInfos !== null) {
145
- yield {
146
- format: DocumentUrlFormat.RawHtml,
147
- type: urlInfos.directory.replaceAll("/", "-"),
148
- url: urlInfos.url
149
- };
150
- }
151
- }
152
-
153
- // HTML
154
- if (format === undefined || format === DocumentUrlFormat.Html) {
155
- const urlInfos = urlInfosFromDocumentOrDivision(documentOrDivision, DocumentUrlFormat.Html);
156
- if (urlInfos !== null) {
157
- yield {
158
- format: DocumentUrlFormat.Html,
159
- type: urlInfos.directory.replaceAll("/", "-"),
160
- url: urlInfos.url
161
- };
162
- }
163
- }
164
-
165
- // PDF
166
- if (format === undefined || format === DocumentUrlFormat.Pdf) {
167
- // Note: Both URLs should work and return the same result.
168
- yield {
169
- format: DocumentUrlFormat.RawHtml,
170
- type: "dyn-opendata",
171
- url: `https://www.assemblee-nationale.fr/dyn/opendata/${documentOrDivision.uid}.html`
172
- };
173
- yield {
174
- format: DocumentUrlFormat.Pdf,
175
- type: "dyn-docs",
176
- url: `https://www.assemblee-nationale.fr/dyn/docs/${documentOrDivision.uid}.pdf`
177
- };
178
- const urlInfos = urlInfosFromDocumentOrDivision(documentOrDivision, DocumentUrlFormat.Pdf);
179
- if (urlInfos !== null) {
180
- yield {
181
- format: DocumentUrlFormat.Pdf,
182
- type: urlInfos.directory.replaceAll("/", "-"),
183
- url: urlInfos.url
184
- };
185
- }
186
- }
187
- }
188
-
189
- /// Note: This function doesn't use the "modern" Assemblée URLs for documents.
190
- /// Use generator `iterDocumentOrDivisionUrls` instead.
191
- export function urlFromDocument(documentOrDivision, format) {
192
- const urlInfos = urlInfosFromDocumentOrDivision(documentOrDivision, format);
193
- return urlInfos === null ? null : urlInfos.url;
194
- }
195
- export function urlFromScrutin(scrutin) {
196
- // Sample UIDs: VTANR5L15V389
197
- const match = /^VTANR([0-9]+)L([0-9]+)V([0-9]+)$/.exec(scrutin.uid);
198
- if (match === null) {
199
- console.log(`Unable to generate URL from scrutin with unexpected UID: "${scrutin.uid}"`);
200
- return null;
201
- }
202
- const legislature = match[2];
203
- const numero = match[3];
204
- return `http://www2.assemblee-nationale.fr/scrutins/detail/(legislature)/${legislature}/(num)/${numero}`;
205
- }
206
-
207
- /// Note: This function doesn't use the modern Assemblée URLs for documents.
208
- /// Use generator `iterDocumentOrDivisionUrls` instead.
209
- function urlInfosFromDocumentOrDivision(documentOrDivision, format) {
210
- // Code taken from function `an_text_url` in project anpy:
211
- // https://github.com/regardscitoyens/anpy/blob/master/anpy/dossier_from_opendata.py
212
- // See https://www.assemblee-nationale.fr/opendata/Implementation_Referentiel/Identifiants_Referentiels.html
213
- // for a description of the format of an UID.
214
-
215
- const extension = extensionFromDocumentUrlFormat(format);
216
- const match = /^(.{4})([ANS]*)(R[0-9])([LS]*)([0-9]*)([BTACP]*)(.*)$/.exec(documentOrDivision.uid);
217
- if (match === null) {
218
- console.log(`Unable to generate URL from document or division with unexpected UID: "${documentOrDivision.uid}"`);
219
- return null;
220
- }
221
- const chambre = match[2];
222
- if (chambre === "SN") {
223
- console.log(`Unable to generate URL for document or division in Sénat. UID: "${documentOrDivision.uid}"`);
224
- return null;
225
- }
226
- const legislature = match[5];
227
- let number = match[7];
228
- if (format === DocumentUrlFormat.RawHtml) {
229
- return {
230
- directory: "textes",
231
- url: `https://www.assemblee-nationale.fr/${legislature}/textes/${number}${extension}`
232
- };
233
- }
234
- let documentType = {
235
- BTC: "TCOM",
236
- BTA: "TADO",
237
- TAP: "TADO"
238
- }[match[6]] || match[1];
239
- if (documentOrDivision.classification !== undefined && documentOrDivision.classification.sousType !== undefined && documentOrDivision.classification.sousType.code === "COMPA") {
240
- // Annexe au rapport : Texte comparatif COMPA
241
- number = number.replace(/-COMPA/, "-aCOMPA");
242
- }
243
- if (documentType == "AVCE") {
244
- documentType = `AVCE${documentOrDivision.classification.famille?.classe.code}`;
245
- }
246
- const fragments = documentUrlFragmentsByType[documentType];
247
- if (fragments === undefined) {
248
- // For example: ALCNANR5L15B0002 (allocution du président)
249
- console.log(`Unable to generate URL from document or division of UID "${documentOrDivision.uid}" and type "${documentType}"`);
250
- return null;
251
- }
252
- const directory = format === DocumentUrlFormat.Pdf ? `pdf/${fragments.directory}` : fragments.directory;
253
- return {
254
- directory,
255
- url: `https://www.assemblee-nationale.fr/${legislature}/${directory}/${fragments.prefix}${number}${fragments.suffix}${extension}`
256
- };
257
- }
258
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEb2N1bWVudFVybEZvcm1hdCIsImRvY3VtZW50VXJsRnJhZ21lbnRzQnlUeXBlIiwiQUNJTiIsImRpcmVjdG9yeSIsInByZWZpeCIsInN1ZmZpeCIsIkFWQ0VQUkpMT0kiLCJBVkNFTEVUVFJFIiwiQVZDRVBJT05MT0kiLCJBVklTIiwiRVRESSIsIkxFVFQiLCJQSU9OIiwiUE5SRSIsIlBOUkVBUFBBUlQzNDEiLCJQTlJFQ09NRU5RIiwiUE5SRU1PRFJFR0xUQU4iLCJQTlJFVFZYSU5TVElURVVST1AiLCJQUkpMIiwiUkFQUCIsIlJJTkYiLCJSSU9OIiwiVEFETyIsIlRDT00iLCJUQ09NQ09NRU5RIiwiVENPTU1PRFJFR0xUQU4iLCJUQ09NVFZYSU5TVElURVVST1AiLCJleHRlbnNpb25Gcm9tRG9jdW1lbnRVcmxGb3JtYXQiLCJmb3JtYXQiLCJIdG1sIiwiUGRmIiwiUmF3SHRtbCIsIml0ZXJEb2N1bWVudE9yRGl2aXNpb25VcmxzIiwiZG9jdW1lbnRPckRpdmlzaW9uIiwidW5kZWZpbmVkIiwidHlwZSIsInVybCIsInVpZCIsInVybEluZm9zIiwidXJsSW5mb3NGcm9tRG9jdW1lbnRPckRpdmlzaW9uIiwicmVwbGFjZUFsbCIsInVybEZyb21Eb2N1bWVudCIsInVybEZyb21TY3J1dGluIiwic2NydXRpbiIsIm1hdGNoIiwiZXhlYyIsImNvbnNvbGUiLCJsb2ciLCJsZWdpc2xhdHVyZSIsIm51bWVybyIsImV4dGVuc2lvbiIsImNoYW1icmUiLCJudW1iZXIiLCJkb2N1bWVudFR5cGUiLCJCVEMiLCJCVEEiLCJUQVAiLCJjbGFzc2lmaWNhdGlvbiIsInNvdXNUeXBlIiwiY29kZSIsInJlcGxhY2UiLCJmYW1pbGxlIiwiY2xhc3NlIiwiZnJhZ21lbnRzIl0sInNvdXJjZXMiOlsiLi4vc3JjL3VybHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEb2N1bWVudCwgRGl2aXNpb24gfSBmcm9tIFwiLi90eXBlcy9kb3NzaWVyc19sZWdpc2xhdGlmc1wiXG5pbXBvcnQgdHlwZSB7IFNjcnV0aW4gfSBmcm9tIFwiLi90eXBlcy9zY3J1dGluc1wiXG5cbmV4cG9ydCBlbnVtIERvY3VtZW50VXJsRm9ybWF0IHtcbiAgSHRtbCA9IFwiaHRtbFwiLFxuICBQZGYgPSBcInBkZlwiLFxuICBSYXdIdG1sID0gXCJyYXctaHRtbFwiLCAvLyBUaGUgdmVyc2lvbiBvZiB0aGUgZG9jdW1lbnQgdGhhdCBjYW4gYmUgcGFyc2VkIHRvIGV4dHJhY3QgZGl2aXNpb25zICYgYXJ0aWNsZXNcbn1cblxuY29uc3QgZG9jdW1lbnRVcmxGcmFnbWVudHNCeVR5cGU6IHtcbiAgW3R5cGU6IHN0cmluZ106IHtcbiAgICBkaXJlY3Rvcnk6IHN0cmluZ1xuICAgIHByZWZpeDogc3RyaW5nXG4gICAgc3VmZml4OiBzdHJpbmdcbiAgfVxufSA9IHtcbiAgQUNJTjoge1xuICAgIGRpcmVjdG9yeTogXCJwcm9qZXRzXCIsXG4gICAgcHJlZml4OiBcInBsXCIsXG4gICAgc3VmZml4OiBcIi1haVwiLFxuICB9LFxuICBBVkNFUFJKTE9JOiB7XG4gICAgZGlyZWN0b3J5OiBcInByb2pldHNcIixcbiAgICBwcmVmaXg6IFwicGxcIixcbiAgICBzdWZmaXg6IFwiLWFjZVwiLFxuICB9LFxuICBBVkNFTEVUVFJFOiB7XG4gICAgZGlyZWN0b3J5OiBcInByb2pldHNcIixcbiAgICBwcmVmaXg6IFwicGxcIixcbiAgICBzdWZmaXg6IFwiLWFjZVwiLFxuICB9LFxuICBBVkNFUElPTkxPSToge1xuICAgIGRpcmVjdG9yeTogXCJwcm9wb3NpdGlvbnNcIixcbiAgICBwcmVmaXg6IFwicGlvblwiLFxuICAgIHN1ZmZpeDogXCItYWNlXCIsXG4gIH0sXG4gIEFWSVM6IHtcbiAgICBkaXJlY3Rvcnk6IFwicmFwcG9ydHNcIixcbiAgICBwcmVmaXg6IFwiclwiLFxuICAgIHN1ZmZpeDogXCJcIixcbiAgfSxcbiAgRVRESToge1xuICAgIGRpcmVjdG9yeTogXCJwcm9qZXRzXCIsXG4gICAgcHJlZml4OiBcInBsXCIsXG4gICAgc3VmZml4OiBcIi1laVwiLFxuICB9LFxuICBMRVRUOiB7XG4gICAgZGlyZWN0b3J5OiBcInByb2pldHNcIixcbiAgICBwcmVmaXg6IFwicGxcIixcbiAgICBzdWZmaXg6IFwiLWxcIixcbiAgfSxcbiAgUElPTjoge1xuICAgIGRpcmVjdG9yeTogXCJwcm9wb3NpdGlvbnNcIixcbiAgICBwcmVmaXg6IFwicGlvblwiLFxuICAgIHN1ZmZpeDogXCJcIixcbiAgfSxcbiAgUE5SRToge1xuICAgIGRpcmVjdG9yeTogXCJwcm9wb3NpdGlvbnNcIixcbiAgICBwcmVmaXg6IFwicGlvblwiLFxuICAgIHN1ZmZpeDogXCJcIixcbiAgfSxcbiAgUE5SRUFQUEFSVDM0MToge1xuICAgIGRpcmVjdG9yeTogXCJwcm9wb3NpdGlvbnNcIixcbiAgICBwcmVmaXg6IFwicGlvblwiLFxuICAgIHN1ZmZpeDogXCJcIixcbiAgfSxcbiAgUE5SRUNPTUVOUToge1xuICAgIGRpcmVjdG9yeTogXCJwcm9wb3NpdGlvbnNcIixcbiAgICBwcmVmaXg6IFwicGlvblwiLFxuICAgIHN1ZmZpeDogXCJcIixcbiAgfSxcbiAgUE5SRU1PRFJFR0xUQU46IHtcbiAgICBkaXJlY3Rvcnk6IFwicHJvcG9zaXRpb25zXCIsXG4gICAgcHJlZml4OiBcInBpb25cIixcbiAgICBzdWZmaXg6IFwiXCIsXG4gIH0sXG4gIFBOUkVUVlhJTlNUSVRFVVJPUDoge1xuICAgIGRpcmVjdG9yeTogXCJldXJvcGUvcmVzb2x1dGlvbnNcIixcbiAgICBwcmVmaXg6IFwicHBlXCIsXG4gICAgc3VmZml4OiBcIlwiLFxuICB9LFxuICBQUkpMOiB7XG4gICAgZGlyZWN0b3J5OiBcInByb2pldHNcIixcbiAgICBwcmVmaXg6IFwicGxcIixcbiAgICBzdWZmaXg6IFwiXCIsXG4gIH0sXG4gIFJBUFA6IHtcbiAgICBkaXJlY3Rvcnk6IFwicmFwcG9ydHNcIixcbiAgICBwcmVmaXg6IFwiclwiLFxuICAgIHN1ZmZpeDogXCJcIixcbiAgfSxcbiAgUklORjoge1xuICAgIGRpcmVjdG9yeTogXCJyYXAtaW5mb1wiLFxuICAgIHByZWZpeDogXCJpXCIsXG4gICAgc3VmZml4OiBcIlwiLFxuICB9LFxuICBSSU9OOiB7XG4gICAgZGlyZWN0b3J5OiBcIlwiLFxuICAgIHByZWZpeDogXCJcIixcbiAgICBzdWZmaXg6IFwiXCIsXG4gIH0sXG4gIFRBRE86IHtcbiAgICBkaXJlY3Rvcnk6IFwidGFcIixcbiAgICBwcmVmaXg6IFwidGFcIixcbiAgICBzdWZmaXg6IFwiXCIsXG4gIH0sXG4gIFRDT006IHtcbiAgICBkaXJlY3Rvcnk6IFwidGEtY29tbWlzc2lvblwiLFxuICAgIHByZWZpeDogXCJyXCIsXG4gICAgc3VmZml4OiBcIi1hMFwiLFxuICB9LFxuICBUQ09NQ09NRU5ROiB7XG4gICAgZGlyZWN0b3J5OiBcInRhLWNvbW1pc3Npb25cIixcbiAgICBwcmVmaXg6IFwiclwiLFxuICAgIHN1ZmZpeDogXCItYTBcIixcbiAgfSxcbiAgVENPTU1PRFJFR0xUQU46IHtcbiAgICBkaXJlY3Rvcnk6IFwidGEtY29tbWlzc2lvblwiLFxuICAgIHByZWZpeDogXCJyXCIsXG4gICAgc3VmZml4OiBcIi1hMFwiLFxuICB9LFxuICBUQ09NVFZYSU5TVElURVVST1A6IHtcbiAgICBkaXJlY3Rvcnk6IFwidGEtY29tbWlzc2lvblwiLFxuICAgIHByZWZpeDogXCJyXCIsXG4gICAgc3VmZml4OiBcIi1hMFwiLFxuICB9LFxufVxuXG5mdW5jdGlvbiBleHRlbnNpb25Gcm9tRG9jdW1lbnRVcmxGb3JtYXQoZm9ybWF0OiBEb2N1bWVudFVybEZvcm1hdCk6IHN0cmluZyB7XG4gIHN3aXRjaCAoZm9ybWF0KSB7XG4gICAgY2FzZSBEb2N1bWVudFVybEZvcm1hdC5IdG1sOlxuICAgICAgcmV0dXJuIFwiLmFzcFwiXG4gICAgY2FzZSBEb2N1bWVudFVybEZvcm1hdC5QZGY6XG4gICAgICByZXR1cm4gXCIucGRmXCJcbiAgICBjYXNlIERvY3VtZW50VXJsRm9ybWF0LlJhd0h0bWw6XG4gICAgICByZXR1cm4gXCIuYXNwXCJcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24qIGl0ZXJEb2N1bWVudE9yRGl2aXNpb25VcmxzKFxuICBkb2N1bWVudE9yRGl2aXNpb246IERvY3VtZW50IHwgRGl2aXNpb24sXG4gIGZvcm1hdDogRG9jdW1lbnRVcmxGb3JtYXQgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQsXG4pOiBHZW5lcmF0b3I8XG4gIHsgZm9ybWF0OiBEb2N1bWVudFVybEZvcm1hdDsgdHlwZTogc3RyaW5nOyB1cmw6IHN0cmluZyB9LFxuICB2b2lkLFxuICB1bmtub3duXG4+IHtcbiAgLy8gUmF3IEhUTUxcbiAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkIHx8IGZvcm1hdCA9PT0gRG9jdW1lbnRVcmxGb3JtYXQuUmF3SHRtbCkge1xuICAgIC8vIE5vdGU6IEJvdGggVVJMcyBzaG91bGQgd29yayBhbmQgcmV0dXJuIHRoZSBzYW1lIHJlc3VsdC5cbiAgICB5aWVsZCB7XG4gICAgICBmb3JtYXQ6IERvY3VtZW50VXJsRm9ybWF0LlJhd0h0bWwsXG4gICAgICB0eXBlOiBcImR5bi1vcGVuZGF0YVwiLFxuICAgICAgdXJsOiBgaHR0cHM6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9keW4vb3BlbmRhdGEvJHtkb2N1bWVudE9yRGl2aXNpb24udWlkfS5odG1sYCxcbiAgICB9XG4gICAgeWllbGQge1xuICAgICAgZm9ybWF0OiBEb2N1bWVudFVybEZvcm1hdC5SYXdIdG1sLFxuICAgICAgdHlwZTogXCJkeW4tZG9jc1wiLFxuICAgICAgdXJsOiBgaHR0cHM6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9keW4vZG9jcy8ke2RvY3VtZW50T3JEaXZpc2lvbi51aWR9LnJhd2AsXG4gICAgfVxuICAgIGNvbnN0IHVybEluZm9zID0gdXJsSW5mb3NGcm9tRG9jdW1lbnRPckRpdmlzaW9uKFxuICAgICAgZG9jdW1lbnRPckRpdmlzaW9uLFxuICAgICAgRG9jdW1lbnRVcmxGb3JtYXQuUmF3SHRtbCxcbiAgICApXG4gICAgaWYgKHVybEluZm9zICE9PSBudWxsKSB7XG4gICAgICB5aWVsZCB7XG4gICAgICAgIGZvcm1hdDogRG9jdW1lbnRVcmxGb3JtYXQuUmF3SHRtbCxcbiAgICAgICAgdHlwZTogdXJsSW5mb3MuZGlyZWN0b3J5LnJlcGxhY2VBbGwoXCIvXCIsIFwiLVwiKSxcbiAgICAgICAgdXJsOiB1cmxJbmZvcy51cmwsXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gSFRNTFxuICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQgfHwgZm9ybWF0ID09PSBEb2N1bWVudFVybEZvcm1hdC5IdG1sKSB7XG4gICAgY29uc3QgdXJsSW5mb3MgPSB1cmxJbmZvc0Zyb21Eb2N1bWVudE9yRGl2aXNpb24oXG4gICAgICBkb2N1bWVudE9yRGl2aXNpb24sXG4gICAgICBEb2N1bWVudFVybEZvcm1hdC5IdG1sLFxuICAgIClcbiAgICBpZiAodXJsSW5mb3MgIT09IG51bGwpIHtcbiAgICAgIHlpZWxkIHtcbiAgICAgICAgZm9ybWF0OiBEb2N1bWVudFVybEZvcm1hdC5IdG1sLFxuICAgICAgICB0eXBlOiB1cmxJbmZvcy5kaXJlY3RvcnkucmVwbGFjZUFsbChcIi9cIiwgXCItXCIpLFxuICAgICAgICB1cmw6IHVybEluZm9zLnVybCxcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQREZcbiAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkIHx8IGZvcm1hdCA9PT0gRG9jdW1lbnRVcmxGb3JtYXQuUGRmKSB7XG4gICAgLy8gTm90ZTogQm90aCBVUkxzIHNob3VsZCB3b3JrIGFuZCByZXR1cm4gdGhlIHNhbWUgcmVzdWx0LlxuICAgIHlpZWxkIHtcbiAgICAgIGZvcm1hdDogRG9jdW1lbnRVcmxGb3JtYXQuUmF3SHRtbCxcbiAgICAgIHR5cGU6IFwiZHluLW9wZW5kYXRhXCIsXG4gICAgICB1cmw6IGBodHRwczovL3d3dy5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL2R5bi9vcGVuZGF0YS8ke2RvY3VtZW50T3JEaXZpc2lvbi51aWR9Lmh0bWxgLFxuICAgIH1cbiAgICB5aWVsZCB7XG4gICAgICBmb3JtYXQ6IERvY3VtZW50VXJsRm9ybWF0LlBkZixcbiAgICAgIHR5cGU6IFwiZHluLWRvY3NcIixcbiAgICAgIHVybDogYGh0dHBzOi8vd3d3LmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvZHluL2RvY3MvJHtkb2N1bWVudE9yRGl2aXNpb24udWlkfS5wZGZgLFxuICAgIH1cbiAgICBjb25zdCB1cmxJbmZvcyA9IHVybEluZm9zRnJvbURvY3VtZW50T3JEaXZpc2lvbihcbiAgICAgIGRvY3VtZW50T3JEaXZpc2lvbixcbiAgICAgIERvY3VtZW50VXJsRm9ybWF0LlBkZixcbiAgICApXG4gICAgaWYgKHVybEluZm9zICE9PSBudWxsKSB7XG4gICAgICB5aWVsZCB7XG4gICAgICAgIGZvcm1hdDogRG9jdW1lbnRVcmxGb3JtYXQuUGRmLFxuICAgICAgICB0eXBlOiB1cmxJbmZvcy5kaXJlY3RvcnkucmVwbGFjZUFsbChcIi9cIiwgXCItXCIpLFxuICAgICAgICB1cmw6IHVybEluZm9zLnVybCxcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8vIE5vdGU6IFRoaXMgZnVuY3Rpb24gZG9lc24ndCB1c2UgdGhlIFwibW9kZXJuXCIgQXNzZW1ibMOpZSBVUkxzIGZvciBkb2N1bWVudHMuXG4vLy8gVXNlIGdlbmVyYXRvciBgaXRlckRvY3VtZW50T3JEaXZpc2lvblVybHNgIGluc3RlYWQuXG5leHBvcnQgZnVuY3Rpb24gdXJsRnJvbURvY3VtZW50KFxuICBkb2N1bWVudE9yRGl2aXNpb246IERvY3VtZW50IHwgRGl2aXNpb24sXG4gIGZvcm1hdDogRG9jdW1lbnRVcmxGb3JtYXQsXG4pOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgdXJsSW5mb3MgPSB1cmxJbmZvc0Zyb21Eb2N1bWVudE9yRGl2aXNpb24oZG9jdW1lbnRPckRpdmlzaW9uLCBmb3JtYXQpXG4gIHJldHVybiB1cmxJbmZvcyA9PT0gbnVsbCA/IG51bGwgOiB1cmxJbmZvcy51cmxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVybEZyb21TY3J1dGluKHNjcnV0aW46IFNjcnV0aW4pIHtcbiAgLy8gU2FtcGxlIFVJRHM6IFZUQU5SNUwxNVYzODlcbiAgY29uc3QgbWF0Y2ggPSAvXlZUQU5SKFswLTldKylMKFswLTldKylWKFswLTldKykkLy5leGVjKHNjcnV0aW4udWlkKVxuICBpZiAobWF0Y2ggPT09IG51bGwpIHtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGBVbmFibGUgdG8gZ2VuZXJhdGUgVVJMIGZyb20gc2NydXRpbiB3aXRoIHVuZXhwZWN0ZWQgVUlEOiBcIiR7c2NydXRpbi51aWR9XCJgLFxuICAgIClcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IGxlZ2lzbGF0dXJlID0gbWF0Y2hbMl1cbiAgY29uc3QgbnVtZXJvID0gbWF0Y2hbM11cbiAgcmV0dXJuIGBodHRwOi8vd3d3Mi5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3NjcnV0aW5zL2RldGFpbC8obGVnaXNsYXR1cmUpLyR7bGVnaXNsYXR1cmV9LyhudW0pLyR7bnVtZXJvfWBcbn1cblxuLy8vIE5vdGU6IFRoaXMgZnVuY3Rpb24gZG9lc24ndCB1c2UgdGhlIG1vZGVybiBBc3NlbWJsw6llIFVSTHMgZm9yIGRvY3VtZW50cy5cbi8vLyBVc2UgZ2VuZXJhdG9yIGBpdGVyRG9jdW1lbnRPckRpdmlzaW9uVXJsc2AgaW5zdGVhZC5cbmZ1bmN0aW9uIHVybEluZm9zRnJvbURvY3VtZW50T3JEaXZpc2lvbihcbiAgZG9jdW1lbnRPckRpdmlzaW9uOiBEb2N1bWVudCB8IERpdmlzaW9uLFxuICBmb3JtYXQ6IERvY3VtZW50VXJsRm9ybWF0LFxuKTogeyBkaXJlY3Rvcnk6IHN0cmluZzsgdXJsOiBzdHJpbmcgfSB8IG51bGwge1xuICAvLyBDb2RlIHRha2VuIGZyb20gZnVuY3Rpb24gYGFuX3RleHRfdXJsYCBpbiBwcm9qZWN0IGFucHk6XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWdhcmRzY2l0b3llbnMvYW5weS9ibG9iL21hc3Rlci9hbnB5L2Rvc3NpZXJfZnJvbV9vcGVuZGF0YS5weVxuICAvLyBTZWUgaHR0cHM6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9vcGVuZGF0YS9JbXBsZW1lbnRhdGlvbl9SZWZlcmVudGllbC9JZGVudGlmaWFudHNfUmVmZXJlbnRpZWxzLmh0bWxcbiAgLy8gZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIGZvcm1hdCBvZiBhbiBVSUQuXG5cbiAgY29uc3QgZXh0ZW5zaW9uID0gZXh0ZW5zaW9uRnJvbURvY3VtZW50VXJsRm9ybWF0KGZvcm1hdClcbiAgY29uc3QgbWF0Y2ggPSAvXiguezR9KShbQU5TXSopKFJbMC05XSkoW0xTXSopKFswLTldKikoW0JUQUNQXSopKC4qKSQvLmV4ZWMoXG4gICAgZG9jdW1lbnRPckRpdmlzaW9uLnVpZCxcbiAgKVxuICBpZiAobWF0Y2ggPT09IG51bGwpIHtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGBVbmFibGUgdG8gZ2VuZXJhdGUgVVJMIGZyb20gZG9jdW1lbnQgb3IgZGl2aXNpb24gd2l0aCB1bmV4cGVjdGVkIFVJRDogXCIke2RvY3VtZW50T3JEaXZpc2lvbi51aWR9XCJgLFxuICAgIClcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IGNoYW1icmUgPSBtYXRjaFsyXVxuICBpZiAoY2hhbWJyZSA9PT0gXCJTTlwiKSB7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgVW5hYmxlIHRvIGdlbmVyYXRlIFVSTCBmb3IgZG9jdW1lbnQgb3IgZGl2aXNpb24gaW4gU8OpbmF0LiBVSUQ6IFwiJHtkb2N1bWVudE9yRGl2aXNpb24udWlkfVwiYCxcbiAgICApXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBjb25zdCBsZWdpc2xhdHVyZSA9IG1hdGNoWzVdXG4gIGxldCBudW1iZXIgPSBtYXRjaFs3XVxuICBpZiAoZm9ybWF0ID09PSBEb2N1bWVudFVybEZvcm1hdC5SYXdIdG1sKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRpcmVjdG9yeTogXCJ0ZXh0ZXNcIixcbiAgICAgIHVybDogYGh0dHBzOi8vd3d3LmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvJHtsZWdpc2xhdHVyZX0vdGV4dGVzLyR7bnVtYmVyfSR7ZXh0ZW5zaW9ufWAsXG4gICAgfVxuICB9XG4gIGxldCBkb2N1bWVudFR5cGUgPVxuICAgIChcbiAgICAgIHtcbiAgICAgICAgQlRDOiBcIlRDT01cIixcbiAgICAgICAgQlRBOiBcIlRBRE9cIixcbiAgICAgICAgVEFQOiBcIlRBRE9cIixcbiAgICAgIH0gYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVxuICAgIClbbWF0Y2hbNl1dIHx8IG1hdGNoWzFdXG4gIGlmIChcbiAgICBkb2N1bWVudE9yRGl2aXNpb24uY2xhc3NpZmljYXRpb24gIT09IHVuZGVmaW5lZCAmJlxuICAgIGRvY3VtZW50T3JEaXZpc2lvbi5jbGFzc2lmaWNhdGlvbi5zb3VzVHlwZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgZG9jdW1lbnRPckRpdmlzaW9uLmNsYXNzaWZpY2F0aW9uLnNvdXNUeXBlLmNvZGUgPT09IFwiQ09NUEFcIlxuICApIHtcbiAgICAvLyBBbm5leGUgYXUgcmFwcG9ydCA6IFRleHRlIGNvbXBhcmF0aWYgQ09NUEFcbiAgICBudW1iZXIgPSBudW1iZXIucmVwbGFjZSgvLUNPTVBBLywgXCItYUNPTVBBXCIpXG4gIH1cbiAgaWYgKGRvY3VtZW50VHlwZSA9PSBcIkFWQ0VcIikge1xuICAgIGRvY3VtZW50VHlwZSA9IGBBVkNFJHtkb2N1bWVudE9yRGl2aXNpb24uY2xhc3NpZmljYXRpb24uZmFtaWxsZT8uY2xhc3NlLmNvZGV9YFxuICB9XG4gIGNvbnN0IGZyYWdtZW50cyA9IGRvY3VtZW50VXJsRnJhZ21lbnRzQnlUeXBlW2RvY3VtZW50VHlwZV1cbiAgaWYgKGZyYWdtZW50cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gRm9yIGV4YW1wbGU6IEFMQ05BTlI1TDE1QjAwMDIgKGFsbG9jdXRpb24gZHUgcHLDqXNpZGVudClcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGBVbmFibGUgdG8gZ2VuZXJhdGUgVVJMIGZyb20gZG9jdW1lbnQgb3IgZGl2aXNpb24gb2YgVUlEIFwiJHtkb2N1bWVudE9yRGl2aXNpb24udWlkfVwiIGFuZCB0eXBlIFwiJHtkb2N1bWVudFR5cGV9XCJgLFxuICAgIClcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IGRpcmVjdG9yeSA9XG4gICAgZm9ybWF0ID09PSBEb2N1bWVudFVybEZvcm1hdC5QZGZcbiAgICAgID8gYHBkZi8ke2ZyYWdtZW50cy5kaXJlY3Rvcnl9YFxuICAgICAgOiBmcmFnbWVudHMuZGlyZWN0b3J5XG4gIHJldHVybiB7XG4gICAgZGlyZWN0b3J5LFxuICAgIHVybDogYGh0dHBzOi8vd3d3LmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvJHtsZWdpc2xhdHVyZX0vJHtkaXJlY3Rvcnl9LyR7ZnJhZ21lbnRzLnByZWZpeH0ke251bWJlcn0ke2ZyYWdtZW50cy5zdWZmaXh9JHtleHRlbnNpb259YCxcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFHQSxXQUFZQSxpQkFBaUIsMEJBQWpCQSxpQkFBaUI7RUFBakJBLGlCQUFpQjtFQUFqQkEsaUJBQWlCO0VBQWpCQSxpQkFBaUIsMEJBR0w7RUFBQSxPQUhaQSxpQkFBaUI7QUFBQTtBQU03QixNQUFNQywwQkFNTCxHQUFHO0VBQ0ZDLElBQUksRUFBRTtJQUNKQyxTQUFTLEVBQUUsU0FBUztJQUNwQkMsTUFBTSxFQUFFLElBQUk7SUFDWkMsTUFBTSxFQUFFO0VBQ1YsQ0FBQztFQUNEQyxVQUFVLEVBQUU7SUFDVkgsU0FBUyxFQUFFLFNBQVM7SUFDcEJDLE1BQU0sRUFBRSxJQUFJO0lBQ1pDLE1BQU0sRUFBRTtFQUNWLENBQUM7RUFDREUsVUFBVSxFQUFFO0lBQ1ZKLFNBQVMsRUFBRSxTQUFTO0lBQ3BCQyxNQUFNLEVBQUUsSUFBSTtJQUNaQyxNQUFNLEVBQUU7RUFDVixDQUFDO0VBQ0RHLFdB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