@tricoteuses/assemblee 1.9.13 → 1.10.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 +0 -5
- package/lib/api.js +1 -1
- package/lib/api.mjs +1 -1
- package/lib/bugs/acteur-00010/plugin.test.js +5 -5
- package/lib/bugs/acteur-00010/plugin.test.mjs +1 -1
- package/lib/bugs/acteur-00010.js +17 -18
- package/lib/bugs/acteur-00010.mjs +1 -1
- package/lib/bugs/agenda-00002/plugin.test.js +6 -6
- package/lib/bugs/agenda-00002/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00002.js +31 -32
- package/lib/bugs/agenda-00002.mjs +3 -3
- package/lib/bugs/agenda-00008/plugin.test.js +5 -5
- package/lib/bugs/agenda-00008/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00008.js +17 -18
- package/lib/bugs/agenda-00008.mjs +1 -1
- package/lib/bugs/agenda-00011/plugin.test.js +10 -10
- package/lib/bugs/agenda-00011/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00011.js +28 -29
- package/lib/bugs/agenda-00011.mjs +3 -3
- package/lib/bugs.js +27 -29
- package/lib/bugs.mjs +3 -3
- package/lib/cleaners/actes_legislatifs.js +5 -5
- package/lib/cleaners/actes_legislatifs.mjs +1 -1
- package/lib/cleaners/acteurs.js +5 -5
- package/lib/cleaners/acteurs.mjs +1 -1
- package/lib/cleaners/amendements.js +5 -5
- package/lib/cleaners/amendements.mjs +1 -1
- package/lib/cleaners/debats.js +1 -1
- package/lib/cleaners/debats.mjs +1 -1
- package/lib/cleaners/documents.js +5 -5
- package/lib/cleaners/documents.mjs +1 -1
- package/lib/cleaners/dossiers_legislatifs.js +5 -5
- package/lib/cleaners/dossiers_legislatifs.mjs +1 -1
- package/lib/cleaners/index.d.ts +0 -1
- package/lib/cleaners/index.js +1 -8
- package/lib/cleaners/index.mjs +1 -2
- package/lib/cleaners/organes.js +2 -2
- package/lib/cleaners/organes.mjs +1 -1
- package/lib/cleaners/questions.js +1 -1
- package/lib/cleaners/questions.mjs +1 -1
- package/lib/cleaners/reunions.js +5 -5
- package/lib/cleaners/reunions.mjs +1 -1
- package/lib/cleaners/scrutins.js +8 -8
- package/lib/cleaners/scrutins.mjs +1 -1
- package/lib/cleaners/xml.js +8 -8
- package/lib/cleaners/xml.mjs +1 -1
- package/lib/datasets.d.ts +1 -13
- package/lib/datasets.js +10 -29
- package/lib/datasets.mjs +2 -21
- package/lib/dates.js +3 -4
- package/lib/dates.mjs +1 -1
- package/lib/dossiers_legislatifs.js +8 -8
- package/lib/dossiers_legislatifs.mjs +1 -1
- package/lib/file_systems.js +15 -14
- package/lib/file_systems.mjs +3 -3
- package/lib/git.js +5 -5
- package/lib/git.mjs +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +8 -1
- package/lib/index.mjs +2 -1
- package/lib/inserters.js +4 -4
- package/lib/inserters.mjs +1 -1
- package/lib/loaders.d.ts +0 -5
- package/lib/loaders.js +255 -299
- package/lib/loaders.mjs +1 -13
- package/lib/logger.js +1 -1
- package/lib/logger.mjs +1 -1
- package/lib/organes.js +1 -1
- package/lib/organes.mjs +1 -1
- package/lib/parsers/documents.js +11 -11
- package/lib/parsers/documents.mjs +1 -1
- package/lib/parsers/index.d.ts +1 -0
- package/lib/parsers/index.js +8 -1
- package/lib/parsers/index.mjs +2 -1
- package/lib/parsers/recherche_amendements.js +17 -15
- package/lib/parsers/recherche_amendements.mjs +1 -1
- package/lib/parsers/textes_lois.d.ts +22 -15
- package/lib/parsers/textes_lois.js +264 -752
- package/lib/parsers/textes_lois.mjs +249 -597
- package/lib/raw_types/acteurs_et_organes.js +9 -9
- package/lib/raw_types/acteurs_et_organes.mjs +1 -1
- package/lib/raw_types/agendas.d.ts +1 -0
- package/lib/raw_types/agendas.js +11 -10
- package/lib/raw_types/agendas.mjs +3 -2
- package/lib/raw_types/amendements.js +9 -9
- package/lib/raw_types/amendements.mjs +1 -1
- package/lib/raw_types/debats.js +9 -9
- package/lib/raw_types/debats.mjs +1 -1
- package/lib/raw_types/dossiers_legislatifs.js +9 -9
- package/lib/raw_types/dossiers_legislatifs.mjs +1 -1
- package/lib/raw_types/questions.js +9 -9
- package/lib/raw_types/questions.mjs +1 -1
- package/lib/raw_types/scrutins.js +9 -9
- package/lib/raw_types/scrutins.mjs +1 -1
- package/lib/scripts/bugs_helper.js +25 -26
- package/lib/scripts/bugs_helper.mjs +3 -3
- package/lib/scripts/clean_reorganized_data.js +256 -245
- package/lib/scripts/clean_reorganized_data.mjs +18 -29
- package/lib/scripts/diff_amendements.js +9 -8
- package/lib/scripts/diff_amendements.mjs +1 -1
- package/lib/scripts/document_dossiers_legislatifs.js +24 -27
- package/lib/scripts/document_dossiers_legislatifs.mjs +3 -3
- package/lib/scripts/get_today_reunions.js +3 -2
- package/lib/scripts/get_today_reunions.mjs +1 -1
- package/lib/scripts/merge_scrutins.js +9 -8
- package/lib/scripts/merge_scrutins.mjs +1 -1
- package/lib/scripts/parse_textes_lois.js +6 -5
- package/lib/scripts/parse_textes_lois.mjs +1 -1
- package/lib/scripts/process_open_dataset.d.ts +0 -2
- package/lib/scripts/process_open_dataset.js +19 -19
- package/lib/scripts/process_open_dataset.mjs +3 -5
- package/lib/scripts/raw_types_from_amendements.d.ts +0 -1
- package/lib/scripts/raw_types_from_amendements.js +122 -198
- package/lib/scripts/raw_types_from_amendements.mjs +105 -60
- package/lib/scripts/reorganize_data.js +14 -15
- package/lib/scripts/reorganize_data.mjs +3 -3
- package/lib/scripts/retrieve_deputes_photos.js +40 -31
- package/lib/scripts/retrieve_deputes_photos.mjs +10 -2
- package/lib/scripts/retrieve_documents.d.ts +1 -1
- package/lib/scripts/retrieve_documents.js +230 -138
- package/lib/scripts/retrieve_documents.mjs +87 -38
- package/lib/scripts/retrieve_open_data.js +27 -30
- package/lib/scripts/retrieve_open_data.mjs +5 -8
- package/lib/scripts/retrieve_pending_amendments.js +14 -14
- package/lib/scripts/retrieve_pending_amendments.mjs +1 -1
- package/lib/scripts/retrieve_senateurs_photos.js +10 -10
- package/lib/scripts/retrieve_senateurs_photos.mjs +1 -1
- package/lib/scripts/retrieve_textes_lois.js +17 -15
- package/lib/scripts/retrieve_textes_lois.mjs +1 -1
- package/lib/scripts/shared/cli_helpers.d.ts +11 -0
- package/lib/scripts/shared/cli_helpers.js +13 -2
- package/lib/scripts/shared/cli_helpers.mjs +12 -1
- package/lib/scripts/test_iter_load.js +5 -19
- package/lib/scripts/test_iter_load.mjs +2 -9
- package/lib/scripts/test_load.js +2 -2
- package/lib/scripts/test_load.mjs +1 -1
- package/lib/scripts/test_load_big_files.js +2 -2
- package/lib/scripts/test_load_big_files.mjs +1 -1
- package/lib/scripts/validate_json.js +17 -18
- package/lib/scripts/validate_json.mjs +3 -3
- package/lib/shared_types/codes_actes.js +1 -1
- package/lib/shared_types/codes_actes.mjs +1 -1
- package/lib/strings.js +1 -1
- package/lib/strings.mjs +1 -1
- package/lib/types/acteurs_et_organes.js +9 -9
- package/lib/types/acteurs_et_organes.mjs +1 -1
- package/lib/types/agendas.d.ts +1 -0
- package/lib/types/agendas.js +11 -10
- package/lib/types/agendas.mjs +3 -2
- package/lib/types/amendements.js +9 -9
- package/lib/types/amendements.mjs +1 -1
- package/lib/types/debats.js +9 -9
- package/lib/types/debats.mjs +1 -1
- package/lib/types/dossiers_legislatifs.d.ts +13 -0
- package/lib/types/dossiers_legislatifs.js +47 -9
- package/lib/types/dossiers_legislatifs.mjs +39 -1
- package/lib/types/legislatures.js +1 -1
- package/lib/types/legislatures.mjs +1 -1
- package/lib/types/questions.js +9 -9
- package/lib/types/questions.mjs +1 -1
- package/lib/types/scrutins.js +9 -9
- package/lib/types/scrutins.mjs +1 -1
- package/lib/urls.js +2 -2
- package/lib/urls.mjs +1 -1
- package/package.json +14 -20
- package/lib/cleaners/textes_loi.d.ts +0 -1
- package/lib/cleaners/textes_loi.js +0 -12
- package/lib/cleaners/textes_loi.mjs +0 -5
- package/lib/examples/PIONANR5L15B0020/input.d.ts +0 -2
- package/lib/examples/PIONANR5L15B0020/input.js +0 -10
- package/lib/examples/PIONANR5L15B0020/input.mjs +0 -193
- package/lib/examples/PIONANR5L15B0020/input.ts +0 -193
- package/lib/examples/PIONANR5L15B0020/loi.json +0 -26
- package/lib/examples/PIONANR5L15B0020/loi_populated.json +0 -29
- package/lib/examples/PIONANR5L15B0020/meta.json +0 -28
- package/lib/examples/PIONANR5L15B0020/motifs.json +0 -5
- package/lib/examples/PIONANR5L15B0020/motifs_populated.json +0 -6
- package/lib/examples/PIONANR5L15B0020/sommaire.json +0 -3
- package/lib/examples/PRJLANR5L16B0914/input.d.ts +0 -2
- package/lib/examples/PRJLANR5L16B0914/input.js +0 -10
- package/lib/examples/PRJLANR5L16B0914/input.mjs +0 -322
- package/lib/examples/PRJLANR5L16B0914/input.ts +0 -322
- package/lib/examples/PRJLANR5L16B0914/loi.json +0 -14
- package/lib/examples/PRJLANR5L16B0914/loi_populated.json +0 -20
- package/lib/examples/PRJLANR5L16B0914/meta.json +0 -35
- package/lib/examples/PRJLANR5L16B0914/motifs.json +0 -4
- package/lib/examples/PRJLANR5L16B0914/motifs_populated.json +0 -5
- package/lib/examples/PRJLANR5L16B0914/sommaire.json +0 -3
- package/lib/examples/PRJLANR5L16B2014/README.md +0 -2
- package/lib/examples/PRJLANR5L16B2014/input.d.ts +0 -2
- package/lib/examples/PRJLANR5L16B2014/input.js +0 -10
- package/lib/examples/PRJLANR5L16B2014/input.mjs +0 -577
- package/lib/examples/PRJLANR5L16B2014/input.ts +0 -577
- package/lib/examples/PRJLANR5L16B2014/loi.json +0 -369
- package/lib/examples/PRJLANR5L16B2014/meta.json +0 -31
- package/lib/examples/PRJLANR5L16B2014/motifs.json +0 -5
- package/lib/examples/PRJLANR5L16B2014/sommaire.json +0 -51
- package/lib/examples/PRJLANR5L16B2424/alineas.json +0 -44
- package/lib/examples/PRJLANR5L16B2424/input.d.ts +0 -2
- package/lib/examples/PRJLANR5L16B2424/input.js +0 -10
- package/lib/examples/PRJLANR5L16B2424/input.mjs +0 -322
- package/lib/examples/PRJLANR5L16B2424/input.ts +0 -322
- package/lib/examples/PRJLANR5L16B2424/loi.json +0 -74
- package/lib/examples/PRJLANR5L16B2424/loi_populated.json +0 -87
- package/lib/examples/PRJLANR5L16B2424/meta.json +0 -31
- package/lib/examples/PRJLANR5L16B2424/motifs.json +0 -4
- package/lib/examples/PRJLANR5L16B2424/motifs_populated.json +0 -5
- package/lib/examples/PRJLANR5L16B2424/sommaire.json +0 -3
- package/lib/examples/PRJLANR5L16B2462/input.d.ts +0 -2
- package/lib/examples/PRJLANR5L16B2462/input.js +0 -10
- package/lib/examples/PRJLANR5L16B2462/input.mjs +0 -1308
- package/lib/examples/PRJLANR5L16B2462/input.ts +0 -1308
- package/lib/examples/PRJLANR5L16B2462/loi.json +0 -74
- package/lib/examples/PRJLANR5L16B2462/loi_populated.json +0 -310
- package/lib/examples/PRJLANR5L16B2462/meta.json +0 -29
- package/lib/examples/PRJLANR5L16B2462/motifs.json +0 -6
- package/lib/examples/PRJLANR5L16B2462/motifs_populated.json +0 -6
- package/lib/examples/PRJLANR5L16B2462/sommaire.json +0 -50
- package/lib/examples/README.md +0 -3
- package/lib/raw_types/textes_loi.d.ts +0 -93
- package/lib/raw_types/textes_loi.js +0 -429
- package/lib/raw_types/textes_loi.mjs +0 -378
- package/lib/schemas/texte_loi/Alinea.json +0 -36
- package/lib/schemas/texte_loi/ExposeMotifs.json +0 -24
- package/lib/schemas/texte_loi/MetaDonnees.json +0 -126
- package/lib/schemas/texte_loi/ProjetLoi.json +0 -64
- package/lib/schemas/texte_loi/Sommaire.json +0 -48
- package/lib/schemas/texte_loi/TexteLoi.json +0 -225
- package/lib/schemas/texte_loi/TexteLoiPartiel.json +0 -237
- package/lib/scripts/process_textes_loi_dataset.d.ts +0 -7
- package/lib/scripts/process_textes_loi_dataset.js +0 -373
- package/lib/scripts/process_textes_loi_dataset.mjs +0 -239
- package/lib/types/textes_loi.d.ts +0 -94
- package/lib/types/textes_loi.js +0 -429
- package/lib/types/textes_loi.mjs +0 -378
|
@@ -3,6 +3,7 @@ import fs from "fs-extra";
|
|
|
3
3
|
import path from "path";
|
|
4
4
|
import { cleanActeur, cleanAmendement, cleanDocumentOrDivision, cleanDossierParlementaire, cleanOrgane, cleanReunion, cleanScrutin, cleanQuestion, cleanCompteRendu } from "../cleaners/index.mjs";
|
|
5
5
|
import { datasets, EnabledDatasets, getEnabledDatasets, filterByLegislature } from "../datasets.mjs";
|
|
6
|
+
import { downloadAndParse } from "./retrieve_documents.mjs";
|
|
6
7
|
import { existingDateToJson, patchedDateToJson } from "../dates.mjs";
|
|
7
8
|
import { walkDir } from "../file_systems.mjs";
|
|
8
9
|
import * as git from "../git.mjs";
|
|
@@ -13,9 +14,9 @@ import { Convert as DossiersLegislatifsConvert } from "../types/dossiers_legisla
|
|
|
13
14
|
import { Convert as ScrutinsConvert } from "../types/scrutins.mjs";
|
|
14
15
|
import { Convert as QuestionsConvert } from "../types/questions.mjs";
|
|
15
16
|
import { Convert as ComptesRendusConvert } from "../types/debats.mjs";
|
|
16
|
-
import { cloneOption, commitOption, remoteOption, legislatureOption, categoriesOption, dataDirDefaultOption, silentOption, verboseOption, pullOption, fetchDocumentsOption } from "./shared/cli_helpers.mjs";
|
|
17
|
+
import { cloneOption, commitOption, remoteOption, legislatureOption, categoriesOption, dataDirDefaultOption, silentOption, verboseOption, pullOption, fetchDocumentsOption, parseDocumentsOption, documentFormatOption } from "./shared/cli_helpers.mjs";
|
|
17
18
|
function parseArgs(argv) {
|
|
18
|
-
const optionsDefinitions = [cloneOption, commitOption, remoteOption, legislatureOption, categoriesOption, silentOption, verboseOption, dataDirDefaultOption, pullOption, fetchDocumentsOption, {
|
|
19
|
+
const optionsDefinitions = [cloneOption, commitOption, remoteOption, legislatureOption, categoriesOption, silentOption, verboseOption, dataDirDefaultOption, pullOption, fetchDocumentsOption, parseDocumentsOption, documentFormatOption, {
|
|
19
20
|
alias: "d",
|
|
20
21
|
help: "single dataset to reorganize",
|
|
21
22
|
name: "dataset",
|
|
@@ -60,7 +61,7 @@ function cleanAndValidateData(data, cleaner, fromJson, toJson, noValidate) {
|
|
|
60
61
|
return toJson(validatedData);
|
|
61
62
|
}
|
|
62
63
|
}
|
|
63
|
-
function processFiles(datasetRawDir, datasetCleanDir, walkDirParams, cleaner, dataConverter, options) {
|
|
64
|
+
async function processFiles(datasetRawDir, datasetCleanDir, walkDirParams, cleaner, dataConverter, options, postProcessor) {
|
|
64
65
|
for (const filePathArray of walkDir(datasetRawDir, walkDirParams)) {
|
|
65
66
|
const filename = filePathArray[filePathArray.length - 1];
|
|
66
67
|
if (!filename.endsWith(".json")) continue;
|
|
@@ -77,6 +78,9 @@ function processFiles(datasetRawDir, datasetCleanDir, walkDirParams, cleaner, da
|
|
|
77
78
|
fs.writeFileSync(cleanFilePath, cleanJson, {
|
|
78
79
|
encoding: "utf8"
|
|
79
80
|
});
|
|
81
|
+
if (postProcessor) {
|
|
82
|
+
await postProcessor(data, datasetCleanDir, options);
|
|
83
|
+
}
|
|
80
84
|
}
|
|
81
85
|
}
|
|
82
86
|
async function cleanReorganizedData(options) {
|
|
@@ -99,11 +103,11 @@ async function cleanReorganizedData(options) {
|
|
|
99
103
|
git.resetAndPull(datasetCleanDir);
|
|
100
104
|
}
|
|
101
105
|
analyzeAndRemove(datasetName, options);
|
|
102
|
-
processFiles(datasetRawDir, datasetCleanDir, ["acteurs"], cleanActeur, {
|
|
106
|
+
await processFiles(datasetRawDir, datasetCleanDir, ["acteurs"], cleanActeur, {
|
|
103
107
|
fromJson: ActeursEtOrganesConvert.toActeur,
|
|
104
108
|
toJson: ActeursEtOrganesConvert.acteurToJson
|
|
105
109
|
}, options);
|
|
106
|
-
processFiles(datasetRawDir, datasetCleanDir, ["organes"], cleanOrgane, {
|
|
110
|
+
await processFiles(datasetRawDir, datasetCleanDir, ["organes"], cleanOrgane, {
|
|
107
111
|
fromJson: ActeursEtOrganesConvert.toOrgane,
|
|
108
112
|
toJson: ActeursEtOrganesConvert.organeToJson
|
|
109
113
|
}, options);
|
|
@@ -120,7 +124,7 @@ async function cleanReorganizedData(options) {
|
|
|
120
124
|
analyzeAndRemove(datasetName, options);
|
|
121
125
|
const datasetRawDir = path.join(dataDir, datasetName);
|
|
122
126
|
const datasetCleanDir = datasetRawDir + "_nettoye";
|
|
123
|
-
processFiles(datasetRawDir, datasetCleanDir, [], cleanReunion, {
|
|
127
|
+
await processFiles(datasetRawDir, datasetCleanDir, [], cleanReunion, {
|
|
124
128
|
fromJson: AgendasConvert.toReunion,
|
|
125
129
|
toJson: AgendasConvert.reunionToJson
|
|
126
130
|
}, options);
|
|
@@ -137,7 +141,7 @@ async function cleanReorganizedData(options) {
|
|
|
137
141
|
analyzeAndRemove(datasetName, options);
|
|
138
142
|
const datasetRawDir = path.join(dataDir, datasetName);
|
|
139
143
|
const datasetCleanDir = datasetRawDir + "_nettoye";
|
|
140
|
-
processFiles(datasetRawDir, datasetCleanDir, [], cleanAmendement, {
|
|
144
|
+
await processFiles(datasetRawDir, datasetCleanDir, [], cleanAmendement, {
|
|
141
145
|
fromJson: AmendementsConvert.toAmendement,
|
|
142
146
|
toJson: AmendementsConvert.amendementToJson
|
|
143
147
|
}, options);
|
|
@@ -154,11 +158,11 @@ async function cleanReorganizedData(options) {
|
|
|
154
158
|
analyzeAndRemove(datasetName, options);
|
|
155
159
|
const datasetRawDir = path.join(dataDir, datasetName);
|
|
156
160
|
const datasetCleanDir = datasetRawDir + "_nettoye";
|
|
157
|
-
processFiles(datasetRawDir, datasetCleanDir, ["documents"], cleanDocumentOrDivision, {
|
|
161
|
+
await processFiles(datasetRawDir, datasetCleanDir, ["documents"], cleanDocumentOrDivision, {
|
|
158
162
|
fromJson: DossiersLegislatifsConvert.toDocument,
|
|
159
163
|
toJson: DossiersLegislatifsConvert.documentToJson
|
|
160
|
-
}, options);
|
|
161
|
-
processFiles(datasetRawDir, datasetCleanDir, ["dossiers"], cleanDossierParlementaire, {
|
|
164
|
+
}, options, downloadAndParse);
|
|
165
|
+
await processFiles(datasetRawDir, datasetCleanDir, ["dossiers"], cleanDossierParlementaire, {
|
|
162
166
|
fromJson: DossiersLegislatifsConvert.toDossierParlementaire,
|
|
163
167
|
toJson: DossiersLegislatifsConvert.dossierParlementaireToJson
|
|
164
168
|
}, options);
|
|
@@ -175,7 +179,7 @@ async function cleanReorganizedData(options) {
|
|
|
175
179
|
analyzeAndRemove(datasetName, options);
|
|
176
180
|
const datasetRawDir = path.join(dataDir, datasetName);
|
|
177
181
|
const datasetCleanDir = datasetRawDir + "_nettoye";
|
|
178
|
-
processFiles(datasetRawDir, datasetCleanDir, [], cleanScrutin, {
|
|
182
|
+
await processFiles(datasetRawDir, datasetCleanDir, [], cleanScrutin, {
|
|
179
183
|
fromJson: ScrutinsConvert.toScrutin,
|
|
180
184
|
toJson: ScrutinsConvert.scrutinToJson
|
|
181
185
|
}, options);
|
|
@@ -192,7 +196,7 @@ async function cleanReorganizedData(options) {
|
|
|
192
196
|
analyzeAndRemove(datasetName, options);
|
|
193
197
|
const datasetRawDir = path.join(dataDir, datasetName);
|
|
194
198
|
const datasetCleanDir = datasetRawDir + "_nettoye";
|
|
195
|
-
processFiles(datasetRawDir, datasetCleanDir, [], cleanQuestion, {
|
|
199
|
+
await processFiles(datasetRawDir, datasetCleanDir, [], cleanQuestion, {
|
|
196
200
|
fromJson: QuestionsConvert.toQuestion,
|
|
197
201
|
toJson: QuestionsConvert.questionToJson
|
|
198
202
|
}, options);
|
|
@@ -209,28 +213,13 @@ async function cleanReorganizedData(options) {
|
|
|
209
213
|
analyzeAndRemove(datasetName, options);
|
|
210
214
|
const datasetRawDir = path.join(dataDir, datasetName);
|
|
211
215
|
const datasetCleanDir = datasetRawDir + "_nettoye";
|
|
212
|
-
processFiles(datasetRawDir, datasetCleanDir, [], cleanCompteRendu, {
|
|
216
|
+
await processFiles(datasetRawDir, datasetCleanDir, [], cleanCompteRendu, {
|
|
213
217
|
fromJson: ComptesRendusConvert.toCompteRendu,
|
|
214
218
|
toJson: ComptesRendusConvert.compteRenduToJson
|
|
215
219
|
}, options);
|
|
216
220
|
exitCode = commitGit(datasetCleanDir, options, exitCode, ["."]);
|
|
217
221
|
}
|
|
218
222
|
}
|
|
219
|
-
if (enabledDatasets & EnabledDatasets.TextesLoi) {
|
|
220
|
-
for (const dataset of chosenDatasets.textesLoi) {
|
|
221
|
-
const datasetName = path.basename(dataset.filename, ".json");
|
|
222
|
-
if (options.dataset && datasetName !== options.dataset) {
|
|
223
|
-
continue;
|
|
224
|
-
}
|
|
225
|
-
if (typeof dataset.clean === "function") {
|
|
226
|
-
await dataset.clean({
|
|
227
|
-
dataDir,
|
|
228
|
-
dataset,
|
|
229
|
-
options
|
|
230
|
-
});
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
223
|
|
|
235
224
|
// Restore standard conversion of dates to JSON.
|
|
236
225
|
Date.prototype.toJSON = existingDateToJson;
|
|
@@ -275,4 +264,4 @@ function main(argv) {
|
|
|
275
264
|
if (process.argv[1].endsWith("clean_reorganized_data.ts")) {
|
|
276
265
|
main(process.argv).then(process.exit);
|
|
277
266
|
}
|
|
278
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kTGluZUFyZ3MiLCJmcyIsInBhdGgiLCJjbGVhbkFjdGV1ciIsImNsZWFuQW1lbmRlbWVudCIsImNsZWFuRG9jdW1lbnRPckRpdmlzaW9uIiwiY2xlYW5Eb3NzaWVyUGFybGVtZW50YWlyZSIsImNsZWFuT3JnYW5lIiwiY2xlYW5SZXVuaW9uIiwiY2xlYW5TY3J1dGluIiwiY2xlYW5RdWVzdGlvbiIsImNsZWFuQ29tcHRlUmVuZHUiLCJkYXRhc2V0cyIsIkVuYWJsZWREYXRhc2V0cyIsImdldEVuYWJsZWREYXRhc2V0cyIsImZpbHRlckJ5TGVnaXNsYXR1cmUiLCJleGlzdGluZ0RhdGVUb0pzb24iLCJwYXRjaGVkRGF0ZVRvSnNvbiIsIndhbGtEaXIiLCJnaXQiLCJDb252ZXJ0IiwiQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQiLCJBZ2VuZGFzQ29udmVydCIsIkFtZW5kZW1lbnRzQ29udmVydCIsIkRvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0IiwiU2NydXRpbnNDb252ZXJ0IiwiUXVlc3Rpb25zQ29udmVydCIsIkNvbXB0ZXNSZW5kdXNDb252ZXJ0IiwiY2xvbmVPcHRpb24iLCJjb21taXRPcHRpb24iLCJyZW1vdGVPcHRpb24iLCJsZWdpc2xhdHVyZU9wdGlvbiIsImNhdGVnb3JpZXNPcHRpb24iLCJkYXRhRGlyRGVmYXVsdE9wdGlvbiIsInNpbGVudE9wdGlvbiIsInZlcmJvc2VPcHRpb24iLCJwdWxsT3B0aW9uIiwiZmV0Y2hEb2N1bWVudHNPcHRpb24iLCJwYXJzZUFyZ3MiLCJhcmd2Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiYWxpYXMiLCJoZWxwIiwibmFtZSIsInR5cGUiLCJTdHJpbmciLCJCb29sZWFuIiwib3B0aW9ucyIsImNsb25lR2l0IiwiZ2l0R3JvdXBVcmwiLCJkYXRhc2V0TmFtZSIsImRhdGFEaXIiLCJjbG9uZSIsImNvbW1pdEdpdCIsImRhdGFzZXRDbGVhbkRpciIsImV4aXRDb2RlIiwic3ViZGlyZWN0b3JpZXMiLCJjb21taXQiLCJlcnJvckNvZGUiLCJjb21taXRBbmRQdXNoIiwicmVtb3RlIiwiY29tbWl0QW5kUHVzaFVpZCIsImNsZWFuQW5kVmFsaWRhdGVEYXRhIiwiZGF0YSIsImNsZWFuZXIiLCJmcm9tSnNvbiIsInRvSnNvbiIsIm5vVmFsaWRhdGUiLCJqc29uRGF0YSIsIkpTT04iLCJzdHJpbmdpZnkiLCJ2YWxpZGF0ZWREYXRhIiwicHJvY2Vzc0ZpbGVzIiwiZGF0YXNldFJhd0RpciIsIndhbGtEaXJQYXJhbXMiLCJkYXRhQ29udmVydGVyIiwiZmlsZVBhdGhBcnJheSIsImZpbGVuYW1lIiwibGVuZ3RoIiwiZW5kc1dpdGgiLCJyYXdGaWxlUGF0aCIsImpvaW4iLCJyYXdKc29uIiwicmVhZEZpbGVTeW5jIiwiZW5jb2RpbmciLCJ2ZXJib3NlIiwiY29uc29sZSIsImxvZyIsInBhcnNlIiwidmFsaWRhdGVEYXRhIiwiY2xlYW5Kc29uIiwiY2xlYW5GaWxlUGF0aCIsImVuc3VyZURpclN5bmMiLCJkaXJuYW1lIiwid3JpdGVGaWxlU3luYyIsImNsZWFuUmVvcmdhbml6ZWREYXRhIiwiRGF0ZSIsInByb3RvdHlwZSIsInRvSlNPTiIsInRyaW0iLCJyZXBsYWNlIiwiZW5hYmxlZERhdGFzZXRzIiwiY2F0ZWdvcmllcyIsImNob3NlbkRhdGFzZXRzIiwibGVnaXNsYXR1cmUiLCJBY3RldXJzRXRPcmdhbmVzIiwiZGF0YXNldCIsImFjdGV1cnNFdE9yZ2FuZXMiLCJiYXNlbmFtZSIsInB1bGwiLCJyZXNldEFuZFB1bGwiLCJhbmFseXplQW5kUmVtb3ZlIiwidG9BY3RldXIiLCJhY3RldXJUb0pzb24iLCJ0b09yZ2FuZSIsIm9yZ2FuZVRvSnNvbiIsIkFnZW5kYXMiLCJhZ2VuZGFzIiwidG9SZXVuaW9uIiwicmV1bmlvblRvSnNvbiIsIkFtZW5kZW1lbnRzIiwiYW1lbmRlbWVudHMiLCJ0b0FtZW5kZW1lbnQiLCJhbWVuZGVtZW50VG9Kc29uIiwiRG9zc2llcnNMZWdpc2xhdGlmcyIsImRvc3NpZXJzTGVnaXNsYXRpZnMiLCJ0b0RvY3VtZW50IiwiZG9jdW1lbnRUb0pzb24iLCJ0b0Rvc3NpZXJQYXJsZW1lbnRhaXJlIiwiZG9zc2llclBhcmxlbWVudGFpcmVUb0pzb24iLCJTY3J1dGlucyIsInNjcnV0aW5zIiwidG9TY3J1dGluIiwic2NydXRpblRvSnNvbiIsIlF1ZXN0aW9ucyIsInF1ZXN0aW9ucyIsInRvUXVlc3Rpb24iLCJxdWVzdGlvblRvSnNvbiIsIkNvbXB0ZXNSZW5kdXNTZWFuY2VzIiwiY29tcHRlc1JlbmR1c1NlYW5jZXMiLCJ0b0NvbXB0ZVJlbmR1IiwiY29tcHRlUmVuZHVUb0pzb24iLCJUZXh0ZXNMb2kiLCJ0ZXh0ZXNMb2kiLCJjbGVhbiIsInNpbGVudCIsInJlYWRkaXJTeW5jIiwicGF0aG5hbWUiLCJyZW1vdmVTeW5jIiwicmVwb3NpdG9yeURpciIsImVycm9yIiwidWlkQnJhbmNoVXBkYXRlIiwicnVuIiwiY2hpbGRQcm9jZXNzIiwibWFpbiIsInByb2Nlc3MiLCJ0aGVuIiwiZXhpdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL2NsZWFuX3Jlb3JnYW5pemVkX2RhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQge1xuICBjbGVhbkFjdGV1cixcbiAgY2xlYW5BbWVuZGVtZW50LFxuICBjbGVhbkRvY3VtZW50T3JEaXZpc2lvbixcbiAgY2xlYW5Eb3NzaWVyUGFybGVtZW50YWlyZSxcbiAgY2xlYW5PcmdhbmUsXG4gIGNsZWFuUmV1bmlvbixcbiAgY2xlYW5TY3J1dGluLFxuICBjbGVhblF1ZXN0aW9uLFxuICBjbGVhbkNvbXB0ZVJlbmR1LFxufSBmcm9tIFwiLi4vY2xlYW5lcnNcIlxuaW1wb3J0IHtcbiAgZGF0YXNldHMsXG4gIEVuYWJsZWREYXRhc2V0cyxcbiAgZ2V0RW5hYmxlZERhdGFzZXRzLFxuICBmaWx0ZXJCeUxlZ2lzbGF0dXJlLFxufSBmcm9tIFwiLi4vZGF0YXNldHNcIlxuaW1wb3J0IHsgZXhpc3RpbmdEYXRlVG9Kc29uLCBwYXRjaGVkRGF0ZVRvSnNvbiB9IGZyb20gXCIuLi9kYXRlc1wiXG5pbXBvcnQgeyB3YWxrRGlyIH0gZnJvbSBcIi4uL2ZpbGVfc3lzdGVtc1wiXG5pbXBvcnQgKiBhcyBnaXQgZnJvbSBcIi4uL2dpdFwiXG5pbXBvcnQge1xuICBBY3RldXIsXG4gIENvbnZlcnQgYXMgQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQsXG4gIE9yZ2FuZSxcbn0gZnJvbSBcIi4uL3R5cGVzL2FjdGV1cnNfZXRfb3JnYW5lc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIEFnZW5kYXNDb252ZXJ0LCBSZXVuaW9uIH0gZnJvbSBcIi4uL3R5cGVzL2FnZW5kYXNcIlxuaW1wb3J0IHsgQW1lbmRlbWVudCwgQ29udmVydCBhcyBBbWVuZGVtZW50c0NvbnZlcnQgfSBmcm9tIFwiLi4vdHlwZXMvYW1lbmRlbWVudHNcIlxuaW1wb3J0IHtcbiAgQ29udmVydCBhcyBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydCxcbiAgRG9jdW1lbnQsXG4gIERvc3NpZXJQYXJsZW1lbnRhaXJlLFxufSBmcm9tIFwiLi4vdHlwZXMvZG9zc2llcnNfbGVnaXNsYXRpZnNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBTY3J1dGluc0NvbnZlcnQsIFNjcnV0aW4gfSBmcm9tIFwiLi4vdHlwZXMvc2NydXRpbnNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBRdWVzdGlvbnNDb252ZXJ0LCBRdWVzdGlvbiB9IGZyb20gXCIuLi90eXBlcy9xdWVzdGlvbnNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBDb21wdGVzUmVuZHVzQ29udmVydCwgQ29tcHRlUmVuZHUgfSBmcm9tIFwiLi4vdHlwZXMvZGViYXRzXCJcbmltcG9ydCB7XG4gIGNsb25lT3B0aW9uLFxuICBjb21taXRPcHRpb24sXG4gIHJlbW90ZU9wdGlvbixcbiAgbGVnaXNsYXR1cmVPcHRpb24sXG4gIGNhdGVnb3JpZXNPcHRpb24sXG4gIGRhdGFEaXJEZWZhdWx0T3B0aW9uLFxuICBzaWxlbnRPcHRpb24sXG4gIHZlcmJvc2VPcHRpb24sXG4gIHB1bGxPcHRpb24sXG4gIGZldGNoRG9jdW1lbnRzT3B0aW9uLFxufSBmcm9tIFwiLi9zaGFyZWQvY2xpX2hlbHBlcnNcIlxuXG5mdW5jdGlvbiBwYXJzZUFyZ3MoYXJndjogc3RyaW5nW10pOiBhbnkge1xuICBjb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gICAgY2xvbmVPcHRpb24sXG4gICAgY29tbWl0T3B0aW9uLFxuICAgIHJlbW90ZU9wdGlvbixcbiAgICBsZWdpc2xhdHVyZU9wdGlvbixcbiAgICBjYXRlZ29yaWVzT3B0aW9uLFxuICAgIHNpbGVudE9wdGlvbixcbiAgICB2ZXJib3NlT3B0aW9uLFxuICAgIGRhdGFEaXJEZWZhdWx0T3B0aW9uLFxuICAgIHB1bGxPcHRpb24sXG4gICAgZmV0Y2hEb2N1bWVudHNPcHRpb24sXG4gICAge1xuICAgICAgYWxpYXM6IFwiZFwiLFxuICAgICAgaGVscDogXCJzaW5nbGUgZGF0YXNldCB0byByZW9yZ2FuaXplXCIsXG4gICAgICBuYW1lOiBcImRhdGFzZXRcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGhlbHA6IFwiZG8gbm90IHJlc2V0IC0taGFyZCBhZnRlciBjb21taXQgdG8gc2F2ZSBJL08gaWYgdGhlIHdvcmtpbmcgdHJlZSBpcyB0byBiZSBkaXNjYXJkZWRcIixcbiAgICAgIG5hbWU6IFwibm8tcmVzZXQtYWZ0ZXItY29tbWl0XCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwiVlwiLFxuICAgICAgaGVscDogXCJkb24ndCB2YWxpZGF0ZSBkYXRhXCIsXG4gICAgICBuYW1lOiBcIm5vLXZhbGlkYXRlXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMsIHtcbiAgICBhcmd2OiBhcmd2LFxuICB9KVxuICByZXR1cm4gb3B0aW9uc1xufVxuXG5mdW5jdGlvbiBjbG9uZUdpdChcbiAgZ2l0R3JvdXBVcmw6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgZGF0YXNldE5hbWU6IHN0cmluZyxcbiAgZGF0YURpcjogc3RyaW5nLFxuKTogdm9pZCB7XG4gIGdpdC5jbG9uZShnaXRHcm91cFVybCwgYCR7ZGF0YXNldE5hbWV9X25ldHRveWVgLCBkYXRhRGlyKVxufVxuXG5mdW5jdGlvbiBjb21taXRHaXQoXG4gIGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nLFxuICBvcHRpb25zOiBhbnksXG4gIGV4aXRDb2RlOiBudW1iZXIsXG4gIHN1YmRpcmVjdG9yaWVzOiBhbnksXG4pOiBudW1iZXIge1xuICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgKVxuICAgIGlmIChcbiAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICApIHtcbiAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgfVxuICB9XG4gIGlmIChcbiAgICBjb21taXRBbmRQdXNoVWlkKGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgc3ViZGlyZWN0b3JpZXMpICYmXG4gICAgKGV4aXRDb2RlID09PSAwIHx8IGV4aXRDb2RlID09PSAxMClcbiAgKSB7XG4gICAgZXhpdENvZGUgPSAxXG4gIH1cbiAgcmV0dXJuIGV4aXRDb2RlXG59XG5cbmZ1bmN0aW9uIGNsZWFuQW5kVmFsaWRhdGVEYXRhPFQ+KFxuICBkYXRhOiBhbnksXG4gIGNsZWFuZXI6IChkYXRhOiBUKSA9PiB2b2lkLFxuICBmcm9tSnNvbjogKGpzb246IHN0cmluZykgPT4gVCxcbiAgdG9Kc29uOiAoZGF0YTogVCkgPT4gc3RyaW5nLFxuICBub1ZhbGlkYXRlOiBCb29sZWFuLFxuKTogc3RyaW5nIHtcbiAgY2xlYW5lcihkYXRhKVxuICBjb25zdCBqc29uRGF0YSA9IEpTT04uc3RyaW5naWZ5KGRhdGEsIG51bGwsIDIpXG4gIGlmICghbm9WYWxpZGF0ZSkge1xuICAgIHJldHVybiBqc29uRGF0YVxuICB9IGVsc2Uge1xuICAgIGNvbnN0IHZhbGlkYXRlZERhdGE6IFQgPSBmcm9tSnNvbihqc29uRGF0YSlcbiAgICByZXR1cm4gdG9Kc29uKHZhbGlkYXRlZERhdGEpXG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc0ZpbGVzPFQ+KFxuICBkYXRhc2V0UmF3RGlyOiBzdHJpbmcsXG4gIGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nLFxuICB3YWxrRGlyUGFyYW1zOiBhbnlbXSxcbiAgY2xlYW5lcjogYW55LFxuICBkYXRhQ29udmVydGVyOiB7IGZyb21Kc29uOiBhbnk7IHRvSnNvbjogYW55IH0sXG4gIG9wdGlvbnM6IGFueSxcbik6IHZvaWQge1xuICBmb3IgKGNvbnN0IGZpbGVQYXRoQXJyYXkgb2Ygd2Fsa0RpcihkYXRhc2V0UmF3RGlyLCB3YWxrRGlyUGFyYW1zKSkge1xuICAgIGNvbnN0IGZpbGVuYW1lID0gZmlsZVBhdGhBcnJheVtmaWxlUGF0aEFycmF5Lmxlbmd0aCAtIDFdXG4gICAgaWYgKCFmaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSBjb250aW51ZVxuICAgIGNvbnN0IHJhd0ZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXRSYXdEaXIsIC4uLmZpbGVQYXRoQXJyYXkpXG4gICAgY29uc3QgcmF3SnNvbiA9IGZzLnJlYWRGaWxlU3luYyhyYXdGaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICBpZiAob3B0aW9ucy52ZXJib3NlKSBjb25zb2xlLmxvZyhgQ2xlYW5pbmcgZmlsZTogJHtyYXdGaWxlUGF0aH0uLi5gKVxuICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKHJhd0pzb24pXG4gICAgY29uc3QgdmFsaWRhdGVEYXRhID0gIW9wdGlvbnNbXCJuby12YWxpZGF0ZVwiXVxuICAgIGNvbnN0IGNsZWFuSnNvbiA9IGNsZWFuQW5kVmFsaWRhdGVEYXRhPFQ+KFxuICAgICAgZGF0YSxcbiAgICAgIGNsZWFuZXIsXG4gICAgICBkYXRhQ29udmVydGVyLmZyb21Kc29uLFxuICAgICAgZGF0YUNvbnZlcnRlci50b0pzb24sXG4gICAgICB2YWxpZGF0ZURhdGEsXG4gICAgKVxuICAgIGNvbnN0IGNsZWFuRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldENsZWFuRGlyLCAuLi5maWxlUGF0aEFycmF5KVxuICAgIGZzLmVuc3VyZURpclN5bmMocGF0aC5kaXJuYW1lKGNsZWFuRmlsZVBhdGgpKVxuICAgIGZzLndyaXRlRmlsZVN5bmMoY2xlYW5GaWxlUGF0aCwgY2xlYW5Kc29uLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNsZWFuUmVvcmdhbml6ZWREYXRhKG9wdGlvbnM6IGFueSk6IFByb21pc2U8bnVtYmVyPiB7XG4gIGNvbnN0IGRhdGFEaXI6IHN0cmluZyA9IG9wdGlvbnMuZGF0YURpclxuICBEYXRlLnByb3RvdHlwZS50b0pTT04gPSBwYXRjaGVkRGF0ZVRvSnNvblxuICBsZXQgZXhpdENvZGUgPSBvcHRpb25zLmNvbW1pdCA/IDEwIDogMFxuICBjb25zdCBnaXRHcm91cFVybCA9IG9wdGlvbnMuY2xvbmU/LnRyaW0oKS5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpXG4gIGNvbnN0IGVuYWJsZWREYXRhc2V0cyA9IGdldEVuYWJsZWREYXRhc2V0cyhvcHRpb25zLmNhdGVnb3JpZXMpXG4gIGxldCBjaG9zZW5EYXRhc2V0cyA9IGZpbHRlckJ5TGVnaXNsYXR1cmUoZGF0YXNldHMsIG9wdGlvbnMubGVnaXNsYXR1cmUpXG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLmFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcblxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG4gICAgICBpZiAob3B0aW9ucy5wdWxsKSB7XG4gICAgICAgIGdpdC5yZXNldEFuZFB1bGwoZGF0YXNldENsZWFuRGlyKVxuICAgICAgfVxuXG4gICAgICBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lLCBvcHRpb25zKVxuICAgICAgcHJvY2Vzc0ZpbGVzPEFjdGV1cj4oXG4gICAgICAgIGRhdGFzZXRSYXdEaXIsXG4gICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgW1wiYWN0ZXVyc1wiXSxcbiAgICAgICAgY2xlYW5BY3RldXIsXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tSnNvbjogQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9BY3RldXIsXG4gICAgICAgICAgdG9Kc29uOiBBY3RldXJzRXRPcmdhbmVzQ29udmVydC5hY3RldXJUb0pzb24sXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApXG4gICAgICBwcm9jZXNzRmlsZXM8T3JnYW5lPihcbiAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICBbXCJvcmdhbmVzXCJdLFxuICAgICAgICBjbGVhbk9yZ2FuZSxcbiAgICAgICAge1xuICAgICAgICAgIGZyb21Kc29uOiBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b09yZ2FuZSxcbiAgICAgICAgICB0b0pzb246IEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0Lm9yZ2FuZVRvSnNvbixcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIClcblxuICAgICAgZXhpdENvZGUgPSBjb21taXRHaXQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBleGl0Q29kZSwgW1xuICAgICAgICBcImFjdGV1cnNcIixcbiAgICAgICAgXCJvcmdhbmVzXCIsXG4gICAgICBdKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWdlbmRhcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9zZW5EYXRhc2V0cy5hZ2VuZGFzKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcblxuICAgICAgcHJvY2Vzc0ZpbGVzPFJldW5pb24+KFxuICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgIFtdLFxuICAgICAgICBjbGVhblJldW5pb24sXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tSnNvbjogQWdlbmRhc0NvbnZlcnQudG9SZXVuaW9uLFxuICAgICAgICAgIHRvSnNvbjogQWdlbmRhc0NvbnZlcnQucmV1bmlvblRvSnNvbixcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIClcblxuICAgICAgZXhpdENvZGUgPSBjb21taXRHaXQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBleGl0Q29kZSwgW1wiLlwiXSlcbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFtZW5kZW1lbnRzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLmFtZW5kZW1lbnRzKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcblxuICAgICAgcHJvY2Vzc0ZpbGVzPEFtZW5kZW1lbnQ+KFxuICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgIFtdLFxuICAgICAgICBjbGVhbkFtZW5kZW1lbnQsXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tSnNvbjogQW1lbmRlbWVudHNDb252ZXJ0LnRvQW1lbmRlbWVudCxcbiAgICAgICAgICB0b0pzb246IEFtZW5kZW1lbnRzQ29udmVydC5hbWVuZGVtZW50VG9Kc29uLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgKVxuXG4gICAgICBleGl0Q29kZSA9IGNvbW1pdEdpdChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIGV4aXRDb2RlLCBbXCIuXCJdKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9zZW5EYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcblxuICAgICAgcHJvY2Vzc0ZpbGVzPERvY3VtZW50PihcbiAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICBbXCJkb2N1bWVudHNcIl0sXG4gICAgICAgIGNsZWFuRG9jdW1lbnRPckRpdmlzaW9uLFxuICAgICAgICB7XG4gICAgICAgICAgZnJvbUpzb246IERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9jdW1lbnQsXG4gICAgICAgICAgdG9Kc29uOiBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC5kb2N1bWVudFRvSnNvbixcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIClcbiAgICAgIHByb2Nlc3NGaWxlczxEb3NzaWVyUGFybGVtZW50YWlyZT4oXG4gICAgICAgIGRhdGFzZXRSYXdEaXIsXG4gICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgW1wiZG9zc2llcnNcIl0sXG4gICAgICAgIGNsZWFuRG9zc2llclBhcmxlbWVudGFpcmUsXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tSnNvbjogRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb3NzaWVyUGFybGVtZW50YWlyZSxcbiAgICAgICAgICB0b0pzb246IERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LmRvc3NpZXJQYXJsZW1lbnRhaXJlVG9Kc29uLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgKVxuXG4gICAgICBleGl0Q29kZSA9IGNvbW1pdEdpdChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIGV4aXRDb2RlLCBbXG4gICAgICAgIFwiZG9jdW1lbnRzXCIsXG4gICAgICAgIFwiZG9zc2llcnNcIixcbiAgICAgIF0pXG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5TY3J1dGlucykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9zZW5EYXRhc2V0cy5zY3J1dGlucykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLmpzb25cIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBjbG9uZUdpdChnaXRHcm91cFVybCwgZGF0YXNldE5hbWUsIGRhdGFEaXIpXG4gICAgICBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lLCBvcHRpb25zKVxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG5cbiAgICAgIHByb2Nlc3NGaWxlczxTY3J1dGluPihcbiAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICBbXSxcbiAgICAgICAgY2xlYW5TY3J1dGluLFxuICAgICAgICB7XG4gICAgICAgICAgZnJvbUpzb246IFNjcnV0aW5zQ29udmVydC50b1NjcnV0aW4sXG4gICAgICAgICAgdG9Kc29uOiBTY3J1dGluc0NvbnZlcnQuc2NydXRpblRvSnNvbixcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIClcblxuICAgICAgZXhpdENvZGUgPSBjb21taXRHaXQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBleGl0Q29kZSwgW1wiLlwiXSlcbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlF1ZXN0aW9ucykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5xdWVzdGlvbnMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgY2xvbmVHaXQoZ2l0R3JvdXBVcmwsIGRhdGFzZXROYW1lLCBkYXRhRGlyKVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuXG4gICAgICBwcm9jZXNzRmlsZXM8UXVlc3Rpb24+KFxuICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgIFtdLFxuICAgICAgICBjbGVhblF1ZXN0aW9uLFxuICAgICAgICB7XG4gICAgICAgICAgZnJvbUpzb246IFF1ZXN0aW9uc0NvbnZlcnQudG9RdWVzdGlvbixcbiAgICAgICAgICB0b0pzb246IFF1ZXN0aW9uc0NvbnZlcnQucXVlc3Rpb25Ub0pzb24sXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApXG5cbiAgICAgIGV4aXRDb2RlID0gY29tbWl0R2l0KGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgZXhpdENvZGUsIFtcIi5cIl0pXG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Db21wdGVzUmVuZHVzU2VhbmNlcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5jb21wdGVzUmVuZHVzU2VhbmNlcykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLnhtbFwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcblxuICAgICAgcHJvY2Vzc0ZpbGVzPENvbXB0ZVJlbmR1PihcbiAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICBbXSxcbiAgICAgICAgY2xlYW5Db21wdGVSZW5kdSxcbiAgICAgICAge1xuICAgICAgICAgIGZyb21Kc29uOiBDb21wdGVzUmVuZHVzQ29udmVydC50b0NvbXB0ZVJlbmR1LFxuICAgICAgICAgIHRvSnNvbjogQ29tcHRlc1JlbmR1c0NvbnZlcnQuY29tcHRlUmVuZHVUb0pzb24sXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApXG5cbiAgICAgIGV4aXRDb2RlID0gY29tbWl0R2l0KGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgZXhpdENvZGUsIFtcIi5cIl0pXG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5UZXh0ZXNMb2kpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvc2VuRGF0YXNldHMudGV4dGVzTG9pKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgZGF0YXNldC5jbGVhbiA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGF3YWl0IGRhdGFzZXQuY2xlYW4oeyBkYXRhRGlyLCBkYXRhc2V0LCBvcHRpb25zIH0pXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUmVzdG9yZSBzdGFuZGFyZCBjb252ZXJzaW9uIG9mIGRhdGVzIHRvIEpTT04uXG4gIERhdGUucHJvdG90eXBlLnRvSlNPTiA9IGV4aXN0aW5nRGF0ZVRvSnNvblxuXG4gIHJldHVybiBleGl0Q29kZVxufVxuXG5mdW5jdGlvbiBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lOiBzdHJpbmcsIG9wdGlvbnM6IGFueSk6IGFueSB7XG4gIGNvbnN0IGRhdGFEaXIgPSBvcHRpb25zLmRhdGFEaXJcbiAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgIGNvbnNvbGUubG9nKGBDbGVhbmluZyBkaXJlY3Rvcnk6ICR7ZGF0YXNldENsZWFuRGlyfeKApmApXG4gIH1cbiAgZnMuZW5zdXJlRGlyU3luYyhkYXRhc2V0Q2xlYW5EaXIpXG4gIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZnMucmVhZGRpclN5bmMoZGF0YXNldENsZWFuRGlyKSkge1xuICAgIGlmIChmaWxlbmFtZVswXSA9PT0gXCIuXCIpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGNvbnN0IHBhdGhuYW1lID0gcGF0aC5qb2luKGRhdGFzZXRDbGVhbkRpciwgZmlsZW5hbWUpXG4gICAgZnMucmVtb3ZlU3luYyhwYXRobmFtZSlcbiAgfVxufVxuXG5mdW5jdGlvbiBjb21taXRBbmRQdXNoVWlkKFxuICByZXBvc2l0b3J5RGlyOiBzdHJpbmcsXG4gIG9wdGlvbnM6IGFueSxcbiAgc3ViZGlyZWN0b3JpZXM6IGFueSxcbik6IGJvb2xlYW4ge1xuICBsZXQgZXJyb3IgPSBmYWxzZVxuICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICBnaXQudWlkQnJhbmNoVXBkYXRlKFxuICAgICAgcmVwb3NpdG9yeURpcixcbiAgICAgIHN1YmRpcmVjdG9yaWVzLFxuICAgICAgb3B0aW9uc1tcIm5vLXJlc2V0LWFmdGVyLWNvbW1pdFwiXSxcbiAgICApXG4gICAgZm9yIChjb25zdCByZW1vdGUgb2Ygb3B0aW9ucy5yZW1vdGUgfHwgW10pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGdpdC5ydW4ocmVwb3NpdG9yeURpciwgYHB1c2ggLS1xdWlldCAke3JlbW90ZX0gdWlkOnVpZGApXG4gICAgICB9IGNhdGNoIChjaGlsZFByb2Nlc3MpIHtcbiAgICAgICAgZXJyb3IgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBlcnJvclxufVxuXG5mdW5jdGlvbiBtYWluKGFyZ3Y6IGFueSk6IFByb21pc2U8bnVtYmVyPiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBwYXJzZUFyZ3MoYXJndilcbiAgcmV0dXJuIGNsZWFuUmVvcmdhbml6ZWREYXRhKG9wdGlvbnMpXG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKHByb2Nlc3MuYXJndlsxXS5lbmRzV2l0aChcImNsZWFuX3Jlb3JnYW5pemVkX2RhdGEudHNcIikpIHtcbiAgbWFpbihwcm9jZXNzLmFyZ3YpLnRoZW4ocHJvY2Vzcy5leGl0KVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxlQUFlLE1BQU0sbUJBQW1CO0FBQy9DLE9BQU9DLEVBQUUsTUFBTSxVQUFVO0FBQ3pCLE9BQU9DLElBQUksTUFBTSxNQUFNO0FBQUEsU0FFckJDLFdBQVcsRUFDWEMsZUFBZSxFQUNmQyx1QkFBdUIsRUFDdkJDLHlCQUF5QixFQUN6QkMsV0FBVyxFQUNYQyxZQUFZLEVBQ1pDLFlBQVksRUFDWkMsYUFBYSxFQUNiQyxnQkFBZ0I7QUFBQSxTQUdoQkMsUUFBUSxFQUNSQyxlQUFlLEVBQ2ZDLGtCQUFrQixFQUNsQkMsbUJBQW1CO0FBQUEsU0FFWkMsa0JBQWtCLEVBQUVDLGlCQUFpQjtBQUFBLFNBQ3JDQyxPQUFPO0FBQUEsT0FDVCxLQUFLQyxHQUFHO0FBQUEsU0FHYkMsT0FBTyxJQUFJQyx1QkFBdUI7QUFBQSxTQUczQkQsT0FBTyxJQUFJRSxjQUFjO0FBQUEsU0FDYkYsT0FBTyxJQUFJRyxrQkFBa0I7QUFBQSxTQUVoREgsT0FBTyxJQUFJSSwwQkFBMEI7QUFBQSxTQUk5QkosT0FBTyxJQUFJSyxlQUFlO0FBQUEsU0FDMUJMLE9BQU8sSUFBSU0sZ0JBQWdCO0FBQUEsU0FDM0JOLE9BQU8sSUFBSU8sb0JBQW9CO0FBQUEsU0FFdENDLFdBQVcsRUFDWEMsWUFBWSxFQUNaQyxZQUFZLEVBQ1pDLGlCQUFpQixFQUNqQkMsZ0JBQWdCLEVBQ2hCQyxvQkFBb0IsRUFDcEJDLFlBQVksRUFDWkMsYUFBYSxFQUNiQyxVQUFVLEVBQ1ZDLG9CQUFvQjtBQUd0QixTQUFTQyxTQUFTQSxDQUFDQyxJQUFjLEVBQU87RUFDdEMsTUFBTUMsa0JBQWtCLEdBQUcsQ0FDekJaLFdBQVcsRUFDWEMsWUFBWSxFQUNaQyxZQUFZLEVBQ1pDLGlCQUFpQixFQUNqQkMsZ0JBQWdCLEVBQ2hCRSxZQUFZLEVBQ1pDLGFBQWEsRUFDYkYsb0JBQW9CLEVBQ3BCRyxVQUFVLEVBQ1ZDLG9CQUFvQixFQUNwQjtJQUNFSSxLQUFLLEVBQUUsR0FBRztJQUNWQyxJQUFJLEVBQUUsOEJBQThCO0lBQ3BDQyxJQUFJLEVBQUUsU0FBUztJQUNmQyxJQUFJLEVBQUVDO0VBQ1IsQ0FBQyxFQUNEO0lBQ0VILElBQUksRUFBRSxxRkFBcUY7SUFDM0ZDLElBQUksRUFBRSx1QkFBdUI7SUFDN0JDLElBQUksRUFBRUU7RUFDUixDQUFDLEVBQ0Q7SUFDRUwsS0FBSyxFQUFFLEdBQUc7SUFDVkMsSUFBSSxFQUFFLHFCQUFxQjtJQUMzQkMsSUFBSSxFQUFFLGFBQWE7SUFDbkJDLElBQUksRUFBRUU7RUFDUixDQUFDLENBQ0Y7RUFDRCxNQUFNQyxPQUFPLEdBQUcvQyxlQUFlLENBQUN3QyxrQkFBa0IsRUFBRTtJQUNsREQsSUFBSSxFQUFFQTtFQUNSLENBQUMsQ0FBQztFQUNGLE9BQU9RLE9BQU87QUFDaEI7QUFFQSxTQUFTQyxRQUFRQSxDQUNmQyxXQUErQixFQUMvQkMsV0FBbUIsRUFDbkJDLE9BQWUsRUFDVDtFQUNOaEMsR0FBRyxDQUFDaUMsS0FBSyxDQUFDSCxXQUFXLEVBQUcsR0FBRUMsV0FBWSxVQUFTLEVBQUVDLE9BQU8sQ0FBQztBQUMzRDtBQUVBLFNBQVNFLFNBQVNBLENBQ2hCQyxlQUF1QixFQUN2QlAsT0FBWSxFQUNaUSxRQUFnQixFQUNoQkMsY0FBbUIsRUFDWDtFQUNSLElBQUlULE9BQU8sQ0FBQ1UsTUFBTSxFQUFFO0lBQ2xCLE1BQU1DLFNBQVMsR0FBR3ZDLEdBQUcsQ0FBQ3dDLGFBQWEsQ0FDakNMLGVBQWUsRUFDZixrQkFBa0IsRUFDbEJQLE9BQU8sQ0FBQ2EsTUFDVixDQUFDO0lBQ0QsSUFDR0wsUUFBUSxLQUFLLEVBQUUsSUFBSUcsU0FBUyxLQUFLLEVBQUUsSUFDbkNILFFBQVEsS0FBSyxDQUFDLElBQUlHLFNBQVMsS0FBSyxDQUFDLElBQUlBLFNBQVMsS0FBSyxFQUFHLEVBQ3ZEO01BQ0FILFFBQVEsR0FBR0csU0FBUztJQUN0QjtFQUNGO0VBQ0EsSUFDRUcsZ0JBQWdCLENBQUNQLGVBQWUsRUFBRVAsT0FBTyxFQUFFUyxjQUFjLENBQUMsS0FDekRELFFBQVEsS0FBSyxDQUFDLElBQUlBLFFBQVEsS0FBSyxFQUFFLENBQUMsRUFDbkM7SUFDQUEsUUFBUSxHQUFHLENBQUM7RUFDZDtFQUNBLE9BQU9BLFFBQVE7QUFDakI7QUFFQSxTQUFTTyxvQkFBb0JBLENBQzNCQyxJQUFTLEVBQ1RDLE9BQTBCLEVBQzFCQyxRQUE2QixFQUM3QkMsTUFBMkIsRUFDM0JDLFVBQW1CLEVBQ1g7RUFDUkgsT0FBTyxDQUFDRCxJQUFJLENBQUM7RUFDYixNQUFNSyxRQUFRLEdBQUdDLElBQUksQ0FBQ0MsU0FBUyxDQUFDUCxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztFQUM5QyxJQUFJLENBQUNJLFVBQVUsRUFBRTtJQUNmLE9BQU9DLFFBQVE7RUFDakIsQ0FBQyxNQUFNO0lBQ0wsTUFBTUcsYUFBZ0IsR0FBR04sUUFBUSxDQUFDRyxRQUFRLENBQUM7SUFDM0MsT0FBT0YsTUFBTSxDQUFDSyxhQUFhLENBQUM7RUFDOUI7QUFDRjtBQUVBLFNBQVNDLFlBQVlBLENBQ25CQyxhQUFxQixFQUNyQm5CLGVBQXVCLEVBQ3ZCb0IsYUFBb0IsRUFDcEJWLE9BQVksRUFDWlcsYUFBNkMsRUFDN0M1QixPQUFZLEVBQ047RUFDTixLQUFLLE1BQU02QixhQUFhLElBQUkxRCxPQUFPLENBQUN1RCxhQUFhLEVBQUVDLGFBQWEsQ0FBQyxFQUFFO0lBQ2pFLE1BQU1HLFFBQVEsR0FBR0QsYUFBYSxDQUFDQSxhQUFhLENBQUNFLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDeEQsSUFBSSxDQUFDRCxRQUFRLENBQUNFLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtJQUNqQyxNQUFNQyxXQUFXLEdBQUc5RSxJQUFJLENBQUMrRSxJQUFJLENBQUNSLGFBQWEsRUFBRSxHQUFHRyxhQUFhLENBQUM7SUFDOUQsTUFBTU0sT0FBTyxHQUFHakYsRUFBRSxDQUFDa0YsWUFBWSxDQUFDSCxXQUFXLEVBQUU7TUFBRUksUUFBUSxFQUFFO0lBQU8sQ0FBQyxDQUFDO0lBQ2xFLElBQUlyQyxPQUFPLENBQUNzQyxPQUFPLEVBQUVDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFFLGtCQUFpQlAsV0FBWSxLQUFJLENBQUM7SUFDcEUsTUFBTWpCLElBQUksR0FBR00sSUFBSSxDQUFDbUIsS0FBSyxDQUFDTixPQUFPLENBQUM7SUFDaEMsTUFBTU8sWUFBWSxHQUFHLENBQUMxQyxPQUFPLENBQUMsYUFBYSxDQUFDO0lBQzVDLE1BQU0yQyxTQUFTLEdBQUc1QixvQkFBb0IsQ0FDcENDLElBQUksRUFDSkMsT0FBTyxFQUNQVyxhQUFhLENBQUNWLFFBQVEsRUFDdEJVLGFBQWEsQ0FBQ1QsTUFBTSxFQUNwQnVCLFlBQ0YsQ0FBQztJQUNELE1BQU1FLGFBQWEsR0FBR3pGLElBQUksQ0FBQytFLElBQUksQ0FBQzNCLGVBQWUsRUFBRSxHQUFHc0IsYUFBYSxDQUFDO0lBQ2xFM0UsRUFBRSxDQUFDMkYsYUFBYSxDQUFDMUYsSUFBSSxDQUFDMkYsT0FBTyxDQUFDRixhQUFhLENBQUMsQ0FBQztJQUM3QzFGLEVBQUUsQ0FBQzZGLGFBQWEsQ0FBQ0gsYUFBYSxFQUFFRCxTQUFTLEVBQUU7TUFBRU4sUUFBUSxFQUFFO0lBQU8sQ0FBQyxDQUFDO0VBQ2xFO0FBQ0Y7QUFFQSxlQUFlVyxvQkFBb0JBLENBQUNoRCxPQUFZLEVBQW1CO0VBQ2pFLE1BQU1JLE9BQWUsR0FBR0osT0FBTyxDQUFDSSxPQUFPO0VBQ3ZDNkMsSUFBSSxDQUFDQyxTQUFTLENBQUNDLE1BQU0sR0FBR2pGLGlCQUFpQjtFQUN6QyxJQUFJc0MsUUFBUSxHQUFHUixPQUFPLENBQUNVLE1BQU0sR0FBRyxFQUFFLEdBQUcsQ0FBQztFQUN0QyxNQUFNUixXQUFXLEdBQUdGLE9BQU8sQ0FBQ0ssS0FBSyxFQUFFK0MsSUFBSSxDQUFDLENBQUMsQ0FBQ0MsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7RUFDN0QsTUFBTUMsZUFBZSxHQUFHdkYsa0JBQWtCLENBQUNpQyxPQUFPLENBQUN1RCxVQUFVLENBQUM7RUFDOUQsSUFBSUMsY0FBYyxHQUFHeEYsbUJBQW1CLENBQUNILFFBQVEsRUFBRW1DLE9BQU8sQ0FBQ3lELFdBQVcsQ0FBQztFQUV2RSxJQUFJSCxlQUFlLEdBQUd4RixlQUFlLENBQUM0RixnQkFBZ0IsRUFBRTtJQUN0RCxLQUFLLE1BQU1DLE9BQU8sSUFBSUgsY0FBYyxDQUFDSSxnQkFBZ0IsRUFBRTtNQUNyRCxNQUFNekQsV0FBVyxHQUFHaEQsSUFBSSxDQUFDMEcsUUFBUSxDQUFDRixPQUFPLENBQUM3QixRQUFRLEVBQUUsT0FBTyxDQUFDO01BQzVELElBQUk5QixPQUFPLENBQUMyRCxPQUFPLElBQUl4RCxXQUFXLEtBQUtILE9BQU8sQ0FBQzJELE9BQU8sRUFBRTtRQUN0RDtNQUNGO01BQ0ExRCxRQUFRLENBQUNDLFdBQVcsRUFBRUMsV0FBVyxFQUFFQyxPQUFPLENBQUM7TUFFM0MsTUFBTXNCLGFBQXFCLEdBQUd2RSxJQUFJLENBQUMrRSxJQUFJLENBQUM5QixPQUFPLEVBQUVELFdBQVcsQ0FBQztNQUM3RCxNQUFNSSxlQUF1QixHQUFHbUIsYUFBYSxHQUFHLFVBQVU7TUFDMUQsSUFBSTFCLE9BQU8sQ0FBQzhELElBQUksRUFBRTtRQUNoQjFGLEdBQUcsQ0FBQzJGLFlBQVksQ0FBQ3hELGVBQWUsQ0FBQztNQUNuQztNQUVBeUQsZ0JBQWdCLENBQUM3RCxXQUFXLEVBQUVILE9BQU8sQ0FBQztNQUN0Q3lCLFlBQVksQ0FDVkMsYUFBYSxFQUNibkIsZUFBZSxFQUNmLENBQUMsU0FBUyxDQUFDLEVBQ1huRCxXQUFXLEVBQ1g7UUFDRThELFFBQVEsRUFBRTVDLHVCQUF1QixDQUFDMkYsUUFBUTtRQUMxQzlDLE1BQU0sRUFBRTdDLHVCQUF1QixDQUFDNEY7TUFDbEMsQ0FBQyxFQUNEbEUsT0FDRixDQUFDO01BQ0R5QixZQUFZLENBQ1ZDLGFBQWEsRUFDYm5CLGVBQWUsRUFDZixDQUFDLFNBQVMsQ0FBQyxFQUNYL0MsV0FBVyxFQUNYO1FBQ0UwRCxRQUFRLEVBQUU1Qyx1QkFBdUIsQ0FBQzZGLFFBQVE7UUFDMUNoRCxNQUFNLEVBQUU3Qyx1QkFBdUIsQ0FBQzhGO01BQ2xDLENBQUMsRUFDRHBFLE9BQ0YsQ0FBQztNQUVEUSxRQUFRLEdBQUdGLFNBQVMsQ0FBQ0MsZUFBZSxFQUFFUCxPQUFPLEVBQUVRLFFBQVEsRUFBRSxDQUN2RCxTQUFTLEVBQ1QsU0FBUyxDQUNWLENBQUM7SUFDSjtFQUNGO0VBRUEsSUFBSThDLGVBQWUsR0FBR3hGLGVBQWUsQ0FBQ3VHLE9BQU8sRUFBRTtJQUM3QyxLQUFLLE1BQU1WLE9BQU8sSUFBSUgsY0FBYyxDQUFDYyxPQUFPLEVBQUU7TUFDNUMsTUFBTW5FLFdBQVcsR0FBR2hELElBQUksQ0FBQzBHLFFBQVEsQ0FBQ0YsT0FBTyxDQUFDN0IsUUFBUSxFQUFFLE9BQU8sQ0FBQztNQUM1RCxJQUFJOUIsT0FBTyxDQUFDMkQsT0FBTyxJQUFJeEQsV0FBVyxLQUFLSCxPQUFPLENBQUMyRCxPQUFPLEVBQUU7UUFDdEQ7TUFDRjtNQUVBMUQsUUFBUSxDQUFDQyxXQUFXLEVBQUVDLFdBQVcsRUFBRUMsT0FBTyxDQUFDO01BQzNDNEQsZ0JBQWdCLENBQUM3RCxXQUFXLEVBQUVILE9BQU8sQ0FBQztNQUN0QyxNQUFNMEIsYUFBcUIsR0FBR3ZFLElBQUksQ0FBQytFLElBQUksQ0FBQzlCLE9BQU8sRUFBRUQsV0FBVyxDQUFDO01BQzdELE1BQU1JLGVBQXVCLEdBQUdtQixhQUFhLEdBQUcsVUFBVTtNQUUxREQsWUFBWSxDQUNWQyxhQUFhLEVBQ2JuQixlQUFlLEVBQ2YsRUFBRSxFQUNGOUMsWUFBWSxFQUNaO1FBQ0V5RCxRQUFRLEVBQUUzQyxjQUFjLENBQUNnRyxTQUFTO1FBQ2xDcEQsTUFBTSxFQUFFNUMsY0FBYyxDQUFDaUc7TUFDekIsQ0FBQyxFQUNEeEUsT0FDRixDQUFDO01BRURRLFFBQVEsR0FBR0YsU0FBUyxDQUFDQyxlQUFlLEVBQUVQLE9BQU8sRUFBRVEsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakU7RUFDRjtFQUVBLElBQUk4QyxlQUFlLEdBQUd4RixlQUFlLENBQUMyRyxXQUFXLEVBQUU7SUFDakQsS0FBSyxNQUFNZCxPQUFPLElBQUlILGNBQWMsQ0FBQ2tCLFdBQVcsRUFBRTtNQUNoRCxNQUFNdkUsV0FBVyxHQUFHaEQsSUFBSSxDQUFDMEcsUUFBUSxDQUFDRixPQUFPLENBQUM3QixRQUFRLEVBQUUsT0FBTyxDQUFDO01BQzVELElBQUk5QixPQUFPLENBQUMyRCxPQUFPLElBQUl4RCxXQUFXLEtBQUtILE9BQU8sQ0FBQzJELE9BQU8sRUFBRTtRQUN0RDtNQUNGO01BRUExRCxRQUFRLENBQUNDLFdBQVcsRUFBRUMsV0FBVyxFQUFFQyxPQUFPLENBQUM7TUFDM0M0RCxnQkFBZ0IsQ0FBQzdELFdBQVcsRUFBRUgsT0FBTyxDQUFDO01BQ3RDLE1BQU0wQixhQUFxQixHQUFHdkUsSUFBSSxDQUFDK0UsSUFBSSxDQUFDOUIsT0FBTyxFQUFFRCxXQUFXLENBQUM7TUFDN0QsTUFBTUksZUFBdUIsR0FBR21CLGFBQWEsR0FBRyxVQUFVO01BRTFERCxZQUFZLENBQ1ZDLGFBQWEsRUFDYm5CLGVBQWUsRUFDZixFQUFFLEVBQ0ZsRCxlQUFlLEVBQ2Y7UUFDRTZELFFBQVEsRUFBRTFDLGtCQUFrQixDQUFDbUcsWUFBWTtRQUN6Q3hELE1BQU0sRUFBRTNDLGtCQUFrQixDQUFDb0c7TUFDN0IsQ0FBQyxFQUNENUUsT0FDRixDQUFDO01BRURRLFFBQVEsR0FBR0YsU0FBUyxDQUFDQyxlQUFlLEVBQUVQLE9BQU8sRUFBRVEsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakU7RUFDRjtFQUVBLElBQUk4QyxlQUFlLEdBQUd4RixlQUFlLENBQUMrRyxtQkFBbUIsRUFBRTtJQUN6RCxLQUFLLE1BQU1sQixPQUFPLElBQUlILGNBQWMsQ0FBQ3NCLG1CQUFtQixFQUFFO01BQ3hELE1BQU0zRSxXQUFXLEdBQUdoRCxJQUFJLENBQUMwRyxRQUFRLENBQUNGLE9BQU8sQ0FBQzdCLFFBQVEsRUFBRSxPQUFPLENBQUM7TUFDNUQsSUFBSTlCLE9BQU8sQ0FBQzJELE9BQU8sSUFBSXhELFdBQVcsS0FBS0gsT0FBTyxDQUFDMkQsT0FBTyxFQUFFO1FBQ3REO01BQ0Y7TUFFQTFELFFBQVEsQ0FBQ0MsV0FBVyxFQUFFQyxXQUFXLEVBQUVDLE9BQU8sQ0FBQztNQUMzQzRELGdCQUFnQixDQUFDN0QsV0FBVyxFQUFFSCxPQUFPLENBQUM7TUFDdEMsTUFBTTBCLGFBQXFCLEdBQUd2RSxJQUFJLENBQUMrRSxJQUFJLENBQUM5QixPQUFPLEVBQUVELFdBQVcsQ0FBQztNQUM3RCxNQUFNSSxlQUF1QixHQUFHbUIsYUFBYSxHQUFHLFVBQVU7TUFFMURELFlBQVksQ0FDVkMsYUFBYSxFQUNibkIsZUFBZSxFQUNmLENBQUMsV0FBVyxDQUFDLEVBQ2JqRCx1QkFBdUIsRUFDdkI7UUFDRTRELFFBQVEsRUFBRXpDLDBCQUEwQixDQUFDc0csVUFBVTtRQUMvQzVELE1BQU0sRUFBRTFDLDBCQUEwQixDQUFDdUc7TUFDckMsQ0FBQyxFQUNEaEYsT0FDRixDQUFDO01BQ0R5QixZQUFZLENBQ1ZDLGFBQWEsRUFDYm5CLGVBQWUsRUFDZixDQUFDLFVBQVUsQ0FBQyxFQUNaaEQseUJBQXlCLEVBQ3pCO1FBQ0UyRCxRQUFRLEVBQUV6QywwQkFBMEIsQ0FBQ3dHLHNCQUFzQjtRQUMzRDlELE1BQU0sRUFBRTFDLDBCQUEwQixDQUFDeUc7TUFDckMsQ0FBQyxFQUNEbEYsT0FDRixDQUFDO01BRURRLFFBQVEsR0FBR0YsU0FBUyxDQUFDQyxlQUFlLEVBQUVQLE9BQU8sRUFBRVEsUUFBUSxFQUFFLENBQ3ZELFdBQVcsRUFDWCxVQUFVLENBQ1gsQ0FBQztJQUNKO0VBQ0Y7RUFFQSxJQUFJOEMsZUFBZSxHQUFHeEYsZUFBZSxDQUFDcUgsUUFBUSxFQUFFO0lBQzlDLEtBQUssTUFBTXhCLE9BQU8sSUFBSUgsY0FBYyxDQUFDNEIsUUFBUSxFQUFFO01BQzdDLE1BQU1qRixXQUFXLEdBQUdoRCxJQUFJLENBQUMwRyxRQUFRLENBQUNGLE9BQU8sQ0FBQzdCLFFBQVEsRUFBRSxPQUFPLENBQUM7TUFDNUQsSUFBSTlCLE9BQU8sQ0FBQzJELE9BQU8sSUFBSXhELFdBQVcsS0FBS0gsT0FBTyxDQUFDMkQsT0FBTyxFQUFFO1FBQ3REO01BQ0Y7TUFFQTFELFFBQVEsQ0FBQ0MsV0FBVyxFQUFFQyxXQUFXLEVBQUVDLE9BQU8sQ0FBQztNQUMzQzRELGdCQUFnQixDQUFDN0QsV0FBVyxFQUFFSCxPQUFPLENBQUM7TUFDdEMsTUFBTTBCLGFBQXFCLEdBQUd2RSxJQUFJLENBQUMrRSxJQUFJLENBQUM5QixPQUFPLEVBQUVELFdBQVcsQ0FBQztNQUM3RCxNQUFNSSxlQUF1QixHQUFHbUIsYUFBYSxHQUFHLFVBQVU7TUFFMURELFlBQVksQ0FDVkMsYUFBYSxFQUNibkIsZUFBZSxFQUNmLEVBQUUsRUFDRjdDLFlBQVksRUFDWjtRQUNFd0QsUUFBUSxFQUFFeEMsZUFBZSxDQUFDMkcsU0FBUztRQUNuQ2xFLE1BQU0sRUFBRXpDLGVBQWUsQ0FBQzRHO01BQzFCLENBQUMsRUFDRHRGLE9BQ0YsQ0FBQztNQUVEUSxRQUFRLEdBQUdGLFNBQVMsQ0FBQ0MsZUFBZSxFQUFFUCxPQUFPLEVBQUVRLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pFO0VBQ0Y7RUFFQSxJQUFJOEMsZUFBZSxHQUFHeEYsZUFBZSxDQUFDeUgsU0FBUyxFQUFFO0lBQy9DLEtBQUssTUFBTTVCLE9BQU8sSUFBSTlGLFFBQVEsQ0FBQzJILFNBQVMsRUFBRTtNQUN4QyxNQUFNckYsV0FBVyxHQUFHaEQsSUFBSSxDQUFDMEcsUUFBUSxDQUFDRixPQUFPLENBQUM3QixRQUFRLEVBQUUsT0FBTyxDQUFDO01BQzVELElBQUk5QixPQUFPLENBQUMyRCxPQUFPLElBQUl4RCxXQUFXLEtBQUtILE9BQU8sQ0FBQzJELE9BQU8sRUFBRTtRQUN0RDtNQUNGO01BRUExRCxRQUFRLENBQUNDLFdBQVcsRUFBRUMsV0FBVyxFQUFFQyxPQUFPLENBQUM7TUFDM0M0RCxnQkFBZ0IsQ0FBQzdELFdBQVcsRUFBRUgsT0FBTyxDQUFDO01BQ3RDLE1BQU0wQixhQUFxQixHQUFHdkUsSUFBSSxDQUFDK0UsSUFBSSxDQUFDOUIsT0FBTyxFQUFFRCxXQUFXLENBQUM7TUFDN0QsTUFBTUksZUFBdUIsR0FBR21CLGFBQWEsR0FBRyxVQUFVO01BRTFERCxZQUFZLENBQ1ZDLGFBQWEsRUFDYm5CLGVBQWUsRUFDZixFQUFFLEVBQ0Y1QyxhQUFhLEVBQ2I7UUFDRXVELFFBQVEsRUFBRXZDLGdCQUFnQixDQUFDOEcsVUFBVTtRQUNyQ3RFLE1BQU0sRUFBRXhDLGdCQUFnQixDQUFDK0c7TUFDM0IsQ0FBQyxFQUNEMUYsT0FDRixDQUFDO01BRURRLFFBQVEsR0FBR0YsU0FBUyxDQUFDQyxlQUFlLEVBQUVQLE9BQU8sRUFBRVEsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakU7RUFDRjtFQUVBLElBQUk4QyxlQUFlLEdBQUd4RixlQUFlLENBQUM2SCxvQkFBb0IsRUFBRTtJQUMxRCxLQUFLLE1BQU1oQyxPQUFPLElBQUk5RixRQUFRLENBQUMrSCxvQkFBb0IsRUFBRTtNQUNuRCxNQUFNekYsV0FBVyxHQUFHaEQsSUFBSSxDQUFDMEcsUUFBUSxDQUFDRixPQUFPLENBQUM3QixRQUFRLEVBQUUsTUFBTSxDQUFDO01BQzNELElBQUk5QixPQUFPLENBQUMyRCxPQUFPLElBQUl4RCxXQUFXLEtBQUtILE9BQU8sQ0FBQzJELE9BQU8sRUFBRTtRQUN0RDtNQUNGO01BRUExRCxRQUFRLENBQUNDLFdBQVcsRUFBRUMsV0FBVyxFQUFFQyxPQUFPLENBQUM7TUFDM0M0RCxnQkFBZ0IsQ0FBQzdELFdBQVcsRUFBRUgsT0FBTyxDQUFDO01BQ3RDLE1BQU0wQixhQUFxQixHQUFHdkUsSUFBSSxDQUFDK0UsSUFBSSxDQUFDOUIsT0FBTyxFQUFFRCxXQUFXLENBQUM7TUFDN0QsTUFBTUksZUFBdUIsR0FBR21CLGFBQWEsR0FBRyxVQUFVO01BRTFERCxZQUFZLENBQ1ZDLGFBQWEsRUFDYm5CLGVBQWUsRUFDZixFQUFFLEVBQ0YzQyxnQkFBZ0IsRUFDaEI7UUFDRXNELFFBQVEsRUFBRXRDLG9CQUFvQixDQUFDaUgsYUFBYTtRQUM1QzFFLE1BQU0sRUFBRXZDLG9CQUFvQixDQUFDa0g7TUFDL0IsQ0FBQyxFQUNEOUYsT0FDRixDQUFDO01BRURRLFFBQVEsR0FBR0YsU0FBUyxDQUFDQyxlQUFlLEVBQUVQLE9BQU8sRUFBRVEsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakU7RUFDRjtFQUVBLElBQUk4QyxlQUFlLEdBQUd4RixlQUFlLENBQUNpSSxTQUFTLEVBQUU7SUFDL0MsS0FBSyxNQUFNcEMsT0FBTyxJQUFJSCxjQUFjLENBQUN3QyxTQUFTLEVBQUU7TUFDOUMsTUFBTTdGLFdBQVcsR0FBR2hELElBQUksQ0FBQzBHLFFBQVEsQ0FBQ0YsT0FBTyxDQUFDN0IsUUFBUSxFQUFFLE9BQU8sQ0FBQztNQUM1RCxJQUFJOUIsT0FBTyxDQUFDMkQsT0FBTyxJQUFJeEQsV0FBVyxLQUFLSCxPQUFPLENBQUMyRCxPQUFPLEVBQUU7UUFDdEQ7TUFDRjtNQUVBLElBQUksT0FBT0EsT0FBTyxDQUFDc0MsS0FBSyxLQUFLLFVBQVUsRUFBRTtRQUN2QyxNQUFNdEMsT0FBTyxDQUFDc0MsS0FBSyxDQUFDO1VBQUU3RixPQUFPO1VBQUV1RCxPQUFPO1VBQUUzRDtRQUFRLENBQUMsQ0FBQztNQUNwRDtJQUNGO0VBQ0Y7O0VBRUE7RUFDQWlELElBQUksQ0FBQ0MsU0FBUyxDQUFDQyxNQUFNLEdBQUdsRixrQkFBa0I7RUFFMUMsT0FBT3VDLFFBQVE7QUFDakI7QUFFQSxTQUFTd0QsZ0JBQWdCQSxDQUFDN0QsV0FBbUIsRUFBRUgsT0FBWSxFQUFPO0VBQ2hFLE1BQU1JLE9BQU8sR0FBR0osT0FBTyxDQUFDSSxPQUFPO0VBQy9CLE1BQU1zQixhQUFxQixHQUFHdkUsSUFBSSxDQUFDK0UsSUFBSSxDQUFDOUIsT0FBTyxFQUFFRCxXQUFXLENBQUM7RUFDN0QsTUFBTUksZUFBdUIsR0FBR21CLGFBQWEsR0FBRyxVQUFVO0VBQzFELElBQUksQ0FBQzFCLE9BQU8sQ0FBQ2tHLE1BQU0sRUFBRTtJQUNuQjNELE9BQU8sQ0FBQ0MsR0FBRyxDQUFFLHVCQUFzQmpDLGVBQWdCLEdBQUUsQ0FBQztFQUN4RDtFQUNBckQsRUFBRSxDQUFDMkYsYUFBYSxDQUFDdEMsZUFBZSxDQUFDO0VBQ2pDLEtBQUssTUFBTXVCLFFBQVEsSUFBSTVFLEVBQUUsQ0FBQ2lKLFdBQVcsQ0FBQzVGLGVBQWUsQ0FBQyxFQUFFO0lBQ3RELElBQUl1QixRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFO01BQ3ZCO0lBQ0Y7SUFDQSxNQUFNc0UsUUFBUSxHQUFHakosSUFBSSxDQUFDK0UsSUFBSSxDQUFDM0IsZUFBZSxFQUFFdUIsUUFBUSxDQUFDO0lBQ3JENUUsRUFBRSxDQUFDbUosVUFBVSxDQUFDRCxRQUFRLENBQUM7RUFDekI7QUFDRjtBQUVBLFNBQVN0RixnQkFBZ0JBLENBQ3ZCd0YsYUFBcUIsRUFDckJ0RyxPQUFZLEVBQ1pTLGNBQW1CLEVBQ1Y7RUFDVCxJQUFJOEYsS0FBSyxHQUFHLEtBQUs7RUFDakIsSUFBSXZHLE9BQU8sQ0FBQ1UsTUFBTSxFQUFFO0lBQ2xCdEMsR0FBRyxDQUFDb0ksZUFBZSxDQUNqQkYsYUFBYSxFQUNiN0YsY0FBYyxFQUNkVCxPQUFPLENBQUMsdUJBQXVCLENBQ2pDLENBQUM7SUFDRCxLQUFLLE1BQU1hLE1BQU0sSUFBSWIsT0FBTyxDQUFDYSxNQUFNLElBQUksRUFBRSxFQUFFO01BQ3pDLElBQUk7UUFDRnpDLEdBQUcsQ0FBQ3FJLEdBQUcsQ0FBQ0gsYUFBYSxFQUFHLGdCQUFlekYsTUFBTyxVQUFTLENBQUM7TUFDMUQsQ0FBQyxDQUFDLE9BQU82RixZQUFZLEVBQUU7UUFDckJILEtBQUssR0FBRyxJQUFJO01BQ2Q7SUFDRjtFQUNGO0VBQ0EsT0FBT0EsS0FBSztBQUNkO0FBRUEsU0FBU0ksSUFBSUEsQ0FBQ25ILElBQVMsRUFBbUI7RUFDeEMsTUFBTVEsT0FBTyxHQUFHVCxTQUFTLENBQUNDLElBQUksQ0FBQztFQUMvQixPQUFPd0Qsb0JBQW9CLENBQUNoRCxPQUFPLENBQUM7QUFDdEM7O0FBRUE7QUFDQSxJQUFJNEcsT0FBTyxDQUFDcEgsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDd0MsUUFBUSxDQUFDLDJCQUEyQixDQUFDLEVBQUU7RUFDekQyRSxJQUFJLENBQUNDLE9BQU8sQ0FBQ3BILElBQUksQ0FBQyxDQUFDcUgsSUFBSSxDQUFDRCxPQUFPLENBQUNFLElBQUksQ0FBQztBQUN2QyJ9
|
|
267
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kTGluZUFyZ3MiLCJmcyIsInBhdGgiLCJjbGVhbkFjdGV1ciIsImNsZWFuQW1lbmRlbWVudCIsImNsZWFuRG9jdW1lbnRPckRpdmlzaW9uIiwiY2xlYW5Eb3NzaWVyUGFybGVtZW50YWlyZSIsImNsZWFuT3JnYW5lIiwiY2xlYW5SZXVuaW9uIiwiY2xlYW5TY3J1dGluIiwiY2xlYW5RdWVzdGlvbiIsImNsZWFuQ29tcHRlUmVuZHUiLCJkYXRhc2V0cyIsIkVuYWJsZWREYXRhc2V0cyIsImdldEVuYWJsZWREYXRhc2V0cyIsImZpbHRlckJ5TGVnaXNsYXR1cmUiLCJkb3dubG9hZEFuZFBhcnNlIiwiZXhpc3RpbmdEYXRlVG9Kc29uIiwicGF0Y2hlZERhdGVUb0pzb24iLCJ3YWxrRGlyIiwiZ2l0IiwiQ29udmVydCIsIkFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0IiwiQWdlbmRhc0NvbnZlcnQiLCJBbWVuZGVtZW50c0NvbnZlcnQiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydCIsIlNjcnV0aW5zQ29udmVydCIsIlF1ZXN0aW9uc0NvbnZlcnQiLCJDb21wdGVzUmVuZHVzQ29udmVydCIsImNsb25lT3B0aW9uIiwiY29tbWl0T3B0aW9uIiwicmVtb3RlT3B0aW9uIiwibGVnaXNsYXR1cmVPcHRpb24iLCJjYXRlZ29yaWVzT3B0aW9uIiwiZGF0YURpckRlZmF1bHRPcHRpb24iLCJzaWxlbnRPcHRpb24iLCJ2ZXJib3NlT3B0aW9uIiwicHVsbE9wdGlvbiIsImZldGNoRG9jdW1lbnRzT3B0aW9uIiwicGFyc2VEb2N1bWVudHNPcHRpb24iLCJkb2N1bWVudEZvcm1hdE9wdGlvbiIsInBhcnNlQXJncyIsImFyZ3YiLCJvcHRpb25zRGVmaW5pdGlvbnMiLCJhbGlhcyIsImhlbHAiLCJuYW1lIiwidHlwZSIsIlN0cmluZyIsIkJvb2xlYW4iLCJvcHRpb25zIiwiY2xvbmVHaXQiLCJnaXRHcm91cFVybCIsImRhdGFzZXROYW1lIiwiZGF0YURpciIsImNsb25lIiwiY29tbWl0R2l0IiwiZGF0YXNldENsZWFuRGlyIiwiZXhpdENvZGUiLCJzdWJkaXJlY3RvcmllcyIsImNvbW1pdCIsImVycm9yQ29kZSIsImNvbW1pdEFuZFB1c2giLCJyZW1vdGUiLCJjb21taXRBbmRQdXNoVWlkIiwiY2xlYW5BbmRWYWxpZGF0ZURhdGEiLCJkYXRhIiwiY2xlYW5lciIsImZyb21Kc29uIiwidG9Kc29uIiwibm9WYWxpZGF0ZSIsImpzb25EYXRhIiwiSlNPTiIsInN0cmluZ2lmeSIsInZhbGlkYXRlZERhdGEiLCJwcm9jZXNzRmlsZXMiLCJkYXRhc2V0UmF3RGlyIiwid2Fsa0RpclBhcmFtcyIsImRhdGFDb252ZXJ0ZXIiLCJwb3N0UHJvY2Vzc29yIiwiZmlsZVBhdGhBcnJheSIsImZpbGVuYW1lIiwibGVuZ3RoIiwiZW5kc1dpdGgiLCJyYXdGaWxlUGF0aCIsImpvaW4iLCJyYXdKc29uIiwicmVhZEZpbGVTeW5jIiwiZW5jb2RpbmciLCJ2ZXJib3NlIiwiY29uc29sZSIsImxvZyIsInBhcnNlIiwidmFsaWRhdGVEYXRhIiwiY2xlYW5Kc29uIiwiY2xlYW5GaWxlUGF0aCIsImVuc3VyZURpclN5bmMiLCJkaXJuYW1lIiwid3JpdGVGaWxlU3luYyIsImNsZWFuUmVvcmdhbml6ZWREYXRhIiwiRGF0ZSIsInByb3RvdHlwZSIsInRvSlNPTiIsInRyaW0iLCJyZXBsYWNlIiwiZW5hYmxlZERhdGFzZXRzIiwiY2F0ZWdvcmllcyIsImNob3NlbkRhdGFzZXRzIiwibGVnaXNsYXR1cmUiLCJBY3RldXJzRXRPcmdhbmVzIiwiZGF0YXNldCIsImFjdGV1cnNFdE9yZ2FuZXMiLCJiYXNlbmFtZSIsInB1bGwiLCJyZXNldEFuZFB1bGwiLCJhbmFseXplQW5kUmVtb3ZlIiwidG9BY3RldXIiLCJhY3RldXJUb0pzb24iLCJ0b09yZ2FuZSIsIm9yZ2FuZVRvSnNvbiIsIkFnZW5kYXMiLCJhZ2VuZGFzIiwidG9SZXVuaW9uIiwicmV1bmlvblRvSnNvbiIsIkFtZW5kZW1lbnRzIiwiYW1lbmRlbWVudHMiLCJ0b0FtZW5kZW1lbnQiLCJhbWVuZGVtZW50VG9Kc29uIiwiRG9zc2llcnNMZWdpc2xhdGlmcyIsImRvc3NpZXJzTGVnaXNsYXRpZnMiLCJ0b0RvY3VtZW50IiwiZG9jdW1lbnRUb0pzb24iLCJ0b0Rvc3NpZXJQYXJsZW1lbnRhaXJlIiwiZG9zc2llclBhcmxlbWVudGFpcmVUb0pzb24iLCJTY3J1dGlucyIsInNjcnV0aW5zIiwidG9TY3J1dGluIiwic2NydXRpblRvSnNvbiIsIlF1ZXN0aW9ucyIsInF1ZXN0aW9ucyIsInRvUXVlc3Rpb24iLCJxdWVzdGlvblRvSnNvbiIsIkNvbXB0ZXNSZW5kdXNTZWFuY2VzIiwiY29tcHRlc1JlbmR1c1NlYW5jZXMiLCJ0b0NvbXB0ZVJlbmR1IiwiY29tcHRlUmVuZHVUb0pzb24iLCJzaWxlbnQiLCJyZWFkZGlyU3luYyIsInBhdGhuYW1lIiwicmVtb3ZlU3luYyIsInJlcG9zaXRvcnlEaXIiLCJlcnJvciIsInVpZEJyYW5jaFVwZGF0ZSIsInJ1biIsImNoaWxkUHJvY2VzcyIsIm1haW4iLCJwcm9jZXNzIiwidGhlbiIsImV4aXQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyaXB0cy9jbGVhbl9yZW9yZ2FuaXplZF9kYXRhLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuaW1wb3J0IHtcbiAgY2xlYW5BY3RldXIsXG4gIGNsZWFuQW1lbmRlbWVudCxcbiAgY2xlYW5Eb2N1bWVudE9yRGl2aXNpb24sXG4gIGNsZWFuRG9zc2llclBhcmxlbWVudGFpcmUsXG4gIGNsZWFuT3JnYW5lLFxuICBjbGVhblJldW5pb24sXG4gIGNsZWFuU2NydXRpbixcbiAgY2xlYW5RdWVzdGlvbixcbiAgY2xlYW5Db21wdGVSZW5kdSxcbn0gZnJvbSBcIi4uL2NsZWFuZXJzXCJcbmltcG9ydCB7XG4gIGRhdGFzZXRzLFxuICBFbmFibGVkRGF0YXNldHMsXG4gIGdldEVuYWJsZWREYXRhc2V0cyxcbiAgZmlsdGVyQnlMZWdpc2xhdHVyZSxcbn0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IGRvd25sb2FkQW5kUGFyc2UgfSBmcm9tIFwiLi9yZXRyaWV2ZV9kb2N1bWVudHNcIlxuaW1wb3J0IHsgZXhpc3RpbmdEYXRlVG9Kc29uLCBwYXRjaGVkRGF0ZVRvSnNvbiB9IGZyb20gXCIuLi9kYXRlc1wiXG5pbXBvcnQgeyB3YWxrRGlyIH0gZnJvbSBcIi4uL2ZpbGVfc3lzdGVtc1wiXG5pbXBvcnQgKiBhcyBnaXQgZnJvbSBcIi4uL2dpdFwiXG5pbXBvcnQge1xuICBBY3RldXIsXG4gIENvbnZlcnQgYXMgQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQsXG4gIE9yZ2FuZSxcbn0gZnJvbSBcIi4uL3R5cGVzL2FjdGV1cnNfZXRfb3JnYW5lc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIEFnZW5kYXNDb252ZXJ0LCBSZXVuaW9uIH0gZnJvbSBcIi4uL3R5cGVzL2FnZW5kYXNcIlxuaW1wb3J0IHsgQW1lbmRlbWVudCwgQ29udmVydCBhcyBBbWVuZGVtZW50c0NvbnZlcnQgfSBmcm9tIFwiLi4vdHlwZXMvYW1lbmRlbWVudHNcIlxuaW1wb3J0IHtcbiAgQ29udmVydCBhcyBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydCxcbiAgRG9jdW1lbnQsXG4gIERvc3NpZXJQYXJsZW1lbnRhaXJlLFxufSBmcm9tIFwiLi4vdHlwZXMvZG9zc2llcnNfbGVnaXNsYXRpZnNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBTY3J1dGluc0NvbnZlcnQsIFNjcnV0aW4gfSBmcm9tIFwiLi4vdHlwZXMvc2NydXRpbnNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBRdWVzdGlvbnNDb252ZXJ0LCBRdWVzdGlvbiB9IGZyb20gXCIuLi90eXBlcy9xdWVzdGlvbnNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBDb21wdGVzUmVuZHVzQ29udmVydCwgQ29tcHRlUmVuZHUgfSBmcm9tIFwiLi4vdHlwZXMvZGViYXRzXCJcbmltcG9ydCB7XG4gIGNsb25lT3B0aW9uLFxuICBjb21taXRPcHRpb24sXG4gIHJlbW90ZU9wdGlvbixcbiAgbGVnaXNsYXR1cmVPcHRpb24sXG4gIGNhdGVnb3JpZXNPcHRpb24sXG4gIGRhdGFEaXJEZWZhdWx0T3B0aW9uLFxuICBzaWxlbnRPcHRpb24sXG4gIHZlcmJvc2VPcHRpb24sXG4gIHB1bGxPcHRpb24sXG4gIGZldGNoRG9jdW1lbnRzT3B0aW9uLFxuICBwYXJzZURvY3VtZW50c09wdGlvbixcbiAgZG9jdW1lbnRGb3JtYXRPcHRpb24sXG59IGZyb20gXCIuL3NoYXJlZC9jbGlfaGVscGVyc1wiXG5cbmZ1bmN0aW9uIHBhcnNlQXJncyhhcmd2OiBzdHJpbmdbXSk6IGFueSB7XG4gIGNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAgICBjbG9uZU9wdGlvbixcbiAgICBjb21taXRPcHRpb24sXG4gICAgcmVtb3RlT3B0aW9uLFxuICAgIGxlZ2lzbGF0dXJlT3B0aW9uLFxuICAgIGNhdGVnb3JpZXNPcHRpb24sXG4gICAgc2lsZW50T3B0aW9uLFxuICAgIHZlcmJvc2VPcHRpb24sXG4gICAgZGF0YURpckRlZmF1bHRPcHRpb24sXG4gICAgcHVsbE9wdGlvbixcbiAgICBmZXRjaERvY3VtZW50c09wdGlvbixcbiAgICBwYXJzZURvY3VtZW50c09wdGlvbixcbiAgICBkb2N1bWVudEZvcm1hdE9wdGlvbixcbiAgICB7XG4gICAgICBhbGlhczogXCJkXCIsXG4gICAgICBoZWxwOiBcInNpbmdsZSBkYXRhc2V0IHRvIHJlb3JnYW5pemVcIixcbiAgICAgIG5hbWU6IFwiZGF0YXNldFwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgaGVscDogXCJkbyBub3QgcmVzZXQgLS1oYXJkIGFmdGVyIGNvbW1pdCB0byBzYXZlIEkvTyBpZiB0aGUgd29ya2luZyB0cmVlIGlzIHRvIGJlIGRpc2NhcmRlZFwiLFxuICAgICAgbmFtZTogXCJuby1yZXNldC1hZnRlci1jb21taXRcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJWXCIsXG4gICAgICBoZWxwOiBcImRvbid0IHZhbGlkYXRlIGRhdGFcIixcbiAgICAgIG5hbWU6IFwibm8tdmFsaWRhdGVcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgXVxuICBjb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucywge1xuICAgIGFyZ3Y6IGFyZ3YsXG4gIH0pXG4gIHJldHVybiBvcHRpb25zXG59XG5cbmZ1bmN0aW9uIGNsb25lR2l0KFxuICBnaXRHcm91cFVybDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBkYXRhc2V0TmFtZTogc3RyaW5nLFxuICBkYXRhRGlyOiBzdHJpbmcsXG4pOiB2b2lkIHtcbiAgZ2l0LmNsb25lKGdpdEdyb3VwVXJsLCBgJHtkYXRhc2V0TmFtZX1fbmV0dG95ZWAsIGRhdGFEaXIpXG59XG5cbmZ1bmN0aW9uIGNvbW1pdEdpdChcbiAgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcsXG4gIG9wdGlvbnM6IGFueSxcbiAgZXhpdENvZGU6IG51bWJlcixcbiAgc3ViZGlyZWN0b3JpZXM6IGFueSxcbik6IG51bWJlciB7XG4gIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgXCJOb3V2ZWxsZSBtb2lzc29uXCIsXG4gICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICApXG4gICAgaWYgKFxuICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICkge1xuICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICB9XG4gIH1cbiAgaWYgKFxuICAgIGNvbW1pdEFuZFB1c2hVaWQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBzdWJkaXJlY3RvcmllcykgJiZcbiAgICAoZXhpdENvZGUgPT09IDAgfHwgZXhpdENvZGUgPT09IDEwKVxuICApIHtcbiAgICBleGl0Q29kZSA9IDFcbiAgfVxuICByZXR1cm4gZXhpdENvZGVcbn1cblxuZnVuY3Rpb24gY2xlYW5BbmRWYWxpZGF0ZURhdGE8VD4oXG4gIGRhdGE6IGFueSxcbiAgY2xlYW5lcjogKGRhdGE6IFQpID0+IHZvaWQsXG4gIGZyb21Kc29uOiAoanNvbjogc3RyaW5nKSA9PiBULFxuICB0b0pzb246IChkYXRhOiBUKSA9PiBzdHJpbmcsXG4gIG5vVmFsaWRhdGU6IEJvb2xlYW4sXG4pOiBzdHJpbmcge1xuICBjbGVhbmVyKGRhdGEpXG4gIGNvbnN0IGpzb25EYXRhID0gSlNPTi5zdHJpbmdpZnkoZGF0YSwgbnVsbCwgMilcbiAgaWYgKCFub1ZhbGlkYXRlKSB7XG4gICAgcmV0dXJuIGpzb25EYXRhXG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdmFsaWRhdGVkRGF0YTogVCA9IGZyb21Kc29uKGpzb25EYXRhKVxuICAgIHJldHVybiB0b0pzb24odmFsaWRhdGVkRGF0YSlcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBwcm9jZXNzRmlsZXM8VD4oXG4gIGRhdGFzZXRSYXdEaXI6IHN0cmluZyxcbiAgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcsXG4gIHdhbGtEaXJQYXJhbXM6IGFueVtdLFxuICBjbGVhbmVyOiBhbnksXG4gIGRhdGFDb252ZXJ0ZXI6IHsgZnJvbUpzb246IGFueTsgdG9Kc29uOiBhbnkgfSxcbiAgb3B0aW9uczogYW55LFxuICBwb3N0UHJvY2Vzc29yPzogYW55LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGZvciAoY29uc3QgZmlsZVBhdGhBcnJheSBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIsIHdhbGtEaXJQYXJhbXMpKSB7XG4gICAgY29uc3QgZmlsZW5hbWUgPSBmaWxlUGF0aEFycmF5W2ZpbGVQYXRoQXJyYXkubGVuZ3RoIC0gMV1cbiAgICBpZiAoIWZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIGNvbnRpbnVlXG4gICAgY29uc3QgcmF3RmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldFJhd0RpciwgLi4uZmlsZVBhdGhBcnJheSlcbiAgICBjb25zdCByYXdKc29uID0gZnMucmVhZEZpbGVTeW5jKHJhd0ZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIGNvbnNvbGUubG9nKGBDbGVhbmluZyBmaWxlOiAke3Jhd0ZpbGVQYXRofS4uLmApXG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UocmF3SnNvbilcbiAgICBjb25zdCB2YWxpZGF0ZURhdGEgPSAhb3B0aW9uc1tcIm5vLXZhbGlkYXRlXCJdXG4gICAgY29uc3QgY2xlYW5Kc29uID0gY2xlYW5BbmRWYWxpZGF0ZURhdGE8VD4oXG4gICAgICBkYXRhLFxuICAgICAgY2xlYW5lcixcbiAgICAgIGRhdGFDb252ZXJ0ZXIuZnJvbUpzb24sXG4gICAgICBkYXRhQ29udmVydGVyLnRvSnNvbixcbiAgICAgIHZhbGlkYXRlRGF0YSxcbiAgICApXG5cbiAgICBjb25zdCBjbGVhbkZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXRDbGVhbkRpciwgLi4uZmlsZVBhdGhBcnJheSlcbiAgICBmcy5lbnN1cmVEaXJTeW5jKHBhdGguZGlybmFtZShjbGVhbkZpbGVQYXRoKSlcbiAgICBmcy53cml0ZUZpbGVTeW5jKGNsZWFuRmlsZVBhdGgsIGNsZWFuSnNvbiwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcblxuICAgIGlmIChwb3N0UHJvY2Vzc29yKSB7XG4gICAgICBhd2FpdCBwb3N0UHJvY2Vzc29yKGRhdGEsIGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucylcbiAgICB9XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gY2xlYW5SZW9yZ2FuaXplZERhdGEob3B0aW9uczogYW55KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgY29uc3QgZGF0YURpcjogc3RyaW5nID0gb3B0aW9ucy5kYXRhRGlyXG4gIERhdGUucHJvdG90eXBlLnRvSlNPTiA9IHBhdGNoZWREYXRlVG9Kc29uXG4gIGxldCBleGl0Q29kZSA9IG9wdGlvbnMuY29tbWl0ID8gMTAgOiAwXG4gIGNvbnN0IGdpdEdyb3VwVXJsID0gb3B0aW9ucy5jbG9uZT8udHJpbSgpLnJlcGxhY2UoL1xcLyskLywgXCJcIilcbiAgY29uc3QgZW5hYmxlZERhdGFzZXRzID0gZ2V0RW5hYmxlZERhdGFzZXRzKG9wdGlvbnMuY2F0ZWdvcmllcylcbiAgbGV0IGNob3NlbkRhdGFzZXRzID0gZmlsdGVyQnlMZWdpc2xhdHVyZShkYXRhc2V0cywgb3B0aW9ucy5sZWdpc2xhdHVyZSlcblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvc2VuRGF0YXNldHMuYWN0ZXVyc0V0T3JnYW5lcykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLmpzb25cIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY2xvbmVHaXQoZ2l0R3JvdXBVcmwsIGRhdGFzZXROYW1lLCBkYXRhRGlyKVxuXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgICAgIGlmIChvcHRpb25zLnB1bGwpIHtcbiAgICAgICAgZ2l0LnJlc2V0QW5kUHVsbChkYXRhc2V0Q2xlYW5EaXIpXG4gICAgICB9XG5cbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBhd2FpdCBwcm9jZXNzRmlsZXM8QWN0ZXVyPihcbiAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICBbXCJhY3RldXJzXCJdLFxuICAgICAgICBjbGVhbkFjdGV1cixcbiAgICAgICAge1xuICAgICAgICAgIGZyb21Kc29uOiBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b0FjdGV1cixcbiAgICAgICAgICB0b0pzb246IEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LmFjdGV1clRvSnNvbixcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIClcbiAgICAgIGF3YWl0IHByb2Nlc3NGaWxlczxPcmdhbmU+KFxuICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgIFtcIm9yZ2FuZXNcIl0sXG4gICAgICAgIGNsZWFuT3JnYW5lLFxuICAgICAgICB7XG4gICAgICAgICAgZnJvbUpzb246IEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LnRvT3JnYW5lLFxuICAgICAgICAgIHRvSnNvbjogQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQub3JnYW5lVG9Kc29uLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgKVxuXG4gICAgICBleGl0Q29kZSA9IGNvbW1pdEdpdChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIGV4aXRDb2RlLCBbXG4gICAgICAgIFwiYWN0ZXVyc1wiLFxuICAgICAgICBcIm9yZ2FuZXNcIixcbiAgICAgIF0pXG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BZ2VuZGFzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLmFnZW5kYXMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgY2xvbmVHaXQoZ2l0R3JvdXBVcmwsIGRhdGFzZXROYW1lLCBkYXRhRGlyKVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuXG4gICAgICBhd2FpdCBwcm9jZXNzRmlsZXM8UmV1bmlvbj4oXG4gICAgICAgIGRhdGFzZXRSYXdEaXIsXG4gICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgW10sXG4gICAgICAgIGNsZWFuUmV1bmlvbixcbiAgICAgICAge1xuICAgICAgICAgIGZyb21Kc29uOiBBZ2VuZGFzQ29udmVydC50b1JldW5pb24sXG4gICAgICAgICAgdG9Kc29uOiBBZ2VuZGFzQ29udmVydC5yZXVuaW9uVG9Kc29uLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgKVxuXG4gICAgICBleGl0Q29kZSA9IGNvbW1pdEdpdChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIGV4aXRDb2RlLCBbXCIuXCJdKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQW1lbmRlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvc2VuRGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgY2xvbmVHaXQoZ2l0R3JvdXBVcmwsIGRhdGFzZXROYW1lLCBkYXRhRGlyKVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuXG4gICAgICBhd2FpdCBwcm9jZXNzRmlsZXM8QW1lbmRlbWVudD4oXG4gICAgICAgIGRhdGFzZXRSYXdEaXIsXG4gICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgW10sXG4gICAgICAgIGNsZWFuQW1lbmRlbWVudCxcbiAgICAgICAge1xuICAgICAgICAgIGZyb21Kc29uOiBBbWVuZGVtZW50c0NvbnZlcnQudG9BbWVuZGVtZW50LFxuICAgICAgICAgIHRvSnNvbjogQW1lbmRlbWVudHNDb252ZXJ0LmFtZW5kZW1lbnRUb0pzb24sXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApXG5cbiAgICAgIGV4aXRDb2RlID0gY29tbWl0R2l0KGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgZXhpdENvZGUsIFtcIi5cIl0pXG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Eb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLmRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgY2xvbmVHaXQoZ2l0R3JvdXBVcmwsIGRhdGFzZXROYW1lLCBkYXRhRGlyKVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuXG4gICAgICBhd2FpdCBwcm9jZXNzRmlsZXM8RG9jdW1lbnQ+KFxuICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgIFtcImRvY3VtZW50c1wiXSxcbiAgICAgICAgY2xlYW5Eb2N1bWVudE9yRGl2aXNpb24sXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tSnNvbjogRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb2N1bWVudCxcbiAgICAgICAgICB0b0pzb246IERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LmRvY3VtZW50VG9Kc29uLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICBkb3dubG9hZEFuZFBhcnNlLFxuICAgICAgKVxuICAgICAgYXdhaXQgcHJvY2Vzc0ZpbGVzPERvc3NpZXJQYXJsZW1lbnRhaXJlPihcbiAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICBbXCJkb3NzaWVyc1wiXSxcbiAgICAgICAgY2xlYW5Eb3NzaWVyUGFybGVtZW50YWlyZSxcbiAgICAgICAge1xuICAgICAgICAgIGZyb21Kc29uOiBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC50b0Rvc3NpZXJQYXJsZW1lbnRhaXJlLFxuICAgICAgICAgIHRvSnNvbjogRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQuZG9zc2llclBhcmxlbWVudGFpcmVUb0pzb24sXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApXG5cbiAgICAgIGV4aXRDb2RlID0gY29tbWl0R2l0KGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgZXhpdENvZGUsIFtcbiAgICAgICAgXCJkb2N1bWVudHNcIixcbiAgICAgICAgXCJkb3NzaWVyc1wiLFxuICAgICAgXSlcbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlNjcnV0aW5zKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLnNjcnV0aW5zKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcblxuICAgICAgYXdhaXQgcHJvY2Vzc0ZpbGVzPFNjcnV0aW4+KFxuICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgIFtdLFxuICAgICAgICBjbGVhblNjcnV0aW4sXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tSnNvbjogU2NydXRpbnNDb252ZXJ0LnRvU2NydXRpbixcbiAgICAgICAgICB0b0pzb246IFNjcnV0aW5zQ29udmVydC5zY3J1dGluVG9Kc29uLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgKVxuXG4gICAgICBleGl0Q29kZSA9IGNvbW1pdEdpdChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIGV4aXRDb2RlLCBbXCIuXCJdKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuUXVlc3Rpb25zKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLnF1ZXN0aW9ucykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLmpzb25cIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBjbG9uZUdpdChnaXRHcm91cFVybCwgZGF0YXNldE5hbWUsIGRhdGFEaXIpXG4gICAgICBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lLCBvcHRpb25zKVxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG5cbiAgICAgIGF3YWl0IHByb2Nlc3NGaWxlczxRdWVzdGlvbj4oXG4gICAgICAgIGRhdGFzZXRSYXdEaXIsXG4gICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgW10sXG4gICAgICAgIGNsZWFuUXVlc3Rpb24sXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tSnNvbjogUXVlc3Rpb25zQ29udmVydC50b1F1ZXN0aW9uLFxuICAgICAgICAgIHRvSnNvbjogUXVlc3Rpb25zQ29udmVydC5xdWVzdGlvblRvSnNvbixcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIClcblxuICAgICAgZXhpdENvZGUgPSBjb21taXRHaXQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBleGl0Q29kZSwgW1wiLlwiXSlcbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkNvbXB0ZXNSZW5kdXNTZWFuY2VzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmNvbXB0ZXNSZW5kdXNTZWFuY2VzKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIueG1sXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgY2xvbmVHaXQoZ2l0R3JvdXBVcmwsIGRhdGFzZXROYW1lLCBkYXRhRGlyKVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuXG4gICAgICBhd2FpdCBwcm9jZXNzRmlsZXM8Q29tcHRlUmVuZHU+KFxuICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgIFtdLFxuICAgICAgICBjbGVhbkNvbXB0ZVJlbmR1LFxuICAgICAgICB7XG4gICAgICAgICAgZnJvbUpzb246IENvbXB0ZXNSZW5kdXNDb252ZXJ0LnRvQ29tcHRlUmVuZHUsXG4gICAgICAgICAgdG9Kc29uOiBDb21wdGVzUmVuZHVzQ29udmVydC5jb21wdGVSZW5kdVRvSnNvbixcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIClcblxuICAgICAgZXhpdENvZGUgPSBjb21taXRHaXQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBleGl0Q29kZSwgW1wiLlwiXSlcbiAgICB9XG4gIH1cblxuICAvLyBSZXN0b3JlIHN0YW5kYXJkIGNvbnZlcnNpb24gb2YgZGF0ZXMgdG8gSlNPTi5cbiAgRGF0ZS5wcm90b3R5cGUudG9KU09OID0gZXhpc3RpbmdEYXRlVG9Kc29uXG5cbiAgcmV0dXJuIGV4aXRDb2RlXG59XG5cbmZ1bmN0aW9uIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWU6IHN0cmluZywgb3B0aW9uczogYW55KTogYW55IHtcbiAgY29uc3QgZGF0YURpciA9IG9wdGlvbnMuZGF0YURpclxuICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgY29uc29sZS5sb2coYENsZWFuaW5nIGRpcmVjdG9yeTogJHtkYXRhc2V0Q2xlYW5EaXJ94oCmYClcbiAgfVxuICBmcy5lbnN1cmVEaXJTeW5jKGRhdGFzZXRDbGVhbkRpcilcbiAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBmcy5yZWFkZGlyU3luYyhkYXRhc2V0Q2xlYW5EaXIpKSB7XG4gICAgaWYgKGZpbGVuYW1lWzBdID09PSBcIi5cIikge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgY29uc3QgcGF0aG5hbWUgPSBwYXRoLmpvaW4oZGF0YXNldENsZWFuRGlyLCBmaWxlbmFtZSlcbiAgICBmcy5yZW1vdmVTeW5jKHBhdGhuYW1lKVxuICB9XG59XG5cbmZ1bmN0aW9uIGNvbW1pdEFuZFB1c2hVaWQoXG4gIHJlcG9zaXRvcnlEaXI6IHN0cmluZyxcbiAgb3B0aW9uczogYW55LFxuICBzdWJkaXJlY3RvcmllczogYW55LFxuKTogYm9vbGVhbiB7XG4gIGxldCBlcnJvciA9IGZhbHNlXG4gIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgIGdpdC51aWRCcmFuY2hVcGRhdGUoXG4gICAgICByZXBvc2l0b3J5RGlyLFxuICAgICAgc3ViZGlyZWN0b3JpZXMsXG4gICAgICBvcHRpb25zW1wibm8tcmVzZXQtYWZ0ZXItY29tbWl0XCJdLFxuICAgIClcbiAgICBmb3IgKGNvbnN0IHJlbW90ZSBvZiBvcHRpb25zLnJlbW90ZSB8fCBbXSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZ2l0LnJ1bihyZXBvc2l0b3J5RGlyLCBgcHVzaCAtLXF1aWV0ICR7cmVtb3RlfSB1aWQ6dWlkYClcbiAgICAgIH0gY2F0Y2ggKGNoaWxkUHJvY2Vzcykge1xuICAgICAgICBlcnJvciA9IHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGVycm9yXG59XG5cbmZ1bmN0aW9uIG1haW4oYXJndjogYW55KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IHBhcnNlQXJncyhhcmd2KVxuICByZXR1cm4gY2xlYW5SZW9yZ2FuaXplZERhdGEob3B0aW9ucylcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAocHJvY2Vzcy5hcmd2WzFdLmVuZHNXaXRoKFwiY2xlYW5fcmVvcmdhbml6ZWRfZGF0YS50c1wiKSkge1xuICBtYWluKHByb2Nlc3MuYXJndikudGhlbihwcm9jZXNzLmV4aXQpXG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLGVBQWUs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
|
|
@@ -14,6 +14,7 @@ require("core-js/modules/es.string.iterator.js");
|
|
|
14
14
|
require("core-js/modules/web.dom-collections.iterator.js");
|
|
15
15
|
require("core-js/modules/es.array.for-each.js");
|
|
16
16
|
require("core-js/modules/es.array.join.js");
|
|
17
|
+
require("core-js/modules/es.date.to-json.js");
|
|
17
18
|
require("core-js/modules/es.object.keys.js");
|
|
18
19
|
require("core-js/modules/es.object.to-string.js");
|
|
19
20
|
require("core-js/modules/es.regexp.exec.js");
|
|
@@ -25,14 +26,14 @@ var _deepObjectDiff = require("deep-object-diff");
|
|
|
25
26
|
var _datasets = require("../datasets");
|
|
26
27
|
var _file_systems = require("../file_systems");
|
|
27
28
|
var _cli_helpers = require("./shared/cli_helpers");
|
|
28
|
-
function _interopRequireDefault(
|
|
29
|
-
function _toConsumableArray(
|
|
29
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
30
|
+
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
|
|
30
31
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
31
|
-
function _iterableToArray(
|
|
32
|
-
function _arrayWithoutHoles(
|
|
33
|
-
function _createForOfIteratorHelper(
|
|
34
|
-
function _unsupportedIterableToArray(
|
|
35
|
-
function _arrayLikeToArray(
|
|
32
|
+
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
|
33
|
+
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
|
34
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
35
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
36
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
36
37
|
var diffedAmendments = [];
|
|
37
38
|
var newAmendments = [];
|
|
38
39
|
var optionsDefinitions = [_cli_helpers.silentOption, _cli_helpers.verboseOption, _cli_helpers.dataDirDefaultOption, {
|
|
@@ -245,4 +246,4 @@ function generateSingleDiffedAmendment(diffedAmendment) {
|
|
|
245
246
|
});
|
|
246
247
|
}
|
|
247
248
|
diffAmendements(options.dataDir);
|
|
248
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29tbWFuZExpbmVBcmdzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZnNFeHRyYSIsIl9wYXRoIiwiX2RlZXBPYmplY3REaWZmIiwiX2RhdGFzZXRzIiwiX2ZpbGVfc3lzdGVtcyIsIl9jbGlfaGVscGVycyIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiVHlwZUVycm9yIiwiaXRlciIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJmcm9tIiwiaXNBcnJheSIsIl9hcnJheUxpa2VUb0FycmF5IiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJvIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsImxlbmd0aCIsImkiLCJGIiwicyIsIm4iLCJkb25lIiwidmFsdWUiLCJlIiwiX2UiLCJmIiwibm9ybWFsQ29tcGxldGlvbiIsImRpZEVyciIsImVyciIsImNhbGwiLCJzdGVwIiwibmV4dCIsIl9lMiIsIm1pbkxlbiIsIk9iamVjdCIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJ0ZXN0IiwibGVuIiwiYXJyMiIsImRpZmZlZEFtZW5kbWVudHMiLCJuZXdBbWVuZG1lbnRzIiwib3B0aW9uc0RlZmluaXRpb25zIiwic2lsZW50T3B0aW9uIiwidmVyYm9zZU9wdGlvbiIsImRhdGFEaXJEZWZhdWx0T3B0aW9uIiwiYWxpYXMiLCJoZWxwIiwiZGVmYXVsdFZhbHVlIiwidHlwZSIsIlN0cmluZyIsIm9wdGlvbnMiLCJjb21tYW5kTGluZUFyZ3MiLCJkaWZmQW1lbmRlbWVudHMiLCJkYXRhRGlyIiwicHJldmlvdXMiLCJjb25zb2xlIiwiZXJyb3IiLCJwcm9jZXNzIiwiZXhpdCIsImZzIiwiZXhpc3RzU3luYyIsIm91dHB1dCIsIl9pdGVyYXRvciIsImRhdGFzZXRzIiwiYW1lbmRlbWVudHMiLCJfc3RlcCIsImRhdGFzZXQiLCJzdHJ1Y3R1cmUiLCJEYXRhc2V0U3RydWN0dXJlIiwiU2VnbWVudGVkRmlsZXMiLCJvcmlnaW5hbEpzb25EaXIiLCJwYXRoIiwiam9pbiIsImZpbGVuYW1lIiwic2lsZW50IiwibG9nIiwiY29uY2F0IiwiX2l0ZXJhdG9yMiIsIndhbGtEaXIiLCJfc3RlcDIiLCJhbWVuZGVtZW50U3BsaXRQYXRoIiwibmV3RmlsZVBhdGgiLCJuZXdGaWxlIiwiSlNPTiIsInBhcnNlIiwicmVhZEZpbGVTeW5jIiwidG9Mb2NhbGVTdHJpbmciLCJvbGRGaWxlUGF0aCIsIm9sZEZpbGVFeGlzdHMiLCJhZGRUb1F1ZXVlRm9yTmV3QW1lbmRtZW50cyIsIm9sZEZpbGUiLCJkaWZmIiwiZGV0YWlsZWREaWZmIiwia2V5cyIsImFkZGVkIiwidXBkYXRlZCIsImRlbGV0ZWQiLCJhZGRUb1F1ZXVlRm9yRGlmZmVkQW1lbmRtZW50cyIsImdlbmVyYXRlRGlmZkZpbGVzIiwibW9kZSIsIndyaXRlRmlsZVN5bmMiLCJzdHJpbmdpZnkiLCJlbmNvZGluZyIsImZsYWciLCJmb3JFYWNoIiwiZGlmZmVkQW1lbmRtZW50IiwiZ2VuZXJhdGVTaW5nbGVEaWZmZWRBbWVuZG1lbnQiLCJuZXdBbWVuZG1lbnQiLCJnZW5lcmF0ZVNpbmdsZU5ld0FtZW5kbWVudCIsImZpbGUiLCJhbWVuZG1lbnQiLCJkYXRhIiwicHVzaCIsImRpZmZlZERhdGEiLCJzaGlmdCIsInNob3J0RGlyIiwicG9wIiwibWtkaXJTeW5jIiwicmVjdXJzaXZlIiwicmVwbGFjZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL2RpZmZfYW1lbmRlbWVudHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQgeyBkZXRhaWxlZERpZmYgfSBmcm9tIFwiZGVlcC1vYmplY3QtZGlmZlwiXG5pbXBvcnQgeyBkYXRhc2V0cywgRGF0YXNldFN0cnVjdHVyZSB9IGZyb20gXCIuLi9kYXRhc2V0c1wiXG5pbXBvcnQgeyB3YWxrRGlyIH0gZnJvbSBcIi4uL2ZpbGVfc3lzdGVtc1wiXG5pbXBvcnQge1xuICBzaWxlbnRPcHRpb24sXG4gIHZlcmJvc2VPcHRpb24sXG4gIGRhdGFEaXJEZWZhdWx0T3B0aW9uLFxufSBmcm9tIFwiLi9zaGFyZWQvY2xpX2hlbHBlcnNcIlxuY29uc3QgZGlmZmVkQW1lbmRtZW50czogQXJyYXk8YW55PiA9IFtdXG5jb25zdCBuZXdBbWVuZG1lbnRzOiBBcnJheTxhbnk+ID0gW11cblxuY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICBzaWxlbnRPcHRpb24sXG4gIHZlcmJvc2VPcHRpb24sXG4gIGRhdGFEaXJEZWZhdWx0T3B0aW9uLFxuICB7XG4gICAgYWxpYXM6IFwibVwiLFxuICAgIGhlbHA6IFwiRGlmZiBtb2Rlcy5cIixcbiAgICBuYW1lOiBcIm1vZGVcIixcbiAgICBkZWZhdWx0VmFsdWU6IFwibWVyZ2VkXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwicFwiLFxuICAgIGhlbHA6IFwiRGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIHByZXZpb3VzIGR1bXAgb2YgYW1lbmRtZW50c1wiLFxuICAgIG5hbWU6IFwicHJldmlvdXNcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJvXCIsXG4gICAgaGVscDogXCJPdXRwdXQgZGlyZWN0b3J5IGZvciBkaWZmIGZpbGVzXCIsXG4gICAgbmFtZTogXCJvdXRwdXRcIixcbiAgICBkZWZhdWx0VmFsdWU6IFwiLi9kaWZmX291dHB1dHMvXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuXVxuY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMpXG5cbmZ1bmN0aW9uIGRpZmZBbWVuZGVtZW50cyhkYXRhRGlyOiBzdHJpbmcpIHtcbiAgaWYgKCFvcHRpb25zLnByZXZpb3VzKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIFwiTm8gcHJldmlvdXMgZGF0YSBmb2xkZXIgc3BlY2lmaWVkLiBZb3UgbXVzdCBwcm92aWRlIG9uZSB3aXRoIHRoZSAtcCBvciAtLXByZXZpb3VzIG9wdGlvbi4gRXhpdGluZy4uLlwiLFxuICAgIClcbiAgICBwcm9jZXNzLmV4aXQoKVxuICB9XG5cbiAgaWYgKCFmcy5leGlzdHNTeW5jKG9wdGlvbnMub3V0cHV0KSkge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBcIlRoZSBvdXRwdXQgZGlyIGRvZXMgbm90IGV4aXN0cy4gWW91IG11c3QgcHJvdmlkZSBhbiBleGlzdGluZyBkaXJlY3RvcnkuIERlZmF1bHQgZGlyZWN0b3J5IGlzIC4vZGlmZl9vdXRwdXRzL1wiLFxuICAgIClcbiAgICBwcm9jZXNzLmV4aXQoKVxuICB9XG5cbiAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFtZW5kZW1lbnRzKSB7XG4gICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzOiB7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgRGlmZmluZyAke29yaWdpbmFsSnNvbkRpcn0gZm9sZGVyLi4uYClcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgYW1lbmRlbWVudFNwbGl0UGF0aCBvZiB3YWxrRGlyKG9yaWdpbmFsSnNvbkRpcikpIHtcbiAgICAgICAgICBjb25zdCBuZXdGaWxlUGF0aCA9XG4gICAgICAgICAgICBvcmlnaW5hbEpzb25EaXIgKyBcIi9cIiArIGFtZW5kZW1lbnRTcGxpdFBhdGguam9pbihcIi9cIilcbiAgICAgICAgICBjb25zdCBuZXdGaWxlID0gSlNPTi5wYXJzZShcbiAgICAgICAgICAgIGZzLnJlYWRGaWxlU3luYyhuZXdGaWxlUGF0aCkudG9Mb2NhbGVTdHJpbmcoKSxcbiAgICAgICAgICApXG5cbiAgICAgICAgICBjb25zdCBvbGRGaWxlUGF0aCA9XG4gICAgICAgICAgICBvcHRpb25zLnByZXZpb3VzICtcbiAgICAgICAgICAgIGRhdGFzZXQuZmlsZW5hbWUgK1xuICAgICAgICAgICAgXCIvXCIgK1xuICAgICAgICAgICAgYW1lbmRlbWVudFNwbGl0UGF0aC5qb2luKFwiL1wiKVxuICAgICAgICAgIGNvbnN0IG9sZEZpbGVFeGlzdHMgPSBmcy5leGlzdHNTeW5jKG9sZEZpbGVQYXRoKVxuICAgICAgICAgIGlmICghb2xkRmlsZUV4aXN0cykge1xuICAgICAgICAgICAgLy8gSWYgZmlsZSBmb3VuZCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgcHJldmlvdXMgZHVtcFxuICAgICAgICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICBcIkZpbGUgZGlkIG5vdCBleGlzdHMgcHJldmlvdXNseS4gR3Vlc3NpbmcgaXQncyBhIG5ldyBhbWVuZG1lbnQuIEFkZGluZyB0byB0aGUgZGlmZiBsaXN0IGZvciBuZXcgb2JqZWN0c1wiLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhZGRUb1F1ZXVlRm9yTmV3QW1lbmRtZW50cyhuZXdGaWxlLCBhbWVuZGVtZW50U3BsaXRQYXRoKVxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBGaWxlIGFscmVhZHkgZXhpc3RlZCBpbiBwcmV2aW91cyBkdW1wXG4gICAgICAgICAgbGV0IG9sZEZpbGU6IEpTT04gPSBKU09OLnBhcnNlKFwie31cIilcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gR2F0aGVyIGRhdGEgb2YgdGhlIGZpbGUgYW5kIHJldHJhbnNjcmlwdCBhcyBhIEpzb24gb2JqZWN0XG4gICAgICAgICAgICBvbGRGaWxlID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMob2xkRmlsZVBhdGgpLnRvTG9jYWxlU3RyaW5nKCkpXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgLy8gU2tpcCB0aGUgcHJvY2VzcyB0byB0aGUgbmV4dCBpdGVyYXRpb24gaW4gY2FzZSBvZiBjb3JydXB0IEpTT04gZGF0YVxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBHZW5lcmF0ZSB0aGUgZGlmZiBiZWV0d2VlbiB0aGUgdHdvIEpTT04gb2JqZWN0cyAob2xkICYgbmV3IGR1bXApXG4gICAgICAgICAgY29uc3QgZGlmZjogYW55ID0gZGV0YWlsZWREaWZmKG9sZEZpbGUsIG5ld0ZpbGUpXG5cbiAgICAgICAgICAvLyBJZiBubyBjaGFuZ2VzIGJlZXR3ZWVuIHRoZSB0d28gZHVtcHNcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhkaWZmLmFkZGVkKS5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRpZmYudXBkYXRlZCkubGVuZ3RoID09PSAwICYmXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhkaWZmLmRlbGV0ZWQpLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgLy8gU2tpcCB0byBuZXh0IGl0ZXJhdGlvbiBhcyB0aGVyZSBpcyBubyBuZWVkIHRvIGdlbmVyYXRlIGEgZmlsZVxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkNoYW5nZXMgZm91bmQgIVwiKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWRkVG9RdWV1ZUZvckRpZmZlZEFtZW5kbWVudHMoZGlmZiwgYW1lbmRlbWVudFNwbGl0UGF0aClcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiR2VuZXJhdGluZyBvdXRwdXQocylcIilcbiAgICB9XG5cbiAgICBnZW5lcmF0ZURpZmZGaWxlcygpXG4gIH1cbn1cblxuLyoqXG4gKiBHZW5lcmFsIHByb2Nlc3MgZm9yIG91dHB1dCBvZiBkaWZmcy5cbiAqIFRoZSBzY3JpcHQgaGFuZGxlcyB0d28gZGlmZmVyZW50IG1vZGVzIDpcbiAqIC0gbWVyZ2VkIDogV2lsbCBvdXRwdXQgYSBzaW5nbGUgZmlsZSBmb3IgbmV3IGFtZW5kZW1lbnRzIGFuZCBhIHNpbmdsZSBmaWxlXG4gKiAgICAgICAgICAgIGZvciB1cGRhdGVkIGFtZW5kZW1lbnRzXG4gKiAtIHNwbGl0dGVkIDogV2lsbCBvdXRwdXQgYSBzaW5nbGUgZmlsZSBmb3IgZWFjaCBhbWVuZG1lbnRzLCBlaXRoZXIgaXRzIG5ldyBvciB1cGRhdGVkLlxuICpcbiAqL1xuZnVuY3Rpb24gZ2VuZXJhdGVEaWZmRmlsZXMoKSB7XG4gIC8vIEhhbmRsZXMgbWVyZ2VkIG1vZGVcbiAgaWYgKG9wdGlvbnMubW9kZSA9PT0gXCJtZXJnZWRcIikge1xuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiR2VuZXJhdGluZyBtZXJnZWQgZmlsZXNcIilcbiAgICB9XG5cbiAgICBpZiAoZGlmZmVkQW1lbmRtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiR2VuZXJhdGluZyBkaWZmZWQgYW1lbmRtZW50cyBmaWxlc1wiKVxuICAgICAgfVxuICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgb3B0aW9ucy5vdXRwdXQgKyBcImFtZW5kZW1lbnRzX1hWX2RpZmZlZC5qc29uXCIsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGRpZmZlZEFtZW5kbWVudHMpLFxuICAgICAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIk5vIGRpZmYgaW4gdGhlIGFscmVhZHkgZXhpc3RpbmcgYW1lbmRtZW50c1wiKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChuZXdBbWVuZG1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIG5ldyBhbWVuZG1lbnRzIGZpbGVcIilcbiAgICAgIH1cbiAgICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICAgIG9wdGlvbnMub3V0cHV0ICsgXCJhbWVuZGVtZW50c19YVl9uZXcuanNvblwiLFxuICAgICAgICBKU09OLnN0cmluZ2lmeShuZXdBbWVuZG1lbnRzKSxcbiAgICAgICAgeyBlbmNvZGluZzogXCJ1dGY4XCIsIGZsYWc6IFwid1wiIH0sXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJObyBuZXcgYW1lbmRlbWVudC4gU2tpcHBpbmcgZmlsZSBnZW5lcmF0aW9uXCIpXG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKG9wdGlvbnMubW9kZSA9PT0gXCJzcGxpdHRlZFwiKSB7XG4gICAgLy8gSGFuZGxlcyBzcGxpdHRlZCBtb2RlXG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIHNlcGFyYXRlZCBmaWxlc1wiKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2Nlc3MgdGhlIGNvcHkgYWN0aW9uIG9mIHRoZSBuZXcgYW5kIGRpZmZlZCBhbWVuZG1lbnRzXG4gICAgICovXG5cbiAgICBkaWZmZWRBbWVuZG1lbnRzLmZvckVhY2goKGRpZmZlZEFtZW5kbWVudDogYW55KSA9PiB7XG4gICAgICBnZW5lcmF0ZVNpbmdsZURpZmZlZEFtZW5kbWVudChkaWZmZWRBbWVuZG1lbnQpXG4gICAgfSlcblxuICAgIG5ld0FtZW5kbWVudHMuZm9yRWFjaCgobmV3QW1lbmRtZW50OiBhbnkpID0+IHtcbiAgICAgIGdlbmVyYXRlU2luZ2xlTmV3QW1lbmRtZW50KG5ld0FtZW5kbWVudClcbiAgICB9KVxuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJVbmtub3duIG91dHB1dCBtb2RlLiBBYm9ydGluZy4uLlwiKVxuICAgIHByb2Nlc3MuZXhpdCgpXG4gIH1cbn1cblxuLy8gUHVzaGVzIGFuIGFtZW5kbWVudCB0byB0aGUgcXVldWUgdGhhdCB3aWxsIGJlIHByb2Nlc3NlZCB0byBjb3B5IG5ldyBhbWVuZG1lbnRzIGZpbGVzXG5mdW5jdGlvbiBhZGRUb1F1ZXVlRm9yTmV3QW1lbmRtZW50cyhmaWxlOiBhbnksIHBhdGg6IGFueSk6IHZvaWQge1xuICBjb25zdCBhbWVuZG1lbnQ6IGFueSA9IHtcbiAgICBwYXRoOiBwYXRoLFxuICAgIGRhdGE6IGZpbGUsXG4gIH1cbiAgbmV3QW1lbmRtZW50cy5wdXNoKGFtZW5kbWVudClcbn1cbi8vIFB1c2hlcyBhbiBhbWVuZG1lbnQgdG8gdGhlIHF1ZXVlIHRoYXQgd2lsbCBiZSBwcm9jZXNzZWQgdG8gY29weSB1cGRhdGVkIGFtZW5kbWVudHMgZmlsZXNcbmZ1bmN0aW9uIGFkZFRvUXVldWVGb3JEaWZmZWRBbWVuZG1lbnRzKGRpZmZlZERhdGE6IGFueSwgcGF0aDogYW55KTogdm9pZCB7XG4gIGNvbnN0IGFtZW5kbWVudDogYW55ID0ge1xuICAgIHBhdGg6IHBhdGgsXG4gICAgZGF0YTogZGlmZmVkRGF0YSxcbiAgfVxuICBkaWZmZWRBbWVuZG1lbnRzLnB1c2goYW1lbmRtZW50KVxufVxuXG4vLyBnZW5lcmF0ZXMgYSBmaWxlIHdpdGggYSBjb3B5IG9mIHRoZSBuZXcgYW1lbmRlbWVudFxuZnVuY3Rpb24gZ2VuZXJhdGVTaW5nbGVOZXdBbWVuZG1lbnQobmV3QW1lbmRtZW50OiB7XG4gIHBhdGg6IEFycmF5PHN0cmluZz5cbiAgZGF0YTogYW55XG59KSB7XG4gIG5ld0FtZW5kbWVudC5wYXRoLnNoaWZ0KClcblxuICBjb25zdCBzaG9ydERpcjogQXJyYXk8YW55PiA9IFsuLi5uZXdBbWVuZG1lbnQucGF0aF1cbiAgc2hvcnREaXIucG9wKClcbiAgY29uc29sZS5sb2cob3B0aW9ucy5vdXRwdXQgKyBzaG9ydERpci5qb2luKFwiL1wiKSlcbiAgZnMubWtkaXJTeW5jKG9wdGlvbnMub3V0cHV0ICsgc2hvcnREaXIuam9pbihcIi9cIiksIHtcbiAgICByZWN1cnNpdmU6IHRydWUsXG4gIH0pXG4gIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgb3B0aW9ucy5vdXRwdXQgKyBuZXdBbWVuZG1lbnQucGF0aC5qb2luKFwiL1wiKS5yZXBsYWNlKC8oXFwuanNvbikvLCBcIi5uZXckMVwiKSxcbiAgICBKU09OLnN0cmluZ2lmeShuZXdBbWVuZG1lbnQuZGF0YSksXG4gICAgeyBlbmNvZGluZzogXCJ1dGY4XCIsIGZsYWc6IFwid1wiIH0sXG4gIClcbn1cblxuLy8gZ2VuZXJhdGVzIGEgZmlsZSB3aXRoIGEgY29weSBvZiB0aGUgbW9kaWZpZWQgZGF0YSBvZiB0aGUgcHJldmlvdXNseSBleGlzdGluZyBhbWVuZG1lbnQ7XG5mdW5jdGlvbiBnZW5lcmF0ZVNpbmdsZURpZmZlZEFtZW5kbWVudChkaWZmZWRBbWVuZG1lbnQ6IHtcbiAgcGF0aDogQXJyYXk8c3RyaW5nPlxuICBkYXRhOiBhbnlcbn0pIHtcbiAgZGlmZmVkQW1lbmRtZW50LnBhdGguc2hpZnQoKVxuXG4gIGNvbnN0IHNob3J0RGlyOiBBcnJheTxhbnk+ID0gWy4uLmRpZmZlZEFtZW5kbWVudC5wYXRoXVxuICBzaG9ydERpci5wb3AoKVxuICBmcy5ta2RpclN5bmMob3B0aW9ucy5vdXRwdXQgKyBzaG9ydERpci5qb2luKFwiL1wiKSwge1xuICAgIHJlY3Vyc2l2ZTogdHJ1ZSxcbiAgfSlcblxuICBmcy53cml0ZUZpbGVTeW5jKFxuICAgIG9wdGlvbnMub3V0cHV0ICtcbiAgICAgIGRpZmZlZEFtZW5kbWVudC5wYXRoLmpvaW4oXCIvXCIpLnJlcGxhY2UoLyhcXC5qc29uKS8sIFwiLmRpZmYkMVwiKSxcbiAgICBKU09OLnN0cmluZ2lmeShkaWZmZWRBbWVuZG1lbnQuZGF0YSksXG4gICAgeyBlbmNvZGluZzogXCJ1dGY4XCIsIGZsYWc6IFwid1wiIH0sXG4gIClcbn1cblxuZGlmZkFtZW5kZW1lbnRzKG9wdGlvbnMuZGF0YURpcilcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxnQkFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsUUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsS0FBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsZUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksU0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssYUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sWUFBQSxHQUFBTixPQUFBO0FBSTZCLFNBQUFELHVCQUFBUSxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsZ0JBQUFBLEdBQUE7QUFBQSxTQUFBRSxtQkFBQUMsR0FBQSxXQUFBQyxrQkFBQSxDQUFBRCxHQUFBLEtBQUFFLGdCQUFBLENBQUFGLEdBQUEsS0FBQUcsMkJBQUEsQ0FBQUgsR0FBQSxLQUFBSSxr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
|
|
249
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29tbWFuZExpbmVBcmdzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZnNFeHRyYSIsIl9wYXRoIiwiX2RlZXBPYmplY3REaWZmIiwiX2RhdGFzZXRzIiwiX2ZpbGVfc3lzdGVtcyIsIl9jbGlfaGVscGVycyIsImUiLCJfX2VzTW9kdWxlIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiciIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJUeXBlRXJyb3IiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiZnJvbSIsImlzQXJyYXkiLCJfYXJyYXlMaWtlVG9BcnJheSIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwidCIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJuIiwiZG9uZSIsInZhbHVlIiwiZiIsIm8iLCJhIiwidSIsImNhbGwiLCJuZXh0IiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsInRlc3QiLCJkaWZmZWRBbWVuZG1lbnRzIiwibmV3QW1lbmRtZW50cyIsIm9wdGlvbnNEZWZpbml0aW9ucyIsInNpbGVudE9wdGlvbiIsInZlcmJvc2VPcHRpb24iLCJkYXRhRGlyRGVmYXVsdE9wdGlvbiIsImFsaWFzIiwiaGVscCIsImRlZmF1bHRWYWx1ZSIsInR5cGUiLCJTdHJpbmciLCJvcHRpb25zIiwiY29tbWFuZExpbmVBcmdzIiwiZGlmZkFtZW5kZW1lbnRzIiwiZGF0YURpciIsInByZXZpb3VzIiwiY29uc29sZSIsImVycm9yIiwicHJvY2VzcyIsImV4aXQiLCJmcyIsImV4aXN0c1N5bmMiLCJvdXRwdXQiLCJfaXRlcmF0b3IiLCJkYXRhc2V0cyIsImFtZW5kZW1lbnRzIiwiX3N0ZXAiLCJkYXRhc2V0Iiwic3RydWN0dXJlIiwiRGF0YXNldFN0cnVjdHVyZSIsIlNlZ21lbnRlZEZpbGVzIiwib3JpZ2luYWxKc29uRGlyIiwicGF0aCIsImpvaW4iLCJmaWxlbmFtZSIsInNpbGVudCIsImxvZyIsImNvbmNhdCIsIl9pdGVyYXRvcjIiLCJ3YWxrRGlyIiwiX3N0ZXAyIiwiYW1lbmRlbWVudFNwbGl0UGF0aCIsIm5ld0ZpbGVQYXRoIiwibmV3RmlsZSIsIkpTT04iLCJwYXJzZSIsInJlYWRGaWxlU3luYyIsInRvTG9jYWxlU3RyaW5nIiwib2xkRmlsZVBhdGgiLCJvbGRGaWxlRXhpc3RzIiwiYWRkVG9RdWV1ZUZvck5ld0FtZW5kbWVudHMiLCJvbGRGaWxlIiwiZGlmZiIsImRldGFpbGVkRGlmZiIsIk9iamVjdCIsImtleXMiLCJhZGRlZCIsInVwZGF0ZWQiLCJkZWxldGVkIiwiYWRkVG9RdWV1ZUZvckRpZmZlZEFtZW5kbWVudHMiLCJlcnIiLCJnZW5lcmF0ZURpZmZGaWxlcyIsIm1vZGUiLCJ3cml0ZUZpbGVTeW5jIiwic3RyaW5naWZ5IiwiZW5jb2RpbmciLCJmbGFnIiwiZm9yRWFjaCIsImRpZmZlZEFtZW5kbWVudCIsImdlbmVyYXRlU2luZ2xlRGlmZmVkQW1lbmRtZW50IiwibmV3QW1lbmRtZW50IiwiZ2VuZXJhdGVTaW5nbGVOZXdBbWVuZG1lbnQiLCJmaWxlIiwiYW1lbmRtZW50IiwiZGF0YSIsInB1c2giLCJkaWZmZWREYXRhIiwic2hpZnQiLCJzaG9ydERpciIsInBvcCIsIm1rZGlyU3luYyIsInJlY3Vyc2l2ZSIsInJlcGxhY2UiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyaXB0cy9kaWZmX2FtZW5kZW1lbnRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuaW1wb3J0IHsgZGV0YWlsZWREaWZmIH0gZnJvbSBcImRlZXAtb2JqZWN0LWRpZmZcIlxuaW1wb3J0IHsgZGF0YXNldHMsIERhdGFzZXRTdHJ1Y3R1cmUgfSBmcm9tIFwiLi4vZGF0YXNldHNcIlxuaW1wb3J0IHsgd2Fsa0RpciB9IGZyb20gXCIuLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0IHtcbiAgc2lsZW50T3B0aW9uLFxuICB2ZXJib3NlT3B0aW9uLFxuICBkYXRhRGlyRGVmYXVsdE9wdGlvbixcbn0gZnJvbSBcIi4vc2hhcmVkL2NsaV9oZWxwZXJzXCJcbmNvbnN0IGRpZmZlZEFtZW5kbWVudHM6IEFycmF5PGFueT4gPSBbXVxuY29uc3QgbmV3QW1lbmRtZW50czogQXJyYXk8YW55PiA9IFtdXG5cbmNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAgc2lsZW50T3B0aW9uLFxuICB2ZXJib3NlT3B0aW9uLFxuICBkYXRhRGlyRGVmYXVsdE9wdGlvbixcbiAge1xuICAgIGFsaWFzOiBcIm1cIixcbiAgICBoZWxwOiBcIkRpZmYgbW9kZXMuXCIsXG4gICAgbmFtZTogXCJtb2RlXCIsXG4gICAgZGVmYXVsdFZhbHVlOiBcIm1lcmdlZFwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInBcIixcbiAgICBoZWxwOiBcIkRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBwcmV2aW91cyBkdW1wIG9mIGFtZW5kbWVudHNcIixcbiAgICBuYW1lOiBcInByZXZpb3VzXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwib1wiLFxuICAgIGhlbHA6IFwiT3V0cHV0IGRpcmVjdG9yeSBmb3IgZGlmZiBmaWxlc1wiLFxuICAgIG5hbWU6IFwib3V0cHV0XCIsXG4gICAgZGVmYXVsdFZhbHVlOiBcIi4vZGlmZl9vdXRwdXRzL1wiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbl1cbmNvbnN0IG9wdGlvbnMgPSBjb21tYW5kTGluZUFyZ3Mob3B0aW9uc0RlZmluaXRpb25zKVxuXG5mdW5jdGlvbiBkaWZmQW1lbmRlbWVudHMoZGF0YURpcjogc3RyaW5nKSB7XG4gIGlmICghb3B0aW9ucy5wcmV2aW91cykge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBcIk5vIHByZXZpb3VzIGRhdGEgZm9sZGVyIHNwZWNpZmllZC4gWW91IG11c3QgcHJvdmlkZSBvbmUgd2l0aCB0aGUgLXAgb3IgLS1wcmV2aW91cyBvcHRpb24uIEV4aXRpbmcuLi5cIixcbiAgICApXG4gICAgcHJvY2Vzcy5leGl0KClcbiAgfVxuXG4gIGlmICghZnMuZXhpc3RzU3luYyhvcHRpb25zLm91dHB1dCkpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgXCJUaGUgb3V0cHV0IGRpciBkb2VzIG5vdCBleGlzdHMuIFlvdSBtdXN0IHByb3ZpZGUgYW4gZXhpc3RpbmcgZGlyZWN0b3J5LiBEZWZhdWx0IGRpcmVjdG9yeSBpcyAuL2RpZmZfb3V0cHV0cy9cIixcbiAgICApXG4gICAgcHJvY2Vzcy5leGl0KClcbiAgfVxuXG4gIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hbWVuZGVtZW50cykge1xuICAgIHN3aXRjaCAoZGF0YXNldC5zdHJ1Y3R1cmUpIHtcbiAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlczoge1xuICAgICAgICBjb25zdCBvcmlnaW5hbEpzb25EaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYERpZmZpbmcgJHtvcmlnaW5hbEpzb25EaXJ9IGZvbGRlci4uLmApXG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGFtZW5kZW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihvcmlnaW5hbEpzb25EaXIpKSB7XG4gICAgICAgICAgY29uc3QgbmV3RmlsZVBhdGggPVxuICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyICsgXCIvXCIgKyBhbWVuZGVtZW50U3BsaXRQYXRoLmpvaW4oXCIvXCIpXG4gICAgICAgICAgY29uc3QgbmV3RmlsZSA9IEpTT04ucGFyc2UoXG4gICAgICAgICAgICBmcy5yZWFkRmlsZVN5bmMobmV3RmlsZVBhdGgpLnRvTG9jYWxlU3RyaW5nKCksXG4gICAgICAgICAgKVxuXG4gICAgICAgICAgY29uc3Qgb2xkRmlsZVBhdGggPVxuICAgICAgICAgICAgb3B0aW9ucy5wcmV2aW91cyArXG4gICAgICAgICAgICBkYXRhc2V0LmZpbGVuYW1lICtcbiAgICAgICAgICAgIFwiL1wiICtcbiAgICAgICAgICAgIGFtZW5kZW1lbnRTcGxpdFBhdGguam9pbihcIi9cIilcbiAgICAgICAgICBjb25zdCBvbGRGaWxlRXhpc3RzID0gZnMuZXhpc3RzU3luYyhvbGRGaWxlUGF0aClcbiAgICAgICAgICBpZiAoIW9sZEZpbGVFeGlzdHMpIHtcbiAgICAgICAgICAgIC8vIElmIGZpbGUgZm91bmQgZG9lcyBub3QgZXhpc3QgaW4gdGhlIHByZXZpb3VzIGR1bXBcbiAgICAgICAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgXCJGaWxlIGRpZCBub3QgZXhpc3RzIHByZXZpb3VzbHkuIEd1ZXNzaW5nIGl0J3MgYSBuZXcgYW1lbmRtZW50LiBBZGRpbmcgdG8gdGhlIGRpZmYgbGlzdCBmb3IgbmV3IG9iamVjdHNcIixcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWRkVG9RdWV1ZUZvck5ld0FtZW5kbWVudHMobmV3RmlsZSwgYW1lbmRlbWVudFNwbGl0UGF0aClcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gRmlsZSBhbHJlYWR5IGV4aXN0ZWQgaW4gcHJldmlvdXMgZHVtcFxuICAgICAgICAgIGxldCBvbGRGaWxlOiBKU09OID0gSlNPTi5wYXJzZShcInt9XCIpXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIEdhdGhlciBkYXRhIG9mIHRoZSBmaWxlIGFuZCByZXRyYW5zY3JpcHQgYXMgYSBKc29uIG9iamVjdFxuICAgICAgICAgICAgb2xkRmlsZSA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKG9sZEZpbGVQYXRoKS50b0xvY2FsZVN0cmluZygpKVxuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIC8vIFNraXAgdGhlIHByb2Nlc3MgdG8gdGhlIG5leHQgaXRlcmF0aW9uIGluIGNhc2Ugb2YgY29ycnVwdCBKU09OIGRhdGFcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gR2VuZXJhdGUgdGhlIGRpZmYgYmVldHdlZW4gdGhlIHR3byBKU09OIG9iamVjdHMgKG9sZCAmIG5ldyBkdW1wKVxuICAgICAgICAgIGNvbnN0IGRpZmY6IGFueSA9IGRldGFpbGVkRGlmZihvbGRGaWxlLCBuZXdGaWxlKVxuXG4gICAgICAgICAgLy8gSWYgbm8gY2hhbmdlcyBiZWV0d2VlbiB0aGUgdHdvIGR1bXBzXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgT2JqZWN0LmtleXMoZGlmZi5hZGRlZCkubGVuZ3RoID09PSAwICYmXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhkaWZmLnVwZGF0ZWQpLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAgICAgT2JqZWN0LmtleXMoZGlmZi5kZWxldGVkKS5sZW5ndGggPT09IDBcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIC8vIFNraXAgdG8gbmV4dCBpdGVyYXRpb24gYXMgdGhlcmUgaXMgbm8gbmVlZCB0byBnZW5lcmF0ZSBhIGZpbGVcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJDaGFuZ2VzIGZvdW5kICFcIilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFkZFRvUXVldWVGb3JEaWZmZWRBbWVuZG1lbnRzKGRpZmYsIGFtZW5kZW1lbnRTcGxpdFBhdGgpXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICBjb25zb2xlLmxvZyhcIkdlbmVyYXRpbmcgb3V0cHV0KHMpXCIpXG4gICAgfVxuXG4gICAgZ2VuZXJhdGVEaWZmRmlsZXMoKVxuICB9XG59XG5cbi8qKlxuICogR2VuZXJhbCBwcm9jZXNzIGZvciBvdXRwdXQgb2YgZGlmZnMuXG4gKiBUaGUgc2NyaXB0IGhhbmRsZXMgdHdvIGRpZmZlcmVudCBtb2RlcyA6XG4gKiAtIG1lcmdlZCA6IFdpbGwgb3V0cHV0IGEgc2luZ2xlIGZpbGUgZm9yIG5ldyBhbWVuZGVtZW50cyBhbmQgYSBzaW5nbGUgZmlsZVxuICogICAgICAgICAgICBmb3IgdXBkYXRlZCBhbWVuZGVtZW50c1xuICogLSBzcGxpdHRlZCA6IFdpbGwgb3V0cHV0IGEgc2luZ2xlIGZpbGUgZm9yIGVhY2ggYW1lbmRtZW50cywgZWl0aGVyIGl0cyBuZXcgb3IgdXBkYXRlZC5cbiAqXG4gKi9cbmZ1bmN0aW9uIGdlbmVyYXRlRGlmZkZpbGVzKCkge1xuICAvLyBIYW5kbGVzIG1lcmdlZCBtb2RlXG4gIGlmIChvcHRpb25zLm1vZGUgPT09IFwibWVyZ2VkXCIpIHtcbiAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICBjb25zb2xlLmxvZyhcIkdlbmVyYXRpbmcgbWVyZ2VkIGZpbGVzXCIpXG4gICAgfVxuXG4gICAgaWYgKGRpZmZlZEFtZW5kbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIkdlbmVyYXRpbmcgZGlmZmVkIGFtZW5kbWVudHMgZmlsZXNcIilcbiAgICAgIH1cbiAgICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICAgIG9wdGlvbnMub3V0cHV0ICsgXCJhbWVuZGVtZW50c19YVl9kaWZmZWQuanNvblwiLFxuICAgICAgICBKU09OLnN0cmluZ2lmeShkaWZmZWRBbWVuZG1lbnRzKSxcbiAgICAgICAgeyBlbmNvZGluZzogXCJ1dGY4XCIsIGZsYWc6IFwid1wiIH0sXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJObyBkaWZmIGluIHRoZSBhbHJlYWR5IGV4aXN0aW5nIGFtZW5kbWVudHNcIilcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobmV3QW1lbmRtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiR2VuZXJhdGluZyBuZXcgYW1lbmRtZW50cyBmaWxlXCIpXG4gICAgICB9XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICBvcHRpb25zLm91dHB1dCArIFwiYW1lbmRlbWVudHNfWFZfbmV3Lmpzb25cIixcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkobmV3QW1lbmRtZW50cyksXG4gICAgICAgIHsgZW5jb2Rpbmc6IFwidXRmOFwiLCBmbGFnOiBcIndcIiB9LFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiTm8gbmV3IGFtZW5kZW1lbnQuIFNraXBwaW5nIGZpbGUgZ2VuZXJhdGlvblwiKVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChvcHRpb25zLm1vZGUgPT09IFwic3BsaXR0ZWRcIikge1xuICAgIC8vIEhhbmRsZXMgc3BsaXR0ZWQgbW9kZVxuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiR2VuZXJhdGluZyBzZXBhcmF0ZWQgZmlsZXNcIilcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9jZXNzIHRoZSBjb3B5IGFjdGlvbiBvZiB0aGUgbmV3IGFuZCBkaWZmZWQgYW1lbmRtZW50c1xuICAgICAqL1xuXG4gICAgZGlmZmVkQW1lbmRtZW50cy5mb3JFYWNoKChkaWZmZWRBbWVuZG1lbnQ6IGFueSkgPT4ge1xuICAgICAgZ2VuZXJhdGVTaW5nbGVEaWZmZWRBbWVuZG1lbnQoZGlmZmVkQW1lbmRtZW50KVxuICAgIH0pXG5cbiAgICBuZXdBbWVuZG1lbnRzLmZvckVhY2goKG5ld0FtZW5kbWVudDogYW55KSA9PiB7XG4gICAgICBnZW5lcmF0ZVNpbmdsZU5ld0FtZW5kbWVudChuZXdBbWVuZG1lbnQpXG4gICAgfSlcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmVycm9yKFwiVW5rbm93biBvdXRwdXQgbW9kZS4gQWJvcnRpbmcuLi5cIilcbiAgICBwcm9jZXNzLmV4aXQoKVxuICB9XG59XG5cbi8vIFB1c2hlcyBhbiBhbWVuZG1lbnQgdG8gdGhlIHF1ZXVlIHRoYXQgd2lsbCBiZSBwcm9jZXNzZWQgdG8gY29weSBuZXcgYW1lbmRtZW50cyBmaWxlc1xuZnVuY3Rpb24gYWRkVG9RdWV1ZUZvck5ld0FtZW5kbWVudHMoZmlsZTogYW55LCBwYXRoOiBhbnkpOiB2b2lkIHtcbiAgY29uc3QgYW1lbmRtZW50OiBhbnkgPSB7XG4gICAgcGF0aDogcGF0aCxcbiAgICBkYXRhOiBmaWxlLFxuICB9XG4gIG5ld0FtZW5kbWVudHMucHVzaChhbWVuZG1lbnQpXG59XG4vLyBQdXNoZXMgYW4gYW1lbmRtZW50IHRvIHRoZSBxdWV1ZSB0aGF0IHdpbGwgYmUgcHJvY2Vzc2VkIHRvIGNvcHkgdXBkYXRlZCBhbWVuZG1lbnRzIGZpbGVzXG5mdW5jdGlvbiBhZGRUb1F1ZXVlRm9yRGlmZmVkQW1lbmRtZW50cyhkaWZmZWREYXRhOiBhbnksIHBhdGg6IGFueSk6IHZvaWQge1xuICBjb25zdCBhbWVuZG1lbnQ6IGFueSA9IHtcbiAgICBwYXRoOiBwYXRoLFxuICAgIGRhdGE6IGRpZmZlZERhdGEsXG4gIH1cbiAgZGlmZmVkQW1lbmRtZW50cy5wdXNoKGFtZW5kbWVudClcbn1cblxuLy8gZ2VuZXJhdGVzIGEgZmlsZSB3aXRoIGEgY29weSBvZiB0aGUgbmV3IGFtZW5kZW1lbnRcbmZ1bmN0aW9uIGdlbmVyYXRlU2luZ2xlTmV3QW1lbmRtZW50KG5ld0FtZW5kbWVudDoge1xuICBwYXRoOiBBcnJheTxzdHJpbmc+XG4gIGRhdGE6IGFueVxufSkge1xuICBuZXdBbWVuZG1lbnQucGF0aC5zaGlmdCgpXG5cbiAgY29uc3Qgc2hvcnREaXI6IEFycmF5PGFueT4gPSBbLi4ubmV3QW1lbmRtZW50LnBhdGhdXG4gIHNob3J0RGlyLnBvcCgpXG4gIGNvbnNvbGUubG9nKG9wdGlvbnMub3V0cHV0ICsgc2hvcnREaXIuam9pbihcIi9cIikpXG4gIGZzLm1rZGlyU3luYyhvcHRpb25zLm91dHB1dCArIHNob3J0RGlyLmpvaW4oXCIvXCIpLCB7XG4gICAgcmVjdXJzaXZlOiB0cnVlLFxuICB9KVxuICBmcy53cml0ZUZpbGVTeW5jKFxuICAgIG9wdGlvbnMub3V0cHV0ICsgbmV3QW1lbmRtZW50LnBhdGguam9pbihcIi9cIikucmVwbGFjZSgvKFxcLmpzb24pLywgXCIubmV3JDFcIiksXG4gICAgSlNPTi5zdHJpbmdpZnkobmV3QW1lbmRtZW50LmRhdGEpLFxuICAgIHsgZW5jb2Rpbmc6IFwidXRmOFwiLCBmbGFnOiBcIndcIiB9LFxuICApXG59XG5cbi8vIGdlbmVyYXRlcyBhIGZpbGUgd2l0aCBhIGNvcHkgb2YgdGhlIG1vZGlmaWVkIGRhdGEgb2YgdGhlIHByZXZpb3VzbHkgZXhpc3RpbmcgYW1lbmRtZW50O1xuZnVuY3Rpb24gZ2VuZXJhdGVTaW5nbGVEaWZmZWRBbWVuZG1lbnQoZGlmZmVkQW1lbmRtZW50OiB7XG4gIHBhdGg6IEFycmF5PHN0cmluZz5cbiAgZGF0YTogYW55XG59KSB7XG4gIGRpZmZlZEFtZW5kbWVudC5wYXRoLnNoaWZ0KClcblxuICBjb25zdCBzaG9ydERpcjogQXJyYXk8YW55PiA9IFsuLi5kaWZmZWRBbWVuZG1lbnQucGF0aF1cbiAgc2hvcnREaXIucG9wKClcbiAgZnMubWtkaXJTeW5jKG9wdGlvbnMub3V0cHV0ICsgc2hvcnREaXIuam9pbihcIi9cIiksIHtcbiAgICByZWN1cnNpdmU6IHRydWUsXG4gIH0pXG5cbiAgZnMud3JpdGVGaWxlU3luYyhcbiAgICBvcHRpb25zLm91dHB1dCArXG4gICAgICBkaWZmZWRBbWVuZG1lbnQucGF0aC5qb2luKFwiL1wiKS5yZXBsYWNlKC8oXFwuanNvbikvLCBcIi5kaWZmJDFcIiksXG4gICAgSlNPTi5zdHJpbmdpZnkoZGlmZmVkQW1lbmRtZW50LmRhdGEpLFxuICAgIHsgZW5jb2Rpbmc6IFwidXRmOFwiLCBmbGFnOiBcIndcIiB9LFxuICApXG59XG5cbmRpZmZBbWVuZGVtZW50cyhvcHRpb25zLmRhdGFEaXIpXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLGdCQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxLQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxlQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxTQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxhQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxZQUFBLEdBQUFOLE9BQUE7QUFJNkIsU0FBQUQsdUJBQUFRLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxnQkFBQUEsQ0FBQTtBQUFBLFNBQUFFLG1CQUFBQyxDQUFBLFdBQUFDLGtCQUFBLENBQUFELENBQUEsS0FBQUUsZ0JBQUEsQ0FBQUYsQ0FBQSxLQUFBRywyQkFBQSxDQUFBSCxDQUFBLEtBQUFJLGtCQUFBO0FBQUEsU0FBQUEsbUJBQUEsY0FBQUMsU0FBQTtBQUFBLFNBQUFILGlCQUFBRixDQUFBLDhCQUFBTSxNQUFBLFlBQUFOLENBQUEsQ0FBQU0sTUFBQSxDQUFBQyxRQUFBLGFB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
|
|
@@ -199,4 +199,4 @@ function generateSingleDiffedAmendment(diffedAmendment) {
|
|
|
199
199
|
});
|
|
200
200
|
}
|
|
201
201
|
diffAmendements(options.dataDir);
|
|
202
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kTGluZUFyZ3MiLCJmcyIsInBhdGgiLCJkZXRhaWxlZERpZmYiLCJkYXRhc2V0cyIsIkRhdGFzZXRTdHJ1Y3R1cmUiLCJ3YWxrRGlyIiwic2lsZW50T3B0aW9uIiwidmVyYm9zZU9wdGlvbiIsImRhdGFEaXJEZWZhdWx0T3B0aW9uIiwiZGlmZmVkQW1lbmRtZW50cyIsIm5ld0FtZW5kbWVudHMiLCJvcHRpb25zRGVmaW5pdGlvbnMiLCJhbGlhcyIsImhlbHAiLCJuYW1lIiwiZGVmYXVsdFZhbHVlIiwidHlwZSIsIlN0cmluZyIsIm9wdGlvbnMiLCJkaWZmQW1lbmRlbWVudHMiLCJkYXRhRGlyIiwicHJldmlvdXMiLCJjb25zb2xlIiwiZXJyb3IiLCJwcm9jZXNzIiwiZXhpdCIsImV4aXN0c1N5bmMiLCJvdXRwdXQiLCJkYXRhc2V0IiwiYW1lbmRlbWVudHMiLCJzdHJ1Y3R1cmUiLCJTZWdtZW50ZWRGaWxlcyIsIm9yaWdpbmFsSnNvbkRpciIsImpvaW4iLCJmaWxlbmFtZSIsInNpbGVudCIsImxvZyIsImFtZW5kZW1lbnRTcGxpdFBhdGgiLCJuZXdGaWxlUGF0aCIsIm5ld0ZpbGUiLCJKU09OIiwicGFyc2UiLCJyZWFkRmlsZVN5bmMiLCJ0b0xvY2FsZVN0cmluZyIsIm9sZEZpbGVQYXRoIiwib2xkRmlsZUV4aXN0cyIsImFkZFRvUXVldWVGb3JOZXdBbWVuZG1lbnRzIiwib2xkRmlsZSIsImUiLCJkaWZmIiwiT2JqZWN0Iiwia2V5cyIsImFkZGVkIiwibGVuZ3RoIiwidXBkYXRlZCIsImRlbGV0ZWQiLCJhZGRUb1F1ZXVlRm9yRGlmZmVkQW1lbmRtZW50cyIsImdlbmVyYXRlRGlmZkZpbGVzIiwibW9kZSIsIndyaXRlRmlsZVN5bmMiLCJzdHJpbmdpZnkiLCJlbmNvZGluZyIsImZsYWciLCJmb3JFYWNoIiwiZGlmZmVkQW1lbmRtZW50IiwiZ2VuZXJhdGVTaW5nbGVEaWZmZWRBbWVuZG1lbnQiLCJuZXdBbWVuZG1lbnQiLCJnZW5lcmF0ZVNpbmdsZU5ld0FtZW5kbWVudCIsImZpbGUiLCJhbWVuZG1lbnQiLCJkYXRhIiwicHVzaCIsImRpZmZlZERhdGEiLCJzaGlmdCIsInNob3J0RGlyIiwicG9wIiwibWtkaXJTeW5jIiwicmVjdXJzaXZlIiwicmVwbGFjZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL2RpZmZfYW1lbmRlbWVudHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQgeyBkZXRhaWxlZERpZmYgfSBmcm9tIFwiZGVlcC1vYmplY3QtZGlmZlwiXG5pbXBvcnQgeyBkYXRhc2V0cywgRGF0YXNldFN0cnVjdHVyZSB9IGZyb20gXCIuLi9kYXRhc2V0c1wiXG5pbXBvcnQgeyB3YWxrRGlyIH0gZnJvbSBcIi4uL2ZpbGVfc3lzdGVtc1wiXG5pbXBvcnQge1xuICBzaWxlbnRPcHRpb24sXG4gIHZlcmJvc2VPcHRpb24sXG4gIGRhdGFEaXJEZWZhdWx0T3B0aW9uLFxufSBmcm9tIFwiLi9zaGFyZWQvY2xpX2hlbHBlcnNcIlxuY29uc3QgZGlmZmVkQW1lbmRtZW50czogQXJyYXk8YW55PiA9IFtdXG5jb25zdCBuZXdBbWVuZG1lbnRzOiBBcnJheTxhbnk+ID0gW11cblxuY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICBzaWxlbnRPcHRpb24sXG4gIHZlcmJvc2VPcHRpb24sXG4gIGRhdGFEaXJEZWZhdWx0T3B0aW9uLFxuICB7XG4gICAgYWxpYXM6IFwibVwiLFxuICAgIGhlbHA6IFwiRGlmZiBtb2Rlcy5cIixcbiAgICBuYW1lOiBcIm1vZGVcIixcbiAgICBkZWZhdWx0VmFsdWU6IFwibWVyZ2VkXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwicFwiLFxuICAgIGhlbHA6IFwiRGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIHByZXZpb3VzIGR1bXAgb2YgYW1lbmRtZW50c1wiLFxuICAgIG5hbWU6IFwicHJldmlvdXNcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJvXCIsXG4gICAgaGVscDogXCJPdXRwdXQgZGlyZWN0b3J5IGZvciBkaWZmIGZpbGVzXCIsXG4gICAgbmFtZTogXCJvdXRwdXRcIixcbiAgICBkZWZhdWx0VmFsdWU6IFwiLi9kaWZmX291dHB1dHMvXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuXVxuY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMpXG5cbmZ1bmN0aW9uIGRpZmZBbWVuZGVtZW50cyhkYXRhRGlyOiBzdHJpbmcpIHtcbiAgaWYgKCFvcHRpb25zLnByZXZpb3VzKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIFwiTm8gcHJldmlvdXMgZGF0YSBmb2xkZXIgc3BlY2lmaWVkLiBZb3UgbXVzdCBwcm92aWRlIG9uZSB3aXRoIHRoZSAtcCBvciAtLXByZXZpb3VzIG9wdGlvbi4gRXhpdGluZy4uLlwiLFxuICAgIClcbiAgICBwcm9jZXNzLmV4aXQoKVxuICB9XG5cbiAgaWYgKCFmcy5leGlzdHNTeW5jKG9wdGlvbnMub3V0cHV0KSkge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBcIlRoZSBvdXRwdXQgZGlyIGRvZXMgbm90IGV4aXN0cy4gWW91IG11c3QgcHJvdmlkZSBhbiBleGlzdGluZyBkaXJlY3RvcnkuIERlZmF1bHQgZGlyZWN0b3J5IGlzIC4vZGlmZl9vdXRwdXRzL1wiLFxuICAgIClcbiAgICBwcm9jZXNzLmV4aXQoKVxuICB9XG5cbiAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFtZW5kZW1lbnRzKSB7XG4gICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzOiB7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgRGlmZmluZyAke29yaWdpbmFsSnNvbkRpcn0gZm9sZGVyLi4uYClcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgYW1lbmRlbWVudFNwbGl0UGF0aCBvZiB3YWxrRGlyKG9yaWdpbmFsSnNvbkRpcikpIHtcbiAgICAgICAgICBjb25zdCBuZXdGaWxlUGF0aCA9XG4gICAgICAgICAgICBvcmlnaW5hbEpzb25EaXIgKyBcIi9cIiArIGFtZW5kZW1lbnRTcGxpdFBhdGguam9pbihcIi9cIilcbiAgICAgICAgICBjb25zdCBuZXdGaWxlID0gSlNPTi5wYXJzZShcbiAgICAgICAgICAgIGZzLnJlYWRGaWxlU3luYyhuZXdGaWxlUGF0aCkudG9Mb2NhbGVTdHJpbmcoKSxcbiAgICAgICAgICApXG5cbiAgICAgICAgICBjb25zdCBvbGRGaWxlUGF0aCA9XG4gICAgICAgICAgICBvcHRpb25zLnByZXZpb3VzICtcbiAgICAgICAgICAgIGRhdGFzZXQuZmlsZW5hbWUgK1xuICAgICAgICAgICAgXCIvXCIgK1xuICAgICAgICAgICAgYW1lbmRlbWVudFNwbGl0UGF0aC5qb2luKFwiL1wiKVxuICAgICAgICAgIGNvbnN0IG9sZEZpbGVFeGlzdHMgPSBmcy5leGlzdHNTeW5jKG9sZEZpbGVQYXRoKVxuICAgICAgICAgIGlmICghb2xkRmlsZUV4aXN0cykge1xuICAgICAgICAgICAgLy8gSWYgZmlsZSBmb3VuZCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgcHJldmlvdXMgZHVtcFxuICAgICAgICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICBcIkZpbGUgZGlkIG5vdCBleGlzdHMgcHJldmlvdXNseS4gR3Vlc3NpbmcgaXQncyBhIG5ldyBhbWVuZG1lbnQuIEFkZGluZyB0byB0aGUgZGlmZiBsaXN0IGZvciBuZXcgb2JqZWN0c1wiLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhZGRUb1F1ZXVlRm9yTmV3QW1lbmRtZW50cyhuZXdGaWxlLCBhbWVuZGVtZW50U3BsaXRQYXRoKVxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBGaWxlIGFscmVhZHkgZXhpc3RlZCBpbiBwcmV2aW91cyBkdW1wXG4gICAgICAgICAgbGV0IG9sZEZpbGU6IEpTT04gPSBKU09OLnBhcnNlKFwie31cIilcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gR2F0aGVyIGRhdGEgb2YgdGhlIGZpbGUgYW5kIHJldHJhbnNjcmlwdCBhcyBhIEpzb24gb2JqZWN0XG4gICAgICAgICAgICBvbGRGaWxlID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMob2xkRmlsZVBhdGgpLnRvTG9jYWxlU3RyaW5nKCkpXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgLy8gU2tpcCB0aGUgcHJvY2VzcyB0byB0aGUgbmV4dCBpdGVyYXRpb24gaW4gY2FzZSBvZiBjb3JydXB0IEpTT04gZGF0YVxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBHZW5lcmF0ZSB0aGUgZGlmZiBiZWV0d2VlbiB0aGUgdHdvIEpTT04gb2JqZWN0cyAob2xkICYgbmV3IGR1bXApXG4gICAgICAgICAgY29uc3QgZGlmZjogYW55ID0gZGV0YWlsZWREaWZmKG9sZEZpbGUsIG5ld0ZpbGUpXG5cbiAgICAgICAgICAvLyBJZiBubyBjaGFuZ2VzIGJlZXR3ZWVuIHRoZSB0d28gZHVtcHNcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhkaWZmLmFkZGVkKS5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRpZmYudXBkYXRlZCkubGVuZ3RoID09PSAwICYmXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhkaWZmLmRlbGV0ZWQpLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgLy8gU2tpcCB0byBuZXh0IGl0ZXJhdGlvbiBhcyB0aGVyZSBpcyBubyBuZWVkIHRvIGdlbmVyYXRlIGEgZmlsZVxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkNoYW5nZXMgZm91bmQgIVwiKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWRkVG9RdWV1ZUZvckRpZmZlZEFtZW5kbWVudHMoZGlmZiwgYW1lbmRlbWVudFNwbGl0UGF0aClcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiR2VuZXJhdGluZyBvdXRwdXQocylcIilcbiAgICB9XG5cbiAgICBnZW5lcmF0ZURpZmZGaWxlcygpXG4gIH1cbn1cblxuLyoqXG4gKiBHZW5lcmFsIHByb2Nlc3MgZm9yIG91dHB1dCBvZiBkaWZmcy5cbiAqIFRoZSBzY3JpcHQgaGFuZGxlcyB0d28gZGlmZmVyZW50IG1vZGVzIDpcbiAqIC0gbWVyZ2VkIDogV2lsbCBvdXRwdXQgYSBzaW5nbGUgZmlsZSBmb3IgbmV3IGFtZW5kZW1lbnRzIGFuZCBhIHNpbmdsZSBmaWxlXG4gKiAgICAgICAgICAgIGZvciB1cGRhdGVkIGFtZW5kZW1lbnRzXG4gKiAtIHNwbGl0dGVkIDogV2lsbCBvdXRwdXQgYSBzaW5nbGUgZmlsZSBmb3IgZWFjaCBhbWVuZG1lbnRzLCBlaXRoZXIgaXRzIG5ldyBvciB1cGRhdGVkLlxuICpcbiAqL1xuZnVuY3Rpb24gZ2VuZXJhdGVEaWZmRmlsZXMoKSB7XG4gIC8vIEhhbmRsZXMgbWVyZ2VkIG1vZGVcbiAgaWYgKG9wdGlvbnMubW9kZSA9PT0gXCJtZXJnZWRcIikge1xuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiR2VuZXJhdGluZyBtZXJnZWQgZmlsZXNcIilcbiAgICB9XG5cbiAgICBpZiAoZGlmZmVkQW1lbmRtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiR2VuZXJhdGluZyBkaWZmZWQgYW1lbmRtZW50cyBmaWxlc1wiKVxuICAgICAgfVxuICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgb3B0aW9ucy5vdXRwdXQgKyBcImFtZW5kZW1lbnRzX1hWX2RpZmZlZC5qc29uXCIsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGRpZmZlZEFtZW5kbWVudHMpLFxuICAgICAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIk5vIGRpZmYgaW4gdGhlIGFscmVhZHkgZXhpc3RpbmcgYW1lbmRtZW50c1wiKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChuZXdBbWVuZG1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIG5ldyBhbWVuZG1lbnRzIGZpbGVcIilcbiAgICAgIH1cbiAgICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICAgIG9wdGlvbnMub3V0cHV0ICsgXCJhbWVuZGVtZW50c19YVl9uZXcuanNvblwiLFxuICAgICAgICBKU09OLnN0cmluZ2lmeShuZXdBbWVuZG1lbnRzKSxcbiAgICAgICAgeyBlbmNvZGluZzogXCJ1dGY4XCIsIGZsYWc6IFwid1wiIH0sXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJObyBuZXcgYW1lbmRlbWVudC4gU2tpcHBpbmcgZmlsZSBnZW5lcmF0aW9uXCIpXG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKG9wdGlvbnMubW9kZSA9PT0gXCJzcGxpdHRlZFwiKSB7XG4gICAgLy8gSGFuZGxlcyBzcGxpdHRlZCBtb2RlXG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIHNlcGFyYXRlZCBmaWxlc1wiKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2Nlc3MgdGhlIGNvcHkgYWN0aW9uIG9mIHRoZSBuZXcgYW5kIGRpZmZlZCBhbWVuZG1lbnRzXG4gICAgICovXG5cbiAgICBkaWZmZWRBbWVuZG1lbnRzLmZvckVhY2goKGRpZmZlZEFtZW5kbWVudDogYW55KSA9PiB7XG4gICAgICBnZW5lcmF0ZVNpbmdsZURpZmZlZEFtZW5kbWVudChkaWZmZWRBbWVuZG1lbnQpXG4gICAgfSlcblxuICAgIG5ld0FtZW5kbWVudHMuZm9yRWFjaCgobmV3QW1lbmRtZW50OiBhbnkpID0+IHtcbiAgICAgIGdlbmVyYXRlU2luZ2xlTmV3QW1lbmRtZW50KG5ld0FtZW5kbWVudClcbiAgICB9KVxuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJVbmtub3duIG91dHB1dCBtb2RlLiBBYm9ydGluZy4uLlwiKVxuICAgIHByb2Nlc3MuZXhpdCgpXG4gIH1cbn1cblxuLy8gUHVzaGVzIGFuIGFtZW5kbWVudCB0byB0aGUgcXVldWUgdGhhdCB3aWxsIGJlIHByb2Nlc3NlZCB0byBjb3B5IG5ldyBhbWVuZG1lbnRzIGZpbGVzXG5mdW5jdGlvbiBhZGRUb1F1ZXVlRm9yTmV3QW1lbmRtZW50cyhmaWxlOiBhbnksIHBhdGg6IGFueSk6IHZvaWQge1xuICBjb25zdCBhbWVuZG1lbnQ6IGFueSA9IHtcbiAgICBwYXRoOiBwYXRoLFxuICAgIGRhdGE6IGZpbGUsXG4gIH1cbiAgbmV3QW1lbmRtZW50cy5wdXNoKGFtZW5kbWVudClcbn1cbi8vIFB1c2hlcyBhbiBhbWVuZG1lbnQgdG8gdGhlIHF1ZXVlIHRoYXQgd2lsbCBiZSBwcm9jZXNzZWQgdG8gY29weSB1cGRhdGVkIGFtZW5kbWVudHMgZmlsZXNcbmZ1bmN0aW9uIGFkZFRvUXVldWVGb3JEaWZmZWRBbWVuZG1lbnRzKGRpZmZlZERhdGE6IGFueSwgcGF0aDogYW55KTogdm9pZCB7XG4gIGNvbnN0IGFtZW5kbWVudDogYW55ID0ge1xuICAgIHBhdGg6IHBhdGgsXG4gICAgZGF0YTogZGlmZmVkRGF0YSxcbiAgfVxuICBkaWZmZWRBbWVuZG1lbnRzLnB1c2goYW1lbmRtZW50KVxufVxuXG4vLyBnZW5lcmF0ZXMgYSBmaWxlIHdpdGggYSBjb3B5IG9mIHRoZSBuZXcgYW1lbmRlbWVudFxuZnVuY3Rpb24gZ2VuZXJhdGVTaW5nbGVOZXdBbWVuZG1lbnQobmV3QW1lbmRtZW50OiB7XG4gIHBhdGg6IEFycmF5PHN0cmluZz5cbiAgZGF0YTogYW55XG59KSB7XG4gIG5ld0FtZW5kbWVudC5wYXRoLnNoaWZ0KClcblxuICBjb25zdCBzaG9ydERpcjogQXJyYXk8YW55PiA9IFsuLi5uZXdBbWVuZG1lbnQucGF0aF1cbiAgc2hvcnREaXIucG9wKClcbiAgY29uc29sZS5sb2cob3B0aW9ucy5vdXRwdXQgKyBzaG9ydERpci5qb2luKFwiL1wiKSlcbiAgZnMubWtkaXJTeW5jKG9wdGlvbnMub3V0cHV0ICsgc2hvcnREaXIuam9pbihcIi9cIiksIHtcbiAgICByZWN1cnNpdmU6IHRydWUsXG4gIH0pXG4gIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgb3B0aW9ucy5vdXRwdXQgKyBuZXdBbWVuZG1lbnQucGF0aC5qb2luKFwiL1wiKS5yZXBsYWNlKC8oXFwuanNvbikvLCBcIi5uZXckMVwiKSxcbiAgICBKU09OLnN0cmluZ2lmeShuZXdBbWVuZG1lbnQuZGF0YSksXG4gICAgeyBlbmNvZGluZzogXCJ1dGY4XCIsIGZsYWc6IFwid1wiIH0sXG4gIClcbn1cblxuLy8gZ2VuZXJhdGVzIGEgZmlsZSB3aXRoIGEgY29weSBvZiB0aGUgbW9kaWZpZWQgZGF0YSBvZiB0aGUgcHJldmlvdXNseSBleGlzdGluZyBhbWVuZG1lbnQ7XG5mdW5jdGlvbiBnZW5lcmF0ZVNpbmdsZURpZmZlZEFtZW5kbWVudChkaWZmZWRBbWVuZG1lbnQ6IHtcbiAgcGF0aDogQXJyYXk8c3RyaW5nPlxuICBkYXRhOiBhbnlcbn0pIHtcbiAgZGlmZmVkQW1lbmRtZW50LnBhdGguc2hpZnQoKVxuXG4gIGNvbnN0IHNob3J0RGlyOiBBcnJheTxhbnk+ID0gWy4uLmRpZmZlZEFtZW5kbWVudC5wYXRoXVxuICBzaG9ydERpci5wb3AoKVxuICBmcy5ta2RpclN5bmMob3B0aW9ucy5vdXRwdXQgKyBzaG9ydERpci5qb2luKFwiL1wiKSwge1xuICAgIHJlY3Vyc2l2ZTogdHJ1ZSxcbiAgfSlcblxuICBmcy53cml0ZUZpbGVTeW5jKFxuICAgIG9wdGlvbnMub3V0cHV0ICtcbiAgICAgIGRpZmZlZEFtZW5kbWVudC5wYXRoLmpvaW4oXCIvXCIpLnJlcGxhY2UoLyhcXC5qc29uKS8sIFwiLmRpZmYkMVwiKSxcbiAgICBKU09OLnN0cmluZ2lmeShkaWZmZWRBbWVuZG1lbnQuZGF0YSksXG4gICAgeyBlbmNvZGluZzogXCJ1dGY4XCIsIGZsYWc6IFwid1wiIH0sXG4gIClcbn1cblxuZGlmZkFtZW5kZW1lbnRzKG9wdGlvbnMuZGF0YURpcilcbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsZUFBZSxNQUFNLG1CQUFtQjtBQUMvQyxPQUFPQyxFQUFFLE1BQU0sVUFBVTtBQUN6QixPQUFPQyxJQUFJLE1BQU0sTUFBTTtBQUN2QixTQUFTQyxZQUFZLFFBQVEsa0JBQWtCO0FBQUEsU0FDdENDLFFBQVEsRUFBRUMsZ0JBQWdCO0FBQUEsU0FDMUJDLE9BQU87QUFB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
|
|
202
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kTGluZUFyZ3MiLCJmcyIsInBhdGgiLCJkZXRhaWxlZERpZmYiLCJkYXRhc2V0cyIsIkRhdGFzZXRTdHJ1Y3R1cmUiLCJ3YWxrRGlyIiwic2lsZW50T3B0aW9uIiwidmVyYm9zZU9wdGlvbiIsImRhdGFEaXJEZWZhdWx0T3B0aW9uIiwiZGlmZmVkQW1lbmRtZW50cyIsIm5ld0FtZW5kbWVudHMiLCJvcHRpb25zRGVmaW5pdGlvbnMiLCJhbGlhcyIsImhlbHAiLCJuYW1lIiwiZGVmYXVsdFZhbHVlIiwidHlwZSIsIlN0cmluZyIsIm9wdGlvbnMiLCJkaWZmQW1lbmRlbWVudHMiLCJkYXRhRGlyIiwicHJldmlvdXMiLCJjb25zb2xlIiwiZXJyb3IiLCJwcm9jZXNzIiwiZXhpdCIsImV4aXN0c1N5bmMiLCJvdXRwdXQiLCJkYXRhc2V0IiwiYW1lbmRlbWVudHMiLCJzdHJ1Y3R1cmUiLCJTZWdtZW50ZWRGaWxlcyIsIm9yaWdpbmFsSnNvbkRpciIsImpvaW4iLCJmaWxlbmFtZSIsInNpbGVudCIsImxvZyIsImFtZW5kZW1lbnRTcGxpdFBhdGgiLCJuZXdGaWxlUGF0aCIsIm5ld0ZpbGUiLCJKU09OIiwicGFyc2UiLCJyZWFkRmlsZVN5bmMiLCJ0b0xvY2FsZVN0cmluZyIsIm9sZEZpbGVQYXRoIiwib2xkRmlsZUV4aXN0cyIsImFkZFRvUXVldWVGb3JOZXdBbWVuZG1lbnRzIiwib2xkRmlsZSIsImUiLCJkaWZmIiwiT2JqZWN0Iiwia2V5cyIsImFkZGVkIiwibGVuZ3RoIiwidXBkYXRlZCIsImRlbGV0ZWQiLCJhZGRUb1F1ZXVlRm9yRGlmZmVkQW1lbmRtZW50cyIsImdlbmVyYXRlRGlmZkZpbGVzIiwibW9kZSIsIndyaXRlRmlsZVN5bmMiLCJzdHJpbmdpZnkiLCJlbmNvZGluZyIsImZsYWciLCJmb3JFYWNoIiwiZGlmZmVkQW1lbmRtZW50IiwiZ2VuZXJhdGVTaW5nbGVEaWZmZWRBbWVuZG1lbnQiLCJuZXdBbWVuZG1lbnQiLCJnZW5lcmF0ZVNpbmdsZU5ld0FtZW5kbWVudCIsImZpbGUiLCJhbWVuZG1lbnQiLCJkYXRhIiwicHVzaCIsImRpZmZlZERhdGEiLCJzaGlmdCIsInNob3J0RGlyIiwicG9wIiwibWtkaXJTeW5jIiwicmVjdXJzaXZlIiwicmVwbGFjZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL2RpZmZfYW1lbmRlbWVudHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQgeyBkZXRhaWxlZERpZmYgfSBmcm9tIFwiZGVlcC1vYmplY3QtZGlmZlwiXG5pbXBvcnQgeyBkYXRhc2V0cywgRGF0YXNldFN0cnVjdHVyZSB9IGZyb20gXCIuLi9kYXRhc2V0c1wiXG5pbXBvcnQgeyB3YWxrRGlyIH0gZnJvbSBcIi4uL2ZpbGVfc3lzdGVtc1wiXG5pbXBvcnQge1xuICBzaWxlbnRPcHRpb24sXG4gIHZlcmJvc2VPcHRpb24sXG4gIGRhdGFEaXJEZWZhdWx0T3B0aW9uLFxufSBmcm9tIFwiLi9zaGFyZWQvY2xpX2hlbHBlcnNcIlxuY29uc3QgZGlmZmVkQW1lbmRtZW50czogQXJyYXk8YW55PiA9IFtdXG5jb25zdCBuZXdBbWVuZG1lbnRzOiBBcnJheTxhbnk+ID0gW11cblxuY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICBzaWxlbnRPcHRpb24sXG4gIHZlcmJvc2VPcHRpb24sXG4gIGRhdGFEaXJEZWZhdWx0T3B0aW9uLFxuICB7XG4gICAgYWxpYXM6IFwibVwiLFxuICAgIGhlbHA6IFwiRGlmZiBtb2Rlcy5cIixcbiAgICBuYW1lOiBcIm1vZGVcIixcbiAgICBkZWZhdWx0VmFsdWU6IFwibWVyZ2VkXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwicFwiLFxuICAgIGhlbHA6IFwiRGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIHByZXZpb3VzIGR1bXAgb2YgYW1lbmRtZW50c1wiLFxuICAgIG5hbWU6IFwicHJldmlvdXNcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJvXCIsXG4gICAgaGVscDogXCJPdXRwdXQgZGlyZWN0b3J5IGZvciBkaWZmIGZpbGVzXCIsXG4gICAgbmFtZTogXCJvdXRwdXRcIixcbiAgICBkZWZhdWx0VmFsdWU6IFwiLi9kaWZmX291dHB1dHMvXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuXVxuY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMpXG5cbmZ1bmN0aW9uIGRpZmZBbWVuZGVtZW50cyhkYXRhRGlyOiBzdHJpbmcpIHtcbiAgaWYgKCFvcHRpb25zLnByZXZpb3VzKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIFwiTm8gcHJldmlvdXMgZGF0YSBmb2xkZXIgc3BlY2lmaWVkLiBZb3UgbXVzdCBwcm92aWRlIG9uZSB3aXRoIHRoZSAtcCBvciAtLXByZXZpb3VzIG9wdGlvbi4gRXhpdGluZy4uLlwiLFxuICAgIClcbiAgICBwcm9jZXNzLmV4aXQoKVxuICB9XG5cbiAgaWYgKCFmcy5leGlzdHNTeW5jKG9wdGlvbnMub3V0cHV0KSkge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBcIlRoZSBvdXRwdXQgZGlyIGRvZXMgbm90IGV4aXN0cy4gWW91IG11c3QgcHJvdmlkZSBhbiBleGlzdGluZyBkaXJlY3RvcnkuIERlZmF1bHQgZGlyZWN0b3J5IGlzIC4vZGlmZl9vdXRwdXRzL1wiLFxuICAgIClcbiAgICBwcm9jZXNzLmV4aXQoKVxuICB9XG5cbiAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFtZW5kZW1lbnRzKSB7XG4gICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzOiB7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgRGlmZmluZyAke29yaWdpbmFsSnNvbkRpcn0gZm9sZGVyLi4uYClcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgYW1lbmRlbWVudFNwbGl0UGF0aCBvZiB3YWxrRGlyKG9yaWdpbmFsSnNvbkRpcikpIHtcbiAgICAgICAgICBjb25zdCBuZXdGaWxlUGF0aCA9XG4gICAgICAgICAgICBvcmlnaW5hbEpzb25EaXIgKyBcIi9cIiArIGFtZW5kZW1lbnRTcGxpdFBhdGguam9pbihcIi9cIilcbiAgICAgICAgICBjb25zdCBuZXdGaWxlID0gSlNPTi5wYXJzZShcbiAgICAgICAgICAgIGZzLnJlYWRGaWxlU3luYyhuZXdGaWxlUGF0aCkudG9Mb2NhbGVTdHJpbmcoKSxcbiAgICAgICAgICApXG5cbiAgICAgICAgICBjb25zdCBvbGRGaWxlUGF0aCA9XG4gICAgICAgICAgICBvcHRpb25zLnByZXZpb3VzICtcbiAgICAgICAgICAgIGRhdGFzZXQuZmlsZW5hbWUgK1xuICAgICAgICAgICAgXCIvXCIgK1xuICAgICAgICAgICAgYW1lbmRlbWVudFNwbGl0UGF0aC5qb2luKFwiL1wiKVxuICAgICAgICAgIGNvbnN0IG9sZEZpbGVFeGlzdHMgPSBmcy5leGlzdHNTeW5jKG9sZEZpbGVQYXRoKVxuICAgICAgICAgIGlmICghb2xkRmlsZUV4aXN0cykge1xuICAgICAgICAgICAgLy8gSWYgZmlsZSBmb3VuZCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgcHJldmlvdXMgZHVtcFxuICAgICAgICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICBcIkZpbGUgZGlkIG5vdCBleGlzdHMgcHJldmlvdXNseS4gR3Vlc3NpbmcgaXQncyBhIG5ldyBhbWVuZG1lbnQuIEFkZGluZyB0byB0aGUgZGlmZiBsaXN0IGZvciBuZXcgb2JqZWN0c1wiLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhZGRUb1F1ZXVlRm9yTmV3QW1lbmRtZW50cyhuZXdGaWxlLCBhbWVuZGVtZW50U3BsaXRQYXRoKVxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBGaWxlIGFscmVhZHkgZXhpc3RlZCBpbiBwcmV2aW91cyBkdW1wXG4gICAgICAgICAgbGV0IG9sZEZpbGU6IEpTT04gPSBKU09OLnBhcnNlKFwie31cIilcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gR2F0aGVyIGRhdGEgb2YgdGhlIGZpbGUgYW5kIHJldHJhbnNjcmlwdCBhcyBhIEpzb24gb2JqZWN0XG4gICAgICAgICAgICBvbGRGaWxlID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMob2xkRmlsZVBhdGgpLnRvTG9jYWxlU3RyaW5nKCkpXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgLy8gU2tpcCB0aGUgcHJvY2VzcyB0byB0aGUgbmV4dCBpdGVyYXRpb24gaW4gY2FzZSBvZiBjb3JydXB0IEpTT04gZGF0YVxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBHZW5lcmF0ZSB0aGUgZGlmZiBiZWV0d2VlbiB0aGUgdHdvIEpTT04gb2JqZWN0cyAob2xkICYgbmV3IGR1bXApXG4gICAgICAgICAgY29uc3QgZGlmZjogYW55ID0gZGV0YWlsZWREaWZmKG9sZEZpbGUsIG5ld0ZpbGUpXG5cbiAgICAgICAgICAvLyBJZiBubyBjaGFuZ2VzIGJlZXR3ZWVuIHRoZSB0d28gZHVtcHNcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhkaWZmLmFkZGVkKS5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRpZmYudXBkYXRlZCkubGVuZ3RoID09PSAwICYmXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhkaWZmLmRlbGV0ZWQpLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgLy8gU2tpcCB0byBuZXh0IGl0ZXJhdGlvbiBhcyB0aGVyZSBpcyBubyBuZWVkIHRvIGdlbmVyYXRlIGEgZmlsZVxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkNoYW5nZXMgZm91bmQgIVwiKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWRkVG9RdWV1ZUZvckRpZmZlZEFtZW5kbWVudHMoZGlmZiwgYW1lbmRlbWVudFNwbGl0UGF0aClcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiR2VuZXJhdGluZyBvdXRwdXQocylcIilcbiAgICB9XG5cbiAgICBnZW5lcmF0ZURpZmZGaWxlcygpXG4gIH1cbn1cblxuLyoqXG4gKiBHZW5lcmFsIHByb2Nlc3MgZm9yIG91dHB1dCBvZiBkaWZmcy5cbiAqIFRoZSBzY3JpcHQgaGFuZGxlcyB0d28gZGlmZmVyZW50IG1vZGVzIDpcbiAqIC0gbWVyZ2VkIDogV2lsbCBvdXRwdXQgYSBzaW5nbGUgZmlsZSBmb3IgbmV3IGFtZW5kZW1lbnRzIGFuZCBhIHNpbmdsZSBmaWxlXG4gKiAgICAgICAgICAgIGZvciB1cGRhdGVkIGFtZW5kZW1lbnRzXG4gKiAtIHNwbGl0dGVkIDogV2lsbCBvdXRwdXQgYSBzaW5nbGUgZmlsZSBmb3IgZWFjaCBhbWVuZG1lbnRzLCBlaXRoZXIgaXRzIG5ldyBvciB1cGRhdGVkLlxuICpcbiAqL1xuZnVuY3Rpb24gZ2VuZXJhdGVEaWZmRmlsZXMoKSB7XG4gIC8vIEhhbmRsZXMgbWVyZ2VkIG1vZGVcbiAgaWYgKG9wdGlvbnMubW9kZSA9PT0gXCJtZXJnZWRcIikge1xuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiR2VuZXJhdGluZyBtZXJnZWQgZmlsZXNcIilcbiAgICB9XG5cbiAgICBpZiAoZGlmZmVkQW1lbmRtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiR2VuZXJhdGluZyBkaWZmZWQgYW1lbmRtZW50cyBmaWxlc1wiKVxuICAgICAgfVxuICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgb3B0aW9ucy5vdXRwdXQgKyBcImFtZW5kZW1lbnRzX1hWX2RpZmZlZC5qc29uXCIsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGRpZmZlZEFtZW5kbWVudHMpLFxuICAgICAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIk5vIGRpZmYgaW4gdGhlIGFscmVhZHkgZXhpc3RpbmcgYW1lbmRtZW50c1wiKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChuZXdBbWVuZG1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIG5ldyBhbWVuZG1lbnRzIGZpbGVcIilcbiAgICAgIH1cbiAgICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICAgIG9wdGlvbnMub3V0cHV0ICsgXCJhbWVuZGVtZW50c19YVl9uZXcuanNvblwiLFxuICAgICAgICBKU09OLnN0cmluZ2lmeShuZXdBbWVuZG1lbnRzKSxcbiAgICAgICAgeyBlbmNvZGluZzogXCJ1dGY4XCIsIGZsYWc6IFwid1wiIH0sXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJObyBuZXcgYW1lbmRlbWVudC4gU2tpcHBpbmcgZmlsZSBnZW5lcmF0aW9uXCIpXG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKG9wdGlvbnMubW9kZSA9PT0gXCJzcGxpdHRlZFwiKSB7XG4gICAgLy8gSGFuZGxlcyBzcGxpdHRlZCBtb2RlXG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIHNlcGFyYXRlZCBmaWxlc1wiKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2Nlc3MgdGhlIGNvcHkgYWN0aW9uIG9mIHRoZSBuZXcgYW5kIGRpZmZlZCBhbWVuZG1lbnRzXG4gICAgICovXG5cbiAgICBkaWZmZWRBbWVuZG1lbnRzLmZvckVhY2goKGRpZmZlZEFtZW5kbWVudDogYW55KSA9PiB7XG4gICAgICBnZW5lcmF0ZVNpbmdsZURpZmZlZEFtZW5kbWVudChkaWZmZWRBbWVuZG1lbnQpXG4gICAgfSlcblxuICAgIG5ld0FtZW5kbWVudHMuZm9yRWFjaCgobmV3QW1lbmRtZW50OiBhbnkpID0+IHtcbiAgICAgIGdlbmVyYXRlU2luZ2xlTmV3QW1lbmRtZW50KG5ld0FtZW5kbWVudClcbiAgICB9KVxuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJVbmtub3duIG91dHB1dCBtb2RlLiBBYm9ydGluZy4uLlwiKVxuICAgIHByb2Nlc3MuZXhpdCgpXG4gIH1cbn1cblxuLy8gUHVzaGVzIGFuIGFtZW5kbWVudCB0byB0aGUgcXVldWUgdGhhdCB3aWxsIGJlIHByb2Nlc3NlZCB0byBjb3B5IG5ldyBhbWVuZG1lbnRzIGZpbGVzXG5mdW5jdGlvbiBhZGRUb1F1ZXVlRm9yTmV3QW1lbmRtZW50cyhmaWxlOiBhbnksIHBhdGg6IGFueSk6IHZvaWQge1xuICBjb25zdCBhbWVuZG1lbnQ6IGFueSA9IHtcbiAgICBwYXRoOiBwYXRoLFxuICAgIGRhdGE6IGZpbGUsXG4gIH1cbiAgbmV3QW1lbmRtZW50cy5wdXNoKGFtZW5kbWVudClcbn1cbi8vIFB1c2hlcyBhbiBhbWVuZG1lbnQgdG8gdGhlIHF1ZXVlIHRoYXQgd2lsbCBiZSBwcm9jZXNzZWQgdG8gY29weSB1cGRhdGVkIGFtZW5kbWVudHMgZmlsZXNcbmZ1bmN0aW9uIGFkZFRvUXVldWVGb3JEaWZmZWRBbWVuZG1lbnRzKGRpZmZlZERhdGE6IGFueSwgcGF0aDogYW55KTogdm9pZCB7XG4gIGNvbnN0IGFtZW5kbWVudDogYW55ID0ge1xuICAgIHBhdGg6IHBhdGgsXG4gICAgZGF0YTogZGlmZmVkRGF0YSxcbiAgfVxuICBkaWZmZWRBbWVuZG1lbnRzLnB1c2goYW1lbmRtZW50KVxufVxuXG4vLyBnZW5lcmF0ZXMgYSBmaWxlIHdpdGggYSBjb3B5IG9mIHRoZSBuZXcgYW1lbmRlbWVudFxuZnVuY3Rpb24gZ2VuZXJhdGVTaW5nbGVOZXdBbWVuZG1lbnQobmV3QW1lbmRtZW50OiB7XG4gIHBhdGg6IEFycmF5PHN0cmluZz5cbiAgZGF0YTogYW55XG59KSB7XG4gIG5ld0FtZW5kbWVudC5wYXRoLnNoaWZ0KClcblxuICBjb25zdCBzaG9ydERpcjogQXJyYXk8YW55PiA9IFsuLi5uZXdBbWVuZG1lbnQucGF0aF1cbiAgc2hvcnREaXIucG9wKClcbiAgY29uc29sZS5sb2cob3B0aW9ucy5vdXRwdXQgKyBzaG9ydERpci5qb2luKFwiL1wiKSlcbiAgZnMubWtkaXJTeW5jKG9wdGlvbnMub3V0cHV0ICsgc2hvcnREaXIuam9pbihcIi9cIiksIHtcbiAgICByZWN1cnNpdmU6IHRydWUsXG4gIH0pXG4gIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgb3B0aW9ucy5vdXRwdXQgKyBuZXdBbWVuZG1lbnQucGF0aC5qb2luKFwiL1wiKS5yZXBsYWNlKC8oXFwuanNvbikvLCBcIi5uZXckMVwiKSxcbiAgICBKU09OLnN0cmluZ2lmeShuZXdBbWVuZG1lbnQuZGF0YSksXG4gICAgeyBlbmNvZGluZzogXCJ1dGY4XCIsIGZsYWc6IFwid1wiIH0sXG4gIClcbn1cblxuLy8gZ2VuZXJhdGVzIGEgZmlsZSB3aXRoIGEgY29weSBvZiB0aGUgbW9kaWZpZWQgZGF0YSBvZiB0aGUgcHJldmlvdXNseSBleGlzdGluZyBhbWVuZG1lbnQ7XG5mdW5jdGlvbiBnZW5lcmF0ZVNpbmdsZURpZmZlZEFtZW5kbWVudChkaWZmZWRBbWVuZG1lbnQ6IHtcbiAgcGF0aDogQXJyYXk8c3RyaW5nPlxuICBkYXRhOiBhbnlcbn0pIHtcbiAgZGlmZmVkQW1lbmRtZW50LnBhdGguc2hpZnQoKVxuXG4gIGNvbnN0IHNob3J0RGlyOiBBcnJheTxhbnk+ID0gWy4uLmRpZmZlZEFtZW5kbWVudC5wYXRoXVxuICBzaG9ydERpci5wb3AoKVxuICBmcy5ta2RpclN5bmMob3B0aW9ucy5vdXRwdXQgKyBzaG9ydERpci5qb2luKFwiL1wiKSwge1xuICAgIHJlY3Vyc2l2ZTogdHJ1ZSxcbiAgfSlcblxuICBmcy53cml0ZUZpbGVTeW5jKFxuICAgIG9wdGlvbnMub3V0cHV0ICtcbiAgICAgIGRpZmZlZEFtZW5kbWVudC5wYXRoLmpvaW4oXCIvXCIpLnJlcGxhY2UoLyhcXC5qc29uKS8sIFwiLmRpZmYkMVwiKSxcbiAgICBKU09OLnN0cmluZ2lmeShkaWZmZWRBbWVuZG1lbnQuZGF0YSksXG4gICAgeyBlbmNvZGluZzogXCJ1dGY4XCIsIGZsYWc6IFwid1wiIH0sXG4gIClcbn1cblxuZGlmZkFtZW5kZW1lbnRzKG9wdGlvbnMuZGF0YURpcilcbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsZUFBZSxNQUFNLG1CQUFtQjtBQUMvQyxPQUFPQyxFQUFFLE1BQU0sVUFBVTtBQUN6QixPQUFPQyxJQUFJLE1BQU0sTUFBTTtBQUN2QixTQUFTQyxZQUFZLFFBQVEsa0JBQWtCO0FBQUEsU0FDdENDLFFBQVEsRUFBRUMsZ0JBQWdCO0FBQUEsU0FDMUJDLE9BQU87QUFB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QUFDYyxHQUFHLENBQUNsQixPQUFPLENBQUNTLE1BQU0sR0FBRytDLFFBQVEsQ0FBQ3pDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUNoRGpDLEVBQUUsQ0FBQzRFLFNBQVMsQ0FBQzFELE9BQU8sQ0FBQ1MsTUFBTSxHQUFHK0MsUUFBUSxDQUFDekMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0lBQ2hENEMsU0FBUyxFQUFFO0VBQ2IsQ0FBQyxDQUFDO0VBQ0Y3RSxFQUFFLENBQUMyRCxhQUFhLENBQ2R6QyxPQUFPLENBQUNTLE1BQU0sR0FBR3VDLFlBQVksQ0FBQ2pFLElBQUksQ0FBQ2dDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzZDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLEVBQzFFdEMsSUFBSSxDQUFDb0IsU0FBUyxDQUFDTSxZQUFZLENBQUNJLElBQUksQ0FBQyxFQUNqQztJQUFFVCxRQUFRLEVBQUUsTUFBTTtJQUFFQyxJQUFJLEVBQUU7RUFBSSxDQUNoQyxDQUFDO0FBQ0g7O0FBRUE7QUFDQSxTQUFTRyw2QkFBNkJBLENBQUNELGVBR3RDLEVBQUU7RUFDREEsZUFBZSxDQUFDL0QsSUFBSSxDQUFDd0UsS0FBSyxDQUFDLENBQUM7RUFFNUIsTUFBTUMsUUFBb0IsR0FBRyxDQUFDLEdBQUdWLGVBQWUsQ0FBQy9ELElBQUksQ0FBQztFQUN0RHlFLFFBQVEsQ0FBQ0MsR0FBRyxDQUFDLENBQUM7RUFDZDNFLEVBQUUsQ0FBQzRFLFNBQVMsQ0FBQzFELE9BQU8sQ0FBQ1MsTUFBTSxHQUFHK0MsUUFBUSxDQUFDekMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0lBQ2hENEMsU0FBUyxFQUFFO0VBQ2IsQ0FBQyxDQUFDO0VBRUY3RSxFQUFFLENBQUMyRCxhQUFhLENBQ2R6QyxPQUFPLENBQUNTLE1BQU0sR0FDWnFDLGVBQWUsQ0FBQy9ELElBQUksQ0FBQ2dDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzZDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLEVBQy9EdEMsSUFBSSxDQUFDb0IsU0FBUyxDQUFDSSxlQUFlLENBQUNNLElBQUksQ0FBQyxFQUNwQztJQUFFVCxRQUFRLEVBQUUsTUFBTTtJQUFFQyxJQUFJLEVBQUU7RUFBSSxDQUNoQyxDQUFDO0FBQ0g7QUFFQTNDLGVBQWUsQ0FBQ0QsT0FBTyxDQUFDRSxPQUFPLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|