@tricoteuses/assemblee 0.26.2 → 0.28.1

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 (136) 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 +1 -1
  4. package/lib/bugs/acteur-00010/plugin.test.mjs +1 -1
  5. package/lib/bugs/acteur-00010.js +1 -1
  6. package/lib/bugs/acteur-00010.mjs +1 -1
  7. package/lib/bugs/agenda-00002/plugin.test.js +1 -1
  8. package/lib/bugs/agenda-00002/plugin.test.mjs +1 -1
  9. package/lib/bugs/agenda-00002.js +1 -1
  10. package/lib/bugs/agenda-00002.mjs +1 -1
  11. package/lib/bugs/agenda-00008/plugin.test.js +1 -1
  12. package/lib/bugs/agenda-00008/plugin.test.mjs +1 -1
  13. package/lib/bugs/agenda-00008.js +1 -1
  14. package/lib/bugs/agenda-00008.mjs +1 -1
  15. package/lib/bugs/agenda-00011/plugin.test.js +1 -1
  16. package/lib/bugs/agenda-00011/plugin.test.mjs +1 -1
  17. package/lib/bugs/agenda-00011.js +1 -1
  18. package/lib/bugs/agenda-00011.mjs +1 -1
  19. package/lib/bugs.js +1 -1
  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 +1 -1
  28. package/lib/cleaners/documents.mjs +1 -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 +1 -1
  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.js +1 -1
  52. package/lib/index.mjs +1 -1
  53. package/lib/inserters.js +1 -1
  54. package/lib/inserters.mjs +1 -1
  55. package/lib/loaders.js +2 -2
  56. package/lib/loaders.mjs +2 -2
  57. package/lib/organes.js +1 -1
  58. package/lib/organes.mjs +1 -1
  59. package/lib/parsers/documents.js +1 -1
  60. package/lib/parsers/documents.mjs +1 -1
  61. package/lib/parsers/index.js +1 -1
  62. package/lib/parsers/index.mjs +1 -1
  63. package/lib/parsers/recherche_amendements.js +1 -1
  64. package/lib/parsers/recherche_amendements.mjs +1 -1
  65. package/lib/raw_types/acteurs_et_organes.d.ts +2 -1
  66. package/lib/raw_types/acteurs_et_organes.js +3 -2
  67. package/lib/raw_types/acteurs_et_organes.mjs +3 -2
  68. package/lib/raw_types/agendas.js +1 -1
  69. package/lib/raw_types/agendas.mjs +1 -1
  70. package/lib/raw_types/amendements.js +1 -1
  71. package/lib/raw_types/amendements.mjs +1 -1
  72. package/lib/raw_types/dossiers_legislatifs.d.ts +6 -2
  73. package/lib/raw_types/dossiers_legislatifs.js +8 -4
  74. package/lib/raw_types/dossiers_legislatifs.mjs +8 -4
  75. package/lib/raw_types/scrutins.d.ts +4 -7
  76. package/lib/raw_types/scrutins.js +5 -10
  77. package/lib/raw_types/scrutins.mjs +5 -10
  78. package/lib/scripts/bugs_helper.js +1 -1
  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 +1 -1
  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 +1 -1
  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 +1 -1
  99. package/lib/scripts/retrieve_deputes_photos.mjs +1 -1
  100. package/lib/scripts/retrieve_documents.js +1 -1
  101. package/lib/scripts/retrieve_documents.mjs +1 -1
  102. package/lib/scripts/retrieve_open_data.js +1 -1
  103. package/lib/scripts/retrieve_open_data.mjs +1 -1
  104. package/lib/scripts/retrieve_pending_amendments.js +1 -1
  105. package/lib/scripts/retrieve_pending_amendments.mjs +1 -1
  106. package/lib/scripts/retrieve_senateurs_photos.js +1 -1
  107. package/lib/scripts/retrieve_senateurs_photos.mjs +1 -1
  108. package/lib/scripts/retrieve_textes_lois.js +1 -1
  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 +1 -1
  115. package/lib/scripts/validate_json.mjs +1 -1
  116. package/lib/shared_types/codes_actes.d.ts +2 -0
  117. package/lib/shared_types/codes_actes.js +2 -1
  118. package/lib/shared_types/codes_actes.mjs +2 -1
  119. package/lib/strings.js +1 -1
  120. package/lib/strings.mjs +1 -1
  121. package/lib/types/acteurs_et_organes.js +1 -1
  122. package/lib/types/acteurs_et_organes.mjs +1 -1
  123. package/lib/types/agendas.js +1 -1
  124. package/lib/types/agendas.mjs +1 -1
  125. package/lib/types/amendements.js +1 -1
  126. package/lib/types/amendements.mjs +1 -1
  127. package/lib/types/dossiers_legislatifs.d.ts +5 -2
  128. package/lib/types/dossiers_legislatifs.js +6 -3
  129. package/lib/types/dossiers_legislatifs.mjs +6 -3
  130. package/lib/types/legislatures.js +1 -1
  131. package/lib/types/legislatures.mjs +1 -1
  132. package/lib/types/scrutins.js +1 -1
  133. package/lib/types/scrutins.mjs +1 -1
  134. package/lib/urls.js +1 -1
  135. package/lib/urls.mjs +1 -1
  136. package/package.json +7 -7
@@ -709,4 +709,4 @@ if (process.argv[1].endsWith("reorganize_data.ts")) {
709
709
  process.exit(0);
710
710
  }
711
711
  }
712
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL3Jlb3JnYW5pemVfZGF0YS50cyJdLCJuYW1lcyI6WyJhc3NlcnQiLCJleGVjU3luYyIsImNvbW1hbmRMaW5lQXJncyIsImZzIiwicGF0aCIsImRhdGFzZXRzIiwiRGF0YXNldFN0cnVjdHVyZSIsIkVuYWJsZWREYXRhc2V0cyIsImV4aXN0aW5nRGF0ZVRvSnNvbiIsInBhdGNoZWREYXRlVG9Kc29uIiwid2Fsa0RpciIsInBhdGhGcm9tRG9jdW1lbnRVaWQiLCJwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkIiwicGF0aEZyb21SZXVuaW9uVWlkIiwicGF0aEZyb21TY3J1dGluVWlkIiwiQ29udmVydCIsIkFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0IiwiQWdlbmRhc1Jhd0NvbnZlcnQiLCJBbWVuZGVtZW50c1Jhd0NvbnZlcnQiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzUmF3Q29udmVydCIsIlNjcnV0aW5zUmF3Q29udmVydCIsIm9wdGlvbnNEZWZpbml0aW9ucyIsImFsaWFzIiwiaGVscCIsIm5hbWUiLCJ0eXBlIiwiU3RyaW5nIiwiQm9vbGVhbiIsImRlZmF1bHRWYWx1ZSIsIm11bHRpcGxlIiwiZGVmYXVsdE9wdGlvbiIsImNvbW1pdEFuZFB1c2giLCJyZXBvc2l0b3J5RGlyIiwiY29tbWl0IiwicmVtb3RlcyIsImVycm9yIiwiY3dkIiwiZW52IiwicHJvY2VzcyIsImVuY29kaW5nIiwic3RkaW8iLCJjaGlsZFByb2Nlc3MiLCJzdGRlcnIiLCJ0ZXN0Iiwic3Rkb3V0IiwiY29uc29sZSIsIm91dHB1dCIsInJlbW90ZSIsInJlb3JnYW5pemVEYXRhIiwib3B0aW9ucyIsImRhdGFEaXIiLCJEYXRlIiwicHJvdG90eXBlIiwidG9KU09OIiwiZ2l0R3JvdXBVcmwiLCJjbG9uZSIsInRyaW0iLCJyZXBsYWNlIiwidW5kZWZpbmVkIiwidmFsaWRhdGVSYXdEYXRhIiwiY2F0ZWdvcmllcyIsIm1hcCIsImRhdGFzZXROYW1lIiwibm90U3RyaWN0RXF1YWwiLCJlbmFibGVkRGF0YXNldHMiLCJyZWR1Y2UiLCJOb25lIiwiQWN0ZXVyc0V0T3JnYW5lcyIsImRhdGFzZXQiLCJhY3RldXJzRXRPcmdhbmVzIiwib3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCIsImpvaW4iLCJmaWxlbmFtZSIsInNpbGVudCIsImxvZyIsImJhc2VuYW1lIiwiZGF0YXNldFJlb3JnYW5pemVkRGlyIiwiZW5zdXJlRGlyU3luYyIsInJlYWRkaXJTeW5jIiwicmVtb3ZlU3luYyIsImFjdGV1cnNSZW9yZ2FuaXplZERpciIsIm1rZGlyU3luYyIsIm9yZ2FuZXNSZW9yZ2FuaXplZERpciIsInN0cnVjdHVyZSIsIlNpbmdsZUZpbGUiLCJvcmlnaW5hbEpzb24iLCJyZWFkRmlsZVN5bmMiLCJvcmlnaW5hbERhdGEiLCJ0b0FjdGV1cnNFdE9yZ2FuZXMiLCJKU09OIiwicGFyc2UiLCJhY3RldXIiLCJleHBvcnQiLCJhY3RldXJzIiwicmVvcmdhbml6ZWRKc29uRmlsZVBhdGgiLCJ1aWQiLCJ3cml0ZUZpbGVTeW5jIiwic3RyaW5naWZ5Iiwib3JnYW5lIiwib3JnYW5lcyIsIlNlZ21lbnRlZEZpbGVzIiwiZGVwb3J0c0J5QWN0ZXVyVWlkIiwiZXhpc3RzU3luYyIsImRlcG9ydFNwbGl0UGF0aCIsImRlcG9ydEZpbGVuYW1lIiwibGVuZ3RoIiwiZW5kc1dpdGgiLCJkZXBvcnRPcmlnaW5hbEZpbGVQYXRoIiwidmVyYm9zZSIsImRlcG9ydE9yaWdpbmFsSnNvbiIsImRlcG9ydE9yaWdpbmFsIiwidG9EZXBvcnQiLCJkZXBvcnQiLCJkZXBvcnRzIiwiYWN0ZXVyUmVmIiwicHVzaCIsIk9iamVjdCIsInZhbHVlcyIsInNvcnQiLCJhIiwiYiIsImxvY2FsZUNvbXBhcmUiLCJtYW5kYXRzQnlBY3RldXJVaWQiLCJtYW5kYXRTcGxpdFBhdGgiLCJtYW5kYXRGaWxlbmFtZSIsIm1hbmRhdE9yaWdpbmFsRmlsZVBhdGgiLCJtYW5kYXRPcmlnaW5hbEpzb24iLCJtYW5kYXRPcmlnaW5hbCIsInRvTWFuZGF0IiwibWFuZGF0IiwibWFuZGF0cyIsImFjdGV1clNwbGl0UGF0aCIsImFjdGV1ckZpbGVuYW1lIiwiYWN0ZXVyT3JpZ2luYWxGaWxlUGF0aCIsImFjdGV1ck9yaWdpbmFsSnNvbiIsImFjdGV1ck9yaWdpbmFsIiwidG9BY3RldXIiLCJhY3RldXJVaWQiLCJzdHJpY3RFcXVhbCIsImFjdGV1clJlb3JnYW5pemVkSnNvbkZpbGVQYXRoIiwib3JnYW5lU3BsaXRQYXRoIiwib3JnYW5lRmlsZW5hbWUiLCJvcmdhbmVPcmlnaW5hbEZpbGVQYXRoIiwib3JnYW5lT3JpZ2luYWxKc29uIiwib3JnYW5lT3JpZ2luYWwiLCJ0b09yZ2FuZSIsIm9yZ2FuZVJlb3JnYW5pemVkSnNvbkZpbGVQYXRoIiwiQWdlbmRhcyIsImFnZW5kYXMiLCJ0b0FnZW5kYXMiLCJyZXVuaW9uIiwicmV1bmlvbnMiLCJ3cml0ZVJldW5pb25SZW9yZ2FuaXplZEpzb24iLCJyZXVuaW9uU3BsaXRQYXRoIiwicmV1bmlvbkZpbGVuYW1lIiwicmV1bmlvbk9yaWdpbmFsRmlsZVBhdGgiLCJyZXVuaW9uT3JpZ2luYWxKc29uIiwicmV1bmlvbk9yaWdpbmFsIiwidG9SZXVuaW9uIiwiQW1lbmRlbWVudHMiLCJhbWVuZGVtZW50cyIsInRvQW1lbmRlbWVudHMiLCJ0ZXh0ZUxlZ2lzbGF0aWYiLCJ0ZXh0ZXNFdEFtZW5kZW1lbnRzIiwidGV4dGVsZWciLCJhbWVuZGVtZW50Iiwid3JpdGVBbWVuZGVtZW50UmVvcmdhbml6ZWRKc29uIiwiYW1lbmRlbWVudFNwbGl0UGF0aCIsImFtZW5kZW1lbnRGaWxlbmFtZSIsImFtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRoIiwiYW1lbmRlbWVudE9yaWdpbmFsSnNvbiIsImFtZW5kZW1lbnRPcmlnaW5hbCIsInRvQW1lbmRlbWVudFdyYXBwZXIiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzIiwiZG9zc2llcnNMZWdpc2xhdGlmcyIsImRvY3VtZW50c0RpciIsImRvc3NpZXJzRGlyIiwidG9Eb3NzaWVyc0xlZ2lzbGF0aWZzIiwiZG9jdW1lbnQiLCJ0ZXh0ZXNMZWdpc2xhdGlmcyIsIndyaXRlRG9jdW1lbnRSZW9yZ2FuaXplZEpzb24iLCJkb3NzaWVyUGFybGVtZW50YWlyZSIsImRvc3NpZXIiLCJ3cml0ZURvc3NpZXJQYXJsZW1lbnRhaXJlUmVvcmdhbml6ZWRKc29uIiwiZG9jdW1lbnRTcGxpdFBhdGgiLCJkb2N1bWVudEZpbGVuYW1lIiwiZG9jdW1lbnRPcmlnaW5hbEZpbGVQYXRoIiwiZG9jdW1lbnRPcmlnaW5hbEpzb24iLCJkb2N1bWVudE9yaWdpbmFsIiwidG9Eb2N1bWVudCIsImRvc3NpZXJQYXJsZW1lbnRhaXJlU3BsaXRQYXRoIiwiZG9zc2llclBhcmxlbWVudGFpcmVGaWxlbmFtZSIsImRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxGaWxlUGF0aCIsImRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxKc29uIiwiZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbCIsInRvRG9zc2llclBhcmxlbWVudGFpcmUiLCJTY3J1dGlucyIsInNjcnV0aW5zIiwidG9TY3J1dGlucyIsInNjcnV0aW4iLCJ3cml0ZVNjcnV0aW5SZW9yZ2FuaXplZEpzb24iLCJzY3J1dGluU3BsaXRQYXRoIiwic2NydXRpbkZpbGVuYW1lIiwic2NydXRpbk9yaWdpbmFsRmlsZVBhdGgiLCJzY3J1dGluT3JpZ2luYWxKc29uIiwic2NydXRpbk9yaWdpbmFsIiwidG9TY3J1dGluV3JhcHBlciIsInVpZFRleHRlTGVnaXNsYXRpZiIsInRleHRlTGVnaXNsYXRpZlJlZiIsInRleHRlTGVnaXNsYXRpZkRpciIsInJldW5pb25zRGlyIiwic2NydXRpbnNEaXIiLCJhcmd2IiwiZXhpdCJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsTUFBUCxNQUFtQixRQUFuQjtBQUNBLFNBQXVCQyxRQUF2QixRQUF1QyxlQUF2QztBQUNBLE9BQU9DLGVBQVAsTUFBNEIsbUJBQTVCO0FBQ0EsT0FBT0MsRUFBUCxN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QUFRLEVBQUU7QUFEMkQsR0FBdkU7QUFHRDs7QUFFRCxTQUFTaUssMkJBQVQsQ0FDRVcsV0FERixFQUVFWixPQUZGLEVBR1E7QUFDTixRQUFNNUgsUUFBUSxHQUFHN0Qsa0JBQWtCLENBQUNxTSxXQUFELEVBQWNaLE9BQU8sQ0FBQ3hHLEdBQXRCLENBQW5DO0FBQ0E1RixFQUFBQSxFQUFFLENBQUM2RixhQUFILENBQWtCLEdBQUVyQixRQUFTLE9BQTdCLEVBQXFDYyxJQUFJLENBQUNRLFNBQUwsQ0FBZXNHLE9BQWYsRUFBd0IsSUFBeEIsRUFBOEIsQ0FBOUIsQ0FBckMsRUFBdUU7QUFDckVoSyxJQUFBQSxRQUFRLEVBQUU7QUFEMkQsR0FBdkU7QUFHRDtBQUVEOzs7QUFDQSxJQUFJRCxPQUFPLENBQUM4SyxJQUFSLENBQWEsQ0FBYixFQUFnQjFHLFFBQWhCLENBQXlCLG9CQUF6QixDQUFKLEVBQW9EO0FBQ2xELFFBQU16RCxPQUFPLEdBQUcvQyxlQUFlLENBQUNtQixrQkFBRCxDQUEvQjs7QUFFQSxNQUFJMkIsY0FBYyxDQUFDQyxPQUFELENBQWxCLEVBQTZCO0FBQzNCWCxJQUFBQSxPQUFPLENBQUMrSyxJQUFSLENBQWEsQ0FBYjtBQUNELEdBRkQsTUFFTztBQUNML0ssSUFBQUEsT0FBTyxDQUFDK0ssSUFBUixDQUFhLENBQWI7QUFDRDtBQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCB7IENoaWxkUHJvY2VzcywgZXhlY1N5bmMgfSBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiXG5pbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcblxuaW1wb3J0IHsgZGF0YXNldHMsIERhdGFzZXRTdHJ1Y3R1cmUsIEVuYWJsZWREYXRhc2V0cyB9IGZyb20gXCIuLi9kYXRhc2V0c1wiXG5pbXBvcnQgeyBleGlzdGluZ0RhdGVUb0pzb24sIHBhdGNoZWREYXRlVG9Kc29uIH0gZnJvbSBcIi4uL2RhdGVzXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCB7XG4gIHBhdGhGcm9tRG9jdW1lbnRVaWQsXG4gIHBhdGhGcm9tRG9zc2llclBhcmxlbWVudGFpcmVVaWQsXG4gIHBhdGhGcm9tUmV1bmlvblVpZCxcbiAgcGF0aEZyb21TY3J1dGluVWlkLFxufSBmcm9tIFwiLi4vbG9hZGVyc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIEFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0IH0gZnJvbSBcIi4uL3Jhd190eXBlcy9hY3RldXJzX2V0X29yZ2FuZXNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBBZ2VuZGFzUmF3Q29udmVydCB9IGZyb20gXCIuLi9yYXdfdHlwZXMvYWdlbmRhc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIEFtZW5kZW1lbnRzUmF3Q29udmVydCB9IGZyb20gXCIuLi9yYXdfdHlwZXMvYW1lbmRlbWVudHNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBEb3NzaWVyc0xlZ2lzbGF0aWZzUmF3Q29udmVydCB9IGZyb20gXCIuLi9yYXdfdHlwZXMvZG9zc2llcnNfbGVnaXNsYXRpZnNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBTY3J1dGluc1Jhd0NvbnZlcnQgfSBmcm9tIFwiLi4vcmF3X3R5cGVzL3NjcnV0aW5zXCJcblxuY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICB7XG4gICAgYWxpYXM6IFwiQ1wiLFxuICAgIGhlbHA6IFwiY2xvbmUgcmVwb3NpdG9yaWVzIGZyb20gZ2l2ZW4gZ3JvdXAgKG9yIG9yZ2FuaXphdGlvbikgZ2l0IFVSTFwiLFxuICAgIG5hbWU6IFwiY2xvbmVcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJjXCIsXG4gICAgaGVscDogXCJjb21taXQgc3BsaXQgZmlsZXNcIixcbiAgICBuYW1lOiBcImNvbW1pdFwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJrXCIsXG4gICAgZGVmYXVsdFZhbHVlOiBbXCJBbGxcIl0sXG4gICAgaGVscDogXCJjYXRlZ29yaWVzIG9mIGRhdGFzZXRzIHRvIHJlb3JnYW5pemVcIixcbiAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICBuYW1lOiBcImNhdGVnb3JpZXNcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJyXCIsXG4gICAgaGVscDogXCJwdXNoIGNvbW1pdCB0byBnaXZlbiByZW1vdGVcIixcbiAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICBuYW1lOiBcInJlbW90ZVwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInNcIixcbiAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcIlZcIixcbiAgICBoZWxwOiBcImRvbid0IHZhbGlkYXRlIHJhdyBkYXRhXCIsXG4gICAgbmFtZTogXCJuby12YWxpZGF0ZS1yYXdcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwidlwiLFxuICAgIGhlbHA6IFwidmVyYm9zZSBsb2dzXCIsXG4gICAgbmFtZTogXCJ2ZXJib3NlXCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGRlZmF1bHRPcHRpb246IHRydWUsXG4gICAgaGVscDogXCJkaXJlY3RvcnkgY29udGFpbmluZyBBc3NlbWJsw6llIG9wZW4gZGF0YSBmaWxlc1wiLFxuICAgIG5hbWU6IFwiZGF0YURpclwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbl1cblxuZnVuY3Rpb24gY29tbWl0QW5kUHVzaChcbiAgcmVwb3NpdG9yeURpcjogc3RyaW5nLFxuICBjb21taXQ6IGJvb2xlYW4sXG4gIHJlbW90ZXM/OiBzdHJpbmdbXSxcbik6IGJvb2xlYW4ge1xuICBsZXQgZXJyb3IgPSBmYWxzZVxuICBpZiAoY29tbWl0KSB7XG4gICAgZXhlY1N5bmMoYGdpdCBhZGQgLmAsIHtcbiAgICAgIGN3ZDogcmVwb3NpdG9yeURpcixcbiAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgfSlcbiAgICB0cnkge1xuICAgICAgZXhlY1N5bmMoJ2dpdCBjb21taXQgLW0gXCJOb3V2ZWxsZSBtb2lzc29uXCInLCB7XG4gICAgICAgIGN3ZDogcmVwb3NpdG9yeURpcixcbiAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgIH0pXG4gICAgfSBjYXRjaCAoY2hpbGRQcm9jZXNzKSB7XG4gICAgICBpZiAoXG4gICAgICAgIChjaGlsZFByb2Nlc3MgYXMgQ2hpbGRQcm9jZXNzKS5zdGRlcnIgPT09IG51bGwgfHxcbiAgICAgICAgIS9ub3RoaW5nIHRvIGNvbW1pdC8udGVzdCgoY2hpbGRQcm9jZXNzIGFzIGFueSkuc3Rkb3V0KVxuICAgICAgKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoKGNoaWxkUHJvY2VzcyBhcyBhbnkpLm91dHB1dClcbiAgICAgICAgdGhyb3cgY2hpbGRQcm9jZXNzXG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoY29uc3QgcmVtb3RlIG9mIHJlbW90ZXMgfHwgW10pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgcHVzaCAke3JlbW90ZX0gbWFzdGVyYCwge1xuICAgICAgICAgIGN3ZDogcmVwb3NpdG9yeURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9IGNhdGNoIChjaGlsZFByb2Nlc3MpIHtcbiAgICAgICAgLy8gRG9uJ3Qgc3RvcCB3aGVuIHB1c2ggZmFpbHMuXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoKGNoaWxkUHJvY2VzcyBhcyBhbnkpLm91dHB1dClcbiAgICAgICAgZXJyb3IgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBlcnJvclxufVxuXG5mdW5jdGlvbiByZW9yZ2FuaXplRGF0YShvcHRpb25zOiBhbnkpOiBib29sZWFuIHtcbiAgY29uc3QgZGF0YURpciA9IG9wdGlvbnMuZGF0YURpclxuICBEYXRlLnByb3RvdHlwZS50b0pTT04gPSBwYXRjaGVkRGF0ZVRvSnNvblxuXG4gIGxldCBlcnJvciA9IGZhbHNlXG4gIGNvbnN0IGdpdEdyb3VwVXJsID0gb3B0aW9ucy5jbG9uZVxuICAgID8gb3B0aW9ucy5jbG9uZS50cmltKCkucmVwbGFjZSgvXFwvKyQvLCBcIlwiKVxuICAgIDogdW5kZWZpbmVkXG4gIGNvbnN0IHZhbGlkYXRlUmF3RGF0YSA9ICFvcHRpb25zW1wibm8tdmFsaWRhdGUtcmF3XCJdXG5cbiAgb3B0aW9ucy5jYXRlZ29yaWVzLm1hcCgoZGF0YXNldE5hbWU6IHN0cmluZykgPT5cbiAgICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgICAoRW5hYmxlZERhdGFzZXRzIGFzIGFueSBhcyB7IFtuYW1lOiBzdHJpbmddOiBFbmFibGVkRGF0YXNldHMgfSlbXG4gICAgICAgIGRhdGFzZXROYW1lXG4gICAgICBdLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgYFVua25vd24gbmFtZSBvZiBkYXRhc2V0OiAke2RhdGFzZXROYW1lfWAsXG4gICAgKSxcbiAgKVxuICBjb25zdCBlbmFibGVkRGF0YXNldHMgPSBvcHRpb25zLmNhdGVnb3JpZXMucmVkdWNlKFxuICAgIChlbmFibGVkRGF0YXNldHM6IEVuYWJsZWREYXRhc2V0cywgZGF0YXNldE5hbWU6IHN0cmluZyk6IEVuYWJsZWREYXRhc2V0cyA9PlxuICAgICAgZW5hYmxlZERhdGFzZXRzIHxcbiAgICAgIChFbmFibGVkRGF0YXNldHMgYXMgYW55IGFzIHsgW25hbWU6IHN0cmluZ106IEVuYWJsZWREYXRhc2V0cyB9KVtcbiAgICAgICAgZGF0YXNldE5hbWVcbiAgICAgIF0sXG4gICAgRW5hYmxlZERhdGFzZXRzLk5vbmUsXG4gIClcblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYWN0ZXVyc0V0T3JnYW5lcykge1xuICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLFxuICAgICAgKVxuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgUmVvcmdhbml6aW5nICR7b3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aH1gKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoXG4gICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgIFwiLmpzb25cIixcbiAgICAgIClcbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX0uZ2l0YCwge1xuICAgICAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXRSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGZzLmVuc3VyZURpclN5bmMoZGF0YXNldFJlb3JnYW5pemVkRGlyKVxuICAgICAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBmcy5yZWFkZGlyU3luYyhkYXRhc2V0UmVvcmdhbml6ZWREaXIpKSB7XG4gICAgICAgIGlmIChmaWxlbmFtZVswXSA9PT0gXCIuXCIpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGZzLnJlbW92ZVN5bmMocGF0aC5qb2luKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgZmlsZW5hbWUpKVxuICAgICAgfVxuICAgICAgY29uc3QgYWN0ZXVyc1Jlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgXCJhY3RldXJzXCIpXG4gICAgICBmcy5ta2RpclN5bmMoYWN0ZXVyc1Jlb3JnYW5pemVkRGlyKVxuICAgICAgY29uc3Qgb3JnYW5lc1Jlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgXCJvcmdhbmVzXCIpXG4gICAgICBmcy5ta2RpclN5bmMob3JnYW5lc1Jlb3JnYW5pemVkRGlyKVxuXG4gICAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxEYXRhOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgPyBBY3RldXJzRXRPcmdhbmVzUmF3Q29udmVydC50b0FjdGV1cnNFdE9yZ2FuZXMob3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uob3JpZ2luYWxKc29uKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGFjdGV1ciBvZiBvcmlnaW5hbERhdGEuZXhwb3J0LmFjdGV1cnMuYWN0ZXVyKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlb3JnYW5pemVkSnNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgYWN0ZXVyc1Jlb3JnYW5pemVkRGlyLFxuICAgICAgICAgICAgICAgIGFjdGV1ci51aWRbXCIjdGV4dFwiXSArIFwiLmpzb25cIixcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIHJlb3JnYW5pemVkSnNvbkZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGFjdGV1ciwgbnVsbCwgMiksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChjb25zdCBvcmdhbmUgb2Ygb3JpZ2luYWxEYXRhLmV4cG9ydC5vcmdhbmVzLm9yZ2FuZSkge1xuICAgICAgICAgICAgICBjb25zdCByZW9yZ2FuaXplZEpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yZ2FuZXNSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICBvcmdhbmUudWlkICsgXCIuanNvblwiLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgcmVvcmdhbml6ZWRKc29uRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkob3JnYW5lLCBudWxsLCAyKSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3QgZGVwb3J0c0J5QWN0ZXVyVWlkOiB7XG4gICAgICAgICAgICAgIFthY3RldXJVaWQ6IHN0cmluZ106IHsgdWlkOiBzdHJpbmcgfVtdXG4gICAgICAgICAgICB9ID0ge31cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgZnMuZXhpc3RzU3luYyhcbiAgICAgICAgICAgICAgICBwYXRoLmpvaW4ob3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCwgXCJkZXBvcnRcIiksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBmb3IgKGNvbnN0IGRlcG9ydFNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgW1wiZGVwb3J0XCJdLFxuICAgICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVwb3J0RmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgICAgZGVwb3J0U3BsaXRQYXRoW2RlcG9ydFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICAgIGlmICghZGVwb3J0RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZGVwb3J0T3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgICAuLi5kZXBvcnRTcGxpdFBhdGgsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgICBgICBMb2FkaW5nIFwiZGVwb3J0XCIgZmlsZTogJHtkZXBvcnRPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGRlcG9ydE9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgICAgZGVwb3J0T3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgY29uc3QgZGVwb3J0T3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgICAgPyBBY3RldXJzRXRPcmdhbmVzUmF3Q29udmVydC50b0RlcG9ydChkZXBvcnRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoZGVwb3J0T3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIGNvbnN0IGRlcG9ydCA9IGRlcG9ydE9yaWdpbmFsLmRlcG9ydFxuICAgICAgICAgICAgICAgIGxldCBkZXBvcnRzID0gZGVwb3J0c0J5QWN0ZXVyVWlkW2RlcG9ydC5hY3RldXJSZWZdXG4gICAgICAgICAgICAgICAgaWYgKGRlcG9ydHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgZGVwb3J0cyA9IGRlcG9ydHNCeUFjdGV1clVpZFtkZXBvcnQuYWN0ZXVyUmVmXSA9IFtdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlcG9ydHMucHVzaChkZXBvcnQpXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBmb3IgKGNvbnN0IGRlcG9ydHMgb2YgT2JqZWN0LnZhbHVlcyhkZXBvcnRzQnlBY3RldXJVaWQpKSB7XG4gICAgICAgICAgICAgICAgZGVwb3J0cy5zb3J0KChhLCBiKSA9PlxuICAgICAgICAgICAgICAgICAgYS51aWQubGVuZ3RoID09PSBiLnVpZC5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgPyBhLnVpZC5sb2NhbGVDb21wYXJlKGIudWlkKVxuICAgICAgICAgICAgICAgICAgICA6IGEudWlkLmxlbmd0aCAtIGIudWlkLmxlbmd0aCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbWFuZGF0c0J5QWN0ZXVyVWlkOiB7XG4gICAgICAgICAgICAgIFthY3RldXJVaWQ6IHN0cmluZ106IHsgdWlkOiBzdHJpbmcgfVtdXG4gICAgICAgICAgICB9ID0ge31cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgZnMuZXhpc3RzU3luYyhcbiAgICAgICAgICAgICAgICBwYXRoLmpvaW4ob3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCwgXCJtYW5kYXRcIiksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBmb3IgKGNvbnN0IG1hbmRhdFNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgW1wibWFuZGF0XCJdLFxuICAgICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWFuZGF0RmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgICAgbWFuZGF0U3BsaXRQYXRoW21hbmRhdFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICAgIGlmICghbWFuZGF0RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgbWFuZGF0T3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgICAuLi5tYW5kYXRTcGxpdFBhdGgsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgICBgICBMb2FkaW5nIFwibWFuZGF0XCIgZmlsZTogJHttYW5kYXRPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IG1hbmRhdE9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgICAgbWFuZGF0T3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgY29uc3QgbWFuZGF0T3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgICAgPyBBY3RldXJzRXRPcmdhbmVzUmF3Q29udmVydC50b01hbmRhdChtYW5kYXRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UobWFuZGF0T3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIGNvbnN0IG1hbmRhdCA9IG1hbmRhdE9yaWdpbmFsLm1hbmRhdFxuICAgICAgICAgICAgICAgIGxldCBtYW5kYXRzID0gbWFuZGF0c0J5QWN0ZXVyVWlkW21hbmRhdC5hY3RldXJSZWZdXG4gICAgICAgICAgICAgICAgaWYgKG1hbmRhdHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgbWFuZGF0cyA9IG1hbmRhdHNCeUFjdGV1clVpZFttYW5kYXQuYWN0ZXVyUmVmXSA9IFtdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hbmRhdHMucHVzaChtYW5kYXQpXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBmb3IgKGNvbnN0IG1hbmRhdHMgb2YgT2JqZWN0LnZhbHVlcyhtYW5kYXRzQnlBY3RldXJVaWQpKSB7XG4gICAgICAgICAgICAgICAgbWFuZGF0cy5zb3J0KChhLCBiKSA9PlxuICAgICAgICAgICAgICAgICAgYS51aWQubGVuZ3RoID09PSBiLnVpZC5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgPyBhLnVpZC5sb2NhbGVDb21wYXJlKGIudWlkKVxuICAgICAgICAgICAgICAgICAgICA6IGEudWlkLmxlbmd0aCAtIGIudWlkLmxlbmd0aCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChjb25zdCBhY3RldXJTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgW1wiYWN0ZXVyXCJdLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCBhY3RldXJGaWxlbmFtZSA9IGFjdGV1clNwbGl0UGF0aFthY3RldXJTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgaWYgKCFhY3RldXJGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBhY3RldXJPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4uYWN0ZXVyU3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcImFjdGV1clwiIGZpbGU6ICR7YWN0ZXVyT3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBhY3RldXJPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBhY3RldXJPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IGFjdGV1ck9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IEFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0LnRvQWN0ZXVyKGFjdGV1ck9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoYWN0ZXVyT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICBjb25zdCBhY3RldXIgPSBhY3RldXJPcmlnaW5hbC5hY3RldXJcbiAgICAgICAgICAgICAgY29uc3QgYWN0ZXVyVWlkID0gYWN0ZXVyLnVpZFtcIiN0ZXh0XCJdXG4gICAgICAgICAgICAgIGNvbnN0IGRlcG9ydHMgPSBkZXBvcnRzQnlBY3RldXJVaWRbYWN0ZXVyVWlkXVxuICAgICAgICAgICAgICBpZiAoZGVwb3J0cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGFjdGV1ci5kZXBvcnRzLCB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgYWN0ZXVyLmRlcG9ydHMgPSB7IGRlcG9ydDogZGVwb3J0cyB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgbWFuZGF0cyA9IG1hbmRhdHNCeUFjdGV1clVpZFthY3RldXJVaWRdXG4gICAgICAgICAgICAgIGlmIChtYW5kYXRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYWN0ZXVyLm1hbmRhdHMsIHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBhY3RldXIubWFuZGF0cyA9IHsgbWFuZGF0OiBtYW5kYXRzIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBhY3RldXJSZW9yZ2FuaXplZEpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIGFjdGV1cnNSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICBhY3RldXJVaWQgKyBcIi5qc29uXCIsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBhY3RldXJSZW9yZ2FuaXplZEpzb25GaWxlUGF0aCxcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShhY3RldXIsIG51bGwsIDIpLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAoY29uc3Qgb3JnYW5lU3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIFtcIm9yZ2FuZVwiXSxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3Qgb3JnYW5lRmlsZW5hbWUgPSBvcmdhbmVTcGxpdFBhdGhbb3JnYW5lU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghb3JnYW5lRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3Qgb3JnYW5lT3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIC4uLm9yZ2FuZVNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJvcmdhbmVcIiBmaWxlOiAke29yZ2FuZU9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3Qgb3JnYW5lT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgb3JnYW5lT3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBvcmdhbmVPcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBBY3RldXJzRXRPcmdhbmVzUmF3Q29udmVydC50b09yZ2FuZShvcmdhbmVPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKG9yZ2FuZU9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3Qgb3JnYW5lID0gb3JnYW5lT3JpZ2luYWwub3JnYW5lXG4gICAgICAgICAgICAgIGNvbnN0IG9yZ2FuZVJlb3JnYW5pemVkSnNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JnYW5lc1Jlb3JnYW5pemVkRGlyLFxuICAgICAgICAgICAgICAgIG9yZ2FuZS51aWQgKyBcIi5qc29uXCIsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBvcmdhbmVSZW9yZ2FuaXplZEpzb25GaWxlUGF0aCxcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShvcmdhbmUsIG51bGwsIDIpLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgY29tbWl0QW5kUHVzaChkYXRhc2V0UmVvcmdhbml6ZWREaXIsIG9wdGlvbnMuY29tbWl0LCBvcHRpb25zLnJlbW90ZSlcbiAgICAgICkge1xuICAgICAgICBlcnJvciA9IHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFnZW5kYXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYWdlbmRhcykge1xuICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLFxuICAgICAgKVxuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgUmVvcmdhbml6aW5nICR7b3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aH1gKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoXG4gICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgIFwiLmpzb25cIixcbiAgICAgIClcbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX0uZ2l0YCwge1xuICAgICAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXRSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGZzLmVuc3VyZURpclN5bmMoZGF0YXNldFJlb3JnYW5pemVkRGlyKVxuICAgICAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBmcy5yZWFkZGlyU3luYyhkYXRhc2V0UmVvcmdhbml6ZWREaXIpKSB7XG4gICAgICAgIGlmIChmaWxlbmFtZVswXSA9PT0gXCIuXCIpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGZzLnJlbW92ZVN5bmMocGF0aC5qb2luKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgZmlsZW5hbWUpKVxuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxEYXRhOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgPyBBZ2VuZGFzUmF3Q29udmVydC50b0FnZW5kYXMob3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uob3JpZ2luYWxKc29uKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJldW5pb24gb2Ygb3JpZ2luYWxEYXRhLnJldW5pb25zLnJldW5pb24pIHtcbiAgICAgICAgICAgICAgd3JpdGVSZXVuaW9uUmVvcmdhbml6ZWRKc29uKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgcmV1bmlvbilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcmV1bmlvblNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICBbXCJyZXVuaW9uXCJdLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCByZXVuaW9uRmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgIHJldW5pb25TcGxpdFBhdGhbcmV1bmlvblNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICBpZiAoIXJldW5pb25GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCByZXVuaW9uT3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIC4uLnJldW5pb25TcGxpdFBhdGgsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYCAgUmVvcmdhbml6aW5nIFwicmV1bmlvblwiIGZpbGU6ICR7cmV1bmlvbk9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgcmV1bmlvbk9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIHJldW5pb25PcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IHJldW5pb25PcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBBZ2VuZGFzUmF3Q29udmVydC50b1JldW5pb24ocmV1bmlvbk9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UocmV1bmlvbk9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3QgcmV1bmlvbiA9IHJldW5pb25PcmlnaW5hbC5yZXVuaW9uXG4gICAgICAgICAgICAgIHdyaXRlUmV1bmlvblJlb3JnYW5pemVkSnNvbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIHJldW5pb24pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgY29tbWl0QW5kUHVzaChkYXRhc2V0UmVvcmdhbml6ZWREaXIsIG9wdGlvbnMuY29tbWl0LCBvcHRpb25zLnJlbW90ZSlcbiAgICAgICkge1xuICAgICAgICBlcnJvciA9IHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFtZW5kZW1lbnRzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFtZW5kZW1lbnRzKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUsXG4gICAgICApXG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBSZW9yZ2FuaXppbmcgJHtvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRofWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShcbiAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgXCIuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldFJlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgZnMuZW5zdXJlRGlyU3luYyhkYXRhc2V0UmVvcmdhbml6ZWREaXIpXG4gICAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGZzLnJlYWRkaXJTeW5jKGRhdGFzZXRSZW9yZ2FuaXplZERpcikpIHtcbiAgICAgICAgaWYgKGZpbGVuYW1lWzBdID09PSBcIi5cIikge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgZnMucmVtb3ZlU3luYyhwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBmaWxlbmFtZSkpXG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAoZGF0YXNldC5zdHJ1Y3R1cmUpIHtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGU6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbERhdGE6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICA/IEFtZW5kZW1lbnRzUmF3Q29udmVydC50b0FtZW5kZW1lbnRzKG9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKG9yaWdpbmFsSnNvbilcblxuICAgICAgICAgICAgZm9yIChjb25zdCB0ZXh0ZUxlZ2lzbGF0aWYgb2Ygb3JpZ2luYWxEYXRhLnRleHRlc0V0QW1lbmRlbWVudHNcbiAgICAgICAgICAgICAgLnRleHRlbGVnKSB7XG4gICAgICAgICAgICAgIGZvciAoY29uc3QgYW1lbmRlbWVudCBvZiB0ZXh0ZUxlZ2lzbGF0aWYuYW1lbmRlbWVudHMpIHtcbiAgICAgICAgICAgICAgICB3cml0ZUFtZW5kZW1lbnRSZW9yZ2FuaXplZEpzb24oXG4gICAgICAgICAgICAgICAgICBkYXRhc2V0UmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgICAgICAgICBhbWVuZGVtZW50LFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgICAge1xuICAgICAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRGaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgYW1lbmRlbWVudFNwbGl0UGF0aFthbWVuZGVtZW50U3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghYW1lbmRlbWVudEZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4uYW1lbmRlbWVudFNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJhbWVuZGVtZW50XCIgZmlsZTogJHthbWVuZGVtZW50T3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50T3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgYW1lbmRlbWVudE9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudE9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IEFtZW5kZW1lbnRzUmF3Q29udmVydC50b0FtZW5kZW1lbnRXcmFwcGVyKFxuICAgICAgICAgICAgICAgICAgICBhbWVuZGVtZW50T3JpZ2luYWxKc29uLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShhbWVuZGVtZW50T3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50ID0gYW1lbmRlbWVudE9yaWdpbmFsLmFtZW5kZW1lbnRcbiAgICAgICAgICAgICAgd3JpdGVBbWVuZGVtZW50UmVvcmdhbml6ZWRKc29uKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgYW1lbmRlbWVudClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBjb21taXRBbmRQdXNoKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgb3B0aW9ucy5jb21taXQsIG9wdGlvbnMucmVtb3RlKVxuICAgICAgKSB7XG4gICAgICAgIGVycm9yID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUsXG4gICAgICApXG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBSZW9yZ2FuaXppbmcgJHtvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRofWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShcbiAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgXCIuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldFJlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgZnMuZW5zdXJlRGlyU3luYyhkYXRhc2V0UmVvcmdhbml6ZWREaXIpXG4gICAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGZzLnJlYWRkaXJTeW5jKGRhdGFzZXRSZW9yZ2FuaXplZERpcikpIHtcbiAgICAgICAgaWYgKGZpbGVuYW1lWzBdID09PSBcIi5cIikge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgZnMucmVtb3ZlU3luYyhwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBmaWxlbmFtZSkpXG4gICAgICB9XG4gICAgICBjb25zdCBkb2N1bWVudHNEaXIgPSBwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBcImRvY3VtZW50c1wiKVxuICAgICAgZnMubWtkaXJTeW5jKGRvY3VtZW50c0RpcilcbiAgICAgIGNvbnN0IGRvc3NpZXJzRGlyID0gcGF0aC5qb2luKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgXCJkb3NzaWVyc1wiKVxuICAgICAgZnMubWtkaXJTeW5jKGRvc3NpZXJzRGlyKVxuXG4gICAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxEYXRhOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgPyBEb3NzaWVyc0xlZ2lzbGF0aWZzUmF3Q29udmVydC50b0Rvc3NpZXJzTGVnaXNsYXRpZnMoXG4gICAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb24sXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uob3JpZ2luYWxKc29uKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGRvY3VtZW50IG9mIG9yaWdpbmFsRGF0YS5leHBvcnQudGV4dGVzTGVnaXNsYXRpZnNcbiAgICAgICAgICAgICAgLmRvY3VtZW50KSB7XG4gICAgICAgICAgICAgIHdyaXRlRG9jdW1lbnRSZW9yZ2FuaXplZEpzb24oZG9jdW1lbnRzRGlyLCBkb2N1bWVudClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChjb25zdCB7IGRvc3NpZXJQYXJsZW1lbnRhaXJlIH0gb2Ygb3JpZ2luYWxEYXRhLmV4cG9ydFxuICAgICAgICAgICAgICAuZG9zc2llcnNMZWdpc2xhdGlmcy5kb3NzaWVyKSB7XG4gICAgICAgICAgICAgIHdyaXRlRG9zc2llclBhcmxlbWVudGFpcmVSZW9yZ2FuaXplZEpzb24oXG4gICAgICAgICAgICAgICAgZG9zc2llcnNEaXIsXG4gICAgICAgICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmUsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9jdW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgW1wiZG9jdW1lbnRcIl0sXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50RmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgIGRvY3VtZW50U3BsaXRQYXRoW2RvY3VtZW50U3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghZG9jdW1lbnRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBkb2N1bWVudE9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5kb2N1bWVudFNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJkb2N1bWVudFwiIGZpbGU6ICR7ZG9jdW1lbnRPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50T3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgZG9jdW1lbnRPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50T3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gRG9zc2llcnNMZWdpc2xhdGlmc1Jhd0NvbnZlcnQudG9Eb2N1bWVudChkb2N1bWVudE9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoZG9jdW1lbnRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50ID0gZG9jdW1lbnRPcmlnaW5hbC5kb2N1bWVudFxuICAgICAgICAgICAgICB3cml0ZURvY3VtZW50UmVvcmdhbml6ZWRKc29uKGRvY3VtZW50c0RpciwgZG9jdW1lbnQpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgW1wiZG9zc2llclBhcmxlbWVudGFpcmVcIl0sXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlRmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlU3BsaXRQYXRoW1xuICAgICAgICAgICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGgubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgaWYgKCFkb3NzaWVyUGFybGVtZW50YWlyZUZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIC4uLmRvc3NpZXJQYXJsZW1lbnRhaXJlU3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcImRvc3NpZXJQYXJsZW1lbnRhaXJlXCIgZmlsZTogJHtkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBEb3NzaWVyc0xlZ2lzbGF0aWZzUmF3Q29udmVydC50b0Rvc3NpZXJQYXJsZW1lbnRhaXJlKFxuICAgICAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsSnNvbixcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlID1cbiAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsLmRvc3NpZXJQYXJsZW1lbnRhaXJlXG4gICAgICAgICAgICAgIHdyaXRlRG9zc2llclBhcmxlbWVudGFpcmVSZW9yZ2FuaXplZEpzb24oXG4gICAgICAgICAgICAgICAgZG9zc2llcnNEaXIsXG4gICAgICAgICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmUsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBjb21taXRBbmRQdXNoKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgb3B0aW9ucy5jb21taXQsIG9wdGlvbnMucmVtb3RlKVxuICAgICAgKSB7XG4gICAgICAgIGVycm9yID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuU2NydXRpbnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuc2NydXRpbnMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKFxuICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICBcIi5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9LmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0UmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBmcy5lbnN1cmVEaXJTeW5jKGRhdGFzZXRSZW9yZ2FuaXplZERpcilcbiAgICAgIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZnMucmVhZGRpclN5bmMoZGF0YXNldFJlb3JnYW5pemVkRGlyKSkge1xuICAgICAgICBpZiAoZmlsZW5hbWVbMF0gPT09IFwiLlwiKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBmcy5yZW1vdmVTeW5jKHBhdGguam9pbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIGZpbGVuYW1lKSlcbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2luZ2xlRmlsZTpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRGF0YTogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgID8gU2NydXRpbnNSYXdDb252ZXJ0LnRvU2NydXRpbnMob3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uob3JpZ2luYWxKc29uKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHNjcnV0aW4gb2Ygb3JpZ2luYWxEYXRhLnNjcnV0aW5zLnNjcnV0aW4pIHtcbiAgICAgICAgICAgICAgd3JpdGVTY3J1dGluUmVvcmdhbml6ZWRKc29uKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgc2NydXRpbilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgc2NydXRpblNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCBzY3J1dGluRmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgIHNjcnV0aW5TcGxpdFBhdGhbc2NydXRpblNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICBpZiAoIXNjcnV0aW5GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBzY3J1dGluT3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIC4uLnNjcnV0aW5TcGxpdFBhdGgsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYCAgUmVvcmdhbml6aW5nIFwic2NydXRpblwiIGZpbGU6ICR7c2NydXRpbk9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3Qgc2NydXRpbk9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIHNjcnV0aW5PcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IHNjcnV0aW5PcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBTY3J1dGluc1Jhd0NvbnZlcnQudG9TY3J1dGluV3JhcHBlcihzY3J1dGluT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShzY3J1dGluT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICBjb25zdCBzY3J1dGluID0gc2NydXRpbk9yaWdpbmFsLnNjcnV0aW5cbiAgICAgICAgICAgICAgd3JpdGVTY3J1dGluUmVvcmdhbml6ZWRKc29uKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgc2NydXRpbilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBjb21taXRBbmRQdXNoKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgb3B0aW9ucy5jb21taXQsIG9wdGlvbnMucmVtb3RlKVxuICAgICAgKSB7XG4gICAgICAgIGVycm9yID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlc3RvcmUgc3RhbmRhcmQgY29udmVyc2lvbiBvZiBkYXRlcyB0byBKU09OLlxuICBEYXRlLnByb3RvdHlwZS50b0pTT04gPSBleGlzdGluZ0RhdGVUb0pzb25cblxuICByZXR1cm4gZXJyb3Jcbn1cblxuZnVuY3Rpb24gd3JpdGVBbWVuZGVtZW50UmVvcmdhbml6ZWRKc29uKFxuICBkYXRhc2V0UmVvcmdhbml6ZWREaXI6IHN0cmluZyxcbiAgYW1lbmRlbWVudDoge1xuICAgIHVpZDogc3RyaW5nXG4gICAgdGV4dGVMZWdpc2xhdGlmUmVmOiBzdHJpbmdcbiAgfSxcbik6IHZvaWQge1xuICBjb25zdCB1aWRUZXh0ZUxlZ2lzbGF0aWYgPSBhbWVuZGVtZW50LnRleHRlTGVnaXNsYXRpZlJlZlxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwodWlkVGV4dGVMZWdpc2xhdGlmLCB1bmRlZmluZWQpXG4gIGNvbnN0IHRleHRlTGVnaXNsYXRpZkRpciA9IHBhdGguam9pbihcbiAgICBkYXRhc2V0UmVvcmdhbml6ZWREaXIsXG4gICAgdWlkVGV4dGVMZWdpc2xhdGlmLFxuICApXG4gIGZzLmVuc3VyZURpclN5bmModGV4dGVMZWdpc2xhdGlmRGlyKVxuICBjb25zdCByZW9yZ2FuaXplZEpzb25GaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICB0ZXh0ZUxlZ2lzbGF0aWZEaXIsXG4gICAgYW1lbmRlbWVudC51aWQgKyBcIi5qc29uXCIsXG4gIClcbiAgZnMud3JpdGVGaWxlU3luYyhcbiAgICByZW9yZ2FuaXplZEpzb25GaWxlUGF0aCxcbiAgICBKU09OLnN0cmluZ2lmeShhbWVuZGVtZW50LCBudWxsLCAyKSxcbiAgICB7XG4gICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgfSxcbiAgKVxufVxuXG5mdW5jdGlvbiB3cml0ZURvY3VtZW50UmVvcmdhbml6ZWRKc29uKFxuICBkb2N1bWVudHNEaXI6IHN0cmluZyxcbiAgZG9jdW1lbnQ6IHsgdWlkOiBzdHJpbmcgfSxcbik6IHZvaWQge1xuICBjb25zdCBiYXNlbmFtZSA9IHBhdGhGcm9tRG9jdW1lbnRVaWQoZG9jdW1lbnRzRGlyLCBkb2N1bWVudC51aWQpXG4gIGZzLndyaXRlRmlsZVN5bmMoYCR7YmFzZW5hbWV9Lmpzb25gLCBKU09OLnN0cmluZ2lmeShkb2N1bWVudCwgbnVsbCwgMiksIHtcbiAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gIH0pXG59XG5cbmZ1bmN0aW9uIHdyaXRlRG9zc2llclBhcmxlbWVudGFpcmVSZW9yZ2FuaXplZEpzb24oXG4gIGRvc3NpZXJzRGlyOiBzdHJpbmcsXG4gIGRvc3NpZXJQYXJsZW1lbnRhaXJlOiB7IHVpZDogc3RyaW5nIH0sXG4pOiB2b2lkIHtcbiAgY29uc3QgYmFzZW5hbWUgPSBwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkKFxuICAgIGRvc3NpZXJzRGlyLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlLnVpZCxcbiAgKVxuICBmcy53cml0ZUZpbGVTeW5jKFxuICAgIGAke2Jhc2VuYW1lfS5qc29uYCxcbiAgICBKU09OLnN0cmluZ2lmeShkb3NzaWVyUGFybGVtZW50YWlyZSwgbnVsbCwgMiksXG4gICAge1xuICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgIH0sXG4gIClcbn1cblxuZnVuY3Rpb24gd3JpdGVSZXVuaW9uUmVvcmdhbml6ZWRKc29uKFxuICByZXVuaW9uc0Rpcjogc3RyaW5nLFxuICByZXVuaW9uOiB7IHVpZDogc3RyaW5nIH0sXG4pOiB2b2lkIHtcbiAgY29uc3QgYmFzZW5hbWUgPSBwYXRoRnJvbVJldW5pb25VaWQocmV1bmlvbnNEaXIsIHJldW5pb24udWlkKVxuICBmcy53cml0ZUZpbGVTeW5jKGAke2Jhc2VuYW1lfS5qc29uYCwgSlNPTi5zdHJpbmdpZnkocmV1bmlvbiwgbnVsbCwgMiksIHtcbiAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gIH0pXG59XG5cbmZ1bmN0aW9uIHdyaXRlU2NydXRpblJlb3JnYW5pemVkSnNvbihcbiAgc2NydXRpbnNEaXI6IHN0cmluZyxcbiAgc2NydXRpbjogeyB1aWQ6IHN0cmluZyB9LFxuKTogdm9pZCB7XG4gIGNvbnN0IGJhc2VuYW1lID0gcGF0aEZyb21TY3J1dGluVWlkKHNjcnV0aW5zRGlyLCBzY3J1dGluLnVpZClcbiAgZnMud3JpdGVGaWxlU3luYyhgJHtiYXNlbmFtZX0uanNvbmAsIEpTT04uc3RyaW5naWZ5KHNjcnV0aW4sIG51bGwsIDIpLCB7XG4gICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICB9KVxufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbmlmIChwcm9jZXNzLmFyZ3ZbMV0uZW5kc1dpdGgoXCJyZW9yZ2FuaXplX2RhdGEudHNcIikpIHtcbiAgY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMpXG5cbiAgaWYgKHJlb3JnYW5pemVEYXRhKG9wdGlvbnMpKSB7XG4gICAgcHJvY2Vzcy5leGl0KDEpXG4gIH0gZWxzZSB7XG4gICAgcHJvY2Vzcy5leGl0KDApXG4gIH1cbn1cbiJdfQ==
712
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhc3NlcnQiLCJleGVjU3luYyIsImNvbW1hbmRMaW5lQXJncyIsImZzIiwicGF0aCIsImRhdGFzZXRzIiwiRGF0YXNldFN0cnVjdHVyZSIsIkVuYWJsZWREYXRhc2V0cyIsImV4aXN0aW5nRGF0ZVRvSnNvbiIsInBhdGNoZWREYXRlVG9Kc29uIiwid2Fsa0RpciIsInBhdGhGcm9tRG9jdW1lbnRVaWQiLCJwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkIiwicGF0aEZyb21SZXVuaW9uVWlkIiwicGF0aEZyb21TY3J1dGluVWlkIiwiQ29udmVydCIsIkFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0IiwiQWdlbmRhc1Jhd0NvbnZlcnQiLCJBbWVuZGVtZW50c1Jhd0NvbnZlcnQiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzUmF3Q29udmVydCIsIlNjcnV0aW5zUmF3Q29udmVydCIsIm9wdGlvbnNEZWZpbml0aW9ucyIsImFsaWFzIiwiaGVscCIsIm5hbWUiLCJ0eXBlIiwiU3RyaW5nIiwiQm9vbGVhbiIsImRlZmF1bHRWYWx1ZSIsIm11bHRpcGxlIiwiZGVmYXVsdE9wdGlvbiIsImNvbW1pdEFuZFB1c2giLCJyZXBvc2l0b3J5RGlyIiwiY29tbWl0IiwicmVtb3RlcyIsImVycm9yIiwiY3dkIiwiZW52IiwicHJvY2VzcyIsImVuY29kaW5nIiwic3RkaW8iLCJjaGlsZFByb2Nlc3MiLCJzdGRlcnIiLCJ0ZXN0Iiwic3Rkb3V0IiwiY29uc29sZSIsIm91dHB1dCIsInJlbW90ZSIsInJlb3JnYW5pemVEYXRhIiwib3B0aW9ucyIsImRhdGFEaXIiLCJEYXRlIiwicHJvdG90eXBlIiwidG9KU09OIiwiZ2l0R3JvdXBVcmwiLCJjbG9uZSIsInRyaW0iLCJyZXBsYWNlIiwidW5kZWZpbmVkIiwidmFsaWRhdGVSYXdEYXRhIiwiY2F0ZWdvcmllcyIsIm1hcCIsImRhdGFzZXROYW1lIiwibm90U3RyaWN0RXF1YWwiLCJlbmFibGVkRGF0YXNldHMiLCJyZWR1Y2UiLCJOb25lIiwiQWN0ZXVyc0V0T3JnYW5lcyIsImRhdGFzZXQiLCJhY3RldXJzRXRPcmdhbmVzIiwib3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCIsImpvaW4iLCJmaWxlbmFtZSIsInNpbGVudCIsImxvZyIsImJhc2VuYW1lIiwiZGF0YXNldFJlb3JnYW5pemVkRGlyIiwiZW5zdXJlRGlyU3luYyIsInJlYWRkaXJTeW5jIiwicmVtb3ZlU3luYyIsImFjdGV1cnNSZW9yZ2FuaXplZERpciIsIm1rZGlyU3luYyIsIm9yZ2FuZXNSZW9yZ2FuaXplZERpciIsInN0cnVjdHVyZSIsIlNpbmdsZUZpbGUiLCJvcmlnaW5hbEpzb24iLCJyZWFkRmlsZVN5bmMiLCJvcmlnaW5hbERhdGEiLCJ0b0FjdGV1cnNFdE9yZ2FuZXMiLCJKU09OIiwicGFyc2UiLCJhY3RldXIiLCJleHBvcnQiLCJhY3RldXJzIiwicmVvcmdhbml6ZWRKc29uRmlsZVBhdGgiLCJ1aWQiLCJ3cml0ZUZpbGVTeW5jIiwic3RyaW5naWZ5Iiwib3JnYW5lIiwib3JnYW5lcyIsIlNlZ21lbnRlZEZpbGVzIiwiZGVwb3J0c0J5QWN0ZXVyVWlkIiwiZXhpc3RzU3luYyIsImRlcG9ydFNwbGl0UGF0aCIsImRlcG9ydEZpbGVuYW1lIiwibGVuZ3RoIiwiZW5kc1dpdGgiLCJkZXBvcnRPcmlnaW5hbEZpbGVQYXRoIiwidmVyYm9zZSIsImRlcG9ydE9yaWdpbmFsSnNvbiIsImRlcG9ydE9yaWdpbmFsIiwidG9EZXBvcnQiLCJkZXBvcnQiLCJkZXBvcnRzIiwiYWN0ZXVyUmVmIiwicHVzaCIsIk9iamVjdCIsInZhbHVlcyIsInNvcnQiLCJhIiwiYiIsImxvY2FsZUNvbXBhcmUiLCJtYW5kYXRzQnlBY3RldXJVaWQiLCJtYW5kYXRTcGxpdFBhdGgiLCJtYW5kYXRGaWxlbmFtZSIsIm1hbmRhdE9yaWdpbmFsRmlsZVBhdGgiLCJtYW5kYXRPcmlnaW5hbEpzb24iLCJtYW5kYXRPcmlnaW5hbCIsInRvTWFuZGF0IiwibWFuZGF0IiwibWFuZGF0cyIsImFjdGV1clNwbGl0UGF0aCIsImFjdGV1ckZpbGVuYW1lIiwiYWN0ZXVyT3JpZ2luYWxGaWxlUGF0aCIsImFjdGV1ck9yaWdpbmFsSnNvbiIsImFjdGV1ck9yaWdpbmFsIiwidG9BY3RldXIiLCJhY3RldXJVaWQiLCJzdHJpY3RFcXVhbCIsImFjdGV1clJlb3JnYW5pemVkSnNvbkZpbGVQYXRoIiwib3JnYW5lU3BsaXRQYXRoIiwib3JnYW5lRmlsZW5hbWUiLCJvcmdhbmVPcmlnaW5hbEZpbGVQYXRoIiwib3JnYW5lT3JpZ2luYWxKc29uIiwib3JnYW5lT3JpZ2luYWwiLCJ0b09yZ2FuZSIsIm9yZ2FuZVJlb3JnYW5pemVkSnNvbkZpbGVQYXRoIiwiQWdlbmRhcyIsImFnZW5kYXMiLCJ0b0FnZW5kYXMiLCJyZXVuaW9uIiwicmV1bmlvbnMiLCJ3cml0ZVJldW5pb25SZW9yZ2FuaXplZEpzb24iLCJyZXVuaW9uU3BsaXRQYXRoIiwicmV1bmlvbkZpbGVuYW1lIiwicmV1bmlvbk9yaWdpbmFsRmlsZVBhdGgiLCJyZXVuaW9uT3JpZ2luYWxKc29uIiwicmV1bmlvbk9yaWdpbmFsIiwidG9SZXVuaW9uIiwiQW1lbmRlbWVudHMiLCJhbWVuZGVtZW50cyIsInRvQW1lbmRlbWVudHMiLCJ0ZXh0ZUxlZ2lzbGF0aWYiLCJ0ZXh0ZXNFdEFtZW5kZW1lbnRzIiwidGV4dGVsZWciLCJhbWVuZGVtZW50Iiwid3JpdGVBbWVuZGVtZW50UmVvcmdhbml6ZWRKc29uIiwiYW1lbmRlbWVudFNwbGl0UGF0aCIsImFtZW5kZW1lbnRGaWxlbmFtZSIsImFtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRoIiwiYW1lbmRlbWVudE9yaWdpbmFsSnNvbiIsImFtZW5kZW1lbnRPcmlnaW5hbCIsInRvQW1lbmRlbWVudFdyYXBwZXIiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzIiwiZG9zc2llcnNMZWdpc2xhdGlmcyIsImRvY3VtZW50c0RpciIsImRvc3NpZXJzRGlyIiwidG9Eb3NzaWVyc0xlZ2lzbGF0aWZzIiwiZG9jdW1lbnQiLCJ0ZXh0ZXNMZWdpc2xhdGlmcyIsIndyaXRlRG9jdW1lbnRSZW9yZ2FuaXplZEpzb24iLCJkb3NzaWVyUGFybGVtZW50YWlyZSIsImRvc3NpZXIiLCJ3cml0ZURvc3NpZXJQYXJsZW1lbnRhaXJlUmVvcmdhbml6ZWRKc29uIiwiZG9jdW1lbnRTcGxpdFBhdGgiLCJkb2N1bWVudEZpbGVuYW1lIiwiZG9jdW1lbnRPcmlnaW5hbEZpbGVQYXRoIiwiZG9jdW1lbnRPcmlnaW5hbEpzb24iLCJkb2N1bWVudE9yaWdpbmFsIiwidG9Eb2N1bWVudCIsImRvc3NpZXJQYXJsZW1lbnRhaXJlU3BsaXRQYXRoIiwiZG9zc2llclBhcmxlbWVudGFpcmVGaWxlbmFtZSIsImRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxGaWxlUGF0aCIsImRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxKc29uIiwiZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbCIsInRvRG9zc2llclBhcmxlbWVudGFpcmUiLCJTY3J1dGlucyIsInNjcnV0aW5zIiwidG9TY3J1dGlucyIsInNjcnV0aW4iLCJ3cml0ZVNjcnV0aW5SZW9yZ2FuaXplZEpzb24iLCJzY3J1dGluU3BsaXRQYXRoIiwic2NydXRpbkZpbGVuYW1lIiwic2NydXRpbk9yaWdpbmFsRmlsZVBhdGgiLCJzY3J1dGluT3JpZ2luYWxKc29uIiwic2NydXRpbk9yaWdpbmFsIiwidG9TY3J1dGluV3JhcHBlciIsInVpZFRleHRlTGVnaXNsYXRpZiIsInRleHRlTGVnaXNsYXRpZlJlZiIsInRleHRlTGVnaXNsYXRpZkRpciIsInJldW5pb25zRGlyIiwic2NydXRpbnNEaXIiLCJhcmd2IiwiZXhpdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL3Jlb3JnYW5pemVfZGF0YS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIlxuaW1wb3J0IHsgQ2hpbGRQcm9jZXNzLCBleGVjU3luYyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCJcbmltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuXG5pbXBvcnQgeyBkYXRhc2V0cywgRGF0YXNldFN0cnVjdHVyZSwgRW5hYmxlZERhdGFzZXRzIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IGV4aXN0aW5nRGF0ZVRvSnNvbiwgcGF0Y2hlZERhdGVUb0pzb24gfSBmcm9tIFwiLi4vZGF0ZXNcIlxuaW1wb3J0IHsgd2Fsa0RpciB9IGZyb20gXCIuLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0IHtcbiAgcGF0aEZyb21Eb2N1bWVudFVpZCxcbiAgcGF0aEZyb21Eb3NzaWVyUGFybGVtZW50YWlyZVVpZCxcbiAgcGF0aEZyb21SZXVuaW9uVWlkLFxuICBwYXRoRnJvbVNjcnV0aW5VaWQsXG59IGZyb20gXCIuLi9sb2FkZXJzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgQWN0ZXVyc0V0T3JnYW5lc1Jhd0NvbnZlcnQgfSBmcm9tIFwiLi4vcmF3X3R5cGVzL2FjdGV1cnNfZXRfb3JnYW5lc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIEFnZW5kYXNSYXdDb252ZXJ0IH0gZnJvbSBcIi4uL3Jhd190eXBlcy9hZ2VuZGFzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgQW1lbmRlbWVudHNSYXdDb252ZXJ0IH0gZnJvbSBcIi4uL3Jhd190eXBlcy9hbWVuZGVtZW50c1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIERvc3NpZXJzTGVnaXNsYXRpZnNSYXdDb252ZXJ0IH0gZnJvbSBcIi4uL3Jhd190eXBlcy9kb3NzaWVyc19sZWdpc2xhdGlmc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIFNjcnV0aW5zUmF3Q29udmVydCB9IGZyb20gXCIuLi9yYXdfdHlwZXMvc2NydXRpbnNcIlxuXG5jb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gIHtcbiAgICBhbGlhczogXCJDXCIsXG4gICAgaGVscDogXCJjbG9uZSByZXBvc2l0b3JpZXMgZnJvbSBnaXZlbiBncm91cCAob3Igb3JnYW5pemF0aW9uKSBnaXQgVVJMXCIsXG4gICAgbmFtZTogXCJjbG9uZVwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcImNcIixcbiAgICBoZWxwOiBcImNvbW1pdCBzcGxpdCBmaWxlc1wiLFxuICAgIG5hbWU6IFwiY29tbWl0XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcImtcIixcbiAgICBkZWZhdWx0VmFsdWU6IFtcIkFsbFwiXSxcbiAgICBoZWxwOiBcImNhdGVnb3JpZXMgb2YgZGF0YXNldHMgdG8gcmVvcmdhbml6ZVwiLFxuICAgIG11bHRpcGxlOiB0cnVlLFxuICAgIG5hbWU6IFwiY2F0ZWdvcmllc1wiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInJcIixcbiAgICBoZWxwOiBcInB1c2ggY29tbWl0IHRvIGdpdmVuIHJlbW90ZVwiLFxuICAgIG11bHRpcGxlOiB0cnVlLFxuICAgIG5hbWU6IFwicmVtb3RlXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwic1wiLFxuICAgIGhlbHA6IFwiZG9uJ3QgbG9nIGFueXRoaW5nXCIsXG4gICAgbmFtZTogXCJzaWxlbnRcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwiVlwiLFxuICAgIGhlbHA6IFwiZG9uJ3QgdmFsaWRhdGUgcmF3IGRhdGFcIixcbiAgICBuYW1lOiBcIm5vLXZhbGlkYXRlLXJhd1wiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJ2XCIsXG4gICAgaGVscDogXCJ2ZXJib3NlIGxvZ3NcIixcbiAgICBuYW1lOiBcInZlcmJvc2VcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgZGVmYXVsdE9wdGlvbjogdHJ1ZSxcbiAgICBoZWxwOiBcImRpcmVjdG9yeSBjb250YWluaW5nIEFzc2VtYmzDqWUgb3BlbiBkYXRhIGZpbGVzXCIsXG4gICAgbmFtZTogXCJkYXRhRGlyXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuXVxuXG5mdW5jdGlvbiBjb21taXRBbmRQdXNoKFxuICByZXBvc2l0b3J5RGlyOiBzdHJpbmcsXG4gIGNvbW1pdDogYm9vbGVhbixcbiAgcmVtb3Rlcz86IHN0cmluZ1tdLFxuKTogYm9vbGVhbiB7XG4gIGxldCBlcnJvciA9IGZhbHNlXG4gIGlmIChjb21taXQpIHtcbiAgICBleGVjU3luYyhgZ2l0IGFkZCAuYCwge1xuICAgICAgY3dkOiByZXBvc2l0b3J5RGlyLFxuICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICB9KVxuICAgIHRyeSB7XG4gICAgICBleGVjU3luYygnZ2l0IGNvbW1pdCAtbSBcIk5vdXZlbGxlIG1vaXNzb25cIicsIHtcbiAgICAgICAgY3dkOiByZXBvc2l0b3J5RGlyLFxuICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgfSlcbiAgICB9IGNhdGNoIChjaGlsZFByb2Nlc3MpIHtcbiAgICAgIGlmIChcbiAgICAgICAgKGNoaWxkUHJvY2VzcyBhcyBDaGlsZFByb2Nlc3MpLnN0ZGVyciA9PT0gbnVsbCB8fFxuICAgICAgICAhL25vdGhpbmcgdG8gY29tbWl0Ly50ZXN0KChjaGlsZFByb2Nlc3MgYXMgYW55KS5zdGRvdXQpXG4gICAgICApIHtcbiAgICAgICAgY29uc29sZS5lcnJvcigoY2hpbGRQcm9jZXNzIGFzIGFueSkub3V0cHV0KVxuICAgICAgICB0aHJvdyBjaGlsZFByb2Nlc3NcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCByZW1vdGUgb2YgcmVtb3RlcyB8fCBbXSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBwdXNoICR7cmVtb3RlfSBtYXN0ZXJgLCB7XG4gICAgICAgICAgY3dkOiByZXBvc2l0b3J5RGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH0gY2F0Y2ggKGNoaWxkUHJvY2Vzcykge1xuICAgICAgICAvLyBEb24ndCBzdG9wIHdoZW4gcHVzaCBmYWlscy5cbiAgICAgICAgY29uc29sZS5lcnJvcigoY2hpbGRQcm9jZXNzIGFzIGFueSkub3V0cHV0KVxuICAgICAgICBlcnJvciA9IHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGVycm9yXG59XG5cbmZ1bmN0aW9uIHJlb3JnYW5pemVEYXRhKG9wdGlvbnM6IGFueSk6IGJvb2xlYW4ge1xuICBjb25zdCBkYXRhRGlyID0gb3B0aW9ucy5kYXRhRGlyXG4gIERhdGUucHJvdG90eXBlLnRvSlNPTiA9IHBhdGNoZWREYXRlVG9Kc29uXG5cbiAgbGV0IGVycm9yID0gZmFsc2VcbiAgY29uc3QgZ2l0R3JvdXBVcmwgPSBvcHRpb25zLmNsb25lXG4gICAgPyBvcHRpb25zLmNsb25lLnRyaW0oKS5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpXG4gICAgOiB1bmRlZmluZWRcbiAgY29uc3QgdmFsaWRhdGVSYXdEYXRhID0gIW9wdGlvbnNbXCJuby12YWxpZGF0ZS1yYXdcIl1cblxuICBvcHRpb25zLmNhdGVnb3JpZXMubWFwKChkYXRhc2V0TmFtZTogc3RyaW5nKSA9PlxuICAgIGFzc2VydC5ub3RTdHJpY3RFcXVhbChcbiAgICAgIChFbmFibGVkRGF0YXNldHMgYXMgYW55IGFzIHsgW25hbWU6IHN0cmluZ106IEVuYWJsZWREYXRhc2V0cyB9KVtcbiAgICAgICAgZGF0YXNldE5hbWVcbiAgICAgIF0sXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBgVW5rbm93biBuYW1lIG9mIGRhdGFzZXQ6ICR7ZGF0YXNldE5hbWV9YCxcbiAgICApLFxuICApXG4gIGNvbnN0IGVuYWJsZWREYXRhc2V0cyA9IG9wdGlvbnMuY2F0ZWdvcmllcy5yZWR1Y2UoXG4gICAgKGVuYWJsZWREYXRhc2V0czogRW5hYmxlZERhdGFzZXRzLCBkYXRhc2V0TmFtZTogc3RyaW5nKTogRW5hYmxlZERhdGFzZXRzID0+XG4gICAgICBlbmFibGVkRGF0YXNldHMgfFxuICAgICAgKEVuYWJsZWREYXRhc2V0cyBhcyBhbnkgYXMgeyBbbmFtZTogc3RyaW5nXTogRW5hYmxlZERhdGFzZXRzIH0pW1xuICAgICAgICBkYXRhc2V0TmFtZVxuICAgICAgXSxcbiAgICBFbmFibGVkRGF0YXNldHMuTm9uZSxcbiAgKVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWN0ZXVyc0V0T3JnYW5lcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUsXG4gICAgICApXG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBSZW9yZ2FuaXppbmcgJHtvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRofWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShcbiAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgXCIuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldFJlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgZnMuZW5zdXJlRGlyU3luYyhkYXRhc2V0UmVvcmdhbml6ZWREaXIpXG4gICAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGZzLnJlYWRkaXJTeW5jKGRhdGFzZXRSZW9yZ2FuaXplZERpcikpIHtcbiAgICAgICAgaWYgKGZpbGVuYW1lWzBdID09PSBcIi5cIikge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgZnMucmVtb3ZlU3luYyhwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBmaWxlbmFtZSkpXG4gICAgICB9XG4gICAgICBjb25zdCBhY3RldXJzUmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBcImFjdGV1cnNcIilcbiAgICAgIGZzLm1rZGlyU3luYyhhY3RldXJzUmVvcmdhbml6ZWREaXIpXG4gICAgICBjb25zdCBvcmdhbmVzUmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBcIm9yZ2FuZXNcIilcbiAgICAgIGZzLm1rZGlyU3luYyhvcmdhbmVzUmVvcmdhbml6ZWREaXIpXG5cbiAgICAgIHN3aXRjaCAoZGF0YXNldC5zdHJ1Y3R1cmUpIHtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGU6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbERhdGE6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICA/IEFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0LnRvQWN0ZXVyc0V0T3JnYW5lcyhvcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIDogSlNPTi5wYXJzZShvcmlnaW5hbEpzb24pXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgYWN0ZXVyIG9mIG9yaWdpbmFsRGF0YS5leHBvcnQuYWN0ZXVycy5hY3RldXIpIHtcbiAgICAgICAgICAgICAgY29uc3QgcmVvcmdhbml6ZWRKc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBhY3RldXJzUmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgICAgICAgYWN0ZXVyLnVpZFtcIiN0ZXh0XCJdICsgXCIuanNvblwiLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgcmVvcmdhbml6ZWRKc29uRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoYWN0ZXVyLCBudWxsLCAyKSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IG9yZ2FuZSBvZiBvcmlnaW5hbERhdGEuZXhwb3J0Lm9yZ2FuZXMub3JnYW5lKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlb3JnYW5pemVkSnNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JnYW5lc1Jlb3JnYW5pemVkRGlyLFxuICAgICAgICAgICAgICAgIG9yZ2FuZS51aWQgKyBcIi5qc29uXCIsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgICAgICAgICByZW9yZ2FuaXplZEpzb25GaWxlUGF0aCxcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShvcmdhbmUsIG51bGwsIDIpLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlczpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBkZXBvcnRzQnlBY3RldXJVaWQ6IHtcbiAgICAgICAgICAgICAgW2FjdGV1clVpZDogc3RyaW5nXTogeyB1aWQ6IHN0cmluZyB9W11cbiAgICAgICAgICAgIH0gPSB7fVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBmcy5leGlzdHNTeW5jKFxuICAgICAgICAgICAgICAgIHBhdGguam9pbihvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLCBcImRlcG9ydFwiKSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGZvciAoY29uc3QgZGVwb3J0U3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICBbXCJkZXBvcnRcIl0sXG4gICAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkZXBvcnRGaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgICBkZXBvcnRTcGxpdFBhdGhbZGVwb3J0U3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgICAgaWYgKCFkZXBvcnRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBkZXBvcnRPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAgIC4uLmRlcG9ydFNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICAgIGAgIExvYWRpbmcgXCJkZXBvcnRcIiBmaWxlOiAke2RlcG9ydE9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZGVwb3J0T3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgICBkZXBvcnRPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBjb25zdCBkZXBvcnRPcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgICA/IEFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0LnRvRGVwb3J0KGRlcG9ydE9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShkZXBvcnRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgY29uc3QgZGVwb3J0ID0gZGVwb3J0T3JpZ2luYWwuZGVwb3J0XG4gICAgICAgICAgICAgICAgbGV0IGRlcG9ydHMgPSBkZXBvcnRzQnlBY3RldXJVaWRbZGVwb3J0LmFjdGV1clJlZl1cbiAgICAgICAgICAgICAgICBpZiAoZGVwb3J0cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICBkZXBvcnRzID0gZGVwb3J0c0J5QWN0ZXVyVWlkW2RlcG9ydC5hY3RldXJSZWZdID0gW11cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVwb3J0cy5wdXNoKGRlcG9ydClcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGZvciAoY29uc3QgZGVwb3J0cyBvZiBPYmplY3QudmFsdWVzKGRlcG9ydHNCeUFjdGV1clVpZCkpIHtcbiAgICAgICAgICAgICAgICBkZXBvcnRzLnNvcnQoKGEsIGIpID0+XG4gICAgICAgICAgICAgICAgICBhLnVpZC5sZW5ndGggPT09IGIudWlkLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICA/IGEudWlkLmxvY2FsZUNvbXBhcmUoYi51aWQpXG4gICAgICAgICAgICAgICAgICAgIDogYS51aWQubGVuZ3RoIC0gYi51aWQubGVuZ3RoLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBtYW5kYXRzQnlBY3RldXJVaWQ6IHtcbiAgICAgICAgICAgICAgW2FjdGV1clVpZDogc3RyaW5nXTogeyB1aWQ6IHN0cmluZyB9W11cbiAgICAgICAgICAgIH0gPSB7fVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBmcy5leGlzdHNTeW5jKFxuICAgICAgICAgICAgICAgIHBhdGguam9pbihvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLCBcIm1hbmRhdFwiKSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGZvciAoY29uc3QgbWFuZGF0U3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICBbXCJtYW5kYXRcIl0sXG4gICAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtYW5kYXRGaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgICBtYW5kYXRTcGxpdFBhdGhbbWFuZGF0U3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgICAgaWYgKCFtYW5kYXRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBtYW5kYXRPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAgIC4uLm1hbmRhdFNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICAgIGAgIExvYWRpbmcgXCJtYW5kYXRcIiBmaWxlOiAke21hbmRhdE9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgbWFuZGF0T3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgICBtYW5kYXRPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBjb25zdCBtYW5kYXRPcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgICA/IEFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0LnRvTWFuZGF0KG1hbmRhdE9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShtYW5kYXRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgY29uc3QgbWFuZGF0ID0gbWFuZGF0T3JpZ2luYWwubWFuZGF0XG4gICAgICAgICAgICAgICAgbGV0IG1hbmRhdHMgPSBtYW5kYXRzQnlBY3RldXJVaWRbbWFuZGF0LmFjdGV1clJlZl1cbiAgICAgICAgICAgICAgICBpZiAobWFuZGF0cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICBtYW5kYXRzID0gbWFuZGF0c0J5QWN0ZXVyVWlkW21hbmRhdC5hY3RldXJSZWZdID0gW11cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbWFuZGF0cy5wdXNoKG1hbmRhdClcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGZvciAoY29uc3QgbWFuZGF0cyBvZiBPYmplY3QudmFsdWVzKG1hbmRhdHNCeUFjdGV1clVpZCkpIHtcbiAgICAgICAgICAgICAgICBtYW5kYXRzLnNvcnQoKGEsIGIpID0+XG4gICAgICAgICAgICAgICAgICBhLnVpZC5sZW5ndGggPT09IGIudWlkLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICA/IGEudWlkLmxvY2FsZUNvbXBhcmUoYi51aWQpXG4gICAgICAgICAgICAgICAgICAgIDogYS51aWQubGVuZ3RoIC0gYi51aWQubGVuZ3RoLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGFjdGV1clNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICBbXCJhY3RldXJcIl0sXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGFjdGV1ckZpbGVuYW1lID0gYWN0ZXVyU3BsaXRQYXRoW2FjdGV1clNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICBpZiAoIWFjdGV1ckZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGFjdGV1ck9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5hY3RldXJTcGxpdFBhdGgsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYCAgUmVvcmdhbml6aW5nIFwiYWN0ZXVyXCIgZmlsZTogJHthY3RldXJPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGFjdGV1ck9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIGFjdGV1ck9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3QgYWN0ZXVyT3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gQWN0ZXVyc0V0T3JnYW5lc1Jhd0NvbnZlcnQudG9BY3RldXIoYWN0ZXVyT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShhY3RldXJPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IGFjdGV1ciA9IGFjdGV1ck9yaWdpbmFsLmFjdGV1clxuICAgICAgICAgICAgICBjb25zdCBhY3RldXJVaWQgPSBhY3RldXIudWlkW1wiI3RleHRcIl1cbiAgICAgICAgICAgICAgY29uc3QgZGVwb3J0cyA9IGRlcG9ydHNCeUFjdGV1clVpZFthY3RldXJVaWRdXG4gICAgICAgICAgICAgIGlmIChkZXBvcnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYWN0ZXVyLmRlcG9ydHMsIHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBhY3RldXIuZGVwb3J0cyA9IHsgZGVwb3J0OiBkZXBvcnRzIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBtYW5kYXRzID0gbWFuZGF0c0J5QWN0ZXVyVWlkW2FjdGV1clVpZF1cbiAgICAgICAgICAgICAgaWYgKG1hbmRhdHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChhY3RldXIubWFuZGF0cywgdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIGFjdGV1ci5tYW5kYXRzID0geyBtYW5kYXQ6IG1hbmRhdHMgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGFjdGV1clJlb3JnYW5pemVkSnNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgYWN0ZXVyc1Jlb3JnYW5pemVkRGlyLFxuICAgICAgICAgICAgICAgIGFjdGV1clVpZCArIFwiLmpzb25cIixcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIGFjdGV1clJlb3JnYW5pemVkSnNvbkZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGFjdGV1ciwgbnVsbCwgMiksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChjb25zdCBvcmdhbmVTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgW1wib3JnYW5lXCJdLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCBvcmdhbmVGaWxlbmFtZSA9IG9yZ2FuZVNwbGl0UGF0aFtvcmdhbmVTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgaWYgKCFvcmdhbmVGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBvcmdhbmVPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4ub3JnYW5lU3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcIm9yZ2FuZVwiIGZpbGU6ICR7b3JnYW5lT3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBvcmdhbmVPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBvcmdhbmVPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IG9yZ2FuZU9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IEFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0LnRvT3JnYW5lKG9yZ2FuZU9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uob3JnYW5lT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICBjb25zdCBvcmdhbmUgPSBvcmdhbmVPcmlnaW5hbC5vcmdhbmVcbiAgICAgICAgICAgICAgY29uc3Qgb3JnYW5lUmVvcmdhbml6ZWRKc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmdhbmVzUmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgICAgICAgb3JnYW5lLnVpZCArIFwiLmpzb25cIixcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIG9yZ2FuZVJlb3JnYW5pemVkSnNvbkZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KG9yZ2FuZSwgbnVsbCwgMiksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBjb21taXRBbmRQdXNoKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgb3B0aW9ucy5jb21taXQsIG9wdGlvbnMucmVtb3RlKVxuICAgICAgKSB7XG4gICAgICAgIGVycm9yID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWdlbmRhcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hZ2VuZGFzKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUsXG4gICAgICApXG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBSZW9yZ2FuaXppbmcgJHtvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRofWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShcbiAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgXCIuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldFJlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgZnMuZW5zdXJlRGlyU3luYyhkYXRhc2V0UmVvcmdhbml6ZWREaXIpXG4gICAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGZzLnJlYWRkaXJTeW5jKGRhdGFzZXRSZW9yZ2FuaXplZERpcikpIHtcbiAgICAgICAgaWYgKGZpbGVuYW1lWzBdID09PSBcIi5cIikge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgZnMucmVtb3ZlU3luYyhwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBmaWxlbmFtZSkpXG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAoZGF0YXNldC5zdHJ1Y3R1cmUpIHtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGU6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbERhdGE6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICA/IEFnZW5kYXNSYXdDb252ZXJ0LnRvQWdlbmRhcyhvcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIDogSlNPTi5wYXJzZShvcmlnaW5hbEpzb24pXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgcmV1bmlvbiBvZiBvcmlnaW5hbERhdGEucmV1bmlvbnMucmV1bmlvbikge1xuICAgICAgICAgICAgICB3cml0ZVJldW5pb25SZW9yZ2FuaXplZEpzb24oZGF0YXNldFJlb3JnYW5pemVkRGlyLCByZXVuaW9uKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgICAge1xuICAgICAgICAgICAgZm9yIChjb25zdCByZXVuaW9uU3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIFtcInJldW5pb25cIl0sXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJldW5pb25GaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgcmV1bmlvblNwbGl0UGF0aFtyZXVuaW9uU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghcmV1bmlvbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHJldW5pb25PcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4ucmV1bmlvblNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJyZXVuaW9uXCIgZmlsZTogJHtyZXVuaW9uT3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCByZXVuaW9uT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgcmV1bmlvbk9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3QgcmV1bmlvbk9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IEFnZW5kYXNSYXdDb252ZXJ0LnRvUmV1bmlvbihyZXVuaW9uT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShyZXVuaW9uT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICBjb25zdCByZXVuaW9uID0gcmV1bmlvbk9yaWdpbmFsLnJldW5pb25cbiAgICAgICAgICAgICAgd3JpdGVSZXVuaW9uUmVvcmdhbml6ZWRKc29uKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgcmV1bmlvbilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBjb21taXRBbmRQdXNoKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgb3B0aW9ucy5jb21taXQsIG9wdGlvbnMucmVtb3RlKVxuICAgICAgKSB7XG4gICAgICAgIGVycm9yID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQW1lbmRlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKFxuICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICBcIi5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9LmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0UmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBmcy5lbnN1cmVEaXJTeW5jKGRhdGFzZXRSZW9yZ2FuaXplZERpcilcbiAgICAgIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZnMucmVhZGRpclN5bmMoZGF0YXNldFJlb3JnYW5pemVkRGlyKSkge1xuICAgICAgICBpZiAoZmlsZW5hbWVbMF0gPT09IFwiLlwiKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBmcy5yZW1vdmVTeW5jKHBhdGguam9pbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIGZpbGVuYW1lKSlcbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2luZ2xlRmlsZTpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRGF0YTogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgID8gQW1lbmRlbWVudHNSYXdDb252ZXJ0LnRvQW1lbmRlbWVudHMob3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uob3JpZ2luYWxKc29uKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHRleHRlTGVnaXNsYXRpZiBvZiBvcmlnaW5hbERhdGEudGV4dGVzRXRBbWVuZGVtZW50c1xuICAgICAgICAgICAgICAudGV4dGVsZWcpIHtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50IG9mIHRleHRlTGVnaXNsYXRpZi5hbWVuZGVtZW50cykge1xuICAgICAgICAgICAgICAgIHdyaXRlQW1lbmRlbWVudFJlb3JnYW5pemVkSnNvbihcbiAgICAgICAgICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICAgIGFtZW5kZW1lbnQsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlczpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGFtZW5kZW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoW2FtZW5kZW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgaWYgKCFhbWVuZGVtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudE9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5hbWVuZGVtZW50U3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcImFtZW5kZW1lbnRcIiBmaWxlOiAke2FtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBhbWVuZGVtZW50T3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50T3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gQW1lbmRlbWVudHNSYXdDb252ZXJ0LnRvQW1lbmRlbWVudFdyYXBwZXIoXG4gICAgICAgICAgICAgICAgICAgIGFtZW5kZW1lbnRPcmlnaW5hbEpzb24sXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKGFtZW5kZW1lbnRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnQgPSBhbWVuZGVtZW50T3JpZ2luYWwuYW1lbmRlbWVudFxuICAgICAgICAgICAgICB3cml0ZUFtZW5kZW1lbnRSZW9yZ2FuaXplZEpzb24oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBhbWVuZGVtZW50KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIGNvbW1pdEFuZFB1c2goZGF0YXNldFJlb3JnYW5pemVkRGlyLCBvcHRpb25zLmNvbW1pdCwgb3B0aW9ucy5yZW1vdGUpXG4gICAgICApIHtcbiAgICAgICAgZXJyb3IgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Eb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKFxuICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICBcIi5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9LmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0UmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBmcy5lbnN1cmVEaXJTeW5jKGRhdGFzZXRSZW9yZ2FuaXplZERpcilcbiAgICAgIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZnMucmVhZGRpclN5bmMoZGF0YXNldFJlb3JnYW5pemVkRGlyKSkge1xuICAgICAgICBpZiAoZmlsZW5hbWVbMF0gPT09IFwiLlwiKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBmcy5yZW1vdmVTeW5jKHBhdGguam9pbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIGZpbGVuYW1lKSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRvY3VtZW50c0RpciA9IHBhdGguam9pbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIFwiZG9jdW1lbnRzXCIpXG4gICAgICBmcy5ta2RpclN5bmMoZG9jdW1lbnRzRGlyKVxuICAgICAgY29uc3QgZG9zc2llcnNEaXIgPSBwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBcImRvc3NpZXJzXCIpXG4gICAgICBmcy5ta2RpclN5bmMoZG9zc2llcnNEaXIpXG5cbiAgICAgIHN3aXRjaCAoZGF0YXNldC5zdHJ1Y3R1cmUpIHtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGU6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbERhdGE6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICA/IERvc3NpZXJzTGVnaXNsYXRpZnNSYXdDb252ZXJ0LnRvRG9zc2llcnNMZWdpc2xhdGlmcyhcbiAgICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbixcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIDogSlNPTi5wYXJzZShvcmlnaW5hbEpzb24pXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9jdW1lbnQgb2Ygb3JpZ2luYWxEYXRhLmV4cG9ydC50ZXh0ZXNMZWdpc2xhdGlmc1xuICAgICAgICAgICAgICAuZG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgd3JpdGVEb2N1bWVudFJlb3JnYW5pemVkSnNvbihkb2N1bWVudHNEaXIsIGRvY3VtZW50KVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHsgZG9zc2llclBhcmxlbWVudGFpcmUgfSBvZiBvcmlnaW5hbERhdGEuZXhwb3J0XG4gICAgICAgICAgICAgIC5kb3NzaWVyc0xlZ2lzbGF0aWZzLmRvc3NpZXIpIHtcbiAgICAgICAgICAgICAgd3JpdGVEb3NzaWVyUGFybGVtZW50YWlyZVJlb3JnYW5pemVkSnNvbihcbiAgICAgICAgICAgICAgICBkb3NzaWVyc0RpcixcbiAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgICAge1xuICAgICAgICAgICAgZm9yIChjb25zdCBkb2N1bWVudFNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICBbXCJkb2N1bWVudFwiXSxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRGaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgZG9jdW1lbnRTcGxpdFBhdGhbZG9jdW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgaWYgKCFkb2N1bWVudEZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50T3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIC4uLmRvY3VtZW50U3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcImRvY3VtZW50XCIgZmlsZTogJHtkb2N1bWVudE9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBkb2N1bWVudE9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRPcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBEb3NzaWVyc0xlZ2lzbGF0aWZzUmF3Q29udmVydC50b0RvY3VtZW50KGRvY3VtZW50T3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShkb2N1bWVudE9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3QgZG9jdW1lbnQgPSBkb2N1bWVudE9yaWdpbmFsLmRvY3VtZW50XG4gICAgICAgICAgICAgIHdyaXRlRG9jdW1lbnRSZW9yZ2FuaXplZEpzb24oZG9jdW1lbnRzRGlyLCBkb2N1bWVudClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZVNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICBbXCJkb3NzaWVyUGFybGVtZW50YWlyZVwiXSxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVGaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGhbXG4gICAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZVNwbGl0UGF0aC5sZW5ndGggLSAxXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICBpZiAoIWRvc3NpZXJQYXJsZW1lbnRhaXJlRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4uZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGgsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYCAgUmVvcmdhbml6aW5nIFwiZG9zc2llclBhcmxlbWVudGFpcmVcIiBmaWxlOiAke2Rvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IERvc3NpZXJzTGVnaXNsYXRpZnNSYXdDb252ZXJ0LnRvRG9zc2llclBhcmxlbWVudGFpcmUoXG4gICAgICAgICAgICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxKc29uLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmUgPVxuICAgICAgICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWwuZG9zc2llclBhcmxlbWVudGFpcmVcbiAgICAgICAgICAgICAgd3JpdGVEb3NzaWVyUGFybGVtZW50YWlyZVJlb3JnYW5pemVkSnNvbihcbiAgICAgICAgICAgICAgICBkb3NzaWVyc0RpcixcbiAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIGNvbW1pdEFuZFB1c2goZGF0YXNldFJlb3JnYW5pemVkRGlyLCBvcHRpb25zLmNvbW1pdCwgb3B0aW9ucy5yZW1vdGUpXG4gICAgICApIHtcbiAgICAgICAgZXJyb3IgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5TY3J1dGlucykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5zY3J1dGlucykge1xuICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLFxuICAgICAgKVxuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgUmVvcmdhbml6aW5nICR7b3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aH1gKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoXG4gICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgIFwiLmpzb25cIixcbiAgICAgIClcbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX0uZ2l0YCwge1xuICAgICAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXRSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGZzLmVuc3VyZURpclN5bmMoZGF0YXNldFJlb3JnYW5pemVkRGlyKVxuICAgICAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBmcy5yZWFkZGlyU3luYyhkYXRhc2V0UmVvcmdhbml6ZWREaXIpKSB7XG4gICAgICAgIGlmIChmaWxlbmFtZVswXSA9PT0gXCIuXCIpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGZzLnJlbW92ZVN5bmMocGF0aC5qb2luKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgZmlsZW5hbWUpKVxuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxEYXRhOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgPyBTY3J1dGluc1Jhd0NvbnZlcnQudG9TY3J1dGlucyhvcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIDogSlNPTi5wYXJzZShvcmlnaW5hbEpzb24pXG5cbiAgICAgICAgICAgIGZvciAoY29uc3Qgc2NydXRpbiBvZiBvcmlnaW5hbERhdGEuc2NydXRpbnMuc2NydXRpbikge1xuICAgICAgICAgICAgICB3cml0ZVNjcnV0aW5SZW9yZ2FuaXplZEpzb24oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBzY3J1dGluKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgICAge1xuICAgICAgICAgICAgZm9yIChjb25zdCBzY3J1dGluU3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHNjcnV0aW5GaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgc2NydXRpblNwbGl0UGF0aFtzY3J1dGluU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghc2NydXRpbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHNjcnV0aW5PcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4uc2NydXRpblNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJzY3J1dGluXCIgZmlsZTogJHtzY3J1dGluT3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBzY3J1dGluT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgc2NydXRpbk9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3Qgc2NydXRpbk9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IFNjcnV0aW5zUmF3Q29udmVydC50b1NjcnV0aW5XcmFwcGVyKHNjcnV0aW5PcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKHNjcnV0aW5PcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IHNjcnV0aW4gPSBzY3J1dGluT3JpZ2luYWwuc2NydXRpblxuICAgICAgICAgICAgICB3cml0ZVNjcnV0aW5SZW9yZ2FuaXplZEpzb24oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBzY3J1dGluKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIGNvbW1pdEFuZFB1c2goZGF0YXNldFJlb3JnYW5pemVkRGlyLCBvcHRpb25zLmNvbW1pdCwgb3B0aW9ucy5yZW1vdGUpXG4gICAgICApIHtcbiAgICAgICAgZXJyb3IgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUmVzdG9yZSBzdGFuZGFyZCBjb252ZXJzaW9uIG9mIGRhdGVzIHRvIEpTT04uXG4gIERhdGUucHJvdG90eXBlLnRvSlNPTiA9IGV4aXN0aW5nRGF0ZVRvSnNvblxuXG4gIHJldHVybiBlcnJvclxufVxuXG5mdW5jdGlvbiB3cml0ZUFtZW5kZW1lbnRSZW9yZ2FuaXplZEpzb24oXG4gIGRhdGFzZXRSZW9yZ2FuaXplZERpcjogc3RyaW5nLFxuICBhbWVuZGVtZW50OiB7XG4gICAgdWlkOiBzdHJpbmdcbiAgICB0ZXh0ZUxlZ2lzbGF0aWZSZWY6IHN0cmluZ1xuICB9LFxuKTogdm9pZCB7XG4gIGNvbnN0IHVpZFRleHRlTGVnaXNsYXRpZiA9IGFtZW5kZW1lbnQudGV4dGVMZWdpc2xhdGlmUmVmXG4gIGFzc2VydC5ub3RTdHJpY3RFcXVhbCh1aWRUZXh0ZUxlZ2lzbGF0aWYsIHVuZGVmaW5lZClcbiAgY29uc3QgdGV4dGVMZWdpc2xhdGlmRGlyID0gcGF0aC5qb2luKFxuICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICB1aWRUZXh0ZUxlZ2lzbGF0aWYsXG4gIClcbiAgZnMuZW5zdXJlRGlyU3luYyh0ZXh0ZUxlZ2lzbGF0aWZEaXIpXG4gIGNvbnN0IHJlb3JnYW5pemVkSnNvbkZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgIHRleHRlTGVnaXNsYXRpZkRpcixcbiAgICBhbWVuZGVtZW50LnVpZCArIFwiLmpzb25cIixcbiAgKVxuICBmcy53cml0ZUZpbGVTeW5jKFxuICAgIHJlb3JnYW5pemVkSnNvbkZpbGVQYXRoLFxuICAgIEpTT04uc3RyaW5naWZ5KGFtZW5kZW1lbnQsIG51bGwsIDIpLFxuICAgIHtcbiAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICB9LFxuICApXG59XG5cbmZ1bmN0aW9uIHdyaXRlRG9jdW1lbnRSZW9yZ2FuaXplZEpzb24oXG4gIGRvY3VtZW50c0Rpcjogc3RyaW5nLFxuICBkb2N1bWVudDogeyB1aWQ6IHN0cmluZyB9LFxuKTogdm9pZCB7XG4gIGNvbnN0IGJhc2VuYW1lID0gcGF0aEZyb21Eb2N1bWVudFVpZChkb2N1bWVudHNEaXIsIGRvY3VtZW50LnVpZClcbiAgZnMud3JpdGVGaWxlU3luYyhgJHtiYXNlbmFtZX0uanNvbmAsIEpTT04uc3RyaW5naWZ5KGRvY3VtZW50LCBudWxsLCAyKSwge1xuICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgfSlcbn1cblxuZnVuY3Rpb24gd3JpdGVEb3NzaWVyUGFybGVtZW50YWlyZVJlb3JnYW5pemVkSnNvbihcbiAgZG9zc2llcnNEaXI6IHN0cmluZyxcbiAgZG9zc2llclBhcmxlbWVudGFpcmU6IHsgdWlkOiBzdHJpbmcgfSxcbik6IHZvaWQge1xuICBjb25zdCBiYXNlbmFtZSA9IHBhdGhGcm9tRG9zc2llclBhcmxlbWVudGFpcmVVaWQoXG4gICAgZG9zc2llcnNEaXIsXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmUudWlkLFxuICApXG4gIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgYCR7YmFzZW5hbWV9Lmpzb25gLFxuICAgIEpTT04uc3RyaW5naWZ5KGRvc3NpZXJQYXJsZW1lbnRhaXJlLCBudWxsLCAyKSxcbiAgICB7XG4gICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgfSxcbiAgKVxufVxuXG5mdW5jdGlvbiB3cml0ZVJldW5pb25SZW9yZ2FuaXplZEpzb24oXG4gIHJldW5pb25zRGlyOiBzdHJpbmcsXG4gIHJldW5pb246IHsgdWlkOiBzdHJpbmcgfSxcbik6IHZvaWQge1xuICBjb25zdCBiYXNlbmFtZSA9IHBhdGhGcm9tUmV1bmlvblVpZChyZXVuaW9uc0RpciwgcmV1bmlvbi51aWQpXG4gIGZzLndyaXRlRmlsZVN5bmMoYCR7YmFzZW5hbWV9Lmpzb25gLCBKU09OLnN0cmluZ2lmeShyZXVuaW9uLCBudWxsLCAyKSwge1xuICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgfSlcbn1cblxuZnVuY3Rpb24gd3JpdGVTY3J1dGluUmVvcmdhbml6ZWRKc29uKFxuICBzY3J1dGluc0Rpcjogc3RyaW5nLFxuICBzY3J1dGluOiB7IHVpZDogc3RyaW5nIH0sXG4pOiB2b2lkIHtcbiAgY29uc3QgYmFzZW5hbWUgPSBwYXRoRnJvbVNjcnV0aW5VaWQoc2NydXRpbnNEaXIsIHNjcnV0aW4udWlkKVxuICBmcy53cml0ZUZpbGVTeW5jKGAke2Jhc2VuYW1lfS5qc29uYCwgSlNPTi5zdHJpbmdpZnkoc2NydXRpbiwgbnVsbCwgMiksIHtcbiAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gIH0pXG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKHByb2Nlc3MuYXJndlsxXS5lbmRzV2l0aChcInJlb3JnYW5pemVfZGF0YS50c1wiKSkge1xuICBjb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucylcblxuICBpZiAocmVvcmdhbml6ZURhdGEob3B0aW9ucykpIHtcbiAgICBwcm9jZXNzLmV4aXQoMSlcbiAgfSBlbHNlIHtcbiAgICBwcm9jZXNzLmV4aXQoMClcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxNQUFQLE1BQW1CLFFBQW5CO0FBQ0EsU0FBdUJDLFFBQXZCLFFBQXVDLGVBQXZDO0FBQ0EsT0FBT0MsZUFBUCxNQUE0QixtQkFBNUI7QUFDQSxPQUFPQyxFQUFQLE1BQWUsVUFBZjtBQUNBLE9BQU9DLElBQVAsTUFBaUIsTUFBakI7U0FFU0MsUSxFQUFVQyxnQixFQUFrQkMsZTtTQUM1QkMsa0IsRUFBb0JDLGlCO1NBQ3BCQyxPO1NBRVBDLG1CLEVBQ0FDLCtCLEVBQ0FDLGtCLEVBQ0FDLGtCO1NB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
@@ -424,4 +424,4 @@ retrievePhotosDeputes().then(function (error) {
424
424
  console.log(error);
425
425
  process.exit(2);
426
426
  });
427
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL3JldHJpZXZlX2RlcHV0ZXNfcGhvdG9zLnRzIl0sIm5hbWVzIjpbIm9wdGlvbnNEZWZpbml0aW9ucyIsImFsaWFzIiwiaGVscCIsIm5hbWUiLCJ0eXBlIiwiU3RyaW5nIiwiQm9vbGVhbiIsImRlZmF1bHRWYWx1ZSIsIm11bHRpcGxlIiwiZGVmYXVsdE9wdGlvbiIsIm9wdGlvbnMiLCJwaXBlbGluZSIsInV0aWwiLCJwcm9taXNpZnkiLCJzdHJlYW0iLCJjb21taXRBbmRQdXNoIiwicmVwb3NpdG9yeURpciIsImNvbW1pdCIsInJlbW90ZXMiLCJlcnJvciIsImN3ZCIsImVudiIsInByb2Nlc3MiLCJlbmNvZGluZyIsInN0ZGlvIiwiY2hpbGRQcm9jZXNzIiwic3RkZXJyIiwidGVzdCIsInN0ZG91dCIsImNvbnNvbGUiLCJvdXRwdXQiLCJyZW1vdGUiLCJyZXRyaWV2ZVBob3Rvc0RlcHV0ZXMiLCJkYXRhRGlyIiwiRW5hYmxlZERhdGFzZXRzIiwiQWN0ZXVyc0V0T3JnYW5lcyIsImxlZ2lzbGF0dXJlIiwiYWN0ZXVyQnlVaWQiLCJkZXB1dGVzTGVnaXNsYXR1cmUiLCJPYmplY3QiLCJ2YWx1ZXMiLCJmaWx0ZXIiLCJhY3RldXIiLCJtYW5kYXRzIiwibWFuZGF0RGVwdXRlTGVnaXNsYXR1cmUiLCJtYW5kYXQiLCJ4c2lUeXBlIiwiVHlwZU1hbmRhdCIsIk1hbmRhdFBhcmxlbWVudGFpcmVUeXBlIiwidHlwZU9yZ2FuZSIsIkNvZGVUeXBlT3JnYW5lIiwiQXNzZW1ibGVlIiwidW5kZWZpbmVkIiwic29ydCIsImEiLCJiIiwidWlkIiwibGVuZ3RoIiwibG9jYWxlQ29tcGFyZSIsImdpdEdyb3VwVXJsIiwiY2xvbmUiLCJ0cmltIiwicmVwbGFjZSIsInBob3Rvc0Rpck5hbWUiLCJwaG90b3NEaXIiLCJwYXRoIiwiam9pbiIsImZzIiwiZW5zdXJlRGlyU3luYyIsImZldGNoIiwibWlzc2luZ1Bob3RvRmlsZVBhdGgiLCJkZXB1dGUiLCJpZGVudCIsImV0YXRDaXZpbCIsIm51bWVyb0RlcHV0ZSIsInN1YnN0cmluZyIsInBob3RvRmlsZW5hbWUiLCJwaG90b0ZpbGVQYXRoIiwicGhvdG9UZW1wRmlsZW5hbWUiLCJwaG90b1RlbXBGaWxlUGF0aCIsInVybFBob3RvIiwic2lsZW50IiwibG9nIiwicHJlbm9tIiwibm9tIiwicmV0cmllcyIsInJlc3BvbnNlIiwib2siLCJib2R5IiwiY3JlYXRlV3JpdGVTdHJlYW0iLCJyZW5hbWVTeW5jIiwid2FybiIsInN0YXR1cyIsInN0YXR1c1RleHQiLCJ0ZXh0IiwiZXhpc3RzU3luYyIsImNvcHlGaWxlU3luYyIsInBob3RvQnlJZERlcHV0ZSIsInJvd3NGaWxlbmFtZXMiLCJkZXB1dGVJbmRleCIsInJvd0luZGV4Iiwicm93Iiwic2xpY2UiLCJwaG90b3NGaWxlbmFtZXMiLCJlbnRyaWVzIiwiY29sdW1uSW5kZXgiLCJwdXNoIiwiY2hlbWluIiwiY2hlbWluTW9zYWlxdWUiLCJoYXV0ZXVyIiwibGFyZ2V1ciIsInhNb3NhaXF1ZSIsInlNb3NhaXF1ZSIsInJvd0ZpbGVuYW1lIiwidW5saW5rU3luYyIsImpzb25GaWxlUGF0aCIsIndyaXRlRmlsZVN5bmMiLCJKU09OIiwic3RyaW5naWZ5IiwidGhlbiIsImV4aXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPQSxJQUFNQSxrQkFBa0IsR0FBRyxDQUN6QjtBQUNFQyxFQUFBQSxLQUFLLEVBQUUsR0FEVDtBQUVFQyxFQUFBQSxJQUFJLEVBQUUsK0RBRlI7QUFHRUMsRUFBQUEsSUFBSSxFQUFFLE9BSFI7QUFJRUMsRUFBQUEsSUFBSSxFQUFFQztBQUpSLENBRHlCLEVBT3pCO0FBQ0VKLEVBQUFBLEtBQUssRUFBRSxHQURUO0FBRUVDLEVBQUFB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RixJQURILENBQ1EsVUFBQ3BHLEtBQUQ7QUFBQSxTQUFXRyxPQUFPLENBQUNrRyxJQUFSLENBQWFyRyxLQUFLLEdBQUcsQ0FBSCxHQUFPLENBQXpCLENBQVg7QUFBQSxDQURSLFdBRVMsVUFBQ0EsS0FBRCxFQUFXO0FBQ2hCVSxFQUFBQSxPQUFPLENBQUNxRCxHQUFSLENBQVkvRCxLQUFaO0FBQ0FHLEVBQUFBLE9BQU8sQ0FBQ2tHLElBQVIsQ0FBYSxDQUFiO0FBQ0QsQ0FMSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoaWxkUHJvY2VzcywgZXhlY1N5bmMgfSBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiXG5pbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBmZXRjaCBmcm9tIFwibm9kZS1mZXRjaFwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQgc3RyZWFtIGZyb20gXCJzdHJlYW1cIlxuaW1wb3J0IHV0aWwgZnJvbSBcInV0aWxcIlxuXG5pbXBvcnQgeyBFbmFibGVkRGF0YXNldHMgfSBmcm9tIFwiLi4vZGF0YXNldHNcIlxuaW1wb3J0IHsgbG9hZEFzc2VtYmxlZURhdGEgfSBmcm9tIFwiLi4vbG9hZGVyc1wiXG5pbXBvcnQge1xuICBDb2RlVHlwZU9yZ2FuZSxcbiAgTWFuZGF0LFxuICBQaG90byxcbiAgVHlwZU1hbmRhdCxcbn0gZnJvbSBcIi4uL3R5cGVzL2FjdGV1cnNfZXRfb3JnYW5lc1wiXG5cbmNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAge1xuICAgIGFsaWFzOiBcIkNcIixcbiAgICBoZWxwOiBcImNsb25lIHJlcG9zaXRvcmllcyBmcm9tIGdpdmVuIGdyb3VwIChvciBvcmdhbml6YXRpb24pIGdpdCBVUkxcIixcbiAgICBuYW1lOiBcImNsb25lXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwiY1wiLFxuICAgIGhlbHA6IFwiY29tbWl0IHBob3Rvc1wiLFxuICAgIG5hbWU6IFwiY29tbWl0XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcImZcIixcbiAgICBoZWxwOiBcImZldGNoIGTDqXB1dMOpcycgcGljdHVyZXMgaW5zdGVhZCBvZiByZXRyaWV2aW5nIHRoZW0gZnJvbSBmaWxlc1wiLFxuICAgIG5hbWU6IFwiZmV0Y2hcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwibFwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCIxNVwiLFxuICAgIG5hbWU6IFwibGVnaXNsYXR1cmVcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJyXCIsXG4gICAgaGVscDogXCJwdXNoIGNvbW1pdCB0byBnaXZlbiByZW1vdGVcIixcbiAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICBuYW1lOiBcInJlbW90ZVwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInNcIixcbiAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGRlZmF1bHRPcHRpb246IHRydWUsXG4gICAgaGVscDogXCJkaXJlY3RvcnkgY29udGFpbmluZyBBc3NlbWJsw6llIG9wZW4gZGF0YSBmaWxlc1wiLFxuICAgIG5hbWU6IFwiZGF0YURpclwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbl1cbmNvbnN0IG9wdGlvbnMgPSBjb21tYW5kTGluZUFyZ3Mob3B0aW9uc0RlZmluaXRpb25zKVxuY29uc3QgcGlwZWxpbmUgPSB1dGlsLnByb21pc2lmeShzdHJlYW0ucGlwZWxpbmUpXG5cbmZ1bmN0aW9uIGNvbW1pdEFuZFB1c2goXG4gIHJlcG9zaXRvcnlEaXI6IHN0cmluZyxcbiAgY29tbWl0OiBib29sZWFuLFxuICByZW1vdGVzPzogc3RyaW5nW10sXG4pOiBib29sZWFuIHtcbiAgbGV0IGVycm9yID0gZmFsc2VcbiAgaWYgKGNvbW1pdCkge1xuICAgIGV4ZWNTeW5jKFwiZ2l0IGFkZCAuXCIsIHtcbiAgICAgIGN3ZDogcmVwb3NpdG9yeURpcixcbiAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgfSlcbiAgICB0cnkge1xuICAgICAgZXhlY1N5bmMoJ2dpdCBjb21taXQgLW0gXCJOb3V2ZWxsZSBtb2lzc29uXCInLCB7XG4gICAgICAgIGN3ZDogcmVwb3NpdG9yeURpcixcbiAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgIH0pXG4gICAgfSBjYXRjaCAoY2hpbGRQcm9jZXNzKSB7XG4gICAgICBpZiAoXG4gICAgICAgIChjaGlsZFByb2Nlc3MgYXMgQ2hpbGRQcm9jZXNzKS5zdGRlcnIgPT09IG51bGwgfHxcbiAgICAgICAgIS9ub3RoaW5nIHRvIGNvbW1pdC8udGVzdCgoY2hpbGRQcm9jZXNzIGFzIGFueSkuc3Rkb3V0KVxuICAgICAgKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoKGNoaWxkUHJvY2VzcyBhcyBhbnkpLm91dHB1dClcbiAgICAgICAgdGhyb3cgY2hpbGRQcm9jZXNzXG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoY29uc3QgcmVtb3RlIG9mIHJlbW90ZXMgfHwgW10pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgcHVzaCAke3JlbW90ZX0gbWFzdGVyYCwge1xuICAgICAgICAgIGN3ZDogcmVwb3NpdG9yeURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9IGNhdGNoIChjaGlsZFByb2Nlc3MpIHtcbiAgICAgICAgLy8gRG9uJ3Qgc3RvcCB3aGVuIHB1c2ggZmFpbHMuXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoKGNoaWxkUHJvY2VzcyBhcyBhbnkpLm91dHB1dClcbiAgICAgICAgZXJyb3IgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBlcnJvclxufVxuXG5hc3luYyBmdW5jdGlvbiByZXRyaWV2ZVBob3Rvc0RlcHV0ZXMoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IGRhdGFEaXIgPSBvcHRpb25zLmRhdGFEaXJcbiAgY29uc3QgeyBhY3RldXJCeVVpZCB9ID0gbG9hZEFzc2VtYmxlZURhdGEoXG4gICAgZGF0YURpcixcbiAgICBFbmFibGVkRGF0YXNldHMuQWN0ZXVyc0V0T3JnYW5lcyxcbiAgICBvcHRpb25zLmxlZ2lzbGF0dXJlLFxuICApXG4gIGNvbnN0IGRlcHV0ZXNMZWdpc2xhdHVyZSA9IE9iamVjdC52YWx1ZXMoYWN0ZXVyQnlVaWQpXG4gICAgLmZpbHRlcigoYWN0ZXVyKSA9PiB7XG4gICAgICBjb25zdCB7IG1hbmRhdHMgfSA9IGFjdGV1clxuICAgICAgaWYgKCFtYW5kYXRzKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgY29uc3QgbWFuZGF0RGVwdXRlTGVnaXNsYXR1cmUgPSBtYW5kYXRzLmZpbHRlcihcbiAgICAgICAgKG1hbmRhdDogTWFuZGF0KSA9PlxuICAgICAgICAgIG1hbmRhdC54c2lUeXBlID09PSBUeXBlTWFuZGF0Lk1hbmRhdFBhcmxlbWVudGFpcmVUeXBlICYmXG4gICAgICAgICAgbWFuZGF0LmxlZ2lzbGF0dXJlID09PSBvcHRpb25zLmxlZ2lzbGF0dXJlICYmXG4gICAgICAgICAgbWFuZGF0LnR5cGVPcmdhbmUgPT09IENvZGVUeXBlT3JnYW5lLkFzc2VtYmxlZSxcbiAgICAgIClbMF1cbiAgICAgIHJldHVybiBtYW5kYXREZXB1dGVMZWdpc2xhdHVyZSAhPT0gdW5kZWZpbmVkXG4gICAgfSlcbiAgICAuc29ydCgoYSwgYikgPT5cbiAgICAgIGEudWlkLmxlbmd0aCA9PT0gYi51aWQubGVuZ3RoXG4gICAgICAgID8gYS51aWQubG9jYWxlQ29tcGFyZShiLnVpZClcbiAgICAgICAgOiBhLnVpZC5sZW5ndGggLSBiLnVpZC5sZW5ndGgsXG4gICAgKVxuXG4gIGNvbnN0IGdpdEdyb3VwVXJsID0gb3B0aW9ucy5jbG9uZVxuICAgID8gb3B0aW9ucy5jbG9uZS50cmltKCkucmVwbGFjZSgvXFwvKyQvLCBcIlwiKVxuICAgIDogdW5kZWZpbmVkXG4gIGNvbnN0IHBob3Rvc0Rpck5hbWUgPSBgcGhvdG9zX2RlcHV0ZXNfJHtvcHRpb25zLmxlZ2lzbGF0dXJlfWBcbiAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7cGhvdG9zRGlyTmFtZX0uZ2l0YCwge1xuICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICB9KVxuICB9XG4gIGNvbnN0IHBob3Rvc0RpciA9IHBhdGguam9pbihkYXRhRGlyLCBwaG90b3NEaXJOYW1lKVxuXG4gIC8vIERvd25sb2FkIHBob3Rvcy5cbiAgZnMuZW5zdXJlRGlyU3luYyhwaG90b3NEaXIpXG4gIGlmIChvcHRpb25zLmZldGNoKSB7XG4gICAgY29uc3QgbWlzc2luZ1Bob3RvRmlsZVBhdGggPSBcImltYWdlcy90cmFuc3BhcmVudF8xNTB4MTkyLmpwZ1wiXG4gICAgZm9yIChjb25zdCBkZXB1dGUgb2YgZGVwdXRlc0xlZ2lzbGF0dXJlKSB7XG4gICAgICBjb25zdCBpZGVudCA9IGRlcHV0ZS5ldGF0Q2l2aWwuaWRlbnRcbiAgICAgIGNvbnN0IG51bWVyb0RlcHV0ZSA9IGRlcHV0ZS51aWQuc3Vic3RyaW5nKDIpXG4gICAgICBjb25zdCBwaG90b0ZpbGVuYW1lID0gYCR7bnVtZXJvRGVwdXRlfS5qcGdgXG4gICAgICBjb25zdCBwaG90b0ZpbGVQYXRoID0gcGF0aC5qb2luKHBob3Rvc0RpciwgcGhvdG9GaWxlbmFtZSlcbiAgICAgIGNvbnN0IHBob3RvVGVtcEZpbGVuYW1lID0gYCR7bnVtZXJvRGVwdXRlfV90ZW1wLmpwZ2BcbiAgICAgIGNvbnN0IHBob3RvVGVtcEZpbGVQYXRoID0gcGF0aC5qb2luKHBob3Rvc0RpciwgcGhvdG9UZW1wRmlsZW5hbWUpXG4gICAgICBjb25zdCB1cmxQaG90byA9IGBodHRwOi8vd3d3Mi5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy90cmlidW4vJHtvcHRpb25zLmxlZ2lzbGF0dXJlfS9waG90b3MvJHtwaG90b0ZpbGVuYW1lfWBcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgYExvYWRpbmcgcGhvdG8gJHt1cmxQaG90b30gZm9yICR7aWRlbnQucHJlbm9tfSAke2lkZW50Lm5vbX3igKZgLFxuICAgICAgICApXG4gICAgICB9XG4gICAgICBmb3IgKGxldCByZXRyaWVzID0gMDsgcmV0cmllcyA8IDM7IHJldHJpZXMrKykge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybFBob3RvKVxuICAgICAgICBpZiAocmVzcG9uc2Uub2spIHtcbiAgICAgICAgICBhd2FpdCBwaXBlbGluZShyZXNwb25zZS5ib2R5LCBmcy5jcmVhdGVXcml0ZVN0cmVhbShwaG90b1RlbXBGaWxlUGF0aCkpXG4gICAgICAgICAgZnMucmVuYW1lU3luYyhwaG90b1RlbXBGaWxlUGF0aCwgcGhvdG9GaWxlUGF0aClcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXRyaWVzID49IDIpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBgRmV0Y2ggZmFpbGVkOiAke3VybFBob3RvfSAoJHtpZGVudC5wcmVub219ICR7aWRlbnQubm9tfSlgLFxuICAgICAgICAgIClcbiAgICAgICAgICBjb25zb2xlLndhcm4ocmVzcG9uc2Uuc3RhdHVzLCByZXNwb25zZS5zdGF0dXNUZXh0KVxuICAgICAgICAgIGNvbnNvbGUud2Fybihhd2FpdCByZXNwb25zZS50ZXh0KCkpXG4gICAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMocGhvdG9GaWxlUGF0aCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIiAgPT4gUmV1c2luZyBleGlzdGluZyBpbWFnZVwiKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCIgID0+IFVzaW5nIGJsYW5rIGltYWdlXCIpXG4gICAgICAgICAgICBmcy5jb3B5RmlsZVN5bmMobWlzc2luZ1Bob3RvRmlsZVBhdGgsIHBob3RvRmlsZVBhdGgpXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBSZXNpemUgcGhvdG9zIHRvIDE1MHgxOTIsIGJlY2F1c2Ugc29tZSBoYXZlbid0IGV4YWN0bHkgdGhpcyBzaXplLlxuICBmb3IgKGNvbnN0IGRlcHV0ZSBvZiBkZXB1dGVzTGVnaXNsYXR1cmUpIHtcbiAgICBjb25zdCBpZGVudCA9IGRlcHV0ZS5ldGF0Q2l2aWwuaWRlbnRcbiAgICBjb25zdCBudW1lcm9EZXB1dGUgPSBkZXB1dGUudWlkLnN1YnN0cmluZygyKVxuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgUmVzaXppbmcgcGhvdG8gJHtudW1lcm9EZXB1dGV9IGZvciAke2lkZW50LnByZW5vbX0gJHtpZGVudC5ub2194oCmYCxcbiAgICAgIClcbiAgICB9XG4gICAgZXhlY1N5bmMoXG4gICAgICBgZ20gY29udmVydCAtcmVzaXplIDE1MHgxOTIhICR7bnVtZXJvRGVwdXRlfS5qcGcgJHtudW1lcm9EZXB1dGV9XzE1MHgxOTIuanBnYCxcbiAgICAgIHtcbiAgICAgICAgY3dkOiBwaG90b3NEaXIsXG4gICAgICB9LFxuICAgIClcbiAgfVxuXG4gIC8vIENyZWF0ZSBhIG1vc2FpYyBvZiBwaG90b3MuXG4gIGNvbnN0IHBob3RvQnlJZERlcHV0ZTogeyBbdWlkOiBzdHJpbmddOiBQaG90byB9ID0ge31cbiAgY29uc3Qgcm93c0ZpbGVuYW1lczogc3RyaW5nW10gPSBbXVxuICBmb3IgKFxuICAgIGxldCBkZXB1dGVJbmRleCA9IDAsIHJvd0luZGV4ID0gMDtcbiAgICBkZXB1dGVJbmRleCA8IGRlcHV0ZXNMZWdpc2xhdHVyZS5sZW5ndGg7XG4gICAgZGVwdXRlSW5kZXggKz0gMjUsIHJvd0luZGV4KytcbiAgKSB7XG4gICAgY29uc3Qgcm93ID0gZGVwdXRlc0xlZ2lzbGF0dXJlLnNsaWNlKGRlcHV0ZUluZGV4LCBkZXB1dGVJbmRleCArIDI1KVxuICAgIGNvbnN0IHBob3Rvc0ZpbGVuYW1lczogc3RyaW5nW10gPSBbXVxuICAgIGZvciAoY29uc3QgW2NvbHVtbkluZGV4LCBkZXB1dGVdIG9mIHJvdy5lbnRyaWVzKCkpIHtcbiAgICAgIGNvbnN0IG51bWVyb0RlcHV0ZSA9IGRlcHV0ZS51aWQuc3Vic3RyaW5nKDIpXG4gICAgICBjb25zdCBwaG90b0ZpbGVuYW1lID0gYCR7bnVtZXJvRGVwdXRlfV8xNTB4MTkyLmpwZ2BcbiAgICAgIHBob3Rvc0ZpbGVuYW1lcy5wdXNoKHBob3RvRmlsZW5hbWUpXG4gICAgICBwaG90b0J5SWREZXB1dGVbZGVwdXRlLnVpZF0gPSB7XG4gICAgICAgIGNoZW1pbjogYHBob3Rvc19kZXB1dGVzXyR7b3B0aW9ucy5sZWdpc2xhdHVyZX0vJHtwaG90b0ZpbGVuYW1lfWAsXG4gICAgICAgIGNoZW1pbk1vc2FpcXVlOiBgcGhvdG9zX2RlcHV0ZXNfJHtvcHRpb25zLmxlZ2lzbGF0dXJlfS9kZXB1dGVzLmpwZ2AsXG4gICAgICAgIGhhdXRldXI6IDE5MixcbiAgICAgICAgbGFyZ2V1cjogMTUwLFxuICAgICAgICB4TW9zYWlxdWU6IGNvbHVtbkluZGV4ICogMTUwLFxuICAgICAgICB5TW9zYWlxdWU6IHJvd0luZGV4ICogMTkyLFxuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCByb3dGaWxlbmFtZSA9IGByb3ctJHtyb3dJbmRleH0uanBnYFxuICAgIGV4ZWNTeW5jKGBnbSBjb252ZXJ0ICR7cGhvdG9zRmlsZW5hbWVzLmpvaW4oXCIgXCIpfSArYXBwZW5kICR7cm93RmlsZW5hbWV9YCwge1xuICAgICAgY3dkOiBwaG90b3NEaXIsXG4gICAgfSlcbiAgICByb3dzRmlsZW5hbWVzLnB1c2gocm93RmlsZW5hbWUpXG4gIH1cbiAgZXhlY1N5bmMoYGdtIGNvbnZlcnQgJHtyb3dzRmlsZW5hbWVzLmpvaW4oXCIgXCIpfSAtYXBwZW5kIGRlcHV0ZXMuanBnYCwge1xuICAgIGN3ZDogcGhvdG9zRGlyLFxuICB9KVxuICBmb3IgKGNvbnN0IHJvd0ZpbGVuYW1lIG9mIHJvd3NGaWxlbmFtZXMpIHtcbiAgICBmcy51bmxpbmtTeW5jKHBhdGguam9pbihwaG90b3NEaXIsIHJvd0ZpbGVuYW1lKSlcbiAgfVxuXG4gIGNvbnN0IGpzb25GaWxlUGF0aCA9IHBhdGguam9pbihwaG90b3NEaXIsIFwiZGVwdXRlcy5qc29uXCIpXG4gIGZzLndyaXRlRmlsZVN5bmMoanNvbkZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShwaG90b0J5SWREZXB1dGUsIG51bGwsIDIpKVxuXG4gIHJldHVybiBjb21taXRBbmRQdXNoKHBob3Rvc0Rpciwgb3B0aW9ucy5jb21taXQsIG9wdGlvbnMucmVtb3RlKVxufVxuXG5yZXRyaWV2ZVBob3Rvc0RlcHV0ZXMoKVxuICAudGhlbigoZXJyb3IpID0+IHByb2Nlc3MuZXhpdChlcnJvciA/IDEgOiAwKSlcbiAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgIGNvbnNvbGUubG9nKGVycm9yKVxuICAgIHByb2Nlc3MuZXhpdCgyKVxuICB9KVxuIl19
427
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJvcHRpb25zRGVmaW5pdGlvbnMiLCJhbGlhcyIsImhlbHAiLCJuYW1lIiwidHlwZSIsIlN0cmluZyIsIkJvb2xlYW4iLCJkZWZhdWx0VmFsdWUiLCJtdWx0aXBsZSIsImRlZmF1bHRPcHRpb24iLCJvcHRpb25zIiwiY29tbWFuZExpbmVBcmdzIiwicGlwZWxpbmUiLCJ1dGlsIiwicHJvbWlzaWZ5Iiwic3RyZWFtIiwiY29tbWl0QW5kUHVzaCIsInJlcG9zaXRvcnlEaXIiLCJjb21taXQiLCJyZW1vdGVzIiwiZXJyb3IiLCJleGVjU3luYyIsImN3ZCIsImVudiIsInByb2Nlc3MiLCJlbmNvZGluZyIsInN0ZGlvIiwiY2hpbGRQcm9jZXNzIiwic3RkZXJyIiwidGVzdCIsInN0ZG91dCIsImNvbnNvbGUiLCJvdXRwdXQiLCJyZW1vdGUiLCJyZXRyaWV2ZVBob3Rvc0RlcHV0ZXMiLCJkYXRhRGlyIiwibG9hZEFzc2VtYmxlZURhdGEiLCJFbmFibGVkRGF0YXNldHMiLCJBY3RldXJzRXRPcmdhbmVzIiwibGVnaXNsYXR1cmUiLCJhY3RldXJCeVVpZCIsImRlcHV0ZXNMZWdpc2xhdHVyZSIsIk9iamVjdCIsInZhbHVlcyIsImZpbHRlciIsImFjdGV1ciIsIm1hbmRhdHMiLCJtYW5kYXREZXB1dGVMZWdpc2xhdHVyZSIsIm1hbmRhdCIsInhzaVR5cGUiLCJUeXBlTWFuZGF0IiwiTWFuZGF0UGFybGVtZW50YWlyZVR5cGUiLCJ0eXBlT3JnYW5lIiwiQ29kZVR5cGVPcmdhbmUiLCJBc3NlbWJsZWUiLCJ1bmRlZmluZWQiLCJzb3J0IiwiYSIsImIiLCJ1aWQiLCJsZW5ndGgiLCJsb2NhbGVDb21wYXJlIiwiZ2l0R3JvdXBVcmwiLCJjbG9uZSIsInRyaW0iLCJyZXBsYWNlIiwicGhvdG9zRGlyTmFtZSIsInBob3Rvc0RpciIsInBhdGgiLCJqb2luIiwiZnMiLCJlbnN1cmVEaXJTeW5jIiwiZmV0Y2giLCJtaXNzaW5nUGhvdG9GaWxlUGF0aCIsImRlcHV0ZSIsImlkZW50IiwiZXRhdENpdmlsIiwibnVtZXJvRGVwdXRlIiwic3Vic3RyaW5nIiwicGhvdG9GaWxlbmFtZSIsInBob3RvRmlsZVBhdGgiLCJwaG90b1RlbXBGaWxlbmFtZSIsInBob3RvVGVtcEZpbGVQYXRoIiwidXJsUGhvdG8iLCJzaWxlbnQiLCJsb2ciLCJwcmVub20iLCJub20iLCJyZXRyaWVzIiwicmVzcG9uc2UiLCJvayIsImJvZHkiLCJjcmVhdGVXcml0ZVN0cmVhbSIsInJlbmFtZVN5bmMiLCJ3YXJuIiwic3RhdHVzIiwic3RhdHVzVGV4dCIsInRleHQiLCJleGlzdHNTeW5jIiwiY29weUZpbGVTeW5jIiwicGhvdG9CeUlkRGVwdXRlIiwicm93c0ZpbGVuYW1lcyIsImRlcHV0ZUluZGV4Iiwicm93SW5kZXgiLCJyb3ciLCJzbGljZSIsInBob3Rvc0ZpbGVuYW1lcyIsImVudHJpZXMiLCJjb2x1bW5JbmRleCIsInB1c2giLCJjaGVtaW4iLCJjaGVtaW5Nb3NhaXF1ZSIsImhhdXRldXIiLCJsYXJnZXVyIiwieE1vc2FpcXVlIiwieU1vc2FpcXVlIiwicm93RmlsZW5hbWUiLCJ1bmxpbmtTeW5jIiwianNvbkZpbGVQYXRoIiwid3JpdGVGaWxlU3luYyIsIkpTT04iLCJzdHJpbmdpZnkiLCJ0aGVuIiwiZXhpdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL3JldHJpZXZlX2RlcHV0ZXNfcGhvdG9zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoaWxkUHJvY2VzcywgZXhlY1N5bmMgfSBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiXG5pbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBmZXRjaCBmcm9tIFwibm9kZS1mZXRjaFwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQgc3RyZWFtIGZyb20gXCJzdHJlYW1cIlxuaW1wb3J0IHV0aWwgZnJvbSBcInV0aWxcIlxuXG5pbXBvcnQgeyBFbmFibGVkRGF0YXNldHMgfSBmcm9tIFwiLi4vZGF0YXNldHNcIlxuaW1wb3J0IHsgbG9hZEFzc2VtYmxlZURhdGEgfSBmcm9tIFwiLi4vbG9hZGVyc1wiXG5pbXBvcnQge1xuICBDb2RlVHlwZU9yZ2FuZSxcbiAgTWFuZGF0LFxuICBQaG90byxcbiAgVHlwZU1hbmRhdCxcbn0gZnJvbSBcIi4uL3R5cGVzL2FjdGV1cnNfZXRfb3JnYW5lc1wiXG5cbmNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAge1xuICAgIGFsaWFzOiBcIkNcIixcbiAgICBoZWxwOiBcImNsb25lIHJlcG9zaXRvcmllcyBmcm9tIGdpdmVuIGdyb3VwIChvciBvcmdhbml6YXRpb24pIGdpdCBVUkxcIixcbiAgICBuYW1lOiBcImNsb25lXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwiY1wiLFxuICAgIGhlbHA6IFwiY29tbWl0IHBob3Rvc1wiLFxuICAgIG5hbWU6IFwiY29tbWl0XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcImZcIixcbiAgICBoZWxwOiBcImZldGNoIGTDqXB1dMOpcycgcGljdHVyZXMgaW5zdGVhZCBvZiByZXRyaWV2aW5nIHRoZW0gZnJvbSBmaWxlc1wiLFxuICAgIG5hbWU6IFwiZmV0Y2hcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwibFwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCIxNVwiLFxuICAgIG5hbWU6IFwibGVnaXNsYXR1cmVcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJyXCIsXG4gICAgaGVscDogXCJwdXNoIGNvbW1pdCB0byBnaXZlbiByZW1vdGVcIixcbiAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICBuYW1lOiBcInJlbW90ZVwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInNcIixcbiAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGRlZmF1bHRPcHRpb246IHRydWUsXG4gICAgaGVscDogXCJkaXJlY3RvcnkgY29udGFpbmluZyBBc3NlbWJsw6llIG9wZW4gZGF0YSBmaWxlc1wiLFxuICAgIG5hbWU6IFwiZGF0YURpclwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbl1cbmNvbnN0IG9wdGlvbnMgPSBjb21tYW5kTGluZUFyZ3Mob3B0aW9uc0RlZmluaXRpb25zKVxuY29uc3QgcGlwZWxpbmUgPSB1dGlsLnByb21pc2lmeShzdHJlYW0ucGlwZWxpbmUpXG5cbmZ1bmN0aW9uIGNvbW1pdEFuZFB1c2goXG4gIHJlcG9zaXRvcnlEaXI6IHN0cmluZyxcbiAgY29tbWl0OiBib29sZWFuLFxuICByZW1vdGVzPzogc3RyaW5nW10sXG4pOiBib29sZWFuIHtcbiAgbGV0IGVycm9yID0gZmFsc2VcbiAgaWYgKGNvbW1pdCkge1xuICAgIGV4ZWNTeW5jKFwiZ2l0IGFkZCAuXCIsIHtcbiAgICAgIGN3ZDogcmVwb3NpdG9yeURpcixcbiAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgfSlcbiAgICB0cnkge1xuICAgICAgZXhlY1N5bmMoJ2dpdCBjb21taXQgLW0gXCJOb3V2ZWxsZSBtb2lzc29uXCInLCB7XG4gICAgICAgIGN3ZDogcmVwb3NpdG9yeURpcixcbiAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgIH0pXG4gICAgfSBjYXRjaCAoY2hpbGRQcm9jZXNzKSB7XG4gICAgICBpZiAoXG4gICAgICAgIChjaGlsZFByb2Nlc3MgYXMgQ2hpbGRQcm9jZXNzKS5zdGRlcnIgPT09IG51bGwgfHxcbiAgICAgICAgIS9ub3RoaW5nIHRvIGNvbW1pdC8udGVzdCgoY2hpbGRQcm9jZXNzIGFzIGFueSkuc3Rkb3V0KVxuICAgICAgKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoKGNoaWxkUHJvY2VzcyBhcyBhbnkpLm91dHB1dClcbiAgICAgICAgdGhyb3cgY2hpbGRQcm9jZXNzXG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoY29uc3QgcmVtb3RlIG9mIHJlbW90ZXMgfHwgW10pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgcHVzaCAke3JlbW90ZX0gbWFzdGVyYCwge1xuICAgICAgICAgIGN3ZDogcmVwb3NpdG9yeURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9IGNhdGNoIChjaGlsZFByb2Nlc3MpIHtcbiAgICAgICAgLy8gRG9uJ3Qgc3RvcCB3aGVuIHB1c2ggZmFpbHMuXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoKGNoaWxkUHJvY2VzcyBhcyBhbnkpLm91dHB1dClcbiAgICAgICAgZXJyb3IgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBlcnJvclxufVxuXG5hc3luYyBmdW5jdGlvbiByZXRyaWV2ZVBob3Rvc0RlcHV0ZXMoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IGRhdGFEaXIgPSBvcHRpb25zLmRhdGFEaXJcbiAgY29uc3QgeyBhY3RldXJCeVVpZCB9ID0gbG9hZEFzc2VtYmxlZURhdGEoXG4gICAgZGF0YURpcixcbiAgICBFbmFibGVkRGF0YXNldHMuQWN0ZXVyc0V0T3JnYW5lcyxcbiAgICBvcHRpb25zLmxlZ2lzbGF0dXJlLFxuICApXG4gIGNvbnN0IGRlcHV0ZXNMZWdpc2xhdHVyZSA9IE9iamVjdC52YWx1ZXMoYWN0ZXVyQnlVaWQpXG4gICAgLmZpbHRlcigoYWN0ZXVyKSA9PiB7XG4gICAgICBjb25zdCB7IG1hbmRhdHMgfSA9IGFjdGV1clxuICAgICAgaWYgKCFtYW5kYXRzKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgY29uc3QgbWFuZGF0RGVwdXRlTGVnaXNsYXR1cmUgPSBtYW5kYXRzLmZpbHRlcihcbiAgICAgICAgKG1hbmRhdDogTWFuZGF0KSA9PlxuICAgICAgICAgIG1hbmRhdC54c2lUeXBlID09PSBUeXBlTWFuZGF0Lk1hbmRhdFBhcmxlbWVudGFpcmVUeXBlICYmXG4gICAgICAgICAgbWFuZGF0LmxlZ2lzbGF0dXJlID09PSBvcHRpb25zLmxlZ2lzbGF0dXJlICYmXG4gICAgICAgICAgbWFuZGF0LnR5cGVPcmdhbmUgPT09IENvZGVUeXBlT3JnYW5lLkFzc2VtYmxlZSxcbiAgICAgIClbMF1cbiAgICAgIHJldHVybiBtYW5kYXREZXB1dGVMZWdpc2xhdHVyZSAhPT0gdW5kZWZpbmVkXG4gICAgfSlcbiAgICAuc29ydCgoYSwgYikgPT5cbiAgICAgIGEudWlkLmxlbmd0aCA9PT0gYi51aWQubGVuZ3RoXG4gICAgICAgID8gYS51aWQubG9jYWxlQ29tcGFyZShiLnVpZClcbiAgICAgICAgOiBhLnVpZC5sZW5ndGggLSBiLnVpZC5sZW5ndGgsXG4gICAgKVxuXG4gIGNvbnN0IGdpdEdyb3VwVXJsID0gb3B0aW9ucy5jbG9uZVxuICAgID8gb3B0aW9ucy5jbG9uZS50cmltKCkucmVwbGFjZSgvXFwvKyQvLCBcIlwiKVxuICAgIDogdW5kZWZpbmVkXG4gIGNvbnN0IHBob3Rvc0Rpck5hbWUgPSBgcGhvdG9zX2RlcHV0ZXNfJHtvcHRpb25zLmxlZ2lzbGF0dXJlfWBcbiAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7cGhvdG9zRGlyTmFtZX0uZ2l0YCwge1xuICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICB9KVxuICB9XG4gIGNvbnN0IHBob3Rvc0RpciA9IHBhdGguam9pbihkYXRhRGlyLCBwaG90b3NEaXJOYW1lKVxuXG4gIC8vIERvd25sb2FkIHBob3Rvcy5cbiAgZnMuZW5zdXJlRGlyU3luYyhwaG90b3NEaXIpXG4gIGlmIChvcHRpb25zLmZldGNoKSB7XG4gICAgY29uc3QgbWlzc2luZ1Bob3RvRmlsZVBhdGggPSBcImltYWdlcy90cmFuc3BhcmVudF8xNTB4MTkyLmpwZ1wiXG4gICAgZm9yIChjb25zdCBkZXB1dGUgb2YgZGVwdXRlc0xlZ2lzbGF0dXJlKSB7XG4gICAgICBjb25zdCBpZGVudCA9IGRlcHV0ZS5ldGF0Q2l2aWwuaWRlbnRcbiAgICAgIGNvbnN0IG51bWVyb0RlcHV0ZSA9IGRlcHV0ZS51aWQuc3Vic3RyaW5nKDIpXG4gICAgICBjb25zdCBwaG90b0ZpbGVuYW1lID0gYCR7bnVtZXJvRGVwdXRlfS5qcGdgXG4gICAgICBjb25zdCBwaG90b0ZpbGVQYXRoID0gcGF0aC5qb2luKHBob3Rvc0RpciwgcGhvdG9GaWxlbmFtZSlcbiAgICAgIGNvbnN0IHBob3RvVGVtcEZpbGVuYW1lID0gYCR7bnVtZXJvRGVwdXRlfV90ZW1wLmpwZ2BcbiAgICAgIGNvbnN0IHBob3RvVGVtcEZpbGVQYXRoID0gcGF0aC5qb2luKHBob3Rvc0RpciwgcGhvdG9UZW1wRmlsZW5hbWUpXG4gICAgICBjb25zdCB1cmxQaG90byA9IGBodHRwOi8vd3d3Mi5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy90cmlidW4vJHtvcHRpb25zLmxlZ2lzbGF0dXJlfS9waG90b3MvJHtwaG90b0ZpbGVuYW1lfWBcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgYExvYWRpbmcgcGhvdG8gJHt1cmxQaG90b30gZm9yICR7aWRlbnQucHJlbm9tfSAke2lkZW50Lm5vbX3igKZgLFxuICAgICAgICApXG4gICAgICB9XG4gICAgICBmb3IgKGxldCByZXRyaWVzID0gMDsgcmV0cmllcyA8IDM7IHJldHJpZXMrKykge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybFBob3RvKVxuICAgICAgICBpZiAocmVzcG9uc2Uub2spIHtcbiAgICAgICAgICBhd2FpdCBwaXBlbGluZShyZXNwb25zZS5ib2R5LCBmcy5jcmVhdGVXcml0ZVN0cmVhbShwaG90b1RlbXBGaWxlUGF0aCkpXG4gICAgICAgICAgZnMucmVuYW1lU3luYyhwaG90b1RlbXBGaWxlUGF0aCwgcGhvdG9GaWxlUGF0aClcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXRyaWVzID49IDIpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBgRmV0Y2ggZmFpbGVkOiAke3VybFBob3RvfSAoJHtpZGVudC5wcmVub219ICR7aWRlbnQubm9tfSlgLFxuICAgICAgICAgIClcbiAgICAgICAgICBjb25zb2xlLndhcm4ocmVzcG9uc2Uuc3RhdHVzLCByZXNwb25zZS5zdGF0dXNUZXh0KVxuICAgICAgICAgIGNvbnNvbGUud2Fybihhd2FpdCByZXNwb25zZS50ZXh0KCkpXG4gICAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMocGhvdG9GaWxlUGF0aCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIiAgPT4gUmV1c2luZyBleGlzdGluZyBpbWFnZVwiKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCIgID0+IFVzaW5nIGJsYW5rIGltYWdlXCIpXG4gICAgICAgICAgICBmcy5jb3B5RmlsZVN5bmMobWlzc2luZ1Bob3RvRmlsZVBhdGgsIHBob3RvRmlsZVBhdGgpXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBSZXNpemUgcGhvdG9zIHRvIDE1MHgxOTIsIGJlY2F1c2Ugc29tZSBoYXZlbid0IGV4YWN0bHkgdGhpcyBzaXplLlxuICBmb3IgKGNvbnN0IGRlcHV0ZSBvZiBkZXB1dGVzTGVnaXNsYXR1cmUpIHtcbiAgICBjb25zdCBpZGVudCA9IGRlcHV0ZS5ldGF0Q2l2aWwuaWRlbnRcbiAgICBjb25zdCBudW1lcm9EZXB1dGUgPSBkZXB1dGUudWlkLnN1YnN0cmluZygyKVxuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgUmVzaXppbmcgcGhvdG8gJHtudW1lcm9EZXB1dGV9IGZvciAke2lkZW50LnByZW5vbX0gJHtpZGVudC5ub2194oCmYCxcbiAgICAgIClcbiAgICB9XG4gICAgZXhlY1N5bmMoXG4gICAgICBgZ20gY29udmVydCAtcmVzaXplIDE1MHgxOTIhICR7bnVtZXJvRGVwdXRlfS5qcGcgJHtudW1lcm9EZXB1dGV9XzE1MHgxOTIuanBnYCxcbiAgICAgIHtcbiAgICAgICAgY3dkOiBwaG90b3NEaXIsXG4gICAgICB9LFxuICAgIClcbiAgfVxuXG4gIC8vIENyZWF0ZSBhIG1vc2FpYyBvZiBwaG90b3MuXG4gIGNvbnN0IHBob3RvQnlJZERlcHV0ZTogeyBbdWlkOiBzdHJpbmddOiBQaG90byB9ID0ge31cbiAgY29uc3Qgcm93c0ZpbGVuYW1lczogc3RyaW5nW10gPSBbXVxuICBmb3IgKFxuICAgIGxldCBkZXB1dGVJbmRleCA9IDAsIHJvd0luZGV4ID0gMDtcbiAgICBkZXB1dGVJbmRleCA8IGRlcHV0ZXNMZWdpc2xhdHVyZS5sZW5ndGg7XG4gICAgZGVwdXRlSW5kZXggKz0gMjUsIHJvd0luZGV4KytcbiAgKSB7XG4gICAgY29uc3Qgcm93ID0gZGVwdXRlc0xlZ2lzbGF0dXJlLnNsaWNlKGRlcHV0ZUluZGV4LCBkZXB1dGVJbmRleCArIDI1KVxuICAgIGNvbnN0IHBob3Rvc0ZpbGVuYW1lczogc3RyaW5nW10gPSBbXVxuICAgIGZvciAoY29uc3QgW2NvbHVtbkluZGV4LCBkZXB1dGVdIG9mIHJvdy5lbnRyaWVzKCkpIHtcbiAgICAgIGNvbnN0IG51bWVyb0RlcHV0ZSA9IGRlcHV0ZS51aWQuc3Vic3RyaW5nKDIpXG4gICAgICBjb25zdCBwaG90b0ZpbGVuYW1lID0gYCR7bnVtZXJvRGVwdXRlfV8xNTB4MTkyLmpwZ2BcbiAgICAgIHBob3Rvc0ZpbGVuYW1lcy5wdXNoKHBob3RvRmlsZW5hbWUpXG4gICAgICBwaG90b0J5SWREZXB1dGVbZGVwdXRlLnVpZF0gPSB7XG4gICAgICAgIGNoZW1pbjogYHBob3Rvc19kZXB1dGVzXyR7b3B0aW9ucy5sZWdpc2xhdHVyZX0vJHtwaG90b0ZpbGVuYW1lfWAsXG4gICAgICAgIGNoZW1pbk1vc2FpcXVlOiBgcGhvdG9zX2RlcHV0ZXNfJHtvcHRpb25zLmxlZ2lzbGF0dXJlfS9kZXB1dGVzLmpwZ2AsXG4gICAgICAgIGhhdXRldXI6IDE5MixcbiAgICAgICAgbGFyZ2V1cjogMTUwLFxuICAgICAgICB4TW9zYWlxdWU6IGNvbHVtbkluZGV4ICogMTUwLFxuICAgICAgICB5TW9zYWlxdWU6IHJvd0luZGV4ICogMTkyLFxuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCByb3dGaWxlbmFtZSA9IGByb3ctJHtyb3dJbmRleH0uanBnYFxuICAgIGV4ZWNTeW5jKGBnbSBjb252ZXJ0ICR7cGhvdG9zRmlsZW5hbWVzLmpvaW4oXCIgXCIpfSArYXBwZW5kICR7cm93RmlsZW5hbWV9YCwge1xuICAgICAgY3dkOiBwaG90b3NEaXIsXG4gICAgfSlcbiAgICByb3dzRmlsZW5hbWVzLnB1c2gocm93RmlsZW5hbWUpXG4gIH1cbiAgZXhlY1N5bmMoYGdtIGNvbnZlcnQgJHtyb3dzRmlsZW5hbWVzLmpvaW4oXCIgXCIpfSAtYXBwZW5kIGRlcHV0ZXMuanBnYCwge1xuICAgIGN3ZDogcGhvdG9zRGlyLFxuICB9KVxuICBmb3IgKGNvbnN0IHJvd0ZpbGVuYW1lIG9mIHJvd3NGaWxlbmFtZXMpIHtcbiAgICBmcy51bmxpbmtTeW5jKHBhdGguam9pbihwaG90b3NEaXIsIHJvd0ZpbGVuYW1lKSlcbiAgfVxuXG4gIGNvbnN0IGpzb25GaWxlUGF0aCA9IHBhdGguam9pbihwaG90b3NEaXIsIFwiZGVwdXRlcy5qc29uXCIpXG4gIGZzLndyaXRlRmlsZVN5bmMoanNvbkZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShwaG90b0J5SWREZXB1dGUsIG51bGwsIDIpKVxuXG4gIHJldHVybiBjb21taXRBbmRQdXNoKHBob3Rvc0Rpciwgb3B0aW9ucy5jb21taXQsIG9wdGlvbnMucmVtb3RlKVxufVxuXG5yZXRyaWV2ZVBob3Rvc0RlcHV0ZXMoKVxuICAudGhlbigoZXJyb3IpID0+IHByb2Nlc3MuZXhpdChlcnJvciA/IDEgOiAwKSlcbiAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgIGNvbnNvbGUubG9nKGVycm9yKVxuICAgIHByb2Nlc3MuZXhpdCgyKVxuICB9KVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBT0EsSUFBTUEsa0JBQWtCLEdBQUcsQ0FDekI7RUFDRUMsS0FBSyxFQUFFLEdBRFQ7RUFFRUMsSUFBSSxFQUFFLCtEQUZSO0VBR0VDLElBQUksRUFBRSxPQUhSO0VBSUVDLElBQUksRUFBRUM7QUFKUixDQUR5QixFQU96QjtFQUNFSixLQUFLLEVBQUUsR0FEVDtFQUVFQyxJQUFJLEVBQUUsZUFGUjtFQUdFQyxJQUFJLEVBQUUsUUFIUjtFQUlFQyxJQUFJLEVBQUVFO0FBSlIsQ0FQeUIsRUFhekI7RUFDRUwsS0FBSyxFQUFFLEdBRFQ7RUFFRUMsSUFBSSxFQUFFLCtEQUZSO0VBR0VDLElBQUksRUFBRSxPQUhSO0VB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
@@ -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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