@tricoteuses/assemblee 1.7.5 → 1.9.0
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.
- package/README.md +4 -4
- package/lib/bugs/acteur-00010/plugin.test.js +2 -2
- package/lib/bugs/acteur-00010.js +3 -3
- package/lib/bugs/agenda-00002/plugin.test.js +3 -3
- package/lib/bugs/agenda-00002.js +5 -5
- package/lib/bugs/agenda-00008/plugin.test.js +2 -2
- package/lib/bugs/agenda-00008.js +3 -3
- package/lib/bugs/agenda-00011/plugin.test.js +6 -6
- package/lib/bugs/agenda-00011.js +8 -8
- package/lib/bugs.js +11 -11
- package/lib/cleaners/index.d.ts +1 -0
- package/lib/cleaners/index.js +8 -1
- package/lib/cleaners/index.mjs +2 -1
- package/lib/cleaners/scrutins.js +2 -1
- package/lib/cleaners/scrutins.mjs +3 -2
- package/lib/cleaners/textes_loi.d.ts +1 -0
- package/lib/cleaners/textes_loi.js +12 -0
- package/lib/cleaners/textes_loi.mjs +5 -0
- package/lib/cleaners/xml.d.ts +3 -0
- package/lib/cleaners/xml.js +13 -1
- package/lib/cleaners/xml.mjs +11 -1
- package/lib/datasets.d.ts +9 -2
- package/lib/datasets.js +233 -6
- package/lib/datasets.mjs +233 -6
- package/lib/dates.js +3 -3
- package/lib/examples/PIONANR5L15B0020/input.d.ts +2 -0
- package/lib/examples/PIONANR5L15B0020/input.js +10 -0
- package/lib/examples/PIONANR5L15B0020/input.mjs +193 -0
- package/lib/examples/PRJLANR5L16B0914/input.d.ts +2 -0
- package/lib/examples/PRJLANR5L16B0914/input.js +10 -0
- package/lib/examples/PRJLANR5L16B0914/input.mjs +322 -0
- package/lib/examples/PRJLANR5L16B2014/input.d.ts +2 -0
- package/lib/examples/PRJLANR5L16B2014/input.js +10 -0
- package/lib/examples/PRJLANR5L16B2014/input.mjs +577 -0
- package/lib/examples/PRJLANR5L16B2424/input.d.ts +2 -0
- package/lib/examples/PRJLANR5L16B2424/input.js +10 -0
- package/lib/examples/PRJLANR5L16B2424/input.mjs +322 -0
- package/lib/examples/PRJLANR5L16B2462/input.d.ts +2 -0
- package/lib/examples/PRJLANR5L16B2462/input.js +10 -0
- package/lib/examples/PRJLANR5L16B2462/input.mjs +1308 -0
- package/lib/loaders.d.ts +5 -0
- package/lib/loaders.js +311 -265
- package/lib/loaders.mjs +19 -6
- package/lib/logger.d.ts +16 -0
- package/lib/logger.js +35 -0
- package/lib/logger.mjs +26 -0
- package/lib/parsers/documents.js +2 -2
- package/lib/parsers/textes_lois.d.ts +16 -1
- package/lib/parsers/textes_lois.js +733 -28
- package/lib/parsers/textes_lois.mjs +587 -22
- package/lib/raw_types/acteurs_et_organes.js +1 -1
- package/lib/raw_types/agendas.js +1 -1
- package/lib/raw_types/amendements.js +1 -1
- package/lib/raw_types/debats.js +1 -1
- package/lib/raw_types/dossiers_legislatifs.js +1 -1
- package/lib/raw_types/questions.js +1 -1
- package/lib/raw_types/scrutins.d.ts +18 -13
- package/lib/raw_types/scrutins.js +28 -14
- package/lib/raw_types/scrutins.mjs +28 -14
- package/lib/raw_types/textes_loi.d.ts +93 -0
- package/lib/raw_types/textes_loi.js +429 -0
- package/lib/raw_types/textes_loi.mjs +378 -0
- package/lib/scripts/bugs_helper.js +9 -9
- package/lib/scripts/document_dossiers_legislatifs.js +1 -1
- package/lib/scripts/get_today_reunions.js +2 -2
- package/lib/scripts/get_today_reunions.mjs +2 -2
- package/lib/scripts/process_open_dataset.d.ts +17 -0
- package/lib/scripts/process_open_dataset.js +302 -0
- package/lib/scripts/process_open_dataset.mjs +136 -0
- package/lib/scripts/process_textes_loi_dataset.d.ts +7 -0
- package/lib/scripts/process_textes_loi_dataset.js +374 -0
- package/lib/scripts/process_textes_loi_dataset.mjs +237 -0
- package/lib/scripts/raw_types_from_amendements.js +2 -2
- package/lib/scripts/reorganize_data.js +1 -1
- package/lib/scripts/reorganize_data.mjs +1 -1
- package/lib/scripts/retrieve_deputes_photos.js +34 -33
- package/lib/scripts/retrieve_deputes_photos.mjs +3 -2
- package/lib/scripts/retrieve_documents.js +4 -4
- package/lib/scripts/retrieve_open_data.js +41 -279
- package/lib/scripts/retrieve_open_data.mjs +13 -126
- package/lib/scripts/retrieve_pending_amendments.js +2 -2
- package/lib/scripts/retrieve_senateurs_photos.js +2 -2
- package/lib/scripts/retrieve_textes_lois.js +2 -2
- package/lib/scripts/shared/cli_helpers.d.ts +5 -0
- package/lib/scripts/shared/cli_helpers.js +7 -2
- package/lib/scripts/shared/cli_helpers.mjs +6 -1
- package/lib/scripts/test_iter_load.js +25 -10
- package/lib/scripts/test_iter_load.mjs +19 -11
- package/lib/scripts/validate_json.js +3 -3
- package/lib/types/acteurs_et_organes.js +1 -1
- package/lib/types/agendas.js +1 -1
- package/lib/types/amendements.js +1 -1
- package/lib/types/debats.js +1 -1
- package/lib/types/dossiers_legislatifs.js +1 -1
- package/lib/types/legislatures.d.ts +2 -0
- package/lib/types/legislatures.js +3 -1
- package/lib/types/legislatures.mjs +3 -1
- package/lib/types/questions.js +1 -1
- package/lib/types/scrutins.d.ts +6 -3
- package/lib/types/scrutins.js +13 -7
- package/lib/types/scrutins.mjs +13 -7
- package/lib/types/textes_loi.d.ts +94 -0
- package/lib/types/textes_loi.js +429 -0
- package/lib/types/textes_loi.mjs +378 -0
- package/package.json +16 -15
- package/lib/scripts/retrieve_textes_lois_llm.d.ts +0 -1
- package/lib/scripts/retrieve_textes_lois_llm.js +0 -188
- package/lib/scripts/retrieve_textes_lois_llm.mjs +0 -85
package/lib/datasets.js
CHANGED
|
@@ -45,6 +45,7 @@ var _assert = _interopRequireDefault(require("assert"));
|
|
|
45
45
|
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
46
46
|
var _path = _interopRequireDefault(require("path"));
|
|
47
47
|
var _legislatures = require("./types/legislatures");
|
|
48
|
+
var _process_textes_loi_dataset = require("./scripts/process_textes_loi_dataset");
|
|
48
49
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
49
50
|
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
50
51
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
@@ -68,7 +69,8 @@ var EnabledDatasets = exports.EnabledDatasets = /*#__PURE__*/function (EnabledDa
|
|
|
68
69
|
EnabledDatasets[EnabledDatasets["Scrutins"] = 32] = "Scrutins";
|
|
69
70
|
EnabledDatasets[EnabledDatasets["Questions"] = 64] = "Questions";
|
|
70
71
|
EnabledDatasets[EnabledDatasets["ComptesRendusSeances"] = 128] = "ComptesRendusSeances";
|
|
71
|
-
EnabledDatasets[EnabledDatasets["
|
|
72
|
+
EnabledDatasets[EnabledDatasets["TextesLoi"] = 256] = "TextesLoi";
|
|
73
|
+
EnabledDatasets[EnabledDatasets["All"] = 511] = "All";
|
|
72
74
|
return EnabledDatasets;
|
|
73
75
|
}({}); // The zip files (named NAME.json.zip) usually contain a single subfolder named "json"
|
|
74
76
|
// containing the actual contents
|
|
@@ -78,10 +80,42 @@ function repairForJsonSubdirectory(dataset, dataDir) {
|
|
|
78
80
|
if (_fsExtra["default"].existsSync(targetDir)) {
|
|
79
81
|
_fsExtra["default"].removeSync(targetDir);
|
|
80
82
|
}
|
|
81
|
-
_fsExtra["default"].
|
|
83
|
+
if (_fsExtra["default"].existsSync(_path["default"].join(dataDir, "json"))) {
|
|
84
|
+
_fsExtra["default"].moveSync(_path["default"].join(dataDir, "json"), targetDir);
|
|
85
|
+
} else {
|
|
86
|
+
_fsExtra["default"].mkdirSync(targetDir);
|
|
87
|
+
}
|
|
82
88
|
}
|
|
83
89
|
var datasets = exports.datasets = {
|
|
84
90
|
acteursEtOrganes: [{
|
|
91
|
+
// AMO10 (XVII)
|
|
92
|
+
//
|
|
93
|
+
// Contient les députés actifs
|
|
94
|
+
// * avec tous les mandats en cours
|
|
95
|
+
// * y compris avec leur parti politique (typeOrgane: "PARPOL")
|
|
96
|
+
// * mais sans les mandats achevés (y compris dans cette législature)
|
|
97
|
+
//
|
|
98
|
+
// Organes :
|
|
99
|
+
// * Contient seulement les organes correspondants aux mandats en cours
|
|
100
|
+
// * avec le xsiType de l'organe
|
|
101
|
+
// * avec des commissions sénatoriales (permanentes et spéciales) en cours
|
|
102
|
+
// * avec des délégations sénatoriales en cours
|
|
103
|
+
// * avec des groupes sénatoriaux en cours
|
|
104
|
+
// * avec des ministères en cours
|
|
105
|
+
// * avec les Présidences de la République (y compris Sarkozy)
|
|
106
|
+
// * avec le Conseil constitutionnel
|
|
107
|
+
//
|
|
108
|
+
// Ce fichier est un sous-ensemble à tous les niveaux du fichier AMO20
|
|
109
|
+
// (qui est lui même un sous-ensemble de l'AMO30).
|
|
110
|
+
// Il n'apporte donc absolument rien par rapport à AMO20 ou l'AMO30.
|
|
111
|
+
filename: "AMO10_deputes_actifs_mandats_actifs_organes_XVII.json",
|
|
112
|
+
ignoreForWeb: true,
|
|
113
|
+
legislature: _legislatures.Legislature.DixSept,
|
|
114
|
+
repairZip: repairForJsonSubdirectory,
|
|
115
|
+
structure: DatasetStructure.SegmentedFiles,
|
|
116
|
+
title: "Députés actifs et organes de la XVIIème législature",
|
|
117
|
+
url: "http://data.assemblee-nationale.fr/static/openData/repository/17/amo/deputes_actifs_mandats_actifs_organes/AMO10_deputes_actifs_mandats_actifs_organes.json.zip"
|
|
118
|
+
}, {
|
|
85
119
|
// AMO10 (XVI)
|
|
86
120
|
//
|
|
87
121
|
// Contient les députés actifs
|
|
@@ -137,6 +171,34 @@ var datasets = exports.datasets = {
|
|
|
137
171
|
structure: DatasetStructure.SegmentedFiles,
|
|
138
172
|
title: "Députés actifs et organes de la XVème législature",
|
|
139
173
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/15/amo/deputes_actifs_mandats_actifs_organes/AMO10_deputes_actifs_mandats_actifs_organes_XV.json.zip"
|
|
174
|
+
}, {
|
|
175
|
+
// AMO20 (XVII)
|
|
176
|
+
//
|
|
177
|
+
// Contient les députés de la législature, actifs ou non (invalidés, etc), les sénateurs actuels
|
|
178
|
+
// Pour les députés :
|
|
179
|
+
// * avec tous leurs mandats de la législature
|
|
180
|
+
// * y compris les mandats achevés
|
|
181
|
+
// * y compris leurs partis politiques (typeOrgane: "PARPOL")
|
|
182
|
+
// * mais sans les mandats des législatures précédentes (qui sont dans AMO40)
|
|
183
|
+
//
|
|
184
|
+
// Contient tous les organes référencés par les mandats
|
|
185
|
+
// * avec le xsiType de l'organe
|
|
186
|
+
// * avec des commissions sénatoriales (permanentes et spéciales) en cours
|
|
187
|
+
// * avec des délégations sénatoriales en cours
|
|
188
|
+
// * avec des groupes sénatoriaux en cours
|
|
189
|
+
// * avec des ministères en cours
|
|
190
|
+
// * avec les Présidences de la République (y compris Sarkozy)
|
|
191
|
+
// * avec le Conseil constitutionnel
|
|
192
|
+
//
|
|
193
|
+
// Ce fichier est un sous-ensemble à tous les niveaux du fichier AMO30.
|
|
194
|
+
// Il n'apporte donc absolument rien par rapport à l'AMO30.
|
|
195
|
+
filename: "AMO20_dep_sen_min_tous_mandats_et_organes_XVII.json",
|
|
196
|
+
ignoreForWeb: true,
|
|
197
|
+
legislature: _legislatures.Legislature.DixSept,
|
|
198
|
+
repairZip: repairForJsonSubdirectory,
|
|
199
|
+
structure: DatasetStructure.SegmentedFiles,
|
|
200
|
+
title: "Acteurs et organes de la XVIIème législature",
|
|
201
|
+
url: "http://data.assemblee-nationale.fr/static/openData/repository/17/amo/deputes_senateurs_ministres_legislature/AMO20_dep_sen_min_tous_mandats_et_organes.json.zip"
|
|
140
202
|
}, {
|
|
141
203
|
// AMO20 (XVI)
|
|
142
204
|
//
|
|
@@ -211,7 +273,7 @@ var datasets = exports.datasets = {
|
|
|
211
273
|
title: "Acteurs et organes de la XIVème législature",
|
|
212
274
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/14/amo/deputes_senateurs_ministres_legislatures_XIV/AMO20_dep_sen_min_tous_mandats_et_organes_XIV.json.zip"
|
|
213
275
|
}, {
|
|
214
|
-
// AMO30 (
|
|
276
|
+
// AMO30 (XVII)
|
|
215
277
|
//
|
|
216
278
|
// Ce fichier contient tous les acteurs et organes.
|
|
217
279
|
// C'est un sur-ensemble des fichiers AMO20.
|
|
@@ -220,9 +282,22 @@ var datasets = exports.datasets = {
|
|
|
220
282
|
repairZip: repairForJsonSubdirectory,
|
|
221
283
|
structure: DatasetStructure.SegmentedFiles,
|
|
222
284
|
title: "Historique de tous les acteurs et organes depuis la XIème législature",
|
|
223
|
-
url: "http://data.assemblee-nationale.fr/static/openData/repository/
|
|
285
|
+
url: "http://data.assemblee-nationale.fr/static/openData/repository/17/amo/tous_acteurs_mandats_organes_xi_legislature/AMO30_tous_acteurs_tous_mandats_tous_organes_historique.json.zip"
|
|
224
286
|
},
|
|
225
287
|
// {
|
|
288
|
+
// // AMO30 (XVI)
|
|
289
|
+
// //
|
|
290
|
+
// // Ce fichier contient tous les acteurs et organes.
|
|
291
|
+
// // C'est un sur-ensemble des fichiers AMO20.
|
|
292
|
+
// filename: "AMO30_tous_acteurs_tous_mandats_tous_organes_historique.json",
|
|
293
|
+
// legislature: Legislature.All,
|
|
294
|
+
// repairZip: repairForJsonSubdirectory,
|
|
295
|
+
// structure: DatasetStructure.SegmentedFiles,
|
|
296
|
+
// title:
|
|
297
|
+
// "Historique de tous les acteurs et organes depuis la XIème législature",
|
|
298
|
+
// url: "http://data.assemblee-nationale.fr/static/openData/repository/16/amo/tous_acteurs_mandats_organes_xi_legislature/AMO30_tous_acteurs_tous_mandats_tous_organes_historique.json.zip",
|
|
299
|
+
// },
|
|
300
|
+
// {
|
|
226
301
|
// // AMO30 (XV)
|
|
227
302
|
// //
|
|
228
303
|
// // Ce fichier contient tous les acteurs et organes.
|
|
@@ -242,6 +317,50 @@ var datasets = exports.datasets = {
|
|
|
242
317
|
// url: "http://data.assemblee-nationale.fr/static/openData/repository/15/amo/tous_acteurs_mandats_organes_xi_legislature/AMO30_tous_acteurs_tous_mandats_tous_organes_historique.json.zip",
|
|
243
318
|
// },
|
|
244
319
|
{
|
|
320
|
+
// AMO40 (XVII)
|
|
321
|
+
//
|
|
322
|
+
// Contient les députés actifs (les mêmes qu'AMO20)
|
|
323
|
+
// * avec presque tous leurs mandats
|
|
324
|
+
// * y compris les mandats achevés et ceux des législatures précédentes
|
|
325
|
+
// * y compris leurs partis politiques précédents
|
|
326
|
+
// * mais sans leur parti politique actuel (typeOrgane: "PARPOL")
|
|
327
|
+
//
|
|
328
|
+
// Contient beaucoup d'organes référencés, y compris ceux des législatures
|
|
329
|
+
// précédentes
|
|
330
|
+
// * mais il manque le xsiType des organes
|
|
331
|
+
// * ne contient pas les organes sénatoriaux
|
|
332
|
+
// * ne contient pas les ministères
|
|
333
|
+
// * ne contient pas la Présidence de la République
|
|
334
|
+
// * ne contient pas le Conseil constitutionnel
|
|
335
|
+
//
|
|
336
|
+
// Pour les acteurs, ce dépôt est un sous-ensemble strict de AMO30 :
|
|
337
|
+
// Il a moins d'acteurs et il sont moins complets.
|
|
338
|
+
//
|
|
339
|
+
// Pour les organes :
|
|
340
|
+
// Quand l'organe est aussi présent dans AMO30, il vaut mieux prendre celui
|
|
341
|
+
// d'AMO30, car il contient le xsiType (c'est la seule différence semble-t-i).
|
|
342
|
+
// Sinon, il faut le prendre seulement si on est intéressé par les législatures
|
|
343
|
+
// précédentes.
|
|
344
|
+
filename: "AMO40_deputes_actifs_mandats_actifs_organes_divises_XVII.json",
|
|
345
|
+
ignoreForWeb: true,
|
|
346
|
+
legislature: _legislatures.Legislature.DixSept,
|
|
347
|
+
repairZip: function repairZip(dataset, dataDir) {
|
|
348
|
+
var targetDir = _path["default"].join(dataDir, dataset.filename);
|
|
349
|
+
if (_fsExtra["default"].existsSync(targetDir)) {
|
|
350
|
+
_fsExtra["default"].removeSync(targetDir);
|
|
351
|
+
}
|
|
352
|
+
_fsExtra["default"].mkdirSync(targetDir);
|
|
353
|
+
if (_fsExtra["default"].pathExistsSync(_path["default"].join(dataDir, "acteur"))) {
|
|
354
|
+
// Note; Le répertoire acteur peut disparaître en fin de législature
|
|
355
|
+
// quand les mandats des députés s'interrompent.
|
|
356
|
+
_fsExtra["default"].moveSync(_path["default"].join(dataDir, "acteur"), _path["default"].join(targetDir, "acteur"));
|
|
357
|
+
}
|
|
358
|
+
_fsExtra["default"].moveSync(_path["default"].join(dataDir, "organe"), _path["default"].join(targetDir, "organe"));
|
|
359
|
+
},
|
|
360
|
+
structure: DatasetStructure.SegmentedFiles,
|
|
361
|
+
title: "Députés actifs et organes de la XVIIème législature",
|
|
362
|
+
url: "http://data.assemblee-nationale.fr/static/openData/repository/17/amo/deputes_actifs_mandats_actifs_organes_divises/AMO40_deputes_actifs_mandats_actifs_organes_divises.json.zip"
|
|
363
|
+
}, {
|
|
245
364
|
// AMO40 (XVI)
|
|
246
365
|
//
|
|
247
366
|
// Contient les députés actifs (les mêmes qu'AMO20)
|
|
@@ -325,6 +444,37 @@ var datasets = exports.datasets = {
|
|
|
325
444
|
structure: DatasetStructure.SegmentedFiles,
|
|
326
445
|
title: "Députés actifs et organes de la XVème législature",
|
|
327
446
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/15/amo/deputes_actifs_mandats_actifs_organes_divises/AMO40_deputes_actifs_mandats_actifs_organes_divises_XV.json.zip"
|
|
447
|
+
}, {
|
|
448
|
+
// AMO50 (XVII)
|
|
449
|
+
//
|
|
450
|
+
// Attention, ce fichier n'est pas mis à jour régulièrement !
|
|
451
|
+
//
|
|
452
|
+
// Pour les acteurs :
|
|
453
|
+
// * c'est un sous ensemble obsolète d'AMO30
|
|
454
|
+
// * il manque les xsiType aux mandats
|
|
455
|
+
//
|
|
456
|
+
// Pour les organes :
|
|
457
|
+
// * c'est un sous ensemble obsolète d'AMO30
|
|
458
|
+
// * il manque les xsiType
|
|
459
|
+
//
|
|
460
|
+
// Ce fichier n'apporte donc absolument rien par rapport à l'AMO30,
|
|
461
|
+
// dont il est un sous ensemble obsolète.
|
|
462
|
+
filename: "AMO50_acteurs_mandats_organes_divises_XVII.json",
|
|
463
|
+
ignoreForWeb: true,
|
|
464
|
+
legislature: _legislatures.Legislature.DixSept,
|
|
465
|
+
repairZip: function repairZip(dataset, dataDir) {
|
|
466
|
+
var targetDir = _path["default"].join(dataDir, dataset.filename);
|
|
467
|
+
if (_fsExtra["default"].existsSync(targetDir)) {
|
|
468
|
+
_fsExtra["default"].removeSync(targetDir);
|
|
469
|
+
}
|
|
470
|
+
_fsExtra["default"].mkdirSync(targetDir);
|
|
471
|
+
_fsExtra["default"].moveSync(_path["default"].join(dataDir, "mandat"), _path["default"].join(targetDir, "mandat"));
|
|
472
|
+
_fsExtra["default"].moveSync(_path["default"].join(dataDir, "acteur"), _path["default"].join(targetDir, "acteur"));
|
|
473
|
+
_fsExtra["default"].moveSync(_path["default"].join(dataDir, "organe"), _path["default"].join(targetDir, "organe"));
|
|
474
|
+
},
|
|
475
|
+
structure: DatasetStructure.SegmentedFiles,
|
|
476
|
+
title: "Acteurs, mandats et organes de la XVIIème législature (fichiers séparés, y compris mandats)",
|
|
477
|
+
url: "http://data.assemblee-nationale.fr/static/openData/repository/17/amo/acteurs_mandats_organes_divises/AMO50_acteurs_mandats_organes_divises.json.zip"
|
|
328
478
|
}, {
|
|
329
479
|
// AMO50 (XVI)
|
|
330
480
|
//
|
|
@@ -389,6 +539,13 @@ var datasets = exports.datasets = {
|
|
|
389
539
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/15/amo/acteurs_mandats_organes_divises/AMO50_acteurs_mandats_organes_divises_XV.json.zip"
|
|
390
540
|
}],
|
|
391
541
|
agendas: [{
|
|
542
|
+
filename: "Agenda_XVII.json",
|
|
543
|
+
legislature: _legislatures.Legislature.DixSept,
|
|
544
|
+
repairZip: repairForJsonSubdirectory,
|
|
545
|
+
structure: DatasetStructure.SegmentedFiles,
|
|
546
|
+
title: "Agenda de la XVIIème législature",
|
|
547
|
+
url: "http://data.assemblee-nationale.fr/static/openData/repository/17/vp/reunions/Agenda.json.zip"
|
|
548
|
+
}, {
|
|
392
549
|
filename: "Agenda_XVI.json",
|
|
393
550
|
legislature: _legislatures.Legislature.Seize,
|
|
394
551
|
repairZip: repairForJsonSubdirectory,
|
|
@@ -410,6 +567,13 @@ var datasets = exports.datasets = {
|
|
|
410
567
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/14/vp/reunions/Agenda_XIV.json.zip"
|
|
411
568
|
}],
|
|
412
569
|
amendements: [{
|
|
570
|
+
filename: "Amendements_XVII.json",
|
|
571
|
+
legislature: _legislatures.Legislature.DixSept,
|
|
572
|
+
repairZip: repairForJsonSubdirectory,
|
|
573
|
+
structure: DatasetStructure.SegmentedFiles,
|
|
574
|
+
title: "Amendements de la XVIIème législature",
|
|
575
|
+
url: "http://data.assemblee-nationale.fr/static/openData/repository/17/loi/amendements_div_legis/Amendements.json.zip"
|
|
576
|
+
}, {
|
|
413
577
|
filename: "Amendements_XVI.json",
|
|
414
578
|
legislature: _legislatures.Legislature.Seize,
|
|
415
579
|
repairZip: repairForJsonSubdirectory,
|
|
@@ -435,6 +599,13 @@ var datasets = exports.datasets = {
|
|
|
435
599
|
// },
|
|
436
600
|
],
|
|
437
601
|
dossiersLegislatifs: [{
|
|
602
|
+
filename: "Dossiers_Legislatifs_XVII.json",
|
|
603
|
+
legislature: _legislatures.Legislature.DixSept,
|
|
604
|
+
repairZip: repairForJsonSubdirectory,
|
|
605
|
+
structure: DatasetStructure.SegmentedFiles,
|
|
606
|
+
title: "Dossiers législatifs de la XVIIème législature",
|
|
607
|
+
url: "http://data.assemblee-nationale.fr/static/openData/repository/17/loi/dossiers_legislatifs/Dossiers_Legislatifs.json.zip"
|
|
608
|
+
}, {
|
|
438
609
|
filename: "Dossiers_Legislatifs_XVI.json",
|
|
439
610
|
legislature: _legislatures.Legislature.Seize,
|
|
440
611
|
repairZip: repairForJsonSubdirectory,
|
|
@@ -456,6 +627,13 @@ var datasets = exports.datasets = {
|
|
|
456
627
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/14/loi/dossiers_legislatifs/Dossiers_Legislatifs_XIV.json.zip"
|
|
457
628
|
}],
|
|
458
629
|
scrutins: [{
|
|
630
|
+
filename: "Scrutins_XVII.json",
|
|
631
|
+
legislature: _legislatures.Legislature.DixSept,
|
|
632
|
+
repairZip: repairForJsonSubdirectory,
|
|
633
|
+
structure: DatasetStructure.SegmentedFiles,
|
|
634
|
+
title: "Scrutins de la XVIIème législature",
|
|
635
|
+
url: "http://data.assemblee-nationale.fr/static/openData/repository/17/loi/scrutins/Scrutins.json.zip"
|
|
636
|
+
}, {
|
|
459
637
|
filename: "Scrutins_XVI.json",
|
|
460
638
|
legislature: _legislatures.Legislature.Seize,
|
|
461
639
|
repairZip: repairForJsonSubdirectory,
|
|
@@ -477,12 +655,26 @@ var datasets = exports.datasets = {
|
|
|
477
655
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/14/loi/scrutins/Scrutins_XIV.json.zip"
|
|
478
656
|
}],
|
|
479
657
|
questions: [{
|
|
658
|
+
filename: "Questions_ecrites_XVII.json",
|
|
659
|
+
legislature: _legislatures.Legislature.DixSept,
|
|
660
|
+
repairZip: repairForJsonSubdirectory,
|
|
661
|
+
structure: DatasetStructure.SegmentedFiles,
|
|
662
|
+
title: "Questions écrites de la XVIIème législature",
|
|
663
|
+
url: "http://data.assemblee-nationale.fr/static/openData/repository/17/questions/questions_ecrites/Questions_ecrites.json.zip"
|
|
664
|
+
}, {
|
|
480
665
|
filename: "Questions_ecrites_XVI.json",
|
|
481
666
|
legislature: _legislatures.Legislature.Seize,
|
|
482
667
|
repairZip: repairForJsonSubdirectory,
|
|
483
668
|
structure: DatasetStructure.SegmentedFiles,
|
|
484
669
|
title: "Questions écrites de la XVIème législature",
|
|
485
670
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/16/questions/questions_ecrites/Questions_ecrites.json.zip"
|
|
671
|
+
}, {
|
|
672
|
+
filename: "Questions_gouvernement_XVII.json",
|
|
673
|
+
legislature: _legislatures.Legislature.DixSept,
|
|
674
|
+
repairZip: repairForJsonSubdirectory,
|
|
675
|
+
structure: DatasetStructure.SegmentedFiles,
|
|
676
|
+
title: "Questions au gouvernement de la XVIIème législature",
|
|
677
|
+
url: "http://data.assemblee-nationale.fr/static/openData/repository/17/questions/questions_gouvernement/Questions_gouvernement.json.zip"
|
|
486
678
|
}, {
|
|
487
679
|
filename: "Questions_gouvernement_XVI.json",
|
|
488
680
|
legislature: _legislatures.Legislature.Seize,
|
|
@@ -490,6 +682,13 @@ var datasets = exports.datasets = {
|
|
|
490
682
|
structure: DatasetStructure.SegmentedFiles,
|
|
491
683
|
title: "Questions au gouvernement de la XVIème législature",
|
|
492
684
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/16/questions/questions_gouvernement/Questions_gouvernement.json.zip"
|
|
685
|
+
}, {
|
|
686
|
+
filename: "Questions_orales_XVII.json",
|
|
687
|
+
legislature: _legislatures.Legislature.DixSept,
|
|
688
|
+
repairZip: repairForJsonSubdirectory,
|
|
689
|
+
structure: DatasetStructure.SegmentedFiles,
|
|
690
|
+
title: "Questions orales sans débats de la XVIIème législature",
|
|
691
|
+
url: "http://data.assemblee-nationale.fr/static/openData/repository/17/questions/questions_orales_sans_debat/Questions_orales_sans_debat.json.zip"
|
|
493
692
|
}, {
|
|
494
693
|
filename: "Questions_orales_XVI.json",
|
|
495
694
|
legislature: _legislatures.Legislature.Seize,
|
|
@@ -499,6 +698,19 @@ var datasets = exports.datasets = {
|
|
|
499
698
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/16/questions/questions_orales_sans_debat/Questions_orales_sans_debat.json.zip"
|
|
500
699
|
}],
|
|
501
700
|
comptesRendusSeances: [{
|
|
701
|
+
filename: "Comptes_Rendus_Seances_XVII.xml",
|
|
702
|
+
legislature: _legislatures.Legislature.DixSept,
|
|
703
|
+
repairZip: function repairZip(dataset, dataDir) {
|
|
704
|
+
var targetDir = _path["default"].join(dataDir, dataset.filename);
|
|
705
|
+
if (_fsExtra["default"].existsSync(targetDir)) {
|
|
706
|
+
_fsExtra["default"].removeSync(targetDir);
|
|
707
|
+
}
|
|
708
|
+
_fsExtra["default"].moveSync(_path["default"].join(dataDir, "xml"), targetDir);
|
|
709
|
+
},
|
|
710
|
+
structure: DatasetStructure.SegmentedFiles,
|
|
711
|
+
title: "Comptes rendus des séances publiques de la XVIIème législature",
|
|
712
|
+
url: "https://data.assemblee-nationale.fr/static/openData/repository/17/vp/syceronbrut/syseron.xml.zip"
|
|
713
|
+
}, {
|
|
502
714
|
filename: "Comptes_Rendus_Seances_XVI.xml",
|
|
503
715
|
legislature: _legislatures.Legislature.Seize,
|
|
504
716
|
repairZip: function repairZip(dataset, dataDir) {
|
|
@@ -511,6 +723,21 @@ var datasets = exports.datasets = {
|
|
|
511
723
|
structure: DatasetStructure.SegmentedFiles,
|
|
512
724
|
title: "Comptes rendus des séances publiques de la XVIème législature",
|
|
513
725
|
url: "https://data.assemblee-nationale.fr/static/openData/repository/16/vp/syceronbrut/syseron.xml.zip"
|
|
726
|
+
}],
|
|
727
|
+
textesLoi: [{
|
|
728
|
+
filename: "Textes_Loi_XVI",
|
|
729
|
+
legislature: _legislatures.Legislature.Seize,
|
|
730
|
+
repairZip: repairForJsonSubdirectory,
|
|
731
|
+
structure: DatasetStructure.SegmentedFiles,
|
|
732
|
+
title: "Textes de loi de la XVIème législature",
|
|
733
|
+
download: _process_textes_loi_dataset.processTextesLoiDataset
|
|
734
|
+
}, {
|
|
735
|
+
filename: "Textes_Loi_XVII",
|
|
736
|
+
legislature: _legislatures.Legislature.DixSept,
|
|
737
|
+
repairZip: repairForJsonSubdirectory,
|
|
738
|
+
structure: DatasetStructure.SegmentedFiles,
|
|
739
|
+
title: "Textes de loi de la XVIIème législature",
|
|
740
|
+
download: _process_textes_loi_dataset.processTextesLoiDataset
|
|
514
741
|
}]
|
|
515
742
|
};
|
|
516
743
|
var directory2schema = {
|
|
@@ -527,7 +754,7 @@ var directory2schema = {
|
|
|
527
754
|
".*Comptes_Rendus_Seances_.*": "debat"
|
|
528
755
|
};
|
|
529
756
|
function getDatasets() {
|
|
530
|
-
return ["Agenda_XIV", "Agenda_XV", "Agenda_XVI", "Scrutins_XIV", "Scrutins_XV", "Scrutins_XVI", "Questions_Ecrites_XVI", "Questions_Gouvernement_XVI", "Amendements_XIV", "Amendements_XV", "Amendements_XVI", "Dossiers_Legislatifs_XIV", "Dossiers_Legislatifs_XV", "Dossiers_Legislatifs_XVI", "AMO30_tous_acteurs_tous_mandats_tous_organes_historique", "acteurs_mandats_organes", "Comptes_Rendus_Seances_XVI"];
|
|
757
|
+
return ["Agenda_XIV", "Agenda_XV", "Agenda_XVI", "Agenda_XVII", "Scrutins_XIV", "Scrutins_XV", "Scrutins_XVI", "Scrutins_XVII", "Questions_Ecrites_XVI", "Questions_Ecrites_XVII", "Questions_Gouvernement_XVI", "Questions_Gouvernement_XVII", "Amendements_XIV", "Amendements_XV", "Amendements_XVI", "Amendements_XVII", "Dossiers_Legislatifs_XIV", "Dossiers_Legislatifs_XV", "Dossiers_Legislatifs_XVI", "Dossiers_Legislatifs_XVII", "AMO30_tous_acteurs_tous_mandats_tous_organes_historique", "acteurs_mandats_organes", "Comptes_Rendus_Seances_XVI", "Comptes_Rendus_Seances_XVII"];
|
|
531
758
|
}
|
|
532
759
|
function validDataset(dir) {
|
|
533
760
|
var _iterator = _createForOfIteratorHelper(getDatasets()),
|
|
@@ -624,4 +851,4 @@ function getEnabledDatasets(categories) {
|
|
|
624
851
|
return enabledDatasets | EnabledDatasets[datasetName];
|
|
625
852
|
}, EnabledDatasets.None);
|
|
626
853
|
}
|
|
627
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY3J5cHRvIiwicmVxdWlyZSIsIl9hc3NlcnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2ZzRXh0cmEiLCJfcGF0aCIsIl9sZWdpc2xhdHVyZXMiLCJlIiwiX19lc01vZHVsZSIsIl9zbGljZWRUb0FycmF5IiwiciIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJUeXBlRXJyb3IiLCJsIiwidCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwibiIsImkiLCJ1IiwiYSIsImYiLCJvIiwiY2FsbCIsIm5leHQiLCJPYmplY3QiLCJkb25lIiwicHVzaCIsInZhbHVlIiwibGVuZ3RoIiwiQXJyYXkiLCJpc0FycmF5IiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJfbiIsIkYiLCJzIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJEYXRhc2V0U3RydWN0dXJlIiwiZXhwb3J0cyIsIkVuYWJsZWREYXRhc2V0cyIsInJlcGFpckZvckpzb25TdWJkaXJlY3RvcnkiLCJkYXRhc2V0IiwiZGF0YURpciIsInRhcmdldERpciIsInBhdGgiLCJqb2luIiwiZmlsZW5hbWUiLCJmcyIsImV4aXN0c1N5bmMiLCJyZW1vdmVTeW5jIiwibW92ZVN5bmMiLCJkYXRhc2V0cyIsImFjdGV1cnNFdE9yZ2FuZXMiLCJpZ25vcmVGb3JXZWIiLCJsZWdpc2xhdHVyZSIsIkxlZ2lzbGF0dXJlIiwiU2VpemUiLCJyZXBhaXJaaXAiLCJzdHJ1Y3R1cmUiLCJTZWdtZW50ZWRGaWxlcyIsInRpdGxlIiwidXJsIiwiUXVpbnplIiwiUXVhdG9yemUiLCJTaW5nbGVGaWxlIiwiQWxsIiwibWtkaXJTeW5jIiwicGF0aEV4aXN0c1N5bmMiLCJhZ2VuZGFzIiwiYW1lbmRlbWVudHMiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzIiwic2NydXRpbnMiLCJxdWVzdGlvbnMiLCJjb21wdGVzUmVuZHVzU2VhbmNlcyIsImRpcmVjdG9yeTJzY2hlbWEiLCJnZXREYXRhc2V0cyIsInZhbGlkRGF0YXNldCIsImRpciIsIl9pdGVyYXRvciIsIl9zdGVwIiwiaW5jbHVkZXMiLCJlcnIiLCJnZXRTY2hlbWFzIiwidmFsdWVzIiwiZGF0YXNldERpcmVjdG9yeVNjaGVtYSIsImRpcmVjdG9yaWVzIiwiY29uY2F0IiwicmVzdWx0cyIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJkaXJlY3RvcnkiLCJfaSIsIl9PYmplY3Qka2V5cyIsImtleXMiLCJyZSIsIlJlZ0V4cCIsImV4ZWMiLCJmaWxlRGF0YXNldFVybCIsIm1hdGNoIiwiX3JlZiIsImZpbGUiLCJkaWZmVXBzdHJlYW0iLCJkYXRhc2V0VXJsIiwiX2RhdGFzZXRVcmwiLCJzdW0iLCJjcmVhdGVIYXNoIiwidXBkYXRlIiwiZGlnZXN0IiwibWFzdGVyVXJsIiwiX2RhdGFzZXRVcmwyIiwiZmlsdGVyQnlMZWdpc2xhdHVyZSIsInVuZGVmaW5lZCIsIl9pMiIsIl9PYmplY3QkZW50cmllcyIsImVudHJpZXMiLCJfT2JqZWN0JGVudHJpZXMkX2kiLCJrZXkiLCJmaWx0ZXIiLCJnZXRFbmFibGVkRGF0YXNldHMiLCJjYXRlZ29yaWVzIiwibWFwIiwiZGF0YXNldE5hbWUiLCJhc3NlcnQiLCJub3RTdHJpY3RFcXVhbCIsInJlZHVjZSIsImVuYWJsZWREYXRhc2V0cyIsIk5vbmUiXSwic291cmNlcyI6WyIuLi9zcmMvZGF0YXNldHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gXCJjcnlwdG9cIlxuaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuXG5pbXBvcnQgeyBMZWdpc2xhdHVyZSB9IGZyb20gXCIuL3R5cGVzL2xlZ2lzbGF0dXJlc1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXNldCB7XG4gIGZpbGVuYW1lOiBzdHJpbmdcbiAgaWdub3JlRm9yV2ViPzogYm9vbGVhblxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmVcbiAgcmVwYWlyWmlwPzogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4gdm9pZFxuICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmVcbiAgdGl0bGU6IHN0cmluZ1xuICB1cmw6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFzZXRzIHtcbiAgYWN0ZXVyc0V0T3JnYW5lczogRGF0YXNldFtdXG4gIGFnZW5kYXM6IERhdGFzZXRbXVxuICBhbWVuZGVtZW50czogRGF0YXNldFtdXG4gIGRvc3NpZXJzTGVnaXNsYXRpZnM6IERhdGFzZXRbXVxuICBzY3J1dGluczogRGF0YXNldFtdXG4gIHF1ZXN0aW9uczogRGF0YXNldFtdXG4gIGNvbXB0ZXNSZW5kdXNTZWFuY2VzOiBEYXRhc2V0W11cbn1cblxuZXhwb3J0IGVudW0gRGF0YXNldFN0cnVjdHVyZSB7XG4gIFNpbmdsZUZpbGUsXG4gIFNlZ21lbnRlZEZpbGVzLFxufVxuXG5leHBvcnQgZW51bSBFbmFibGVkRGF0YXNldHMge1xuICBOb25lID0gMCxcbiAgQWN0ZXVyc0V0T3JnYW5lcyA9IDEgPDwgMCxcbiAgQWdlbmRhcyA9IDEgPDwgMSxcbiAgQW1lbmRlbWVudHMgPSAxIDw8IDIsXG4gIERvc3NpZXJzTGVnaXNsYXRpZnMgPSAxIDw8IDMsXG4gIFBob3RvcyA9IDEgPDwgNCxcbiAgU2NydXRpbnMgPSAxIDw8IDUsXG4gIFF1ZXN0aW9ucyA9IDEgPDwgNixcbiAgQ29tcHRlc1JlbmR1c1NlYW5jZXMgPSAxIDw8IDcsXG4gIEFsbCA9IEFjdGV1cnNFdE9yZ2FuZXMgfFxuICAgIEFnZW5kYXMgfFxuICAgIEFtZW5kZW1lbnRzIHxcbiAgICBEb3NzaWVyc0xlZ2lzbGF0aWZzIHxcbiAgICBQaG90b3MgfFxuICAgIFNjcnV0aW5zIHxcbiAgICBRdWVzdGlvbnMgfFxuICAgIENvbXB0ZXNSZW5kdXNTZWFuY2VzLFxufVxuXG4vLyBUaGUgemlwIGZpbGVzIChuYW1lZCBOQU1FLmpzb24uemlwKSB1c3VhbGx5IGNvbnRhaW4gYSBzaW5nbGUgc3ViZm9sZGVyIG5hbWVkIFwianNvblwiXG4vLyBjb250YWluaW5nIHRoZSBhY3R1YWwgY29udGVudHNcbi8vIFdlJ2QgcmF0aGVyIHJlbmFtZSB0aGUgZm9sZGVyIE5BTUUuanNvblxuZnVuY3Rpb24gcmVwYWlyRm9ySnNvblN1YmRpcmVjdG9yeShkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpIHtcbiAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgfVxuICBmcy5tb3ZlU3luYyhwYXRoLmpvaW4oZGF0YURpciwgXCJqc29uXCIpLCB0YXJnZXREaXIpXG59XG5cbmV4cG9ydCBjb25zdCBkYXRhc2V0czogRGF0YXNldHMgPSB7XG4gIGFjdGV1cnNFdE9yZ2FuZXM6IFtcbiAgICB7XG4gICAgICAvLyBBTU8xMCAoWFZJKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IGxlcyBkw6lwdXTDqXMgYWN0aWZzXG4gICAgICAvLyAqIGF2ZWMgdG91cyBsZXMgbWFuZGF0cyBlbiBjb3Vyc1xuICAgICAgLy8gKiB5IGNvbXByaXMgYXZlYyBsZXVyIHBhcnRpIHBvbGl0aXF1ZSAodHlwZU9yZ2FuZTogXCJQQVJQT0xcIilcbiAgICAgIC8vICogbWFpcyBzYW5zIGxlcyBtYW5kYXRzIGFjaGV2w6lzICh5IGNvbXByaXMgZGFucyBjZXR0ZSBsw6lnaXNsYXR1cmUpXG4gICAgICAvL1xuICAgICAgLy8gT3JnYW5lcyA6XG4gICAgICAvLyAqIENvbnRpZW50IHNldWxlbWVudCBsZXMgb3JnYW5lcyBjb3JyZXNwb25kYW50cyBhdXggbWFuZGF0cyBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGxlIHhzaVR5cGUgZGUgbCdvcmdhbmVcbiAgICAgIC8vICogYXZlYyBkZXMgY29tbWlzc2lvbnMgc8OpbmF0b3JpYWxlcyAocGVybWFuZW50ZXMgZXQgc3DDqWNpYWxlcykgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgZMOpbMOpZ2F0aW9ucyBzw6luYXRvcmlhbGVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIGdyb3VwZXMgc8OpbmF0b3JpYXV4IGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIG1pbmlzdMOocmVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgbGVzIFByw6lzaWRlbmNlcyBkZSBsYSBSw6lwdWJsaXF1ZSAoeSBjb21wcmlzIFNhcmtvenkpXG4gICAgICAvLyAqIGF2ZWMgbGUgQ29uc2VpbCBjb25zdGl0dXRpb25uZWxcbiAgICAgIC8vXG4gICAgICAvLyBDZSBmaWNoaWVyIGVzdCB1biBzb3VzLWVuc2VtYmxlIMOgIHRvdXMgbGVzIG5pdmVhdXggZHUgZmljaGllciBBTU8yMFxuICAgICAgLy8gKHF1aSBlc3QgbHVpIG3Dqm1lIHVuIHNvdXMtZW5zZW1ibGUgZGUgbCdBTU8zMCkuXG4gICAgICAvLyBJbCBuJ2FwcG9ydGUgZG9uYyBhYnNvbHVtZW50IHJpZW4gcGFyIHJhcHBvcnQgw6AgQU1PMjAgb3UgbCdBTU8zMC5cbiAgICAgIGZpbGVuYW1lOiBcIkFNTzEwX2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXNfWFZJLmpzb25cIixcbiAgICAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5TZWl6ZSxcbiAgICAgIHJlcGFpclppcDogcmVwYWlyRm9ySnNvblN1YmRpcmVjdG9yeSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkTDqXB1dMOpcyBhY3RpZnMgZXQgb3JnYW5lcyBkZSBsYSBYVknDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTYvYW1vL2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXMvQU1PMTBfZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lcy5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQU1PMTAgKFhWKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IGxlcyBkw6lwdXTDqXMgYWN0aWZzXG4gICAgICAvLyAqIGF2ZWMgdG91cyBsZXMgbWFuZGF0cyBlbiBjb3Vyc1xuICAgICAgLy8gKiB5IGNvbXByaXMgYXZlYyBsZXVyIHBhcnRpIHBvbGl0aXF1ZSAodHlwZU9yZ2FuZTogXCJQQVJQT0xcIilcbiAgICAgIC8vICogbWFpcyBzYW5zIGxlcyBtYW5kYXRzIGFjaGV2w6lzICh5IGNvbXByaXMgZGFucyBjZXR0ZSBsw6lnaXNsYXR1cmUpXG4gICAgICAvL1xuICAgICAgLy8gT3JnYW5lcyA6XG4gICAgICAvLyAqIENvbnRpZW50IHNldWxlbWVudCBsZXMgb3JnYW5lcyBjb3JyZXNwb25kYW50cyBhdXggbWFuZGF0cyBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGxlIHhzaVR5cGUgZGUgbCdvcmdhbmVcbiAgICAgIC8vICogYXZlYyBkZXMgY29tbWlzc2lvbnMgc8OpbmF0b3JpYWxlcyAocGVybWFuZW50ZXMgZXQgc3DDqWNpYWxlcykgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgZMOpbMOpZ2F0aW9ucyBzw6luYXRvcmlhbGVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIGdyb3VwZXMgc8OpbmF0b3JpYXV4IGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIG1pbmlzdMOocmVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgbGVzIFByw6lzaWRlbmNlcyBkZSBsYSBSw6lwdWJsaXF1ZSAoeSBjb21wcmlzIFNhcmtvenkpXG4gICAgICAvLyAqIGF2ZWMgbGUgQ29uc2VpbCBjb25zdGl0dXRpb25uZWxcbiAgICAgIC8vXG4gICAgICAvLyBDZSBmaWNoaWVyIGVzdCB1biBzb3VzLWVuc2VtYmxlIMOgIHRvdXMgbGVzIG5pdmVhdXggZHUgZmljaGllciBBTU8yMFxuICAgICAgLy8gKHF1aSBlc3QgbHVpIG3Dqm1lIHVuIHNvdXMtZW5zZW1ibGUgZGUgbCdBTU8zMCkuXG4gICAgICAvLyBJbCBuJ2FwcG9ydGUgZG9uYyBhYnNvbHVtZW50IHJpZW4gcGFyIHJhcHBvcnQgw6AgQU1PMjAgb3UgbCdBTU8zMC5cbiAgICAgIGZpbGVuYW1lOiBcIkFNTzEwX2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXNfWFYuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1aW56ZSxcbiAgICAgIHJlcGFpclppcDogcmVwYWlyRm9ySnNvblN1YmRpcmVjdG9yeSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkTDqXB1dMOpcyBhY3RpZnMgZXQgb3JnYW5lcyBkZSBsYSBYVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNS9hbW8vZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lcy9BTU8xMF9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzX1hWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBBTU8yMCAoWFZJKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IGxlcyBkw6lwdXTDqXMgZGUgbGEgbMOpZ2lzbGF0dXJlLCBhY3RpZnMgb3Ugbm9uIChpbnZhbGlkw6lzLCBldGMpLCBsZXMgc8OpbmF0ZXVycyBhY3R1ZWxzXG4gICAgICAvLyBQb3VyIGxlcyBkw6lwdXTDqXMgOlxuICAgICAgLy8gKiBhdmVjIHRvdXMgbGV1cnMgbWFuZGF0cyBkZSBsYSBsw6lnaXNsYXR1cmVcbiAgICAgIC8vICogeSBjb21wcmlzIGxlcyBtYW5kYXRzIGFjaGV2w6lzXG4gICAgICAvLyAqIHkgY29tcHJpcyBsZXVycyBwYXJ0aXMgcG9saXRpcXVlcyAgKHR5cGVPcmdhbmU6IFwiUEFSUE9MXCIpXG4gICAgICAvLyAqIG1haXMgc2FucyBsZXMgbWFuZGF0cyBkZXMgbMOpZ2lzbGF0dXJlcyBwcsOpY8OpZGVudGVzIChxdWkgc29udCBkYW5zIEFNTzQwKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IHRvdXMgbGVzIG9yZ2FuZXMgcsOpZsOpcmVuY8OpcyBwYXIgbGVzIG1hbmRhdHNcbiAgICAgIC8vICogYXZlYyBsZSB4c2lUeXBlIGRlIGwnb3JnYW5lXG4gICAgICAvLyAqIGF2ZWMgZGVzIGNvbW1pc3Npb25zIHPDqW5hdG9yaWFsZXMgKHBlcm1hbmVudGVzIGV0IHNww6ljaWFsZXMpIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIGTDqWzDqWdhdGlvbnMgc8OpbmF0b3JpYWxlcyBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGRlcyBncm91cGVzIHPDqW5hdG9yaWF1eCBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGRlcyBtaW5pc3TDqHJlcyBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGxlcyBQcsOpc2lkZW5jZXMgZGUgbGEgUsOpcHVibGlxdWUgKHkgY29tcHJpcyBTYXJrb3p5KVxuICAgICAgLy8gKiBhdmVjIGxlIENvbnNlaWwgY29uc3RpdHV0aW9ubmVsXG4gICAgICAvL1xuICAgICAgLy8gQ2UgZmljaGllciBlc3QgdW4gc291cy1lbnNlbWJsZSDDoCB0b3VzIGxlcyBuaXZlYXV4IGR1IGZpY2hpZXIgQU1PMzAuXG4gICAgICAvLyBJbCBuJ2FwcG9ydGUgZG9uYyBhYnNvbHVtZW50IHJpZW4gcGFyIHJhcHBvcnQgw6AgbCdBTU8zMC5cbiAgICAgIGZpbGVuYW1lOiBcIkFNTzIwX2RlcF9zZW5fbWluX3RvdXNfbWFuZGF0c19ldF9vcmdhbmVzX1hWSS5qc29uXCIsXG4gICAgICBpZ25vcmVGb3JXZWI6IHRydWUsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuU2VpemUsXG4gICAgICByZXBhaXJaaXA6IHJlcGFpckZvckpzb25TdWJkaXJlY3RvcnksXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJBY3RldXJzIGV0IG9yZ2FuZXMgZGUgbGEgWFZJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE2L2Ftby9kZXB1dGVzX3NlbmF0ZXVyc19taW5pc3RyZXNfbGVnaXNsYXR1cmUvQU1PMjBfZGVwX3Nlbl9taW5fdG91c19tYW5kYXRzX2V0X29yZ2FuZXMuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIEFNTzIwIChYVilcbiAgICAgIC8vXG4gICAgICAvLyBDb250aWVudCBsZXMgZMOpcHV0w6lzIGRlIGxhIGzDqWdpc2xhdHVyZSwgYWN0aWZzIG91IG5vbiAoaW52YWxpZMOpcywgZXRjKSwgbGVzIHPDqW5hdGV1cnMgYWN0dWVsc1xuICAgICAgLy8gUG91ciBsZXMgZMOpcHV0w6lzIDpcbiAgICAgIC8vICogYXZlYyB0b3VzIGxldXJzIG1hbmRhdHMgZGUgbGEgbMOpZ2lzbGF0dXJlXG4gICAgICAvLyAqIHkgY29tcHJpcyBsZXMgbWFuZGF0cyBhY2hldsOpc1xuICAgICAgLy8gKiB5IGNvbXByaXMgbGV1cnMgcGFydGlzIHBvbGl0aXF1ZXMgICh0eXBlT3JnYW5lOiBcIlBBUlBPTFwiKVxuICAgICAgLy8gKiBtYWlzIHNhbnMgbGVzIG1hbmRhdHMgZGVzIGzDqWdpc2xhdHVyZXMgcHLDqWPDqWRlbnRlcyAocXVpIHNvbnQgZGFucyBBTU80MClcbiAgICAgIC8vXG4gICAgICAvLyBDb250aWVudCB0b3VzIGxlcyBvcmdhbmVzIHLDqWbDqXJlbmPDqXMgcGFyIGxlcyBtYW5kYXRzXG4gICAgICAvLyAqIGF2ZWMgbGUgeHNpVHlwZSBkZSBsJ29yZ2FuZVxuICAgICAgLy8gKiBhdmVjIGRlcyBjb21taXNzaW9ucyBzw6luYXRvcmlhbGVzIChwZXJtYW5lbnRlcyBldCBzcMOpY2lhbGVzKSBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGRlcyBkw6lsw6lnYXRpb25zIHPDqW5hdG9yaWFsZXMgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgZ3JvdXBlcyBzw6luYXRvcmlhdXggZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgbWluaXN0w6hyZXMgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBsZXMgUHLDqXNpZGVuY2VzIGRlIGxhIFLDqXB1YmxpcXVlICh5IGNvbXByaXMgU2Fya296eSlcbiAgICAgIC8vICogYXZlYyBsZSBDb25zZWlsIGNvbnN0aXR1dGlvbm5lbFxuICAgICAgLy9cbiAgICAgIC8vIENlIGZpY2hpZXIgZXN0IHVuIHNvdXMtZW5zZW1ibGUgw6AgdG91cyBsZXMgbml2ZWF1eCBkdSBmaWNoaWVyIEFNTzMwLlxuICAgICAgLy8gSWwgbidhcHBvcnRlIGRvbmMgYWJzb2x1bWVudCByaWVuIHBhciByYXBwb3J0IMOgIGwnQU1PMzAuXG4gICAgICBmaWxlbmFtZTogXCJBTU8yMF9kZXBfc2VuX21pbl90b3VzX21hbmRhdHNfZXRfb3JnYW5lc19YVi5qc29uXCIsXG4gICAgICBpZ25vcmVGb3JXZWI6IHRydWUsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuUXVpbnplLFxuICAgICAgcmVwYWlyWmlwOiByZXBhaXJGb3JKc29uU3ViZGlyZWN0b3J5LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiQWN0ZXVycyBldCBvcmdhbmVzIGRlIGxhIFhWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE1L2Ftby9kZXB1dGVzX3NlbmF0ZXVyc19taW5pc3RyZXNfbGVnaXNsYXR1cmUvQU1PMjBfZGVwX3Nlbl9taW5fdG91c19tYW5kYXRzX2V0X29yZ2FuZXNfWFYuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIEFNTzIwIChYSVYpXG4gICAgICAvL1xuICAgICAgLy8gQ29tbWUgQU1PMjAgKFhWKSBtYWlzIHBvdXIgbGEgWElWw6htZSBsw6lnaXNsYXR1cmVcbiAgICAgIC8vIFRvdXMgbGVzIGFjdGV1cnMgc2F1ZiB1biAoUEE0Mjk4OTIpIHNvbnQgcHLDqXNlbnRzIGVuIHBsdXMgw6Agam91ciBkYW5zIEFNTzMwLlxuICAgICAgLy8gQ2V0IGFjdGV1ciBQQTQyOTg5MiAoYW5jaWVubmUgU8OpbmF0cmljZSkgbidlc3QgcHLDqXNlbnQgZGFucyBhdWN1biBkZXMgYXV0cmVzXG4gICAgICAvLyBmaWNoaWVycyBBTU8uXG4gICAgICAvLyBUb3VzIGxlcyBvcmdhbmVzIHNvbnQgcHLDqXNlbnRzIGVuIHBsdXMgY29tcGxldHMgZGFucyBBTU8zMC5cbiAgICAgIC8vXG4gICAgICAvLyBDZSBmaWNoaWVyIGVzdCBkb25jIMOgIHVuIGTDqXRhaWwgcHLDqnQgKFBBNDI5ODkyKSB1biBzb3VzLWVuc2VtYmxlIGQnQU1PMzAuXG4gICAgICAvLyBJbCBuJ2FwcG9ydGUgZG9uYyBxdWFzaW1lbnQgcmllbiBwYXIgcmFwcG9ydCDDoCBsJ0FNTzMwLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PMjBfZGVwX3Nlbl9taW5fdG91c19tYW5kYXRzX2V0X29yZ2FuZXNfWElWLmpzb25cIixcbiAgICAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWF0b3J6ZSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlLFxuICAgICAgdGl0bGU6IFwiQWN0ZXVycyBldCBvcmdhbmVzIGRlIGxhIFhJVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNC9hbW8vZGVwdXRlc19zZW5hdGV1cnNfbWluaXN0cmVzX2xlZ2lzbGF0dXJlc19YSVYvQU1PMjBfZGVwX3Nlbl9taW5fdG91c19tYW5kYXRzX2V0X29yZ2FuZXNfWElWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBBTU8zMCAoWFZJKVxuICAgICAgLy9cbiAgICAgIC8vIENlIGZpY2hpZXIgY29udGllbnQgdG91cyBsZXMgYWN0ZXVycyBldCBvcmdhbmVzLlxuICAgICAgLy8gQydlc3QgdW4gc3VyLWVuc2VtYmxlIGRlcyBmaWNoaWVycyBBTU8yMC5cbiAgICAgIGZpbGVuYW1lOiBcIkFNTzMwX3RvdXNfYWN0ZXVyc190b3VzX21hbmRhdHNfdG91c19vcmdhbmVzX2hpc3RvcmlxdWUuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLkFsbCxcbiAgICAgIHJlcGFpclppcDogcmVwYWlyRm9ySnNvblN1YmRpcmVjdG9yeSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOlxuICAgICAgICBcIkhpc3RvcmlxdWUgZGUgdG91cyBsZXMgYWN0ZXVycyBldCBvcmdhbmVzIGRlcHVpcyBsYSBYScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9hbW8vdG91c19hY3RldXJzX21hbmRhdHNfb3JnYW5lc194aV9sZWdpc2xhdHVyZS9BTU8zMF90b3VzX2FjdGV1cnNfdG91c19tYW5kYXRzX3RvdXNfb3JnYW5lc19oaXN0b3JpcXVlLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICAvLyB7XG4gICAgLy8gICAvLyBBTU8zMCAoWFYpXG4gICAgLy8gICAvL1xuICAgIC8vICAgLy8gQ2UgZmljaGllciBjb250aWVudCB0b3VzIGxlcyBhY3RldXJzIGV0IG9yZ2FuZXMuXG4gICAgLy8gICAvLyBDJ2VzdCB1biBzdXItZW5zZW1ibGUgZGVzIGZpY2hpZXJzIEFNTzIwLlxuICAgIC8vICAgZmlsZW5hbWU6IFwiQU1PMzBfdG91c19hY3RldXJzX3RvdXNfbWFuZGF0c190b3VzX29yZ2FuZXNfaGlzdG9yaXF1ZS5qc29uXCIsXG4gICAgLy8gICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuQWxsLFxuICAgIC8vICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgLy8gICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgIC8vICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgLy8gICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgLy8gICAgIH1cbiAgICAvLyAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgIC8vICAgfSxcbiAgICAvLyAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAvLyAgIHRpdGxlOlxuICAgIC8vICAgICBcIkhpc3RvcmlxdWUgZGUgdG91cyBsZXMgYWN0ZXVycyBldCBvcmdhbmVzIGRlcHVpcyBsYSBYScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgLy8gICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNS9hbW8vdG91c19hY3RldXJzX21hbmRhdHNfb3JnYW5lc194aV9sZWdpc2xhdHVyZS9BTU8zMF90b3VzX2FjdGV1cnNfdG91c19tYW5kYXRzX3RvdXNfb3JnYW5lc19oaXN0b3JpcXVlLmpzb24uemlwXCIsXG4gICAgLy8gfSxcbiAgICB7XG4gICAgICAvLyBBTU80MCAoWFZJKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IGxlcyBkw6lwdXTDqXMgYWN0aWZzIChsZXMgbcOqbWVzIHF1J0FNTzIwKVxuICAgICAgLy8gKiBhdmVjIHByZXNxdWUgdG91cyBsZXVycyBtYW5kYXRzXG4gICAgICAvLyAqIHkgY29tcHJpcyBsZXMgbWFuZGF0cyBhY2hldsOpcyBldCBjZXV4IGRlcyBsw6lnaXNsYXR1cmVzIHByw6ljw6lkZW50ZXNcbiAgICAgIC8vICogeSBjb21wcmlzIGxldXJzIHBhcnRpcyBwb2xpdGlxdWVzIHByw6ljw6lkZW50c1xuICAgICAgLy8gKiBtYWlzIHNhbnMgbGV1ciBwYXJ0aSBwb2xpdGlxdWUgYWN0dWVsICh0eXBlT3JnYW5lOiBcIlBBUlBPTFwiKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IGJlYXVjb3VwIGQnb3JnYW5lcyByw6lmw6lyZW5jw6lzLCB5IGNvbXByaXMgY2V1eCBkZXMgbMOpZ2lzbGF0dXJlc1xuICAgICAgLy8gcHLDqWPDqWRlbnRlc1xuICAgICAgLy8gKiBtYWlzIGlsIG1hbnF1ZSBsZSB4c2lUeXBlIGRlcyBvcmdhbmVzXG4gICAgICAvLyAqIG5lIGNvbnRpZW50IHBhcyBsZXMgb3JnYW5lcyBzw6luYXRvcmlhdXhcbiAgICAgIC8vICogbmUgY29udGllbnQgcGFzIGxlcyBtaW5pc3TDqHJlc1xuICAgICAgLy8gKiBuZSBjb250aWVudCBwYXMgbGEgUHLDqXNpZGVuY2UgZGUgbGEgUsOpcHVibGlxdWVcbiAgICAgIC8vICogbmUgY29udGllbnQgcGFzIGxlIENvbnNlaWwgY29uc3RpdHV0aW9ubmVsXG4gICAgICAvL1xuICAgICAgLy8gUG91ciBsZXMgYWN0ZXVycywgY2UgZMOpcMO0dCBlc3QgdW4gc291cy1lbnNlbWJsZSBzdHJpY3QgZGUgQU1PMzAgOlxuICAgICAgLy8gSWwgYSBtb2lucyBkJ2FjdGV1cnMgZXQgaWwgc29udCBtb2lucyBjb21wbGV0cy5cbiAgICAgIC8vXG4gICAgICAvLyBQb3VyIGxlcyBvcmdhbmVzIDpcbiAgICAgIC8vIFF1YW5kIGwnb3JnYW5lIGVzdCBhdXNzaSBwcsOpc2VudCBkYW5zIEFNTzMwLCBpbCB2YXV0IG1pZXV4IHByZW5kcmUgY2VsdWlcbiAgICAgIC8vIGQnQU1PMzAsIGNhciBpbCBjb250aWVudCBsZSB4c2lUeXBlIChjJ2VzdCBsYSBzZXVsZSBkaWZmw6lyZW5jZSBzZW1ibGUtdC1pKS5cbiAgICAgIC8vIFNpbm9uLCBpbCBmYXV0IGxlIHByZW5kcmUgc2V1bGVtZW50IHNpIG9uIGVzdCBpbnTDqXJlc3PDqSBwYXIgbGVzIGzDqWdpc2xhdHVyZXNcbiAgICAgIC8vIHByw6ljw6lkZW50ZXMuXG4gICAgICBmaWxlbmFtZTogXCJBTU80MF9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzX2RpdmlzZXNfWFZJLmpzb25cIixcbiAgICAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5TZWl6ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1rZGlyU3luYyh0YXJnZXREaXIpXG4gICAgICAgIGlmIChmcy5wYXRoRXhpc3RzU3luYyhwYXRoLmpvaW4oZGF0YURpciwgXCJhY3RldXJcIikpKSB7XG4gICAgICAgICAgLy8gTm90ZTsgTGUgcsOpcGVydG9pcmUgYWN0ZXVyIHBldXQgZGlzcGFyYcOudHJlIGVuIGZpbiBkZSBsw6lnaXNsYXR1cmVcbiAgICAgICAgICAvLyBxdWFuZCBsZXMgbWFuZGF0cyBkZXMgZMOpcHV0w6lzIHMnaW50ZXJyb21wZW50LlxuICAgICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwiYWN0ZXVyXCIpLFxuICAgICAgICAgICAgcGF0aC5qb2luKHRhcmdldERpciwgXCJhY3RldXJcIiksXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcIm9yZ2FuZVwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcIm9yZ2FuZVwiKSxcbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkTDqXB1dMOpcyBhY3RpZnMgZXQgb3JnYW5lcyBkZSBsYSBYVknDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTYvYW1vL2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXNfZGl2aXNlcy9BTU80MF9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzX2RpdmlzZXMuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIEFNTzQwIChYVilcbiAgICAgIC8vXG4gICAgICAvLyBDb250aWVudCBsZXMgZMOpcHV0w6lzIGFjdGlmcyAobGVzIG3Dqm1lcyBxdSdBTU8yMClcbiAgICAgIC8vICogYXZlYyBwcmVzcXVlIHRvdXMgbGV1cnMgbWFuZGF0c1xuICAgICAgLy8gKiB5IGNvbXByaXMgbGVzIG1hbmRhdHMgYWNoZXbDqXMgZXQgY2V1eCBkZXMgbMOpZ2lzbGF0dXJlcyBwcsOpY8OpZGVudGVzXG4gICAgICAvLyAqIHkgY29tcHJpcyBsZXVycyBwYXJ0aXMgcG9saXRpcXVlcyBwcsOpY8OpZGVudHNcbiAgICAgIC8vICogbWFpcyBzYW5zIGxldXIgcGFydGkgcG9saXRpcXVlIGFjdHVlbCAodHlwZU9yZ2FuZTogXCJQQVJQT0xcIilcbiAgICAgIC8vXG4gICAgICAvLyBDb250aWVudCBiZWF1Y291cCBkJ29yZ2FuZXMgcsOpZsOpcmVuY8OpcywgeSBjb21wcmlzIGNldXggZGVzIGzDqWdpc2xhdHVyZXNcbiAgICAgIC8vIHByw6ljw6lkZW50ZXNcbiAgICAgIC8vICogbWFpcyBpbCBtYW5xdWUgbGUgeHNpVHlwZSBkZXMgb3JnYW5lc1xuICAgICAgLy8gKiBuZSBjb250aWVudCBwYXMgbGVzIG9yZ2FuZXMgc8OpbmF0b3JpYXV4XG4gICAgICAvLyAqIG5lIGNvbnRpZW50IHBhcyBsZXMgbWluaXN0w6hyZXNcbiAgICAgIC8vICogbmUgY29udGllbnQgcGFzIGxhIFByw6lzaWRlbmNlIGRlIGxhIFLDqXB1YmxpcXVlXG4gICAgICAvLyAqIG5lIGNvbnRpZW50IHBhcyBsZSBDb25zZWlsIGNvbnN0aXR1dGlvbm5lbFxuICAgICAgLy9cbiAgICAgIC8vIFBvdXIgbGVzIGFjdGV1cnMsIGNlIGTDqXDDtHQgZXN0IHVuIHNvdXMtZW5zZW1ibGUgc3RyaWN0IGRlIEFNTzMwIDpcbiAgICAgIC8vIElsIGEgbW9pbnMgZCdhY3RldXJzIGV0IGlsIHNvbnQgbW9pbnMgY29tcGxldHMuXG4gICAgICAvL1xuICAgICAgLy8gUG91ciBsZXMgb3JnYW5lcyA6XG4gICAgICAvLyBRdWFuZCBsJ29yZ2FuZSBlc3QgYXVzc2kgcHLDqXNlbnQgZGFucyBBTU8zMCwgaWwgdmF1dCBtaWV1eCBwcmVuZHJlIGNlbHVpXG4gICAgICAvLyBkJ0FNTzMwLCBjYXIgaWwgY29udGllbnQgbGUgeHNpVHlwZSAoYydlc3QgbGEgc2V1bGUgZGlmZsOpcmVuY2Ugc2VtYmxlLXQtaSkuXG4gICAgICAvLyBTaW5vbiwgaWwgZmF1dCBsZSBwcmVuZHJlIHNldWxlbWVudCBzaSBvbiBlc3QgaW50w6lyZXNzw6kgcGFyIGxlcyBsw6lnaXNsYXR1cmVzXG4gICAgICAvLyBwcsOpY8OpZGVudGVzLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PNDBfZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lc19kaXZpc2VzX1hWLmpzb25cIixcbiAgICAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWluemUsXG4gICAgICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAgICAgfVxuICAgICAgICBmcy5ta2RpclN5bmModGFyZ2V0RGlyKVxuICAgICAgICBmcy5tb3ZlU3luYyhcbiAgICAgICAgICBwYXRoLmpvaW4oZGF0YURpciwgXCJhY3RldXJcIiksXG4gICAgICAgICAgcGF0aC5qb2luKHRhcmdldERpciwgXCJhY3RldXJcIiksXG4gICAgICAgIClcbiAgICAgICAgZnMubW92ZVN5bmMoXG4gICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwib3JnYW5lXCIpLFxuICAgICAgICAgIHBhdGguam9pbih0YXJnZXREaXIsIFwib3JnYW5lXCIpLFxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiRMOpcHV0w6lzIGFjdGlmcyBldCBvcmdhbmVzIGRlIGxhIFhWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE1L2Ftby9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzX2RpdmlzZXMvQU1PNDBfZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lc19kaXZpc2VzX1hWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBBTU81MCAoWFZJKVxuICAgICAgLy9cbiAgICAgIC8vIEF0dGVudGlvbiwgY2UgZmljaGllciBuJ2VzdCBwYXMgbWlzIMOgIGpvdXIgcsOpZ3VsacOocmVtZW50ICFcbiAgICAgIC8vXG4gICAgICAvLyBQb3VyIGxlcyBhY3RldXJzIDpcbiAgICAgIC8vICogYydlc3QgdW4gc291cyBlbnNlbWJsZSBvYnNvbMOodGUgZCdBTU8zMFxuICAgICAgLy8gKiBpbCBtYW5xdWUgbGVzIHhzaVR5cGUgYXV4IG1hbmRhdHNcbiAgICAgIC8vXG4gICAgICAvLyBQb3VyIGxlcyBvcmdhbmVzIDpcbiAgICAgIC8vICogYydlc3QgdW4gc291cyBlbnNlbWJsZSBvYnNvbMOodGUgZCdBTU8zMFxuICAgICAgLy8gKiBpbCBtYW5xdWUgbGVzIHhzaVR5cGVcbiAgICAgIC8vXG4gICAgICAvLyBDZSBmaWNoaWVyIG4nYXBwb3J0ZSBkb25jIGFic29sdW1lbnQgcmllbiBwYXIgcmFwcG9ydCDDoCBsJ0FNTzMwLFxuICAgICAgLy8gZG9udCBpbCBlc3QgdW4gc291cyBlbnNlbWJsZSBvYnNvbMOodGUuXG4gICAgICBmaWxlbmFtZTogXCJBTU81MF9hY3RldXJzX21hbmRhdHNfb3JnYW5lc19kaXZpc2VzX1hWSS5qc29uXCIsXG4gICAgICBpZ25vcmVGb3JXZWI6IHRydWUsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuU2VpemUsXG4gICAgICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAgICAgfVxuICAgICAgICBmcy5ta2RpclN5bmModGFyZ2V0RGlyKVxuICAgICAgICBmcy5tb3ZlU3luYyhcbiAgICAgICAgICBwYXRoLmpvaW4oZGF0YURpciwgXCJtYW5kYXRcIiksXG4gICAgICAgICAgcGF0aC5qb2luKHRhcmdldERpciwgXCJtYW5kYXRcIiksXG4gICAgICAgIClcbiAgICAgICAgZnMubW92ZVN5bmMoXG4gICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwiYWN0ZXVyXCIpLFxuICAgICAgICAgIHBhdGguam9pbih0YXJnZXREaXIsIFwiYWN0ZXVyXCIpLFxuICAgICAgICApXG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcIm9yZ2FuZVwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcIm9yZ2FuZVwiKSxcbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOlxuICAgICAgICBcIkFjdGV1cnMsIG1hbmRhdHMgZXQgb3JnYW5lcyBkZSBsYSBYVknDqG1lIGzDqWdpc2xhdHVyZSAoZmljaGllcnMgc8OpcGFyw6lzLCB5IGNvbXByaXMgbWFuZGF0cylcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE2L2Ftby9hY3RldXJzX21hbmRhdHNfb3JnYW5lc19kaXZpc2VzL0FNTzUwX2FjdGV1cnNfbWFuZGF0c19vcmdhbmVzX2RpdmlzZXMuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIEFNTzUwIChYVilcbiAgICAgIC8vXG4gICAgICAvLyBBdHRlbnRpb24sIGNlIGZpY2hpZXIgbidlc3QgcGFzIG1pcyDDoCBqb3VyIHLDqWd1bGnDqHJlbWVudCAhXG4gICAgICAvL1xuICAgICAgLy8gUG91ciBsZXMgYWN0ZXVycyA6XG4gICAgICAvLyAqIGMnZXN0IHVuIHNvdXMgZW5zZW1ibGUgb2Jzb2zDqHRlIGQnQU1PMzBcbiAgICAgIC8vICogaWwgbWFucXVlIGxlcyB4c2lUeXBlIGF1eCBtYW5kYXRzXG4gICAgICAvL1xuICAgICAgLy8gUG91ciBsZXMgb3JnYW5lcyA6XG4gICAgICAvLyAqIGMnZXN0IHVuIHNvdXMgZW5zZW1ibGUgb2Jzb2zDqHRlIGQnQU1PMzBcbiAgICAgIC8vICogaWwgbWFucXVlIGxlcyB4c2lUeXBlXG4gICAgICAvL1xuICAgICAgLy8gQ2UgZmljaGllciBuJ2FwcG9ydGUgZG9uYyBhYnNvbHVtZW50IHJpZW4gcGFyIHJhcHBvcnQgw6AgbCdBTU8zMCxcbiAgICAgIC8vIGRvbnQgaWwgZXN0IHVuIHNvdXMgZW5zZW1ibGUgb2Jzb2zDqHRlLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PNTBfYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXNfZGl2aXNlc19YVi5qc29uXCIsXG4gICAgICBpZ25vcmVGb3JXZWI6IHRydWUsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuUXVpbnplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubWtkaXJTeW5jKHRhcmdldERpcilcbiAgICAgICAgZnMubW92ZVN5bmMoXG4gICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwibWFuZGF0XCIpLFxuICAgICAgICAgIHBhdGguam9pbih0YXJnZXREaXIsIFwibWFuZGF0XCIpLFxuICAgICAgICApXG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcImFjdGV1clwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcImFjdGV1clwiKSxcbiAgICAgICAgKVxuICAgICAgICBmcy5tb3ZlU3luYyhcbiAgICAgICAgICBwYXRoLmpvaW4oZGF0YURpciwgXCJvcmdhbmVcIiksXG4gICAgICAgICAgcGF0aC5qb2luKHRhcmdldERpciwgXCJvcmdhbmVcIiksXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTpcbiAgICAgICAgXCJBY3RldXJzLCBtYW5kYXRzIGV0IG9yZ2FuZXMgZGUgbGEgWFbDqG1lIGzDqWdpc2xhdHVyZSAoZmljaGllcnMgc8OpcGFyw6lzLCB5IGNvbXByaXMgbWFuZGF0cylcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE1L2Ftby9hY3RldXJzX21hbmRhdHNfb3JnYW5lc19kaXZpc2VzL0FNTzUwX2FjdGV1cnNfbWFuZGF0c19vcmdhbmVzX2RpdmlzZXNfWFYuanNvbi56aXBcIixcbiAgICB9LFxuICBdLFxuICBhZ2VuZGFzOiBbXG4gICAge1xuICAgICAgZmlsZW5hbWU6IFwiQWdlbmRhX1hWSS5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuU2VpemUsXG4gICAgICByZXBhaXJaaXA6IHJlcGFpckZvckpzb25TdWJkaXJlY3RvcnksXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJBZ2VuZGEgZGUgbGEgWFZJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE2L3ZwL3JldW5pb25zL0FnZW5kYS5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgZmlsZW5hbWU6IFwiQWdlbmRhX1hWLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWluemUsXG4gICAgICByZXBhaXJaaXA6IHJlcGFpckZvckpzb25TdWJkaXJlY3RvcnksXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJBZ2VuZGEgZGUgbGEgWFbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTUvdnAvcmV1bmlvbnMvQWdlbmRhX1hWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJBZ2VuZGFfWElWLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWF0b3J6ZSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlLFxuICAgICAgdGl0bGU6IFwiQWdlbmRhIGRlIGxhIFhJVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNC92cC9yZXVuaW9ucy9BZ2VuZGFfWElWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgXSxcbiAgYW1lbmRlbWVudHM6IFtcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJBbWVuZGVtZW50c19YVkkuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiByZXBhaXJGb3JKc29uU3ViZGlyZWN0b3J5LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiQW1lbmRlbWVudHMgZGUgbGEgWFZJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE2L2xvaS9hbWVuZGVtZW50c19kaXZfbGVnaXMvQW1lbmRlbWVudHMuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkFtZW5kZW1lbnRzX1hWLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWluemUsXG4gICAgICByZXBhaXJaaXA6IHJlcGFpckZvckpzb25TdWJkaXJlY3RvcnksXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJBbWVuZGVtZW50cyBkZSBsYSBYVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNS9sb2kvYW1lbmRlbWVudHNfbGVnaXMvQW1lbmRlbWVudHNfWFYuanNvbi56aXBcIixcbiAgICB9LFxuICAgIC8vIHtcbiAgICAvLyAgIGZpbGVuYW1lOiBcIkFtZW5kZW1lbnRzX1hJVi5qc29uXCIsXG4gICAgLy8gICBpZ25vcmVGb3JXZWI6IHRydWUsXG4gICAgLy8gICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuUXVhdG9yemUsXG4gICAgLy8gICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2luZ2xlRmlsZSxcbiAgICAvLyAgIHRpdGxlOiBcIkFtZW5kZW1lbnRzIGRlIGxhIFhJVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgLy8gICB1cmw6XG4gICAgLy8gICAgIFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNC9sb2kvYW1lbmRlbWVudHNfbGVnaXNfWElWL0FtZW5kZW1lbnRzX1hJVi5qc29uLnppcFwiLFxuICAgIC8vIH0sXG4gIF0sXG4gIGRvc3NpZXJzTGVnaXNsYXRpZnM6IFtcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJEb3NzaWVyc19MZWdpc2xhdGlmc19YVkkuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiByZXBhaXJGb3JKc29uU3ViZGlyZWN0b3J5LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiRG9zc2llcnMgbMOpZ2lzbGF0aWZzIGRlIGxhIFhWScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9sb2kvZG9zc2llcnNfbGVnaXNsYXRpZnMvRG9zc2llcnNfTGVnaXNsYXRpZnMuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkRvc3NpZXJzX0xlZ2lzbGF0aWZzX1hWLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWluemUsXG4gICAgICByZXBhaXJaaXA6IHJlcGFpckZvckpzb25TdWJkaXJlY3RvcnksXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJEb3NzaWVycyBsw6lnaXNsYXRpZnMgZGUgbGEgWFbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTUvbG9pL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzL0Rvc3NpZXJzX0xlZ2lzbGF0aWZzX1hWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJEb3NzaWVyc19MZWdpc2xhdGlmc19YSVYuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1YXRvcnplLFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGUsXG4gICAgICB0aXRsZTogXCJEb3NzaWVycyBsw6lnaXNsYXRpZnMgZGUgbGEgWElWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE0L2xvaS9kb3NzaWVyc19sZWdpc2xhdGlmcy9Eb3NzaWVyc19MZWdpc2xhdGlmc19YSVYuanNvbi56aXBcIixcbiAgICB9LFxuICBdLFxuICBzY3J1dGluczogW1xuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIlNjcnV0aW5zX1hWSS5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuU2VpemUsXG4gICAgICByZXBhaXJaaXA6IHJlcGFpckZvckpzb25TdWJkaXJlY3RvcnksXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJTY3J1dGlucyBkZSBsYSBYVknDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTYvbG9pL3NjcnV0aW5zL1NjcnV0aW5zLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJTY3J1dGluc19YVi5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuUXVpbnplLFxuICAgICAgcmVwYWlyWmlwOiByZXBhaXJGb3JKc29uU3ViZGlyZWN0b3J5LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiU2NydXRpbnMgZGUgbGEgWFbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTUvbG9pL3NjcnV0aW5zL1NjcnV0aW5zX1hWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJTY3J1dGluc19YSVYuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1YXRvcnplLFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGUsXG4gICAgICB0aXRsZTogXCJTY3J1dGlucyBkZSBsYSBYSVbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTQvbG9pL3NjcnV0aW5zL1NjcnV0aW5zX1hJVi5qc29uLnppcFwiLFxuICAgIH0sXG4gIF0sXG4gIHF1ZXN0aW9uczogW1xuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIlF1ZXN0aW9uc19lY3JpdGVzX1hWSS5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuU2VpemUsXG4gICAgICByZXBhaXJaaXA6IHJlcGFpckZvckpzb25TdWJkaXJlY3RvcnksXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJRdWVzdGlvbnMgw6ljcml0ZXMgZGUgbGEgWFZJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE2L3F1ZXN0aW9ucy9xdWVzdGlvbnNfZWNyaXRlcy9RdWVzdGlvbnNfZWNyaXRlcy5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgZmlsZW5hbWU6IFwiUXVlc3Rpb25zX2dvdXZlcm5lbWVudF9YVkkuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiByZXBhaXJGb3JKc29uU3ViZGlyZWN0b3J5LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiUXVlc3Rpb25zIGF1IGdvdXZlcm5lbWVudCBkZSBsYSBYVknDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTYvcXVlc3Rpb25zL3F1ZXN0aW9uc19nb3V2ZXJuZW1lbnQvUXVlc3Rpb25zX2dvdXZlcm5lbWVudC5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgZmlsZW5hbWU6IFwiUXVlc3Rpb25zX29yYWxlc19YVkkuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiByZXBhaXJGb3JKc29uU3ViZGlyZWN0b3J5LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiUXVlc3Rpb25zIG9yYWxlcyBzYW5zIGTDqWJhdHMgZGUgbGEgWFZJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE2L3F1ZXN0aW9ucy9xdWVzdGlvbnNfb3JhbGVzX3NhbnNfZGViYXQvUXVlc3Rpb25zX29yYWxlc19zYW5zX2RlYmF0Lmpzb24uemlwXCIsXG4gICAgfSxcbiAgXSxcbiAgY29tcHRlc1JlbmR1c1NlYW5jZXM6IFtcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJDb21wdGVzX1JlbmR1c19TZWFuY2VzX1hWSS54bWxcIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5TZWl6ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1vdmVTeW5jKHBhdGguam9pbihkYXRhRGlyLCBcInhtbFwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkNvbXB0ZXMgcmVuZHVzIGRlcyBzw6lhbmNlcyBwdWJsaXF1ZXMgZGUgbGEgWFZJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwczovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi92cC9zeWNlcm9uYnJ1dC9zeXNlcm9uLnhtbC56aXBcIixcbiAgICB9LFxuICBdLFxufVxuXG5jb25zdCBkaXJlY3Rvcnkyc2NoZW1hOiBhbnkgPSB7XG4gIFwiLipBZ2VuZGFfLipcIjogXCJhZ2VuZGFcIixcbiAgXCIuKlNjcnV0aW5zXy4qXCI6IFwic2NydXRpblwiLFxuICBcIi4qUXVlc3Rpb25zXy4qXCI6IFwicXVlc3Rpb25cIixcbiAgXCIuKkFtZW5kZW1lbnRzXy4qXCI6IFwiYW1lbmRlbWVudFwiLFxuICBcIi4qRG9zc2llcnNfTGVnaXNsYXRpZnNfLiovZG9jdW1lbnRzXCI6IFwiZG9jdW1lbnRcIixcbiAgXCIuKkRvc3NpZXJzX0xlZ2lzbGF0aWZzXy4qL2Rvc3NpZXJzXCI6IFwiZG9zc2llclwiLFxuICBcIi4qYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXMvb3JnYW5lc1wiOiBcIm9yZ2FuZVwiLFxuICBcIi4qYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXMvYWN0ZXVyc1wiOiBcImFjdGV1clwiLFxuICBcIi4qQU1PMzBfdG91c19hY3RldXJzX3RvdXNfbWFuZGF0c190b3VzX29yZ2FuZXNfaGlzdG9yaXF1ZS4qL29yZ2FuZXNcIjpcbiAgICBcIm9yZ2FuZVwiLFxuICBcIi4qQU1PMzBfdG91c19hY3RldXJzX3RvdXNfbWFuZGF0c190b3VzX29yZ2FuZXNfaGlzdG9yaXF1ZS4qL2FjdGV1cnNcIjpcbiAgICBcImFjdGV1clwiLFxuICBcIi4qQ29tcHRlc19SZW5kdXNfU2VhbmNlc18uKlwiOiBcImRlYmF0XCIsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREYXRhc2V0cygpOiBhbnkge1xuICByZXR1cm4gW1xuICAgIFwiQWdlbmRhX1hJVlwiLFxuICAgIFwiQWdlbmRhX1hWXCIsXG4gICAgXCJBZ2VuZGFfWFZJXCIsXG4gICAgXCJTY3J1dGluc19YSVZcIixcbiAgICBcIlNjcnV0aW5zX1hWXCIsXG4gICAgXCJTY3J1dGluc19YVklcIixcbiAgICBcIlF1ZXN0aW9uc19FY3JpdGVzX1hWSVwiLFxuICAgIFwiUXVlc3Rpb25zX0dvdXZlcm5lbWVudF9YVklcIixcbiAgICBcIkFtZW5kZW1lbnRzX1hJVlwiLFxuICAgIFwiQW1lbmRlbWVudHNfWFZcIixcbiAgICBcIkFtZW5kZW1lbnRzX1hWSVwiLFxuICAgIFwiRG9zc2llcnNfTGVnaXNsYXRpZnNfWElWXCIsXG4gICAgXCJEb3NzaWVyc19MZWdpc2xhdGlmc19YVlwiLFxuICAgIFwiRG9zc2llcnNfTGVnaXNsYXRpZnNfWFZJXCIsXG4gICAgXCJBTU8zMF90b3VzX2FjdGV1cnNfdG91c19tYW5kYXRzX3RvdXNfb3JnYW5lc19oaXN0b3JpcXVlXCIsXG4gICAgXCJhY3RldXJzX21hbmRhdHNfb3JnYW5lc1wiLFxuICAgIFwiQ29tcHRlc19SZW5kdXNfU2VhbmNlc19YVklcIixcbiAgXVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWREYXRhc2V0KGRpcjogYW55KTogYW55IHtcbiAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGdldERhdGFzZXRzKCkpIHtcbiAgICBpZiAoZGlyLmluY2x1ZGVzKGRhdGFzZXQpKSByZXR1cm4gdHJ1ZVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NoZW1hcygpOiBhbnkge1xuICByZXR1cm4gT2JqZWN0LnZhbHVlcyhkaXJlY3Rvcnkyc2NoZW1hKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0YXNldERpcmVjdG9yeVNjaGVtYShkYXRhc2V0OiBzdHJpbmcpOiBhbnkge1xuICBsZXQgZGlyZWN0b3JpZXM6IGFueVxuICBpZiAoZGF0YXNldC5pbmNsdWRlcyhcIkRvc3NpZXJzX0xlZ2lzbGF0aWZzX1wiKSkge1xuICAgIGRpcmVjdG9yaWVzID0gW2Ake2RhdGFzZXR9L2RvY3VtZW50c2AsIGAke2RhdGFzZXR9L2Rvc3NpZXJzYF1cbiAgfSBlbHNlIGlmIChcbiAgICBkYXRhc2V0LmluY2x1ZGVzKFwiYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXNcIikgfHxcbiAgICBkYXRhc2V0LmluY2x1ZGVzKFwiQU1PMzBfdG91c19hY3RldXJzX3RvdXNfbWFuZGF0c190b3VzX29yZ2FuZXNfaGlzdG9yaXF1ZVwiKVxuICApIHtcbiAgICBkaXJlY3RvcmllcyA9IFtgJHtkYXRhc2V0fS9vcmdhbmVzYCwgYCR7ZGF0YXNldH0vYWN0ZXVyc2BdXG4gIH0gZWxzZSB7XG4gICAgZGlyZWN0b3JpZXMgPSBbZGF0YXNldF1cbiAgfVxuXG4gIGxldCByZXN1bHRzID0gW11cbiAgZm9yIChjb25zdCBkaXJlY3Rvcnkgb2YgZGlyZWN0b3JpZXMpIHtcbiAgICBmb3IgKGNvbnN0IHJlIG9mIE9iamVjdC5rZXlzKGRpcmVjdG9yeTJzY2hlbWEpKSB7XG4gICAgICBpZiAobmV3IFJlZ0V4cChyZSkuZXhlYyhkaXJlY3RvcnkpKVxuICAgICAgICByZXN1bHRzLnB1c2goW2Ake2RpcmVjdG9yeX0vKiovKi5qc29uYCwgZGlyZWN0b3J5MnNjaGVtYVtyZV1dKVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0c1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsZURhdGFzZXRVcmwoZmlsZW5hbWU6IHN0cmluZyk6IFtzdHJpbmcsIHN0cmluZ10gfCBudWxsIHtcbiAgY29uc3QgcmUgPSBcIl4uKi8oLiopX25ldHRveWUvKC4qKVwiXG4gIGNvbnN0IG1hdGNoID0gbmV3IFJlZ0V4cChyZSkuZXhlYyhmaWxlbmFtZSlcbiAgaWYgKG1hdGNoID09IG51bGwpIHJldHVybiBudWxsXG4gIGxldCBbZGF0YXNldCwgZmlsZV0gPSBbbWF0Y2hbMV0sIG1hdGNoWzJdXVxuICBpZiAoZGF0YXNldCA9PSBcIkFNTzMwX3RvdXNfYWN0ZXVyc190b3VzX21hbmRhdHNfdG91c19vcmdhbmVzX2hpc3RvcmlxdWVcIilcbiAgICBkYXRhc2V0ID0gXCJhY3RldXJzX21hbmRhdHNfb3JnYW5lc1wiXG4gIHJldHVybiBbZGF0YXNldCwgZmlsZV1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZVcHN0cmVhbShmaWxlbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgZGF0YXNldFVybCA9IGZpbGVEYXRhc2V0VXJsKGZpbGVuYW1lKVxuICBpZiAoZGF0YXNldFVybCA9PSBudWxsKSByZXR1cm4gZmlsZW5hbWVcbiAgY29uc3QgW2RhdGFzZXQsIGZpbGVdID0gZGF0YXNldFVybFxuICBjb25zdCBzdW0gPSBjcmVhdGVIYXNoKFwic2hhMVwiKS51cGRhdGUoZmlsZSkuZGlnZXN0KFwiaGV4XCIpLnRvU3RyaW5nKClcbiAgcmV0dXJuIGBbJHtmaWxlfV0oaHR0cHM6Ly9naXQuZW4tcm9vdC5vcmcvdHJpY290ZXVzZXMvZGF0YS50cmljb3RldXNlcy5mci8ke2RhdGFzZXR9Ly0vY29tcGFyZS91cHN0cmVhbS4uLm1hc3RlciMke3N1bX0pYFxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFzdGVyVXJsKGZpbGVuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBkYXRhc2V0VXJsID0gZmlsZURhdGFzZXRVcmwoZmlsZW5hbWUpXG4gIGlmIChkYXRhc2V0VXJsID09IG51bGwpIHJldHVybiBmaWxlbmFtZVxuICBjb25zdCBbZGF0YXNldCwgZmlsZV0gPSBkYXRhc2V0VXJsXG4gIHJldHVybiBgWyR7ZmlsZX1dKGh0dHBzOi8vZ2l0LmVuLXJvb3Qub3JnL3RyaWNvdGV1c2VzL2RhdGEudHJpY290ZXVzZXMuZnIvJHtkYXRhc2V0fS8tL3RyZWUvbWFzdGVyLyR7ZmlsZX0pYFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyQnlMZWdpc2xhdHVyZShcbiAgZGF0YXNldHM6IERhdGFzZXRzLFxuICBsZWdpc2xhdHVyZTogYW55LFxuKTogRGF0YXNldHMge1xuICAvLyBXaGVuIGEgZ2l2ZW4gbGVnaXNsYXR1cmUgaXMgMCwgaXQgaXMgdGhlIHNhbWUgYXMgZ2l2aW5nIG5vIGxlZ2lzbGF0dXJlOlxuICAvLyBJdCBtZWFucyBcImV2ZXJ5IGxlZ2lzbGF0dXJlc1wiLlxuICBpZiAobGVnaXNsYXR1cmUgIT09IDAgJiYgbGVnaXNsYXR1cmUgIT09IHVuZGVmaW5lZCkge1xuICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhkYXRhc2V0cykpIHtcbiAgICAgIGRhdGFzZXRzW2tleSBhcyBrZXlvZiB0eXBlb2YgZGF0YXNldHNdID0gdmFsdWUuZmlsdGVyKFxuICAgICAgICAoZGF0YXNldDogeyBsZWdpc2xhdHVyZTogYW55IH0pID0+XG4gICAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSA9PT0gTGVnaXNsYXR1cmUuQWxsIHx8XG4gICAgICAgICAgbGVnaXNsYXR1cmUgPT09IGRhdGFzZXQubGVnaXNsYXR1cmUsXG4gICAgICApXG4gICAgfVxuICB9XG4gIHJldHVybiBkYXRhc2V0c1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW5hYmxlZERhdGFzZXRzKGNhdGVnb3JpZXM6IGFueSk6IEVuYWJsZWREYXRhc2V0cyB7XG4gIGNhdGVnb3JpZXMubWFwKChkYXRhc2V0TmFtZTogc3RyaW5nKSA9PlxuICAgIGFzc2VydC5ub3RTdHJpY3RFcXVhbChcbiAgICAgIChFbmFibGVkRGF0YXNldHMgYXMgYW55IGFzIHsgW25hbWU6IHN0cmluZ106IEVuYWJsZWREYXRhc2V0cyB9KVtcbiAgICAgICAgZGF0YXNldE5hbWVcbiAgICAgIF0sXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBgVW5rbm93biBuYW1lIG9mIGRhdGFzZXQ6ICR7ZGF0YXNldE5hbWV9YCxcbiAgICApLFxuICApXG5cbiAgcmV0dXJuIGNhdGVnb3JpZXMucmVkdWNlKFxuICAgIChlbmFibGVkRGF0YXNldHM6IEVuYWJsZWREYXRhc2V0cywgZGF0YXNldE5hbWU6IHN0cmluZyk6IEVuYWJsZWREYXRhc2V0cyA9PlxuICAgICAgZW5hYmxlZERhdGFzZXRzIHxcbiAgICAgIChFbmFibGVkRGF0YXNldHMgYXMgYW55IGFzIHsgW25hbWU6IHN0cmluZ106IEVuYWJsZWREYXRhc2V0cyB9KVtcbiAgICAgICAgZGF0YXNldE5hbWVcbiAgICAgIF0sXG4gICAgRW5hYmxlZERhdGFzZXRzLk5vbmUsXG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsUUFBQSxHQUFBRCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUksS0FBQSxHQUFBRixzQkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQUssYUFBQSxHQUFBTCxPQUFBO0FBQWtELFNBQUFFLHVCQUFBSSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsZ0JBQUFBLENBQUE7QUFBQSxTQUFBRSxlQUFBQyxDQUFBLEVBQUFILENBQUEsV0FBQUksZUFBQSxDQUFBRCxDQUFBLEtBQUFFLHFCQUFBLENBQUFGLENBQUEsRUFBQUgsQ0FBQSxLQUFBTSwyQkFBQSxDQUFBSCxDQUFBLEVBQUFILENBQUEsS0FBQU8sZ0JBQUE7QUFBQSxTQUFBQSxpQkFBQSxjQUFBQyxTQUFBO0FBQUEsU0FBQUgsc0JBQUFGLENBQUEsRUFBQU0sQ0FBQSxRQUFBQyxDQUFBLFdBQUFQLENBQUEsZ0NBQUFRLE1BQUEsSUFBQVIsQ0FBQSxDQUFBUSxNQUFBLENBQUFDLFFBQUEsS0FBQVQsQ0FBQSw0QkFBQU8sQ0FBQSxRQUFBVixDQUFBLEVBQUFhLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsT0FBQUMsQ0FBQSxPQUFBQyxDQUFBLGlCQUFBSixDQUFBLElBQUFKLENBQUEsR0FBQUEsQ0FBQSxDQUFBUyxJQUFBLENBQUFoQixDQUFBLEdBQUFpQixJQUFBLFFBQUFYLENBQUEsUUFBQVksTUFBQSxDQUFBWCxDQUFBLE1BQUFBLENBQUEsVUFBQU8sQ0FB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
|
|
854
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY3J5cHRvIiwicmVxdWlyZSIsIl9hc3NlcnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2ZzRXh0cmEiLCJfcGF0aCIsIl9sZWdpc2xhdHVyZXMiLCJfcHJvY2Vzc190ZXh0ZXNfbG9pX2RhdGFzZXQiLCJlIiwiX19lc01vZHVsZSIsIl9zbGljZWRUb0FycmF5IiwiciIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJUeXBlRXJyb3IiLCJsIiwidCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwibiIsImkiLCJ1IiwiYSIsImYiLCJvIiwiY2FsbCIsIm5leHQiLCJPYmplY3QiLCJkb25lIiwicHVzaCIsInZhbHVlIiwibGVuZ3RoIiwiQXJyYXkiLCJpc0FycmF5IiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJfbiIsIkYiLCJzIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJEYXRhc2V0U3RydWN0dXJlIiwiZXhwb3J0cyIsIkVuYWJsZWREYXRhc2V0cyIsInJlcGFpckZvckpzb25TdWJkaXJlY3RvcnkiLCJkYXRhc2V0IiwiZGF0YURpciIsInRhcmdldERpciIsInBhdGgiLCJqb2luIiwiZmlsZW5hbWUiLCJmcyIsImV4aXN0c1N5bmMiLCJyZW1vdmVTeW5jIiwibW92ZVN5bmMiLCJta2RpclN5bmMiLCJkYXRhc2V0cyIsImFjdGV1cnNFdE9yZ2FuZXMiLCJpZ25vcmVGb3JXZWIiLCJsZWdpc2xhdHVyZSIsIkxlZ2lzbGF0dXJlIiwiRGl4U2VwdCIsInJlcGFpclppcCIsInN0cnVjdHVyZSIsIlNlZ21lbnRlZEZpbGVzIiwidGl0bGUiLCJ1cmwiLCJTZWl6ZSIsIlF1aW56ZSIsIlF1YXRvcnplIiwiU2luZ2xlRmlsZSIsIkFsbCIsInBhdGhFeGlzdHNTeW5jIiwiYWdlbmRhcyIsImFtZW5kZW1lbnRzIiwiZG9zc2llcnNMZWdpc2xhdGlmcyIsInNjcnV0aW5zIiwicXVlc3Rpb25zIiwiY29tcHRlc1JlbmR1c1NlYW5jZXMiLCJ0ZXh0ZXNMb2kiLCJkb3dubG9hZCIsInByb2Nlc3NUZXh0ZXNMb2lEYXRhc2V0IiwiZGlyZWN0b3J5MnNjaGVtYSIsImdldERhdGFzZXRzIiwidmFsaWREYXRhc2V0IiwiZGlyIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJpbmNsdWRlcyIsImVyciIsImdldFNjaGVtYXMiLCJ2YWx1ZXMiLCJkYXRhc2V0RGlyZWN0b3J5U2NoZW1hIiwiZGlyZWN0b3JpZXMiLCJjb25jYXQiLCJyZXN1bHRzIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsImRpcmVjdG9yeSIsIl9pIiwiX09iamVjdCRrZXlzIiwia2V5cyIsInJlIiwiUmVnRXhwIiwiZXhlYyIsImZpbGVEYXRhc2V0VXJsIiwibWF0Y2giLCJfcmVmIiwiZmlsZSIsImRpZmZVcHN0cmVhbSIsImRhdGFzZXRVcmwiLCJfZGF0YXNldFVybCIsInN1bSIsImNyZWF0ZUhhc2giLCJ1cGRhdGUiLCJkaWdlc3QiLCJtYXN0ZXJVcmwiLCJfZGF0YXNldFVybDIiLCJmaWx0ZXJCeUxlZ2lzbGF0dXJlIiwidW5kZWZpbmVkIiwiX2kyIiwiX09iamVjdCRlbnRyaWVzIiwiZW50cmllcyIsIl9PYmplY3QkZW50cmllcyRfaSIsImtleSIsImZpbHRlciIsImdldEVuYWJsZWREYXRhc2V0cyIsImNhdGVnb3JpZXMiLCJtYXAiLCJkYXRhc2V0TmFtZSIsImFzc2VydCIsIm5vdFN0cmljdEVxdWFsIiwicmVkdWNlIiwiZW5hYmxlZERhdGFzZXRzIiwiTm9uZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9kYXRhc2V0cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSBcImNyeXB0b1wiXG5pbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbmltcG9ydCB7IExlZ2lzbGF0dXJlIH0gZnJvbSBcIi4vdHlwZXMvbGVnaXNsYXR1cmVzXCJcbmltcG9ydCB7IHByb2Nlc3NUZXh0ZXNMb2lEYXRhc2V0IH0gZnJvbSBcIi4vc2NyaXB0cy9wcm9jZXNzX3RleHRlc19sb2lfZGF0YXNldFwiXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXNldCB7XG4gIGZpbGVuYW1lOiBzdHJpbmdcbiAgaWdub3JlRm9yV2ViPzogYm9vbGVhblxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmVcbiAgcmVwYWlyWmlwPzogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4gdm9pZFxuICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmVcbiAgdGl0bGU6IHN0cmluZ1xuICB1cmw/OiBzdHJpbmdcbiAgLyoqXG4gICAqIEFuIG9wdGlvbmFsIGZ1bmN0aW9uIHRvIGRvd25sb2FkIHRoZSBkZXNpcmVkIGRhdGFzZXQuXG4gICAqIEByZXR1cm5zIEEgcHJvbWlzZSB3aGljaCByZXNvbHZlcyBkYXRhIGRvd25sb2FkLlxuICAgKi9cbiAgZG93bmxvYWQ/OiAob3B0aW9ucz86IGFueSkgPT4gUHJvbWlzZTxudW1iZXIgfCB2b2lkPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFzZXRzIHtcbiAgYWN0ZXVyc0V0T3JnYW5lczogRGF0YXNldFtdXG4gIGFnZW5kYXM6IERhdGFzZXRbXVxuICBhbWVuZGVtZW50czogRGF0YXNldFtdXG4gIGRvc3NpZXJzTGVnaXNsYXRpZnM6IERhdGFzZXRbXVxuICBzY3J1dGluczogRGF0YXNldFtdXG4gIHF1ZXN0aW9uczogRGF0YXNldFtdXG4gIGNvbXB0ZXNSZW5kdXNTZWFuY2VzOiBEYXRhc2V0W11cbiAgdGV4dGVzTG9pOiBEYXRhc2V0W11cbn1cblxuZXhwb3J0IGVudW0gRGF0YXNldFN0cnVjdHVyZSB7XG4gIFNpbmdsZUZpbGUsXG4gIFNlZ21lbnRlZEZpbGVzLFxufVxuXG5leHBvcnQgZW51bSBFbmFibGVkRGF0YXNldHMge1xuICBOb25lID0gMCxcbiAgQWN0ZXVyc0V0T3JnYW5lcyA9IDEgPDwgMCxcbiAgQWdlbmRhcyA9IDEgPDwgMSxcbiAgQW1lbmRlbWVudHMgPSAxIDw8IDIsXG4gIERvc3NpZXJzTGVnaXNsYXRpZnMgPSAxIDw8IDMsXG4gIFBob3RvcyA9IDEgPDwgNCxcbiAgU2NydXRpbnMgPSAxIDw8IDUsXG4gIFF1ZXN0aW9ucyA9IDEgPDwgNixcbiAgQ29tcHRlc1JlbmR1c1NlYW5jZXMgPSAxIDw8IDcsXG4gIFRleHRlc0xvaSA9IDEgPDwgOCxcbiAgQWxsID0gQWN0ZXVyc0V0T3JnYW5lcyB8XG4gICAgQWdlbmRhcyB8XG4gICAgQW1lbmRlbWVudHMgfFxuICAgIERvc3NpZXJzTGVnaXNsYXRpZnMgfFxuICAgIFBob3RvcyB8XG4gICAgU2NydXRpbnMgfFxuICAgIFF1ZXN0aW9ucyB8XG4gICAgQ29tcHRlc1JlbmR1c1NlYW5jZXMgfFxuICAgIFRleHRlc0xvaSxcbn1cblxuLy8gVGhlIHppcCBmaWxlcyAobmFtZWQgTkFNRS5qc29uLnppcCkgdXN1YWxseSBjb250YWluIGEgc2luZ2xlIHN1YmZvbGRlciBuYW1lZCBcImpzb25cIlxuLy8gY29udGFpbmluZyB0aGUgYWN0dWFsIGNvbnRlbnRzXG4vLyBXZSdkIHJhdGhlciByZW5hbWUgdGhlIGZvbGRlciBOQU1FLmpzb25cbmZ1bmN0aW9uIHJlcGFpckZvckpzb25TdWJkaXJlY3RvcnkoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSB7XG4gIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gIH1cblxuICBpZiAoZnMuZXhpc3RzU3luYyhwYXRoLmpvaW4oZGF0YURpciwgXCJqc29uXCIpKSkge1xuICAgIGZzLm1vdmVTeW5jKHBhdGguam9pbihkYXRhRGlyLCBcImpzb25cIiksIHRhcmdldERpcilcbiAgfSBlbHNlIHtcbiAgICBmcy5ta2RpclN5bmModGFyZ2V0RGlyKVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBkYXRhc2V0czogRGF0YXNldHMgPSB7XG4gIGFjdGV1cnNFdE9yZ2FuZXM6IFtcbiAgICB7XG4gICAgICAvLyBBTU8xMCAoWFZJSSlcbiAgICAgIC8vXG4gICAgICAvLyBDb250aWVudCBsZXMgZMOpcHV0w6lzIGFjdGlmc1xuICAgICAgLy8gKiBhdmVjIHRvdXMgbGVzIG1hbmRhdHMgZW4gY291cnNcbiAgICAgIC8vICogeSBjb21wcmlzIGF2ZWMgbGV1ciBwYXJ0aSBwb2xpdGlxdWUgKHR5cGVPcmdhbmU6IFwiUEFSUE9MXCIpXG4gICAgICAvLyAqIG1haXMgc2FucyBsZXMgbWFuZGF0cyBhY2hldsOpcyAoeSBjb21wcmlzIGRhbnMgY2V0dGUgbMOpZ2lzbGF0dXJlKVxuICAgICAgLy9cbiAgICAgIC8vIE9yZ2FuZXMgOlxuICAgICAgLy8gKiBDb250aWVudCBzZXVsZW1lbnQgbGVzIG9yZ2FuZXMgY29ycmVzcG9uZGFudHMgYXV4IG1hbmRhdHMgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBsZSB4c2lUeXBlIGRlIGwnb3JnYW5lXG4gICAgICAvLyAqIGF2ZWMgZGVzIGNvbW1pc3Npb25zIHPDqW5hdG9yaWFsZXMgKHBlcm1hbmVudGVzIGV0IHNww6ljaWFsZXMpIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIGTDqWzDqWdhdGlvbnMgc8OpbmF0b3JpYWxlcyBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGRlcyBncm91cGVzIHPDqW5hdG9yaWF1eCBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGRlcyBtaW5pc3TDqHJlcyBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGxlcyBQcsOpc2lkZW5jZXMgZGUgbGEgUsOpcHVibGlxdWUgKHkgY29tcHJpcyBTYXJrb3p5KVxuICAgICAgLy8gKiBhdmVjIGxlIENvbnNlaWwgY29uc3RpdHV0aW9ubmVsXG4gICAgICAvL1xuICAgICAgLy8gQ2UgZmljaGllciBlc3QgdW4gc291cy1lbnNlbWJsZSDDoCB0b3VzIGxlcyBuaXZlYXV4IGR1IGZpY2hpZXIgQU1PMjBcbiAgICAgIC8vIChxdWkgZXN0IGx1aSBtw6ptZSB1biBzb3VzLWVuc2VtYmxlIGRlIGwnQU1PMzApLlxuICAgICAgLy8gSWwgbidhcHBvcnRlIGRvbmMgYWJzb2x1bWVudCByaWVuIHBhciByYXBwb3J0IMOgIEFNTzIwIG91IGwnQU1PMzAuXG4gICAgICBmaWxlbmFtZTogXCJBTU8xMF9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzX1hWSUkuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLkRpeFNlcHQsXG4gICAgICByZXBhaXJaaXA6IHJlcGFpckZvckpzb25TdWJkaXJlY3RvcnksXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJEw6lwdXTDqXMgYWN0aWZzIGV0IG9yZ2FuZXMgZGUgbGEgWFZJScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNy9hbW8vZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lcy9BTU8xMF9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBBTU8xMCAoWFZJKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IGxlcyBkw6lwdXTDqXMgYWN0aWZzXG4gICAgICAvLyAqIGF2ZWMgdG91cyBsZXMgbWFuZGF0cyBlbiBjb3Vyc1xuICAgICAgLy8gKiB5IGNvbXByaXMgYXZlYyBsZXVyIHBhcnRpIHBvbGl0aXF1ZSAodHlwZU9yZ2FuZTogXCJQQVJQT0xcIilcbiAgICAgIC8vICogbWFpcyBzYW5zIGxlcyBtYW5kYXRzIGFjaGV2w6lzICh5IGNvbXByaXMgZGFucyBjZXR0ZSBsw6lnaXNsYXR1cmUpXG4gICAgICAvL1xuICAgICAgLy8gT3JnYW5lcyA6XG4gICAgICAvLyAqIENvbnRpZW50IHNldWxlbWVudCBsZXMgb3JnYW5lcyBjb3JyZXNwb25kYW50cyBhdXggbWFuZGF0cyBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGxlIHhzaVR5cGUgZGUgbCdvcmdhbmVcbiAgICAgIC8vICogYXZlYyBkZXMgY29tbWlzc2lvbnMgc8OpbmF0b3JpYWxlcyAocGVybWFuZW50ZXMgZXQgc3DDqWNpYWxlcykgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgZMOpbMOpZ2F0aW9ucyBzw6luYXRvcmlhbGVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIGdyb3VwZXMgc8OpbmF0b3JpYXV4IGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIG1pbmlzdMOocmVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgbGVzIFByw6lzaWRlbmNlcyBkZSBsYSBSw6lwdWJsaXF1ZSAoeSBjb21wcmlzIFNhcmtvenkpXG4gICAgICAvLyAqIGF2ZWMgbGUgQ29uc2VpbCBjb25zdGl0dXRpb25uZWxcbiAgICAgIC8vXG4gICAgICAvLyBDZSBmaWNoaWVyIGVzdCB1biBzb3VzLWVuc2VtYmxlIMOgIHRvdXMgbGVzIG5pdmVhdXggZHUgZmljaGllciBBTU8yMFxuICAgICAgLy8gKHF1aSBlc3QgbHVpIG3Dqm1lIHVuIHNvdXMtZW5zZW1ibGUgZGUgbCdBTU8zMCkuXG4gICAgICAvLyBJbCBuJ2FwcG9ydGUgZG9uYyBhYnNvbHVtZW50IHJpZW4gcGFyIHJhcHBvcnQgw6AgQU1PMjAgb3UgbCdBTU8zMC5cbiAgICAgIGZpbGVuYW1lOiBcIkFNTzEwX2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXNfWFZJLmpzb25cIixcbiAgICAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5TZWl6ZSxcbiAgICAgIHJlcGFpclppcDogcmVwYWlyRm9ySnNvblN1YmRpcmVjdG9yeSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkTDqXB1dMOpcyBhY3RpZnMgZXQgb3JnYW5lcyBkZSBsYSBYVknDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTYvYW1vL2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXMvQU1PMTBfZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lcy5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQU1PMTAgKFhWKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IGxlcyBkw6lwdXTDqXMgYWN0aWZzXG4gICAgICAvLyAqIGF2ZWMgdG91cyBsZXMgbWFuZGF0cyBlbiBjb3Vyc1xuICAgICAgLy8gKiB5IGNvbXByaXMgYXZlYyBsZXVyIHBhcnRpIHBvbGl0aXF1ZSAodHlwZU9yZ2FuZTogXCJQQVJQT0xcIilcbiAgICAgIC8vICogbWFpcyBzYW5zIGxlcyBtYW5kYXRzIGFjaGV2w6lzICh5IGNvbXByaXMgZGFucyBjZXR0ZSBsw6lnaXNsYXR1cmUpXG4gICAgICAvL1xuICAgICAgLy8gT3JnYW5lcyA6XG4gICAgICAvLyAqIENvbnRpZW50IHNldWxlbWVudCBsZXMgb3JnYW5lcyBjb3JyZXNwb25kYW50cyBhdXggbWFuZGF0cyBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGxlIHhzaVR5cGUgZGUgbCdvcmdhbmVcbiAgICAgIC8vICogYXZlYyBkZXMgY29tbWlzc2lvbnMgc8OpbmF0b3JpYWxlcyAocGVybWFuZW50ZXMgZXQgc3DDqWNpYWxlcykgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgZMOpbMOpZ2F0aW9ucyBzw6luYXRvcmlhbGVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIGdyb3VwZXMgc8OpbmF0b3JpYXV4IGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIG1pbmlzdMOocmVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgbGVzIFByw6lzaWRlbmNlcyBkZSBsYSBSw6lwdWJsaXF1ZSAoeSBjb21wcmlzIFNhcmtvenkpXG4gICAgICAvLyAqIGF2ZWMgbGUgQ29uc2VpbCBjb25zdGl0dXRpb25uZWxcbiAgICAgIC8vXG4gICAgICAvLyBDZSBmaWNoaWVyIGVzdCB1biBzb3VzLWVuc2VtYmxlIMOgIHRvdXMgbGVzIG5pdmVhdXggZHUgZmljaGllciBBTU8yMFxuICAgICAgLy8gKHF1aSBlc3QgbHVpIG3Dqm1lIHVuIHNvdXMtZW5zZW1ibGUgZGUgbCdBTU8zMCkuXG4gICAgICAvLyBJbCBuJ2FwcG9ydGUgZG9uYyBhYnNvbHVtZW50IHJpZW4gcGFyIHJhcHBvcnQgw6AgQU1PMjAgb3UgbCdBTU8zMC5cbiAgICAgIGZpbGVuYW1lOiBcIkFNTzEwX2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXNfWFYuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1aW56ZSxcbiAgICAgIHJlcGFpclppcDogcmVwYWlyRm9ySnNvblN1YmRpcmVjdG9yeSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkTDqXB1dMOpcyBhY3RpZnMgZXQgb3JnYW5lcyBkZSBsYSBYVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNS9hbW8vZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lcy9BTU8xMF9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzX1hWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBBTU8yMCAoWFZJSSlcbiAgICAgIC8vXG4gICAgICAvLyBDb250aWVudCBsZXMgZMOpcHV0w6lzIGRlIGxhIGzDqWdpc2xhdHVyZSwgYWN0aWZzIG91IG5vbiAoaW52YWxpZMOpcywgZXRjKSwgbGVzIHPDqW5hdGV1cnMgYWN0dWVsc1xuICAgICAgLy8gUG91ciBsZXMgZMOpcHV0w6lzIDpcbiAgICAgIC8vICogYXZlYyB0b3VzIGxldXJzIG1hbmRhdHMgZGUgbGEgbMOpZ2lzbGF0dXJlXG4gICAgICAvLyAqIHkgY29tcHJpcyBsZXMgbWFuZGF0cyBhY2hldsOpc1xuICAgICAgLy8gKiB5IGNvbXByaXMgbGV1cnMgcGFydGlzIHBvbGl0aXF1ZXMgICh0eXBlT3JnYW5lOiBcIlBBUlBPTFwiKVxuICAgICAgLy8gKiBtYWlzIHNhbnMgbGVzIG1hbmRhdHMgZGVzIGzDqWdpc2xhdHVyZXMgcHLDqWPDqWRlbnRlcyAocXVpIHNvbnQgZGFucyBBTU80MClcbiAgICAgIC8vXG4gICAgICAvLyBDb250aWVudCB0b3VzIGxlcyBvcmdhbmVzIHLDqWbDqXJlbmPDqXMgcGFyIGxlcyBtYW5kYXRzXG4gICAgICAvLyAqIGF2ZWMgbGUgeHNpVHlwZSBkZSBsJ29yZ2FuZVxuICAgICAgLy8gKiBhdmVjIGRlcyBjb21taXNzaW9ucyBzw6luYXRvcmlhbGVzIChwZXJtYW5lbnRlcyBldCBzcMOpY2lhbGVzKSBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGRlcyBkw6lsw6lnYXRpb25zIHPDqW5hdG9yaWFsZXMgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgZ3JvdXBlcyBzw6luYXRvcmlhdXggZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgbWluaXN0w6hyZXMgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBsZXMgUHLDqXNpZGVuY2VzIGRlIGxhIFLDqXB1YmxpcXVlICh5IGNvbXByaXMgU2Fya296eSlcbiAgICAgIC8vICogYXZlYyBsZSBDb25zZWlsIGNvbnN0aXR1dGlvbm5lbFxuICAgICAgLy9cbiAgICAgIC8vIENlIGZpY2hpZXIgZXN0IHVuIHNvdXMtZW5zZW1ibGUgw6AgdG91cyBsZXMgbml2ZWF1eCBkdSBmaWNoaWVyIEFNTzMwLlxuICAgICAgLy8gSWwgbidhcHBvcnRlIGRvbmMgYWJzb2x1bWVudCByaWVuIHBhciByYXBwb3J0IMOgIGwnQU1PMzAuXG4gICAgICBmaWxlbmFtZTogXCJBTU8yMF9kZXBfc2VuX21pbl90b3VzX21hbmRhdHNfZXRfb3JnYW5lc19YVklJLmpzb25cIixcbiAgICAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5EaXhTZXB0LFxuICAgICAgcmVwYWlyWmlwOiByZXBhaXJGb3JKc29uU3ViZGlyZWN0b3J5LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiQWN0ZXVycyBldCBvcmdhbmVzIGRlIGxhIFhWSUnDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTcvYW1vL2RlcHV0ZXNfc2VuYXRldXJzX21pbmlzdHJlc19sZWdpc2xhdHVyZS9BTU8yMF9kZXBfc2VuX21pbl90b3VzX21hbmRhdHNfZXRfb3JnYW5lcy5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQU1PMjAgKFhWSSlcbiAgICAgIC8vXG4gICAgICAvLyBDb250aWVudCBsZXMgZMOpcHV0w6lzIGRlIGxhIGzDqWdpc2xhdHVyZSwgYWN0aWZzIG91IG5vbiAoaW52YWxpZMOpcywgZXRjKSwgbGVzIHPDqW5hdGV1cnMgYWN0dWVsc1xuICAgICAgLy8gUG91ciBsZXMgZMOpcHV0w6lzIDpcbiAgICAgIC8vICogYXZlYyB0b3VzIGxldXJzIG1hbmRhdHMgZGUgbGEgbMOpZ2lzbGF0dXJlXG4gICAgICAvLyAqIHkgY29tcHJpcyBsZXMgbWFuZGF0cyBhY2hldsOpc1xuICAgICAgLy8gKiB5IGNvbXByaXMgbGV1cnMgcGFydGlzIHBvbGl0aXF1ZXMgICh0eXBlT3JnYW5lOiBcIlBBUlBPTFwiKVxuICAgICAgLy8gKiBtYWlzIHNhbnMgbGVzIG1hbmRhdHMgZGVzIGzDqWdpc2xhdHVyZXMgcHLDqWPDqWRlbnRlcyAocXVpIHNvbnQgZGFucyBBTU80MClcbiAgICAgIC8vXG4gICAgICAvLyBDb250aWVudCB0b3VzIGxlcyBvcmdhbmVzIHLDqWbDqXJlbmPDqXMgcGFyIGxlcyBtYW5kYXRzXG4gICAgICAvLyAqIGF2ZWMgbGUgeHNpVHlwZSBkZSBsJ29yZ2FuZVxuICAgICAgLy8gKiBhdmVjIGRlcyBjb21taXNzaW9ucyBzw6luYXRvcmlhbGVzIChwZXJtYW5lbnRlcyBldCBzcMOpY2lhbGVzKSBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGRlcyBkw6lsw6lnYXRpb25zIHPDqW5hdG9yaWFsZXMgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgZ3JvdXBlcyBzw6luYXRvcmlhdXggZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgbWluaXN0w6hyZXMgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBsZXMgUHLDqXNpZGVuY2VzIGRlIGxhIFLDqXB1YmxpcXVlICh5IGNvbXByaXMgU2Fya296eSlcbiAgICAgIC8vICogYXZlYyBsZSBDb25zZWlsIGNvbnN0aXR1dGlvbm5lbFxuICAgICAgLy9cbiAgICAgIC8vIENlIGZpY2hpZXIgZXN0IHVuIHNvdXMtZW5zZW1ibGUgw6AgdG91cyBsZXMgbml2ZWF1eCBkdSBmaWNoaWVyIEFNTzMwLlxuICAgICAgLy8gSWwgbidhcHBvcnRlIGRvbmMgYWJzb2x1bWVudCByaWVuIHBhciByYXBwb3J0IMOgIGwnQU1PMzAuXG4gICAgICBmaWxlbmFtZTogXCJBTU8yMF9kZXBfc2VuX21pbl90b3VzX21hbmRhdHNfZXRfb3JnYW5lc19YVkkuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiByZXBhaXJGb3JKc29uU3ViZGlyZWN0b3J5LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiQWN0ZXVycyBldCBvcmdhbmVzIGRlIGxhIFhWScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9hbW8vZGVwdXRlc19zZW5hdGV1cnNfbWluaXN0cmVzX2xlZ2lzbGF0dXJlL0FNTzIwX2RlcF9zZW5fbWluX3RvdXNfbWFuZGF0c19ldF9vcmdhbmVzLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBBTU8yMCAoWFYpXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgbGVzIGTDqXB1dMOpcyBkZSBsYSBsw6lnaXNsYXR1cmUsIGFjdGlmcyBvdSBub24gKGludmFsaWTDqXMsIGV0YyksIGxlcyBzw6luYXRldXJzIGFjdHVlbHNcbiAgICAgIC8vIFBvdXIgbGVzIGTDqXB1dMOpcyA6XG4gICAgICAvLyAqIGF2ZWMgdG91cyBsZXVycyBtYW5kYXRzIGRlIGxhIGzDqWdpc2xhdHVyZVxuICAgICAgLy8gKiB5IGNvbXByaXMgbGVzIG1hbmRhdHMgYWNoZXbDqXNcbiAgICAgIC8vICogeSBjb21wcmlzIGxldXJzIHBhcnRpcyBwb2xpdGlxdWVzICAodHlwZU9yZ2FuZTogXCJQQVJQT0xcIilcbiAgICAgIC8vICogbWFpcyBzYW5zIGxlcyBtYW5kYXRzIGRlcyBsw6lnaXNsYXR1cmVzIHByw6ljw6lkZW50ZXMgKHF1aSBzb250IGRhbnMgQU1PNDApXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgdG91cyBsZXMgb3JnYW5lcyByw6lmw6lyZW5jw6lzIHBhciBsZXMgbWFuZGF0c1xuICAgICAgLy8gKiBhdmVjIGxlIHhzaVR5cGUgZGUgbCdvcmdhbmVcbiAgICAgIC8vICogYXZlYyBkZXMgY29tbWlzc2lvbnMgc8OpbmF0b3JpYWxlcyAocGVybWFuZW50ZXMgZXQgc3DDqWNpYWxlcykgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgZMOpbMOpZ2F0aW9ucyBzw6luYXRvcmlhbGVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIGdyb3VwZXMgc8OpbmF0b3JpYXV4IGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIG1pbmlzdMOocmVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgbGVzIFByw6lzaWRlbmNlcyBkZSBsYSBSw6lwdWJsaXF1ZSAoeSBjb21wcmlzIFNhcmtvenkpXG4gICAgICAvLyAqIGF2ZWMgbGUgQ29uc2VpbCBjb25zdGl0dXRpb25uZWxcbiAgICAgIC8vXG4gICAgICAvLyBDZSBmaWNoaWVyIGVzdCB1biBzb3VzLWVuc2VtYmxlIMOgIHRvdXMgbGVzIG5pdmVhdXggZHUgZmljaGllciBBTU8zMC5cbiAgICAgIC8vIElsIG4nYXBwb3J0ZSBkb25jIGFic29sdW1lbnQgcmllbiBwYXIgcmFwcG9ydCDDoCBsJ0FNTzMwLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PMjBfZGVwX3Nlbl9taW5fdG91c19tYW5kYXRzX2V0X29yZ2FuZXNfWFYuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1aW56ZSxcbiAgICAgIHJlcGFpclppcDogcmVwYWlyRm9ySnNvblN1YmRpcmVjdG9yeSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkFjdGV1cnMgZXQgb3JnYW5lcyBkZSBsYSBYVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNS9hbW8vZGVwdXRlc19zZW5hdGV1cnNfbWluaXN0cmVzX2xlZ2lzbGF0dXJlL0FNTzIwX2RlcF9zZW5fbWluX3RvdXNfbWFuZGF0c19ldF9vcmdhbmVzX1hWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBBTU8yMCAoWElWKVxuICAgICAgLy9cbiAgICAgIC8vIENvbW1lIEFNTzIwIChYVikgbWFpcyBwb3VyIGxhIFhJVsOobWUgbMOpZ2lzbGF0dXJlXG4gICAgICAvLyBUb3VzIGxlcyBhY3RldXJzIHNhdWYgdW4gKFBBNDI5ODkyKSBzb250IHByw6lzZW50cyBlbiBwbHVzIMOgIGpvdXIgZGFucyBBTU8zMC5cbiAgICAgIC8vIENldCBhY3RldXIgUEE0Mjk4OTIgKGFuY2llbm5lIFPDqW5hdHJpY2UpIG4nZXN0IHByw6lzZW50IGRhbnMgYXVjdW4gZGVzIGF1dHJlc1xuICAgICAgLy8gZmljaGllcnMgQU1PLlxuICAgICAgLy8gVG91cyBsZXMgb3JnYW5lcyBzb250IHByw6lzZW50cyBlbiBwbHVzIGNvbXBsZXRzIGRhbnMgQU1PMzAuXG4gICAgICAvL1xuICAgICAgLy8gQ2UgZmljaGllciBlc3QgZG9uYyDDoCB1biBkw6l0YWlsIHByw6p0IChQQTQyOTg5MikgdW4gc291cy1lbnNlbWJsZSBkJ0FNTzMwLlxuICAgICAgLy8gSWwgbidhcHBvcnRlIGRvbmMgcXVhc2ltZW50IHJpZW4gcGFyIHJhcHBvcnQgw6AgbCdBTU8zMC5cbiAgICAgIGZpbGVuYW1lOiBcIkFNTzIwX2RlcF9zZW5fbWluX3RvdXNfbWFuZGF0c19ldF9vcmdhbmVzX1hJVi5qc29uXCIsXG4gICAgICBpZ25vcmVGb3JXZWI6IHRydWUsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuUXVhdG9yemUsXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2luZ2xlRmlsZSxcbiAgICAgIHRpdGxlOiBcIkFjdGV1cnMgZXQgb3JnYW5lcyBkZSBsYSBYSVbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTQvYW1vL2RlcHV0ZXNfc2VuYXRldXJzX21pbmlzdHJlc19sZWdpc2xhdHVyZXNfWElWL0FNTzIwX2RlcF9zZW5fbWluX3RvdXNfbWFuZGF0c19ldF9vcmdhbmVzX1hJVi5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQU1PMzAgKFhWSUkpXG4gICAgICAvL1xuICAgICAgLy8gQ2UgZmljaGllciBjb250aWVudCB0b3VzIGxlcyBhY3RldXJzIGV0IG9yZ2FuZXMuXG4gICAgICAvLyBDJ2VzdCB1biBzdXItZW5zZW1ibGUgZGVzIGZpY2hpZXJzIEFNTzIwLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PMzBfdG91c19hY3RldXJzX3RvdXNfbWFuZGF0c190b3VzX29yZ2FuZXNfaGlzdG9yaXF1ZS5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuQWxsLFxuICAgICAgcmVwYWlyWmlwOiByZXBhaXJGb3JKc29uU3ViZGlyZWN0b3J5LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6XG4gICAgICAgIFwiSGlzdG9yaXF1ZSBkZSB0b3VzIGxlcyBhY3RldXJzIGV0IG9yZ2FuZXMgZGVwdWlzIGxhIFhJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE3L2Ftby90b3VzX2FjdGV1cnNfbWFuZGF0c19vcmdhbmVzX3hpX2xlZ2lzbGF0dXJlL0FNTzMwX3RvdXNfYWN0ZXVyc190b3VzX21hbmRhdHNfdG91c19vcmdhbmVzX2hpc3RvcmlxdWUuanNvbi56aXBcIixcbiAgICB9LFxuICAgIC8vIHtcbiAgICAvLyAgIC8vIEFNTzMwIChYVkkpXG4gICAgLy8gICAvL1xuICAgIC8vICAgLy8gQ2UgZmljaGllciBjb250aWVudCB0b3VzIGxlcyBhY3RldXJzIGV0IG9yZ2FuZXMuXG4gICAgLy8gICAvLyBDJ2VzdCB1biBzdXItZW5zZW1ibGUgZGVzIGZpY2hpZXJzIEFNTzIwLlxuICAgIC8vICAgZmlsZW5hbWU6IFwiQU1PMzBfdG91c19hY3RldXJzX3RvdXNfbWFuZGF0c190b3VzX29yZ2FuZXNfaGlzdG9yaXF1ZS5qc29uXCIsXG4gICAgLy8gICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuQWxsLFxuICAgIC8vICAgcmVwYWlyWmlwOiByZXBhaXJGb3JKc29uU3ViZGlyZWN0b3J5LFxuICAgIC8vICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgIC8vICAgdGl0bGU6XG4gICAgLy8gICAgIFwiSGlzdG9yaXF1ZSBkZSB0b3VzIGxlcyBhY3RldXJzIGV0IG9yZ2FuZXMgZGVwdWlzIGxhIFhJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAvLyAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE2L2Ftby90b3VzX2FjdGV1cnNfbWFuZGF0c19vcmdhbmVzX3hpX2xlZ2lzbGF0dXJlL0FNTzMwX3RvdXNfYWN0ZXVyc190b3VzX21hbmRhdHNfdG91c19vcmdhbmVzX2hpc3RvcmlxdWUuanNvbi56aXBcIixcbiAgICAvLyB9LFxuICAgIC8vIHtcbiAgICAvLyAgIC8vIEFNTzMwIChYVilcbiAgICAvLyAgIC8vXG4gICAgLy8gICAvLyBDZSBmaWNoaWVyIGNvbnRpZW50IHRvdXMgbGVzIGFjdGV1cnMgZXQgb3JnYW5lcy5cbiAgICAvLyAgIC8vIEMnZXN0IHVuIHN1ci1lbnNlbWJsZSBkZXMgZmljaGllcnMgQU1PMjAuXG4gICAgLy8gICBmaWxlbmFtZTogXCJBTU8zMF90b3VzX2FjdGV1cnNfdG91c19tYW5kYXRzX3RvdXNfb3JnYW5lc19oaXN0b3JpcXVlLmpzb25cIixcbiAgICAvLyAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5BbGwsXG4gICAgLy8gICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAvLyAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgLy8gICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAvLyAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAvLyAgICAgfVxuICAgIC8vICAgICBmcy5tb3ZlU3luYyhwYXRoLmpvaW4oZGF0YURpciwgXCJqc29uXCIpLCB0YXJnZXREaXIpXG4gICAgLy8gICB9LFxuICAgIC8vICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgIC8vICAgdGl0bGU6XG4gICAgLy8gICAgIFwiSGlzdG9yaXF1ZSBkZSB0b3VzIGxlcyBhY3RldXJzIGV0IG9yZ2FuZXMgZGVwdWlzIGxhIFhJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAvLyAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE1L2Ftby90b3VzX2FjdGV1cnNfbWFuZGF0c19vcmdhbmVzX3hpX2xlZ2lzbGF0dXJlL0FNTzMwX3RvdXNfYWN0ZXVyc190b3VzX21hbmRhdHNfdG91c19vcmdhbmVzX2hpc3RvcmlxdWUuanNvbi56aXBcIixcbiAgICAvLyB9LFxuICAgIHtcbiAgICAgIC8vIEFNTzQwIChYVklJKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IGxlcyBkw6lwdXTDqXMgYWN0aWZzIChsZXMgbcOqbWVzIHF1J0FNTzIwKVxuICAgICAgLy8gKiBhdmVjIHByZXNxdWUgdG91cyBsZXVycyBtYW5kYXRzXG4gICAgICAvLyAqIHkgY29tcHJpcyBsZXMgbWFuZGF0cyBhY2hldsOpcyBldCBjZXV4IGRlcyBsw6lnaXNsYXR1cmVzIHByw6ljw6lkZW50ZXNcbiAgICAgIC8vICogeSBjb21wcmlzIGxldXJzIHBhcnRpcyBwb2xpdGlxdWVzIHByw6ljw6lkZW50c1xuICAgICAgLy8gKiBtYWlzIHNhbnMgbGV1ciBwYXJ0aSBwb2xpdGlxdWUgYWN0dWVsICh0eXBlT3JnYW5lOiBcIlBBUlBPTFwiKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IGJlYXVjb3VwIGQnb3JnYW5lcyByw6lmw6lyZW5jw6lzLCB5IGNvbXByaXMgY2V1eCBkZXMgbMOpZ2lzbGF0dXJlc1xuICAgICAgLy8gcHLDqWPDqWRlbnRlc1xuICAgICAgLy8gKiBtYWlzIGlsIG1hbnF1ZSBsZSB4c2lUeXBlIGRlcyBvcmdhbmVzXG4gICAgICAvLyAqIG5lIGNvbnRpZW50IHBhcyBsZXMgb3JnYW5lcyBzw6luYXRvcmlhdXhcbiAgICAgIC8vICogbmUgY29udGllbnQgcGFzIGxlcyBtaW5pc3TDqHJlc1xuICAgICAgLy8gKiBuZSBjb250aWVudCBwYXMgbGEgUHLDqXNpZGVuY2UgZGUgbGEgUsOpcHVibGlxdWVcbiAgICAgIC8vICogbmUgY29udGllbnQgcGFzIGxlIENvbnNlaWwgY29uc3RpdHV0aW9ubmVsXG4gICAgICAvL1xuICAgICAgLy8gUG91ciBsZXMgYWN0ZXVycywgY2UgZMOpcMO0dCBlc3QgdW4gc291cy1lbnNlbWJsZSBzdHJpY3QgZGUgQU1PMzAgOlxuICAgICAgLy8gSWwgYSBtb2lucyBkJ2FjdGV1cnMgZXQgaWwgc29udCBtb2lucyBjb21wbGV0cy5cbiAgICAgIC8vXG4gICAgICAvLyBQb3VyIGxlcyBvcmdhbmVzIDpcbiAgICAgIC8vIFF1YW5kIGwnb3JnYW5lIGVzdCBhdXNzaSBwcsOpc2VudCBkYW5zIEFNTzMwLCBpbCB2YXV0IG1pZXV4IHByZW5kcmUgY2VsdWlcbiAgICAgIC8vIGQnQU1PMzAsIGNhciBpbCBjb250aWVudCBsZSB4c2lUeXBlIChjJ2VzdCBsYSBzZXVsZSBkaWZmw6lyZW5jZSBzZW1ibGUtdC1pKS5cbiAgICAgIC8vIFNpbm9uLCBpbCBmYXV0IGxlIHByZW5kcmUgc2V1bGVtZW50IHNpIG9uIGVzdCBpbnTDqXJlc3PDqSBwYXIgbGVzIGzDqWdpc2xhdHVyZXNcbiAgICAgIC8vIHByw6ljw6lkZW50ZXMuXG4gICAgICBmaWxlbmFtZTogXCJBTU80MF9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzX2RpdmlzZXNfWFZJSS5qc29uXCIsXG4gICAgICBpZ25vcmVGb3JXZWI6IHRydWUsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuRGl4U2VwdCxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1rZGlyU3luYyh0YXJnZXREaXIpXG4gICAgICAgIGlmIChmcy5wYXRoRXhpc3RzU3luYyhwYXRoLmpvaW4oZGF0YURpciwgXCJhY3RldXJcIikpKSB7XG4gICAgICAgICAgLy8gTm90ZTsgTGUgcsOpcGVydG9pcmUgYWN0ZXVyIHBldXQgZGlzcGFyYcOudHJlIGVuIGZpbiBkZSBsw6lnaXNsYXR1cmVcbiAgICAgICAgICAvLyBxdWFuZCBsZXMgbWFuZGF0cyBkZXMgZMOpcHV0w6lzIHMnaW50ZXJyb21wZW50LlxuICAgICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwiYWN0ZXVyXCIpLFxuICAgICAgICAgICAgcGF0aC5qb2luKHRhcmdldERpciwgXCJhY3RldXJcIiksXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcIm9yZ2FuZVwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcIm9yZ2FuZVwiKSxcbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkTDqXB1dMOpcyBhY3RpZnMgZXQgb3JnYW5lcyBkZSBsYSBYVklJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE3L2Ftby9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzX2RpdmlzZXMvQU1PNDBfZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lc19kaXZpc2VzLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBBTU80MCAoWFZJKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IGxlcyBkw6lwdXTDqXMgYWN0aWZzIChsZXMgbcOqbWVzIHF1J0FNTzIwKVxuICAgICAgLy8gKiBhdmVjIHByZXNxdWUgdG91cyBsZXVycyBtYW5kYXRzXG4gICAgICAvLyAqIHkgY29tcHJpcyBsZXMgbWFuZGF0cyBhY2hldsOpcyBldCBjZXV4IGRlcyBsw6lnaXNsYXR1cmVzIHByw6ljw6lkZW50ZXNcbiAgICAgIC8vICogeSBjb21wcmlzIGxldXJzIHBhcnRpcyBwb2xpdGlxdWVzIHByw6ljw6lkZW50c1xuICAgICAgLy8gKiBtYWlzIHNhbnMgbGV1ciBwYXJ0aSBwb2xpdGlxdWUgYWN0dWVsICh0eXBlT3JnYW5lOiBcIlBBUlBPTFwiKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IGJlYXVjb3VwIGQnb3JnYW5lcyByw6lmw6lyZW5jw6lzLCB5IGNvbXByaXMgY2V1eCBkZXMgbMOpZ2lzbGF0dXJlc1xuICAgICAgLy8gcHLDqWPDqWRlbnRlc1xuICAgICAgLy8gKiBtYWlzIGlsIG1hbnF1ZSBsZSB4c2lUeXBlIGRlcyBvcmdhbmVzXG4gICAgICAvLyAqIG5lIGNvbnRpZW50IHBhcyBsZXMgb3JnYW5lcyBzw6luYXRvcmlhdXhcbiAgICAgIC8vICogbmUgY29udGllbnQgcGFzIGxlcyBtaW5pc3TDqHJlc1xuICAgICAgLy8gKiBuZSBjb250aWVudCBwYXMgbGEgUHLDqXNpZGVuY2UgZGUgbGEgUsOpcHVibGlxdWVcbiAgICAgIC8vICogbmUgY29udGllbnQgcGFzIGxlIENvbnNlaWwgY29uc3RpdHV0aW9ubmVsXG4gICAgICAvL1xuICAgICAgLy8gUG91ciBsZXMgYWN0ZXVycywgY2UgZMOpcMO0dCBlc3QgdW4gc291cy1lbnNlbWJsZSBzdHJpY3QgZGUgQU1PMzAgOlxuICAgICAgLy8gSWwgYSBtb2lucyBkJ2FjdGV1cnMgZXQgaWwgc29udCBtb2lucyBjb21wbGV0cy5cbiAgICAgIC8vXG4gICAgICAvLyBQb3VyIGxlcyBvcmdhbmVzIDpcbiAgICAgIC8vIFF1YW5kIGwnb3JnYW5lIGVzdCBhdXNzaSBwcsOpc2VudCBkYW5zIEFNTzMwLCBpbCB2YXV0IG1pZXV4IHByZW5kcmUgY2VsdWlcbiAgICAgIC8vIGQnQU1PMzAsIGNhciBpbCBjb250aWVudCBsZSB4c2lUeXBlIChjJ2VzdCBsYSBzZXVsZSBkaWZmw6lyZW5jZSBzZW1ibGUtdC1pKS5cbiAgICAgIC8vIFNpbm9uLCBpbCBmYXV0IGxlIHByZW5kcmUgc2V1bGVtZW50IHNpIG9uIGVzdCBpbnTDqXJlc3PDqSBwYXIgbGVzIGzDqWdpc2xhdHVyZXNcbiAgICAgIC8vIHByw6ljw6lkZW50ZXMuXG4gICAgICBmaWxlbmFtZTogXCJBTU80MF9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzX2RpdmlzZXNfWFZJLmpzb25cIixcbiAgICAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5TZWl6ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1rZGlyU3luYyh0YXJnZXREaXIpXG4gICAgICAgIGlmIChmcy5wYXRoRXhpc3RzU3luYyhwYXRoLmpvaW4oZGF0YURpciwgXCJhY3RldXJcIikpKSB7XG4gICAgICAgICAgLy8gTm90ZTsgTGUgcsOpcGVydG9pcmUgYWN0ZXVyIHBldXQgZGlzcGFyYcOudHJlIGVuIGZpbiBkZSBsw6lnaXNsYXR1cmVcbiAgICAgICAgICAvLyBxdWFuZCBsZXMgbWFuZGF0cyBkZXMgZMOpcHV0w6lzIHMnaW50ZXJyb21wZW50LlxuICAgICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwiYWN0ZXVyXCIpLFxuICAgICAgICAgICAgcGF0aC5qb2luKHRhcmdldERpciwgXCJhY3RldXJcIiksXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcIm9yZ2FuZVwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcIm9yZ2FuZVwiKSxcbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkTDqXB1dMOpcyBhY3RpZnMgZXQgb3JnYW5lcyBkZSBsYSBYVknDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTYvYW1vL2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXNfZGl2aXNlcy9BTU80MF9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzX2RpdmlzZXMuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIEFNTzQwIChYVilcbiAgICAgIC8vXG4gICAgICAvLyBDb250aWVudCBsZXMgZMOpcHV0w6lzIGFjdGlmcyAobGVzIG3Dqm1lcyBxdSdBTU8yMClcbiAgICAgIC8vICogYXZlYyBwcmVzcXVlIHRvdXMgbGV1cnMgbWFuZGF0c1xuICAgICAgLy8gKiB5IGNvbXByaXMgbGVzIG1hbmRhdHMgYWNoZXbDqXMgZXQgY2V1eCBkZXMgbMOpZ2lzbGF0dXJlcyBwcsOpY8OpZGVudGVzXG4gICAgICAvLyAqIHkgY29tcHJpcyBsZXVycyBwYXJ0aXMgcG9saXRpcXVlcyBwcsOpY8OpZGVudHNcbiAgICAgIC8vICogbWFpcyBzYW5zIGxldXIgcGFydGkgcG9saXRpcXVlIGFjdHVlbCAodHlwZU9yZ2FuZTogXCJQQVJQT0xcIilcbiAgICAgIC8vXG4gICAgICAvLyBDb250aWVudCBiZWF1Y291cCBkJ29yZ2FuZXMgcsOpZsOpcmVuY8OpcywgeSBjb21wcmlzIGNldXggZGVzIGzDqWdpc2xhdHVyZXNcbiAgICAgIC8vIHByw6ljw6lkZW50ZXNcbiAgICAgIC8vICogbWFpcyBpbCBtYW5xdWUgbGUgeHNpVHlwZSBkZXMgb3JnYW5lc1xuICAgICAgLy8gKiBuZSBjb250aWVudCBwYXMgbGVzIG9yZ2FuZXMgc8OpbmF0b3JpYXV4XG4gICAgICAvLyAqIG5lIGNvbnRpZW50IHBhcyBsZXMgbWluaXN0w6hyZXNcbiAgICAgIC8vICogbmUgY29udGllbnQgcGFzIGxhIFByw6lzaWRlbmNlIGRlIGxhIFLDqXB1YmxpcXVlXG4gICAgICAvLyAqIG5lIGNvbnRpZW50IHBhcyBsZSBDb25zZWlsIGNvbnN0aXR1dGlvbm5lbFxuICAgICAgLy9cbiAgICAgIC8vIFBvdXIgbGVzIGFjdGV1cnMsIGNlIGTDqXDDtHQgZXN0IHVuIHNvdXMtZW5zZW1ibGUgc3RyaWN0IGRlIEFNTzMwIDpcbiAgICAgIC8vIElsIGEgbW9pbnMgZCdhY3RldXJzIGV0IGlsIHNvbnQgbW9pbnMgY29tcGxldHMuXG4gICAgICAvL1xuICAgICAgLy8gUG91ciBsZXMgb3JnYW5lcyA6XG4gICAgICAvLyBRdWFuZCBsJ29yZ2FuZSBlc3QgYXVzc2kgcHLDqXNlbnQgZGFucyBBTU8zMCwgaWwgdmF1dCBtaWV1eCBwcmVuZHJlIGNlbHVpXG4gICAgICAvLyBkJ0FNTzMwLCBjYXIgaWwgY29udGllbnQgbGUgeHNpVHlwZSAoYydlc3QgbGEgc2V1bGUgZGlmZsOpcmVuY2Ugc2VtYmxlLXQtaSkuXG4gICAgICAvLyBTaW5vbiwgaWwgZmF1dCBsZSBwcmVuZHJlIHNldWxlbWVudCBzaSBvbiBlc3QgaW50w6lyZXNzw6kgcGFyIGxlcyBsw6lnaXNsYXR1cmVzXG4gICAgICAvLyBwcsOpY8OpZGVudGVzLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PNDBfZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lc19kaXZpc2VzX1hWLmpzb25cIixcbiAgICAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWluemUsXG4gICAgICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAgICAgfVxuICAgICAgICBmcy5ta2RpclN5bmModGFyZ2V0RGlyKVxuICAgICAgICBmcy5tb3ZlU3luYyhcbiAgICAgICAgICBwYXRoLmpvaW4oZGF0YURpciwgXCJhY3RldXJcIiksXG4gICAgICAgICAgcGF0aC5qb2luKHRhcmdldERpciwgXCJhY3RldXJcIiksXG4gICAgICAgIClcbiAgICAgICAgZnMubW92ZVN5bmMoXG4gICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwib3JnYW5lXCIpLFxuICAgICAgICAgIHBhdGguam9pbih0YXJnZXREaXIsIFwib3JnYW5lXCIpLFxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiRMOpcHV0w6lzIGFjdGlmcyBldCBvcmdhbmVzIGRlIGxhIFhWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE1L2Ftby9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzX2RpdmlzZXMvQU1PNDBfZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lc19kaXZpc2VzX1hWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBBTU81MCAoWFZJSSlcbiAgICAgIC8vXG4gICAgICAvLyBBdHRlbnRpb24sIGNlIGZpY2hpZXIgbidlc3QgcGFzIG1pcyDDoCBqb3VyIHLDqWd1bGnDqHJlbWVudCAhXG4gICAgICAvL1xuICAgICAgLy8gUG91ciBsZXMgYWN0ZXVycyA6XG4gICAgICAvLyAqIGMnZXN0IHVuIHNvdXMgZW5zZW1ibGUgb2Jzb2zDqHRlIGQnQU1PMzBcbiAgICAgIC8vICogaWwgbWFucXVlIGxlcyB4c2lUeXBlIGF1eCBtYW5kYXRzXG4gICAgICAvL1xuICAgICAgLy8gUG91ciBsZXMgb3JnYW5lcyA6XG4gICAgICAvLyAqIGMnZXN0IHVuIHNvdXMgZW5zZW1ibGUgb2Jzb2zDqHRlIGQnQU1PMzBcbiAgICAgIC8vICogaWwgbWFucXVlIGxlcyB4c2lUeXBlXG4gICAgICAvL1xuICAgICAgLy8gQ2UgZmljaGllciBuJ2FwcG9ydGUgZG9uYyBhYnNvbHVtZW50IHJpZW4gcGFyIHJhcHBvcnQgw6AgbCdBTU8zMCxcbiAgICAgIC8vIGRvbnQgaWwgZXN0IHVuIHNvdXMgZW5zZW1ibGUgb2Jzb2zDqHRlLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PNTBfYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXNfZGl2aXNlc19YVklJLmpzb25cIixcbiAgICAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5EaXhTZXB0LFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubWtkaXJTeW5jKHRhcmdldERpcilcbiAgICAgICAgZnMubW92ZVN5bmMoXG4gICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwibWFuZGF0XCIpLFxuICAgICAgICAgIHBhdGguam9pbih0YXJnZXREaXIsIFwibWFuZGF0XCIpLFxuICAgICAgICApXG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcImFjdGV1clwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcImFjdGV1clwiKSxcbiAgICAgICAgKVxuICAgICAgICBmcy5tb3ZlU3luYyhcbiAgICAgICAgICBwYXRoLmpvaW4oZGF0YURpciwgXCJvcmdhbmVcIiksXG4gICAgICAgICAgcGF0aC5qb2luKHRhcmdldERpciwgXCJvcmdhbmVcIiksXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTpcbiAgICAgICAgXCJBY3RldXJzLCBtYW5kYXRzIGV0IG9yZ2FuZXMgZGUgbGEgWFZJScOobWUgbMOpZ2lzbGF0dXJlIChmaWNoaWVycyBzw6lwYXLDqXMsIHkgY29tcHJpcyBtYW5kYXRzKVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTcvYW1vL2FjdGV1cnNfbWFuZGF0c19vcmdhbmVzX2RpdmlzZXMvQU1PNTBfYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXNfZGl2aXNlcy5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQU1PNTAgKFhWSSlcbiAgICAgIC8vXG4gICAgICAvLyBBdHRlbnRpb24sIGNlIGZpY2hpZXIgbidlc3QgcGFzIG1pcyDDoCBqb3VyIHLDqWd1bGnDqHJlbWVudCAhXG4gICAgICAvL1xuICAgICAgLy8gUG91ciBsZXMgYWN0ZXVycyA6XG4gICAgICAvLyAqIGMnZXN0IHVuIHNvdXMgZW5zZW1ibGUgb2Jzb2zDqHRlIGQnQU1PMzBcbiAgICAgIC8vICogaWwgbWFucXVlIGxlcyB4c2lUeXBlIGF1eCBtYW5kYXRzXG4gICAgICAvL1xuICAgICAgLy8gUG91ciBsZXMgb3JnYW5lcyA6XG4gICAgICAvLyAqIGMnZXN0IHVuIHNvdXMgZW5zZW1ibGUgb2Jzb2zDqHRlIGQnQU1PMzBcbiAgICAgIC8vICogaWwgbWFucXVlIGxlcyB4c2lUeXBlXG4gICAgICAvL1xuICAgICAgLy8gQ2UgZmljaGllciBuJ2FwcG9ydGUgZG9uYyBhYnNvbHVtZW50IHJpZW4gcGFyIHJhcHBvcnQgw6AgbCdBTU8zMCxcbiAgICAgIC8vIGRvbnQgaWwgZXN0IHVuIHNvdXMgZW5zZW1ibGUgb2Jzb2zDqHRlLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PNTBfYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXNfZGl2aXNlc19YVkkuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubWtkaXJTeW5jKHRhcmdldERpcilcbiAgICAgICAgZnMubW92ZVN5bmMoXG4gICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwibWFuZGF0XCIpLFxuICAgICAgICAgIHBhdGguam9pbih0YXJnZXREaXIsIFwibWFuZGF0XCIpLFxuICAgICAgICApXG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcImFjdGV1clwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcImFjdGV1clwiKSxcbiAgICAgICAgKVxuICAgICAgICBmcy5tb3ZlU3luYyhcbiAgICAgICAgICBwYXRoLmpvaW4oZGF0YURpciwgXCJvcmdhbmVcIiksXG4gICAgICAgICAgcGF0aC5qb2luKHRhcmdldERpciwgXCJvcmdhbmVcIiksXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTpcbiAgICAgICAgXCJBY3RldXJzLCBtYW5kYXRzIGV0IG9yZ2FuZXMgZGUgbGEgWFZJw6htZSBsw6lnaXNsYXR1cmUgKGZpY2hpZXJzIHPDqXBhcsOpcywgeSBjb21wcmlzIG1hbmRhdHMpXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9hbW8vYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXNfZGl2aXNlcy9BTU81MF9hY3RldXJzX21hbmRhdHNfb3JnYW5lc19kaXZpc2VzLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBBTU81MCAoWFYpXG4gICAgICAvL1xuICAgICAgLy8gQXR0ZW50aW9uLCBjZSBmaWNoaWVyIG4nZXN0IHBhcyBtaXMgw6Agam91ciByw6lndWxpw6hyZW1lbnQgIVxuICAgICAgLy9cbiAgICAgIC8vIFBvdXIgbGVzIGFjdGV1cnMgOlxuICAgICAgLy8gKiBjJ2VzdCB1biBzb3VzIGVuc2VtYmxlIG9ic29sw6h0ZSBkJ0FNTzMwXG4gICAgICAvLyAqIGlsIG1hbnF1ZSBsZXMgeHNpVHlwZSBhdXggbWFuZGF0c1xuICAgICAgLy9cbiAgICAgIC8vIFBvdXIgbGVzIG9yZ2FuZXMgOlxuICAgICAgLy8gKiBjJ2VzdCB1biBzb3VzIGVuc2VtYmxlIG9ic29sw6h0ZSBkJ0FNTzMwXG4gICAgICAvLyAqIGlsIG1hbnF1ZSBsZXMgeHNpVHlwZVxuICAgICAgLy9cbiAgICAgIC8vIENlIGZpY2hpZXIgbidhcHBvcnRlIGRvbmMgYWJzb2x1bWVudCByaWVuIHBhciByYXBwb3J0IMOgIGwnQU1PMzAsXG4gICAgICAvLyBkb250IGlsIGVzdCB1biBzb3VzIGVuc2VtYmxlIG9ic29sw6h0ZS5cbiAgICAgIGZpbGVuYW1lOiBcIkFNTzUwX2FjdGV1cnNfbWFuZGF0c19vcmdhbmVzX2RpdmlzZXNfWFYuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1aW56ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1rZGlyU3luYyh0YXJnZXREaXIpXG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcIm1hbmRhdFwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcIm1hbmRhdFwiKSxcbiAgICAgICAgKVxuICAgICAgICBmcy5tb3ZlU3luYyhcbiAgICAgICAgICBwYXRoLmpvaW4oZGF0YURpciwgXCJhY3RldXJcIiksXG4gICAgICAgICAgcGF0aC5qb2luKHRhcmdldERpciwgXCJhY3RldXJcIiksXG4gICAgICAgIClcbiAgICAgICAgZnMubW92ZVN5bmMoXG4gICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwib3JnYW5lXCIpLFxuICAgICAgICAgIHBhdGguam9pbih0YXJnZXREaXIsIFwib3JnYW5lXCIpLFxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6XG4gICAgICAgIFwiQWN0ZXVycywgbWFuZGF0cyBldCBvcmdhbmVzIGRlIGxhIFhWw6htZSBsw6lnaXNsYXR1cmUgKGZpY2hpZXJzIHPDqXBhcsOpcywgeSBjb21wcmlzIG1hbmRhdHMpXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNS9hbW8vYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXNfZGl2aXNlcy9BTU81MF9hY3RldXJzX21hbmRhdHNfb3JnYW5lc19kaXZpc2VzX1hWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgXSxcbiAgYWdlbmRhczogW1xuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkFnZW5kYV9YVklJLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5EaXhTZXB0LFxuICAgICAgcmVwYWlyWmlwOiByZXBhaXJGb3JKc29uU3ViZGlyZWN0b3J5LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiQWdlbmRhIGRlIGxhIFhWSUnDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTcvdnAvcmV1bmlvbnMvQWdlbmRhLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJBZ2VuZGFfWFZJLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5TZWl6ZSxcbiAgICAgIHJlcGFpclppcDogcmVwYWlyRm9ySnNvblN1YmRpcmVjdG9yeSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkFnZW5kYSBkZSBsYSBYVknDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTYvdnAvcmV1bmlvbnMvQWdlbmRhLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJBZ2VuZGFfWFYuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1aW56ZSxcbiAgICAgIHJlcGFpclppcDogcmVwYWlyRm9ySnNvblN1YmRpcmVjdG9yeSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkFnZW5kYSBkZSBsYSBYVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNS92cC9yZXVuaW9ucy9BZ2VuZGFfWFYuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkFnZW5kYV9YSVYuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1YXRvcnplLFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGUsXG4gICAgICB0aXRsZTogXCJBZ2VuZGEgZGUgbGEgWElWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE0L3ZwL3JldW5pb25zL0FnZW5kYV9YSVYuanNvbi56aXBcIixcbiAgICB9LFxuICBdLFxuICBhbWVuZGVtZW50czogW1xuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkFtZW5kZW1lbnRzX1hWSUkuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLkRpeFNlcHQsXG4gICAgICByZXBhaXJaaXA6IHJlcGFpckZvckpzb25TdWJkaXJlY3RvcnksXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJBbWVuZGVtZW50cyBkZSBsYSBYVklJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE3L2xvaS9hbWVuZGVtZW50c19kaXZfbGVnaXMvQW1lbmRlbWVudHMuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkFtZW5kZW1lbnRzX1hWSS5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuU2VpemUsXG4gICAgICByZXBhaXJaaXA6IHJlcGFpckZvckpzb25TdWJkaXJlY3RvcnksXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJBbWVuZGVtZW50cyBkZSBsYSBYVknDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTYvbG9pL2FtZW5kZW1lbnRzX2Rpdl9sZWdpcy9BbWVuZGVtZW50cy5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgZmlsZW5hbWU6IFwiQW1lbmRlbWVudHNfWFYuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1aW56ZSxcbiAgICAgIHJlcGFpclppcDogcmVwYWlyRm9ySnNvblN1YmRpcmVjdG9yeSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkFtZW5kZW1lbnRzIGRlIGxhIFhWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE1L2xvaS9hbWVuZGVtZW50c19sZWdpcy9BbWVuZGVtZW50c19YVi5qc29uLnppcFwiLFxuICAgIH0sXG4gICAgLy8ge1xuICAgIC8vICAgZmlsZW5hbWU6IFwiQW1lbmRlbWVudHNfWElWLmpzb25cIixcbiAgICAvLyAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAvLyAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWF0b3J6ZSxcbiAgICAvLyAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlLFxuICAgIC8vICAgdGl0bGU6IFwiQW1lbmRlbWVudHMgZGUgbGEgWElWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAvLyAgIHVybDpcbiAgICAvLyAgICAgXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE0L2xvaS9hbWVuZGVtZW50c19sZWdpc19YSVYvQW1lbmRlbWVudHNfWElWLmpzb24uemlwXCIsXG4gICAgLy8gfSxcbiAgXSxcbiAgZG9zc2llcnNMZWdpc2xhdGlmczogW1xuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkRvc3NpZXJzX0xlZ2lzbGF0aWZzX1hWSUkuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLkRpeFNlcHQsXG4gICAgICByZXBhaXJaaXA6IHJlcGFpckZvckpzb25TdWJkaXJlY3RvcnksXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJEb3NzaWVycyBsw6lnaXNsYXRpZnMgZGUgbGEgWFZJScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNy9sb2kvZG9zc2llcnNfbGVnaXNsYXRpZnMvRG9zc2llcnNfTGVnaXNsYXRpZnMuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkRvc3NpZXJzX0xlZ2lzbGF0aWZzX1hWSS5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuU2VpemUsXG4gICAgICByZXBhaXJaaXA6IHJlcGFpckZvckpzb25TdWJkaXJlY3RvcnksXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJEb3NzaWVycyBsw6lnaXNsYXRpZnMgZGUgbGEgWFZJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE2L2xvaS9kb3NzaWVyc19sZWdpc2xhdGlmcy9Eb3NzaWVyc19MZWdpc2xhdGlmcy5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgZmlsZW5hbWU6IFwiRG9zc2llcnNfTGVnaXNsYXRpZnNfWFYuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1aW56ZSxcbiAgICAgIHJlcGFpclppcDogcmVwYWlyRm9ySnNvblN1YmRpcmVjdG9yeSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkRvc3NpZXJzIGzDqWdpc2xhdGlmcyBkZSBsYSBYVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNS9sb2kvZG9zc2llcnNfbGVnaXNsYXRpZnMvRG9zc2llcnNfTGVnaXNsYXRpZnNfWFYuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkRvc3NpZXJzX0xlZ2lzbGF0aWZzX1hJVi5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuUXVhdG9yemUsXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2luZ2xlRmlsZSxcbiAgICAgIHRpdGxlOiBcIkRvc3NpZXJzIGzDqWdpc2xhdGlmcyBkZSBsYSBYSVbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTQvbG9pL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzL0Rvc3NpZXJzX0xlZ2lzbGF0aWZzX1hJVi5qc29uLnppcFwiLFxuICAgIH0sXG4gIF0sXG4gIHNjcnV0aW5zOiBbXG4gICAge1xuICAgICAgZmlsZW5hbWU6IFwiU2NydXRpbnNfWFZJSS5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuRGl4U2VwdCxcbiAgICAgIHJlcGFpclppcDogcmVwYWlyRm9ySnNvblN1YmRpcmVjdG9yeSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIlNjcnV0aW5zIGRlIGxhIFhWSUnDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTcvbG9pL3NjcnV0aW5zL1NjcnV0aW5zLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJTY3J1dGluc19YVkkuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiByZXBhaXJGb3JKc29uU3ViZGlyZWN0b3J5LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiU2NydXRpbnMgZGUgbGEgWFZJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE2L2xvaS9zY3J1dGlucy9TY3J1dGlucy5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgZmlsZW5hbWU6IFwiU2NydXRpbnNfWFYuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1aW56ZSxcbiAgICAgIHJlcGFpclppcDogcmVwYWlyRm9ySnNvblN1YmRpcmVjdG9yeSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIlNjcnV0aW5zIGRlIGxhIFhWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE1L2xvaS9zY3J1dGlucy9TY3J1dGluc19YVi5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgZmlsZW5hbWU6IFwiU2NydXRpbnNfWElWLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWF0b3J6ZSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlLFxuICAgICAgdGl0bGU6IFwiU2NydXRpbnMgZGUgbGEgWElWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE0L2xvaS9zY3J1dGlucy9TY3J1dGluc19YSVYuanNvbi56aXBcIixcbiAgICB9LFxuICBdLFxuICBxdWVzdGlvbnM6IFtcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJRdWVzdGlvbnNfZWNyaXRlc19YVklJLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5EaXhTZXB0LFxuICAgICAgcmVwYWlyWmlwOiByZXBhaXJGb3JKc29uU3ViZGlyZWN0b3J5LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiUXVlc3Rpb25zIMOpY3JpdGVzIGRlIGxhIFhWSUnDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTcvcXVlc3Rpb25zL3F1ZXN0aW9uc19lY3JpdGVzL1F1ZXN0aW9uc19lY3JpdGVzLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJRdWVzdGlvbnNfZWNyaXRlc19YVkkuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiByZXBhaXJGb3JKc29uU3ViZGlyZWN0b3J5LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiUXVlc3Rpb25zIMOpY3JpdGVzIGRlIGxhIFhWScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9xdWVzdGlvbnMvcXVlc3Rpb25zX2Vjcml0ZXMvUXVlc3Rpb25zX2Vjcml0ZXMuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIlF1ZXN0aW9uc19nb3V2ZXJuZW1lbnRfWFZJSS5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuRGl4U2VwdCxcbiAgICAgIHJlcGFpclppcDogcmVwYWlyRm9ySnNvblN1YmRpcmVjdG9yeSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIlF1ZXN0aW9ucyBhdSBnb3V2ZXJuZW1lbnQgZGUgbGEgWFZJScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNy9xdWVzdGlvbnMvcXVlc3Rpb25zX2dvdXZlcm5lbWVudC9RdWVzdGlvbnNfZ291dmVybmVtZW50Lmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJRdWVzdGlvbnNfZ291dmVybmVtZW50X1hWSS5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuU2VpemUsXG4gICAgICByZXBhaXJaaXA6IHJlcGFpckZvckpzb25TdWJkaXJlY3RvcnksXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJRdWVzdGlvbnMgYXUgZ291dmVybmVtZW50IGRlIGxhIFhWScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9xdWVzdGlvbnMvcXVlc3Rpb25zX2dvdXZlcm5lbWVudC9RdWVzdGlvbnNfZ291dmVybmVtZW50Lmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJRdWVzdGlvbnNfb3JhbGVzX1hWSUkuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLkRpeFNlcHQsXG4gICAgICByZXBhaXJaaXA6IHJlcGFpckZvckpzb25TdWJkaXJlY3RvcnksXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJRdWVzdGlvbnMgb3JhbGVzIHNhbnMgZMOpYmF0cyBkZSBsYSBYVklJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE3L3F1ZXN0aW9ucy9xdWVzdGlvbnNfb3JhbGVzX3NhbnNfZGViYXQvUXVlc3Rpb25zX29yYWxlc19zYW5zX2RlYmF0Lmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJRdWVzdGlvbnNfb3JhbGVzX1hWSS5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuU2VpemUsXG4gICAgICByZXBhaXJaaXA6IHJlcGFpckZvckpzb25TdWJkaXJlY3RvcnksXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJRdWVzdGlvbnMgb3JhbGVzIHNhbnMgZMOpYmF0cyBkZSBsYSBYVknDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTYvcXVlc3Rpb25zL3F1ZXN0aW9uc19vcmFsZXNfc2Fuc19kZWJhdC9RdWVzdGlvbnNfb3JhbGVzX3NhbnNfZGViYXQuanNvbi56aXBcIixcbiAgICB9LFxuICBdLFxuICBjb21wdGVzUmVuZHVzU2VhbmNlczogW1xuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkNvbXB0ZXNfUmVuZHVzX1NlYW5jZXNfWFZJSS54bWxcIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5EaXhTZXB0LFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwieG1sXCIpLCB0YXJnZXREaXIpXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiQ29tcHRlcyByZW5kdXMgZGVzIHPDqWFuY2VzIHB1YmxpcXVlcyBkZSBsYSBYVklJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwczovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNy92cC9zeWNlcm9uYnJ1dC9zeXNlcm9uLnhtbC56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkNvbXB0ZXNfUmVuZHVzX1NlYW5jZXNfWFZJLnhtbFwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwieG1sXCIpLCB0YXJnZXREaXIpXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiQ29tcHRlcyByZW5kdXMgZGVzIHPDqWFuY2VzIHB1YmxpcXVlcyBkZSBsYSBYVknDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHBzOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE2L3ZwL3N5Y2Vyb25icnV0L3N5c2Vyb24ueG1sLnppcFwiLFxuICAgIH0sXG4gIF0sXG4gIHRleHRlc0xvaTogW1xuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIlRleHRlc19Mb2lfWFZJXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuU2VpemUsXG4gICAgICByZXBhaXJaaXA6IHJlcGFpckZvckpzb25TdWJkaXJlY3RvcnksXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJUZXh0ZXMgZGUgbG9pIGRlIGxhIFhWScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICBkb3dubG9hZDogcHJvY2Vzc1RleHRlc0xvaURhdGFzZXQsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJUZXh0ZXNfTG9pX1hWSUlcIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5EaXhTZXB0LFxuICAgICAgcmVwYWlyWmlwOiByZXBhaXJGb3JKc29uU3ViZGlyZWN0b3J5LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiVGV4dGVzIGRlIGxvaSBkZSBsYSBYVklJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIGRvd25sb2FkOiBwcm9jZXNzVGV4dGVzTG9pRGF0YXNldCxcbiAgICB9LFxuICBdLFxufVxuXG5jb25zdCBkaXJlY3Rvcnkyc2NoZW1hOiBhbnkgPSB7XG4gIFwiLipBZ2VuZGFfLipcIjogXCJhZ2VuZGFcIixcbiAgXCIuKlNjcnV0aW5zXy4qXCI6IFwic2NydXRpblwiLFxuICBcIi4qUXVlc3Rpb25zXy4qXCI6IFwicXVlc3Rpb25cIixcbiAgXCIuKkFtZW5kZW1lbnRzXy4qXCI6IFwiYW1lbmRlbWVudFwiLFxuICBcIi4qRG9zc2llcnNfTGVnaXNsYXRpZnNfLiovZG9jdW1lbnRzXCI6IFwiZG9jdW1lbnRcIixcbiAgXCIuKkRvc3NpZXJzX0xlZ2lzbGF0aWZzXy4qL2Rvc3NpZXJzXCI6IFwiZG9zc2llclwiLFxuICBcIi4qYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXMvb3JnYW5lc1wiOiBcIm9yZ2FuZVwiLFxuICBcIi4qYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXMvYWN0ZXVyc1wiOiBcImFjdGV1clwiLFxuICBcIi4qQU1PMzBfdG91c19hY3RldXJzX3RvdXNfbWFuZGF0c190b3VzX29yZ2FuZXNfaGlzdG9yaXF1ZS4qL29yZ2FuZXNcIjpcbiAgICBcIm9yZ2FuZVwiLFxuICBcIi4qQU1PMzBfdG91c19hY3RldXJzX3RvdXNfbWFuZGF0c190b3VzX29yZ2FuZXNfaGlzdG9yaXF1ZS4qL2FjdGV1cnNcIjpcbiAgICBcImFjdGV1clwiLFxuICBcIi4qQ29tcHRlc19SZW5kdXNfU2VhbmNlc18uKlwiOiBcImRlYmF0XCIsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREYXRhc2V0cygpOiBhbnkge1xuICByZXR1cm4gW1xuICAgIFwiQWdlbmRhX1hJVlwiLFxuICAgIFwiQWdlbmRhX1hWXCIsXG4gICAgXCJBZ2VuZGFfWFZJXCIsXG4gICAgXCJBZ2VuZGFfWFZJSVwiLFxuICAgIFwiU2NydXRpbnNfWElWXCIsXG4gICAgXCJTY3J1dGluc19YVlwiLFxuICAgIFwiU2NydXRpbnNfWFZJXCIsXG4gICAgXCJTY3J1dGluc19YVklJXCIsXG4gICAgXCJRdWVzdGlvbnNfRWNyaXRlc19YVklcIixcbiAgICBcIlF1ZXN0aW9uc19FY3JpdGVzX1hWSUlcIixcbiAgICBcIlF1ZXN0aW9uc19Hb3V2ZXJuZW1lbnRfWFZJXCIsXG4gICAgXCJRdWVzdGlvbnNfR291dmVybmVtZW50X1hWSUlcIixcbiAgICBcIkFtZW5kZW1lbnRzX1hJVlwiLFxuICAgIFwiQW1lbmRlbWVudHNfWFZcIixcbiAgICBcIkFtZW5kZW1lbnRzX1hWSVwiLFxuICAgIFwiQW1lbmRlbWVudHNfWFZJSVwiLFxuICAgIFwiRG9zc2llcnNfTGVnaXNsYXRpZnNfWElWXCIsXG4gICAgXCJEb3NzaWVyc19MZWdpc2xhdGlmc19YVlwiLFxuICAgIFwiRG9zc2llcnNfTGVnaXNsYXRpZnNfWFZJXCIsXG4gICAgXCJEb3NzaWVyc19MZWdpc2xhdGlmc19YVklJXCIsXG4gICAgXCJBTU8zMF90b3VzX2FjdGV1cnNfdG91c19tYW5kYXRzX3RvdXNfb3JnYW5lc19oaXN0b3JpcXVlXCIsXG4gICAgXCJhY3RldXJzX21hbmRhdHNfb3JnYW5lc1wiLFxuICAgIFwiQ29tcHRlc19SZW5kdXNfU2VhbmNlc19YVklcIixcbiAgICBcIkNvbXB0ZXNfUmVuZHVzX1NlYW5jZXNfWFZJSVwiLFxuICBdXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZERhdGFzZXQoZGlyOiBhbnkpOiBhbnkge1xuICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZ2V0RGF0YXNldHMoKSkge1xuICAgIGlmIChkaXIuaW5jbHVkZXMoZGF0YXNldCkpIHJldHVybiB0cnVlXG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTY2hlbWFzKCk6IGFueSB7XG4gIHJldHVybiBPYmplY3QudmFsdWVzKGRpcmVjdG9yeTJzY2hlbWEpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRhc2V0RGlyZWN0b3J5U2NoZW1hKGRhdGFzZXQ6IHN0cmluZyk6IGFueSB7XG4gIGxldCBkaXJlY3RvcmllczogYW55XG4gIGlmIChkYXRhc2V0LmluY2x1ZGVzKFwiRG9zc2llcnNfTGVnaXNsYXRpZnNfXCIpKSB7XG4gICAgZGlyZWN0b3JpZXMgPSBbYCR7ZGF0YXNldH0vZG9jdW1lbnRzYCwgYCR7ZGF0YXNldH0vZG9zc2llcnNgXVxuICB9IGVsc2UgaWYgKFxuICAgIGRhdGFzZXQuaW5jbHVkZXMoXCJhY3RldXJzX21hbmRhdHNfb3JnYW5lc1wiKSB8fFxuICAgIGRhdGFzZXQuaW5jbHVkZXMoXCJBTU8zMF90b3VzX2FjdGV1cnNfdG91c19tYW5kYXRzX3RvdXNfb3JnYW5lc19oaXN0b3JpcXVlXCIpXG4gICkge1xuICAgIGRpcmVjdG9yaWVzID0gW2Ake2RhdGFzZXR9L29yZ2FuZXNgLCBgJHtkYXRhc2V0fS9hY3RldXJzYF1cbiAgfSBlbHNlIHtcbiAgICBkaXJlY3RvcmllcyA9IFtkYXRhc2V0XVxuICB9XG5cbiAgbGV0IHJlc3VsdHMgPSBbXVxuICBmb3IgKGNvbnN0IGRpcmVjdG9yeSBvZiBkaXJlY3Rvcmllcykge1xuICAgIGZvciAoY29uc3QgcmUgb2YgT2JqZWN0LmtleXMoZGlyZWN0b3J5MnNjaGVtYSkpIHtcbiAgICAgIGlmIChuZXcgUmVnRXhwKHJlKS5leGVjKGRpcmVjdG9yeSkpXG4gICAgICAgIHJlc3VsdHMucHVzaChbYCR7ZGlyZWN0b3J5fS8qKi8qLmpzb25gLCBkaXJlY3Rvcnkyc2NoZW1hW3JlXV0pXG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHRzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWxlRGF0YXNldFVybChmaWxlbmFtZTogc3RyaW5nKTogW3N0cmluZywgc3RyaW5nXSB8IG51bGwge1xuICBjb25zdCByZSA9IFwiXi4qLyguKilfbmV0dG95ZS8oLiopXCJcbiAgY29uc3QgbWF0Y2ggPSBuZXcgUmVnRXhwKHJlKS5leGVjKGZpbGVuYW1lKVxuICBpZiAobWF0Y2ggPT0gbnVsbCkgcmV0dXJuIG51bGxcbiAgbGV0IFtkYXRhc2V0LCBmaWxlXSA9IFttYXRjaFsxXSwgbWF0Y2hbMl1dXG4gIGlmIChkYXRhc2V0ID09IFwiQU1PMzBfdG91c19hY3RldXJzX3RvdXNfbWFuZGF0c190b3VzX29yZ2FuZXNfaGlzdG9yaXF1ZVwiKVxuICAgIGRhdGFzZXQgPSBcImFjdGV1cnNfbWFuZGF0c19vcmdhbmVzXCJcbiAgcmV0dXJuIFtkYXRhc2V0LCBmaWxlXVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlmZlVwc3RyZWFtKGZpbGVuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBkYXRhc2V0VXJsID0gZmlsZURhdGFzZXRVcmwoZmlsZW5hbWUpXG4gIGlmIChkYXRhc2V0VXJsID09IG51bGwpIHJldHVybiBmaWxlbmFtZVxuICBjb25zdCBbZGF0YXNldCwgZmlsZV0gPSBkYXRhc2V0VXJsXG4gIGNvbnN0IHN1bSA9IGNyZWF0ZUhhc2goXCJzaGExXCIpLnVwZGF0ZShmaWxlKS5kaWdlc3QoXCJoZXhcIikudG9TdHJpbmcoKVxuICByZXR1cm4gYFske2ZpbGV9XShodHRwczovL2dpdC5lbi1yb290Lm9yZy90cmljb3RldXNlcy9kYXRhLnRyaWNvdGV1c2VzLmZyLyR7ZGF0YXNldH0vLS9jb21wYXJlL3Vwc3RyZWFtLi4ubWFzdGVyIyR7c3VtfSlgXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXN0ZXJVcmwoZmlsZW5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGRhdGFzZXRVcmwgPSBmaWxlRGF0YXNldFVybChmaWxlbmFtZSlcbiAgaWYgKGRhdGFzZXRVcmwgPT0gbnVsbCkgcmV0dXJuIGZpbGVuYW1lXG4gIGNvbnN0IFtkYXRhc2V0LCBmaWxlXSA9IGRhdGFzZXRVcmxcbiAgcmV0dXJuIGBbJHtmaWxlfV0oaHR0cHM6Ly9naXQuZW4tcm9vdC5vcmcvdHJpY290ZXVzZXMvZGF0YS50cmljb3RldXNlcy5mci8ke2RhdGFzZXR9Ly0vdHJlZS9tYXN0ZXIvJHtmaWxlfSlgXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJCeUxlZ2lzbGF0dXJlKFxuICBkYXRhc2V0czogRGF0YXNldHMsXG4gIGxlZ2lzbGF0dXJlOiBhbnksXG4pOiBEYXRhc2V0cyB7XG4gIC8vIFdoZW4gYSBnaXZlbiBsZWdpc2xhdHVyZSBpcyAwLCBpdCBpcyB0aGUgc2FtZSBhcyBnaXZpbmcgbm8gbGVnaXNsYXR1cmU6XG4gIC8vIEl0IG1lYW5zIFwiZXZlcnkgbGVnaXNsYXR1cmVzXCIuXG4gIGlmIChsZWdpc2xhdHVyZSAhPT0gMCAmJiBsZWdpc2xhdHVyZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGRhdGFzZXRzKSkge1xuICAgICAgZGF0YXNldHNba2V5IGFzIGtleW9mIHR5cGVvZiBkYXRhc2V0c10gPSB2YWx1ZS5maWx0ZXIoXG4gICAgICAgIChkYXRhc2V0OiB7IGxlZ2lzbGF0dXJlOiBhbnkgfSkgPT5cbiAgICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlID09PSBMZWdpc2xhdHVyZS5BbGwgfHxcbiAgICAgICAgICBsZWdpc2xhdHVyZSA9PT0gZGF0YXNldC5sZWdpc2xhdHVyZSxcbiAgICAgIClcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRhdGFzZXRzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbmFibGVkRGF0YXNldHMoY2F0ZWdvcmllczogYW55KTogRW5hYmxlZERhdGFzZXRzIHtcbiAgY2F0ZWdvcmllcy5tYXAoKGRhdGFzZXROYW1lOiBzdHJpbmcpID0+XG4gICAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgICAgKEVuYWJsZWREYXRhc2V0cyBhcyBhbnkgYXMgeyBbbmFtZTogc3RyaW5nXTogRW5hYmxlZERhdGFzZXRzIH0pW1xuICAgICAgICBkYXRhc2V0TmFtZVxuICAgICAgXSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIGBVbmtub3duIG5hbWUgb2YgZGF0YXNldDogJHtkYXRhc2V0TmFtZX1gLFxuICAgICksXG4gIClcblxuICByZXR1cm4gY2F0ZWdvcmllcy5yZWR1Y2UoXG4gICAgKGVuYWJsZWREYXRhc2V0czogRW5hYmxlZERhdGFzZXRzLCBkYXRhc2V0TmFtZTogc3RyaW5nKTogRW5hYmxlZERhdGFzZXRzID0+XG4gICAgICBlbmFibGVkRGF0YXNldHMgfFxuICAgICAgKEVuYWJsZWREYXRhc2V0cyBhcyBhbnkgYXMgeyBbbmFtZTogc3RyaW5nXTogRW5hYmxlZERhdGFzZXRzIH0pW1xuICAgICAgICBkYXRhc2V0TmFtZVxuICAgICAgXSxcbiAgICBFbmFibGVkRGF0YXNldHMuTm9uZSxcbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxRQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSSxLQUFBLEdBQUFGLHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBSyxhQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSwyQkFBQSxHQUFBTixPQUFBO0FBQThFLFNBQUFFLHVCQUFBSyxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsZ0JBQUFBLENBQUE7QUFBQSxTQUFBRSxlQUFBQyxDQUFBLEVBQUFILENBQUEsV0FBQUksZUFBQSxDQUFBRCxDQUFBLEtBQUFFLHFCQUFBLENBQUFGLENBQUEsRUFBQUgsQ0FBQSxLQUFBTSwyQkFBQSxDQUFBSCxDQUFBLEVBQUFILENBQUEsS0FBQU8sZ0JBQUE7QUFBQSxTQUFBQSxpQkFBQSxjQUFBQyxTQUFBO0FBQUEsU0FBQUgsc0JBQUFGLENBQUEsRUFBQU0sQ0FBQSxRQUFBQyxDQUFBLFdBQUFQLENBQUEsZ0NBQUFRLE1BQUEsSUFBQVIsQ0FBQSxDQUFBUSxNQUFBLENBQUFDLFFBQUEsS0FBQVQsQ0FBQSw0QkFBQU8sQ0FBQSxRQUFBVixDQUFBLEVBQUFhLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsT0FBQUMsQ0FBQSxPQUFBQyxDQUFBLGlCQUFBSixDQUFBLElBQUFKLENBQUEsR0FBQUEsQ0FBQSxDQUFBUyxJQUFBLENBQUFoQixDQUFBLEdBQUFpQixJQUFBLFFBQUFYLENBQUEsUUFBQVksTUFBQSxDQUFBWCxDQUFBLE1BQUFBLENBQUEsVUFBQU8sQ0FBQSx1QkFB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
|