@tricoteuses/assemblee 0.28.0 → 0.28.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/lib/api.js +1 -1
  2. package/lib/api.mjs +1 -1
  3. package/lib/bugs/acteur-00010/plugin.test.js +45 -5
  4. package/lib/bugs/acteur-00010/plugin.test.mjs +1 -1
  5. package/lib/bugs/acteur-00010.js +29 -9
  6. package/lib/bugs/acteur-00010.mjs +1 -1
  7. package/lib/bugs/agenda-00002/plugin.test.js +46 -6
  8. package/lib/bugs/agenda-00002/plugin.test.mjs +1 -1
  9. package/lib/bugs/agenda-00002.js +29 -13
  10. package/lib/bugs/agenda-00002.mjs +1 -1
  11. package/lib/bugs/agenda-00008/plugin.test.js +44 -4
  12. package/lib/bugs/agenda-00008/plugin.test.mjs +1 -1
  13. package/lib/bugs/agenda-00008.js +29 -9
  14. package/lib/bugs/agenda-00008.mjs +1 -1
  15. package/lib/bugs/agenda-00011/plugin.test.js +50 -12
  16. package/lib/bugs/agenda-00011/plugin.test.mjs +1 -1
  17. package/lib/bugs/agenda-00011.js +39 -19
  18. package/lib/bugs/agenda-00011.mjs +1 -1
  19. package/lib/bugs.js +51 -31
  20. package/lib/bugs.mjs +1 -1
  21. package/lib/cleaners/actes_legislatifs.js +1 -1
  22. package/lib/cleaners/actes_legislatifs.mjs +1 -1
  23. package/lib/cleaners/acteurs.js +1 -1
  24. package/lib/cleaners/acteurs.mjs +1 -1
  25. package/lib/cleaners/amendements.js +1 -1
  26. package/lib/cleaners/amendements.mjs +1 -1
  27. package/lib/cleaners/documents.js +13 -1
  28. package/lib/cleaners/documents.mjs +13 -1
  29. package/lib/cleaners/dossiers_legislatifs.js +1 -1
  30. package/lib/cleaners/dossiers_legislatifs.mjs +1 -1
  31. package/lib/cleaners/index.js +1 -1
  32. package/lib/cleaners/index.mjs +1 -1
  33. package/lib/cleaners/organes.js +1 -1
  34. package/lib/cleaners/organes.mjs +1 -1
  35. package/lib/cleaners/reunions.js +1 -1
  36. package/lib/cleaners/reunions.mjs +1 -1
  37. package/lib/cleaners/scrutins.js +1 -1
  38. package/lib/cleaners/scrutins.mjs +1 -1
  39. package/lib/cleaners/xml.js +1 -1
  40. package/lib/cleaners/xml.mjs +1 -1
  41. package/lib/datasets.js +1 -1
  42. package/lib/datasets.mjs +1 -1
  43. package/lib/dates.js +1 -1
  44. package/lib/dates.mjs +1 -1
  45. package/lib/dossiers_legislatifs.js +1 -1
  46. package/lib/dossiers_legislatifs.mjs +1 -1
  47. package/lib/file_systems.js +25 -5
  48. package/lib/file_systems.mjs +1 -1
  49. package/lib/git.js +1 -1
  50. package/lib/git.mjs +1 -1
  51. package/lib/index.d.ts +1 -1
  52. package/lib/index.js +1 -1
  53. package/lib/index.mjs +1 -1
  54. package/lib/inserters.js +1 -1
  55. package/lib/inserters.mjs +1 -1
  56. package/lib/loaders.js +1 -1
  57. package/lib/loaders.mjs +1 -1
  58. package/lib/organes.js +1 -1
  59. package/lib/organes.mjs +1 -1
  60. package/lib/parsers/documents.js +27 -5
  61. package/lib/parsers/documents.mjs +1 -1
  62. package/lib/parsers/index.js +1 -1
  63. package/lib/parsers/index.mjs +1 -1
  64. package/lib/parsers/recherche_amendements.js +27 -7
  65. package/lib/parsers/recherche_amendements.mjs +1 -1
  66. package/lib/raw_types/acteurs_et_organes.d.ts +2 -1
  67. package/lib/raw_types/acteurs_et_organes.js +3 -2
  68. package/lib/raw_types/acteurs_et_organes.mjs +3 -2
  69. package/lib/raw_types/agendas.js +1 -1
  70. package/lib/raw_types/agendas.mjs +1 -1
  71. package/lib/raw_types/amendements.js +1 -1
  72. package/lib/raw_types/amendements.mjs +1 -1
  73. package/lib/raw_types/dossiers_legislatifs.d.ts +4 -0
  74. package/lib/raw_types/dossiers_legislatifs.js +10 -1
  75. package/lib/raw_types/dossiers_legislatifs.mjs +10 -1
  76. package/lib/raw_types/scrutins.js +1 -1
  77. package/lib/raw_types/scrutins.mjs +1 -1
  78. package/lib/scripts/bugs_helper.js +39 -19
  79. package/lib/scripts/bugs_helper.mjs +1 -1
  80. package/lib/scripts/clean_data.js +1 -1
  81. package/lib/scripts/clean_data.mjs +1 -1
  82. package/lib/scripts/clean_reorganized_data.js +1 -1
  83. package/lib/scripts/clean_reorganized_data.mjs +1 -1
  84. package/lib/scripts/diff_amendements.js +1 -1
  85. package/lib/scripts/diff_amendements.mjs +1 -1
  86. package/lib/scripts/document_dossiers_legislatifs.js +5 -3
  87. package/lib/scripts/document_dossiers_legislatifs.mjs +1 -1
  88. package/lib/scripts/get_today_reunions.js +1 -1
  89. package/lib/scripts/get_today_reunions.mjs +1 -1
  90. package/lib/scripts/merge_scrutins.js +1 -1
  91. package/lib/scripts/merge_scrutins.mjs +1 -1
  92. package/lib/scripts/parse_textes_lois.js +1 -1
  93. package/lib/scripts/parse_textes_lois.mjs +1 -1
  94. package/lib/scripts/raw_types_from_amendements.js +28 -4
  95. package/lib/scripts/raw_types_from_amendements.mjs +1 -1
  96. package/lib/scripts/reorganize_data.js +1 -1
  97. package/lib/scripts/reorganize_data.mjs +1 -1
  98. package/lib/scripts/retrieve_deputes_photos.js +28 -4
  99. package/lib/scripts/retrieve_deputes_photos.mjs +1 -1
  100. package/lib/scripts/retrieve_documents.js +35 -15
  101. package/lib/scripts/retrieve_documents.mjs +1 -1
  102. package/lib/scripts/retrieve_open_data.js +30 -6
  103. package/lib/scripts/retrieve_open_data.mjs +1 -1
  104. package/lib/scripts/retrieve_pending_amendments.js +26 -4
  105. package/lib/scripts/retrieve_pending_amendments.mjs +1 -1
  106. package/lib/scripts/retrieve_senateurs_photos.js +28 -4
  107. package/lib/scripts/retrieve_senateurs_photos.mjs +1 -1
  108. package/lib/scripts/retrieve_textes_lois.js +22 -4
  109. package/lib/scripts/retrieve_textes_lois.mjs +1 -1
  110. package/lib/scripts/test_load.js +1 -1
  111. package/lib/scripts/test_load.mjs +1 -1
  112. package/lib/scripts/test_load_big_files.js +1 -1
  113. package/lib/scripts/test_load_big_files.mjs +1 -1
  114. package/lib/scripts/validate_json.js +27 -7
  115. package/lib/scripts/validate_json.mjs +1 -1
  116. package/lib/shared_types/codes_actes.js +1 -1
  117. package/lib/shared_types/codes_actes.mjs +1 -1
  118. package/lib/strings.js +1 -1
  119. package/lib/strings.mjs +1 -1
  120. package/lib/types/acteurs_et_organes.js +1 -1
  121. package/lib/types/acteurs_et_organes.mjs +1 -1
  122. package/lib/types/agendas.js +1 -1
  123. package/lib/types/agendas.mjs +1 -1
  124. package/lib/types/amendements.js +1 -1
  125. package/lib/types/amendements.mjs +1 -1
  126. package/lib/types/dossiers_legislatifs.d.ts +1 -0
  127. package/lib/types/dossiers_legislatifs.js +5 -1
  128. package/lib/types/dossiers_legislatifs.mjs +5 -1
  129. package/lib/types/legislatures.js +1 -1
  130. package/lib/types/legislatures.mjs +1 -1
  131. package/lib/types/scrutins.js +1 -1
  132. package/lib/types/scrutins.mjs +1 -1
  133. package/lib/urls.js +1 -1
  134. package/lib/urls.mjs +1 -1
  135. package/package.json +6 -6
@@ -227,4 +227,4 @@ retrievePhotosDeputes().then(error => process.exit(error ? 1 : 0)).catch(error =
227
227
  console.log(error);
228
228
  process.exit(2);
229
229
  });
230
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL3JldHJpZXZlX2RlcHV0ZXNfcGhvdG9zLnRzIl0sIm5hbWVzIjpbImV4ZWNTeW5jIiwiY29tbWFuZExpbmVBcmdzIiwiZnMiLCJmZXRjaCIsInBhdGgiLCJzdHJlYW0iLCJ1dGlsIiwiRW5hYmxlZERhdGFzZXRzIiwibG9hZEFzc2VtYmxlZURhdGEiLCJDb2RlVHlwZU9yZ2FuZSIsIlR5cGVNYW5kYXQiLCJvcHRpb25zRGVmaW5pdGlvbnMiLCJhbGlhcyIsImhlbHAiLCJuYW1lIiwidHlwZSIsIlN0cmluZyIsIkJvb2xlYW4iLCJkZWZhdWx0VmFsdWUiLCJtdWx0aXBsZSIsImRlZmF1bHRPcHRpb24iLCJvcHRpb25zIiwicGlwZWxpbmUiLCJwcm9taXNpZnkiLCJjb21taXRBbmRQdXNoIiwicmVwb3NpdG9yeURpciIsImNvbW1pdCIsInJlbW90ZXMiLCJlcnJvciIsImN3ZCIsImVudiIsInByb2Nlc3MiLCJlbmNvZGluZyIsInN0ZGlvIiwiY2hpbGRQcm9jZXNzIiwic3RkZXJyIiwidGVzdCIsInN0ZG91dCIsImNvbnNvbGUiLCJvdXRwdXQiLCJyZW1vdGUiLCJyZXRyaWV2ZVBob3Rvc0RlcHV0ZXMiLCJkYXRhRGlyIiwiYWN0ZXVyQnlVaWQiLCJBY3RldXJzRXRPcmdhbmVzIiwibGVnaXNsYXR1cmUiLCJkZXB1dGVzTGVnaXNsYXR1cmUiLCJPYmplY3QiLCJ2YWx1ZXMiLCJmaWx0ZXIiLCJhY3RldXIiLCJtYW5kYXRzIiwibWFuZGF0RGVwdXRlTGVnaXNsYXR1cmUiLCJtYW5kYXQiLCJ4c2lUeXBlIiwiTWFuZGF0UGFybGVtZW50YWlyZVR5cGUiLCJ0eXBlT3JnYW5lIiwiQXNzZW1ibGVlIiwidW5kZWZpbmVkIiwic29ydCIsImEiLCJiIiwidWlkIiwibGVuZ3RoIiwibG9jYWxlQ29tcGFyZSIsImdpdEdyb3VwVXJsIiwiY2xvbmUiLCJ0cmltIiwicmVwbGFjZSIsInBob3Rvc0Rpck5hbWUiLCJwaG90b3NEaXIiLCJqb2luIiwiZW5zdXJlRGlyU3luYyIsIm1pc3NpbmdQaG90b0ZpbGVQYXRoIiwiZGVwdXRlIiwiaWRlbnQiLCJldGF0Q2l2aWwiLCJudW1lcm9EZXB1dGUiLCJzdWJzdHJpbmciLCJwaG90b0ZpbGVuYW1lIiwicGhvdG9GaWxlUGF0aCIsInBob3RvVGVtcEZpbGVuYW1lIiwicGhvdG9UZW1wRmlsZVBhdGgiLCJ1cmxQaG90byIsInNpbGVudCIsImxvZyIsInByZW5vbSIsIm5vbSIsInJldHJpZXMiLCJyZXNwb25zZSIsIm9rIiwiYm9keSIsImNyZWF0ZVdyaXRlU3RyZWFtIiwicmVuYW1lU3luYyIsIndhcm4iLCJzdGF0dXMiLCJzdGF0dXNUZXh0IiwidGV4dCIsImV4aXN0c1N5bmMiLCJjb3B5RmlsZVN5bmMiLCJwaG90b0J5SWREZXB1dGUiLCJyb3dzRmlsZW5hbWVzIiwiZGVwdXRlSW5kZXgiLCJyb3dJbmRleCIsInJvdyIsInNsaWNlIiwicGhvdG9zRmlsZW5hbWVzIiwiY29sdW1uSW5kZXgiLCJlbnRyaWVzIiwicHVzaCIsImNoZW1pbiIsImNoZW1pbk1vc2FpcXVlIiwiaGF1dGV1ciIsImxhcmdldXIiLCJ4TW9zYWlxdWUiLCJ5TW9zYWlxdWUiLCJyb3dGaWxlbmFtZSIsInVubGlua1N5bmMiLCJqc29uRmlsZVBhdGgiLCJ3cml0ZUZpbGVTeW5jIiwiSlNPTiIsInN0cmluZ2lmeSIsInRoZW4iLCJleGl0IiwiY2F0Y2giXSwibWFwcGluZ3MiOiJBQUFBLFNBQXVCQSxRQUF2QixRQUF1QyxlQUF2QztBQUNBLE9BQU9DLGVBQVAsTUFBNEIsbUJBQTVCO0FBQ0EsT0FBT0MsRUFBUCxNQUFlLFVBQWY7QUFDQSxPQUFPQyxLQUFQLE1BQWtCLFlBQWxCO0FBQ0EsT0FBT0MsSUFBUCxNQUFpQixNQUFqQjtBQUNBLE9BQU9DLE1BQVAsTUFBbUIsUUFBbkI7QUFDQSxPQUFPQyxJQUFQLE1BQWlCLE1BQWpCO1NBRVNDLGU7U0FDQUMsaUI7U0FFUEMsYyxFQUdBQyxVO0FBR0YsTUFBTUMsa0JBQWtCLEdBQUcsQ0FD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QURuQixFQUVHZ0csS0FGSCxDQUVVaEcsS0FBRCxJQUFXO0FBQ2hCVSxFQUFBQSxPQUFPLENBQUMrQyxHQUFSLENBQVl6RCxLQUFaO0FBQ0FHLEVBQUFBLE9BQU8sQ0FBQzRGLElBQVIsQ0FBYSxDQUFiO0FBQ0QsQ0FMSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoaWxkUHJvY2VzcywgZXhlY1N5bmMgfSBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiXG5pbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBmZXRjaCBmcm9tIFwibm9kZS1mZXRjaFwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQgc3RyZWFtIGZyb20gXCJzdHJlYW1cIlxuaW1wb3J0IHV0aWwgZnJvbSBcInV0aWxcIlxuXG5pbXBvcnQgeyBFbmFibGVkRGF0YXNldHMgfSBmcm9tIFwiLi4vZGF0YXNldHNcIlxuaW1wb3J0IHsgbG9hZEFzc2VtYmxlZURhdGEgfSBmcm9tIFwiLi4vbG9hZGVyc1wiXG5pbXBvcnQge1xuICBDb2RlVHlwZU9yZ2FuZSxcbiAgTWFuZGF0LFxuICBQaG90byxcbiAgVHlwZU1hbmRhdCxcbn0gZnJvbSBcIi4uL3R5cGVzL2FjdGV1cnNfZXRfb3JnYW5lc1wiXG5cbmNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAge1xuICAgIGFsaWFzOiBcIkNcIixcbiAgICBoZWxwOiBcImNsb25lIHJlcG9zaXRvcmllcyBmcm9tIGdpdmVuIGdyb3VwIChvciBvcmdhbml6YXRpb24pIGdpdCBVUkxcIixcbiAgICBuYW1lOiBcImNsb25lXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwiY1wiLFxuICAgIGhlbHA6IFwiY29tbWl0IHBob3Rvc1wiLFxuICAgIG5hbWU6IFwiY29tbWl0XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcImZcIixcbiAgICBoZWxwOiBcImZldGNoIGTDqXB1dMOpcycgcGljdHVyZXMgaW5zdGVhZCBvZiByZXRyaWV2aW5nIHRoZW0gZnJvbSBmaWxlc1wiLFxuICAgIG5hbWU6IFwiZmV0Y2hcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwibFwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCIxNVwiLFxuICAgIG5hbWU6IFwibGVnaXNsYXR1cmVcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJyXCIsXG4gICAgaGVscDogXCJwdXNoIGNvbW1pdCB0byBnaXZlbiByZW1vdGVcIixcbiAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICBuYW1lOiBcInJlbW90ZVwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInNcIixcbiAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGRlZmF1bHRPcHRpb246IHRydWUsXG4gICAgaGVscDogXCJkaXJlY3RvcnkgY29udGFpbmluZyBBc3NlbWJsw6llIG9wZW4gZGF0YSBmaWxlc1wiLFxuICAgIG5hbWU6IFwiZGF0YURpclwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbl1cbmNvbnN0IG9wdGlvbnMgPSBjb21tYW5kTGluZUFyZ3Mob3B0aW9uc0RlZmluaXRpb25zKVxuY29uc3QgcGlwZWxpbmUgPSB1dGlsLnByb21pc2lmeShzdHJlYW0ucGlwZWxpbmUpXG5cbmZ1bmN0aW9uIGNvbW1pdEFuZFB1c2goXG4gIHJlcG9zaXRvcnlEaXI6IHN0cmluZyxcbiAgY29tbWl0OiBib29sZWFuLFxuICByZW1vdGVzPzogc3RyaW5nW10sXG4pOiBib29sZWFuIHtcbiAgbGV0IGVycm9yID0gZmFsc2VcbiAgaWYgKGNvbW1pdCkge1xuICAgIGV4ZWNTeW5jKFwiZ2l0IGFkZCAuXCIsIHtcbiAgICAgIGN3ZDogcmVwb3NpdG9yeURpcixcbiAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgfSlcbiAgICB0cnkge1xuICAgICAgZXhlY1N5bmMoJ2dpdCBjb21taXQgLW0gXCJOb3V2ZWxsZSBtb2lzc29uXCInLCB7XG4gICAgICAgIGN3ZDogcmVwb3NpdG9yeURpcixcbiAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgIH0pXG4gICAgfSBjYXRjaCAoY2hpbGRQcm9jZXNzKSB7XG4gICAgICBpZiAoXG4gICAgICAgIChjaGlsZFByb2Nlc3MgYXMgQ2hpbGRQcm9jZXNzKS5zdGRlcnIgPT09IG51bGwgfHxcbiAgICAgICAgIS9ub3RoaW5nIHRvIGNvbW1pdC8udGVzdCgoY2hpbGRQcm9jZXNzIGFzIGFueSkuc3Rkb3V0KVxuICAgICAgKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoKGNoaWxkUHJvY2VzcyBhcyBhbnkpLm91dHB1dClcbiAgICAgICAgdGhyb3cgY2hpbGRQcm9jZXNzXG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoY29uc3QgcmVtb3RlIG9mIHJlbW90ZXMgfHwgW10pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgcHVzaCAke3JlbW90ZX0gbWFzdGVyYCwge1xuICAgICAgICAgIGN3ZDogcmVwb3NpdG9yeURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9IGNhdGNoIChjaGlsZFByb2Nlc3MpIHtcbiAgICAgICAgLy8gRG9uJ3Qgc3RvcCB3aGVuIHB1c2ggZmFpbHMuXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoKGNoaWxkUHJvY2VzcyBhcyBhbnkpLm91dHB1dClcbiAgICAgICAgZXJyb3IgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBlcnJvclxufVxuXG5hc3luYyBmdW5jdGlvbiByZXRyaWV2ZVBob3Rvc0RlcHV0ZXMoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IGRhdGFEaXIgPSBvcHRpb25zLmRhdGFEaXJcbiAgY29uc3QgeyBhY3RldXJCeVVpZCB9ID0gbG9hZEFzc2VtYmxlZURhdGEoXG4gICAgZGF0YURpcixcbiAgICBFbmFibGVkRGF0YXNldHMuQWN0ZXVyc0V0T3JnYW5lcyxcbiAgICBvcHRpb25zLmxlZ2lzbGF0dXJlLFxuICApXG4gIGNvbnN0IGRlcHV0ZXNMZWdpc2xhdHVyZSA9IE9iamVjdC52YWx1ZXMoYWN0ZXVyQnlVaWQpXG4gICAgLmZpbHRlcigoYWN0ZXVyKSA9PiB7XG4gICAgICBjb25zdCB7IG1hbmRhdHMgfSA9IGFjdGV1clxuICAgICAgaWYgKCFtYW5kYXRzKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgY29uc3QgbWFuZGF0RGVwdXRlTGVnaXNsYXR1cmUgPSBtYW5kYXRzLmZpbHRlcihcbiAgICAgICAgKG1hbmRhdDogTWFuZGF0KSA9PlxuICAgICAgICAgIG1hbmRhdC54c2lUeXBlID09PSBUeXBlTWFuZGF0Lk1hbmRhdFBhcmxlbWVudGFpcmVUeXBlICYmXG4gICAgICAgICAgbWFuZGF0LmxlZ2lzbGF0dXJlID09PSBvcHRpb25zLmxlZ2lzbGF0dXJlICYmXG4gICAgICAgICAgbWFuZGF0LnR5cGVPcmdhbmUgPT09IENvZGVUeXBlT3JnYW5lLkFzc2VtYmxlZSxcbiAgICAgIClbMF1cbiAgICAgIHJldHVybiBtYW5kYXREZXB1dGVMZWdpc2xhdHVyZSAhPT0gdW5kZWZpbmVkXG4gICAgfSlcbiAgICAuc29ydCgoYSwgYikgPT5cbiAgICAgIGEudWlkLmxlbmd0aCA9PT0gYi51aWQubGVuZ3RoXG4gICAgICAgID8gYS51aWQubG9jYWxlQ29tcGFyZShiLnVpZClcbiAgICAgICAgOiBhLnVpZC5sZW5ndGggLSBiLnVpZC5sZW5ndGgsXG4gICAgKVxuXG4gIGNvbnN0IGdpdEdyb3VwVXJsID0gb3B0aW9ucy5jbG9uZVxuICAgID8gb3B0aW9ucy5jbG9uZS50cmltKCkucmVwbGFjZSgvXFwvKyQvLCBcIlwiKVxuICAgIDogdW5kZWZpbmVkXG4gIGNvbnN0IHBob3Rvc0Rpck5hbWUgPSBgcGhvdG9zX2RlcHV0ZXNfJHtvcHRpb25zLmxlZ2lzbGF0dXJlfWBcbiAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7cGhvdG9zRGlyTmFtZX0uZ2l0YCwge1xuICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICB9KVxuICB9XG4gIGNvbnN0IHBob3Rvc0RpciA9IHBhdGguam9pbihkYXRhRGlyLCBwaG90b3NEaXJOYW1lKVxuXG4gIC8vIERvd25sb2FkIHBob3Rvcy5cbiAgZnMuZW5zdXJlRGlyU3luYyhwaG90b3NEaXIpXG4gIGlmIChvcHRpb25zLmZldGNoKSB7XG4gICAgY29uc3QgbWlzc2luZ1Bob3RvRmlsZVBhdGggPSBcImltYWdlcy90cmFuc3BhcmVudF8xNTB4MTkyLmpwZ1wiXG4gICAgZm9yIChjb25zdCBkZXB1dGUgb2YgZGVwdXRlc0xlZ2lzbGF0dXJlKSB7XG4gICAgICBjb25zdCBpZGVudCA9IGRlcHV0ZS5ldGF0Q2l2aWwuaWRlbnRcbiAgICAgIGNvbnN0IG51bWVyb0RlcHV0ZSA9IGRlcHV0ZS51aWQuc3Vic3RyaW5nKDIpXG4gICAgICBjb25zdCBwaG90b0ZpbGVuYW1lID0gYCR7bnVtZXJvRGVwdXRlfS5qcGdgXG4gICAgICBjb25zdCBwaG90b0ZpbGVQYXRoID0gcGF0aC5qb2luKHBob3Rvc0RpciwgcGhvdG9GaWxlbmFtZSlcbiAgICAgIGNvbnN0IHBob3RvVGVtcEZpbGVuYW1lID0gYCR7bnVtZXJvRGVwdXRlfV90ZW1wLmpwZ2BcbiAgICAgIGNvbnN0IHBob3RvVGVtcEZpbGVQYXRoID0gcGF0aC5qb2luKHBob3Rvc0RpciwgcGhvdG9UZW1wRmlsZW5hbWUpXG4gICAgICBjb25zdCB1cmxQaG90byA9IGBodHRwOi8vd3d3Mi5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy90cmlidW4vJHtvcHRpb25zLmxlZ2lzbGF0dXJlfS9waG90b3MvJHtwaG90b0ZpbGVuYW1lfWBcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgYExvYWRpbmcgcGhvdG8gJHt1cmxQaG90b30gZm9yICR7aWRlbnQucHJlbm9tfSAke2lkZW50Lm5vbX3igKZgLFxuICAgICAgICApXG4gICAgICB9XG4gICAgICBmb3IgKGxldCByZXRyaWVzID0gMDsgcmV0cmllcyA8IDM7IHJldHJpZXMrKykge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybFBob3RvKVxuICAgICAgICBpZiAocmVzcG9uc2Uub2spIHtcbiAgICAgICAgICBhd2FpdCBwaXBlbGluZShyZXNwb25zZS5ib2R5LCBmcy5jcmVhdGVXcml0ZVN0cmVhbShwaG90b1RlbXBGaWxlUGF0aCkpXG4gICAgICAgICAgZnMucmVuYW1lU3luYyhwaG90b1RlbXBGaWxlUGF0aCwgcGhvdG9GaWxlUGF0aClcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXRyaWVzID49IDIpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBgRmV0Y2ggZmFpbGVkOiAke3VybFBob3RvfSAoJHtpZGVudC5wcmVub219ICR7aWRlbnQubm9tfSlgLFxuICAgICAgICAgIClcbiAgICAgICAgICBjb25zb2xlLndhcm4ocmVzcG9uc2Uuc3RhdHVzLCByZXNwb25zZS5zdGF0dXNUZXh0KVxuICAgICAgICAgIGNvbnNvbGUud2Fybihhd2FpdCByZXNwb25zZS50ZXh0KCkpXG4gICAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMocGhvdG9GaWxlUGF0aCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIiAgPT4gUmV1c2luZyBleGlzdGluZyBpbWFnZVwiKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCIgID0+IFVzaW5nIGJsYW5rIGltYWdlXCIpXG4gICAgICAgICAgICBmcy5jb3B5RmlsZVN5bmMobWlzc2luZ1Bob3RvRmlsZVBhdGgsIHBob3RvRmlsZVBhdGgpXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBSZXNpemUgcGhvdG9zIHRvIDE1MHgxOTIsIGJlY2F1c2Ugc29tZSBoYXZlbid0IGV4YWN0bHkgdGhpcyBzaXplLlxuICBmb3IgKGNvbnN0IGRlcHV0ZSBvZiBkZXB1dGVzTGVnaXNsYXR1cmUpIHtcbiAgICBjb25zdCBpZGVudCA9IGRlcHV0ZS5ldGF0Q2l2aWwuaWRlbnRcbiAgICBjb25zdCBudW1lcm9EZXB1dGUgPSBkZXB1dGUudWlkLnN1YnN0cmluZygyKVxuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgUmVzaXppbmcgcGhvdG8gJHtudW1lcm9EZXB1dGV9IGZvciAke2lkZW50LnByZW5vbX0gJHtpZGVudC5ub2194oCmYCxcbiAgICAgIClcbiAgICB9XG4gICAgZXhlY1N5bmMoXG4gICAgICBgZ20gY29udmVydCAtcmVzaXplIDE1MHgxOTIhICR7bnVtZXJvRGVwdXRlfS5qcGcgJHtudW1lcm9EZXB1dGV9XzE1MHgxOTIuanBnYCxcbiAgICAgIHtcbiAgICAgICAgY3dkOiBwaG90b3NEaXIsXG4gICAgICB9LFxuICAgIClcbiAgfVxuXG4gIC8vIENyZWF0ZSBhIG1vc2FpYyBvZiBwaG90b3MuXG4gIGNvbnN0IHBob3RvQnlJZERlcHV0ZTogeyBbdWlkOiBzdHJpbmddOiBQaG90byB9ID0ge31cbiAgY29uc3Qgcm93c0ZpbGVuYW1lczogc3RyaW5nW10gPSBbXVxuICBmb3IgKFxuICAgIGxldCBkZXB1dGVJbmRleCA9IDAsIHJvd0luZGV4ID0gMDtcbiAgICBkZXB1dGVJbmRleCA8IGRlcHV0ZXNMZWdpc2xhdHVyZS5sZW5ndGg7XG4gICAgZGVwdXRlSW5kZXggKz0gMjUsIHJvd0luZGV4KytcbiAgKSB7XG4gICAgY29uc3Qgcm93ID0gZGVwdXRlc0xlZ2lzbGF0dXJlLnNsaWNlKGRlcHV0ZUluZGV4LCBkZXB1dGVJbmRleCArIDI1KVxuICAgIGNvbnN0IHBob3Rvc0ZpbGVuYW1lczogc3RyaW5nW10gPSBbXVxuICAgIGZvciAoY29uc3QgW2NvbHVtbkluZGV4LCBkZXB1dGVdIG9mIHJvdy5lbnRyaWVzKCkpIHtcbiAgICAgIGNvbnN0IG51bWVyb0RlcHV0ZSA9IGRlcHV0ZS51aWQuc3Vic3RyaW5nKDIpXG4gICAgICBjb25zdCBwaG90b0ZpbGVuYW1lID0gYCR7bnVtZXJvRGVwdXRlfV8xNTB4MTkyLmpwZ2BcbiAgICAgIHBob3Rvc0ZpbGVuYW1lcy5wdXNoKHBob3RvRmlsZW5hbWUpXG4gICAgICBwaG90b0J5SWREZXB1dGVbZGVwdXRlLnVpZF0gPSB7XG4gICAgICAgIGNoZW1pbjogYHBob3Rvc19kZXB1dGVzXyR7b3B0aW9ucy5sZWdpc2xhdHVyZX0vJHtwaG90b0ZpbGVuYW1lfWAsXG4gICAgICAgIGNoZW1pbk1vc2FpcXVlOiBgcGhvdG9zX2RlcHV0ZXNfJHtvcHRpb25zLmxlZ2lzbGF0dXJlfS9kZXB1dGVzLmpwZ2AsXG4gICAgICAgIGhhdXRldXI6IDE5MixcbiAgICAgICAgbGFyZ2V1cjogMTUwLFxuICAgICAgICB4TW9zYWlxdWU6IGNvbHVtbkluZGV4ICogMTUwLFxuICAgICAgICB5TW9zYWlxdWU6IHJvd0luZGV4ICogMTkyLFxuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCByb3dGaWxlbmFtZSA9IGByb3ctJHtyb3dJbmRleH0uanBnYFxuICAgIGV4ZWNTeW5jKGBnbSBjb252ZXJ0ICR7cGhvdG9zRmlsZW5hbWVzLmpvaW4oXCIgXCIpfSArYXBwZW5kICR7cm93RmlsZW5hbWV9YCwge1xuICAgICAgY3dkOiBwaG90b3NEaXIsXG4gICAgfSlcbiAgICByb3dzRmlsZW5hbWVzLnB1c2gocm93RmlsZW5hbWUpXG4gIH1cbiAgZXhlY1N5bmMoYGdtIGNvbnZlcnQgJHtyb3dzRmlsZW5hbWVzLmpvaW4oXCIgXCIpfSAtYXBwZW5kIGRlcHV0ZXMuanBnYCwge1xuICAgIGN3ZDogcGhvdG9zRGlyLFxuICB9KVxuICBmb3IgKGNvbnN0IHJvd0ZpbGVuYW1lIG9mIHJvd3NGaWxlbmFtZXMpIHtcbiAgICBmcy51bmxpbmtTeW5jKHBhdGguam9pbihwaG90b3NEaXIsIHJvd0ZpbGVuYW1lKSlcbiAgfVxuXG4gIGNvbnN0IGpzb25GaWxlUGF0aCA9IHBhdGguam9pbihwaG90b3NEaXIsIFwiZGVwdXRlcy5qc29uXCIpXG4gIGZzLndyaXRlRmlsZVN5bmMoanNvbkZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShwaG90b0J5SWREZXB1dGUsIG51bGwsIDIpKVxuXG4gIHJldHVybiBjb21taXRBbmRQdXNoKHBob3Rvc0Rpciwgb3B0aW9ucy5jb21taXQsIG9wdGlvbnMucmVtb3RlKVxufVxuXG5yZXRyaWV2ZVBob3Rvc0RlcHV0ZXMoKVxuICAudGhlbigoZXJyb3IpID0+IHByb2Nlc3MuZXhpdChlcnJvciA/IDEgOiAwKSlcbiAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgIGNvbnNvbGUubG9nKGVycm9yKVxuICAgIHByb2Nlc3MuZXhpdCgyKVxuICB9KVxuIl19
230
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJleGVjU3luYyIsImNvbW1hbmRMaW5lQXJncyIsImZzIiwiZmV0Y2giLCJwYXRoIiwic3RyZWFtIiwidXRpbCIsIkVuYWJsZWREYXRhc2V0cyIsImxvYWRBc3NlbWJsZWVEYXRhIiwiQ29kZVR5cGVPcmdhbmUiLCJUeXBlTWFuZGF0Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiYWxpYXMiLCJoZWxwIiwibmFtZSIsInR5cGUiLCJTdHJpbmciLCJCb29sZWFuIiwiZGVmYXVsdFZhbHVlIiwibXVsdGlwbGUiLCJkZWZhdWx0T3B0aW9uIiwib3B0aW9ucyIsInBpcGVsaW5lIiwicHJvbWlzaWZ5IiwiY29tbWl0QW5kUHVzaCIsInJlcG9zaXRvcnlEaXIiLCJjb21taXQiLCJyZW1vdGVzIiwiZXJyb3IiLCJjd2QiLCJlbnYiLCJwcm9jZXNzIiwiZW5jb2RpbmciLCJzdGRpbyIsImNoaWxkUHJvY2VzcyIsInN0ZGVyciIsInRlc3QiLCJzdGRvdXQiLCJjb25zb2xlIiwib3V0cHV0IiwicmVtb3RlIiwicmV0cmlldmVQaG90b3NEZXB1dGVzIiwiZGF0YURpciIsImFjdGV1ckJ5VWlkIiwiQWN0ZXVyc0V0T3JnYW5lcyIsImxlZ2lzbGF0dXJlIiwiZGVwdXRlc0xlZ2lzbGF0dXJlIiwiT2JqZWN0IiwidmFsdWVzIiwiZmlsdGVyIiwiYWN0ZXVyIiwibWFuZGF0cyIsIm1hbmRhdERlcHV0ZUxlZ2lzbGF0dXJlIiwibWFuZGF0IiwieHNpVHlwZSIsIk1hbmRhdFBhcmxlbWVudGFpcmVUeXBlIiwidHlwZU9yZ2FuZSIsIkFzc2VtYmxlZSIsInVuZGVmaW5lZCIsInNvcnQiLCJhIiwiYiIsInVpZCIsImxlbmd0aCIsImxvY2FsZUNvbXBhcmUiLCJnaXRHcm91cFVybCIsImNsb25lIiwidHJpbSIsInJlcGxhY2UiLCJwaG90b3NEaXJOYW1lIiwicGhvdG9zRGlyIiwiam9pbiIsImVuc3VyZURpclN5bmMiLCJtaXNzaW5nUGhvdG9GaWxlUGF0aCIsImRlcHV0ZSIsImlkZW50IiwiZXRhdENpdmlsIiwibnVtZXJvRGVwdXRlIiwic3Vic3RyaW5nIiwicGhvdG9GaWxlbmFtZSIsInBob3RvRmlsZVBhdGgiLCJwaG90b1RlbXBGaWxlbmFtZSIsInBob3RvVGVtcEZpbGVQYXRoIiwidXJsUGhvdG8iLCJzaWxlbnQiLCJsb2ciLCJwcmVub20iLCJub20iLCJyZXRyaWVzIiwicmVzcG9uc2UiLCJvayIsImJvZHkiLCJjcmVhdGVXcml0ZVN0cmVhbSIsInJlbmFtZVN5bmMiLCJ3YXJuIiwic3RhdHVzIiwic3RhdHVzVGV4dCIsInRleHQiLCJleGlzdHNTeW5jIiwiY29weUZpbGVTeW5jIiwicGhvdG9CeUlkRGVwdXRlIiwicm93c0ZpbGVuYW1lcyIsImRlcHV0ZUluZGV4Iiwicm93SW5kZXgiLCJyb3ciLCJzbGljZSIsInBob3Rvc0ZpbGVuYW1lcyIsImNvbHVtbkluZGV4IiwiZW50cmllcyIsInB1c2giLCJjaGVtaW4iLCJjaGVtaW5Nb3NhaXF1ZSIsImhhdXRldXIiLCJsYXJnZXVyIiwieE1vc2FpcXVlIiwieU1vc2FpcXVlIiwicm93RmlsZW5hbWUiLCJ1bmxpbmtTeW5jIiwianNvbkZpbGVQYXRoIiwid3JpdGVGaWxlU3luYyIsIkpTT04iLCJzdHJpbmdpZnkiLCJ0aGVuIiwiZXhpdCIsImNhdGNoIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvcmV0cmlldmVfZGVwdXRlc19waG90b3MudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hpbGRQcm9jZXNzLCBleGVjU3luYyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCJcbmltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IGZldGNoIGZyb20gXCJub2RlLWZldGNoXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcbmltcG9ydCBzdHJlYW0gZnJvbSBcInN0cmVhbVwiXG5pbXBvcnQgdXRpbCBmcm9tIFwidXRpbFwiXG5cbmltcG9ydCB7IEVuYWJsZWREYXRhc2V0cyB9IGZyb20gXCIuLi9kYXRhc2V0c1wiXG5pbXBvcnQgeyBsb2FkQXNzZW1ibGVlRGF0YSB9IGZyb20gXCIuLi9sb2FkZXJzXCJcbmltcG9ydCB7XG4gIENvZGVUeXBlT3JnYW5lLFxuICBNYW5kYXQsXG4gIFBob3RvLFxuICBUeXBlTWFuZGF0LFxufSBmcm9tIFwiLi4vdHlwZXMvYWN0ZXVyc19ldF9vcmdhbmVzXCJcblxuY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICB7XG4gICAgYWxpYXM6IFwiQ1wiLFxuICAgIGhlbHA6IFwiY2xvbmUgcmVwb3NpdG9yaWVzIGZyb20gZ2l2ZW4gZ3JvdXAgKG9yIG9yZ2FuaXphdGlvbikgZ2l0IFVSTFwiLFxuICAgIG5hbWU6IFwiY2xvbmVcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJjXCIsXG4gICAgaGVscDogXCJjb21taXQgcGhvdG9zXCIsXG4gICAgbmFtZTogXCJjb21taXRcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwiZlwiLFxuICAgIGhlbHA6IFwiZmV0Y2ggZMOpcHV0w6lzJyBwaWN0dXJlcyBpbnN0ZWFkIG9mIHJldHJpZXZpbmcgdGhlbSBmcm9tIGZpbGVzXCIsXG4gICAgbmFtZTogXCJmZXRjaFwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJsXCIsXG4gICAgZGVmYXVsdFZhbHVlOiBcIjE1XCIsXG4gICAgbmFtZTogXCJsZWdpc2xhdHVyZVwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInJcIixcbiAgICBoZWxwOiBcInB1c2ggY29tbWl0IHRvIGdpdmVuIHJlbW90ZVwiLFxuICAgIG11bHRpcGxlOiB0cnVlLFxuICAgIG5hbWU6IFwicmVtb3RlXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwic1wiLFxuICAgIGhlbHA6IFwiZG9uJ3QgbG9nIGFueXRoaW5nXCIsXG4gICAgbmFtZTogXCJzaWxlbnRcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgZGVmYXVsdE9wdGlvbjogdHJ1ZSxcbiAgICBoZWxwOiBcImRpcmVjdG9yeSBjb250YWluaW5nIEFzc2VtYmzDqWUgb3BlbiBkYXRhIGZpbGVzXCIsXG4gICAgbmFtZTogXCJkYXRhRGlyXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuXVxuY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMpXG5jb25zdCBwaXBlbGluZSA9IHV0aWwucHJvbWlzaWZ5KHN0cmVhbS5waXBlbGluZSlcblxuZnVuY3Rpb24gY29tbWl0QW5kUHVzaChcbiAgcmVwb3NpdG9yeURpcjogc3RyaW5nLFxuICBjb21taXQ6IGJvb2xlYW4sXG4gIHJlbW90ZXM/OiBzdHJpbmdbXSxcbik6IGJvb2xlYW4ge1xuICBsZXQgZXJyb3IgPSBmYWxzZVxuICBpZiAoY29tbWl0KSB7XG4gICAgZXhlY1N5bmMoXCJnaXQgYWRkIC5cIiwge1xuICAgICAgY3dkOiByZXBvc2l0b3J5RGlyLFxuICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICB9KVxuICAgIHRyeSB7XG4gICAgICBleGVjU3luYygnZ2l0IGNvbW1pdCAtbSBcIk5vdXZlbGxlIG1vaXNzb25cIicsIHtcbiAgICAgICAgY3dkOiByZXBvc2l0b3J5RGlyLFxuICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgfSlcbiAgICB9IGNhdGNoIChjaGlsZFByb2Nlc3MpIHtcbiAgICAgIGlmIChcbiAgICAgICAgKGNoaWxkUHJvY2VzcyBhcyBDaGlsZFByb2Nlc3MpLnN0ZGVyciA9PT0gbnVsbCB8fFxuICAgICAgICAhL25vdGhpbmcgdG8gY29tbWl0Ly50ZXN0KChjaGlsZFByb2Nlc3MgYXMgYW55KS5zdGRvdXQpXG4gICAgICApIHtcbiAgICAgICAgY29uc29sZS5lcnJvcigoY2hpbGRQcm9jZXNzIGFzIGFueSkub3V0cHV0KVxuICAgICAgICB0aHJvdyBjaGlsZFByb2Nlc3NcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCByZW1vdGUgb2YgcmVtb3RlcyB8fCBbXSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBwdXNoICR7cmVtb3RlfSBtYXN0ZXJgLCB7XG4gICAgICAgICAgY3dkOiByZXBvc2l0b3J5RGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH0gY2F0Y2ggKGNoaWxkUHJvY2Vzcykge1xuICAgICAgICAvLyBEb24ndCBzdG9wIHdoZW4gcHVzaCBmYWlscy5cbiAgICAgICAgY29uc29sZS5lcnJvcigoY2hpbGRQcm9jZXNzIGFzIGFueSkub3V0cHV0KVxuICAgICAgICBlcnJvciA9IHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGVycm9yXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJldHJpZXZlUGhvdG9zRGVwdXRlcygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3QgZGF0YURpciA9IG9wdGlvbnMuZGF0YURpclxuICBjb25zdCB7IGFjdGV1ckJ5VWlkIH0gPSBsb2FkQXNzZW1ibGVlRGF0YShcbiAgICBkYXRhRGlyLFxuICAgIEVuYWJsZWREYXRhc2V0cy5BY3RldXJzRXRPcmdhbmVzLFxuICAgIG9wdGlvbnMubGVnaXNsYXR1cmUsXG4gIClcbiAgY29uc3QgZGVwdXRlc0xlZ2lzbGF0dXJlID0gT2JqZWN0LnZhbHVlcyhhY3RldXJCeVVpZClcbiAgICAuZmlsdGVyKChhY3RldXIpID0+IHtcbiAgICAgIGNvbnN0IHsgbWFuZGF0cyB9ID0gYWN0ZXVyXG4gICAgICBpZiAoIW1hbmRhdHMpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICBjb25zdCBtYW5kYXREZXB1dGVMZWdpc2xhdHVyZSA9IG1hbmRhdHMuZmlsdGVyKFxuICAgICAgICAobWFuZGF0OiBNYW5kYXQpID0+XG4gICAgICAgICAgbWFuZGF0LnhzaVR5cGUgPT09IFR5cGVNYW5kYXQuTWFuZGF0UGFybGVtZW50YWlyZVR5cGUgJiZcbiAgICAgICAgICBtYW5kYXQubGVnaXNsYXR1cmUgPT09IG9wdGlvbnMubGVnaXNsYXR1cmUgJiZcbiAgICAgICAgICBtYW5kYXQudHlwZU9yZ2FuZSA9PT0gQ29kZVR5cGVPcmdhbmUuQXNzZW1ibGVlLFxuICAgICAgKVswXVxuICAgICAgcmV0dXJuIG1hbmRhdERlcHV0ZUxlZ2lzbGF0dXJlICE9PSB1bmRlZmluZWRcbiAgICB9KVxuICAgIC5zb3J0KChhLCBiKSA9PlxuICAgICAgYS51aWQubGVuZ3RoID09PSBiLnVpZC5sZW5ndGhcbiAgICAgICAgPyBhLnVpZC5sb2NhbGVDb21wYXJlKGIudWlkKVxuICAgICAgICA6IGEudWlkLmxlbmd0aCAtIGIudWlkLmxlbmd0aCxcbiAgICApXG5cbiAgY29uc3QgZ2l0R3JvdXBVcmwgPSBvcHRpb25zLmNsb25lXG4gICAgPyBvcHRpb25zLmNsb25lLnRyaW0oKS5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpXG4gICAgOiB1bmRlZmluZWRcbiAgY29uc3QgcGhvdG9zRGlyTmFtZSA9IGBwaG90b3NfZGVwdXRlc18ke29wdGlvbnMubGVnaXNsYXR1cmV9YFxuICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtwaG90b3NEaXJOYW1lfS5naXRgLCB7XG4gICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgIH0pXG4gIH1cbiAgY29uc3QgcGhvdG9zRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIHBob3Rvc0Rpck5hbWUpXG5cbiAgLy8gRG93bmxvYWQgcGhvdG9zLlxuICBmcy5lbnN1cmVEaXJTeW5jKHBob3Rvc0RpcilcbiAgaWYgKG9wdGlvbnMuZmV0Y2gpIHtcbiAgICBjb25zdCBtaXNzaW5nUGhvdG9GaWxlUGF0aCA9IFwiaW1hZ2VzL3RyYW5zcGFyZW50XzE1MHgxOTIuanBnXCJcbiAgICBmb3IgKGNvbnN0IGRlcHV0ZSBvZiBkZXB1dGVzTGVnaXNsYXR1cmUpIHtcbiAgICAgIGNvbnN0IGlkZW50ID0gZGVwdXRlLmV0YXRDaXZpbC5pZGVudFxuICAgICAgY29uc3QgbnVtZXJvRGVwdXRlID0gZGVwdXRlLnVpZC5zdWJzdHJpbmcoMilcbiAgICAgIGNvbnN0IHBob3RvRmlsZW5hbWUgPSBgJHtudW1lcm9EZXB1dGV9LmpwZ2BcbiAgICAgIGNvbnN0IHBob3RvRmlsZVBhdGggPSBwYXRoLmpvaW4ocGhvdG9zRGlyLCBwaG90b0ZpbGVuYW1lKVxuICAgICAgY29uc3QgcGhvdG9UZW1wRmlsZW5hbWUgPSBgJHtudW1lcm9EZXB1dGV9X3RlbXAuanBnYFxuICAgICAgY29uc3QgcGhvdG9UZW1wRmlsZVBhdGggPSBwYXRoLmpvaW4ocGhvdG9zRGlyLCBwaG90b1RlbXBGaWxlbmFtZSlcbiAgICAgIGNvbnN0IHVybFBob3RvID0gYGh0dHA6Ly93d3cyLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL3RyaWJ1bi8ke29wdGlvbnMubGVnaXNsYXR1cmV9L3Bob3Rvcy8ke3Bob3RvRmlsZW5hbWV9YFxuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICBgTG9hZGluZyBwaG90byAke3VybFBob3RvfSBmb3IgJHtpZGVudC5wcmVub219ICR7aWRlbnQubm9tfeKApmAsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIGZvciAobGV0IHJldHJpZXMgPSAwOyByZXRyaWVzIDwgMzsgcmV0cmllcysrKSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsUGhvdG8pXG4gICAgICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgICAgIGF3YWl0IHBpcGVsaW5lKHJlc3BvbnNlLmJvZHksIGZzLmNyZWF0ZVdyaXRlU3RyZWFtKHBob3RvVGVtcEZpbGVQYXRoKSlcbiAgICAgICAgICBmcy5yZW5hbWVTeW5jKHBob3RvVGVtcEZpbGVQYXRoLCBwaG90b0ZpbGVQYXRoKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJldHJpZXMgPj0gMikge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIGBGZXRjaCBmYWlsZWQ6ICR7dXJsUGhvdG99ICgke2lkZW50LnByZW5vbX0gJHtpZGVudC5ub219KWAsXG4gICAgICAgICAgKVxuICAgICAgICAgIGNvbnNvbGUud2FybihyZXNwb25zZS5zdGF0dXMsIHJlc3BvbnNlLnN0YXR1c1RleHQpXG4gICAgICAgICAgY29uc29sZS53YXJuKGF3YWl0IHJlc3BvbnNlLnRleHQoKSlcbiAgICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyhwaG90b0ZpbGVQYXRoKSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiICA9PiBSZXVzaW5nIGV4aXN0aW5nIGltYWdlXCIpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIiAgPT4gVXNpbmcgYmxhbmsgaW1hZ2VcIilcbiAgICAgICAgICAgIGZzLmNvcHlGaWxlU3luYyhtaXNzaW5nUGhvdG9GaWxlUGF0aCwgcGhvdG9GaWxlUGF0aClcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlc2l6ZSBwaG90b3MgdG8gMTUweDE5MiwgYmVjYXVzZSBzb21lIGhhdmVuJ3QgZXhhY3RseSB0aGlzIHNpemUuXG4gIGZvciAoY29uc3QgZGVwdXRlIG9mIGRlcHV0ZXNMZWdpc2xhdHVyZSkge1xuICAgIGNvbnN0IGlkZW50ID0gZGVwdXRlLmV0YXRDaXZpbC5pZGVudFxuICAgIGNvbnN0IG51bWVyb0RlcHV0ZSA9IGRlcHV0ZS51aWQuc3Vic3RyaW5nKDIpXG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGBSZXNpemluZyBwaG90byAke251bWVyb0RlcHV0ZX0gZm9yICR7aWRlbnQucHJlbm9tfSAke2lkZW50Lm5vbX3igKZgLFxuICAgICAgKVxuICAgIH1cbiAgICBleGVjU3luYyhcbiAgICAgIGBnbSBjb252ZXJ0IC1yZXNpemUgMTUweDE5MiEgJHtudW1lcm9EZXB1dGV9LmpwZyAke251bWVyb0RlcHV0ZX1fMTUweDE5Mi5qcGdgLFxuICAgICAge1xuICAgICAgICBjd2Q6IHBob3Rvc0RpcixcbiAgICAgIH0sXG4gICAgKVxuICB9XG5cbiAgLy8gQ3JlYXRlIGEgbW9zYWljIG9mIHBob3Rvcy5cbiAgY29uc3QgcGhvdG9CeUlkRGVwdXRlOiB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH0gPSB7fVxuICBjb25zdCByb3dzRmlsZW5hbWVzOiBzdHJpbmdbXSA9IFtdXG4gIGZvciAoXG4gICAgbGV0IGRlcHV0ZUluZGV4ID0gMCwgcm93SW5kZXggPSAwO1xuICAgIGRlcHV0ZUluZGV4IDwgZGVwdXRlc0xlZ2lzbGF0dXJlLmxlbmd0aDtcbiAgICBkZXB1dGVJbmRleCArPSAyNSwgcm93SW5kZXgrK1xuICApIHtcbiAgICBjb25zdCByb3cgPSBkZXB1dGVzTGVnaXNsYXR1cmUuc2xpY2UoZGVwdXRlSW5kZXgsIGRlcHV0ZUluZGV4ICsgMjUpXG4gICAgY29uc3QgcGhvdG9zRmlsZW5hbWVzOiBzdHJpbmdbXSA9IFtdXG4gICAgZm9yIChjb25zdCBbY29sdW1uSW5kZXgsIGRlcHV0ZV0gb2Ygcm93LmVudHJpZXMoKSkge1xuICAgICAgY29uc3QgbnVtZXJvRGVwdXRlID0gZGVwdXRlLnVpZC5zdWJzdHJpbmcoMilcbiAgICAgIGNvbnN0IHBob3RvRmlsZW5hbWUgPSBgJHtudW1lcm9EZXB1dGV9XzE1MHgxOTIuanBnYFxuICAgICAgcGhvdG9zRmlsZW5hbWVzLnB1c2gocGhvdG9GaWxlbmFtZSlcbiAgICAgIHBob3RvQnlJZERlcHV0ZVtkZXB1dGUudWlkXSA9IHtcbiAgICAgICAgY2hlbWluOiBgcGhvdG9zX2RlcHV0ZXNfJHtvcHRpb25zLmxlZ2lzbGF0dXJlfS8ke3Bob3RvRmlsZW5hbWV9YCxcbiAgICAgICAgY2hlbWluTW9zYWlxdWU6IGBwaG90b3NfZGVwdXRlc18ke29wdGlvbnMubGVnaXNsYXR1cmV9L2RlcHV0ZXMuanBnYCxcbiAgICAgICAgaGF1dGV1cjogMTkyLFxuICAgICAgICBsYXJnZXVyOiAxNTAsXG4gICAgICAgIHhNb3NhaXF1ZTogY29sdW1uSW5kZXggKiAxNTAsXG4gICAgICAgIHlNb3NhaXF1ZTogcm93SW5kZXggKiAxOTIsXG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHJvd0ZpbGVuYW1lID0gYHJvdy0ke3Jvd0luZGV4fS5qcGdgXG4gICAgZXhlY1N5bmMoYGdtIGNvbnZlcnQgJHtwaG90b3NGaWxlbmFtZXMuam9pbihcIiBcIil9ICthcHBlbmQgJHtyb3dGaWxlbmFtZX1gLCB7XG4gICAgICBjd2Q6IHBob3Rvc0RpcixcbiAgICB9KVxuICAgIHJvd3NGaWxlbmFtZXMucHVzaChyb3dGaWxlbmFtZSlcbiAgfVxuICBleGVjU3luYyhgZ20gY29udmVydCAke3Jvd3NGaWxlbmFtZXMuam9pbihcIiBcIil9IC1hcHBlbmQgZGVwdXRlcy5qcGdgLCB7XG4gICAgY3dkOiBwaG90b3NEaXIsXG4gIH0pXG4gIGZvciAoY29uc3Qgcm93RmlsZW5hbWUgb2Ygcm93c0ZpbGVuYW1lcykge1xuICAgIGZzLnVubGlua1N5bmMocGF0aC5qb2luKHBob3Rvc0Rpciwgcm93RmlsZW5hbWUpKVxuICB9XG5cbiAgY29uc3QganNvbkZpbGVQYXRoID0gcGF0aC5qb2luKHBob3Rvc0RpciwgXCJkZXB1dGVzLmpzb25cIilcbiAgZnMud3JpdGVGaWxlU3luYyhqc29uRmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KHBob3RvQnlJZERlcHV0ZSwgbnVsbCwgMikpXG5cbiAgcmV0dXJuIGNvbW1pdEFuZFB1c2gocGhvdG9zRGlyLCBvcHRpb25zLmNvbW1pdCwgb3B0aW9ucy5yZW1vdGUpXG59XG5cbnJldHJpZXZlUGhvdG9zRGVwdXRlcygpXG4gIC50aGVuKChlcnJvcikgPT4gcHJvY2Vzcy5leGl0KGVycm9yID8gMSA6IDApKVxuICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgY29uc29sZS5sb2coZXJyb3IpXG4gICAgcHJvY2Vzcy5leGl0KDIpXG4gIH0pXG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQXVCQSxRQUF2QixRQUF1QyxlQUF2QztBQUNBLE9BQU9DLGVBQVAsTUFBNEIsbUJBQTVCO0FBQ0EsT0FBT0MsRUFBUCxNQUFlLFVBQWY7QUFDQSxPQUFPQyxLQUFQLE1BQWtCLFlBQWxCO0FBQ0EsT0FBT0MsSUFBUCxNQUFpQixNQUFqQjtBQUNBLE9BQU9DLE1BQVAsTUFBbUIsUUFBbkI7QUFDQSxPQUFPQyxJQUFQLE1BQWlCLE1BQWpCO1NBRVNDLGU7U0FDQUMsaUI7U0FFUEMsYyxFQUdBQyxVO0FBR0YsTUFBTUMsa0JBQWtCLEdBQUcsQ0FDekI7RUFDRUMsS0FBSyxFQUFFLEdBRFQ7RUFFRUMsSUFBSSxFQUFFLCtEQUZSO0VBR0VDLElBQUksRUFBRSxPQUhSO0VBSUVDLElBQUksRUFBRUM7QUFKUixDQUR5QixFQU96QjtFQUNFSixLQUFLLEVBQUUsR0FEVDtFQUVFQyxJQUFJLEVBQUUsZUFGUjtFQUdFQyxJ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
@@ -22,12 +22,30 @@ require("core-js/modules/es.array.is-array.js");
22
22
 
23
23
  require("core-js/modules/es.promise.js");
24
24
 
25
+ require("core-js/modules/es.symbol.async-iterator.js");
26
+
27
+ require("core-js/modules/es.symbol.to-string-tag.js");
28
+
29
+ require("core-js/modules/es.json.to-string-tag.js");
30
+
31
+ require("core-js/modules/es.math.to-string-tag.js");
32
+
33
+ require("core-js/modules/es.object.create.js");
34
+
35
+ require("core-js/modules/es.object.get-prototype-of.js");
36
+
37
+ require("core-js/modules/es.array.for-each.js");
38
+
39
+ require("core-js/modules/web.dom-collections.for-each.js");
40
+
41
+ require("core-js/modules/es.object.set-prototype-of.js");
42
+
43
+ require("core-js/modules/es.array.reverse.js");
44
+
25
45
  require("core-js/modules/es.weak-map.js");
26
46
 
27
47
  require("core-js/modules/es.object.get-own-property-descriptor.js");
28
48
 
29
- require("regenerator-runtime/runtime.js");
30
-
31
49
  require("core-js/modules/es.array.concat.js");
32
50
 
33
51
  require("core-js/modules/es.array.map.js");
@@ -82,6 +100,8 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
82
100
 
83
101
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
84
102
 
103
+ 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, $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 generator._invoke = function (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); } }; }(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; this._invoke = function (method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); }; } function maybeInvokeDelegate(delegate, context) { var method = delegate.iterator[context.method]; if (undefined === method) { if (context.delegate = null, "throw" === context.method) { if (delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method)) return ContinueSentinel; context.method = "throw", context.arg = new TypeError("The iterator does not provide a 'throw' method"); } return 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, define(Gp, "constructor", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, "constructor", GeneratorFunction), 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 (object) { var 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; }
104
+
85
105
  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); } }
86
106
 
87
107
  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); }); }; }
@@ -224,8 +244,8 @@ var Retrieve = /*#__PURE__*/function () {
224
244
  }, {
225
245
  key: "commitAndPush",
226
246
  value: function () {
227
- var _commitAndPush = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(repositoryDir) {
228
- return regeneratorRuntime.wrap(function _callee$(_context) {
247
+ var _commitAndPush = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(repositoryDir) {
248
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
229
249
  while (1) {
230
250
  switch (_context.prev = _context.next) {
231
251
  case 0:
@@ -281,9 +301,9 @@ var Retrieve = /*#__PURE__*/function () {
281
301
  }, {
282
302
  key: "needsDownload",
283
303
  value: function () {
284
- var _needsDownload = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(filePath, uid) {
304
+ var _needsDownload = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(filePath, uid) {
285
305
  var isNotEmpty, retryFailed, urlPath, url;
286
- return regeneratorRuntime.wrap(function _callee2$(_context2) {
306
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
287
307
  while (1) {
288
308
  switch (_context2.prev = _context2.next) {
289
309
  case 0:
@@ -332,10 +352,10 @@ var Retrieve = /*#__PURE__*/function () {
332
352
  }, {
333
353
  key: "get",
334
354
  value: function () {
335
- var _get = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(url, filePath, format, uid) {
355
+ var _get = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(url, filePath, format, uid) {
336
356
  var response, page, status, _Retrieve$sanityCheck, _Retrieve$sanityCheck2;
337
357
 
338
- return regeneratorRuntime.wrap(function _callee3$(_context3) {
358
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
339
359
  while (1) {
340
360
  switch (_context3.prev = _context3.next) {
341
361
  case 0:
@@ -393,10 +413,10 @@ var Retrieve = /*#__PURE__*/function () {
393
413
  }, {
394
414
  key: "download",
395
415
  value: function () {
396
- var _download = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(textesDir, divisionOrDocument, format) {
416
+ var _download = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(textesDir, divisionOrDocument, format) {
397
417
  var uid, filePath, success, info, url, _iterator2, _step2, status, urlPath;
398
418
 
399
- return regeneratorRuntime.wrap(function _callee4$(_context4) {
419
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
400
420
  while (1) {
401
421
  switch (_context4.prev = _context4.next) {
402
422
  case 0:
@@ -515,10 +535,10 @@ var Retrieve = /*#__PURE__*/function () {
515
535
  }, {
516
536
  key: "retrieveDocuments",
517
537
  value: function () {
518
- var _retrieveDocuments = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5() {
538
+ var _retrieveDocuments = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {
519
539
  var gitDir, textesDir, _iterator3, _step3, filename, document, _iterator4, _step4, divisionOrDocument, status, _i2, _arr2, format;
520
540
 
521
- return regeneratorRuntime.wrap(function _callee5$(_context5) {
541
+ return _regeneratorRuntime().wrap(function _callee5$(_context5) {
522
542
  while (1) {
523
543
  switch (_context5.prev = _context5.next) {
524
544
  case 0:
@@ -710,9 +730,9 @@ function main(_x11) {
710
730
 
711
731
 
712
732
  function _main() {
713
- _main = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6(argv) {
733
+ _main = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(argv) {
714
734
  var options, retrieve;
715
- return regeneratorRuntime.wrap(function _callee6$(_context6) {
735
+ return _regeneratorRuntime().wrap(function _callee6$(_context6) {
716
736
  while (1) {
717
737
  switch (_context6.prev = _context6.next) {
718
738
  case 0:
@@ -745,4 +765,4 @@ if (process.argv[1].endsWith("retrieve_documents.ts")) main(process.argv).then(f
745
765
  console.error(error);
746
766
  process.exit(1);
747
767
  });
748
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL3JldHJpZXZlX2RvY3VtZW50cy50cyJdLCJuYW1lcyI6WyJmZXRjaCIsInJlcXVpcmUiLCJwYXJzZUFyZ3MiLCJhcmd2Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiYWxpYXMiLCJoZWxwIiwibmFtZSIsInR5cGUiLCJCb29sZWFuIiwiZGVmYXVsdFZhbHVlIiwiU3RyaW5nIiwiZGVmYXVsdE9wdGlvbiIsIm11bHRpcGxlIiwic2VjdGlvbnMiLCJoZWFkZXIiLCJjb250ZW50Iiwib3B0aW9uTGlzdCIsIm9wdGlvbnMiLCJ1c2FnZSIsImNvbnNvbGUiLCJ3YXJuIiwiUmV0cmlldmUiLCJkaXZpc2lvbiIsImRpdmlzaW9ucyIsInVuZGVmaW5lZCIsImQiLCJjb25jYXQiLCJnZXREaXZpc2lvbnMiLCJkb2N1bWVudCIsIm1hcCIsInJlcG9zaXRvcnlEaXIiLCJjb21taXQiLCJnaXQiLCJyZW1vdGUiLCJydW4iLCJkaXZpc2lvbk9yRG9jdW1lbnQiLCJmb3JtYXQiLCJleHQiLCJ1cmxzIiwidWlkIiwicHVzaCIsIkRvY3VtZW50VXJsRm9ybWF0IiwiUmF3SHRtbCIsIkh0bWwiLCJQZGYiLCJmaWxlUGF0aCIsImZzIiwiZXhpc3RzU3luYyIsImlzTm90RW1wdHkiLCJzdGF0U3luYyIsInNpemUiLCJyZXRyeUZhaWxlZCIsInZlcmJvc2UiLCJ1cmxQYXRoIiwidXJsIiwicmVhZEZpbGVTeW5jIiwidG9TdHJpbmciLCJsb2ciLCJyZXNwb25zZSIsImJ1ZmZlciIsInBhZ2UiLCJvayIsInN0YXR1cyIsImVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsImNvZGUiLCJtZXNzYWdlIiwic3RhdHVzVGV4dCIsIndyaXRlRmlsZVN5bmMiLCJzYW5pdHlDaGVja0Zvcm1hdCIsInRleHRlc0RpciIsIm5lZWRzRG93bmxvYWQiLCJzdWNjZXNzIiwiaW5mbyIsImdldFVybHMiLCJnZXQiLCJ1bmxpbmtTeW5jIiwic2lsZW50IiwidXJsRnJvbVVpZCIsInNsaWNlIiwiZ2l0RGlyIiwidGV4dGVzIiwicGF0aCIsImpvaW4iLCJsZWdpc2xhdHVyZSIsImVuc3VyZURpclN5bmMiLCJkYXRhIiwiZmlsZW5hbWUiLCJ0ZXN0IiwiZ2V0RGl2aXNpb25zT3JEb2N1bWVudCIsImRvd25sb2FkIiwiY29tbWl0QW5kUHVzaCIsImxlbmd0aCIsIk1hdGgiLCJtaW4iLCJoZWFkIiwic3RhcnRzV2l0aCIsIkJ1ZmZlciIsImZyb20iLCJlbmNvZGVVUklDb21wb25lbnQiLCJpbmNsdWRlcyIsIm1haW4iLCJyZXRyaWV2ZSIsInJldHJpZXZlRG9jdW1lbnRzIiwicHJvY2VzcyIsImVuZHNXaXRoIiwidGhlbiIsImV4aXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBRUE7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUpBLElBQUlBLEtBQUssR0FBR0MsT0FBTyxDQUFDLFlBQUQsQ0FBbkI7O0FBTUEsU0FBU0MsU0FBVCxDQUFtQkMsSUFBbkIsRUFBd0M7QUFDdEMsTUFBTUMsa0JBQWtCLEdBQUcsQ0FDekI7QUFDRUMsSUFBQUEsS0FBSyxFQUFFLEdBRFQ7QUFFRUMsSUFBQUEsSUFBSSxFQUFFLGtCQUZSO0FBR0VDLElBQUFBLElBQUksRUFBRSxRQUhSO0FBSUVDLElBQUFBLElBQUksRUFBRUM7QUFKUixHQUR5QixFQU96QjtBQUNFSCxJQUFBQSxJQUFJLEVBQUUsU0FEUjtBQUVFQyxJQUFBQSxJQUFJLEVBQUUsU0FGUjtBQUdFQyxJQUFBQSxJQUFJLEVBQUVDO0FBSFIsR0FQeUIsRUFZekI7QUFDRUgsSUFBQUEsSUFBSSxFQUFFLHdCQURSO0FBRUVDLElBQUFBLElBQUksRUFBRSxjQUZSO0FBR0VDLElBQUFBLElBQUksRUFBRUM7QUFIUixHQVp5QixFQWlCekI7QUFDRUgsSUFBQUEsSUFBSSxF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QU8sQ0FBQ0csSUFBUixDQUFhLENBQWI7QUFDRCxDQVBIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGNvbW1hbmRMaW5lVXNhZ2UgZnJvbSBcImNvbW1hbmQtbGluZS11c2FnZVwiXG5pbXBvcnQgKiBhcyBnaXQgZnJvbSBcIi4uLy4uL3NyYy9naXRcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5sZXQgZmV0Y2ggPSByZXF1aXJlKFwibm9kZS1mZXRjaFwiKVxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuXG5pbXBvcnQgeyBsb2FkLCBnZXRGaWxlcyB9IGZyb20gXCIuLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0IHsgRG9jdW1lbnRVcmxGb3JtYXQsIHVybEZyb21Eb2N1bWVudCB9IGZyb20gXCIuLi91cmxzXCJcblxuZnVuY3Rpb24gcGFyc2VBcmdzKGFyZ3Y6IHN0cmluZ1tdKTogYW55IHtcbiAgY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICAgIHtcbiAgICAgIGFsaWFzOiBcImNcIixcbiAgICAgIGhlbHA6IFwiY29tbWl0IGRvY3VtZW50c1wiLFxuICAgICAgbmFtZTogXCJjb21taXRcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBoZWxwOiBcImRyeSBydW5cIixcbiAgICAgIG5hbWU6IFwiZHJ5LXJ1blwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGhlbHA6IFwicmV0cnkgZmFpbGVkIGRvY3VtZW50c1wiLFxuICAgICAgbmFtZTogXCJyZXRyeS1mYWlsZWRcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBoZWxwOiBcInJldHJ5IGFsbCBkb2N1bWVudHNcIixcbiAgICAgIG5hbWU6IFwicmV0cnlcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJsXCIsXG4gICAgICBkZWZhdWx0VmFsdWU6IFwiMTVcIixcbiAgICAgIG5hbWU6IFwibGVnaXNsYXR1cmVcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGFsaWFzOiBcInJcIixcbiAgICAgIGhlbHA6IFwicHVzaCBjb21taXQgdG8gZ2l2ZW4gcmVtb3RlXCIsXG4gICAgICBuYW1lOiBcInJlbW90ZVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwic1wiLFxuICAgICAgaGVscDogXCJkb24ndCBsb2cgYW55dGhpbmdcIixcbiAgICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgaGVscDogXCJ0ZXh0ZXMgZGlyXCIsXG4gICAgICBuYW1lOiBcInRleHRlc1wiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwidlwiLFxuICAgICAgaGVscDogXCJ2ZXJib3NlIGxvZ3NcIixcbiAgICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGRlZmF1bHRPcHRpb246IHRydWUsXG4gICAgICBoZWxwOiBcImZpbGVzIG9yIGdsb2JzIHRvIGRvY3VtZW50c1wiLFxuICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICBuYW1lOiBcImRhdGFcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICBdXG4gIGNvbnN0IHNlY3Rpb25zID0gW1xuICAgIHtcbiAgICAgIGhlYWRlcjogXCJSZXRyaWV2ZSBkb2N1bWVudHNcIixcbiAgICAgIGNvbnRlbnQ6IFwiUmV0cmlldmUgZG9jdW1lbnRzXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBoZWFkZXI6IFwiT3B0aW9uc1wiLFxuICAgICAgb3B0aW9uTGlzdDogb3B0aW9uc0RlZmluaXRpb25zLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMsIHtcbiAgICBhcmd2OiBhcmd2LFxuICB9KVxuXG4gIGlmIChcImhlbHBcIiBpbiBvcHRpb25zKSB7XG4gICAgY29uc3QgdXNhZ2UgPSBjb21tYW5kTGluZVVzYWdlKHNlY3Rpb25zKVxuICAgIGNvbnNvbGUud2Fybih1c2FnZSlcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIHJldHVybiBvcHRpb25zXG59XG5cbmNsYXNzIFJldHJpZXZlIHtcbiAgb3B0aW9uczogYW55XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogYW55KSB7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9uc1xuICB9XG5cbiAgZ2V0RGl2aXNpb25zKGRpdmlzaW9uOiBhbnkpIHtcbiAgICBsZXQgZGl2aXNpb25zID0gW2RpdmlzaW9uXVxuICAgIGlmIChkaXZpc2lvbi5kaXZpc2lvbnMgIT0gdW5kZWZpbmVkKSB7XG4gICAgICBmb3IgKGNvbnN0IGQgb2YgZGl2aXNpb24uZGl2aXNpb25zKVxuICAgICAgICBkaXZpc2lvbnMgPSBkaXZpc2lvbnMuY29uY2F0KHRoaXMuZ2V0RGl2aXNpb25zKGQpKVxuICAgIH1cbiAgICByZXR1cm4gZGl2aXNpb25zXG4gIH1cblxuICBnZXREaXZpc2lvbnNPckRvY3VtZW50KGRvY3VtZW50OiBhbnkpIHtcbiAgICBpZiAoZG9jdW1lbnQuZGl2aXNpb25zICE9IHVuZGVmaW5lZClcbiAgICAgIHJldHVybiBbXS5jb25jYXQoXG4gICAgICAgIC4uLmRvY3VtZW50LmRpdmlzaW9ucy5tYXAoKGQ6IGFueSkgPT4gdGhpcy5nZXREaXZpc2lvbnMoZCkpLFxuICAgICAgKVxuICAgIGVsc2UgcmV0dXJuIFtkb2N1bWVudF1cbiAgfVxuXG4gIGFzeW5jIGNvbW1pdEFuZFB1c2gocmVwb3NpdG9yeURpcjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5jb21taXQgPT0gdW5kZWZpbmVkKSByZXR1cm5cbiAgICBnaXQuY29tbWl0KHJlcG9zaXRvcnlEaXIsIFwiTm91dmVsbGUgbW9pc3NvblwiKVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5yZW1vdGUgPT0gdW5kZWZpbmVkKSByZXR1cm5cbiAgICBnaXQucnVuKHJlcG9zaXRvcnlEaXIsIGBwdXNoICR7dGhpcy5vcHRpb25zLnJlbW90ZX0gSEVBRDptYXN0ZXJgKVxuICB9XG5cbiAgZ2V0VXJscyhkaXZpc2lvbk9yRG9jdW1lbnQ6IGFueSwgZm9ybWF0OiBzdHJpbmcpIHtcbiAgICBjb25zdCBleHQgPSBmb3JtYXQgPT0gXCJodG1sXCIgPyBcInJhd1wiIDogXCJwZGZcIlxuICAgIGxldCB1cmxzOiBhbnkgPSBbXG4gICAgICBgaHR0cDovL3d3dy5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL2R5bi9kb2NzLyR7ZGl2aXNpb25PckRvY3VtZW50LnVpZH0uJHtleHR9YCxcbiAgICBdXG4gICAgaWYgKGZvcm1hdCA9PSBcImh0bWxcIikge1xuICAgICAgdXJscy5wdXNoKHVybEZyb21Eb2N1bWVudChkaXZpc2lvbk9yRG9jdW1lbnQsIERvY3VtZW50VXJsRm9ybWF0LlJhd0h0bWwpKVxuICAgICAgdXJscy5wdXNoKHVybEZyb21Eb2N1bWVudChkaXZpc2lvbk9yRG9jdW1lbnQsIERvY3VtZW50VXJsRm9ybWF0Lkh0bWwpKVxuICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09IFwicGRmXCIpIHtcbiAgICAgIHVybHMucHVzaCh1cmxGcm9tRG9jdW1lbnQoZGl2aXNpb25PckRvY3VtZW50LCBEb2N1bWVudFVybEZvcm1hdC5QZGYpKVxuICAgIH1cbiAgICByZXR1cm4gdXJsc1xuICB9XG5cbiAgc3RhdGljIHNhbml0eUNoZWNrRm9ybWF0KHBhZ2U6IEJ1ZmZlciwgZm9ybWF0OiBzdHJpbmcpOiBbQnVmZmVyLCBzdHJpbmddIHtcbiAgICBpZiAoZm9ybWF0ID09IFwicGRmXCIpIHtcbiAgICAgIGNvbnN0IGxlbmd0aCA9IE1hdGgubWluKHBhZ2UubGVuZ3RoLCA0KVxuICAgICAgY29uc3QgaGVhZCA9IHBhZ2Uuc2xpY2UoMCwgbGVuZ3RoKS50b1N0cmluZygpXG4gICAgICBpZiAoIWhlYWQuc3RhcnRzV2l0aChcIiVQREZcIikpXG4gICAgICAgIHJldHVybiBbQnVmZmVyLmZyb20oXCJcIiksIGBiYWQgcGRmICR7ZW5jb2RlVVJJQ29tcG9uZW50KGhlYWQpfS4uLmBdXG4gICAgfSBlbHNlIGlmIChmb3JtYXQgPT0gXCJodG1sXCIpIHtcbiAgICAgIGNvbnN0IGxlbmd0aCA9IE1hdGgubWluKHBhZ2UubGVuZ3RoLCA1MClcbiAgICAgIGNvbnN0IGhlYWQgPSBwYWdlLnNsaWNlKDAsIGxlbmd0aCkudG9TdHJpbmcoKVxuICAgICAgaWYgKCFoZWFkLmluY2x1ZGVzKFwiRE9DVFlQRVwiKSAmJiAhaGVhZC5pbmNsdWRlcyhcIjw/eG1sXCIpKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgQnVmZmVyLmZyb20oXCJcIiksXG4gICAgICAgICAgYGJhZCBodG1sICR7ZW5jb2RlVVJJQ29tcG9uZW50KGhlYWQuc2xpY2UoMCwgNCkpfS4uLmAsXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFtwYWdlLCBcIk9LXCJdXG4gIH1cblxuICBhc3luYyBuZWVkc0Rvd25sb2FkKGZpbGVQYXRoOiBzdHJpbmcsIHVpZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoZmlsZVBhdGgpKSB7XG4gICAgICBjb25zdCBpc05vdEVtcHR5ID0gZnMuc3RhdFN5bmMoZmlsZVBhdGgpLnNpemUgPiAwXG4gICAgICBjb25zdCByZXRyeUZhaWxlZCA9IFwicmV0cnktZmFpbGVkXCIgaW4gdGhpcy5vcHRpb25zXG4gICAgICBpZiAoIXJldHJ5RmFpbGVkIHx8IGlzTm90RW1wdHkpIHtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgaWYgKGlzTm90RW1wdHkpIHtcbiAgICAgICAgICAgIGNvbnN0IHVybFBhdGggPSBgJHtmaWxlUGF0aH0udXJsYFxuICAgICAgICAgICAgbGV0IHVybFxuICAgICAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModXJsUGF0aCkpXG4gICAgICAgICAgICAgIHVybCA9IGZzLnJlYWRGaWxlU3luYyh1cmxQYXRoKS50b1N0cmluZygpXG4gICAgICAgICAgICBlbHNlIHVybCA9IFwiPHVua25vd24gdXJsPlwiXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgJHt1aWR9OiBDYWNoZWQgT0sgJHtmaWxlUGF0aH0gZnJvbSAke3VybH1gKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgJHt1aWR9OiBDYWNoZWQgRkFJTCAke2ZpbGVQYXRofWApXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgYXN5bmMgZ2V0KFxuICAgIHVybDogc3RyaW5nLFxuICAgIGZpbGVQYXRoOiBzdHJpbmcsXG4gICAgZm9ybWF0OiBzdHJpbmcsXG4gICAgdWlkOiBzdHJpbmcsXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy52ZXJib3NlKSBjb25zb2xlLmxvZyhgJHt1aWR9OiBmZXRjaCgke3VybH0pYClcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybClcbiAgICBsZXQgcGFnZTogYW55ID0gYXdhaXQgcmVzcG9uc2UuYnVmZmVyKClcbiAgICBsZXQgc3RhdHVzXG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgc3RhdHVzID0gcmVzcG9uc2Uuc3RhdHVzXG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzICE9PSA0MDQpIHtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgIGBFcnJvciB3aGlsZSBnZXR0aW5nIHBhZ2UgXCIke3VybH1cIiAodWlkOiAke3VpZH0pOlxcblxcbkVycm9yOlxcbiR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICAgIHsgY29kZTogcmVzcG9uc2Uuc3RhdHVzLCBtZXNzYWdlOiByZXNwb25zZS5zdGF0dXNUZXh0IH0sXG4gICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgIDIsXG4gICAgICAgICAgICApfWAsXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBcIlwiKVxuICAgIH0gZWxzZSB7XG4gICAgICA7W3BhZ2UsIHN0YXR1c10gPSBSZXRyaWV2ZS5zYW5pdHlDaGVja0Zvcm1hdChwYWdlLCBmb3JtYXQpXG4gICAgICBmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBwYWdlKVxuICAgIH1cbiAgICByZXR1cm4gc3RhdHVzXG4gIH1cblxuICBzdGF0aWMgdXJsRnJvbVVpZCh1aWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgdXJsID1cbiAgICAgIFwiaHR0cHM6Ly9naXQuZW4tcm9vdC5vcmcvdHJpY290ZXVzZXMvZGF0YS50cmljb3RldXNlcy5mci9Eb3NzaWVyc19MZWdpc2xhdGlmc19YVi8tL3RyZWUvbWFzdGVyL2RvY3VtZW50c1wiXG4gICAgcmV0dXJuIGBbJHt1aWR9XSgke3VybH0vdWlkLyR7dWlkfS5qc29uKWBcbiAgfVxuXG4gIGFzeW5jIGRvd25sb2FkKFxuICAgIHRleHRlc0Rpcjogc3RyaW5nLFxuICAgIGRpdmlzaW9uT3JEb2N1bWVudDogYW55LFxuICAgIGZvcm1hdDogc3RyaW5nLFxuICApOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IHVpZCA9IGRpdmlzaW9uT3JEb2N1bWVudC51aWRcbiAgICBjb25zdCBmaWxlUGF0aCA9IGAke3RleHRlc0Rpcn0vdWlkLyR7dWlkfS4ke2Zvcm1hdH1gXG4gICAgaWYgKCEoYXdhaXQgdGhpcy5uZWVkc0Rvd25sb2FkKGZpbGVQYXRoLCB1aWQpKSkgcmV0dXJuIDBcbiAgICBpZiAodGhpcy5vcHRpb25zLnZlcmJvc2UpIGNvbnNvbGUubG9nKGAke3VpZH06IENoZWNraW5nICR7ZmlsZVBhdGh9YClcbiAgICBsZXQgc3VjY2VzcyA9IGZhbHNlXG4gICAgbGV0IGluZm8gPSBcIlwiXG4gICAgbGV0IHVybFxuXG4gICAgZm9yICh1cmwgb2YgdGhpcy5nZXRVcmxzKGRpdmlzaW9uT3JEb2N1bWVudCwgZm9ybWF0KSkge1xuICAgICAgaWYgKFwiZHJ5LXJ1blwiIGluIHRoaXMub3B0aW9ucykge1xuICAgICAgICBpbmZvICs9IGAgICogJHt1cmx9XFxuYFxuICAgICAgICBjb250aW51ZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5mbyArPSBgICAqICR7dXJsfSBgXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IHRoaXMuZ2V0KHVybCwgZmlsZVBhdGgsIGZvcm1hdCwgdWlkKVxuXG4gICAgICBpbmZvICs9IGAke3N0YXR1c31cXG5gXG4gICAgICBpZiAoc3RhdHVzID09IFwiT0tcIikge1xuICAgICAgICBzdWNjZXNzID0gdHJ1ZVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCB1cmxQYXRoID0gYCR7ZmlsZVBhdGh9LnVybGBcbiAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgZnMud3JpdGVGaWxlU3luYyh1cmxQYXRoLCB1cmwpXG4gICAgfSBlbHNlIGlmIChmcy5leGlzdHNTeW5jKHVybFBhdGgpKSB7XG4gICAgICBmcy51bmxpbmtTeW5jKHVybFBhdGgpXG4gICAgfVxuICAgIGlmIChpbmZvICE9IFwiXCIgJiYgIXRoaXMub3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgKiAke1JldHJpZXZlLnVybEZyb21VaWQodWlkKX06IFJldHJpZXZpbmcgJHtmaWxlUGF0aH1cXG4ke2luZm8uc2xpY2UoXG4gICAgICAgICAgMCxcbiAgICAgICAgICAtMSxcbiAgICAgICAgKX1gLFxuICAgICAgKVxuICAgICAgcmV0dXJuIDFcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIDBcbiAgICB9XG4gIH1cblxuICBhc3luYyByZXRyaWV2ZURvY3VtZW50cygpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IGdpdERpciA9IGAke3RoaXMub3B0aW9ucy50ZXh0ZXN9Ly5naXRgXG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKGdpdERpcikpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYCR7Z2l0RGlyfSBpcyBleHBlY3RlZCB0byBleGlzdCBidXQgZG9lcyBub3RgKVxuICAgICAgcmV0dXJuIDFcbiAgICB9XG5cbiAgICBjb25zdCB0ZXh0ZXNEaXIgPSBwYXRoLmpvaW4odGhpcy5vcHRpb25zLnRleHRlcywgdGhpcy5vcHRpb25zLmxlZ2lzbGF0dXJlKVxuICAgIGZzLmVuc3VyZURpclN5bmMoYCR7dGV4dGVzRGlyfS91aWRgKVxuXG4gICAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBnZXRGaWxlcyh0aGlzLm9wdGlvbnMuZGF0YSkpIHtcbiAgICAgIGNvbnN0IGRvY3VtZW50ID0gbG9hZChmaWxlbmFtZSlcbiAgICAgIGlmICgvXi4uLi5TTi8udGVzdChkb2N1bWVudC51aWQpIHx8IC9eREVDTC8udGVzdChkb2N1bWVudC51aWQpKSBjb250aW51ZVxuICAgICAgZm9yIChjb25zdCBkaXZpc2lvbk9yRG9jdW1lbnQgb2YgdGhpcy5nZXREaXZpc2lvbnNPckRvY3VtZW50KGRvY3VtZW50KSkge1xuICAgICAgICBpZiAoLy1DT01QQSQvLnRlc3QoZGl2aXNpb25PckRvY3VtZW50LnVpZCkpIGNvbnRpbnVlXG4gICAgICAgIGxldCBzdGF0dXMgPSAwXG4gICAgICAgIGZvciAoY29uc3QgZm9ybWF0IG9mIFtcImh0bWxcIiwgXCJwZGZcIl0pIHtcbiAgICAgICAgICBzdGF0dXMgfD0gYXdhaXQgdGhpcy5kb3dubG9hZCh0ZXh0ZXNEaXIsIGRpdmlzaW9uT3JEb2N1bWVudCwgZm9ybWF0KVxuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0dXMgJiYgIXRoaXMub3B0aW9ucy5zaWxlbnQpIGNvbnNvbGUubG9nKFwiLS0tXCIpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCEoXCJkcnktcnVuXCIgaW4gdGhpcy5vcHRpb25zKSkge1xuICAgICAgYXdhaXQgdGhpcy5jb21taXRBbmRQdXNoKHRleHRlc0RpcilcbiAgICB9XG5cbiAgICByZXR1cm4gMFxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIG1haW4oYXJndjogYW55KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IHBhcnNlQXJncyhhcmd2KVxuICBpZiAob3B0aW9ucyA9PT0gbnVsbCkgcmV0dXJuIDFcbiAgY29uc3QgcmV0cmlldmUgPSBuZXcgUmV0cmlldmUob3B0aW9ucylcbiAgcmV0dXJuIHJldHJpZXZlLnJldHJpZXZlRG9jdW1lbnRzKClcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAocHJvY2Vzcy5hcmd2WzFdLmVuZHNXaXRoKFwicmV0cmlldmVfZG9jdW1lbnRzLnRzXCIpKVxuICBtYWluKHByb2Nlc3MuYXJndilcbiAgICAudGhlbigoc3RhdHVzKSA9PiB7XG4gICAgICBwcm9jZXNzLmV4aXQoc3RhdHVzKVxuICAgIH0pXG4gICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcihlcnJvcilcbiAgICAgIHByb2Nlc3MuZXhpdCgxKVxuICAgIH0pXG4iXX0=
768
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmZXRjaCIsInJlcXVpcmUiLCJwYXJzZUFyZ3MiLCJhcmd2Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiYWxpYXMiLCJoZWxwIiwibmFtZSIsInR5cGUiLCJCb29sZWFuIiwiZGVmYXVsdFZhbHVlIiwiU3RyaW5nIiwiZGVmYXVsdE9wdGlvbiIsIm11bHRpcGxlIiwic2VjdGlvbnMiLCJoZWFkZXIiLCJjb250ZW50Iiwib3B0aW9uTGlzdCIsIm9wdGlvbnMiLCJjb21tYW5kTGluZUFyZ3MiLCJ1c2FnZSIsImNvbW1hbmRMaW5lVXNhZ2UiLCJjb25zb2xlIiwid2FybiIsIlJldHJpZXZlIiwiZGl2aXNpb24iLCJkaXZpc2lvbnMiLCJ1bmRlZmluZWQiLCJkIiwiY29uY2F0IiwiZ2V0RGl2aXNpb25zIiwiZG9jdW1lbnQiLCJtYXAiLCJyZXBvc2l0b3J5RGlyIiwiY29tbWl0IiwiZ2l0IiwicmVtb3RlIiwicnVuIiwiZGl2aXNpb25PckRvY3VtZW50IiwiZm9ybWF0IiwiZXh0IiwidXJscyIsInVpZCIsInB1c2giLCJ1cmxGcm9tRG9jdW1lbnQiLCJEb2N1bWVudFVybEZvcm1hdCIsIlJhd0h0bWwiLCJIdG1sIiwiUGRmIiwiZmlsZVBhdGgiLCJmcyIsImV4aXN0c1N5bmMiLCJpc05vdEVtcHR5Iiwic3RhdFN5bmMiLCJzaXplIiwicmV0cnlGYWlsZWQiLCJ2ZXJib3NlIiwidXJsUGF0aCIsInVybCIsInJlYWRGaWxlU3luYyIsInRvU3RyaW5nIiwibG9nIiwicmVzcG9uc2UiLCJidWZmZXIiLCJwYWdlIiwib2siLCJzdGF0dXMiLCJlcnJvciIsIkpTT04iLCJzdHJpbmdpZnkiLCJjb2RlIiwibWVzc2FnZSIsInN0YXR1c1RleHQiLCJ3cml0ZUZpbGVTeW5jIiwic2FuaXR5Q2hlY2tGb3JtYXQiLCJ0ZXh0ZXNEaXIiLCJuZWVkc0Rvd25sb2FkIiwic3VjY2VzcyIsImluZm8iLCJnZXRVcmxzIiwiZ2V0IiwidW5saW5rU3luYyIsInNpbGVudCIsInVybEZyb21VaWQiLCJzbGljZSIsImdpdERpciIsInRleHRlcyIsInBhdGgiLCJqb2luIiwibGVnaXNsYXR1cmUiLCJlbnN1cmVEaXJTeW5jIiwiZ2V0RmlsZXMiLCJkYXRhIiwiZmlsZW5hbWUiLCJsb2FkIiwidGVzdCIsImdldERpdmlzaW9uc09yRG9jdW1lbnQiLCJkb3dubG9hZCIsImNvbW1pdEFuZFB1c2giLCJsZW5ndGgiLCJNYXRoIiwibWluIiwiaGVhZCIsInN0YXJ0c1dpdGgiLCJCdWZmZXIiLCJmcm9tIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiaW5jbHVkZXMiLCJtYWluIiwicmV0cmlldmUiLCJyZXRyaWV2ZURvY3VtZW50cyIsInByb2Nlc3MiLCJlbmRzV2l0aCIsInRoZW4iLCJleGl0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvcmV0cmlldmVfZG9jdW1lbnRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcbmltcG9ydCBjb21tYW5kTGluZVVzYWdlIGZyb20gXCJjb21tYW5kLWxpbmUtdXNhZ2VcIlxuaW1wb3J0ICogYXMgZ2l0IGZyb20gXCIuLi8uLi9zcmMvZ2l0XCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxubGV0IGZldGNoID0gcmVxdWlyZShcIm5vZGUtZmV0Y2hcIilcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcblxuaW1wb3J0IHsgbG9hZCwgZ2V0RmlsZXMgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCB7IERvY3VtZW50VXJsRm9ybWF0LCB1cmxGcm9tRG9jdW1lbnQgfSBmcm9tIFwiLi4vdXJsc1wiXG5cbmZ1bmN0aW9uIHBhcnNlQXJncyhhcmd2OiBzdHJpbmdbXSk6IGFueSB7XG4gIGNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAgICB7XG4gICAgICBhbGlhczogXCJjXCIsXG4gICAgICBoZWxwOiBcImNvbW1pdCBkb2N1bWVudHNcIixcbiAgICAgIG5hbWU6IFwiY29tbWl0XCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgaGVscDogXCJkcnkgcnVuXCIsXG4gICAgICBuYW1lOiBcImRyeS1ydW5cIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBoZWxwOiBcInJldHJ5IGZhaWxlZCBkb2N1bWVudHNcIixcbiAgICAgIG5hbWU6IFwicmV0cnktZmFpbGVkXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgaGVscDogXCJyZXRyeSBhbGwgZG9jdW1lbnRzXCIsXG4gICAgICBuYW1lOiBcInJldHJ5XCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwibFwiLFxuICAgICAgZGVmYXVsdFZhbHVlOiBcIjE1XCIsXG4gICAgICBuYW1lOiBcImxlZ2lzbGF0dXJlXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJyXCIsXG4gICAgICBoZWxwOiBcInB1c2ggY29tbWl0IHRvIGdpdmVuIHJlbW90ZVwiLFxuICAgICAgbmFtZTogXCJyZW1vdGVcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGFsaWFzOiBcInNcIixcbiAgICAgIGhlbHA6IFwiZG9uJ3QgbG9nIGFueXRoaW5nXCIsXG4gICAgICBuYW1lOiBcInNpbGVudFwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGhlbHA6IFwidGV4dGVzIGRpclwiLFxuICAgICAgbmFtZTogXCJ0ZXh0ZXNcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGFsaWFzOiBcInZcIixcbiAgICAgIGhlbHA6IFwidmVyYm9zZSBsb2dzXCIsXG4gICAgICBuYW1lOiBcInZlcmJvc2VcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgICAgaGVscDogXCJmaWxlcyBvciBnbG9icyB0byBkb2N1bWVudHNcIixcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgbmFtZTogXCJkYXRhXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgXVxuICBjb25zdCBzZWN0aW9ucyA9IFtcbiAgICB7XG4gICAgICBoZWFkZXI6IFwiUmV0cmlldmUgZG9jdW1lbnRzXCIsXG4gICAgICBjb250ZW50OiBcIlJldHJpZXZlIGRvY3VtZW50c1wiLFxuICAgIH0sXG4gICAge1xuICAgICAgaGVhZGVyOiBcIk9wdGlvbnNcIixcbiAgICAgIG9wdGlvbkxpc3Q6IG9wdGlvbnNEZWZpbml0aW9ucyxcbiAgICB9LFxuICBdXG4gIGNvbnN0IG9wdGlvbnMgPSBjb21tYW5kTGluZUFyZ3Mob3B0aW9uc0RlZmluaXRpb25zLCB7XG4gICAgYXJndjogYXJndixcbiAgfSlcblxuICBpZiAoXCJoZWxwXCIgaW4gb3B0aW9ucykge1xuICAgIGNvbnN0IHVzYWdlID0gY29tbWFuZExpbmVVc2FnZShzZWN0aW9ucylcbiAgICBjb25zb2xlLndhcm4odXNhZ2UpXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICByZXR1cm4gb3B0aW9uc1xufVxuXG5jbGFzcyBSZXRyaWV2ZSB7XG4gIG9wdGlvbnM6IGFueVxuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IGFueSkge1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnNcbiAgfVxuXG4gIGdldERpdmlzaW9ucyhkaXZpc2lvbjogYW55KSB7XG4gICAgbGV0IGRpdmlzaW9ucyA9IFtkaXZpc2lvbl1cbiAgICBpZiAoZGl2aXNpb24uZGl2aXNpb25zICE9IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCBkIG9mIGRpdmlzaW9uLmRpdmlzaW9ucylcbiAgICAgICAgZGl2aXNpb25zID0gZGl2aXNpb25zLmNvbmNhdCh0aGlzLmdldERpdmlzaW9ucyhkKSlcbiAgICB9XG4gICAgcmV0dXJuIGRpdmlzaW9uc1xuICB9XG5cbiAgZ2V0RGl2aXNpb25zT3JEb2N1bWVudChkb2N1bWVudDogYW55KSB7XG4gICAgaWYgKGRvY3VtZW50LmRpdmlzaW9ucyAhPSB1bmRlZmluZWQpXG4gICAgICByZXR1cm4gW10uY29uY2F0KFxuICAgICAgICAuLi5kb2N1bWVudC5kaXZpc2lvbnMubWFwKChkOiBhbnkpID0+IHRoaXMuZ2V0RGl2aXNpb25zKGQpKSxcbiAgICAgIClcbiAgICBlbHNlIHJldHVybiBbZG9jdW1lbnRdXG4gIH1cblxuICBhc3luYyBjb21taXRBbmRQdXNoKHJlcG9zaXRvcnlEaXI6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLm9wdGlvbnMuY29tbWl0ID09IHVuZGVmaW5lZCkgcmV0dXJuXG4gICAgZ2l0LmNvbW1pdChyZXBvc2l0b3J5RGlyLCBcIk5vdXZlbGxlIG1vaXNzb25cIilcblxuICAgIGlmICh0aGlzLm9wdGlvbnMucmVtb3RlID09IHVuZGVmaW5lZCkgcmV0dXJuXG4gICAgZ2l0LnJ1bihyZXBvc2l0b3J5RGlyLCBgcHVzaCAke3RoaXMub3B0aW9ucy5yZW1vdGV9IEhFQUQ6bWFzdGVyYClcbiAgfVxuXG4gIGdldFVybHMoZGl2aXNpb25PckRvY3VtZW50OiBhbnksIGZvcm1hdDogc3RyaW5nKSB7XG4gICAgY29uc3QgZXh0ID0gZm9ybWF0ID09IFwiaHRtbFwiID8gXCJyYXdcIiA6IFwicGRmXCJcbiAgICBsZXQgdXJsczogYW55ID0gW1xuICAgICAgYGh0dHA6Ly93d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9keW4vZG9jcy8ke2RpdmlzaW9uT3JEb2N1bWVudC51aWR9LiR7ZXh0fWAsXG4gICAgXVxuICAgIGlmIChmb3JtYXQgPT0gXCJodG1sXCIpIHtcbiAgICAgIHVybHMucHVzaCh1cmxGcm9tRG9jdW1lbnQoZGl2aXNpb25PckRvY3VtZW50LCBEb2N1bWVudFVybEZvcm1hdC5SYXdIdG1sKSlcbiAgICAgIHVybHMucHVzaCh1cmxGcm9tRG9jdW1lbnQoZGl2aXNpb25PckRvY3VtZW50LCBEb2N1bWVudFVybEZvcm1hdC5IdG1sKSlcbiAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PSBcInBkZlwiKSB7XG4gICAgICB1cmxzLnB1c2godXJsRnJvbURvY3VtZW50KGRpdmlzaW9uT3JEb2N1bWVudCwgRG9jdW1lbnRVcmxGb3JtYXQuUGRmKSlcbiAgICB9XG4gICAgcmV0dXJuIHVybHNcbiAgfVxuXG4gIHN0YXRpYyBzYW5pdHlDaGVja0Zvcm1hdChwYWdlOiBCdWZmZXIsIGZvcm1hdDogc3RyaW5nKTogW0J1ZmZlciwgc3RyaW5nXSB7XG4gICAgaWYgKGZvcm1hdCA9PSBcInBkZlwiKSB7XG4gICAgICBjb25zdCBsZW5ndGggPSBNYXRoLm1pbihwYWdlLmxlbmd0aCwgNClcbiAgICAgIGNvbnN0IGhlYWQgPSBwYWdlLnNsaWNlKDAsIGxlbmd0aCkudG9TdHJpbmcoKVxuICAgICAgaWYgKCFoZWFkLnN0YXJ0c1dpdGgoXCIlUERGXCIpKVxuICAgICAgICByZXR1cm4gW0J1ZmZlci5mcm9tKFwiXCIpLCBgYmFkIHBkZiAke2VuY29kZVVSSUNvbXBvbmVudChoZWFkKX0uLi5gXVxuICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09IFwiaHRtbFwiKSB7XG4gICAgICBjb25zdCBsZW5ndGggPSBNYXRoLm1pbihwYWdlLmxlbmd0aCwgNTApXG4gICAgICBjb25zdCBoZWFkID0gcGFnZS5zbGljZSgwLCBsZW5ndGgpLnRvU3RyaW5nKClcbiAgICAgIGlmICghaGVhZC5pbmNsdWRlcyhcIkRPQ1RZUEVcIikgJiYgIWhlYWQuaW5jbHVkZXMoXCI8P3htbFwiKSkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIEJ1ZmZlci5mcm9tKFwiXCIpLFxuICAgICAgICAgIGBiYWQgaHRtbCAke2VuY29kZVVSSUNvbXBvbmVudChoZWFkLnNsaWNlKDAsIDQpKX0uLi5gLFxuICAgICAgICBdXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBbcGFnZSwgXCJPS1wiXVxuICB9XG5cbiAgYXN5bmMgbmVlZHNEb3dubG9hZChmaWxlUGF0aDogc3RyaW5nLCB1aWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmIChmcy5leGlzdHNTeW5jKGZpbGVQYXRoKSkge1xuICAgICAgY29uc3QgaXNOb3RFbXB0eSA9IGZzLnN0YXRTeW5jKGZpbGVQYXRoKS5zaXplID4gMFxuICAgICAgY29uc3QgcmV0cnlGYWlsZWQgPSBcInJldHJ5LWZhaWxlZFwiIGluIHRoaXMub3B0aW9uc1xuICAgICAgaWYgKCFyZXRyeUZhaWxlZCB8fCBpc05vdEVtcHR5KSB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgIGlmIChpc05vdEVtcHR5KSB7XG4gICAgICAgICAgICBjb25zdCB1cmxQYXRoID0gYCR7ZmlsZVBhdGh9LnVybGBcbiAgICAgICAgICAgIGxldCB1cmxcbiAgICAgICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHVybFBhdGgpKVxuICAgICAgICAgICAgICB1cmwgPSBmcy5yZWFkRmlsZVN5bmModXJsUGF0aCkudG9TdHJpbmcoKVxuICAgICAgICAgICAgZWxzZSB1cmwgPSBcIjx1bmtub3duIHVybD5cIlxuICAgICAgICAgICAgY29uc29sZS5sb2coYCR7dWlkfTogQ2FjaGVkIE9LICR7ZmlsZVBhdGh9IGZyb20gJHt1cmx9YClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYCR7dWlkfTogQ2FjaGVkIEZBSUwgJHtmaWxlUGF0aH1gKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGFzeW5jIGdldChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBmaWxlUGF0aDogc3RyaW5nLFxuICAgIGZvcm1hdDogc3RyaW5nLFxuICAgIHVpZDogc3RyaW5nLFxuICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmICh0aGlzLm9wdGlvbnMudmVyYm9zZSkgY29uc29sZS5sb2coYCR7dWlkfTogZmV0Y2goJHt1cmx9KWApXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwpXG4gICAgbGV0IHBhZ2U6IGFueSA9IGF3YWl0IHJlc3BvbnNlLmJ1ZmZlcigpXG4gICAgbGV0IHN0YXR1c1xuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIHN0YXR1cyA9IHJlc3BvbnNlLnN0YXR1c1xuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyAhPT0gNDA0KSB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBgRXJyb3Igd2hpbGUgZ2V0dGluZyBwYWdlIFwiJHt1cmx9XCIgKHVpZDogJHt1aWR9KTpcXG5cXG5FcnJvcjpcXG4ke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgICB7IGNvZGU6IHJlc3BvbnNlLnN0YXR1cywgbWVzc2FnZTogcmVzcG9uc2Uuc3RhdHVzVGV4dCB9LFxuICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAyLFxuICAgICAgICAgICAgKX1gLFxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgXCJcIilcbiAgICB9IGVsc2Uge1xuICAgICAgO1twYWdlLCBzdGF0dXNdID0gUmV0cmlldmUuc2FuaXR5Q2hlY2tGb3JtYXQocGFnZSwgZm9ybWF0KVxuICAgICAgZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgcGFnZSlcbiAgICB9XG4gICAgcmV0dXJuIHN0YXR1c1xuICB9XG5cbiAgc3RhdGljIHVybEZyb21VaWQodWlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHVybCA9XG4gICAgICBcImh0dHBzOi8vZ2l0LmVuLXJvb3Qub3JnL3RyaWNvdGV1c2VzL2RhdGEudHJpY290ZXVzZXMuZnIvRG9zc2llcnNfTGVnaXNsYXRpZnNfWFYvLS90cmVlL21hc3Rlci9kb2N1bWVudHNcIlxuICAgIHJldHVybiBgWyR7dWlkfV0oJHt1cmx9L3VpZC8ke3VpZH0uanNvbilgXG4gIH1cblxuICBhc3luYyBkb3dubG9hZChcbiAgICB0ZXh0ZXNEaXI6IHN0cmluZyxcbiAgICBkaXZpc2lvbk9yRG9jdW1lbnQ6IGFueSxcbiAgICBmb3JtYXQ6IHN0cmluZyxcbiAgKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCB1aWQgPSBkaXZpc2lvbk9yRG9jdW1lbnQudWlkXG4gICAgY29uc3QgZmlsZVBhdGggPSBgJHt0ZXh0ZXNEaXJ9L3VpZC8ke3VpZH0uJHtmb3JtYXR9YFxuICAgIGlmICghKGF3YWl0IHRoaXMubmVlZHNEb3dubG9hZChmaWxlUGF0aCwgdWlkKSkpIHJldHVybiAwXG4gICAgaWYgKHRoaXMub3B0aW9ucy52ZXJib3NlKSBjb25zb2xlLmxvZyhgJHt1aWR9OiBDaGVja2luZyAke2ZpbGVQYXRofWApXG4gICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZVxuICAgIGxldCBpbmZvID0gXCJcIlxuICAgIGxldCB1cmxcblxuICAgIGZvciAodXJsIG9mIHRoaXMuZ2V0VXJscyhkaXZpc2lvbk9yRG9jdW1lbnQsIGZvcm1hdCkpIHtcbiAgICAgIGlmIChcImRyeS1ydW5cIiBpbiB0aGlzLm9wdGlvbnMpIHtcbiAgICAgICAgaW5mbyArPSBgICAqICR7dXJsfVxcbmBcbiAgICAgICAgY29udGludWVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluZm8gKz0gYCAgKiAke3VybH0gYFxuICAgICAgfVxuXG4gICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCB0aGlzLmdldCh1cmwsIGZpbGVQYXRoLCBmb3JtYXQsIHVpZClcblxuICAgICAgaW5mbyArPSBgJHtzdGF0dXN9XFxuYFxuICAgICAgaWYgKHN0YXR1cyA9PSBcIk9LXCIpIHtcbiAgICAgICAgc3VjY2VzcyA9IHRydWVcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgdXJsUGF0aCA9IGAke2ZpbGVQYXRofS51cmxgXG4gICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgIGZzLndyaXRlRmlsZVN5bmModXJsUGF0aCwgdXJsKVxuICAgIH0gZWxzZSBpZiAoZnMuZXhpc3RzU3luYyh1cmxQYXRoKSkge1xuICAgICAgZnMudW5saW5rU3luYyh1cmxQYXRoKVxuICAgIH1cbiAgICBpZiAoaW5mbyAhPSBcIlwiICYmICF0aGlzLm9wdGlvbnMuc2lsZW50KSB7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYCogJHtSZXRyaWV2ZS51cmxGcm9tVWlkKHVpZCl9OiBSZXRyaWV2aW5nICR7ZmlsZVBhdGh9XFxuJHtpbmZvLnNsaWNlKFxuICAgICAgICAgIDAsXG4gICAgICAgICAgLTEsXG4gICAgICAgICl9YCxcbiAgICAgIClcbiAgICAgIHJldHVybiAxXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAwXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcmV0cmlldmVEb2N1bWVudHMoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCBnaXREaXIgPSBgJHt0aGlzLm9wdGlvbnMudGV4dGVzfS8uZ2l0YFxuICAgIGlmICghZnMuZXhpc3RzU3luYyhnaXREaXIpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGAke2dpdERpcn0gaXMgZXhwZWN0ZWQgdG8gZXhpc3QgYnV0IGRvZXMgbm90YClcbiAgICAgIHJldHVybiAxXG4gICAgfVxuXG4gICAgY29uc3QgdGV4dGVzRGlyID0gcGF0aC5qb2luKHRoaXMub3B0aW9ucy50ZXh0ZXMsIHRoaXMub3B0aW9ucy5sZWdpc2xhdHVyZSlcbiAgICBmcy5lbnN1cmVEaXJTeW5jKGAke3RleHRlc0Rpcn0vdWlkYClcblxuICAgIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZ2V0RmlsZXModGhpcy5vcHRpb25zLmRhdGEpKSB7XG4gICAgICBjb25zdCBkb2N1bWVudCA9IGxvYWQoZmlsZW5hbWUpXG4gICAgICBpZiAoL14uLi4uU04vLnRlc3QoZG9jdW1lbnQudWlkKSB8fCAvXkRFQ0wvLnRlc3QoZG9jdW1lbnQudWlkKSkgY29udGludWVcbiAgICAgIGZvciAoY29uc3QgZGl2aXNpb25PckRvY3VtZW50IG9mIHRoaXMuZ2V0RGl2aXNpb25zT3JEb2N1bWVudChkb2N1bWVudCkpIHtcbiAgICAgICAgaWYgKC8tQ09NUEEkLy50ZXN0KGRpdmlzaW9uT3JEb2N1bWVudC51aWQpKSBjb250aW51ZVxuICAgICAgICBsZXQgc3RhdHVzID0gMFxuICAgICAgICBmb3IgKGNvbnN0IGZvcm1hdCBvZiBbXCJodG1sXCIsIFwicGRmXCJdKSB7XG4gICAgICAgICAgc3RhdHVzIHw9IGF3YWl0IHRoaXMuZG93bmxvYWQodGV4dGVzRGlyLCBkaXZpc2lvbk9yRG9jdW1lbnQsIGZvcm1hdClcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdHVzICYmICF0aGlzLm9wdGlvbnMuc2lsZW50KSBjb25zb2xlLmxvZyhcIi0tLVwiKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghKFwiZHJ5LXJ1blwiIGluIHRoaXMub3B0aW9ucykpIHtcbiAgICAgIGF3YWl0IHRoaXMuY29tbWl0QW5kUHVzaCh0ZXh0ZXNEaXIpXG4gICAgfVxuXG4gICAgcmV0dXJuIDBcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBtYWluKGFyZ3Y6IGFueSk6IFByb21pc2U8bnVtYmVyPiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBwYXJzZUFyZ3MoYXJndilcbiAgaWYgKG9wdGlvbnMgPT09IG51bGwpIHJldHVybiAxXG4gIGNvbnN0IHJldHJpZXZlID0gbmV3IFJldHJpZXZlKG9wdGlvbnMpXG4gIHJldHVybiByZXRyaWV2ZS5yZXRyaWV2ZURvY3VtZW50cygpXG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKHByb2Nlc3MuYXJndlsxXS5lbmRzV2l0aChcInJldHJpZXZlX2RvY3VtZW50cy50c1wiKSlcbiAgbWFpbihwcm9jZXNzLmFyZ3YpXG4gICAgLnRoZW4oKHN0YXR1cykgPT4ge1xuICAgICAgcHJvY2Vzcy5leGl0KHN0YXR1cylcbiAgICB9KVxuICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXG4gICAgICBwcm9jZXNzLmV4aXQoMSlcbiAgICB9KVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUVBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7OytDQVBBLG9KOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBSUEsS0FBSyxHQUFHQyxPQUFPLENBQUMsWUFBRCxDQUFuQjs7QUFNQSxTQUFTQyxTQUFULENBQW1CQyxJQUFuQixFQUF3QztFQUN0QyxJQUFNQyxrQkFBa0IsR0FBRyxDQUN6QjtJQUNFQyxLQUFLLEVBQUUsR0FEVDtJQUVFQyxJQUFJLEVBQUUsa0JBRlI7SUFHRUMsSUFBSSxFQUFFLFFBSFI7SUFJRUMsSUFBSSxFQUFFQztFQUpSLENBRHlCLEVBT3pCO0lBQ0VILElBQUksRUFBRSxTQURSO0lBRUVDLElBQUksRUFBRSxTQUZSO0lBR0VDLElBQUksRUFBRUM7RUFIUixDQVB5QixFQVl6QjtJQUNFSCxJQUFJLEVBQUUsd0JBRFI7SUFFRUMsSUFBSSxFQUFFLGNBRlI7SUFHRUMsSUFBSSxFQUFFQztFQUhSLENBWnlCLEVBaUJ6QjtJQUNFSCxJQUFJLEVBQUUscUJBRFI7SUFFRUMsSUFBSSxFQUFFLE9BRlI7SUFHRUMsSUFBSSxFQUFFQztFQUhSLENBakJ5QixFQXNCekI7SUFDRUosS0FBSyxFQUFFLEdBRFQ7SUFFRUssWUFBWSxFQUFFLElBRmhCO0lBR0VILElBQUksRUFBRSxhQUhSO0lBSUVDLElBQUksRUFB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
@@ -289,4 +289,4 @@ if (process.argv[1].endsWith("retrieve_documents.ts")) main(process.argv).then(s
289
289
  console.error(error);
290
290
  process.exit(1);
291
291
  });
292
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL3JldHJpZXZlX2RvY3VtZW50cy50cyJdLCJuYW1lcyI6WyJjb21tYW5kTGluZUFyZ3MiLCJjb21tYW5kTGluZVVzYWdlIiwiZ2l0IiwiZnMiLCJmZXRjaCIsInJlcXVpcmUiLCJwYXRoIiwibG9hZCIsImdldEZpbGVzIiwiRG9jdW1lbnRVcmxGb3JtYXQiLCJ1cmxGcm9tRG9jdW1lbnQiLCJwYXJzZUFyZ3MiLCJhcmd2Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiYWxpYXMiLCJoZWxwIiwibmFtZSIsInR5cGUiLCJCb29sZWFuIiwiZGVmYXVsdFZhbHVlIiwiU3RyaW5nIiwiZGVmYXVsdE9wdGlvbiIsIm11bHRpcGxlIiwic2VjdGlvbnMiLCJoZWFkZXIiLCJjb250ZW50Iiwib3B0aW9uTGlzdCIsIm9wdGlvbnMiLCJ1c2FnZSIsImNvbnNvbGUiLCJ3YXJuIiwiUmV0cmlldmUiLCJjb25zdHJ1Y3RvciIsImdldERpdmlzaW9ucyIsImRpdmlzaW9uIiwiZGl2aXNpb25zIiwidW5kZWZpbmVkIiwiZCIsImNvbmNhdCIsImdldERpdmlzaW9uc09yRG9jdW1lbnQiLCJkb2N1bWVudCIsIm1hcCIsImNvbW1pdEFuZFB1c2giLCJyZXBvc2l0b3J5RGlyIiwiY29tbWl0IiwicmVtb3RlIiwicnVuIiwiZ2V0VXJscyIsImRpdmlzaW9uT3JEb2N1bWVudCIsImZvcm1hdCIsImV4dCIsInVybHMiLCJ1aWQiLCJwdXNoIiwiUmF3SHRtbCIsIkh0bWwiLCJQZGYiLCJzYW5pdHlDaGVja0Zvcm1hdCIsInBhZ2UiLCJsZW5ndGgiLCJNYXRoIiwibWluIiwiaGVhZCIsInNsaWNlIiwidG9TdHJpbmciLCJzdGFydHNXaXRoIiwiQnVmZmVyIiwiZnJvbSIsImVuY29kZVVSSUNvbXBvbmVudCIsImluY2x1ZGVzIiwibmVlZHNEb3dubG9hZCIsImZpbGVQYXRoIiwiZXhpc3RzU3luYyIsImlzTm90RW1wdHkiLCJzdGF0U3luYyIsInNpemUiLCJyZXRyeUZhaWxlZCIsInZlcmJvc2UiLCJ1cmxQYXRoIiwidXJsIiwicmVhZEZpbGVTeW5jIiwibG9nIiwiZ2V0IiwicmVzcG9uc2UiLCJidWZmZXIiLCJzdGF0dXMiLCJvayIsImVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsImNvZGUiLCJtZXNzYWdlIiwic3RhdHVzVGV4dCIsIndyaXRlRmlsZVN5bmMiLCJ1cmxGcm9tVWlkIiwiZG93bmxvYWQiLCJ0ZXh0ZXNEaXIiLCJzdWNjZXNzIiwiaW5mbyIsInVubGlua1N5bmMiLCJzaWxlbnQiLCJyZXRyaWV2ZURvY3VtZW50cyIsImdpdERpciIsInRleHRlcyIsImpvaW4iLCJsZWdpc2xhdHVyZSIsImVuc3VyZURpclN5bmMiLCJmaWxlbmFtZSIsImRhdGEiLCJ0ZXN0IiwibWFpbiIsInJldHJpZXZlIiwicHJvY2VzcyIsImVuZHNXaXRoIiwidGhlbiIsImV4aXQiLCJjYXRjaCJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPQSxlQUFQLE1BQTRCLG1CQUE1QjtBQUNBLE9BQU9DLGdCQUFQLE1BQTZCLG9CQUE3QjtPQUNPLEtBQUtDLEc7QUFDWixPQUFPQyxFQUFQLE1BQWUsVUFBZjs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLE9BQU8sQ0FBQyxZQUFELENBQW5COztBQUNBLE9BQU9DLElBQVAsTUFBaUIsTUFBakI7U0FFU0MsSSxFQUFNQyxRO1NBQ05DLGlCLEVBQW1CQyxlOztBQUU1QixTQUFTQyxTQUFULENBQW1CQyxJQUFuQixFQUF3QztBQUN0QyxRQUFNQyxrQkFBa0IsR0FBRyxDQUN6QjtBQUNFQyxJQUFBQSxLQUFLLEVBQUUsR0FEVDtBQUVFQyxJQUFBQSxJQUFJLEVBQUUsa0JBRlI7QUFHRUMsSUFBQUEsSUFBSSxFQUFFLFFBSFI7QUFJRUMsSUFBQUEsSUFBSSxFQUFFQztBQUpSLEdBRHlCLEVBT3pCO0FBQ0VILElBQUFBLElBQUksRUFBRSxTQURSO0FBRUVDLElBQUFBLElBQUksRUFBRSxTQUZSO0FBR0VDLElBQUFBLElBQUksRUFBRUM7QUFIUixHQVB5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UDtBQUNEO0FBRUQ7OztBQUNBLElBQUlXLE9BQU8sQ0FBQ3BHLElBQVIsQ0FBYSxDQUFiLEVBQWdCcUcsUUFBaEIsQ0FBeUIsdUJBQXpCLENBQUosRUFDRUgsSUFBSSxDQUFDRSxPQUFPLENBQUNwRyxJQUFULENBQUosQ0FDR3NHLElBREgsQ0FDUzdCLE1BQUQsSUFBWTtBQUNoQjJCLEVBQUFBLE9BQU8sQ0FBQ0csSUFBUixDQUFhOUIsTUFBYjtBQUNELENBSEgsRUFJRytCLEtBSkgsQ0FJVTdCLEtBQUQsSUFBVztBQUNoQjFELEVBQUFBLE9BQU8sQ0FBQzBELEtBQVIsQ0FBY0EsS0FBZDtBQUNBeUIsRUFBQUEsT0FBTyxDQUFDRyxJQUFSLENBQWEsQ0FBYjtBQUNELENBUEgiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgY29tbWFuZExpbmVVc2FnZSBmcm9tIFwiY29tbWFuZC1saW5lLXVzYWdlXCJcbmltcG9ydCAqIGFzIGdpdCBmcm9tIFwiLi4vLi4vc3JjL2dpdFwiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmxldCBmZXRjaCA9IHJlcXVpcmUoXCJub2RlLWZldGNoXCIpXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbmltcG9ydCB7IGxvYWQsIGdldEZpbGVzIH0gZnJvbSBcIi4uL2ZpbGVfc3lzdGVtc1wiXG5pbXBvcnQgeyBEb2N1bWVudFVybEZvcm1hdCwgdXJsRnJvbURvY3VtZW50IH0gZnJvbSBcIi4uL3VybHNcIlxuXG5mdW5jdGlvbiBwYXJzZUFyZ3MoYXJndjogc3RyaW5nW10pOiBhbnkge1xuICBjb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gICAge1xuICAgICAgYWxpYXM6IFwiY1wiLFxuICAgICAgaGVscDogXCJjb21taXQgZG9jdW1lbnRzXCIsXG4gICAgICBuYW1lOiBcImNvbW1pdFwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGhlbHA6IFwiZHJ5IHJ1blwiLFxuICAgICAgbmFtZTogXCJkcnktcnVuXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgaGVscDogXCJyZXRyeSBmYWlsZWQgZG9jdW1lbnRzXCIsXG4gICAgICBuYW1lOiBcInJldHJ5LWZhaWxlZFwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGhlbHA6IFwicmV0cnkgYWxsIGRvY3VtZW50c1wiLFxuICAgICAgbmFtZTogXCJyZXRyeVwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGFsaWFzOiBcImxcIixcbiAgICAgIGRlZmF1bHRWYWx1ZTogXCIxNVwiLFxuICAgICAgbmFtZTogXCJsZWdpc2xhdHVyZVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwiclwiLFxuICAgICAgaGVscDogXCJwdXNoIGNvbW1pdCB0byBnaXZlbiByZW1vdGVcIixcbiAgICAgIG5hbWU6IFwicmVtb3RlXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJzXCIsXG4gICAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgICAgbmFtZTogXCJzaWxlbnRcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBoZWxwOiBcInRleHRlcyBkaXJcIixcbiAgICAgIG5hbWU6IFwidGV4dGVzXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJ2XCIsXG4gICAgICBoZWxwOiBcInZlcmJvc2UgbG9nc1wiLFxuICAgICAgbmFtZTogXCJ2ZXJib3NlXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVmYXVsdE9wdGlvbjogdHJ1ZSxcbiAgICAgIGhlbHA6IFwiZmlsZXMgb3IgZ2xvYnMgdG8gZG9jdW1lbnRzXCIsXG4gICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgIG5hbWU6IFwiZGF0YVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgc2VjdGlvbnMgPSBbXG4gICAge1xuICAgICAgaGVhZGVyOiBcIlJldHJpZXZlIGRvY3VtZW50c1wiLFxuICAgICAgY29udGVudDogXCJSZXRyaWV2ZSBkb2N1bWVudHNcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGhlYWRlcjogXCJPcHRpb25zXCIsXG4gICAgICBvcHRpb25MaXN0OiBvcHRpb25zRGVmaW5pdGlvbnMsXG4gICAgfSxcbiAgXVxuICBjb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucywge1xuICAgIGFyZ3Y6IGFyZ3YsXG4gIH0pXG5cbiAgaWYgKFwiaGVscFwiIGluIG9wdGlvbnMpIHtcbiAgICBjb25zdCB1c2FnZSA9IGNvbW1hbmRMaW5lVXNhZ2Uoc2VjdGlvbnMpXG4gICAgY29uc29sZS53YXJuKHVzYWdlKVxuICAgIHJldHVybiBudWxsXG4gIH1cbiAgcmV0dXJuIG9wdGlvbnNcbn1cblxuY2xhc3MgUmV0cmlldmUge1xuICBvcHRpb25zOiBhbnlcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBhbnkpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zXG4gIH1cblxuICBnZXREaXZpc2lvbnMoZGl2aXNpb246IGFueSkge1xuICAgIGxldCBkaXZpc2lvbnMgPSBbZGl2aXNpb25dXG4gICAgaWYgKGRpdmlzaW9uLmRpdmlzaW9ucyAhPSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgZCBvZiBkaXZpc2lvbi5kaXZpc2lvbnMpXG4gICAgICAgIGRpdmlzaW9ucyA9IGRpdmlzaW9ucy5jb25jYXQodGhpcy5nZXREaXZpc2lvbnMoZCkpXG4gICAgfVxuICAgIHJldHVybiBkaXZpc2lvbnNcbiAgfVxuXG4gIGdldERpdmlzaW9uc09yRG9jdW1lbnQoZG9jdW1lbnQ6IGFueSkge1xuICAgIGlmIChkb2N1bWVudC5kaXZpc2lvbnMgIT0gdW5kZWZpbmVkKVxuICAgICAgcmV0dXJuIFtdLmNvbmNhdChcbiAgICAgICAgLi4uZG9jdW1lbnQuZGl2aXNpb25zLm1hcCgoZDogYW55KSA9PiB0aGlzLmdldERpdmlzaW9ucyhkKSksXG4gICAgICApXG4gICAgZWxzZSByZXR1cm4gW2RvY3VtZW50XVxuICB9XG5cbiAgYXN5bmMgY29tbWl0QW5kUHVzaChyZXBvc2l0b3J5RGlyOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5vcHRpb25zLmNvbW1pdCA9PSB1bmRlZmluZWQpIHJldHVyblxuICAgIGdpdC5jb21taXQocmVwb3NpdG9yeURpciwgXCJOb3V2ZWxsZSBtb2lzc29uXCIpXG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnJlbW90ZSA9PSB1bmRlZmluZWQpIHJldHVyblxuICAgIGdpdC5ydW4ocmVwb3NpdG9yeURpciwgYHB1c2ggJHt0aGlzLm9wdGlvbnMucmVtb3RlfSBIRUFEOm1hc3RlcmApXG4gIH1cblxuICBnZXRVcmxzKGRpdmlzaW9uT3JEb2N1bWVudDogYW55LCBmb3JtYXQ6IHN0cmluZykge1xuICAgIGNvbnN0IGV4dCA9IGZvcm1hdCA9PSBcImh0bWxcIiA/IFwicmF3XCIgOiBcInBkZlwiXG4gICAgbGV0IHVybHM6IGFueSA9IFtcbiAgICAgIGBodHRwOi8vd3d3LmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvZHluL2RvY3MvJHtkaXZpc2lvbk9yRG9jdW1lbnQudWlkfS4ke2V4dH1gLFxuICAgIF1cbiAgICBpZiAoZm9ybWF0ID09IFwiaHRtbFwiKSB7XG4gICAgICB1cmxzLnB1c2godXJsRnJvbURvY3VtZW50KGRpdmlzaW9uT3JEb2N1bWVudCwgRG9jdW1lbnRVcmxGb3JtYXQuUmF3SHRtbCkpXG4gICAgICB1cmxzLnB1c2godXJsRnJvbURvY3VtZW50KGRpdmlzaW9uT3JEb2N1bWVudCwgRG9jdW1lbnRVcmxGb3JtYXQuSHRtbCkpXG4gICAgfSBlbHNlIGlmIChmb3JtYXQgPT0gXCJwZGZcIikge1xuICAgICAgdXJscy5wdXNoKHVybEZyb21Eb2N1bWVudChkaXZpc2lvbk9yRG9jdW1lbnQsIERvY3VtZW50VXJsRm9ybWF0LlBkZikpXG4gICAgfVxuICAgIHJldHVybiB1cmxzXG4gIH1cblxuICBzdGF0aWMgc2FuaXR5Q2hlY2tGb3JtYXQocGFnZTogQnVmZmVyLCBmb3JtYXQ6IHN0cmluZyk6IFtCdWZmZXIsIHN0cmluZ10ge1xuICAgIGlmIChmb3JtYXQgPT0gXCJwZGZcIikge1xuICAgICAgY29uc3QgbGVuZ3RoID0gTWF0aC5taW4ocGFnZS5sZW5ndGgsIDQpXG4gICAgICBjb25zdCBoZWFkID0gcGFnZS5zbGljZSgwLCBsZW5ndGgpLnRvU3RyaW5nKClcbiAgICAgIGlmICghaGVhZC5zdGFydHNXaXRoKFwiJVBERlwiKSlcbiAgICAgICAgcmV0dXJuIFtCdWZmZXIuZnJvbShcIlwiKSwgYGJhZCBwZGYgJHtlbmNvZGVVUklDb21wb25lbnQoaGVhZCl9Li4uYF1cbiAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PSBcImh0bWxcIikge1xuICAgICAgY29uc3QgbGVuZ3RoID0gTWF0aC5taW4ocGFnZS5sZW5ndGgsIDUwKVxuICAgICAgY29uc3QgaGVhZCA9IHBhZ2Uuc2xpY2UoMCwgbGVuZ3RoKS50b1N0cmluZygpXG4gICAgICBpZiAoIWhlYWQuaW5jbHVkZXMoXCJET0NUWVBFXCIpICYmICFoZWFkLmluY2x1ZGVzKFwiPD94bWxcIikpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBCdWZmZXIuZnJvbShcIlwiKSxcbiAgICAgICAgICBgYmFkIGh0bWwgJHtlbmNvZGVVUklDb21wb25lbnQoaGVhZC5zbGljZSgwLCA0KSl9Li4uYCxcbiAgICAgICAgXVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gW3BhZ2UsIFwiT0tcIl1cbiAgfVxuXG4gIGFzeW5jIG5lZWRzRG93bmxvYWQoZmlsZVBhdGg6IHN0cmluZywgdWlkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAoZnMuZXhpc3RzU3luYyhmaWxlUGF0aCkpIHtcbiAgICAgIGNvbnN0IGlzTm90RW1wdHkgPSBmcy5zdGF0U3luYyhmaWxlUGF0aCkuc2l6ZSA+IDBcbiAgICAgIGNvbnN0IHJldHJ5RmFpbGVkID0gXCJyZXRyeS1mYWlsZWRcIiBpbiB0aGlzLm9wdGlvbnNcbiAgICAgIGlmICghcmV0cnlGYWlsZWQgfHwgaXNOb3RFbXB0eSkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBpZiAoaXNOb3RFbXB0eSkge1xuICAgICAgICAgICAgY29uc3QgdXJsUGF0aCA9IGAke2ZpbGVQYXRofS51cmxgXG4gICAgICAgICAgICBsZXQgdXJsXG4gICAgICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh1cmxQYXRoKSlcbiAgICAgICAgICAgICAgdXJsID0gZnMucmVhZEZpbGVTeW5jKHVybFBhdGgpLnRvU3RyaW5nKClcbiAgICAgICAgICAgIGVsc2UgdXJsID0gXCI8dW5rbm93biB1cmw+XCJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke3VpZH06IENhY2hlZCBPSyAke2ZpbGVQYXRofSBmcm9tICR7dXJsfWApXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke3VpZH06IENhY2hlZCBGQUlMICR7ZmlsZVBhdGh9YClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBhc3luYyBnZXQoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgZmlsZVBhdGg6IHN0cmluZyxcbiAgICBmb3JtYXQ6IHN0cmluZyxcbiAgICB1aWQ6IHN0cmluZyxcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBpZiAodGhpcy5vcHRpb25zLnZlcmJvc2UpIGNvbnNvbGUubG9nKGAke3VpZH06IGZldGNoKCR7dXJsfSlgKVxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsKVxuICAgIGxldCBwYWdlOiBhbnkgPSBhd2FpdCByZXNwb25zZS5idWZmZXIoKVxuICAgIGxldCBzdGF0dXNcbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICBzdGF0dXMgPSByZXNwb25zZS5zdGF0dXNcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgIT09IDQwNCkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgYEVycm9yIHdoaWxlIGdldHRpbmcgcGFnZSBcIiR7dXJsfVwiICh1aWQ6ICR7dWlkfSk6XFxuXFxuRXJyb3I6XFxuJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgICAgeyBjb2RlOiByZXNwb25zZS5zdGF0dXMsIG1lc3NhZ2U6IHJlc3BvbnNlLnN0YXR1c1RleHQgfSxcbiAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgMixcbiAgICAgICAgICAgICl9YCxcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZzLndyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIFwiXCIpXG4gICAgfSBlbHNlIHtcbiAgICAgIDtbcGFnZSwgc3RhdHVzXSA9IFJldHJpZXZlLnNhbml0eUNoZWNrRm9ybWF0KHBhZ2UsIGZvcm1hdClcbiAgICAgIGZzLndyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIHBhZ2UpXG4gICAgfVxuICAgIHJldHVybiBzdGF0dXNcbiAgfVxuXG4gIHN0YXRpYyB1cmxGcm9tVWlkKHVpZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB1cmwgPVxuICAgICAgXCJodHRwczovL2dpdC5lbi1yb290Lm9yZy90cmljb3RldXNlcy9kYXRhLnRyaWNvdGV1c2VzLmZyL0Rvc3NpZXJzX0xlZ2lzbGF0aWZzX1hWLy0vdHJlZS9tYXN0ZXIvZG9jdW1lbnRzXCJcbiAgICByZXR1cm4gYFske3VpZH1dKCR7dXJsfS91aWQvJHt1aWR9Lmpzb24pYFxuICB9XG5cbiAgYXN5bmMgZG93bmxvYWQoXG4gICAgdGV4dGVzRGlyOiBzdHJpbmcsXG4gICAgZGl2aXNpb25PckRvY3VtZW50OiBhbnksXG4gICAgZm9ybWF0OiBzdHJpbmcsXG4gICk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3QgdWlkID0gZGl2aXNpb25PckRvY3VtZW50LnVpZFxuICAgIGNvbnN0IGZpbGVQYXRoID0gYCR7dGV4dGVzRGlyfS91aWQvJHt1aWR9LiR7Zm9ybWF0fWBcbiAgICBpZiAoIShhd2FpdCB0aGlzLm5lZWRzRG93bmxvYWQoZmlsZVBhdGgsIHVpZCkpKSByZXR1cm4gMFxuICAgIGlmICh0aGlzLm9wdGlvbnMudmVyYm9zZSkgY29uc29sZS5sb2coYCR7dWlkfTogQ2hlY2tpbmcgJHtmaWxlUGF0aH1gKVxuICAgIGxldCBzdWNjZXNzID0gZmFsc2VcbiAgICBsZXQgaW5mbyA9IFwiXCJcbiAgICBsZXQgdXJsXG5cbiAgICBmb3IgKHVybCBvZiB0aGlzLmdldFVybHMoZGl2aXNpb25PckRvY3VtZW50LCBmb3JtYXQpKSB7XG4gICAgICBpZiAoXCJkcnktcnVuXCIgaW4gdGhpcy5vcHRpb25zKSB7XG4gICAgICAgIGluZm8gKz0gYCAgKiAke3VybH1cXG5gXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbmZvICs9IGAgICogJHt1cmx9IGBcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdGhpcy5nZXQodXJsLCBmaWxlUGF0aCwgZm9ybWF0LCB1aWQpXG5cbiAgICAgIGluZm8gKz0gYCR7c3RhdHVzfVxcbmBcbiAgICAgIGlmIChzdGF0dXMgPT0gXCJPS1wiKSB7XG4gICAgICAgIHN1Y2Nlc3MgPSB0cnVlXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHVybFBhdGggPSBgJHtmaWxlUGF0aH0udXJsYFxuICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKHVybFBhdGgsIHVybClcbiAgICB9IGVsc2UgaWYgKGZzLmV4aXN0c1N5bmModXJsUGF0aCkpIHtcbiAgICAgIGZzLnVubGlua1N5bmModXJsUGF0aClcbiAgICB9XG4gICAgaWYgKGluZm8gIT0gXCJcIiAmJiAhdGhpcy5vcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGAqICR7UmV0cmlldmUudXJsRnJvbVVpZCh1aWQpfTogUmV0cmlldmluZyAke2ZpbGVQYXRofVxcbiR7aW5mby5zbGljZShcbiAgICAgICAgICAwLFxuICAgICAgICAgIC0xLFxuICAgICAgICApfWAsXG4gICAgICApXG4gICAgICByZXR1cm4gMVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gMFxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHJldHJpZXZlRG9jdW1lbnRzKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3QgZ2l0RGlyID0gYCR7dGhpcy5vcHRpb25zLnRleHRlc30vLmdpdGBcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMoZ2l0RGlyKSkge1xuICAgICAgY29uc29sZS5lcnJvcihgJHtnaXREaXJ9IGlzIGV4cGVjdGVkIHRvIGV4aXN0IGJ1dCBkb2VzIG5vdGApXG4gICAgICByZXR1cm4gMVxuICAgIH1cblxuICAgIGNvbnN0IHRleHRlc0RpciA9IHBhdGguam9pbih0aGlzLm9wdGlvbnMudGV4dGVzLCB0aGlzLm9wdGlvbnMubGVnaXNsYXR1cmUpXG4gICAgZnMuZW5zdXJlRGlyU3luYyhgJHt0ZXh0ZXNEaXJ9L3VpZGApXG5cbiAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGdldEZpbGVzKHRoaXMub3B0aW9ucy5kYXRhKSkge1xuICAgICAgY29uc3QgZG9jdW1lbnQgPSBsb2FkKGZpbGVuYW1lKVxuICAgICAgaWYgKC9eLi4uLlNOLy50ZXN0KGRvY3VtZW50LnVpZCkgfHwgL15ERUNMLy50ZXN0KGRvY3VtZW50LnVpZCkpIGNvbnRpbnVlXG4gICAgICBmb3IgKGNvbnN0IGRpdmlzaW9uT3JEb2N1bWVudCBvZiB0aGlzLmdldERpdmlzaW9uc09yRG9jdW1lbnQoZG9jdW1lbnQpKSB7XG4gICAgICAgIGlmICgvLUNPTVBBJC8udGVzdChkaXZpc2lvbk9yRG9jdW1lbnQudWlkKSkgY29udGludWVcbiAgICAgICAgbGV0IHN0YXR1cyA9IDBcbiAgICAgICAgZm9yIChjb25zdCBmb3JtYXQgb2YgW1wiaHRtbFwiLCBcInBkZlwiXSkge1xuICAgICAgICAgIHN0YXR1cyB8PSBhd2FpdCB0aGlzLmRvd25sb2FkKHRleHRlc0RpciwgZGl2aXNpb25PckRvY3VtZW50LCBmb3JtYXQpXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXR1cyAmJiAhdGhpcy5vcHRpb25zLnNpbGVudCkgY29uc29sZS5sb2coXCItLS1cIilcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIShcImRyeS1ydW5cIiBpbiB0aGlzLm9wdGlvbnMpKSB7XG4gICAgICBhd2FpdCB0aGlzLmNvbW1pdEFuZFB1c2godGV4dGVzRGlyKVxuICAgIH1cblxuICAgIHJldHVybiAwXG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gbWFpbihhcmd2OiBhbnkpOiBQcm9taXNlPG51bWJlcj4ge1xuICBjb25zdCBvcHRpb25zID0gcGFyc2VBcmdzKGFyZ3YpXG4gIGlmIChvcHRpb25zID09PSBudWxsKSByZXR1cm4gMVxuICBjb25zdCByZXRyaWV2ZSA9IG5ldyBSZXRyaWV2ZShvcHRpb25zKVxuICByZXR1cm4gcmV0cmlldmUucmV0cmlldmVEb2N1bWVudHMoKVxufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbmlmIChwcm9jZXNzLmFyZ3ZbMV0uZW5kc1dpdGgoXCJyZXRyaWV2ZV9kb2N1bWVudHMudHNcIikpXG4gIG1haW4ocHJvY2Vzcy5hcmd2KVxuICAgIC50aGVuKChzdGF0dXMpID0+IHtcbiAgICAgIHByb2Nlc3MuZXhpdChzdGF0dXMpXG4gICAgfSlcbiAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKVxuICAgICAgcHJvY2Vzcy5leGl0KDEpXG4gICAgfSlcbiJdfQ==
292
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kTGluZUFyZ3MiLCJjb21tYW5kTGluZVVzYWdlIiwiZ2l0IiwiZnMiLCJmZXRjaCIsInJlcXVpcmUiLCJwYXRoIiwibG9hZCIsImdldEZpbGVzIiwiRG9jdW1lbnRVcmxGb3JtYXQiLCJ1cmxGcm9tRG9jdW1lbnQiLCJwYXJzZUFyZ3MiLCJhcmd2Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiYWxpYXMiLCJoZWxwIiwibmFtZSIsInR5cGUiLCJCb29sZWFuIiwiZGVmYXVsdFZhbHVlIiwiU3RyaW5nIiwiZGVmYXVsdE9wdGlvbiIsIm11bHRpcGxlIiwic2VjdGlvbnMiLCJoZWFkZXIiLCJjb250ZW50Iiwib3B0aW9uTGlzdCIsIm9wdGlvbnMiLCJ1c2FnZSIsImNvbnNvbGUiLCJ3YXJuIiwiUmV0cmlldmUiLCJjb25zdHJ1Y3RvciIsImdldERpdmlzaW9ucyIsImRpdmlzaW9uIiwiZGl2aXNpb25zIiwidW5kZWZpbmVkIiwiZCIsImNvbmNhdCIsImdldERpdmlzaW9uc09yRG9jdW1lbnQiLCJkb2N1bWVudCIsIm1hcCIsImNvbW1pdEFuZFB1c2giLCJyZXBvc2l0b3J5RGlyIiwiY29tbWl0IiwicmVtb3RlIiwicnVuIiwiZ2V0VXJscyIsImRpdmlzaW9uT3JEb2N1bWVudCIsImZvcm1hdCIsImV4dCIsInVybHMiLCJ1aWQiLCJwdXNoIiwiUmF3SHRtbCIsIkh0bWwiLCJQZGYiLCJzYW5pdHlDaGVja0Zvcm1hdCIsInBhZ2UiLCJsZW5ndGgiLCJNYXRoIiwibWluIiwiaGVhZCIsInNsaWNlIiwidG9TdHJpbmciLCJzdGFydHNXaXRoIiwiQnVmZmVyIiwiZnJvbSIsImVuY29kZVVSSUNvbXBvbmVudCIsImluY2x1ZGVzIiwibmVlZHNEb3dubG9hZCIsImZpbGVQYXRoIiwiZXhpc3RzU3luYyIsImlzTm90RW1wdHkiLCJzdGF0U3luYyIsInNpemUiLCJyZXRyeUZhaWxlZCIsInZlcmJvc2UiLCJ1cmxQYXRoIiwidXJsIiwicmVhZEZpbGVTeW5jIiwibG9nIiwiZ2V0IiwicmVzcG9uc2UiLCJidWZmZXIiLCJzdGF0dXMiLCJvayIsImVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsImNvZGUiLCJtZXNzYWdlIiwic3RhdHVzVGV4dCIsIndyaXRlRmlsZVN5bmMiLCJ1cmxGcm9tVWlkIiwiZG93bmxvYWQiLCJ0ZXh0ZXNEaXIiLCJzdWNjZXNzIiwiaW5mbyIsInVubGlua1N5bmMiLCJzaWxlbnQiLCJyZXRyaWV2ZURvY3VtZW50cyIsImdpdERpciIsInRleHRlcyIsImpvaW4iLCJsZWdpc2xhdHVyZSIsImVuc3VyZURpclN5bmMiLCJmaWxlbmFtZSIsImRhdGEiLCJ0ZXN0IiwibWFpbiIsInJldHJpZXZlIiwicHJvY2VzcyIsImVuZHNXaXRoIiwidGhlbiIsImV4aXQiLCJjYXRjaCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL3JldHJpZXZlX2RvY3VtZW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgY29tbWFuZExpbmVVc2FnZSBmcm9tIFwiY29tbWFuZC1saW5lLXVzYWdlXCJcbmltcG9ydCAqIGFzIGdpdCBmcm9tIFwiLi4vLi4vc3JjL2dpdFwiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmxldCBmZXRjaCA9IHJlcXVpcmUoXCJub2RlLWZldGNoXCIpXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbmltcG9ydCB7IGxvYWQsIGdldEZpbGVzIH0gZnJvbSBcIi4uL2ZpbGVfc3lzdGVtc1wiXG5pbXBvcnQgeyBEb2N1bWVudFVybEZvcm1hdCwgdXJsRnJvbURvY3VtZW50IH0gZnJvbSBcIi4uL3VybHNcIlxuXG5mdW5jdGlvbiBwYXJzZUFyZ3MoYXJndjogc3RyaW5nW10pOiBhbnkge1xuICBjb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gICAge1xuICAgICAgYWxpYXM6IFwiY1wiLFxuICAgICAgaGVscDogXCJjb21taXQgZG9jdW1lbnRzXCIsXG4gICAgICBuYW1lOiBcImNvbW1pdFwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGhlbHA6IFwiZHJ5IHJ1blwiLFxuICAgICAgbmFtZTogXCJkcnktcnVuXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgaGVscDogXCJyZXRyeSBmYWlsZWQgZG9jdW1lbnRzXCIsXG4gICAgICBuYW1lOiBcInJldHJ5LWZhaWxlZFwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGhlbHA6IFwicmV0cnkgYWxsIGRvY3VtZW50c1wiLFxuICAgICAgbmFtZTogXCJyZXRyeVwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGFsaWFzOiBcImxcIixcbiAgICAgIGRlZmF1bHRWYWx1ZTogXCIxNVwiLFxuICAgICAgbmFtZTogXCJsZWdpc2xhdHVyZVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwiclwiLFxuICAgICAgaGVscDogXCJwdXNoIGNvbW1pdCB0byBnaXZlbiByZW1vdGVcIixcbiAgICAgIG5hbWU6IFwicmVtb3RlXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJzXCIsXG4gICAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgICAgbmFtZTogXCJzaWxlbnRcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBoZWxwOiBcInRleHRlcyBkaXJcIixcbiAgICAgIG5hbWU6IFwidGV4dGVzXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJ2XCIsXG4gICAgICBoZWxwOiBcInZlcmJvc2UgbG9nc1wiLFxuICAgICAgbmFtZTogXCJ2ZXJib3NlXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVmYXVsdE9wdGlvbjogdHJ1ZSxcbiAgICAgIGhlbHA6IFwiZmlsZXMgb3IgZ2xvYnMgdG8gZG9jdW1lbnRzXCIsXG4gICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgIG5hbWU6IFwiZGF0YVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgc2VjdGlvbnMgPSBbXG4gICAge1xuICAgICAgaGVhZGVyOiBcIlJldHJpZXZlIGRvY3VtZW50c1wiLFxuICAgICAgY29udGVudDogXCJSZXRyaWV2ZSBkb2N1bWVudHNcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGhlYWRlcjogXCJPcHRpb25zXCIsXG4gICAgICBvcHRpb25MaXN0OiBvcHRpb25zRGVmaW5pdGlvbnMsXG4gICAgfSxcbiAgXVxuICBjb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucywge1xuICAgIGFyZ3Y6IGFyZ3YsXG4gIH0pXG5cbiAgaWYgKFwiaGVscFwiIGluIG9wdGlvbnMpIHtcbiAgICBjb25zdCB1c2FnZSA9IGNvbW1hbmRMaW5lVXNhZ2Uoc2VjdGlvbnMpXG4gICAgY29uc29sZS53YXJuKHVzYWdlKVxuICAgIHJldHVybiBudWxsXG4gIH1cbiAgcmV0dXJuIG9wdGlvbnNcbn1cblxuY2xhc3MgUmV0cmlldmUge1xuICBvcHRpb25zOiBhbnlcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBhbnkpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zXG4gIH1cblxuICBnZXREaXZpc2lvbnMoZGl2aXNpb246IGFueSkge1xuICAgIGxldCBkaXZpc2lvbnMgPSBbZGl2aXNpb25dXG4gICAgaWYgKGRpdmlzaW9uLmRpdmlzaW9ucyAhPSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgZCBvZiBkaXZpc2lvbi5kaXZpc2lvbnMpXG4gICAgICAgIGRpdmlzaW9ucyA9IGRpdmlzaW9ucy5jb25jYXQodGhpcy5nZXREaXZpc2lvbnMoZCkpXG4gICAgfVxuICAgIHJldHVybiBkaXZpc2lvbnNcbiAgfVxuXG4gIGdldERpdmlzaW9uc09yRG9jdW1lbnQoZG9jdW1lbnQ6IGFueSkge1xuICAgIGlmIChkb2N1bWVudC5kaXZpc2lvbnMgIT0gdW5kZWZpbmVkKVxuICAgICAgcmV0dXJuIFtdLmNvbmNhdChcbiAgICAgICAgLi4uZG9jdW1lbnQuZGl2aXNpb25zLm1hcCgoZDogYW55KSA9PiB0aGlzLmdldERpdmlzaW9ucyhkKSksXG4gICAgICApXG4gICAgZWxzZSByZXR1cm4gW2RvY3VtZW50XVxuICB9XG5cbiAgYXN5bmMgY29tbWl0QW5kUHVzaChyZXBvc2l0b3J5RGlyOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5vcHRpb25zLmNvbW1pdCA9PSB1bmRlZmluZWQpIHJldHVyblxuICAgIGdpdC5jb21taXQocmVwb3NpdG9yeURpciwgXCJOb3V2ZWxsZSBtb2lzc29uXCIpXG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnJlbW90ZSA9PSB1bmRlZmluZWQpIHJldHVyblxuICAgIGdpdC5ydW4ocmVwb3NpdG9yeURpciwgYHB1c2ggJHt0aGlzLm9wdGlvbnMucmVtb3RlfSBIRUFEOm1hc3RlcmApXG4gIH1cblxuICBnZXRVcmxzKGRpdmlzaW9uT3JEb2N1bWVudDogYW55LCBmb3JtYXQ6IHN0cmluZykge1xuICAgIGNvbnN0IGV4dCA9IGZvcm1hdCA9PSBcImh0bWxcIiA/IFwicmF3XCIgOiBcInBkZlwiXG4gICAgbGV0IHVybHM6IGFueSA9IFtcbiAgICAgIGBodHRwOi8vd3d3LmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvZHluL2RvY3MvJHtkaXZpc2lvbk9yRG9jdW1lbnQudWlkfS4ke2V4dH1gLFxuICAgIF1cbiAgICBpZiAoZm9ybWF0ID09IFwiaHRtbFwiKSB7XG4gICAgICB1cmxzLnB1c2godXJsRnJvbURvY3VtZW50KGRpdmlzaW9uT3JEb2N1bWVudCwgRG9jdW1lbnRVcmxGb3JtYXQuUmF3SHRtbCkpXG4gICAgICB1cmxzLnB1c2godXJsRnJvbURvY3VtZW50KGRpdmlzaW9uT3JEb2N1bWVudCwgRG9jdW1lbnRVcmxGb3JtYXQuSHRtbCkpXG4gICAgfSBlbHNlIGlmIChmb3JtYXQgPT0gXCJwZGZcIikge1xuICAgICAgdXJscy5wdXNoKHVybEZyb21Eb2N1bWVudChkaXZpc2lvbk9yRG9jdW1lbnQsIERvY3VtZW50VXJsRm9ybWF0LlBkZikpXG4gICAgfVxuICAgIHJldHVybiB1cmxzXG4gIH1cblxuICBzdGF0aWMgc2FuaXR5Q2hlY2tGb3JtYXQocGFnZTogQnVmZmVyLCBmb3JtYXQ6IHN0cmluZyk6IFtCdWZmZXIsIHN0cmluZ10ge1xuICAgIGlmIChmb3JtYXQgPT0gXCJwZGZcIikge1xuICAgICAgY29uc3QgbGVuZ3RoID0gTWF0aC5taW4ocGFnZS5sZW5ndGgsIDQpXG4gICAgICBjb25zdCBoZWFkID0gcGFnZS5zbGljZSgwLCBsZW5ndGgpLnRvU3RyaW5nKClcbiAgICAgIGlmICghaGVhZC5zdGFydHNXaXRoKFwiJVBERlwiKSlcbiAgICAgICAgcmV0dXJuIFtCdWZmZXIuZnJvbShcIlwiKSwgYGJhZCBwZGYgJHtlbmNvZGVVUklDb21wb25lbnQoaGVhZCl9Li4uYF1cbiAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PSBcImh0bWxcIikge1xuICAgICAgY29uc3QgbGVuZ3RoID0gTWF0aC5taW4ocGFnZS5sZW5ndGgsIDUwKVxuICAgICAgY29uc3QgaGVhZCA9IHBhZ2Uuc2xpY2UoMCwgbGVuZ3RoKS50b1N0cmluZygpXG4gICAgICBpZiAoIWhlYWQuaW5jbHVkZXMoXCJET0NUWVBFXCIpICYmICFoZWFkLmluY2x1ZGVzKFwiPD94bWxcIikpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBCdWZmZXIuZnJvbShcIlwiKSxcbiAgICAgICAgICBgYmFkIGh0bWwgJHtlbmNvZGVVUklDb21wb25lbnQoaGVhZC5zbGljZSgwLCA0KSl9Li4uYCxcbiAgICAgICAgXVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gW3BhZ2UsIFwiT0tcIl1cbiAgfVxuXG4gIGFzeW5jIG5lZWRzRG93bmxvYWQoZmlsZVBhdGg6IHN0cmluZywgdWlkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAoZnMuZXhpc3RzU3luYyhmaWxlUGF0aCkpIHtcbiAgICAgIGNvbnN0IGlzTm90RW1wdHkgPSBmcy5zdGF0U3luYyhmaWxlUGF0aCkuc2l6ZSA+IDBcbiAgICAgIGNvbnN0IHJldHJ5RmFpbGVkID0gXCJyZXRyeS1mYWlsZWRcIiBpbiB0aGlzLm9wdGlvbnNcbiAgICAgIGlmICghcmV0cnlGYWlsZWQgfHwgaXNOb3RFbXB0eSkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBpZiAoaXNOb3RFbXB0eSkge1xuICAgICAgICAgICAgY29uc3QgdXJsUGF0aCA9IGAke2ZpbGVQYXRofS51cmxgXG4gICAgICAgICAgICBsZXQgdXJsXG4gICAgICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh1cmxQYXRoKSlcbiAgICAgICAgICAgICAgdXJsID0gZnMucmVhZEZpbGVTeW5jKHVybFBhdGgpLnRvU3RyaW5nKClcbiAgICAgICAgICAgIGVsc2UgdXJsID0gXCI8dW5rbm93biB1cmw+XCJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke3VpZH06IENhY2hlZCBPSyAke2ZpbGVQYXRofSBmcm9tICR7dXJsfWApXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke3VpZH06IENhY2hlZCBGQUlMICR7ZmlsZVBhdGh9YClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBhc3luYyBnZXQoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgZmlsZVBhdGg6IHN0cmluZyxcbiAgICBmb3JtYXQ6IHN0cmluZyxcbiAgICB1aWQ6IHN0cmluZyxcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBpZiAodGhpcy5vcHRpb25zLnZlcmJvc2UpIGNvbnNvbGUubG9nKGAke3VpZH06IGZldGNoKCR7dXJsfSlgKVxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsKVxuICAgIGxldCBwYWdlOiBhbnkgPSBhd2FpdCByZXNwb25zZS5idWZmZXIoKVxuICAgIGxldCBzdGF0dXNcbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICBzdGF0dXMgPSByZXNwb25zZS5zdGF0dXNcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgIT09IDQwNCkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgYEVycm9yIHdoaWxlIGdldHRpbmcgcGFnZSBcIiR7dXJsfVwiICh1aWQ6ICR7dWlkfSk6XFxuXFxuRXJyb3I6XFxuJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgICAgeyBjb2RlOiByZXNwb25zZS5zdGF0dXMsIG1lc3NhZ2U6IHJlc3BvbnNlLnN0YXR1c1RleHQgfSxcbiAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgMixcbiAgICAgICAgICAgICl9YCxcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZzLndyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIFwiXCIpXG4gICAgfSBlbHNlIHtcbiAgICAgIDtbcGFnZSwgc3RhdHVzXSA9IFJldHJpZXZlLnNhbml0eUNoZWNrRm9ybWF0KHBhZ2UsIGZvcm1hdClcbiAgICAgIGZzLndyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIHBhZ2UpXG4gICAgfVxuICAgIHJldHVybiBzdGF0dXNcbiAgfVxuXG4gIHN0YXRpYyB1cmxGcm9tVWlkKHVpZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB1cmwgPVxuICAgICAgXCJodHRwczovL2dpdC5lbi1yb290Lm9yZy90cmljb3RldXNlcy9kYXRhLnRyaWNvdGV1c2VzLmZyL0Rvc3NpZXJzX0xlZ2lzbGF0aWZzX1hWLy0vdHJlZS9tYXN0ZXIvZG9jdW1lbnRzXCJcbiAgICByZXR1cm4gYFske3VpZH1dKCR7dXJsfS91aWQvJHt1aWR9Lmpzb24pYFxuICB9XG5cbiAgYXN5bmMgZG93bmxvYWQoXG4gICAgdGV4dGVzRGlyOiBzdHJpbmcsXG4gICAgZGl2aXNpb25PckRvY3VtZW50OiBhbnksXG4gICAgZm9ybWF0OiBzdHJpbmcsXG4gICk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3QgdWlkID0gZGl2aXNpb25PckRvY3VtZW50LnVpZFxuICAgIGNvbnN0IGZpbGVQYXRoID0gYCR7dGV4dGVzRGlyfS91aWQvJHt1aWR9LiR7Zm9ybWF0fWBcbiAgICBpZiAoIShhd2FpdCB0aGlzLm5lZWRzRG93bmxvYWQoZmlsZVBhdGgsIHVpZCkpKSByZXR1cm4gMFxuICAgIGlmICh0aGlzLm9wdGlvbnMudmVyYm9zZSkgY29uc29sZS5sb2coYCR7dWlkfTogQ2hlY2tpbmcgJHtmaWxlUGF0aH1gKVxuICAgIGxldCBzdWNjZXNzID0gZmFsc2VcbiAgICBsZXQgaW5mbyA9IFwiXCJcbiAgICBsZXQgdXJsXG5cbiAgICBmb3IgKHVybCBvZiB0aGlzLmdldFVybHMoZGl2aXNpb25PckRvY3VtZW50LCBmb3JtYXQpKSB7XG4gICAgICBpZiAoXCJkcnktcnVuXCIgaW4gdGhpcy5vcHRpb25zKSB7XG4gICAgICAgIGluZm8gKz0gYCAgKiAke3VybH1cXG5gXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbmZvICs9IGAgICogJHt1cmx9IGBcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdGhpcy5nZXQodXJsLCBmaWxlUGF0aCwgZm9ybWF0LCB1aWQpXG5cbiAgICAgIGluZm8gKz0gYCR7c3RhdHVzfVxcbmBcbiAgICAgIGlmIChzdGF0dXMgPT0gXCJPS1wiKSB7XG4gICAgICAgIHN1Y2Nlc3MgPSB0cnVlXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHVybFBhdGggPSBgJHtmaWxlUGF0aH0udXJsYFxuICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKHVybFBhdGgsIHVybClcbiAgICB9IGVsc2UgaWYgKGZzLmV4aXN0c1N5bmModXJsUGF0aCkpIHtcbiAgICAgIGZzLnVubGlua1N5bmModXJsUGF0aClcbiAgICB9XG4gICAgaWYgKGluZm8gIT0gXCJcIiAmJiAhdGhpcy5vcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGAqICR7UmV0cmlldmUudXJsRnJvbVVpZCh1aWQpfTogUmV0cmlldmluZyAke2ZpbGVQYXRofVxcbiR7aW5mby5zbGljZShcbiAgICAgICAgICAwLFxuICAgICAgICAgIC0xLFxuICAgICAgICApfWAsXG4gICAgICApXG4gICAgICByZXR1cm4gMVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gMFxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHJldHJpZXZlRG9jdW1lbnRzKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3QgZ2l0RGlyID0gYCR7dGhpcy5vcHRpb25zLnRleHRlc30vLmdpdGBcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMoZ2l0RGlyKSkge1xuICAgICAgY29uc29sZS5lcnJvcihgJHtnaXREaXJ9IGlzIGV4cGVjdGVkIHRvIGV4aXN0IGJ1dCBkb2VzIG5vdGApXG4gICAgICByZXR1cm4gMVxuICAgIH1cblxuICAgIGNvbnN0IHRleHRlc0RpciA9IHBhdGguam9pbih0aGlzLm9wdGlvbnMudGV4dGVzLCB0aGlzLm9wdGlvbnMubGVnaXNsYXR1cmUpXG4gICAgZnMuZW5zdXJlRGlyU3luYyhgJHt0ZXh0ZXNEaXJ9L3VpZGApXG5cbiAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGdldEZpbGVzKHRoaXMub3B0aW9ucy5kYXRhKSkge1xuICAgICAgY29uc3QgZG9jdW1lbnQgPSBsb2FkKGZpbGVuYW1lKVxuICAgICAgaWYgKC9eLi4uLlNOLy50ZXN0KGRvY3VtZW50LnVpZCkgfHwgL15ERUNMLy50ZXN0KGRvY3VtZW50LnVpZCkpIGNvbnRpbnVlXG4gICAgICBmb3IgKGNvbnN0IGRpdmlzaW9uT3JEb2N1bWVudCBvZiB0aGlzLmdldERpdmlzaW9uc09yRG9jdW1lbnQoZG9jdW1lbnQpKSB7XG4gICAgICAgIGlmICgvLUNPTVBBJC8udGVzdChkaXZpc2lvbk9yRG9jdW1lbnQudWlkKSkgY29udGludWVcbiAgICAgICAgbGV0IHN0YXR1cyA9IDBcbiAgICAgICAgZm9yIChjb25zdCBmb3JtYXQgb2YgW1wiaHRtbFwiLCBcInBkZlwiXSkge1xuICAgICAgICAgIHN0YXR1cyB8PSBhd2FpdCB0aGlzLmRvd25sb2FkKHRleHRlc0RpciwgZGl2aXNpb25PckRvY3VtZW50LCBmb3JtYXQpXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXR1cyAmJiAhdGhpcy5vcHRpb25zLnNpbGVudCkgY29uc29sZS5sb2coXCItLS1cIilcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIShcImRyeS1ydW5cIiBpbiB0aGlzLm9wdGlvbnMpKSB7XG4gICAgICBhd2FpdCB0aGlzLmNvbW1pdEFuZFB1c2godGV4dGVzRGlyKVxuICAgIH1cblxuICAgIHJldHVybiAwXG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gbWFpbihhcmd2OiBhbnkpOiBQcm9taXNlPG51bWJlcj4ge1xuICBjb25zdCBvcHRpb25zID0gcGFyc2VBcmdzKGFyZ3YpXG4gIGlmIChvcHRpb25zID09PSBudWxsKSByZXR1cm4gMVxuICBjb25zdCByZXRyaWV2ZSA9IG5ldyBSZXRyaWV2ZShvcHRpb25zKVxuICByZXR1cm4gcmV0cmlldmUucmV0cmlldmVEb2N1bWVudHMoKVxufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbmlmIChwcm9jZXNzLmFyZ3ZbMV0uZW5kc1dpdGgoXCJyZXRyaWV2ZV9kb2N1bWVudHMudHNcIikpXG4gIG1haW4ocHJvY2Vzcy5hcmd2KVxuICAgIC50aGVuKChzdGF0dXMpID0+IHtcbiAgICAgIHByb2Nlc3MuZXhpdChzdGF0dXMpXG4gICAgfSlcbiAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKVxuICAgICAgcHJvY2Vzcy5leGl0KDEpXG4gICAgfSlcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPQSxlQUFQLE1BQTRCLG1CQUE1QjtBQUNBLE9BQU9DLGdCQUFQLE1BQTZCLG9CQUE3QjtPQUNPLEtBQUtDLEc7QUFDWixPQUFPQyxFQUFQLE1BQWUsVUFBZjs7QUFDQSxJQUFJQyxLQUFLLEdBQUdDLE9BQU8sQ0FBQyxZQUFELENBQW5COztBQUNBLE9BQU9DLElBQVAsTUFBaUIsTUFBakI7U0FFU0MsSSxFQUFNQyxRO1NBQ05DLGlCLEVBQW1CQyxlOztBQUU1QixTQUFTQyxTQUFULENBQW1CQyxJQUFuQixFQUF3QztFQUN0QyxNQUFNQyxrQkFBa0IsR0FBRyxDQUN6QjtJQUNFQyxLQUFLLEVBQUUsR0FEVDtJQUVFQyxJQUFJLEVBQUUsa0JBRlI7SUFHRUMsSUFBSSxFQUFFLFFBSFI7SUFJRUMsSUFBSSxFQUFFQztFQUpSLENBRHlCLEVBT3pCO0lBQ0VILElBQUksRUFBRSxTQURSO0lBRUVDLElBQUksRUFBRSxTQUZSO0lBR0VDLElBQUksRUFBRUM7RUFIUixDQVB5QixFQVl6QjtJQUNFSCxJQUFJLEVBQUUsd0JBRFI7SUFFRUMsSUFBSSxFQUFFLGNBRlI7SUFHRUMsSUFBSSxFQUFFQztFQUhSLENBWnlCLEVBaUJ6QjtJQUNFSCxJQUFJLEVBQUUscUJBRFI7SUFFRUMsSUFBSSxFQUFFLE9BRlI7SUFHRUMsSUFBSSxFQUFFQztFQUhSLENBakJ5QixFQXNCekI7SUFDRUosS0FBSyxFQUFFLEdBRFQ7SUFFRUssWUFBWSxFQUFFLElBRmhCO0lBR0VILElBQUksRUFB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