@tricoteuses/senat 2.8.1 → 2.8.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/lib/aggregates.d.ts +52 -0
  2. package/lib/aggregates.js +949 -0
  3. package/lib/aggregates.mjs +726 -0
  4. package/lib/aggregates.ts +852 -0
  5. package/lib/config.mjs +16 -0
  6. package/lib/config.ts +26 -0
  7. package/lib/databases.mjs +55 -0
  8. package/lib/databases.ts +68 -0
  9. package/lib/datasets.mjs +78 -0
  10. package/lib/datasets.ts +118 -0
  11. package/lib/fields.d.ts +10 -0
  12. package/lib/fields.js +68 -0
  13. package/lib/fields.mjs +22 -0
  14. package/lib/fields.ts +29 -0
  15. package/lib/index.mjs +7 -0
  16. package/lib/index.ts +64 -0
  17. package/lib/inserters.d.ts +98 -0
  18. package/lib/inserters.js +500 -0
  19. package/lib/inserters.mjs +360 -0
  20. package/lib/inserters.ts +521 -0
  21. package/lib/loaders.mjs +97 -0
  22. package/lib/loaders.ts +173 -0
  23. package/lib/model/ameli.mjs +57 -0
  24. package/lib/model/ameli.ts +86 -0
  25. package/lib/model/debats.mjs +43 -0
  26. package/lib/model/debats.ts +68 -0
  27. package/lib/model/dosleg.mjs +163 -0
  28. package/lib/model/dosleg.ts +204 -0
  29. package/lib/model/index.mjs +4 -0
  30. package/lib/model/index.ts +13 -0
  31. package/lib/model/questions.d.ts +0 -20
  32. package/lib/model/questions.js +1 -32
  33. package/lib/model/questions.mjs +76 -0
  34. package/lib/model/questions.ts +102 -0
  35. package/lib/model/sens.mjs +339 -0
  36. package/lib/model/sens.ts +432 -0
  37. package/lib/model/texte.mjs +156 -0
  38. package/lib/model/texte.ts +174 -0
  39. package/lib/raw_types/ameli.d.ts +20 -0
  40. package/lib/raw_types/questions.d.ts +4 -70
  41. package/lib/raw_types_kysely/ameli.d.ts +915 -0
  42. package/lib/raw_types_kysely/ameli.js +7 -0
  43. package/lib/raw_types_kysely/ameli.mjs +5 -0
  44. package/lib/raw_types_kysely/ameli.ts +951 -0
  45. package/lib/raw_types_kysely/debats.d.ts +207 -0
  46. package/lib/raw_types_kysely/debats.js +7 -0
  47. package/lib/raw_types_kysely/debats.mjs +5 -0
  48. package/lib/raw_types_kysely/debats.ts +222 -0
  49. package/lib/raw_types_kysely/dosleg.d.ts +3532 -0
  50. package/lib/raw_types_kysely/dosleg.js +7 -0
  51. package/lib/raw_types_kysely/dosleg.mjs +5 -0
  52. package/lib/raw_types_kysely/dosleg.ts +3621 -0
  53. package/lib/raw_types_kysely/questions.d.ts +414 -0
  54. package/lib/raw_types_kysely/questions.js +7 -0
  55. package/lib/raw_types_kysely/questions.mjs +5 -0
  56. package/lib/raw_types_kysely/questions.ts +426 -0
  57. package/lib/raw_types_kysely/sens.d.ts +4394 -0
  58. package/lib/raw_types_kysely/sens.js +7 -0
  59. package/lib/raw_types_kysely/sens.mjs +5 -0
  60. package/lib/raw_types_kysely/sens.ts +4499 -0
  61. package/lib/raw_types_schemats/ameli.mjs +2 -0
  62. package/lib/raw_types_schemats/ameli.ts +601 -0
  63. package/lib/raw_types_schemats/debats.mjs +2 -0
  64. package/lib/raw_types_schemats/debats.ts +145 -0
  65. package/lib/raw_types_schemats/dosleg.mjs +2 -0
  66. package/lib/raw_types_schemats/dosleg.ts +2193 -0
  67. package/lib/raw_types_schemats/questions.mjs +2 -0
  68. package/lib/raw_types_schemats/questions.ts +249 -0
  69. package/lib/raw_types_schemats/sens.mjs +2 -0
  70. package/lib/raw_types_schemats/sens.ts +2907 -0
  71. package/lib/scripts/convert_data.mjs +95 -0
  72. package/lib/scripts/convert_data.ts +119 -0
  73. package/lib/scripts/data-download.d.ts +1 -0
  74. package/lib/scripts/data-download.js +9 -0
  75. package/lib/scripts/datautil.mjs +16 -0
  76. package/lib/scripts/datautil.ts +19 -0
  77. package/lib/scripts/images/transparent_150x192.jpg +0 -0
  78. package/lib/scripts/images/transparent_155x225.jpg +0 -0
  79. package/lib/scripts/parse_textes.mjs +38 -0
  80. package/lib/scripts/parse_textes.ts +52 -0
  81. package/lib/scripts/retrieve_documents.mjs +243 -0
  82. package/lib/scripts/retrieve_documents.ts +279 -0
  83. package/lib/scripts/retrieve_open_data.js +11 -9
  84. package/lib/scripts/retrieve_open_data.mjs +214 -0
  85. package/lib/scripts/retrieve_open_data.ts +261 -0
  86. package/lib/scripts/retrieve_senateurs_photos.mjs +147 -0
  87. package/lib/scripts/retrieve_senateurs_photos.ts +177 -0
  88. package/lib/scripts/retrieve_textes.d.ts +1 -0
  89. package/lib/scripts/retrieve_textes.mjs +165 -0
  90. package/lib/scripts/retrieve_textes.ts +79 -0
  91. package/lib/scripts/shared/cli_helpers.ts +36 -0
  92. package/lib/scripts/shared/util.ts +33 -0
  93. package/lib/strings.mjs +18 -0
  94. package/lib/strings.ts +26 -0
  95. package/lib/types/ameli.mjs +13 -0
  96. package/lib/types/ameli.ts +21 -0
  97. package/lib/types/debats.mjs +2 -0
  98. package/lib/types/debats.ts +6 -0
  99. package/lib/types/dosleg.mjs +151 -0
  100. package/lib/types/dosleg.ts +284 -0
  101. package/lib/types/questions.mjs +1 -0
  102. package/lib/types/questions.ts +3 -0
  103. package/lib/types/sens.mjs +1 -0
  104. package/lib/types/sens.ts +12 -0
  105. package/lib/types/sessions.mjs +43 -0
  106. package/lib/types/sessions.ts +42 -0
  107. package/lib/types/texte.mjs +16 -0
  108. package/lib/types/texte.ts +66 -0
  109. package/lib/typings/windows-1252.d.js +2 -0
  110. package/lib/typings/windows-1252.d.mjs +2 -0
  111. package/lib/typings/windows-1252.d.ts +11 -0
  112. package/lib/validators/config.mjs +54 -0
  113. package/lib/validators/config.ts +79 -0
  114. package/lib/validators/senat.mjs +24 -0
  115. package/lib/validators/senat.ts +26 -0
  116. package/package.json +6 -4
@@ -0,0 +1,500 @@
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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