@tricoteuses/assemblee 1.1.3 → 1.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/bugs/acteur-00010/plugin.test.js +53 -55
- package/lib/bugs/acteur-00010.js +26 -30
- package/lib/bugs/agenda-00002/plugin.test.js +78 -82
- package/lib/bugs/agenda-00002.js +206 -214
- package/lib/bugs/agenda-00008/plugin.test.js +54 -56
- package/lib/bugs/agenda-00008.js +38 -42
- package/lib/bugs/agenda-00011/plugin.test.js +204 -214
- package/lib/bugs/agenda-00011.js +117 -131
- package/lib/bugs.js +212 -232
- package/lib/cleaners/actes_legislatifs.js +1 -1
- package/lib/cleaners/acteurs.js +2 -2
- package/lib/cleaners/amendements.js +1 -1
- package/lib/cleaners/documents.js +1 -1
- package/lib/cleaners/dossiers_legislatifs.js +1 -1
- package/lib/cleaners/reunions.js +1 -1
- package/lib/cleaners/scrutins.js +1 -1
- package/lib/cleaners/xml.js +2 -2
- package/lib/datasets.js +2 -2
- package/lib/dossiers_legislatifs.js +1 -1
- package/lib/file_systems.js +48 -50
- package/lib/git.js +3 -3
- package/lib/git.mjs +2 -2
- package/lib/inserters.js +1 -1
- package/lib/loaders.js +1 -1
- package/lib/parsers/documents.js +29 -31
- package/lib/parsers/recherche_amendements.js +284 -288
- package/lib/parsers/recherche_amendements.mjs +1 -1
- package/lib/raw_types/acteurs_et_organes.d.ts +1 -0
- package/lib/raw_types/acteurs_et_organes.js +3 -2
- package/lib/raw_types/acteurs_et_organes.mjs +3 -2
- package/lib/scripts/bugs_helper.js +301 -317
- package/lib/scripts/clean_data.js +1 -1
- package/lib/scripts/clean_reorganized_data.js +13 -15
- package/lib/scripts/clean_reorganized_data.mjs +1 -1
- package/lib/scripts/diff_amendements.js +1 -1
- package/lib/scripts/document_dossiers_legislatifs.js +2 -2
- package/lib/scripts/merge_scrutins.js +1 -1
- package/lib/scripts/parse_textes_lois.js +3 -3
- package/lib/scripts/parse_textes_lois.mjs +2 -2
- package/lib/scripts/raw_types_from_amendements.js +133 -135
- package/lib/scripts/reorganize_data.js +14 -16
- package/lib/scripts/reorganize_data.mjs +2 -2
- package/lib/scripts/retrieve_deputes_photos.js +170 -172
- package/lib/scripts/retrieve_deputes_photos.mjs +2 -2
- package/lib/scripts/retrieve_documents.js +266 -278
- package/lib/scripts/retrieve_open_data.js +140 -144
- package/lib/scripts/retrieve_open_data.mjs +1 -1
- package/lib/scripts/retrieve_pending_amendments.js +118 -120
- package/lib/scripts/retrieve_senateurs_photos.js +168 -170
- package/lib/scripts/retrieve_senateurs_photos.mjs +2 -2
- package/lib/scripts/retrieve_textes_lois.js +130 -132
- package/lib/scripts/retrieve_textes_lois.mjs +2 -2
- package/lib/scripts/validate_json.js +87 -91
- package/lib/types/acteurs_et_organes.d.ts +1 -0
- package/lib/types/acteurs_et_organes.js +3 -2
- package/lib/types/acteurs_et_organes.mjs +3 -2
- package/lib/types/dossiers_legislatifs.js +1 -1
- package/lib/types/dossiers_legislatifs.mjs +1 -1
- package/package.json +6 -6
|
@@ -56,7 +56,7 @@ function commitAndPush(repositoryDir, commit, remotes) {
|
|
|
56
56
|
stdio: ["ignore", "ignore", "pipe"]
|
|
57
57
|
});
|
|
58
58
|
try {
|
|
59
|
-
execSync('git commit -m "Nouvelle moisson"', {
|
|
59
|
+
execSync('git commit -m "Nouvelle moisson" --quiet', {
|
|
60
60
|
cwd: repositoryDir,
|
|
61
61
|
env: process.env,
|
|
62
62
|
encoding: "utf-8"
|
|
@@ -147,4 +147,4 @@ retrieveDocuments().catch(error => {
|
|
|
147
147
|
console.log(error);
|
|
148
148
|
process.exit(1);
|
|
149
149
|
});
|
|
150
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhc3NlcnQiLCJleGVjU3luYyIsImNvbW1hbmRMaW5lQXJncyIsImZzIiwiZmV0Y2giLCJwYXRoIiwiRW5hYmxlZERhdGFzZXRzIiwibG9hZEFzc2VtYmxlZURhdGEiLCJUeXBlRG9jdW1lbnQiLCJEb2N1bWVudFVybEZvcm1hdCIsInVybEZyb21Eb2N1bWVudCIsIm9wdGlvbnNEZWZpbml0aW9ucyIsImFsaWFzIiwiaGVscCIsIm5hbWUiLCJ0eXBlIiwiQm9vbGVhbiIsImRlZmF1bHRWYWx1ZSIsIlN0cmluZyIsIm11bHRpcGxlIiwiZGVmYXVsdE9wdGlvbiIsIm9wdGlvbnMiLCJjb21taXRBbmRQdXNoIiwicmVwb3NpdG9yeURpciIsImNvbW1pdCIsInJlbW90ZXMiLCJlcnJvciIsImN3ZCIsImVudiIsInByb2Nlc3MiLCJlbmNvZGluZyIsInN0ZGlvIiwiY2hpbGRQcm9jZXNzIiwic3RkZXJyIiwidGVzdCIsInN0ZG91dCIsImNvbnNvbGUiLCJvdXRwdXQiLCJyZW1vdGUiLCJyZXRyaWV2ZURvY3VtZW50cyIsInVpZCIsImRhdGFEaXIiLCJkb2N1bWVudEJ5VWlkIiwiRG9zc2llcnNMZWdpc2xhdGlmcyIsImxlZ2lzbGF0dXJlIiwidGV4dGVzTG9pc0RpciIsImpvaW4iLCJlbnN1cmVEaXJTeW5jIiwiZmlsZW5hbWUiLCJyZWFkZGlyU3luYyIsInJlbW92ZVN5bmMiLCJ0ZXh0ZXNMb2lzIiwiT2JqZWN0IiwidmFsdWVzIiwiZmlsdGVyIiwiZG9jdW1lbnQiLCJ4c2lUeXBlIiwiVGV4dGVMb2lUeXBlIiwic3RhcnRzV2l0aCIsIm1hcCIsInJhd0RvY3VtZW50QXNzZW1ibGVlVXJsIiwiUmF3SHRtbCIsInNvcnQiLCJhIiwiYiIsImxvY2FsZUNvbXBhcmUiLCJmaXJzdFVpZCIsInNraXAiLCJ0ZXh0ZUxvaSIsInNpbGVudCIsImxvZyIsInVybCIsIlVSTCIsImZpbGVQYXRoIiwiaG9zdG5hbWUiLCJwYXRobmFtZSIsInNwbGl0Iiwic3RyaWN0RXF1YWwiLCJkaXJuYW1lIiwicmVzcG9uc2UiLCJwYWdlIiwidGV4dCIsIm9rIiwic3RhdHVzIiwiSlNPTiIsInN0cmluZ2lmeSIsImNvZGUiLCJtZXNzYWdlIiwic3RhdHVzVGV4dCIsIndyaXRlRmlsZVN5bmMiLCJleGl0IiwiY2F0Y2giXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyaXB0cy9yZXRyaWV2ZV90ZXh0ZXNfbG9pcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIlxuaW1wb3J0IHsgQ2hpbGRQcm9jZXNzLCBleGVjU3luYyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCJcbmltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IGZldGNoIGZyb20gXCJub2RlLWZldGNoXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcblxuaW1wb3J0IHsgRW5hYmxlZERhdGFzZXRzIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IGxvYWRBc3NlbWJsZWVEYXRhIH0gZnJvbSBcIi4uL2xvYWRlcnNcIlxuaW1wb3J0IHsgRG9jdW1lbnQsIFR5cGVEb2N1bWVudCB9IGZyb20gXCIuLi90eXBlcy9kb3NzaWVyc19sZWdpc2xhdGlmc1wiXG5pbXBvcnQgeyBEb2N1bWVudFVybEZvcm1hdCwgdXJsRnJvbURvY3VtZW50IH0gZnJvbSBcIi4uL3VybHNcIlxuXG5jb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gIHtcbiAgICBhbGlhczogXCJjXCIsXG4gICAgaGVscDogXCJjb21taXQgZG9jdW1lbnRzXCIsXG4gICAgbmFtZTogXCJjb21taXRcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwibFwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCIxNlwiLFxuICAgIG5hbWU6IFwibGVnaXNsYXR1cmVcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJyXCIsXG4gICAgaGVscDogXCJwdXNoIGNvbW1pdCB0byBnaXZlbiByZW1vdGVcIixcbiAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICBuYW1lOiBcInJlbW90ZVwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInNcIixcbiAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInVcIixcbiAgICBoZWxwOiBcIlVJRCBvZiBmaXJzdCBBc3NlbWJsw6llJ3MgZG9jdW1lbnQgdG8gcmV0cmlldmVcIixcbiAgICBuYW1lOiBcInVpZFwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInZcIixcbiAgICBoZWxwOiBcInZlcmJvc2UgbG9nc1wiLFxuICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgIGhlbHA6IFwiZGlyZWN0b3J5IGNvbnRhaW5pbmcgQXNzZW1ibMOpZSBvcGVuIGRhdGEgZmlsZXNcIixcbiAgICBuYW1lOiBcImRhdGFEaXJcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG5dXG5jb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucylcblxuZnVuY3Rpb24gY29tbWl0QW5kUHVzaChcbiAgcmVwb3NpdG9yeURpcjogc3RyaW5nLFxuICBjb21taXQ6IGJvb2xlYW4sXG4gIHJlbW90ZXM/OiBzdHJpbmdbXSxcbik6IGJvb2xlYW4ge1xuICBsZXQgZXJyb3IgPSBmYWxzZVxuICBpZiAoY29tbWl0KSB7XG4gICAgZXhlY1N5bmMoXCJnaXQgYWRkIC5cIiwge1xuICAgICAgY3dkOiByZXBvc2l0b3J5RGlyLFxuICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICB9KVxuICAgIHRyeSB7XG4gICAgICBleGVjU3luYygnZ2l0IGNvbW1pdCAtbSBcIk5vdXZlbGxlIG1vaXNzb25cIicsIHtcbiAgICAgICAgY3dkOiByZXBvc2l0b3J5RGlyLFxuICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgfSlcbiAgICB9IGNhdGNoIChjaGlsZFByb2Nlc3MpIHtcbiAgICAgIGlmIChcbiAgICAgICAgKGNoaWxkUHJvY2VzcyBhcyBDaGlsZFByb2Nlc3MpLnN0ZGVyciA9PT0gbnVsbCB8fFxuICAgICAgICAhL25vdGhpbmcgdG8gY29tbWl0Ly50ZXN0KChjaGlsZFByb2Nlc3MgYXMgYW55KS5zdGRvdXQpXG4gICAgICApIHtcbiAgICAgICAgY29uc29sZS5lcnJvcigoY2hpbGRQcm9jZXNzIGFzIGFueSkub3V0cHV0KVxuICAgICAgICB0aHJvdyBjaGlsZFByb2Nlc3NcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCByZW1vdGUgb2YgcmVtb3RlcyB8fCBbXSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBwdXNoICR7cmVtb3RlfSBtYXN0ZXJgLCB7XG4gICAgICAgICAgY3dkOiByZXBvc2l0b3J5RGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH0gY2F0Y2ggKGNoaWxkUHJvY2Vzcykge1xuICAgICAgICAvLyBEb24ndCBzdG9wIHdoZW4gcHVzaCBmYWlscy5cbiAgICAgICAgY29uc29sZS5lcnJvcigoY2hpbGRQcm9jZXNzIGFzIGFueSkub3V0cHV0KVxuICAgICAgICBlcnJvciA9IHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGVycm9yXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJldHJpZXZlRG9jdW1lbnRzKCk6IFByb21pc2U8RG9jdW1lbnRbXT4ge1xuICBhc3NlcnQoXG4gICAgIW9wdGlvbnMuY29tbWl0IHx8IG9wdGlvbnMudWlkLFxuICAgICdPcHRpb25zIFwiY29tbWl0XCIgJiBcInVpZFwiIGFyZSBpbmNvbXBhdGlibGUnLFxuICApXG5cbiAgY29uc3QgZGF0YURpciA9IG9wdGlvbnMuZGF0YURpclxuICBjb25zdCB7IGRvY3VtZW50QnlVaWQgfSA9IGxvYWRBc3NlbWJsZWVEYXRhKFxuICAgIGRhdGFEaXIsXG4gICAgRW5hYmxlZERhdGFzZXRzLkRvc3NpZXJzTGVnaXNsYXRpZnMsXG4gICAgb3B0aW9ucy5sZWdpc2xhdHVyZSxcbiAgKVxuXG4gIGNvbnN0IHRleHRlc0xvaXNEaXIgPSBwYXRoLmpvaW4oXG4gICAgZGF0YURpcixcbiAgICBcInd3dy5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyXCIsXG4gICAgb3B0aW9ucy5sZWdpc2xhdHVyZSxcbiAgICBcInRleHRlc1wiLFxuICApXG4gIGZzLmVuc3VyZURpclN5bmModGV4dGVzTG9pc0RpcilcbiAgaWYgKCFvcHRpb25zLnVpZCkge1xuICAgIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZnMucmVhZGRpclN5bmModGV4dGVzTG9pc0RpcikpIHtcbiAgICAgIGlmIChmaWxlbmFtZVswXSA9PT0gXCIuXCIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGZzLnJlbW92ZVN5bmMocGF0aC5qb2luKHRleHRlc0xvaXNEaXIsIGZpbGVuYW1lKSlcbiAgICB9XG4gIH1cblxuICBjb25zdCB0ZXh0ZXNMb2lzID0gT2JqZWN0LnZhbHVlcyhkb2N1bWVudEJ5VWlkKVxuICAgIC5maWx0ZXIoKGRvY3VtZW50KSA9PiBkb2N1bWVudC54c2lUeXBlID09PSBUeXBlRG9jdW1lbnQuVGV4dGVMb2lUeXBlKVxuICAgIC5maWx0ZXIoXG4gICAgICAoZG9jdW1lbnQpID0+XG4gICAgICAgIGRvY3VtZW50LnVpZC5zdGFydHNXaXRoKFwiUElPTkFOXCIpIHx8IGRvY3VtZW50LnVpZC5zdGFydHNXaXRoKFwiUFJKTEFOXCIpLFxuICAgIClcbiAgICAubWFwKChkb2N1bWVudCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZG9jdW1lbnQsXG4gICAgICAgIHJhd0RvY3VtZW50QXNzZW1ibGVlVXJsOiB1cmxGcm9tRG9jdW1lbnQoXG4gICAgICAgICAgZG9jdW1lbnQsXG4gICAgICAgICAgRG9jdW1lbnRVcmxGb3JtYXQuUmF3SHRtbCxcbiAgICAgICAgKSxcbiAgICAgIH1cbiAgICB9KVxuICAgIC5zb3J0KChhLCBiKSA9PlxuICAgICAgYS5yYXdEb2N1bWVudEFzc2VtYmxlZVVybCA9PT0gbnVsbFxuICAgICAgICA/IC0xXG4gICAgICAgIDogYi5yYXdEb2N1bWVudEFzc2VtYmxlZVVybCA9PT0gbnVsbFxuICAgICAgICA/IDFcbiAgICAgICAgOiBhLnJhd0RvY3VtZW50QXNzZW1ibGVlVXJsLmxvY2FsZUNvbXBhcmUoYi5yYXdEb2N1bWVudEFzc2VtYmxlZVVybCksXG4gICAgKVxuXG4gIGNvbnN0IGZpcnN0VWlkID0gb3B0aW9ucy51aWRcbiAgbGV0IHNraXAgPSAhIWZpcnN0VWlkXG4gIGZvciAoY29uc3QgdGV4dGVMb2kgb2YgdGV4dGVzTG9pcykge1xuICAgIGlmIChza2lwKSB7XG4gICAgICBpZiAodGV4dGVMb2kudWlkID09PSBmaXJzdFVpZCkge1xuICAgICAgICBza2lwID0gZmFsc2VcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgfVxuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgUmV0cmlldmluZyBiaWxsICR7dGV4dGVMb2kudWlkfSBhdCAke3RleHRlTG9pLnJhd0RvY3VtZW50QXNzZW1ibGVlVXJsfWAsXG4gICAgICApXG4gICAgfVxuICAgIGlmICh0ZXh0ZUxvaS5yYXdEb2N1bWVudEFzc2VtYmxlZVVybCA9PT0gbnVsbCkge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgY29uc3QgdXJsID0gbmV3IFVSTCh0ZXh0ZUxvaS5yYXdEb2N1bWVudEFzc2VtYmxlZVVybClcbiAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgIGRhdGFEaXIsXG4gICAgICB1cmwuaG9zdG5hbWUsXG4gICAgICAuLi51cmwucGF0aG5hbWUuc3BsaXQoXCIvXCIpLFxuICAgIClcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGV4dGVzTG9pc0RpciwgcGF0aC5kaXJuYW1lKGZpbGVQYXRoKSlcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godGV4dGVMb2kucmF3RG9jdW1lbnRBc3NlbWJsZWVVcmwpXG4gICAgY29uc3QgcGFnZSA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKVxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgIT09IDQwNCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgIGBFcnJvciB3aGlsZSBnZXR0aW5nIHBhZ2UgXCIke1xuICAgICAgICAgICAgdGV4dGVMb2kucmF3RG9jdW1lbnRBc3NlbWJsZWVVcmxcbiAgICAgICAgICB9XCIgKHVpZDogJHt0ZXh0ZUxvaS51aWR9KTpcXG5cXG5FcnJvcjpcXG4ke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgeyBjb2RlOiByZXNwb25zZS5zdGF0dXMsIG1lc3NhZ2U6IHJlc3BvbnNlLnN0YXR1c1RleHQgfSxcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAyLFxuICAgICAgICAgICl9YCxcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgY29udGludWVcbiAgICB9XG4gICAgZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgcGFnZSlcbiAgfVxuXG4gIGlmIChjb21taXRBbmRQdXNoKHRleHRlc0xvaXNEaXIsIG9wdGlvbnMuY29tbWl0LCBvcHRpb25zLnJlbW90ZSkpIHtcbiAgICBwcm9jZXNzLmV4aXQoMSlcbiAgfVxuICByZXR1cm4gdGV4dGVzTG9pc1xufVxuXG5yZXRyaWV2ZURvY3VtZW50cygpLmNhdGNoKChlcnJvcikgPT4ge1xuICBjb25zb2xlLmxvZyhlcnJvcilcbiAgcHJvY2Vzcy5leGl0KDEpXG59KVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxNQUFNLE1BQU0sUUFBUTtBQUMzQixTQUF1QkMsUUFBUSxRQUFRLGVBQWU7QUFDdEQsT0FBT0MsZUFBZSxNQUFNLG1CQUFtQjtBQUMvQyxPQUFPQyxFQUFFLE1BQU0sVUFBVTtBQUN6QixPQUFPQyxLQUFLLE1BQU0sWUFBWTtBQUM5QixPQUFPQyxJQUFJLE1BQU0sTUFBTTtBQUFBLFNBRWRDLGVBQWU7QUFBQSxTQUNmQyxpQkFBaUI7QUFBQSxTQUNQQyxZQUFZO0FBQUEsU0FDdEJDLGlCQUFpQixFQUFFQyxlQUFlO0FBRTNDLE1BQU1DLGtCQUFrQixHQUFHLENBQ3pCO0VBQ0VDLEtBQUssRUFBRSxHQUFHO0VBQ1ZDLElBQUksRUFBRSxrQkFBa0I7RUFDeEJDLElBQUksRUFBRSxRQUFRO0VBQ2RDLElBQUksRUFBRUM7QUFDUixDQUFDLEVBQ0Q7RUFDRUosS0FBSyxFQUFFLEdBQUc7RUFDVkssWUFBWSxFQUFFLElBQUk7RUFDbEJILElBQUksRUFBRSxhQUFhO0VBQ25CQyxJQUFJLEVBQUVHO0FBQ1IsQ0FBQyxFQUNEO0VBQ0VOLEtBQUssRUFBRSxHQUFHO0VBQ1ZDLElBQUksRUFBRSw2QkFBNkI7RUFDbkNNLFFBQVEsRUFBRSxJQUFJO0VBQ2RMLElBQUksRUFBRSxRQUFRO0VBQ2RDLElBQUksRUFBRUc7QUFDUixDQUFDLEVBQ0Q7RUFDRU4sS0FBSyxFQUFFLEdBQUc7RUFDVkMsSUFB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
|
|
150
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhc3NlcnQiLCJleGVjU3luYyIsImNvbW1hbmRMaW5lQXJncyIsImZzIiwiZmV0Y2giLCJwYXRoIiwiRW5hYmxlZERhdGFzZXRzIiwibG9hZEFzc2VtYmxlZURhdGEiLCJUeXBlRG9jdW1lbnQiLCJEb2N1bWVudFVybEZvcm1hdCIsInVybEZyb21Eb2N1bWVudCIsIm9wdGlvbnNEZWZpbml0aW9ucyIsImFsaWFzIiwiaGVscCIsIm5hbWUiLCJ0eXBlIiwiQm9vbGVhbiIsImRlZmF1bHRWYWx1ZSIsIlN0cmluZyIsIm11bHRpcGxlIiwiZGVmYXVsdE9wdGlvbiIsIm9wdGlvbnMiLCJjb21taXRBbmRQdXNoIiwicmVwb3NpdG9yeURpciIsImNvbW1pdCIsInJlbW90ZXMiLCJlcnJvciIsImN3ZCIsImVudiIsInByb2Nlc3MiLCJlbmNvZGluZyIsInN0ZGlvIiwiY2hpbGRQcm9jZXNzIiwic3RkZXJyIiwidGVzdCIsInN0ZG91dCIsImNvbnNvbGUiLCJvdXRwdXQiLCJyZW1vdGUiLCJyZXRyaWV2ZURvY3VtZW50cyIsInVpZCIsImRhdGFEaXIiLCJkb2N1bWVudEJ5VWlkIiwiRG9zc2llcnNMZWdpc2xhdGlmcyIsImxlZ2lzbGF0dXJlIiwidGV4dGVzTG9pc0RpciIsImpvaW4iLCJlbnN1cmVEaXJTeW5jIiwiZmlsZW5hbWUiLCJyZWFkZGlyU3luYyIsInJlbW92ZVN5bmMiLCJ0ZXh0ZXNMb2lzIiwiT2JqZWN0IiwidmFsdWVzIiwiZmlsdGVyIiwiZG9jdW1lbnQiLCJ4c2lUeXBlIiwiVGV4dGVMb2lUeXBlIiwic3RhcnRzV2l0aCIsIm1hcCIsInJhd0RvY3VtZW50QXNzZW1ibGVlVXJsIiwiUmF3SHRtbCIsInNvcnQiLCJhIiwiYiIsImxvY2FsZUNvbXBhcmUiLCJmaXJzdFVpZCIsInNraXAiLCJ0ZXh0ZUxvaSIsInNpbGVudCIsImxvZyIsInVybCIsIlVSTCIsImZpbGVQYXRoIiwiaG9zdG5hbWUiLCJwYXRobmFtZSIsInNwbGl0Iiwic3RyaWN0RXF1YWwiLCJkaXJuYW1lIiwicmVzcG9uc2UiLCJwYWdlIiwidGV4dCIsIm9rIiwic3RhdHVzIiwiSlNPTiIsInN0cmluZ2lmeSIsImNvZGUiLCJtZXNzYWdlIiwic3RhdHVzVGV4dCIsIndyaXRlRmlsZVN5bmMiLCJleGl0IiwiY2F0Y2giXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyaXB0cy9yZXRyaWV2ZV90ZXh0ZXNfbG9pcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIlxuaW1wb3J0IHsgQ2hpbGRQcm9jZXNzLCBleGVjU3luYyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCJcbmltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IGZldGNoIGZyb20gXCJub2RlLWZldGNoXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcblxuaW1wb3J0IHsgRW5hYmxlZERhdGFzZXRzIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IGxvYWRBc3NlbWJsZWVEYXRhIH0gZnJvbSBcIi4uL2xvYWRlcnNcIlxuaW1wb3J0IHsgRG9jdW1lbnQsIFR5cGVEb2N1bWVudCB9IGZyb20gXCIuLi90eXBlcy9kb3NzaWVyc19sZWdpc2xhdGlmc1wiXG5pbXBvcnQgeyBEb2N1bWVudFVybEZvcm1hdCwgdXJsRnJvbURvY3VtZW50IH0gZnJvbSBcIi4uL3VybHNcIlxuXG5jb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gIHtcbiAgICBhbGlhczogXCJjXCIsXG4gICAgaGVscDogXCJjb21taXQgZG9jdW1lbnRzXCIsXG4gICAgbmFtZTogXCJjb21taXRcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwibFwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCIxNlwiLFxuICAgIG5hbWU6IFwibGVnaXNsYXR1cmVcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJyXCIsXG4gICAgaGVscDogXCJwdXNoIGNvbW1pdCB0byBnaXZlbiByZW1vdGVcIixcbiAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICBuYW1lOiBcInJlbW90ZVwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInNcIixcbiAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInVcIixcbiAgICBoZWxwOiBcIlVJRCBvZiBmaXJzdCBBc3NlbWJsw6llJ3MgZG9jdW1lbnQgdG8gcmV0cmlldmVcIixcbiAgICBuYW1lOiBcInVpZFwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInZcIixcbiAgICBoZWxwOiBcInZlcmJvc2UgbG9nc1wiLFxuICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgIGhlbHA6IFwiZGlyZWN0b3J5IGNvbnRhaW5pbmcgQXNzZW1ibMOpZSBvcGVuIGRhdGEgZmlsZXNcIixcbiAgICBuYW1lOiBcImRhdGFEaXJcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG5dXG5jb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucylcblxuZnVuY3Rpb24gY29tbWl0QW5kUHVzaChcbiAgcmVwb3NpdG9yeURpcjogc3RyaW5nLFxuICBjb21taXQ6IGJvb2xlYW4sXG4gIHJlbW90ZXM/OiBzdHJpbmdbXSxcbik6IGJvb2xlYW4ge1xuICBsZXQgZXJyb3IgPSBmYWxzZVxuICBpZiAoY29tbWl0KSB7XG4gICAgZXhlY1N5bmMoXCJnaXQgYWRkIC5cIiwge1xuICAgICAgY3dkOiByZXBvc2l0b3J5RGlyLFxuICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICB9KVxuICAgIHRyeSB7XG4gICAgICBleGVjU3luYygnZ2l0IGNvbW1pdCAtbSBcIk5vdXZlbGxlIG1vaXNzb25cIiAtLXF1aWV0Jywge1xuICAgICAgICBjd2Q6IHJlcG9zaXRvcnlEaXIsXG4gICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICB9KVxuICAgIH0gY2F0Y2ggKGNoaWxkUHJvY2Vzcykge1xuICAgICAgaWYgKFxuICAgICAgICAoY2hpbGRQcm9jZXNzIGFzIENoaWxkUHJvY2Vzcykuc3RkZXJyID09PSBudWxsIHx8XG4gICAgICAgICEvbm90aGluZyB0byBjb21taXQvLnRlc3QoKGNoaWxkUHJvY2VzcyBhcyBhbnkpLnN0ZG91dClcbiAgICAgICkge1xuICAgICAgICBjb25zb2xlLmVycm9yKChjaGlsZFByb2Nlc3MgYXMgYW55KS5vdXRwdXQpXG4gICAgICAgIHRocm93IGNoaWxkUHJvY2Vzc1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IHJlbW90ZSBvZiByZW1vdGVzIHx8IFtdKSB7XG4gICAgICB0cnkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IHB1c2ggJHtyZW1vdGV9IG1hc3RlcmAsIHtcbiAgICAgICAgICBjd2Q6IHJlcG9zaXRvcnlEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfSBjYXRjaCAoY2hpbGRQcm9jZXNzKSB7XG4gICAgICAgIC8vIERvbid0IHN0b3Agd2hlbiBwdXNoIGZhaWxzLlxuICAgICAgICBjb25zb2xlLmVycm9yKChjaGlsZFByb2Nlc3MgYXMgYW55KS5vdXRwdXQpXG4gICAgICAgIGVycm9yID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZXJyb3Jcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmV0cmlldmVEb2N1bWVudHMoKTogUHJvbWlzZTxEb2N1bWVudFtdPiB7XG4gIGFzc2VydChcbiAgICAhb3B0aW9ucy5jb21taXQgfHwgb3B0aW9ucy51aWQsXG4gICAgJ09wdGlvbnMgXCJjb21taXRcIiAmIFwidWlkXCIgYXJlIGluY29tcGF0aWJsZScsXG4gIClcblxuICBjb25zdCBkYXRhRGlyID0gb3B0aW9ucy5kYXRhRGlyXG4gIGNvbnN0IHsgZG9jdW1lbnRCeVVpZCB9ID0gbG9hZEFzc2VtYmxlZURhdGEoXG4gICAgZGF0YURpcixcbiAgICBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcyxcbiAgICBvcHRpb25zLmxlZ2lzbGF0dXJlLFxuICApXG5cbiAgY29uc3QgdGV4dGVzTG9pc0RpciA9IHBhdGguam9pbihcbiAgICBkYXRhRGlyLFxuICAgIFwid3d3LmFzc2VtYmxlZS1uYXRpb25hbGUuZnJcIixcbiAgICBvcHRpb25zLmxlZ2lzbGF0dXJlLFxuICAgIFwidGV4dGVzXCIsXG4gIClcbiAgZnMuZW5zdXJlRGlyU3luYyh0ZXh0ZXNMb2lzRGlyKVxuICBpZiAoIW9wdGlvbnMudWlkKSB7XG4gICAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBmcy5yZWFkZGlyU3luYyh0ZXh0ZXNMb2lzRGlyKSkge1xuICAgICAgaWYgKGZpbGVuYW1lWzBdID09PSBcIi5cIikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgZnMucmVtb3ZlU3luYyhwYXRoLmpvaW4odGV4dGVzTG9pc0RpciwgZmlsZW5hbWUpKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHRleHRlc0xvaXMgPSBPYmplY3QudmFsdWVzKGRvY3VtZW50QnlVaWQpXG4gICAgLmZpbHRlcigoZG9jdW1lbnQpID0+IGRvY3VtZW50LnhzaVR5cGUgPT09IFR5cGVEb2N1bWVudC5UZXh0ZUxvaVR5cGUpXG4gICAgLmZpbHRlcihcbiAgICAgIChkb2N1bWVudCkgPT5cbiAgICAgICAgZG9jdW1lbnQudWlkLnN0YXJ0c1dpdGgoXCJQSU9OQU5cIikgfHwgZG9jdW1lbnQudWlkLnN0YXJ0c1dpdGgoXCJQUkpMQU5cIiksXG4gICAgKVxuICAgIC5tYXAoKGRvY3VtZW50KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5kb2N1bWVudCxcbiAgICAgICAgcmF3RG9jdW1lbnRBc3NlbWJsZWVVcmw6IHVybEZyb21Eb2N1bWVudChcbiAgICAgICAgICBkb2N1bWVudCxcbiAgICAgICAgICBEb2N1bWVudFVybEZvcm1hdC5SYXdIdG1sLFxuICAgICAgICApLFxuICAgICAgfVxuICAgIH0pXG4gICAgLnNvcnQoKGEsIGIpID0+XG4gICAgICBhLnJhd0RvY3VtZW50QXNzZW1ibGVlVXJsID09PSBudWxsXG4gICAgICAgID8gLTFcbiAgICAgICAgOiBiLnJhd0RvY3VtZW50QXNzZW1ibGVlVXJsID09PSBudWxsXG4gICAgICAgID8gMVxuICAgICAgICA6IGEucmF3RG9jdW1lbnRBc3NlbWJsZWVVcmwubG9jYWxlQ29tcGFyZShiLnJhd0RvY3VtZW50QXNzZW1ibGVlVXJsKSxcbiAgICApXG5cbiAgY29uc3QgZmlyc3RVaWQgPSBvcHRpb25zLnVpZFxuICBsZXQgc2tpcCA9ICEhZmlyc3RVaWRcbiAgZm9yIChjb25zdCB0ZXh0ZUxvaSBvZiB0ZXh0ZXNMb2lzKSB7XG4gICAgaWYgKHNraXApIHtcbiAgICAgIGlmICh0ZXh0ZUxvaS51aWQgPT09IGZpcnN0VWlkKSB7XG4gICAgICAgIHNraXAgPSBmYWxzZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGBSZXRyaWV2aW5nIGJpbGwgJHt0ZXh0ZUxvaS51aWR9IGF0ICR7dGV4dGVMb2kucmF3RG9jdW1lbnRBc3NlbWJsZWVVcmx9YCxcbiAgICAgIClcbiAgICB9XG4gICAgaWYgKHRleHRlTG9pLnJhd0RvY3VtZW50QXNzZW1ibGVlVXJsID09PSBudWxsKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHRleHRlTG9pLnJhd0RvY3VtZW50QXNzZW1ibGVlVXJsKVxuICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgZGF0YURpcixcbiAgICAgIHVybC5ob3N0bmFtZSxcbiAgICAgIC4uLnVybC5wYXRobmFtZS5zcGxpdChcIi9cIiksXG4gICAgKVxuICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXh0ZXNMb2lzRGlyLCBwYXRoLmRpcm5hbWUoZmlsZVBhdGgpKVxuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh0ZXh0ZUxvaS5yYXdEb2N1bWVudEFzc2VtYmxlZVVybClcbiAgICBjb25zdCBwYWdlID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpXG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyAhPT0gNDA0KSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgYEVycm9yIHdoaWxlIGdldHRpbmcgcGFnZSBcIiR7XG4gICAgICAgICAgICB0ZXh0ZUxvaS5yYXdEb2N1bWVudEFzc2VtYmxlZVVybFxuICAgICAgICAgIH1cIiAodWlkOiAke3RleHRlTG9pLnVpZH0pOlxcblxcbkVycm9yOlxcbiR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICB7IGNvZGU6IHJlc3BvbnNlLnN0YXR1cywgbWVzc2FnZTogcmVzcG9uc2Uuc3RhdHVzVGV4dCB9LFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIDIsXG4gICAgICAgICAgKX1gLFxuICAgICAgICApXG4gICAgICB9XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBwYWdlKVxuICB9XG5cbiAgaWYgKGNvbW1pdEFuZFB1c2godGV4dGVzTG9pc0Rpciwgb3B0aW9ucy5jb21taXQsIG9wdGlvbnMucmVtb3RlKSkge1xuICAgIHByb2Nlc3MuZXhpdCgxKVxuICB9XG4gIHJldHVybiB0ZXh0ZXNMb2lzXG59XG5cbnJldHJpZXZlRG9jdW1lbnRzKCkuY2F0Y2goKGVycm9yKSA9PiB7XG4gIGNvbnNvbGUubG9nKGVycm9yKVxuICBwcm9jZXNzLmV4aXQoMSlcbn0pXG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLE1BQU0sTUFBTSxRQUFRO0FBQzNCLFNBQXVCQyxRQUFRLFFBQVEsZUFBZTtBQUN0RCxPQUFPQyxlQUFlLE1BQU0sbUJBQW1CO0FBQy9DLE9BQU9DLEVBQUUsTUFBTSxVQUFVO0FBQ3pCLE9BQU9DLEtBQUssTUFBTSxZQUFZO0FBQzlCLE9BQU9DLElBQUksTUFBTSxNQUFNO0FBQUEsU0FFZEMsZUFBZTtBQUFBLFNBQ2ZDLGlCQUFpQjtBQUFBLFNBQ1BDLFlBQVk7QUFBQSxTQUN0QkMsaUJBQWlCLEVBQUVDLGVBQWU7QUFFM0MsTUFBTUMsa0JBQWtCLEdBQUcsQ0FDekI7RUFDRUMsS0FBSyxFQUFFLEdBQUc7RUFDVkMsSUFBSSxFQUFFLGtCQUFrQjtFQUN4QkMsSUFBSSxFQUFFLFFBQVE7RUFDZEMsSUFBSSxFQUFFQztBQUNSLENBQUMsRUFDRDtFQUNFSixLQUFLLEVBQUUsR0FBRztFQUNWSyxZQUFZLEVBQUUsSUFBSTtFQUNsQkgsSUFBSSxFQUFFLGFBQWE7RUFDbkJDLElBQUksRUFBRUc7QUFDUixDQUFDLEVBQ0Q7RUFDRU4sS0FBSyxFQUFFLEdBQUc7RUFDVkMsSUFBSSxFQUFFLDZCQUE2QjtFQUNuQ00sUUFBUSxFQUFFLElBQUk7RUFDZEwsSUFBSSxFQUFFLFFBQVE7RUFDZEMsSUFBSSxFQUFFRztBQUNSLENBQUMsRUFDRDtFQUNFTixLQUFLLEVBQUUsR0FBRztF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
|
|
@@ -48,12 +48,12 @@ var _datasets = require("../../src/datasets");
|
|
|
48
48
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
49
49
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
50
50
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
51
|
-
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
|
|
51
|
+
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
|
|
52
52
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
53
53
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
54
54
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, 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 normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
55
55
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
56
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++)
|
|
56
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
57
57
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
58
58
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
|
59
59
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
@@ -230,27 +230,25 @@ var Validate = /*#__PURE__*/function () {
|
|
|
230
230
|
var _process = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
231
231
|
var status, _iterator3, _step3, file, content;
|
|
232
232
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
233
|
-
while (1) {
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
status |= this.validate(content, file);
|
|
243
|
-
}
|
|
244
|
-
} catch (err) {
|
|
245
|
-
_iterator3.e(err);
|
|
246
|
-
} finally {
|
|
247
|
-
_iterator3.f();
|
|
233
|
+
while (1) switch (_context.prev = _context.next) {
|
|
234
|
+
case 0:
|
|
235
|
+
status = 0;
|
|
236
|
+
_iterator3 = _createForOfIteratorHelper((0, _file_systems.getFiles)([this.options.data]));
|
|
237
|
+
try {
|
|
238
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
239
|
+
file = _step3.value;
|
|
240
|
+
content = (0, _file_systems.load)(file);
|
|
241
|
+
status |= this.validate(content, file);
|
|
248
242
|
}
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
243
|
+
} catch (err) {
|
|
244
|
+
_iterator3.e(err);
|
|
245
|
+
} finally {
|
|
246
|
+
_iterator3.f();
|
|
247
|
+
}
|
|
248
|
+
return _context.abrupt("return", status);
|
|
249
|
+
case 4:
|
|
250
|
+
case "end":
|
|
251
|
+
return _context.stop();
|
|
254
252
|
}
|
|
255
253
|
}, _callee, this);
|
|
256
254
|
}));
|
|
@@ -270,78 +268,76 @@ function _main() {
|
|
|
270
268
|
_main = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(argv) {
|
|
271
269
|
var options, directorySchema, _iterator4, _step4, d, validate, status;
|
|
272
270
|
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
273
|
-
while (1) {
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
_context2.next = 3;
|
|
279
|
-
break;
|
|
280
|
-
}
|
|
281
|
-
return _context2.abrupt("return", 1);
|
|
282
|
-
case 3:
|
|
283
|
-
directorySchema = [];
|
|
284
|
-
if (!options.schema) {
|
|
285
|
-
_context2.next = 8;
|
|
286
|
-
break;
|
|
287
|
-
}
|
|
288
|
-
directorySchema = [[options.data, options.schema]];
|
|
289
|
-
_context2.next = 14;
|
|
271
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
272
|
+
case 0:
|
|
273
|
+
options = parseArgs(argv);
|
|
274
|
+
if (!(options === null)) {
|
|
275
|
+
_context2.next = 3;
|
|
290
276
|
break;
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
_context2.next = 14;
|
|
277
|
+
}
|
|
278
|
+
return _context2.abrupt("return", 1);
|
|
279
|
+
case 3:
|
|
280
|
+
directorySchema = [];
|
|
281
|
+
if (!options.schema) {
|
|
282
|
+
_context2.next = 8;
|
|
298
283
|
break;
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
case 17:
|
|
307
|
-
if ((_step4 = _iterator4.n()).done) {
|
|
308
|
-
_context2.next = 30;
|
|
309
|
-
break;
|
|
310
|
-
}
|
|
311
|
-
d = _step4.value;
|
|
312
|
-
options.schema = d[1];
|
|
313
|
-
options.data = d[0];
|
|
314
|
-
if (options.verbose) console.log("working on files ".concat(options.data, " with schema ").concat(options.schema));
|
|
315
|
-
validate = new Validate(options);
|
|
316
|
-
_context2.next = 25;
|
|
317
|
-
return validate.process();
|
|
318
|
-
case 25:
|
|
319
|
-
status = _context2.sent;
|
|
320
|
-
if (!(status != 0)) {
|
|
321
|
-
_context2.next = 28;
|
|
322
|
-
break;
|
|
323
|
-
}
|
|
324
|
-
return _context2.abrupt("return", status);
|
|
325
|
-
case 28:
|
|
326
|
-
_context2.next = 17;
|
|
284
|
+
}
|
|
285
|
+
directorySchema = [[options.data, options.schema]];
|
|
286
|
+
_context2.next = 14;
|
|
287
|
+
break;
|
|
288
|
+
case 8:
|
|
289
|
+
if (!options.dataset) {
|
|
290
|
+
_context2.next = 12;
|
|
327
291
|
break;
|
|
328
|
-
|
|
329
|
-
|
|
292
|
+
}
|
|
293
|
+
directorySchema = (0, _datasets.datasetDirectorySchema)(options.dataset);
|
|
294
|
+
_context2.next = 14;
|
|
295
|
+
break;
|
|
296
|
+
case 12:
|
|
297
|
+
console.error("either --schema or --dataset is required");
|
|
298
|
+
return _context2.abrupt("return", 1);
|
|
299
|
+
case 14:
|
|
300
|
+
_iterator4 = _createForOfIteratorHelper(directorySchema);
|
|
301
|
+
_context2.prev = 15;
|
|
302
|
+
_iterator4.s();
|
|
303
|
+
case 17:
|
|
304
|
+
if ((_step4 = _iterator4.n()).done) {
|
|
305
|
+
_context2.next = 30;
|
|
330
306
|
break;
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
307
|
+
}
|
|
308
|
+
d = _step4.value;
|
|
309
|
+
options.schema = d[1];
|
|
310
|
+
options.data = d[0];
|
|
311
|
+
if (options.verbose) console.log("working on files ".concat(options.data, " with schema ").concat(options.schema));
|
|
312
|
+
validate = new Validate(options);
|
|
313
|
+
_context2.next = 25;
|
|
314
|
+
return validate.process();
|
|
315
|
+
case 25:
|
|
316
|
+
status = _context2.sent;
|
|
317
|
+
if (!(status != 0)) {
|
|
318
|
+
_context2.next = 28;
|
|
319
|
+
break;
|
|
320
|
+
}
|
|
321
|
+
return _context2.abrupt("return", status);
|
|
322
|
+
case 28:
|
|
323
|
+
_context2.next = 17;
|
|
324
|
+
break;
|
|
325
|
+
case 30:
|
|
326
|
+
_context2.next = 35;
|
|
327
|
+
break;
|
|
328
|
+
case 32:
|
|
329
|
+
_context2.prev = 32;
|
|
330
|
+
_context2.t0 = _context2["catch"](15);
|
|
331
|
+
_iterator4.e(_context2.t0);
|
|
332
|
+
case 35:
|
|
333
|
+
_context2.prev = 35;
|
|
334
|
+
_iterator4.f();
|
|
335
|
+
return _context2.finish(35);
|
|
336
|
+
case 38:
|
|
337
|
+
return _context2.abrupt("return", 0);
|
|
338
|
+
case 39:
|
|
339
|
+
case "end":
|
|
340
|
+
return _context2.stop();
|
|
345
341
|
}
|
|
346
342
|
}, _callee2, null, [[15, 32, 35, 38]]);
|
|
347
343
|
}));
|
|
@@ -353,4 +349,4 @@ if (process.argv[1].endsWith("validate_json.ts")) main(process.argv).then(functi
|
|
|
353
349
|
console.error(error);
|
|
354
350
|
process.exit(1);
|
|
355
351
|
});
|
|
356
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ0ZW1wIiwidHJhY2siLCJwYXJzZUFyZ3MiLCJhcmd2Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiZGVzY3JpcHRpb24iLCJkZWZhdWx0T3B0aW9uIiwibmFtZSIsInR5cGUiLCJTdHJpbmciLCJkZWZhdWx0VmFsdWUiLCJnZXREYXRhc2V0cyIsImdldFNjaGVtYXMiLCJCb29sZWFuIiwic2VjdGlvbnMiLCJoZWFkZXIiLCJjb250ZW50Iiwib3B0aW9uTGlzdCIsIm9wdGlvbnMiLCJjb21tYW5kTGluZUFyZ3MiLCJkYXRhc2V0IiwidmFsaWREYXRhc2V0IiwiY29uc29sZSIsImVycm9yIiwiaGVscCIsInNjaGVtYSIsImluY2x1ZGVzIiwidXNhZ2UiLCJjb21tYW5kTGluZVVzYWdlIiwid2FybiIsIlZhbGlkYXRlIiwidmVyc2lvbjJzY2hlbWEiLCJ0bXBEaXIiLCJta2RpclN5bmMiLCJ0YWciLCJkZXYiLCJ2ZXJib3NlIiwibG9nIiwicmVwb3NpdG9yeURpciIsInBhdGgiLCJqb2luIiwidGFnRGlyIiwiZnMiLCJleGlzdHNTeW5jIiwiZ2l0IiwicnVuIiwicmVwb3NpdG9yeSIsInJlbmFtZVN5bmMiLCJ2ZXJzaW9uIiwiYWp2IiwiQWp2IiwiZGlyIiwiZ2V0U2NoZW1hRGlyIiwicmVmZXJlbmNlcyIsImdldEZpbGVzIiwicmVmZXJlbmNlIiwicHVzaCIsImZpbGUiLCJhZGRTY2hlbWEiLCJsb2FkIiwiU2NoZW1hIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsInMiLCJjb21waWxlIiwic2NoZW1hVmVyc2lvbiIsInVuZGVmaW5lZCIsInJlcGxhY2UiLCJmaWxlbmFtZSIsImdldFZlcnNpb24iLCJ2YWxpZGF0b3IiLCJnZXRWYWxpZGF0b3IiLCJ2YWxpZCIsInNjaGVtYVVSTCIsImdldFNjaGVtYVVSTCIsImVycm9ycyIsInN0YXR1cyIsImRhdGEiLCJ2YWxpZGF0ZSIsIm1haW4iLCJkaXJlY3RvcnlTY2hlbWEiLCJkYXRhc2V0RGlyZWN0b3J5U2NoZW1hIiwiZCIsInByb2Nlc3MiLCJlbmRzV2l0aCIsInRoZW4iLCJleGl0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvdmFsaWRhdGVfanNvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQWp2IGZyb20gXCJhanZcIlxuaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGNvbW1hbmRMaW5lVXNhZ2UgZnJvbSBcImNvbW1hbmQtbGluZS11c2FnZVwiXG5pbXBvcnQgeyBsb2FkLCBnZXRGaWxlcyB9IGZyb20gXCIuLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0ICogYXMgZ2l0IGZyb20gXCIuLi9naXRcIlxuaW1wb3J0IHRlbXAgZnJvbSBcInRlbXBcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQge1xuICB2YWxpZERhdGFzZXQsXG4gIGdldERhdGFzZXRzLFxuICBnZXRTY2hlbWFzLFxuICBkYXRhc2V0RGlyZWN0b3J5U2NoZW1hLFxufSBmcm9tIFwiLi4vLi4vc3JjL2RhdGFzZXRzXCJcblxuLy8gQXV0b21hdGljYWxseSB0cmFjayBhbmQgY2xlYW51cCBmaWxlcyBhdCBleGl0XG50ZW1wLnRyYWNrKClcblxuZnVuY3Rpb24gcGFyc2VBcmdzKGFyZ3Y6IHN0cmluZ1tdKTogYW55IHtcbiAgY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcInBhdGhuYW1lIHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZGF0YXNldFwiLFxuICAgICAgZGVmYXVsdE9wdGlvbjogdHJ1ZSxcbiAgICAgIG5hbWU6IFwiZGF0YVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IFwiVVJMIG9yIHBhdGggdG8gdGhlIHRyaWNvdGV1c2VzLWFzc2VtYmxlZSBnaXQgcmVwb3NpdG9yeVwiLFxuICAgICAgZGVmYXVsdFZhbHVlOlxuICAgICAgICBcImh0dHBzOi8vZ2l0LmVuLXJvb3Qub3JnL3RyaWNvdGV1c2VzL3RyaWNvdGV1c2VzLWFzc2VtYmxlZS5naXRcIixcbiAgICAgIG5hbWU6IFwicmVwb3NpdG9yeVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IGBkYXRhc2V0IChwb3NzaWJsZSB2YWx1ZXMgbXVzdCBpbmNsdWRlIGV4YWN0bHkgb25lIG9mICR7Z2V0RGF0YXNldHMoKX0pYCxcbiAgICAgIG5hbWU6IFwiZGF0YXNldFwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IGBzY2hlbWEgKHBvc3NpYmxlIHZhbHVlcyBhcmUgJHtnZXRTY2hlbWFzKCl9KWAsXG4gICAgICBuYW1lOiBcInNjaGVtYVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiaWdub3JlIHNjaGVtYVZlcnNpb24gZnJvbSBKU09OIGZpbGVzIGFuZCB1c2UgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGluc3RlYWQgb2YgdGhlIC0tcmVwb3NpdG9yeVwiLFxuICAgICAgbmFtZTogXCJkZXZcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJpbmNyZWFzZSB2ZXJib3NpdHlcIixcbiAgICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IFwiaGVscFwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiUHJpbnQgdGhpcyB1c2FnZSBndWlkZS5cIixcbiAgICB9LFxuICBdXG4gIGNvbnN0IHNlY3Rpb25zID0gW1xuICAgIHtcbiAgICAgIGhlYWRlcjogXCJWYWxpZGF0ZSBKU09OIGZpbGVzXCIsXG4gICAgICBjb250ZW50OiBcIlZhbGlkYXRlIEpTT04gZmlsZXNcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGhlYWRlcjogXCJPcHRpb25zXCIsXG4gICAgICBvcHRpb25MaXN0OiBvcHRpb25zRGVmaW5pdGlvbnMsXG4gICAgfSxcbiAgXVxuICBjb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucywge1xuICAgIGFyZ3Y6IGFyZ3YsXG4gIH0pXG5cbiAgaWYgKG9wdGlvbnMuZGF0YXNldCkge1xuICAgIGlmICghdmFsaWREYXRhc2V0KG9wdGlvbnMuZGF0YXNldCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYC0tZGF0YXNldCAke29wdGlvbnMuZGF0YXNldH1gKVxuICAgICAgb3B0aW9ucy5oZWxwID0gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRpb25zLnNjaGVtYSkge1xuICAgIGlmICghZ2V0U2NoZW1hcygpLmluY2x1ZGVzKG9wdGlvbnMuc2NoZW1hKSkge1xuICAgICAgY29uc29sZS5lcnJvcihgLS1zY2hlbWEgJHtvcHRpb25zLnNjaGVtYX1gKVxuICAgICAgb3B0aW9ucy5oZWxwID0gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIGlmIChcImhlbHBcIiBpbiBvcHRpb25zKSB7XG4gICAgY29uc3QgdXNhZ2UgPSBjb21tYW5kTGluZVVzYWdlKHNlY3Rpb25zKVxuICAgIGNvbnNvbGUud2Fybih1c2FnZSlcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIHJldHVybiBvcHRpb25zXG59XG5cbmNsYXNzIFZhbGlkYXRlIHtcbiAgb3B0aW9uczogYW55XG4gIHZlcnNpb24yc2NoZW1hOiBhbnlcbiAgdG1wRGlyOiBzdHJpbmdcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBhbnkpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zXG4gICAgdGhpcy52ZXJzaW9uMnNjaGVtYSA9IHt9XG4gICAgdGhpcy50bXBEaXIgPSB0ZW1wLm1rZGlyU3luYyhcInZhbGlkYXRpb25cIilcbiAgfVxuXG4gIGdldFNjaGVtYURpcih0YWc6IHN0cmluZykge1xuICAgIGlmICh0aGlzLm9wdGlvbnMuZGV2ID09IHRydWUpIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMudmVyYm9zZSkgY29uc29sZS5sb2coXCItLWRldjogdXNlIHNyYy9zY2hlbWFzXCIpXG4gICAgICByZXR1cm4gXCJzcmMvc2NoZW1hc1wiXG4gICAgfVxuICAgIGNvbnN0IHJlcG9zaXRvcnlEaXIgPSBwYXRoLmpvaW4odGhpcy50bXBEaXIsIFwidHJpY290ZXVzZXMtYXNzZW1ibGVlXCIpXG4gICAgY29uc3QgdGFnRGlyID0gcGF0aC5qb2luKHRoaXMudG1wRGlyLCB0YWcpXG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKHRhZ0RpcikpIHtcbiAgICAgIGlmICghZnMuZXhpc3RzU3luYyhyZXBvc2l0b3J5RGlyKSkge1xuICAgICAgICBnaXQucnVuKFxuICAgICAgICAgIHRoaXMudG1wRGlyLFxuICAgICAgICAgIGBjbG9uZSAtLXF1aWV0ICR7dGhpcy5vcHRpb25zLnJlcG9zaXRvcnl9ICR7cmVwb3NpdG9yeURpcn1gLFxuICAgICAgICApXG4gICAgICB9XG4gICAgICBnaXQucnVuKFxuICAgICAgICByZXBvc2l0b3J5RGlyLFxuICAgICAgICBgY2hlY2tvdXQgdGFncy8ke3RhZ30gLS0gc3JjL3NjaGVtYXMgPiAvZGV2L251bGwgMj4mMWAsXG4gICAgICApXG4gICAgICBmcy5yZW5hbWVTeW5jKHBhdGguam9pbihyZXBvc2l0b3J5RGlyLCBcInNyYy9zY2hlbWFzXCIpLCB0YWdEaXIpXG4gICAgfVxuICAgIHJldHVybiB0YWdEaXJcbiAgfVxuXG4gIGdldFZhbGlkYXRvcih2ZXJzaW9uOiBzdHJpbmcpOiBhbnkge1xuICAgIGlmICghKHZlcnNpb24gaW4gdGhpcy52ZXJzaW9uMnNjaGVtYSkpIHtcbiAgICAgIGNvbnN0IGFqdiA9IG5ldyBBanYoKVxuICAgICAgY29uc3QgZGlyID0gdGhpcy5nZXRTY2hlbWFEaXIoYHNjaGVtYS0ke3ZlcnNpb259YClcbiAgICAgIGxldCByZWZlcmVuY2VzID0gW11cbiAgICAgIGZvciAoY29uc3QgcmVmZXJlbmNlIG9mIGdldEZpbGVzKFtcbiAgICAgICAgYCR7ZGlyfS8ke3RoaXMub3B0aW9ucy5zY2hlbWF9LyouanNvbmAsXG4gICAgICBdKSlcbiAgICAgICAgcmVmZXJlbmNlcy5wdXNoKHJlZmVyZW5jZSlcbiAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBnZXRGaWxlcyhyZWZlcmVuY2VzKSkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnZlcmJvc2UpIGNvbnNvbGUubG9nKGByZWZlcmVuY2U6ICR7ZmlsZX1gKVxuICAgICAgICBhanYuYWRkU2NoZW1hKGxvYWQoZmlsZSkpXG4gICAgICB9XG4gICAgICBjb25zdCBzY2hlbWEgPSB0aGlzLm9wdGlvbnMuc2NoZW1hXG4gICAgICBjb25zdCBTY2hlbWEgPSBzY2hlbWEuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzY2hlbWEuc2xpY2UoMSlcbiAgICAgIGNvbnN0IHMgPSBgJHtkaXJ9LyR7c2NoZW1hfS8ke1NjaGVtYX0uanNvbmBcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMudmVyYm9zZSkgY29uc29sZS5sb2coYHNjaGVtYSAke3N9YClcbiAgICAgIHRoaXMudmVyc2lvbjJzY2hlbWFbdmVyc2lvbl0gPSBhanYuY29tcGlsZShsb2FkKHMpKVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy52ZXJzaW9uMnNjaGVtYVt2ZXJzaW9uXVxuICB9XG5cbiAgZ2V0VmVyc2lvbihjb250ZW50OiBhbnkpOiBzdHJpbmcge1xuICAgIGlmIChjb250ZW50LnNjaGVtYVZlcnNpb24gIT0gdW5kZWZpbmVkKSByZXR1cm4gY29udGVudC5zY2hlbWFWZXJzaW9uXG4gICAgcmV0dXJuIGAke3RoaXMub3B0aW9ucy5zY2hlbWF9LTEuMGBcbiAgfVxuXG4gIGdldFNjaGVtYVVSTCh2ZXJzaW9uOiBzdHJpbmcpOiBhbnkge1xuICAgIGlmICh0aGlzLm9wdGlvbnMuZGV2ID09IHRydWUpIHJldHVybiBcInNyYy9zY2hlbWFzXCJcbiAgICBlbHNlIHtcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRoaXMub3B0aW9ucy5yZXBvc2l0b3J5KSkge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5vcHRpb25zLnJlcG9zaXRvcnl9L3NyYy9zY2hlbWFzIGF0IHRhZyBzY2hlbWEtJHt2ZXJzaW9ufWBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJlcG9zaXRvcnkgPSB0aGlzLm9wdGlvbnMucmVwb3NpdG9yeS5yZXBsYWNlKC9cXC5naXQkLywgXCJcIilcbiAgICAgICAgcmV0dXJuIGAke3JlcG9zaXRvcnl9L3RyZWUvc2NoZW1hLSR7dmVyc2lvbn0vc3JjL3NjaGVtYXNgXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGUoY29udGVudDogYW55LCBmaWxlbmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBjb25zdCB0YWcgPSB0aGlzLmdldFZlcnNpb24oY29udGVudClcbiAgICBjb25zdCB2YWxpZGF0b3IgPSB0aGlzLmdldFZhbGlkYXRvcih0YWcpXG4gICAgY29uc3QgdmFsaWQgPSB2YWxpZGF0b3IoY29udGVudClcbiAgICBjb25zdCBzY2hlbWFVUkwgPSB0aGlzLmdldFNjaGVtYVVSTCh0YWcpXG4gICAgaWYgKCF2YWxpZCkge1xuICAgICAgY29uc29sZS5lcnJvcihgJHtzY2hlbWFVUkx9IGZpbmRzICR7ZmlsZW5hbWV9IGlzIGludmFsaWRgKVxuICAgICAgY29uc29sZS5lcnJvcih2YWxpZGF0b3IuZXJyb3JzKVxuICAgICAgcmV0dXJuIDFcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy52ZXJib3NlKVxuICAgICAgICBjb25zb2xlLmxvZyhgJHtzY2hlbWFVUkx9IGZpbmRzICR7ZmlsZW5hbWV9IGlzIHZhbGlkYClcbiAgICAgIHJldHVybiAwXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcHJvY2VzcygpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGxldCBzdGF0dXMgPSAwXG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGdldEZpbGVzKFt0aGlzLm9wdGlvbnMuZGF0YV0pKSB7XG4gICAgICBjb25zdCBjb250ZW50ID0gbG9hZChmaWxlKVxuICAgICAgc3RhdHVzIHw9IHRoaXMudmFsaWRhdGUoY29udGVudCwgZmlsZSlcbiAgICB9XG4gICAgcmV0dXJuIHN0YXR1c1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIG1haW4oYXJndjogYW55KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IHBhcnNlQXJncyhhcmd2KVxuICBpZiAob3B0aW9ucyA9PT0gbnVsbCkgcmV0dXJuIDFcbiAgbGV0IGRpcmVjdG9yeVNjaGVtYSA9IFtdXG4gIGlmIChvcHRpb25zLnNjaGVtYSkge1xuICAgIGRpcmVjdG9yeVNjaGVtYSA9IFtbb3B0aW9ucy5kYXRhLCBvcHRpb25zLnNjaGVtYV1dXG4gIH0gZWxzZSBpZiAob3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgZGlyZWN0b3J5U2NoZW1hID0gZGF0YXNldERpcmVjdG9yeVNjaGVtYShvcHRpb25zLmRhdGFzZXQpXG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5lcnJvcihcImVpdGhlciAtLXNjaGVtYSBvciAtLWRhdGFzZXQgaXMgcmVxdWlyZWRcIilcbiAgICByZXR1cm4gMVxuICB9XG4gIGZvciAoY29uc3QgZCBvZiBkaXJlY3RvcnlTY2hlbWEpIHtcbiAgICBvcHRpb25zLnNjaGVtYSA9IGRbMV1cbiAgICBvcHRpb25zLmRhdGEgPSBkWzBdXG4gICAgaWYgKG9wdGlvbnMudmVyYm9zZSlcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgd29ya2luZyBvbiBmaWxlcyAke29wdGlvbnMuZGF0YX0gd2l0aCBzY2hlbWEgJHtvcHRpb25zLnNjaGVtYX1gLFxuICAgICAgKVxuICAgIGNvbnN0IHZhbGlkYXRlID0gbmV3IFZhbGlkYXRlKG9wdGlvbnMpXG4gICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdmFsaWRhdGUucHJvY2VzcygpXG4gICAgaWYgKHN0YXR1cyAhPSAwKSByZXR1cm4gc3RhdHVzXG4gIH1cbiAgcmV0dXJuIDBcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAocHJvY2Vzcy5hcmd2WzFdLmVuZHNXaXRoKFwidmFsaWRhdGVfanNvbi50c1wiKSlcbiAgbWFpbihwcm9jZXNzLmFyZ3YpXG4gICAgLnRoZW4oKHN0YXR1cykgPT4ge1xuICAgICAgcHJvY2Vzcy5leGl0KHN0YXR1cylcbiAgICB9KVxuICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXG4gICAgICBwcm9jZXNzLmV4aXQoMSlcbiAgICB9KVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUsyQjtBQUFBO0FBQUE7QUFBQSwrQ0FaM0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBY0E7QUFDQUEsZ0JBQUksQ0FBQ0MsS0FBSyxFQUFFO0FBRVosU0FBU0MsU0FBUyxDQUFDQyxJQUFjLEVBQU87RUFDdEMsSUFBTUMsa0JBQWtCLEdBQUcsQ0FDekI7SUFDRUMsV0FBVyxFQUFFLGtEQUFrRDtJQUMvREMsYUFBYSxFQUFFLElBQUk7SUFDbkJDLElBQUksRUFBRSxNQUFNO0lBQ1pDLElBQUksRUFBRUM7RUFDUixDQUFDLEVBQ0Q7SUFDRUosV0FBVyxFQUFFLHlEQUF5RDtJQUN0RUssWUFBWSxFQUNWLCtEQUErRDtJQUNqRUgsSUFBSSxFQUFFLFlBQVk7SUFDbEJDLElBQUksRUFBRUM7RUFDUixDQUFDLEVBQ0Q7SUFDRUosV0FBVyxpRUFBMEQsSUFBQU0scUJBQVcsR0FBRSxNQUFHO0lBQ3JGSixJQUFJLEVBQUUs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
|
|
352
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ0ZW1wIiwidHJhY2siLCJwYXJzZUFyZ3MiLCJhcmd2Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiZGVzY3JpcHRpb24iLCJkZWZhdWx0T3B0aW9uIiwibmFtZSIsInR5cGUiLCJTdHJpbmciLCJkZWZhdWx0VmFsdWUiLCJnZXREYXRhc2V0cyIsImdldFNjaGVtYXMiLCJCb29sZWFuIiwic2VjdGlvbnMiLCJoZWFkZXIiLCJjb250ZW50Iiwib3B0aW9uTGlzdCIsIm9wdGlvbnMiLCJjb21tYW5kTGluZUFyZ3MiLCJkYXRhc2V0IiwidmFsaWREYXRhc2V0IiwiY29uc29sZSIsImVycm9yIiwiaGVscCIsInNjaGVtYSIsImluY2x1ZGVzIiwidXNhZ2UiLCJjb21tYW5kTGluZVVzYWdlIiwid2FybiIsIlZhbGlkYXRlIiwidmVyc2lvbjJzY2hlbWEiLCJ0bXBEaXIiLCJta2RpclN5bmMiLCJ0YWciLCJkZXYiLCJ2ZXJib3NlIiwibG9nIiwicmVwb3NpdG9yeURpciIsInBhdGgiLCJqb2luIiwidGFnRGlyIiwiZnMiLCJleGlzdHNTeW5jIiwiZ2l0IiwicnVuIiwicmVwb3NpdG9yeSIsInJlbmFtZVN5bmMiLCJ2ZXJzaW9uIiwiYWp2IiwiQWp2IiwiZGlyIiwiZ2V0U2NoZW1hRGlyIiwicmVmZXJlbmNlcyIsImdldEZpbGVzIiwicmVmZXJlbmNlIiwicHVzaCIsImZpbGUiLCJhZGRTY2hlbWEiLCJsb2FkIiwiU2NoZW1hIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsInMiLCJjb21waWxlIiwic2NoZW1hVmVyc2lvbiIsInVuZGVmaW5lZCIsInJlcGxhY2UiLCJmaWxlbmFtZSIsImdldFZlcnNpb24iLCJ2YWxpZGF0b3IiLCJnZXRWYWxpZGF0b3IiLCJ2YWxpZCIsInNjaGVtYVVSTCIsImdldFNjaGVtYVVSTCIsImVycm9ycyIsInN0YXR1cyIsImRhdGEiLCJ2YWxpZGF0ZSIsIm1haW4iLCJkaXJlY3RvcnlTY2hlbWEiLCJkYXRhc2V0RGlyZWN0b3J5U2NoZW1hIiwiZCIsInByb2Nlc3MiLCJlbmRzV2l0aCIsInRoZW4iLCJleGl0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvdmFsaWRhdGVfanNvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQWp2IGZyb20gXCJhanZcIlxuaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGNvbW1hbmRMaW5lVXNhZ2UgZnJvbSBcImNvbW1hbmQtbGluZS11c2FnZVwiXG5pbXBvcnQgeyBsb2FkLCBnZXRGaWxlcyB9IGZyb20gXCIuLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0ICogYXMgZ2l0IGZyb20gXCIuLi9naXRcIlxuaW1wb3J0IHRlbXAgZnJvbSBcInRlbXBcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQge1xuICB2YWxpZERhdGFzZXQsXG4gIGdldERhdGFzZXRzLFxuICBnZXRTY2hlbWFzLFxuICBkYXRhc2V0RGlyZWN0b3J5U2NoZW1hLFxufSBmcm9tIFwiLi4vLi4vc3JjL2RhdGFzZXRzXCJcblxuLy8gQXV0b21hdGljYWxseSB0cmFjayBhbmQgY2xlYW51cCBmaWxlcyBhdCBleGl0XG50ZW1wLnRyYWNrKClcblxuZnVuY3Rpb24gcGFyc2VBcmdzKGFyZ3Y6IHN0cmluZ1tdKTogYW55IHtcbiAgY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcInBhdGhuYW1lIHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZGF0YXNldFwiLFxuICAgICAgZGVmYXVsdE9wdGlvbjogdHJ1ZSxcbiAgICAgIG5hbWU6IFwiZGF0YVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IFwiVVJMIG9yIHBhdGggdG8gdGhlIHRyaWNvdGV1c2VzLWFzc2VtYmxlZSBnaXQgcmVwb3NpdG9yeVwiLFxuICAgICAgZGVmYXVsdFZhbHVlOlxuICAgICAgICBcImh0dHBzOi8vZ2l0LmVuLXJvb3Qub3JnL3RyaWNvdGV1c2VzL3RyaWNvdGV1c2VzLWFzc2VtYmxlZS5naXRcIixcbiAgICAgIG5hbWU6IFwicmVwb3NpdG9yeVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IGBkYXRhc2V0IChwb3NzaWJsZSB2YWx1ZXMgbXVzdCBpbmNsdWRlIGV4YWN0bHkgb25lIG9mICR7Z2V0RGF0YXNldHMoKX0pYCxcbiAgICAgIG5hbWU6IFwiZGF0YXNldFwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IGBzY2hlbWEgKHBvc3NpYmxlIHZhbHVlcyBhcmUgJHtnZXRTY2hlbWFzKCl9KWAsXG4gICAgICBuYW1lOiBcInNjaGVtYVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiaWdub3JlIHNjaGVtYVZlcnNpb24gZnJvbSBKU09OIGZpbGVzIGFuZCB1c2UgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGluc3RlYWQgb2YgdGhlIC0tcmVwb3NpdG9yeVwiLFxuICAgICAgbmFtZTogXCJkZXZcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJpbmNyZWFzZSB2ZXJib3NpdHlcIixcbiAgICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IFwiaGVscFwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiUHJpbnQgdGhpcyB1c2FnZSBndWlkZS5cIixcbiAgICB9LFxuICBdXG4gIGNvbnN0IHNlY3Rpb25zID0gW1xuICAgIHtcbiAgICAgIGhlYWRlcjogXCJWYWxpZGF0ZSBKU09OIGZpbGVzXCIsXG4gICAgICBjb250ZW50OiBcIlZhbGlkYXRlIEpTT04gZmlsZXNcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGhlYWRlcjogXCJPcHRpb25zXCIsXG4gICAgICBvcHRpb25MaXN0OiBvcHRpb25zRGVmaW5pdGlvbnMsXG4gICAgfSxcbiAgXVxuICBjb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucywge1xuICAgIGFyZ3Y6IGFyZ3YsXG4gIH0pXG5cbiAgaWYgKG9wdGlvbnMuZGF0YXNldCkge1xuICAgIGlmICghdmFsaWREYXRhc2V0KG9wdGlvbnMuZGF0YXNldCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYC0tZGF0YXNldCAke29wdGlvbnMuZGF0YXNldH1gKVxuICAgICAgb3B0aW9ucy5oZWxwID0gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRpb25zLnNjaGVtYSkge1xuICAgIGlmICghZ2V0U2NoZW1hcygpLmluY2x1ZGVzKG9wdGlvbnMuc2NoZW1hKSkge1xuICAgICAgY29uc29sZS5lcnJvcihgLS1zY2hlbWEgJHtvcHRpb25zLnNjaGVtYX1gKVxuICAgICAgb3B0aW9ucy5oZWxwID0gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIGlmIChcImhlbHBcIiBpbiBvcHRpb25zKSB7XG4gICAgY29uc3QgdXNhZ2UgPSBjb21tYW5kTGluZVVzYWdlKHNlY3Rpb25zKVxuICAgIGNvbnNvbGUud2Fybih1c2FnZSlcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIHJldHVybiBvcHRpb25zXG59XG5cbmNsYXNzIFZhbGlkYXRlIHtcbiAgb3B0aW9uczogYW55XG4gIHZlcnNpb24yc2NoZW1hOiBhbnlcbiAgdG1wRGlyOiBzdHJpbmdcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBhbnkpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zXG4gICAgdGhpcy52ZXJzaW9uMnNjaGVtYSA9IHt9XG4gICAgdGhpcy50bXBEaXIgPSB0ZW1wLm1rZGlyU3luYyhcInZhbGlkYXRpb25cIilcbiAgfVxuXG4gIGdldFNjaGVtYURpcih0YWc6IHN0cmluZykge1xuICAgIGlmICh0aGlzLm9wdGlvbnMuZGV2ID09IHRydWUpIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMudmVyYm9zZSkgY29uc29sZS5sb2coXCItLWRldjogdXNlIHNyYy9zY2hlbWFzXCIpXG4gICAgICByZXR1cm4gXCJzcmMvc2NoZW1hc1wiXG4gICAgfVxuICAgIGNvbnN0IHJlcG9zaXRvcnlEaXIgPSBwYXRoLmpvaW4odGhpcy50bXBEaXIsIFwidHJpY290ZXVzZXMtYXNzZW1ibGVlXCIpXG4gICAgY29uc3QgdGFnRGlyID0gcGF0aC5qb2luKHRoaXMudG1wRGlyLCB0YWcpXG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKHRhZ0RpcikpIHtcbiAgICAgIGlmICghZnMuZXhpc3RzU3luYyhyZXBvc2l0b3J5RGlyKSkge1xuICAgICAgICBnaXQucnVuKFxuICAgICAgICAgIHRoaXMudG1wRGlyLFxuICAgICAgICAgIGBjbG9uZSAtLXF1aWV0ICR7dGhpcy5vcHRpb25zLnJlcG9zaXRvcnl9ICR7cmVwb3NpdG9yeURpcn1gLFxuICAgICAgICApXG4gICAgICB9XG4gICAgICBnaXQucnVuKFxuICAgICAgICByZXBvc2l0b3J5RGlyLFxuICAgICAgICBgY2hlY2tvdXQgdGFncy8ke3RhZ30gLS0gc3JjL3NjaGVtYXMgPiAvZGV2L251bGwgMj4mMWAsXG4gICAgICApXG4gICAgICBmcy5yZW5hbWVTeW5jKHBhdGguam9pbihyZXBvc2l0b3J5RGlyLCBcInNyYy9zY2hlbWFzXCIpLCB0YWdEaXIpXG4gICAgfVxuICAgIHJldHVybiB0YWdEaXJcbiAgfVxuXG4gIGdldFZhbGlkYXRvcih2ZXJzaW9uOiBzdHJpbmcpOiBhbnkge1xuICAgIGlmICghKHZlcnNpb24gaW4gdGhpcy52ZXJzaW9uMnNjaGVtYSkpIHtcbiAgICAgIGNvbnN0IGFqdiA9IG5ldyBBanYoKVxuICAgICAgY29uc3QgZGlyID0gdGhpcy5nZXRTY2hlbWFEaXIoYHNjaGVtYS0ke3ZlcnNpb259YClcbiAgICAgIGxldCByZWZlcmVuY2VzID0gW11cbiAgICAgIGZvciAoY29uc3QgcmVmZXJlbmNlIG9mIGdldEZpbGVzKFtcbiAgICAgICAgYCR7ZGlyfS8ke3RoaXMub3B0aW9ucy5zY2hlbWF9LyouanNvbmAsXG4gICAgICBdKSlcbiAgICAgICAgcmVmZXJlbmNlcy5wdXNoKHJlZmVyZW5jZSlcbiAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBnZXRGaWxlcyhyZWZlcmVuY2VzKSkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnZlcmJvc2UpIGNvbnNvbGUubG9nKGByZWZlcmVuY2U6ICR7ZmlsZX1gKVxuICAgICAgICBhanYuYWRkU2NoZW1hKGxvYWQoZmlsZSkpXG4gICAgICB9XG4gICAgICBjb25zdCBzY2hlbWEgPSB0aGlzLm9wdGlvbnMuc2NoZW1hXG4gICAgICBjb25zdCBTY2hlbWEgPSBzY2hlbWEuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzY2hlbWEuc2xpY2UoMSlcbiAgICAgIGNvbnN0IHMgPSBgJHtkaXJ9LyR7c2NoZW1hfS8ke1NjaGVtYX0uanNvbmBcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMudmVyYm9zZSkgY29uc29sZS5sb2coYHNjaGVtYSAke3N9YClcbiAgICAgIHRoaXMudmVyc2lvbjJzY2hlbWFbdmVyc2lvbl0gPSBhanYuY29tcGlsZShsb2FkKHMpKVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy52ZXJzaW9uMnNjaGVtYVt2ZXJzaW9uXVxuICB9XG5cbiAgZ2V0VmVyc2lvbihjb250ZW50OiBhbnkpOiBzdHJpbmcge1xuICAgIGlmIChjb250ZW50LnNjaGVtYVZlcnNpb24gIT0gdW5kZWZpbmVkKSByZXR1cm4gY29udGVudC5zY2hlbWFWZXJzaW9uXG4gICAgcmV0dXJuIGAke3RoaXMub3B0aW9ucy5zY2hlbWF9LTEuMGBcbiAgfVxuXG4gIGdldFNjaGVtYVVSTCh2ZXJzaW9uOiBzdHJpbmcpOiBhbnkge1xuICAgIGlmICh0aGlzLm9wdGlvbnMuZGV2ID09IHRydWUpIHJldHVybiBcInNyYy9zY2hlbWFzXCJcbiAgICBlbHNlIHtcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRoaXMub3B0aW9ucy5yZXBvc2l0b3J5KSkge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5vcHRpb25zLnJlcG9zaXRvcnl9L3NyYy9zY2hlbWFzIGF0IHRhZyBzY2hlbWEtJHt2ZXJzaW9ufWBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJlcG9zaXRvcnkgPSB0aGlzLm9wdGlvbnMucmVwb3NpdG9yeS5yZXBsYWNlKC9cXC5naXQkLywgXCJcIilcbiAgICAgICAgcmV0dXJuIGAke3JlcG9zaXRvcnl9L3RyZWUvc2NoZW1hLSR7dmVyc2lvbn0vc3JjL3NjaGVtYXNgXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGUoY29udGVudDogYW55LCBmaWxlbmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBjb25zdCB0YWcgPSB0aGlzLmdldFZlcnNpb24oY29udGVudClcbiAgICBjb25zdCB2YWxpZGF0b3IgPSB0aGlzLmdldFZhbGlkYXRvcih0YWcpXG4gICAgY29uc3QgdmFsaWQgPSB2YWxpZGF0b3IoY29udGVudClcbiAgICBjb25zdCBzY2hlbWFVUkwgPSB0aGlzLmdldFNjaGVtYVVSTCh0YWcpXG4gICAgaWYgKCF2YWxpZCkge1xuICAgICAgY29uc29sZS5lcnJvcihgJHtzY2hlbWFVUkx9IGZpbmRzICR7ZmlsZW5hbWV9IGlzIGludmFsaWRgKVxuICAgICAgY29uc29sZS5lcnJvcih2YWxpZGF0b3IuZXJyb3JzKVxuICAgICAgcmV0dXJuIDFcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy52ZXJib3NlKVxuICAgICAgICBjb25zb2xlLmxvZyhgJHtzY2hlbWFVUkx9IGZpbmRzICR7ZmlsZW5hbWV9IGlzIHZhbGlkYClcbiAgICAgIHJldHVybiAwXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcHJvY2VzcygpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGxldCBzdGF0dXMgPSAwXG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGdldEZpbGVzKFt0aGlzLm9wdGlvbnMuZGF0YV0pKSB7XG4gICAgICBjb25zdCBjb250ZW50ID0gbG9hZChmaWxlKVxuICAgICAgc3RhdHVzIHw9IHRoaXMudmFsaWRhdGUoY29udGVudCwgZmlsZSlcbiAgICB9XG4gICAgcmV0dXJuIHN0YXR1c1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIG1haW4oYXJndjogYW55KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IHBhcnNlQXJncyhhcmd2KVxuICBpZiAob3B0aW9ucyA9PT0gbnVsbCkgcmV0dXJuIDFcbiAgbGV0IGRpcmVjdG9yeVNjaGVtYSA9IFtdXG4gIGlmIChvcHRpb25zLnNjaGVtYSkge1xuICAgIGRpcmVjdG9yeVNjaGVtYSA9IFtbb3B0aW9ucy5kYXRhLCBvcHRpb25zLnNjaGVtYV1dXG4gIH0gZWxzZSBpZiAob3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgZGlyZWN0b3J5U2NoZW1hID0gZGF0YXNldERpcmVjdG9yeVNjaGVtYShvcHRpb25zLmRhdGFzZXQpXG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5lcnJvcihcImVpdGhlciAtLXNjaGVtYSBvciAtLWRhdGFzZXQgaXMgcmVxdWlyZWRcIilcbiAgICByZXR1cm4gMVxuICB9XG4gIGZvciAoY29uc3QgZCBvZiBkaXJlY3RvcnlTY2hlbWEpIHtcbiAgICBvcHRpb25zLnNjaGVtYSA9IGRbMV1cbiAgICBvcHRpb25zLmRhdGEgPSBkWzBdXG4gICAgaWYgKG9wdGlvbnMudmVyYm9zZSlcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgd29ya2luZyBvbiBmaWxlcyAke29wdGlvbnMuZGF0YX0gd2l0aCBzY2hlbWEgJHtvcHRpb25zLnNjaGVtYX1gLFxuICAgICAgKVxuICAgIGNvbnN0IHZhbGlkYXRlID0gbmV3IFZhbGlkYXRlKG9wdGlvbnMpXG4gICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdmFsaWRhdGUucHJvY2VzcygpXG4gICAgaWYgKHN0YXR1cyAhPSAwKSByZXR1cm4gc3RhdHVzXG4gIH1cbiAgcmV0dXJuIDBcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAocHJvY2Vzcy5hcmd2WzFdLmVuZHNXaXRoKFwidmFsaWRhdGVfanNvbi50c1wiKSlcbiAgbWFpbihwcm9jZXNzLmFyZ3YpXG4gICAgLnRoZW4oKHN0YXR1cykgPT4ge1xuICAgICAgcHJvY2Vzcy5leGl0KHN0YXR1cylcbiAgICB9KVxuICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXG4gICAgICBwcm9jZXNzLmV4aXQoMSlcbiAgICB9KVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUsyQjtBQUFBO0FBQUE7QUFBQSwrQ0FaM0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBY0E7QUFDQUEsZ0JBQUksQ0FBQ0MsS0FBSyxFQUFFO0FBRVosU0FBU0MsU0FBUyxDQUFDQyxJQUFjLEVBQU87RUFDdEMsSUFBTUMsa0JBQWtCLEdBQUcsQ0FDekI7SUFDRUMsV0FBVyxFQUFFLGtEQUFrRDtJQUMvREMsYUFBYSxFQUFFLElBQUk7SUFDbkJDLElBQUksRUFBRSxNQUFNO0lBQ1pDLElBQUksRUFBRUM7RUFDUixDQUFDLEVBQ0Q7SUFDRUosV0FBVyxFQUFFLHlEQUF5RDtJQUN0RUssWUFBWSxFQUNWLCtEQUErRDtJQUNqRUgsSUFBSSxFQUFFLFlBQVk7SUFDbEJDLElBQUksRUFBRUM7RUFDUixDQUFDLEVBQ0Q7SUFDRUosV0FBVyxpRUFBMEQsSUFBQU0scUJBQVcsR0FBRSxNQUFHO0lBQ3JGSixJQUFJLEVBQUUs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
|