@tricoteuses/senat 2.9.0 → 2.9.5

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 (116) hide show
  1. package/LICENSE.md +22 -22
  2. package/README.md +116 -115
  3. package/lib/loaders.d.ts +1 -1
  4. package/lib/model/agenda.js +2 -0
  5. package/lib/scripts/retrieve_videos.js +420 -0
  6. package/lib/types/agenda.d.ts +2 -0
  7. package/package.json +95 -94
  8. package/lib/aggregates.d.ts +0 -52
  9. package/lib/aggregates.js +0 -949
  10. package/lib/aggregates.mjs +0 -726
  11. package/lib/aggregates.ts +0 -852
  12. package/lib/config.mjs +0 -16
  13. package/lib/config.ts +0 -26
  14. package/lib/databases.mjs +0 -55
  15. package/lib/databases.ts +0 -68
  16. package/lib/datasets.mjs +0 -78
  17. package/lib/datasets.ts +0 -118
  18. package/lib/fields.d.ts +0 -10
  19. package/lib/fields.js +0 -68
  20. package/lib/fields.mjs +0 -22
  21. package/lib/fields.ts +0 -29
  22. package/lib/index.mjs +0 -7
  23. package/lib/index.ts +0 -64
  24. package/lib/inserters.d.ts +0 -98
  25. package/lib/inserters.js +0 -500
  26. package/lib/inserters.mjs +0 -360
  27. package/lib/inserters.ts +0 -521
  28. package/lib/legislatures.json +0 -38
  29. package/lib/loaders.mjs +0 -97
  30. package/lib/loaders.ts +0 -173
  31. package/lib/model/ameli.mjs +0 -57
  32. package/lib/model/ameli.ts +0 -86
  33. package/lib/model/debats.mjs +0 -43
  34. package/lib/model/debats.ts +0 -68
  35. package/lib/model/dosleg.mjs +0 -163
  36. package/lib/model/dosleg.ts +0 -204
  37. package/lib/model/index.mjs +0 -4
  38. package/lib/model/index.ts +0 -13
  39. package/lib/model/questions.mjs +0 -76
  40. package/lib/model/questions.ts +0 -102
  41. package/lib/model/sens.mjs +0 -339
  42. package/lib/model/sens.ts +0 -432
  43. package/lib/model/texte.mjs +0 -156
  44. package/lib/model/texte.ts +0 -174
  45. package/lib/raw_types_kysely/ameli.d.ts +0 -915
  46. package/lib/raw_types_kysely/ameli.js +0 -7
  47. package/lib/raw_types_kysely/ameli.mjs +0 -5
  48. package/lib/raw_types_kysely/ameli.ts +0 -951
  49. package/lib/raw_types_kysely/debats.d.ts +0 -207
  50. package/lib/raw_types_kysely/debats.js +0 -7
  51. package/lib/raw_types_kysely/debats.mjs +0 -5
  52. package/lib/raw_types_kysely/debats.ts +0 -222
  53. package/lib/raw_types_kysely/dosleg.d.ts +0 -3532
  54. package/lib/raw_types_kysely/dosleg.js +0 -7
  55. package/lib/raw_types_kysely/dosleg.mjs +0 -5
  56. package/lib/raw_types_kysely/dosleg.ts +0 -3621
  57. package/lib/raw_types_kysely/questions.d.ts +0 -414
  58. package/lib/raw_types_kysely/questions.js +0 -7
  59. package/lib/raw_types_kysely/questions.mjs +0 -5
  60. package/lib/raw_types_kysely/questions.ts +0 -426
  61. package/lib/raw_types_kysely/sens.d.ts +0 -4394
  62. package/lib/raw_types_kysely/sens.js +0 -7
  63. package/lib/raw_types_kysely/sens.mjs +0 -5
  64. package/lib/raw_types_kysely/sens.ts +0 -4499
  65. package/lib/raw_types_schemats/ameli.mjs +0 -2
  66. package/lib/raw_types_schemats/ameli.ts +0 -601
  67. package/lib/raw_types_schemats/debats.mjs +0 -2
  68. package/lib/raw_types_schemats/debats.ts +0 -145
  69. package/lib/raw_types_schemats/dosleg.mjs +0 -2
  70. package/lib/raw_types_schemats/dosleg.ts +0 -2193
  71. package/lib/raw_types_schemats/questions.mjs +0 -2
  72. package/lib/raw_types_schemats/questions.ts +0 -249
  73. package/lib/raw_types_schemats/sens.mjs +0 -2
  74. package/lib/raw_types_schemats/sens.ts +0 -2907
  75. package/lib/scripts/convert_data.mjs +0 -95
  76. package/lib/scripts/convert_data.ts +0 -119
  77. package/lib/scripts/datautil.mjs +0 -16
  78. package/lib/scripts/datautil.ts +0 -19
  79. package/lib/scripts/images/transparent_150x192.jpg +0 -0
  80. package/lib/scripts/images/transparent_155x225.jpg +0 -0
  81. package/lib/scripts/parse_textes.mjs +0 -38
  82. package/lib/scripts/parse_textes.ts +0 -52
  83. package/lib/scripts/retrieve_documents.mjs +0 -243
  84. package/lib/scripts/retrieve_documents.ts +0 -279
  85. package/lib/scripts/retrieve_open_data.mjs +0 -214
  86. package/lib/scripts/retrieve_open_data.ts +0 -261
  87. package/lib/scripts/retrieve_senateurs_photos.mjs +0 -147
  88. package/lib/scripts/retrieve_senateurs_photos.ts +0 -177
  89. package/lib/scripts/retrieve_textes.mjs +0 -165
  90. package/lib/scripts/retrieve_textes.ts +0 -79
  91. package/lib/scripts/shared/cli_helpers.ts +0 -36
  92. package/lib/scripts/shared/util.ts +0 -33
  93. package/lib/strings.mjs +0 -18
  94. package/lib/strings.ts +0 -26
  95. package/lib/types/ameli.mjs +0 -13
  96. package/lib/types/ameli.ts +0 -21
  97. package/lib/types/debats.mjs +0 -2
  98. package/lib/types/debats.ts +0 -6
  99. package/lib/types/dosleg.mjs +0 -151
  100. package/lib/types/dosleg.ts +0 -284
  101. package/lib/types/questions.mjs +0 -1
  102. package/lib/types/questions.ts +0 -3
  103. package/lib/types/sens.mjs +0 -1
  104. package/lib/types/sens.ts +0 -12
  105. package/lib/types/sessions.mjs +0 -43
  106. package/lib/types/sessions.ts +0 -42
  107. package/lib/types/texte.mjs +0 -16
  108. package/lib/types/texte.ts +0 -66
  109. package/lib/typings/windows-1252.d.js +0 -2
  110. package/lib/typings/windows-1252.d.mjs +0 -2
  111. package/lib/typings/windows-1252.d.ts +0 -11
  112. package/lib/validators/config.mjs +0 -54
  113. package/lib/validators/config.ts +0 -79
  114. package/lib/validators/senat.mjs +0 -24
  115. package/lib/validators/senat.ts +0 -26
  116. /package/lib/scripts/{retrieve_textes.d.ts → retrieve_videos.d.ts} +0 -0
package/lib/inserters.js DELETED
@@ -1,500 +0,0 @@
1
- "use strict";
2
-
3
- require("core-js/modules/es.symbol.js");
4
- require("core-js/modules/es.symbol.description.js");
5
- require("core-js/modules/es.symbol.iterator.js");
6
- require("core-js/modules/es.array.from.js");
7
- require("core-js/modules/es.array.is-array.js");
8
- require("core-js/modules/es.array.slice.js");
9
- require("core-js/modules/es.function.name.js");
10
- require("core-js/modules/es.object.define-property.js");
11
- require("core-js/modules/es.regexp.exec.js");
12
- require("core-js/modules/es.regexp.to-string.js");
13
- Object.defineProperty(exports, "__esModule", {
14
- value: true
15
- });
16
- exports.insertAudReferences = insertAudReferences;
17
- exports.insertAuteurReferences = insertAuteurReferences;
18
- exports.insertDateSeanceReferences = insertDateSeanceReferences;
19
- exports.insertDocAttReferences = insertDocAttReferences;
20
- exports.insertEcrReferences = insertEcrReferences;
21
- exports.insertLecassReferences = insertLecassReferences;
22
- exports.insertLecassrapReferences = insertLecassrapReferences;
23
- exports.insertLectureReferences = insertLectureReferences;
24
- exports.insertLoiReferences = insertLoiReferences;
25
- exports.insertRapReferences = insertRapReferences;
26
- exports.insertTexteReferences = insertTexteReferences;
27
- require("core-js/modules/es.array.concat.js");
28
- require("core-js/modules/es.array.iterator.js");
29
- require("core-js/modules/es.date.to-iso-string.js");
30
- require("core-js/modules/es.date.to-string.js");
31
- require("core-js/modules/es.object.to-string.js");
32
- require("core-js/modules/es.set.js");
33
- require("core-js/modules/es.string.iterator.js");
34
- require("core-js/modules/web.dom-collections.iterator.js");
35
- 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; } } }; }
36
- 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; } }
37
- 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; }
38
- function insertAudReferences(aud, data, visitedIdsByTableName) {
39
- var visitedIds = visitedIdsByTableName.aud;
40
- if (visitedIds === undefined) {
41
- visitedIds = visitedIdsByTableName.aud = new Set();
42
- }
43
- if (!visitedIds.has(aud.audcle)) {
44
- visitedIds.add(aud.audcle);
45
- if (aud.orgcod !== null && data.org !== undefined) {
46
- var org = data.org[aud.orgcod];
47
- if (org !== undefined) {
48
- aud.org = org;
49
- // insertOrgReferences(org, data, visitedIdsByTableName)
50
- }
51
- }
52
-
53
- // TODO
54
- }
55
- return aud;
56
- }
57
- function insertAuteurReferences(auteur, data, visitedIdsByTableName) {
58
- var visitedIds = visitedIdsByTableName.auteur;
59
- if (visitedIds === undefined) {
60
- visitedIds = visitedIdsByTableName.auteur = new Set();
61
- }
62
- if (!visitedIds.has(auteur.autcod)) {
63
- visitedIds.add(auteur.autcod);
64
- if (data.qua !== undefined) {
65
- var qua = data.qua[auteur.quacod];
66
- if (qua !== undefined) {
67
- auteur.qua = qua;
68
- // insertQuaReferences(qua, data, visitedIdsByTableName)
69
- }
70
- }
71
-
72
- // TODO
73
- }
74
- return auteur;
75
- }
76
- function insertDateSeanceReferences(dateSeance, data, visitedIdsByTableName) {
77
- var visitedIds = visitedIdsByTableName.date_seance;
78
- if (visitedIds === undefined) {
79
- visitedIds = visitedIdsByTableName.date_seance = new Set();
80
- }
81
- if (!visitedIds.has(dateSeance.code)) {
82
- visitedIds.add(dateSeance.code);
83
- if (dateSeance.date_s !== null && data.debats !== undefined) {
84
- var dateString = dateSeance.date_s instanceof Date ? dateSeance.date_s.toISOString() : dateSeance.date_s;
85
- var debat = data.debats[dateString];
86
- if (debat !== undefined) {
87
- dateSeance.debat = debat;
88
- // insertDebatReferences(debat, data, visitedIdsByTableName)
89
- }
90
- }
91
- dateSeance.scrs = [];
92
- if (dateSeance.scrids !== undefined && data.scr !== undefined) {
93
- var _iterator = _createForOfIteratorHelper(dateSeance.scrids),
94
- _step;
95
- try {
96
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
97
- var scrid = _step.value;
98
- var scr = data.scr[scrid];
99
- if (scr !== undefined) {
100
- dateSeance.scrs.push(scr);
101
- // insertScrReferences(scr, data, visitedIdsByTableName)
102
- }
103
- }
104
- } catch (err) {
105
- _iterator.e(err);
106
- } finally {
107
- _iterator.f();
108
- }
109
- }
110
- }
111
- return dateSeance;
112
- }
113
- function insertDocAttReferences(docatt, data, visitedIdsByTableName) {
114
- var performInsertRapReferences = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
115
- var visitedIds = visitedIdsByTableName.docatt;
116
- if (visitedIds === undefined) {
117
- visitedIds = visitedIdsByTableName.docatt = new Set();
118
- }
119
- if (!visitedIds.has(docatt.docattcle)) {
120
- visitedIds.add(docatt.docattcle);
121
- if (performInsertRapReferences && docatt.rapcod !== null && data.rap !== undefined) {
122
- var rap = data.rap[docatt.rapcod];
123
- if (rap !== undefined) {
124
- docatt.rap = rap;
125
- insertRapReferences(rap, data, visitedIdsByTableName);
126
- }
127
- }
128
- if (docatt.typattcod !== null && data.typatt !== undefined) {
129
- var typatt = data.typatt[docatt.typattcod];
130
- if (typatt !== undefined) {
131
- docatt.typatt = typatt;
132
- // insertTypAttReferences(typatt, data, visitedIdsByTableName)
133
- }
134
- }
135
- }
136
- return docatt;
137
- }
138
- function insertEcrReferences(ecr, data, visitedIdsByTableName) {
139
- var visitedIds = visitedIdsByTableName.ecr;
140
- if (visitedIds === undefined) {
141
- visitedIds = visitedIdsByTableName.ecr = new Set();
142
- }
143
- if (!visitedIds.has(ecr.ecrnum)) {
144
- visitedIds.add(ecr.ecrnum);
145
- if (ecr.autcod !== null && data.auteur !== undefined) {
146
- var aut = data.auteur[ecr.autcod];
147
- if (aut !== undefined) {
148
- ecr.aut = aut;
149
- insertAuteurReferences(aut, data, visitedIdsByTableName);
150
- }
151
- }
152
-
153
- // TODO
154
- }
155
- return ecr;
156
- }
157
- function insertLecassrapReferences(lecassrap, data, visitedIdsByTableName) {
158
- var visitedIds = visitedIdsByTableName.lecassrap;
159
- if (visitedIds === undefined) {
160
- visitedIds = visitedIdsByTableName.lecassrap = new Set();
161
- }
162
- var lecasrapid = "".concat(lecassrap.lecassidt, " ").concat(lecassrap.rapcod);
163
- if (!visitedIds.has(lecasrapid)) {
164
- visitedIds.add(lecasrapid);
165
- if (lecassrap.rapcod !== null && data.rap !== undefined) {
166
- var rap = data.rap[lecassrap.rapcod];
167
- if (rap !== undefined) {
168
- lecassrap.rap = rap;
169
- insertRapReferences(rap, data, visitedIdsByTableName);
170
- }
171
- }
172
- }
173
- return lecassrap;
174
- }
175
- function insertLecassReferences(lecass, data, visitedIdsByTableName) {
176
- var visitedIds = visitedIdsByTableName.lecass;
177
- if (visitedIds === undefined) {
178
- visitedIds = visitedIdsByTableName.lecass = new Set();
179
- }
180
- if (!visitedIds.has(lecass.lecassidt)) {
181
- visitedIds.add(lecass.lecassidt);
182
- if (lecass.codass !== null && data.ass !== undefined) {
183
- var ass = data.ass[lecass.codass];
184
- if (ass !== undefined) {
185
- lecass.ass = ass;
186
- // insertAssReferences(ass, data, visitedIdsByTableName)
187
- }
188
- }
189
- if (lecass.orgcod !== null && data.org !== undefined) {
190
- var org = data.org[lecass.orgcod];
191
- if (org !== undefined) {
192
- lecass.org = org;
193
- // insertOrgReferences(org, data, visitedIdsByTableName)
194
- }
195
- }
196
- lecass.auds = [];
197
- if (lecass.audcles !== undefined && data.aud !== undefined) {
198
- var _iterator2 = _createForOfIteratorHelper(lecass.audcles),
199
- _step2;
200
- try {
201
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
202
- var audcle = _step2.value;
203
- var aud = data.aud[audcle];
204
- if (aud !== undefined) {
205
- lecass.auds.push(aud);
206
- insertAudReferences(aud, data, visitedIdsByTableName);
207
- }
208
- }
209
- } catch (err) {
210
- _iterator2.e(err);
211
- } finally {
212
- _iterator2.f();
213
- }
214
- }
215
- lecass.datesSeances = [];
216
- if (lecass.datesSeancesCodes !== undefined && data.date_seance !== undefined) {
217
- var _iterator3 = _createForOfIteratorHelper(lecass.datesSeancesCodes),
218
- _step3;
219
- try {
220
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
221
- var dateSeanceCode = _step3.value;
222
- var dateSeance = data.date_seance[dateSeanceCode];
223
- if (dateSeance !== undefined) {
224
- lecass.datesSeances.push(dateSeance);
225
- insertDateSeanceReferences(dateSeance, data, visitedIdsByTableName);
226
- }
227
- }
228
- } catch (err) {
229
- _iterator3.e(err);
230
- } finally {
231
- _iterator3.f();
232
- }
233
- }
234
- lecass.lecassraps = [];
235
- if (lecass.lecassrapids !== undefined && data.lecassrap !== undefined) {
236
- var _iterator4 = _createForOfIteratorHelper(lecass.lecassrapids),
237
- _step4;
238
- try {
239
- for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
240
- var lecassrapid = _step4.value;
241
- var lecassrap = data.lecassrap[lecassrapid];
242
- if (lecassrap !== undefined) {
243
- lecass.lecassraps.push(lecassrap);
244
- insertLecassrapReferences(lecassrap, data, visitedIdsByTableName);
245
- }
246
- }
247
- } catch (err) {
248
- _iterator4.e(err);
249
- } finally {
250
- _iterator4.f();
251
- }
252
- }
253
- lecass.textes = [];
254
- if (lecass.texcods !== undefined && data.texte !== undefined) {
255
- var _iterator5 = _createForOfIteratorHelper(lecass.texcods),
256
- _step5;
257
- try {
258
- for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
259
- var texcod = _step5.value;
260
- var texte = data.texte[texcod];
261
- if (texte !== undefined) {
262
- lecass.textes.push(texte);
263
- insertTexteReferences(texte, data, visitedIdsByTableName);
264
- }
265
- }
266
- } catch (err) {
267
- _iterator5.e(err);
268
- } finally {
269
- _iterator5.f();
270
- }
271
- }
272
- }
273
- return lecass;
274
- }
275
- function insertLectureReferences(lecture, data, visitedIdsByTableName) {
276
- var visitedIds = visitedIdsByTableName.lecture;
277
- if (visitedIds === undefined) {
278
- visitedIds = visitedIdsByTableName.lecture = new Set();
279
- }
280
- if (!visitedIds.has(lecture.lecidt)) {
281
- visitedIds.add(lecture.lecidt);
282
- if (lecture.typleccod !== null && data.typlec !== undefined) {
283
- var typlec = data.typlec[lecture.typleccod];
284
- if (typlec !== undefined) {
285
- lecture.typlec = typlec;
286
- // insertTyplecReferences(typlec, data, visitedIdsByTableName)
287
- }
288
- }
289
- lecture.lecasss = [];
290
- if (lecture.lecassidts !== undefined && data.lecass !== undefined) {
291
- var _iterator6 = _createForOfIteratorHelper(lecture.lecassidts),
292
- _step6;
293
- try {
294
- for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
295
- var lecassidt = _step6.value;
296
- var lecass = data.lecass[lecassidt];
297
- if (lecass !== undefined) {
298
- lecture.lecasss.push(lecass);
299
- insertLecassReferences(lecass, data, visitedIdsByTableName);
300
- }
301
- }
302
- } catch (err) {
303
- _iterator6.e(err);
304
- } finally {
305
- _iterator6.f();
306
- }
307
- }
308
- }
309
- return lecture;
310
- }
311
- function insertLoiReferences(loi, data, visitedIdsByTableName) {
312
- var visitedIds = visitedIdsByTableName.loi;
313
- if (visitedIds === undefined) {
314
- visitedIds = visitedIdsByTableName.loi = new Set();
315
- }
316
- if (!visitedIds.has(loi.loicod)) {
317
- visitedIds.add(loi.loicod);
318
- if (loi.typloicod !== null && data.typloi !== undefined) {
319
- var typloi = data.typloi[loi.typloicod];
320
- if (typloi !== undefined) {
321
- loi.typloi = typloi;
322
- // insertTyploiReferences(typloi, data, visitedIdsByTableName)
323
- }
324
- }
325
- if (loi.etaloicod !== null && data.etaloi !== undefined) {
326
- var etaloi = data.etaloi[loi.etaloicod];
327
- if (etaloi !== undefined) {
328
- loi.etaloi = etaloi;
329
- // insertEtaloiReferences(etaloi, data, visitedIdsByTableName)
330
- }
331
- }
332
- if (loi.deccoccod !== null && data.deccoc !== undefined) {
333
- var deccoc = data.deccoc[loi.deccoccod];
334
- if (deccoc !== undefined) {
335
- loi.deccoc = deccoc;
336
- // insertDeccocReferences(deccoc, data, visitedIdsByTableName)
337
- }
338
- }
339
- loi.lectures = [];
340
- if (loi.lecidts !== undefined && data.lecture !== undefined) {
341
- var _iterator7 = _createForOfIteratorHelper(loi.lecidts),
342
- _step7;
343
- try {
344
- for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
345
- var lecidt = _step7.value;
346
- var lecture = data.lecture[lecidt];
347
- if (lecture !== undefined) {
348
- loi.lectures.push(lecture);
349
- insertLectureReferences(lecture, data, visitedIdsByTableName);
350
- }
351
- }
352
- } catch (err) {
353
- _iterator7.e(err);
354
- } finally {
355
- _iterator7.f();
356
- }
357
- }
358
- }
359
- return loi;
360
- }
361
- function insertRapReferences(rap, data, visitedIdsByTableName) {
362
- var visitedIds = visitedIdsByTableName.rap;
363
- if (visitedIds === undefined) {
364
- visitedIds = visitedIdsByTableName.rap = new Set();
365
- }
366
- if (!visitedIds.has(rap.rapcod)) {
367
- visitedIds.add(rap.rapcod);
368
- if (rap.coddenrap !== null && data.denrap !== undefined) {
369
- var denrap = data.denrap[rap.coddenrap];
370
- if (denrap !== undefined) {
371
- rap.denrap = denrap;
372
- // insertDenrapReferences(denrap, data, visitedIdsByTableName)
373
- }
374
- }
375
- rap.docatts = [];
376
- if (rap.docattcles !== undefined && data.docatt !== undefined) {
377
- var _iterator8 = _createForOfIteratorHelper(rap.docattcles),
378
- _step8;
379
- try {
380
- for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
381
- var docattcle = _step8.value;
382
- var docatt = data.docatt[docattcle];
383
- if (docatt !== undefined) {
384
- rap.docatts.push(docatt);
385
- insertDocAttReferences(docatt, data, visitedIdsByTableName, false);
386
- }
387
- }
388
- } catch (err) {
389
- _iterator8.e(err);
390
- } finally {
391
- _iterator8.f();
392
- }
393
- }
394
- rap.ecrs = [];
395
- if (rap.ecrnums !== undefined && data.ecr !== undefined) {
396
- var _iterator9 = _createForOfIteratorHelper(rap.ecrnums),
397
- _step9;
398
- try {
399
- for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
400
- var ecrnum = _step9.value;
401
- var ecr = data.ecr[ecrnum];
402
- if (ecr !== undefined) {
403
- rap.ecrs.push(ecr);
404
- insertEcrReferences(ecr, data, visitedIdsByTableName);
405
- }
406
- }
407
- } catch (err) {
408
- _iterator9.e(err);
409
- } finally {
410
- _iterator9.f();
411
- }
412
- }
413
- rap.orgs = [];
414
- if (rap.orgcods !== undefined && data.org !== undefined) {
415
- var _iterator10 = _createForOfIteratorHelper(rap.orgcods),
416
- _step10;
417
- try {
418
- for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
419
- var orgcod = _step10.value;
420
- var org = data.org[orgcod];
421
- if (org !== undefined) {
422
- rap.orgs.push(org);
423
- // insertOrgReferences(org, data, visitedIdsByTableName)
424
- }
425
- }
426
- } catch (err) {
427
- _iterator10.e(err);
428
- } finally {
429
- _iterator10.f();
430
- }
431
- }
432
- }
433
- return rap;
434
- }
435
- function insertTexteReferences(texte, data, visitedIdsByTableName) {
436
- var visitedIds = visitedIdsByTableName.texte;
437
- if (visitedIds === undefined) {
438
- visitedIds = visitedIdsByTableName.texte = new Set();
439
- }
440
- if (!visitedIds.has(texte.texcod)) {
441
- visitedIds.add(texte.texcod);
442
- texte.ecrs = [];
443
- if (texte.ecrnums !== undefined && data.ecr !== undefined) {
444
- var _iterator11 = _createForOfIteratorHelper(texte.ecrnums),
445
- _step11;
446
- try {
447
- for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {
448
- var ecrnum = _step11.value;
449
- var ecr = data.ecr[ecrnum];
450
- if (ecr !== undefined) {
451
- texte.ecrs.push(ecr);
452
- insertEcrReferences(ecr, data, visitedIdsByTableName);
453
- }
454
- }
455
- } catch (err) {
456
- _iterator11.e(err);
457
- } finally {
458
- _iterator11.f();
459
- }
460
- }
461
- if (texte.orgcod !== null && data.org !== undefined) {
462
- var org = data.org[texte.orgcod];
463
- if (org !== undefined) {
464
- texte.org = org;
465
- // insertOrgReferences(org, data, visitedIdsByTableName)
466
- }
467
- }
468
- if (texte.oritxtcod !== null && data.oritxt !== undefined) {
469
- var oritxt = data.oritxt[texte.oritxtcod];
470
- if (oritxt !== undefined) {
471
- texte.oritxt = oritxt;
472
- // insertOritxtReferences(oritxt, data, visitedIdsByTableName)
473
- }
474
- }
475
- if (texte.txtAmeliId !== undefined && data.txt_ameli !== undefined) {
476
- var txtAmeli = data.txt_ameli[texte.txtAmeliId];
477
- if (txtAmeli !== undefined) {
478
- texte.txtAmeli = txtAmeli;
479
- }
480
- }
481
- if (texte.typtxtcod !== null && data.typtxt !== undefined) {
482
- var typtxt = data.typtxt[texte.typtxtcod];
483
- if (typtxt !== undefined) {
484
- texte.typtxt = typtxt;
485
- // insertTyptxtReferences(typtxt, data, visitedIdsByTableName)
486
- }
487
- }
488
- if (texte.typurl !== null && data.typurl !== undefined) {
489
- var typurl = data.typurl[texte.typurl];
490
- if (typurl !== undefined) {
491
- texte.libtypurl = typurl.libtypurl;
492
- // insertTypurlReferences(typurl, data, visitedIdsByTableName)
493
- }
494
- }
495
-
496
- // TODO
497
- }
498
- return texte;
499
- }
500
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpbnNlcnRBdWRSZWZlcmVuY2VzIiwiYXVkIiwiZGF0YSIsInZpc2l0ZWRJZHNCeVRhYmxlTmFtZSIsInZpc2l0ZWRJZHMiLCJ1bmRlZmluZWQiLCJTZXQiLCJoYXMiLCJhdWRjbGUiLCJhZGQiLCJvcmdjb2QiLCJvcmciLCJpbnNlcnRBdXRldXJSZWZlcmVuY2VzIiwiYXV0ZXVyIiwiYXV0Y29kIiwicXVhIiwicXVhY29kIiwiaW5zZXJ0RGF0ZVNlYW5jZVJlZmVyZW5jZXMiLCJkYXRlU2VhbmNlIiwiZGF0ZV9zZWFuY2UiLCJjb2RlIiwiZGF0ZV9zIiwiZGViYXRzIiwiZGF0ZVN0cmluZyIsIkRhdGUiLCJ0b0lTT1N0cmluZyIsImRlYmF0Iiwic2NycyIsInNjcmlkcyIsInNjciIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX3N0ZXAiLCJzIiwibiIsImRvbmUiLCJzY3JpZCIsInZhbHVlIiwicHVzaCIsImVyciIsImUiLCJmIiwiaW5zZXJ0RG9jQXR0UmVmZXJlbmNlcyIsImRvY2F0dCIsInBlcmZvcm1JbnNlcnRSYXBSZWZlcmVuY2VzIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZG9jYXR0Y2xlIiwicmFwY29kIiwicmFwIiwiaW5zZXJ0UmFwUmVmZXJlbmNlcyIsInR5cGF0dGNvZCIsInR5cGF0dCIsImluc2VydEVjclJlZmVyZW5jZXMiLCJlY3IiLCJlY3JudW0iLCJhdXQiLCJpbnNlcnRMZWNhc3NyYXBSZWZlcmVuY2VzIiwibGVjYXNzcmFwIiwibGVjYXNyYXBpZCIsImNvbmNhdCIsImxlY2Fzc2lkdCIsImluc2VydExlY2Fzc1JlZmVyZW5jZXMiLCJsZWNhc3MiLCJjb2Rhc3MiLCJhc3MiLCJhdWRzIiwiYXVkY2xlcyIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJkYXRlc1NlYW5jZXMiLCJkYXRlc1NlYW5jZXNDb2RlcyIsIl9pdGVyYXRvcjMiLCJfc3RlcDMiLCJkYXRlU2VhbmNlQ29kZSIsImxlY2Fzc3JhcHMiLCJsZWNhc3NyYXBpZHMiLCJfaXRlcmF0b3I0IiwiX3N0ZXA0IiwibGVjYXNzcmFwaWQiLCJ0ZXh0ZXMiLCJ0ZXhjb2RzIiwidGV4dGUiLCJfaXRlcmF0b3I1IiwiX3N0ZXA1IiwidGV4Y29kIiwiaW5zZXJ0VGV4dGVSZWZlcmVuY2VzIiwiaW5zZXJ0TGVjdHVyZVJlZmVyZW5jZXMiLCJsZWN0dXJlIiwibGVjaWR0IiwidHlwbGVjY29kIiwidHlwbGVjIiwibGVjYXNzcyIsImxlY2Fzc2lkdHMiLCJfaXRlcmF0b3I2IiwiX3N0ZXA2IiwiaW5zZXJ0TG9pUmVmZXJlbmNlcyIsImxvaSIsImxvaWNvZCIsInR5cGxvaWNvZCIsInR5cGxvaSIsImV0YWxvaWNvZCIsImV0YWxvaSIsImRlY2NvY2NvZCIsImRlY2NvYyIsImxlY3R1cmVzIiwibGVjaWR0cyIsIl9pdGVyYXRvcjciLCJfc3RlcDciLCJjb2RkZW5yYXAiLCJkZW5yYXAiLCJkb2NhdHRzIiwiZG9jYXR0Y2xlcyIsIl9pdGVyYXRvcjgiLCJfc3RlcDgiLCJlY3JzIiwiZWNybnVtcyIsIl9pdGVyYXRvcjkiLCJfc3RlcDkiLCJvcmdzIiwib3JnY29kcyIsIl9pdGVyYXRvcjEwIiwiX3N0ZXAxMCIsIl9pdGVyYXRvcjExIiwiX3N0ZXAxMSIsIm9yaXR4dGNvZCIsIm9yaXR4dCIsInR4dEFtZWxpSWQiLCJ0eHRfYW1lbGkiLCJ0eHRBbWVsaSIsInR5cHR4dGNvZCIsInR5cHR4dCIsInR5cHVybCIsImxpYnR5cHVybCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9pbnNlcnRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHh0QW1lbGkgfSBmcm9tIFwiLi90eXBlcy9hbWVsaVwiXG5pbXBvcnQgeyBEZWJhdCB9IGZyb20gXCIuL3R5cGVzL2RlYmF0c1wiXG5pbXBvcnQge1xuICBBc3MsXG4gIEF1ZCxcbiAgQXV0ZXVyLFxuICBEYXRlU2VhbmNlLFxuICBEZWNDb2MsXG4gIERlblJhcCxcbiAgRG9jQXR0LFxuICBFY3IsXG4gIEV0YUxvaSxcbiAgTGVjQXNzLFxuICBMZWNBc3NSYXAsXG4gIExlY3R1cmUsXG4gIExvaSxcbiAgT3JnLFxuICBPcmlUeHQsXG4gIFF1YSxcbiAgUmFwLFxuICBTY3IsXG4gIFRleHRlLFxuICBUeXBBdHQsXG4gIFR5cExlYyxcbiAgVHlwTG9pLFxuICBUeXBUeHQsXG4gIFR5cFVybCxcbn0gZnJvbSBcIi4vdHlwZXMvZG9zbGVnXCJcblxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXREYXRhIHtcbiAgcmVhZG9ubHkgYXNzPzogeyBbaWQ6IHN0cmluZ106IEFzcyB9XG4gIHJlYWRvbmx5IGF1ZD86IHsgW2lkOiBzdHJpbmddOiBBdWQgfVxuICByZWFkb25seSBhdXRldXI/OiB7IFtpZDogc3RyaW5nXTogQXV0ZXVyIH1cbiAgcmVhZG9ubHkgZGF0ZV9zZWFuY2U/OiB7IFtpZDogc3RyaW5nXTogRGF0ZVNlYW5jZSB9XG4gIHJlYWRvbmx5IGRlYmF0cz86IHsgW2lkOiBzdHJpbmddOiBEZWJhdCB9XG4gIHJlYWRvbmx5IGRlY2NvYz86IHsgW2lkOiBzdHJpbmddOiBEZWNDb2MgfVxuICByZWFkb25seSBkZW5yYXA/OiB7IFtpZDogc3RyaW5nXTogRGVuUmFwIH1cbiAgcmVhZG9ubHkgZG9jYXR0PzogeyBbaWQ6IHN0cmluZ106IERvY0F0dCB9XG4gIHJlYWRvbmx5IGVjcj86IHsgW2lkOiBzdHJpbmddOiBFY3IgfVxuICByZWFkb25seSBldGFsb2k/OiB7IFtpZDogc3RyaW5nXTogRXRhTG9pIH1cbiAgcmVhZG9ubHkgbGVjYXNzPzogeyBbaWQ6IHN0cmluZ106IExlY0FzcyB9XG4gIHJlYWRvbmx5IGxlY2Fzc3JhcD86IHsgW2lkOiBzdHJpbmddOiBMZWNBc3NSYXAgfVxuICByZWFkb25seSBsZWN0dXJlPzogeyBbaWQ6IHN0cmluZ106IExlY3R1cmUgfVxuICByZWFkb25seSBsb2k/OiB7IFtpZDogc3RyaW5nXTogTG9pIH1cbiAgcmVhZG9ubHkgb3JnPzogeyBbaWQ6IHN0cmluZ106IE9yZyB9XG4gIHJlYWRvbmx5IG9yaXR4dD86IHsgW2lkOiBzdHJpbmddOiBPcmlUeHQgfVxuICByZWFkb25seSBxdWE/OiB7IFtpZDogc3RyaW5nXTogUXVhIH1cbiAgcmVhZG9ubHkgcmFwPzogeyBbaWQ6IHN0cmluZ106IFJhcCB9XG4gIHJlYWRvbmx5IHNjcj86IHsgW2lkOiBzdHJpbmddOiBTY3IgfVxuICByZWFkb25seSB0ZXh0ZT86IHsgW2lkOiBzdHJpbmddOiBUZXh0ZSB9XG4gIHJlYWRvbmx5IHR5cGF0dD86IHsgW2lkOiBzdHJpbmddOiBUeXBBdHQgfVxuICByZWFkb25seSB0eXBsZWM/OiB7IFtpZDogc3RyaW5nXTogVHlwTGVjIH1cbiAgcmVhZG9ubHkgdHlwbG9pPzogeyBbaWQ6IHN0cmluZ106IFR5cExvaSB9XG4gIHJlYWRvbmx5IHR5cHR4dD86IHsgW2lkOiBzdHJpbmddOiBUeXBUeHQgfVxuICByZWFkb25seSB0eXB1cmw/OiB7IFtpZDogc3RyaW5nXTogVHlwVXJsIH1cbiAgcmVhZG9ubHkgdHh0X2FtZWxpPzogeyBbaWQ6IHN0cmluZ106IFR4dEFtZWxpIH1cbn1cblxudHlwZSBWaXNpdGVkSWRzQnlUYWJsZU5hbWUgPSB7IFt0YWJsZU5hbWU6IHN0cmluZ106IFNldDxudW1iZXIgfCBzdHJpbmc+IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydEF1ZFJlZmVyZW5jZXMoXG4gIGF1ZDogQXVkLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkSWRzQnlUYWJsZU5hbWU6IFZpc2l0ZWRJZHNCeVRhYmxlTmFtZSxcbikge1xuICBsZXQgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5hdWRcbiAgaWYgKHZpc2l0ZWRJZHMgPT09IHVuZGVmaW5lZCkge1xuICAgIHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUuYXVkID0gbmV3IFNldCgpXG4gIH1cbiAgaWYgKCF2aXNpdGVkSWRzLmhhcyhhdWQuYXVkY2xlKSkge1xuICAgIHZpc2l0ZWRJZHMuYWRkKGF1ZC5hdWRjbGUpXG5cbiAgICBpZiAoYXVkLm9yZ2NvZCAhPT0gbnVsbCAmJiBkYXRhLm9yZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBvcmcgPSBkYXRhLm9yZ1thdWQub3JnY29kXVxuICAgICAgaWYgKG9yZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF1ZC5vcmcgPSBvcmdcbiAgICAgICAgLy8gaW5zZXJ0T3JnUmVmZXJlbmNlcyhvcmcsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUT0RPXG4gIH1cblxuICByZXR1cm4gYXVkXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRBdXRldXJSZWZlcmVuY2VzKFxuICBhdXRldXI6IEF1dGV1cixcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZElkc0J5VGFibGVOYW1lOiBWaXNpdGVkSWRzQnlUYWJsZU5hbWUsXG4pIHtcbiAgbGV0IHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUuYXV0ZXVyXG4gIGlmICh2aXNpdGVkSWRzID09PSB1bmRlZmluZWQpIHtcbiAgICB2aXNpdGVkSWRzID0gdmlzaXRlZElkc0J5VGFibGVOYW1lLmF1dGV1ciA9IG5ldyBTZXQoKVxuICB9XG4gIGlmICghdmlzaXRlZElkcy5oYXMoYXV0ZXVyLmF1dGNvZCkpIHtcbiAgICB2aXNpdGVkSWRzLmFkZChhdXRldXIuYXV0Y29kKVxuXG4gICAgaWYgKGRhdGEucXVhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHF1YSA9IGRhdGEucXVhW2F1dGV1ci5xdWFjb2RdXG4gICAgICBpZiAocXVhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXV0ZXVyLnF1YSA9IHF1YVxuICAgICAgICAvLyBpbnNlcnRRdWFSZWZlcmVuY2VzKHF1YSwgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE9cbiAgfVxuXG4gIHJldHVybiBhdXRldXJcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydERhdGVTZWFuY2VSZWZlcmVuY2VzKFxuICBkYXRlU2VhbmNlOiBEYXRlU2VhbmNlLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkSWRzQnlUYWJsZU5hbWU6IFZpc2l0ZWRJZHNCeVRhYmxlTmFtZSxcbikge1xuICBsZXQgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5kYXRlX3NlYW5jZVxuICBpZiAodmlzaXRlZElkcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5kYXRlX3NlYW5jZSA9IG5ldyBTZXQoKVxuICB9XG4gIGlmICghdmlzaXRlZElkcy5oYXMoZGF0ZVNlYW5jZS5jb2RlKSkge1xuICAgIHZpc2l0ZWRJZHMuYWRkKGRhdGVTZWFuY2UuY29kZSlcblxuICAgIGlmIChkYXRlU2VhbmNlLmRhdGVfcyAhPT0gbnVsbCAmJiBkYXRhLmRlYmF0cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBkYXRlU3RyaW5nID1cbiAgICAgICAgZGF0ZVNlYW5jZS5kYXRlX3MgaW5zdGFuY2VvZiBEYXRlXG4gICAgICAgICAgPyBkYXRlU2VhbmNlLmRhdGVfcy50b0lTT1N0cmluZygpXG4gICAgICAgICAgOiBkYXRlU2VhbmNlLmRhdGVfc1xuICAgICAgY29uc3QgZGViYXQgPSBkYXRhLmRlYmF0c1tkYXRlU3RyaW5nXVxuICAgICAgaWYgKGRlYmF0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZGF0ZVNlYW5jZS5kZWJhdCA9IGRlYmF0XG4gICAgICAgIC8vIGluc2VydERlYmF0UmVmZXJlbmNlcyhkZWJhdCwgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgfVxuICAgIH1cblxuICAgIGRhdGVTZWFuY2Uuc2NycyA9IFtdXG4gICAgaWYgKGRhdGVTZWFuY2Uuc2NyaWRzICE9PSB1bmRlZmluZWQgJiYgZGF0YS5zY3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCBzY3JpZCBvZiBkYXRlU2VhbmNlLnNjcmlkcykge1xuICAgICAgICBjb25zdCBzY3IgPSBkYXRhLnNjcltzY3JpZF1cbiAgICAgICAgaWYgKHNjciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZGF0ZVNlYW5jZS5zY3JzLnB1c2goc2NyKVxuICAgICAgICAgIC8vIGluc2VydFNjclJlZmVyZW5jZXMoc2NyLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGF0ZVNlYW5jZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0RG9jQXR0UmVmZXJlbmNlcyhcbiAgZG9jYXR0OiBEb2NBdHQsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZTogVmlzaXRlZElkc0J5VGFibGVOYW1lLFxuICBwZXJmb3JtSW5zZXJ0UmFwUmVmZXJlbmNlcz10cnVlXG4pIHtcbiAgbGV0IHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUuZG9jYXR0XG4gIGlmICh2aXNpdGVkSWRzID09PSB1bmRlZmluZWQpIHtcbiAgICB2aXNpdGVkSWRzID0gdmlzaXRlZElkc0J5VGFibGVOYW1lLmRvY2F0dCA9IG5ldyBTZXQoKVxuICB9XG4gIGlmICghdmlzaXRlZElkcy5oYXMoZG9jYXR0LmRvY2F0dGNsZSkpIHtcbiAgICB2aXNpdGVkSWRzLmFkZChkb2NhdHQuZG9jYXR0Y2xlKVxuXG4gICAgaWYgKHBlcmZvcm1JbnNlcnRSYXBSZWZlcmVuY2VzICYmIGRvY2F0dC5yYXBjb2QgIT09IG51bGwgJiYgZGF0YS5yYXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgcmFwID0gZGF0YS5yYXBbZG9jYXR0LnJhcGNvZF1cbiAgICAgIGlmIChyYXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBkb2NhdHQucmFwID0gcmFwXG4gICAgICAgIGluc2VydFJhcFJlZmVyZW5jZXMocmFwLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRvY2F0dC50eXBhdHRjb2QgIT09IG51bGwgJiYgZGF0YS50eXBhdHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgdHlwYXR0ID0gZGF0YS50eXBhdHRbZG9jYXR0LnR5cGF0dGNvZF1cbiAgICAgIGlmICh0eXBhdHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBkb2NhdHQudHlwYXR0ID0gdHlwYXR0XG4gICAgICAgIC8vIGluc2VydFR5cEF0dFJlZmVyZW5jZXModHlwYXR0LCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRvY2F0dFxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0RWNyUmVmZXJlbmNlcyhcbiAgZWNyOiBFY3IsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZTogVmlzaXRlZElkc0J5VGFibGVOYW1lLFxuKSB7XG4gIGxldCB2aXNpdGVkSWRzID0gdmlzaXRlZElkc0J5VGFibGVOYW1lLmVjclxuICBpZiAodmlzaXRlZElkcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5lY3IgPSBuZXcgU2V0KClcbiAgfVxuICBpZiAoIXZpc2l0ZWRJZHMuaGFzKGVjci5lY3JudW0pKSB7XG4gICAgdmlzaXRlZElkcy5hZGQoZWNyLmVjcm51bSlcblxuICAgIGlmIChlY3IuYXV0Y29kICE9PSBudWxsICYmIGRhdGEuYXV0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGF1dCA9IGRhdGEuYXV0ZXVyW2Vjci5hdXRjb2RdXG4gICAgICBpZiAoYXV0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZWNyLmF1dCA9IGF1dFxuICAgICAgICBpbnNlcnRBdXRldXJSZWZlcmVuY2VzKGF1dCwgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE9cbiAgfVxuXG4gIHJldHVybiBlY3Jcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydExlY2Fzc3JhcFJlZmVyZW5jZXMoXG4gIGxlY2Fzc3JhcDogTGVjQXNzUmFwLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkSWRzQnlUYWJsZU5hbWU6IFZpc2l0ZWRJZHNCeVRhYmxlTmFtZSxcbikge1xuICBsZXQgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5sZWNhc3NyYXBcbiAgaWYgKHZpc2l0ZWRJZHMgPT09IHVuZGVmaW5lZCkge1xuICAgIHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUubGVjYXNzcmFwID0gbmV3IFNldCgpXG4gIH1cbiAgY29uc3QgbGVjYXNyYXBpZCA9IGAke2xlY2Fzc3JhcC5sZWNhc3NpZHR9ICR7bGVjYXNzcmFwLnJhcGNvZH1gXG4gIGlmICghdmlzaXRlZElkcy5oYXMobGVjYXNyYXBpZCkpIHtcbiAgICB2aXNpdGVkSWRzLmFkZChsZWNhc3JhcGlkKVxuXG4gICAgaWYgKGxlY2Fzc3JhcC5yYXBjb2QgIT09IG51bGwgJiYgZGF0YS5yYXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgcmFwID0gZGF0YS5yYXBbbGVjYXNzcmFwLnJhcGNvZF1cbiAgICAgIGlmIChyYXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsZWNhc3NyYXAucmFwID0gcmFwXG4gICAgICAgIGluc2VydFJhcFJlZmVyZW5jZXMocmFwLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGxlY2Fzc3JhcFxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0TGVjYXNzUmVmZXJlbmNlcyhcbiAgbGVjYXNzOiBMZWNBc3MsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZTogVmlzaXRlZElkc0J5VGFibGVOYW1lLFxuKSB7XG4gIGxldCB2aXNpdGVkSWRzID0gdmlzaXRlZElkc0J5VGFibGVOYW1lLmxlY2Fzc1xuICBpZiAodmlzaXRlZElkcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5sZWNhc3MgPSBuZXcgU2V0KClcbiAgfVxuICBpZiAoIXZpc2l0ZWRJZHMuaGFzKGxlY2Fzcy5sZWNhc3NpZHQpKSB7XG4gICAgdmlzaXRlZElkcy5hZGQobGVjYXNzLmxlY2Fzc2lkdClcblxuICAgIGlmIChsZWNhc3MuY29kYXNzICE9PSBudWxsICYmIGRhdGEuYXNzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGFzcyA9IGRhdGEuYXNzW2xlY2Fzcy5jb2Rhc3NdXG4gICAgICBpZiAoYXNzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbGVjYXNzLmFzcyA9IGFzc1xuICAgICAgICAvLyBpbnNlcnRBc3NSZWZlcmVuY2VzKGFzcywgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChsZWNhc3Mub3JnY29kICE9PSBudWxsICYmIGRhdGEub3JnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG9yZyA9IGRhdGEub3JnW2xlY2Fzcy5vcmdjb2RdXG4gICAgICBpZiAob3JnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbGVjYXNzLm9yZyA9IG9yZ1xuICAgICAgICAvLyBpbnNlcnRPcmdSZWZlcmVuY2VzKG9yZywgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgfVxuICAgIH1cblxuICAgIGxlY2Fzcy5hdWRzID0gW11cbiAgICBpZiAobGVjYXNzLmF1ZGNsZXMgIT09IHVuZGVmaW5lZCAmJiBkYXRhLmF1ZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBmb3IgKGNvbnN0IGF1ZGNsZSBvZiBsZWNhc3MuYXVkY2xlcykge1xuICAgICAgICBjb25zdCBhdWQgPSBkYXRhLmF1ZFthdWRjbGVdXG4gICAgICAgIGlmIChhdWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGxlY2Fzcy5hdWRzLnB1c2goYXVkKVxuICAgICAgICAgIGluc2VydEF1ZFJlZmVyZW5jZXMoYXVkLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZWNhc3MuZGF0ZXNTZWFuY2VzID0gW11cbiAgICBpZiAobGVjYXNzLmRhdGVzU2VhbmNlc0NvZGVzICE9PSB1bmRlZmluZWQgJiYgZGF0YS5kYXRlX3NlYW5jZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBmb3IgKGNvbnN0IGRhdGVTZWFuY2VDb2RlIG9mIGxlY2Fzcy5kYXRlc1NlYW5jZXNDb2Rlcykge1xuICAgICAgICBjb25zdCBkYXRlU2VhbmNlID0gZGF0YS5kYXRlX3NlYW5jZVtkYXRlU2VhbmNlQ29kZV1cbiAgICAgICAgaWYgKGRhdGVTZWFuY2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGxlY2Fzcy5kYXRlc1NlYW5jZXMucHVzaChkYXRlU2VhbmNlKVxuICAgICAgICAgIGluc2VydERhdGVTZWFuY2VSZWZlcmVuY2VzKGRhdGVTZWFuY2UsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGxlY2Fzcy5sZWNhc3NyYXBzID0gW11cbiAgICBpZiAobGVjYXNzLmxlY2Fzc3JhcGlkcyAhPT0gdW5kZWZpbmVkICYmIGRhdGEubGVjYXNzcmFwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgbGVjYXNzcmFwaWQgb2YgbGVjYXNzLmxlY2Fzc3JhcGlkcykge1xuICAgICAgICBjb25zdCBsZWNhc3NyYXAgPSBkYXRhLmxlY2Fzc3JhcFtsZWNhc3NyYXBpZF1cbiAgICAgICAgaWYgKGxlY2Fzc3JhcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbGVjYXNzLmxlY2Fzc3JhcHMucHVzaChsZWNhc3NyYXApXG4gICAgICAgICAgaW5zZXJ0TGVjYXNzcmFwUmVmZXJlbmNlcyhsZWNhc3NyYXAsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGxlY2Fzcy50ZXh0ZXMgPSBbXVxuICAgIGlmIChsZWNhc3MudGV4Y29kcyAhPT0gdW5kZWZpbmVkICYmIGRhdGEudGV4dGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCB0ZXhjb2Qgb2YgbGVjYXNzLnRleGNvZHMpIHtcbiAgICAgICAgY29uc3QgdGV4dGUgPSBkYXRhLnRleHRlW3RleGNvZF1cbiAgICAgICAgaWYgKHRleHRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBsZWNhc3MudGV4dGVzLnB1c2godGV4dGUpXG4gICAgICAgICAgaW5zZXJ0VGV4dGVSZWZlcmVuY2VzKHRleHRlLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbGVjYXNzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRMZWN0dXJlUmVmZXJlbmNlcyhcbiAgbGVjdHVyZTogTGVjdHVyZSxcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZElkc0J5VGFibGVOYW1lOiBWaXNpdGVkSWRzQnlUYWJsZU5hbWUsXG4pIHtcbiAgbGV0IHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUubGVjdHVyZVxuICBpZiAodmlzaXRlZElkcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5sZWN0dXJlID0gbmV3IFNldCgpXG4gIH1cbiAgaWYgKCF2aXNpdGVkSWRzLmhhcyhsZWN0dXJlLmxlY2lkdCkpIHtcbiAgICB2aXNpdGVkSWRzLmFkZChsZWN0dXJlLmxlY2lkdClcblxuICAgIGlmIChsZWN0dXJlLnR5cGxlY2NvZCAhPT0gbnVsbCAmJiBkYXRhLnR5cGxlYyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCB0eXBsZWMgPSBkYXRhLnR5cGxlY1tsZWN0dXJlLnR5cGxlY2NvZF1cbiAgICAgIGlmICh0eXBsZWMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsZWN0dXJlLnR5cGxlYyA9IHR5cGxlY1xuICAgICAgICAvLyBpbnNlcnRUeXBsZWNSZWZlcmVuY2VzKHR5cGxlYywgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgfVxuICAgIH1cblxuICAgIGxlY3R1cmUubGVjYXNzcyA9IFtdXG4gICAgaWYgKGxlY3R1cmUubGVjYXNzaWR0cyAhPT0gdW5kZWZpbmVkICYmIGRhdGEubGVjYXNzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgbGVjYXNzaWR0IG9mIGxlY3R1cmUubGVjYXNzaWR0cykge1xuICAgICAgICBjb25zdCBsZWNhc3MgPSBkYXRhLmxlY2Fzc1tsZWNhc3NpZHRdXG4gICAgICAgIGlmIChsZWNhc3MgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGxlY3R1cmUubGVjYXNzcy5wdXNoKGxlY2FzcylcbiAgICAgICAgICBpbnNlcnRMZWNhc3NSZWZlcmVuY2VzKGxlY2FzcywgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGxlY3R1cmVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydExvaVJlZmVyZW5jZXMoXG4gIGxvaTogTG9pLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkSWRzQnlUYWJsZU5hbWU6IFZpc2l0ZWRJZHNCeVRhYmxlTmFtZSxcbikge1xuICBsZXQgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5sb2lcbiAgaWYgKHZpc2l0ZWRJZHMgPT09IHVuZGVmaW5lZCkge1xuICAgIHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUubG9pID0gbmV3IFNldCgpXG4gIH1cbiAgaWYgKCF2aXNpdGVkSWRzLmhhcyhsb2kubG9pY29kKSkge1xuICAgIHZpc2l0ZWRJZHMuYWRkKGxvaS5sb2ljb2QpXG5cbiAgICBpZiAobG9pLnR5cGxvaWNvZCAhPT0gbnVsbCAmJiBkYXRhLnR5cGxvaSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCB0eXBsb2kgPSBkYXRhLnR5cGxvaVtsb2kudHlwbG9pY29kXVxuICAgICAgaWYgKHR5cGxvaSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxvaS50eXBsb2kgPSB0eXBsb2lcbiAgICAgICAgLy8gaW5zZXJ0VHlwbG9pUmVmZXJlbmNlcyh0eXBsb2ksIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobG9pLmV0YWxvaWNvZCAhPT0gbnVsbCAmJiBkYXRhLmV0YWxvaSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBldGFsb2kgPSBkYXRhLmV0YWxvaVtsb2kuZXRhbG9pY29kXVxuICAgICAgaWYgKGV0YWxvaSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxvaS5ldGFsb2kgPSBldGFsb2lcbiAgICAgICAgLy8gaW5zZXJ0RXRhbG9pUmVmZXJlbmNlcyhldGFsb2ksIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobG9pLmRlY2NvY2NvZCAhPT0gbnVsbCAmJiBkYXRhLmRlY2NvYyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBkZWNjb2MgPSBkYXRhLmRlY2NvY1tsb2kuZGVjY29jY29kXVxuICAgICAgaWYgKGRlY2NvYyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxvaS5kZWNjb2MgPSBkZWNjb2NcbiAgICAgICAgLy8gaW5zZXJ0RGVjY29jUmVmZXJlbmNlcyhkZWNjb2MsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsb2kubGVjdHVyZXMgPSBbXVxuICAgIGlmIChsb2kubGVjaWR0cyAhPT0gdW5kZWZpbmVkICYmIGRhdGEubGVjdHVyZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBmb3IgKGNvbnN0IGxlY2lkdCBvZiBsb2kubGVjaWR0cykge1xuICAgICAgICBjb25zdCBsZWN0dXJlID0gZGF0YS5sZWN0dXJlW2xlY2lkdF1cbiAgICAgICAgaWYgKGxlY3R1cmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGxvaS5sZWN0dXJlcy5wdXNoKGxlY3R1cmUpXG4gICAgICAgICAgaW5zZXJ0TGVjdHVyZVJlZmVyZW5jZXMobGVjdHVyZSwgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGxvaVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0UmFwUmVmZXJlbmNlcyhcbiAgcmFwOiBSYXAsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZTogVmlzaXRlZElkc0J5VGFibGVOYW1lLFxuKSB7XG4gIGxldCB2aXNpdGVkSWRzID0gdmlzaXRlZElkc0J5VGFibGVOYW1lLnJhcFxuICBpZiAodmlzaXRlZElkcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5yYXAgPSBuZXcgU2V0KClcbiAgfVxuICBpZiAoIXZpc2l0ZWRJZHMuaGFzKHJhcC5yYXBjb2QpKSB7XG4gICAgdmlzaXRlZElkcy5hZGQocmFwLnJhcGNvZClcblxuICAgIGlmIChyYXAuY29kZGVucmFwICE9PSBudWxsICYmIGRhdGEuZGVucmFwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGRlbnJhcCA9IGRhdGEuZGVucmFwW3JhcC5jb2RkZW5yYXBdXG4gICAgICBpZiAoZGVucmFwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmFwLmRlbnJhcCA9IGRlbnJhcFxuICAgICAgICAvLyBpbnNlcnREZW5yYXBSZWZlcmVuY2VzKGRlbnJhcCwgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJhcC5kb2NhdHRzID0gW11cbiAgICBpZiAocmFwLmRvY2F0dGNsZXMgIT09IHVuZGVmaW5lZCAmJiBkYXRhLmRvY2F0dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBmb3IgKGNvbnN0IGRvY2F0dGNsZSBvZiByYXAuZG9jYXR0Y2xlcykge1xuICAgICAgICBjb25zdCBkb2NhdHQgPSBkYXRhLmRvY2F0dFtkb2NhdHRjbGVdXG4gICAgICAgIGlmIChkb2NhdHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJhcC5kb2NhdHRzLnB1c2goZG9jYXR0KVxuICAgICAgICAgIGluc2VydERvY0F0dFJlZmVyZW5jZXMoZG9jYXR0LCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUsIGZhbHNlKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmFwLmVjcnMgPSBbXVxuICAgIGlmIChyYXAuZWNybnVtcyAhPT0gdW5kZWZpbmVkICYmIGRhdGEuZWNyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgZWNybnVtIG9mIHJhcC5lY3JudW1zKSB7XG4gICAgICAgIGNvbnN0IGVjciA9IGRhdGEuZWNyW2Vjcm51bV1cbiAgICAgICAgaWYgKGVjciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmFwLmVjcnMucHVzaChlY3IpXG4gICAgICAgICAgaW5zZXJ0RWNyUmVmZXJlbmNlcyhlY3IsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJhcC5vcmdzID0gW11cbiAgICBpZiAocmFwLm9yZ2NvZHMgIT09IHVuZGVmaW5lZCAmJiBkYXRhLm9yZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBmb3IgKGNvbnN0IG9yZ2NvZCBvZiByYXAub3JnY29kcykge1xuICAgICAgICBjb25zdCBvcmcgPSBkYXRhLm9yZ1tvcmdjb2RdXG4gICAgICAgIGlmIChvcmcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJhcC5vcmdzLnB1c2gob3JnKVxuICAgICAgICAgIC8vIGluc2VydE9yZ1JlZmVyZW5jZXMob3JnLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmFwXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRUZXh0ZVJlZmVyZW5jZXMoXG4gIHRleHRlOiBUZXh0ZSxcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZElkc0J5VGFibGVOYW1lOiBWaXNpdGVkSWRzQnlUYWJsZU5hbWUsXG4pIHtcbiAgbGV0IHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUudGV4dGVcbiAgaWYgKHZpc2l0ZWRJZHMgPT09IHVuZGVmaW5lZCkge1xuICAgIHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUudGV4dGUgPSBuZXcgU2V0KClcbiAgfVxuICBpZiAoIXZpc2l0ZWRJZHMuaGFzKHRleHRlLnRleGNvZCkpIHtcbiAgICB2aXNpdGVkSWRzLmFkZCh0ZXh0ZS50ZXhjb2QpXG5cbiAgICB0ZXh0ZS5lY3JzID0gW11cbiAgICBpZiAodGV4dGUuZWNybnVtcyAhPT0gdW5kZWZpbmVkICYmIGRhdGEuZWNyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgZWNybnVtIG9mIHRleHRlLmVjcm51bXMpIHtcbiAgICAgICAgY29uc3QgZWNyID0gZGF0YS5lY3JbZWNybnVtXVxuICAgICAgICBpZiAoZWNyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0ZXh0ZS5lY3JzLnB1c2goZWNyKVxuICAgICAgICAgIGluc2VydEVjclJlZmVyZW5jZXMoZWNyLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGV4dGUub3JnY29kICE9PSBudWxsICYmIGRhdGEub3JnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG9yZyA9IGRhdGEub3JnW3RleHRlLm9yZ2NvZF1cbiAgICAgIGlmIChvcmcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0ZXh0ZS5vcmcgPSBvcmdcbiAgICAgICAgLy8gaW5zZXJ0T3JnUmVmZXJlbmNlcyhvcmcsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGV4dGUub3JpdHh0Y29kICE9PSBudWxsICYmIGRhdGEub3JpdHh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG9yaXR4dCA9IGRhdGEub3JpdHh0W3RleHRlLm9yaXR4dGNvZF1cbiAgICAgIGlmIChvcml0eHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0ZXh0ZS5vcml0eHQgPSBvcml0eHRcbiAgICAgICAgLy8gaW5zZXJ0T3JpdHh0UmVmZXJlbmNlcyhvcml0eHQsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGV4dGUudHh0QW1lbGlJZCAhPT0gdW5kZWZpbmVkICYmIGRhdGEudHh0X2FtZWxpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHR4dEFtZWxpID0gZGF0YS50eHRfYW1lbGlbdGV4dGUudHh0QW1lbGlJZF1cbiAgICAgIGlmICh0eHRBbWVsaSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRleHRlLnR4dEFtZWxpID0gdHh0QW1lbGlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGV4dGUudHlwdHh0Y29kICE9PSBudWxsICYmIGRhdGEudHlwdHh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHR5cHR4dCA9IGRhdGEudHlwdHh0W3RleHRlLnR5cHR4dGNvZF1cbiAgICAgIGlmICh0eXB0eHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0ZXh0ZS50eXB0eHQgPSB0eXB0eHRcbiAgICAgICAgLy8gaW5zZXJ0VHlwdHh0UmVmZXJlbmNlcyh0eXB0eHQsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGV4dGUudHlwdXJsICE9PSBudWxsICYmIGRhdGEudHlwdXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHR5cHVybCA9IGRhdGEudHlwdXJsW3RleHRlLnR5cHVybF1cbiAgICAgIGlmICh0eXB1cmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0ZXh0ZS5saWJ0eXB1cmwgPSB0eXB1cmwubGlidHlwdXJsXG4gICAgICAgIC8vIGluc2VydFR5cHVybFJlZmVyZW5jZXModHlwdXJsLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ET1xuICB9XG5cbiAgcmV0dXJuIHRleHRlXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE0RE8sU0FBU0EsbUJBQW1CQSxDQUNqQ0MsR0FBUSxFQUNSQyxJQUFnQixFQUNoQkMscUJBQTRDLEVBQzVDO0VBQ0EsSUFBSUMsVUFBVSxHQUFHRCxxQkFBcUIsQ0FBQ0YsR0FBRztFQUMxQyxJQUFJRyxVQUFVLEtBQUtDLFNBQVMsRUFBRTtJQUM1QkQsVUFBVSxHQUFHRCxxQkFBcUIsQ0FBQ0YsR0FBRyxHQUFHLElBQUlLLEdBQUcsQ0FBQyxDQUFDO0VBQ3BEO0VBQ0EsSUFBSSxDQUFDRixVQUFVLENBQUNHLEdBQUcsQ0FBQ04sR0FBRyxDQUFDTyxNQUFNLENBQUMsRUFBRTtJQUMvQkosVUFBVSxDQUFDSyxHQUFHLENBQUNSLEdBQUcsQ0FBQ08sTUFBTSxDQUFDO0lBRTFCLElBQUlQLEdBQUcsQ0FBQ1MsTUFBTSxLQUFLLElBQUksSUFBSVIsSUFBSSxDQUFDUyxHQUFHLEtBQUtOLFNBQVMsRUFBRTtN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