@tricoteuses/assemblee 1.1.5 → 1.1.7

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 (120) hide show
  1. package/lib/api.js +1 -1
  2. package/lib/bugs/acteur-00010/plugin.test.js +1 -1
  3. package/lib/bugs/acteur-00010.js +1 -1
  4. package/lib/bugs/acteur-00010.mjs +1 -1
  5. package/lib/bugs/agenda-00002/plugin.test.js +1 -1
  6. package/lib/bugs/agenda-00002.js +2 -2
  7. package/lib/bugs/agenda-00002.mjs +2 -2
  8. package/lib/bugs/agenda-00008/plugin.test.js +1 -1
  9. package/lib/bugs/agenda-00008.js +1 -1
  10. package/lib/bugs/agenda-00008.mjs +1 -1
  11. package/lib/bugs/agenda-00011/plugin.test.js +1 -1
  12. package/lib/bugs/agenda-00011.js +1 -1
  13. package/lib/bugs/agenda-00011.mjs +1 -1
  14. package/lib/bugs.js +1 -1
  15. package/lib/bugs.mjs +1 -1
  16. package/lib/cleaners/actes_legislatifs.js +1 -1
  17. package/lib/cleaners/actes_legislatifs.mjs +1 -1
  18. package/lib/cleaners/acteurs.js +1 -1
  19. package/lib/cleaners/acteurs.mjs +1 -1
  20. package/lib/cleaners/amendements.js +1 -1
  21. package/lib/cleaners/amendements.mjs +1 -1
  22. package/lib/cleaners/documents.js +1 -1
  23. package/lib/cleaners/documents.mjs +1 -1
  24. package/lib/cleaners/dossiers_legislatifs.js +1 -1
  25. package/lib/cleaners/dossiers_legislatifs.mjs +1 -1
  26. package/lib/cleaners/index.js +1 -1
  27. package/lib/cleaners/organes.js +1 -1
  28. package/lib/cleaners/organes.mjs +1 -1
  29. package/lib/cleaners/reunions.js +1 -1
  30. package/lib/cleaners/reunions.mjs +1 -1
  31. package/lib/cleaners/scrutins.js +1 -1
  32. package/lib/cleaners/scrutins.mjs +1 -1
  33. package/lib/cleaners/xml.js +1 -1
  34. package/lib/cleaners/xml.mjs +1 -1
  35. package/lib/datasets.js +1 -1
  36. package/lib/datasets.mjs +1 -1
  37. package/lib/dates.js +16 -7
  38. package/lib/dates.mjs +15 -6
  39. package/lib/dossiers_legislatifs.js +1 -1
  40. package/lib/dossiers_legislatifs.mjs +1 -1
  41. package/lib/file_systems.js +2 -2
  42. package/lib/file_systems.mjs +2 -2
  43. package/lib/git.d.ts +2 -1
  44. package/lib/git.js +77 -44
  45. package/lib/git.mjs +48 -25
  46. package/lib/index.js +1 -1
  47. package/lib/inserters.js +1 -1
  48. package/lib/inserters.mjs +1 -1
  49. package/lib/loaders.d.ts +52 -2
  50. package/lib/loaders.js +961 -187
  51. package/lib/loaders.mjs +285 -3
  52. package/lib/organes.js +1 -1
  53. package/lib/organes.mjs +1 -1
  54. package/lib/parsers/documents.js +1 -1
  55. package/lib/parsers/documents.mjs +1 -1
  56. package/lib/parsers/index.js +1 -1
  57. package/lib/parsers/recherche_amendements.js +39 -32
  58. package/lib/parsers/recherche_amendements.mjs +5 -1
  59. package/lib/raw_types/acteurs_et_organes.js +1 -1
  60. package/lib/raw_types/acteurs_et_organes.mjs +1 -1
  61. package/lib/raw_types/agendas.js +1 -1
  62. package/lib/raw_types/agendas.mjs +1 -1
  63. package/lib/raw_types/amendements.js +1 -1
  64. package/lib/raw_types/amendements.mjs +1 -1
  65. package/lib/raw_types/dossiers_legislatifs.js +1 -1
  66. package/lib/raw_types/dossiers_legislatifs.mjs +1 -1
  67. package/lib/raw_types/scrutins.js +1 -1
  68. package/lib/raw_types/scrutins.mjs +1 -1
  69. package/lib/scripts/bugs_helper.js +3 -3
  70. package/lib/scripts/bugs_helper.mjs +3 -3
  71. package/lib/scripts/clean_data.js +1 -1
  72. package/lib/scripts/clean_data.mjs +1 -1
  73. package/lib/scripts/clean_reorganized_data.js +63 -61
  74. package/lib/scripts/clean_reorganized_data.mjs +55 -48
  75. package/lib/scripts/diff_amendements.js +1 -1
  76. package/lib/scripts/diff_amendements.mjs +1 -1
  77. package/lib/scripts/document_dossiers_legislatifs.js +1 -1
  78. package/lib/scripts/document_dossiers_legislatifs.mjs +1 -1
  79. package/lib/scripts/get_today_reunions.js +1 -1
  80. package/lib/scripts/merge_scrutins.js +1 -1
  81. package/lib/scripts/merge_scrutins.mjs +1 -1
  82. package/lib/scripts/parse_textes_lois.js +5 -48
  83. package/lib/scripts/parse_textes_lois.mjs +5 -49
  84. package/lib/scripts/raw_types_from_amendements.js +1 -1
  85. package/lib/scripts/raw_types_from_amendements.mjs +1 -1
  86. package/lib/scripts/reorganize_data.js +231 -239
  87. package/lib/scripts/reorganize_data.mjs +50 -59
  88. package/lib/scripts/retrieve_deputes_photos.js +86 -107
  89. package/lib/scripts/retrieve_deputes_photos.mjs +21 -42
  90. package/lib/scripts/retrieve_documents.js +3 -3
  91. package/lib/scripts/retrieve_documents.mjs +3 -3
  92. package/lib/scripts/retrieve_open_data.js +29 -22
  93. package/lib/scripts/retrieve_open_data.mjs +9 -4
  94. package/lib/scripts/retrieve_pending_amendments.js +73 -81
  95. package/lib/scripts/retrieve_pending_amendments.mjs +19 -26
  96. package/lib/scripts/retrieve_senateurs_photos.js +65 -87
  97. package/lib/scripts/retrieve_senateurs_photos.mjs +21 -42
  98. package/lib/scripts/retrieve_textes_lois.js +32 -71
  99. package/lib/scripts/retrieve_textes_lois.mjs +6 -44
  100. package/lib/scripts/test_load.js +1 -1
  101. package/lib/scripts/test_load_big_files.js +1 -1
  102. package/lib/scripts/validate_json.js +3 -3
  103. package/lib/scripts/validate_json.mjs +3 -3
  104. package/lib/shared_types/codes_actes.js +1 -1
  105. package/lib/strings.js +1 -1
  106. package/lib/strings.mjs +1 -1
  107. package/lib/types/acteurs_et_organes.js +1 -1
  108. package/lib/types/acteurs_et_organes.mjs +1 -1
  109. package/lib/types/agendas.js +1 -1
  110. package/lib/types/agendas.mjs +1 -1
  111. package/lib/types/amendements.js +1 -1
  112. package/lib/types/amendements.mjs +1 -1
  113. package/lib/types/dossiers_legislatifs.js +1 -1
  114. package/lib/types/dossiers_legislatifs.mjs +1 -1
  115. package/lib/types/legislatures.js +1 -1
  116. package/lib/types/scrutins.js +1 -1
  117. package/lib/types/scrutins.mjs +1 -1
  118. package/lib/urls.js +1 -1
  119. package/lib/urls.mjs +1 -1
  120. package/package.json +6 -5
@@ -213,4 +213,4 @@ function generateSingleDiffedAmendment(diffedAmendment) {
213
213
  });
214
214
  }
215
215
  diffAmendements(options.dataDir);
216
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kTGluZUFyZ3MiLCJmcyIsInBhdGgiLCJkZXRhaWxlZERpZmYiLCJkYXRhc2V0cyIsIkRhdGFzZXRTdHJ1Y3R1cmUiLCJ3YWxrRGlyIiwiZGlmZmVkQW1lbmRtZW50cyIsIm5ld0FtZW5kbWVudHMiLCJvcHRpb25zRGVmaW5pdGlvbnMiLCJhbGlhcyIsImhlbHAiLCJuYW1lIiwidHlwZSIsIkJvb2xlYW4iLCJkZWZhdWx0VmFsdWUiLCJTdHJpbmciLCJkZWZhdWx0T3B0aW9uIiwib3B0aW9ucyIsImRpZmZBbWVuZGVtZW50cyIsImRhdGFEaXIiLCJwcmV2aW91cyIsImNvbnNvbGUiLCJlcnJvciIsInByb2Nlc3MiLCJleGl0IiwiZXhpc3RzU3luYyIsIm91dHB1dCIsImRhdGFzZXQiLCJhbWVuZGVtZW50cyIsInN0cnVjdHVyZSIsIlNlZ21lbnRlZEZpbGVzIiwib3JpZ2luYWxKc29uRGlyIiwiam9pbiIsImZpbGVuYW1lIiwic2lsZW50IiwibG9nIiwiYW1lbmRlbWVudFNwbGl0UGF0aCIsIm5ld0ZpbGVQYXRoIiwibmV3RmlsZSIsIkpTT04iLCJwYXJzZSIsInJlYWRGaWxlU3luYyIsInRvTG9jYWxlU3RyaW5nIiwib2xkRmlsZVBhdGgiLCJvbGRGaWxlRXhpc3RzIiwiYWRkVG9RdWV1ZUZvck5ld0FtZW5kbWVudHMiLCJvbGRGaWxlIiwiZSIsImRpZmYiLCJPYmplY3QiLCJrZXlzIiwiYWRkZWQiLCJsZW5ndGgiLCJ1cGRhdGVkIiwiZGVsZXRlZCIsImFkZFRvUXVldWVGb3JEaWZmZWRBbWVuZG1lbnRzIiwiZ2VuZXJhdGVEaWZmRmlsZXMiLCJtb2RlIiwid3JpdGVGaWxlU3luYyIsInN0cmluZ2lmeSIsImVuY29kaW5nIiwiZmxhZyIsImZvckVhY2giLCJkaWZmZWRBbWVuZG1lbnQiLCJnZW5lcmF0ZVNpbmdsZURpZmZlZEFtZW5kbWVudCIsIm5ld0FtZW5kbWVudCIsImdlbmVyYXRlU2luZ2xlTmV3QW1lbmRtZW50IiwiZmlsZSIsImFtZW5kbWVudCIsImRhdGEiLCJwdXNoIiwiZGlmZmVkRGF0YSIsInNoaWZ0Iiwic2hvcnREaXIiLCJwb3AiLCJta2RpclN5bmMiLCJyZWN1cnNpdmUiLCJyZXBsYWNlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvZGlmZl9hbWVuZGVtZW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcbmltcG9ydCB7IGRldGFpbGVkRGlmZiB9IGZyb20gXCJkZWVwLW9iamVjdC1kaWZmXCJcbmltcG9ydCB7IGRhdGFzZXRzLCBEYXRhc2V0U3RydWN0dXJlIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcbmNvbnN0IGRpZmZlZEFtZW5kbWVudHM6IEFycmF5PGFueT4gPSBbXVxuY29uc3QgbmV3QW1lbmRtZW50czogQXJyYXk8YW55PiA9IFtdXG5cbmNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAge1xuICAgIGFsaWFzOiBcInNcIixcbiAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInZcIixcbiAgICBoZWxwOiBcInZlcmJvc2UgbG9nc1wiLFxuICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJtXCIsXG4gICAgaGVscDogXCJEaWZmIG1vZGVzLlwiLFxuICAgIG5hbWU6IFwibW9kZVwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCJtZXJnZWRcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgIGhlbHA6IFwiZGlyZWN0b3J5IGNvbnRhaW5pbmcgQXNzZW1ibMOpZSBvcGVuIGRhdGEgZmlsZXNcIixcbiAgICBuYW1lOiBcImRhdGFEaXJcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJwXCIsXG4gICAgaGVscDogXCJEaXJlY3RvcnkgY29udGFpbmluZyB0aGUgcHJldmlvdXMgZHVtcCBvZiBhbWVuZG1lbnRzXCIsXG4gICAgbmFtZTogXCJwcmV2aW91c1wiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcIm9cIixcbiAgICBoZWxwOiBcIk91dHB1dCBkaXJlY3RvcnkgZm9yIGRpZmYgZmlsZXNcIixcbiAgICBuYW1lOiBcIm91dHB1dFwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCIuL2RpZmZfb3V0cHV0cy9cIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG5dXG5jb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucylcblxuZnVuY3Rpb24gZGlmZkFtZW5kZW1lbnRzKGRhdGFEaXI6IHN0cmluZykge1xuICBpZiAoIW9wdGlvbnMucHJldmlvdXMpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgXCJObyBwcmV2aW91cyBkYXRhIGZvbGRlciBzcGVjaWZpZWQuIFlvdSBtdXN0IHByb3ZpZGUgb25lIHdpdGggdGhlIC1wIG9yIC0tcHJldmlvdXMgb3B0aW9uLiBFeGl0aW5nLi4uXCIsXG4gICAgKVxuICAgIHByb2Nlc3MuZXhpdCgpXG4gIH1cblxuICBpZiAoIWZzLmV4aXN0c1N5bmMob3B0aW9ucy5vdXRwdXQpKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIFwiVGhlIG91dHB1dCBkaXIgZG9lcyBub3QgZXhpc3RzLiBZb3UgbXVzdCBwcm92aWRlIGFuIGV4aXN0aW5nIGRpcmVjdG9yeS4gRGVmYXVsdCBkaXJlY3RvcnkgaXMgLi9kaWZmX291dHB1dHMvXCIsXG4gICAgKVxuICAgIHByb2Nlc3MuZXhpdCgpXG4gIH1cblxuICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6IHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBEaWZmaW5nICR7b3JpZ2luYWxKc29uRGlyfSBmb2xkZXIuLi5gKVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIob3JpZ2luYWxKc29uRGlyKSkge1xuICAgICAgICAgIGNvbnN0IG5ld0ZpbGVQYXRoID1cbiAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpciArIFwiL1wiICsgYW1lbmRlbWVudFNwbGl0UGF0aC5qb2luKFwiL1wiKVxuICAgICAgICAgIGNvbnN0IG5ld0ZpbGUgPSBKU09OLnBhcnNlKFxuICAgICAgICAgICAgZnMucmVhZEZpbGVTeW5jKG5ld0ZpbGVQYXRoKS50b0xvY2FsZVN0cmluZygpLFxuICAgICAgICAgIClcblxuICAgICAgICAgIGNvbnN0IG9sZEZpbGVQYXRoID1cbiAgICAgICAgICAgIG9wdGlvbnMucHJldmlvdXMgK1xuICAgICAgICAgICAgZGF0YXNldC5maWxlbmFtZSArXG4gICAgICAgICAgICBcIi9cIiArXG4gICAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoLmpvaW4oXCIvXCIpXG4gICAgICAgICAgY29uc3Qgb2xkRmlsZUV4aXN0cyA9IGZzLmV4aXN0c1N5bmMob2xkRmlsZVBhdGgpXG4gICAgICAgICAgaWYgKCFvbGRGaWxlRXhpc3RzKSB7XG4gICAgICAgICAgICAvLyBJZiBmaWxlIGZvdW5kIGRvZXMgbm90IGV4aXN0IGluIHRoZSBwcmV2aW91cyBkdW1wXG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgIFwiRmlsZSBkaWQgbm90IGV4aXN0cyBwcmV2aW91c2x5LiBHdWVzc2luZyBpdCdzIGEgbmV3IGFtZW5kbWVudC4gQWRkaW5nIHRvIHRoZSBkaWZmIGxpc3QgZm9yIG5ldyBvYmplY3RzXCIsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFkZFRvUXVldWVGb3JOZXdBbWVuZG1lbnRzKG5ld0ZpbGUsIGFtZW5kZW1lbnRTcGxpdFBhdGgpXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEZpbGUgYWxyZWFkeSBleGlzdGVkIGluIHByZXZpb3VzIGR1bXBcbiAgICAgICAgICBsZXQgb2xkRmlsZTogSlNPTiA9IEpTT04ucGFyc2UoXCJ7fVwiKVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBHYXRoZXIgZGF0YSBvZiB0aGUgZmlsZSBhbmQgcmV0cmFuc2NyaXB0IGFzIGEgSnNvbiBvYmplY3RcbiAgICAgICAgICAgIG9sZEZpbGUgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhvbGRGaWxlUGF0aCkudG9Mb2NhbGVTdHJpbmcoKSlcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBTa2lwIHRoZSBwcm9jZXNzIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbiBpbiBjYXNlIG9mIGNvcnJ1cHQgSlNPTiBkYXRhXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEdlbmVyYXRlIHRoZSBkaWZmIGJlZXR3ZWVuIHRoZSB0d28gSlNPTiBvYmplY3RzIChvbGQgJiBuZXcgZHVtcClcbiAgICAgICAgICBjb25zdCBkaWZmOiBhbnkgPSBkZXRhaWxlZERpZmYob2xkRmlsZSwgbmV3RmlsZSlcblxuICAgICAgICAgIC8vIElmIG5vIGNoYW5nZXMgYmVldHdlZW4gdGhlIHR3byBkdW1wc1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRpZmYuYWRkZWQpLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAgICAgT2JqZWN0LmtleXMoZGlmZi51cGRhdGVkKS5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRpZmYuZGVsZXRlZCkubGVuZ3RoID09PSAwXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBTa2lwIHRvIG5leHQgaXRlcmF0aW9uIGFzIHRoZXJlIGlzIG5vIG5lZWQgdG8gZ2VuZXJhdGUgYSBmaWxlXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQ2hhbmdlcyBmb3VuZCAhXCIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhZGRUb1F1ZXVlRm9yRGlmZmVkQW1lbmRtZW50cyhkaWZmLCBhbWVuZGVtZW50U3BsaXRQYXRoKVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIG91dHB1dChzKVwiKVxuICAgIH1cblxuICAgIGdlbmVyYXRlRGlmZkZpbGVzKClcbiAgfVxufVxuXG4vKipcbiAqIEdlbmVyYWwgcHJvY2VzcyBmb3Igb3V0cHV0IG9mIGRpZmZzLlxuICogVGhlIHNjcmlwdCBoYW5kbGVzIHR3byBkaWZmZXJlbnQgbW9kZXMgOlxuICogLSBtZXJnZWQgOiBXaWxsIG91dHB1dCBhIHNpbmdsZSBmaWxlIGZvciBuZXcgYW1lbmRlbWVudHMgYW5kIGEgc2luZ2xlIGZpbGVcbiAqICAgICAgICAgICAgZm9yIHVwZGF0ZWQgYW1lbmRlbWVudHNcbiAqIC0gc3BsaXR0ZWQgOiBXaWxsIG91dHB1dCBhIHNpbmdsZSBmaWxlIGZvciBlYWNoIGFtZW5kbWVudHMsIGVpdGhlciBpdHMgbmV3IG9yIHVwZGF0ZWQuXG4gKlxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZURpZmZGaWxlcygpIHtcbiAgLy8gSGFuZGxlcyBtZXJnZWQgbW9kZVxuICBpZiAob3B0aW9ucy5tb2RlID09PSBcIm1lcmdlZFwiKSB7XG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIG1lcmdlZCBmaWxlc1wiKVxuICAgIH1cblxuICAgIGlmIChkaWZmZWRBbWVuZG1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIGRpZmZlZCBhbWVuZG1lbnRzIGZpbGVzXCIpXG4gICAgICB9XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICBvcHRpb25zLm91dHB1dCArIFwiYW1lbmRlbWVudHNfWFZfZGlmZmVkLmpzb25cIixcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoZGlmZmVkQW1lbmRtZW50cyksXG4gICAgICAgIHsgZW5jb2Rpbmc6IFwidXRmOFwiLCBmbGFnOiBcIndcIiB9LFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiTm8gZGlmZiBpbiB0aGUgYWxyZWFkeSBleGlzdGluZyBhbWVuZG1lbnRzXCIpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5ld0FtZW5kbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIkdlbmVyYXRpbmcgbmV3IGFtZW5kbWVudHMgZmlsZVwiKVxuICAgICAgfVxuICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgb3B0aW9ucy5vdXRwdXQgKyBcImFtZW5kZW1lbnRzX1hWX25ldy5qc29uXCIsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KG5ld0FtZW5kbWVudHMpLFxuICAgICAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIk5vIG5ldyBhbWVuZGVtZW50LiBTa2lwcGluZyBmaWxlIGdlbmVyYXRpb25cIilcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5tb2RlID09PSBcInNwbGl0dGVkXCIpIHtcbiAgICAvLyBIYW5kbGVzIHNwbGl0dGVkIG1vZGVcbiAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICBjb25zb2xlLmxvZyhcIkdlbmVyYXRpbmcgc2VwYXJhdGVkIGZpbGVzXCIpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2VzcyB0aGUgY29weSBhY3Rpb24gb2YgdGhlIG5ldyBhbmQgZGlmZmVkIGFtZW5kbWVudHNcbiAgICAgKi9cblxuICAgIGRpZmZlZEFtZW5kbWVudHMuZm9yRWFjaCgoZGlmZmVkQW1lbmRtZW50OiBhbnkpID0+IHtcbiAgICAgIGdlbmVyYXRlU2luZ2xlRGlmZmVkQW1lbmRtZW50KGRpZmZlZEFtZW5kbWVudClcbiAgICB9KVxuXG4gICAgbmV3QW1lbmRtZW50cy5mb3JFYWNoKChuZXdBbWVuZG1lbnQ6IGFueSkgPT4ge1xuICAgICAgZ2VuZXJhdGVTaW5nbGVOZXdBbWVuZG1lbnQobmV3QW1lbmRtZW50KVxuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5lcnJvcihcIlVua25vd24gb3V0cHV0IG1vZGUuIEFib3J0aW5nLi4uXCIpXG4gICAgcHJvY2Vzcy5leGl0KClcbiAgfVxufVxuXG4vLyBQdXNoZXMgYW4gYW1lbmRtZW50IHRvIHRoZSBxdWV1ZSB0aGF0IHdpbGwgYmUgcHJvY2Vzc2VkIHRvIGNvcHkgbmV3IGFtZW5kbWVudHMgZmlsZXNcbmZ1bmN0aW9uIGFkZFRvUXVldWVGb3JOZXdBbWVuZG1lbnRzKGZpbGU6IGFueSwgcGF0aDogYW55KTogdm9pZCB7XG4gIGNvbnN0IGFtZW5kbWVudDogYW55ID0ge1xuICAgIHBhdGg6IHBhdGgsXG4gICAgZGF0YTogZmlsZSxcbiAgfVxuICBuZXdBbWVuZG1lbnRzLnB1c2goYW1lbmRtZW50KVxufVxuLy8gUHVzaGVzIGFuIGFtZW5kbWVudCB0byB0aGUgcXVldWUgdGhhdCB3aWxsIGJlIHByb2Nlc3NlZCB0byBjb3B5IHVwZGF0ZWQgYW1lbmRtZW50cyBmaWxlc1xuZnVuY3Rpb24gYWRkVG9RdWV1ZUZvckRpZmZlZEFtZW5kbWVudHMoZGlmZmVkRGF0YTogYW55LCBwYXRoOiBhbnkpOiB2b2lkIHtcbiAgY29uc3QgYW1lbmRtZW50OiBhbnkgPSB7XG4gICAgcGF0aDogcGF0aCxcbiAgICBkYXRhOiBkaWZmZWREYXRhLFxuICB9XG4gIGRpZmZlZEFtZW5kbWVudHMucHVzaChhbWVuZG1lbnQpXG59XG5cbi8vIGdlbmVyYXRlcyBhIGZpbGUgd2l0aCBhIGNvcHkgb2YgdGhlIG5ldyBhbWVuZGVtZW50XG5mdW5jdGlvbiBnZW5lcmF0ZVNpbmdsZU5ld0FtZW5kbWVudChuZXdBbWVuZG1lbnQ6IHtcbiAgcGF0aDogQXJyYXk8c3RyaW5nPlxuICBkYXRhOiBhbnlcbn0pIHtcbiAgbmV3QW1lbmRtZW50LnBhdGguc2hpZnQoKVxuXG4gIGNvbnN0IHNob3J0RGlyOiBBcnJheTxhbnk+ID0gWy4uLm5ld0FtZW5kbWVudC5wYXRoXVxuICBzaG9ydERpci5wb3AoKVxuICBjb25zb2xlLmxvZyhvcHRpb25zLm91dHB1dCArIHNob3J0RGlyLmpvaW4oXCIvXCIpKVxuICBmcy5ta2RpclN5bmMob3B0aW9ucy5vdXRwdXQgKyBzaG9ydERpci5qb2luKFwiL1wiKSwge1xuICAgIHJlY3Vyc2l2ZTogdHJ1ZSxcbiAgfSlcbiAgZnMud3JpdGVGaWxlU3luYyhcbiAgICBvcHRpb25zLm91dHB1dCArIG5ld0FtZW5kbWVudC5wYXRoLmpvaW4oXCIvXCIpLnJlcGxhY2UoLyhcXC5qc29uKS8sIFwiLm5ldyQxXCIpLFxuICAgIEpTT04uc3RyaW5naWZ5KG5ld0FtZW5kbWVudC5kYXRhKSxcbiAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgKVxufVxuXG4vLyBnZW5lcmF0ZXMgYSBmaWxlIHdpdGggYSBjb3B5IG9mIHRoZSBtb2RpZmllZCBkYXRhIG9mIHRoZSBwcmV2aW91c2x5IGV4aXN0aW5nIGFtZW5kbWVudDtcbmZ1bmN0aW9uIGdlbmVyYXRlU2luZ2xlRGlmZmVkQW1lbmRtZW50KGRpZmZlZEFtZW5kbWVudDoge1xuICBwYXRoOiBBcnJheTxzdHJpbmc+XG4gIGRhdGE6IGFueVxufSkge1xuICBkaWZmZWRBbWVuZG1lbnQucGF0aC5zaGlmdCgpXG5cbiAgY29uc3Qgc2hvcnREaXI6IEFycmF5PGFueT4gPSBbLi4uZGlmZmVkQW1lbmRtZW50LnBhdGhdXG4gIHNob3J0RGlyLnBvcCgpXG4gIGZzLm1rZGlyU3luYyhvcHRpb25zLm91dHB1dCArIHNob3J0RGlyLmpvaW4oXCIvXCIpLCB7XG4gICAgcmVjdXJzaXZlOiB0cnVlLFxuICB9KVxuXG4gIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgb3B0aW9ucy5vdXRwdXQgK1xuICAgICAgZGlmZmVkQW1lbmRtZW50LnBhdGguam9pbihcIi9cIikucmVwbGFjZSgvKFxcLmpzb24pLywgXCIuZGlmZiQxXCIpLFxuICAgIEpTT04uc3RyaW5naWZ5KGRpZmZlZEFtZW5kbWVudC5kYXRhKSxcbiAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgKVxufVxuXG5kaWZmQW1lbmRlbWVudHMob3B0aW9ucy5kYXRhRGlyKVxuIl0sIm1hcHBpbmdz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
216
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kTGluZUFyZ3MiLCJmcyIsInBhdGgiLCJkZXRhaWxlZERpZmYiLCJkYXRhc2V0cyIsIkRhdGFzZXRTdHJ1Y3R1cmUiLCJ3YWxrRGlyIiwiZGlmZmVkQW1lbmRtZW50cyIsIm5ld0FtZW5kbWVudHMiLCJvcHRpb25zRGVmaW5pdGlvbnMiLCJhbGlhcyIsImhlbHAiLCJuYW1lIiwidHlwZSIsIkJvb2xlYW4iLCJkZWZhdWx0VmFsdWUiLCJTdHJpbmciLCJkZWZhdWx0T3B0aW9uIiwib3B0aW9ucyIsImRpZmZBbWVuZGVtZW50cyIsImRhdGFEaXIiLCJwcmV2aW91cyIsImNvbnNvbGUiLCJlcnJvciIsInByb2Nlc3MiLCJleGl0IiwiZXhpc3RzU3luYyIsIm91dHB1dCIsImRhdGFzZXQiLCJhbWVuZGVtZW50cyIsInN0cnVjdHVyZSIsIlNlZ21lbnRlZEZpbGVzIiwib3JpZ2luYWxKc29uRGlyIiwiam9pbiIsImZpbGVuYW1lIiwic2lsZW50IiwibG9nIiwiYW1lbmRlbWVudFNwbGl0UGF0aCIsIm5ld0ZpbGVQYXRoIiwibmV3RmlsZSIsIkpTT04iLCJwYXJzZSIsInJlYWRGaWxlU3luYyIsInRvTG9jYWxlU3RyaW5nIiwib2xkRmlsZVBhdGgiLCJvbGRGaWxlRXhpc3RzIiwiYWRkVG9RdWV1ZUZvck5ld0FtZW5kbWVudHMiLCJvbGRGaWxlIiwiZSIsImRpZmYiLCJPYmplY3QiLCJrZXlzIiwiYWRkZWQiLCJsZW5ndGgiLCJ1cGRhdGVkIiwiZGVsZXRlZCIsImFkZFRvUXVldWVGb3JEaWZmZWRBbWVuZG1lbnRzIiwiZ2VuZXJhdGVEaWZmRmlsZXMiLCJtb2RlIiwid3JpdGVGaWxlU3luYyIsInN0cmluZ2lmeSIsImVuY29kaW5nIiwiZmxhZyIsImZvckVhY2giLCJkaWZmZWRBbWVuZG1lbnQiLCJnZW5lcmF0ZVNpbmdsZURpZmZlZEFtZW5kbWVudCIsIm5ld0FtZW5kbWVudCIsImdlbmVyYXRlU2luZ2xlTmV3QW1lbmRtZW50IiwiZmlsZSIsImFtZW5kbWVudCIsImRhdGEiLCJwdXNoIiwiZGlmZmVkRGF0YSIsInNoaWZ0Iiwic2hvcnREaXIiLCJwb3AiLCJta2RpclN5bmMiLCJyZWN1cnNpdmUiLCJyZXBsYWNlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvZGlmZl9hbWVuZGVtZW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcbmltcG9ydCB7IGRldGFpbGVkRGlmZiB9IGZyb20gXCJkZWVwLW9iamVjdC1kaWZmXCJcbmltcG9ydCB7IGRhdGFzZXRzLCBEYXRhc2V0U3RydWN0dXJlIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcbmNvbnN0IGRpZmZlZEFtZW5kbWVudHM6IEFycmF5PGFueT4gPSBbXVxuY29uc3QgbmV3QW1lbmRtZW50czogQXJyYXk8YW55PiA9IFtdXG5cbmNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAge1xuICAgIGFsaWFzOiBcInNcIixcbiAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInZcIixcbiAgICBoZWxwOiBcInZlcmJvc2UgbG9nc1wiLFxuICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJtXCIsXG4gICAgaGVscDogXCJEaWZmIG1vZGVzLlwiLFxuICAgIG5hbWU6IFwibW9kZVwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCJtZXJnZWRcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgIGhlbHA6IFwiZGlyZWN0b3J5IGNvbnRhaW5pbmcgQXNzZW1ibMOpZSBvcGVuIGRhdGEgZmlsZXNcIixcbiAgICBuYW1lOiBcImRhdGFEaXJcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJwXCIsXG4gICAgaGVscDogXCJEaXJlY3RvcnkgY29udGFpbmluZyB0aGUgcHJldmlvdXMgZHVtcCBvZiBhbWVuZG1lbnRzXCIsXG4gICAgbmFtZTogXCJwcmV2aW91c1wiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcIm9cIixcbiAgICBoZWxwOiBcIk91dHB1dCBkaXJlY3RvcnkgZm9yIGRpZmYgZmlsZXNcIixcbiAgICBuYW1lOiBcIm91dHB1dFwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCIuL2RpZmZfb3V0cHV0cy9cIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG5dXG5jb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucylcblxuZnVuY3Rpb24gZGlmZkFtZW5kZW1lbnRzKGRhdGFEaXI6IHN0cmluZykge1xuICBpZiAoIW9wdGlvbnMucHJldmlvdXMpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgXCJObyBwcmV2aW91cyBkYXRhIGZvbGRlciBzcGVjaWZpZWQuIFlvdSBtdXN0IHByb3ZpZGUgb25lIHdpdGggdGhlIC1wIG9yIC0tcHJldmlvdXMgb3B0aW9uLiBFeGl0aW5nLi4uXCIsXG4gICAgKVxuICAgIHByb2Nlc3MuZXhpdCgpXG4gIH1cblxuICBpZiAoIWZzLmV4aXN0c1N5bmMob3B0aW9ucy5vdXRwdXQpKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIFwiVGhlIG91dHB1dCBkaXIgZG9lcyBub3QgZXhpc3RzLiBZb3UgbXVzdCBwcm92aWRlIGFuIGV4aXN0aW5nIGRpcmVjdG9yeS4gRGVmYXVsdCBkaXJlY3RvcnkgaXMgLi9kaWZmX291dHB1dHMvXCIsXG4gICAgKVxuICAgIHByb2Nlc3MuZXhpdCgpXG4gIH1cblxuICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6IHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBEaWZmaW5nICR7b3JpZ2luYWxKc29uRGlyfSBmb2xkZXIuLi5gKVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIob3JpZ2luYWxKc29uRGlyKSkge1xuICAgICAgICAgIGNvbnN0IG5ld0ZpbGVQYXRoID1cbiAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpciArIFwiL1wiICsgYW1lbmRlbWVudFNwbGl0UGF0aC5qb2luKFwiL1wiKVxuICAgICAgICAgIGNvbnN0IG5ld0ZpbGUgPSBKU09OLnBhcnNlKFxuICAgICAgICAgICAgZnMucmVhZEZpbGVTeW5jKG5ld0ZpbGVQYXRoKS50b0xvY2FsZVN0cmluZygpLFxuICAgICAgICAgIClcblxuICAgICAgICAgIGNvbnN0IG9sZEZpbGVQYXRoID1cbiAgICAgICAgICAgIG9wdGlvbnMucHJldmlvdXMgK1xuICAgICAgICAgICAgZGF0YXNldC5maWxlbmFtZSArXG4gICAgICAgICAgICBcIi9cIiArXG4gICAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoLmpvaW4oXCIvXCIpXG4gICAgICAgICAgY29uc3Qgb2xkRmlsZUV4aXN0cyA9IGZzLmV4aXN0c1N5bmMob2xkRmlsZVBhdGgpXG4gICAgICAgICAgaWYgKCFvbGRGaWxlRXhpc3RzKSB7XG4gICAgICAgICAgICAvLyBJZiBmaWxlIGZvdW5kIGRvZXMgbm90IGV4aXN0IGluIHRoZSBwcmV2aW91cyBkdW1wXG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgIFwiRmlsZSBkaWQgbm90IGV4aXN0cyBwcmV2aW91c2x5LiBHdWVzc2luZyBpdCdzIGEgbmV3IGFtZW5kbWVudC4gQWRkaW5nIHRvIHRoZSBkaWZmIGxpc3QgZm9yIG5ldyBvYmplY3RzXCIsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFkZFRvUXVldWVGb3JOZXdBbWVuZG1lbnRzKG5ld0ZpbGUsIGFtZW5kZW1lbnRTcGxpdFBhdGgpXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEZpbGUgYWxyZWFkeSBleGlzdGVkIGluIHByZXZpb3VzIGR1bXBcbiAgICAgICAgICBsZXQgb2xkRmlsZTogSlNPTiA9IEpTT04ucGFyc2UoXCJ7fVwiKVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBHYXRoZXIgZGF0YSBvZiB0aGUgZmlsZSBhbmQgcmV0cmFuc2NyaXB0IGFzIGEgSnNvbiBvYmplY3RcbiAgICAgICAgICAgIG9sZEZpbGUgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhvbGRGaWxlUGF0aCkudG9Mb2NhbGVTdHJpbmcoKSlcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBTa2lwIHRoZSBwcm9jZXNzIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbiBpbiBjYXNlIG9mIGNvcnJ1cHQgSlNPTiBkYXRhXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEdlbmVyYXRlIHRoZSBkaWZmIGJlZXR3ZWVuIHRoZSB0d28gSlNPTiBvYmplY3RzIChvbGQgJiBuZXcgZHVtcClcbiAgICAgICAgICBjb25zdCBkaWZmOiBhbnkgPSBkZXRhaWxlZERpZmYob2xkRmlsZSwgbmV3RmlsZSlcblxuICAgICAgICAgIC8vIElmIG5vIGNoYW5nZXMgYmVldHdlZW4gdGhlIHR3byBkdW1wc1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRpZmYuYWRkZWQpLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAgICAgT2JqZWN0LmtleXMoZGlmZi51cGRhdGVkKS5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRpZmYuZGVsZXRlZCkubGVuZ3RoID09PSAwXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBTa2lwIHRvIG5leHQgaXRlcmF0aW9uIGFzIHRoZXJlIGlzIG5vIG5lZWQgdG8gZ2VuZXJhdGUgYSBmaWxlXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQ2hhbmdlcyBmb3VuZCAhXCIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhZGRUb1F1ZXVlRm9yRGlmZmVkQW1lbmRtZW50cyhkaWZmLCBhbWVuZGVtZW50U3BsaXRQYXRoKVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIG91dHB1dChzKVwiKVxuICAgIH1cblxuICAgIGdlbmVyYXRlRGlmZkZpbGVzKClcbiAgfVxufVxuXG4vKipcbiAqIEdlbmVyYWwgcHJvY2VzcyBmb3Igb3V0cHV0IG9mIGRpZmZzLlxuICogVGhlIHNjcmlwdCBoYW5kbGVzIHR3byBkaWZmZXJlbnQgbW9kZXMgOlxuICogLSBtZXJnZWQgOiBXaWxsIG91dHB1dCBhIHNpbmdsZSBmaWxlIGZvciBuZXcgYW1lbmRlbWVudHMgYW5kIGEgc2luZ2xlIGZpbGVcbiAqICAgICAgICAgICAgZm9yIHVwZGF0ZWQgYW1lbmRlbWVudHNcbiAqIC0gc3BsaXR0ZWQgOiBXaWxsIG91dHB1dCBhIHNpbmdsZSBmaWxlIGZvciBlYWNoIGFtZW5kbWVudHMsIGVpdGhlciBpdHMgbmV3IG9yIHVwZGF0ZWQuXG4gKlxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZURpZmZGaWxlcygpIHtcbiAgLy8gSGFuZGxlcyBtZXJnZWQgbW9kZVxuICBpZiAob3B0aW9ucy5tb2RlID09PSBcIm1lcmdlZFwiKSB7XG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIG1lcmdlZCBmaWxlc1wiKVxuICAgIH1cblxuICAgIGlmIChkaWZmZWRBbWVuZG1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIGRpZmZlZCBhbWVuZG1lbnRzIGZpbGVzXCIpXG4gICAgICB9XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICBvcHRpb25zLm91dHB1dCArIFwiYW1lbmRlbWVudHNfWFZfZGlmZmVkLmpzb25cIixcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoZGlmZmVkQW1lbmRtZW50cyksXG4gICAgICAgIHsgZW5jb2Rpbmc6IFwidXRmOFwiLCBmbGFnOiBcIndcIiB9LFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiTm8gZGlmZiBpbiB0aGUgYWxyZWFkeSBleGlzdGluZyBhbWVuZG1lbnRzXCIpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5ld0FtZW5kbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIkdlbmVyYXRpbmcgbmV3IGFtZW5kbWVudHMgZmlsZVwiKVxuICAgICAgfVxuICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgb3B0aW9ucy5vdXRwdXQgKyBcImFtZW5kZW1lbnRzX1hWX25ldy5qc29uXCIsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KG5ld0FtZW5kbWVudHMpLFxuICAgICAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIk5vIG5ldyBhbWVuZGVtZW50LiBTa2lwcGluZyBmaWxlIGdlbmVyYXRpb25cIilcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5tb2RlID09PSBcInNwbGl0dGVkXCIpIHtcbiAgICAvLyBIYW5kbGVzIHNwbGl0dGVkIG1vZGVcbiAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICBjb25zb2xlLmxvZyhcIkdlbmVyYXRpbmcgc2VwYXJhdGVkIGZpbGVzXCIpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2VzcyB0aGUgY29weSBhY3Rpb24gb2YgdGhlIG5ldyBhbmQgZGlmZmVkIGFtZW5kbWVudHNcbiAgICAgKi9cblxuICAgIGRpZmZlZEFtZW5kbWVudHMuZm9yRWFjaCgoZGlmZmVkQW1lbmRtZW50OiBhbnkpID0+IHtcbiAgICAgIGdlbmVyYXRlU2luZ2xlRGlmZmVkQW1lbmRtZW50KGRpZmZlZEFtZW5kbWVudClcbiAgICB9KVxuXG4gICAgbmV3QW1lbmRtZW50cy5mb3JFYWNoKChuZXdBbWVuZG1lbnQ6IGFueSkgPT4ge1xuICAgICAgZ2VuZXJhdGVTaW5nbGVOZXdBbWVuZG1lbnQobmV3QW1lbmRtZW50KVxuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5lcnJvcihcIlVua25vd24gb3V0cHV0IG1vZGUuIEFib3J0aW5nLi4uXCIpXG4gICAgcHJvY2Vzcy5leGl0KClcbiAgfVxufVxuXG4vLyBQdXNoZXMgYW4gYW1lbmRtZW50IHRvIHRoZSBxdWV1ZSB0aGF0IHdpbGwgYmUgcHJvY2Vzc2VkIHRvIGNvcHkgbmV3IGFtZW5kbWVudHMgZmlsZXNcbmZ1bmN0aW9uIGFkZFRvUXVldWVGb3JOZXdBbWVuZG1lbnRzKGZpbGU6IGFueSwgcGF0aDogYW55KTogdm9pZCB7XG4gIGNvbnN0IGFtZW5kbWVudDogYW55ID0ge1xuICAgIHBhdGg6IHBhdGgsXG4gICAgZGF0YTogZmlsZSxcbiAgfVxuICBuZXdBbWVuZG1lbnRzLnB1c2goYW1lbmRtZW50KVxufVxuLy8gUHVzaGVzIGFuIGFtZW5kbWVudCB0byB0aGUgcXVldWUgdGhhdCB3aWxsIGJlIHByb2Nlc3NlZCB0byBjb3B5IHVwZGF0ZWQgYW1lbmRtZW50cyBmaWxlc1xuZnVuY3Rpb24gYWRkVG9RdWV1ZUZvckRpZmZlZEFtZW5kbWVudHMoZGlmZmVkRGF0YTogYW55LCBwYXRoOiBhbnkpOiB2b2lkIHtcbiAgY29uc3QgYW1lbmRtZW50OiBhbnkgPSB7XG4gICAgcGF0aDogcGF0aCxcbiAgICBkYXRhOiBkaWZmZWREYXRhLFxuICB9XG4gIGRpZmZlZEFtZW5kbWVudHMucHVzaChhbWVuZG1lbnQpXG59XG5cbi8vIGdlbmVyYXRlcyBhIGZpbGUgd2l0aCBhIGNvcHkgb2YgdGhlIG5ldyBhbWVuZGVtZW50XG5mdW5jdGlvbiBnZW5lcmF0ZVNpbmdsZU5ld0FtZW5kbWVudChuZXdBbWVuZG1lbnQ6IHtcbiAgcGF0aDogQXJyYXk8c3RyaW5nPlxuICBkYXRhOiBhbnlcbn0pIHtcbiAgbmV3QW1lbmRtZW50LnBhdGguc2hpZnQoKVxuXG4gIGNvbnN0IHNob3J0RGlyOiBBcnJheTxhbnk+ID0gWy4uLm5ld0FtZW5kbWVudC5wYXRoXVxuICBzaG9ydERpci5wb3AoKVxuICBjb25zb2xlLmxvZyhvcHRpb25zLm91dHB1dCArIHNob3J0RGlyLmpvaW4oXCIvXCIpKVxuICBmcy5ta2RpclN5bmMob3B0aW9ucy5vdXRwdXQgKyBzaG9ydERpci5qb2luKFwiL1wiKSwge1xuICAgIHJlY3Vyc2l2ZTogdHJ1ZSxcbiAgfSlcbiAgZnMud3JpdGVGaWxlU3luYyhcbiAgICBvcHRpb25zLm91dHB1dCArIG5ld0FtZW5kbWVudC5wYXRoLmpvaW4oXCIvXCIpLnJlcGxhY2UoLyhcXC5qc29uKS8sIFwiLm5ldyQxXCIpLFxuICAgIEpTT04uc3RyaW5naWZ5KG5ld0FtZW5kbWVudC5kYXRhKSxcbiAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgKVxufVxuXG4vLyBnZW5lcmF0ZXMgYSBmaWxlIHdpdGggYSBjb3B5IG9mIHRoZSBtb2RpZmllZCBkYXRhIG9mIHRoZSBwcmV2aW91c2x5IGV4aXN0aW5nIGFtZW5kbWVudDtcbmZ1bmN0aW9uIGdlbmVyYXRlU2luZ2xlRGlmZmVkQW1lbmRtZW50KGRpZmZlZEFtZW5kbWVudDoge1xuICBwYXRoOiBBcnJheTxzdHJpbmc+XG4gIGRhdGE6IGFueVxufSkge1xuICBkaWZmZWRBbWVuZG1lbnQucGF0aC5zaGlmdCgpXG5cbiAgY29uc3Qgc2hvcnREaXI6IEFycmF5PGFueT4gPSBbLi4uZGlmZmVkQW1lbmRtZW50LnBhdGhdXG4gIHNob3J0RGlyLnBvcCgpXG4gIGZzLm1rZGlyU3luYyhvcHRpb25zLm91dHB1dCArIHNob3J0RGlyLmpvaW4oXCIvXCIpLCB7XG4gICAgcmVjdXJzaXZlOiB0cnVlLFxuICB9KVxuXG4gIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgb3B0aW9ucy5vdXRwdXQgK1xuICAgICAgZGlmZmVkQW1lbmRtZW50LnBhdGguam9pbihcIi9cIikucmVwbGFjZSgvKFxcLmpzb24pLywgXCIuZGlmZiQxXCIpLFxuICAgIEpTT04uc3RyaW5naWZ5KGRpZmZlZEFtZW5kbWVudC5kYXRhKSxcbiAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgKVxufVxuXG5kaWZmQW1lbmRlbWVudHMob3B0aW9ucy5kYXRhRGlyKVxuIl0sIm1hcHBpbmdz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
@@ -653,4 +653,4 @@ function main(argv) {
653
653
 
654
654
  /* istanbul ignore if */
655
655
  if (process.argv[1].endsWith("document_dossiers_legislatifs.ts")) process.exit(main(process.argv));
656
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXJzZUFyZ3MiLCJhcmd2Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiZGVzY3JpcHRpb24iLCJkZWZhdWx0T3B0aW9uIiwibXVsdGlwbGUiLCJuYW1lIiwidHlwZSIsIlN0cmluZyIsIkJvb2xlYW4iLCJzZWN0aW9ucyIsImhlYWRlciIsImNvbnRlbnQiLCJvcHRpb25MaXN0Iiwib3B0aW9ucyIsImNvbW1hbmRMaW5lQXJncyIsImNvbnNvbGUiLCJlcnJvciIsImhlbHAiLCJ1c2FnZSIsImNvbW1hbmRMaW5lVXNhZ2UiLCJ3YXJuIiwiZXFTZXQiLCJhcyIsImJzIiwic2l6ZSIsImEiLCJoYXMiLCJDb2RlMlBhdHRlcm4iLCJwYXR0ZXJuIiwiY2hpbGRyZW4iLCJfcGF0dGVybl8iLCJfbWF0Y2hfY291bnRfIiwiT2JqZWN0IiwiYXNzaWduIiwiQ29kZTJQYXR0ZXJuQ29tRm9uZCIsIkxlY3R1cmVNYXBwaW5nIiwiU2V0IiwiYWN0ZSIsImNvZGVzIiwiYWRkIiwiY29kZUFjdGUiLCJnZXRUeXBlIiwibGliZWxsZUFjdGUiLCJub21DYW5vbmlxdWUiLCJsaWJlbGxlIiwidHlwZXMiLCJBcnJheSIsImZyb20iLCJjIiwiY29kZSIsImxvZyIsImpvaW4iLCJtYXRjaCIsImNvZGVzX2xlY3R1cmVfcmVnZXhwIiwiRXJyb3IiLCJyZXBsYWNlIiwiaXNMZWN0dXJlIiwibWFwIiwiUmVnRXhwIiwiY29kZXNfbGVjdHVyZSIsIkxlY3R1cmVNYXBwZXIiLCJtYXBwaW5nIiwiZ2V0Q29kZUFjdGUiLCJ1bmRlZmluZWQiLCJsZWN0dXJlcyIsInJlbWFwIiwibWVyZ2VDb2RlcyIsInByaW50QW5jaG9ycyIsImdldENvZGVzIiwiQWN0ZXNEb2N1bWVudGF0aW9uIiwic2FuaXR5Q2hlY2tzIiwidmVyYm9zZSIsImxlY3R1cmUiLCJDTVAiLCJDQyIsIlBST00iLCJBTjIxIiwiQU5MVU5JIiwiUsOpc29sdXRpb24iLCJBTjIwIiwiRVUiLCJJbW11bml0w6kiLCJwcm9jZWR1cmVzIiwiY29kZTJwYXR0ZXJuIiwiZGF0YSIsImFjdGlvbiIsImdldEZpbGVzIiwiZmlsZSIsImRvc3NpZXIiLCJsb2FkIiwicHJvY2VkdXJlIiwicmVtYXBQcm9jZWR1cmUiLCJwcm9jZWR1cmVQYXJsZW1lbnRhaXJlIiwiYWN0ZXNMZWdpc2xhdGlmcyIsIndhbGtGaWxlcyIsIl9hY3RlcyIsIl9jMnAiLCJfcGFyZW50IiwiY29sbGVjdCIsImFjdGVzIiwiYzJwIiwicGFyZW50IiwibWVyZ2UiLCJ2YWxpZGF0ZSIsInJlc3VsdHMiLCJsZWN0dXJlTWFwcGVyIiwicHVzaCIsIm1lcmdlX3Byb2NlZHVyZXMiLCJNYXAiLCJyZW1hcHBlZFByb2NlZHVyZXMiLCJnZXQiLCJvcmRlcmVkIiwieCIsImFzc2VydCIsInNlcXVlbmNlIiwic2hvcnRDb2RlIiwieHNpVHlwZSIsImwiLCJyZW1hcEFjdGVzIiwidmFsaWRhdGVDaHJvbm9sb2d5IiwibWVyZ2VBY3RlIiwiY29sbGVjdEFjdGVzIiwicGF0aCIsImVudHJpZXMiLCJrZXkiLCJ2YWx1ZSIsImNvbnN0cnVjdG9yIiwidmFsaWRhdGVMZXZlbCIsImNvbmNhdCIsImVudHJ5IiwidGl0bGUiLCJ1bmRlcmxpbmUiLCJsZW5ndGgiLCJhbmNob3JzUHJpbnRlZCIsImFuY2hvcnMiLCJzdGFydHNXaXRoIiwiZW5kc1dpdGgiLCJrZXlzIiwib3JkZXJlZENvZGVzIiwicmVuYW1lQ01QIiwiYWRkQW5jaG9ycyIsInByaW50RW50cnkiLCJwcmludExldmVsIiwic3Vic3RyaW5nIiwicmVtYXBwZWQiLCJhZ2dyZWdhdGVkIiwiZ2V0QWdncmVnYXRlZCIsInByaW50Q29kZXMiLCJwcmludEFuY2hvcnNJbmRleCIsIm1haW4iLCJkb2MiLCJjb2xsZWN0RmlsZXMiLCJwcm9jZXNzRmlsZXMiLCJwcmludCIsInByb2Nlc3MiLCJleGl0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvZG9jdW1lbnRfZG9zc2llcnNfbGVnaXNsYXRpZnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGNvbW1hbmRMaW5lVXNhZ2UgZnJvbSBcImNvbW1hbmQtbGluZS11c2FnZVwiXG5pbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIlxuaW1wb3J0IHsgbG9hZCwgZ2V0RmlsZXMgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcblxuZnVuY3Rpb24gcGFyc2VBcmdzKGFyZ3Y6IHN0cmluZ1tdKTogYW55IHtcbiAgY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcInBhdGhuYW1lIHRvIGEgSlNPTiBmaWxlIG9yIGEgZ2xvYiBwYXR0ZXJuIHRvIEpTT04gZmlsZXNcIixcbiAgICAgIGRlZmF1bHRPcHRpb246IHRydWUsXG4gICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgIG5hbWU6IFwiZGF0YVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogXCJuby1zYW5pdHktY2hlY2tzXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVzY3JpcHRpb246IFwiRG8gbm90IHBlcmZvcm0gc2FuaXR5IGNoZWNrcy5cIixcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlc2NyaXB0aW9uOiBcImluY3JlYXNlIHZlcmJvc2l0eVwiLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogXCJoZWxwXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJQcmludCB0aGlzIHVzYWdlIGd1aWRlLlwiLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgc2VjdGlvbnMgPSBbXG4gICAge1xuICAgICAgaGVhZGVyOiBcIkFpZGUgw6AgbGEgZG9jdW1lbnRhdGlvbiBkdSBkb3NzaWVyIGzDqWdpc2xhdGlmXCIsXG4gICAgICBjb250ZW50OiBcIkfDqW7DqHJlIHVuZSBoacOpcmFyY2hpZSBkZXMgYWN0ZXMgbMOpZ2lzbGF0aWZzXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBoZWFkZXI6IFwiT3B0aW9uc1wiLFxuICAgICAgb3B0aW9uTGlzdDogb3B0aW9uc0RlZmluaXRpb25zLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMsIHtcbiAgICBhcmd2OiBhcmd2LFxuICB9KVxuICBpZiAoIShcImhlbHBcIiBpbiBvcHRpb25zKSAmJiAhKFwiZGF0YVwiIGluIG9wdGlvbnMpKSB7XG4gICAgY29uc29sZS5lcnJvcihcIi0tZGF0YSBpcyBtYW5kYXRvcnlcIilcbiAgICBvcHRpb25zLmhlbHAgPSB0cnVlXG4gIH1cbiAgaWYgKFwiaGVscFwiIGluIG9wdGlvbnMpIHtcbiAgICBjb25zdCB1c2FnZSA9IGNvbW1hbmRMaW5lVXNhZ2Uoc2VjdGlvbnMpXG4gICAgY29uc29sZS53YXJuKHVzYWdlKVxuICAgIHJldHVybiBudWxsXG4gIH1cbiAgcmV0dXJuIG9wdGlvbnNcbn1cblxuZnVuY3Rpb24gZXFTZXQoYXM6IFNldDxzdHJpbmc+LCBiczogU2V0PHN0cmluZz4pOiBib29sZWFuIHtcbiAgaWYgKGFzLnNpemUgIT09IGJzLnNpemUpIHJldHVybiBmYWxzZVxuICBmb3IgKHZhciBhIG9mIGFzKSBpZiAoIWJzLmhhcyhhKSkgcmV0dXJuIGZhbHNlXG4gIHJldHVybiB0cnVlXG59XG5cbmNsYXNzIENvZGUyUGF0dGVybiB7XG4gIF9wYXR0ZXJuXzogYW55XG4gIF9tYXRjaF9jb3VudF86IG51bWJlclxuICBjb25zdHJ1Y3RvcihwYXR0ZXJuOiBhbnksIGNoaWxkcmVuOiBhbnkpIHtcbiAgICB0aGlzLl9wYXR0ZXJuXyA9IHBhdHRlcm5cbiAgICB0aGlzLl9tYXRjaF9jb3VudF8gPSAwXG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLCBjaGlsZHJlbilcbiAgfVxufVxuXG5jbGFzcyBDb2RlMlBhdHRlcm5Db21Gb25kIGV4dGVuZHMgQ29kZTJQYXR0ZXJuIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCJeL1NBSVNJRS8oL05PTUlOLykqKC9SRVVOSU9OLykqKC9SQVBQT1JULykqJFwiLCB7fSlcbiAgfVxufVxuXG5jbGFzcyBMZWN0dXJlTWFwcGluZyB7XG4gIGxpYmVsbGU6IGFueSA9IHt9XG4gIGNvZGVzOiBhbnkgPSBuZXcgU2V0KClcblxuICBzdGF0aWMgY29kZXNfbGVjdHVyZTogc3RyaW5nW10gPSBbXG4gICAgXCJBTjFcIixcbiAgICBcIlNOMVwiLFxuICAgIFwiQU5OTEVDXCIsXG4gICAgXCJTTk5MRUNcIixcbiAgICBcIkFOTERFRlwiLFxuICAgIFwiQU4yXCIsXG4gICAgXCJTTjJcIixcbiAgICBcIlNOM1wiLFxuICBdXG4gIHN0YXRpYyBjb2Rlc19sZWN0dXJlX3JlZ2V4cDogYW55ID0gbmV3IFJlZ0V4cChcbiAgICBcIl4oPzpcIiArIExlY3R1cmVNYXBwaW5nLmNvZGVzX2xlY3R1cmUuam9pbihcInxcIikgKyBcIikoLS4qKT8kXCIsXG4gIClcblxuICBzdGF0aWMgaXNMZWN0dXJlKGFjdGU6IGFueSkge1xuICAgIHJldHVybiBhY3RlLmNvZGVBY3RlLm1hdGNoKExlY3R1cmVNYXBwaW5nLmNvZGVzX2xlY3R1cmVfcmVnZXhwKVxuICB9XG5cbiAgc3RhdGljIGdldFR5cGUoYWN0ZTogYW55KSB7XG4gICAgaWYgKGFjdGUuY29kZUFjdGUubWF0Y2goL15BTi8pKSByZXR1cm4gXCJBTlwiXG4gICAgZWxzZSBpZiAoYWN0ZS5jb2RlQWN0ZS5tYXRjaCgvXlNOLykpIHJldHVybiBcIlNOXCJcbiAgICBlbHNlIHRocm93IEVycm9yKGAke2FjdGUuY29kZUFjdGV9IGRvZXMgbm90IHN0YXJ0IHdpdGggQU4gb3IgU05gKVxuICB9XG5cbiAgc3RhdGljIG1hcChjb2RlQWN0ZTogYW55KSB7XG4gICAgcmV0dXJuIGNvZGVBY3RlLnJlcGxhY2UoTGVjdHVyZU1hcHBpbmcuY29kZXNfbGVjdHVyZV9yZWdleHAsIGBsZWN0dXJlJDFgKVxuICB9XG5cbiAgc3RhdGljIGdldENvZGVBY3RlKGFjdGU6IGFueSkge1xuICAgIGlmICghTGVjdHVyZU1hcHBpbmcuaXNMZWN0dXJlKGFjdGUpKSByZXR1cm5cblxuICAgIHJldHVybiBMZWN0dXJlTWFwcGluZy5tYXAoYWN0ZS5jb2RlQWN0ZSlcbiAgfVxuXG4gIGFkZChhY3RlOiBhbnkpIHtcbiAgICB0aGlzLmNvZGVzLmFkZChhY3RlLmNvZGVBY3RlKVxuXG4gICAgY29uc3QgdHlwZSA9IExlY3R1cmVNYXBwaW5nLmdldFR5cGUoYWN0ZSlcblxuICAgIGlmICghKGFjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlIGluIHRoaXMubGliZWxsZSkpXG4gICAgICB0aGlzLmxpYmVsbGVbYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWVdID0gbmV3IFNldCgpXG4gICAgdGhpcy5saWJlbGxlW2FjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlXS5hZGQodHlwZSlcbiAgfVxuXG4gIHJlbWFwKGFjdGU6IGFueSwgY29kZUFjdGU6IHN0cmluZykge1xuICAgIGFjdGUuY29kZUFjdGUgPSBjb2RlQWN0ZVxuXG4gICAgbGV0IHR5cGVzID0gdGhpcy5saWJlbGxlW2FjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlXVxuICAgIGlmICghKHR5cGVzLmhhcyhcIlNOXCIpICYmIHR5cGVzLmhhcyhcIkFOXCIpKSkge1xuICAgICAgaWYgKHR5cGVzLmhhcyhcIlNOXCIpKSBhY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZSArPSBcIiAoU8OpbmF0KVwiXG4gICAgICBlbHNlIGlmICh0eXBlcy5oYXMoXCJBTlwiKSlcbiAgICAgICAgYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWUgKz0gXCIgKEFzc2VtYmzDqWUgTmF0aW9uYWxlKVwiXG4gICAgfVxuICB9XG5cbiAgbWVyZ2VDb2Rlcyhjb2RlczogYW55KSB7XG4gICAgZm9yIChjb25zdCBjIG9mIEFycmF5LmZyb20odGhpcy5jb2RlcykpIGNvZGVzLmFkZChjKVxuICB9XG5cbiAgcHJpbnRBbmNob3JzKCkge1xuICAgIGZvciAoY29uc3QgY29kZSBvZiBBcnJheS5mcm9tKHRoaXMuY29kZXMpKSBjb25zb2xlLmxvZyhgLi4gXyR7Y29kZX06YClcbiAgfVxuXG4gIGdldENvZGVzKCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuY29kZXMpLmpvaW4oXCIsXCIpXG4gIH1cbn1cblxuY2xhc3MgTGVjdHVyZU1hcHBlciB7XG4gIG1hcHBpbmc6IGFueSA9IHt9XG5cbiAgaGFzKGNvZGVBY3RlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gY29kZUFjdGUgaW4gdGhpcy5tYXBwaW5nXG4gIH1cblxuICBjb2xsZWN0KGFjdGU6IGFueSkge1xuICAgIGNvbnN0IGNvZGVBY3RlID0gTGVjdHVyZU1hcHBpbmcuZ2V0Q29kZUFjdGUoYWN0ZSlcbiAgICBpZiAoY29kZUFjdGUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgbGVjdHVyZXMgPSB0aGlzLm1hcHBpbmdcbiAgICAgIGlmICghKGNvZGVBY3RlIGluIGxlY3R1cmVzKSkgbGVjdHVyZXNbY29kZUFjdGVdID0gbmV3IExlY3R1cmVNYXBwaW5nKClcbiAgICAgIGxlY3R1cmVzW2NvZGVBY3RlXS5hZGQoYWN0ZSlcbiAgICB9XG4gIH1cblxuICByZW1hcChhY3RlOiBhbnkpIHtcbiAgICBjb25zdCBjb2RlQWN0ZSA9IExlY3R1cmVNYXBwaW5nLmdldENvZGVBY3RlKGFjdGUpXG4gICAgaWYgKGNvZGVBY3RlICE9IHVuZGVmaW5lZCkgdGhpcy5tYXBwaW5nW2NvZGVBY3RlXS5yZW1hcChhY3RlLCBjb2RlQWN0ZSlcbiAgfVxuXG4gIG1lcmdlQ29kZXMoY29kZXM6IGFueSwgY29kZUFjdGU6IHN0cmluZykge1xuICAgIHRoaXMubWFwcGluZ1tjb2RlQWN0ZV0ubWVyZ2VDb2Rlcyhjb2RlcylcbiAgfVxuXG4gIHByaW50QW5jaG9ycyhjb2RlQWN0ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5tYXBwaW5nW2NvZGVBY3RlXS5wcmludEFuY2hvcnMoKVxuICB9XG5cbiAgZ2V0Q29kZXMoY29kZUFjdGU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLm1hcHBpbmdbY29kZUFjdGVdLmdldENvZGVzKClcbiAgfVxufVxuXG5jbGFzcyBBY3Rlc0RvY3VtZW50YXRpb24ge1xuICB2ZXJib3NlOiBib29sZWFuXG4gIHNhbml0eUNoZWNrczogYm9vbGVhblxuICBsZWN0dXJlTWFwcGVyOiBhbnkgPSBuZXcgTGVjdHVyZU1hcHBlcigpXG4gIHJlbWFwcGVkUHJvY2VkdXJlczogYW55ID0ge31cbiAgYW5jaG9yc1ByaW50ZWQ6IGFueSA9IHt9XG4gIGFuY2hvcnM6IGFueSA9IG5ldyBTZXQoKVxuICBjb2RlczogYW55ID0ge31cbiAgcHJvY2VkdXJlczogYW55ID0gbnVsbFxuICBjb2RlMnBhdHRlcm46IGFueSA9IG5ldyBDb2RlMlBhdHRlcm4obnVsbCwge1xuICAgIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgIFwiXigoKC9sZWN0dXJlLykrKXwoKC9sZWN0dXJlLykrL0NNUC8oL2xlY3R1cmUvKSopKSgvQ0MvKT8oL1BST00vKT8oL0FOLUFQUExJLyk/JFwiLFxuICAgICAge1xuICAgICAgICBsZWN0dXJlOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgIFwiXigvREVQT1QvKT8oL0RQVExFVFRSRUNULyk/KC9FVEkvKT8oL0FWQ0UvKT8oL0RHVlQvKT8oL0FDSU4vKT8oL01PVElPTi8pKigvUFJPQ0FDQy8pPygvQ09NLyk/KCgvREVCQVRTLykrKT8oL1JUUklOSS8pPyRcIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcImxlY3R1cmUtQ09NXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9GT05EL3wvQVZJUy8pKyRcIiwge1xuICAgICAgICAgICAgICBcImxlY3R1cmUtQ09NLUZPTkRcIjogbmV3IENvZGUyUGF0dGVybkNvbUZvbmQoKSxcbiAgICAgICAgICAgICAgXCJsZWN0dXJlLUNPTS1BVklTXCI6IG5ldyBDb2RlMlBhdHRlcm5Db21Gb25kKCksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIFwibGVjdHVyZS1ERUJBVFNcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICAgICAgXCJeKC9TRUFOQ0UvKSooKC9NT1RJT04vKT8oL01PVElPTi1WT1RFLykrKT8oL0RFQy8pPyRcIixcbiAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH0sXG4gICAgICAgICksXG4gICAgICAgIENNUDogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICBcIl4oL0RFUE9UL3wvU0FJU0lFLyl7MSwyfSgvQ09NLyk/KC9ERUMvKT8oL0RFQkFUUy1BTi8vREVCQVRTLVNOLyk/XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJDTVAtQ09NXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgICAgIFwiXigvTk9NSU4vKT8oL1JBUFBPUlQtQU4vfC9SQVBQT1JULVNOLyl7Mn0kXCIsXG4gICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIFwiQ01QLURFQkFUUy1BTlwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0VBTkNFLykqKC9ERUMvKT8kXCIsIHt9KSxcbiAgICAgICAgICAgIFwiQ01QLURFQkFUUy1TTlwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0VBTkNFLykqKC9ERUMvKT8kXCIsIHt9KSxcbiAgICAgICAgICB9LFxuICAgICAgICApLFxuICAgICAgICBDQzogbmV3IENvZGUyUGF0dGVybihcIl4oL1NBSVNJRS8pKygvQ09OQ0xVU0lPTi8pPyRcIiwge30pLFxuICAgICAgICBQUk9NOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvUFVCLyk/JFwiLCB7fSksXG4gICAgICAgIFwiQU4tQVBQTElcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1JBUFBPUlQvKT8kXCIsIHt9KSxcbiAgICAgIH0sXG4gICAgKSxcbiAgICBcIkFsbG9jdXRpb24gZHUgUHLDqXNpZGVudCBkZSBsJ0Fzc2VtYmzDqWUgbmF0aW9uYWxlXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICBcIl4vQU4yMS8kXCIsXG4gICAgICB7XG4gICAgICAgIEFOMjE6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9BUEFOLyk/JFwiLCB7fSksXG4gICAgICB9LFxuICAgICksXG4gICAgXCJSw6lzb2x1dGlvbiBBcnRpY2xlIDM0LTFcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0FOTFVOSS8pPyRcIiwge1xuICAgICAgQU5MVU5JOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8oL0RFQkFUUy8pPygvUlRSSU5JLyk/JFwiLCB7XG4gICAgICAgIFwiQU5MVU5JLURFQkFUU1wiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0VBTkNFLykrKC9ERUMvKT8kXCIsIHt9KSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIFLDqXNvbHV0aW9uOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQU5MVU5JLyk/KC9DQy8pPyRcIiwge1xuICAgICAgQU5MVU5JOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8oL0NPTS8pPygvREVCQVRTL3wvUlRSSU5JLyk/JFwiLCB7XG4gICAgICAgIFwiQU5MVU5JLUNPTVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQ0FFLyk/KC9GT05ELyk/JFwiLCB7XG4gICAgICAgICAgXCJBTkxVTkktQ09NLUZPTkRcIjogbmV3IENvZGUyUGF0dGVybkNvbUZvbmQoKSxcbiAgICAgICAgICBcIkFOTFVOSS1DT00tQ0FFXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgICBcIl4oL1NBSVNJRS8pPygvTk9NSU4vKT8oL1JFVU5JT04vKT8oL1JBUFBPUlQvKT8oL0RFQy8pPyRcIixcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICksXG4gICAgICAgIH0pLFxuICAgICAgICBcIkFOTFVOSS1ERUJBVFNcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1NFQU5DRS8pKigvREVDLyk/JFwiLCB7fSksXG4gICAgICB9KSxcbiAgICAgIENDOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0FJU0lFLyk/KC9DT05DTFVTSU9OLyk/JFwiLCB7fSksXG4gICAgfSksXG4gICAgXCJSYXBwb3J0IGQnaW5mb3JtYXRpb24gc2FucyBtaXNzaW9uXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICBcIl4oL0FOMjAvKT8oL0VVLyk/JFwiLFxuICAgICAge1xuICAgICAgICBBTjIwOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvUkFQUE9SVC8pPyRcIiwge30pLFxuICAgICAgICBFVTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFQy8pKyRcIiwge30pLFxuICAgICAgfSxcbiAgICApLFxuICAgIFwiTWlzc2lvbiBkJ2luZm9ybWF0aW9uXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9BTjIwLyk/JFwiLCB7XG4gICAgICBBTjIwOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvTUlTSU5GLyk/JFwiLCB7XG4gICAgICAgIFwiQU4yMC1NSVNJTkZcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICBcIl4oL0NSRUEvKT8oL05PTUlOLyk/KC9SQVBQT1JULyk/JFwiLFxuICAgICAgICAgIHt9LFxuICAgICAgICApLFxuICAgICAgfSksXG4gICAgfSksXG4gICAgXCJDb21taXNzaW9uIGQnZW5xdcOqdGVcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0FOMjAvKT8kXCIsIHtcbiAgICAgIEFOMjA6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9DT01FTlEvKT8kXCIsIHtcbiAgICAgICAgXCJBTjIwLUNPTUVOUVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgIFwiXigvQ1JFQS8pPygvTk9NSU4vKT8oL1JBUFBPUlQvKT8kXCIsXG4gICAgICAgICAge30sXG4gICAgICAgICksXG4gICAgICB9KSxcbiAgICB9KSxcbiAgICBcIkVuZ2FnZW1lbnQgZGUgbGEgcmVzcG9uc2FiaWxpdMOpIGdvdXZlcm5lbWVudGFsZVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgXCJeL0FOMjEvJFwiLFxuICAgICAge1xuICAgICAgICBBTjIxOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigoKC9NT1RJT04vKSovREVCQVRTLyl8KC9ER1ZULykpezEsMn0kXCIsIHtcbiAgICAgICAgICBcIkFOMjEtREVCQVRTXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TRUFOQ0UvKSooL01PVElPTi1WT1RFLykqJFwiLCB7fSksXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICApLFxuICAgIFwiTW90aW9uIHLDqWbDqXJlbmRhaXJlXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9sZWN0dXJlLykrJFwiLCB7XG4gICAgICBsZWN0dXJlOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8oL0NPTS8pPygvREVCQVRTLyk/JFwiLCB7XG4gICAgICAgIFwibGVjdHVyZS1DT01cIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0ZPTkQvKT8kXCIsIHtcbiAgICAgICAgICBcImxlY3R1cmUtQ09NLUZPTkRcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICAgIFwiXigvU0FJU0lFLyk/KC9OT01JTi8pKigvUkFQUE9SVC8pKiRcIixcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICksXG4gICAgICAgIH0pLFxuICAgICAgICBcImxlY3R1cmUtREVCQVRTXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERUMvKT8kXCIsIHt9KSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIEltbXVuaXTDqTogbmV3IENvZGUyUGF0dGVybihcIl4oL0FOTFVOSS8pKyRcIiwge1xuICAgICAgQU5MVU5JOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8oL0NPTS8pPygvREVCQVRTLyk/KC9SVFJJTkkvKT8kXCIsIHtcbiAgICAgICAgXCJBTkxVTkktQ09NXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9GT05ELyk/JFwiLCB7XG4gICAgICAgICAgXCJBTkxVTkktQ09NLUZPTkRcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICAgIFwiXigvU0FJU0lFLyk/KC9OT01JTi8pKigvUkFQUE9SVC8pKiRcIixcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICksXG4gICAgICAgIH0pLFxuICAgICAgICBcIkFOTFVOSS1ERUJBVFNcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1NFQU5DRS8pPygvREVDLykkXCIsIHt9KSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIFwiUmVzcG9uc2FiaWxpdMOpIHDDqW5hbGUgZHUgcHLDqXNpZGVudCBkZSBsYSByw6lwdWJsaXF1ZVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgXCJeL2xlY3R1cmUvJFwiLFxuICAgICAge1xuICAgICAgICBsZWN0dXJlOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8oL1JFQ0JVUkVBVS8pPyRcIiwge30pLFxuICAgICAgfSxcbiAgICApLFxuICAgIFwiUHJvcG9zaXRpb24gZGUgbG9pIHByw6lzZW50w6llIGVuIGFwcGxpY2F0aW9uIGRlIGwnYXJ0aWNsZSAxMSBkZSBsYSBDb25zdGl0dXRpb25cIjpcbiAgICAgIG5ldyBDb2RlMlBhdHRlcm4oXCJeL2xlY3R1cmUvJFwiLCB7XG4gICAgICAgIGxlY3R1cmU6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERVBPVC8pPyRcIiwge30pLFxuICAgICAgfSksXG4gIH0pXG5cbiAgY29uc3RydWN0b3Ioc2FuaXR5Q2hlY2tzOiBib29sZWFuLCB2ZXJib3NlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICB0aGlzLnZlcmJvc2UgPSB2ZXJib3NlXG4gICAgdGhpcy5zYW5pdHlDaGVja3MgPSBzYW5pdHlDaGVja3NcbiAgICB0aGlzLnByb2NlZHVyZXMgPSB7fVxuICAgIHRoaXMuY29kZTJwYXR0ZXJuLl9tYXRjaF9jb3VudF8rK1xuICB9XG5cbiAgd2Fsa0ZpbGVzKGRhdGE6IHN0cmluZ1tdLCBhY3Rpb246IGFueSkge1xuICAgIGZvciAoY29uc3QgZmlsZSBvZiBnZXRGaWxlcyhkYXRhKSkge1xuICAgICAgY29uc3QgZG9zc2llciA9IGxvYWQoZmlsZSlcbiAgICAgIGxldCBwcm9jZWR1cmU6IHN0cmluZyA9IHRoaXMucmVtYXBQcm9jZWR1cmUoXG4gICAgICAgIGRvc3NpZXIucHJvY2VkdXJlUGFybGVtZW50YWlyZS5saWJlbGxlLFxuICAgICAgKVxuICAgICAgaWYgKCEocHJvY2VkdXJlIGluIHRoaXMucHJvY2VkdXJlcykpIHRoaXMucHJvY2VkdXJlc1twcm9jZWR1cmVdID0ge31cbiAgICAgIGFjdGlvbihcbiAgICAgICAgdGhpcy5wcm9jZWR1cmVzW3Byb2NlZHVyZV0sXG4gICAgICAgIGRvc3NpZXIuYWN0ZXNMZWdpc2xhdGlmcyxcbiAgICAgICAgdGhpcy5jb2RlMnBhdHRlcm5bcHJvY2VkdXJlXSxcbiAgICAgICAgbnVsbCxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBjb2xsZWN0RmlsZXMoZGF0YTogc3RyaW5nW10pIHtcbiAgICB0aGlzLndhbGtGaWxlcyhcbiAgICAgIGRhdGEsXG4gICAgICAoX2FjdGVzOiBhbnksIGFjdGVzTGVnaXNsYXRpZnM6IGFueSwgX2MycDogYW55LCBfcGFyZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5jb2xsZWN0KGFjdGVzTGVnaXNsYXRpZnMpXG4gICAgICB9LFxuICAgIClcbiAgfVxuXG4gIHByb2Nlc3NGaWxlcyhkYXRhOiBzdHJpbmdbXSkge1xuICAgIHRoaXMud2Fsa0ZpbGVzKFxuICAgICAgZGF0YSxcbiAgICAgIChhY3RlczogYW55LCBhY3Rlc0xlZ2lzbGF0aWZzOiBhbnksIGMycDogYW55LCBwYXJlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLm1lcmdlKGFjdGVzLCBhY3Rlc0xlZ2lzbGF0aWZzLCBjMnAsIHBhcmVudClcbiAgICAgIH0sXG4gICAgKVxuICAgIGlmICh0aGlzLnNhbml0eUNoZWNrcykgdGhpcy52YWxpZGF0ZSgpXG4gIH1cblxuICByZW1hcEFjdGVzKGFjdGVzOiBhbnkpOiBhbnkge1xuICAgIGxldCByZXN1bHRzID0gW11cbiAgICBmb3IgKGNvbnN0IGFjdGUgb2YgYWN0ZXMpIHtcbiAgICAgIHRoaXMubGVjdHVyZU1hcHBlci5yZW1hcChhY3RlKVxuXG4gICAgICAvLyBDQy1TQUlTSUUtIHN1ZmZpeCBkb2VzIG5vdCBpbXBseSBhIGhpZXJhcmNoeVxuICAgICAgYWN0ZS5jb2RlQWN0ZSA9IGFjdGUuY29kZUFjdGUucmVwbGFjZSgvXkNDLVNBSVNJRS4qLywgXCJDQy1TQUlTSUVcIilcblxuICAgICAgcmVzdWx0cy5wdXNoKGFjdGUpXG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzXG4gIH1cblxuICBjb2xsZWN0QWN0ZXMoYWN0ZXM6IGFueSk6IGFueSB7XG4gICAgbGV0IHJlc3VsdHMgPSBbXVxuICAgIGZvciAoY29uc3QgYWN0ZSBvZiBhY3Rlcykge1xuICAgICAgdGhpcy5sZWN0dXJlTWFwcGVyLmNvbGxlY3QoYWN0ZSlcblxuICAgICAgcmVzdWx0cy5wdXNoKGFjdGUpXG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzXG4gIH1cblxuICByZW1hcFByb2NlZHVyZShwcm9jZWR1cmU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgbWVyZ2VfcHJvY2VkdXJlczogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXAoW1xuICAgICAgW1wiUHJvcG9zaXRpb24gZGUgbG9pIG9yZGluYWlyZVwiLCBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCJdLFxuICAgICAgW1wiUHJvamV0IGRlIGxvaSBvcmRpbmFpcmVcIiwgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiXSxcbiAgICAgIFtcbiAgICAgICAgXCJQcm9qZXQgZGUgcmF0aWZpY2F0aW9uIGRlcyB0cmFpdMOpcyBldCBjb252ZW50aW9uc1wiLFxuICAgICAgICBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCIsXG4gICAgICBdLFxuICAgICAgW1wiUHJvamV0IG91IHByb3Bvc2l0aW9uIGRlIGxvaSBvcmdhbmlxdWVcIiwgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiXSxcbiAgICAgIFtcbiAgICAgICAgXCJQcm9qZXQgb3UgcHJvcG9zaXRpb24gZGUgbG9pIGNvbnN0aXR1dGlvbm5lbGxlXCIsXG4gICAgICAgIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIixcbiAgICAgIF0sXG4gICAgICBbXCJQcm9qZXQgZGUgbG9pIGRlIGZpbmFuY2VzIGRlIGwnYW5uw6llXCIsIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIl0sXG4gICAgICBbXCJQcm9qZXQgZGUgbG9pIGRlIGZpbmFuY2VzIHJlY3RpZmljYXRpdmVcIiwgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiXSxcbiAgICAgIFtcbiAgICAgICAgXCJQcm9qZXQgZGUgbG9pIGRlIGZpbmFuY2VtZW50IGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiLFxuICAgICAgICBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCIsXG4gICAgICBdLFxuICAgIF0pXG4gICAgaWYgKG1lcmdlX3Byb2NlZHVyZXMuaGFzKHByb2NlZHVyZSkpIHtcbiAgICAgIHRoaXMucmVtYXBwZWRQcm9jZWR1cmVzW3Byb2NlZHVyZV0gPSBudWxsXG4gICAgICByZXR1cm4gbWVyZ2VfcHJvY2VkdXJlcy5nZXQocHJvY2VkdXJlKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcHJvY2VkdXJlXG4gICAgfVxuICB9XG5cbiAgLy8gcmV0dXJuIHRoZSBjb2RlQWN0ZXMgaW4gdGhlIHNhbWUgb3JkZXIgdGhleSBhcHBlYXIgaW4gdGhlIHJlZ2V4cFxuICBvcmRlcmVkQ29kZXMoY29kZXM6IGFueSwgYzJwOiBhbnksIHBhcmVudDogc3RyaW5nKTogU2V0PHN0cmluZz4ge1xuICAgIGNvZGVzID0gbmV3IFNldChjb2RlcylcbiAgICBpZiAoIXRoaXMuc2FuaXR5Q2hlY2tzKSByZXR1cm4gY29kZXNcbiAgICBsZXQgb3JkZXJlZCA9IGMycFtcIl9wYXR0ZXJuX1wiXS5tYXRjaChuZXcgUmVnRXhwKFwiLy4qPy9cIiwgXCJnXCIpKVxuICAgIG9yZGVyZWQgPSBvcmRlcmVkLm1hcCgoeDogc3RyaW5nKSA9PiB4LnJlcGxhY2UobmV3IFJlZ0V4cChcIi8oLiopL1wiKSwgXCIkMVwiKSlcbiAgICBpZiAocGFyZW50ICE9IG51bGwpIG9yZGVyZWQgPSBvcmRlcmVkLm1hcCgoeDogc3RyaW5nKSA9PiBgJHtwYXJlbnR9LSR7eH1gKVxuICAgIG9yZGVyZWQgPSBuZXcgU2V0KG9yZGVyZWQpXG4gICAgYXNzZXJ0KGVxU2V0KG9yZGVyZWQsIGNvZGVzKSwgYCR7Wy4uLm9yZGVyZWRdfSAhPSAke1suLi5jb2Rlc119YClcbiAgICByZXR1cm4gb3JkZXJlZFxuICB9XG5cbiAgdmFsaWRhdGVDaHJvbm9sb2d5KGFjdGVzTGVnaXNsYXRpZnM6IGFueSwgYzJwOiBhbnksIHBhcmVudDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgcGF0dGVybiA9IGMycFtcIl9wYXR0ZXJuX1wiXVxuICAgIGNvbnN0IHNlcXVlbmNlID0gYWN0ZXNMZWdpc2xhdGlmc1xuICAgICAgLm1hcCgoeDogYW55KSA9PiBgLyR7eC5jb2RlQWN0ZX0vYC5yZXBsYWNlKGAvJHtwYXJlbnR9LWAsIFwiL1wiKSlcbiAgICAgIC5qb2luKFwiXCIpXG4gICAgYXNzZXJ0KFxuICAgICAgc2VxdWVuY2UubWF0Y2gobmV3IFJlZ0V4cChwYXR0ZXJuKSksXG4gICAgICBgJHtwYXR0ZXJufSBkb2VzIG5vdCBtYXRjaCAke3NlcXVlbmNlfWAsXG4gICAgKVxuICAgIGMycC5fbWF0Y2hfY291bnRfKytcbiAgfVxuXG4gIG1lcmdlQWN0ZShhY3RlczogYW55LCBhY3RlOiBhbnksIGMycDogYW55LCBwYXJlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGxldCBjb2RlOiBzdHJpbmcgPSBhY3RlLmNvZGVBY3RlXG4gICAgbGV0IHNob3J0Q29kZTogc3RyaW5nID0gY29kZS5yZXBsYWNlKG5ldyBSZWdFeHAoYF4ke3BhcmVudH0tYCksIFwiXCIpXG4gICAgc2hvcnRDb2RlID0gc2hvcnRDb2RlLnJlcGxhY2UoLy0oQU58U04pJC8sIFwiXCIpXG4gICAgdGhpcy5jb2Rlc1tzaG9ydENvZGVdID0gbnVsbFxuICAgIGxldCBuYW1lOiBzdHJpbmcgPSBhY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZVxuICAgIGlmICghKGNvZGUgaW4gYWN0ZXMpKSB7XG4gICAgICBhY3Rlc1tjb2RlXSA9IHtcbiAgICAgICAgdHlwZTogYWN0ZS54c2lUeXBlLFxuICAgICAgICBuYW1lOiBuZXcgU2V0KFtuYW1lXSksXG4gICAgICAgIHNob3J0Q29kZTogc2hvcnRDb2RlLFxuICAgICAgICBhY3Rlczoge30sXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGFjdGVzW2NvZGVdLm5hbWUuYWRkKG5hbWUpXG4gICAgfVxuICAgIGlmIChcImFjdGVzTGVnaXNsYXRpZnNcIiBpbiBhY3RlKVxuICAgICAgdGhpcy5tZXJnZShhY3Rlc1tjb2RlXS5hY3RlcywgYWN0ZS5hY3Rlc0xlZ2lzbGF0aWZzLCBjMnBbY29kZV0sIGNvZGUpXG4gIH1cblxuICBtZXJnZShhY3RlczogYW55LCBhY3Rlc0xlZ2lzbGF0aWZzOiBhbnksIGMycDogYW55LCBwYXJlbnQ6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGwgPSB0aGlzLnJlbWFwQWN0ZXMoYWN0ZXNMZWdpc2xhdGlmcylcbiAgICB0aGlzLnZhbGlkYXRlQ2hyb25vbG9neShsLCBjMnAsIHBhcmVudClcbiAgICBmb3IgKGNvbnN0IGFjdGUgb2YgbCkgdGhpcy5tZXJnZUFjdGUoYWN0ZXMsIGFjdGUsIGMycCwgcGFyZW50KVxuICB9XG5cbiAgY29sbGVjdChhY3Rlc0xlZ2lzbGF0aWZzOiBhbnkpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGFjdGUgb2YgdGhpcy5jb2xsZWN0QWN0ZXMoYWN0ZXNMZWdpc2xhdGlmcykpXG4gICAgICBpZiAoXCJhY3Rlc0xlZ2lzbGF0aWZzXCIgaW4gYWN0ZSkgdGhpcy5jb2xsZWN0KGFjdGUuYWN0ZXNMZWdpc2xhdGlmcylcbiAgfVxuXG4gIHZhbGlkYXRlTGV2ZWwoYzJwOiBhbnksIHBhdGg6IGFueSkge1xuICAgIGFzc2VydChjMnAuX21hdGNoX2NvdW50XyA+IDAsIGAke3BhdGh9IGlzIG5ldmVyIHVzZWRgKVxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGMycCkgYXMgW3N0cmluZywgYW55XVtdKSB7XG4gICAgICBpZiAodmFsdWUgIT0gbnVsbCAmJiB2YWx1ZS5jb25zdHJ1Y3Rvci5uYW1lID09IFwiQ29kZTJQYXR0ZXJuXCIpXG4gICAgICAgIHRoaXMudmFsaWRhdGVMZXZlbCh2YWx1ZSwgcGF0aC5jb25jYXQoW2tleV0pKVxuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlKCkge1xuICAgIHRoaXMudmFsaWRhdGVMZXZlbCh0aGlzLmNvZGUycGF0dGVybiwgW10pXG4gIH1cblxuICBwcmludEVudHJ5KHNlY3Rpb25zOiBzdHJpbmcsIGVudHJ5OiBzdHJpbmcsIGNvZGVzOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0aXRsZSA9IGBcXGAke2VudHJ5fVxcYF9fYFxuICAgIGNvbnNvbGUubG9nKHRpdGxlKVxuICAgIGNvbnN0IHVuZGVybGluZSA9IG5ldyBBcnJheSh0aXRsZS5sZW5ndGggKyAxKS5qb2luKHNlY3Rpb25zWzBdKVxuICAgIGNvbnNvbGUubG9nKHVuZGVybGluZSlcbiAgICBjb25zb2xlLmxvZyhjb2RlcylcbiAgfVxuXG4gIGFkZEFuY2hvcnMoa2V5OiBzdHJpbmcpIHtcbiAgICBpZiAoa2V5IGluIHRoaXMuYW5jaG9yc1ByaW50ZWQpIHJldHVyblxuICAgIGlmICh0aGlzLmxlY3R1cmVNYXBwZXIuaGFzKGtleSkpXG4gICAgICB0aGlzLmxlY3R1cmVNYXBwZXIubWVyZ2VDb2Rlcyh0aGlzLmFuY2hvcnMsIGtleSlcbiAgICBlbHNlIHRoaXMuYW5jaG9ycy5hZGQoa2V5KVxuICB9XG5cbiAgcHJpbnRBbmNob3JzKGtleTogc3RyaW5nKSB7XG4gICAgaWYgKGtleSBpbiB0aGlzLmFuY2hvcnNQcmludGVkKSByZXR1cm5cbiAgICB0aGlzLmFuY2hvcnNQcmludGVkW2tleV0gPSBudWxsXG4gICAgaWYgKHRoaXMubGVjdHVyZU1hcHBlci5oYXMoa2V5KSkgdGhpcy5sZWN0dXJlTWFwcGVyLnByaW50QW5jaG9ycyhrZXkpXG4gICAgZWxzZSBjb25zb2xlLmxvZyhgLi4gXyR7a2V5fTpgKVxuICB9XG5cbiAgZ2V0Q29kZXMoa2V5OiBzdHJpbmcsIHNob3J0Q29kZTogc3RyaW5nKSB7XG4gICAgaWYgKGtleSBpbiB0aGlzLmFuY2hvcnNQcmludGVkKSByZXR1cm4gYGNmIFxcXFwqJHtzaG9ydENvZGV9XFxcXCpgXG4gICAgaWYgKHRoaXMubGVjdHVyZU1hcHBlci5oYXMoa2V5KSkgcmV0dXJuIHRoaXMubGVjdHVyZU1hcHBlci5nZXRDb2RlcyhrZXkpXG4gICAgZWxzZSByZXR1cm4ga2V5XG4gIH1cblxuICByZW5hbWVDTVAoa2V5OiBzdHJpbmcsIG5hbWU6IHN0cmluZykge1xuICAgIGlmIChrZXkuc3RhcnRzV2l0aChcIkNNUFwiKSkge1xuICAgICAgaWYgKGtleS5lbmRzV2l0aChcIi1TTlwiKSkgcmV0dXJuIGAke25hbWV9IChTw6luYXQpYFxuICAgICAgZWxzZSBpZiAoa2V5LmVuZHNXaXRoKFwiLUFOXCIpKSByZXR1cm4gYCR7bmFtZX0gKEFzc2VtYmzDqWUgTmF0aW9uYWxlKWBcbiAgICAgIGVsc2UgcmV0dXJuIG5hbWVcbiAgICB9IGVsc2UgcmV0dXJuIG5hbWVcbiAgfVxuXG4gIHByaW50TGV2ZWwoYWN0ZXM6IGFueSwgc2VjdGlvbnM6IHN0cmluZywgYzJwOiBhbnksIHBhcmVudDogYW55KSB7XG4gICAgY29uc3Qga2V5czogU2V0PHN0cmluZz4gPSB0aGlzLm9yZGVyZWRDb2RlcyhPYmplY3Qua2V5cyhhY3RlcyksIGMycCwgcGFyZW50KVxuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gYWN0ZXNba2V5XVxuICAgICAgbGV0IG5hbWUgPSBBcnJheS5mcm9tKHZhbHVlLm5hbWUpLmpvaW4oXCIsIFwiKVxuICAgICAgbmFtZSA9IHRoaXMucmVuYW1lQ01QKGtleSwgbmFtZSlcbiAgICAgIGNvbnN0IGNvZGVzID0gdGhpcy5nZXRDb2RlcyhrZXksIHZhbHVlLnNob3J0Q29kZSlcbiAgICAgIHRoaXMuYWRkQW5jaG9ycyhrZXkpXG4gICAgICB0aGlzLnByaW50QW5jaG9ycyhrZXkpXG4gICAgICBjb25zb2xlLmxvZyhcIlwiKVxuICAgICAgdGhpcy5wcmludEVudHJ5KHNlY3Rpb25zLCBgJHtuYW1lfSA8JHt2YWx1ZS5zaG9ydENvZGV9VE9DXz5gLCBjb2RlcylcbiAgICAgIGNvbnNvbGUubG9nKFwiXCIpXG4gICAgICBpZiAoT2JqZWN0LmtleXModmFsdWUuYWN0ZXMpLmxlbmd0aCA+IDApXG4gICAgICAgIHRoaXMucHJpbnRMZXZlbCh2YWx1ZS5hY3Rlcywgc2VjdGlvbnMuc3Vic3RyaW5nKDEpLCBjMnBba2V5XSwga2V5KVxuICAgIH1cbiAgfVxuXG4gIHByaW50Q29kZXMoKSB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5jb2RlcykpXG4gICAgICBjb25zb2xlLmxvZyhgLi4gXyR7a2V5fVRPQzogaHR0cDovL2ApXG4gIH1cblxuICBwcmludEFuY2hvcnNJbmRleCgpIHtcbiAgICBmb3IgKGNvbnN0IGNvZGUgb2YgQXJyYXkuZnJvbSh0aGlzLmFuY2hvcnMpKVxuICAgICAgY29uc29sZS5sb2coYCogOnJlZjpcXGAke2NvZGV9IDwke2NvZGV9PlxcYGApXG4gIH1cblxuICBnZXRBZ2dyZWdhdGVkKHByb2NlZHVyZTogc3RyaW5nKSB7XG4gICAgaWYgKHByb2NlZHVyZSA9PSBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCIpIHtcbiAgICAgIGNvbnN0IHJlbWFwcGVkID0gT2JqZWN0LmtleXModGhpcy5yZW1hcHBlZFByb2NlZHVyZXMpLmpvaW4oXCIsIFwiKVxuICAgICAgcmV0dXJuIGAgKGFncsOpZ2F0aW9uIGRlICR7cmVtYXBwZWR9KWBcbiAgICB9IGVsc2UgcmV0dXJuIFwiXCJcbiAgfVxuXG4gIHByaW50KCk6IHZvaWQge1xuICAgIHRoaXMuYW5jaG9yc1ByaW50ZWQgPSB7fVxuICAgIGZvciAoY29uc3QgW2tleSwgYWN0ZXNdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMucHJvY2VkdXJlcykgYXMgW1xuICAgICAgc3RyaW5nLFxuICAgICAgYW55LFxuICAgIF1bXSkge1xuICAgICAgY29uc3QgY29kZSA9IGtleS5yZXBsYWNlKC8gKy9nLCBcIl9cIilcbiAgICAgIHRoaXMuY29kZXNbY29kZV0gPSBudWxsXG4gICAgICBjb25zdCBhZ2dyZWdhdGVkID0gdGhpcy5nZXRBZ2dyZWdhdGVkKGtleSlcbiAgICAgIGNvbnN0IHRpdGxlID0gYFxcYCR7a2V5fSA8JHtjb2RlfVRPQ18+XFxgX18ke2FnZ3JlZ2F0ZWR9YFxuICAgICAgY29uc29sZS5sb2codGl0bGUpXG4gICAgICBjb25zdCB1bmRlcmxpbmUgPSBuZXcgQXJyYXkodGl0bGUubGVuZ3RoICsgMSkuam9pbihcIj1cIilcbiAgICAgIGNvbnNvbGUubG9nKHVuZGVybGluZSlcbiAgICAgIHRoaXMucHJpbnRMZXZlbChhY3RlcywgXCItfi4nXCIsIHRoaXMuY29kZTJwYXR0ZXJuW2tleV0sIG51bGwpXG4gICAgfVxuICAgIHRoaXMucHJpbnRDb2RlcygpXG4gICAgdGhpcy5wcmludEFuY2hvcnNJbmRleCgpXG4gIH1cbn1cblxuZnVuY3Rpb24gbWFpbihhcmd2OiBhbnkpOiBudW1iZXIge1xuICBjb25zdCBvcHRpb25zID0gcGFyc2VBcmdzKGFyZ3YpXG4gIGlmIChvcHRpb25zID09PSBudWxsKSByZXR1cm4gMVxuICBsZXQgZG9jID0gbmV3IEFjdGVzRG9jdW1lbnRhdGlvbihcbiAgICAhb3B0aW9uc1tcIm5vLXNhbml0eS1jaGVja3NcIl0sXG4gICAgb3B0aW9ucy52ZXJib3NlLFxuICApXG4gIGRvYy5jb2xsZWN0RmlsZXMob3B0aW9ucy5kYXRhKVxuICBkb2MucHJvY2Vzc0ZpbGVzKG9wdGlvbnMuZGF0YSlcbiAgZG9jLnByaW50KClcbiAgcmV0dXJuIDBcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAocHJvY2Vzcy5hcmd2WzFdLmVuZHNXaXRoKFwiZG9jdW1lbnRfZG9zc2llcnNfbGVnaXNsYXRpZnMudHNcIikpXG4gIHByb2Nlc3MuZXhpdChtYWluKHByb2Nlc3MuYXJndikpXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBZ0Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFaEQsU0FBU0EsU0FBUyxDQUFDQyxJQUFjLEVBQU87RUFDdEMsSUFBTUMsa0JBQWtCLEdBQUcsQ0FDekI7SUFDRUMsV0FBVyxFQUFFLHlEQUF5RDtJQUN0RUMsYUFBYSxFQUFFLElBQUk7SUFDbkJDLFFBQVEsRUFBRSxJQUFJO0lBQ2RDLElBQUksRUFBRSxNQUFNO0lBQ1pDLElBQUksRUFBRUM7RUFDUixDQUFDLEVBQ0Q7SUFDRUYsSUFBSSxFQUFFLGtCQUFrQjtJQUN4QkMsSUFBSSxFQUFFRSxPQUFPO0lBQ2JOLFdBQVcsRUFBRTtFQUNmLENBQUMsRUFDRDtJQUNFRyxJQUFJLEVBQUUsU0FBUztJQUNmQyxJQUFJLEVBQUVFLE9BQU87SUFDYk4sV0FBVyxFQUFFO0VBQ2YsQ0FBQyxFQUNEO0lBQ0VHLElBQUksRUFBRSxNQUFNO0lBQ1pILFdBQVcsRUFB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
656
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29tbWFuZExpbmVBcmdzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29tbWFuZExpbmVVc2FnZSIsIl9hc3NlcnQiLCJfZmlsZV9zeXN0ZW1zIiwib2JqIiwiX19lc01vZHVsZSIsIl9zbGljZWRUb0FycmF5IiwiYXJyIiwiaSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJUeXBlRXJyb3IiLCJfaSIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiX3MiLCJfZSIsIl94IiwiX3IiLCJfYXJyIiwiX24iLCJfZCIsImNhbGwiLCJuZXh0IiwiT2JqZWN0IiwiZG9uZSIsInB1c2giLCJ2YWx1ZSIsImxlbmd0aCIsImVyciIsIkFycmF5IiwiaXNBcnJheSIsIl90b0NvbnN1bWFibGVBcnJheSIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJpdGVyIiwiZnJvbSIsIl9hcnJheUxpa2VUb0FycmF5IiwiX2luaGVyaXRzIiwic3ViQ2xhc3MiLCJzdXBlckNsYXNzIiwicHJvdG90eXBlIiwiY3JlYXRlIiwiY29uc3RydWN0b3IiLCJ3cml0YWJsZSIsImNvbmZpZ3VyYWJsZSIsImRlZmluZVByb3BlcnR5IiwiX3NldFByb3RvdHlwZU9mIiwibyIsInAiLCJzZXRQcm90b3R5cGVPZiIsImJpbmQiLCJfX3Byb3RvX18iLCJfY3JlYXRlU3VwZXIiLCJEZXJpdmVkIiwiaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJfY3JlYXRlU3VwZXJJbnRlcm5hbCIsIlN1cGVyIiwiX2dldFByb3RvdHlwZU9mIiwicmVzdWx0IiwiTmV3VGFyZ2V0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImFyZ3VtZW50cyIsImFwcGx5IiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJzZWxmIiwiX3R5cGVvZiIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJSZWZlcmVuY2VFcnJvciIsInNoYW0iLCJQcm94eSIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwiZSIsImdldFByb3RvdHlwZU9mIiwiX2RlZmluZVByb3BlcnRpZXMiLCJ0YXJnZXQiLCJwcm9wcyIsImRlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwiX3RvUHJvcGVydHlLZXkiLCJrZXkiLCJfY3JlYXRlQ2xhc3MiLCJDb25zdHJ1Y3RvciIsInByb3RvUHJvcHMiLCJzdGF0aWNQcm9wcyIsIl9jbGFzc0NhbGxDaGVjayIsImluc3RhbmNlIiwiX2RlZmluZVByb3BlcnR5IiwiYXJnIiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwiaW5wdXQiLCJoaW50IiwicHJpbSIsInRvUHJpbWl0aXZlIiwidW5kZWZpbmVkIiwicmVzIiwiTnVtYmVyIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJhbGxvd0FycmF5TGlrZSIsIml0IiwiRiIsInMiLCJuIiwiX2UyIiwiZiIsIm5vcm1hbENvbXBsZXRpb24iLCJkaWRFcnIiLCJzdGVwIiwiX2UzIiwibWluTGVuIiwidG9TdHJpbmciLCJzbGljZSIsIm5hbWUiLCJ0ZXN0IiwibGVuIiwiYXJyMiIsInBhcnNlQXJncyIsImFyZ3YiLCJvcHRpb25zRGVmaW5pdGlvbnMiLCJkZXNjcmlwdGlvbiIsImRlZmF1bHRPcHRpb24iLCJtdWx0aXBsZSIsInR5cGUiLCJzZWN0aW9ucyIsImhlYWRlciIsImNvbnRlbnQiLCJvcHRpb25MaXN0Iiwib3B0aW9ucyIsImNvbW1hbmRMaW5lQXJncyIsImNvbnNvbGUiLCJlcnJvciIsImhlbHAiLCJ1c2FnZSIsImNvbW1hbmRMaW5lVXNhZ2UiLCJ3YXJuIiwiZXFTZXQiLCJhcyIsImJzIiwic2l6ZSIsIl9pdGVyYXRvciIsIl9zdGVwIiwiYSIsImhhcyIsIkNvZGUyUGF0dGVybiIsInBhdHRlcm4iLCJjaGlsZHJlbiIsIl9wYXR0ZXJuXyIsIl9tYXRjaF9jb3VudF8iLCJhc3NpZ24iLCJDb2RlMlBhdHRlcm5Db21Gb25kIiwiX0NvZGUyUGF0dGVybiIsIl9zdXBlciIsIkxlY3R1cmVNYXBwaW5nIiwiU2V0IiwiYWRkIiwiYWN0ZSIsImNvZGVzIiwiY29kZUFjdGUiLCJnZXRUeXBlIiwibGliZWxsZUFjdGUiLCJub21DYW5vbmlxdWUiLCJsaWJlbGxlIiwicmVtYXAiLCJ0eXBlcyIsIm1lcmdlQ29kZXMiLCJfQXJyYXkkZnJvbSIsImMiLCJwcmludEFuY2hvcnMiLCJfaTIiLCJfQXJyYXkkZnJvbTIiLCJjb2RlIiwibG9nIiwiY29uY2F0IiwiZ2V0Q29kZXMiLCJqb2luIiwiaXNMZWN0dXJlIiwibWF0Y2giLCJjb2Rlc19sZWN0dXJlX3JlZ2V4cCIsIkVycm9yIiwibWFwIiwicmVwbGFjZSIsImdldENvZGVBY3RlIiwiUmVnRXhwIiwiY29kZXNfbGVjdHVyZSIsIkxlY3R1cmVNYXBwZXIiLCJtYXBwaW5nIiwiY29sbGVjdCIsImxlY3R1cmVzIiwiQWN0ZXNEb2N1bWVudGF0aW9uIiwic2FuaXR5Q2hlY2tzIiwidmVyYm9zZSIsImxlY3R1cmUiLCJDTVAiLCJDQyIsIlBST00iLCJBTjIxIiwiQU5MVU5JIiwiUsOpc29sdXRpb24iLCJBTjIwIiwiRVUiLCJJbW11bml0w6kiLCJwcm9jZWR1cmVzIiwiY29kZTJwYXR0ZXJuIiwid2Fsa0ZpbGVzIiwiZGF0YSIsImFjdGlvbiIsIl9pdGVyYXRvcjIiLCJnZXRGaWxlcyIsIl9zdGVwMiIsImZpbGUiLCJkb3NzaWVyIiwibG9hZCIsInByb2NlZHVyZSIsInJlbWFwUHJvY2VkdXJlIiwicHJvY2VkdXJlUGFybGVtZW50YWlyZSIsImFjdGVzTGVnaXNsYXRpZnMiLCJjb2xsZWN0RmlsZXMiLCJfdGhpcyIsIl9hY3RlcyIsIl9jMnAiLCJfcGFyZW50IiwicHJvY2Vzc0ZpbGVzIiwiX3RoaXMyIiwiYWN0ZXMiLCJjMnAiLCJwYXJlbnQiLCJtZXJnZSIsInZhbGlkYXRlIiwicmVtYXBBY3RlcyIsInJlc3VsdHMiLCJfaXRlcmF0b3IzIiwiX3N0ZXAzIiwibGVjdHVyZU1hcHBlciIsImNvbGxlY3RBY3RlcyIsIl9pdGVyYXRvcjQiLCJfc3RlcDQiLCJtZXJnZV9wcm9jZWR1cmVzIiwiTWFwIiwicmVtYXBwZWRQcm9jZWR1cmVzIiwiZ2V0Iiwib3JkZXJlZENvZGVzIiwib3JkZXJlZCIsIngiLCJhc3NlcnQiLCJ2YWxpZGF0ZUNocm9ub2xvZ3kiLCJzZXF1ZW5jZSIsIm1lcmdlQWN0ZSIsInNob3J0Q29kZSIsInhzaVR5cGUiLCJsIiwiX2l0ZXJhdG9yNSIsIl9zdGVwNSIsIl9pdGVyYXRvcjYiLCJfc3RlcDYiLCJ2YWxpZGF0ZUxldmVsIiwicGF0aCIsIl9pMyIsImVudHJpZXMiLCJfYXJyJF9pIiwicHJpbnRFbnRyeSIsImVudHJ5IiwidGl0bGUiLCJ1bmRlcmxpbmUiLCJhZGRBbmNob3JzIiwiYW5jaG9yc1ByaW50ZWQiLCJhbmNob3JzIiwicmVuYW1lQ01QIiwic3RhcnRzV2l0aCIsImVuZHNXaXRoIiwicHJpbnRMZXZlbCIsImtleXMiLCJfaXRlcmF0b3I3IiwiX3N0ZXA3Iiwic3Vic3RyaW5nIiwicHJpbnRDb2RlcyIsIl9pNCIsIl9PYmplY3Qka2V5cyIsInByaW50QW5jaG9yc0luZGV4IiwiX2k1IiwiX0FycmF5JGZyb20zIiwiZ2V0QWdncmVnYXRlZCIsInJlbWFwcGVkIiwicHJpbnQiLCJfaTYiLCJfYXJyMiIsIl9hcnIyJF9pIiwiYWdncmVnYXRlZCIsIm1haW4iLCJkb2MiLCJwcm9jZXNzIiwiZXhpdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL2RvY3VtZW50X2Rvc3NpZXJzX2xlZ2lzbGF0aWZzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcbmltcG9ydCBjb21tYW5kTGluZVVzYWdlIGZyb20gXCJjb21tYW5kLWxpbmUtdXNhZ2VcIlxuaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCB7IGxvYWQsIGdldEZpbGVzIH0gZnJvbSBcIi4uL2ZpbGVfc3lzdGVtc1wiXG5cbmZ1bmN0aW9uIHBhcnNlQXJncyhhcmd2OiBzdHJpbmdbXSk6IGFueSB7XG4gIGNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJwYXRobmFtZSB0byBhIEpTT04gZmlsZSBvciBhIGdsb2IgcGF0dGVybiB0byBKU09OIGZpbGVzXCIsXG4gICAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICBuYW1lOiBcImRhdGFcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IFwibm8tc2FuaXR5LWNoZWNrc1wiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkRvIG5vdCBwZXJmb3JtIHNhbml0eSBjaGVja3MuXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiBcInZlcmJvc2VcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZXNjcmlwdGlvbjogXCJpbmNyZWFzZSB2ZXJib3NpdHlcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IFwiaGVscFwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiUHJpbnQgdGhpcyB1c2FnZSBndWlkZS5cIixcbiAgICB9LFxuICBdXG4gIGNvbnN0IHNlY3Rpb25zID0gW1xuICAgIHtcbiAgICAgIGhlYWRlcjogXCJBaWRlIMOgIGxhIGRvY3VtZW50YXRpb24gZHUgZG9zc2llciBsw6lnaXNsYXRpZlwiLFxuICAgICAgY29udGVudDogXCJHw6luw6hyZSB1bmUgaGnDqXJhcmNoaWUgZGVzIGFjdGVzIGzDqWdpc2xhdGlmc1wiLFxuICAgIH0sXG4gICAge1xuICAgICAgaGVhZGVyOiBcIk9wdGlvbnNcIixcbiAgICAgIG9wdGlvbkxpc3Q6IG9wdGlvbnNEZWZpbml0aW9ucyxcbiAgICB9LFxuICBdXG4gIGNvbnN0IG9wdGlvbnMgPSBjb21tYW5kTGluZUFyZ3Mob3B0aW9uc0RlZmluaXRpb25zLCB7XG4gICAgYXJndjogYXJndixcbiAgfSlcbiAgaWYgKCEoXCJoZWxwXCIgaW4gb3B0aW9ucykgJiYgIShcImRhdGFcIiBpbiBvcHRpb25zKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoXCItLWRhdGEgaXMgbWFuZGF0b3J5XCIpXG4gICAgb3B0aW9ucy5oZWxwID0gdHJ1ZVxuICB9XG4gIGlmIChcImhlbHBcIiBpbiBvcHRpb25zKSB7XG4gICAgY29uc3QgdXNhZ2UgPSBjb21tYW5kTGluZVVzYWdlKHNlY3Rpb25zKVxuICAgIGNvbnNvbGUud2Fybih1c2FnZSlcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIHJldHVybiBvcHRpb25zXG59XG5cbmZ1bmN0aW9uIGVxU2V0KGFzOiBTZXQ8c3RyaW5nPiwgYnM6IFNldDxzdHJpbmc+KTogYm9vbGVhbiB7XG4gIGlmIChhcy5zaXplICE9PSBicy5zaXplKSByZXR1cm4gZmFsc2VcbiAgZm9yICh2YXIgYSBvZiBhcykgaWYgKCFicy5oYXMoYSkpIHJldHVybiBmYWxzZVxuICByZXR1cm4gdHJ1ZVxufVxuXG5jbGFzcyBDb2RlMlBhdHRlcm4ge1xuICBfcGF0dGVybl86IGFueVxuICBfbWF0Y2hfY291bnRfOiBudW1iZXJcbiAgY29uc3RydWN0b3IocGF0dGVybjogYW55LCBjaGlsZHJlbjogYW55KSB7XG4gICAgdGhpcy5fcGF0dGVybl8gPSBwYXR0ZXJuXG4gICAgdGhpcy5fbWF0Y2hfY291bnRfID0gMFxuICAgIE9iamVjdC5hc3NpZ24odGhpcywgY2hpbGRyZW4pXG4gIH1cbn1cblxuY2xhc3MgQ29kZTJQYXR0ZXJuQ29tRm9uZCBleHRlbmRzIENvZGUyUGF0dGVybiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwiXi9TQUlTSUUvKC9OT01JTi8pKigvUkVVTklPTi8pKigvUkFQUE9SVC8pKiRcIiwge30pXG4gIH1cbn1cblxuY2xhc3MgTGVjdHVyZU1hcHBpbmcge1xuICBsaWJlbGxlOiBhbnkgPSB7fVxuICBjb2RlczogYW55ID0gbmV3IFNldCgpXG5cbiAgc3RhdGljIGNvZGVzX2xlY3R1cmU6IHN0cmluZ1tdID0gW1xuICAgIFwiQU4xXCIsXG4gICAgXCJTTjFcIixcbiAgICBcIkFOTkxFQ1wiLFxuICAgIFwiU05OTEVDXCIsXG4gICAgXCJBTkxERUZcIixcbiAgICBcIkFOMlwiLFxuICAgIFwiU04yXCIsXG4gICAgXCJTTjNcIixcbiAgXVxuICBzdGF0aWMgY29kZXNfbGVjdHVyZV9yZWdleHA6IGFueSA9IG5ldyBSZWdFeHAoXG4gICAgXCJeKD86XCIgKyBMZWN0dXJlTWFwcGluZy5jb2Rlc19sZWN0dXJlLmpvaW4oXCJ8XCIpICsgXCIpKC0uKik/JFwiLFxuICApXG5cbiAgc3RhdGljIGlzTGVjdHVyZShhY3RlOiBhbnkpIHtcbiAgICByZXR1cm4gYWN0ZS5jb2RlQWN0ZS5tYXRjaChMZWN0dXJlTWFwcGluZy5jb2Rlc19sZWN0dXJlX3JlZ2V4cClcbiAgfVxuXG4gIHN0YXRpYyBnZXRUeXBlKGFjdGU6IGFueSkge1xuICAgIGlmIChhY3RlLmNvZGVBY3RlLm1hdGNoKC9eQU4vKSkgcmV0dXJuIFwiQU5cIlxuICAgIGVsc2UgaWYgKGFjdGUuY29kZUFjdGUubWF0Y2goL15TTi8pKSByZXR1cm4gXCJTTlwiXG4gICAgZWxzZSB0aHJvdyBFcnJvcihgJHthY3RlLmNvZGVBY3RlfSBkb2VzIG5vdCBzdGFydCB3aXRoIEFOIG9yIFNOYClcbiAgfVxuXG4gIHN0YXRpYyBtYXAoY29kZUFjdGU6IGFueSkge1xuICAgIHJldHVybiBjb2RlQWN0ZS5yZXBsYWNlKExlY3R1cmVNYXBwaW5nLmNvZGVzX2xlY3R1cmVfcmVnZXhwLCBgbGVjdHVyZSQxYClcbiAgfVxuXG4gIHN0YXRpYyBnZXRDb2RlQWN0ZShhY3RlOiBhbnkpIHtcbiAgICBpZiAoIUxlY3R1cmVNYXBwaW5nLmlzTGVjdHVyZShhY3RlKSkgcmV0dXJuXG5cbiAgICByZXR1cm4gTGVjdHVyZU1hcHBpbmcubWFwKGFjdGUuY29kZUFjdGUpXG4gIH1cblxuICBhZGQoYWN0ZTogYW55KSB7XG4gICAgdGhpcy5jb2Rlcy5hZGQoYWN0ZS5jb2RlQWN0ZSlcblxuICAgIGNvbnN0IHR5cGUgPSBMZWN0dXJlTWFwcGluZy5nZXRUeXBlKGFjdGUpXG5cbiAgICBpZiAoIShhY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZSBpbiB0aGlzLmxpYmVsbGUpKVxuICAgICAgdGhpcy5saWJlbGxlW2FjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlXSA9IG5ldyBTZXQoKVxuICAgIHRoaXMubGliZWxsZVthY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZV0uYWRkKHR5cGUpXG4gIH1cblxuICByZW1hcChhY3RlOiBhbnksIGNvZGVBY3RlOiBzdHJpbmcpIHtcbiAgICBhY3RlLmNvZGVBY3RlID0gY29kZUFjdGVcblxuICAgIGxldCB0eXBlcyA9IHRoaXMubGliZWxsZVthY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZV1cbiAgICBpZiAoISh0eXBlcy5oYXMoXCJTTlwiKSAmJiB0eXBlcy5oYXMoXCJBTlwiKSkpIHtcbiAgICAgIGlmICh0eXBlcy5oYXMoXCJTTlwiKSkgYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWUgKz0gXCIgKFPDqW5hdClcIlxuICAgICAgZWxzZSBpZiAodHlwZXMuaGFzKFwiQU5cIikpXG4gICAgICAgIGFjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlICs9IFwiIChBc3NlbWJsw6llIE5hdGlvbmFsZSlcIlxuICAgIH1cbiAgfVxuXG4gIG1lcmdlQ29kZXMoY29kZXM6IGFueSkge1xuICAgIGZvciAoY29uc3QgYyBvZiBBcnJheS5mcm9tKHRoaXMuY29kZXMpKSBjb2Rlcy5hZGQoYylcbiAgfVxuXG4gIHByaW50QW5jaG9ycygpIHtcbiAgICBmb3IgKGNvbnN0IGNvZGUgb2YgQXJyYXkuZnJvbSh0aGlzLmNvZGVzKSkgY29uc29sZS5sb2coYC4uIF8ke2NvZGV9OmApXG4gIH1cblxuICBnZXRDb2RlcygpIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmNvZGVzKS5qb2luKFwiLFwiKVxuICB9XG59XG5cbmNsYXNzIExlY3R1cmVNYXBwZXIge1xuICBtYXBwaW5nOiBhbnkgPSB7fVxuXG4gIGhhcyhjb2RlQWN0ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGNvZGVBY3RlIGluIHRoaXMubWFwcGluZ1xuICB9XG5cbiAgY29sbGVjdChhY3RlOiBhbnkpIHtcbiAgICBjb25zdCBjb2RlQWN0ZSA9IExlY3R1cmVNYXBwaW5nLmdldENvZGVBY3RlKGFjdGUpXG4gICAgaWYgKGNvZGVBY3RlICE9IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IGxlY3R1cmVzID0gdGhpcy5tYXBwaW5nXG4gICAgICBpZiAoIShjb2RlQWN0ZSBpbiBsZWN0dXJlcykpIGxlY3R1cmVzW2NvZGVBY3RlXSA9IG5ldyBMZWN0dXJlTWFwcGluZygpXG4gICAgICBsZWN0dXJlc1tjb2RlQWN0ZV0uYWRkKGFjdGUpXG4gICAgfVxuICB9XG5cbiAgcmVtYXAoYWN0ZTogYW55KSB7XG4gICAgY29uc3QgY29kZUFjdGUgPSBMZWN0dXJlTWFwcGluZy5nZXRDb2RlQWN0ZShhY3RlKVxuICAgIGlmIChjb2RlQWN0ZSAhPSB1bmRlZmluZWQpIHRoaXMubWFwcGluZ1tjb2RlQWN0ZV0ucmVtYXAoYWN0ZSwgY29kZUFjdGUpXG4gIH1cblxuICBtZXJnZUNvZGVzKGNvZGVzOiBhbnksIGNvZGVBY3RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLm1hcHBpbmdbY29kZUFjdGVdLm1lcmdlQ29kZXMoY29kZXMpXG4gIH1cblxuICBwcmludEFuY2hvcnMoY29kZUFjdGU6IHN0cmluZykge1xuICAgIHRoaXMubWFwcGluZ1tjb2RlQWN0ZV0ucHJpbnRBbmNob3JzKClcbiAgfVxuXG4gIGdldENvZGVzKGNvZGVBY3RlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5tYXBwaW5nW2NvZGVBY3RlXS5nZXRDb2RlcygpXG4gIH1cbn1cblxuY2xhc3MgQWN0ZXNEb2N1bWVudGF0aW9uIHtcbiAgdmVyYm9zZTogYm9vbGVhblxuICBzYW5pdHlDaGVja3M6IGJvb2xlYW5cbiAgbGVjdHVyZU1hcHBlcjogYW55ID0gbmV3IExlY3R1cmVNYXBwZXIoKVxuICByZW1hcHBlZFByb2NlZHVyZXM6IGFueSA9IHt9XG4gIGFuY2hvcnNQcmludGVkOiBhbnkgPSB7fVxuICBhbmNob3JzOiBhbnkgPSBuZXcgU2V0KClcbiAgY29kZXM6IGFueSA9IHt9XG4gIHByb2NlZHVyZXM6IGFueSA9IG51bGxcbiAgY29kZTJwYXR0ZXJuOiBhbnkgPSBuZXcgQ29kZTJQYXR0ZXJuKG51bGwsIHtcbiAgICBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICBcIl4oKCgvbGVjdHVyZS8pKyl8KCgvbGVjdHVyZS8pKy9DTVAvKC9sZWN0dXJlLykqKSkoL0NDLyk/KC9QUk9NLyk/KC9BTi1BUFBMSS8pPyRcIixcbiAgICAgIHtcbiAgICAgICAgbGVjdHVyZTogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICBcIl4oL0RFUE9ULyk/KC9EUFRMRVRUUkVDVC8pPygvRVRJLyk/KC9BVkNFLyk/KC9ER1ZULyk/KC9BQ0lOLyk/KC9NT1RJT04vKSooL1BST0NBQ0MvKT8oL0NPTS8pPygoL0RFQkFUUy8pKyk/KC9SVFJJTkkvKT8kXCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJsZWN0dXJlLUNPTVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvRk9ORC98L0FWSVMvKSskXCIsIHtcbiAgICAgICAgICAgICAgXCJsZWN0dXJlLUNPTS1GT05EXCI6IG5ldyBDb2RlMlBhdHRlcm5Db21Gb25kKCksXG4gICAgICAgICAgICAgIFwibGVjdHVyZS1DT00tQVZJU1wiOiBuZXcgQ29kZTJQYXR0ZXJuQ29tRm9uZCgpLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBcImxlY3R1cmUtREVCQVRTXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgICAgIFwiXigvU0VBTkNFLykqKCgvTU9USU9OLyk/KC9NT1RJT04tVk9URS8pKyk/KC9ERUMvKT8kXCIsXG4gICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9LFxuICAgICAgICApLFxuICAgICAgICBDTVA6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgXCJeKC9ERVBPVC98L1NBSVNJRS8pezEsMn0oL0NPTS8pPygvREVDLyk/KC9ERUJBVFMtQU4vL0RFQkFUUy1TTi8pP1wiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiQ01QLUNPTVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgICAgICBcIl4oL05PTUlOLyk/KC9SQVBQT1JULUFOL3wvUkFQUE9SVC1TTi8pezJ9JFwiLFxuICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBcIkNNUC1ERUJBVFMtQU5cIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1NFQU5DRS8pKigvREVDLyk/JFwiLCB7fSksXG4gICAgICAgICAgICBcIkNNUC1ERUJBVFMtU05cIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1NFQU5DRS8pKigvREVDLyk/JFwiLCB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgKSxcbiAgICAgICAgQ0M6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TQUlTSUUvKSsoL0NPTkNMVVNJT04vKT8kXCIsIHt9KSxcbiAgICAgICAgUFJPTTogbmV3IENvZGUyUGF0dGVybihcIl4oL1BVQi8pPyRcIiwge30pLFxuICAgICAgICBcIkFOLUFQUExJXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9SQVBQT1JULyk/JFwiLCB7fSksXG4gICAgICB9LFxuICAgICksXG4gICAgXCJBbGxvY3V0aW9uIGR1IFByw6lzaWRlbnQgZGUgbCdBc3NlbWJsw6llIG5hdGlvbmFsZVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgXCJeL0FOMjEvJFwiLFxuICAgICAge1xuICAgICAgICBBTjIxOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQVBBTi8pPyRcIiwge30pLFxuICAgICAgfSxcbiAgICApLFxuICAgIFwiUsOpc29sdXRpb24gQXJ0aWNsZSAzNC0xXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9BTkxVTkkvKT8kXCIsIHtcbiAgICAgIEFOTFVOSTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFUE9ULyk/KC9ERUJBVFMvKT8oL1JUUklOSS8pPyRcIiwge1xuICAgICAgICBcIkFOTFVOSS1ERUJBVFNcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1NFQU5DRS8pKygvREVDLyk/JFwiLCB7fSksXG4gICAgICB9KSxcbiAgICB9KSxcbiAgICBSw6lzb2x1dGlvbjogbmV3IENvZGUyUGF0dGVybihcIl4oL0FOTFVOSS8pPygvQ0MvKT8kXCIsIHtcbiAgICAgIEFOTFVOSTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFUE9ULyk/KC9DT00vKT8oL0RFQkFUUy98L1JUUklOSS8pPyRcIiwge1xuICAgICAgICBcIkFOTFVOSS1DT01cIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0NBRS8pPygvRk9ORC8pPyRcIiwge1xuICAgICAgICAgIFwiQU5MVU5JLUNPTS1GT05EXCI6IG5ldyBDb2RlMlBhdHRlcm5Db21Gb25kKCksXG4gICAgICAgICAgXCJBTkxVTkktQ09NLUNBRVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgICAgXCJeKC9TQUlTSUUvKT8oL05PTUlOLyk/KC9SRVVOSU9OLyk/KC9SQVBQT1JULyk/KC9ERUMvKT8kXCIsXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICApLFxuICAgICAgICB9KSxcbiAgICAgICAgXCJBTkxVTkktREVCQVRTXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TRUFOQ0UvKSooL0RFQy8pPyRcIiwge30pLFxuICAgICAgfSksXG4gICAgICBDQzogbmV3IENvZGUyUGF0dGVybihcIl4oL1NBSVNJRS8pPygvQ09OQ0xVU0lPTi8pPyRcIiwge30pLFxuICAgIH0pLFxuICAgIFwiUmFwcG9ydCBkJ2luZm9ybWF0aW9uIHNhbnMgbWlzc2lvblwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgXCJeKC9BTjIwLyk/KC9FVS8pPyRcIixcbiAgICAgIHtcbiAgICAgICAgQU4yMDogbmV3IENvZGUyUGF0dGVybihcIl4oL1JBUFBPUlQvKT8kXCIsIHt9KSxcbiAgICAgICAgRVU6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERUMvKSskXCIsIHt9KSxcbiAgICAgIH0sXG4gICAgKSxcbiAgICBcIk1pc3Npb24gZCdpbmZvcm1hdGlvblwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQU4yMC8pPyRcIiwge1xuICAgICAgQU4yMDogbmV3IENvZGUyUGF0dGVybihcIl4oL01JU0lORi8pPyRcIiwge1xuICAgICAgICBcIkFOMjAtTUlTSU5GXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgXCJeKC9DUkVBLyk/KC9OT01JTi8pPygvUkFQUE9SVC8pPyRcIixcbiAgICAgICAgICB7fSxcbiAgICAgICAgKSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIFwiQ29tbWlzc2lvbiBkJ2VucXXDqnRlXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9BTjIwLyk/JFwiLCB7XG4gICAgICBBTjIwOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQ09NRU5RLyk/JFwiLCB7XG4gICAgICAgIFwiQU4yMC1DT01FTlFcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICBcIl4oL0NSRUEvKT8oL05PTUlOLyk/KC9SQVBQT1JULyk/JFwiLFxuICAgICAgICAgIHt9LFxuICAgICAgICApLFxuICAgICAgfSksXG4gICAgfSksXG4gICAgXCJFbmdhZ2VtZW50IGRlIGxhIHJlc3BvbnNhYmlsaXTDqSBnb3V2ZXJuZW1lbnRhbGVcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgIFwiXi9BTjIxLyRcIixcbiAgICAgIHtcbiAgICAgICAgQU4yMTogbmV3IENvZGUyUGF0dGVybihcIl4oKCgvTU9USU9OLykqL0RFQkFUUy8pfCgvREdWVC8pKXsxLDJ9JFwiLCB7XG4gICAgICAgICAgXCJBTjIxLURFQkFUU1wiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0VBTkNFLykqKC9NT1RJT04tVk9URS8pKiRcIiwge30pLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgKSxcbiAgICBcIk1vdGlvbiByw6lmw6lyZW5kYWlyZVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvbGVjdHVyZS8pKyRcIiwge1xuICAgICAgbGVjdHVyZTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFUE9ULyk/KC9DT00vKT8oL0RFQkFUUy8pPyRcIiwge1xuICAgICAgICBcImxlY3R1cmUtQ09NXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9GT05ELyk/JFwiLCB7XG4gICAgICAgICAgXCJsZWN0dXJlLUNPTS1GT05EXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgICBcIl4oL1NBSVNJRS8pPygvTk9NSU4vKSooL1JBUFBPUlQvKSokXCIsXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICApLFxuICAgICAgICB9KSxcbiAgICAgICAgXCJsZWN0dXJlLURFQkFUU1wiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVDLyk/JFwiLCB7fSksXG4gICAgICB9KSxcbiAgICB9KSxcbiAgICBJbW11bml0w6k6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9BTkxVTkkvKSskXCIsIHtcbiAgICAgIEFOTFVOSTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFUE9ULyk/KC9DT00vKT8oL0RFQkFUUy8pPygvUlRSSU5JLyk/JFwiLCB7XG4gICAgICAgIFwiQU5MVU5JLUNPTVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvRk9ORC8pPyRcIiwge1xuICAgICAgICAgIFwiQU5MVU5JLUNPTS1GT05EXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgICBcIl4oL1NBSVNJRS8pPygvTk9NSU4vKSooL1JBUFBPUlQvKSokXCIsXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICApLFxuICAgICAgICB9KSxcbiAgICAgICAgXCJBTkxVTkktREVCQVRTXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TRUFOQ0UvKT8oL0RFQy8pJFwiLCB7fSksXG4gICAgICB9KSxcbiAgICB9KSxcbiAgICBcIlJlc3BvbnNhYmlsaXTDqSBww6luYWxlIGR1IHByw6lzaWRlbnQgZGUgbGEgcsOpcHVibGlxdWVcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgIFwiXi9sZWN0dXJlLyRcIixcbiAgICAgIHtcbiAgICAgICAgbGVjdHVyZTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFUE9ULyk/KC9SRUNCVVJFQVUvKT8kXCIsIHt9KSxcbiAgICAgIH0sXG4gICAgKSxcbiAgICBcIlByb3Bvc2l0aW9uIGRlIGxvaSBwcsOpc2VudMOpZSBlbiBhcHBsaWNhdGlvbiBkZSBsJ2FydGljbGUgMTEgZGUgbGEgQ29uc3RpdHV0aW9uXCI6XG4gICAgICBuZXcgQ29kZTJQYXR0ZXJuKFwiXi9sZWN0dXJlLyRcIiwge1xuICAgICAgICBsZWN0dXJlOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8kXCIsIHt9KSxcbiAgICAgIH0pLFxuICB9KVxuXG4gIGNvbnN0cnVjdG9yKHNhbml0eUNoZWNrczogYm9vbGVhbiwgdmVyYm9zZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgdGhpcy52ZXJib3NlID0gdmVyYm9zZVxuICAgIHRoaXMuc2FuaXR5Q2hlY2tzID0gc2FuaXR5Q2hlY2tzXG4gICAgdGhpcy5wcm9jZWR1cmVzID0ge31cbiAgICB0aGlzLmNvZGUycGF0dGVybi5fbWF0Y2hfY291bnRfKytcbiAgfVxuXG4gIHdhbGtGaWxlcyhkYXRhOiBzdHJpbmdbXSwgYWN0aW9uOiBhbnkpIHtcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZ2V0RmlsZXMoZGF0YSkpIHtcbiAgICAgIGNvbnN0IGRvc3NpZXIgPSBsb2FkKGZpbGUpXG4gICAgICBsZXQgcHJvY2VkdXJlOiBzdHJpbmcgPSB0aGlzLnJlbWFwUHJvY2VkdXJlKFxuICAgICAgICBkb3NzaWVyLnByb2NlZHVyZVBhcmxlbWVudGFpcmUubGliZWxsZSxcbiAgICAgIClcbiAgICAgIGlmICghKHByb2NlZHVyZSBpbiB0aGlzLnByb2NlZHVyZXMpKSB0aGlzLnByb2NlZHVyZXNbcHJvY2VkdXJlXSA9IHt9XG4gICAgICBhY3Rpb24oXG4gICAgICAgIHRoaXMucHJvY2VkdXJlc1twcm9jZWR1cmVdLFxuICAgICAgICBkb3NzaWVyLmFjdGVzTGVnaXNsYXRpZnMsXG4gICAgICAgIHRoaXMuY29kZTJwYXR0ZXJuW3Byb2NlZHVyZV0sXG4gICAgICAgIG51bGwsXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgY29sbGVjdEZpbGVzKGRhdGE6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy53YWxrRmlsZXMoXG4gICAgICBkYXRhLFxuICAgICAgKF9hY3RlczogYW55LCBhY3Rlc0xlZ2lzbGF0aWZzOiBhbnksIF9jMnA6IGFueSwgX3BhcmVudDogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMuY29sbGVjdChhY3Rlc0xlZ2lzbGF0aWZzKVxuICAgICAgfSxcbiAgICApXG4gIH1cblxuICBwcm9jZXNzRmlsZXMoZGF0YTogc3RyaW5nW10pIHtcbiAgICB0aGlzLndhbGtGaWxlcyhcbiAgICAgIGRhdGEsXG4gICAgICAoYWN0ZXM6IGFueSwgYWN0ZXNMZWdpc2xhdGlmczogYW55LCBjMnA6IGFueSwgcGFyZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5tZXJnZShhY3RlcywgYWN0ZXNMZWdpc2xhdGlmcywgYzJwLCBwYXJlbnQpXG4gICAgICB9LFxuICAgIClcbiAgICBpZiAodGhpcy5zYW5pdHlDaGVja3MpIHRoaXMudmFsaWRhdGUoKVxuICB9XG5cbiAgcmVtYXBBY3RlcyhhY3RlczogYW55KTogYW55IHtcbiAgICBsZXQgcmVzdWx0cyA9IFtdXG4gICAgZm9yIChjb25zdCBhY3RlIG9mIGFjdGVzKSB7XG4gICAgICB0aGlzLmxlY3R1cmVNYXBwZXIucmVtYXAoYWN0ZSlcblxuICAgICAgLy8gQ0MtU0FJU0lFLSBzdWZmaXggZG9lcyBub3QgaW1wbHkgYSBoaWVyYXJjaHlcbiAgICAgIGFjdGUuY29kZUFjdGUgPSBhY3RlLmNvZGVBY3RlLnJlcGxhY2UoL15DQy1TQUlTSUUuKi8sIFwiQ0MtU0FJU0lFXCIpXG5cbiAgICAgIHJlc3VsdHMucHVzaChhY3RlKVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0c1xuICB9XG5cbiAgY29sbGVjdEFjdGVzKGFjdGVzOiBhbnkpOiBhbnkge1xuICAgIGxldCByZXN1bHRzID0gW11cbiAgICBmb3IgKGNvbnN0IGFjdGUgb2YgYWN0ZXMpIHtcbiAgICAgIHRoaXMubGVjdHVyZU1hcHBlci5jb2xsZWN0KGFjdGUpXG5cbiAgICAgIHJlc3VsdHMucHVzaChhY3RlKVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0c1xuICB9XG5cbiAgcmVtYXBQcm9jZWR1cmUocHJvY2VkdXJlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1lcmdlX3Byb2NlZHVyZXM6IE1hcDxzdHJpbmcsIGFueT4gPSBuZXcgTWFwKFtcbiAgICAgIFtcIlByb3Bvc2l0aW9uIGRlIGxvaSBvcmRpbmFpcmVcIiwgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiXSxcbiAgICAgIFtcIlByb2pldCBkZSBsb2kgb3JkaW5haXJlXCIsIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIl0sXG4gICAgICBbXG4gICAgICAgIFwiUHJvamV0IGRlIHJhdGlmaWNhdGlvbiBkZXMgdHJhaXTDqXMgZXQgY29udmVudGlvbnNcIixcbiAgICAgICAgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiLFxuICAgICAgXSxcbiAgICAgIFtcIlByb2pldCBvdSBwcm9wb3NpdGlvbiBkZSBsb2kgb3JnYW5pcXVlXCIsIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIl0sXG4gICAgICBbXG4gICAgICAgIFwiUHJvamV0IG91IHByb3Bvc2l0aW9uIGRlIGxvaSBjb25zdGl0dXRpb25uZWxsZVwiLFxuICAgICAgICBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCIsXG4gICAgICBdLFxuICAgICAgW1wiUHJvamV0IGRlIGxvaSBkZSBmaW5hbmNlcyBkZSBsJ2FubsOpZVwiLCBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCJdLFxuICAgICAgW1wiUHJvamV0IGRlIGxvaSBkZSBmaW5hbmNlcyByZWN0aWZpY2F0aXZlXCIsIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIl0sXG4gICAgICBbXG4gICAgICAgIFwiUHJvamV0IGRlIGxvaSBkZSBmaW5hbmNlbWVudCBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIixcbiAgICAgICAgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiLFxuICAgICAgXSxcbiAgICBdKVxuICAgIGlmIChtZXJnZV9wcm9jZWR1cmVzLmhhcyhwcm9jZWR1cmUpKSB7XG4gICAgICB0aGlzLnJlbWFwcGVkUHJvY2VkdXJlc1twcm9jZWR1cmVdID0gbnVsbFxuICAgICAgcmV0dXJuIG1lcmdlX3Byb2NlZHVyZXMuZ2V0KHByb2NlZHVyZSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHByb2NlZHVyZVxuICAgIH1cbiAgfVxuXG4gIC8vIHJldHVybiB0aGUgY29kZUFjdGVzIGluIHRoZSBzYW1lIG9yZGVyIHRoZXkgYXBwZWFyIGluIHRoZSByZWdleHBcbiAgb3JkZXJlZENvZGVzKGNvZGVzOiBhbnksIGMycDogYW55LCBwYXJlbnQ6IHN0cmluZyk6IFNldDxzdHJpbmc+IHtcbiAgICBjb2RlcyA9IG5ldyBTZXQoY29kZXMpXG4gICAgaWYgKCF0aGlzLnNhbml0eUNoZWNrcykgcmV0dXJuIGNvZGVzXG4gICAgbGV0IG9yZGVyZWQgPSBjMnBbXCJfcGF0dGVybl9cIl0ubWF0Y2gobmV3IFJlZ0V4cChcIi8uKj8vXCIsIFwiZ1wiKSlcbiAgICBvcmRlcmVkID0gb3JkZXJlZC5tYXAoKHg6IHN0cmluZykgPT4geC5yZXBsYWNlKG5ldyBSZWdFeHAoXCIvKC4qKS9cIiksIFwiJDFcIikpXG4gICAgaWYgKHBhcmVudCAhPSBudWxsKSBvcmRlcmVkID0gb3JkZXJlZC5tYXAoKHg6IHN0cmluZykgPT4gYCR7cGFyZW50fS0ke3h9YClcbiAgICBvcmRlcmVkID0gbmV3IFNldChvcmRlcmVkKVxuICAgIGFzc2VydChlcVNldChvcmRlcmVkLCBjb2RlcyksIGAke1suLi5vcmRlcmVkXX0gIT0gJHtbLi4uY29kZXNdfWApXG4gICAgcmV0dXJuIG9yZGVyZWRcbiAgfVxuXG4gIHZhbGlkYXRlQ2hyb25vbG9neShhY3Rlc0xlZ2lzbGF0aWZzOiBhbnksIGMycDogYW55LCBwYXJlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHBhdHRlcm4gPSBjMnBbXCJfcGF0dGVybl9cIl1cbiAgICBjb25zdCBzZXF1ZW5jZSA9IGFjdGVzTGVnaXNsYXRpZnNcbiAgICAgIC5tYXAoKHg6IGFueSkgPT4gYC8ke3guY29kZUFjdGV9L2AucmVwbGFjZShgLyR7cGFyZW50fS1gLCBcIi9cIikpXG4gICAgICAuam9pbihcIlwiKVxuICAgIGFzc2VydChcbiAgICAgIHNlcXVlbmNlLm1hdGNoKG5ldyBSZWdFeHAocGF0dGVybikpLFxuICAgICAgYCR7cGF0dGVybn0gZG9lcyBub3QgbWF0Y2ggJHtzZXF1ZW5jZX1gLFxuICAgIClcbiAgICBjMnAuX21hdGNoX2NvdW50XysrXG4gIH1cblxuICBtZXJnZUFjdGUoYWN0ZXM6IGFueSwgYWN0ZTogYW55LCBjMnA6IGFueSwgcGFyZW50OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBsZXQgY29kZTogc3RyaW5nID0gYWN0ZS5jb2RlQWN0ZVxuICAgIGxldCBzaG9ydENvZGU6IHN0cmluZyA9IGNvZGUucmVwbGFjZShuZXcgUmVnRXhwKGBeJHtwYXJlbnR9LWApLCBcIlwiKVxuICAgIHNob3J0Q29kZSA9IHNob3J0Q29kZS5yZXBsYWNlKC8tKEFOfFNOKSQvLCBcIlwiKVxuICAgIHRoaXMuY29kZXNbc2hvcnRDb2RlXSA9IG51bGxcbiAgICBsZXQgbmFtZTogc3RyaW5nID0gYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWVcbiAgICBpZiAoIShjb2RlIGluIGFjdGVzKSkge1xuICAgICAgYWN0ZXNbY29kZV0gPSB7XG4gICAgICAgIHR5cGU6IGFjdGUueHNpVHlwZSxcbiAgICAgICAgbmFtZTogbmV3IFNldChbbmFtZV0pLFxuICAgICAgICBzaG9ydENvZGU6IHNob3J0Q29kZSxcbiAgICAgICAgYWN0ZXM6IHt9LFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhY3Rlc1tjb2RlXS5uYW1lLmFkZChuYW1lKVxuICAgIH1cbiAgICBpZiAoXCJhY3Rlc0xlZ2lzbGF0aWZzXCIgaW4gYWN0ZSlcbiAgICAgIHRoaXMubWVyZ2UoYWN0ZXNbY29kZV0uYWN0ZXMsIGFjdGUuYWN0ZXNMZWdpc2xhdGlmcywgYzJwW2NvZGVdLCBjb2RlKVxuICB9XG5cbiAgbWVyZ2UoYWN0ZXM6IGFueSwgYWN0ZXNMZWdpc2xhdGlmczogYW55LCBjMnA6IGFueSwgcGFyZW50OiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBsID0gdGhpcy5yZW1hcEFjdGVzKGFjdGVzTGVnaXNsYXRpZnMpXG4gICAgdGhpcy52YWxpZGF0ZUNocm9ub2xvZ3kobCwgYzJwLCBwYXJlbnQpXG4gICAgZm9yIChjb25zdCBhY3RlIG9mIGwpIHRoaXMubWVyZ2VBY3RlKGFjdGVzLCBhY3RlLCBjMnAsIHBhcmVudClcbiAgfVxuXG4gIGNvbGxlY3QoYWN0ZXNMZWdpc2xhdGlmczogYW55KTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBhY3RlIG9mIHRoaXMuY29sbGVjdEFjdGVzKGFjdGVzTGVnaXNsYXRpZnMpKVxuICAgICAgaWYgKFwiYWN0ZXNMZWdpc2xhdGlmc1wiIGluIGFjdGUpIHRoaXMuY29sbGVjdChhY3RlLmFjdGVzTGVnaXNsYXRpZnMpXG4gIH1cblxuICB2YWxpZGF0ZUxldmVsKGMycDogYW55LCBwYXRoOiBhbnkpIHtcbiAgICBhc3NlcnQoYzJwLl9tYXRjaF9jb3VudF8gPiAwLCBgJHtwYXRofSBpcyBuZXZlciB1c2VkYClcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhjMnApIGFzIFtzdHJpbmcsIGFueV1bXSkge1xuICAgICAgaWYgKHZhbHVlICE9IG51bGwgJiYgdmFsdWUuY29uc3RydWN0b3IubmFtZSA9PSBcIkNvZGUyUGF0dGVyblwiKVxuICAgICAgICB0aGlzLnZhbGlkYXRlTGV2ZWwodmFsdWUsIHBhdGguY29uY2F0KFtrZXldKSlcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZSgpIHtcbiAgICB0aGlzLnZhbGlkYXRlTGV2ZWwodGhpcy5jb2RlMnBhdHRlcm4sIFtdKVxuICB9XG5cbiAgcHJpbnRFbnRyeShzZWN0aW9uczogc3RyaW5nLCBlbnRyeTogc3RyaW5nLCBjb2Rlczogc3RyaW5nKSB7XG4gICAgY29uc3QgdGl0bGUgPSBgXFxgJHtlbnRyeX1cXGBfX2BcbiAgICBjb25zb2xlLmxvZyh0aXRsZSlcbiAgICBjb25zdCB1bmRlcmxpbmUgPSBuZXcgQXJyYXkodGl0bGUubGVuZ3RoICsgMSkuam9pbihzZWN0aW9uc1swXSlcbiAgICBjb25zb2xlLmxvZyh1bmRlcmxpbmUpXG4gICAgY29uc29sZS5sb2coY29kZXMpXG4gIH1cblxuICBhZGRBbmNob3JzKGtleTogc3RyaW5nKSB7XG4gICAgaWYgKGtleSBpbiB0aGlzLmFuY2hvcnNQcmludGVkKSByZXR1cm5cbiAgICBpZiAodGhpcy5sZWN0dXJlTWFwcGVyLmhhcyhrZXkpKVxuICAgICAgdGhpcy5sZWN0dXJlTWFwcGVyLm1lcmdlQ29kZXModGhpcy5hbmNob3JzLCBrZXkpXG4gICAgZWxzZSB0aGlzLmFuY2hvcnMuYWRkKGtleSlcbiAgfVxuXG4gIHByaW50QW5jaG9ycyhrZXk6IHN0cmluZykge1xuICAgIGlmIChrZXkgaW4gdGhpcy5hbmNob3JzUHJpbnRlZCkgcmV0dXJuXG4gICAgdGhpcy5hbmNob3JzUHJpbnRlZFtrZXldID0gbnVsbFxuICAgIGlmICh0aGlzLmxlY3R1cmVNYXBwZXIuaGFzKGtleSkpIHRoaXMubGVjdHVyZU1hcHBlci5wcmludEFuY2hvcnMoa2V5KVxuICAgIGVsc2UgY29uc29sZS5sb2coYC4uIF8ke2tleX06YClcbiAgfVxuXG4gIGdldENvZGVzKGtleTogc3RyaW5nLCBzaG9ydENvZGU6IHN0cmluZykge1xuICAgIGlmIChrZXkgaW4gdGhpcy5hbmNob3JzUHJpbnRlZCkgcmV0dXJuIGBjZiBcXFxcKiR7c2hvcnRDb2RlfVxcXFwqYFxuICAgIGlmICh0aGlzLmxlY3R1cmVNYXBwZXIuaGFzKGtleSkpIHJldHVybiB0aGlzLmxlY3R1cmVNYXBwZXIuZ2V0Q29kZXMoa2V5KVxuICAgIGVsc2UgcmV0dXJuIGtleVxuICB9XG5cbiAgcmVuYW1lQ01QKGtleTogc3RyaW5nLCBuYW1lOiBzdHJpbmcpIHtcbiAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoXCJDTVBcIikpIHtcbiAgICAgIGlmIChrZXkuZW5kc1dpdGgoXCItU05cIikpIHJldHVybiBgJHtuYW1lfSAoU8OpbmF0KWBcbiAgICAgIGVsc2UgaWYgKGtleS5lbmRzV2l0aChcIi1BTlwiKSkgcmV0dXJuIGAke25hbWV9IChBc3NlbWJsw6llIE5hdGlvbmFsZSlgXG4gICAgICBlbHNlIHJldHVybiBuYW1lXG4gICAgfSBlbHNlIHJldHVybiBuYW1lXG4gIH1cblxuICBwcmludExldmVsKGFjdGVzOiBhbnksIHNlY3Rpb25zOiBzdHJpbmcsIGMycDogYW55LCBwYXJlbnQ6IGFueSkge1xuICAgIGNvbnN0IGtleXM6IFNldDxzdHJpbmc+ID0gdGhpcy5vcmRlcmVkQ29kZXMoT2JqZWN0LmtleXMoYWN0ZXMpLCBjMnAsIHBhcmVudClcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGFjdGVzW2tleV1cbiAgICAgIGxldCBuYW1lID0gQXJyYXkuZnJvbSh2YWx1ZS5uYW1lKS5qb2luKFwiLCBcIilcbiAgICAgIG5hbWUgPSB0aGlzLnJlbmFtZUNNUChrZXksIG5hbWUpXG4gICAgICBjb25zdCBjb2RlcyA9IHRoaXMuZ2V0Q29kZXMoa2V5LCB2YWx1ZS5zaG9ydENvZGUpXG4gICAgICB0aGlzLmFkZEFuY2hvcnMoa2V5KVxuICAgICAgdGhpcy5wcmludEFuY2hvcnMoa2V5KVxuICAgICAgY29uc29sZS5sb2coXCJcIilcbiAgICAgIHRoaXMucHJpbnRFbnRyeShzZWN0aW9ucywgYCR7bmFtZX0gPCR7dmFsdWUuc2hvcnRDb2RlfVRPQ18+YCwgY29kZXMpXG4gICAgICBjb25zb2xlLmxvZyhcIlwiKVxuICAgICAgaWYgKE9iamVjdC5rZXlzKHZhbHVlLmFjdGVzKS5sZW5ndGggPiAwKVxuICAgICAgICB0aGlzLnByaW50TGV2ZWwodmFsdWUuYWN0ZXMsIHNlY3Rpb25zLnN1YnN0cmluZygxKSwgYzJwW2tleV0sIGtleSlcbiAgICB9XG4gIH1cblxuICBwcmludENvZGVzKCkge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRoaXMuY29kZXMpKVxuICAgICAgY29uc29sZS5sb2coYC4uIF8ke2tleX1UT0M6IGh0dHA6Ly9gKVxuICB9XG5cbiAgcHJpbnRBbmNob3JzSW5kZXgoKSB7XG4gICAgZm9yIChjb25zdCBjb2RlIG9mIEFycmF5LmZyb20odGhpcy5hbmNob3JzKSlcbiAgICAgIGNvbnNvbGUubG9nKGAqIDpyZWY6XFxgJHtjb2RlfSA8JHtjb2RlfT5cXGBgKVxuICB9XG5cbiAgZ2V0QWdncmVnYXRlZChwcm9jZWR1cmU6IHN0cmluZykge1xuICAgIGlmIChwcm9jZWR1cmUgPT0gXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiKSB7XG4gICAgICBjb25zdCByZW1hcHBlZCA9IE9iamVjdC5rZXlzKHRoaXMucmVtYXBwZWRQcm9jZWR1cmVzKS5qb2luKFwiLCBcIilcbiAgICAgIHJldHVybiBgIChhZ3LDqWdhdGlvbiBkZSAke3JlbWFwcGVkfSlgXG4gICAgfSBlbHNlIHJldHVybiBcIlwiXG4gIH1cblxuICBwcmludCgpOiB2b2lkIHtcbiAgICB0aGlzLmFuY2hvcnNQcmludGVkID0ge31cbiAgICBmb3IgKGNvbnN0IFtrZXksIGFjdGVzXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLnByb2NlZHVyZXMpIGFzIFtcbiAgICAgIHN0cmluZyxcbiAgICAgIGFueSxcbiAgICBdW10pIHtcbiAgICAgIGNvbnN0IGNvZGUgPSBrZXkucmVwbGFjZSgvICsvZywgXCJfXCIpXG4gICAgICB0aGlzLmNvZGVzW2NvZGVdID0gbnVsbFxuICAgICAgY29uc3QgYWdncmVnYXRlZCA9IHRoaXMuZ2V0QWdncmVnYXRlZChrZXkpXG4gICAgICBjb25zdCB0aXRsZSA9IGBcXGAke2tleX0gPCR7Y29kZX1UT0NfPlxcYF9fJHthZ2dyZWdhdGVkfWBcbiAgICAgIGNvbnNvbGUubG9nKHRpdGxlKVxuICAgICAgY29uc3QgdW5kZXJsaW5lID0gbmV3IEFycmF5KHRpdGxlLmxlbmd0aCArIDEpLmpvaW4oXCI9XCIpXG4gICAgICBjb25zb2xlLmxvZyh1bmRlcmxpbmUpXG4gICAgICB0aGlzLnByaW50TGV2ZWwoYWN0ZXMsIFwiLX4uJ1wiLCB0aGlzLmNvZGUycGF0dGVybltrZXldLCBudWxsKVxuICAgIH1cbiAgICB0aGlzLnByaW50Q29kZXMoKVxuICAgIHRoaXMucHJpbnRBbmNob3JzSW5kZXgoKVxuICB9XG59XG5cbmZ1bmN0aW9uIG1haW4oYXJndjogYW55KTogbnVtYmVyIHtcbiAgY29uc3Qgb3B0aW9ucyA9IHBhcnNlQXJncyhhcmd2KVxuICBpZiAob3B0aW9ucyA9PT0gbnVsbCkgcmV0dXJuIDFcbiAgbGV0IGRvYyA9IG5ldyBBY3Rlc0RvY3VtZW50YXRpb24oXG4gICAgIW9wdGlvbnNbXCJuby1zYW5pdHktY2hlY2tzXCJdLFxuICAgIG9wdGlvbnMudmVyYm9zZSxcbiAgKVxuICBkb2MuY29sbGVjdEZpbGVzKG9wdGlvbnMuZGF0YSlcbiAgZG9jLnByb2Nlc3NGaWxlcyhvcHRpb25zLmRhdGEpXG4gIGRvYy5wcmludCgpXG4gIHJldHVybiAwXG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKHByb2Nlc3MuYXJndlsxXS5lbmRzV2l0aChcImRvY3VtZW50X2Rvc3NpZXJzX2xlZ2lzbGF0aWZzLnRzXCIpKVxuICBwcm9jZXNzLmV4aXQobWFpbihwcm9jZXNzLmFyZ3YpKVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLGdCQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsYUFBQSxHQUFBSCxPQUFBO0FBQWdELFNBQUFELHVCQUFBSyxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsZ0JBQUFBLEdBQUE7QUFBQSxTQUFBRSxlQUFBQyxHQUFBLEVBQUFDLENBQUEsV0FBQUMsZUFBQSxDQUFBRixHQUFBLEtBQUFHLHFCQUFBLENBQUFILEdBQUEsRUFBQUMsQ0FBQSxLQUFBRywyQkFBQSxDQUFBSixHQUFBLEVBQUFDLENBQUEsS0FBQUksZ0JBQUE7QUFBQSxTQUFBQSxpQkFBQSxjQUFBQyxTQUFBO0FBQUEsU0FBQUgsc0JBQUFILEdBQUEsRUFBQUMsQ0FBQSxRQUFBTSxFQUFBLFdBQUFQLEdBQUEsZ0NBQUFRLE1BQUEsSUFBQVIsR0FBQSxDQUFBUSxNQUFBLENBQUFDLFFBQUEsS0FBQVQsR0FBQSw0QkFBQU8sRUFBQSxRQUFBRyxFQUFBLEVBQUFDLEVBQUEsRUFBQUMsRUFBQSxFQUFBQyxFQUFBLEVBQUFDLElBQUEsT0FBQUMsRUFBQSxPQUFBQyxFQUFBLGlCQUFBSixFQUFBLElBQUFMLEVBQUEsR0FBQUEsRUFBQSxDQUFBVSxJQUFBLENBQUFq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